From 38c7ec926e0d22434ee9e80ea6ca3cf5df9877e1 Mon Sep 17 00:00:00 2001
From: Omar Eid
Date: Wed, 12 Aug 2026 11:31:56 -0500
Subject: [PATCH 1/2] Eighteen rules where there were seven, and two ways to
ask where a box belongs
The tajweed shards carried seven families because that is what the first
reader of the source collapsed them to. The source names eighteen rules, and
a reader who wants to colour madd differently from madd cannot say so through
a vocabulary that has already thrown the distinction away. So the shards are
rebuilt at rule granularity, core reads the wider vocabulary, and gate:tajweed
holds the two in step.
Beside that, the marks. probe-mark-ink measures whether the rectangle we draw
for a diacritic sits on the ink the print drew for it, and finds a per-page
displacement worth correcting. That correction is a number nobody has looked
at, and this commit adds the two instruments that let somebody look:
- a forced choice. Two rectangles, one panel each, nothing on screen saying
which is ours, and no key written to disk until the scorer rebuilds it
from the seed. It carries its own controls: obviously wrong rectangles to
catch a session worked while distracted, identical pairs to catch a person
who always picks something, and same-size displacements in other
directions to measure whether an eye can resolve a shift this small at
all. What it returns is a preference.
- a placing session. One rectangle, started a fixed distance out in a
direction that changes every trial, and the reader puts it where it
belongs. Subtracting what we proposed from where it landed leaves a
magnitude, reported against the reader's own precision, measured in the
same sitting from the marks shown twice. A residual smaller than the hand
that produced it is not a finding, and the scorer says so.
They are two sessions and not one page with a drag handle, for a reason worth
writing down: adjusting a rectangle inside a two-panel trial and then scoring
the landing against the two starting positions IS the answer key, and
adjusting after answering teaches the direction of the correction, which
points the same way on nearly every page.
Also here: make session, which opens a manual check as a sitting and writes a
transcript while the walkthrough happens rather than after it, and the
decisions register with its gate.
Co-Authored-By: Claude Opus 5
Claude-Session: https://claude.ai/code/session_01EuhvbUKjGesE3uMhjCzBGt
---
.githooks/pre-commit | 17 +
.github/workflows/ci.yml | 17 +
.gitignore | 8 +
Makefile | 45 +
.../assets/skins/hafs-kfqc/tajweed/1.json | 14 +-
.../assets/skins/hafs-kfqc/tajweed/10.json | 218 +--
.../assets/skins/hafs-kfqc/tajweed/100.json | 22 +-
.../assets/skins/hafs-kfqc/tajweed/101.json | 18 +-
.../assets/skins/hafs-kfqc/tajweed/102.json | 16 +-
.../assets/skins/hafs-kfqc/tajweed/103.json | 6 +-
.../assets/skins/hafs-kfqc/tajweed/104.json | 18 +-
.../assets/skins/hafs-kfqc/tajweed/105.json | 10 +-
.../assets/skins/hafs-kfqc/tajweed/106.json | 8 +-
.../assets/skins/hafs-kfqc/tajweed/107.json | 14 +-
.../assets/skins/hafs-kfqc/tajweed/108.json | 6 +-
.../assets/skins/hafs-kfqc/tajweed/109.json | 12 +-
.../assets/skins/hafs-kfqc/tajweed/11.json | 246 ++--
.../assets/skins/hafs-kfqc/tajweed/110.json | 6 +-
.../assets/skins/hafs-kfqc/tajweed/111.json | 10 +-
.../assets/skins/hafs-kfqc/tajweed/112.json | 6 +-
.../assets/skins/hafs-kfqc/tajweed/113.json | 10 +-
.../assets/skins/hafs-kfqc/tajweed/114.json | 12 +-
.../assets/skins/hafs-kfqc/tajweed/12.json | 222 +--
.../assets/skins/hafs-kfqc/tajweed/13.json | 86 +-
.../assets/skins/hafs-kfqc/tajweed/14.json | 104 +-
.../assets/skins/hafs-kfqc/tajweed/15.json | 198 +--
.../assets/skins/hafs-kfqc/tajweed/16.json | 256 ++--
.../assets/skins/hafs-kfqc/tajweed/17.json | 218 +--
.../assets/skins/hafs-kfqc/tajweed/18.json | 212 +--
.../assets/skins/hafs-kfqc/tajweed/19.json | 190 +--
.../assets/skins/hafs-kfqc/tajweed/2.json | 572 ++++----
.../assets/skins/hafs-kfqc/tajweed/20.json | 252 ++--
.../assets/skins/hafs-kfqc/tajweed/21.json | 224 +--
.../assets/skins/hafs-kfqc/tajweed/22.json | 156 +-
.../assets/skins/hafs-kfqc/tajweed/23.json | 236 +--
.../assets/skins/hafs-kfqc/tajweed/24.json | 128 +-
.../assets/skins/hafs-kfqc/tajweed/25.json | 154 +-
.../assets/skins/hafs-kfqc/tajweed/26.json | 454 +++---
.../assets/skins/hafs-kfqc/tajweed/27.json | 186 +--
.../assets/skins/hafs-kfqc/tajweed/28.json | 176 +--
.../assets/skins/hafs-kfqc/tajweed/29.json | 138 +-
.../assets/skins/hafs-kfqc/tajweed/3.json | 400 ++---
.../assets/skins/hafs-kfqc/tajweed/30.json | 120 +-
.../assets/skins/hafs-kfqc/tajweed/31.json | 68 +-
.../assets/skins/hafs-kfqc/tajweed/32.json | 60 +-
.../assets/skins/hafs-kfqc/tajweed/33.json | 146 +-
.../assets/skins/hafs-kfqc/tajweed/34.json | 108 +-
.../assets/skins/hafs-kfqc/tajweed/35.json | 90 +-
.../assets/skins/hafs-kfqc/tajweed/36.json | 166 +--
.../assets/skins/hafs-kfqc/tajweed/37.json | 364 ++---
.../assets/skins/hafs-kfqc/tajweed/38.json | 176 +--
.../assets/skins/hafs-kfqc/tajweed/39.json | 150 +-
.../assets/skins/hafs-kfqc/tajweed/4.json | 352 ++---
.../assets/skins/hafs-kfqc/tajweed/40.json | 170 +--
.../assets/skins/hafs-kfqc/tajweed/41.json | 108 +-
.../assets/skins/hafs-kfqc/tajweed/42.json | 106 +-
.../assets/skins/hafs-kfqc/tajweed/43.json | 178 +--
.../assets/skins/hafs-kfqc/tajweed/44.json | 118 +-
.../assets/skins/hafs-kfqc/tajweed/45.json | 74 +-
.../assets/skins/hafs-kfqc/tajweed/46.json | 70 +-
.../assets/skins/hafs-kfqc/tajweed/47.json | 74 +-
.../assets/skins/hafs-kfqc/tajweed/48.json | 58 +-
.../assets/skins/hafs-kfqc/tajweed/49.json | 36 +-
.../assets/skins/hafs-kfqc/tajweed/5.json | 240 +--
.../assets/skins/hafs-kfqc/tajweed/50.json | 90 +-
.../assets/skins/hafs-kfqc/tajweed/51.json | 116 +-
.../assets/skins/hafs-kfqc/tajweed/52.json | 96 +-
.../assets/skins/hafs-kfqc/tajweed/53.json | 114 +-
.../assets/skins/hafs-kfqc/tajweed/54.json | 100 +-
.../assets/skins/hafs-kfqc/tajweed/55.json | 156 +-
.../assets/skins/hafs-kfqc/tajweed/56.json | 188 +--
.../assets/skins/hafs-kfqc/tajweed/57.json | 58 +-
.../assets/skins/hafs-kfqc/tajweed/58.json | 44 +-
.../assets/skins/hafs-kfqc/tajweed/59.json | 48 +-
.../assets/skins/hafs-kfqc/tajweed/6.json | 330 ++---
.../assets/skins/hafs-kfqc/tajweed/60.json | 26 +-
.../assets/skins/hafs-kfqc/tajweed/61.json | 28 +-
.../assets/skins/hafs-kfqc/tajweed/62.json | 22 +-
.../assets/skins/hafs-kfqc/tajweed/63.json | 22 +-
.../assets/skins/hafs-kfqc/tajweed/64.json | 36 +-
.../assets/skins/hafs-kfqc/tajweed/65.json | 24 +-
.../assets/skins/hafs-kfqc/tajweed/66.json | 24 +-
.../assets/skins/hafs-kfqc/tajweed/67.json | 60 +-
.../assets/skins/hafs-kfqc/tajweed/68.json | 104 +-
.../assets/skins/hafs-kfqc/tajweed/69.json | 98 +-
.../assets/skins/hafs-kfqc/tajweed/7.json | 412 +++---
.../assets/skins/hafs-kfqc/tajweed/70.json | 82 +-
.../assets/skins/hafs-kfqc/tajweed/71.json | 48 +-
.../assets/skins/hafs-kfqc/tajweed/72.json | 56 +-
.../assets/skins/hafs-kfqc/tajweed/73.json | 40 +-
.../assets/skins/hafs-kfqc/tajweed/74.json | 88 +-
.../assets/skins/hafs-kfqc/tajweed/75.json | 66 +-
.../assets/skins/hafs-kfqc/tajweed/76.json | 62 +-
.../assets/skins/hafs-kfqc/tajweed/77.json | 96 +-
.../assets/skins/hafs-kfqc/tajweed/78.json | 70 +-
.../assets/skins/hafs-kfqc/tajweed/79.json | 84 +-
.../assets/skins/hafs-kfqc/tajweed/8.json | 150 +-
.../assets/skins/hafs-kfqc/tajweed/80.json | 72 +-
.../assets/skins/hafs-kfqc/tajweed/81.json | 58 +-
.../assets/skins/hafs-kfqc/tajweed/82.json | 38 +-
.../assets/skins/hafs-kfqc/tajweed/83.json | 72 +-
.../assets/skins/hafs-kfqc/tajweed/84.json | 40 +-
.../assets/skins/hafs-kfqc/tajweed/85.json | 44 +-
.../assets/skins/hafs-kfqc/tajweed/86.json | 30 +-
.../assets/skins/hafs-kfqc/tajweed/87.json | 32 +-
.../assets/skins/hafs-kfqc/tajweed/88.json | 38 +-
.../assets/skins/hafs-kfqc/tajweed/89.json | 58 +-
.../assets/skins/hafs-kfqc/tajweed/9.json | 258 ++--
.../assets/skins/hafs-kfqc/tajweed/90.json | 38 +-
.../assets/skins/hafs-kfqc/tajweed/91.json | 30 +-
.../assets/skins/hafs-kfqc/tajweed/92.json | 34 +-
.../assets/skins/hafs-kfqc/tajweed/93.json | 16 +-
.../assets/skins/hafs-kfqc/tajweed/94.json | 12 +-
.../assets/skins/hafs-kfqc/tajweed/95.json | 16 +-
.../assets/skins/hafs-kfqc/tajweed/96.json | 34 +-
.../assets/skins/hafs-kfqc/tajweed/97.json | 10 +-
.../assets/skins/hafs-kfqc/tajweed/98.json | 16 +-
.../assets/skins/hafs-kfqc/tajweed/99.json | 14 +-
.../assets/skins/hafs-kfqc/tajweed/rules.json | 77 +
apps/web/src/App.tsx | 23 +-
apps/web/src/assets.ts | 25 +-
apps/web/src/components/SkinToggle.test.tsx | 24 +-
package.json | 15 +-
packages/core/src/index.ts | 4 +
packages/core/src/skins.test.ts | 109 +-
packages/core/src/skins.ts | 176 ++-
packages/etl/data/tajweed/PROVENANCE.md | 35 +
.../etl/scripts/build-mark-adjudication.mjs | 414 ++++++
packages/etl/scripts/build-mark-nudge.mjs | 472 ++++++
packages/etl/scripts/build-tajweed.mjs | 101 +-
packages/etl/scripts/lib/adjudication.mjs | 356 +++++
.../etl/scripts/lib/adjudication.test.mjs | 195 +++
packages/etl/scripts/lib/diacritics.mjs | 44 +
packages/etl/scripts/lib/ink.mjs | 567 +++++++
packages/etl/scripts/lib/mark-ink.mjs | 303 ++++
packages/etl/scripts/lib/mark-shape.mjs | 398 +++++
packages/etl/scripts/lib/marks.mjs | 82 ++
packages/etl/scripts/probe-mark-ink.mjs | 1306 +++++++++++++++++
packages/etl/scripts/probe-mark-labels.mjs | 943 ++++++++++++
.../etl/scripts/score-mark-adjudication.mjs | 234 +++
packages/etl/scripts/score-mark-nudge.mjs | 262 ++++
scripts/build-decisions-doc.mjs | 148 ++
scripts/build-mark-options.mjs | 1063 ++++++++++++++
scripts/build-palette-options.mjs | 1000 +++++++++++++
scripts/build-validation-guide.mjs | 310 +---
scripts/decisions.mjs | 163 ++
scripts/gate-assets.mjs | 8 +-
scripts/gate-decisions.mjs | 269 ++++
scripts/gate-tajweed.mjs | 221 +++
scripts/lib/session-log.mjs | 181 +++
scripts/lib/validation-render.mjs | 343 +++++
scripts/session.mjs | 622 ++++++++
152 files changed, 16353 insertions(+), 6471 deletions(-)
create mode 100644 apps/web/public/assets/skins/hafs-kfqc/tajweed/rules.json
create mode 100644 packages/etl/scripts/build-mark-adjudication.mjs
create mode 100644 packages/etl/scripts/build-mark-nudge.mjs
create mode 100644 packages/etl/scripts/lib/adjudication.mjs
create mode 100644 packages/etl/scripts/lib/adjudication.test.mjs
create mode 100644 packages/etl/scripts/lib/ink.mjs
create mode 100644 packages/etl/scripts/lib/mark-ink.mjs
create mode 100644 packages/etl/scripts/lib/mark-shape.mjs
create mode 100644 packages/etl/scripts/lib/marks.mjs
create mode 100644 packages/etl/scripts/probe-mark-ink.mjs
create mode 100644 packages/etl/scripts/probe-mark-labels.mjs
create mode 100644 packages/etl/scripts/score-mark-adjudication.mjs
create mode 100644 packages/etl/scripts/score-mark-nudge.mjs
create mode 100644 scripts/build-decisions-doc.mjs
create mode 100644 scripts/build-mark-options.mjs
create mode 100644 scripts/build-palette-options.mjs
create mode 100644 scripts/decisions.mjs
create mode 100644 scripts/gate-decisions.mjs
create mode 100644 scripts/gate-tajweed.mjs
create mode 100644 scripts/lib/session-log.mjs
create mode 100644 scripts/lib/validation-render.mjs
create mode 100644 scripts/session.mjs
diff --git a/.githooks/pre-commit b/.githooks/pre-commit
index eb2fea0..0ff0b7f 100755
--- a/.githooks/pre-commit
+++ b/.githooks/pre-commit
@@ -58,6 +58,23 @@ if [ -n "$staged" ] && command -v node >/dev/null 2>&1; then
echo " to bypass this one commit: git commit --no-verify"
exit 1
fi
+
+ # Same rule, one register over, with one addition the other two do not need:
+ # a decision carries links OUT of the repo as well as into it. An open
+ # decision must name both the published page and the copy checked in beside
+ # it, and the record must reach both — otherwise the argument is about a
+ # picture the reader cannot see. That pairing is easiest to break on exactly
+ # this commit: you added the artifact link and have not committed the page
+ # yet, or renamed the page and left the link. Scoped and silent the same way.
+ # shellcheck disable=SC2086
+ if ! node scripts/gate-decisions.mjs --files $staged; then
+ echo ""
+ echo "pre-commit: docs/decisions.json has a link that does not resolve (above)."
+ echo " an open decision needs BOTH an artifact link and the page checked in here,"
+ echo " and its record has to link to each — 'make decisions ID=' shows the row."
+ echo " to bypass this one commit: git commit --no-verify"
+ exit 1
+ fi
fi
# The licence the reader is shown and the licence on record, on the one commit
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 819c039..62439ff 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -215,6 +215,16 @@ jobs:
- name: Gate — every open item is indexed, and the index still resolves
run: pnpm gate:issues
+ # docs/decisions.json indexes every decision record, and holds the two
+ # links that make an open one answerable by somebody who has never opened
+ # this repo: the published page and the copy checked in beside it. This
+ # checks both resolve, that neither exists without the other, that the
+ # record links to them, that the question is written in plain words rather
+ # than file names — and, the direction nothing else covers, that no record
+ # sits in docs/decisions/ with no row in the index.
+ - name: Gate — every decision is indexed, and every open one is legible
+ run: pnpm gate:decisions
+
# AYAH_COUNTS, JUZ_STARTS and HIZB_STARTS are hand-typed numbers whose only
# symptom when wrong is an ayah quietly filed under the wrong division —
# in range, ascending, and false. This re-derives all three from the
@@ -222,6 +232,13 @@ jobs:
- name: Gate — the structural tables match their source
run: pnpm gate:quran-meta
+ # The tajweed shards are keyed by the source's eighteen rule ids, and the
+ # file that says which colour each one paints ships beside them. A key with
+ # no entry paints nothing — no error, no blank page, just a rule that
+ # quietly stops appearing. This checks the two files agree, both ways.
+ - name: Gate — the tajweed shards and their vocabulary agree
+ run: pnpm gate:tajweed
+
# The revision record is a log of when a person was reading Qur'an. This
# checks the closed allow-list of modules allowed to import it is still
# closed, and that its own modules still hold no way off the device.
diff --git a/.gitignore b/.gitignore
index ffd6bb1..d344ebe 100644
--- a/.gitignore
+++ b/.gitignore
@@ -22,6 +22,14 @@ packages/etl/data/pages/.cache/
# ignored wholesale rather than per-file.
packages/etl/out/
+# The publishable copy of a decision's options page. `--artifact` re-renders the
+# committed page with every asset inlined, because the host it is published to
+# blocks external requests — so it is the same page at roughly twice the bytes,
+# and committing both would put two copies of one picture under version control.
+# The committed one is what docs/decisions.json points at; this is a build step
+# on the way out the door.
+docs/design/*.artifact.html
+
# Parallel-agent worktrees: checkouts of *other* branches living inside this one.
# Committing them would put another branch's tree into this branch's history, and
# linting them makes this branch fail on code it does not contain (see
diff --git a/Makefile b/Makefile
index e6fb144..17b49e2 100644
--- a/Makefile
+++ b/Makefile
@@ -229,7 +229,9 @@ ci: core ## Full local mirror of the CI build-test-gate job, IN CI ORDER
$(PNPM) gate:map
$(PNPM) gate:use-cases
$(PNPM) gate:issues
+ $(PNPM) gate:decisions
$(PNPM) gate:quran-meta
+ $(PNPM) gate:tajweed
$(PNPM) gate:revision-privacy
$(PNPM) gate:i18n
$(PNPM) gate:params
@@ -392,6 +394,23 @@ issues: ## What is still open, worst first: make issues · make issues ID=
+ @# docs/decisions.json is the source, and like the issue catalog it is an
+ @# index: the only prose it stores is the question, in plain words, because
+ @# the records' own titles are sentences and nobody scans a directory of
+ @# sentences to find their question. Everything else — the title, the answer,
+ @# the argument — is read out of the record that owns it as you run this.
+ @if [ -n "$(ID)" ]; then \
+ node scripts/gate-decisions.mjs --id "$(ID)"; \
+ else \
+ node scripts/gate-decisions.mjs --list; \
+ fi
+
+.PHONY: decisions-doc
+decisions-doc: ## Re-render docs/decisions/README.md from docs/decisions.json
+ @node scripts/build-decisions-doc.mjs
+
.PHONY: validate
validate: ## Outstanding manual checks — or one check's full runbook: make validate CHECK=
@# The edge coverage table rides along with the outstanding-checks list
@@ -428,6 +447,32 @@ guide: ## Render the runbooks to docs/validation/guide.html and serve them to yo
@# CHECK= — docs/validation/ledger.json — rendered for the device.
@LAN_IP="$(LAN_IP)" node scripts/build-validation-guide.mjs --serve
+.PHONY: session
+session: ## Work one check with the answers banked as you go: make session CHECK=
+ @# `make guide` is the reading surface — every check, tickable, nothing
+ @# written down. This is the writing one: a single check, and every box you
+ @# tick and every note you type lands in a transcript under
+ @# docs/validation/sessions/ the moment you make it.
+ @#
+ @# The gap it closes is an ordering problem, not a documentation one. The
+ @# ledger's `result` has always been typed on the laptop after the walkthrough
+ @# is over, so whatever you noticed at step four survives only if you were
+ @# still holding it at step ten. Here the observation is on disk while the
+ @# step is still in front of you, and `make record` at the end summarises a
+ @# file instead of a memory.
+ @#
+ @# Resumes an unbanked transcript by default; NEW=1 starts a fresh one.
+ @test -n "$(CHECK)" || { echo "usage: make session CHECK= (ids: make validate)"; exit 2; }
+ @# `$(origin PORT)`, not `$(PORT)`. This file already defines PORT := 4173 for
+ @# the preview server, so a plain `$(if $(PORT),…)` is always true and pins
+ @# every session to the app's own port. That is not just a clash: macOS `open`
+ @# reuses an existing tab pointed at the same URL without reloading it, so a
+ @# stale preview tab from an earlier `make phone-perf` comes to the front
+ @# looking like the session, and the session is what gets blamed. Only a PORT
+ @# given on the command line counts as one the user asked for.
+ @LAN_IP="$(LAN_IP)" node scripts/session.mjs --check "$(CHECK)" \
+ $(if $(NEW),--new,) $(if $(filter command line,$(origin PORT)),--port $(PORT),)
+
.PHONY: record
record: ## Bank a manual result: make record CHECK= RESULT='the verdict, in words'
@test -n "$(CHECK)" || { echo "usage: make record CHECK= RESULT=''"; exit 2; }
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/1.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/1.json
index 87a038f..500ba23 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/1.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/1.json
@@ -1,9 +1,9 @@
{
-"1": {"idgham":[16,17,29,30],"madd":[24,25,35,36],"wasl":[7,8,15,16,28,29]},
-"2": {"madd":[29,30,34,35],"wasl":[24,25]},
-"3": {"idgham":[1,2,14,15],"madd":[9,10,20,21],"wasl":[13,14]},
-"4": {"idgham":[16,17],"madd":[2,3,20,21],"wasl":[15,16]},
-"5": {"madd":[37,38]},
-"6": {"idgham":[10,11],"madd":[16,17,31,32],"wasl":[9,10,20,21]},
-"7": {"idgham":[78,79],"madd":[4,5,87,88],"madd-lazim":[82,84],"wasl":[8,9,47,48,77,78]}
+"1": {"lam_shamsiyyah":[16,17,29,30],"madd_2":[24,25],"madd_246":[35,36],"hamzat_wasl":[7,8,15,16,28,29]},
+"2": {"madd_2":[29,30],"madd_246":[34,35],"hamzat_wasl":[24,25]},
+"3": {"lam_shamsiyyah":[1,2,14,15],"madd_2":[9,10],"madd_246":[20,21],"hamzat_wasl":[13,14]},
+"4": {"lam_shamsiyyah":[16,17],"madd_2":[2,3],"madd_246":[20,21],"hamzat_wasl":[15,16]},
+"5": {"madd_246":[37,38]},
+"6": {"lam_shamsiyyah":[10,11],"madd_2":[16,17],"madd_246":[31,32],"hamzat_wasl":[9,10,20,21]},
+"7": {"lam_shamsiyyah":[78,79],"madd_2":[4,5],"madd_246":[87,88],"madd_6":[82,84],"hamzat_wasl":[8,9,47,48,77,78]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/10.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/10.json
index 75e0944..d754332 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/10.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/10.json
@@ -1,111 +1,111 @@
{
-"1": {"madd":[56,57,67,68,78,79],"madd-lazim":[40,42],"wasl":[60,61,71,72]},
-"2": {"ghunnah":[11,14,75,78,83,86,124,127,151,154,187,190],"idgham":[10,11,56,61,82,83,206,211],"madd":[41,43,117,119,176,177,193,194,202,203,213,214],"qalqalah":[144,146],"silent":[119,121],"wasl":[81,82,100,101,171,172]},
-"3": {"ghunnah":[2,5,84,88,88,91,144,148,164,167],"idgham":[40,41],"madd":[46,47,49,50,181,182,185,186,241,242],"wasl":[16,17,24,25,39,40,55,56,92,93,108,109,128,129,193,194,213,214]},
-"4": {"ghunnah":[55,58,85,88,237,241],"idgham":[28,33,145,146,205,210,219,223],"madd":[60,61,98,99,149,150,154,155,263,264],"qalqalah":[64,66,104,106],"silent":[70,72,129,131,141,143,189,191,252,254],"wasl":[38,39,73,74,111,112,144,145,160,161,172,173]},
-"5": {"idgham":[21,22,37,41,55,60,103,104,200,204],"madd":[34,36,69,70,147,148,189,190,210,211],"silent":[92,94],"wasl":[5,6,20,21,41,42,102,103,115,116,137,138,162,163,181,182]},
-"6": {"ghunnah":[2,5,34,37],"idgham":[33,34,69,70,103,108,113,117],"madd":[17,18,75,76,78,79,101,102,122,123],"wasl":[10,11,21,22,32,33,56,57,68,69,84,85]},
-"7": {"ghunnah":[2,5,86,89],"idgham":[67,68],"madd":[34,36,62,63,126,127,135,136,140,141],"qalqalah":[80,82],"silent":[49,51,61,62,90,92],"wasl":[6,7,54,55,66,67,79,80,101,102]},
-"8": {"ghunnah":[28,31],"idgham":[27,28],"madd":[6,8,20,21,58,59],"silent":[2,4,47,49],"wasl":[26,27]},
-"9": {"ghunnah":[2,5,72,76,99,103,131,134,140,143],"idgham":[40,41,139,140],"madd":[44,45,49,50,81,82,121,122,134,135,145,146],"qalqalah":[91,93],"silent":[24,26,36,38],"wasl":[6,7,39,40,112,113,138,139]},
-"10": {"ghunnah":[39,42],"idgham":[33,34,72,76],"madd":[7,8,26,27,70,71,91,92,131,132,136,137],"qalqalah":[22,24],"wasl":[32,33,102,103,126,127]},
-"11": {"ghunnah":[28,31,58,62],"idgham":[27,28,36,37],"madd":[140,142,158,159,174,175],"wasl":[17,18,35,36,44,45,62,63,112,113]},
-"12": {"ghunnah":[19,22,49,51,83,88,90,93],"idgham":[27,28,131,136,161,166],"madd":[22,23,54,56,78,80,119,120,147,149,171,172,177,178,228,229],"qalqalah":[141,143],"silent":[217,219],"wasl":[14,15,26,27]},
-"13": {"ghunnah":[34,38,49,52,87,91],"madd":[68,70,101,102,138,139,173,174],"qalqalah":[6,8,38,40,146,148,167,169],"silent":[61,63,117,119,131,133],"wasl":[21,22,91,92,152,153,162,163]},
-"14": {"ghunnah":[2,5,48,51,65,68],"madd":[14,15,24,26,86,87],"wasl":[35,36]},
-"15": {"ghunnah":[49,53,183,187,250,253],"madd":[47,48,85,87,120,121,123,125,160,162,179,180,191,193,202,204,236,239,253,255,304,305],"wasl":[57,58,93,94]},
-"16": {"ghunnah":[69,73,112,116],"idgham":[106,112],"madd":[12,14,39,40,56,58,66,67,75,76,122,124,141,142],"qalqalah":[61,63,81,83,116,118],"wasl":[17,18]},
-"17": {"ghunnah":[18,21,87,90],"madd":[77,78,82,84,92,93,118,119],"qalqalah":[112,114],"wasl":[24,25,40,41,107,108]},
-"18": {"ghunnah":[16,20,60,63,112,115,237,240],"idgham":[177,178],"madd":[85,87,91,93,102,104,183,184,186,187,216,217,221,222,229,230,250,251],"qalqalah":[212,214],"wasl":[24,25,116,117,145,146,176,177,200,201]},
-"19": {"ghunnah":[14,17,31,34,45,49,79,83],"idgham":[13,14,35,39,92,97],"madd":[26,28,39,40,146,147],"silent":[59,61],"wasl":[12,13,49,50]},
-"20": {"ghunnah":[24,27,71,74,99,102,113,116,137,140],"idgham":[45,50,50,55,124,129],"madd":[19,21,60,61,106,108,144,145],"silent":[108,110],"wasl":[78,79,98,99,132,133]},
-"21": {"ghunnah":[21,24,41,44,90,94,141,144],"idgham":[20,21,35,40,82,87],"madd":[6,8,55,57,94,96,179,180],"qalqalah":[13,15],"wasl":[19,20,114,115]},
-"22": {"ghunnah":[69,72,104,108,112,116,193,197,213,216,223,226,298,301,332,335],"idgham":[122,126,166,170,207,211,281,282,342,343],"madd":[57,60,144,146,172,174,216,218,316,317,321,322,346,347,351,352],"silent":[133,135,218,220,252,254],"wasl":[5,6,31,32,42,43,79,80,181,182,255,256,280,281,341,342]},
-"23": {"ghunnah":[4,7,12,15,90,93,99,102,127,130,170,173,210,214,220,223],"idgham":[89,90,134,139,158,159],"madd":[7,9,16,17,77,79,121,124,141,142,153,154,234,235],"qalqalah":[35,37],"silent":[152,153],"wasl":[47,48,66,67,88,89,145,146,157,158]},
-"24": {"ghunnah":[2,5,50,53,116,119,132,135,219,222,236,239,306,311,330,335],"idgham":[29,30,67,68,131,132,337,342,403,407],"madd":[24,25,43,45,57,58,73,75,94,95,150,151,159,162,167,169,231,233,246,247,263,265,271,272,274,276,319,320,368,369,392,393,416,417],"silent":[23,24],"wasl":[16,17,28,29,66,67,80,81,104,105,130,131,141,142,179,180,203,204,354,355,384,385]},
-"25": {"idgham":[35,36,57,61,81,86],"madd":[16,18,41,42,63,65,79,80,92,93],"qalqalah":[12,14],"silent":[18,20],"wasl":[2,3,34,35]},
-"26": {"ghunnah":[124,127],"idgham":[46,50,80,84],"madd":[102,104,115,116,144,145,149,150],"silent":[21,23,98,100],"wasl":[24,25,119,120]},
-"27": {"ghunnah":[54,58,128,132,134,137,223,226],"idgham":[23,24,90,95,101,106,170,176,222,223],"madd":[41,43,139,141,204,206,217,218,244,245,249,250],"silent":[19,21,200,202],"wasl":[2,3,22,23,109,110,179,180,221,222]},
-"28": {"ghunnah":[28,33,33,36,82,85,158,161],"idgham":[149,154],"madd":[96,98,143,145,182,183],"silent":[65,67]},
-"29": {"ghunnah":[25,30,54,58,58,61],"madd":[86,87,91,92],"wasl":[11,12]},
-"30": {"idgham":[31,36,112,117],"madd":[36,38,57,59,83,84,136,137],"qalqalah":[12,14],"silent":[17,19,59,61,125,127],"wasl":[68,69,89,90]},
-"31": {"ghunnah":[53,56],"idgham":[7,11,19,24,28,29,56,60,68,69,96,100,172,176],"madd":[34,36,88,89,239,240],"qalqalah":[84,86],"wasl":[27,28,41,42,67,68,79,80,107,108,121,122,143,144,159,160,184,185,209,210]},
-"32": {"ghunnah":[86,89],"idgham":[72,73],"madd":[4,5,78,79,100,101],"wasl":[12,13,30,31,55,56,71,72]},
-"33": {"ghunnah":[64,67],"madd":[4,5,57,59,84,85],"silent":[59,61],"wasl":[41,42]},
-"34": {"ghunnah":[12,16,56,59,107,110,126,129],"idgham":[26,31,31,35],"madd":[20,22,69,70,120,121,140,141],"qalqalah":[35,37,86,88],"silent":[41,43,92,94],"wasl":[44,45,76,77,95,96]},
-"35": {"ghunnah":[12,16,144,147],"idgham":[26,31,31,35,94,98,130,134,147,152,174,178],"madd":[20,22,39,41,102,104,161,163,169,171,213,214],"wasl":[48,49,62,63,111,112]},
-"36": {"ghunnah":[38,41,45,48,54,57,95,98,113,117],"idgham":[50,51],"madd":[130,131],"wasl":[49,50,75,76,99,100]},
-"37": {"ghunnah":[49,53,72,76],"idgham":[34,38,150,155],"madd":[14,15,69,70,127,128,164,165,169,170],"wasl":[19,20,57,58,84,85,120,121,159,160]},
-"38": {"ghunnah":[96,100,114,118,118,121],"idgham":[51,56,91,96],"madd":[24,25,62,63,126,127,131,132],"qalqalah":[67,69],"silent":[40,42,72,74],"wasl":[16,17,66,67,80,81,104,105]},
-"39": {"ghunnah":[54,57,113,117,129,132],"idgham":[159,160],"madd":[48,49,81,82,87,88,150,151,163,164,168,169],"qalqalah":[117,119],"silent":[13,15,35,37],"wasl":[101,102,128,129,158,159]},
-"40": {"idgham":[8,13,13,17,38,43,43,48],"madd":[28,29,63,64,97,98],"wasl":[86,87]},
-"41": {"ghunnah":[4,8,58,61,61,65,78,81,114,117],"idgham":[109,114],"madd":[67,69,81,83,106,108,127,128]},
-"42": {"ghunnah":[44,47,62,65],"idgham":[8,13,13,17,58,59],"madd":[94,95],"silent":[79,81],"wasl":[57,58]},
-"43": {"ghunnah":[17,20,38,41],"idgham":[8,13,13,17],"madd":[88,89],"qalqalah":[82,84],"silent":[73,75],"wasl":[50,51]},
-"44": {"ghunnah":[2,5,29,32,52,55,58,61,67,70],"idgham":[28,29,42,47,57,58],"madd":[49,50,85,86],"wasl":[6,7,27,28,56,57]},
-"45": {"ghunnah":[70,73],"idgham":[26,31,60,65,69,70],"madd":[42,44,144,146,180,181],"qalqalah":[107,109],"silent":[44,46,135,137,169,171],"wasl":[68,69,117,118,149,150]},
-"46": {"ghunnah":[4,7,15,18,63,66,96,99],"madd":[135,136],"wasl":[28,29,100,101]},
-"47": {"ghunnah":[12,15,25,29,69,73],"idgham":[16,21],"madd":[37,39,102,103],"wasl":[73,74]},
-"48": {"ghunnah":[39,43,43,46],"madd":[22,23,51,52,56,57],"wasl":[27,28]},
-"49": {"ghunnah":[86,89],"idgham":[33,38,152,156],"madd":[7,9,63,65,107,109,172,173],"qalqalah":[166,168],"wasl":[68,69]},
-"50": {"idgham":[65,71],"madd":[28,29,43,44,49,50,107,108],"qalqalah":[101,103],"wasl":[96,97]},
-"51": {"ghunnah":[4,7,30,33,33,37,64,67,67,71],"madd":[39,41,51,52,73,74,87,88],"madd-lazim":[44,46],"qalqalah":[59,61]},
-"52": {"ghunnah":[2,5,91,94],"madd":[105,106],"qalqalah":[67,69],"silent":[30,32,39,41],"wasl":[50,51]},
-"53": {"ghunnah":[9,11,55,58,79,82,82,86],"idgham":[68,72],"madd":[50,52,60,61,74,76,94,95]},
-"54": {"ghunnah":[9,12,26,30,88,91,101,104,143,147],"idgham":[87,88],"madd":[71,72,176,177],"silent":[83,85,112,114],"wasl":[45,46,57,58,86,87,115,116,147,148]},
-"55": {"ghunnah":[9,12,64,67,96,99],"idgham":[30,31,87,91],"madd":[4,6,36,37,39,40,59,61,93,94,125,126],"wasl":[29,30,45,46,75,76]},
-"56": {"madd":[11,12,42,43]},
-"57": {"ghunnah":[15,18],"idgham":[14,15,37,42,49,54,54,59,76,81,90,91,105,110,117,122],"madd":[2,4,29,31,73,75,132,133],"qalqalah":[24,26],"wasl":[13,14,89,90]},
-"58": {"ghunnah":[81,84],"idgham":[76,81],"madd":[36,37,44,45,94,95],"qalqalah":[88,90],"silent":[63,65],"wasl":[14,15]},
-"59": {"ghunnah":[25,28,56,60,95,100],"idgham":[15,20,43,48,48,53,68,73,84,89],"madd":[20,22,93,94,155,156],"madd-lazim":[105,107],"wasl":[31,32,139,140]},
-"60": {"ghunnah":[8,11,80,83,113,116,127,130],"idgham":[112,113],"madd":[72,73,124,125,156,157],"wasl":[12,13,40,41,48,49,65,66,84,85,111,112]},
-"61": {"ghunnah":[50,54,101,104,197,201,253,257],"idgham":[23,27,60,64,165,170,178,183,224,225,296,301],"madd":[230,232,239,241,257,258,267,269,294,295,303,304],"silent":[38,40],"wasl":[203,204,223,224]},
-"62": {"ghunnah":[9,12],"madd":[4,6,21,23,75,76],"wasl":[26,27]},
-"63": {"madd":[39,40],"silent":[18,20,29,31]},
-"64": {"idgham":[36,37],"madd":[31,32,87,88,101,102,129,130],"qalqalah":[71,73],"silent":[30,31],"wasl":[7,8,23,24,35,36,52,53,91,92,112,113,122,123]},
-"65": {"ghunnah":[12,15,29,32],"idgham":[67,68],"madd":[84,85],"wasl":[33,34,66,67,77,78]},
-"66": {"ghunnah":[9,12,23,27,47,51,101,105,157,160],"idgham":[30,31,130,134,153,154],"madd":[4,6,36,37,39,40,123,125,188,189],"qalqalah":[91,93],"wasl":[29,30,53,54,79,80,109,110,152,153]},
-"67": {"ghunnah":[60,63,81,84],"idgham":[59,60,106,111,116,120],"madd":[91,92,104,105,126,127],"qalqalah":[71,73],"silent":[47,49],"wasl":[5,6,27,28,58,59]},
-"68": {"ghunnah":[31,36,118,121,128,132,138,142],"idgham":[78,79,123,128],"madd":[40,41,45,46,67,68,84,85,87,88,136,137,145,146,148,150,194,195],"qalqalah":[36,38],"silent":[6,8],"wasl":[9,10,18,19,52,53,77,78,101,102,170,171]},
-"69": {"ghunnah":[7,10],"madd":[69,70],"wasl":[11,12,39,40,47,48]},
-"70": {"ghunnah":[6,10,25,28,54,57],"idgham":[13,14,82,83],"madd":[4,5,115,116],"silent":[104,106],"wasl":[12,13,70,71,81,82]},
-"71": {"ghunnah":[67,71,208,211,247,250,251,255,255,258,285,288],"idgham":[90,95],"madd":[53,54,57,58,123,124,173,175,197,199,264,266,290,291],"qalqalah":[167,169,260,262],"silent":[175,177,266,268],"wasl":[2,3,127,128,143,144,259,260]},
-"72": {"ghunnah":[4,8],"idgham":[36,41],"madd":[126,127],"qalqalah":[46,48,58,60],"wasl":[78,79,115,116]},
-"73": {"ghunnah":[137,140,171,174],"idgham":[32,37],"madd":[24,25,41,42,67,68,77,79,127,128,158,159,176,177],"qalqalah":[92,94],"silent":[116,118],"wasl":[47,48,98,99,136,137,166,167]},
-"74": {"ghunnah":[2,5,19,22,68,72,140,144],"madd":[29,30,61,63,82,83,136,137,153,154,194,195],"qalqalah":[144,146,161,163],"silent":[98,100,112,114,129,131],"wasl":[72,73,183,184]},
-"75": {"ghunnah":[2,5,19,22],"idgham":[29,34,131,137],"madd":[44,45,81,82,91,92,143,144],"qalqalah":[137,139],"silent":[77,79,112,114,123,125],"wasl":[100,101]},
-"76": {"ghunnah":[4,7,36,39,55,58],"idgham":[73,78],"madd":[11,13,48,50,61,62,80,81],"silent":[50,52],"wasl":[20,21]},
-"77": {"ghunnah":[40,43],"idgham":[88,89],"madd":[11,14,47,49,67,68,92,93,97,98],"wasl":[87,88]},
-"78": {"ghunnah":[38,41],"madd":[5,7,67,69,104,106,154,155],"qalqalah":[47,49,98,100],"silent":[7,9],"wasl":[93,94,113,114]},
-"79": {"madd":[39,40,49,50],"wasl":[19,20]},
-"80": {"ghunnah":[4,7,67,70],"idgham":[17,18,38,43,70,75],"madd":[11,13,46,49,62,64,79,80],"silent":[57,59],"wasl":[16,17]},
-"81": {"ghunnah":[4,7,45,49,64,67,93,96],"idgham":[53,54],"madd":[7,9,88,90,136,137],"qalqalah":[80,82],"silent":[18,20],"wasl":[52,53,68,69,97,98,125,126]},
-"82": {"madd":[35,36,40,41,67,68],"qalqalah":[61,63],"wasl":[10,11,18,19,56,57]},
-"83": {"ghunnah":[47,51,76,80,125,128,146,150,166,169],"idgham":[42,47,71,76,106,110],"madd":[4,6,22,25,57,58,171,172,191,192],"silent":[97,99],"wasl":[152,153,180,181]},
-"84": {"ghunnah":[28,32,32,35,43,46,46,50,85,89,89,92],"idgham":[92,97],"madd":[18,19,78,80,103,104],"silent":[80,82],"wasl":[50,51]},
-"85": {"idgham":[70,75,85,86],"madd":[89,90,94,95],"qalqalah":[53,55],"silent":[8,10],"wasl":[17,18,84,85]},
-"86": {"madd":[44,45,49,50],"wasl":[29,30,39,40]},
-"87": {"ghunnah":[42,46],"idgham":[84,89,119,123,135,136],"madd":[12,14,142,143,167,168],"qalqalah":[90,92,114,116],"silent":[97,99,131,133,141,142],"wasl":[89,90,134,135,156,157]},
-"88": {"ghunnah":[28,31,85,90,139,143],"idgham":[73,77,105,106],"madd":[23,25,65,66,83,84,100,101,172,175,182,183,272,273],"qalqalah":[161,163,197,199],"silent":[99,100,134,136,234,236,251,253],"wasl":[92,93,104,105,160,161,192,193,254,255,265,266]},
-"89": {"ghunnah":[66,69],"idgham":[18,19],"madd":[100,101],"madd-lazim":[64,66],"qalqalah":[8,10],"wasl":[37,38,78,79]},
-"90": {"ghunnah":[151,154,157,160],"idgham":[90,95],"madd":[4,5,19,21,28,30,83,84,108,111,116,118,162,163,166,168,173,174,190,192,207,208,213,215,224,226,257,258],"qalqalah":[97,99,121,123],"silent":[215,217],"wasl":[36,37,130,131,184,185,246,247]},
-"91": {"ghunnah":[40,43],"madd":[9,10,60,61],"madd-lazim":[2,4],"qalqalah":[17,19,31,33],"wasl":[49,50]},
-"92": {"ghunnah":[72,75,93,96],"idgham":[66,70,82,88,92,93],"madd":[110,111,121,122,126,127],"wasl":[2,3,91,92]},
-"93": {"ghunnah":[143,146],"idgham":[56,60,71,76,80,81],"madd":[24,26,33,35,68,69,89,90,122,124,188,189,226,227],"qalqalah":[6,8,53,55,64,66,157,159],"silent":[109,111,207,209],"wasl":[79,80,99,100,131,132,181,182]},
-"94": {"ghunnah":[4,8,8,11,25,28,33,36,97,101,159,162],"idgham":[20,25,135,140],"madd":[28,30,40,42,91,92,117,119,179,180],"qalqalah":[74,76,101,103,112,114],"wasl":[62,63,84,85,124,125,168,169]},
-"95": {"ghunnah":[13,16],"madd":[51,52,83,84,88,89],"silent":[40,42],"wasl":[22,23,55,56,78,79]},
-"96": {"ghunnah":[2,5],"madd":[64,65],"wasl":[6,7]},
-"97": {"madd":[9,11,69,70],"silent":[48,50],"wasl":[51,52,62,63]},
-"98": {"ghunnah":[87,90],"idgham":[158,159],"madd":[47,49,55,56,60,62,90,92,153,154,179,180,194,195],"silent":[101,103,152,153],"wasl":[131,132,145,146,157,158]},
-"99": {"ghunnah":[34,38,75,78,90,93],"idgham":[89,90],"madd":[9,11,124,125],"silent":[113,115],"wasl":[40,41,88,89]},
-"100": {"ghunnah":[23,27],"idgham":[70,71],"madd":[107,108],"qalqalah":[62,64,74,76],"wasl":[50,51,69,70,85,86]},
-"101": {"ghunnah":[6,9,82,85,92,96],"idgham":[27,28,81,82,99,104],"madd":[33,34,36,37,74,75,114,115],"silent":[12,14],"wasl":[5,6,26,27,42,43,66,67,80,81]},
-"102": {"ghunnah":[9,12,64,68,85,88,99,102,123,126],"idgham":[110,115],"madd":[92,94,130,131],"qalqalah":[68,70],"silent":[59,61,94,96],"wasl":[43,44,84,85,118,119]},
-"103": {"ghunnah":[2,5,77,80],"madd":[52,53,92,93],"silent":[45,47],"wasl":[27,28,81,82]},
-"104": {"ghunnah":[20,23,29,33,33,36,52,56,101,105],"idgham":[19,20,47,52],"madd":[7,9,65,67,121,122,162,163,208,209],"wasl":[18,19,77,78,109,110,136,137,144,145,197,198]},
-"105": {"ghunnah":[55,58],"idgham":[25,26,39,44],"madd":[75,76],"qalqalah":[16,18],"wasl":[64,65]},
-"106": {"ghunnah":[15,19,41,44,69,73,84,87],"idgham":[93,99,103,104],"madd":[107,108,112,113],"qalqalah":[8,10],"wasl":[23,24,102,103]},
-"107": {"ghunnah":[31,35,88,92],"idgham":[4,8,70,74,132,136,178,179],"madd":[51,53,114,115,128,129,138,140,157,158,184,185],"madd-lazim":[98,100],"qalqalah":[76,78],"wasl":[17,18,166,167,177,178]},
-"108": {"ghunnah":[20,23,88,91,121,125,133,136,180,184],"idgham":[19,20,54,59],"madd":[7,9,34,36,115,116,162,164,188,189],"qalqalah":[29,31],"wasl":[18,19,43,44,74,75]},
-"109": {"madd":[20,23,87,88,92,93],"wasl":[2,3,35,36,60,61,82,83]}
+"1": {"madd_2":[56,57,67,68],"madd_246":[78,79],"madd_6":[40,42],"hamzat_wasl":[60,61,71,72]},
+"2": {"ghunnah":[11,14,83,86,124,127,187,190],"ikhfa":[75,78,151,154],"idghaam_ghunnah":[56,61,206,211],"lam_shamsiyyah":[10,11,82,83],"madd_2":[176,177,193,194,202,203],"madd_246":[213,214],"madd_munfasil":[41,43,117,119],"qalqalah":[144,146],"silent":[119,121],"hamzat_wasl":[81,82,100,101,171,172]},
+"3": {"ghunnah":[2,5,88,91],"ikhfa":[84,88,144,148],"iqlab":[164,167],"lam_shamsiyyah":[40,41],"madd_2":[46,47,49,50,181,182,185,186],"madd_246":[241,242],"hamzat_wasl":[16,17,24,25,39,40,55,56,92,93,108,109,128,129,193,194,213,214]},
+"4": {"ghunnah":[55,58,85,88],"iqlab":[237,241],"idghaam_ghunnah":[28,33,205,210,219,223],"lam_shamsiyyah":[145,146],"madd_2":[60,61,98,99,149,150,154,155],"madd_246":[263,264],"qalqalah":[64,66,104,106],"silent":[70,72,129,131,141,143,189,191,252,254],"hamzat_wasl":[38,39,73,74,111,112,144,145,160,161,172,173]},
+"5": {"idghaam_ghunnah":[37,41,55,60,200,204],"lam_shamsiyyah":[21,22,103,104],"madd_2":[69,70,147,148,189,190],"madd_246":[210,211],"madd_muttasil":[34,36],"silent":[92,94],"hamzat_wasl":[5,6,20,21,41,42,102,103,115,116,137,138,162,163,181,182]},
+"6": {"ghunnah":[2,5,34,37],"idghaam_ghunnah":[113,117],"idghaam_no_ghunnah":[103,108],"lam_shamsiyyah":[33,34,69,70],"madd_2":[17,18,75,76,78,79,101,102],"madd_246":[122,123],"hamzat_wasl":[10,11,21,22,32,33,56,57,68,69,84,85]},
+"7": {"ghunnah":[2,5,86,89],"lam_shamsiyyah":[67,68],"madd_2":[62,63,126,127,135,136],"madd_246":[140,141],"madd_muttasil":[34,36],"qalqalah":[80,82],"silent":[49,51,61,62,90,92],"hamzat_wasl":[6,7,54,55,66,67,79,80,101,102]},
+"8": {"ghunnah":[28,31],"lam_shamsiyyah":[27,28],"madd_2":[20,21],"madd_246":[58,59],"madd_muttasil":[6,8],"silent":[2,4,47,49],"hamzat_wasl":[26,27]},
+"9": {"ghunnah":[2,5,131,134,140,143],"ikhfa":[99,103],"ikhfa_shafawi":[72,76],"lam_shamsiyyah":[40,41,139,140],"madd_2":[44,45,49,50,81,82,121,122,134,135],"madd_246":[145,146],"qalqalah":[91,93],"silent":[24,26,36,38],"hamzat_wasl":[6,7,39,40,112,113,138,139]},
+"10": {"ghunnah":[39,42],"idghaam_ghunnah":[72,76],"lam_shamsiyyah":[33,34],"madd_2":[7,8,26,27,70,71,91,92,131,132],"madd_246":[136,137],"qalqalah":[22,24],"hamzat_wasl":[32,33,102,103,126,127]},
+"11": {"ghunnah":[28,31],"ikhfa_shafawi":[58,62],"lam_shamsiyyah":[27,28,36,37],"madd_2":[158,159],"madd_246":[174,175],"madd_muttasil":[140,142],"hamzat_wasl":[17,18,35,36,44,45,62,63,112,113]},
+"12": {"ghunnah":[90,93],"ikhfa":[19,22,83,88],"iqlab":[49,51],"idghaam_ghunnah":[161,166],"idghaam_no_ghunnah":[131,136],"lam_shamsiyyah":[27,28],"madd_2":[22,23,119,120,171,172,177,178],"madd_246":[228,229],"madd_munfasil":[54,56,147,149],"madd_muttasil":[78,80],"qalqalah":[141,143],"silent":[217,219],"hamzat_wasl":[14,15,26,27]},
+"13": {"ghunnah":[49,52],"ikhfa":[34,38],"ikhfa_shafawi":[87,91],"madd_2":[101,102,138,139],"madd_246":[173,174],"madd_muttasil":[68,70],"qalqalah":[6,8,38,40,146,148,167,169],"silent":[61,63,117,119,131,133],"hamzat_wasl":[21,22,91,92,152,153,162,163]},
+"14": {"ghunnah":[2,5],"ikhfa":[65,68],"iqlab":[48,51],"madd_2":[14,15],"madd_246":[86,87],"madd_muttasil":[24,26],"hamzat_wasl":[35,36]},
+"15": {"ghunnah":[250,253],"ikhfa":[49,53,183,187],"madd_2":[47,48,120,121,179,180],"madd_246":[304,305],"madd_munfasil":[123,125,160,162,202,204,236,239,253,255],"madd_muttasil":[85,87,191,193],"hamzat_wasl":[57,58,93,94]},
+"16": {"ikhfa":[112,116],"ikhfa_shafawi":[69,73],"idghaam_ghunnah":[106,112],"madd_2":[39,40,66,67,75,76],"madd_246":[141,142],"madd_munfasil":[56,58,122,124],"madd_muttasil":[12,14],"qalqalah":[61,63,81,83,116,118],"hamzat_wasl":[17,18]},
+"17": {"ghunnah":[18,21,87,90],"madd_2":[77,78,92,93],"madd_246":[118,119],"madd_munfasil":[82,84],"qalqalah":[112,114],"hamzat_wasl":[24,25,40,41,107,108]},
+"18": {"ghunnah":[237,240],"ikhfa":[16,20,60,63,112,115],"lam_shamsiyyah":[177,178],"madd_2":[183,184,186,187,216,217,221,222,229,230],"madd_246":[250,251],"madd_muttasil":[85,87,91,93,102,104],"qalqalah":[212,214],"hamzat_wasl":[24,25,116,117,145,146,176,177,200,201]},
+"19": {"ghunnah":[14,17,31,34],"ikhfa":[45,49,79,83],"idghaam_ghunnah":[35,39],"idghaam_no_ghunnah":[92,97],"lam_shamsiyyah":[13,14],"madd_2":[39,40],"madd_246":[146,147],"madd_munfasil":[26,28],"silent":[59,61],"hamzat_wasl":[12,13,49,50]},
+"20": {"ghunnah":[71,74,113,116],"ikhfa":[24,27,99,102,137,140],"idghaam_ghunnah":[45,50],"idghaam_no_ghunnah":[50,55],"idghaam_shafawi":[124,129],"madd_2":[60,61],"madd_246":[144,145],"madd_munfasil":[19,21,106,108],"silent":[108,110],"hamzat_wasl":[78,79,98,99,132,133]},
+"21": {"ghunnah":[21,24,141,144],"ikhfa":[90,94],"iqlab":[41,44],"idghaam_ghunnah":[35,40],"idghaam_shafawi":[82,87],"lam_shamsiyyah":[20,21],"madd_246":[179,180],"madd_munfasil":[6,8,94,96],"madd_muttasil":[55,57],"qalqalah":[13,15],"hamzat_wasl":[19,20,114,115]},
+"22": {"ghunnah":[213,216,223,226,332,335],"ikhfa":[69,72,112,116,193,197,298,301],"ikhfa_shafawi":[104,108],"idghaam_ghunnah":[122,126,166,170,207,211],"lam_shamsiyyah":[281,282,342,343],"madd_2":[316,317,321,322,346,347],"madd_246":[351,352],"madd_munfasil":[57,60,216,218],"madd_muttasil":[144,146,172,174],"silent":[133,135,218,220,252,254],"hamzat_wasl":[5,6,31,32,42,43,79,80,181,182,255,256,280,281,341,342]},
+"23": {"ghunnah":[4,7,90,93,99,102,170,173],"ikhfa":[12,15,127,130,220,223],"ikhfa_shafawi":[210,214],"idghaam_shafawi":[134,139],"lam_shamsiyyah":[89,90,158,159],"madd_2":[16,17,141,142,153,154],"madd_246":[234,235],"madd_munfasil":[7,9,77,79,121,124],"qalqalah":[35,37],"silent":[152,153],"hamzat_wasl":[47,48,66,67,88,89,145,146,157,158]},
+"24": {"ghunnah":[2,5,116,119,132,135,219,222,236,239],"ikhfa":[50,53,306,311,330,335],"idghaam_ghunnah":[403,407],"idghaam_no_ghunnah":[337,342],"lam_shamsiyyah":[29,30,67,68,131,132],"madd_2":[24,25,57,58,94,95,150,151,246,247,271,272,319,320,368,369,392,393],"madd_246":[416,417],"madd_munfasil":[159,162,167,169,231,233,263,265,274,276],"madd_muttasil":[43,45,73,75],"silent":[23,24],"hamzat_wasl":[16,17,28,29,66,67,80,81,104,105,130,131,141,142,179,180,203,204,354,355,384,385]},
+"25": {"idghaam_ghunnah":[57,61,81,86],"lam_shamsiyyah":[35,36],"madd_2":[41,42,79,80],"madd_246":[92,93],"madd_munfasil":[16,18],"madd_muttasil":[63,65],"qalqalah":[12,14],"silent":[18,20],"hamzat_wasl":[2,3,34,35]},
+"26": {"ghunnah":[124,127],"idghaam_ghunnah":[46,50,80,84],"madd_2":[115,116,144,145],"madd_246":[149,150],"madd_muttasil":[102,104],"silent":[21,23,98,100],"hamzat_wasl":[24,25,119,120]},
+"27": {"ghunnah":[134,137,223,226],"ikhfa":[128,132],"iqlab":[54,58],"idghaam_ghunnah":[90,95,170,176],"idghaam_shafawi":[101,106],"lam_shamsiyyah":[23,24,222,223],"madd_2":[217,218,244,245],"madd_246":[249,250],"madd_munfasil":[139,141],"madd_muttasil":[41,43,204,206],"silent":[19,21,200,202],"hamzat_wasl":[2,3,22,23,109,110,179,180,221,222]},
+"28": {"ghunnah":[33,36],"ikhfa":[28,33,82,85,158,161],"idghaam_shafawi":[149,154],"madd_246":[182,183],"madd_muttasil":[96,98,143,145],"silent":[65,67]},
+"29": {"ghunnah":[58,61],"ikhfa":[54,58],"iqlab":[25,30],"madd_2":[86,87],"madd_246":[91,92],"hamzat_wasl":[11,12]},
+"30": {"idghaam_ghunnah":[31,36],"idghaam_shafawi":[112,117],"madd_2":[83,84],"madd_246":[136,137],"madd_munfasil":[36,38,57,59],"qalqalah":[12,14],"silent":[17,19,59,61,125,127],"hamzat_wasl":[68,69,89,90]},
+"31": {"ghunnah":[53,56],"idghaam_ghunnah":[7,11,56,60,96,100,172,176],"idghaam_shafawi":[19,24],"lam_shamsiyyah":[28,29,68,69],"madd_2":[88,89],"madd_246":[239,240],"madd_muttasil":[34,36],"qalqalah":[84,86],"hamzat_wasl":[27,28,41,42,67,68,79,80,107,108,121,122,143,144,159,160,184,185,209,210]},
+"32": {"ghunnah":[86,89],"lam_shamsiyyah":[72,73],"madd_2":[4,5,78,79],"madd_246":[100,101],"hamzat_wasl":[12,13,30,31,55,56,71,72]},
+"33": {"ghunnah":[64,67],"madd_2":[4,5],"madd_246":[84,85],"madd_munfasil":[57,59],"silent":[59,61],"hamzat_wasl":[41,42]},
+"34": {"ghunnah":[56,59,107,110,126,129],"ikhfa":[12,16],"idghaam_ghunnah":[31,35],"idghaam_shafawi":[26,31],"madd_2":[69,70,120,121],"madd_246":[140,141],"madd_muttasil":[20,22],"qalqalah":[35,37,86,88],"silent":[41,43,92,94],"hamzat_wasl":[44,45,76,77,95,96]},
+"35": {"ghunnah":[144,147],"ikhfa":[12,16],"idghaam_ghunnah":[31,35,94,98,130,134,174,178],"idghaam_no_ghunnah":[147,152],"idghaam_shafawi":[26,31],"madd_246":[213,214],"madd_munfasil":[39,41,102,104,161,163,169,171],"madd_muttasil":[20,22],"hamzat_wasl":[48,49,62,63,111,112]},
+"36": {"ghunnah":[38,41,45,48,54,57,95,98],"iqlab":[113,117],"lam_shamsiyyah":[50,51],"madd_246":[130,131],"hamzat_wasl":[49,50,75,76,99,100]},
+"37": {"ikhfa":[49,53,72,76],"idghaam_ghunnah":[34,38],"idghaam_no_ghunnah":[150,155],"madd_2":[14,15,69,70,127,128,164,165],"madd_246":[169,170],"hamzat_wasl":[19,20,57,58,84,85,120,121,159,160]},
+"38": {"ikhfa":[96,100,114,118,118,121],"idghaam_ghunnah":[51,56],"idghaam_shafawi":[91,96],"madd_2":[24,25,62,63,126,127],"madd_246":[131,132],"qalqalah":[67,69],"silent":[40,42,72,74],"hamzat_wasl":[16,17,66,67,80,81,104,105]},
+"39": {"ghunnah":[54,57],"ikhfa":[113,117,129,132],"lam_shamsiyyah":[159,160],"madd_2":[48,49,81,82,87,88,150,151,163,164],"madd_246":[168,169],"qalqalah":[117,119],"silent":[13,15,35,37],"hamzat_wasl":[101,102,128,129,158,159]},
+"40": {"idghaam_ghunnah":[13,17],"idghaam_no_ghunnah":[43,48],"idghaam_shafawi":[8,13,38,43],"madd_2":[28,29,63,64],"madd_246":[97,98],"hamzat_wasl":[86,87]},
+"41": {"ghunnah":[78,81,114,117],"ikhfa":[4,8,58,61],"ikhfa_shafawi":[61,65],"idghaam_ghunnah":[109,114],"madd_246":[127,128],"madd_munfasil":[81,83],"madd_muttasil":[67,69,106,108]},
+"42": {"ghunnah":[62,65],"ikhfa":[44,47],"idghaam_ghunnah":[13,17],"idghaam_shafawi":[8,13],"lam_shamsiyyah":[58,59],"madd_246":[94,95],"silent":[79,81],"hamzat_wasl":[57,58]},
+"43": {"ikhfa":[17,20,38,41],"idghaam_ghunnah":[13,17],"idghaam_shafawi":[8,13],"madd_246":[88,89],"qalqalah":[82,84],"silent":[73,75],"hamzat_wasl":[50,51]},
+"44": {"ghunnah":[2,5,29,32,52,55,58,61],"ikhfa":[67,70],"idghaam_ghunnah":[42,47],"lam_shamsiyyah":[28,29,57,58],"madd_2":[49,50],"madd_246":[85,86],"hamzat_wasl":[6,7,27,28,56,57]},
+"45": {"ghunnah":[70,73],"idghaam_ghunnah":[60,65],"idghaam_no_ghunnah":[26,31],"lam_shamsiyyah":[69,70],"madd_246":[180,181],"madd_munfasil":[42,44],"madd_muttasil":[144,146],"qalqalah":[107,109],"silent":[44,46,135,137,169,171],"hamzat_wasl":[68,69,117,118,149,150]},
+"46": {"ghunnah":[4,7,15,18,63,66,96,99],"madd_246":[135,136],"hamzat_wasl":[28,29,100,101]},
+"47": {"ghunnah":[12,15],"ikhfa":[25,29],"ikhfa_shafawi":[69,73],"idghaam_no_ghunnah":[16,21],"madd_246":[102,103],"madd_muttasil":[37,39],"hamzat_wasl":[73,74]},
+"48": {"ikhfa":[39,43,43,46],"madd_2":[22,23,51,52],"madd_246":[56,57],"hamzat_wasl":[27,28]},
+"49": {"ghunnah":[86,89],"idghaam_ghunnah":[33,38,152,156],"madd_246":[172,173],"madd_munfasil":[7,9],"madd_muttasil":[63,65,107,109],"qalqalah":[166,168],"hamzat_wasl":[68,69]},
+"50": {"idghaam_ghunnah":[65,71],"madd_2":[28,29,43,44,49,50],"madd_246":[107,108],"qalqalah":[101,103],"hamzat_wasl":[96,97]},
+"51": {"ghunnah":[4,7],"ikhfa":[30,33,64,67],"ikhfa_shafawi":[33,37,67,71],"madd_2":[51,52,73,74],"madd_246":[87,88],"madd_munfasil":[39,41],"madd_6":[44,46],"qalqalah":[59,61]},
+"52": {"ghunnah":[2,5],"ikhfa":[91,94],"madd_246":[105,106],"qalqalah":[67,69],"silent":[30,32,39,41],"hamzat_wasl":[50,51]},
+"53": {"ghunnah":[55,58],"ikhfa":[79,82],"ikhfa_shafawi":[82,86],"iqlab":[9,11],"idghaam_ghunnah":[68,72],"madd_2":[60,61],"madd_246":[94,95],"madd_munfasil":[50,52,74,76]},
+"54": {"ghunnah":[9,12,88,91,101,104],"ikhfa":[26,30],"ikhfa_shafawi":[143,147],"lam_shamsiyyah":[87,88],"madd_2":[71,72],"madd_246":[176,177],"silent":[83,85,112,114],"hamzat_wasl":[45,46,57,58,86,87,115,116,147,148]},
+"55": {"ghunnah":[9,12,64,67,96,99],"idghaam_ghunnah":[87,91],"lam_shamsiyyah":[30,31],"madd_2":[36,37,39,40,93,94],"madd_246":[125,126],"madd_munfasil":[4,6,59,61],"hamzat_wasl":[29,30,45,46,75,76]},
+"56": {"madd_2":[11,12],"madd_246":[42,43]},
+"57": {"ghunnah":[15,18],"idghaam_ghunnah":[49,54,105,110],"idghaam_no_ghunnah":[54,59,76,81,117,122],"idghaam_shafawi":[37,42],"lam_shamsiyyah":[14,15,90,91],"madd_246":[132,133],"madd_munfasil":[2,4],"madd_muttasil":[29,31,73,75],"qalqalah":[24,26],"hamzat_wasl":[13,14,89,90]},
+"58": {"ghunnah":[81,84],"idghaam_ghunnah":[76,81],"madd_2":[36,37,44,45],"madd_246":[94,95],"qalqalah":[88,90],"silent":[63,65],"hamzat_wasl":[14,15]},
+"59": {"ikhfa":[25,28,56,60,95,100],"idghaam_ghunnah":[84,89],"idghaam_no_ghunnah":[48,53],"idghaam_shafawi":[15,20,43,48,68,73],"madd_2":[93,94],"madd_246":[155,156],"madd_munfasil":[20,22],"madd_6":[105,107],"hamzat_wasl":[31,32,139,140]},
+"60": {"ghunnah":[8,11,80,83,113,116,127,130],"lam_shamsiyyah":[112,113],"madd_2":[72,73,124,125],"madd_246":[156,157],"hamzat_wasl":[12,13,40,41,48,49,65,66,84,85,111,112]},
+"61": {"ghunnah":[101,104],"ikhfa":[50,54,197,201,253,257],"idghaam_ghunnah":[23,27,60,64,178,183,296,301],"idghaam_no_ghunnah":[165,170],"lam_shamsiyyah":[224,225],"madd_2":[257,258,294,295],"madd_246":[303,304],"madd_munfasil":[239,241,267,269],"madd_muttasil":[230,232],"silent":[38,40],"hamzat_wasl":[203,204,223,224]},
+"62": {"ghunnah":[9,12],"madd_246":[75,76],"madd_munfasil":[4,6],"madd_muttasil":[21,23],"hamzat_wasl":[26,27]},
+"63": {"madd_246":[39,40],"silent":[18,20,29,31]},
+"64": {"lam_shamsiyyah":[36,37],"madd_2":[31,32,87,88,101,102],"madd_246":[129,130],"qalqalah":[71,73],"silent":[30,31],"hamzat_wasl":[7,8,23,24,35,36,52,53,91,92,112,113,122,123]},
+"65": {"ghunnah":[29,32],"ikhfa":[12,15],"lam_shamsiyyah":[67,68],"madd_246":[84,85],"hamzat_wasl":[33,34,66,67,77,78]},
+"66": {"ghunnah":[9,12,157,160],"ikhfa":[23,27,47,51,101,105],"idghaam_ghunnah":[130,134],"lam_shamsiyyah":[30,31,153,154],"madd_2":[36,37,39,40],"madd_246":[188,189],"madd_munfasil":[4,6],"madd_muttasil":[123,125],"qalqalah":[91,93],"hamzat_wasl":[29,30,53,54,79,80,109,110,152,153]},
+"67": {"ghunnah":[60,63,81,84],"idghaam_ghunnah":[116,120],"idghaam_no_ghunnah":[106,111],"lam_shamsiyyah":[59,60],"madd_2":[91,92,104,105],"madd_246":[126,127],"qalqalah":[71,73],"silent":[47,49],"hamzat_wasl":[5,6,27,28,58,59]},
+"68": {"ikhfa":[31,36,118,121,128,132],"iqlab":[138,142],"idghaam_shafawi":[123,128],"lam_shamsiyyah":[78,79],"madd_2":[40,41,45,46,67,68,84,85,87,88,136,137,145,146],"madd_246":[194,195],"madd_munfasil":[148,150],"qalqalah":[36,38],"silent":[6,8],"hamzat_wasl":[9,10,18,19,52,53,77,78,101,102,170,171]},
+"69": {"ghunnah":[7,10],"madd_246":[69,70],"hamzat_wasl":[11,12,39,40,47,48]},
+"70": {"ghunnah":[25,28,54,57],"ikhfa":[6,10],"lam_shamsiyyah":[13,14,82,83],"madd_2":[4,5],"madd_246":[115,116],"silent":[104,106],"hamzat_wasl":[12,13,70,71,81,82]},
+"71": {"ghunnah":[208,211,247,250,255,258],"ikhfa":[67,71,251,255,285,288],"idghaam_shafawi":[90,95],"madd_2":[53,54,57,58,123,124],"madd_246":[290,291],"madd_munfasil":[173,175,264,266],"madd_muttasil":[197,199],"qalqalah":[167,169,260,262],"silent":[175,177,266,268],"hamzat_wasl":[2,3,127,128,143,144,259,260]},
+"72": {"ikhfa":[4,8],"idghaam_shafawi":[36,41],"madd_246":[126,127],"qalqalah":[46,48,58,60],"hamzat_wasl":[78,79,115,116]},
+"73": {"ikhfa":[137,140,171,174],"idghaam_ghunnah":[32,37],"madd_2":[24,25,41,42,67,68,127,128,158,159],"madd_246":[176,177],"madd_muttasil":[77,79],"qalqalah":[92,94],"silent":[116,118],"hamzat_wasl":[47,48,98,99,136,137,166,167]},
+"74": {"ghunnah":[2,5],"ikhfa":[140,144],"ikhfa_shafawi":[68,72],"iqlab":[19,22],"madd_2":[29,30,82,83,136,137,153,154],"madd_246":[194,195],"madd_muttasil":[61,63],"qalqalah":[144,146,161,163],"silent":[98,100,112,114,129,131],"hamzat_wasl":[72,73,183,184]},
+"75": {"ghunnah":[2,5],"iqlab":[19,22],"idghaam_ghunnah":[131,137],"idghaam_shafawi":[29,34],"madd_2":[44,45,81,82,91,92],"madd_246":[143,144],"qalqalah":[137,139],"silent":[77,79,112,114,123,125],"hamzat_wasl":[100,101]},
+"76": {"ghunnah":[4,7,55,58],"ikhfa":[36,39],"idghaam_ghunnah":[73,78],"madd_2":[61,62],"madd_246":[80,81],"madd_munfasil":[48,50],"madd_muttasil":[11,13],"silent":[50,52],"hamzat_wasl":[20,21]},
+"77": {"ghunnah":[40,43],"lam_shamsiyyah":[88,89],"madd_2":[67,68,92,93],"madd_246":[97,98],"madd_munfasil":[11,14],"madd_muttasil":[47,49],"hamzat_wasl":[87,88]},
+"78": {"ghunnah":[38,41],"madd_246":[154,155],"madd_munfasil":[5,7],"madd_muttasil":[67,69,104,106],"qalqalah":[47,49,98,100],"silent":[7,9],"hamzat_wasl":[93,94,113,114]},
+"79": {"madd_2":[39,40],"madd_246":[49,50],"hamzat_wasl":[19,20]},
+"80": {"ghunnah":[4,7],"ikhfa":[67,70],"idghaam_shafawi":[38,43,70,75],"lam_shamsiyyah":[17,18],"madd_246":[79,80],"madd_munfasil":[46,49,62,64],"madd_muttasil":[11,13],"silent":[57,59],"hamzat_wasl":[16,17]},
+"81": {"ghunnah":[4,7,64,67,93,96],"ikhfa_shafawi":[45,49],"lam_shamsiyyah":[53,54],"madd_246":[136,137],"madd_munfasil":[7,9,88,90],"qalqalah":[80,82],"silent":[18,20],"hamzat_wasl":[52,53,68,69,97,98,125,126]},
+"82": {"madd_2":[35,36,40,41],"madd_246":[67,68],"qalqalah":[61,63],"hamzat_wasl":[10,11,18,19,56,57]},
+"83": {"ghunnah":[125,128,166,169],"ikhfa":[47,51,76,80,146,150],"idghaam_ghunnah":[42,47,71,76,106,110],"madd_2":[57,58,171,172],"madd_246":[191,192],"madd_munfasil":[4,6,22,25],"silent":[97,99],"hamzat_wasl":[152,153,180,181]},
+"84": {"ikhfa":[28,32,32,35,43,46,85,89,89,92],"ikhfa_shafawi":[46,50],"idghaam_shafawi":[92,97],"madd_2":[18,19],"madd_246":[103,104],"madd_munfasil":[78,80],"silent":[80,82],"hamzat_wasl":[50,51]},
+"85": {"idghaam_no_ghunnah":[70,75],"lam_shamsiyyah":[85,86],"madd_2":[89,90],"madd_246":[94,95],"qalqalah":[53,55],"silent":[8,10],"hamzat_wasl":[17,18,84,85]},
+"86": {"madd_2":[44,45],"madd_246":[49,50],"hamzat_wasl":[29,30,39,40]},
+"87": {"ikhfa":[42,46],"idghaam_ghunnah":[84,89,119,123],"lam_shamsiyyah":[135,136],"madd_2":[142,143],"madd_246":[167,168],"madd_munfasil":[12,14],"qalqalah":[90,92,114,116],"silent":[97,99,131,133,141,142],"hamzat_wasl":[89,90,134,135,156,157]},
+"88": {"ghunnah":[28,31],"ikhfa":[85,90,139,143],"idghaam_ghunnah":[73,77],"lam_shamsiyyah":[105,106],"madd_2":[65,66,83,84,100,101,182,183],"madd_246":[272,273],"madd_munfasil":[23,25,172,175],"qalqalah":[161,163,197,199],"silent":[99,100,134,136,234,236,251,253],"hamzat_wasl":[92,93,104,105,160,161,192,193,254,255,265,266]},
+"89": {"ghunnah":[66,69],"idghaam_mutajanisayn":[18,19],"madd_246":[100,101],"madd_6":[64,66],"qalqalah":[8,10],"hamzat_wasl":[37,38,78,79]},
+"90": {"ghunnah":[157,160],"ikhfa":[151,154],"idghaam_ghunnah":[90,95],"madd_2":[4,5,83,84,162,163,173,174,207,208],"madd_246":[257,258],"madd_munfasil":[19,21,108,111,116,118,166,168,190,192,213,215],"madd_muttasil":[28,30,224,226],"qalqalah":[97,99,121,123],"silent":[215,217],"hamzat_wasl":[36,37,130,131,184,185,246,247]},
+"91": {"ikhfa":[40,43],"madd_2":[9,10],"madd_246":[60,61],"madd_6":[2,4],"qalqalah":[17,19,31,33],"hamzat_wasl":[49,50]},
+"92": {"ghunnah":[72,75,93,96],"idghaam_ghunnah":[66,70,82,88],"lam_shamsiyyah":[92,93],"madd_2":[110,111,121,122],"madd_246":[126,127],"hamzat_wasl":[2,3,91,92]},
+"93": {"ghunnah":[143,146],"idghaam_ghunnah":[56,60],"idghaam_shafawi":[71,76],"lam_shamsiyyah":[80,81],"madd_2":[68,69,89,90,188,189],"madd_246":[226,227],"madd_munfasil":[24,26],"madd_muttasil":[33,35,122,124],"qalqalah":[6,8,53,55,64,66,157,159],"silent":[109,111,207,209],"hamzat_wasl":[79,80,99,100,131,132,181,182]},
+"94": {"ghunnah":[25,28,159,162],"ikhfa":[4,8,8,11,33,36,97,101],"idghaam_ghunnah":[20,25],"idghaam_no_ghunnah":[135,140],"madd_2":[91,92],"madd_246":[179,180],"madd_munfasil":[28,30,40,42],"madd_muttasil":[117,119],"qalqalah":[74,76,101,103,112,114],"hamzat_wasl":[62,63,84,85,124,125,168,169]},
+"95": {"ghunnah":[13,16],"madd_2":[51,52,83,84],"madd_246":[88,89],"silent":[40,42],"hamzat_wasl":[22,23,55,56,78,79]},
+"96": {"ghunnah":[2,5],"madd_246":[64,65],"hamzat_wasl":[6,7]},
+"97": {"madd_246":[69,70],"madd_muttasil":[9,11],"silent":[48,50],"hamzat_wasl":[51,52,62,63]},
+"98": {"ghunnah":[87,90],"lam_shamsiyyah":[158,159],"madd_2":[55,56,153,154,179,180],"madd_246":[194,195],"madd_munfasil":[47,49,60,62,90,92],"silent":[101,103,152,153],"hamzat_wasl":[131,132,145,146,157,158]},
+"99": {"ghunnah":[90,93],"ikhfa":[34,38,75,78],"lam_shamsiyyah":[89,90],"madd_246":[124,125],"madd_muttasil":[9,11],"silent":[113,115],"hamzat_wasl":[40,41,88,89]},
+"100": {"ikhfa":[23,27],"lam_shamsiyyah":[70,71],"madd_246":[107,108],"qalqalah":[62,64,74,76],"hamzat_wasl":[50,51,69,70,85,86]},
+"101": {"ghunnah":[82,85],"ikhfa":[6,9,92,96],"idghaam_no_ghunnah":[99,104],"lam_shamsiyyah":[27,28,81,82],"madd_2":[33,34,36,37,74,75],"madd_246":[114,115],"silent":[12,14],"hamzat_wasl":[5,6,26,27,42,43,66,67,80,81]},
+"102": {"ghunnah":[99,102],"ikhfa":[9,12,64,68,85,88,123,126],"idghaam_shafawi":[110,115],"madd_246":[130,131],"madd_munfasil":[92,94],"qalqalah":[68,70],"silent":[59,61,94,96],"hamzat_wasl":[43,44,84,85,118,119]},
+"103": {"ghunnah":[2,5],"ikhfa":[77,80],"madd_2":[52,53],"madd_246":[92,93],"silent":[45,47],"hamzat_wasl":[27,28,81,82]},
+"104": {"ghunnah":[20,23],"ikhfa":[29,33,33,36,52,56,101,105],"idghaam_ghunnah":[47,52],"lam_shamsiyyah":[19,20],"madd_2":[121,122,162,163],"madd_246":[208,209],"madd_munfasil":[7,9,65,67],"hamzat_wasl":[18,19,77,78,109,110,136,137,144,145,197,198]},
+"105": {"ghunnah":[55,58],"idghaam_ghunnah":[39,44],"lam_shamsiyyah":[25,26],"madd_246":[75,76],"qalqalah":[16,18],"hamzat_wasl":[64,65]},
+"106": {"ghunnah":[84,87],"ikhfa":[15,19,41,44,69,73],"idghaam_ghunnah":[93,99],"lam_shamsiyyah":[103,104],"madd_2":[107,108],"madd_246":[112,113],"qalqalah":[8,10],"hamzat_wasl":[23,24,102,103]},
+"107": {"ikhfa":[31,35,88,92],"idghaam_ghunnah":[4,8,70,74,132,136],"lam_shamsiyyah":[178,179],"madd_2":[114,115,128,129,157,158],"madd_246":[184,185],"madd_munfasil":[51,53],"madd_muttasil":[138,140],"madd_6":[98,100],"qalqalah":[76,78],"hamzat_wasl":[17,18,166,167,177,178]},
+"108": {"ghunnah":[20,23,88,91,133,136],"ikhfa":[121,125],"ikhfa_shafawi":[180,184],"idghaam_no_ghunnah":[54,59],"lam_shamsiyyah":[19,20],"madd_2":[115,116],"madd_246":[188,189],"madd_munfasil":[7,9,162,164],"madd_muttasil":[34,36],"qalqalah":[29,31],"hamzat_wasl":[18,19,43,44,74,75]},
+"109": {"madd_2":[87,88],"madd_246":[92,93],"madd_munfasil":[20,23],"hamzat_wasl":[2,3,35,36,60,61,82,83]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/100.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/100.json
index 9c203ca..a629e2a 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/100.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/100.json
@@ -1,13 +1,13 @@
{
-"1": {"madd":[46,47,51,52],"qalqalah":[57,59],"wasl":[41,42]},
-"2": {"madd":[12,13],"qalqalah":[18,20],"wasl":[2,3]},
-"3": {"madd":[12,13],"qalqalah":[18,20],"wasl":[2,3]},
-"4": {"madd":[15,16],"qalqalah":[19,21]},
-"5": {"madd":[15,16],"qalqalah":[6,8]},
-"6": {"ghunnah":[2,5,11,14],"madd":[14,15,27,28,35,36],"qalqalah":[36,37],"wasl":[6,7]},
-"7": {"ghunnah":[4,7],"madd":[9,10,20,21,32,33],"qalqalah":[33,34]},
-"8": {"ghunnah":[4,7],"madd":[9,10,35,36],"qalqalah":[36,37],"wasl":[19,20]},
-"9": {"madd":[47,48],"wasl":[40,41]},
-"10": {"idgham":[19,20],"madd":[25,26],"wasl":[18,19]},
-"11": {"ghunnah":[2,5,13,17],"idgham":[31,36],"madd":[40,41]}
+"1": {"madd_2":[46,47,51,52],"qalqalah":[57,59],"hamzat_wasl":[41,42]},
+"2": {"madd_2":[12,13],"qalqalah":[18,20],"hamzat_wasl":[2,3]},
+"3": {"madd_2":[12,13],"qalqalah":[18,20],"hamzat_wasl":[2,3]},
+"4": {"madd_2":[15,16],"qalqalah":[19,21]},
+"5": {"madd_2":[15,16],"qalqalah":[6,8]},
+"6": {"ghunnah":[2,5],"ikhfa":[11,14],"madd_2":[14,15,27,28],"madd_246":[35,36],"qalqalah":[36,37],"hamzat_wasl":[6,7]},
+"7": {"ghunnah":[4,7],"madd_2":[9,10,20,21],"madd_246":[32,33],"qalqalah":[33,34]},
+"8": {"ghunnah":[4,7],"madd_2":[9,10],"madd_246":[35,36],"qalqalah":[36,37],"hamzat_wasl":[19,20]},
+"9": {"madd_246":[47,48],"hamzat_wasl":[40,41]},
+"10": {"lam_shamsiyyah":[19,20],"madd_246":[25,26],"hamzat_wasl":[18,19]},
+"11": {"ghunnah":[2,5],"ikhfa_shafawi":[13,17],"idghaam_no_ghunnah":[31,36],"madd_246":[40,41]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/101.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/101.json
index d14a910..f8f4e1d 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/101.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/101.json
@@ -1,11 +1,11 @@
{
-"2": {"wasl":[4,5]},
-"3": {"madd":[4,6,14,15],"qalqalah":[9,11],"wasl":[22,23]},
-"4": {"ghunnah":[17,20],"idgham":[16,17],"madd":[46,47],"qalqalah":[42,44],"wasl":[15,16,26,27,37,38]},
-"5": {"ghunnah":[38,41],"madd":[41,42],"wasl":[10,11,23,24,33,34]},
-"6": {"ghunnah":[4,7,11,15],"madd":[26,27]},
-"7": {"idgham":[17,22]},
-"8": {"ghunnah":[4,7],"madd":[26,27]},
-"9": {"ghunnah":[4,7],"madd":[9,10]},
-"10": {"madd":[4,6,14,15],"qalqalah":[9,11]}
+"2": {"hamzat_wasl":[4,5]},
+"3": {"madd_2":[14,15],"madd_munfasil":[4,6],"qalqalah":[9,11],"hamzat_wasl":[22,23]},
+"4": {"ghunnah":[17,20],"lam_shamsiyyah":[16,17],"madd_246":[46,47],"qalqalah":[42,44],"hamzat_wasl":[15,16,26,27,37,38]},
+"5": {"ikhfa":[38,41],"madd_246":[41,42],"hamzat_wasl":[10,11,23,24,33,34]},
+"6": {"ghunnah":[4,7],"ikhfa":[11,15],"madd_2":[26,27]},
+"7": {"idghaam_no_ghunnah":[17,22]},
+"8": {"ghunnah":[4,7],"madd_2":[26,27]},
+"9": {"ghunnah":[4,7],"madd_2":[9,10]},
+"10": {"madd_2":[14,15],"madd_munfasil":[4,6],"qalqalah":[9,11]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/102.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/102.json
index d5788f2..19e721b 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/102.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/102.json
@@ -1,10 +1,10 @@
{
-"1": {"idgham":[53,54],"madd":[46,47],"wasl":[52,53]},
-"2": {"wasl":[17,18]},
-"3": {"madd":[22,23]},
-"4": {"ghunnah":[2,5],"madd":[28,29]},
-"5": {"madd":[38,39],"wasl":[31,32]},
-"6": {"ghunnah":[8,11],"madd":[19,20],"wasl":[12,13]},
-"7": {"ghunnah":[2,5,14,17],"madd":[35,36],"wasl":[28,29]},
-"8": {"ghunnah":[2,5,17,20,39,42],"idgham":[38,39],"madd":[44,45],"wasl":[37,38]}
+"1": {"lam_shamsiyyah":[53,54],"madd_2":[46,47],"hamzat_wasl":[52,53]},
+"2": {"hamzat_wasl":[17,18]},
+"3": {"madd_246":[22,23]},
+"4": {"ghunnah":[2,5],"madd_246":[28,29]},
+"5": {"madd_246":[38,39],"hamzat_wasl":[31,32]},
+"6": {"ghunnah":[8,11],"madd_246":[19,20],"hamzat_wasl":[12,13]},
+"7": {"ghunnah":[2,5,14,17],"madd_246":[35,36],"hamzat_wasl":[28,29]},
+"8": {"ghunnah":[2,5,17,20,39,42],"lam_shamsiyyah":[38,39],"madd_246":[44,45],"hamzat_wasl":[37,38]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/103.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/103.json
index 0f6ade1..3c02c2b 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/103.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/103.json
@@ -1,5 +1,5 @@
{
-"1": {"wasl":[41,42]},
-"2": {"ghunnah":[2,5,11,14],"madd":[14,15],"wasl":[6,7]},
-"3": {"idgham":[41,42,96,97],"madd":[45,46,50,51],"qalqalah":[100,102],"silent":[25,27,37,39,65,67,90,92],"wasl":[7,8,40,41,70,71,95,96]}
+"1": {"hamzat_wasl":[41,42]},
+"2": {"ghunnah":[2,5],"ikhfa":[11,14],"madd_2":[14,15],"hamzat_wasl":[6,7]},
+"3": {"lam_shamsiyyah":[41,42,96,97],"madd_2":[45,46,50,51],"qalqalah":[100,102],"silent":[25,27,37,39,65,67,90,92],"hamzat_wasl":[7,8,40,41,70,71,95,96]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/104.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/104.json
index 2c09c39..140a6b9 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/104.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/104.json
@@ -1,11 +1,11 @@
{
-"1": {"idgham":[44,49,62,67]},
-"2": {"idgham":[19,24]},
-"3": {"ghunnah":[11,14],"madd":[22,24]},
-"4": {"ghunnah":[12,14,17,20],"wasl":[25,26]},
-"5": {"madd":[4,6,14,15],"qalqalah":[9,11],"wasl":[22,23]},
-"6": {"wasl":[6,7,14,15]},
-"7": {"wasl":[24,25]},
-"8": {"ghunnah":[2,5],"idgham":[17,22]},
-"9": {"idgham":[9,14]}
+"1": {"idghaam_no_ghunnah":[44,49,62,67]},
+"2": {"idghaam_ghunnah":[19,24]},
+"3": {"ghunnah":[11,14],"madd_munfasil":[22,24]},
+"4": {"ghunnah":[17,20],"iqlab":[12,14],"hamzat_wasl":[25,26]},
+"5": {"madd_2":[14,15],"madd_munfasil":[4,6],"qalqalah":[9,11],"hamzat_wasl":[22,23]},
+"6": {"hamzat_wasl":[6,7,14,15]},
+"7": {"hamzat_wasl":[24,25]},
+"8": {"ghunnah":[2,5],"idghaam_shafawi":[17,22]},
+"9": {"idghaam_ghunnah":[9,14]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/105.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/105.json
index 518772f..a0930a9 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/105.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/105.json
@@ -1,7 +1,7 @@
{
-"1": {"madd":[81,82,90,91],"wasl":[85,86]},
-"2": {"madd":[37,38],"qalqalah":[9,11]},
-"3": {"madd":[37,38]},
-"4": {"ghunnah":[9,13,26,30],"idgham":[21,26],"madd":[33,34]},
-"5": {"idgham":[20,25],"madd":[29,30]}
+"1": {"madd_2":[81,82],"madd_246":[90,91],"hamzat_wasl":[85,86]},
+"2": {"madd_246":[37,38],"qalqalah":[9,11]},
+"3": {"madd_246":[37,38]},
+"4": {"ikhfa":[26,30],"ikhfa_shafawi":[9,13],"idghaam_ghunnah":[21,26],"madd_246":[33,34]},
+"5": {"idghaam_ghunnah":[20,25],"madd_246":[29,30]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/106.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/106.json
index e79bfbf..b0dde44 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/106.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/106.json
@@ -1,6 +1,6 @@
{
-"1": {"madd":[46,47,54,55]},
-"2": {"idgham":[23,24,37,38],"madd":[2,3,5,6,29,31,41,42],"wasl":[22,23,36,37]},
-"3": {"madd":[24,25,34,35],"silent":[13,15],"wasl":[29,30]},
-"4": {"ghunnah":[24,28],"idgham":[19,24,30,34,43,48],"madd":[6,8,53,54],"qalqalah":[11,13]}
+"1": {"madd_2":[46,47],"madd_246":[54,55]},
+"2": {"lam_shamsiyyah":[23,24,37,38],"madd_2":[2,3,5,6],"madd_246":[41,42],"madd_muttasil":[29,31],"hamzat_wasl":[22,23,36,37]},
+"3": {"madd_2":[24,25],"madd_246":[34,35],"silent":[13,15],"hamzat_wasl":[29,30]},
+"4": {"ikhfa":[24,28],"idghaam_ghunnah":[30,34],"idghaam_shafawi":[19,24,43,48],"madd_246":[53,54],"madd_munfasil":[6,8],"qalqalah":[11,13]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/107.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/107.json
index 183bb81..11fd559 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/107.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/107.json
@@ -1,9 +1,9 @@
{
-"1": {"idgham":[71,72],"madd":[75,76],"wasl":[50,51,70,71]},
-"2": {"madd":[4,5,33,34],"wasl":[10,11,26,27]},
-"3": {"madd":[38,39],"wasl":[29,30]},
-"4": {"idgham":[7,12],"madd":[21,22]},
-"5": {"ghunnah":[17,21],"madd":[36,37]},
-"6": {"madd":[19,21,23,24]},
-"7": {"madd":[22,23],"wasl":[14,15]}
+"1": {"lam_shamsiyyah":[71,72],"madd_246":[75,76],"hamzat_wasl":[50,51,70,71]},
+"2": {"madd_2":[4,5],"madd_246":[33,34],"hamzat_wasl":[10,11,26,27]},
+"3": {"madd_246":[38,39],"hamzat_wasl":[29,30]},
+"4": {"idghaam_no_ghunnah":[7,12],"madd_246":[21,22]},
+"5": {"ikhfa":[17,21],"madd_246":[36,37]},
+"6": {"madd_246":[23,24],"madd_muttasil":[19,21]},
+"7": {"madd_246":[22,23],"hamzat_wasl":[14,15]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/108.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/108.json
index c5335fd..222e1a0 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/108.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/108.json
@@ -1,5 +1,5 @@
{
-"1": {"ghunnah":[41,44],"madd":[44,46,57,58],"wasl":[61,62]},
-"2": {"wasl":[20,21]},
-"3": {"ghunnah":[2,5],"qalqalah":[26,28],"wasl":[21,22]}
+"1": {"ghunnah":[41,44],"madd_2":[57,58],"madd_munfasil":[44,46],"hamzat_wasl":[61,62]},
+"2": {"hamzat_wasl":[20,21]},
+"3": {"ghunnah":[2,5],"qalqalah":[26,28],"hamzat_wasl":[21,22]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/109.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/109.json
index 679a498..be7e827 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/109.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/109.json
@@ -1,8 +1,8 @@
{
-"1": {"madd":[46,48,62,63,67,68],"wasl":[57,58]},
-"2": {"madd":[2,4,26,27]},
-"3": {"ghunnah":[9,12],"madd":[4,6,17,18,28,30],"qalqalah":[37,38]},
-"4": {"idgham":[20,25,31,32],"madd":[4,6]},
-"5": {"ghunnah":[9,12],"madd":[4,6,17,18,28,30],"qalqalah":[37,38]},
-"6": {"madd":[26,27]}
+"1": {"madd_2":[62,63],"madd_246":[67,68],"madd_munfasil":[46,48],"hamzat_wasl":[57,58]},
+"2": {"madd_246":[26,27],"madd_munfasil":[2,4]},
+"3": {"ikhfa":[9,12],"madd_2":[17,18],"madd_munfasil":[4,6,28,30],"qalqalah":[37,38]},
+"4": {"idghaam_ghunnah":[20,25],"idghaam_mutajanisayn":[31,32],"madd_munfasil":[4,6]},
+"5": {"ikhfa":[9,12],"madd_2":[17,18],"madd_munfasil":[4,6,28,30],"qalqalah":[37,38]},
+"6": {"madd_246":[26,27]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/11.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/11.json
index 68a6560..4dc0674 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/11.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/11.json
@@ -1,125 +1,125 @@
{
-"1": {"ghunnah":[77,80],"idgham":[93,98],"madd":[48,49,68,69,73,74,115,116],"madd-lazim":[40,42]},
-"2": {"ghunnah":[37,40],"idgham":[48,53,64,68],"madd":[15,17,72,73],"silent":[17,19],"wasl":[27,28]},
-"3": {"ghunnah":[34,37,108,111,137,141,153,157,171,174,209,213],"idgham":[68,73,101,106,110,115],"madd":[43,45,75,76,92,95,147,148,174,176,215,216],"silent":[19,21,45,47,164,166],"wasl":[7,8]},
-"4": {"ghunnah":[52,56],"madd":[58,59],"wasl":[6,7]},
-"5": {"ghunnah":[9,12,144,147,157,161],"idgham":[169,170],"madd":[4,6,149,150,175,176],"silent":[52,54],"wasl":[168,169]},
-"6": {"ghunnah":[8,12,18,22,113,117],"idgham":[125,130],"madd":[123,124,132,133],"madd-lazim":[12,14],"wasl":[24,25,47,48]},
-"7": {"ghunnah":[151,155,162,165,186,189,214,217],"idgham":[23,24,67,71,142,147,167,172,264,269],"madd":[29,30,32,33,85,86,98,100,234,236,246,247,249,251,271,272],"qalqalah":[107,109,172,174],"silent":[236,238],"wasl":[7,8,22,23,38,39,93,94,195,196,218,219]},
-"8": {"ghunnah":[50,53,79,82],"idgham":[54,59,67,72,164,169],"madd":[44,47,97,99,184,185,198,199],"silent":[177,179],"wasl":[29,30]},
-"9": {"ghunnah":[24,27,33,36,45,49,49,52,75,78,91,95],"madd":[27,28,61,62,80,81,97,98],"qalqalah":[13,15],"wasl":[19,20]},
-"10": {"ghunnah":[68,71,96,99,104,107,118,122],"idgham":[80,81],"madd":[17,18,27,29,44,46,99,101,109,110,124,125],"qalqalah":[13,15],"wasl":[79,80]},
-"11": {"ghunnah":[91,95],"idgham":[40,41,70,75,82,86],"madd":[44,45,49,50,59,61,97,98],"qalqalah":[88,90],"silent":[24,26,36,38,55,57],"wasl":[7,8,39,40]},
-"12": {"ghunnah":[18,22,59,63,103,106,120,123,153,156,163,166],"idgham":[79,83,173,177,203,207],"madd":[37,40,54,56,66,67,98,100,131,133,142,143,158,160,209,210],"qalqalah":[70,72],"silent":[89,91],"wasl":[177,178]},
-"13": {"ghunnah":[116,120,134,138,138,141],"idgham":[57,62,82,86,111,116],"madd":[24,25,68,69,80,81,146,147,151,152],"qalqalah":[87,89],"silent":[40,42,92,94],"wasl":[16,17,86,87,100,101,124,125]},
-"14": {"ghunnah":[48,51,58,61,122,125],"idgham":[85,90,125,130],"madd":[41,43,53,55,90,92,97,98,136,137],"silent":[22,24,43,45],"wasl":[34,35,73,74]},
-"15": {"ghunnah":[2,6],"idgham":[31,32],"madd":[26,27,79,80,120,121],"qalqalah":[114,116],"silent":[25,26],"wasl":[18,19,30,31]},
-"16": {"ghunnah":[63,66],"idgham":[62,63,108,113],"madd":[6,8,104,105,132,133],"silent":[2,4,90,92,121,123],"wasl":[13,14,41,42,61,62]},
-"17": {"ghunnah":[6,10,78,82,201,204,254,257,289,292,304,307],"idgham":[29,34,34,39,64,69,113,118,162,166,200,201,242,247,271,276,303,304],"madd":[44,45,88,89,94,95,103,106,133,135,156,157,177,178,218,219,286,287,323,324],"qalqalah":[82,84],"silent":[129,131],"wasl":[184,185,199,200,260,261,302,303]},
-"18": {"ghunnah":[18,21],"idgham":[201,202],"madd":[62,64,117,118,123,125,129,131,205,206,210,211],"silent":[58,60,151,153],"wasl":[24,25,40,41,108,109,134,135,186,187,200,201]},
-"19": {"ghunnah":[23,27,68,72],"idgham":[61,66],"madd":[92,93,97,98],"qalqalah":[45,47],"wasl":[33,34,72,73]},
-"20": {"ghunnah":[76,80],"idgham":[71,76,167,168],"madd":[6,8,105,107,114,115,199,200],"qalqalah":[193,195],"silent":[2,4,26,28,148,150,188,190],"wasl":[45,46,84,85,127,128,166,167]},
-"21": {"ghunnah":[36,39],"idgham":[60,65],"madd":[6,8,29,31,84,85],"silent":[2,4,31,33,73,75],"wasl":[13,14]},
-"22": {"ghunnah":[13,16],"madd":[54,55],"wasl":[25,26,43,44]},
-"23": {"ghunnah":[2,5,113,116],"idgham":[40,41],"madd":[44,45,49,50,63,65,91,93,104,105,133,134,138,139],"silent":[24,26,36,38,65,67,87,89],"wasl":[6,7,39,40,108,109]},
-"24": {"ghunnah":[45,48],"idgham":[65,66],"madd":[119,120],"wasl":[7,8,24,25,38,39,51,52,64,65]},
-"25": {"ghunnah":[48,51],"idgham":[66,71],"madd":[43,45,73,74],"qalqalah":[6,8]},
-"26": {"ghunnah":[39,42],"idgham":[2,7],"madd":[17,19,42,44,83,84],"silent":[19,21],"wasl":[29,30]},
-"27": {"ghunnah":[40,44,202,206,209,213,221,224],"idgham":[77,83,161,162],"madd":[50,51,61,62,102,103,231,232,236,237],"silent":[35,37],"wasl":[8,9,18,19,106,107,124,125,160,161]},
-"28": {"ghunnah":[31,35,35,38,99,102,110,113,152,155],"idgham":[54,59,59,64,89,94],"madd":[8,9,77,78,104,105,166,167,171,172]},
-"29": {"ghunnah":[130,133,166,169,188,193],"idgham":[135,140],"madd":[4,5,14,16,86,88,123,125,142,143,163,164,169,171,177,178,199,200],"qalqalah":[54,56,193,195],"silent":[125,127,146,148],"wasl":[74,75,106,107]},
-"30": {"ghunnah":[18,21,42,46],"idgham":[14,18,48,49],"madd":[4,5,74,75],"wasl":[32,33]},
-"31": {"ghunnah":[24,27,91,94,216,219,228,231],"idgham":[101,105,155,159,237,243,249,250],"madd":[4,6,33,35,52,54,78,80,107,109,137,139,211,213,231,233,253,254,258,259],"wasl":[40,41,64,65,170,171,186,187,248,249]},
-"32": {"ghunnah":[89,93,93,96],"idgham":[103,104],"madd":[11,12,25,26,53,54,84,86,107,108,112,113],"qalqalah":[20,22],"silent":[6,8],"wasl":[102,103]},
-"33": {"ghunnah":[8,11,24,28,41,45,59,62,62,66],"madd":[45,47,54,56,74,75],"wasl":[31,32]},
-"34": {"ghunnah":[8,11,48,51,63,67],"idgham":[36,37,89,93],"madd":[24,26,138,139],"wasl":[71,72]},
-"35": {"ghunnah":[95,98],"idgham":[90,95],"madd":[24,25,51,52,87,89,108,109],"qalqalah":[65,67,102,104],"wasl":[16,17,38,39]},
-"36": {"ghunnah":[25,28,47,51,67,71],"idgham":[34,38],"madd":[30,31,122,123],"qalqalah":[71,73,90,92],"silent":[111,113]},
-"37": {"ghunnah":[92,95],"idgham":[97,102],"madd":[56,57,85,87,108,109],"qalqalah":[59,61],"silent":[87,89],"wasl":[2,3,10,11,69,70]},
-"38": {"ghunnah":[57,61,94,98,110,113,119,122,135,138],"idgham":[52,57],"madd":[67,68,155,156],"silent":[76,78,105,107],"wasl":[11,12]},
-"39": {"idgham":[23,27,41,45,78,83],"madd":[85,86]},
-"40": {"ghunnah":[45,48,77,81,83,87,126,130],"idgham":[41,42],"madd":[5,8,17,19,173,175,190,192,204,205],"wasl":[40,41,60,61,96,97,144,145]},
-"41": {"ghunnah":[70,73],"idgham":[89,94],"madd":[48,49,62,63,65,67,96,97],"qalqalah":[43,45],"silent":[16,18],"wasl":[8,9,33,34]},
-"42": {"ghunnah":[31,35,110,113],"idgham":[90,94,108,109,129,134],"madd":[69,70,94,95,142,143,147,148],"qalqalah":[9,11,63,65],"wasl":[35,36,62,63,103,104,137,138]},
-"43": {"idgham":[29,33,115,120],"madd":[14,16,53,55,179,180],"wasl":[48,49,76,77,98,99,145,146,168,169]},
-"44": {"idgham":[141,147,157,158],"madd":[10,12,30,32,41,42,46,48,74,76,161,162,166,167],"qalqalah":[20,22,53,55],"wasl":[19,20,69,70,88,89,100,101,116,117,156,157]},
-"45": {"ghunnah":[42,45,70,73,96,99],"idgham":[14,19],"madd":[24,25,114,115,119,120],"qalqalah":[47,49],"wasl":[46,47,83,84,109,110]},
-"46": {"ghunnah":[17,20,47,50,74,78,125,128,142,146],"madd":[8,9,22,23,52,53,70,71,114,115,128,130,162,163,167,168],"wasl":[157,158]},
-"47": {"ghunnah":[14,17],"idgham":[76,80,119,124],"madd":[17,19,69,70,112,114,132,133,137,138],"wasl":[127,128]},
-"48": {"ghunnah":[36,39,82,85,102,106,122,125,140,143],"idgham":[31,36,77,82,85,90,135,140],"madd":[8,9,29,30,49,50,68,71,157,158],"qalqalah":[20,22],"wasl":[15,16]},
-"49": {"ghunnah":[15,17,59,62,78,81,99,103,127,130],"madd":[18,20,41,43,73,75,110,111,136,137,155,156],"qalqalah":[103,105],"wasl":[23,24,117,118,131,132]},
-"50": {"ghunnah":[29,34,109,112],"idgham":[75,80],"madd":[40,41,87,88,99,101,130,131],"silent":[56,58],"wasl":[48,49,59,60]},
-"51": {"madd":[2,3,12,14,89,91,108,109],"qalqalah":[40,42,53,55],"wasl":[73,74]},
-"52": {"ghunnah":[39,42],"idgham":[72,73,91,96,102,107],"madd":[4,5,48,50,78,80,173,174],"qalqalah":[96,98,111,113,167,169],"silent":[24,26,50,52,162,164],"wasl":[12,13,71,72]},
-"53": {"ghunnah":[84,88],"idgham":[42,46],"madd":[11,12,66,68,123,124],"silent":[6,8]},
-"54": {"ghunnah":[59,63,69,72,108,111,125,128],"idgham":[2,7,120,125],"madd":[28,29,56,58,72,74,101,103,117,119,138,139],"silent":[103,105],"wasl":[20,21,84,85,94,95]},
-"55": {"ghunnah":[2,6,31,36,36,39,46,49],"madd":[11,12,51,52]},
-"56": {"ghunnah":[2,5,58,62,88,92,109,112],"idgham":[49,54,133,138],"madd":[104,106,131,132,144,145],"madd-lazim":[62,64],"wasl":[25,26]},
-"57": {"ghunnah":[4,8,146,149],"idgham":[37,42],"madd":[42,44,60,62,133,134,181,182],"qalqalah":[22,24,27,29],"silent":[15,17]},
-"58": {"ghunnah":[4,7,89,92],"idgham":[41,46,84,89,108,113],"madd":[11,13,73,74,105,106,128,129],"silent":[64,66],"wasl":[46,47]},
-"59": {"ghunnah":[13,17],"madd":[33,34,66,67,78,80,109,110],"qalqalah":[110,111],"silent":[22,24,55,57,80,82],"wasl":[70,71]},
-"60": {"ghunnah":[77,80,85,90,129,133],"idgham":[27,28,44,48,119,125],"madd":[20,21,62,63,72,74,140,141],"qalqalah":[141,142],"silent":[11,13,95,97],"wasl":[26,27,55,56]},
-"61": {"ghunnah":[33,38,112,115,181,184,206,209],"idgham":[79,84,119,124,223,228],"madd":[29,30,44,45,91,92,103,104,190,192,230,231],"qalqalah":[231,232],"silent":[60,62,192,194],"wasl":[52,53,63,64,127,128,139,140,164,165]},
-"62": {"ghunnah":[27,30,46,51,123,126,145,148],"idgham":[81,86,140,145],"madd":[11,12,14,15,58,59,61,63,73,74,76,78,111,113,159,161,175,176],"qalqalah":[22,24,51,53,152,154,176,177],"silent":[6,8]},
-"63": {"ghunnah":[31,35,35,38,96,100,106,109],"idgham":[54,59,59,64,102,106],"madd":[8,9,77,78,143,144,178,179],"wasl":[120,121]},
-"64": {"ghunnah":[50,54,117,121,140,144],"madd":[4,5,14,15,19,20,74,76,114,116,146,147],"qalqalah":[147,148],"wasl":[29,30,84,85]},
-"65": {"ghunnah":[65,69],"madd":[52,53,69,70,95,96],"qalqalah":[96,97],"silent":[31,33]},
-"66": {"ghunnah":[4,7,91,94,123,126],"idgham":[43,48,86,91],"madd":[11,13,39,40,75,76,158,159],"silent":[66,68],"wasl":[48,49,140,141,151,152]},
-"67": {"idgham":[30,31],"madd":[63,64,73,74,78,79],"silent":[26,28,52,54],"wasl":[9,10,29,30]},
-"68": {"ghunnah":[40,43],"idgham":[4,9,85,91],"madd":[28,30,35,37,95,96],"qalqalah":[96,97],"silent":[20,22,51,53,61,63]},
-"69": {"ghunnah":[71,76,86,90,103,107],"madd":[11,13,26,28,35,36,69,70,84,85,107,109,125,126],"qalqalah":[6,8,31,33,116,118],"silent":[62,64],"wasl":[44,45]},
-"70": {"ghunnah":[4,7,86,90,110,113],"madd":[13,15,113,115,126,128,145,146],"qalqalah":[146,147],"silent":[94,96]},
-"71": {"ghunnah":[24,28],"idgham":[69,73],"madd":[13,14,17,19,48,49,61,62,75,77,86,87,96,97],"qalqalah":[97,98],"wasl":[2,3]},
-"72": {"ghunnah":[76,79],"idgham":[47,51],"madd":[10,11,19,22,53,54,82,83,100,101],"qalqalah":[101,102]},
-"73": {"ghunnah":[106,109],"idgham":[119,124],"madd":[5,7,69,70,74,75,111,112,126,127],"qalqalah":[127,128],"silent":[7,9],"wasl":[36,37,53,54,94,95]},
-"74": {"ghunnah":[4,7],"idgham":[35,36],"madd":[27,28,48,50,73,74,95,96],"qalqalah":[23,25,96,97],"wasl":[34,35,57,58]},
-"75": {"ghunnah":[2,5],"idgham":[36,41],"madd":[12,13,34,35,43,44],"qalqalah":[8,10,44,45]},
-"76": {"ghunnah":[41,44,79,82],"madd":[2,4,10,11,33,34,36,38,46,47,55,57,119,120],"qalqalah":[6,8,50,52,120,121]},
-"77": {"ghunnah":[4,7,32,37],"idgham":[69,74],"madd":[11,13,37,39,82,83,98,99],"qalqalah":[99,100]},
-"78": {"ghunnah":[47,51,132,135,212,215],"idgham":[78,79,223,228],"madd":[4,6,10,11,20,21,100,101,110,112,116,118,198,200,230,231],"qalqalah":[51,53,138,140,231,232],"silent":[62,64,161,163],"wasl":[77,78,154,155,164,165]},
-"79": {"ghunnah":[64,67],"idgham":[58,62],"madd":[89,90],"qalqalah":[13,15,90,91],"silent":[6,8]},
-"80": {"ghunnah":[13,16,61,65],"madd":[46,48,67,68],"qalqalah":[68,69]},
-"81": {"ghunnah":[20,23,127,130,161,164,198,201],"idgham":[42,46,91,96,216,217,235,236],"madd":[11,12,50,52,166,167,181,183,250,251],"qalqalah":[88,90,220,222,239,241,251,252],"silent":[6,8,52,54],"wasl":[99,100,147,148,215,216,234,235]},
-"82": {"ghunnah":[4,7,95,99,109,112],"idgham":[90,95,104,109],"madd":[11,13,38,39,112,113],"qalqalah":[113,114]},
-"83": {"ghunnah":[15,18],"idgham":[44,45],"madd":[48,49,63,64],"qalqalah":[64,65],"wasl":[43,44]},
-"84": {"ghunnah":[35,40,115,118,153,156,167,171,182,185],"idgham":[81,86,176,180,220,225],"madd":[46,47,93,94,105,106,156,158,164,165,185,187,227,228],"qalqalah":[11,13,228,229],"silent":[62,64,121,123],"wasl":[54,55,65,66,124,125,139,140]},
-"85": {"ghunnah":[81,84],"idgham":[80,81],"madd":[4,5,94,96,142,143],"qalqalah":[69,71],"silent":[19,21,76,78,117,119],"wasl":[22,23,37,38,51,52,79,80,124,125]},
-"86": {"ghunnah":[35,39,39,42,79,83],"idgham":[23,28,42,47],"madd":[61,63,87,88],"wasl":[10,11]},
-"87": {"ghunnah":[140,143,150,153],"idgham":[47,52,93,98,166,167],"madd":[11,12,28,29,77,79,83,85,107,109,116,117,131,133,172,173],"qalqalah":[173,174],"silent":[6,8,27,28,135,137],"wasl":[154,155,165,166]},
-"88": {"ghunnah":[31,35,35,38],"idgham":[54,59,59,64,101,106],"madd":[8,9,108,110,147,149,157,158,199,200,234,236,290,291],"qalqalah":[291,292],"wasl":[190,191,207,208,246,247]},
-"89": {"ghunnah":[24,27,151,154,154,158],"idgham":[44,48,55,60,127,131,146,151],"madd":[4,5,39,41,67,69,123,124,162,163],"qalqalah":[18,20,163,164]},
-"90": {"ghunnah":[29,32,54,57],"idgham":[71,75],"madd":[38,40,77,78],"qalqalah":[78,79],"silent":[14,16,40,42],"wasl":[2,3]},
-"91": {"ghunnah":[46,49,63,66,137,140],"idgham":[40,46,92,97],"madd":[11,12,75,76,124,125,132,134,157,158],"silent":[6,8]},
-"92": {"ghunnah":[103,106],"idgham":[43,48],"madd":[8,9,24,26,81,83,136,137],"qalqalah":[137,138],"wasl":[51,52,61,62]},
-"93": {"ghunnah":[46,49,57,61,148,151],"idgham":[80,84,98,102,128,132],"madd":[4,5,53,54,124,125,141,143,166,167],"qalqalah":[167,168],"silent":[20,22,143,145],"wasl":[12,13,132,133]},
-"94": {"ghunnah":[4,7,92,95],"idgham":[44,49,87,92,129,130],"madd":[11,13,76,77,162,163,172,173,177,178],"silent":[67,69,125,127,151,153],"wasl":[49,50,108,109,128,129]},
-"95": {"idgham":[4,9,42,48],"madd":[28,30,76,77],"qalqalah":[50,52,77,78],"silent":[20,22]},
-"96": {"idgham":[54,59],"madd":[37,38,52,53,61,62],"qalqalah":[6,8]},
-"97": {"madd":[30,31,42,44,69,71,96,97],"qalqalah":[97,98],"silent":[26,28,44,46],"wasl":[34,35]},
-"98": {"ghunnah":[56,59],"idgham":[55,56],"madd":[17,18,33,34,91,92],"qalqalah":[2,4,92,93],"wasl":[26,27,54,55,72,73,82,83]},
-"99": {"idgham":[34,38,66,67],"madd":[20,21,25,26,52,53,84,85],"qalqalah":[85,86],"silent":[11,13],"wasl":[45,46,65,66,75,76]},
-"100": {"ghunnah":[16,18],"idgham":[69,73],"madd":[2,3,19,21,43,44,64,66,77,78],"qalqalah":[78,79],"wasl":[24,25]},
-"101": {"ghunnah":[27,31,42,45,111,115,129,133,141,144],"idgham":[136,141],"madd":[14,15,24,25,35,37,56,58,148,150,198,199],"qalqalah":[101,103,199,200],"silent":[37,39],"wasl":[91,92,119,120]},
-"102": {"ghunnah":[70,73,91,95],"madd":[6,7,31,33,60,61,82,84,97,98],"qalqalah":[98,99],"wasl":[41,42]},
-"103": {"ghunnah":[2,5,97,100],"idgham":[26,31,76,81,87,92,96,97,119,124],"madd":[12,13,65,66,108,109,128,129],"qalqalah":[81,83,129,130],"wasl":[50,51,95,96]},
-"104": {"idgham":[34,39],"madd":[17,19,43,44],"qalqalah":[44,45]},
-"105": {"idgham":[71,75],"madd":[52,53,79,80],"qalqalah":[80,81]},
-"106": {"ghunnah":[4,7,35,38],"idgham":[34,35,62,66],"madd":[70,71],"qalqalah":[71,72],"silent":[24,26],"wasl":[9,10,33,34]},
-"107": {"ghunnah":[84,87],"idgham":[31,32,103,108],"madd":[2,3,37,38,40,41,69,71,116,117],"qalqalah":[117,118],"wasl":[30,31,46,47]},
-"108": {"ghunnah":[4,7,40,43],"idgham":[77,78],"madd":[48,49,83,84,86,87,115,117,132,134,150,151],"qalqalah":[146,148],"silent":[26,28],"wasl":[9,10,35,36,76,77,92,93]},
-"109": {"ghunnah":[27,30,108,112,121,124,162,165],"idgham":[22,27,103,108],"madd":[43,45,49,51,97,99,165,166],"qalqalah":[112,114]},
-"110": {"ghunnah":[73,77,121,124],"idgham":[86,91,139,144],"madd":[34,35,153,154],"qalqalah":[6,8,154,155],"wasl":[27,28,40,41]},
-"111": {"ghunnah":[4,7,18,21,34,37,66,69],"idgham":[12,18],"madd":[56,57,71,72,95,96]},
-"112": {"ghunnah":[32,36,66,69],"madd":[16,18,71,72,95,96],"qalqalah":[55,57],"silent":[61,63],"wasl":[2,3]},
-"113": {"ghunnah":[61,64,83,87,119,122,129,132],"idgham":[60,61,78,83],"madd":[14,16,112,114,134,135],"silent":[16,18,42,44],"wasl":[25,26,59,60,91,92]},
-"114": {"ghunnah":[32,35,68,71],"idgham":[10,11,31,32,48,54,97,98,130,131],"madd":[17,18,81,82,113,114,134,135,139,140],"qalqalah":[91,93],"silent":[16,17],"wasl":[9,10,30,31,57,58,72,73,96,97]},
-"115": {"ghunnah":[14,17],"madd":[56,57],"qalqalah":[40,42],"wasl":[2,3,18,19,45,46]},
-"116": {"ghunnah":[34,38,127,130,135,138],"idgham":[65,69,121,127],"madd":[186,188,226,227],"qalqalah":[38,40,220,222],"silent":[49,51,54,56,181,183,198,200,215,217],"wasl":[21,22,83,84,98,99,155,156,164,165]},
-"117": {"idgham":[48,52],"madd":[70,71],"wasl":[31,32]},
-"118": {"ghunnah":[33,36,42,45],"idgham":[32,33,46,50,56,60],"madd":[9,11,50,51,85,86],"wasl":[31,32]},
-"119": {"ghunnah":[54,57,87,90,95,98,111,114,121,124],"idgham":[9,14,120,121],"madd":[33,34,136,137],"qalqalah":[130,132],"wasl":[106,107,119,120]},
-"120": {"ghunnah":[35,37],"idgham":[6,12,44,45,126,130],"madd":[38,40,71,72,87,89,100,101,151,152],"wasl":[43,44,106,107]},
-"121": {"ghunnah":[68,71],"madd":[75,76,80,81],"silent":[42,44],"wasl":[34,35]},
-"122": {"ghunnah":[3,6,17,20,24,27],"madd":[10,12,31,32],"silent":[12,14],"wasl":[2,3]},
-"123": {"ghunnah":[141,144],"idgham":[18,19],"madd":[24,25,27,28,80,81,133,134,154,155],"qalqalah":[89,91],"wasl":[17,18,33,34,63,64,84,85]}
+"1": {"ghunnah":[77,80],"idghaam_no_ghunnah":[93,98],"madd_2":[48,49,68,69,73,74],"madd_246":[115,116],"madd_6":[40,42]},
+"2": {"ghunnah":[37,40],"idghaam_ghunnah":[64,68],"idghaam_shafawi":[48,53],"madd_246":[72,73],"madd_munfasil":[15,17],"silent":[17,19],"hamzat_wasl":[27,28]},
+"3": {"ghunnah":[34,37,108,111,171,174],"ikhfa":[137,141,153,157,209,213],"idghaam_ghunnah":[101,106,110,115],"idghaam_shafawi":[68,73],"madd_2":[75,76,147,148],"madd_246":[215,216],"madd_munfasil":[43,45,92,95,174,176],"silent":[19,21,45,47,164,166],"hamzat_wasl":[7,8]},
+"4": {"ikhfa":[52,56],"madd_246":[58,59],"hamzat_wasl":[6,7]},
+"5": {"ghunnah":[9,12,144,147],"iqlab":[157,161],"lam_shamsiyyah":[169,170],"madd_2":[149,150],"madd_246":[175,176],"madd_munfasil":[4,6],"silent":[52,54],"hamzat_wasl":[168,169]},
+"6": {"ikhfa":[8,12,18,22,113,117],"idghaam_ghunnah":[125,130],"madd_2":[123,124],"madd_246":[132,133],"madd_6":[12,14],"hamzat_wasl":[24,25,47,48]},
+"7": {"ghunnah":[162,165,214,217],"ikhfa":[151,155],"iqlab":[186,189],"idghaam_ghunnah":[67,71,142,147,264,269],"idghaam_shafawi":[167,172],"lam_shamsiyyah":[23,24],"madd_2":[29,30,32,33,85,86,246,247],"madd_246":[271,272],"madd_munfasil":[234,236,249,251],"madd_muttasil":[98,100],"qalqalah":[107,109,172,174],"silent":[236,238],"hamzat_wasl":[7,8,22,23,38,39,93,94,195,196,218,219]},
+"8": {"ghunnah":[50,53,79,82],"idghaam_ghunnah":[54,59],"idghaam_no_ghunnah":[67,72],"idghaam_shafawi":[164,169],"madd_2":[184,185],"madd_246":[198,199],"madd_munfasil":[44,47,97,99],"silent":[177,179],"hamzat_wasl":[29,30]},
+"9": {"ghunnah":[33,36,49,52,75,78],"ikhfa":[24,27,45,49,91,95],"madd_2":[27,28,61,62,80,81],"madd_246":[97,98],"qalqalah":[13,15],"hamzat_wasl":[19,20]},
+"10": {"ghunnah":[68,71,96,99,104,107],"ikhfa":[118,122],"lam_shamsiyyah":[80,81],"madd_2":[17,18,109,110],"madd_246":[124,125],"madd_munfasil":[99,101],"madd_muttasil":[27,29,44,46],"qalqalah":[13,15],"hamzat_wasl":[79,80]},
+"11": {"ikhfa":[91,95],"idghaam_ghunnah":[82,86],"idghaam_shafawi":[70,75],"lam_shamsiyyah":[40,41],"madd_2":[44,45,49,50],"madd_246":[97,98],"madd_muttasil":[59,61],"qalqalah":[88,90],"silent":[24,26,36,38,55,57],"hamzat_wasl":[7,8,39,40]},
+"12": {"ghunnah":[153,156],"ikhfa":[103,106,120,123,163,166],"iqlab":[18,22,59,63],"idghaam_ghunnah":[79,83,173,177,203,207],"madd_2":[66,67,142,143],"madd_246":[209,210],"madd_munfasil":[37,40,98,100,158,160],"madd_muttasil":[54,56,131,133],"qalqalah":[70,72],"silent":[89,91],"hamzat_wasl":[177,178]},
+"13": {"ikhfa":[116,120,134,138,138,141],"idghaam_ghunnah":[57,62,82,86],"idghaam_shafawi":[111,116],"madd_2":[24,25,68,69,80,81,146,147],"madd_246":[151,152],"qalqalah":[87,89],"silent":[40,42,92,94],"hamzat_wasl":[16,17,86,87,100,101,124,125]},
+"14": {"ghunnah":[48,51],"ikhfa":[58,61,122,125],"idghaam_no_ghunnah":[85,90],"idghaam_shafawi":[125,130],"madd_2":[97,98],"madd_246":[136,137],"madd_munfasil":[41,43,53,55,90,92],"silent":[22,24,43,45],"hamzat_wasl":[34,35,73,74]},
+"15": {"ikhfa":[2,6],"lam_shamsiyyah":[31,32],"madd_2":[26,27,79,80],"madd_246":[120,121],"qalqalah":[114,116],"silent":[25,26],"hamzat_wasl":[18,19,30,31]},
+"16": {"ghunnah":[63,66],"idghaam_ghunnah":[108,113],"lam_shamsiyyah":[62,63],"madd_2":[104,105],"madd_246":[132,133],"madd_muttasil":[6,8],"silent":[2,4,90,92,121,123],"hamzat_wasl":[13,14,41,42,61,62]},
+"17": {"ghunnah":[201,204,254,257,289,292,304,307],"ikhfa":[6,10,78,82],"idghaam_ghunnah":[29,34,64,69,113,118,162,166,242,247],"idghaam_no_ghunnah":[34,39,271,276],"lam_shamsiyyah":[200,201,303,304],"madd_2":[44,45,88,89,94,95,156,157,177,178,218,219,286,287],"madd_246":[323,324],"madd_munfasil":[103,106],"madd_muttasil":[133,135],"qalqalah":[82,84],"silent":[129,131],"hamzat_wasl":[184,185,199,200,260,261,302,303]},
+"18": {"ghunnah":[18,21],"lam_shamsiyyah":[201,202],"madd_2":[117,118,205,206],"madd_246":[210,211],"madd_muttasil":[62,64,123,125,129,131],"silent":[58,60,151,153],"hamzat_wasl":[24,25,40,41,108,109,134,135,186,187,200,201]},
+"19": {"ikhfa":[23,27],"ikhfa_shafawi":[68,72],"idghaam_ghunnah":[61,66],"madd_2":[92,93],"madd_246":[97,98],"qalqalah":[45,47],"hamzat_wasl":[33,34,72,73]},
+"20": {"ikhfa":[76,80],"idghaam_shafawi":[71,76],"lam_shamsiyyah":[167,168],"madd_2":[114,115],"madd_246":[199,200],"madd_muttasil":[6,8,105,107],"qalqalah":[193,195],"silent":[2,4,26,28,148,150,188,190],"hamzat_wasl":[45,46,84,85,127,128,166,167]},
+"21": {"ikhfa":[36,39],"idghaam_shafawi":[60,65],"madd_246":[84,85],"madd_munfasil":[29,31],"madd_muttasil":[6,8],"silent":[2,4,31,33,73,75],"hamzat_wasl":[13,14]},
+"22": {"ghunnah":[13,16],"madd_246":[54,55],"hamzat_wasl":[25,26,43,44]},
+"23": {"ghunnah":[2,5,113,116],"lam_shamsiyyah":[40,41],"madd_2":[44,45,49,50,104,105,133,134],"madd_246":[138,139],"madd_munfasil":[63,65],"madd_muttasil":[91,93],"silent":[24,26,36,38,65,67,87,89],"hamzat_wasl":[6,7,39,40,108,109]},
+"24": {"ghunnah":[45,48],"lam_shamsiyyah":[65,66],"madd_246":[119,120],"hamzat_wasl":[7,8,24,25,38,39,51,52,64,65]},
+"25": {"ghunnah":[48,51],"idghaam_ghunnah":[66,71],"madd_246":[73,74],"madd_munfasil":[43,45],"qalqalah":[6,8]},
+"26": {"ghunnah":[39,42],"idghaam_no_ghunnah":[2,7],"madd_246":[83,84],"madd_munfasil":[17,19,42,44],"silent":[19,21],"hamzat_wasl":[29,30]},
+"27": {"ghunnah":[221,224],"ikhfa":[40,44,202,206],"iqlab":[209,213],"idghaam_ghunnah":[77,83],"lam_shamsiyyah":[161,162],"madd_2":[50,51,61,62,102,103,231,232],"madd_246":[236,237],"silent":[35,37],"hamzat_wasl":[8,9,18,19,106,107,124,125,160,161]},
+"28": {"ghunnah":[110,113],"ikhfa":[31,35,35,38,99,102,152,155],"idghaam_ghunnah":[54,59,89,94],"idghaam_no_ghunnah":[59,64],"madd_2":[8,9,77,78,104,105,166,167],"madd_246":[171,172]},
+"29": {"ghunnah":[130,133,166,169],"ikhfa":[188,193],"idghaam_shafawi":[135,140],"madd_2":[4,5,142,143,163,164,177,178],"madd_246":[199,200],"madd_munfasil":[14,16,86,88,123,125,169,171],"qalqalah":[54,56,193,195],"silent":[125,127,146,148],"hamzat_wasl":[74,75,106,107]},
+"30": {"ikhfa":[18,21,42,46],"idghaam_ghunnah":[14,18],"idghaam_mutajanisayn":[48,49],"madd_2":[4,5],"madd_246":[74,75],"hamzat_wasl":[32,33]},
+"31": {"ghunnah":[91,94,228,231],"ikhfa":[24,27,216,219],"idghaam_ghunnah":[101,105,155,159],"idghaam_no_ghunnah":[237,243],"lam_shamsiyyah":[249,250],"madd_2":[253,254],"madd_246":[258,259],"madd_munfasil":[4,6,52,54,78,80,107,109,137,139,211,213,231,233],"madd_muttasil":[33,35],"hamzat_wasl":[40,41,64,65,170,171,186,187,248,249]},
+"32": {"ikhfa":[89,93,93,96],"lam_shamsiyyah":[103,104],"madd_2":[11,12,25,26,53,54,107,108],"madd_246":[112,113],"madd_munfasil":[84,86],"qalqalah":[20,22],"silent":[6,8],"hamzat_wasl":[102,103]},
+"33": {"ghunnah":[8,11],"ikhfa":[41,45,59,62],"ikhfa_shafawi":[24,28,62,66],"madd_246":[74,75],"madd_munfasil":[54,56],"madd_muttasil":[45,47],"hamzat_wasl":[31,32]},
+"34": {"ikhfa":[8,11,48,51,63,67],"idghaam_ghunnah":[89,93],"idghaam_mutajanisayn":[36,37],"madd_246":[138,139],"madd_munfasil":[24,26],"hamzat_wasl":[71,72]},
+"35": {"ghunnah":[95,98],"idghaam_ghunnah":[90,95],"madd_2":[24,25,51,52],"madd_246":[108,109],"madd_muttasil":[87,89],"qalqalah":[65,67,102,104],"hamzat_wasl":[16,17,38,39]},
+"36": {"ghunnah":[25,28],"ikhfa":[47,51,67,71],"idghaam_ghunnah":[34,38],"madd_2":[30,31],"madd_246":[122,123],"qalqalah":[71,73,90,92],"silent":[111,113]},
+"37": {"ghunnah":[92,95],"idghaam_shafawi":[97,102],"madd_2":[56,57],"madd_246":[108,109],"madd_munfasil":[85,87],"qalqalah":[59,61],"silent":[87,89],"hamzat_wasl":[2,3,10,11,69,70]},
+"38": {"ghunnah":[110,113,119,122],"ikhfa":[57,61,94,98,135,138],"idghaam_ghunnah":[52,57],"madd_2":[67,68],"madd_246":[155,156],"silent":[76,78,105,107],"hamzat_wasl":[11,12]},
+"39": {"idghaam_ghunnah":[23,27,41,45,78,83],"madd_246":[85,86]},
+"40": {"ghunnah":[45,48],"ikhfa":[77,81,83,87,126,130],"lam_shamsiyyah":[41,42],"madd_246":[204,205],"madd_munfasil":[5,8,173,175,190,192],"madd_muttasil":[17,19],"hamzat_wasl":[40,41,60,61,96,97,144,145]},
+"41": {"ghunnah":[70,73],"idghaam_no_ghunnah":[89,94],"madd_2":[48,49,62,63],"madd_246":[96,97],"madd_munfasil":[65,67],"qalqalah":[43,45],"silent":[16,18],"hamzat_wasl":[8,9,33,34]},
+"42": {"ghunnah":[110,113],"ikhfa":[31,35],"idghaam_ghunnah":[90,94,129,134],"idghaam_mutajanisayn":[108,109],"madd_2":[69,70,94,95,142,143],"madd_246":[147,148],"qalqalah":[9,11,63,65],"hamzat_wasl":[35,36,62,63,103,104,137,138]},
+"43": {"idghaam_ghunnah":[29,33],"idghaam_no_ghunnah":[115,120],"madd_246":[179,180],"madd_munfasil":[14,16],"madd_muttasil":[53,55],"hamzat_wasl":[48,49,76,77,98,99,145,146,168,169]},
+"44": {"idghaam_no_ghunnah":[141,147],"lam_shamsiyyah":[157,158],"madd_2":[41,42,161,162],"madd_246":[166,167],"madd_munfasil":[10,12],"madd_muttasil":[30,32,46,48,74,76],"qalqalah":[20,22,53,55],"hamzat_wasl":[19,20,69,70,88,89,100,101,116,117,156,157]},
+"45": {"ghunnah":[42,45,70,73],"ikhfa":[96,99],"idghaam_no_ghunnah":[14,19],"madd_2":[24,25,114,115],"madd_246":[119,120],"qalqalah":[47,49],"hamzat_wasl":[46,47,83,84,109,110]},
+"46": {"ghunnah":[17,20,47,50,125,128],"ikhfa":[74,78,142,146],"madd_2":[8,9,22,23,52,53,70,71,114,115,162,163],"madd_246":[167,168],"madd_munfasil":[128,130],"hamzat_wasl":[157,158]},
+"47": {"ghunnah":[14,17],"idghaam_ghunnah":[76,80,119,124],"madd_2":[69,70,132,133],"madd_246":[137,138],"madd_munfasil":[17,19,112,114],"hamzat_wasl":[127,128]},
+"48": {"ghunnah":[36,39,82,85,122,125,140,143],"ikhfa":[102,106],"idghaam_ghunnah":[31,36,77,82,85,90],"idghaam_shafawi":[135,140],"madd_2":[8,9,29,30,49,50],"madd_246":[157,158],"madd_munfasil":[68,71],"qalqalah":[20,22],"hamzat_wasl":[15,16]},
+"49": {"ghunnah":[127,130],"ikhfa":[59,62,78,81,99,103],"iqlab":[15,17],"madd_2":[110,111,136,137],"madd_246":[155,156],"madd_munfasil":[41,43,73,75],"madd_muttasil":[18,20],"qalqalah":[103,105],"hamzat_wasl":[23,24,117,118,131,132]},
+"50": {"ikhfa":[29,34,109,112],"idghaam_shafawi":[75,80],"madd_2":[40,41,87,88],"madd_246":[130,131],"madd_munfasil":[99,101],"silent":[56,58],"hamzat_wasl":[48,49,59,60]},
+"51": {"madd_2":[2,3],"madd_246":[108,109],"madd_munfasil":[12,14,89,91],"qalqalah":[40,42,53,55],"hamzat_wasl":[73,74]},
+"52": {"ghunnah":[39,42],"idghaam_ghunnah":[102,107],"idghaam_shafawi":[91,96],"lam_shamsiyyah":[72,73],"madd_2":[4,5],"madd_246":[173,174],"madd_munfasil":[48,50],"madd_muttasil":[78,80],"qalqalah":[96,98,111,113,167,169],"silent":[24,26,50,52,162,164],"hamzat_wasl":[12,13,71,72]},
+"53": {"ikhfa":[84,88],"idghaam_ghunnah":[42,46],"madd_2":[11,12],"madd_246":[123,124],"madd_munfasil":[66,68],"silent":[6,8]},
+"54": {"ghunnah":[69,72,108,111,125,128],"ikhfa":[59,63],"idghaam_ghunnah":[2,7,120,125],"madd_2":[28,29],"madd_246":[138,139],"madd_munfasil":[72,74,101,103],"madd_muttasil":[56,58,117,119],"silent":[103,105],"hamzat_wasl":[20,21,84,85,94,95]},
+"55": {"ghunnah":[36,39],"ikhfa":[2,6,31,36,46,49],"madd_2":[11,12],"madd_246":[51,52]},
+"56": {"ghunnah":[2,5,109,112],"ikhfa":[58,62],"iqlab":[88,92],"idghaam_ghunnah":[133,138],"idghaam_shafawi":[49,54],"madd_2":[131,132],"madd_246":[144,145],"madd_munfasil":[104,106],"madd_6":[62,64],"hamzat_wasl":[25,26]},
+"57": {"ghunnah":[146,149],"ikhfa":[4,8],"idghaam_shafawi":[37,42],"madd_2":[133,134],"madd_246":[181,182],"madd_munfasil":[42,44,60,62],"qalqalah":[22,24,27,29],"silent":[15,17]},
+"58": {"ghunnah":[4,7,89,92],"idghaam_ghunnah":[41,46,84,89],"idghaam_shafawi":[108,113],"madd_2":[73,74,105,106],"madd_246":[128,129],"madd_muttasil":[11,13],"silent":[64,66],"hamzat_wasl":[46,47]},
+"59": {"ikhfa":[13,17],"madd_2":[33,34,66,67],"madd_246":[109,110],"madd_munfasil":[78,80],"qalqalah":[110,111],"silent":[22,24,55,57,80,82],"hamzat_wasl":[70,71]},
+"60": {"ghunnah":[77,80],"ikhfa":[85,90,129,133],"idghaam_ghunnah":[44,48],"idghaam_no_ghunnah":[119,125],"lam_shamsiyyah":[27,28],"madd_2":[20,21,62,63],"madd_246":[140,141],"madd_munfasil":[72,74],"qalqalah":[141,142],"silent":[11,13,95,97],"hamzat_wasl":[26,27,55,56]},
+"61": {"ghunnah":[181,184,206,209],"ikhfa":[33,38,112,115],"idghaam_ghunnah":[223,228],"idghaam_shafawi":[79,84,119,124],"madd_2":[29,30,44,45,91,92,103,104],"madd_246":[230,231],"madd_munfasil":[190,192],"qalqalah":[231,232],"silent":[60,62,192,194],"hamzat_wasl":[52,53,63,64,127,128,139,140,164,165]},
+"62": {"ghunnah":[123,126,145,148],"ikhfa":[27,30,46,51],"idghaam_ghunnah":[81,86,140,145],"madd_2":[11,12,14,15,58,59,73,74],"madd_246":[175,176],"madd_munfasil":[61,63,76,78,159,161],"madd_muttasil":[111,113],"qalqalah":[22,24,51,53,152,154,176,177],"silent":[6,8]},
+"63": {"ikhfa":[31,35,35,38,96,100,106,109],"idghaam_ghunnah":[54,59,102,106],"idghaam_no_ghunnah":[59,64],"madd_2":[8,9,77,78,143,144],"madd_246":[178,179],"hamzat_wasl":[120,121]},
+"64": {"ikhfa":[50,54,117,121,140,144],"madd_2":[4,5,14,15,19,20],"madd_246":[146,147],"madd_munfasil":[74,76],"madd_muttasil":[114,116],"qalqalah":[147,148],"hamzat_wasl":[29,30,84,85]},
+"65": {"ikhfa":[65,69],"madd_2":[52,53,69,70],"madd_246":[95,96],"qalqalah":[96,97],"silent":[31,33]},
+"66": {"ghunnah":[4,7,91,94,123,126],"idghaam_ghunnah":[43,48,86,91],"madd_2":[39,40,75,76],"madd_246":[158,159],"madd_muttasil":[11,13],"silent":[66,68],"hamzat_wasl":[48,49,140,141,151,152]},
+"67": {"lam_shamsiyyah":[30,31],"madd_2":[63,64,73,74],"madd_246":[78,79],"silent":[26,28,52,54],"hamzat_wasl":[9,10,29,30]},
+"68": {"ghunnah":[40,43],"idghaam_no_ghunnah":[4,9,85,91],"madd_246":[95,96],"madd_munfasil":[28,30,35,37],"qalqalah":[96,97],"silent":[20,22,51,53,61,63]},
+"69": {"ikhfa":[71,76,86,90,103,107],"madd_2":[35,36,69,70,84,85],"madd_246":[125,126],"madd_munfasil":[26,28],"madd_muttasil":[11,13,107,109],"qalqalah":[6,8,31,33,116,118],"silent":[62,64],"hamzat_wasl":[44,45]},
+"70": {"ghunnah":[4,7,110,113],"ikhfa":[86,90],"madd_246":[145,146],"madd_munfasil":[13,15,113,115,126,128],"qalqalah":[146,147],"silent":[94,96]},
+"71": {"ikhfa":[24,28],"idghaam_ghunnah":[69,73],"madd_2":[13,14,48,49,61,62,86,87],"madd_246":[96,97],"madd_muttasil":[17,19,75,77],"qalqalah":[97,98],"hamzat_wasl":[2,3]},
+"72": {"ghunnah":[76,79],"idghaam_ghunnah":[47,51],"madd_2":[10,11,53,54,82,83],"madd_246":[100,101],"madd_munfasil":[19,22],"qalqalah":[101,102]},
+"73": {"ghunnah":[106,109],"idghaam_ghunnah":[119,124],"madd_2":[69,70,74,75,111,112],"madd_246":[126,127],"madd_munfasil":[5,7],"qalqalah":[127,128],"silent":[7,9],"hamzat_wasl":[36,37,53,54,94,95]},
+"74": {"ghunnah":[4,7],"lam_shamsiyyah":[35,36],"madd_2":[27,28,73,74],"madd_246":[95,96],"madd_muttasil":[48,50],"qalqalah":[23,25,96,97],"hamzat_wasl":[34,35,57,58]},
+"75": {"ghunnah":[2,5],"idghaam_ghunnah":[36,41],"madd_2":[12,13,34,35],"madd_246":[43,44],"qalqalah":[8,10,44,45]},
+"76": {"ghunnah":[41,44,79,82],"madd_2":[10,11,33,34,46,47],"madd_246":[119,120],"madd_munfasil":[2,4,36,38],"madd_muttasil":[55,57],"qalqalah":[6,8,50,52,120,121]},
+"77": {"ghunnah":[4,7],"ikhfa":[32,37],"idghaam_ghunnah":[69,74],"madd_2":[82,83],"madd_246":[98,99],"madd_muttasil":[11,13,37,39],"qalqalah":[99,100]},
+"78": {"ghunnah":[132,135],"ikhfa":[47,51,212,215],"idghaam_no_ghunnah":[223,228],"lam_shamsiyyah":[78,79],"madd_2":[10,11,20,21,100,101],"madd_246":[230,231],"madd_munfasil":[198,200],"madd_muttasil":[4,6,110,112,116,118],"qalqalah":[51,53,138,140,231,232],"silent":[62,64,161,163],"hamzat_wasl":[77,78,154,155,164,165]},
+"79": {"ghunnah":[64,67],"idghaam_ghunnah":[58,62],"madd_246":[89,90],"qalqalah":[13,15,90,91],"silent":[6,8]},
+"80": {"ghunnah":[13,16],"ikhfa":[61,65],"madd_246":[67,68],"madd_munfasil":[46,48],"qalqalah":[68,69]},
+"81": {"ghunnah":[20,23,161,164,198,201],"ikhfa":[127,130],"idghaam_ghunnah":[42,46,91,96],"lam_shamsiyyah":[216,217,235,236],"madd_2":[11,12,166,167],"madd_246":[250,251],"madd_munfasil":[50,52,181,183],"qalqalah":[88,90,220,222,239,241,251,252],"silent":[6,8,52,54],"hamzat_wasl":[99,100,147,148,215,216,234,235]},
+"82": {"ghunnah":[4,7],"ikhfa":[95,99,109,112],"idghaam_ghunnah":[90,95,104,109],"madd_2":[38,39],"madd_246":[112,113],"madd_muttasil":[11,13],"qalqalah":[113,114]},
+"83": {"ikhfa":[15,18],"lam_shamsiyyah":[44,45],"madd_2":[48,49],"madd_246":[63,64],"qalqalah":[64,65],"hamzat_wasl":[43,44]},
+"84": {"ghunnah":[153,156,182,185],"ikhfa":[35,40,115,118],"ikhfa_shafawi":[167,171],"idghaam_ghunnah":[176,180,220,225],"idghaam_shafawi":[81,86],"madd_2":[46,47,93,94,105,106,164,165],"madd_246":[227,228],"madd_munfasil":[156,158,185,187],"qalqalah":[11,13,228,229],"silent":[62,64,121,123],"hamzat_wasl":[54,55,65,66,124,125,139,140]},
+"85": {"ghunnah":[81,84],"lam_shamsiyyah":[80,81],"madd_2":[4,5],"madd_246":[142,143],"madd_muttasil":[94,96],"qalqalah":[69,71],"silent":[19,21,76,78,117,119],"hamzat_wasl":[22,23,37,38,51,52,79,80,124,125]},
+"86": {"ikhfa":[35,39,39,42],"ikhfa_shafawi":[79,83],"idghaam_no_ghunnah":[23,28],"idghaam_shafawi":[42,47],"madd_246":[87,88],"madd_munfasil":[61,63],"hamzat_wasl":[10,11]},
+"87": {"ghunnah":[140,143],"ikhfa":[150,153],"idghaam_ghunnah":[47,52,93,98],"lam_shamsiyyah":[166,167],"madd_2":[11,12,28,29,116,117],"madd_246":[172,173],"madd_munfasil":[83,85,107,109],"madd_muttasil":[77,79,131,133],"qalqalah":[173,174],"silent":[6,8,27,28,135,137],"hamzat_wasl":[154,155,165,166]},
+"88": {"ikhfa":[31,35,35,38],"idghaam_ghunnah":[54,59,101,106],"idghaam_no_ghunnah":[59,64],"madd_2":[8,9,157,158,199,200],"madd_246":[290,291],"madd_munfasil":[108,110,147,149,234,236],"qalqalah":[291,292],"hamzat_wasl":[190,191,207,208,246,247]},
+"89": {"ghunnah":[24,27],"ikhfa":[151,154],"ikhfa_shafawi":[154,158],"idghaam_ghunnah":[44,48,127,131,146,151],"idghaam_shafawi":[55,60],"madd_2":[4,5,123,124],"madd_246":[162,163],"madd_munfasil":[39,41,67,69],"qalqalah":[18,20,163,164]},
+"90": {"ghunnah":[29,32,54,57],"idghaam_ghunnah":[71,75],"madd_246":[77,78],"madd_munfasil":[38,40],"qalqalah":[78,79],"silent":[14,16,40,42],"hamzat_wasl":[2,3]},
+"91": {"ghunnah":[46,49,63,66],"ikhfa":[137,140],"idghaam_ghunnah":[40,46,92,97],"madd_2":[11,12,75,76,124,125],"madd_246":[157,158],"madd_munfasil":[132,134],"silent":[6,8]},
+"92": {"ghunnah":[103,106],"idghaam_shafawi":[43,48],"madd_2":[8,9],"madd_246":[136,137],"madd_munfasil":[24,26],"madd_muttasil":[81,83],"qalqalah":[137,138],"hamzat_wasl":[51,52,61,62]},
+"93": {"ghunnah":[46,49,148,151],"ikhfa":[57,61],"idghaam_ghunnah":[80,84,98,102,128,132],"madd_2":[4,5,53,54,124,125],"madd_246":[166,167],"madd_munfasil":[141,143],"qalqalah":[167,168],"silent":[20,22,143,145],"hamzat_wasl":[12,13,132,133]},
+"94": {"ghunnah":[4,7,92,95],"idghaam_ghunnah":[44,49,87,92],"lam_shamsiyyah":[129,130],"madd_2":[76,77,162,163,172,173],"madd_246":[177,178],"madd_muttasil":[11,13],"silent":[67,69,125,127,151,153],"hamzat_wasl":[49,50,108,109,128,129]},
+"95": {"idghaam_no_ghunnah":[4,9,42,48],"madd_246":[76,77],"madd_munfasil":[28,30],"qalqalah":[50,52,77,78],"silent":[20,22]},
+"96": {"idghaam_ghunnah":[54,59],"madd_2":[37,38,52,53],"madd_246":[61,62],"qalqalah":[6,8]},
+"97": {"madd_2":[30,31],"madd_246":[96,97],"madd_munfasil":[42,44,69,71],"qalqalah":[97,98],"silent":[26,28,44,46],"hamzat_wasl":[34,35]},
+"98": {"ghunnah":[56,59],"lam_shamsiyyah":[55,56],"madd_2":[17,18,33,34],"madd_246":[91,92],"qalqalah":[2,4,92,93],"hamzat_wasl":[26,27,54,55,72,73,82,83]},
+"99": {"idghaam_ghunnah":[34,38],"lam_shamsiyyah":[66,67],"madd_2":[20,21,25,26,52,53],"madd_246":[84,85],"qalqalah":[85,86],"silent":[11,13],"hamzat_wasl":[45,46,65,66,75,76]},
+"100": {"iqlab":[16,18],"idghaam_ghunnah":[69,73],"madd_2":[2,3,43,44],"madd_246":[77,78],"madd_muttasil":[19,21,64,66],"qalqalah":[78,79],"hamzat_wasl":[24,25]},
+"101": {"ghunnah":[141,144],"ikhfa":[27,31,42,45,111,115,129,133],"idghaam_no_ghunnah":[136,141],"madd_2":[14,15,24,25],"madd_246":[198,199],"madd_munfasil":[35,37,56,58],"madd_muttasil":[148,150],"qalqalah":[101,103,199,200],"silent":[37,39],"hamzat_wasl":[91,92,119,120]},
+"102": {"ghunnah":[70,73],"ikhfa":[91,95],"madd_2":[6,7,60,61],"madd_246":[97,98],"madd_munfasil":[31,33,82,84],"qalqalah":[98,99],"hamzat_wasl":[41,42]},
+"103": {"ghunnah":[2,5,97,100],"idghaam_ghunnah":[76,81,119,124],"idghaam_no_ghunnah":[26,31,87,92],"lam_shamsiyyah":[96,97],"madd_2":[12,13,65,66,108,109],"madd_246":[128,129],"qalqalah":[81,83,129,130],"hamzat_wasl":[50,51,95,96]},
+"104": {"idghaam_ghunnah":[34,39],"madd_246":[43,44],"madd_munfasil":[17,19],"qalqalah":[44,45]},
+"105": {"idghaam_ghunnah":[71,75],"madd_2":[52,53],"madd_246":[79,80],"qalqalah":[80,81]},
+"106": {"ghunnah":[4,7,35,38],"idghaam_ghunnah":[62,66],"lam_shamsiyyah":[34,35],"madd_246":[70,71],"qalqalah":[71,72],"silent":[24,26],"hamzat_wasl":[9,10,33,34]},
+"107": {"ghunnah":[84,87],"idghaam_no_ghunnah":[103,108],"lam_shamsiyyah":[31,32],"madd_2":[2,3,37,38,40,41],"madd_246":[116,117],"madd_muttasil":[69,71],"qalqalah":[117,118],"hamzat_wasl":[30,31,46,47]},
+"108": {"ghunnah":[4,7,40,43],"lam_shamsiyyah":[77,78],"madd_2":[48,49,83,84,86,87],"madd_246":[150,151],"madd_muttasil":[115,117,132,134],"qalqalah":[146,148],"silent":[26,28],"hamzat_wasl":[9,10,35,36,76,77,92,93]},
+"109": {"ghunnah":[27,30,121,124],"ikhfa":[108,112,162,165],"idghaam_ghunnah":[22,27],"idghaam_shafawi":[103,108],"madd_246":[165,166],"madd_muttasil":[43,45,49,51,97,99],"qalqalah":[112,114]},
+"110": {"ghunnah":[121,124],"ikhfa":[73,77],"idghaam_ghunnah":[139,144],"idghaam_no_ghunnah":[86,91],"madd_2":[34,35],"madd_246":[153,154],"qalqalah":[6,8,154,155],"hamzat_wasl":[27,28,40,41]},
+"111": {"ghunnah":[4,7,18,21,34,37,66,69],"idghaam_no_ghunnah":[12,18],"madd_2":[56,57,71,72],"madd_246":[95,96]},
+"112": {"ghunnah":[66,69],"ikhfa":[32,36],"madd_2":[71,72],"madd_246":[95,96],"madd_munfasil":[16,18],"qalqalah":[55,57],"silent":[61,63],"hamzat_wasl":[2,3]},
+"113": {"ghunnah":[61,64,119,122],"ikhfa":[83,87,129,132],"idghaam_shafawi":[78,83],"lam_shamsiyyah":[60,61],"madd_246":[134,135],"madd_munfasil":[14,16],"madd_muttasil":[112,114],"silent":[16,18,42,44],"hamzat_wasl":[25,26,59,60,91,92]},
+"114": {"ghunnah":[32,35,68,71],"idghaam_ghunnah":[48,54],"lam_shamsiyyah":[10,11,31,32,97,98,130,131],"madd_2":[17,18,81,82,113,114,134,135],"madd_246":[139,140],"qalqalah":[91,93],"silent":[16,17],"hamzat_wasl":[9,10,30,31,57,58,72,73,96,97]},
+"115": {"ghunnah":[14,17],"madd_246":[56,57],"qalqalah":[40,42],"hamzat_wasl":[2,3,18,19,45,46]},
+"116": {"ghunnah":[127,130],"ikhfa":[34,38,135,138],"idghaam_ghunnah":[65,69,121,127],"madd_246":[226,227],"madd_munfasil":[186,188],"qalqalah":[38,40,220,222],"silent":[49,51,54,56,181,183,198,200,215,217],"hamzat_wasl":[21,22,83,84,98,99,155,156,164,165]},
+"117": {"idghaam_ghunnah":[48,52],"madd_246":[70,71],"hamzat_wasl":[31,32]},
+"118": {"ghunnah":[33,36,42,45],"idghaam_ghunnah":[46,50,56,60],"lam_shamsiyyah":[32,33],"madd_2":[50,51],"madd_246":[85,86],"madd_muttasil":[9,11],"hamzat_wasl":[31,32]},
+"119": {"ghunnah":[54,57,87,90,95,98,111,114,121,124],"idghaam_no_ghunnah":[9,14],"lam_shamsiyyah":[120,121],"madd_2":[33,34],"madd_246":[136,137],"qalqalah":[130,132],"hamzat_wasl":[106,107,119,120]},
+"120": {"iqlab":[35,37],"idghaam_ghunnah":[6,12,126,130],"lam_shamsiyyah":[44,45],"madd_2":[71,72,100,101],"madd_246":[151,152],"madd_muttasil":[38,40,87,89],"hamzat_wasl":[43,44,106,107]},
+"121": {"ghunnah":[68,71],"madd_2":[75,76],"madd_246":[80,81],"silent":[42,44],"hamzat_wasl":[34,35]},
+"122": {"ghunnah":[17,20],"ikhfa":[3,6,24,27],"madd_246":[31,32],"madd_munfasil":[10,12],"silent":[12,14],"hamzat_wasl":[2,3]},
+"123": {"ghunnah":[141,144],"lam_shamsiyyah":[18,19],"madd_2":[24,25,27,28,80,81,133,134],"madd_246":[154,155],"qalqalah":[89,91],"hamzat_wasl":[17,18,33,34,63,64,84,85]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/110.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/110.json
index 1150846..441b619 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/110.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/110.json
@@ -1,5 +1,5 @@
{
-"1": {"madd":[47,49],"wasl":[59,60,69,70]},
-"2": {"ghunnah":[13,16],"idgham":[12,13],"qalqalah":[22,24],"wasl":[11,12,42,43]},
-"3": {"ghunnah":[45,48],"madd":[50,51],"wasl":[29,30]}
+"1": {"madd_muttasil":[47,49],"hamzat_wasl":[59,60,69,70]},
+"2": {"ghunnah":[13,16],"lam_shamsiyyah":[12,13],"qalqalah":[22,24],"hamzat_wasl":[11,12,42,43]},
+"3": {"ghunnah":[45,48],"madd_2":[50,51],"hamzat_wasl":[29,30]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/111.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/111.json
index 7f6ec48..b6f7af9 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/111.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/111.json
@@ -1,7 +1,7 @@
{
-"1": {"idgham":[65,69],"madd":[51,53],"qalqalah":[71,72]},
-"2": {"madd":[2,4,28,29],"qalqalah":[40,41]},
-"3": {"ghunnah":[15,20],"qalqalah":[28,29]},
-"4": {"ghunnah":[17,20],"madd":[13,14],"qalqalah":[33,34],"wasl":[2,3,26,27]},
-"5": {"idgham":[18,23,23,28],"qalqalah":[15,17,30,31]}
+"1": {"idghaam_ghunnah":[65,69],"madd_munfasil":[51,53],"qalqalah":[71,72]},
+"2": {"madd_2":[28,29],"madd_munfasil":[2,4],"qalqalah":[40,41]},
+"3": {"ikhfa":[15,20],"qalqalah":[28,29]},
+"4": {"ghunnah":[17,20],"madd_2":[13,14],"qalqalah":[33,34],"hamzat_wasl":[2,3,26,27]},
+"5": {"idghaam_ghunnah":[18,23,23,28],"qalqalah":[15,17,30,31]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/112.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/112.json
index 32f5a59..7925415 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/112.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/112.json
@@ -1,6 +1,6 @@
{
-"1": {"qalqalah":[61,62],"wasl":[49,50]},
-"2": {"idgham":[9,10],"qalqalah":[15,16],"wasl":[8,9]},
+"1": {"qalqalah":[61,62],"hamzat_wasl":[49,50]},
+"2": {"lam_shamsiyyah":[9,10],"qalqalah":[15,16],"hamzat_wasl":[8,9]},
"3": {"qalqalah":[9,11,24,26]},
-"4": {"idgham":[11,16],"madd":[18,19],"qalqalah":[32,33]}
+"4": {"idghaam_no_ghunnah":[11,16],"madd_2":[18,19],"qalqalah":[32,33]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/113.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/113.json
index 9b41400..0108fa7 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/113.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/113.json
@@ -1,7 +1,7 @@
{
-"1": {"qalqalah":[67,68],"wasl":[60,61]},
-"2": {"ghunnah":[2,6],"qalqalah":[18,19]},
-"3": {"ghunnah":[4,8],"qalqalah":[30,31]},
-"4": {"ghunnah":[4,8,14,17],"idgham":[13,14],"madd":[20,21,23,24],"qalqalah":[38,39],"wasl":[12,13,31,32]},
-"5": {"ghunnah":[4,8],"qalqalah":[30,31]}
+"1": {"qalqalah":[67,68],"hamzat_wasl":[60,61]},
+"2": {"ikhfa":[2,6],"qalqalah":[18,19]},
+"3": {"ikhfa":[4,8],"qalqalah":[30,31]},
+"4": {"ghunnah":[14,17],"ikhfa":[4,8],"lam_shamsiyyah":[13,14],"madd_2":[20,21,23,24],"qalqalah":[38,39],"hamzat_wasl":[12,13,31,32]},
+"5": {"ikhfa":[4,8],"qalqalah":[30,31]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/114.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/114.json
index 63063dc..e6aab3a 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/114.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/114.json
@@ -1,8 +1,8 @@
{
-"1": {"ghunnah":[62,65],"idgham":[61,62],"madd":[65,66],"wasl":[60,61]},
-"2": {"ghunnah":[9,12],"idgham":[8,9],"madd":[12,13],"wasl":[7,8]},
-"3": {"ghunnah":[10,13],"idgham":[9,10],"madd":[4,5,13,14],"wasl":[8,9]},
-"4": {"ghunnah":[2,6,28,31],"madd":[31,32],"wasl":[10,11,23,24]},
-"5": {"ghunnah":[33,36],"idgham":[32,33],"madd":[36,37],"wasl":[31,32]},
-"6": {"ghunnah":[10,13,20,23],"idgham":[19,20],"madd":[23,24],"wasl":[5,6,18,19]}
+"1": {"ghunnah":[62,65],"lam_shamsiyyah":[61,62],"madd_246":[65,66],"hamzat_wasl":[60,61]},
+"2": {"ghunnah":[9,12],"lam_shamsiyyah":[8,9],"madd_246":[12,13],"hamzat_wasl":[7,8]},
+"3": {"ghunnah":[10,13],"lam_shamsiyyah":[9,10],"madd_2":[4,5],"madd_246":[13,14],"hamzat_wasl":[8,9]},
+"4": {"ghunnah":[28,31],"ikhfa":[2,6],"madd_246":[31,32],"hamzat_wasl":[10,11,23,24]},
+"5": {"ghunnah":[33,36],"lam_shamsiyyah":[32,33],"madd_246":[36,37],"hamzat_wasl":[31,32]},
+"6": {"ghunnah":[10,13,20,23],"lam_shamsiyyah":[19,20],"madd_246":[23,24],"hamzat_wasl":[5,6,18,19]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/12.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/12.json
index f55fc14..a6897c7 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/12.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/12.json
@@ -1,113 +1,113 @@
{
-"1": {"madd":[56,57,67,68,78,79],"madd-lazim":[40,42],"wasl":[60,61,71,72]},
-"2": {"ghunnah":[2,5,10,13],"idgham":[40,46],"madd":[5,7,17,18,27,28,64,65]},
-"3": {"ghunnah":[96,100,100,103,106,110],"madd":[47,49,60,62,74,75,116,117,130,131,135,136],"qalqalah":[110,112],"wasl":[33,34,79,80,125,126]},
-"4": {"ghunnah":[42,45],"idgham":[77,82,83,84],"madd":[31,33,123,124,128,129],"wasl":[82,83,94,95]},
-"5": {"ghunnah":[87,90,110,113],"idgham":[92,93,123,128],"madd":[8,9,44,47,100,101,113,114,130,131],"qalqalah":[23,25],"silent":[69,71],"wasl":[91,92]},
-"6": {"ghunnah":[48,52,80,83,142,145,170,174,206,209],"madd":[6,7,94,95,111,114,135,137,153,156,185,186,200,201,230,231],"qalqalah":[14,16,174,176,181,183],"wasl":[60,61]},
-"7": {"idgham":[48,53,53,54],"madd":[38,40,46,47,57,59,63,64],"qalqalah":[5,7]},
-"8": {"ghunnah":[61,64,86,89],"idgham":[111,116],"madd":[46,49,109,110,118,119],"silent":[11,13]},
-"9": {"ghunnah":[90,93,107,112],"idgham":[40,45],"madd":[100,101,112,113,117,118],"qalqalah":[1,3,25,27,59,61],"silent":[8,10,84,86],"wasl":[24,25]},
-"10": {"ghunnah":[120,124,124,127],"idgham":[13,18,105,106],"madd":[8,10,69,70,132,133,137,138],"qalqalah":[31,33,92,94],"silent":[38,40],"wasl":[75,76,104,105]},
-"11": {"ghunnah":[42,45,66,69],"madd":[11,13,75,76,81,82,86,87],"silent":[6,8]},
-"12": {"ghunnah":[49,52],"idgham":[22,27],"madd":[58,59,64,65,69,70],"qalqalah":[42,44]},
-"13": {"ghunnah":[8,11,30,34,89,92],"idgham":[62,66,76,77],"madd":[25,27,48,49,104,105,109,110],"silent":[41,43],"wasl":[75,76]},
-"14": {"ghunnah":[55,58],"idgham":[26,27,64,70],"madd":[58,60,72,73,77,78],"silent":[6,8],"wasl":[25,26]},
-"15": {"ghunnah":[4,7,114,117,119,123],"idgham":[42,46],"madd":[23,24,35,37,64,65,91,93,136,137,160,161],"qalqalah":[29,31,46,48],"silent":[16,18,37,39],"wasl":[70,71]},
-"16": {"idgham":[28,32],"madd":[4,6,8,10,25,27,36,37],"qalqalah":[32,34]},
-"17": {"ghunnah":[25,28,73,76,118,121,149,152],"idgham":[100,101,131,136],"madd":[11,13,20,22,81,82,113,115,156,157,161,162],"qalqalah":[34,36],"silent":[6,8],"wasl":[99,100]},
-"18": {"ghunnah":[33,37,40,44,72,75,87,92,97,101],"idgham":[105,109],"madd":[4,6,26,27,149,150],"qalqalah":[94,96],"wasl":[109,110,117,118]},
-"19": {"ghunnah":[20,24,141,145],"idgham":[100,104,123,127],"madd":[4,6,67,68,77,78,89,90,98,99,119,120,158,159],"qalqalah":[52,54],"silent":[33,35],"wasl":[127,128]},
-"20": {"ghunnah":[18,22,26,30],"idgham":[48,52,73,74],"madd":[32,33,77,78,82,83],"silent":[58,60],"wasl":[72,73]},
-"21": {"ghunnah":[91,94,144,147,192,196,261,264,276,279],"idgham":[30,35,87,91,124,129,275,276],"madd":[24,25,53,55,73,74,81,84,98,100,117,118,133,134,188,189,240,243,252,253,258,259,295,296],"wasl":[8,9,16,17,42,43,163,164,204,205,220,221,274,275]},
-"22": {"ghunnah":[4,7],"idgham":[46,51,56,61],"madd":[25,27,37,38,65,66,90,91],"qalqalah":[73,75],"wasl":[79,80]},
-"23": {"ghunnah":[127,130,163,166],"idgham":[43,48,184,185],"madd":[4,5,54,55,77,78,132,133,139,141,168,169,188,189,193,194],"qalqalah":[73,75],"wasl":[14,15,68,69,117,118,183,184]},
-"24": {"ghunnah":[11,14,27,30,132,135],"idgham":[48,53,105,106],"madd":[21,22,43,45,63,64,74,75,80,81,109,111,125,127,137,138,166,167],"qalqalah":[6,8],"wasl":[104,105,116,117,155,156]},
-"25": {"ghunnah":[45,49],"idgham":[52,56,155,159],"madd":[41,42,108,110,139,141,150,152,183,184],"wasl":[2,3,13,14,83,84]},
-"26": {"ghunnah":[73,77,100,104,107,111],"idgham":[26,31,52,57],"madd":[13,14,68,70,90,91,137,138,142,143],"wasl":[132,133]},
-"27": {"ghunnah":[4,8,31,35,38,42],"idgham":[64,65],"madd":[21,22,68,69,73,74],"wasl":[63,64]},
-"28": {"ghunnah":[4,7,34,38,41,45,51,54,60,64,70,73,76,79,88,91],"madd":[24,25,56,57,96,97]},
-"29": {"ghunnah":[49,51,57,60,65,68],"madd":[24,25,85,86],"wasl":[31,32,74,75]},
-"30": {"ghunnah":[15,19,114,117],"idgham":[77,82,141,146],"madd":[59,60,70,71,88,89,126,127,139,140,148,149],"qalqalah":[92,94],"wasl":[21,22,34,35,44,45]},
-"31": {"ghunnah":[4,7,28,31,51,54,72,75,121,124,161,164,169,172,223,226,294,298],"idgham":[85,90,112,117,132,137],"madd":[106,107,184,186,199,200,238,239,256,257,276,277,279,281,300,301],"qalqalah":[150,152],"wasl":[145,146]},
-"32": {"ghunnah":[17,20,35,38,148,151],"idgham":[62,63,72,77,105,110,162,168,172,173],"madd":[12,13,59,60,68,69,83,84,124,126,136,137,176,177,181,182],"qalqalah":[54,56],"wasl":[21,22,87,88,171,172]},
-"33": {"ghunnah":[40,43,88,91,101,104,120,123],"idgham":[13,14,130,135],"madd":[56,58,143,144,148,149],"qalqalah":[17,19,47,49],"wasl":[12,13,138,139]},
-"34": {"ghunnah":[52,55,58,61],"idgham":[71,72],"madd":[17,18,26,27,63,64,88,89],"wasl":[2,3,70,71,81,82]},
-"35": {"ghunnah":[2,5,22,25,66,69],"idgham":[16,21],"madd":[52,53,71,72,83,84],"silent":[41,43],"wasl":[44,45]},
-"36": {"ghunnah":[57,60,112,115,158,163,216,219],"idgham":[17,18,88,93,171,172],"madd":[52,54,60,62,68,69,71,73,115,117,123,124,126,128,211,213,226,227,246,247],"qalqalah":[21,23,155,157],"wasl":[16,17,99,100,170,171,235,236]},
-"37": {"ghunnah":[29,33,122,125,148,151,208,212],"idgham":[93,97,175,180],"madd":[44,46,82,83,111,112,143,145,232,233,237,238],"qalqalah":[86,88],"wasl":[196,197,212,213]},
-"38": {"ghunnah":[113,117,120,124,132,136,169,172,183,186,198,201],"idgham":[89,94,168,169,197,198],"madd":[26,28,30,32,39,40,54,55,84,86,124,125,180,181,217,218],"qalqalah":[35,37],"wasl":[2,3,103,104,141,142,167,168,196,197]},
-"39": {"idgham":[15,16,34,39],"madd":[2,3,6,7,77,78,91,92],"qalqalah":[19,21],"wasl":[14,15,64,65,72,73,83,84]},
-"40": {"ghunnah":[18,22,47,51,51,54,68,71,97,100,119,123,240,243,255,258],"idgham":[87,92,214,215,254,255],"madd":[27,29,35,37,44,46,63,65,81,83,92,94,127,128,183,185,193,195,207,208,237,238,274,275],"silent":[185,187],"wasl":[103,104,136,137,213,214,222,223,253,254]},
-"41": {"ghunnah":[26,29,75,78],"idgham":[15,16,68,73,114,115,125,130],"madd":[2,3,6,7,29,31,61,62,136,137,181,182],"qalqalah":[19,21],"wasl":[14,15,80,81,113,114,145,146,155,156]},
-"42": {"ghunnah":[19,22,25,28,62,65,78,81],"idgham":[36,41,87,88,129,130],"madd":[30,31,82,83,95,96,113,114,149,150],"qalqalah":[133,135],"wasl":[49,50,86,87,128,129]},
-"43": {"ghunnah":[20,23,48,52,68,71,99,101,185,189,189,192],"idgham":[56,60,85,89,113,117,133,137,197,198],"madd":[23,25,46,47,104,105,131,132,137,139,179,180,215,216],"qalqalah":[35,37,74,76,91,93],"wasl":[8,9,148,149]},
-"44": {"idgham":[28,32],"madd":[5,7,16,17,26,27,64,65,72,73,77,78],"silent":[7,9],"wasl":[55,56]},
-"45": {"ghunnah":[52,55,76,80],"madd":[91,92,103,104],"wasl":[8,9,34,35]},
-"46": {"ghunnah":[58,62,78,81,109,111,173,176],"idgham":[18,19,66,70,95,99,123,127,143,148,172,173],"madd":[56,57,114,115,141,142,153,155,200,201],"qalqalah":[45,47,84,86,101,103],"wasl":[17,18,171,172]},
-"47": {"ghunnah":[38,43,75,77,104,107],"idgham":[51,52,98,104],"madd":[82,84,117,118],"qalqalah":[20,22]},
-"48": {"ghunnah":[2,5,17,20,39,43,80,83,103,106],"idgham":[47,51,97,103],"madd":[28,29,116,117],"qalqalah":[36,38]},
-"49": {"ghunnah":[2,5,17,20,38,42,56,59],"idgham":[55,56],"madd":[28,29,79,80],"wasl":[54,55]},
-"50": {"ghunnah":[38,41,116,119,155,158,161,164,182,185],"idgham":[53,54,115,116],"madd":[32,33,45,47,130,131,190,191],"wasl":[8,9,18,19,52,53,69,70,114,115,126,127]},
-"51": {"ghunnah":[18,21,36,39,109,113,116,120,214,217],"idgham":[32,33,50,55,187,188,197,202,229,230],"madd":[29,30,61,62,72,73,113,115,153,154,184,185,193,194,208,209,219,220,233,234,238,239],"qalqalah":[12,14],"wasl":[126,127,136,137,147,148,166,167,228,229]},
-"52": {"ghunnah":[21,24,56,59],"madd":[2,3,92,94,98,99],"wasl":[42,43,60,61,87,88]},
-"53": {"ghunnah":[28,31,34,37,46,49,53,57,96,99],"idgham":[33,34,59,60,113,118],"madd":[4,6,23,25,63,65,91,93,120,121],"wasl":[32,33,58,59]},
-"54": {"ghunnah":[64,67,88,91],"madd":[32,34,78,79,126,127],"wasl":[8,9,18,19,94,95]},
-"55": {"ghunnah":[47,50],"madd":[28,30,64,65],"qalqalah":[7,9],"wasl":[6,7,35,36]},
-"56": {"ghunnah":[17,20],"idgham":[106,111],"madd":[6,7,77,79,113,115,150,151],"qalqalah":[134,136],"wasl":[36,37,139,140]},
-"57": {"idgham":[29,34],"madd":[72,73],"qalqalah":[6,8],"silent":[51,53,62,64],"wasl":[11,12]},
-"58": {"ghunnah":[75,78],"madd":[4,6,71,72,80,81],"silent":[35,37]},
-"59": {"ghunnah":[4,7,18,22,97,100,141,144],"idgham":[55,60,62,67],"madd":[100,102,146,147],"wasl":[40,41,110,111,136,137]},
-"60": {"ghunnah":[51,54],"idgham":[4,9],"madd":[27,28,70,71],"qalqalah":[64,66]},
-"61": {"ghunnah":[40,43],"madd":[15,16,49,50,54,55],"silent":[6,8]},
-"62": {"ghunnah":[98,101],"madd":[16,17,37,38,88,90,105,107,114,117,149,150],"qalqalah":[23,25],"silent":[30,32,107,109],"wasl":[22,23,97,98]},
-"63": {"ghunnah":[4,7,69,72,126,129],"madd":[15,17,24,27,49,51,101,103,135,136,141,142,146,147],"silent":[17,19,44,46],"wasl":[74,75]},
-"64": {"ghunnah":[50,53,76,80],"idgham":[108,113,128,129],"madd":[43,45,62,65,104,105,132,133,137,138],"qalqalah":[80,82],"wasl":[87,88,127,128]},
-"65": {"ghunnah":[4,7,213,217],"idgham":[228,232],"madd":[23,24,45,46,85,87,110,111,115,116,121,122,217,218,234,235],"qalqalah":[102,104],"silent":[16,18,38,40,80,82]},
-"66": {"ghunnah":[82,85,127,130],"idgham":[57,63,106,110],"madd":[21,22,93,95,101,103,130,132,193,194],"wasl":[66,67,162,163]},
-"67": {"ghunnah":[38,41,114,117,135,139],"idgham":[44,48,52,56,80,85,95,99,117,122],"madd":[10,11,48,49,78,79,101,103,236,237],"qalqalah":[25,27,57,59,74,76],"silent":[32,34,64,66],"wasl":[56,57,125,126,149,150,222,223]},
-"68": {"ghunnah":[4,7,94,98,116,120,153,156,200,203,215,218],"idgham":[49,54,76,81,171,176,214,215],"madd":[144,145,158,159,189,190,197,198,234,235],"silent":[16,18],"wasl":[84,85,213,214]},
-"69": {"ghunnah":[4,7,68,71],"madd":[39,42,71,73,129,130],"qalqalah":[97,99],"silent":[16,18,118,120]},
-"70": {"ghunnah":[4,7,18,22,75,78,119,122],"idgham":[42,43],"madd":[131,132,136,137],"wasl":[41,42,108,109]},
-"71": {"idgham":[31,36],"madd":[49,50],"qalqalah":[13,15],"silent":[6,8,20,22]},
-"72": {"ghunnah":[42,46],"idgham":[70,74],"madd":[46,48,55,56,85,86,91,92],"silent":[6,8],"wasl":[26,27]},
-"73": {"ghunnah":[82,85],"idgham":[34,39],"madd":[89,90,94,95],"qalqalah":[23,25],"silent":[6,8],"wasl":[11,12,64,65]},
-"74": {"ghunnah":[30,34,34,37],"madd":[19,21,25,27,42,43,47,48],"silent":[6,8]},
-"75": {"idgham":[23,27,84,85],"madd":[13,15,19,20,44,45,57,59,63,64,69,70,88,89,93,94],"qalqalah":[77,79],"silent":[6,8],"wasl":[83,84]},
-"76": {"ghunnah":[52,55],"idgham":[73,77,179,183,215,220,220,225],"madd":[37,39,79,81,96,97,174,176,185,187,213,214,227,229,262,263],"qalqalah":[28,30,104,106],"wasl":[56,57,159,160,190,191]},
-"77": {"ghunnah":[51,55,127,130],"idgham":[12,16,40,45,137,142,146,151],"madd":[5,7,47,48,93,94,180,181],"qalqalah":[20,22,27,29,55,57,104,106],"silent":[7,9],"wasl":[151,152]},
-"78": {"ghunnah":[35,38,49,54,57,62,66,71,100,103],"madd":[11,13,43,45,95,97,110,111,130,131],"silent":[6,8],"wasl":[22,23,119,120]},
-"79": {"ghunnah":[70,73,80,83],"idgham":[24,29,45,49,89,95],"madd":[61,62,75,77,83,85,97,98,102,103],"qalqalah":[51,53],"wasl":[14,15]},
-"80": {"ghunnah":[4,7,48,53,91,94,156,160],"idgham":[125,130,135,141],"madd":[84,86,237,239,244,246,292,293,297,298],"qalqalah":[107,109,160,162,201,203],"silent":[22,24,39,41,86,88],"wasl":[9,10,144,145,208,209,261,262,287,288]},
-"81": {"ghunnah":[57,60,124,127],"madd":[7,9,16,19,43,45,52,54,90,92,142,143,147,148],"qalqalah":[62,64,86,88],"silent":[9,11,38,40],"wasl":[61,62]},
-"82": {"ghunnah":[32,35,87,90],"madd":[61,63,96,97,101,102],"qalqalah":[66,68],"wasl":[10,11,22,23,46,47,55,56]},
-"83": {"ghunnah":[30,33,45,50,55,59,113,116],"idgham":[81,85],"madd":[118,119,143,144],"qalqalah":[52,54],"wasl":[71,72,125,126,136,137]},
-"84": {"madd":[31,33,106,107],"qalqalah":[60,62],"wasl":[59,60,85,86]},
-"85": {"madd":[94,95,99,100],"silent":[6,8,27,29],"wasl":[11,12,89,90]},
-"86": {"ghunnah":[8,11],"madd":[13,15,41,43,98,99],"silent":[23,25],"wasl":[50,51,74,75]},
-"87": {"ghunnah":[102,105],"idgham":[39,43,82,87,127,132],"madd":[2,3,107,108,167,168,172,173],"silent":[19,21,34,36,67,69,77,79,115,117],"wasl":[11,12,92,93,137,138,152,153,162,163]},
-"88": {"ghunnah":[4,7,123,127,175,178],"idgham":[83,84,111,116],"madd":[39,41,107,108,121,122,170,172,209,210],"qalqalah":[159,161,189,191],"silent":[16,18,34,36],"wasl":[50,51,82,83,140,141,179,180,195,196]},
-"89": {"ghunnah":[34,38,63,66],"idgham":[19,24],"madd":[71,72,76,77]},
-"90": {"ghunnah":[14,17,24,27,80,83,105,108,139,142],"idgham":[114,118],"madd":[5,7,61,62,64,66,100,102,110,111,181,182],"qalqalah":[75,77,165,167],"silent":[7,9],"wasl":[84,85,143,144,170,171]},
-"91": {"ghunnah":[58,62,62,65],"madd":[71,72,77,78],"qalqalah":[23,25],"silent":[6,8],"wasl":[11,12,36,37]},
-"92": {"idgham":[82,83],"madd":[86,87,91,92],"wasl":[31,32,50,51,81,82]},
-"93": {"idgham":[74,79],"madd":[24,25,109,110],"qalqalah":[50,52,103,105],"silent":[8,10]},
-"94": {"ghunnah":[4,7,45,48,84,88,90,93],"madd":[79,81,95,96],"wasl":[18,19]},
-"95": {"ghunnah":[21,24],"madd":[37,38,50,51],"silent":[6,8],"wasl":[11,12,43,44]},
-"96": {"ghunnah":[4,7,12,16,77,82,109,112],"madd":[7,9,16,18,39,40,58,59,112,114,153,154],"qalqalah":[52,54],"wasl":[21,22,62,63,129,130]},
-"97": {"ghunnah":[54,57,61,64],"madd":[11,13,49,51,68,69,74,75],"silent":[6,8],"wasl":[22,23]},
-"98": {"ghunnah":[43,46],"idgham":[67,68],"madd":[38,40,48,49,73,74],"wasl":[55,56,66,67]},
-"99": {"ghunnah":[4,7,91,95],"madd":[39,42,95,97,115,116],"qalqalah":[72,74],"silent":[16,18,79,81],"wasl":[71,72,100,101]},
-"100": {"ghunnah":[110,114,235,238,299,302,336,339],"idgham":[59,64,145,150,192,193,214,219,246,251,257,258,316,321],"madd":[51,52,72,74,83,84,104,105,166,168,205,207,265,266,294,296,329,331,341,342,366,367],"qalqalah":[114,116,121,123,152,154,196,198,227,229],"silent":[44,46],"wasl":[26,27,191,192,222,223,256,257,348,349,359,360]},
-"101": {"ghunnah":[56,60,118,121],"idgham":[91,92,136,137,179,184,199,200],"madd":[97,98,100,101,129,130,203,204,208,209],"qalqalah":[8,10,190,192],"wasl":[29,30,68,69,90,91,106,107,135,136,148,149,198,199]},
-"102": {"ghunnah":[16,18,60,63],"madd":[2,3,19,21,88,90,119,120],"qalqalah":[82,84],"silent":[90,92],"wasl":[24,25]},
-"103": {"ghunnah":[18,21],"idgham":[17,18],"madd":[4,6,51,52],"wasl":[16,17]},
-"104": {"idgham":[63,68],"madd":[72,73,77,78],"qalqalah":[36,38]},
-"105": {"ghunnah":[23,27],"idgham":[9,14,30,31],"madd":[36,37,39,40,99,100],"wasl":[29,30,45,46]},
-"106": {"ghunnah":[25,29],"idgham":[48,53],"madd":[59,60],"wasl":[29,30]},
-"107": {"ghunnah":[17,21],"idgham":[40,45,83,84,100,104],"madd":[10,12,34,35,121,122],"silent":[12,14],"wasl":[56,57,82,83]},
-"108": {"madd":[7,8,12,13,21,23,30,32,100,101,116,118,142,143],"qalqalah":[26,28,96,98],"silent":[32,34],"wasl":[41,42,80,81,104,105,131,132]},
-"109": {"ghunnah":[21,25,129,132,173,177],"idgham":[45,51,65,70,214,219],"madd":[4,6,54,56,87,90,153,154,255,256],"qalqalah":[25,27,177,179],"silent":[108,110,135,137,236,238],"wasl":[80,81,115,116,161,162,196,197,228,229]},
-"110": {"ghunnah":[42,45,52,55],"idgham":[29,30,108,113],"madd":[5,8,45,47,77,79,115,117,170,171],"qalqalah":[62,64,164,166],"silent":[47,49,72,74],"wasl":[15,16,28,29,149,150,159,160]},
-"111": {"ghunnah":[98,102],"idgham":[35,40,77,82,157,161,164,169,176,181,186,190],"madd":[57,58,95,96,196,197],"qalqalah":[4,6,30,32],"silent":[42,44],"wasl":[48,49,110,111]}
+"1": {"madd_2":[56,57,67,68],"madd_246":[78,79],"madd_6":[40,42],"hamzat_wasl":[60,61,71,72]},
+"2": {"ghunnah":[2,5],"ikhfa":[10,13],"idghaam_no_ghunnah":[40,46],"madd_2":[17,18,27,28],"madd_246":[64,65],"madd_munfasil":[5,7]},
+"3": {"ikhfa":[96,100,100,103,106,110],"madd_2":[74,75,116,117,130,131],"madd_246":[135,136],"madd_munfasil":[47,49,60,62],"qalqalah":[110,112],"hamzat_wasl":[33,34,79,80,125,126]},
+"4": {"ghunnah":[42,45],"idghaam_ghunnah":[77,82],"lam_shamsiyyah":[83,84],"madd_2":[123,124],"madd_246":[128,129],"madd_munfasil":[31,33],"hamzat_wasl":[82,83,94,95]},
+"5": {"ghunnah":[87,90],"ikhfa":[110,113],"idghaam_ghunnah":[123,128],"lam_shamsiyyah":[92,93],"madd_2":[8,9,100,101,113,114],"madd_246":[130,131],"madd_munfasil":[44,47],"qalqalah":[23,25],"silent":[69,71],"hamzat_wasl":[91,92]},
+"6": {"ghunnah":[80,83,142,145,206,209],"ikhfa":[48,52,170,174],"madd_2":[6,7,94,95,185,186,200,201],"madd_246":[230,231],"madd_munfasil":[111,114,135,137,153,156],"qalqalah":[14,16,174,176,181,183],"hamzat_wasl":[60,61]},
+"7": {"idghaam_no_ghunnah":[48,53],"lam_shamsiyyah":[53,54],"madd_2":[46,47],"madd_246":[63,64],"madd_munfasil":[38,40],"madd_muttasil":[57,59],"qalqalah":[5,7]},
+"8": {"ghunnah":[61,64,86,89],"idghaam_ghunnah":[111,116],"madd_2":[109,110],"madd_246":[118,119],"madd_munfasil":[46,49],"silent":[11,13]},
+"9": {"ikhfa":[107,112],"iqlab":[90,93],"idghaam_ghunnah":[40,45],"madd_2":[100,101,112,113],"madd_246":[117,118],"qalqalah":[1,3,25,27,59,61],"silent":[8,10,84,86],"hamzat_wasl":[24,25]},
+"10": {"ikhfa":[120,124,124,127],"idghaam_ghunnah":[13,18],"lam_shamsiyyah":[105,106],"madd_2":[69,70,132,133],"madd_246":[137,138],"madd_muttasil":[8,10],"qalqalah":[31,33,92,94],"silent":[38,40],"hamzat_wasl":[75,76,104,105]},
+"11": {"ghunnah":[42,45,66,69],"madd_2":[75,76,81,82],"madd_246":[86,87],"madd_munfasil":[11,13],"silent":[6,8]},
+"12": {"ghunnah":[49,52],"idghaam_ghunnah":[22,27],"madd_2":[58,59,64,65],"madd_246":[69,70],"qalqalah":[42,44]},
+"13": {"ghunnah":[8,11],"ikhfa":[30,34,89,92],"idghaam_ghunnah":[62,66],"lam_shamsiyyah":[76,77],"madd_2":[48,49,104,105],"madd_246":[109,110],"madd_munfasil":[25,27],"silent":[41,43],"hamzat_wasl":[75,76]},
+"14": {"ghunnah":[55,58],"idghaam_no_ghunnah":[64,70],"lam_shamsiyyah":[26,27],"madd_2":[72,73],"madd_246":[77,78],"madd_munfasil":[58,60],"silent":[6,8],"hamzat_wasl":[25,26]},
+"15": {"ghunnah":[4,7,114,117],"ikhfa_shafawi":[119,123],"idghaam_ghunnah":[42,46],"madd_2":[23,24,64,65,136,137],"madd_246":[160,161],"madd_munfasil":[35,37,91,93],"qalqalah":[29,31,46,48],"silent":[16,18,37,39],"hamzat_wasl":[70,71]},
+"16": {"idghaam_ghunnah":[28,32],"madd_246":[36,37],"madd_munfasil":[8,10],"madd_muttasil":[4,6,25,27],"qalqalah":[32,34]},
+"17": {"ghunnah":[25,28,149,152],"ikhfa":[73,76,118,121],"idghaam_no_ghunnah":[131,136],"lam_shamsiyyah":[100,101],"madd_2":[81,82,156,157],"madd_246":[161,162],"madd_munfasil":[11,13,20,22,113,115],"qalqalah":[34,36],"silent":[6,8],"hamzat_wasl":[99,100]},
+"18": {"ikhfa":[33,37,40,44,72,75,87,92,97,101],"idghaam_ghunnah":[105,109],"madd_2":[26,27],"madd_246":[149,150],"madd_muttasil":[4,6],"qalqalah":[94,96],"hamzat_wasl":[109,110,117,118]},
+"19": {"ikhfa":[20,24],"iqlab":[141,145],"idghaam_ghunnah":[100,104,123,127],"madd_2":[67,68,77,78,89,90,98,99,119,120],"madd_246":[158,159],"madd_muttasil":[4,6],"qalqalah":[52,54],"silent":[33,35],"hamzat_wasl":[127,128]},
+"20": {"ikhfa":[26,30],"iqlab":[18,22],"idghaam_ghunnah":[48,52],"lam_shamsiyyah":[73,74],"madd_2":[32,33,77,78],"madd_246":[82,83],"silent":[58,60],"hamzat_wasl":[72,73]},
+"21": {"ghunnah":[144,147,261,264,276,279],"ikhfa":[91,94,192,196],"idghaam_ghunnah":[30,35,87,91,124,129],"lam_shamsiyyah":[275,276],"madd_2":[24,25,73,74,117,118,133,134,188,189,252,253,258,259],"madd_246":[295,296],"madd_munfasil":[53,55,81,84,98,100,240,243],"hamzat_wasl":[8,9,16,17,42,43,163,164,204,205,220,221,274,275]},
+"22": {"ghunnah":[4,7],"idghaam_ghunnah":[46,51,56,61],"madd_2":[37,38,65,66],"madd_246":[90,91],"madd_munfasil":[25,27],"qalqalah":[73,75],"hamzat_wasl":[79,80]},
+"23": {"ghunnah":[127,130,163,166],"idghaam_ghunnah":[43,48],"lam_shamsiyyah":[184,185],"madd_2":[4,5,54,55,77,78,132,133,168,169,188,189],"madd_246":[193,194],"madd_munfasil":[139,141],"qalqalah":[73,75],"hamzat_wasl":[14,15,68,69,117,118,183,184]},
+"24": {"ghunnah":[11,14,27,30,132,135],"idghaam_no_ghunnah":[48,53],"lam_shamsiyyah":[105,106],"madd_2":[21,22,63,64,74,75,80,81,137,138],"madd_246":[166,167],"madd_munfasil":[43,45],"madd_muttasil":[109,111,125,127],"qalqalah":[6,8],"hamzat_wasl":[104,105,116,117,155,156]},
+"25": {"ikhfa":[45,49],"idghaam_ghunnah":[52,56,155,159],"madd_2":[41,42],"madd_246":[183,184],"madd_munfasil":[150,152],"madd_muttasil":[108,110,139,141],"hamzat_wasl":[2,3,13,14,83,84]},
+"26": {"ikhfa":[73,77,100,104,107,111],"idghaam_ghunnah":[26,31,52,57],"madd_2":[13,14,90,91,137,138],"madd_246":[142,143],"madd_munfasil":[68,70],"hamzat_wasl":[132,133]},
+"27": {"ikhfa":[4,8,31,35,38,42],"lam_shamsiyyah":[64,65],"madd_2":[21,22,68,69],"madd_246":[73,74],"hamzat_wasl":[63,64]},
+"28": {"ghunnah":[4,7,51,54,70,73,76,79,88,91],"ikhfa":[34,38,41,45,60,64],"madd_2":[24,25,56,57],"madd_246":[96,97]},
+"29": {"ghunnah":[57,60],"ikhfa":[65,68],"iqlab":[49,51],"madd_2":[24,25],"madd_246":[85,86],"hamzat_wasl":[31,32,74,75]},
+"30": {"ghunnah":[114,117],"ikhfa":[15,19],"idghaam_ghunnah":[77,82,141,146],"madd_2":[59,60,70,71,88,89,126,127,139,140],"madd_246":[148,149],"qalqalah":[92,94],"hamzat_wasl":[21,22,34,35,44,45]},
+"31": {"ghunnah":[4,7,28,31,51,54,72,75,121,124,161,164,169,172,223,226],"ikhfa":[294,298],"idghaam_ghunnah":[85,90,112,117,132,137],"madd_2":[106,107,199,200,238,239,256,257,276,277],"madd_246":[300,301],"madd_munfasil":[184,186,279,281],"qalqalah":[150,152],"hamzat_wasl":[145,146]},
+"32": {"ghunnah":[17,20,35,38,148,151],"idghaam_ghunnah":[72,77,162,168],"idghaam_mutajanisayn":[62,63],"idghaam_no_ghunnah":[105,110],"lam_shamsiyyah":[172,173],"madd_2":[12,13,59,60,68,69,83,84,136,137,176,177],"madd_246":[181,182],"madd_munfasil":[124,126],"qalqalah":[54,56],"hamzat_wasl":[21,22,87,88,171,172]},
+"33": {"ghunnah":[40,43,88,91,101,104,120,123],"idghaam_ghunnah":[130,135],"lam_shamsiyyah":[13,14],"madd_2":[143,144],"madd_246":[148,149],"madd_munfasil":[56,58],"qalqalah":[17,19,47,49],"hamzat_wasl":[12,13,138,139]},
+"34": {"ghunnah":[52,55,58,61],"lam_shamsiyyah":[71,72],"madd_2":[17,18,26,27,63,64],"madd_246":[88,89],"hamzat_wasl":[2,3,70,71,81,82]},
+"35": {"ghunnah":[2,5,66,69],"iqlab":[22,25],"idghaam_shafawi":[16,21],"madd_2":[52,53,71,72],"madd_246":[83,84],"silent":[41,43],"hamzat_wasl":[44,45]},
+"36": {"ghunnah":[57,60,112,115,216,219],"ikhfa":[158,163],"idghaam_ghunnah":[88,93],"lam_shamsiyyah":[17,18,171,172],"madd_2":[68,69,123,124,226,227],"madd_246":[246,247],"madd_munfasil":[52,54,60,62,71,73,115,117,126,128,211,213],"qalqalah":[21,23,155,157],"hamzat_wasl":[16,17,99,100,170,171,235,236]},
+"37": {"ghunnah":[122,125,148,151],"ikhfa":[29,33],"ikhfa_shafawi":[208,212],"idghaam_ghunnah":[93,97],"idghaam_no_ghunnah":[175,180],"madd_2":[82,83,111,112,232,233],"madd_246":[237,238],"madd_munfasil":[44,46,143,145],"qalqalah":[86,88],"hamzat_wasl":[196,197,212,213]},
+"38": {"ghunnah":[169,172,183,186,198,201],"ikhfa":[113,117,120,124,132,136],"idghaam_ghunnah":[89,94],"lam_shamsiyyah":[168,169,197,198],"madd_2":[39,40,54,55,124,125,180,181],"madd_246":[217,218],"madd_munfasil":[30,32,84,86],"madd_muttasil":[26,28],"qalqalah":[35,37],"hamzat_wasl":[2,3,103,104,141,142,167,168,196,197]},
+"39": {"idghaam_ghunnah":[34,39],"lam_shamsiyyah":[15,16],"madd_2":[2,3,6,7,77,78],"madd_246":[91,92],"qalqalah":[19,21],"hamzat_wasl":[14,15,64,65,72,73,83,84]},
+"40": {"ghunnah":[51,54,240,243,255,258],"ikhfa":[18,22,47,51,68,71,97,100,119,123],"idghaam_shafawi":[87,92],"lam_shamsiyyah":[214,215,254,255],"madd_2":[127,128,207,208,237,238],"madd_246":[274,275],"madd_munfasil":[27,29,35,37,63,65,92,94,183,185,193,195],"madd_muttasil":[44,46,81,83],"silent":[185,187],"hamzat_wasl":[103,104,136,137,213,214,222,223,253,254]},
+"41": {"ghunnah":[26,29,75,78],"idghaam_ghunnah":[68,73],"idghaam_no_ghunnah":[125,130],"lam_shamsiyyah":[15,16,114,115],"madd_2":[2,3,6,7,61,62,136,137],"madd_246":[181,182],"madd_munfasil":[29,31],"qalqalah":[19,21],"hamzat_wasl":[14,15,80,81,113,114,145,146,155,156]},
+"42": {"ghunnah":[19,22,25,28],"ikhfa":[62,65,78,81],"idghaam_ghunnah":[36,41],"lam_shamsiyyah":[87,88,129,130],"madd_2":[30,31,82,83,95,96,113,114],"madd_246":[149,150],"qalqalah":[133,135],"hamzat_wasl":[49,50,86,87,128,129]},
+"43": {"ghunnah":[20,23,68,71],"ikhfa":[48,52,185,189,189,192],"iqlab":[99,101],"idghaam_ghunnah":[56,60,85,89,113,117,133,137],"lam_shamsiyyah":[197,198],"madd_2":[46,47,104,105,131,132,179,180],"madd_246":[215,216],"madd_munfasil":[23,25,137,139],"qalqalah":[35,37,74,76,91,93],"hamzat_wasl":[8,9,148,149]},
+"44": {"idghaam_ghunnah":[28,32],"madd_2":[16,17,26,27,64,65,72,73],"madd_246":[77,78],"madd_munfasil":[5,7],"silent":[7,9],"hamzat_wasl":[55,56]},
+"45": {"ghunnah":[52,55],"ikhfa_shafawi":[76,80],"madd_2":[91,92],"madd_246":[103,104],"hamzat_wasl":[8,9,34,35]},
+"46": {"ghunnah":[78,81,173,176],"ikhfa":[58,62],"iqlab":[109,111],"idghaam_ghunnah":[66,70,95,99,123,127],"idghaam_no_ghunnah":[143,148],"lam_shamsiyyah":[18,19,172,173],"madd_2":[56,57,114,115,141,142],"madd_246":[200,201],"madd_munfasil":[153,155],"qalqalah":[45,47,84,86,101,103],"hamzat_wasl":[17,18,171,172]},
+"47": {"ghunnah":[104,107],"ikhfa":[38,43],"iqlab":[75,77],"idghaam_ghunnah":[98,104],"idghaam_mutajanisayn":[51,52],"madd_246":[117,118],"madd_munfasil":[82,84],"qalqalah":[20,22]},
+"48": {"ghunnah":[2,5,80,83,103,106],"ikhfa":[39,43],"iqlab":[17,20],"idghaam_ghunnah":[47,51,97,103],"madd_2":[28,29],"madd_246":[116,117],"qalqalah":[36,38]},
+"49": {"ghunnah":[2,5,56,59],"ikhfa":[38,42],"iqlab":[17,20],"lam_shamsiyyah":[55,56],"madd_2":[28,29],"madd_246":[79,80],"hamzat_wasl":[54,55]},
+"50": {"ghunnah":[38,41,116,119,155,158,161,164,182,185],"lam_shamsiyyah":[53,54,115,116],"madd_2":[32,33,130,131],"madd_246":[190,191],"madd_muttasil":[45,47],"hamzat_wasl":[8,9,18,19,52,53,69,70,114,115,126,127]},
+"51": {"ghunnah":[18,21,36,39,214,217],"ikhfa":[109,113,116,120],"idghaam_ghunnah":[50,55,197,202],"idghaam_mutajanisayn":[32,33,187,188],"lam_shamsiyyah":[229,230],"madd_2":[29,30,61,62,72,73,153,154,184,185,193,194,208,209,219,220,233,234],"madd_246":[238,239],"madd_muttasil":[113,115],"qalqalah":[12,14],"hamzat_wasl":[126,127,136,137,147,148,166,167,228,229]},
+"52": {"ghunnah":[21,24,56,59],"madd_2":[2,3],"madd_246":[98,99],"madd_muttasil":[92,94],"hamzat_wasl":[42,43,60,61,87,88]},
+"53": {"ghunnah":[28,31,34,37,46,49,96,99],"iqlab":[53,57],"idghaam_no_ghunnah":[113,118],"lam_shamsiyyah":[33,34,59,60],"madd_246":[120,121],"madd_munfasil":[4,6,23,25,91,93],"madd_muttasil":[63,65],"hamzat_wasl":[32,33,58,59]},
+"54": {"ghunnah":[64,67,88,91],"madd_2":[78,79],"madd_246":[126,127],"madd_munfasil":[32,34],"hamzat_wasl":[8,9,18,19,94,95]},
+"55": {"ghunnah":[47,50],"madd_246":[64,65],"madd_muttasil":[28,30],"qalqalah":[7,9],"hamzat_wasl":[6,7,35,36]},
+"56": {"ghunnah":[17,20],"idghaam_ghunnah":[106,111],"madd_2":[6,7],"madd_246":[150,151],"madd_muttasil":[77,79,113,115],"qalqalah":[134,136],"hamzat_wasl":[36,37,139,140]},
+"57": {"idghaam_no_ghunnah":[29,34],"madd_246":[72,73],"qalqalah":[6,8],"silent":[51,53,62,64],"hamzat_wasl":[11,12]},
+"58": {"ikhfa":[75,78],"madd_2":[71,72],"madd_246":[80,81],"madd_muttasil":[4,6],"silent":[35,37]},
+"59": {"ghunnah":[4,7,97,100],"ikhfa":[141,144],"ikhfa_shafawi":[18,22],"idghaam_no_ghunnah":[55,60],"idghaam_shafawi":[62,67],"madd_246":[146,147],"madd_munfasil":[100,102],"hamzat_wasl":[40,41,110,111,136,137]},
+"60": {"ikhfa":[51,54],"idghaam_no_ghunnah":[4,9],"madd_2":[27,28],"madd_246":[70,71],"qalqalah":[64,66]},
+"61": {"ghunnah":[40,43],"madd_2":[15,16,49,50],"madd_246":[54,55],"silent":[6,8]},
+"62": {"ikhfa":[98,101],"madd_2":[16,17,37,38],"madd_246":[149,150],"madd_munfasil":[88,90,105,107,114,117],"qalqalah":[23,25],"silent":[30,32,107,109],"hamzat_wasl":[22,23,97,98]},
+"63": {"ghunnah":[4,7,69,72,126,129],"madd_2":[135,136,141,142],"madd_246":[146,147],"madd_munfasil":[15,17,24,27,49,51,101,103],"silent":[17,19,44,46],"hamzat_wasl":[74,75]},
+"64": {"ikhfa":[50,53,76,80],"idghaam_ghunnah":[108,113],"lam_shamsiyyah":[128,129],"madd_2":[104,105,132,133],"madd_246":[137,138],"madd_munfasil":[43,45,62,65],"qalqalah":[80,82],"hamzat_wasl":[87,88,127,128]},
+"65": {"ghunnah":[4,7],"ikhfa":[213,217],"idghaam_ghunnah":[228,232],"madd_2":[23,24,45,46,110,111,115,116,121,122,217,218],"madd_246":[234,235],"madd_munfasil":[85,87],"qalqalah":[102,104],"silent":[16,18,38,40,80,82]},
+"66": {"ghunnah":[82,85,127,130],"idghaam_ghunnah":[57,63,106,110],"madd_2":[21,22],"madd_246":[193,194],"madd_munfasil":[93,95,101,103,130,132],"hamzat_wasl":[66,67,162,163]},
+"67": {"ikhfa":[114,117,135,139],"iqlab":[38,41],"idghaam_ghunnah":[44,48,52,56,80,85,95,99],"idghaam_shafawi":[117,122],"madd_2":[10,11,48,49,78,79],"madd_246":[236,237],"madd_munfasil":[101,103],"qalqalah":[25,27,57,59,74,76],"silent":[32,34,64,66],"hamzat_wasl":[56,57,125,126,149,150,222,223]},
+"68": {"ghunnah":[4,7,153,156,200,203,215,218],"ikhfa":[94,98,116,120],"idghaam_no_ghunnah":[171,176],"idghaam_shafawi":[49,54,76,81],"lam_shamsiyyah":[214,215],"madd_2":[144,145,158,159,189,190,197,198],"madd_246":[234,235],"silent":[16,18],"hamzat_wasl":[84,85,213,214]},
+"69": {"ghunnah":[4,7,68,71],"madd_246":[129,130],"madd_munfasil":[39,42,71,73],"qalqalah":[97,99],"silent":[16,18,118,120]},
+"70": {"ghunnah":[4,7,75,78,119,122],"ikhfa_shafawi":[18,22],"lam_shamsiyyah":[42,43],"madd_2":[131,132],"madd_246":[136,137],"hamzat_wasl":[41,42,108,109]},
+"71": {"idghaam_shafawi":[31,36],"madd_246":[49,50],"qalqalah":[13,15],"silent":[6,8,20,22]},
+"72": {"ikhfa":[42,46],"idghaam_ghunnah":[70,74],"madd_2":[55,56,85,86],"madd_246":[91,92],"madd_muttasil":[46,48],"silent":[6,8],"hamzat_wasl":[26,27]},
+"73": {"ghunnah":[82,85],"idghaam_shafawi":[34,39],"madd_2":[89,90],"madd_246":[94,95],"qalqalah":[23,25],"silent":[6,8],"hamzat_wasl":[11,12,64,65]},
+"74": {"ikhfa":[30,34,34,37],"madd_2":[42,43],"madd_246":[47,48],"madd_munfasil":[25,27],"madd_muttasil":[19,21],"silent":[6,8]},
+"75": {"idghaam_ghunnah":[23,27],"lam_shamsiyyah":[84,85],"madd_2":[19,20,44,45,63,64,69,70,88,89],"madd_246":[93,94],"madd_muttasil":[13,15,57,59],"qalqalah":[77,79],"silent":[6,8],"hamzat_wasl":[83,84]},
+"76": {"ghunnah":[52,55],"idghaam_ghunnah":[73,77,179,183,215,220,220,225],"madd_2":[96,97,213,214],"madd_246":[262,263],"madd_munfasil":[174,176],"madd_muttasil":[37,39,79,81,185,187,227,229],"qalqalah":[28,30,104,106],"hamzat_wasl":[56,57,159,160,190,191]},
+"77": {"ikhfa":[51,55,127,130],"idghaam_ghunnah":[12,16,137,142,146,151],"idghaam_no_ghunnah":[40,45],"madd_2":[47,48,93,94],"madd_246":[180,181],"madd_munfasil":[5,7],"qalqalah":[20,22,27,29,55,57,104,106],"silent":[7,9],"hamzat_wasl":[151,152]},
+"78": {"ghunnah":[35,38,100,103],"ikhfa":[49,54,57,62,66,71],"madd_2":[110,111],"madd_246":[130,131],"madd_munfasil":[11,13,43,45,95,97],"silent":[6,8],"hamzat_wasl":[22,23,119,120]},
+"79": {"ghunnah":[80,83],"ikhfa":[70,73],"idghaam_ghunnah":[24,29,45,49],"idghaam_no_ghunnah":[89,95],"madd_2":[61,62,97,98],"madd_246":[102,103],"madd_munfasil":[75,77,83,85],"qalqalah":[51,53],"hamzat_wasl":[14,15]},
+"80": {"ghunnah":[4,7,91,94],"ikhfa":[48,53,156,160],"idghaam_ghunnah":[135,141],"idghaam_shafawi":[125,130],"madd_2":[292,293],"madd_246":[297,298],"madd_munfasil":[84,86,237,239,244,246],"qalqalah":[107,109,160,162,201,203],"silent":[22,24,39,41,86,88],"hamzat_wasl":[9,10,144,145,208,209,261,262,287,288]},
+"81": {"ghunnah":[57,60,124,127],"madd_2":[142,143],"madd_246":[147,148],"madd_munfasil":[7,9,16,19,43,45,52,54,90,92],"qalqalah":[62,64,86,88],"silent":[9,11,38,40],"hamzat_wasl":[61,62]},
+"82": {"ghunnah":[32,35,87,90],"madd_2":[96,97],"madd_246":[101,102],"madd_munfasil":[61,63],"qalqalah":[66,68],"hamzat_wasl":[10,11,22,23,46,47,55,56]},
+"83": {"ghunnah":[113,116],"ikhfa":[30,33,45,50,55,59],"idghaam_ghunnah":[81,85],"madd_2":[118,119],"madd_246":[143,144],"qalqalah":[52,54],"hamzat_wasl":[71,72,125,126,136,137]},
+"84": {"madd_246":[106,107],"madd_munfasil":[31,33],"qalqalah":[60,62],"hamzat_wasl":[59,60,85,86]},
+"85": {"madd_2":[94,95],"madd_246":[99,100],"silent":[6,8,27,29],"hamzat_wasl":[11,12,89,90]},
+"86": {"ghunnah":[8,11],"madd_246":[98,99],"madd_munfasil":[13,15,41,43],"silent":[23,25],"hamzat_wasl":[50,51,74,75]},
+"87": {"ghunnah":[102,105],"idghaam_ghunnah":[39,43],"idghaam_no_ghunnah":[82,87,127,132],"madd_2":[2,3,107,108,167,168],"madd_246":[172,173],"silent":[19,21,34,36,67,69,77,79,115,117],"hamzat_wasl":[11,12,92,93,137,138,152,153,162,163]},
+"88": {"ghunnah":[4,7,175,178],"ikhfa":[123,127],"idghaam_ghunnah":[111,116],"lam_shamsiyyah":[83,84],"madd_2":[107,108,121,122],"madd_246":[209,210],"madd_munfasil":[39,41,170,172],"qalqalah":[159,161,189,191],"silent":[16,18,34,36],"hamzat_wasl":[50,51,82,83,140,141,179,180,195,196]},
+"89": {"ikhfa":[63,66],"ikhfa_shafawi":[34,38],"idghaam_shafawi":[19,24],"madd_2":[71,72],"madd_246":[76,77]},
+"90": {"ghunnah":[14,17,80,83,105,108,139,142],"ikhfa":[24,27],"idghaam_ghunnah":[114,118],"madd_2":[61,62,110,111],"madd_246":[181,182],"madd_munfasil":[5,7,64,66,100,102],"qalqalah":[75,77,165,167],"silent":[7,9],"hamzat_wasl":[84,85,143,144,170,171]},
+"91": {"ghunnah":[62,65],"ikhfa":[58,62],"madd_2":[71,72],"madd_246":[77,78],"qalqalah":[23,25],"silent":[6,8],"hamzat_wasl":[11,12,36,37]},
+"92": {"lam_shamsiyyah":[82,83],"madd_2":[86,87],"madd_246":[91,92],"hamzat_wasl":[31,32,50,51,81,82]},
+"93": {"idghaam_ghunnah":[74,79],"madd_2":[24,25],"madd_246":[109,110],"qalqalah":[50,52,103,105],"silent":[8,10]},
+"94": {"ghunnah":[4,7,45,48,90,93],"ikhfa":[84,88],"madd_246":[95,96],"madd_munfasil":[79,81],"hamzat_wasl":[18,19]},
+"95": {"ghunnah":[21,24],"madd_2":[37,38],"madd_246":[50,51],"silent":[6,8],"hamzat_wasl":[11,12,43,44]},
+"96": {"ghunnah":[4,7,109,112],"ikhfa":[12,16,77,82],"madd_2":[39,40,58,59],"madd_246":[153,154],"madd_munfasil":[7,9,112,114],"madd_muttasil":[16,18],"qalqalah":[52,54],"hamzat_wasl":[21,22,62,63,129,130]},
+"97": {"ghunnah":[54,57,61,64],"madd_2":[68,69],"madd_246":[74,75],"madd_munfasil":[11,13,49,51],"silent":[6,8],"hamzat_wasl":[22,23]},
+"98": {"ghunnah":[43,46],"lam_shamsiyyah":[67,68],"madd_2":[48,49],"madd_246":[73,74],"madd_munfasil":[38,40],"hamzat_wasl":[55,56,66,67]},
+"99": {"ghunnah":[4,7],"ikhfa":[91,95],"madd_246":[115,116],"madd_munfasil":[39,42],"madd_muttasil":[95,97],"qalqalah":[72,74],"silent":[16,18,79,81],"hamzat_wasl":[71,72,100,101]},
+"100": {"ghunnah":[299,302,336,339],"ikhfa":[110,114],"iqlab":[235,238],"idghaam_ghunnah":[59,64,145,150,246,251],"idghaam_no_ghunnah":[316,321],"idghaam_shafawi":[214,219],"lam_shamsiyyah":[192,193,257,258],"madd_2":[51,52,83,84,104,105,265,266,341,342],"madd_246":[366,367],"madd_munfasil":[72,74,166,168,294,296],"madd_muttasil":[205,207,329,331],"qalqalah":[114,116,121,123,152,154,196,198,227,229],"silent":[44,46],"hamzat_wasl":[26,27,191,192,222,223,256,257,348,349,359,360]},
+"101": {"ikhfa":[56,60,118,121],"idghaam_ghunnah":[179,184],"lam_shamsiyyah":[91,92,136,137,199,200],"madd_2":[97,98,100,101,129,130,203,204],"madd_246":[208,209],"qalqalah":[8,10,190,192],"hamzat_wasl":[29,30,68,69,90,91,106,107,135,136,148,149,198,199]},
+"102": {"ikhfa":[60,63],"iqlab":[16,18],"madd_2":[2,3],"madd_246":[119,120],"madd_munfasil":[88,90],"madd_muttasil":[19,21],"qalqalah":[82,84],"silent":[90,92],"hamzat_wasl":[24,25]},
+"103": {"ghunnah":[18,21],"lam_shamsiyyah":[17,18],"madd_246":[51,52],"madd_munfasil":[4,6],"hamzat_wasl":[16,17]},
+"104": {"idghaam_no_ghunnah":[63,68],"madd_2":[72,73],"madd_246":[77,78],"qalqalah":[36,38]},
+"105": {"ikhfa":[23,27],"idghaam_ghunnah":[9,14],"lam_shamsiyyah":[30,31],"madd_2":[36,37,39,40],"madd_246":[99,100],"hamzat_wasl":[29,30,45,46]},
+"106": {"ikhfa_shafawi":[25,29],"idghaam_shafawi":[48,53],"madd_246":[59,60],"hamzat_wasl":[29,30]},
+"107": {"ikhfa":[17,21],"idghaam_ghunnah":[40,45,100,104],"lam_shamsiyyah":[83,84],"madd_2":[34,35],"madd_246":[121,122],"madd_munfasil":[10,12],"silent":[12,14],"hamzat_wasl":[56,57,82,83]},
+"108": {"madd_2":[7,8,12,13,100,101],"madd_246":[142,143],"madd_munfasil":[21,23,30,32,116,118],"qalqalah":[26,28,96,98],"silent":[32,34],"hamzat_wasl":[41,42,80,81,104,105,131,132]},
+"109": {"ikhfa":[21,25,129,132,173,177],"idghaam_ghunnah":[45,51],"idghaam_no_ghunnah":[214,219],"idghaam_shafawi":[65,70],"madd_2":[153,154],"madd_246":[255,256],"madd_munfasil":[4,6,54,56,87,90],"qalqalah":[25,27,177,179],"silent":[108,110,135,137,236,238],"hamzat_wasl":[80,81,115,116,161,162,196,197,228,229]},
+"110": {"ghunnah":[42,45,52,55],"idghaam_ghunnah":[108,113],"lam_shamsiyyah":[29,30],"madd_246":[170,171],"madd_munfasil":[5,8,45,47],"madd_muttasil":[77,79,115,117],"qalqalah":[62,64,164,166],"silent":[47,49,72,74],"hamzat_wasl":[15,16,28,29,149,150,159,160]},
+"111": {"ikhfa":[98,102],"idghaam_ghunnah":[77,82,157,161,164,169,186,190],"idghaam_no_ghunnah":[35,40,176,181],"madd_2":[57,58,95,96],"madd_246":[196,197],"qalqalah":[4,6,30,32],"silent":[42,44],"hamzat_wasl":[48,49,110,111]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/13.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/13.json
index 9a1ebcf..7e9c038 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/13.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/13.json
@@ -1,45 +1,45 @@
{
-"1": {"ghunnah":[86,89,130,133,145,148],"idgham":[103,108,144,145],"madd":[58,59,69,70,81,83,127,128,164,165],"madd-lazim":[40,42,42,44],"wasl":[62,63,75,76,114,115,143,144]},
-"2": {"ghunnah":[51,55,67,70,157,160,213,217],"idgham":[24,25,108,109,133,137,150,155,159,164],"madd":[30,31,33,34,200,201,221,223,243,244],"qalqalah":[137,139],"wasl":[8,9,23,24,71,72,87,88,107,108,119,120,172,173,192,193]},
-"3": {"ghunnah":[74,78,149,152,160,163],"idgham":[67,72,83,84,148,149,185,190,195,199],"madd":[51,52,65,66,91,92,170,171,183,184,208,209],"wasl":[7,8,21,22,82,83,120,121,138,139,147,148]},
-"4": {"ghunnah":[43,46,83,87,174,178,192,195],"idgham":[21,26,37,41,48,53,64,68,73,77,93,97,112,116,130,134,138,142,217,222,227,231],"madd":[30,31,35,36,46,47,62,63,127,129,134,135,202,203,215,216,237,238],"wasl":[6,7,180,181]},
-"5": {"ghunnah":[4,8,22,26,45,48,63,66,79,83,208,211],"idgham":[207,208],"madd":[54,55,95,97,142,144,158,159,164,166,189,191,202,203,229,230,234,235],"qalqalah":[12,14],"silent":[91,93,119,121,138,140,185,187],"wasl":[102,103,149,150,206,207]},
-"6": {"ghunnah":[70,74,100,103,133,136,162,165],"idgham":[23,24,127,132,132,133],"madd":[92,93,191,192],"qalqalah":[37,39,58,60,74,76,192,193],"wasl":[22,23,42,43,83,84,184,185]},
-"7": {"ghunnah":[41,44,82,85,92,95,98,101],"idgham":[62,67,67,72,102,106],"madd":[36,38,77,79,87,89,123,124],"qalqalah":[124,125],"silent":[27,29],"wasl":[10,11]},
-"8": {"ghunnah":[38,41,104,107],"madd":[109,110,119,120],"qalqalah":[115,117],"wasl":[58,59]},
-"9": {"idgham":[21,22],"madd":[2,3,27,28,53,54],"wasl":[8,9,20,21,33,34,44,45]},
-"10": {"ghunnah":[12,15,45,49,81,85,103,107,110,113],"idgham":[7,12,15,20,109,110],"madd":[4,6,58,59,115,116],"wasl":[31,32,86,87,108,109]},
-"11": {"ghunnah":[23,26,95,98,163,166,205,209,212,217,250,254],"idgham":[17,22,245,250,263,267],"madd":[4,5,15,16,56,57,71,72,179,181,209,211,233,234,259,260,267,268],"silent":[152,154],"wasl":[85,86,99,100,190,191]},
-"12": {"ghunnah":[55,58],"idgham":[38,43,48,53,62,63,73,74],"madd":[79,80],"wasl":[5,6,23,24,61,62,72,73]},
-"13": {"idgham":[13,14,80,81,110,114],"madd":[32,33,43,45,66,67,86,87,116,118,132,133,175,176],"wasl":[12,13,36,37,79,80,145,146,168,169]},
-"14": {"ghunnah":[48,52,82,86],"madd":[4,5,57,58,104,105,131,133,168,169,175,176,187,189,197,198,221,222],"qalqalah":[38,40,140,142],"wasl":[15,16,26,27,126,127,192,193]},
-"15": {"ghunnah":[21,25,82,86],"idgham":[28,29,58,63,68,73],"madd":[34,35,37,38,77,78,107,108],"wasl":[27,28,43,44,86,87,99,100]},
-"16": {"ghunnah":[79,83,124,127,152,157,237,240],"idgham":[7,12,17,18,74,79,139,144,221,222,236,237,365,369],"madd":[23,24,26,27,88,90,99,101,229,230,273,275,298,299,306,307,348,349,379,380,393,394],"silent":[256,258,285,287],"wasl":[16,17,32,33,47,48,64,65,175,176,189,190,220,221,235,236,312,313,338,339,374,375,385,386]},
-"17": {"ghunnah":[2,5,30,34,51,55,110,113,141,144,180,184,253,256,292,295,303,306,311,314],"idgham":[14,15,79,80,93,99,103,108,140,141,187,192,259,260,286,290,310,311],"madd":[20,22,27,29,155,157,178,179,198,199,204,205,243,244,283,285,347,348,379,380],"qalqalah":[149,151],"wasl":[13,14,68,69,78,79,139,140,148,149,219,220,227,228,238,239,258,259,309,310,333,334,362,363,370,371]},
-"18": {"ghunnah":[94,97,230,233],"idgham":[102,107,129,134],"madd":[85,86,142,143,150,151,170,172,179,181,195,197,220,221,252,253],"qalqalah":[253,254],"silent":[22,24,78,80,163,165,175,177],"wasl":[11,12,37,38,51,52,113,114,154,155,200,201,245,246]},
-"19": {"ghunnah":[19,22,29,32,90,93],"idgham":[6,10,46,51],"madd":[24,26,84,87,128,129],"qalqalah":[129,130],"silent":[111,113,116,118],"wasl":[57,58,119,120]},
-"20": {"ghunnah":[44,47],"madd":[61,62],"qalqalah":[62,63],"wasl":[28,29,53,54]},
-"21": {"idgham":[51,55],"madd":[24,26,46,48,99,101,111,112],"qalqalah":[112,113],"wasl":[2,3,34,35,104,105]},
-"22": {"ghunnah":[80,83,91,94],"idgham":[65,66,114,119,129,133,160,161,201,202],"madd":[29,31,72,73,104,105,178,180,205,206],"qalqalah":[23,25,36,38,100,102,135,137,194,196],"silent":[19,21,61,63,71,72,86,88,174,176],"wasl":[2,3,22,23,64,65,147,148,159,160,200,201]},
-"23": {"ghunnah":[2,5,35,39,140,144],"idgham":[14,18,135,140],"madd":[5,6,54,56,71,72,89,90,106,108,150,151],"qalqalah":[11,13,18,20,117,119,151,152],"wasl":[99,100]},
-"24": {"ghunnah":[16,20],"idgham":[53,54],"madd":[4,5,57,58],"qalqalah":[46,48],"wasl":[52,53]},
-"25": {"ghunnah":[14,17,41,44],"idgham":[105,109,164,165,192,193],"madd":[55,56,60,61,78,80,100,102,149,151,186,188,196,197],"qalqalah":[66,68],"silent":[145,147],"wasl":[2,3,30,31,88,89,133,134,163,164,191,192]},
-"26": {"idgham":[18,19,31,35,80,81,109,110],"madd":[37,39,75,76,104,105,147,148],"qalqalah":[10,12,46,48],"silent":[62,64,74,75,103,104],"wasl":[17,18,67,68,79,80,96,97,108,109,123,124]},
-"27": {"ghunnah":[41,44,86,89],"idgham":[62,67,67,72,108,112],"madd":[36,38,77,78,114,116,127,129,148,149],"qalqalah":[149,150],"silent":[27,29],"wasl":[10,11,90,91]},
-"28": {"ghunnah":[31,34,44,48,94,97],"madd":[105,106],"qalqalah":[25,27,88,90,106,107],"silent":[18,20],"wasl":[55,56,78,79,98,99]},
-"29": {"idgham":[34,35],"madd":[38,39,43,44,76,77],"qalqalah":[77,78],"silent":[18,20,30,32],"wasl":[33,34]},
-"30": {"ghunnah":[31,34,35,39,51,55],"idgham":[69,74,149,150],"madd":[4,5,20,21,26,28,61,63,102,104,115,117,157,158,180,182,187,188,239,240],"qalqalah":[39,41,55,57,240,241],"silent":[82,84],"wasl":[96,97,148,149]},
-"31": {"ghunnah":[9,12,21,26,222,225,281,285,334,338,380,383],"idgham":[187,192,221,222,235,240,328,334],"madd":[180,182,199,201,413,414],"qalqalah":[414,415],"silent":[153,155,182,184,269,271,296,298],"wasl":[39,40,70,71,98,99,123,124,163,164,204,205,220,221,252,253,370,371,384,385,405,406]},
-"32": {"ghunnah":[33,37,80,83],"idgham":[28,33],"madd":[116,117],"qalqalah":[37,39,117,118],"silent":[75,77],"wasl":[9,10]},
-"33": {"ghunnah":[41,45,97,100,163,167],"idgham":[173,178,253,254,267,271],"madd":[16,18,85,87,126,127,169,170,296,297,305,306],"qalqalah":[306,307],"silent":[68,70,222,224,244,246],"wasl":[151,152,181,182,252,253,278,279]},
-"34": {"ghunnah":[14,18],"idgham":[33,34,86,91,104,108],"madd":[28,29,108,109],"qalqalah":[109,110],"silent":[27,28],"wasl":[20,21,32,33,55,56,94,95]},
-"35": {"ghunnah":[13,16,58,62,175,178],"idgham":[100,104,174,175],"madd":[79,80,95,97,164,165,178,179],"qalqalah":[50,52,122,124,153,155],"silent":[145,147],"wasl":[8,9,19,20,34,35,70,71,128,129,138,139,159,160,173,174]},
-"36": {"ghunnah":[59,62,100,103,123,126],"idgham":[96,100],"madd":[21,22,34,35,54,56,114,115,128,130,166,168,182,184,220,221],"qalqalah":[196,198,221,222],"silent":[201,203],"wasl":[2,3,27,28,81,82,154,155]},
-"37": {"ghunnah":[14,17,76,80],"idgham":[41,46,136,140,144,148],"madd":[6,7,21,22,70,72,90,92,154,155],"qalqalah":[155,156],"wasl":[53,54,102,103,126,127]},
-"38": {"ghunnah":[32,36,169,173],"idgham":[26,32,70,75,84,88,110,114],"madd":[68,69,175,176],"qalqalah":[6,8,36,38,176,177],"wasl":[148,149]},
-"39": {"ghunnah":[46,49,56,59],"madd":[26,28,51,53,67,68],"qalqalah":[68,69],"silent":[7,9],"wasl":[10,11,60,61]},
-"40": {"ghunnah":[17,20,65,68,75,78],"idgham":[4,9],"madd":[98,99,121,122],"qalqalah":[122,123],"wasl":[30,31,91,92,114,115]},
-"41": {"ghunnah":[20,23,45,48],"madd":[115,116,139,140],"qalqalah":[61,63,140,141],"silent":[15,17],"wasl":[33,34,74,75,132,133]},
-"42": {"ghunnah":[26,30],"idgham":[65,70,101,105,144,145],"madd":[124,125,148,149],"qalqalah":[4,6,30,32,137,139],"wasl":[14,15,49,50,116,117,143,144]},
-"43": {"ghunnah":[44,49,75,80,109,112],"madd":[114,115,130,131],"qalqalah":[131,132],"silent":[27,29],"wasl":[10,11,61,62,123,124]}
+"1": {"ghunnah":[130,133,145,148],"ikhfa":[86,89],"idghaam_no_ghunnah":[103,108],"lam_shamsiyyah":[144,145],"madd_2":[58,59,69,70,127,128],"madd_246":[164,165],"madd_munfasil":[81,83],"madd_6":[40,42,42,44],"hamzat_wasl":[62,63,75,76,114,115,143,144]},
+"2": {"ghunnah":[67,70,157,160],"ikhfa":[51,55],"ikhfa_shafawi":[213,217],"idghaam_ghunnah":[133,137,150,155,159,164],"lam_shamsiyyah":[24,25,108,109],"madd_2":[30,31,33,34,200,201],"madd_246":[243,244],"madd_muttasil":[221,223],"qalqalah":[137,139],"hamzat_wasl":[8,9,23,24,71,72,87,88,107,108,119,120,172,173,192,193]},
+"3": {"ghunnah":[149,152,160,163],"ikhfa":[74,78],"idghaam_ghunnah":[67,72,195,199],"idghaam_no_ghunnah":[185,190],"lam_shamsiyyah":[83,84,148,149],"madd_2":[51,52,65,66,91,92,170,171,183,184],"madd_246":[208,209],"hamzat_wasl":[7,8,21,22,82,83,120,121,138,139,147,148]},
+"4": {"ghunnah":[43,46,192,195],"ikhfa":[83,87,174,178],"idghaam_ghunnah":[21,26,37,41,48,53,64,68,73,77,93,97,112,116,130,134,138,142,227,231],"idghaam_no_ghunnah":[217,222],"madd_2":[30,31,35,36,46,47,62,63,134,135,202,203,215,216],"madd_246":[237,238],"madd_muttasil":[127,129],"hamzat_wasl":[6,7,180,181]},
+"5": {"ghunnah":[45,48,63,66,208,211],"ikhfa":[4,8,22,26,79,83],"lam_shamsiyyah":[207,208],"madd_2":[54,55,158,159,202,203,229,230],"madd_246":[234,235],"madd_munfasil":[164,166],"madd_muttasil":[95,97,142,144,189,191],"qalqalah":[12,14],"silent":[91,93,119,121,138,140,185,187],"hamzat_wasl":[102,103,149,150,206,207]},
+"6": {"ghunnah":[100,103,133,136,162,165],"ikhfa":[70,74],"idghaam_no_ghunnah":[127,132],"lam_shamsiyyah":[23,24,132,133],"madd_2":[92,93],"madd_246":[191,192],"qalqalah":[37,39,58,60,74,76,192,193],"hamzat_wasl":[22,23,42,43,83,84,184,185]},
+"7": {"ghunnah":[82,85],"ikhfa":[41,44,92,95,98,101],"idghaam_ghunnah":[62,67,102,106],"idghaam_no_ghunnah":[67,72],"madd_246":[123,124],"madd_munfasil":[36,38,77,79,87,89],"qalqalah":[124,125],"silent":[27,29],"hamzat_wasl":[10,11]},
+"8": {"ikhfa":[38,41,104,107],"madd_2":[109,110],"madd_246":[119,120],"qalqalah":[115,117],"hamzat_wasl":[58,59]},
+"9": {"lam_shamsiyyah":[21,22],"madd_2":[2,3,27,28],"madd_246":[53,54],"hamzat_wasl":[8,9,20,21,33,34,44,45]},
+"10": {"ghunnah":[110,113],"ikhfa":[12,15,45,49],"iqlab":[81,85,103,107],"idghaam_ghunnah":[7,12],"idghaam_shafawi":[15,20],"lam_shamsiyyah":[109,110],"madd_2":[58,59],"madd_246":[115,116],"madd_muttasil":[4,6],"hamzat_wasl":[31,32,86,87,108,109]},
+"11": {"ghunnah":[95,98],"ikhfa":[163,166,205,209,212,217,250,254],"iqlab":[23,26],"idghaam_ghunnah":[17,22,263,267],"idghaam_shafawi":[245,250],"madd_2":[4,5,15,16,56,57,71,72,233,234,259,260],"madd_246":[267,268],"madd_munfasil":[179,181],"madd_muttasil":[209,211],"silent":[152,154],"hamzat_wasl":[85,86,99,100,190,191]},
+"12": {"ikhfa":[55,58],"idghaam_ghunnah":[38,43,48,53],"lam_shamsiyyah":[62,63,73,74],"madd_246":[79,80],"hamzat_wasl":[5,6,23,24,61,62,72,73]},
+"13": {"idghaam_ghunnah":[110,114],"lam_shamsiyyah":[13,14,80,81],"madd_2":[32,33,66,67,86,87,132,133],"madd_246":[175,176],"madd_muttasil":[43,45,116,118],"hamzat_wasl":[12,13,36,37,79,80,145,146,168,169]},
+"14": {"ikhfa":[48,52],"ikhfa_shafawi":[82,86],"madd_2":[4,5,57,58,104,105,168,169,175,176,197,198],"madd_246":[221,222],"madd_muttasil":[131,133,187,189],"qalqalah":[38,40,140,142],"hamzat_wasl":[15,16,26,27,126,127,192,193]},
+"15": {"ikhfa":[21,25],"ikhfa_shafawi":[82,86],"idghaam_ghunnah":[58,63,68,73],"lam_shamsiyyah":[28,29],"madd_2":[34,35,37,38,77,78],"madd_246":[107,108],"hamzat_wasl":[27,28,43,44,86,87,99,100]},
+"16": {"ghunnah":[237,240],"ikhfa":[79,83,124,127,152,157],"idghaam_ghunnah":[139,144,365,369],"idghaam_no_ghunnah":[7,12],"idghaam_shafawi":[74,79],"lam_shamsiyyah":[17,18,221,222,236,237],"madd_2":[23,24,26,27,229,230,298,299,306,307,348,349,379,380],"madd_246":[393,394],"madd_munfasil":[88,90],"madd_muttasil":[99,101,273,275],"silent":[256,258,285,287],"hamzat_wasl":[16,17,32,33,47,48,64,65,175,176,189,190,220,221,235,236,312,313,338,339,374,375,385,386]},
+"17": {"ghunnah":[110,113,141,144,253,256,292,295,311,314],"ikhfa":[2,5,30,34,180,184,303,306],"iqlab":[51,55],"idghaam_ghunnah":[103,108,187,192,286,290],"idghaam_no_ghunnah":[93,99],"lam_shamsiyyah":[14,15,79,80,140,141,259,260,310,311],"madd_2":[178,179,198,199,204,205,243,244,347,348],"madd_246":[379,380],"madd_muttasil":[20,22,27,29,155,157,283,285],"qalqalah":[149,151],"hamzat_wasl":[13,14,68,69,78,79,139,140,148,149,219,220,227,228,238,239,258,259,309,310,333,334,362,363,370,371]},
+"18": {"ghunnah":[94,97,230,233],"idghaam_ghunnah":[129,134],"idghaam_shafawi":[102,107],"madd_2":[85,86,142,143,150,151,220,221],"madd_246":[252,253],"madd_munfasil":[170,172],"madd_muttasil":[179,181,195,197],"qalqalah":[253,254],"silent":[22,24,78,80,163,165,175,177],"hamzat_wasl":[11,12,37,38,51,52,113,114,154,155,200,201,245,246]},
+"19": {"ghunnah":[19,22,90,93],"ikhfa":[29,32],"idghaam_ghunnah":[6,10],"idghaam_no_ghunnah":[46,51],"madd_246":[128,129],"madd_munfasil":[24,26,84,87],"qalqalah":[129,130],"silent":[111,113,116,118],"hamzat_wasl":[57,58,119,120]},
+"20": {"ikhfa":[44,47],"madd_246":[61,62],"qalqalah":[62,63],"hamzat_wasl":[28,29,53,54]},
+"21": {"idghaam_ghunnah":[51,55],"madd_246":[111,112],"madd_munfasil":[24,26,46,48],"madd_muttasil":[99,101],"qalqalah":[112,113],"hamzat_wasl":[2,3,34,35,104,105]},
+"22": {"ghunnah":[91,94],"ikhfa":[80,83],"idghaam_ghunnah":[114,119,129,133],"lam_shamsiyyah":[65,66,160,161,201,202],"madd_2":[72,73,104,105],"madd_246":[205,206],"madd_muttasil":[29,31,178,180],"qalqalah":[23,25,36,38,100,102,135,137,194,196],"silent":[19,21,61,63,71,72,86,88,174,176],"hamzat_wasl":[2,3,22,23,64,65,147,148,159,160,200,201]},
+"23": {"ghunnah":[2,5],"ikhfa":[35,39,140,144],"idghaam_ghunnah":[14,18],"idghaam_shafawi":[135,140],"madd_2":[5,6,71,72,89,90],"madd_246":[150,151],"madd_muttasil":[54,56,106,108],"qalqalah":[11,13,18,20,117,119,151,152],"hamzat_wasl":[99,100]},
+"24": {"ikhfa_shafawi":[16,20],"lam_shamsiyyah":[53,54],"madd_2":[4,5],"madd_246":[57,58],"qalqalah":[46,48],"hamzat_wasl":[52,53]},
+"25": {"ikhfa":[14,17],"iqlab":[41,44],"idghaam_ghunnah":[105,109],"lam_shamsiyyah":[164,165,192,193],"madd_2":[55,56,60,61],"madd_246":[196,197],"madd_munfasil":[78,80,100,102],"madd_muttasil":[149,151,186,188],"qalqalah":[66,68],"silent":[145,147],"hamzat_wasl":[2,3,30,31,88,89,133,134,163,164,191,192]},
+"26": {"idghaam_ghunnah":[31,35],"lam_shamsiyyah":[18,19,80,81,109,110],"madd_2":[75,76,104,105],"madd_246":[147,148],"madd_muttasil":[37,39],"qalqalah":[10,12,46,48],"silent":[62,64,74,75,103,104],"hamzat_wasl":[17,18,67,68,79,80,96,97,108,109,123,124]},
+"27": {"ghunnah":[86,89],"ikhfa":[41,44],"idghaam_ghunnah":[62,67,108,112],"idghaam_no_ghunnah":[67,72],"madd_2":[77,78],"madd_246":[148,149],"madd_munfasil":[36,38,127,129],"madd_muttasil":[114,116],"qalqalah":[149,150],"silent":[27,29],"hamzat_wasl":[10,11,90,91]},
+"28": {"ghunnah":[31,34,94,97],"ikhfa_shafawi":[44,48],"madd_246":[105,106],"qalqalah":[25,27,88,90,106,107],"silent":[18,20],"hamzat_wasl":[55,56,78,79,98,99]},
+"29": {"lam_shamsiyyah":[34,35],"madd_2":[38,39,43,44],"madd_246":[76,77],"qalqalah":[77,78],"silent":[18,20,30,32],"hamzat_wasl":[33,34]},
+"30": {"ghunnah":[31,34],"ikhfa":[35,39,51,55],"idghaam_no_ghunnah":[69,74],"lam_shamsiyyah":[149,150],"madd_2":[4,5,20,21,157,158,187,188],"madd_246":[239,240],"madd_munfasil":[26,28,61,63,102,104,115,117,180,182],"qalqalah":[39,41,55,57,240,241],"silent":[82,84],"hamzat_wasl":[96,97,148,149]},
+"31": {"ghunnah":[9,12,222,225,380,383],"ikhfa":[21,26,334,338],"ikhfa_shafawi":[281,285],"idghaam_ghunnah":[235,240,328,334],"idghaam_no_ghunnah":[187,192],"lam_shamsiyyah":[221,222],"madd_246":[413,414],"madd_munfasil":[180,182],"madd_muttasil":[199,201],"qalqalah":[414,415],"silent":[153,155,182,184,269,271,296,298],"hamzat_wasl":[39,40,70,71,98,99,123,124,163,164,204,205,220,221,252,253,370,371,384,385,405,406]},
+"32": {"ghunnah":[80,83],"ikhfa":[33,37],"idghaam_ghunnah":[28,33],"madd_246":[116,117],"qalqalah":[37,39,117,118],"silent":[75,77],"hamzat_wasl":[9,10]},
+"33": {"ghunnah":[97,100],"ikhfa_shafawi":[163,167],"iqlab":[41,45],"idghaam_ghunnah":[173,178,267,271],"lam_shamsiyyah":[253,254],"madd_2":[126,127,169,170,296,297],"madd_246":[305,306],"madd_muttasil":[16,18,85,87],"qalqalah":[306,307],"silent":[68,70,222,224,244,246],"hamzat_wasl":[151,152,181,182,252,253,278,279]},
+"34": {"ikhfa":[14,18],"idghaam_ghunnah":[104,108],"idghaam_shafawi":[86,91],"lam_shamsiyyah":[33,34],"madd_2":[28,29],"madd_246":[108,109],"qalqalah":[109,110],"silent":[27,28],"hamzat_wasl":[20,21,32,33,55,56,94,95]},
+"35": {"ghunnah":[13,16,175,178],"ikhfa":[58,62],"idghaam_ghunnah":[100,104],"lam_shamsiyyah":[174,175],"madd_2":[79,80,164,165],"madd_246":[178,179],"madd_muttasil":[95,97],"qalqalah":[50,52,122,124,153,155],"silent":[145,147],"hamzat_wasl":[8,9,19,20,34,35,70,71,128,129,138,139,159,160,173,174]},
+"36": {"ghunnah":[123,126],"ikhfa":[59,62,100,103],"idghaam_ghunnah":[96,100],"madd_2":[21,22,34,35,114,115],"madd_246":[220,221],"madd_munfasil":[54,56,128,130,166,168,182,184],"qalqalah":[196,198,221,222],"silent":[201,203],"hamzat_wasl":[2,3,27,28,81,82,154,155]},
+"37": {"ikhfa":[14,17],"ikhfa_shafawi":[76,80],"idghaam_ghunnah":[41,46,136,140,144,148],"madd_2":[6,7,21,22],"madd_246":[154,155],"madd_muttasil":[70,72,90,92],"qalqalah":[155,156],"hamzat_wasl":[53,54,102,103,126,127]},
+"38": {"ikhfa":[32,36,169,173],"idghaam_ghunnah":[26,32,70,75,84,88,110,114],"madd_2":[68,69],"madd_246":[175,176],"qalqalah":[6,8,36,38,176,177],"hamzat_wasl":[148,149]},
+"39": {"ghunnah":[56,59],"ikhfa":[46,49],"madd_246":[67,68],"madd_munfasil":[51,53],"madd_muttasil":[26,28],"qalqalah":[68,69],"silent":[7,9],"hamzat_wasl":[10,11,60,61]},
+"40": {"ghunnah":[17,20,65,68,75,78],"idghaam_ghunnah":[4,9],"madd_2":[98,99],"madd_246":[121,122],"qalqalah":[122,123],"hamzat_wasl":[30,31,91,92,114,115]},
+"41": {"ghunnah":[20,23],"ikhfa":[45,48],"madd_2":[115,116],"madd_246":[139,140],"qalqalah":[61,63,140,141],"silent":[15,17],"hamzat_wasl":[33,34,74,75,132,133]},
+"42": {"ikhfa":[26,30],"idghaam_ghunnah":[65,70,101,105],"lam_shamsiyyah":[144,145],"madd_2":[124,125],"madd_246":[148,149],"qalqalah":[4,6,30,32,137,139],"hamzat_wasl":[14,15,49,50,116,117,143,144]},
+"43": {"ikhfa":[44,49,109,112],"iqlab":[75,80],"madd_2":[114,115],"madd_246":[130,131],"qalqalah":[131,132],"silent":[27,29],"hamzat_wasl":[10,11,61,62,123,124]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/14.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/14.json
index 5e6212a..5c5c23c 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/14.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/14.json
@@ -1,54 +1,54 @@
{
-"1": {"ghunnah":[54,57,87,90,120,123],"idgham":[86,87,100,101,119,120],"madd":[48,49,61,62,108,109,157,158,179,180],"madd-lazim":[40,42],"qalqalah":[180,181],"wasl":[85,86,99,100,118,119,161,162,172,173]},
-"2": {"ghunnah":[100,104],"idgham":[31,32,71,76],"madd":[20,21,37,38,40,41,80,81,106,107],"qalqalah":[107,108],"wasl":[8,9,30,31,54,55]},
-"3": {"ghunnah":[82,86,146,150],"idgham":[38,39],"madd":[33,34,129,131,144,145,153,154],"qalqalah":[104,106,154,155],"silent":[32,33,125,127],"wasl":[25,26,37,38,54,55,92,93]},
-"4": {"idgham":[21,26,98,102,121,125],"madd":[4,6,57,58,104,106,127,129,157,158],"wasl":[88,89,139,140,150,151]},
-"5": {"ghunnah":[94,97,112,116,136,139,179,183],"idgham":[74,75,93,94,161,166],"madd":[37,38,42,44,82,83,122,123,146,147,159,160,185,186],"qalqalah":[6,8,56,58],"wasl":[73,74,92,93,126,127]},
-"6": {"ghunnah":[78,81,215,219],"idgham":[85,90,224,229,229,234],"madd":[82,83,127,129,164,166,193,195,210,211,221,223,246,247],"qalqalah":[160,162],"silent":[40,42],"wasl":[32,33,52,53,132,133]},
-"7": {"ghunnah":[31,35,53,56,67,71,82,85],"madd":[101,102],"qalqalah":[102,103]},
-"8": {"ghunnah":[19,23,36,39,46,50,68,73,75,78],"madd":[13,16,29,31,101,102],"qalqalah":[102,103],"silent":[31,33],"wasl":[52,53,79,80]},
-"9": {"ghunnah":[39,43,98,101,164,168,240,243,272,276,284,287,304,307],"idgham":[63,67,71,75,299,304],"madd":[145,147,178,179,189,191,209,211,218,219,233,235,259,261,278,279,320,322,336,337],"qalqalah":[43,45,311,313,337,338],"silent":[24,26,191,193,235,237],"wasl":[27,28,85,86,135,136,168,169]},
-"10": {"ghunnah":[37,41,105,109,155,158,157,162,177,180,221,225,237,240],"idgham":[48,49,100,105,148,153,195,200,291,296],"madd":[54,55,57,58,139,142,165,167,262,264,289,290,298,299],"qalqalah":[75,77],"silent":[167,169],"wasl":[25,26,47,48,63,64]},
-"11": {"ghunnah":[71,74,87,90,161,165],"idgham":[28,33,50,55,100,104,148,153],"madd":[68,69,106,108,125,126,143,145,171,172,242,243],"wasl":[75,76,191,192,207,208,231,232]},
-"12": {"ghunnah":[85,88],"madd":[10,12,58,59,98,100,163,164],"qalqalah":[50,52],"wasl":[38,39,125,126,149,150]},
-"13": {"ghunnah":[51,54,89,92,151,154],"idgham":[56,61,156,157],"madd":[72,74,116,119,160,161,165,166],"silent":[25,27],"wasl":[8,9,155,156]},
-"14": {"ghunnah":[12,15,33,36],"madd":[48,49,88,89],"qalqalah":[89,90],"wasl":[20,21]},
-"15": {"madd":[44,45],"qalqalah":[45,46],"silent":[14,16],"wasl":[2,3]},
-"16": {"ghunnah":[21,24,48,52],"idgham":[3,7,40,45],"madd":[9,11,15,16,45,47,54,55],"qalqalah":[55,56]},
-"17": {"ghunnah":[64,68],"idgham":[78,82,99,103,105,109],"madd":[13,14,38,39,111,113,117,118,131,132],"wasl":[52,53]},
-"18": {"ghunnah":[127,130,154,158],"idgham":[81,82,106,111,170,171],"madd":[46,47,158,159,176,177,187,188],"qalqalah":[115,117,188,189],"silent":[25,27,139,141],"wasl":[8,9,64,65,80,81,169,170,180,181]},
-"19": {"ghunnah":[14,17,110,114],"idgham":[34,35,72,76],"madd":[40,41,43,44,116,117],"qalqalah":[87,89,117,118],"wasl":[18,19,33,34,49,50,61,62]},
-"20": {"madd":[8,9,34,35],"wasl":[20,21]},
-"21": {"ghunnah":[26,31,82,85,89,92,106,111,118,121,136,139,164,168,171,175],"idgham":[38,39,121,126,281,286],"madd":[46,48,75,77,192,193,215,216,225,227,238,240,251,253,288,289],"silent":[9,11,50,52,77,79,179,181],"wasl":[37,38,64,65,154,155,197,198]},
-"22": {"ghunnah":[23,26,47,50,148,152,170,174,237,240,283,286,286,290,304,307,343,347,354,357],"idgham":[9,10,92,93,143,148,244,249,359,360],"madd":[17,18,156,157,165,167,230,232,249,251,278,280,322,324,363,364,391,392],"qalqalah":[194,196,347,349],"silent":[232,234],"wasl":[8,9,35,36,51,52,77,78,187,188,358,359]},
-"23": {"ghunnah":[60,63,65,69,77,81],"idgham":[45,46],"madd":[49,50,54,55,63,64,98,99,104,105,164,165],"qalqalah":[4,6,69,71],"silent":[29,31,41,43],"wasl":[11,12,44,45,89,90]},
-"24": {"ghunnah":[39,44,49,53,59,63,70,74],"idgham":[98,102,117,118],"madd":[123,125],"wasl":[26,27,116,117]},
-"25": {"ghunnah":[29,33,85,88],"idgham":[84,85],"madd":[6,8,115,116],"wasl":[61,62,69,70]},
-"26": {"ghunnah":[26,30,62,66,93,97],"madd":[99,100],"qalqalah":[50,52],"wasl":[49,50,71,72]},
-"27": {"idgham":[52,53,79,80,127,128],"madd":[74,75,131,132,167,169],"silent":[36,38,73,74],"wasl":[10,11,18,19,41,42,51,52,66,67,78,79,95,96,118,119,126,127,151,152]},
-"28": {"idgham":[61,66],"madd":[101,102],"silent":[36,38,74,76],"wasl":[18,19,48,49,94,95]},
-"29": {"ghunnah":[4,7],"madd":[40,41],"wasl":[33,34]},
-"30": {"ghunnah":[22,25,46,50,81,84,105,108],"idgham":[27,33,104,105],"madd":[57,58,108,109],"silent":[9,11,41,43,74,76],"wasl":[103,104]},
-"31": {"ghunnah":[65,68,76,79,119,123,158,162],"idgham":[50,51,99,104,114,119,130,134,146,151],"madd":[57,58,89,90,176,177],"qalqalah":[85,87,123,125],"silent":[35,37,46,48,56,57,71,73],"wasl":[17,18,49,50]},
-"32": {"ghunnah":[53,56,81,85],"idgham":[24,25,65,66,106,107,123,129],"madd":[30,31,33,34,71,73,78,80,98,99,114,115,196,197,224,225],"qalqalah":[165,167],"wasl":[8,9,23,24,39,40,64,65,105,106,151,152,176,177,215,216]},
-"33": {"ghunnah":[82,85],"idgham":[18,19,81,82],"madd":[41,43,87,88],"wasl":[17,18,29,30,69,70,80,81]},
-"34": {"ghunnah":[16,20,46,50,94,97,103,106,118,122],"idgham":[11,16],"madd":[8,9,89,91,106,107,125,126],"silent":[56,58],"wasl":[68,69,98,99]},
-"35": {"idgham":[63,68,91,96],"madd":[19,20,42,43,112,113],"qalqalah":[15,17,33,35,69,71,73,75],"wasl":[32,33,47,48,68,69,103,104]},
-"36": {"ghunnah":[8,11,13,16,45,48,56,60,72,75,81,84,106,109],"idgham":[34,40,44,45,118,123],"madd":[77,78,125,126],"wasl":[43,44]},
-"37": {"ghunnah":[13,16,25,28,31,35,73,76,163,166],"idgham":[122,123,153,158,162,163,201,206,210,211],"madd":[8,10,16,18,129,130,176,178,218,219,242,243],"qalqalah":[136,138,197,199],"silent":[118,120,128,129],"wasl":[86,87,121,122,135,136,161,162,192,193,209,210]},
-"38": {"ghunnah":[12,15,85,89,92,96],"idgham":[119,120],"madd":[7,9,125,127],"wasl":[75,76,98,99,118,119]},
-"39": {"ghunnah":[80,83],"idgham":[102,103],"madd":[59,60,74,75,108,110],"wasl":[18,19,43,44,101,102]},
-"40": {"ghunnah":[41,45],"idgham":[26,27],"madd":[33,34,80,82],"qalqalah":[7,9],"silent":[32,33],"wasl":[6,7,25,26]},
-"41": {"madd":[27,28,76,77],"qalqalah":[77,78],"wasl":[9,10,69,70]},
-"42": {"ghunnah":[14,17,37,40,67,70,95,99],"idgham":[52,53],"madd":[28,29,56,57,121,122],"qalqalah":[117,119],"wasl":[18,19,51,52,112,113]},
-"43": {"madd":[92,94],"qalqalah":[14,16]},
-"44": {"ghunnah":[4,7,12,15,114,118,201,205,223,227],"idgham":[11,12,122,127,156,157,196,201,218,223],"madd":[86,88,98,100,105,108,181,183,229,230],"qalqalah":[129,131,188,190,205,207],"silent":[76,78,183,185],"wasl":[10,11,38,39,59,60,155,156]},
-"45": {"ghunnah":[6,9,49,52],"madd":[20,21,42,44,130,131],"qalqalah":[108,110],"silent":[44,46],"wasl":[26,27,121,122]},
-"46": {"ghunnah":[32,35,59,63],"madd":[102,103],"qalqalah":[4,6],"silent":[14,16],"wasl":[36,37,95,96]},
-"47": {"ghunnah":[14,17,58,61,76,80,83,86],"madd":[43,44,53,55,88,89],"wasl":[18,19,62,63,82,83]},
-"48": {"idgham":[47,48],"madd":[53,54,56,57,85,86,99,100],"silent":[69,71],"wasl":[17,18,34,35,46,47,80,81,91,92]},
-"49": {"idgham":[32,37],"madd":[61,62],"qalqalah":[13,15,62,63],"wasl":[8,9,52,53]},
-"50": {"ghunnah":[17,21,54,57],"idgham":[12,17,27,31,53,54],"madd":[57,58],"wasl":[52,53]},
-"51": {"ghunnah":[48,51],"idgham":[30,35],"madd":[75,76],"qalqalah":[4,6,76,77],"wasl":[11,12,52,53,68,69]},
-"52": {"ghunnah":[19,22,32,35,66,69],"idgham":[13,18,18,19,84,88,92,96],"madd":[2,3,11,12,45,46,59,61,82,83,88,89,128,129],"qalqalah":[129,130],"silent":[38,40,61,63,111,113,116,118],"wasl":[119,120]}
+"1": {"ghunnah":[87,90,120,123],"ikhfa":[54,57],"lam_shamsiyyah":[86,87,100,101,119,120],"madd_2":[48,49,61,62,108,109,157,158],"madd_246":[179,180],"madd_6":[40,42],"qalqalah":[180,181],"hamzat_wasl":[85,86,99,100,118,119,161,162,172,173]},
+"2": {"ikhfa":[100,104],"idghaam_no_ghunnah":[71,76],"lam_shamsiyyah":[31,32],"madd_2":[20,21,37,38,40,41,80,81],"madd_246":[106,107],"qalqalah":[107,108],"hamzat_wasl":[8,9,30,31,54,55]},
+"3": {"ikhfa":[82,86],"iqlab":[146,150],"lam_shamsiyyah":[38,39],"madd_2":[33,34,144,145],"madd_246":[153,154],"madd_muttasil":[129,131],"qalqalah":[104,106,154,155],"silent":[32,33,125,127],"hamzat_wasl":[25,26,37,38,54,55,92,93]},
+"4": {"idghaam_ghunnah":[98,102,121,125],"idghaam_no_ghunnah":[21,26],"madd_2":[57,58],"madd_246":[157,158],"madd_munfasil":[4,6],"madd_muttasil":[104,106,127,129],"hamzat_wasl":[88,89,139,140,150,151]},
+"5": {"ghunnah":[94,97,136,139],"ikhfa":[179,183],"ikhfa_shafawi":[112,116],"idghaam_no_ghunnah":[161,166],"lam_shamsiyyah":[74,75,93,94],"madd_2":[37,38,82,83,122,123,146,147,159,160],"madd_246":[185,186],"madd_munfasil":[42,44],"qalqalah":[6,8,56,58],"hamzat_wasl":[73,74,92,93,126,127]},
+"6": {"ikhfa":[78,81],"ikhfa_shafawi":[215,219],"idghaam_ghunnah":[224,229],"idghaam_no_ghunnah":[229,234],"idghaam_shafawi":[85,90],"madd_2":[82,83,210,211],"madd_246":[246,247],"madd_muttasil":[127,129,164,166,193,195,221,223],"qalqalah":[160,162],"silent":[40,42],"hamzat_wasl":[32,33,52,53,132,133]},
+"7": {"ghunnah":[53,56,82,85],"ikhfa":[31,35,67,71],"madd_246":[101,102],"qalqalah":[102,103]},
+"8": {"ghunnah":[75,78],"ikhfa":[19,23,36,39,46,50,68,73],"madd_246":[101,102],"madd_munfasil":[13,16,29,31],"qalqalah":[102,103],"silent":[31,33],"hamzat_wasl":[52,53,79,80]},
+"9": {"ghunnah":[240,243,284,287,304,307],"ikhfa":[39,43],"ikhfa_shafawi":[164,168,272,276],"iqlab":[98,101],"idghaam_ghunnah":[63,67,71,75,299,304],"madd_2":[178,179,218,219,278,279],"madd_246":[336,337],"madd_munfasil":[189,191,209,211,233,235,259,261,320,322],"madd_muttasil":[145,147],"qalqalah":[43,45,311,313,337,338],"silent":[24,26,191,193,235,237],"hamzat_wasl":[27,28,85,86,135,136,168,169]},
+"10": {"ghunnah":[155,158,237,240],"ikhfa":[37,41,105,109,157,162,177,180,221,225],"idghaam_ghunnah":[148,153,195,200,291,296],"idghaam_shafawi":[100,105],"lam_shamsiyyah":[48,49],"madd_2":[54,55,57,58,289,290],"madd_246":[298,299],"madd_munfasil":[139,142,165,167],"madd_muttasil":[262,264],"qalqalah":[75,77],"silent":[167,169],"hamzat_wasl":[25,26,47,48,63,64]},
+"11": {"ghunnah":[71,74,87,90],"ikhfa_shafawi":[161,165],"idghaam_ghunnah":[28,33,50,55,100,104,148,153],"madd_2":[68,69,125,126,171,172],"madd_246":[242,243],"madd_munfasil":[143,145],"madd_muttasil":[106,108],"hamzat_wasl":[75,76,191,192,207,208,231,232]},
+"12": {"ghunnah":[85,88],"madd_2":[58,59],"madd_246":[163,164],"madd_munfasil":[10,12,98,100],"qalqalah":[50,52],"hamzat_wasl":[38,39,125,126,149,150]},
+"13": {"ghunnah":[51,54,89,92,151,154],"idghaam_shafawi":[56,61],"lam_shamsiyyah":[156,157],"madd_2":[160,161],"madd_246":[165,166],"madd_munfasil":[72,74,116,119],"silent":[25,27],"hamzat_wasl":[8,9,155,156]},
+"14": {"ghunnah":[12,15],"iqlab":[33,36],"madd_2":[48,49],"madd_246":[88,89],"qalqalah":[89,90],"hamzat_wasl":[20,21]},
+"15": {"madd_246":[44,45],"qalqalah":[45,46],"silent":[14,16],"hamzat_wasl":[2,3]},
+"16": {"ghunnah":[21,24],"ikhfa":[48,52],"idghaam_ghunnah":[3,7,40,45],"madd_2":[15,16],"madd_246":[54,55],"madd_muttasil":[9,11,45,47],"qalqalah":[55,56]},
+"17": {"ikhfa":[64,68],"idghaam_ghunnah":[78,82,99,103,105,109],"madd_2":[13,14,38,39,117,118],"madd_246":[131,132],"madd_muttasil":[111,113],"hamzat_wasl":[52,53]},
+"18": {"ghunnah":[127,130],"ikhfa":[154,158],"idghaam_no_ghunnah":[106,111],"lam_shamsiyyah":[81,82,170,171],"madd_2":[46,47,158,159,176,177],"madd_246":[187,188],"qalqalah":[115,117,188,189],"silent":[25,27,139,141],"hamzat_wasl":[8,9,64,65,80,81,169,170,180,181]},
+"19": {"ghunnah":[14,17],"ikhfa":[110,114],"idghaam_ghunnah":[72,76],"lam_shamsiyyah":[34,35],"madd_2":[40,41,43,44],"madd_246":[116,117],"qalqalah":[87,89,117,118],"hamzat_wasl":[18,19,33,34,49,50,61,62]},
+"20": {"madd_2":[8,9],"madd_246":[34,35],"hamzat_wasl":[20,21]},
+"21": {"ghunnah":[82,85,89,92,136,139],"ikhfa":[26,31,106,111,118,121,164,168,171,175],"idghaam_ghunnah":[281,286],"idghaam_shafawi":[121,126],"lam_shamsiyyah":[38,39],"madd_2":[192,193,215,216],"madd_246":[288,289],"madd_munfasil":[75,77,238,240,251,253],"madd_muttasil":[46,48,225,227],"silent":[9,11,50,52,77,79,179,181],"hamzat_wasl":[37,38,64,65,154,155,197,198]},
+"22": {"ghunnah":[23,26,47,50,304,307,354,357],"ikhfa":[148,152,170,174,237,240,283,286,343,347],"ikhfa_shafawi":[286,290],"idghaam_mutajanisayn":[92,93],"idghaam_shafawi":[143,148,244,249],"lam_shamsiyyah":[9,10,359,360],"madd_2":[17,18,156,157,363,364],"madd_246":[391,392],"madd_munfasil":[165,167,230,232,249,251,278,280,322,324],"qalqalah":[194,196,347,349],"silent":[232,234],"hamzat_wasl":[8,9,35,36,51,52,77,78,187,188,358,359]},
+"23": {"ghunnah":[60,63],"ikhfa":[65,69,77,81],"lam_shamsiyyah":[45,46],"madd_2":[49,50,54,55,63,64,98,99,104,105],"madd_246":[164,165],"qalqalah":[4,6,69,71],"silent":[29,31,41,43],"hamzat_wasl":[11,12,44,45,89,90]},
+"24": {"ikhfa":[39,44,49,53,59,63,70,74],"idghaam_ghunnah":[98,102],"lam_shamsiyyah":[117,118],"madd_muttasil":[123,125],"hamzat_wasl":[26,27,116,117]},
+"25": {"ghunnah":[85,88],"iqlab":[29,33],"lam_shamsiyyah":[84,85],"madd_246":[115,116],"madd_munfasil":[6,8],"hamzat_wasl":[61,62,69,70]},
+"26": {"ikhfa":[26,30,62,66,93,97],"madd_246":[99,100],"qalqalah":[50,52],"hamzat_wasl":[49,50,71,72]},
+"27": {"lam_shamsiyyah":[52,53,79,80,127,128],"madd_2":[74,75,131,132],"madd_muttasil":[167,169],"silent":[36,38,73,74],"hamzat_wasl":[10,11,18,19,41,42,51,52,66,67,78,79,95,96,118,119,126,127,151,152]},
+"28": {"idghaam_ghunnah":[61,66],"madd_246":[101,102],"silent":[36,38,74,76],"hamzat_wasl":[18,19,48,49,94,95]},
+"29": {"ghunnah":[4,7],"madd_246":[40,41],"hamzat_wasl":[33,34]},
+"30": {"ghunnah":[81,84,105,108],"ikhfa":[22,25,46,50],"idghaam_no_ghunnah":[27,33],"lam_shamsiyyah":[104,105],"madd_2":[57,58],"madd_246":[108,109],"silent":[9,11,41,43,74,76],"hamzat_wasl":[103,104]},
+"31": {"ghunnah":[76,79],"ikhfa":[65,68,119,123,158,162],"idghaam_ghunnah":[99,104,114,119,130,134],"idghaam_no_ghunnah":[146,151],"lam_shamsiyyah":[50,51],"madd_2":[57,58,89,90],"madd_246":[176,177],"qalqalah":[85,87,123,125],"silent":[35,37,46,48,56,57,71,73],"hamzat_wasl":[17,18,49,50]},
+"32": {"ikhfa":[53,56,81,85],"idghaam_no_ghunnah":[123,129],"lam_shamsiyyah":[24,25,65,66,106,107],"madd_2":[30,31,33,34,98,99,114,115,196,197],"madd_246":[224,225],"madd_muttasil":[71,73,78,80],"qalqalah":[165,167],"hamzat_wasl":[8,9,23,24,39,40,64,65,105,106,151,152,176,177,215,216]},
+"33": {"ghunnah":[82,85],"lam_shamsiyyah":[18,19,81,82],"madd_246":[87,88],"madd_muttasil":[41,43],"hamzat_wasl":[17,18,29,30,69,70,80,81]},
+"34": {"ghunnah":[94,97],"ikhfa":[16,20,46,50,103,106,118,122],"idghaam_shafawi":[11,16],"madd_2":[8,9,106,107],"madd_246":[125,126],"madd_munfasil":[89,91],"silent":[56,58],"hamzat_wasl":[68,69,98,99]},
+"35": {"idghaam_ghunnah":[63,68,91,96],"madd_2":[19,20,42,43],"madd_246":[112,113],"qalqalah":[15,17,33,35,69,71,73,75],"hamzat_wasl":[32,33,47,48,68,69,103,104]},
+"36": {"ghunnah":[8,11,13,16,45,48,72,75,81,84,106,109],"ikhfa":[56,60],"idghaam_ghunnah":[34,40],"idghaam_no_ghunnah":[118,123],"lam_shamsiyyah":[44,45],"madd_2":[77,78],"madd_246":[125,126],"hamzat_wasl":[43,44]},
+"37": {"ghunnah":[13,16,163,166],"ikhfa":[25,28,31,35,73,76],"idghaam_ghunnah":[153,158],"idghaam_shafawi":[201,206],"lam_shamsiyyah":[122,123,162,163,210,211],"madd_2":[129,130,218,219],"madd_246":[242,243],"madd_munfasil":[8,10,16,18,176,178],"qalqalah":[136,138,197,199],"silent":[118,120,128,129],"hamzat_wasl":[86,87,121,122,135,136,161,162,192,193,209,210]},
+"38": {"ghunnah":[12,15],"ikhfa":[85,89,92,96],"lam_shamsiyyah":[119,120],"madd_munfasil":[7,9],"madd_muttasil":[125,127],"hamzat_wasl":[75,76,98,99,118,119]},
+"39": {"ghunnah":[80,83],"lam_shamsiyyah":[102,103],"madd_2":[59,60,74,75],"madd_muttasil":[108,110],"hamzat_wasl":[18,19,43,44,101,102]},
+"40": {"ikhfa":[41,45],"lam_shamsiyyah":[26,27],"madd_2":[33,34],"madd_muttasil":[80,82],"qalqalah":[7,9],"silent":[32,33],"hamzat_wasl":[6,7,25,26]},
+"41": {"madd_2":[27,28],"madd_246":[76,77],"qalqalah":[77,78],"hamzat_wasl":[9,10,69,70]},
+"42": {"ghunnah":[14,17,37,40,67,70],"ikhfa":[95,99],"lam_shamsiyyah":[52,53],"madd_2":[28,29,56,57],"madd_246":[121,122],"qalqalah":[117,119],"hamzat_wasl":[18,19,51,52,112,113]},
+"43": {"madd_muttasil":[92,94],"qalqalah":[14,16]},
+"44": {"ghunnah":[12,15],"ikhfa":[4,7,114,118,201,205,223,227],"idghaam_ghunnah":[122,127],"idghaam_shafawi":[196,201,218,223],"lam_shamsiyyah":[11,12,156,157],"madd_246":[229,230],"madd_munfasil":[86,88,98,100,105,108,181,183],"qalqalah":[129,131,188,190,205,207],"silent":[76,78,183,185],"hamzat_wasl":[10,11,38,39,59,60,155,156]},
+"45": {"ikhfa":[6,9,49,52],"madd_2":[20,21],"madd_246":[130,131],"madd_munfasil":[42,44],"qalqalah":[108,110],"silent":[44,46],"hamzat_wasl":[26,27,121,122]},
+"46": {"ikhfa":[32,35,59,63],"madd_246":[102,103],"qalqalah":[4,6],"silent":[14,16],"hamzat_wasl":[36,37,95,96]},
+"47": {"ghunnah":[14,17,58,61],"ikhfa":[76,80,83,86],"madd_2":[43,44],"madd_246":[88,89],"madd_munfasil":[53,55],"hamzat_wasl":[18,19,62,63,82,83]},
+"48": {"lam_shamsiyyah":[47,48],"madd_2":[53,54,56,57,85,86],"madd_246":[99,100],"silent":[69,71],"hamzat_wasl":[17,18,34,35,46,47,80,81,91,92]},
+"49": {"idghaam_ghunnah":[32,37],"madd_246":[61,62],"qalqalah":[13,15,62,63],"hamzat_wasl":[8,9,52,53]},
+"50": {"ghunnah":[54,57],"ikhfa":[17,21],"idghaam_ghunnah":[27,31],"idghaam_shafawi":[12,17],"lam_shamsiyyah":[53,54],"madd_246":[57,58],"hamzat_wasl":[52,53]},
+"51": {"ghunnah":[48,51],"idghaam_ghunnah":[30,35],"madd_246":[75,76],"qalqalah":[4,6,76,77],"hamzat_wasl":[11,12,52,53,68,69]},
+"52": {"ghunnah":[19,22,66,69],"ikhfa":[32,35],"idghaam_ghunnah":[84,88,92,96],"idghaam_no_ghunnah":[13,18],"lam_shamsiyyah":[18,19],"madd_2":[2,3,11,12,45,46,82,83,88,89],"madd_246":[128,129],"madd_munfasil":[59,61],"qalqalah":[129,130],"silent":[38,40,61,63,111,113,116,118],"hamzat_wasl":[119,120]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/15.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/15.json
index a8646c2..c19af6e 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/15.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/15.json
@@ -1,101 +1,101 @@
{
-"1": {"idgham":[81,86],"madd":[56,57,67,68,88,89],"madd-lazim":[40,42],"wasl":[60,61]},
-"2": {"madd":[59,60],"silent":[34,36,48,50],"wasl":[17,18]},
-"3": {"madd":[78,79],"silent":[18,20,35,37],"wasl":[51,52]},
-"4": {"ghunnah":[21,25],"idgham":[53,58],"madd":[4,6,62,63]},
-"5": {"ghunnah":[21,24],"madd":[56,57]},
-"6": {"ghunnah":[61,64],"idgham":[50,51],"madd":[13,15,75,76],"qalqalah":[71,73],"silent":[8,10],"wasl":[24,25,49,50]},
-"7": {"ghunnah":[41,45,45,48],"idgham":[55,56],"madd":[30,32,59,60,64,65],"wasl":[23,24,54,55]},
-"8": {"ghunnah":[73,76],"idgham":[67,73],"madd":[21,23,59,61,78,79],"silent":[61,63],"wasl":[14,15,39,40]},
-"9": {"ghunnah":[2,5,39,42],"idgham":[26,27],"madd":[48,49,54,55,59,60],"wasl":[25,26]},
-"10": {"ghunnah":[23,27],"madd":[55,56],"qalqalah":[6,8,27,29],"wasl":[45,46]},
-"11": {"idgham":[15,20,20,25],"madd":[51,52,65,66],"silent":[44,46]},
-"12": {"madd":[4,5,20,21,45,46],"qalqalah":[39,41],"wasl":[34,35]},
-"13": {"ghunnah":[38,41],"madd":[20,21,54,55],"qalqalah":[26,28],"wasl":[44,45]},
-"14": {"ghunnah":[25,29],"idgham":[31,37,41,42],"madd":[47,49,77,78],"silent":[60,62],"wasl":[40,41]},
-"15": {"ghunnah":[14,17],"idgham":[61,66],"madd":[7,9,37,38,73,74],"qalqalah":[33,35],"silent":[9,11]},
-"16": {"ghunnah":[51,54,62,65],"idgham":[24,25,41,46,61,62],"madd":[30,32,54,55,65,66,70,71],"qalqalah":[6,8],"wasl":[23,24]},
-"17": {"ghunnah":[17,21],"idgham":[33,38],"madd":[10,11,31,32,40,41]},
-"18": {"idgham":[23,24,52,57],"madd":[44,45,59,60],"wasl":[12,13,22,23]},
-"19": {"ghunnah":[61,63,79,83],"idgham":[92,97],"madd":[20,21,50,51,101,102],"qalqalah":[16,18],"wasl":[2,3]},
-"20": {"idgham":[40,45],"madd":[30,31,56,57,62,63,67,68]},
-"21": {"ghunnah":[9,13,27,30],"idgham":[4,9,82,87],"madd":[38,40,46,47,65,67,91,92]},
-"22": {"ghunnah":[39,42,70,74,102,105],"idgham":[15,16,54,55],"madd":[21,22,29,30,60,62,67,69,84,85,97,99,112,113,118,119,123,124],"wasl":[14,15,53,54]},
-"23": {"ghunnah":[4,7],"madd":[24,25,50,51,55,56],"wasl":[45,46]},
-"24": {"ghunnah":[40,43],"madd":[81,82],"qalqalah":[6,8,28,30,52,54],"wasl":[19,20,65,66]},
-"25": {"ghunnah":[4,7,36,39],"madd":[41,42,55,56]},
-"26": {"ghunnah":[24,27,33,37],"idgham":[43,48,56,61],"madd":[27,28,41,42,65,66],"qalqalah":[6,8,13,15],"wasl":[19,20]},
-"27": {"ghunnah":[9,12,27,31],"idgham":[38,43,48,49],"madd":[21,22,54,55],"madd-lazim":[7,9],"qalqalah":[17,19,31,33],"wasl":[2,3,47,48]},
-"28": {"ghunnah":[40,43,51,55,65,69],"idgham":[59,65,75,80,88,93],"madd":[29,31,47,48,73,74,97,98]},
-"29": {"idgham":[40,45],"madd":[19,20,64,65,68,69,73,74],"silent":[57,59]},
-"30": {"madd":[16,18,43,44],"qalqalah":[37,39],"wasl":[9,10]},
-"31": {"idgham":[28,32,44,45],"madd":[5,7,22,25,48,49,53,54],"qalqalah":[10,12],"wasl":[43,44]},
-"32": {"idgham":[50,51],"madd":[8,10,54,55,59,60],"qalqalah":[12,14],"wasl":[49,50]},
-"33": {"ghunnah":[52,56],"idgham":[15,20,62,67,75,80],"madd":[48,49,60,61,84,85],"qalqalah":[42,44]},
-"34": {"ghunnah":[28,31],"madd":[38,39],"qalqalah":[13,15],"wasl":[8,9]},
-"35": {"ghunnah":[4,7],"idgham":[18,19,44,45],"madd":[48,49],"wasl":[17,18,43,44]},
-"36": {"ghunnah":[16,19],"madd":[23,25,48,49],"qalqalah":[42,44]},
-"37": {"ghunnah":[10,13,26,29],"madd":[31,32],"wasl":[21,22]},
-"38": {"madd":[33,34],"qalqalah":[19,21],"wasl":[14,15,24,25]},
-"39": {"ghunnah":[44,47,81,84],"madd":[16,18,97,98],"qalqalah":[91,93],"wasl":[59,60]},
-"40": {"madd":[37,38],"wasl":[26,27]},
-"41": {"madd":[8,9,17,18,37,38]},
-"42": {"ghunnah":[2,5],"madd":[44,45,84,85],"wasl":[60,61,76,77]},
-"43": {"ghunnah":[4,7,12,15],"madd":[41,42],"qalqalah":[35,37]},
-"44": {"idgham":[23,28,38,43,55,60],"madd":[21,22,64,65],"qalqalah":[8,10,17,19,60,62]},
-"45": {"ghunnah":[2,5,26,29],"idgham":[31,35],"madd":[29,30,39,40],"wasl":[6,7]},
-"46": {"madd":[18,19,29,30],"qalqalah":[1,3]},
-"47": {"idgham":[29,34,66,71],"madd":[49,50,75,76,80,81]},
-"48": {"idgham":[28,32,38,43],"madd":[59,60]},
-"49": {"ghunnah":[20,23],"idgham":[44,45],"madd":[15,17,23,25,50,51],"wasl":[32,33,43,44]},
-"50": {"ghunnah":[4,7],"madd":[40,41],"wasl":[22,23,33,34]},
-"51": {"ghunnah":[16,20],"madd":[31,32,34,35],"qalqalah":[27,29]},
-"52": {"ghunnah":[41,46,52,55,59,62],"madd":[39,40,71,72],"silent":[12,14,32,34]},
-"53": {"ghunnah":[24,27],"madd":[47,48,55,56],"silent":[6,8]},
-"54": {"idgham":[34,39],"madd":[28,31,73,74],"wasl":[47,48]},
-"55": {"idgham":[43,48],"madd":[18,19,56,57,61,62],"silent":[6,8],"wasl":[24,25,51,52]},
-"56": {"idgham":[10,14,23,28,53,54],"madd":[42,44,62,63],"madd-lazim":[57,59],"qalqalah":[14,16],"wasl":[52,53]},
-"57": {"madd":[43,44],"qalqalah":[14,16],"wasl":[32,33]},
-"58": {"ghunnah":[12,15],"idgham":[43,48],"madd":[5,7,15,17,28,30,54,55],"qalqalah":[48,50],"silent":[7,9]},
-"59": {"ghunnah":[22,25],"madd":[5,7,50,51],"qalqalah":[44,46]},
-"60": {"ghunnah":[34,37],"madd":[18,19,29,31,53,54,58,59],"wasl":[7,8,48,49]},
-"61": {"ghunnah":[4,7],"madd":[11,13,39,40],"wasl":[28,29]},
-"62": {"ghunnah":[8,11,26,29],"idgham":[21,26],"madd":[31,32]},
-"63": {"madd":[20,21,53,54],"silent":[6,8,36,38]},
-"64": {"ghunnah":[29,32],"madd":[10,11,38,39,43,44],"wasl":[16,17]},
-"65": {"ghunnah":[88,91],"idgham":[27,32,99,103],"madd":[61,62,127,128],"qalqalah":[24,26,57,59],"silent":[109,111],"wasl":[35,36,46,47,103,104]},
-"66": {"ghunnah":[42,45],"idgham":[75,80],"madd":[10,12,24,25,56,58,62,64,86,87],"qalqalah":[69,71],"wasl":[30,31]},
-"67": {"madd":[4,6,41,42],"qalqalah":[35,37],"wasl":[16,17]},
-"68": {"ghunnah":[8,11],"madd":[14,16,20,22,47,48]},
-"69": {"madd":[32,33],"silent":[9,11],"wasl":[2,3,12,13]},
-"70": {"madd":[5,7,38,39,43,44],"silent":[7,9],"wasl":[33,34]},
-"71": {"ghunnah":[31,35,35,38],"madd":[8,10,14,16,26,28,43,44,48,49]},
-"72": {"ghunnah":[13,16],"madd":[48,49]},
-"73": {"idgham":[16,17],"madd":[35,36],"wasl":[15,16]},
-"74": {"ghunnah":[72,76],"idgham":[67,72],"madd":[14,15,79,80]},
-"75": {"ghunnah":[2,5],"idgham":[27,32],"madd":[12,13,25,26,45,46]},
-"76": {"ghunnah":[4,7],"idgham":[21,26],"madd":[28,29]},
-"77": {"ghunnah":[2,5],"idgham":[26,31],"madd":[12,13,41,42]},
-"78": {"ghunnah":[4,8],"madd":[18,19,38,39,43,44],"wasl":[22,23]},
-"79": {"ghunnah":[3,6,27,30],"idgham":[46,51],"madd":[53,54],"wasl":[2,3]},
-"80": {"madd":[23,24,48,49],"qalqalah":[6,8,32,34],"wasl":[27,28,37,38]},
-"81": {"madd":[11,12,22,23,56,57],"silent":[37,39]},
-"82": {"madd":[55,56],"silent":[8,10],"wasl":[28,29]},
-"83": {"idgham":[16,17],"madd":[35,36],"wasl":[15,16]},
-"84": {"idgham":[22,27],"madd":[4,6,46,47],"silent":[35,37]},
-"85": {"ghunnah":[83,86,108,112],"idgham":[17,18,88,89,121,122],"madd":[23,24,26,27,58,60,137,138],"qalqalah":[10,12],"wasl":[16,17,32,33,70,71,87,88,112,113,120,121,130,131]},
-"86": {"ghunnah":[2,5],"madd":[27,28,38,39],"wasl":[19,20,31,32]},
-"87": {"idgham":[27,33],"madd":[18,19,70,71],"qalqalah":[6,8,24,26],"wasl":[36,37,50,51,63,64]},
-"88": {"ghunnah":[11,14],"idgham":[63,69],"madd":[52,54,61,62,134,135],"wasl":[104,105]},
-"89": {"ghunnah":[9,12,23,26],"idgham":[22,23],"madd":[12,14,39,40],"wasl":[21,22,32,33]},
-"90": {"ghunnah":[9,12],"madd":[4,6,37,38],"qalqalah":[29,31],"wasl":[24,25]},
-"91": {"madd":[37,38],"silent":[17,19],"wasl":[20,21]},
-"92": {"ghunnah":[23,26],"madd":[39,40],"qalqalah":[33,35]},
-"93": {"ghunnah":[2,5],"madd":[24,25],"silent":[13,15]},
-"94": {"madd":[52,53],"wasl":[2,3,41,42]},
-"95": {"ghunnah":[2,5],"madd":[15,16,34,35],"wasl":[19,20]},
-"96": {"madd":[39,40,69,70],"qalqalah":[12,14],"wasl":[27,28]},
-"97": {"ghunnah":[20,23],"madd":[56,57],"qalqalah":[6,8,36,38]},
-"98": {"idgham":[31,36,40,41],"madd":[44,45,49,50],"wasl":[39,40]},
-"99": {"madd":[44,45],"qalqalah":[7,9],"wasl":[2,3,37,38]}
+"1": {"idghaam_ghunnah":[81,86],"madd_2":[56,57,67,68],"madd_246":[88,89],"madd_6":[40,42],"hamzat_wasl":[60,61]},
+"2": {"madd_246":[59,60],"silent":[34,36,48,50],"hamzat_wasl":[17,18]},
+"3": {"madd_246":[78,79],"silent":[18,20,35,37],"hamzat_wasl":[51,52]},
+"4": {"ikhfa":[21,25],"idghaam_ghunnah":[53,58],"madd_246":[62,63],"madd_munfasil":[4,6]},
+"5": {"ghunnah":[21,24],"madd_246":[56,57]},
+"6": {"ghunnah":[61,64],"lam_shamsiyyah":[50,51],"madd_246":[75,76],"madd_munfasil":[13,15],"qalqalah":[71,73],"silent":[8,10],"hamzat_wasl":[24,25,49,50]},
+"7": {"ikhfa":[41,45,45,48],"lam_shamsiyyah":[55,56],"madd_2":[59,60],"madd_246":[64,65],"madd_muttasil":[30,32],"hamzat_wasl":[23,24,54,55]},
+"8": {"ikhfa":[73,76],"idghaam_ghunnah":[67,73],"madd_246":[78,79],"madd_munfasil":[59,61],"madd_muttasil":[21,23],"silent":[61,63],"hamzat_wasl":[14,15,39,40]},
+"9": {"ghunnah":[2,5,39,42],"lam_shamsiyyah":[26,27],"madd_2":[48,49,54,55],"madd_246":[59,60],"hamzat_wasl":[25,26]},
+"10": {"ikhfa":[23,27],"madd_246":[55,56],"qalqalah":[6,8,27,29],"hamzat_wasl":[45,46]},
+"11": {"idghaam_no_ghunnah":[20,25],"idghaam_shafawi":[15,20],"madd_2":[51,52],"madd_246":[65,66],"silent":[44,46]},
+"12": {"madd_2":[4,5,20,21],"madd_246":[45,46],"qalqalah":[39,41],"hamzat_wasl":[34,35]},
+"13": {"ghunnah":[38,41],"madd_2":[20,21],"madd_246":[54,55],"qalqalah":[26,28],"hamzat_wasl":[44,45]},
+"14": {"ikhfa_shafawi":[25,29],"idghaam_ghunnah":[31,37],"lam_shamsiyyah":[41,42],"madd_246":[77,78],"madd_muttasil":[47,49],"silent":[60,62],"hamzat_wasl":[40,41]},
+"15": {"ghunnah":[14,17],"idghaam_ghunnah":[61,66],"madd_2":[37,38],"madd_246":[73,74],"madd_munfasil":[7,9],"qalqalah":[33,35],"silent":[9,11]},
+"16": {"ghunnah":[51,54,62,65],"idghaam_ghunnah":[41,46],"lam_shamsiyyah":[24,25,61,62],"madd_2":[54,55,65,66],"madd_246":[70,71],"madd_muttasil":[30,32],"qalqalah":[6,8],"hamzat_wasl":[23,24]},
+"17": {"ikhfa":[17,21],"idghaam_no_ghunnah":[33,38],"madd_2":[10,11,31,32],"madd_246":[40,41]},
+"18": {"idghaam_ghunnah":[52,57],"lam_shamsiyyah":[23,24],"madd_2":[44,45],"madd_246":[59,60],"hamzat_wasl":[12,13,22,23]},
+"19": {"ikhfa":[79,83],"iqlab":[61,63],"idghaam_ghunnah":[92,97],"madd_2":[20,21,50,51],"madd_246":[101,102],"qalqalah":[16,18],"hamzat_wasl":[2,3]},
+"20": {"idghaam_no_ghunnah":[40,45],"madd_2":[30,31,56,57,62,63],"madd_246":[67,68]},
+"21": {"ikhfa":[9,13,27,30],"idghaam_ghunnah":[4,9,82,87],"madd_2":[46,47],"madd_246":[91,92],"madd_munfasil":[65,67],"madd_muttasil":[38,40]},
+"22": {"ikhfa":[39,42,70,74,102,105],"lam_shamsiyyah":[15,16,54,55],"madd_2":[21,22,29,30,84,85,112,113,118,119],"madd_246":[123,124],"madd_munfasil":[97,99],"madd_muttasil":[60,62,67,69],"hamzat_wasl":[14,15,53,54]},
+"23": {"ghunnah":[4,7],"madd_2":[24,25,50,51],"madd_246":[55,56],"hamzat_wasl":[45,46]},
+"24": {"ikhfa":[40,43],"madd_246":[81,82],"qalqalah":[6,8,28,30,52,54],"hamzat_wasl":[19,20,65,66]},
+"25": {"ghunnah":[4,7,36,39],"madd_2":[41,42],"madd_246":[55,56]},
+"26": {"ikhfa":[24,27,33,37],"idghaam_ghunnah":[43,48,56,61],"madd_2":[27,28,41,42],"madd_246":[65,66],"qalqalah":[6,8,13,15],"hamzat_wasl":[19,20]},
+"27": {"ghunnah":[9,12],"ikhfa":[27,31],"idghaam_ghunnah":[38,43],"lam_shamsiyyah":[48,49],"madd_2":[21,22],"madd_246":[54,55],"madd_6":[7,9],"qalqalah":[17,19,31,33],"hamzat_wasl":[2,3,47,48]},
+"28": {"ghunnah":[40,43],"ikhfa":[65,69],"iqlab":[51,55],"idghaam_ghunnah":[59,65,75,80,88,93],"madd_2":[47,48,73,74],"madd_246":[97,98],"madd_muttasil":[29,31]},
+"29": {"idghaam_no_ghunnah":[40,45],"madd_2":[19,20,64,65,68,69],"madd_246":[73,74],"silent":[57,59]},
+"30": {"madd_246":[43,44],"madd_muttasil":[16,18],"qalqalah":[37,39],"hamzat_wasl":[9,10]},
+"31": {"idghaam_ghunnah":[28,32],"lam_shamsiyyah":[44,45],"madd_2":[48,49],"madd_246":[53,54],"madd_munfasil":[5,7,22,25],"qalqalah":[10,12],"hamzat_wasl":[43,44]},
+"32": {"lam_shamsiyyah":[50,51],"madd_2":[54,55],"madd_246":[59,60],"madd_munfasil":[8,10],"qalqalah":[12,14],"hamzat_wasl":[49,50]},
+"33": {"ikhfa":[52,56],"idghaam_ghunnah":[62,67,75,80],"idghaam_no_ghunnah":[15,20],"madd_2":[48,49,60,61],"madd_246":[84,85],"qalqalah":[42,44]},
+"34": {"ghunnah":[28,31],"madd_246":[38,39],"qalqalah":[13,15],"hamzat_wasl":[8,9]},
+"35": {"ghunnah":[4,7],"lam_shamsiyyah":[18,19,44,45],"madd_246":[48,49],"hamzat_wasl":[17,18,43,44]},
+"36": {"ikhfa":[16,19],"madd_246":[48,49],"madd_munfasil":[23,25],"qalqalah":[42,44]},
+"37": {"ghunnah":[10,13],"ikhfa":[26,29],"madd_246":[31,32],"hamzat_wasl":[21,22]},
+"38": {"madd_246":[33,34],"qalqalah":[19,21],"hamzat_wasl":[14,15,24,25]},
+"39": {"ghunnah":[44,47,81,84],"madd_246":[97,98],"madd_munfasil":[16,18],"qalqalah":[91,93],"hamzat_wasl":[59,60]},
+"40": {"madd_246":[37,38],"hamzat_wasl":[26,27]},
+"41": {"madd_2":[8,9,17,18],"madd_246":[37,38]},
+"42": {"ghunnah":[2,5],"madd_2":[44,45],"madd_246":[84,85],"hamzat_wasl":[60,61,76,77]},
+"43": {"ghunnah":[4,7,12,15],"madd_246":[41,42],"qalqalah":[35,37]},
+"44": {"idghaam_ghunnah":[38,43,55,60],"idghaam_no_ghunnah":[23,28],"madd_2":[21,22],"madd_246":[64,65],"qalqalah":[8,10,17,19,60,62]},
+"45": {"ghunnah":[2,5,26,29],"idghaam_ghunnah":[31,35],"madd_2":[29,30],"madd_246":[39,40],"hamzat_wasl":[6,7]},
+"46": {"madd_2":[18,19],"madd_246":[29,30],"qalqalah":[1,3]},
+"47": {"idghaam_ghunnah":[66,71],"idghaam_shafawi":[29,34],"madd_2":[49,50,75,76],"madd_246":[80,81]},
+"48": {"idghaam_ghunnah":[28,32],"idghaam_shafawi":[38,43],"madd_246":[59,60]},
+"49": {"ghunnah":[20,23],"lam_shamsiyyah":[44,45],"madd_246":[50,51],"madd_munfasil":[15,17,23,25],"hamzat_wasl":[32,33,43,44]},
+"50": {"ghunnah":[4,7],"madd_246":[40,41],"hamzat_wasl":[22,23,33,34]},
+"51": {"ikhfa":[16,20],"madd_2":[31,32],"madd_246":[34,35],"qalqalah":[27,29]},
+"52": {"ghunnah":[52,55],"ikhfa":[41,46,59,62],"madd_2":[39,40],"madd_246":[71,72],"silent":[12,14,32,34]},
+"53": {"ghunnah":[24,27],"madd_2":[47,48],"madd_246":[55,56],"silent":[6,8]},
+"54": {"idghaam_ghunnah":[34,39],"madd_246":[73,74],"madd_munfasil":[28,31],"hamzat_wasl":[47,48]},
+"55": {"idghaam_ghunnah":[43,48],"madd_2":[18,19,56,57],"madd_246":[61,62],"silent":[6,8],"hamzat_wasl":[24,25,51,52]},
+"56": {"idghaam_ghunnah":[10,14],"idghaam_no_ghunnah":[23,28],"lam_shamsiyyah":[53,54],"madd_246":[62,63],"madd_munfasil":[42,44],"madd_6":[57,59],"qalqalah":[14,16],"hamzat_wasl":[52,53]},
+"57": {"madd_246":[43,44],"qalqalah":[14,16],"hamzat_wasl":[32,33]},
+"58": {"ghunnah":[12,15],"idghaam_ghunnah":[43,48],"madd_246":[54,55],"madd_munfasil":[5,7,15,17,28,30],"qalqalah":[48,50],"silent":[7,9]},
+"59": {"ghunnah":[22,25],"madd_246":[50,51],"madd_munfasil":[5,7],"qalqalah":[44,46]},
+"60": {"ghunnah":[34,37],"madd_2":[18,19,53,54],"madd_246":[58,59],"madd_munfasil":[29,31],"hamzat_wasl":[7,8,48,49]},
+"61": {"ghunnah":[4,7],"madd_246":[39,40],"madd_muttasil":[11,13],"hamzat_wasl":[28,29]},
+"62": {"ghunnah":[8,11],"ikhfa":[26,29],"idghaam_ghunnah":[21,26],"madd_246":[31,32]},
+"63": {"madd_2":[20,21],"madd_246":[53,54],"silent":[6,8,36,38]},
+"64": {"ghunnah":[29,32],"madd_2":[10,11,38,39],"madd_246":[43,44],"hamzat_wasl":[16,17]},
+"65": {"ikhfa":[88,91],"idghaam_ghunnah":[27,32,99,103],"madd_2":[61,62],"madd_246":[127,128],"qalqalah":[24,26,57,59],"silent":[109,111],"hamzat_wasl":[35,36,46,47,103,104]},
+"66": {"ghunnah":[42,45],"idghaam_ghunnah":[75,80],"madd_2":[24,25],"madd_246":[86,87],"madd_munfasil":[10,12],"madd_muttasil":[56,58,62,64],"qalqalah":[69,71],"hamzat_wasl":[30,31]},
+"67": {"madd_246":[41,42],"madd_muttasil":[4,6],"qalqalah":[35,37],"hamzat_wasl":[16,17]},
+"68": {"ghunnah":[8,11],"madd_246":[47,48],"madd_muttasil":[14,16,20,22]},
+"69": {"madd_246":[32,33],"silent":[9,11],"hamzat_wasl":[2,3,12,13]},
+"70": {"madd_2":[38,39],"madd_246":[43,44],"madd_munfasil":[5,7],"silent":[7,9],"hamzat_wasl":[33,34]},
+"71": {"ikhfa":[31,35,35,38],"madd_2":[43,44],"madd_246":[48,49],"madd_munfasil":[26,28],"madd_muttasil":[8,10,14,16]},
+"72": {"ghunnah":[13,16],"madd_246":[48,49]},
+"73": {"lam_shamsiyyah":[16,17],"madd_246":[35,36],"hamzat_wasl":[15,16]},
+"74": {"ikhfa":[72,76],"idghaam_ghunnah":[67,72],"madd_2":[14,15],"madd_246":[79,80]},
+"75": {"ghunnah":[2,5],"idghaam_no_ghunnah":[27,32],"madd_2":[12,13,25,26],"madd_246":[45,46]},
+"76": {"ghunnah":[4,7],"idghaam_ghunnah":[21,26],"madd_246":[28,29]},
+"77": {"ghunnah":[2,5],"idghaam_no_ghunnah":[26,31],"madd_2":[12,13],"madd_246":[41,42]},
+"78": {"ikhfa":[4,8],"madd_2":[18,19,38,39],"madd_246":[43,44],"hamzat_wasl":[22,23]},
+"79": {"ghunnah":[27,30],"ikhfa":[3,6],"idghaam_ghunnah":[46,51],"madd_246":[53,54],"hamzat_wasl":[2,3]},
+"80": {"madd_2":[23,24],"madd_246":[48,49],"qalqalah":[6,8,32,34],"hamzat_wasl":[27,28,37,38]},
+"81": {"madd_2":[11,12,22,23],"madd_246":[56,57],"silent":[37,39]},
+"82": {"madd_246":[55,56],"silent":[8,10],"hamzat_wasl":[28,29]},
+"83": {"lam_shamsiyyah":[16,17],"madd_246":[35,36],"hamzat_wasl":[15,16]},
+"84": {"idghaam_shafawi":[22,27],"madd_246":[46,47],"madd_munfasil":[4,6],"silent":[35,37]},
+"85": {"ghunnah":[83,86],"ikhfa":[108,112],"lam_shamsiyyah":[17,18,88,89,121,122],"madd_2":[23,24,26,27],"madd_246":[137,138],"madd_munfasil":[58,60],"qalqalah":[10,12],"hamzat_wasl":[16,17,32,33,70,71,87,88,112,113,120,121,130,131]},
+"86": {"ghunnah":[2,5],"madd_2":[27,28],"madd_246":[38,39],"hamzat_wasl":[19,20,31,32]},
+"87": {"idghaam_ghunnah":[27,33],"madd_2":[18,19],"madd_246":[70,71],"qalqalah":[6,8,24,26],"hamzat_wasl":[36,37,50,51,63,64]},
+"88": {"ghunnah":[11,14],"idghaam_ghunnah":[63,69],"madd_2":[61,62],"madd_246":[134,135],"madd_munfasil":[52,54],"hamzat_wasl":[104,105]},
+"89": {"ghunnah":[9,12,23,26],"lam_shamsiyyah":[22,23],"madd_246":[39,40],"madd_munfasil":[12,14],"hamzat_wasl":[21,22,32,33]},
+"90": {"ikhfa":[9,12],"madd_246":[37,38],"madd_munfasil":[4,6],"qalqalah":[29,31],"hamzat_wasl":[24,25]},
+"91": {"madd_246":[37,38],"silent":[17,19],"hamzat_wasl":[20,21]},
+"92": {"ghunnah":[23,26],"madd_246":[39,40],"qalqalah":[33,35]},
+"93": {"ghunnah":[2,5],"madd_246":[24,25],"silent":[13,15]},
+"94": {"madd_246":[52,53],"hamzat_wasl":[2,3,41,42]},
+"95": {"ghunnah":[2,5],"madd_2":[15,16],"madd_246":[34,35],"hamzat_wasl":[19,20]},
+"96": {"madd_2":[39,40],"madd_246":[69,70],"qalqalah":[12,14],"hamzat_wasl":[27,28]},
+"97": {"ghunnah":[20,23],"madd_246":[56,57],"qalqalah":[6,8,36,38]},
+"98": {"idghaam_ghunnah":[31,36],"lam_shamsiyyah":[40,41],"madd_2":[44,45],"madd_246":[49,50],"hamzat_wasl":[39,40]},
+"99": {"madd_246":[44,45],"qalqalah":[7,9],"hamzat_wasl":[2,3,37,38]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/16.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/16.json
index c67198c..a2ea78e 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/16.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/16.json
@@ -1,130 +1,130 @@
{
-"1": {"ghunnah":[111,114],"madd":[43,46,90,91,95,96,103,104,124,125],"qalqalah":[86,88],"wasl":[54,55]},
-"2": {"ghunnah":[96,99,108,111],"idgham":[29,30,61,65],"madd":[17,19,50,51,67,69,86,88,101,103,113,114,117,119,124,125,133,135,151,152],"silent":[103,105],"wasl":[10,11,28,29,145,146]},
-"3": {"ghunnah":[56,59],"idgham":[8,9],"madd":[14,15,17,18,48,49,69,70],"wasl":[7,8,23,24,35,36]},
-"4": {"ghunnah":[12,15,31,35],"idgham":[21,26,52,57],"madd":[15,16,59,60],"qalqalah":[26,28],"wasl":[7,8]},
-"5": {"idgham":[44,48],"madd":[11,12,52,53,76,77],"wasl":[2,3]},
-"6": {"madd":[57,58]},
-"7": {"ghunnah":[87,90,95,98],"idgham":[37,42,117,122],"madd":[58,59,124,125],"silent":[53,55],"wasl":[82,83]},
-"8": {"idgham":[61,65],"madd":[90,91],"wasl":[2,3,14,15,27,28]},
-"9": {"idgham":[24,25,51,55],"madd":[46,48,62,64,74,75,88,89],"qalqalah":[82,84],"wasl":[8,9,23,24]},
-"10": {"ghunnah":[16,19,83,87],"idgham":[28,29,44,49,51,56,67,71],"madd":[11,13,34,36,41,43,98,99],"wasl":[5,6,27,28]},
-"11": {"ghunnah":[3,5,13,17,49,52,77,81,100,103],"idgham":[21,22,33,34,48,49,86,87,124,129,134,138],"madd":[69,70,94,95,110,111,147,148],"wasl":[20,21,32,33,47,48,60,61,85,86]},
-"12": {"ghunnah":[30,33,67,70,87,91,105,108],"idgham":[29,30,42,43,66,67,130,135,140,144],"madd":[85,86,100,102,115,116,128,129,150,151],"wasl":[17,18,28,29,41,42,53,54,65,66]},
-"13": {"ghunnah":[62,65],"idgham":[86,91,96,100],"madd":[52,53,57,59,72,73,108,109],"wasl":[24,25]},
-"14": {"ghunnah":[59,64,103,107,172,176],"idgham":[68,73],"madd":[182,183,206,207],"qalqalah":[160,162],"silent":[44,46,86,88,167,169],"wasl":[7,8,23,24,128,129]},
-"15": {"ghunnah":[37,41],"idgham":[64,69,74,80],"madd":[29,30,62,63,98,99],"wasl":[15,16]},
-"16": {"ghunnah":[19,22],"idgham":[11,15,18,19],"madd":[6,7,9,10,40,41],"qalqalah":[22,24],"wasl":[17,18]},
-"17": {"idgham":[6,10,21,26],"madd":[54,55]},
-"18": {"ghunnah":[4,8,52,55],"idgham":[72,77],"madd":[47,49,79,80],"silent":[14,16],"wasl":[26,27,56,57]},
-"19": {"madd":[48,49],"wasl":[2,3]},
-"20": {"ghunnah":[24,28],"idgham":[62,67],"madd":[80,81],"qalqalah":[14,16],"wasl":[2,3,32,33]},
-"21": {"idgham":[26,30],"madd":[6,7,23,25,63,64],"qalqalah":[57,59]},
-"22": {"ghunnah":[26,30,85,88],"idgham":[18,22,80,85,91,95,97,102],"madd":[4,5,16,17,22,23,112,113],"wasl":[30,31,58,59]},
-"23": {"ghunnah":[13,16,69,72],"madd":[74,75,103,104],"wasl":[17,18,88,89]},
-"24": {"ghunnah":[31,34],"idgham":[18,23],"madd":[26,28,52,54,61,62,78,79],"silent":[54,56],"wasl":[68,69]},
-"25": {"ghunnah":[98,102],"idgham":[37,41],"madd":[10,12,53,54,124,126,139,140],"silent":[12,14],"wasl":[46,47,76,77]},
-"26": {"ghunnah":[24,28,116,120],"idgham":[64,69,105,106],"madd":[59,60,136,137,177,178],"qalqalah":[2,4,28,30,109,111],"wasl":[12,13,45,46,72,73,104,105,142,143]},
-"27": {"ghunnah":[2,5,80,83,144,147],"idgham":[171,172],"madd":[20,21,61,63,175,177,191,192,196,197],"madd-lazim":[90,92],"silent":[129,131],"wasl":[13,14,68,69,113,114,132,133,148,149,158,159,170,171,186,187]},
-"28": {"ghunnah":[54,57,93,96,109,113,116,120,129,132,147,151,158,161],"idgham":[78,79],"madd":[20,21,33,35,49,51,113,115,123,126,172,173],"silent":[74,76],"wasl":[26,27,77,78,133,134]},
-"29": {"ghunnah":[28,31],"madd":[9,11,20,21,36,37,85,86],"qalqalah":[3,5,16,18],"silent":[11,13],"wasl":[2,3,71,72]},
-"30": {"ghunnah":[40,43],"idgham":[70,76,110,111,127,131,157,161],"madd":[35,37,103,104,186,187],"silent":[27,29,62,64,94,96],"wasl":[19,20,109,110,139,140,176,177]},
-"31": {"ghunnah":[2,5,41,45],"idgham":[14,18],"madd":[5,6,62,63,88,90,100,101,132,133],"qalqalah":[11,13,18,20,33,35,108,110],"wasl":[53,54,114,115,122,123]},
-"32": {"ghunnah":[99,102,113,116],"madd":[20,21,33,35,68,69,127,128],"qalqalah":[84,86],"silent":[91,93],"wasl":[26,27,83,84,94,95]},
-"33": {"ghunnah":[7,10,26,30,115,119,160,164,174,177],"madd":[21,23,48,50,90,91,157,158,167,169,192,193],"qalqalah":[119,121],"silent":[169,171],"wasl":[41,42,103,104,145,146]},
-"34": {"idgham":[52,57],"madd":[72,73,86,87],"silent":[37,39,65,67]},
-"35": {"ghunnah":[66,70,79,83,135,139,148,152,155,159,186,190],"idgham":[86,91,213,214],"madd":[37,39,75,76,100,102,108,110,144,145,161,162,236,237,247,248],"qalqalah":[58,60,190,192],"silent":[27,29],"wasl":[8,9,42,43,174,175,212,213,229,230,240,241]},
-"36": {"ghunnah":[31,34,202,205],"idgham":[35,40,87,88,106,111,136,141,162,163],"madd":[91,92,168,169,226,227,246,247],"qalqalah":[6,8,74,76],"silent":[60,62,83,85,182,184,208,210],"wasl":[52,53,63,64,73,74,86,87,120,121,161,162,189,190,201,202,234,235]},
-"37": {"ghunnah":[2,6,35,38],"idgham":[61,65,81,86,86,91],"madd":[25,26,91,92,96,97],"wasl":[39,40]},
-"38": {"ghunnah":[116,119,131,134],"idgham":[68,72,106,111,130,131],"madd":[37,38,113,114,150,151],"qalqalah":[4,6,51,53],"silent":[11,13],"wasl":[16,17,58,59,129,130]},
-"39": {"ghunnah":[83,86],"madd":[76,78,102,103,107,108],"silent":[78,80,97,99],"wasl":[19,20,60,61]},
-"40": {"ghunnah":[2,5,68,72],"idgham":[49,54],"madd":[32,34,43,44,64,65,76,77],"qalqalah":[39,41]},
-"41": {"ghunnah":[38,41,72,75],"idgham":[85,86,102,106],"madd":[159,160],"qalqalah":[110,112],"silent":[20,22,58,60,148,150],"wasl":[2,3,27,28,84,85,115,116]},
-"42": {"madd":[50,51],"silent":[17,19]},
-"43": {"ghunnah":[21,25,101,105,105,108],"idgham":[45,51,90,91],"madd":[4,6,54,56,77,79,123,124],"qalqalah":[25,27],"silent":[79,81],"wasl":[89,90]},
-"44": {"ghunnah":[32,35,76,79],"idgham":[19,20,52,53,75,76],"madd":[12,13,39,41,131,132],"wasl":[2,3,18,19,51,52]},
-"45": {"idgham":[32,33,48,52],"madd":[137,138],"silent":[28,30],"wasl":[11,12,31,32,59,60,74,75,102,103]},
-"46": {"ghunnah":[44,48],"madd":[56,57]},
-"47": {"ghunnah":[33,37,39,42],"idgham":[61,66],"madd":[68,69]},
-"48": {"ghunnah":[46,50],"idgham":[53,57,99,100,118,124],"madd":[73,74,78,79,105,107,139,140,144,145],"silent":[15,17,66,68],"wasl":[36,37,85,86,98,99]},
-"49": {"ghunnah":[63,67],"idgham":[28,29,73,77],"madd":[34,35,37,38,84,86,116,117],"madd-lazim":[67,69],"wasl":[27,28,51,52,77,78]},
-"50": {"ghunnah":[23,27],"idgham":[18,23],"madd":[62,63]},
-"51": {"ghunnah":[58,61,84,88],"idgham":[76,80],"madd":[29,31,38,39,74,75,80,81,93,94,106,107],"silent":[31,33],"wasl":[8,9,46,47,99,100]},
-"52": {"idgham":[17,18,50,51],"madd":[6,7,23,24,26,27,93,94],"wasl":[16,17,32,33,49,50,78,79]},
-"53": {"ghunnah":[25,29,44,47],"idgham":[10,15,15,20,65,66],"madd":[93,94],"qalqalah":[86,88],"wasl":[34,35,64,65]},
-"54": {"ghunnah":[2,5,30,33,53,56,56,60],"idgham":[20,21,48,53],"madd":[78,79],"wasl":[19,20]},
-"55": {"madd":[18,20,30,31,68,69],"silent":[11,13,48,50]},
-"56": {"ghunnah":[48,51,88,91,94,97,101,104],"idgham":[42,48],"madd":[61,62,115,116],"qalqalah":[4,6,57,59],"wasl":[69,70]},
-"57": {"idgham":[52,57],"madd":[29,30,39,40,44,45,67,68],"qalqalah":[4,6,35,37],"wasl":[22,23]},
-"58": {"ghunnah":[24,28,33,36],"idgham":[63,68],"madd":[53,54,77,78],"qalqalah":[47,49],"wasl":[28,29]},
-"59": {"ghunnah":[29,33],"idgham":[105,106],"madd":[6,7,33,35,54,56,69,70,98,99,123,125,140,141],"wasl":[17,18,104,105]},
-"60": {"idgham":[50,51],"madd":[116,117],"wasl":[29,30,49,50,69,70,79,80,98,99,109,110]},
-"61": {"ghunnah":[27,30,70,74,125,128,127,132],"idgham":[26,27,44,49,80,84,89,93,118,123,183,187],"madd":[86,87,109,112,140,142,203,204],"madd-lazim":[74,76],"qalqalah":[197,199],"wasl":[17,18,25,26]},
-"62": {"ghunnah":[74,77,110,113,123,126,134,137],"idgham":[122,123,139,144],"madd":[150,151],"qalqalah":[4,6],"wasl":[62,63,85,86,121,122]},
-"63": {"ghunnah":[48,52],"idgham":[43,48,77,78],"madd":[27,29,34,37,85,86,95,96,153,154],"qalqalah":[14,16,52,54],"wasl":[2,3,76,77,122,123]},
-"64": {"ghunnah":[9,12],"idgham":[96,101,108,113,118,122],"madd":[4,6,34,35,128,129],"silent":[82,84],"wasl":[27,28,64,65,72,73]},
-"65": {"ghunnah":[12,15,40,44,87,90],"idgham":[24,25,111,116,121,125],"madd":[30,32,37,39,82,84,97,98,131,132],"wasl":[2,3,23,24,57,58]},
-"66": {"ghunnah":[4,7,58,61,81,84,119,124],"idgham":[41,46,53,58,95,99,102,107,129,135,135,136],"madd":[28,29,76,77,124,126,139,140,144,145],"qalqalah":[36,38],"wasl":[19,20]},
-"67": {"ghunnah":[4,8,18,21,90,93],"idgham":[17,18,67,72,114,119,124,128],"madd":[12,13,38,39,100,101,134,135],"wasl":[16,17,29,30]},
-"68": {"ghunnah":[27,30,96,99],"idgham":[26,27,72,77,83,84],"madd":[109,110],"wasl":[25,26,40,41,55,56,82,83]},
-"69": {"ghunnah":[2,5,14,18,81,84,146,149,155,158],"idgham":[23,24,66,71,100,105,140,145,145,146,179,184,189,193],"madd":[31,32,120,121,125,126,137,139,165,166,202,203],"wasl":[22,23,37,38]},
-"70": {"ghunnah":[23,26,47,50,124,128,137,140,155,159],"idgham":[50,55,55,59],"madd":[37,38,69,72,161,162],"wasl":[2,3,82,83,141,142]},
-"71": {"ghunnah":[41,45],"idgham":[48,49],"madd":[132,133,157,159,193,194],"madd-lazim":[88,90],"qalqalah":[187,189],"silent":[81,83],"wasl":[2,3,47,48,63,64,177,178]},
-"72": {"ghunnah":[31,34,84,88],"idgham":[21,26,49,54,65,70,103,107,115,120,124,125],"madd":[47,48,79,80,133,134,148,149,200,201],"wasl":[2,3,123,124,143,144,179,180]},
-"73": {"ghunnah":[16,20],"idgham":[61,67,71,72,102,107],"madd":[77,78,80,81,122,123],"wasl":[24,25,70,71,86,87]},
-"74": {"ghunnah":[41,44,66,69],"madd":[84,85],"silent":[15,17],"wasl":[26,27,45,46]},
-"75": {"ghunnah":[92,95,110,115,122,125],"idgham":[28,34,40,46,69,73,75,80,139,144],"madd":[86,87,165,166,217,218],"qalqalah":[25,27,50,52,82,84],"wasl":[7,8,169,170]},
-"76": {"idgham":[22,28,84,88,183,187,226,231],"madd":[47,49,113,114,224,225,237,238],"qalqalah":[52,54,65,67,201,203],"wasl":[9,10,196,197]},
-"77": {"ghunnah":[115,118,145,149],"idgham":[18,19,58,59],"madd":[24,25,27,28,47,49,151,152],"qalqalah":[106,108],"wasl":[17,18,33,34,57,58,84,85,119,120]},
-"78": {"ghunnah":[26,29,38,41],"idgham":[20,25,73,78,93,94],"madd":[43,44,113,114,154,155],"qalqalah":[109,111],"wasl":[2,3,92,93,104,105,119,120]},
-"79": {"ghunnah":[43,47,81,84,102,105],"idgham":[23,24,56,57,127,132,137,141],"madd":[41,42,62,64,112,113,125,126,147,148],"silent":[13,15],"wasl":[22,23,55,56,92,93]},
-"80": {"ghunnah":[27,30,67,71,96,101],"idgham":[21,26,46,51,62,67,215,220],"madd":[86,87,206,208,213,214,224,225,238,239],"wasl":[2,3,77,78]},
-"81": {"ghunnah":[26,29,156,160,183,186],"idgham":[21,26,44,49,60,65,87,92],"madd":[42,43,85,86,110,111,142,143,173,174,197,198,230,231],"wasl":[2,3,68,69,127,128]},
-"82": {"ghunnah":[4,8,22,25],"madd":[45,46,56,57],"silent":[15,17],"wasl":[38,39,49,50]},
-"83": {"ghunnah":[31,34,37,40],"madd":[69,70,74,75],"wasl":[21,22,64,65]},
-"84": {"ghunnah":[20,24,30,33,34,38,42,47,47,50],"madd":[108,109],"qalqalah":[11,13],"silent":[82,84]},
-"85": {"ghunnah":[83,86],"madd":[88,89],"silent":[31,33],"wasl":[14,15,34,35]},
-"86": {"ghunnah":[108,111,125,129,171,174],"madd":[42,44,71,73,77,79,88,90,183,184,188,189],"qalqalah":[115,117],"silent":[33,35,57,59,120,122,145,147],"wasl":[14,15,96,97,159,160]},
-"87": {"idgham":[39,40,62,67],"madd":[86,87],"silent":[10,12,75,77],"wasl":[19,20,38,39]},
-"88": {"ghunnah":[33,37,69,74],"madd":[57,58,113,114],"qalqalah":[53,55],"silent":[17,19,28,30,102,104],"wasl":[43,44,79,80]},
-"89": {"ghunnah":[30,33,34,38,63,66],"idgham":[53,58,158,164,175,179,182,187,194,198],"madd":[106,108,112,114,146,147,156,157,219,220],"qalqalah":[11,13,152,154],"wasl":[139,140]},
-"90": {"ghunnah":[2,5,115,118],"madd":[46,47,57,59,103,105,165,166],"qalqalah":[30,32],"wasl":[6,7,25,26,37,38,66,67,94,95,110,111,123,124]},
-"91": {"ghunnah":[55,58,145,148],"idgham":[40,41],"madd":[37,38,73,74,178,179],"qalqalah":[101,103],"silent":[9,11,61,63],"wasl":[21,22,64,65,115,116,149,150]},
-"92": {"ghunnah":[49,52,68,71,73,78,108,113,125,129,137,140,164,167,172,175,218,221,255,258],"madd":[71,72,95,96,203,204,243,244,277,278],"qalqalah":[181,183],"silent":[14,16],"wasl":[19,20,191,192,236,237]},
-"93": {"ghunnah":[37,40,119,122,125,128,132,135],"idgham":[41,45,51,55,60,64,72,76,95,99],"madd":[9,11,45,46,57,58,78,80,101,103,146,147],"wasl":[14,15]},
-"94": {"ghunnah":[39,44,69,73,132,136],"idgham":[104,105,123,124],"madd":[15,17,26,27,108,110,171,172],"silent":[17,19,100,102],"wasl":[103,104,142,143]},
-"95": {"ghunnah":[40,45,54,57,63,66,97,101,101,104],"idgham":[85,90],"madd":[115,116],"silent":[15,17],"wasl":[27,28,67,68]},
-"96": {"ghunnah":[6,9,16,19,30,33,60,63,93,97],"idgham":[46,50],"madd":[80,82,127,128],"qalqalah":[54,56,87,89],"silent":[82,84,116,118],"wasl":[34,35,64,65]},
-"97": {"ghunnah":[24,28,40,43,60,64,74,77,88,92,112,115,128,132],"idgham":[18,24,98,102],"madd":[14,15,79,80,86,87,162,163],"qalqalah":[106,108,122,124],"silent":[85,86,151,153]},
-"98": {"idgham":[58,59,71,72],"madd":[66,67,77,78],"wasl":[17,18,32,33,44,45,57,58,70,71]},
-"99": {"ghunnah":[2,5],"madd":[7,8,20,21,28,29,89,90],"silent":[56,58],"wasl":[38,39]},
-"100": {"ghunnah":[2,5,69,73],"madd":[15,16,20,21,53,54,75,76,85,86],"wasl":[28,29,57,58]},
-"101": {"ghunnah":[92,95,102,105,113,117],"idgham":[26,31,43,47],"madd":[17,19,85,87,97,99,146,147],"silent":[87,89],"wasl":[47,48]},
-"102": {"idgham":[34,39,94,99],"madd":[14,15,120,121],"silent":[86,88],"wasl":[22,23,47,48,68,69]},
-"103": {"ghunnah":[20,23,41,44],"idgham":[66,71,116,120,143,148],"madd":[59,60,122,123,150,151],"qalqalah":[6,8],"wasl":[77,78]},
-"104": {"ghunnah":[2,5],"madd":[40,41,97,98],"wasl":[6,7,44,45,68,69]},
-"105": {"ghunnah":[2,5],"madd":[63,64,83,85,100,101,105,106],"silent":[79,81],"wasl":[19,20,29,30,67,68,95,96]},
-"106": {"ghunnah":[2,6,24,27,87,91,89,93,118,122,144,149],"idgham":[113,118,165,170],"madd":[38,39,43,45,77,78,102,103,110,111,202,203],"qalqalah":[81,83,141,143],"wasl":[13,14,94,95,129,130,173,174]},
-"107": {"ghunnah":[12,15,80,83],"idgham":[47,48],"madd":[2,3,42,43,119,120,124,125],"silent":[31,33,41,42],"wasl":[20,21,34,35,46,47,63,64,84,85,104,105,114,115]},
-"108": {"madd":[6,8,78,79,94,96,111,112,116,117],"qalqalah":[74,76],"silent":[2,4,90,92],"wasl":[13,14,30,31,106,107]},
-"109": {"ghunnah":[13,16],"madd":[48,49,53,54],"wasl":[25,26,43,44]},
-"110": {"ghunnah":[2,5,8,11,45,48,70,73,100,103,115,118],"idgham":[135,140],"madd":[76,77,93,95,142,143],"silent":[39,41,65,67,82,84,95,97]},
-"111": {"ghunnah":[26,30],"idgham":[40,45,76,81],"madd":[32,33,111,112]},
-"112": {"ghunnah":[22,27,32,36,61,64,99,103,113,117],"idgham":[50,55,65,69,93,99],"madd":[151,152,218,219],"qalqalah":[55,57],"silent":[207,209],"wasl":[9,10,137,138,158,159,174,175,185,186]},
-"113": {"idgham":[26,31],"madd":[11,13,84,85,89,90],"qalqalah":[6,8],"wasl":[64,65]},
-"114": {"ghunnah":[12,15,42,47,86,90,90,93],"idgham":[51,56],"madd":[40,41,113,114],"silent":[7,9,64,66],"wasl":[28,29,56,57,76,77]},
-"115": {"ghunnah":[2,5,64,67,148,152,154,157],"idgham":[43,44,136,140,172,177],"madd":[75,77,107,108,179,180],"wasl":[28,29,42,43,59,60,95,96,116,117,158,159]},
-"116": {"ghunnah":[128,131],"idgham":[68,72,85,90],"madd":[57,58,66,67,74,75,190,191],"silent":[14,16,99,101],"wasl":[45,46,108,109,116,117,132,133,160,161,168,169]},
-"117": {"ghunnah":[6,10],"idgham":[14,18],"madd":[4,5,37,38]},
-"118": {"ghunnah":[63,67,99,103,113,116],"madd":[86,87,96,97,106,108,131,132],"qalqalah":[67,69],"silent":[24,26,108,110],"wasl":[8,9]},
-"119": {"ghunnah":[2,5,8,11,61,65,65,68,81,84,115,118,130,133],"idgham":[42,43,150,155],"madd":[46,48,57,58,92,93,108,110,157,158],"silent":[38,40,75,77,110,112],"wasl":[41,42]},
-"120": {"ghunnah":[2,5,27,30,31,35],"idgham":[39,45,57,62],"madd":[12,13,88,89],"qalqalah":[8,10],"wasl":[77,78]},
-"121": {"idgham":[6,12,59,64],"madd":[31,32,42,43,57,58,70,71],"qalqalah":[24,26],"wasl":[23,24]},
-"122": {"ghunnah":[43,46],"idgham":[20,21,37,41,75,76],"madd":[11,12,48,49,79,80,84,85],"wasl":[19,20,54,55,74,75]},
-"123": {"ghunnah":[2,5],"idgham":[69,74],"madd":[16,18,56,57,100,101],"qalqalah":[52,54],"wasl":[33,34,89,90]},
-"124": {"ghunnah":[2,5,65,68],"idgham":[17,18],"madd":[113,114,151,152],"qalqalah":[21,23],"silent":[52,54,132,134],"wasl":[16,17,32,33,42,43,106,107]},
-"125": {"ghunnah":[82,86,110,113,140,144,150,154],"madd":[75,76,161,162,192,193],"qalqalah":[1,3],"wasl":[31,32,45,46,59,60,86,87,181,182]},
-"126": {"ghunnah":[54,58,68,72],"idgham":[93,98,98,99],"madd":[60,61,102,103,107,108],"qalqalah":[12,14,50,52],"silent":[29,31]},
-"127": {"ghunnah":[93,96],"idgham":[88,93],"madd":[106,107],"qalqalah":[18,20],"wasl":[2,3,34,35]},
-"128": {"ghunnah":[2,5],"idgham":[54,59],"madd":[65,66],"silent":[36,38],"wasl":[6,7,19,20,29,30,42,43]}
+"1": {"ghunnah":[111,114],"madd_2":[90,91,95,96,103,104],"madd_246":[124,125],"madd_munfasil":[43,46],"qalqalah":[86,88],"hamzat_wasl":[54,55]},
+"2": {"ghunnah":[108,111],"ikhfa":[96,99],"idghaam_ghunnah":[61,65],"lam_shamsiyyah":[29,30],"madd_2":[50,51,113,114,124,125],"madd_246":[151,152],"madd_munfasil":[86,88,101,103,117,119,133,135],"madd_muttasil":[17,19,67,69],"silent":[103,105],"hamzat_wasl":[10,11,28,29,145,146]},
+"3": {"ghunnah":[56,59],"lam_shamsiyyah":[8,9],"madd_2":[14,15,17,18,48,49],"madd_246":[69,70],"hamzat_wasl":[7,8,23,24,35,36]},
+"4": {"ikhfa":[12,15,31,35],"idghaam_ghunnah":[21,26,52,57],"madd_2":[15,16],"madd_246":[59,60],"qalqalah":[26,28],"hamzat_wasl":[7,8]},
+"5": {"idghaam_ghunnah":[44,48],"madd_2":[11,12,52,53],"madd_246":[76,77],"hamzat_wasl":[2,3]},
+"6": {"madd_246":[57,58]},
+"7": {"ghunnah":[95,98],"ikhfa":[87,90],"idghaam_no_ghunnah":[37,42,117,122],"madd_2":[58,59],"madd_246":[124,125],"silent":[53,55],"hamzat_wasl":[82,83]},
+"8": {"idghaam_ghunnah":[61,65],"madd_246":[90,91],"hamzat_wasl":[2,3,14,15,27,28]},
+"9": {"idghaam_ghunnah":[51,55],"lam_shamsiyyah":[24,25],"madd_2":[74,75],"madd_246":[88,89],"madd_muttasil":[46,48,62,64],"qalqalah":[82,84],"hamzat_wasl":[8,9,23,24]},
+"10": {"ikhfa":[16,19,83,87],"idghaam_ghunnah":[67,71],"idghaam_no_ghunnah":[44,49],"idghaam_shafawi":[51,56],"lam_shamsiyyah":[28,29],"madd_246":[98,99],"madd_munfasil":[11,13],"madd_muttasil":[34,36,41,43],"hamzat_wasl":[5,6,27,28]},
+"11": {"ghunnah":[49,52,100,103],"ikhfa":[77,81],"ikhfa_shafawi":[13,17],"iqlab":[3,5],"idghaam_ghunnah":[134,138],"idghaam_no_ghunnah":[124,129],"lam_shamsiyyah":[21,22,33,34,48,49,86,87],"madd_2":[69,70,94,95,110,111],"madd_246":[147,148],"hamzat_wasl":[20,21,32,33,47,48,60,61,85,86]},
+"12": {"ghunnah":[30,33,67,70,105,108],"iqlab":[87,91],"idghaam_ghunnah":[140,144],"idghaam_no_ghunnah":[130,135],"lam_shamsiyyah":[29,30,42,43,66,67],"madd_2":[85,86,115,116,128,129],"madd_246":[150,151],"madd_munfasil":[100,102],"hamzat_wasl":[17,18,28,29,41,42,53,54,65,66]},
+"13": {"ghunnah":[62,65],"idghaam_ghunnah":[96,100],"idghaam_no_ghunnah":[86,91],"madd_2":[52,53,72,73],"madd_246":[108,109],"madd_munfasil":[57,59],"hamzat_wasl":[24,25]},
+"14": {"ikhfa":[59,64,103,107,172,176],"idghaam_ghunnah":[68,73],"madd_2":[182,183],"madd_246":[206,207],"qalqalah":[160,162],"silent":[44,46,86,88,167,169],"hamzat_wasl":[7,8,23,24,128,129]},
+"15": {"ikhfa":[37,41],"idghaam_ghunnah":[64,69],"idghaam_no_ghunnah":[74,80],"madd_2":[29,30,62,63],"madd_246":[98,99],"hamzat_wasl":[15,16]},
+"16": {"ghunnah":[19,22],"idghaam_ghunnah":[11,15],"lam_shamsiyyah":[18,19],"madd_2":[6,7,9,10],"madd_246":[40,41],"qalqalah":[22,24],"hamzat_wasl":[17,18]},
+"17": {"idghaam_ghunnah":[6,10],"idghaam_no_ghunnah":[21,26],"madd_246":[54,55]},
+"18": {"ghunnah":[52,55],"ikhfa":[4,8],"idghaam_no_ghunnah":[72,77],"madd_246":[79,80],"madd_munfasil":[47,49],"silent":[14,16],"hamzat_wasl":[26,27,56,57]},
+"19": {"madd_246":[48,49],"hamzat_wasl":[2,3]},
+"20": {"ikhfa":[24,28],"idghaam_ghunnah":[62,67],"madd_246":[80,81],"qalqalah":[14,16],"hamzat_wasl":[2,3,32,33]},
+"21": {"idghaam_ghunnah":[26,30],"madd_2":[6,7],"madd_246":[63,64],"madd_muttasil":[23,25],"qalqalah":[57,59]},
+"22": {"ikhfa":[26,30,85,88],"idghaam_ghunnah":[18,22,91,95],"idghaam_shafawi":[80,85,97,102],"madd_2":[4,5,16,17,22,23],"madd_246":[112,113],"hamzat_wasl":[30,31,58,59]},
+"23": {"ghunnah":[13,16,69,72],"madd_2":[74,75],"madd_246":[103,104],"hamzat_wasl":[17,18,88,89]},
+"24": {"ikhfa":[31,34],"idghaam_shafawi":[18,23],"madd_2":[61,62],"madd_246":[78,79],"madd_munfasil":[26,28,52,54],"silent":[54,56],"hamzat_wasl":[68,69]},
+"25": {"ikhfa_shafawi":[98,102],"idghaam_ghunnah":[37,41],"madd_2":[53,54],"madd_246":[139,140],"madd_munfasil":[10,12],"madd_muttasil":[124,126],"silent":[12,14],"hamzat_wasl":[46,47,76,77]},
+"26": {"ikhfa":[24,28,116,120],"idghaam_shafawi":[64,69],"lam_shamsiyyah":[105,106],"madd_2":[59,60,136,137],"madd_246":[177,178],"qalqalah":[2,4,28,30,109,111],"hamzat_wasl":[12,13,45,46,72,73,104,105,142,143]},
+"27": {"ghunnah":[2,5,144,147],"ikhfa":[80,83],"lam_shamsiyyah":[171,172],"madd_2":[20,21,191,192],"madd_246":[196,197],"madd_muttasil":[61,63,175,177],"madd_6":[90,92],"silent":[129,131],"hamzat_wasl":[13,14,68,69,113,114,132,133,148,149,158,159,170,171,186,187]},
+"28": {"ghunnah":[93,96,129,132],"ikhfa":[54,57,109,113,158,161],"iqlab":[116,120,147,151],"lam_shamsiyyah":[78,79],"madd_2":[20,21],"madd_246":[172,173],"madd_munfasil":[49,51,123,126],"madd_muttasil":[33,35,113,115],"silent":[74,76],"hamzat_wasl":[26,27,77,78,133,134]},
+"29": {"ghunnah":[28,31],"madd_2":[20,21,36,37],"madd_246":[85,86],"madd_munfasil":[9,11],"qalqalah":[3,5,16,18],"silent":[11,13],"hamzat_wasl":[2,3,71,72]},
+"30": {"ikhfa":[40,43],"idghaam_ghunnah":[127,131,157,161],"idghaam_no_ghunnah":[70,76],"lam_shamsiyyah":[110,111],"madd_2":[103,104],"madd_246":[186,187],"madd_munfasil":[35,37],"silent":[27,29,62,64,94,96],"hamzat_wasl":[19,20,109,110,139,140,176,177]},
+"31": {"ghunnah":[2,5],"ikhfa":[41,45],"idghaam_ghunnah":[14,18],"madd_2":[5,6,62,63,100,101],"madd_246":[132,133],"madd_muttasil":[88,90],"qalqalah":[11,13,18,20,33,35,108,110],"hamzat_wasl":[53,54,114,115,122,123]},
+"32": {"ghunnah":[99,102],"ikhfa":[113,116],"madd_2":[20,21,68,69],"madd_246":[127,128],"madd_muttasil":[33,35],"qalqalah":[84,86],"silent":[91,93],"hamzat_wasl":[26,27,83,84,94,95]},
+"33": {"ikhfa":[7,10,26,30,115,119,160,164,174,177],"madd_2":[90,91,157,158],"madd_246":[192,193],"madd_munfasil":[21,23,167,169],"madd_muttasil":[48,50],"qalqalah":[119,121],"silent":[169,171],"hamzat_wasl":[41,42,103,104,145,146]},
+"34": {"idghaam_shafawi":[52,57],"madd_2":[72,73],"madd_246":[86,87],"silent":[37,39,65,67]},
+"35": {"ikhfa":[66,70,79,83,135,139,148,152,155,159,186,190],"idghaam_ghunnah":[86,91],"lam_shamsiyyah":[213,214],"madd_2":[75,76,144,145,161,162,236,237],"madd_246":[247,248],"madd_munfasil":[100,102],"madd_muttasil":[37,39,108,110],"qalqalah":[58,60,190,192],"silent":[27,29],"hamzat_wasl":[8,9,42,43,174,175,212,213,229,230,240,241]},
+"36": {"ghunnah":[31,34],"ikhfa":[202,205],"idghaam_no_ghunnah":[35,40],"idghaam_shafawi":[106,111,136,141],"lam_shamsiyyah":[87,88,162,163],"madd_2":[91,92,168,169,226,227],"madd_246":[246,247],"qalqalah":[6,8,74,76],"silent":[60,62,83,85,182,184,208,210],"hamzat_wasl":[52,53,63,64,73,74,86,87,120,121,161,162,189,190,201,202,234,235]},
+"37": {"ghunnah":[35,38],"ikhfa":[2,6],"idghaam_ghunnah":[61,65,86,91],"idghaam_shafawi":[81,86],"madd_2":[25,26,91,92],"madd_246":[96,97],"hamzat_wasl":[39,40]},
+"38": {"ghunnah":[116,119,131,134],"idghaam_ghunnah":[68,72,106,111],"lam_shamsiyyah":[130,131],"madd_2":[37,38,113,114],"madd_246":[150,151],"qalqalah":[4,6,51,53],"silent":[11,13],"hamzat_wasl":[16,17,58,59,129,130]},
+"39": {"ghunnah":[83,86],"madd_2":[102,103],"madd_246":[107,108],"madd_munfasil":[76,78],"silent":[78,80,97,99],"hamzat_wasl":[19,20,60,61]},
+"40": {"ghunnah":[2,5],"ikhfa":[68,72],"idghaam_ghunnah":[49,54],"madd_2":[43,44,64,65],"madd_246":[76,77],"madd_munfasil":[32,34],"qalqalah":[39,41]},
+"41": {"ghunnah":[72,75],"iqlab":[38,41],"idghaam_ghunnah":[102,106],"lam_shamsiyyah":[85,86],"madd_246":[159,160],"qalqalah":[110,112],"silent":[20,22,58,60,148,150],"hamzat_wasl":[2,3,27,28,84,85,115,116]},
+"42": {"madd_246":[50,51],"silent":[17,19]},
+"43": {"ikhfa":[21,25,101,105,105,108],"idghaam_ghunnah":[45,51],"lam_shamsiyyah":[90,91],"madd_246":[123,124],"madd_munfasil":[4,6,54,56,77,79],"qalqalah":[25,27],"silent":[79,81],"hamzat_wasl":[89,90]},
+"44": {"ghunnah":[76,79],"ikhfa":[32,35],"lam_shamsiyyah":[19,20,52,53,75,76],"madd_2":[12,13],"madd_246":[131,132],"madd_munfasil":[39,41],"hamzat_wasl":[2,3,18,19,51,52]},
+"45": {"idghaam_ghunnah":[48,52],"lam_shamsiyyah":[32,33],"madd_246":[137,138],"silent":[28,30],"hamzat_wasl":[11,12,31,32,59,60,74,75,102,103]},
+"46": {"ikhfa_shafawi":[44,48],"madd_246":[56,57]},
+"47": {"ghunnah":[39,42],"ikhfa":[33,37],"idghaam_no_ghunnah":[61,66],"madd_246":[68,69]},
+"48": {"ikhfa":[46,50],"idghaam_ghunnah":[53,57],"idghaam_no_ghunnah":[118,124],"lam_shamsiyyah":[99,100],"madd_2":[73,74,78,79,139,140],"madd_246":[144,145],"madd_muttasil":[105,107],"silent":[15,17,66,68],"hamzat_wasl":[36,37,85,86,98,99]},
+"49": {"ikhfa":[63,67],"idghaam_ghunnah":[73,77],"lam_shamsiyyah":[28,29],"madd_2":[34,35,37,38],"madd_246":[116,117],"madd_muttasil":[84,86],"madd_6":[67,69],"hamzat_wasl":[27,28,51,52,77,78]},
+"50": {"ikhfa":[23,27],"idghaam_shafawi":[18,23],"madd_246":[62,63]},
+"51": {"ghunnah":[58,61],"ikhfa":[84,88],"idghaam_ghunnah":[76,80],"madd_2":[38,39,74,75,80,81,93,94],"madd_246":[106,107],"madd_munfasil":[29,31],"silent":[31,33],"hamzat_wasl":[8,9,46,47,99,100]},
+"52": {"lam_shamsiyyah":[17,18,50,51],"madd_2":[6,7,23,24,26,27],"madd_246":[93,94],"hamzat_wasl":[16,17,32,33,49,50,78,79]},
+"53": {"ghunnah":[44,47],"ikhfa":[25,29],"idghaam_ghunnah":[15,20],"idghaam_shafawi":[10,15],"lam_shamsiyyah":[65,66],"madd_246":[93,94],"qalqalah":[86,88],"hamzat_wasl":[34,35,64,65]},
+"54": {"ghunnah":[2,5],"ikhfa":[30,33,53,56],"ikhfa_shafawi":[56,60],"idghaam_ghunnah":[48,53],"lam_shamsiyyah":[20,21],"madd_246":[78,79],"hamzat_wasl":[19,20]},
+"55": {"madd_2":[30,31],"madd_246":[68,69],"madd_munfasil":[18,20],"silent":[11,13,48,50]},
+"56": {"ghunnah":[48,51,88,91,94,97],"ikhfa":[101,104],"idghaam_ghunnah":[42,48],"madd_2":[61,62],"madd_246":[115,116],"qalqalah":[4,6,57,59],"hamzat_wasl":[69,70]},
+"57": {"idghaam_shafawi":[52,57],"madd_2":[29,30,39,40,44,45],"madd_246":[67,68],"qalqalah":[4,6,35,37],"hamzat_wasl":[22,23]},
+"58": {"ikhfa":[33,36],"ikhfa_shafawi":[24,28],"idghaam_ghunnah":[63,68],"madd_2":[53,54],"madd_246":[77,78],"qalqalah":[47,49],"hamzat_wasl":[28,29]},
+"59": {"ikhfa":[29,33],"lam_shamsiyyah":[105,106],"madd_2":[6,7,69,70,98,99],"madd_246":[140,141],"madd_munfasil":[54,56],"madd_muttasil":[33,35,123,125],"hamzat_wasl":[17,18,104,105]},
+"60": {"lam_shamsiyyah":[50,51],"madd_246":[116,117],"hamzat_wasl":[29,30,49,50,69,70,79,80,98,99,109,110]},
+"61": {"ghunnah":[27,30,125,128],"ikhfa":[70,74,127,132],"idghaam_ghunnah":[80,84,89,93,118,123,183,187],"idghaam_shafawi":[44,49],"lam_shamsiyyah":[26,27],"madd_2":[86,87],"madd_246":[203,204],"madd_munfasil":[109,112],"madd_muttasil":[140,142],"madd_6":[74,76],"qalqalah":[197,199],"hamzat_wasl":[17,18,25,26]},
+"62": {"ghunnah":[74,77,110,113,123,126,134,137],"idghaam_shafawi":[139,144],"lam_shamsiyyah":[122,123],"madd_246":[150,151],"qalqalah":[4,6],"hamzat_wasl":[62,63,85,86,121,122]},
+"63": {"ikhfa":[48,52],"idghaam_ghunnah":[43,48],"lam_shamsiyyah":[77,78],"madd_2":[85,86,95,96],"madd_246":[153,154],"madd_munfasil":[27,29,34,37],"qalqalah":[14,16,52,54],"hamzat_wasl":[2,3,76,77,122,123]},
+"64": {"ikhfa":[9,12],"idghaam_ghunnah":[96,101,118,122],"idghaam_no_ghunnah":[108,113],"madd_2":[34,35],"madd_246":[128,129],"madd_munfasil":[4,6],"silent":[82,84],"hamzat_wasl":[27,28,64,65,72,73]},
+"65": {"ghunnah":[87,90],"ikhfa":[12,15,40,44],"idghaam_ghunnah":[121,125],"idghaam_no_ghunnah":[111,116],"lam_shamsiyyah":[24,25],"madd_2":[97,98],"madd_246":[131,132],"madd_munfasil":[82,84],"madd_muttasil":[30,32,37,39],"hamzat_wasl":[2,3,23,24,57,58]},
+"66": {"ghunnah":[4,7,58,61],"ikhfa":[119,124],"iqlab":[81,84],"idghaam_ghunnah":[41,46,95,99],"idghaam_no_ghunnah":[102,107,129,135],"idghaam_shafawi":[53,58],"lam_shamsiyyah":[135,136],"madd_2":[28,29,76,77,139,140],"madd_246":[144,145],"madd_muttasil":[124,126],"qalqalah":[36,38],"hamzat_wasl":[19,20]},
+"67": {"ghunnah":[18,21,90,93],"ikhfa":[4,8],"idghaam_ghunnah":[67,72,124,128],"idghaam_no_ghunnah":[114,119],"lam_shamsiyyah":[17,18],"madd_2":[12,13,38,39,100,101],"madd_246":[134,135],"hamzat_wasl":[16,17,29,30]},
+"68": {"ghunnah":[27,30,96,99],"idghaam_ghunnah":[72,77],"lam_shamsiyyah":[26,27,83,84],"madd_246":[109,110],"hamzat_wasl":[25,26,40,41,55,56,82,83]},
+"69": {"ghunnah":[2,5,146,149,155,158],"ikhfa":[14,18],"iqlab":[81,84],"idghaam_ghunnah":[66,71,100,105,189,193],"idghaam_no_ghunnah":[140,145,179,184],"lam_shamsiyyah":[23,24,145,146],"madd_2":[31,32,120,121,125,126,165,166],"madd_246":[202,203],"madd_muttasil":[137,139],"hamzat_wasl":[22,23,37,38]},
+"70": {"ghunnah":[23,26,137,140],"ikhfa":[47,50,124,128,155,159],"idghaam_ghunnah":[55,59],"idghaam_shafawi":[50,55],"madd_2":[37,38],"madd_246":[161,162],"madd_munfasil":[69,72],"hamzat_wasl":[2,3,82,83,141,142]},
+"71": {"ikhfa":[41,45],"lam_shamsiyyah":[48,49],"madd_2":[132,133],"madd_246":[193,194],"madd_muttasil":[157,159],"madd_6":[88,90],"qalqalah":[187,189],"silent":[81,83],"hamzat_wasl":[2,3,47,48,63,64,177,178]},
+"72": {"ikhfa":[31,34],"ikhfa_shafawi":[84,88],"idghaam_ghunnah":[49,54,103,107],"idghaam_shafawi":[21,26,65,70,115,120],"lam_shamsiyyah":[124,125],"madd_2":[47,48,79,80,133,134,148,149],"madd_246":[200,201],"hamzat_wasl":[2,3,123,124,143,144,179,180]},
+"73": {"ikhfa":[16,20],"idghaam_ghunnah":[61,67,102,107],"lam_shamsiyyah":[71,72],"madd_2":[77,78,80,81],"madd_246":[122,123],"hamzat_wasl":[24,25,70,71,86,87]},
+"74": {"ghunnah":[41,44],"ikhfa":[66,69],"madd_246":[84,85],"silent":[15,17],"hamzat_wasl":[26,27,45,46]},
+"75": {"ghunnah":[92,95],"ikhfa":[110,115,122,125],"idghaam_ghunnah":[28,34,69,73,139,144],"idghaam_no_ghunnah":[40,46,75,80],"madd_2":[86,87,165,166],"madd_246":[217,218],"qalqalah":[25,27,50,52,82,84],"hamzat_wasl":[7,8,169,170]},
+"76": {"idghaam_ghunnah":[84,88,183,187,226,231],"idghaam_no_ghunnah":[22,28],"madd_2":[113,114,224,225],"madd_246":[237,238],"madd_munfasil":[47,49],"qalqalah":[52,54,65,67,201,203],"hamzat_wasl":[9,10,196,197]},
+"77": {"ghunnah":[115,118],"ikhfa":[145,149],"lam_shamsiyyah":[18,19,58,59],"madd_2":[24,25,27,28],"madd_246":[151,152],"madd_munfasil":[47,49],"qalqalah":[106,108],"hamzat_wasl":[17,18,33,34,57,58,84,85,119,120]},
+"78": {"ghunnah":[38,41],"iqlab":[26,29],"idghaam_ghunnah":[73,78],"idghaam_shafawi":[20,25],"lam_shamsiyyah":[93,94],"madd_2":[43,44,113,114],"madd_246":[154,155],"qalqalah":[109,111],"hamzat_wasl":[2,3,92,93,104,105,119,120]},
+"79": {"ghunnah":[81,84,102,105],"ikhfa":[43,47],"idghaam_ghunnah":[137,141],"idghaam_no_ghunnah":[127,132],"lam_shamsiyyah":[23,24,56,57],"madd_2":[41,42,112,113,125,126],"madd_246":[147,148],"madd_muttasil":[62,64],"silent":[13,15],"hamzat_wasl":[22,23,55,56,92,93]},
+"80": {"ikhfa":[67,71,96,101],"iqlab":[27,30],"idghaam_ghunnah":[46,51,215,220],"idghaam_shafawi":[21,26,62,67],"madd_2":[86,87,213,214,224,225],"madd_246":[238,239],"madd_munfasil":[206,208],"hamzat_wasl":[2,3,77,78]},
+"81": {"ghunnah":[26,29,183,186],"ikhfa_shafawi":[156,160],"idghaam_ghunnah":[44,49,87,92],"idghaam_shafawi":[21,26,60,65],"madd_2":[42,43,85,86,110,111,142,143,173,174,197,198],"madd_246":[230,231],"hamzat_wasl":[2,3,68,69,127,128]},
+"82": {"ghunnah":[22,25],"ikhfa":[4,8],"madd_2":[45,46],"madd_246":[56,57],"silent":[15,17],"hamzat_wasl":[38,39,49,50]},
+"83": {"ghunnah":[31,34],"ikhfa":[37,40],"madd_2":[69,70],"madd_246":[74,75],"hamzat_wasl":[21,22,64,65]},
+"84": {"ghunnah":[30,33,47,50],"ikhfa":[20,24,34,38,42,47],"madd_246":[108,109],"qalqalah":[11,13],"silent":[82,84]},
+"85": {"ikhfa":[83,86],"madd_246":[88,89],"silent":[31,33],"hamzat_wasl":[14,15,34,35]},
+"86": {"ghunnah":[108,111,171,174],"ikhfa":[125,129],"madd_2":[183,184],"madd_246":[188,189],"madd_muttasil":[42,44,71,73,77,79,88,90],"qalqalah":[115,117],"silent":[33,35,57,59,120,122,145,147],"hamzat_wasl":[14,15,96,97,159,160]},
+"87": {"idghaam_shafawi":[62,67],"lam_shamsiyyah":[39,40],"madd_246":[86,87],"silent":[10,12,75,77],"hamzat_wasl":[19,20,38,39]},
+"88": {"ikhfa":[33,37,69,74],"madd_2":[57,58],"madd_246":[113,114],"qalqalah":[53,55],"silent":[17,19,28,30,102,104],"hamzat_wasl":[43,44,79,80]},
+"89": {"ghunnah":[30,33],"ikhfa":[34,38,63,66],"idghaam_ghunnah":[175,179,182,187,194,198],"idghaam_no_ghunnah":[158,164],"idghaam_shafawi":[53,58],"madd_2":[146,147,156,157],"madd_246":[219,220],"madd_muttasil":[106,108,112,114],"qalqalah":[11,13,152,154],"hamzat_wasl":[139,140]},
+"90": {"ghunnah":[2,5],"ikhfa":[115,118],"madd_2":[46,47],"madd_246":[165,166],"madd_muttasil":[57,59,103,105],"qalqalah":[30,32],"hamzat_wasl":[6,7,25,26,37,38,66,67,94,95,110,111,123,124]},
+"91": {"ghunnah":[145,148],"ikhfa":[55,58],"idghaam_mutajanisayn":[40,41],"madd_2":[37,38,73,74],"madd_246":[178,179],"qalqalah":[101,103],"silent":[9,11,61,63],"hamzat_wasl":[21,22,64,65,115,116,149,150]},
+"92": {"ghunnah":[137,140,164,167,172,175,218,221],"ikhfa":[68,71,73,78,125,129,255,258],"iqlab":[49,52,108,113],"madd_2":[71,72,95,96,203,204,243,244],"madd_246":[277,278],"qalqalah":[181,183],"silent":[14,16],"hamzat_wasl":[19,20,191,192,236,237]},
+"93": {"ghunnah":[37,40,119,122,125,128],"ikhfa":[132,135],"idghaam_ghunnah":[41,45,51,55,60,64,72,76,95,99],"madd_2":[45,46,57,58],"madd_246":[146,147],"madd_muttasil":[9,11,78,80,101,103],"hamzat_wasl":[14,15]},
+"94": {"ikhfa":[132,136],"iqlab":[39,44,69,73],"idghaam_mutajanisayn":[123,124],"lam_shamsiyyah":[104,105],"madd_2":[26,27],"madd_246":[171,172],"madd_munfasil":[15,17],"madd_muttasil":[108,110],"silent":[17,19,100,102],"hamzat_wasl":[103,104,142,143]},
+"95": {"ghunnah":[54,57],"ikhfa":[40,45,63,66,97,101,101,104],"idghaam_no_ghunnah":[85,90],"madd_246":[115,116],"silent":[15,17],"hamzat_wasl":[27,28,67,68]},
+"96": {"ghunnah":[60,63],"ikhfa":[6,9,16,19,30,33],"ikhfa_shafawi":[93,97],"idghaam_ghunnah":[46,50],"madd_246":[127,128],"madd_munfasil":[80,82],"qalqalah":[54,56,87,89],"silent":[82,84,116,118],"hamzat_wasl":[34,35,64,65]},
+"97": {"ghunnah":[74,77,112,115],"ikhfa":[24,28,40,43,60,64,88,92],"ikhfa_shafawi":[128,132],"idghaam_ghunnah":[18,24,98,102],"madd_2":[14,15,79,80,86,87],"madd_246":[162,163],"qalqalah":[106,108,122,124],"silent":[85,86,151,153]},
+"98": {"lam_shamsiyyah":[58,59,71,72],"madd_2":[66,67],"madd_246":[77,78],"hamzat_wasl":[17,18,32,33,44,45,57,58,70,71]},
+"99": {"ghunnah":[2,5],"madd_2":[7,8,20,21,28,29],"madd_246":[89,90],"silent":[56,58],"hamzat_wasl":[38,39]},
+"100": {"ghunnah":[2,5],"ikhfa_shafawi":[69,73],"madd_2":[15,16,20,21,53,54,75,76],"madd_246":[85,86],"hamzat_wasl":[28,29,57,58]},
+"101": {"ghunnah":[92,95],"ikhfa":[102,105],"iqlab":[113,117],"idghaam_ghunnah":[26,31,43,47],"madd_246":[146,147],"madd_munfasil":[17,19,85,87,97,99],"silent":[87,89],"hamzat_wasl":[47,48]},
+"102": {"idghaam_ghunnah":[94,99],"idghaam_no_ghunnah":[34,39],"madd_2":[14,15],"madd_246":[120,121],"silent":[86,88],"hamzat_wasl":[22,23,47,48,68,69]},
+"103": {"ghunnah":[20,23,41,44],"idghaam_ghunnah":[116,120,143,148],"idghaam_no_ghunnah":[66,71],"madd_2":[59,60,122,123],"madd_246":[150,151],"qalqalah":[6,8],"hamzat_wasl":[77,78]},
+"104": {"ghunnah":[2,5],"madd_2":[40,41],"madd_246":[97,98],"hamzat_wasl":[6,7,44,45,68,69]},
+"105": {"ghunnah":[2,5],"madd_2":[63,64,100,101],"madd_246":[105,106],"madd_muttasil":[83,85],"silent":[79,81],"hamzat_wasl":[19,20,29,30,67,68,95,96]},
+"106": {"ghunnah":[87,91],"ikhfa":[2,6,118,122,144,149],"iqlab":[24,27,89,93],"idghaam_ghunnah":[113,118,165,170],"madd_2":[38,39,77,78,102,103,110,111],"madd_246":[202,203],"madd_munfasil":[43,45],"qalqalah":[81,83,141,143],"hamzat_wasl":[13,14,94,95,129,130,173,174]},
+"107": {"ghunnah":[12,15,80,83],"lam_shamsiyyah":[47,48],"madd_2":[2,3,42,43,119,120],"madd_246":[124,125],"silent":[31,33,41,42],"hamzat_wasl":[20,21,34,35,46,47,63,64,84,85,104,105,114,115]},
+"108": {"madd_2":[78,79,111,112],"madd_246":[116,117],"madd_muttasil":[6,8,94,96],"qalqalah":[74,76],"silent":[2,4,90,92],"hamzat_wasl":[13,14,30,31,106,107]},
+"109": {"ghunnah":[13,16],"madd_2":[48,49],"madd_246":[53,54],"hamzat_wasl":[25,26,43,44]},
+"110": {"ghunnah":[2,5,8,11,70,73,100,103],"iqlab":[45,48,115,118],"idghaam_no_ghunnah":[135,140],"madd_2":[76,77],"madd_246":[142,143],"madd_munfasil":[93,95],"silent":[39,41,65,67,82,84,95,97]},
+"111": {"ikhfa":[26,30],"idghaam_ghunnah":[40,45,76,81],"madd_2":[32,33],"madd_246":[111,112]},
+"112": {"ghunnah":[61,64],"ikhfa":[22,27,32,36,99,103,113,117],"idghaam_ghunnah":[50,55,65,69,93,99],"madd_2":[151,152],"madd_246":[218,219],"qalqalah":[55,57],"silent":[207,209],"hamzat_wasl":[9,10,137,138,158,159,174,175,185,186]},
+"113": {"idghaam_ghunnah":[26,31],"madd_2":[84,85],"madd_246":[89,90],"madd_muttasil":[11,13],"qalqalah":[6,8],"hamzat_wasl":[64,65]},
+"114": {"ghunnah":[12,15],"ikhfa":[42,47,86,90,90,93],"idghaam_ghunnah":[51,56],"madd_2":[40,41],"madd_246":[113,114],"silent":[7,9,64,66],"hamzat_wasl":[28,29,56,57,76,77]},
+"115": {"ghunnah":[2,5,154,157],"ikhfa":[64,67,148,152],"idghaam_ghunnah":[136,140],"idghaam_no_ghunnah":[172,177],"lam_shamsiyyah":[43,44],"madd_2":[107,108],"madd_246":[179,180],"madd_munfasil":[75,77],"hamzat_wasl":[28,29,42,43,59,60,95,96,116,117,158,159]},
+"116": {"ghunnah":[128,131],"idghaam_ghunnah":[68,72],"idghaam_no_ghunnah":[85,90],"madd_2":[57,58,66,67,74,75],"madd_246":[190,191],"silent":[14,16,99,101],"hamzat_wasl":[45,46,108,109,116,117,132,133,160,161,168,169]},
+"117": {"ikhfa":[6,10],"idghaam_ghunnah":[14,18],"madd_2":[4,5],"madd_246":[37,38]},
+"118": {"ikhfa":[63,67,99,103,113,116],"madd_2":[86,87,96,97],"madd_246":[131,132],"madd_munfasil":[106,108],"qalqalah":[67,69],"silent":[24,26,108,110],"hamzat_wasl":[8,9]},
+"119": {"ghunnah":[2,5,8,11,65,68,115,118],"ikhfa":[61,65],"iqlab":[81,84,130,133],"idghaam_no_ghunnah":[150,155],"lam_shamsiyyah":[42,43],"madd_2":[57,58,92,93],"madd_246":[157,158],"madd_munfasil":[108,110],"madd_muttasil":[46,48],"silent":[38,40,75,77,110,112],"hamzat_wasl":[41,42]},
+"120": {"ghunnah":[2,5,27,30],"ikhfa":[31,35],"idghaam_ghunnah":[57,62],"idghaam_no_ghunnah":[39,45],"madd_2":[12,13],"madd_246":[88,89],"qalqalah":[8,10],"hamzat_wasl":[77,78]},
+"121": {"idghaam_ghunnah":[59,64],"idghaam_no_ghunnah":[6,12],"madd_2":[31,32,42,43,57,58],"madd_246":[70,71],"qalqalah":[24,26],"hamzat_wasl":[23,24]},
+"122": {"ghunnah":[43,46],"idghaam_ghunnah":[37,41],"lam_shamsiyyah":[20,21,75,76],"madd_2":[11,12,48,49,79,80],"madd_246":[84,85],"hamzat_wasl":[19,20,54,55,74,75]},
+"123": {"ghunnah":[2,5],"idghaam_ghunnah":[69,74],"madd_2":[56,57],"madd_246":[100,101],"madd_munfasil":[16,18],"qalqalah":[52,54],"hamzat_wasl":[33,34,89,90]},
+"124": {"ghunnah":[2,5,65,68],"lam_shamsiyyah":[17,18],"madd_2":[113,114],"madd_246":[151,152],"qalqalah":[21,23],"silent":[52,54,132,134],"hamzat_wasl":[16,17,32,33,42,43,106,107]},
+"125": {"ghunnah":[110,113],"ikhfa":[140,144,150,154],"ikhfa_shafawi":[82,86],"madd_2":[75,76,161,162],"madd_246":[192,193],"qalqalah":[1,3],"hamzat_wasl":[31,32,45,46,59,60,86,87,181,182]},
+"126": {"ikhfa":[68,72],"ikhfa_shafawi":[54,58],"idghaam_no_ghunnah":[93,98],"lam_shamsiyyah":[98,99],"madd_2":[60,61,102,103],"madd_246":[107,108],"qalqalah":[12,14,50,52],"silent":[29,31]},
+"127": {"ghunnah":[93,96],"idghaam_ghunnah":[88,93],"madd_246":[106,107],"qalqalah":[18,20],"hamzat_wasl":[2,3,34,35]},
+"128": {"ghunnah":[2,5],"idghaam_shafawi":[54,59],"madd_246":[65,66],"silent":[36,38],"hamzat_wasl":[6,7,19,20,29,30,42,43]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/17.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/17.json
index 378b192..da207bc 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/17.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/17.json
@@ -1,113 +1,113 @@
{
-"1": {"ghunnah":[206,209],"idgham":[84,90,219,220],"madd":[45,46,55,57,77,78,155,156,172,173,184,185,196,197,201,203,211,212,236,237],"qalqalah":[41,43,71,73,139,141],"wasl":[49,50,93,94,105,106,122,123,134,135,145,146,218,219,229,230]},
-"2": {"ghunnah":[97,101],"idgham":[48,54],"madd":[27,28,41,42,58,60,67,69],"silent":[92,94],"wasl":[20,21]},
-"3": {"ghunnah":[39,42,57,62],"madd":[44,45],"qalqalah":[54,56]},
-"4": {"ghunnah":[66,69,106,109,116,121],"madd":[10,12,24,26,33,35,52,53],"wasl":[45,46,74,75]},
-"5": {"ghunnah":[86,90,94,98],"idgham":[62,68,116,117,139,145],"madd":[10,12,28,29,70,72,111,112],"silent":[75,77,104,106],"wasl":[115,116]},
-"6": {"ghunnah":[2,5,60,64],"idgham":[72,76],"madd":[57,58,70,71,94,95],"qalqalah":[10,12,53,55],"wasl":[23,24]},
-"7": {"ghunnah":[11,14,23,26,33,36],"idgham":[189,193],"madd":[79,81,110,111],"qalqalah":[137,139],"silent":[116,118,144,146,205,207,218,220],"wasl":[91,92,147,148]},
-"8": {"ghunnah":[74,77],"idgham":[19,23,43,44],"madd":[86,87],"qalqalah":[52,54]},
-"9": {"ghunnah":[2,5,122,125,138,143],"idgham":[107,108],"madd":[8,9,111,112,116,117],"qalqalah":[50,52,135,137],"wasl":[13,14,69,70,84,85,106,107]},
-"10": {"ghunnah":[4,7],"qalqalah":[55,57],"wasl":[8,9,36,37]},
-"11": {"ghunnah":[14,17,69,72],"idgham":[24,25],"madd":[17,18,36,38,42,43,72,73],"qalqalah":[4,6],"wasl":[9,10,23,24,46,47,64,65]},
-"12": {"ghunnah":[25,28,99,102,218,222],"idgham":[24,25,98,99,117,122,139,145,145,150,182,183],"madd":[56,58,86,88,229,230],"qalqalah":[110,112,124,126],"silent":[131,133,171,173],"wasl":[12,13,23,24,67,68,97,98,181,182,194,195]},
-"13": {"ghunnah":[10,13,116,119],"idgham":[100,105],"madd":[13,14,27,28,33,35,41,42,55,56,72,73,88,89,98,99,110,111],"wasl":[81,82]},
-"14": {"madd":[12,13],"qalqalah":[1,3],"wasl":[36,37]},
-"15": {"ghunnah":[20,23,53,57,65,68,137,140],"idgham":[111,115],"madd":[47,48],"qalqalah":[165,167],"wasl":[6,7]},
-"16": {"ghunnah":[117,120],"idgham":[22,27],"madd":[6,8,17,19,124,125],"qalqalah":[13,15,131,133],"silent":[75,77],"wasl":[103,104]},
-"17": {"ghunnah":[38,41,99,104],"idgham":[51,55],"madd":[91,92],"wasl":[24,25]},
-"18": {"ghunnah":[3,7,86,89,110,113],"idgham":[73,78,136,142],"madd":[47,48,64,66,104,105,123,124],"qalqalah":[142,144],"wasl":[19,20]},
-"19": {"ghunnah":[67,71],"idgham":[98,103],"madd":[77,79],"silent":[73,75],"wasl":[15,16]},
-"20": {"idgham":[4,10],"madd":[18,20,24,26,33,35,39,41,53,55,82,84]},
-"21": {"ghunnah":[1,4],"idgham":[48,52,83,87],"madd":[81,82]},
-"22": {"idgham":[63,69],"madd":[31,32],"qalqalah":[7,9,48,50],"wasl":[19,20]},
-"23": {"ghunnah":[86,89,99,102,105,108,218,223],"idgham":[176,180],"madd":[32,34,42,44,63,64,79,80,131,133,169,171],"qalqalah":[93,95],"silent":[34,36],"wasl":[58,59,111,112]},
-"24": {"idgham":[27,28,41,42,56,57],"wasl":[2,3,26,27,40,41,65,66]},
-"25": {"ghunnah":[44,48,72,75],"madd":[59,60,77,78,94,95],"silent":[54,56]},
-"26": {"idgham":[57,58],"madd":[31,32],"qalqalah":[51,53,85,87],"wasl":[12,13,35,36,50,51,56,57]},
-"27": {"ghunnah":[2,5],"idgham":[43,44,65,66],"madd":[27,29,38,39,49,50,73,74,86,87],"silent":[29,31],"wasl":[6,7,42,43,64,65]},
-"28": {"ghunnah":[4,7,17,20],"idgham":[49,54,54,59,95,101],"madd":[37,39],"qalqalah":[31,33],"wasl":[30,31]},
-"29": {"idgham":[101,107],"qalqalah":[8,10,58,60,62,64,88,90],"wasl":[74,75]},
-"30": {"ghunnah":[2,5,61,64,93,98],"idgham":[24,25,37,41],"madd":[43,45,66,67,85,86],"qalqalah":[16,18,52,54],"wasl":[23,24]},
-"31": {"ghunnah":[88,91,115,120],"idgham":[50,55],"madd":[14,16,25,26,48,49],"qalqalah":[8,10,111,113],"silent":[16,18]},
-"32": {"ghunnah":[31,34],"idgham":[19,20,52,56],"madd":[25,28,36,37,46,47,58,60],"qalqalah":[8,10],"silent":[15,17],"wasl":[18,19]},
-"33": {"ghunnah":[20,23,74,78,91,96,132,137,166,169,181,184],"idgham":[19,20],"madd":[122,123,130,131,171,172],"qalqalah":[8,10,98,100],"silent":[15,17],"wasl":[18,19,28,29,44,45,61,62,154,155]},
-"34": {"ghunnah":[120,123],"madd":[92,93],"qalqalah":[8,10,76,78],"silent":[15,17,103,105],"wasl":[24,25,44,45,108,109,124,125]},
-"35": {"idgham":[90,94],"madd":[79,80],"silent":[9,11,44,46],"wasl":[12,13,49,50,62,63]},
-"36": {"ghunnah":[44,47],"idgham":[49,50],"madd":[33,34,95,97],"qalqalah":[8,10],"silent":[91,93],"wasl":[48,49,60,61,72,73]},
-"37": {"ghunnah":[37,40,45,49,70,74],"qalqalah":[74,76],"wasl":[17,18,56,57,81,82]},
-"38": {"ghunnah":[33,36],"madd":[8,9,29,30]},
-"39": {"ghunnah":[10,13,124,127],"idgham":[136,142],"madd":[2,3,13,15,22,25,92,93],"qalqalah":[68,70,142,144],"wasl":[48,49,80,81]},
-"40": {"ghunnah":[24,28,82,85],"madd":[11,12,62,64,75,76],"wasl":[28,29,41,42,55,56]},
-"41": {"madd":[26,27],"qalqalah":[6,8],"silent":[57,59],"wasl":[31,32]},
-"42": {"ghunnah":[33,37],"idgham":[55,61],"madd":[22,24],"qalqalah":[62,64],"silent":[70,72],"wasl":[61,62,84,85]},
-"43": {"ghunnah":[27,30,49,54],"madd":[6,7,11,12,19,20],"qalqalah":[2,4]},
-"44": {"ghunnah":[55,59,62,65,75,79,155,158],"idgham":[16,17,30,31,70,75,120,125],"madd":[22,23,25,26,111,112,117,118,160,161],"qalqalah":[34,36],"wasl":[15,16,29,30,41,42]},
-"45": {"idgham":[105,111],"wasl":[17,18,58,59,86,87]},
-"46": {"ghunnah":[35,38],"idgham":[43,47,82,87],"madd":[61,63,135,136,151,154,161,162],"qalqalah":[79,81,157,159],"silent":[144,146],"wasl":[114,115]},
-"47": {"ghunnah":[123,127],"idgham":[108,109,150,156],"madd":[41,43,90,93,112,113],"qalqalah":[86,88],"wasl":[107,108]},
-"48": {"ghunnah":[1,4],"silent":[21,23,50,52],"wasl":[29,30]},
-"49": {"ghunnah":[22,25,51,54,76,81],"idgham":[33,38],"madd":[7,9,31,32,42,43],"qalqalah":[60,62],"silent":[9,11]},
+"1": {"ghunnah":[206,209],"idghaam_ghunnah":[84,90],"lam_shamsiyyah":[219,220],"madd_2":[45,46,77,78,155,156,172,173,184,185,196,197,211,212],"madd_246":[236,237],"madd_munfasil":[55,57,201,203],"qalqalah":[41,43,71,73,139,141],"hamzat_wasl":[49,50,93,94,105,106,122,123,134,135,145,146,218,219,229,230]},
+"2": {"ikhfa":[97,101],"idghaam_no_ghunnah":[48,54],"madd_2":[27,28,41,42],"madd_munfasil":[58,60],"madd_muttasil":[67,69],"silent":[92,94],"hamzat_wasl":[20,21]},
+"3": {"ghunnah":[39,42],"ikhfa":[57,62],"madd_2":[44,45],"qalqalah":[54,56]},
+"4": {"ghunnah":[66,69,106,109],"ikhfa":[116,121],"madd_2":[52,53],"madd_munfasil":[10,12,24,26],"madd_muttasil":[33,35],"hamzat_wasl":[45,46,74,75]},
+"5": {"ikhfa":[86,90,94,98],"idghaam_ghunnah":[139,145],"idghaam_no_ghunnah":[62,68],"lam_shamsiyyah":[116,117],"madd_2":[28,29,111,112],"madd_munfasil":[70,72],"madd_muttasil":[10,12],"silent":[75,77,104,106],"hamzat_wasl":[115,116]},
+"6": {"ghunnah":[2,5],"ikhfa_shafawi":[60,64],"idghaam_ghunnah":[72,76],"madd_2":[57,58,70,71,94,95],"qalqalah":[10,12,53,55],"hamzat_wasl":[23,24]},
+"7": {"ikhfa":[11,14,23,26,33,36],"idghaam_ghunnah":[189,193],"madd_2":[110,111],"madd_muttasil":[79,81],"qalqalah":[137,139],"silent":[116,118,144,146,205,207,218,220],"hamzat_wasl":[91,92,147,148]},
+"8": {"ghunnah":[74,77],"idghaam_ghunnah":[19,23],"idghaam_mutajanisayn":[43,44],"madd_2":[86,87],"qalqalah":[52,54]},
+"9": {"ghunnah":[2,5,122,125],"ikhfa":[138,143],"lam_shamsiyyah":[107,108],"madd_2":[8,9,111,112,116,117],"qalqalah":[50,52,135,137],"hamzat_wasl":[13,14,69,70,84,85,106,107]},
+"10": {"ghunnah":[4,7],"qalqalah":[55,57],"hamzat_wasl":[8,9,36,37]},
+"11": {"ikhfa":[14,17,69,72],"lam_shamsiyyah":[24,25],"madd_2":[17,18,42,43,72,73],"madd_muttasil":[36,38],"qalqalah":[4,6],"hamzat_wasl":[9,10,23,24,46,47,64,65]},
+"12": {"ghunnah":[25,28,99,102],"ikhfa":[218,222],"idghaam_ghunnah":[139,145],"idghaam_no_ghunnah":[117,122,145,150],"lam_shamsiyyah":[24,25,98,99,182,183],"madd_2":[229,230],"madd_munfasil":[56,58,86,88],"qalqalah":[110,112,124,126],"silent":[131,133,171,173],"hamzat_wasl":[12,13,23,24,67,68,97,98,181,182,194,195]},
+"13": {"ikhfa":[10,13,116,119],"idghaam_ghunnah":[100,105],"madd_2":[13,14,27,28,41,42,55,56,72,73,88,89,98,99,110,111],"madd_muttasil":[33,35],"hamzat_wasl":[81,82]},
+"14": {"madd_2":[12,13],"qalqalah":[1,3],"hamzat_wasl":[36,37]},
+"15": {"ghunnah":[20,23,65,68,137,140],"ikhfa":[53,57],"idghaam_ghunnah":[111,115],"madd_2":[47,48],"qalqalah":[165,167],"hamzat_wasl":[6,7]},
+"16": {"ghunnah":[117,120],"idghaam_ghunnah":[22,27],"madd_2":[124,125],"madd_munfasil":[6,8,17,19],"qalqalah":[13,15,131,133],"silent":[75,77],"hamzat_wasl":[103,104]},
+"17": {"iqlab":[38,41,99,104],"idghaam_ghunnah":[51,55],"madd_2":[91,92],"hamzat_wasl":[24,25]},
+"18": {"ghunnah":[86,89,110,113],"ikhfa":[3,7],"idghaam_ghunnah":[73,78,136,142],"madd_2":[47,48,104,105,123,124],"madd_muttasil":[64,66],"qalqalah":[142,144],"hamzat_wasl":[19,20]},
+"19": {"ikhfa":[67,71],"idghaam_shafawi":[98,103],"madd_muttasil":[77,79],"silent":[73,75],"hamzat_wasl":[15,16]},
+"20": {"idghaam_ghunnah":[4,10],"madd_muttasil":[18,20,24,26,33,35,39,41,53,55,82,84]},
+"21": {"ikhfa":[1,4],"idghaam_ghunnah":[48,52,83,87],"madd_2":[81,82]},
+"22": {"idghaam_ghunnah":[63,69],"madd_2":[31,32],"qalqalah":[7,9,48,50],"hamzat_wasl":[19,20]},
+"23": {"ghunnah":[86,89,99,102],"ikhfa":[105,108,218,223],"idghaam_ghunnah":[176,180],"madd_2":[63,64,79,80],"madd_munfasil":[32,34,42,44,131,133,169,171],"qalqalah":[93,95],"silent":[34,36],"hamzat_wasl":[58,59,111,112]},
+"24": {"idghaam_mutaqaribayn":[56,57],"lam_shamsiyyah":[27,28,41,42],"hamzat_wasl":[2,3,26,27,40,41,65,66]},
+"25": {"ghunnah":[72,75],"ikhfa":[44,48],"madd_2":[59,60,77,78,94,95],"silent":[54,56]},
+"26": {"lam_shamsiyyah":[57,58],"madd_2":[31,32],"qalqalah":[51,53,85,87],"hamzat_wasl":[12,13,35,36,50,51,56,57]},
+"27": {"ghunnah":[2,5],"lam_shamsiyyah":[43,44,65,66],"madd_2":[38,39,49,50,73,74,86,87],"madd_munfasil":[27,29],"silent":[29,31],"hamzat_wasl":[6,7,42,43,64,65]},
+"28": {"ghunnah":[4,7,17,20],"idghaam_ghunnah":[49,54,95,101],"idghaam_no_ghunnah":[54,59],"madd_muttasil":[37,39],"qalqalah":[31,33],"hamzat_wasl":[30,31]},
+"29": {"idghaam_ghunnah":[101,107],"qalqalah":[8,10,58,60,62,64,88,90],"hamzat_wasl":[74,75]},
+"30": {"ghunnah":[2,5,61,64],"iqlab":[93,98],"idghaam_ghunnah":[37,41],"lam_shamsiyyah":[24,25],"madd_2":[66,67,85,86],"madd_muttasil":[43,45],"qalqalah":[16,18,52,54],"hamzat_wasl":[23,24]},
+"31": {"ghunnah":[88,91],"ikhfa":[115,120],"idghaam_ghunnah":[50,55],"madd_2":[25,26,48,49],"madd_munfasil":[14,16],"qalqalah":[8,10,111,113],"silent":[16,18]},
+"32": {"ghunnah":[31,34],"idghaam_ghunnah":[52,56],"lam_shamsiyyah":[19,20],"madd_2":[36,37,46,47],"madd_munfasil":[25,28],"madd_muttasil":[58,60],"qalqalah":[8,10],"silent":[15,17],"hamzat_wasl":[18,19]},
+"33": {"ghunnah":[20,23,166,169],"ikhfa":[74,78,91,96,132,137,181,184],"lam_shamsiyyah":[19,20],"madd_2":[122,123,130,131,171,172],"qalqalah":[8,10,98,100],"silent":[15,17],"hamzat_wasl":[18,19,28,29,44,45,61,62,154,155]},
+"34": {"ghunnah":[120,123],"madd_2":[92,93],"qalqalah":[8,10,76,78],"silent":[15,17,103,105],"hamzat_wasl":[24,25,44,45,108,109,124,125]},
+"35": {"idghaam_ghunnah":[90,94],"madd_2":[79,80],"silent":[9,11,44,46],"hamzat_wasl":[12,13,49,50,62,63]},
+"36": {"ghunnah":[44,47],"lam_shamsiyyah":[49,50],"madd_2":[33,34],"madd_muttasil":[95,97],"qalqalah":[8,10],"silent":[91,93],"hamzat_wasl":[48,49,60,61,72,73]},
+"37": {"ghunnah":[37,40],"ikhfa":[45,49,70,74],"qalqalah":[74,76],"hamzat_wasl":[17,18,56,57,81,82]},
+"38": {"ikhfa":[33,36],"madd_2":[8,9,29,30]},
+"39": {"ghunnah":[10,13,124,127],"idghaam_ghunnah":[136,142],"madd_2":[2,3,92,93],"madd_munfasil":[13,15,22,25],"qalqalah":[68,70,142,144],"hamzat_wasl":[48,49,80,81]},
+"40": {"ghunnah":[82,85],"ikhfa_shafawi":[24,28],"madd_2":[11,12,75,76],"madd_muttasil":[62,64],"hamzat_wasl":[28,29,41,42,55,56]},
+"41": {"madd_2":[26,27],"qalqalah":[6,8],"silent":[57,59],"hamzat_wasl":[31,32]},
+"42": {"ikhfa":[33,37],"idghaam_no_ghunnah":[55,61],"madd_munfasil":[22,24],"qalqalah":[62,64],"silent":[70,72],"hamzat_wasl":[61,62,84,85]},
+"43": {"ghunnah":[27,30],"ikhfa":[49,54],"madd_2":[6,7,11,12,19,20],"qalqalah":[2,4]},
+"44": {"ghunnah":[62,65,155,158],"ikhfa":[55,59,75,79],"idghaam_ghunnah":[70,75],"idghaam_no_ghunnah":[120,125],"lam_shamsiyyah":[16,17,30,31],"madd_2":[22,23,25,26,111,112,117,118,160,161],"qalqalah":[34,36],"hamzat_wasl":[15,16,29,30,41,42]},
+"45": {"idghaam_ghunnah":[105,111],"hamzat_wasl":[17,18,58,59,86,87]},
+"46": {"ghunnah":[35,38],"idghaam_ghunnah":[43,47,82,87],"madd_2":[135,136,161,162],"madd_munfasil":[61,63,151,154],"qalqalah":[79,81,157,159],"silent":[144,146],"hamzat_wasl":[114,115]},
+"47": {"ikhfa":[123,127],"idghaam_ghunnah":[150,156],"lam_shamsiyyah":[108,109],"madd_2":[112,113],"madd_munfasil":[41,43,90,93],"qalqalah":[86,88],"hamzat_wasl":[107,108]},
+"48": {"ikhfa":[1,4],"silent":[21,23,50,52],"hamzat_wasl":[29,30]},
+"49": {"ghunnah":[22,25,51,54],"ikhfa":[76,81],"idghaam_ghunnah":[33,38],"madd_2":[31,32,42,43],"madd_munfasil":[7,9],"qalqalah":[60,62],"silent":[9,11]},
"50": {"silent":[11,13]},
-"51": {"ghunnah":[16,19,114,118],"idgham":[10,16,63,67,193,197],"madd":[187,190],"wasl":[81,82]},
-"52": {"ghunnah":[54,57],"idgham":[63,68],"madd":[46,47],"qalqalah":[9,11]},
-"53": {"ghunnah":[53,56,72,75,91,94,120,123],"idgham":[58,59,96,97,133,139],"madd":[66,67,104,105,123,124],"silent":[26,28],"wasl":[29,30,57,58,95,96]},
-"54": {"idgham":[29,33,58,62],"madd":[85,87,98,99],"qalqalah":[74,76]},
-"55": {"ghunnah":[23,27,84,87],"idgham":[30,31,83,84,108,112],"madd":[36,37,39,40,92,93,128,129],"qalqalah":[61,63],"wasl":[29,30,45,46,82,83]},
-"56": {"ghunnah":[37,41,84,87],"idgham":[32,37,74,75],"madd":[46,47],"qalqalah":[6,8],"silent":[11,13],"wasl":[5,6,14,15,73,74]},
-"57": {"ghunnah":[145,148],"madd":[6,8,116,117,140,142],"qalqalah":[25,27,35,37,87,89],"silent":[2,4],"wasl":[13,14,62,63]},
-"58": {"ghunnah":[9,13,99,104,108,113],"idgham":[4,9],"madd":[68,69,119,120,136,137],"qalqalah":[49,51],"wasl":[61,62,129,130]},
-"59": {"ghunnah":[55,59,108,111,126,130],"idgham":[19,24,107,108],"madd":[14,16,41,42,50,52,171,172],"qalqalah":[119,121],"silent":[137,139],"wasl":[33,34,71,72,106,107,163,164]},
-"60": {"ghunnah":[22,25,46,49,121,124,223,228],"idgham":[45,46,70,71,115,120,120,121,131,132],"madd":[86,88,97,98,221,222],"wasl":[44,45,69,70,80,81,130,131,142,143,161,162]},
-"61": {"madd":[23,25,61,63,71,73],"qalqalah":[76,78,112,114],"silent":[40,42,63,65],"wasl":[32,33]},
-"62": {"ghunnah":[110,113],"madd":[21,22,92,93,126,128],"wasl":[26,27,85,86]},
-"63": {"ghunnah":[18,22,42,45,50,53],"idgham":[76,81],"madd":[60,62,73,75],"qalqalah":[11,13],"wasl":[6,7]},
-"64": {"ghunnah":[37,41,69,73],"idgham":[168,169],"madd":[120,121,135,136,176,177],"qalqalah":[54,56,58,60,143,145],"wasl":[2,3,19,20,111,112,126,127,167,168]},
-"65": {"ghunnah":[2,5],"idgham":[46,50],"madd":[44,45]},
-"66": {"ghunnah":[74,78,89,92],"madd":[84,86,94,95],"qalqalah":[62,64],"silent":[69,71],"wasl":[11,12,34,35,48,49]},
-"67": {"ghunnah":[49,53,82,85,140,143],"idgham":[19,20],"madd":[66,68,93,94,143,144],"qalqalah":[53,55],"wasl":[18,19,31,32,105,106,135,136]},
-"68": {"ghunnah":[8,11,82,87,87,90],"idgham":[16,20],"silent":[102,104],"wasl":[42,43]},
-"69": {"ghunnah":[9,12,112,116,133,136],"idgham":[17,21,82,88,92,93],"madd":[172,173],"silent":[148,150],"wasl":[91,92]},
-"70": {"ghunnah":[146,149],"idgham":[89,94,98,99,141,146],"madd":[24,26,45,46,86,87,107,108,122,123],"qalqalah":[6,8,82,84,156,158],"wasl":[55,56,66,67,97,98]},
-"71": {"ghunnah":[29,33],"madd":[38,39,65,66,70,71,83,84,93,95,116,117],"qalqalah":[9,11,102,104],"silent":[14,16,89,91]},
-"72": {"ghunnah":[4,8],"madd":[18,19,23,25],"wasl":[46,47]},
-"73": {"ghunnah":[4,8],"idgham":[105,111],"madd":[42,44,55,57,98,99],"silent":[12,14],"wasl":[36,37,111,112]},
-"74": {"ghunnah":[13,17,68,73],"idgham":[37,38],"madd":[8,10,24,25],"qalqalah":[32,34]},
-"75": {"ghunnah":[62,65],"idgham":[3,9],"madd":[17,18,36,37],"qalqalah":[13,15],"silent":[35,36],"wasl":[28,29,49,50]},
-"76": {"ghunnah":[4,8],"idgham":[76,82],"madd":[100,101],"silent":[12,14],"wasl":[39,40]},
-"77": {"ghunnah":[2,5,10,14,70,73],"idgham":[40,45],"qalqalah":[14,16,31,33]},
-"78": {"ghunnah":[86,89],"idgham":[8,9,30,31],"madd":[15,16],"qalqalah":[79,81,105,107],"silent":[14,15],"wasl":[7,8,29,30,53,54,74,75,100,101]},
-"79": {"idgham":[42,47,60,64,87,93],"madd":[32,33,54,57],"qalqalah":[25,27,64,66],"wasl":[7,8]},
-"80": {"ghunnah":[94,97],"idgham":[4,5,39,43,69,73,87,92,106,112],"madd":[104,105],"qalqalah":[15,17,27,29,36,38,49,51,66,68,74,76],"wasl":[73,74]},
-"81": {"ghunnah":[45,48],"madd":[9,11,37,38,54,55],"wasl":[14,15,32,33,49,50]},
-"82": {"idgham":[46,50,57,62,91,92],"madd":[43,45,95,96],"wasl":[17,18,90,91]},
-"83": {"ghunnah":[32,35],"idgham":[87,88],"madd":[6,8,35,36,68,69],"wasl":[27,28,86,87]},
-"84": {"idgham":[9,13],"madd":[38,39]},
-"85": {"idgham":[23,24,37,38,79,84],"madd":[68,70],"wasl":[22,23,36,37,87,88]},
-"86": {"ghunnah":[6,10,26,29,65,68],"madd":[38,40,51,53,89,90],"wasl":[32,33]},
-"87": {"ghunnah":[32,35],"idgham":[14,19,19,24],"madd":[44,45]},
-"88": {"ghunnah":[29,32,40,43,152,156],"idgham":[54,58],"madd":[48,51,77,78,119,120],"qalqalah":[13,15],"silent":[63,65],"wasl":[12,13,24,25,35,36,82,83]},
-"89": {"ghunnah":[23,26,56,60,69,73,92,95],"idgham":[22,23,91,92],"madd":[36,37,77,80],"qalqalah":[6,8],"wasl":[41,42,90,91]},
-"90": {"ghunnah":[71,73],"idgham":[13,18],"silent":[8,10],"wasl":[58,59]},
-"91": {"ghunnah":[20,23,47,51],"idgham":[24,29,29,34,38,42],"madd":[70,71,78,79],"wasl":[61,62]},
-"92": {"idgham":[15,16],"madd":[21,23,92,94],"wasl":[14,15,75,76,85,86]},
-"93": {"ghunnah":[28,32,176,179],"idgham":[23,28,58,59,73,78,131,137,192,198],"madd":[64,66,129,130,145,146],"qalqalah":[137,139,154,156],"wasl":[57,58]},
-"94": {"ghunnah":[15,18,76,80],"idgham":[14,15,24,28,110,116],"madd":[34,36,46,48,62,65,71,73,83,85],"silent":[36,38,85,87],"wasl":[13,14,55,56,97,98]},
-"95": {"ghunnah":[61,64],"idgham":[41,45,89,94,98,99,114,120],"madd":[34,36,104,106],"qalqalah":[55,57],"wasl":[20,21,97,98]},
-"96": {"ghunnah":[28,33,55,58,87,92],"madd":[60,61,79,80],"wasl":[14,15]},
-"97": {"ghunnah":[59,63,90,94,177,180,200,203],"idgham":[4,8,44,48,160,165,170,175,179,185],"madd":[83,85,99,100,130,131,190,191,228,229],"qalqalah":[224,226],"wasl":[13,14,28,29,123,124]},
-"98": {"ghunnah":[18,22,24,27,79,82,108,111,133,138],"idgham":[90,95],"madd":[2,3,12,14,50,51,64,66,88,89,99,100],"qalqalah":[117,119],"silent":[39,41,66,68]},
-"99": {"ghunnah":[20,23],"idgham":[48,49,91,95,134,140,164,165],"madd":[54,55,57,58,85,88,168,169],"silent":[15,17],"wasl":[24,25,32,33,47,48,63,64,163,164]},
-"100": {"ghunnah":[12,15,94,97,114,117],"idgham":[61,67],"madd":[34,36,55,57,117,118],"wasl":[89,90,109,110]},
-"101": {"ghunnah":[42,46,54,58,130,133,141,144],"madd":[40,41,52,53,70,72,79,81,94,96,115,116,149,150],"qalqalah":[6,8]},
-"102": {"ghunnah":[29,32,102,105,113,116],"idgham":[62,63],"madd":[24,26,37,39,43,45,68,69,71,72,91,93,121,122],"qalqalah":[10,12],"wasl":[61,62,77,78]},
-"103": {"idgham":[12,16,27,32,65,70],"madd":[57,58,74,75],"qalqalah":[53,55],"wasl":[35,36]},
-"104": {"ghunnah":[13,16],"madd":[23,24,31,33,40,42,79,81],"silent":[56,58],"wasl":[48,49,59,60,91,92]},
-"105": {"ghunnah":[15,18],"idgham":[82,87],"madd":[22,23,50,52,63,64],"wasl":[4,5,30,31]},
-"106": {"ghunnah":[10,15,47,50,85,88],"idgham":[46,47,66,70],"madd":[21,22,37,38,79,80],"qalqalah":[17,19,29,31],"wasl":[45,46]},
-"107": {"ghunnah":[47,50,82,86],"madd":[20,22,40,42,92,94],"qalqalah":[86,88],"silent":[13,15,42,44,67,69],"wasl":[51,52,70,71]},
-"108": {"ghunnah":[35,39],"madd":[19,20,30,32],"qalqalah":[15,17]},
+"51": {"ghunnah":[16,19],"ikhfa":[114,118],"idghaam_ghunnah":[10,16,63,67,193,197],"madd_munfasil":[187,190],"hamzat_wasl":[81,82]},
+"52": {"ghunnah":[54,57],"idghaam_no_ghunnah":[63,68],"madd_2":[46,47],"qalqalah":[9,11]},
+"53": {"ghunnah":[53,56,91,94],"ikhfa":[72,75,120,123],"idghaam_ghunnah":[133,139],"lam_shamsiyyah":[58,59,96,97],"madd_2":[66,67,104,105,123,124],"silent":[26,28],"hamzat_wasl":[29,30,57,58,95,96]},
+"54": {"idghaam_ghunnah":[29,33,58,62],"madd_2":[98,99],"madd_munfasil":[85,87],"qalqalah":[74,76]},
+"55": {"ghunnah":[84,87],"ikhfa":[23,27],"idghaam_ghunnah":[108,112],"lam_shamsiyyah":[30,31,83,84],"madd_2":[36,37,39,40,92,93,128,129],"qalqalah":[61,63],"hamzat_wasl":[29,30,45,46,82,83]},
+"56": {"ikhfa":[37,41,84,87],"idghaam_shafawi":[32,37],"lam_shamsiyyah":[74,75],"madd_2":[46,47],"qalqalah":[6,8],"silent":[11,13],"hamzat_wasl":[5,6,14,15,73,74]},
+"57": {"ghunnah":[145,148],"madd_2":[116,117],"madd_munfasil":[140,142],"madd_muttasil":[6,8],"qalqalah":[25,27,35,37,87,89],"silent":[2,4],"hamzat_wasl":[13,14,62,63]},
+"58": {"ikhfa":[9,13,99,104,108,113],"idghaam_ghunnah":[4,9],"madd_2":[68,69,119,120,136,137],"qalqalah":[49,51],"hamzat_wasl":[61,62,129,130]},
+"59": {"ghunnah":[108,111],"ikhfa":[55,59,126,130],"idghaam_ghunnah":[19,24],"lam_shamsiyyah":[107,108],"madd_2":[41,42,171,172],"madd_munfasil":[14,16,50,52],"qalqalah":[119,121],"silent":[137,139],"hamzat_wasl":[33,34,71,72,106,107,163,164]},
+"60": {"ghunnah":[22,25,46,49,121,124],"ikhfa":[223,228],"idghaam_no_ghunnah":[115,120],"lam_shamsiyyah":[45,46,70,71,120,121,131,132],"madd_2":[97,98,221,222],"madd_munfasil":[86,88],"hamzat_wasl":[44,45,69,70,80,81,130,131,142,143,161,162]},
+"61": {"madd_munfasil":[61,63,71,73],"madd_muttasil":[23,25],"qalqalah":[76,78,112,114],"silent":[40,42,63,65],"hamzat_wasl":[32,33]},
+"62": {"ghunnah":[110,113],"madd_2":[21,22,92,93],"madd_munfasil":[126,128],"hamzat_wasl":[26,27,85,86]},
+"63": {"ghunnah":[42,45,50,53],"ikhfa":[18,22],"idghaam_ghunnah":[76,81],"madd_muttasil":[60,62,73,75],"qalqalah":[11,13],"hamzat_wasl":[6,7]},
+"64": {"ikhfa_shafawi":[37,41,69,73],"lam_shamsiyyah":[168,169],"madd_2":[120,121,135,136,176,177],"qalqalah":[54,56,58,60,143,145],"hamzat_wasl":[2,3,19,20,111,112,126,127,167,168]},
+"65": {"ghunnah":[2,5],"idghaam_ghunnah":[46,50],"madd_2":[44,45]},
+"66": {"ghunnah":[89,92],"ikhfa":[74,78],"madd_2":[94,95],"madd_munfasil":[84,86],"qalqalah":[62,64],"silent":[69,71],"hamzat_wasl":[11,12,34,35,48,49]},
+"67": {"ghunnah":[82,85],"ikhfa":[49,53,140,143],"lam_shamsiyyah":[19,20],"madd_2":[93,94,143,144],"madd_munfasil":[66,68],"qalqalah":[53,55],"hamzat_wasl":[18,19,31,32,105,106,135,136]},
+"68": {"ghunnah":[87,90],"ikhfa":[8,11,82,87],"idghaam_ghunnah":[16,20],"silent":[102,104],"hamzat_wasl":[42,43]},
+"69": {"ghunnah":[133,136],"ikhfa":[9,12],"ikhfa_shafawi":[112,116],"idghaam_ghunnah":[17,21,82,88],"lam_shamsiyyah":[92,93],"madd_2":[172,173],"silent":[148,150],"hamzat_wasl":[91,92]},
+"70": {"ghunnah":[146,149],"idghaam_ghunnah":[141,146],"idghaam_shafawi":[89,94],"lam_shamsiyyah":[98,99],"madd_2":[45,46,86,87,107,108,122,123],"madd_munfasil":[24,26],"qalqalah":[6,8,82,84,156,158],"hamzat_wasl":[55,56,66,67,97,98]},
+"71": {"iqlab":[29,33],"madd_2":[38,39,65,66,70,71,83,84,116,117],"madd_muttasil":[93,95],"qalqalah":[9,11,102,104],"silent":[14,16,89,91]},
+"72": {"ikhfa":[4,8],"madd_2":[18,19],"madd_munfasil":[23,25],"hamzat_wasl":[46,47]},
+"73": {"ikhfa":[4,8],"idghaam_no_ghunnah":[105,111],"madd_2":[98,99],"madd_munfasil":[42,44,55,57],"silent":[12,14],"hamzat_wasl":[36,37,111,112]},
+"74": {"ikhfa":[13,17,68,73],"idghaam_mutajanisayn":[37,38],"madd_2":[24,25],"madd_munfasil":[8,10],"qalqalah":[32,34]},
+"75": {"ghunnah":[62,65],"idghaam_no_ghunnah":[3,9],"madd_2":[17,18,36,37],"qalqalah":[13,15],"silent":[35,36],"hamzat_wasl":[28,29,49,50]},
+"76": {"ikhfa":[4,8],"idghaam_no_ghunnah":[76,82],"madd_2":[100,101],"silent":[12,14],"hamzat_wasl":[39,40]},
+"77": {"ghunnah":[2,5,70,73],"ikhfa":[10,14],"idghaam_no_ghunnah":[40,45],"qalqalah":[14,16,31,33]},
+"78": {"ghunnah":[86,89],"lam_shamsiyyah":[8,9,30,31],"madd_2":[15,16],"qalqalah":[79,81,105,107],"silent":[14,15],"hamzat_wasl":[7,8,29,30,53,54,74,75,100,101]},
+"79": {"idghaam_ghunnah":[60,64,87,93],"idghaam_no_ghunnah":[42,47],"madd_2":[32,33],"madd_munfasil":[54,57],"qalqalah":[25,27,64,66],"hamzat_wasl":[7,8]},
+"80": {"ikhfa":[94,97],"idghaam_ghunnah":[39,43,69,73,106,112],"idghaam_mutaqaribayn":[4,5],"idghaam_no_ghunnah":[87,92],"madd_2":[104,105],"qalqalah":[15,17,27,29,36,38,49,51,66,68,74,76],"hamzat_wasl":[73,74]},
+"81": {"ghunnah":[45,48],"madd_2":[37,38,54,55],"madd_muttasil":[9,11],"hamzat_wasl":[14,15,32,33,49,50]},
+"82": {"idghaam_ghunnah":[46,50],"idghaam_no_ghunnah":[57,62],"lam_shamsiyyah":[91,92],"madd_2":[95,96],"madd_muttasil":[43,45],"hamzat_wasl":[17,18,90,91]},
+"83": {"ikhfa":[32,35],"lam_shamsiyyah":[87,88],"madd_2":[35,36,68,69],"madd_munfasil":[6,8],"hamzat_wasl":[27,28,86,87]},
+"84": {"idghaam_ghunnah":[9,13],"madd_2":[38,39]},
+"85": {"idghaam_shafawi":[79,84],"lam_shamsiyyah":[23,24,37,38],"madd_munfasil":[68,70],"hamzat_wasl":[22,23,36,37,87,88]},
+"86": {"ghunnah":[26,29,65,68],"ikhfa":[6,10],"madd_2":[89,90],"madd_munfasil":[38,40,51,53],"hamzat_wasl":[32,33]},
+"87": {"ghunnah":[32,35],"idghaam_ghunnah":[14,19],"idghaam_no_ghunnah":[19,24],"madd_2":[44,45]},
+"88": {"ghunnah":[40,43],"ikhfa":[29,32,152,156],"idghaam_ghunnah":[54,58],"madd_2":[77,78,119,120],"madd_munfasil":[48,51],"qalqalah":[13,15],"silent":[63,65],"hamzat_wasl":[12,13,24,25,35,36,82,83]},
+"89": {"ghunnah":[23,26,92,95],"ikhfa":[56,60,69,73],"lam_shamsiyyah":[22,23,91,92],"madd_2":[36,37],"madd_munfasil":[77,80],"qalqalah":[6,8],"hamzat_wasl":[41,42,90,91]},
+"90": {"iqlab":[71,73],"idghaam_ghunnah":[13,18],"silent":[8,10],"hamzat_wasl":[58,59]},
+"91": {"ghunnah":[20,23],"ikhfa":[47,51],"idghaam_ghunnah":[24,29,29,34,38,42],"madd_2":[70,71,78,79],"hamzat_wasl":[61,62]},
+"92": {"lam_shamsiyyah":[15,16],"madd_muttasil":[21,23,92,94],"hamzat_wasl":[14,15,75,76,85,86]},
+"93": {"ikhfa":[28,32,176,179],"idghaam_ghunnah":[23,28,73,78,131,137],"idghaam_no_ghunnah":[192,198],"lam_shamsiyyah":[58,59],"madd_2":[129,130,145,146],"madd_muttasil":[64,66],"qalqalah":[137,139,154,156],"hamzat_wasl":[57,58]},
+"94": {"ghunnah":[15,18],"ikhfa":[76,80],"idghaam_ghunnah":[24,28],"idghaam_no_ghunnah":[110,116],"lam_shamsiyyah":[14,15],"madd_munfasil":[34,36,62,65,71,73,83,85],"madd_muttasil":[46,48],"silent":[36,38,85,87],"hamzat_wasl":[13,14,55,56,97,98]},
+"95": {"ghunnah":[61,64],"idghaam_ghunnah":[41,45],"idghaam_no_ghunnah":[114,120],"idghaam_shafawi":[89,94],"lam_shamsiyyah":[98,99],"madd_muttasil":[34,36,104,106],"qalqalah":[55,57],"hamzat_wasl":[20,21,97,98]},
+"96": {"ghunnah":[55,58],"iqlab":[28,33,87,92],"madd_2":[60,61,79,80],"hamzat_wasl":[14,15]},
+"97": {"ghunnah":[177,180,200,203],"ikhfa":[59,63,90,94],"idghaam_ghunnah":[4,8,44,48,160,165,170,175,179,185],"madd_2":[99,100,130,131,190,191,228,229],"madd_muttasil":[83,85],"qalqalah":[224,226],"hamzat_wasl":[13,14,28,29,123,124]},
+"98": {"ghunnah":[24,27,79,82,108,111],"ikhfa":[133,138],"ikhfa_shafawi":[18,22],"idghaam_ghunnah":[90,95],"madd_2":[2,3,50,51,88,89,99,100],"madd_munfasil":[64,66],"madd_muttasil":[12,14],"qalqalah":[117,119],"silent":[39,41,66,68]},
+"99": {"ghunnah":[20,23],"idghaam_ghunnah":[91,95],"idghaam_no_ghunnah":[134,140],"lam_shamsiyyah":[48,49,164,165],"madd_2":[54,55,57,58,168,169],"madd_munfasil":[85,88],"silent":[15,17],"hamzat_wasl":[24,25,32,33,47,48,63,64,163,164]},
+"100": {"ikhfa":[12,15,94,97,114,117],"idghaam_no_ghunnah":[61,67],"madd_2":[117,118],"madd_munfasil":[55,57],"madd_muttasil":[34,36],"hamzat_wasl":[89,90,109,110]},
+"101": {"ghunnah":[130,133,141,144],"ikhfa":[54,58],"iqlab":[42,46],"madd_2":[40,41,52,53,115,116,149,150],"madd_munfasil":[70,72],"madd_muttasil":[79,81,94,96],"qalqalah":[6,8]},
+"102": {"ghunnah":[102,105,113,116],"ikhfa":[29,32],"lam_shamsiyyah":[62,63],"madd_2":[68,69,71,72,121,122],"madd_munfasil":[24,26],"madd_muttasil":[37,39,43,45,91,93],"qalqalah":[10,12],"hamzat_wasl":[61,62,77,78]},
+"103": {"idghaam_ghunnah":[12,16,65,70],"idghaam_shafawi":[27,32],"madd_2":[57,58,74,75],"qalqalah":[53,55],"hamzat_wasl":[35,36]},
+"104": {"iqlab":[13,16],"madd_2":[23,24],"madd_munfasil":[31,33],"madd_muttasil":[40,42,79,81],"silent":[56,58],"hamzat_wasl":[48,49,59,60,91,92]},
+"105": {"ikhfa":[15,18],"idghaam_ghunnah":[82,87],"madd_2":[22,23,63,64],"madd_munfasil":[50,52],"hamzat_wasl":[4,5,30,31]},
+"106": {"ghunnah":[47,50],"ikhfa":[10,15,85,88],"idghaam_ghunnah":[66,70],"lam_shamsiyyah":[46,47],"madd_2":[21,22,37,38,79,80],"qalqalah":[17,19,29,31],"hamzat_wasl":[45,46]},
+"107": {"ghunnah":[47,50],"ikhfa":[82,86],"madd_munfasil":[20,22,40,42,92,94],"qalqalah":[86,88],"silent":[13,15,42,44,67,69],"hamzat_wasl":[51,52,70,71]},
+"108": {"ikhfa":[35,39],"madd_2":[19,20],"madd_munfasil":[30,32],"qalqalah":[15,17]},
"109": {"qalqalah":[29,31]},
-"110": {"idgham":[37,38,53,59],"madd":[45,46,87,89,172,173],"qalqalah":[6,8,28,30,63,65,112,114,156,158],"silent":[11,13,33,35,68,70],"wasl":[5,6,14,15,27,28,36,37,78,79,92,93,155,156]},
-"111": {"ghunnah":[82,86],"idgham":[53,58,67,72,109,114,124,129,133,134],"madd":[74,75,116,117],"wasl":[7,8,25,26,88,89,132,133]}
+"110": {"idghaam_ghunnah":[53,59],"lam_shamsiyyah":[37,38],"madd_2":[45,46,172,173],"madd_muttasil":[87,89],"qalqalah":[6,8,28,30,63,65,112,114,156,158],"silent":[11,13,33,35,68,70],"hamzat_wasl":[5,6,14,15,27,28,36,37,78,79,92,93,155,156]},
+"111": {"ikhfa":[82,86],"idghaam_ghunnah":[53,58,124,129],"idghaam_no_ghunnah":[67,72,109,114],"lam_shamsiyyah":[133,134],"madd_2":[74,75,116,117],"hamzat_wasl":[7,8,25,26,88,89,132,133]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/18.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/18.json
index c442c0d..af6e0c2 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/18.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/18.json
@@ -1,111 +1,111 @@
{
-"1": {"ghunnah":[68,71],"madd":[63,65,97,98,121,122],"qalqalah":[83,85,110,112],"wasl":[57,58,90,91]},
-"2": {"ghunnah":[14,17,25,30,117,120],"idgham":[6,12,34,40,40,45,102,103],"madd":[106,107,111,112],"qalqalah":[130,132],"wasl":[64,65,79,80,101,102]},
-"3": {"madd":[3,4]},
-"4": {"ghunnah":[4,7],"silent":[26,28],"wasl":[10,11,29,30,38,39]},
-"5": {"ghunnah":[9,13,67,71],"idgham":[27,31,99,103],"madd":[15,16,42,44,89,90]},
-"6": {"idgham":[18,23,53,58],"madd":[14,15,34,37,43,44,77,78],"silent":[70,72],"wasl":[82,83]},
-"7": {"ghunnah":[2,5],"idgham":[43,48],"qalqalah":[56,58],"wasl":[27,28]},
-"8": {"ghunnah":[4,7,42,47],"madd":[13,14]},
-"9": {"ghunnah":[16,19],"idgham":[43,44],"madd":[26,27,72,73],"qalqalah":[9,11],"silent":[59,61],"wasl":[30,31,42,43]},
-"10": {"ghunnah":[78,81],"idgham":[71,76,89,93],"madd":[57,59],"silent":[47,49],"wasl":[11,12,29,30]},
-"11": {"madd":[16,19],"qalqalah":[6,8],"wasl":[37,38]},
-"12": {"ghunnah":[2,5],"madd":[14,15,72,74],"silent":[74,76],"wasl":[37,38]},
-"13": {"ghunnah":[33,37,48,51],"madd":[96,97],"qalqalah":[92,94],"silent":[73,75],"wasl":[37,38]},
-"14": {"ghunnah":[115,119,156,161],"idgham":[72,73,99,104,133,139],"madd":[78,79,81,82,124,126,131,132,150,152],"qalqalah":[6,8,104,106,141,143],"silent":[42,44,53,55,110,112],"wasl":[71,72,87,88]},
-"15": {"ghunnah":[37,41,86,90,98,102,107,111,127,130],"idgham":[57,62],"madd":[2,4,8,10,46,48,96,97],"silent":[32,34],"wasl":[23,24,133,134,149,150]},
-"16": {"ghunnah":[88,91],"idgham":[108,113,113,118,144,149,160,165],"madd":[65,67,126,127],"silent":[67,69],"wasl":[7,8,51,52,76,77]},
-"17": {"ghunnah":[45,49,237,241],"idgham":[9,10,112,113,140,145,182,186,222,226,258,264],"madd":[37,38,152,153,168,169,250,251],"qalqalah":[94,96,135,137],"wasl":[8,9,64,65,111,112,172,173,191,192,206,207]},
-"18": {"ghunnah":[103,107,111,115],"idgham":[23,28,39,43,83,84,192,197],"madd":[107,108],"wasl":[63,64,82,83,127,128,143,144]},
-"19": {"ghunnah":[140,144,209,213,259,262,290,295,305,309,354,357],"idgham":[68,73,314,319],"madd":[6,7,20,21,34,36,63,65,196,198,226,227,231,233,272,274],"qalqalah":[190,192],"silent":[41,43,102,104,148,150,198,200],"wasl":[189,190,240,241]},
-"20": {"ghunnah":[2,5,89,93],"idgham":[12,16],"madd":[99,101],"silent":[23,25,101,103]},
-"21": {"ghunnah":[52,55,81,84,185,189,281,284],"idgham":[75,79,86,87,195,201,293,298],"madd":[6,7,45,47,112,114,126,127,193,194,255,258],"qalqalah":[169,171],"silent":[47,49,165,167,174,176,248,250],"wasl":[63,64,85,86,168,169,231,232]},
-"22": {"ghunnah":[67,71,97,102,226,230,264,268],"idgham":[21,26,133,137,162,163,193,198,272,277,297,302],"madd":[17,18,170,172,261,263,268,269],"qalqalah":[94,96,128,130],"wasl":[103,104]},
-"23": {"ghunnah":[13,16,30,33,41,45],"madd":[45,46],"silent":[21,23]},
-"24": {"idgham":[10,14,78,82],"madd":[5,7,16,18,72,75,116,117],"qalqalah":[102,104],"wasl":[21,22,31,32]},
-"25": {"ghunnah":[42,46],"madd":[31,32],"silent":[9,11,37,39,63,65],"wasl":[54,55]},
-"26": {"ghunnah":[116,120],"idgham":[52,53,111,116,129,133,137,141],"madd":[42,43,58,59,61,62,90,91,125,126,166,168],"qalqalah":[79,81],"silent":[35,37],"wasl":[5,6,51,52,67,68]},
-"27": {"ghunnah":[32,36,83,87,94,98],"madd":[10,12,72,73,77,78,103,104],"wasl":[2,3]},
-"28": {"ghunnah":[51,55,214,218],"idgham":[162,163],"madd":[63,64,99,100,157,158,210,211,242,243,262,263],"qalqalah":[36,38,93,95],"silent":[62,63,156,157],"wasl":[2,3,24,25,55,56,69,70,149,150,161,162,228,229]},
-"29": {"ghunnah":[35,39,60,64,84,87,191,195],"idgham":[18,23,54,58,104,105,156,160,232,233],"madd":[39,41,64,66,87,89,108,109,188,190,246,248],"qalqalah":[96,98],"silent":[170,172,181,183],"wasl":[7,8,195,196,213,214,231,232]},
-"30": {"ghunnah":[2,5,55,58],"idgham":[40,41],"madd":[44,45,49,50],"qalqalah":[74,76],"silent":[24,26,36,38],"wasl":[6,7,39,40]},
-"31": {"ghunnah":[22,25,34,38,46,50,108,112,151,155,155,158],"idgham":[115,119,145,151,159,163,174,179,226,227],"madd":[6,8,25,26,68,69,211,213],"qalqalah":[31,33,38,40,169,171],"silent":[2,4],"wasl":[59,60,204,205,225,226]},
-"32": {"ghunnah":[63,66],"idgham":[14,19,22,28,86,90,112,116],"madd":[84,85,98,99],"qalqalah":[7,9],"wasl":[2,3]},
-"33": {"ghunnah":[13,16],"idgham":[54,59,70,75],"madd":[90,91],"wasl":[8,9]},
-"34": {"ghunnah":[19,23,81,84],"idgham":[89,94],"madd":[12,13,33,34,40,41,60,62]},
-"35": {"ghunnah":[11,14,63,66,69,73],"idgham":[33,38],"madd":[18,19,46,47,56,58,81,82,86,88]},
-"36": {"ghunnah":[11,14,77,80,100,103],"idgham":[16,17,35,39,43,48,50,51,86,92],"madd":[4,6,28,30],"wasl":[15,16]},
-"37": {"ghunnah":[76,80,84,88,88,91,104,108,108,111],"idgham":[94,99],"madd":[10,11,21,22,41,43,118,119],"qalqalah":[99,101],"wasl":[57,58]},
-"38": {"ghunnah":[6,9],"madd":[3,4,36,38,55,57],"wasl":[17,18]},
-"39": {"ghunnah":[27,30,92,96,118,121],"idgham":[126,131],"madd":[8,10,48,50],"wasl":[53,54,82,83]},
-"40": {"ghunnah":[43,47,47,50,122,127],"idgham":[19,23,37,43,84,90,94,95],"madd":[14,16,100,102],"wasl":[93,94]},
-"41": {"ghunnah":[29,34,36,40],"madd":[16,18,54,55]},
-"42": {"ghunnah":[67,70],"madd":[20,21,62,64,127,128,159,161]},
-"43": {"ghunnah":[29,32,43,47,73,76],"idgham":[11,16,25,29],"madd":[18,19,39,40],"wasl":[51,52]},
-"44": {"ghunnah":[50,54],"idgham":[58,63],"madd":[17,18],"qalqalah":[72,74],"wasl":[10,11,31,32]},
-"45": {"ghunnah":[58,61,139,144],"idgham":[14,19,37,38,75,76,153,154,197,202],"madd":[32,33,51,53,65,66,81,83,102,103,159,160],"qalqalah":[7,9,202,204],"silent":[31,32],"wasl":[2,3,24,25,36,37,74,75,88,89,112,113,152,153,171,172]},
-"46": {"ghunnah":[92,95],"idgham":[43,44,70,71,110,115],"madd":[38,39,60,61,65,66,74,75,79,80],"silent":[37,38],"wasl":[11,12,30,31,42,43,55,56,69,70]},
-"47": {"idgham":[56,60],"madd":[68,69],"wasl":[19,20,38,39]},
-"48": {"ghunnah":[89,93],"idgham":[31,37,113,118,129,134],"madd":[69,70],"qalqalah":[39,41,65,67,118,120],"silent":[9,11]},
-"49": {"ghunnah":[57,60],"idgham":[142,146,212,217],"madd":[16,17,83,84,104,105,116,117,165,167,175,176],"qalqalah":[33,35],"silent":[189,191,203,205],"wasl":[9,10,28,29,109,110]},
-"50": {"ghunnah":[100,103,187,191,216,220],"idgham":[228,229],"madd":[23,25,61,63,71,73,132,134,153,154,169,171,180,182,232,233],"qalqalah":[76,78],"silent":[40,42,63,65],"wasl":[32,33,95,96]},
-"51": {"ghunnah":[69,72,87,90],"idgham":[12,13,29,30],"madd":[3,5,35,36,38,39],"wasl":[28,29,44,45,101,102]},
-"52": {"idgham":[122,127],"madd":[32,34],"silent":[23,25,92,94],"wasl":[39,40]},
-"53": {"ghunnah":[25,28,36,39,46,49],"idgham":[24,25,51,56],"madd":[39,41],"qalqalah":[13,15],"silent":[41,43,82,84],"wasl":[8,9,23,24]},
-"54": {"ghunnah":[47,50,56,60,84,87,105,109],"idgham":[46,47,69,73],"madd":[26,27,87,88],"qalqalah":[6,8],"wasl":[31,32,79,80]},
-"55": {"ghunnah":[15,18,103,107,120,123],"idgham":[14,15,24,28],"madd":[34,36,46,48,98,100],"silent":[36,38,80,82],"wasl":[13,14,55,56,126,127,158,159]},
-"56": {"ghunnah":[54,57,170,173],"madd":[69,70,102,103,146,148,156,157,165,167],"qalqalah":[112,114],"silent":[92,94,119,121,148,150,176,178],"wasl":[15,16,75,76,97,98,127,128,138,139]},
-"57": {"ghunnah":[18,21,21,25,104,107,142,145,196,200],"idgham":[150,154,189,194,229,233],"madd":[39,40,50,51,168,170,239,241],"qalqalah":[186,188,200,202],"silent":[241,243],"wasl":[215,216]},
-"58": {"ghunnah":[53,57,137,141],"idgham":[26,27,108,113,118,123,123,127],"madd":[146,147],"silent":[68,70,132,134],"wasl":[10,11,25,26,88,89]},
-"59": {"ghunnah":[38,41],"idgham":[77,82],"madd":[16,19,30,31],"silent":[50,52],"wasl":[9,10]},
-"60": {"madd":[28,29,34,36,51,54],"qalqalah":[39,41,57,59,66,68],"wasl":[73,74]},
-"61": {"ghunnah":[4,7],"madd":[77,78],"qalqalah":[19,21],"wasl":[59,60,83,84]},
-"62": {"ghunnah":[4,7,74,78],"madd":[31,32,48,50,88,89],"qalqalah":[60,62]},
-"63": {"ghunnah":[55,58,86,89],"idgham":[40,41,105,106],"madd":[30,32,81,83,90,91,113,114,132,133,154,155],"wasl":[39,40,68,69,104,105,136,137,160,161]},
-"64": {"ghunnah":[20,23],"madd":[8,9,48,51],"qalqalah":[27,29],"wasl":[34,35]},
-"65": {"ghunnah":[66,69,97,100],"idgham":[15,21,56,61,90,95],"madd":[33,35,45,46,84,85],"qalqalah":[12,14]},
-"66": {"ghunnah":[47,51,63,66],"madd":[10,11,41,44]},
-"67": {"ghunnah":[8,11,16,20],"qalqalah":[39,41]},
-"68": {"madd":[45,46],"qalqalah":[38,40,49,51]},
-"69": {"ghunnah":[21,25],"idgham":[44,49],"madd":[16,18,25,27,51,53],"wasl":[30,31]},
-"70": {"ghunnah":[48,52],"madd":[62,65],"wasl":[13,14]},
-"71": {"ghunnah":[3,6],"idgham":[40,41],"madd":[17,20],"qalqalah":[74,76,107,109],"wasl":[2,3,39,40]},
-"72": {"ghunnah":[22,25,30,34],"qalqalah":[53,55]},
+"1": {"ikhfa":[68,71],"madd_2":[97,98,121,122],"madd_munfasil":[63,65],"qalqalah":[83,85,110,112],"hamzat_wasl":[57,58,90,91]},
+"2": {"ghunnah":[117,120],"ikhfa":[14,17,25,30],"idghaam_ghunnah":[34,40],"idghaam_no_ghunnah":[6,12,40,45],"lam_shamsiyyah":[102,103],"madd_2":[106,107,111,112],"qalqalah":[130,132],"hamzat_wasl":[64,65,79,80,101,102]},
+"3": {"madd_2":[3,4]},
+"4": {"ikhfa":[4,7],"silent":[26,28],"hamzat_wasl":[10,11,29,30,38,39]},
+"5": {"ikhfa":[67,71],"ikhfa_shafawi":[9,13],"idghaam_ghunnah":[27,31,99,103],"madd_2":[15,16,89,90],"madd_muttasil":[42,44]},
+"6": {"idghaam_ghunnah":[18,23],"idghaam_no_ghunnah":[53,58],"madd_2":[14,15,43,44,77,78],"madd_munfasil":[34,37],"silent":[70,72],"hamzat_wasl":[82,83]},
+"7": {"ghunnah":[2,5],"idghaam_no_ghunnah":[43,48],"qalqalah":[56,58],"hamzat_wasl":[27,28]},
+"8": {"ghunnah":[4,7],"ikhfa":[42,47],"madd_2":[13,14]},
+"9": {"ghunnah":[16,19],"lam_shamsiyyah":[43,44],"madd_2":[26,27,72,73],"qalqalah":[9,11],"silent":[59,61],"hamzat_wasl":[30,31,42,43]},
+"10": {"ikhfa":[78,81],"idghaam_ghunnah":[89,93],"idghaam_no_ghunnah":[71,76],"madd_munfasil":[57,59],"silent":[47,49],"hamzat_wasl":[11,12,29,30]},
+"11": {"madd_munfasil":[16,19],"qalqalah":[6,8],"hamzat_wasl":[37,38]},
+"12": {"ghunnah":[2,5],"madd_2":[14,15],"madd_munfasil":[72,74],"silent":[74,76],"hamzat_wasl":[37,38]},
+"13": {"ghunnah":[48,51],"ikhfa_shafawi":[33,37],"madd_2":[96,97],"qalqalah":[92,94],"silent":[73,75],"hamzat_wasl":[37,38]},
+"14": {"ikhfa":[115,119,156,161],"idghaam_ghunnah":[99,104],"idghaam_no_ghunnah":[133,139],"lam_shamsiyyah":[72,73],"madd_2":[78,79,81,82,131,132],"madd_munfasil":[124,126,150,152],"qalqalah":[6,8,104,106,141,143],"silent":[42,44,53,55,110,112],"hamzat_wasl":[71,72,87,88]},
+"15": {"ghunnah":[127,130],"ikhfa":[37,41,107,111],"ikhfa_shafawi":[86,90],"iqlab":[98,102],"idghaam_no_ghunnah":[57,62],"madd_2":[96,97],"madd_munfasil":[46,48],"madd_muttasil":[2,4,8,10],"silent":[32,34],"hamzat_wasl":[23,24,133,134,149,150]},
+"16": {"ikhfa":[88,91],"idghaam_no_ghunnah":[113,118],"idghaam_shafawi":[108,113,144,149,160,165],"madd_2":[126,127],"madd_munfasil":[65,67],"silent":[67,69],"hamzat_wasl":[7,8,51,52,76,77]},
+"17": {"ikhfa":[45,49,237,241],"idghaam_ghunnah":[140,145,182,186,222,226,258,264],"lam_shamsiyyah":[9,10,112,113],"madd_2":[37,38,152,153,168,169,250,251],"qalqalah":[94,96,135,137],"hamzat_wasl":[8,9,64,65,111,112,172,173,191,192,206,207]},
+"18": {"ikhfa":[111,115],"ikhfa_shafawi":[103,107],"idghaam_ghunnah":[23,28,39,43,192,197],"lam_shamsiyyah":[83,84],"madd_2":[107,108],"hamzat_wasl":[63,64,82,83,127,128,143,144]},
+"19": {"ghunnah":[354,357],"ikhfa":[140,144,259,262,290,295],"ikhfa_shafawi":[209,213,305,309],"idghaam_ghunnah":[68,73,314,319],"madd_2":[6,7,20,21,226,227],"madd_munfasil":[196,198,231,233,272,274],"madd_muttasil":[34,36,63,65],"qalqalah":[190,192],"silent":[41,43,102,104,148,150,198,200],"hamzat_wasl":[189,190,240,241]},
+"20": {"ghunnah":[2,5],"ikhfa":[89,93],"idghaam_ghunnah":[12,16],"madd_munfasil":[99,101],"silent":[23,25,101,103]},
+"21": {"ghunnah":[52,55,81,84,281,284],"ikhfa_shafawi":[185,189],"idghaam_ghunnah":[75,79],"idghaam_no_ghunnah":[195,201],"idghaam_shafawi":[293,298],"lam_shamsiyyah":[86,87],"madd_2":[6,7,126,127,193,194],"madd_munfasil":[45,47,112,114,255,258],"qalqalah":[169,171],"silent":[47,49,165,167,174,176,248,250],"hamzat_wasl":[63,64,85,86,168,169,231,232]},
+"22": {"ikhfa":[67,71,226,230,264,268],"iqlab":[97,102],"idghaam_ghunnah":[133,137,272,277],"idghaam_mutaqaribayn":[162,163],"idghaam_no_ghunnah":[21,26],"idghaam_shafawi":[193,198,297,302],"madd_2":[17,18,268,269],"madd_munfasil":[170,172],"madd_muttasil":[261,263],"qalqalah":[94,96,128,130],"hamzat_wasl":[103,104]},
+"23": {"ghunnah":[13,16,30,33],"ikhfa":[41,45],"madd_2":[45,46],"silent":[21,23]},
+"24": {"idghaam_ghunnah":[10,14,78,82],"madd_2":[116,117],"madd_munfasil":[5,7,72,75],"madd_muttasil":[16,18],"qalqalah":[102,104],"hamzat_wasl":[21,22,31,32]},
+"25": {"ikhfa":[42,46],"madd_2":[31,32],"silent":[9,11,37,39,63,65],"hamzat_wasl":[54,55]},
+"26": {"ikhfa":[116,120],"idghaam_ghunnah":[129,133,137,141],"idghaam_shafawi":[111,116],"lam_shamsiyyah":[52,53],"madd_2":[42,43,58,59,61,62,90,91,125,126],"madd_munfasil":[166,168],"qalqalah":[79,81],"silent":[35,37],"hamzat_wasl":[5,6,51,52,67,68]},
+"27": {"ikhfa":[32,36,83,87,94,98],"madd_2":[72,73,77,78,103,104],"madd_munfasil":[10,12],"hamzat_wasl":[2,3]},
+"28": {"ikhfa":[214,218],"ikhfa_shafawi":[51,55],"lam_shamsiyyah":[162,163],"madd_2":[63,64,99,100,157,158,210,211,242,243,262,263],"qalqalah":[36,38,93,95],"silent":[62,63,156,157],"hamzat_wasl":[2,3,24,25,55,56,69,70,149,150,161,162,228,229]},
+"29": {"ghunnah":[84,87],"ikhfa":[35,39,60,64,191,195],"idghaam_ghunnah":[54,58,156,160],"idghaam_no_ghunnah":[18,23],"lam_shamsiyyah":[104,105,232,233],"madd_2":[108,109],"madd_munfasil":[87,89],"madd_muttasil":[39,41,64,66,188,190,246,248],"qalqalah":[96,98],"silent":[170,172,181,183],"hamzat_wasl":[7,8,195,196,213,214,231,232]},
+"30": {"ghunnah":[2,5,55,58],"lam_shamsiyyah":[40,41],"madd_2":[44,45,49,50],"qalqalah":[74,76],"silent":[24,26,36,38],"hamzat_wasl":[6,7,39,40]},
+"31": {"ghunnah":[22,25],"ikhfa":[34,38,46,50,108,112,151,155,155,158],"idghaam_ghunnah":[115,119,145,151,159,163,174,179],"lam_shamsiyyah":[226,227],"madd_2":[25,26,68,69],"madd_muttasil":[6,8,211,213],"qalqalah":[31,33,38,40,169,171],"silent":[2,4],"hamzat_wasl":[59,60,204,205,225,226]},
+"32": {"ghunnah":[63,66],"idghaam_ghunnah":[86,90,112,116],"idghaam_no_ghunnah":[22,28],"idghaam_shafawi":[14,19],"madd_2":[84,85,98,99],"qalqalah":[7,9],"hamzat_wasl":[2,3]},
+"33": {"ghunnah":[13,16],"idghaam_ghunnah":[70,75],"idghaam_shafawi":[54,59],"madd_2":[90,91],"hamzat_wasl":[8,9]},
+"34": {"ikhfa":[19,23,81,84],"idghaam_ghunnah":[89,94],"madd_2":[12,13,33,34,40,41],"madd_munfasil":[60,62]},
+"35": {"ghunnah":[11,14,63,66],"ikhfa":[69,73],"idghaam_no_ghunnah":[33,38],"madd_2":[18,19,46,47,81,82],"madd_munfasil":[56,58,86,88]},
+"36": {"ghunnah":[11,14,77,80],"ikhfa":[100,103],"idghaam_ghunnah":[35,39,86,92],"idghaam_mutajanisayn":[50,51],"idghaam_no_ghunnah":[43,48],"lam_shamsiyyah":[16,17],"madd_munfasil":[4,6],"madd_muttasil":[28,30],"hamzat_wasl":[15,16]},
+"37": {"ghunnah":[88,91,108,111],"ikhfa":[76,80,84,88,104,108],"idghaam_ghunnah":[94,99],"madd_2":[10,11,21,22,118,119],"madd_munfasil":[41,43],"qalqalah":[99,101],"hamzat_wasl":[57,58]},
+"38": {"ghunnah":[6,9],"madd_2":[3,4],"madd_munfasil":[36,38,55,57],"hamzat_wasl":[17,18]},
+"39": {"ghunnah":[27,30],"ikhfa":[92,96,118,121],"idghaam_ghunnah":[126,131],"madd_munfasil":[8,10],"madd_muttasil":[48,50],"hamzat_wasl":[53,54,82,83]},
+"40": {"ghunnah":[47,50],"ikhfa":[43,47,122,127],"idghaam_ghunnah":[19,23,37,43,84,90],"lam_shamsiyyah":[94,95],"madd_munfasil":[14,16],"madd_muttasil":[100,102],"hamzat_wasl":[93,94]},
+"41": {"ikhfa":[29,34,36,40],"madd_2":[54,55],"madd_muttasil":[16,18]},
+"42": {"ikhfa":[67,70],"madd_2":[20,21,127,128],"madd_munfasil":[62,64,159,161]},
+"43": {"ikhfa":[29,32,43,47,73,76],"idghaam_ghunnah":[25,29],"idghaam_no_ghunnah":[11,16],"madd_2":[18,19,39,40],"hamzat_wasl":[51,52]},
+"44": {"ikhfa":[50,54],"idghaam_ghunnah":[58,63],"madd_2":[17,18],"qalqalah":[72,74],"hamzat_wasl":[10,11,31,32]},
+"45": {"ikhfa":[58,61,139,144],"idghaam_ghunnah":[197,202],"idghaam_shafawi":[14,19],"lam_shamsiyyah":[37,38,75,76,153,154],"madd_2":[32,33,65,66,102,103,159,160],"madd_muttasil":[51,53,81,83],"qalqalah":[7,9,202,204],"silent":[31,32],"hamzat_wasl":[2,3,24,25,36,37,74,75,88,89,112,113,152,153,171,172]},
+"46": {"ikhfa":[92,95],"idghaam_ghunnah":[110,115],"lam_shamsiyyah":[43,44,70,71],"madd_2":[38,39,60,61,65,66,74,75,79,80],"silent":[37,38],"hamzat_wasl":[11,12,30,31,42,43,55,56,69,70]},
+"47": {"idghaam_ghunnah":[56,60],"madd_2":[68,69],"hamzat_wasl":[19,20,38,39]},
+"48": {"iqlab":[89,93],"idghaam_ghunnah":[113,118],"idghaam_no_ghunnah":[31,37],"idghaam_shafawi":[129,134],"madd_2":[69,70],"qalqalah":[39,41,65,67,118,120],"silent":[9,11]},
+"49": {"ghunnah":[57,60],"idghaam_ghunnah":[142,146,212,217],"madd_2":[16,17,83,84,104,105,116,117,175,176],"madd_munfasil":[165,167],"qalqalah":[33,35],"silent":[189,191,203,205],"hamzat_wasl":[9,10,28,29,109,110]},
+"50": {"ghunnah":[100,103],"ikhfa":[187,191],"iqlab":[216,220],"lam_shamsiyyah":[228,229],"madd_2":[153,154,232,233],"madd_munfasil":[61,63,71,73,132,134,169,171],"madd_muttasil":[23,25,180,182],"qalqalah":[76,78],"silent":[40,42,63,65],"hamzat_wasl":[32,33,95,96]},
+"51": {"ikhfa":[69,72,87,90],"idghaam_mutajanisayn":[12,13],"lam_shamsiyyah":[29,30],"madd_2":[35,36,38,39],"madd_munfasil":[3,5],"hamzat_wasl":[28,29,44,45,101,102]},
+"52": {"idghaam_shafawi":[122,127],"madd_muttasil":[32,34],"silent":[23,25,92,94],"hamzat_wasl":[39,40]},
+"53": {"ghunnah":[25,28,36,39,46,49],"idghaam_shafawi":[51,56],"lam_shamsiyyah":[24,25],"madd_munfasil":[39,41],"qalqalah":[13,15],"silent":[41,43,82,84],"hamzat_wasl":[8,9,23,24]},
+"54": {"ghunnah":[47,50],"ikhfa":[56,60,84,87,105,109],"idghaam_ghunnah":[69,73],"lam_shamsiyyah":[46,47],"madd_2":[26,27,87,88],"qalqalah":[6,8],"hamzat_wasl":[31,32,79,80]},
+"55": {"ghunnah":[15,18,120,123],"ikhfa":[103,107],"idghaam_ghunnah":[24,28],"lam_shamsiyyah":[14,15],"madd_munfasil":[34,36,98,100],"madd_muttasil":[46,48],"silent":[36,38,80,82],"hamzat_wasl":[13,14,55,56,126,127,158,159]},
+"56": {"ikhfa":[54,57,170,173],"madd_2":[69,70,102,103,156,157],"madd_munfasil":[146,148,165,167],"qalqalah":[112,114],"silent":[92,94,119,121,148,150,176,178],"hamzat_wasl":[15,16,75,76,97,98,127,128,138,139]},
+"57": {"ghunnah":[18,21,104,107,142,145],"ikhfa":[21,25,196,200],"idghaam_ghunnah":[150,154,189,194,229,233],"madd_2":[39,40,50,51],"madd_munfasil":[168,170,239,241],"qalqalah":[186,188,200,202],"silent":[241,243],"hamzat_wasl":[215,216]},
+"58": {"ikhfa":[137,141],"ikhfa_shafawi":[53,57],"idghaam_ghunnah":[123,127],"idghaam_no_ghunnah":[118,123],"idghaam_shafawi":[108,113],"lam_shamsiyyah":[26,27],"madd_2":[146,147],"silent":[68,70,132,134],"hamzat_wasl":[10,11,25,26,88,89]},
+"59": {"ghunnah":[38,41],"idghaam_shafawi":[77,82],"madd_2":[30,31],"madd_munfasil":[16,19],"silent":[50,52],"hamzat_wasl":[9,10]},
+"60": {"madd_2":[28,29],"madd_munfasil":[34,36,51,54],"qalqalah":[39,41,57,59,66,68],"hamzat_wasl":[73,74]},
+"61": {"ghunnah":[4,7],"madd_2":[77,78],"qalqalah":[19,21],"hamzat_wasl":[59,60,83,84]},
+"62": {"ghunnah":[4,7],"ikhfa":[74,78],"madd_2":[31,32,88,89],"madd_muttasil":[48,50],"qalqalah":[60,62]},
+"63": {"ghunnah":[55,58],"ikhfa":[86,89],"lam_shamsiyyah":[40,41,105,106],"madd_2":[90,91,113,114,132,133,154,155],"madd_munfasil":[30,32,81,83],"hamzat_wasl":[39,40,68,69,104,105,136,137,160,161]},
+"64": {"ghunnah":[20,23],"madd_2":[8,9],"madd_munfasil":[48,51],"qalqalah":[27,29],"hamzat_wasl":[34,35]},
+"65": {"ghunnah":[97,100],"ikhfa":[66,69],"idghaam_ghunnah":[15,21,56,61],"idghaam_no_ghunnah":[90,95],"madd_2":[45,46,84,85],"madd_munfasil":[33,35],"qalqalah":[12,14]},
+"66": {"ghunnah":[63,66],"ikhfa":[47,51],"madd_2":[10,11],"madd_munfasil":[41,44]},
+"67": {"ghunnah":[8,11],"ikhfa":[16,20],"qalqalah":[39,41]},
+"68": {"madd_2":[45,46],"qalqalah":[38,40,49,51]},
+"69": {"ikhfa":[21,25],"idghaam_ghunnah":[44,49],"madd_munfasil":[16,18,51,53],"madd_muttasil":[25,27],"hamzat_wasl":[30,31]},
+"70": {"ikhfa":[48,52],"madd_munfasil":[62,65],"hamzat_wasl":[13,14]},
+"71": {"ikhfa":[3,6],"lam_shamsiyyah":[40,41],"madd_munfasil":[17,20],"qalqalah":[74,76,107,109],"hamzat_wasl":[2,3,39,40]},
+"72": {"ghunnah":[22,25],"ikhfa":[30,34],"qalqalah":[53,55]},
"73": {"qalqalah":[49,51]},
-"74": {"ghunnah":[3,6,41,46,78,83,89,93],"idgham":[106,111,129,135],"madd":[17,20,39,40,54,55],"qalqalah":[113,115],"wasl":[2,3]},
-"75": {"ghunnah":[27,30,35,39],"qalqalah":[58,60]},
-"76": {"ghunnah":[8,12,23,27,30,34,85,88],"idgham":[78,83],"madd":[53,54],"qalqalah":[56,58,64,66]},
-"77": {"ghunnah":[3,6,148,151],"idgham":[90,94,131,136,144,148],"madd":[17,20,25,27,34,36,64,66,166,167],"qalqalah":[58,60,209,211],"silent":[85,87],"wasl":[2,3,53,54]},
-"78": {"madd":[8,9],"qalqalah":[97,99]},
-"79": {"ghunnah":[2,5],"idgham":[8,9,75,76,114,119,122,126],"madd":[36,37,108,110],"wasl":[7,8,59,60]},
-"80": {"ghunnah":[4,7],"idgham":[65,69,89,94],"madd":[16,17,60,62,87,88],"wasl":[9,10]},
-"81": {"idgham":[15,19,47,53,65,69],"madd":[10,12,63,64],"qalqalah":[6,8,19,21,71,73],"silent":[62,63]},
-"82": {"ghunnah":[4,7,91,94,129,134,196,199],"idgham":[93,98,152,156,212,217,217,222],"madd":[34,35,87,88,125,126,162,164,244,245,261,262],"qalqalah":[156,158,306,308],"wasl":[9,10,58,59]},
-"83": {"ghunnah":[19,23],"idgham":[64,69],"silent":[53,55],"wasl":[25,26]},
-"84": {"ghunnah":[2,5,12,15,54,58,67,71],"madd":[21,22,48,49],"wasl":[27,28]},
-"86": {"ghunnah":[91,94,103,108,137,140,145,149,161,164,169,173],"idgham":[32,33,78,82],"madd":[5,8,116,117,140,142,164,166],"wasl":[31,32,121,122]},
-"87": {"ghunnah":[8,11,15,19,48,51],"idgham":[97,103],"madd":[44,45,74,75,89,90]},
-"88": {"ghunnah":[4,7,37,42],"madd":[33,34,46,47,52,54,85,86],"wasl":[57,58]},
+"74": {"ikhfa":[3,6,41,46,78,83],"iqlab":[89,93],"idghaam_ghunnah":[129,135],"idghaam_no_ghunnah":[106,111],"madd_2":[39,40,54,55],"madd_munfasil":[17,20],"qalqalah":[113,115],"hamzat_wasl":[2,3]},
+"75": {"ghunnah":[27,30],"ikhfa":[35,39],"qalqalah":[58,60]},
+"76": {"ghunnah":[85,88],"ikhfa":[8,12,23,27],"iqlab":[30,34],"idghaam_no_ghunnah":[78,83],"madd_2":[53,54],"qalqalah":[56,58,64,66]},
+"77": {"ikhfa":[3,6,148,151],"idghaam_ghunnah":[90,94,131,136,144,148],"madd_2":[166,167],"madd_munfasil":[17,20,25,27,34,36,64,66],"qalqalah":[58,60,209,211],"silent":[85,87],"hamzat_wasl":[2,3,53,54]},
+"78": {"madd_2":[8,9],"qalqalah":[97,99]},
+"79": {"ghunnah":[2,5],"idghaam_ghunnah":[122,126],"idghaam_mutajanisayn":[75,76],"idghaam_shafawi":[114,119],"lam_shamsiyyah":[8,9],"madd_2":[36,37],"madd_muttasil":[108,110],"hamzat_wasl":[7,8,59,60]},
+"80": {"ghunnah":[4,7],"idghaam_ghunnah":[65,69,89,94],"madd_2":[16,17,87,88],"madd_munfasil":[60,62],"hamzat_wasl":[9,10]},
+"81": {"idghaam_ghunnah":[15,19,47,53,65,69],"madd_2":[63,64],"madd_munfasil":[10,12],"qalqalah":[6,8,19,21,71,73],"silent":[62,63]},
+"82": {"ghunnah":[4,7],"ikhfa":[91,94,129,134,196,199],"idghaam_ghunnah":[152,156,212,217],"idghaam_no_ghunnah":[93,98,217,222],"madd_2":[34,35,87,88,125,126,244,245,261,262],"madd_munfasil":[162,164],"qalqalah":[156,158,306,308],"hamzat_wasl":[9,10,58,59]},
+"83": {"ikhfa":[19,23],"idghaam_shafawi":[64,69],"silent":[53,55],"hamzat_wasl":[25,26]},
+"84": {"ghunnah":[2,5,12,15],"ikhfa":[54,58,67,71],"madd_2":[21,22,48,49],"hamzat_wasl":[27,28]},
+"86": {"ghunnah":[137,140,161,164],"ikhfa":[91,94,103,108,145,149,169,173],"idghaam_ghunnah":[78,82],"lam_shamsiyyah":[32,33],"madd_2":[116,117],"madd_munfasil":[5,8,140,142,164,166],"hamzat_wasl":[31,32,121,122]},
+"87": {"ghunnah":[8,11,48,51],"ikhfa":[15,19],"idghaam_ghunnah":[97,103],"madd_2":[44,45,74,75,89,90]},
+"88": {"ghunnah":[4,7],"ikhfa":[37,42],"madd_2":[33,34,46,47,85,86],"madd_muttasil":[52,54],"hamzat_wasl":[57,58]},
"89": {"ghunnah":[2,5]},
-"90": {"ghunnah":[98,102],"idgham":[32,33,72,77,93,98],"madd":[5,8],"qalqalah":[24,26,53,55,82,84],"wasl":[31,32]},
-"91": {"madd":[4,5],"qalqalah":[14,16,21,23,44,46]},
+"90": {"ikhfa":[98,102],"idghaam_no_ghunnah":[72,77],"idghaam_shafawi":[93,98],"lam_shamsiyyah":[32,33],"madd_munfasil":[5,8],"qalqalah":[24,26,53,55,82,84],"hamzat_wasl":[31,32]},
+"91": {"madd_2":[4,5],"qalqalah":[14,16,21,23,44,46]},
"92": {"ghunnah":[2,5]},
-"93": {"ghunnah":[51,55],"idgham":[30,31,69,75],"madd":[5,8],"wasl":[29,30]},
-"94": {"ghunnah":[32,35,123,127],"madd":[11,12,117,120],"qalqalah":[93,95,127,129],"silent":[6,8],"wasl":[16,17,74,75]},
-"95": {"ghunnah":[15,18,38,42],"qalqalah":[66,68,99,101]},
-"96": {"ghunnah":[79,82,117,122],"idgham":[59,60],"madd":[33,36,93,96,111,112,134,136],"qalqalah":[157,159],"silent":[85,87],"wasl":[17,18,58,59,78,79]},
-"97": {"idgham":[21,25],"madd":[11,12,14,16,48,49,59,60],"qalqalah":[63,65],"silent":[16,18,52,54],"wasl":[6,7,41,42]},
-"98": {"idgham":[20,25,25,30],"madd":[8,9,45,47,72,73,79,81]},
-"99": {"idgham":[32,36,51,55,67,68],"madd":[85,86],"wasl":[66,67]},
-"100": {"ghunnah":[16,19],"idgham":[31,36],"madd":[40,41]},
-"101": {"ghunnah":[46,50],"madd":[39,41],"silent":[64,66]},
-"102": {"ghunnah":[60,64,85,88,107,110],"idgham":[34,38],"madd":[27,29,67,69,78,80,88,90,119,120],"qalqalah":[97,99],"silent":[29,31,46,48],"wasl":[11,12]},
-"103": {"ghunnah":[21,25],"madd":[46,47],"wasl":[25,26]},
-"104": {"ghunnah":[75,78],"idgham":[44,45],"madd":[39,40],"silent":[38,39],"wasl":[31,32,43,44]},
-"105": {"madd":[6,8,41,42,61,63,67,68,86,87,129,130],"silent":[2,4,30,32],"wasl":[13,14,122,123]},
-"106": {"ghunnah":[25,28],"madd":[2,3,12,14,57,59,67,68],"silent":[44,46,59,61],"wasl":[49,50]},
-"107": {"ghunnah":[2,5,70,73],"idgham":[40,41],"madd":[44,45,49,50,73,74],"silent":[24,26,36,38],"wasl":[6,7,39,40,77,78]},
-"108": {"madd":[2,3],"qalqalah":[24,26]},
-"109": {"ghunnah":[83,87,87,90],"idgham":[32,38],"madd":[44,45,99,100,135,136],"qalqalah":[76,78],"wasl":[16,17,64,65]},
-"110": {"ghunnah":[7,10,60,63,94,98,100,104,154,159],"idgham":[27,32,86,90,163,168],"madd":[12,14,46,49,65,67,72,73,84,85,90,91,122,124,134,135,159,160,200,202],"silent":[115,117]}
+"93": {"ikhfa":[51,55],"idghaam_no_ghunnah":[69,75],"lam_shamsiyyah":[30,31],"madd_munfasil":[5,8],"hamzat_wasl":[29,30]},
+"94": {"ghunnah":[32,35],"ikhfa":[123,127],"madd_2":[11,12],"madd_munfasil":[117,120],"qalqalah":[93,95,127,129],"silent":[6,8],"hamzat_wasl":[16,17,74,75]},
+"95": {"ghunnah":[15,18],"ikhfa":[38,42],"qalqalah":[66,68,99,101]},
+"96": {"ikhfa":[79,82,117,122],"lam_shamsiyyah":[59,60],"madd_2":[111,112],"madd_munfasil":[33,36,93,96,134,136],"qalqalah":[157,159],"silent":[85,87],"hamzat_wasl":[17,18,58,59,78,79]},
+"97": {"idghaam_ghunnah":[21,25],"madd_2":[11,12,48,49,59,60],"madd_munfasil":[14,16],"qalqalah":[63,65],"silent":[16,18,52,54],"hamzat_wasl":[6,7,41,42]},
+"98": {"idghaam_ghunnah":[20,25],"idghaam_no_ghunnah":[25,30],"madd_2":[8,9,72,73],"madd_muttasil":[45,47,79,81]},
+"99": {"idghaam_ghunnah":[32,36,51,55],"lam_shamsiyyah":[67,68],"madd_2":[85,86],"hamzat_wasl":[66,67]},
+"100": {"ghunnah":[16,19],"idghaam_no_ghunnah":[31,36],"madd_2":[40,41]},
+"101": {"ikhfa":[46,50],"madd_muttasil":[39,41],"silent":[64,66]},
+"102": {"ghunnah":[85,88,107,110],"ikhfa":[60,64],"idghaam_ghunnah":[34,38],"madd_2":[119,120],"madd_munfasil":[27,29,67,69,88,90],"madd_muttasil":[78,80],"qalqalah":[97,99],"silent":[29,31,46,48],"hamzat_wasl":[11,12]},
+"103": {"ikhfa_shafawi":[21,25],"madd_2":[46,47],"hamzat_wasl":[25,26]},
+"104": {"ghunnah":[75,78],"lam_shamsiyyah":[44,45],"madd_2":[39,40],"silent":[38,39],"hamzat_wasl":[31,32,43,44]},
+"105": {"madd_2":[41,42,67,68,86,87,129,130],"madd_muttasil":[6,8,61,63],"silent":[2,4,30,32],"hamzat_wasl":[13,14,122,123]},
+"106": {"ghunnah":[25,28],"madd_2":[2,3,67,68],"madd_munfasil":[57,59],"madd_muttasil":[12,14],"silent":[44,46,59,61],"hamzat_wasl":[49,50]},
+"107": {"ghunnah":[2,5,70,73],"lam_shamsiyyah":[40,41],"madd_2":[44,45,49,50,73,74],"silent":[24,26,36,38],"hamzat_wasl":[6,7,39,40,77,78]},
+"108": {"madd_2":[2,3],"qalqalah":[24,26]},
+"109": {"ikhfa":[83,87,87,90],"idghaam_no_ghunnah":[32,38],"madd_2":[44,45,99,100,135,136],"qalqalah":[76,78],"hamzat_wasl":[16,17,64,65]},
+"110": {"ghunnah":[7,10,60,63],"ikhfa":[94,98,100,104,154,159],"idghaam_ghunnah":[27,32,86,90,163,168],"madd_2":[72,73,84,85,90,91,134,135,159,160],"madd_munfasil":[12,14,46,49,65,67,200,202],"madd_muttasil":[122,124],"silent":[115,117]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/19.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/19.json
index 5961078..cc15a81 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/19.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/19.json
@@ -1,99 +1,99 @@
{
-"1": {"madd-lazim":[39,41,43,45,45,47]},
-"2": {"madd":[32,33],"qalqalah":[26,28]},
-"3": {"madd":[20,21,26,28]},
-"4": {"ghunnah":[14,17,38,41,85,88],"idgham":[56,57,70,75],"madd":[93,95],"wasl":[26,27,45,46,55,56]},
-"5": {"ghunnah":[4,7,70,75,93,96],"idgham":[31,35,86,91],"madd":[23,24,37,39],"qalqalah":[77,79],"wasl":[16,17,53,54]},
-"6": {"qalqalah":[43,45],"wasl":[42,43]},
-"7": {"ghunnah":[17,20,84,88],"madd":[2,3,12,14,40,41,51,52,80,81],"qalqalah":[69,71,88,90],"wasl":[44,45]},
-"8": {"ghunnah":[14,17],"idgham":[38,42,67,72],"madd":[36,37],"qalqalah":[74,76],"wasl":[50,51,91,92]},
-"9": {"ghunnah":[71,75],"idgham":[49,53],"madd":[10,11],"qalqalah":[55,57,62,64,75,77]},
-"10": {"ghunnah":[31,35,68,71,89,93],"idgham":[67,68],"madd":[22,24,79,80],"qalqalah":[13,15],"wasl":[12,13,66,67]},
-"11": {"ghunnah":[69,73],"idgham":[89,93],"madd":[24,25,52,55],"silent":[79,81],"wasl":[31,32]},
-"12": {"idgham":[36,40],"madd":[2,3,24,25,49,50],"wasl":[17,18,53,54]},
-"13": {"ghunnah":[21,24],"idgham":[8,14,14,19,35,39],"madd":[33,34],"silent":[32,33]},
-"14": {"ghunnah":[6,11,35,39],"madd":[14,15]},
-"15": {"madd":[6,7],"qalqalah":[61,63]},
-"16": {"ghunnah":[40,43,71,76],"madd":[21,22],"wasl":[2,3,14,15,39,40]},
-"17": {"ghunnah":[15,19,33,38,93,98],"madd":[48,50],"wasl":[2,3]},
-"18": {"ghunnah":[10,13,41,44,47,51,51,54],"idgham":[27,28],"madd":[13,15,35,36],"wasl":[26,27]},
-"19": {"ghunnah":[8,11,59,64],"madd":[13,15,57,58]},
-"20": {"ghunnah":[10,13],"idgham":[34,38,60,64],"madd":[32,33]},
-"21": {"ghunnah":[80,83,101,104],"idgham":[49,53,74,79,79,80,96,101,119,125],"madd":[10,11,65,67],"qalqalah":[57,59,125,127]},
-"22": {"ghunnah":[16,19,38,43],"madd":[30,31],"wasl":[15,16]},
-"23": {"ghunnah":[41,44,96,99,111,114],"idgham":[40,41,105,111],"madd":[6,8,61,62,87,88],"qalqalah":[80,82],"wasl":[14,15,39,40]},
-"24": {"ghunnah":[15,19],"madd":[8,9,25,27],"qalqalah":[47,49]},
-"25": {"ghunnah":[30,33,64,69],"idgham":[29,30],"madd":[7,9,44,45],"qalqalah":[47,49],"wasl":[28,29]},
-"26": {"ghunnah":[33,38,40,43,51,54,75,80,90,93,123,128,155,158],"idgham":[106,107],"madd":[85,87,114,115],"wasl":[10,11,60,61,143,144]},
-"27": {"ghunnah":[78,83],"madd":[13,14,35,36,48,49],"qalqalah":[62,64],"silent":[43,45]},
-"28": {"ghunnah":[69,72],"idgham":[51,55],"madd":[2,4,13,14],"wasl":[38,39]},
-"29": {"ghunnah":[49,53],"silent":[27,29],"wasl":[61,62]},
-"30": {"ghunnah":[8,11],"madd":[34,35,47,48],"qalqalah":[15,17],"wasl":[20,21,40,41]},
-"31": {"ghunnah":[36,39],"idgham":[56,57,70,71],"madd":[48,49,63,64,77,78],"silent":[62,63,76,77],"wasl":[55,56,69,70]},
-"32": {"ghunnah":[6,11,49,54],"madd":[14,15],"qalqalah":[32,34]},
-"33": {"idgham":[3,4,32,33],"madd":[9,10],"qalqalah":[65,67],"wasl":[2,3]},
-"34": {"madd":[2,3,68,69],"qalqalah":[16,18],"wasl":[15,16,37,38,46,47]},
-"35": {"ghunnah":[41,45,76,81,83,86,106,110],"idgham":[20,24,34,38],"madd":[49,50,54,56,67,70,102,103,114,115],"qalqalah":[45,47]},
-"36": {"ghunnah":[4,7],"idgham":[61,66],"madd":[50,51,59,60,72,73],"wasl":[8,9,37,38]},
-"37": {"ghunnah":[28,31],"idgham":[48,53,74,79],"madd":[97,98],"silent":[69,71],"wasl":[2,3,12,13]},
-"38": {"idgham":[56,57,89,94],"madd":[49,50,60,61,87,88,96,97],"qalqalah":[20,22],"wasl":[55,56,69,70]},
-"39": {"ghunnah":[4,7],"idgham":[73,77],"madd":[94,95],"wasl":[21,22,45,46]},
-"40": {"ghunnah":[2,5],"madd":[68,69],"wasl":[21,22]},
-"41": {"ghunnah":[40,43],"idgham":[60,66],"madd":[21,22,31,32,45,46],"qalqalah":[27,29],"wasl":[2,3,14,15]},
-"42": {"ghunnah":[94,97],"madd":[23,25],"qalqalah":[71,73]},
-"43": {"ghunnah":[13,16,96,101],"madd":[2,4,25,27,78,80,94,95],"qalqalah":[20,22],"wasl":[38,39,68,69]},
-"44": {"ghunnah":[39,42],"idgham":[25,26,44,45,64,65],"madd":[2,4,33,34,52,53,72,73],"wasl":[24,25,43,44]},
-"45": {"ghunnah":[13,16],"idgham":[29,33,47,52,56,57,80,81],"madd":[2,4,16,18,64,65,88,89],"wasl":[55,56]},
-"46": {"ghunnah":[18,21,69,72,85,88],"idgham":[59,64],"madd":[40,42,48,49],"qalqalah":[44,46],"wasl":[93,94]},
-"47": {"ghunnah":[53,56],"madd":[10,11,48,50,58,59]},
-"48": {"ghunnah":[35,39],"madd":[74,77,83,85,100,102],"qalqalah":[25,27,55,57],"silent":[60,62],"wasl":[43,44]},
-"49": {"ghunnah":[4,7,43,47,104,109],"madd":[73,75,82,83],"qalqalah":[63,65],"wasl":[9,10,51,52]},
-"50": {"idgham":[16,21,21,26],"qalqalah":[6,8,65,67]},
-"51": {"ghunnah":[36,39],"idgham":[56,61,73,79],"madd":[21,22,30,33,41,42],"wasl":[2,3,14,15]},
-"52": {"ghunnah":[17,21],"idgham":[28,29],"madd":[4,5,11,12,59,60],"qalqalah":[55,57],"wasl":[27,28,36,37]},
-"53": {"idgham":[20,25],"madd":[16,17,33,35,46,47],"qalqalah":[6,8]},
-"54": {"ghunnah":[40,43],"idgham":[85,91],"madd":[21,22,31,32,45,46],"wasl":[2,3,14,15,61,62]},
-"55": {"ghunnah":[65,68],"idgham":[30,31,44,45],"madd":[25,26,37,38,51,52,76,77],"silent":[36,37,50,51],"wasl":[29,30,43,44]},
-"56": {"ghunnah":[37,40],"idgham":[57,63],"madd":[21,22,42,43],"qalqalah":[27,29],"wasl":[2,3,14,15]},
-"57": {"madd":[10,11]},
-"58": {"ghunnah":[58,61,72,76,97,100,128,132,174,177],"idgham":[48,53,57,58,122,126,242,243,269,274],"madd":[6,8,66,67,147,148,162,164,203,205,237,238,250,251],"qalqalah":[143,145,193,195],"silent":[2,4,260,262],"wasl":[13,14,32,33,56,57,192,193,241,242]},
-"59": {"ghunnah":[12,15],"idgham":[44,45,70,71],"madd":[51,52,78,79],"silent":[40,42,50,51,66,68],"wasl":[43,44,57,58,69,70]},
-"60": {"ghunnah":[9,13,42,47,77,80],"madd":[38,39,53,55],"qalqalah":[62,64],"silent":[49,51],"wasl":[72,73]},
-"61": {"ghunnah":[2,5,69,72],"idgham":[32,33],"madd":[5,6,40,41,53,54,74,75,90,91],"qalqalah":[11,13],"wasl":[16,17,31,32,57,58]},
-"62": {"idgham":[45,50,82,86],"madd":[43,44]},
-"63": {"ghunnah":[12,15,52,56],"wasl":[7,8,18,19]},
-"64": {"madd":[46,47,101,102]},
-"65": {"idgham":[8,9],"madd":[14,15,17,18,81,82,88,89,108,109],"qalqalah":[58,60],"wasl":[7,8,23,24,53,54,65,66]},
-"66": {"ghunnah":[15,18],"madd":[18,19],"wasl":[10,11]},
-"67": {"ghunnah":[22,25,31,34,50,54],"madd":[25,26,44,45],"qalqalah":[40,42,54,56],"wasl":[17,18]},
-"68": {"ghunnah":[22,25,48,51,62,65,81,84],"idgham":[33,34],"madd":[39,40],"wasl":[32,33]},
-"69": {"ghunnah":[2,5,10,13,15,18,21,25],"idgham":[62,63],"madd":[70,71],"wasl":[61,62]},
-"70": {"ghunnah":[2,5],"wasl":[26,27]},
-"71": {"ghunnah":[9,12],"idgham":[4,9,59,65],"qalqalah":[65,67]},
-"72": {"ghunnah":[2,5],"idgham":[46,47],"madd":[50,51],"silent":[32,34],"wasl":[15,16,25,26,45,46]},
-"73": {"ghunnah":[49,53],"idgham":[126,131,135,140],"madd":[33,34,47,48,95,97],"silent":[74,76,97,99],"wasl":[57,58,106,107]},
-"74": {"ghunnah":[32,36],"idgham":[27,32,61,66],"madd":[59,60],"qalqalah":[21,23]},
-"75": {"ghunnah":[7,11,111,114,131,134,202,205],"idgham":[20,21,51,52,137,138,177,182,186,191],"madd":[26,27,59,60,75,78],"qalqalah":[42,44],"silent":[91,93],"wasl":[19,20,50,51,116,117,136,137]},
-"76": {"ghunnah":[85,88],"idgham":[43,48,63,64,103,108,113,118],"madd":[53,54,58,59,67,68,72,73],"silent":[37,39],"wasl":[10,11,18,19,28,29,48,49,62,63]},
-"77": {"ghunnah":[60,63],"idgham":[68,73],"madd":[36,37],"wasl":[13,14]},
-"78": {"ghunnah":[36,39],"idgham":[41,42],"madd":[49,50],"wasl":[10,11,25,26,40,41]},
-"79": {"madd":[44,45],"wasl":[51,52]},
-"80": {"madd":[10,11]},
-"81": {"ghunnah":[16,20],"idgham":[40,45],"silent":[11,13,53,55],"wasl":[2,3,24,25]},
-"83": {"ghunnah":[14,17],"idgham":[33,34],"madd":[17,19,39,40,57,58],"wasl":[32,33,52,53]},
+"1": {"madd_6":[39,41,43,45,45,47]},
+"2": {"madd_2":[32,33],"qalqalah":[26,28]},
+"3": {"madd_2":[20,21],"madd_muttasil":[26,28]},
+"4": {"ghunnah":[14,17,38,41],"iqlab":[85,88],"idghaam_ghunnah":[70,75],"lam_shamsiyyah":[56,57],"madd_muttasil":[93,95],"hamzat_wasl":[26,27,45,46,55,56]},
+"5": {"ghunnah":[4,7],"ikhfa":[70,75,93,96],"idghaam_ghunnah":[31,35],"idghaam_no_ghunnah":[86,91],"madd_2":[23,24],"madd_muttasil":[37,39],"qalqalah":[77,79],"hamzat_wasl":[16,17,53,54]},
+"6": {"qalqalah":[43,45],"hamzat_wasl":[42,43]},
+"7": {"ghunnah":[17,20],"ikhfa":[84,88],"madd_2":[2,3,40,41,51,52,80,81],"madd_munfasil":[12,14],"qalqalah":[69,71,88,90],"hamzat_wasl":[44,45]},
+"8": {"ghunnah":[14,17],"idghaam_ghunnah":[38,42,67,72],"madd_2":[36,37],"qalqalah":[74,76],"hamzat_wasl":[50,51,91,92]},
+"9": {"ikhfa":[71,75],"idghaam_ghunnah":[49,53],"madd_2":[10,11],"qalqalah":[55,57,62,64,75,77]},
+"10": {"ghunnah":[68,71],"ikhfa":[31,35,89,93],"lam_shamsiyyah":[67,68],"madd_2":[79,80],"madd_munfasil":[22,24],"qalqalah":[13,15],"hamzat_wasl":[12,13,66,67]},
+"11": {"ikhfa":[69,73],"idghaam_ghunnah":[89,93],"madd_2":[24,25],"madd_munfasil":[52,55],"silent":[79,81],"hamzat_wasl":[31,32]},
+"12": {"idghaam_ghunnah":[36,40],"madd_2":[2,3,24,25,49,50],"hamzat_wasl":[17,18,53,54]},
+"13": {"ghunnah":[21,24],"idghaam_ghunnah":[8,14,35,39],"idghaam_no_ghunnah":[14,19],"madd_2":[33,34],"silent":[32,33]},
+"14": {"ikhfa":[35,39],"iqlab":[6,11],"madd_2":[14,15]},
+"15": {"madd_2":[6,7],"qalqalah":[61,63]},
+"16": {"ikhfa":[40,43,71,76],"madd_2":[21,22],"hamzat_wasl":[2,3,14,15,39,40]},
+"17": {"ikhfa":[15,19,33,38,93,98],"madd_munfasil":[48,50],"hamzat_wasl":[2,3]},
+"18": {"ghunnah":[10,13],"ikhfa":[41,44,47,51,51,54],"lam_shamsiyyah":[27,28],"madd_2":[35,36],"madd_munfasil":[13,15],"hamzat_wasl":[26,27]},
+"19": {"ghunnah":[8,11],"ikhfa":[59,64],"madd_2":[57,58],"madd_munfasil":[13,15]},
+"20": {"ghunnah":[10,13],"idghaam_ghunnah":[34,38,60,64],"madd_2":[32,33]},
+"21": {"ghunnah":[80,83,101,104],"idghaam_ghunnah":[49,53,96,101,119,125],"idghaam_no_ghunnah":[74,79],"lam_shamsiyyah":[79,80],"madd_2":[10,11],"madd_munfasil":[65,67],"qalqalah":[57,59,125,127]},
+"22": {"ikhfa":[16,19,38,43],"madd_2":[30,31],"hamzat_wasl":[15,16]},
+"23": {"ghunnah":[41,44],"ikhfa":[96,99,111,114],"idghaam_ghunnah":[105,111],"lam_shamsiyyah":[40,41],"madd_2":[61,62,87,88],"madd_muttasil":[6,8],"qalqalah":[80,82],"hamzat_wasl":[14,15,39,40]},
+"24": {"ikhfa":[15,19],"madd_2":[8,9],"madd_munfasil":[25,27],"qalqalah":[47,49]},
+"25": {"ghunnah":[30,33],"ikhfa":[64,69],"lam_shamsiyyah":[29,30],"madd_2":[44,45],"madd_munfasil":[7,9],"qalqalah":[47,49],"hamzat_wasl":[28,29]},
+"26": {"ghunnah":[40,43,51,54,90,93],"ikhfa":[33,38,75,80,123,128,155,158],"lam_shamsiyyah":[106,107],"madd_2":[114,115],"madd_munfasil":[85,87],"hamzat_wasl":[10,11,60,61,143,144]},
+"27": {"ikhfa":[78,83],"madd_2":[13,14,35,36,48,49],"qalqalah":[62,64],"silent":[43,45]},
+"28": {"ghunnah":[69,72],"idghaam_ghunnah":[51,55],"madd_2":[13,14],"madd_munfasil":[2,4],"hamzat_wasl":[38,39]},
+"29": {"ikhfa":[49,53],"silent":[27,29],"hamzat_wasl":[61,62]},
+"30": {"ghunnah":[8,11],"madd_2":[34,35,47,48],"qalqalah":[15,17],"hamzat_wasl":[20,21,40,41]},
+"31": {"ikhfa":[36,39],"lam_shamsiyyah":[56,57,70,71],"madd_2":[48,49,63,64,77,78],"silent":[62,63,76,77],"hamzat_wasl":[55,56,69,70]},
+"32": {"ikhfa":[49,54],"iqlab":[6,11],"madd_2":[14,15],"qalqalah":[32,34]},
+"33": {"idghaam_mutajanisayn":[32,33],"lam_shamsiyyah":[3,4],"madd_2":[9,10],"qalqalah":[65,67],"hamzat_wasl":[2,3]},
+"34": {"madd_2":[2,3],"madd_246":[68,69],"qalqalah":[16,18],"hamzat_wasl":[15,16,37,38,46,47]},
+"35": {"ghunnah":[83,86],"ikhfa":[41,45,76,81,106,110],"idghaam_ghunnah":[20,24,34,38],"madd_2":[49,50,102,103],"madd_246":[114,115],"madd_munfasil":[54,56,67,70],"qalqalah":[45,47]},
+"36": {"ghunnah":[4,7],"idghaam_ghunnah":[61,66],"madd_2":[50,51,59,60],"madd_246":[72,73],"hamzat_wasl":[8,9,37,38]},
+"37": {"iqlab":[28,31],"idghaam_ghunnah":[74,79],"idghaam_no_ghunnah":[48,53],"madd_246":[97,98],"silent":[69,71],"hamzat_wasl":[2,3,12,13]},
+"38": {"idghaam_ghunnah":[89,94],"lam_shamsiyyah":[56,57],"madd_2":[49,50,60,61,87,88],"madd_246":[96,97],"qalqalah":[20,22],"hamzat_wasl":[55,56,69,70]},
+"39": {"ikhfa":[4,7],"idghaam_ghunnah":[73,77],"madd_246":[94,95],"hamzat_wasl":[21,22,45,46]},
+"40": {"ghunnah":[2,5],"madd_246":[68,69],"hamzat_wasl":[21,22]},
+"41": {"ghunnah":[40,43],"idghaam_ghunnah":[60,66],"madd_2":[21,22,31,32,45,46],"qalqalah":[27,29],"hamzat_wasl":[2,3,14,15]},
+"42": {"ikhfa":[94,97],"madd_munfasil":[23,25],"qalqalah":[71,73]},
+"43": {"ghunnah":[13,16],"ikhfa":[96,101],"madd_2":[94,95],"madd_munfasil":[2,4,78,80],"madd_muttasil":[25,27],"qalqalah":[20,22],"hamzat_wasl":[38,39,68,69]},
+"44": {"ghunnah":[39,42],"lam_shamsiyyah":[25,26,44,45,64,65],"madd_2":[33,34,52,53,72,73],"madd_munfasil":[2,4],"hamzat_wasl":[24,25,43,44]},
+"45": {"ghunnah":[13,16],"idghaam_ghunnah":[29,33,47,52],"lam_shamsiyyah":[56,57,80,81],"madd_2":[64,65,88,89],"madd_munfasil":[2,4,16,18],"hamzat_wasl":[55,56]},
+"46": {"ghunnah":[85,88],"ikhfa":[18,21,69,72],"idghaam_no_ghunnah":[59,64],"madd_2":[48,49],"madd_munfasil":[40,42],"qalqalah":[44,46],"hamzat_wasl":[93,94]},
+"47": {"ghunnah":[53,56],"madd_2":[10,11,58,59],"madd_munfasil":[48,50]},
+"48": {"ikhfa":[35,39],"madd_munfasil":[74,77,83,85],"madd_muttasil":[100,102],"qalqalah":[25,27,55,57],"silent":[60,62],"hamzat_wasl":[43,44]},
+"49": {"ghunnah":[4,7],"ikhfa":[43,47,104,109],"madd_2":[82,83],"madd_munfasil":[73,75],"qalqalah":[63,65],"hamzat_wasl":[9,10,51,52]},
+"50": {"idghaam_no_ghunnah":[21,26],"idghaam_shafawi":[16,21],"qalqalah":[6,8,65,67]},
+"51": {"ghunnah":[36,39],"idghaam_ghunnah":[56,61,73,79],"madd_2":[21,22,41,42],"madd_munfasil":[30,33],"hamzat_wasl":[2,3,14,15]},
+"52": {"ikhfa":[17,21],"lam_shamsiyyah":[28,29],"madd_2":[4,5,11,12,59,60],"qalqalah":[55,57],"hamzat_wasl":[27,28,36,37]},
+"53": {"idghaam_no_ghunnah":[20,25],"madd_2":[16,17,46,47],"madd_munfasil":[33,35],"qalqalah":[6,8]},
+"54": {"ghunnah":[40,43],"idghaam_ghunnah":[85,91],"madd_2":[21,22,31,32,45,46],"hamzat_wasl":[2,3,14,15,61,62]},
+"55": {"ikhfa":[65,68],"lam_shamsiyyah":[30,31,44,45],"madd_2":[25,26,37,38,51,52,76,77],"silent":[36,37,50,51],"hamzat_wasl":[29,30,43,44]},
+"56": {"ghunnah":[37,40],"idghaam_ghunnah":[57,63],"madd_2":[21,22,42,43],"qalqalah":[27,29],"hamzat_wasl":[2,3,14,15]},
+"57": {"madd_2":[10,11]},
+"58": {"ghunnah":[58,61,97,100,174,177],"ikhfa":[72,76,128,132],"idghaam_ghunnah":[122,126,269,274],"idghaam_shafawi":[48,53],"lam_shamsiyyah":[57,58,242,243],"madd_2":[66,67,147,148,237,238,250,251],"madd_munfasil":[203,205],"madd_muttasil":[6,8,162,164],"qalqalah":[143,145,193,195],"silent":[2,4,260,262],"hamzat_wasl":[13,14,32,33,56,57,192,193,241,242]},
+"59": {"iqlab":[12,15],"lam_shamsiyyah":[44,45,70,71],"madd_2":[51,52,78,79],"silent":[40,42,50,51,66,68],"hamzat_wasl":[43,44,57,58,69,70]},
+"60": {"ghunnah":[77,80],"ikhfa":[9,13,42,47],"madd_2":[38,39],"madd_muttasil":[53,55],"qalqalah":[62,64],"silent":[49,51],"hamzat_wasl":[72,73]},
+"61": {"ghunnah":[2,5,69,72],"lam_shamsiyyah":[32,33],"madd_2":[5,6,40,41,53,54,74,75,90,91],"qalqalah":[11,13],"hamzat_wasl":[16,17,31,32,57,58]},
+"62": {"idghaam_ghunnah":[45,50,82,86],"madd_2":[43,44]},
+"63": {"ghunnah":[12,15],"ikhfa":[52,56],"hamzat_wasl":[7,8,18,19]},
+"64": {"madd_2":[46,47,101,102]},
+"65": {"lam_shamsiyyah":[8,9],"madd_2":[14,15,17,18,81,82,88,89,108,109],"qalqalah":[58,60],"hamzat_wasl":[7,8,23,24,53,54,65,66]},
+"66": {"ikhfa":[15,18],"madd_2":[18,19],"hamzat_wasl":[10,11]},
+"67": {"ghunnah":[31,34],"ikhfa":[22,25,50,54],"madd_2":[25,26,44,45],"qalqalah":[40,42,54,56],"hamzat_wasl":[17,18]},
+"68": {"ghunnah":[22,25,48,51,62,65,81,84],"lam_shamsiyyah":[33,34],"madd_2":[39,40],"hamzat_wasl":[32,33]},
+"69": {"ghunnah":[2,5,15,18],"ikhfa":[10,13,21,25],"lam_shamsiyyah":[62,63],"madd_2":[70,71],"hamzat_wasl":[61,62]},
+"70": {"ghunnah":[2,5],"hamzat_wasl":[26,27]},
+"71": {"ikhfa":[9,12],"idghaam_ghunnah":[4,9,59,65],"qalqalah":[65,67]},
+"72": {"ghunnah":[2,5],"lam_shamsiyyah":[46,47],"madd_2":[50,51],"silent":[32,34],"hamzat_wasl":[15,16,25,26,45,46]},
+"73": {"ikhfa":[49,53],"idghaam_ghunnah":[126,131,135,140],"madd_2":[33,34,47,48],"madd_munfasil":[95,97],"silent":[74,76,97,99],"hamzat_wasl":[57,58,106,107]},
+"74": {"ikhfa":[32,36],"idghaam_ghunnah":[61,66],"idghaam_shafawi":[27,32],"madd_2":[59,60],"qalqalah":[21,23]},
+"75": {"ghunnah":[111,114,131,134],"ikhfa":[7,11,202,205],"idghaam_ghunnah":[177,182,186,191],"lam_shamsiyyah":[20,21,51,52,137,138],"madd_2":[26,27,59,60],"madd_munfasil":[75,78],"qalqalah":[42,44],"silent":[91,93],"hamzat_wasl":[19,20,50,51,116,117,136,137]},
+"76": {"ikhfa":[85,88],"idghaam_ghunnah":[43,48,103,108,113,118],"lam_shamsiyyah":[63,64],"madd_2":[53,54,58,59,67,68,72,73],"silent":[37,39],"hamzat_wasl":[10,11,18,19,28,29,48,49,62,63]},
+"77": {"ghunnah":[60,63],"idghaam_ghunnah":[68,73],"madd_2":[36,37],"hamzat_wasl":[13,14]},
+"78": {"ikhfa":[36,39],"lam_shamsiyyah":[41,42],"madd_2":[49,50],"hamzat_wasl":[10,11,25,26,40,41]},
+"79": {"madd_2":[44,45],"hamzat_wasl":[51,52]},
+"80": {"madd_2":[10,11]},
+"81": {"ikhfa":[16,20],"idghaam_no_ghunnah":[40,45],"silent":[11,13,53,55],"hamzat_wasl":[2,3,24,25]},
+"83": {"ghunnah":[14,17],"lam_shamsiyyah":[33,34],"madd_2":[39,40,57,58],"madd_munfasil":[17,19],"hamzat_wasl":[32,33,52,53]},
"84": {"ghunnah":[28,31]},
-"85": {"idgham":[37,38],"madd":[45,46],"wasl":[16,17,36,37]},
-"86": {"ghunnah":[36,39],"qalqalah":[15,17],"wasl":[10,11]},
-"87": {"ghunnah":[53,56],"idgham":[18,19,58,59],"madd":[24,25,66,67],"wasl":[17,18,42,43,57,58]},
-"88": {"idgham":[21,22],"madd":[29,30],"silent":[8,10],"wasl":[11,12,20,21]},
+"85": {"lam_shamsiyyah":[37,38],"madd_2":[45,46],"hamzat_wasl":[16,17,36,37]},
+"86": {"ghunnah":[36,39],"qalqalah":[15,17],"hamzat_wasl":[10,11]},
+"87": {"ikhfa":[53,56],"lam_shamsiyyah":[18,19,58,59],"madd_2":[24,25,66,67],"hamzat_wasl":[17,18,42,43,57,58]},
+"88": {"lam_shamsiyyah":[21,22],"madd_2":[29,30],"silent":[8,10],"hamzat_wasl":[11,12,20,21]},
"89": {"qalqalah":[5,7]},
-"90": {"ghunnah":[47,50],"idgham":[9,10],"madd":[15,16,18,19],"wasl":[8,9,54,55,74,75]},
-"91": {"ghunnah":[2,6],"idgham":[15,16],"madd":[23,24],"silent":[10,12]},
-"92": {"ghunnah":[9,11],"idgham":[18,19,32,36],"madd":[26,27]},
-"93": {"ghunnah":[2,6,12,16],"idgham":[19,20,60,61],"madd":[25,26,28,29,49,51,68,69],"qalqalah":[74,76],"wasl":[18,19,34,35,59,60]},
-"94": {"madd":[15,16],"qalqalah":[5,7]},
-"95": {"madd":[35,36],"wasl":[28,29]},
-"96": {"ghunnah":[2,5],"idgham":[40,41,72,73],"madd":[44,45,49,50,80,81],"qalqalah":[57,59],"silent":[24,26,36,38],"wasl":[6,7,39,40,71,72]},
-"97": {"ghunnah":[4,7,71,74],"idgham":[88,94],"madd":[20,21,81,82],"wasl":[53,54]},
-"98": {"ghunnah":[32,36],"idgham":[27,32,60,65],"qalqalah":[21,23]}
+"90": {"ikhfa":[47,50],"lam_shamsiyyah":[9,10],"madd_2":[15,16,18,19],"hamzat_wasl":[8,9,54,55,74,75]},
+"91": {"ikhfa":[2,6],"lam_shamsiyyah":[15,16],"madd_2":[23,24],"silent":[10,12]},
+"92": {"iqlab":[9,11],"idghaam_ghunnah":[32,36],"lam_shamsiyyah":[18,19],"madd_2":[26,27]},
+"93": {"ikhfa":[2,6,12,16],"lam_shamsiyyah":[19,20,60,61],"madd_2":[25,26,28,29,68,69],"madd_munfasil":[49,51],"qalqalah":[74,76],"hamzat_wasl":[18,19,34,35,59,60]},
+"94": {"madd_2":[15,16],"qalqalah":[5,7]},
+"95": {"madd_2":[35,36],"hamzat_wasl":[28,29]},
+"96": {"ghunnah":[2,5],"lam_shamsiyyah":[40,41,72,73],"madd_2":[44,45,49,50,80,81],"qalqalah":[57,59],"silent":[24,26,36,38],"hamzat_wasl":[6,7,39,40,71,72]},
+"97": {"ghunnah":[4,7],"ikhfa":[71,74],"idghaam_no_ghunnah":[88,94],"madd_2":[20,21,81,82],"hamzat_wasl":[53,54]},
+"98": {"ikhfa":[32,36],"idghaam_shafawi":[27,32,60,65],"qalqalah":[21,23]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/2.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/2.json
index a61fc7d..7d3ec9f 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/2.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/2.json
@@ -1,288 +1,288 @@
{
-"1": {"madd-lazim":[40,42,42,44]},
-"2": {"idgham":[39,45],"madd":[2,3,15,16,54,55],"wasl":[8,9]},
-"3": {"ghunnah":[63,66,84,87],"idgham":[48,49],"madd":[55,56,76,77,89,90],"qalqalah":[72,74],"silent":[54,55],"wasl":[24,25,47,48]},
-"4": {"ghunnah":[33,36,57,60,65,69],"madd":[28,30,52,54,105,106],"qalqalah":[69,71],"wasl":[2,3,80,81]},
-"5": {"idgham":[23,29,29,34],"madd":[6,8,50,52,73,74],"silent":[2,4,46,48],"wasl":[62,63]},
-"6": {"ghunnah":[2,5,50,53,74,77],"madd":[30,32,96,97],"silent":[23,25],"wasl":[6,7]},
-"7": {"idgham":[86,90],"madd":[60,63,70,71,82,83,109,110],"qalqalah":[66,68],"wasl":[7,8]},
-"8": {"ghunnah":[9,12,33,36,81,85],"idgham":[8,9,18,22],"madd":[93,94],"wasl":[7,8,40,41,52,53,62,63]},
-"9": {"ghunnah":[72,75],"madd":[4,5,67,69,96,97],"silent":[41,43],"wasl":[13,14,23,24]},
-"10": {"ghunnah":[21,25,74,78],"idgham":[13,18,48,53],"madd":[100,101],"silent":[89,91],"wasl":[35,36]},
-"11": {"ghunnah":[63,66],"madd":[56,58,85,86],"silent":[34,36,58,60],"wasl":[41,42]},
-"12": {"ghunnah":[9,12],"idgham":[44,49],"madd":[4,6,41,42,59,60],"wasl":[22,23]},
-"13": {"ghunnah":[49,52,115,118],"idgham":[48,49,93,94,129,130,149,154],"madd":[36,38,61,63,81,83,101,103,110,112,137,139,146,147,164,165],"silent":[29,31,63,65],"wasl":[47,48,92,93,128,129]},
-"14": {"ghunnah":[52,55,108,111,124,127],"madd":[42,44,85,86,101,103,150,151],"silent":[13,15,34,36,44,46,71,73,103,105],"wasl":[16,17]},
-"15": {"madd":[52,53,68,69]},
-"16": {"idgham":[36,37],"madd":[6,8,42,43,79,80,112,113],"silent":[2,4,32,34,101,103],"wasl":[13,14,23,24,35,36,50,51]},
-"17": {"ghunnah":[44,49,51,54],"idgham":[134,139],"madd":[54,56,61,63,80,81,132,133,149,150],"qalqalah":[143,145],"wasl":[20,21,28,29,89,90]},
-"18": {"ghunnah":[2,6,4,8,19,23],"madd":[40,41]},
-"19": {"ghunnah":[162,166],"idgham":[13,18,22,23,47,51,56,60,65,69,108,113,117,118],"madd":[28,30,45,46,83,84,95,97,123,124,172,173,177,178],"qalqalah":[69,71],"wasl":[21,22,116,117,136,137,148,149,167,168]},
-"20": {"ghunnah":[182,185,212,216],"idgham":[64,69],"madd":[33,34,48,50,55,57,88,90,129,131,172,173,218,219],"qalqalah":[29,31,168,170],"silent":[73,75,117,119],"wasl":[8,9,134,135,186,187]},
-"21": {"ghunnah":[15,18,76,80],"idgham":[14,15],"madd":[2,4,108,109],"qalqalah":[80,82],"silent":[30,32],"wasl":[13,14,22,23,43,44,64,65]},
-"22": {"ghunnah":[68,71,96,100,177,180,189,192],"idgham":[38,43,44,45,62,66,80,81,121,122,138,144,182,187],"madd":[36,37,50,52,59,61,86,88,93,95,113,114,129,130,203,204],"qalqalah":[157,159],"silent":[164,166],"wasl":[22,23,43,44,79,80,120,121]},
-"23": {"ghunnah":[4,8,8,11,28,31,125,129,143,147,147,150],"idgham":[23,28,79,84,84,89,120,125],"madd":[95,96,114,116,155,156,160,161],"qalqalah":[53,55,100,102],"silent":[68,70,105,107],"wasl":[99,100,133,134]},
-"24": {"ghunnah":[28,32,56,59,84,87],"idgham":[4,9,55,56,83,84],"madd":[122,123,127,128],"silent":[21,23,39,41,51,53],"wasl":[44,45,54,55,63,64,82,83,93,94]},
-"25": {"ghunnah":[59,62,72,75,77,81,89,93,143,147,160,165,199,203],"idgham":[44,45,152,157,234,239,262,267,275,279],"madd":[48,49,53,54,75,76,110,111,174,175,222,223,230,231,251,253,260,261,293,294,298,299],"qalqalah":[81,83,191,193,203,205],"silent":[28,30,40,42,130,132,169,171,215,217],"wasl":[10,11,43,44,101,102,179,180]},
-"26": {"ghunnah":[2,5,65,69,87,90,129,132,163,166],"idgham":[33,37,49,55,146,151,239,244,262,267,287,292],"madd":[28,30,206,208,229,230,254,255,279,280,308,310,323,324,328,329],"silent":[110,112,185,187],"wasl":[6,7,92,93,135,136,168,169,217,218,318,319]},
-"27": {"ghunnah":[12,15,39,42],"idgham":[103,107],"madd":[53,54,58,59,76,78,98,100,147,149,164,165,169,170],"qalqalah":[64,66],"silent":[143,145],"wasl":[28,29,86,87,131,132,159,160]},
-"28": {"ghunnah":[33,36,47,52,66,69,84,87,102,105],"madd":[45,46,58,59,123,124],"wasl":[21,22]},
-"29": {"ghunnah":[51,56,56,59,100,103],"idgham":[24,29,78,79,120,124],"madd":[67,70,84,86,97,98,115,116,118,119,148,149],"qalqalah":[106,108],"wasl":[5,6,35,36,60,61,77,78]},
-"30": {"ghunnah":[40,43,51,55,75,79,203,206],"idgham":[107,111,137,138],"madd":[29,31,82,84,143,145,206,208,234,235],"qalqalah":[91,93],"silent":[84,86],"wasl":[57,58,136,137]},
-"31": {"ghunnah":[43,46,91,93,130,134,134,137],"madd":[27,29,71,73,110,112,117,119,123,125,142,143,147,148],"wasl":[18,19,64,65]},
-"32": {"ghunnah":[66,69,74,77],"madd":[15,16,36,38,61,63,96,97],"qalqalah":[11,13],"silent":[6,8],"wasl":[78,79,89,90]},
-"33": {"ghunnah":[22,24,29,33,52,55,61,63,68,72,116,119,197,200],"idgham":[139,140],"madd":[8,10,39,41,55,57,78,80,119,121,145,146,148,149,211,212],"qalqalah":[181,183],"wasl":[138,139,154,155]},
-"34": {"madd":[23,25,61,63,71,73,123,124,128,129],"qalqalah":[76,78],"silent":[40,42,63,65],"wasl":[32,33,93,94,118,119]},
-"35": {"ghunnah":[33,36,53,56],"idgham":[125,126,153,154],"madd":[12,14,118,119,157,158,162,163],"qalqalah":[108,110],"wasl":[23,24,48,49,124,125,152,153]},
-"36": {"ghunnah":[54,57],"idgham":[16,17,119,123,154,158],"madd":[24,25,162,163,175,176],"silent":[90,92],"wasl":[15,16,82,83,134,135]},
-"37": {"ghunnah":[43,47,64,67],"idgham":[23,28,77,78,89,90],"madd":[9,12,33,34,41,42,69,70,95,96],"wasl":[76,77,88,89]},
-"38": {"ghunnah":[33,38,40,43,53,56,63,66,71,76,78,82],"idgham":[58,63],"madd":[138,139],"silent":[16,18],"wasl":[8,9]},
-"39": {"ghunnah":[76,79],"idgham":[75,76],"madd":[43,44,48,50,57,59,70,71,97,98,102,103],"silent":[19,21,32,34,53,55],"wasl":[2,3,74,75]},
-"40": {"madd":[2,3,7,9,16,18,52,54,97,99,126,127,139,140],"silent":[32,34,86,88],"wasl":[24,25,46,47,132,133]},
-"41": {"ghunnah":[22,25,89,93,134,139],"idgham":[38,44,143,148],"madd":[17,19,70,72,96,97,124,125,153,154,165,166],"silent":[10,12,72,74,113,115],"wasl":[159,160]},
-"42": {"ghunnah":[67,70],"madd":[34,35,81,82],"silent":[15,17,51,53],"wasl":[18,19,29,30,54,55]},
-"43": {"idgham":[14,15,37,38,67,68],"madd":[21,22,44,45,71,72,76,77],"silent":[10,12,20,21,33,35,43,44,58,60],"wasl":[13,14,36,37,50,51,66,67]},
-"44": {"ghunnah":[16,19,38,41,48,51,62,65],"idgham":[15,16],"madd":[85,86,105,106],"wasl":[14,15,25,26,78,79]},
-"45": {"ghunnah":[46,49],"idgham":[19,20,31,32],"madd":[38,39,83,84,88,89],"qalqalah":[23,25],"silent":[13,15,37,38],"wasl":[2,3,18,19,30,31,78,79]},
-"46": {"ghunnah":[14,17,23,26,56,59],"idgham":[28,33],"madd":[35,36,75,76,80,81],"silent":[39,41]},
-"47": {"ghunnah":[81,84],"madd":[2,3,7,9,16,18,52,54,111,112,116,117],"silent":[32,34],"wasl":[24,25,46,47,106,107]},
-"48": {"ghunnah":[50,54,137,140],"idgham":[17,23,42,47,58,63,92,96,122,126],"madd":[88,89,142,143],"qalqalah":[27,29,69,71,119,121],"silent":[9,11],"wasl":[2,3]},
-"49": {"ghunnah":[147,151],"idgham":[19,24,156,161,161,166],"madd":[16,17,61,63,96,98,125,127,142,143,153,155,178,179],"qalqalah":[92,94],"wasl":[66,67]},
-"50": {"ghunnah":[38,41,87,90,95,98],"madd":[45,46,63,65,100,101],"qalqalah":[11,13,59,61],"wasl":[24,25]},
-"51": {"ghunnah":[46,50,50,53,80,83,96,99],"madd":[9,10,23,26,90,91,104,105,109,110],"qalqalah":[12,14,72,74],"wasl":[54,55,67,68]},
-"52": {"ghunnah":[2,5,18,21,27,30],"idgham":[21,26],"madd":[38,39,64,65]},
-"53": {"madd":[32,33,71,72],"wasl":[25,26,38,39]},
-"54": {"ghunnah":[45,48,66,69,73,77,148,151,185,188,222,225],"idgham":[173,178,235,236,247,248],"madd":[31,32,35,36,108,110,141,143,160,161,227,228,253,254],"qalqalah":[96,98,135,137],"silent":[110,112,143,145],"wasl":[77,78,91,92,134,135,234,235,246,247]},
-"55": {"ghunnah":[75,79,109,112,117,120],"idgham":[29,34,93,94],"madd":[18,19,97,98,122,123],"wasl":[60,61,92,93]},
-"56": {"ghunnah":[2,5,23,26],"idgham":[17,22],"madd":[14,15,63,64]},
-"57": {"ghunnah":[39,42,64,67,92,96,147,151,161,164],"idgham":[71,72],"madd":[101,102,117,118,144,145,154,156,179,180],"qalqalah":[113,115],"silent":[87,89,156,158],"wasl":[24,25,59,60,70,71]},
-"58": {"idgham":[85,90,116,121,136,141],"madd":[28,29,159,160,162,163,191,192],"qalqalah":[16,18,91,93],"silent":[23,25,53,55,98,100,127,129],"wasl":[15,16,34,35,90,91,101,102,180,181]},
-"59": {"ghunnah":[70,73],"idgham":[110,116,120,121],"madd":[126,128,154,155],"qalqalah":[107,109],"silent":[27,29,102,104,143,145],"wasl":[10,11,45,46,85,86,119,120]},
-"60": {"ghunnah":[80,83,120,125],"idgham":[147,152,186,191],"madd":[37,38,243,244],"qalqalah":[125,127],"silent":[168,170,181,183,218,220],"wasl":[7,8,49,50,67,68,79,80,97,98,173,174,196,197,225,226]},
-"61": {"ghunnah":[62,66,103,106,111,113,130,133,276,281,283,286,403,406,468,471],"idgham":[29,34,54,58,291,296,332,333,375,380,467,468],"madd":[18,19,58,59,149,151,362,364,393,394,440,441,476,477,500,501,540,541],"qalqalah":[67,69,92,94,134,136,206,208,231,233,456,458],"silent":[268,270,417,419,517,519,529,531],"wasl":[66,67,117,118,216,217,240,241,260,261,331,332,344,345,383,384,444,445,466,467,489,490]},
-"62": {"ghunnah":[2,5,52,55,141,146,166,169],"idgham":[51,52,66,67],"madd":[57,58,70,71,137,138,223,224],"qalqalah":[155,157],"silent":[24,26,45,47],"wasl":[6,7,29,30,50,51,65,66,95,96,105,106,115,116]},
-"63": {"ghunnah":[87,91],"idgham":[54,55,97,101],"madd":[22,23,72,74,84,85,141,142],"silent":[67,69,109,111],"wasl":[53,54,101,102]},
-"64": {"ghunnah":[2,5,23,26,94,97],"idgham":[17,22,97,102],"madd":[34,35,88,89,110,111,115,116],"wasl":[57,58,105,106]},
-"65": {"ghunnah":[44,47],"idgham":[55,56],"madd":[101,102,107,108],"qalqalah":[6,8,59,61],"silent":[39,41,87,89],"wasl":[20,21,30,31,54,55]},
-"66": {"idgham":[21,27,75,80],"madd":[10,11,19,20,89,90]},
-"67": {"ghunnah":[36,39,63,67,84,88,116,121],"madd":[31,33,91,93,166,167,171,172],"silent":[74,76,93,95],"wasl":[40,41,135,136,161,162]},
-"68": {"ghunnah":[62,65,79,82,127,131],"idgham":[36,41,93,98,106,110],"madd":[67,68,139,140,170,171],"qalqalah":[10,12],"silent":[6,8,155,157],"wasl":[9,10,147,148]},
-"69": {"ghunnah":[67,70,84,87,98,102,140,143],"idgham":[36,41,117,122,139,140],"madd":[72,73,106,108,143,144,148,149],"qalqalah":[10,12],"silent":[6,8],"wasl":[9,10,138,139]},
-"70": {"ghunnah":[56,59,94,97,102,106],"idgham":[36,41],"madd":[74,75,97,99,106,108,129,130],"qalqalah":[10,12],"silent":[6,8],"wasl":[9,10,60,61,111,112]},
-"71": {"ghunnah":[8,11,25,28,52,56],"idgham":[39,44,106,111],"madd":[13,14,142,143,200,201],"silent":[133,135,189,191],"wasl":[62,63,86,87,136,137,155,156]},
-"72": {"ghunnah":[23,28,76,79],"idgham":[67,72],"madd":[32,33,90,91],"wasl":[28,29,52,53]},
-"73": {"madd":[37,38,87,88,92,93,114,115],"wasl":[10,11,50,51,58,59]},
-"74": {"ghunnah":[2,5,28,31,93,96,157,160,218,221,293,296],"idgham":[22,27,87,91],"madd":[39,40,149,150,209,211,285,286,306,307],"wasl":[54,55,102,103,140,141,204,205,259,260,273,274]},
-"75": {"ghunnah":[100,103,123,126],"idgham":[18,22,58,63],"madd":[86,87,118,119,161,162],"qalqalah":[6,8,43,45],"silent":[29,31],"wasl":[90,91]},
-"76": {"ghunnah":[52,55,94,98,122,126,170,174,180,183],"madd":[42,44,101,103,176,177,210,211],"madd-lazim":[162,164],"silent":[13,15,34,36,44,46,103,105],"wasl":[16,17,137,138]},
-"77": {"ghunnah":[22,25],"madd":[72,73],"wasl":[26,27]},
-"78": {"ghunnah":[13,16,92,95],"madd":[46,47,55,57,95,96],"wasl":[39,40]},
-"79": {"ghunnah":[60,63,89,92,126,131,135,140,157,160,202,205],"idgham":[7,12,145,150,152,157,190,195,197,202],"madd":[40,41,77,78,119,120,215,216],"silent":[112,114],"wasl":[33,34,93,94]},
-"80": {"ghunnah":[13,17,28,31,64,68,87,90,104,109],"idgham":[27,28,50,56,111,115],"madd":[40,42,138,140,187,188],"silent":[8,10],"wasl":[26,27,91,92,122,123,163,164]},
-"81": {"ghunnah":[9,13,88,91],"idgham":[26,30,87,88],"madd":[34,35,44,45,50,52,59,60,69,71,82,83,109,110,114,115],"silent":[65,67],"wasl":[86,87]},
-"82": {"ghunnah":[77,80],"idgham":[36,37],"madd":[40,41,45,46,55,57,68,69,97,98,102,103],"silent":[20,22,32,34,51,53],"wasl":[2,3,35,36,72,73]},
-"83": {"ghunnah":[171,174,236,239,273,276,283,286],"idgham":[105,110,170,171,183,188,200,201,223,224,267,273,286,291],"madd":[22,23,30,32,39,41,87,88,135,136,150,151,207,208,230,231,297,298],"silent":[165,167,196,198,206,207,219,221,229,230],"wasl":[70,71,82,83,114,115,128,129,143,144,199,200,222,223]},
-"84": {"ghunnah":[79,82,91,95,107,110,128,131],"idgham":[86,91],"madd":[22,23,50,52,97,98,142,143],"qalqalah":[113,115]},
-"85": {"ghunnah":[2,5,8,11,41,44,77,80,85,89,120,124,289,293,329,332,347,351,462,465],"idgham":[71,77,80,85,153,157,308,312,366,367],"madd":[16,18,22,24,91,92,103,104,145,146,171,172,181,182,264,265,301,303,321,322,361,362,392,393,413,416,454,455,475,476],"qalqalah":[29,31,141,143],"silent":[360,361],"wasl":[124,125,136,137,257,258,353,354,365,366,385,386,425,426,442,443]},
-"86": {"ghunnah":[122,125],"idgham":[48,49],"madd":[6,8,43,44,127,128],"silent":[2,4,32,34,42,43],"wasl":[13,14,23,24,35,36,47,48,60,61,98,99]},
-"87": {"ghunnah":[54,57,190,194,215,218,249,254,272,277],"idgham":[69,70],"madd":[34,35,64,65,123,124,138,139,175,177,209,212,283,284],"qalqalah":[6,8,99,101,134,136,257,259,277,279],"wasl":[27,28,68,69,98,99,113,114,150,151,225,226]},
-"88": {"ghunnah":[27,31],"idgham":[75,81],"madd":[91,92],"silent":[8,10],"wasl":[46,47]},
-"89": {"ghunnah":[4,7,36,39,87,91,142,145],"idgham":[26,31,56,61,155,160],"madd":[11,13,24,25,149,151,186,187,218,219,223,224],"qalqalah":[91,93],"silent":[82,84,135,137,169,171,179,181],"wasl":[40,41,118,119,199,200,213,214]},
-"90": {"ghunnah":[31,34,66,69,112,116],"idgham":[43,47,90,94,133,137,191,195,216,221],"madd":[26,28,61,63,122,123,139,141,158,159,164,166,201,202,223,224],"silent":[19,21,54,56],"wasl":[10,11,72,73,102,103]},
-"91": {"ghunnah":[41,44,82,85,200,202,220,224,231,235,235,238],"idgham":[154,160,238,243],"madd":[36,38,77,79,122,124,128,129,205,207,249,250],"qalqalah":[187,189,224,226],"silent":[29,31,61,63],"wasl":[47,48,137,138,210,211]},
-"92": {"ghunnah":[46,49,76,79,92,95],"idgham":[17,22],"madd":[11,13,40,41,86,87,100,101,105,106],"qalqalah":[6,8,68,70],"wasl":[30,31,50,51,63,64]},
-"93": {"ghunnah":[87,91,221,225,245,249,249,252],"idgham":[54,55,97,101,252,257],"madd":[22,23,72,74,84,85,227,229,235,236,263,264],"qalqalah":[178,180],"silent":[67,69,109,111,118,120,154,156],"wasl":[53,54,101,102,173,174]},
-"94": {"ghunnah":[7,11,48,51,73,77,83,86,96,99,116,120,120,123],"idgham":[25,26,68,73,82,83],"madd":[128,129,133,134],"silent":[101,103],"wasl":[24,25,33,34,52,53,81,82,104,105]},
-"95": {"ghunnah":[12,15,25,30,73,77],"idgham":[4,8,79,80],"madd":[83,84,88,89],"wasl":[59,60,78,79]},
-"96": {"ghunnah":[10,13,29,32,109,112,180,183,202,206],"idgham":[28,29,50,54,127,131,174,178],"madd":[48,49,154,155,219,220],"silent":[47,48,78,80],"wasl":[27,28,59,60,161,162,188,189]},
-"97": {"ghunnah":[7,11,41,44],"idgham":[21,27,100,106,131,136],"madd":[46,47,57,58,157,158],"qalqalah":[29,31],"wasl":[84,85]},
-"98": {"ghunnah":[2,6,86,89],"idgham":[16,22,104,109],"madd":[34,36,44,45,56,57,78,79,113,114,118,119],"qalqalah":[62,64],"wasl":[90,91]},
-"99": {"ghunnah":[11,14,37,41],"idgham":[49,53],"madd":[18,20,35,36,47,48,70,72,85,86,90,91],"qalqalah":[6,8],"wasl":[80,81]},
-"100": {"ghunnah":[58,62],"idgham":[29,35,49,54],"madd":[15,16,41,42,90,91],"silent":[21,23]},
-"101": {"ghunnah":[4,7,36,39,166,169],"idgham":[26,31,56,61,87,92],"madd":[11,13,121,122,129,130,145,147,186,187],"silent":[111,113],"wasl":[40,41,95,96,114,115,133,134]},
-"102": {"ghunnah":[100,103,143,146,169,172,276,279,297,301,401,405,499,502,620,623],"idgham":[29,30,105,106,142,143,151,152,585,589],"madd":[35,36,64,65,89,90,97,98,111,112,164,166,207,208,218,219,271,273,362,363,391,392,420,421,543,544,555,556,583,584,615,617,652,653],"madd-lazim":[407,409],"qalqalah":[515,517],"silent":[11,13,25,27,125,127,525,527,608,610,641,643],"wasl":[2,3,28,29,104,105,141,142,150,151,181,182,371,372,450,451,535,536,561,562]},
-"103": {"ghunnah":[9,12,61,64],"idgham":[51,56,78,83],"madd":[103,104],"silent":[25,27,38,40,92,94],"wasl":[30,31,65,66]},
-"104": {"ghunnah":[70,73],"madd":[2,4,51,52,100,101,121,122],"silent":[31,33,46,48,66,68,89,91],"wasl":[13,14,69,70,81,82]},
-"105": {"idgham":[79,83,99,104,112,117,117,122,166,170],"madd":[52,53,162,163,172,174,208,209],"silent":[30,32],"wasl":[13,14,45,46,62,63,132,133,179,180,191,192,201,202]},
-"106": {"ghunnah":[6,9,32,35,99,102,129,133],"idgham":[53,58],"madd":[62,64,78,80,135,136],"wasl":[103,104]},
-"107": {"ghunnah":[18,21,84,88],"idgham":[44,45,79,84,102,106,110,114],"madd":[34,35,50,51,53,54,122,123],"wasl":[22,23,43,44,59,60,92,93]},
-"108": {"ghunnah":[18,22,68,72],"idgham":[81,85,142,143],"madd":[115,116,136,138,148,149],"qalqalah":[72,74,123,125],"silent":[30,32],"wasl":[95,96,107,108,141,142]},
-"109": {"ghunnah":[61,64,109,112,115,118,128,131,231,234,261,265],"idgham":[12,17,55,60,98,104,122,127],"madd":[34,35,75,76,226,228,267,268],"silent":[175,177,188,190],"wasl":[27,28,158,159,169,170,180,181,208,209,235,236]},
-"110": {"ghunnah":[71,74,91,95,105,108,119,122],"idgham":[14,15,37,38,78,83],"madd":[21,22,44,45,153,154],"silent":[10,12,20,21,33,35,43,44,64,66],"wasl":[13,14,36,37,109,110,123,124]},
-"111": {"ghunnah":[29,32,44,48,126,130,130,133],"idgham":[13,17],"madd":[68,69,116,117,138,139,143,144],"qalqalah":[17,19],"silent":[8,10,107,109],"wasl":[24,25]},
-"112": {"ghunnah":[53,57,76,79],"madd":[29,30,61,63,72,73,87,88,132,133],"qalqalah":[23,25,66,68]},
-"113": {"ghunnah":[32,35,69,72],"idgham":[31,32,55,59,68,69,112,116],"madd":[37,38,74,75,138,139,146,147,246,247,284,285],"silent":[265,267],"wasl":[10,11,30,31,67,68,89,90,131,132,158,159,204,205,239,240]},
-"114": {"ghunnah":[18,21],"idgham":[21,26,51,55,135,139,182,183,197,201],"madd":[35,36,76,77,100,102,109,111,148,150,160,162,237,238],"qalqalah":[139,141],"silent":[105,107],"wasl":[41,42,69,70,181,182,212,213]},
-"115": {"ghunnah":[63,66,84,87],"madd":[98,99,108,109],"qalqalah":[69,71],"silent":[56,58],"wasl":[10,11,24,25,74,75,88,89]},
-"116": {"ghunnah":[33,38],"idgham":[69,70,98,103],"madd":[42,43,47,48,58,59,75,76,78,79,105,106,109,110,114,115],"qalqalah":[38,40],"silent":[8,10],"wasl":[11,12,20,21,68,69,84,85]},
-"117": {"ghunnah":[55,60,62,65,85,89],"idgham":[9,10],"madd":[15,16,18,19,46,49,81,82,93,94],"wasl":[8,9,24,25]},
-"118": {"ghunnah":[86,90,116,120,181,184],"idgham":[126,131,205,209],"madd":[77,79,92,93,151,152,194,195,214,215],"qalqalah":[120,122,173,175],"wasl":[8,9,55,56,104,105,186,187]},
-"119": {"ghunnah":[2,5],"idgham":[39,44,50,55],"madd":[5,7,18,19,80,81,91,92],"wasl":[24,25,84,85]},
-"120": {"ghunnah":[4,8,17,20,40,43,88,91,153,157],"idgham":[39,40,218,222,226,230],"madd":[45,46,147,149,172,174,238,239],"wasl":[21,22,38,39,98,99,111,112,130,131,162,163,184,185,208,209]},
-"121": {"idgham":[104,108],"madd":[19,20,32,33,47,48,66,68,75,77,98,99,119,120,129,131,146,147,151,152],"silent":[71,73,125,127],"wasl":[25,26,141,142]},
-"122": {"ghunnah":[81,84],"madd":[2,3,7,9,16,18,52,54,111,112,116,117],"silent":[32,34],"wasl":[24,25,46,47,106,107]},
-"123": {"ghunnah":[50,54,99,102,131,134],"idgham":[17,23,42,47,58,63,89,93,116,120],"madd":[112,113,136,137],"qalqalah":[27,29,69,71,86,88],"silent":[9,11],"wasl":[2,3]},
-"124": {"ghunnah":[50,54,58,61,63,66,75,78,93,96,106,111,119,123],"idgham":[92,93,160,161],"madd":[14,17,24,25,27,28,38,39,48,49,164,165,169,170],"qalqalah":[8,10,20,22],"wasl":[7,8,159,160]},
-"125": {"ghunnah":[41,44,158,162],"idgham":[35,40,40,41,55,60,74,79,104,109,180,181,213,214,224,225],"madd":[91,92,94,95,117,119,124,127,134,135,137,138,149,150,184,186,201,202,230,231],"qalqalah":[87,89,113,115,130,132,231,232],"silent":[69,71],"wasl":[17,18,60,61,196,197,212,213,223,224]},
-"126": {"ghunnah":[121,125,166,170,196,201,201,204,236,239],"idgham":[61,66,90,91,235,236],"madd":[19,20,22,23,42,43,82,83,98,99,188,189,216,218,259,260],"qalqalah":[15,17,33,35,71,73],"wasl":[32,33,66,67,89,90,125,126,135,136,145,146,234,235,252,253]},
-"127": {"ghunnah":[93,96,101,104,109,112],"idgham":[114,115],"madd":[22,23,25,26,65,66,96,98,131,132],"qalqalah":[18,20],"wasl":[29,30,47,48,113,114,124,125]},
-"128": {"ghunnah":[44,48,63,66,130,133,138,141],"idgham":[67,72,79,84,143,144,155,156],"madd":[58,60,125,127,161,162],"qalqalah":[12,14,114,116],"wasl":[11,12,142,143,154,155]},
-"129": {"ghunnah":[136,139,144,147],"idgham":[33,39],"madd":[72,73,101,102,166,167],"qalqalah":[12,14],"silent":[53,55],"wasl":[11,12,94,95,107,108,148,149,159,160]},
-"130": {"ghunnah":[50,54,112,115],"idgham":[4,8,17,22,98,99,144,145],"madd":[34,35,37,38,67,68,89,90,117,118,148,149,153,154],"qalqalah":[30,32],"wasl":[78,79,97,98,123,124,143,144]},
-"131": {"madd":[15,16,24,26,66,67,71,72],"wasl":[61,62]},
-"132": {"ghunnah":[63,66,114,117,129,132],"idgham":[93,94,132,137],"madd":[14,16,23,24,26,27,52,53,143,144],"qalqalah":[19,21],"wasl":[67,68,75,76,92,93]},
-"133": {"ghunnah":[7,10,96,99],"idgham":[202,207,211,216],"madd":[19,21,128,129,140,141,149,151,162,163,165,166,177,178,192,193,200,201,207,208,227,228,237,238],"qalqalah":[158,160],"silent":[112,114],"wasl":[46,47]},
-"134": {"ghunnah":[9,12,13,17,91,94],"idgham":[52,57],"madd":[113,114],"qalqalah":[17,19,63,65],"silent":[102,104]},
-"135": {"idgham":[91,96],"madd":[36,37,78,79,81,82,122,123],"qalqalah":[74,76],"silent":[8,10,17,19,51,53],"wasl":[111,112]},
-"136": {"ghunnah":[15,18,39,42,64,67,195,198],"idgham":[194,195,209,214,248,253],"madd":[5,7,34,36,59,61,74,77,84,85,87,88,99,100,114,115,149,151,182,184,273,274,283,284],"qalqalah":[80,82],"silent":[7,9],"wasl":[22,23,132,133,193,194]},
-"137": {"ghunnah":[37,40,40,44,71,75,89,92,111,115],"idgham":[147,148],"madd":[29,31,46,47,164,165],"silent":[15,17,63,65,82,84],"wasl":[55,56,131,132,146,147,157,158]},
-"138": {"idgham":[53,57],"madd":[68,69,72,73,77,78],"qalqalah":[2,4,48,50],"wasl":[9,10,38,39]},
-"139": {"madd":[69,71,78,79,100,101,121,122,131,132],"madd-lazim":[11,13],"wasl":[27,28]},
-"140": {"ghunnah":[18,21,129,132,175,178,178,182,199,202,245,248],"madd":[28,29,31,32,43,44,58,59,114,115,191,192,204,205,237,238,258,259],"qalqalah":[24,26],"silent":[95,97],"wasl":[76,77,149,150,211,212,225,226]},
-"141": {"ghunnah":[9,12,13,17,91,94],"idgham":[52,57],"madd":[113,114],"qalqalah":[17,19,63,65],"silent":[102,104]},
-"142": {"ghunnah":[31,34,56,60],"idgham":[11,12,30,31,147,151,171,176],"madd":[19,21,48,49,153,155,169,170,182,183],"qalqalah":[60,62],"silent":[85,87],"wasl":[10,11,29,30,71,72,111,112,125,126]},
-"143": {"ghunnah":[28,31,75,78,161,164,221,224,228,231,258,262,362,365,378,381],"idgham":[32,36,39,45,74,75,93,94,120,125,196,200,209,210,224,228,377,378,393,398],"madd":[6,7,20,21,62,64,173,175,352,353,400,401],"qalqalah":[144,146],"silent":[53,55],"wasl":[73,74,92,93,139,140,151,152,208,209,293,294,309,310,329,330,366,367,376,377]},
-"144": {"ghunnah":[60,63,73,77,149,152,192,195,242,245,298,301],"idgham":[36,37,259,264],"madd":[42,44,82,83,186,187,222,223,290,291,311,312],"qalqalah":[2,4,24,26,68,70,97,99,106,108,180,182],"silent":[163,165,212,214],"wasl":[35,36,111,112,123,124,196,197,215,216,248,249,278,279]},
-"145": {"ghunnah":[99,102,111,115,140,144,150,154,206,209,245,248],"idgham":[62,67,166,170,200,205,254,260,266,267],"madd":[44,45,94,96,194,196,221,223,270,271,275,276],"qalqalah":[81,83,115,117,154,156],"silent":[34,36,76,78],"wasl":[18,19,37,38,177,178,233,234,265,266]},
-"146": {"ghunnah":[88,91],"idgham":[98,104],"madd":[19,20,32,33,49,50,75,77,149,150],"qalqalah":[71,73],"wasl":[25,26,125,126]},
-"147": {"ghunnah":[35,38],"idgham":[11,16],"madd":[55,56],"wasl":[44,45]},
-"148": {"ghunnah":[119,122,149,153],"idgham":[8,12],"madd":[60,61,155,156],"qalqalah":[12,14],"silent":[48,50,83,85],"wasl":[38,39,51,52,100,101,123,124]},
-"149": {"ghunnah":[74,77,130,133],"idgham":[93,98],"madd":[79,80,122,123,143,144],"qalqalah":[18,20,33,35,42,44],"wasl":[47,48,59,60,110,111]},
-"150": {"ghunnah":[85,88,144,147,246,249],"idgham":[143,144],"madd":[122,123,293,294],"qalqalah":[18,20,33,35,42,44,116,118],"silent":[99,101,194,196],"wasl":[47,48,59,60,177,178,227,228]},
-"151": {"ghunnah":[39,42],"idgham":[33,39,147,152],"madd":[4,6,71,72,116,117,178,179],"silent":[52,54,167,169],"wasl":[109,110,122,123]},
-"152": {"madd":[12,14,59,60],"silent":[38,40],"wasl":[2,3,30,31]},
-"153": {"ghunnah":[76,79],"idgham":[51,52,63,64,94,95],"madd":[2,4,70,71,98,99,103,104],"qalqalah":[55,57],"silent":[31,33,45,47,69,70],"wasl":[13,14,34,35,50,51,62,63,80,81,93,94]},
-"154": {"ghunnah":[60,64],"idgham":[21,25,77,81,86,91],"madd":[58,59,74,76,83,84,101,102],"qalqalah":[25,27],"silent":[14,16],"wasl":[44,45]},
-"155": {"ghunnah":[12,15,17,21,90,93],"idgham":[26,31,62,67,99,100,122,123],"madd":[79,80,107,108,126,127,131,132],"qalqalah":[6,8,59,61],"wasl":[34,35,46,47,70,71,85,86,98,99,121,122]},
-"156": {"ghunnah":[39,43,53,56,70,73],"idgham":[28,33],"madd":[14,16,21,22,46,48,73,75,87,88,92,93],"silent":[48,50]},
-"157": {"idgham":[32,37,37,42,59,63],"madd":[6,8,30,31,69,71,92,93],"silent":[2,4,65,67],"wasl":[81,82]},
-"158": {"ghunnah":[2,5,31,35,140,144,157,162,164,167],"idgham":[7,8,115,119],"madd":[37,39,188,189],"wasl":[6,7,17,18,44,45,65,66,80,81,168,169]},
-"159": {"ghunnah":[2,5,35,38,78,81,96,99,106,109],"idgham":[105,106,178,179],"madd":[30,32,59,60,99,100,124,125,134,136,182,183,187,188],"silent":[130,132],"wasl":[6,7,49,50,65,66,117,118,154,155,177,178]},
-"160": {"idgham":[96,97,108,109],"madd":[61,63,114,115],"silent":[23,25,37,39,50,52,57,59],"wasl":[7,8,95,96,107,108]},
-"161": {"ghunnah":[2,5,116,119],"idgham":[115,116],"madd":[59,61,103,105,131,132],"qalqalah":[125,127],"silent":[23,25,34,36,55,57],"wasl":[6,7,86,87,96,97,114,115]},
-"162": {"ghunnah":[65,68],"madd":[2,3,70,71],"wasl":[41,42]},
-"163": {"idgham":[20,24,28,33,57,58,70,71],"madd":[6,7,18,19,24,25,33,35,40,41,65,66,76,77],"wasl":[56,57,69,70]},
-"164": {"ghunnah":[2,5,69,72,128,131,136,139,152,155,193,197,254,258],"idgham":[18,19,68,69,135,136,172,173,185,190,270,274,285,286,298,299,329,330,361,366,371,375],"madd":[24,25,27,28,52,53,147,149,178,180,190,192,291,292,335,337,359,360,381,382],"madd-lazim":[264,266],"qalqalah":[100,102],"wasl":[17,18,33,34,45,46,56,57,67,68,80,81,90,91,110,111,134,135,158,159,171,172,210,211,284,285,297,298,308,309,328,329,342,343]},
-"165": {"ghunnah":[9,12,32,36,50,53,198,201,234,237],"idgham":[8,9,18,22,55,60,125,131,227,232],"madd":[108,110,166,168,261,262],"qalqalah":[262,263],"silent":[110,112,168,170],"wasl":[7,8,40,41,81,82,91,92,150,151,185,186,202,203,238,239,254,255]},
-"166": {"madd":[116,117],"qalqalah":[117,118],"silent":[34,36,61,63,72,74],"wasl":[15,16,25,26,42,43,52,53,75,76,107,108]},
-"167": {"ghunnah":[37,40,53,57,99,102,175,179,197,200],"idgham":[196,197],"madd":[108,109,138,139,152,153,181,182,200,201],"silent":[27,29,94,96],"wasl":[8,9,18,19,124,125,195,196]},
-"168": {"ghunnah":[15,18,32,35,57,62,113,116],"idgham":[14,15,66,71,99,100,133,138],"madd":[2,4,55,56,94,95,107,108,118,119,140,141],"silent":[27,29,85,87],"wasl":[13,14,41,42,98,99]},
-"169": {"ghunnah":[2,5,19,23,53,57],"idgham":[24,25],"madd":[28,30,44,46,96,97],"silent":[63,65],"wasl":[23,24,35,36,72,73]},
-"170": {"ghunnah":[40,43],"idgham":[169,174],"madd":[35,37,80,82,109,111,115,117,138,140,186,187],"silent":[30,32,60,62],"wasl":[21,22,46,47]},
-"171": {"ghunnah":[99,103,103,107,105,109,120,124],"idgham":[88,92],"madd":[85,87,96,98,141,142],"silent":[26,28],"wasl":[9,10,38,39]},
-"172": {"ghunnah":[44,48,98,102,102,105],"madd":[2,4,53,54,69,70,125,126],"qalqalah":[65,67],"silent":[31,33,39,41,85,87],"wasl":[13,14,77,78]},
-"173": {"ghunnah":[2,5,64,67,148,152,175,178],"idgham":[43,44,136,140,193,198],"madd":[75,77,90,91,154,156,200,201],"wasl":[28,29,42,43,59,60,101,102,116,117,179,180]},
-"174": {"ghunnah":[2,5,35,38,90,95,156,159],"idgham":[155,156],"madd":[30,32,61,62,83,84,108,110,205,206,251,252],"silent":[104,106],"wasl":[6,7,41,42,54,55,154,155,183,184,198,199]},
-"175": {"ghunnah":[117,120],"idgham":[36,37,116,117],"madd":[6,8,42,43,93,95,120,121],"silent":[2,4,32,34],"wasl":[13,14,23,24,35,36,50,51,62,63,75,76,115,116]},
-"176": {"ghunnah":[12,15,58,61,112,116],"madd":[2,3,39,40,96,97,119,120],"qalqalah":[120,121],"silent":[82,84],"wasl":[16,17,32,33,45,46,62,63,72,73,89,90]},
-"177": {"ghunnah":[19,23,84,87,178,181],"idgham":[177,178,282,283,295,296,316,317,337,338,358,359,416,417,450,451],"madd":[81,82,152,154,170,171,186,187,222,223,251,252,266,267,299,301,344,345,365,366,404,405,420,421,442,444,457,459,486,488,521,523,543,544],"qalqalah":[276,278],"silent":[29,31,343,344,364,365,410,412,482,484,510,512,517,519],"wasl":[8,9,51,52,65,66,88,89,112,113,122,123,132,133,145,146,163,164,176,177,199,200,230,231,244,245,259,260,275,276,281,282,294,295,315,316,336,337,357,358,371,372,415,416,433,434,449,450,470,471,493,494,533,534]},
-"178": {"ghunnah":[129,132,142,145,186,190,198,202,246,250,291,295],"idgham":[264,269,269,274],"madd":[2,4,166,167,222,224,244,245,250,251,319,320,331,332,345,346],"qalqalah":[105,107,117,119],"silent":[31,33],"wasl":[13,14,52,53,67,68,78,79,89,90,100,101,112,113,124,125,137,138,190,191,203,204,300,301]},
-"179": {"idgham":[31,35],"madd":[29,30,35,37,54,55,77,78],"silent":[28,29,39,41],"wasl":[13,14,45,46]},
-"180": {"ghunnah":[54,58],"madd":[90,91,155,156],"qalqalah":[107,109],"wasl":[42,43,71,72,102,103,119,120,145,146]},
-"181": {"ghunnah":[5,8,42,45,95,98],"madd":[16,17,36,37,47,49,58,59,90,92,119,120],"wasl":[66,67,99,100]},
-"182": {"ghunnah":[22,26,42,47,92,95],"idgham":[15,20,110,115],"madd":[71,73,117,118],"wasl":[96,97]},
-"183": {"ghunnah":[94,98],"idgham":[53,54],"madd":[2,4,126,127],"qalqalah":[98,100],"silent":[31,33],"wasl":[13,14,52,53,82,83]},
-"184": {"ghunnah":[22,26,28,32,38,41,70,74,143,147,161,165,167,171,184,189,212,216,242,246,246,249],"idgham":[7,13,41,46,80,85,199,204,230,235],"madd":[20,21,134,135,206,207,260,261],"qalqalah":[138,140],"silent":[222,224],"wasl":[112,113]},
-"185": {"ghunnah":[28,31,63,66,118,122,129,132,162,166,196,200],"idgham":[56,62,62,63,81,86,136,137,206,211],"madd":[23,25,79,80,362,363,390,391],"silent":[307,309,335,337],"wasl":[17,18,40,41,89,90,101,102,135,136,238,239,253,254,284,285,310,311,338,339]},
-"186": {"ghunnah":[28,31,37,40],"idgham":[68,69],"madd":[153,154],"silent":[106,108,126,128],"wasl":[67,68]},
-"187": {"ghunnah":[67,70,91,94,110,113,131,134,141,144,162,165,201,204,229,232,388,391,396,399,447,450,455,458,574,577],"idgham":[25,26,36,37,77,82,103,108,404,405,573,574],"madd":[56,58,215,216,221,222,439,440,463,464,483,484,535,536,564,565,569,570,600,601],"qalqalah":[236,238,337,339,381,383,520,522],"silent":[243,245,279,281,292,294,400,402],"wasl":[24,25,35,36,121,122,209,210,235,236,257,258,284,285,322,323,332,333,349,350,359,360,376,377,403,404,420,421,476,477,504,505,551,552]},
-"188": {"ghunnah":[30,34,40,44,133,136,156,159],"idgham":[112,118,132,133],"madd":[14,16,25,26,49,50,71,73,127,128,170,171],"qalqalah":[59,61],"silent":[16,18,64,66,103,105],"wasl":[44,45,80,81,131,132,142,143]},
-"189": {"ghunnah":[57,60,97,101,122,126,142,145],"idgham":[56,57],"madd":[47,48,139,140,201,202,248,249],"qalqalah":[197,199],"silent":[106,108,176,178,217,219],"wasl":[20,21,66,67,84,85,109,110,146,147,160,161,179,180,210,211,220,221]},
-"190": {"ghunnah":[81,84],"madd":[4,5,47,48,74,76,116,117],"silent":[10,12,76,78],"wasl":[25,26,33,34,85,86,105,106]},
-"191": {"ghunnah":[140,143,200,204],"idgham":[51,56],"madd":[127,128,179,180,204,205,234,235,244,246,254,255,259,260],"qalqalah":[3,5,218,220],"wasl":[2,3,82,83,107,108,144,145,156,157,217,218,249,250]},
-"192": {"ghunnah":[8,11,22,25],"idgham":[40,45],"madd":[47,48],"silent":[15,17],"wasl":[7,8,26,27]},
-"193": {"ghunnah":[79,82],"idgham":[42,46,55,56,119,120],"madd":[4,5,101,102,123,124,128,129],"qalqalah":[97,99],"silent":[86,88],"wasl":[54,55,78,79,118,119]},
-"194": {"ghunnah":[65,69,187,190],"idgham":[1,2,24,25],"madd":[55,56,180,182,214,215],"silent":[105,107,160,162,182,184],"wasl":[10,11,23,24,33,34,46,47,74,75,97,98,130,131,153,154,163,164,173,174,191,192,204,205]},
-"195": {"ghunnah":[4,7,100,103],"idgham":[70,71],"madd":[93,95,131,132],"silent":[10,12,46,48,95,97],"wasl":[25,26,69,70,104,105,120,121]},
-"196": {"ghunnah":[6,9,169,173,179,182,242,246,276,280,291,294,301,305,421,425,478,482,488,492,595,598],"idgham":[182,187,209,215,215,220,237,242,379,384,502,507],"madd":[163,164,203,205,226,227,284,286,408,409,492,493,525,526,588,590,622,623],"qalqalah":[92,94,137,139,149,151,232,234,370,372,391,393,440,442,623,624],"silent":[10,12,112,114,568,570,590,592],"wasl":[13,14,24,25,70,71,87,88,144,145,315,316,333,334,348,349,365,366,427,428,536,537,548,549,561,562,571,572,581,582,599,600,615,616]},
-"197": {"ghunnah":[30,34,36,40,50,53,185,188],"idgham":[16,21,145,149,197,198,206,207],"madd":[28,29,231,233,250,251],"qalqalah":[210,212,251,252],"silent":[132,134,178,180,235,237],"wasl":[54,55,108,109,158,159,196,197,205,206,219,220,241,242]},
-"198": {"ghunnah":[28,32,99,103,124,127,185,189,189,192,197,201],"idgham":[47,53,53,58,83,88,192,197,217,218],"madd":[72,74,97,98,175,176,207,208,226,227],"madd-lazim":[221,223],"qalqalah":[32,34,201,203],"silent":[39,41,111,113],"wasl":[103,104,114,115,128,129,140,141,153,154,216,217]},
-"199": {"ghunnah":[2,5,39,42,73,76],"idgham":[38,39,91,96],"madd":[98,99],"silent":[14,16,60,62],"wasl":[37,38,48,49,63,64,77,78]},
-"200": {"ghunnah":[99,104,111,114],"idgham":[16,21,110,111,120,124,154,155],"madd":[23,24,72,74,137,139,174,175,202,203],"qalqalah":[203,204],"silent":[43,45],"wasl":[35,36,46,47,109,110,153,154,180,181]},
-"201": {"ghunnah":[112,115],"idgham":[8,13,13,17,47,48,64,68,92,96,111,112],"madd":[30,32,115,116],"wasl":[46,47,72,73,110,111]},
-"202": {"ghunnah":[31,34],"idgham":[26,31],"madd":[6,8,71,72],"qalqalah":[72,73],"silent":[2,4,43,45],"wasl":[48,49,64,65]},
-"203": {"ghunnah":[47,51,53,57,107,111,194,197],"idgham":[33,38],"madd":[23,25,45,46,84,86,123,125,187,189,219,220],"silent":[10,12,167,169,189,191],"wasl":[2,3,13,14,149,150,160,161,170,171,180,181]},
-"204": {"ghunnah":[9,12],"idgham":[8,9,18,22,58,59],"madd":[39,40,53,54,110,111,134,135],"silent":[52,53],"wasl":[7,8,45,46,57,58,79,80,127,128]},
-"205": {"ghunnah":[82,85],"idgham":[81,82],"madd":[119,120],"qalqalah":[120,121],"wasl":[29,30,68,69,80,81,92,93,112,113]},
-"206": {"ghunnah":[84,87],"madd":[78,79,108,109],"qalqalah":[109,110],"wasl":[19,20,26,27,45,46,58,59,101,102]},
-"207": {"ghunnah":[9,12,83,87],"idgham":[8,9,18,22],"madd":[44,46,95,96],"qalqalah":[38,40,96,97],"wasl":[7,8,37,38,59,60,69,70,88,89]},
-"208": {"ghunnah":[113,116],"idgham":[50,51,67,71,99,100,133,138],"madd":[2,4,94,95,107,108,118,119,140,141],"madd-lazim":[61,63],"qalqalah":[35,37],"silent":[31,33,42,44,85,87],"wasl":[13,14,34,35,49,50,98,99]},
-"209": {"ghunnah":[4,8,20,23,76,79],"idgham":[14,19],"madd":[35,37,56,57,69,71,100,101],"silent":[71,73],"wasl":[46,47,62,63,80,81]},
-"210": {"ghunnah":[7,10],"idgham":[26,30,58,63],"madd":[21,23,86,88,146,147],"wasl":[41,42,66,67,79,80,104,105,122,123,139,140]},
-"211": {"ghunnah":[57,61,106,109,134,137],"idgham":[43,48,68,72,74,78],"madd":[9,11,18,20,40,41,121,123,161,162],"qalqalah":[162,163],"wasl":[95,96,138,139,154,155]},
-"212": {"idgham":[42,43,167,171],"madd":[37,38,140,141,173,175,191,192],"qalqalah":[192,193],"silent":[26,28,36,37,89,91,112,114],"wasl":[29,30,41,42,71,72,94,95,104,105,133,134,148,149]},
-"213": {"ghunnah":[8,11,17,20,31,35,52,55,81,84,94,97,151,154,235,238,280,285],"idgham":[7,8,21,25,51,52,150,151,403,407,427,432],"madd":[25,26,60,61,116,117,250,252,271,272,381,382,409,411,425,426,438,439],"silent":[175,177,329,331,348,350],"wasl":[6,7,42,43,50,51,109,110,122,123,149,150,165,166,190,191,213,214,261,262,303,304,311,312,338,339,362,363,385,386]},
-"214": {"ghunnah":[18,22,37,40,47,50,91,95,248,251],"idgham":[60,65,101,106,133,134,176,177],"madd":[125,127,140,142,215,216,243,245,271,272],"qalqalah":[9,11,22,24,95,97,272,273],"silent":[29,31,86,88,156,158,206,208],"wasl":[32,33,70,71,116,117,132,133,175,176,188,189,231,232,259,260]},
-"215": {"ghunnah":[24,27,45,48,65,69,180,184,186,189],"idgham":[52,57,142,143],"madd":[40,42,75,76,111,112,126,127,202,203,208,209],"qalqalah":[48,50,92,94,136,138],"silent":[167,169],"wasl":[87,88,104,105,119,120,135,136,141,142,190,191]},
-"216": {"ghunnah":[63,67,120,124,186,189],"idgham":[41,46,83,88,98,103,139,144,153,158],"madd":[57,60,114,117,204,205],"silent":[74,76,130,132],"wasl":[18,19,165,166]},
-"217": {"ghunnah":[47,51,66,70,92,96,117,121,191,194,298,302,348,351,356,360,389,393,486,489],"idgham":[21,22,80,84,333,337,434,435,485,486],"madd":[124,125,171,172,262,263,322,323,365,366,399,401,421,422,467,469,480,481,507,508,512,513],"qalqalah":[343,345],"silent":[326,328,395,397,463,465],"wasl":[20,21,30,31,102,103,128,129,140,141,195,196,205,206,231,232,315,316,433,434,446,447,484,485]},
-"218": {"ghunnah":[2,5],"idgham":[139,144],"madd":[54,55,89,91,146,147],"silent":[24,26,47,49,60,62,85,87],"wasl":[6,7,29,30,75,76,115,116,125,126]},
-"219": {"ghunnah":[64,68,89,92,163,166],"idgham":[72,76,88,89,122,127],"madd":[56,58,80,81,108,110,191,192,230,231,257,258],"wasl":[20,21,32,33,177,178,207,208,222,223]},
-"220": {"ghunnah":[99,103,219,222],"idgham":[5,6,78,83,93,97],"madd":[59,60,124,125,189,191,243,244],"wasl":[4,5,17,18,52,53,134,135,151,152,168,169,194,195,223,224]},
-"221": {"ghunnah":[8,11,46,49,127,130,265,268,304,307,365,368],"idgham":[59,64,78,83,83,88,95,99,180,185,197,202,202,207,212,216,264,265,364,365],"madd":[28,29,240,242,288,290,336,337,355,356,360,361,395,396],"qalqalah":[177,179,249,251,284,286],"silent":[14,16,133,135,168,170,236,238,290,292],"wasl":[17,18,136,137,263,264,274,275,299,300,312,313]},
-"222": {"ghunnah":[46,51,66,69,108,111,160,163,197,200],"idgham":[65,66,218,219],"madd":[71,73,225,226,256,257],"qalqalah":[99,101,122,124],"silent":[61,63],"wasl":[22,23,51,52,64,65,80,81,187,188,201,202,217,218,242,243]},
-"223": {"ghunnah":[51,54,83,86,129,132],"idgham":[18,23,134,139],"madd":[4,6,122,124,141,142,169,170],"silent":[35,37,76,78,102,104,124,126],"wasl":[95,96,105,106,115,116,158,159]},
-"224": {"ghunnah":[54,58,103,106],"idgham":[33,38,102,103],"madd":[44,45,132,133],"qalqalah":[8,10],"silent":[15,17,64,66,77,79,91,93],"wasl":[18,19,101,102,112,113]},
-"225": {"ghunnah":[78,82],"idgham":[30,31,65,69],"madd":[41,43,50,51,62,63,129,130],"wasl":[19,20,29,30,109,110]},
-"226": {"ghunnah":[68,72,74,78,88,91],"idgham":[24,29,106,111],"madd":[31,33,78,80,113,114],"wasl":[92,93]},
-"227": {"ghunnah":[32,35],"idgham":[18,19],"madd":[24,25,56,57],"silent":[14,16],"wasl":[17,18,36,37]},
-"228": {"ghunnah":[36,39,43,46,84,87,138,141,144,148,148,151,158,161,208,211,229,232,279,282,306,309,347,350],"idgham":[64,68,90,94,270,275,329,330,358,362],"madd":[14,15,51,52,61,63,124,126,239,240,257,259,268,269,382,383],"silent":[259,261],"wasl":[2,3,114,115,164,165,174,175,184,185,290,291,312,313,362,363]},
-"229": {"ghunnah":[32,36,60,64,98,102,114,117,134,137],"idgham":[1,2,73,77,157,161,344,348,393,394],"madd":[7,8,71,72,117,119,152,154,166,168,296,297,380,382,397,398,402,403],"silent":[109,111,376,378],"wasl":[193,194,241,242,282,283,313,314,364,365,392,393]},
-"230": {"ghunnah":[4,8,40,43,59,62,87,91,147,151,151,154],"idgham":[129,133,159,163,231,235],"madd":[35,36,81,82,124,126,142,144,154,156,241,242],"wasl":[178,179,203,204]},
-"231": {"ghunnah":[22,25,51,54,68,71,99,102,132,135,302,305,357,361,401,404],"idgham":[21,22,113,117,142,148,164,168,249,254,316,321],"madd":[27,29,177,178,205,206,222,224,232,233,297,299,331,332,363,364,394,396,432,433],"qalqalah":[13,15,187,189],"silent":[157,159,224,226,262,264,374,376,396,398],"wasl":[20,21,236,237,254,255,274,275,324,325,337,338,367,368,377,378,387,388,405,406]},
-"232": {"ghunnah":[22,25,51,54,72,75,82,85,101,104,131,135,172,176,182,185,290,293],"idgham":[21,22,78,82],"madd":[27,29,96,97,115,116,150,151,168,169,232,233,308,309],"qalqalah":[13,15,260,262],"silent":[120,122],"wasl":[20,21,135,136,199,200,209,210,219,220,269,270]},
-"233": {"ghunnah":[38,41,88,91,140,143,156,159,235,239,346,350,377,381,425,429,515,519,568,571],"idgham":[82,86,93,94,264,269,354,359,416,417,498,503],"madd":[7,8,12,13,33,34,130,131,229,230,271,272,283,284,313,314,439,441,450,451,503,505,561,563,602,603],"madd-lazim":[221,223],"silent":[441,443,541,543,563,565],"wasl":[2,3,92,93,113,114,162,163,293,294,519,520,534,535,544,545,554,555,572,573]},
-"234": {"ghunnah":[28,31,75,78,82,85,113,118,141,144,193,196,200,203],"idgham":[54,59,104,108],"madd":[52,53,188,190,251,252],"wasl":[2,3,206,207,221,222]},
-"235": {"ghunnah":[41,45,65,68,86,89,99,102,126,129,149,152,179,182,200,204,262,265,325,328,357,360,396,399],"idgham":[64,65,160,165,218,224,230,235,261,262],"madd":[47,48,70,72,94,96,157,158,195,197,295,296,307,308,318,320,352,354,389,391,420,421],"qalqalah":[56,58,253,255,281,283],"silent":[210,212,248,250,320,322,391,393],"wasl":[63,64,116,117,260,261,288,289,311,312,329,330,369,370,382,383,400,401]},
-"236": {"ghunnah":[26,30,42,45,71,74,96,99,122,125,189,194],"idgham":[41,42,108,112],"madd":[47,49,151,152,181,182,187,188,232,233],"qalqalah":[33,35,166,168],"silent":[89,91],"wasl":[40,41,132,133,161,162,195,196,221,222]},
-"237": {"ghunnah":[4,8,20,23,26,30,37,41,49,52,75,78,87,91,180,183,193,197,236,239,267,270],"idgham":[123,127,179,180,217,218],"madd":[118,120,167,168,201,203,301,302],"qalqalah":[11,13,30,32,57,59,171,173,208,210,221,223],"silent":[148,150,203,205,241,243],"wasl":[151,152,178,179,244,245,271,272]},
-"238": {"idgham":[18,19,33,34],"madd":[2,3,26,27,40,41,77,78,82,83],"silent":[8,10,39,40,64,66],"wasl":[17,18,32,33,44,45]},
-"239": {"ghunnah":[40,45,56,59],"idgham":[98,103],"madd":[49,51,129,130],"silent":[72,74,118,120],"wasl":[64,65,75,76]},
-"240": {"ghunnah":[28,31,124,128,191,194,198,201],"idgham":[54,59,65,70,81,86,204,209,215,219],"madd":[52,53,76,77,88,89,186,188,239,240],"qalqalah":[137,139],"wasl":[2,3,99,100,219,220]},
-"241": {"ghunnah":[25,29],"madd":[15,16,23,24,66,67],"wasl":[30,31,56,57]},
-"242": {"madd":[4,5,40,41,45,46,67,68],"wasl":[20,21]},
-"243": {"ghunnah":[40,44,120,123,138,141,171,174,185,188,200,203],"idgham":[170,171,199,200],"madd":[46,47,130,131,182,183,219,220],"silent":[35,37,115,117],"wasl":[18,19,76,77,101,102,142,143,169,170,198,199]},
-"244": {"ghunnah":[49,52],"madd":[4,5,42,44,73,74],"silent":[10,12,44,46],"wasl":[25,26,35,36,53,54]},
-"245": {"ghunnah":[3,7,47,52,80,85],"idgham":[91,95],"madd":[56,57,63,64,69,71,143,144],"qalqalah":[19,21,105,107,116,118],"silent":[118,119],"wasl":[9,10,26,27,95,96]},
-"246": {"ghunnah":[31,34,57,60,184,188,315,319,348,351,436,440],"idgham":[97,102,126,132,407,413,442,443],"madd":[37,39,46,48,71,74,134,135,226,227,254,256,268,269,321,322,336,338,446,447,451,452],"qalqalah":[108,110,298,300,307,309,332,334],"silent":[86,88,232,234,241,243,391,393],"wasl":[18,19,107,108,152,153,204,205,286,287,371,372,422,423,441,442]},
-"247": {"ghunnah":[29,32,74,79,89,92,208,211,261,265],"idgham":[183,188,319,323],"madd":[82,84,228,229,252,253,315,316,325,327,342,343,352,353],"qalqalah":[43,45],"silent":[84,86],"wasl":[33,34,108,109,147,148,191,192,212,213,220,221,267,268,279,280,291,292,332,333]},
-"248": {"ghunnah":[29,32,128,131,200,203,236,240,240,243],"idgham":[54,58,70,71,95,100,100,105,123,128,224,229,243,248],"madd":[49,51,164,165,189,191,210,211,254,255],"wasl":[69,70,182,183]},
-"249": {"ghunnah":[4,7,46,49,69,73,78,82,84,88,111,114,143,146,152,155,187,191,249,252,382,385,391,394,425,429,432,436,458,462,468,472],"idgham":[120,125,232,238,396,401,420,425,504,505],"madd":[148,149,155,157,198,199,263,264,299,300,360,361,403,404,508,509,513,514],"qalqalah":[60,62,130,132],"silent":[209,211,290,292,307,309,407,409],"wasl":[27,28,50,51,170,171,272,273,328,329,368,369,410,411,480,481,490,491,503,504]},
-"250": {"ghunnah":[4,7,115,118],"idgham":[86,91],"madd":[41,42,59,61,145,146,150,151],"qalqalah":[83,85,101,103],"silent":[16,18,49,51],"wasl":[114,115,130,131,140,141]},
-"251": {"ghunnah":[11,15,116,119,157,160,172,176,212,215],"idgham":[156,157,181,186],"madd":[44,45,65,66,112,113,125,127,209,210,246,247,251,252],"wasl":[22,23,69,70,77,78,89,90,147,148,155,156,195,196,216,217,241,242]},
-"252": {"ghunnah":[59,62],"madd":[12,13,83,84],"wasl":[16,17,46,47,72,73]},
-"253": {"ghunnah":[65,69,244,247,260,263,360,364,415,418],"idgham":[8,9,51,56,60,65,111,115,254,259,331,336,355,360],"madd":[109,110,158,159,173,174,204,206,275,277,296,297,304,305,378,380,412,413,444,445],"qalqalah":[134,136,169,171,222,224,396,398,445,446],"silent":[320,322,405,407],"wasl":[7,8,75,76,133,134,148,149,185,186,209,210,221,222,231,232,286,287,310,311,383,384,395,396,419,420]},
-"254": {"ghunnah":[37,40,48,51,69,73,108,112],"idgham":[64,69,80,84,96,101,128,132,144,148,168,169],"madd":[2,4,30,32,61,62,140,141,153,154,172,173,177,178],"qalqalah":[57,59,73,75],"silent":[32,34,43,45],"wasl":[13,14,148,149,167,168]},
-"255": {"ghunnah":[141,145,166,169],"idgham":[75,79,88,93,106,107,266,271,325,326],"madd":[10,12,17,18,68,69,95,96,112,113,115,116,171,173,191,192,282,284,300,302,331,332,334,335,366,367,405,406],"wasl":[33,34,42,43,105,106,129,130,147,148,324,325,340,341,387,388,398,399]},
-"256": {"ghunnah":[105,108,167,170],"idgham":[20,21,30,31,44,45,71,75,85,86],"madd":[2,4,89,90,204,205],"wasl":[19,20,43,44,58,59,84,85,109,110,124,125,138,139,150,151,166,167,184,185]},
-"257": {"ghunnah":[76,79,158,161,209,212],"idgham":[47,52,56,57,75,76,124,125,148,153,157,158,172,173,208,209],"madd":[64,65,101,103,114,116,128,129,180,181,190,192,203,204,230,231,235,236],"silent":[34,36,103,105,186,188],"wasl":[16,17,55,56,74,75,85,86,123,124,156,157,171,172,207,208]},
-"258": {"ghunnah":[206,209],"idgham":[229,230,342,343],"madd":[40,41,43,44,58,60,72,73,111,112,114,115,140,141,171,172,195,196,198,199,346,347,351,352],"madd-lazim":[28,30],"qalqalah":[36,38,107,109,191,193],"wasl":[18,19,76,77,84,85,126,127,210,211,228,229,243,244,273,274,294,295,311,312,331,332,341,342]},
-"259": {"ghunnah":[80,83,160,164,164,167,238,242,273,277,278,281,324,327,333,336,383,386,393,396,425,428,436,439,456,461,463,466,501,504,531,535],"idgham":[35,39,377,382,382,383],"madd":[92,93,96,97,176,177,482,483,537,538],"qalqalah":[362,364],"silent":[149,151,262,264],"wasl":[7,8,102,103,139,140,277,278,332,333,392,393,405,406,505,506]},
-"260": {"ghunnah":[87,91,122,125,182,185,197,200,236,239,245,250,250,253,261,264,297,300],"idgham":[109,114,156,161,165,166,227,232,282,287],"madd":[19,20,22,23,106,107,321,322],"qalqalah":[15,17,116,118,202,204,255,257],"wasl":[54,55,164,165,201,202,254,255,287,288,301,302]},
-"261": {"ghunnah":[20,23,83,85,121,123],"idgham":[127,132,145,149,171,175],"madd":[35,36,161,162,177,179,194,195,204,205],"qalqalah":[93,95],"silent":[132,134],"wasl":[8,9,55,56,149,150,184,185]},
-"262": {"ghunnah":[12,15,57,60,84,87,95,98,134,137],"idgham":[97,102,110,116],"madd":[27,28,79,81,104,106,191,192],"qalqalah":[123,125],"silent":[90,92],"wasl":[47,48]},
-"263": {"ghunnah":[41,45],"idgham":[5,10,16,20,36,41,50,54,68,73],"madd":[62,64,93,94],"wasl":[73,74]},
-"264": {"ghunnah":[61,65,70,73,98,101,124,127,225,229,246,250,302,305],"idgham":[123,124,265,271,297,302],"madd":[2,4,56,57,111,112,117,119,189,190,238,239,258,259,354,355,359,360],"qalqalah":[40,42,275,277],"silent":[31,33,47,49,314,316],"wasl":[13,14,65,66,76,77,88,89,122,123,148,149,158,159,168,169,319,320,339,340,349,350]},
-"265": {"ghunnah":[21,24,95,98,116,119,120,124,151,155,213,217],"idgham":[84,90,189,194,221,225],"madd":[36,37,51,53,255,256],"qalqalah":[45,47,127,129,201,203],"wasl":[9,10,44,45,66,67,225,226]},
-"266": {"ghunnah":[23,27,41,44,71,75,83,87,123,127,183,187,218,222,230,234],"idgham":[45,50,50,55,59,63,132,133],"madd":[37,38,104,105,112,113,140,141,172,173,191,193,207,209,250,251,289,290,316,317],"qalqalah":[75,77],"wasl":[95,96,131,132,156,157,234,235,266,267,281,282]},
-"267": {"ghunnah":[37,40,48,52,80,83,130,133,159,162,176,180,202,206,238,241],"idgham":[102,107],"madd":[2,4,30,32,57,58,83,85,197,199,231,233,262,263],"qalqalah":[69,71,92,94,263,264],"silent":[32,34,43,45,136,138,213,215,233,235],"wasl":[13,14,110,111,139,140,224,225,242,243]},
-"268": {"ghunnah":[46,50],"idgham":[1,2,82,87,94,99,111,116],"madd":[9,10,59,61,126,127,136,137],"qalqalah":[29,31],"wasl":[24,25,50,51,66,67,116,117]},
-"269": {"ghunnah":[78,83],"idgham":[22,26,37,41,87,92],"madd":[28,30,112,114,134,135],"qalqalah":[62,64,135,136],"silent":[117,119,122,124],"wasl":[8,9,46,47,125,126]},
-"270": {"ghunnah":[9,12,59,63,65,68,117,120],"idgham":[16,21,21,26,46,51,51,56,97,98],"madd":[4,6,87,88,101,102,120,121],"qalqalah":[12,14],"wasl":[69,70]},
-"271": {"ghunnah":[2,6,33,36,47,51,123,126,131,135],"idgham":[15,16,99,104,126,131],"madd":[23,24,82,84,181,182],"qalqalah":[6,8],"silent":[11,13],"wasl":[14,15,73,74,151,152]},
-"272": {"ghunnah":[35,38,76,79,95,99,103,106,121,124,172,175,216,219],"idgham":[57,61,191,195],"madd":[22,23,32,33,63,65,144,146,234,235],"qalqalah":[138,140,151,153],"silent":[82,84,178,180],"wasl":[39,40,137,138,156,157]},
-"273": {"ghunnah":[81,86,163,167,197,200,223,226,242,246,248,251],"idgham":[141,142,196,197,212,217],"madd":[10,12,130,132,172,173,264,265,270,271],"silent":[34,36,229,231],"wasl":[15,16,49,50,88,89,111,112,140,141,195,196,252,253]},
-"274": {"ghunnah":[12,15,32,36,49,52,77,81,101,104],"idgham":[48,49,62,67],"madd":[27,28,158,159],"qalqalah":[90,92],"wasl":[36,37,47,48]},
-"275": {"ghunnah":[131,134,151,154,241,245,282,285,376,379],"idgham":[23,24,93,94,176,177,226,227,262,267,267,272,375,376],"madd":[30,31,101,102,121,122,144,146,183,184,233,234,245,247,251,252,277,278,296,297,319,321,357,359,370,371,397,398,402,403],"silent":[29,30,31,33,146,148,182,183,184,186,232,233,234,236,353,355],"wasl":[22,23,70,71,92,93,110,111,158,159,175,176,197,198,205,206,225,226,281,282,328,329,374,375]},
-"276": {"idgham":[18,19,40,41],"madd":[25,26,48,49,93,94],"silent":[24,25,26,28],"wasl":[9,10,17,18,39,40,54,55]},
-"277": {"ghunnah":[2,5,122,125],"idgham":[40,41,67,68,91,92],"madd":[44,45,49,50,74,75,98,99,179,180],"qalqalah":[111,113],"silent":[24,26,36,38,63,65,73,74,87,89,97,98],"wasl":[6,7,39,40,66,67,90,91]},
-"278": {"ghunnah":[93,97,97,100],"idgham":[79,80,100,105],"madd":[2,4,86,88,111,112],"silent":[31,33,41,43,59,61,85,86,88,90],"wasl":[13,14,34,35,44,45,78,79]},
-"279": {"ghunnah":[76,80],"idgham":[4,9,43,48],"madd":[70,71,110,111,148,149],"qalqalah":[80,82],"silent":[21,23,33,35],"wasl":[51,52]},
-"280": {"ghunnah":[4,8,23,27,58,62,90,94,94,97],"idgham":[52,56,78,83],"madd":[108,109],"silent":[70,72]},
-"281": {"ghunnah":[17,22,54,57],"idgham":[79,84],"madd":[114,115],"silent":[9,11],"wasl":[2,3,44,45]},
-"282": {"ghunnah":[48,51,51,55,82,85,84,89,130,134,312,317,319,323,554,557,557,561,591,595,720,724,796,799,876,880,904,908,1056,1060,1074,1077,1087,1091],"idgham":[75,80,168,172,399,403,481,486,500,505,535,539,576,577,667,668,821,822,1036,1040,1050,1054],"madd":[2,4,30,32,66,69,282,283,436,437,584,586,608,609,634,635,675,677,713,715,761,764,773,774,777,778,827,828,841,844,861,863,871,873,890,891,989,991,1079,1080,1170,1171],"madd-lazim":[1024,1026],"qalqalah":[140,142,213,215,292,294,445,447,787,789,812,814,837,839],"silent":[32,34,464,466,695,697,715,717,863,865,991,993,1067,1069,1106,1108],"wasl":[13,14,89,90,135,136,195,196,229,230,246,247,267,268,327,328,344,345,440,441,452,453,539,540,575,576,641,642,666,667,800,801,1099,1100,1109,1110,1133,1134,1143,1144]},
-"283": {"ghunnah":[4,8,8,11,51,56,75,79,99,103,106,111,234,237,248,252],"idgham":[26,30,62,67,200,201,216,220],"madd":[60,61,143,144,150,151,179,180,206,207,239,241,258,259,292,293],"qalqalah":[67,69],"silent":[42,44,196,198],"wasl":[121,122,129,130,164,165,199,200,262,263]},
-"284": {"ghunnah":[55,59,78,81,114,118,208,212],"idgham":[18,19,144,148,169,173],"madd":[24,25,27,28,73,75,150,152,175,177,214,215],"qalqalah":[59,61,110,112],"silent":[64,66],"wasl":[17,18,41,42,121,122,182,183]},
-"285": {"ghunnah":[28,31],"idgham":[9,10,45,50,166,171,171,176],"madd":[23,25,55,56,104,106,114,115,126,127,138,139,182,183,256,257],"silent":[192,194],"wasl":[8,9,59,60,90,91,249,250]},
-"286": {"ghunnah":[193,198,232,236,263,266,310,313,347,350,366,369],"idgham":[123,128],"madd":[118,120,133,135,185,187,212,213,298,299,342,344,358,359,396,397,401,402],"qalqalah":[236,238],"wasl":[14,15,82,83,220,221,302,303,317,318,333,334,365,366,381,382,391,392]}
+"1": {"madd_6":[40,42,42,44]},
+"2": {"idghaam_no_ghunnah":[39,45],"madd_2":[2,3,15,16],"madd_246":[54,55],"hamzat_wasl":[8,9]},
+"3": {"ghunnah":[63,66],"ikhfa":[84,87],"lam_shamsiyyah":[48,49],"madd_2":[55,56,76,77],"madd_246":[89,90],"qalqalah":[72,74],"silent":[54,55],"hamzat_wasl":[24,25,47,48]},
+"4": {"ikhfa":[33,36,57,60,65,69],"madd_246":[105,106],"madd_munfasil":[28,30,52,54],"qalqalah":[69,71],"hamzat_wasl":[2,3,80,81]},
+"5": {"idghaam_ghunnah":[23,29],"idghaam_no_ghunnah":[29,34],"madd_246":[73,74],"madd_muttasil":[6,8,50,52],"silent":[2,4,46,48],"hamzat_wasl":[62,63]},
+"6": {"ghunnah":[2,5],"ikhfa":[50,53,74,77],"madd_246":[96,97],"madd_muttasil":[30,32],"silent":[23,25],"hamzat_wasl":[6,7]},
+"7": {"idghaam_ghunnah":[86,90],"madd_2":[70,71,82,83],"madd_246":[109,110],"madd_munfasil":[60,63],"qalqalah":[66,68],"hamzat_wasl":[7,8]},
+"8": {"ghunnah":[9,12,33,36],"ikhfa_shafawi":[81,85],"idghaam_ghunnah":[18,22],"lam_shamsiyyah":[8,9],"madd_246":[93,94],"hamzat_wasl":[7,8,40,41,52,53,62,63]},
+"9": {"ikhfa":[72,75],"madd_2":[4,5],"madd_246":[96,97],"madd_munfasil":[67,69],"silent":[41,43],"hamzat_wasl":[13,14,23,24]},
+"10": {"ikhfa":[21,25],"iqlab":[74,78],"idghaam_ghunnah":[48,53],"idghaam_shafawi":[13,18],"madd_246":[100,101],"silent":[89,91],"hamzat_wasl":[35,36]},
+"11": {"ghunnah":[63,66],"madd_246":[85,86],"madd_munfasil":[56,58],"silent":[34,36,58,60],"hamzat_wasl":[41,42]},
+"12": {"ghunnah":[9,12],"idghaam_no_ghunnah":[44,49],"madd_2":[41,42],"madd_246":[59,60],"madd_munfasil":[4,6],"hamzat_wasl":[22,23]},
+"13": {"ghunnah":[49,52,115,118],"idghaam_no_ghunnah":[149,154],"lam_shamsiyyah":[48,49,93,94,129,130],"madd_2":[146,147],"madd_246":[164,165],"madd_munfasil":[36,38,61,63,81,83,110,112],"madd_muttasil":[101,103,137,139],"silent":[29,31,63,65],"hamzat_wasl":[47,48,92,93,128,129]},
+"14": {"ghunnah":[52,55,108,111,124,127],"madd_2":[85,86],"madd_246":[150,151],"madd_munfasil":[42,44,101,103],"silent":[13,15,34,36,44,46,71,73,103,105],"hamzat_wasl":[16,17]},
+"15": {"madd_2":[52,53],"madd_246":[68,69]},
+"16": {"lam_shamsiyyah":[36,37],"madd_2":[42,43,79,80],"madd_246":[112,113],"madd_muttasil":[6,8],"silent":[2,4,32,34,101,103],"hamzat_wasl":[13,14,23,24,35,36,50,51]},
+"17": {"ghunnah":[51,54],"ikhfa":[44,49],"idghaam_no_ghunnah":[134,139],"madd_2":[80,81,132,133],"madd_246":[149,150],"madd_munfasil":[54,56],"madd_muttasil":[61,63],"qalqalah":[143,145],"hamzat_wasl":[20,21,28,29,89,90]},
+"18": {"ghunnah":[2,6],"ikhfa":[19,23],"iqlab":[4,8],"madd_246":[40,41]},
+"19": {"iqlab":[162,166],"idghaam_ghunnah":[13,18,47,51,56,60,65,69],"idghaam_shafawi":[108,113],"lam_shamsiyyah":[22,23,117,118],"madd_2":[45,46,83,84,123,124,172,173],"madd_246":[177,178],"madd_munfasil":[95,97],"madd_muttasil":[28,30],"qalqalah":[69,71],"hamzat_wasl":[21,22,116,117,136,137,148,149,167,168]},
+"20": {"ghunnah":[182,185],"ikhfa":[212,216],"idghaam_shafawi":[64,69],"madd_2":[33,34,172,173],"madd_246":[218,219],"madd_munfasil":[48,50,88,90],"madd_muttasil":[55,57,129,131],"qalqalah":[29,31,168,170],"silent":[73,75,117,119],"hamzat_wasl":[8,9,134,135,186,187]},
+"21": {"ghunnah":[15,18],"ikhfa":[76,80],"lam_shamsiyyah":[14,15],"madd_246":[108,109],"madd_munfasil":[2,4],"qalqalah":[80,82],"silent":[30,32],"hamzat_wasl":[13,14,22,23,43,44,64,65]},
+"22": {"ikhfa":[68,71,96,100,177,180,189,192],"idghaam_ghunnah":[38,43,62,66,182,187],"idghaam_no_ghunnah":[138,144],"lam_shamsiyyah":[44,45,80,81,121,122],"madd_2":[36,37,113,114,129,130],"madd_246":[203,204],"madd_muttasil":[50,52,59,61,86,88,93,95],"qalqalah":[157,159],"silent":[164,166],"hamzat_wasl":[22,23,43,44,79,80,120,121]},
+"23": {"ghunnah":[28,31],"ikhfa":[4,8,8,11,125,129,143,147,147,150],"idghaam_ghunnah":[23,28,79,84,84,89],"idghaam_shafawi":[120,125],"madd_2":[95,96,155,156],"madd_246":[160,161],"madd_muttasil":[114,116],"qalqalah":[53,55,100,102],"silent":[68,70,105,107],"hamzat_wasl":[99,100,133,134]},
+"24": {"ghunnah":[56,59,84,87],"ikhfa":[28,32],"idghaam_no_ghunnah":[4,9],"lam_shamsiyyah":[55,56,83,84],"madd_2":[122,123],"madd_246":[127,128],"silent":[21,23,39,41,51,53],"hamzat_wasl":[44,45,54,55,63,64,82,83,93,94]},
+"25": {"ghunnah":[59,62,72,75],"ikhfa":[77,81,89,93,143,147,160,165,199,203],"idghaam_ghunnah":[234,239,262,267,275,279],"idghaam_no_ghunnah":[152,157],"lam_shamsiyyah":[44,45],"madd_2":[48,49,53,54,75,76,110,111,174,175,222,223,230,231,260,261,293,294],"madd_246":[298,299],"madd_munfasil":[251,253],"qalqalah":[81,83,191,193,203,205],"silent":[28,30,40,42,130,132,169,171,215,217],"hamzat_wasl":[10,11,43,44,101,102,179,180]},
+"26": {"ghunnah":[2,5,87,90,129,132,163,166],"ikhfa":[65,69],"idghaam_ghunnah":[33,37,49,55,239,244,262,267,287,292],"idghaam_no_ghunnah":[146,151],"madd_2":[229,230,254,255,279,280,323,324],"madd_246":[328,329],"madd_munfasil":[28,30,206,208,308,310],"silent":[110,112,185,187],"hamzat_wasl":[6,7,92,93,135,136,168,169,217,218,318,319]},
+"27": {"ikhfa":[12,15],"iqlab":[39,42],"idghaam_ghunnah":[103,107],"madd_2":[53,54,58,59,164,165],"madd_246":[169,170],"madd_munfasil":[76,78,98,100],"madd_muttasil":[147,149],"qalqalah":[64,66],"silent":[143,145],"hamzat_wasl":[28,29,86,87,131,132,159,160]},
+"28": {"ghunnah":[66,69,84,87,102,105],"ikhfa":[33,36,47,52],"madd_2":[45,46,58,59],"madd_246":[123,124],"hamzat_wasl":[21,22]},
+"29": {"ghunnah":[56,59,100,103],"ikhfa":[51,56],"idghaam_ghunnah":[120,124],"idghaam_shafawi":[24,29],"lam_shamsiyyah":[78,79],"madd_2":[97,98,115,116,118,119],"madd_246":[148,149],"madd_munfasil":[67,70],"madd_muttasil":[84,86],"qalqalah":[106,108],"hamzat_wasl":[5,6,35,36,60,61,77,78]},
+"30": {"ghunnah":[40,43,203,206],"ikhfa":[51,55,75,79],"idghaam_ghunnah":[107,111],"lam_shamsiyyah":[137,138],"madd_246":[234,235],"madd_munfasil":[82,84,206,208],"madd_muttasil":[29,31,143,145],"qalqalah":[91,93],"silent":[84,86],"hamzat_wasl":[57,58,136,137]},
+"31": {"ghunnah":[43,46],"ikhfa":[130,134,134,137],"iqlab":[91,93],"madd_2":[142,143],"madd_246":[147,148],"madd_muttasil":[27,29,71,73,110,112,117,119,123,125],"hamzat_wasl":[18,19,64,65]},
+"32": {"ghunnah":[66,69],"ikhfa":[74,77],"madd_2":[15,16],"madd_246":[96,97],"madd_munfasil":[36,38,61,63],"qalqalah":[11,13],"silent":[6,8],"hamzat_wasl":[78,79,89,90]},
+"33": {"ghunnah":[52,55,116,119],"ikhfa":[197,200],"ikhfa_shafawi":[29,33,68,72],"iqlab":[22,24,61,63],"lam_shamsiyyah":[139,140],"madd_2":[145,146,148,149],"madd_246":[211,212],"madd_munfasil":[55,57,119,121],"madd_muttasil":[8,10,39,41,78,80],"qalqalah":[181,183],"hamzat_wasl":[138,139,154,155]},
+"34": {"madd_2":[123,124],"madd_246":[128,129],"madd_munfasil":[61,63,71,73],"madd_muttasil":[23,25],"qalqalah":[76,78],"silent":[40,42,63,65],"hamzat_wasl":[32,33,93,94,118,119]},
+"35": {"ghunnah":[53,56],"ikhfa":[33,36],"lam_shamsiyyah":[125,126,153,154],"madd_2":[118,119,157,158],"madd_246":[162,163],"madd_muttasil":[12,14],"qalqalah":[108,110],"hamzat_wasl":[23,24,48,49,124,125,152,153]},
+"36": {"ghunnah":[54,57],"idghaam_ghunnah":[119,123,154,158],"lam_shamsiyyah":[16,17],"madd_2":[24,25,162,163],"madd_246":[175,176],"silent":[90,92],"hamzat_wasl":[15,16,82,83,134,135]},
+"37": {"ghunnah":[64,67],"ikhfa":[43,47],"idghaam_no_ghunnah":[23,28],"lam_shamsiyyah":[77,78,89,90],"madd_2":[33,34,41,42,69,70],"madd_246":[95,96],"madd_munfasil":[9,12],"hamzat_wasl":[76,77,88,89]},
+"38": {"ghunnah":[40,43,53,56,63,66],"ikhfa":[33,38,71,76,78,82],"idghaam_shafawi":[58,63],"madd_246":[138,139],"silent":[16,18],"hamzat_wasl":[8,9]},
+"39": {"ghunnah":[76,79],"lam_shamsiyyah":[75,76],"madd_2":[43,44,70,71,97,98],"madd_246":[102,103],"madd_munfasil":[48,50],"madd_muttasil":[57,59],"silent":[19,21,32,34,53,55],"hamzat_wasl":[2,3,74,75]},
+"40": {"madd_2":[2,3,126,127],"madd_246":[139,140],"madd_munfasil":[7,9,52,54,97,99],"madd_muttasil":[16,18],"silent":[32,34,86,88],"hamzat_wasl":[24,25,46,47,132,133]},
+"41": {"ikhfa":[22,25,134,139],"iqlab":[89,93],"idghaam_ghunnah":[143,148],"idghaam_no_ghunnah":[38,44],"madd_2":[96,97,124,125,153,154],"madd_246":[165,166],"madd_munfasil":[17,19,70,72],"silent":[10,12,72,74,113,115],"hamzat_wasl":[159,160]},
+"42": {"ikhfa":[67,70],"madd_2":[34,35],"madd_246":[81,82],"silent":[15,17,51,53],"hamzat_wasl":[18,19,29,30,54,55]},
+"43": {"lam_shamsiyyah":[14,15,37,38,67,68],"madd_2":[21,22,44,45,71,72],"madd_246":[76,77],"silent":[10,12,20,21,33,35,43,44,58,60],"hamzat_wasl":[13,14,36,37,50,51,66,67]},
+"44": {"ghunnah":[16,19],"ikhfa":[38,41,48,51,62,65],"lam_shamsiyyah":[15,16],"madd_2":[85,86],"madd_246":[105,106],"hamzat_wasl":[14,15,25,26,78,79]},
+"45": {"ghunnah":[46,49],"lam_shamsiyyah":[19,20,31,32],"madd_2":[38,39,83,84],"madd_246":[88,89],"qalqalah":[23,25],"silent":[13,15,37,38],"hamzat_wasl":[2,3,18,19,30,31,78,79]},
+"46": {"ghunnah":[14,17,23,26,56,59],"idghaam_shafawi":[28,33],"madd_2":[35,36,75,76],"madd_246":[80,81],"silent":[39,41]},
+"47": {"ghunnah":[81,84],"madd_2":[2,3,111,112],"madd_246":[116,117],"madd_munfasil":[7,9,52,54],"madd_muttasil":[16,18],"silent":[32,34],"hamzat_wasl":[24,25,46,47,106,107]},
+"48": {"ikhfa":[50,54,137,140],"idghaam_ghunnah":[42,47,58,63,92,96,122,126],"idghaam_no_ghunnah":[17,23],"madd_2":[88,89],"madd_246":[142,143],"qalqalah":[27,29,69,71,119,121],"silent":[9,11],"hamzat_wasl":[2,3]},
+"49": {"ikhfa_shafawi":[147,151],"idghaam_ghunnah":[156,161],"idghaam_no_ghunnah":[161,166],"idghaam_shafawi":[19,24],"madd_2":[16,17,142,143],"madd_246":[178,179],"madd_muttasil":[61,63,96,98,125,127,153,155],"qalqalah":[92,94],"hamzat_wasl":[66,67]},
+"50": {"ikhfa":[38,41,87,90,95,98],"madd_2":[45,46],"madd_246":[100,101],"madd_munfasil":[63,65],"qalqalah":[11,13,59,61],"hamzat_wasl":[24,25]},
+"51": {"ghunnah":[50,53],"ikhfa":[46,50,96,99],"iqlab":[80,83],"madd_2":[9,10,90,91,104,105],"madd_246":[109,110],"madd_munfasil":[23,26],"qalqalah":[12,14,72,74],"hamzat_wasl":[54,55,67,68]},
+"52": {"ghunnah":[2,5],"ikhfa":[18,21],"iqlab":[27,30],"idghaam_shafawi":[21,26],"madd_2":[38,39],"madd_246":[64,65]},
+"53": {"madd_2":[32,33],"madd_246":[71,72],"hamzat_wasl":[25,26,38,39]},
+"54": {"ghunnah":[45,48,222,225],"ikhfa":[66,69,148,151,185,188],"ikhfa_shafawi":[73,77],"idghaam_no_ghunnah":[173,178],"lam_shamsiyyah":[235,236,247,248],"madd_2":[31,32,35,36,160,161,227,228],"madd_246":[253,254],"madd_munfasil":[108,110,141,143],"qalqalah":[96,98,135,137],"silent":[110,112,143,145],"hamzat_wasl":[77,78,91,92,134,135,234,235,246,247]},
+"55": {"ikhfa":[75,79,109,112,117,120],"idghaam_ghunnah":[29,34],"lam_shamsiyyah":[93,94],"madd_2":[18,19,97,98],"madd_246":[122,123],"hamzat_wasl":[60,61,92,93]},
+"56": {"ghunnah":[2,5],"iqlab":[23,26],"idghaam_shafawi":[17,22],"madd_2":[14,15],"madd_246":[63,64]},
+"57": {"ghunnah":[64,67],"ikhfa":[39,42,92,96,147,151,161,164],"lam_shamsiyyah":[71,72],"madd_2":[101,102,117,118,144,145],"madd_246":[179,180],"madd_munfasil":[154,156],"qalqalah":[113,115],"silent":[87,89,156,158],"hamzat_wasl":[24,25,59,60,70,71]},
+"58": {"idghaam_ghunnah":[85,90,116,121,136,141],"madd_2":[28,29,159,160,162,163],"madd_246":[191,192],"qalqalah":[16,18,91,93],"silent":[23,25,53,55,98,100,127,129],"hamzat_wasl":[15,16,34,35,90,91,101,102,180,181]},
+"59": {"ikhfa":[70,73],"idghaam_ghunnah":[110,116],"lam_shamsiyyah":[120,121],"madd_246":[154,155],"madd_muttasil":[126,128],"qalqalah":[107,109],"silent":[27,29,102,104,143,145],"hamzat_wasl":[10,11,45,46,85,86,119,120]},
+"60": {"ikhfa":[80,83,120,125],"idghaam_ghunnah":[147,152],"idghaam_no_ghunnah":[186,191],"madd_2":[37,38],"madd_246":[243,244],"qalqalah":[125,127],"silent":[168,170,181,183,218,220],"hamzat_wasl":[7,8,49,50,67,68,79,80,97,98,173,174,196,197,225,226]},
+"61": {"ghunnah":[103,106,283,286,403,406,468,471],"ikhfa":[62,66,276,281],"iqlab":[111,113,130,133],"idghaam_ghunnah":[29,34,54,58,375,380],"idghaam_shafawi":[291,296],"lam_shamsiyyah":[332,333,467,468],"madd_2":[18,19,58,59,393,394,440,441,476,477,500,501],"madd_246":[540,541],"madd_muttasil":[149,151,362,364],"qalqalah":[67,69,92,94,134,136,206,208,231,233,456,458],"silent":[268,270,417,419,517,519,529,531],"hamzat_wasl":[66,67,117,118,216,217,240,241,260,261,331,332,344,345,383,384,444,445,466,467,489,490]},
+"62": {"ghunnah":[2,5,52,55],"ikhfa":[141,146,166,169],"lam_shamsiyyah":[51,52,66,67],"madd_2":[57,58,70,71,137,138],"madd_246":[223,224],"qalqalah":[155,157],"silent":[24,26,45,47],"hamzat_wasl":[6,7,29,30,50,51,65,66,95,96,105,106,115,116]},
+"63": {"ikhfa_shafawi":[87,91],"idghaam_ghunnah":[97,101],"lam_shamsiyyah":[54,55],"madd_2":[22,23,84,85],"madd_246":[141,142],"madd_munfasil":[72,74],"silent":[67,69,109,111],"hamzat_wasl":[53,54,101,102]},
+"64": {"ghunnah":[2,5],"ikhfa":[94,97],"iqlab":[23,26],"idghaam_shafawi":[17,22,97,102],"madd_2":[34,35,88,89,110,111],"madd_246":[115,116],"hamzat_wasl":[57,58,105,106]},
+"65": {"ikhfa":[44,47],"lam_shamsiyyah":[55,56],"madd_2":[101,102],"madd_246":[107,108],"qalqalah":[6,8,59,61],"silent":[39,41,87,89],"hamzat_wasl":[20,21,30,31,54,55]},
+"66": {"idghaam_no_ghunnah":[21,27,75,80],"madd_2":[10,11,19,20],"madd_246":[89,90]},
+"67": {"ghunnah":[36,39],"ikhfa":[63,67,84,88,116,121],"madd_2":[166,167],"madd_246":[171,172],"madd_munfasil":[31,33,91,93],"silent":[74,76,93,95],"hamzat_wasl":[40,41,135,136,161,162]},
+"68": {"ghunnah":[62,65,79,82],"iqlab":[127,131],"idghaam_ghunnah":[106,110],"idghaam_no_ghunnah":[36,41,93,98],"madd_2":[67,68,139,140],"madd_246":[170,171],"qalqalah":[10,12],"silent":[6,8,155,157],"hamzat_wasl":[9,10,147,148]},
+"69": {"ghunnah":[67,70,84,87,140,143],"ikhfa":[98,102],"idghaam_no_ghunnah":[36,41,117,122],"lam_shamsiyyah":[139,140],"madd_2":[72,73,143,144],"madd_246":[148,149],"madd_muttasil":[106,108],"qalqalah":[10,12],"silent":[6,8],"hamzat_wasl":[9,10,138,139]},
+"70": {"ghunnah":[56,59,94,97],"ikhfa":[102,106],"idghaam_no_ghunnah":[36,41],"madd_2":[74,75],"madd_246":[129,130],"madd_munfasil":[97,99],"madd_muttasil":[106,108],"qalqalah":[10,12],"silent":[6,8],"hamzat_wasl":[9,10,60,61,111,112]},
+"71": {"ghunnah":[8,11,25,28],"ikhfa":[52,56],"idghaam_no_ghunnah":[39,44,106,111],"madd_2":[13,14,142,143],"madd_246":[200,201],"silent":[133,135,189,191],"hamzat_wasl":[62,63,86,87,136,137,155,156]},
+"72": {"ikhfa":[23,28,76,79],"idghaam_ghunnah":[67,72],"madd_2":[32,33],"madd_246":[90,91],"hamzat_wasl":[28,29,52,53]},
+"73": {"madd_2":[37,38,87,88,92,93],"madd_246":[114,115],"hamzat_wasl":[10,11,50,51,58,59]},
+"74": {"ghunnah":[2,5,93,96,157,160,218,221,293,296],"iqlab":[28,31],"idghaam_ghunnah":[87,91],"idghaam_shafawi":[22,27],"madd_2":[39,40,149,150,285,286],"madd_246":[306,307],"madd_muttasil":[209,211],"hamzat_wasl":[54,55,102,103,140,141,204,205,259,260,273,274]},
+"75": {"ghunnah":[100,103],"iqlab":[123,126],"idghaam_ghunnah":[18,22,58,63],"madd_2":[86,87,118,119],"madd_246":[161,162],"qalqalah":[6,8,43,45],"silent":[29,31],"hamzat_wasl":[90,91]},
+"76": {"ghunnah":[52,55],"ikhfa":[94,98,180,183],"ikhfa_shafawi":[122,126,170,174],"madd_2":[176,177],"madd_246":[210,211],"madd_munfasil":[42,44,101,103],"madd_6":[162,164],"silent":[13,15,34,36,44,46,103,105],"hamzat_wasl":[16,17,137,138]},
+"77": {"ghunnah":[22,25],"madd_246":[72,73],"hamzat_wasl":[26,27]},
+"78": {"ghunnah":[13,16,92,95],"madd_2":[46,47],"madd_246":[95,96],"madd_munfasil":[55,57],"hamzat_wasl":[39,40]},
+"79": {"ghunnah":[60,63,157,160,202,205],"ikhfa":[89,92,126,131,135,140],"idghaam_no_ghunnah":[7,12,145,150,190,195],"idghaam_shafawi":[152,157,197,202],"madd_2":[40,41,77,78,119,120],"madd_246":[215,216],"silent":[112,114],"hamzat_wasl":[33,34,93,94]},
+"80": {"ghunnah":[28,31],"ikhfa":[13,17,64,68,87,90,104,109],"idghaam_ghunnah":[50,56,111,115],"lam_shamsiyyah":[27,28],"madd_246":[187,188],"madd_munfasil":[40,42,138,140],"silent":[8,10],"hamzat_wasl":[26,27,91,92,122,123,163,164]},
+"81": {"ghunnah":[88,91],"ikhfa":[9,13],"idghaam_ghunnah":[26,30],"lam_shamsiyyah":[87,88],"madd_2":[34,35,44,45,59,60,82,83,109,110],"madd_246":[114,115],"madd_muttasil":[50,52,69,71],"silent":[65,67],"hamzat_wasl":[86,87]},
+"82": {"ghunnah":[77,80],"lam_shamsiyyah":[36,37],"madd_2":[40,41,45,46,68,69,97,98],"madd_246":[102,103],"madd_muttasil":[55,57],"silent":[20,22,32,34,51,53],"hamzat_wasl":[2,3,35,36,72,73]},
+"83": {"ghunnah":[171,174,236,239],"ikhfa":[273,276,283,286],"idghaam_ghunnah":[105,110,183,188,267,273],"idghaam_shafawi":[286,291],"lam_shamsiyyah":[170,171,200,201,223,224],"madd_2":[22,23,87,88,135,136,150,151,207,208,230,231],"madd_246":[297,298],"madd_munfasil":[30,32],"madd_muttasil":[39,41],"silent":[165,167,196,198,206,207,219,221,229,230],"hamzat_wasl":[70,71,82,83,114,115,128,129,143,144,199,200,222,223]},
+"84": {"ghunnah":[107,110],"ikhfa":[79,82,91,95,128,131],"idghaam_shafawi":[86,91],"madd_2":[22,23,97,98],"madd_246":[142,143],"madd_muttasil":[50,52],"qalqalah":[113,115]},
+"85": {"ghunnah":[2,5,462,465],"ikhfa":[8,11,41,44,77,80,85,89,289,293,329,332,347,351],"ikhfa_shafawi":[120,124],"idghaam_ghunnah":[71,77,153,157,308,312],"idghaam_shafawi":[80,85],"lam_shamsiyyah":[366,367],"madd_2":[91,92,103,104,145,146,171,172,181,182,264,265,321,322,361,362,392,393,454,455],"madd_246":[475,476],"madd_munfasil":[413,416],"madd_muttasil":[16,18,22,24,301,303],"qalqalah":[29,31,141,143],"silent":[360,361],"hamzat_wasl":[124,125,136,137,257,258,353,354,365,366,385,386,425,426,442,443]},
+"86": {"ikhfa":[122,125],"lam_shamsiyyah":[48,49],"madd_2":[43,44],"madd_246":[127,128],"madd_muttasil":[6,8],"silent":[2,4,32,34,42,43],"hamzat_wasl":[13,14,23,24,35,36,47,48,60,61,98,99]},
+"87": {"ikhfa":[215,218,249,254,272,277],"iqlab":[54,57,190,194],"lam_shamsiyyah":[69,70],"madd_2":[34,35,64,65,123,124,138,139],"madd_246":[283,284],"madd_munfasil":[209,212],"madd_muttasil":[175,177],"qalqalah":[6,8,99,101,134,136,257,259,277,279],"hamzat_wasl":[27,28,68,69,98,99,113,114,150,151,225,226]},
+"88": {"iqlab":[27,31],"idghaam_ghunnah":[75,81],"madd_246":[91,92],"silent":[8,10],"hamzat_wasl":[46,47]},
+"89": {"ghunnah":[4,7,142,145],"ikhfa":[36,39,87,91],"idghaam_ghunnah":[26,31],"idghaam_no_ghunnah":[56,61],"idghaam_shafawi":[155,160],"madd_2":[24,25,186,187,218,219],"madd_246":[223,224],"madd_muttasil":[11,13,149,151],"qalqalah":[91,93],"silent":[82,84,135,137,169,171,179,181],"hamzat_wasl":[40,41,118,119,199,200,213,214]},
+"90": {"ikhfa":[31,34,66,69,112,116],"idghaam_ghunnah":[43,47,90,94,133,137,191,195,216,221],"madd_2":[122,123,158,159,201,202],"madd_246":[223,224],"madd_munfasil":[26,28,61,63],"madd_muttasil":[139,141,164,166],"silent":[19,21,54,56],"hamzat_wasl":[10,11,72,73,102,103]},
+"91": {"ikhfa":[41,44,82,85,220,224,231,235,235,238],"iqlab":[200,202],"idghaam_no_ghunnah":[154,160],"idghaam_shafawi":[238,243],"madd_2":[128,129],"madd_246":[249,250],"madd_munfasil":[36,38,77,79],"madd_muttasil":[122,124,205,207],"qalqalah":[187,189,224,226],"silent":[29,31,61,63],"hamzat_wasl":[47,48,137,138,210,211]},
+"92": {"ghunnah":[46,49],"ikhfa":[92,95],"iqlab":[76,79],"idghaam_shafawi":[17,22],"madd_2":[40,41,86,87,100,101],"madd_246":[105,106],"madd_muttasil":[11,13],"qalqalah":[6,8,68,70],"hamzat_wasl":[30,31,50,51,63,64]},
+"93": {"ikhfa":[245,249,249,252],"ikhfa_shafawi":[87,91,221,225],"idghaam_ghunnah":[97,101],"idghaam_shafawi":[252,257],"lam_shamsiyyah":[54,55],"madd_2":[22,23,84,85,235,236],"madd_246":[263,264],"madd_munfasil":[72,74,227,229],"qalqalah":[178,180],"silent":[67,69,109,111,118,120,154,156],"hamzat_wasl":[53,54,101,102,173,174]},
+"94": {"ghunnah":[83,86,96,99],"ikhfa":[7,11,48,51,73,77,116,120,120,123],"idghaam_ghunnah":[68,73],"lam_shamsiyyah":[25,26,82,83],"madd_2":[128,129],"madd_246":[133,134],"silent":[101,103],"hamzat_wasl":[24,25,33,34,52,53,81,82,104,105]},
+"95": {"ghunnah":[12,15],"iqlab":[25,30,73,77],"idghaam_ghunnah":[4,8],"lam_shamsiyyah":[79,80],"madd_2":[83,84],"madd_246":[88,89],"hamzat_wasl":[59,60,78,79]},
+"96": {"ghunnah":[10,13,29,32,109,112,180,183],"iqlab":[202,206],"idghaam_ghunnah":[50,54,127,131,174,178],"lam_shamsiyyah":[28,29],"madd_2":[48,49,154,155],"madd_246":[219,220],"silent":[47,48,78,80],"hamzat_wasl":[27,28,59,60,161,162,188,189]},
+"97": {"ghunnah":[41,44],"ikhfa":[7,11],"idghaam_ghunnah":[131,136],"idghaam_no_ghunnah":[21,27,100,106],"madd_2":[46,47,57,58],"madd_246":[157,158],"qalqalah":[29,31],"hamzat_wasl":[84,85]},
+"98": {"ghunnah":[86,89],"ikhfa":[2,6],"idghaam_no_ghunnah":[16,22,104,109],"madd_2":[44,45,56,57,78,79,113,114],"madd_246":[118,119],"madd_muttasil":[34,36],"qalqalah":[62,64],"hamzat_wasl":[90,91]},
+"99": {"ikhfa":[11,14],"iqlab":[37,41],"idghaam_ghunnah":[49,53],"madd_2":[35,36,47,48,85,86],"madd_246":[90,91],"madd_munfasil":[18,20,70,72],"qalqalah":[6,8],"hamzat_wasl":[80,81]},
+"100": {"ikhfa_shafawi":[58,62],"idghaam_ghunnah":[29,35,49,54],"madd_2":[15,16,41,42],"madd_246":[90,91],"silent":[21,23]},
+"101": {"ghunnah":[4,7,166,169],"ikhfa":[36,39],"idghaam_ghunnah":[26,31,87,92],"idghaam_no_ghunnah":[56,61],"madd_2":[121,122,129,130],"madd_246":[186,187],"madd_muttasil":[11,13,145,147],"silent":[111,113],"hamzat_wasl":[40,41,95,96,114,115,133,134]},
+"102": {"ghunnah":[100,103,143,146,276,279],"ikhfa":[169,172,297,301,499,502,620,623],"ikhfa_shafawi":[401,405],"idghaam_ghunnah":[585,589],"lam_shamsiyyah":[29,30,105,106,142,143,151,152],"madd_2":[35,36,64,65,89,90,97,98,111,112,207,208,218,219,362,363,391,392,420,421,543,544,555,556,583,584],"madd_246":[652,653],"madd_munfasil":[164,166,271,273,615,617],"madd_6":[407,409],"qalqalah":[515,517],"silent":[11,13,25,27,125,127,525,527,608,610,641,643],"hamzat_wasl":[2,3,28,29,104,105,141,142,150,151,181,182,371,372,450,451,535,536,561,562]},
+"103": {"ghunnah":[9,12],"ikhfa":[61,64],"idghaam_ghunnah":[51,56],"idghaam_no_ghunnah":[78,83],"madd_246":[103,104],"silent":[25,27,38,40,92,94],"hamzat_wasl":[30,31,65,66]},
+"104": {"ikhfa":[70,73],"madd_2":[51,52,100,101],"madd_246":[121,122],"madd_munfasil":[2,4],"silent":[31,33,46,48,66,68,89,91],"hamzat_wasl":[13,14,69,70,81,82]},
+"105": {"idghaam_ghunnah":[79,83,112,117,166,170],"idghaam_no_ghunnah":[117,122],"idghaam_shafawi":[99,104],"madd_2":[52,53,162,163],"madd_246":[208,209],"madd_muttasil":[172,174],"silent":[30,32],"hamzat_wasl":[13,14,45,46,62,63,132,133,179,180,191,192,201,202]},
+"106": {"ghunnah":[99,102],"ikhfa":[6,9,32,35,129,133],"idghaam_ghunnah":[53,58],"madd_246":[135,136],"madd_munfasil":[62,64,78,80],"hamzat_wasl":[103,104]},
+"107": {"ghunnah":[18,21],"ikhfa":[84,88],"idghaam_ghunnah":[102,106,110,114],"idghaam_shafawi":[79,84],"lam_shamsiyyah":[44,45],"madd_2":[34,35,50,51,53,54],"madd_246":[122,123],"hamzat_wasl":[22,23,43,44,59,60,92,93]},
+"108": {"ikhfa":[18,22,68,72],"idghaam_ghunnah":[81,85],"lam_shamsiyyah":[142,143],"madd_2":[115,116],"madd_246":[148,149],"madd_muttasil":[136,138],"qalqalah":[72,74,123,125],"silent":[30,32],"hamzat_wasl":[95,96,107,108,141,142]},
+"109": {"ghunnah":[231,234],"ikhfa":[109,112,115,118,261,265],"iqlab":[61,64,128,131],"idghaam_ghunnah":[12,17,98,104],"idghaam_shafawi":[55,60,122,127],"madd_2":[34,35,75,76],"madd_246":[267,268],"madd_munfasil":[226,228],"silent":[175,177,188,190],"hamzat_wasl":[27,28,158,159,169,170,180,181,208,209,235,236]},
+"110": {"ghunnah":[119,122],"ikhfa":[71,74,91,95,105,108],"idghaam_shafawi":[78,83],"lam_shamsiyyah":[14,15,37,38],"madd_2":[21,22,44,45],"madd_246":[153,154],"silent":[10,12,20,21,33,35,43,44,64,66],"hamzat_wasl":[13,14,36,37,109,110,123,124]},
+"111": {"ghunnah":[29,32],"ikhfa":[44,48,126,130,130,133],"idghaam_ghunnah":[13,17],"madd_2":[68,69,116,117,138,139],"madd_246":[143,144],"qalqalah":[17,19],"silent":[8,10,107,109],"hamzat_wasl":[24,25]},
+"112": {"ikhfa":[53,57,76,79],"madd_2":[29,30,72,73,87,88],"madd_246":[132,133],"madd_munfasil":[61,63],"qalqalah":[23,25,66,68]},
+"113": {"ghunnah":[32,35,69,72],"idghaam_ghunnah":[55,59,112,116],"lam_shamsiyyah":[31,32,68,69],"madd_2":[37,38,74,75,138,139,146,147,246,247],"madd_246":[284,285],"silent":[265,267],"hamzat_wasl":[10,11,30,31,67,68,89,90,131,132,158,159,204,205,239,240]},
+"114": {"ghunnah":[18,21],"idghaam_ghunnah":[21,26,51,55,135,139,197,201],"lam_shamsiyyah":[182,183],"madd_2":[35,36,76,77],"madd_246":[237,238],"madd_munfasil":[100,102,148,150],"madd_muttasil":[109,111,160,162],"qalqalah":[139,141],"silent":[105,107],"hamzat_wasl":[41,42,69,70,181,182,212,213]},
+"115": {"ghunnah":[63,66,84,87],"madd_2":[98,99],"madd_246":[108,109],"qalqalah":[69,71],"silent":[56,58],"hamzat_wasl":[10,11,24,25,74,75,88,89]},
+"116": {"ikhfa":[33,38],"idghaam_no_ghunnah":[98,103],"lam_shamsiyyah":[69,70],"madd_2":[42,43,47,48,58,59,75,76,78,79,105,106,109,110],"madd_246":[114,115],"qalqalah":[38,40],"silent":[8,10],"hamzat_wasl":[11,12,20,21,68,69,84,85]},
+"117": {"ghunnah":[62,65],"ikhfa":[55,60,85,89],"lam_shamsiyyah":[9,10],"madd_2":[15,16,18,19,81,82],"madd_246":[93,94],"madd_munfasil":[46,49],"hamzat_wasl":[8,9,24,25]},
+"118": {"ghunnah":[181,184],"ikhfa":[86,90,116,120],"idghaam_ghunnah":[205,209],"idghaam_shafawi":[126,131],"madd_2":[92,93,151,152,194,195],"madd_246":[214,215],"madd_munfasil":[77,79],"qalqalah":[120,122,173,175],"hamzat_wasl":[8,9,55,56,104,105,186,187]},
+"119": {"ghunnah":[2,5],"idghaam_ghunnah":[39,44,50,55],"madd_2":[18,19,80,81],"madd_246":[91,92],"madd_munfasil":[5,7],"hamzat_wasl":[24,25,84,85]},
+"120": {"ghunnah":[40,43,88,91],"ikhfa":[4,8,17,20],"ikhfa_shafawi":[153,157],"idghaam_ghunnah":[218,222,226,230],"lam_shamsiyyah":[39,40],"madd_2":[45,46],"madd_246":[238,239],"madd_muttasil":[147,149,172,174],"hamzat_wasl":[21,22,38,39,98,99,111,112,130,131,162,163,184,185,208,209]},
+"121": {"idghaam_ghunnah":[104,108],"madd_2":[19,20,32,33,47,48,98,99,119,120,146,147],"madd_246":[151,152],"madd_munfasil":[66,68],"madd_muttasil":[75,77,129,131],"silent":[71,73,125,127],"hamzat_wasl":[25,26,141,142]},
+"122": {"ghunnah":[81,84],"madd_2":[2,3,111,112],"madd_246":[116,117],"madd_munfasil":[7,9,52,54],"madd_muttasil":[16,18],"silent":[32,34],"hamzat_wasl":[24,25,46,47,106,107]},
+"123": {"ikhfa":[50,54,99,102,131,134],"idghaam_ghunnah":[42,47,58,63,89,93,116,120],"idghaam_no_ghunnah":[17,23],"madd_2":[112,113],"madd_246":[136,137],"qalqalah":[27,29,69,71,86,88],"silent":[9,11],"hamzat_wasl":[2,3]},
+"124": {"ghunnah":[58,61,63,66,75,78,93,96],"ikhfa":[50,54,106,111,119,123],"lam_shamsiyyah":[92,93,160,161],"madd_2":[24,25,27,28,38,39,48,49,164,165],"madd_246":[169,170],"madd_munfasil":[14,17],"qalqalah":[8,10,20,22],"hamzat_wasl":[7,8,159,160]},
+"125": {"ghunnah":[41,44],"ikhfa":[158,162],"idghaam_ghunnah":[55,60,74,79,104,109],"idghaam_no_ghunnah":[35,40],"lam_shamsiyyah":[40,41,180,181,213,214,224,225],"madd_2":[91,92,94,95,134,135,137,138,149,150,201,202],"madd_246":[230,231],"madd_munfasil":[117,119,124,127],"madd_muttasil":[184,186],"qalqalah":[87,89,113,115,130,132,231,232],"silent":[69,71],"hamzat_wasl":[17,18,60,61,196,197,212,213,223,224]},
+"126": {"ghunnah":[201,204,236,239],"ikhfa":[166,170,196,201],"ikhfa_shafawi":[121,125],"idghaam_ghunnah":[61,66],"lam_shamsiyyah":[90,91,235,236],"madd_2":[19,20,22,23,42,43,82,83,98,99,188,189],"madd_246":[259,260],"madd_munfasil":[216,218],"qalqalah":[15,17,33,35,71,73],"hamzat_wasl":[32,33,66,67,89,90,125,126,135,136,145,146,234,235,252,253]},
+"127": {"ghunnah":[93,96,101,104],"ikhfa":[109,112],"lam_shamsiyyah":[114,115],"madd_2":[22,23,25,26,65,66],"madd_246":[131,132],"madd_munfasil":[96,98],"qalqalah":[18,20],"hamzat_wasl":[29,30,47,48,113,114,124,125]},
+"128": {"ghunnah":[63,66,130,133],"ikhfa":[44,48,138,141],"idghaam_ghunnah":[67,72],"idghaam_no_ghunnah":[79,84],"lam_shamsiyyah":[143,144,155,156],"madd_246":[161,162],"madd_munfasil":[58,60,125,127],"qalqalah":[12,14,114,116],"hamzat_wasl":[11,12,142,143,154,155]},
+"129": {"ghunnah":[136,139],"ikhfa":[144,147],"idghaam_ghunnah":[33,39],"madd_2":[72,73,101,102],"madd_246":[166,167],"qalqalah":[12,14],"silent":[53,55],"hamzat_wasl":[11,12,94,95,107,108,148,149,159,160]},
+"130": {"ghunnah":[112,115],"ikhfa":[50,54],"idghaam_ghunnah":[4,8,17,22],"lam_shamsiyyah":[98,99,144,145],"madd_2":[34,35,37,38,67,68,89,90,117,118,148,149],"madd_246":[153,154],"qalqalah":[30,32],"hamzat_wasl":[78,79,97,98,123,124,143,144]},
+"131": {"madd_2":[15,16,66,67],"madd_246":[71,72],"madd_munfasil":[24,26],"hamzat_wasl":[61,62]},
+"132": {"ghunnah":[63,66,114,117],"ikhfa":[129,132],"idghaam_shafawi":[132,137],"lam_shamsiyyah":[93,94],"madd_2":[23,24,26,27,52,53],"madd_246":[143,144],"madd_munfasil":[14,16],"qalqalah":[19,21],"hamzat_wasl":[67,68,75,76,92,93]},
+"133": {"ikhfa":[7,10],"iqlab":[96,99],"idghaam_ghunnah":[202,207,211,216],"madd_2":[128,129,140,141,162,163,165,166,177,178,192,193,200,201,207,208,227,228],"madd_246":[237,238],"madd_muttasil":[19,21,149,151],"qalqalah":[158,160],"silent":[112,114],"hamzat_wasl":[46,47]},
+"134": {"ghunnah":[9,12,91,94],"ikhfa":[13,17],"idghaam_shafawi":[52,57],"madd_246":[113,114],"qalqalah":[17,19,63,65],"silent":[102,104]},
+"135": {"idghaam_ghunnah":[91,96],"madd_2":[36,37,78,79,81,82],"madd_246":[122,123],"qalqalah":[74,76],"silent":[8,10,17,19,51,53],"hamzat_wasl":[111,112]},
+"136": {"ghunnah":[15,18,195,198],"ikhfa":[39,42,64,67],"idghaam_ghunnah":[248,253],"idghaam_no_ghunnah":[209,214],"lam_shamsiyyah":[194,195],"madd_2":[84,85,87,88,99,100,114,115,273,274],"madd_246":[283,284],"madd_munfasil":[5,7,34,36,59,61,74,77,149,151,182,184],"qalqalah":[80,82],"silent":[7,9],"hamzat_wasl":[22,23,132,133,193,194]},
+"137": {"ghunnah":[89,92],"ikhfa":[37,40,71,75,111,115],"ikhfa_shafawi":[40,44],"lam_shamsiyyah":[147,148],"madd_2":[46,47],"madd_246":[164,165],"madd_munfasil":[29,31],"silent":[15,17,63,65,82,84],"hamzat_wasl":[55,56,131,132,146,147,157,158]},
+"138": {"idghaam_ghunnah":[53,57],"madd_2":[68,69,72,73],"madd_246":[77,78],"qalqalah":[2,4,48,50],"hamzat_wasl":[9,10,38,39]},
+"139": {"madd_2":[78,79,100,101,121,122],"madd_246":[131,132],"madd_munfasil":[69,71],"madd_6":[11,13],"hamzat_wasl":[27,28]},
+"140": {"ghunnah":[18,21,175,178,245,248],"ikhfa":[129,132,178,182,199,202],"madd_2":[28,29,31,32,43,44,58,59,114,115,191,192,204,205,237,238],"madd_246":[258,259],"qalqalah":[24,26],"silent":[95,97],"hamzat_wasl":[76,77,149,150,211,212,225,226]},
+"141": {"ghunnah":[9,12,91,94],"ikhfa":[13,17],"idghaam_shafawi":[52,57],"madd_246":[113,114],"qalqalah":[17,19,63,65],"silent":[102,104]},
+"142": {"ghunnah":[31,34],"ikhfa":[56,60],"idghaam_ghunnah":[147,151,171,176],"lam_shamsiyyah":[11,12,30,31],"madd_2":[48,49,169,170],"madd_246":[182,183],"madd_muttasil":[19,21,153,155],"qalqalah":[60,62],"silent":[85,87],"hamzat_wasl":[10,11,29,30,71,72,111,112,125,126]},
+"143": {"ghunnah":[28,31,75,78,221,224,362,365,378,381],"ikhfa":[161,164,228,231,258,262],"idghaam_ghunnah":[32,36,120,125,196,200,224,228],"idghaam_no_ghunnah":[39,45,393,398],"lam_shamsiyyah":[74,75,93,94,209,210,377,378],"madd_2":[6,7,20,21,352,353],"madd_246":[400,401],"madd_munfasil":[173,175],"madd_muttasil":[62,64],"qalqalah":[144,146],"silent":[53,55],"hamzat_wasl":[73,74,92,93,139,140,151,152,208,209,293,294,309,310,329,330,366,367,376,377]},
+"144": {"ghunnah":[60,63,192,195,242,245,298,301],"ikhfa":[73,77,149,152],"idghaam_no_ghunnah":[259,264],"lam_shamsiyyah":[36,37],"madd_2":[82,83,186,187,222,223,290,291],"madd_246":[311,312],"madd_muttasil":[42,44],"qalqalah":[2,4,24,26,68,70,97,99,106,108,180,182],"silent":[163,165,212,214],"hamzat_wasl":[35,36,111,112,123,124,196,197,215,216,248,249,278,279]},
+"145": {"ghunnah":[245,248],"ikhfa":[99,102,111,115,150,154],"ikhfa_shafawi":[140,144],"iqlab":[206,209],"idghaam_ghunnah":[62,67,166,170],"idghaam_no_ghunnah":[254,260],"idghaam_shafawi":[200,205],"lam_shamsiyyah":[266,267],"madd_2":[44,45,270,271],"madd_246":[275,276],"madd_munfasil":[94,96],"madd_muttasil":[194,196,221,223],"qalqalah":[81,83,115,117,154,156],"silent":[34,36,76,78],"hamzat_wasl":[18,19,37,38,177,178,233,234,265,266]},
+"146": {"ghunnah":[88,91],"idghaam_ghunnah":[98,104],"madd_2":[19,20,32,33,49,50],"madd_246":[149,150],"madd_muttasil":[75,77],"qalqalah":[71,73],"hamzat_wasl":[25,26,125,126]},
+"147": {"ghunnah":[35,38],"idghaam_no_ghunnah":[11,16],"madd_246":[55,56],"hamzat_wasl":[44,45]},
+"148": {"ghunnah":[119,122],"ikhfa":[149,153],"idghaam_ghunnah":[8,12],"madd_2":[60,61],"madd_246":[155,156],"qalqalah":[12,14],"silent":[48,50,83,85],"hamzat_wasl":[38,39,51,52,100,101,123,124]},
+"149": {"ghunnah":[74,77,130,133],"idghaam_no_ghunnah":[93,98],"madd_2":[79,80,122,123],"madd_246":[143,144],"qalqalah":[18,20,33,35,42,44],"hamzat_wasl":[47,48,59,60,110,111]},
+"150": {"ghunnah":[144,147,246,249],"ikhfa":[85,88],"lam_shamsiyyah":[143,144],"madd_2":[122,123],"madd_246":[293,294],"qalqalah":[18,20,33,35,42,44,116,118],"silent":[99,101,194,196],"hamzat_wasl":[47,48,59,60,177,178,227,228]},
+"151": {"ikhfa":[39,42],"idghaam_ghunnah":[33,39],"idghaam_shafawi":[147,152],"madd_2":[71,72,116,117],"madd_246":[178,179],"madd_munfasil":[4,6],"silent":[52,54,167,169],"hamzat_wasl":[109,110,122,123]},
+"152": {"madd_246":[59,60],"madd_munfasil":[12,14],"silent":[38,40],"hamzat_wasl":[2,3,30,31]},
+"153": {"ghunnah":[76,79],"lam_shamsiyyah":[51,52,63,64,94,95],"madd_2":[70,71,98,99],"madd_246":[103,104],"madd_munfasil":[2,4],"qalqalah":[55,57],"silent":[31,33,45,47,69,70],"hamzat_wasl":[13,14,34,35,50,51,62,63,80,81,93,94]},
+"154": {"iqlab":[60,64],"idghaam_ghunnah":[21,25,77,81],"idghaam_no_ghunnah":[86,91],"madd_2":[58,59,83,84],"madd_246":[101,102],"madd_muttasil":[74,76],"qalqalah":[25,27],"silent":[14,16],"hamzat_wasl":[44,45]},
+"155": {"ghunnah":[12,15],"ikhfa":[90,93],"ikhfa_shafawi":[17,21],"idghaam_ghunnah":[26,31,62,67],"lam_shamsiyyah":[99,100,122,123],"madd_2":[79,80,107,108,126,127],"madd_246":[131,132],"qalqalah":[6,8,59,61],"hamzat_wasl":[34,35,46,47,70,71,85,86,98,99,121,122]},
+"156": {"ghunnah":[53,56,70,73],"ikhfa":[39,43],"idghaam_shafawi":[28,33],"madd_2":[21,22,87,88],"madd_246":[92,93],"madd_munfasil":[14,16,46,48,73,75],"silent":[48,50]},
+"157": {"idghaam_ghunnah":[32,37,59,63],"idghaam_no_ghunnah":[37,42],"madd_2":[30,31],"madd_246":[92,93],"madd_muttasil":[6,8,69,71],"silent":[2,4,65,67],"hamzat_wasl":[81,82]},
+"158": {"ghunnah":[2,5,164,167],"ikhfa":[31,35,140,144,157,162],"idghaam_ghunnah":[115,119],"lam_shamsiyyah":[7,8],"madd_246":[188,189],"madd_muttasil":[37,39],"hamzat_wasl":[6,7,17,18,44,45,65,66,80,81,168,169]},
+"159": {"ghunnah":[2,5,96,99,106,109],"ikhfa":[35,38],"iqlab":[78,81],"lam_shamsiyyah":[105,106,178,179],"madd_2":[59,60,99,100,124,125,182,183],"madd_246":[187,188],"madd_munfasil":[30,32],"madd_muttasil":[134,136],"silent":[130,132],"hamzat_wasl":[6,7,49,50,65,66,117,118,154,155,177,178]},
+"160": {"lam_shamsiyyah":[96,97,108,109],"madd_246":[114,115],"madd_muttasil":[61,63],"silent":[23,25,37,39,50,52,57,59],"hamzat_wasl":[7,8,95,96,107,108]},
+"161": {"ghunnah":[2,5,116,119],"lam_shamsiyyah":[115,116],"madd_246":[131,132],"madd_muttasil":[59,61,103,105],"qalqalah":[125,127],"silent":[23,25,34,36,55,57],"hamzat_wasl":[6,7,86,87,96,97,114,115]},
+"162": {"ikhfa":[65,68],"madd_2":[2,3],"madd_246":[70,71],"hamzat_wasl":[41,42]},
+"163": {"idghaam_ghunnah":[20,24],"idghaam_no_ghunnah":[28,33],"lam_shamsiyyah":[57,58,70,71],"madd_2":[6,7,18,19,24,25,40,41,65,66],"madd_246":[76,77],"madd_munfasil":[33,35],"hamzat_wasl":[56,57,69,70]},
+"164": {"ghunnah":[2,5,69,72,136,139],"ikhfa":[128,131,152,155,193,197,254,258],"idghaam_ghunnah":[185,190,270,274,371,375],"idghaam_no_ghunnah":[361,366],"lam_shamsiyyah":[18,19,68,69,135,136,172,173,285,286,298,299,329,330],"madd_2":[24,25,27,28,52,53,291,292,359,360],"madd_246":[381,382],"madd_munfasil":[147,149],"madd_muttasil":[178,180,190,192,335,337],"madd_6":[264,266],"qalqalah":[100,102],"hamzat_wasl":[17,18,33,34,45,46,56,57,67,68,80,81,90,91,110,111,134,135,158,159,171,172,210,211,284,285,297,298,308,309,328,329,342,343]},
+"165": {"ghunnah":[9,12,198,201,234,237],"ikhfa":[32,36,50,53],"idghaam_ghunnah":[18,22,55,60,227,232],"idghaam_no_ghunnah":[125,131],"lam_shamsiyyah":[8,9],"madd_246":[261,262],"madd_munfasil":[108,110,166,168],"qalqalah":[262,263],"silent":[110,112,168,170],"hamzat_wasl":[7,8,40,41,81,82,91,92,150,151,185,186,202,203,238,239,254,255]},
+"166": {"madd_246":[116,117],"qalqalah":[117,118],"silent":[34,36,61,63,72,74],"hamzat_wasl":[15,16,25,26,42,43,52,53,75,76,107,108]},
+"167": {"ghunnah":[37,40,99,102,197,200],"ikhfa":[53,57],"ikhfa_shafawi":[175,179],"lam_shamsiyyah":[196,197],"madd_2":[108,109,138,139,152,153,181,182],"madd_246":[200,201],"silent":[27,29,94,96],"hamzat_wasl":[8,9,18,19,124,125,195,196]},
+"168": {"ghunnah":[15,18,32,35,113,116],"ikhfa":[57,62],"idghaam_ghunnah":[66,71,133,138],"lam_shamsiyyah":[14,15,99,100],"madd_2":[55,56,94,95,107,108,118,119],"madd_246":[140,141],"madd_munfasil":[2,4],"silent":[27,29,85,87],"hamzat_wasl":[13,14,41,42,98,99]},
+"169": {"ghunnah":[2,5],"ikhfa":[53,57],"ikhfa_shafawi":[19,23],"lam_shamsiyyah":[24,25],"madd_246":[96,97],"madd_muttasil":[28,30,44,46],"silent":[63,65],"hamzat_wasl":[23,24,35,36,72,73]},
+"170": {"ikhfa":[40,43],"idghaam_ghunnah":[169,174],"madd_246":[186,187],"madd_munfasil":[35,37,80,82,115,117],"madd_muttasil":[109,111,138,140],"silent":[30,32,60,62],"hamzat_wasl":[21,22,46,47]},
+"171": {"ghunnah":[103,107],"ikhfa":[99,103,120,124],"iqlab":[105,109],"idghaam_ghunnah":[88,92],"madd_246":[141,142],"madd_muttasil":[85,87,96,98],"silent":[26,28],"hamzat_wasl":[9,10,38,39]},
+"172": {"ikhfa":[44,48,98,102,102,105],"madd_2":[53,54,69,70],"madd_246":[125,126],"madd_munfasil":[2,4],"qalqalah":[65,67],"silent":[31,33,39,41,85,87],"hamzat_wasl":[13,14,77,78]},
+"173": {"ghunnah":[2,5,175,178],"ikhfa":[64,67,148,152],"idghaam_ghunnah":[136,140],"idghaam_no_ghunnah":[193,198],"lam_shamsiyyah":[43,44],"madd_2":[90,91],"madd_246":[200,201],"madd_munfasil":[75,77,154,156],"hamzat_wasl":[28,29,42,43,59,60,101,102,116,117,179,180]},
+"174": {"ghunnah":[2,5,156,159],"ikhfa":[35,38,90,95],"lam_shamsiyyah":[155,156],"madd_2":[61,62,83,84,205,206],"madd_246":[251,252],"madd_munfasil":[30,32],"madd_muttasil":[108,110],"silent":[104,106],"hamzat_wasl":[6,7,41,42,54,55,154,155,183,184,198,199]},
+"175": {"ghunnah":[117,120],"lam_shamsiyyah":[36,37,116,117],"madd_2":[42,43],"madd_246":[120,121],"madd_munfasil":[93,95],"madd_muttasil":[6,8],"silent":[2,4,32,34],"hamzat_wasl":[13,14,23,24,35,36,50,51,62,63,75,76,115,116]},
+"176": {"ghunnah":[12,15,58,61],"iqlab":[112,116],"madd_2":[2,3,39,40,96,97],"madd_246":[119,120],"qalqalah":[120,121],"silent":[82,84],"hamzat_wasl":[16,17,32,33,45,46,62,63,72,73,89,90]},
+"177": {"ghunnah":[84,87,178,181],"ikhfa":[19,23],"lam_shamsiyyah":[177,178,282,283,295,296,316,317,337,338,358,359,416,417,450,451],"madd_2":[81,82,170,171,186,187,222,223,251,252,266,267,344,345,365,366,404,405,420,421],"madd_246":[543,544],"madd_muttasil":[152,154,299,301,442,444,457,459,486,488,521,523],"qalqalah":[276,278],"silent":[29,31,343,344,364,365,410,412,482,484,510,512,517,519],"hamzat_wasl":[8,9,51,52,65,66,88,89,112,113,122,123,132,133,145,146,163,164,176,177,199,200,230,231,244,245,259,260,275,276,281,282,294,295,315,316,336,337,357,358,371,372,415,416,433,434,449,450,470,471,493,494,533,534]},
+"178": {"ikhfa":[129,132,142,145,186,190,246,250,291,295],"iqlab":[198,202],"idghaam_ghunnah":[264,269],"idghaam_no_ghunnah":[269,274],"madd_2":[166,167,244,245,250,251,319,320,331,332],"madd_246":[345,346],"madd_munfasil":[2,4],"madd_muttasil":[222,224],"qalqalah":[105,107,117,119],"silent":[31,33],"hamzat_wasl":[13,14,52,53,67,68,78,79,89,90,100,101,112,113,124,125,137,138,190,191,203,204,300,301]},
+"179": {"idghaam_ghunnah":[31,35],"madd_2":[29,30,54,55],"madd_246":[77,78],"madd_munfasil":[35,37],"silent":[28,29,39,41],"hamzat_wasl":[13,14,45,46]},
+"180": {"ikhfa":[54,58],"madd_2":[90,91],"madd_246":[155,156],"qalqalah":[107,109],"hamzat_wasl":[42,43,71,72,102,103,119,120,145,146]},
+"181": {"ghunnah":[42,45,95,98],"iqlab":[5,8],"madd_2":[16,17,36,37,58,59],"madd_246":[119,120],"madd_munfasil":[47,49,90,92],"hamzat_wasl":[66,67,99,100]},
+"182": {"ghunnah":[92,95],"ikhfa":[22,26,42,47],"idghaam_ghunnah":[15,20],"idghaam_no_ghunnah":[110,115],"madd_246":[117,118],"madd_munfasil":[71,73],"hamzat_wasl":[96,97]},
+"183": {"ikhfa":[94,98],"lam_shamsiyyah":[53,54],"madd_246":[126,127],"madd_munfasil":[2,4],"qalqalah":[98,100],"silent":[31,33],"hamzat_wasl":[13,14,52,53,82,83]},
+"184": {"ikhfa":[22,26,28,32,38,41,70,74,143,147,161,165,167,171,184,189,212,216,242,246,246,249],"idghaam_ghunnah":[7,13,80,85],"idghaam_no_ghunnah":[199,204,230,235],"idghaam_shafawi":[41,46],"madd_2":[20,21,134,135,206,207],"madd_246":[260,261],"qalqalah":[138,140],"silent":[222,224],"hamzat_wasl":[112,113]},
+"185": {"ghunnah":[63,66],"ikhfa":[28,31,118,122,129,132,162,166,196,200],"idghaam_ghunnah":[81,86,206,211],"idghaam_no_ghunnah":[56,62],"lam_shamsiyyah":[62,63,136,137],"madd_2":[79,80,362,363],"madd_246":[390,391],"madd_munfasil":[23,25],"silent":[307,309,335,337],"hamzat_wasl":[17,18,40,41,89,90,101,102,135,136,238,239,253,254,284,285,310,311,338,339]},
+"186": {"ghunnah":[28,31,37,40],"lam_shamsiyyah":[68,69],"madd_246":[153,154],"silent":[106,108,126,128],"hamzat_wasl":[67,68]},
+"187": {"ghunnah":[67,70,110,113,131,134,229,232,388,391,396,399,447,450,574,577],"ikhfa":[91,94,141,144,162,165,201,204,455,458],"idghaam_no_ghunnah":[77,82,103,108],"lam_shamsiyyah":[25,26,36,37,404,405,573,574],"madd_2":[215,216,221,222,439,440,463,464,483,484,535,536,564,565,569,570],"madd_246":[600,601],"madd_muttasil":[56,58],"qalqalah":[236,238,337,339,381,383,520,522],"silent":[243,245,279,281,292,294,400,402],"hamzat_wasl":[24,25,35,36,121,122,209,210,235,236,257,258,284,285,322,323,332,333,349,350,359,360,376,377,403,404,420,421,476,477,504,505,551,552]},
+"188": {"ghunnah":[133,136],"ikhfa":[156,159],"ikhfa_shafawi":[30,34,40,44],"idghaam_ghunnah":[112,118],"lam_shamsiyyah":[132,133],"madd_2":[25,26,49,50,127,128],"madd_246":[170,171],"madd_munfasil":[14,16,71,73],"qalqalah":[59,61],"silent":[16,18,64,66,103,105],"hamzat_wasl":[44,45,80,81,131,132,142,143]},
+"189": {"ghunnah":[57,60,142,145],"ikhfa":[97,101,122,126],"lam_shamsiyyah":[56,57],"madd_2":[47,48,139,140,201,202],"madd_246":[248,249],"qalqalah":[197,199],"silent":[106,108,176,178,217,219],"hamzat_wasl":[20,21,66,67,84,85,109,110,146,147,160,161,179,180,210,211,220,221]},
+"190": {"ghunnah":[81,84],"madd_2":[4,5,47,48],"madd_246":[116,117],"madd_munfasil":[74,76],"silent":[10,12,76,78],"hamzat_wasl":[25,26,33,34,85,86,105,106]},
+"191": {"ikhfa":[140,143,200,204],"idghaam_shafawi":[51,56],"madd_2":[127,128,179,180,204,205,234,235,254,255],"madd_246":[259,260],"madd_muttasil":[244,246],"qalqalah":[3,5,218,220],"hamzat_wasl":[2,3,82,83,107,108,144,145,156,157,217,218,249,250]},
+"192": {"ghunnah":[22,25],"ikhfa":[8,11],"idghaam_no_ghunnah":[40,45],"madd_246":[47,48],"silent":[15,17],"hamzat_wasl":[7,8,26,27]},
+"193": {"ikhfa":[79,82],"idghaam_ghunnah":[42,46],"lam_shamsiyyah":[55,56,119,120],"madd_2":[4,5,101,102,123,124],"madd_246":[128,129],"qalqalah":[97,99],"silent":[86,88],"hamzat_wasl":[54,55,78,79,118,119]},
+"194": {"ghunnah":[187,190],"ikhfa":[65,69],"lam_shamsiyyah":[1,2,24,25],"madd_2":[55,56],"madd_246":[214,215],"madd_munfasil":[180,182],"silent":[105,107,160,162,182,184],"hamzat_wasl":[10,11,23,24,33,34,46,47,74,75,97,98,130,131,153,154,163,164,173,174,191,192,204,205]},
+"195": {"ghunnah":[100,103],"ikhfa":[4,7],"lam_shamsiyyah":[70,71],"madd_246":[131,132],"madd_munfasil":[93,95],"silent":[10,12,46,48,95,97],"hamzat_wasl":[25,26,69,70,104,105,120,121]},
+"196": {"ghunnah":[6,9,595,598],"ikhfa":[169,173,179,182,242,246,276,280,291,294,301,305,421,425,478,482,488,492],"idghaam_ghunnah":[209,215,237,242],"idghaam_no_ghunnah":[215,220,379,384,502,507],"idghaam_shafawi":[182,187],"madd_2":[163,164,226,227,408,409,492,493,525,526],"madd_246":[622,623],"madd_munfasil":[203,205,284,286,588,590],"qalqalah":[92,94,137,139,149,151,232,234,370,372,391,393,440,442,623,624],"silent":[10,12,112,114,568,570,590,592],"hamzat_wasl":[13,14,24,25,70,71,87,88,144,145,315,316,333,334,348,349,365,366,427,428,536,537,548,549,561,562,571,572,581,582,599,600,615,616]},
+"197": {"ghunnah":[50,53,185,188],"ikhfa":[30,34,36,40],"idghaam_ghunnah":[16,21,145,149],"lam_shamsiyyah":[197,198,206,207],"madd_2":[28,29],"madd_246":[250,251],"madd_munfasil":[231,233],"qalqalah":[210,212,251,252],"silent":[132,134,178,180,235,237],"hamzat_wasl":[54,55,108,109,158,159,196,197,205,206,219,220,241,242]},
+"198": {"ikhfa":[28,32,99,103,124,127,185,189,189,192,197,201],"idghaam_ghunnah":[47,53],"idghaam_no_ghunnah":[53,58],"idghaam_shafawi":[83,88,192,197],"lam_shamsiyyah":[217,218],"madd_2":[97,98,175,176,207,208],"madd_246":[226,227],"madd_munfasil":[72,74],"madd_6":[221,223],"qalqalah":[32,34,201,203],"silent":[39,41,111,113],"hamzat_wasl":[103,104,114,115,128,129,140,141,153,154,216,217]},
+"199": {"ghunnah":[2,5,39,42,73,76],"idghaam_no_ghunnah":[91,96],"lam_shamsiyyah":[38,39],"madd_246":[98,99],"silent":[14,16,60,62],"hamzat_wasl":[37,38,48,49,63,64,77,78]},
+"200": {"ghunnah":[111,114],"ikhfa":[99,104],"idghaam_ghunnah":[120,124],"idghaam_shafawi":[16,21],"lam_shamsiyyah":[110,111,154,155],"madd_2":[23,24,174,175],"madd_246":[202,203],"madd_munfasil":[137,139],"madd_muttasil":[72,74],"qalqalah":[203,204],"silent":[43,45],"hamzat_wasl":[35,36,46,47,109,110,153,154,180,181]},
+"201": {"ghunnah":[112,115],"idghaam_ghunnah":[13,17,64,68,92,96],"idghaam_shafawi":[8,13],"lam_shamsiyyah":[47,48,111,112],"madd_246":[115,116],"madd_munfasil":[30,32],"hamzat_wasl":[46,47,72,73,110,111]},
+"202": {"ghunnah":[31,34],"idghaam_ghunnah":[26,31],"madd_246":[71,72],"madd_muttasil":[6,8],"qalqalah":[72,73],"silent":[2,4,43,45],"hamzat_wasl":[48,49,64,65]},
+"203": {"ghunnah":[194,197],"ikhfa":[47,51,53,57,107,111],"idghaam_ghunnah":[33,38],"madd_2":[45,46],"madd_246":[219,220],"madd_munfasil":[23,25,84,86,123,125,187,189],"silent":[10,12,167,169,189,191],"hamzat_wasl":[2,3,13,14,149,150,160,161,170,171,180,181]},
+"204": {"ghunnah":[9,12],"idghaam_ghunnah":[18,22],"lam_shamsiyyah":[8,9,58,59],"madd_2":[39,40,53,54,110,111],"madd_246":[134,135],"silent":[52,53],"hamzat_wasl":[7,8,45,46,57,58,79,80,127,128]},
+"205": {"ghunnah":[82,85],"lam_shamsiyyah":[81,82],"madd_246":[119,120],"qalqalah":[120,121],"hamzat_wasl":[29,30,68,69,80,81,92,93,112,113]},
+"206": {"ghunnah":[84,87],"madd_2":[78,79],"madd_246":[108,109],"qalqalah":[109,110],"hamzat_wasl":[19,20,26,27,45,46,58,59,101,102]},
+"207": {"ghunnah":[9,12],"iqlab":[83,87],"idghaam_ghunnah":[18,22],"lam_shamsiyyah":[8,9],"madd_246":[95,96],"madd_muttasil":[44,46],"qalqalah":[38,40,96,97],"hamzat_wasl":[7,8,37,38,59,60,69,70,88,89]},
+"208": {"ghunnah":[113,116],"idghaam_ghunnah":[67,71,133,138],"lam_shamsiyyah":[50,51,99,100],"madd_2":[94,95,107,108,118,119],"madd_246":[140,141],"madd_munfasil":[2,4],"madd_6":[61,63],"qalqalah":[35,37],"silent":[31,33,42,44,85,87],"hamzat_wasl":[13,14,34,35,49,50,98,99]},
+"209": {"ghunnah":[76,79],"ikhfa":[4,8],"iqlab":[20,23],"idghaam_shafawi":[14,19],"madd_2":[56,57],"madd_246":[100,101],"madd_munfasil":[69,71],"madd_muttasil":[35,37],"silent":[71,73],"hamzat_wasl":[46,47,62,63,80,81]},
+"210": {"ikhfa":[7,10],"idghaam_ghunnah":[26,30,58,63],"madd_246":[146,147],"madd_munfasil":[21,23],"madd_muttasil":[86,88],"hamzat_wasl":[41,42,66,67,79,80,104,105,122,123,139,140]},
+"211": {"ghunnah":[134,137],"iqlab":[57,61,106,109],"idghaam_ghunnah":[68,72,74,78],"idghaam_shafawi":[43,48],"madd_2":[40,41],"madd_246":[161,162],"madd_munfasil":[9,11],"madd_muttasil":[18,20,121,123],"qalqalah":[162,163],"hamzat_wasl":[95,96,138,139,154,155]},
+"212": {"idghaam_ghunnah":[167,171],"lam_shamsiyyah":[42,43],"madd_2":[37,38,140,141],"madd_246":[191,192],"madd_muttasil":[173,175],"qalqalah":[192,193],"silent":[26,28,36,37,89,91,112,114],"hamzat_wasl":[29,30,41,42,71,72,94,95,104,105,133,134,148,149]},
+"213": {"ghunnah":[8,11,17,20,52,55,151,154],"ikhfa":[31,35,81,84,94,97],"iqlab":[235,238,280,285],"idghaam_ghunnah":[21,25,403,407,427,432],"lam_shamsiyyah":[7,8,51,52,150,151],"madd_2":[25,26,60,61,116,117,271,272,381,382,425,426],"madd_246":[438,439],"madd_muttasil":[250,252,409,411],"silent":[175,177,329,331,348,350],"hamzat_wasl":[6,7,42,43,50,51,109,110,122,123,149,150,165,166,190,191,213,214,261,262,303,304,311,312,338,339,362,363,385,386]},
+"214": {"ghunnah":[37,40,47,50,248,251],"ikhfa":[18,22,91,95],"idghaam_shafawi":[60,65,101,106],"lam_shamsiyyah":[133,134,176,177],"madd_2":[215,216],"madd_246":[271,272],"madd_munfasil":[243,245],"madd_muttasil":[125,127,140,142],"qalqalah":[9,11,22,24,95,97,272,273],"silent":[29,31,86,88,156,158,206,208],"hamzat_wasl":[32,33,70,71,116,117,132,133,175,176,188,189,231,232,259,260]},
+"215": {"ghunnah":[186,189],"ikhfa":[24,27,45,48,65,69,180,184],"idghaam_shafawi":[52,57],"lam_shamsiyyah":[142,143],"madd_2":[75,76,111,112,126,127,202,203],"madd_246":[208,209],"madd_munfasil":[40,42],"qalqalah":[48,50,92,94,136,138],"silent":[167,169],"hamzat_wasl":[87,88,104,105,119,120,135,136,141,142,190,191]},
+"216": {"ikhfa":[63,67,120,124,186,189],"idghaam_ghunnah":[83,88,139,144],"idghaam_no_ghunnah":[41,46,98,103,153,158],"madd_246":[204,205],"madd_munfasil":[57,60,114,117],"silent":[74,76,130,132],"hamzat_wasl":[18,19,165,166]},
+"217": {"ghunnah":[486,489],"ikhfa":[47,51,66,70,92,96,191,194,298,302,348,351,356,360,389,393],"iqlab":[117,121],"idghaam_ghunnah":[80,84,333,337],"lam_shamsiyyah":[21,22,434,435,485,486],"madd_2":[124,125,171,172,262,263,322,323,365,366,421,422,480,481,507,508],"madd_246":[512,513],"madd_muttasil":[399,401,467,469],"qalqalah":[343,345],"silent":[326,328,395,397,463,465],"hamzat_wasl":[20,21,30,31,102,103,128,129,140,141,195,196,205,206,231,232,315,316,433,434,446,447,484,485]},
+"218": {"ghunnah":[2,5],"idghaam_no_ghunnah":[139,144],"madd_2":[54,55],"madd_246":[146,147],"madd_muttasil":[89,91],"silent":[24,26,47,49,60,62,85,87],"hamzat_wasl":[6,7,29,30,75,76,115,116,125,126]},
+"219": {"ghunnah":[89,92],"ikhfa":[64,68,163,166],"idghaam_ghunnah":[72,76,122,127],"lam_shamsiyyah":[88,89],"madd_2":[80,81,191,192,230,231],"madd_246":[257,258],"madd_munfasil":[56,58,108,110],"hamzat_wasl":[20,21,32,33,177,178,207,208,222,223]},
+"220": {"ghunnah":[219,222],"ikhfa":[99,103],"idghaam_ghunnah":[93,97],"idghaam_no_ghunnah":[78,83],"lam_shamsiyyah":[5,6],"madd_2":[59,60,124,125],"madd_246":[243,244],"madd_muttasil":[189,191],"hamzat_wasl":[4,5,17,18,52,53,134,135,151,152,168,169,194,195,223,224]},
+"221": {"ghunnah":[46,49,265,268,304,307,365,368],"ikhfa":[8,11,127,130],"idghaam_ghunnah":[59,64,78,83,83,88,95,99,180,185,197,202,202,207,212,216],"lam_shamsiyyah":[264,265,364,365],"madd_2":[28,29,336,337,355,356,360,361],"madd_246":[395,396],"madd_munfasil":[288,290],"madd_muttasil":[240,242],"qalqalah":[177,179,249,251,284,286],"silent":[14,16,133,135,168,170,236,238,290,292],"hamzat_wasl":[17,18,136,137,263,264,274,275,299,300,312,313]},
+"222": {"ghunnah":[66,69,108,111,160,163,197,200],"ikhfa":[46,51],"lam_shamsiyyah":[65,66,218,219],"madd_2":[225,226],"madd_246":[256,257],"madd_muttasil":[71,73],"qalqalah":[99,101,122,124],"silent":[61,63],"hamzat_wasl":[22,23,51,52,64,65,80,81,187,188,201,202,217,218,242,243]},
+"223": {"ghunnah":[51,54,129,132],"ikhfa":[83,86],"idghaam_no_ghunnah":[18,23],"idghaam_shafawi":[134,139],"madd_2":[141,142],"madd_246":[169,170],"madd_munfasil":[122,124],"madd_muttasil":[4,6],"silent":[35,37,76,78,102,104,124,126],"hamzat_wasl":[95,96,105,106,115,116,158,159]},
+"224": {"ghunnah":[103,106],"ikhfa":[54,58],"idghaam_no_ghunnah":[33,38],"lam_shamsiyyah":[102,103],"madd_2":[44,45],"madd_246":[132,133],"qalqalah":[8,10],"silent":[15,17,64,66,77,79,91,93],"hamzat_wasl":[18,19,101,102,112,113]},
+"225": {"ikhfa_shafawi":[78,82],"idghaam_ghunnah":[65,69],"lam_shamsiyyah":[30,31],"madd_2":[50,51,62,63],"madd_246":[129,130],"madd_munfasil":[41,43],"hamzat_wasl":[19,20,29,30,109,110]},
+"226": {"ghunnah":[88,91],"ikhfa":[68,72,74,78],"idghaam_ghunnah":[24,29],"idghaam_no_ghunnah":[106,111],"madd_246":[113,114],"madd_muttasil":[31,33,78,80],"hamzat_wasl":[92,93]},
+"227": {"ghunnah":[32,35],"lam_shamsiyyah":[18,19],"madd_2":[24,25],"madd_246":[56,57],"silent":[14,16],"hamzat_wasl":[17,18,36,37]},
+"228": {"ghunnah":[43,46,84,87,138,141,148,151,158,161,208,211,229,232,279,282,306,309,347,350],"ikhfa":[36,39,144,148],"idghaam_ghunnah":[64,68,90,94,270,275,358,362],"lam_shamsiyyah":[329,330],"madd_2":[14,15,51,52,239,240,268,269],"madd_246":[382,383],"madd_munfasil":[124,126,257,259],"madd_muttasil":[61,63],"silent":[259,261],"hamzat_wasl":[2,3,114,115,164,165,174,175,184,185,290,291,312,313,362,363]},
+"229": {"ghunnah":[114,117,134,137],"ikhfa":[98,102],"iqlab":[32,36,60,64],"idghaam_ghunnah":[73,77,157,161,344,348],"lam_shamsiyyah":[1,2,393,394],"madd_2":[7,8,71,72,296,297,397,398],"madd_246":[402,403],"madd_munfasil":[117,119,152,154,166,168],"madd_muttasil":[380,382],"silent":[109,111,376,378],"hamzat_wasl":[193,194,241,242,282,283,313,314,364,365,392,393]},
+"230": {"ghunnah":[151,154],"ikhfa":[4,8,59,62,87,91,147,151],"iqlab":[40,43],"idghaam_ghunnah":[129,133,159,163,231,235],"madd_2":[35,36,81,82],"madd_246":[241,242],"madd_munfasil":[124,126,142,144,154,156],"hamzat_wasl":[178,179,203,204]},
+"231": {"ghunnah":[22,25,51,54,68,71,99,102,132,135,401,404],"ikhfa":[302,305],"ikhfa_shafawi":[357,361],"idghaam_ghunnah":[113,117,164,168,249,254],"idghaam_no_ghunnah":[142,148],"idghaam_shafawi":[316,321],"lam_shamsiyyah":[21,22],"madd_2":[177,178,205,206,232,233,331,332,363,364],"madd_246":[432,433],"madd_munfasil":[222,224,297,299,394,396],"madd_muttasil":[27,29],"qalqalah":[13,15,187,189],"silent":[157,159,224,226,262,264,374,376,396,398],"hamzat_wasl":[20,21,236,237,254,255,274,275,324,325,337,338,367,368,377,378,387,388,405,406]},
+"232": {"ghunnah":[22,25,51,54,72,75,101,104],"ikhfa":[82,85,172,176,182,185,290,293],"ikhfa_shafawi":[131,135],"idghaam_ghunnah":[78,82],"lam_shamsiyyah":[21,22],"madd_2":[96,97,115,116,150,151,168,169,232,233],"madd_246":[308,309],"madd_muttasil":[27,29],"qalqalah":[13,15,260,262],"silent":[120,122],"hamzat_wasl":[20,21,135,136,199,200,209,210,219,220,269,270]},
+"233": {"ghunnah":[38,41,88,91,140,143,156,159,568,571],"ikhfa":[346,350,377,381,425,429],"ikhfa_shafawi":[515,519],"iqlab":[235,239],"idghaam_ghunnah":[82,86,354,359],"idghaam_mutajanisayn":[416,417],"idghaam_no_ghunnah":[264,269],"idghaam_shafawi":[498,503],"lam_shamsiyyah":[93,94],"madd_2":[7,8,12,13,33,34,130,131,229,230,271,272,283,284,313,314,450,451],"madd_246":[602,603],"madd_munfasil":[439,441,503,505,561,563],"madd_6":[221,223],"silent":[441,443,541,543,563,565],"hamzat_wasl":[2,3,92,93,113,114,162,163,293,294,519,520,534,535,544,545,554,555,572,573]},
+"234": {"ghunnah":[82,85,141,144,200,203],"ikhfa":[28,31,75,78,113,118,193,196],"idghaam_ghunnah":[54,59,104,108],"madd_2":[52,53],"madd_246":[251,252],"madd_munfasil":[188,190],"hamzat_wasl":[2,3,206,207,221,222]},
+"235": {"ghunnah":[65,68,126,129,149,152,179,182,262,265,325,328,396,399],"ikhfa":[86,89,99,102,200,204,357,360],"ikhfa_shafawi":[41,45],"idghaam_ghunnah":[218,224,230,235],"idghaam_no_ghunnah":[160,165],"lam_shamsiyyah":[64,65,261,262],"madd_2":[47,48,157,158,295,296,307,308],"madd_246":[420,421],"madd_munfasil":[94,96,195,197,318,320,352,354,389,391],"madd_muttasil":[70,72],"qalqalah":[56,58,253,255,281,283],"silent":[210,212,248,250,320,322,391,393],"hamzat_wasl":[63,64,116,117,260,261,288,289,311,312,329,330,369,370,382,383,400,401]},
+"236": {"ghunnah":[42,45,71,74,96,99,122,125],"ikhfa":[26,30],"iqlab":[189,194],"idghaam_ghunnah":[108,112],"lam_shamsiyyah":[41,42],"madd_2":[151,152,181,182,187,188],"madd_246":[232,233],"madd_muttasil":[47,49],"qalqalah":[33,35,166,168],"silent":[89,91],"hamzat_wasl":[40,41,132,133,161,162,195,196,221,222]},
+"237": {"ghunnah":[20,23,49,52,75,78,180,183,267,270],"ikhfa":[4,8,26,30,37,41,87,91,193,197,236,239],"idghaam_ghunnah":[123,127],"lam_shamsiyyah":[179,180,217,218],"madd_2":[167,168],"madd_246":[301,302],"madd_munfasil":[118,120,201,203],"qalqalah":[11,13,30,32,57,59,171,173,208,210,221,223],"silent":[148,150,203,205,241,243],"hamzat_wasl":[151,152,178,179,244,245,271,272]},
+"238": {"lam_shamsiyyah":[18,19,33,34],"madd_2":[2,3,26,27,40,41,77,78],"madd_246":[82,83],"silent":[8,10,39,40,64,66],"hamzat_wasl":[17,18,32,33,44,45]},
+"239": {"ikhfa":[40,45,56,59],"idghaam_shafawi":[98,103],"madd_246":[129,130],"madd_munfasil":[49,51],"silent":[72,74,118,120],"hamzat_wasl":[64,65,75,76]},
+"240": {"ghunnah":[198,201],"ikhfa":[28,31,124,128,191,194],"idghaam_ghunnah":[54,59,204,209,215,219],"idghaam_no_ghunnah":[65,70],"idghaam_shafawi":[81,86],"madd_2":[52,53,76,77,88,89],"madd_246":[239,240],"madd_munfasil":[186,188],"qalqalah":[137,139],"hamzat_wasl":[2,3,99,100,219,220]},
+"241": {"iqlab":[25,29],"madd_2":[15,16,23,24],"madd_246":[66,67],"hamzat_wasl":[30,31,56,57]},
+"242": {"madd_2":[4,5,40,41,45,46],"madd_246":[67,68],"hamzat_wasl":[20,21]},
+"243": {"ghunnah":[120,123,138,141,171,174,185,188,200,203],"ikhfa":[40,44],"lam_shamsiyyah":[170,171,199,200],"madd_2":[46,47,130,131,182,183],"madd_246":[219,220],"silent":[35,37,115,117],"hamzat_wasl":[18,19,76,77,101,102,142,143,169,170,198,199]},
+"244": {"ghunnah":[49,52],"madd_2":[4,5],"madd_246":[73,74],"madd_munfasil":[42,44],"silent":[10,12,44,46],"hamzat_wasl":[25,26,35,36,53,54]},
+"245": {"ikhfa":[3,7,47,52,80,85],"idghaam_ghunnah":[91,95],"madd_2":[56,57,63,64],"madd_246":[143,144],"madd_munfasil":[69,71],"qalqalah":[19,21,105,107,116,118],"silent":[118,119],"hamzat_wasl":[9,10,26,27,95,96]},
+"246": {"ghunnah":[348,351],"ikhfa":[184,188,315,319],"iqlab":[31,34,57,60,436,440],"idghaam_ghunnah":[126,132,407,413],"idghaam_no_ghunnah":[97,102],"lam_shamsiyyah":[442,443],"madd_2":[134,135,226,227,268,269,321,322,446,447],"madd_246":[451,452],"madd_munfasil":[37,39,71,74,254,256],"madd_muttasil":[46,48,336,338],"qalqalah":[108,110,298,300,307,309,332,334],"silent":[86,88,232,234,241,243,391,393],"hamzat_wasl":[18,19,107,108,152,153,204,205,286,287,371,372,422,423,441,442]},
+"247": {"ghunnah":[29,32,89,92,208,211],"ikhfa":[74,79,261,265],"idghaam_ghunnah":[183,188,319,323],"madd_2":[228,229,252,253,315,316,342,343],"madd_246":[352,353],"madd_munfasil":[82,84],"madd_muttasil":[325,327],"qalqalah":[43,45],"silent":[84,86],"hamzat_wasl":[33,34,108,109,147,148,191,192,212,213,220,221,267,268,279,280,291,292,332,333]},
+"248": {"ghunnah":[29,32,128,131,200,203],"ikhfa":[236,240,240,243],"idghaam_ghunnah":[54,58,95,100,123,128],"idghaam_no_ghunnah":[100,105,224,229],"idghaam_shafawi":[243,248],"lam_shamsiyyah":[70,71],"madd_2":[164,165,210,211],"madd_246":[254,255],"madd_munfasil":[49,51],"madd_muttasil":[189,191],"hamzat_wasl":[69,70,182,183]},
+"249": {"ghunnah":[4,7,46,49,111,114,143,146,152,155,249,252,382,385,391,394],"ikhfa":[78,82,84,88,425,429,432,436,458,462],"ikhfa_shafawi":[69,73],"iqlab":[187,191,468,472],"idghaam_ghunnah":[232,238],"idghaam_no_ghunnah":[120,125],"idghaam_shafawi":[396,401,420,425],"lam_shamsiyyah":[504,505],"madd_2":[148,149,198,199,263,264,299,300,360,361,403,404,508,509],"madd_246":[513,514],"madd_munfasil":[155,157],"qalqalah":[60,62,130,132],"silent":[209,211,290,292,307,309,407,409],"hamzat_wasl":[27,28,50,51,170,171,272,273,328,329,368,369,410,411,480,481,490,491,503,504]},
+"250": {"ghunnah":[4,7],"ikhfa":[115,118],"idghaam_ghunnah":[86,91],"madd_2":[41,42,145,146],"madd_246":[150,151],"madd_munfasil":[59,61],"qalqalah":[83,85,101,103],"silent":[16,18,49,51],"hamzat_wasl":[114,115,130,131,140,141]},
+"251": {"ghunnah":[116,119,157,160,212,215],"ikhfa_shafawi":[11,15,172,176],"idghaam_no_ghunnah":[181,186],"lam_shamsiyyah":[156,157],"madd_2":[44,45,65,66,112,113,209,210,246,247],"madd_246":[251,252],"madd_muttasil":[125,127],"hamzat_wasl":[22,23,69,70,77,78,89,90,147,148,155,156,195,196,216,217,241,242]},
+"252": {"ghunnah":[59,62],"madd_2":[12,13],"madd_246":[83,84],"hamzat_wasl":[16,17,46,47,72,73]},
+"253": {"ghunnah":[415,418],"ikhfa":[65,69,360,364],"iqlab":[244,247,260,263],"idghaam_ghunnah":[51,56,111,115],"idghaam_shafawi":[60,65,254,259,331,336,355,360],"lam_shamsiyyah":[8,9],"madd_2":[109,110,158,159,173,174,296,297,304,305,412,413],"madd_246":[444,445],"madd_muttasil":[204,206,275,277,378,380],"qalqalah":[134,136,169,171,222,224,396,398,445,446],"silent":[320,322,405,407],"hamzat_wasl":[7,8,75,76,133,134,148,149,185,186,209,210,221,222,231,232,286,287,310,311,383,384,395,396,419,420]},
+"254": {"ghunnah":[48,51],"ikhfa":[37,40,69,73,108,112],"idghaam_ghunnah":[80,84,128,132,144,148],"idghaam_no_ghunnah":[96,101],"idghaam_shafawi":[64,69],"lam_shamsiyyah":[168,169],"madd_2":[61,62,140,141,153,154,172,173],"madd_246":[177,178],"madd_munfasil":[2,4,30,32],"qalqalah":[57,59,73,75],"silent":[32,34,43,45],"hamzat_wasl":[13,14,148,149,167,168]},
+"255": {"ikhfa":[141,145,166,169],"idghaam_ghunnah":[75,79,266,271],"idghaam_no_ghunnah":[88,93],"lam_shamsiyyah":[106,107,325,326],"madd_2":[17,18,68,69,95,96,112,113,115,116,191,192,331,332,334,335,366,367],"madd_246":[405,406],"madd_munfasil":[10,12,171,173,282,284],"madd_muttasil":[300,302],"hamzat_wasl":[33,34,42,43,105,106,129,130,147,148,324,325,340,341,387,388,398,399]},
+"256": {"ikhfa":[167,170],"iqlab":[105,108],"idghaam_ghunnah":[71,75],"idghaam_mutajanisayn":[30,31],"lam_shamsiyyah":[20,21,44,45,85,86],"madd_2":[89,90],"madd_246":[204,205],"madd_munfasil":[2,4],"hamzat_wasl":[19,20,43,44,58,59,84,85,109,110,124,125,138,139,150,151,166,167,184,185]},
+"257": {"ghunnah":[76,79,158,161,209,212],"idghaam_shafawi":[47,52,148,153],"lam_shamsiyyah":[56,57,75,76,124,125,157,158,172,173,208,209],"madd_2":[64,65,128,129,180,181,203,204,230,231],"madd_246":[235,236],"madd_munfasil":[101,103],"madd_muttasil":[114,116,190,192],"silent":[34,36,103,105,186,188],"hamzat_wasl":[16,17,55,56,74,75,85,86,123,124,156,157,171,172,207,208]},
+"258": {"ghunnah":[206,209],"lam_shamsiyyah":[229,230,342,343],"madd_2":[40,41,43,44,72,73,111,112,114,115,140,141,171,172,195,196,198,199,346,347],"madd_246":[351,352],"madd_munfasil":[58,60],"madd_6":[28,30],"qalqalah":[36,38,107,109,191,193],"hamzat_wasl":[18,19,76,77,84,85,126,127,210,211,228,229,243,244,273,274,294,295,311,312,331,332,341,342]},
+"259": {"ghunnah":[80,83,164,167,324,327,383,386,436,439,463,466,501,504],"ikhfa":[160,164,238,242,273,277,278,281,333,336,393,396,425,428,456,461,531,535],"idghaam_ghunnah":[35,39],"idghaam_no_ghunnah":[377,382],"lam_shamsiyyah":[382,383],"madd_2":[92,93,96,97,176,177,482,483],"madd_246":[537,538],"qalqalah":[362,364],"silent":[149,151,262,264],"hamzat_wasl":[7,8,102,103,139,140,277,278,332,333,392,393,405,406,505,506]},
+"260": {"ghunnah":[122,125,182,185,197,200,236,239,250,253,261,264,297,300],"ikhfa":[87,91,245,250],"idghaam_ghunnah":[156,161,227,232,282,287],"idghaam_no_ghunnah":[109,114],"lam_shamsiyyah":[165,166],"madd_2":[19,20,22,23,106,107],"madd_246":[321,322],"qalqalah":[15,17,116,118,202,204,255,257],"hamzat_wasl":[54,55,164,165,201,202,254,255,287,288,301,302]},
+"261": {"ikhfa":[20,23],"iqlab":[83,85,121,123],"idghaam_ghunnah":[127,132,145,149,171,175],"madd_2":[35,36,161,162,194,195],"madd_246":[204,205],"madd_muttasil":[177,179],"qalqalah":[93,95],"silent":[132,134],"hamzat_wasl":[8,9,55,56,149,150,184,185]},
+"262": {"ghunnah":[57,60,95,98],"ikhfa":[12,15,84,87,134,137],"idghaam_ghunnah":[97,102],"idghaam_no_ghunnah":[110,116],"madd_2":[27,28],"madd_246":[191,192],"madd_munfasil":[79,81,104,106],"qalqalah":[123,125],"silent":[90,92],"hamzat_wasl":[47,48]},
+"263": {"ikhfa":[41,45],"idghaam_ghunnah":[5,10,16,20,36,41,50,54,68,73],"madd_246":[93,94],"madd_munfasil":[62,64],"hamzat_wasl":[73,74]},
+"264": {"ghunnah":[70,73,124,127,302,305],"ikhfa":[98,101,225,229,246,250],"ikhfa_shafawi":[61,65],"idghaam_ghunnah":[297,302],"idghaam_no_ghunnah":[265,271],"lam_shamsiyyah":[123,124],"madd_2":[56,57,111,112,189,190,238,239,258,259,354,355],"madd_246":[359,360],"madd_munfasil":[2,4],"madd_muttasil":[117,119],"qalqalah":[40,42,275,277],"silent":[31,33,47,49,314,316],"hamzat_wasl":[13,14,65,66,76,77,88,89,122,123,148,149,158,159,168,169,319,320,339,340,349,350]},
+"265": {"ghunnah":[116,119],"ikhfa":[21,24,95,98,151,155,213,217],"iqlab":[120,124],"idghaam_ghunnah":[84,90,221,225],"idghaam_no_ghunnah":[189,194],"madd_2":[36,37],"madd_246":[255,256],"madd_muttasil":[51,53],"qalqalah":[45,47,127,129,201,203],"hamzat_wasl":[9,10,44,45,66,67,225,226]},
+"266": {"ghunnah":[41,44],"ikhfa":[23,27,71,75,83,87,123,127,183,187,218,222,230,234],"idghaam_ghunnah":[45,50,50,55,59,63],"lam_shamsiyyah":[132,133],"madd_2":[37,38,104,105,112,113,140,141,172,173,250,251,289,290],"madd_246":[316,317],"madd_munfasil":[207,209],"madd_muttasil":[191,193],"qalqalah":[75,77],"hamzat_wasl":[95,96,131,132,156,157,234,235,266,267,281,282]},
+"267": {"ghunnah":[80,83,130,133,238,241],"ikhfa":[37,40,48,52,159,162,202,206],"ikhfa_shafawi":[176,180],"idghaam_shafawi":[102,107],"madd_2":[57,58],"madd_246":[262,263],"madd_munfasil":[2,4,30,32,83,85,197,199,231,233],"qalqalah":[69,71,92,94,263,264],"silent":[32,34,43,45,136,138,213,215,233,235],"hamzat_wasl":[13,14,110,111,139,140,224,225,242,243]},
+"268": {"ikhfa_shafawi":[46,50],"idghaam_ghunnah":[94,99,111,116],"idghaam_shafawi":[82,87],"lam_shamsiyyah":[1,2],"madd_2":[9,10,126,127],"madd_246":[136,137],"madd_muttasil":[59,61],"qalqalah":[29,31],"hamzat_wasl":[24,25,50,51,66,67,116,117]},
+"269": {"ikhfa":[78,83],"idghaam_ghunnah":[22,26,37,41,87,92],"madd_246":[134,135],"madd_munfasil":[112,114],"madd_muttasil":[28,30],"qalqalah":[62,64,135,136],"silent":[117,119,122,124],"hamzat_wasl":[8,9,46,47,125,126]},
+"270": {"ghunnah":[65,68],"ikhfa":[9,12,59,63,117,120],"idghaam_ghunnah":[21,26,51,56],"idghaam_shafawi":[16,21,46,51],"lam_shamsiyyah":[97,98],"madd_2":[87,88,101,102],"madd_246":[120,121],"madd_munfasil":[4,6],"qalqalah":[12,14],"hamzat_wasl":[69,70]},
+"271": {"ghunnah":[33,36],"ikhfa":[2,6,47,51,123,126,131,135],"idghaam_no_ghunnah":[99,104],"idghaam_shafawi":[126,131],"lam_shamsiyyah":[15,16],"madd_2":[23,24],"madd_246":[181,182],"madd_muttasil":[82,84],"qalqalah":[6,8],"silent":[11,13],"hamzat_wasl":[14,15,73,74,151,152]},
+"272": {"ghunnah":[35,38],"ikhfa":[76,79,95,99,103,106,121,124,172,175,216,219],"idghaam_ghunnah":[57,61,191,195],"madd_2":[22,23,32,33],"madd_246":[234,235],"madd_muttasil":[63,65,144,146],"qalqalah":[138,140,151,153],"silent":[82,84,178,180],"hamzat_wasl":[39,40,137,138,156,157]},
+"273": {"ghunnah":[197,200,248,251],"ikhfa":[81,86,223,226,242,246],"ikhfa_shafawi":[163,167],"idghaam_ghunnah":[212,217],"lam_shamsiyyah":[141,142,196,197],"madd_2":[172,173,264,265],"madd_246":[270,271],"madd_muttasil":[10,12,130,132],"silent":[34,36,229,231],"hamzat_wasl":[15,16,49,50,88,89,111,112,140,141,195,196,252,253]},
+"274": {"ghunnah":[49,52],"ikhfa":[12,15,77,81,101,104],"ikhfa_shafawi":[32,36],"idghaam_ghunnah":[62,67],"lam_shamsiyyah":[48,49],"madd_2":[27,28],"madd_246":[158,159],"qalqalah":[90,92],"hamzat_wasl":[36,37,47,48]},
+"275": {"ghunnah":[131,134,151,154,376,379],"ikhfa":[241,245,282,285],"idghaam_ghunnah":[262,267],"idghaam_no_ghunnah":[267,272],"lam_shamsiyyah":[23,24,93,94,176,177,226,227,375,376],"madd_2":[30,31,101,102,121,122,183,184,233,234,251,252,277,278,296,297,370,371,397,398],"madd_246":[402,403],"madd_munfasil":[144,146,319,321],"madd_muttasil":[245,247,357,359],"silent":[29,30,31,33,146,148,182,183,184,186,232,233,234,236,353,355],"hamzat_wasl":[22,23,70,71,92,93,110,111,158,159,175,176,197,198,205,206,225,226,281,282,328,329,374,375]},
+"276": {"lam_shamsiyyah":[18,19,40,41],"madd_2":[25,26,48,49],"madd_246":[93,94],"silent":[24,25,26,28],"hamzat_wasl":[9,10,17,18,39,40,54,55]},
+"277": {"ghunnah":[2,5],"ikhfa":[122,125],"lam_shamsiyyah":[40,41,67,68,91,92],"madd_2":[44,45,49,50,74,75,98,99],"madd_246":[179,180],"qalqalah":[111,113],"silent":[24,26,36,38,63,65,73,74,87,89,97,98],"hamzat_wasl":[6,7,39,40,66,67,90,91]},
+"278": {"ikhfa":[93,97,97,100],"idghaam_shafawi":[100,105],"lam_shamsiyyah":[79,80],"madd_246":[111,112],"madd_munfasil":[2,4,86,88],"silent":[31,33,41,43,59,61,85,86,88,90],"hamzat_wasl":[13,14,34,35,44,45,78,79]},
+"279": {"ikhfa":[76,80],"idghaam_ghunnah":[43,48],"idghaam_no_ghunnah":[4,9],"madd_2":[70,71,110,111],"madd_246":[148,149],"qalqalah":[80,82],"silent":[21,23,33,35],"hamzat_wasl":[51,52]},
+"280": {"ikhfa":[4,8,23,27,58,62,90,94,94,97],"idghaam_ghunnah":[52,56],"idghaam_no_ghunnah":[78,83],"madd_246":[108,109],"silent":[70,72]},
+"281": {"ghunnah":[54,57],"ikhfa":[17,22],"idghaam_ghunnah":[79,84],"madd_246":[114,115],"silent":[9,11],"hamzat_wasl":[2,3,44,45]},
+"282": {"ghunnah":[82,85,554,557,1074,1077],"ikhfa":[48,51,84,89,312,317,319,323,557,561,591,595,720,724,796,799,876,880,904,908,1056,1060],"ikhfa_shafawi":[51,55],"iqlab":[130,134,1087,1091],"idghaam_ghunnah":[75,80,168,172,399,403,535,539,1036,1040,1050,1054],"idghaam_no_ghunnah":[481,486,500,505],"lam_shamsiyyah":[576,577,667,668,821,822],"madd_2":[282,283,436,437,608,609,634,635,773,774,777,778,827,828,890,891,1079,1080],"madd_246":[1170,1171],"madd_munfasil":[2,4,30,32,66,69,713,715,761,764,841,844,861,863,871,873,989,991],"madd_muttasil":[584,586,675,677],"madd_6":[1024,1026],"qalqalah":[140,142,213,215,292,294,445,447,787,789,812,814,837,839],"silent":[32,34,464,466,695,697,715,717,863,865,991,993,1067,1069,1106,1108],"hamzat_wasl":[13,14,89,90,135,136,195,196,229,230,246,247,267,268,327,328,344,345,440,441,452,453,539,540,575,576,641,642,666,667,800,801,1099,1100,1109,1110,1133,1134,1143,1144]},
+"283": {"ghunnah":[234,237],"ikhfa":[4,8,8,11,51,56,75,79,106,111,248,252],"ikhfa_shafawi":[99,103],"idghaam_ghunnah":[26,30,62,67,216,220],"lam_shamsiyyah":[200,201],"madd_2":[60,61,143,144,150,151,179,180,206,207,258,259],"madd_246":[292,293],"madd_munfasil":[239,241],"qalqalah":[67,69],"silent":[42,44,196,198],"hamzat_wasl":[121,122,129,130,164,165,199,200,262,263]},
+"284": {"ikhfa":[55,59,78,81,208,212],"ikhfa_shafawi":[114,118],"idghaam_ghunnah":[144,148,169,173],"lam_shamsiyyah":[18,19],"madd_2":[24,25,27,28],"madd_246":[214,215],"madd_munfasil":[73,75],"madd_muttasil":[150,152,175,177],"qalqalah":[59,61,110,112],"silent":[64,66],"hamzat_wasl":[17,18,41,42,121,122,182,183]},
+"285": {"ikhfa":[28,31],"idghaam_ghunnah":[166,171],"idghaam_no_ghunnah":[45,50,171,176],"lam_shamsiyyah":[9,10],"madd_2":[55,56,114,115,126,127,138,139,182,183],"madd_246":[256,257],"madd_munfasil":[23,25],"madd_muttasil":[104,106],"silent":[192,194],"hamzat_wasl":[8,9,59,60,90,91,249,250]},
+"286": {"ghunnah":[263,266,310,313],"ikhfa":[193,198,232,236,347,350,366,369],"idghaam_ghunnah":[123,128],"madd_2":[212,213,298,299,358,359,396,397],"madd_246":[401,402],"madd_munfasil":[118,120,133,135,185,187,342,344],"qalqalah":[236,238],"hamzat_wasl":[14,15,82,83,220,221,302,303,317,318,333,334,365,366,381,382,391,392]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/20.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/20.json
index 39f710c..ef7f78e 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/20.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/20.json
@@ -1,133 +1,133 @@
{
-"2": {"ghunnah":[7,10],"madd":[2,4],"wasl":[25,26]},
-"3": {"idgham":[16,21,23,27]},
-"4": {"ghunnah":[2,5,13,16],"idgham":[7,13,39,40],"madd":[45,46,48,49],"wasl":[26,27,38,39,52,53]},
-"5": {"idgham":[1,2],"madd":[9,10],"wasl":[19,20,29,30]},
-"6": {"idgham":[15,16,80,81],"madd":[4,5,21,22,24,25],"wasl":[14,15,38,39,79,80]},
-"7": {"ghunnah":[4,8,31,34],"idgham":[48,49],"madd":[36,37],"qalqalah":[8,10],"wasl":[17,18,47,48]},
-"8": {"madd":[10,12,17,18,47,49],"wasl":[38,39,52,53]},
-"9": {"madd":[12,13]},
-"10": {"ghunnah":[15,20,51,54,133,136],"idgham":[71,77,93,98,132,133],"madd":[44,46,54,56,82,84],"silent":[46,48],"wasl":[37,38,131,132]},
-"11": {"ghunnah":[4,7],"madd":[7,9,15,16,30,31]},
-"12": {"ghunnah":[2,5,46,49],"madd":[5,7],"wasl":[25,26,54,55,63,64]},
-"13": {"wasl":[8,9,22,23]},
-"14": {"ghunnah":[2,5],"idgham":[75,76],"madd":[7,9,26,28,33,34,42,44,82,83],"qalqalah":[59,61],"silent":[81,82],"wasl":[16,17,54,55,74,75]},
-"15": {"ghunnah":[2,5,68,72],"idgham":[7,8],"qalqalah":[50,52],"wasl":[6,7]},
-"16": {"ghunnah":[13,16],"idgham":[29,34],"madd":[67,68],"wasl":[53,54]},
-"17": {"madd":[27,28]},
+"2": {"ikhfa":[7,10],"madd_munfasil":[2,4],"hamzat_wasl":[25,26]},
+"3": {"idghaam_ghunnah":[23,27],"idghaam_no_ghunnah":[16,21]},
+"4": {"ghunnah":[13,16],"ikhfa":[2,5],"idghaam_ghunnah":[7,13],"lam_shamsiyyah":[39,40],"madd_2":[45,46,48,49],"hamzat_wasl":[26,27,38,39,52,53]},
+"5": {"lam_shamsiyyah":[1,2],"madd_2":[9,10],"hamzat_wasl":[19,20,29,30]},
+"6": {"lam_shamsiyyah":[15,16,80,81],"madd_2":[4,5,21,22,24,25],"hamzat_wasl":[14,15,38,39,79,80]},
+"7": {"ghunnah":[31,34],"ikhfa":[4,8],"lam_shamsiyyah":[48,49],"madd_2":[36,37],"qalqalah":[8,10],"hamzat_wasl":[17,18,47,48]},
+"8": {"madd_2":[17,18],"madd_munfasil":[10,12],"madd_muttasil":[47,49],"hamzat_wasl":[38,39,52,53]},
+"9": {"madd_2":[12,13]},
+"10": {"ghunnah":[51,54,133,136],"ikhfa":[15,20],"idghaam_no_ghunnah":[71,77],"idghaam_shafawi":[93,98],"lam_shamsiyyah":[132,133],"madd_munfasil":[44,46,54,56,82,84],"silent":[46,48],"hamzat_wasl":[37,38,131,132]},
+"11": {"ghunnah":[4,7],"madd_2":[15,16,30,31],"madd_munfasil":[7,9]},
+"12": {"ghunnah":[2,5,46,49],"madd_munfasil":[5,7],"hamzat_wasl":[25,26,54,55,63,64]},
+"13": {"hamzat_wasl":[8,9,22,23]},
+"14": {"ghunnah":[2,5],"lam_shamsiyyah":[75,76],"madd_2":[33,34,82,83],"madd_munfasil":[7,9,26,28,42,44],"qalqalah":[59,61],"silent":[81,82],"hamzat_wasl":[16,17,54,55,74,75]},
+"15": {"ghunnah":[2,5],"iqlab":[68,72],"lam_shamsiyyah":[7,8],"qalqalah":[50,52],"hamzat_wasl":[6,7]},
+"16": {"ghunnah":[13,16],"idghaam_no_ghunnah":[29,34],"madd_2":[67,68],"hamzat_wasl":[53,54]},
+"17": {"madd_2":[27,28]},
"18": {"silent":[30,32]},
-"19": {"madd":[18,19]},
-"20": {"ghunnah":[33,37],"madd":[9,10]},
-"21": {"wasl":[51,52]},
-"22": {"madd":[49,51,68,70],"qalqalah":[40,42],"wasl":[2,3]},
-"23": {"madd":[21,22],"qalqalah":[33,35],"wasl":[28,29]},
-"24": {"ghunnah":[28,31],"madd":[33,34],"qalqalah":[5,7]},
-"25": {"qalqalah":[26,28],"wasl":[12,13]},
-"26": {"madd":[12,14]},
-"27": {"idgham":[17,22,22,27],"qalqalah":[12,14],"wasl":[2,3]},
+"19": {"madd_2":[18,19]},
+"20": {"ikhfa":[33,37],"madd_2":[9,10]},
+"21": {"hamzat_wasl":[51,52]},
+"22": {"madd_muttasil":[49,51,68,70],"qalqalah":[40,42],"hamzat_wasl":[2,3]},
+"23": {"madd_2":[21,22],"qalqalah":[33,35],"hamzat_wasl":[28,29]},
+"24": {"ghunnah":[28,31],"madd_2":[33,34],"qalqalah":[5,7]},
+"25": {"qalqalah":[26,28],"hamzat_wasl":[12,13]},
+"26": {"madd_munfasil":[12,14]},
+"27": {"idghaam_ghunnah":[17,22],"idghaam_no_ghunnah":[22,27],"qalqalah":[12,14],"hamzat_wasl":[2,3]},
"28": {"silent":[9,11]},
-"29": {"idgham":[20,26],"qalqalah":[3,5],"wasl":[2,3]},
-"30": {"madd":[2,3]},
-"31": {"madd":[12,14],"qalqalah":[5,7]},
-"32": {"madd":[15,17]},
-"35": {"ghunnah":[2,5,10,13]},
-"36": {"madd":[31,32],"qalqalah":[8,10]},
+"29": {"idghaam_ghunnah":[20,26],"qalqalah":[3,5],"hamzat_wasl":[2,3]},
+"30": {"madd_2":[2,3]},
+"31": {"madd_munfasil":[12,14],"qalqalah":[5,7]},
+"32": {"madd_munfasil":[15,17]},
+"35": {"ghunnah":[2,5],"ikhfa":[10,13]},
+"36": {"madd_2":[31,32],"qalqalah":[8,10]},
"37": {"ghunnah":[13,16],"qalqalah":[6,8]},
-"38": {"ghunnah":[28,31],"madd":[15,17,22,25]},
-"39": {"ghunnah":[54,57,76,79,169,172],"idgham":[21,22,83,84,110,115,125,130,164,169],"madd":[132,133],"qalqalah":[6,8,35,37],"wasl":[5,6,20,21,34,35,49,50,71,72,82,83]},
-"40": {"ghunnah":[97,100,157,162,185,188,195,198,208,213,253,256],"idgham":[59,63,276,280],"madd":[11,13,71,72,83,84,91,94,171,172,198,199,232,234,280,281],"qalqalah":[244,246],"wasl":[180,181]},
-"41": {"wasl":[2,3]},
-"42": {"ghunnah":[10,13],"madd":[32,33],"qalqalah":[5,7]},
-"43": {"ghunnah":[30,33],"madd":[7,9,35,36]},
-"44": {"idgham":[20,26,30,36],"madd":[13,14,43,44]},
-"45": {"ghunnah":[19,22],"idgham":[36,40,65,69],"madd":[14,16,55,57],"qalqalah":[69,71]},
-"46": {"ghunnah":[22,25],"madd":[17,19,37,39]},
-"47": {"ghunnah":[24,27],"idgham":[130,135,135,140,149,150],"madd":[19,21,69,71,78,80,117,118,155,156],"qalqalah":[99,101,108,110],"wasl":[148,149,171,172,180,181]},
-"48": {"ghunnah":[2,5,33,36,57,61],"madd":[28,30],"qalqalah":[9,11],"wasl":[37,38]},
-"49": {"idgham":[10,15],"madd":[26,27]},
-"50": {"ghunnah":[58,61],"madd":[21,23,54,55],"wasl":[15,16]},
-"51": {"wasl":[18,19,29,30]},
-"52": {"ghunnah":[18,21,69,72],"idgham":[39,44],"madd":[37,38]},
-"53": {"ghunnah":[75,78,103,107,149,153],"idgham":[37,42,68,73,87,88,134,140,140,145],"madd":[93,95,100,102,123,125,132,133],"qalqalah":[113,115],"wasl":[22,23,86,87]},
-"54": {"ghunnah":[36,39,76,79],"idgham":[61,66,75,76],"madd":[26,27,46,47,59,60],"silent":[5,7,17,19,68,70],"wasl":[10,11,74,75]},
-"55": {"madd":[16,17],"qalqalah":[12,14]},
-"56": {"madd":[17,18,26,27],"qalqalah":[6,8]},
-"57": {"madd":[60,61]},
-"58": {"ghunnah":[12,15,112,115,122,127],"idgham":[25,30,76,82],"madd":[36,37,94,95,107,109],"qalqalah":[41,43],"wasl":[40,41]},
-"59": {"ghunnah":[54,57],"idgham":[27,28,41,45,53,54],"wasl":[26,27,52,53]},
-"60": {"ghunnah":[44,47],"madd":[40,41]},
-"61": {"ghunnah":[67,72,82,86],"idgham":[10,15,92,96],"qalqalah":[98,100],"silent":[45,47],"wasl":[54,55,112,113]},
-"62": {"ghunnah":[24,28,52,55],"idgham":[51,52],"madd":[6,7,11,13],"qalqalah":[55,57],"silent":[13,15,47,49],"wasl":[50,51]},
-"63": {"ghunnah":[79,83],"idgham":[50,54,63,68],"madd":[5,7,17,18,20,21,28,29,33,34],"silent":[7,9],"wasl":[123,124]},
-"64": {"ghunnah":[27,30],"idgham":[44,49],"qalqalah":[4,6,51,53],"silent":[11,13,37,39],"wasl":[31,32,63,64,78,79]},
-"65": {"ghunnah":[23,26,31,35,46,49],"idgham":[54,59],"madd":[11,12,17,20,26,28,49,51],"silent":[6,8]},
-"66": {"ghunnah":[76,80,91,94],"silent":[18,20]},
-"67": {"idgham":[31,36],"madd":[23,24]},
-"68": {"ghunnah":[21,24,29,32],"wasl":[33,34]},
-"69": {"ghunnah":[53,56],"idgham":[83,87,101,102],"madd":[46,48,79,80],"silent":[48,50,67,69],"wasl":[100,101]},
-"70": {"ghunnah":[29,34,47,50],"idgham":[12,13],"madd":[37,39,62,63],"silent":[39,41],"wasl":[11,12]},
-"71": {"ghunnah":[11,14,52,55,116,119,174,177,196,199,216,219],"idgham":[94,95,145,150,159,163,195,196,244,249],"madd":[21,22,57,58,157,158,227,229],"qalqalah":[25,27,251,253],"wasl":[73,74,93,94,194,195]},
-"72": {"ghunnah":[100,103,112,115],"idgham":[11,16,148,149],"madd":[38,40,61,62,95,97,129,130,143,144],"qalqalah":[88,90,121,123],"silent":[6,8,142,143],"wasl":[51,52,67,68,87,88,135,136,147,148]},
-"73": {"ghunnah":[2,5,13,16],"idgham":[94,95,118,122],"madd":[5,7,50,51,53,54,62,64],"qalqalah":[124,126],"wasl":[93,94,105,106]},
-"74": {"ghunnah":[2,5,36,41,43,46,57,60],"idgham":[11,15],"madd":[7,8,27,28,51,52],"qalqalah":[31,33]},
-"75": {"ghunnah":[23,28],"idgham":[4,8,39,40,75,76],"madd":[14,15,43,44,48,49,60,62,83,84],"qalqalah":[28,30],"silent":[56,58],"wasl":[38,39,74,75,87,88]},
-"76": {"ghunnah":[2,5,14,18,26,30,90,94],"madd":[5,6,47,48,53,54,73,74,83,85],"qalqalah":[11,13,18,20],"wasl":[38,39]},
-"77": {"ghunnah":[84,89],"idgham":[106,112,127,132],"madd":[19,21,34,37,118,119],"qalqalah":[6,8,68,70],"wasl":[63,64,91,92]},
-"78": {"ghunnah":[62,65],"idgham":[49,54],"madd":[37,38],"wasl":[57,58]},
-"79": {"madd":[29,30]},
-"80": {"ghunnah":[31,34,136,139],"idgham":[41,46,87,88,143,144],"madd":[2,3,7,9,16,18,38,39,65,66,72,73],"qalqalah":[26,28,68,70],"wasl":[86,87,95,96,131,132,142,143]},
-"81": {"ghunnah":[10,14],"idgham":[97,101],"madd":[19,20,35,36],"qalqalah":[31,33,49,51,129,131],"silent":[5,7,55,57]},
-"82": {"ghunnah":[4,7,25,29,58,63,63,66],"idgham":[18,23],"madd":[54,55],"wasl":[67,68]},
-"83": {"ghunnah":[20,24],"madd":[4,6,33,34]},
-"84": {"madd":[17,19,26,29],"silent":[13,15]},
-"85": {"ghunnah":[10,13,24,27,41,44],"idgham":[67,68],"qalqalah":[17,19],"wasl":[66,67]},
-"86": {"ghunnah":[50,55],"idgham":[153,154,162,166,188,193,193,198,218,223],"madd":[14,17,33,34,41,42,61,62],"qalqalah":[80,82],"wasl":[134,135]},
-"87": {"ghunnah":[56,59,63,66,87,91],"idgham":[81,87,143,144],"madd":[11,13,53,54,70,72,117,118,128,129],"silent":[6,8],"wasl":[97,98,142,143]},
-"88": {"ghunnah":[23,28,47,51],"idgham":[31,37],"madd":[39,40,62,63,65,67,72,73,86,87],"qalqalah":[20,22],"silent":[57,59]},
-"89": {"idgham":[49,54,78,83]},
-"90": {"ghunnah":[33,37,54,57,65,68,68,72,80,83],"idgham":[95,96],"madd":[24,25,44,45,74,75,103,104,131,133],"qalqalah":[6,8,37,39],"silent":[133,135],"wasl":[94,95,109,110]},
-"91": {"idgham":[11,16],"madd":[34,35],"qalqalah":[16,18],"silent":[6,8]},
-"92": {"madd":[8,9,11,12],"silent":[56,58]},
-"94": {"ghunnah":[14,17,62,65,77,81],"madd":[57,59,108,110,117,119],"qalqalah":[8,10,92,94,138,140]},
-"95": {"madd":[23,24,26,27],"qalqalah":[14,16]},
-"96": {"idgham":[62,67,78,79],"madd":[42,43,108,109],"qalqalah":[28,30,57,59],"silent":[35,37],"wasl":[77,78]},
-"97": {"ghunnah":[20,23,47,51,73,76,95,99,112,115,181,184,190,193,198,201,203,206,219,222],"idgham":[89,95,166,172],"madd":[41,42,107,108,122,125,130,131,186,187,208,209],"qalqalah":[13,15],"silent":[40,41],"wasl":[8,9,33,34,111,112,136,137,214,215]},
-"98": {"ghunnah":[2,5],"madd":[7,9,14,15,40,42,47,48],"wasl":[22,23,30,31]},
-"99": {"ghunnah":[35,37,88,91],"idgham":[81,86],"madd":[4,5,38,40,75,76],"qalqalah":[49,51,63,65]},
-"100": {"ghunnah":[26,29],"madd":[31,32,56,57],"wasl":[49,50]},
-"101": {"madd":[2,3,21,23,47,48],"wasl":[40,41]},
-"102": {"ghunnah":[9,12,63,67],"idgham":[20,21],"qalqalah":[44,46],"wasl":[19,20,39,40]},
-"103": {"idgham":[28,33],"madd":[6,7]},
-"104": {"idgham":[72,77]},
-"105": {"ghunnah":[42,45],"wasl":[22,23]},
-"106": {"ghunnah":[16,21]},
-"107": {"idgham":[24,29],"madd":[31,33]},
-"108": {"idgham":[9,13,25,26,78,79],"madd":[50,51,86,87],"wasl":[24,25,63,64]},
-"109": {"ghunnah":[18,21],"idgham":[9,14,25,26,62,63],"madd":[31,32,70,71,87,88],"wasl":[24,25,61,62]},
-"110": {"madd":[70,71]},
-"111": {"qalqalah":[46,48],"wasl":[9,10,30,31]},
-"112": {"ghunnah":[48,52],"idgham":[4,8,21,22,69,74],"madd":[25,26,30,31],"wasl":[20,21]},
-"113": {"ghunnah":[14,17],"idgham":[44,49],"madd":[6,7,21,22],"wasl":[71,72]},
-"114": {"ghunnah":[70,74],"idgham":[81,85,116,117],"madd":[6,7,89,92,110,111],"qalqalah":[74,76,85,87,127,129],"wasl":[11,12,19,20,29,30,55,56]},
-"115": {"ghunnah":[38,42],"madd":[17,19,24,27,74,75],"qalqalah":[6,8,13,15,42,44,67,69]},
-"116": {"madd":[23,25,61,63,71,73],"qalqalah":[76,78],"silent":[40,42,63,65],"wasl":[32,33]},
-"117": {"ghunnah":[25,28,77,80,96,99],"idgham":[42,47],"madd":[12,14,31,32],"wasl":[91,92]},
+"38": {"ghunnah":[28,31],"madd_munfasil":[15,17,22,25]},
+"39": {"ghunnah":[54,57,76,79,169,172],"idghaam_ghunnah":[164,169],"idghaam_no_ghunnah":[110,115,125,130],"lam_shamsiyyah":[21,22,83,84],"madd_2":[132,133],"qalqalah":[6,8,35,37],"hamzat_wasl":[5,6,20,21,34,35,49,50,71,72,82,83]},
+"40": {"ghunnah":[97,100,185,188,195,198,253,256],"ikhfa":[157,162,208,213],"idghaam_ghunnah":[59,63,276,280],"madd_2":[71,72,83,84,171,172,198,199,280,281],"madd_munfasil":[11,13,91,94,232,234],"qalqalah":[244,246],"hamzat_wasl":[180,181]},
+"41": {"hamzat_wasl":[2,3]},
+"42": {"ikhfa":[10,13],"madd_2":[32,33],"qalqalah":[5,7]},
+"43": {"ghunnah":[30,33],"madd_2":[35,36],"madd_munfasil":[7,9]},
+"44": {"idghaam_no_ghunnah":[20,26,30,36],"madd_2":[13,14,43,44]},
+"45": {"ghunnah":[19,22],"idghaam_ghunnah":[36,40,65,69],"madd_munfasil":[14,16,55,57],"qalqalah":[69,71]},
+"46": {"ghunnah":[22,25],"madd_munfasil":[17,19,37,39]},
+"47": {"ghunnah":[24,27],"idghaam_ghunnah":[130,135],"idghaam_no_ghunnah":[135,140],"lam_shamsiyyah":[149,150],"madd_2":[117,118,155,156],"madd_munfasil":[19,21,69,71],"madd_muttasil":[78,80],"qalqalah":[99,101,108,110],"hamzat_wasl":[148,149,171,172,180,181]},
+"48": {"ghunnah":[2,5,33,36],"ikhfa":[57,61],"madd_munfasil":[28,30],"qalqalah":[9,11],"hamzat_wasl":[37,38]},
+"49": {"idghaam_no_ghunnah":[10,15],"madd_2":[26,27]},
+"50": {"ghunnah":[58,61],"madd_2":[54,55],"madd_munfasil":[21,23],"hamzat_wasl":[15,16]},
+"51": {"hamzat_wasl":[18,19,29,30]},
+"52": {"ikhfa":[18,21,69,72],"idghaam_no_ghunnah":[39,44],"madd_2":[37,38]},
+"53": {"ikhfa":[75,78,103,107,149,153],"idghaam_ghunnah":[37,42,68,73,134,140,140,145],"lam_shamsiyyah":[87,88],"madd_2":[132,133],"madd_munfasil":[123,125],"madd_muttasil":[93,95,100,102],"qalqalah":[113,115],"hamzat_wasl":[22,23,86,87]},
+"54": {"ghunnah":[36,39,76,79],"idghaam_no_ghunnah":[61,66],"lam_shamsiyyah":[75,76],"madd_2":[26,27,46,47,59,60],"silent":[5,7,17,19,68,70],"hamzat_wasl":[10,11,74,75]},
+"55": {"madd_2":[16,17],"qalqalah":[12,14]},
+"56": {"madd_2":[17,18,26,27],"qalqalah":[6,8]},
+"57": {"madd_2":[60,61]},
+"58": {"ghunnah":[12,15],"ikhfa":[112,115,122,127],"idghaam_ghunnah":[25,30],"idghaam_no_ghunnah":[76,82],"madd_2":[36,37,94,95],"madd_munfasil":[107,109],"qalqalah":[41,43],"hamzat_wasl":[40,41]},
+"59": {"ghunnah":[54,57],"idghaam_ghunnah":[41,45],"lam_shamsiyyah":[27,28,53,54],"hamzat_wasl":[26,27,52,53]},
+"60": {"ghunnah":[44,47],"madd_2":[40,41]},
+"61": {"ikhfa":[67,72],"ikhfa_shafawi":[82,86],"idghaam_ghunnah":[92,96],"idghaam_shafawi":[10,15],"qalqalah":[98,100],"silent":[45,47],"hamzat_wasl":[54,55,112,113]},
+"62": {"ghunnah":[52,55],"ikhfa_shafawi":[24,28],"lam_shamsiyyah":[51,52],"madd_2":[6,7],"madd_munfasil":[11,13],"qalqalah":[55,57],"silent":[13,15,47,49],"hamzat_wasl":[50,51]},
+"63": {"ikhfa_shafawi":[79,83],"idghaam_ghunnah":[50,54],"idghaam_shafawi":[63,68],"madd_2":[17,18,20,21,28,29,33,34],"madd_munfasil":[5,7],"silent":[7,9],"hamzat_wasl":[123,124]},
+"64": {"ghunnah":[27,30],"idghaam_ghunnah":[44,49],"qalqalah":[4,6,51,53],"silent":[11,13,37,39],"hamzat_wasl":[31,32,63,64,78,79]},
+"65": {"ghunnah":[23,26,46,49],"ikhfa":[31,35],"idghaam_ghunnah":[54,59],"madd_2":[11,12],"madd_munfasil":[17,20,26,28,49,51],"silent":[6,8]},
+"66": {"ghunnah":[91,94],"ikhfa":[76,80],"silent":[18,20]},
+"67": {"idghaam_ghunnah":[31,36],"madd_2":[23,24]},
+"68": {"ghunnah":[21,24],"ikhfa":[29,32],"hamzat_wasl":[33,34]},
+"69": {"ghunnah":[53,56],"idghaam_ghunnah":[83,87],"lam_shamsiyyah":[101,102],"madd_2":[79,80],"madd_munfasil":[46,48],"silent":[48,50,67,69],"hamzat_wasl":[100,101]},
+"70": {"ghunnah":[47,50],"ikhfa":[29,34],"lam_shamsiyyah":[12,13],"madd_2":[62,63],"madd_munfasil":[37,39],"silent":[39,41],"hamzat_wasl":[11,12]},
+"71": {"ghunnah":[52,55,116,119,174,177,196,199,216,219],"ikhfa":[11,14],"idghaam_ghunnah":[159,163,244,249],"idghaam_shafawi":[145,150],"lam_shamsiyyah":[94,95,195,196],"madd_2":[21,22,57,58,157,158],"madd_munfasil":[227,229],"qalqalah":[25,27,251,253],"hamzat_wasl":[73,74,93,94,194,195]},
+"72": {"ghunnah":[112,115],"ikhfa":[100,103],"idghaam_ghunnah":[11,16],"lam_shamsiyyah":[148,149],"madd_2":[61,62,129,130,143,144],"madd_munfasil":[95,97],"madd_muttasil":[38,40],"qalqalah":[88,90,121,123],"silent":[6,8,142,143],"hamzat_wasl":[51,52,67,68,87,88,135,136,147,148]},
+"73": {"ghunnah":[2,5,13,16],"idghaam_ghunnah":[118,122],"lam_shamsiyyah":[94,95],"madd_2":[50,51,53,54],"madd_munfasil":[5,7,62,64],"qalqalah":[124,126],"hamzat_wasl":[93,94,105,106]},
+"74": {"ghunnah":[2,5,43,46,57,60],"ikhfa":[36,41],"idghaam_ghunnah":[11,15],"madd_2":[7,8,27,28,51,52],"qalqalah":[31,33]},
+"75": {"ikhfa":[23,28],"idghaam_ghunnah":[4,8],"lam_shamsiyyah":[39,40,75,76],"madd_2":[14,15,43,44,48,49,83,84],"madd_muttasil":[60,62],"qalqalah":[28,30],"silent":[56,58],"hamzat_wasl":[38,39,74,75,87,88]},
+"76": {"ghunnah":[2,5],"ikhfa":[14,18,26,30,90,94],"madd_2":[5,6,47,48,53,54,73,74],"madd_muttasil":[83,85],"qalqalah":[11,13,18,20],"hamzat_wasl":[38,39]},
+"77": {"ikhfa":[84,89],"idghaam_ghunnah":[127,132],"idghaam_no_ghunnah":[106,112],"madd_2":[118,119],"madd_munfasil":[19,21,34,37],"qalqalah":[6,8,68,70],"hamzat_wasl":[63,64,91,92]},
+"78": {"ghunnah":[62,65],"idghaam_shafawi":[49,54],"madd_2":[37,38],"hamzat_wasl":[57,58]},
+"79": {"madd_2":[29,30]},
+"80": {"ghunnah":[136,139],"ikhfa":[31,34],"idghaam_shafawi":[41,46],"lam_shamsiyyah":[87,88,143,144],"madd_2":[2,3,38,39,65,66,72,73],"madd_munfasil":[7,9],"madd_muttasil":[16,18],"qalqalah":[26,28,68,70],"hamzat_wasl":[86,87,95,96,131,132,142,143]},
+"81": {"ikhfa":[10,14],"idghaam_ghunnah":[97,101],"madd_2":[19,20,35,36],"qalqalah":[31,33,49,51,129,131],"silent":[5,7,55,57]},
+"82": {"ghunnah":[4,7,63,66],"ikhfa":[25,29,58,63],"idghaam_no_ghunnah":[18,23],"madd_2":[54,55],"hamzat_wasl":[67,68]},
+"83": {"ikhfa":[20,24],"madd_2":[33,34],"madd_munfasil":[4,6]},
+"84": {"madd_munfasil":[26,29],"madd_muttasil":[17,19],"silent":[13,15]},
+"85": {"ghunnah":[10,13,24,27],"iqlab":[41,44],"lam_shamsiyyah":[67,68],"qalqalah":[17,19],"hamzat_wasl":[66,67]},
+"86": {"ikhfa":[50,55],"idghaam_ghunnah":[162,166,188,193],"idghaam_mutajanisayn":[153,154],"idghaam_no_ghunnah":[193,198],"idghaam_shafawi":[218,223],"madd_2":[33,34,41,42,61,62],"madd_munfasil":[14,17],"qalqalah":[80,82],"hamzat_wasl":[134,135]},
+"87": {"ghunnah":[56,59,63,66],"ikhfa":[87,91],"idghaam_ghunnah":[81,87],"lam_shamsiyyah":[143,144],"madd_2":[53,54,117,118,128,129],"madd_munfasil":[11,13,70,72],"silent":[6,8],"hamzat_wasl":[97,98,142,143]},
+"88": {"ikhfa":[23,28,47,51],"idghaam_no_ghunnah":[31,37],"madd_2":[39,40,62,63,72,73,86,87],"madd_munfasil":[65,67],"qalqalah":[20,22],"silent":[57,59]},
+"89": {"idghaam_ghunnah":[49,54,78,83]},
+"90": {"ghunnah":[54,57,80,83],"ikhfa":[33,37,65,68],"ikhfa_shafawi":[68,72],"lam_shamsiyyah":[95,96],"madd_2":[24,25,44,45,74,75,103,104],"madd_munfasil":[131,133],"qalqalah":[6,8,37,39],"silent":[133,135],"hamzat_wasl":[94,95,109,110]},
+"91": {"idghaam_ghunnah":[11,16],"madd_2":[34,35],"qalqalah":[16,18],"silent":[6,8]},
+"92": {"madd_2":[8,9,11,12],"silent":[56,58]},
+"94": {"ghunnah":[14,17,62,65],"ikhfa":[77,81],"madd_munfasil":[57,59,108,110],"madd_muttasil":[117,119],"qalqalah":[8,10,92,94,138,140]},
+"95": {"madd_2":[23,24,26,27],"qalqalah":[14,16]},
+"96": {"idghaam_ghunnah":[62,67],"lam_shamsiyyah":[78,79],"madd_2":[42,43,108,109],"qalqalah":[28,30,57,59],"silent":[35,37],"hamzat_wasl":[77,78]},
+"97": {"ghunnah":[20,23,73,76,181,184,190,193,203,206,219,222],"ikhfa":[47,51,95,99,112,115,198,201],"idghaam_no_ghunnah":[89,95,166,172],"madd_2":[41,42,107,108,130,131,186,187,208,209],"madd_munfasil":[122,125],"qalqalah":[13,15],"silent":[40,41],"hamzat_wasl":[8,9,33,34,111,112,136,137,214,215]},
+"98": {"ghunnah":[2,5],"madd_2":[14,15,47,48],"madd_munfasil":[7,9,40,42],"hamzat_wasl":[22,23,30,31]},
+"99": {"ghunnah":[88,91],"iqlab":[35,37],"idghaam_no_ghunnah":[81,86],"madd_2":[4,5,75,76],"madd_muttasil":[38,40],"qalqalah":[49,51,63,65]},
+"100": {"ghunnah":[26,29],"madd_2":[31,32,56,57],"hamzat_wasl":[49,50]},
+"101": {"madd_2":[2,3,47,48],"madd_muttasil":[21,23],"hamzat_wasl":[40,41]},
+"102": {"ikhfa":[9,12,63,67],"lam_shamsiyyah":[20,21],"qalqalah":[44,46],"hamzat_wasl":[19,20,39,40]},
+"103": {"idghaam_no_ghunnah":[28,33],"madd_2":[6,7]},
+"104": {"idghaam_no_ghunnah":[72,77]},
+"105": {"ikhfa":[42,45],"hamzat_wasl":[22,23]},
+"106": {"ikhfa":[16,21]},
+"107": {"idghaam_ghunnah":[24,29],"madd_munfasil":[31,33]},
+"108": {"idghaam_ghunnah":[9,13],"lam_shamsiyyah":[25,26,78,79],"madd_2":[50,51,86,87],"hamzat_wasl":[24,25,63,64]},
+"109": {"ikhfa":[18,21],"idghaam_no_ghunnah":[9,14],"lam_shamsiyyah":[25,26,62,63],"madd_2":[31,32,70,71,87,88],"hamzat_wasl":[24,25,61,62]},
+"110": {"madd_2":[70,71]},
+"111": {"qalqalah":[46,48],"hamzat_wasl":[9,10,30,31]},
+"112": {"ikhfa":[48,52],"idghaam_ghunnah":[4,8,69,74],"lam_shamsiyyah":[21,22],"madd_2":[25,26,30,31],"hamzat_wasl":[20,21]},
+"113": {"ikhfa":[14,17],"idghaam_ghunnah":[44,49],"madd_2":[6,7,21,22],"hamzat_wasl":[71,72]},
+"114": {"ikhfa":[70,74],"idghaam_ghunnah":[81,85],"idghaam_mutaqaribayn":[116,117],"madd_2":[6,7,110,111],"madd_munfasil":[89,92],"qalqalah":[74,76,85,87,127,129],"hamzat_wasl":[11,12,19,20,29,30,55,56]},
+"115": {"ikhfa":[38,42],"madd_2":[74,75],"madd_munfasil":[17,19,24,27],"qalqalah":[6,8,13,15,42,44,67,69]},
+"116": {"madd_munfasil":[61,63,71,73],"madd_muttasil":[23,25],"qalqalah":[76,78],"silent":[40,42,63,65],"hamzat_wasl":[32,33]},
+"117": {"ghunnah":[25,28,77,80,96,99],"idghaam_no_ghunnah":[42,47],"madd_2":[31,32],"madd_muttasil":[12,14],"hamzat_wasl":[91,92]},
"118": {"ghunnah":[2,5]},
"119": {"ghunnah":[4,7],"silent":[22,24]},
-"120": {"idgham":[21,22,100,105],"madd":[29,30,41,43],"qalqalah":[109,111],"wasl":[20,21,83,84]},
-"121": {"ghunnah":[100,103],"idgham":[86,90],"madd":[41,42,112,115,131,132],"wasl":[95,96]},
-"122": {"ghunnah":[2,5],"madd":[13,14,24,25],"qalqalah":[7,9],"wasl":[6,7]},
-"123": {"ghunnah":[29,34,59,63,65,68,78,81,88,91,96,101],"idgham":[83,88],"wasl":[6,7,106,107]},
-"124": {"ghunnah":[18,22,32,35,50,54,54,57],"idgham":[56,61],"madd":[40,41,71,72,87,88],"wasl":[80,81]},
-"125": {"ghunnah":[48,51],"madd":[27,29],"qalqalah":[43,45]},
-"126": {"ghunnah":[74,77],"madd":[10,11,30,31,56,57],"wasl":[62,63]},
-"127": {"ghunnah":[48,51],"madd":[6,7,58,59,69,70],"qalqalah":[14,16,108,110],"wasl":[83,84]},
-"128": {"ghunnah":[97,100,137,140],"idgham":[48,53,122,127,136,137],"madd":[85,86,107,108,120,121],"qalqalah":[42,44],"silent":[129,131],"wasl":[56,57,135,136]},
-"129": {"ghunnah":[17,21,72,75],"idgham":[30,35,55,60,65,70]},
-"130": {"ghunnah":[154,157],"idgham":[75,76,153,154],"madd":[116,118],"qalqalah":[61,63,88,90,144,146],"wasl":[2,3,74,75,121,122,152,153]},
-"131": {"ghunnah":[13,16],"idgham":[65,71,100,101,153,157],"madd":[54,56,63,64,95,96],"qalqalah":[159,161],"silent":[94,95],"wasl":[87,88,99,100]},
-"132": {"idgham":[21,22,75,81,114,115],"madd":[28,29,104,105],"qalqalah":[118,120],"silent":[27,28],"wasl":[20,21,34,35,99,100]},
-"133": {"ghunnah":[74,78],"idgham":[39,44,44,49,95,96],"madd":[54,56],"silent":[8,10],"wasl":[94,95,104,105]},
-"134": {"ghunnah":[9,12,28,32,43,47,111,116,139,143],"idgham":[38,43,150,155],"madd":[12,14,25,26,53,54,81,83,131,132],"qalqalah":[47,49,143,145],"silent":[63,65]},
-"135": {"ghunnah":[22,26],"idgham":[9,14,71,72,82,83],"madd":[66,67,77,78],"silent":[36,38],"wasl":[70,71,81,82,99,100]}
+"120": {"idghaam_no_ghunnah":[100,105],"lam_shamsiyyah":[21,22],"madd_2":[29,30],"madd_muttasil":[41,43],"qalqalah":[109,111],"hamzat_wasl":[20,21,83,84]},
+"121": {"ghunnah":[100,103],"idghaam_ghunnah":[86,90],"madd_2":[41,42,131,132],"madd_munfasil":[112,115],"hamzat_wasl":[95,96]},
+"122": {"ghunnah":[2,5],"madd_2":[13,14,24,25],"qalqalah":[7,9],"hamzat_wasl":[6,7]},
+"123": {"ghunnah":[65,68,78,81,88,91],"ikhfa":[59,63,96,101],"iqlab":[29,34],"idghaam_shafawi":[83,88],"hamzat_wasl":[6,7,106,107]},
+"124": {"ghunnah":[32,35],"ikhfa":[18,22,50,54,54,57],"idghaam_ghunnah":[56,61],"madd_2":[40,41,71,72,87,88],"hamzat_wasl":[80,81]},
+"125": {"ikhfa":[48,51],"madd_munfasil":[27,29],"qalqalah":[43,45]},
+"126": {"ikhfa":[74,77],"madd_2":[10,11,30,31,56,57],"hamzat_wasl":[62,63]},
+"127": {"iqlab":[48,51],"madd_2":[6,7,58,59,69,70],"qalqalah":[14,16,108,110],"hamzat_wasl":[83,84]},
+"128": {"ghunnah":[97,100,137,140],"idghaam_no_ghunnah":[122,127],"idghaam_shafawi":[48,53],"lam_shamsiyyah":[136,137],"madd_2":[85,86,107,108,120,121],"qalqalah":[42,44],"silent":[129,131],"hamzat_wasl":[56,57,135,136]},
+"129": {"ghunnah":[72,75],"ikhfa":[17,21],"idghaam_ghunnah":[55,60,65,70],"idghaam_no_ghunnah":[30,35]},
+"130": {"ghunnah":[154,157],"lam_shamsiyyah":[75,76,153,154],"madd_muttasil":[116,118],"qalqalah":[61,63,88,90,144,146],"hamzat_wasl":[2,3,74,75,121,122,152,153]},
+"131": {"ghunnah":[13,16],"idghaam_ghunnah":[65,71,153,157],"lam_shamsiyyah":[100,101],"madd_2":[63,64,95,96],"madd_munfasil":[54,56],"qalqalah":[159,161],"silent":[94,95],"hamzat_wasl":[87,88,99,100]},
+"132": {"idghaam_ghunnah":[75,81],"lam_shamsiyyah":[21,22,114,115],"madd_2":[28,29,104,105],"qalqalah":[118,120],"silent":[27,28],"hamzat_wasl":[20,21,34,35,99,100]},
+"133": {"ikhfa_shafawi":[74,78],"idghaam_ghunnah":[39,44],"idghaam_no_ghunnah":[44,49],"lam_shamsiyyah":[95,96],"madd_munfasil":[54,56],"silent":[8,10],"hamzat_wasl":[94,95,104,105]},
+"134": {"ghunnah":[9,12],"ikhfa":[43,47,111,116,139,143],"ikhfa_shafawi":[28,32],"idghaam_ghunnah":[38,43,150,155],"madd_2":[25,26,53,54,131,132],"madd_munfasil":[12,14,81,83],"qalqalah":[47,49,143,145],"silent":[63,65]},
+"135": {"ikhfa":[22,26],"idghaam_ghunnah":[9,14],"lam_shamsiyyah":[71,72,82,83],"madd_2":[66,67,77,78],"silent":[36,38],"hamzat_wasl":[70,71,81,82,99,100]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/21.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/21.json
index 381b1f9..5cbf084 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/21.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/21.json
@@ -1,114 +1,114 @@
{
-"1": {"ghunnah":[52,55],"idgham":[51,52,89,94],"madd":[100,101],"qalqalah":[40,42]},
-"2": {"ghunnah":[18,22],"idgham":[13,18,25,30,30,35,40,45],"madd":[87,88],"wasl":[59,60]},
-"3": {"ghunnah":[8,12,37,40,133,136],"idgham":[36,37,91,96,120,121],"madd":[73,74,76,78,147,148],"qalqalah":[40,42,141,143],"silent":[32,34,63,65],"wasl":[35,36,46,47,119,120]},
-"4": {"idgham":[37,38,68,69],"madd":[43,45,85,86],"wasl":[22,23,36,37,50,51,67,68,78,79]},
-"5": {"ghunnah":[33,37,69,73,94,98],"madd":[10,12,21,22,31,32,49,50,100,102,122,123],"silent":[12,14],"wasl":[41,42,112,113]},
-"6": {"ghunnah":[28,32],"idgham":[23,28],"madd":[2,4,49,50,52,54,72,73],"qalqalah":[17,19]},
-"7": {"ghunnah":[97,101,101,104],"idgham":[41,47,86,87],"madd":[4,6,50,52,73,75,119,120],"qalqalah":[21,23],"silent":[75,77],"wasl":[85,86]},
-"8": {"idgham":[25,31,46,47],"madd":[14,15,73,74,78,79],"silent":[68,70],"wasl":[45,46]},
-"9": {"ghunnah":[2,5,34,37],"idgham":[51,56],"madd":[14,15,41,42,58,60,88,89],"qalqalah":[10,12],"wasl":[20,21,77,78]},
-"10": {"ghunnah":[9,12,36,41],"madd":[16,18,34,35,72,73],"qalqalah":[4,6]},
-"11": {"ghunnah":[19,23,28,32,52,55],"idgham":[46,50],"madd":[86,87]},
-"12": {"ghunnah":[4,7],"idgham":[40,45],"madd":[7,9,29,31,59,60],"silent":[18,20]},
-"13": {"madd":[25,27,39,41,67,68,98,99],"silent":[13,15,27,29],"wasl":[18,19]},
-"14": {"ghunnah":[25,28,32,35],"madd":[11,12,20,22,39,40,44,45],"silent":[6,8]},
-"15": {"madd":[28,29,50,51,67,68,72,73]},
-"16": {"idgham":[17,18],"madd":[23,25,60,61,65,66],"qalqalah":[10,12],"wasl":[16,17,30,31]},
-"17": {"ghunnah":[65,68,73,77,77,80],"idgham":[18,23,36,42,58,63],"madd":[13,15,52,53,68,70,84,85,89,90],"qalqalah":[9,11],"wasl":[42,43]},
-"18": {"ghunnah":[98,101],"idgham":[75,79],"madd":[36,37,54,55,109,110],"qalqalah":[7,9,46,48],"wasl":[16,17,31,32,86,87]},
-"19": {"ghunnah":[10,14,51,54],"idgham":[17,18],"madd":[6,7,23,24,26,27,56,57,94,95,114,115],"wasl":[16,17,32,33]},
-"20": {"ghunnah":[26,29],"idgham":[25,26],"madd":[47,48],"wasl":[13,14,24,25]},
-"21": {"ghunnah":[51,54],"idgham":[26,31],"madd":[13,15,56,57],"silent":[15,17],"wasl":[5,6,34,35]},
-"22": {"ghunnah":[96,99],"madd":[18,20,66,67,107,108],"qalqalah":[62,64],"wasl":[38,39,70,71,84,85]},
-"23": {"ghunnah":[16,19],"madd":[46,47]},
-"24": {"ghunnah":[19,23,39,43,106,110],"idgham":[85,90,163,168],"madd":[28,30,61,62,71,72,174,175],"qalqalah":[110,112],"silent":[14,16,52,54],"wasl":[5,6,150,151]},
-"25": {"ghunnah":[21,25,71,74],"idgham":[34,39],"madd":[4,6,57,59,76,77,80,82,87,88,96,98,115,116],"qalqalah":[25,27],"wasl":[108,109]},
-"26": {"ghunnah":[38,43],"idgham":[21,22,65,70],"madd":[29,30,47,48,52,53,76,77],"qalqalah":[43,45],"silent":[8,10],"wasl":[11,12,20,21]},
-"27": {"ghunnah":[35,39],"madd":[17,18,47,48,57,58],"wasl":[21,22]},
-"28": {"idgham":[95,100],"madd":[113,114,123,124],"wasl":[81,82]},
-"29": {"ghunnah":[24,27,41,45,76,79],"idgham":[4,8,36,41,101,102],"madd":[27,29,34,35,50,51,56,57,86,87,105,106,110,111],"qalqalah":[64,66,94,96],"wasl":[100,101]},
-"30": {"ghunnah":[37,40,81,86],"idgham":[42,43],"madd":[30,32,48,49,51,52,94,95,123,125,163,164],"qalqalah":[90,92],"silent":[32,34],"wasl":[14,15,41,42,57,58,118,119]},
-"31": {"ghunnah":[38,42,80,85],"idgham":[88,94],"madd":[30,31,112,113],"wasl":[16,17]},
-"32": {"idgham":[13,14,29,35,41,46],"madd":[19,21,61,62,76,77],"qalqalah":[26,28],"wasl":[12,13]},
-"33": {"ghunnah":[35,38,72,76],"idgham":[34,35,47,48,83,87],"madd":[93,94],"wasl":[7,8,22,23,33,34,46,47,58,59]},
-"34": {"ghunnah":[28,32],"idgham":[23,28,57,62],"madd":[78,79,83,84],"qalqalah":[32,34],"silent":[55,57],"wasl":[39,40,73,74]},
-"35": {"ghunnah":[11,15,45,49],"idgham":[50,51,77,81],"madd":[15,17,99,100],"qalqalah":[38,40],"wasl":[24,25,49,50,60,61]},
-"36": {"ghunnah":[115,119],"idgham":[39,43,127,128],"madd":[32,34,75,76,135,136,146,147,151,152],"silent":[34,36],"wasl":[16,17,80,81,126,127]},
-"37": {"ghunnah":[12,15,29,33],"madd":[15,16,50,51,73,74],"silent":[35,37],"wasl":[7,8]},
-"38": {"ghunnah":[39,43,43,46],"madd":[22,23,51,52,56,57],"wasl":[27,28]},
-"39": {"ghunnah":[73,76,88,92,115,118],"idgham":[57,61,72,73],"madd":[120,121],"silent":[31,33],"wasl":[14,15,71,72]},
-"40": {"ghunnah":[14,18,23,27,83,86],"madd":[88,89],"qalqalah":[29,31]},
-"41": {"ghunnah":[33,37],"idgham":[28,33,80,85],"madd":[100,101,114,115],"qalqalah":[37,39],"silent":[71,73,93,95],"wasl":[9,10,54,55]},
-"42": {"ghunnah":[19,23,36,39,75,79],"idgham":[7,11,35,36,51,52,91,96],"madd":[59,60,102,103],"wasl":[23,24,34,35,50,51]},
-"43": {"ghunnah":[20,24,37,41,76,79,99,102],"idgham":[32,37,94,99],"madd":[112,113]},
-"44": {"ghunnah":[99,102,124,127],"madd":[18,20,24,26,36,38,149,151,166,167,171,172],"qalqalah":[140,142],"wasl":[70,71,112,113,161,162]},
-"45": {"ghunnah":[7,10,17,20,24,28,58,61,86,89],"idgham":[54,55,63,64],"madd":[12,14,69,71,91,92],"wasl":[28,29,53,54,62,63]},
-"46": {"ghunnah":[61,64,81,84,88,91],"idgham":[6,11,28,33],"madd":[67,68,76,78,95,96,100,101]},
-"47": {"ghunnah":[75,79,90,94],"idgham":[83,88,114,119],"madd":[16,17,49,50,164,165,169,170],"wasl":[9,10,23,24,42,43]},
-"48": {"idgham":[61,65,70,76],"madd":[32,33,58,60,85,86],"qalqalah":[6,8],"wasl":[39,40]},
-"49": {"ghunnah":[28,32],"idgham":[46,51,55,56],"madd":[73,74],"wasl":[32,33,54,55]},
-"50": {"ghunnah":[29,32,46,49,60,63],"idgham":[14,19],"madd":[4,5,36,37,56,57,65,66]},
-"51": {"ghunnah":[46,50,59,62],"madd":[18,20,27,28,42,43,68,69,72,73,77,78],"qalqalah":[6,8,23,25,50,52]},
-"52": {"ghunnah":[70,73],"idgham":[46,47],"madd":[31,32,39,40,65,67,84,85,89,90],"wasl":[45,46,59,60]},
-"53": {"madd":[17,19,25,27,41,42,46,47],"qalqalah":[13,15],"silent":[6,8]},
-"54": {"ghunnah":[15,18,23,26],"idgham":[55,60],"madd":[36,38,53,54,62,63],"qalqalah":[10,12]},
-"55": {"ghunnah":[40,43],"idgham":[50,51],"madd":[5,7,54,55,59,60],"silent":[7,9],"wasl":[24,25,49,50]},
-"56": {"ghunnah":[69,72],"idgham":[8,9,28,29,96,101,105,106],"madd":[34,35,37,38,91,92,109,110,114,115],"wasl":[27,28,43,44,53,54,104,105]},
-"57": {"ghunnah":[21,24,36,40,47,51],"madd":[31,32,68,69],"qalqalah":[62,64],"silent":[57,59],"wasl":[4,5]},
-"58": {"idgham":[35,41],"madd":[17,18,75,76]},
-"59": {"ghunnah":[11,15,46,49],"idgham":[61,62],"madd":[22,23,41,43,51,52,65,66,70,71],"silent":[6,8],"wasl":[60,61]},
-"60": {"idgham":[22,27],"madd":[50,52,59,60,62,63],"qalqalah":[55,57],"silent":[6,8]},
-"61": {"ghunnah":[44,47],"idgham":[43,44],"madd":[23,24,29,32,71,72],"silent":[6,8,16,18],"wasl":[42,43]},
-"62": {"ghunnah":[14,17],"madd":[5,7,29,30,52,54,60,61,63,64],"qalqalah":[56,58],"silent":[7,9]},
-"63": {"ghunnah":[57,61,70,73],"madd":[19,20,35,36,75,76],"silent":[65,67]},
-"64": {"ghunnah":[23,26,47,50,57,60],"idgham":[64,65],"madd":[8,10,17,20,40,42,68,69,73,74],"silent":[10,12,42,44],"wasl":[63,64]},
-"65": {"ghunnah":[2,5,70,73],"madd":[57,59,63,65,75,76],"qalqalah":[39,41],"silent":[13,15]},
-"66": {"ghunnah":[24,28,50,53],"idgham":[66,71],"wasl":[32,33]},
-"67": {"ghunnah":[36,40],"idgham":[4,9],"madd":[68,69],"wasl":[44,45]},
-"68": {"ghunnah":[23,26,49,53,53,56],"madd":[28,30,61,62,66,67],"silent":[6,8,30,32],"wasl":[22,23]},
-"69": {"idgham":[29,34],"madd":[10,11,38,39,47,50,57,58,60,61],"qalqalah":[53,55]},
-"70": {"ghunnah":[24,29],"madd":[17,18,37,38,54,55],"silent":[10,12],"wasl":[43,44]},
-"71": {"madd":[11,12,50,51,72,73,77,78],"wasl":[30,31,40,41]},
-"72": {"ghunnah":[57,62],"idgham":[49,53],"madd":[16,18,25,26,72,73,77,78],"qalqalah":[6,8]},
-"73": {"ghunnah":[20,23],"idgham":[24,28,105,106,129,130],"madd":[10,11,60,62,90,91,112,113,123,125,136,137,159,160,164,165],"silent":[111,112,135,136,148,150],"wasl":[81,82,104,105,128,129]},
-"74": {"ghunnah":[113,116,142,146],"idgham":[27,32,37,42],"madd":[18,19,51,52,104,106,146,147,151,152],"silent":[127,129],"wasl":[60,61,72,73,97,98]},
-"75": {"ghunnah":[35,38],"idgham":[48,49],"madd":[12,13,30,32,40,41,52,53,57,58],"qalqalah":[4,6],"wasl":[47,48]},
-"76": {"ghunnah":[24,28],"madd":[52,53,65,66,79,80,103,104],"qalqalah":[28,30,42,44],"wasl":[35,36,86,87,96,97]},
-"77": {"ghunnah":[68,71,97,101],"madd":[10,11,58,59,63,65,111,112,125,126],"qalqalah":[107,109,119,121],"silent":[47,49,82,84],"wasl":[19,20,29,30]},
-"78": {"ghunnah":[97,100],"madd":[7,8,21,22,117,118,122,123],"wasl":[46,47,83,84]},
-"79": {"ghunnah":[132,135],"idgham":[53,58,63,68,119,120],"madd":[11,12,24,25,89,90,139,140,144,145],"wasl":[93,94,118,119]},
-"80": {"ghunnah":[58,61,80,83],"idgham":[30,35,52,57],"madd":[11,12,88,89,93,94]},
-"81": {"ghunnah":[33,37,102,105],"idgham":[17,18],"madd":[12,13,53,55,82,83,124,125,129,130],"qalqalah":[37,39],"wasl":[16,17,62,63,72,73]},
-"82": {"ghunnah":[61,66,82,85],"idgham":[8,9,23,27],"madd":[14,15,40,41,72,73,96,97,101,102],"wasl":[7,8]},
-"83": {"ghunnah":[36,39,64,67],"idgham":[52,53,78,79],"madd":[31,33,82,83,87,88],"wasl":[51,52,77,78]},
-"84": {"ghunnah":[45,49,117,120],"idgham":[51,55,88,93,107,112],"madd":[19,20,41,42,64,65,76,77,141,142,146,147],"qalqalah":[9,11],"wasl":[2,3]},
-"85": {"idgham":[47,52,56,57],"madd":[8,9,60,61,65,66],"qalqalah":[19,21],"wasl":[33,34,55,56]},
-"86": {"ghunnah":[37,40],"idgham":[42,47,51,52],"madd":[12,13,32,34,55,56,60,61],"qalqalah":[4,6],"wasl":[50,51]},
-"87": {"ghunnah":[8,11,35,40,42,45,129,132,147,150,154,157],"idgham":[7,8,48,53,53,58,89,90,103,108,164,165],"madd":[31,32,97,98,108,110,115,116,124,126,139,140,168,169,173,174],"qalqalah":[58,60,135,137],"wasl":[6,7,88,89,163,164]},
-"88": {"ghunnah":[46,49,64,67],"madd":[19,20,32,33,56,57,80,81],"qalqalah":[9,11],"wasl":[2,3,41,42,69,70]},
-"89": {"ghunnah":[68,71],"idgham":[61,66],"madd":[11,13,34,35,84,85,89,90],"wasl":[79,80]},
-"90": {"ghunnah":[81,84],"idgham":[148,153,158,163],"madd":[19,20,37,38,66,67,76,78,102,103,124,125,180,181,185,186],"qalqalah":[9,11,27,29,132,134],"silent":[95,97,169,171],"wasl":[2,3,115,116]},
-"91": {"idgham":[53,58,98,103],"madd":[8,10,75,76,89,91,107,108,112,113],"qalqalah":[83,85],"wasl":[2,3,82,83]},
-"92": {"ghunnah":[2,5,18,21,30,33],"idgham":[34,38,44,48],"madd":[8,9,13,15,38,39,74,75],"wasl":[67,68]},
-"93": {"ghunnah":[24,28],"madd":[11,13,55,56,60,61],"silent":[13,15]},
-"94": {"ghunnah":[48,52,82,85],"idgham":[4,8,21,22],"madd":[25,26,30,31,76,77,91,92,95,96,100,101],"wasl":[20,21]},
-"95": {"ghunnah":[44,47],"madd":[6,7,36,37,39,41,64,65]},
-"96": {"ghunnah":[55,59,72,75],"idgham":[50,55,68,72],"madd":[5,8,77,78]},
-"97": {"ghunnah":[104,107,142,145],"idgham":[120,125],"madd":[46,47,60,61,86,87,130,131,149,150,154,155],"qalqalah":[3,5,56,58,99,101],"silent":[81,83],"wasl":[2,3,12,13,22,23,64,65]},
-"98": {"ghunnah":[2,5,30,34,57,60,65,68],"madd":[79,80,84,85],"wasl":[38,39]},
-"99": {"ghunnah":[56,60],"idgham":[32,37],"madd":[13,15,19,21,67,68,72,73]},
-"100": {"idgham":[20,24],"madd":[48,49]},
-"101": {"ghunnah":[2,5,34,37],"idgham":[29,34],"madd":[48,51,58,60,81,82],"qalqalah":[75,77],"silent":[54,56],"wasl":[6,7,39,40]},
-"102": {"ghunnah":[54,57],"madd":[66,67,71,72],"wasl":[42,43]},
-"103": {"ghunnah":[101,104],"madd":[51,52,64,66,75,76,114,115],"wasl":[17,18,27,28,57,58,91,92]},
-"104": {"ghunnah":[122,125,129,132],"idgham":[16,17,36,37,87,92],"madd":[22,24,71,73,99,100,117,119,136,137,141,142],"qalqalah":[9,11],"wasl":[15,16,35,36]},
-"105": {"ghunnah":[37,40,58,61],"idgham":[24,25,47,48,93,94],"madd":[97,98,102,103],"qalqalah":[6,8,13,15],"wasl":[23,24,46,47,62,63,92,93]},
-"106": {"ghunnah":[2,5],"idgham":[25,31],"madd":[12,13,23,24,40,41,45,46]},
-"107": {"idgham":[35,40],"madd":[4,6,17,18,44,45,49,50]},
-"108": {"ghunnah":[7,10,33,36,67,71,78,81],"idgham":[59,63,81,86],"madd":[19,22,38,40,45,46,57,58,63,64,92,93]},
-"109": {"ghunnah":[4,8,30,33,82,86],"idgham":[52,56,90,95],"madd":[49,51,67,69,104,105],"qalqalah":[63,65],"silent":[15,17]},
-"110": {"ghunnah":[2,5],"madd":[7,8,66,67],"wasl":[18,19,33,34]},
-"111": {"idgham":[33,38],"madd":[24,25,49,50,62,63],"qalqalah":[9,11]},
-"112": {"ghunnah":[17,21],"idgham":[42,43],"madd":[2,3,50,51,86,87],"wasl":[12,13,21,22,41,42,54,55]}
+"1": {"ghunnah":[52,55],"idghaam_ghunnah":[89,94],"lam_shamsiyyah":[51,52],"madd_246":[100,101],"qalqalah":[40,42]},
+"2": {"ikhfa":[18,22],"idghaam_ghunnah":[25,30],"idghaam_no_ghunnah":[30,35],"idghaam_shafawi":[13,18,40,45],"madd_246":[87,88],"hamzat_wasl":[59,60]},
+"3": {"ghunnah":[37,40],"ikhfa":[8,12,133,136],"idghaam_ghunnah":[91,96],"lam_shamsiyyah":[36,37,120,121],"madd_2":[73,74],"madd_246":[147,148],"madd_munfasil":[76,78],"qalqalah":[40,42,141,143],"silent":[32,34,63,65],"hamzat_wasl":[35,36,46,47,119,120]},
+"4": {"lam_shamsiyyah":[37,38,68,69],"madd_246":[85,86],"madd_muttasil":[43,45],"hamzat_wasl":[22,23,36,37,50,51,67,68,78,79]},
+"5": {"ikhfa":[69,73,94,98],"iqlab":[33,37],"madd_2":[21,22,31,32,49,50],"madd_246":[122,123],"madd_munfasil":[10,12,100,102],"silent":[12,14],"hamzat_wasl":[41,42,112,113]},
+"6": {"ikhfa":[28,32],"idghaam_shafawi":[23,28],"madd_2":[49,50],"madd_246":[72,73],"madd_munfasil":[2,4,52,54],"qalqalah":[17,19]},
+"7": {"ikhfa":[97,101,101,104],"idghaam_ghunnah":[41,47],"lam_shamsiyyah":[86,87],"madd_246":[119,120],"madd_munfasil":[4,6,50,52,73,75],"qalqalah":[21,23],"silent":[75,77],"hamzat_wasl":[85,86]},
+"8": {"idghaam_no_ghunnah":[25,31],"lam_shamsiyyah":[46,47],"madd_2":[14,15,73,74],"madd_246":[78,79],"silent":[68,70],"hamzat_wasl":[45,46]},
+"9": {"ghunnah":[2,5],"ikhfa":[34,37],"idghaam_ghunnah":[51,56],"madd_2":[14,15,41,42],"madd_246":[88,89],"madd_muttasil":[58,60],"qalqalah":[10,12],"hamzat_wasl":[20,21,77,78]},
+"10": {"ikhfa":[9,12,36,41],"madd_2":[34,35],"madd_246":[72,73],"madd_munfasil":[16,18],"qalqalah":[4,6]},
+"11": {"ikhfa":[19,23,28,32,52,55],"idghaam_ghunnah":[46,50],"madd_246":[86,87]},
+"12": {"ghunnah":[4,7],"idghaam_shafawi":[40,45],"madd_246":[59,60],"madd_munfasil":[7,9,29,31],"silent":[18,20]},
+"13": {"madd_2":[67,68],"madd_246":[98,99],"madd_munfasil":[25,27,39,41],"silent":[13,15,27,29],"hamzat_wasl":[18,19]},
+"14": {"ghunnah":[25,28,32,35],"madd_2":[11,12,39,40],"madd_246":[44,45],"madd_munfasil":[20,22],"silent":[6,8]},
+"15": {"madd_2":[28,29,50,51,67,68],"madd_246":[72,73]},
+"16": {"lam_shamsiyyah":[17,18],"madd_2":[60,61],"madd_246":[65,66],"madd_muttasil":[23,25],"qalqalah":[10,12],"hamzat_wasl":[16,17,30,31]},
+"17": {"ghunnah":[65,68,77,80],"ikhfa":[73,77],"idghaam_ghunnah":[18,23],"idghaam_no_ghunnah":[36,42,58,63],"madd_2":[52,53,84,85],"madd_246":[89,90],"madd_munfasil":[13,15,68,70],"qalqalah":[9,11],"hamzat_wasl":[42,43]},
+"18": {"ghunnah":[98,101],"idghaam_ghunnah":[75,79],"madd_2":[36,37,54,55],"madd_246":[109,110],"qalqalah":[7,9,46,48],"hamzat_wasl":[16,17,31,32,86,87]},
+"19": {"ikhfa":[10,14,51,54],"lam_shamsiyyah":[17,18],"madd_2":[6,7,23,24,26,27,56,57,94,95],"madd_246":[114,115],"hamzat_wasl":[16,17,32,33]},
+"20": {"ghunnah":[26,29],"lam_shamsiyyah":[25,26],"madd_246":[47,48],"hamzat_wasl":[13,14,24,25]},
+"21": {"ikhfa":[51,54],"idghaam_ghunnah":[26,31],"madd_246":[56,57],"madd_munfasil":[13,15],"silent":[15,17],"hamzat_wasl":[5,6,34,35]},
+"22": {"ghunnah":[96,99],"madd_2":[66,67],"madd_246":[107,108],"madd_munfasil":[18,20],"qalqalah":[62,64],"hamzat_wasl":[38,39,70,71,84,85]},
+"23": {"ghunnah":[16,19],"madd_246":[46,47]},
+"24": {"ikhfa":[19,23,39,43,106,110],"idghaam_ghunnah":[85,90],"idghaam_shafawi":[163,168],"madd_2":[61,62,71,72],"madd_246":[174,175],"madd_munfasil":[28,30],"qalqalah":[110,112],"silent":[14,16,52,54],"hamzat_wasl":[5,6,150,151]},
+"25": {"ghunnah":[71,74],"ikhfa":[21,25],"idghaam_no_ghunnah":[34,39],"madd_2":[76,77,87,88],"madd_246":[115,116],"madd_munfasil":[4,6,57,59,80,82,96,98],"qalqalah":[25,27],"hamzat_wasl":[108,109]},
+"26": {"ikhfa":[38,43],"idghaam_ghunnah":[65,70],"lam_shamsiyyah":[21,22],"madd_2":[29,30,47,48,52,53],"madd_246":[76,77],"qalqalah":[43,45],"silent":[8,10],"hamzat_wasl":[11,12,20,21]},
+"27": {"ikhfa_shafawi":[35,39],"madd_2":[17,18,47,48],"madd_246":[57,58],"hamzat_wasl":[21,22]},
+"28": {"idghaam_shafawi":[95,100],"madd_2":[113,114],"madd_246":[123,124],"hamzat_wasl":[81,82]},
+"29": {"ghunnah":[24,27,76,79],"ikhfa":[41,45],"idghaam_ghunnah":[4,8,36,41],"lam_shamsiyyah":[101,102],"madd_2":[34,35,50,51,56,57,86,87,105,106],"madd_246":[110,111],"madd_munfasil":[27,29],"qalqalah":[64,66,94,96],"hamzat_wasl":[100,101]},
+"30": {"ghunnah":[37,40],"ikhfa":[81,86],"lam_shamsiyyah":[42,43],"madd_2":[48,49,51,52,94,95],"madd_246":[163,164],"madd_munfasil":[30,32],"madd_muttasil":[123,125],"qalqalah":[90,92],"silent":[32,34],"hamzat_wasl":[14,15,41,42,57,58,118,119]},
+"31": {"ikhfa":[38,42,80,85],"idghaam_no_ghunnah":[88,94],"madd_2":[30,31],"madd_246":[112,113],"hamzat_wasl":[16,17]},
+"32": {"idghaam_ghunnah":[29,35,41,46],"lam_shamsiyyah":[13,14],"madd_2":[61,62],"madd_246":[76,77],"madd_muttasil":[19,21],"qalqalah":[26,28],"hamzat_wasl":[12,13]},
+"33": {"ghunnah":[35,38],"ikhfa":[72,76],"idghaam_ghunnah":[83,87],"lam_shamsiyyah":[34,35,47,48],"madd_246":[93,94],"hamzat_wasl":[7,8,22,23,33,34,46,47,58,59]},
+"34": {"ikhfa":[28,32],"idghaam_ghunnah":[23,28,57,62],"madd_2":[78,79],"madd_246":[83,84],"qalqalah":[32,34],"silent":[55,57],"hamzat_wasl":[39,40,73,74]},
+"35": {"ikhfa":[11,15],"ikhfa_shafawi":[45,49],"idghaam_ghunnah":[77,81],"lam_shamsiyyah":[50,51],"madd_246":[99,100],"madd_muttasil":[15,17],"qalqalah":[38,40],"hamzat_wasl":[24,25,49,50,60,61]},
+"36": {"ikhfa_shafawi":[115,119],"idghaam_ghunnah":[39,43],"lam_shamsiyyah":[127,128],"madd_2":[75,76,135,136,146,147],"madd_246":[151,152],"madd_munfasil":[32,34],"silent":[34,36],"hamzat_wasl":[16,17,80,81,126,127]},
+"37": {"ikhfa":[12,15,29,33],"madd_2":[15,16,50,51],"madd_246":[73,74],"silent":[35,37],"hamzat_wasl":[7,8]},
+"38": {"ikhfa":[39,43,43,46],"madd_2":[22,23,51,52],"madd_246":[56,57],"hamzat_wasl":[27,28]},
+"39": {"ghunnah":[73,76],"ikhfa":[88,92,115,118],"idghaam_ghunnah":[57,61],"lam_shamsiyyah":[72,73],"madd_246":[120,121],"silent":[31,33],"hamzat_wasl":[14,15,71,72]},
+"40": {"ikhfa":[23,27,83,86],"ikhfa_shafawi":[14,18],"madd_246":[88,89],"qalqalah":[29,31]},
+"41": {"ikhfa":[33,37],"idghaam_ghunnah":[28,33],"idghaam_shafawi":[80,85],"madd_2":[100,101],"madd_246":[114,115],"qalqalah":[37,39],"silent":[71,73,93,95],"hamzat_wasl":[9,10,54,55]},
+"42": {"ghunnah":[36,39],"ikhfa":[75,79],"ikhfa_shafawi":[19,23],"idghaam_ghunnah":[7,11],"idghaam_shafawi":[91,96],"lam_shamsiyyah":[35,36,51,52],"madd_2":[59,60],"madd_246":[102,103],"hamzat_wasl":[23,24,34,35,50,51]},
+"43": {"ghunnah":[99,102],"ikhfa":[20,24,37,41,76,79],"idghaam_shafawi":[32,37,94,99],"madd_246":[112,113]},
+"44": {"ghunnah":[99,102],"ikhfa":[124,127],"madd_2":[166,167],"madd_246":[171,172],"madd_munfasil":[149,151],"madd_muttasil":[18,20,24,26,36,38],"qalqalah":[140,142],"hamzat_wasl":[70,71,112,113,161,162]},
+"45": {"ghunnah":[7,10,58,61],"ikhfa":[17,20,86,89],"ikhfa_shafawi":[24,28],"lam_shamsiyyah":[54,55,63,64],"madd_246":[91,92],"madd_munfasil":[12,14],"madd_muttasil":[69,71],"hamzat_wasl":[28,29,53,54,62,63]},
+"46": {"ghunnah":[61,64,81,84,88,91],"idghaam_ghunnah":[6,11,28,33],"madd_2":[67,68,95,96],"madd_246":[100,101],"madd_munfasil":[76,78]},
+"47": {"ikhfa":[75,79,90,94],"idghaam_ghunnah":[83,88,114,119],"madd_2":[16,17,49,50,164,165],"madd_246":[169,170],"hamzat_wasl":[9,10,23,24,42,43]},
+"48": {"idghaam_ghunnah":[61,65],"idghaam_no_ghunnah":[70,76],"madd_2":[32,33],"madd_246":[85,86],"madd_muttasil":[58,60],"qalqalah":[6,8],"hamzat_wasl":[39,40]},
+"49": {"ikhfa_shafawi":[28,32],"idghaam_shafawi":[46,51],"lam_shamsiyyah":[55,56],"madd_246":[73,74],"hamzat_wasl":[32,33,54,55]},
+"50": {"ikhfa":[29,32,46,49,60,63],"idghaam_ghunnah":[14,19],"madd_2":[4,5,36,37,56,57],"madd_246":[65,66]},
+"51": {"ghunnah":[59,62],"ikhfa":[46,50],"madd_2":[27,28,42,43,68,69,72,73],"madd_246":[77,78],"madd_munfasil":[18,20],"qalqalah":[6,8,23,25,50,52]},
+"52": {"ikhfa":[70,73],"lam_shamsiyyah":[46,47],"madd_2":[31,32,39,40,84,85],"madd_246":[89,90],"madd_munfasil":[65,67],"hamzat_wasl":[45,46,59,60]},
+"53": {"madd_2":[41,42],"madd_246":[46,47],"madd_munfasil":[17,19],"madd_muttasil":[25,27],"qalqalah":[13,15],"silent":[6,8]},
+"54": {"ikhfa":[15,18,23,26],"idghaam_ghunnah":[55,60],"madd_2":[53,54],"madd_246":[62,63],"madd_muttasil":[36,38],"qalqalah":[10,12]},
+"55": {"ikhfa":[40,43],"lam_shamsiyyah":[50,51],"madd_2":[54,55],"madd_246":[59,60],"madd_munfasil":[5,7],"silent":[7,9],"hamzat_wasl":[24,25,49,50]},
+"56": {"ghunnah":[69,72],"idghaam_mutaqaribayn":[8,9],"idghaam_shafawi":[96,101],"lam_shamsiyyah":[28,29,105,106],"madd_2":[34,35,37,38,91,92,109,110],"madd_246":[114,115],"hamzat_wasl":[27,28,43,44,53,54,104,105]},
+"57": {"ghunnah":[21,24],"ikhfa":[47,51],"ikhfa_shafawi":[36,40],"madd_2":[31,32],"madd_246":[68,69],"qalqalah":[62,64],"silent":[57,59],"hamzat_wasl":[4,5]},
+"58": {"idghaam_no_ghunnah":[35,41],"madd_2":[17,18],"madd_246":[75,76]},
+"59": {"ghunnah":[46,49],"ikhfa":[11,15],"lam_shamsiyyah":[61,62],"madd_2":[22,23,51,52,65,66],"madd_246":[70,71],"madd_munfasil":[41,43],"silent":[6,8],"hamzat_wasl":[60,61]},
+"60": {"idghaam_ghunnah":[22,27],"madd_2":[59,60],"madd_246":[62,63],"madd_munfasil":[50,52],"qalqalah":[55,57],"silent":[6,8]},
+"61": {"ghunnah":[44,47],"lam_shamsiyyah":[43,44],"madd_2":[23,24],"madd_246":[71,72],"madd_munfasil":[29,32],"silent":[6,8,16,18],"hamzat_wasl":[42,43]},
+"62": {"ikhfa":[14,17],"madd_2":[29,30,60,61],"madd_246":[63,64],"madd_munfasil":[5,7,52,54],"qalqalah":[56,58],"silent":[7,9]},
+"63": {"ikhfa":[57,61,70,73],"madd_2":[19,20,35,36],"madd_246":[75,76],"silent":[65,67]},
+"64": {"ghunnah":[47,50],"ikhfa":[23,26,57,60],"lam_shamsiyyah":[64,65],"madd_2":[68,69],"madd_246":[73,74],"madd_munfasil":[8,10,17,20,40,42],"silent":[10,12,42,44],"hamzat_wasl":[63,64]},
+"65": {"ghunnah":[2,5],"ikhfa":[70,73],"madd_246":[75,76],"madd_muttasil":[57,59,63,65],"qalqalah":[39,41],"silent":[13,15]},
+"66": {"ikhfa":[24,28,50,53],"idghaam_ghunnah":[66,71],"hamzat_wasl":[32,33]},
+"67": {"ikhfa":[36,40],"idghaam_no_ghunnah":[4,9],"madd_246":[68,69],"hamzat_wasl":[44,45]},
+"68": {"ikhfa":[23,26,49,53,53,56],"madd_2":[61,62],"madd_246":[66,67],"madd_munfasil":[28,30],"silent":[6,8,30,32],"hamzat_wasl":[22,23]},
+"69": {"idghaam_ghunnah":[29,34],"madd_2":[10,11,38,39,57,58],"madd_246":[60,61],"madd_munfasil":[47,50],"qalqalah":[53,55]},
+"70": {"ikhfa":[24,29],"madd_2":[17,18,37,38],"madd_246":[54,55],"silent":[10,12],"hamzat_wasl":[43,44]},
+"71": {"madd_2":[11,12,50,51,72,73],"madd_246":[77,78],"hamzat_wasl":[30,31,40,41]},
+"72": {"ikhfa":[57,62],"idghaam_ghunnah":[49,53],"madd_2":[25,26,72,73],"madd_246":[77,78],"madd_munfasil":[16,18],"qalqalah":[6,8]},
+"73": {"ghunnah":[20,23],"idghaam_ghunnah":[24,28],"lam_shamsiyyah":[105,106,129,130],"madd_2":[10,11,90,91,112,113,136,137,159,160],"madd_246":[164,165],"madd_munfasil":[60,62],"madd_muttasil":[123,125],"silent":[111,112,135,136,148,150],"hamzat_wasl":[81,82,104,105,128,129]},
+"74": {"ghunnah":[113,116],"ikhfa":[142,146],"idghaam_ghunnah":[27,32,37,42],"madd_2":[18,19,51,52,146,147],"madd_246":[151,152],"madd_muttasil":[104,106],"silent":[127,129],"hamzat_wasl":[60,61,72,73,97,98]},
+"75": {"ghunnah":[35,38],"lam_shamsiyyah":[48,49],"madd_2":[12,13,40,41,52,53],"madd_246":[57,58],"madd_munfasil":[30,32],"qalqalah":[4,6],"hamzat_wasl":[47,48]},
+"76": {"ikhfa":[24,28],"madd_2":[52,53,65,66,79,80],"madd_246":[103,104],"qalqalah":[28,30,42,44],"hamzat_wasl":[35,36,86,87,96,97]},
+"77": {"ghunnah":[68,71],"ikhfa":[97,101],"madd_2":[10,11,58,59,111,112],"madd_246":[125,126],"madd_munfasil":[63,65],"qalqalah":[107,109,119,121],"silent":[47,49,82,84],"hamzat_wasl":[19,20,29,30]},
+"78": {"ghunnah":[97,100],"madd_2":[7,8,21,22,117,118],"madd_246":[122,123],"hamzat_wasl":[46,47,83,84]},
+"79": {"ghunnah":[132,135],"idghaam_ghunnah":[53,58,63,68],"lam_shamsiyyah":[119,120],"madd_2":[11,12,24,25,89,90,139,140],"madd_246":[144,145],"hamzat_wasl":[93,94,118,119]},
+"80": {"ikhfa":[80,83],"iqlab":[58,61],"idghaam_no_ghunnah":[30,35],"idghaam_shafawi":[52,57],"madd_2":[11,12,88,89],"madd_246":[93,94]},
+"81": {"ghunnah":[102,105],"ikhfa":[33,37],"lam_shamsiyyah":[17,18],"madd_2":[12,13,82,83,124,125],"madd_246":[129,130],"madd_munfasil":[53,55],"qalqalah":[37,39],"hamzat_wasl":[16,17,62,63,72,73]},
+"82": {"ghunnah":[82,85],"ikhfa":[61,66],"idghaam_ghunnah":[23,27],"lam_shamsiyyah":[8,9],"madd_2":[14,15,40,41,72,73,96,97],"madd_246":[101,102],"hamzat_wasl":[7,8]},
+"83": {"ghunnah":[36,39],"ikhfa":[64,67],"lam_shamsiyyah":[52,53,78,79],"madd_2":[82,83],"madd_246":[87,88],"madd_munfasil":[31,33],"hamzat_wasl":[51,52,77,78]},
+"84": {"ikhfa":[45,49,117,120],"idghaam_ghunnah":[51,55,107,112],"idghaam_shafawi":[88,93],"madd_2":[19,20,41,42,64,65,76,77,141,142],"madd_246":[146,147],"qalqalah":[9,11],"hamzat_wasl":[2,3]},
+"85": {"idghaam_ghunnah":[47,52],"lam_shamsiyyah":[56,57],"madd_2":[8,9,60,61],"madd_246":[65,66],"qalqalah":[19,21],"hamzat_wasl":[33,34,55,56]},
+"86": {"ghunnah":[37,40],"idghaam_shafawi":[42,47],"lam_shamsiyyah":[51,52],"madd_2":[12,13,55,56],"madd_246":[60,61],"madd_munfasil":[32,34],"qalqalah":[4,6],"hamzat_wasl":[50,51]},
+"87": {"ghunnah":[8,11,42,45,147,150],"ikhfa":[35,40,129,132,154,157],"idghaam_ghunnah":[53,58],"idghaam_no_ghunnah":[48,53,103,108],"lam_shamsiyyah":[7,8,89,90,164,165],"madd_2":[31,32,97,98,115,116,139,140,168,169],"madd_246":[173,174],"madd_munfasil":[108,110,124,126],"qalqalah":[58,60,135,137],"hamzat_wasl":[6,7,88,89,163,164]},
+"88": {"ghunnah":[46,49],"ikhfa":[64,67],"madd_2":[19,20,32,33,56,57],"madd_246":[80,81],"qalqalah":[9,11],"hamzat_wasl":[2,3,41,42,69,70]},
+"89": {"ikhfa":[68,71],"idghaam_ghunnah":[61,66],"madd_2":[34,35,84,85],"madd_246":[89,90],"madd_munfasil":[11,13],"hamzat_wasl":[79,80]},
+"90": {"ghunnah":[81,84],"idghaam_ghunnah":[148,153,158,163],"madd_2":[19,20,37,38,66,67,102,103,124,125,180,181],"madd_246":[185,186],"madd_munfasil":[76,78],"qalqalah":[9,11,27,29,132,134],"silent":[95,97,169,171],"hamzat_wasl":[2,3,115,116]},
+"91": {"idghaam_no_ghunnah":[53,58,98,103],"madd_2":[75,76,107,108],"madd_246":[112,113],"madd_munfasil":[8,10,89,91],"qalqalah":[83,85],"hamzat_wasl":[2,3,82,83]},
+"92": {"ghunnah":[2,5,18,21,30,33],"idghaam_ghunnah":[34,38,44,48],"madd_2":[8,9,38,39],"madd_246":[74,75],"madd_munfasil":[13,15],"hamzat_wasl":[67,68]},
+"93": {"ikhfa_shafawi":[24,28],"madd_2":[55,56],"madd_246":[60,61],"madd_munfasil":[11,13],"silent":[13,15]},
+"94": {"ghunnah":[82,85],"ikhfa":[48,52],"idghaam_ghunnah":[4,8],"lam_shamsiyyah":[21,22],"madd_2":[25,26,30,31,76,77,91,92,95,96],"madd_246":[100,101],"hamzat_wasl":[20,21]},
+"95": {"ghunnah":[44,47],"madd_2":[6,7,36,37],"madd_246":[64,65],"madd_munfasil":[39,41]},
+"96": {"ikhfa":[55,59,72,75],"idghaam_ghunnah":[68,72],"idghaam_shafawi":[50,55],"madd_246":[77,78],"madd_munfasil":[5,8]},
+"97": {"ghunnah":[104,107,142,145],"idghaam_ghunnah":[120,125],"madd_2":[46,47,60,61,86,87,130,131,149,150],"madd_246":[154,155],"qalqalah":[3,5,56,58,99,101],"silent":[81,83],"hamzat_wasl":[2,3,12,13,22,23,64,65]},
+"98": {"ghunnah":[2,5,57,60],"ikhfa":[30,34,65,68],"madd_2":[79,80],"madd_246":[84,85],"hamzat_wasl":[38,39]},
+"99": {"ikhfa":[56,60],"idghaam_ghunnah":[32,37],"madd_2":[67,68],"madd_246":[72,73],"madd_muttasil":[13,15,19,21]},
+"100": {"idghaam_ghunnah":[20,24],"madd_246":[48,49]},
+"101": {"ghunnah":[2,5,34,37],"idghaam_shafawi":[29,34],"madd_246":[81,82],"madd_munfasil":[48,51],"madd_muttasil":[58,60],"qalqalah":[75,77],"silent":[54,56],"hamzat_wasl":[6,7,39,40]},
+"102": {"ikhfa":[54,57],"madd_2":[66,67],"madd_246":[71,72],"hamzat_wasl":[42,43]},
+"103": {"ikhfa":[101,104],"madd_2":[51,52,75,76],"madd_246":[114,115],"madd_muttasil":[64,66],"hamzat_wasl":[17,18,27,28,57,58,91,92]},
+"104": {"ghunnah":[122,125,129,132],"idghaam_ghunnah":[87,92],"lam_shamsiyyah":[16,17,36,37],"madd_2":[99,100,136,137],"madd_246":[141,142],"madd_munfasil":[71,73,117,119],"madd_muttasil":[22,24],"qalqalah":[9,11],"hamzat_wasl":[15,16,35,36]},
+"105": {"ghunnah":[58,61],"iqlab":[37,40],"lam_shamsiyyah":[24,25,47,48,93,94],"madd_2":[97,98],"madd_246":[102,103],"qalqalah":[6,8,13,15],"hamzat_wasl":[23,24,46,47,62,63,92,93]},
+"106": {"ghunnah":[2,5],"idghaam_no_ghunnah":[25,31],"madd_2":[12,13,23,24,40,41],"madd_246":[45,46]},
+"107": {"idghaam_no_ghunnah":[35,40],"madd_2":[17,18,44,45],"madd_246":[49,50],"madd_munfasil":[4,6]},
+"108": {"ghunnah":[7,10,33,36],"ikhfa":[67,71,78,81],"idghaam_ghunnah":[59,63],"idghaam_shafawi":[81,86],"madd_2":[45,46,57,58,63,64],"madd_246":[92,93],"madd_munfasil":[19,22,38,40]},
+"109": {"ikhfa":[4,8,30,33],"ikhfa_shafawi":[82,86],"idghaam_ghunnah":[52,56,90,95],"madd_246":[104,105],"madd_munfasil":[67,69],"madd_muttasil":[49,51],"qalqalah":[63,65],"silent":[15,17]},
+"110": {"ghunnah":[2,5],"madd_2":[7,8],"madd_246":[66,67],"hamzat_wasl":[18,19,33,34]},
+"111": {"idghaam_no_ghunnah":[33,38],"madd_2":[24,25,49,50],"madd_246":[62,63],"qalqalah":[9,11]},
+"112": {"ikhfa_shafawi":[17,21],"lam_shamsiyyah":[42,43],"madd_2":[2,3,50,51],"madd_246":[86,87],"hamzat_wasl":[12,13,21,22,41,42,54,55]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/22.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/22.json
index 778fedd..300441e 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/22.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/22.json
@@ -1,80 +1,80 @@
{
-"1": {"ghunnah":[54,57,83,86],"idgham":[53,54,99,100],"madd":[41,43,120,121],"silent":[68,70],"wasl":[52,53,61,62,98,99]},
-"2": {"ghunnah":[47,50,112,115,137,141,158,161],"idgham":[111,112],"madd":[50,52,123,124,145,146,155,156,182,183],"qalqalah":[183,184],"wasl":[110,111,170,171]},
-"3": {"ghunnah":[9,12],"idgham":[8,9,18,22,56,60,84,89],"madd":[24,25,82,83,91,92],"qalqalah":[92,93],"wasl":[7,8,34,35]},
-"4": {"ghunnah":[18,21,27,31,44,47],"idgham":[90,91],"madd":[23,24,49,50,60,61,96,97],"wasl":[89,90]},
-"5": {"ghunnah":[15,18,24,28,28,31,65,68,86,90,94,98,98,101,114,118,118,121,134,138,138,141,270,273,272,277,277,280,299,304,304,307,339,342,365,368,432,435,446,450,483,487,496,499,550,552,560,564,573,577],"idgham":[14,15,43,48,81,86,104,109,144,149,154,159,167,171,188,193,263,268,342,347,347,351,368,373,373,377,454,459],"madd":[2,4,78,79,245,247,254,257,318,320,387,390,491,493,520,522,580,581],"qalqalah":[74,76,109,111,312,314,581,582],"silent":[320,322],"wasl":[13,14,51,52,224,225,400,401,465,466,515,516,525,526]},
-"6": {"ghunnah":[12,15,42,45,72,75,97,101],"madd":[2,3,47,48,77,78,103,104],"wasl":[16,17,29,30,56,57]},
-"7": {"ghunnah":[4,7,52,55,75,79],"idgham":[9,10,27,32],"madd":[88,89],"qalqalah":[66,68],"wasl":[8,9,56,57,81,82]},
-"8": {"ghunnah":[9,12],"idgham":[8,9,18,22,56,60,67,72,82,87],"madd":[24,25,80,81,89,90],"wasl":[7,8,34,35]},
-"9": {"ghunnah":[30,34],"idgham":[59,60,74,78],"madd":[16,17,52,53,87,88,103,104,124,125],"qalqalah":[10,12,125,126],"wasl":[40,41,58,59,96,97,117,118]},
-"10": {"ghunnah":[36,39],"idgham":[64,69],"madd":[2,3,62,63,75,76],"qalqalah":[76,77],"wasl":[40,41]},
-"11": {"ghunnah":[9,12,49,53,83,86,122,125],"idgham":[8,9,18,22,155,156],"madd":[67,68,91,92,145,146,182,183,213,214],"qalqalah":[77,79,139,141],"wasl":[7,8,29,30,76,77,121,122,154,155,167,168,193,194,206,207]},
-"12": {"ghunnah":[12,16,59,62],"idgham":[82,83],"madd":[45,46,66,67,70,71,88,89,99,100],"qalqalah":[2,4,100,101],"silent":[7,9],"wasl":[20,21,81,82,92,93]},
-"13": {"ghunnah":[14,18],"idgham":[37,42],"madd":[23,25,48,49,89,90],"qalqalah":[2,4,28,30],"silent":[7,9],"wasl":[59,60,82,83]},
-"14": {"ghunnah":[2,5,72,75,77,81,89,93,116,119],"idgham":[57,58],"madd":[61,62,66,67,75,76,110,111,145,146],"qalqalah":[16,18,81,83,146,147],"silent":[41,43,53,55],"wasl":[6,7,23,24,56,57,101,102,120,121]},
-"15": {"ghunnah":[2,6,14,17,29,32,117,120,138,141,157,160],"idgham":[20,25,25,29,50,51,104,105],"madd":[110,112,169,170,179,180],"qalqalah":[85,87,125,127],"wasl":[37,38,49,50,62,63,103,104]},
-"16": {"ghunnah":[14,17,32,36,50,53],"idgham":[44,48,72,76],"madd":[6,7,21,22,30,31,42,43,78,79],"qalqalah":[79,80],"wasl":[54,55]},
-"17": {"ghunnah":[2,5,69,72,120,123,174,177,204,208],"idgham":[51,52,68,69],"madd":[55,56,74,75,113,115,166,167,210,211],"qalqalah":[211,212],"silent":[24,26,45,47,115,117],"wasl":[6,7,29,30,50,51,67,68,82,83,95,96,124,125,159,160,178,179]},
-"18": {"ghunnah":[14,17,43,47,67,71,111,114,178,181,270,273],"idgham":[50,51,86,87,110,111,136,137,148,149,168,173,177,178,225,229,256,261],"madd":[39,40,56,57,59,60,252,253,299,301],"madd-lazim":[154,156],"wasl":[18,19,49,50,73,74,85,86,97,98,109,110,122,123,135,136,147,148,176,177,210,211,234,235,274,275]},
-"19": {"ghunnah":[115,119],"idgham":[91,96,96,101,103,107],"madd":[2,3,143,144],"silent":[29,31,65,67],"wasl":[19,20,48,49,136,137]},
-"20": {"madd":[13,14,44,45],"qalqalah":[45,46],"wasl":[37,38]},
-"21": {"idgham":[6,11],"madd":[13,14,28,29],"qalqalah":[29,30]},
-"22": {"ghunnah":[53,56],"idgham":[24,28],"madd":[7,9,17,19,101,102],"qalqalah":[102,103],"silent":[19,21,35,37,65,67,83,85],"wasl":[94,95]},
-"23": {"ghunnah":[2,5,72,75,77,81,89,93,150,154],"idgham":[57,58,157,161,168,173],"madd":[61,62,66,67,75,76,110,111,196,197],"qalqalah":[16,18,81,83],"silent":[41,43,53,55],"wasl":[6,7,23,24,56,57,101,102]},
-"24": {"idgham":[18,19],"madd":[6,8,49,51,65,66,76,77],"qalqalah":[77,78],"silent":[8,10,51,53],"wasl":[17,18,33,34,69,70]},
-"25": {"ghunnah":[2,5,41,45,107,110,180,184],"idgham":[106,107,155,159,190,195],"madd":[100,101,118,120,128,129,219,220],"qalqalah":[161,163,197,199],"silent":[23,25],"wasl":[6,7,51,52,61,62,73,74,84,85,123,124,142,143]},
-"26": {"idgham":[53,58,79,84,103,104,137,138,148,149],"madd":[26,27,107,109,124,126,154,155],"qalqalah":[22,24,155,156],"wasl":[41,42,119,120,136,137,147,148]},
-"27": {"ghunnah":[7,11,15,18,87,91],"idgham":[14,15,49,54,73,77],"madd":[105,106],"qalqalah":[106,107],"wasl":[13,14,24,25]},
-"28": {"ghunnah":[113,116],"idgham":[72,77,107,112],"madd":[19,20,62,64,84,85,134,135,175,177,189,190],"qalqalah":[160,162],"silent":[12,14,43,45,145,147,167,169],"wasl":[46,47,52,53,125,126,170,171,182,183]},
-"29": {"ghunnah":[2,5],"madd":[91,92],"qalqalah":[10,12,92,93],"silent":[15,17,39,41,69,71],"wasl":[74,75,84,85]},
-"30": {"ghunnah":[65,68],"idgham":[12,16,54,59,157,158,207,208],"madd":[2,3,30,31,61,62,76,77,106,107,180,181,211,212],"qalqalah":[144,146,161,163,187,189],"silent":[153,155,196,198],"wasl":[34,35,97,98,143,144,156,157,171,172,186,187,206,207]},
-"31": {"ghunnah":[75,78,165,169],"idgham":[48,52,94,95,119,120,147,148],"madd":[6,8,42,43,100,102,171,172],"qalqalah":[172,173],"wasl":[61,62,93,94,118,119,146,147]},
-"32": {"ghunnah":[47,50,56,60],"idgham":[12,16],"madd":[2,3,28,30,73,74],"qalqalah":[60,62,74,75],"wasl":[35,36,66,67]},
-"33": {"ghunnah":[44,47,46,51,51,54],"idgham":[37,42],"madd":[18,19,28,31,64,66,90,91],"qalqalah":[91,92],"wasl":[73,74,83,84]},
-"34": {"ghunnah":[12,15,16,20,30,33,91,94,144,148],"idgham":[34,40,85,90,136,140],"madd":[112,113,122,123,134,135,140,141,152,154,188,189],"silent":[49,51,164,166],"wasl":[52,53,58,59,103,104,177,178]},
-"35": {"ghunnah":[122,125,143,146],"idgham":[55,56,107,108],"madd":[59,60,77,79,114,115,135,136,148,149],"qalqalah":[131,133],"silent":[113,114],"wasl":[23,24,54,55,94,95,106,107]},
-"36": {"ghunnah":[34,38,74,78],"idgham":[29,34],"madd":[20,21,40,42,213,214,228,229,260,261],"madd-lazim":[117,119],"qalqalah":[7,9,173,175],"silent":[86,88,158,160,180,182],"wasl":[2,3,47,48,78,79,89,90,95,96,183,184,196,197]},
-"37": {"ghunnah":[82,85],"idgham":[2,6,56,60,69,70],"madd":[41,43,53,54,92,93,155,156,182,183],"qalqalah":[73,75],"silent":[128,130],"wasl":[12,13,68,69,131,132,171,172]},
-"38": {"ghunnah":[2,5,53,56,90,94],"madd":[18,19,46,48,96,97],"silent":[48,50],"wasl":[6,7,29,30,57,58]},
-"39": {"ghunnah":[35,38,57,60],"madd":[22,23,93,94],"silent":[50,52],"wasl":[61,62]},
-"40": {"ghunnah":[24,28,35,39,119,122,134,138,246,249,251,254,269,272,281,284],"idgham":[62,66,118,119,143,148,175,179,187,191,237,242,265,269],"madd":[30,31,57,59,162,163,185,186,195,196,276,278,307,308],"silent":[19,21,72,74],"wasl":[84,85,109,110,117,118,217,218,223,224,255,256,285,286]},
-"41": {"ghunnah":[20,23,138,141],"idgham":[12,17,55,56,79,80],"madd":[23,24,62,63,86,87,156,157,171,172],"silent":[51,53,61,62,75,77,85,86,99,101,125,127],"wasl":[33,34,54,55,78,79,104,105,133,134,164,165]},
-"42": {"idgham":[4,8,58,62,66,70],"madd":[74,75],"qalqalah":[23,25,38,40,75,76]},
-"43": {"madd":[15,16,33,34],"qalqalah":[11,13,34,35]},
-"44": {"ghunnah":[69,72],"madd":[8,9,58,59,105,106],"qalqalah":[14,16]},
-"45": {"ghunnah":[14,18,55,59],"idgham":[9,14,99,104,112,116,121,126],"madd":[35,36,128,129],"qalqalah":[129,130]},
-"46": {"ghunnah":[114,117,153,157],"idgham":[57,61,90,94,187,188],"madd":[75,77,142,143,150,151,193,194],"qalqalah":[138,140],"silent":[17,19],"wasl":[24,25,133,134,163,164,174,175,186,187]},
-"47": {"ghunnah":[70,73,84,87,115,118],"idgham":[37,41,110,115],"madd":[64,65,127,128],"wasl":[22,23,48,49]},
-"48": {"ghunnah":[14,18,57,61,61,64],"idgham":[9,14],"madd":[94,95],"wasl":[87,88]},
-"49": {"ghunnah":[20,23,29,32],"idgham":[19,20,57,62],"madd":[7,9,34,36,64,65],"wasl":[18,19]},
-"50": {"ghunnah":[74,78],"idgham":[36,37,53,58,65,69],"madd":[40,41,45,46,80,81],"silent":[20,22,32,34],"wasl":[2,3,35,36]},
-"51": {"madd":[23,25,31,32,42,43,57,59,70,71,81,82],"silent":[18,20,53,55],"wasl":[2,3,74,75]},
-"52": {"ghunnah":[21,25,77,80,129,132,170,173],"idgham":[34,39,43,47,93,94,156,157],"madd":[4,6,64,66,80,83,101,102,107,109,123,124,164,165,196,197,201,202,225,226],"qalqalah":[25,27],"wasl":[92,93,135,136,155,156,183,184,205,206]},
-"53": {"ghunnah":[112,115,142,146],"idgham":[25,26,44,49,71,76,79,83,117,118],"madd":[33,34,121,122,149,150],"qalqalah":[5,7,150,151],"wasl":[24,25,83,84,116,117]},
-"54": {"ghunnah":[44,47,125,128],"idgham":[61,66,180,185],"madd":[90,91,107,108,162,164,178,179,191,192],"silent":[29,31,83,85,164,166],"wasl":[13,14,32,33,50,51,129,130,145,146]},
-"55": {"idgham":[45,50,77,78],"madd":[133,134],"silent":[31,33],"wasl":[14,15,76,77]},
-"56": {"ghunnah":[105,108,114,117],"idgham":[19,24,86,87,113,114],"madd":[90,91,95,96,108,109,119,120],"silent":[70,72,82,84],"wasl":[52,53,85,86,112,113]},
-"57": {"idgham":[78,83],"madd":[43,44,58,60,85,86],"silent":[19,21,32,34,54,56],"wasl":[2,3]},
-"58": {"ghunnah":[45,48,84,87,120,123],"idgham":[113,118,147,148],"madd":[55,57,151,152,156,157],"silent":[20,22,57,59,71,73],"wasl":[2,3,35,36,92,93,124,125,146,147]},
-"59": {"ghunnah":[10,13,46,49],"idgham":[15,20,25,30],"madd":[40,41,72,73],"qalqalah":[4,6,20,22],"wasl":[50,51]},
-"60": {"ghunnah":[52,55,76,79,81,84,97,100],"madd":[2,3,48,49,123,124],"wasl":[87,88,101,102]},
-"61": {"ghunnah":[12,15,47,50,68,71,94,97,112,116],"idgham":[46,47,67,68],"madd":[2,3,119,120],"wasl":[16,17,32,33,45,46,66,67,81,82,98,99]},
-"62": {"ghunnah":[12,15,42,45,62,66,93,96],"madd":[2,3,71,72,83,84,128,129],"qalqalah":[52,54],"wasl":[16,17,29,30,78,79,97,98,110,111,121,122]},
-"63": {"ghunnah":[14,17,28,31,56,60,93,96],"idgham":[40,41],"madd":[46,48,53,55,117,118],"wasl":[18,19,39,40,69,70,97,98]},
-"64": {"ghunnah":[53,56],"idgham":[16,17],"madd":[5,6,22,23,25,26,90,91],"qalqalah":[91,92],"wasl":[15,16,39,40,57,58,72,73,83,84]},
-"65": {"ghunnah":[14,17,130,134,177,180,193,196],"idgham":[38,43,117,118,192,193,208,213],"madd":[103,104,123,125,172,174,215,216],"qalqalah":[73,75],"wasl":[18,19,49,50,61,62,83,84,116,117,145,146,181,182,191,192]},
-"66": {"ghunnah":[30,33,48,51,66,69,75,78],"madd":[13,15,78,79,88,89],"wasl":[7,8,70,71]},
-"67": {"ghunnah":[11,14,15,19,29,32,67,70,112,115],"idgham":[130,136],"madd":[62,63,142,143],"qalqalah":[90,92],"wasl":[77,78,89,90]},
-"68": {"ghunnah":[4,8],"madd":[8,9,55,56],"wasl":[24,25]},
-"69": {"ghunnah":[57,60],"madd":[42,43,79,80],"wasl":[35,36]},
-"70": {"ghunnah":[18,21,73,76,99,102],"idgham":[48,49],"madd":[54,56,79,80,93,94,105,106,129,130],"wasl":[22,23,47,48,61,62,117,118]},
-"71": {"ghunnah":[16,20,85,89],"idgham":[65,70,98,102,108,109,123,128],"madd":[55,56,63,64,91,92,112,113,130,131],"wasl":[24,25]},
-"72": {"ghunnah":[49,53,97,100,189,193,202,206,216,219],"idgham":[197,202,215,216],"madd":[33,34,47,48,162,163,206,207,277,278],"silent":[89,91,258,260],"wasl":[72,73,92,93,126,127,214,215,233,234,241,242,270,271]},
-"73": {"ghunnah":[15,18,34,38,60,63,86,90,203,206],"idgham":[14,15,104,108,124,129,157,161,173,174,189,195,227,228],"madd":[2,4,55,57,151,152,248,249],"qalqalah":[76,78,135,137,165,167,244,246,249,250],"silent":[48,50,115,117,144,146],"wasl":[13,14,38,39,64,65,94,95,134,135,172,173,226,227,239,240]},
-"74": {"ghunnah":[41,44],"madd":[36,38,67,68],"qalqalah":[30,32],"silent":[11,13],"wasl":[14,15,45,46]},
-"75": {"ghunnah":[56,59,65,68,83,87],"idgham":[44,49,55,56],"madd":[30,32,90,91],"wasl":[23,24,54,55,69,70]},
-"76": {"madd":[81,82],"wasl":[57,58,74,75]},
-"77": {"madd":[2,4,124,125],"silent":[31,33,42,44,55,57,68,70,91,93],"wasl":[13,14,34,35,47,48,60,61,83,84,94,95]},
-"78": {"ghunnah":[149,152,176,180,271,274,401,404],"idgham":[90,91,108,113,209,210,270,271,292,293,315,316,400,401],"madd":[4,5,40,41,55,56,135,136,153,154,193,194,258,260,299,300,322,323,363,364,406,407],"qalqalah":[48,50,131,133,180,182],"silent":[10,12,249,251,288,290,298,299,311,313,321,322,338,340],"wasl":[17,18,47,48,89,90,159,160,208,209,269,270,291,292,314,315,328,329,343,344,378,379,399,400]}
+"1": {"ghunnah":[54,57,83,86],"lam_shamsiyyah":[53,54,99,100],"madd_246":[120,121],"madd_munfasil":[41,43],"silent":[68,70],"hamzat_wasl":[52,53,61,62,98,99]},
+"2": {"ghunnah":[47,50,112,115,158,161],"ikhfa_shafawi":[137,141],"lam_shamsiyyah":[111,112],"madd_2":[123,124,145,146,155,156],"madd_246":[182,183],"madd_munfasil":[50,52],"qalqalah":[183,184],"hamzat_wasl":[110,111,170,171]},
+"3": {"ghunnah":[9,12],"idghaam_ghunnah":[18,22,56,60,84,89],"lam_shamsiyyah":[8,9],"madd_2":[24,25,82,83],"madd_246":[91,92],"qalqalah":[92,93],"hamzat_wasl":[7,8,34,35]},
+"4": {"ghunnah":[18,21,44,47],"ikhfa":[27,31],"lam_shamsiyyah":[90,91],"madd_2":[23,24,49,50,60,61],"madd_246":[96,97],"hamzat_wasl":[89,90]},
+"5": {"ghunnah":[15,18,65,68,98,101,118,121,138,141,270,273,277,280,304,307],"ikhfa":[24,28,28,31,86,90,94,98,114,118,134,138,272,277,299,304,339,342,365,368,446,450,483,487,496,499,560,564],"iqlab":[432,435,550,552,573,577],"idghaam_ghunnah":[43,48,104,109,144,149,154,159,167,171,263,268,347,351,373,377,454,459],"idghaam_no_ghunnah":[188,193],"idghaam_shafawi":[81,86,342,347,368,373],"lam_shamsiyyah":[14,15],"madd_2":[78,79],"madd_246":[580,581],"madd_munfasil":[2,4,254,257,318,320,387,390,491,493],"madd_muttasil":[245,247,520,522],"qalqalah":[74,76,109,111,312,314,581,582],"silent":[320,322],"hamzat_wasl":[13,14,51,52,224,225,400,401,465,466,515,516,525,526]},
+"6": {"ghunnah":[12,15,42,45,72,75],"ikhfa":[97,101],"madd_2":[2,3,47,48,77,78],"madd_246":[103,104],"hamzat_wasl":[16,17,29,30,56,57]},
+"7": {"ghunnah":[4,7,52,55],"ikhfa":[75,79],"idghaam_no_ghunnah":[27,32],"lam_shamsiyyah":[9,10],"madd_246":[88,89],"qalqalah":[66,68],"hamzat_wasl":[8,9,56,57,81,82]},
+"8": {"ghunnah":[9,12],"idghaam_ghunnah":[18,22,56,60,67,72,82,87],"lam_shamsiyyah":[8,9],"madd_2":[24,25,80,81],"madd_246":[89,90],"hamzat_wasl":[7,8,34,35]},
+"9": {"ikhfa":[30,34],"idghaam_ghunnah":[74,78],"lam_shamsiyyah":[59,60],"madd_2":[16,17,52,53,87,88,103,104],"madd_246":[124,125],"qalqalah":[10,12,125,126],"hamzat_wasl":[40,41,58,59,96,97,117,118]},
+"10": {"ghunnah":[36,39],"idghaam_no_ghunnah":[64,69],"madd_2":[2,3,62,63],"madd_246":[75,76],"qalqalah":[76,77],"hamzat_wasl":[40,41]},
+"11": {"ghunnah":[9,12,83,86],"ikhfa":[49,53,122,125],"idghaam_ghunnah":[18,22],"lam_shamsiyyah":[8,9,155,156],"madd_2":[67,68,91,92,145,146,182,183],"madd_246":[213,214],"qalqalah":[77,79,139,141],"hamzat_wasl":[7,8,29,30,76,77,121,122,154,155,167,168,193,194,206,207]},
+"12": {"ikhfa":[12,16,59,62],"lam_shamsiyyah":[82,83],"madd_2":[45,46,66,67,70,71,88,89],"madd_246":[99,100],"qalqalah":[2,4,100,101],"silent":[7,9],"hamzat_wasl":[20,21,81,82,92,93]},
+"13": {"ikhfa":[14,18],"idghaam_ghunnah":[37,42],"madd_2":[48,49],"madd_246":[89,90],"madd_munfasil":[23,25],"qalqalah":[2,4,28,30],"silent":[7,9],"hamzat_wasl":[59,60,82,83]},
+"14": {"ghunnah":[2,5,72,75,116,119],"ikhfa":[77,81,89,93],"lam_shamsiyyah":[57,58],"madd_2":[61,62,66,67,75,76,110,111],"madd_246":[145,146],"qalqalah":[16,18,81,83,146,147],"silent":[41,43,53,55],"hamzat_wasl":[6,7,23,24,56,57,101,102,120,121]},
+"15": {"ghunnah":[14,17,117,120,157,160],"ikhfa":[2,6,29,32,138,141],"idghaam_ghunnah":[25,29],"idghaam_no_ghunnah":[20,25],"lam_shamsiyyah":[50,51,104,105],"madd_2":[169,170],"madd_246":[179,180],"madd_muttasil":[110,112],"qalqalah":[85,87,125,127],"hamzat_wasl":[37,38,49,50,62,63,103,104]},
+"16": {"ghunnah":[50,53],"ikhfa":[14,17],"iqlab":[32,36],"idghaam_ghunnah":[44,48,72,76],"madd_2":[6,7,21,22,30,31,42,43],"madd_246":[78,79],"qalqalah":[79,80],"hamzat_wasl":[54,55]},
+"17": {"ghunnah":[2,5,69,72,120,123,174,177],"ikhfa":[204,208],"lam_shamsiyyah":[51,52,68,69],"madd_2":[55,56,74,75,166,167],"madd_246":[210,211],"madd_munfasil":[113,115],"qalqalah":[211,212],"silent":[24,26,45,47,115,117],"hamzat_wasl":[6,7,29,30,50,51,67,68,82,83,95,96,124,125,159,160,178,179]},
+"18": {"ghunnah":[14,17,111,114,178,181,270,273],"ikhfa":[43,47,67,71],"idghaam_ghunnah":[168,173,225,229,256,261],"lam_shamsiyyah":[50,51,86,87,110,111,136,137,148,149,177,178],"madd_2":[39,40,56,57,59,60,252,253],"madd_muttasil":[299,301],"madd_6":[154,156],"hamzat_wasl":[18,19,49,50,73,74,85,86,97,98,109,110,122,123,135,136,147,148,176,177,210,211,234,235,274,275]},
+"19": {"ikhfa":[115,119],"idghaam_ghunnah":[91,96,96,101,103,107],"madd_2":[2,3],"madd_246":[143,144],"silent":[29,31,65,67],"hamzat_wasl":[19,20,48,49,136,137]},
+"20": {"madd_2":[13,14],"madd_246":[44,45],"qalqalah":[45,46],"hamzat_wasl":[37,38]},
+"21": {"idghaam_shafawi":[6,11],"madd_2":[13,14],"madd_246":[28,29],"qalqalah":[29,30]},
+"22": {"ghunnah":[53,56],"idghaam_ghunnah":[24,28],"madd_246":[101,102],"madd_munfasil":[7,9,17,19],"qalqalah":[102,103],"silent":[19,21,35,37,65,67,83,85],"hamzat_wasl":[94,95]},
+"23": {"ghunnah":[2,5,72,75],"ikhfa":[77,81,89,93,150,154],"idghaam_ghunnah":[157,161,168,173],"lam_shamsiyyah":[57,58],"madd_2":[61,62,66,67,75,76,110,111],"madd_246":[196,197],"qalqalah":[16,18,81,83],"silent":[41,43,53,55],"hamzat_wasl":[6,7,23,24,56,57,101,102]},
+"24": {"lam_shamsiyyah":[18,19],"madd_2":[65,66],"madd_246":[76,77],"madd_munfasil":[6,8,49,51],"qalqalah":[77,78],"silent":[8,10,51,53],"hamzat_wasl":[17,18,33,34,69,70]},
+"25": {"ghunnah":[2,5,107,110],"ikhfa":[41,45],"iqlab":[180,184],"idghaam_ghunnah":[155,159,190,195],"lam_shamsiyyah":[106,107],"madd_2":[100,101,128,129],"madd_246":[219,220],"madd_muttasil":[118,120],"qalqalah":[161,163,197,199],"silent":[23,25],"hamzat_wasl":[6,7,51,52,61,62,73,74,84,85,123,124,142,143]},
+"26": {"idghaam_ghunnah":[79,84],"idghaam_no_ghunnah":[53,58],"lam_shamsiyyah":[103,104,137,138,148,149],"madd_2":[26,27],"madd_246":[154,155],"madd_muttasil":[107,109,124,126],"qalqalah":[22,24,155,156],"hamzat_wasl":[41,42,119,120,136,137,147,148]},
+"27": {"ghunnah":[15,18],"ikhfa":[7,11,87,91],"idghaam_ghunnah":[49,54,73,77],"lam_shamsiyyah":[14,15],"madd_246":[105,106],"qalqalah":[106,107],"hamzat_wasl":[13,14,24,25]},
+"28": {"iqlab":[113,116],"idghaam_ghunnah":[72,77],"idghaam_shafawi":[107,112],"madd_2":[19,20,84,85,134,135],"madd_246":[189,190],"madd_munfasil":[62,64],"madd_muttasil":[175,177],"qalqalah":[160,162],"silent":[12,14,43,45,145,147,167,169],"hamzat_wasl":[46,47,52,53,125,126,170,171,182,183]},
+"29": {"ghunnah":[2,5],"madd_246":[91,92],"qalqalah":[10,12,92,93],"silent":[15,17,39,41,69,71],"hamzat_wasl":[74,75,84,85]},
+"30": {"ikhfa":[65,68],"idghaam_ghunnah":[12,16],"idghaam_no_ghunnah":[54,59],"lam_shamsiyyah":[157,158,207,208],"madd_2":[2,3,30,31,61,62,76,77,106,107,180,181],"madd_246":[211,212],"qalqalah":[144,146,161,163,187,189],"silent":[153,155,196,198],"hamzat_wasl":[34,35,97,98,143,144,156,157,171,172,186,187,206,207]},
+"31": {"ghunnah":[75,78],"ikhfa":[165,169],"idghaam_ghunnah":[48,52],"lam_shamsiyyah":[94,95,119,120,147,148],"madd_2":[42,43],"madd_246":[171,172],"madd_muttasil":[6,8,100,102],"qalqalah":[172,173],"hamzat_wasl":[61,62,93,94,118,119,146,147]},
+"32": {"ghunnah":[47,50],"ikhfa":[56,60],"idghaam_ghunnah":[12,16],"madd_2":[2,3],"madd_246":[73,74],"madd_muttasil":[28,30],"qalqalah":[60,62,74,75],"hamzat_wasl":[35,36,66,67]},
+"33": {"ghunnah":[44,47,51,54],"ikhfa":[46,51],"idghaam_ghunnah":[37,42],"madd_2":[18,19],"madd_246":[90,91],"madd_munfasil":[28,31,64,66],"qalqalah":[91,92],"hamzat_wasl":[73,74,83,84]},
+"34": {"ghunnah":[12,15],"ikhfa":[16,20,30,33,144,148],"iqlab":[91,94],"idghaam_ghunnah":[136,140],"idghaam_no_ghunnah":[34,40],"idghaam_shafawi":[85,90],"madd_2":[112,113,122,123,134,135,140,141],"madd_246":[188,189],"madd_munfasil":[152,154],"silent":[49,51,164,166],"hamzat_wasl":[52,53,58,59,103,104,177,178]},
+"35": {"ghunnah":[122,125],"ikhfa":[143,146],"lam_shamsiyyah":[55,56,107,108],"madd_2":[59,60,114,115,135,136],"madd_246":[148,149],"madd_munfasil":[77,79],"qalqalah":[131,133],"silent":[113,114],"hamzat_wasl":[23,24,54,55,94,95,106,107]},
+"36": {"ikhfa":[34,38,74,78],"idghaam_shafawi":[29,34],"madd_2":[20,21,213,214,228,229],"madd_246":[260,261],"madd_muttasil":[40,42],"madd_6":[117,119],"qalqalah":[7,9,173,175],"silent":[86,88,158,160,180,182],"hamzat_wasl":[2,3,47,48,78,79,89,90,95,96,183,184,196,197]},
+"37": {"ikhfa":[82,85],"idghaam_ghunnah":[2,6,56,60],"lam_shamsiyyah":[69,70],"madd_2":[53,54,92,93,155,156],"madd_246":[182,183],"madd_muttasil":[41,43],"qalqalah":[73,75],"silent":[128,130],"hamzat_wasl":[12,13,68,69,131,132,171,172]},
+"38": {"ghunnah":[2,5,53,56],"ikhfa":[90,94],"madd_2":[18,19],"madd_246":[96,97],"madd_munfasil":[46,48],"silent":[48,50],"hamzat_wasl":[6,7,29,30,57,58]},
+"39": {"ghunnah":[35,38,57,60],"madd_2":[22,23],"madd_246":[93,94],"silent":[50,52],"hamzat_wasl":[61,62]},
+"40": {"ghunnah":[119,122,251,254,281,284],"ikhfa":[24,28,246,249,269,272],"ikhfa_shafawi":[35,39,134,138],"idghaam_ghunnah":[62,66,175,179,187,191,237,242,265,269],"idghaam_no_ghunnah":[143,148],"lam_shamsiyyah":[118,119],"madd_2":[30,31,162,163,185,186,195,196],"madd_246":[307,308],"madd_munfasil":[57,59,276,278],"silent":[19,21,72,74],"hamzat_wasl":[84,85,109,110,117,118,217,218,223,224,255,256,285,286]},
+"41": {"ghunnah":[20,23],"ikhfa":[138,141],"idghaam_ghunnah":[12,17],"lam_shamsiyyah":[55,56,79,80],"madd_2":[23,24,62,63,86,87,156,157],"madd_246":[171,172],"silent":[51,53,61,62,75,77,85,86,99,101,125,127],"hamzat_wasl":[33,34,54,55,78,79,104,105,133,134,164,165]},
+"42": {"idghaam_ghunnah":[4,8,58,62,66,70],"madd_246":[74,75],"qalqalah":[23,25,38,40,75,76]},
+"43": {"madd_2":[15,16],"madd_246":[33,34],"qalqalah":[11,13,34,35]},
+"44": {"ghunnah":[69,72],"madd_2":[8,9,58,59],"madd_246":[105,106],"qalqalah":[14,16]},
+"45": {"ikhfa":[14,18,55,59],"idghaam_ghunnah":[9,14,99,104,112,116,121,126],"madd_2":[35,36],"madd_246":[128,129],"qalqalah":[129,130]},
+"46": {"ghunnah":[114,117],"ikhfa":[153,157],"idghaam_ghunnah":[57,61,90,94],"lam_shamsiyyah":[187,188],"madd_2":[142,143,150,151],"madd_246":[193,194],"madd_munfasil":[75,77],"qalqalah":[138,140],"silent":[17,19],"hamzat_wasl":[24,25,133,134,163,164,174,175,186,187]},
+"47": {"ghunnah":[70,73,115,118],"ikhfa":[84,87],"idghaam_ghunnah":[37,41,110,115],"madd_2":[64,65],"madd_246":[127,128],"hamzat_wasl":[22,23,48,49]},
+"48": {"ghunnah":[61,64],"ikhfa":[14,18,57,61],"idghaam_ghunnah":[9,14],"madd_246":[94,95],"hamzat_wasl":[87,88]},
+"49": {"ghunnah":[20,23,29,32],"idghaam_ghunnah":[57,62],"lam_shamsiyyah":[19,20],"madd_246":[64,65],"madd_munfasil":[7,9,34,36],"hamzat_wasl":[18,19]},
+"50": {"ikhfa":[74,78],"idghaam_ghunnah":[65,69],"idghaam_shafawi":[53,58],"lam_shamsiyyah":[36,37],"madd_2":[40,41,45,46],"madd_246":[80,81],"silent":[20,22,32,34],"hamzat_wasl":[2,3,35,36]},
+"51": {"madd_2":[31,32,42,43,70,71],"madd_246":[81,82],"madd_munfasil":[23,25],"madd_muttasil":[57,59],"silent":[18,20,53,55],"hamzat_wasl":[2,3,74,75]},
+"52": {"ghunnah":[77,80,170,173],"ikhfa":[21,25,129,132],"idghaam_ghunnah":[43,47],"idghaam_no_ghunnah":[34,39],"lam_shamsiyyah":[93,94,156,157],"madd_2":[101,102,123,124,164,165,196,197,201,202],"madd_246":[225,226],"madd_munfasil":[4,6,64,66,80,83,107,109],"qalqalah":[25,27],"hamzat_wasl":[92,93,135,136,155,156,183,184,205,206]},
+"53": {"ghunnah":[112,115],"iqlab":[142,146],"idghaam_ghunnah":[79,83],"idghaam_no_ghunnah":[44,49],"idghaam_shafawi":[71,76],"lam_shamsiyyah":[25,26,117,118],"madd_2":[33,34,121,122],"madd_246":[149,150],"qalqalah":[5,7,150,151],"hamzat_wasl":[24,25,83,84,116,117]},
+"54": {"ghunnah":[44,47,125,128],"idghaam_ghunnah":[180,185],"idghaam_no_ghunnah":[61,66],"madd_2":[90,91,107,108,178,179],"madd_246":[191,192],"madd_munfasil":[162,164],"silent":[29,31,83,85,164,166],"hamzat_wasl":[13,14,32,33,50,51,129,130,145,146]},
+"55": {"idghaam_ghunnah":[45,50],"lam_shamsiyyah":[77,78],"madd_246":[133,134],"silent":[31,33],"hamzat_wasl":[14,15,76,77]},
+"56": {"ghunnah":[105,108,114,117],"idghaam_no_ghunnah":[19,24],"lam_shamsiyyah":[86,87,113,114],"madd_2":[90,91,95,96,108,109],"madd_246":[119,120],"silent":[70,72,82,84],"hamzat_wasl":[52,53,85,86,112,113]},
+"57": {"idghaam_ghunnah":[78,83],"madd_2":[43,44],"madd_246":[85,86],"madd_muttasil":[58,60],"silent":[19,21,32,34,54,56],"hamzat_wasl":[2,3]},
+"58": {"ghunnah":[45,48,84,87,120,123],"idghaam_ghunnah":[113,118],"lam_shamsiyyah":[147,148],"madd_2":[151,152],"madd_246":[156,157],"madd_munfasil":[55,57],"silent":[20,22,57,59,71,73],"hamzat_wasl":[2,3,35,36,92,93,124,125,146,147]},
+"59": {"ghunnah":[10,13,46,49],"idghaam_ghunnah":[25,30],"idghaam_shafawi":[15,20],"madd_2":[40,41],"madd_246":[72,73],"qalqalah":[4,6,20,22],"hamzat_wasl":[50,51]},
+"60": {"ghunnah":[52,55,81,84,97,100],"ikhfa":[76,79],"madd_2":[2,3,48,49],"madd_246":[123,124],"hamzat_wasl":[87,88,101,102]},
+"61": {"ghunnah":[12,15,47,50,68,71,94,97],"iqlab":[112,116],"lam_shamsiyyah":[46,47,67,68],"madd_2":[2,3],"madd_246":[119,120],"hamzat_wasl":[16,17,32,33,45,46,66,67,81,82,98,99]},
+"62": {"ghunnah":[12,15,42,45,93,96],"ikhfa":[62,66],"madd_2":[2,3,71,72,83,84],"madd_246":[128,129],"qalqalah":[52,54],"hamzat_wasl":[16,17,29,30,78,79,97,98,110,111,121,122]},
+"63": {"ghunnah":[14,17,93,96],"ikhfa":[28,31,56,60],"lam_shamsiyyah":[40,41],"madd_246":[117,118],"madd_muttasil":[46,48,53,55],"hamzat_wasl":[18,19,39,40,69,70,97,98]},
+"64": {"ghunnah":[53,56],"lam_shamsiyyah":[16,17],"madd_2":[5,6,22,23,25,26],"madd_246":[90,91],"qalqalah":[91,92],"hamzat_wasl":[15,16,39,40,57,58,72,73,83,84]},
+"65": {"ghunnah":[14,17,177,180,193,196],"ikhfa":[130,134],"idghaam_no_ghunnah":[208,213],"idghaam_shafawi":[38,43],"lam_shamsiyyah":[117,118,192,193],"madd_2":[103,104],"madd_246":[215,216],"madd_munfasil":[172,174],"madd_muttasil":[123,125],"qalqalah":[73,75],"hamzat_wasl":[18,19,49,50,61,62,83,84,116,117,145,146,181,182,191,192]},
+"66": {"ghunnah":[30,33,48,51,66,69],"ikhfa":[75,78],"madd_2":[78,79],"madd_246":[88,89],"madd_munfasil":[13,15],"hamzat_wasl":[7,8,70,71]},
+"67": {"ghunnah":[11,14,67,70,112,115],"ikhfa":[15,19,29,32],"idghaam_ghunnah":[130,136],"madd_2":[62,63],"madd_246":[142,143],"qalqalah":[90,92],"hamzat_wasl":[77,78,89,90]},
+"68": {"ikhfa":[4,8],"madd_2":[8,9],"madd_246":[55,56],"hamzat_wasl":[24,25]},
+"69": {"ikhfa":[57,60],"madd_2":[42,43],"madd_246":[79,80],"hamzat_wasl":[35,36]},
+"70": {"ghunnah":[18,21,73,76,99,102],"lam_shamsiyyah":[48,49],"madd_2":[79,80,93,94,105,106],"madd_246":[129,130],"madd_muttasil":[54,56],"hamzat_wasl":[22,23,47,48,61,62,117,118]},
+"71": {"ikhfa":[16,20],"ikhfa_shafawi":[85,89],"idghaam_ghunnah":[65,70,98,102,123,128],"lam_shamsiyyah":[108,109],"madd_2":[55,56,63,64,91,92,112,113],"madd_246":[130,131],"hamzat_wasl":[24,25]},
+"72": {"ghunnah":[216,219],"ikhfa":[49,53,97,100,202,206],"ikhfa_shafawi":[189,193],"idghaam_ghunnah":[197,202],"lam_shamsiyyah":[215,216],"madd_2":[33,34,47,48,162,163,206,207],"madd_246":[277,278],"silent":[89,91,258,260],"hamzat_wasl":[72,73,92,93,126,127,214,215,233,234,241,242,270,271]},
+"73": {"ghunnah":[15,18,60,63],"ikhfa":[34,38,86,90,203,206],"idghaam_ghunnah":[104,108,124,129,157,161],"idghaam_no_ghunnah":[189,195],"lam_shamsiyyah":[14,15,173,174,227,228],"madd_2":[151,152],"madd_246":[248,249],"madd_munfasil":[2,4,55,57],"qalqalah":[76,78,135,137,165,167,244,246,249,250],"silent":[48,50,115,117,144,146],"hamzat_wasl":[13,14,38,39,64,65,94,95,134,135,172,173,226,227,239,240]},
+"74": {"ghunnah":[41,44],"madd_246":[67,68],"madd_munfasil":[36,38],"qalqalah":[30,32],"silent":[11,13],"hamzat_wasl":[14,15,45,46]},
+"75": {"ghunnah":[56,59,65,68],"iqlab":[83,87],"idghaam_ghunnah":[44,49],"lam_shamsiyyah":[55,56],"madd_246":[90,91],"madd_muttasil":[30,32],"hamzat_wasl":[23,24,54,55,69,70]},
+"76": {"madd_246":[81,82],"hamzat_wasl":[57,58,74,75]},
+"77": {"madd_246":[124,125],"madd_munfasil":[2,4],"silent":[31,33,42,44,55,57,68,70,91,93],"hamzat_wasl":[13,14,34,35,47,48,60,61,83,84,94,95]},
+"78": {"ghunnah":[149,152,271,274,401,404],"ikhfa":[176,180],"idghaam_ghunnah":[108,113],"lam_shamsiyyah":[90,91,209,210,270,271,292,293,315,316,400,401],"madd_2":[4,5,40,41,55,56,135,136,153,154,193,194,299,300,322,323,363,364],"madd_246":[406,407],"madd_muttasil":[258,260],"qalqalah":[48,50,131,133,180,182],"silent":[10,12,249,251,288,290,298,299,311,313,321,322,338,340],"hamzat_wasl":[17,18,47,48,89,90,159,160,208,209,269,270,291,292,314,315,328,329,343,344,378,379,399,400]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/23.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/23.json
index a239d60..255698c 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/23.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/23.json
@@ -1,120 +1,120 @@
{
-"1": {"madd":[64,65],"qalqalah":[41,43],"wasl":[53,54]},
-"2": {"madd":[33,34,38,39]},
-"3": {"idgham":[23,24],"madd":[40,41],"wasl":[2,3,22,23]},
-"4": {"idgham":[19,20],"madd":[26,27,32,33,37,38],"silent":[25,26],"wasl":[2,3]},
-"5": {"madd":[33,34,38,39],"wasl":[2,3]},
-"6": {"ghunnah":[65,68],"madd":[11,14,21,22,53,54,87,88]},
-"7": {"madd":[21,23,28,29,42,44,62,63],"qalqalah":[8,10],"silent":[38,40],"wasl":[7,8,54,55]},
-"8": {"madd":[23,24,26,27,49,50,52,53],"wasl":[2,3]},
-"9": {"madd":[30,31,47,48],"wasl":[2,3]},
-"10": {"madd":[6,8,23,24,28,29],"silent":[2,4],"wasl":[18,19]},
-"11": {"madd":[48,49,53,54],"wasl":[20,21]},
-"12": {"ghunnah":[24,27,33,37,48,52],"idgham":[43,48],"madd":[27,28,39,40,52,53],"qalqalah":[6,8,13,15],"wasl":[19,20]},
-"13": {"ghunnah":[2,5,25,29],"idgham":[37,42],"madd":[14,15,44,45],"qalqalah":[20,22]},
-"14": {"ghunnah":[2,5,18,21,35,39,68,72,100,105,131,136,136,139,142,145],"idgham":[17,18],"madd":[98,99,122,123,149,150,203,204,208,209],"qalqalah":[10,12,21,23,43,45,76,78],"wasl":[16,17,49,50,82,83,115,116,181,182,198,199]},
-"15": {"ghunnah":[2,5,8,11,13,17],"madd":[24,25,39,40]},
-"16": {"ghunnah":[2,5,8,11],"madd":[30,31,44,45],"qalqalah":[38,40],"wasl":[23,24]},
-"17": {"ghunnah":[56,59],"madd":[41,43,78,79,83,84],"qalqalah":[6,8,13,15,32,34],"wasl":[66,67]},
-"18": {"ghunnah":[4,7,35,39,45,49,55,58,80,83,98,102],"idgham":[19,20],"madd":[25,27,32,34,58,59,105,106,111,112,116,117],"wasl":[18,19,66,67]},
-"19": {"ghunnah":[4,7,17,21,27,30],"idgham":[32,37,37,42,46,50,58,63,93,97],"madd":[23,24,30,31,56,57,79,80,113,114]},
-"20": {"ghunnah":[9,13,22,26,44,46],"idgham":[53,54,69,74],"madd":[36,38,83,84],"qalqalah":[66,68],"wasl":[52,53]},
-"21": {"ghunnah":[4,7,58,61],"idgham":[41,46,53,58,112,116],"madd":[28,29,98,99,132,133],"qalqalah":[36,38],"wasl":[19,20]},
-"22": {"madd":[38,39],"wasl":[20,21]},
-"23": {"idgham":[90,95],"madd":[43,44,55,56,102,103,114,116,132,133],"qalqalah":[6,8],"silent":[71,73],"wasl":[63,64,74,75]},
-"24": {"ghunnah":[42,46,153,156],"idgham":[78,83,102,106,170,175],"madd":[52,53,60,61,63,65,136,138,163,165,191,192,198,200,206,208,224,225],"silent":[17,19,37,39],"wasl":[8,9,20,21,141,142,214,215]},
-"25": {"ghunnah":[22,26,33,36,37,41],"madd":[29,30,58,59,70,71],"silent":[51,53]},
-"26": {"ghunnah":[13,16],"madd":[35,36],"wasl":[12,13]},
-"27": {"ghunnah":[111,114,137,141,143,147,186,190,269,272],"idgham":[107,108,274,279],"madd":[12,14,83,85,233,234,262,264,285,286],"qalqalah":[236,238],"silent":[264,266],"wasl":[29,30,37,38,106,107,120,121,156,157,204,205,246,247]},
-"28": {"ghunnah":[22,25],"idgham":[30,35,116,117],"madd":[95,96,120,121,125,126],"wasl":[8,9,46,47,63,64,81,82,105,106,115,116]},
-"29": {"ghunnah":[15,18,26,29,49,52,65,68],"idgham":[4,5,30,36,42,47],"madd":[70,71],"wasl":[60,61]},
-"30": {"ghunnah":[2,5,33,37,37,40],"idgham":[27,31],"madd":[12,13,25,26,52,53],"qalqalah":[46,48]},
-"31": {"ghunnah":[2,5,8,11,20,23],"madd":[48,49]},
-"32": {"idgham":[28,34,73,78],"madd":[85,86,97,99,115,116],"silent":[54,56],"wasl":[46,47,57,58]},
-"33": {"ghunnah":[20,24,182,185,219,222],"idgham":[123,124,157,162],"madd":[70,72,100,101,118,119,139,140,142,144,232,233],"silent":[48,50,61,63,117,118],"wasl":[8,9,31,32,75,76,110,111,122,123]},
-"34": {"ghunnah":[17,21,41,44],"idgham":[24,30,52,58],"madd":[60,61,65,66]},
-"35": {"ghunnah":[15,18,41,44,69,72],"idgham":[53,58,74,79],"madd":[62,63,85,86]},
-"36": {"madd":[33,34]},
-"37": {"idgham":[29,30],"madd":[81,82],"qalqalah":[74,76],"wasl":[28,29]},
-"38": {"idgham":[53,58],"madd":[73,74,85,86],"wasl":[24,25,40,41]},
-"39": {"ghunnah":[13,16],"madd":[35,36],"wasl":[12,13]},
-"40": {"ghunnah":[8,11,32,35],"idgham":[19,24],"madd":[38,39,43,44]},
-"41": {"ghunnah":[61,65],"idgham":[16,17,70,76,86,87],"madd":[48,49,58,60,90,91,95,96],"wasl":[15,16,29,30,85,86]},
-"42": {"ghunnah":[2,5,8,11,20,23],"madd":[49,50]},
-"43": {"ghunnah":[20,23],"madd":[55,56]},
-"44": {"ghunnah":[2,5,55,58,106,110],"idgham":[59,64,113,118,150,156,161,166],"madd":[48,50,126,127,176,177]},
-"45": {"ghunnah":[2,5],"idgham":[70,75],"madd":[38,39,53,54,68,69,77,78]},
-"46": {"madd":[30,31,73,74],"silent":[26,28,46,48,57,59],"wasl":[34,35]},
-"47": {"madd":[7,9,68,69,73,74],"silent":[9,11]},
-"48": {"madd":[43,44],"silent":[24,26],"wasl":[32,33]},
-"49": {"madd":[34,35,58,59],"qalqalah":[6,8],"wasl":[27,28]},
-"50": {"ghunnah":[31,34,80,84],"idgham":[45,49,94,98],"madd":[36,38,58,59,63,65,102,103],"qalqalah":[13,15,75,77],"wasl":[12,13]},
-"51": {"ghunnah":[74,77],"idgham":[14,15,37,38],"madd":[2,4,46,47,65,66,101,102],"silent":[28,30,60,62],"wasl":[13,14,36,37,52,53]},
-"52": {"ghunnah":[4,7,20,23,32,35],"idgham":[36,40,46,50],"madd":[10,11,15,17,40,41,75,76],"wasl":[69,70]},
-"53": {"ghunnah":[24,28,42,47,56,60],"madd":[11,13,82,83],"silent":[13,15]},
-"54": {"madd":[38,39]},
-"55": {"ghunnah":[16,19,32,36],"idgham":[42,47,49,53],"madd":[38,39,57,58]},
-"56": {"madd":[30,31,51,52],"wasl":[21,22]},
-"57": {"ghunnah":[2,5],"idgham":[18,23,42,47],"madd":[53,54],"wasl":[6,7]},
-"58": {"ghunnah":[14,18],"madd":[24,25,46,47],"wasl":[2,3]},
-"59": {"ghunnah":[14,18],"madd":[40,41],"wasl":[2,3]},
-"60": {"ghunnah":[62,65],"madd":[24,26,89,90,94,95],"silent":[33,35],"wasl":[2,3]},
-"61": {"madd":[6,8,17,18,39,40,58,59,63,64],"silent":[2,4],"wasl":[30,31]},
-"62": {"ghunnah":[63,66],"idgham":[59,63],"madd":[57,58,99,100],"wasl":[71,72]},
-"63": {"ghunnah":[65,69],"idgham":[28,33,60,65],"madd":[38,39,58,59,75,76,94,95,99,100]},
-"64": {"ghunnah":[37,41],"madd":[5,8,13,15,72,73],"qalqalah":[65,67],"wasl":[41,42]},
-"65": {"ghunnah":[29,32,39,42,50,53],"idgham":[34,39],"madd":[55,56],"qalqalah":[6,8],"silent":[14,16],"wasl":[17,18]},
-"66": {"ghunnah":[47,50,77,80],"madd":[18,19,57,60,67,68,82,83],"qalqalah":[2,4]},
-"67": {"ghunnah":[28,33],"madd":[20,21,24,25,39,40]},
-"68": {"idgham":[46,51],"madd":[40,42,70,72,89,90],"silent":[20,22],"wasl":[23,24,79,80]},
-"69": {"ghunnah":[49,52],"madd":[45,46,54,55],"silent":[19,21]},
-"70": {"ghunnah":[24,27,28,32,44,48],"madd":[20,21,38,40,84,85,89,90],"wasl":[48,49]},
-"71": {"ghunnah":[81,85,88,91,108,112,132,136],"idgham":[52,53,142,147],"madd":[31,33,58,59,61,62,105,106,153,154],"wasl":[7,8,16,17,51,52,67,68]},
-"72": {"ghunnah":[24,29],"idgham":[50,54,67,68],"madd":[71,72,76,77],"wasl":[66,67]},
-"73": {"ghunnah":[4,7],"idgham":[37,42],"madd":[35,36,48,49],"qalqalah":[14,16]},
-"74": {"ghunnah":[4,7],"idgham":[55,56],"madd":[61,62,69,70,74,75],"wasl":[8,9,36,37,54,55]},
-"75": {"ghunnah":[46,50],"idgham":[41,46,52,57],"madd":[15,16,76,77,92,93],"silent":[63,65]},
-"76": {"ghunnah":[20,24],"madd":[17,18,84,85],"qalqalah":[6,8],"silent":[52,54],"wasl":[24,25,41,42]},
-"77": {"ghunnah":[33,37,39,44,52,56],"madd":[5,8,87,88],"qalqalah":[81,83]},
-"78": {"ghunnah":[18,21],"idgham":[32,33,79,85],"madd":[13,15,52,53,95,96],"qalqalah":[48,50],"wasl":[7,8,31,32,43,44,58,59]},
-"79": {"madd":[59,60],"wasl":[7,8,30,31]},
-"80": {"ghunnah":[64,67],"idgham":[63,64],"madd":[21,22,47,48,89,90],"wasl":[7,8,40,41,51,52,62,63]},
-"81": {"madd":[41,42],"silent":[11,13],"wasl":[31,32]},
-"82": {"ghunnah":[30,33,59,62],"idgham":[41,46],"madd":[5,7,50,51,75,76],"qalqalah":[68,70],"silent":[7,9]},
-"83": {"ghunnah":[48,52],"madd":[31,33,41,42,64,65,67,69,75,77,82,83,99,100],"qalqalah":[4,6,11,13,52,54],"wasl":[89,90]},
-"84": {"ghunnah":[26,30,38,42,42,45],"madd":[33,35,56,57],"wasl":[12,13]},
-"85": {"madd":[43,44]},
-"86": {"idgham":[7,12,17,18,31,32],"madd":[23,24,26,27,65,66],"qalqalah":[35,37],"wasl":[16,17,30,31,48,49,58,59]},
-"87": {"madd":[41,42]},
-"88": {"ghunnah":[8,11,83,87,87,90],"idgham":[41,45],"madd":[18,19,101,102]},
-"89": {"ghunnah":[30,33],"madd":[44,45]},
-"90": {"ghunnah":[16,20,33,36],"madd":[13,14,45,46,50,51],"wasl":[20,21]},
-"91": {"ghunnah":[93,97,142,146,164,167],"idgham":[23,27,30,34,68,74],"madd":[50,51,61,62,91,92,150,151,175,176],"qalqalah":[146,148],"wasl":[4,5,13,14,154,155]},
-"92": {"ghunnah":[47,50],"idgham":[21,22],"madd":[2,3,27,28,39,40,60,61],"wasl":[8,9,20,21]},
-"93": {"ghunnah":[13,16,24,27],"idgham":[2,3],"madd":[40,41]},
-"94": {"idgham":[39,40],"madd":[43,44,48,49],"qalqalah":[14,16],"wasl":[28,29,38,39]},
-"95": {"ghunnah":[4,7],"idgham":[19,24],"madd":[13,16,50,51,55,56]},
-"96": {"idgham":[33,34],"madd":[73,74],"qalqalah":[1,3],"wasl":[10,11,32,33]},
-"97": {"idgham":[4,5,42,43],"madd":[37,38,48,49,51,52],"wasl":[41,42]},
-"98": {"idgham":[23,27],"madd":[33,34]},
-"99": {"madd":[5,8,17,19,62,63],"wasl":[33,34,55,56]},
-"100": {"ghunnah":[25,30,54,57,103,107],"idgham":[91,95],"madd":[7,9,21,22,49,51,77,79,97,99,136,137],"qalqalah":[130,132]},
-"101": {"ghunnah":[37,40],"idgham":[20,21,64,68],"madd":[32,34,78,80,84,85],"wasl":[19,20]},
-"102": {"ghunnah":[4,8],"madd":[19,20,27,28,37,39,60,61],"silent":[33,35],"wasl":[49,50]},
-"103": {"ghunnah":[67,70,85,88],"madd":[19,20,27,28,37,39,60,62,93,94,98,99],"silent":[33,35,62,64],"wasl":[44,45]},
-"104": {"ghunnah":[23,26],"idgham":[22,23],"madd":[46,47,51,52],"wasl":[21,22]},
-"105": {"ghunnah":[48,51,51,55],"madd":[19,20,68,69]},
-"106": {"ghunnah":[53,56,63,68],"madd":[73,74],"madd-lazim":[68,70],"qalqalah":[39,41],"silent":[6,8]},
-"107": {"ghunnah":[49,52],"madd":[7,9,56,57,61,62],"qalqalah":[16,18,39,41]},
-"108": {"madd":[40,41],"silent":[15,17],"wasl":[6,7]},
-"109": {"ghunnah":[2,5,64,67,102,105],"idgham":[21,26,114,115],"madd":[7,8,56,58,118,119,123,124],"wasl":[71,72,87,88,113,114]},
-"110": {"ghunnah":[42,45,64,67],"idgham":[67,72],"madd":[36,39,87,88],"wasl":[2,3]},
-"111": {"ghunnah":[2,5,49,52],"madd":[42,44,67,69,73,74],"silent":[44,46],"wasl":[20,21,62,63]},
-"112": {"madd":[2,3,47,48],"wasl":[26,27]},
-"113": {"ghunnah":[44,48],"madd":[66,67],"madd-lazim":[61,63],"silent":[6,8],"wasl":[56,57]},
-"114": {"ghunnah":[46,49,56,59],"idgham":[8,13,35,41],"madd":[2,3,70,71]},
-"115": {"ghunnah":[17,20,50,53],"idgham":[43,48],"madd":[32,33,80,81],"qalqalah":[8,10,28,30]},
-"116": {"madd":[6,7,40,42,47,48,86,87],"wasl":[11,12,19,20,29,30,69,70,79,80]},
-"117": {"ghunnah":[73,76,93,96,109,112],"idgham":[4,8],"madd":[30,31,53,54,61,62,67,68,89,90,104,106,114,115,134,135,139,140],"qalqalah":[8,10],"wasl":[18,19,129,130]},
-"118": {"ghunnah":[35,38],"idgham":[4,5,47,48],"madd":[51,52,56,57],"wasl":[13,14,23,24,46,47]}
+"1": {"madd_246":[64,65],"qalqalah":[41,43],"hamzat_wasl":[53,54]},
+"2": {"madd_2":[33,34],"madd_246":[38,39]},
+"3": {"lam_shamsiyyah":[23,24],"madd_246":[40,41],"hamzat_wasl":[2,3,22,23]},
+"4": {"lam_shamsiyyah":[19,20],"madd_2":[26,27,32,33],"madd_246":[37,38],"silent":[25,26],"hamzat_wasl":[2,3]},
+"5": {"madd_2":[33,34],"madd_246":[38,39],"hamzat_wasl":[2,3]},
+"6": {"ghunnah":[65,68],"madd_2":[21,22,53,54],"madd_246":[87,88],"madd_munfasil":[11,14]},
+"7": {"madd_2":[28,29],"madd_246":[62,63],"madd_muttasil":[21,23,42,44],"qalqalah":[8,10],"silent":[38,40],"hamzat_wasl":[7,8,54,55]},
+"8": {"madd_2":[23,24,26,27,49,50],"madd_246":[52,53],"hamzat_wasl":[2,3]},
+"9": {"madd_2":[30,31],"madd_246":[47,48],"hamzat_wasl":[2,3]},
+"10": {"madd_2":[23,24],"madd_246":[28,29],"madd_muttasil":[6,8],"silent":[2,4],"hamzat_wasl":[18,19]},
+"11": {"madd_2":[48,49],"madd_246":[53,54],"hamzat_wasl":[20,21]},
+"12": {"ikhfa":[24,27,33,37,48,52],"idghaam_ghunnah":[43,48],"madd_2":[27,28,39,40],"madd_246":[52,53],"qalqalah":[6,8,13,15],"hamzat_wasl":[19,20]},
+"13": {"ghunnah":[2,5],"ikhfa":[25,29],"idghaam_ghunnah":[37,42],"madd_2":[14,15],"madd_246":[44,45],"qalqalah":[20,22]},
+"14": {"ghunnah":[2,5,18,21,136,139],"ikhfa":[35,39,68,72,100,105,131,136,142,145],"lam_shamsiyyah":[17,18],"madd_2":[98,99,122,123,149,150,203,204],"madd_246":[208,209],"qalqalah":[10,12,21,23,43,45,76,78],"hamzat_wasl":[16,17,49,50,82,83,115,116,181,182,198,199]},
+"15": {"ghunnah":[2,5,8,11],"ikhfa_shafawi":[13,17],"madd_2":[24,25],"madd_246":[39,40]},
+"16": {"ghunnah":[2,5,8,11],"madd_2":[30,31],"madd_246":[44,45],"qalqalah":[38,40],"hamzat_wasl":[23,24]},
+"17": {"ghunnah":[56,59],"madd_2":[78,79],"madd_246":[83,84],"madd_muttasil":[41,43],"qalqalah":[6,8,13,15,32,34],"hamzat_wasl":[66,67]},
+"18": {"ghunnah":[55,58,80,83],"ikhfa":[4,7,45,49],"iqlab":[35,39,98,102],"lam_shamsiyyah":[19,20],"madd_2":[58,59,105,106,111,112],"madd_246":[116,117],"madd_muttasil":[25,27,32,34],"hamzat_wasl":[18,19,66,67]},
+"19": {"ghunnah":[27,30],"ikhfa":[4,7],"ikhfa_shafawi":[17,21],"idghaam_ghunnah":[32,37,37,42,46,50,93,97],"idghaam_no_ghunnah":[58,63],"madd_2":[23,24,30,31,56,57,79,80],"madd_246":[113,114]},
+"20": {"ikhfa":[9,13,22,26],"iqlab":[44,46],"idghaam_no_ghunnah":[69,74],"lam_shamsiyyah":[53,54],"madd_246":[83,84],"madd_muttasil":[36,38],"qalqalah":[66,68],"hamzat_wasl":[52,53]},
+"21": {"ghunnah":[4,7,58,61],"idghaam_ghunnah":[41,46,112,116],"idghaam_shafawi":[53,58],"madd_2":[28,29,98,99],"madd_246":[132,133],"qalqalah":[36,38],"hamzat_wasl":[19,20]},
+"22": {"madd_246":[38,39],"hamzat_wasl":[20,21]},
+"23": {"idghaam_shafawi":[90,95],"madd_2":[43,44,55,56,102,103],"madd_246":[132,133],"madd_munfasil":[114,116],"qalqalah":[6,8],"silent":[71,73],"hamzat_wasl":[63,64,74,75]},
+"24": {"ikhfa":[42,46,153,156],"idghaam_ghunnah":[78,83,102,106,170,175],"madd_2":[52,53,60,61,191,192],"madd_246":[224,225],"madd_munfasil":[63,65,198,200],"madd_muttasil":[136,138,163,165,206,208],"silent":[17,19,37,39],"hamzat_wasl":[8,9,20,21,141,142,214,215]},
+"25": {"ghunnah":[33,36],"ikhfa":[37,41],"iqlab":[22,26],"madd_2":[29,30,58,59],"madd_246":[70,71],"silent":[51,53]},
+"26": {"ikhfa":[13,16],"madd_246":[35,36],"hamzat_wasl":[12,13]},
+"27": {"ghunnah":[111,114,269,272],"ikhfa":[137,141,143,147,186,190],"idghaam_shafawi":[274,279],"lam_shamsiyyah":[107,108],"madd_2":[233,234],"madd_246":[285,286],"madd_munfasil":[12,14,262,264],"madd_muttasil":[83,85],"qalqalah":[236,238],"silent":[264,266],"hamzat_wasl":[29,30,37,38,106,107,120,121,156,157,204,205,246,247]},
+"28": {"ikhfa":[22,25],"idghaam_ghunnah":[30,35],"lam_shamsiyyah":[116,117],"madd_2":[95,96,120,121],"madd_246":[125,126],"hamzat_wasl":[8,9,46,47,63,64,81,82,105,106,115,116]},
+"29": {"ikhfa":[15,18,26,29,49,52,65,68],"idghaam_ghunnah":[30,36,42,47],"idghaam_mutaqaribayn":[4,5],"madd_246":[70,71],"hamzat_wasl":[60,61]},
+"30": {"ghunnah":[2,5,37,40],"ikhfa":[33,37],"idghaam_ghunnah":[27,31],"madd_2":[12,13,25,26],"madd_246":[52,53],"qalqalah":[46,48]},
+"31": {"ghunnah":[2,5],"ikhfa":[8,11],"iqlab":[20,23],"madd_246":[48,49]},
+"32": {"idghaam_ghunnah":[28,34],"idghaam_shafawi":[73,78],"madd_2":[85,86],"madd_246":[115,116],"madd_munfasil":[97,99],"silent":[54,56],"hamzat_wasl":[46,47,57,58]},
+"33": {"ghunnah":[182,185,219,222],"ikhfa":[20,24],"idghaam_ghunnah":[157,162],"lam_shamsiyyah":[123,124],"madd_2":[100,101,118,119,139,140],"madd_246":[232,233],"madd_munfasil":[142,144],"madd_muttasil":[70,72],"silent":[48,50,61,63,117,118],"hamzat_wasl":[8,9,31,32,75,76,110,111,122,123]},
+"34": {"ghunnah":[41,44],"ikhfa_shafawi":[17,21],"idghaam_ghunnah":[24,30],"idghaam_no_ghunnah":[52,58],"madd_2":[60,61],"madd_246":[65,66]},
+"35": {"ghunnah":[15,18,69,72],"ikhfa":[41,44],"idghaam_ghunnah":[53,58],"idghaam_shafawi":[74,79],"madd_2":[62,63],"madd_246":[85,86]},
+"36": {"madd_246":[33,34]},
+"37": {"lam_shamsiyyah":[29,30],"madd_246":[81,82],"qalqalah":[74,76],"hamzat_wasl":[28,29]},
+"38": {"idghaam_ghunnah":[53,58],"madd_2":[73,74],"madd_246":[85,86],"hamzat_wasl":[24,25,40,41]},
+"39": {"ikhfa":[13,16],"madd_246":[35,36],"hamzat_wasl":[12,13]},
+"40": {"ghunnah":[8,11,32,35],"idghaam_no_ghunnah":[19,24],"madd_2":[38,39],"madd_246":[43,44]},
+"41": {"ikhfa":[61,65],"idghaam_no_ghunnah":[70,76],"lam_shamsiyyah":[16,17,86,87],"madd_2":[48,49,90,91],"madd_246":[95,96],"madd_muttasil":[58,60],"hamzat_wasl":[15,16,29,30,85,86]},
+"42": {"ghunnah":[2,5],"ikhfa":[8,11],"iqlab":[20,23],"madd_246":[49,50]},
+"43": {"ghunnah":[20,23],"madd_246":[55,56]},
+"44": {"ghunnah":[2,5,55,58],"ikhfa_shafawi":[106,110],"idghaam_ghunnah":[113,118],"idghaam_no_ghunnah":[59,64,150,156,161,166],"madd_2":[126,127],"madd_246":[176,177],"madd_muttasil":[48,50]},
+"45": {"ghunnah":[2,5],"idghaam_ghunnah":[70,75],"madd_2":[38,39,53,54,68,69],"madd_246":[77,78]},
+"46": {"madd_2":[30,31],"madd_246":[73,74],"silent":[26,28,46,48,57,59],"hamzat_wasl":[34,35]},
+"47": {"madd_2":[68,69],"madd_246":[73,74],"madd_munfasil":[7,9],"silent":[9,11]},
+"48": {"madd_246":[43,44],"silent":[24,26],"hamzat_wasl":[32,33]},
+"49": {"madd_2":[34,35],"madd_246":[58,59],"qalqalah":[6,8],"hamzat_wasl":[27,28]},
+"50": {"ghunnah":[31,34],"ikhfa":[80,84],"idghaam_ghunnah":[45,49,94,98],"madd_2":[58,59],"madd_246":[102,103],"madd_munfasil":[36,38,63,65],"qalqalah":[13,15,75,77],"hamzat_wasl":[12,13]},
+"51": {"ghunnah":[74,77],"lam_shamsiyyah":[14,15,37,38],"madd_2":[46,47,65,66],"madd_246":[101,102],"madd_munfasil":[2,4],"silent":[28,30,60,62],"hamzat_wasl":[13,14,36,37,52,53]},
+"52": {"ghunnah":[4,7,20,23,32,35],"idghaam_ghunnah":[36,40,46,50],"madd_2":[10,11,40,41],"madd_246":[75,76],"madd_munfasil":[15,17],"hamzat_wasl":[69,70]},
+"53": {"ikhfa":[42,47],"ikhfa_shafawi":[24,28],"iqlab":[56,60],"madd_246":[82,83],"madd_munfasil":[11,13],"silent":[13,15]},
+"54": {"madd_246":[38,39]},
+"55": {"ghunnah":[16,19],"ikhfa_shafawi":[32,36],"idghaam_ghunnah":[42,47,49,53],"madd_2":[38,39],"madd_246":[57,58]},
+"56": {"madd_2":[30,31],"madd_246":[51,52],"hamzat_wasl":[21,22]},
+"57": {"ghunnah":[2,5],"idghaam_shafawi":[18,23,42,47],"madd_246":[53,54],"hamzat_wasl":[6,7]},
+"58": {"ikhfa_shafawi":[14,18],"madd_2":[24,25],"madd_246":[46,47],"hamzat_wasl":[2,3]},
+"59": {"ikhfa_shafawi":[14,18],"madd_246":[40,41],"hamzat_wasl":[2,3]},
+"60": {"ghunnah":[62,65],"madd_2":[89,90],"madd_246":[94,95],"madd_munfasil":[24,26],"silent":[33,35],"hamzat_wasl":[2,3]},
+"61": {"madd_2":[17,18,39,40,58,59],"madd_246":[63,64],"madd_muttasil":[6,8],"silent":[2,4],"hamzat_wasl":[30,31]},
+"62": {"ikhfa":[63,66],"idghaam_ghunnah":[59,63],"madd_2":[57,58],"madd_246":[99,100],"hamzat_wasl":[71,72]},
+"63": {"ikhfa":[65,69],"idghaam_ghunnah":[28,33,60,65],"madd_2":[38,39,58,59,75,76,94,95],"madd_246":[99,100]},
+"64": {"ikhfa_shafawi":[37,41],"madd_246":[72,73],"madd_munfasil":[5,8,13,15],"qalqalah":[65,67],"hamzat_wasl":[41,42]},
+"65": {"ghunnah":[29,32,39,42],"ikhfa":[50,53],"idghaam_shafawi":[34,39],"madd_246":[55,56],"qalqalah":[6,8],"silent":[14,16],"hamzat_wasl":[17,18]},
+"66": {"ikhfa":[47,50,77,80],"madd_2":[18,19,67,68],"madd_246":[82,83],"madd_munfasil":[57,60],"qalqalah":[2,4]},
+"67": {"ikhfa":[28,33],"madd_2":[20,21,24,25],"madd_246":[39,40]},
+"68": {"idghaam_shafawi":[46,51],"madd_246":[89,90],"madd_muttasil":[40,42,70,72],"silent":[20,22],"hamzat_wasl":[23,24,79,80]},
+"69": {"ikhfa":[49,52],"madd_2":[45,46],"madd_246":[54,55],"silent":[19,21]},
+"70": {"ghunnah":[24,27],"ikhfa_shafawi":[44,48],"iqlab":[28,32],"madd_2":[20,21,84,85],"madd_246":[89,90],"madd_muttasil":[38,40],"hamzat_wasl":[48,49]},
+"71": {"ghunnah":[88,91],"ikhfa":[81,85,132,136],"ikhfa_shafawi":[108,112],"idghaam_shafawi":[142,147],"lam_shamsiyyah":[52,53],"madd_2":[58,59,61,62,105,106],"madd_246":[153,154],"madd_muttasil":[31,33],"hamzat_wasl":[7,8,16,17,51,52,67,68]},
+"72": {"ikhfa":[24,29],"idghaam_ghunnah":[50,54],"lam_shamsiyyah":[67,68],"madd_2":[71,72],"madd_246":[76,77],"hamzat_wasl":[66,67]},
+"73": {"ghunnah":[4,7],"idghaam_ghunnah":[37,42],"madd_2":[35,36],"madd_246":[48,49],"qalqalah":[14,16]},
+"74": {"ghunnah":[4,7],"lam_shamsiyyah":[55,56],"madd_2":[61,62,69,70],"madd_246":[74,75],"hamzat_wasl":[8,9,36,37,54,55]},
+"75": {"ikhfa":[46,50],"idghaam_no_ghunnah":[52,57],"idghaam_shafawi":[41,46],"madd_2":[15,16,76,77],"madd_246":[92,93],"silent":[63,65]},
+"76": {"ikhfa_shafawi":[20,24],"madd_2":[17,18],"madd_246":[84,85],"qalqalah":[6,8],"silent":[52,54],"hamzat_wasl":[24,25,41,42]},
+"77": {"ikhfa":[39,44,52,56],"ikhfa_shafawi":[33,37],"madd_246":[87,88],"madd_munfasil":[5,8],"qalqalah":[81,83]},
+"78": {"ikhfa":[18,21],"idghaam_ghunnah":[79,85],"lam_shamsiyyah":[32,33],"madd_2":[52,53],"madd_246":[95,96],"madd_munfasil":[13,15],"qalqalah":[48,50],"hamzat_wasl":[7,8,31,32,43,44,58,59]},
+"79": {"madd_246":[59,60],"hamzat_wasl":[7,8,30,31]},
+"80": {"ghunnah":[64,67],"lam_shamsiyyah":[63,64],"madd_2":[21,22,47,48],"madd_246":[89,90],"hamzat_wasl":[7,8,40,41,51,52,62,63]},
+"81": {"madd_246":[41,42],"silent":[11,13],"hamzat_wasl":[31,32]},
+"82": {"ghunnah":[30,33,59,62],"idghaam_ghunnah":[41,46],"madd_2":[50,51],"madd_246":[75,76],"madd_munfasil":[5,7],"qalqalah":[68,70],"silent":[7,9]},
+"83": {"ikhfa":[48,52],"madd_2":[41,42,64,65,82,83],"madd_246":[99,100],"madd_munfasil":[67,69,75,77],"madd_muttasil":[31,33],"qalqalah":[4,6,11,13,52,54],"hamzat_wasl":[89,90]},
+"84": {"ikhfa":[26,30,38,42,42,45],"madd_246":[56,57],"madd_munfasil":[33,35],"hamzat_wasl":[12,13]},
+"85": {"madd_246":[43,44]},
+"86": {"idghaam_no_ghunnah":[7,12],"lam_shamsiyyah":[17,18,31,32],"madd_2":[23,24,26,27],"madd_246":[65,66],"qalqalah":[35,37],"hamzat_wasl":[16,17,30,31,48,49,58,59]},
+"87": {"madd_246":[41,42]},
+"88": {"ikhfa":[83,87,87,90],"iqlab":[8,11],"idghaam_ghunnah":[41,45],"madd_2":[18,19],"madd_246":[101,102]},
+"89": {"ghunnah":[30,33],"madd_246":[44,45]},
+"90": {"ghunnah":[33,36],"ikhfa_shafawi":[16,20],"madd_2":[13,14,45,46],"madd_246":[50,51],"hamzat_wasl":[20,21]},
+"91": {"ghunnah":[164,167],"ikhfa":[142,146],"iqlab":[93,97],"idghaam_ghunnah":[23,27,30,34],"idghaam_no_ghunnah":[68,74],"madd_2":[50,51,61,62,91,92,150,151],"madd_246":[175,176],"qalqalah":[146,148],"hamzat_wasl":[4,5,13,14,154,155]},
+"92": {"ghunnah":[47,50],"lam_shamsiyyah":[21,22],"madd_2":[2,3,27,28,39,40],"madd_246":[60,61],"hamzat_wasl":[8,9,20,21]},
+"93": {"ghunnah":[13,16,24,27],"idghaam_mutaqaribayn":[2,3],"madd_246":[40,41]},
+"94": {"lam_shamsiyyah":[39,40],"madd_2":[43,44],"madd_246":[48,49],"qalqalah":[14,16],"hamzat_wasl":[28,29,38,39]},
+"95": {"ghunnah":[4,7],"idghaam_ghunnah":[19,24],"madd_2":[50,51],"madd_246":[55,56],"madd_munfasil":[13,16]},
+"96": {"lam_shamsiyyah":[33,34],"madd_246":[73,74],"qalqalah":[1,3],"hamzat_wasl":[10,11,32,33]},
+"97": {"idghaam_mutaqaribayn":[4,5],"lam_shamsiyyah":[42,43],"madd_2":[37,38,48,49],"madd_246":[51,52],"hamzat_wasl":[41,42]},
+"98": {"idghaam_ghunnah":[23,27],"madd_246":[33,34]},
+"99": {"madd_246":[62,63],"madd_munfasil":[5,8],"madd_muttasil":[17,19],"hamzat_wasl":[33,34,55,56]},
+"100": {"ghunnah":[54,57],"ikhfa":[25,30],"ikhfa_shafawi":[103,107],"idghaam_ghunnah":[91,95],"madd_2":[21,22],"madd_246":[136,137],"madd_munfasil":[7,9,49,51],"madd_muttasil":[77,79,97,99],"qalqalah":[130,132]},
+"101": {"ikhfa":[37,40],"idghaam_ghunnah":[64,68],"lam_shamsiyyah":[20,21],"madd_246":[84,85],"madd_munfasil":[32,34],"madd_muttasil":[78,80],"hamzat_wasl":[19,20]},
+"102": {"ikhfa":[4,8],"madd_2":[19,20,27,28],"madd_246":[60,61],"madd_muttasil":[37,39],"silent":[33,35],"hamzat_wasl":[49,50]},
+"103": {"ghunnah":[85,88],"ikhfa":[67,70],"madd_2":[19,20,27,28,93,94],"madd_246":[98,99],"madd_munfasil":[60,62],"madd_muttasil":[37,39],"silent":[33,35,62,64],"hamzat_wasl":[44,45]},
+"104": {"ghunnah":[23,26],"lam_shamsiyyah":[22,23],"madd_2":[46,47],"madd_246":[51,52],"hamzat_wasl":[21,22]},
+"105": {"ikhfa":[48,51],"ikhfa_shafawi":[51,55],"madd_2":[19,20],"madd_246":[68,69]},
+"106": {"ghunnah":[53,56],"ikhfa":[63,68],"madd_246":[73,74],"madd_6":[68,70],"qalqalah":[39,41],"silent":[6,8]},
+"107": {"ghunnah":[49,52],"madd_2":[56,57],"madd_246":[61,62],"madd_munfasil":[7,9],"qalqalah":[16,18,39,41]},
+"108": {"madd_246":[40,41],"silent":[15,17],"hamzat_wasl":[6,7]},
+"109": {"ghunnah":[2,5,64,67],"ikhfa":[102,105],"idghaam_ghunnah":[21,26],"lam_shamsiyyah":[114,115],"madd_2":[7,8,118,119],"madd_246":[123,124],"madd_munfasil":[56,58],"hamzat_wasl":[71,72,87,88,113,114]},
+"110": {"ikhfa":[42,45,64,67],"idghaam_shafawi":[67,72],"madd_246":[87,88],"madd_munfasil":[36,39],"hamzat_wasl":[2,3]},
+"111": {"ghunnah":[2,5,49,52],"madd_246":[73,74],"madd_munfasil":[42,44],"madd_muttasil":[67,69],"silent":[44,46],"hamzat_wasl":[20,21,62,63]},
+"112": {"madd_2":[2,3],"madd_246":[47,48],"hamzat_wasl":[26,27]},
+"113": {"ikhfa":[44,48],"madd_246":[66,67],"madd_6":[61,63],"silent":[6,8],"hamzat_wasl":[56,57]},
+"114": {"ghunnah":[46,49],"ikhfa":[56,59],"idghaam_no_ghunnah":[8,13,35,41],"madd_2":[2,3],"madd_246":[70,71]},
+"115": {"ghunnah":[17,20,50,53],"idghaam_ghunnah":[43,48],"madd_2":[32,33],"madd_246":[80,81],"qalqalah":[8,10,28,30]},
+"116": {"madd_2":[6,7,47,48],"madd_246":[86,87],"madd_munfasil":[40,42],"hamzat_wasl":[11,12,19,20,29,30,69,70,79,80]},
+"117": {"ghunnah":[73,76,109,112],"ikhfa":[93,96],"idghaam_ghunnah":[4,8],"madd_2":[30,31,53,54,61,62,67,68,89,90,114,115,134,135],"madd_246":[139,140],"madd_munfasil":[104,106],"qalqalah":[8,10],"hamzat_wasl":[18,19,129,130]},
+"118": {"ikhfa":[35,38],"idghaam_mutaqaribayn":[4,5],"lam_shamsiyyah":[47,48],"madd_2":[51,52],"madd_246":[56,57],"hamzat_wasl":[13,14,23,24,46,47]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/24.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/24.json
index 16fab3a..fe6d80c 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/24.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/24.json
@@ -1,66 +1,66 @@
{
-"1": {"ghunnah":[49,52,80,83,104,108],"idgham":[116,121],"madd":[56,57,71,72,94,96,102,103,114,115,140,141]},
-"2": {"ghunnah":[97,101,114,118,136,140,140,143],"idgham":[1,2,16,17,50,55,79,83,226,231],"madd":[46,47,219,221,245,246],"qalqalah":[28,30,201,203],"silent":[35,37,65,67],"wasl":[15,16,27,28,126,127,160,161,170,171,180,181,234,235]},
-"3": {"ghunnah":[16,19,76,79],"idgham":[1,2,53,57,58,59,111,115],"madd":[83,85,125,126,148,149],"wasl":[57,58,137,138]},
-"4": {"ghunnah":[39,42],"idgham":[115,119,157,162],"madd":[33,34,77,79,101,102,146,147,168,170,185,186,190,191],"qalqalah":[85,87,125,127],"silent":[55,57,132,134,164,166],"wasl":[2,3,22,23,84,85,180,181]},
-"5": {"ghunnah":[29,32,64,67],"idgham":[82,87],"madd":[40,41,89,90],"silent":[23,25,57,59],"wasl":[7,8,68,69]},
-"6": {"ghunnah":[78,81,129,133,144,147],"idgham":[47,52,159,160],"madd":[28,29,63,65,73,75,94,95,124,125,127,128,149,150,163,164,168,169],"wasl":[2,3,134,135,158,159]},
-"7": {"ghunnah":[17,20,49,53],"madd":[7,8,67,68,72,73],"wasl":[2,3,30,31,62,63]},
-"8": {"ghunnah":[34,38,63,67,78,81],"madd":[58,59,61,62,83,84,97,98,102,103],"qalqalah":[4,6],"silent":[10,12],"wasl":[21,22,68,69,92,93]},
-"9": {"ghunnah":[17,20,49,53],"idgham":[63,64],"madd":[7,8,44,46,67,68,72,73],"wasl":[2,3,28,29,62,63]},
-"10": {"ghunnah":[54,57],"madd":[48,49,79,80],"wasl":[17,18,58,59]},
-"11": {"ghunnah":[2,5,48,51,82,86],"idgham":[43,48,74,80,99,104,123,128,132,137],"madd":[18,20,192,193,207,208,221,222],"qalqalah":[186,188],"wasl":[6,7,26,27,117,118,139,140,154,155,166,167]},
-"12": {"ghunnah":[31,34,71,74],"idgham":[86,91,113,118],"madd":[7,9,63,64,102,103,105,107,120,121],"silent":[97,99],"wasl":[35,36,52,53]},
-"13": {"ghunnah":[105,108],"idgham":[75,76],"madd":[11,13,45,47,83,85,96,98,127,128,132,133],"silent":[69,71,92,94],"wasl":[74,75,109,110,122,123]},
-"14": {"idgham":[55,56],"madd":[48,49,98,100,130,131],"wasl":[17,18,54,55,67,68]},
-"15": {"ghunnah":[81,85,131,134],"idgham":[63,68,94,98,119,124],"madd":[18,19,87,88,111,112,147,148],"wasl":[135,136]},
-"16": {"idgham":[36,41,60,65],"madd":[8,10,55,57,79,80,90,91,98,99,109,110,117,118],"qalqalah":[86,88]},
-"17": {"ghunnah":[21,25,57,61,61,64],"idgham":[64,69],"madd":[44,46,75,76],"silent":[31,33],"wasl":[11,12]},
-"18": {"madd":[35,36,61,62],"wasl":[12,13,27,28,41,42]},
-"19": {"ghunnah":[2,5,29,33,98,102,153,156],"idgham":[105,106],"madd":[44,45,171,172],"silent":[74,76],"wasl":[6,7,39,40,56,57,104,105,117,118,132,133]},
-"20": {"ghunnah":[54,57],"idgham":[72,77],"madd":[48,49,79,80],"wasl":[17,18,58,59]},
-"21": {"ghunnah":[117,120,156,159,225,228,258,261],"idgham":[62,63,78,82,101,102,228,233,248,253,281,285],"madd":[2,4,57,58,70,71,96,97,109,110,122,123,144,146,210,211,255,256,287,289,314,315],"silent":[31,33,48,50],"wasl":[13,14,61,62,100,101,135,136,151,152,179,180,262,263,294,295]},
-"22": {"ghunnah":[37,40],"idgham":[46,47,57,61,194,198,236,241],"madd":[65,67,99,100,115,116,170,172,243,244],"silent":[17,19,22,24,67,69,72,74,155,157,172,174],"wasl":[25,26,45,46,78,79,92,93,108,109,136,137,205,206,222,223]},
-"23": {"ghunnah":[2,5],"idgham":[85,86],"madd":[37,38,46,47,51,52,66,67,131,132],"silent":[77,79],"wasl":[6,7,26,27,41,42,55,56,84,85,97,98]},
-"24": {"ghunnah":[68,72],"madd":[93,94],"silent":[82,84]},
-"25": {"ghunnah":[67,70],"idgham":[9,13],"madd":[100,101],"wasl":[24,25,42,43,71,72,84,85,93,94]},
-"26": {"ghunnah":[150,153,191,195],"idgham":[63,64,78,79,94,95,109,110,170,175,182,186],"madd":[10,11,56,57,72,73,118,119,128,130,197,198],"silent":[124,126],"wasl":[31,32,62,63,93,94]},
-"27": {"idgham":[150,155],"madd":[2,4,121,124,137,138,181,182],"qalqalah":[40,42],"silent":[31,33,47,49,99,101,114,116],"wasl":[13,14]},
-"28": {"ghunnah":[35,40,85,89],"idgham":[4,9],"madd":[27,29,177,178],"qalqalah":[46,48],"silent":[19,21,108,110,121,123],"wasl":[100,101,113,114,147,148]},
-"29": {"ghunnah":[29,33,69,73],"idgham":[84,89],"madd":[82,83,141,142],"qalqalah":[33,35,119,121],"silent":[40,42],"wasl":[96,97]},
-"30": {"ghunnah":[103,106,121,125],"madd":[43,44,79,80,138,139],"qalqalah":[39,41],"silent":[29,31,62,64],"wasl":[107,108]},
-"31": {"ghunnah":[50,53,76,79,105,108,160,163,180,183,209,212,233,236,253,256,283,286,304,307,335,338,355,358,382,385,409,412,428,431,461,464,588,591,627,630,658,662,669,672],"idgham":[471,472,517,518,533,534,587,588],"madd":[19,20,45,46,247,249,267,269,298,300,319,321,350,351,368,370,377,378,395,397,404,405,422,424,456,457,475,476,582,583,593,595,680,682,751,752],"qalqalah":[41,43,88,90,145,147,192,194,294,296,315,317,610,612],"silent":[493,495,566,568,682,684],"wasl":[470,471,499,500,516,517,532,533,542,543,586,587,691,692,716,717]},
-"32": {"ghunnah":[4,7,28,31,129,133],"idgham":[37,38,84,88],"madd":[20,21,41,42,73,75,103,105,139,140,153,154,163,164],"silent":[10,12,94,96],"wasl":[13,14,36,37,119,120,143,144]},
-"33": {"ghunnah":[81,85,130,133,394,397,402,405,417,420,437,440],"idgham":[202,207,215,220,220,225,330,336,368,369,382,386,447,452],"madd":[91,92,124,125,150,151,243,245,252,253,282,283,303,305,363,364,432,433,454,455],"qalqalah":[107,109,317,319,338,340],"silent":[273,275,345,347,362,363],"wasl":[17,18,71,72,95,96,117,118,229,230,237,238,296,297,355,356,367,368,406,407]},
-"34": {"ghunnah":[11,14,92,96],"idgham":[39,44,53,57,62,68,116,121],"madd":[18,20,37,38,51,52,130,131],"qalqalah":[6,8,96,98],"silent":[87,89],"wasl":[71,72]},
-"35": {"ghunnah":[67,71,130,133,144,148,165,169,187,191,387,390],"idgham":[15,16,114,115,153,157,174,179,199,204,216,220,234,238,290,295,310,314,341,345,386,387],"madd":[21,22,24,25,54,55,65,66,181,182,258,260,337,338,347,349,380,381,423,424],"silent":[64,65],"wasl":[14,15,30,31,86,87,113,114,320,321,363,364,371,372,396,397]},
-"36": {"ghunnah":[29,33],"madd":[65,66,81,82,113,114],"wasl":[19,20,58,59,92,93,105,106]},
-"37": {"ghunnah":[50,54,129,134],"idgham":[6,11,33,37,78,79,102,103],"madd":[29,30,85,86,96,98,109,110,172,173],"qalqalah":[168,170],"silent":[84,85,108,109],"wasl":[59,60,77,78,101,102,150,151,163,164]},
-"38": {"ghunnah":[62,66],"idgham":[57,62,95,99],"madd":[72,73,101,103,119,120],"qalqalah":[4,6,120,121],"silent":[43,45],"wasl":[15,16,76,77]},
-"39": {"ghunnah":[45,49,157,160],"idgham":[56,60,70,71,135,140],"madd":[18,20,29,30,85,87,95,98,107,109,113,114,162,163,172,173,185,186,212,213],"qalqalah":[124,126,213,214],"silent":[20,22],"wasl":[2,3,69,70,147,148,189,190,205,206]},
-"40": {"ghunnah":[15,19,59,63,81,85,99,103,109,113,221,226],"idgham":[26,31,36,40,54,59,76,81,186,191,238,243],"madd":[13,14,45,46,69,70,91,92,107,108,140,142,158,159,177,178,215,216,234,235,243,244],"qalqalah":[169,171,196,198],"wasl":[203,204]},
-"41": {"ghunnah":[14,17,44,48,97,101,103,107,159,163],"idgham":[51,52,79,80],"madd":[40,41,57,58,60,61,95,96,126,127,141,142,176,177],"madd-lazim":[90,92],"qalqalah":[107,109],"wasl":[18,19,50,51,66,67,78,79,145,146]},
-"42": {"idgham":[18,19],"madd":[24,25,27,28,66,67],"wasl":[17,18,33,34,51,52,59,60]},
-"43": {"ghunnah":[14,17,40,45,45,48,71,74,93,98,170,174,178,182,190,193,197,201],"idgham":[157,158,217,221,244,249,249,253],"madd":[67,68,85,86,132,133,137,138,163,165,213,214,223,225,240,241,255,257,282,283,304,305],"qalqalah":[77,79,109,111,300,302],"wasl":[18,19,104,105,156,157,295,296]},
-"44": {"ghunnah":[31,34,42,45],"idgham":[30,31,67,72],"madd":[52,53,89,90],"qalqalah":[62,64,85,87],"silent":[74,76],"wasl":[10,11,18,19,29,30,80,81]},
-"45": {"ghunnah":[44,48,199,202,229,233],"idgham":[31,36,36,41,54,59,59,63,94,99,99,103,135,140,140,144,165,169],"madd":[41,43,84,85,154,157,192,194,235,236],"madd-lazim":[25,27],"qalqalah":[78,80,118,120],"wasl":[2,3,176,177,203,204]},
-"46": {"ghunnah":[10,13],"idgham":[27,32,41,45,63,67,87,92],"madd":[17,19,25,26,39,40,69,71,85,86,98,99],"qalqalah":[5,7],"wasl":[45,46]},
-"47": {"ghunnah":[18,21,62,65,99,102],"idgham":[38,39,84,89,93,98],"madd":[110,111,120,122,129,131,149,150],"silent":[125,127],"wasl":[25,26,37,38,138,139]},
-"48": {"idgham":[78,83,87,92],"madd":[12,14,42,43,98,99],"silent":[14,16],"wasl":[23,24]},
-"49": {"idgham":[4,8,10,15],"madd":[35,37,57,58],"silent":[37,39],"wasl":[20,21]},
-"50": {"idgham":[15,20,61,65,127,128],"madd":[38,40,101,102,114,116,131,132,136,137],"silent":[40,42,110,112],"wasl":[30,31,71,72,126,127]},
-"51": {"ghunnah":[2,5],"idgham":[103,107],"madd":[47,49,77,78,146,148,169,170],"silent":[49,51,113,115,142,144],"wasl":[22,23,58,59,158,159]},
-"52": {"idgham":[4,8],"madd":[32,33,71,73,88,90,94,95],"qalqalah":[58,60],"silent":[67,69],"wasl":[13,14,43,44,83,84]},
-"53": {"ghunnah":[75,78,123,126,141,145],"idgham":[106,111],"madd":[37,38,158,159],"qalqalah":[4,6,90,92],"silent":[11,13,97,99],"wasl":[16,17,127,128]},
-"54": {"ghunnah":[52,56,70,73,92,95,117,120,131,135],"idgham":[38,39,108,113,169,170],"madd":[193,194,204,205],"silent":[13,15,34,36,63,65,153,155],"wasl":[16,17,37,38,168,169,186,187,197,198]},
-"55": {"ghunnah":[38,41,84,87,136,140,162,165,221,224,232,235,308,312],"idgham":[57,58,226,231,257,262,301,306],"madd":[61,62,66,67,326,327,340,342,357,358,362,363],"qalqalah":[140,142],"silent":[33,35,53,55,336,338],"wasl":[7,8,15,16,56,57,96,97,112,113,124,125,183,184,191,192,352,353]},
-"56": {"idgham":[14,15,37,38,62,63],"madd":[21,22,44,45,92,93],"silent":[10,12,20,21,33,35,43,44,58,60],"wasl":[13,14,36,37,61,62]},
-"57": {"ghunnah":[12,15,79,82],"idgham":[78,79],"madd":[71,72,104,105],"silent":[33,35],"wasl":[16,17,52,53,77,78,97,98]},
-"58": {"ghunnah":[47,50,127,130,153,157,234,237,331,335,342,345,366,370,391,395],"idgham":[148,153,208,213,217,218,280,285],"madd":[2,4,78,79,137,138,146,147,167,168,248,249,259,261,268,269,278,279,351,352,397,398,436,437,462,463],"qalqalah":[105,107,157,159,176,178],"silent":[31,33,112,114,166,167,247,248],"wasl":[13,14,53,54,88,89,115,116,171,172,216,217,252,253,413,414,428,429,442,443]},
-"59": {"ghunnah":[30,33,98,102],"madd":[24,25,115,116,151,152,156,157,180,181],"qalqalah":[20,22,102,104],"silent":[64,66],"wasl":[15,16,36,37,73,74,86,87,131,132,160,161]},
-"60": {"ghunnah":[22,25,61,66,81,84,115,118,139,143,185,188],"idgham":[21,22,95,99,150,154,156,160,178,183],"madd":[9,10,27,29,36,37,137,138,211,212],"wasl":[2,3,20,21,32,33,191,192]},
-"61": {"ghunnah":[110,113,122,126,139,142,195,198,304,307,447,451,483,488,502,506,510,515,536,539,564,567,586,590,596,600],"idgham":[31,35,62,66,92,96,385,390,554,559],"madd":[104,107,171,173,200,201,227,228,254,255,281,282,307,308,334,335,357,358,360,361,399,401,530,533,580,581,602,603,641,642,665,666],"silent":[133,135,458,460,523,525],"wasl":[14,15,45,46,76,77,568,569,618,619,633,634]},
-"62": {"ghunnah":[2,5,106,110,161,164,309,313,358,361],"idgham":[114,119,302,307,376,381],"madd":[66,67,91,92,97,100,200,202,250,251,383,384],"silent":[42,44,82,84,131,133,196,198],"wasl":[9,10,24,25,47,48,165,166,207,208,231,232,260,261,329,330,348,349,362,363]},
-"63": {"ghunnah":[67,71,74,79,126,129,138,143,195,199],"idgham":[27,28],"madd":[21,23,54,56,190,192,247,248],"qalqalah":[7,9,79,81],"silent":[14,16],"wasl":[26,27,91,92,99,100,154,155]},
-"64": {"ghunnah":[9,12,76,79,134,138],"idgham":[30,31],"madd":[4,6,36,37,39,40,71,73,181,182],"qalqalah":[57,59],"silent":[149,151],"wasl":[29,30,45,46,154,155]}
+"1": {"ikhfa":[49,52,80,83],"iqlab":[104,108],"idghaam_no_ghunnah":[116,121],"madd_2":[56,57,71,72,102,103,114,115],"madd_246":[140,141],"madd_munfasil":[94,96]},
+"2": {"ikhfa":[114,118,136,140,140,143],"ikhfa_shafawi":[97,101],"idghaam_ghunnah":[50,55,79,83,226,231],"lam_shamsiyyah":[1,2,16,17],"madd_2":[46,47],"madd_246":[245,246],"madd_muttasil":[219,221],"qalqalah":[28,30,201,203],"silent":[35,37,65,67],"hamzat_wasl":[15,16,27,28,126,127,160,161,170,171,180,181,234,235]},
+"3": {"ikhfa":[16,19,76,79],"idghaam_ghunnah":[53,57,111,115],"lam_shamsiyyah":[1,2,58,59],"madd_2":[125,126],"madd_246":[148,149],"madd_munfasil":[83,85],"hamzat_wasl":[57,58,137,138]},
+"4": {"ghunnah":[39,42],"idghaam_ghunnah":[115,119,157,162],"madd_2":[33,34,101,102,146,147,185,186],"madd_246":[190,191],"madd_muttasil":[77,79,168,170],"qalqalah":[85,87,125,127],"silent":[55,57,132,134,164,166],"hamzat_wasl":[2,3,22,23,84,85,180,181]},
+"5": {"ghunnah":[64,67],"iqlab":[29,32],"idghaam_no_ghunnah":[82,87],"madd_2":[40,41],"madd_246":[89,90],"silent":[23,25,57,59],"hamzat_wasl":[7,8,68,69]},
+"6": {"ghunnah":[144,147],"ikhfa":[78,81],"iqlab":[129,133],"idghaam_no_ghunnah":[47,52],"lam_shamsiyyah":[159,160],"madd_2":[28,29,94,95,124,125,127,128,149,150,163,164],"madd_246":[168,169],"madd_munfasil":[73,75],"madd_muttasil":[63,65],"hamzat_wasl":[2,3,134,135,158,159]},
+"7": {"ghunnah":[17,20],"ikhfa":[49,53],"madd_2":[7,8,67,68],"madd_246":[72,73],"hamzat_wasl":[2,3,30,31,62,63]},
+"8": {"ghunnah":[78,81],"ikhfa":[34,38],"iqlab":[63,67],"madd_2":[58,59,61,62,83,84,97,98],"madd_246":[102,103],"qalqalah":[4,6],"silent":[10,12],"hamzat_wasl":[21,22,68,69,92,93]},
+"9": {"ghunnah":[17,20],"ikhfa":[49,53],"lam_shamsiyyah":[63,64],"madd_2":[7,8,67,68],"madd_246":[72,73],"madd_munfasil":[44,46],"hamzat_wasl":[2,3,28,29,62,63]},
+"10": {"ghunnah":[54,57],"madd_2":[48,49],"madd_246":[79,80],"hamzat_wasl":[17,18,58,59]},
+"11": {"ghunnah":[2,5],"ikhfa":[48,51],"ikhfa_shafawi":[82,86],"idghaam_ghunnah":[43,48,123,128],"idghaam_no_ghunnah":[74,80,99,104],"idghaam_shafawi":[132,137],"madd_2":[192,193,207,208],"madd_246":[221,222],"madd_muttasil":[18,20],"qalqalah":[186,188],"hamzat_wasl":[6,7,26,27,117,118,139,140,154,155,166,167]},
+"12": {"ghunnah":[31,34],"ikhfa":[71,74],"idghaam_ghunnah":[86,91,113,118],"madd_2":[63,64,102,103],"madd_246":[120,121],"madd_munfasil":[7,9,105,107],"silent":[97,99],"hamzat_wasl":[35,36,52,53]},
+"13": {"ikhfa":[105,108],"lam_shamsiyyah":[75,76],"madd_2":[127,128],"madd_246":[132,133],"madd_muttasil":[11,13,45,47,83,85,96,98],"silent":[69,71,92,94],"hamzat_wasl":[74,75,109,110,122,123]},
+"14": {"lam_shamsiyyah":[55,56],"madd_2":[48,49],"madd_246":[130,131],"madd_munfasil":[98,100],"hamzat_wasl":[17,18,54,55,67,68]},
+"15": {"ikhfa":[131,134],"ikhfa_shafawi":[81,85],"idghaam_ghunnah":[94,98,119,124],"idghaam_shafawi":[63,68],"madd_2":[18,19,87,88,111,112],"madd_246":[147,148],"hamzat_wasl":[135,136]},
+"16": {"idghaam_ghunnah":[60,65],"idghaam_shafawi":[36,41],"madd_2":[79,80,90,91,98,99,109,110],"madd_246":[117,118],"madd_munfasil":[8,10,55,57],"qalqalah":[86,88]},
+"17": {"ikhfa":[21,25,57,61,61,64],"idghaam_shafawi":[64,69],"madd_246":[75,76],"madd_munfasil":[44,46],"silent":[31,33],"hamzat_wasl":[11,12]},
+"18": {"madd_2":[35,36],"madd_246":[61,62],"hamzat_wasl":[12,13,27,28,41,42]},
+"19": {"ghunnah":[2,5],"ikhfa":[29,33,98,102,153,156],"lam_shamsiyyah":[105,106],"madd_2":[44,45],"madd_246":[171,172],"silent":[74,76],"hamzat_wasl":[6,7,39,40,56,57,104,105,117,118,132,133]},
+"20": {"ghunnah":[54,57],"idghaam_no_ghunnah":[72,77],"madd_2":[48,49],"madd_246":[79,80],"hamzat_wasl":[17,18,58,59]},
+"21": {"ghunnah":[117,120,258,261],"ikhfa":[156,159,225,228],"idghaam_ghunnah":[78,82,248,253,281,285],"idghaam_shafawi":[228,233],"lam_shamsiyyah":[62,63,101,102],"madd_2":[57,58,70,71,96,97,109,110,122,123,210,211,255,256],"madd_246":[314,315],"madd_munfasil":[2,4],"madd_muttasil":[144,146,287,289],"silent":[31,33,48,50],"hamzat_wasl":[13,14,61,62,100,101,135,136,151,152,179,180,262,263,294,295]},
+"22": {"ikhfa":[37,40],"idghaam_ghunnah":[57,61,194,198],"idghaam_no_ghunnah":[236,241],"lam_shamsiyyah":[46,47],"madd_2":[99,100,115,116],"madd_246":[243,244],"madd_munfasil":[65,67,170,172],"silent":[17,19,22,24,67,69,72,74,155,157,172,174],"hamzat_wasl":[25,26,45,46,78,79,92,93,108,109,136,137,205,206,222,223]},
+"23": {"ghunnah":[2,5],"lam_shamsiyyah":[85,86],"madd_2":[37,38,46,47,51,52,66,67],"madd_246":[131,132],"silent":[77,79],"hamzat_wasl":[6,7,26,27,41,42,55,56,84,85,97,98]},
+"24": {"ikhfa_shafawi":[68,72],"madd_246":[93,94],"silent":[82,84]},
+"25": {"ghunnah":[67,70],"idghaam_ghunnah":[9,13],"madd_246":[100,101],"hamzat_wasl":[24,25,42,43,71,72,84,85,93,94]},
+"26": {"ghunnah":[150,153],"ikhfa":[191,195],"idghaam_ghunnah":[182,186],"idghaam_shafawi":[170,175],"lam_shamsiyyah":[63,64,78,79,94,95,109,110],"madd_2":[10,11,56,57,72,73,118,119],"madd_246":[197,198],"madd_muttasil":[128,130],"silent":[124,126],"hamzat_wasl":[31,32,62,63,93,94]},
+"27": {"idghaam_no_ghunnah":[150,155],"madd_2":[137,138],"madd_246":[181,182],"madd_munfasil":[2,4,121,124],"qalqalah":[40,42],"silent":[31,33,47,49,99,101,114,116],"hamzat_wasl":[13,14]},
+"28": {"ikhfa":[35,40,85,89],"idghaam_no_ghunnah":[4,9],"madd_246":[177,178],"madd_munfasil":[27,29],"qalqalah":[46,48],"silent":[19,21,108,110,121,123],"hamzat_wasl":[100,101,113,114,147,148]},
+"29": {"ikhfa":[29,33,69,73],"idghaam_no_ghunnah":[84,89],"madd_2":[82,83],"madd_246":[141,142],"qalqalah":[33,35,119,121],"silent":[40,42],"hamzat_wasl":[96,97]},
+"30": {"ghunnah":[103,106],"iqlab":[121,125],"madd_2":[43,44,79,80],"madd_246":[138,139],"qalqalah":[39,41],"silent":[29,31,62,64],"hamzat_wasl":[107,108]},
+"31": {"ghunnah":[50,53,76,79,105,108,160,163,180,183,209,212,233,236,253,256,283,286,304,307,335,338,355,358,382,385,409,412,428,431,461,464,588,591,627,630,669,672],"ikhfa":[658,662],"lam_shamsiyyah":[471,472,517,518,533,534,587,588],"madd_2":[19,20,45,46,350,351,377,378,404,405,456,457,475,476,582,583],"madd_246":[751,752],"madd_munfasil":[368,370,395,397,680,682],"madd_muttasil":[247,249,267,269,298,300,319,321,422,424,593,595],"qalqalah":[41,43,88,90,145,147,192,194,294,296,315,317,610,612],"silent":[493,495,566,568,682,684],"hamzat_wasl":[470,471,499,500,516,517,532,533,542,543,586,587,691,692,716,717]},
+"32": {"ikhfa":[4,7,28,31,129,133],"idghaam_ghunnah":[84,88],"lam_shamsiyyah":[37,38],"madd_2":[20,21,41,42,139,140,153,154],"madd_246":[163,164],"madd_muttasil":[73,75,103,105],"silent":[10,12,94,96],"hamzat_wasl":[13,14,36,37,119,120,143,144]},
+"33": {"ghunnah":[130,133,394,397,402,405,437,440],"ikhfa":[81,85],"iqlab":[417,420],"idghaam_ghunnah":[202,207,220,225,382,386],"idghaam_no_ghunnah":[330,336,447,452],"idghaam_shafawi":[215,220],"lam_shamsiyyah":[368,369],"madd_2":[91,92,124,125,150,151,252,253,282,283,363,364,432,433],"madd_246":[454,455],"madd_munfasil":[243,245],"madd_muttasil":[303,305],"qalqalah":[107,109,317,319,338,340],"silent":[273,275,345,347,362,363],"hamzat_wasl":[17,18,71,72,95,96,117,118,229,230,237,238,296,297,355,356,367,368,406,407]},
+"34": {"ikhfa":[11,14,92,96],"idghaam_ghunnah":[39,44,53,57,62,68],"idghaam_no_ghunnah":[116,121],"madd_2":[37,38,51,52],"madd_246":[130,131],"madd_munfasil":[18,20],"qalqalah":[6,8,96,98],"silent":[87,89],"hamzat_wasl":[71,72]},
+"35": {"ghunnah":[130,133,387,390],"ikhfa":[67,71,144,148,165,169,187,191],"idghaam_ghunnah":[153,157,174,179,216,220,234,238,290,295,310,314,341,345],"idghaam_no_ghunnah":[199,204],"lam_shamsiyyah":[15,16,114,115,386,387],"madd_2":[21,22,24,25,54,55,65,66,181,182,337,338,380,381],"madd_246":[423,424],"madd_muttasil":[258,260,347,349],"silent":[64,65],"hamzat_wasl":[14,15,30,31,86,87,113,114,320,321,363,364,371,372,396,397]},
+"36": {"ikhfa":[29,33],"madd_2":[65,66,81,82],"madd_246":[113,114],"hamzat_wasl":[19,20,58,59,92,93,105,106]},
+"37": {"ikhfa":[50,54,129,134],"idghaam_ghunnah":[33,37],"idghaam_no_ghunnah":[6,11],"lam_shamsiyyah":[78,79,102,103],"madd_2":[29,30,85,86,109,110],"madd_246":[172,173],"madd_muttasil":[96,98],"qalqalah":[168,170],"silent":[84,85,108,109],"hamzat_wasl":[59,60,77,78,101,102,150,151,163,164]},
+"38": {"ikhfa":[62,66],"idghaam_ghunnah":[95,99],"idghaam_shafawi":[57,62],"madd_2":[72,73],"madd_246":[119,120],"madd_muttasil":[101,103],"qalqalah":[4,6,120,121],"silent":[43,45],"hamzat_wasl":[15,16,76,77]},
+"39": {"ikhfa":[157,160],"iqlab":[45,49],"idghaam_ghunnah":[56,60,135,140],"lam_shamsiyyah":[70,71],"madd_2":[29,30,113,114,162,163,172,173,185,186],"madd_246":[212,213],"madd_munfasil":[18,20,95,98],"madd_muttasil":[85,87,107,109],"qalqalah":[124,126,213,214],"silent":[20,22],"hamzat_wasl":[2,3,69,70,147,148,189,190,205,206]},
+"40": {"ikhfa":[15,19,59,63,81,85,99,103,221,226],"iqlab":[109,113],"idghaam_ghunnah":[36,40,54,59,76,81,238,243],"idghaam_no_ghunnah":[26,31,186,191],"madd_2":[13,14,45,46,69,70,91,92,107,108,158,159,177,178,215,216,234,235],"madd_246":[243,244],"madd_munfasil":[140,142],"qalqalah":[169,171,196,198],"hamzat_wasl":[203,204]},
+"41": {"ghunnah":[14,17],"ikhfa":[44,48,97,101,103,107],"iqlab":[159,163],"lam_shamsiyyah":[51,52,79,80],"madd_2":[40,41,57,58,60,61,95,96,126,127,141,142],"madd_246":[176,177],"madd_6":[90,92],"qalqalah":[107,109],"hamzat_wasl":[18,19,50,51,66,67,78,79,145,146]},
+"42": {"lam_shamsiyyah":[18,19],"madd_2":[24,25,27,28],"madd_246":[66,67],"hamzat_wasl":[17,18,33,34,51,52,59,60]},
+"43": {"ghunnah":[14,17,45,48,71,74],"ikhfa":[40,45,93,98,170,174,178,182,197,201],"iqlab":[190,193],"idghaam_ghunnah":[217,221,244,249,249,253],"lam_shamsiyyah":[157,158],"madd_2":[67,68,85,86,132,133,137,138,213,214,240,241,282,283],"madd_246":[304,305],"madd_muttasil":[163,165,223,225,255,257],"qalqalah":[77,79,109,111,300,302],"hamzat_wasl":[18,19,104,105,156,157,295,296]},
+"44": {"ghunnah":[31,34,42,45],"idghaam_no_ghunnah":[67,72],"lam_shamsiyyah":[30,31],"madd_2":[52,53],"madd_246":[89,90],"qalqalah":[62,64,85,87],"silent":[74,76],"hamzat_wasl":[10,11,18,19,29,30,80,81]},
+"45": {"ghunnah":[199,202],"ikhfa":[44,48,229,233],"idghaam_ghunnah":[31,36,36,41,59,63,99,103,140,144,165,169],"idghaam_shafawi":[54,59,94,99,135,140],"madd_2":[84,85],"madd_246":[235,236],"madd_munfasil":[154,157],"madd_muttasil":[41,43,192,194],"madd_6":[25,27],"qalqalah":[78,80,118,120],"hamzat_wasl":[2,3,176,177,203,204]},
+"46": {"ikhfa":[10,13],"idghaam_ghunnah":[27,32,41,45,63,67,87,92],"madd_2":[25,26,39,40,85,86],"madd_246":[98,99],"madd_munfasil":[17,19],"madd_muttasil":[69,71],"qalqalah":[5,7],"hamzat_wasl":[45,46]},
+"47": {"ghunnah":[18,21,62,65],"iqlab":[99,102],"idghaam_ghunnah":[84,89],"idghaam_shafawi":[93,98],"lam_shamsiyyah":[38,39],"madd_2":[110,111],"madd_246":[149,150],"madd_munfasil":[120,122],"madd_muttasil":[129,131],"silent":[125,127],"hamzat_wasl":[25,26,37,38,138,139]},
+"48": {"idghaam_ghunnah":[78,83],"idghaam_shafawi":[87,92],"madd_2":[42,43],"madd_246":[98,99],"madd_munfasil":[12,14],"silent":[14,16],"hamzat_wasl":[23,24]},
+"49": {"idghaam_ghunnah":[4,8],"idghaam_no_ghunnah":[10,15],"madd_246":[57,58],"madd_munfasil":[35,37],"silent":[37,39],"hamzat_wasl":[20,21]},
+"50": {"idghaam_ghunnah":[61,65],"idghaam_shafawi":[15,20],"lam_shamsiyyah":[127,128],"madd_2":[101,102,131,132],"madd_246":[136,137],"madd_munfasil":[38,40],"madd_muttasil":[114,116],"silent":[40,42,110,112],"hamzat_wasl":[30,31,71,72,126,127]},
+"51": {"ghunnah":[2,5],"idghaam_ghunnah":[103,107],"madd_2":[77,78],"madd_246":[169,170],"madd_munfasil":[47,49],"madd_muttasil":[146,148],"silent":[49,51,113,115,142,144],"hamzat_wasl":[22,23,58,59,158,159]},
+"52": {"idghaam_ghunnah":[4,8],"madd_2":[32,33],"madd_246":[94,95],"madd_muttasil":[71,73,88,90],"qalqalah":[58,60],"silent":[67,69],"hamzat_wasl":[13,14,43,44,83,84]},
+"53": {"ghunnah":[75,78,123,126],"iqlab":[141,145],"idghaam_ghunnah":[106,111],"madd_2":[37,38],"madd_246":[158,159],"qalqalah":[4,6,90,92],"silent":[11,13,97,99],"hamzat_wasl":[16,17,127,128]},
+"54": {"ghunnah":[70,73,92,95,117,120],"ikhfa":[52,56,131,135],"idghaam_shafawi":[108,113],"lam_shamsiyyah":[38,39,169,170],"madd_2":[193,194],"madd_246":[204,205],"silent":[13,15,34,36,63,65,153,155],"hamzat_wasl":[16,17,37,38,168,169,186,187,197,198]},
+"55": {"ghunnah":[84,87,162,165,221,224],"ikhfa":[38,41,136,140,308,312],"iqlab":[232,235],"idghaam_ghunnah":[257,262,301,306],"idghaam_shafawi":[226,231],"lam_shamsiyyah":[57,58],"madd_2":[61,62,66,67,326,327,357,358],"madd_246":[362,363],"madd_muttasil":[340,342],"qalqalah":[140,142],"silent":[33,35,53,55,336,338],"hamzat_wasl":[7,8,15,16,56,57,96,97,112,113,124,125,183,184,191,192,352,353]},
+"56": {"lam_shamsiyyah":[14,15,37,38,62,63],"madd_2":[21,22,44,45],"madd_246":[92,93],"silent":[10,12,20,21,33,35,43,44,58,60],"hamzat_wasl":[13,14,36,37,61,62]},
+"57": {"ghunnah":[12,15,79,82],"lam_shamsiyyah":[78,79],"madd_2":[71,72],"madd_246":[104,105],"silent":[33,35],"hamzat_wasl":[16,17,52,53,77,78,97,98]},
+"58": {"ghunnah":[342,345],"ikhfa":[47,50,127,130,153,157,391,395],"ikhfa_shafawi":[366,370],"iqlab":[234,237,331,335],"idghaam_ghunnah":[148,153],"idghaam_no_ghunnah":[280,285],"idghaam_shafawi":[208,213],"lam_shamsiyyah":[217,218],"madd_2":[78,79,137,138,146,147,167,168,248,249,268,269,278,279,351,352,397,398,436,437],"madd_246":[462,463],"madd_munfasil":[2,4],"madd_muttasil":[259,261],"qalqalah":[105,107,157,159,176,178],"silent":[31,33,112,114,166,167,247,248],"hamzat_wasl":[13,14,53,54,88,89,115,116,171,172,216,217,252,253,413,414,428,429,442,443]},
+"59": {"ikhfa":[30,33,98,102],"madd_2":[24,25,115,116,151,152,156,157],"madd_246":[180,181],"qalqalah":[20,22,102,104],"silent":[64,66],"hamzat_wasl":[15,16,36,37,73,74,86,87,131,132,160,161]},
+"60": {"ghunnah":[22,25,81,84,115,118,185,188],"ikhfa":[61,66],"iqlab":[139,143],"idghaam_ghunnah":[95,99,150,154,156,160],"idghaam_no_ghunnah":[178,183],"lam_shamsiyyah":[21,22],"madd_2":[9,10,36,37,137,138],"madd_246":[211,212],"madd_muttasil":[27,29],"hamzat_wasl":[2,3,20,21,32,33,191,192]},
+"61": {"ghunnah":[195,198,304,307],"ikhfa":[110,113,122,126,447,451,483,488,510,515,536,539,564,567,586,590,596,600],"ikhfa_shafawi":[502,506],"iqlab":[139,142],"idghaam_ghunnah":[31,35,62,66,92,96,554,559],"idghaam_shafawi":[385,390],"madd_2":[200,201,227,228,254,255,281,282,307,308,334,335,357,358,360,361,580,581,602,603,641,642],"madd_246":[665,666],"madd_munfasil":[104,107,399,401,530,533],"madd_muttasil":[171,173],"silent":[133,135,458,460,523,525],"hamzat_wasl":[14,15,45,46,76,77,568,569,618,619,633,634]},
+"62": {"ghunnah":[2,5,161,164,358,361],"ikhfa":[106,110,309,313],"idghaam_no_ghunnah":[114,119,302,307,376,381],"madd_2":[66,67,91,92,250,251],"madd_246":[383,384],"madd_munfasil":[97,100],"madd_muttasil":[200,202],"silent":[42,44,82,84,131,133,196,198],"hamzat_wasl":[9,10,24,25,47,48,165,166,207,208,231,232,260,261,329,330,348,349,362,363]},
+"63": {"ikhfa":[74,79,126,129,138,143,195,199],"ikhfa_shafawi":[67,71],"lam_shamsiyyah":[27,28],"madd_246":[247,248],"madd_munfasil":[190,192],"madd_muttasil":[21,23,54,56],"qalqalah":[7,9,79,81],"silent":[14,16],"hamzat_wasl":[26,27,91,92,99,100,154,155]},
+"64": {"ghunnah":[9,12],"ikhfa":[76,79],"ikhfa_shafawi":[134,138],"lam_shamsiyyah":[30,31],"madd_2":[36,37,39,40],"madd_246":[181,182],"madd_munfasil":[4,6,71,73],"qalqalah":[57,59],"silent":[149,151],"hamzat_wasl":[29,30,45,46,154,155]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/25.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/25.json
index b1aa4b8..f548e65 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/25.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/25.json
@@ -1,79 +1,79 @@
{
-"1": {"madd":[93,94,111,112],"qalqalah":[87,89],"wasl":[49,50,65,66]},
-"2": {"ghunnah":[98,102,134,138],"idgham":[22,23,69,74,83,88],"madd":[12,13,28,29,31,32,90,91,147,148],"qalqalah":[151,153],"wasl":[21,22,37,38,104,105]},
-"3": {"ghunnah":[16,20,105,108],"idgham":[36,41,61,66,119,124,133,138,159,164,175,179],"madd":[25,27,173,174],"silent":[11,13,172,173],"wasl":[2,3]},
-"4": {"idgham":[129,134],"madd":[24,26,36,37,39,41,47,49,65,66,80,81,118,120],"qalqalah":[113,115],"silent":[26,28],"wasl":[8,9,57,58]},
-"5": {"idgham":[82,86],"madd":[7,9,16,17],"silent":[9,11],"wasl":[23,24,37,38]},
-"6": {"ghunnah":[7,10,73,76],"idgham":[33,34,46,47,92,98],"madd":[52,53,55,56,78,79],"wasl":[15,16,32,33,45,46,61,62]},
-"7": {"ghunnah":[93,96,113,117],"idgham":[25,26,45,46],"madd":[19,20,88,90,131,132],"silent":[8,10],"wasl":[24,25,44,45,69,70]},
-"8": {"ghunnah":[26,29,51,54,98,102],"idgham":[55,59,83,84,125,131],"madd":[11,14,47,48,87,88],"wasl":[82,83]},
-"9": {"ghunnah":[1,4],"madd":[38,39],"silent":[21,23,50,52],"wasl":[29,30]},
-"10": {"ghunnah":[21,25,53,57,65,68,70,74,82,86],"idgham":[47,53],"madd":[16,18,25,27,57,58,68,69,103,104],"qalqalah":[74,76,111,113],"wasl":[10,11,94,95]},
-"11": {"ghunnah":[47,51],"idgham":[19,20,60,61],"qalqalah":[37,39],"silent":[13,15],"wasl":[18,19,59,60]},
-"12": {"ghunnah":[28,32,37,41],"idgham":[14,19,19,24,63,68],"silent":[46,48]},
-"13": {"ghunnah":[33,38],"idgham":[42,48],"madd":[6,8],"silent":[16,18,65,67]},
-"14": {"ghunnah":[60,65],"idgham":[31,36,40,45],"madd":[36,37],"qalqalah":[7,9,46,48],"silent":[12,14,51,53],"wasl":[15,16,45,46]},
-"15": {"ghunnah":[29,32],"idgham":[96,100],"madd":[9,10,93,95],"wasl":[35,36,45,46,60,61]},
-"16": {"idgham":[68,74],"madd":[23,25,33,34]},
-"17": {"ghunnah":[42,46,72,75],"idgham":[133,134],"madd":[102,104,108,110,139,140],"silent":[129,131],"wasl":[50,51,132,133]},
-"18": {"ghunnah":[34,36,65,69,175,180],"idgham":[50,55,100,105,150,151],"madd":[15,16,45,47,88,90,97,98,124,126],"qalqalah":[11,13],"silent":[6,8,146,148,167,169],"wasl":[149,150]},
-"19": {"ghunnah":[17,21,96,99,117,122],"idgham":[62,67,76,81,83,87,91,96],"qalqalah":[4,6,106,108]},
-"20": {"ghunnah":[58,61,150,154],"idgham":[81,82],"madd":[4,6,53,55],"qalqalah":[21,23],"wasl":[33,34,80,81,107,108]},
-"21": {"ghunnah":[55,58,137,140,162,167],"madd":[36,38,50,52,78,80,132,134],"silent":[127,129],"wasl":[8,9,71,72,115,116]},
-"22": {"idgham":[54,59,91,97],"madd":[23,25],"qalqalah":[63,65,88,90],"wasl":[16,17]},
-"23": {"ghunnah":[44,48,72,75],"idgham":[67,72],"madd":[10,12,56,57,64,66],"silent":[31,33]},
-"24": {"ghunnah":[15,18],"idgham":[37,42,50,55],"madd":[6,7],"wasl":[10,11]},
-"25": {"ghunnah":[72,75],"idgham":[20,21],"madd":[26,28,40,41,61,63],"wasl":[19,20,33,34,54,55]},
-"26": {"idgham":[32,33],"madd":[40,41,71,72],"wasl":[21,22,66,67]},
-"27": {"idgham":[18,19,82,83],"madd":[54,55],"wasl":[17,18,65,66,81,82]},
-"28": {"madd":[2,3]},
-"29": {"ghunnah":[83,86],"idgham":[25,26,65,66],"madd":[48,50,73,74,86,87],"qalqalah":[5,7],"wasl":[24,25,64,65]},
-"30": {"ghunnah":[30,33],"idgham":[9,10],"madd":[21,22,56,57],"silent":[51,53],"wasl":[8,9,42,43,61,62]},
-"31": {"idgham":[44,50,93,98],"madd":[6,7],"qalqalah":[58,60],"wasl":[53,54]},
-"32": {"ghunnah":[83,87],"idgham":[73,77],"madd":[77,78,89,90,111,112,134,135],"silent":[25,27],"wasl":[8,9,53,54]},
-"33": {"madd":[40,41],"wasl":[46,47]},
-"34": {"ghunnah":[52,55],"idgham":[75,80,84,89],"madd":[64,66],"silent":[60,62]},
-"35": {"madd":[34,35,56,58,69,70],"qalqalah":[6,8],"wasl":[27,28]},
-"36": {"ghunnah":[76,79],"madd":[17,19,65,66,83,84],"qalqalah":[91,93],"silent":[54,56],"wasl":[10,11,26,27,36,37]},
-"37": {"ghunnah":[18,21,79,82],"idgham":[13,18,35,36,78,79,92,96,110,111],"madd":[54,55,70,71,114,115],"qalqalah":[50,52,102,104],"silent":[31,33],"wasl":[34,35]},
-"38": {"ghunnah":[50,55],"idgham":[6,11,34,35],"madd":[29,30,63,64],"silent":[18,20],"wasl":[33,34]},
-"39": {"ghunnah":[6,11,43,48],"madd":[33,34],"qalqalah":[13,15],"wasl":[24,25]},
-"40": {"idgham":[64,65],"madd":[42,44],"qalqalah":[6,8],"silent":[15,17,90,92,116,118],"wasl":[24,25,36,37,63,64]},
-"41": {"idgham":[19,23],"madd":[55,56],"wasl":[60,61,75,76]},
-"42": {"ghunnah":[2,6,52,56],"madd":[47,49],"wasl":[110,111]},
-"43": {"ghunnah":[51,54],"madd":[29,30,34,35,41,42],"wasl":[16,17]},
-"44": {"ghunnah":[16,19],"madd":[90,91],"wasl":[81,82]},
-"45": {"ghunnah":[81,86,86,89],"idgham":[41,42,101,102],"madd":[58,60,73,74],"wasl":[40,41,100,101]},
-"46": {"ghunnah":[2,5],"idgham":[33,38],"madd":[14,15],"qalqalah":[30,32]},
-"47": {"ghunnah":[51,54,79,82],"idgham":[44,49,50,51,65,70,78,79],"wasl":[7,8,29,30,49,50,77,78]},
-"48": {"ghunnah":[41,46,75,78,106,110],"idgham":[26,27,90,91],"madd":[13,15,32,33,69,70,96,98,103,105],"wasl":[7,8,25,26,89,90]},
-"49": {"ghunnah":[52,55],"idgham":[25,30,33,38,76,81],"madd":[16,17,48,49,65,67,74,75],"qalqalah":[61,63]},
-"50": {"ghunnah":[70,73],"idgham":[69,70],"madd":[18,19,55,58],"qalqalah":[6,8],"silent":[46,48],"wasl":[68,69]},
-"51": {"idgham":[44,49]},
-"52": {"ghunnah":[38,42,52,57],"madd":[18,19,31,32,44,45],"qalqalah":[34,36],"wasl":[13,14]},
-"53": {"ghunnah":[48,52],"idgham":[56,60,80,84,110,115,120,126],"madd":[38,39,62,63],"qalqalah":[117,119],"wasl":[7,8,22,23]},
-"54": {"ghunnah":[42,47],"idgham":[62,67,72,77],"madd":[32,34,55,56],"wasl":[7,8,27,28]},
-"55": {"ghunnah":[16,20,42,45],"madd":[103,104],"wasl":[24,25,78,79]},
-"56": {"idgham":[36,41],"madd":[4,6,17,18]},
-"57": {"ghunnah":[54,58],"idgham":[65,69],"madd":[7,9,58,60,91,92],"qalqalah":[40,42]},
-"58": {"madd":[67,68,82,83,103,104],"wasl":[18,19,27,28]},
-"59": {"ghunnah":[78,82,82,85],"idgham":[16,17,113,114],"madd":[22,23,25,26,121,122,139,140],"wasl":[15,16,31,32,86,87,102,103,112,113]},
-"60": {"idgham":[34,35,62,63],"madd":[42,43,70,71],"silent":[29,31,52,54],"wasl":[21,22,61,62]},
-"61": {"idgham":[30,31,47,52,72,77,82,88],"madd":[36,38,70,71],"wasl":[10,11,29,30]},
-"62": {"ghunnah":[35,38],"idgham":[34,35,51,56,71,75],"wasl":[7,8,22,23,33,34]},
-"63": {"idgham":[11,12,64,69],"madd":[19,20,92,93,114,115],"silent":[107,109],"wasl":[10,11,23,24,49,50,87,88]},
-"64": {"idgham":[41,46],"madd":[50,51],"wasl":[2,3]},
-"65": {"ghunnah":[42,45,59,62,67,70],"wasl":[2,3,32,33]},
-"66": {"ghunnah":[2,5],"idgham":[28,33],"madd":[11,13]},
-"67": {"ghunnah":[21,24],"madd":[16,18,83,84],"qalqalah":[56,58],"silent":[27,29,44,46,63,65],"wasl":[2,3]},
-"68": {"ghunnah":[76,79],"idgham":[75,76,146,150],"madd":[43,44,159,160],"qalqalah":[18,20,64,66],"wasl":[2,3,31,32,74,75,84,85,100,101,117,118]},
-"69": {"madd":[4,5,40,41,62,63],"qalqalah":[54,56],"wasl":[15,16,33,34]},
-"70": {"ghunnah":[9,13,41,46,50,55],"idgham":[110,114,134,140],"madd":[46,47,61,63,108,109],"silent":[57,59],"wasl":[78,79,120,121]},
-"71": {"ghunnah":[4,8,27,32,34,37],"madd":[23,24,39,40],"wasl":[55,56]},
-"72": {"idgham":[29,30,57,58],"silent":[51,53,72,74],"wasl":[2,3,28,29,56,57]},
-"73": {"ghunnah":[79,82],"idgham":[81,86],"madd":[37,38],"silent":[26,28,64,66],"wasl":[2,3]},
-"74": {"idgham":[93,97],"madd":[54,55,71,72],"qalqalah":[34,36,98,100],"wasl":[2,3,97,98]},
-"75": {"idgham":[81,85],"madd":[6,8,89,90],"qalqalah":[15,17],"silent":[2,4,49,51],"wasl":[24,25]},
-"76": {"idgham":[37,42],"madd":[2,3]},
-"77": {"madd":[46,48],"qalqalah":[59,61,67,69],"silent":[17,19]}
+"1": {"madd_2":[93,94,111,112],"qalqalah":[87,89],"hamzat_wasl":[49,50,65,66]},
+"2": {"ikhfa":[98,102,134,138],"idghaam_ghunnah":[69,74],"idghaam_no_ghunnah":[83,88],"lam_shamsiyyah":[22,23],"madd_2":[12,13,28,29,31,32,90,91,147,148],"qalqalah":[151,153],"hamzat_wasl":[21,22,37,38,104,105]},
+"3": {"ikhfa":[16,20,105,108],"idghaam_ghunnah":[61,66,119,124,133,138,159,164,175,179],"idghaam_no_ghunnah":[36,41],"madd_2":[173,174],"madd_munfasil":[25,27],"silent":[11,13,172,173],"hamzat_wasl":[2,3]},
+"4": {"idghaam_ghunnah":[129,134],"madd_2":[36,37,65,66,80,81],"madd_munfasil":[24,26,39,41,47,49],"madd_muttasil":[118,120],"qalqalah":[113,115],"silent":[26,28],"hamzat_wasl":[8,9,57,58]},
+"5": {"idghaam_ghunnah":[82,86],"madd_2":[16,17],"madd_munfasil":[7,9],"silent":[9,11],"hamzat_wasl":[23,24,37,38]},
+"6": {"ghunnah":[73,76],"ikhfa":[7,10],"idghaam_no_ghunnah":[92,98],"lam_shamsiyyah":[33,34,46,47],"madd_2":[52,53,55,56,78,79],"hamzat_wasl":[15,16,32,33,45,46,61,62]},
+"7": {"ikhfa":[93,96,113,117],"lam_shamsiyyah":[25,26,45,46],"madd_2":[19,20,131,132],"madd_munfasil":[88,90],"silent":[8,10],"hamzat_wasl":[24,25,44,45,69,70]},
+"8": {"ghunnah":[51,54],"ikhfa":[26,29,98,102],"idghaam_ghunnah":[55,59,125,131],"lam_shamsiyyah":[83,84],"madd_2":[47,48,87,88],"madd_munfasil":[11,14],"hamzat_wasl":[82,83]},
+"9": {"ikhfa":[1,4],"madd_2":[38,39],"silent":[21,23,50,52],"hamzat_wasl":[29,30]},
+"10": {"ghunnah":[65,68],"ikhfa":[21,25,53,57,70,74,82,86],"idghaam_ghunnah":[47,53],"madd_2":[57,58,68,69,103,104],"madd_munfasil":[16,18],"madd_muttasil":[25,27],"qalqalah":[74,76,111,113],"hamzat_wasl":[10,11,94,95]},
+"11": {"ikhfa":[47,51],"lam_shamsiyyah":[19,20,60,61],"qalqalah":[37,39],"silent":[13,15],"hamzat_wasl":[18,19,59,60]},
+"12": {"ikhfa":[37,41],"iqlab":[28,32],"idghaam_ghunnah":[19,24,63,68],"idghaam_shafawi":[14,19],"silent":[46,48]},
+"13": {"ikhfa":[33,38],"idghaam_ghunnah":[42,48],"madd_munfasil":[6,8],"silent":[16,18,65,67]},
+"14": {"ikhfa":[60,65],"idghaam_ghunnah":[31,36,40,45],"madd_2":[36,37],"qalqalah":[7,9,46,48],"silent":[12,14,51,53],"hamzat_wasl":[15,16,45,46]},
+"15": {"ghunnah":[29,32],"idghaam_ghunnah":[96,100],"madd_2":[9,10],"madd_muttasil":[93,95],"hamzat_wasl":[35,36,45,46,60,61]},
+"16": {"idghaam_ghunnah":[68,74],"madd_2":[33,34],"madd_muttasil":[23,25]},
+"17": {"ikhfa":[42,46,72,75],"lam_shamsiyyah":[133,134],"madd_246":[139,140],"madd_muttasil":[102,104,108,110],"silent":[129,131],"hamzat_wasl":[50,51,132,133]},
+"18": {"ikhfa":[65,69],"iqlab":[34,36,175,180],"idghaam_ghunnah":[50,55,100,105],"lam_shamsiyyah":[150,151],"madd_2":[15,16,97,98],"madd_munfasil":[45,47],"madd_muttasil":[88,90,124,126],"qalqalah":[11,13],"silent":[6,8,146,148,167,169],"hamzat_wasl":[149,150]},
+"19": {"ikhfa":[96,99,117,122],"ikhfa_shafawi":[17,21],"idghaam_ghunnah":[62,67,76,81,83,87],"idghaam_shafawi":[91,96],"qalqalah":[4,6,106,108]},
+"20": {"ghunnah":[58,61],"ikhfa":[150,154],"lam_shamsiyyah":[81,82],"madd_munfasil":[4,6,53,55],"qalqalah":[21,23],"hamzat_wasl":[33,34,80,81,107,108]},
+"21": {"ikhfa":[55,58,137,140,162,167],"madd_munfasil":[50,52,132,134],"madd_muttasil":[36,38,78,80],"silent":[127,129],"hamzat_wasl":[8,9,71,72,115,116]},
+"22": {"idghaam_ghunnah":[91,97],"idghaam_no_ghunnah":[54,59],"madd_muttasil":[23,25],"qalqalah":[63,65,88,90],"hamzat_wasl":[16,17]},
+"23": {"ikhfa":[44,48,72,75],"idghaam_ghunnah":[67,72],"madd_2":[56,57],"madd_munfasil":[10,12],"madd_muttasil":[64,66],"silent":[31,33]},
+"24": {"ghunnah":[15,18],"idghaam_ghunnah":[37,42,50,55],"madd_2":[6,7],"hamzat_wasl":[10,11]},
+"25": {"ikhfa":[72,75],"lam_shamsiyyah":[20,21],"madd_2":[40,41],"madd_muttasil":[26,28,61,63],"hamzat_wasl":[19,20,33,34,54,55]},
+"26": {"lam_shamsiyyah":[32,33],"madd_2":[40,41,71,72],"hamzat_wasl":[21,22,66,67]},
+"27": {"lam_shamsiyyah":[18,19,82,83],"madd_2":[54,55],"hamzat_wasl":[17,18,65,66,81,82]},
+"28": {"madd_2":[2,3]},
+"29": {"ikhfa":[83,86],"lam_shamsiyyah":[25,26,65,66],"madd_2":[73,74,86,87],"madd_muttasil":[48,50],"qalqalah":[5,7],"hamzat_wasl":[24,25,64,65]},
+"30": {"ghunnah":[30,33],"lam_shamsiyyah":[9,10],"madd_2":[21,22,56,57],"silent":[51,53],"hamzat_wasl":[8,9,42,43,61,62]},
+"31": {"idghaam_ghunnah":[44,50,93,98],"madd_2":[6,7],"qalqalah":[58,60],"hamzat_wasl":[53,54]},
+"32": {"ikhfa":[83,87],"idghaam_ghunnah":[73,77],"madd_2":[77,78,89,90,111,112,134,135],"silent":[25,27],"hamzat_wasl":[8,9,53,54]},
+"33": {"madd_2":[40,41],"hamzat_wasl":[46,47]},
+"34": {"ghunnah":[52,55],"idghaam_ghunnah":[75,80,84,89],"madd_muttasil":[64,66],"silent":[60,62]},
+"35": {"madd_2":[34,35,69,70],"madd_munfasil":[56,58],"qalqalah":[6,8],"hamzat_wasl":[27,28]},
+"36": {"ghunnah":[76,79],"madd_2":[65,66,83,84],"madd_munfasil":[17,19],"qalqalah":[91,93],"silent":[54,56],"hamzat_wasl":[10,11,26,27,36,37]},
+"37": {"ghunnah":[18,21,79,82],"idghaam_ghunnah":[92,96],"idghaam_no_ghunnah":[13,18],"lam_shamsiyyah":[35,36,78,79,110,111],"madd_2":[54,55,70,71,114,115],"qalqalah":[50,52,102,104],"silent":[31,33],"hamzat_wasl":[34,35]},
+"38": {"iqlab":[50,55],"idghaam_ghunnah":[6,11],"lam_shamsiyyah":[34,35],"madd_2":[29,30,63,64],"silent":[18,20],"hamzat_wasl":[33,34]},
+"39": {"ikhfa":[6,11,43,48],"madd_2":[33,34],"qalqalah":[13,15],"hamzat_wasl":[24,25]},
+"40": {"lam_shamsiyyah":[64,65],"madd_munfasil":[42,44],"qalqalah":[6,8],"silent":[15,17,90,92,116,118],"hamzat_wasl":[24,25,36,37,63,64]},
+"41": {"idghaam_ghunnah":[19,23],"madd_2":[55,56],"hamzat_wasl":[60,61,75,76]},
+"42": {"ikhfa":[2,6,52,56],"madd_munfasil":[47,49],"hamzat_wasl":[110,111]},
+"43": {"ikhfa":[51,54],"madd_2":[29,30,34,35,41,42],"hamzat_wasl":[16,17]},
+"44": {"ghunnah":[16,19],"madd_2":[90,91],"hamzat_wasl":[81,82]},
+"45": {"ghunnah":[86,89],"ikhfa":[81,86],"lam_shamsiyyah":[41,42,101,102],"madd_2":[73,74],"madd_muttasil":[58,60],"hamzat_wasl":[40,41,100,101]},
+"46": {"ghunnah":[2,5],"idghaam_ghunnah":[33,38],"madd_2":[14,15],"qalqalah":[30,32]},
+"47": {"ghunnah":[51,54,79,82],"idghaam_ghunnah":[44,49,65,70],"lam_shamsiyyah":[50,51,78,79],"hamzat_wasl":[7,8,29,30,49,50,77,78]},
+"48": {"ikhfa":[75,78,106,110],"iqlab":[41,46],"lam_shamsiyyah":[26,27,90,91],"madd_2":[32,33,69,70],"madd_munfasil":[13,15],"madd_muttasil":[96,98,103,105],"hamzat_wasl":[7,8,25,26,89,90]},
+"49": {"ghunnah":[52,55],"idghaam_ghunnah":[25,30,33,38,76,81],"madd_2":[16,17,48,49,74,75],"madd_munfasil":[65,67],"qalqalah":[61,63]},
+"50": {"ghunnah":[70,73],"lam_shamsiyyah":[69,70],"madd_2":[18,19],"madd_munfasil":[55,58],"qalqalah":[6,8],"silent":[46,48],"hamzat_wasl":[68,69]},
+"51": {"idghaam_ghunnah":[44,49]},
+"52": {"ikhfa":[52,57],"ikhfa_shafawi":[38,42],"madd_2":[18,19,31,32,44,45],"qalqalah":[34,36],"hamzat_wasl":[13,14]},
+"53": {"ikhfa":[48,52],"idghaam_ghunnah":[56,60,80,84,110,115,120,126],"madd_2":[38,39,62,63],"qalqalah":[117,119],"hamzat_wasl":[7,8,22,23]},
+"54": {"ikhfa":[42,47],"idghaam_ghunnah":[62,67,72,77],"madd_2":[55,56],"madd_muttasil":[32,34],"hamzat_wasl":[7,8,27,28]},
+"55": {"ikhfa":[16,20,42,45],"madd_2":[103,104],"hamzat_wasl":[24,25,78,79]},
+"56": {"idghaam_ghunnah":[36,41],"madd_2":[17,18],"madd_munfasil":[4,6]},
+"57": {"ikhfa":[54,58],"idghaam_ghunnah":[65,69],"madd_2":[91,92],"madd_munfasil":[7,9],"madd_muttasil":[58,60],"qalqalah":[40,42]},
+"58": {"madd_2":[67,68,82,83,103,104],"hamzat_wasl":[18,19,27,28]},
+"59": {"ghunnah":[82,85],"ikhfa":[78,82],"lam_shamsiyyah":[16,17,113,114],"madd_2":[22,23,25,26,121,122,139,140],"hamzat_wasl":[15,16,31,32,86,87,102,103,112,113]},
+"60": {"lam_shamsiyyah":[34,35,62,63],"madd_2":[42,43,70,71],"silent":[29,31,52,54],"hamzat_wasl":[21,22,61,62]},
+"61": {"idghaam_ghunnah":[47,52,72,77,82,88],"lam_shamsiyyah":[30,31],"madd_2":[70,71],"madd_muttasil":[36,38],"hamzat_wasl":[10,11,29,30]},
+"62": {"ghunnah":[35,38],"idghaam_ghunnah":[71,75],"idghaam_no_ghunnah":[51,56],"lam_shamsiyyah":[34,35],"hamzat_wasl":[7,8,22,23,33,34]},
+"63": {"idghaam_ghunnah":[64,69],"lam_shamsiyyah":[11,12],"madd_2":[19,20,92,93,114,115],"silent":[107,109],"hamzat_wasl":[10,11,23,24,49,50,87,88]},
+"64": {"idghaam_ghunnah":[41,46],"madd_2":[50,51],"hamzat_wasl":[2,3]},
+"65": {"ghunnah":[42,45,59,62,67,70],"hamzat_wasl":[2,3,32,33]},
+"66": {"ghunnah":[2,5],"idghaam_ghunnah":[28,33],"madd_muttasil":[11,13]},
+"67": {"ikhfa":[21,24],"madd_2":[83,84],"madd_munfasil":[16,18],"qalqalah":[56,58],"silent":[27,29,44,46,63,65],"hamzat_wasl":[2,3]},
+"68": {"ghunnah":[76,79],"idghaam_ghunnah":[146,150],"lam_shamsiyyah":[75,76],"madd_2":[43,44,159,160],"qalqalah":[18,20,64,66],"hamzat_wasl":[2,3,31,32,74,75,84,85,100,101,117,118]},
+"69": {"madd_2":[4,5,40,41,62,63],"qalqalah":[54,56],"hamzat_wasl":[15,16,33,34]},
+"70": {"ikhfa":[9,13,41,46,50,55],"idghaam_ghunnah":[110,114],"idghaam_no_ghunnah":[134,140],"madd_2":[46,47,108,109],"madd_muttasil":[61,63],"silent":[57,59],"hamzat_wasl":[78,79,120,121]},
+"71": {"ghunnah":[34,37],"ikhfa":[4,8,27,32],"madd_2":[23,24,39,40],"hamzat_wasl":[55,56]},
+"72": {"lam_shamsiyyah":[29,30,57,58],"silent":[51,53,72,74],"hamzat_wasl":[2,3,28,29,56,57]},
+"73": {"ghunnah":[79,82],"idghaam_ghunnah":[81,86],"madd_2":[37,38],"silent":[26,28,64,66],"hamzat_wasl":[2,3]},
+"74": {"idghaam_ghunnah":[93,97],"madd_2":[54,55,71,72],"qalqalah":[34,36,98,100],"hamzat_wasl":[2,3,97,98]},
+"75": {"idghaam_ghunnah":[81,85],"madd_2":[89,90],"madd_muttasil":[6,8],"qalqalah":[15,17],"silent":[2,4,49,51],"hamzat_wasl":[24,25]},
+"76": {"idghaam_ghunnah":[37,42],"madd_2":[2,3]},
+"77": {"madd_muttasil":[46,48],"qalqalah":[59,61,67,69],"silent":[17,19]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/26.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/26.json
index 56e3029..7b1f0c7 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/26.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/26.json
@@ -1,229 +1,229 @@
{
-"1": {"madd-lazim":[40,42,42,44]},
-"2": {"madd":[12,13,23,24,34,35],"wasl":[16,17,27,28]},
-"3": {"idgham":[16,21],"madd":[12,13,54,55],"silent":[43,45]},
-"4": {"ghunnah":[56,60],"idgham":[2,7,30,35,39,40],"madd":[45,47,74,75,90,91,95,96],"wasl":[38,39]},
-"5": {"ghunnah":[20,24],"idgham":[15,20,27,32,36,37],"madd":[44,45,88,89],"silent":[70,72],"wasl":[35,36]},
-"6": {"ghunnah":[37,39],"madd":[40,42,64,65,78,79],"qalqalah":[4,6],"silent":[15,17,44,46,57,59]},
-"7": {"ghunnah":[42,44,60,64,73,77],"madd":[79,80],"silent":[15,17],"wasl":[24,25]},
-"8": {"ghunnah":[2,5],"idgham":[26,30,50,55],"madd":[12,13,61,62]},
-"9": {"ghunnah":[4,7],"idgham":[35,36],"madd":[41,42],"wasl":[23,24,34,35]},
-"10": {"idgham":[54,55],"madd":[28,31,58,59,63,64],"wasl":[37,38,43,44,53,54]},
-"11": {"madd":[31,32]},
-"12": {"ghunnah":[14,17],"idgham":[30,34],"madd":[17,19,41,42]},
-"13": {"ghunnah":[26,29],"madd":[63,64,66,67],"qalqalah":[12,14]},
-"14": {"ghunnah":[20,22,22,26],"idgham":[36,40],"madd":[46,47],"qalqalah":[40,42]},
-"15": {"ghunnah":[42,45],"idgham":[53,58],"madd":[32,33,37,39,66,67],"wasl":[15,16]},
-"16": {"ghunnah":[33,36],"madd":[28,30,57,58,62,63],"wasl":[52,53]},
-"17": {"madd":[26,28,35,37,39,40]},
-"18": {"idgham":[36,41],"madd":[75,76]},
-"19": {"ghunnah":[43,46],"madd":[57,58,62,63],"wasl":[22,23,52,53]},
-"20": {"idgham":[22,27,40,41],"madd":[16,18,49,50],"madd-lazim":[44,46],"wasl":[39,40]},
-"21": {"ghunnah":[13,16,21,24],"idgham":[62,67],"madd":[93,94],"wasl":[82,83]},
-"22": {"ghunnah":[16,20,22,25],"idgham":[47,48],"madd":[56,58,65,67,69,70]},
-"23": {"madd":[34,35,39,40],"wasl":[29,30]},
-"24": {"ghunnah":[59,63,63,66],"idgham":[13,14,66,71],"madd":[19,20,22,23,54,56,76,77],"wasl":[12,13,28,29]},
-"25": {"madd":[21,23,40,41]},
-"26": {"madd":[29,31,48,49],"wasl":[38,39]},
-"27": {"ghunnah":[8,11],"madd":[30,32,61,62],"qalqalah":[57,59],"wasl":[24,25]},
-"28": {"ghunnah":[59,63,63,66],"madd":[54,56,77,78],"wasl":[12,13,26,27]},
-"29": {"ghunnah":[51,54],"madd":[28,29,74,75],"qalqalah":[45,47],"wasl":[13,14,62,63]},
-"30": {"idgham":[31,36],"madd":[38,39]},
-"31": {"ghunnah":[22,26,26,29],"idgham":[36,37],"madd":[17,19,40,41,45,46],"wasl":[35,36]},
-"32": {"idgham":[40,45],"madd":[47,48]},
-"33": {"ghunnah":[44,47],"idgham":[43,44],"madd":[15,16,36,38,47,48,52,53]},
-"34": {"ghunnah":[30,33],"madd":[25,27,36,37,45,46,55,56]},
-"35": {"ghunnah":[38,42],"idgham":[10,14,22,27],"madd":[50,51,69,70]},
-"36": {"madd":[5,7,50,52,59,60,64,65],"qalqalah":[32,34],"silent":[7,9],"wasl":[31,32,43,44]},
-"37": {"madd":[31,32]},
-"38": {"idgham":[10,11,37,42],"madd":[28,29,46,47],"wasl":[9,10]},
-"39": {"ghunnah":[11,14,25,28],"idgham":[10,11,28,33],"madd":[41,42],"qalqalah":[33,35]},
-"40": {"ghunnah":[35,39],"idgham":[22,23],"madd":[56,57,61,62],"silent":[43,45],"wasl":[21,22,51,52]},
-"41": {"ghunnah":[4,7,54,57,76,80,80,83],"idgham":[17,18],"madd":[11,13,97,98,102,103],"qalqalah":[68,70],"silent":[34,36],"wasl":[16,17,92,93]},
-"42": {"ghunnah":[17,20],"idgham":[28,34],"madd":[51,52],"wasl":[39,40]},
-"43": {"ghunnah":[39,42],"idgham":[10,15,42,47],"madd":[18,21,34,36,51,52],"silent":[29,31]},
-"44": {"ghunnah":[73,76],"madd":[92,93,97,98],"silent":[10,12,47,49],"wasl":[87,88]},
-"45": {"madd":[61,62]},
-"46": {"idgham":[12,13],"madd":[25,26,30,31],"wasl":[11,12]},
-"47": {"ghunnah":[15,18],"madd":[5,7,33,34,38,39],"silent":[7,9],"wasl":[28,29]},
-"48": {"madd":[18,19,21,22]},
-"49": {"ghunnah":[11,14,52,55,137,140,195,198],"idgham":[94,95,166,171,180,184],"madd":[21,22,57,58,178,179,211,212],"qalqalah":[25,27,205,207],"wasl":[73,74,93,94]},
-"50": {"ghunnah":[22,25,46,49],"madd":[25,27,53,54],"silent":[6,8]},
-"51": {"ghunnah":[2,5,59,63,63,66],"idgham":[18,22],"madd":[48,49,51,52,54,56,66,68,88,89],"qalqalah":[9,11],"wasl":[77,78]},
-"52": {"ghunnah":[57,60],"idgham":[62,67],"madd":[12,14,27,30,52,54,74,75]},
-"53": {"madd":[33,35,42,43,47,48],"wasl":[26,27]},
-"54": {"ghunnah":[2,5,30,34],"madd":[8,10,14,16,39,40]},
-"55": {"ghunnah":[4,7],"madd":[22,24,28,29]},
-"56": {"ghunnah":[4,7],"madd":[21,22,26,27]},
-"57": {"ghunnah":[20,24,24,27],"idgham":[15,20,29,33],"madd":[12,13,27,28,37,38],"qalqalah":[8,10]},
-"58": {"ghunnah":[18,22],"idgham":[8,12],"madd":[24,25]},
-"59": {"madd":[4,5,22,23,31,33,40,42,44,45]},
-"60": {"idgham":[13,18],"madd":[24,25]},
-"61": {"ghunnah":[4,7,59,62],"madd":[13,15,44,45,53,56,74,75],"qalqalah":[68,70],"wasl":[19,20]},
-"62": {"ghunnah":[16,19],"madd":[11,13,42,43]},
-"63": {"ghunnah":[67,70,94,98],"idgham":[99,100],"madd":[12,14,27,30,115,116],"wasl":[36,37,54,55,66,67,98,99,108,109]},
-"64": {"ghunnah":[16,19],"madd":[30,31],"wasl":[20,21]},
-"65": {"ghunnah":[4,7],"idgham":[25,30],"madd":[34,36,45,46],"qalqalah":[39,41]},
-"66": {"ghunnah":[2,5],"madd":[28,29],"qalqalah":[12,14],"wasl":[18,19]},
-"67": {"ghunnah":[2,5],"idgham":[26,30,50,55],"madd":[12,13,61,62]},
-"68": {"ghunnah":[4,7],"idgham":[35,36],"madd":[41,42],"wasl":[23,24,34,35]},
-"69": {"madd":[32,33,35,36],"qalqalah":[28,30],"wasl":[2,3]},
-"70": {"madd":[31,32,45,46]},
-"71": {"ghunnah":[26,31],"madd":[47,48,52,53],"silent":[6,8]},
-"72": {"madd":[38,39],"qalqalah":[34,36]},
-"73": {"ghunnah":[7,10],"madd":[32,33]},
-"74": {"madd":[22,24,30,32,42,43,56,57],"qalqalah":[18,20],"silent":[6,8]},
-"75": {"ghunnah":[27,30],"idgham":[18,23],"madd":[41,42]},
-"76": {"ghunnah":[2,5],"madd":[15,17,35,36],"qalqalah":[29,31],"wasl":[24,25]},
-"77": {"ghunnah":[4,7],"idgham":[18,23],"madd":[23,25,44,45,49,50],"wasl":[39,40]},
-"78": {"madd":[31,32]},
-"79": {"madd":[35,36],"qalqalah":[17,19],"wasl":[2,3]},
-"80": {"madd":[30,31]},
-"81": {"ghunnah":[23,26],"madd":[33,34],"wasl":[2,3]},
-"82": {"idgham":[22,26,58,59],"madd":[8,10,41,43,62,63],"qalqalah":[13,15],"wasl":[2,3,57,58]},
-"83": {"idgham":[20,25,40,41],"madd":[44,45,49,50],"qalqalah":[8,10,31,33],"wasl":[39,40]},
-"84": {"ghunnah":[27,31],"madd":[43,44],"qalqalah":[3,5,24,26],"wasl":[2,3,33,34]},
-"85": {"ghunnah":[28,31,36,39],"idgham":[15,19,35,36],"madd":[41,42],"qalqalah":[3,5],"wasl":[2,3,34,35]},
-"86": {"ghunnah":[21,24],"idgham":[40,41],"madd":[16,18,26,27,49,50],"madd-lazim":[44,46],"wasl":[2,3,39,40]},
-"87": {"madd":[31,32],"qalqalah":[25,27]},
-"88": {"ghunnah":[13,16],"idgham":[23,27],"madd":[35,36]},
-"89": {"ghunnah":[33,37],"madd":[39,40],"wasl":[18,19]},
-"90": {"ghunnah":[18,21],"madd":[35,36],"wasl":[13,14]},
-"91": {"madd":[32,33],"wasl":[12,13]},
-"92": {"ghunnah":[28,31],"madd":[42,43]},
-"93": {"ghunnah":[2,6,25,28,45,48],"madd":[52,53],"wasl":[10,11]},
-"94": {"madd":[36,37],"qalqalah":[4,6],"silent":[11,13],"wasl":[28,29]},
-"95": {"madd":[28,29],"qalqalah":[12,14,22,24]},
-"96": {"madd":[33,34],"silent":[6,8]},
-"97": {"ghunnah":[12,16,16,19],"idgham":[33,38],"madd":[31,32,40,41],"wasl":[2,3]},
-"98": {"ghunnah":[15,19],"madd":[30,31,35,36],"wasl":[25,26]},
-"99": {"madd":[4,6,16,18,37,38],"qalqalah":[31,33],"wasl":[26,27]},
-"100": {"ghunnah":[14,18],"madd":[18,19,23,24]},
-"101": {"madd":[18,19]},
-"102": {"ghunnah":[9,12,25,29],"madd":[53,54],"wasl":[42,43]},
-"103": {"ghunnah":[2,5],"idgham":[26,30,50,55],"madd":[12,13,61,62]},
-"104": {"ghunnah":[4,7],"idgham":[35,36],"madd":[41,42],"wasl":[23,24,34,35]},
-"105": {"madd":[34,35],"wasl":[23,24]},
-"106": {"madd":[47,48]},
-"107": {"ghunnah":[2,5],"madd":[26,27]},
-"108": {"madd":[29,30],"silent":[9,11],"wasl":[2,3,12,13]},
-"109": {"madd":[4,6,81,82,86,87],"qalqalah":[37,39,49,51],"wasl":[76,77]},
-"110": {"madd":[29,30],"silent":[9,11],"wasl":[2,3,12,13]},
-"111": {"madd":[5,7,50,51],"silent":[7,9],"wasl":[28,29,39,40]},
-"112": {"madd":[43,44],"silent":[32,34]},
-"113": {"madd":[51,52]},
-"114": {"madd":[4,6,35,36],"wasl":[24,25]},
-"115": {"idgham":[25,30],"madd":[32,33]},
-"116": {"ghunnah":[23,26,47,50],"idgham":[13,18],"madd":[31,32,68,69],"silent":[6,8],"wasl":[56,57]},
-"117": {"ghunnah":[14,17],"madd":[33,34]},
-"118": {"idgham":[36,41,54,59],"madd":[80,81],"wasl":[2,3,69,70]},
-"119": {"ghunnah":[4,7],"idgham":[19,24],"madd":[11,12,28,29,53,54],"wasl":[34,35,44,45]},
-"120": {"ghunnah":[2,5],"madd":[33,34],"qalqalah":[12,14],"wasl":[25,26]},
-"121": {"ghunnah":[2,5],"idgham":[26,30,50,55],"madd":[12,13,61,62]},
-"122": {"ghunnah":[4,7],"idgham":[35,36],"madd":[41,42],"wasl":[23,24,34,35]},
-"123": {"madd":[27,28],"wasl":[16,17]},
-"124": {"madd":[47,48]},
-"125": {"ghunnah":[2,5],"madd":[26,27]},
-"126": {"madd":[29,30],"silent":[9,11],"wasl":[2,3,12,13]},
-"127": {"madd":[4,6,81,82,86,87],"qalqalah":[37,39,49,51],"wasl":[76,77]},
-"128": {"ghunnah":[32,36],"madd":[42,43],"qalqalah":[4,6]},
-"129": {"madd":[45,46]},
-"130": {"ghunnah":[16,20],"madd":[37,38]},
-"131": {"madd":[29,30],"silent":[9,11],"wasl":[2,3,12,13]},
-"132": {"ghunnah":[30,34],"madd":[18,20,46,47],"silent":[9,11],"wasl":[2,3,12,13]},
-"133": {"ghunnah":[9,13],"idgham":[21,25],"madd":[19,20,29,30]},
-"134": {"ghunnah":[4,7],"idgham":[9,13],"madd":[7,8,17,18]},
-"135": {"ghunnah":[2,5],"madd":[5,7,46,47]},
-"136": {"idgham":[54,59],"madd":[13,15,26,28,67,68,72,73],"silent":[6,8],"wasl":[62,63]},
-"137": {"madd":[7,8,10,12,37,38],"wasl":[27,28]},
-"138": {"madd":[24,25]},
-"139": {"ghunnah":[33,36],"idgham":[57,61,81,86],"madd":[25,26,43,44,92,93]},
-"140": {"ghunnah":[4,7],"idgham":[35,36],"madd":[41,42],"wasl":[23,24,34,35]},
-"141": {"madd":[29,30],"wasl":[18,19]},
-"142": {"madd":[30,31,49,50]},
-"143": {"ghunnah":[2,5],"madd":[26,27]},
-"144": {"madd":[29,30],"silent":[9,11],"wasl":[2,3,12,13]},
-"145": {"madd":[4,6,81,82,86,87],"qalqalah":[37,39,49,51],"wasl":[76,77]},
-"146": {"madd":[24,25,29,31,39,40]},
-"147": {"ghunnah":[6,9],"idgham":[11,15],"madd":[9,10,19,20]},
-"148": {"ghunnah":[17,21],"idgham":[8,12],"madd":[33,34]},
-"149": {"ghunnah":[36,41],"madd":[41,42,46,47],"wasl":[19,20]},
-"150": {"madd":[29,30],"silent":[9,11],"wasl":[2,3,12,13]},
-"151": {"madd":[13,15,36,37],"silent":[15,17],"wasl":[25,26]},
-"152": {"madd":[50,51],"wasl":[26,27]},
-"153": {"ghunnah":[12,15,22,25],"madd":[5,7,17,19,43,44],"silent":[7,9],"wasl":[31,32]},
-"154": {"ghunnah":[7,10,56,60,60,63],"idgham":[23,28,70,71],"madd":[2,4,74,75,79,80],"wasl":[69,70]},
-"155": {"idgham":[21,26,35,39,58,63],"madd":[8,9,13,14,67,68]},
-"156": {"ghunnah":[25,29],"madd":[22,24,61,62]},
-"157": {"madd":[29,30,34,35],"silent":[24,26]},
-"158": {"ghunnah":[26,29],"idgham":[50,54,74,79],"madd":[36,37,85,86],"wasl":[13,14]},
-"159": {"ghunnah":[4,7],"idgham":[35,36],"madd":[41,42],"wasl":[23,24,34,35]},
-"160": {"madd":[34,35],"wasl":[23,24]},
-"161": {"madd":[47,48]},
-"162": {"ghunnah":[2,5],"madd":[26,27]},
-"163": {"madd":[29,30],"silent":[9,11],"wasl":[2,3,12,13]},
-"164": {"madd":[4,6,81,82,86,87],"qalqalah":[37,39,49,51],"wasl":[76,77]},
-"165": {"idgham":[13,14],"madd":[35,36,40,41],"wasl":[12,13,30,31]},
-"166": {"ghunnah":[56,60,65,68],"idgham":[37,42],"madd":[51,52,83,84]},
-"167": {"ghunnah":[23,26,47,50],"idgham":[13,18],"madd":[31,32,67,68],"silent":[6,8],"wasl":[56,57]},
-"168": {"ghunnah":[8,11],"idgham":[23,28],"madd":[39,40],"wasl":[31,32]},
-"169": {"ghunnah":[27,30],"madd":[40,41]},
-"170": {"madd":[11,12,25,27,36,37],"qalqalah":[30,32]},
-"171": {"ghunnah":[13,18],"madd":[25,26,30,31],"wasl":[20,21]},
-"172": {"ghunnah":[2,5,8,11],"madd":[27,28],"wasl":[17,18]},
-"173": {"ghunnah":[30,35,54,57],"idgham":[22,27],"madd":[37,39,59,60],"wasl":[49,50]},
-"174": {"ghunnah":[2,5],"idgham":[26,30,50,55],"madd":[12,13,61,62]},
-"175": {"ghunnah":[4,7],"idgham":[35,36],"madd":[41,42],"wasl":[23,24,34,35]},
-"176": {"madd":[14,15,41,42],"wasl":[30,31]},
-"177": {"madd":[40,41]},
-"178": {"ghunnah":[2,5],"madd":[26,27]},
-"179": {"madd":[29,30],"silent":[9,11],"wasl":[2,3,12,13]},
-"180": {"madd":[4,6,81,82,86,87],"qalqalah":[37,39,49,51],"wasl":[76,77]},
-"181": {"madd":[53,54],"silent":[7,9,34,36],"wasl":[10,11,42,43]},
-"182": {"madd":[36,37],"silent":[7,9],"wasl":[12,13,25,26]},
-"183": {"ghunnah":[20,23],"idgham":[19,20],"madd":[33,35,81,82],"qalqalah":[8,10],"silent":[15,17,56,58],"wasl":[18,19,63,64]},
-"184": {"madd":[56,57],"silent":[9,11],"wasl":[2,3,12,13,33,34,46,47]},
-"185": {"ghunnah":[12,15,22,25],"madd":[5,7,17,19,43,44],"silent":[7,9],"wasl":[31,32]},
-"186": {"ghunnah":[9,12,49,52],"idgham":[25,30,42,47],"madd":[4,6,67,68,72,73],"wasl":[62,63]},
-"187": {"ghunnah":[49,53,53,56],"idgham":[26,32,36,37,63,64],"madd":[42,44,67,68,72,73],"qalqalah":[8,10],"wasl":[35,36,62,63]},
-"188": {"madd":[11,13,37,38]},
-"189": {"ghunnah":[54,57],"idgham":[42,43],"madd":[59,60,86,87],"wasl":[41,42]},
-"190": {"ghunnah":[2,5],"idgham":[26,30,50,55],"madd":[12,13,61,62]},
-"191": {"ghunnah":[4,7],"idgham":[35,36],"madd":[41,42],"wasl":[23,24,34,35]},
-"192": {"ghunnah":[4,7,15,18],"madd":[9,10,33,34,38,39],"wasl":[28,29]},
-"193": {"idgham":[13,14],"madd":[28,29],"wasl":[12,13,21,22]},
-"194": {"ghunnah":[36,39],"madd":[41,42],"wasl":[31,32]},
-"195": {"idgham":[18,23],"madd":[25,26]},
-"196": {"ghunnah":[4,7],"madd":[9,10,34,35],"wasl":[24,25]},
-"197": {"idgham":[13,18,33,37],"madd":[45,46,53,55,64,66,73,75,77,78],"silent":[57,59]},
-"198": {"madd":[16,17,45,46],"wasl":[34,35]},
-"199": {"idgham":[20,25],"madd":[10,11,40,41,50,51],"silent":[33,35]},
-"200": {"madd":[4,5,18,19,45,46],"qalqalah":[39,41],"wasl":[34,35]},
-"201": {"madd":[20,21,57,58],"silent":[36,38],"wasl":[39,40,50,51]},
-"202": {"ghunnah":[12,16],"idgham":[21,25],"madd":[42,43]},
-"203": {"ghunnah":[27,30],"madd":[32,33],"silent":[10,12]},
-"204": {"madd":[29,30]},
-"205": {"idgham":[15,20],"madd":[27,28,37,38]},
-"206": {"ghunnah":[2,5],"idgham":[14,19],"madd":[8,10,37,38],"silent":[27,29]},
-"207": {"idgham":[20,25],"madd":[2,4,45,46],"silent":[33,35]},
-"208": {"ghunnah":[21,25,47,50],"madd":[4,6,52,53]},
-"209": {"ghunnah":[17,20],"madd":[24,25,29,30]},
-"210": {"idgham":[24,25],"madd":[30,31,33,34],"wasl":[23,24]},
-"211": {"ghunnah":[9,11],"madd":[40,41]},
-"212": {"ghunnah":[2,5],"idgham":[16,17],"madd":[36,37],"wasl":[15,16]},
-"213": {"madd":[30,31,70,71],"qalqalah":[8,10],"wasl":[18,19,58,59]},
-"214": {"ghunnah":[4,7],"madd":[33,34],"qalqalah":[27,29],"wasl":[22,23]},
-"215": {"madd":[54,55],"wasl":[2,3,27,28,43,44]},
-"216": {"ghunnah":[25,28,42,45],"idgham":[37,42],"madd":[34,36,55,56]},
-"217": {"idgham":[30,31],"madd":[36,37],"wasl":[18,19,29,30]},
-"218": {"madd":[13,14,27,28]},
-"219": {"idgham":[19,20],"madd":[23,24,28,29],"wasl":[18,19]},
-"220": {"ghunnah":[2,5],"idgham":[15,16],"madd":[7,8,32,33],"wasl":[14,15,25,26]},
-"221": {"ghunnah":[28,32],"idgham":[41,42],"madd":[47,48,50,51],"wasl":[40,41]},
-"222": {"madd":[36,37]},
-"223": {"idgham":[11,12],"madd":[37,38,42,43],"wasl":[10,11]},
-"224": {"idgham":[3,4],"madd":[11,13,38,39],"wasl":[2,3,30,31]},
-"225": {"ghunnah":[14,17],"idgham":[36,40],"madd":[45,46]},
-"226": {"ghunnah":[4,7],"madd":[39,40]},
-"227": {"ghunnah":[86,89,100,103,165,168,175,178],"idgham":[41,42,80,85,171,175],"madd":[45,46,50,51,152,154,182,183],"silent":[25,27,37,39,63,65,94,96,120,122,154,156],"wasl":[7,8,40,41,66,67,85,86,136,137]}
+"1": {"madd_6":[40,42,42,44]},
+"2": {"madd_2":[12,13,23,24],"madd_246":[34,35],"hamzat_wasl":[16,17,27,28]},
+"3": {"idghaam_ghunnah":[16,21],"madd_2":[12,13],"madd_246":[54,55],"silent":[43,45]},
+"4": {"ikhfa":[56,60],"idghaam_ghunnah":[2,7],"idghaam_shafawi":[30,35],"lam_shamsiyyah":[39,40],"madd_2":[74,75,90,91],"madd_246":[95,96],"madd_muttasil":[45,47],"hamzat_wasl":[38,39]},
+"5": {"ikhfa":[20,24],"idghaam_ghunnah":[27,32],"idghaam_shafawi":[15,20],"lam_shamsiyyah":[36,37],"madd_2":[44,45],"madd_246":[88,89],"silent":[70,72],"hamzat_wasl":[35,36]},
+"6": {"iqlab":[37,39],"madd_2":[64,65],"madd_246":[78,79],"madd_muttasil":[40,42],"qalqalah":[4,6],"silent":[15,17,44,46,57,59]},
+"7": {"ikhfa":[60,64,73,77],"iqlab":[42,44],"madd_246":[79,80],"silent":[15,17],"hamzat_wasl":[24,25]},
+"8": {"ghunnah":[2,5],"idghaam_ghunnah":[26,30],"idghaam_shafawi":[50,55],"madd_2":[12,13],"madd_246":[61,62]},
+"9": {"ghunnah":[4,7],"lam_shamsiyyah":[35,36],"madd_246":[41,42],"hamzat_wasl":[23,24,34,35]},
+"10": {"lam_shamsiyyah":[54,55],"madd_2":[58,59],"madd_246":[63,64],"madd_munfasil":[28,31],"hamzat_wasl":[37,38,43,44,53,54]},
+"11": {"madd_246":[31,32]},
+"12": {"ghunnah":[14,17],"idghaam_ghunnah":[30,34],"madd_246":[41,42],"madd_munfasil":[17,19]},
+"13": {"ikhfa":[26,29],"madd_2":[63,64],"madd_246":[66,67],"qalqalah":[12,14]},
+"14": {"ikhfa":[22,26],"iqlab":[20,22],"idghaam_ghunnah":[36,40],"madd_246":[46,47],"qalqalah":[40,42]},
+"15": {"ghunnah":[42,45],"idghaam_shafawi":[53,58],"madd_2":[32,33],"madd_246":[66,67],"madd_munfasil":[37,39],"hamzat_wasl":[15,16]},
+"16": {"ghunnah":[33,36],"madd_2":[57,58],"madd_246":[62,63],"madd_munfasil":[28,30],"hamzat_wasl":[52,53]},
+"17": {"madd_246":[39,40],"madd_munfasil":[26,28],"madd_muttasil":[35,37]},
+"18": {"idghaam_ghunnah":[36,41],"madd_246":[75,76]},
+"19": {"ikhfa":[43,46],"madd_2":[57,58],"madd_246":[62,63],"hamzat_wasl":[22,23,52,53]},
+"20": {"idghaam_ghunnah":[22,27],"lam_shamsiyyah":[40,41],"madd_246":[49,50],"madd_munfasil":[16,18],"madd_6":[44,46],"hamzat_wasl":[39,40]},
+"21": {"ghunnah":[21,24],"ikhfa":[13,16],"idghaam_ghunnah":[62,67],"madd_246":[93,94],"hamzat_wasl":[82,83]},
+"22": {"ghunnah":[22,25],"ikhfa":[16,20],"idghaam_mutajanisayn":[47,48],"madd_246":[69,70],"madd_munfasil":[56,58],"madd_muttasil":[65,67]},
+"23": {"madd_2":[34,35],"madd_246":[39,40],"hamzat_wasl":[29,30]},
+"24": {"ikhfa":[59,63,63,66],"idghaam_shafawi":[66,71],"lam_shamsiyyah":[13,14],"madd_2":[19,20,22,23],"madd_246":[76,77],"madd_munfasil":[54,56],"hamzat_wasl":[12,13,28,29]},
+"25": {"madd_246":[40,41],"madd_munfasil":[21,23]},
+"26": {"madd_246":[48,49],"madd_muttasil":[29,31],"hamzat_wasl":[38,39]},
+"27": {"ghunnah":[8,11],"madd_246":[61,62],"madd_munfasil":[30,32],"qalqalah":[57,59],"hamzat_wasl":[24,25]},
+"28": {"ikhfa":[59,63,63,66],"madd_246":[77,78],"madd_munfasil":[54,56],"hamzat_wasl":[12,13,26,27]},
+"29": {"ghunnah":[51,54],"madd_2":[28,29],"madd_246":[74,75],"qalqalah":[45,47],"hamzat_wasl":[13,14,62,63]},
+"30": {"idghaam_ghunnah":[31,36],"madd_246":[38,39]},
+"31": {"ikhfa":[22,26,26,29],"lam_shamsiyyah":[36,37],"madd_2":[40,41],"madd_246":[45,46],"madd_munfasil":[17,19],"hamzat_wasl":[35,36]},
+"32": {"idghaam_ghunnah":[40,45],"madd_246":[47,48]},
+"33": {"ghunnah":[44,47],"lam_shamsiyyah":[43,44],"madd_2":[15,16,47,48],"madd_246":[52,53],"madd_muttasil":[36,38]},
+"34": {"ghunnah":[30,33],"madd_2":[36,37,45,46],"madd_246":[55,56],"madd_munfasil":[25,27]},
+"35": {"ikhfa_shafawi":[38,42],"idghaam_ghunnah":[10,14],"idghaam_shafawi":[22,27],"madd_2":[50,51],"madd_246":[69,70]},
+"36": {"madd_2":[59,60],"madd_246":[64,65],"madd_munfasil":[5,7],"madd_muttasil":[50,52],"qalqalah":[32,34],"silent":[7,9],"hamzat_wasl":[31,32,43,44]},
+"37": {"madd_246":[31,32]},
+"38": {"idghaam_ghunnah":[37,42],"lam_shamsiyyah":[10,11],"madd_2":[28,29],"madd_246":[46,47],"hamzat_wasl":[9,10]},
+"39": {"ghunnah":[11,14],"ikhfa":[25,28],"idghaam_shafawi":[28,33],"lam_shamsiyyah":[10,11],"madd_246":[41,42],"qalqalah":[33,35]},
+"40": {"ikhfa":[35,39],"lam_shamsiyyah":[22,23],"madd_2":[56,57],"madd_246":[61,62],"silent":[43,45],"hamzat_wasl":[21,22,51,52]},
+"41": {"ghunnah":[4,7,54,57,80,83],"ikhfa":[76,80],"lam_shamsiyyah":[17,18],"madd_2":[97,98],"madd_246":[102,103],"madd_muttasil":[11,13],"qalqalah":[68,70],"silent":[34,36],"hamzat_wasl":[16,17,92,93]},
+"42": {"ghunnah":[17,20],"idghaam_no_ghunnah":[28,34],"madd_246":[51,52],"hamzat_wasl":[39,40]},
+"43": {"ikhfa":[39,42],"idghaam_shafawi":[10,15,42,47],"madd_246":[51,52],"madd_munfasil":[18,21,34,36],"silent":[29,31]},
+"44": {"ghunnah":[73,76],"madd_2":[92,93],"madd_246":[97,98],"silent":[10,12,47,49],"hamzat_wasl":[87,88]},
+"45": {"madd_246":[61,62]},
+"46": {"lam_shamsiyyah":[12,13],"madd_2":[25,26],"madd_246":[30,31],"hamzat_wasl":[11,12]},
+"47": {"ghunnah":[15,18],"madd_2":[33,34],"madd_246":[38,39],"madd_munfasil":[5,7],"silent":[7,9],"hamzat_wasl":[28,29]},
+"48": {"madd_2":[18,19],"madd_246":[21,22]},
+"49": {"ghunnah":[52,55,137,140,195,198],"ikhfa":[11,14],"idghaam_ghunnah":[180,184],"idghaam_shafawi":[166,171],"lam_shamsiyyah":[94,95],"madd_2":[21,22,57,58,178,179],"madd_246":[211,212],"qalqalah":[25,27,205,207],"hamzat_wasl":[73,74,93,94]},
+"50": {"ghunnah":[22,25],"ikhfa":[46,49],"madd_246":[53,54],"madd_munfasil":[25,27],"silent":[6,8]},
+"51": {"ghunnah":[2,5,63,66],"ikhfa":[59,63],"idghaam_ghunnah":[18,22],"madd_2":[48,49,51,52],"madd_246":[88,89],"madd_munfasil":[54,56,66,68],"qalqalah":[9,11],"hamzat_wasl":[77,78]},
+"52": {"ghunnah":[57,60],"idghaam_shafawi":[62,67],"madd_246":[74,75],"madd_munfasil":[12,14,27,30,52,54]},
+"53": {"madd_2":[42,43],"madd_246":[47,48],"madd_muttasil":[33,35],"hamzat_wasl":[26,27]},
+"54": {"ghunnah":[2,5],"ikhfa":[30,34],"madd_246":[39,40],"madd_muttasil":[8,10,14,16]},
+"55": {"ghunnah":[4,7],"madd_246":[28,29],"madd_muttasil":[22,24]},
+"56": {"ghunnah":[4,7],"madd_2":[21,22],"madd_246":[26,27]},
+"57": {"ghunnah":[24,27],"ikhfa":[20,24],"idghaam_ghunnah":[29,33],"idghaam_shafawi":[15,20],"madd_2":[12,13,27,28],"madd_246":[37,38],"qalqalah":[8,10]},
+"58": {"ikhfa":[18,22],"idghaam_ghunnah":[8,12],"madd_246":[24,25]},
+"59": {"madd_2":[4,5,22,23],"madd_246":[44,45],"madd_munfasil":[31,33],"madd_muttasil":[40,42]},
+"60": {"idghaam_shafawi":[13,18],"madd_246":[24,25]},
+"61": {"ghunnah":[4,7,59,62],"madd_2":[44,45],"madd_246":[74,75],"madd_munfasil":[53,56],"madd_muttasil":[13,15],"qalqalah":[68,70],"hamzat_wasl":[19,20]},
+"62": {"ghunnah":[16,19],"madd_246":[42,43],"madd_munfasil":[11,13]},
+"63": {"ikhfa":[67,70,94,98],"lam_shamsiyyah":[99,100],"madd_246":[115,116],"madd_munfasil":[12,14,27,30],"hamzat_wasl":[36,37,54,55,66,67,98,99,108,109]},
+"64": {"ghunnah":[16,19],"madd_246":[30,31],"hamzat_wasl":[20,21]},
+"65": {"ikhfa":[4,7],"idghaam_ghunnah":[25,30],"madd_246":[45,46],"madd_munfasil":[34,36],"qalqalah":[39,41]},
+"66": {"ghunnah":[2,5],"madd_246":[28,29],"qalqalah":[12,14],"hamzat_wasl":[18,19]},
+"67": {"ghunnah":[2,5],"idghaam_ghunnah":[26,30],"idghaam_shafawi":[50,55],"madd_2":[12,13],"madd_246":[61,62]},
+"68": {"ghunnah":[4,7],"lam_shamsiyyah":[35,36],"madd_246":[41,42],"hamzat_wasl":[23,24,34,35]},
+"69": {"madd_2":[32,33],"madd_246":[35,36],"qalqalah":[28,30],"hamzat_wasl":[2,3]},
+"70": {"madd_2":[31,32],"madd_246":[45,46]},
+"71": {"ikhfa":[26,31],"madd_2":[47,48],"madd_246":[52,53],"silent":[6,8]},
+"72": {"madd_246":[38,39],"qalqalah":[34,36]},
+"73": {"ikhfa":[7,10],"madd_246":[32,33]},
+"74": {"madd_2":[42,43],"madd_246":[56,57],"madd_munfasil":[22,24],"madd_muttasil":[30,32],"qalqalah":[18,20],"silent":[6,8]},
+"75": {"ikhfa":[27,30],"idghaam_shafawi":[18,23],"madd_246":[41,42]},
+"76": {"ikhfa":[2,5],"madd_246":[35,36],"madd_muttasil":[15,17],"qalqalah":[29,31],"hamzat_wasl":[24,25]},
+"77": {"ghunnah":[4,7],"idghaam_no_ghunnah":[18,23],"madd_2":[44,45],"madd_246":[49,50],"madd_munfasil":[23,25],"hamzat_wasl":[39,40]},
+"78": {"madd_246":[31,32]},
+"79": {"madd_246":[35,36],"qalqalah":[17,19],"hamzat_wasl":[2,3]},
+"80": {"madd_246":[30,31]},
+"81": {"ghunnah":[23,26],"madd_246":[33,34],"hamzat_wasl":[2,3]},
+"82": {"idghaam_ghunnah":[22,26],"lam_shamsiyyah":[58,59],"madd_246":[62,63],"madd_munfasil":[8,10],"madd_muttasil":[41,43],"qalqalah":[13,15],"hamzat_wasl":[2,3,57,58]},
+"83": {"idghaam_ghunnah":[20,25],"lam_shamsiyyah":[40,41],"madd_2":[44,45],"madd_246":[49,50],"qalqalah":[8,10,31,33],"hamzat_wasl":[39,40]},
+"84": {"ikhfa":[27,31],"madd_246":[43,44],"qalqalah":[3,5,24,26],"hamzat_wasl":[2,3,33,34]},
+"85": {"ghunnah":[28,31,36,39],"idghaam_ghunnah":[15,19],"lam_shamsiyyah":[35,36],"madd_246":[41,42],"qalqalah":[3,5],"hamzat_wasl":[2,3,34,35]},
+"86": {"ghunnah":[21,24],"lam_shamsiyyah":[40,41],"madd_2":[26,27],"madd_246":[49,50],"madd_munfasil":[16,18],"madd_6":[44,46],"hamzat_wasl":[2,3,39,40]},
+"87": {"madd_246":[31,32],"qalqalah":[25,27]},
+"88": {"ikhfa":[13,16],"idghaam_ghunnah":[23,27],"madd_246":[35,36]},
+"89": {"ikhfa":[33,37],"madd_246":[39,40],"hamzat_wasl":[18,19]},
+"90": {"ghunnah":[18,21],"madd_246":[35,36],"hamzat_wasl":[13,14]},
+"91": {"madd_246":[32,33],"hamzat_wasl":[12,13]},
+"92": {"ikhfa":[28,31],"madd_246":[42,43]},
+"93": {"ikhfa":[2,6,25,28,45,48],"madd_246":[52,53],"hamzat_wasl":[10,11]},
+"94": {"madd_246":[36,37],"qalqalah":[4,6],"silent":[11,13],"hamzat_wasl":[28,29]},
+"95": {"madd_246":[28,29],"qalqalah":[12,14,22,24]},
+"96": {"madd_246":[33,34],"silent":[6,8]},
+"97": {"ghunnah":[16,19],"ikhfa":[12,16],"idghaam_ghunnah":[33,38],"madd_2":[31,32],"madd_246":[40,41],"hamzat_wasl":[2,3]},
+"98": {"ikhfa_shafawi":[15,19],"madd_2":[30,31],"madd_246":[35,36],"hamzat_wasl":[25,26]},
+"99": {"madd_246":[37,38],"madd_munfasil":[4,6,16,18],"qalqalah":[31,33],"hamzat_wasl":[26,27]},
+"100": {"ikhfa":[14,18],"madd_2":[18,19],"madd_246":[23,24]},
+"101": {"madd_246":[18,19]},
+"102": {"ghunnah":[9,12],"ikhfa":[25,29],"madd_246":[53,54],"hamzat_wasl":[42,43]},
+"103": {"ghunnah":[2,5],"idghaam_ghunnah":[26,30],"idghaam_shafawi":[50,55],"madd_2":[12,13],"madd_246":[61,62]},
+"104": {"ghunnah":[4,7],"lam_shamsiyyah":[35,36],"madd_246":[41,42],"hamzat_wasl":[23,24,34,35]},
+"105": {"madd_246":[34,35],"hamzat_wasl":[23,24]},
+"106": {"madd_246":[47,48]},
+"107": {"ghunnah":[2,5],"madd_246":[26,27]},
+"108": {"madd_246":[29,30],"silent":[9,11],"hamzat_wasl":[2,3,12,13]},
+"109": {"madd_2":[81,82],"madd_246":[86,87],"madd_munfasil":[4,6],"qalqalah":[37,39,49,51],"hamzat_wasl":[76,77]},
+"110": {"madd_246":[29,30],"silent":[9,11],"hamzat_wasl":[2,3,12,13]},
+"111": {"madd_246":[50,51],"madd_munfasil":[5,7],"silent":[7,9],"hamzat_wasl":[28,29,39,40]},
+"112": {"madd_246":[43,44],"silent":[32,34]},
+"113": {"madd_246":[51,52]},
+"114": {"madd_246":[35,36],"madd_munfasil":[4,6],"hamzat_wasl":[24,25]},
+"115": {"idghaam_ghunnah":[25,30],"madd_246":[32,33]},
+"116": {"ghunnah":[47,50],"ikhfa":[23,26],"idghaam_no_ghunnah":[13,18],"madd_2":[31,32],"madd_246":[68,69],"silent":[6,8],"hamzat_wasl":[56,57]},
+"117": {"ghunnah":[14,17],"madd_246":[33,34]},
+"118": {"idghaam_ghunnah":[36,41,54,59],"madd_246":[80,81],"hamzat_wasl":[2,3,69,70]},
+"119": {"ikhfa":[4,7],"idghaam_ghunnah":[19,24],"madd_2":[11,12,28,29],"madd_246":[53,54],"hamzat_wasl":[34,35,44,45]},
+"120": {"ghunnah":[2,5],"madd_246":[33,34],"qalqalah":[12,14],"hamzat_wasl":[25,26]},
+"121": {"ghunnah":[2,5],"idghaam_ghunnah":[26,30],"idghaam_shafawi":[50,55],"madd_2":[12,13],"madd_246":[61,62]},
+"122": {"ghunnah":[4,7],"lam_shamsiyyah":[35,36],"madd_246":[41,42],"hamzat_wasl":[23,24,34,35]},
+"123": {"madd_246":[27,28],"hamzat_wasl":[16,17]},
+"124": {"madd_246":[47,48]},
+"125": {"ghunnah":[2,5],"madd_246":[26,27]},
+"126": {"madd_246":[29,30],"silent":[9,11],"hamzat_wasl":[2,3,12,13]},
+"127": {"madd_2":[81,82],"madd_246":[86,87],"madd_munfasil":[4,6],"qalqalah":[37,39,49,51],"hamzat_wasl":[76,77]},
+"128": {"ikhfa":[32,36],"madd_246":[42,43],"qalqalah":[4,6]},
+"129": {"madd_246":[45,46]},
+"130": {"ikhfa_shafawi":[16,20],"madd_246":[37,38]},
+"131": {"madd_246":[29,30],"silent":[9,11],"hamzat_wasl":[2,3,12,13]},
+"132": {"ikhfa_shafawi":[30,34],"madd_246":[46,47],"madd_munfasil":[18,20],"silent":[9,11],"hamzat_wasl":[2,3,12,13]},
+"133": {"ikhfa_shafawi":[9,13],"idghaam_ghunnah":[21,25],"madd_2":[19,20],"madd_246":[29,30]},
+"134": {"ghunnah":[4,7],"idghaam_ghunnah":[9,13],"madd_2":[7,8],"madd_246":[17,18]},
+"135": {"ghunnah":[2,5],"madd_246":[46,47],"madd_munfasil":[5,7]},
+"136": {"idghaam_ghunnah":[54,59],"madd_2":[67,68],"madd_246":[72,73],"madd_munfasil":[26,28],"madd_muttasil":[13,15],"silent":[6,8],"hamzat_wasl":[62,63]},
+"137": {"madd_2":[7,8],"madd_246":[37,38],"madd_munfasil":[10,12],"hamzat_wasl":[27,28]},
+"138": {"madd_246":[24,25]},
+"139": {"ghunnah":[33,36],"idghaam_ghunnah":[57,61],"idghaam_shafawi":[81,86],"madd_2":[25,26,43,44],"madd_246":[92,93]},
+"140": {"ghunnah":[4,7],"lam_shamsiyyah":[35,36],"madd_246":[41,42],"hamzat_wasl":[23,24,34,35]},
+"141": {"madd_246":[29,30],"hamzat_wasl":[18,19]},
+"142": {"madd_2":[30,31],"madd_246":[49,50]},
+"143": {"ghunnah":[2,5],"madd_246":[26,27]},
+"144": {"madd_246":[29,30],"silent":[9,11],"hamzat_wasl":[2,3,12,13]},
+"145": {"madd_2":[81,82],"madd_246":[86,87],"madd_munfasil":[4,6],"qalqalah":[37,39,49,51],"hamzat_wasl":[76,77]},
+"146": {"madd_2":[24,25],"madd_246":[39,40],"madd_munfasil":[29,31]},
+"147": {"ghunnah":[6,9],"idghaam_ghunnah":[11,15],"madd_2":[9,10],"madd_246":[19,20]},
+"148": {"ikhfa":[17,21],"idghaam_ghunnah":[8,12],"madd_246":[33,34]},
+"149": {"ikhfa":[36,41],"madd_2":[41,42],"madd_246":[46,47],"hamzat_wasl":[19,20]},
+"150": {"madd_246":[29,30],"silent":[9,11],"hamzat_wasl":[2,3,12,13]},
+"151": {"madd_246":[36,37],"madd_munfasil":[13,15],"silent":[15,17],"hamzat_wasl":[25,26]},
+"152": {"madd_246":[50,51],"hamzat_wasl":[26,27]},
+"153": {"ghunnah":[12,15],"ikhfa":[22,25],"madd_246":[43,44],"madd_munfasil":[5,7,17,19],"silent":[7,9],"hamzat_wasl":[31,32]},
+"154": {"ikhfa":[7,10,56,60,60,63],"idghaam_ghunnah":[23,28],"lam_shamsiyyah":[70,71],"madd_2":[74,75],"madd_246":[79,80],"madd_munfasil":[2,4],"hamzat_wasl":[69,70]},
+"155": {"idghaam_ghunnah":[35,39,58,63],"idghaam_no_ghunnah":[21,26],"madd_2":[8,9,13,14],"madd_246":[67,68]},
+"156": {"ikhfa":[25,29],"madd_246":[61,62],"madd_muttasil":[22,24]},
+"157": {"madd_2":[29,30],"madd_246":[34,35],"silent":[24,26]},
+"158": {"ghunnah":[26,29],"idghaam_ghunnah":[50,54],"idghaam_shafawi":[74,79],"madd_2":[36,37],"madd_246":[85,86],"hamzat_wasl":[13,14]},
+"159": {"ghunnah":[4,7],"lam_shamsiyyah":[35,36],"madd_246":[41,42],"hamzat_wasl":[23,24,34,35]},
+"160": {"madd_246":[34,35],"hamzat_wasl":[23,24]},
+"161": {"madd_246":[47,48]},
+"162": {"ghunnah":[2,5],"madd_246":[26,27]},
+"163": {"madd_246":[29,30],"silent":[9,11],"hamzat_wasl":[2,3,12,13]},
+"164": {"madd_2":[81,82],"madd_246":[86,87],"madd_munfasil":[4,6],"qalqalah":[37,39,49,51],"hamzat_wasl":[76,77]},
+"165": {"lam_shamsiyyah":[13,14],"madd_2":[35,36],"madd_246":[40,41],"hamzat_wasl":[12,13,30,31]},
+"166": {"ikhfa":[65,68],"ikhfa_shafawi":[56,60],"idghaam_shafawi":[37,42],"madd_2":[51,52],"madd_246":[83,84]},
+"167": {"ghunnah":[47,50],"ikhfa":[23,26],"idghaam_no_ghunnah":[13,18],"madd_2":[31,32],"madd_246":[67,68],"silent":[6,8],"hamzat_wasl":[56,57]},
+"168": {"ghunnah":[8,11],"idghaam_shafawi":[23,28],"madd_246":[39,40],"hamzat_wasl":[31,32]},
+"169": {"ghunnah":[27,30],"madd_246":[40,41]},
+"170": {"madd_2":[11,12],"madd_246":[36,37],"madd_munfasil":[25,27],"qalqalah":[30,32]},
+"171": {"ikhfa":[13,18],"madd_2":[25,26],"madd_246":[30,31],"hamzat_wasl":[20,21]},
+"172": {"ghunnah":[2,5,8,11],"madd_246":[27,28],"hamzat_wasl":[17,18]},
+"173": {"ikhfa":[30,35,54,57],"idghaam_shafawi":[22,27],"madd_246":[59,60],"madd_muttasil":[37,39],"hamzat_wasl":[49,50]},
+"174": {"ghunnah":[2,5],"idghaam_ghunnah":[26,30],"idghaam_shafawi":[50,55],"madd_2":[12,13],"madd_246":[61,62]},
+"175": {"ghunnah":[4,7],"lam_shamsiyyah":[35,36],"madd_246":[41,42],"hamzat_wasl":[23,24,34,35]},
+"176": {"madd_2":[14,15],"madd_246":[41,42],"hamzat_wasl":[30,31]},
+"177": {"madd_246":[40,41]},
+"178": {"ghunnah":[2,5],"madd_246":[26,27]},
+"179": {"madd_246":[29,30],"silent":[9,11],"hamzat_wasl":[2,3,12,13]},
+"180": {"madd_2":[81,82],"madd_246":[86,87],"madd_munfasil":[4,6],"qalqalah":[37,39,49,51],"hamzat_wasl":[76,77]},
+"181": {"madd_246":[53,54],"silent":[7,9,34,36],"hamzat_wasl":[10,11,42,43]},
+"182": {"madd_246":[36,37],"silent":[7,9],"hamzat_wasl":[12,13,25,26]},
+"183": {"ghunnah":[20,23],"lam_shamsiyyah":[19,20],"madd_246":[81,82],"madd_muttasil":[33,35],"qalqalah":[8,10],"silent":[15,17,56,58],"hamzat_wasl":[18,19,63,64]},
+"184": {"madd_246":[56,57],"silent":[9,11],"hamzat_wasl":[2,3,12,13,33,34,46,47]},
+"185": {"ghunnah":[12,15],"ikhfa":[22,25],"madd_246":[43,44],"madd_munfasil":[5,7,17,19],"silent":[7,9],"hamzat_wasl":[31,32]},
+"186": {"ghunnah":[49,52],"ikhfa":[9,12],"idghaam_ghunnah":[25,30,42,47],"madd_2":[67,68],"madd_246":[72,73],"madd_munfasil":[4,6],"hamzat_wasl":[62,63]},
+"187": {"ikhfa":[49,53,53,56],"idghaam_ghunnah":[26,32],"lam_shamsiyyah":[36,37,63,64],"madd_2":[67,68],"madd_246":[72,73],"madd_muttasil":[42,44],"qalqalah":[8,10],"hamzat_wasl":[35,36,62,63]},
+"188": {"madd_246":[37,38],"madd_munfasil":[11,13]},
+"189": {"ghunnah":[54,57],"lam_shamsiyyah":[42,43],"madd_2":[59,60],"madd_246":[86,87],"hamzat_wasl":[41,42]},
+"190": {"ghunnah":[2,5],"idghaam_ghunnah":[26,30],"idghaam_shafawi":[50,55],"madd_2":[12,13],"madd_246":[61,62]},
+"191": {"ghunnah":[4,7],"lam_shamsiyyah":[35,36],"madd_246":[41,42],"hamzat_wasl":[23,24,34,35]},
+"192": {"ghunnah":[4,7],"ikhfa":[15,18],"madd_2":[9,10,33,34],"madd_246":[38,39],"hamzat_wasl":[28,29]},
+"193": {"lam_shamsiyyah":[13,14],"madd_246":[28,29],"hamzat_wasl":[12,13,21,22]},
+"194": {"ikhfa":[36,39],"madd_246":[41,42],"hamzat_wasl":[31,32]},
+"195": {"idghaam_ghunnah":[18,23],"madd_246":[25,26]},
+"196": {"ghunnah":[4,7],"madd_2":[9,10],"madd_246":[34,35],"hamzat_wasl":[24,25]},
+"197": {"idghaam_ghunnah":[33,37],"idghaam_no_ghunnah":[13,18],"madd_2":[45,46],"madd_246":[77,78],"madd_munfasil":[64,66],"madd_muttasil":[53,55,73,75],"silent":[57,59]},
+"198": {"madd_2":[16,17],"madd_246":[45,46],"hamzat_wasl":[34,35]},
+"199": {"idghaam_shafawi":[20,25],"madd_2":[10,11,40,41],"madd_246":[50,51],"silent":[33,35]},
+"200": {"madd_2":[4,5,18,19],"madd_246":[45,46],"qalqalah":[39,41],"hamzat_wasl":[34,35]},
+"201": {"madd_2":[20,21],"madd_246":[57,58],"silent":[36,38],"hamzat_wasl":[39,40,50,51]},
+"202": {"ikhfa_shafawi":[12,16],"idghaam_ghunnah":[21,25],"madd_246":[42,43]},
+"203": {"ikhfa":[27,30],"madd_246":[32,33],"silent":[10,12]},
+"204": {"madd_246":[29,30]},
+"205": {"idghaam_ghunnah":[15,20],"madd_2":[27,28],"madd_246":[37,38]},
+"206": {"ghunnah":[2,5],"idghaam_shafawi":[14,19],"madd_246":[37,38],"madd_muttasil":[8,10],"silent":[27,29]},
+"207": {"idghaam_shafawi":[20,25],"madd_246":[45,46],"madd_munfasil":[2,4],"silent":[33,35]},
+"208": {"ikhfa":[21,25,47,50],"madd_246":[52,53],"madd_munfasil":[4,6]},
+"209": {"ghunnah":[17,20],"madd_2":[24,25],"madd_246":[29,30]},
+"210": {"lam_shamsiyyah":[24,25],"madd_2":[30,31],"madd_246":[33,34],"hamzat_wasl":[23,24]},
+"211": {"iqlab":[9,11],"madd_246":[40,41]},
+"212": {"ghunnah":[2,5],"lam_shamsiyyah":[16,17],"madd_246":[36,37],"hamzat_wasl":[15,16]},
+"213": {"madd_2":[30,31],"madd_246":[70,71],"qalqalah":[8,10],"hamzat_wasl":[18,19,58,59]},
+"214": {"ikhfa":[4,7],"madd_246":[33,34],"qalqalah":[27,29],"hamzat_wasl":[22,23]},
+"215": {"madd_246":[54,55],"hamzat_wasl":[2,3,27,28,43,44]},
+"216": {"ghunnah":[25,28,42,45],"idghaam_ghunnah":[37,42],"madd_246":[55,56],"madd_muttasil":[34,36]},
+"217": {"lam_shamsiyyah":[30,31],"madd_246":[36,37],"hamzat_wasl":[18,19,29,30]},
+"218": {"madd_2":[13,14],"madd_246":[27,28]},
+"219": {"lam_shamsiyyah":[19,20],"madd_2":[23,24],"madd_246":[28,29],"hamzat_wasl":[18,19]},
+"220": {"ghunnah":[2,5],"lam_shamsiyyah":[15,16],"madd_2":[7,8],"madd_246":[32,33],"hamzat_wasl":[14,15,25,26]},
+"221": {"ikhfa":[28,32],"lam_shamsiyyah":[41,42],"madd_2":[47,48],"madd_246":[50,51],"hamzat_wasl":[40,41]},
+"222": {"madd_246":[36,37]},
+"223": {"lam_shamsiyyah":[11,12],"madd_2":[37,38],"madd_246":[42,43],"hamzat_wasl":[10,11]},
+"224": {"lam_shamsiyyah":[3,4],"madd_246":[38,39],"madd_muttasil":[11,13],"hamzat_wasl":[2,3,30,31]},
+"225": {"ghunnah":[14,17],"idghaam_ghunnah":[36,40],"madd_246":[45,46]},
+"226": {"ghunnah":[4,7],"madd_246":[39,40]},
+"227": {"ikhfa":[86,89,165,168,175,178],"iqlab":[100,103],"idghaam_ghunnah":[80,85,171,175],"lam_shamsiyyah":[41,42],"madd_2":[45,46,50,51],"madd_246":[182,183],"madd_munfasil":[152,154],"silent":[25,27,37,39,63,65,94,96,120,122,154,156],"hamzat_wasl":[7,8,40,41,66,67,85,86,136,137]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/27.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/27.json
index 6a841b7..bf8499f 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/27.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/27.json
@@ -1,95 +1,95 @@
{
-"1": {"idgham":[80,85],"madd":[55,56,87,88],"madd-lazim":[40,42],"wasl":[59,60]},
-"2": {"idgham":[3,8],"madd":[29,30]},
-"3": {"ghunnah":[61,65],"idgham":[22,23,46,47],"madd":[29,30,53,54,90,91],"silent":[28,29,52,53],"wasl":[21,22,45,46,65,66]},
-"4": {"ghunnah":[2,5,52,55],"madd":[70,71,93,94],"wasl":[6,7,34,35]},
-"5": {"madd":[6,8,32,34,88,89],"silent":[2,4],"wasl":[13,14,37,38,59,60,77,78]},
-"6": {"ghunnah":[4,7],"idgham":[36,41],"madd":[58,59],"wasl":[21,22]},
-"7": {"ghunnah":[34,37,54,59,101,105,111,115],"idgham":[68,73,118,123],"madd":[29,31,37,39,141,142]},
-"8": {"ghunnah":[4,7,30,33,42,46,50,53],"idgham":[49,50],"madd":[11,13,82,83,105,106,110,111],"qalqalah":[78,80],"wasl":[48,49,86,87,100,101]},
-"9": {"ghunnah":[14,17],"madd":[2,3,8,11,19,21,54,55],"wasl":[28,29,36,37,47,48]},
-"10": {"ghunnah":[21,24,49,52,60,63,123,126],"idgham":[62,66,79,84],"madd":[101,102,159,160],"madd-lazim":[58,60],"qalqalah":[74,76,96,98],"wasl":[148,149]},
-"11": {"ghunnah":[9,13,20,23,37,42,53,57,59,62],"idgham":[70,75],"madd":[50,52,77,78]},
-"12": {"ghunnah":[68,72,123,126,145,150],"madd":[46,48,65,67,86,87,118,120,150,151,155,156],"qalqalah":[4,6,37,39],"silent":[137,139]},
-"13": {"ghunnah":[4,7,43,47],"idgham":[66,71],"madd":[11,13,27,28,56,57,73,74],"qalqalah":[36,38],"silent":[51,53]},
-"14": {"ghunnah":[40,43,66,71,72,75],"idgham":[55,60],"madd":[35,37,93,94,112,113],"silent":[9,11],"wasl":[20,21,71,72,101,102]},
-"15": {"idgham":[48,53,110,115],"madd":[25,26,39,40,139,140],"qalqalah":[6,8],"wasl":[60,61,78,79,128,129]},
-"16": {"ghunnah":[53,56,73,76,103,107,120,123],"idgham":[52,53,80,81],"madd":[17,18,26,27,40,42,126,127,155,156],"wasl":[51,52,79,80,138,139,148,149]},
-"17": {"ghunnah":[44,47,55,58],"idgham":[62,63],"madd":[19,20,32,33,85,86],"wasl":[39,40,50,51,61,62]},
-"18": {"ghunnah":[40,43,80,83,125,128],"idgham":[39,40,63,67,79,80],"madd":[5,8,13,15,67,69,103,104,141,142,156,157,177,178],"qalqalah":[89,91],"silent":[22,24,96,98],"wasl":[38,39,78,79,88,89]},
-"19": {"ghunnah":[24,28,158,163],"idgham":[18,24,214,215],"madd":[60,62,94,96,127,128,154,155,168,169,218,219,223,224],"qalqalah":[176,178],"wasl":[88,89,213,214]},
-"20": {"idgham":[13,14],"madd":[41,43,83,85,89,90],"qalqalah":[55,57],"wasl":[12,13,50,51,78,79]},
-"21": {"ghunnah":[11,14,24,29,53,56,76,79],"idgham":[91,96],"madd":[16,17,58,60,89,90,98,99],"silent":[45,47]},
-"22": {"ghunnah":[22,26,77,81,84,88],"idgham":[94,98],"madd":[62,63,100,101],"qalqalah":[55,57]},
-"23": {"ghunnah":[2,5,24,28,53,57],"idgham":[11,12,66,70],"madd":[87,88],"wasl":[16,17]},
-"24": {"ghunnah":[49,53],"idgham":[4,5,38,39,83,84,127,128],"madd":[91,92,101,102,156,157],"wasl":[57,58,82,83,126,127]},
-"25": {"idgham":[59,60],"madd":[65,66,68,69,123,124],"qalqalah":[49,51],"silent":[16,18],"wasl":[27,28,44,45,58,59,74,75]},
-"26": {"madd":[10,12,17,18,56,57],"wasl":[39,40,49,50]},
-"27": {"ghunnah":[10,13,34,37],"madd":[48,49,53,54],"qalqalah":[22,24],"wasl":[43,44]},
-"28": {"ghunnah":[50,53,74,77],"madd":[14,15,21,22,95,96],"wasl":[73,74]},
-"29": {"ghunnah":[35,38,64,68],"madd":[10,12,38,40,62,63,70,71],"silent":[30,32],"wasl":[21,22]},
-"30": {"ghunnah":[2,5,11,15,29,32],"idgham":[52,53,65,66],"madd":[7,8,21,22,34,35,60,61,71,72],"wasl":[43,44,51,52,64,65]},
-"31": {"madd":[44,45],"silent":[14,16]},
-"32": {"ghunnah":[63,66],"madd":[10,12,46,48,101,102],"silent":[30,32],"wasl":[21,22]},
-"33": {"ghunnah":[51,55,85,88],"idgham":[32,36,59,63],"madd":[107,108],"silent":[6,8,18,20,23,25,38,40,43,45],"wasl":[63,64,84,85]},
-"34": {"ghunnah":[10,13],"idgham":[105,109],"madd":[71,73,94,96,113,114,127,128],"silent":[38,40,73,75],"wasl":[14,15]},
-"35": {"ghunnah":[4,7,28,32,40,44,52,56],"madd":[80,81],"wasl":[69,70]},
-"36": {"ghunnah":[4,7,55,59,94,97,109,113,118,121,121,125],"idgham":[89,94],"madd":[11,13,24,25,61,63,70,71,97,99,106,107,147,148],"wasl":[76,77]},
-"37": {"ghunnah":[31,34,36,40,64,68,84,87],"idgham":[46,51,89,94,109,113],"madd":[98,100,120,121,125,126]},
-"38": {"idgham":[73,77],"madd":[8,10,94,95],"qalqalah":[66,68],"silent":[28,30],"wasl":[19,20]},
-"39": {"ghunnah":[27,30,62,66,91,94],"idgham":[14,19,74,79],"madd":[51,52,119,120],"qalqalah":[55,57],"wasl":[22,23]},
-"40": {"ghunnah":[16,19,112,115,140,143,162,166,222,226,235,238,267,271,280,283,297,301],"idgham":[28,33,78,82],"madd":[21,22,43,44,67,68,145,146,155,156,190,192,261,262,303,304],"qalqalah":[71,73,182,184],"wasl":[6,7,36,37]},
-"41": {"ghunnah":[35,38],"madd":[51,53,94,95],"silent":[14,16],"wasl":[72,73]},
-"42": {"ghunnah":[4,7,56,59,92,96,108,111],"madd":[11,13,28,29,61,62,121,122],"qalqalah":[96,98],"wasl":[80,81]},
-"43": {"ghunnah":[34,38,52,55,69,73,76,80],"madd":[80,81,85,86],"wasl":[42,43]},
-"44": {"ghunnah":[35,38,81,85,102,105,130,134,159,162],"idgham":[22,23,66,70,114,119,125,130],"madd":[107,108,207,208,230,231,235,236],"qalqalah":[13,15],"wasl":[12,13,21,22,225,226]},
-"45": {"madd":[19,21,49,50,114,115],"qalqalah":[6,8],"silent":[69,71],"wasl":[61,62,72,73]},
-"46": {"idgham":[40,41],"madd":[8,9,123,124],"qalqalah":[54,56],"wasl":[39,40,59,60,95,96]},
-"47": {"ghunnah":[64,67,83,86,94,98],"idgham":[33,38],"madd":[51,53,104,105],"silent":[6,8],"wasl":[9,10,68,69]},
-"48": {"idgham":[39,43],"madd":[81,82],"wasl":[12,13,57,58]},
-"49": {"ghunnah":[43,46,64,67,77,80,131,134],"madd":[48,49,60,61,92,93,125,126,140,141,145,146],"qalqalah":[102,104],"silent":[6,8,19,21],"wasl":[24,25]},
-"50": {"idgham":[17,22,37,42],"madd":[59,60],"silent":[9,11]},
-"51": {"ghunnah":[3,6,45,48,52,55],"madd":[24,25,59,60,86,87],"qalqalah":[80,82],"wasl":[2,3]},
-"52": {"ghunnah":[29,33,51,54],"idgham":[75,80,85,89],"madd":[44,46,61,62,95,96],"silent":[46,48]},
-"53": {"ghunnah":[4,7],"madd":[52,53],"silent":[31,33,42,44],"wasl":[13,14]},
-"54": {"ghunnah":[62,65],"madd":[30,32,50,51,76,77],"qalqalah":[70,72],"wasl":[45,46]},
-"55": {"ghunnah":[4,7,47,51,57,60,74,77,85,89],"idgham":[25,26,42,47,56,57],"madd":[62,64,95,96],"qalqalah":[89,91],"wasl":[24,25,55,56]},
-"56": {"ghunnah":[41,45,81,85,98,101],"idgham":[76,81,112,116],"madd":[28,30,36,38,48,50,61,63,125,126],"silent":[50,52,63,65]},
-"57": {"ghunnah":[4,7],"madd":[11,12,25,27,46,47,57,58,72,73,77,78],"wasl":[35,36,67,68]},
-"58": {"ghunnah":[30,35,54,57],"idgham":[22,27],"madd":[37,39,59,60],"wasl":[49,50]},
-"59": {"ghunnah":[91,94],"madd":[29,30,67,70,104,105],"madd-lazim":[73,75],"wasl":[5,6,50,51,60,61]},
-"60": {"ghunnah":[2,5,45,48,80,84,87,89,148,152,153,155],"idgham":[16,17,55,60,64,65,126,131,181,186,212,216],"madd":[22,23,25,26,70,72,77,79,100,101,106,108,170,172,179,180,222,223],"silent":[159,161],"wasl":[15,16,31,32,63,64,189,190]},
-"61": {"ghunnah":[2,5,5,9],"idgham":[30,35,62,67,137,142],"madd":[46,47,51,53,60,61,84,85,135,136,183,184],"wasl":[14,15,106,107,145,146]},
-"62": {"ghunnah":[2,5],"idgham":[5,9,54,55,107,112,129,135],"madd":[58,60,84,86,105,106,146,147],"qalqalah":[67,69],"wasl":[15,16,53,54,89,90,115,116]},
-"63": {"ghunnah":[2,5,85,90,159,162],"idgham":[5,9,58,62,70,71,124,129],"madd":[29,30,76,77,113,115,122,123,144,145,172,173],"wasl":[33,34,44,45,69,70,132,133,149,150]},
-"64": {"ghunnah":[2,5,30,33,147,151,151,154],"idgham":[5,9,49,53,61,66,70,71,101,106],"madd":[43,44,76,78,99,100,137,138,159,160,164,165],"qalqalah":[9,11],"silent":[15,17,128,130],"wasl":[18,19,69,70,83,84,109,110]},
-"65": {"ghunnah":[20,24],"idgham":[27,28],"madd":[33,34,36,37,112,113],"qalqalah":[106,108],"wasl":[26,27,42,43,52,53,69,70]},
-"66": {"idgham":[61,66,79,84],"madd":[9,10,94,95],"wasl":[5,6,30,31]},
-"67": {"ghunnah":[39,42,73,76],"idgham":[50,55],"madd":[24,26,48,49,60,62,66,68,88,89],"silent":[26,28],"wasl":[8,9]},
-"68": {"ghunnah":[48,52],"madd":[19,20,38,40,64,65,67,69,75,77,82,83,99,100],"qalqalah":[4,6,11,13,52,54],"wasl":[89,90]},
-"69": {"ghunnah":[31,34],"madd":[55,56,74,75],"qalqalah":[68,70],"silent":[11,13,37,39],"wasl":[18,19,30,31,63,64]},
-"70": {"ghunnah":[36,40,52,55],"idgham":[47,52],"madd":[65,66]},
-"71": {"ghunnah":[39,43,43,46],"madd":[22,23,51,52,56,57],"wasl":[27,28]},
-"72": {"ghunnah":[36,40],"idgham":[15,19],"madd":[9,12,65,66],"wasl":[45,46]},
-"73": {"ghunnah":[4,7,37,40,51,54],"idgham":[36,37],"madd":[48,49,80,81],"wasl":[35,36]},
-"74": {"ghunnah":[4,7,35,38],"madd":[65,66]},
-"75": {"ghunnah":[20,24],"idgham":[27,28,67,72],"madd":[13,15,33,35,65,66,74,75],"wasl":[26,27,40,41]},
-"76": {"ghunnah":[2,5],"madd":[8,9,45,47,54,56,100,101],"wasl":[13,14,71,72]},
-"77": {"ghunnah":[4,7],"idgham":[16,21,28,33],"madd":[9,10,43,44]},
-"78": {"ghunnah":[2,5,30,34],"madd":[42,43,69,70],"qalqalah":[16,18],"wasl":[51,52,62,63]},
-"79": {"ghunnah":[28,31],"madd":[56,57],"wasl":[18,19,40,41,49,50]},
-"80": {"ghunnah":[2,5,53,56],"idgham":[49,50,58,59],"madd":[64,66,93,94],"qalqalah":[87,89],"silent":[82,84],"wasl":[21,22,48,49,57,58]},
-"81": {"ghunnah":[9,12,34,38,52,56],"idgham":[72,76,102,107],"madd":[4,6,17,18,40,41,91,92,113,114],"wasl":[22,23]},
-"82": {"ghunnah":[97,100,103,106],"idgham":[63,68,102,103],"madd":[127,128,145,146],"madd-lazim":[57,59],"qalqalah":[42,44],"silent":[116,118],"wasl":[15,16,71,72,101,102]},
-"83": {"ghunnah":[20,24,30,33,34,38,47,50],"idgham":[41,47,50,54],"madd":[70,71,91,92]},
-"84": {"ghunnah":[40,44,89,92,99,102],"madd":[5,8,17,19,50,51,113,114],"qalqalah":[36,38],"silent":[70,72]},
-"85": {"ghunnah":[27,31,58,61],"madd":[63,64],"silent":[42,44],"wasl":[9,10]},
-"86": {"ghunnah":[18,21,66,69,87,90],"idgham":[65,66,112,117,122,126],"madd":[97,98,110,111,132,133],"qalqalah":[77,79],"silent":[13,15,53,55],"wasl":[33,34,64,65]},
-"87": {"ghunnah":[11,14,41,45,65,69,90,94],"idgham":[22,23,48,49],"madd":[54,55,57,58,94,96,126,127,131,132],"wasl":[21,22,47,48,71,72,99,100]},
-"88": {"ghunnah":[121,124,134,138],"idgham":[39,43,63,64],"madd":[94,96,126,127,151,152],"wasl":[8,9,62,63,80,81,88,89]},
-"89": {"ghunnah":[2,6,58,62],"idgham":[38,43,53,58,65,69],"madd":[6,8,31,32,85,86],"wasl":[13,14]},
-"90": {"ghunnah":[4,8,56,59,92,95],"idgham":[16,17,55,56],"madd":[8,10,106,107],"qalqalah":[70,72],"wasl":[15,16,54,55]},
-"91": {"ghunnah":[2,5],"idgham":[97,101],"madd":[7,9,41,42,84,85,139,140],"wasl":[47,48,59,60,128,129]},
-"92": {"ghunnah":[52,55,85,89,102,105,127,130],"madd":[79,80,107,109,132,133],"silent":[15,17],"wasl":[18,19,38,39,122,123]},
-"93": {"ghunnah":[92,95],"madd":[42,43,47,48,84,85,105,106],"wasl":[7,8]}
+"1": {"idghaam_ghunnah":[80,85],"madd_2":[55,56],"madd_246":[87,88],"madd_6":[40,42],"hamzat_wasl":[59,60]},
+"2": {"idghaam_ghunnah":[3,8],"madd_246":[29,30]},
+"3": {"ikhfa_shafawi":[61,65],"lam_shamsiyyah":[22,23,46,47],"madd_2":[29,30,53,54],"madd_246":[90,91],"silent":[28,29,52,53],"hamzat_wasl":[21,22,45,46,65,66]},
+"4": {"ghunnah":[2,5,52,55],"madd_2":[70,71],"madd_246":[93,94],"hamzat_wasl":[6,7,34,35]},
+"5": {"madd_246":[88,89],"madd_muttasil":[6,8,32,34],"silent":[2,4],"hamzat_wasl":[13,14,37,38,59,60,77,78]},
+"6": {"ghunnah":[4,7],"idghaam_no_ghunnah":[36,41],"madd_246":[58,59],"hamzat_wasl":[21,22]},
+"7": {"ghunnah":[34,37],"ikhfa":[54,59,111,115],"ikhfa_shafawi":[101,105],"idghaam_no_ghunnah":[118,123],"idghaam_shafawi":[68,73],"madd_246":[141,142],"madd_munfasil":[29,31,37,39]},
+"8": {"ghunnah":[4,7,50,53],"ikhfa":[42,46],"iqlab":[30,33],"lam_shamsiyyah":[49,50],"madd_2":[82,83,105,106],"madd_246":[110,111],"madd_muttasil":[11,13],"qalqalah":[78,80],"hamzat_wasl":[48,49,86,87,100,101]},
+"9": {"ghunnah":[14,17],"madd_2":[2,3],"madd_246":[54,55],"madd_munfasil":[8,11,19,21],"hamzat_wasl":[28,29,36,37,47,48]},
+"10": {"ghunnah":[21,24,49,52,60,63,123,126],"idghaam_ghunnah":[62,66,79,84],"madd_2":[101,102],"madd_246":[159,160],"madd_6":[58,60],"qalqalah":[74,76,96,98],"hamzat_wasl":[148,149]},
+"11": {"ghunnah":[20,23,59,62],"ikhfa":[9,13,53,57],"iqlab":[37,42],"idghaam_no_ghunnah":[70,75],"madd_246":[77,78],"madd_muttasil":[50,52]},
+"12": {"ghunnah":[123,126],"ikhfa":[68,72,145,150],"madd_2":[86,87,150,151],"madd_246":[155,156],"madd_munfasil":[118,120],"madd_muttasil":[46,48,65,67],"qalqalah":[4,6,37,39],"silent":[137,139]},
+"13": {"ghunnah":[4,7],"ikhfa":[43,47],"idghaam_ghunnah":[66,71],"madd_2":[27,28,56,57],"madd_246":[73,74],"madd_muttasil":[11,13],"qalqalah":[36,38],"silent":[51,53]},
+"14": {"ikhfa":[40,43,66,71,72,75],"idghaam_ghunnah":[55,60],"madd_2":[93,94],"madd_246":[112,113],"madd_munfasil":[35,37],"silent":[9,11],"hamzat_wasl":[20,21,71,72,101,102]},
+"15": {"idghaam_ghunnah":[48,53,110,115],"madd_2":[25,26,39,40],"madd_246":[139,140],"qalqalah":[6,8],"hamzat_wasl":[60,61,78,79,128,129]},
+"16": {"ghunnah":[53,56,120,123],"ikhfa":[73,76,103,107],"lam_shamsiyyah":[52,53,80,81],"madd_2":[17,18,26,27,126,127],"madd_246":[155,156],"madd_munfasil":[40,42],"hamzat_wasl":[51,52,79,80,138,139,148,149]},
+"17": {"ghunnah":[44,47],"ikhfa":[55,58],"lam_shamsiyyah":[62,63],"madd_2":[19,20,32,33],"madd_246":[85,86],"hamzat_wasl":[39,40,50,51,61,62]},
+"18": {"ghunnah":[40,43,80,83,125,128],"idghaam_ghunnah":[63,67],"lam_shamsiyyah":[39,40,79,80],"madd_2":[103,104,141,142,156,157],"madd_246":[177,178],"madd_munfasil":[5,8,13,15,67,69],"qalqalah":[89,91],"silent":[22,24,96,98],"hamzat_wasl":[38,39,78,79,88,89]},
+"19": {"ikhfa":[24,28,158,163],"idghaam_ghunnah":[18,24],"lam_shamsiyyah":[214,215],"madd_2":[127,128,154,155,168,169,218,219],"madd_246":[223,224],"madd_munfasil":[60,62,94,96],"qalqalah":[176,178],"hamzat_wasl":[88,89,213,214]},
+"20": {"lam_shamsiyyah":[13,14],"madd_246":[89,90],"madd_munfasil":[41,43],"madd_muttasil":[83,85],"qalqalah":[55,57],"hamzat_wasl":[12,13,50,51,78,79]},
+"21": {"ghunnah":[11,14,53,56,76,79],"ikhfa":[24,29],"idghaam_ghunnah":[91,96],"madd_2":[16,17,89,90],"madd_246":[98,99],"madd_munfasil":[58,60],"silent":[45,47]},
+"22": {"ikhfa":[22,26,77,81],"iqlab":[84,88],"idghaam_ghunnah":[94,98],"madd_2":[62,63],"madd_246":[100,101],"qalqalah":[55,57]},
+"23": {"ghunnah":[2,5],"ikhfa":[24,28,53,57],"idghaam_ghunnah":[66,70],"idghaam_mutajanisayn":[11,12],"madd_246":[87,88],"hamzat_wasl":[16,17]},
+"24": {"ikhfa":[49,53],"idghaam_mutajanisayn":[4,5],"lam_shamsiyyah":[38,39,83,84,127,128],"madd_2":[91,92,101,102],"madd_246":[156,157],"hamzat_wasl":[57,58,82,83,126,127]},
+"25": {"lam_shamsiyyah":[59,60],"madd_2":[65,66,68,69],"madd_246":[123,124],"qalqalah":[49,51],"silent":[16,18],"hamzat_wasl":[27,28,44,45,58,59,74,75]},
+"26": {"madd_2":[17,18],"madd_246":[56,57],"madd_munfasil":[10,12],"hamzat_wasl":[39,40,49,50]},
+"27": {"ikhfa":[10,13,34,37],"madd_2":[48,49],"madd_246":[53,54],"qalqalah":[22,24],"hamzat_wasl":[43,44]},
+"28": {"ghunnah":[50,53],"ikhfa":[74,77],"madd_2":[14,15,21,22],"madd_246":[95,96],"hamzat_wasl":[73,74]},
+"29": {"ghunnah":[35,38],"ikhfa":[64,68],"madd_2":[62,63],"madd_246":[70,71],"madd_munfasil":[10,12,38,40],"silent":[30,32],"hamzat_wasl":[21,22]},
+"30": {"ghunnah":[2,5,29,32],"ikhfa":[11,15],"lam_shamsiyyah":[52,53,65,66],"madd_2":[7,8,21,22,34,35,60,61],"madd_246":[71,72],"hamzat_wasl":[43,44,51,52,64,65]},
+"31": {"madd_246":[44,45],"silent":[14,16]},
+"32": {"ikhfa":[63,66],"madd_246":[101,102],"madd_munfasil":[10,12,46,48],"silent":[30,32],"hamzat_wasl":[21,22]},
+"33": {"ikhfa":[51,55,85,88],"idghaam_ghunnah":[32,36,59,63],"madd_246":[107,108],"silent":[6,8,18,20,23,25,38,40,43,45],"hamzat_wasl":[63,64,84,85]},
+"34": {"ghunnah":[10,13],"idghaam_ghunnah":[105,109],"madd_2":[113,114],"madd_246":[127,128],"madd_munfasil":[71,73,94,96],"silent":[38,40,73,75],"hamzat_wasl":[14,15]},
+"35": {"ghunnah":[4,7],"ikhfa":[40,44],"ikhfa_shafawi":[28,32],"iqlab":[52,56],"madd_246":[80,81],"hamzat_wasl":[69,70]},
+"36": {"ghunnah":[4,7,94,97],"ikhfa":[55,59,118,121],"ikhfa_shafawi":[109,113,121,125],"idghaam_ghunnah":[89,94],"madd_2":[24,25,70,71,106,107],"madd_246":[147,148],"madd_munfasil":[61,63,97,99],"madd_muttasil":[11,13],"hamzat_wasl":[76,77]},
+"37": {"ghunnah":[31,34,84,87],"ikhfa_shafawi":[36,40,64,68],"idghaam_ghunnah":[109,113],"idghaam_no_ghunnah":[46,51],"idghaam_shafawi":[89,94],"madd_2":[120,121],"madd_246":[125,126],"madd_munfasil":[98,100]},
+"38": {"idghaam_ghunnah":[73,77],"madd_246":[94,95],"madd_munfasil":[8,10],"qalqalah":[66,68],"silent":[28,30],"hamzat_wasl":[19,20]},
+"39": {"ghunnah":[27,30,91,94],"ikhfa":[62,66],"idghaam_ghunnah":[14,19,74,79],"madd_2":[51,52],"madd_246":[119,120],"qalqalah":[55,57],"hamzat_wasl":[22,23]},
+"40": {"ghunnah":[112,115,235,238,280,283],"ikhfa":[16,19,140,143,162,166,222,226,267,271,297,301],"idghaam_ghunnah":[28,33,78,82],"madd_2":[21,22,43,44,67,68,145,146,155,156,261,262],"madd_246":[303,304],"madd_munfasil":[190,192],"qalqalah":[71,73,182,184],"hamzat_wasl":[6,7,36,37]},
+"41": {"ikhfa":[35,38],"madd_246":[94,95],"madd_munfasil":[51,53],"silent":[14,16],"hamzat_wasl":[72,73]},
+"42": {"ghunnah":[4,7,56,59,108,111],"ikhfa":[92,96],"madd_2":[28,29,61,62],"madd_246":[121,122],"madd_muttasil":[11,13],"qalqalah":[96,98],"hamzat_wasl":[80,81]},
+"43": {"ghunnah":[52,55],"ikhfa":[34,38,69,73,76,80],"madd_2":[80,81],"madd_246":[85,86],"hamzat_wasl":[42,43]},
+"44": {"ghunnah":[35,38,102,105,159,162],"ikhfa":[81,85,130,134],"idghaam_ghunnah":[66,70,114,119,125,130],"lam_shamsiyyah":[22,23],"madd_2":[107,108,207,208,230,231],"madd_246":[235,236],"qalqalah":[13,15],"hamzat_wasl":[12,13,21,22,225,226]},
+"45": {"madd_2":[49,50],"madd_246":[114,115],"madd_munfasil":[19,21],"qalqalah":[6,8],"silent":[69,71],"hamzat_wasl":[61,62,72,73]},
+"46": {"lam_shamsiyyah":[40,41],"madd_2":[8,9],"madd_246":[123,124],"qalqalah":[54,56],"hamzat_wasl":[39,40,59,60,95,96]},
+"47": {"ikhfa":[64,67,83,86,94,98],"idghaam_ghunnah":[33,38],"madd_246":[104,105],"madd_muttasil":[51,53],"silent":[6,8],"hamzat_wasl":[9,10,68,69]},
+"48": {"idghaam_ghunnah":[39,43],"madd_246":[81,82],"hamzat_wasl":[12,13,57,58]},
+"49": {"ghunnah":[43,46,64,67,77,80,131,134],"madd_2":[48,49,60,61,92,93,125,126,140,141],"madd_246":[145,146],"qalqalah":[102,104],"silent":[6,8,19,21],"hamzat_wasl":[24,25]},
+"50": {"idghaam_ghunnah":[17,22,37,42],"madd_246":[59,60],"silent":[9,11]},
+"51": {"ghunnah":[45,48,52,55],"ikhfa":[3,6],"madd_2":[24,25,59,60],"madd_246":[86,87],"qalqalah":[80,82],"hamzat_wasl":[2,3]},
+"52": {"ghunnah":[51,54],"iqlab":[29,33],"idghaam_ghunnah":[85,89],"idghaam_no_ghunnah":[75,80],"madd_2":[61,62],"madd_246":[95,96],"madd_munfasil":[44,46],"silent":[46,48]},
+"53": {"ikhfa":[4,7],"madd_246":[52,53],"silent":[31,33,42,44],"hamzat_wasl":[13,14]},
+"54": {"ikhfa":[62,65],"madd_2":[50,51],"madd_246":[76,77],"madd_munfasil":[30,32],"qalqalah":[70,72],"hamzat_wasl":[45,46]},
+"55": {"ghunnah":[4,7,57,60],"ikhfa":[47,51,74,77,85,89],"idghaam_ghunnah":[42,47],"lam_shamsiyyah":[25,26,56,57],"madd_246":[95,96],"madd_muttasil":[62,64],"qalqalah":[89,91],"hamzat_wasl":[24,25,55,56]},
+"56": {"ghunnah":[98,101],"ikhfa":[41,45,81,85],"idghaam_ghunnah":[76,81,112,116],"madd_246":[125,126],"madd_munfasil":[28,30,36,38,48,50,61,63],"silent":[50,52,63,65]},
+"57": {"ikhfa":[4,7],"madd_2":[11,12,46,47,57,58,72,73],"madd_246":[77,78],"madd_munfasil":[25,27],"hamzat_wasl":[35,36,67,68]},
+"58": {"ikhfa":[30,35,54,57],"idghaam_shafawi":[22,27],"madd_246":[59,60],"madd_muttasil":[37,39],"hamzat_wasl":[49,50]},
+"59": {"ghunnah":[91,94],"madd_2":[29,30],"madd_246":[104,105],"madd_munfasil":[67,70],"madd_6":[73,75],"hamzat_wasl":[5,6,50,51,60,61]},
+"60": {"ghunnah":[2,5],"ikhfa":[45,48,80,84,148,152],"iqlab":[87,89,153,155],"idghaam_ghunnah":[126,131,181,186,212,216],"idghaam_shafawi":[55,60],"lam_shamsiyyah":[16,17,64,65],"madd_2":[22,23,25,26,100,101,179,180],"madd_246":[222,223],"madd_munfasil":[170,172],"madd_muttasil":[70,72,77,79,106,108],"silent":[159,161],"hamzat_wasl":[15,16,31,32,63,64,189,190]},
+"61": {"ghunnah":[2,5],"ikhfa":[5,9],"idghaam_ghunnah":[30,35,62,67,137,142],"madd_2":[46,47,60,61,84,85,135,136],"madd_246":[183,184],"madd_munfasil":[51,53],"hamzat_wasl":[14,15,106,107,145,146]},
+"62": {"ghunnah":[2,5],"idghaam_ghunnah":[5,9,107,112,129,135],"lam_shamsiyyah":[54,55],"madd_2":[105,106],"madd_246":[146,147],"madd_muttasil":[58,60,84,86],"qalqalah":[67,69],"hamzat_wasl":[15,16,53,54,89,90,115,116]},
+"63": {"ghunnah":[2,5,159,162],"iqlab":[85,90],"idghaam_ghunnah":[5,9,58,62,124,129],"lam_shamsiyyah":[70,71],"madd_2":[29,30,76,77,122,123,144,145],"madd_246":[172,173],"madd_munfasil":[113,115],"hamzat_wasl":[33,34,44,45,69,70,132,133,149,150]},
+"64": {"ghunnah":[2,5,30,33],"ikhfa":[147,151,151,154],"idghaam_ghunnah":[5,9,49,53,101,106],"idghaam_shafawi":[61,66],"lam_shamsiyyah":[70,71],"madd_2":[43,44,99,100,137,138,159,160],"madd_246":[164,165],"madd_muttasil":[76,78],"qalqalah":[9,11],"silent":[15,17,128,130],"hamzat_wasl":[18,19,69,70,83,84,109,110]},
+"65": {"ikhfa":[20,24],"lam_shamsiyyah":[27,28],"madd_2":[33,34,36,37],"madd_246":[112,113],"qalqalah":[106,108],"hamzat_wasl":[26,27,42,43,52,53,69,70]},
+"66": {"idghaam_ghunnah":[61,66],"idghaam_shafawi":[79,84],"madd_2":[9,10],"madd_246":[94,95],"hamzat_wasl":[5,6,30,31]},
+"67": {"ghunnah":[39,42,73,76],"idghaam_ghunnah":[50,55],"madd_2":[48,49],"madd_246":[88,89],"madd_munfasil":[24,26,66,68],"madd_muttasil":[60,62],"silent":[26,28],"hamzat_wasl":[8,9]},
+"68": {"ikhfa":[48,52],"madd_2":[19,20,64,65,82,83],"madd_246":[99,100],"madd_munfasil":[67,69,75,77],"madd_muttasil":[38,40],"qalqalah":[4,6,11,13,52,54],"hamzat_wasl":[89,90]},
+"69": {"ikhfa":[31,34],"madd_2":[55,56],"madd_246":[74,75],"qalqalah":[68,70],"silent":[11,13,37,39],"hamzat_wasl":[18,19,30,31,63,64]},
+"70": {"ghunnah":[52,55],"ikhfa":[36,40],"idghaam_ghunnah":[47,52],"madd_246":[65,66]},
+"71": {"ikhfa":[39,43,43,46],"madd_2":[22,23,51,52],"madd_246":[56,57],"hamzat_wasl":[27,28]},
+"72": {"ikhfa_shafawi":[36,40],"idghaam_ghunnah":[15,19],"madd_246":[65,66],"madd_munfasil":[9,12],"hamzat_wasl":[45,46]},
+"73": {"ghunnah":[4,7,37,40,51,54],"lam_shamsiyyah":[36,37],"madd_2":[48,49],"madd_246":[80,81],"hamzat_wasl":[35,36]},
+"74": {"ghunnah":[4,7,35,38],"madd_246":[65,66]},
+"75": {"ikhfa":[20,24],"idghaam_ghunnah":[67,72],"lam_shamsiyyah":[27,28],"madd_2":[65,66],"madd_246":[74,75],"madd_muttasil":[13,15,33,35],"hamzat_wasl":[26,27,40,41]},
+"76": {"ghunnah":[2,5],"madd_2":[8,9],"madd_246":[100,101],"madd_munfasil":[45,47],"madd_muttasil":[54,56],"hamzat_wasl":[13,14,71,72]},
+"77": {"ghunnah":[4,7],"idghaam_ghunnah":[16,21],"idghaam_no_ghunnah":[28,33],"madd_2":[9,10],"madd_246":[43,44]},
+"78": {"ghunnah":[2,5],"ikhfa_shafawi":[30,34],"madd_2":[42,43],"madd_246":[69,70],"qalqalah":[16,18],"hamzat_wasl":[51,52,62,63]},
+"79": {"ghunnah":[28,31],"madd_246":[56,57],"hamzat_wasl":[18,19,40,41,49,50]},
+"80": {"ghunnah":[2,5,53,56],"lam_shamsiyyah":[49,50,58,59],"madd_246":[93,94],"madd_muttasil":[64,66],"qalqalah":[87,89],"silent":[82,84],"hamzat_wasl":[21,22,48,49,57,58]},
+"81": {"ikhfa":[9,12,34,38,52,56],"idghaam_ghunnah":[72,76],"idghaam_shafawi":[102,107],"madd_2":[17,18,40,41,91,92],"madd_246":[113,114],"madd_munfasil":[4,6],"hamzat_wasl":[22,23]},
+"82": {"ghunnah":[97,100,103,106],"idghaam_ghunnah":[63,68],"lam_shamsiyyah":[102,103],"madd_2":[127,128],"madd_246":[145,146],"madd_6":[57,59],"qalqalah":[42,44],"silent":[116,118],"hamzat_wasl":[15,16,71,72,101,102]},
+"83": {"ghunnah":[30,33,47,50],"ikhfa":[20,24,34,38],"idghaam_ghunnah":[41,47,50,54],"madd_2":[70,71],"madd_246":[91,92]},
+"84": {"ghunnah":[89,92],"ikhfa":[99,102],"ikhfa_shafawi":[40,44],"madd_2":[50,51],"madd_246":[113,114],"madd_munfasil":[5,8],"madd_muttasil":[17,19],"qalqalah":[36,38],"silent":[70,72]},
+"85": {"ikhfa":[58,61],"ikhfa_shafawi":[27,31],"madd_246":[63,64],"silent":[42,44],"hamzat_wasl":[9,10]},
+"86": {"ghunnah":[18,21,66,69,87,90],"idghaam_ghunnah":[122,126],"idghaam_no_ghunnah":[112,117],"lam_shamsiyyah":[65,66],"madd_2":[97,98,110,111],"madd_246":[132,133],"qalqalah":[77,79],"silent":[13,15,53,55],"hamzat_wasl":[33,34,64,65]},
+"87": {"ikhfa":[11,14,41,45,65,69,90,94],"lam_shamsiyyah":[22,23,48,49],"madd_2":[54,55,57,58,126,127],"madd_246":[131,132],"madd_muttasil":[94,96],"hamzat_wasl":[21,22,47,48,71,72,99,100]},
+"88": {"ghunnah":[121,124],"iqlab":[134,138],"idghaam_ghunnah":[39,43],"lam_shamsiyyah":[63,64],"madd_2":[126,127],"madd_246":[151,152],"madd_munfasil":[94,96],"hamzat_wasl":[8,9,62,63,80,81,88,89]},
+"89": {"ikhfa":[2,6,58,62],"idghaam_ghunnah":[38,43,65,69],"idghaam_shafawi":[53,58],"madd_2":[31,32],"madd_246":[85,86],"madd_muttasil":[6,8],"hamzat_wasl":[13,14]},
+"90": {"ghunnah":[56,59],"ikhfa":[4,8,92,95],"lam_shamsiyyah":[16,17,55,56],"madd_246":[106,107],"madd_muttasil":[8,10],"qalqalah":[70,72],"hamzat_wasl":[15,16,54,55]},
+"91": {"ghunnah":[2,5],"idghaam_ghunnah":[97,101],"madd_2":[41,42,84,85],"madd_246":[139,140],"madd_munfasil":[7,9],"hamzat_wasl":[47,48,59,60,128,129]},
+"92": {"ghunnah":[52,55,102,105],"ikhfa":[85,89,127,130],"madd_2":[79,80],"madd_246":[132,133],"madd_munfasil":[107,109],"silent":[15,17],"hamzat_wasl":[18,19,38,39,122,123]},
+"93": {"ghunnah":[92,95],"madd_2":[42,43,47,48,84,85],"madd_246":[105,106],"hamzat_wasl":[7,8]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/28.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/28.json
index 6abb293..3b7173d 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/28.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/28.json
@@ -1,90 +1,90 @@
{
-"1": {"madd-lazim":[40,42,42,44]},
-"2": {"madd":[12,13,23,24,34,35],"wasl":[16,17,27,28]},
-"3": {"idgham":[21,26,70,74],"madd":[80,81],"silent":[7,9],"wasl":[54,55]},
-"4": {"ghunnah":[2,5,152,155],"idgham":[61,66,86,91],"madd":[79,81,114,116,135,136,141,143,157,158,181,182],"qalqalah":[110,112],"wasl":[27,28,170,171]},
-"5": {"ghunnah":[19,22,87,90],"idgham":[12,17,91,95],"madd":[113,114,118,119],"qalqalah":[72,74,97,99],"silent":[51,53],"wasl":[29,30,39,40,58,59,108,109]},
-"6": {"idgham":[85,90],"madd":[57,58,60,61,109,110],"silent":[98,100],"wasl":[23,24]},
-"7": {"ghunnah":[25,28,100,103,138,141],"madd":[12,14,19,22,34,37,133,135,192,193],"madd-lazim":[145,147],"wasl":[95,96,181,182]},
-"8": {"ghunnah":[71,74],"idgham":[56,61],"madd":[13,15,90,91,93,94,123,124,129,130],"silent":[118,120],"wasl":[2,3]},
-"9": {"ghunnah":[88,91],"idgham":[44,49,84,88,121,126],"madd":[78,81,95,97,114,115,143,144],"qalqalah":[64,66],"wasl":[10,11]},
-"10": {"ghunnah":[21,24,44,48],"idgham":[81,86],"madd":[35,36,68,69,76,78,137,138],"qalqalah":[58,60,88,90],"wasl":[126,127]},
-"11": {"ghunnah":[50,54],"idgham":[57,61],"madd":[20,21,46,47,78,79]},
-"12": {"ghunnah":[37,41],"idgham":[93,97],"madd":[77,80,108,109,128,129,132,133,137,138],"qalqalah":[41,43],"wasl":[22,23]},
-"13": {"ghunnah":[24,27,84,87,116,119],"idgham":[107,111],"madd":[10,11,18,21,29,30,113,114,145,146],"qalqalah":[6,8],"wasl":[95,96]},
-"14": {"ghunnah":[4,7],"idgham":[58,63,68,73],"madd":[25,26,36,39,49,50,77,78,102,103],"qalqalah":[85,87],"wasl":[29,30,91,92]},
-"15": {"ghunnah":[110,114,173,177,294,297],"idgham":[42,47,280,281,307,312,316,321],"madd":[103,104,121,122,127,128,146,147,157,158,184,185,214,215,226,227,262,263,288,289,299,300,323,324],"qalqalah":[89,91],"wasl":[9,10,150,151,163,164,192,193,279,280]},
-"16": {"ghunnah":[14,17,68,71],"idgham":[92,93],"madd":[63,65,73,74,98,99],"wasl":[38,39,80,81,91,92]},
-"17": {"idgham":[59,65],"madd":[16,18,75,76],"qalqalah":[69,71]},
-"18": {"ghunnah":[71,74,131,134],"idgham":[35,40,145,150],"madd":[30,32,78,79,106,107,118,119,125,128,152,153],"wasl":[15,16,58,59,66,67,82,83]},
-"19": {"ghunnah":[4,7,98,102,132,137,150,154,170,174,187,192,220,224],"idgham":[25,29,57,62],"madd":[7,9,76,77,82,85,165,167,246,247],"qalqalah":[29,31,102,104],"wasl":[38,39,138,139,194,195,235,236]},
-"20": {"ghunnah":[72,75,131,134,148,151],"idgham":[14,19,147,148],"madd":[4,6,60,61,66,69,151,152,156,157],"qalqalah":[24,26,109,111,126,128],"wasl":[30,31,76,77,121,122,146,147]},
-"21": {"idgham":[24,29,76,77],"madd":[19,21,80,81,85,86],"wasl":[65,66,75,76]},
-"22": {"ghunnah":[4,7],"idgham":[62,66,86,87],"madd":[25,27,57,59,80,82,92,93],"qalqalah":[32,34],"wasl":[85,86]},
-"23": {"ghunnah":[4,7,50,53,64,67,92,96,217,221],"idgham":[54,59,63,64,190,191],"madd":[18,20,196,198,223,224],"qalqalah":[25,27,141,143],"wasl":[62,63,104,105,189,190]},
-"24": {"ghunnah":[19,22,65,68,79,82,105,109],"idgham":[41,42],"madd":[30,33,74,76,111,112],"wasl":[40,41]},
-"25": {"ghunnah":[53,57,65,68,128,131],"idgham":[212,213],"madd":[4,6,20,21,50,52,135,137,141,142,216,217,221,222],"qalqalah":[77,79,89,91,100,102],"wasl":[41,42,160,161,201,202,211,212]},
-"26": {"ghunnah":[50,53],"madd":[15,16,24,26,99,100],"wasl":[33,34,66,67,81,82,92,93]},
-"27": {"ghunnah":[8,11,29,32,76,80,105,109,130,135,142,145,200,204],"idgham":[223,224],"madd":[11,13,58,59,70,73,94,95,152,154,195,197,204,206,227,228,232,233],"qalqalah":[46,48],"wasl":[45,46,209,210,222,223]},
-"28": {"madd":[8,9,77,78,122,123],"qalqalah":[73,75],"wasl":[42,43,91,92]},
-"29": {"ghunnah":[4,7,64,68,87,92,121,124,205,208],"idgham":[75,76,141,147,163,168,195,200,204,205],"madd":[51,53,114,116,124,126,152,154,232,233],"silent":[116,118],"wasl":[23,24,74,75,107,108,203,204]},
-"30": {"ghunnah":[4,7,30,34,127,130],"idgham":[98,99,111,115],"madd":[7,9,15,16,34,35,84,85,115,116,121,124,130,132,158,159,163,164],"qalqalah":[70,72],"wasl":[40,41,49,50,65,66,77,78,97,98,139,140,153,154]},
-"31": {"ghunnah":[26,29,54,57,65,68,140,143],"idgham":[67,71,84,89],"madd":[106,107,112,115,161,162],"madd-lazim":[63,65],"qalqalah":[79,81,101,103,118,120],"wasl":[151,152]},
-"32": {"ghunnah":[182,185,204,209],"idgham":[65,69,102,103,136,141],"madd":[43,45,62,64,115,116,127,128,177,179,209,210,214,215],"qalqalah":[34,36],"silent":[173,175,196,198],"wasl":[69,70,101,102]},
-"33": {"ghunnah":[14,17,42,47],"idgham":[57,61],"madd":[67,68],"qalqalah":[61,63]},
-"34": {"ghunnah":[33,36,44,49,91,94],"idgham":[72,77,107,111],"madd":[10,11,86,88,94,96,118,119],"qalqalah":[69,71]},
-"35": {"ghunnah":[62,67,111,114],"madd":[60,61,101,102,106,108,144,145,149,150],"qalqalah":[39,41],"wasl":[125,126,139,140]},
-"36": {"ghunnah":[4,7,52,56],"idgham":[17,22,87,92,97,102],"madd":[11,13,36,37,50,51,69,70,72,74,120,121,127,129,135,137,153,154],"silent":[60,62],"wasl":[143,144]},
-"37": {"ghunnah":[37,41,65,68,76,80,113,116],"idgham":[103,104,134,135],"madd":[21,23,41,43,70,71,90,91,94,95,118,119,138,139,143,144],"wasl":[48,49,102,103,133,134]},
-"38": {"ghunnah":[196,199,207,210],"idgham":[59,64,117,118,144,150],"madd":[21,23,71,72,100,101,103,104,106,107,155,157,172,175,180,181,212,213,224,225,229,230],"qalqalah":[91,93,128,130],"wasl":[32,33,116,117,127,128,219,220]},
-"39": {"ghunnah":[68,71,78,81],"madd":[30,31,71,73,108,109],"silent":[73,75],"wasl":[2,3,36,37,55,56]},
-"40": {"ghunnah":[52,55,59,62],"idgham":[89,90],"madd":[10,11,25,26,37,38,80,81,93,94,98,99],"wasl":[47,48,58,59,88,89]},
-"41": {"ghunnah":[20,23,44,47,79,82],"idgham":[24,28,43,44],"madd":[10,11,67,68,84,85],"qalqalah":[28,30],"wasl":[42,43,60,61]},
-"42": {"idgham":[31,32,48,52,74,79],"madd":[12,13,24,25,66,67,94,95],"qalqalah":[87,89],"wasl":[30,31,59,60,82,83]},
-"43": {"ghunnah":[41,44,103,106],"idgham":[102,103,115,120,127,132],"madd":[34,35,52,54,93,95,153,154],"qalqalah":[6,8],"wasl":[27,28,67,68,78,79]},
-"44": {"ghunnah":[8,11,83,86],"idgham":[93,94],"madd":[48,50,97,98,102,103],"wasl":[22,23,65,66,92,93]},
-"45": {"ghunnah":[7,10,15,18,30,35,74,77,84,89,148,151,155,158],"madd":[4,5,10,12,89,91,134,135,145,146,168,169],"qalqalah":[101,103],"silent":[115,117],"wasl":[56,57]},
-"46": {"ghunnah":[8,11,84,87,131,135],"idgham":[23,24,54,59,64,69,69,74,95,101,112,117,117,122,126,131],"madd":[51,52,101,103,109,110,165,166],"qalqalah":[135,137],"wasl":[22,23]},
-"47": {"ghunnah":[13,17,35,39,124,129],"idgham":[24,29],"madd":[8,10,94,96,144,145,176,177],"silent":[76,78],"wasl":[165,166]},
-"48": {"ghunnah":[4,7,36,39,144,148,197,200,208,212],"madd":[11,13,58,60,78,80,94,97,123,125,176,177,190,192,212,213,217,218],"qalqalah":[148,150],"silent":[49,51,116,118,159,161,192,194],"wasl":[20,21]},
-"49": {"ghunnah":[33,36,84,88,88,91],"idgham":[23,28],"madd":[21,22,67,69,96,97,101,102],"silent":[12,14],"wasl":[37,38]},
-"50": {"ghunnah":[44,47,96,99,151,154],"idgham":[4,9,132,138,186,187],"madd":[70,72,116,117,190,191,195,196],"silent":[24,26],"wasl":[34,35,102,103,141,142,155,156,175,176,185,186]},
-"51": {"madd":[60,61],"qalqalah":[6,8],"wasl":[27,28]},
-"52": {"ghunnah":[38,42,52,56],"madd":[19,20,32,33,48,49,58,59,68,69],"qalqalah":[42,44],"wasl":[25,26]},
-"53": {"ghunnah":[43,46,57,60,89,92,96,99,103,107],"idgham":[74,79],"madd":[33,35,52,54,84,86,113,114,123,124],"qalqalah":[107,109],"silent":[35,37],"wasl":[63,64]},
-"54": {"ghunnah":[108,111,129,132],"idgham":[32,37,92,93],"madd":[6,8,121,122,134,135],"qalqalah":[26,28,67,69,117,119],"silent":[2,4,60,62],"wasl":[79,80,91,92]},
-"55": {"idgham":[19,20],"madd":[62,64,71,72,93,94,105,106,139,140,144,145],"qalqalah":[126,128],"silent":[15,17,37,39,55,57],"wasl":[18,19,134,135]},
-"56": {"ghunnah":[2,5,43,46],"idgham":[65,69],"madd":[40,41,71,73,105,106],"qalqalah":[31,33],"wasl":[47,48,94,95]},
-"57": {"ghunnah":[176,179,188,191],"idgham":[14,19,88,93,112,117,155,160,163,169,169,174],"madd":[7,9,69,71,121,124,140,141,185,186,217,218],"qalqalah":[117,119],"silent":[9,11],"wasl":[27,28]},
-"58": {"ghunnah":[21,25,30,34,95,98,128,131],"idgham":[89,94,121,126],"madd":[68,69,145,146,150,151],"wasl":[140,141]},
-"59": {"ghunnah":[63,66,120,123],"idgham":[76,81],"madd":[58,60,105,106,142,145,167,168,172,173],"qalqalah":[49,51],"silent":[86,88],"wasl":[29,30,135,136]},
-"60": {"ghunnah":[20,24,27,31,83,86],"idgham":[15,20,52,53,100,104],"madd":[4,6,35,36,47,48,110,113,130,131],"qalqalah":[106,108],"silent":[46,47],"wasl":[39,40,51,52,87,88]},
-"61": {"ghunnah":[33,38,105,108],"idgham":[6,10,56,61,93,94],"madd":[16,17,45,46,68,69,76,77,88,89,128,129,150,151],"qalqalah":[12,14],"silent":[87,88],"wasl":[80,81,92,93,121,122,139,140]},
-"62": {"ghunnah":[64,67],"madd":[45,47,78,79],"wasl":[52,53]},
-"63": {"madd":[54,56,60,62,85,87,98,99,131,133,152,154,175,176],"silent":[154,156],"wasl":[6,7,33,34,65,66]},
-"64": {"ghunnah":[103,106],"madd":[23,25,128,129],"qalqalah":[9,11],"silent":[14,16,64,66,82,84,117,119],"wasl":[8,9,85,86]},
-"65": {"madd":[37,39,62,63],"qalqalah":[44,46],"wasl":[51,52]},
-"66": {"ghunnah":[28,30,45,49],"madd":[31,33,64,66,70,71],"wasl":[22,23]},
-"67": {"ghunnah":[4,7,11,15,44,49],"idgham":[59,63],"madd":[40,41,53,56,85,86],"wasl":[74,75]},
-"68": {"ghunnah":[105,108],"madd":[27,29,79,80,97,98,118,119],"qalqalah":[75,77],"wasl":[61,62,83,84]},
-"69": {"ghunnah":[27,30],"madd":[57,58]},
-"70": {"madd":[17,19,24,25,121,122],"wasl":[7,8,45,46,59,60,72,73,92,93]},
-"71": {"ghunnah":[20,24,131,135],"madd":[88,89,103,104,139,141,160,161],"wasl":[29,30,48,49,81,82,114,115]},
-"72": {"ghunnah":[20,24,50,53,133,137,142,146],"idgham":[49,50],"madd":[90,91,105,106,178,179],"qalqalah":[172,174],"wasl":[29,30,48,49,83,84,116,117]},
-"73": {"ghunnah":[46,49,93,97],"idgham":[4,9,45,46],"madd":[17,18,103,104,127,128],"qalqalah":[81,83],"silent":[66,68,88,90],"wasl":[33,34,44,45]},
-"74": {"ghunnah":[64,67],"madd":[45,47,78,79],"wasl":[52,53]},
-"75": {"ghunnah":[14,18,24,27,28,32,36,41,87,90],"idgham":[122,127],"madd":[64,65,80,82,146,147],"silent":[55,57,82,84,135,137],"wasl":[91,92]},
-"76": {"ghunnah":[2,5,23,27,98,101,201,204],"madd":[8,9,71,72,93,95,113,114,121,123,174,175,184,185,234,235],"silent":[142,144],"wasl":[80,81,128,129,148,149,205,206,225,226]},
-"77": {"ghunnah":[66,69,104,108,179,182],"idgham":[37,38,86,87],"madd":[15,17,24,25,110,112,214,215],"qalqalah":[3,5,147,149],"wasl":[2,3,28,29,36,37,45,46,85,86,122,123,152,153,167,168,183,184,203,204]},
-"78": {"ghunnah":[8,11,44,47,70,73,98,102,196,200],"idgham":[157,161,175,180],"madd":[13,15,26,27,47,49,108,109,221,222],"qalqalah":[84,86,102,104,215,217],"wasl":[74,75,115,116,210,211]},
-"79": {"ghunnah":[138,141],"idgham":[81,82],"madd":[24,25,39,40,76,77,93,94,116,118,129,130,143,144,161,162],"silent":[75,76],"wasl":[47,48,68,69,80,81]},
-"80": {"idgham":[69,74,102,107,133,134],"madd":[98,99,119,120,122,124,137,138,142,143],"silent":[24,26],"wasl":[8,9,27,28,56,57,132,133]},
-"81": {"ghunnah":[60,64,71,74,85,89,123,126],"idgham":[67,71],"madd":[16,17,56,57,81,82,130,131],"wasl":[30,31,93,94,118,119]},
-"82": {"ghunnah":[25,28,75,78,164,167,209,212],"idgham":[97,98,110,114,159,164],"madd":[42,43,116,118,135,136,154,156,214,215,234,235,239,240],"qalqalah":[89,91,141,143],"silent":[30,32],"wasl":[11,12,46,47,79,80,96,97,168,169,229,230]},
-"83": {"ghunnah":[73,78],"idgham":[8,9,102,107],"madd":[112,113,131,132],"qalqalah":[31,33],"wasl":[7,8,16,17,80,81,107,108]},
-"84": {"ghunnah":[2,6,53,57],"idgham":[38,43,65,66,112,113],"madd":[6,8,31,32,57,59,154,155],"qalqalah":[85,87],"silent":[108,110,143,145],"wasl":[13,14,64,65,91,92,111,112]},
-"85": {"ghunnah":[2,5,68,72,94,98],"idgham":[72,73,137,142],"madd":[80,82,98,100,135,136,144,145],"madd-lazim":[47,49],"wasl":[6,7,30,31,105,106]},
-"86": {"ghunnah":[8,11,100,103],"idgham":[25,29,71,76,76,81,110,116],"madd":[18,20,33,36,53,54,120,121,125,126],"silent":[20,22],"wasl":[46,47]},
-"87": {"ghunnah":[13,16,55,58,108,111],"madd":[29,30,128,129],"qalqalah":[75,77],"wasl":[33,34,74,75,117,118]},
-"88": {"madd":[30,31,45,47,52,53,104,105,140,141],"qalqalah":[8,10,98,100],"wasl":[18,19,111,112]}
+"1": {"madd_6":[40,42,42,44]},
+"2": {"madd_2":[12,13,23,24],"madd_246":[34,35],"hamzat_wasl":[16,17,27,28]},
+"3": {"idghaam_ghunnah":[21,26,70,74],"madd_246":[80,81],"silent":[7,9],"hamzat_wasl":[54,55]},
+"4": {"ghunnah":[2,5,152,155],"idghaam_ghunnah":[61,66,86,91],"madd_2":[135,136,157,158],"madd_246":[181,182],"madd_muttasil":[79,81,114,116,141,143],"qalqalah":[110,112],"hamzat_wasl":[27,28,170,171]},
+"5": {"ghunnah":[19,22,87,90],"idghaam_ghunnah":[12,17,91,95],"madd_2":[113,114],"madd_246":[118,119],"qalqalah":[72,74,97,99],"silent":[51,53],"hamzat_wasl":[29,30,39,40,58,59,108,109]},
+"6": {"idghaam_shafawi":[85,90],"madd_2":[57,58,60,61],"madd_246":[109,110],"silent":[98,100],"hamzat_wasl":[23,24]},
+"7": {"ghunnah":[25,28,100,103,138,141],"madd_246":[192,193],"madd_munfasil":[12,14,19,22,34,37,133,135],"madd_6":[145,147],"hamzat_wasl":[95,96,181,182]},
+"8": {"ghunnah":[71,74],"idghaam_ghunnah":[56,61],"madd_2":[90,91,93,94,123,124],"madd_246":[129,130],"madd_munfasil":[13,15],"silent":[118,120],"hamzat_wasl":[2,3]},
+"9": {"ikhfa":[88,91],"idghaam_ghunnah":[84,88,121,126],"idghaam_no_ghunnah":[44,49],"madd_2":[114,115],"madd_246":[143,144],"madd_munfasil":[78,81,95,97],"qalqalah":[64,66],"hamzat_wasl":[10,11]},
+"10": {"ghunnah":[21,24],"ikhfa":[44,48],"idghaam_no_ghunnah":[81,86],"madd_2":[35,36,68,69],"madd_246":[137,138],"madd_munfasil":[76,78],"qalqalah":[58,60,88,90],"hamzat_wasl":[126,127]},
+"11": {"ikhfa":[50,54],"idghaam_ghunnah":[57,61],"madd_2":[20,21,46,47],"madd_246":[78,79]},
+"12": {"ikhfa":[37,41],"idghaam_ghunnah":[93,97],"madd_2":[108,109,128,129,132,133],"madd_246":[137,138],"madd_munfasil":[77,80],"qalqalah":[41,43],"hamzat_wasl":[22,23]},
+"13": {"ghunnah":[24,27,84,87,116,119],"idghaam_ghunnah":[107,111],"madd_2":[10,11,29,30,113,114],"madd_246":[145,146],"madd_munfasil":[18,21],"qalqalah":[6,8],"hamzat_wasl":[95,96]},
+"14": {"ghunnah":[4,7],"idghaam_ghunnah":[58,63,68,73],"madd_2":[25,26,49,50,77,78],"madd_246":[102,103],"madd_munfasil":[36,39],"qalqalah":[85,87],"hamzat_wasl":[29,30,91,92]},
+"15": {"ghunnah":[294,297],"ikhfa":[110,114,173,177],"idghaam_ghunnah":[42,47,307,312,316,321],"lam_shamsiyyah":[280,281],"madd_2":[103,104,121,122,127,128,146,147,157,158,184,185,214,215,226,227,262,263,288,289,299,300],"madd_246":[323,324],"qalqalah":[89,91],"hamzat_wasl":[9,10,150,151,163,164,192,193,279,280]},
+"16": {"ghunnah":[14,17,68,71],"lam_shamsiyyah":[92,93],"madd_2":[73,74],"madd_246":[98,99],"madd_munfasil":[63,65],"hamzat_wasl":[38,39,80,81,91,92]},
+"17": {"idghaam_no_ghunnah":[59,65],"madd_246":[75,76],"madd_munfasil":[16,18],"qalqalah":[69,71]},
+"18": {"ghunnah":[131,134],"ikhfa":[71,74],"idghaam_ghunnah":[35,40,145,150],"madd_2":[78,79,106,107,118,119],"madd_246":[152,153],"madd_munfasil":[125,128],"madd_muttasil":[30,32],"hamzat_wasl":[15,16,58,59,66,67,82,83]},
+"19": {"ghunnah":[4,7],"ikhfa":[98,102,150,154,170,174,187,192,220,224],"iqlab":[132,137],"idghaam_ghunnah":[25,29],"idghaam_no_ghunnah":[57,62],"madd_2":[76,77],"madd_246":[246,247],"madd_munfasil":[7,9,82,85,165,167],"qalqalah":[29,31,102,104],"hamzat_wasl":[38,39,138,139,194,195,235,236]},
+"20": {"ghunnah":[72,75,131,134,148,151],"idghaam_ghunnah":[14,19],"lam_shamsiyyah":[147,148],"madd_2":[60,61,151,152],"madd_246":[156,157],"madd_munfasil":[66,69],"madd_muttasil":[4,6],"qalqalah":[24,26,109,111,126,128],"hamzat_wasl":[30,31,76,77,121,122,146,147]},
+"21": {"idghaam_ghunnah":[24,29],"lam_shamsiyyah":[76,77],"madd_2":[80,81],"madd_246":[85,86],"madd_muttasil":[19,21],"hamzat_wasl":[65,66,75,76]},
+"22": {"ghunnah":[4,7],"idghaam_ghunnah":[62,66],"lam_shamsiyyah":[86,87],"madd_246":[92,93],"madd_munfasil":[57,59],"madd_muttasil":[25,27,80,82],"qalqalah":[32,34],"hamzat_wasl":[85,86]},
+"23": {"ghunnah":[4,7,50,53,64,67],"ikhfa":[92,96,217,221],"idghaam_ghunnah":[54,59],"lam_shamsiyyah":[63,64,190,191],"madd_246":[223,224],"madd_muttasil":[18,20,196,198],"qalqalah":[25,27,141,143],"hamzat_wasl":[62,63,104,105,189,190]},
+"24": {"ghunnah":[19,22,65,68],"ikhfa":[79,82,105,109],"lam_shamsiyyah":[41,42],"madd_246":[111,112],"madd_munfasil":[30,33,74,76],"hamzat_wasl":[40,41]},
+"25": {"ghunnah":[65,68,128,131],"ikhfa":[53,57],"lam_shamsiyyah":[212,213],"madd_2":[20,21,141,142,216,217],"madd_246":[221,222],"madd_muttasil":[4,6,50,52,135,137],"qalqalah":[77,79,89,91,100,102],"hamzat_wasl":[41,42,160,161,201,202,211,212]},
+"26": {"ghunnah":[50,53],"madd_2":[15,16],"madd_246":[99,100],"madd_munfasil":[24,26],"hamzat_wasl":[33,34,66,67,81,82,92,93]},
+"27": {"ghunnah":[8,11],"ikhfa":[29,32,76,80,105,109,130,135,142,145,200,204],"lam_shamsiyyah":[223,224],"madd_2":[58,59,94,95,227,228],"madd_246":[232,233],"madd_munfasil":[11,13,70,73,152,154,195,197],"madd_muttasil":[204,206],"qalqalah":[46,48],"hamzat_wasl":[45,46,209,210,222,223]},
+"28": {"madd_2":[8,9,77,78],"madd_246":[122,123],"qalqalah":[73,75],"hamzat_wasl":[42,43,91,92]},
+"29": {"ghunnah":[4,7,121,124,205,208],"ikhfa":[64,68,87,92],"idghaam_ghunnah":[195,200],"idghaam_no_ghunnah":[141,147],"idghaam_shafawi":[163,168],"lam_shamsiyyah":[75,76,204,205],"madd_246":[232,233],"madd_munfasil":[51,53,114,116,124,126,152,154],"silent":[116,118],"hamzat_wasl":[23,24,74,75,107,108,203,204]},
+"30": {"ghunnah":[4,7,127,130],"ikhfa":[30,34],"idghaam_ghunnah":[111,115],"lam_shamsiyyah":[98,99],"madd_2":[15,16,34,35,84,85,115,116,158,159],"madd_246":[163,164],"madd_munfasil":[7,9,121,124,130,132],"qalqalah":[70,72],"hamzat_wasl":[40,41,49,50,65,66,77,78,97,98,139,140,153,154]},
+"31": {"ghunnah":[26,29,54,57,65,68,140,143],"idghaam_ghunnah":[67,71,84,89],"madd_2":[106,107],"madd_246":[161,162],"madd_munfasil":[112,115],"madd_6":[63,65],"qalqalah":[79,81,101,103,118,120],"hamzat_wasl":[151,152]},
+"32": {"ghunnah":[182,185],"ikhfa":[204,209],"idghaam_ghunnah":[65,69],"idghaam_no_ghunnah":[136,141],"lam_shamsiyyah":[102,103],"madd_2":[115,116,127,128,209,210],"madd_246":[214,215],"madd_munfasil":[177,179],"madd_muttasil":[43,45,62,64],"qalqalah":[34,36],"silent":[173,175,196,198],"hamzat_wasl":[69,70,101,102]},
+"33": {"ghunnah":[14,17],"ikhfa":[42,47],"idghaam_ghunnah":[57,61],"madd_246":[67,68],"qalqalah":[61,63]},
+"34": {"ghunnah":[33,36,91,94],"ikhfa":[44,49],"idghaam_ghunnah":[72,77,107,111],"madd_2":[10,11],"madd_246":[118,119],"madd_munfasil":[86,88,94,96],"qalqalah":[69,71]},
+"35": {"ikhfa":[62,67,111,114],"madd_2":[60,61,101,102,144,145],"madd_246":[149,150],"madd_munfasil":[106,108],"qalqalah":[39,41],"hamzat_wasl":[125,126,139,140]},
+"36": {"ghunnah":[4,7],"ikhfa":[52,56],"idghaam_ghunnah":[87,92,97,102],"idghaam_shafawi":[17,22],"madd_2":[36,37,50,51,69,70,120,121],"madd_246":[153,154],"madd_munfasil":[72,74,127,129],"madd_muttasil":[11,13,135,137],"silent":[60,62],"hamzat_wasl":[143,144]},
+"37": {"ghunnah":[113,116],"ikhfa":[37,41,65,68,76,80],"lam_shamsiyyah":[103,104,134,135],"madd_2":[70,71,90,91,94,95,118,119,138,139],"madd_246":[143,144],"madd_munfasil":[21,23],"madd_muttasil":[41,43],"hamzat_wasl":[48,49,102,103,133,134]},
+"38": {"ghunnah":[196,199,207,210],"idghaam_no_ghunnah":[144,150],"idghaam_shafawi":[59,64],"lam_shamsiyyah":[117,118],"madd_2":[71,72,100,101,103,104,106,107,180,181,212,213,224,225],"madd_246":[229,230],"madd_munfasil":[21,23,155,157,172,175],"qalqalah":[91,93,128,130],"hamzat_wasl":[32,33,116,117,127,128,219,220]},
+"39": {"ghunnah":[68,71,78,81],"madd_2":[30,31],"madd_246":[108,109],"madd_munfasil":[71,73],"silent":[73,75],"hamzat_wasl":[2,3,36,37,55,56]},
+"40": {"ghunnah":[52,55],"ikhfa":[59,62],"lam_shamsiyyah":[89,90],"madd_2":[10,11,25,26,37,38,80,81,93,94],"madd_246":[98,99],"hamzat_wasl":[47,48,58,59,88,89]},
+"41": {"ghunnah":[20,23,44,47],"ikhfa":[79,82],"idghaam_ghunnah":[24,28],"lam_shamsiyyah":[43,44],"madd_2":[10,11,67,68],"madd_246":[84,85],"qalqalah":[28,30],"hamzat_wasl":[42,43,60,61]},
+"42": {"idghaam_ghunnah":[48,52],"idghaam_shafawi":[74,79],"lam_shamsiyyah":[31,32],"madd_2":[12,13,24,25,66,67],"madd_246":[94,95],"qalqalah":[87,89],"hamzat_wasl":[30,31,59,60,82,83]},
+"43": {"ghunnah":[103,106],"iqlab":[41,44],"idghaam_ghunnah":[115,120],"idghaam_no_ghunnah":[127,132],"lam_shamsiyyah":[102,103],"madd_2":[34,35],"madd_246":[153,154],"madd_munfasil":[52,54],"madd_muttasil":[93,95],"qalqalah":[6,8],"hamzat_wasl":[27,28,67,68,78,79]},
+"44": {"ikhfa":[8,11,83,86],"lam_shamsiyyah":[93,94],"madd_2":[97,98],"madd_246":[102,103],"madd_munfasil":[48,50],"hamzat_wasl":[22,23,65,66,92,93]},
+"45": {"ghunnah":[7,10,148,151,155,158],"ikhfa":[15,18,30,35,74,77,84,89],"madd_2":[4,5,134,135,145,146],"madd_246":[168,169],"madd_munfasil":[10,12,89,91],"qalqalah":[101,103],"silent":[115,117],"hamzat_wasl":[56,57]},
+"46": {"ikhfa":[8,11,84,87,131,135],"idghaam_ghunnah":[64,69,95,101,117,122,126,131],"idghaam_no_ghunnah":[54,59,69,74],"idghaam_shafawi":[112,117],"lam_shamsiyyah":[23,24],"madd_2":[51,52,109,110],"madd_246":[165,166],"madd_munfasil":[101,103],"qalqalah":[135,137],"hamzat_wasl":[22,23]},
+"47": {"ikhfa":[13,17,124,129],"iqlab":[35,39],"idghaam_shafawi":[24,29],"madd_2":[144,145],"madd_246":[176,177],"madd_munfasil":[8,10,94,96],"silent":[76,78],"hamzat_wasl":[165,166]},
+"48": {"ghunnah":[4,7,197,200],"ikhfa":[36,39,144,148,208,212],"madd_2":[176,177,212,213],"madd_246":[217,218],"madd_munfasil":[58,60,78,80,94,97,123,125,190,192],"madd_muttasil":[11,13],"qalqalah":[148,150],"silent":[49,51,116,118,159,161,192,194],"hamzat_wasl":[20,21]},
+"49": {"ikhfa":[33,36,84,88,88,91],"idghaam_ghunnah":[23,28],"madd_2":[21,22,96,97],"madd_246":[101,102],"madd_munfasil":[67,69],"silent":[12,14],"hamzat_wasl":[37,38]},
+"50": {"ghunnah":[44,47,96,99,151,154],"idghaam_ghunnah":[132,138],"idghaam_no_ghunnah":[4,9],"lam_shamsiyyah":[186,187],"madd_2":[116,117,190,191],"madd_246":[195,196],"madd_muttasil":[70,72],"silent":[24,26],"hamzat_wasl":[34,35,102,103,141,142,155,156,175,176,185,186]},
+"51": {"madd_246":[60,61],"qalqalah":[6,8],"hamzat_wasl":[27,28]},
+"52": {"ikhfa":[38,42],"ikhfa_shafawi":[52,56],"madd_2":[19,20,32,33,48,49,58,59],"madd_246":[68,69],"qalqalah":[42,44],"hamzat_wasl":[25,26]},
+"53": {"ghunnah":[43,46,57,60,89,92,96,99],"ikhfa":[103,107],"idghaam_no_ghunnah":[74,79],"madd_2":[113,114],"madd_246":[123,124],"madd_munfasil":[33,35,52,54,84,86],"qalqalah":[107,109],"silent":[35,37],"hamzat_wasl":[63,64]},
+"54": {"ghunnah":[108,111],"ikhfa":[129,132],"idghaam_shafawi":[32,37],"lam_shamsiyyah":[92,93],"madd_2":[121,122],"madd_246":[134,135],"madd_muttasil":[6,8],"qalqalah":[26,28,67,69,117,119],"silent":[2,4,60,62],"hamzat_wasl":[79,80,91,92]},
+"55": {"lam_shamsiyyah":[19,20],"madd_2":[71,72,93,94,105,106,139,140],"madd_246":[144,145],"madd_munfasil":[62,64],"qalqalah":[126,128],"silent":[15,17,37,39,55,57],"hamzat_wasl":[18,19,134,135]},
+"56": {"ghunnah":[2,5,43,46],"idghaam_ghunnah":[65,69],"madd_2":[40,41],"madd_246":[105,106],"madd_muttasil":[71,73],"qalqalah":[31,33],"hamzat_wasl":[47,48,94,95]},
+"57": {"ghunnah":[176,179,188,191],"idghaam_ghunnah":[14,19,112,117,163,169],"idghaam_no_ghunnah":[88,93,155,160,169,174],"madd_2":[140,141,185,186],"madd_246":[217,218],"madd_munfasil":[7,9,69,71,121,124],"qalqalah":[117,119],"silent":[9,11],"hamzat_wasl":[27,28]},
+"58": {"ghunnah":[128,131],"ikhfa":[21,25],"iqlab":[30,34,95,98],"idghaam_ghunnah":[89,94,121,126],"madd_2":[68,69,145,146],"madd_246":[150,151],"hamzat_wasl":[140,141]},
+"59": {"ghunnah":[63,66,120,123],"idghaam_ghunnah":[76,81],"madd_2":[105,106,167,168],"madd_246":[172,173],"madd_munfasil":[58,60,142,145],"qalqalah":[49,51],"silent":[86,88],"hamzat_wasl":[29,30,135,136]},
+"60": {"ikhfa":[20,24,27,31,83,86],"idghaam_ghunnah":[100,104],"idghaam_shafawi":[15,20],"lam_shamsiyyah":[52,53],"madd_2":[35,36,47,48],"madd_246":[130,131],"madd_munfasil":[4,6,110,113],"qalqalah":[106,108],"silent":[46,47],"hamzat_wasl":[39,40,51,52,87,88]},
+"61": {"ghunnah":[105,108],"ikhfa":[33,38],"idghaam_ghunnah":[6,10,56,61],"lam_shamsiyyah":[93,94],"madd_2":[16,17,45,46,68,69,76,77,88,89,128,129],"madd_246":[150,151],"qalqalah":[12,14],"silent":[87,88],"hamzat_wasl":[80,81,92,93,121,122,139,140]},
+"62": {"ikhfa":[64,67],"madd_246":[78,79],"madd_muttasil":[45,47],"hamzat_wasl":[52,53]},
+"63": {"madd_2":[98,99],"madd_246":[175,176],"madd_munfasil":[85,87,131,133,152,154],"madd_muttasil":[54,56,60,62],"silent":[154,156],"hamzat_wasl":[6,7,33,34,65,66]},
+"64": {"ghunnah":[103,106],"madd_246":[128,129],"madd_muttasil":[23,25],"qalqalah":[9,11],"silent":[14,16,64,66,82,84,117,119],"hamzat_wasl":[8,9,85,86]},
+"65": {"madd_246":[62,63],"madd_munfasil":[37,39],"qalqalah":[44,46],"hamzat_wasl":[51,52]},
+"66": {"ikhfa":[45,49],"iqlab":[28,30],"madd_246":[70,71],"madd_muttasil":[31,33,64,66],"hamzat_wasl":[22,23]},
+"67": {"ghunnah":[4,7],"ikhfa":[11,15,44,49],"idghaam_ghunnah":[59,63],"madd_2":[40,41],"madd_246":[85,86],"madd_munfasil":[53,56],"hamzat_wasl":[74,75]},
+"68": {"ghunnah":[105,108],"madd_2":[79,80,97,98],"madd_246":[118,119],"madd_muttasil":[27,29],"qalqalah":[75,77],"hamzat_wasl":[61,62,83,84]},
+"69": {"ghunnah":[27,30],"madd_246":[57,58]},
+"70": {"madd_2":[24,25],"madd_246":[121,122],"madd_munfasil":[17,19],"hamzat_wasl":[7,8,45,46,59,60,72,73,92,93]},
+"71": {"ikhfa":[20,24],"ikhfa_shafawi":[131,135],"madd_2":[88,89,103,104],"madd_246":[160,161],"madd_muttasil":[139,141],"hamzat_wasl":[29,30,48,49,81,82,114,115]},
+"72": {"ghunnah":[50,53],"ikhfa":[20,24,142,146],"ikhfa_shafawi":[133,137],"lam_shamsiyyah":[49,50],"madd_2":[90,91,105,106],"madd_246":[178,179],"qalqalah":[172,174],"hamzat_wasl":[29,30,48,49,83,84,116,117]},
+"73": {"ghunnah":[46,49],"ikhfa":[93,97],"idghaam_no_ghunnah":[4,9],"lam_shamsiyyah":[45,46],"madd_2":[17,18,103,104],"madd_246":[127,128],"qalqalah":[81,83],"silent":[66,68,88,90],"hamzat_wasl":[33,34,44,45]},
+"74": {"ikhfa":[64,67],"madd_246":[78,79],"madd_muttasil":[45,47],"hamzat_wasl":[52,53]},
+"75": {"ghunnah":[24,27,87,90],"ikhfa":[14,18,28,32,36,41],"idghaam_shafawi":[122,127],"madd_2":[64,65],"madd_246":[146,147],"madd_munfasil":[80,82],"silent":[55,57,82,84,135,137],"hamzat_wasl":[91,92]},
+"76": {"ghunnah":[2,5,98,101,201,204],"ikhfa":[23,27],"madd_2":[8,9,71,72,113,114,174,175,184,185],"madd_246":[234,235],"madd_munfasil":[93,95,121,123],"silent":[142,144],"hamzat_wasl":[80,81,128,129,148,149,205,206,225,226]},
+"77": {"ghunnah":[179,182],"ikhfa":[66,69,104,108],"lam_shamsiyyah":[37,38,86,87],"madd_2":[24,25],"madd_246":[214,215],"madd_munfasil":[15,17,110,112],"qalqalah":[3,5,147,149],"hamzat_wasl":[2,3,28,29,36,37,45,46,85,86,122,123,152,153,167,168,183,184,203,204]},
+"78": {"ghunnah":[8,11,70,73],"ikhfa":[44,47,98,102,196,200],"idghaam_ghunnah":[157,161,175,180],"madd_2":[26,27,108,109],"madd_246":[221,222],"madd_munfasil":[13,15,47,49],"qalqalah":[84,86,102,104,215,217],"hamzat_wasl":[74,75,115,116,210,211]},
+"79": {"ghunnah":[138,141],"lam_shamsiyyah":[81,82],"madd_2":[24,25,39,40,76,77,93,94,129,130,143,144],"madd_246":[161,162],"madd_munfasil":[116,118],"silent":[75,76],"hamzat_wasl":[47,48,68,69,80,81]},
+"80": {"idghaam_ghunnah":[102,107],"idghaam_no_ghunnah":[69,74],"lam_shamsiyyah":[133,134],"madd_2":[98,99,119,120,137,138],"madd_246":[142,143],"madd_munfasil":[122,124],"silent":[24,26],"hamzat_wasl":[8,9,27,28,56,57,132,133]},
+"81": {"ikhfa":[60,64,71,74,85,89,123,126],"idghaam_ghunnah":[67,71],"madd_2":[16,17,56,57,81,82],"madd_246":[130,131],"hamzat_wasl":[30,31,93,94,118,119]},
+"82": {"ghunnah":[25,28,75,78,164,167,209,212],"idghaam_ghunnah":[110,114,159,164],"lam_shamsiyyah":[97,98],"madd_2":[42,43,135,136,214,215,234,235],"madd_246":[239,240],"madd_munfasil":[154,156],"madd_muttasil":[116,118],"qalqalah":[89,91,141,143],"silent":[30,32],"hamzat_wasl":[11,12,46,47,79,80,96,97,168,169,229,230]},
+"83": {"ikhfa":[73,78],"idghaam_ghunnah":[102,107],"lam_shamsiyyah":[8,9],"madd_2":[112,113],"madd_246":[131,132],"qalqalah":[31,33],"hamzat_wasl":[7,8,16,17,80,81,107,108]},
+"84": {"ikhfa":[2,6,53,57],"idghaam_ghunnah":[38,43],"lam_shamsiyyah":[65,66,112,113],"madd_2":[31,32],"madd_246":[154,155],"madd_muttasil":[6,8,57,59],"qalqalah":[85,87],"silent":[108,110,143,145],"hamzat_wasl":[13,14,64,65,91,92,111,112]},
+"85": {"ghunnah":[2,5],"ikhfa":[68,72,94,98],"idghaam_ghunnah":[137,142],"idghaam_mutaqaribayn":[72,73],"madd_2":[135,136],"madd_246":[144,145],"madd_munfasil":[80,82],"madd_muttasil":[98,100],"madd_6":[47,49],"hamzat_wasl":[6,7,30,31,105,106]},
+"86": {"ghunnah":[100,103],"ikhfa":[8,11],"idghaam_ghunnah":[25,29,71,76],"idghaam_no_ghunnah":[76,81,110,116],"madd_2":[53,54,120,121],"madd_246":[125,126],"madd_munfasil":[18,20,33,36],"silent":[20,22],"hamzat_wasl":[46,47]},
+"87": {"ghunnah":[13,16,108,111],"ikhfa":[55,58],"madd_2":[29,30],"madd_246":[128,129],"qalqalah":[75,77],"hamzat_wasl":[33,34,74,75,117,118]},
+"88": {"madd_2":[30,31,52,53,104,105],"madd_246":[140,141],"madd_munfasil":[45,47],"qalqalah":[8,10,98,100],"hamzat_wasl":[18,19,111,112]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/29.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/29.json
index f2728d0..bbd1adb 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/29.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/29.json
@@ -1,71 +1,71 @@
{
-"1": {"madd-lazim":[40,42,42,44]},
-"2": {"ghunnah":[11,14,56,59],"idgham":[10,11,20,24,37,41],"madd":[30,32,46,48,80,81],"silent":[32,34,48,50],"wasl":[9,10]},
-"3": {"ghunnah":[13,16,30,34,55,58,99,102],"madd":[108,109,113,114],"qalqalah":[6,8,34,36],"silent":[84,86],"wasl":[18,19,59,60,67,68,103,104]},
-"4": {"idgham":[35,36,51,55],"madd":[68,70,85,86],"wasl":[12,13,34,35]},
-"5": {"ghunnah":[2,6,41,44],"idgham":[66,70,76,77],"madd":[24,26,93,94],"silent":[17,19],"wasl":[29,30,52,53,75,76,86,87]},
-"6": {"ghunnah":[4,8,18,21,50,53],"madd":[8,9,29,30,45,47,82,83,87,88],"wasl":[54,55,77,78]},
-"7": {"ghunnah":[60,63,101,104],"idgham":[36,37],"madd":[40,41,45,46,143,144],"qalqalah":[95,97],"silent":[20,22,32,34,132,134],"wasl":[2,3,35,36,118,119]},
-"8": {"ghunnah":[18,21,51,55,106,110,161,165,171,174],"idgham":[44,49],"madd":[21,22,29,30,55,56,99,100,124,126,185,186],"wasl":[13,14]},
-"9": {"ghunnah":[59,62],"idgham":[36,37,72,73],"madd":[40,41,45,46,76,77,81,82],"qalqalah":[53,55],"silent":[20,22,32,34],"wasl":[2,3,35,36,71,72]},
-"10": {"ghunnah":[9,12,33,36,95,98,126,130,165,168,171,174,178,181],"idgham":[8,9,18,22,94,95,140,145,145,150],"madd":[54,56,130,132,245,246,250,251],"wasl":[7,8,40,41,69,70,93,94,112,113,203,204,240,241]},
-"11": {"ghunnah":[12,15,57,60],"madd":[68,69,73,74],"silent":[42,44],"wasl":[16,17,24,25,61,62]},
-"12": {"ghunnah":[107,111,142,146,153,156],"idgham":[137,142],"madd":[90,91,93,94,113,114,131,132,134,135,165,166,170,171],"silent":[25,27,47,49,59,61],"wasl":[8,9,50,51]},
-"13": {"ghunnah":[12,15,76,79,102,105],"idgham":[40,46],"madd":[94,95,124,125],"silent":[113,115],"wasl":[87,88]},
-"14": {"ghunnah":[97,102],"idgham":[114,115],"madd":[43,44,134,135,139,140],"qalqalah":[6,8],"wasl":[113,114]},
-"15": {"ghunnah":[4,7],"idgham":[28,29,62,67],"madd":[11,12,23,24,50,51,53,55,71,72,76,77],"wasl":[27,28]},
-"16": {"ghunnah":[95,99,99,102],"idgham":[83,88],"madd":[8,9,70,71,113,114],"qalqalah":[4,6],"silent":[45,47],"wasl":[37,38,48,49,58,59]},
-"17": {"ghunnah":[2,5,23,27,74,77,102,106,146,151,164,167],"idgham":[47,52,177,178],"madd":[45,46,216,218,236,237],"qalqalah":[152,154],"silent":[159,161,209,211],"wasl":[31,32,78,79,110,111,151,152,168,169,176,177,188,189,201,202]},
-"18": {"ghunnah":[4,8,44,48],"idgham":[39,44,70,71],"madd":[94,95,105,106],"qalqalah":[23,25,48,50],"silent":[16,18],"wasl":[69,70,87,88,98,99]},
-"19": {"ghunnah":[54,57,72,75],"madd":[67,69,78,79,102,103],"qalqalah":[27,29],"silent":[15,17],"wasl":[34,35,42,43,90,91]},
-"20": {"ghunnah":[31,34,66,69,80,83,88,91,113,116,143,147],"idgham":[87,88],"madd":[149,150],"silent":[11,13,37,39],"wasl":[18,19,30,31,54,55,70,71,86,87,98,99,117,118]},
-"21": {"idgham":[12,16,36,40],"madd":[18,20,42,44,66,67],"qalqalah":[60,62]},
-"22": {"ghunnah":[9,12,12,16,79,83],"idgham":[53,54,74,79,97,101,105,109],"madd":[4,6,59,61,117,118],"wasl":[32,33,52,53,87,88]},
-"23": {"idgham":[82,87],"madd":[30,31,48,50,54,56,63,65,103,105,129,130],"silent":[19,21,59,61,77,79,99,101],"wasl":[2,3,34,35]},
-"24": {"ghunnah":[41,45,83,86,106,109,115,118],"idgham":[105,106,140,145,150,154],"madd":[28,30,36,38,87,88,125,126,138,139,160,161],"qalqalah":[53,55],"silent":[49,51],"wasl":[52,53,91,92,104,105]},
-"25": {"ghunnah":[10,13,32,36,110,113,151,155,181,185,208,211],"idgham":[27,32,56,62,98,99,160,164,188,193,207,208,225,230,230,235],"madd":[54,55,93,94,128,129,200,201,235,236,240,241],"silent":[92,93],"wasl":[17,18,40,41,85,86,97,98,121,122,206,207]},
-"26": {"ghunnah":[33,36,65,68],"idgham":[21,25],"madd":[15,16,60,62,70,71,95,96],"wasl":[77,78,88,89]},
-"27": {"ghunnah":[72,75,140,143],"idgham":[71,72,126,127,172,173],"madd":[16,18,25,26,92,93,107,108,119,120,145,146,176,177,181,182],"qalqalah":[6,8,113,115],"wasl":[70,71,85,86,125,126,151,152,171,172]},
-"28": {"ghunnah":[35,38,80,84],"idgham":[98,103],"madd":[30,32,60,61,111,112,116,117],"wasl":[55,56,106,107]},
-"29": {"ghunnah":[4,7,92,95,139,143,179,183,183,186],"idgham":[25,26,50,51,193,194],"madd":[126,128,134,136,197,198,202,203],"qalqalah":[39,41],"silent":[147,149],"wasl":[24,25,49,50,87,88,150,151,169,170,192,193]},
-"30": {"ghunnah":[13,16],"madd":[49,50],"wasl":[12,13,28,29,38,39]},
-"31": {"ghunnah":[4,7,68,71,115,118],"madd":[11,13,26,28,35,36,61,63,81,83,95,96,140,141,145,146],"qalqalah":[31,33],"silent":[63,65,83,85,135,137],"wasl":[44,45,101,102]},
-"32": {"ghunnah":[8,11,23,28,55,59,75,78],"madd":[80,81,92,94,113,114,133,134,138,139],"silent":[32,34],"wasl":[102,103,128,129]},
-"33": {"ghunnah":[4,7,12,16,37,42,116,119],"idgham":[74,79],"madd":[7,9,16,18,42,44,180,181,185,186],"silent":[85,87],"wasl":[150,151,175,176]},
-"34": {"ghunnah":[2,5,9,12],"idgham":[58,64,68,69],"madd":[22,25,35,36,74,76,102,103],"qalqalah":[55,57],"silent":[91,93],"wasl":[41,42,67,68]},
-"35": {"ghunnah":[34,38],"idgham":[6,7,45,50,55,59],"madd":[25,27,65,66]},
-"36": {"ghunnah":[35,40],"madd":[48,49,146,147],"qalqalah":[11,13],"silent":[64,66,83,85,121,123],"wasl":[56,57,67,68,77,78,86,87,96,97,128,129]},
-"37": {"idgham":[29,30],"madd":[70,71,75,76],"qalqalah":[33,35],"silent":[51,53],"wasl":[28,29]},
-"38": {"idgham":[6,11,25,26,42,47,47,52,82,83,126,127],"madd":[54,55,90,91,100,101,159,160],"qalqalah":[153,155],"silent":[18,20,144,146],"wasl":[81,82,125,126]},
-"39": {"idgham":[52,57],"madd":[4,5,28,29,31,32,46,48,75,76,127,128,132,133],"qalqalah":[41,43],"silent":[93,95,122,124],"wasl":[65,66,81,82,100,101]},
-"40": {"ghunnah":[24,26,227,231,241,244],"idgham":[39,44,74,79,85,90,105,106,124,129,165,170],"madd":[29,30,224,225,234,236,259,260],"qalqalah":[179,181],"silent":[236,238],"wasl":[104,105,147,148,197,198]},
-"41": {"ghunnah":[31,35,74,77,106,109,144,147],"idgham":[99,104],"madd":[55,57,175,176],"silent":[26,28,164,166],"wasl":[7,8,17,18,39,40,69,70,83,84,119,120,139,140]},
-"42": {"ghunnah":[2,5,39,43,52,56],"idgham":[59,63],"madd":[48,49,86,87],"qalqalah":[29,31],"wasl":[6,7,68,69,79,80]},
-"43": {"ghunnah":[37,40],"idgham":[36,37],"madd":[18,19,60,62,75,76,80,81],"wasl":[9,10,70,71]},
-"44": {"ghunnah":[54,57],"idgham":[16,17,78,83],"madd":[22,23,25,26,64,65,93,94],"wasl":[7,8,15,16,31,32,43,44]},
-"45": {"ghunnah":[67,70,118,121],"idgham":[54,55,72,73],"madd":[8,10,40,41,61,62,79,80,106,108,183,184],"silent":[60,61,78,79],"wasl":[33,34,53,54,71,72,97,98,113,114,135,136,154,155]},
-"46": {"ghunnah":[122,125,140,143,160,163],"idgham":[210,214],"madd":[10,11,15,17,34,35,112,114,135,137,183,184,196,197,206,207,225,226,235,236],"silent":[17,19,93,95,114,116],"wasl":[27,28,47,48,76,77,129,130]},
-"47": {"ghunnah":[14,17],"idgham":[122,126],"madd":[6,7,21,23,40,41,65,66,78,79,98,99,109,111,115,117,137,138,162,163,167,169,182,183,187,188],"qalqalah":[147,149],"wasl":[33,34,46,47,71,72,177,178]},
-"48": {"ghunnah":[8,11,24,28,38,42],"idgham":[46,50,80,86],"madd":[34,35,44,45,63,64,106,107],"qalqalah":[28,30,100,102],"silent":[19,21],"wasl":[86,87,95,96]},
-"49": {"ghunnah":[17,21,29,33],"idgham":[111,112],"madd":[15,16,27,28,95,96,100,102,115,116,120,121],"qalqalah":[80,82],"silent":[59,61],"wasl":[43,44,62,63,110,111]},
-"50": {"ghunnah":[22,25,68,71,89,92,105,108],"idgham":[44,49,49,54,126,131],"madd":[17,19,42,43,59,60,83,84,110,112,133,134],"silent":[8,10],"wasl":[75,76,93,94]},
-"51": {"ghunnah":[22,25,30,33,81,84],"idgham":[106,110,126,130],"madd":[25,27,55,56,91,92,136,137],"wasl":[48,49]},
-"52": {"idgham":[49,54,70,71],"madd":[76,77,79,80,125,126,159,161,176,177,181,182],"silent":[115,117,140,142,155,157],"wasl":[14,15,69,70,85,86,97,98,120,121,145,146,171,172]},
-"53": {"ghunnah":[56,59,98,101,103,107],"idgham":[49,54,58,64,112,116],"madd":[41,43,66,68,133,134],"wasl":[22,23,75,76]},
-"54": {"ghunnah":[35,38,43,46,59,63],"madd":[69,70,74,75],"wasl":[20,21,64,65]},
-"55": {"ghunnah":[33,37,50,54,97,100],"madd":[14,15,111,112],"silent":[88,90],"wasl":[20,21]},
-"56": {"ghunnah":[37,40,57,61],"madd":[2,3,30,32,51,52,66,67,79,80],"silent":[32,34],"wasl":[13,14,72,73]},
-"57": {"ghunnah":[11,15,36,39],"madd":[15,17,58,59],"wasl":[24,25]},
-"58": {"ghunnah":[60,63,78,81,89,94,102,106],"idgham":[36,37,65,70],"madd":[40,41,45,46,123,124,129,130,164,165,169,170],"qalqalah":[94,96,154,156],"silent":[20,22,32,34],"wasl":[2,3,35,36,73,74,114,115,159,160]},
-"59": {"madd":[50,51],"silent":[17,19]},
-"60": {"ghunnah":[14,18],"idgham":[9,14,24,29,91,92],"madd":[108,109],"madd-lazim":[18,20],"wasl":[50,51,90,91,101,102]},
-"61": {"ghunnah":[6,10,100,103,116,119],"idgham":[18,23,34,35,70,71],"madd":[40,41,43,44,130,131],"wasl":[33,34,49,50,69,70,81,82,104,105]},
-"62": {"ghunnah":[78,81],"idgham":[18,19,31,35],"madd":[37,39,56,57,73,75,109,110],"qalqalah":[10,12,62,64],"wasl":[17,18,82,83]},
-"63": {"ghunnah":[6,10,56,60,86,89,114,117],"idgham":[18,23,23,28,40,41],"madd":[46,48,53,55,179,180],"wasl":[39,40,73,74,118,119,131,132]},
-"64": {"ghunnah":[65,68],"idgham":[27,28,50,54,59,63,70,71],"madd":[8,9,22,23,35,37,133,134],"silent":[21,22,122,124],"wasl":[14,15,26,27,69,70,78,79,98,99]},
-"65": {"ghunnah":[79,82],"idgham":[67,68],"madd":[90,91,130,131],"silent":[15,17,38,40],"wasl":[22,23,41,42,66,67,102,103]},
-"66": {"madd":[18,20,30,31,72,73],"silent":[11,13,52,54]},
-"67": {"ghunnah":[20,23,68,71],"idgham":[49,54,67,68],"madd":[102,103,149,150],"silent":[15,17],"wasl":[66,67,97,98,133,134]},
-"68": {"ghunnah":[18,21,82,85,115,118],"idgham":[126,132],"madd":[89,91,95,97,136,137,141,142],"wasl":[24,25,40,41,71,72]},
-"69": {"ghunnah":[40,43,62,65],"madd":[14,15,92,93],"silent":[20,22],"wasl":[2,3,66,67,81,82]}
+"1": {"madd_6":[40,42,42,44]},
+"2": {"ghunnah":[11,14,56,59],"idghaam_ghunnah":[20,24,37,41],"lam_shamsiyyah":[10,11],"madd_246":[80,81],"madd_munfasil":[30,32,46,48],"silent":[32,34,48,50],"hamzat_wasl":[9,10]},
+"3": {"ghunnah":[13,16,55,58,99,102],"ikhfa":[30,34],"madd_2":[108,109],"madd_246":[113,114],"qalqalah":[6,8,34,36],"silent":[84,86],"hamzat_wasl":[18,19,59,60,67,68,103,104]},
+"4": {"idghaam_ghunnah":[51,55],"lam_shamsiyyah":[35,36],"madd_246":[85,86],"madd_muttasil":[68,70],"hamzat_wasl":[12,13,34,35]},
+"5": {"ghunnah":[41,44],"ikhfa":[2,6],"idghaam_ghunnah":[66,70],"lam_shamsiyyah":[76,77],"madd_246":[93,94],"madd_muttasil":[24,26],"silent":[17,19],"hamzat_wasl":[29,30,52,53,75,76,86,87]},
+"6": {"ghunnah":[18,21,50,53],"ikhfa":[4,8],"madd_2":[8,9,29,30,82,83],"madd_246":[87,88],"madd_munfasil":[45,47],"hamzat_wasl":[54,55,77,78]},
+"7": {"ghunnah":[60,63,101,104],"lam_shamsiyyah":[36,37],"madd_2":[40,41,45,46],"madd_246":[143,144],"qalqalah":[95,97],"silent":[20,22,32,34,132,134],"hamzat_wasl":[2,3,35,36,118,119]},
+"8": {"ikhfa":[18,21,51,55,106,110,171,174],"ikhfa_shafawi":[161,165],"idghaam_ghunnah":[44,49],"madd_2":[21,22,29,30,55,56,99,100],"madd_246":[185,186],"madd_munfasil":[124,126],"hamzat_wasl":[13,14]},
+"9": {"ghunnah":[59,62],"lam_shamsiyyah":[36,37,72,73],"madd_2":[40,41,45,46,76,77],"madd_246":[81,82],"qalqalah":[53,55],"silent":[20,22,32,34],"hamzat_wasl":[2,3,35,36,71,72]},
+"10": {"ghunnah":[9,12,33,36,95,98,165,168,171,174,178,181],"ikhfa":[126,130],"idghaam_ghunnah":[18,22,140,145],"idghaam_no_ghunnah":[145,150],"lam_shamsiyyah":[8,9,94,95],"madd_2":[245,246],"madd_246":[250,251],"madd_munfasil":[54,56],"madd_muttasil":[130,132],"hamzat_wasl":[7,8,40,41,69,70,93,94,112,113,203,204,240,241]},
+"11": {"ghunnah":[12,15,57,60],"madd_2":[68,69],"madd_246":[73,74],"silent":[42,44],"hamzat_wasl":[16,17,24,25,61,62]},
+"12": {"ghunnah":[153,156],"ikhfa":[142,146],"ikhfa_shafawi":[107,111],"idghaam_shafawi":[137,142],"madd_2":[90,91,93,94,113,114,131,132,134,135,165,166],"madd_246":[170,171],"silent":[25,27,47,49,59,61],"hamzat_wasl":[8,9,50,51]},
+"13": {"ghunnah":[12,15,76,79,102,105],"idghaam_ghunnah":[40,46],"madd_2":[94,95],"madd_246":[124,125],"silent":[113,115],"hamzat_wasl":[87,88]},
+"14": {"ikhfa":[97,102],"lam_shamsiyyah":[114,115],"madd_2":[43,44,134,135],"madd_246":[139,140],"qalqalah":[6,8],"hamzat_wasl":[113,114]},
+"15": {"ikhfa":[4,7],"idghaam_no_ghunnah":[62,67],"lam_shamsiyyah":[28,29],"madd_2":[11,12,23,24,50,51,71,72],"madd_246":[76,77],"madd_munfasil":[53,55],"hamzat_wasl":[27,28]},
+"16": {"ikhfa":[95,99,99,102],"idghaam_no_ghunnah":[83,88],"madd_2":[8,9,70,71],"madd_246":[113,114],"qalqalah":[4,6],"silent":[45,47],"hamzat_wasl":[37,38,48,49,58,59]},
+"17": {"ghunnah":[2,5,74,77],"ikhfa":[23,27,102,106,146,151,164,167],"idghaam_ghunnah":[47,52],"lam_shamsiyyah":[177,178],"madd_2":[45,46],"madd_246":[236,237],"madd_munfasil":[216,218],"qalqalah":[152,154],"silent":[159,161,209,211],"hamzat_wasl":[31,32,78,79,110,111,151,152,168,169,176,177,188,189,201,202]},
+"18": {"ikhfa":[4,8,44,48],"idghaam_ghunnah":[39,44],"lam_shamsiyyah":[70,71],"madd_2":[94,95],"madd_246":[105,106],"qalqalah":[23,25,48,50],"silent":[16,18],"hamzat_wasl":[69,70,87,88,98,99]},
+"19": {"ghunnah":[54,57,72,75],"madd_2":[78,79],"madd_246":[102,103],"madd_munfasil":[67,69],"qalqalah":[27,29],"silent":[15,17],"hamzat_wasl":[34,35,42,43,90,91]},
+"20": {"ghunnah":[66,69,88,91,113,116],"ikhfa":[31,34,80,83,143,147],"lam_shamsiyyah":[87,88],"madd_246":[149,150],"silent":[11,13,37,39],"hamzat_wasl":[18,19,30,31,54,55,70,71,86,87,98,99,117,118]},
+"21": {"idghaam_ghunnah":[12,16,36,40],"madd_246":[66,67],"madd_muttasil":[18,20,42,44],"qalqalah":[60,62]},
+"22": {"ikhfa":[9,12,79,83],"ikhfa_shafawi":[12,16],"idghaam_ghunnah":[97,101,105,109],"idghaam_shafawi":[74,79],"lam_shamsiyyah":[53,54],"madd_246":[117,118],"madd_munfasil":[4,6],"madd_muttasil":[59,61],"hamzat_wasl":[32,33,52,53,87,88]},
+"23": {"idghaam_no_ghunnah":[82,87],"madd_2":[30,31],"madd_246":[129,130],"madd_munfasil":[54,56],"madd_muttasil":[48,50,63,65,103,105],"silent":[19,21,59,61,77,79,99,101],"hamzat_wasl":[2,3,34,35]},
+"24": {"ghunnah":[106,109,115,118],"ikhfa":[41,45,83,86],"idghaam_ghunnah":[150,154],"idghaam_no_ghunnah":[140,145],"lam_shamsiyyah":[105,106],"madd_2":[87,88,125,126,138,139],"madd_246":[160,161],"madd_munfasil":[28,30,36,38],"qalqalah":[53,55],"silent":[49,51],"hamzat_wasl":[52,53,91,92,104,105]},
+"25": {"ghunnah":[10,13,110,113,208,211],"ikhfa":[32,36],"ikhfa_shafawi":[151,155,181,185],"idghaam_ghunnah":[56,62,160,164,188,193,230,235],"idghaam_shafawi":[27,32,225,230],"lam_shamsiyyah":[98,99,207,208],"madd_2":[54,55,93,94,128,129,200,201,235,236],"madd_246":[240,241],"silent":[92,93],"hamzat_wasl":[17,18,40,41,85,86,97,98,121,122,206,207]},
+"26": {"ghunnah":[33,36,65,68],"idghaam_ghunnah":[21,25],"madd_2":[15,16,70,71],"madd_246":[95,96],"madd_munfasil":[60,62],"hamzat_wasl":[77,78,88,89]},
+"27": {"ghunnah":[72,75,140,143],"lam_shamsiyyah":[71,72,126,127,172,173],"madd_2":[25,26,92,93,107,108,119,120,145,146,176,177],"madd_246":[181,182],"madd_munfasil":[16,18],"qalqalah":[6,8,113,115],"hamzat_wasl":[70,71,85,86,125,126,151,152,171,172]},
+"28": {"ghunnah":[35,38],"ikhfa_shafawi":[80,84],"idghaam_ghunnah":[98,103],"madd_2":[60,61,111,112],"madd_246":[116,117],"madd_munfasil":[30,32],"hamzat_wasl":[55,56,106,107]},
+"29": {"ghunnah":[4,7],"ikhfa":[92,95,139,143,179,183,183,186],"lam_shamsiyyah":[25,26,50,51,193,194],"madd_2":[197,198],"madd_246":[202,203],"madd_munfasil":[126,128,134,136],"qalqalah":[39,41],"silent":[147,149],"hamzat_wasl":[24,25,49,50,87,88,150,151,169,170,192,193]},
+"30": {"ikhfa":[13,16],"madd_246":[49,50],"hamzat_wasl":[12,13,28,29,38,39]},
+"31": {"ghunnah":[4,7,68,71,115,118],"madd_2":[35,36,95,96,140,141],"madd_246":[145,146],"madd_munfasil":[26,28,61,63,81,83],"madd_muttasil":[11,13],"qalqalah":[31,33],"silent":[63,65,83,85,135,137],"hamzat_wasl":[44,45,101,102]},
+"32": {"ghunnah":[8,11,75,78],"ikhfa":[23,28,55,59],"madd_2":[80,81,113,114,133,134],"madd_246":[138,139],"madd_munfasil":[92,94],"silent":[32,34],"hamzat_wasl":[102,103,128,129]},
+"33": {"ghunnah":[4,7,116,119],"ikhfa":[12,16,37,42],"idghaam_ghunnah":[74,79],"madd_2":[180,181],"madd_246":[185,186],"madd_munfasil":[7,9],"madd_muttasil":[16,18,42,44],"silent":[85,87],"hamzat_wasl":[150,151,175,176]},
+"34": {"ghunnah":[2,5],"ikhfa":[9,12],"idghaam_ghunnah":[58,64],"lam_shamsiyyah":[68,69],"madd_2":[35,36],"madd_246":[102,103],"madd_munfasil":[22,25],"madd_muttasil":[74,76],"qalqalah":[55,57],"silent":[91,93],"hamzat_wasl":[41,42,67,68]},
+"35": {"iqlab":[34,38],"idghaam_ghunnah":[55,59],"idghaam_mutajanisayn":[6,7],"idghaam_no_ghunnah":[45,50],"madd_246":[65,66],"madd_munfasil":[25,27]},
+"36": {"ikhfa":[35,40],"madd_2":[48,49],"madd_246":[146,147],"qalqalah":[11,13],"silent":[64,66,83,85,121,123],"hamzat_wasl":[56,57,67,68,77,78,86,87,96,97,128,129]},
+"37": {"lam_shamsiyyah":[29,30],"madd_2":[70,71],"madd_246":[75,76],"qalqalah":[33,35],"silent":[51,53],"hamzat_wasl":[28,29]},
+"38": {"idghaam_ghunnah":[6,11,47,52],"idghaam_mutajanisayn":[25,26],"idghaam_shafawi":[42,47],"lam_shamsiyyah":[82,83,126,127],"madd_2":[54,55,90,91,100,101],"madd_246":[159,160],"qalqalah":[153,155],"silent":[18,20,144,146],"hamzat_wasl":[81,82,125,126]},
+"39": {"idghaam_shafawi":[52,57],"madd_2":[4,5,28,29,31,32,75,76,127,128],"madd_246":[132,133],"madd_muttasil":[46,48],"qalqalah":[41,43],"silent":[93,95,122,124],"hamzat_wasl":[65,66,81,82,100,101]},
+"40": {"ikhfa":[227,231,241,244],"iqlab":[24,26],"idghaam_ghunnah":[74,79],"idghaam_shafawi":[39,44,85,90,124,129,165,170],"lam_shamsiyyah":[105,106],"madd_2":[29,30,224,225],"madd_246":[259,260],"madd_munfasil":[234,236],"qalqalah":[179,181],"silent":[236,238],"hamzat_wasl":[104,105,147,148,197,198]},
+"41": {"ghunnah":[106,109],"ikhfa":[31,35,74,77,144,147],"idghaam_ghunnah":[99,104],"madd_246":[175,176],"madd_muttasil":[55,57],"silent":[26,28,164,166],"hamzat_wasl":[7,8,17,18,39,40,69,70,83,84,119,120,139,140]},
+"42": {"ghunnah":[2,5],"ikhfa":[39,43,52,56],"idghaam_ghunnah":[59,63],"madd_2":[48,49],"madd_246":[86,87],"qalqalah":[29,31],"hamzat_wasl":[6,7,68,69,79,80]},
+"43": {"ghunnah":[37,40],"lam_shamsiyyah":[36,37],"madd_2":[18,19,75,76],"madd_246":[80,81],"madd_munfasil":[60,62],"hamzat_wasl":[9,10,70,71]},
+"44": {"ghunnah":[54,57],"idghaam_no_ghunnah":[78,83],"lam_shamsiyyah":[16,17],"madd_2":[22,23,25,26,64,65],"madd_246":[93,94],"hamzat_wasl":[7,8,15,16,31,32,43,44]},
+"45": {"ghunnah":[67,70],"ikhfa":[118,121],"lam_shamsiyyah":[54,55,72,73],"madd_2":[40,41,61,62,79,80],"madd_246":[183,184],"madd_munfasil":[8,10],"madd_muttasil":[106,108],"silent":[60,61,78,79],"hamzat_wasl":[33,34,53,54,71,72,97,98,113,114,135,136,154,155]},
+"46": {"ghunnah":[122,125],"ikhfa":[140,143,160,163],"idghaam_ghunnah":[210,214],"madd_2":[10,11,34,35,183,184,196,197,206,207,225,226],"madd_246":[235,236],"madd_munfasil":[15,17,112,114,135,137],"silent":[17,19,93,95,114,116],"hamzat_wasl":[27,28,47,48,76,77,129,130]},
+"47": {"ikhfa":[14,17],"idghaam_ghunnah":[122,126],"madd_2":[6,7,40,41,65,66,78,79,98,99,137,138,162,163,182,183],"madd_246":[187,188],"madd_munfasil":[21,23,167,169],"madd_muttasil":[109,111,115,117],"qalqalah":[147,149],"hamzat_wasl":[33,34,46,47,71,72,177,178]},
+"48": {"ikhfa":[8,11,24,28,38,42],"idghaam_ghunnah":[46,50],"idghaam_no_ghunnah":[80,86],"madd_2":[34,35,44,45,63,64],"madd_246":[106,107],"qalqalah":[28,30,100,102],"silent":[19,21],"hamzat_wasl":[86,87,95,96]},
+"49": {"ikhfa":[29,33],"iqlab":[17,21],"lam_shamsiyyah":[111,112],"madd_2":[15,16,27,28,95,96,115,116],"madd_246":[120,121],"madd_munfasil":[100,102],"qalqalah":[80,82],"silent":[59,61],"hamzat_wasl":[43,44,62,63,110,111]},
+"50": {"ghunnah":[68,71,105,108],"ikhfa":[22,25,89,92],"idghaam_ghunnah":[44,49,126,131],"idghaam_no_ghunnah":[49,54],"madd_2":[42,43,59,60,83,84],"madd_246":[133,134],"madd_munfasil":[17,19,110,112],"silent":[8,10],"hamzat_wasl":[75,76,93,94]},
+"51": {"ghunnah":[22,25,81,84],"ikhfa":[30,33],"idghaam_ghunnah":[106,110,126,130],"madd_2":[55,56,91,92],"madd_246":[136,137],"madd_munfasil":[25,27],"hamzat_wasl":[48,49]},
+"52": {"idghaam_ghunnah":[49,54],"lam_shamsiyyah":[70,71],"madd_2":[76,77,79,80,125,126,176,177],"madd_246":[181,182],"madd_muttasil":[159,161],"silent":[115,117,140,142,155,157],"hamzat_wasl":[14,15,69,70,85,86,97,98,120,121,145,146,171,172]},
+"53": {"ghunnah":[56,59,98,101],"ikhfa_shafawi":[103,107],"idghaam_ghunnah":[49,54,112,116],"idghaam_no_ghunnah":[58,64],"madd_246":[133,134],"madd_munfasil":[41,43],"madd_muttasil":[66,68],"hamzat_wasl":[22,23,75,76]},
+"54": {"ghunnah":[35,38,43,46],"iqlab":[59,63],"madd_2":[69,70],"madd_246":[74,75],"hamzat_wasl":[20,21,64,65]},
+"55": {"ikhfa":[33,37,50,54,97,100],"madd_2":[14,15],"madd_246":[111,112],"silent":[88,90],"hamzat_wasl":[20,21]},
+"56": {"ghunnah":[37,40],"ikhfa":[57,61],"madd_2":[2,3,51,52,66,67],"madd_246":[79,80],"madd_munfasil":[30,32],"silent":[32,34],"hamzat_wasl":[13,14,72,73]},
+"57": {"ghunnah":[36,39],"ikhfa":[11,15],"madd_246":[58,59],"madd_muttasil":[15,17],"hamzat_wasl":[24,25]},
+"58": {"ghunnah":[60,63,78,81],"ikhfa":[89,94,102,106],"idghaam_shafawi":[65,70],"lam_shamsiyyah":[36,37],"madd_2":[40,41,45,46,123,124,129,130,164,165],"madd_246":[169,170],"qalqalah":[94,96,154,156],"silent":[20,22,32,34],"hamzat_wasl":[2,3,35,36,73,74,114,115,159,160]},
+"59": {"madd_246":[50,51],"silent":[17,19]},
+"60": {"ikhfa":[14,18],"idghaam_ghunnah":[9,14],"idghaam_no_ghunnah":[24,29],"lam_shamsiyyah":[91,92],"madd_246":[108,109],"madd_6":[18,20],"hamzat_wasl":[50,51,90,91,101,102]},
+"61": {"ghunnah":[100,103,116,119],"ikhfa":[6,10],"idghaam_shafawi":[18,23],"lam_shamsiyyah":[34,35,70,71],"madd_2":[40,41,43,44],"madd_246":[130,131],"hamzat_wasl":[33,34,49,50,69,70,81,82,104,105]},
+"62": {"ghunnah":[78,81],"idghaam_ghunnah":[31,35],"lam_shamsiyyah":[18,19],"madd_2":[56,57],"madd_246":[109,110],"madd_munfasil":[73,75],"madd_muttasil":[37,39],"qalqalah":[10,12,62,64],"hamzat_wasl":[17,18,82,83]},
+"63": {"ghunnah":[114,117],"ikhfa":[6,10,56,60],"iqlab":[86,89],"idghaam_ghunnah":[23,28],"idghaam_shafawi":[18,23],"lam_shamsiyyah":[40,41],"madd_246":[179,180],"madd_muttasil":[46,48,53,55],"hamzat_wasl":[39,40,73,74,118,119,131,132]},
+"64": {"ghunnah":[65,68],"idghaam_ghunnah":[50,54,59,63],"lam_shamsiyyah":[27,28,70,71],"madd_2":[8,9,22,23],"madd_246":[133,134],"madd_munfasil":[35,37],"silent":[21,22,122,124],"hamzat_wasl":[14,15,26,27,69,70,78,79,98,99]},
+"65": {"ghunnah":[79,82],"lam_shamsiyyah":[67,68],"madd_2":[90,91],"madd_246":[130,131],"silent":[15,17,38,40],"hamzat_wasl":[22,23,41,42,66,67,102,103]},
+"66": {"madd_2":[30,31],"madd_246":[72,73],"madd_munfasil":[18,20],"silent":[11,13,52,54]},
+"67": {"ghunnah":[20,23,68,71],"idghaam_ghunnah":[49,54],"lam_shamsiyyah":[67,68],"madd_2":[102,103],"madd_246":[149,150],"silent":[15,17],"hamzat_wasl":[66,67,97,98,133,134]},
+"68": {"ghunnah":[18,21,82,85,115,118],"idghaam_no_ghunnah":[126,132],"madd_2":[136,137],"madd_246":[141,142],"madd_munfasil":[95,97],"madd_muttasil":[89,91],"hamzat_wasl":[24,25,40,41,71,72]},
+"69": {"ghunnah":[40,43,62,65],"madd_2":[14,15],"madd_246":[92,93],"silent":[20,22],"hamzat_wasl":[2,3,66,67,81,82]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/3.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/3.json
index 723304a..43a9a5e 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/3.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/3.json
@@ -1,202 +1,202 @@
{
-"1": {"madd-lazim":[40,42,42,44]},
-"2": {"madd":[10,12,17,18,50,51],"wasl":[33,34,42,43]},
-"3": {"ghunnah":[77,80,104,107],"idgham":[47,53,84,85],"madd":[24,25,93,94,107,108],"wasl":[17,18,30,31,83,84,99,100]},
-"4": {"ghunnah":[2,6,21,24,32,35,53,56,110,114,136,140,143,146],"idgham":[14,20,20,21,118,122],"madd":[85,86,148,149],"qalqalah":[6,8],"silent":[74,76],"wasl":[38,39,57,58,89,90,122,123,142,143]},
-"5": {"ghunnah":[2,5,41,45],"idgham":[68,69],"madd":[74,76],"wasl":[6,7,47,48,67,68]},
-"6": {"madd":[55,57,62,64,69,70,103,104],"wasl":[5,6,31,32,85,86,96,97]},
-"7": {"ghunnah":[16,19,73,76,79,82,116,120,122,125,158,162,337,340,362,365],"idgham":[56,61,294,295,352,357],"madd":[11,13,38,39,54,55,67,68,90,91,109,110,114,115,183,184,203,205,229,231,245,246,273,275,298,299,346,347,397,399,419,420],"qalqalah":[197,199,223,225,420,421],"silent":[402,404,407,409],"wasl":[5,6,31,32,83,84,127,128,196,197,208,209,222,223,283,284,293,294,311,312,410,411]},
-"8": {"ghunnah":[77,80,92,95,100,103],"idgham":[70,75],"madd":[112,113],"qalqalah":[59,61,113,114],"wasl":[104,105]},
-"9": {"ghunnah":[12,15,28,31,64,67],"idgham":[27,28,42,47],"madd":[7,9,97,98],"qalqalah":[98,99],"wasl":[26,27,68,69,89,90]},
-"10": {"ghunnah":[2,5,28,32,135,138],"idgham":[80,85,102,107,134,135],"madd":[54,55,66,68,75,76,113,115,138,139],"silent":[23,25,109,111],"wasl":[6,7,88,89,133,134]},
-"11": {"ghunnah":[40,44],"madd":[72,73,139,140],"qalqalah":[44,46,140,141],"silent":[61,63],"wasl":[28,29,92,93,116,117,132,133]},
-"12": {"ghunnah":[65,68],"madd":[87,88],"qalqalah":[88,89],"silent":[23,25],"wasl":[80,81]},
-"13": {"ghunnah":[24,28,57,61,200,203],"idgham":[108,112,120,125,187,191,225,230],"madd":[63,64,183,184,193,195,210,211,247,248],"qalqalah":[2,4,220,222,243,245],"silent":[232,234],"wasl":[41,42,81,82,143,144,155,156,238,239]},
-"14": {"ghunnah":[11,14,44,47,90,93,231,234],"idgham":[10,11,25,26,43,44,104,105,209,210],"madd":[33,34,49,51,76,77,164,165,182,183,192,193,204,205,236,237,253,254],"qalqalah":[254,255],"silent":[203,204],"wasl":[24,25,42,43,56,57,69,70,83,84,103,104,115,116,128,129,138,139,155,156,170,171,196,197,208,209,221,222,245,246]},
-"15": {"ghunnah":[18,22,32,36,68,71,84,87,89,93,101,105,211,215],"idgham":[27,32,154,159,167,171,179,184],"madd":[36,37,87,88,122,123,128,129,152,153,177,178,223,224],"qalqalah":[93,95,224,225],"silent":[63,65],"wasl":[55,56,113,114,187,188,197,198,216,217]},
-"16": {"ghunnah":[33,36,46,49,96,99],"idgham":[95,96],"madd":[28,30,38,40,99,100],"wasl":[53,54,94,95]},
-"17": {"ghunnah":[53,56],"idgham":[1,2,17,18],"madd":[5,6,21,22,37,38,94,95],"wasl":[16,17,32,33,48,49,64,65,85,86]},
-"18": {"ghunnah":[17,20,96,101],"madd":[22,23,26,28,33,34,58,60,91,93,114,116,121,122,155,156],"silent":[71,73,76,78],"wasl":[7,8,51,52,79,80,102,103,137,138,148,149]},
-"19": {"ghunnah":[2,5,17,20,98,101,137,142,191,194],"idgham":[7,8,156,160],"madd":[38,39,84,85,113,115,175,176,218,219],"qalqalah":[219,220],"silent":[74,76],"wasl":[6,7,21,22,29,30,48,49,58,59,77,78,122,123,179,180,195,196,211,212]},
-"20": {"ghunnah":[116,119,183,187,201,204,244,248],"madd":[105,106,122,123,224,225,256,257],"madd-lazim":[9,11],"qalqalah":[38,40,257,258],"silent":[95,97,157,159,175,177,194,196],"wasl":[60,61,98,99,111,112,167,168,217,218,230,231,249,250]},
-"21": {"ghunnah":[2,5,64,67,146,149,164,168],"idgham":[63,64,89,93,145,146],"madd":[36,37,72,73,180,181],"qalqalah":[52,54,95,97],"wasl":[6,7,40,41,62,63,105,106,129,130,144,145]},
-"22": {"idgham":[51,52,86,91,91,96],"madd":[6,8,38,39,96,97,101,102],"silent":[2,4],"wasl":[13,14,50,51,63,64]},
-"23": {"ghunnah":[121,124],"idgham":[43,49,143,148,159,164],"madd":[59,60,85,86,170,171],"qalqalah":[65,67],"silent":[34,36],"wasl":[18,19,52,53,89,90]},
-"24": {"ghunnah":[12,15,31,35,46,49],"idgham":[45,46,68,74,83,87,108,113],"madd":[2,3,58,60,81,82,132,133],"silent":[26,28,121,123],"wasl":[44,45]},
-"25": {"idgham":[36,41,79,84],"madd":[23,24,114,115]},
-"26": {"ghunnah":[12,15,54,58,69,72,87,90,90,94,113,117,136,140,168,171,192,196],"idgham":[6,7],"madd":[18,19,60,62,96,98,119,121,142,144,198,199],"wasl":[5,6,24,25,42,43,75,76,156,157]},
-"27": {"ghunnah":[23,26,44,47,151,155],"idgham":[22,23,43,44],"madd":[157,159,175,176],"qalqalah":[176,177],"wasl":[8,9,21,22,42,43,57,58,77,78,91,92,113,114,129,130]},
-"28": {"ghunnah":[59,63,148,152],"idgham":[86,90,177,181],"madd":[35,36,52,54,99,100,143,145,175,176,211,212,236,237],"silent":[158,160],"wasl":[15,16,30,31,67,68,119,120,195,196,221,222,229,230]},
-"29": {"ghunnah":[7,11,154,158],"idgham":[93,94],"madd":[99,100,102,103,160,161],"qalqalah":[46,48],"silent":[16,18],"wasl":[65,66,92,93,116,117,128,129]},
-"30": {"ghunnah":[81,85,88,92,105,108,137,142,200,204],"idgham":[25,30,51,56,61,66,147,152],"madd":[85,87,129,131,182,183,212,213],"qalqalah":[213,214],"wasl":[166,167,186,187,205,206]},
-"31": {"ghunnah":[7,11,11,14],"idgham":[118,123],"madd":[125,126],"qalqalah":[57,59],"wasl":[28,29,38,39,64,65,104,105]},
-"32": {"ghunnah":[41,45,59,62],"idgham":[27,28],"madd":[88,89,93,94],"silent":[13,15,52,54],"wasl":[16,17,26,27,63,64,83,84]},
-"33": {"ghunnah":[2,5],"idgham":[39,44],"madd":[21,24,56,57,77,78,92,93,97,98],"qalqalah":[52,54],"wasl":[6,7,14,15,87,88]},
-"34": {"ghunnah":[9,13,25,28],"idgham":[32,36],"madd":[56,57],"wasl":[36,37]},
-"35": {"ghunnah":[41,44,84,89,101,104,109,112,117,120],"idgham":[122,123],"madd":[29,30,104,106,139,140],"qalqalah":[70,72],"wasl":[13,14,121,122,132,133]},
-"36": {"ghunnah":[4,7,37,40,57,60,123,126,133,136,140,143,164,167],"idgham":[107,108,208,209,221,222],"madd":[52,54,167,169,216,217,227,228],"wasl":[65,66,106,107,118,119,207,208,220,221]},
-"37": {"ghunnah":[46,48,155,158,167,172,190,193,228,231,242,245],"idgham":[39,43,69,74,265,269],"madd":[178,179,203,204,271,273,289,290],"qalqalah":[290,291],"wasl":[133,134,232,233,246,247]},
-"38": {"ghunnah":[66,69,79,83,93,96],"idgham":[59,64,108,109],"madd":[34,35,114,116],"qalqalah":[50,52],"wasl":[107,108]},
-"39": {"ghunnah":[72,75,115,120],"idgham":[42,46,128,133,152,157,163,168,174,180,184,185],"madd":[19,21,37,39,188,189,193,194],"wasl":[12,13,57,58,76,77,136,137,183,184]},
-"40": {"ghunnah":[14,17,87,91],"idgham":[38,42],"madd":[36,37,99,100,130,132],"qalqalah":[44,46],"wasl":[58,59,70,71,105,106]},
-"41": {"ghunnah":[31,35,68,71],"idgham":[67,68,106,111,133,138],"madd":[22,24,79,80,170,171],"qalqalah":[13,15,166,168],"wasl":[12,13,66,67,111,112,148,149,161,162]},
-"42": {"ghunnah":[45,48],"madd":[22,24,33,34,65,66,91,92,106,108,116,117,121,122],"wasl":[15,16,49,50,57,58,83,84,111,112]},
-"43": {"idgham":[59,60],"madd":[2,3,63,64,68,69],"qalqalah":[13,15],"wasl":[12,13,33,34,44,45,58,59]},
-"44": {"ghunnah":[16,18,60,63,140,143],"madd":[2,3,19,21,96,97,170,171],"qalqalah":[92,94],"wasl":[24,25]},
-"45": {"ghunnah":[43,46,133,138],"idgham":[76,81,141,142],"madd":[20,22,31,32,185,186],"qalqalah":[113,115],"wasl":[13,14,47,48,86,87,94,95,112,113,140,141,153,154,173,174]},
-"46": {"ghunnah":[14,17],"idgham":[13,14,42,47,53,54],"madd":[57,58,62,63],"wasl":[12,13,25,26,52,53]},
-"47": {"ghunnah":[16,19,65,69,132,137,139,142,162,166],"idgham":[39,43],"madd":[77,78,108,110,123,126,158,159,170,171],"wasl":[83,84]},
-"48": {"ghunnah":[62,65],"idgham":[42,43],"madd":[21,22,51,52,65,66],"wasl":[14,15,27,28,41,42,57,58]},
-"49": {"ghunnah":[41,44,59,63,90,93,152,155,179,184,288,292,345,348,381,385,385,388],"idgham":[70,75,75,80,109,114,118,119,139,140,369,374,388,393],"madd":[22,24,31,33,93,95,355,356,399,400],"qalqalah":[48,50,204,206,230,232],"wasl":[117,118,138,139,192,193,211,212,225,226,246,247,267,268]},
-"50": {"ghunnah":[70,74,116,120],"idgham":[10,16,41,42,127,132,132,137],"madd":[50,51,174,175],"silent":[154,156],"wasl":[40,41,79,80,147,148,157,158]},
-"51": {"ghunnah":[2,5],"idgham":[59,64],"madd":[48,49,57,58,70,71],"wasl":[6,7,35,36]},
-"52": {"ghunnah":[4,7,58,61,113,116,133,136,162,165],"madd":[7,9,64,66,175,176],"qalqalah":[155,157],"wasl":[35,36,73,74,87,88,120,121,140,141,150,151]},
-"53": {"ghunnah":[15,18,29,32],"idgham":[52,53,81,82],"madd":[7,9,24,26,85,86,90,91],"qalqalah":[69,71],"wasl":[39,40,51,52,64,65,80,81]},
-"54": {"madd":[51,52,56,57],"silent":[9,11],"wasl":[21,22,31,32,46,47]},
-"55": {"ghunnah":[33,36,199,202,255,258],"madd":[21,22,27,30,165,167,191,192,277,278],"silent":[107,109,167,169],"wasl":[11,12,90,91,120,121,130,131,149,150,184,185]},
-"56": {"ghunnah":[4,7,51,56,60,65],"idgham":[68,69,103,108,108,113],"madd":[113,114,118,119],"silent":[26,28],"wasl":[9,10,67,68,80,81]},
-"57": {"ghunnah":[4,7],"idgham":[43,44,106,107],"madd":[47,48,52,53,110,111,115,116],"silent":[27,29,39,41],"wasl":[9,10,42,43,85,86,105,106]},
-"58": {"idgham":[47,48],"madd":[2,3,40,41,63,64],"wasl":[32,33,46,47,56,57]},
-"59": {"ghunnah":[2,5,23,26,64,68,72,76,76,79,94,98],"madd":[60,61,90,91,102,103],"wasl":[27,28]},
-"60": {"idgham":[11,16,32,37],"madd":[51,52],"wasl":[40,41]},
-"61": {"ghunnah":[26,29,153,156,166,169,178,181],"madd":[41,43,95,97,111,113,126,128,140,142,232,233,237,238],"madd-lazim":[9,11],"qalqalah":[84,86,91,93,107,109,184,186,197,199],"silent":[79,81],"wasl":[53,54,213,214,227,228]},
-"62": {"ghunnah":[2,5,77,80],"madd":[8,9,54,55,114,115],"wasl":[20,21,30,31,65,66,81,82,96,97,107,108]},
-"63": {"ghunnah":[4,8,22,25,40,44],"madd":[56,57],"silent":[15,17],"wasl":[26,27,45,46]},
-"64": {"ghunnah":[53,57,62,66,197,201,217,221,257,260],"idgham":[146,151,191,197],"madd":[7,9,23,24,59,61,138,139,270,271],"silent":[36,38,228,230,239,241,250,252],"wasl":[16,17,111,112,205,206,242,243]},
-"65": {"ghunnah":[67,70,96,99,113,116],"idgham":[76,77],"madd":[2,4,18,19,42,44,51,52,62,64,85,86,123,125,142,143],"madd-lazim":[31,33],"qalqalah":[47,49],"wasl":[11,12,75,76,91,92]},
-"66": {"ghunnah":[6,9,48,52,61,65,101,105,139,142],"idgham":[114,118],"madd":[2,4,14,16,20,22,27,28,54,55,107,108,157,158],"madd-lazim":[74,76],"qalqalah":[30,32],"wasl":[118,119]},
-"67": {"ghunnah":[62,66],"idgham":[32,37,52,57,76,82,87,92],"madd":[16,17,59,60,118,119],"qalqalah":[12,14],"wasl":[107,108]},
-"68": {"ghunnah":[2,5,16,19,72,75],"idgham":[15,16,71,72],"madd":[31,32,65,66,133,134],"qalqalah":[27,29],"silent":[101,103],"wasl":[14,15,49,50,70,71,83,84,106,107,122,123]},
-"69": {"ghunnah":[90,93],"idgham":[5,6,17,22],"madd":[10,12,39,40,85,87,114,115],"wasl":[32,33]},
-"70": {"ghunnah":[63,66],"madd":[2,4,18,19,47,48,77,78],"wasl":[11,12,51,52]},
-"71": {"ghunnah":[88,91],"madd":[2,4,18,19,55,56,102,103],"wasl":[11,12,39,40,50,51,75,76]},
-"72": {"ghunnah":[69,72,111,114],"idgham":[7,8,19,24,110,111],"madd":[12,14,41,42,64,66,129,131,143,144,165,166],"qalqalah":[104,106],"silent":[53,55,99,101,131,133],"wasl":[34,35,58,59,81,82,109,110,122,123]},
-"73": {"ghunnah":[30,34,56,59,151,154,172,175],"idgham":[86,90,103,108,213,217],"madd":[14,16,94,97,115,117,219,221,236,237,246,247],"madd-lazim":[138,140],"silent":[16,18],"wasl":[60,61,76,77,176,177,193,194,226,227]},
-"74": {"idgham":[26,30],"madd":[22,23,32,34,68,69],"wasl":[39,40,51,52,61,62]},
-"75": {"ghunnah":[32,36,49,52,95,99,179,184,194,197,237,240],"idgham":[54,58,85,90,117,122,253,257],"madd":[21,22,65,67,133,135,174,176,184,185,243,244,307,308],"silent":[208,210],"wasl":[14,15,232,233,274,275,282,283]},
-"76": {"ghunnah":[48,51],"madd":[31,32,78,79],"wasl":[35,36,52,53,68,69]},
-"77": {"ghunnah":[2,5,66,71,163,166],"madd":[53,54,84,86,99,100,194,195,240,241],"silent":[80,82],"wasl":[6,7,37,38,114,115,147,148,187,188]},
-"78": {"ghunnah":[4,7,50,54,147,150,177,180],"idgham":[25,30],"madd":[34,35,61,62,91,92,118,119,241,242],"wasl":[54,55,84,85,111,112,151,152,181,182,208,209,216,217]},
-"79": {"ghunnah":[69,72,82,85,97,100,129,133,152,156,186,189,226,229],"idgham":[21,25,68,69,96,97,119,125],"madd":[49,50,149,150,168,169,174,175,212,213,240,241],"qalqalah":[234,236],"silent":[110,112,160,162],"wasl":[34,35,42,43,55,56,67,68,137,138,205,206]},
-"80": {"ghunnah":[21,25,56,59,91,95,119,122],"idgham":[55,56,122,127],"madd":[43,45,64,65,133,134],"silent":[33,35],"wasl":[36,37,54,55,95,96]},
-"81": {"ghunnah":[33,36,68,72,87,91,91,94,151,154,167,170,172,175],"idgham":[32,33,63,68,76,80,112,117,123,128,294,299,303,304],"madd":[27,28,41,42,49,51,74,75,97,99,159,160,177,178,222,223,243,245,307,308,312,313],"qalqalah":[189,191,250,252],"silent":[245,247,276,278],"wasl":[14,15,31,32,268,269,302,303]},
-"82": {"ghunnah":[4,8],"madd":[25,26,39,41,56,57,61,62],"silent":[35,37],"wasl":[51,52]},
-"83": {"ghunnah":[55,59],"idgham":[62,63,92,97,102,107],"madd":[41,43,68,69,71,72,124,125],"qalqalah":[27,29],"wasl":[17,18,61,62,77,78]},
-"84": {"ghunnah":[10,13,34,37,59,62,177,180],"idgham":[176,177,191,196,230,235],"madd":[29,31,54,56,69,72,79,80,94,95,109,110,144,146,255,256,265,266],"qalqalah":[75,77],"wasl":[17,18,127,128,175,176]},
-"85": {"ghunnah":[39,44],"idgham":[4,8,46,50],"madd":[31,32,98,99,103,104],"qalqalah":[8,10,50,52],"wasl":[22,23,75,76,93,94]},
-"86": {"ghunnah":[28,33,76,79],"idgham":[81,82,95,99,157,158],"madd":[53,54,69,71,101,103,120,121,161,162,166,167],"silent":[38,40,71,73],"wasl":[15,16,80,81,110,111,126,127,146,147,156,157]},
-"87": {"ghunnah":[28,31,82,85],"idgham":[81,82],"madd":[6,8,17,19,69,71,97,98],"qalqalah":[91,93],"silent":[2,4],"wasl":[52,53,62,63,80,81]},
-"88": {"ghunnah":[65,68],"madd":[2,3,70,71],"wasl":[41,42]},
-"89": {"ghunnah":[29,32,64,67],"idgham":[82,87],"madd":[40,41,89,90],"silent":[23,25,57,59],"wasl":[7,8,68,69]},
-"90": {"ghunnah":[2,5,48,51,75,79],"idgham":[69,75,120,121],"madd":[38,39,107,109,129,130],"madd-lazim":[124,126],"qalqalah":[79,81],"silent":[23,25,61,63,103,105],"wasl":[6,7,52,53,119,120]},
-"91": {"ghunnah":[2,5,51,55],"idgham":[57,61,81,86,106,111,167,171,179,184,184,189],"madd":[130,132,139,141,189,190,194,195],"qalqalah":[61,63],"silent":[23,25,34,36,135,137],"wasl":[6,7,91,92,116,117]},
-"92": {"ghunnah":[2,6,34,37,45,48,69,72,80,84,87,91,93,96],"madd":[109,110,115,116],"silent":[12,14,40,42,75,77],"wasl":[15,16,97,98]},
-"93": {"ghunnah":[106,110,117,121,189,193,193,196],"idgham":[7,8,27,33,130,131,161,162],"madd":[37,39,46,48,79,81,102,103,139,140,170,171,184,186,201,202,206,207],"qalqalah":[110,112],"silent":[155,157],"wasl":[6,7,129,130,160,161,176,177]},
-"94": {"ghunnah":[44,47],"idgham":[82,83],"madd":[55,56,69,71,86,87,91,92],"silent":[65,67],"wasl":[7,8,23,24,31,32,81,82]},
-"95": {"idgham":[61,66],"madd":[48,49,92,93],"qalqalah":[44,46],"silent":[31,33],"wasl":[12,13,22,23,81,82]},
-"96": {"ghunnah":[2,5,31,34],"idgham":[19,23,30,31,65,70,73,79],"madd":[83,84,88,89]},
-"97": {"ghunnah":[13,17,53,57,98,101,159,163,172,175],"idgham":[25,30,77,82,97,98,152,157],"madd":[11,12,23,24,42,43,63,64,202,203,207,208],"qalqalah":[38,40],"wasl":[96,97,111,112,126,127,176,177,197,198]},
-"98": {"madd":[7,9,23,24,52,53,101,102],"wasl":[16,17,56,57,66,67]},
-"99": {"ghunnah":[45,49,101,104,144,147],"idgham":[94,99],"madd":[7,9,23,24,113,115,136,137,157,158],"qalqalah":[78,80],"wasl":[16,17,55,56,124,125]},
-"100": {"ghunnah":[37,41,105,109],"idgham":[56,62],"madd":[2,4,30,32,91,92,119,120,129,130,134,135],"silent":[32,34,47,49,81,83],"wasl":[13,14,65,66,84,85]},
-"101": {"ghunnah":[25,28,103,107],"idgham":[93,97,142,147],"madd":[56,57,87,88,140,141,153,154],"qalqalah":[119,121],"wasl":[60,61,107,108]},
-"102": {"ghunnah":[82,85,97,100],"idgham":[100,105],"madd":[2,4,67,68,111,112],"silent":[31,33,41,43],"wasl":[13,14,34,35,44,45]},
-"103": {"ghunnah":[108,111,123,127,166,170,198,201,234,237,245,248],"idgham":[38,43,191,196,224,229,233,234,252,257],"madd":[120,122,180,182,189,190,267,268,303,304,308,309,330,331],"qalqalah":[19,21],"silent":[12,14,57,59,70,72],"wasl":[2,3,24,25,62,63,82,83,232,233,283,284]},
-"104": {"ghunnah":[13,16,21,24,105,108],"idgham":[8,13,25,29],"madd":[119,121,142,143],"qalqalah":[29,31],"silent":[115,117],"wasl":[43,44,69,70,100,101,131,132]},
-"105": {"ghunnah":[60,63],"madd":[75,77,94,95,106,108,132,133],"silent":[14,16,39,41,54,56,102,104],"wasl":[19,20,44,45,84,85]},
-"106": {"ghunnah":[43,47,49,52,97,101,149,152],"idgham":[23,27],"madd":[111,112,163,164],"qalqalah":[9,11],"silent":[127,129],"wasl":[54,55,64,65,130,131]},
-"107": {"ghunnah":[4,7],"madd":[79,80,84,85],"qalqalah":[20,22],"wasl":[9,10,19,20,57,58]},
-"108": {"idgham":[82,88],"madd":[12,13,92,93,97,98],"wasl":[16,17,46,47,61,62]},
-"109": {"idgham":[19,20],"madd":[25,26,28,29,84,85],"wasl":[18,19,42,43,60,61,77,78]},
-"110": {"ghunnah":[2,5,17,20,37,40,94,97],"idgham":[36,37,170,176,178,183],"madd":[153,154,225,226,230,231],"wasl":[58,59,89,90,116,117,146,147,190,191,220,221]},
-"111": {"ghunnah":[80,83,90,93],"idgham":[2,6,28,33,35,39],"madd":[22,24,41,42,95,96],"qalqalah":[70,72],"wasl":[65,66]},
-"112": {"ghunnah":[100,103,188,191,257,259,280,284],"idgham":[21,22,67,72,90,95,99,100,124,129],"madd":[48,50,111,113,178,179,225,226,262,264,284,285,324,325],"qalqalah":[64,66,87,89,241,243],"silent":[50,52,202,204,301,303,313,315],"wasl":[20,21,75,76,98,99,132,133,162,163,229,230,251,252]},
-"113": {"ghunnah":[45,48,49,53],"idgham":[17,22,60,64],"madd":[14,16,39,40,53,55,77,78,94,96,123,124],"silent":[7,9],"wasl":[32,33,81,82,99,100]},
-"114": {"ghunnah":[97,100],"idgham":[156,157],"madd":[109,110,131,132,143,145,160,161,165,166],"silent":[139,141],"wasl":[14,15,24,25,34,35,61,62,92,93,122,123,155,156]},
-"115": {"ghunnah":[28,32,64,68],"idgham":[34,38],"madd":[79,80],"silent":[15,17],"wasl":[50,51,69,70]},
-"116": {"ghunnah":[2,5,28,32,132,135],"idgham":[80,85,102,107,131,132],"madd":[54,55,66,68,75,76,113,115,126,127,153,154,158,159],"silent":[23,25,109,111],"wasl":[6,7,88,89,130,131]},
-"117": {"ghunnah":[13,16,70,74,107,111,122,125,184,187],"idgham":[47,48],"madd":[28,29,42,43,115,117,176,177,202,203],"silent":[41,42,117,119],"wasl":[34,35,46,47,164,165]},
-"118": {"ghunnah":[64,68,216,219,242,246,246,249],"idgham":[59,64,100,105],"madd":[2,4,147,149,163,164,236,237,260,261],"qalqalah":[128,130,208,210],"silent":[31,33,48,50,109,111],"wasl":[13,14,138,139,228,229]},
-"119": {"ghunnah":[6,9,128,131,227,230,245,249],"idgham":[257,258],"madd":[2,4,18,20,82,83,93,94,118,120,263,264],"silent":[14,16,120,122,147,149,156,158,209,211],"wasl":[75,76,170,171,188,189,231,232,256,257]},
-"120": {"ghunnah":[2,6,24,28,41,45,86,90,151,154],"idgham":[62,66],"madd":[185,186],"qalqalah":[47,49,186,187],"silent":[73,75,97,99,110,112],"wasl":[155,156]},
-"121": {"madd":[59,60,99,100],"wasl":[40,41,79,80]},
-"122": {"ghunnah":[7,10,29,32,37,41],"idgham":[10,11],"madd":[15,17,115,116],"wasl":[51,52,80,81,104,105]},
-"123": {"ghunnah":[41,44,55,59],"idgham":[35,39],"madd":[97,98],"qalqalah":[6,8,32,34],"silent":[66,68],"wasl":[20,21,59,60,69,70]},
-"124": {"ghunnah":[71,75,118,121],"idgham":[33,37,50,54,92,97],"madd":[79,80,90,91,107,109,123,124],"wasl":[100,101]},
-"125": {"ghunnah":[10,14,53,57,93,97],"idgham":[48,53,113,118],"madd":[4,7,68,69,111,112,128,130,146,147],"qalqalah":[79,81],"silent":[21,23,34,36],"wasl":[121,122]},
-"126": {"ghunnah":[58,61,71,75,87,90,109,112],"idgham":[86,87],"madd":[77,78,139,140],"qalqalah":[52,54],"wasl":[15,16,85,86,113,114,121,122,132,133]},
-"127": {"ghunnah":[68,71],"idgham":[16,22],"madd":[41,43,81,83,87,88],"qalqalah":[4,6],"silent":[43,45,76,78],"wasl":[25,26]},
-"128": {"ghunnah":[81,84],"madd":[91,92,96,97],"wasl":[17,18]},
-"129": {"idgham":[19,20,65,69,90,94,117,122],"madd":[25,26,28,29,71,73,96,98,124,125],"wasl":[18,19,42,43,103,104]},
-"130": {"idgham":[51,52,71,77,85,89],"madd":[2,4,58,60,69,70,79,80,127,128],"silent":[31,33,47,49,57,58,60,62,96,98],"wasl":[13,14,50,51,89,90,99,100]},
-"131": {"ghunnah":[14,17],"idgham":[13,14],"madd":[27,29,46,47,51,52],"silent":[9,11],"wasl":[2,3,12,13,21,22]},
-"132": {"idgham":[24,25],"madd":[54,55],"silent":[10,12],"wasl":[13,14,23,24]},
-"133": {"ghunnah":[52,55],"idgham":[30,35,35,40,69,70],"madd":[9,11,75,76,78,79,115,116],"silent":[11,13],"wasl":[68,69,84,85]},
-"134": {"ghunnah":[12,15,100,103],"idgham":[26,27,41,42,99,100],"madd":[33,35,48,50,60,61,136,137],"wasl":[25,26,40,41,55,56,69,70,81,82,98,99,109,110,125,126]},
-"135": {"ghunnah":[56,59],"idgham":[119,123,131,132],"madd":[30,31,49,51,210,211],"silent":[25,27,51,53,73,75,98,100,171,173,192,194],"wasl":[2,3,76,77,86,87,130,131,148,149]},
-"136": {"ghunnah":[57,60,62,66,74,78],"idgham":[23,28,35,40,40,45],"madd":[6,8,17,19,60,61,95,96,101,102,138,139,143,144],"qalqalah":[66,68,128,130],"silent":[2,4],"wasl":[86,87,133,134]},
-"137": {"ghunnah":[14,18,32,36,62,65],"madd":[86,87,106,107],"qalqalah":[2,4,18,20],"silent":[42,44,68,70],"wasl":[49,50,61,62,94,95]},
-"138": {"ghunnah":[19,22],"idgham":[13,18,18,19,31,36,45,50],"madd":[2,3,59,60]},
-"139": {"ghunnah":[38,41,60,64,64,67],"idgham":[67,72],"madd":[78,79],"silent":[13,15,31,33],"wasl":[44,45]},
-"140": {"ghunnah":[22,26,108,111,171,174],"idgham":[2,6,52,57,107,108,211,212],"madd":[63,64,183,185,215,216,220,221],"qalqalah":[28,30],"silent":[154,156],"wasl":[37,38,74,75,106,107,128,129,136,137,190,191,210,211]},
-"141": {"madd":[59,60,64,65],"silent":[40,42],"wasl":[14,15,22,23,54,55]},
-"142": {"ghunnah":[18,22,37,40,47,50,92,95],"idgham":[110,111],"madd":[81,82,114,115,119,120],"qalqalah":[9,11,22,24],"silent":[29,31,87,89],"wasl":[32,33,61,62,69,70,109,110]},
-"143": {"ghunnah":[11,14,21,24,41,45,52,56,90,93,98,101],"madd":[103,104],"qalqalah":[6,8,45,47,69,71],"wasl":[29,30]},
-"144": {"ghunnah":[10,13,29,33,45,49,96,99,138,141],"idgham":[57,58,74,79,134,138,168,172,192,197,216,217],"madd":[112,115,122,123,220,221,225,226],"qalqalah":[33,35,49,51,101,103,143,145,201,203],"silent":[72,74],"wasl":[56,57,95,96,178,179,207,208,215,216]},
-"145": {"ghunnah":[23,27],"idgham":[63,69,75,80,82,86,100,101,132,136,193,194],"madd":[61,62,118,119,170,171,197,198,202,203],"qalqalah":[88,90,138,140,186,188],"wasl":[49,50,99,100,149,150,192,193]},
-"146": {"ghunnah":[23,27,59,63],"idgham":[9,14,14,19,171,172],"madd":[27,28,39,40,81,83,175,176,180,181],"silent":[74,76,129,131,149,151],"wasl":[108,109,138,139,154,155,170,171]},
-"147": {"ghunnah":[33,37,134,137],"madd":[28,30,95,97,164,165,169,170],"qalqalah":[120,122],"silent":[41,43],"wasl":[53,54,133,134,149,150,159,160]},
-"148": {"idgham":[32,33],"madd":[9,10,101,102],"wasl":[15,16,31,32,59,60,74,75,90,91]},
-"149": {"ghunnah":[37,41,109,112],"madd":[2,4,30,32,87,90,97,98,122,123,127,128],"silent":[32,34,47,49,67,69,117,119],"wasl":[13,14,50,51]},
-"150": {"ghunnah":[42,45],"idgham":[41,42],"madd":[20,21,45,46,50,51],"wasl":[5,6,40,41]},
-"151": {"ghunnah":[134,137],"idgham":[43,44,114,119,133,134,159,160],"madd":[56,58,104,105,112,113,126,127,163,164,168,169],"silent":[39,41,68,70],"wasl":[22,23,42,43,73,74,132,133,158,159]},
-"152": {"ghunnah":[56,60,142,145,184,187,217,220,250,253,308,311],"idgham":[136,141,164,169,187,192,192,196,203,204,220,225,225,229],"madd":[36,38,68,69,75,78,102,103,153,155,161,162,352,353],"qalqalah":[6,8,278,280,297,299],"wasl":[20,21,116,117,202,203,235,236,316,317,341,342]},
-"153": {"ghunnah":[107,111,109,114,117,120,204,208],"idgham":[46,50,51,52,119,124],"madd":[29,30,37,40,75,77,85,86,97,98,173,175,180,181,221,222],"qalqalah":[63,65],"silent":[141,143],"wasl":[50,51,190,191]},
-"154": {"ghunnah":[2,5,8,11,28,31,42,45,88,91,105,109,116,119,128,131,142,145,177,180,236,240,243,247,252,255,300,303,419,422,602,606],"idgham":[22,27,53,58,62,67,83,88,307,312,381,386,614,615],"madd":[76,78,98,100,186,187,273,274,295,297,400,401,620,621],"qalqalah":[109,111,320,322,515,517],"wasl":[37,38,151,152,166,167,181,182,224,225,256,257,366,367,450,451,478,479,524,525,588,589,613,614]},
-"155": {"ghunnah":[2,5,30,33,67,70,159,162],"idgham":[90,91],"madd":[98,99,183,184],"qalqalah":[131,133],"silent":[25,27,122,124],"wasl":[6,7,43,44,52,53,74,75,89,90,140,141,163,164]},
-"156": {"ghunnah":[166,169,236,240],"idgham":[146,152],"madd":[2,4,90,91,223,224,270,271,314,315],"qalqalah":[206,208],"silent":[31,33,46,48,68,70,79,81,111,113,139,141,161,163,183,185,199,201],"wasl":[13,14,51,52,118,119,213,214,256,257,284,285]},
-"157": {"ghunnah":[6,10,100,103],"idgham":[63,68,95,100],"madd":[113,114],"qalqalah":[107,109],"wasl":[31,32,71,72]},
-"158": {"idgham":[6,11],"madd":[57,58],"wasl":[41,42]},
-"159": {"ghunnah":[33,36,53,56,85,88,220,223],"idgham":[15,20],"madd":[254,255],"silent":[92,94],"wasl":[23,24,72,73,84,85,111,112,128,129,165,166,210,211,224,225,240,241]},
-"160": {"ghunnah":[6,9,68,72,84,87,97,100],"idgham":[2,6,49,53,91,96],"madd":[107,108,152,153],"wasl":[16,17,74,75,117,118,141,142]},
-"161": {"ghunnah":[90,93],"idgham":[24,28,38,42,115,120],"madd":[82,83,150,151],"wasl":[75,76]},
-"162": {"ghunnah":[41,44,90,93],"idgham":[57,62],"madd":[24,25,45,47,82,83,112,113],"wasl":[9,10,28,29,65,66,105,106]},
-"163": {"ghunnah":[17,20,45,49],"madd":[11,12,62,63],"wasl":[21,22,31,32]},
-"164": {"ghunnah":[9,12,79,82,182,186,195,199],"idgham":[68,74,216,221],"madd":[115,116,120,121,160,161,214,215,223,224],"qalqalah":[4,6,199,201],"silent":[96,98,190,192],"wasl":[13,14,27,28,153,154,166,167]},
-"165": {"ghunnah":[6,9,34,38,75,78,105,108,111,114,123,126,153,157],"idgham":[23,28,49,54],"madd":[9,11,16,17,83,84,159,160],"qalqalah":[38,40,45,47],"wasl":[127,128]},
-"166": {"madd":[4,6,11,12,91,92],"wasl":[26,27,35,36,59,60,80,81]},
-"167": {"idgham":[137,143,241,246],"madd":[63,64,153,154,213,214,236,237,304,305],"qalqalah":[98,100,188,190],"silent":[31,33,58,60,69,71,105,107,114,116],"wasl":[13,14,84,85,97,98,143,144,273,274]},
-"168": {"ghunnah":[103,106,125,129,129,132],"madd":[27,28,137,138,142,143],"qalqalah":[86,88],"silent":[16,18,44,46,75,77,93,95],"wasl":[85,86,113,114]},
-"169": {"ghunnah":[14,17,66,71,88,91],"madd":[64,65,81,83,110,111],"silent":[35,37],"wasl":[18,19,50,51]},
-"170": {"ghunnah":[39,43],"idgham":[102,107],"madd":[14,16,23,24,49,50,165,166],"qalqalah":[59,61],"silent":[95,97],"wasl":[29,30,71,72]},
-"171": {"ghunnah":[54,57],"idgham":[25,30,48,52],"madd":[96,97],"qalqalah":[6,8,80,82],"wasl":[33,34,58,59,85,86]},
-"172": {"ghunnah":[48,51],"idgham":[35,36],"madd":[59,61,140,141],"qalqalah":[131,133],"silent":[21,23,104,106,126,128],"wasl":[10,11,34,35,74,75,118,119]},
-"173": {"ghunnah":[25,28,34,37,40,43],"idgham":[24,25,39,40,102,107],"madd":[100,101,150,151],"qalqalah":[49,51],"silent":[59,61,113,115],"wasl":[23,24,38,39,71,72,126,127,143,144]},
-"174": {"ghunnah":[3,6],"idgham":[23,28,46,51,72,76],"madd":[69,71,94,95,131,132],"silent":[11,13,85,87],"wasl":[2,3,31,32,76,77,98,99,108,109]},
-"175": {"ghunnah":[2,5,90,94,94,97],"idgham":[20,21,97,102],"madd":[11,12,28,29,50,52,56,57,108,109],"wasl":[19,20]},
-"176": {"ghunnah":[12,15,55,58,138,143],"idgham":[65,69,92,97],"madd":[30,31,179,180],"qalqalah":[120,122],"silent":[75,77],"wasl":[16,17,43,44,78,79,103,104,145,146]},
-"177": {"ghunnah":[2,5],"idgham":[54,58,81,86],"madd":[48,49,105,106],"silent":[25,27,64,66],"wasl":[6,7,16,17,28,29,40,41,67,68]},
-"178": {"ghunnah":[14,17,41,44,75,78,87,90],"idgham":[68,73,130,135,148,153],"madd":[34,36,120,122,155,156],"silent":[36,38,122,124],"wasl":[18,19]},
-"179": {"ghunnah":[57,60,173,176,263,267],"idgham":[105,106,197,202,212,216],"madd":[52,54,170,171,208,209,218,220,257,258,310,311],"qalqalah":[139,141,187,189,301,303],"silent":[234,236,274,276,287,289],"wasl":[11,12,28,29,88,89,104,105,127,128,156,157,177,178,239,240]},
-"180": {"ghunnah":[14,17,69,73,99,103],"idgham":[91,97,115,120,200,201],"madd":[44,46,53,54,79,80,158,159,174,175,195,196,206,207,209,210,257,258],"qalqalah":[30,32],"silent":[151,153],"wasl":[18,19,59,60,167,168,199,200,215,216,227,228]},
-"181": {"ghunnah":[52,55,137,139],"idgham":[70,74,160,164],"madd":[45,47,89,91,142,144,196,197],"qalqalah":[5,7,197,198],"silent":[47,49,115,117,178,180],"wasl":[15,16,30,31,56,57,131,132,189,190]},
-"182": {"ghunnah":[40,43],"idgham":[68,73],"madd":[2,3,79,80],"qalqalah":[80,81],"wasl":[44,45]},
-"183": {"ghunnah":[22,25,108,112,123,126,161,165,233,237,237,240],"idgham":[122,123,156,161],"madd":[15,17,49,51,142,144,183,184,245,246,250,251],"qalqalah":[137,139,165,167],"silent":[17,19],"wasl":[26,27,121,122,173,174,191,192]},
-"184": {"ghunnah":[4,8,42,46],"idgham":[37,42,80,81],"madd":[55,57,73,74,98,99,109,110],"qalqalah":[21,23,46,48],"wasl":[63,64,79,80,91,92,102,103]},
-"185": {"ghunnah":[11,15,38,41,93,97,111,114,134,137],"idgham":[110,111,172,173],"madd":[15,17,83,84,167,168,180,182,194,195,205,206],"qalqalah":[122,124,144,146],"silent":[166,167],"wasl":[24,25,76,77,109,110,129,130,159,160,171,172,198,199]},
-"186": {"ghunnah":[10,13,37,40,59,62,100,104,146,151,162,166,193,196],"idgham":[155,160],"madd":[16,18,25,26,94,95,138,140,199,200,224,225],"qalqalah":[4,6,104,106],"silent":[84,86,140,142,173,175,186,188],"wasl":[68,69,87,88,120,121,217,218]},
-"187": {"ghunnah":[72,75,82,85,168,173,177,182],"idgham":[81,82],"madd":[27,28,57,58,77,78,108,109,126,128,161,162,201,202],"silent":[47,49,154,156],"wasl":[14,15,31,32,50,51,145,146]},
-"188": {"ghunnah":[12,15,120,123,125,129],"idgham":[69,73,137,142],"madd":[42,44,177,178],"silent":[50,52,80,82,103,105],"wasl":[16,17,145,146]},
-"189": {"ghunnah":[71,75],"idgham":[18,19],"madd":[24,25,27,28,77,78],"wasl":[17,18,33,34,45,46]},
-"190": {"ghunnah":[2,5,69,72],"idgham":[18,19,68,69,87,92],"madd":[24,25,27,28,52,53,85,86,109,110],"qalqalah":[110,111],"silent":[94,96],"wasl":[17,18,33,34,45,46,56,57,67,68,100,101]},
-"191": {"ghunnah":[160,165,193,196],"idgham":[36,41,47,52,100,101,192,193],"madd":[34,35,106,107,109,110,149,150,156,157,169,170,196,197],"qalqalah":[142,144,165,167],"wasl":[22,23,99,100,115,116,191,192]},
-"192": {"ghunnah":[12,15,20,24,33,36,89,92],"idgham":[32,33,69,70],"madd":[7,9,59,60,73,74,92,93],"qalqalah":[24,26,44,46],"wasl":[31,32]},
-"193": {"ghunnah":[13,16,99,102,152,155],"idgham":[38,43],"madd":[8,10,59,60,199,200],"qalqalah":[195,197],"silent":[76,78],"wasl":[115,116,190,191]},
-"194": {"ghunnah":[90,93],"idgham":[28,29],"madd":[82,83,117,118],"qalqalah":[118,119],"wasl":[75,76,109,110]},
-"195": {"ghunnah":[32,35,68,71,76,80,92,95,112,115,119,123,160,164,234,237,275,278,285,288,290,294,302,306,344,347,368,371],"idgham":[63,68,71,76,106,111,333,339,383,384],"madd":[39,41,59,60,166,167,202,203,288,289,323,324,373,374,389,390],"qalqalah":[269,271,294,296,390,391],"silent":[141,143,155,157,182,184,208,210,220,222],"wasl":[2,3,123,124,314,315,348,349,358,359,382,383]},
-"196": {"ghunnah":[11,14],"madd":[58,59],"qalqalah":[59,60],"silent":[44,46],"wasl":[27,28,51,52]},
-"197": {"ghunnah":[6,10,14,18,18,21,39,42],"madd":[4,5,29,30,61,62],"qalqalah":[62,63],"wasl":[54,55]},
-"198": {"ghunnah":[48,51,53,57,65,69,124,127,144,147],"idgham":[113,119,161,166],"madd":[2,3,51,52,86,87,92,93,174,175],"qalqalah":[57,59,170,172],"silent":[26,28],"wasl":[8,9,18,19,77,78,128,129,148,149]},
-"199": {"ghunnah":[4,7,65,68,91,94,168,173,213,216,229,232],"idgham":[35,39],"madd":[27,28,60,62,86,88,110,111,151,152,186,188,256,257],"qalqalah":[202,204,257,258],"silent":[182,184],"wasl":[20,21,48,49,155,156,233,234,249,250]},
-"200": {"madd":[2,4,111,112],"silent":[31,33,42,44,55,57,68,70,80,82],"wasl":[13,14,34,35,73,74,83,84]}
+"1": {"madd_6":[40,42,42,44]},
+"2": {"madd_2":[17,18],"madd_246":[50,51],"madd_munfasil":[10,12],"hamzat_wasl":[33,34,42,43]},
+"3": {"ikhfa":[77,80,104,107],"idghaam_no_ghunnah":[47,53],"lam_shamsiyyah":[84,85],"madd_2":[24,25,93,94],"madd_246":[107,108],"hamzat_wasl":[17,18,30,31,83,84,99,100]},
+"4": {"ghunnah":[21,24,53,56],"ikhfa":[2,6,32,35,110,114,136,140,143,146],"idghaam_ghunnah":[118,122],"idghaam_no_ghunnah":[14,20],"lam_shamsiyyah":[20,21],"madd_2":[85,86],"madd_246":[148,149],"qalqalah":[6,8],"silent":[74,76],"hamzat_wasl":[38,39,57,58,89,90,122,123,142,143]},
+"5": {"ghunnah":[2,5],"ikhfa":[41,45],"lam_shamsiyyah":[68,69],"madd_muttasil":[74,76],"hamzat_wasl":[6,7,47,48,67,68]},
+"6": {"madd_2":[69,70],"madd_246":[103,104],"madd_munfasil":[62,64],"madd_muttasil":[55,57],"hamzat_wasl":[5,6,31,32,85,86,96,97]},
+"7": {"ghunnah":[73,76,79,82,122,125,337,340],"ikhfa":[16,19,116,120,158,162,362,365],"idghaam_ghunnah":[56,61,352,357],"lam_shamsiyyah":[294,295],"madd_2":[38,39,54,55,67,68,90,91,109,110,114,115,183,184,245,246,298,299,346,347],"madd_246":[419,420],"madd_munfasil":[11,13,273,275,397,399],"madd_muttasil":[203,205,229,231],"qalqalah":[197,199,223,225,420,421],"silent":[402,404,407,409],"hamzat_wasl":[5,6,31,32,83,84,127,128,196,197,208,209,222,223,283,284,293,294,311,312,410,411]},
+"8": {"ghunnah":[92,95],"ikhfa":[77,80,100,103],"idghaam_no_ghunnah":[70,75],"madd_246":[112,113],"qalqalah":[59,61,113,114],"hamzat_wasl":[104,105]},
+"9": {"ghunnah":[12,15,28,31,64,67],"idghaam_no_ghunnah":[42,47],"lam_shamsiyyah":[27,28],"madd_246":[97,98],"madd_munfasil":[7,9],"qalqalah":[98,99],"hamzat_wasl":[26,27,68,69,89,90]},
+"10": {"ghunnah":[2,5,135,138],"ikhfa":[28,32],"idghaam_ghunnah":[102,107],"idghaam_shafawi":[80,85],"lam_shamsiyyah":[134,135],"madd_2":[54,55,75,76],"madd_246":[138,139],"madd_munfasil":[66,68],"madd_muttasil":[113,115],"silent":[23,25,109,111],"hamzat_wasl":[6,7,88,89,133,134]},
+"11": {"ikhfa":[40,44],"madd_2":[72,73],"madd_246":[139,140],"qalqalah":[44,46,140,141],"silent":[61,63],"hamzat_wasl":[28,29,92,93,116,117,132,133]},
+"12": {"ghunnah":[65,68],"madd_246":[87,88],"qalqalah":[88,89],"silent":[23,25],"hamzat_wasl":[80,81]},
+"13": {"ghunnah":[200,203],"ikhfa":[24,28,57,61],"idghaam_ghunnah":[108,112,187,191],"idghaam_no_ghunnah":[225,230],"idghaam_shafawi":[120,125],"madd_2":[63,64,183,184,210,211],"madd_246":[247,248],"madd_muttasil":[193,195],"qalqalah":[2,4,220,222,243,245],"silent":[232,234],"hamzat_wasl":[41,42,81,82,143,144,155,156,238,239]},
+"14": {"ghunnah":[11,14,44,47],"ikhfa":[90,93,231,234],"lam_shamsiyyah":[10,11,25,26,43,44,104,105,209,210],"madd_2":[33,34,76,77,164,165,182,183,192,193,204,205,236,237],"madd_246":[253,254],"madd_muttasil":[49,51],"qalqalah":[254,255],"silent":[203,204],"hamzat_wasl":[24,25,42,43,56,57,69,70,83,84,103,104,115,116,128,129,138,139,155,156,170,171,196,197,208,209,221,222,245,246]},
+"15": {"ghunnah":[84,87],"ikhfa":[32,36,68,71,89,93,101,105],"ikhfa_shafawi":[18,22],"iqlab":[211,215],"idghaam_ghunnah":[27,32,154,159,167,171,179,184],"madd_2":[36,37,87,88,122,123,128,129,152,153,177,178],"madd_246":[223,224],"qalqalah":[93,95,224,225],"silent":[63,65],"hamzat_wasl":[55,56,113,114,187,188,197,198,216,217]},
+"16": {"ghunnah":[33,36,46,49,96,99],"lam_shamsiyyah":[95,96],"madd_246":[99,100],"madd_munfasil":[28,30,38,40],"hamzat_wasl":[53,54,94,95]},
+"17": {"ikhfa":[53,56],"lam_shamsiyyah":[1,2,17,18],"madd_2":[5,6,21,22,37,38],"madd_246":[94,95],"hamzat_wasl":[16,17,32,33,48,49,64,65,85,86]},
+"18": {"ghunnah":[17,20],"iqlab":[96,101],"madd_2":[22,23,33,34,121,122],"madd_246":[155,156],"madd_munfasil":[26,28,114,116],"madd_muttasil":[58,60,91,93],"silent":[71,73,76,78],"hamzat_wasl":[7,8,51,52,79,80,102,103,137,138,148,149]},
+"19": {"ghunnah":[2,5,191,194],"ikhfa":[17,20],"iqlab":[98,101,137,142],"idghaam_ghunnah":[156,160],"lam_shamsiyyah":[7,8],"madd_2":[38,39,84,85,175,176],"madd_246":[218,219],"madd_muttasil":[113,115],"qalqalah":[219,220],"silent":[74,76],"hamzat_wasl":[6,7,21,22,29,30,48,49,58,59,77,78,122,123,179,180,195,196,211,212]},
+"20": {"ghunnah":[116,119,201,204],"ikhfa":[183,187],"iqlab":[244,248],"madd_2":[105,106,122,123,224,225],"madd_246":[256,257],"madd_6":[9,11],"qalqalah":[38,40,257,258],"silent":[95,97,157,159,175,177,194,196],"hamzat_wasl":[60,61,98,99,111,112,167,168,217,218,230,231,249,250]},
+"21": {"ghunnah":[2,5,64,67,146,149],"ikhfa_shafawi":[164,168],"idghaam_ghunnah":[89,93],"lam_shamsiyyah":[63,64,145,146],"madd_2":[36,37,72,73],"madd_246":[180,181],"qalqalah":[52,54,95,97],"hamzat_wasl":[6,7,40,41,62,63,105,106,129,130,144,145]},
+"22": {"idghaam_ghunnah":[91,96],"idghaam_shafawi":[86,91],"lam_shamsiyyah":[51,52],"madd_2":[38,39,96,97],"madd_246":[101,102],"madd_muttasil":[6,8],"silent":[2,4],"hamzat_wasl":[13,14,50,51,63,64]},
+"23": {"ghunnah":[121,124],"idghaam_ghunnah":[43,49,143,148],"idghaam_shafawi":[159,164],"madd_2":[59,60,85,86],"madd_246":[170,171],"qalqalah":[65,67],"silent":[34,36],"hamzat_wasl":[18,19,52,53,89,90]},
+"24": {"ghunnah":[12,15,46,49],"ikhfa":[31,35],"idghaam_ghunnah":[68,74,83,87],"idghaam_shafawi":[108,113],"lam_shamsiyyah":[45,46],"madd_2":[2,3,81,82],"madd_246":[132,133],"madd_munfasil":[58,60],"silent":[26,28,121,123],"hamzat_wasl":[44,45]},
+"25": {"idghaam_ghunnah":[79,84],"idghaam_no_ghunnah":[36,41],"madd_2":[23,24],"madd_246":[114,115]},
+"26": {"ghunnah":[12,15,87,90,168,171],"ikhfa":[54,58,69,72,90,94,113,117,136,140,192,196],"lam_shamsiyyah":[6,7],"madd_2":[18,19],"madd_246":[198,199],"madd_muttasil":[60,62,96,98,119,121,142,144],"hamzat_wasl":[5,6,24,25,42,43,75,76,156,157]},
+"27": {"ghunnah":[23,26,44,47],"ikhfa":[151,155],"lam_shamsiyyah":[22,23,43,44],"madd_246":[175,176],"madd_muttasil":[157,159],"qalqalah":[176,177],"hamzat_wasl":[8,9,21,22,42,43,57,58,77,78,91,92,113,114,129,130]},
+"28": {"ikhfa":[59,63,148,152],"idghaam_ghunnah":[86,90,177,181],"madd_2":[35,36,99,100,175,176,211,212],"madd_246":[236,237],"madd_munfasil":[143,145],"madd_muttasil":[52,54],"silent":[158,160],"hamzat_wasl":[15,16,30,31,67,68,119,120,195,196,221,222,229,230]},
+"29": {"ikhfa":[7,11,154,158],"lam_shamsiyyah":[93,94],"madd_2":[99,100,102,103],"madd_246":[160,161],"qalqalah":[46,48],"silent":[16,18],"hamzat_wasl":[65,66,92,93,116,117,128,129]},
+"30": {"ghunnah":[105,108],"ikhfa":[81,85,88,92],"iqlab":[137,142,200,204],"idghaam_ghunnah":[25,30,51,56,61,66,147,152],"madd_2":[182,183],"madd_246":[212,213],"madd_munfasil":[129,131],"madd_muttasil":[85,87],"qalqalah":[213,214],"hamzat_wasl":[166,167,186,187,205,206]},
+"31": {"ikhfa":[7,11,11,14],"idghaam_no_ghunnah":[118,123],"madd_246":[125,126],"qalqalah":[57,59],"hamzat_wasl":[28,29,38,39,64,65,104,105]},
+"32": {"ghunnah":[59,62],"ikhfa":[41,45],"lam_shamsiyyah":[27,28],"madd_2":[88,89],"madd_246":[93,94],"silent":[13,15,52,54],"hamzat_wasl":[16,17,26,27,63,64,83,84]},
+"33": {"ghunnah":[2,5],"idghaam_ghunnah":[39,44],"madd_2":[56,57,77,78,92,93],"madd_246":[97,98],"madd_munfasil":[21,24],"qalqalah":[52,54],"hamzat_wasl":[6,7,14,15,87,88]},
+"34": {"iqlab":[9,13,25,28],"idghaam_ghunnah":[32,36],"madd_246":[56,57],"hamzat_wasl":[36,37]},
+"35": {"ghunnah":[41,44,101,104,109,112],"ikhfa":[84,89,117,120],"lam_shamsiyyah":[122,123],"madd_2":[29,30],"madd_246":[139,140],"madd_munfasil":[104,106],"qalqalah":[70,72],"hamzat_wasl":[13,14,121,122,132,133]},
+"36": {"ghunnah":[4,7,37,40,133,136,140,143,164,167],"ikhfa":[57,60,123,126],"lam_shamsiyyah":[107,108,208,209,221,222],"madd_2":[216,217],"madd_246":[227,228],"madd_munfasil":[52,54,167,169],"hamzat_wasl":[65,66,106,107,118,119,207,208,220,221]},
+"37": {"ghunnah":[190,193,242,245],"ikhfa":[155,158,167,172,228,231],"iqlab":[46,48],"idghaam_ghunnah":[39,43,69,74,265,269],"madd_2":[178,179,203,204],"madd_246":[289,290],"madd_muttasil":[271,273],"qalqalah":[290,291],"hamzat_wasl":[133,134,232,233,246,247]},
+"38": {"ghunnah":[93,96],"ikhfa":[66,69,79,83],"idghaam_no_ghunnah":[59,64],"lam_shamsiyyah":[108,109],"madd_2":[34,35],"madd_muttasil":[114,116],"qalqalah":[50,52],"hamzat_wasl":[107,108]},
+"39": {"ghunnah":[72,75],"iqlab":[115,120],"idghaam_ghunnah":[42,46,128,133,152,157,163,168,174,180],"lam_shamsiyyah":[184,185],"madd_2":[188,189],"madd_246":[193,194],"madd_muttasil":[19,21,37,39],"hamzat_wasl":[12,13,57,58,76,77,136,137,183,184]},
+"40": {"ghunnah":[14,17],"ikhfa":[87,91],"idghaam_ghunnah":[38,42],"madd_2":[36,37,99,100],"madd_muttasil":[130,132],"qalqalah":[44,46],"hamzat_wasl":[58,59,70,71,105,106]},
+"41": {"ghunnah":[68,71],"ikhfa":[31,35],"idghaam_ghunnah":[106,111,133,138],"lam_shamsiyyah":[67,68],"madd_2":[79,80],"madd_246":[170,171],"madd_munfasil":[22,24],"qalqalah":[13,15,166,168],"hamzat_wasl":[12,13,66,67,111,112,148,149,161,162]},
+"42": {"ghunnah":[45,48],"madd_2":[33,34,65,66,91,92,116,117],"madd_246":[121,122],"madd_muttasil":[22,24,106,108],"hamzat_wasl":[15,16,49,50,57,58,83,84,111,112]},
+"43": {"lam_shamsiyyah":[59,60],"madd_2":[2,3,63,64],"madd_246":[68,69],"qalqalah":[13,15],"hamzat_wasl":[12,13,33,34,44,45,58,59]},
+"44": {"ikhfa":[60,63,140,143],"iqlab":[16,18],"madd_2":[2,3,96,97],"madd_246":[170,171],"madd_muttasil":[19,21],"qalqalah":[92,94],"hamzat_wasl":[24,25]},
+"45": {"ghunnah":[43,46],"ikhfa":[133,138],"idghaam_ghunnah":[76,81],"lam_shamsiyyah":[141,142],"madd_2":[31,32],"madd_246":[185,186],"madd_muttasil":[20,22],"qalqalah":[113,115],"hamzat_wasl":[13,14,47,48,86,87,94,95,112,113,140,141,153,154,173,174]},
+"46": {"ghunnah":[14,17],"idghaam_ghunnah":[42,47],"lam_shamsiyyah":[13,14,53,54],"madd_2":[57,58],"madd_246":[62,63],"hamzat_wasl":[12,13,25,26,52,53]},
+"47": {"ghunnah":[16,19,139,142],"ikhfa":[65,69,132,137,162,166],"idghaam_ghunnah":[39,43],"madd_2":[77,78,158,159],"madd_246":[170,171],"madd_munfasil":[123,126],"madd_muttasil":[108,110],"hamzat_wasl":[83,84]},
+"48": {"ikhfa":[62,65],"lam_shamsiyyah":[42,43],"madd_2":[21,22,51,52],"madd_246":[65,66],"hamzat_wasl":[14,15,27,28,41,42,57,58]},
+"49": {"ghunnah":[41,44,90,93,345,348],"ikhfa":[152,155,381,385,385,388],"ikhfa_shafawi":[59,63,288,292],"iqlab":[179,184],"idghaam_ghunnah":[70,75],"idghaam_no_ghunnah":[75,80,369,374],"idghaam_shafawi":[109,114,388,393],"lam_shamsiyyah":[118,119,139,140],"madd_2":[355,356],"madd_246":[399,400],"madd_munfasil":[22,24,93,95],"madd_muttasil":[31,33],"qalqalah":[48,50,204,206,230,232],"hamzat_wasl":[117,118,138,139,192,193,211,212,225,226,246,247,267,268]},
+"50": {"ikhfa_shafawi":[70,74,116,120],"idghaam_ghunnah":[127,132],"idghaam_no_ghunnah":[10,16,132,137],"lam_shamsiyyah":[41,42],"madd_2":[50,51],"madd_246":[174,175],"silent":[154,156],"hamzat_wasl":[40,41,79,80,147,148,157,158]},
+"51": {"ghunnah":[2,5],"idghaam_ghunnah":[59,64],"madd_2":[48,49,57,58],"madd_246":[70,71],"hamzat_wasl":[6,7,35,36]},
+"52": {"ghunnah":[4,7,133,136,162,165],"ikhfa":[58,61,113,116],"madd_246":[175,176],"madd_munfasil":[7,9,64,66],"qalqalah":[155,157],"hamzat_wasl":[35,36,73,74,87,88,120,121,140,141,150,151]},
+"53": {"ghunnah":[15,18],"ikhfa":[29,32],"lam_shamsiyyah":[52,53,81,82],"madd_2":[85,86],"madd_246":[90,91],"madd_munfasil":[7,9,24,26],"qalqalah":[69,71],"hamzat_wasl":[39,40,51,52,64,65,80,81]},
+"54": {"madd_2":[51,52],"madd_246":[56,57],"silent":[9,11],"hamzat_wasl":[21,22,31,32,46,47]},
+"55": {"ghunnah":[33,36,199,202],"ikhfa":[255,258],"madd_2":[21,22,191,192],"madd_246":[277,278],"madd_munfasil":[27,30,165,167],"silent":[107,109,167,169],"hamzat_wasl":[11,12,90,91,120,121,130,131,149,150,184,185]},
+"56": {"ghunnah":[4,7],"ikhfa":[51,56,60,65],"idghaam_ghunnah":[108,113],"idghaam_shafawi":[103,108],"lam_shamsiyyah":[68,69],"madd_2":[113,114],"madd_246":[118,119],"silent":[26,28],"hamzat_wasl":[9,10,67,68,80,81]},
+"57": {"ghunnah":[4,7],"lam_shamsiyyah":[43,44,106,107],"madd_2":[47,48,52,53,110,111],"madd_246":[115,116],"silent":[27,29,39,41],"hamzat_wasl":[9,10,42,43,85,86,105,106]},
+"58": {"lam_shamsiyyah":[47,48],"madd_2":[2,3,40,41],"madd_246":[63,64],"hamzat_wasl":[32,33,46,47,56,57]},
+"59": {"ghunnah":[2,5,76,79],"ikhfa":[23,26,64,68,72,76,94,98],"madd_2":[60,61,90,91],"madd_246":[102,103],"hamzat_wasl":[27,28]},
+"60": {"idghaam_ghunnah":[32,37],"idghaam_no_ghunnah":[11,16],"madd_246":[51,52],"hamzat_wasl":[40,41]},
+"61": {"ghunnah":[178,181],"ikhfa":[153,156,166,169],"iqlab":[26,29],"madd_2":[232,233],"madd_246":[237,238],"madd_muttasil":[41,43,95,97,111,113,126,128,140,142],"madd_6":[9,11],"qalqalah":[84,86,91,93,107,109,184,186,197,199],"silent":[79,81],"hamzat_wasl":[53,54,213,214,227,228]},
+"62": {"ghunnah":[2,5,77,80],"madd_2":[8,9,54,55],"madd_246":[114,115],"hamzat_wasl":[20,21,30,31,65,66,81,82,96,97,107,108]},
+"63": {"ghunnah":[22,25],"ikhfa":[4,8],"iqlab":[40,44],"madd_246":[56,57],"silent":[15,17],"hamzat_wasl":[26,27,45,46]},
+"64": {"ghunnah":[257,260],"ikhfa":[53,57,197,201,217,221],"iqlab":[62,66],"idghaam_ghunnah":[146,151,191,197],"madd_2":[23,24,138,139],"madd_246":[270,271],"madd_munfasil":[7,9],"madd_muttasil":[59,61],"silent":[36,38,228,230,239,241,250,252],"hamzat_wasl":[16,17,111,112,205,206,242,243]},
+"65": {"ikhfa":[67,70,96,99],"iqlab":[113,116],"lam_shamsiyyah":[76,77],"madd_2":[18,19,51,52,85,86],"madd_246":[142,143],"madd_munfasil":[2,4,42,44,62,64,123,125],"madd_6":[31,33],"qalqalah":[47,49],"hamzat_wasl":[11,12,75,76,91,92]},
+"66": {"ikhfa":[6,9,61,65,139,142],"ikhfa_shafawi":[48,52,101,105],"idghaam_ghunnah":[114,118],"madd_2":[27,28,54,55,107,108],"madd_246":[157,158],"madd_munfasil":[2,4],"madd_muttasil":[14,16,20,22],"madd_6":[74,76],"qalqalah":[30,32],"hamzat_wasl":[118,119]},
+"67": {"ikhfa":[62,66],"idghaam_ghunnah":[32,37,52,57,76,82,87,92],"madd_2":[16,17,59,60],"madd_246":[118,119],"qalqalah":[12,14],"hamzat_wasl":[107,108]},
+"68": {"ghunnah":[2,5,16,19,72,75],"lam_shamsiyyah":[15,16,71,72],"madd_2":[31,32,65,66],"madd_246":[133,134],"qalqalah":[27,29],"silent":[101,103],"hamzat_wasl":[14,15,49,50,70,71,83,84,106,107,122,123]},
+"69": {"ikhfa":[90,93],"idghaam_ghunnah":[17,22],"idghaam_mutajanisayn":[5,6],"madd_2":[39,40],"madd_246":[114,115],"madd_munfasil":[85,87],"madd_muttasil":[10,12],"hamzat_wasl":[32,33]},
+"70": {"ikhfa":[63,66],"madd_2":[18,19,47,48],"madd_246":[77,78],"madd_munfasil":[2,4],"hamzat_wasl":[11,12,51,52]},
+"71": {"ikhfa":[88,91],"madd_2":[18,19,55,56],"madd_246":[102,103],"madd_munfasil":[2,4],"hamzat_wasl":[11,12,39,40,50,51,75,76]},
+"72": {"ghunnah":[111,114],"ikhfa":[69,72],"idghaam_ghunnah":[19,24],"idghaam_mutajanisayn":[7,8],"lam_shamsiyyah":[110,111],"madd_2":[41,42,143,144],"madd_246":[165,166],"madd_munfasil":[64,66,129,131],"madd_muttasil":[12,14],"qalqalah":[104,106],"silent":[53,55,99,101,131,133],"hamzat_wasl":[34,35,58,59,81,82,109,110,122,123]},
+"73": {"ghunnah":[56,59,172,175],"ikhfa":[30,34,151,154],"idghaam_ghunnah":[86,90,103,108,213,217],"madd_2":[236,237],"madd_246":[246,247],"madd_munfasil":[14,16,94,97,115,117],"madd_muttasil":[219,221],"madd_6":[138,140],"silent":[16,18],"hamzat_wasl":[60,61,76,77,176,177,193,194,226,227]},
+"74": {"idghaam_ghunnah":[26,30],"madd_2":[22,23],"madd_246":[68,69],"madd_muttasil":[32,34],"hamzat_wasl":[39,40,51,52,61,62]},
+"75": {"ghunnah":[194,197,237,240],"ikhfa":[32,36,49,52,95,99,179,184],"idghaam_ghunnah":[54,58,253,257],"idghaam_no_ghunnah":[117,122],"idghaam_shafawi":[85,90],"madd_2":[21,22,184,185,243,244],"madd_246":[307,308],"madd_munfasil":[65,67,133,135],"madd_muttasil":[174,176],"silent":[208,210],"hamzat_wasl":[14,15,232,233,274,275,282,283]},
+"76": {"ghunnah":[48,51],"madd_2":[31,32],"madd_246":[78,79],"hamzat_wasl":[35,36,52,53,68,69]},
+"77": {"ghunnah":[2,5],"ikhfa":[66,71,163,166],"madd_2":[53,54,99,100,194,195],"madd_246":[240,241],"madd_muttasil":[84,86],"silent":[80,82],"hamzat_wasl":[6,7,37,38,114,115,147,148,187,188]},
+"78": {"ghunnah":[4,7],"ikhfa":[147,150,177,180],"ikhfa_shafawi":[50,54],"idghaam_ghunnah":[25,30],"madd_2":[34,35,61,62,91,92,118,119],"madd_246":[241,242],"hamzat_wasl":[54,55,84,85,111,112,151,152,181,182,208,209,216,217]},
+"79": {"ghunnah":[69,72,82,85,97,100],"ikhfa":[129,133,152,156,186,189,226,229],"idghaam_ghunnah":[21,25],"idghaam_no_ghunnah":[119,125],"lam_shamsiyyah":[68,69,96,97],"madd_2":[49,50,149,150,168,169,174,175,212,213],"madd_246":[240,241],"qalqalah":[234,236],"silent":[110,112,160,162],"hamzat_wasl":[34,35,42,43,55,56,67,68,137,138,205,206]},
+"80": {"ghunnah":[56,59],"ikhfa":[21,25,119,122],"ikhfa_shafawi":[91,95],"idghaam_shafawi":[122,127],"lam_shamsiyyah":[55,56],"madd_2":[64,65],"madd_246":[133,134],"madd_muttasil":[43,45],"silent":[33,35],"hamzat_wasl":[36,37,54,55,95,96]},
+"81": {"ghunnah":[33,36,91,94,151,154,172,175],"ikhfa":[68,72,87,91,167,170],"idghaam_ghunnah":[76,80,112,117],"idghaam_no_ghunnah":[123,128],"idghaam_shafawi":[63,68,294,299],"lam_shamsiyyah":[32,33,303,304],"madd_2":[27,28,41,42,74,75,159,160,177,178,222,223,307,308],"madd_246":[312,313],"madd_munfasil":[49,51,243,245],"madd_muttasil":[97,99],"qalqalah":[189,191,250,252],"silent":[245,247,276,278],"hamzat_wasl":[14,15,31,32,268,269,302,303]},
+"82": {"ikhfa":[4,8],"madd_2":[25,26,56,57],"madd_246":[61,62],"madd_muttasil":[39,41],"silent":[35,37],"hamzat_wasl":[51,52]},
+"83": {"ikhfa":[55,59],"idghaam_ghunnah":[92,97,102,107],"lam_shamsiyyah":[62,63],"madd_2":[68,69,71,72],"madd_246":[124,125],"madd_munfasil":[41,43],"qalqalah":[27,29],"hamzat_wasl":[17,18,61,62,77,78]},
+"84": {"ghunnah":[10,13,177,180],"ikhfa":[34,37,59,62],"idghaam_ghunnah":[230,235],"idghaam_no_ghunnah":[191,196],"lam_shamsiyyah":[176,177],"madd_2":[79,80,94,95,109,110,255,256],"madd_246":[265,266],"madd_munfasil":[29,31,54,56,69,72,144,146],"qalqalah":[75,77],"hamzat_wasl":[17,18,127,128,175,176]},
+"85": {"ikhfa":[39,44],"idghaam_ghunnah":[4,8,46,50],"madd_2":[31,32,98,99],"madd_246":[103,104],"qalqalah":[8,10,50,52],"hamzat_wasl":[22,23,75,76,93,94]},
+"86": {"ghunnah":[76,79],"ikhfa":[28,33],"idghaam_ghunnah":[95,99],"lam_shamsiyyah":[81,82,157,158],"madd_2":[53,54,120,121,161,162],"madd_246":[166,167],"madd_munfasil":[69,71],"madd_muttasil":[101,103],"silent":[38,40,71,73],"hamzat_wasl":[15,16,80,81,110,111,126,127,146,147,156,157]},
+"87": {"ghunnah":[28,31,82,85],"lam_shamsiyyah":[81,82],"madd_246":[97,98],"madd_muttasil":[6,8,17,19,69,71],"qalqalah":[91,93],"silent":[2,4],"hamzat_wasl":[52,53,62,63,80,81]},
+"88": {"ikhfa":[65,68],"madd_2":[2,3],"madd_246":[70,71],"hamzat_wasl":[41,42]},
+"89": {"ghunnah":[64,67],"iqlab":[29,32],"idghaam_no_ghunnah":[82,87],"madd_2":[40,41],"madd_246":[89,90],"silent":[23,25,57,59],"hamzat_wasl":[7,8,68,69]},
+"90": {"ghunnah":[2,5,48,51],"ikhfa":[75,79],"idghaam_no_ghunnah":[69,75],"lam_shamsiyyah":[120,121],"madd_2":[38,39],"madd_246":[129,130],"madd_muttasil":[107,109],"madd_6":[124,126],"qalqalah":[79,81],"silent":[23,25,61,63,103,105],"hamzat_wasl":[6,7,52,53,119,120]},
+"91": {"ghunnah":[2,5],"ikhfa":[51,55],"idghaam_ghunnah":[57,61,106,111,167,171,184,189],"idghaam_shafawi":[81,86,179,184],"madd_2":[189,190],"madd_246":[194,195],"madd_munfasil":[130,132],"madd_muttasil":[139,141],"qalqalah":[61,63],"silent":[23,25,34,36,135,137],"hamzat_wasl":[6,7,91,92,116,117]},
+"92": {"ghunnah":[45,48,93,96],"ikhfa":[2,6,34,37,69,72,80,84,87,91],"madd_2":[109,110],"madd_246":[115,116],"silent":[12,14,40,42,75,77],"hamzat_wasl":[15,16,97,98]},
+"93": {"ikhfa":[106,110,117,121,189,193,193,196],"idghaam_no_ghunnah":[27,33],"lam_shamsiyyah":[7,8,130,131,161,162],"madd_2":[102,103,139,140,170,171,201,202],"madd_246":[206,207],"madd_munfasil":[37,39,184,186],"madd_muttasil":[46,48,79,81],"qalqalah":[110,112],"silent":[155,157],"hamzat_wasl":[6,7,129,130,160,161,176,177]},
+"94": {"iqlab":[44,47],"lam_shamsiyyah":[82,83],"madd_2":[55,56,86,87],"madd_246":[91,92],"madd_muttasil":[69,71],"silent":[65,67],"hamzat_wasl":[7,8,23,24,31,32,81,82]},
+"95": {"idghaam_ghunnah":[61,66],"madd_2":[48,49],"madd_246":[92,93],"qalqalah":[44,46],"silent":[31,33],"hamzat_wasl":[12,13,22,23,81,82]},
+"96": {"ghunnah":[2,5,31,34],"idghaam_ghunnah":[19,23,65,70],"idghaam_no_ghunnah":[73,79],"lam_shamsiyyah":[30,31],"madd_2":[83,84],"madd_246":[88,89]},
+"97": {"ghunnah":[98,101,172,175],"ikhfa":[53,57,159,163],"iqlab":[13,17],"idghaam_ghunnah":[25,30,77,82,152,157],"lam_shamsiyyah":[97,98],"madd_2":[11,12,23,24,42,43,63,64,202,203],"madd_246":[207,208],"qalqalah":[38,40],"hamzat_wasl":[96,97,111,112,126,127,176,177,197,198]},
+"98": {"madd_2":[23,24,52,53],"madd_246":[101,102],"madd_munfasil":[7,9],"hamzat_wasl":[16,17,56,57,66,67]},
+"99": {"ghunnah":[144,147],"ikhfa":[45,49,101,104],"idghaam_ghunnah":[94,99],"madd_2":[23,24,136,137],"madd_246":[157,158],"madd_munfasil":[7,9],"madd_muttasil":[113,115],"qalqalah":[78,80],"hamzat_wasl":[16,17,55,56,124,125]},
+"100": {"ikhfa":[37,41],"ikhfa_shafawi":[105,109],"idghaam_ghunnah":[56,62],"madd_2":[91,92,119,120,129,130],"madd_246":[134,135],"madd_munfasil":[2,4,30,32],"silent":[32,34,47,49,81,83],"hamzat_wasl":[13,14,65,66,84,85]},
+"101": {"ikhfa":[25,28],"ikhfa_shafawi":[103,107],"idghaam_ghunnah":[93,97,142,147],"madd_2":[56,57,87,88,140,141],"madd_246":[153,154],"qalqalah":[119,121],"hamzat_wasl":[60,61,107,108]},
+"102": {"ghunnah":[82,85],"ikhfa":[97,100],"idghaam_shafawi":[100,105],"madd_2":[67,68],"madd_246":[111,112],"madd_munfasil":[2,4],"silent":[31,33,41,43],"hamzat_wasl":[13,14,34,35,44,45]},
+"103": {"ghunnah":[234,237],"ikhfa":[108,111,123,127,198,201,245,248],"ikhfa_shafawi":[166,170],"idghaam_ghunnah":[38,43,191,196,224,229],"idghaam_shafawi":[252,257],"lam_shamsiyyah":[233,234],"madd_2":[189,190,267,268,303,304,308,309],"madd_246":[330,331],"madd_munfasil":[180,182],"madd_muttasil":[120,122],"qalqalah":[19,21],"silent":[12,14,57,59,70,72],"hamzat_wasl":[2,3,24,25,62,63,82,83,232,233,283,284]},
+"104": {"ghunnah":[21,24],"ikhfa":[13,16,105,108],"idghaam_ghunnah":[8,13,25,29],"madd_246":[142,143],"madd_muttasil":[119,121],"qalqalah":[29,31],"silent":[115,117],"hamzat_wasl":[43,44,69,70,100,101,131,132]},
+"105": {"iqlab":[60,63],"madd_2":[94,95],"madd_246":[132,133],"madd_muttasil":[75,77,106,108],"silent":[14,16,39,41,54,56,102,104],"hamzat_wasl":[19,20,44,45,84,85]},
+"106": {"ghunnah":[49,52],"ikhfa":[43,47,149,152],"ikhfa_shafawi":[97,101],"idghaam_ghunnah":[23,27],"madd_2":[111,112],"madd_246":[163,164],"qalqalah":[9,11],"silent":[127,129],"hamzat_wasl":[54,55,64,65,130,131]},
+"107": {"ghunnah":[4,7],"madd_2":[79,80],"madd_246":[84,85],"qalqalah":[20,22],"hamzat_wasl":[9,10,19,20,57,58]},
+"108": {"idghaam_no_ghunnah":[82,88],"madd_2":[12,13,92,93],"madd_246":[97,98],"hamzat_wasl":[16,17,46,47,61,62]},
+"109": {"lam_shamsiyyah":[19,20],"madd_2":[25,26,28,29],"madd_246":[84,85],"hamzat_wasl":[18,19,42,43,60,61,77,78]},
+"110": {"ghunnah":[17,20,37,40],"ikhfa":[2,5,94,97],"idghaam_no_ghunnah":[170,176],"idghaam_shafawi":[178,183],"lam_shamsiyyah":[36,37],"madd_2":[153,154,225,226],"madd_246":[230,231],"hamzat_wasl":[58,59,89,90,116,117,146,147,190,191,220,221]},
+"111": {"ghunnah":[80,83],"ikhfa":[90,93],"idghaam_ghunnah":[2,6,28,33,35,39],"madd_2":[41,42],"madd_246":[95,96],"madd_munfasil":[22,24],"qalqalah":[70,72],"hamzat_wasl":[65,66]},
+"112": {"ghunnah":[100,103,188,191],"ikhfa":[280,284],"iqlab":[257,259],"idghaam_ghunnah":[67,72,90,95,124,129],"lam_shamsiyyah":[21,22,99,100],"madd_2":[178,179,225,226,284,285],"madd_246":[324,325],"madd_munfasil":[48,50],"madd_muttasil":[111,113,262,264],"qalqalah":[64,66,87,89,241,243],"silent":[50,52,202,204,301,303,313,315],"hamzat_wasl":[20,21,75,76,98,99,132,133,162,163,229,230,251,252]},
+"113": {"ghunnah":[45,48],"ikhfa":[49,53],"idghaam_ghunnah":[17,22,60,64],"madd_2":[39,40,77,78],"madd_246":[123,124],"madd_muttasil":[14,16,53,55,94,96],"silent":[7,9],"hamzat_wasl":[32,33,81,82,99,100]},
+"114": {"ikhfa":[97,100],"lam_shamsiyyah":[156,157],"madd_2":[109,110,131,132,160,161],"madd_246":[165,166],"madd_muttasil":[143,145],"silent":[139,141],"hamzat_wasl":[14,15,24,25,34,35,61,62,92,93,122,123,155,156]},
+"115": {"ikhfa":[28,32],"iqlab":[64,68],"idghaam_ghunnah":[34,38],"madd_246":[79,80],"silent":[15,17],"hamzat_wasl":[50,51,69,70]},
+"116": {"ghunnah":[2,5,132,135],"ikhfa":[28,32],"idghaam_ghunnah":[102,107],"idghaam_shafawi":[80,85],"lam_shamsiyyah":[131,132],"madd_2":[54,55,75,76,126,127,153,154],"madd_246":[158,159],"madd_munfasil":[66,68],"madd_muttasil":[113,115],"silent":[23,25,109,111],"hamzat_wasl":[6,7,88,89,130,131]},
+"117": {"ikhfa":[13,16,70,74,107,111,122,125,184,187],"lam_shamsiyyah":[47,48],"madd_2":[28,29,42,43,176,177],"madd_246":[202,203],"madd_munfasil":[115,117],"silent":[41,42,117,119],"hamzat_wasl":[34,35,46,47,164,165]},
+"118": {"ghunnah":[216,219],"ikhfa":[64,68,242,246,246,249],"idghaam_ghunnah":[59,64,100,105],"madd_2":[163,164,236,237],"madd_246":[260,261],"madd_munfasil":[2,4],"madd_muttasil":[147,149],"qalqalah":[128,130,208,210],"silent":[31,33,48,50,109,111],"hamzat_wasl":[13,14,138,139,228,229]},
+"119": {"ghunnah":[128,131,227,230],"ikhfa":[6,9],"iqlab":[245,249],"lam_shamsiyyah":[257,258],"madd_2":[82,83,93,94],"madd_246":[263,264],"madd_munfasil":[2,4,118,120],"madd_muttasil":[18,20],"silent":[14,16,120,122,147,149,156,158,209,211],"hamzat_wasl":[75,76,170,171,188,189,231,232,256,257]},
+"120": {"ghunnah":[151,154],"ikhfa":[2,6,24,28,41,45,86,90],"idghaam_ghunnah":[62,66],"madd_246":[185,186],"qalqalah":[47,49,186,187],"silent":[73,75,97,99,110,112],"hamzat_wasl":[155,156]},
+"121": {"madd_2":[59,60],"madd_246":[99,100],"hamzat_wasl":[40,41,79,80]},
+"122": {"ghunnah":[7,10],"ikhfa":[29,32,37,41],"idghaam_mutajanisayn":[10,11],"madd_246":[115,116],"madd_muttasil":[15,17],"hamzat_wasl":[51,52,80,81,104,105]},
+"123": {"ikhfa":[41,44,55,59],"idghaam_ghunnah":[35,39],"madd_246":[97,98],"qalqalah":[6,8,32,34],"silent":[66,68],"hamzat_wasl":[20,21,59,60,69,70]},
+"124": {"ikhfa":[118,121],"ikhfa_shafawi":[71,75],"idghaam_ghunnah":[33,37,50,54,92,97],"madd_2":[79,80,90,91],"madd_246":[123,124],"madd_muttasil":[107,109],"hamzat_wasl":[100,101]},
+"125": {"ikhfa":[10,14,53,57],"ikhfa_shafawi":[93,97],"idghaam_ghunnah":[113,118],"idghaam_shafawi":[48,53],"madd_2":[68,69,111,112],"madd_246":[146,147],"madd_munfasil":[4,7],"madd_muttasil":[128,130],"qalqalah":[79,81],"silent":[21,23,34,36],"hamzat_wasl":[121,122]},
+"126": {"ghunnah":[58,61,87,90],"ikhfa":[109,112],"ikhfa_shafawi":[71,75],"lam_shamsiyyah":[86,87],"madd_2":[77,78],"madd_246":[139,140],"qalqalah":[52,54],"hamzat_wasl":[15,16,85,86,113,114,121,122,132,133]},
+"127": {"ikhfa":[68,71],"idghaam_ghunnah":[16,22],"madd_246":[87,88],"madd_munfasil":[41,43],"madd_muttasil":[81,83],"qalqalah":[4,6],"silent":[43,45,76,78],"hamzat_wasl":[25,26]},
+"128": {"ghunnah":[81,84],"madd_2":[91,92],"madd_246":[96,97],"hamzat_wasl":[17,18]},
+"129": {"idghaam_ghunnah":[65,69,90,94],"idghaam_no_ghunnah":[117,122],"lam_shamsiyyah":[19,20],"madd_2":[25,26,28,29],"madd_246":[124,125],"madd_muttasil":[71,73,96,98],"hamzat_wasl":[18,19,42,43,103,104]},
+"130": {"idghaam_ghunnah":[71,77,85,89],"lam_shamsiyyah":[51,52],"madd_2":[69,70,79,80],"madd_246":[127,128],"madd_munfasil":[2,4,58,60],"silent":[31,33,47,49,57,58,60,62,96,98],"hamzat_wasl":[13,14,50,51,89,90,99,100]},
+"131": {"ghunnah":[14,17],"lam_shamsiyyah":[13,14],"madd_2":[46,47],"madd_246":[51,52],"madd_munfasil":[27,29],"silent":[9,11],"hamzat_wasl":[2,3,12,13,21,22]},
+"132": {"lam_shamsiyyah":[24,25],"madd_246":[54,55],"silent":[10,12],"hamzat_wasl":[13,14,23,24]},
+"133": {"ghunnah":[52,55],"idghaam_ghunnah":[30,35],"idghaam_no_ghunnah":[35,40],"lam_shamsiyyah":[69,70],"madd_2":[75,76,78,79],"madd_246":[115,116],"madd_munfasil":[9,11],"silent":[11,13],"hamzat_wasl":[68,69,84,85]},
+"134": {"ghunnah":[100,103],"ikhfa":[12,15],"lam_shamsiyyah":[26,27,41,42,99,100],"madd_2":[60,61],"madd_246":[136,137],"madd_muttasil":[33,35,48,50],"hamzat_wasl":[25,26,40,41,55,56,69,70,81,82,98,99,109,110,125,126]},
+"135": {"ikhfa":[56,59],"idghaam_ghunnah":[119,123],"lam_shamsiyyah":[131,132],"madd_2":[30,31],"madd_246":[210,211],"madd_munfasil":[49,51],"silent":[25,27,51,53,73,75,98,100,171,173,192,194],"hamzat_wasl":[2,3,76,77,86,87,130,131,148,149]},
+"136": {"ghunnah":[57,60],"ikhfa":[62,66,74,78],"idghaam_ghunnah":[35,40],"idghaam_no_ghunnah":[40,45],"idghaam_shafawi":[23,28],"madd_2":[60,61,95,96,101,102,138,139],"madd_246":[143,144],"madd_muttasil":[6,8,17,19],"qalqalah":[66,68,128,130],"silent":[2,4],"hamzat_wasl":[86,87,133,134]},
+"137": {"ikhfa":[14,18,32,36,62,65],"madd_2":[86,87],"madd_246":[106,107],"qalqalah":[2,4,18,20],"silent":[42,44,68,70],"hamzat_wasl":[49,50,61,62,94,95]},
+"138": {"ghunnah":[19,22],"idghaam_ghunnah":[31,36],"idghaam_no_ghunnah":[13,18,45,50],"lam_shamsiyyah":[18,19],"madd_2":[2,3],"madd_246":[59,60]},
+"139": {"ikhfa":[38,41,60,64,64,67],"idghaam_shafawi":[67,72],"madd_246":[78,79],"silent":[13,15,31,33],"hamzat_wasl":[44,45]},
+"140": {"ghunnah":[108,111],"ikhfa":[22,26,171,174],"idghaam_ghunnah":[2,6,52,57],"lam_shamsiyyah":[107,108,211,212],"madd_2":[63,64,215,216],"madd_246":[220,221],"madd_muttasil":[183,185],"qalqalah":[28,30],"silent":[154,156],"hamzat_wasl":[37,38,74,75,106,107,128,129,136,137,190,191,210,211]},
+"141": {"madd_2":[59,60],"madd_246":[64,65],"silent":[40,42],"hamzat_wasl":[14,15,22,23,54,55]},
+"142": {"ghunnah":[37,40,47,50],"ikhfa":[18,22,92,95],"lam_shamsiyyah":[110,111],"madd_2":[81,82,114,115],"madd_246":[119,120],"qalqalah":[9,11,22,24],"silent":[29,31,87,89],"hamzat_wasl":[32,33,61,62,69,70,109,110]},
+"143": {"ghunnah":[21,24],"ikhfa":[11,14,41,45,52,56,90,93,98,101],"madd_246":[103,104],"qalqalah":[6,8,45,47,69,71],"hamzat_wasl":[29,30]},
+"144": {"ghunnah":[10,13],"ikhfa":[29,33,45,49,96,99,138,141],"idghaam_ghunnah":[74,79,134,138,168,172,192,197],"lam_shamsiyyah":[57,58,216,217],"madd_2":[122,123,220,221],"madd_246":[225,226],"madd_munfasil":[112,115],"qalqalah":[33,35,49,51,101,103,143,145,201,203],"silent":[72,74],"hamzat_wasl":[56,57,95,96,178,179,207,208,215,216]},
+"145": {"ikhfa":[23,27],"idghaam_ghunnah":[63,69,75,80,82,86,132,136],"lam_shamsiyyah":[100,101,193,194],"madd_2":[61,62,118,119,170,171,197,198],"madd_246":[202,203],"qalqalah":[88,90,138,140,186,188],"hamzat_wasl":[49,50,99,100,149,150,192,193]},
+"146": {"ikhfa":[23,27,59,63],"idghaam_ghunnah":[9,14,14,19],"lam_shamsiyyah":[171,172],"madd_2":[27,28,39,40,175,176],"madd_246":[180,181],"madd_munfasil":[81,83],"silent":[74,76,129,131,149,151],"hamzat_wasl":[108,109,138,139,154,155,170,171]},
+"147": {"ikhfa":[33,37,134,137],"madd_2":[164,165],"madd_246":[169,170],"madd_munfasil":[28,30,95,97],"qalqalah":[120,122],"silent":[41,43],"hamzat_wasl":[53,54,133,134,149,150,159,160]},
+"148": {"lam_shamsiyyah":[32,33],"madd_2":[9,10],"madd_246":[101,102],"hamzat_wasl":[15,16,31,32,59,60,74,75,90,91]},
+"149": {"ikhfa":[37,41,109,112],"madd_2":[97,98,122,123],"madd_246":[127,128],"madd_munfasil":[2,4,30,32,87,90],"silent":[32,34,47,49,67,69,117,119],"hamzat_wasl":[13,14,50,51]},
+"150": {"ghunnah":[42,45],"lam_shamsiyyah":[41,42],"madd_2":[20,21,45,46],"madd_246":[50,51],"hamzat_wasl":[5,6,40,41]},
+"151": {"ghunnah":[134,137],"idghaam_ghunnah":[114,119],"lam_shamsiyyah":[43,44,133,134,159,160],"madd_2":[104,105,112,113,126,127,163,164],"madd_246":[168,169],"madd_munfasil":[56,58],"silent":[39,41,68,70],"hamzat_wasl":[22,23,42,43,73,74,132,133,158,159]},
+"152": {"ghunnah":[250,253],"ikhfa":[184,187,217,220,308,311],"ikhfa_shafawi":[56,60],"iqlab":[142,145],"idghaam_ghunnah":[192,196,225,229],"idghaam_shafawi":[136,141,164,169,187,192,220,225],"lam_shamsiyyah":[203,204],"madd_2":[68,69,102,103,161,162],"madd_246":[352,353],"madd_munfasil":[36,38,75,78,153,155],"qalqalah":[6,8,278,280,297,299],"hamzat_wasl":[20,21,116,117,202,203,235,236,316,317,341,342]},
+"153": {"ghunnah":[107,111,117,120],"iqlab":[109,114,204,208],"idghaam_ghunnah":[46,50],"idghaam_no_ghunnah":[119,124],"lam_shamsiyyah":[51,52],"madd_2":[29,30,85,86,97,98,180,181],"madd_246":[221,222],"madd_munfasil":[37,40,75,77,173,175],"qalqalah":[63,65],"silent":[141,143],"hamzat_wasl":[50,51,190,191]},
+"154": {"ghunnah":[2,5,42,45,116,119,142,145,177,180,252,255],"ikhfa":[8,11,88,91,105,109,128,131,236,240,243,247,300,303,419,422],"iqlab":[28,31,602,606],"idghaam_ghunnah":[53,58,62,67,83,88,381,386],"idghaam_shafawi":[22,27,307,312],"lam_shamsiyyah":[614,615],"madd_2":[186,187,273,274,400,401],"madd_246":[620,621],"madd_munfasil":[295,297],"madd_muttasil":[76,78,98,100],"qalqalah":[109,111,320,322,515,517],"hamzat_wasl":[37,38,151,152,166,167,181,182,224,225,256,257,366,367,450,451,478,479,524,525,588,589,613,614]},
+"155": {"ghunnah":[2,5,67,70,159,162],"ikhfa":[30,33],"lam_shamsiyyah":[90,91],"madd_2":[98,99],"madd_246":[183,184],"qalqalah":[131,133],"silent":[25,27,122,124],"hamzat_wasl":[6,7,43,44,52,53,74,75,89,90,140,141,163,164]},
+"156": {"ikhfa":[166,169,236,240],"idghaam_no_ghunnah":[146,152],"madd_2":[90,91,223,224,270,271],"madd_246":[314,315],"madd_munfasil":[2,4],"qalqalah":[206,208],"silent":[31,33,46,48,68,70,79,81,111,113,139,141,161,163,183,185,199,201],"hamzat_wasl":[13,14,51,52,118,119,213,214,256,257,284,285]},
+"157": {"ghunnah":[100,103],"ikhfa":[6,10],"idghaam_ghunnah":[63,68,95,100],"madd_246":[113,114],"qalqalah":[107,109],"hamzat_wasl":[31,32,71,72]},
+"158": {"idghaam_ghunnah":[6,11],"madd_246":[57,58],"hamzat_wasl":[41,42]},
+"159": {"ghunnah":[220,223],"ikhfa":[33,36,53,56,85,88],"idghaam_ghunnah":[15,20],"madd_246":[254,255],"silent":[92,94],"hamzat_wasl":[23,24,72,73,84,85,111,112,128,129,165,166,210,211,224,225,240,241]},
+"160": {"ikhfa":[6,9,68,72,84,87],"iqlab":[97,100],"idghaam_ghunnah":[2,6,49,53],"idghaam_shafawi":[91,96],"madd_2":[107,108],"madd_246":[152,153],"hamzat_wasl":[16,17,74,75,117,118,141,142]},
+"161": {"ghunnah":[90,93],"idghaam_ghunnah":[24,28,38,42,115,120],"madd_2":[82,83],"madd_246":[150,151],"hamzat_wasl":[75,76]},
+"162": {"ghunnah":[90,93],"iqlab":[41,44],"idghaam_ghunnah":[57,62],"madd_2":[24,25,82,83],"madd_246":[112,113],"madd_muttasil":[45,47],"hamzat_wasl":[9,10,28,29,65,66,105,106]},
+"163": {"ikhfa":[17,20],"iqlab":[45,49],"madd_2":[11,12],"madd_246":[62,63],"hamzat_wasl":[21,22,31,32]},
+"164": {"ghunnah":[9,12],"ikhfa":[79,82,182,186,195,199],"idghaam_ghunnah":[68,74,216,221],"madd_2":[115,116,120,121,160,161,214,215],"madd_246":[223,224],"qalqalah":[4,6,199,201],"silent":[96,98,190,192],"hamzat_wasl":[13,14,27,28,153,154,166,167]},
+"165": {"ghunnah":[6,9,75,78,123,126],"ikhfa":[34,38,105,108,111,114,153,157],"idghaam_shafawi":[23,28,49,54],"madd_2":[16,17,83,84],"madd_246":[159,160],"madd_munfasil":[9,11],"qalqalah":[38,40,45,47],"hamzat_wasl":[127,128]},
+"166": {"madd_2":[11,12],"madd_246":[91,92],"madd_munfasil":[4,6],"hamzat_wasl":[26,27,35,36,59,60,80,81]},
+"167": {"idghaam_no_ghunnah":[137,143],"idghaam_shafawi":[241,246],"madd_2":[63,64,153,154,213,214,236,237],"madd_246":[304,305],"qalqalah":[98,100,188,190],"silent":[31,33,58,60,69,71,105,107,114,116],"hamzat_wasl":[13,14,84,85,97,98,143,144,273,274]},
+"168": {"ikhfa":[103,106,125,129,129,132],"madd_2":[27,28,137,138],"madd_246":[142,143],"qalqalah":[86,88],"silent":[16,18,44,46,75,77,93,95],"hamzat_wasl":[85,86,113,114]},
+"169": {"ghunnah":[14,17],"ikhfa":[88,91],"iqlab":[66,71],"madd_2":[64,65],"madd_246":[110,111],"madd_muttasil":[81,83],"silent":[35,37],"hamzat_wasl":[18,19,50,51]},
+"170": {"ikhfa":[39,43],"idghaam_shafawi":[102,107],"madd_2":[23,24,49,50],"madd_246":[165,166],"madd_munfasil":[14,16],"qalqalah":[59,61],"silent":[95,97],"hamzat_wasl":[29,30,71,72]},
+"171": {"ghunnah":[54,57],"idghaam_ghunnah":[25,30,48,52],"madd_246":[96,97],"qalqalah":[6,8,80,82],"hamzat_wasl":[33,34,58,59,85,86]},
+"172": {"iqlab":[48,51],"lam_shamsiyyah":[35,36],"madd_246":[140,141],"madd_munfasil":[59,61],"qalqalah":[131,133],"silent":[21,23,104,106,126,128],"hamzat_wasl":[10,11,34,35,74,75,118,119]},
+"173": {"ghunnah":[25,28,34,37,40,43],"idghaam_ghunnah":[102,107],"lam_shamsiyyah":[24,25,39,40],"madd_2":[100,101],"madd_246":[150,151],"qalqalah":[49,51],"silent":[59,61,113,115],"hamzat_wasl":[23,24,38,39,71,72,126,127,143,144]},
+"174": {"ikhfa":[3,6],"idghaam_ghunnah":[23,28,72,76],"idghaam_no_ghunnah":[46,51],"madd_2":[94,95],"madd_246":[131,132],"madd_muttasil":[69,71],"silent":[11,13,85,87],"hamzat_wasl":[2,3,31,32,76,77,98,99,108,109]},
+"175": {"ghunnah":[2,5],"ikhfa":[90,94,94,97],"idghaam_shafawi":[97,102],"lam_shamsiyyah":[20,21],"madd_2":[11,12,28,29,56,57],"madd_246":[108,109],"madd_muttasil":[50,52],"hamzat_wasl":[19,20]},
+"176": {"ghunnah":[55,58],"ikhfa":[12,15,138,143],"idghaam_ghunnah":[65,69,92,97],"madd_2":[30,31],"madd_246":[179,180],"qalqalah":[120,122],"silent":[75,77],"hamzat_wasl":[16,17,43,44,78,79,103,104,145,146]},
+"177": {"ghunnah":[2,5],"idghaam_ghunnah":[54,58,81,86],"madd_2":[48,49],"madd_246":[105,106],"silent":[25,27,64,66],"hamzat_wasl":[6,7,16,17,28,29,40,41,67,68]},
+"178": {"ghunnah":[14,17,41,44,87,90],"ikhfa":[75,78],"idghaam_ghunnah":[130,135,148,153],"idghaam_no_ghunnah":[68,73],"madd_246":[155,156],"madd_munfasil":[34,36,120,122],"silent":[36,38,122,124],"hamzat_wasl":[18,19]},
+"179": {"ghunnah":[173,176],"ikhfa":[57,60,263,267],"idghaam_ghunnah":[212,216],"idghaam_no_ghunnah":[197,202],"lam_shamsiyyah":[105,106],"madd_2":[170,171,208,209,257,258],"madd_246":[310,311],"madd_munfasil":[52,54],"madd_muttasil":[218,220],"qalqalah":[139,141,187,189,301,303],"silent":[234,236,274,276,287,289],"hamzat_wasl":[11,12,28,29,88,89,104,105,127,128,156,157,177,178,239,240]},
+"180": {"ghunnah":[14,17],"ikhfa":[69,73],"ikhfa_shafawi":[99,103],"idghaam_no_ghunnah":[91,97,115,120],"lam_shamsiyyah":[200,201],"madd_2":[53,54,79,80,158,159,174,175,195,196,206,207,209,210],"madd_246":[257,258],"madd_munfasil":[44,46],"qalqalah":[30,32],"silent":[151,153],"hamzat_wasl":[18,19,59,60,167,168,199,200,215,216,227,228]},
+"181": {"ghunnah":[52,55],"iqlab":[137,139],"idghaam_ghunnah":[70,74,160,164],"madd_246":[196,197],"madd_munfasil":[45,47],"madd_muttasil":[89,91,142,144],"qalqalah":[5,7,197,198],"silent":[47,49,115,117,178,180],"hamzat_wasl":[15,16,30,31,56,57,131,132,189,190]},
+"182": {"ghunnah":[40,43],"idghaam_no_ghunnah":[68,73],"madd_2":[2,3],"madd_246":[79,80],"qalqalah":[80,81],"hamzat_wasl":[44,45]},
+"183": {"ghunnah":[22,25,123,126],"ikhfa":[108,112,161,165,233,237,237,240],"idghaam_ghunnah":[156,161],"lam_shamsiyyah":[122,123],"madd_2":[183,184,245,246],"madd_246":[250,251],"madd_munfasil":[15,17,49,51],"madd_muttasil":[142,144],"qalqalah":[137,139,165,167],"silent":[17,19],"hamzat_wasl":[26,27,121,122,173,174,191,192]},
+"184": {"ikhfa":[4,8,42,46],"idghaam_ghunnah":[37,42],"lam_shamsiyyah":[80,81],"madd_2":[73,74,98,99],"madd_246":[109,110],"madd_muttasil":[55,57],"qalqalah":[21,23,46,48],"hamzat_wasl":[63,64,79,80,91,92,102,103]},
+"185": {"ghunnah":[38,41,111,114,134,137],"ikhfa":[11,15,93,97],"lam_shamsiyyah":[110,111,172,173],"madd_2":[83,84,167,168,194,195],"madd_246":[205,206],"madd_munfasil":[180,182],"madd_muttasil":[15,17],"qalqalah":[122,124,144,146],"silent":[166,167],"hamzat_wasl":[24,25,76,77,109,110,129,130,159,160,171,172,198,199]},
+"186": {"ghunnah":[10,13,59,62,193,196],"ikhfa":[37,40,100,104,146,151,162,166],"idghaam_ghunnah":[155,160],"madd_2":[25,26,94,95,199,200],"madd_246":[224,225],"madd_munfasil":[16,18,138,140],"qalqalah":[4,6,104,106],"silent":[84,86,140,142,173,175,186,188],"hamzat_wasl":[68,69,87,88,120,121,217,218]},
+"187": {"ghunnah":[72,75,82,85],"ikhfa":[168,173,177,182],"lam_shamsiyyah":[81,82],"madd_2":[27,28,57,58,77,78,108,109,161,162],"madd_246":[201,202],"madd_muttasil":[126,128],"silent":[47,49,154,156],"hamzat_wasl":[14,15,31,32,50,51,145,146]},
+"188": {"ghunnah":[12,15,120,123],"ikhfa_shafawi":[125,129],"idghaam_ghunnah":[69,73,137,142],"madd_246":[177,178],"madd_munfasil":[42,44],"silent":[50,52,80,82,103,105],"hamzat_wasl":[16,17,145,146]},
+"189": {"ikhfa":[71,75],"lam_shamsiyyah":[18,19],"madd_2":[24,25,27,28],"madd_246":[77,78],"hamzat_wasl":[17,18,33,34,45,46]},
+"190": {"ghunnah":[2,5,69,72],"idghaam_no_ghunnah":[87,92],"lam_shamsiyyah":[18,19,68,69],"madd_2":[24,25,27,28,52,53,85,86],"madd_246":[109,110],"qalqalah":[110,111],"silent":[94,96],"hamzat_wasl":[17,18,33,34,45,46,56,57,67,68,100,101]},
+"191": {"ghunnah":[193,196],"ikhfa":[160,165],"idghaam_ghunnah":[36,41,47,52],"lam_shamsiyyah":[100,101,192,193],"madd_2":[34,35,106,107,109,110,149,150,156,157,169,170],"madd_246":[196,197],"qalqalah":[142,144,165,167],"hamzat_wasl":[22,23,99,100,115,116,191,192]},
+"192": {"ghunnah":[12,15,33,36],"ikhfa":[20,24,89,92],"lam_shamsiyyah":[32,33,69,70],"madd_2":[59,60,73,74],"madd_246":[92,93],"madd_munfasil":[7,9],"qalqalah":[24,26,44,46],"hamzat_wasl":[31,32]},
+"193": {"ghunnah":[13,16,99,102,152,155],"idghaam_ghunnah":[38,43],"madd_2":[59,60],"madd_246":[199,200],"madd_munfasil":[8,10],"qalqalah":[195,197],"silent":[76,78],"hamzat_wasl":[115,116,190,191]},
+"194": {"ghunnah":[90,93],"idghaam_mutajanisayn":[28,29],"madd_2":[82,83],"madd_246":[117,118],"qalqalah":[118,119],"hamzat_wasl":[75,76,109,110]},
+"195": {"ghunnah":[32,35,234,237,275,278,285,288],"ikhfa":[68,71,76,80,92,95,119,123,160,164,290,294,302,306,344,347,368,371],"iqlab":[112,115],"idghaam_ghunnah":[63,68,333,339],"idghaam_shafawi":[71,76,106,111],"lam_shamsiyyah":[383,384],"madd_2":[59,60,166,167,202,203,288,289,323,324,373,374],"madd_246":[389,390],"madd_munfasil":[39,41],"qalqalah":[269,271,294,296,390,391],"silent":[141,143,155,157,182,184,208,210,220,222],"hamzat_wasl":[2,3,123,124,314,315,348,349,358,359,382,383]},
+"196": {"ghunnah":[11,14],"madd_246":[58,59],"qalqalah":[59,60],"silent":[44,46],"hamzat_wasl":[27,28,51,52]},
+"197": {"ghunnah":[18,21,39,42],"ikhfa":[6,10,14,18],"madd_2":[4,5,29,30],"madd_246":[61,62],"qalqalah":[62,63],"hamzat_wasl":[54,55]},
+"198": {"ghunnah":[48,51],"ikhfa":[53,57,65,69,124,127,144,147],"idghaam_ghunnah":[113,119],"idghaam_no_ghunnah":[161,166],"madd_2":[2,3,51,52,86,87,92,93],"madd_246":[174,175],"qalqalah":[57,59,170,172],"silent":[26,28],"hamzat_wasl":[8,9,18,19,77,78,128,129,148,149]},
+"199": {"ghunnah":[4,7,229,232],"ikhfa":[65,68,91,94,168,173,213,216],"idghaam_ghunnah":[35,39],"madd_2":[27,28,110,111,151,152],"madd_246":[256,257],"madd_munfasil":[60,62,86,88],"madd_muttasil":[186,188],"qalqalah":[202,204,257,258],"silent":[182,184],"hamzat_wasl":[20,21,48,49,155,156,233,234,249,250]},
+"200": {"madd_246":[111,112],"madd_munfasil":[2,4],"silent":[31,33,42,44,55,57,68,70,80,82],"hamzat_wasl":[13,14,34,35,73,74,83,84]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/30.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/30.json
index 26dc58e..5874922 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/30.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/30.json
@@ -1,62 +1,62 @@
{
-"1": {"madd-lazim":[40,42,42,44]},
-"2": {"idgham":[10,11],"madd":[14,15],"wasl":[9,10]},
-"3": {"ghunnah":[33,36],"idgham":[27,32],"madd":[2,4,63,64],"qalqalah":[7,9],"wasl":[13,14]},
-"4": {"ghunnah":[39,43,53,56],"idgham":[73,77],"madd":[95,96],"qalqalah":[43,45],"wasl":[27,28,84,85]},
-"5": {"ghunnah":[19,22],"idgham":[27,31,57,58],"madd":[33,35,63,64],"wasl":[9,10,45,46,56,57]},
-"6": {"ghunnah":[53,56,68,71],"idgham":[67,68],"madd":[44,45,50,51,87,88],"wasl":[7,8,28,29,66,67]},
-"7": {"idgham":[18,24,40,41],"madd":[14,15,35,36,82,83,87,88],"silent":[34,35],"wasl":[27,28,39,40,62,63]},
-"8": {"ghunnah":[31,34,137,140,146,149,167,170],"idgham":[38,43,61,62,130,135,139,144,156,162,166,167],"madd":[26,28,67,68,70,71,102,104,180,182,199,200,204,205],"silent":[21,23],"wasl":[52,53,60,61,76,77,114,115,165,166]},
-"9": {"ghunnah":[38,41,82,86,178,181,217,221,277,281,291,294],"idgham":[128,132],"madd":[62,63,100,102,164,166,198,200,231,232,274,275,284,286,309,310],"qalqalah":[86,88],"silent":[17,19,44,46,102,104,140,142,286,288],"wasl":[24,25,70,71,143,144,221,222,247,248]},
-"10": {"ghunnah":[2,5,60,64],"idgham":[46,47],"madd":[14,15,36,38,50,52,54,57,81,82,122,123],"silent":[42,44,70,72,101,103],"wasl":[22,23,45,46,85,86]},
-"11": {"ghunnah":[31,34,48,51],"madd":[44,45,69,70],"qalqalah":[10,12],"silent":[16,18],"wasl":[19,20]},
-"12": {"idgham":[18,19],"madd":[48,49],"qalqalah":[30,32,42,44],"wasl":[17,18,37,38]},
-"13": {"ghunnah":[23,27],"idgham":[11,16,18,23],"madd":[31,33,46,48,72,74,83,84,88,89],"silent":[50,52,61,63]},
-"14": {"idgham":[18,19,37,41],"madd":[50,51],"wasl":[17,18]},
-"15": {"ghunnah":[4,7],"idgham":[43,44,74,78],"madd":[47,48,52,53,84,85],"silent":[27,29,39,41],"wasl":[9,10,42,43]},
-"16": {"ghunnah":[4,7],"madd":[50,51,63,65,89,91,119,120],"silent":[26,28,39,41,85,87],"wasl":[9,10,68,69,100,101]},
-"17": {"madd":[8,9,52,53],"qalqalah":[4,6],"wasl":[12,13]},
-"18": {"idgham":[22,23,55,60],"madd":[28,29,31,32,74,75],"wasl":[7,8,21,22,37,38]},
-"19": {"madd":[112,113,126,127],"wasl":[9,10,23,24,45,46,61,62,79,80]},
-"20": {"ghunnah":[38,42,46,50,50,53,63,66,66,70,73,77,77,80],"idgham":[33,38],"madd":[12,13,17,19,58,60,84,85]},
-"21": {"ghunnah":[46,49,136,139],"idgham":[36,41,64,70,110,115,121,125,161,166,171,175],"madd":[12,13,17,19,62,63,78,80,146,147,159,160,184,185],"silent":[80,82]},
-"22": {"ghunnah":[98,101],"idgham":[27,28,123,128],"madd":[12,13,17,18,33,34,36,37,61,62,88,89,108,109,121,122,132,133,137,138],"wasl":[26,27,42,43,54,55]},
-"23": {"ghunnah":[28,32,45,48,74,78,89,92],"idgham":[44,45,69,74,114,119,124,128],"madd":[12,13,17,18,63,65,84,86,99,100,112,113,134,135],"qalqalah":[57,59],"wasl":[32,33,43,44,56,57]},
-"24": {"ghunnah":[91,95,138,141],"idgham":[44,49,54,59,75,76,163,168,173,177],"madd":[12,13,17,18,81,83,88,90,101,102,133,135,148,149,161,162,183,184],"wasl":[29,30,74,75,108,109]},
-"25": {"ghunnah":[22,26,70,73,124,127],"idgham":[33,34,97,102],"madd":[12,13,17,19,39,41,66,67,119,121,138,139],"wasl":[32,33,46,47,105,106]},
-"26": {"ghunnah":[10,14],"idgham":[17,18,46,51],"madd":[6,7,23,24,26,27,53,54,57,58,62,63],"wasl":[16,17,32,33]},
-"27": {"ghunnah":[38,41],"idgham":[112,113],"madd":[51,52,118,119,121,122,162,163],"qalqalah":[17,19],"silent":[23,25],"wasl":[7,8,26,27,85,86,95,96,111,112,127,128,144,145,155,156]},
-"28": {"ghunnah":[30,33,86,90,125,128,144,148,177,180],"idgham":[11,16,19,25,49,54,54,59,81,86,226,230],"madd":[76,77,94,96,115,116,141,143,191,192,215,216,236,237],"qalqalah":[111,113],"wasl":[207,208]},
-"29": {"ghunnah":[47,51,63,67],"idgham":[69,73,110,115,115,120],"madd":[30,32,41,43,120,121,125,126],"silent":[32,34],"wasl":[5,6,14,15,92,93]},
-"30": {"ghunnah":[34,39,71,74,154,157,169,172],"idgham":[20,21,70,71,128,129,168,169],"madd":[121,122,151,152,188,189],"qalqalah":[11,13,39,41,94,96],"wasl":[46,47,54,55,69,70,111,112,127,128,136,137,167,168]},
-"31": {"idgham":[46,47],"madd":[53,54,90,91],"silent":[42,44,52,53,71,73],"wasl":[22,23,45,46,79,80]},
-"32": {"ghunnah":[52,57,66,70],"madd":[92,93],"silent":[23,25,44,46],"wasl":[5,6]},
-"33": {"ghunnah":[16,19,27,31,70,73,130,134],"idgham":[15,16,45,50,90,95,121,126],"madd":[78,80,152,153],"silent":[35,37],"wasl":[14,15]},
-"34": {"madd":[18,20,30,31,68,69],"silent":[11,13,48,50]},
-"35": {"ghunnah":[7,10,35,40],"madd":[33,34,76,77,86,87],"silent":[69,71]},
-"36": {"ghunnah":[21,24,35,39,57,61,78,82],"idgham":[20,21],"madd":[6,8,128,129],"qalqalah":[13,15,63,65,122,124],"silent":[44,46],"wasl":[19,20]},
-"37": {"ghunnah":[20,23,79,82],"idgham":[42,43,55,59,104,109,114,118],"madd":[61,63,89,90,102,103,124,125],"qalqalah":[34,36,70,72],"silent":[15,17],"wasl":[24,25,41,42]},
-"38": {"idgham":[58,59,81,86],"madd":[32,33,70,71,129,131,152,153],"qalqalah":[52,54,108,110],"silent":[125,127],"wasl":[13,14,36,37,51,52,57,58,113,114,141,142]},
-"39": {"ghunnah":[61,64,86,89,119,123,128,132],"idgham":[16,21,21,26,27,33,60,61,114,119],"madd":[4,6,46,48,55,56,102,104,126,127,164,166,187,188],"qalqalah":[143,145],"silent":[41,43,81,83,125,126,160,162],"wasl":[59,60,90,91,148,149,176,177]},
-"40": {"ghunnah":[29,32,46,49,64,67,87,91,119,123,133,137,140,144,169,172],"idgham":[101,106,106,110,128,133],"madd":[95,97,123,124,148,149,153,154,161,162,182,183],"qalqalah":[144,146],"wasl":[8,9]},
-"41": {"ghunnah":[68,71,86,90],"idgham":[67,68],"madd":[133,134],"silent":[110,112],"wasl":[7,8,22,23,33,34,66,67,95,96]},
-"42": {"ghunnah":[31,34,75,79],"idgham":[100,105],"madd":[55,56,111,112],"qalqalah":[79,81],"silent":[11,13,37,39],"wasl":[18,19,30,31,63,64]},
-"43": {"ghunnah":[41,45],"idgham":[20,21,52,56,68,73,111,115],"madd":[87,88,123,124],"qalqalah":[11,13,45,47],"wasl":[28,29,94,95]},
-"44": {"ghunnah":[2,6,52,57,61,64],"madd":[30,31,48,49,79,80]},
-"45": {"ghunnah":[60,64,75,78],"idgham":[45,46],"madd":[49,50,54,55,70,72,80,81,99,100,104,105],"qalqalah":[4,6],"silent":[29,31,41,43],"wasl":[11,12,44,45,94,95]},
-"46": {"ghunnah":[143,147],"idgham":[22,26,34,35,55,59,70,75,75,80],"madd":[12,13,17,19,53,54,88,89,123,124,153,154,177,178],"qalqalah":[96,98,131,133],"silent":[138,140],"wasl":[33,34,103,104]},
-"47": {"ghunnah":[23,27,71,75,92,95],"madd":[64,66,85,86,173,174],"qalqalah":[6,8,27,29,120,122],"silent":[127,129],"wasl":[75,76,91,92,108,109,162,163]},
-"48": {"ghunnah":[52,57,120,125],"idgham":[26,27,74,75,191,195],"madd":[32,33,67,68,80,82,96,98,113,114,159,160,164,165,172,174,187,188,197,199,216,218,242,243],"qalqalah":[59,61,105,107,136,138,236,238],"wasl":[8,9,25,26,73,74,131,132]},
-"49": {"ghunnah":[4,8,17,21,53,57],"idgham":[28,32,48,53],"madd":[63,64,75,76],"qalqalah":[21,23,57,59,69,71],"silent":[12,14]},
-"50": {"ghunnah":[3,6,87,90,145,149],"madd":[13,16,22,23,82,84,93,94,151,152],"wasl":[2,3,35,36,57,58,108,109]},
-"51": {"ghunnah":[25,30,65,68],"idgham":[47,53],"madd":[75,76,85,86],"silent":[59,61]},
-"52": {"ghunnah":[4,7,55,58],"idgham":[51,52,60,61],"madd":[66,68,95,96],"qalqalah":[89,91],"silent":[84,86],"wasl":[23,24,50,51,59,60]},
-"53": {"ghunnah":[9,12,33,37,51,55],"idgham":[71,75,101,106],"madd":[4,6,17,18,39,40,90,91,112,113],"wasl":[21,22]},
-"54": {"ghunnah":[29,33,36,40,40,43,54,57,68,72,76,80,80,83,94,97,109,113],"idgham":[24,29,116,121,128,132],"madd":[147,149,177,178],"wasl":[8,9,159,160,170,171]},
-"55": {"ghunnah":[79,83],"idgham":[18,19],"madd":[85,86,108,109],"qalqalah":[30,32,42,44],"silent":[63,65,97,99],"wasl":[17,18,37,38]},
-"56": {"ghunnah":[146,149,156,159],"madd":[47,48,77,78,117,118,143,144,174,175],"qalqalah":[55,57],"silent":[24,26],"wasl":[8,9,27,28,39,40,81,82,103,104,129,130]},
-"57": {"ghunnah":[20,23],"idgham":[11,16],"madd":[84,85],"silent":[43,45],"wasl":[26,27]},
-"58": {"ghunnah":[22,25,55,59,76,80,86,90,109,112,141,144],"idgham":[21,22,68,72,97,102],"madd":[35,36,129,131,162,163],"qalqalah":[6,8,13,15,156,158],"silent":[131,133],"wasl":[40,41,113,114]},
-"59": {"madd":[4,5,64,65],"qalqalah":[12,14],"wasl":[19,20,42,43]},
-"60": {"ghunnah":[12,15,54,57],"idgham":[35,39],"madd":[81,82],"wasl":[2,3,23,24,60,61]}
+"1": {"madd_6":[40,42,42,44]},
+"2": {"lam_shamsiyyah":[10,11],"madd_246":[14,15],"hamzat_wasl":[9,10]},
+"3": {"iqlab":[33,36],"idghaam_shafawi":[27,32],"madd_246":[63,64],"madd_munfasil":[2,4],"qalqalah":[7,9],"hamzat_wasl":[13,14]},
+"4": {"ikhfa":[39,43],"iqlab":[53,56],"idghaam_ghunnah":[73,77],"madd_246":[95,96],"qalqalah":[43,45],"hamzat_wasl":[27,28,84,85]},
+"5": {"ikhfa":[19,22],"idghaam_ghunnah":[27,31],"lam_shamsiyyah":[57,58],"madd_246":[63,64],"madd_muttasil":[33,35],"hamzat_wasl":[9,10,45,46,56,57]},
+"6": {"ghunnah":[53,56,68,71],"lam_shamsiyyah":[67,68],"madd_2":[44,45,50,51],"madd_246":[87,88],"hamzat_wasl":[7,8,28,29,66,67]},
+"7": {"idghaam_ghunnah":[18,24],"lam_shamsiyyah":[40,41],"madd_2":[14,15,35,36,82,83],"madd_246":[87,88],"silent":[34,35],"hamzat_wasl":[27,28,39,40,62,63]},
+"8": {"ghunnah":[137,140,146,149,167,170],"ikhfa":[31,34],"idghaam_ghunnah":[130,135,139,144,156,162],"idghaam_shafawi":[38,43],"lam_shamsiyyah":[61,62,166,167],"madd_2":[67,68,70,71,199,200],"madd_246":[204,205],"madd_munfasil":[26,28,102,104],"madd_muttasil":[180,182],"silent":[21,23],"hamzat_wasl":[52,53,60,61,76,77,114,115,165,166]},
+"9": {"ghunnah":[178,181],"ikhfa":[38,41,82,86,277,281,291,294],"ikhfa_shafawi":[217,221],"idghaam_ghunnah":[128,132],"madd_2":[62,63,231,232,274,275],"madd_246":[309,310],"madd_munfasil":[100,102,164,166,284,286],"madd_muttasil":[198,200],"qalqalah":[86,88],"silent":[17,19,44,46,102,104,140,142,286,288],"hamzat_wasl":[24,25,70,71,143,144,221,222,247,248]},
+"10": {"ghunnah":[2,5],"ikhfa":[60,64],"lam_shamsiyyah":[46,47],"madd_2":[14,15,81,82],"madd_246":[122,123],"madd_munfasil":[50,52,54,57],"madd_muttasil":[36,38],"silent":[42,44,70,72,101,103],"hamzat_wasl":[22,23,45,46,85,86]},
+"11": {"ghunnah":[31,34,48,51],"madd_2":[44,45],"madd_246":[69,70],"qalqalah":[10,12],"silent":[16,18],"hamzat_wasl":[19,20]},
+"12": {"lam_shamsiyyah":[18,19],"madd_246":[48,49],"qalqalah":[30,32,42,44],"hamzat_wasl":[17,18,37,38]},
+"13": {"ikhfa":[23,27],"idghaam_no_ghunnah":[11,16],"idghaam_shafawi":[18,23],"madd_2":[83,84],"madd_246":[88,89],"madd_muttasil":[31,33,46,48,72,74],"silent":[50,52,61,63]},
+"14": {"idghaam_ghunnah":[37,41],"lam_shamsiyyah":[18,19],"madd_246":[50,51],"hamzat_wasl":[17,18]},
+"15": {"ghunnah":[4,7],"idghaam_ghunnah":[74,78],"lam_shamsiyyah":[43,44],"madd_2":[47,48,52,53],"madd_246":[84,85],"silent":[27,29,39,41],"hamzat_wasl":[9,10,42,43]},
+"16": {"ghunnah":[4,7],"madd_2":[50,51],"madd_246":[119,120],"madd_muttasil":[63,65,89,91],"silent":[26,28,39,41,85,87],"hamzat_wasl":[9,10,68,69,100,101]},
+"17": {"madd_2":[8,9],"madd_246":[52,53],"qalqalah":[4,6],"hamzat_wasl":[12,13]},
+"18": {"idghaam_ghunnah":[55,60],"lam_shamsiyyah":[22,23],"madd_2":[28,29,31,32],"madd_246":[74,75],"hamzat_wasl":[7,8,21,22,37,38]},
+"19": {"madd_2":[112,113],"madd_246":[126,127],"hamzat_wasl":[9,10,23,24,45,46,61,62,79,80]},
+"20": {"ghunnah":[50,53],"ikhfa":[38,42,46,50,63,66,73,77,77,80],"ikhfa_shafawi":[66,70],"idghaam_shafawi":[33,38],"madd_2":[12,13],"madd_246":[84,85],"madd_munfasil":[17,19,58,60]},
+"21": {"ghunnah":[136,139],"ikhfa":[46,49],"idghaam_ghunnah":[121,125,171,175],"idghaam_no_ghunnah":[64,70,161,166],"idghaam_shafawi":[36,41,110,115],"madd_2":[12,13,62,63,146,147,159,160],"madd_246":[184,185],"madd_munfasil":[17,19,78,80],"silent":[80,82]},
+"22": {"ghunnah":[98,101],"idghaam_no_ghunnah":[123,128],"lam_shamsiyyah":[27,28],"madd_2":[12,13,17,18,33,34,36,37,61,62,88,89,108,109,121,122,132,133],"madd_246":[137,138],"hamzat_wasl":[26,27,42,43,54,55]},
+"23": {"ghunnah":[45,48,89,92],"ikhfa":[74,78],"ikhfa_shafawi":[28,32],"idghaam_ghunnah":[124,128],"idghaam_no_ghunnah":[114,119],"idghaam_shafawi":[69,74],"lam_shamsiyyah":[44,45],"madd_2":[12,13,17,18,99,100,112,113],"madd_246":[134,135],"madd_munfasil":[84,86],"madd_muttasil":[63,65],"qalqalah":[57,59],"hamzat_wasl":[32,33,43,44,56,57]},
+"24": {"ghunnah":[138,141],"ikhfa":[91,95],"idghaam_ghunnah":[44,49,54,59,173,177],"idghaam_no_ghunnah":[163,168],"lam_shamsiyyah":[75,76],"madd_2":[12,13,17,18,101,102,148,149,161,162],"madd_246":[183,184],"madd_munfasil":[133,135],"madd_muttasil":[81,83,88,90],"hamzat_wasl":[29,30,74,75,108,109]},
+"25": {"ghunnah":[70,73],"ikhfa":[22,26,124,127],"idghaam_ghunnah":[97,102],"lam_shamsiyyah":[33,34],"madd_2":[12,13,66,67],"madd_246":[138,139],"madd_munfasil":[17,19,119,121],"madd_muttasil":[39,41],"hamzat_wasl":[32,33,46,47,105,106]},
+"26": {"ikhfa":[10,14],"idghaam_no_ghunnah":[46,51],"lam_shamsiyyah":[17,18],"madd_2":[6,7,23,24,26,27,53,54,57,58],"madd_246":[62,63],"hamzat_wasl":[16,17,32,33]},
+"27": {"ghunnah":[38,41],"lam_shamsiyyah":[112,113],"madd_2":[51,52,118,119,121,122],"madd_246":[162,163],"qalqalah":[17,19],"silent":[23,25],"hamzat_wasl":[7,8,26,27,85,86,95,96,111,112,127,128,144,145,155,156]},
+"28": {"ikhfa":[30,33,86,90,125,128,144,148,177,180],"idghaam_ghunnah":[19,25,54,59,226,230],"idghaam_shafawi":[11,16,49,54,81,86],"madd_2":[76,77,115,116,191,192,215,216],"madd_246":[236,237],"madd_muttasil":[94,96,141,143],"qalqalah":[111,113],"hamzat_wasl":[207,208]},
+"29": {"ikhfa":[63,67],"ikhfa_shafawi":[47,51],"idghaam_ghunnah":[69,73,115,120],"idghaam_shafawi":[110,115],"madd_2":[120,121],"madd_246":[125,126],"madd_munfasil":[30,32],"madd_muttasil":[41,43],"silent":[32,34],"hamzat_wasl":[5,6,14,15,92,93]},
+"30": {"ghunnah":[71,74,154,157,169,172],"ikhfa":[34,39],"lam_shamsiyyah":[20,21,70,71,128,129,168,169],"madd_2":[121,122,151,152],"madd_246":[188,189],"qalqalah":[11,13,39,41,94,96],"hamzat_wasl":[46,47,54,55,69,70,111,112,127,128,136,137,167,168]},
+"31": {"lam_shamsiyyah":[46,47],"madd_2":[53,54],"madd_246":[90,91],"silent":[42,44,52,53,71,73],"hamzat_wasl":[22,23,45,46,79,80]},
+"32": {"ikhfa":[52,57],"iqlab":[66,70],"madd_246":[92,93],"silent":[23,25,44,46],"hamzat_wasl":[5,6]},
+"33": {"ghunnah":[16,19,70,73],"ikhfa":[27,31],"ikhfa_shafawi":[130,134],"idghaam_ghunnah":[121,126],"idghaam_shafawi":[45,50,90,95],"lam_shamsiyyah":[15,16],"madd_246":[152,153],"madd_munfasil":[78,80],"silent":[35,37],"hamzat_wasl":[14,15]},
+"34": {"madd_2":[30,31],"madd_246":[68,69],"madd_munfasil":[18,20],"silent":[11,13,48,50]},
+"35": {"ikhfa":[7,10,35,40],"madd_2":[33,34,76,77],"madd_246":[86,87],"silent":[69,71]},
+"36": {"ghunnah":[21,24],"ikhfa":[35,39,57,61],"iqlab":[78,82],"lam_shamsiyyah":[20,21],"madd_246":[128,129],"madd_munfasil":[6,8],"qalqalah":[13,15,63,65,122,124],"silent":[44,46],"hamzat_wasl":[19,20]},
+"37": {"ghunnah":[20,23,79,82],"idghaam_ghunnah":[55,59,114,118],"idghaam_no_ghunnah":[104,109],"lam_shamsiyyah":[42,43],"madd_2":[89,90,102,103],"madd_246":[124,125],"madd_muttasil":[61,63],"qalqalah":[34,36,70,72],"silent":[15,17],"hamzat_wasl":[24,25,41,42]},
+"38": {"idghaam_no_ghunnah":[81,86],"lam_shamsiyyah":[58,59],"madd_2":[32,33,70,71],"madd_246":[152,153],"madd_muttasil":[129,131],"qalqalah":[52,54,108,110],"silent":[125,127],"hamzat_wasl":[13,14,36,37,51,52,57,58,113,114,141,142]},
+"39": {"ghunnah":[61,64],"ikhfa":[86,89,119,123,128,132],"idghaam_no_ghunnah":[21,26,27,33],"idghaam_shafawi":[16,21,114,119],"lam_shamsiyyah":[60,61],"madd_2":[55,56,126,127],"madd_246":[187,188],"madd_munfasil":[4,6,46,48,102,104],"madd_muttasil":[164,166],"qalqalah":[143,145],"silent":[41,43,81,83,125,126,160,162],"hamzat_wasl":[59,60,90,91,148,149,176,177]},
+"40": {"ghunnah":[29,32,46,49,64,67,169,172],"ikhfa":[87,91,119,123,133,137,140,144],"idghaam_ghunnah":[106,110],"idghaam_shafawi":[101,106,128,133],"madd_2":[123,124,148,149,153,154,161,162],"madd_246":[182,183],"madd_muttasil":[95,97],"qalqalah":[144,146],"hamzat_wasl":[8,9]},
+"41": {"ghunnah":[68,71],"ikhfa_shafawi":[86,90],"lam_shamsiyyah":[67,68],"madd_246":[133,134],"silent":[110,112],"hamzat_wasl":[7,8,22,23,33,34,66,67,95,96]},
+"42": {"ikhfa":[31,34,75,79],"idghaam_shafawi":[100,105],"madd_2":[55,56],"madd_246":[111,112],"qalqalah":[79,81],"silent":[11,13,37,39],"hamzat_wasl":[18,19,30,31,63,64]},
+"43": {"ikhfa":[41,45],"idghaam_ghunnah":[52,56,111,115],"idghaam_no_ghunnah":[68,73],"lam_shamsiyyah":[20,21],"madd_2":[87,88],"madd_246":[123,124],"qalqalah":[11,13,45,47],"hamzat_wasl":[28,29,94,95]},
+"44": {"ikhfa":[2,6,52,57,61,64],"madd_2":[30,31,48,49],"madd_246":[79,80]},
+"45": {"ghunnah":[75,78],"ikhfa":[60,64],"lam_shamsiyyah":[45,46],"madd_2":[49,50,54,55,80,81,99,100],"madd_246":[104,105],"madd_munfasil":[70,72],"qalqalah":[4,6],"silent":[29,31,41,43],"hamzat_wasl":[11,12,44,45,94,95]},
+"46": {"ikhfa":[143,147],"idghaam_ghunnah":[22,26,55,59],"idghaam_no_ghunnah":[75,80],"idghaam_shafawi":[70,75],"lam_shamsiyyah":[34,35],"madd_2":[12,13,53,54,88,89,123,124,153,154],"madd_246":[177,178],"madd_munfasil":[17,19],"qalqalah":[96,98,131,133],"silent":[138,140],"hamzat_wasl":[33,34,103,104]},
+"47": {"ikhfa":[23,27,92,95],"ikhfa_shafawi":[71,75],"madd_2":[85,86],"madd_246":[173,174],"madd_muttasil":[64,66],"qalqalah":[6,8,27,29,120,122],"silent":[127,129],"hamzat_wasl":[75,76,91,92,108,109,162,163]},
+"48": {"ikhfa":[52,57,120,125],"idghaam_ghunnah":[191,195],"lam_shamsiyyah":[26,27,74,75],"madd_2":[32,33,67,68,113,114,159,160,164,165,187,188],"madd_246":[242,243],"madd_munfasil":[172,174,216,218],"madd_muttasil":[80,82,96,98,197,199],"qalqalah":[59,61,105,107,136,138,236,238],"hamzat_wasl":[8,9,25,26,73,74,131,132]},
+"49": {"ikhfa":[4,8,17,21,53,57],"idghaam_ghunnah":[28,32],"idghaam_shafawi":[48,53],"madd_2":[63,64],"madd_246":[75,76],"qalqalah":[21,23,57,59,69,71],"silent":[12,14]},
+"50": {"ghunnah":[87,90],"ikhfa":[3,6,145,149],"madd_2":[22,23,93,94],"madd_246":[151,152],"madd_munfasil":[13,16,82,84],"hamzat_wasl":[2,3,35,36,57,58,108,109]},
+"51": {"ikhfa":[25,30],"iqlab":[65,68],"idghaam_no_ghunnah":[47,53],"madd_2":[75,76],"madd_246":[85,86],"silent":[59,61]},
+"52": {"ghunnah":[4,7,55,58],"lam_shamsiyyah":[51,52,60,61],"madd_246":[95,96],"madd_muttasil":[66,68],"qalqalah":[89,91],"silent":[84,86],"hamzat_wasl":[23,24,50,51,59,60]},
+"53": {"ikhfa":[9,12,33,37,51,55],"idghaam_ghunnah":[71,75],"idghaam_shafawi":[101,106],"madd_2":[17,18,39,40,90,91],"madd_246":[112,113],"madd_munfasil":[4,6],"hamzat_wasl":[21,22]},
+"54": {"ghunnah":[40,43,80,83],"ikhfa":[29,33,36,40,68,72,76,80,109,113],"iqlab":[54,57,94,97],"idghaam_ghunnah":[116,121,128,132],"idghaam_shafawi":[24,29],"madd_246":[177,178],"madd_muttasil":[147,149],"hamzat_wasl":[8,9,159,160,170,171]},
+"55": {"ikhfa":[79,83],"lam_shamsiyyah":[18,19],"madd_2":[85,86],"madd_246":[108,109],"qalqalah":[30,32,42,44],"silent":[63,65,97,99],"hamzat_wasl":[17,18,37,38]},
+"56": {"ghunnah":[146,149],"ikhfa":[156,159],"madd_2":[47,48,77,78,117,118,143,144],"madd_246":[174,175],"qalqalah":[55,57],"silent":[24,26],"hamzat_wasl":[8,9,27,28,39,40,81,82,103,104,129,130]},
+"57": {"ikhfa":[20,23],"idghaam_no_ghunnah":[11,16],"madd_246":[84,85],"silent":[43,45],"hamzat_wasl":[26,27]},
+"58": {"ghunnah":[22,25,109,112],"ikhfa":[55,59,76,80,141,144],"ikhfa_shafawi":[86,90],"idghaam_ghunnah":[68,72],"idghaam_no_ghunnah":[97,102],"lam_shamsiyyah":[21,22],"madd_2":[35,36],"madd_246":[162,163],"madd_munfasil":[129,131],"qalqalah":[6,8,13,15,156,158],"silent":[131,133],"hamzat_wasl":[40,41,113,114]},
+"59": {"madd_2":[4,5],"madd_246":[64,65],"qalqalah":[12,14],"hamzat_wasl":[19,20,42,43]},
+"60": {"ghunnah":[12,15,54,57],"idghaam_ghunnah":[35,39],"madd_246":[81,82],"hamzat_wasl":[2,3,23,24,60,61]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/31.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/31.json
index cd280cc..b2e4416 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/31.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/31.json
@@ -1,36 +1,36 @@
{
-"1": {"madd-lazim":[40,42,42,44]},
-"2": {"madd":[12,13,23,24,34,35],"wasl":[16,17,27,28]},
-"3": {"idgham":[3,8,15,20],"madd":[30,31]},
-"4": {"ghunnah":[61,65],"idgham":[22,23,46,47],"madd":[29,30,53,54,90,91],"silent":[28,29,52,53],"wasl":[21,22,45,46,65,66]},
-"5": {"idgham":[23,29,29,34],"madd":[6,8,50,52,73,74],"silent":[2,4,46,48],"wasl":[62,63]},
-"6": {"ghunnah":[9,12,60,64],"idgham":[8,9,18,22,92,96,143,148],"madd":[123,125,150,151],"silent":[119,121],"wasl":[7,8,37,38,70,71]},
-"7": {"ghunnah":[57,62,88,91,113,118],"idgham":[64,69],"madd":[31,32,94,96,142,143],"qalqalah":[110,112]},
-"8": {"ghunnah":[2,5,62,65,71,74],"idgham":[40,41,70,71],"madd":[44,45,49,50,65,66,76,77],"silent":[24,26,36,38],"wasl":[6,7,39,40,69,70]},
-"9": {"idgham":[37,42],"madd":[2,3,65,66],"wasl":[25,26,47,48,58,59]},
-"10": {"ghunnah":[35,39,86,90,120,124,142,145,173,177,180,182,198,202,211,215],"idgham":[8,9,136,140,157,158],"madd":[14,15,17,18,78,79,163,165,170,172,217,218],"madd-lazim":[130,132],"wasl":[7,8,64,65,156,157]},
-"11": {"ghunnah":[59,63],"idgham":[76,77,99,104],"madd":[2,3,68,69,80,81,97,98,106,107],"wasl":[14,15,47,48,75,76]},
-"12": {"ghunnah":[82,85,114,118,127,130],"idgham":[67,71],"madd":[26,27,108,109,151,152],"qalqalah":[6,8,22,24,152,153],"wasl":[30,31,47,48,131,132]},
-"13": {"ghunnah":[87,90],"idgham":[92,93],"madd":[19,20,32,33,49,50,53,54,114,115],"qalqalah":[15,17,26,28],"wasl":[25,26,77,78,91,92]},
-"14": {"ghunnah":[18,21,52,55],"idgham":[79,83],"madd":[21,22,29,30,57,58,87,88,92,93,131,132,156,157],"wasl":[13,14,113,114,149,150]},
-"15": {"ghunnah":[4,8,27,31,69,73,172,175,210,214,220,223],"idgham":[109,110,127,132],"madd":[8,9,21,24,62,63,234,235],"qalqalah":[96,98],"wasl":[108,109,132,133]},
-"16": {"ghunnah":[13,16,23,27,61,65,69,73,149,152],"idgham":[46,51,94,95],"madd":[2,3,18,20,100,101,103,104,173,174],"wasl":[93,94,116,117,139,140,153,154]},
-"17": {"ghunnah":[72,75,112,115],"idgham":[19,20],"madd":[2,3,26,27,97,99,118,119,143,144],"silent":[25,26],"wasl":[18,19,41,42,56,57,67,68,80,81,136,137]},
-"18": {"ghunnah":[27,30,71,74,109,113],"idgham":[26,27],"madd":[115,116],"wasl":[51,52,75,76]},
-"19": {"ghunnah":[35,39,48,51,54,57],"madd":[69,70,89,90],"qalqalah":[3,5,7,9],"wasl":[2,3,25,26,60,61,82,83]},
-"20": {"ghunnah":[18,21,150,153],"idgham":[42,47,54,55,127,131,139,143,149,150,159,163,197,201,208,213,223,228],"madd":[60,61,63,64,117,118,121,122,165,166,221,222,230,231],"silent":[13,15],"wasl":[22,23,53,54,77,78,148,149,175,176]},
-"21": {"ghunnah":[40,43],"idgham":[131,132,171,172],"madd":[35,37,106,108,112,114,139,140,177,178],"qalqalah":[86,88,145,147],"silent":[30,32,60,62],"wasl":[21,22,46,47,130,131,170,171]},
-"22": {"ghunnah":[54,58],"idgham":[4,8],"madd":[23,25,119,120,134,135],"qalqalah":[17,19],"wasl":[32,33,63,64,77,78,89,90,109,110,127,128]},
-"23": {"ghunnah":[4,8,25,28,76,80,97,100,115,119],"idgham":[127,128],"madd":[37,39,90,92,133,134],"silent":[92,94],"wasl":[101,102,126,127]},
-"24": {"ghunnah":[20,25,25,28],"madd":[62,63]},
-"25": {"ghunnah":[6,10,68,71],"idgham":[18,23,34,35],"madd":[40,41,43,44,133,134],"wasl":[33,34,49,50,72,73,85,86]},
-"26": {"ghunnah":[44,47],"idgham":[17,18],"madd":[23,24,26,27,79,80],"qalqalah":[80,81],"wasl":[16,17,32,33,48,49,61,62,72,73]},
-"27": {"ghunnah":[9,12,32,36,79,82,143,146],"idgham":[51,55,107,112],"madd":[49,50,74,75,89,90,129,130,167,168],"qalqalah":[45,47,93,95,102,104],"wasl":[20,21,55,56,133,134,147,148]},
-"28": {"ghunnah":[61,64,79,83],"idgham":[47,51],"madd":[51,52,86,87],"wasl":[65,66]},
-"29": {"ghunnah":[14,17,49,52,70,73,159,162,168,171],"idgham":[48,49,69,70,103,104,128,132,152,157,161,166],"madd":[136,138,143,146,202,203],"qalqalah":[132,134],"wasl":[18,19,34,35,47,48,68,69,83,84,102,103,114,115,172,173]},
-"30": {"ghunnah":[12,15,42,45,62,66,87,90],"madd":[2,3,77,78,122,123],"qalqalah":[52,54],"wasl":[16,17,29,30,72,73,91,92,104,105,115,116]},
-"31": {"ghunnah":[14,17,102,105,145,149],"idgham":[79,84,127,132],"madd":[92,93,97,99,112,113,125,126,151,152],"qalqalah":[30,32],"wasl":[18,19,40,41,61,62]},
-"32": {"ghunnah":[24,28,85,88,190,194],"idgham":[16,21,29,30,73,74,125,130,137,141],"madd":[96,97,162,163,167,169,196,197],"qalqalah":[130,132,147,149],"silent":[44,46],"wasl":[28,29,47,48,72,73,108,109]},
-"33": {"ghunnah":[15,18,150,153,173,177,188,191,232,235,237,241],"idgham":[14,15,59,65,85,89,126,130,209,210],"madd":[2,4,95,96,137,138,204,205,256,257],"qalqalah":[69,71],"silent":[29,31,51,53,203,204],"wasl":[13,14,22,23,44,45,161,162,196,197,208,209,241,242,249,250]},
-"34": {"ghunnah":[2,5,16,19,158,162,174,178,186,189],"idgham":[31,32,114,119,136,141],"madd":[21,22,210,211],"qalqalah":[103,105,147,149],"wasl":[6,7,30,31,53,54,82,83,190,191]}
+"1": {"madd_6":[40,42,42,44]},
+"2": {"madd_2":[12,13,23,24],"madd_246":[34,35],"hamzat_wasl":[16,17,27,28]},
+"3": {"idghaam_ghunnah":[3,8],"idghaam_no_ghunnah":[15,20],"madd_246":[30,31]},
+"4": {"ikhfa_shafawi":[61,65],"lam_shamsiyyah":[22,23,46,47],"madd_2":[29,30,53,54],"madd_246":[90,91],"silent":[28,29,52,53],"hamzat_wasl":[21,22,45,46,65,66]},
+"5": {"idghaam_ghunnah":[23,29],"idghaam_no_ghunnah":[29,34],"madd_246":[73,74],"madd_muttasil":[6,8,50,52],"silent":[2,4,46,48],"hamzat_wasl":[62,63]},
+"6": {"ghunnah":[9,12],"ikhfa":[60,64],"idghaam_ghunnah":[18,22,92,96,143,148],"lam_shamsiyyah":[8,9],"madd_246":[150,151],"madd_muttasil":[123,125],"silent":[119,121],"hamzat_wasl":[7,8,37,38,70,71]},
+"7": {"ghunnah":[88,91],"ikhfa":[57,62,113,118],"idghaam_no_ghunnah":[64,69],"madd_2":[31,32],"madd_246":[142,143],"madd_munfasil":[94,96],"qalqalah":[110,112]},
+"8": {"ghunnah":[2,5,62,65,71,74],"lam_shamsiyyah":[40,41,70,71],"madd_2":[44,45,49,50,65,66],"madd_246":[76,77],"silent":[24,26,36,38],"hamzat_wasl":[6,7,39,40,69,70]},
+"9": {"idghaam_ghunnah":[37,42],"madd_2":[2,3],"madd_246":[65,66],"hamzat_wasl":[25,26,47,48,58,59]},
+"10": {"ikhfa":[35,39,86,90,120,124,142,145,173,177,198,202,211,215],"iqlab":[180,182],"idghaam_ghunnah":[136,140],"lam_shamsiyyah":[8,9,157,158],"madd_2":[14,15,17,18,78,79],"madd_246":[217,218],"madd_muttasil":[163,165,170,172],"madd_6":[130,132],"hamzat_wasl":[7,8,64,65,156,157]},
+"11": {"ikhfa":[59,63],"idghaam_ghunnah":[99,104],"lam_shamsiyyah":[76,77],"madd_2":[2,3,68,69,80,81,97,98],"madd_246":[106,107],"hamzat_wasl":[14,15,47,48,75,76]},
+"12": {"ghunnah":[82,85,127,130],"ikhfa":[114,118],"idghaam_ghunnah":[67,71],"madd_2":[26,27,108,109],"madd_246":[151,152],"qalqalah":[6,8,22,24,152,153],"hamzat_wasl":[30,31,47,48,131,132]},
+"13": {"ghunnah":[87,90],"lam_shamsiyyah":[92,93],"madd_2":[19,20,32,33,49,50,53,54],"madd_246":[114,115],"qalqalah":[15,17,26,28],"hamzat_wasl":[25,26,77,78,91,92]},
+"14": {"ghunnah":[52,55],"ikhfa":[18,21],"idghaam_ghunnah":[79,83],"madd_2":[21,22,29,30,57,58,87,88,92,93,131,132],"madd_246":[156,157],"hamzat_wasl":[13,14,113,114,149,150]},
+"15": {"ghunnah":[172,175],"ikhfa":[4,8,27,31,69,73,220,223],"ikhfa_shafawi":[210,214],"idghaam_ghunnah":[127,132],"lam_shamsiyyah":[109,110],"madd_2":[8,9,62,63],"madd_246":[234,235],"madd_munfasil":[21,24],"qalqalah":[96,98],"hamzat_wasl":[108,109,132,133]},
+"16": {"ghunnah":[13,16,149,152],"ikhfa":[23,27,61,65,69,73],"idghaam_ghunnah":[46,51],"lam_shamsiyyah":[94,95],"madd_2":[2,3,100,101,103,104],"madd_246":[173,174],"madd_munfasil":[18,20],"hamzat_wasl":[93,94,116,117,139,140,153,154]},
+"17": {"ghunnah":[112,115],"ikhfa":[72,75],"lam_shamsiyyah":[19,20],"madd_2":[2,3,26,27,118,119],"madd_246":[143,144],"madd_munfasil":[97,99],"silent":[25,26],"hamzat_wasl":[18,19,41,42,56,57,67,68,80,81,136,137]},
+"18": {"ghunnah":[27,30,71,74],"ikhfa":[109,113],"lam_shamsiyyah":[26,27],"madd_246":[115,116],"hamzat_wasl":[51,52,75,76]},
+"19": {"ghunnah":[48,51],"ikhfa":[35,39,54,57],"madd_2":[69,70],"madd_246":[89,90],"qalqalah":[3,5,7,9],"hamzat_wasl":[2,3,25,26,60,61,82,83]},
+"20": {"ghunnah":[18,21,150,153],"idghaam_ghunnah":[127,131,139,143,159,163,197,201,208,213,223,228],"idghaam_shafawi":[42,47],"lam_shamsiyyah":[54,55,149,150],"madd_2":[60,61,63,64,117,118,121,122,165,166,221,222],"madd_246":[230,231],"silent":[13,15],"hamzat_wasl":[22,23,53,54,77,78,148,149,175,176]},
+"21": {"ikhfa":[40,43],"lam_shamsiyyah":[131,132,171,172],"madd_2":[139,140],"madd_246":[177,178],"madd_munfasil":[35,37,112,114],"madd_muttasil":[106,108],"qalqalah":[86,88,145,147],"silent":[30,32,60,62],"hamzat_wasl":[21,22,46,47,130,131,170,171]},
+"22": {"ikhfa":[54,58],"idghaam_ghunnah":[4,8],"madd_2":[119,120],"madd_246":[134,135],"madd_munfasil":[23,25],"qalqalah":[17,19],"hamzat_wasl":[32,33,63,64,77,78,89,90,109,110,127,128]},
+"23": {"ghunnah":[97,100],"ikhfa":[4,8,25,28],"ikhfa_shafawi":[76,80],"iqlab":[115,119],"lam_shamsiyyah":[127,128],"madd_246":[133,134],"madd_munfasil":[37,39,90,92],"silent":[92,94],"hamzat_wasl":[101,102,126,127]},
+"24": {"ghunnah":[25,28],"ikhfa":[20,25],"madd_246":[62,63]},
+"25": {"ghunnah":[68,71],"ikhfa":[6,10],"idghaam_shafawi":[18,23],"lam_shamsiyyah":[34,35],"madd_2":[40,41,43,44],"madd_246":[133,134],"hamzat_wasl":[33,34,49,50,72,73,85,86]},
+"26": {"ghunnah":[44,47],"lam_shamsiyyah":[17,18],"madd_2":[23,24,26,27],"madd_246":[79,80],"qalqalah":[80,81],"hamzat_wasl":[16,17,32,33,48,49,61,62,72,73]},
+"27": {"ghunnah":[9,12,143,146],"ikhfa":[32,36],"iqlab":[79,82],"idghaam_ghunnah":[51,55,107,112],"madd_2":[49,50,74,75,89,90,129,130],"madd_246":[167,168],"qalqalah":[45,47,93,95,102,104],"hamzat_wasl":[20,21,55,56,133,134,147,148]},
+"28": {"ghunnah":[61,64],"iqlab":[79,83],"idghaam_ghunnah":[47,51],"madd_2":[51,52],"madd_246":[86,87],"hamzat_wasl":[65,66]},
+"29": {"ghunnah":[14,17,49,52,70,73,159,162,168,171],"idghaam_ghunnah":[128,132,152,157,161,166],"lam_shamsiyyah":[48,49,69,70,103,104],"madd_246":[202,203],"madd_munfasil":[136,138,143,146],"qalqalah":[132,134],"hamzat_wasl":[18,19,34,35,47,48,68,69,83,84,102,103,114,115,172,173]},
+"30": {"ghunnah":[12,15,42,45,87,90],"ikhfa":[62,66],"madd_2":[2,3,77,78],"madd_246":[122,123],"qalqalah":[52,54],"hamzat_wasl":[16,17,29,30,72,73,91,92,104,105,115,116]},
+"31": {"ghunnah":[14,17,102,105],"ikhfa":[145,149],"idghaam_no_ghunnah":[127,132],"idghaam_shafawi":[79,84],"madd_2":[92,93,112,113,125,126],"madd_246":[151,152],"madd_munfasil":[97,99],"qalqalah":[30,32],"hamzat_wasl":[18,19,40,41,61,62]},
+"32": {"ghunnah":[85,88],"ikhfa":[24,28,190,194],"idghaam_ghunnah":[137,141],"idghaam_shafawi":[16,21,125,130],"lam_shamsiyyah":[29,30,73,74],"madd_2":[96,97,162,163],"madd_246":[196,197],"madd_munfasil":[167,169],"qalqalah":[130,132,147,149],"silent":[44,46],"hamzat_wasl":[28,29,47,48,72,73,108,109]},
+"33": {"ghunnah":[15,18,150,153,188,191,232,235],"ikhfa":[173,177],"ikhfa_shafawi":[237,241],"idghaam_ghunnah":[85,89,126,130],"idghaam_no_ghunnah":[59,65],"lam_shamsiyyah":[14,15,209,210],"madd_2":[95,96,137,138,204,205],"madd_246":[256,257],"madd_munfasil":[2,4],"qalqalah":[69,71],"silent":[29,31,51,53,203,204],"hamzat_wasl":[13,14,22,23,44,45,161,162,196,197,208,209,241,242,249,250]},
+"34": {"ghunnah":[2,5,186,189],"ikhfa":[16,19,174,178],"iqlab":[158,162],"idghaam_ghunnah":[114,119,136,141],"lam_shamsiyyah":[31,32],"madd_2":[21,22],"madd_246":[210,211],"qalqalah":[103,105,147,149],"hamzat_wasl":[6,7,30,31,53,54,82,83,190,191]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/32.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/32.json
index 34fcdbb..4c4d9e8 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/32.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/32.json
@@ -1,32 +1,32 @@
{
-"1": {"madd-lazim":[40,42,42,44]},
-"2": {"ghunnah":[2,5],"idgham":[39,44],"madd":[16,17,53,54,58,59],"wasl":[9,10,48,49]},
-"3": {"ghunnah":[64,67,111,115],"idgham":[49,54,75,81,92,97,97,102,106,111],"madd":[24,25,81,83,89,90,142,143],"qalqalah":[115,117],"wasl":[16,17,38,39]},
-"4": {"ghunnah":[86,90,90,93,133,137],"idgham":[24,25,128,133,146,150,154,158],"madd":[30,31,33,34,142,143,189,190],"wasl":[8,9,23,24,39,40,94,95,110,111]},
-"5": {"ghunnah":[55,58,86,90,125,128],"idgham":[26,27,120,125],"madd":[32,34,105,107,137,138],"qalqalah":[96,98],"wasl":[10,11,25,26,43,44]},
-"6": {"idgham":[29,30,53,54],"madd":[2,3,10,11,35,36,59,60],"wasl":[16,17,28,29,41,42,52,53]},
-"7": {"ghunnah":[62,65,71,75],"madd":[6,8,39,40,65,66,75,76],"wasl":[57,58]},
-"8": {"ghunnah":[2,5,25,29],"idgham":[35,40,40,45,48,53],"madd":[21,22,31,32,45,47,55,56]},
-"9": {"ghunnah":[2,5],"idgham":[33,38,62,63,109,115],"madd":[12,13,43,44,82,83,125,126],"qalqalah":[78,80],"wasl":[61,62,73,74,88,89]},
-"10": {"ghunnah":[48,51,64,68,72,76,82,86],"madd":[7,9,90,92,107,108,112,113],"silent":[9,11],"wasl":[34,35]},
-"11": {"ghunnah":[63,66],"idgham":[18,23],"madd":[15,16,92,93],"wasl":[28,29,38,39]},
-"12": {"ghunnah":[60,63,141,144],"madd":[11,14,81,83,132,133,153,154],"qalqalah":[25,27,86,88],"silent":[43,45],"wasl":[20,21,110,111]},
-"13": {"ghunnah":[79,82,94,97,102,105,118,121,128,131],"idgham":[127,128],"madd":[46,47,55,56,143,144],"qalqalah":[137,139],"wasl":[67,68,113,114,126,127]},
-"14": {"ghunnah":[57,60,112,115],"madd":[31,33,49,50,52,54,69,70,126,127],"silent":[8,10,83,85],"wasl":[94,95]},
-"15": {"ghunnah":[2,5],"idgham":[81,86],"madd":[26,27,139,140],"silent":[57,59,72,74,94,96],"wasl":[33,34]},
-"16": {"ghunnah":[84,87,105,108],"idgham":[67,72,77,82],"madd":[97,98,110,111],"qalqalah":[44,46,93,95],"wasl":[29,30]},
-"17": {"ghunnah":[46,50,63,67,72,76],"idgham":[20,25,41,46],"madd":[25,27,69,71,98,99],"silent":[87,89]},
-"18": {"ghunnah":[6,10,21,26,28,32],"idgham":[42,48],"madd":[58,59]},
-"19": {"ghunnah":[2,5,65,68,89,94],"idgham":[41,42],"madd":[45,46,50,51,68,69,116,117],"silent":[25,27,37,39,105,107],"wasl":[7,8,40,41,72,73]},
-"20": {"ghunnah":[4,7,46,49,152,155,169,172,172,176],"idgham":[45,46,77,81,151,152],"madd":[38,39,60,62,70,72,97,99,178,179,189,190],"silent":[26,28,72,74,88,90,108,110,139,141],"wasl":[9,10,44,45,150,151,159,160]},
-"21": {"ghunnah":[11,14],"idgham":[16,21],"madd":[96,97],"qalqalah":[40,42],"wasl":[24,25,35,36,53,54,64,65]},
-"22": {"ghunnah":[18,21,21,25,54,57,78,81,105,108],"madd":[39,40,50,51,73,75,112,113],"qalqalah":[93,95],"wasl":[88,89]},
-"23": {"ghunnah":[48,52],"idgham":[61,66,66,71,98,104],"madd":[34,35,73,75,79,80,91,92,108,110,117,119,121,122],"qalqalah":[6,8],"wasl":[27,28]},
-"24": {"ghunnah":[25,28,55,58],"idgham":[29,33],"madd":[89,90,103,104],"silent":[67,69,78,80]},
-"25": {"ghunnah":[2,5],"madd":[53,54,91,92],"silent":[72,74],"wasl":[46,47]},
-"26": {"ghunnah":[42,46,101,104],"idgham":[52,57],"madd":[89,90,111,112,124,125,144,145],"qalqalah":[46,48],"wasl":[60,61]},
-"27": {"ghunnah":[20,23,91,96,128,131],"madd":[38,40,84,85,116,117,154,155],"qalqalah":[148,150],"silent":[15,17],"wasl":[33,34,49,50,59,60]},
-"28": {"ghunnah":[39,43,43,46],"madd":[22,23,51,52,56,57],"wasl":[27,28]},
-"29": {"ghunnah":[28,31,81,84],"madd":[50,52,60,61,86,87],"silent":[52,54],"wasl":[12,13,34,35]},
-"30": {"ghunnah":[23,26,33,36,43,46],"idgham":[38,43],"madd":[50,51],"wasl":[22,23]}
+"1": {"madd_6":[40,42,42,44]},
+"2": {"ikhfa":[2,5],"idghaam_no_ghunnah":[39,44],"madd_2":[16,17,53,54],"madd_246":[58,59],"hamzat_wasl":[9,10,48,49]},
+"3": {"ikhfa":[64,67,111,115],"idghaam_ghunnah":[75,81,97,102,106,111],"idghaam_no_ghunnah":[49,54],"idghaam_shafawi":[92,97],"madd_2":[24,25,89,90],"madd_246":[142,143],"madd_munfasil":[81,83],"qalqalah":[115,117],"hamzat_wasl":[16,17,38,39]},
+"4": {"ghunnah":[90,93],"ikhfa":[86,90,133,137],"idghaam_ghunnah":[146,150,154,158],"idghaam_shafawi":[128,133],"lam_shamsiyyah":[24,25],"madd_2":[30,31,33,34,142,143],"madd_246":[189,190],"hamzat_wasl":[8,9,23,24,39,40,94,95,110,111]},
+"5": {"ghunnah":[55,58,125,128],"ikhfa":[86,90],"idghaam_ghunnah":[120,125],"lam_shamsiyyah":[26,27],"madd_246":[137,138],"madd_munfasil":[105,107],"madd_muttasil":[32,34],"qalqalah":[96,98],"hamzat_wasl":[10,11,25,26,43,44]},
+"6": {"lam_shamsiyyah":[29,30,53,54],"madd_2":[2,3,10,11,35,36],"madd_246":[59,60],"hamzat_wasl":[16,17,28,29,41,42,52,53]},
+"7": {"ikhfa":[62,65,71,75],"madd_2":[39,40,65,66],"madd_246":[75,76],"madd_munfasil":[6,8],"hamzat_wasl":[57,58]},
+"8": {"ghunnah":[2,5],"ikhfa":[25,29],"idghaam_ghunnah":[35,40,40,45,48,53],"madd_2":[21,22,31,32],"madd_246":[55,56],"madd_muttasil":[45,47]},
+"9": {"ghunnah":[2,5],"idghaam_ghunnah":[109,115],"idghaam_no_ghunnah":[33,38],"lam_shamsiyyah":[62,63],"madd_2":[12,13,43,44,82,83],"madd_246":[125,126],"qalqalah":[78,80],"hamzat_wasl":[61,62,73,74,88,89]},
+"10": {"ghunnah":[48,51],"ikhfa":[64,68],"ikhfa_shafawi":[82,86],"iqlab":[72,76],"madd_2":[107,108],"madd_246":[112,113],"madd_munfasil":[7,9],"madd_muttasil":[90,92],"silent":[9,11],"hamzat_wasl":[34,35]},
+"11": {"ghunnah":[63,66],"idghaam_shafawi":[18,23],"madd_2":[15,16],"madd_246":[92,93],"hamzat_wasl":[28,29,38,39]},
+"12": {"ghunnah":[141,144],"ikhfa":[60,63],"madd_2":[132,133],"madd_246":[153,154],"madd_munfasil":[11,14,81,83],"qalqalah":[25,27,86,88],"silent":[43,45],"hamzat_wasl":[20,21,110,111]},
+"13": {"ghunnah":[79,82,94,97,102,105,118,121,128,131],"lam_shamsiyyah":[127,128],"madd_2":[46,47,55,56],"madd_246":[143,144],"qalqalah":[137,139],"hamzat_wasl":[67,68,113,114,126,127]},
+"14": {"ghunnah":[57,60],"ikhfa":[112,115],"madd_2":[49,50,69,70],"madd_246":[126,127],"madd_munfasil":[52,54],"madd_muttasil":[31,33],"silent":[8,10,83,85],"hamzat_wasl":[94,95]},
+"15": {"ghunnah":[2,5],"idghaam_ghunnah":[81,86],"madd_2":[26,27],"madd_246":[139,140],"silent":[57,59,72,74,94,96],"hamzat_wasl":[33,34]},
+"16": {"ghunnah":[84,87],"ikhfa":[105,108],"idghaam_ghunnah":[67,72,77,82],"madd_2":[97,98],"madd_246":[110,111],"qalqalah":[44,46,93,95],"hamzat_wasl":[29,30]},
+"17": {"ikhfa":[46,50,63,67],"iqlab":[72,76],"idghaam_ghunnah":[20,25],"idghaam_shafawi":[41,46],"madd_246":[98,99],"madd_munfasil":[25,27],"madd_muttasil":[69,71],"silent":[87,89]},
+"18": {"ikhfa":[6,10,21,26,28,32],"idghaam_no_ghunnah":[42,48],"madd_246":[58,59]},
+"19": {"ghunnah":[2,5,65,68],"iqlab":[89,94],"lam_shamsiyyah":[41,42],"madd_2":[45,46,50,51,68,69],"madd_246":[116,117],"silent":[25,27,37,39,105,107],"hamzat_wasl":[7,8,40,41,72,73]},
+"20": {"ghunnah":[4,7,46,49,152,155],"ikhfa":[169,172],"ikhfa_shafawi":[172,176],"idghaam_ghunnah":[77,81],"lam_shamsiyyah":[45,46,151,152],"madd_2":[38,39,178,179],"madd_246":[189,190],"madd_munfasil":[60,62,70,72,97,99],"silent":[26,28,72,74,88,90,108,110,139,141],"hamzat_wasl":[9,10,44,45,150,151,159,160]},
+"21": {"ghunnah":[11,14],"idghaam_shafawi":[16,21],"madd_246":[96,97],"qalqalah":[40,42],"hamzat_wasl":[24,25,35,36,53,54,64,65]},
+"22": {"ghunnah":[18,21,54,57,78,81],"ikhfa":[21,25,105,108],"madd_2":[39,40,50,51],"madd_246":[112,113],"madd_munfasil":[73,75],"qalqalah":[93,95],"hamzat_wasl":[88,89]},
+"23": {"ikhfa":[48,52],"idghaam_ghunnah":[61,66],"idghaam_no_ghunnah":[66,71,98,104],"madd_2":[34,35,79,80,91,92],"madd_246":[121,122],"madd_munfasil":[108,110],"madd_muttasil":[73,75,117,119],"qalqalah":[6,8],"hamzat_wasl":[27,28]},
+"24": {"ghunnah":[25,28,55,58],"idghaam_ghunnah":[29,33],"madd_2":[89,90],"madd_246":[103,104],"silent":[67,69,78,80]},
+"25": {"ghunnah":[2,5],"madd_2":[53,54],"madd_246":[91,92],"silent":[72,74],"hamzat_wasl":[46,47]},
+"26": {"ghunnah":[101,104],"ikhfa":[42,46],"idghaam_shafawi":[52,57],"madd_2":[89,90,111,112,124,125],"madd_246":[144,145],"qalqalah":[46,48],"hamzat_wasl":[60,61]},
+"27": {"ghunnah":[20,23],"ikhfa":[91,96,128,131],"madd_2":[84,85,116,117],"madd_246":[154,155],"madd_muttasil":[38,40],"qalqalah":[148,150],"silent":[15,17],"hamzat_wasl":[33,34,49,50,59,60]},
+"28": {"ikhfa":[39,43,43,46],"madd_2":[22,23,51,52],"madd_246":[56,57],"hamzat_wasl":[27,28]},
+"29": {"ikhfa":[28,31,81,84],"madd_2":[60,61],"madd_246":[86,87],"madd_munfasil":[50,52],"silent":[52,54],"hamzat_wasl":[12,13,34,35]},
+"30": {"ghunnah":[33,36],"ikhfa":[23,26,43,46],"idghaam_shafawi":[38,43],"madd_246":[50,51],"hamzat_wasl":[22,23]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/33.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/33.json
index 0dab351..6f849a1 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/33.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/33.json
@@ -1,75 +1,75 @@
{
-"1": {"ghunnah":[54,57,125,128],"idgham":[53,54],"madd":[41,43,96,97,114,115],"wasl":[52,53,63,64,70,71,91,92,107,108,129,130]},
-"2": {"ghunnah":[48,51],"idgham":[35,40],"madd":[20,23],"wasl":[2,3,52,53]},
-"3": {"wasl":[18,19,37,38]},
-"4": {"ghunnah":[32,36,116,119,122,125,198,202],"idgham":[27,32,259,260],"madd":[57,58,78,79,90,92,101,102,127,128,156,158,171,173,182,183,208,209,265,266],"qalqalah":[150,152,167,169],"wasl":[12,13,86,87,218,219,234,235,258,259]},
-"5": {"ghunnah":[43,46,164,168,184,188,210,213],"idgham":[59,64,115,116,199,204,252,258],"madd":[18,20,75,77,85,87,102,103,129,130,171,173,190,191,196,197],"qalqalah":[1,3,34,36],"silent":[77,79],"wasl":[47,48,114,115,238,239]},
-"6": {"ghunnah":[2,5,44,47,72,75,137,141,207,211,255,260],"idgham":[1,2,244,249],"madd":[62,63,67,69,77,78,147,148,188,189,202,204,217,219,226,229,238,240,266,267,283,284],"silent":[89,91,94,96,219,221],"wasl":[22,23,97,98,151,152,164,165,181,182,276,277]},
-"7": {"ghunnah":[24,27,53,56],"idgham":[23,24,61,66,68,72,137,142],"madd":[32,33,41,42,78,79,145,146],"qalqalah":[74,76,105,107],"wasl":[22,23,104,105]},
-"8": {"ghunnah":[29,33],"idgham":[14,15],"madd":[18,19,58,59],"qalqalah":[33,35],"wasl":[13,14]},
-"9": {"ghunnah":[97,101],"idgham":[128,133,139,145],"madd":[2,4,80,82],"silent":[31,33,42,44],"wasl":[13,14,34,35,54,55,166,167]},
-"10": {"ghunnah":[19,23,50,53,125,128],"idgham":[14,19,143,144],"madd":[7,9,80,81],"qalqalah":[76,78],"wasl":[71,72,95,96,106,107,134,135,142,143]},
-"11": {"ghunnah":[57,62],"qalqalah":[11,13],"silent":[46,48],"wasl":[10,11,20,21]},
-"12": {"idgham":[56,61,64,69],"madd":[22,23,100,102],"wasl":[15,16,33,34,81,82]},
-"13": {"ghunnah":[124,127,146,149],"idgham":[12,13,24,29,110,115,123,124,168,172,194,198],"madd":[17,19,38,40],"silent":[85,87],"wasl":[77,78,122,123]},
-"14": {"ghunnah":[47,50],"idgham":[24,29],"madd":[109,111],"qalqalah":[34,36],"silent":[58,60,102,104],"wasl":[61,62]},
-"15": {"ghunnah":[39,43],"madd":[20,21,72,73],"qalqalah":[6,8,43,45,68,70],"silent":[15,17,26,28],"wasl":[29,30,63,64,91,92]},
-"16": {"ghunnah":[11,14,34,38],"idgham":[7,11,44,49,82,88],"wasl":[21,22,52,53,67,68]},
-"17": {"ghunnah":[7,11,129,133],"idgham":[31,36,102,106,124,129,151,156],"madd":[69,71],"wasl":[13,14,39,40,137,138]},
-"18": {"ghunnah":[40,43,83,86],"madd":[53,55,71,72],"qalqalah":[2,4],"wasl":[14,15,22,23,48,49,113,114]},
-"19": {"ghunnah":[61,64,177,181],"madd":[31,33,232,234,281,282,299,300],"silent":[228,230,253,255],"wasl":[36,37,102,103,133,134,158,159,216,217,267,268,311,312]},
-"20": {"ghunnah":[86,89,91,95,140,142],"idgham":[46,50,173,178],"madd":[143,145,182,183,187,189],"silent":[39,41,76,78,165,167,189,191],"wasl":[12,13,55,56,106,107]},
-"21": {"ghunnah":[64,68],"idgham":[57,62],"qalqalah":[5,7],"silent":[79,81],"wasl":[33,34,82,83,92,93,102,103,122,123]},
-"22": {"ghunnah":[4,7],"idgham":[155,160],"madd":[54,55,92,93,122,123,145,147,153,154],"silent":[49,51],"wasl":[15,16,30,31,73,74,103,104]},
-"23": {"ghunnah":[27,31,84,88,120,123],"idgham":[79,84,111,116,116,120],"madd":[45,46,101,102],"qalqalah":[147,149],"silent":[36,38,51,53,142,144],"wasl":[6,7,54,55]},
-"24": {"ghunnah":[77,81,112,115],"idgham":[21,22,136,142],"madd":[25,26,66,67,81,83],"qalqalah":[5,7,38,40],"wasl":[12,13,20,21,59,60,116,117]},
-"25": {"idgham":[70,75],"silent":[33,35,62,64],"wasl":[8,9,16,17,81,82,89,90,104,105,123,124]},
-"26": {"ghunnah":[4,7,58,62,114,119],"idgham":[30,35,99,100],"madd":[22,23,52,53],"qalqalah":[119,121],"wasl":[10,11,45,46,98,99]},
-"27": {"ghunnah":[118,122],"idgham":[63,69],"madd":[32,33,48,49],"wasl":[92,93]},
-"28": {"ghunnah":[15,18,45,49,49,52,52,55,126,129,143,146,153,158],"idgham":[14,15,78,79],"madd":[2,4,37,38,73,74],"qalqalah":[60,62],"silent":[72,73],"wasl":[13,14,65,66,77,78]},
-"29": {"ghunnah":[4,8,8,11,11,14,73,76,111,114,114,117],"idgham":[48,49],"madd":[43,44,105,106],"qalqalah":[19,21,120,122],"wasl":[24,25,47,48,56,57,77,78]},
-"30": {"ghunnah":[14,17,36,39,39,42],"idgham":[13,14,25,29,53,58,66,70],"madd":[2,3,7,9,47,48,72,73,116,117],"wasl":[12,13,84,85,128,129]},
-"31": {"ghunnah":[17,20,20,23,124,129],"idgham":[4,8,62,68],"madd":[43,44,58,59,74,76],"qalqalah":[8,10,79,81,107,109]},
-"32": {"ghunnah":[14,17,29,32,50,53,75,78],"idgham":[13,14,40,45,49,50,146,150,162,168],"madd":[2,3,7,9,55,57,139,140],"qalqalah":[112,114],"wasl":[12,13,48,49,65,66,98,99,119,120]},
-"33": {"ghunnah":[22,25,162,165,198,201],"idgham":[93,94,116,117,205,206],"madd":[59,60,100,101,123,124,157,159],"qalqalah":[39,41,209,211,249,251],"silent":[99,100,122,123],"wasl":[54,55,70,71,92,93,115,116,138,139,177,178,204,205,221,222]},
-"34": {"ghunnah":[38,41,80,83],"madd":[52,53],"wasl":[2,3,56,57,66,67,84,85]},
-"35": {"ghunnah":[2,5],"idgham":[107,108,123,124,139,140,155,156,243,244,260,261,321,322,348,353,354,355,387,392,399,403],"madd":[34,35,68,69,79,80,95,96,100,101,111,112,127,128,132,133,143,144,159,160,164,165,175,176,191,192,196,197,236,237,247,249,264,266,270,271,281,282,309,310,314,315,325,326,358,359,363,364],"qalqalah":[405,407],"wasl":[6,7,23,24,40,41,57,58,74,75,90,91,106,107,122,123,138,139,154,155,170,171,186,187,202,203,222,223,242,243,259,260,276,277,304,305,320,321,334,335,353,354,375,376]},
-"36": {"idgham":[21,25,84,88,133,137,182,188],"madd":[71,73,161,162,180,181],"qalqalah":[167,169],"wasl":[52,53,101,102,142,143]},
-"37": {"ghunnah":[174,177,201,205,218,221,251,256,315,319,370,373],"idgham":[173,174,235,240,379,384],"madd":[22,24,210,211,263,264,319,321,328,329,340,342],"qalqalah":[154,156,259,261,334,336],"silent":[361,363],"wasl":[34,35,102,103,109,110,144,145,172,173,183,184,295,296,397,398]},
-"38": {"ghunnah":[19,22,38,42,70,73,109,113],"idgham":[18,19,146,152],"madd":[66,67],"qalqalah":[113,115,152,154],"silent":[104,106],"wasl":[17,18,54,55,76,77,88,89,133,134]},
-"39": {"madd":[27,28,30,31,56,57],"wasl":[34,35,90,91,109,110]},
-"40": {"ghunnah":[15,18,91,94],"idgham":[33,38,38,43,60,65,90,91],"madd":[25,27,57,58,99,100],"wasl":[71,72,89,90,111,112]},
-"41": {"ghunnah":[58,63],"madd":[2,4],"silent":[31,33,42,44],"wasl":[13,14,34,35,45,46]},
-"42": {"idgham":[20,24]},
-"43": {"ghunnah":[92,95],"idgham":[63,68,72,73,91,92],"madd":[39,41,49,50,80,81],"wasl":[5,6,71,72,90,91,109,110]},
-"44": {"ghunnah":[65,70],"idgham":[41,45],"madd":[33,34,39,40],"qalqalah":[62,64]},
-"45": {"ghunnah":[15,18,26,29],"idgham":[14,15,52,57,65,70],"madd":[2,4,29,31,42,43,48,49],"wasl":[13,14]},
-"46": {"idgham":[45,51],"madd":[35,36],"wasl":[17,18]},
-"47": {"ghunnah":[29,32,58,63],"idgham":[37,42],"wasl":[10,11,45,46]},
-"48": {"madd":[18,19,36,37,57,58],"wasl":[13,14,29,30,81,82,100,101]},
-"49": {"ghunnah":[69,72,87,90,93,97,104,108,116,119,141,144,156,160,186,189,202,205,212,217],"madd":[2,4,30,32,63,64],"qalqalah":[78,80,97,99],"silent":[32,34],"wasl":[13,14,52,53]},
-"50": {"ghunnah":[15,18,26,29,90,93,121,124,165,168,183,186,307,310,331,334,350,353,377,381],"idgham":[14,15,267,272,283,287,306,307,330,331,342,346,367,372,520,524,544,550],"madd":[2,4,29,31,55,56,65,66,68,70,124,126,131,133,186,187,222,223,225,226,235,236,442,444,451,452,480,481],"qalqalah":[402,404],"wasl":[13,14,61,62,136,137,231,232,259,260,329,330,385,386,530,531]},
-"51": {"ghunnah":[10,14,27,30,54,58,86,89,144,148,164,167,180,183,215,218,226,229],"madd":[16,18,40,42,60,62,126,127,138,141,201,203],"qalqalah":[73,75,134,136],"wasl":[72,73,232,233,277,278]},
-"52": {"ghunnah":[20,23,33,36,51,55,67,70,112,115],"idgham":[19,20,84,88,180,185],"madd":[25,27,46,48,82,83],"wasl":[18,19,154,155]},
-"53": {"ghunnah":[60,63,200,203,246,249,276,279,301,304,368,371,378,383,393,396,416,420,462,465,487,491,524,528,528,531,554,557,577,580,599,602],"idgham":[59,60,79,83,275,276,399,403],"madd":[2,4,74,76,121,122,135,136,143,144,252,253,297,298,331,332,376,377,405,407,420,421,519,521,533,535,544,545,549,550,564,566,583,584],"qalqalah":[40,42,168,170,430,432],"silent":[31,33,47,49,175,177,208,210,496,498,535,537],"wasl":[13,14,58,59,167,168,199,200,274,275,309,310,338,339,507,508,603,604]},
-"54": {"ghunnah":[2,6,42,45],"qalqalah":[6,8],"silent":[11,13],"wasl":[46,47]},
-"55": {"ghunnah":[21,24,41,44,64,67,86,89,119,122,152,155,172,175,206,209,232,235,268,272],"madd":[27,29,35,37,49,51,58,60,72,74,81,82,94,96,103,105,114,115,127,129,136,138,147,148,166,168,201,202],"qalqalah":[54,56,99,101,132,134],"wasl":[212,213,222,223,236,237]},
-"56": {"ghunnah":[2,5,51,54],"idgham":[50,51],"madd":[20,22,30,31,62,64],"silent":[91,93,100,102,122,124],"wasl":[6,7,49,50,73,74]},
-"57": {"ghunnah":[2,5],"idgham":[71,72,119,125],"madd":[45,46],"wasl":[6,7,26,27,58,59,70,71,83,84]},
-"58": {"idgham":[108,113,118,124],"madd":[50,51,106,107],"silent":[77,79,97,99],"wasl":[2,3,22,23,39,40,67,68,87,88]},
-"59": {"ghunnah":[15,18,99,102,105,109,119,122],"idgham":[14,15,143,147,195,201],"madd":[2,4,37,38,61,63,111,112,125,126,137,140],"qalqalah":[83,85,133,135],"wasl":[13,14,66,67,181,182]},
-"60": {"ghunnah":[15,18,116,119,131,134],"idgham":[5,10,62,67,70,74],"madd":[28,29,159,161],"wasl":[21,22,39,40,74,75,93,94]},
-"61": {"madd":[30,32],"qalqalah":[60,62],"silent":[32,34,42,44,55,57]},
-"62": {"ghunnah":[2,5,41,45,54,58,67,70],"qalqalah":[45,47,83,85],"silent":[36,38],"wasl":[8,9,20,21,73,74]},
-"63": {"ghunnah":[14,17,44,47,63,66],"idgham":[13,14,27,28,100,101],"qalqalah":[83,85],"wasl":[12,13,26,27,67,68,99,100]},
-"64": {"ghunnah":[2,5],"madd":[26,27],"wasl":[6,7,21,22]},
-"65": {"idgham":[24,30,48,53],"madd":[2,3,16,18]},
-"66": {"ghunnah":[35,38],"idgham":[34,35,98,99],"madd":[55,56,64,66],"wasl":[33,34,77,78,97,98]},
-"67": {"ghunnah":[23,26],"idgham":[81,82],"madd":[18,20,26,28,58,60],"silent":[8,10],"wasl":[80,81]},
-"68": {"ghunnah":[66,71],"madd":[7,9],"wasl":[36,37,49,50]},
-"69": {"ghunnah":[101,104,125,128],"madd":[2,4],"silent":[31,33,46,48,68,70,112,114],"wasl":[13,14,51,52,91,92,129,130]},
-"70": {"ghunnah":[68,73],"madd":[2,4],"silent":[31,33,41,43,60,62],"wasl":[13,14,34,35,44,45]},
-"71": {"idgham":[64,68],"madd":[22,23,92,93],"qalqalah":[98,100],"wasl":[73,74]},
-"72": {"ghunnah":[2,5,142,145,151,154,170,175],"idgham":[37,38,88,92],"madd":[43,44,46,47,145,146,156,157],"qalqalah":[112,114],"wasl":[17,18,36,37,52,53,64,65,137,138]},
-"73": {"idgham":[167,173],"madd":[28,29,46,47,51,52,85,86,141,142],"wasl":[13,14,21,22,39,40,57,58,74,75,99,100,113,114,130,131,153,154]}
+"1": {"ghunnah":[54,57,125,128],"lam_shamsiyyah":[53,54],"madd_2":[96,97,114,115],"madd_munfasil":[41,43],"hamzat_wasl":[52,53,63,64,70,71,91,92,107,108,129,130]},
+"2": {"ghunnah":[48,51],"idghaam_no_ghunnah":[35,40],"madd_munfasil":[20,23],"hamzat_wasl":[2,3,52,53]},
+"3": {"hamzat_wasl":[18,19,37,38]},
+"4": {"ghunnah":[116,119,122,125],"ikhfa":[32,36],"ikhfa_shafawi":[198,202],"idghaam_ghunnah":[27,32],"lam_shamsiyyah":[259,260],"madd_2":[57,58,78,79,101,102,127,128,182,183,208,209],"madd_246":[265,266],"madd_muttasil":[90,92,156,158,171,173],"qalqalah":[150,152,167,169],"hamzat_wasl":[12,13,86,87,218,219,234,235,258,259]},
+"5": {"ghunnah":[210,213],"ikhfa":[43,46,164,168],"ikhfa_shafawi":[184,188],"idghaam_ghunnah":[199,204],"idghaam_no_ghunnah":[59,64,252,258],"lam_shamsiyyah":[115,116],"madd_2":[102,103,129,130,190,191,196,197],"madd_munfasil":[75,77,171,173],"madd_muttasil":[18,20,85,87],"qalqalah":[1,3,34,36],"silent":[77,79],"hamzat_wasl":[47,48,114,115,238,239]},
+"6": {"ghunnah":[2,5,72,75],"ikhfa":[44,47,137,141,207,211,255,260],"idghaam_shafawi":[244,249],"lam_shamsiyyah":[1,2],"madd_2":[62,63,77,78,147,148,188,189,266,267,283,284],"madd_munfasil":[67,69,202,204,217,219,226,229],"madd_muttasil":[238,240],"silent":[89,91,94,96,219,221],"hamzat_wasl":[22,23,97,98,151,152,164,165,181,182,276,277]},
+"7": {"ghunnah":[24,27],"ikhfa":[53,56],"idghaam_ghunnah":[61,66,68,72],"idghaam_shafawi":[137,142],"lam_shamsiyyah":[23,24],"madd_2":[32,33,41,42,78,79,145,146],"qalqalah":[74,76,105,107],"hamzat_wasl":[22,23,104,105]},
+"8": {"ikhfa":[29,33],"lam_shamsiyyah":[14,15],"madd_2":[18,19,58,59],"qalqalah":[33,35],"hamzat_wasl":[13,14]},
+"9": {"ikhfa":[97,101],"idghaam_ghunnah":[128,133],"idghaam_no_ghunnah":[139,145],"madd_munfasil":[2,4],"madd_muttasil":[80,82],"silent":[31,33,42,44],"hamzat_wasl":[13,14,34,35,54,55,166,167]},
+"10": {"ghunnah":[125,128],"ikhfa":[19,23,50,53],"idghaam_shafawi":[14,19],"lam_shamsiyyah":[143,144],"madd_2":[80,81],"madd_muttasil":[7,9],"qalqalah":[76,78],"hamzat_wasl":[71,72,95,96,106,107,134,135,142,143]},
+"11": {"ikhfa":[57,62],"qalqalah":[11,13],"silent":[46,48],"hamzat_wasl":[10,11,20,21]},
+"12": {"idghaam_ghunnah":[64,69],"idghaam_shafawi":[56,61],"madd_2":[22,23],"madd_munfasil":[100,102],"hamzat_wasl":[15,16,33,34,81,82]},
+"13": {"ghunnah":[124,127,146,149],"idghaam_ghunnah":[24,29,110,115,168,172,194,198],"idghaam_mutajanisayn":[12,13],"lam_shamsiyyah":[123,124],"madd_munfasil":[38,40],"madd_muttasil":[17,19],"silent":[85,87],"hamzat_wasl":[77,78,122,123]},
+"14": {"ghunnah":[47,50],"idghaam_shafawi":[24,29],"madd_munfasil":[109,111],"qalqalah":[34,36],"silent":[58,60,102,104],"hamzat_wasl":[61,62]},
+"15": {"ikhfa":[39,43],"madd_2":[20,21,72,73],"qalqalah":[6,8,43,45,68,70],"silent":[15,17,26,28],"hamzat_wasl":[29,30,63,64,91,92]},
+"16": {"ikhfa":[11,14,34,38],"idghaam_ghunnah":[7,11],"idghaam_no_ghunnah":[82,88],"idghaam_shafawi":[44,49],"hamzat_wasl":[21,22,52,53,67,68]},
+"17": {"ikhfa":[7,11,129,133],"idghaam_ghunnah":[102,106,151,156],"idghaam_shafawi":[31,36,124,129],"madd_muttasil":[69,71],"hamzat_wasl":[13,14,39,40,137,138]},
+"18": {"ghunnah":[83,86],"ikhfa":[40,43],"madd_2":[71,72],"madd_muttasil":[53,55],"qalqalah":[2,4],"hamzat_wasl":[14,15,22,23,48,49,113,114]},
+"19": {"ikhfa":[61,64],"ikhfa_shafawi":[177,181],"madd_2":[281,282,299,300],"madd_muttasil":[31,33,232,234],"silent":[228,230,253,255],"hamzat_wasl":[36,37,102,103,133,134,158,159,216,217,267,268,311,312]},
+"20": {"ghunnah":[86,89],"ikhfa_shafawi":[91,95],"iqlab":[140,142],"idghaam_ghunnah":[46,50],"idghaam_shafawi":[173,178],"madd_2":[182,183],"madd_munfasil":[187,189],"madd_muttasil":[143,145],"silent":[39,41,76,78,165,167,189,191],"hamzat_wasl":[12,13,55,56,106,107]},
+"21": {"ikhfa":[64,68],"idghaam_no_ghunnah":[57,62],"qalqalah":[5,7],"silent":[79,81],"hamzat_wasl":[33,34,82,83,92,93,102,103,122,123]},
+"22": {"ghunnah":[4,7],"idghaam_ghunnah":[155,160],"madd_2":[54,55,92,93,122,123,153,154],"madd_munfasil":[145,147],"silent":[49,51],"hamzat_wasl":[15,16,30,31,73,74,103,104]},
+"23": {"ikhfa":[27,31,84,88,120,123],"idghaam_ghunnah":[116,120],"idghaam_shafawi":[79,84,111,116],"madd_2":[45,46,101,102],"qalqalah":[147,149],"silent":[36,38,51,53,142,144],"hamzat_wasl":[6,7,54,55]},
+"24": {"ghunnah":[112,115],"ikhfa":[77,81],"idghaam_no_ghunnah":[136,142],"lam_shamsiyyah":[21,22],"madd_2":[25,26,66,67],"madd_muttasil":[81,83],"qalqalah":[5,7,38,40],"hamzat_wasl":[12,13,20,21,59,60,116,117]},
+"25": {"idghaam_ghunnah":[70,75],"silent":[33,35,62,64],"hamzat_wasl":[8,9,16,17,81,82,89,90,104,105,123,124]},
+"26": {"ikhfa":[4,7,58,62,114,119],"idghaam_shafawi":[30,35],"lam_shamsiyyah":[99,100],"madd_2":[22,23,52,53],"qalqalah":[119,121],"hamzat_wasl":[10,11,45,46,98,99]},
+"27": {"ikhfa":[118,122],"idghaam_no_ghunnah":[63,69],"madd_2":[32,33,48,49],"hamzat_wasl":[92,93]},
+"28": {"ghunnah":[15,18,52,55,126,129,143,146],"ikhfa":[45,49,49,52,153,158],"lam_shamsiyyah":[14,15,78,79],"madd_2":[37,38,73,74],"madd_munfasil":[2,4],"qalqalah":[60,62],"silent":[72,73],"hamzat_wasl":[13,14,65,66,77,78]},
+"29": {"ghunnah":[11,14,73,76,114,117],"ikhfa":[4,8,8,11,111,114],"lam_shamsiyyah":[48,49],"madd_2":[43,44,105,106],"qalqalah":[19,21,120,122],"hamzat_wasl":[24,25,47,48,56,57,77,78]},
+"30": {"ghunnah":[14,17,39,42],"ikhfa":[36,39],"idghaam_ghunnah":[25,29,53,58,66,70],"lam_shamsiyyah":[13,14],"madd_2":[2,3,47,48,72,73,116,117],"madd_muttasil":[7,9],"hamzat_wasl":[12,13,84,85,128,129]},
+"31": {"ghunnah":[20,23],"ikhfa":[17,20,124,129],"idghaam_ghunnah":[4,8,62,68],"madd_2":[43,44,58,59],"madd_munfasil":[74,76],"qalqalah":[8,10,79,81,107,109]},
+"32": {"ghunnah":[14,17,29,32,50,53,75,78],"idghaam_ghunnah":[40,45,146,150,162,168],"lam_shamsiyyah":[13,14,49,50],"madd_2":[2,3,139,140],"madd_muttasil":[7,9,55,57],"qalqalah":[112,114],"hamzat_wasl":[12,13,48,49,65,66,98,99,119,120]},
+"33": {"ghunnah":[22,25,162,165],"ikhfa":[198,201],"lam_shamsiyyah":[93,94,116,117,205,206],"madd_2":[59,60,100,101,123,124],"madd_munfasil":[157,159],"qalqalah":[39,41,209,211,249,251],"silent":[99,100,122,123],"hamzat_wasl":[54,55,70,71,92,93,115,116,138,139,177,178,204,205,221,222]},
+"34": {"ghunnah":[38,41,80,83],"madd_2":[52,53],"hamzat_wasl":[2,3,56,57,66,67,84,85]},
+"35": {"ghunnah":[2,5],"idghaam_ghunnah":[348,353,399,403],"idghaam_shafawi":[387,392],"lam_shamsiyyah":[107,108,123,124,139,140,155,156,243,244,260,261,321,322,354,355],"madd_2":[34,35,68,69,79,80,95,96,100,101,111,112,127,128,132,133,143,144,159,160,164,165,175,176,191,192,196,197,236,237,270,271,281,282,309,310,314,315,325,326,358,359,363,364],"madd_muttasil":[247,249,264,266],"qalqalah":[405,407],"hamzat_wasl":[6,7,23,24,40,41,57,58,74,75,90,91,106,107,122,123,138,139,154,155,170,171,186,187,202,203,222,223,242,243,259,260,276,277,304,305,320,321,334,335,353,354,375,376]},
+"36": {"idghaam_ghunnah":[21,25,84,88,133,137,182,188],"madd_2":[161,162,180,181],"madd_munfasil":[71,73],"qalqalah":[167,169],"hamzat_wasl":[52,53,101,102,142,143]},
+"37": {"ghunnah":[174,177,218,221,370,373],"ikhfa":[201,205,251,256,315,319],"idghaam_ghunnah":[235,240,379,384],"lam_shamsiyyah":[173,174],"madd_2":[210,211,263,264,328,329],"madd_munfasil":[22,24,319,321],"madd_muttasil":[340,342],"qalqalah":[154,156,259,261,334,336],"silent":[361,363],"hamzat_wasl":[34,35,102,103,109,110,144,145,172,173,183,184,295,296,397,398]},
+"38": {"ghunnah":[19,22,70,73],"ikhfa":[38,42,109,113],"idghaam_ghunnah":[146,152],"lam_shamsiyyah":[18,19],"madd_2":[66,67],"qalqalah":[113,115,152,154],"silent":[104,106],"hamzat_wasl":[17,18,54,55,76,77,88,89,133,134]},
+"39": {"madd_2":[27,28,30,31,56,57],"hamzat_wasl":[34,35,90,91,109,110]},
+"40": {"ghunnah":[15,18,91,94],"idghaam_ghunnah":[33,38],"idghaam_no_ghunnah":[38,43,60,65],"lam_shamsiyyah":[90,91],"madd_2":[57,58,99,100],"madd_munfasil":[25,27],"hamzat_wasl":[71,72,89,90,111,112]},
+"41": {"ikhfa":[58,63],"madd_munfasil":[2,4],"silent":[31,33,42,44],"hamzat_wasl":[13,14,34,35,45,46]},
+"42": {"idghaam_ghunnah":[20,24]},
+"43": {"ghunnah":[92,95],"idghaam_shafawi":[63,68],"lam_shamsiyyah":[72,73,91,92],"madd_2":[49,50,80,81],"madd_muttasil":[39,41],"hamzat_wasl":[5,6,71,72,90,91,109,110]},
+"44": {"ikhfa":[65,70],"idghaam_ghunnah":[41,45],"madd_2":[33,34,39,40],"qalqalah":[62,64]},
+"45": {"ghunnah":[15,18,26,29],"idghaam_ghunnah":[52,57,65,70],"lam_shamsiyyah":[14,15],"madd_2":[42,43,48,49],"madd_munfasil":[2,4,29,31],"hamzat_wasl":[13,14]},
+"46": {"idghaam_ghunnah":[45,51],"madd_2":[35,36],"hamzat_wasl":[17,18]},
+"47": {"ghunnah":[29,32],"ikhfa":[58,63],"idghaam_shafawi":[37,42],"hamzat_wasl":[10,11,45,46]},
+"48": {"madd_2":[18,19,36,37,57,58],"hamzat_wasl":[13,14,29,30,81,82,100,101]},
+"49": {"ghunnah":[69,72,87,90,116,119,141,144,186,189,202,205],"ikhfa":[93,97,104,108,156,160,212,217],"madd_2":[63,64],"madd_munfasil":[2,4,30,32],"qalqalah":[78,80,97,99],"silent":[32,34],"hamzat_wasl":[13,14,52,53]},
+"50": {"ghunnah":[15,18,26,29,90,93,121,124,165,168,183,186,307,310,331,334],"ikhfa":[350,353,377,381],"idghaam_ghunnah":[267,272,283,287,342,346,520,524],"idghaam_no_ghunnah":[367,372,544,550],"lam_shamsiyyah":[14,15,306,307,330,331],"madd_2":[55,56,65,66,186,187,222,223,225,226,235,236,451,452,480,481],"madd_munfasil":[2,4,29,31,68,70,124,126,442,444],"madd_muttasil":[131,133],"qalqalah":[402,404],"hamzat_wasl":[13,14,61,62,136,137,231,232,259,260,329,330,385,386,530,531]},
+"51": {"ghunnah":[27,30,86,89,164,167,180,183,215,218,226,229],"ikhfa":[10,14,54,58,144,148],"madd_2":[126,127],"madd_munfasil":[40,42,138,141,201,203],"madd_muttasil":[16,18,60,62],"qalqalah":[73,75,134,136],"hamzat_wasl":[72,73,232,233,277,278]},
+"52": {"ghunnah":[20,23,67,70,112,115],"ikhfa":[51,55],"iqlab":[33,36],"idghaam_ghunnah":[84,88],"idghaam_no_ghunnah":[180,185],"lam_shamsiyyah":[19,20],"madd_2":[82,83],"madd_munfasil":[46,48],"madd_muttasil":[25,27],"hamzat_wasl":[18,19,154,155]},
+"53": {"ghunnah":[60,63,246,249,276,279,368,371,393,396,462,465,577,580],"ikhfa":[200,203,301,304,378,383,416,420,487,491,524,528,528,531,599,602],"iqlab":[554,557],"idghaam_ghunnah":[79,83,399,403],"lam_shamsiyyah":[59,60,275,276],"madd_2":[121,122,135,136,143,144,252,253,297,298,331,332,376,377,420,421,544,545,549,550,583,584],"madd_munfasil":[2,4,74,76,519,521,533,535,564,566],"madd_muttasil":[405,407],"qalqalah":[40,42,168,170,430,432],"silent":[31,33,47,49,175,177,208,210,496,498,535,537],"hamzat_wasl":[13,14,58,59,167,168,199,200,274,275,309,310,338,339,507,508,603,604]},
+"54": {"ghunnah":[42,45],"ikhfa":[2,6],"qalqalah":[6,8],"silent":[11,13],"hamzat_wasl":[46,47]},
+"55": {"ghunnah":[21,24,41,44,64,67,86,89,119,122,152,155,172,175,206,209,232,235],"ikhfa":[268,272],"madd_2":[81,82,114,115,147,148,201,202],"madd_munfasil":[27,29,49,51,72,74,94,96,127,129],"madd_muttasil":[35,37,58,60,103,105,136,138,166,168],"qalqalah":[54,56,99,101,132,134],"hamzat_wasl":[212,213,222,223,236,237]},
+"56": {"ghunnah":[2,5,51,54],"lam_shamsiyyah":[50,51],"madd_2":[30,31],"madd_munfasil":[62,64],"madd_muttasil":[20,22],"silent":[91,93,100,102,122,124],"hamzat_wasl":[6,7,49,50,73,74]},
+"57": {"ghunnah":[2,5],"idghaam_ghunnah":[119,125],"lam_shamsiyyah":[71,72],"madd_2":[45,46],"hamzat_wasl":[6,7,26,27,58,59,70,71,83,84]},
+"58": {"idghaam_ghunnah":[108,113,118,124],"madd_2":[50,51,106,107],"silent":[77,79,97,99],"hamzat_wasl":[2,3,22,23,39,40,67,68,87,88]},
+"59": {"ghunnah":[15,18,99,102,119,122],"ikhfa":[105,109],"idghaam_ghunnah":[143,147],"idghaam_no_ghunnah":[195,201],"lam_shamsiyyah":[14,15],"madd_2":[37,38,111,112,125,126],"madd_munfasil":[2,4,137,140],"madd_muttasil":[61,63],"qalqalah":[83,85,133,135],"hamzat_wasl":[13,14,66,67,181,182]},
+"60": {"ghunnah":[116,119,131,134],"ikhfa":[15,18],"idghaam_ghunnah":[70,74],"idghaam_no_ghunnah":[5,10],"idghaam_shafawi":[62,67],"madd_2":[28,29],"madd_munfasil":[159,161],"hamzat_wasl":[21,22,39,40,74,75,93,94]},
+"61": {"madd_munfasil":[30,32],"qalqalah":[60,62],"silent":[32,34,42,44,55,57]},
+"62": {"ghunnah":[2,5,67,70],"ikhfa":[41,45,54,58],"qalqalah":[45,47,83,85],"silent":[36,38],"hamzat_wasl":[8,9,20,21,73,74]},
+"63": {"ghunnah":[14,17,44,47],"ikhfa":[63,66],"lam_shamsiyyah":[13,14,27,28,100,101],"qalqalah":[83,85],"hamzat_wasl":[12,13,26,27,67,68,99,100]},
+"64": {"ghunnah":[2,5],"madd_2":[26,27],"hamzat_wasl":[6,7,21,22]},
+"65": {"idghaam_ghunnah":[48,53],"idghaam_no_ghunnah":[24,30],"madd_2":[2,3],"madd_munfasil":[16,18]},
+"66": {"ghunnah":[35,38],"lam_shamsiyyah":[34,35,98,99],"madd_2":[55,56],"madd_munfasil":[64,66],"hamzat_wasl":[33,34,77,78,97,98]},
+"67": {"ghunnah":[23,26],"lam_shamsiyyah":[81,82],"madd_munfasil":[18,20,26,28],"madd_muttasil":[58,60],"silent":[8,10],"hamzat_wasl":[80,81]},
+"68": {"ikhfa":[66,71],"madd_munfasil":[7,9],"hamzat_wasl":[36,37,49,50]},
+"69": {"ghunnah":[101,104],"ikhfa":[125,128],"madd_munfasil":[2,4],"silent":[31,33,46,48,68,70,112,114],"hamzat_wasl":[13,14,51,52,91,92,129,130]},
+"70": {"ikhfa":[68,73],"madd_munfasil":[2,4],"silent":[31,33,41,43,60,62],"hamzat_wasl":[13,14,34,35,44,45]},
+"71": {"idghaam_ghunnah":[64,68],"madd_2":[22,23,92,93],"qalqalah":[98,100],"hamzat_wasl":[73,74]},
+"72": {"ghunnah":[2,5,151,154],"ikhfa":[142,145,170,175],"idghaam_ghunnah":[88,92],"lam_shamsiyyah":[37,38],"madd_2":[43,44,46,47,145,146,156,157],"qalqalah":[112,114],"hamzat_wasl":[17,18,36,37,52,53,64,65,137,138]},
+"73": {"idghaam_no_ghunnah":[167,173],"madd_2":[28,29,46,47,51,52,85,86,141,142],"hamzat_wasl":[13,14,21,22,39,40,57,58,74,75,99,100,113,114,130,131,153,154]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/34.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/34.json
index 4bc1dcf..7c5b0a0 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/34.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/34.json
@@ -1,56 +1,56 @@
{
-"1": {"idgham":[80,81],"madd":[69,70,86,87,89,90,172,173],"wasl":[57,58,79,80,103,104,120,121,134,135,154,155,165,166]},
-"2": {"ghunnah":[65,68],"idgham":[77,78,118,119],"madd":[83,85,135,136],"wasl":[24,25,76,77,117,118,128,129]},
-"3": {"ghunnah":[85,88,147,151,205,209],"idgham":[44,45,154,155,248,253],"madd":[95,96,160,161,163,164,191,193,209,210,219,221,246,247,255,256],"silent":[25,27],"wasl":[8,9,43,44,101,102,153,154,177,178]},
-"4": {"ghunnah":[97,101],"idgham":[46,47,76,81,88,92],"madd":[50,51,55,56,65,67,103,104],"qalqalah":[5,7],"silent":[30,32,42,44,61,63],"wasl":[12,13,45,46]},
-"5": {"idgham":[75,80,80,85],"madd":[21,23,29,30,40,41,55,57,94,95],"qalqalah":[85,87],"silent":[51,53],"wasl":[2,3]},
-"6": {"ghunnah":[48,51],"idgham":[65,70],"madd":[43,45,98,100,112,113,134,135],"qalqalah":[135,136],"silent":[24,26],"wasl":[8,9,27,28,37,38,81,82,116,117,127,128]},
-"7": {"ghunnah":[109,112,128,132],"idgham":[57,61],"madd":[134,135],"qalqalah":[84,86,135,136],"silent":[25,27],"wasl":[8,9]},
-"8": {"ghunnah":[35,39,45,48,49,53],"idgham":[116,117],"madd":[41,42,122,123,133,134],"qalqalah":[134,135],"wasl":[17,18,57,58,85,86,102,103,115,116,126,127]},
-"9": {"ghunnah":[185,188],"idgham":[62,67,71,72,96,101,162,168,172,173,209,214,225,230],"madd":[77,79,178,180,195,196,232,233],"qalqalah":[143,145,222,224,233,234],"silent":[15,17],"wasl":[70,71,84,85,122,123,171,172]},
-"10": {"ghunnah":[31,34,90,93],"idgham":[41,46,75,76],"madd":[25,26,46,47,70,71,107,108],"qalqalah":[6,8,108,109],"wasl":[74,75,100,101]},
-"11": {"ghunnah":[72,75],"idgham":[22,26,39,40],"madd":[15,16,20,21,63,64,99,100],"silent":[58,60],"wasl":[5,6,38,39,50,51]},
-"12": {"ghunnah":[110,113],"idgham":[17,18,41,45,61,65,116,120,165,169,221,222],"madd":[12,13,79,80,159,160,227,228],"qalqalah":[93,95,202,204],"wasl":[16,17,88,89,105,106,220,221]},
-"13": {"ghunnah":[68,72],"idgham":[33,38,91,96,137,142,148,153,167,168],"madd":[16,17,26,28,40,41,53,54,101,102,112,114,128,129,173,174],"silent":[114,116],"wasl":[72,73,105,106,166,167]},
-"14": {"ghunnah":[4,7,108,111,123,126,151,154],"idgham":[157,162],"madd":[67,69,117,118,232,233],"madd-lazim":[79,81],"silent":[171,173,207,209],"wasl":[28,29,87,88,146,147,186,187,214,215,225,226]},
-"15": {"ghunnah":[20,24,45,49,49,52,78,82,136,140],"idgham":[60,64,68,72,90,95,146,150],"madd":[127,128,160,161],"qalqalah":[4,6],"silent":[85,87,120,122],"wasl":[112,113]},
-"16": {"ghunnah":[70,74,76,79,90,93,145,149,152,156],"idgham":[122,126,131,135,140,145],"madd":[67,68,158,159],"qalqalah":[149,151],"silent":[11,13],"wasl":[46,47]},
-"17": {"ghunnah":[19,23],"madd":[2,3,16,17,48,49,51,53,68,69],"silent":[34,36],"wasl":[61,62]},
-"18": {"ghunnah":[70,75],"idgham":[81,85,104,105],"madd":[51,52,75,76,158,159],"silent":[119,121],"wasl":[32,33,41,42,103,104]},
-"19": {"ghunnah":[63,66,135,138,178,182],"idgham":[160,165],"madd":[22,23,56,58,83,84,111,112,145,146,158,159,184,185],"qalqalah":[25,27,107,109],"silent":[8,10,58,60]},
-"20": {"ghunnah":[40,43],"idgham":[74,80],"madd":[45,46,94,95],"qalqalah":[6,8,30,32],"wasl":[49,50,83,84]},
-"21": {"ghunnah":[31,35,91,94],"idgham":[26,31,63,67,118,122],"madd":[16,17,39,40,154,155],"wasl":[76,77]},
-"22": {"ghunnah":[37,41,85,89,149,153,181,185],"idgham":[32,37,92,93,156,160,176,181],"madd":[98,99,101,102,168,169,187,188],"qalqalah":[6,8],"silent":[11,13],"wasl":[5,6,14,15,45,46,91,92,115,116]},
-"23": {"ghunnah":[8,11,29,32,89,93],"idgham":[15,16],"madd":[21,22,34,36,62,63,69,72,178,179],"silent":[109,111,141,143],"wasl":[14,15,144,145,160,161,171,172]},
-"24": {"ghunnah":[70,73],"idgham":[7,11,19,24,28,29,122,127],"madd":[34,35,37,38,73,75,120,121,129,130],"wasl":[27,28,43,44,58,59]},
-"25": {"ghunnah":[24,27,60,63],"madd":[27,29,73,74],"qalqalah":[32,34]},
-"26": {"ghunnah":[35,38],"madd":[95,96],"qalqalah":[7,9],"wasl":[60,61,76,77,88,89]},
-"27": {"ghunnah":[35,39],"madd":[41,42,49,51,97,98],"qalqalah":[31,33],"wasl":[15,16,71,72,79,80,90,91]},
-"28": {"ghunnah":[42,45,76,79,91,94],"idgham":[36,41,41,42,55,60,66,71,90,91],"madd":[4,6,17,18,73,74,110,111],"madd-lazim":[30,32],"wasl":[89,90]},
-"29": {"ghunnah":[39,43,43,46],"madd":[22,23,51,52,56,57],"wasl":[27,28]},
-"30": {"idgham":[9,14,26,31,63,67],"madd":[83,84],"qalqalah":[77,79]},
-"31": {"ghunnah":[145,148,273,276,283,286],"idgham":[30,35,117,118],"madd":[46,47,107,110,121,122,268,270,296,297],"silent":[25,27,233,235,259,261],"wasl":[8,9,51,52,72,73,116,117,193,194,211,212,221,222,247,248]},
-"32": {"ghunnah":[116,120,125,128],"idgham":[128,133],"madd":[53,55,75,76,110,112,139,140],"qalqalah":[71,73,133,135],"silent":[28,30,55,57],"wasl":[6,7,16,17,42,43,86,87]},
-"33": {"ghunnah":[84,87,158,161,181,184,194,197],"idgham":[83,84,116,121,163,168,180,181],"madd":[111,113,153,155,240,241,246,248,323,324],"qalqalah":[142,144,286,288],"silent":[30,32,56,58,176,178,205,207,276,278,312,314],"wasl":[8,9,18,19,44,45,71,72,82,83,130,131,179,180,208,209,231,232,259,260]},
-"34": {"ghunnah":[75,78,97,101],"idgham":[30,35,35,40],"madd":[4,6,70,72,84,86,103,104,107,108,112,113]},
-"35": {"idgham":[35,40,48,53],"madd":[33,34,46,47,75,76],"silent":[8,10]},
-"36": {"ghunnah":[7,10,70,73,85,88],"idgham":[28,29,41,45,84,85],"madd":[47,49,67,68,104,105],"qalqalah":[20,22,56,58],"wasl":[27,28,83,84]},
-"37": {"ghunnah":[39,43,67,70,119,124],"idgham":[154,155],"madd":[4,6,13,14,25,27,34,35,80,83,115,116,130,132,148,150,199,200,210,211],"silent":[126,128,176,178],"wasl":[43,44,153,154,190,191]},
-"38": {"madd":[25,27,33,34,44,45,59,61,89,90],"silent":[55,57],"wasl":[2,3,70,71]},
-"39": {"ghunnah":[7,10,94,97,106,110,113,117],"idgham":[28,29,41,45,101,106,149,150],"madd":[47,49,66,67,83,84,89,91,132,133,153,154,158,159],"qalqalah":[20,22,72,74,97,99],"wasl":[27,28,148,149]},
-"40": {"ghunnah":[28,33,33,36],"madd":[53,55,66,68,72,74,105,106],"silent":[94,96]},
-"41": {"ghunnah":[23,26,40,44,49,53,82,85,96,100],"idgham":[102,107],"madd":[15,16,113,114],"qalqalah":[11,13],"silent":[6,8,62,64],"wasl":[77,78]},
-"42": {"ghunnah":[117,120,134,137,137,141],"idgham":[43,48,51,56,64,69,116,117],"madd":[154,155],"silent":[95,97,104,106],"wasl":[2,3,115,116,124,125]},
-"43": {"ghunnah":[49,53,112,115,235,238],"idgham":[84,88,96,100,182,187,192,197,276,281],"madd":[33,34,47,48,66,67,69,71,137,139,163,164,166,168,174,176,242,244,258,259,261,263,283,284],"silent":[57,59,154,156,220,222],"wasl":[203,204]},
-"44": {"ghunnah":[24,28],"idgham":[19,24,31,35,90,95],"madd":[4,6,16,17,52,54,65,67,97,98],"qalqalah":[35,37,81,83]},
-"45": {"ghunnah":[22,26],"madd":[63,65,75,76,121,122],"qalqalah":[26,28],"silent":[48,50,91,93],"wasl":[10,11]},
-"46": {"ghunnah":[7,10,23,27,39,43,83,86,122,126,126,129,162,166,184,188],"idgham":[117,122,155,160],"madd":[12,14,29,30,75,76,190,191],"qalqalah":[191,192],"silent":[49,51,99,101]},
-"47": {"ghunnah":[32,36,108,112],"idgham":[19,24],"madd":[114,115],"qalqalah":[29,31,55,57,115,116],"wasl":[75,76]},
-"48": {"ghunnah":[7,10],"madd":[43,44,54,55],"qalqalah":[20,22,55,56],"wasl":[29,30,47,48]},
-"49": {"madd":[7,9,41,42,57,58],"qalqalah":[29,31,58,59],"wasl":[12,13,36,37]},
-"50": {"ghunnah":[7,11,22,25,106,109,119,123],"madd":[27,29,85,87,101,103,111,112,125,126],"qalqalah":[126,127],"wasl":[60,61]},
-"51": {"ghunnah":[66,70],"idgham":[57,62],"madd":[11,14,72,73],"qalqalah":[73,74],"silent":[27,29,52,54]},
-"52": {"ghunnah":[17,20,32,35,69,73],"idgham":[46,47,60,65],"madd":[7,9,26,27,76,77],"qalqalah":[77,78],"silent":[9,11],"wasl":[45,46]},
-"53": {"ghunnah":[25,29,71,75],"idgham":[62,67],"madd":[21,22,78,79],"qalqalah":[4,6,29,31,38,40,79,80],"silent":[14,16],"wasl":[50,51]},
-"54": {"ghunnah":[75,79,86,89],"idgham":[70,75,111,116],"madd":[118,119],"qalqalah":[79,81,119,120],"silent":[100,102]}
+"1": {"lam_shamsiyyah":[80,81],"madd_2":[69,70,86,87,89,90],"madd_246":[172,173],"hamzat_wasl":[57,58,79,80,103,104,120,121,134,135,154,155,165,166]},
+"2": {"ikhfa":[65,68],"lam_shamsiyyah":[77,78,118,119],"madd_246":[135,136],"madd_muttasil":[83,85],"hamzat_wasl":[24,25,76,77,117,118,128,129]},
+"3": {"ghunnah":[85,88],"ikhfa":[147,151,205,209],"idghaam_ghunnah":[248,253],"lam_shamsiyyah":[44,45,154,155],"madd_2":[95,96,160,161,163,164,209,210,246,247],"madd_246":[255,256],"madd_munfasil":[191,193,219,221],"silent":[25,27],"hamzat_wasl":[8,9,43,44,101,102,153,154,177,178]},
+"4": {"ikhfa":[97,101],"idghaam_ghunnah":[88,92],"idghaam_shafawi":[76,81],"lam_shamsiyyah":[46,47],"madd_2":[50,51,55,56],"madd_246":[103,104],"madd_muttasil":[65,67],"qalqalah":[5,7],"silent":[30,32,42,44,61,63],"hamzat_wasl":[12,13,45,46]},
+"5": {"idghaam_ghunnah":[75,80],"idghaam_no_ghunnah":[80,85],"madd_2":[29,30,40,41],"madd_246":[94,95],"madd_munfasil":[21,23],"madd_muttasil":[55,57],"qalqalah":[85,87],"silent":[51,53],"hamzat_wasl":[2,3]},
+"6": {"ikhfa":[48,51],"idghaam_no_ghunnah":[65,70],"madd_2":[112,113],"madd_246":[134,135],"madd_munfasil":[43,45,98,100],"qalqalah":[135,136],"silent":[24,26],"hamzat_wasl":[8,9,27,28,37,38,81,82,116,117,127,128]},
+"7": {"ghunnah":[109,112],"ikhfa":[128,132],"idghaam_ghunnah":[57,61],"madd_246":[134,135],"qalqalah":[84,86,135,136],"silent":[25,27],"hamzat_wasl":[8,9]},
+"8": {"ghunnah":[45,48],"ikhfa_shafawi":[35,39],"iqlab":[49,53],"lam_shamsiyyah":[116,117],"madd_2":[41,42,122,123],"madd_246":[133,134],"qalqalah":[134,135],"hamzat_wasl":[17,18,57,58,85,86,102,103,115,116,126,127]},
+"9": {"ghunnah":[185,188],"idghaam_ghunnah":[96,101,162,168,225,230],"idghaam_no_ghunnah":[209,214],"idghaam_shafawi":[62,67],"lam_shamsiyyah":[71,72,172,173],"madd_2":[195,196],"madd_246":[232,233],"madd_muttasil":[77,79,178,180],"qalqalah":[143,145,222,224,233,234],"silent":[15,17],"hamzat_wasl":[70,71,84,85,122,123,171,172]},
+"10": {"ghunnah":[31,34,90,93],"idghaam_ghunnah":[41,46],"lam_shamsiyyah":[75,76],"madd_2":[25,26,46,47,70,71],"madd_246":[107,108],"qalqalah":[6,8,108,109],"hamzat_wasl":[74,75,100,101]},
+"11": {"ghunnah":[72,75],"idghaam_ghunnah":[22,26],"lam_shamsiyyah":[39,40],"madd_2":[15,16,20,21,63,64],"madd_246":[99,100],"silent":[58,60],"hamzat_wasl":[5,6,38,39,50,51]},
+"12": {"ghunnah":[110,113],"idghaam_ghunnah":[41,45,61,65,116,120,165,169],"lam_shamsiyyah":[17,18,221,222],"madd_2":[12,13,79,80,159,160],"madd_246":[227,228],"qalqalah":[93,95,202,204],"hamzat_wasl":[16,17,88,89,105,106,220,221]},
+"13": {"ikhfa":[68,72],"idghaam_ghunnah":[33,38,137,142,148,153],"idghaam_no_ghunnah":[91,96],"lam_shamsiyyah":[167,168],"madd_2":[16,17,40,41,53,54,101,102,128,129],"madd_246":[173,174],"madd_munfasil":[112,114],"madd_muttasil":[26,28],"silent":[114,116],"hamzat_wasl":[72,73,105,106,166,167]},
+"14": {"ghunnah":[4,7,123,126,151,154],"ikhfa":[108,111],"idghaam_no_ghunnah":[157,162],"madd_2":[117,118],"madd_246":[232,233],"madd_munfasil":[67,69],"madd_6":[79,81],"silent":[171,173,207,209],"hamzat_wasl":[28,29,87,88,146,147,186,187,214,215,225,226]},
+"15": {"ghunnah":[49,52],"ikhfa":[20,24,45,49,78,82,136,140],"idghaam_ghunnah":[60,64,68,72,146,150],"idghaam_no_ghunnah":[90,95],"madd_2":[127,128],"madd_246":[160,161],"qalqalah":[4,6],"silent":[85,87,120,122],"hamzat_wasl":[112,113]},
+"16": {"ghunnah":[76,79,90,93],"ikhfa":[145,149,152,156],"ikhfa_shafawi":[70,74],"idghaam_ghunnah":[122,126,131,135,140,145],"madd_2":[67,68],"madd_246":[158,159],"qalqalah":[149,151],"silent":[11,13],"hamzat_wasl":[46,47]},
+"17": {"ikhfa_shafawi":[19,23],"madd_2":[2,3,16,17,48,49],"madd_246":[68,69],"madd_munfasil":[51,53],"silent":[34,36],"hamzat_wasl":[61,62]},
+"18": {"ikhfa":[70,75],"idghaam_ghunnah":[81,85],"lam_shamsiyyah":[104,105],"madd_2":[51,52,75,76],"madd_246":[158,159],"silent":[119,121],"hamzat_wasl":[32,33,41,42,103,104]},
+"19": {"ghunnah":[135,138],"ikhfa":[63,66,178,182],"idghaam_no_ghunnah":[160,165],"madd_2":[22,23,83,84,111,112,145,146,158,159],"madd_246":[184,185],"madd_munfasil":[56,58],"qalqalah":[25,27,107,109],"silent":[8,10,58,60]},
+"20": {"ghunnah":[40,43],"idghaam_ghunnah":[74,80],"madd_2":[45,46],"madd_246":[94,95],"qalqalah":[6,8,30,32],"hamzat_wasl":[49,50,83,84]},
+"21": {"ghunnah":[91,94],"ikhfa":[31,35],"idghaam_ghunnah":[63,67,118,122],"idghaam_shafawi":[26,31],"madd_2":[16,17,39,40],"madd_246":[154,155],"hamzat_wasl":[76,77]},
+"22": {"ikhfa":[37,41,85,89,149,153,181,185],"idghaam_ghunnah":[156,160],"idghaam_shafawi":[32,37,176,181],"lam_shamsiyyah":[92,93],"madd_2":[98,99,101,102,168,169],"madd_246":[187,188],"qalqalah":[6,8],"silent":[11,13],"hamzat_wasl":[5,6,14,15,45,46,91,92,115,116]},
+"23": {"ikhfa":[8,11,29,32,89,93],"lam_shamsiyyah":[15,16],"madd_2":[21,22,62,63],"madd_246":[178,179],"madd_munfasil":[34,36,69,72],"silent":[109,111,141,143],"hamzat_wasl":[14,15,144,145,160,161,171,172]},
+"24": {"ghunnah":[70,73],"idghaam_ghunnah":[7,11,122,127],"idghaam_shafawi":[19,24],"lam_shamsiyyah":[28,29],"madd_2":[34,35,37,38,120,121],"madd_246":[129,130],"madd_munfasil":[73,75],"hamzat_wasl":[27,28,43,44,58,59]},
+"25": {"ghunnah":[24,27,60,63],"madd_246":[73,74],"madd_munfasil":[27,29],"qalqalah":[32,34]},
+"26": {"ghunnah":[35,38],"madd_246":[95,96],"qalqalah":[7,9],"hamzat_wasl":[60,61,76,77,88,89]},
+"27": {"ikhfa_shafawi":[35,39],"madd_2":[41,42],"madd_246":[97,98],"madd_muttasil":[49,51],"qalqalah":[31,33],"hamzat_wasl":[15,16,71,72,79,80,90,91]},
+"28": {"ghunnah":[42,45,76,79,91,94],"idghaam_ghunnah":[55,60,66,71],"idghaam_no_ghunnah":[36,41],"lam_shamsiyyah":[41,42,90,91],"madd_2":[17,18,73,74],"madd_246":[110,111],"madd_munfasil":[4,6],"madd_6":[30,32],"hamzat_wasl":[89,90]},
+"29": {"ikhfa":[39,43,43,46],"madd_2":[22,23,51,52],"madd_246":[56,57],"hamzat_wasl":[27,28]},
+"30": {"idghaam_ghunnah":[63,67],"idghaam_no_ghunnah":[26,31],"idghaam_shafawi":[9,14],"madd_246":[83,84],"qalqalah":[77,79]},
+"31": {"ghunnah":[283,286],"ikhfa":[145,148,273,276],"idghaam_ghunnah":[30,35],"lam_shamsiyyah":[117,118],"madd_2":[46,47,121,122],"madd_246":[296,297],"madd_munfasil":[107,110,268,270],"silent":[25,27,233,235,259,261],"hamzat_wasl":[8,9,51,52,72,73,116,117,193,194,211,212,221,222,247,248]},
+"32": {"ikhfa":[125,128],"ikhfa_shafawi":[116,120],"idghaam_shafawi":[128,133],"madd_2":[75,76],"madd_246":[139,140],"madd_munfasil":[53,55],"madd_muttasil":[110,112],"qalqalah":[71,73,133,135],"silent":[28,30,55,57],"hamzat_wasl":[6,7,16,17,42,43,86,87]},
+"33": {"ghunnah":[84,87,181,184,194,197],"ikhfa":[158,161],"idghaam_ghunnah":[116,121,163,168],"lam_shamsiyyah":[83,84,180,181],"madd_2":[240,241],"madd_246":[323,324],"madd_munfasil":[111,113,153,155,246,248],"qalqalah":[142,144,286,288],"silent":[30,32,56,58,176,178,205,207,276,278,312,314],"hamzat_wasl":[8,9,18,19,44,45,71,72,82,83,130,131,179,180,208,209,231,232,259,260]},
+"34": {"ghunnah":[75,78],"ikhfa_shafawi":[97,101],"idghaam_ghunnah":[30,35,35,40],"madd_2":[103,104,107,108],"madd_246":[112,113],"madd_munfasil":[4,6,70,72,84,86]},
+"35": {"idghaam_ghunnah":[35,40,48,53],"madd_2":[33,34,46,47],"madd_246":[75,76],"silent":[8,10]},
+"36": {"ghunnah":[7,10,70,73,85,88],"idghaam_ghunnah":[41,45],"lam_shamsiyyah":[28,29,84,85],"madd_2":[67,68],"madd_246":[104,105],"madd_muttasil":[47,49],"qalqalah":[20,22,56,58],"hamzat_wasl":[27,28,83,84]},
+"37": {"ikhfa":[67,70,119,124],"ikhfa_shafawi":[39,43],"lam_shamsiyyah":[154,155],"madd_2":[13,14,34,35,115,116,199,200],"madd_246":[210,211],"madd_munfasil":[4,6,25,27,80,83],"madd_muttasil":[130,132,148,150],"silent":[126,128,176,178],"hamzat_wasl":[43,44,153,154,190,191]},
+"38": {"madd_2":[33,34,44,45],"madd_246":[89,90],"madd_munfasil":[25,27],"madd_muttasil":[59,61],"silent":[55,57],"hamzat_wasl":[2,3,70,71]},
+"39": {"ghunnah":[7,10],"ikhfa":[94,97,106,110,113,117],"idghaam_ghunnah":[41,45],"idghaam_shafawi":[101,106],"lam_shamsiyyah":[28,29,149,150],"madd_2":[66,67,83,84,132,133,153,154],"madd_246":[158,159],"madd_munfasil":[89,91],"madd_muttasil":[47,49],"qalqalah":[20,22,72,74,97,99],"hamzat_wasl":[27,28,148,149]},
+"40": {"ghunnah":[33,36],"ikhfa":[28,33],"madd_246":[105,106],"madd_muttasil":[53,55,66,68,72,74],"silent":[94,96]},
+"41": {"ghunnah":[82,85],"ikhfa":[23,26,40,44],"ikhfa_shafawi":[49,53,96,100],"idghaam_shafawi":[102,107],"madd_2":[15,16],"madd_246":[113,114],"qalqalah":[11,13],"silent":[6,8,62,64],"hamzat_wasl":[77,78]},
+"42": {"ghunnah":[117,120],"ikhfa":[134,137],"ikhfa_shafawi":[137,141],"idghaam_ghunnah":[43,48,51,56,64,69],"lam_shamsiyyah":[116,117],"madd_246":[154,155],"silent":[95,97,104,106],"hamzat_wasl":[2,3,115,116,124,125]},
+"43": {"ghunnah":[112,115,235,238],"ikhfa":[49,53],"idghaam_ghunnah":[84,88,96,100,182,187,192,197,276,281],"madd_2":[33,34,47,48,66,67,163,164,258,259],"madd_246":[283,284],"madd_munfasil":[69,71,166,168,174,176,261,263],"madd_muttasil":[137,139,242,244],"silent":[57,59,154,156,220,222],"hamzat_wasl":[203,204]},
+"44": {"ikhfa":[24,28],"idghaam_ghunnah":[31,35,90,95],"idghaam_shafawi":[19,24],"madd_2":[16,17],"madd_246":[97,98],"madd_munfasil":[4,6,52,54,65,67],"qalqalah":[35,37,81,83]},
+"45": {"ikhfa":[22,26],"madd_2":[75,76],"madd_246":[121,122],"madd_munfasil":[63,65],"qalqalah":[26,28],"silent":[48,50,91,93],"hamzat_wasl":[10,11]},
+"46": {"ghunnah":[7,10,83,86,126,129],"ikhfa":[39,43,122,126,184,188],"ikhfa_shafawi":[23,27,162,166],"idghaam_no_ghunnah":[155,160],"idghaam_shafawi":[117,122],"madd_2":[29,30,75,76],"madd_246":[190,191],"madd_munfasil":[12,14],"qalqalah":[191,192],"silent":[49,51,99,101]},
+"47": {"ikhfa":[32,36,108,112],"idghaam_shafawi":[19,24],"madd_246":[114,115],"qalqalah":[29,31,55,57,115,116],"hamzat_wasl":[75,76]},
+"48": {"ghunnah":[7,10],"madd_2":[43,44],"madd_246":[54,55],"qalqalah":[20,22,55,56],"hamzat_wasl":[29,30,47,48]},
+"49": {"madd_2":[41,42],"madd_246":[57,58],"madd_muttasil":[7,9],"qalqalah":[29,31,58,59],"hamzat_wasl":[12,13,36,37]},
+"50": {"ghunnah":[22,25,106,109],"ikhfa":[7,11,119,123],"madd_2":[111,112],"madd_246":[125,126],"madd_munfasil":[27,29,85,87,101,103],"qalqalah":[126,127],"hamzat_wasl":[60,61]},
+"51": {"ikhfa":[66,70],"idghaam_ghunnah":[57,62],"madd_246":[72,73],"madd_munfasil":[11,14],"qalqalah":[73,74],"silent":[27,29,52,54]},
+"52": {"ghunnah":[17,20,32,35],"iqlab":[69,73],"idghaam_ghunnah":[60,65],"lam_shamsiyyah":[46,47],"madd_2":[26,27],"madd_246":[76,77],"madd_munfasil":[7,9],"qalqalah":[77,78],"silent":[9,11],"hamzat_wasl":[45,46]},
+"53": {"ikhfa":[25,29],"iqlab":[71,75],"idghaam_ghunnah":[62,67],"madd_2":[21,22],"madd_246":[78,79],"qalqalah":[4,6,29,31,38,40,79,80],"silent":[14,16],"hamzat_wasl":[50,51]},
+"54": {"ghunnah":[86,89],"ikhfa":[75,79],"idghaam_ghunnah":[111,116],"idghaam_shafawi":[70,75],"madd_246":[118,119],"qalqalah":[79,81,119,120],"silent":[100,102]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/35.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/35.json
index d583c8c..250a1d9 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/35.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/35.json
@@ -1,47 +1,47 @@
{
-"1": {"ghunnah":[210,213,240,244],"idgham":[66,67,141,146],"madd":[72,73,75,76,106,108,129,131,159,160,169,170,203,205,246,247],"qalqalah":[134,136],"silent":[125,127],"wasl":[65,66,81,82,99,100,185,186,214,215]},
-"2": {"ghunnah":[25,28,44,48,106,109],"idgham":[24,25,34,39],"madd":[101,102,116,117,143,144],"wasl":[14,15,125,126,136,137]},
-"3": {"ghunnah":[15,18,165,168],"idgham":[14,15,104,109,113,114],"madd":[2,4,73,74,119,121,138,140,145,146,179,180],"silent":[30,32],"wasl":[13,14,22,23,42,43,86,87,112,113,126,127]},
-"4": {"ghunnah":[46,50],"idgham":[4,8,41,46],"madd":[89,90],"qalqalah":[23,25,50,52],"wasl":[65,66,82,83]},
-"5": {"ghunnah":[15,18,24,27,47,51,62,65,106,109,111,115],"idgham":[14,15,83,84],"madd":[2,4,78,79,130,131],"silent":[77,78],"wasl":[13,14,35,36,70,71,82,83,115,116,123,124]},
-"6": {"ghunnah":[2,5,32,36,59,62],"idgham":[7,8,115,116],"madd":[15,16,84,85,110,111,121,122],"qalqalah":[68,70],"silent":[73,75,96,98],"wasl":[6,7,36,37,114,115]},
-"7": {"ghunnah":[33,37,117,121],"idgham":[41,45,79,80,96,101,108,112],"madd":[83,84,88,89,123,124],"qalqalah":[114,116],"silent":[17,19,63,65,75,77],"wasl":[45,46,78,79]},
-"8": {"ghunnah":[6,10,54,59,61,64,164,167,182,186],"idgham":[83,87,106,110],"madd":[20,21,24,26,37,38,89,91,112,114,158,159,199,200],"qalqalah":[129,131],"wasl":[65,66,168,169]},
-"9": {"ghunnah":[55,60,91,95,151,154],"idgham":[29,30,82,87,150,151],"madd":[16,18,35,36,66,67,143,144,156,157],"qalqalah":[62,64],"wasl":[2,3,10,11,28,29,112,113,149,150]},
-"10": {"ghunnah":[2,6,185,189],"idgham":[88,89,111,112,158,159,193,197],"madd":[115,116,131,132,210,212,226,227],"silent":[206,208],"wasl":[18,19,39,40,77,78,87,88,100,101,110,111,135,136,157,158]},
-"11": {"ghunnah":[23,27,31,35,35,38,51,55,55,58,103,106,151,154,166,169,180,183,223,226],"idgham":[18,23,41,46,78,83,159,164,170,174],"madd":[76,77,139,140,199,201,217,218,229,230,253,254],"qalqalah":[46,48],"wasl":[2,3,241,242]},
-"12": {"ghunnah":[41,45,49,53,58,62,99,103,105,109,124,129,161,165,228,232],"idgham":[93,97,133,138],"madd":[31,32,53,55,69,70,75,76,238,239,262,263],"qalqalah":[216,218],"silent":[223,225],"wasl":[16,17,186,187]},
-"13": {"ghunnah":[23,26,44,47,126,129,128,133,198,202,227,231],"idgham":[22,23,43,44,77,78,102,106,119,124],"madd":[133,134,207,208,235,236],"qalqalah":[106,108,188,190,231,233],"wasl":[8,9,21,22,42,43,57,58,76,77,88,89,141,142,164,165,176,177]},
-"14": {"ghunnah":[2,6],"madd":[36,38,103,104,163,164],"qalqalah":[6,8],"silent":[29,31,59,61,77,79],"wasl":[66,67,96,97]},
-"15": {"ghunnah":[15,18,24,27],"idgham":[14,15],"madd":[2,4,39,41,91,92],"qalqalah":[92,93],"wasl":[13,14,30,31,50,51,60,61,73,74,84,85]},
-"16": {"ghunnah":[40,44],"idgham":[2,6],"madd":[46,47],"qalqalah":[17,19,47,48]},
-"17": {"madd":[8,9,34,35],"wasl":[20,21]},
-"18": {"ghunnah":[43,47,136,139,145,148,179,183,222,226,238,241],"idgham":[21,25,105,109,207,208],"madd":[130,133,214,215,267,268,292,293],"qalqalah":[47,49],"silent":[203,205,213,214],"wasl":[151,152,183,184,206,207,277,278,285,286]},
-"19": {"madd":[37,38],"wasl":[16,17,30,31]},
-"20": {"ghunnah":[27,30],"idgham":[7,8,26,27],"madd":[15,16,30,31],"wasl":[6,7,25,26]},
-"21": {"idgham":[7,8],"madd":[28,29],"wasl":[6,7,21,22]},
-"22": {"ghunnah":[51,54,94,97,112,116],"idgham":[74,78,107,112],"madd":[25,27,45,46,80,82,89,91,125,126],"wasl":[16,17,36,37,55,56,118,119]},
-"23": {"ghunnah":[7,10],"madd":[22,23]},
-"24": {"ghunnah":[2,5,67,70],"idgham":[39,44,50,55,57,62],"madd":[5,7,18,19,97,98],"wasl":[24,25]},
-"25": {"ghunnah":[46,50,80,84],"idgham":[4,8,103,104],"madd":[61,63,94,95,123,124,134,135],"qalqalah":[23,25,50,52],"wasl":[34,35,84,85,102,103,116,117,127,128]},
-"26": {"ghunnah":[2,5],"madd":[54,55],"silent":[32,34],"wasl":[15,16]},
-"27": {"ghunnah":[14,17,28,31,56,60,137,141],"idgham":[40,41,86,91,144,148,153,158],"madd":[46,48,53,55,76,77,84,85,107,108,173,174,195,196],"qalqalah":[66,68,196,197],"wasl":[18,19,39,40,121,122]},
-"28": {"ghunnah":[9,12,82,85,138,141],"idgham":[8,9,19,20],"madd":[42,43,63,64,68,69,74,75,129,131,162,163],"madd-lazim":[25,27],"silent":[133,135],"wasl":[7,8,18,19,33,34,97,98,120,121,142,143]},
-"29": {"ghunnah":[2,5,71,74,82,85,145,149],"idgham":[56,57,105,110,120,124,140,145],"madd":[30,31,63,64,95,96,136,137,151,152],"qalqalah":[91,93],"silent":[52,54,62,63,77,79],"wasl":[6,7,34,35,55,56]},
-"30": {"ghunnah":[44,48,59,62,72,76],"idgham":[39,44],"madd":[54,56,64,65,78,79]},
-"31": {"ghunnah":[99,102,132,136],"idgham":[71,77],"madd":[8,10,21,23,45,46,122,123,139,140],"wasl":[2,3,38,39,54,55,103,104]},
-"32": {"ghunnah":[2,5,139,143],"idgham":[85,90,108,113,120,124],"madd":[25,26,98,99,153,154,176,177,204,205],"qalqalah":[113,115],"wasl":[18,19,29,30,39,40,144,145,166,167,187,188,197,198]},
-"33": {"ghunnah":[2,5,67,71],"idgham":[14,18,74,78,85,90],"madd":[5,6,113,114],"qalqalah":[11,13,18,20]},
-"34": {"ghunnah":[49,52,66,69,87,91],"madd":[35,37,93,94],"silent":[8,10],"wasl":[11,12,29,30,54,55]},
-"35": {"ghunnah":[41,45],"idgham":[80,84],"madd":[6,8,51,52,110,111],"qalqalah":[111,112],"wasl":[26,27]},
-"36": {"ghunnah":[39,42],"idgham":[104,109],"madd":[127,128,151,152],"qalqalah":[51,53,135,137],"silent":[19,21,79,81],"wasl":[2,3]},
-"37": {"ghunnah":[85,88,112,115,146,150,173,176],"idgham":[119,124,172,173,201,202,216,221],"madd":[35,37,61,62,162,164,205,206,223,224],"qalqalah":[44,46],"silent":[190,192],"wasl":[75,76,171,172]},
-"38": {"ghunnah":[2,5,57,60,70,74],"idgham":[30,31,82,83],"madd":[16,17,36,37,39,40,62,63,88,89],"wasl":[6,7,29,30,45,46,81,82]},
-"39": {"ghunnah":[53,57,124,127],"idgham":[150,155],"madd":[28,30,81,82,102,103,172,173],"qalqalah":[147,149],"wasl":[5,6,39,40,97,98,167,168]},
-"40": {"ghunnah":[55,59,129,133,175,180,248,252],"idgham":[136,137,200,205,217,221,227,228],"madd":[24,26,142,143,145,146,163,164,173,174,231,232],"qalqalah":[45,47],"silent":[94,96],"wasl":[33,34,63,64,102,103,135,136,226,227]},
-"41": {"ghunnah":[2,5,51,55,68,72,115,118,130,133],"idgham":[24,25,109,114],"madd":[30,31,33,34,77,79,125,127,135,136],"wasl":[6,7,23,24,39,40]},
-"42": {"ghunnah":[49,53,80,83,120,123],"idgham":[68,73,142,147],"madd":[37,38,53,55,127,129],"qalqalah":[4,6],"silent":[11,13],"wasl":[16,17,106,107]},
-"43": {"ghunnah":[11,16,111,114,129,132,153,157,166,169,195,199,208,211],"idgham":[38,39,73,74,188,193],"madd":[100,101],"qalqalah":[182,184],"wasl":[18,19,37,38,62,63,72,73,135,136,172,173,214,215]},
-"44": {"ghunnah":[38,41,82,86,168,172,175,179,217,220,236,241],"idgham":[130,134,182,183],"madd":[62,63,102,104,164,165,188,189,191,192,222,223],"qalqalah":[86,88],"silent":[17,19,44,46,104,106],"wasl":[24,25,70,71,144,145,181,182,205,206]},
-"45": {"ghunnah":[27,30,80,84,135,138,137,142,170,173],"idgham":[26,27,90,94,99,103,128,133],"madd":[96,97,119,122,150,152,199,200],"madd-lazim":[84,86],"silent":[47,49],"wasl":[17,18,25,26,174,175]}
+"1": {"ghunnah":[210,213],"ikhfa":[240,244],"idghaam_ghunnah":[141,146],"lam_shamsiyyah":[66,67],"madd_2":[72,73,75,76,159,160,169,170],"madd_246":[246,247],"madd_munfasil":[129,131],"madd_muttasil":[106,108,203,205],"qalqalah":[134,136],"silent":[125,127],"hamzat_wasl":[65,66,81,82,99,100,185,186,214,215]},
+"2": {"ghunnah":[25,28],"ikhfa":[44,48],"iqlab":[106,109],"idghaam_no_ghunnah":[34,39],"lam_shamsiyyah":[24,25],"madd_2":[101,102,116,117],"madd_246":[143,144],"hamzat_wasl":[14,15,125,126,136,137]},
+"3": {"ghunnah":[15,18,165,168],"idghaam_shafawi":[104,109],"lam_shamsiyyah":[14,15,113,114],"madd_2":[73,74,145,146],"madd_246":[179,180],"madd_munfasil":[2,4,138,140],"madd_muttasil":[119,121],"silent":[30,32],"hamzat_wasl":[13,14,22,23,42,43,86,87,112,113,126,127]},
+"4": {"ikhfa":[46,50],"idghaam_ghunnah":[4,8,41,46],"madd_246":[89,90],"qalqalah":[23,25,50,52],"hamzat_wasl":[65,66,82,83]},
+"5": {"ghunnah":[15,18,24,27,62,65,106,109],"ikhfa":[47,51],"ikhfa_shafawi":[111,115],"lam_shamsiyyah":[14,15,83,84],"madd_2":[78,79],"madd_246":[130,131],"madd_munfasil":[2,4],"silent":[77,78],"hamzat_wasl":[13,14,35,36,70,71,82,83,115,116,123,124]},
+"6": {"ghunnah":[2,5,59,62],"ikhfa":[32,36],"lam_shamsiyyah":[7,8,115,116],"madd_2":[15,16,84,85,110,111],"madd_246":[121,122],"qalqalah":[68,70],"silent":[73,75,96,98],"hamzat_wasl":[6,7,36,37,114,115]},
+"7": {"ikhfa":[33,37,117,121],"idghaam_ghunnah":[41,45,108,112],"idghaam_shafawi":[96,101],"lam_shamsiyyah":[79,80],"madd_2":[83,84,88,89],"madd_246":[123,124],"qalqalah":[114,116],"silent":[17,19,63,65,75,77],"hamzat_wasl":[45,46,78,79]},
+"8": {"ghunnah":[61,64,164,167],"ikhfa":[6,10,54,59],"iqlab":[182,186],"idghaam_ghunnah":[83,87,106,110],"madd_2":[20,21,37,38,158,159],"madd_246":[199,200],"madd_muttasil":[24,26,89,91,112,114],"qalqalah":[129,131],"hamzat_wasl":[65,66,168,169]},
+"9": {"ghunnah":[151,154],"ikhfa":[55,60,91,95],"idghaam_ghunnah":[82,87],"lam_shamsiyyah":[29,30,150,151],"madd_2":[35,36,66,67,143,144],"madd_246":[156,157],"madd_munfasil":[16,18],"qalqalah":[62,64],"hamzat_wasl":[2,3,10,11,28,29,112,113,149,150]},
+"10": {"ikhfa":[2,6,185,189],"idghaam_ghunnah":[193,197],"lam_shamsiyyah":[88,89,111,112,158,159],"madd_2":[115,116,131,132],"madd_246":[226,227],"madd_muttasil":[210,212],"silent":[206,208],"hamzat_wasl":[18,19,39,40,77,78,87,88,100,101,110,111,135,136,157,158]},
+"11": {"ghunnah":[35,38,55,58,151,154,166,169,223,226],"ikhfa":[23,27,31,35,51,55,103,106,180,183],"idghaam_ghunnah":[41,46,78,83,159,164,170,174],"idghaam_shafawi":[18,23],"madd_2":[76,77,139,140,217,218,229,230],"madd_246":[253,254],"madd_munfasil":[199,201],"qalqalah":[46,48],"hamzat_wasl":[2,3,241,242]},
+"12": {"ikhfa":[41,45,49,53,58,62,99,103,105,109,124,129,161,165,228,232],"idghaam_ghunnah":[93,97,133,138],"madd_2":[31,32,69,70,75,76,238,239],"madd_246":[262,263],"madd_muttasil":[53,55],"qalqalah":[216,218],"silent":[223,225],"hamzat_wasl":[16,17,186,187]},
+"13": {"ghunnah":[23,26,44,47,126,129],"ikhfa":[128,133,198,202,227,231],"idghaam_ghunnah":[102,106,119,124],"lam_shamsiyyah":[22,23,43,44,77,78],"madd_2":[133,134,207,208],"madd_246":[235,236],"qalqalah":[106,108,188,190,231,233],"hamzat_wasl":[8,9,21,22,42,43,57,58,76,77,88,89,141,142,164,165,176,177]},
+"14": {"ikhfa":[2,6],"madd_2":[103,104],"madd_246":[163,164],"madd_muttasil":[36,38],"qalqalah":[6,8],"silent":[29,31,59,61,77,79],"hamzat_wasl":[66,67,96,97]},
+"15": {"ghunnah":[15,18],"ikhfa":[24,27],"lam_shamsiyyah":[14,15],"madd_246":[91,92],"madd_munfasil":[2,4],"madd_muttasil":[39,41],"qalqalah":[92,93],"hamzat_wasl":[13,14,30,31,50,51,60,61,73,74,84,85]},
+"16": {"ikhfa":[40,44],"idghaam_ghunnah":[2,6],"madd_246":[46,47],"qalqalah":[17,19,47,48]},
+"17": {"madd_2":[8,9],"madd_246":[34,35],"hamzat_wasl":[20,21]},
+"18": {"ghunnah":[136,139,238,241],"ikhfa":[43,47,145,148,222,226],"ikhfa_shafawi":[179,183],"idghaam_ghunnah":[21,25,105,109],"lam_shamsiyyah":[207,208],"madd_2":[214,215,267,268],"madd_246":[292,293],"madd_munfasil":[130,133],"qalqalah":[47,49],"silent":[203,205,213,214],"hamzat_wasl":[151,152,183,184,206,207,277,278,285,286]},
+"19": {"madd_246":[37,38],"hamzat_wasl":[16,17,30,31]},
+"20": {"ghunnah":[27,30],"lam_shamsiyyah":[7,8,26,27],"madd_2":[15,16],"madd_246":[30,31],"hamzat_wasl":[6,7,25,26]},
+"21": {"lam_shamsiyyah":[7,8],"madd_246":[28,29],"hamzat_wasl":[6,7,21,22]},
+"22": {"ghunnah":[51,54],"ikhfa":[94,97,112,116],"idghaam_ghunnah":[74,78,107,112],"madd_2":[45,46],"madd_246":[125,126],"madd_munfasil":[89,91],"madd_muttasil":[25,27,80,82],"hamzat_wasl":[16,17,36,37,55,56,118,119]},
+"23": {"ikhfa":[7,10],"madd_246":[22,23]},
+"24": {"ghunnah":[2,5,67,70],"idghaam_ghunnah":[39,44,50,55,57,62],"madd_2":[18,19],"madd_246":[97,98],"madd_munfasil":[5,7],"hamzat_wasl":[24,25]},
+"25": {"ikhfa":[46,50],"ikhfa_shafawi":[80,84],"idghaam_ghunnah":[4,8],"lam_shamsiyyah":[103,104],"madd_2":[94,95,123,124],"madd_246":[134,135],"madd_muttasil":[61,63],"qalqalah":[23,25,50,52],"hamzat_wasl":[34,35,84,85,102,103,116,117,127,128]},
+"26": {"ghunnah":[2,5],"madd_246":[54,55],"silent":[32,34],"hamzat_wasl":[15,16]},
+"27": {"ghunnah":[14,17],"ikhfa":[28,31,56,60],"iqlab":[137,141],"idghaam_ghunnah":[86,91,144,148,153,158],"lam_shamsiyyah":[40,41],"madd_2":[76,77,84,85,107,108,173,174],"madd_246":[195,196],"madd_muttasil":[46,48,53,55],"qalqalah":[66,68,196,197],"hamzat_wasl":[18,19,39,40,121,122]},
+"28": {"ghunnah":[9,12,82,85,138,141],"lam_shamsiyyah":[8,9,19,20],"madd_2":[42,43,63,64,68,69,74,75],"madd_246":[162,163],"madd_muttasil":[129,131],"madd_6":[25,27],"silent":[133,135],"hamzat_wasl":[7,8,18,19,33,34,97,98,120,121,142,143]},
+"29": {"ghunnah":[2,5,82,85],"ikhfa":[71,74,145,149],"idghaam_ghunnah":[105,110,120,124],"idghaam_no_ghunnah":[140,145],"lam_shamsiyyah":[56,57],"madd_2":[30,31,63,64,95,96,136,137],"madd_246":[151,152],"qalqalah":[91,93],"silent":[52,54,62,63,77,79],"hamzat_wasl":[6,7,34,35,55,56]},
+"30": {"ghunnah":[59,62],"ikhfa":[44,48,72,76],"idghaam_shafawi":[39,44],"madd_2":[64,65],"madd_246":[78,79],"madd_munfasil":[54,56]},
+"31": {"ghunnah":[99,102],"iqlab":[132,136],"idghaam_no_ghunnah":[71,77],"madd_2":[45,46,122,123],"madd_246":[139,140],"madd_munfasil":[8,10,21,23],"hamzat_wasl":[2,3,38,39,54,55,103,104]},
+"32": {"ghunnah":[2,5],"iqlab":[139,143],"idghaam_ghunnah":[120,124],"idghaam_no_ghunnah":[85,90],"idghaam_shafawi":[108,113],"madd_2":[25,26,98,99,153,154,176,177],"madd_246":[204,205],"qalqalah":[113,115],"hamzat_wasl":[18,19,29,30,39,40,144,145,166,167,187,188,197,198]},
+"33": {"ghunnah":[2,5],"ikhfa":[67,71],"idghaam_ghunnah":[14,18,74,78,85,90],"madd_2":[5,6],"madd_246":[113,114],"qalqalah":[11,13,18,20]},
+"34": {"ghunnah":[49,52,66,69],"ikhfa":[87,91],"madd_246":[93,94],"madd_munfasil":[35,37],"silent":[8,10],"hamzat_wasl":[11,12,29,30,54,55]},
+"35": {"ikhfa":[41,45],"idghaam_ghunnah":[80,84],"madd_2":[51,52],"madd_246":[110,111],"madd_munfasil":[6,8],"qalqalah":[111,112],"hamzat_wasl":[26,27]},
+"36": {"ghunnah":[39,42],"idghaam_shafawi":[104,109],"madd_2":[127,128],"madd_246":[151,152],"qalqalah":[51,53,135,137],"silent":[19,21,79,81],"hamzat_wasl":[2,3]},
+"37": {"ghunnah":[85,88,112,115,173,176],"ikhfa":[146,150],"idghaam_ghunnah":[216,221],"idghaam_shafawi":[119,124],"lam_shamsiyyah":[172,173,201,202],"madd_2":[61,62,205,206],"madd_246":[223,224],"madd_munfasil":[35,37],"madd_muttasil":[162,164],"qalqalah":[44,46],"silent":[190,192],"hamzat_wasl":[75,76,171,172]},
+"38": {"ghunnah":[2,5,57,60],"iqlab":[70,74],"lam_shamsiyyah":[30,31,82,83],"madd_2":[16,17,36,37,39,40,62,63],"madd_246":[88,89],"hamzat_wasl":[6,7,29,30,45,46,81,82]},
+"39": {"ikhfa":[53,57,124,127],"idghaam_ghunnah":[150,155],"madd_2":[81,82,102,103,172,173],"madd_muttasil":[28,30],"qalqalah":[147,149],"hamzat_wasl":[5,6,39,40,97,98,167,168]},
+"40": {"ikhfa":[55,59,129,133,175,180],"ikhfa_shafawi":[248,252],"idghaam_ghunnah":[200,205,217,221],"lam_shamsiyyah":[136,137,227,228],"madd_2":[142,143,145,146,163,164,173,174,231,232],"madd_muttasil":[24,26],"qalqalah":[45,47],"silent":[94,96],"hamzat_wasl":[33,34,63,64,102,103,135,136,226,227]},
+"41": {"ghunnah":[2,5,130,133],"ikhfa":[51,55,68,72],"iqlab":[115,118],"idghaam_ghunnah":[109,114],"lam_shamsiyyah":[24,25],"madd_2":[30,31,33,34,135,136],"madd_munfasil":[77,79,125,127],"hamzat_wasl":[6,7,23,24,39,40]},
+"42": {"ghunnah":[80,83,120,123],"ikhfa":[49,53],"idghaam_ghunnah":[142,147],"idghaam_no_ghunnah":[68,73],"madd_2":[37,38],"madd_muttasil":[53,55,127,129],"qalqalah":[4,6],"silent":[11,13],"hamzat_wasl":[16,17,106,107]},
+"43": {"ghunnah":[129,132,166,169,208,211],"ikhfa":[11,16,111,114,153,157,195,199],"idghaam_ghunnah":[188,193],"lam_shamsiyyah":[38,39,73,74],"madd_2":[100,101],"qalqalah":[182,184],"hamzat_wasl":[18,19,37,38,62,63,72,73,135,136,172,173,214,215]},
+"44": {"ghunnah":[217,220],"ikhfa":[38,41,82,86,168,172,175,179,236,241],"idghaam_ghunnah":[130,134],"lam_shamsiyyah":[182,183],"madd_2":[62,63,164,165,188,189,191,192,222,223],"madd_munfasil":[102,104],"qalqalah":[86,88],"silent":[17,19,44,46,104,106],"hamzat_wasl":[24,25,70,71,144,145,181,182,205,206]},
+"45": {"ghunnah":[27,30,135,138,170,173],"ikhfa":[80,84,137,142],"idghaam_ghunnah":[90,94,99,103,128,133],"lam_shamsiyyah":[26,27],"madd_2":[96,97,199,200],"madd_munfasil":[119,122],"madd_muttasil":[150,152],"madd_6":[84,86],"silent":[47,49],"hamzat_wasl":[17,18,25,26,174,175]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/36.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/36.json
index a8429ea..d28759d 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/36.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/36.json
@@ -1,85 +1,85 @@
{
-"1": {"madd-lazim":[40,42]},
-"2": {"madd":[22,23],"wasl":[2,3,15,16]},
-"3": {"ghunnah":[2,5],"madd":[26,27],"wasl":[15,16]},
-"4": {"idgham":[13,18],"madd":[11,12,24,25]},
-"5": {"ghunnah":[2,5],"idgham":[21,22],"madd":[27,28],"wasl":[9,10,20,21]},
-"6": {"ghunnah":[4,7,26,29],"idgham":[15,21],"madd":[21,23,37,39,55,56,60,61]},
-"7": {"madd":[27,30,63,64],"qalqalah":[4,6],"wasl":[13,14]},
-"8": {"ghunnah":[2,5,44,49],"idgham":[77,82],"madd":[19,21,28,29,42,43,88,89],"qalqalah":[82,84],"wasl":[60,61]},
-"9": {"ghunnah":[15,18,65,70],"idgham":[40,45],"madd":[80,81,105,106],"qalqalah":[99,101]},
-"10": {"ghunnah":[26,29,50,53],"madd":[6,8,72,73]},
-"11": {"ghunnah":[2,5,11,14,107,111],"idgham":[32,33,51,52,98,102],"madd":[59,60,113,114],"qalqalah":[104,106],"wasl":[22,23,31,32,50,51,65,66]},
-"12": {"ghunnah":[2,5],"idgham":[114,119],"madd":[66,67,99,100,105,107,121,122],"silent":[56,58],"wasl":[21,22]},
-"13": {"idgham":[14,19],"madd":[31,32,54,56,73,74],"qalqalah":[7,9],"wasl":[2,3,35,36,62,63]},
-"14": {"ghunnah":[76,80,92,95],"idgham":[106,111],"madd":[15,17,85,87,95,97,117,118],"silent":[87,89],"wasl":[29,30]},
-"15": {"ghunnah":[16,19,56,59,77,81,93,96],"idgham":[34,39,63,64],"madd":[11,13,51,53,71,72,114,115],"silent":[6,8],"wasl":[62,63]},
-"16": {"ghunnah":[29,32],"madd":[32,34,56,57],"silent":[6,8]},
-"17": {"madd":[14,16,31,32,42,43],"wasl":[24,25,35,36]},
-"18": {"ghunnah":[12,15,51,54,70,73,89,92,99,102],"idgham":[41,46,94,99],"madd":[5,7,116,117],"silent":[7,9,57,59]},
-"19": {"ghunnah":[35,39,46,50,55,58],"idgham":[19,24,66,71],"madd":[11,13,77,78],"silent":[6,8]},
-"20": {"idgham":[40,44],"madd":[4,6,59,60,90,91],"qalqalah":[16,18],"silent":[76,78],"wasl":[22,23,67,68,79,80]},
-"21": {"idgham":[14,19,40,45,47,52],"madd":[58,59],"qalqalah":[37,39],"silent":[9,11]},
-"22": {"madd":[13,15,62,63],"wasl":[25,26]},
-"23": {"ghunnah":[14,18,84,87,120,123],"idgham":[38,42,50,51,68,73,109,114],"madd":[23,25,58,59,93,94,125,126],"qalqalah":[44,46],"wasl":[49,50]},
-"24": {"ghunnah":[2,5],"idgham":[11,17,27,32],"madd":[5,7,25,26,34,35]},
-"25": {"ghunnah":[2,5,13,16],"madd":[5,7,38,39],"wasl":[31,32]},
-"26": {"ghunnah":[19,22],"madd":[33,34,57,58],"qalqalah":[7,9],"wasl":[6,7,14,15]},
-"27": {"madd":[52,53],"wasl":[41,42]},
-"28": {"ghunnah":[9,12,38,41,52,56,56,59,86,89,93,96],"idgham":[58,63,67,68],"madd":[4,6,33,34,48,49,73,75,98,99],"wasl":[66,67]},
-"29": {"ghunnah":[2,6,36,40],"idgham":[26,30],"madd":[30,31,53,54,58,59]},
-"30": {"idgham":[42,47,47,52],"madd":[2,3,78,79,92,93],"silent":[71,73],"wasl":[18,19]},
-"31": {"ghunnah":[62,65],"idgham":[41,46],"madd":[93,94],"qalqalah":[35,37],"silent":[13,15],"wasl":[49,50]},
-"32": {"ghunnah":[4,8,15,18],"idgham":[10,15,26,31],"madd":[47,48]},
-"33": {"ghunnah":[81,86],"idgham":[8,13],"madd":[50,51,101,102],"qalqalah":[63,65],"wasl":[18,19,28,29]},
-"34": {"ghunnah":[21,24],"idgham":[26,31,31,36,40,44,52,56],"madd":[24,25,50,51,86,87],"wasl":[79,80]},
-"35": {"ghunnah":[16,20],"madd":[26,27,73,74],"silent":[11,13]},
-"36": {"ghunnah":[49,52,57,59,82,85,96,99],"madd":[6,7,34,35,113,114],"qalqalah":[2,4],"wasl":[10,11,25,26,63,64]},
-"37": {"ghunnah":[45,48],"idgham":[8,13,44,45,64,69],"madd":[75,76],"wasl":[18,19,43,44]},
-"38": {"idgham":[3,4,32,37],"madd":[43,44,77,78],"qalqalah":[14,16,51,53],"wasl":[2,3,59,60,70,71]},
-"39": {"madd":[21,22,71,72],"wasl":[2,3,51,52,64,65]},
-"40": {"ghunnah":[17,19,33,37,79,82,94,98],"idgham":[5,6,78,79,105,109],"madd":[28,30,115,116],"qalqalah":[37,39],"wasl":[4,5,44,45,60,61,77,78]},
-"41": {"ghunnah":[20,23],"idgham":[8,13],"madd":[73,74],"wasl":[54,55,64,65]},
-"42": {"idgham":[16,21,21,26],"madd":[32,33,46,47],"qalqalah":[6,8]},
-"43": {"ghunnah":[61,64],"idgham":[4,9],"madd":[66,67],"qalqalah":[20,22]},
-"44": {"ghunnah":[19,22],"idgham":[14,19],"madd":[30,31,44,45]},
-"45": {"madd":[91,92],"silent":[28,30],"wasl":[21,22]},
-"46": {"idgham":[15,20,29,34],"madd":[42,43,88,89],"silent":[69,71]},
-"47": {"ghunnah":[23,26,34,37,165,168],"idgham":[120,125,188,193],"madd":[102,104,132,134,155,157,186,187,195,196],"qalqalah":[111,113,147,149],"silent":[29,31,81,83,104,106],"wasl":[50,51,64,65,137,138]},
-"48": {"ghunnah":[39,43,43,46],"madd":[22,23,51,52,56,57],"wasl":[27,28]},
-"49": {"ghunnah":[6,9,39,43],"idgham":[29,33],"madd":[33,34,70,71]},
-"50": {"idgham":[30,34],"madd":[36,38,43,46,66,67]},
-"51": {"ghunnah":[72,75],"idgham":[14,15,32,37],"madd":[77,78],"qalqalah":[45,47],"wasl":[13,14,40,41]},
-"52": {"ghunnah":[25,28],"idgham":[39,44,73,74],"madd":[11,12,56,57,81,82,105,106],"silent":[6,8],"wasl":[72,73,94,95]},
-"53": {"ghunnah":[2,6,36,40],"idgham":[26,30,57,62],"madd":[30,31,78,79]},
-"54": {"ghunnah":[30,34,71,74],"idgham":[38,43],"madd":[85,86],"qalqalah":[49,51],"wasl":[2,3]},
-"55": {"ghunnah":[2,5,21,24,46,50],"madd":[12,13,50,51,55,56],"wasl":[16,17,27,28]},
-"56": {"madd":[13,14,29,30,46,48,63,64],"wasl":[39,40]},
-"57": {"idgham":[22,26,30,35],"madd":[16,17,44,45]},
-"58": {"ghunnah":[6,10],"idgham":[13,19,19,24,26,31],"madd":[4,5,33,34]},
-"59": {"madd":[7,8,44,45],"qalqalah":[38,40],"silent":[11,13],"wasl":[2,3,14,15,33,34]},
-"60": {"ghunnah":[81,84],"idgham":[47,52,67,68,101,106],"madd":[29,30,34,36,75,76,86,87,108,109],"qalqalah":[13,15],"silent":[63,65],"wasl":[66,67]},
-"61": {"idgham":[32,37],"madd":[21,22,30,31,43,44],"wasl":[7,8]},
-"62": {"ghunnah":[19,22,31,36],"madd":[71,72],"qalqalah":[6,8],"silent":[60,62]},
-"63": {"ghunnah":[13,16,29,32],"madd":[2,3,7,8,42,43],"wasl":[19,20]},
-"64": {"ghunnah":[29,32],"madd":[43,44],"wasl":[11,12]},
-"65": {"ghunnah":[90,94],"madd":[23,26,33,34,54,56,115,116],"silent":[104,106]},
-"66": {"ghunnah":[79,82],"idgham":[65,66],"madd":[11,13,32,35,71,72,93,94],"qalqalah":[87,89],"silent":[61,63],"wasl":[51,52,64,65]},
-"67": {"idgham":[79,84],"madd":[11,13,26,27,66,67,96,97],"silent":[70,72],"wasl":[59,60]},
-"68": {"ghunnah":[11,14],"idgham":[4,9],"madd":[61,62],"wasl":[35,36]},
-"69": {"ghunnah":[38,40],"idgham":[20,21,74,78,86,91],"madd":[15,16,49,51,93,94],"wasl":[19,20]},
-"70": {"ghunnah":[5,8,13,17],"idgham":[25,30],"madd":[59,60,64,65],"wasl":[38,39,54,55]},
-"71": {"ghunnah":[20,23,44,47,78,83],"idgham":[39,44],"madd":[67,69,76,77,96,97,101,102],"qalqalah":[29,31],"silent":[15,17]},
-"72": {"madd":[11,12,63,64]},
-"73": {"madd":[20,21,54,55]},
-"74": {"ghunnah":[16,20,57,60],"idgham":[40,45],"madd":[62,63],"silent":[11,13],"wasl":[2,3,24,25]},
-"75": {"ghunnah":[46,49],"idgham":[48,53],"madd":[59,60]},
-"76": {"ghunnah":[12,15,29,32],"madd":[72,73]},
-"77": {"ghunnah":[19,22,28,31,57,61],"idgham":[47,52,78,83],"madd":[22,23,41,42,85,86],"qalqalah":[37,39,52,54],"wasl":[14,15]},
-"78": {"idgham":[20,25,50,54],"madd":[40,41,66,67,81,82],"wasl":[59,60]},
-"79": {"ghunnah":[27,30],"idgham":[51,55],"madd":[22,24,34,36,79,80],"wasl":[16,17]},
-"80": {"ghunnah":[53,58,67,70],"idgham":[19,24,28,29,70,75],"madd":[62,64,87,88],"wasl":[27,28,37,38]},
-"81": {"ghunnah":[91,95],"idgham":[27,28,72,76],"madd":[33,34,36,37,56,57,66,69,115,116,126,127],"wasl":[11,12,26,27,42,43,107,108,119,120]},
-"82": {"ghunnah":[2,5,65,69],"idgham":[47,51],"madd":[7,9,18,20,25,27,61,62,73,74]},
-"83": {"idgham":[51,55],"madd":[8,9,28,29,72,73],"qalqalah":[4,6],"wasl":[12,13]}
+"1": {"madd_6":[40,42]},
+"2": {"madd_246":[22,23],"hamzat_wasl":[2,3,15,16]},
+"3": {"ghunnah":[2,5],"madd_246":[26,27],"hamzat_wasl":[15,16]},
+"4": {"idghaam_ghunnah":[13,18],"madd_2":[11,12],"madd_246":[24,25]},
+"5": {"ikhfa":[2,5],"lam_shamsiyyah":[21,22],"madd_246":[27,28],"hamzat_wasl":[9,10,20,21]},
+"6": {"ikhfa":[4,7,26,29],"idghaam_ghunnah":[15,21],"madd_2":[55,56],"madd_246":[60,61],"madd_munfasil":[21,23],"madd_muttasil":[37,39]},
+"7": {"madd_246":[63,64],"madd_munfasil":[27,30],"qalqalah":[4,6],"hamzat_wasl":[13,14]},
+"8": {"ghunnah":[2,5],"ikhfa":[44,49],"idghaam_shafawi":[77,82],"madd_2":[28,29,42,43],"madd_246":[88,89],"madd_munfasil":[19,21],"qalqalah":[82,84],"hamzat_wasl":[60,61]},
+"9": {"ikhfa":[65,70],"iqlab":[15,18],"idghaam_ghunnah":[40,45],"madd_2":[80,81],"madd_246":[105,106],"qalqalah":[99,101]},
+"10": {"ikhfa":[26,29,50,53],"madd_246":[72,73],"madd_muttasil":[6,8]},
+"11": {"ghunnah":[2,5],"ikhfa":[11,14,107,111],"idghaam_ghunnah":[98,102],"lam_shamsiyyah":[32,33,51,52],"madd_2":[59,60],"madd_246":[113,114],"qalqalah":[104,106],"hamzat_wasl":[22,23,31,32,50,51,65,66]},
+"12": {"ghunnah":[2,5],"idghaam_ghunnah":[114,119],"madd_2":[66,67,99,100],"madd_246":[121,122],"madd_munfasil":[105,107],"silent":[56,58],"hamzat_wasl":[21,22]},
+"13": {"idghaam_shafawi":[14,19],"madd_2":[31,32],"madd_246":[73,74],"madd_muttasil":[54,56],"qalqalah":[7,9],"hamzat_wasl":[2,3,35,36,62,63]},
+"14": {"ghunnah":[92,95],"ikhfa":[76,80],"idghaam_shafawi":[106,111],"madd_246":[117,118],"madd_munfasil":[15,17,85,87,95,97],"silent":[87,89],"hamzat_wasl":[29,30]},
+"15": {"ikhfa":[16,19,56,59,77,81,93,96],"idghaam_ghunnah":[34,39],"lam_shamsiyyah":[63,64],"madd_2":[71,72],"madd_246":[114,115],"madd_munfasil":[11,13,51,53],"silent":[6,8],"hamzat_wasl":[62,63]},
+"16": {"ghunnah":[29,32],"madd_246":[56,57],"madd_munfasil":[32,34],"silent":[6,8]},
+"17": {"madd_2":[31,32],"madd_246":[42,43],"madd_munfasil":[14,16],"hamzat_wasl":[24,25,35,36]},
+"18": {"ghunnah":[12,15,70,73,89,92,99,102],"ikhfa":[51,54],"idghaam_no_ghunnah":[41,46],"idghaam_shafawi":[94,99],"madd_246":[116,117],"madd_munfasil":[5,7],"silent":[7,9,57,59]},
+"19": {"ikhfa":[35,39,55,58],"ikhfa_shafawi":[46,50],"idghaam_ghunnah":[66,71],"idghaam_shafawi":[19,24],"madd_246":[77,78],"madd_muttasil":[11,13],"silent":[6,8]},
+"20": {"idghaam_ghunnah":[40,44],"madd_2":[59,60],"madd_246":[90,91],"madd_muttasil":[4,6],"qalqalah":[16,18],"silent":[76,78],"hamzat_wasl":[22,23,67,68,79,80]},
+"21": {"idghaam_ghunnah":[40,45],"idghaam_no_ghunnah":[14,19],"idghaam_shafawi":[47,52],"madd_246":[58,59],"qalqalah":[37,39],"silent":[9,11]},
+"22": {"madd_246":[62,63],"madd_munfasil":[13,15],"hamzat_wasl":[25,26]},
+"23": {"ghunnah":[84,87],"ikhfa":[14,18,120,123],"idghaam_ghunnah":[38,42,109,114],"idghaam_no_ghunnah":[68,73],"lam_shamsiyyah":[50,51],"madd_2":[58,59,93,94],"madd_246":[125,126],"madd_munfasil":[23,25],"qalqalah":[44,46],"hamzat_wasl":[49,50]},
+"24": {"ghunnah":[2,5],"idghaam_ghunnah":[27,32],"idghaam_no_ghunnah":[11,17],"madd_2":[25,26],"madd_246":[34,35],"madd_munfasil":[5,7]},
+"25": {"ghunnah":[2,5],"ikhfa":[13,16],"madd_246":[38,39],"madd_munfasil":[5,7],"hamzat_wasl":[31,32]},
+"26": {"ghunnah":[19,22],"madd_2":[33,34],"madd_246":[57,58],"qalqalah":[7,9],"hamzat_wasl":[6,7,14,15]},
+"27": {"madd_246":[52,53],"hamzat_wasl":[41,42]},
+"28": {"ghunnah":[86,89],"ikhfa":[9,12,52,56,56,59,93,96],"iqlab":[38,41],"idghaam_ghunnah":[58,63],"lam_shamsiyyah":[67,68],"madd_2":[33,34,48,49],"madd_246":[98,99],"madd_munfasil":[4,6],"madd_muttasil":[73,75],"hamzat_wasl":[66,67]},
+"29": {"ikhfa":[2,6,36,40],"idghaam_ghunnah":[26,30],"madd_2":[30,31,53,54],"madd_246":[58,59]},
+"30": {"idghaam_no_ghunnah":[47,52],"idghaam_shafawi":[42,47],"madd_2":[2,3,78,79],"madd_246":[92,93],"silent":[71,73],"hamzat_wasl":[18,19]},
+"31": {"ghunnah":[62,65],"idghaam_shafawi":[41,46],"madd_246":[93,94],"qalqalah":[35,37],"silent":[13,15],"hamzat_wasl":[49,50]},
+"32": {"ghunnah":[15,18],"ikhfa":[4,8],"idghaam_no_ghunnah":[10,15,26,31],"madd_246":[47,48]},
+"33": {"ikhfa":[81,86],"idghaam_no_ghunnah":[8,13],"madd_2":[50,51],"madd_246":[101,102],"qalqalah":[63,65],"hamzat_wasl":[18,19,28,29]},
+"34": {"ghunnah":[21,24],"idghaam_ghunnah":[26,31,31,36,40,44,52,56],"madd_2":[24,25,50,51],"madd_246":[86,87],"hamzat_wasl":[79,80]},
+"35": {"ikhfa":[16,20],"madd_2":[26,27],"madd_246":[73,74],"silent":[11,13]},
+"36": {"ghunnah":[49,52,96,99],"ikhfa":[82,85],"iqlab":[57,59],"madd_2":[6,7,34,35],"madd_246":[113,114],"qalqalah":[2,4],"hamzat_wasl":[10,11,25,26,63,64]},
+"37": {"ghunnah":[45,48],"idghaam_no_ghunnah":[8,13],"idghaam_shafawi":[64,69],"lam_shamsiyyah":[44,45],"madd_246":[75,76],"hamzat_wasl":[18,19,43,44]},
+"38": {"idghaam_no_ghunnah":[32,37],"lam_shamsiyyah":[3,4],"madd_2":[43,44],"madd_246":[77,78],"qalqalah":[14,16,51,53],"hamzat_wasl":[2,3,59,60,70,71]},
+"39": {"madd_2":[21,22],"madd_246":[71,72],"hamzat_wasl":[2,3,51,52,64,65]},
+"40": {"ghunnah":[79,82],"ikhfa":[33,37,94,98],"iqlab":[17,19],"idghaam_ghunnah":[105,109],"lam_shamsiyyah":[5,6,78,79],"madd_246":[115,116],"madd_munfasil":[28,30],"qalqalah":[37,39],"hamzat_wasl":[4,5,44,45,60,61,77,78]},
+"41": {"ghunnah":[20,23],"idghaam_no_ghunnah":[8,13],"madd_246":[73,74],"hamzat_wasl":[54,55,64,65]},
+"42": {"idghaam_ghunnah":[21,26],"idghaam_shafawi":[16,21],"madd_2":[32,33],"madd_246":[46,47],"qalqalah":[6,8]},
+"43": {"ikhfa":[61,64],"idghaam_ghunnah":[4,9],"madd_246":[66,67],"qalqalah":[20,22]},
+"44": {"ghunnah":[19,22],"idghaam_ghunnah":[14,19],"madd_2":[30,31],"madd_246":[44,45]},
+"45": {"madd_246":[91,92],"silent":[28,30],"hamzat_wasl":[21,22]},
+"46": {"idghaam_ghunnah":[29,34],"idghaam_shafawi":[15,20],"madd_2":[42,43],"madd_246":[88,89],"silent":[69,71]},
+"47": {"ghunnah":[34,37],"ikhfa":[23,26,165,168],"idghaam_ghunnah":[188,193],"idghaam_no_ghunnah":[120,125],"madd_2":[186,187],"madd_246":[195,196],"madd_munfasil":[102,104,155,157],"madd_muttasil":[132,134],"qalqalah":[111,113,147,149],"silent":[29,31,81,83,104,106],"hamzat_wasl":[50,51,64,65,137,138]},
+"48": {"ikhfa":[39,43,43,46],"madd_2":[22,23,51,52],"madd_246":[56,57],"hamzat_wasl":[27,28]},
+"49": {"ikhfa":[6,9,39,43],"idghaam_ghunnah":[29,33],"madd_2":[33,34],"madd_246":[70,71]},
+"50": {"idghaam_ghunnah":[30,34],"madd_246":[66,67],"madd_munfasil":[36,38,43,46]},
+"51": {"ikhfa":[72,75],"idghaam_shafawi":[32,37],"lam_shamsiyyah":[14,15],"madd_246":[77,78],"qalqalah":[45,47],"hamzat_wasl":[13,14,40,41]},
+"52": {"iqlab":[25,28],"idghaam_ghunnah":[39,44],"lam_shamsiyyah":[73,74],"madd_2":[11,12,56,57,81,82],"madd_246":[105,106],"silent":[6,8],"hamzat_wasl":[72,73,94,95]},
+"53": {"ikhfa":[2,6,36,40],"idghaam_ghunnah":[26,30],"idghaam_no_ghunnah":[57,62],"madd_2":[30,31],"madd_246":[78,79]},
+"54": {"ikhfa":[30,34,71,74],"idghaam_ghunnah":[38,43],"madd_246":[85,86],"qalqalah":[49,51],"hamzat_wasl":[2,3]},
+"55": {"ghunnah":[2,5,21,24],"ikhfa":[46,50],"madd_2":[12,13,50,51],"madd_246":[55,56],"hamzat_wasl":[16,17,27,28]},
+"56": {"madd_2":[13,14,29,30],"madd_246":[63,64],"madd_muttasil":[46,48],"hamzat_wasl":[39,40]},
+"57": {"idghaam_ghunnah":[22,26],"idghaam_shafawi":[30,35],"madd_2":[16,17],"madd_246":[44,45]},
+"58": {"ikhfa":[6,10],"idghaam_ghunnah":[13,19],"idghaam_no_ghunnah":[19,24,26,31],"madd_2":[4,5],"madd_246":[33,34]},
+"59": {"madd_2":[7,8],"madd_246":[44,45],"qalqalah":[38,40],"silent":[11,13],"hamzat_wasl":[2,3,14,15,33,34]},
+"60": {"ghunnah":[81,84],"idghaam_ghunnah":[101,106],"idghaam_no_ghunnah":[47,52],"lam_shamsiyyah":[67,68],"madd_2":[29,30,75,76,86,87],"madd_246":[108,109],"madd_munfasil":[34,36],"qalqalah":[13,15],"silent":[63,65],"hamzat_wasl":[66,67]},
+"61": {"idghaam_ghunnah":[32,37],"madd_2":[21,22,30,31],"madd_246":[43,44],"hamzat_wasl":[7,8]},
+"62": {"ikhfa":[19,22,31,36],"madd_246":[71,72],"qalqalah":[6,8],"silent":[60,62]},
+"63": {"ghunnah":[13,16],"ikhfa":[29,32],"madd_2":[2,3,7,8],"madd_246":[42,43],"hamzat_wasl":[19,20]},
+"64": {"ikhfa":[29,32],"madd_246":[43,44],"hamzat_wasl":[11,12]},
+"65": {"ikhfa_shafawi":[90,94],"madd_2":[33,34],"madd_246":[115,116],"madd_munfasil":[23,26,54,56],"silent":[104,106]},
+"66": {"ghunnah":[79,82],"lam_shamsiyyah":[65,66],"madd_2":[71,72],"madd_246":[93,94],"madd_munfasil":[32,35],"madd_muttasil":[11,13],"qalqalah":[87,89],"silent":[61,63],"hamzat_wasl":[51,52,64,65]},
+"67": {"idghaam_ghunnah":[79,84],"madd_2":[26,27,66,67],"madd_246":[96,97],"madd_muttasil":[11,13],"silent":[70,72],"hamzat_wasl":[59,60]},
+"68": {"ghunnah":[11,14],"idghaam_ghunnah":[4,9],"madd_246":[61,62],"hamzat_wasl":[35,36]},
+"69": {"iqlab":[38,40],"idghaam_ghunnah":[74,78,86,91],"lam_shamsiyyah":[20,21],"madd_2":[15,16],"madd_246":[93,94],"madd_munfasil":[49,51],"hamzat_wasl":[19,20]},
+"70": {"ikhfa":[5,8,13,17],"idghaam_ghunnah":[25,30],"madd_2":[59,60],"madd_246":[64,65],"hamzat_wasl":[38,39,54,55]},
+"71": {"ghunnah":[20,23,44,47],"ikhfa":[78,83],"idghaam_shafawi":[39,44],"madd_2":[76,77,96,97],"madd_246":[101,102],"madd_munfasil":[67,69],"qalqalah":[29,31],"silent":[15,17]},
+"72": {"madd_2":[11,12],"madd_246":[63,64]},
+"73": {"madd_2":[20,21],"madd_246":[54,55]},
+"74": {"ikhfa":[16,20,57,60],"idghaam_no_ghunnah":[40,45],"madd_246":[62,63],"silent":[11,13],"hamzat_wasl":[2,3,24,25]},
+"75": {"ikhfa":[46,49],"idghaam_ghunnah":[48,53],"madd_246":[59,60]},
+"76": {"ghunnah":[29,32],"ikhfa":[12,15],"madd_246":[72,73]},
+"77": {"ghunnah":[28,31],"ikhfa":[19,22,57,61],"idghaam_ghunnah":[47,52,78,83],"madd_2":[22,23,41,42],"madd_246":[85,86],"qalqalah":[37,39,52,54],"hamzat_wasl":[14,15]},
+"78": {"idghaam_ghunnah":[20,25,50,54],"madd_2":[40,41,66,67],"madd_246":[81,82],"hamzat_wasl":[59,60]},
+"79": {"ikhfa":[27,30],"idghaam_ghunnah":[51,55],"madd_246":[79,80],"madd_munfasil":[22,24,34,36],"hamzat_wasl":[16,17]},
+"80": {"ikhfa":[53,58,67,70],"idghaam_shafawi":[19,24,70,75],"lam_shamsiyyah":[28,29],"madd_246":[87,88],"madd_munfasil":[62,64],"hamzat_wasl":[27,28,37,38]},
+"81": {"ikhfa_shafawi":[91,95],"idghaam_ghunnah":[72,76],"lam_shamsiyyah":[27,28],"madd_2":[33,34,36,37,56,57,115,116],"madd_246":[126,127],"madd_munfasil":[66,69],"hamzat_wasl":[11,12,26,27,42,43,107,108,119,120]},
+"82": {"ghunnah":[2,5],"ikhfa":[65,69],"idghaam_ghunnah":[47,51],"madd_2":[61,62],"madd_246":[73,74],"madd_munfasil":[7,9,18,20,25,27]},
+"83": {"idghaam_ghunnah":[51,55],"madd_2":[8,9,28,29],"madd_246":[72,73],"qalqalah":[4,6],"hamzat_wasl":[12,13]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/37.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/37.json
index 07fe7d9..3fc8753 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/37.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/37.json
@@ -1,184 +1,184 @@
{
-"1": {"idgham":[42,43],"madd":[51,52],"madd-lazim":[46,48],"wasl":[41,42]},
-"2": {"idgham":[3,4],"madd":[7,8,12,13],"qalqalah":[18,20],"wasl":[2,3]},
-"3": {"idgham":[3,4],"madd":[7,8,12,13],"wasl":[2,3]},
-"4": {"ghunnah":[2,5],"madd":[10,11,22,23],"qalqalah":[25,26]},
-"5": {"idgham":[8,9],"madd":[14,15,17,18,66,67],"qalqalah":[69,70],"wasl":[7,8,23,24,59,60]},
-"6": {"ghunnah":[2,5,12,15],"idgham":[18,19,30,31],"madd":[24,26],"qalqalah":[60,61],"wasl":[17,18,29,30,50,51]},
-"7": {"ghunnah":[13,17],"idgham":[7,13,29,34],"madd":[27,28],"qalqalah":[37,38]},
-"8": {"ghunnah":[10,13,63,67],"qalqalah":[51,53,76,77],"wasl":[25,26,35,36]},
-"9": {"idgham":[6,11,24,28],"qalqalah":[31,32]},
-"10": {"ghunnah":[51,55],"madd":[43,44],"qalqalah":[24,26,58,59],"wasl":[19,20]},
-"11": {"ghunnah":[62,65,83,87],"idgham":[41,46,78,83,89,94],"madd":[57,59,75,76],"qalqalah":[53,55,71,73,97,98],"wasl":[2,3]},
-"12": {"madd":[24,25],"qalqalah":[9,11]},
-"13": {"madd":[31,32],"silent":[16,18]},
-"14": {"idgham":[23,27],"madd":[37,38],"silent":[14,16]},
-"15": {"idgham":[37,42],"madd":[7,9,19,20,22,24,44,45],"silent":[9,11]},
-"16": {"ghunnah":[20,23,49,52],"idgham":[31,36],"madd":[40,41,65,66],"qalqalah":[58,60]},
-"17": {"madd":[9,11,27,28],"wasl":[17,18]},
-"18": {"ghunnah":[16,19],"madd":[24,25,29,30]},
-"19": {"ghunnah":[4,7,33,37,50,53],"idgham":[23,27],"madd":[27,28,55,56],"qalqalah":[18,20]},
-"20": {"idgham":[39,40],"madd":[13,14,26,27,43,44],"silent":[8,10],"wasl":[38,39]},
-"21": {"ghunnah":[34,37,37,41],"madd":[2,3,43,44,54,55],"wasl":[14,15,24,25]},
-"22": {"madd":[39,40,70,71],"silent":[8,10,28,30,59,61],"wasl":[11,12]},
-"23": {"ghunnah":[2,6],"madd":[42,43,53,54],"wasl":[10,11,20,21,46,47]},
-"24": {"ghunnah":[14,17],"idgham":[19,24],"madd":[32,33]},
-"25": {"madd":[24,25]},
-"26": {"madd":[32,33],"wasl":[10,11]},
-"27": {"idgham":[34,38],"madd":[42,44,48,49],"qalqalah":[4,6]},
-"28": {"ghunnah":[12,15,22,25],"madd":[5,7,53,54],"silent":[7,9],"wasl":[46,47]},
-"29": {"madd":[38,39],"silent":[6,8,27,29]},
-"30": {"ghunnah":[31,35,41,45,51,54,62,67],"idgham":[26,31],"madd":[39,40,67,68,70,71]},
-"31": {"ghunnah":[37,40],"madd":[32,34,46,48,52,53]},
-"32": {"ghunnah":[20,23,27,30],"madd":[12,13,34,35,37,38]},
-"33": {"ghunnah":[4,7,21,25],"madd":[48,49],"wasl":[27,28]},
-"34": {"ghunnah":[2,5],"madd":[11,12,39,40],"qalqalah":[33,35],"wasl":[28,29]},
-"35": {"ghunnah":[2,5],"madd":[15,17,41,43,48,49,79,80],"silent":[17,19],"wasl":[59,60]},
-"36": {"ghunnah":[17,20],"idgham":[57,62],"madd":[31,33,66,67],"qalqalah":[62,64],"silent":[33,35]},
-"37": {"madd":[7,9,44,45],"wasl":[14,15,33,34]},
-"38": {"ghunnah":[2,5],"madd":[14,16,42,43],"silent":[21,23],"wasl":[24,25,35,36]},
-"39": {"ghunnah":[30,33],"madd":[44,45],"qalqalah":[8,10]},
-"40": {"madd":[34,35],"wasl":[15,16,23,24]},
-"41": {"idgham":[25,30],"madd":[6,8,34,35],"silent":[2,4]},
-"42": {"idgham":[14,19],"madd":[4,5,25,26]},
-"43": {"ghunnah":[6,9,15,18],"idgham":[14,15],"madd":[9,10,20,21],"wasl":[13,14]},
-"44": {"idgham":[12,17],"madd":[21,22,26,27]},
-"45": {"ghunnah":[16,20],"idgham":[25,30,30,35],"madd":[37,38]},
-"46": {"idgham":[17,22,22,23],"madd":[6,8,26,27,31,32]},
-"47": {"ghunnah":[39,42],"idgham":[16,20],"madd":[44,45]},
-"48": {"ghunnah":[4,7],"idgham":[24,25],"madd":[14,15,19,20,35,36],"wasl":[23,24]},
-"49": {"ghunnah":[4,7,9,12],"idgham":[18,23],"madd":[27,28]},
-"50": {"idgham":[34,38],"madd":[42,44,48,49],"qalqalah":[4,6]},
-"51": {"ghunnah":[27,30],"idgham":[13,18],"madd":[8,10,46,47]},
-"52": {"ghunnah":[12,15],"madd":[37,38],"wasl":[25,26]},
-"53": {"ghunnah":[20,23,49,52],"idgham":[31,36],"madd":[40,41,63,64]},
-"54": {"ghunnah":[13,16],"idgham":[16,21],"madd":[28,29]},
-"55": {"madd":[29,31,41,42],"wasl":[2,3,34,35]},
-"56": {"ghunnah":[18,22],"idgham":[22,23],"madd":[35,36],"wasl":[8,9]},
-"57": {"ghunnah":[30,33],"madd":[50,51],"wasl":[39,40]},
-"58": {"madd":[24,25]},
-"59": {"madd":[54,55],"wasl":[19,20]},
-"60": {"ghunnah":[2,5],"madd":[8,9,37,38],"wasl":[20,21,30,31]},
-"61": {"madd":[11,12,34,35,39,40],"wasl":[29,30]},
-"62": {"idgham":[15,20,41,42],"madd":[4,5,48,49],"wasl":[40,41]},
-"63": {"ghunnah":[2,5],"idgham":[27,32,32,33],"madd":[15,16,36,37,41,42]},
-"64": {"ghunnah":[2,5,16,20],"madd":[29,31,46,47],"wasl":[39,40]},
-"65": {"ghunnah":[14,17],"idgham":[30,31],"madd":[19,20,36,37,39,40],"wasl":[29,30]},
-"66": {"ghunnah":[4,7],"madd":[62,63],"wasl":[55,56]},
-"67": {"ghunnah":[2,5,8,11],"idgham":[36,42],"madd":[49,50]},
-"68": {"ghunnah":[2,5,8,11],"madd":[40,41],"wasl":[33,34]},
-"69": {"ghunnah":[2,5],"madd":[26,28,42,43],"madd-lazim":[37,39],"silent":[18,20]},
-"70": {"madd":[11,14,20,21,36,37]},
-"71": {"madd":[45,46],"qalqalah":[6,8,17,19],"wasl":[35,36]},
-"72": {"ghunnah":[31,34],"idgham":[26,31],"madd":[36,37],"qalqalah":[6,8]},
-"73": {"ghunnah":[3,6,37,40],"madd":[24,25,42,43],"wasl":[2,3,32,33]},
-"74": {"madd":[34,35],"wasl":[15,16,23,24]},
-"75": {"ghunnah":[24,28],"madd":[15,16,47,48],"qalqalah":[6,8],"wasl":[37,38]},
-"76": {"madd":[11,12,25,26,49,50],"wasl":[32,33,42,43]},
-"77": {"madd":[24,25,39,40],"wasl":[31,32]},
-"78": {"madd":[35,36],"wasl":[25,26]},
-"79": {"ghunnah":[19,23],"madd":[4,5,30,31,35,36],"wasl":[25,26]},
-"80": {"ghunnah":[2,5],"madd":[11,12,36,37],"qalqalah":[19,21],"wasl":[25,26]},
-"81": {"ghunnah":[2,5],"madd":[7,8,36,37],"wasl":[25,26]},
-"82": {"ghunnah":[2,5],"madd":[28,29],"qalqalah":[12,14],"wasl":[18,19]},
-"83": {"ghunnah":[4,7,10,14],"madd":[21,22,31,32,34,35],"qalqalah":[27,29]},
-"84": {"ghunnah":[28,32],"madd":[7,9,19,20,34,35]},
-"85": {"madd":[31,32,48,49]},
-"86": {"ghunnah":[18,22],"madd":[41,42],"wasl":[26,27]},
-"87": {"ghunnah":[8,11,13,17],"madd":[28,29,33,34],"wasl":[23,24]},
-"88": {"ghunnah":[16,20,24,27],"idgham":[23,24],"madd":[29,30],"wasl":[22,23]},
-"89": {"ghunnah":[10,13],"madd":[19,20]},
-"90": {"madd":[29,30],"qalqalah":[23,25],"silent":[11,13]},
-"91": {"madd":[12,15,52,53]},
-"92": {"ghunnah":[17,20],"madd":[22,23]},
-"93": {"ghunnah":[24,29],"madd":[37,38],"wasl":[30,31]},
-"94": {"madd":[10,12,31,32],"qalqalah":[4,6],"silent":[12,14]},
-"95": {"madd":[32,33]},
-"96": {"madd":[35,36],"wasl":[2,3]},
-"97": {"ghunnah":[32,37],"madd":[22,23,30,31,58,59],"qalqalah":[10,12],"silent":[6,8,15,17],"wasl":[9,10,51,52]},
-"98": {"ghunnah":[24,29],"madd":[17,18,37,38,54,55],"silent":[10,12],"wasl":[43,44]},
-"99": {"ghunnah":[10,13],"madd":[45,46]},
-"100": {"idgham":[21,22],"madd":[25,26,30,31],"qalqalah":[8,10],"wasl":[20,21]},
-"101": {"madd":[11,12,21,22,29,30]},
-"102": {"ghunnah":[4,7,52,55,82,85,102,105,175,179],"idgham":[24,25,198,199],"madd":[41,42,55,57,85,87,130,132,170,172,179,181,202,203,207,208],"wasl":[23,24,69,70,101,102,139,140,184,185,197,198]},
-"103": {"ghunnah":[4,7],"madd":[7,9,29,30,39,40]},
-"104": {"idgham":[17,21],"madd":[4,5,11,12,21,23,29,30,32,33],"qalqalah":[25,27]},
-"105": {"ghunnah":[29,32],"idgham":[16,17],"madd":[24,26,38,39,63,64],"qalqalah":[2,4,10,12,46,48],"wasl":[15,16,52,53]},
-"106": {"ghunnah":[2,5],"madd":[8,9,27,29,41,42],"silent":[31,33],"wasl":[20,21,34,35]},
-"107": {"madd":[10,11,27,28],"qalqalah":[18,20]},
-"108": {"madd":[35,36],"wasl":[25,26]},
-"109": {"madd":[4,5,12,15,22,23,25,26],"qalqalah":[18,20]},
-"110": {"madd":[4,5,29,30],"qalqalah":[12,14],"wasl":[18,19]},
-"111": {"ghunnah":[2,5],"madd":[7,8,36,37],"wasl":[25,26]},
-"112": {"idgham":[33,39,43,44],"madd":[11,12,23,24,47,48,52,53],"wasl":[42,43]},
-"113": {"ghunnah":[46,50],"idgham":[71,75,81,86],"madd":[4,5,28,31,38,39,94,95,100,101]},
-"114": {"ghunnah":[13,16],"madd":[37,38,40,41],"qalqalah":[6,8]},
-"115": {"madd":[11,12,54,55],"wasl":[37,38,47,48]},
-"116": {"madd":[10,11,37,38,42,43],"silent":[24,26],"wasl":[32,33]},
-"117": {"madd":[11,12,25,26,40,41],"wasl":[18,19,29,30]},
-"118": {"idgham":[18,19],"madd":[10,11,24,25,39,40],"wasl":[17,18,28,29]},
-"119": {"madd":[38,39],"wasl":[28,29]},
-"120": {"madd":[4,5,27,28,30,31]},
-"121": {"ghunnah":[2,5],"madd":[11,12,36,37],"qalqalah":[19,21],"wasl":[25,26]},
-"122": {"ghunnah":[2,5],"madd":[38,39],"wasl":[27,28]},
-"123": {"ghunnah":[4,7],"madd":[36,37],"wasl":[25,26]},
-"124": {"madd":[21,23,37,38]},
-"125": {"idgham":[17,22],"madd":[46,47,51,52],"qalqalah":[4,6],"wasl":[41,42]},
-"126": {"madd":[31,33,50,51],"wasl":[40,41]},
-"127": {"ghunnah":[17,20],"madd":[35,36]},
-"128": {"madd":[34,35],"wasl":[15,16,23,24]},
-"129": {"madd":[35,36],"wasl":[25,26]},
-"130": {"madd":[4,5,12,15,26,27]},
-"131": {"ghunnah":[2,5],"madd":[11,12,36,37],"qalqalah":[19,21],"wasl":[25,26]},
-"132": {"ghunnah":[2,5],"madd":[7,8,36,37],"wasl":[25,26]},
-"133": {"ghunnah":[4,7],"idgham":[12,18],"madd":[34,35],"wasl":[23,24]},
-"134": {"madd":[14,15,28,30,39,40],"qalqalah":[33,35]},
-"135": {"ghunnah":[13,18],"madd":[25,26,30,31],"wasl":[20,21]},
-"136": {"ghunnah":[2,5,8,11],"madd":[27,28],"wasl":[17,18]},
-"137": {"ghunnah":[4,7],"idgham":[33,38],"madd":[44,45]},
-"138": {"madd":[29,30],"wasl":[4,5]},
-"139": {"ghunnah":[4,7],"madd":[34,35],"wasl":[23,24]},
-"140": {"madd":[37,38],"wasl":[18,19,28,29]},
-"141": {"madd":[34,35],"qalqalah":[28,30],"wasl":[23,24]},
-"142": {"madd":[34,35],"wasl":[2,3,14,15]},
-"143": {"ghunnah":[13,16],"madd":[8,10,18,19,43,44],"wasl":[31,32]},
-"144": {"madd":[21,23,46,47],"qalqalah":[15,17,40,42]},
-"145": {"madd":[10,11,23,25,39,40],"wasl":[16,17]},
-"146": {"ghunnah":[5,7],"idgham":[30,35,35,39],"madd":[43,44],"qalqalah":[39,41]},
-"147": {"madd":[12,13,51,52],"silent":[25,27]},
-"148": {"madd":[25,26,40,41],"silent":[11,13]},
-"149": {"madd":[55,56],"wasl":[2,3,28,29,48,49]},
-"150": {"idgham":[37,42],"madd":[22,24,35,36,49,50,54,55],"qalqalah":[9,11],"wasl":[15,16]},
-"151": {"ghunnah":[9,12],"idgham":[14,19],"madd":[4,6,42,43]},
-"152": {"ghunnah":[19,22],"madd":[31,32,36,37],"wasl":[7,8]},
-"153": {"madd":[34,35],"wasl":[10,11,27,28]},
-"154": {"madd":[26,27]},
-"155": {"madd":[17,18]},
-"156": {"idgham":[20,25],"madd":[18,19,27,28]},
-"157": {"ghunnah":[26,30,30,33],"madd":[16,17,38,39,43,44],"silent":[7,9]},
-"158": {"ghunnah":[36,39,73,76,81,84],"idgham":[47,52],"madd":[20,21,99,100],"qalqalah":[56,58],"silent":[9,11],"wasl":[31,32,68,69]},
-"159": {"ghunnah":[20,23],"madd":[6,7,31,32],"qalqalah":[2,4],"wasl":[10,11]},
-"160": {"madd":[34,35],"wasl":[15,16,23,24]},
-"161": {"ghunnah":[4,7],"madd":[26,27]},
-"162": {"ghunnah":[7,10],"madd":[2,4,26,27,31,32]},
-"163": {"madd":[30,31],"wasl":[23,24]},
-"164": {"ghunnah":[8,11],"idgham":[33,38],"madd":[11,13,25,26,42,43]},
-"165": {"ghunnah":[4,7],"idgham":[19,20],"madd":[28,29],"madd-lazim":[23,25],"wasl":[18,19]},
-"166": {"ghunnah":[4,7],"madd":[30,31],"wasl":[18,19]},
-"167": {"ghunnah":[4,8],"madd":[24,25],"silent":[12,14]},
-"168": {"ghunnah":[7,10,13,16],"idgham":[25,31],"madd":[44,45],"wasl":[34,35]},
-"169": {"ghunnah":[4,7],"madd":[36,37],"wasl":[17,18,25,26]},
-"170": {"madd":[16,17,35,36],"silent":[9,11]},
-"171": {"madd":[54,55],"qalqalah":[6,8],"wasl":[43,44]},
-"172": {"ghunnah":[2,5,22,25],"madd":[28,29],"wasl":[17,18]},
-"173": {"ghunnah":[4,7,10,13],"madd":[29,30,34,35],"wasl":[24,25]},
-"174": {"madd":[29,30]},
-"175": {"madd":[32,33],"qalqalah":[4,6,26,28]},
-"176": {"madd":[29,30]},
-"177": {"ghunnah":[51,54],"madd":[33,35,56,57],"wasl":[46,47]},
-"178": {"madd":[29,30]},
-"179": {"madd":[28,29],"qalqalah":[4,6,22,24]},
-"180": {"ghunnah":[37,40],"madd":[6,7,48,49],"qalqalah":[2,4],"wasl":[24,25]},
-"181": {"madd":[6,7,27,28],"wasl":[16,17]},
-"182": {"madd":[31,32,36,37],"wasl":[2,3,26,27]}
+"1": {"lam_shamsiyyah":[42,43],"madd_2":[51,52],"madd_6":[46,48],"hamzat_wasl":[41,42]},
+"2": {"lam_shamsiyyah":[3,4],"madd_2":[7,8,12,13],"qalqalah":[18,20],"hamzat_wasl":[2,3]},
+"3": {"lam_shamsiyyah":[3,4],"madd_2":[7,8,12,13],"hamzat_wasl":[2,3]},
+"4": {"ghunnah":[2,5],"madd_2":[10,11,22,23],"qalqalah":[25,26]},
+"5": {"lam_shamsiyyah":[8,9],"madd_2":[14,15,17,18,66,67],"qalqalah":[69,70],"hamzat_wasl":[7,8,23,24,59,60]},
+"6": {"ghunnah":[2,5,12,15],"lam_shamsiyyah":[18,19,30,31],"madd_muttasil":[24,26],"qalqalah":[60,61],"hamzat_wasl":[17,18,29,30,50,51]},
+"7": {"ikhfa":[13,17],"idghaam_ghunnah":[7,13,29,34],"madd_2":[27,28],"qalqalah":[37,38]},
+"8": {"ghunnah":[10,13],"ikhfa":[63,67],"qalqalah":[51,53,76,77],"hamzat_wasl":[25,26,35,36]},
+"9": {"idghaam_ghunnah":[6,11,24,28],"qalqalah":[31,32]},
+"10": {"ikhfa":[51,55],"madd_2":[43,44],"qalqalah":[24,26,58,59],"hamzat_wasl":[19,20]},
+"11": {"ghunnah":[62,65],"ikhfa":[83,87],"idghaam_no_ghunnah":[89,94],"idghaam_shafawi":[41,46,78,83],"madd_2":[75,76],"madd_munfasil":[57,59],"qalqalah":[53,55,71,73,97,98],"hamzat_wasl":[2,3]},
+"12": {"madd_246":[24,25],"qalqalah":[9,11]},
+"13": {"madd_246":[31,32],"silent":[16,18]},
+"14": {"idghaam_ghunnah":[23,27],"madd_246":[37,38],"silent":[14,16]},
+"15": {"idghaam_ghunnah":[37,42],"madd_2":[19,20],"madd_246":[44,45],"madd_munfasil":[7,9,22,24],"silent":[9,11]},
+"16": {"ghunnah":[20,23,49,52],"idghaam_ghunnah":[31,36],"madd_2":[40,41],"madd_246":[65,66],"qalqalah":[58,60]},
+"17": {"madd_246":[27,28],"madd_muttasil":[9,11],"hamzat_wasl":[17,18]},
+"18": {"ikhfa":[16,19],"madd_2":[24,25],"madd_246":[29,30]},
+"19": {"ghunnah":[4,7],"ikhfa":[33,37,50,53],"idghaam_ghunnah":[23,27],"madd_2":[27,28],"madd_246":[55,56],"qalqalah":[18,20]},
+"20": {"lam_shamsiyyah":[39,40],"madd_2":[13,14,26,27],"madd_246":[43,44],"silent":[8,10],"hamzat_wasl":[38,39]},
+"21": {"ikhfa":[34,37],"ikhfa_shafawi":[37,41],"madd_2":[2,3,43,44],"madd_246":[54,55],"hamzat_wasl":[14,15,24,25]},
+"22": {"madd_2":[39,40],"madd_246":[70,71],"silent":[8,10,28,30,59,61],"hamzat_wasl":[11,12]},
+"23": {"ikhfa":[2,6],"madd_2":[42,43],"madd_246":[53,54],"hamzat_wasl":[10,11,20,21,46,47]},
+"24": {"ghunnah":[14,17],"idghaam_shafawi":[19,24],"madd_246":[32,33]},
+"25": {"madd_246":[24,25]},
+"26": {"madd_246":[32,33],"hamzat_wasl":[10,11]},
+"27": {"idghaam_ghunnah":[34,38],"madd_246":[48,49],"madd_muttasil":[42,44],"qalqalah":[4,6]},
+"28": {"ghunnah":[12,15],"ikhfa":[22,25],"madd_246":[53,54],"madd_munfasil":[5,7],"silent":[7,9],"hamzat_wasl":[46,47]},
+"29": {"madd_246":[38,39],"silent":[6,8,27,29]},
+"30": {"ikhfa":[31,35,51,54,62,67],"iqlab":[41,45],"idghaam_shafawi":[26,31],"madd_2":[39,40,67,68],"madd_246":[70,71]},
+"31": {"ghunnah":[37,40],"madd_246":[52,53],"madd_munfasil":[32,34],"madd_muttasil":[46,48]},
+"32": {"ghunnah":[20,23,27,30],"madd_2":[12,13,34,35],"madd_246":[37,38]},
+"33": {"ghunnah":[4,7],"ikhfa":[21,25],"madd_246":[48,49],"hamzat_wasl":[27,28]},
+"34": {"ghunnah":[2,5],"madd_2":[11,12],"madd_246":[39,40],"qalqalah":[33,35],"hamzat_wasl":[28,29]},
+"35": {"ghunnah":[2,5],"madd_2":[48,49],"madd_246":[79,80],"madd_munfasil":[15,17,41,43],"silent":[17,19],"hamzat_wasl":[59,60]},
+"36": {"ghunnah":[17,20],"idghaam_ghunnah":[57,62],"madd_246":[66,67],"madd_munfasil":[31,33],"qalqalah":[62,64],"silent":[33,35]},
+"37": {"madd_246":[44,45],"madd_muttasil":[7,9],"hamzat_wasl":[14,15,33,34]},
+"38": {"ghunnah":[2,5],"madd_246":[42,43],"madd_muttasil":[14,16],"silent":[21,23],"hamzat_wasl":[24,25,35,36]},
+"39": {"ikhfa":[30,33],"madd_246":[44,45],"qalqalah":[8,10]},
+"40": {"madd_246":[34,35],"hamzat_wasl":[15,16,23,24]},
+"41": {"idghaam_ghunnah":[25,30],"madd_246":[34,35],"madd_muttasil":[6,8],"silent":[2,4]},
+"42": {"idghaam_shafawi":[14,19],"madd_2":[4,5],"madd_246":[25,26]},
+"43": {"ghunnah":[6,9,15,18],"lam_shamsiyyah":[14,15],"madd_2":[9,10],"madd_246":[20,21],"hamzat_wasl":[13,14]},
+"44": {"idghaam_ghunnah":[12,17],"madd_2":[21,22],"madd_246":[26,27]},
+"45": {"ikhfa_shafawi":[16,20],"idghaam_ghunnah":[25,30,30,35],"madd_246":[37,38]},
+"46": {"idghaam_no_ghunnah":[17,22],"lam_shamsiyyah":[22,23],"madd_2":[26,27],"madd_246":[31,32],"madd_muttasil":[6,8]},
+"47": {"ikhfa":[39,42],"idghaam_ghunnah":[16,20],"madd_246":[44,45]},
+"48": {"ikhfa":[4,7],"lam_shamsiyyah":[24,25],"madd_2":[14,15,19,20],"madd_246":[35,36],"hamzat_wasl":[23,24]},
+"49": {"ghunnah":[4,7,9,12],"idghaam_ghunnah":[18,23],"madd_246":[27,28]},
+"50": {"idghaam_ghunnah":[34,38],"madd_246":[48,49],"madd_muttasil":[42,44],"qalqalah":[4,6]},
+"51": {"ghunnah":[27,30],"idghaam_ghunnah":[13,18],"madd_246":[46,47],"madd_muttasil":[8,10]},
+"52": {"ghunnah":[12,15],"madd_246":[37,38],"hamzat_wasl":[25,26]},
+"53": {"ghunnah":[20,23,49,52],"idghaam_ghunnah":[31,36],"madd_2":[40,41],"madd_246":[63,64]},
+"54": {"ikhfa":[13,16],"idghaam_shafawi":[16,21],"madd_246":[28,29]},
+"55": {"madd_246":[41,42],"madd_muttasil":[29,31],"hamzat_wasl":[2,3,34,35]},
+"56": {"ikhfa":[18,22],"idghaam_mutajanisayn":[22,23],"madd_246":[35,36],"hamzat_wasl":[8,9]},
+"57": {"ikhfa":[30,33],"madd_246":[50,51],"hamzat_wasl":[39,40]},
+"58": {"madd_246":[24,25]},
+"59": {"madd_246":[54,55],"hamzat_wasl":[19,20]},
+"60": {"ghunnah":[2,5],"madd_2":[8,9],"madd_246":[37,38],"hamzat_wasl":[20,21,30,31]},
+"61": {"madd_2":[11,12,34,35],"madd_246":[39,40],"hamzat_wasl":[29,30]},
+"62": {"idghaam_ghunnah":[15,20],"lam_shamsiyyah":[41,42],"madd_2":[4,5],"madd_246":[48,49],"hamzat_wasl":[40,41]},
+"63": {"ghunnah":[2,5],"idghaam_no_ghunnah":[27,32],"lam_shamsiyyah":[32,33],"madd_2":[15,16,36,37],"madd_246":[41,42]},
+"64": {"ghunnah":[2,5],"ikhfa":[16,20],"madd_246":[46,47],"madd_munfasil":[29,31],"hamzat_wasl":[39,40]},
+"65": {"ghunnah":[14,17],"lam_shamsiyyah":[30,31],"madd_2":[19,20,36,37],"madd_246":[39,40],"hamzat_wasl":[29,30]},
+"66": {"ghunnah":[4,7],"madd_246":[62,63],"hamzat_wasl":[55,56]},
+"67": {"ghunnah":[2,5,8,11],"idghaam_ghunnah":[36,42],"madd_246":[49,50]},
+"68": {"ghunnah":[2,5,8,11],"madd_246":[40,41],"hamzat_wasl":[33,34]},
+"69": {"ghunnah":[2,5],"madd_246":[42,43],"madd_muttasil":[26,28],"madd_6":[37,39],"silent":[18,20]},
+"70": {"madd_2":[20,21],"madd_246":[36,37],"madd_munfasil":[11,14]},
+"71": {"madd_246":[45,46],"qalqalah":[6,8,17,19],"hamzat_wasl":[35,36]},
+"72": {"ikhfa":[31,34],"idghaam_shafawi":[26,31],"madd_246":[36,37],"qalqalah":[6,8]},
+"73": {"ikhfa":[3,6,37,40],"madd_2":[24,25],"madd_246":[42,43],"hamzat_wasl":[2,3,32,33]},
+"74": {"madd_246":[34,35],"hamzat_wasl":[15,16,23,24]},
+"75": {"ikhfa":[24,28],"madd_2":[15,16],"madd_246":[47,48],"qalqalah":[6,8],"hamzat_wasl":[37,38]},
+"76": {"madd_2":[11,12,25,26],"madd_246":[49,50],"hamzat_wasl":[32,33,42,43]},
+"77": {"madd_2":[24,25],"madd_246":[39,40],"hamzat_wasl":[31,32]},
+"78": {"madd_246":[35,36],"hamzat_wasl":[25,26]},
+"79": {"ikhfa":[19,23],"madd_2":[4,5,30,31],"madd_246":[35,36],"hamzat_wasl":[25,26]},
+"80": {"ghunnah":[2,5],"madd_2":[11,12],"madd_246":[36,37],"qalqalah":[19,21],"hamzat_wasl":[25,26]},
+"81": {"ghunnah":[2,5],"madd_2":[7,8],"madd_246":[36,37],"hamzat_wasl":[25,26]},
+"82": {"ghunnah":[2,5],"madd_246":[28,29],"qalqalah":[12,14],"hamzat_wasl":[18,19]},
+"83": {"ghunnah":[4,7],"ikhfa":[10,14],"madd_2":[21,22,31,32],"madd_246":[34,35],"qalqalah":[27,29]},
+"84": {"ikhfa":[28,32],"madd_2":[19,20],"madd_246":[34,35],"madd_muttasil":[7,9]},
+"85": {"madd_2":[31,32],"madd_246":[48,49]},
+"86": {"ikhfa":[18,22],"madd_246":[41,42],"hamzat_wasl":[26,27]},
+"87": {"ghunnah":[8,11],"ikhfa_shafawi":[13,17],"madd_2":[28,29],"madd_246":[33,34],"hamzat_wasl":[23,24]},
+"88": {"ghunnah":[24,27],"ikhfa":[16,20],"lam_shamsiyyah":[23,24],"madd_246":[29,30],"hamzat_wasl":[22,23]},
+"89": {"ghunnah":[10,13],"madd_246":[19,20]},
+"90": {"madd_246":[29,30],"qalqalah":[23,25],"silent":[11,13]},
+"91": {"madd_246":[52,53],"madd_munfasil":[12,15]},
+"92": {"ikhfa":[17,20],"madd_246":[22,23]},
+"93": {"iqlab":[24,29],"madd_246":[37,38],"hamzat_wasl":[30,31]},
+"94": {"madd_246":[31,32],"madd_munfasil":[10,12],"qalqalah":[4,6],"silent":[12,14]},
+"95": {"madd_246":[32,33]},
+"96": {"madd_246":[35,36],"hamzat_wasl":[2,3]},
+"97": {"ikhfa":[32,37],"madd_2":[22,23,30,31],"madd_246":[58,59],"qalqalah":[10,12],"silent":[6,8,15,17],"hamzat_wasl":[9,10,51,52]},
+"98": {"ikhfa":[24,29],"madd_2":[17,18,37,38],"madd_246":[54,55],"silent":[10,12],"hamzat_wasl":[43,44]},
+"99": {"ghunnah":[10,13],"madd_246":[45,46]},
+"100": {"lam_shamsiyyah":[21,22],"madd_2":[25,26],"madd_246":[30,31],"qalqalah":[8,10],"hamzat_wasl":[20,21]},
+"101": {"madd_2":[11,12,21,22],"madd_246":[29,30]},
+"102": {"ghunnah":[4,7,52,55,82,85],"ikhfa":[102,105,175,179],"lam_shamsiyyah":[24,25,198,199],"madd_2":[41,42,202,203],"madd_246":[207,208],"madd_munfasil":[55,57,85,87,130,132,170,172],"madd_muttasil":[179,181],"hamzat_wasl":[23,24,69,70,101,102,139,140,184,185,197,198]},
+"103": {"ghunnah":[4,7],"madd_2":[29,30],"madd_246":[39,40],"madd_munfasil":[7,9]},
+"104": {"idghaam_ghunnah":[17,21],"madd_2":[4,5,11,12,29,30],"madd_246":[32,33],"madd_munfasil":[21,23],"qalqalah":[25,27]},
+"105": {"ghunnah":[29,32],"lam_shamsiyyah":[16,17],"madd_2":[38,39],"madd_246":[63,64],"madd_munfasil":[24,26],"qalqalah":[2,4,10,12,46,48],"hamzat_wasl":[15,16,52,53]},
+"106": {"ghunnah":[2,5],"madd_2":[8,9],"madd_246":[41,42],"madd_muttasil":[27,29],"silent":[31,33],"hamzat_wasl":[20,21,34,35]},
+"107": {"madd_2":[10,11],"madd_246":[27,28],"qalqalah":[18,20]},
+"108": {"madd_246":[35,36],"hamzat_wasl":[25,26]},
+"109": {"madd_2":[4,5,22,23],"madd_246":[25,26],"madd_munfasil":[12,15],"qalqalah":[18,20]},
+"110": {"madd_2":[4,5],"madd_246":[29,30],"qalqalah":[12,14],"hamzat_wasl":[18,19]},
+"111": {"ghunnah":[2,5],"madd_2":[7,8],"madd_246":[36,37],"hamzat_wasl":[25,26]},
+"112": {"idghaam_ghunnah":[33,39],"lam_shamsiyyah":[43,44],"madd_2":[11,12,23,24,47,48],"madd_246":[52,53],"hamzat_wasl":[42,43]},
+"113": {"ikhfa":[46,50],"idghaam_ghunnah":[71,75],"idghaam_no_ghunnah":[81,86],"madd_2":[4,5,38,39,94,95],"madd_246":[100,101],"madd_munfasil":[28,31]},
+"114": {"ghunnah":[13,16],"madd_2":[37,38],"madd_246":[40,41],"qalqalah":[6,8]},
+"115": {"madd_2":[11,12],"madd_246":[54,55],"hamzat_wasl":[37,38,47,48]},
+"116": {"madd_2":[10,11,37,38],"madd_246":[42,43],"silent":[24,26],"hamzat_wasl":[32,33]},
+"117": {"madd_2":[11,12,25,26],"madd_246":[40,41],"hamzat_wasl":[18,19,29,30]},
+"118": {"lam_shamsiyyah":[18,19],"madd_2":[10,11,24,25],"madd_246":[39,40],"hamzat_wasl":[17,18,28,29]},
+"119": {"madd_246":[38,39],"hamzat_wasl":[28,29]},
+"120": {"madd_2":[4,5,27,28],"madd_246":[30,31]},
+"121": {"ghunnah":[2,5],"madd_2":[11,12],"madd_246":[36,37],"qalqalah":[19,21],"hamzat_wasl":[25,26]},
+"122": {"ghunnah":[2,5],"madd_246":[38,39],"hamzat_wasl":[27,28]},
+"123": {"ghunnah":[4,7],"madd_246":[36,37],"hamzat_wasl":[25,26]},
+"124": {"madd_246":[37,38],"madd_munfasil":[21,23]},
+"125": {"idghaam_ghunnah":[17,22],"madd_2":[46,47],"madd_246":[51,52],"qalqalah":[4,6],"hamzat_wasl":[41,42]},
+"126": {"madd_246":[50,51],"madd_muttasil":[31,33],"hamzat_wasl":[40,41]},
+"127": {"ghunnah":[17,20],"madd_246":[35,36]},
+"128": {"madd_246":[34,35],"hamzat_wasl":[15,16,23,24]},
+"129": {"madd_246":[35,36],"hamzat_wasl":[25,26]},
+"130": {"madd_2":[4,5],"madd_246":[26,27],"madd_munfasil":[12,15]},
+"131": {"ghunnah":[2,5],"madd_2":[11,12],"madd_246":[36,37],"qalqalah":[19,21],"hamzat_wasl":[25,26]},
+"132": {"ghunnah":[2,5],"madd_2":[7,8],"madd_246":[36,37],"hamzat_wasl":[25,26]},
+"133": {"ghunnah":[4,7],"idghaam_no_ghunnah":[12,18],"madd_246":[34,35],"hamzat_wasl":[23,24]},
+"134": {"madd_2":[14,15],"madd_246":[39,40],"madd_munfasil":[28,30],"qalqalah":[33,35]},
+"135": {"ikhfa":[13,18],"madd_2":[25,26],"madd_246":[30,31],"hamzat_wasl":[20,21]},
+"136": {"ghunnah":[2,5,8,11],"madd_246":[27,28],"hamzat_wasl":[17,18]},
+"137": {"ghunnah":[4,7],"idghaam_shafawi":[33,38],"madd_246":[44,45]},
+"138": {"madd_246":[29,30],"hamzat_wasl":[4,5]},
+"139": {"ghunnah":[4,7],"madd_246":[34,35],"hamzat_wasl":[23,24]},
+"140": {"madd_246":[37,38],"hamzat_wasl":[18,19,28,29]},
+"141": {"madd_246":[34,35],"qalqalah":[28,30],"hamzat_wasl":[23,24]},
+"142": {"madd_246":[34,35],"hamzat_wasl":[2,3,14,15]},
+"143": {"ghunnah":[13,16],"madd_2":[18,19],"madd_246":[43,44],"madd_munfasil":[8,10],"hamzat_wasl":[31,32]},
+"144": {"madd_246":[46,47],"madd_munfasil":[21,23],"qalqalah":[15,17,40,42]},
+"145": {"madd_2":[10,11],"madd_246":[39,40],"madd_muttasil":[23,25],"hamzat_wasl":[16,17]},
+"146": {"iqlab":[5,7],"idghaam_ghunnah":[30,35,35,39],"madd_246":[43,44],"qalqalah":[39,41]},
+"147": {"madd_2":[12,13],"madd_246":[51,52],"silent":[25,27]},
+"148": {"madd_2":[25,26],"madd_246":[40,41],"silent":[11,13]},
+"149": {"madd_246":[55,56],"hamzat_wasl":[2,3,28,29,48,49]},
+"150": {"idghaam_ghunnah":[37,42],"madd_2":[35,36,49,50],"madd_246":[54,55],"madd_muttasil":[22,24],"qalqalah":[9,11],"hamzat_wasl":[15,16]},
+"151": {"ghunnah":[9,12],"idghaam_shafawi":[14,19],"madd_246":[42,43],"madd_munfasil":[4,6]},
+"152": {"ghunnah":[19,22],"madd_2":[31,32],"madd_246":[36,37],"hamzat_wasl":[7,8]},
+"153": {"madd_246":[34,35],"hamzat_wasl":[10,11,27,28]},
+"154": {"madd_246":[26,27]},
+"155": {"madd_246":[17,18]},
+"156": {"idghaam_ghunnah":[20,25],"madd_2":[18,19],"madd_246":[27,28]},
+"157": {"ikhfa":[26,30,30,33],"madd_2":[16,17,38,39],"madd_246":[43,44],"silent":[7,9]},
+"158": {"ghunnah":[36,39,73,76,81,84],"idghaam_ghunnah":[47,52],"madd_2":[20,21],"madd_246":[99,100],"qalqalah":[56,58],"silent":[9,11],"hamzat_wasl":[31,32,68,69]},
+"159": {"ghunnah":[20,23],"madd_2":[6,7],"madd_246":[31,32],"qalqalah":[2,4],"hamzat_wasl":[10,11]},
+"160": {"madd_246":[34,35],"hamzat_wasl":[15,16,23,24]},
+"161": {"ghunnah":[4,7],"madd_246":[26,27]},
+"162": {"ikhfa":[7,10],"madd_2":[26,27],"madd_246":[31,32],"madd_munfasil":[2,4]},
+"163": {"madd_246":[30,31],"hamzat_wasl":[23,24]},
+"164": {"ghunnah":[8,11],"idghaam_ghunnah":[33,38],"madd_2":[25,26],"madd_246":[42,43],"madd_munfasil":[11,13]},
+"165": {"ghunnah":[4,7],"lam_shamsiyyah":[19,20],"madd_246":[28,29],"madd_6":[23,25],"hamzat_wasl":[18,19]},
+"166": {"ghunnah":[4,7],"madd_246":[30,31],"hamzat_wasl":[18,19]},
+"167": {"ikhfa":[4,8],"madd_246":[24,25],"silent":[12,14]},
+"168": {"ghunnah":[7,10],"ikhfa":[13,16],"idghaam_ghunnah":[25,31],"madd_246":[44,45],"hamzat_wasl":[34,35]},
+"169": {"ghunnah":[4,7],"madd_246":[36,37],"hamzat_wasl":[17,18,25,26]},
+"170": {"madd_2":[16,17],"madd_246":[35,36],"silent":[9,11]},
+"171": {"madd_246":[54,55],"qalqalah":[6,8],"hamzat_wasl":[43,44]},
+"172": {"ghunnah":[2,5],"ikhfa":[22,25],"madd_246":[28,29],"hamzat_wasl":[17,18]},
+"173": {"ghunnah":[4,7],"ikhfa":[10,13],"madd_2":[29,30],"madd_246":[34,35],"hamzat_wasl":[24,25]},
+"174": {"madd_246":[29,30]},
+"175": {"madd_246":[32,33],"qalqalah":[4,6,26,28]},
+"176": {"madd_246":[29,30]},
+"177": {"ikhfa":[51,54],"madd_246":[56,57],"madd_muttasil":[33,35],"hamzat_wasl":[46,47]},
+"178": {"madd_246":[29,30]},
+"179": {"madd_246":[28,29],"qalqalah":[4,6,22,24]},
+"180": {"ghunnah":[37,40],"madd_2":[6,7],"madd_246":[48,49],"qalqalah":[2,4],"hamzat_wasl":[24,25]},
+"181": {"madd_2":[6,7],"madd_246":[27,28],"hamzat_wasl":[16,17]},
+"182": {"madd_2":[31,32],"madd_246":[36,37],"hamzat_wasl":[2,3,26,27]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/38.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/38.json
index 81e6771..a9d0f15 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/38.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/38.json
@@ -1,90 +1,90 @@
{
-"1": {"idgham":[62,63],"madd-lazim":[39,41],"wasl":[44,45,61,62]},
-"2": {"idgham":[35,39],"madd":[43,44],"qalqalah":[44,45],"silent":[22,24],"wasl":[5,6]},
-"3": {"ghunnah":[19,23,34,38,41,45],"idgham":[29,34],"madd":[73,74],"qalqalah":[23,25],"silent":[51,53]},
-"4": {"ghunnah":[15,19,30,33,81,85],"idgham":[25,30,34,39],"madd":[8,10,19,21,59,60,70,71,77,78,88,89],"qalqalah":[89,90],"silent":[10,12],"wasl":[54,55]},
-"5": {"ghunnah":[42,45],"idgham":[28,33],"madd":[26,27,33,34,48,49,66,67],"qalqalah":[67,68],"wasl":[9,10]},
-"6": {"ghunnah":[3,6,81,84],"idgham":[99,103],"madd":[61,64,87,88,105,106],"qalqalah":[106,107],"silent":[41,43,54,56],"wasl":[2,3,11,12,35,36,46,47]},
-"7": {"madd":[18,19,58,59,61,63,78,79],"qalqalah":[79,80],"wasl":[27,28,38,39,71,72]},
-"8": {"ghunnah":[4,7,32,35,67,71,84,87],"idgham":[20,21,62,67],"madd":[104,105],"qalqalah":[105,106],"silent":[97,99],"wasl":[19,20]},
-"9": {"ghunnah":[7,10],"madd":[19,21,62,63],"qalqalah":[63,64],"wasl":[43,44,54,55]},
-"10": {"idgham":[9,14,20,21],"madd":[26,27,29,30,92,93],"qalqalah":[93,94],"silent":[76,78],"wasl":[19,20,35,36,83,84]},
-"11": {"ghunnah":[2,5],"idgham":[4,9,29,34],"madd":[46,47],"qalqalah":[47,48],"wasl":[37,38]},
-"12": {"idgham":[32,36,40,44],"madd":[68,69],"qalqalah":[12,14,69,70],"wasl":[59,60]},
-"13": {"idgham":[23,27],"madd":[33,34,55,57,71,72],"qalqalah":[72,73],"silent":[51,53],"wasl":[62,63]},
-"14": {"ghunnah":[2,6],"idgham":[26,27],"madd":[47,48],"qalqalah":[48,49],"wasl":[25,26]},
-"15": {"ghunnah":[8,11,66,70],"idgham":[41,45,51,56],"madd":[16,18,22,24,45,46,72,73],"qalqalah":[73,74]},
-"16": {"madd":[64,65],"qalqalah":[45,47,65,66],"silent":[8,10],"wasl":[57,58]},
-"17": {"ghunnah":[75,78],"madd":[55,56,80,82,88,89],"qalqalah":[42,44,89,90],"wasl":[32,33,63,64]},
-"18": {"ghunnah":[2,5],"madd":[35,36,73,74],"qalqalah":[74,75],"wasl":[18,19,51,52,64,65]},
-"19": {"ghunnah":[22,26],"idgham":[3,4,28,33],"madd":[35,37,43,44],"qalqalah":[44,45],"wasl":[2,3]},
-"20": {"madd":[20,21,33,34,65,66],"qalqalah":[6,8,66,67],"wasl":[37,38,58,59]},
-"21": {"madd":[12,13,62,63],"qalqalah":[63,64],"silent":[22,24,50,52],"wasl":[25,26,53,54]},
-"22": {"ghunnah":[108,112,117,121],"idgham":[184,185],"madd":[27,28,164,166,178,180,190,191],"qalqalah":[152,154,191,192],"silent":[12,14,55,57],"wasl":[112,113,131,132,157,158,183,184]},
-"23": {"ghunnah":[2,5,78,82],"idgham":[31,35,52,56,68,72],"madd":[8,9,11,13,24,25,72,73,125,126],"qalqalah":[126,127],"wasl":[118,119]},
-"24": {"ghunnah":[65,68,211,214,226,229,237,240],"idgham":[75,81,174,175,195,200,281,286],"madd":[59,60,93,95,178,179,183,184,220,221,240,241,265,266,290,291],"qalqalah":[10,12,102,104,291,292],"silent":[158,160,170,172],"wasl":[84,85,140,141,173,174,246,247]},
-"25": {"ghunnah":[30,33,42,45],"madd":[16,17,20,21,38,39,74,75],"qalqalah":[75,76]},
-"26": {"ghunnah":[14,17,39,43,62,66,73,76,131,135,151,154,178,182,209,213,217,221],"idgham":[72,73],"madd":[2,3,8,9,27,28,248,249],"qalqalah":[249,250],"silent":[231,233],"wasl":[45,46,57,58,71,72,82,83,107,108,141,142,155,156,188,189,241,242]},
-"27": {"ghunnah":[64,69,77,80,139,142],"idgham":[17,18,108,113,138,139],"madd":[23,25,60,61,69,70,142,143],"qalqalah":[10,12],"silent":[98,100,129,131],"wasl":[16,17,30,31,81,82,137,138]},
-"28": {"idgham":[48,49],"madd":[52,53,57,58,130,131],"qalqalah":[7,9,99,101],"silent":[32,34,44,46],"wasl":[14,15,47,48,63,64,82,83,106,107,122,123]},
-"29": {"ghunnah":[10,13],"idgham":[38,43],"madd":[4,5,17,18,34,35,53,55,63,64,68,69,105,106],"qalqalah":[106,107],"silent":[55,57,88,90,93,95],"wasl":[96,97]},
-"30": {"ghunnah":[54,57],"madd":[19,20,31,32,59,61,67,68],"qalqalah":[6,8,47,49,68,69],"wasl":[42,43]},
-"31": {"idgham":[35,36],"madd":[39,40,44,45,55,56],"qalqalah":[56,57],"wasl":[23,24,34,35,48,49]},
-"32": {"ghunnah":[10,13,45,49],"madd":[13,15,88,89],"qalqalah":[22,24,89,90],"wasl":[33,34,81,82]},
-"33": {"ghunnah":[32,37],"idgham":[39,40],"madd":[58,59],"qalqalah":[59,60],"wasl":[38,39,49,50]},
-"34": {"ghunnah":[13,16,69,74,74,77],"madd":[26,27,62,63,82,83],"qalqalah":[6,8,83,84]},
-"35": {"ghunnah":[51,53,71,74,84,87,92,95],"idgham":[40,46,65,70],"madd":[79,81,104,105],"qalqalah":[28,30,105,106],"wasl":[12,13,96,97]},
-"36": {"idgham":[19,20],"madd":[45,46,51,53,67,68],"qalqalah":[29,31,68,69],"wasl":[18,19]},
-"37": {"ghunnah":[24,27],"idgham":[3,4,30,34],"madd":[9,10,27,29,39,40],"wasl":[2,3]},
-"38": {"madd":[39,40],"qalqalah":[40,41],"wasl":[30,31]},
-"39": {"madd":[2,3,11,13,56,57],"qalqalah":[57,58],"wasl":[21,22]},
-"40": {"ghunnah":[4,7,16,19],"madd":[12,13,48,49],"qalqalah":[49,50]},
-"41": {"ghunnah":[55,58],"idgham":[71,72,90,94],"madd":[18,20,50,52,79,80,98,99],"qalqalah":[12,14,99,100],"wasl":[2,3,70,71]},
-"42": {"ghunnah":[35,39],"idgham":[44,48],"madd":[21,22,52,53],"qalqalah":[12,14,53,54]},
-"43": {"ghunnah":[63,66],"idgham":[39,44,58,63],"madd":[16,18,27,28,98,99],"qalqalah":[6,8,99,100],"silent":[83,85],"wasl":[89,90]},
-"44": {"ghunnah":[21,26,57,60,103,106],"idgham":[80,86],"madd":[38,39,70,71,108,110,116,117],"qalqalah":[66,68,96,98,117,118],"wasl":[26,27,91,92]},
-"45": {"madd":[14,15,19,21,28,29,43,44,89,90],"qalqalah":[24,26,85,87],"silent":[61,63],"wasl":[2,3,67,68,80,81]},
-"46": {"ghunnah":[2,5,21,25,33,37],"idgham":[44,45],"madd":[5,7,18,19,48,49],"wasl":[43,44]},
-"47": {"ghunnah":[4,7,14,17],"madd":[53,54],"wasl":[28,29,44,45]},
-"48": {"idgham":[57,62],"madd":[16,17,74,75],"wasl":[2,3,25,26,41,42,65,66]},
-"49": {"ghunnah":[18,21],"idgham":[12,16],"madd":[2,3,51,52],"qalqalah":[52,53]},
-"50": {"ghunnah":[2,5],"idgham":[14,19,27,32],"madd":[5,6,46,47],"qalqalah":[11,13,42,44,47,48],"wasl":[37,38]},
-"51": {"ghunnah":[48,52],"idgham":[58,62],"madd":[42,43,66,67],"qalqalah":[23,25,67,68]},
-"52": {"ghunnah":[4,7],"idgham":[24,25],"madd":[14,15,19,20,39,40],"qalqalah":[40,41],"wasl":[23,24]},
-"53": {"madd":[2,3,38,39],"qalqalah":[39,40],"wasl":[31,32]},
-"54": {"ghunnah":[2,5],"idgham":[37,42],"madd":[8,9,33,34,44,45],"qalqalah":[45,46]},
-"55": {"ghunnah":[11,14],"idgham":[17,18],"madd":[2,3,21,22,41,42],"qalqalah":[42,43]},
-"56": {"ghunnah":[4,7],"madd":[40,41],"qalqalah":[41,42],"wasl":[33,34]},
-"57": {"idgham":[28,32],"madd":[2,3,37,38],"qalqalah":[38,39]},
-"58": {"ghunnah":[12,16],"madd":[22,24,31,32],"qalqalah":[32,33]},
-"59": {"ghunnah":[47,52,60,63,79,82],"idgham":[12,17,24,29,78,79],"madd":[2,3,82,83],"qalqalah":[17,19],"silent":[74,76],"wasl":[77,78]},
-"60": {"ghunnah":[16,19,33,38,46,49],"madd":[89,90],"silent":[6,8],"wasl":[82,83]},
-"61": {"ghunnah":[20,24,58,63,66,71,75,78],"idgham":[74,75],"madd":[38,39,78,79],"qalqalah":[47,49],"silent":[6,8],"wasl":[73,74]},
-"62": {"ghunnah":[38,43,43,46],"idgham":[57,62],"madd":[74,75],"silent":[8,10],"wasl":[65,66]},
-"63": {"madd":[11,12,59,60],"qalqalah":[55,57],"wasl":[50,51]},
-"64": {"ghunnah":[2,5,20,24,41,44],"idgham":[40,41],"madd":[8,9,44,45],"wasl":[39,40]},
-"65": {"ghunnah":[7,10,24,27],"idgham":[28,32],"madd":[12,14,45,46,69,70,83,84],"wasl":[56,57,64,65,75,76]},
-"66": {"idgham":[7,8],"madd":[13,14,16,17,69,70],"wasl":[6,7,22,23,50,51,61,62]},
-"67": {"madd":[23,24],"silent":[16,18]},
-"68": {"ghunnah":[2,5],"madd":[23,24]},
-"69": {"ghunnah":[25,29],"madd":[49,52,68,69],"wasl":[30,31,40,41]},
-"70": {"ghunnah":[31,34],"idgham":[2,6,52,57],"madd":[9,12,26,28,36,38,59,60]},
-"71": {"ghunnah":[38,41,49,53,63,67],"idgham":[57,63],"madd":[27,29,45,46,67,68]},
-"72": {"idgham":[40,45],"madd":[19,20,64,65,68,69,73,74],"silent":[57,59]},
-"73": {"madd":[16,18,43,44],"qalqalah":[37,39],"wasl":[9,10]},
-"74": {"madd":[5,7,48,49,53,54],"qalqalah":[10,12],"wasl":[18,19,43,44]},
-"75": {"ghunnah":[35,39,93,96],"madd":[8,10,110,111],"qalqalah":[12,14,56,58],"wasl":[102,103]},
-"76": {"ghunnah":[67,71],"idgham":[18,23,42,47,49,53],"madd":[63,64,71,72],"qalqalah":[32,34,57,59]},
-"77": {"ghunnah":[28,31],"madd":[38,39],"qalqalah":[13,15],"wasl":[8,9]},
-"78": {"ghunnah":[4,7],"idgham":[43,44],"madd":[25,27,47,48],"wasl":[42,43]},
-"79": {"ghunnah":[16,19],"madd":[23,25,48,49],"qalqalah":[42,44]},
-"80": {"ghunnah":[10,13,26,29],"madd":[31,32],"wasl":[21,22]},
-"81": {"madd":[33,34],"qalqalah":[19,21],"wasl":[14,15,24,25]},
-"82": {"ghunnah":[30,33],"madd":[46,47],"qalqalah":[40,42]},
-"83": {"madd":[37,38],"wasl":[26,27]},
-"84": {"madd":[32,33],"wasl":[8,9,19,20]},
-"85": {"ghunnah":[10,13,18,21,26,29,34,37,37,41],"madd":[65,66],"qalqalah":[59,61]},
-"86": {"idgham":[43,47],"madd":[7,9,49,51,78,79],"qalqalah":[40,42],"wasl":[64,65]},
-"87": {"idgham":[22,27],"madd":[31,32,36,37]},
-"88": {"ghunnah":[12,15],"madd":[24,25,35,36]}
+"1": {"lam_shamsiyyah":[62,63],"madd_6":[39,41],"hamzat_wasl":[44,45,61,62]},
+"2": {"idghaam_ghunnah":[35,39],"madd_246":[43,44],"qalqalah":[44,45],"silent":[22,24],"hamzat_wasl":[5,6]},
+"3": {"ikhfa":[19,23,34,38,41,45],"idghaam_shafawi":[29,34],"madd_246":[73,74],"qalqalah":[23,25],"silent":[51,53]},
+"4": {"ikhfa":[15,19,30,33,81,85],"idghaam_ghunnah":[34,39],"idghaam_shafawi":[25,30],"madd_2":[59,60,70,71,77,78],"madd_246":[88,89],"madd_munfasil":[8,10],"madd_muttasil":[19,21],"qalqalah":[89,90],"silent":[10,12],"hamzat_wasl":[54,55]},
+"5": {"ghunnah":[42,45],"idghaam_ghunnah":[28,33],"madd_2":[26,27,33,34,48,49],"madd_246":[66,67],"qalqalah":[67,68],"hamzat_wasl":[9,10]},
+"6": {"ghunnah":[81,84],"ikhfa":[3,6],"idghaam_ghunnah":[99,103],"madd_2":[87,88],"madd_246":[105,106],"madd_munfasil":[61,64],"qalqalah":[106,107],"silent":[41,43,54,56],"hamzat_wasl":[2,3,11,12,35,36,46,47]},
+"7": {"madd_2":[18,19,58,59],"madd_246":[78,79],"madd_munfasil":[61,63],"qalqalah":[79,80],"hamzat_wasl":[27,28,38,39,71,72]},
+"8": {"ghunnah":[84,87],"ikhfa":[4,7,67,71],"iqlab":[32,35],"idghaam_ghunnah":[62,67],"lam_shamsiyyah":[20,21],"madd_246":[104,105],"qalqalah":[105,106],"silent":[97,99],"hamzat_wasl":[19,20]},
+"9": {"ikhfa":[7,10],"madd_246":[62,63],"madd_muttasil":[19,21],"qalqalah":[63,64],"hamzat_wasl":[43,44,54,55]},
+"10": {"idghaam_shafawi":[9,14],"lam_shamsiyyah":[20,21],"madd_2":[26,27,29,30],"madd_246":[92,93],"qalqalah":[93,94],"silent":[76,78],"hamzat_wasl":[19,20,35,36,83,84]},
+"11": {"ikhfa":[2,5],"idghaam_ghunnah":[4,9,29,34],"madd_246":[46,47],"qalqalah":[47,48],"hamzat_wasl":[37,38]},
+"12": {"idghaam_ghunnah":[32,36,40,44],"madd_246":[68,69],"qalqalah":[12,14,69,70],"hamzat_wasl":[59,60]},
+"13": {"idghaam_ghunnah":[23,27],"madd_2":[33,34],"madd_246":[71,72],"madd_muttasil":[55,57],"qalqalah":[72,73],"silent":[51,53],"hamzat_wasl":[62,63]},
+"14": {"ikhfa":[2,6],"lam_shamsiyyah":[26,27],"madd_246":[47,48],"qalqalah":[48,49],"hamzat_wasl":[25,26]},
+"15": {"ikhfa":[8,11,66,70],"idghaam_ghunnah":[41,45,51,56],"madd_2":[45,46],"madd_246":[72,73],"madd_muttasil":[16,18,22,24],"qalqalah":[73,74]},
+"16": {"madd_246":[64,65],"qalqalah":[45,47,65,66],"silent":[8,10],"hamzat_wasl":[57,58]},
+"17": {"ghunnah":[75,78],"madd_2":[55,56],"madd_246":[88,89],"madd_munfasil":[80,82],"qalqalah":[42,44,89,90],"hamzat_wasl":[32,33,63,64]},
+"18": {"ghunnah":[2,5],"madd_2":[35,36],"madd_246":[73,74],"qalqalah":[74,75],"hamzat_wasl":[18,19,51,52,64,65]},
+"19": {"ikhfa":[22,26],"idghaam_no_ghunnah":[28,33],"lam_shamsiyyah":[3,4],"madd_246":[43,44],"madd_munfasil":[35,37],"qalqalah":[44,45],"hamzat_wasl":[2,3]},
+"20": {"madd_2":[20,21,33,34],"madd_246":[65,66],"qalqalah":[6,8,66,67],"hamzat_wasl":[37,38,58,59]},
+"21": {"madd_2":[12,13],"madd_246":[62,63],"qalqalah":[63,64],"silent":[22,24,50,52],"hamzat_wasl":[25,26,53,54]},
+"22": {"ikhfa":[108,112],"ikhfa_shafawi":[117,121],"lam_shamsiyyah":[184,185],"madd_2":[27,28],"madd_246":[190,191],"madd_munfasil":[164,166],"madd_muttasil":[178,180],"qalqalah":[152,154,191,192],"silent":[12,14,55,57],"hamzat_wasl":[112,113,131,132,157,158,183,184]},
+"23": {"ghunnah":[2,5],"ikhfa":[78,82],"idghaam_ghunnah":[31,35,52,56,68,72],"madd_2":[8,9,24,25,72,73],"madd_246":[125,126],"madd_munfasil":[11,13],"qalqalah":[126,127],"hamzat_wasl":[118,119]},
+"24": {"ghunnah":[65,68,211,214,226,229,237,240],"idghaam_ghunnah":[75,81,195,200,281,286],"lam_shamsiyyah":[174,175],"madd_2":[59,60,178,179,183,184,220,221,240,241,265,266],"madd_246":[290,291],"madd_muttasil":[93,95],"qalqalah":[10,12,102,104,291,292],"silent":[158,160,170,172],"hamzat_wasl":[84,85,140,141,173,174,246,247]},
+"25": {"ghunnah":[30,33],"ikhfa":[42,45],"madd_2":[16,17,20,21,38,39],"madd_246":[74,75],"qalqalah":[75,76]},
+"26": {"ghunnah":[14,17,73,76,151,154],"ikhfa":[39,43,131,135,178,182,209,213],"ikhfa_shafawi":[62,66],"iqlab":[217,221],"lam_shamsiyyah":[72,73],"madd_2":[2,3,8,9,27,28],"madd_246":[248,249],"qalqalah":[249,250],"silent":[231,233],"hamzat_wasl":[45,46,57,58,71,72,82,83,107,108,141,142,155,156,188,189,241,242]},
+"27": {"ghunnah":[77,80,139,142],"ikhfa":[64,69],"idghaam_no_ghunnah":[108,113],"lam_shamsiyyah":[17,18,138,139],"madd_2":[60,61,69,70],"madd_246":[142,143],"madd_muttasil":[23,25],"qalqalah":[10,12],"silent":[98,100,129,131],"hamzat_wasl":[16,17,30,31,81,82,137,138]},
+"28": {"lam_shamsiyyah":[48,49],"madd_2":[52,53,57,58],"madd_246":[130,131],"qalqalah":[7,9,99,101],"silent":[32,34,44,46],"hamzat_wasl":[14,15,47,48,63,64,82,83,106,107,122,123]},
+"29": {"ikhfa":[10,13],"idghaam_no_ghunnah":[38,43],"madd_2":[4,5,17,18,34,35,63,64,68,69],"madd_246":[105,106],"madd_munfasil":[53,55],"qalqalah":[106,107],"silent":[55,57,88,90,93,95],"hamzat_wasl":[96,97]},
+"30": {"ghunnah":[54,57],"madd_2":[19,20,31,32],"madd_246":[67,68],"madd_munfasil":[59,61],"qalqalah":[6,8,47,49,68,69],"hamzat_wasl":[42,43]},
+"31": {"lam_shamsiyyah":[35,36],"madd_2":[39,40,44,45],"madd_246":[55,56],"qalqalah":[56,57],"hamzat_wasl":[23,24,34,35,48,49]},
+"32": {"ghunnah":[10,13],"ikhfa":[45,49],"madd_246":[88,89],"madd_munfasil":[13,15],"qalqalah":[22,24,89,90],"hamzat_wasl":[33,34,81,82]},
+"33": {"iqlab":[32,37],"lam_shamsiyyah":[39,40],"madd_246":[58,59],"qalqalah":[59,60],"hamzat_wasl":[38,39,49,50]},
+"34": {"ghunnah":[13,16,74,77],"ikhfa":[69,74],"madd_2":[26,27,62,63],"madd_246":[82,83],"qalqalah":[6,8,83,84]},
+"35": {"ghunnah":[84,87],"ikhfa":[92,95],"iqlab":[51,53,71,74],"idghaam_ghunnah":[65,70],"idghaam_no_ghunnah":[40,46],"madd_246":[104,105],"madd_munfasil":[79,81],"qalqalah":[28,30,105,106],"hamzat_wasl":[12,13,96,97]},
+"36": {"lam_shamsiyyah":[19,20],"madd_2":[45,46],"madd_246":[67,68],"madd_muttasil":[51,53],"qalqalah":[29,31,68,69],"hamzat_wasl":[18,19]},
+"37": {"ghunnah":[24,27],"idghaam_ghunnah":[30,34],"lam_shamsiyyah":[3,4],"madd_2":[9,10],"madd_246":[39,40],"madd_muttasil":[27,29],"hamzat_wasl":[2,3]},
+"38": {"madd_246":[39,40],"qalqalah":[40,41],"hamzat_wasl":[30,31]},
+"39": {"madd_2":[2,3],"madd_246":[56,57],"madd_muttasil":[11,13],"qalqalah":[57,58],"hamzat_wasl":[21,22]},
+"40": {"ghunnah":[4,7],"ikhfa":[16,19],"madd_2":[12,13],"madd_246":[48,49],"qalqalah":[49,50]},
+"41": {"ghunnah":[55,58],"idghaam_ghunnah":[90,94],"lam_shamsiyyah":[71,72],"madd_2":[79,80],"madd_246":[98,99],"madd_munfasil":[18,20,50,52],"qalqalah":[12,14,99,100],"hamzat_wasl":[2,3,70,71]},
+"42": {"iqlab":[35,39],"idghaam_ghunnah":[44,48],"madd_2":[21,22],"madd_246":[52,53],"qalqalah":[12,14,53,54]},
+"43": {"ghunnah":[63,66],"idghaam_ghunnah":[58,63],"idghaam_shafawi":[39,44],"madd_2":[27,28],"madd_246":[98,99],"madd_munfasil":[16,18],"qalqalah":[6,8,99,100],"silent":[83,85],"hamzat_wasl":[89,90]},
+"44": {"ghunnah":[57,60,103,106],"ikhfa":[21,26],"idghaam_ghunnah":[80,86],"madd_2":[38,39,70,71],"madd_246":[116,117],"madd_munfasil":[108,110],"qalqalah":[66,68,96,98,117,118],"hamzat_wasl":[26,27,91,92]},
+"45": {"madd_2":[14,15,28,29,43,44],"madd_246":[89,90],"madd_munfasil":[19,21],"qalqalah":[24,26,85,87],"silent":[61,63],"hamzat_wasl":[2,3,67,68,80,81]},
+"46": {"ghunnah":[2,5],"ikhfa":[33,37],"ikhfa_shafawi":[21,25],"lam_shamsiyyah":[44,45],"madd_2":[18,19],"madd_246":[48,49],"madd_munfasil":[5,7],"hamzat_wasl":[43,44]},
+"47": {"ghunnah":[4,7],"ikhfa":[14,17],"madd_246":[53,54],"hamzat_wasl":[28,29,44,45]},
+"48": {"idghaam_ghunnah":[57,62],"madd_2":[16,17],"madd_246":[74,75],"hamzat_wasl":[2,3,25,26,41,42,65,66]},
+"49": {"ghunnah":[18,21],"idghaam_ghunnah":[12,16],"madd_2":[2,3],"madd_246":[51,52],"qalqalah":[52,53]},
+"50": {"ghunnah":[2,5],"idghaam_ghunnah":[14,19],"idghaam_no_ghunnah":[27,32],"madd_2":[5,6],"madd_246":[46,47],"qalqalah":[11,13,42,44,47,48],"hamzat_wasl":[37,38]},
+"51": {"ikhfa":[48,52],"idghaam_ghunnah":[58,62],"madd_2":[42,43],"madd_246":[66,67],"qalqalah":[23,25,67,68]},
+"52": {"ikhfa":[4,7],"lam_shamsiyyah":[24,25],"madd_2":[14,15,19,20],"madd_246":[39,40],"qalqalah":[40,41],"hamzat_wasl":[23,24]},
+"53": {"madd_2":[2,3],"madd_246":[38,39],"qalqalah":[39,40],"hamzat_wasl":[31,32]},
+"54": {"ghunnah":[2,5],"idghaam_ghunnah":[37,42],"madd_2":[8,9,33,34],"madd_246":[44,45],"qalqalah":[45,46]},
+"55": {"ghunnah":[11,14],"lam_shamsiyyah":[17,18],"madd_2":[2,3,21,22],"madd_246":[41,42],"qalqalah":[42,43]},
+"56": {"ghunnah":[4,7],"madd_246":[40,41],"qalqalah":[41,42],"hamzat_wasl":[33,34]},
+"57": {"idghaam_ghunnah":[28,32],"madd_2":[2,3],"madd_246":[37,38],"qalqalah":[38,39]},
+"58": {"ikhfa":[12,16],"madd_246":[31,32],"madd_munfasil":[22,24],"qalqalah":[32,33]},
+"59": {"ghunnah":[60,63,79,82],"iqlab":[47,52],"idghaam_ghunnah":[12,17,24,29],"lam_shamsiyyah":[78,79],"madd_2":[2,3],"madd_246":[82,83],"qalqalah":[17,19],"silent":[74,76],"hamzat_wasl":[77,78]},
+"60": {"ikhfa":[16,19,46,49],"iqlab":[33,38],"madd_246":[89,90],"silent":[6,8],"hamzat_wasl":[82,83]},
+"61": {"ghunnah":[75,78],"ikhfa":[20,24,58,63,66,71],"lam_shamsiyyah":[74,75],"madd_2":[38,39],"madd_246":[78,79],"qalqalah":[47,49],"silent":[6,8],"hamzat_wasl":[73,74]},
+"62": {"ghunnah":[43,46],"ikhfa":[38,43],"idghaam_shafawi":[57,62],"madd_246":[74,75],"silent":[8,10],"hamzat_wasl":[65,66]},
+"63": {"madd_2":[11,12],"madd_246":[59,60],"qalqalah":[55,57],"hamzat_wasl":[50,51]},
+"64": {"ghunnah":[2,5,41,44],"ikhfa":[20,24],"lam_shamsiyyah":[40,41],"madd_2":[8,9],"madd_246":[44,45],"hamzat_wasl":[39,40]},
+"65": {"ghunnah":[7,10],"ikhfa":[24,27],"idghaam_ghunnah":[28,32],"madd_2":[45,46,69,70],"madd_246":[83,84],"madd_munfasil":[12,14],"hamzat_wasl":[56,57,64,65,75,76]},
+"66": {"lam_shamsiyyah":[7,8],"madd_2":[13,14,16,17],"madd_246":[69,70],"hamzat_wasl":[6,7,22,23,50,51,61,62]},
+"67": {"madd_246":[23,24],"silent":[16,18]},
+"68": {"ikhfa":[2,5],"madd_246":[23,24]},
+"69": {"iqlab":[25,29],"madd_246":[68,69],"madd_munfasil":[49,52],"hamzat_wasl":[30,31,40,41]},
+"70": {"ghunnah":[31,34],"idghaam_ghunnah":[2,6,52,57],"madd_246":[59,60],"madd_munfasil":[9,12,26,28,36,38]},
+"71": {"ghunnah":[38,41],"ikhfa":[63,67],"iqlab":[49,53],"idghaam_ghunnah":[57,63],"madd_2":[45,46],"madd_246":[67,68],"madd_muttasil":[27,29]},
+"72": {"idghaam_no_ghunnah":[40,45],"madd_2":[19,20,64,65,68,69],"madd_246":[73,74],"silent":[57,59]},
+"73": {"madd_246":[43,44],"madd_muttasil":[16,18],"qalqalah":[37,39],"hamzat_wasl":[9,10]},
+"74": {"madd_2":[48,49],"madd_246":[53,54],"madd_munfasil":[5,7],"qalqalah":[10,12],"hamzat_wasl":[18,19,43,44]},
+"75": {"ikhfa":[35,39,93,96],"madd_246":[110,111],"madd_munfasil":[8,10],"qalqalah":[12,14,56,58],"hamzat_wasl":[102,103]},
+"76": {"ikhfa":[67,71],"idghaam_ghunnah":[18,23,42,47,49,53],"madd_2":[63,64],"madd_246":[71,72],"qalqalah":[32,34,57,59]},
+"77": {"ghunnah":[28,31],"madd_246":[38,39],"qalqalah":[13,15],"hamzat_wasl":[8,9]},
+"78": {"ghunnah":[4,7],"lam_shamsiyyah":[43,44],"madd_246":[47,48],"madd_munfasil":[25,27],"hamzat_wasl":[42,43]},
+"79": {"ikhfa":[16,19],"madd_246":[48,49],"madd_munfasil":[23,25],"qalqalah":[42,44]},
+"80": {"ghunnah":[10,13],"ikhfa":[26,29],"madd_246":[31,32],"hamzat_wasl":[21,22]},
+"81": {"madd_246":[33,34],"qalqalah":[19,21],"hamzat_wasl":[14,15,24,25]},
+"82": {"ghunnah":[30,33],"madd_246":[46,47],"qalqalah":[40,42]},
+"83": {"madd_246":[37,38],"hamzat_wasl":[26,27]},
+"84": {"madd_246":[32,33],"hamzat_wasl":[8,9,19,20]},
+"85": {"ghunnah":[10,13,18,21,34,37],"ikhfa":[26,29,37,41],"madd_246":[65,66],"qalqalah":[59,61]},
+"86": {"idghaam_ghunnah":[43,47],"madd_246":[78,79],"madd_munfasil":[7,9,49,51],"qalqalah":[40,42],"hamzat_wasl":[64,65]},
+"87": {"idghaam_no_ghunnah":[22,27],"madd_2":[31,32],"madd_246":[36,37]},
+"88": {"ghunnah":[12,15],"madd_2":[24,25],"madd_246":[35,36]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/39.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/39.json
index 42e9bd8..54ada98 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/39.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/39.json
@@ -1,77 +1,77 @@
{
-"1": {"ghunnah":[41,44],"madd":[55,56,90,91],"wasl":[48,49,64,65,72,73,83,84]},
-"2": {"ghunnah":[2,5,10,13],"idgham":[76,82,86,87],"madd":[5,7,17,19,36,37,90,91],"wasl":[29,30,42,43,53,54,61,62,85,86]},
-"3": {"ghunnah":[60,64,152,155,219,222,259,263],"idgham":[15,16],"madd":[69,71,80,82,123,125,146,149,255,256,266,267],"silent":[55,57],"wasl":[14,15,23,24,36,37,46,47,132,133,156,157,223,224]},
-"4": {"ghunnah":[59,62],"idgham":[24,28,41,47],"madd":[81,83,92,93,97,98,117,118,131,132],"qalqalah":[88,90],"wasl":[14,15,47,48,104,105,112,113,123,124]},
-"5": {"ghunnah":[71,74,94,97,178,181],"idgham":[8,9,70,71,93,94,129,130,154,158,171,176],"madd":[14,15,17,18,213,214],"qalqalah":[158,160],"wasl":[7,8,23,24,35,36,54,55,69,70,92,93,109,110,128,129,140,141,194,195,205,206]},
-"6": {"ghunnah":[31,35,35,38,68,71,148,151,173,176,187,191,201,205,209,213,283,286],"idgham":[8,13,13,18,21,25,78,83,119,123,166,172],"madd":[25,26,95,96,103,104,117,118,153,154,199,200,207,208,213,214,256,258,263,264,297,298],"wasl":[86,87,221,222,244,245]},
-"7": {"ghunnah":[2,6,20,23,42,45,89,93,160,163,207,211,217,220,237,240,250,254],"idgham":[140,144,178,183,262,263],"madd":[242,243,268,269],"silent":[13,15,100,102],"wasl":[24,25,75,76,261,262]},
-"8": {"ghunnah":[19,22,30,34,67,70,144,148,172,175,193,197,243,246,266,269],"idgham":[95,100,177,183,265,266],"madd":[22,23,45,46,86,87,128,130,204,205,260,261,269,270],"qalqalah":[124,126,148,150],"silent":[130,132],"wasl":[14,15,264,265]},
-"9": {"ghunnah":[2,5,185,188],"idgham":[46,51,58,63],"madd":[15,16,26,28,53,55,111,112,223,224],"qalqalah":[224,225],"silent":[92,94,206,208,211,213],"wasl":[31,32,70,71,133,134,157,158,214,215]},
-"10": {"ghunnah":[141,144,179,183],"idgham":[93,94,110,114,158,159],"madd":[7,8,86,87,131,132,162,163,194,195],"qalqalah":[173,175,195,196],"silent":[34,36,44,46,77,79],"wasl":[16,17,37,38,92,93,121,122,157,158]},
-"11": {"ghunnah":[7,10],"idgham":[51,57,61,62],"madd":[10,12,65,66],"wasl":[36,37,60,61]},
-"12": {"madd":[45,46],"wasl":[34,35]},
-"13": {"ghunnah":[7,10],"madd":[10,12,61,62]},
-"14": {"idgham":[29,35],"madd":[37,38],"wasl":[5,6]},
-"15": {"ghunnah":[28,32,46,49,87,90],"idgham":[23,28],"madd":[37,38,55,56,80,82,125,126,139,140,170,171],"silent":[10,12,82,84],"wasl":[2,3,50,51,64,65,118,119,150,151,163,164]},
-"16": {"ghunnah":[9,13,37,40,48,52,66,70],"idgham":[4,9,27,32,36,37],"madd":[70,71,98,99,109,110,113,114,130,131],"wasl":[35,36,86,87,124,125]},
-"17": {"idgham":[26,27,39,43],"madd":[30,31,63,65,115,116],"qalqalah":[13,15,116,117],"silent":[22,24,65,67],"wasl":[2,3,12,13,25,26,74,75,89,90]},
-"18": {"madd":[59,61,68,70,90,91,112,114,143,144],"qalqalah":[144,145],"silent":[64,66,108,110,126,128,131,133],"wasl":[24,25,75,76,96,97,134,135]},
-"19": {"ghunnah":[50,53,56,59,64,68,72,75],"idgham":[71,72],"madd":[75,76],"wasl":[33,34,70,71]},
-"20": {"ghunnah":[56,60,86,90,98,102],"idgham":[51,56,73,78],"madd":[2,3,119,120,167,168],"qalqalah":[78,80,90,92,168,169],"silent":[26,28],"wasl":[8,9,18,19,110,111,130,131,151,152,159,160]},
-"21": {"ghunnah":[14,17,28,31,56,60,97,100,152,155,183,188,188,191,215,218],"idgham":[40,41,121,127],"madd":[46,48,53,55,68,69,74,75,114,115,143,144,148,149,171,172,202,203,208,209,225,226,261,262],"qalqalah":[194,196,262,263],"silent":[246,248],"wasl":[18,19,39,40,85,86,252,253]},
-"22": {"ghunnah":[6,10,120,124],"idgham":[65,70,70,75,89,94,115,120,160,165],"madd":[31,32,43,44,80,81,98,99,143,145,158,159,167,168],"qalqalah":[25,27],"silent":[139,141],"wasl":[15,16,129,130]},
-"23": {"ghunnah":[130,133],"idgham":[42,48,56,62,228,232,243,247],"madd":[40,41,52,53,192,193,224,225,234,236,272,273,281,282],"qalqalah":[72,74,282,283],"wasl":[25,26,97,98,182,183,204,205,254,255]},
-"24": {"ghunnah":[105,108],"idgham":[6,10,77,78],"madd":[27,28,31,33,61,62,81,82,119,120],"qalqalah":[21,23],"silent":[96,98],"wasl":[36,37,54,55]},
-"25": {"ghunnah":[20,24],"madd":[40,41,81,82],"qalqalah":[24,26],"wasl":[8,9,46,47]},
-"26": {"idgham":[49,50],"madd":[44,45,115,116],"silent":[43,44,104,106],"wasl":[14,15,22,23,36,37,48,49,71,72]},
-"27": {"ghunnah":[22,25,55,59],"idgham":[21,22,68,73],"madd":[35,36,94,95],"qalqalah":[6,8,13,15],"wasl":[40,41]},
-"28": {"idgham":[38,43],"madd":[60,61]},
-"29": {"ghunnah":[29,34,71,76],"idgham":[20,26,79,85],"madd":[44,46,55,56,167,168],"wasl":[7,8,119,120]},
-"30": {"ghunnah":[2,5,20,23],"idgham":[14,18,25,30],"madd":[35,36]},
-"31": {"ghunnah":[2,5,8,11,38,41],"madd":[30,31,62,63],"wasl":[23,24]},
-"32": {"ghunnah":[18,21,21,25,99,102],"idgham":[57,58,110,116],"madd":[73,75,79,81,120,121,125,126],"qalqalah":[61,63],"wasl":[36,37,56,57]},
-"33": {"idgham":[20,21],"madd":[12,14,43,45,52,54,74,75],"qalqalah":[24,26],"silent":[48,50],"wasl":[2,3,19,20,64,65]},
-"34": {"ghunnah":[25,28],"idgham":[4,9],"madd":[15,17,41,42,51,53,67,68],"wasl":[56,57]},
-"35": {"ghunnah":[79,83],"madd":[117,118],"qalqalah":[60,62,73,75],"silent":[53,55,106,108],"wasl":[12,13,38,39,92,93]},
-"36": {"ghunnah":[66,70],"idgham":[81,85],"madd":[33,34,75,76,110,111,119,120],"qalqalah":[27,29,120,121],"wasl":[9,10,54,55,92,93]},
-"37": {"ghunnah":[71,75,78,81],"idgham":[4,8,35,40],"madd":[31,32,83,84],"wasl":[13,14,55,56,77,78]},
-"38": {"ghunnah":[6,10,68,71,116,120,172,175,231,234],"idgham":[18,23,34,35,97,102],"madd":[40,41,43,44,178,179,183,184,194,196,243,244,257,258,316,317],"qalqalah":[106,108],"wasl":[33,34,49,50,72,73,124,125,149,150,273,274,302,303]},
-"39": {"ghunnah":[49,52,60,64],"madd":[7,8,56,57,79,80],"silent":[23,25],"wasl":[15,16]},
-"40": {"idgham":[2,6,20,24,57,62],"madd":[64,65]},
-"41": {"ghunnah":[2,5,10,13,42,45,95,99,107,110,141,144,153,157],"idgham":[41,42],"madd":[5,7,35,36,89,90,136,138,161,162],"wasl":[28,29,51,52,67,68]},
-"42": {"ghunnah":[24,27,173,176,180,183],"idgham":[166,171,205,210,215,219],"madd":[149,152,157,160,190,191,203,204,228,229],"wasl":[19,20,48,49,94,95,119,120,140,141]},
-"43": {"ghunnah":[19,23],"idgham":[91,96],"madd":[41,43,108,109],"silent":[14,16,66,68],"wasl":[5,6,27,28]},
-"44": {"ghunnah":[77,80],"idgham":[14,15,32,38,50,51],"madd":[20,21,40,41,56,57,59,60,98,99],"wasl":[13,14,49,50,65,66]},
-"45": {"ghunnah":[121,125],"madd":[130,132,156,157],"qalqalah":[150,152],"wasl":[15,16,32,33,53,54,81,82,109,110]},
-"46": {"ghunnah":[12,15,85,88],"idgham":[6,7,25,26,71,72],"madd":[31,32,34,35,52,53,77,78,148,149],"silent":[129,131],"wasl":[5,6,24,25,40,41,58,59,70,71]},
-"47": {"ghunnah":[9,12,103,107],"idgham":[58,63,155,160],"madd":[71,72,79,80,99,100,107,109,137,138,201,202],"silent":[31,33,92,94,188,190],"wasl":[42,43,83,84,112,113,130,131,163,164]},
-"48": {"idgham":[53,58],"madd":[73,74,87,88],"silent":[38,40,66,68]},
-"49": {"ghunnah":[19,22,30,34,43,46,78,81,91,94,123,127,152,155],"idgham":[73,78,143,147],"madd":[22,23,62,63,96,98,109,110,149,150,181,182],"wasl":[14,15]},
-"50": {"ghunnah":[26,30],"idgham":[61,66],"madd":[43,45,85,86],"qalqalah":[2,4,30,32],"silent":[74,76],"wasl":[14,15]},
-"51": {"ghunnah":[128,132],"madd":[69,71,75,77,140,141],"silent":[37,39,59,61,117,119],"wasl":[42,43]},
-"52": {"ghunnah":[24,27,83,86],"idgham":[46,47,59,63,108,113,118,122],"madd":[17,19,65,67,93,94,106,107,128,129],"qalqalah":[38,40,74,76],"silent":[19,21],"wasl":[28,29,45,46]},
-"53": {"ghunnah":[50,53,100,103,143,146],"idgham":[78,83,122,123,167,168],"madd":[7,8,44,47,148,149,173,174],"qalqalah":[66,68],"silent":[37,39,73,75],"wasl":[18,19,90,91,104,105,121,122,155,156,166,167]},
-"54": {"ghunnah":[53,57,92,95,102,105],"idgham":[64,68],"madd":[9,11,49,50,107,108],"qalqalah":[57,59],"silent":[11,13,42,44],"wasl":[79,80]},
-"55": {"ghunnah":[31,34,65,69,115,118],"idgham":[45,50,50,55,60,65,76,80,109,113],"madd":[10,12,26,28,133,134],"qalqalah":[69,71],"silent":[12,14],"wasl":[2,3,91,92]},
-"56": {"ghunnah":[2,6,60,62,76,80,80,83],"idgham":[17,21,92,93],"madd":[21,22,96,97,101,102],"wasl":[64,65,91,92]},
-"57": {"ghunnah":[20,23,46,49],"madd":[37,38,65,66],"wasl":[24,25,55,56]},
-"58": {"ghunnah":[43,46,57,61],"madd":[85,86],"wasl":[25,26,74,75]},
-"59": {"ghunnah":[71,74],"madd":[14,16,28,29,85,86,90,91],"qalqalah":[9,11,40,42],"wasl":[53,54,80,81]},
-"60": {"ghunnah":[103,106],"idgham":[71,76,114,120],"madd":[16,17,133,134],"silent":[45,47],"wasl":[9,10,28,29,54,55]},
-"61": {"idgham":[73,74],"madd":[77,79,101,102],"silent":[37,39],"wasl":[11,12,19,20,29,30,72,73]},
-"62": {"idgham":[27,31,54,58],"madd":[10,11,60,61]},
-"63": {"idgham":[19,20],"madd":[5,6,25,26,28,29,74,75,92,94,109,110,114,115],"silent":[63,65,88,90],"wasl":[18,19,34,35,46,47,78,79,104,105]},
-"64": {"ghunnah":[34,37],"madd":[37,39,63,64,68,69],"madd-lazim":[32,34],"wasl":[16,17,58,59]},
-"65": {"ghunnah":[46,50,85,88,109,112],"madd":[123,124,128,129],"qalqalah":[6,8,50,52],"wasl":[34,35,118,119]},
-"66": {"idgham":[27,32,36,37],"madd":[40,41,45,46],"qalqalah":[20,22],"wasl":[5,6,15,16,35,36]},
-"67": {"ghunnah":[58,63,120,124,163,166],"idgham":[96,97],"madd":[38,39,71,72,87,88,102,103,105,106,118,119,134,135,142,143,147,148,155,156,176,177],"qalqalah":[32,34,63,65,111,113,138,140],"silent":[13,15],"wasl":[16,17,42,43,80,81,95,96]},
-"68": {"ghunnah":[33,37,57,61,82,86,101,104,150,153],"idgham":[14,15,40,41,146,150],"madd":[46,47,49,50,86,88,155,156],"wasl":[13,14,39,40,63,64,91,92]},
-"69": {"ghunnah":[75,78,120,124],"idgham":[74,75,90,91],"madd":[56,57,66,68,83,84,98,100,152,153],"silent":[64,66],"wasl":[13,14,49,50,73,74,89,90,124,125]},
-"70": {"idgham":[23,28],"madd":[69,70]},
-"71": {"ghunnah":[40,43,158,161,208,211],"idgham":[153,158],"madd":[24,26,59,62,71,73,95,96,127,129,190,191,225,227,243,244,268,269,313,314,318,319],"qalqalah":[91,93],"silent":[26,28,254,256],"wasl":[8,9,291,292,308,309]},
-"72": {"ghunnah":[32,35],"madd":[13,15,24,25,40,41,87,88],"qalqalah":[7,9,20,22],"silent":[15,17],"wasl":[6,7,73,74]},
-"73": {"ghunnah":[50,53],"madd":[69,72,81,83,107,108,145,146,185,186,190,191],"qalqalah":[103,105,162,164,172,174],"silent":[26,28],"wasl":[8,9,18,19,45,46,171,172]},
-"74": {"ghunnah":[103,106],"madd":[55,56,120,122,146,147,151,152],"qalqalah":[136,138],"silent":[8,10],"wasl":[11,12,29,30,71,72,98,99,141,142]},
-"75": {"ghunnah":[106,110],"madd":[15,17,156,157,161,162],"madd-lazim":[26,28],"wasl":[8,9,47,48,110,111,127,128,151,152]}
+"1": {"ikhfa":[41,44],"madd_2":[55,56],"madd_246":[90,91],"hamzat_wasl":[48,49,64,65,72,73,83,84]},
+"2": {"ghunnah":[2,5],"ikhfa":[10,13],"idghaam_no_ghunnah":[76,82],"lam_shamsiyyah":[86,87],"madd_2":[36,37],"madd_246":[90,91],"madd_munfasil":[5,7,17,19],"hamzat_wasl":[29,30,42,43,53,54,61,62,85,86]},
+"3": {"ghunnah":[152,155,219,222],"ikhfa":[60,64,259,263],"lam_shamsiyyah":[15,16],"madd_2":[255,256],"madd_246":[266,267],"madd_munfasil":[69,71,123,125,146,149],"madd_muttasil":[80,82],"silent":[55,57],"hamzat_wasl":[14,15,23,24,36,37,46,47,132,133,156,157,223,224]},
+"4": {"ghunnah":[59,62],"idghaam_ghunnah":[24,28],"idghaam_no_ghunnah":[41,47],"madd_2":[92,93,97,98,117,118],"madd_246":[131,132],"madd_muttasil":[81,83],"qalqalah":[88,90],"hamzat_wasl":[14,15,47,48,104,105,112,113,123,124]},
+"5": {"ghunnah":[71,74,94,97,178,181],"idghaam_ghunnah":[154,158,171,176],"lam_shamsiyyah":[8,9,70,71,93,94,129,130],"madd_2":[14,15,17,18],"madd_246":[213,214],"qalqalah":[158,160],"hamzat_wasl":[7,8,23,24,35,36,54,55,69,70,92,93,109,110,128,129,140,141,194,195,205,206]},
+"6": {"ghunnah":[35,38,148,151,283,286],"ikhfa":[31,35,68,71,187,191,201,205,209,213],"iqlab":[173,176],"idghaam_ghunnah":[13,18,21,25,119,123,166,172],"idghaam_shafawi":[8,13,78,83],"madd_2":[25,26,95,96,103,104,117,118,153,154,199,200,207,208,213,214,263,264],"madd_246":[297,298],"madd_munfasil":[256,258],"hamzat_wasl":[86,87,221,222,244,245]},
+"7": {"ghunnah":[20,23,160,163,237,240],"ikhfa":[2,6,42,45,89,93,217,220],"ikhfa_shafawi":[207,211],"iqlab":[250,254],"idghaam_ghunnah":[140,144],"idghaam_shafawi":[178,183],"lam_shamsiyyah":[262,263],"madd_2":[242,243],"madd_246":[268,269],"silent":[13,15,100,102],"hamzat_wasl":[24,25,75,76,261,262]},
+"8": {"ghunnah":[67,70,243,246,266,269],"ikhfa":[19,22,30,34,144,148,172,175,193,197],"idghaam_ghunnah":[95,100],"idghaam_no_ghunnah":[177,183],"lam_shamsiyyah":[265,266],"madd_2":[22,23,45,46,86,87,204,205,260,261],"madd_246":[269,270],"madd_munfasil":[128,130],"qalqalah":[124,126,148,150],"silent":[130,132],"hamzat_wasl":[14,15,264,265]},
+"9": {"ghunnah":[2,5,185,188],"idghaam_ghunnah":[46,51,58,63],"madd_2":[15,16,111,112],"madd_246":[223,224],"madd_muttasil":[26,28,53,55],"qalqalah":[224,225],"silent":[92,94,206,208,211,213],"hamzat_wasl":[31,32,70,71,133,134,157,158,214,215]},
+"10": {"ghunnah":[141,144],"ikhfa_shafawi":[179,183],"idghaam_ghunnah":[110,114],"lam_shamsiyyah":[93,94,158,159],"madd_2":[7,8,86,87,131,132,162,163],"madd_246":[194,195],"qalqalah":[173,175,195,196],"silent":[34,36,44,46,77,79],"hamzat_wasl":[16,17,37,38,92,93,121,122,157,158]},
+"11": {"ghunnah":[7,10],"idghaam_no_ghunnah":[51,57],"lam_shamsiyyah":[61,62],"madd_246":[65,66],"madd_munfasil":[10,12],"hamzat_wasl":[36,37,60,61]},
+"12": {"madd_246":[45,46],"hamzat_wasl":[34,35]},
+"13": {"ghunnah":[7,10],"madd_246":[61,62],"madd_munfasil":[10,12]},
+"14": {"idghaam_no_ghunnah":[29,35],"madd_2":[37,38],"hamzat_wasl":[5,6]},
+"15": {"ghunnah":[46,49],"ikhfa":[28,32,87,90],"idghaam_shafawi":[23,28],"madd_2":[37,38,55,56,125,126,139,140],"madd_246":[170,171],"madd_munfasil":[80,82],"silent":[10,12,82,84],"hamzat_wasl":[2,3,50,51,64,65,118,119,150,151,163,164]},
+"16": {"ghunnah":[37,40],"ikhfa":[9,13,48,52,66,70],"idghaam_ghunnah":[27,32],"idghaam_shafawi":[4,9],"lam_shamsiyyah":[36,37],"madd_2":[70,71,98,99,109,110,113,114],"madd_246":[130,131],"hamzat_wasl":[35,36,86,87,124,125]},
+"17": {"idghaam_ghunnah":[39,43],"lam_shamsiyyah":[26,27],"madd_2":[30,31],"madd_246":[115,116],"madd_munfasil":[63,65],"qalqalah":[13,15,116,117],"silent":[22,24,65,67],"hamzat_wasl":[2,3,12,13,25,26,74,75,89,90]},
+"18": {"madd_2":[90,91],"madd_246":[143,144],"madd_munfasil":[59,61],"madd_muttasil":[68,70,112,114],"qalqalah":[144,145],"silent":[64,66,108,110,126,128,131,133],"hamzat_wasl":[24,25,75,76,96,97,134,135]},
+"19": {"ghunnah":[72,75],"ikhfa":[50,53,56,59,64,68],"lam_shamsiyyah":[71,72],"madd_246":[75,76],"hamzat_wasl":[33,34,70,71]},
+"20": {"ikhfa":[56,60,86,90,98,102],"idghaam_ghunnah":[51,56,73,78],"madd_2":[2,3,119,120],"madd_246":[167,168],"qalqalah":[78,80,90,92,168,169],"silent":[26,28],"hamzat_wasl":[8,9,18,19,110,111,130,131,151,152,159,160]},
+"21": {"ghunnah":[14,17,97,100,152,155,188,191,215,218],"ikhfa":[28,31,56,60,183,188],"idghaam_ghunnah":[121,127],"lam_shamsiyyah":[40,41],"madd_2":[68,69,74,75,114,115,143,144,148,149,171,172,202,203,208,209,225,226],"madd_246":[261,262],"madd_muttasil":[46,48,53,55],"qalqalah":[194,196,262,263],"silent":[246,248],"hamzat_wasl":[18,19,39,40,85,86,252,253]},
+"22": {"ikhfa":[6,10,120,124],"idghaam_ghunnah":[65,70,160,165],"idghaam_no_ghunnah":[70,75,89,94],"idghaam_shafawi":[115,120],"madd_2":[31,32,43,44,80,81,98,99,158,159],"madd_246":[167,168],"madd_muttasil":[143,145],"qalqalah":[25,27],"silent":[139,141],"hamzat_wasl":[15,16,129,130]},
+"23": {"ghunnah":[130,133],"idghaam_ghunnah":[42,48,56,62,228,232,243,247],"madd_2":[40,41,52,53,192,193,224,225,272,273],"madd_246":[281,282],"madd_muttasil":[234,236],"qalqalah":[72,74,282,283],"hamzat_wasl":[25,26,97,98,182,183,204,205,254,255]},
+"24": {"ikhfa":[105,108],"idghaam_ghunnah":[6,10],"lam_shamsiyyah":[77,78],"madd_2":[27,28,61,62,81,82],"madd_246":[119,120],"madd_muttasil":[31,33],"qalqalah":[21,23],"silent":[96,98],"hamzat_wasl":[36,37,54,55]},
+"25": {"ikhfa":[20,24],"madd_2":[40,41],"madd_246":[81,82],"qalqalah":[24,26],"hamzat_wasl":[8,9,46,47]},
+"26": {"lam_shamsiyyah":[49,50],"madd_2":[44,45],"madd_246":[115,116],"silent":[43,44,104,106],"hamzat_wasl":[14,15,22,23,36,37,48,49,71,72]},
+"27": {"ghunnah":[22,25],"ikhfa":[55,59],"idghaam_no_ghunnah":[68,73],"lam_shamsiyyah":[21,22],"madd_2":[35,36],"madd_246":[94,95],"qalqalah":[6,8,13,15],"hamzat_wasl":[40,41]},
+"28": {"idghaam_no_ghunnah":[38,43],"madd_246":[60,61]},
+"29": {"ikhfa":[29,34,71,76],"idghaam_no_ghunnah":[20,26,79,85],"madd_2":[55,56],"madd_246":[167,168],"madd_muttasil":[44,46],"hamzat_wasl":[7,8,119,120]},
+"30": {"ghunnah":[2,5,20,23],"idghaam_ghunnah":[14,18],"idghaam_shafawi":[25,30],"madd_246":[35,36]},
+"31": {"ghunnah":[2,5,8,11],"ikhfa":[38,41],"madd_2":[30,31],"madd_246":[62,63],"hamzat_wasl":[23,24]},
+"32": {"ghunnah":[18,21,99,102],"ikhfa":[21,25],"idghaam_no_ghunnah":[110,116],"lam_shamsiyyah":[57,58],"madd_2":[120,121],"madd_246":[125,126],"madd_munfasil":[79,81],"madd_muttasil":[73,75],"qalqalah":[61,63],"hamzat_wasl":[36,37,56,57]},
+"33": {"lam_shamsiyyah":[20,21],"madd_246":[74,75],"madd_munfasil":[43,45],"madd_muttasil":[12,14,52,54],"qalqalah":[24,26],"silent":[48,50],"hamzat_wasl":[2,3,19,20,64,65]},
+"34": {"ikhfa":[25,28],"idghaam_shafawi":[4,9],"madd_2":[41,42],"madd_246":[67,68],"madd_muttasil":[15,17,51,53],"hamzat_wasl":[56,57]},
+"35": {"ikhfa_shafawi":[79,83],"madd_246":[117,118],"qalqalah":[60,62,73,75],"silent":[53,55,106,108],"hamzat_wasl":[12,13,38,39,92,93]},
+"36": {"ikhfa":[66,70],"idghaam_ghunnah":[81,85],"madd_2":[33,34,75,76,110,111],"madd_246":[119,120],"qalqalah":[27,29,120,121],"hamzat_wasl":[9,10,54,55,92,93]},
+"37": {"ikhfa":[71,75,78,81],"idghaam_ghunnah":[4,8,35,40],"madd_2":[31,32],"madd_246":[83,84],"hamzat_wasl":[13,14,55,56,77,78]},
+"38": {"ghunnah":[68,71,172,175,231,234],"ikhfa":[6,10,116,120],"idghaam_shafawi":[18,23,97,102],"lam_shamsiyyah":[34,35],"madd_2":[40,41,43,44,178,179,183,184,243,244,257,258],"madd_246":[316,317],"madd_munfasil":[194,196],"qalqalah":[106,108],"hamzat_wasl":[33,34,49,50,72,73,124,125,149,150,273,274,302,303]},
+"39": {"ghunnah":[49,52],"ikhfa":[60,64],"madd_2":[7,8,56,57],"madd_246":[79,80],"silent":[23,25],"hamzat_wasl":[15,16]},
+"40": {"idghaam_ghunnah":[2,6,20,24,57,62],"madd_246":[64,65]},
+"41": {"ghunnah":[2,5,42,45,107,110],"ikhfa":[10,13,95,99,141,144],"ikhfa_shafawi":[153,157],"lam_shamsiyyah":[41,42],"madd_2":[35,36,89,90],"madd_246":[161,162],"madd_munfasil":[5,7,136,138],"hamzat_wasl":[28,29,51,52,67,68]},
+"42": {"ghunnah":[173,176,180,183],"ikhfa":[24,27],"idghaam_ghunnah":[166,171,215,219],"idghaam_no_ghunnah":[205,210],"madd_2":[190,191,203,204],"madd_246":[228,229],"madd_munfasil":[149,152,157,160],"hamzat_wasl":[19,20,48,49,94,95,119,120,140,141]},
+"43": {"ikhfa":[19,23],"idghaam_ghunnah":[91,96],"madd_246":[108,109],"madd_muttasil":[41,43],"silent":[14,16,66,68],"hamzat_wasl":[5,6,27,28]},
+"44": {"ghunnah":[77,80],"idghaam_no_ghunnah":[32,38],"lam_shamsiyyah":[14,15,50,51],"madd_2":[20,21,40,41,56,57,59,60],"madd_246":[98,99],"hamzat_wasl":[13,14,49,50,65,66]},
+"45": {"ikhfa":[121,125],"madd_246":[156,157],"madd_munfasil":[130,132],"qalqalah":[150,152],"hamzat_wasl":[15,16,32,33,53,54,81,82,109,110]},
+"46": {"ghunnah":[12,15],"ikhfa":[85,88],"lam_shamsiyyah":[6,7,25,26,71,72],"madd_2":[31,32,34,35,52,53,77,78],"madd_246":[148,149],"silent":[129,131],"hamzat_wasl":[5,6,24,25,40,41,58,59,70,71]},
+"47": {"ghunnah":[9,12],"ikhfa":[103,107],"idghaam_ghunnah":[58,63],"idghaam_shafawi":[155,160],"madd_2":[71,72,79,80,99,100,137,138],"madd_246":[201,202],"madd_muttasil":[107,109],"silent":[31,33,92,94,188,190],"hamzat_wasl":[42,43,83,84,112,113,130,131,163,164]},
+"48": {"idghaam_shafawi":[53,58],"madd_2":[73,74],"madd_246":[87,88],"silent":[38,40,66,68]},
+"49": {"ghunnah":[43,46,78,81,91,94,152,155],"ikhfa":[19,22,30,34],"iqlab":[123,127],"idghaam_ghunnah":[73,78,143,147],"madd_2":[22,23,62,63,109,110,149,150],"madd_246":[181,182],"madd_munfasil":[96,98],"hamzat_wasl":[14,15]},
+"50": {"ikhfa":[26,30],"idghaam_shafawi":[61,66],"madd_246":[85,86],"madd_munfasil":[43,45],"qalqalah":[2,4,30,32],"silent":[74,76],"hamzat_wasl":[14,15]},
+"51": {"ikhfa_shafawi":[128,132],"madd_246":[140,141],"madd_muttasil":[69,71,75,77],"silent":[37,39,59,61,117,119],"hamzat_wasl":[42,43]},
+"52": {"ghunnah":[24,27,83,86],"idghaam_ghunnah":[59,63,118,122],"idghaam_no_ghunnah":[108,113],"lam_shamsiyyah":[46,47],"madd_2":[93,94,106,107],"madd_246":[128,129],"madd_munfasil":[17,19],"madd_muttasil":[65,67],"qalqalah":[38,40,74,76],"silent":[19,21],"hamzat_wasl":[28,29,45,46]},
+"53": {"ghunnah":[100,103,143,146],"ikhfa":[50,53],"idghaam_no_ghunnah":[78,83],"lam_shamsiyyah":[122,123,167,168],"madd_2":[7,8,148,149],"madd_246":[173,174],"madd_munfasil":[44,47],"qalqalah":[66,68],"silent":[37,39,73,75],"hamzat_wasl":[18,19,90,91,104,105,121,122,155,156,166,167]},
+"54": {"ghunnah":[92,95],"ikhfa":[53,57,102,105],"idghaam_ghunnah":[64,68],"madd_2":[49,50],"madd_246":[107,108],"madd_munfasil":[9,11],"qalqalah":[57,59],"silent":[11,13,42,44],"hamzat_wasl":[79,80]},
+"55": {"ikhfa":[31,34,65,69,115,118],"idghaam_ghunnah":[76,80,109,113],"idghaam_no_ghunnah":[50,55],"idghaam_shafawi":[45,50,60,65],"madd_246":[133,134],"madd_munfasil":[10,12,26,28],"qalqalah":[69,71],"silent":[12,14],"hamzat_wasl":[2,3,91,92]},
+"56": {"ikhfa":[2,6,76,80,80,83],"iqlab":[60,62],"idghaam_ghunnah":[17,21],"lam_shamsiyyah":[92,93],"madd_2":[21,22,96,97],"madd_246":[101,102],"hamzat_wasl":[64,65,91,92]},
+"57": {"ghunnah":[20,23],"ikhfa":[46,49],"madd_2":[37,38],"madd_246":[65,66],"hamzat_wasl":[24,25,55,56]},
+"58": {"ghunnah":[43,46],"ikhfa":[57,61],"madd_246":[85,86],"hamzat_wasl":[25,26,74,75]},
+"59": {"ikhfa":[71,74],"madd_2":[28,29,85,86],"madd_246":[90,91],"madd_muttasil":[14,16],"qalqalah":[9,11,40,42],"hamzat_wasl":[53,54,80,81]},
+"60": {"ghunnah":[103,106],"idghaam_no_ghunnah":[114,120],"idghaam_shafawi":[71,76],"madd_2":[16,17],"madd_246":[133,134],"silent":[45,47],"hamzat_wasl":[9,10,28,29,54,55]},
+"61": {"lam_shamsiyyah":[73,74],"madd_246":[101,102],"madd_muttasil":[77,79],"silent":[37,39],"hamzat_wasl":[11,12,19,20,29,30,72,73]},
+"62": {"idghaam_ghunnah":[27,31,54,58],"madd_2":[10,11],"madd_246":[60,61]},
+"63": {"lam_shamsiyyah":[19,20],"madd_2":[5,6,25,26,28,29,74,75,109,110],"madd_246":[114,115],"madd_muttasil":[92,94],"silent":[63,65,88,90],"hamzat_wasl":[18,19,34,35,46,47,78,79,104,105]},
+"64": {"ghunnah":[34,37],"madd_2":[63,64],"madd_246":[68,69],"madd_munfasil":[37,39],"madd_6":[32,34],"hamzat_wasl":[16,17,58,59]},
+"65": {"ghunnah":[85,88,109,112],"ikhfa":[46,50],"madd_2":[123,124],"madd_246":[128,129],"qalqalah":[6,8,50,52],"hamzat_wasl":[34,35,118,119]},
+"66": {"idghaam_ghunnah":[27,32],"lam_shamsiyyah":[36,37],"madd_2":[40,41],"madd_246":[45,46],"qalqalah":[20,22],"hamzat_wasl":[5,6,15,16,35,36]},
+"67": {"ghunnah":[163,166],"ikhfa":[58,63],"iqlab":[120,124],"lam_shamsiyyah":[96,97],"madd_2":[38,39,71,72,87,88,102,103,105,106,118,119,134,135,142,143,147,148,155,156],"madd_246":[176,177],"qalqalah":[32,34,63,65,111,113,138,140],"silent":[13,15],"hamzat_wasl":[16,17,42,43,80,81,95,96]},
+"68": {"ghunnah":[101,104],"ikhfa":[33,37,57,61,82,86,150,153],"idghaam_ghunnah":[146,150],"lam_shamsiyyah":[14,15,40,41],"madd_2":[46,47,49,50],"madd_246":[155,156],"madd_muttasil":[86,88],"hamzat_wasl":[13,14,39,40,63,64,91,92]},
+"69": {"ghunnah":[75,78],"ikhfa_shafawi":[120,124],"lam_shamsiyyah":[74,75,90,91],"madd_2":[56,57,83,84],"madd_246":[152,153],"madd_muttasil":[66,68,98,100],"silent":[64,66],"hamzat_wasl":[13,14,49,50,73,74,89,90,124,125]},
+"70": {"idghaam_ghunnah":[23,28],"madd_246":[69,70]},
+"71": {"ghunnah":[40,43],"ikhfa":[158,161,208,211],"idghaam_ghunnah":[153,158],"madd_2":[95,96,190,191,243,244,268,269,313,314],"madd_246":[318,319],"madd_munfasil":[24,26,59,62,127,129],"madd_muttasil":[71,73,225,227],"qalqalah":[91,93],"silent":[26,28,254,256],"hamzat_wasl":[8,9,291,292,308,309]},
+"72": {"ghunnah":[32,35],"madd_2":[24,25,40,41],"madd_246":[87,88],"madd_munfasil":[13,15],"qalqalah":[7,9,20,22],"silent":[15,17],"hamzat_wasl":[6,7,73,74]},
+"73": {"ghunnah":[50,53],"madd_2":[107,108,145,146,185,186],"madd_246":[190,191],"madd_munfasil":[69,72],"madd_muttasil":[81,83],"qalqalah":[103,105,162,164,172,174],"silent":[26,28],"hamzat_wasl":[8,9,18,19,45,46,171,172]},
+"74": {"ghunnah":[103,106],"madd_2":[55,56,146,147],"madd_246":[151,152],"madd_muttasil":[120,122],"qalqalah":[136,138],"silent":[8,10],"hamzat_wasl":[11,12,29,30,71,72,98,99,141,142]},
+"75": {"ikhfa_shafawi":[106,110],"madd_2":[156,157],"madd_246":[161,162],"madd_muttasil":[15,17],"madd_6":[26,28],"hamzat_wasl":[8,9,47,48,110,111,127,128,151,152]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/4.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/4.json
index e55f1ab..c6b4ad2 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/4.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/4.json
@@ -1,178 +1,178 @@
{
-"1": {"ghunnah":[54,57,173,178,261,264],"idgham":[53,54,97,102,102,107,110,114,120,124,182,187,194,198],"madd":[41,43,114,115,191,193,228,230,242,243],"silent":[68,70,205,207],"wasl":[52,53,61,62,81,82,198,199,208,209,216,217,246,247,265,266]},
-"2": {"ghunnah":[141,144,158,163],"idgham":[74,75],"madd":[18,19,21,24,31,32,98,100,109,110,121,124,131,132,146,147],"silent":[8,10,57,59,100,102],"wasl":[11,12,60,61,73,74]},
-"3": {"ghunnah":[55,58,88,91],"idgham":[78,83,87,88],"madd":[46,47,93,95,113,114,123,124,166,167,198,199,208,209,220,223],"qalqalah":[25,27,216,218],"silent":[32,34,61,63,159,161,239,241],"wasl":[39,40,54,55,86,87]},
-"4": {"ghunnah":[13,16,34,37,45,49,51,55,69,73,91,96],"idgham":[12,13,76,81,112,118],"madd":[18,20,29,30,108,110,120,122],"qalqalah":[55,57],"silent":[8,10],"wasl":[11,12]},
-"5": {"idgham":[17,18,80,85,141,147],"madd":[25,27,36,37,78,79],"silent":[13,15,126,128],"wasl":[16,17,44,45,59,60,85,86,107,108]},
-"6": {"ghunnah":[53,56,95,100,199,203,213,218,237,241,251,256],"idgham":[52,53,78,83,165,170,181,185],"madd":[20,21,31,34,107,109,129,130,154,156,318,319],"qalqalah":[3,5,101,103],"silent":[10,12,48,50,109,111,192,194,337,339],"wasl":[2,3,13,14,51,52,100,101,269,270,362,363]},
-"7": {"ghunnah":[24,27,72,75,93,96,138,141],"idgham":[3,4,19,24,71,72,88,93,174,180],"madd":[41,42,77,79,110,111],"qalqalah":[57,59,126,128],"wasl":[36,37,52,53,105,106,121,122]},
-"8": {"idgham":[92,97,125,131],"madd":[58,59,73,74],"silent":[29,31,34,36,110,112],"wasl":[15,16,37,38,51,52,66,67,82,83]},
-"9": {"ghunnah":[61,65,135,140],"madd":[67,68],"silent":[33,35,78,80,104,106,127,129],"wasl":[11,12,107,108]},
-"10": {"ghunnah":[2,5,61,64],"idgham":[100,105],"madd":[34,35,45,46],"wasl":[6,7,38,39]},
-"11": {"ghunnah":[67,70,81,85,85,88,96,100,123,126,150,154,168,172,180,183,242,245,256,260,275,279,338,341,358,362,380,384,388,391,407,410,528,533,557,560],"idgham":[40,41,179,180,217,222,231,232,281,286,293,298,307,311,345,346,395,396,424,428,539,544],"madd":[21,23,30,31,93,95,162,163,213,214,268,269,300,301,319,321,370,372,437,439,457,459,474,476],"qalqalah":[470,472,489,491,509,511],"wasl":[11,12,62,63,105,106,178,179,230,231,344,345,394,395,547,548,561,562]},
-"12": {"ghunnah":[62,65,71,75,77,81,89,92,98,102,121,124,138,141,191,194,207,210,252,256,258,262,278,282,286,289,302,305,321,324,338,342,372,376,444,448,489,493,512,516,557,560],"idgham":[43,48,55,60,110,111,155,159,183,187,196,197,225,230,237,242,291,292,315,320,366,370,385,389,418,422,462,467,476,477,545,546,574,578,618,622,628,633],"madd":[33,34,170,172,353,355,399,400,426,428,458,459,496,498,516,517,535,537,588,590,666,667],"madd-lazim":[614,616],"silent":[498,500],"wasl":[109,110,195,196,290,291,410,411,475,476,544,545,636,637,646,647]},
-"13": {"ghunnah":[70,73,75,79,87,91],"idgham":[27,31],"madd":[55,56,73,74,108,109,114,115,134,135,157,158],"qalqalah":[59,61,79,81],"wasl":[15,16,36,37,99,100,140,141,150,151]},
-"14": {"ghunnah":[81,86],"idgham":[4,8,105,110],"madd":[32,33,55,56,77,78,97,98,112,113],"qalqalah":[59,61],"wasl":[13,14]},
-"15": {"ghunnah":[77,80,95,98,105,109,130,133,170,173,210,213],"idgham":[36,41,90,95],"madd":[6,7,26,27,43,45,167,168],"qalqalah":[191,193],"silent":[66,68,114,116],"wasl":[2,3,21,22,54,55,138,139,174,175,198,199]},
-"16": {"ghunnah":[29,32,54,58,102,105],"idgham":[127,133],"madd":[20,21,97,99],"silent":[86,88],"wasl":[2,3,106,107]},
-"17": {"ghunnah":[2,5,78,82,82,85,99,103,107,111],"idgham":[10,11,59,60],"madd":[63,65,74,75,117,119],"silent":[113,115],"wasl":[9,10,27,28,58,59,132,133,159,160]},
-"18": {"ghunnah":[112,115],"idgham":[12,13,47,48],"madd":[66,69,130,131,183,185],"qalqalah":[119,121,196,198],"silent":[179,181],"wasl":[11,12,46,47,94,95,124,125,140,141]},
-"19": {"ghunnah":[55,59,69,72,104,107,150,153,213,216,236,240,251,254,267,271,320,325],"idgham":[68,69,84,89,164,168,186,191,199,203,287,292],"madd":[2,4,74,76,133,135,159,161,180,181,261,264],"qalqalah":[294,296],"silent":[31,33,64,66,119,121,278,280],"wasl":[13,14,67,68,219,220,301,302]},
-"20": {"ghunnah":[78,81,84,87,89,94],"idgham":[11,12,36,41,52,56,151,156,161,167],"madd":[75,76,141,142,149,150],"qalqalah":[23,25],"silent":[107,109],"wasl":[18,19]},
-"21": {"ghunnah":[78,81],"idgham":[63,67,81,86],"madd":[22,23,89,90],"qalqalah":[28,30]},
-"22": {"ghunnah":[8,11,49,52,84,87],"idgham":[39,44,48,49,105,109,114,119],"madd":[33,35,54,56,89,90,99,100,121,123],"qalqalah":[72,74,111,113],"silent":[14,16],"wasl":[47,48]},
-"23": {"ghunnah":[23,26,70,73,138,141,214,217,313,317,319,322,354,358,360,363,450,454,510,513],"idgham":[189,194,198,199,275,280,280,285,327,332,534,540],"madd":[28,29,58,59,73,74,85,86,88,89,143,144,155,156,158,160,184,185,204,205,219,220,227,229,242,244,257,258,287,289,300,301,395,397,408,410,438,439],"qalqalah":[404,406,454,456,498,500],"silent":[343,345,461,463],"wasl":[106,107,124,125,151,152,197,198,253,254,296,297,417,418,471,472,514,515]},
-"24": {"ghunnah":[24,27,137,141,218,222,232,235,247,250,260,263,317,321,328,331,352,355],"idgham":[23,24,109,114,164,169,272,276],"madd":[13,14,29,31,60,61,72,73,120,122,127,128,159,160,190,191,224,225,310,311,323,324],"qalqalah":[141,143],"silent":[148,150],"wasl":[2,3,22,23,76,77,205,206,337,338,356,357]},
-"25": {"ghunnah":[25,28,45,48,117,121,179,183,195,198,202,206,207,210,215,218,236,239,250,253,263,266,341,345,358,361,388,392,400,403,486,489,496,500],"idgham":[4,9,41,45,85,90,112,117,189,194,312,316,515,520,541,546],"madd":[62,63,77,78,107,108,125,126,144,145,174,175,290,291,305,306,310,311,329,330,349,351,382,383,432,433,454,455,548,549],"silent":[507,509],"wasl":[51,52,66,67,133,134,150,151,206,207,269,270,421,422,441,442,474,475,527,528]},
-"26": {"ghunnah":[69,73],"madd":[125,126],"qalqalah":[73,75],"wasl":[8,9,57,58,105,106]},
-"27": {"ghunnah":[89,93],"idgham":[20,24,75,76],"madd":[83,84],"silent":[99,101],"wasl":[2,3,51,52,74,75]},
-"28": {"ghunnah":[32,35,52,55],"idgham":[18,22],"madd":[55,56],"wasl":[8,9,47,48]},
-"29": {"ghunnah":[62,66,72,76,97,101,119,123,132,135,159,162,171,174],"idgham":[127,132],"madd":[2,4,46,48,57,58,81,82,92,94,111,112,152,154],"qalqalah":[146,148],"silent":[31,33,48,50,154,156],"wasl":[13,14,76,77,175,176]},
-"30": {"ghunnah":[41,46],"idgham":[4,8,31,36,67,72],"madd":[17,18,29,30,80,81],"qalqalah":[25,27],"wasl":[92,93]},
-"31": {"ghunnah":[2,6,63,66,107,112],"idgham":[97,102],"madd":[22,24],"qalqalah":[6,8,89,91,102,104],"silent":[15,17]},
-"32": {"ghunnah":[12,15,95,98,118,121,139,142,179,183,194,197],"idgham":[69,74,74,75,90,95,117,118,134,139],"madd":[44,45,123,125,189,191],"qalqalah":[151,153],"silent":[17,19,110,112,166,168],"wasl":[32,33,100,101,144,145,169,170,198,199]},
-"33": {"ghunnah":[8,12,32,35,138,141,174,178],"madd":[24,25,49,50,102,103],"qalqalah":[65,67],"wasl":[44,45,60,61,77,78,142,143]},
-"34": {"ghunnah":[31,34,99,102,229,232,242,245,258,261,291,294,339,342,354,357,378,383],"idgham":[1,2,30,31,86,90,130,131,163,168],"madd":[16,17,36,38,94,96,119,120,134,135,139,140,145,146,150,151,156,157,161,162,204,205],"qalqalah":[323,325],"silent":[105,107,328,330],"wasl":[29,30,55,56,129,130,190,191,200,201,248,249,266,267,281,282,358,359]},
-"35": {"ghunnah":[158,161],"idgham":[54,60,80,86,102,106,122,127],"madd":[71,72,97,99,111,113,120,121,153,155],"qalqalah":[39,41],"silent":[46,48],"wasl":[38,39,135,136,162,163]},
-"36": {"ghunnah":[204,206,258,261,284,288,300,305],"idgham":[51,56,81,86,186,187,217,218],"madd":[43,44,63,64,79,80,113,114,128,129,248,249],"qalqalah":[211,213],"silent":[10,12,36,38],"wasl":[2,3,13,14,58,59,92,93,106,107,121,122,137,138,150,151,164,165,173,174,185,186,198,199,210,211,216,217,262,263]},
-"37": {"ghunnah":[38,41,98,102],"idgham":[37,38,145,151],"madd":[73,75,82,83,108,109,130,131],"qalqalah":[12,14,118,120],"wasl":[36,37,47,48,88,89]},
-"38": {"ghunnah":[14,17,48,51,150,155],"idgham":[47,48,116,120,126,127],"madd":[29,30,41,43,134,135,142,143,157,159],"wasl":[2,3,46,47,75,76,91,92,101,102,125,126]},
-"39": {"ghunnah":[73,76,84,87],"silent":[33,35,79,81],"wasl":[38,39,48,49,58,59,100,101,116,117]},
-"40": {"ghunnah":[2,5,49,53],"idgham":[43,47,63,67,89,94],"madd":[69,70],"qalqalah":[103,105],"wasl":[6,7]},
-"41": {"ghunnah":[25,29,35,38,39,43],"idgham":[50,54],"madd":[76,78,82,84]},
-"42": {"idgham":[9,13,51,52],"silent":[36,38,47,49],"wasl":[19,20,50,51,83,84,111,112]},
-"43": {"ghunnah":[66,69,181,185,185,188,242,245,284,287,316,320,324,327,339,344,348,353,394,397],"idgham":[51,52,188,193,237,242,245,250,283,284],"madd":[2,4,58,59,76,77,197,200,227,229,258,260,272,273,289,291,313,315],"qalqalah":[40,42],"silent":[31,33,47,49,57,58,99,101,174,176,308,310,330,332,361,363],"wasl":[13,14,50,51,253,254,282,283,353,354,398,399]},
-"44": {"ghunnah":[103,107],"idgham":[43,49,76,77,117,118],"madd":[59,60,82,83,123,124],"silent":[34,36,113,115],"wasl":[18,19,52,53,75,76,116,117]},
-"45": {"idgham":[61,66],"madd":[27,29],"wasl":[2,3,47,48,75,76]},
-"46": {"ghunnah":[142,147,170,175,195,198,247,250],"idgham":[50,55,125,129,178,179,269,275,298,303],"madd":[64,65,131,132,295,296],"qalqalah":[284,286],"silent":[22,24,209,211],"wasl":[6,7,38,39,103,104,177,178,236,237,246,247,312,313]},
-"47": {"ghunnah":[100,104,129,134,195,198],"idgham":[79,85,95,100,111,116,212,213],"madd":[2,4,39,40,149,152,164,166,198,200,207,208],"qalqalah":[104,106,116,118,155,157,216,218],"silent":[29,31,51,53],"wasl":[13,14,32,33,211,212,236,237]},
-"48": {"ghunnah":[2,5],"idgham":[29,33,79,83,94,98],"madd":[44,45,69,70,85,87,129,132],"wasl":[6,7,107,108,122,123]},
-"49": {"ghunnah":[41,44,48,52],"idgham":[74,78],"madd":[80,82],"wasl":[18,19,55,56]},
-"50": {"ghunnah":[1,4],"idgham":[71,77],"madd":[63,65],"wasl":[32,33,40,41]},
-"51": {"idgham":[43,49,90,91],"madd":[59,60,94,95,137,139,143,145],"qalqalah":[82,84],"silent":[34,36,132,134,180,182],"wasl":[18,19,52,53,77,78,89,90,162,163]},
-"52": {"ghunnah":[69,73],"idgham":[46,50],"madd":[6,8,82,83],"silent":[2,4],"wasl":[13,14,34,35,57,58]},
-"53": {"ghunnah":[61,64],"idgham":[18,23,41,47,60,61],"wasl":[26,27,59,60]},
-"54": {"ghunnah":[19,22,60,64],"idgham":[18,19,149,154],"madd":[35,37,44,45,70,71,88,90,103,104,117,118,146,147],"qalqalah":[76,78,99,101],"wasl":[17,18,50,51,110,111,123,124]},
-"55": {"ghunnah":[43,47,73,76],"idgham":[8,13,38,43],"madd":[28,29]},
-"56": {"ghunnah":[2,5,64,69,94,98,156,159],"madd":[34,35,105,106],"silent":[23,25,140,142],"wasl":[6,7,143,144,160,161]},
-"57": {"ghunnah":[66,69,71,75,83,87,193,198],"idgham":[36,37,132,138,159,164,172,176],"madd":[40,41,45,46,69,70,104,105,110,111,124,126,148,150,157,158],"qalqalah":[53,55,75,77,178,180],"silent":[20,22,32,34],"wasl":[2,3,35,36,95,96]},
-"58": {"ghunnah":[2,5,29,33,90,94,101,104,110,114,138,141,154,157,167,171,178,181,202,207],"idgham":[100,101],"madd":[49,50,52,53,60,63,173,175],"qalqalah":[131,133],"silent":[39,41,121,123],"wasl":[6,7,42,43,99,100,126,127,142,143,182,183]},
-"59": {"ghunnah":[100,103,110,114,135,139,177,181,181,184],"idgham":[68,69,165,166,245,249],"madd":[2,4,30,32,116,117,234,235],"silent":[32,34,43,45,64,66,82,84],"wasl":[13,14,46,47,67,68,88,89,154,155,164,165,201,202,211,212,221,222]},
-"60": {"ghunnah":[42,45,70,73,94,97,102,106,247,252],"idgham":[126,130,151,152,182,186,213,214,227,231],"madd":[65,67,89,91,139,141,155,156,175,177,200,201,221,222,245,246],"qalqalah":[106,108,166,168],"silent":[58,60,141,143,177,179,193,195],"wasl":[18,19,150,151,212,213]},
-"61": {"ghunnah":[47,50,118,121],"idgham":[70,71],"madd":[42,44,96,97],"silent":[30,32],"wasl":[53,54,69,70,89,90]},
-"62": {"ghunnah":[38,42,71,74],"idgham":[27,32,139,144],"madd":[13,15,20,21,77,79,120,122,128,130,137,138],"qalqalah":[116,118],"wasl":[99,100]},
-"63": {"ghunnah":[112,115,127,132],"madd":[6,8,107,109],"silent":[2,4],"wasl":[13,14,32,33]},
-"64": {"ghunnah":[75,78,101,104],"idgham":[21,26,85,86,168,169,205,211],"madd":[4,6,94,96,113,115],"silent":[96,98,135,137,187,189],"wasl":[58,59,123,124,138,139,148,149,167,168,190,191]},
-"65": {"ghunnah":[80,83,105,108,126,129],"idgham":[120,126],"madd":[100,102],"silent":[95,97,152,154]},
-"66": {"ghunnah":[9,12,54,57,82,86,144,147],"idgham":[93,98,123,128,196,202],"madd":[47,49,88,89,181,182],"qalqalah":[18,20,41,43],"silent":[49,51,77,79,159,161],"wasl":[40,41,69,70]},
-"67": {"ghunnah":[35,38],"idgham":[5,11,23,28,28,33],"madd":[20,21,38,40],"qalqalah":[43,45]},
-"68": {"idgham":[24,30],"madd":[12,13,22,23]},
-"69": {"ghunnah":[99,102],"idgham":[4,8,24,25,89,94,98,99,114,115,131,132,147,148],"madd":[42,44,107,108,139,141,151,152,175,177],"silent":[38,40,171,173],"wasl":[13,14,23,24,54,55,73,74,97,98,113,114,130,131,146,147]},
-"70": {"madd":[2,3],"wasl":[8,9,23,24,42,43]},
-"71": {"ghunnah":[56,59,79,82],"madd":[2,4],"silent":[31,33,39,41,62,64,85,87],"wasl":[13,14,55,56,78,79]},
-"72": {"ghunnah":[4,7,10,13,34,37,67,71],"idgham":[20,25,56,61,119,124],"madd":[49,50],"qalqalah":[77,79],"wasl":[89,90]},
-"73": {"ghunnah":[51,54,72,75,122,125],"idgham":[26,31,59,64,105,109],"madd":[13,14,95,96,109,110],"wasl":[34,35]},
-"74": {"idgham":[67,68,96,100],"madd":[8,9,62,63,102,103],"qalqalah":[132,134,150,152,174,176],"silent":[61,62],"wasl":[26,27,34,35,54,55,66,67,79,80,120,121]},
-"75": {"ghunnah":[91,94,230,233,268,271],"idgham":[77,78,90,91,185,186,223,228,240,245,261,266],"madd":[21,22,96,98,112,113,144,146,166,167],"qalqalah":[153,155,208,210,246,248],"wasl":[42,43,52,53,76,77,89,90,103,104,116,117,172,173,184,185,207,208,245,246]},
-"76": {"ghunnah":[155,158],"idgham":[102,103,141,142,167,168],"madd":[25,26,80,81,106,107,117,118,122,124,135,137,149,150,175,176],"silent":[18,20,73,75,124,126],"wasl":[46,47,56,57,101,102,140,141,166,167]},
-"77": {"ghunnah":[116,119,187,190,326,330,334,338],"idgham":[78,79,101,102,162,167,186,187,233,237,350,351,366,370,388,393],"madd":[46,48,85,86,108,109,296,298,310,312,317,320,345,346],"qalqalah":[264,266],"silent":[48,50,74,76,84,85,97,99,107,108,243,245],"wasl":[18,19,77,78,100,101,139,140,185,186,205,206,279,280,349,350,370,371,398,399]},
-"78": {"ghunnah":[53,56,88,92,137,140,153,157,203,206,228,231],"idgham":[69,74,82,86,108,112,174,178,218,223],"madd":[123,124,128,129,189,190,194,195,250,252,256,258],"qalqalah":[23,25,94,96,159,161],"silent":[18,20,118,120,184,186],"wasl":[34,35,141,142,232,233,261,262]},
-"79": {"ghunnah":[28,32,64,68,74,78,111,114],"idgham":[80,85,110,111,124,129],"madd":[3,5,49,51,104,105],"wasl":[37,38,138,139]},
-"80": {"ghunnah":[50,54],"idgham":[3,7,13,14],"madd":[66,68,79,80],"qalqalah":[27,29],"wasl":[12,13,38,39]},
-"81": {"ghunnah":[19,23,46,49],"idgham":[69,74],"madd":[62,64],"silent":[36,38],"wasl":[88,89,106,107,178,179,197,198]},
-"82": {"ghunnah":[56,59,102,107],"madd":[100,101],"silent":[84,86],"wasl":[23,24,67,68,93,94]},
-"83": {"ghunnah":[172,174],"idgham":[24,29,97,98,259,260],"madd":[10,12,72,73,113,116,182,183,241,242,267,268],"silent":[65,67,119,121],"wasl":[32,33,47,48,96,97,125,126,155,156,210,211,245,246,258,259]},
-"84": {"ghunnah":[176,179],"idgham":[101,105,161,166],"madd":[4,5],"silent":[135,137],"wasl":[22,23,70,71,91,92,118,119,140,141]},
-"85": {"ghunnah":[86,90],"idgham":[3,7,31,35,37,42,52,57,67,71,96,100,102,107,116,121,161,166],"madd":[18,19,44,45,82,83,109,110],"wasl":[135,136]},
-"86": {"ghunnah":[16,20,28,32,79,82],"madd":[58,60,74,76],"silent":[38,40],"wasl":[83,84]},
-"87": {"ghunnah":[43,46],"madd":[10,12,17,18,72,73],"qalqalah":[37,39],"wasl":[65,66,116,117]},
-"88": {"ghunnah":[64,68,98,102,158,162],"idgham":[135,139],"madd":[24,25,78,80,171,172],"silent":[80,82,107,109],"wasl":[17,18,46,47,123,124,146,147]},
-"89": {"ghunnah":[62,66,150,154],"idgham":[202,203,248,253],"madd":[59,61,100,102],"qalqalah":[179,181],"silent":[6,8,39,41,80,82,123,125,161,163,230,232],"wasl":[138,139,178,179]},
-"90": {"ghunnah":[39,43],"idgham":[63,68,115,119,294,295],"madd":[71,72,82,84,121,122,141,142,170,172,214,215,258,259],"silent":[147,149,279,281],"wasl":[7,8,175,176,232,233,293,294,316,317]},
-"91": {"idgham":[36,40,138,143,187,188,326,332],"madd":[92,94,170,172,205,207,281,283,324,325],"qalqalah":[238,240],"silent":[63,65,94,96,124,126,172,174,207,209,277,279],"wasl":[103,104,186,187,237,238]},
-"92": {"ghunnah":[66,70,91,96,198,202,208,212,247,251,286,290,296,300,303,307,337,341,410,414],"idgham":[25,29,59,64,113,118,125,129,134,139,178,182,223,228,268,273,280,284,327,332,346,351,398,403,416,421,475,480],"madd":[153,156,165,167,173,175,335,336,365,368,377,378],"qalqalah":[29,31,428,430],"silent":[191,193],"wasl":[483,484,499,500]},
-"93": {"ghunnah":[32,35,36,41,57,60,69,74],"idgham":[4,8,22,28],"madd":[45,47,51,52,65,66,115,116,131,132],"qalqalah":[8,10],"wasl":[88,89]},
-"94": {"ghunnah":[157,162,206,209,236,240,250,253,258,262,271,274,312,315],"idgham":[133,134,192,193,253,258],"madd":[2,4,30,32,117,120,139,140,187,188,242,243,305,307],"qalqalah":[45,47,162,164,262,264],"silent":[32,34,84,86,101,103,186,187,307,309],"wasl":[13,14,64,65,132,133,179,180,191,192,210,211,275,276,316,317]},
-"95": {"ghunnah":[132,135,194,197],"idgham":[65,66,231,235,239,244],"madd":[20,21,83,84,120,121,165,166,182,183,215,216,294,295,314,315],"qalqalah":[325,327],"silent":[58,60],"wasl":[15,16,34,35,64,65,76,77,104,105,150,151,158,159,210,211,249,250,257,258,279,280,287,288,309,310]},
-"96": {"idgham":[8,13,29,33,40,44,64,70],"madd":[6,7],"wasl":[50,51]},
-"97": {"ghunnah":[2,5,58,61,85,88,102,105,184,188,240,243],"madd":[24,25,37,39,53,55,142,144,178,179,216,218,230,231,250,252],"silent":[74,76,97,99,144,146,198,200,212,214],"wasl":[6,7,30,31,127,128,168,169]},
-"98": {"ghunnah":[46,49],"idgham":[32,33,45,46,96,100],"madd":[51,53,67,68],"wasl":[7,8,31,32,44,45,58,59]},
-"99": {"idgham":[31,35],"madd":[8,10],"silent":[4,6],"wasl":[21,22,59,60]},
-"100": {"ghunnah":[65,70,104,107,156,159],"idgham":[4,8,74,79,84,88,90,94,241,247],"madd":[61,62,114,115,152,153,203,204],"qalqalah":[40,42,98,100,162,164,185,187,197,199],"wasl":[28,29,47,48,133,134,171,172,211,212,227,228]},
-"101": {"ghunnah":[63,67,148,151],"idgham":[83,84,110,114,188,194],"madd":[90,91,141,143,157,158],"qalqalah":[12,14,67,69],"silent":[74,76,89,90,143,145,172,174],"wasl":[23,24,82,83,125,126,152,153]},
-"102": {"ghunnah":[10,13,436,440,477,480,495,499,546,549],"idgham":[41,42,72,77,81,86,158,162,387,392,397,401,407,411,454,460,460,465,480,485,587,593],"madd":[48,49,65,67,103,105,164,166,186,188,401,402,489,492,503,505,572,573],"silent":[47,48,105,107,138,140,153,155,217,219,232,234,255,257,309,311,505,507,530,532],"wasl":[40,41,292,293,550,551]},
-"103": {"ghunnah":[110,113,143,146],"idgham":[20,21,58,63,69,74,130,131,148,149,194,200],"madd":[27,28,56,57,137,138,155,156,192,193],"qalqalah":[102,104],"silent":[26,27,41,43,126,128,136,137,154,155],"wasl":[19,20,33,34,44,45,101,102,129,130,147,148,173,174]},
-"104": {"ghunnah":[44,48,73,76],"madd":[27,29],"qalqalah":[21,23],"silent":[13,15,54,56],"wasl":[20,21,32,33,128,129,162,163]},
-"105": {"ghunnah":[2,5,10,13,71,74],"idgham":[70,71,112,117],"madd":[5,7,17,19,36,37,82,84,90,91,121,123],"wasl":[29,30,42,43,69,70,94,95]},
-"106": {"ghunnah":[24,27],"idgham":[48,54],"wasl":[2,3,14,15,28,29]},
-"107": {"ghunnah":[46,49,58,61,84,88],"madd":[10,11],"wasl":[21,22,62,63]},
-"108": {"ghunnah":[21,24],"idgham":[20,21],"wasl":[19,20,53,54,117,118,135,136]},
-"109": {"ghunnah":[6,9],"idgham":[63,64,77,81,128,133,133,137],"madd":[2,4,14,16,20,22,27,28,58,59,83,84,120,121],"silent":[57,58],"wasl":[50,51,62,63,89,90,113,114]},
-"110": {"ghunnah":[49,52],"idgham":[4,8,95,101],"madd":[17,19,45,46],"wasl":[66,67,81,82]},
-"111": {"ghunnah":[20,25,27,30],"idgham":[4,8],"madd":[44,45,61,62],"qalqalah":[12,14],"wasl":[71,72]},
-"112": {"ghunnah":[37,42,42,45,67,72],"idgham":[4,8,95,100,105,111],"madd":[19,21,57,58,63,65,93,94],"qalqalah":[12,14],"wasl":[77,78]},
-"113": {"ghunnah":[52,55,121,124,152,156,165,168,238,242],"idgham":[55,56,67,72,81,85,159,163],"madd":[46,47,60,62,116,118,195,196],"wasl":[17,18,171,172,188,189,201,202,264,265]},
-"114": {"ghunnah":[101,105,113,116],"idgham":[22,27,27,32,112,113,124,128],"madd":[37,38,99,100,137,138,150,152],"qalqalah":[32,34,144,146,194,196],"wasl":[111,112,143,144,165,166]},
-"115": {"ghunnah":[30,33,151,154],"idgham":[4,8,17,18],"madd":[119,120,145,146,161,163],"wasl":[16,17,58,59,95,96]},
-"116": {"ghunnah":[2,5,134,139],"idgham":[29,33,79,83,94,98],"madd":[44,45,69,70,85,87,132,133],"qalqalah":[119,121],"wasl":[6,7,107,108]},
-"117": {"ghunnah":[16,20],"idgham":[2,6,42,47,49,53,76,82],"madd":[25,27,33,35,40,41,74,75],"qalqalah":[6,8,53,55]},
-"118": {"ghunnah":[37,40],"idgham":[62,68],"wasl":[10,11]},
-"119": {"ghunnah":[11,14,27,30,32,35,51,54,72,75,109,112,130,133,190,194],"idgham":[153,157,166,167,184,190,228,234],"madd":[94,95,174,175],"qalqalah":[210,212],"wasl":[85,86,141,142,165,166,198,199]},
-"120": {"ghunnah":[17,20],"idgham":[44,45],"madd":[52,53],"wasl":[43,44]},
-"121": {"ghunnah":[30,33],"madd":[6,8,20,21],"silent":[2,4]},
-"122": {"ghunnah":[66,69,71,75,83,87],"idgham":[36,37,132,137,154,159],"madd":[40,41,45,46,69,70,104,105,110,111,124,126],"qalqalah":[53,55,75,77],"silent":[20,22,32,34],"wasl":[2,3,35,36,95,96,142,143,178,179]},
-"123": {"ghunnah":[116,120],"idgham":[63,67,79,84,138,143],"madd":[29,31,57,58,76,78,93,94,112,113],"qalqalah":[84,86,105,107],"wasl":[50,51,124,125]},
-"124": {"ghunnah":[36,40,52,55,72,76,106,109],"idgham":[4,8,21,22],"madd":[25,26,30,31,82,84],"qalqalah":[91,93],"silent":[78,80],"wasl":[20,21,101,102]},
-"125": {"ghunnah":[26,29],"idgham":[20,26,73,77,113,118],"madd":[49,50,100,101,141,142],"qalqalah":[43,45,96,98,137,139],"wasl":[77,78,118,119,127,128]},
-"126": {"idgham":[19,20,81,86],"madd":[25,26,28,29],"wasl":[18,19,42,43,60,61]},
-"127": {"ghunnah":[24,27,64,67,124,127,158,161,177,180,197,201,201,204,209,212,256,260,323,327,329,332],"idgham":[23,24,123,124],"madd":[29,31,105,106,117,118,129,131,138,139,248,249,277,278,351,352],"silent":[266,268,310,312],"wasl":[22,23,39,40,98,99,122,123,134,135,215,216,239,240,285,286,333,334]},
-"128": {"ghunnah":[28,31,62,67,163,166,182,186,213,216],"idgham":[94,98,123,128,129,130,143,147,170,171],"madd":[89,91],"silent":[193,195,206,208],"wasl":[7,8,128,129,158,159,169,170,217,218]},
-"129": {"ghunnah":[4,8,24,28,47,50,142,146,173,176],"idgham":[46,47,197,203],"madd":[17,19,52,54],"silent":[19,21,35,37,89,91,153,155,166,168],"wasl":[45,46,98,99,123,124,177,178]},
-"130": {"ghunnah":[44,48],"idgham":[4,8,38,44],"madd":[54,55,74,75],"wasl":[26,27,64,65]},
-"131": {"ghunnah":[104,108,157,161,175,178],"idgham":[19,20,196,197],"madd":[25,26,28,29,98,99,202,203,205,206],"qalqalah":[58,60,108,110],"silent":[88,90,142,144,168,170],"wasl":[18,19,42,43,72,73,91,92,135,136,145,146,195,196,219,220,237,238]},
-"132": {"idgham":[19,20],"madd":[25,26,28,29],"wasl":[18,19,42,43,63,64]},
-"133": {"ghunnah":[35,38],"idgham":[2,6,34,35],"madd":[90,91],"qalqalah":[17,19],"wasl":[33,34,73,74]},
-"134": {"ghunnah":[3,7,42,45,110,115],"idgham":[28,29,63,64],"wasl":[27,28,46,47,62,63,75,76,96,97]},
-"135": {"ghunnah":[103,106,181,186,243,247,261,265,295,298],"idgham":[152,156],"madd":[2,4,48,49,73,75,97,100,123,124,237,240,269,271],"qalqalah":[140,142],"silent":[31,33,40,42,227,229,254,256,271,273,288,290],"wasl":[13,14,57,58,118,119,135,136,186,187,230,231,299,300]},
-"136": {"ghunnah":[140,143,148,152,266,271],"idgham":[161,165],"madd":[2,4,30,32,67,68,78,79,114,115,125,126,135,137,188,190,198,199,210,211,222,223,264,265],"qalqalah":[152,154,251,253],"silent":[32,34,43,45],"wasl":[13,14,48,49,71,72,82,83,118,119,129,130,174,175,226,227,236,237]},
-"137": {"ghunnah":[2,5,29,32,45,48,62,65,78,81],"idgham":[99,105],"silent":[24,26,40,42,57,59,73,75,91,93],"wasl":[6,7,82,83,115,116]},
-"138": {"ghunnah":[28,31],"madd":[15,16],"wasl":[8,9]},
-"139": {"ghunnah":[52,56,91,94,114,117],"madd":[28,29,45,47],"qalqalah":[79,81],"wasl":[23,24,60,61,99,100,118,119]},
-"140": {"ghunnah":[187,190,215,218,275,278],"idgham":[198,204],"madd":[37,38,68,69,182,184,242,243,258,259],"qalqalah":[4,6,124,126],"silent":[131,133,159,161],"wasl":[30,31,72,73,219,220,235,236,253,254]},
-"141": {"ghunnah":[36,40,109,113,138,142],"idgham":[56,61,93,98,193,198,270,274],"madd":[77,79,123,124,145,147,260,261,295,296],"qalqalah":[274,276],"silent":[79,81,147,149],"wasl":[64,65,201,202,218,219,253,254,281,282,310,311]},
-"142": {"ghunnah":[2,5,131,134],"idgham":[87,88,130,131],"madd":[13,14,26,27,52,53,75,77,94,95,121,123],"silent":[77,79,93,94,104,106],"wasl":[6,7,35,36,86,87,129,130,156,157]},
-"143": {"ghunnah":[109,113],"idgham":[86,90],"madd":[24,25,32,34,44,46,50,52,59,61,71,73,77,79,122,123],"qalqalah":[5,7],"wasl":[97,98]},
-"144": {"ghunnah":[80,84,118,122],"idgham":[159,165],"madd":[2,4,56,57,73,75,157,158],"qalqalah":[122,124],"silent":[31,33,48,50,129,131],"wasl":[13,14,51,52,88,89]},
-"145": {"ghunnah":[2,5,55,58,66,70],"idgham":[27,28,54,55],"madd":[13,14],"wasl":[6,7,26,27,36,37,53,54]},
-"146": {"madd":[105,107],"qalqalah":[173,175],"silent":[23,25,37,39,52,54,76,78,101,103],"wasl":[7,8,42,43,57,58,117,118,148,149,156,157]},
-"147": {"ghunnah":[38,42,58,61],"wasl":[14,15,72,73]},
-"148": {"ghunnah":[67,71],"idgham":[34,35],"madd":[38,40],"wasl":[13,14,21,22,33,34,48,49,84,85]},
-"149": {"ghunnah":[2,6,54,58,61,65,67,70,91,96],"madd":[58,60],"qalqalah":[6,8],"silent":[11,13,49,51],"wasl":[71,72]},
-"150": {"ghunnah":[2,5],"idgham":[65,69,136,140,156,160,173,177],"madd":[48,49,105,106,197,198],"silent":[77,79,185,187],"wasl":[6,7,30,31,87,88]},
-"151": {"idgham":[36,41,74,80],"madd":[6,8,23,24,59,60],"qalqalah":[47,49],"silent":[2,4],"wasl":[18,19]},
-"152": {"idgham":[77,82,155,161],"madd":[43,44,95,97],"silent":[20,22,62,64,91,93],"wasl":[2,3,25,26,141,142]},
-"153": {"ghunnah":[32,36,119,123,164,168,209,212,238,241,292,296],"idgham":[61,67,71,72,182,183,331,337],"madd":[26,27,59,60,77,79,104,107,123,124,136,138,186,187,253,255,274,275,296,297,329,330],"qalqalah":[86,88,230,232],"silent":[96,98,138,140,222,224],"wasl":[19,20,70,71,149,150,181,182,213,214,225,226,264,265]},
-"154": {"idgham":[24,25,90,95,129,130,156,161],"madd":[39,40,164,165],"qalqalah":[65,67,133,135],"silent":[72,74,121,123],"wasl":[23,24,64,65,75,76,128,129]},
-"155": {"ghunnah":[42,46,83,85,137,141],"idgham":[16,21,106,110],"madd":[24,25,52,53,88,90],"qalqalah":[10,12],"wasl":[56,57,77,78,152,153]},
-"156": {"madd":[50,51]},
-"157": {"ghunnah":[15,18,118,122,139,142,200,204,242,245],"idgham":[182,187,238,239],"madd":[115,116,206,207],"qalqalah":[49,51],"silent":[163,165],"wasl":[30,31,48,49,71,72,143,144,153,154,227,228,237,238]},
-"158": {"idgham":[2,3],"wasl":[14,15,39,40]},
-"159": {"ghunnah":[47,50],"idgham":[4,9],"madd":[26,27,55,56,72,73,90,91],"qalqalah":[59,61],"wasl":[19,20,83,84]},
-"160": {"ghunnah":[102,106],"idgham":[9,14],"madd":[65,66],"silent":[33,35],"wasl":[17,18,112,113]},
-"161": {"ghunnah":[72,75],"idgham":[14,15,71,72],"madd":[21,22,66,67,86,87,112,113],"qalqalah":[29,31,100,102],"silent":[20,21,22,24,37,39],"wasl":[13,14,70,71,81,82]},
-"162": {"ghunnah":[84,87,108,111,116,120],"idgham":[10,11,144,145,171,172],"madd":[3,4,14,15,79,81,103,105,151,152,178,179,238,240],"qalqalah":[120,122,261,263],"silent":[150,151,177,178,234,236],"wasl":[9,10,27,28,48,49,129,130,143,144,157,158,170,171,184,185,201,202,211,212,221,222]},
-"163": {"ghunnah":[2,5,67,70,82,85],"idgham":[61,65,66,67],"madd":[5,7,18,20,34,36,47,49,75,76,92,93,106,108,113,116,123,124,138,139,153,154,219,220,236,237,258,259],"qalqalah":[119,121],"wasl":[65,66,171,172]},
-"164": {"ghunnah":[7,12,40,44],"idgham":[56,62],"madd":[23,24],"qalqalah":[12,14,44,46,67,69],"wasl":[97,98]},
-"165": {"ghunnah":[27,30,56,59,83,87],"idgham":[6,12,55,56,94,95],"wasl":[69,70,93,94,111,112]},
-"166": {"ghunnah":[35,38,52,55],"madd":[3,4,30,32,59,60,71,72,82,84],"wasl":[9,10,75,76,114,115]},
-"167": {"ghunnah":[2,5,39,43,77,82],"madd":[75,76],"qalqalah":[59,61],"silent":[23,25,34,36,68,70],"wasl":[6,7,49,50]},
-"168": {"ghunnah":[2,5],"silent":[23,25,35,37],"wasl":[6,7,50,51]},
-"169": {"ghunnah":[19,22],"idgham":[49,54],"madd":[27,28,41,43,62,63],"wasl":[74,75]},
-"170": {"ghunnah":[15,18,109,113,127,130],"idgham":[14,15,39,40,62,67,94,100,148,149],"madd":[2,4,29,31,154,155,157,158],"qalqalah":[24,26],"silent":[86,88,120,122],"wasl":[13,14,38,39,51,52,147,148,163,164,181,182]},
-"171": {"ghunnah":[99,102,279,282,306,309,335,339],"idgham":[205,210,293,299,327,331,353,357,374,379,392,393],"madd":[2,4,18,19,167,169,177,178,180,182,249,250,272,273,325,326,331,332,343,344,348,350,367,368,381,382,398,399,401,402],"qalqalah":[125,127,339,341],"silent":[33,35,64,66,226,228,265,267,285,287],"wasl":[11,12,73,74,88,89,106,107,124,125,147,148,231,232,278,279,313,314,391,392,415,416,436,437]},
-"172": {"ghunnah":[11,14,107,110],"idgham":[3,7,30,34,45,51,99,103],"madd":[70,72,129,130],"qalqalah":[42,44],"wasl":[17,18,63,64,79,80]},
-"173": {"ghunnah":[4,7,99,103,115,118,135,138,220,224],"idgham":[43,44,94,99,192,197,215,220,242,247],"madd":[47,48,52,53,109,110],"silent":[27,29,39,41,141,143,158,160],"wasl":[9,10,42,43,120,121,130,131,146,147,228,229]},
-"174": {"ghunnah":[15,18,35,39,67,70],"idgham":[14,15,45,50,50,55,92,98],"madd":[2,4,29,31,43,44,74,76],"qalqalah":[24,26],"wasl":[13,14]},
-"175": {"ghunnah":[4,7],"idgham":[89,94,106,110,137,143],"madd":[59,60,135,136],"qalqalah":[67,69],"silent":[27,29,52,54],"wasl":[9,10,32,33,42,43]},
-"176": {"ghunnah":[114,118,188,192,194,198,242,245,258,262,298,302,331,334,368,372],"idgham":[98,102,162,167,174,179,228,229,277,282,286,291,304,305],"madd":[52,53,91,92,106,108,157,159,265,267,295,297,410,411],"silent":[70,72,267,269,378,380],"wasl":[21,22,45,46,63,64,205,206,227,228,326,327,351,352,383,384]}
+"1": {"ghunnah":[54,57,261,264],"ikhfa":[173,178],"idghaam_ghunnah":[102,107,110,114,120,124,182,187,194,198],"idghaam_shafawi":[97,102],"lam_shamsiyyah":[53,54],"madd_2":[114,115,242,243],"madd_munfasil":[41,43],"madd_muttasil":[191,193,228,230],"silent":[68,70,205,207],"hamzat_wasl":[52,53,61,62,81,82,198,199,208,209,216,217,246,247,265,266]},
+"2": {"ghunnah":[141,144],"ikhfa":[158,163],"lam_shamsiyyah":[74,75],"madd_2":[18,19,31,32,109,110,131,132,146,147],"madd_munfasil":[21,24,98,100,121,124],"silent":[8,10,57,59,100,102],"hamzat_wasl":[11,12,60,61,73,74]},
+"3": {"ghunnah":[88,91],"ikhfa":[55,58],"idghaam_shafawi":[78,83],"lam_shamsiyyah":[87,88],"madd_2":[46,47,113,114,123,124,166,167,198,199,208,209],"madd_munfasil":[220,223],"madd_muttasil":[93,95],"qalqalah":[25,27,216,218],"silent":[32,34,61,63,159,161,239,241],"hamzat_wasl":[39,40,54,55,86,87]},
+"4": {"ghunnah":[13,16,34,37],"ikhfa":[45,49,51,55,69,73,91,96],"idghaam_ghunnah":[76,81,112,118],"lam_shamsiyyah":[12,13],"madd_2":[29,30],"madd_muttasil":[18,20,108,110,120,122],"qalqalah":[55,57],"silent":[8,10],"hamzat_wasl":[11,12]},
+"5": {"idghaam_ghunnah":[80,85,141,147],"lam_shamsiyyah":[17,18],"madd_2":[36,37,78,79],"madd_muttasil":[25,27],"silent":[13,15,126,128],"hamzat_wasl":[16,17,44,45,59,60,85,86,107,108]},
+"6": {"ghunnah":[53,56],"ikhfa":[95,100,199,203,213,218,237,241,251,256],"idghaam_ghunnah":[165,170,181,185],"idghaam_shafawi":[78,83],"lam_shamsiyyah":[52,53],"madd_2":[20,21,129,130,318,319],"madd_munfasil":[31,34,107,109,154,156],"qalqalah":[3,5,101,103],"silent":[10,12,48,50,109,111,192,194,337,339],"hamzat_wasl":[2,3,13,14,51,52,100,101,269,270,362,363]},
+"7": {"ghunnah":[24,27,72,75,93,96,138,141],"idghaam_ghunnah":[19,24,88,93,174,180],"lam_shamsiyyah":[3,4,71,72],"madd_2":[41,42,110,111],"madd_muttasil":[77,79],"qalqalah":[57,59,126,128],"hamzat_wasl":[36,37,52,53,105,106,121,122]},
+"8": {"idghaam_ghunnah":[125,131],"idghaam_shafawi":[92,97],"madd_2":[58,59,73,74],"silent":[29,31,34,36,110,112],"hamzat_wasl":[15,16,37,38,51,52,66,67,82,83]},
+"9": {"ikhfa":[61,65,135,140],"madd_2":[67,68],"silent":[33,35,78,80,104,106,127,129],"hamzat_wasl":[11,12,107,108]},
+"10": {"ghunnah":[2,5,61,64],"idghaam_ghunnah":[100,105],"madd_2":[34,35,45,46],"hamzat_wasl":[6,7,38,39]},
+"11": {"ghunnah":[85,88,123,126,180,183,242,245,338,341,388,391,557,560],"ikhfa":[67,70,81,85,96,100,150,154,168,172,256,260,275,279,358,362,380,384,528,533],"iqlab":[407,410],"idghaam_ghunnah":[217,222,307,311,424,428,539,544],"idghaam_no_ghunnah":[281,286,293,298],"lam_shamsiyyah":[40,41,179,180,231,232,345,346,395,396],"madd_2":[30,31,162,163,213,214,268,269,300,301],"madd_munfasil":[21,23,319,321,370,372,437,439],"madd_muttasil":[93,95,457,459,474,476],"qalqalah":[470,472,489,491,509,511],"hamzat_wasl":[11,12,62,63,105,106,178,179,230,231,344,345,394,395,547,548,561,562]},
+"12": {"ghunnah":[62,65,89,92,121,124,191,194,207,210,286,289,302,305],"ikhfa":[71,75,77,81,98,102,252,256,258,262,278,282,338,342,372,376,444,448,489,493,512,516],"iqlab":[138,141,321,324,557,560],"idghaam_ghunnah":[155,159,183,187,366,370,385,389,418,422,462,467,574,578,618,622,628,633],"idghaam_no_ghunnah":[43,48,55,60,225,230,237,242],"idghaam_shafawi":[315,320],"lam_shamsiyyah":[110,111,196,197,291,292,476,477,545,546],"madd_2":[33,34,399,400,458,459,516,517],"madd_246":[666,667],"madd_munfasil":[170,172,353,355,426,428,496,498,588,590],"madd_muttasil":[535,537],"madd_6":[614,616],"silent":[498,500],"hamzat_wasl":[109,110,195,196,290,291,410,411,475,476,544,545,636,637,646,647]},
+"13": {"ghunnah":[70,73],"ikhfa":[75,79,87,91],"idghaam_ghunnah":[27,31],"madd_2":[55,56,73,74,108,109,114,115,134,135],"madd_246":[157,158],"qalqalah":[59,61,79,81],"hamzat_wasl":[15,16,36,37,99,100,140,141,150,151]},
+"14": {"ikhfa":[81,86],"idghaam_ghunnah":[4,8,105,110],"madd_2":[32,33,55,56,77,78,97,98],"madd_246":[112,113],"qalqalah":[59,61],"hamzat_wasl":[13,14]},
+"15": {"ghunnah":[77,80,130,133,170,173,210,213],"ikhfa":[95,98,105,109],"idghaam_ghunnah":[36,41,90,95],"madd_2":[6,7,26,27,167,168],"madd_muttasil":[43,45],"qalqalah":[191,193],"silent":[66,68,114,116],"hamzat_wasl":[2,3,21,22,54,55,138,139,174,175,198,199]},
+"16": {"ghunnah":[102,105],"ikhfa":[29,32,54,58],"idghaam_no_ghunnah":[127,133],"madd_2":[20,21],"madd_munfasil":[97,99],"silent":[86,88],"hamzat_wasl":[2,3,106,107]},
+"17": {"ghunnah":[2,5,82,85],"ikhfa":[78,82,99,103,107,111],"lam_shamsiyyah":[10,11,59,60],"madd_2":[74,75],"madd_muttasil":[63,65,117,119],"silent":[113,115],"hamzat_wasl":[9,10,27,28,58,59,132,133,159,160]},
+"18": {"ghunnah":[112,115],"lam_shamsiyyah":[12,13,47,48],"madd_2":[130,131],"madd_munfasil":[66,69],"madd_muttasil":[183,185],"qalqalah":[119,121,196,198],"silent":[179,181],"hamzat_wasl":[11,12,46,47,94,95,124,125,140,141]},
+"19": {"ghunnah":[69,72,104,107,150,153,213,216,251,254],"ikhfa":[55,59,236,240,267,271,320,325],"idghaam_ghunnah":[84,89,164,168,186,191,199,203,287,292],"lam_shamsiyyah":[68,69],"madd_2":[180,181],"madd_munfasil":[2,4,133,135,159,161,261,264],"madd_muttasil":[74,76],"qalqalah":[294,296],"silent":[31,33,64,66,119,121,278,280],"hamzat_wasl":[13,14,67,68,219,220,301,302]},
+"20": {"ghunnah":[78,81],"ikhfa":[84,87,89,94],"idghaam_ghunnah":[36,41,52,56,151,156,161,167],"idghaam_mutajanisayn":[11,12],"madd_2":[75,76,141,142,149,150],"qalqalah":[23,25],"silent":[107,109],"hamzat_wasl":[18,19]},
+"21": {"ikhfa":[78,81],"idghaam_ghunnah":[63,67],"idghaam_shafawi":[81,86],"madd_2":[22,23,89,90],"qalqalah":[28,30]},
+"22": {"ghunnah":[49,52,84,87],"ikhfa":[8,11],"idghaam_ghunnah":[105,109,114,119],"idghaam_shafawi":[39,44],"lam_shamsiyyah":[48,49],"madd_2":[89,90,99,100],"madd_muttasil":[33,35,54,56,121,123],"qalqalah":[72,74,111,113],"silent":[14,16],"hamzat_wasl":[47,48]},
+"23": {"ghunnah":[23,26,70,73,138,141,214,217,319,322,360,363,510,513],"ikhfa":[450,454],"ikhfa_shafawi":[313,317,354,358],"idghaam_ghunnah":[280,285],"idghaam_no_ghunnah":[327,332,534,540],"idghaam_shafawi":[189,194,275,280],"lam_shamsiyyah":[198,199],"madd_2":[28,29,58,59,73,74,85,86,88,89,143,144,155,156,184,185,204,205,219,220,257,258,300,301,438,439],"madd_munfasil":[158,160],"madd_muttasil":[227,229,242,244,287,289,395,397,408,410],"qalqalah":[404,406,454,456,498,500],"silent":[343,345,461,463],"hamzat_wasl":[106,107,124,125,151,152,197,198,253,254,296,297,417,418,471,472,514,515]},
+"24": {"ghunnah":[24,27,232,235,247,250,260,263,352,355],"ikhfa":[137,141],"ikhfa_shafawi":[218,222,317,321],"iqlab":[328,331],"idghaam_ghunnah":[272,276],"idghaam_shafawi":[109,114,164,169],"lam_shamsiyyah":[23,24],"madd_2":[13,14,60,61,72,73,127,128,159,160,190,191,224,225,310,311,323,324],"madd_muttasil":[29,31,120,122],"qalqalah":[141,143],"silent":[148,150],"hamzat_wasl":[2,3,22,23,76,77,205,206,337,338,356,357]},
+"25": {"ghunnah":[215,218,236,239,250,253,263,266,358,361,400,403],"ikhfa":[25,28,45,48,117,121,202,206,207,210,341,345,388,392,486,489,496,500],"ikhfa_shafawi":[179,183],"iqlab":[195,198],"idghaam_ghunnah":[41,45,85,90,312,316],"idghaam_no_ghunnah":[4,9,515,520,541,546],"idghaam_shafawi":[112,117,189,194],"madd_2":[62,63,77,78,107,108,125,126,144,145,174,175,290,291,305,306,310,311,329,330,382,383,432,433,454,455],"madd_246":[548,549],"madd_munfasil":[349,351],"silent":[507,509],"hamzat_wasl":[51,52,66,67,133,134,150,151,206,207,269,270,421,422,441,442,474,475,527,528]},
+"26": {"ikhfa":[69,73],"madd_246":[125,126],"qalqalah":[73,75],"hamzat_wasl":[8,9,57,58,105,106]},
+"27": {"ikhfa":[89,93],"idghaam_ghunnah":[20,24],"lam_shamsiyyah":[75,76],"madd_2":[83,84],"silent":[99,101],"hamzat_wasl":[2,3,51,52,74,75]},
+"28": {"ikhfa":[32,35,52,55],"idghaam_ghunnah":[18,22],"madd_2":[55,56],"hamzat_wasl":[8,9,47,48]},
+"29": {"ghunnah":[171,174],"ikhfa":[97,101,119,123,132,135,159,162],"ikhfa_shafawi":[62,66,72,76],"idghaam_ghunnah":[127,132],"madd_2":[57,58,81,82,111,112],"madd_munfasil":[2,4,46,48,92,94,152,154],"qalqalah":[146,148],"silent":[31,33,48,50,154,156],"hamzat_wasl":[13,14,76,77,175,176]},
+"30": {"ikhfa":[41,46],"idghaam_ghunnah":[4,8,31,36,67,72],"madd_2":[17,18,29,30,80,81],"qalqalah":[25,27],"hamzat_wasl":[92,93]},
+"31": {"ikhfa":[2,6,63,66,107,112],"idghaam_shafawi":[97,102],"madd_muttasil":[22,24],"qalqalah":[6,8,89,91,102,104],"silent":[15,17]},
+"32": {"ghunnah":[12,15,95,98,118,121,139,142,194,197],"ikhfa":[179,183],"idghaam_ghunnah":[90,95,134,139],"idghaam_no_ghunnah":[69,74],"lam_shamsiyyah":[74,75,117,118],"madd_2":[44,45],"madd_munfasil":[189,191],"madd_muttasil":[123,125],"qalqalah":[151,153],"silent":[17,19,110,112,166,168],"hamzat_wasl":[32,33,100,101,144,145,169,170,198,199]},
+"33": {"ghunnah":[32,35,138,141],"ikhfa":[8,12,174,178],"madd_2":[24,25,49,50,102,103],"qalqalah":[65,67],"hamzat_wasl":[44,45,60,61,77,78,142,143]},
+"34": {"ghunnah":[31,34,229,232,242,245,258,261,291,294,339,342,354,357],"ikhfa":[99,102,378,383],"idghaam_ghunnah":[86,90],"idghaam_no_ghunnah":[163,168],"lam_shamsiyyah":[1,2,30,31,130,131],"madd_2":[16,17,119,120,134,135,139,140,145,146,150,151,156,157,161,162,204,205],"madd_munfasil":[94,96],"madd_muttasil":[36,38],"qalqalah":[323,325],"silent":[105,107,328,330],"hamzat_wasl":[29,30,55,56,129,130,190,191,200,201,248,249,266,267,281,282,358,359]},
+"35": {"ghunnah":[158,161],"idghaam_ghunnah":[54,60,80,86,102,106,122,127],"madd_2":[71,72,120,121],"madd_munfasil":[97,99,111,113,153,155],"qalqalah":[39,41],"silent":[46,48],"hamzat_wasl":[38,39,135,136,162,163]},
+"36": {"ghunnah":[258,261],"ikhfa":[284,288,300,305],"iqlab":[204,206],"idghaam_ghunnah":[51,56,81,86],"lam_shamsiyyah":[186,187,217,218],"madd_2":[43,44,63,64,79,80,113,114,128,129,248,249],"qalqalah":[211,213],"silent":[10,12,36,38],"hamzat_wasl":[2,3,13,14,58,59,92,93,106,107,121,122,137,138,150,151,164,165,173,174,185,186,198,199,210,211,216,217,262,263]},
+"37": {"ghunnah":[38,41],"ikhfa":[98,102],"idghaam_ghunnah":[145,151],"lam_shamsiyyah":[37,38],"madd_2":[82,83,108,109,130,131],"madd_munfasil":[73,75],"qalqalah":[12,14,118,120],"hamzat_wasl":[36,37,47,48,88,89]},
+"38": {"ghunnah":[48,51],"ikhfa":[14,17,150,155],"idghaam_ghunnah":[116,120],"lam_shamsiyyah":[47,48,126,127],"madd_2":[29,30,134,135,142,143],"madd_muttasil":[41,43,157,159],"hamzat_wasl":[2,3,46,47,75,76,91,92,101,102,125,126]},
+"39": {"ghunnah":[84,87],"ikhfa":[73,76],"silent":[33,35,79,81],"hamzat_wasl":[38,39,48,49,58,59,100,101,116,117]},
+"40": {"ghunnah":[2,5],"ikhfa":[49,53],"idghaam_ghunnah":[43,47,63,67],"idghaam_no_ghunnah":[89,94],"madd_2":[69,70],"qalqalah":[103,105],"hamzat_wasl":[6,7]},
+"41": {"ghunnah":[35,38],"ikhfa":[25,29],"iqlab":[39,43],"idghaam_ghunnah":[50,54],"madd_muttasil":[76,78,82,84]},
+"42": {"idghaam_ghunnah":[9,13],"lam_shamsiyyah":[51,52],"silent":[36,38,47,49],"hamzat_wasl":[19,20,50,51,83,84,111,112]},
+"43": {"ghunnah":[284,287,324,327,394,397],"ikhfa":[66,69,181,185,185,188,242,245,316,320,339,344,348,353],"idghaam_ghunnah":[237,242],"idghaam_shafawi":[188,193,245,250],"lam_shamsiyyah":[51,52,283,284],"madd_2":[58,59,76,77,272,273],"madd_munfasil":[2,4,197,200],"madd_muttasil":[227,229,258,260,289,291,313,315],"qalqalah":[40,42],"silent":[31,33,47,49,57,58,99,101,174,176,308,310,330,332,361,363],"hamzat_wasl":[13,14,50,51,253,254,282,283,353,354,398,399]},
+"44": {"ikhfa":[103,107],"idghaam_ghunnah":[43,49],"lam_shamsiyyah":[76,77,117,118],"madd_2":[59,60,82,83],"madd_246":[123,124],"silent":[34,36,113,115],"hamzat_wasl":[18,19,52,53,75,76,116,117]},
+"45": {"idghaam_ghunnah":[61,66],"madd_muttasil":[27,29],"hamzat_wasl":[2,3,47,48,75,76]},
+"46": {"ghunnah":[195,198],"ikhfa":[170,175,247,250],"iqlab":[142,147],"idghaam_ghunnah":[50,55,125,129],"idghaam_no_ghunnah":[269,275,298,303],"lam_shamsiyyah":[178,179],"madd_2":[64,65,131,132,295,296],"qalqalah":[284,286],"silent":[22,24,209,211],"hamzat_wasl":[6,7,38,39,103,104,177,178,236,237,246,247,312,313]},
+"47": {"ghunnah":[195,198],"ikhfa":[100,104,129,134],"idghaam_ghunnah":[111,116],"idghaam_no_ghunnah":[79,85],"idghaam_shafawi":[95,100],"lam_shamsiyyah":[212,213],"madd_2":[39,40,207,208],"madd_munfasil":[2,4,149,152,164,166,198,200],"qalqalah":[104,106,116,118,155,157,216,218],"silent":[29,31,51,53],"hamzat_wasl":[13,14,32,33,211,212,236,237]},
+"48": {"ghunnah":[2,5],"idghaam_ghunnah":[29,33,79,83,94,98],"madd_2":[44,45,69,70],"madd_munfasil":[129,132],"madd_muttasil":[85,87],"hamzat_wasl":[6,7,107,108,122,123]},
+"49": {"ikhfa":[41,44],"ikhfa_shafawi":[48,52],"idghaam_ghunnah":[74,78],"madd_muttasil":[80,82],"hamzat_wasl":[18,19,55,56]},
+"50": {"ikhfa":[1,4],"idghaam_ghunnah":[71,77],"madd_munfasil":[63,65],"hamzat_wasl":[32,33,40,41]},
+"51": {"idghaam_ghunnah":[43,49],"lam_shamsiyyah":[90,91],"madd_2":[59,60,94,95],"madd_muttasil":[137,139,143,145],"qalqalah":[82,84],"silent":[34,36,132,134,180,182],"hamzat_wasl":[18,19,52,53,77,78,89,90,162,163]},
+"52": {"ikhfa":[69,73],"idghaam_ghunnah":[46,50],"madd_2":[82,83],"madd_muttasil":[6,8],"silent":[2,4],"hamzat_wasl":[13,14,34,35,57,58]},
+"53": {"ghunnah":[61,64],"idghaam_ghunnah":[18,23],"idghaam_no_ghunnah":[41,47],"lam_shamsiyyah":[60,61],"hamzat_wasl":[26,27,59,60]},
+"54": {"ghunnah":[19,22],"ikhfa":[60,64],"idghaam_shafawi":[149,154],"lam_shamsiyyah":[18,19],"madd_2":[44,45,70,71,103,104,117,118,146,147],"madd_munfasil":[35,37,88,90],"qalqalah":[76,78,99,101],"hamzat_wasl":[17,18,50,51,110,111,123,124]},
+"55": {"ghunnah":[73,76],"ikhfa":[43,47],"idghaam_shafawi":[8,13,38,43],"madd_2":[28,29]},
+"56": {"ghunnah":[2,5,156,159],"ikhfa":[64,69],"ikhfa_shafawi":[94,98],"madd_2":[34,35,105,106],"silent":[23,25,140,142],"hamzat_wasl":[6,7,143,144,160,161]},
+"57": {"ghunnah":[66,69],"ikhfa":[71,75,83,87,193,198],"idghaam_ghunnah":[159,164,172,176],"idghaam_no_ghunnah":[132,138],"lam_shamsiyyah":[36,37],"madd_2":[40,41,45,46,69,70,104,105,110,111,157,158],"madd_munfasil":[124,126,148,150],"qalqalah":[53,55,75,77,178,180],"silent":[20,22,32,34],"hamzat_wasl":[2,3,35,36,95,96]},
+"58": {"ghunnah":[2,5,101,104,138,141,154,157,178,181],"ikhfa":[29,33,110,114],"ikhfa_shafawi":[90,94,167,171],"iqlab":[202,207],"lam_shamsiyyah":[100,101],"madd_2":[49,50,52,53],"madd_munfasil":[60,63,173,175],"qalqalah":[131,133],"silent":[39,41,121,123],"hamzat_wasl":[6,7,42,43,99,100,126,127,142,143,182,183]},
+"59": {"ikhfa":[100,103,110,114,135,139,177,181,181,184],"idghaam_ghunnah":[245,249],"lam_shamsiyyah":[68,69,165,166],"madd_2":[116,117,234,235],"madd_munfasil":[2,4,30,32],"silent":[32,34,43,45,64,66,82,84],"hamzat_wasl":[13,14,46,47,67,68,88,89,154,155,164,165,201,202,211,212,221,222]},
+"60": {"ghunnah":[42,45],"ikhfa":[70,73,94,97,102,106],"iqlab":[247,252],"idghaam_ghunnah":[126,130,182,186,227,231],"lam_shamsiyyah":[151,152,213,214],"madd_2":[155,156,200,201,221,222,245,246],"madd_munfasil":[65,67,89,91,139,141,175,177],"qalqalah":[106,108,166,168],"silent":[58,60,141,143,177,179,193,195],"hamzat_wasl":[18,19,150,151,212,213]},
+"61": {"ikhfa":[47,50,118,121],"lam_shamsiyyah":[70,71],"madd_2":[96,97],"madd_munfasil":[42,44],"silent":[30,32],"hamzat_wasl":[53,54,69,70,89,90]},
+"62": {"ghunnah":[71,74],"iqlab":[38,42],"idghaam_ghunnah":[139,144],"idghaam_shafawi":[27,32],"madd_2":[20,21,137,138],"madd_munfasil":[13,15,120,122,128,130],"madd_muttasil":[77,79],"qalqalah":[116,118],"hamzat_wasl":[99,100]},
+"63": {"ikhfa":[112,115],"iqlab":[127,132],"madd_munfasil":[107,109],"madd_muttasil":[6,8],"silent":[2,4],"hamzat_wasl":[13,14,32,33]},
+"64": {"ghunnah":[75,78],"ikhfa":[101,104],"idghaam_mutajanisayn":[85,86],"idghaam_no_ghunnah":[21,26,205,211],"lam_shamsiyyah":[168,169],"madd_munfasil":[4,6,94,96],"madd_muttasil":[113,115],"silent":[96,98,135,137,187,189],"hamzat_wasl":[58,59,123,124,138,139,148,149,167,168,190,191]},
+"65": {"ghunnah":[80,83,126,129],"ikhfa":[105,108],"idghaam_ghunnah":[120,126],"madd_munfasil":[100,102],"silent":[95,97,152,154]},
+"66": {"ghunnah":[9,12,144,147],"ikhfa":[54,57,82,86],"idghaam_ghunnah":[123,128],"idghaam_no_ghunnah":[196,202],"idghaam_shafawi":[93,98],"madd_2":[88,89,181,182],"madd_munfasil":[47,49],"qalqalah":[18,20,41,43],"silent":[49,51,77,79,159,161],"hamzat_wasl":[40,41,69,70]},
+"67": {"ghunnah":[35,38],"idghaam_no_ghunnah":[5,11,28,33],"idghaam_shafawi":[23,28],"madd_2":[20,21],"madd_munfasil":[38,40],"qalqalah":[43,45]},
+"68": {"idghaam_ghunnah":[24,30],"madd_2":[12,13,22,23]},
+"69": {"ghunnah":[99,102],"idghaam_ghunnah":[4,8],"idghaam_shafawi":[89,94],"lam_shamsiyyah":[24,25,98,99,114,115,131,132,147,148],"madd_2":[107,108,151,152],"madd_muttasil":[42,44,139,141,175,177],"silent":[38,40,171,173],"hamzat_wasl":[13,14,23,24,54,55,73,74,97,98,113,114,130,131,146,147]},
+"70": {"madd_2":[2,3],"hamzat_wasl":[8,9,23,24,42,43]},
+"71": {"ikhfa":[56,59,79,82],"madd_munfasil":[2,4],"silent":[31,33,39,41,62,64,85,87],"hamzat_wasl":[13,14,55,56,78,79]},
+"72": {"ghunnah":[4,7,34,37],"ikhfa":[10,13,67,71],"idghaam_ghunnah":[119,124],"idghaam_no_ghunnah":[20,25],"idghaam_shafawi":[56,61],"madd_2":[49,50],"qalqalah":[77,79],"hamzat_wasl":[89,90]},
+"73": {"ghunnah":[51,54],"ikhfa":[122,125],"iqlab":[72,75],"idghaam_ghunnah":[26,31,105,109],"idghaam_no_ghunnah":[59,64],"madd_2":[13,14,95,96,109,110],"hamzat_wasl":[34,35]},
+"74": {"idghaam_ghunnah":[96,100],"lam_shamsiyyah":[67,68],"madd_2":[8,9,62,63,102,103],"qalqalah":[132,134,150,152,174,176],"silent":[61,62],"hamzat_wasl":[26,27,34,35,54,55,66,67,79,80,120,121]},
+"75": {"ghunnah":[91,94],"ikhfa":[230,233,268,271],"idghaam_ghunnah":[240,245],"idghaam_no_ghunnah":[223,228,261,266],"lam_shamsiyyah":[77,78,90,91,185,186],"madd_2":[21,22,112,113,166,167],"madd_munfasil":[144,146],"madd_muttasil":[96,98],"qalqalah":[153,155,208,210,246,248],"hamzat_wasl":[42,43,52,53,76,77,89,90,103,104,116,117,172,173,184,185,207,208,245,246]},
+"76": {"ghunnah":[155,158],"lam_shamsiyyah":[102,103,141,142,167,168],"madd_2":[25,26,80,81,106,107,117,118,149,150,175,176],"madd_munfasil":[122,124],"madd_muttasil":[135,137],"silent":[18,20,73,75,124,126],"hamzat_wasl":[46,47,56,57,101,102,140,141,166,167]},
+"77": {"ghunnah":[116,119,187,190],"ikhfa":[326,330,334,338],"idghaam_ghunnah":[162,167,233,237,366,370],"idghaam_no_ghunnah":[388,393],"lam_shamsiyyah":[78,79,101,102,186,187,350,351],"madd_2":[85,86,108,109,345,346],"madd_munfasil":[46,48,296,298,310,312,317,320],"qalqalah":[264,266],"silent":[48,50,74,76,84,85,97,99,107,108,243,245],"hamzat_wasl":[18,19,77,78,100,101,139,140,185,186,205,206,279,280,349,350,370,371,398,399]},
+"78": {"ikhfa":[53,56,88,92,137,140,153,157,203,206,228,231],"idghaam_ghunnah":[69,74,82,86,108,112,174,178,218,223],"madd_2":[123,124,128,129,189,190,194,195],"madd_muttasil":[250,252,256,258],"qalqalah":[23,25,94,96,159,161],"silent":[18,20,118,120,184,186],"hamzat_wasl":[34,35,141,142,232,233,261,262]},
+"79": {"ghunnah":[111,114],"ikhfa":[28,32,64,68,74,78],"idghaam_ghunnah":[80,85,124,129],"lam_shamsiyyah":[110,111],"madd_2":[104,105],"madd_munfasil":[3,5,49,51],"hamzat_wasl":[37,38,138,139]},
+"80": {"ikhfa":[50,54],"idghaam_ghunnah":[3,7],"lam_shamsiyyah":[13,14],"madd_2":[79,80],"madd_munfasil":[66,68],"qalqalah":[27,29],"hamzat_wasl":[12,13,38,39]},
+"81": {"ikhfa":[19,23,46,49],"idghaam_ghunnah":[69,74],"madd_muttasil":[62,64],"silent":[36,38],"hamzat_wasl":[88,89,106,107,178,179,197,198]},
+"82": {"ikhfa":[56,59,102,107],"madd_2":[100,101],"silent":[84,86],"hamzat_wasl":[23,24,67,68,93,94]},
+"83": {"iqlab":[172,174],"idghaam_ghunnah":[24,29],"lam_shamsiyyah":[97,98,259,260],"madd_2":[72,73,182,183,241,242,267,268],"madd_munfasil":[113,116],"madd_muttasil":[10,12],"silent":[65,67,119,121],"hamzat_wasl":[32,33,47,48,96,97,125,126,155,156,210,211,245,246,258,259]},
+"84": {"ikhfa":[176,179],"idghaam_ghunnah":[101,105,161,166],"madd_2":[4,5],"silent":[135,137],"hamzat_wasl":[22,23,70,71,91,92,118,119,140,141]},
+"85": {"ikhfa":[86,90],"idghaam_ghunnah":[3,7,31,35,52,57,67,71,96,100,116,121,161,166],"idghaam_no_ghunnah":[37,42,102,107],"madd_2":[18,19,44,45,82,83,109,110],"hamzat_wasl":[135,136]},
+"86": {"ghunnah":[79,82],"ikhfa":[28,32],"ikhfa_shafawi":[16,20],"madd_munfasil":[58,60,74,76],"silent":[38,40],"hamzat_wasl":[83,84]},
+"87": {"ghunnah":[43,46],"madd_2":[17,18,72,73],"madd_munfasil":[10,12],"qalqalah":[37,39],"hamzat_wasl":[65,66,116,117]},
+"88": {"ikhfa":[98,102,158,162],"ikhfa_shafawi":[64,68],"idghaam_ghunnah":[135,139],"madd_2":[24,25,171,172],"madd_munfasil":[78,80],"silent":[80,82,107,109],"hamzat_wasl":[17,18,46,47,123,124,146,147]},
+"89": {"ikhfa":[62,66,150,154],"idghaam_ghunnah":[248,253],"idghaam_mutajanisayn":[202,203],"madd_muttasil":[59,61,100,102],"qalqalah":[179,181],"silent":[6,8,39,41,80,82,123,125,161,163,230,232],"hamzat_wasl":[138,139,178,179]},
+"90": {"iqlab":[39,43],"idghaam_ghunnah":[115,119],"idghaam_shafawi":[63,68],"lam_shamsiyyah":[294,295],"madd_2":[71,72,121,122,141,142,214,215,258,259],"madd_muttasil":[82,84,170,172],"silent":[147,149,279,281],"hamzat_wasl":[7,8,175,176,232,233,293,294,316,317]},
+"91": {"idghaam_ghunnah":[36,40,326,332],"idghaam_no_ghunnah":[138,143],"lam_shamsiyyah":[187,188],"madd_2":[324,325],"madd_munfasil":[92,94,170,172,205,207],"madd_muttasil":[281,283],"qalqalah":[238,240],"silent":[63,65,94,96,124,126,172,174,207,209,277,279],"hamzat_wasl":[103,104,186,187,237,238]},
+"92": {"ikhfa":[66,70,91,96,198,202,208,212,247,251,286,290,296,300,337,341,410,414],"iqlab":[303,307],"idghaam_ghunnah":[25,29,59,64,113,118,125,129,134,139,178,182,268,273,280,284,346,351,398,403,475,480],"idghaam_no_ghunnah":[223,228,416,421],"idghaam_shafawi":[327,332],"madd_2":[335,336,377,378],"madd_munfasil":[153,156,165,167,173,175,365,368],"qalqalah":[29,31,428,430],"silent":[191,193],"hamzat_wasl":[483,484,499,500]},
+"93": {"ghunnah":[32,35,57,60],"ikhfa":[36,41,69,74],"idghaam_ghunnah":[4,8,22,28],"madd_2":[51,52,65,66,115,116,131,132],"madd_muttasil":[45,47],"qalqalah":[8,10],"hamzat_wasl":[88,89]},
+"94": {"ghunnah":[271,274,312,315],"ikhfa":[157,162,206,209,236,240,250,253,258,262],"idghaam_shafawi":[253,258],"lam_shamsiyyah":[133,134,192,193],"madd_2":[139,140,187,188,242,243],"madd_munfasil":[2,4,30,32,117,120,305,307],"qalqalah":[45,47,162,164,262,264],"silent":[32,34,84,86,101,103,186,187,307,309],"hamzat_wasl":[13,14,64,65,132,133,179,180,191,192,210,211,275,276,316,317]},
+"95": {"ikhfa":[132,135,194,197],"idghaam_ghunnah":[231,235,239,244],"lam_shamsiyyah":[65,66],"madd_2":[20,21,83,84,120,121,165,166,182,183,215,216,294,295,314,315],"qalqalah":[325,327],"silent":[58,60],"hamzat_wasl":[15,16,34,35,64,65,76,77,104,105,150,151,158,159,210,211,249,250,257,258,279,280,287,288,309,310]},
+"96": {"idghaam_ghunnah":[8,13,29,33,40,44],"idghaam_no_ghunnah":[64,70],"madd_2":[6,7],"hamzat_wasl":[50,51]},
+"97": {"ghunnah":[2,5,102,105,240,243],"ikhfa":[58,61,85,88,184,188],"madd_2":[24,25,178,179,230,231],"madd_munfasil":[53,55,142,144],"madd_muttasil":[37,39,216,218,250,252],"silent":[74,76,97,99,144,146,198,200,212,214],"hamzat_wasl":[6,7,30,31,127,128,168,169]},
+"98": {"ghunnah":[46,49],"idghaam_ghunnah":[96,100],"lam_shamsiyyah":[32,33,45,46],"madd_2":[67,68],"madd_muttasil":[51,53],"hamzat_wasl":[7,8,31,32,44,45,58,59]},
+"99": {"idghaam_ghunnah":[31,35],"madd_muttasil":[8,10],"silent":[4,6],"hamzat_wasl":[21,22,59,60]},
+"100": {"ghunnah":[156,159],"ikhfa":[65,70],"iqlab":[104,107],"idghaam_ghunnah":[4,8,74,79,84,88,90,94],"idghaam_no_ghunnah":[241,247],"madd_2":[61,62,114,115,152,153,203,204],"qalqalah":[40,42,98,100,162,164,185,187,197,199],"hamzat_wasl":[28,29,47,48,133,134,171,172,211,212,227,228]},
+"101": {"ghunnah":[148,151],"ikhfa":[63,67],"idghaam_ghunnah":[110,114,188,194],"lam_shamsiyyah":[83,84],"madd_2":[90,91,157,158],"madd_munfasil":[141,143],"qalqalah":[12,14,67,69],"silent":[74,76,89,90,143,145,172,174],"hamzat_wasl":[23,24,82,83,125,126,152,153]},
+"102": {"ghunnah":[546,549],"ikhfa":[10,13,436,440,477,480,495,499],"idghaam_ghunnah":[72,77,158,162,397,401,407,411,454,460,460,465,587,593],"idghaam_shafawi":[81,86,387,392,480,485],"lam_shamsiyyah":[41,42],"madd_2":[48,49,401,402,572,573],"madd_munfasil":[103,105,489,492,503,505],"madd_muttasil":[65,67,164,166,186,188],"silent":[47,48,105,107,138,140,153,155,217,219,232,234,255,257,309,311,505,507,530,532],"hamzat_wasl":[40,41,292,293,550,551]},
+"103": {"ghunnah":[143,146],"ikhfa":[110,113],"idghaam_ghunnah":[58,63,69,74,194,200],"lam_shamsiyyah":[20,21,130,131,148,149],"madd_2":[27,28,56,57,137,138,155,156,192,193],"qalqalah":[102,104],"silent":[26,27,41,43,126,128,136,137,154,155],"hamzat_wasl":[19,20,33,34,44,45,101,102,129,130,147,148,173,174]},
+"104": {"ghunnah":[73,76],"ikhfa":[44,48],"madd_muttasil":[27,29],"qalqalah":[21,23],"silent":[13,15,54,56],"hamzat_wasl":[20,21,32,33,128,129,162,163]},
+"105": {"ghunnah":[2,5,71,74],"ikhfa":[10,13],"idghaam_no_ghunnah":[112,117],"lam_shamsiyyah":[70,71],"madd_2":[36,37,90,91],"madd_munfasil":[5,7,17,19,82,84],"madd_muttasil":[121,123],"hamzat_wasl":[29,30,42,43,69,70,94,95]},
+"106": {"ghunnah":[24,27],"idghaam_no_ghunnah":[48,54],"hamzat_wasl":[2,3,14,15,28,29]},
+"107": {"ghunnah":[58,61],"ikhfa":[46,49,84,88],"madd_2":[10,11],"hamzat_wasl":[21,22,62,63]},
+"108": {"ghunnah":[21,24],"lam_shamsiyyah":[20,21],"hamzat_wasl":[19,20,53,54,117,118,135,136]},
+"109": {"ikhfa":[6,9],"idghaam_ghunnah":[77,81,133,137],"idghaam_shafawi":[128,133],"lam_shamsiyyah":[63,64],"madd_2":[27,28,58,59,83,84,120,121],"madd_munfasil":[2,4],"madd_muttasil":[14,16,20,22],"silent":[57,58],"hamzat_wasl":[50,51,62,63,89,90,113,114]},
+"110": {"ghunnah":[49,52],"idghaam_ghunnah":[4,8],"idghaam_no_ghunnah":[95,101],"madd_2":[45,46],"madd_muttasil":[17,19],"hamzat_wasl":[66,67,81,82]},
+"111": {"ghunnah":[27,30],"ikhfa":[20,25],"idghaam_ghunnah":[4,8],"madd_2":[44,45,61,62],"qalqalah":[12,14],"hamzat_wasl":[71,72]},
+"112": {"ghunnah":[42,45],"ikhfa":[37,42,67,72],"idghaam_ghunnah":[4,8,95,100,105,111],"madd_2":[57,58,93,94],"madd_muttasil":[19,21,63,65],"qalqalah":[12,14],"hamzat_wasl":[77,78]},
+"113": {"ghunnah":[52,55],"ikhfa":[121,124,152,156,165,168,238,242],"idghaam_ghunnah":[67,72,81,85,159,163],"idghaam_mutajanisayn":[55,56],"madd_2":[46,47,195,196],"madd_munfasil":[116,118],"madd_muttasil":[60,62],"hamzat_wasl":[17,18,171,172,188,189,201,202,264,265]},
+"114": {"ghunnah":[113,116],"iqlab":[101,105],"idghaam_ghunnah":[22,27,27,32,124,128],"lam_shamsiyyah":[112,113],"madd_2":[37,38,99,100,137,138],"madd_muttasil":[150,152],"qalqalah":[32,34,144,146,194,196],"hamzat_wasl":[111,112,143,144,165,166]},
+"115": {"ghunnah":[151,154],"iqlab":[30,33],"idghaam_ghunnah":[4,8],"lam_shamsiyyah":[17,18],"madd_2":[119,120,145,146],"madd_muttasil":[161,163],"hamzat_wasl":[16,17,58,59,95,96]},
+"116": {"ghunnah":[2,5],"iqlab":[134,139],"idghaam_ghunnah":[29,33,79,83,94,98],"madd_2":[44,45,69,70,132,133],"madd_muttasil":[85,87],"qalqalah":[119,121],"hamzat_wasl":[6,7,107,108]},
+"117": {"ikhfa":[16,20],"idghaam_ghunnah":[2,6,42,47,49,53,76,82],"madd_2":[40,41,74,75],"madd_munfasil":[25,27,33,35],"qalqalah":[6,8,53,55]},
+"118": {"ghunnah":[37,40],"idghaam_ghunnah":[62,68],"hamzat_wasl":[10,11]},
+"119": {"ghunnah":[11,14,27,30,32,35,51,54,72,75,109,112,130,133],"ikhfa":[190,194],"idghaam_ghunnah":[153,157,184,190,228,234],"lam_shamsiyyah":[166,167],"madd_2":[94,95,174,175],"qalqalah":[210,212],"hamzat_wasl":[85,86,141,142,165,166,198,199]},
+"120": {"ghunnah":[17,20],"lam_shamsiyyah":[44,45],"madd_2":[52,53],"hamzat_wasl":[43,44]},
+"121": {"ghunnah":[30,33],"madd_2":[20,21],"madd_muttasil":[6,8],"silent":[2,4]},
+"122": {"ghunnah":[66,69],"ikhfa":[71,75,83,87],"idghaam_ghunnah":[132,137,154,159],"lam_shamsiyyah":[36,37],"madd_2":[40,41,45,46,69,70,104,105,110,111],"madd_munfasil":[124,126],"qalqalah":[53,55,75,77],"silent":[20,22,32,34],"hamzat_wasl":[2,3,35,36,95,96,142,143,178,179]},
+"123": {"ikhfa":[116,120],"idghaam_ghunnah":[63,67,79,84,138,143],"madd_2":[57,58,93,94,112,113],"madd_munfasil":[29,31],"madd_muttasil":[76,78],"qalqalah":[84,86,105,107],"hamzat_wasl":[50,51,124,125]},
+"124": {"ghunnah":[106,109],"ikhfa":[36,40,52,55,72,76],"idghaam_ghunnah":[4,8],"lam_shamsiyyah":[21,22],"madd_2":[25,26,30,31],"madd_muttasil":[82,84],"qalqalah":[91,93],"silent":[78,80],"hamzat_wasl":[20,21,101,102]},
+"125": {"ghunnah":[26,29],"idghaam_ghunnah":[20,26,73,77,113,118],"madd_2":[49,50,100,101,141,142],"qalqalah":[43,45,96,98,137,139],"hamzat_wasl":[77,78,118,119,127,128]},
+"126": {"idghaam_ghunnah":[81,86],"lam_shamsiyyah":[19,20],"madd_2":[25,26,28,29],"hamzat_wasl":[18,19,42,43,60,61]},
+"127": {"ghunnah":[24,27,64,67,124,127,158,161,177,180,209,212,329,332],"ikhfa":[197,201,201,204,256,260,323,327],"lam_shamsiyyah":[23,24,123,124],"madd_2":[105,106,117,118,138,139,248,249,277,278,351,352],"madd_muttasil":[29,31,129,131],"silent":[266,268,310,312],"hamzat_wasl":[22,23,39,40,98,99,122,123,134,135,215,216,239,240,285,286,333,334]},
+"128": {"ghunnah":[213,216],"ikhfa":[62,67,163,166,182,186],"iqlab":[28,31],"idghaam_ghunnah":[94,98,123,128,143,147],"lam_shamsiyyah":[129,130,170,171],"madd_munfasil":[89,91],"silent":[193,195,206,208],"hamzat_wasl":[7,8,128,129,158,159,169,170,217,218]},
+"129": {"ghunnah":[47,50,173,176],"ikhfa":[4,8,24,28,142,146],"idghaam_no_ghunnah":[197,203],"lam_shamsiyyah":[46,47],"madd_munfasil":[17,19],"madd_muttasil":[52,54],"silent":[19,21,35,37,89,91,153,155,166,168],"hamzat_wasl":[45,46,98,99,123,124,177,178]},
+"130": {"ikhfa":[44,48],"idghaam_ghunnah":[4,8,38,44],"madd_2":[54,55,74,75],"hamzat_wasl":[26,27,64,65]},
+"131": {"ghunnah":[175,178],"ikhfa":[104,108,157,161],"lam_shamsiyyah":[19,20,196,197],"madd_2":[25,26,28,29,98,99,202,203,205,206],"qalqalah":[58,60,108,110],"silent":[88,90,142,144,168,170],"hamzat_wasl":[18,19,42,43,72,73,91,92,135,136,145,146,195,196,219,220,237,238]},
+"132": {"lam_shamsiyyah":[19,20],"madd_2":[25,26,28,29],"hamzat_wasl":[18,19,42,43,63,64]},
+"133": {"ghunnah":[35,38],"idghaam_ghunnah":[2,6],"lam_shamsiyyah":[34,35],"madd_2":[90,91],"qalqalah":[17,19],"hamzat_wasl":[33,34,73,74]},
+"134": {"ikhfa":[3,7,42,45],"iqlab":[110,115],"lam_shamsiyyah":[28,29,63,64],"hamzat_wasl":[27,28,46,47,62,63,75,76,96,97]},
+"135": {"ghunnah":[295,298],"ikhfa":[103,106,181,186,243,247,261,265],"idghaam_ghunnah":[152,156],"madd_2":[48,49,123,124],"madd_munfasil":[2,4,97,100,237,240,269,271],"madd_muttasil":[73,75],"qalqalah":[140,142],"silent":[31,33,40,42,227,229,254,256,271,273,288,290],"hamzat_wasl":[13,14,57,58,118,119,135,136,186,187,230,231,299,300]},
+"136": {"ikhfa":[140,143,148,152],"iqlab":[266,271],"idghaam_ghunnah":[161,165],"madd_2":[67,68,78,79,114,115,125,126,198,199,210,211,222,223,264,265],"madd_munfasil":[2,4,30,32,135,137],"madd_muttasil":[188,190],"qalqalah":[152,154,251,253],"silent":[32,34,43,45],"hamzat_wasl":[13,14,48,49,71,72,82,83,118,119,129,130,174,175,226,227,236,237]},
+"137": {"ghunnah":[2,5,29,32,45,48,62,65,78,81],"idghaam_no_ghunnah":[99,105],"silent":[24,26,40,42,57,59,73,75,91,93],"hamzat_wasl":[6,7,82,83,115,116]},
+"138": {"ghunnah":[28,31],"madd_2":[15,16],"hamzat_wasl":[8,9]},
+"139": {"ghunnah":[114,117],"ikhfa":[52,56,91,94],"madd_2":[28,29],"madd_muttasil":[45,47],"qalqalah":[79,81],"hamzat_wasl":[23,24,60,61,99,100,118,119]},
+"140": {"ghunnah":[187,190,215,218,275,278],"idghaam_ghunnah":[198,204],"madd_2":[37,38,68,69,242,243,258,259],"madd_munfasil":[182,184],"qalqalah":[4,6,124,126],"silent":[131,133,159,161],"hamzat_wasl":[30,31,72,73,219,220,235,236,253,254]},
+"141": {"ikhfa":[36,40,109,113,138,142],"idghaam_ghunnah":[56,61,93,98,270,274],"idghaam_shafawi":[193,198],"madd_2":[123,124,260,261,295,296],"madd_munfasil":[77,79,145,147],"qalqalah":[274,276],"silent":[79,81,147,149],"hamzat_wasl":[64,65,201,202,218,219,253,254,281,282,310,311]},
+"142": {"ghunnah":[2,5,131,134],"lam_shamsiyyah":[87,88,130,131],"madd_2":[13,14,26,27,52,53,94,95],"madd_munfasil":[75,77],"madd_muttasil":[121,123],"silent":[77,79,93,94,104,106],"hamzat_wasl":[6,7,35,36,86,87,129,130,156,157]},
+"143": {"ikhfa":[109,113],"idghaam_ghunnah":[86,90],"madd_2":[24,25,122,123],"madd_munfasil":[32,34,59,61],"madd_muttasil":[44,46,50,52,71,73,77,79],"qalqalah":[5,7],"hamzat_wasl":[97,98]},
+"144": {"ikhfa":[80,84,118,122],"idghaam_ghunnah":[159,165],"madd_2":[56,57,157,158],"madd_munfasil":[2,4],"madd_muttasil":[73,75],"qalqalah":[122,124],"silent":[31,33,48,50,129,131],"hamzat_wasl":[13,14,51,52,88,89]},
+"145": {"ghunnah":[2,5,55,58],"ikhfa":[66,70],"lam_shamsiyyah":[27,28,54,55],"madd_2":[13,14],"hamzat_wasl":[6,7,26,27,36,37,53,54]},
+"146": {"madd_muttasil":[105,107],"qalqalah":[173,175],"silent":[23,25,37,39,52,54,76,78,101,103],"hamzat_wasl":[7,8,42,43,57,58,117,118,148,149,156,157]},
+"147": {"ikhfa":[38,42,58,61],"hamzat_wasl":[14,15,72,73]},
+"148": {"ikhfa":[67,71],"lam_shamsiyyah":[34,35],"madd_muttasil":[38,40],"hamzat_wasl":[13,14,21,22,33,34,48,49,84,85]},
+"149": {"ghunnah":[67,70],"ikhfa":[2,6,54,58,61,65,91,96],"madd_muttasil":[58,60],"qalqalah":[6,8],"silent":[11,13,49,51],"hamzat_wasl":[71,72]},
+"150": {"ghunnah":[2,5],"idghaam_ghunnah":[65,69,136,140,156,160,173,177],"madd_2":[48,49,105,106,197,198],"silent":[77,79,185,187],"hamzat_wasl":[6,7,30,31,87,88]},
+"151": {"idghaam_ghunnah":[36,41,74,80],"madd_2":[23,24,59,60],"madd_muttasil":[6,8],"qalqalah":[47,49],"silent":[2,4],"hamzat_wasl":[18,19]},
+"152": {"idghaam_ghunnah":[77,82],"idghaam_no_ghunnah":[155,161],"madd_2":[43,44],"madd_muttasil":[95,97],"silent":[20,22,62,64,91,93],"hamzat_wasl":[2,3,25,26,141,142]},
+"153": {"ghunnah":[209,212],"ikhfa":[32,36,119,123,164,168,292,296],"iqlab":[238,241],"idghaam_ghunnah":[61,67,331,337],"lam_shamsiyyah":[71,72,182,183],"madd_2":[26,27,59,60,123,124,186,187,274,275,296,297,329,330],"madd_munfasil":[104,107,136,138],"madd_muttasil":[77,79,253,255],"qalqalah":[86,88,230,232],"silent":[96,98,138,140,222,224],"hamzat_wasl":[19,20,70,71,149,150,181,182,213,214,225,226,264,265]},
+"154": {"idghaam_ghunnah":[90,95],"idghaam_shafawi":[156,161],"lam_shamsiyyah":[24,25,129,130],"madd_2":[39,40,164,165],"qalqalah":[65,67,133,135],"silent":[72,74,121,123],"hamzat_wasl":[23,24,64,65,75,76,128,129]},
+"155": {"ikhfa_shafawi":[42,46],"iqlab":[83,85,137,141],"idghaam_ghunnah":[106,110],"idghaam_shafawi":[16,21],"madd_2":[24,25,52,53],"madd_muttasil":[88,90],"qalqalah":[10,12],"hamzat_wasl":[56,57,77,78,152,153]},
+"156": {"madd_2":[50,51]},
+"157": {"ghunnah":[15,18,139,142,242,245],"ikhfa":[118,122],"ikhfa_shafawi":[200,204],"idghaam_ghunnah":[182,187],"lam_shamsiyyah":[238,239],"madd_2":[115,116,206,207],"qalqalah":[49,51],"silent":[163,165],"hamzat_wasl":[30,31,48,49,71,72,143,144,153,154,227,228,237,238]},
+"158": {"idghaam_mutaqaribayn":[2,3],"hamzat_wasl":[14,15,39,40]},
+"159": {"ghunnah":[47,50],"idghaam_ghunnah":[4,9],"madd_2":[26,27,55,56,72,73,90,91],"qalqalah":[59,61],"hamzat_wasl":[19,20,83,84]},
+"160": {"ikhfa":[102,106],"idghaam_ghunnah":[9,14],"madd_2":[65,66],"silent":[33,35],"hamzat_wasl":[17,18,112,113]},
+"161": {"ghunnah":[72,75],"lam_shamsiyyah":[14,15,71,72],"madd_2":[21,22,66,67,86,87,112,113],"qalqalah":[29,31,100,102],"silent":[20,21,22,24,37,39],"hamzat_wasl":[13,14,70,71,81,82]},
+"162": {"ikhfa":[84,87,108,111,116,120],"lam_shamsiyyah":[10,11,144,145,171,172],"madd_2":[3,4,14,15,151,152,178,179],"madd_munfasil":[79,81,103,105],"madd_muttasil":[238,240],"qalqalah":[120,122,261,263],"silent":[150,151,177,178,234,236],"hamzat_wasl":[9,10,27,28,48,49,129,130,143,144,157,158,170,171,184,185,201,202,211,212,221,222]},
+"163": {"ghunnah":[2,5,67,70],"iqlab":[82,85],"idghaam_ghunnah":[61,65],"lam_shamsiyyah":[66,67],"madd_2":[75,76,92,93,123,124,138,139,153,154,219,220,236,237,258,259],"madd_munfasil":[5,7,18,20,34,36,47,49,106,108,113,116],"qalqalah":[119,121],"hamzat_wasl":[65,66,171,172]},
+"164": {"ikhfa":[7,12,40,44],"idghaam_no_ghunnah":[56,62],"madd_2":[23,24],"qalqalah":[12,14,44,46,67,69],"hamzat_wasl":[97,98]},
+"165": {"ghunnah":[56,59],"ikhfa":[27,30],"iqlab":[83,87],"idghaam_ghunnah":[6,12],"lam_shamsiyyah":[55,56,94,95],"hamzat_wasl":[69,70,93,94,111,112]},
+"166": {"ikhfa":[35,38,52,55],"madd_2":[3,4,59,60,71,72],"madd_munfasil":[30,32],"madd_muttasil":[82,84],"hamzat_wasl":[9,10,75,76,114,115]},
+"167": {"ghunnah":[2,5],"ikhfa":[39,43],"iqlab":[77,82],"madd_2":[75,76],"qalqalah":[59,61],"silent":[23,25,34,36,68,70],"hamzat_wasl":[6,7,49,50]},
+"168": {"ghunnah":[2,5],"silent":[23,25,35,37],"hamzat_wasl":[6,7,50,51]},
+"169": {"ghunnah":[19,22],"idghaam_ghunnah":[49,54],"madd_2":[27,28,62,63],"madd_munfasil":[41,43],"hamzat_wasl":[74,75]},
+"170": {"ghunnah":[15,18,127,130],"ikhfa":[109,113],"idghaam_no_ghunnah":[62,67,94,100],"lam_shamsiyyah":[14,15,39,40,148,149],"madd_2":[154,155,157,158],"madd_munfasil":[2,4],"madd_muttasil":[29,31],"qalqalah":[24,26],"silent":[86,88,120,122],"hamzat_wasl":[13,14,38,39,51,52,147,148,163,164,181,182]},
+"171": {"ghunnah":[99,102,306,309],"ikhfa":[279,282,335,339],"idghaam_ghunnah":[205,210,327,331,353,357],"idghaam_no_ghunnah":[293,299,374,379],"lam_shamsiyyah":[392,393],"madd_2":[18,19,177,178,249,250,272,273,325,326,331,332,343,344,367,368,381,382,398,399,401,402],"madd_munfasil":[2,4,167,169,180,182,348,350],"qalqalah":[125,127,339,341],"silent":[33,35,64,66,226,228,265,267,285,287],"hamzat_wasl":[11,12,73,74,88,89,106,107,124,125,147,148,231,232,278,279,313,314,391,392,415,416,436,437]},
+"172": {"ikhfa":[11,14,107,110],"idghaam_ghunnah":[3,7,30,34,99,103],"idghaam_no_ghunnah":[45,51],"madd_2":[129,130],"madd_muttasil":[70,72],"qalqalah":[42,44],"hamzat_wasl":[17,18,63,64,79,80]},
+"173": {"ghunnah":[4,7,115,118],"ikhfa":[99,103,135,138,220,224],"idghaam_ghunnah":[192,197,242,247],"idghaam_shafawi":[94,99,215,220],"lam_shamsiyyah":[43,44],"madd_2":[47,48,52,53,109,110],"silent":[27,29,39,41,141,143,158,160],"hamzat_wasl":[9,10,42,43,120,121,130,131,146,147,228,229]},
+"174": {"ghunnah":[15,18],"ikhfa":[67,70],"ikhfa_shafawi":[35,39],"idghaam_ghunnah":[45,50,92,98],"idghaam_no_ghunnah":[50,55],"lam_shamsiyyah":[14,15],"madd_2":[43,44],"madd_munfasil":[2,4,74,76],"madd_muttasil":[29,31],"qalqalah":[24,26],"hamzat_wasl":[13,14]},
+"175": {"ghunnah":[4,7],"idghaam_ghunnah":[89,94,106,110,137,143],"madd_2":[59,60,135,136],"qalqalah":[67,69],"silent":[27,29,52,54],"hamzat_wasl":[9,10,32,33,42,43]},
+"176": {"ghunnah":[242,245],"ikhfa":[114,118,188,192,194,198,258,262,298,302,331,334,368,372],"idghaam_ghunnah":[98,102,286,291],"idghaam_no_ghunnah":[162,167,174,179,277,282],"lam_shamsiyyah":[228,229,304,305],"madd_2":[52,53,91,92],"madd_246":[410,411],"madd_munfasil":[106,108,157,159,265,267],"madd_muttasil":[295,297],"silent":[70,72,267,269,378,380],"hamzat_wasl":[21,22,45,46,63,64,205,206,227,228,326,327,351,352,383,384]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/40.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/40.json
index 0c0e4db..3ccb67a 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/40.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/40.json
@@ -1,87 +1,87 @@
{
-"1": {"madd-lazim":[40,42]},
-"2": {"ghunnah":[2,5],"madd":[16,17,51,52],"wasl":[9,10,25,26,33,34,44,45]},
-"3": {"ghunnah":[14,16],"idgham":[9,10,29,30,62,63],"madd":[73,75,80,81,112,113],"wasl":[8,9,28,29,46,47,61,62,105,106]},
-"4": {"madd":[8,9,16,18,24,25,105,106],"qalqalah":[106,107],"silent":[60,62],"wasl":[28,29,43,44,98,99]},
-"5": {"ghunnah":[52,55,69,72,83,86,87,91],"idgham":[32,36],"madd":[122,123,138,139,206,207],"qalqalah":[12,14,148,150,207,208],"silent":[128,130,155,157],"wasl":[36,37,133,134,163,164]},
-"6": {"ghunnah":[66,69,86,89],"idgham":[85,86],"madd":[6,7,59,61,80,81,89,90],"silent":[61,63],"wasl":[43,44,84,85]},
-"7": {"ghunnah":[189,194],"idgham":[170,175,180,184],"madd":[47,48,99,100,270,271],"silent":[138,140,219,221,233,235],"wasl":[22,23,194,195,224,225,263,264]},
-"8": {"ghunnah":[26,29,65,69,129,132,137,140],"idgham":[52,53],"madd":[29,30,84,86,101,102,119,120,159,160],"qalqalah":[13,15,35,37],"wasl":[40,41,141,142,152,153]},
-"9": {"ghunnah":[28,32,59,63],"idgham":[10,11,36,37],"madd":[78,79,84,85,112,113],"qalqalah":[65,67],"wasl":[9,10,35,36,95,96,105,106]},
-"10": {"ghunnah":[2,5,82,85],"idgham":[66,71],"madd":[122,123,136,137],"qalqalah":[42,44,71,73,99,101],"silent":[23,25],"wasl":[6,7,47,48,114,115]},
-"11": {"ghunnah":[123,127],"idgham":[118,123],"madd":[16,18,129,130],"silent":[6,8],"wasl":[30,31,58,59,72,73]},
-"12": {"ghunnah":[7,11,13,16],"idgham":[67,71],"madd":[2,3,18,20,50,51,82,83,134,135],"silent":[93,95],"wasl":[34,35,98,99,116,117,127,128]},
-"13": {"idgham":[51,56,60,61,76,81,106,110],"madd":[28,29,33,34,66,68,112,113],"qalqalah":[113,114],"wasl":[5,6,59,60]},
-"14": {"idgham":[37,38],"madd":[64,65,69,70],"qalqalah":[3,5],"silent":[8,10],"wasl":[2,3,11,12,36,37,59,60]},
-"15": {"ghunnah":[107,110],"idgham":[9,10,44,45,76,80,121,122],"madd":[17,18,65,66,82,84,101,102,127,128],"qalqalah":[128,129],"wasl":[8,9,25,26,43,44,120,121]},
-"16": {"ghunnah":[9,13],"idgham":[63,68],"madd":[13,14,106,107,120,121],"wasl":[41,42,73,74,83,84,101,102,112,113]},
-"17": {"ghunnah":[30,34,71,74],"madd":[98,99],"qalqalah":[12,14,99,100],"wasl":[59,60,75,76,91,92]},
-"18": {"ghunnah":[4,7],"idgham":[86,87,110,114,124,128],"madd":[71,72,90,91,130,131],"wasl":[21,22,39,40,56,57]},
-"19": {"idgham":[47,48],"madd":[11,13,53,54],"wasl":[20,21,46,47]},
-"20": {"ghunnah":[53,57,89,92],"idgham":[107,108],"madd":[62,63,124,125],"qalqalah":[12,14,43,45,70,72],"wasl":[2,3,20,21,31,32,93,94,106,107,117,118]},
-"21": {"ghunnah":[38,41,91,95,152,157],"idgham":[141,145,220,225,238,242],"madd":[62,63,242,243],"qalqalah":[95,97,243,244],"silent":[17,19,44,46,86,88,110,112],"wasl":[24,25,70,71,159,160,182,183,228,229]},
-"22": {"ghunnah":[12,15,48,52,101,104,114,118],"madd":[2,3,62,63,106,107,131,132],"qalqalah":[132,133],"silent":[75,77],"wasl":[52,53,91,92,124,125]},
-"23": {"idgham":[54,59],"madd":[37,38,52,53,61,62],"qalqalah":[6,8]},
-"24": {"ghunnah":[57,61],"madd":[22,23,25,26,33,34,53,54,64,65],"qalqalah":[65,66],"silent":[48,50]},
-"25": {"ghunnah":[4,7,17,21,37,40],"madd":[11,13,60,62,71,73,103,104,124,126,151,152,175,176],"qalqalah":[54,56,67,69],"silent":[50,52,62,64,94,96,117,119],"wasl":[21,22,53,54,76,77,107,108,146,147]},
-"26": {"ghunnah":[69,72],"idgham":[85,89,114,118],"madd":[26,28,64,66,72,74,146,147],"qalqalah":[31,33,52,54,147,148],"wasl":[129,130,139,140]},
-"27": {"ghunnah":[19,22,54,58],"idgham":[49,54,72,77],"madd":[13,16,104,105],"qalqalah":[105,106],"wasl":[97,98]},
-"28": {"ghunnah":[135,139,185,190,237,241,267,270,308,312],"idgham":[13,18,23,28,94,98,155,160,172,176,213,217,226,231],"madd":[62,63,67,69,129,131,149,150,181,182,207,208,315,316],"qalqalah":[74,76,124,126,233,235,316,317],"wasl":[112,113,139,140,246,247,271,272]},
-"29": {"ghunnah":[70,73,82,85,101,105],"idgham":[66,70,199,200],"madd":[2,3,39,40,105,107,132,134,154,156,168,170,205,206],"qalqalah":[206,207],"wasl":[17,18,27,28,52,53,91,92,198,199]},
-"30": {"ghunnah":[37,40],"idgham":[59,64],"madd":[14,16,27,28,40,42,85,86],"qalqalah":[86,87],"wasl":[8,9,76,77]},
-"31": {"ghunnah":[60,63],"idgham":[25,29,33,37,100,106],"madd":[112,113],"qalqalah":[113,114],"wasl":[47,48,79,80]},
-"32": {"ghunnah":[14,17],"idgham":[47,48],"madd":[4,5,17,19,53,54],"qalqalah":[54,55],"wasl":[46,47]},
-"33": {"idgham":[38,43,65,69,71,75],"madd":[100,101,109,110],"qalqalah":[20,22,110,111],"wasl":[46,47,82,83]},
-"34": {"ghunnah":[30,34,83,86,96,100,159,162,177,182],"idgham":[78,83,137,141,223,228],"madd":[11,13,51,52,90,92,102,103,109,112,169,170,184,185,232,233],"qalqalah":[6,8,34,36,141,143,233,234],"wasl":[41,42,148,149,198,199]},
-"35": {"ghunnah":[92,95,108,111,190,194],"madd":[14,15,25,27,33,34,60,61,69,70,137,138,197,198],"qalqalah":[84,86,145,147],"silent":[130,132],"wasl":[37,38,96,97,112,113,152,153]},
-"36": {"idgham":[46,52],"madd":[21,22,24,25,27,28,57,59,78,79],"qalqalah":[32,34,62,64,79,80],"wasl":[31,32,69,70]},
-"37": {"ghunnah":[64,67,75,78],"idgham":[11,12,88,93,155,156],"madd":[6,7,17,18,20,21,40,43,48,49,80,81,84,85,97,98,126,128,139,140,204,205],"qalqalah":[205,206],"wasl":[10,11,154,155]},
-"38": {"idgham":[67,68],"madd":[14,16,27,28,73,74],"qalqalah":[74,75],"wasl":[8,9,35,36,66,67]},
-"39": {"ghunnah":[12,15,62,65],"idgham":[40,41,56,60],"madd":[2,3,21,22,35,36,54,55,97,98],"silent":[34,35],"wasl":[27,28,39,40,66,67,90,91]},
-"40": {"ghunnah":[20,24,81,85,97,100,117,121,151,154],"idgham":[75,81],"madd":[34,37,71,72,127,129,189,190],"qalqalah":[30,32,136,138,190,191],"silent":[123,125],"wasl":[146,147]},
-"41": {"ghunnah":[41,44,75,78],"idgham":[40,41,74,75],"madd":[4,5,18,20,47,48,64,66,78,79],"qalqalah":[23,25,55,57],"silent":[46,47],"wasl":[39,40,73,74]},
-"42": {"idgham":[77,81],"madd":[49,50,70,71,125,126],"qalqalah":[2,4,90,92],"wasl":[26,27,106,107,117,118]},
-"43": {"ghunnah":[13,16,63,67,107,110,141,144,177,180],"idgham":[70,71,176,177],"madd":[31,33,54,55,120,122,171,172,180,181],"qalqalah":[22,24],"wasl":[69,70,90,91,129,130,145,146,175,176]},
-"44": {"ghunnah":[73,76,91,95],"madd":[18,20,54,56,103,104],"qalqalah":[104,105],"wasl":[63,64,77,78,96,97]},
-"45": {"madd":[7,8,75,77,87,88],"qalqalah":[88,89],"silent":[42,44],"wasl":[11,12,80,81]},
-"46": {"ghunnah":[2,5],"idgham":[1,2,37,42,48,53,69,70],"madd":[87,89,124,125],"qalqalah":[81,83,125,126],"silent":[89,91],"wasl":[68,69,117,118]},
-"47": {"ghunnah":[28,31,90,93,97,100,114,119,126,129,144,147,166,169],"idgham":[27,28,46,47,129,134,155,161,165,166],"madd":[54,56,83,85,169,170],"madd-lazim":[13,15],"silent":[58,60,85,87],"wasl":[26,27,45,46,72,73,164,165]},
-"48": {"ghunnah":[34,37,43,47,55,58],"madd":[27,29,50,52,93,94],"qalqalah":[69,71,94,95],"silent":[29,31],"wasl":[6,7,16,17,59,60,86,87]},
-"49": {"ghunnah":[24,27,46,49,83,86],"idgham":[23,24,93,99],"madd":[109,110],"qalqalah":[53,55,110,111],"silent":[58,60],"wasl":[8,9,22,23,52,53,102,103]},
-"50": {"ghunnah":[44,48],"madd":[5,7,58,59,108,110,120,121,144,145],"qalqalah":[90,92],"silent":[7,9,68,70,84,86,95,97,112,114],"wasl":[48,49,89,90,115,116]},
-"51": {"ghunnah":[2,5,11,14],"idgham":[67,68],"madd":[62,63,103,104],"qalqalah":[104,105],"silent":[47,49,61,62],"wasl":[29,30,54,55,66,67,94,95]},
-"52": {"ghunnah":[13,16],"idgham":[20,21,58,59,86,87],"madd":[24,25,80,82,90,91],"wasl":[19,20,57,58,85,86]},
-"53": {"madd":[55,57,64,66,79,80],"qalqalah":[6,8,80,81],"wasl":[27,28,72,73]},
-"54": {"idgham":[3,8],"madd":[36,37],"qalqalah":[37,38],"silent":[21,23],"wasl":[27,28]},
-"55": {"ghunnah":[12,15,56,58],"idgham":[35,39],"madd":[113,114],"qalqalah":[109,111],"wasl":[2,3,23,24,39,40,91,92,104,105]},
-"56": {"ghunnah":[2,5,83,87,122,126,161,164],"idgham":[113,118,174,175],"madd":[20,21,31,33,39,40,66,67,75,76,128,129,166,167,191,192],"qalqalah":[110,112],"wasl":[6,7,43,44,139,140,151,152,173,174,184,185]},
-"57": {"ghunnah":[58,61,72,75,87,90],"idgham":[10,11,57,58,86,87],"madd":[16,17,19,20,69,70,106,107],"wasl":[9,10,25,26,56,57,85,86]},
-"58": {"idgham":[77,78,114,120],"madd":[81,82,86,87,103,105,133,134],"silent":[61,63,73,75],"wasl":[16,17,30,31,43,44,76,77,96,97]},
-"59": {"ghunnah":[2,5,55,58,70,73],"idgham":[7,8,27,32,69,70],"madd":[52,53,89,90],"wasl":[6,7,68,69]},
-"60": {"ghunnah":[49,52,113,116],"madd":[26,28,126,127],"qalqalah":[19,21,37,39,99,101],"wasl":[18,19,53,54]},
-"61": {"ghunnah":[63,66,84,87,117,120,131,134,146,149],"idgham":[62,63,116,117,145,146],"madd":[128,129,165,166],"qalqalah":[74,76],"silent":[50,52],"wasl":[8,9,30,31,61,62,88,89,115,116,144,145]},
-"62": {"ghunnah":[79,82],"idgham":[47,52],"madd":[2,3,30,31,52,54,59,60,93,94],"wasl":[10,11]},
-"63": {"madd":[4,5,46,47,66,67],"qalqalah":[60,62],"silent":[35,37],"wasl":[19,20,50,51]},
-"64": {"idgham":[46,51,52,53,70,74,118,123,127,128],"madd":[58,60,67,69,136,137,142,143,199,200,204,205],"wasl":[8,9,30,31,51,52,126,127,150,151,180,181,194,195]},
-"65": {"idgham":[68,69],"madd":[16,18,23,24,105,106,110,111],"qalqalah":[42,44],"wasl":[5,6,41,42,67,68,76,77,100,101]},
-"66": {"ghunnah":[7,10,56,60,74,77],"idgham":[106,111],"madd":[81,83,100,101,154,155,159,160],"qalqalah":[46,48],"wasl":[34,35,64,65,90,91,149,150]},
-"67": {"ghunnah":[26,30,34,38,38,41,54,58,58,61,74,78,78,81,100,105,105,108,138,141,168,171,192,196,231,234],"idgham":[21,26,44,49,161,166,171,176,176,180,223,229,233,238],"madd":[119,121,213,215,258,259],"qalqalah":[49,51,113,115,196,198,207,209],"silent":[121,123,152,154,215,217],"wasl":[5,6]},
-"68": {"ghunnah":[52,57,59,62,82,86],"madd":[19,20,43,46,78,79,90,91],"wasl":[5,6]},
-"69": {"ghunnah":[65,68],"madd":[32,33,43,45,51,52,79,80],"wasl":[18,19,55,56]},
-"70": {"madd":[30,31,40,42,59,60,88,89],"silent":[18,20],"wasl":[23,24]},
-"71": {"idgham":[40,41],"madd":[14,15,20,22,29,30,46,47,60,61],"wasl":[5,6,39,40]},
-"72": {"ghunnah":[17,20,27,30],"idgham":[26,27],"madd":[42,43],"wasl":[4,5,25,26]},
-"73": {"ghunnah":[2,5,32,35],"madd":[46,47]},
-"74": {"ghunnah":[2,6,38,41,72,76,87,92],"idgham":[57,62],"madd":[94,95,121,122,126,127],"qalqalah":[62,64,76,78],"silent":[24,26,33,35,67,69],"wasl":[10,11,108,109,116,117]},
-"75": {"ghunnah":[7,11,17,20,77,80],"madd":[2,3,91,92],"wasl":[39,40,58,59]},
-"76": {"ghunnah":[26,29],"madd":[7,9,18,19,34,35,81,82],"qalqalah":[1,3,14,16],"silent":[9,11],"wasl":[67,68]},
-"77": {"ghunnah":[12,15,35,39,41,44,52,55,100,103],"madd":[126,127],"wasl":[2,3,23,24,65,66]},
-"78": {"ghunnah":[32,36,54,58],"idgham":[26,32,49,54,83,88,88,93,138,142],"madd":[194,196,262,263],"qalqalah":[6,8,36,38,98,100,256,258],"wasl":[176,177,206,207,223,224,251,252]},
-"79": {"madd":[39,40,83,84],"silent":[54,56],"wasl":[8,9,30,31]},
-"80": {"ghunnah":[58,62],"madd":[20,21,114,115],"qalqalah":[32,34],"silent":[39,41],"wasl":[96,97]},
-"81": {"ghunnah":[51,54],"madd":[17,18,22,23,37,38,56,57],"wasl":[41,42]},
-"82": {"ghunnah":[38,41,82,86,150,155],"idgham":[139,143,189,194],"madd":[62,63,100,102,171,173,213,214],"qalqalah":[86,88],"silent":[17,19,44,46,102,104,202,204],"wasl":[24,25,70,71,157,158]},
-"83": {"ghunnah":[4,7,30,34,66,69],"idgham":[71,76,101,106],"madd":[11,13,44,45,121,122,135,136],"silent":[55,57,114,116],"wasl":[34,35,79,80]},
-"84": {"ghunnah":[4,7,43,46,88,91],"madd":[33,35,66,67,97,98,107,108],"silent":[15,17,35,37],"wasl":[50,51]},
-"85": {"ghunnah":[14,17,39,42,65,68],"madd":[29,30,112,113,138,139,143,144],"qalqalah":[89,91],"silent":[50,52],"wasl":[71,72,79,80,133,134]}
+"1": {"madd_6":[40,42]},
+"2": {"ikhfa":[2,5],"madd_2":[16,17],"madd_246":[51,52],"hamzat_wasl":[9,10,25,26,33,34,44,45]},
+"3": {"iqlab":[14,16],"lam_shamsiyyah":[9,10,29,30,62,63],"madd_2":[80,81],"madd_246":[112,113],"madd_munfasil":[73,75],"hamzat_wasl":[8,9,28,29,46,47,61,62,105,106]},
+"4": {"madd_2":[8,9,24,25],"madd_246":[105,106],"madd_munfasil":[16,18],"qalqalah":[106,107],"silent":[60,62],"hamzat_wasl":[28,29,43,44,98,99]},
+"5": {"ghunnah":[69,72,83,86],"iqlab":[52,55,87,91],"idghaam_ghunnah":[32,36],"madd_2":[122,123,138,139],"madd_246":[206,207],"qalqalah":[12,14,148,150,207,208],"silent":[128,130,155,157],"hamzat_wasl":[36,37,133,134,163,164]},
+"6": {"ghunnah":[66,69,86,89],"lam_shamsiyyah":[85,86],"madd_2":[6,7,80,81],"madd_246":[89,90],"madd_munfasil":[59,61],"silent":[61,63],"hamzat_wasl":[43,44,84,85]},
+"7": {"ikhfa":[189,194],"idghaam_ghunnah":[180,184],"idghaam_no_ghunnah":[170,175],"madd_2":[47,48,99,100],"madd_246":[270,271],"silent":[138,140,219,221,233,235],"hamzat_wasl":[22,23,194,195,224,225,263,264]},
+"8": {"ghunnah":[26,29,129,132],"ikhfa":[65,69,137,140],"idghaam_mutajanisayn":[52,53],"madd_2":[29,30,101,102,119,120],"madd_246":[159,160],"madd_muttasil":[84,86],"qalqalah":[13,15,35,37],"hamzat_wasl":[40,41,141,142,152,153]},
+"9": {"ikhfa":[28,32,59,63],"lam_shamsiyyah":[10,11,36,37],"madd_2":[78,79,84,85],"madd_246":[112,113],"qalqalah":[65,67],"hamzat_wasl":[9,10,35,36,95,96,105,106]},
+"10": {"ghunnah":[2,5],"ikhfa":[82,85],"idghaam_ghunnah":[66,71],"madd_2":[122,123],"madd_246":[136,137],"qalqalah":[42,44,71,73,99,101],"silent":[23,25],"hamzat_wasl":[6,7,47,48,114,115]},
+"11": {"ikhfa":[123,127],"idghaam_ghunnah":[118,123],"madd_246":[129,130],"madd_munfasil":[16,18],"silent":[6,8],"hamzat_wasl":[30,31,58,59,72,73]},
+"12": {"ghunnah":[13,16],"ikhfa_shafawi":[7,11],"idghaam_ghunnah":[67,71],"madd_2":[2,3,50,51,82,83],"madd_246":[134,135],"madd_munfasil":[18,20],"silent":[93,95],"hamzat_wasl":[34,35,98,99,116,117,127,128]},
+"13": {"idghaam_ghunnah":[76,81,106,110],"idghaam_shafawi":[51,56],"lam_shamsiyyah":[60,61],"madd_2":[28,29,33,34],"madd_246":[112,113],"madd_muttasil":[66,68],"qalqalah":[113,114],"hamzat_wasl":[5,6,59,60]},
+"14": {"lam_shamsiyyah":[37,38],"madd_2":[64,65],"madd_246":[69,70],"qalqalah":[3,5],"silent":[8,10],"hamzat_wasl":[2,3,11,12,36,37,59,60]},
+"15": {"ikhfa":[107,110],"idghaam_ghunnah":[76,80],"lam_shamsiyyah":[9,10,44,45,121,122],"madd_2":[17,18,65,66,101,102],"madd_246":[127,128],"madd_muttasil":[82,84],"qalqalah":[128,129],"hamzat_wasl":[8,9,25,26,43,44,120,121]},
+"16": {"ikhfa_shafawi":[9,13],"idghaam_no_ghunnah":[63,68],"madd_2":[13,14,106,107],"madd_246":[120,121],"hamzat_wasl":[41,42,73,74,83,84,101,102,112,113]},
+"17": {"ghunnah":[71,74],"iqlab":[30,34],"madd_246":[98,99],"qalqalah":[12,14,99,100],"hamzat_wasl":[59,60,75,76,91,92]},
+"18": {"ikhfa":[4,7],"idghaam_ghunnah":[110,114,124,128],"lam_shamsiyyah":[86,87],"madd_2":[71,72,90,91],"madd_246":[130,131],"hamzat_wasl":[21,22,39,40,56,57]},
+"19": {"lam_shamsiyyah":[47,48],"madd_246":[53,54],"madd_muttasil":[11,13],"hamzat_wasl":[20,21,46,47]},
+"20": {"ghunnah":[89,92],"ikhfa":[53,57],"lam_shamsiyyah":[107,108],"madd_2":[62,63],"madd_246":[124,125],"qalqalah":[12,14,43,45,70,72],"hamzat_wasl":[2,3,20,21,31,32,93,94,106,107,117,118]},
+"21": {"ikhfa":[38,41,91,95,152,157],"idghaam_ghunnah":[141,145,238,242],"idghaam_shafawi":[220,225],"madd_2":[62,63],"madd_246":[242,243],"qalqalah":[95,97,243,244],"silent":[17,19,44,46,86,88,110,112],"hamzat_wasl":[24,25,70,71,159,160,182,183,228,229]},
+"22": {"ghunnah":[12,15,101,104],"ikhfa":[114,118],"ikhfa_shafawi":[48,52],"madd_2":[2,3,62,63,106,107],"madd_246":[131,132],"qalqalah":[132,133],"silent":[75,77],"hamzat_wasl":[52,53,91,92,124,125]},
+"23": {"idghaam_ghunnah":[54,59],"madd_2":[37,38,52,53],"madd_246":[61,62],"qalqalah":[6,8]},
+"24": {"ikhfa":[57,61],"madd_2":[22,23,25,26,33,34,53,54],"madd_246":[64,65],"qalqalah":[65,66],"silent":[48,50]},
+"25": {"ghunnah":[4,7],"ikhfa":[37,40],"ikhfa_shafawi":[17,21],"madd_2":[103,104,151,152],"madd_246":[175,176],"madd_munfasil":[60,62],"madd_muttasil":[11,13,71,73,124,126],"qalqalah":[54,56,67,69],"silent":[50,52,62,64,94,96,117,119],"hamzat_wasl":[21,22,53,54,76,77,107,108,146,147]},
+"26": {"ghunnah":[69,72],"idghaam_ghunnah":[85,89,114,118],"madd_246":[146,147],"madd_munfasil":[26,28,64,66,72,74],"qalqalah":[31,33,52,54,147,148],"hamzat_wasl":[129,130,139,140]},
+"27": {"ghunnah":[19,22],"ikhfa":[54,58],"idghaam_no_ghunnah":[72,77],"idghaam_shafawi":[49,54],"madd_246":[104,105],"madd_munfasil":[13,16],"qalqalah":[105,106],"hamzat_wasl":[97,98]},
+"28": {"ghunnah":[267,270],"ikhfa":[185,190,308,312],"ikhfa_shafawi":[135,139,237,241],"idghaam_ghunnah":[13,18,23,28,94,98,172,176,213,217,226,231],"idghaam_no_ghunnah":[155,160],"madd_2":[62,63,149,150,181,182,207,208],"madd_246":[315,316],"madd_munfasil":[67,69],"madd_muttasil":[129,131],"qalqalah":[74,76,124,126,233,235,316,317],"hamzat_wasl":[112,113,139,140,246,247,271,272]},
+"29": {"ikhfa":[70,73,101,105],"iqlab":[82,85],"idghaam_ghunnah":[66,70],"lam_shamsiyyah":[199,200],"madd_2":[2,3,39,40],"madd_246":[205,206],"madd_munfasil":[132,134,154,156,168,170],"madd_muttasil":[105,107],"qalqalah":[206,207],"hamzat_wasl":[17,18,27,28,52,53,91,92,198,199]},
+"30": {"ghunnah":[37,40],"idghaam_shafawi":[59,64],"madd_2":[27,28],"madd_246":[85,86],"madd_munfasil":[14,16,40,42],"qalqalah":[86,87],"hamzat_wasl":[8,9,76,77]},
+"31": {"iqlab":[60,63],"idghaam_ghunnah":[25,29,33,37],"idghaam_no_ghunnah":[100,106],"madd_246":[112,113],"qalqalah":[113,114],"hamzat_wasl":[47,48,79,80]},
+"32": {"ghunnah":[14,17],"lam_shamsiyyah":[47,48],"madd_2":[4,5],"madd_246":[53,54],"madd_munfasil":[17,19],"qalqalah":[54,55],"hamzat_wasl":[46,47]},
+"33": {"idghaam_ghunnah":[65,69,71,75],"idghaam_shafawi":[38,43],"madd_2":[100,101],"madd_246":[109,110],"qalqalah":[20,22,110,111],"hamzat_wasl":[46,47,82,83]},
+"34": {"ghunnah":[83,86],"ikhfa":[30,34,177,182],"ikhfa_shafawi":[96,100],"iqlab":[159,162],"idghaam_ghunnah":[78,83,137,141,223,228],"madd_2":[51,52,102,103,169,170,184,185],"madd_246":[232,233],"madd_munfasil":[109,112],"madd_muttasil":[11,13,90,92],"qalqalah":[6,8,34,36,141,143,233,234],"hamzat_wasl":[41,42,148,149,198,199]},
+"35": {"ikhfa":[92,95,108,111,190,194],"madd_2":[14,15,33,34,60,61,69,70,137,138],"madd_246":[197,198],"madd_munfasil":[25,27],"qalqalah":[84,86,145,147],"silent":[130,132],"hamzat_wasl":[37,38,96,97,112,113,152,153]},
+"36": {"idghaam_no_ghunnah":[46,52],"madd_2":[21,22,24,25,27,28],"madd_246":[78,79],"madd_munfasil":[57,59],"qalqalah":[32,34,62,64,79,80],"hamzat_wasl":[31,32,69,70]},
+"37": {"ghunnah":[64,67,75,78],"idghaam_ghunnah":[88,93],"lam_shamsiyyah":[11,12,155,156],"madd_2":[6,7,17,18,20,21,48,49,80,81,84,85,97,98,139,140],"madd_246":[204,205],"madd_munfasil":[40,43],"madd_muttasil":[126,128],"qalqalah":[205,206],"hamzat_wasl":[10,11,154,155]},
+"38": {"lam_shamsiyyah":[67,68],"madd_2":[27,28],"madd_246":[73,74],"madd_munfasil":[14,16],"qalqalah":[74,75],"hamzat_wasl":[8,9,35,36,66,67]},
+"39": {"ghunnah":[12,15,62,65],"idghaam_ghunnah":[56,60],"lam_shamsiyyah":[40,41],"madd_2":[2,3,21,22,35,36,54,55],"madd_246":[97,98],"silent":[34,35],"hamzat_wasl":[27,28,39,40,66,67,90,91]},
+"40": {"ghunnah":[151,154],"ikhfa":[20,24,81,85,97,100,117,121],"idghaam_ghunnah":[75,81],"madd_2":[71,72],"madd_246":[189,190],"madd_munfasil":[34,37],"madd_muttasil":[127,129],"qalqalah":[30,32,136,138,190,191],"silent":[123,125],"hamzat_wasl":[146,147]},
+"41": {"ghunnah":[41,44,75,78],"lam_shamsiyyah":[40,41,74,75],"madd_2":[4,5,47,48],"madd_246":[78,79],"madd_munfasil":[18,20,64,66],"qalqalah":[23,25,55,57],"silent":[46,47],"hamzat_wasl":[39,40,73,74]},
+"42": {"idghaam_ghunnah":[77,81],"madd_2":[49,50,70,71],"madd_246":[125,126],"qalqalah":[2,4,90,92],"hamzat_wasl":[26,27,106,107,117,118]},
+"43": {"ghunnah":[13,16,107,110,141,144,177,180],"ikhfa":[63,67],"lam_shamsiyyah":[70,71,176,177],"madd_2":[54,55,171,172],"madd_246":[180,181],"madd_munfasil":[31,33,120,122],"qalqalah":[22,24],"hamzat_wasl":[69,70,90,91,129,130,145,146,175,176]},
+"44": {"ghunnah":[73,76],"iqlab":[91,95],"madd_246":[103,104],"madd_munfasil":[18,20,54,56],"qalqalah":[104,105],"hamzat_wasl":[63,64,77,78,96,97]},
+"45": {"madd_2":[7,8],"madd_246":[87,88],"madd_muttasil":[75,77],"qalqalah":[88,89],"silent":[42,44],"hamzat_wasl":[11,12,80,81]},
+"46": {"ghunnah":[2,5],"idghaam_ghunnah":[37,42,48,53],"lam_shamsiyyah":[1,2,69,70],"madd_246":[124,125],"madd_munfasil":[87,89],"qalqalah":[81,83,125,126],"silent":[89,91],"hamzat_wasl":[68,69,117,118]},
+"47": {"ghunnah":[28,31,90,93,97,100,144,147,166,169],"ikhfa":[114,119,126,129],"idghaam_ghunnah":[155,161],"idghaam_shafawi":[129,134],"lam_shamsiyyah":[27,28,46,47,165,166],"madd_246":[169,170],"madd_munfasil":[83,85],"madd_muttasil":[54,56],"madd_6":[13,15],"silent":[58,60,85,87],"hamzat_wasl":[26,27,45,46,72,73,164,165]},
+"48": {"ghunnah":[34,37,55,58],"ikhfa":[43,47],"madd_246":[93,94],"madd_munfasil":[27,29,50,52],"qalqalah":[69,71,94,95],"silent":[29,31],"hamzat_wasl":[6,7,16,17,59,60,86,87]},
+"49": {"ghunnah":[24,27,46,49,83,86],"idghaam_ghunnah":[93,99],"lam_shamsiyyah":[23,24],"madd_246":[109,110],"qalqalah":[53,55,110,111],"silent":[58,60],"hamzat_wasl":[8,9,22,23,52,53,102,103]},
+"50": {"ikhfa_shafawi":[44,48],"madd_2":[58,59,120,121],"madd_246":[144,145],"madd_munfasil":[5,7],"madd_muttasil":[108,110],"qalqalah":[90,92],"silent":[7,9,68,70,84,86,95,97,112,114],"hamzat_wasl":[48,49,89,90,115,116]},
+"51": {"ghunnah":[2,5],"ikhfa":[11,14],"lam_shamsiyyah":[67,68],"madd_2":[62,63],"madd_246":[103,104],"qalqalah":[104,105],"silent":[47,49,61,62],"hamzat_wasl":[29,30,54,55,66,67,94,95]},
+"52": {"ikhfa":[13,16],"lam_shamsiyyah":[20,21,58,59,86,87],"madd_2":[24,25],"madd_246":[90,91],"madd_muttasil":[80,82],"hamzat_wasl":[19,20,57,58,85,86]},
+"53": {"madd_246":[79,80],"madd_munfasil":[55,57],"madd_muttasil":[64,66],"qalqalah":[6,8,80,81],"hamzat_wasl":[27,28,72,73]},
+"54": {"idghaam_ghunnah":[3,8],"madd_246":[36,37],"qalqalah":[37,38],"silent":[21,23],"hamzat_wasl":[27,28]},
+"55": {"ghunnah":[12,15],"iqlab":[56,58],"idghaam_ghunnah":[35,39],"madd_246":[113,114],"qalqalah":[109,111],"hamzat_wasl":[2,3,23,24,39,40,91,92,104,105]},
+"56": {"ghunnah":[2,5,161,164],"ikhfa":[83,87],"ikhfa_shafawi":[122,126],"idghaam_ghunnah":[113,118],"lam_shamsiyyah":[174,175],"madd_2":[20,21,39,40,66,67,75,76,128,129,166,167],"madd_246":[191,192],"madd_munfasil":[31,33],"qalqalah":[110,112],"hamzat_wasl":[6,7,43,44,139,140,151,152,173,174,184,185]},
+"57": {"ghunnah":[58,61,72,75,87,90],"lam_shamsiyyah":[10,11,57,58,86,87],"madd_2":[16,17,19,20,69,70],"madd_246":[106,107],"hamzat_wasl":[9,10,25,26,56,57,85,86]},
+"58": {"idghaam_ghunnah":[114,120],"lam_shamsiyyah":[77,78],"madd_2":[81,82,86,87],"madd_246":[133,134],"madd_muttasil":[103,105],"silent":[61,63,73,75],"hamzat_wasl":[16,17,30,31,43,44,76,77,96,97]},
+"59": {"ghunnah":[2,5,55,58,70,73],"idghaam_no_ghunnah":[27,32],"lam_shamsiyyah":[7,8,69,70],"madd_2":[52,53],"madd_246":[89,90],"hamzat_wasl":[6,7,68,69]},
+"60": {"ghunnah":[49,52,113,116],"madd_246":[126,127],"madd_munfasil":[26,28],"qalqalah":[19,21,37,39,99,101],"hamzat_wasl":[18,19,53,54]},
+"61": {"ghunnah":[63,66,84,87,117,120,131,134,146,149],"lam_shamsiyyah":[62,63,116,117,145,146],"madd_2":[128,129],"madd_246":[165,166],"qalqalah":[74,76],"silent":[50,52],"hamzat_wasl":[8,9,30,31,61,62,88,89,115,116,144,145]},
+"62": {"ghunnah":[79,82],"idghaam_no_ghunnah":[47,52],"madd_2":[2,3,30,31,59,60],"madd_246":[93,94],"madd_munfasil":[52,54],"hamzat_wasl":[10,11]},
+"63": {"madd_2":[4,5,46,47],"madd_246":[66,67],"qalqalah":[60,62],"silent":[35,37],"hamzat_wasl":[19,20,50,51]},
+"64": {"idghaam_ghunnah":[46,51,70,74],"idghaam_shafawi":[118,123],"lam_shamsiyyah":[52,53,127,128],"madd_2":[136,137,142,143,199,200],"madd_246":[204,205],"madd_muttasil":[58,60,67,69],"hamzat_wasl":[8,9,30,31,51,52,126,127,150,151,180,181,194,195]},
+"65": {"lam_shamsiyyah":[68,69],"madd_2":[23,24,105,106],"madd_246":[110,111],"madd_munfasil":[16,18],"qalqalah":[42,44],"hamzat_wasl":[5,6,41,42,67,68,76,77,100,101]},
+"66": {"ghunnah":[7,10,74,77],"ikhfa":[56,60],"idghaam_no_ghunnah":[106,111],"madd_2":[100,101,154,155],"madd_246":[159,160],"madd_muttasil":[81,83],"qalqalah":[46,48],"hamzat_wasl":[34,35,64,65,90,91,149,150]},
+"67": {"ghunnah":[38,41,58,61,78,81,105,108,138,141,231,234],"ikhfa":[26,30,34,38,54,58,74,78,100,105,168,171,192,196],"idghaam_ghunnah":[44,49,161,166,176,180,223,229,233,238],"idghaam_shafawi":[21,26,171,176],"madd_246":[258,259],"madd_munfasil":[119,121,213,215],"qalqalah":[49,51,113,115,196,198,207,209],"silent":[121,123,152,154,215,217],"hamzat_wasl":[5,6]},
+"68": {"ghunnah":[59,62],"ikhfa":[52,57,82,86],"madd_2":[19,20,78,79],"madd_246":[90,91],"madd_munfasil":[43,46],"hamzat_wasl":[5,6]},
+"69": {"ghunnah":[65,68],"madd_2":[32,33,51,52],"madd_246":[79,80],"madd_munfasil":[43,45],"hamzat_wasl":[18,19,55,56]},
+"70": {"madd_2":[30,31,59,60],"madd_246":[88,89],"madd_munfasil":[40,42],"silent":[18,20],"hamzat_wasl":[23,24]},
+"71": {"lam_shamsiyyah":[40,41],"madd_2":[14,15,29,30,46,47],"madd_246":[60,61],"madd_munfasil":[20,22],"hamzat_wasl":[5,6,39,40]},
+"72": {"ghunnah":[17,20,27,30],"lam_shamsiyyah":[26,27],"madd_246":[42,43],"hamzat_wasl":[4,5,25,26]},
+"73": {"ghunnah":[2,5],"ikhfa":[32,35],"madd_246":[46,47]},
+"74": {"ghunnah":[38,41],"ikhfa":[2,6,72,76,87,92],"idghaam_ghunnah":[57,62],"madd_2":[94,95,121,122],"madd_246":[126,127],"qalqalah":[62,64,76,78],"silent":[24,26,33,35,67,69],"hamzat_wasl":[10,11,108,109,116,117]},
+"75": {"ikhfa":[17,20,77,80],"ikhfa_shafawi":[7,11],"madd_2":[2,3],"madd_246":[91,92],"hamzat_wasl":[39,40,58,59]},
+"76": {"ghunnah":[26,29],"madd_2":[18,19,34,35],"madd_246":[81,82],"madd_munfasil":[7,9],"qalqalah":[1,3,14,16],"silent":[9,11],"hamzat_wasl":[67,68]},
+"77": {"ghunnah":[12,15,41,44,52,55,100,103],"ikhfa":[35,39],"madd_246":[126,127],"hamzat_wasl":[2,3,23,24,65,66]},
+"78": {"ikhfa":[32,36,54,58],"idghaam_ghunnah":[26,32,138,142],"idghaam_no_ghunnah":[88,93],"idghaam_shafawi":[49,54,83,88],"madd_246":[262,263],"madd_muttasil":[194,196],"qalqalah":[6,8,36,38,98,100,256,258],"hamzat_wasl":[176,177,206,207,223,224,251,252]},
+"79": {"madd_2":[39,40],"madd_246":[83,84],"silent":[54,56],"hamzat_wasl":[8,9,30,31]},
+"80": {"ikhfa":[58,62],"madd_2":[20,21],"madd_246":[114,115],"qalqalah":[32,34],"silent":[39,41],"hamzat_wasl":[96,97]},
+"81": {"ikhfa":[51,54],"madd_2":[17,18,22,23,37,38],"madd_246":[56,57],"hamzat_wasl":[41,42]},
+"82": {"ikhfa":[38,41,82,86,150,155],"idghaam_ghunnah":[139,143],"idghaam_shafawi":[189,194],"madd_2":[62,63],"madd_246":[213,214],"madd_munfasil":[100,102,171,173],"qalqalah":[86,88],"silent":[17,19,44,46,102,104,202,204],"hamzat_wasl":[24,25,70,71,157,158]},
+"83": {"ghunnah":[4,7],"ikhfa":[66,69],"ikhfa_shafawi":[30,34],"idghaam_shafawi":[71,76,101,106],"madd_2":[44,45,121,122],"madd_246":[135,136],"madd_muttasil":[11,13],"silent":[55,57,114,116],"hamzat_wasl":[34,35,79,80]},
+"84": {"ghunnah":[4,7,43,46,88,91],"madd_2":[66,67,97,98],"madd_246":[107,108],"madd_munfasil":[33,35],"silent":[15,17,35,37],"hamzat_wasl":[50,51]},
+"85": {"ghunnah":[39,42,65,68],"ikhfa":[14,17],"madd_2":[29,30,112,113,138,139],"madd_246":[143,144],"qalqalah":[89,91],"silent":[50,52],"hamzat_wasl":[71,72,79,80,133,134]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/41.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/41.json
index fb5cd06..a2df298 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/41.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/41.json
@@ -1,56 +1,56 @@
{
-"1": {"madd-lazim":[40,42]},
-"2": {"ghunnah":[2,5],"idgham":[7,12,16,17,29,30],"madd":[24,25,35,36],"wasl":[15,16,28,29]},
-"3": {"ghunnah":[6,10],"idgham":[49,55,60,64],"madd":[4,5,23,24,28,29,70,71]},
-"4": {"ghunnah":[17,22],"idgham":[6,11],"madd":[63,64]},
-"5": {"ghunnah":[31,34,40,43,97,100,126,130,140,143],"idgham":[35,40,90,94],"madd":[24,26,54,56,70,72,149,150,154,155],"qalqalah":[47,49,87,89],"silent":[8,10],"wasl":[130,131]},
-"6": {"ghunnah":[7,10,60,63,94,98],"idgham":[27,32,86,90,146,151],"madd":[12,14,46,49,65,67,72,73,84,85,90,91,108,110,161,162],"silent":[110,112],"wasl":[98,99,124,125]},
-"7": {"ghunnah":[40,44],"idgham":[25,26],"madd":[32,33,64,65,69,70],"silent":[31,32],"wasl":[24,25,44,45]},
-"8": {"ghunnah":[2,5],"idgham":[40,41],"madd":[44,45,49,50,80,81],"qalqalah":[62,64],"silent":[24,26,36,38],"wasl":[6,7,39,40]},
-"9": {"ghunnah":[9,12,96,99,101,106],"madd":[91,93,106,107,123,124,128,129],"qalqalah":[77,79],"wasl":[33,34,48,49,118,119]},
-"10": {"ghunnah":[28,32,111,115],"idgham":[120,125,125,126],"madd":[20,21,44,45,72,74,81,82,90,92,117,119,129,131,135,136],"qalqalah":[77,79]},
-"11": {"ghunnah":[2,5,48,52,104,109],"idgham":[24,25],"madd":[13,16,30,32,114,116,129,131,135,136],"wasl":[6,7,23,24,77,78]},
-"12": {"ghunnah":[10,13,30,34,94,97,142,147],"idgham":[100,101,112,113],"madd":[7,8,25,26,72,74,106,108,128,129,147,148,181,182],"qalqalah":[16,18,155,157],"wasl":[99,100,111,112,163,164,174,175]},
-"13": {"ghunnah":[28,31],"idgham":[48,53,72,76],"madd":[42,43,60,61,80,81],"qalqalah":[81,82],"silent":[16,18]},
-"14": {"ghunnah":[31,34,139,142,156,160,162,165,184,188],"idgham":[19,20],"madd":[7,9,85,87,121,123,149,151,171,173,190,191,194,195,199,200],"silent":[87,89,111,113],"wasl":[18,19,97,98]},
-"15": {"ghunnah":[4,7,13,17,90,93,123,126],"idgham":[182,186],"madd":[203,204,218,219],"qalqalah":[212,214],"silent":[29,31,72,74,118,120,192,194],"wasl":[17,18,36,37,55,56,127,128,135,136]},
-"16": {"ghunnah":[29,34,39,44,174,177],"idgham":[54,59,65,70,117,118],"madd":[44,46,112,113,179,180],"silent":[111,112],"wasl":[90,91,104,105,116,117,139,140]},
-"17": {"ghunnah":[4,7],"madd":[27,28,92,93,143,144],"silent":[46,48,132,134],"wasl":[35,36,49,50,65,66,100,101,111,112]},
-"18": {"madd":[52,53],"silent":[31,33,42,44],"wasl":[13,14]},
-"19": {"ghunnah":[45,48],"idgham":[44,45],"madd":[24,26,66,67],"wasl":[29,30,43,44]},
-"20": {"ghunnah":[86,90],"madd":[5,8,21,23,67,68,111,112],"qalqalah":[63,65],"silent":[100,102]},
-"21": {"ghunnah":[63,66,91,94],"idgham":[34,35,108,112,142,146],"madd":[56,58,86,88,163,164],"silent":[8,10,58,60],"wasl":[72,73,80,81]},
-"22": {"ghunnah":[8,11,109,113,115,118,123,126,160,163],"idgham":[30,34,154,160],"madd":[67,69,76,77,106,107,173,174],"qalqalah":[72,74],"wasl":[127,128]},
-"23": {"ghunnah":[14,17,34,37,37,41],"idgham":[76,81],"madd":[4,5,58,59,89,90,94,95],"wasl":[22,23,84,85]},
-"24": {"ghunnah":[22,25],"idgham":[4,8,21,22,34,40,49,53,75,80],"madd":[94,95],"silent":[15,17,64,66],"wasl":[20,21,83,84]},
-"25": {"ghunnah":[130,134,146,150,169,172,180,183,186,189],"idgham":[48,53,156,161],"madd":[26,28,122,124,205,206,210,211],"qalqalah":[134,136,150,152],"silent":[41,43,200,202],"wasl":[110,111,164,165,175,176]},
-"26": {"madd":[48,49,104,105],"silent":[25,27,41,43,75,77],"wasl":[8,9,53,54,68,69]},
-"27": {"ghunnah":[11,14,41,46,65,68],"idgham":[50,55],"madd":[107,108],"qalqalah":[59,61],"silent":[32,34,96,98],"wasl":[15,16,82,83]},
-"28": {"ghunnah":[38,41,82,86],"idgham":[37,38],"madd":[2,3,12,14,23,25,79,81,108,109,123,124],"qalqalah":[117,119],"silent":[97,99],"wasl":[28,29,36,37,65,66]},
-"29": {"ghunnah":[79,82,90,93],"madd":[35,37,155,156],"qalqalah":[96,98,117,119],"silent":[25,27],"wasl":[8,9,46,47,74,75,85,86,144,145]},
-"30": {"ghunnah":[2,5,44,47,158,161,174,177],"madd":[55,56,92,94,187,188],"qalqalah":[141,143],"silent":[22,24,59,61,116,118,134,136,148,150],"wasl":[6,7,34,35,48,49,85,86,153,154,164,165]},
-"31": {"ghunnah":[103,106],"idgham":[41,42],"madd":[15,17,36,37,98,100,140,141],"silent":[35,36],"wasl":[28,29,40,41,57,58]},
-"32": {"idgham":[5,11,20,25],"madd":[27,28]},
-"33": {"ghunnah":[27,30,30,34,81,84],"idgham":[21,27,68,73],"madd":[36,38,64,65,104,105],"wasl":[45,46,93,94]},
-"34": {"ghunnah":[124,128,130,133],"idgham":[35,36],"madd":[114,115,120,121,135,136,149,150],"qalqalah":[48,50],"wasl":[16,17,34,35,47,48,57,58,87,88]},
-"35": {"madd":[14,15,17,19,61,62,64,66,88,89],"silent":[44,46],"wasl":[27,28]},
-"36": {"ghunnah":[4,7,11,14,16,19,45,49,71,74],"idgham":[28,29,84,85],"madd":[36,37,76,77,101,102],"wasl":[27,28,49,50,61,62,83,84,94,95]},
-"37": {"ghunnah":[31,34,145,148,151,155,155,158],"idgham":[30,31,43,44,82,83],"madd":[12,13,178,179],"silent":[77,79,118,120],"wasl":[18,19,29,30,42,43,54,55,110,111,129,130]},
-"38": {"ghunnah":[36,39,82,85],"idgham":[81,82],"madd":[65,66,111,112],"silent":[19,21],"wasl":[7,8,24,25,69,70,80,81]},
-"39": {"ghunnah":[22,25,52,56,65,68,116,119,164,167,189,193],"madd":[12,13,17,19,46,47,60,62,89,91,126,128,158,161,169,170,195,196],"wasl":[34,35,84,85,94,95,120,121,149,150]},
-"40": {"ghunnah":[2,5,94,97,181,184],"idgham":[77,81,93,94,110,115,115,119,132,137],"madd":[30,32,38,39,68,70,123,125,149,150,186,187,210,211],"silent":[163,165],"wasl":[6,7,92,93,142,143,155,156]},
-"41": {"ghunnah":[2,5,40,43,60,63],"idgham":[29,30],"madd":[47,49,65,66,73,74,81,82],"silent":[23,25],"wasl":[6,7,28,29]},
-"42": {"ghunnah":[29,32,70,73],"idgham":[75,80],"madd":[20,21,66,67,95,96],"qalqalah":[96,97],"wasl":[15,16]},
-"43": {"ghunnah":[53,57,66,69],"idgham":[42,43,93,97],"madd":[113,114],"qalqalah":[31,33,57,59]},
-"44": {"ghunnah":[110,114,274,278],"idgham":[40,46,98,102,147,152,159,163,212,216,265,270],"madd":[15,16,78,79,83,85,156,158,191,193,244,246,281,282],"qalqalah":[209,211,282,283],"silent":[52,54,141,143,240,242],"wasl":[163,164]},
-"45": {"ghunnah":[73,77,121,124],"idgham":[86,91,139,144],"madd":[34,35,153,154],"qalqalah":[6,8,154,155],"wasl":[27,28,40,41]},
-"46": {"ghunnah":[19,24],"idgham":[87,92],"madd":[15,16,34,35,47,49,85,86,98,99],"qalqalah":[99,100]},
-"47": {"ghunnah":[52,56,105,108,199,202,212,215,219,223],"idgham":[25,26,62,67],"madd":[60,61,141,142,178,180,189,191,202,203,225,226],"qalqalah":[226,227],"silent":[191,193],"wasl":[24,25]},
-"48": {"ghunnah":[42,46,55,58],"idgham":[14,19,70,75,75,80],"madd":[82,83],"qalqalah":[32,34,46,48],"silent":[27,29,59,61]},
-"49": {"ghunnah":[20,23,29,33,83,87],"idgham":[54,59,66,67],"madd":[23,24,35,37,89,90],"qalqalah":[90,91],"wasl":[15,16,40,41,65,66]},
-"50": {"ghunnah":[33,36,41,44,79,82,105,108,166,169,176,179,209,212,260,263],"idgham":[28,33,110,111,129,133,137,142,265,270],"madd":[17,18,55,57,85,86,98,100,122,124,161,163,181,182,285,286],"qalqalah":[13,15],"silent":[230,232,246,248],"wasl":[109,110,213,214]},
-"51": {"ghunnah":[32,35],"idgham":[87,88],"madd":[6,8,35,36,68,69,105,107,114,115],"wasl":[27,28,86,87]},
-"52": {"ghunnah":[20,24,35,38,49,52,61,65,84,87,105,109],"madd":[67,68,112,113],"qalqalah":[113,114],"wasl":[39,40]},
-"53": {"ghunnah":[49,52,88,91,131,134,156,160],"madd":[17,18,44,46,136,137,162,163],"qalqalah":[163,164],"wasl":[28,29,94,95]},
-"54": {"ghunnah":[9,12,64,67],"idgham":[28,33,33,38,84,89],"madd":[4,6,40,42,59,61,69,70,91,92],"qalqalah":[92,93]}
+"1": {"madd_6":[40,42]},
+"2": {"ikhfa":[2,5],"idghaam_ghunnah":[7,12],"lam_shamsiyyah":[16,17,29,30],"madd_2":[24,25],"madd_246":[35,36],"hamzat_wasl":[15,16,28,29]},
+"3": {"ikhfa":[6,10],"idghaam_ghunnah":[60,64],"idghaam_no_ghunnah":[49,55],"madd_2":[4,5,23,24,28,29],"madd_246":[70,71]},
+"4": {"ikhfa":[17,22],"idghaam_ghunnah":[6,11],"madd_246":[63,64]},
+"5": {"ghunnah":[31,34,40,43,140,143],"ikhfa":[126,130],"iqlab":[97,100],"idghaam_ghunnah":[35,40,90,94],"madd_2":[149,150],"madd_246":[154,155],"madd_munfasil":[24,26,54,56,70,72],"qalqalah":[47,49,87,89],"silent":[8,10],"hamzat_wasl":[130,131]},
+"6": {"ghunnah":[7,10,60,63],"ikhfa":[94,98],"idghaam_ghunnah":[27,32,86,90],"idghaam_no_ghunnah":[146,151],"madd_2":[72,73,84,85,90,91],"madd_246":[161,162],"madd_munfasil":[12,14,46,49,65,67,108,110],"silent":[110,112],"hamzat_wasl":[98,99,124,125]},
+"7": {"ikhfa_shafawi":[40,44],"lam_shamsiyyah":[25,26],"madd_2":[32,33,64,65],"madd_246":[69,70],"silent":[31,32],"hamzat_wasl":[24,25,44,45]},
+"8": {"ghunnah":[2,5],"lam_shamsiyyah":[40,41],"madd_2":[44,45,49,50],"madd_246":[80,81],"qalqalah":[62,64],"silent":[24,26,36,38],"hamzat_wasl":[6,7,39,40]},
+"9": {"ghunnah":[9,12],"ikhfa":[96,99,101,106],"madd_2":[106,107,123,124],"madd_246":[128,129],"madd_munfasil":[91,93],"qalqalah":[77,79],"hamzat_wasl":[33,34,48,49,118,119]},
+"10": {"ikhfa":[28,32,111,115],"idghaam_no_ghunnah":[120,125],"lam_shamsiyyah":[125,126],"madd_2":[20,21,44,45,81,82],"madd_246":[135,136],"madd_munfasil":[72,74,90,92],"madd_muttasil":[117,119,129,131],"qalqalah":[77,79]},
+"11": {"ghunnah":[2,5],"ikhfa":[48,52,104,109],"lam_shamsiyyah":[24,25],"madd_246":[135,136],"madd_munfasil":[13,16,114,116],"madd_muttasil":[30,32,129,131],"hamzat_wasl":[6,7,23,24,77,78]},
+"12": {"ghunnah":[10,13,94,97],"ikhfa":[30,34,142,147],"lam_shamsiyyah":[100,101,112,113],"madd_2":[7,8,25,26,128,129,147,148],"madd_246":[181,182],"madd_muttasil":[72,74,106,108],"qalqalah":[16,18,155,157],"hamzat_wasl":[99,100,111,112,163,164,174,175]},
+"13": {"ikhfa":[28,31],"idghaam_ghunnah":[48,53,72,76],"madd_2":[42,43,60,61],"madd_246":[80,81],"qalqalah":[81,82],"silent":[16,18]},
+"14": {"ghunnah":[162,165],"ikhfa":[139,142,156,160],"ikhfa_shafawi":[184,188],"iqlab":[31,34],"lam_shamsiyyah":[19,20],"madd_2":[190,191,194,195],"madd_246":[199,200],"madd_munfasil":[85,87,171,173],"madd_muttasil":[7,9,121,123,149,151],"silent":[87,89,111,113],"hamzat_wasl":[18,19,97,98]},
+"15": {"ghunnah":[4,7,90,93,123,126],"ikhfa":[13,17],"idghaam_ghunnah":[182,186],"madd_2":[203,204],"madd_246":[218,219],"qalqalah":[212,214],"silent":[29,31,72,74,118,120,192,194],"hamzat_wasl":[17,18,36,37,55,56,127,128,135,136]},
+"16": {"ikhfa":[29,34,39,44,174,177],"idghaam_ghunnah":[54,59],"idghaam_no_ghunnah":[65,70],"lam_shamsiyyah":[117,118],"madd_2":[112,113],"madd_246":[179,180],"madd_munfasil":[44,46],"silent":[111,112],"hamzat_wasl":[90,91,104,105,116,117,139,140]},
+"17": {"ghunnah":[4,7],"madd_2":[27,28,92,93],"madd_246":[143,144],"silent":[46,48,132,134],"hamzat_wasl":[35,36,49,50,65,66,100,101,111,112]},
+"18": {"madd_246":[52,53],"silent":[31,33,42,44],"hamzat_wasl":[13,14]},
+"19": {"ghunnah":[45,48],"lam_shamsiyyah":[44,45],"madd_246":[66,67],"madd_muttasil":[24,26],"hamzat_wasl":[29,30,43,44]},
+"20": {"ikhfa_shafawi":[86,90],"madd_2":[67,68],"madd_246":[111,112],"madd_munfasil":[5,8],"madd_muttasil":[21,23],"qalqalah":[63,65],"silent":[100,102]},
+"21": {"ikhfa":[63,66,91,94],"idghaam_ghunnah":[108,112,142,146],"idghaam_mutajanisayn":[34,35],"madd_246":[163,164],"madd_munfasil":[56,58,86,88],"silent":[8,10,58,60],"hamzat_wasl":[72,73,80,81]},
+"22": {"ghunnah":[123,126,160,163],"ikhfa":[8,11,109,113,115,118],"idghaam_ghunnah":[30,34,154,160],"madd_2":[76,77,106,107],"madd_246":[173,174],"madd_munfasil":[67,69],"qalqalah":[72,74],"hamzat_wasl":[127,128]},
+"23": {"ghunnah":[14,17],"ikhfa":[34,37],"ikhfa_shafawi":[37,41],"idghaam_shafawi":[76,81],"madd_2":[4,5,58,59,89,90],"madd_246":[94,95],"hamzat_wasl":[22,23,84,85]},
+"24": {"ghunnah":[22,25],"idghaam_ghunnah":[4,8,49,53],"idghaam_no_ghunnah":[34,40],"idghaam_shafawi":[75,80],"lam_shamsiyyah":[21,22],"madd_246":[94,95],"silent":[15,17,64,66],"hamzat_wasl":[20,21,83,84]},
+"25": {"ghunnah":[169,172,186,189],"ikhfa":[130,134,146,150,180,183],"idghaam_shafawi":[48,53,156,161],"madd_2":[205,206],"madd_246":[210,211],"madd_munfasil":[122,124],"madd_muttasil":[26,28],"qalqalah":[134,136,150,152],"silent":[41,43,200,202],"hamzat_wasl":[110,111,164,165,175,176]},
+"26": {"madd_2":[48,49],"madd_246":[104,105],"silent":[25,27,41,43,75,77],"hamzat_wasl":[8,9,53,54,68,69]},
+"27": {"ghunnah":[11,14,65,68],"ikhfa":[41,46],"idghaam_ghunnah":[50,55],"madd_246":[107,108],"qalqalah":[59,61],"silent":[32,34,96,98],"hamzat_wasl":[15,16,82,83]},
+"28": {"ghunnah":[38,41],"iqlab":[82,86],"lam_shamsiyyah":[37,38],"madd_2":[2,3,108,109],"madd_246":[123,124],"madd_muttasil":[12,14,23,25,79,81],"qalqalah":[117,119],"silent":[97,99],"hamzat_wasl":[28,29,36,37,65,66]},
+"29": {"ghunnah":[79,82],"ikhfa":[90,93],"madd_246":[155,156],"madd_munfasil":[35,37],"qalqalah":[96,98,117,119],"silent":[25,27],"hamzat_wasl":[8,9,46,47,74,75,85,86,144,145]},
+"30": {"ghunnah":[2,5,44,47,158,161],"ikhfa":[174,177],"madd_2":[55,56],"madd_246":[187,188],"madd_muttasil":[92,94],"qalqalah":[141,143],"silent":[22,24,59,61,116,118,134,136,148,150],"hamzat_wasl":[6,7,34,35,48,49,85,86,153,154,164,165]},
+"31": {"ikhfa":[103,106],"lam_shamsiyyah":[41,42],"madd_2":[36,37],"madd_246":[140,141],"madd_munfasil":[98,100],"madd_muttasil":[15,17],"silent":[35,36],"hamzat_wasl":[28,29,40,41,57,58]},
+"32": {"idghaam_ghunnah":[5,11],"idghaam_no_ghunnah":[20,25],"madd_246":[27,28]},
+"33": {"ghunnah":[27,30,81,84],"ikhfa":[30,34],"idghaam_ghunnah":[21,27,68,73],"madd_2":[64,65],"madd_246":[104,105],"madd_munfasil":[36,38],"hamzat_wasl":[45,46,93,94]},
+"34": {"ghunnah":[130,133],"ikhfa":[124,128],"lam_shamsiyyah":[35,36],"madd_2":[114,115,120,121,135,136],"madd_246":[149,150],"qalqalah":[48,50],"hamzat_wasl":[16,17,34,35,47,48,57,58,87,88]},
+"35": {"madd_2":[14,15,61,62],"madd_246":[88,89],"madd_munfasil":[17,19,64,66],"silent":[44,46],"hamzat_wasl":[27,28]},
+"36": {"ghunnah":[4,7,16,19,71,74],"ikhfa":[11,14,45,49],"lam_shamsiyyah":[28,29,84,85],"madd_2":[36,37,76,77],"madd_246":[101,102],"hamzat_wasl":[27,28,49,50,61,62,83,84,94,95]},
+"37": {"ghunnah":[31,34,145,148],"ikhfa":[151,155,155,158],"lam_shamsiyyah":[30,31,43,44,82,83],"madd_2":[12,13],"madd_246":[178,179],"silent":[77,79,118,120],"hamzat_wasl":[18,19,29,30,42,43,54,55,110,111,129,130]},
+"38": {"ghunnah":[82,85],"ikhfa":[36,39],"lam_shamsiyyah":[81,82],"madd_2":[65,66],"madd_246":[111,112],"silent":[19,21],"hamzat_wasl":[7,8,24,25,69,70,80,81]},
+"39": {"ghunnah":[22,25,116,119,164,167],"ikhfa":[52,56,65,68,189,193],"madd_2":[12,13,46,47,169,170],"madd_246":[195,196],"madd_munfasil":[17,19,60,62,126,128,158,161],"madd_muttasil":[89,91],"hamzat_wasl":[34,35,84,85,94,95,120,121,149,150]},
+"40": {"ghunnah":[2,5,94,97,181,184],"idghaam_ghunnah":[77,81,115,119,132,137],"idghaam_shafawi":[110,115],"lam_shamsiyyah":[93,94],"madd_2":[38,39,149,150,186,187],"madd_246":[210,211],"madd_munfasil":[30,32,68,70,123,125],"silent":[163,165],"hamzat_wasl":[6,7,92,93,142,143,155,156]},
+"41": {"ghunnah":[2,5,40,43,60,63],"lam_shamsiyyah":[29,30],"madd_2":[65,66,73,74],"madd_246":[81,82],"madd_muttasil":[47,49],"silent":[23,25],"hamzat_wasl":[6,7,28,29]},
+"42": {"ikhfa":[70,73],"iqlab":[29,32],"idghaam_ghunnah":[75,80],"madd_2":[20,21,66,67],"madd_246":[95,96],"qalqalah":[96,97],"hamzat_wasl":[15,16]},
+"43": {"ghunnah":[66,69],"ikhfa":[53,57],"idghaam_ghunnah":[93,97],"lam_shamsiyyah":[42,43],"madd_246":[113,114],"qalqalah":[31,33,57,59]},
+"44": {"ikhfa":[110,114],"iqlab":[274,278],"idghaam_ghunnah":[98,102,147,152,159,163,212,216,265,270],"idghaam_no_ghunnah":[40,46],"madd_2":[15,16,78,79],"madd_246":[281,282],"madd_munfasil":[83,85,191,193],"madd_muttasil":[156,158,244,246],"qalqalah":[209,211,282,283],"silent":[52,54,141,143,240,242],"hamzat_wasl":[163,164]},
+"45": {"ghunnah":[121,124],"ikhfa":[73,77],"idghaam_ghunnah":[139,144],"idghaam_no_ghunnah":[86,91],"madd_2":[34,35],"madd_246":[153,154],"qalqalah":[6,8,154,155],"hamzat_wasl":[27,28,40,41]},
+"46": {"ikhfa":[19,24],"idghaam_no_ghunnah":[87,92],"madd_2":[15,16,34,35,85,86],"madd_246":[98,99],"madd_muttasil":[47,49],"qalqalah":[99,100]},
+"47": {"ghunnah":[199,202,212,215],"ikhfa":[52,56,105,108,219,223],"idghaam_ghunnah":[62,67],"lam_shamsiyyah":[25,26],"madd_2":[60,61,141,142,202,203],"madd_246":[225,226],"madd_munfasil":[189,191],"madd_muttasil":[178,180],"qalqalah":[226,227],"silent":[191,193],"hamzat_wasl":[24,25]},
+"48": {"ghunnah":[55,58],"ikhfa":[42,46],"idghaam_ghunnah":[75,80],"idghaam_shafawi":[14,19,70,75],"madd_246":[82,83],"qalqalah":[32,34,46,48],"silent":[27,29,59,61]},
+"49": {"ikhfa":[20,23,29,33,83,87],"idghaam_ghunnah":[54,59],"lam_shamsiyyah":[66,67],"madd_2":[23,24],"madd_246":[89,90],"madd_muttasil":[35,37],"qalqalah":[90,91],"hamzat_wasl":[15,16,40,41,65,66]},
+"50": {"ghunnah":[33,36,79,82,105,108,166,169,209,212,260,263],"ikhfa":[176,179],"iqlab":[41,44],"idghaam_ghunnah":[28,33,129,133],"idghaam_no_ghunnah":[137,142],"idghaam_shafawi":[265,270],"lam_shamsiyyah":[110,111],"madd_2":[17,18,85,86,181,182],"madd_246":[285,286],"madd_munfasil":[98,100,161,163],"madd_muttasil":[55,57,122,124],"qalqalah":[13,15],"silent":[230,232,246,248],"hamzat_wasl":[109,110,213,214]},
+"51": {"ikhfa":[32,35],"lam_shamsiyyah":[87,88],"madd_2":[35,36,68,69],"madd_246":[114,115],"madd_munfasil":[6,8],"madd_muttasil":[105,107],"hamzat_wasl":[27,28,86,87]},
+"52": {"ghunnah":[49,52,84,87],"ikhfa":[20,24,35,38],"ikhfa_shafawi":[61,65],"iqlab":[105,109],"madd_2":[67,68],"madd_246":[112,113],"qalqalah":[113,114],"hamzat_wasl":[39,40]},
+"53": {"ghunnah":[88,91,131,134],"ikhfa":[49,52,156,160],"madd_2":[17,18,136,137],"madd_246":[162,163],"madd_munfasil":[44,46],"qalqalah":[163,164],"hamzat_wasl":[28,29,94,95]},
+"54": {"ghunnah":[9,12,64,67],"idghaam_ghunnah":[28,33,84,89],"idghaam_no_ghunnah":[33,38],"madd_2":[69,70],"madd_246":[91,92],"madd_munfasil":[4,6,59,61],"madd_muttasil":[40,42],"qalqalah":[92,93]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/42.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/42.json
index 864372e..7848e6b 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/42.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/42.json
@@ -1,55 +1,55 @@
{
-"1": {"madd-lazim":[40,42]},
-"2": {"madd-lazim":[0,2,2,4,4,6]},
-"3": {"ghunnah":[47,51],"madd":[4,5,15,17,84,85],"qalqalah":[51,53],"wasl":[35,36,58,59,66,67,77,78]},
-"4": {"idgham":[15,16],"madd":[4,5,21,22,24,25,73,74],"wasl":[14,15,38,39,55,56,66,67]},
-"5": {"ghunnah":[38,42,48,51,124,128,149,152],"idgham":[9,10,178,179],"madd":[15,16,18,19,61,63,144,146,184,185],"wasl":[8,9,54,55,130,131,153,154,166,167,177,178]},
-"6": {"ghunnah":[26,30,87,90,99,103],"madd":[35,37,46,48,82,84,107,108],"silent":[21,23],"wasl":[2,3,12,13,51,52]},
-"7": {"ghunnah":[61,64,69,72,104,107,150,154,161,164,175,179],"idgham":[53,59,182,183],"madd":[6,7,22,24,188,189],"wasl":[73,74,117,118,156,157,181,182]},
-"8": {"ghunnah":[37,40],"idgham":[41,45,51,55,60,64,73,77,103,104,124,129,129,133,137,141],"madd":[9,11,45,46,57,58,79,81,98,99,107,108,149,150],"qalqalah":[64,66],"wasl":[14,15,102,103]},
-"9": {"ghunnah":[19,23,121,125],"madd":[28,30,39,41,127,128],"silent":[14,16],"wasl":[5,6,46,47,59,60,84,85]},
-"10": {"ghunnah":[28,32,35,39],"madd":[47,49,66,67,125,126],"qalqalah":[126,127],"wasl":[6,7,56,57,74,75]},
-"11": {"ghunnah":[55,58],"idgham":[9,10,45,50,73,78,104,109,150,154,160,161],"madd":[15,16,18,19,71,72,92,93,102,103,143,144,177,178],"wasl":[8,9,24,25,83,84,159,160,170,171]},
-"12": {"ghunnah":[90,93],"idgham":[18,19,53,54,66,70],"madd":[4,5,24,25,27,28,72,74,95,96,116,117],"qalqalah":[45,47,81,83],"wasl":[17,18,33,34,52,53]},
-"13": {"idgham":[11,16,20,21,50,55,161,162,279,283,312,316],"madd":[44,45,61,63,74,76,107,109,116,117,140,143,265,267,285,287,298,300,318,319],"qalqalah":[112,114,230,232,259,261,319,320],"silent":[157,159,187,189],"wasl":[19,20,55,56,160,161,209,210,249,250]},
-"14": {"ghunnah":[30,33,69,74,101,105,145,148,175,178,214,217],"idgham":[114,119,138,143,147,153,237,242],"madd":[15,17,45,47,129,132,207,208,251,252],"qalqalah":[252,253],"silent":[17,19,197,199],"wasl":[54,55,179,180,200,201]},
-"15": {"ghunnah":[91,94,104,107,120,124],"idgham":[128,132],"madd":[6,7,36,38,70,72,99,101,126,127,196,198,205,206,227,228,315,316],"qalqalah":[15,17,280,282],"wasl":[14,15,22,23,110,111,163,164,270,271,308,309]},
-"16": {"ghunnah":[40,43,94,97,143,147],"idgham":[126,130],"madd":[68,69,149,150],"madd-lazim":[16,18],"qalqalah":[150,151],"wasl":[2,3,29,30,53,54]},
-"17": {"ghunnah":[19,22],"idgham":[86,87],"madd":[14,16,32,33,100,101],"qalqalah":[69,71,101,102],"wasl":[8,9,25,26,38,39,49,50,85,86]},
-"18": {"ghunnah":[110,113,135,138,187,191],"idgham":[165,166],"madd":[130,132,185,186,194,195],"qalqalah":[195,196],"silent":[71,73],"wasl":[19,20,53,54,117,118,139,140,164,165]},
-"19": {"ghunnah":[14,18],"idgham":[41,45],"madd":[28,29,47,49,77,78],"wasl":[59,60,70,71]},
-"20": {"ghunnah":[2,6,69,73],"idgham":[93,94,152,157],"madd":[49,50,63,64,111,112,131,132,159,160],"qalqalah":[42,44,160,161],"wasl":[25,26,92,93,137,138]},
-"21": {"ghunnah":[72,75,140,143],"idgham":[39,44,48,49,145,146],"madd":[18,20,149,150,177,178],"silent":[22,24,32,34],"wasl":[47,48,79,80,106,107,144,145]},
-"22": {"ghunnah":[34,37,62,66,140,143,172,175],"idgham":[7,8,108,109,151,156],"madd":[11,12,112,113,117,118,162,164,188,189,216,217],"silent":[46,48,92,94,104,106],"wasl":[6,7,74,75,107,108,135,136,199,200,209,210]},
-"23": {"ghunnah":[225,228,243,247],"idgham":[78,79,172,176,192,197],"madd":[2,3,82,83,87,88,98,100,206,207,249,250],"qalqalah":[126,128,176,178,199,201],"silent":[62,64,74,76],"wasl":[8,9,26,27,44,45,77,78,139,140,156,157,229,230]},
-"24": {"ghunnah":[45,50,159,162,172,176],"idgham":[52,56,184,185],"madd":[116,117,149,150,154,156,164,165,190,191],"wasl":[16,17,32,33,61,62,103,104,111,112,132,133,183,184]},
-"25": {"idgham":[25,26,70,71],"madd":[50,51,107,108],"qalqalah":[17,19],"silent":[61,63],"wasl":[7,8,24,25,69,70]},
-"26": {"ghunnah":[77,81,118,122],"idgham":[48,49,72,77],"madd":[52,53,57,58,87,88,96,97,124,125],"qalqalah":[125,126],"silent":[32,34,44,46],"wasl":[14,15,47,48,91,92]},
-"27": {"ghunnah":[114,117,140,144],"idgham":[23,24,77,81,96,101],"madd":[43,44,74,75,107,109,119,120,132,133,147,148],"silent":[53,55],"wasl":[14,15,22,23,60,61]},
-"28": {"ghunnah":[38,41,65,68],"madd":[81,82,108,109],"qalqalah":[109,110],"silent":[58,60],"wasl":[7,8,25,26,90,91,101,102]},
-"29": {"ghunnah":[75,79],"idgham":[27,28,85,89],"madd":[12,13,17,18,33,34,36,37,122,124,131,132],"madd-lazim":[79,81],"wasl":[26,27,42,43]},
-"30": {"ghunnah":[32,36,77,81],"idgham":[16,21,21,26],"madd":[4,6,11,12,83,84],"silent":[72,74]},
-"31": {"ghunnah":[9,12,12,16,57,61],"idgham":[52,57,75,79,83,87],"madd":[4,6,95,96],"wasl":[32,33,65,66]},
-"32": {"madd":[12,13,54,55],"wasl":[18,19,33,34,45,46]},
-"33": {"ghunnah":[72,75,115,119],"idgham":[2,6,21,22,97,102],"madd":[67,69,82,83,95,96,121,122],"wasl":[20,21]},
-"34": {"ghunnah":[14,17,45,49],"madd":[51,52],"qalqalah":[10,12],"silent":[31,33]},
-"35": {"idgham":[59,64,64,69],"madd":[25,26,36,38,44,45,71,72],"wasl":[11,12]},
-"36": {"ghunnah":[20,24,27,31,70,73],"idgham":[15,20,52,53,87,91],"madd":[4,6,35,36,47,48,152,153],"qalqalah":[93,95],"silent":[46,47,119,121],"wasl":[39,40,51,52,74,75]},
-"37": {"madd":[30,32,56,57,97,98],"qalqalah":[14,16],"silent":[81,83],"wasl":[2,3,37,38,49,50]},
-"38": {"ghunnah":[99,102,120,123],"idgham":[52,53],"madd":[59,60,112,113,125,126],"qalqalah":[108,110],"silent":[23,25,48,50,58,59],"wasl":[2,3,12,13,51,52]},
-"39": {"ghunnah":[48,51],"madd":[16,18,55,56],"wasl":[2,3,31,32]},
-"40": {"ghunnah":[21,25,96,99],"idgham":[31,36,116,117],"madd":[6,8,78,79,101,102,120,121,125,126],"qalqalah":[72,74],"silent":[10,12],"wasl":[86,87,115,116]},
-"41": {"ghunnah":[10,13,67,71],"idgham":[62,67],"madd":[33,34,43,45,73,74],"silent":[39,41],"wasl":[9,10]},
-"42": {"ghunnah":[2,5,50,53],"idgham":[10,11,49,50],"madd":[107,109,133,134],"qalqalah":[61,63],"silent":[103,105],"wasl":[9,10,26,27,48,49,73,74,92,93]},
-"43": {"ghunnah":[6,10,26,29],"madd":[32,33,59,60],"wasl":[52,53]},
-"44": {"ghunnah":[51,54,87,90,146,150],"idgham":[4,8,37,41,45,50,72,73,141,146],"madd":[33,34,61,62,76,77,152,153],"silent":[98,100],"wasl":[15,16,71,72,101,102]},
-"45": {"ghunnah":[62,65,73,77,122,125,163,166,216,219],"idgham":[52,53,88,92,221,222,244,249],"madd":[7,8,37,38,115,117,131,132,156,158,201,202,211,213,225,226,251,252],"silent":[117,119,158,160],"wasl":[51,52,98,99,126,127,140,141,194,195,220,221]},
-"46": {"ghunnah":[39,42,54,58,107,111],"idgham":[16,21,49,54,74,78],"madd":[32,34,103,104,113,114],"wasl":[62,63,85,86]},
-"47": {"ghunnah":[28,32],"idgham":[23,28,39,43,55,60,97,102,102,107,112,116,123,127,135,140,140,145],"madd":[74,75,147,148],"qalqalah":[32,34],"silent":[11,13],"wasl":[81,82]},
-"48": {"ghunnah":[96,99,124,127,133,136,145,149,164,168,185,189,220,223,229,232],"madd":[23,25,36,37,88,89,99,101,106,108,127,128,232,233,240,241],"qalqalah":[113,115,170,172],"silent":[16,18],"wasl":[81,82,119,120,224,225]},
-"49": {"idgham":[17,18,75,79,92,97,108,112,120,121],"madd":[23,24,26,27,59,61,81,83,90,91,114,116,126,127],"wasl":[16,17,32,33,119,120]},
-"50": {"ghunnah":[76,79,89,93],"idgham":[27,32,38,43,54,58],"madd":[36,37,60,62,81,82,95,96],"qalqalah":[45,47]},
-"51": {"ghunnah":[106,111,146,149],"idgham":[23,27,67,71],"madd":[73,75,129,130,139,141,151,152,165,166],"wasl":[37,38]},
-"52": {"ghunnah":[63,66,115,119,185,188],"idgham":[38,44,133,139,153,158,215,220],"madd":[6,7,22,24,86,87,104,105,112,113,125,126,149,150,160,162,199,201,213,214,226,227],"qalqalah":[69,71],"wasl":[79,80,96,97]},
-"53": {"idgham":[39,40],"madd":[4,5,28,29,45,46,48,49,76,78,108,109],"wasl":[8,9,16,17,38,39,62,63,85,86,101,102]}
+"1": {"madd_6":[40,42]},
+"2": {"madd_6":[0,2,2,4,4,6]},
+"3": {"ikhfa":[47,51],"madd_2":[4,5],"madd_246":[84,85],"madd_munfasil":[15,17],"qalqalah":[51,53],"hamzat_wasl":[35,36,58,59,66,67,77,78]},
+"4": {"lam_shamsiyyah":[15,16],"madd_2":[4,5,21,22,24,25],"madd_246":[73,74],"hamzat_wasl":[14,15,38,39,55,56,66,67]},
+"5": {"ghunnah":[48,51,149,152],"ikhfa":[38,42,124,128],"lam_shamsiyyah":[9,10,178,179],"madd_2":[15,16,18,19],"madd_246":[184,185],"madd_munfasil":[144,146],"madd_muttasil":[61,63],"hamzat_wasl":[8,9,54,55,130,131,153,154,166,167,177,178]},
+"6": {"ikhfa":[26,30,87,90],"ikhfa_shafawi":[99,103],"madd_246":[107,108],"madd_munfasil":[35,37,82,84],"madd_muttasil":[46,48],"silent":[21,23],"hamzat_wasl":[2,3,12,13,51,52]},
+"7": {"ghunnah":[69,72,161,164],"ikhfa":[61,64,104,107,150,154,175,179],"idghaam_no_ghunnah":[53,59],"lam_shamsiyyah":[182,183],"madd_2":[6,7],"madd_246":[188,189],"madd_munfasil":[22,24],"hamzat_wasl":[73,74,117,118,156,157,181,182]},
+"8": {"ghunnah":[37,40],"idghaam_ghunnah":[41,45,51,55,60,64,73,77,129,133,137,141],"idghaam_shafawi":[124,129],"lam_shamsiyyah":[103,104],"madd_2":[45,46,57,58,98,99,107,108],"madd_246":[149,150],"madd_muttasil":[9,11,79,81],"qalqalah":[64,66],"hamzat_wasl":[14,15,102,103]},
+"9": {"ikhfa":[19,23,121,125],"madd_246":[127,128],"madd_munfasil":[28,30],"madd_muttasil":[39,41],"silent":[14,16],"hamzat_wasl":[5,6,46,47,59,60,84,85]},
+"10": {"ikhfa":[28,32,35,39],"madd_2":[66,67],"madd_246":[125,126],"madd_munfasil":[47,49],"qalqalah":[126,127],"hamzat_wasl":[6,7,56,57,74,75]},
+"11": {"ikhfa":[55,58],"idghaam_ghunnah":[73,78,104,109,150,154],"idghaam_shafawi":[45,50],"lam_shamsiyyah":[9,10,160,161],"madd_2":[15,16,18,19,71,72,92,93,102,103,143,144],"madd_246":[177,178],"hamzat_wasl":[8,9,24,25,83,84,159,160,170,171]},
+"12": {"ghunnah":[90,93],"idghaam_ghunnah":[66,70],"lam_shamsiyyah":[18,19,53,54],"madd_2":[4,5,24,25,27,28,95,96],"madd_246":[116,117],"madd_muttasil":[72,74],"qalqalah":[45,47,81,83],"hamzat_wasl":[17,18,33,34,52,53]},
+"13": {"idghaam_ghunnah":[50,55,279,283,312,316],"idghaam_shafawi":[11,16],"lam_shamsiyyah":[20,21,161,162],"madd_2":[44,45,116,117],"madd_246":[318,319],"madd_munfasil":[61,63,74,76,107,109,140,143,265,267,298,300],"madd_muttasil":[285,287],"qalqalah":[112,114,230,232,259,261,319,320],"silent":[157,159,187,189],"hamzat_wasl":[19,20,55,56,160,161,209,210,249,250]},
+"14": {"ghunnah":[145,148,175,178],"ikhfa":[101,105],"iqlab":[30,33,69,74,214,217],"idghaam_ghunnah":[138,143,237,242],"idghaam_no_ghunnah":[114,119,147,153],"madd_2":[207,208],"madd_246":[251,252],"madd_munfasil":[15,17,129,132],"madd_muttasil":[45,47],"qalqalah":[252,253],"silent":[17,19,197,199],"hamzat_wasl":[54,55,179,180,200,201]},
+"15": {"ikhfa":[91,94,104,107,120,124],"idghaam_ghunnah":[128,132],"madd_2":[6,7,126,127,205,206,227,228],"madd_246":[315,316],"madd_munfasil":[36,38,99,101,196,198],"madd_muttasil":[70,72],"qalqalah":[15,17,280,282],"hamzat_wasl":[14,15,22,23,110,111,163,164,270,271,308,309]},
+"16": {"ikhfa":[94,97,143,147],"iqlab":[40,43],"idghaam_ghunnah":[126,130],"madd_2":[68,69],"madd_246":[149,150],"madd_6":[16,18],"qalqalah":[150,151],"hamzat_wasl":[2,3,29,30,53,54]},
+"17": {"ikhfa":[19,22],"lam_shamsiyyah":[86,87],"madd_2":[32,33],"madd_246":[100,101],"madd_munfasil":[14,16],"qalqalah":[69,71,101,102],"hamzat_wasl":[8,9,25,26,38,39,49,50,85,86]},
+"18": {"ghunnah":[110,113,135,138],"iqlab":[187,191],"lam_shamsiyyah":[165,166],"madd_2":[185,186],"madd_246":[194,195],"madd_munfasil":[130,132],"qalqalah":[195,196],"silent":[71,73],"hamzat_wasl":[19,20,53,54,117,118,139,140,164,165]},
+"19": {"iqlab":[14,18],"idghaam_ghunnah":[41,45],"madd_2":[28,29],"madd_246":[77,78],"madd_muttasil":[47,49],"hamzat_wasl":[59,60,70,71]},
+"20": {"ikhfa":[2,6,69,73],"idghaam_ghunnah":[152,157],"lam_shamsiyyah":[93,94],"madd_2":[49,50,63,64,111,112,131,132],"madd_246":[159,160],"qalqalah":[42,44,160,161],"hamzat_wasl":[25,26,92,93,137,138]},
+"21": {"ghunnah":[140,143],"iqlab":[72,75],"idghaam_shafawi":[39,44],"lam_shamsiyyah":[48,49,145,146],"madd_2":[149,150],"madd_246":[177,178],"madd_muttasil":[18,20],"silent":[22,24,32,34],"hamzat_wasl":[47,48,79,80,106,107,144,145]},
+"22": {"ghunnah":[34,37,140,143],"ikhfa":[172,175],"iqlab":[62,66],"idghaam_shafawi":[151,156],"lam_shamsiyyah":[7,8,108,109],"madd_2":[11,12,112,113,117,118,188,189],"madd_246":[216,217],"madd_muttasil":[162,164],"silent":[46,48,92,94,104,106],"hamzat_wasl":[6,7,74,75,107,108,135,136,199,200,209,210]},
+"23": {"ghunnah":[225,228],"ikhfa":[243,247],"idghaam_ghunnah":[172,176,192,197],"lam_shamsiyyah":[78,79],"madd_2":[2,3,82,83,87,88,206,207],"madd_246":[249,250],"madd_munfasil":[98,100],"qalqalah":[126,128,176,178,199,201],"silent":[62,64,74,76],"hamzat_wasl":[8,9,26,27,44,45,77,78,139,140,156,157,229,230]},
+"24": {"ghunnah":[159,162],"ikhfa":[45,50],"iqlab":[172,176],"idghaam_ghunnah":[52,56],"lam_shamsiyyah":[184,185],"madd_2":[116,117,149,150,164,165],"madd_246":[190,191],"madd_munfasil":[154,156],"hamzat_wasl":[16,17,32,33,61,62,103,104,111,112,132,133,183,184]},
+"25": {"lam_shamsiyyah":[25,26,70,71],"madd_2":[50,51],"madd_246":[107,108],"qalqalah":[17,19],"silent":[61,63],"hamzat_wasl":[7,8,24,25,69,70]},
+"26": {"ikhfa":[77,81,118,122],"idghaam_shafawi":[72,77],"lam_shamsiyyah":[48,49],"madd_2":[52,53,57,58,87,88,96,97],"madd_246":[124,125],"qalqalah":[125,126],"silent":[32,34,44,46],"hamzat_wasl":[14,15,47,48,91,92]},
+"27": {"ghunnah":[114,117],"iqlab":[140,144],"idghaam_ghunnah":[77,81,96,101],"lam_shamsiyyah":[23,24],"madd_2":[43,44,74,75,119,120,132,133],"madd_246":[147,148],"madd_muttasil":[107,109],"silent":[53,55],"hamzat_wasl":[14,15,22,23,60,61]},
+"28": {"ikhfa":[65,68],"iqlab":[38,41],"madd_2":[81,82],"madd_246":[108,109],"qalqalah":[109,110],"silent":[58,60],"hamzat_wasl":[7,8,25,26,90,91,101,102]},
+"29": {"ikhfa":[75,79],"idghaam_ghunnah":[85,89],"lam_shamsiyyah":[27,28],"madd_2":[12,13,17,18,33,34,36,37],"madd_246":[131,132],"madd_muttasil":[122,124],"madd_6":[79,81],"hamzat_wasl":[26,27,42,43]},
+"30": {"ikhfa":[32,36,77,81],"idghaam_ghunnah":[21,26],"idghaam_shafawi":[16,21],"madd_2":[11,12],"madd_246":[83,84],"madd_munfasil":[4,6],"silent":[72,74]},
+"31": {"ikhfa":[9,12,57,61],"ikhfa_shafawi":[12,16],"idghaam_ghunnah":[75,79,83,87],"idghaam_shafawi":[52,57],"madd_246":[95,96],"madd_munfasil":[4,6],"hamzat_wasl":[32,33,65,66]},
+"32": {"madd_2":[12,13],"madd_246":[54,55],"hamzat_wasl":[18,19,33,34,45,46]},
+"33": {"ghunnah":[72,75],"ikhfa":[115,119],"idghaam_ghunnah":[2,6],"idghaam_no_ghunnah":[97,102],"lam_shamsiyyah":[21,22],"madd_2":[82,83,95,96],"madd_246":[121,122],"madd_munfasil":[67,69],"hamzat_wasl":[20,21]},
+"34": {"ghunnah":[14,17],"ikhfa":[45,49],"madd_246":[51,52],"qalqalah":[10,12],"silent":[31,33]},
+"35": {"idghaam_ghunnah":[64,69],"idghaam_shafawi":[59,64],"madd_2":[25,26,44,45],"madd_246":[71,72],"madd_munfasil":[36,38],"hamzat_wasl":[11,12]},
+"36": {"ikhfa":[20,24,27,31,70,73],"idghaam_ghunnah":[87,91],"idghaam_shafawi":[15,20],"lam_shamsiyyah":[52,53],"madd_2":[35,36,47,48],"madd_246":[152,153],"madd_munfasil":[4,6],"qalqalah":[93,95],"silent":[46,47,119,121],"hamzat_wasl":[39,40,51,52,74,75]},
+"37": {"madd_2":[56,57],"madd_246":[97,98],"madd_muttasil":[30,32],"qalqalah":[14,16],"silent":[81,83],"hamzat_wasl":[2,3,37,38,49,50]},
+"38": {"ghunnah":[99,102],"ikhfa":[120,123],"lam_shamsiyyah":[52,53],"madd_2":[59,60,112,113],"madd_246":[125,126],"qalqalah":[108,110],"silent":[23,25,48,50,58,59],"hamzat_wasl":[2,3,12,13,51,52]},
+"39": {"ikhfa":[48,51],"madd_246":[55,56],"madd_munfasil":[16,18],"hamzat_wasl":[2,3,31,32]},
+"40": {"ghunnah":[96,99],"ikhfa":[21,25],"idghaam_ghunnah":[31,36],"lam_shamsiyyah":[116,117],"madd_2":[78,79,101,102,120,121],"madd_246":[125,126],"madd_muttasil":[6,8],"qalqalah":[72,74],"silent":[10,12],"hamzat_wasl":[86,87,115,116]},
+"41": {"ikhfa":[10,13,67,71],"idghaam_shafawi":[62,67],"madd_2":[33,34],"madd_246":[73,74],"madd_muttasil":[43,45],"silent":[39,41],"hamzat_wasl":[9,10]},
+"42": {"ghunnah":[2,5,50,53],"lam_shamsiyyah":[10,11,49,50],"madd_246":[133,134],"madd_muttasil":[107,109],"qalqalah":[61,63],"silent":[103,105],"hamzat_wasl":[9,10,26,27,48,49,73,74,92,93]},
+"43": {"ghunnah":[26,29],"ikhfa":[6,10],"madd_2":[32,33],"madd_246":[59,60],"hamzat_wasl":[52,53]},
+"44": {"ghunnah":[87,90],"ikhfa":[146,150],"iqlab":[51,54],"idghaam_ghunnah":[4,8,37,41,45,50,141,146],"lam_shamsiyyah":[72,73],"madd_2":[33,34,61,62,76,77],"madd_246":[152,153],"silent":[98,100],"hamzat_wasl":[15,16,71,72,101,102]},
+"45": {"ghunnah":[122,125,216,219],"ikhfa":[62,65,73,77,163,166],"idghaam_ghunnah":[88,92,244,249],"lam_shamsiyyah":[52,53,221,222],"madd_2":[7,8,37,38,131,132,201,202,225,226],"madd_246":[251,252],"madd_munfasil":[115,117,156,158,211,213],"silent":[117,119,158,160],"hamzat_wasl":[51,52,98,99,126,127,140,141,194,195,220,221]},
+"46": {"ikhfa":[39,42,54,58,107,111],"idghaam_ghunnah":[74,78],"idghaam_shafawi":[16,21,49,54],"madd_2":[103,104],"madd_246":[113,114],"madd_muttasil":[32,34],"hamzat_wasl":[62,63,85,86]},
+"47": {"ikhfa":[28,32],"idghaam_ghunnah":[39,43,102,107,112,116,123,127,140,145],"idghaam_no_ghunnah":[55,60],"idghaam_shafawi":[23,28,97,102,135,140],"madd_2":[74,75],"madd_246":[147,148],"qalqalah":[32,34],"silent":[11,13],"hamzat_wasl":[81,82]},
+"48": {"ghunnah":[96,99,133,136,220,223],"ikhfa":[124,127,145,149,164,168,229,232],"iqlab":[185,189],"madd_2":[36,37,88,89,127,128,232,233],"madd_246":[240,241],"madd_munfasil":[23,25,99,101,106,108],"qalqalah":[113,115,170,172],"silent":[16,18],"hamzat_wasl":[81,82,119,120,224,225]},
+"49": {"idghaam_ghunnah":[75,79,92,97,108,112],"lam_shamsiyyah":[17,18,120,121],"madd_2":[23,24,26,27,90,91],"madd_246":[126,127],"madd_muttasil":[59,61,81,83,114,116],"hamzat_wasl":[16,17,32,33,119,120]},
+"50": {"ghunnah":[76,79],"ikhfa":[89,93],"idghaam_ghunnah":[27,32,38,43,54,58],"madd_2":[36,37,81,82],"madd_246":[95,96],"madd_muttasil":[60,62],"qalqalah":[45,47]},
+"51": {"ghunnah":[146,149],"ikhfa":[106,111],"idghaam_ghunnah":[23,27,67,71],"madd_2":[129,130,151,152],"madd_246":[165,166],"madd_muttasil":[73,75,139,141],"hamzat_wasl":[37,38]},
+"52": {"ghunnah":[185,188],"ikhfa":[63,66,115,119],"idghaam_ghunnah":[38,44,133,139,153,158,215,220],"madd_2":[6,7,86,87,104,105,112,113,125,126,149,150,213,214],"madd_246":[226,227],"madd_munfasil":[22,24,199,201],"madd_muttasil":[160,162],"qalqalah":[69,71],"hamzat_wasl":[79,80,96,97]},
+"53": {"lam_shamsiyyah":[39,40],"madd_2":[4,5,28,29,45,46,48,49],"madd_246":[108,109],"madd_munfasil":[76,78],"hamzat_wasl":[8,9,16,17,38,39,62,63,85,86,101,102]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/43.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/43.json
index e0ed6d2..9b97c62 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/43.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/43.json
@@ -1,91 +1,91 @@
{
-"1": {"madd-lazim":[40,42]},
-"2": {"madd":[9,10,20,21],"wasl":[2,3,13,14]},
-"3": {"ghunnah":[2,5],"idgham":[38,44],"madd":[15,16,25,26,62,63]},
-"4": {"ghunnah":[4,7,18,21],"madd":[9,10,13,15,29,30,57,58],"wasl":[22,23]},
-"5": {"ghunnah":[15,18,41,45,45,48],"idgham":[22,23,56,62],"madd":[68,69],"wasl":[21,22]},
-"6": {"ghunnah":[30,34],"idgham":[21,26],"madd":[46,47],"wasl":[36,37]},
-"7": {"idgham":[15,20,20,25],"madd":[51,52,65,66],"silent":[44,46]},
-"8": {"ghunnah":[29,33],"idgham":[36,41],"madd":[12,14,65,66],"qalqalah":[33,35],"wasl":[55,56]},
-"9": {"ghunnah":[6,10,68,71,80,83],"idgham":[18,23,34,35],"madd":[40,41,43,44,102,103],"wasl":[33,34,49,50,84,85,95,96]},
-"10": {"idgham":[37,42,68,74],"madd":[92,93],"wasl":[22,23]},
-"11": {"ghunnah":[40,44,50,54,56,59,86,91],"idgham":[24,25,78,83],"madd":[30,32,37,39,69,70,93,94,107,108],"wasl":[2,3,23,24]},
-"12": {"idgham":[52,57],"madd":[26,27,81,82,97,98],"wasl":[2,3,17,18,60,61,72,73]},
-"13": {"ghunnah":[34,37,158,161],"madd":[10,11,30,31,117,118,145,146,167,168,177,178],"qalqalah":[113,115,171,173],"silent":[11,13,47,49,108,110],"wasl":[75,76,121,122]},
-"14": {"ghunnah":[4,7,30,33],"madd":[7,9,37,38]},
-"15": {"ghunnah":[44,47,53,56],"idgham":[68,73],"madd":[16,17,32,33,56,57,75,76],"silent":[9,11],"wasl":[48,49]},
-"16": {"ghunnah":[16,19,50,54],"idgham":[36,40],"madd":[47,48,61,62],"wasl":[5,6,54,55]},
-"17": {"ghunnah":[24,28,58,63],"idgham":[41,42,85,90],"madd":[49,50,75,76,99,100],"qalqalah":[69,71]},
-"18": {"idgham":[6,10],"madd":[69,70],"silent":[17,19],"wasl":[24,25,47,48]},
-"19": {"idgham":[52,53],"madd":[19,21,47,48,60,61,68,69,111,112,132,133],"silent":[9,11,82,84],"wasl":[12,13,28,29,51,52]},
-"20": {"ghunnah":[62,66],"idgham":[24,25,51,56],"madd":[18,20,32,33,48,49,68,69,111,112],"qalqalah":[44,46],"silent":[8,10],"wasl":[23,24]},
-"21": {"ghunnah":[32,36,48,52],"idgham":[26,32],"madd":[14,15,24,25,42,43,54,55,68,69],"qalqalah":[36,38]},
-"22": {"ghunnah":[17,20,56,59,66,69],"idgham":[60,64,89,94],"madd":[10,12,30,32,38,40,50,53,75,78,84,85,100,101],"qalqalah":[26,28],"silent":[12,14]},
-"23": {"ghunnah":[31,35,98,101,137,140,147,150],"idgham":[53,58,58,63,141,145,170,175],"madd":[6,7,14,16,93,95,111,113,119,121,131,134,156,159,165,166,181,182],"qalqalah":[35,37,107,109,175,177]},
-"24": {"ghunnah":[23,27,38,41,89,92,111,115],"idgham":[47,48],"madd":[2,3,68,70,82,84,98,100,117,118,121,122,126,127],"silent":[84,86]},
-"25": {"ghunnah":[3,6,26,29],"madd":[47,48,67,68],"wasl":[2,3,25,26,55,56]},
-"26": {"ghunnah":[51,54,70,73],"idgham":[65,70],"madd":[19,20,46,48,62,64,83,84],"qalqalah":[15,17]},
-"27": {"ghunnah":[29,32],"madd":[34,35,44,45],"wasl":[7,8]},
-"28": {"ghunnah":[19,23,30,34],"madd":[44,45,66,67]},
-"29": {"idgham":[80,85],"madd":[17,19,23,25,35,37,54,56,87,88],"wasl":[63,64]},
-"30": {"ghunnah":[4,7,56,59],"idgham":[50,54],"madd":[11,13,40,41,65,66,69,70,74,75],"silent":[35,37],"wasl":[20,21]},
-"31": {"idgham":[59,64],"madd":[29,30,87,88],"silent":[8,10],"wasl":[34,35,67,68]},
-"32": {"ghunnah":[140,144,173,177,180,185,223,226],"idgham":[61,66,95,96,150,155,191,196,218,223],"madd":[90,91,148,149,236,237],"qalqalah":[9,11,230,232],"silent":[89,90],"wasl":[82,83,94,95]},
-"33": {"ghunnah":[25,28,34,37,118,122],"idgham":[13,17,24,25,38,42,48,53,67,71,81,82,112,118,126,130],"madd":[8,10,42,43,89,90,158,159],"wasl":[23,24,80,81]},
-"34": {"idgham":[24,29],"madd":[22,23,57,58],"qalqalah":[18,20]},
-"35": {"ghunnah":[16,20,34,37,87,90],"idgham":[9,14,60,61],"madd":[26,27,43,44,55,56,110,111],"silent":[54,55],"wasl":[47,48,59,60,72,73]},
-"36": {"ghunnah":[15,19,61,66],"idgham":[4,8,25,26],"madd":[33,34,51,52,59,60,75,76,81,82],"wasl":[24,25]},
-"37": {"ghunnah":[4,7,61,64],"idgham":[35,36,66,71],"madd":[77,78],"wasl":[34,35]},
-"38": {"madd":[5,8,17,19,33,34,99,100],"wasl":[67,68,92,93]},
-"39": {"ghunnah":[8,11,46,49],"idgham":[4,8,30,31],"madd":[79,80],"wasl":[18,19,58,59]},
-"40": {"ghunnah":[6,9,24,27,55,59],"idgham":[20,21,73,78],"madd":[71,72,80,81],"wasl":[19,20,41,42]},
-"41": {"ghunnah":[4,7,17,20,30,33,46,49],"idgham":[41,46],"madd":[53,54]},
-"42": {"ghunnah":[11,14,43,46],"idgham":[56,61],"madd":[33,34,69,70],"qalqalah":[29,31,61,63],"wasl":[17,18]},
-"43": {"ghunnah":[44,47],"idgham":[63,68],"madd":[22,24,61,62,74,75],"wasl":[2,3,16,17]},
-"44": {"ghunnah":[4,7],"idgham":[18,23],"madd":[9,10,57,58]},
-"45": {"ghunnah":[29,33,70,74],"idgham":[42,47,79,80,99,103],"madd":[53,55,87,88,109,110],"qalqalah":[33,35],"wasl":[78,79]},
-"46": {"ghunnah":[87,90],"madd":[37,38,42,44,75,76,111,112,116,117],"qalqalah":[6,8],"silent":[71,73],"wasl":[106,107]},
-"47": {"ghunnah":[4,7,17,21],"idgham":[43,48],"madd":[11,13,27,28,32,34,62,63]},
-"48": {"ghunnah":[78,82],"idgham":[13,18],"madd":[75,76,113,114],"wasl":[82,83]},
-"49": {"ghunnah":[69,72,77,80],"idgham":[24,25],"madd":[13,15,94,95],"qalqalah":[35,37],"silent":[8,10],"wasl":[23,24,34,35]},
-"50": {"ghunnah":[4,7,52,55],"madd":[57,58],"wasl":[28,29]},
-"51": {"ghunnah":[111,115],"madd":[33,34,43,44,82,83,97,98,119,121,138,139],"qalqalah":[103,105,132,134],"wasl":[88,89]},
-"52": {"idgham":[17,22,51,55],"madd":[27,28,71,72],"wasl":[32,33]},
-"53": {"ghunnah":[43,47],"idgham":[38,43],"madd":[8,10,59,61,78,80,97,98],"qalqalah":[89,91],"wasl":[71,72]},
-"54": {"ghunnah":[38,41,60,65],"madd":[21,22,65,66,70,71],"silent":[52,54],"wasl":[2,3]},
-"55": {"ghunnah":[4,7,23,26],"madd":[7,9,55,56,69,70],"qalqalah":[51,53,63,65],"wasl":[22,23]},
-"56": {"idgham":[21,26,31,37],"madd":[10,11,46,47]},
-"57": {"ghunnah":[4,7],"madd":[68,69],"qalqalah":[17,19],"wasl":[16,17]},
-"58": {"ghunnah":[75,80],"madd":[7,9,16,17,102,103],"silent":[9,11]},
-"59": {"idgham":[64,70],"madd":[55,56,74,76,83,85,87,88],"qalqalah":[19,21]},
-"60": {"ghunnah":[30,33,47,51],"idgham":[33,38],"madd":[11,13,40,42,71,72],"wasl":[53,54]},
-"61": {"ghunnah":[4,7,47,50],"idgham":[18,23,23,24,84,89],"madd":[9,10,73,74,82,83,95,96],"wasl":[59,60]},
-"62": {"ghunnah":[13,16,36,39],"idgham":[22,23,56,61],"madd":[30,31,41,42,63,64],"wasl":[21,22]},
-"63": {"ghunnah":[4,7,59,63,93,97],"madd":[11,13,36,37,159,160],"qalqalah":[48,50],"silent":[139,141],"wasl":[26,27,63,64,102,103,132,133,142,143]},
-"64": {"ghunnah":[2,5],"idgham":[64,69],"madd":[53,54,62,63,75,76],"wasl":[6,7,40,41]},
-"65": {"ghunnah":[28,31],"idgham":[48,53],"madd":[96,97],"silent":[69,71],"wasl":[2,3,12,13]},
-"66": {"ghunnah":[7,10,36,40,48,52],"idgham":[24,25,57,61],"madd":[78,79],"wasl":[23,24]},
-"67": {"ghunnah":[24,28],"madd":[10,12,72,73],"wasl":[62,63]},
-"68": {"ghunnah":[52,55],"madd":[2,3,47,49,66,67],"wasl":[33,34]},
-"69": {"madd":[29,30,55,56],"silent":[18,20,44,46]},
-"70": {"ghunnah":[16,19,24,27],"madd":[38,39,54,55],"qalqalah":[1,3],"silent":[8,10],"wasl":[11,12]},
-"71": {"ghunnah":[16,20,31,35,82,85,114,117],"idgham":[26,31,38,42,50,54],"madd":[129,130,134,135],"wasl":[77,78,98,99]},
-"72": {"ghunnah":[14,17,53,56],"madd":[26,28,67,68],"wasl":[9,10,20,21]},
-"73": {"ghunnah":[22,26],"idgham":[32,37],"madd":[16,17,51,52]},
-"74": {"ghunnah":[2,5,37,40],"madd":[45,46,50,51],"qalqalah":[11,13],"wasl":[6,7]},
-"75": {"madd":[44,45],"qalqalah":[38,40]},
-"76": {"ghunnah":[27,31],"idgham":[44,45],"madd":[14,15,24,25,48,49,53,54],"silent":[35,37],"wasl":[43,44]},
-"77": {"ghunnah":[58,61],"idgham":[63,68],"madd":[14,15,17,18,68,69,73,74],"qalqalah":[27,29],"silent":[9,11]},
-"78": {"ghunnah":[16,20,36,39],"madd":[13,14,33,34,65,66,70,71],"qalqalah":[4,6],"wasl":[20,21]},
-"79": {"ghunnah":[23,28,30,33],"madd":[13,15,43,44],"qalqalah":[7,9,37,39],"silent":[15,17]},
-"80": {"ghunnah":[19,22,59,63],"madd":[56,57,99,100],"qalqalah":[51,53]},
-"81": {"ghunnah":[7,11,34,38],"idgham":[17,18],"madd":[25,26,58,59,63,64],"wasl":[53,54]},
-"82": {"ghunnah":[60,63],"idgham":[17,18],"madd":[6,7,23,24,26,27,71,72],"qalqalah":[2,4],"wasl":[16,17,32,33,48,49]},
-"83": {"madd":[48,49,81,82],"silent":[19,21,33,35,52,54],"wasl":[66,67]},
-"84": {"idgham":[20,21,37,41,61,65],"madd":[26,28,35,36,59,60,88,89],"wasl":[7,8,19,20,45,46,70,71,81,82]},
-"85": {"ghunnah":[81,84],"idgham":[34,35,96,97],"madd":[24,25,40,41,43,44,86,87,125,126],"wasl":[12,13,33,34,49,50,95,96]},
-"86": {"ghunnah":[37,41,69,73],"idgham":[48,49],"madd":[54,55,104,105],"qalqalah":[27,29],"wasl":[15,16,47,48,80,81]},
-"87": {"ghunnah":[6,10,46,49,62,65],"idgham":[18,23],"madd":[76,77],"wasl":[50,51]},
-"88": {"ghunnah":[22,25],"idgham":[44,49],"madd":[9,10,13,14,28,30,34,36,59,60]},
-"89": {"ghunnah":[32,36],"madd":[30,31,51,52],"wasl":[2,3]}
+"1": {"madd_6":[40,42]},
+"2": {"madd_2":[9,10],"madd_246":[20,21],"hamzat_wasl":[2,3,13,14]},
+"3": {"ghunnah":[2,5],"idghaam_no_ghunnah":[38,44],"madd_2":[15,16,25,26],"madd_246":[62,63]},
+"4": {"ghunnah":[4,7,18,21],"madd_2":[9,10,29,30],"madd_246":[57,58],"madd_munfasil":[13,15],"hamzat_wasl":[22,23]},
+"5": {"ikhfa":[15,18,41,45,45,48],"idghaam_ghunnah":[56,62],"lam_shamsiyyah":[22,23],"madd_246":[68,69],"hamzat_wasl":[21,22]},
+"6": {"ikhfa":[30,34],"idghaam_ghunnah":[21,26],"madd_246":[46,47],"hamzat_wasl":[36,37]},
+"7": {"idghaam_ghunnah":[20,25],"idghaam_shafawi":[15,20],"madd_2":[51,52],"madd_246":[65,66],"silent":[44,46]},
+"8": {"ikhfa_shafawi":[29,33],"idghaam_ghunnah":[36,41],"madd_246":[65,66],"madd_munfasil":[12,14],"qalqalah":[33,35],"hamzat_wasl":[55,56]},
+"9": {"ghunnah":[68,71,80,83],"ikhfa":[6,10],"idghaam_shafawi":[18,23],"lam_shamsiyyah":[34,35],"madd_2":[40,41,43,44],"madd_246":[102,103],"hamzat_wasl":[33,34,49,50,84,85,95,96]},
+"10": {"idghaam_ghunnah":[37,42],"idghaam_no_ghunnah":[68,74],"madd_246":[92,93],"hamzat_wasl":[22,23]},
+"11": {"ikhfa":[50,54,56,59,86,91],"iqlab":[40,44],"idghaam_ghunnah":[78,83],"lam_shamsiyyah":[24,25],"madd_2":[69,70,93,94],"madd_246":[107,108],"madd_muttasil":[30,32,37,39],"hamzat_wasl":[2,3,23,24]},
+"12": {"idghaam_shafawi":[52,57],"madd_2":[26,27,81,82],"madd_246":[97,98],"hamzat_wasl":[2,3,17,18,60,61,72,73]},
+"13": {"ghunnah":[34,37,158,161],"madd_2":[10,11,30,31,117,118,145,146,167,168],"madd_246":[177,178],"qalqalah":[113,115,171,173],"silent":[11,13,47,49,108,110],"hamzat_wasl":[75,76,121,122]},
+"14": {"ghunnah":[4,7],"ikhfa":[30,33],"madd_246":[37,38],"madd_munfasil":[7,9]},
+"15": {"ghunnah":[44,47],"ikhfa":[53,56],"idghaam_ghunnah":[68,73],"madd_2":[16,17,32,33,56,57],"madd_246":[75,76],"silent":[9,11],"hamzat_wasl":[48,49]},
+"16": {"ghunnah":[16,19],"ikhfa_shafawi":[50,54],"idghaam_ghunnah":[36,40],"madd_2":[47,48],"madd_246":[61,62],"hamzat_wasl":[5,6,54,55]},
+"17": {"ikhfa":[58,63],"ikhfa_shafawi":[24,28],"idghaam_ghunnah":[85,90],"lam_shamsiyyah":[41,42],"madd_2":[49,50,75,76],"madd_246":[99,100],"qalqalah":[69,71]},
+"18": {"idghaam_ghunnah":[6,10],"madd_246":[69,70],"silent":[17,19],"hamzat_wasl":[24,25,47,48]},
+"19": {"lam_shamsiyyah":[52,53],"madd_2":[47,48,60,61,68,69,111,112],"madd_246":[132,133],"madd_muttasil":[19,21],"silent":[9,11,82,84],"hamzat_wasl":[12,13,28,29,51,52]},
+"20": {"ikhfa_shafawi":[62,66],"idghaam_shafawi":[51,56],"lam_shamsiyyah":[24,25],"madd_2":[32,33,48,49,68,69],"madd_246":[111,112],"madd_muttasil":[18,20],"qalqalah":[44,46],"silent":[8,10],"hamzat_wasl":[23,24]},
+"21": {"ikhfa":[32,36],"ikhfa_shafawi":[48,52],"idghaam_ghunnah":[26,32],"madd_2":[14,15,24,25,42,43,54,55],"madd_246":[68,69],"qalqalah":[36,38]},
+"22": {"ghunnah":[17,20,56,59,66,69],"idghaam_ghunnah":[60,64],"idghaam_shafawi":[89,94],"madd_2":[84,85],"madd_246":[100,101],"madd_munfasil":[10,12,30,32,50,53,75,78],"madd_muttasil":[38,40],"qalqalah":[26,28],"silent":[12,14]},
+"23": {"ghunnah":[98,101,137,140,147,150],"ikhfa":[31,35],"idghaam_ghunnah":[53,58,58,63,141,145],"idghaam_shafawi":[170,175],"madd_2":[6,7,165,166],"madd_246":[181,182],"madd_munfasil":[14,16,93,95,111,113,131,134,156,159],"madd_muttasil":[119,121],"qalqalah":[35,37,107,109,175,177]},
+"24": {"ghunnah":[38,41,89,92],"ikhfa_shafawi":[23,27,111,115],"idghaam_mutajanisayn":[47,48],"madd_2":[2,3,117,118,121,122],"madd_246":[126,127],"madd_munfasil":[82,84,98,100],"madd_muttasil":[68,70],"silent":[84,86]},
+"25": {"ikhfa":[3,6,26,29],"madd_2":[47,48],"madd_246":[67,68],"hamzat_wasl":[2,3,25,26,55,56]},
+"26": {"ghunnah":[51,54,70,73],"idghaam_ghunnah":[65,70],"madd_2":[19,20],"madd_246":[83,84],"madd_munfasil":[46,48],"madd_muttasil":[62,64],"qalqalah":[15,17]},
+"27": {"ghunnah":[29,32],"madd_2":[34,35],"madd_246":[44,45],"hamzat_wasl":[7,8]},
+"28": {"ikhfa":[30,34],"iqlab":[19,23],"madd_2":[44,45],"madd_246":[66,67]},
+"29": {"idghaam_ghunnah":[80,85],"madd_246":[87,88],"madd_muttasil":[17,19,23,25,35,37,54,56],"hamzat_wasl":[63,64]},
+"30": {"ghunnah":[4,7,56,59],"idghaam_ghunnah":[50,54],"madd_2":[40,41,65,66,69,70],"madd_246":[74,75],"madd_muttasil":[11,13],"silent":[35,37],"hamzat_wasl":[20,21]},
+"31": {"idghaam_ghunnah":[59,64],"madd_2":[29,30],"madd_246":[87,88],"silent":[8,10],"hamzat_wasl":[34,35,67,68]},
+"32": {"ghunnah":[223,226],"ikhfa":[140,144,180,185],"ikhfa_shafawi":[173,177],"idghaam_ghunnah":[191,196,218,223],"idghaam_no_ghunnah":[150,155],"idghaam_shafawi":[61,66],"lam_shamsiyyah":[95,96],"madd_2":[90,91,148,149],"madd_246":[236,237],"qalqalah":[9,11,230,232],"silent":[89,90],"hamzat_wasl":[82,83,94,95]},
+"33": {"ghunnah":[25,28,34,37],"ikhfa":[118,122],"idghaam_ghunnah":[13,17,38,42,67,71,112,118,126,130],"idghaam_no_ghunnah":[48,53],"lam_shamsiyyah":[24,25,81,82],"madd_2":[42,43,89,90],"madd_246":[158,159],"madd_munfasil":[8,10],"hamzat_wasl":[23,24,80,81]},
+"34": {"idghaam_ghunnah":[24,29],"madd_2":[22,23],"madd_246":[57,58],"qalqalah":[18,20]},
+"35": {"ghunnah":[34,37],"ikhfa":[16,20,87,90],"idghaam_ghunnah":[9,14],"lam_shamsiyyah":[60,61],"madd_2":[26,27,43,44,55,56],"madd_246":[110,111],"silent":[54,55],"hamzat_wasl":[47,48,59,60,72,73]},
+"36": {"ikhfa":[15,19,61,66],"idghaam_ghunnah":[4,8],"lam_shamsiyyah":[25,26],"madd_2":[33,34,51,52,59,60,75,76],"madd_246":[81,82],"hamzat_wasl":[24,25]},
+"37": {"ghunnah":[4,7,61,64],"idghaam_shafawi":[66,71],"lam_shamsiyyah":[35,36],"madd_246":[77,78],"hamzat_wasl":[34,35]},
+"38": {"madd_2":[33,34],"madd_246":[99,100],"madd_munfasil":[5,8],"madd_muttasil":[17,19],"hamzat_wasl":[67,68,92,93]},
+"39": {"ghunnah":[46,49],"ikhfa":[8,11],"idghaam_ghunnah":[4,8],"idghaam_mutajanisayn":[30,31],"madd_246":[79,80],"hamzat_wasl":[18,19,58,59]},
+"40": {"ghunnah":[24,27],"ikhfa":[6,9,55,59],"idghaam_ghunnah":[73,78],"lam_shamsiyyah":[20,21],"madd_2":[71,72],"madd_246":[80,81],"hamzat_wasl":[19,20,41,42]},
+"41": {"ghunnah":[4,7,17,20,30,33],"ikhfa":[46,49],"idghaam_shafawi":[41,46],"madd_246":[53,54]},
+"42": {"ghunnah":[11,14,43,46],"idghaam_shafawi":[56,61],"madd_2":[33,34],"madd_246":[69,70],"qalqalah":[29,31,61,63],"hamzat_wasl":[17,18]},
+"43": {"ghunnah":[44,47],"idghaam_ghunnah":[63,68],"madd_2":[61,62],"madd_246":[74,75],"madd_munfasil":[22,24],"hamzat_wasl":[2,3,16,17]},
+"44": {"ghunnah":[4,7],"idghaam_no_ghunnah":[18,23],"madd_2":[9,10],"madd_246":[57,58]},
+"45": {"ikhfa":[29,33,70,74],"idghaam_ghunnah":[99,103],"idghaam_no_ghunnah":[42,47],"lam_shamsiyyah":[79,80],"madd_2":[87,88],"madd_246":[109,110],"madd_munfasil":[53,55],"qalqalah":[33,35],"hamzat_wasl":[78,79]},
+"46": {"ghunnah":[87,90],"madd_2":[37,38,75,76,111,112],"madd_246":[116,117],"madd_munfasil":[42,44],"qalqalah":[6,8],"silent":[71,73],"hamzat_wasl":[106,107]},
+"47": {"ghunnah":[4,7],"ikhfa_shafawi":[17,21],"idghaam_shafawi":[43,48],"madd_2":[27,28],"madd_246":[62,63],"madd_munfasil":[32,34],"madd_muttasil":[11,13]},
+"48": {"ikhfa_shafawi":[78,82],"idghaam_shafawi":[13,18],"madd_2":[75,76],"madd_246":[113,114],"hamzat_wasl":[82,83]},
+"49": {"ghunnah":[77,80],"ikhfa":[69,72],"lam_shamsiyyah":[24,25],"madd_246":[94,95],"madd_munfasil":[13,15],"qalqalah":[35,37],"silent":[8,10],"hamzat_wasl":[23,24,34,35]},
+"50": {"ghunnah":[4,7],"ikhfa":[52,55],"madd_246":[57,58],"hamzat_wasl":[28,29]},
+"51": {"ikhfa":[111,115],"madd_2":[33,34,43,44,82,83,97,98],"madd_246":[138,139],"madd_munfasil":[119,121],"qalqalah":[103,105,132,134],"hamzat_wasl":[88,89]},
+"52": {"idghaam_ghunnah":[17,22,51,55],"madd_2":[27,28],"madd_246":[71,72],"hamzat_wasl":[32,33]},
+"53": {"ikhfa":[43,47],"idghaam_ghunnah":[38,43],"madd_246":[97,98],"madd_munfasil":[8,10],"madd_muttasil":[59,61,78,80],"qalqalah":[89,91],"hamzat_wasl":[71,72]},
+"54": {"ghunnah":[38,41],"ikhfa":[60,65],"madd_2":[21,22,65,66],"madd_246":[70,71],"silent":[52,54],"hamzat_wasl":[2,3]},
+"55": {"ghunnah":[4,7],"ikhfa":[23,26],"madd_2":[55,56],"madd_246":[69,70],"madd_munfasil":[7,9],"qalqalah":[51,53,63,65],"hamzat_wasl":[22,23]},
+"56": {"idghaam_ghunnah":[21,26],"idghaam_no_ghunnah":[31,37],"madd_2":[10,11],"madd_246":[46,47]},
+"57": {"ghunnah":[4,7],"madd_246":[68,69],"qalqalah":[17,19],"hamzat_wasl":[16,17]},
+"58": {"iqlab":[75,80],"madd_2":[16,17],"madd_246":[102,103],"madd_munfasil":[7,9],"silent":[9,11]},
+"59": {"idghaam_no_ghunnah":[64,70],"madd_2":[55,56],"madd_246":[87,88],"madd_munfasil":[74,76],"madd_muttasil":[83,85],"qalqalah":[19,21]},
+"60": {"ikhfa":[30,33,47,51],"idghaam_shafawi":[33,38],"madd_246":[71,72],"madd_muttasil":[11,13,40,42],"hamzat_wasl":[53,54]},
+"61": {"ghunnah":[4,7,47,50],"idghaam_ghunnah":[84,89],"idghaam_no_ghunnah":[18,23],"lam_shamsiyyah":[23,24],"madd_2":[9,10,73,74,82,83],"madd_246":[95,96],"hamzat_wasl":[59,60]},
+"62": {"ghunnah":[13,16,36,39],"idghaam_ghunnah":[56,61],"lam_shamsiyyah":[22,23],"madd_2":[30,31,41,42],"madd_246":[63,64],"hamzat_wasl":[21,22]},
+"63": {"ghunnah":[4,7],"ikhfa_shafawi":[59,63,93,97],"madd_2":[36,37],"madd_246":[159,160],"madd_muttasil":[11,13],"qalqalah":[48,50],"silent":[139,141],"hamzat_wasl":[26,27,63,64,102,103,132,133,142,143]},
+"64": {"ghunnah":[2,5],"idghaam_ghunnah":[64,69],"madd_2":[53,54,62,63],"madd_246":[75,76],"hamzat_wasl":[6,7,40,41]},
+"65": {"iqlab":[28,31],"idghaam_no_ghunnah":[48,53],"madd_246":[96,97],"silent":[69,71],"hamzat_wasl":[2,3,12,13]},
+"66": {"ikhfa":[7,10,36,40],"ikhfa_shafawi":[48,52],"idghaam_ghunnah":[57,61],"lam_shamsiyyah":[24,25],"madd_246":[78,79],"hamzat_wasl":[23,24]},
+"67": {"iqlab":[24,28],"madd_246":[72,73],"madd_muttasil":[10,12],"hamzat_wasl":[62,63]},
+"68": {"ikhfa":[52,55],"madd_2":[2,3],"madd_246":[66,67],"madd_munfasil":[47,49],"hamzat_wasl":[33,34]},
+"69": {"madd_2":[29,30],"madd_246":[55,56],"silent":[18,20,44,46]},
+"70": {"ghunnah":[16,19],"ikhfa":[24,27],"madd_2":[38,39],"madd_246":[54,55],"qalqalah":[1,3],"silent":[8,10],"hamzat_wasl":[11,12]},
+"71": {"ikhfa":[31,35,82,85,114,117],"ikhfa_shafawi":[16,20],"idghaam_ghunnah":[26,31,38,42,50,54],"madd_2":[129,130],"madd_246":[134,135],"hamzat_wasl":[77,78,98,99]},
+"72": {"ghunnah":[14,17],"ikhfa":[53,56],"madd_246":[67,68],"madd_munfasil":[26,28],"hamzat_wasl":[9,10,20,21]},
+"73": {"ikhfa":[22,26],"idghaam_ghunnah":[32,37],"madd_2":[16,17],"madd_246":[51,52]},
+"74": {"ghunnah":[2,5,37,40],"madd_2":[45,46],"madd_246":[50,51],"qalqalah":[11,13],"hamzat_wasl":[6,7]},
+"75": {"madd_246":[44,45],"qalqalah":[38,40]},
+"76": {"ikhfa":[27,31],"lam_shamsiyyah":[44,45],"madd_2":[14,15,24,25,48,49],"madd_246":[53,54],"silent":[35,37],"hamzat_wasl":[43,44]},
+"77": {"ghunnah":[58,61],"idghaam_shafawi":[63,68],"madd_2":[14,15,17,18,68,69],"madd_246":[73,74],"qalqalah":[27,29],"silent":[9,11]},
+"78": {"ghunnah":[36,39],"ikhfa_shafawi":[16,20],"madd_2":[13,14,33,34,65,66],"madd_246":[70,71],"qalqalah":[4,6],"hamzat_wasl":[20,21]},
+"79": {"ghunnah":[30,33],"ikhfa":[23,28],"madd_246":[43,44],"madd_munfasil":[13,15],"qalqalah":[7,9,37,39],"silent":[15,17]},
+"80": {"ghunnah":[19,22],"ikhfa_shafawi":[59,63],"madd_2":[56,57],"madd_246":[99,100],"qalqalah":[51,53]},
+"81": {"ikhfa":[7,11,34,38],"lam_shamsiyyah":[17,18],"madd_2":[25,26,58,59],"madd_246":[63,64],"hamzat_wasl":[53,54]},
+"82": {"ghunnah":[60,63],"lam_shamsiyyah":[17,18],"madd_2":[6,7,23,24,26,27],"madd_246":[71,72],"qalqalah":[2,4],"hamzat_wasl":[16,17,32,33,48,49]},
+"83": {"madd_2":[48,49],"madd_246":[81,82],"silent":[19,21,33,35,52,54],"hamzat_wasl":[66,67]},
+"84": {"idghaam_ghunnah":[37,41,61,65],"lam_shamsiyyah":[20,21],"madd_2":[35,36,59,60],"madd_246":[88,89],"madd_muttasil":[26,28],"hamzat_wasl":[7,8,19,20,45,46,70,71,81,82]},
+"85": {"ikhfa":[81,84],"lam_shamsiyyah":[34,35,96,97],"madd_2":[24,25,40,41,43,44,86,87],"madd_246":[125,126],"hamzat_wasl":[12,13,33,34,49,50,95,96]},
+"86": {"ikhfa":[37,41,69,73],"lam_shamsiyyah":[48,49],"madd_2":[54,55],"madd_246":[104,105],"qalqalah":[27,29],"hamzat_wasl":[15,16,47,48,80,81]},
+"87": {"ghunnah":[46,49,62,65],"ikhfa":[6,10],"idghaam_shafawi":[18,23],"madd_246":[76,77],"hamzat_wasl":[50,51]},
+"88": {"ghunnah":[22,25],"idghaam_no_ghunnah":[44,49],"madd_2":[9,10,13,14],"madd_246":[59,60],"madd_muttasil":[28,30,34,36]},
+"89": {"ikhfa":[32,36],"madd_2":[30,31],"madd_246":[51,52],"hamzat_wasl":[2,3]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/44.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/44.json
index a12760b..a4acf7e 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/44.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/44.json
@@ -1,61 +1,61 @@
{
-"1": {"madd-lazim":[40,42]},
-"2": {"madd":[9,10,20,21],"wasl":[2,3,13,14]},
-"3": {"ghunnah":[2,5,10,13,49,52,56,59,63,66],"idgham":[32,37],"madd":[5,7,17,18,39,40,68,69]},
-"4": {"madd":[33,34]},
-"5": {"ghunnah":[16,19,26,29,33,36],"idgham":[5,11],"madd":[21,23,46,47]},
-"6": {"ghunnah":[25,28],"idgham":[7,12,12,17,38,39],"madd":[30,31,55,56],"wasl":[37,38,48,49]},
-"7": {"ghunnah":[53,57,57,60],"idgham":[7,8,60,65],"madd":[13,14,16,17,48,50,70,71],"wasl":[6,7,22,23]},
-"8": {"madd":[2,4,9,10,31,32,66,68,85,86],"wasl":[75,76]},
-"9": {"idgham":[18,22],"madd":[28,29]},
-"10": {"idgham":[28,29,47,52],"madd":[34,36,54,55],"qalqalah":[9,11],"wasl":[2,3,27,28]},
-"11": {"ghunnah":[10,13],"idgham":[9,10],"madd":[19,20,36,37],"wasl":[8,9]},
-"12": {"ghunnah":[20,23,38,41],"madd":[51,52],"wasl":[10,11,25,26]},
-"13": {"ghunnah":[2,5],"idgham":[16,17,51,56],"madd":[36,38,58,59],"qalqalah":[31,33],"wasl":[15,16]},
-"14": {"ghunnah":[2,5],"idgham":[44,49],"madd":[53,54],"qalqalah":[49,51],"silent":[15,17,33,35]},
-"15": {"ghunnah":[2,5,40,43],"madd":[50,52,56,57],"silent":[15,17],"wasl":[18,19]},
-"16": {"ghunnah":[43,46,50,53],"madd":[37,40,57,58],"qalqalah":[9,11,21,23,33,35],"wasl":[16,17,28,29]},
-"17": {"ghunnah":[13,16,66,70],"madd":[51,53,72,73],"qalqalah":[6,8,20,22]},
-"18": {"ghunnah":[41,44],"madd":[10,12,65,66],"silent":[12,14],"wasl":[31,32]},
-"19": {"ghunnah":[37,40,51,55],"idgham":[4,9,63,68],"madd":[40,42,61,62,70,71],"silent":[18,20],"wasl":[27,28]},
-"20": {"ghunnah":[4,7,39,43],"madd":[49,50]},
-"21": {"idgham":[4,9],"madd":[39,40],"silent":[21,23],"wasl":[30,31]},
-"22": {"ghunnah":[20,23],"idgham":[42,47],"madd":[15,17,26,28,32,34,53,54],"qalqalah":[47,49]},
-"23": {"ghunnah":[30,33],"idgham":[35,40],"madd":[47,48]},
-"24": {"ghunnah":[30,33,40,43],"idgham":[42,47],"madd":[53,54],"wasl":[2,3,10,11]},
-"25": {"ghunnah":[17,21,21,24],"idgham":[26,30],"madd":[24,25,34,35],"silent":[12,14]},
-"26": {"ghunnah":[18,22],"idgham":[8,12],"madd":[24,25]},
-"27": {"ghunnah":[9,13],"madd":[29,30,34,35],"silent":[17,19]},
-"28": {"madd":[4,5,22,23,42,43]},
-"29": {"ghunnah":[65,68],"idgham":[25,26],"madd":[31,33,70,71],"silent":[60,62],"wasl":[24,25,38,39]},
-"30": {"madd":[24,26,33,35,64,65],"qalqalah":[6,8],"wasl":[46,47,57,58]},
-"31": {"ghunnah":[2,6,17,20],"idgham":[36,42],"madd":[22,23,56,57],"wasl":[45,46]},
-"32": {"madd":[18,19,49,50,54,55],"wasl":[9,10,44,45]},
-"33": {"idgham":[14,19,51,58],"madd":[11,12,30,31,48,50,60,61],"silent":[52,54],"wasl":[22,23]},
-"34": {"ghunnah":[2,5],"madd":[8,10,14,16,28,29]},
-"35": {"ghunnah":[57,60],"madd":[62,63],"wasl":[29,30]},
-"36": {"ghunnah":[29,33,33,36],"madd":[18,20,24,26,41,42,46,47],"silent":[7,9]},
-"37": {"ghunnah":[48,52,79,82],"idgham":[32,36],"madd":[71,72,104,105],"qalqalah":[52,54,98,100],"silent":[93,95],"wasl":[36,37]},
-"38": {"idgham":[17,18],"madd":[23,24,26,27,62,63,67,68],"qalqalah":[10,12],"wasl":[16,17,32,33]},
-"39": {"ghunnah":[45,48],"madd":[12,13,17,19,42,43,74,75],"qalqalah":[8,10],"wasl":[29,30]},
-"40": {"ghunnah":[2,5],"madd":[28,29,44,45],"qalqalah":[38,40],"wasl":[13,14]},
-"41": {"ghunnah":[37,42,62,65],"idgham":[29,34,46,51],"madd":[67,68]},
-"42": {"ghunnah":[29,32],"idgham":[9,14,53,54],"madd":[34,35,59,60],"wasl":[19,20,41,42,52,53]},
-"43": {"ghunnah":[2,5],"idgham":[16,17],"madd":[23,24],"wasl":[15,16]},
-"44": {"madd":[15,16],"wasl":[8,9]},
-"45": {"madd":[31,32],"wasl":[2,3,24,25]},
-"46": {"madd":[16,17],"wasl":[9,10]},
-"47": {"madd":[32,34,44,45],"wasl":[10,11,37,38]},
-"48": {"ghunnah":[2,5],"madd":[30,31,52,53],"silent":[12,14],"wasl":[45,46]},
-"49": {"ghunnah":[7,10,15,18],"madd":[37,38],"qalqalah":[2,4],"wasl":[19,20,30,31]},
-"50": {"ghunnah":[2,5,19,22,22,26],"madd":[8,9,28,29,38,39]},
-"51": {"ghunnah":[2,5],"madd":[36,37],"wasl":[6,7]},
-"52": {"ghunnah":[6,9],"idgham":[11,15],"madd":[9,10,19,20]},
-"53": {"ghunnah":[14,18,18,21],"idgham":[22,26,37,42],"madd":[46,47,51,52],"qalqalah":[32,34]},
-"54": {"ghunnah":[24,28],"madd":[4,5,21,22,36,37],"qalqalah":[17,19]},
-"55": {"madd":[27,28,42,43],"qalqalah":[2,4]},
-"56": {"madd":[69,70,90,91],"wasl":[22,23,39,40,51,52,83,84]},
-"57": {"idgham":[5,11,11,16],"madd":[24,25,52,53],"wasl":[35,36,45,46]},
-"58": {"ghunnah":[4,7],"madd":[20,21,59,60]},
-"59": {"ghunnah":[14,17],"idgham":[19,24],"madd":[32,33],"qalqalah":[9,11],"wasl":[2,3]}
+"1": {"madd_6":[40,42]},
+"2": {"madd_2":[9,10],"madd_246":[20,21],"hamzat_wasl":[2,3,13,14]},
+"3": {"ghunnah":[2,5,49,52,56,59],"ikhfa":[10,13,63,66],"idghaam_ghunnah":[32,37],"madd_2":[17,18,39,40],"madd_246":[68,69],"madd_munfasil":[5,7]},
+"4": {"madd_246":[33,34]},
+"5": {"ghunnah":[26,29,33,36],"ikhfa":[16,19],"idghaam_ghunnah":[5,11],"madd_246":[46,47],"madd_munfasil":[21,23]},
+"6": {"ghunnah":[25,28],"idghaam_ghunnah":[7,12],"idghaam_no_ghunnah":[12,17],"lam_shamsiyyah":[38,39],"madd_2":[30,31],"madd_246":[55,56],"hamzat_wasl":[37,38,48,49]},
+"7": {"ikhfa":[53,57,57,60],"idghaam_shafawi":[60,65],"lam_shamsiyyah":[7,8],"madd_2":[13,14,16,17],"madd_246":[70,71],"madd_munfasil":[48,50],"hamzat_wasl":[6,7,22,23]},
+"8": {"madd_2":[9,10,31,32],"madd_246":[85,86],"madd_munfasil":[2,4],"madd_muttasil":[66,68],"hamzat_wasl":[75,76]},
+"9": {"idghaam_ghunnah":[18,22],"madd_246":[28,29]},
+"10": {"idghaam_ghunnah":[47,52],"lam_shamsiyyah":[28,29],"madd_246":[54,55],"madd_muttasil":[34,36],"qalqalah":[9,11],"hamzat_wasl":[2,3,27,28]},
+"11": {"ghunnah":[10,13],"lam_shamsiyyah":[9,10],"madd_2":[19,20],"madd_246":[36,37],"hamzat_wasl":[8,9]},
+"12": {"ghunnah":[20,23,38,41],"madd_246":[51,52],"hamzat_wasl":[10,11,25,26]},
+"13": {"ghunnah":[2,5],"idghaam_ghunnah":[51,56],"lam_shamsiyyah":[16,17],"madd_246":[58,59],"madd_muttasil":[36,38],"qalqalah":[31,33],"hamzat_wasl":[15,16]},
+"14": {"ghunnah":[2,5],"idghaam_ghunnah":[44,49],"madd_246":[53,54],"qalqalah":[49,51],"silent":[15,17,33,35]},
+"15": {"ghunnah":[2,5,40,43],"madd_246":[56,57],"madd_muttasil":[50,52],"silent":[15,17],"hamzat_wasl":[18,19]},
+"16": {"ghunnah":[43,46],"ikhfa":[50,53],"madd_246":[57,58],"madd_munfasil":[37,40],"qalqalah":[9,11,21,23,33,35],"hamzat_wasl":[16,17,28,29]},
+"17": {"ghunnah":[13,16],"ikhfa":[66,70],"madd_246":[72,73],"madd_muttasil":[51,53],"qalqalah":[6,8,20,22]},
+"18": {"ghunnah":[41,44],"madd_246":[65,66],"madd_munfasil":[10,12],"silent":[12,14],"hamzat_wasl":[31,32]},
+"19": {"ghunnah":[37,40],"ikhfa_shafawi":[51,55],"idghaam_ghunnah":[63,68],"idghaam_no_ghunnah":[4,9],"madd_2":[61,62],"madd_246":[70,71],"madd_munfasil":[40,42],"silent":[18,20],"hamzat_wasl":[27,28]},
+"20": {"ghunnah":[4,7],"ikhfa":[39,43],"madd_246":[49,50]},
+"21": {"idghaam_no_ghunnah":[4,9],"madd_246":[39,40],"silent":[21,23],"hamzat_wasl":[30,31]},
+"22": {"ghunnah":[20,23],"idghaam_ghunnah":[42,47],"madd_246":[53,54],"madd_munfasil":[15,17],"madd_muttasil":[26,28,32,34],"qalqalah":[47,49]},
+"23": {"ghunnah":[30,33],"idghaam_shafawi":[35,40],"madd_246":[47,48]},
+"24": {"ghunnah":[30,33],"ikhfa":[40,43],"idghaam_ghunnah":[42,47],"madd_246":[53,54],"hamzat_wasl":[2,3,10,11]},
+"25": {"ghunnah":[21,24],"ikhfa":[17,21],"idghaam_ghunnah":[26,30],"madd_2":[24,25],"madd_246":[34,35],"silent":[12,14]},
+"26": {"ikhfa":[18,22],"idghaam_ghunnah":[8,12],"madd_246":[24,25]},
+"27": {"ikhfa":[9,13],"madd_2":[29,30],"madd_246":[34,35],"silent":[17,19]},
+"28": {"madd_2":[4,5,22,23],"madd_246":[42,43]},
+"29": {"ikhfa":[65,68],"lam_shamsiyyah":[25,26],"madd_246":[70,71],"madd_muttasil":[31,33],"silent":[60,62],"hamzat_wasl":[24,25,38,39]},
+"30": {"madd_246":[64,65],"madd_munfasil":[24,26],"madd_muttasil":[33,35],"qalqalah":[6,8],"hamzat_wasl":[46,47,57,58]},
+"31": {"ghunnah":[17,20],"ikhfa":[2,6],"idghaam_ghunnah":[36,42],"madd_2":[22,23],"madd_246":[56,57],"hamzat_wasl":[45,46]},
+"32": {"madd_2":[18,19,49,50],"madd_246":[54,55],"hamzat_wasl":[9,10,44,45]},
+"33": {"idghaam_ghunnah":[51,58],"idghaam_shafawi":[14,19],"madd_2":[11,12,30,31],"madd_246":[60,61],"madd_muttasil":[48,50],"silent":[52,54],"hamzat_wasl":[22,23]},
+"34": {"ghunnah":[2,5],"madd_246":[28,29],"madd_muttasil":[8,10,14,16]},
+"35": {"ikhfa":[57,60],"madd_246":[62,63],"hamzat_wasl":[29,30]},
+"36": {"ikhfa":[29,33,33,36],"madd_2":[41,42],"madd_246":[46,47],"madd_munfasil":[24,26],"madd_muttasil":[18,20],"silent":[7,9]},
+"37": {"ghunnah":[79,82],"ikhfa":[48,52],"idghaam_ghunnah":[32,36],"madd_2":[71,72],"madd_246":[104,105],"qalqalah":[52,54,98,100],"silent":[93,95],"hamzat_wasl":[36,37]},
+"38": {"lam_shamsiyyah":[17,18],"madd_2":[23,24,26,27,62,63],"madd_246":[67,68],"qalqalah":[10,12],"hamzat_wasl":[16,17,32,33]},
+"39": {"ghunnah":[45,48],"madd_2":[12,13,42,43],"madd_246":[74,75],"madd_munfasil":[17,19],"qalqalah":[8,10],"hamzat_wasl":[29,30]},
+"40": {"ghunnah":[2,5],"madd_2":[28,29],"madd_246":[44,45],"qalqalah":[38,40],"hamzat_wasl":[13,14]},
+"41": {"ikhfa":[37,42,62,65],"idghaam_ghunnah":[29,34,46,51],"madd_246":[67,68]},
+"42": {"ghunnah":[29,32],"idghaam_no_ghunnah":[9,14],"lam_shamsiyyah":[53,54],"madd_2":[34,35],"madd_246":[59,60],"hamzat_wasl":[19,20,41,42,52,53]},
+"43": {"ghunnah":[2,5],"lam_shamsiyyah":[16,17],"madd_246":[23,24],"hamzat_wasl":[15,16]},
+"44": {"madd_246":[15,16],"hamzat_wasl":[8,9]},
+"45": {"madd_246":[31,32],"hamzat_wasl":[2,3,24,25]},
+"46": {"madd_246":[16,17],"hamzat_wasl":[9,10]},
+"47": {"madd_246":[44,45],"madd_muttasil":[32,34],"hamzat_wasl":[10,11,37,38]},
+"48": {"ghunnah":[2,5],"madd_2":[30,31],"madd_246":[52,53],"silent":[12,14],"hamzat_wasl":[45,46]},
+"49": {"ghunnah":[7,10],"ikhfa":[15,18],"madd_246":[37,38],"qalqalah":[2,4],"hamzat_wasl":[19,20,30,31]},
+"50": {"ghunnah":[2,5],"ikhfa":[19,22],"ikhfa_shafawi":[22,26],"madd_2":[8,9,28,29],"madd_246":[38,39]},
+"51": {"ghunnah":[2,5],"madd_246":[36,37],"hamzat_wasl":[6,7]},
+"52": {"ghunnah":[6,9],"idghaam_ghunnah":[11,15],"madd_2":[9,10],"madd_246":[19,20]},
+"53": {"ikhfa":[14,18,18,21],"idghaam_ghunnah":[22,26,37,42],"madd_2":[46,47],"madd_246":[51,52],"qalqalah":[32,34]},
+"54": {"ikhfa_shafawi":[24,28],"madd_2":[4,5,21,22],"madd_246":[36,37],"qalqalah":[17,19]},
+"55": {"madd_2":[27,28],"madd_246":[42,43],"qalqalah":[2,4]},
+"56": {"madd_2":[69,70],"madd_246":[90,91],"hamzat_wasl":[22,23,39,40,51,52,83,84]},
+"57": {"idghaam_ghunnah":[5,11],"idghaam_no_ghunnah":[11,16],"madd_2":[24,25],"madd_246":[52,53],"hamzat_wasl":[35,36,45,46]},
+"58": {"ghunnah":[4,7],"madd_2":[20,21],"madd_246":[59,60]},
+"59": {"ghunnah":[14,17],"idghaam_shafawi":[19,24],"madd_246":[32,33],"qalqalah":[9,11],"hamzat_wasl":[2,3]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/45.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/45.json
index b0e9e43..c3a5373 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/45.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/45.json
@@ -1,39 +1,39 @@
{
-"1": {"madd-lazim":[40,42]},
-"2": {"ghunnah":[2,5],"madd":[16,17,51,52],"wasl":[9,10,25,26,33,34,44,45]},
-"3": {"ghunnah":[2,5],"idgham":[11,12,45,50],"madd":[17,18,20,21,43,44,60,61],"wasl":[10,11,26,27]},
-"4": {"ghunnah":[33,37],"idgham":[52,57,62,66],"madd":[50,51,71,72],"madd-lazim":[37,39]},
-"5": {"ghunnah":[26,29,44,47,85,89],"idgham":[25,26,64,65,77,82,142,143,159,164,169,173],"madd":[9,10,39,41,70,72,148,149,157,158,179,180],"wasl":[2,3,13,14,24,25,50,51,63,64,102,103,141,142]},
-"6": {"ghunnah":[71,75],"madd":[12,13,96,97,101,102,111,112],"wasl":[16,17,46,47,81,82]},
-"7": {"idgham":[5,10],"madd":[29,30]},
-"8": {"ghunnah":[46,49,69,74],"idgham":[76,81],"madd":[14,15,122,123],"wasl":[18,19]},
-"9": {"idgham":[87,92],"madd":[25,26,67,69,94,95],"silent":[63,65],"wasl":[41,42]},
-"10": {"ghunnah":[22,25,98,102],"idgham":[3,7,48,53,71,76],"madd":[9,11,122,124,148,149],"silent":[62,64,93,95],"wasl":[84,85,106,107]},
-"11": {"idgham":[10,15,70,75,75,80],"madd":[2,3,43,44,89,90],"qalqalah":[80,82],"silent":[32,34],"wasl":[15,16]},
-"12": {"ghunnah":[98,102],"madd":[78,79,108,109,132,133],"qalqalah":[45,47,86,88],"silent":[93,95],"wasl":[8,9,31,32,52,53]},
-"13": {"ghunnah":[78,81],"idgham":[14,19,26,27,65,71,103,108,113,117],"madd":[32,33,35,36,88,89,101,102,126,127],"wasl":[25,26,49,50]},
-"14": {"ghunnah":[97,102],"madd":[124,125],"qalqalah":[85,87],"silent":[24,26,36,38,113,115],"wasl":[73,74]},
-"15": {"ghunnah":[18,23,65,68],"madd":[14,15,33,34,46,48,94,95]},
-"16": {"ghunnah":[68,71],"idgham":[67,68,92,97,101,102],"madd":[24,26,33,35,48,49,89,90,110,111,125,126,142,143,147,148],"qalqalah":[6,8,85,87],"wasl":[41,42,54,55,66,67,100,101,137,138]},
-"17": {"ghunnah":[14,18,73,76,112,117,129,132],"idgham":[25,30],"madd":[11,12,23,24,58,60,88,90,174,175,212,213],"qalqalah":[143,145],"silent":[60,62,193,195],"wasl":[33,34,49,50,97,98,167,168]},
-"18": {"ghunnah":[2,5],"idgham":[33,38],"madd":[14,15,87,89,114,115],"wasl":[41,42,53,54,92,93]},
-"19": {"ghunnah":[2,5,26,29,56,59],"idgham":[12,16,49,54,61,62,103,107],"madd":[65,66,93,95,133,134],"silent":[21,23],"wasl":[35,36,60,61,107,108,123,124]},
-"20": {"ghunnah":[21,24],"idgham":[20,21,33,38,45,50,55,59],"madd":[2,3,11,13,64,65]},
-"21": {"idgham":[36,37,52,57,104,105,124,129],"madd":[108,109,113,114,121,123,155,157,172,173],"qalqalah":[23,25,57,59],"silent":[32,34,88,90,100,102],"wasl":[12,13,22,23,35,36,70,71,103,104]},
-"22": {"ghunnah":[78,82],"idgham":[18,19],"madd":[24,25,27,28,115,116],"qalqalah":[60,62],"wasl":[9,10,17,18,33,34,45,46]},
-"23": {"ghunnah":[153,157,174,177],"idgham":[79,83,159,163],"madd":[31,32,36,37,43,44,105,106,117,118,143,144,149,150,208,209],"wasl":[18,19,59,60,183,184]},
-"24": {"ghunnah":[113,117,158,161],"idgham":[39,40,94,95],"madd":[83,85,119,120,161,162],"silent":[8,10],"wasl":[38,39,93,94]},
-"25": {"ghunnah":[84,88,123,127,127,130],"idgham":[49,54],"madd":[33,34,47,48,79,81,112,114,118,120,135,136,140,141],"silent":[92,94,101,103],"wasl":[95,96]},
-"26": {"ghunnah":[27,30,45,48,113,116,128,131],"idgham":[127,128],"madd":[83,84,110,111,147,148],"qalqalah":[51,53],"wasl":[5,6,76,77,126,127]},
-"27": {"idgham":[18,19,61,62,80,84],"madd":[24,25,27,28,102,103],"qalqalah":[96,98],"wasl":[17,18,33,34,60,61,91,92]},
-"28": {"ghunnah":[17,20,21,25,31,35,41,44,45,49,102,105],"madd":[53,56,68,69,116,117],"qalqalah":[49,51,87,89],"wasl":[75,76]},
-"29": {"ghunnah":[20,23,34,38,49,52,56,59,67,70,79,82],"madd":[2,3,11,12,93,94],"wasl":[38,39]},
-"30": {"ghunnah":[4,7],"idgham":[43,44],"madd":[47,48,52,53,95,96,99,100,127,128],"qalqalah":[60,62],"silent":[27,29,39,41],"wasl":[9,10,42,43,110,111,120,121]},
-"31": {"ghunnah":[4,7,98,101],"idgham":[109,115],"madd":[25,27,51,52,121,122],"qalqalah":[115,117],"silent":[27,29],"wasl":[9,10,78,79]},
-"32": {"ghunnah":[16,19,117,120,130,133],"idgham":[39,43,44,45,78,83,98,99,110,115,132,137],"madd":[162,163],"qalqalah":[87,89],"wasl":[27,28,43,44,97,98]},
-"33": {"idgham":[53,58],"madd":[73,74,87,88],"silent":[38,40,66,68]},
-"34": {"ghunnah":[20,23,90,93],"idgham":[89,90,107,112,112,117],"madd":[24,25,50,52,68,69,82,83,117,118,122,123],"wasl":[8,9,88,89]},
-"35": {"ghunnah":[7,11,13,16],"idgham":[56,61,86,87],"madd":[2,3,39,40,81,82,155,156],"silent":[80,81],"wasl":[21,22,43,44,73,74,85,86,98,99]},
-"36": {"idgham":[27,28],"madd":[33,34,36,37,69,70,74,75],"wasl":[10,11,26,27,48,49,64,65]},
-"37": {"idgham":[28,29],"madd":[18,20,34,35,37,38,78,79],"qalqalah":[12,14],"wasl":[7,8,27,28,43,44,60,61,71,72]}
+"1": {"madd_6":[40,42]},
+"2": {"ikhfa":[2,5],"madd_2":[16,17],"madd_246":[51,52],"hamzat_wasl":[9,10,25,26,33,34,44,45]},
+"3": {"ghunnah":[2,5],"idghaam_no_ghunnah":[45,50],"lam_shamsiyyah":[11,12],"madd_2":[17,18,20,21,43,44],"madd_246":[60,61],"hamzat_wasl":[10,11,26,27]},
+"4": {"ikhfa":[33,37],"idghaam_ghunnah":[62,66],"idghaam_no_ghunnah":[52,57],"madd_2":[50,51],"madd_246":[71,72],"madd_6":[37,39]},
+"5": {"ghunnah":[26,29],"ikhfa":[44,47,85,89],"idghaam_ghunnah":[169,173],"idghaam_no_ghunnah":[77,82,159,164],"lam_shamsiyyah":[25,26,64,65,142,143],"madd_2":[9,10,148,149,157,158],"madd_246":[179,180],"madd_munfasil":[39,41],"madd_muttasil":[70,72],"hamzat_wasl":[2,3,13,14,24,25,50,51,63,64,102,103,141,142]},
+"6": {"iqlab":[71,75],"madd_2":[12,13,96,97,101,102],"madd_246":[111,112],"hamzat_wasl":[16,17,46,47,81,82]},
+"7": {"idghaam_no_ghunnah":[5,10],"madd_246":[29,30]},
+"8": {"ghunnah":[46,49],"ikhfa":[69,74],"idghaam_no_ghunnah":[76,81],"madd_2":[14,15],"madd_246":[122,123],"hamzat_wasl":[18,19]},
+"9": {"idghaam_ghunnah":[87,92],"madd_2":[25,26],"madd_246":[94,95],"madd_muttasil":[67,69],"silent":[63,65],"hamzat_wasl":[41,42]},
+"10": {"ghunnah":[22,25],"ikhfa":[98,102],"idghaam_ghunnah":[3,7,71,76],"idghaam_shafawi":[48,53],"madd_246":[148,149],"madd_muttasil":[9,11,122,124],"silent":[62,64,93,95],"hamzat_wasl":[84,85,106,107]},
+"11": {"idghaam_ghunnah":[10,15,70,75],"idghaam_no_ghunnah":[75,80],"madd_2":[2,3,43,44],"madd_246":[89,90],"qalqalah":[80,82],"silent":[32,34],"hamzat_wasl":[15,16]},
+"12": {"ikhfa":[98,102],"madd_2":[78,79,108,109],"madd_246":[132,133],"qalqalah":[45,47,86,88],"silent":[93,95],"hamzat_wasl":[8,9,31,32,52,53]},
+"13": {"ghunnah":[78,81],"idghaam_ghunnah":[65,71,113,117],"idghaam_no_ghunnah":[103,108],"idghaam_shafawi":[14,19],"lam_shamsiyyah":[26,27],"madd_2":[32,33,35,36,88,89,101,102],"madd_246":[126,127],"hamzat_wasl":[25,26,49,50]},
+"14": {"iqlab":[97,102],"madd_246":[124,125],"qalqalah":[85,87],"silent":[24,26,36,38,113,115],"hamzat_wasl":[73,74]},
+"15": {"ghunnah":[65,68],"ikhfa":[18,23],"madd_2":[14,15,33,34],"madd_246":[94,95],"madd_muttasil":[46,48]},
+"16": {"ghunnah":[68,71],"idghaam_shafawi":[92,97],"lam_shamsiyyah":[67,68,101,102],"madd_2":[48,49,89,90,110,111,125,126,142,143],"madd_246":[147,148],"madd_munfasil":[24,26],"madd_muttasil":[33,35],"qalqalah":[6,8,85,87],"hamzat_wasl":[41,42,54,55,66,67,100,101,137,138]},
+"17": {"ghunnah":[129,132],"ikhfa_shafawi":[14,18],"iqlab":[73,76,112,117],"idghaam_ghunnah":[25,30],"madd_2":[11,12,23,24,174,175],"madd_246":[212,213],"madd_munfasil":[58,60],"madd_muttasil":[88,90],"qalqalah":[143,145],"silent":[60,62,193,195],"hamzat_wasl":[33,34,49,50,97,98,167,168]},
+"18": {"ghunnah":[2,5],"idghaam_ghunnah":[33,38],"madd_2":[14,15],"madd_246":[114,115],"madd_muttasil":[87,89],"hamzat_wasl":[41,42,53,54,92,93]},
+"19": {"ghunnah":[2,5,56,59],"ikhfa":[26,29],"idghaam_ghunnah":[12,16,49,54,103,107],"lam_shamsiyyah":[61,62],"madd_2":[65,66],"madd_246":[133,134],"madd_muttasil":[93,95],"silent":[21,23],"hamzat_wasl":[35,36,60,61,107,108,123,124]},
+"20": {"ghunnah":[21,24],"idghaam_ghunnah":[33,38,55,59],"idghaam_no_ghunnah":[45,50],"lam_shamsiyyah":[20,21],"madd_2":[2,3],"madd_246":[64,65],"madd_muttasil":[11,13]},
+"21": {"idghaam_ghunnah":[52,57,124,129],"lam_shamsiyyah":[36,37,104,105],"madd_2":[108,109,113,114],"madd_246":[172,173],"madd_muttasil":[121,123,155,157],"qalqalah":[23,25,57,59],"silent":[32,34,88,90,100,102],"hamzat_wasl":[12,13,22,23,35,36,70,71,103,104]},
+"22": {"iqlab":[78,82],"lam_shamsiyyah":[18,19],"madd_2":[24,25,27,28],"madd_246":[115,116],"qalqalah":[60,62],"hamzat_wasl":[9,10,17,18,33,34,45,46]},
+"23": {"ikhfa":[153,157],"iqlab":[174,177],"idghaam_ghunnah":[79,83,159,163],"madd_2":[31,32,36,37,43,44,105,106,117,118,143,144,149,150],"madd_246":[208,209],"hamzat_wasl":[18,19,59,60,183,184]},
+"24": {"ghunnah":[158,161],"ikhfa_shafawi":[113,117],"lam_shamsiyyah":[39,40,94,95],"madd_2":[119,120],"madd_246":[161,162],"madd_munfasil":[83,85],"silent":[8,10],"hamzat_wasl":[38,39,93,94]},
+"25": {"ikhfa":[84,88,123,127,127,130],"idghaam_ghunnah":[49,54],"madd_2":[33,34,47,48,135,136],"madd_246":[140,141],"madd_munfasil":[79,81,118,120],"madd_muttasil":[112,114],"silent":[92,94,101,103],"hamzat_wasl":[95,96]},
+"26": {"ghunnah":[27,30,45,48,113,116,128,131],"lam_shamsiyyah":[127,128],"madd_2":[83,84,110,111],"madd_246":[147,148],"qalqalah":[51,53],"hamzat_wasl":[5,6,76,77,126,127]},
+"27": {"idghaam_ghunnah":[80,84],"lam_shamsiyyah":[18,19,61,62],"madd_2":[24,25,27,28],"madd_246":[102,103],"qalqalah":[96,98],"hamzat_wasl":[17,18,33,34,60,61,91,92]},
+"28": {"ghunnah":[17,20,41,44],"ikhfa":[21,25,31,35,45,49,102,105],"madd_2":[68,69],"madd_246":[116,117],"madd_munfasil":[53,56],"qalqalah":[49,51,87,89],"hamzat_wasl":[75,76]},
+"29": {"ghunnah":[49,52,56,59],"ikhfa":[20,23,67,70,79,82],"ikhfa_shafawi":[34,38],"madd_2":[2,3,11,12],"madd_246":[93,94],"hamzat_wasl":[38,39]},
+"30": {"ghunnah":[4,7],"lam_shamsiyyah":[43,44],"madd_2":[47,48,52,53,95,96,99,100],"madd_246":[127,128],"qalqalah":[60,62],"silent":[27,29,39,41],"hamzat_wasl":[9,10,42,43,110,111,120,121]},
+"31": {"ghunnah":[4,7],"ikhfa":[98,101],"idghaam_ghunnah":[109,115],"madd_2":[51,52],"madd_246":[121,122],"madd_munfasil":[25,27],"qalqalah":[115,117],"silent":[27,29],"hamzat_wasl":[9,10,78,79]},
+"32": {"ghunnah":[16,19,117,120,130,133],"idghaam_ghunnah":[39,43,110,115,132,137],"idghaam_shafawi":[78,83],"lam_shamsiyyah":[44,45,98,99],"madd_246":[162,163],"qalqalah":[87,89],"hamzat_wasl":[27,28,43,44,97,98]},
+"33": {"idghaam_shafawi":[53,58],"madd_2":[73,74],"madd_246":[87,88],"silent":[38,40,66,68]},
+"34": {"ghunnah":[90,93],"ikhfa":[20,23],"idghaam_ghunnah":[112,117],"idghaam_shafawi":[107,112],"lam_shamsiyyah":[89,90],"madd_2":[24,25,68,69,82,83,117,118],"madd_246":[122,123],"madd_muttasil":[50,52],"hamzat_wasl":[8,9,88,89]},
+"35": {"ghunnah":[13,16],"ikhfa_shafawi":[7,11],"idghaam_ghunnah":[56,61],"lam_shamsiyyah":[86,87],"madd_2":[2,3,39,40,81,82],"madd_246":[155,156],"silent":[80,81],"hamzat_wasl":[21,22,43,44,73,74,85,86,98,99]},
+"36": {"lam_shamsiyyah":[27,28],"madd_2":[33,34,36,37,69,70],"madd_246":[74,75],"hamzat_wasl":[10,11,26,27,48,49,64,65]},
+"37": {"lam_shamsiyyah":[28,29],"madd_2":[34,35,37,38],"madd_246":[78,79],"madd_muttasil":[18,20],"qalqalah":[12,14],"hamzat_wasl":[7,8,27,28,43,44,60,61,71,72]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/46.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/46.json
index e72b284..75d8e1d 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/46.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/46.json
@@ -1,37 +1,37 @@
{
-"1": {"madd-lazim":[40,42]},
-"2": {"ghunnah":[2,5],"madd":[16,17,51,52],"wasl":[9,10,25,26,33,34,44,45]},
-"3": {"ghunnah":[91,94,120,123,128,131],"idgham":[15,16,84,89,93,98],"madd":[21,22,24,25,56,58,123,125,145,146],"qalqalah":[8,10],"silent":[115,117,134,136],"wasl":[14,15,30,31,68,69,98,99]},
-"4": {"ghunnah":[34,38,108,112,151,155,198,202,202,205],"idgham":[15,20,115,116,146,151,181,186],"madd":[121,122,124,125,144,145,162,163,165,167,177,178,210,211,215,216],"qalqalah":[24,26,155,157],"silent":[73,75],"wasl":[42,43,81,82,114,115,128,129]},
-"5": {"ghunnah":[17,20,34,38,114,118],"idgham":[20,24,52,57],"madd":[75,77,99,100,120,122,131,132,136,137],"qalqalah":[24,26],"silent":[29,31],"wasl":[42,43,92,93]},
-"6": {"ghunnah":[17,20],"idgham":[16,17,49,53],"madd":[46,48,80,81,85,86],"silent":[30,32,59,61],"wasl":[15,16]},
-"7": {"ghunnah":[49,53,89,92],"idgham":[117,122],"madd":[33,34,47,48,96,98,107,108,124,125],"silent":[74,76],"wasl":[57,58]},
-"8": {"ghunnah":[153,158],"idgham":[197,198],"madd":[24,25,51,52,145,146,203,204],"wasl":[16,17,38,39,80,81,185,186,196,197]},
-"9": {"ghunnah":[11,14],"idgham":[20,26,30,31,154,159],"madd":[43,45,115,118,131,133,161,162],"qalqalah":[17,19,48,50],"wasl":[29,30]},
-"10": {"ghunnah":[20,24,35,38,57,61,86,89,157,160],"idgham":[80,85,192,193],"madd":[63,64,92,94,101,103,124,125,196,197,201,202],"wasl":[39,40,139,140,161,162,181,182,191,192]},
-"11": {"ghunnah":[153,157],"idgham":[66,72],"madd":[83,85,123,124,142,143,145,147,159,160],"silent":[25,27,47,49,116,118],"wasl":[8,9]},
-"12": {"ghunnah":[4,8,107,110],"idgham":[39,44,51,55,68,73,79,84,99,105],"madd":[14,15,20,21,29,32,57,58,66,67,156,157],"qalqalah":[8,10],"silent":[130,132],"wasl":[113,114]},
-"13": {"ghunnah":[2,5,44,47],"madd":[55,56,105,106],"silent":[22,24,59,61],"wasl":[6,7,34,35,48,49]},
-"14": {"ghunnah":[28,31,59,63],"madd":[6,8,19,20,36,37,56,58,85,86],"silent":[2,4,74,76],"wasl":[23,24]},
-"15": {"ghunnah":[18,21,63,66,202,206,324,329,372,375,397,400],"idgham":[75,80,96,101],"madd":[21,22,29,30,45,46,68,69,109,110,117,118,122,123,128,129,148,151,174,175,226,228,260,262,293,294,320,321,334,335,367,369,418,419],"qalqalah":[379,381],"wasl":[13,14,254,255,407,408]},
-"16": {"ghunnah":[83,87,121,124],"idgham":[135,136],"madd":[6,8,103,105,112,113,168,169],"qalqalah":[139,141],"silent":[2,4,64,66,158,160],"wasl":[13,14,116,117,134,135,144,145]},
-"17": {"ghunnah":[103,107,163,166,186,190],"idgham":[34,39],"madd":[20,21,43,45,59,61,204,205,207,209,215,217,222,223,239,240],"qalqalah":[80,82,107,109],"wasl":[2,3,90,91,136,137,174,175,229,230]},
-"18": {"ghunnah":[60,64,76,80,99,102,110,113,116,119],"idgham":[86,91],"madd":[6,8,52,54,135,136,140,141],"qalqalah":[64,66,80,82],"silent":[2,4,130,132],"wasl":[13,14,40,41,94,95,105,106]},
-"19": {"ghunnah":[8,12,23,26],"idgham":[18,23],"madd":[16,17,62,63,89,90],"silent":[35,37]},
-"20": {"ghunnah":[46,49,123,127,179,182,243,246],"idgham":[45,46,98,99],"madd":[73,74,257,258],"qalqalah":[59,61,145,147],"silent":[35,37],"wasl":[18,19,44,45,97,98,110,111,133,134,162,163,205,206,224,225]},
-"21": {"ghunnah":[29,32,76,79,87,90,160,163],"idgham":[75,76],"madd":[43,44,120,122,138,140,163,165,204,205],"qalqalah":[64,66],"silent":[140,142],"wasl":[2,3,47,48,74,75,150,151]},
-"22": {"ghunnah":[83,87,87,90],"idgham":[97,98],"madd":[5,7,78,80,101,102,106,107],"silent":[7,9],"wasl":[96,97]},
-"23": {"ghunnah":[8,11,27,30,84,87,106,111],"idgham":[52,57],"madd":[57,59,75,76,81,82,87,89,95,96,117,118],"qalqalah":[111,113],"wasl":[15,16,31,32]},
-"24": {"ghunnah":[4,7,120,124,132,136],"idgham":[24,30,78,83],"madd":[67,68,126,127,153,154],"qalqalah":[34,36],"silent":[62,64],"wasl":[107,108]},
-"25": {"ghunnah":[4,7,21,25],"madd":[64,67,79,80,93,94,128,129],"qalqalah":[101,103,122,124],"silent":[53,55],"wasl":[107,108,117,118]},
-"26": {"ghunnah":[14,17,41,44,108,112,192,196],"idgham":[33,38,80,85,93,98,187,192,259,264],"madd":[17,18,28,30,44,45,91,92,114,116,150,152,159,160,171,173,235,236,279,280,293,294],"qalqalah":[6,8,87,89,155,157,217,219],"silent":[212,214,272,274],"wasl":[239,240]},
-"27": {"idgham":[33,38],"madd":[72,73,96,97],"qalqalah":[6,8],"wasl":[41,42,64,65]},
-"28": {"ghunnah":[45,49,80,84],"madd":[110,111,150,151],"silent":[40,42,94,96,139,141],"wasl":[21,22,31,32,53,54]},
-"29": {"ghunnah":[46,49,81,84,108,111,121,124,163,166],"idgham":[32,38,158,163],"madd":[15,17,101,103,168,169],"silent":[103,105,114,116,140,142],"wasl":[41,42,64,65]},
-"30": {"ghunnah":[25,28,51,54,60,63],"idgham":[85,91,150,155],"madd":[11,12,20,22,44,45,117,119,161,162],"silent":[6,8],"wasl":[126,127]},
-"31": {"ghunnah":[78,82],"idgham":[73,78,102,107],"madd":[2,3,11,13,58,59,122,123],"silent":[22,24,51,53],"wasl":[33,34]},
-"32": {"ghunnah":[52,56,85,89],"idgham":[4,9,133,138],"madd":[81,82,94,96,105,107,116,118,131,132,140,141],"qalqalah":[15,17],"silent":[112,114],"wasl":[26,27,58,59]},
-"33": {"ghunnah":[20,23,97,100,154,157,179,183],"idgham":[48,49,121,125],"madd":[54,55,57,58,105,106,115,118,148,151,159,160,185,186],"silent":[15,17],"wasl":[24,25,32,33,47,48,63,64,132,133]},
-"34": {"ghunnah":[46,49,143,146],"idgham":[45,46],"madd":[64,65,157,158],"silent":[35,37,86,88,121,123],"wasl":[18,19,44,45,71,72,124,125]},
-"35": {"ghunnah":[88,91,172,176,181,185],"idgham":[49,50,158,163,163,168],"madd":[140,142,179,180,221,222,226,227],"silent":[25,27,30,32,142,144],"wasl":[2,3,33,34,48,49,206,207,216,217]}
+"1": {"madd_6":[40,42]},
+"2": {"ikhfa":[2,5],"madd_2":[16,17],"madd_246":[51,52],"hamzat_wasl":[9,10,25,26,33,34,44,45]},
+"3": {"ghunnah":[91,94,120,123],"ikhfa":[128,131],"idghaam_ghunnah":[84,89,93,98],"lam_shamsiyyah":[15,16],"madd_2":[21,22,24,25],"madd_246":[145,146],"madd_munfasil":[56,58,123,125],"qalqalah":[8,10],"silent":[115,117,134,136],"hamzat_wasl":[14,15,30,31,68,69,98,99]},
+"4": {"ikhfa":[34,38,108,112,151,155,198,202,202,205],"idghaam_ghunnah":[146,151,181,186],"idghaam_shafawi":[15,20],"lam_shamsiyyah":[115,116],"madd_2":[121,122,124,125,144,145,162,163,177,178,210,211],"madd_246":[215,216],"madd_munfasil":[165,167],"qalqalah":[24,26,155,157],"silent":[73,75],"hamzat_wasl":[42,43,81,82,114,115,128,129]},
+"5": {"ghunnah":[17,20],"ikhfa":[34,38,114,118],"idghaam_ghunnah":[20,24],"idghaam_no_ghunnah":[52,57],"madd_2":[99,100,131,132],"madd_246":[136,137],"madd_munfasil":[75,77],"madd_muttasil":[120,122],"qalqalah":[24,26],"silent":[29,31],"hamzat_wasl":[42,43,92,93]},
+"6": {"ghunnah":[17,20],"idghaam_ghunnah":[49,53],"lam_shamsiyyah":[16,17],"madd_2":[80,81],"madd_246":[85,86],"madd_muttasil":[46,48],"silent":[30,32,59,61],"hamzat_wasl":[15,16]},
+"7": {"ghunnah":[89,92],"ikhfa":[49,53],"idghaam_ghunnah":[117,122],"madd_2":[33,34,47,48,107,108],"madd_246":[124,125],"madd_muttasil":[96,98],"silent":[74,76],"hamzat_wasl":[57,58]},
+"8": {"iqlab":[153,158],"lam_shamsiyyah":[197,198],"madd_2":[24,25,51,52,145,146],"madd_246":[203,204],"hamzat_wasl":[16,17,38,39,80,81,185,186,196,197]},
+"9": {"ikhfa":[11,14],"idghaam_ghunnah":[20,26,154,159],"lam_shamsiyyah":[30,31],"madd_246":[161,162],"madd_munfasil":[43,45,115,118,131,133],"qalqalah":[17,19,48,50],"hamzat_wasl":[29,30]},
+"10": {"ghunnah":[157,160],"ikhfa":[20,24,35,38],"ikhfa_shafawi":[57,61],"iqlab":[86,89],"idghaam_ghunnah":[80,85],"lam_shamsiyyah":[192,193],"madd_2":[63,64,124,125,196,197],"madd_246":[201,202],"madd_munfasil":[92,94],"madd_muttasil":[101,103],"hamzat_wasl":[39,40,139,140,161,162,181,182,191,192]},
+"11": {"ikhfa":[153,157],"idghaam_ghunnah":[66,72],"madd_2":[123,124,142,143],"madd_246":[159,160],"madd_munfasil":[83,85,145,147],"silent":[25,27,47,49,116,118],"hamzat_wasl":[8,9]},
+"12": {"ikhfa":[4,8,107,110],"idghaam_ghunnah":[39,44,51,55,68,73],"idghaam_no_ghunnah":[79,84,99,105],"madd_2":[14,15,20,21,57,58,66,67],"madd_246":[156,157],"madd_munfasil":[29,32],"qalqalah":[8,10],"silent":[130,132],"hamzat_wasl":[113,114]},
+"13": {"ghunnah":[2,5,44,47],"madd_2":[55,56],"madd_246":[105,106],"silent":[22,24,59,61],"hamzat_wasl":[6,7,34,35,48,49]},
+"14": {"ghunnah":[28,31],"iqlab":[59,63],"madd_2":[19,20,36,37],"madd_246":[85,86],"madd_muttasil":[6,8,56,58],"silent":[2,4,74,76],"hamzat_wasl":[23,24]},
+"15": {"ghunnah":[63,66,372,375,397,400],"ikhfa":[18,21,202,206,324,329],"idghaam_ghunnah":[75,80,96,101],"madd_2":[21,22,29,30,45,46,68,69,109,110,117,118,122,123,128,129,174,175,293,294,320,321,334,335],"madd_246":[418,419],"madd_munfasil":[148,151,226,228,260,262,367,369],"qalqalah":[379,381],"hamzat_wasl":[13,14,254,255,407,408]},
+"16": {"ghunnah":[121,124],"ikhfa":[83,87],"lam_shamsiyyah":[135,136],"madd_2":[112,113],"madd_246":[168,169],"madd_munfasil":[103,105],"madd_muttasil":[6,8],"qalqalah":[139,141],"silent":[2,4,64,66,158,160],"hamzat_wasl":[13,14,116,117,134,135,144,145]},
+"17": {"ghunnah":[163,166],"ikhfa":[103,107,186,190],"idghaam_no_ghunnah":[34,39],"madd_2":[20,21,204,205,222,223],"madd_246":[239,240],"madd_munfasil":[43,45,59,61,207,209,215,217],"qalqalah":[80,82,107,109],"hamzat_wasl":[2,3,90,91,136,137,174,175,229,230]},
+"18": {"ghunnah":[99,102,116,119],"ikhfa":[60,64,76,80,110,113],"idghaam_shafawi":[86,91],"madd_2":[135,136],"madd_246":[140,141],"madd_munfasil":[52,54],"madd_muttasil":[6,8],"qalqalah":[64,66,80,82],"silent":[2,4,130,132],"hamzat_wasl":[13,14,40,41,94,95,105,106]},
+"19": {"ghunnah":[23,26],"ikhfa":[8,12],"idghaam_ghunnah":[18,23],"madd_2":[16,17,62,63],"madd_246":[89,90],"silent":[35,37]},
+"20": {"ghunnah":[46,49],"ikhfa":[179,182,243,246],"ikhfa_shafawi":[123,127],"lam_shamsiyyah":[45,46,98,99],"madd_2":[73,74],"madd_246":[257,258],"qalqalah":[59,61,145,147],"silent":[35,37],"hamzat_wasl":[18,19,44,45,97,98,110,111,133,134,162,163,205,206,224,225]},
+"21": {"ghunnah":[76,79,160,163],"ikhfa":[29,32],"iqlab":[87,90],"lam_shamsiyyah":[75,76],"madd_2":[43,44],"madd_246":[204,205],"madd_munfasil":[120,122,138,140,163,165],"qalqalah":[64,66],"silent":[140,142],"hamzat_wasl":[2,3,47,48,74,75,150,151]},
+"22": {"ikhfa":[83,87,87,90],"lam_shamsiyyah":[97,98],"madd_2":[101,102],"madd_246":[106,107],"madd_munfasil":[5,7,78,80],"silent":[7,9],"hamzat_wasl":[96,97]},
+"23": {"ghunnah":[8,11,84,87],"ikhfa":[27,30,106,111],"idghaam_shafawi":[52,57],"madd_2":[75,76,81,82,95,96],"madd_246":[117,118],"madd_munfasil":[57,59,87,89],"qalqalah":[111,113],"hamzat_wasl":[15,16,31,32]},
+"24": {"ghunnah":[4,7],"ikhfa":[132,136],"ikhfa_shafawi":[120,124],"idghaam_ghunnah":[24,30,78,83],"madd_2":[67,68,126,127],"madd_246":[153,154],"qalqalah":[34,36],"silent":[62,64],"hamzat_wasl":[107,108]},
+"25": {"ghunnah":[4,7],"iqlab":[21,25],"madd_2":[79,80,93,94],"madd_246":[128,129],"madd_munfasil":[64,67],"qalqalah":[101,103,122,124],"silent":[53,55],"hamzat_wasl":[107,108,117,118]},
+"26": {"ghunnah":[14,17,41,44],"ikhfa":[108,112,192,196],"idghaam_ghunnah":[33,38,80,85,93,98],"idghaam_shafawi":[187,192,259,264],"madd_2":[17,18,44,45,91,92,159,160,235,236,279,280],"madd_246":[293,294],"madd_munfasil":[28,30,114,116,150,152,171,173],"qalqalah":[6,8,87,89,155,157,217,219],"silent":[212,214,272,274],"hamzat_wasl":[239,240]},
+"27": {"idghaam_shafawi":[33,38],"madd_2":[72,73],"madd_246":[96,97],"qalqalah":[6,8],"hamzat_wasl":[41,42,64,65]},
+"28": {"ikhfa":[45,49],"iqlab":[80,84],"madd_2":[110,111],"madd_246":[150,151],"silent":[40,42,94,96,139,141],"hamzat_wasl":[21,22,31,32,53,54]},
+"29": {"ghunnah":[46,49,81,84,121,124],"ikhfa":[108,111,163,166],"idghaam_ghunnah":[32,38],"idghaam_shafawi":[158,163],"madd_246":[168,169],"madd_munfasil":[15,17,101,103],"silent":[103,105,114,116,140,142],"hamzat_wasl":[41,42,64,65]},
+"30": {"ghunnah":[25,28],"ikhfa":[51,54],"iqlab":[60,63],"idghaam_ghunnah":[150,155],"idghaam_no_ghunnah":[85,91],"madd_2":[11,12,44,45],"madd_246":[161,162],"madd_munfasil":[20,22,117,119],"silent":[6,8],"hamzat_wasl":[126,127]},
+"31": {"ikhfa":[78,82],"idghaam_shafawi":[73,78,102,107],"madd_2":[2,3,58,59],"madd_246":[122,123],"madd_munfasil":[11,13],"silent":[22,24,51,53],"hamzat_wasl":[33,34]},
+"32": {"ikhfa":[52,56,85,89],"idghaam_ghunnah":[133,138],"idghaam_no_ghunnah":[4,9],"madd_2":[81,82,131,132],"madd_246":[140,141],"madd_munfasil":[94,96],"madd_muttasil":[105,107,116,118],"qalqalah":[15,17],"silent":[112,114],"hamzat_wasl":[26,27,58,59]},
+"33": {"ghunnah":[20,23,97,100,154,157],"ikhfa":[179,183],"idghaam_ghunnah":[121,125],"lam_shamsiyyah":[48,49],"madd_2":[54,55,57,58,105,106,159,160],"madd_246":[185,186],"madd_munfasil":[115,118,148,151],"silent":[15,17],"hamzat_wasl":[24,25,32,33,47,48,63,64,132,133]},
+"34": {"ghunnah":[46,49],"ikhfa":[143,146],"lam_shamsiyyah":[45,46],"madd_2":[64,65],"madd_246":[157,158],"silent":[35,37,86,88,121,123],"hamzat_wasl":[18,19,44,45,71,72,124,125]},
+"35": {"ghunnah":[88,91],"ikhfa":[181,185],"iqlab":[172,176],"idghaam_ghunnah":[158,163,163,168],"lam_shamsiyyah":[49,50],"madd_2":[179,180,221,222],"madd_246":[226,227],"madd_munfasil":[140,142],"silent":[25,27,30,32,142,144],"hamzat_wasl":[2,3,33,34,48,49,206,207,216,217]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/47.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/47.json
index 7f7a056..1c1c0fb 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/47.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/47.json
@@ -1,39 +1,39 @@
{
-"1": {"ghunnah":[72,76],"madd":[104,105],"silent":[56,58,67,69],"wasl":[82,83]},
-"2": {"ghunnah":[87,90],"idgham":[36,37,91,95,111,116],"madd":[40,41,45,46],"silent":[20,22,32,34,59,61],"wasl":[2,3,35,36,100,101]},
-"3": {"ghunnah":[12,15,63,66,154,157],"idgham":[111,116,153,154],"madd":[2,3,53,54,128,129,167,168],"silent":[33,35,45,47,85,87,97,99],"wasl":[16,17,36,37,48,49,67,68,88,89,100,101,143,144]},
-"4": {"ghunnah":[80,83,117,120,124,128,126,131,141,144,228,231,276,280],"idgham":[48,49,252,257,285,289,333,337],"madd":[63,66,71,73,150,152,195,196,212,214,249,250,349,350],"qalqalah":[259,261],"silent":[35,37,99,101,265,267,306,308],"wasl":[18,19,47,48,102,103,170,171,217,218,227,228,289,290,321,322]},
-"6": {"ghunnah":[20,23],"qalqalah":[4,6],"wasl":[15,16]},
-"7": {"ghunnah":[37,41,41,44,60,63],"madd":[2,4,30,32],"qalqalah":[84,86],"silent":[32,34,47,49],"wasl":[13,14,50,51]},
-"8": {"idgham":[29,35],"madd":[56,57],"silent":[19,21],"wasl":[2,3]},
-"9": {"ghunnah":[12,15,37,40],"madd":[2,3,32,34,68,69],"silent":[27,29],"wasl":[43,44]},
-"10": {"ghunnah":[38,41,82,86,97,100],"madd":[62,63,130,131,145,146],"qalqalah":[86,88],"silent":[17,19,44,46],"wasl":[24,25,70,71,103,104]},
-"11": {"ghunnah":[12,15,57,60],"madd":[2,3,66,67],"silent":[50,52],"wasl":[16,17,32,33,61,62]},
-"12": {"ghunnah":[2,5,72,75,77,81,89,93,197,200],"idgham":[57,58,196,197,209,215],"madd":[61,62,66,67,75,76,110,111,189,190],"qalqalah":[16,18,81,83],"silent":[41,43,53,55,133,135],"wasl":[6,7,23,24,56,57,101,102,116,117,180,181,195,196]},
-"13": {"ghunnah":[14,18,49,53],"idgham":[9,14,44,49],"madd":[68,70,94,95],"wasl":[62,63]},
-"14": {"ghunnah":[6,10,50,54],"idgham":[29,34,34,39],"madd":[44,45,64,65,68,70,81,82,93,95,104,106],"silent":[95,97],"wasl":[85,86]},
-"15": {"ghunnah":[13,16,250,254,318,322,326,329,356,361],"idgham":[64,69,69,74,92,96,104,109,109,114,117,122,157,162,170,175,179,184,184,185,207,212,220,225,229,234,259,260,282,287,287,292,325,326],"madd":[53,55,62,63,74,76,102,103,145,146,155,156,188,189,205,206,267,268,314,315,345,347,375,377],"silent":[340,342],"wasl":[8,9,19,20,34,35,258,259,324,325]},
-"16": {"ghunnah":[67,70],"idgham":[8,13,13,17],"madd":[40,43,140,142,201,203,212,214],"silent":[57,59,79,81,99,101,136,138,203,205],"wasl":[102,103,147,148,164,165,193,194]},
-"17": {"idgham":[37,42],"madd":[48,49,61,62],"qalqalah":[56,58],"silent":[21,23],"wasl":[2,3,12,13]},
-"18": {"ghunnah":[9,12,38,42,50,54,59,63,92,95],"idgham":[26,27],"madd":[70,72,113,115,131,132],"qalqalah":[65,67],"wasl":[25,26]},
-"19": {"ghunnah":[12,15,66,68],"madd":[17,18,21,23,28,29,103,104,151,152],"wasl":[2,3,39,40,49,50,92,93,109,110]},
-"20": {"ghunnah":[55,59,68,71,167,170],"idgham":[82,87,94,98,155,160,163,167],"madd":[63,65],"silent":[28,30],"wasl":[10,11,112,113,132,133,192,193,219,220]},
-"21": {"ghunnah":[26,30],"idgham":[6,10,15,20,91,97],"silent":[67,69],"wasl":[43,44,70,71]},
-"22": {"ghunnah":[20,24,38,42],"madd":[77,79],"silent":[49,51,79,81],"wasl":[56,57]},
-"23": {"ghunnah":[48,51],"madd":[6,8,64,67,74,75],"qalqalah":[70,72],"silent":[2,4],"wasl":[13,14,34,35]},
-"24": {"qalqalah":[58,60],"wasl":[23,24]},
-"25": {"ghunnah":[2,5,53,56],"idgham":[47,52,93,94],"madd":[32,35,42,43,101,102],"qalqalah":[38,40],"silent":[25,27],"wasl":[6,7,16,17,83,84,92,93]},
-"26": {"ghunnah":[12,15],"madd":[2,3],"silent":[26,28,47,49],"wasl":[62,63,95,96,107,108]},
-"27": {"madd":[36,38,77,78],"qalqalah":[73,75],"wasl":[29,30]},
-"28": {"ghunnah":[12,15],"madd":[2,3,34,36,72,73,77,78,96,97],"silent":[29,31,63,65],"wasl":[20,21,46,47]},
-"29": {"idgham":[35,40,47,52,52,56],"madd":[77,78],"wasl":[12,13,63,64]},
-"30": {"ghunnah":[48,52,75,78],"madd":[11,13,26,27,57,58,129,130],"wasl":[94,95,106,107]},
-"31": {"ghunnah":[12,15,55,58],"idgham":[64,65],"madd":[44,45,68,69],"qalqalah":[6,8,81,83],"silent":[87,89],"wasl":[37,38,63,64]},
-"32": {"ghunnah":[2,5,39,43,84,87],"idgham":[71,72,126,130,153,158],"madd":[175,176],"madd-lazim":[61,63],"silent":[23,25,34,36,67,69,136,138],"wasl":[6,7,49,50,70,71,114,115,139,140]},
-"33": {"idgham":[68,69],"madd":[2,4,30,32,92,94,103,104],"qalqalah":[86,88],"silent":[32,34,43,45,64,66,94,96],"wasl":[13,14,46,47,67,68]},
-"34": {"ghunnah":[2,5,39,43,59,62,86,90],"idgham":[92,96],"silent":[23,25,34,36,69,71],"wasl":[6,7,49,50,103,104]},
-"35": {"ghunnah":[49,52],"idgham":[36,37,92,96],"madd":[24,26,111,112],"qalqalah":[20,22],"silent":[13,15,26,28],"wasl":[35,36,55,56,71,72]},
-"36": {"ghunnah":[2,5,52,56],"idgham":[22,23,37,41,46,50],"madd":[17,18,128,129],"silent":[16,17,63,65,76,78],"wasl":[9,10,21,22]},
-"37": {"idgham":[2,6],"madd":[64,65],"qalqalah":[37,39,55,57],"silent":[44,46]},
-"38": {"ghunnah":[6,9,40,43,73,76,111,114,167,170,191,195,241,244],"idgham":[76,81,81,85,96,100,129,134],"madd":[2,4,14,16,20,22,140,141,182,184,256,258,267,268],"qalqalah":[27,29,85,87,100,102,120,122,213,215],"silent":[46,48,204,206,258,260],"wasl":[61,62,144,145,152,153,173,174]}
+"1": {"ikhfa":[72,76],"madd_2":[104,105],"silent":[56,58,67,69],"hamzat_wasl":[82,83]},
+"2": {"ghunnah":[87,90],"idghaam_ghunnah":[91,95],"idghaam_no_ghunnah":[111,116],"lam_shamsiyyah":[36,37],"madd_2":[40,41,45,46],"silent":[20,22,32,34,59,61],"hamzat_wasl":[2,3,35,36,100,101]},
+"3": {"ghunnah":[12,15,63,66,154,157],"idghaam_no_ghunnah":[111,116],"lam_shamsiyyah":[153,154],"madd_2":[2,3,53,54,128,129,167,168],"silent":[33,35,45,47,85,87,97,99],"hamzat_wasl":[16,17,36,37,48,49,67,68,88,89,100,101,143,144]},
+"4": {"ghunnah":[117,120,124,128,141,144],"ikhfa":[80,83,228,231],"ikhfa_shafawi":[276,280],"iqlab":[126,131],"idghaam_ghunnah":[285,289,333,337],"idghaam_no_ghunnah":[252,257],"lam_shamsiyyah":[48,49],"madd_2":[195,196,249,250,349,350],"madd_munfasil":[63,66,71,73],"madd_muttasil":[150,152,212,214],"qalqalah":[259,261],"silent":[35,37,99,101,265,267,306,308],"hamzat_wasl":[18,19,47,48,102,103,170,171,217,218,227,228,289,290,321,322]},
+"6": {"ghunnah":[20,23],"qalqalah":[4,6],"hamzat_wasl":[15,16]},
+"7": {"ikhfa":[37,41,41,44,60,63],"madd_munfasil":[2,4,30,32],"qalqalah":[84,86],"silent":[32,34,47,49],"hamzat_wasl":[13,14,50,51]},
+"8": {"idghaam_no_ghunnah":[29,35],"madd_2":[56,57],"silent":[19,21],"hamzat_wasl":[2,3]},
+"9": {"ghunnah":[12,15],"ikhfa":[37,40],"madd_2":[2,3,68,69],"madd_munfasil":[32,34],"silent":[27,29],"hamzat_wasl":[43,44]},
+"10": {"ghunnah":[97,100],"ikhfa":[38,41,82,86],"madd_2":[62,63,130,131,145,146],"qalqalah":[86,88],"silent":[17,19,44,46],"hamzat_wasl":[24,25,70,71,103,104]},
+"11": {"ghunnah":[12,15,57,60],"madd_2":[2,3,66,67],"silent":[50,52],"hamzat_wasl":[16,17,32,33,61,62]},
+"12": {"ghunnah":[2,5,72,75,197,200],"ikhfa":[77,81,89,93],"idghaam_no_ghunnah":[209,215],"lam_shamsiyyah":[57,58,196,197],"madd_2":[61,62,66,67,75,76,110,111,189,190],"qalqalah":[16,18,81,83],"silent":[41,43,53,55,133,135],"hamzat_wasl":[6,7,23,24,56,57,101,102,116,117,180,181,195,196]},
+"13": {"ikhfa":[14,18,49,53],"idghaam_ghunnah":[9,14,44,49],"madd_2":[94,95],"madd_munfasil":[68,70],"hamzat_wasl":[62,63]},
+"14": {"ikhfa":[6,10,50,54],"idghaam_ghunnah":[29,34],"idghaam_no_ghunnah":[34,39],"madd_2":[44,45,64,65,81,82],"madd_munfasil":[93,95],"madd_muttasil":[68,70,104,106],"silent":[95,97],"hamzat_wasl":[85,86]},
+"15": {"ghunnah":[13,16,326,329],"ikhfa":[250,254,318,322,356,361],"idghaam_ghunnah":[64,69,69,74,92,96,104,109,157,162,207,212,220,225,229,234,282,287],"idghaam_no_ghunnah":[109,114,117,122,170,175,179,184,287,292],"lam_shamsiyyah":[184,185,259,260,325,326],"madd_2":[62,63,102,103,145,146,155,156,188,189,205,206,267,268,314,315],"madd_munfasil":[53,55],"madd_muttasil":[74,76,345,347,375,377],"silent":[340,342],"hamzat_wasl":[8,9,19,20,34,35,258,259,324,325]},
+"16": {"ikhfa":[67,70],"idghaam_ghunnah":[13,17],"idghaam_shafawi":[8,13],"madd_munfasil":[40,43,201,203],"madd_muttasil":[140,142,212,214],"silent":[57,59,79,81,99,101,136,138,203,205],"hamzat_wasl":[102,103,147,148,164,165,193,194]},
+"17": {"idghaam_ghunnah":[37,42],"madd_2":[48,49,61,62],"qalqalah":[56,58],"silent":[21,23],"hamzat_wasl":[2,3,12,13]},
+"18": {"ghunnah":[92,95],"ikhfa":[9,12,38,42,59,63],"ikhfa_shafawi":[50,54],"lam_shamsiyyah":[26,27],"madd_2":[131,132],"madd_muttasil":[70,72,113,115],"qalqalah":[65,67],"hamzat_wasl":[25,26]},
+"19": {"ghunnah":[12,15],"iqlab":[66,68],"madd_2":[17,18,28,29,103,104,151,152],"madd_munfasil":[21,23],"hamzat_wasl":[2,3,39,40,49,50,92,93,109,110]},
+"20": {"ikhfa":[55,59,68,71,167,170],"idghaam_ghunnah":[82,87,94,98,163,167],"idghaam_shafawi":[155,160],"madd_munfasil":[63,65],"silent":[28,30],"hamzat_wasl":[10,11,112,113,132,133,192,193,219,220]},
+"21": {"ikhfa":[26,30],"idghaam_ghunnah":[6,10,15,20],"idghaam_no_ghunnah":[91,97],"silent":[67,69],"hamzat_wasl":[43,44,70,71]},
+"22": {"ikhfa":[20,24,38,42],"madd_munfasil":[77,79],"silent":[49,51,79,81],"hamzat_wasl":[56,57]},
+"23": {"ghunnah":[48,51],"madd_2":[74,75],"madd_munfasil":[64,67],"madd_muttasil":[6,8],"qalqalah":[70,72],"silent":[2,4],"hamzat_wasl":[13,14,34,35]},
+"24": {"qalqalah":[58,60],"hamzat_wasl":[23,24]},
+"25": {"ghunnah":[2,5],"iqlab":[53,56],"idghaam_shafawi":[47,52],"lam_shamsiyyah":[93,94],"madd_2":[42,43,101,102],"madd_munfasil":[32,35],"qalqalah":[38,40],"silent":[25,27],"hamzat_wasl":[6,7,16,17,83,84,92,93]},
+"26": {"ghunnah":[12,15],"madd_2":[2,3],"silent":[26,28,47,49],"hamzat_wasl":[62,63,95,96,107,108]},
+"27": {"madd_2":[77,78],"madd_muttasil":[36,38],"qalqalah":[73,75],"hamzat_wasl":[29,30]},
+"28": {"ghunnah":[12,15],"madd_2":[2,3,72,73,77,78,96,97],"madd_munfasil":[34,36],"silent":[29,31,63,65],"hamzat_wasl":[20,21,46,47]},
+"29": {"idghaam_ghunnah":[52,56],"idghaam_no_ghunnah":[47,52],"idghaam_shafawi":[35,40],"madd_2":[77,78],"hamzat_wasl":[12,13,63,64]},
+"30": {"ghunnah":[75,78],"ikhfa_shafawi":[48,52],"madd_2":[26,27,57,58,129,130],"madd_muttasil":[11,13],"hamzat_wasl":[94,95,106,107]},
+"31": {"ghunnah":[12,15],"ikhfa":[55,58],"lam_shamsiyyah":[64,65],"madd_2":[44,45,68,69],"qalqalah":[6,8,81,83],"silent":[87,89],"hamzat_wasl":[37,38,63,64]},
+"32": {"ghunnah":[2,5],"ikhfa":[39,43],"iqlab":[84,87],"idghaam_ghunnah":[126,130,153,158],"lam_shamsiyyah":[71,72],"madd_2":[175,176],"madd_6":[61,63],"silent":[23,25,34,36,67,69,136,138],"hamzat_wasl":[6,7,49,50,70,71,114,115,139,140]},
+"33": {"lam_shamsiyyah":[68,69],"madd_2":[103,104],"madd_munfasil":[2,4,30,32,92,94],"qalqalah":[86,88],"silent":[32,34,43,45,64,66,94,96],"hamzat_wasl":[13,14,46,47,67,68]},
+"34": {"ghunnah":[2,5,59,62],"ikhfa":[39,43,86,90],"idghaam_ghunnah":[92,96],"silent":[23,25,34,36,69,71],"hamzat_wasl":[6,7,49,50,103,104]},
+"35": {"ikhfa":[49,52],"idghaam_ghunnah":[92,96],"lam_shamsiyyah":[36,37],"madd_2":[111,112],"madd_munfasil":[24,26],"qalqalah":[20,22],"silent":[13,15,26,28],"hamzat_wasl":[35,36,55,56,71,72]},
+"36": {"ghunnah":[2,5],"ikhfa":[52,56],"idghaam_ghunnah":[37,41,46,50],"lam_shamsiyyah":[22,23],"madd_2":[17,18,128,129],"silent":[16,17,63,65,76,78],"hamzat_wasl":[9,10,21,22]},
+"37": {"idghaam_ghunnah":[2,6],"madd_2":[64,65],"qalqalah":[37,39,55,57],"silent":[44,46]},
+"38": {"ghunnah":[111,114,241,244],"ikhfa":[6,9,40,43,73,76,167,170,191,195],"idghaam_ghunnah":[81,85,96,100,129,134],"idghaam_shafawi":[76,81],"madd_2":[140,141,267,268],"madd_munfasil":[2,4,256,258],"madd_muttasil":[14,16,20,22,182,184],"qalqalah":[27,29,85,87,100,102,120,122,213,215],"silent":[46,48,204,206,258,260],"hamzat_wasl":[61,62,144,145,152,153,173,174]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/48.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/48.json
index f3613e9..1fa6b85 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/48.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/48.json
@@ -1,31 +1,31 @@
{
-"1": {"ghunnah":[41,44],"idgham":[66,72]},
-"2": {"ghunnah":[41,45,46,48,74,77],"idgham":[118,124],"madd":[88,89,116,117],"wasl":[17,18]},
-"3": {"ghunnah":[4,7],"wasl":[12,13]},
-"4": {"ghunnah":[16,19],"idgham":[23,24,85,91,126,127],"madd":[11,13,73,75,83,84,99,100,132,133,135,136],"silent":[75,77],"wasl":[5,6,22,23,47,48,125,126,141,142,159,160]},
-"5": {"ghunnah":[46,49,51,55,63,67,161,164],"madd":[40,41,49,50,84,85,90,91,153,154],"qalqalah":[5,7,55,57],"wasl":[12,13,29,30,75,76,165,166]},
-"6": {"ghunnah":[87,90,106,109,214,217],"idgham":[81,82,111,112,143,144],"madd":[19,20,37,38,42,43,76,77,133,135,224,226],"madd-lazim":[85,87],"wasl":[12,13,30,31,48,49,65,66,80,81,96,97,110,111,142,143,161,162]},
-"7": {"idgham":[19,20],"madd":[25,26,28,29],"wasl":[18,19,34,35,52,53]},
-"8": {"ghunnah":[2,5],"idgham":[28,33,41,46],"madd":[5,7,18,19,24,25]},
-"9": {"idgham":[90,94],"madd":[36,37],"silent":[12,14],"wasl":[17,18]},
-"10": {"ghunnah":[2,5,33,36,111,114,120,123],"idgham":[97,102],"madd":[141,142,167,168],"qalqalah":[206,208],"wasl":[6,7,53,54,66,67,182,183]},
-"11": {"ghunnah":[264,269],"idgham":[133,138,172,176,187,192],"madd":[59,61,68,69],"wasl":[15,16,36,37,90,91,195,196,279,280]},
-"12": {"ghunnah":[9,12,26,29,130,133,138,141,156,159,167,172],"idgham":[17,22,22,26,35,36,87,92,143,144],"madd":[66,69,102,103],"wasl":[34,35,47,48,142,143]},
-"13": {"ghunnah":[19,22,48,51],"idgham":[4,9],"madd":[42,43,51,53,72,73],"qalqalah":[60,62],"wasl":[23,24]},
-"14": {"idgham":[18,19,56,60,81,85,114,120],"madd":[24,25,27,28,62,64,87,89],"wasl":[17,18,33,34,100,101]},
-"15": {"ghunnah":[33,36,151,155,195,199],"idgham":[113,117],"madd":[132,133,171,172],"qalqalah":[38,40,199,201],"silent":[125,127,250,252],"wasl":[10,11,32,33,136,137,185,186]},
-"16": {"ghunnah":[80,84,88,92,128,132,180,184,218,222],"idgham":[173,178,213,218],"madd":[94,95],"qalqalah":[44,46,162,164,222,224,234,236],"silent":[69,71,138,140,193,195],"wasl":[27,28,152,153]},
-"17": {"ghunnah":[141,144,146,150,158,162],"idgham":[31,35,62,66,92,96,98,102,187,191],"madd":[126,127,144,145,179,180],"qalqalah":[130,132,150,152,206,208],"wasl":[14,15,45,46,76,77,107,108,170,171]},
-"18": {"ghunnah":[115,118,164,169],"idgham":[71,72,122,123],"madd":[151,152],"qalqalah":[5,7],"wasl":[15,16,28,29,70,71,121,122]},
-"19": {"idgham":[20,24],"wasl":[45,46]},
-"20": {"ghunnah":[37,41,99,102,108,111],"idgham":[98,99,132,137,172,178],"madd":[73,74,78,79,170,171],"wasl":[11,12,97,98]},
-"21": {"ghunnah":[99,103],"qalqalah":[18,20,40,42],"silent":[25,27],"wasl":[51,52,73,74]},
-"22": {"ghunnah":[66,69],"idgham":[90,95],"madd":[9,10,60,61],"qalqalah":[56,58],"silent":[36,38,48,50],"wasl":[19,20,51,52]},
-"23": {"ghunnah":[2,5,38,42,51,55,64,67],"qalqalah":[26,28,42,44,80,82],"wasl":[8,9,16,17,70,71]},
-"24": {"ghunnah":[36,39,63,67,85,88],"qalqalah":[69,71],"wasl":[7,8,131,132]},
-"25": {"ghunnah":[190,194,236,240],"idgham":[91,95,129,134,153,158,166,171,216,221,225,230,253,258,293,297],"madd":[111,112,150,152,164,165,289,290,299,301],"qalqalah":[73,75,95,97,260,262,329,331],"silent":[22,24,319,321,352,354],"wasl":[5,6,43,44,55,56,68,69,267,268,335,336]},
-"26": {"ghunnah":[91,94],"idgham":[184,185],"madd":[76,77,116,117,134,135,202,204],"qalqalah":[188,190],"silent":[29,31,204,206],"wasl":[12,13,48,49,71,72,97,98,144,145,183,184,241,242]},
-"27": {"ghunnah":[65,68,94,98,218,222,239,244],"idgham":[34,35],"madd":[98,100,228,229],"qalqalah":[5,7,59,61],"silent":[204,206],"wasl":[15,16,33,34,46,47,69,70,81,82,103,104]},
-"28": {"idgham":[84,85],"madd":[11,13,32,33,75,76,99,100],"wasl":[5,6,36,37,54,55,83,84,112,113]},
-"29": {"ghunnah":[5,8,118,123,174,179,286,289],"idgham":[9,14,127,132,147,153,201,206,217,218,251,252,388,389,477,478,496,501,508,512],"madd":[46,48,56,58,85,87,106,107,172,173,229,230,260,261,320,321,334,335,376,377,481,482,486,487],"qalqalah":[132,134,313,315,514,516],"silent":[461,463,473,475],"wasl":[20,21,30,31,67,68,156,157,216,217,250,251,281,282,338,339,352,353,387,388,416,417,435,436,443,444,476,477]}
+"1": {"ghunnah":[41,44],"idghaam_ghunnah":[66,72]},
+"2": {"ghunnah":[74,77],"ikhfa":[41,45],"iqlab":[46,48],"idghaam_ghunnah":[118,124],"madd_2":[88,89,116,117],"hamzat_wasl":[17,18]},
+"3": {"ikhfa":[4,7],"hamzat_wasl":[12,13]},
+"4": {"ikhfa":[16,19],"idghaam_ghunnah":[85,91],"lam_shamsiyyah":[23,24,126,127],"madd_2":[83,84,99,100,132,133,135,136],"madd_munfasil":[11,13,73,75],"silent":[75,77],"hamzat_wasl":[5,6,22,23,47,48,125,126,141,142,159,160]},
+"5": {"ghunnah":[46,49],"ikhfa":[51,55,63,67,161,164],"madd_2":[40,41,49,50,84,85,90,91,153,154],"qalqalah":[5,7,55,57],"hamzat_wasl":[12,13,29,30,75,76,165,166]},
+"6": {"ghunnah":[87,90,106,109,214,217],"lam_shamsiyyah":[81,82,111,112,143,144],"madd_2":[19,20,37,38,42,43,76,77],"madd_muttasil":[133,135,224,226],"madd_6":[85,87],"hamzat_wasl":[12,13,30,31,48,49,65,66,80,81,96,97,110,111,142,143,161,162]},
+"7": {"lam_shamsiyyah":[19,20],"madd_2":[25,26,28,29],"hamzat_wasl":[18,19,34,35,52,53]},
+"8": {"ghunnah":[2,5],"idghaam_ghunnah":[28,33,41,46],"madd_2":[18,19,24,25],"madd_munfasil":[5,7]},
+"9": {"idghaam_ghunnah":[90,94],"madd_2":[36,37],"silent":[12,14],"hamzat_wasl":[17,18]},
+"10": {"ghunnah":[2,5,33,36,111,114],"ikhfa":[120,123],"idghaam_ghunnah":[97,102],"madd_2":[141,142,167,168],"qalqalah":[206,208],"hamzat_wasl":[6,7,53,54,66,67,182,183]},
+"11": {"iqlab":[264,269],"idghaam_ghunnah":[172,176],"idghaam_shafawi":[133,138,187,192],"madd_2":[68,69],"madd_munfasil":[59,61],"hamzat_wasl":[15,16,36,37,90,91,195,196,279,280]},
+"12": {"ghunnah":[138,141],"ikhfa":[9,12,26,29,130,133,156,159],"iqlab":[167,172],"idghaam_ghunnah":[22,26,87,92],"idghaam_no_ghunnah":[17,22],"lam_shamsiyyah":[35,36,143,144],"madd_2":[102,103],"madd_munfasil":[66,69],"hamzat_wasl":[34,35,47,48,142,143]},
+"13": {"ghunnah":[48,51],"iqlab":[19,22],"idghaam_no_ghunnah":[4,9],"madd_2":[42,43,72,73],"madd_munfasil":[51,53],"qalqalah":[60,62],"hamzat_wasl":[23,24]},
+"14": {"idghaam_ghunnah":[56,60,81,85],"idghaam_no_ghunnah":[114,120],"lam_shamsiyyah":[18,19],"madd_2":[24,25,27,28],"madd_muttasil":[62,64,87,89],"hamzat_wasl":[17,18,33,34,100,101]},
+"15": {"ikhfa":[33,36,151,155,195,199],"idghaam_ghunnah":[113,117],"madd_2":[132,133,171,172],"qalqalah":[38,40,199,201],"silent":[125,127,250,252],"hamzat_wasl":[10,11,32,33,136,137,185,186]},
+"16": {"ikhfa":[80,84,88,92,128,132,180,184,218,222],"idghaam_ghunnah":[173,178],"idghaam_shafawi":[213,218],"madd_2":[94,95],"qalqalah":[44,46,162,164,222,224,234,236],"silent":[69,71,138,140,193,195],"hamzat_wasl":[27,28,152,153]},
+"17": {"ghunnah":[141,144],"ikhfa":[146,150,158,162],"idghaam_ghunnah":[31,35,62,66,92,96,98,102,187,191],"madd_2":[126,127,144,145,179,180],"qalqalah":[130,132,150,152,206,208],"hamzat_wasl":[14,15,45,46,76,77,107,108,170,171]},
+"18": {"ikhfa":[115,118,164,169],"lam_shamsiyyah":[71,72,122,123],"madd_2":[151,152],"qalqalah":[5,7],"hamzat_wasl":[15,16,28,29,70,71,121,122]},
+"19": {"idghaam_ghunnah":[20,24],"hamzat_wasl":[45,46]},
+"20": {"ghunnah":[99,102],"ikhfa":[37,41,108,111],"idghaam_ghunnah":[172,178],"idghaam_no_ghunnah":[132,137],"lam_shamsiyyah":[98,99],"madd_2":[73,74,78,79,170,171],"hamzat_wasl":[11,12,97,98]},
+"21": {"ikhfa":[99,103],"qalqalah":[18,20,40,42],"silent":[25,27],"hamzat_wasl":[51,52,73,74]},
+"22": {"ghunnah":[66,69],"idghaam_ghunnah":[90,95],"madd_2":[9,10,60,61],"qalqalah":[56,58],"silent":[36,38,48,50],"hamzat_wasl":[19,20,51,52]},
+"23": {"ghunnah":[2,5,64,67],"ikhfa":[38,42,51,55],"qalqalah":[26,28,42,44,80,82],"hamzat_wasl":[8,9,16,17,70,71]},
+"24": {"ikhfa":[36,39],"ikhfa_shafawi":[63,67],"iqlab":[85,88],"qalqalah":[69,71],"hamzat_wasl":[7,8,131,132]},
+"25": {"ikhfa":[190,194],"iqlab":[236,240],"idghaam_ghunnah":[91,95,129,134,153,158,293,297],"idghaam_no_ghunnah":[166,171,253,258],"idghaam_shafawi":[216,221,225,230],"madd_2":[111,112,164,165,289,290],"madd_muttasil":[150,152,299,301],"qalqalah":[73,75,95,97,260,262,329,331],"silent":[22,24,319,321,352,354],"hamzat_wasl":[5,6,43,44,55,56,68,69,267,268,335,336]},
+"26": {"ikhfa":[91,94],"lam_shamsiyyah":[184,185],"madd_2":[76,77,116,117,134,135],"madd_munfasil":[202,204],"qalqalah":[188,190],"silent":[29,31,204,206],"hamzat_wasl":[12,13,48,49,71,72,97,98,144,145,183,184,241,242]},
+"27": {"ghunnah":[65,68],"ikhfa":[94,98,218,222,239,244],"lam_shamsiyyah":[34,35],"madd_2":[228,229],"madd_muttasil":[98,100],"qalqalah":[5,7,59,61],"silent":[204,206],"hamzat_wasl":[15,16,33,34,46,47,69,70,81,82,103,104]},
+"28": {"lam_shamsiyyah":[84,85],"madd_2":[32,33,75,76,99,100],"madd_munfasil":[11,13],"hamzat_wasl":[5,6,36,37,54,55,83,84,112,113]},
+"29": {"ghunnah":[5,8],"ikhfa":[118,123,174,179,286,289],"idghaam_ghunnah":[127,132,147,153,508,512],"idghaam_no_ghunnah":[9,14],"idghaam_shafawi":[201,206,496,501],"lam_shamsiyyah":[217,218,251,252,388,389,477,478],"madd_2":[106,107,172,173,229,230,260,261,320,321,334,335,376,377,481,482,486,487],"madd_munfasil":[46,48],"madd_muttasil":[56,58,85,87],"qalqalah":[132,134,313,315,514,516],"silent":[461,463,473,475],"hamzat_wasl":[20,21,30,31,67,68,156,157,216,217,250,251,281,282,338,339,352,353,387,388,416,417,435,436,443,444,476,477]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/49.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/49.json
index c3b0d6a..9c51850 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/49.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/49.json
@@ -1,20 +1,20 @@
{
-"1": {"ghunnah":[147,150],"madd":[41,43,123,124,171,172],"silent":[70,72,87,89,134,136],"wasl":[52,53,104,105,127,128,137,138,151,152]},
-"2": {"ghunnah":[81,84,157,161,186,189],"idgham":[80,81],"madd":[2,4,46,48,57,58,112,113,174,175,204,205],"qalqalah":[98,100],"silent":[31,33,48,50,105,107],"wasl":[13,14,79,80,116,117]},
-"3": {"ghunnah":[2,5,43,46],"idgham":[118,119,133,138,145,149],"madd":[33,34,69,71,160,161],"qalqalah":[122,124,151,153],"silent":[65,67],"wasl":[6,7,55,56,76,77,86,87,96,97]},
-"4": {"ghunnah":[2,5],"idgham":[31,35],"madd":[37,39,51,52,80,81],"wasl":[6,7,42,43]},
-"5": {"ghunnah":[9,12],"idgham":[68,74,95,100],"madd":[102,103],"silent":[24,26],"wasl":[81,82]},
-"6": {"ghunnah":[37,41,56,60,66,70,86,90,104,109,118,122],"madd":[2,4,30,32,41,43,79,81,114,115,158,159,163,164],"silent":[32,34,81,83,96,98,131,133],"wasl":[13,14]},
-"7": {"ghunnah":[16,19,108,111],"idgham":[71,76,258,259],"madd":[9,11,105,106,147,148,162,163,245,247,262,263,267,268],"silent":[11,13,241,243],"wasl":[2,3,36,37,79,80,112,113,139,140,201,202,213,214,226,227,257,258]},
-"8": {"idgham":[5,11,31,35],"madd":[55,56],"wasl":[14,15,35,36]},
-"9": {"ghunnah":[4,8,84,87,198,202,264,267],"madd":[8,10,100,101,129,130,166,168,175,178,202,204,257,259,295,296],"qalqalah":[41,43,148,150,242,244,251,253,289,291],"silent":[50,52,64,66,135,137,220,222,259,261],"wasl":[25,26,40,41,113,114,138,139,186,187,237,238,268,269,284,285]},
-"10": {"ghunnah":[2,5,31,35],"madd":[107,108],"silent":[44,46,76,78],"wasl":[9,10,69,70,79,80]},
-"11": {"ghunnah":[57,61,153,156,172,175,197,200],"idgham":[52,57,76,80,94,100,120,125,125,130,147,151,162,168,291,296,327,328],"madd":[2,4,70,73,117,119,132,134,141,144,190,192,237,238,283,284,314,316,331,332,336,337],"qalqalah":[303,305],"silent":[31,33,86,88,192,194,223,225,310,312],"wasl":[13,14,228,229,248,249,251,252,257,258,275,276,326,327]},
-"12": {"ghunnah":[67,70,73,76,89,92,142,146,206,211,247,250],"idgham":[53,59,63,64,85,86,98,102,175,179,266,271],"madd":[2,4,273,274],"qalqalah":[35,37],"silent":[31,33,44,46,116,118,234,236],"wasl":[13,14,34,35,62,63,84,85,227,228,237,238,251,252]},
-"13": {"ghunnah":[15,18,24,27,45,49,58,61,120,123,139,142,166,169],"idgham":[14,15,40,45,52,56,86,91],"madd":[2,4,37,38,74,75,95,97,113,115,158,159,190,191],"qalqalah":[33,35],"silent":[115,117],"wasl":[13,14,143,144,170,171]},
-"14": {"ghunnah":[26,29,60,64,88,91,134,138,213,216],"idgham":[180,185,231,236],"madd":[57,58,67,69,110,111,166,167,194,195,238,239],"qalqalah":[95,97],"silent":[50,52,69,71,144,146],"wasl":[8,9,102,103,147,148,217,218]},
-"15": {"ghunnah":[2,5,70,73,125,128],"idgham":[174,175],"madd":[66,67,96,97,113,114,161,163,178,179,183,184],"silent":[42,44,89,91,102,104,157,159],"wasl":[9,10,24,25,47,48,147,148,173,174]},
-"16": {"idgham":[68,69],"madd":[74,75,77,78,130,131],"wasl":[20,21,42,43,67,68,91,92,103,104]},
-"17": {"ghunnah":[4,7,50,53,76,80,95,98,141,145,145,148],"madd":[71,72,120,121,135,136,153,154,158,159],"silent":[34,36,54,56],"wasl":[83,84]},
-"18": {"ghunnah":[2,5,72,76],"idgham":[31,32],"madd":[37,38,40,41,89,90],"wasl":[6,7,30,31,46,47,58,59]}
+"1": {"ghunnah":[147,150],"madd_2":[123,124],"madd_246":[171,172],"madd_munfasil":[41,43],"silent":[70,72,87,89,134,136],"hamzat_wasl":[52,53,104,105,127,128,137,138,151,152]},
+"2": {"ghunnah":[81,84],"ikhfa":[157,161,186,189],"lam_shamsiyyah":[80,81],"madd_2":[57,58,112,113,174,175],"madd_246":[204,205],"madd_munfasil":[2,4,46,48],"qalqalah":[98,100],"silent":[31,33,48,50,105,107],"hamzat_wasl":[13,14,79,80,116,117]},
+"3": {"ghunnah":[2,5],"ikhfa":[43,46],"idghaam_ghunnah":[145,149],"idghaam_shafawi":[133,138],"lam_shamsiyyah":[118,119],"madd_2":[33,34],"madd_246":[160,161],"madd_muttasil":[69,71],"qalqalah":[122,124,151,153],"silent":[65,67],"hamzat_wasl":[6,7,55,56,76,77,86,87,96,97]},
+"4": {"ghunnah":[2,5],"idghaam_ghunnah":[31,35],"madd_2":[51,52],"madd_246":[80,81],"madd_muttasil":[37,39],"hamzat_wasl":[6,7,42,43]},
+"5": {"ghunnah":[9,12],"idghaam_no_ghunnah":[68,74,95,100],"madd_246":[102,103],"silent":[24,26],"hamzat_wasl":[81,82]},
+"6": {"ikhfa":[37,41,66,70,86,90,118,122],"iqlab":[56,60,104,109],"madd_2":[114,115,158,159],"madd_246":[163,164],"madd_munfasil":[2,4,30,32,79,81],"madd_muttasil":[41,43],"silent":[32,34,81,83,96,98,131,133],"hamzat_wasl":[13,14]},
+"7": {"ghunnah":[16,19,108,111],"idghaam_ghunnah":[71,76],"lam_shamsiyyah":[258,259],"madd_2":[105,106,147,148,162,163,262,263],"madd_246":[267,268],"madd_munfasil":[9,11],"madd_muttasil":[245,247],"silent":[11,13,241,243],"hamzat_wasl":[2,3,36,37,79,80,112,113,139,140,201,202,213,214,226,227,257,258]},
+"8": {"idghaam_ghunnah":[5,11,31,35],"madd_246":[55,56],"hamzat_wasl":[14,15,35,36]},
+"9": {"ghunnah":[264,267],"ikhfa":[4,8,198,202],"iqlab":[84,87],"madd_2":[100,101,129,130],"madd_246":[295,296],"madd_munfasil":[175,178,257,259],"madd_muttasil":[8,10,166,168,202,204],"qalqalah":[41,43,148,150,242,244,251,253,289,291],"silent":[50,52,64,66,135,137,220,222,259,261],"hamzat_wasl":[25,26,40,41,113,114,138,139,186,187,237,238,268,269,284,285]},
+"10": {"ghunnah":[2,5],"ikhfa":[31,35],"madd_246":[107,108],"silent":[44,46,76,78],"hamzat_wasl":[9,10,69,70,79,80]},
+"11": {"ghunnah":[153,156,172,175],"ikhfa":[57,61,197,200],"idghaam_ghunnah":[52,57,76,80,94,100,120,125,125,130,147,151,162,168],"idghaam_no_ghunnah":[291,296],"lam_shamsiyyah":[327,328],"madd_2":[237,238,283,284,331,332],"madd_246":[336,337],"madd_munfasil":[2,4,70,73,141,144,190,192],"madd_muttasil":[117,119,132,134,314,316],"qalqalah":[303,305],"silent":[31,33,86,88,192,194,223,225,310,312],"hamzat_wasl":[13,14,228,229,248,249,251,252,257,258,275,276,326,327]},
+"12": {"ghunnah":[67,70,73,76,89,92,247,250],"ikhfa":[206,211],"ikhfa_shafawi":[142,146],"idghaam_ghunnah":[53,59,98,102,175,179],"idghaam_no_ghunnah":[266,271],"lam_shamsiyyah":[63,64,85,86],"madd_246":[273,274],"madd_munfasil":[2,4],"qalqalah":[35,37],"silent":[31,33,44,46,116,118,234,236],"hamzat_wasl":[13,14,34,35,62,63,84,85,227,228,237,238,251,252]},
+"13": {"ghunnah":[15,18,24,27,120,123,166,169],"ikhfa":[45,49,58,61,139,142],"idghaam_ghunnah":[52,56,86,91],"idghaam_shafawi":[40,45],"lam_shamsiyyah":[14,15],"madd_2":[37,38,74,75,158,159],"madd_246":[190,191],"madd_munfasil":[2,4,113,115],"madd_muttasil":[95,97],"qalqalah":[33,35],"silent":[115,117],"hamzat_wasl":[13,14,143,144,170,171]},
+"14": {"ghunnah":[26,29,88,91,213,216],"ikhfa":[60,64,134,138],"idghaam_no_ghunnah":[231,236],"idghaam_shafawi":[180,185],"madd_2":[57,58,110,111,166,167,194,195],"madd_246":[238,239],"madd_munfasil":[67,69],"qalqalah":[95,97],"silent":[50,52,69,71,144,146],"hamzat_wasl":[8,9,102,103,147,148,217,218]},
+"15": {"ghunnah":[2,5,70,73],"ikhfa":[125,128],"lam_shamsiyyah":[174,175],"madd_2":[66,67,96,97,113,114,178,179],"madd_246":[183,184],"madd_muttasil":[161,163],"silent":[42,44,89,91,102,104,157,159],"hamzat_wasl":[9,10,24,25,47,48,147,148,173,174]},
+"16": {"lam_shamsiyyah":[68,69],"madd_2":[74,75,77,78],"madd_246":[130,131],"hamzat_wasl":[20,21,42,43,67,68,91,92,103,104]},
+"17": {"ghunnah":[4,7,50,53,95,98],"ikhfa":[141,145,145,148],"ikhfa_shafawi":[76,80],"madd_2":[71,72,120,121,135,136,153,154],"madd_246":[158,159],"silent":[34,36,54,56],"hamzat_wasl":[83,84]},
+"18": {"ghunnah":[2,5],"iqlab":[72,76],"lam_shamsiyyah":[31,32],"madd_2":[37,38,40,41],"madd_246":[89,90],"hamzat_wasl":[6,7,30,31,46,47,58,59]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/5.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/5.json
index 2da1d28..081b9d0 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/5.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/5.json
@@ -1,122 +1,122 @@
{
-"1": {"ghunnah":[111,115,197,200,212,215],"idgham":[184,185],"madd":[41,43,69,71,132,133,241,242],"qalqalah":[242,243],"silent":[71,73,81,83],"wasl":[52,53,86,87,123,124,183,184,216,217]},
-"2": {"ghunnah":[142,145,266,269,294,298,337,341,467,470],"idgham":[75,76,187,193,193,198,216,221,384,385],"madd":[2,4,53,55,124,126,135,137,214,215,441,442,494,495],"madd-lazim":[140,142],"qalqalah":[106,108,172,174,260,262,388,390,437,439,495,496],"silent":[31,33,46,48,249,251,348,350,363,365,411,413,454,456],"wasl":[13,14,60,61,74,75,84,85,101,102,117,118,149,150,159,160,240,241,312,313,324,325,372,373,383,384,420,421,432,433,447,448,457,458,471,472,487,488]},
-"3": {"ghunnah":[57,60,160,163,239,242,251,255,340,344,489,494,550,554,556,559],"idgham":[36,37,159,160,186,187,238,239,540,545,574,579],"madd":[68,70,100,101,175,177,280,281,286,287,481,482,581,582],"qalqalah":[259,261],"silent":[266,268,335,337],"wasl":[21,22,35,36,52,53,88,89,104,105,122,123,139,140,158,159,185,186,237,238,271,272,301,302,318,319,373,374,383,384,472,473,499,500,560,561]},
-"4": {"ghunnah":[135,138,141,144,178,181,264,267],"idgham":[59,60,87,92],"madd":[20,22,68,69,181,183,291,292],"qalqalah":[292,293],"silent":[173,175,216,218,251,253],"wasl":[58,59,95,96,158,159,208,209,219,220,225,226,244,245,254,255,268,269,284,285]},
-"5": {"ghunnah":[212,216,246,249,259,262],"idgham":[26,27,83,88,111,116,321,325,327,331],"madd":[35,36,75,76,134,135,154,155,171,172,206,207,229,231,286,287,310,312,348,349,374,375,410,411,415,416],"qalqalah":[216,218,356,358],"silent":[65,67,196,198],"wasl":[25,26,49,50,68,69,123,124,143,144,160,161,180,181,199,200,340,341,387,388,405,406]},
-"6": {"ghunnah":[193,197,197,200,208,213,230,234,234,237,291,294,333,336,365,369,373,376,388,393,397,402,543,546],"idgham":[57,58,237,242,286,291,294,299,332,333,438,443,487,492,500,504,509,513],"madd":[2,4,30,32,64,65,246,249,276,278,307,309,321,322,338,340,362,364,506,507,557,558,590,591],"qalqalah":[472,474],"silent":[32,34,63,64,78,80,137,139,223,225,357,359,379,381,410,412],"wasl":[13,14,56,57,70,71,114,115,129,130,175,176,213,214,302,303,331,332,402,403,460,461]},
-"7": {"ghunnah":[71,75,138,141,156,160],"idgham":[168,169],"madd":[48,49,77,79,174,175],"silent":[10,12,125,127],"wasl":[2,3,22,23,54,55,118,119,128,129,142,143,167,168]},
-"8": {"ghunnah":[100,103,213,216,231,235],"idgham":[180,181],"madd":[2,4,48,49,69,71,130,133,248,249],"qalqalah":[94,96,171,173,184,186],"silent":[31,33,40,42,150,152,161,163,200,202],"wasl":[13,14,76,77,153,154,193,194,203,204,217,218]},
-"9": {"idgham":[49,50,66,71,78,82],"madd":[53,54,58,59,93,94],"qalqalah":[84,86],"silent":[33,35,45,47],"wasl":[7,8,15,16,48,49]},
-"10": {"madd":[43,44,48,50,57,59,70,71,81,82],"silent":[19,21,32,34,53,55],"wasl":[2,3,74,75]},
-"11": {"ghunnah":[80,83,155,158],"idgham":[93,97],"madd":[2,4,103,105,224,225],"qalqalah":[97,99],"silent":[31,33,42,44,105,107,170,172],"wasl":[13,14,34,35,54,55,163,164,173,174,189,190,213,214]},
-"12": {"ghunnah":[117,120,194,197,197,201,279,282,285,288,319,322,329,332,334,338,346,350,375,379,401,404],"idgham":[96,101,150,151,176,177,264,270,430,431],"madd":[29,30,37,39,46,48,157,158,183,184,332,333,367,368,393,394,424,426,436,437],"qalqalah":[6,8,232,234,313,315,338,340,411,413],"silent":[156,157,182,183],"wasl":[16,17,75,76,107,108,149,150,175,176,243,244,358,359,429,430]},
-"13": {"ghunnah":[36,39,140,143,269,272],"idgham":[16,21,77,81,104,109,134,140,202,207,227,233],"madd":[24,25,39,40,71,72,118,119,160,161,195,197,300,301],"qalqalah":[10,12],"silent":[127,129,153,155],"wasl":[92,93,242,243,259,260,273,274,289,290]},
-"14": {"ghunnah":[29,32,88,91],"idgham":[82,88],"madd":[22,24,38,39,41,44,60,61,108,109,159,161,185,186,245,246],"silent":[24,26,75,77,101,103,234,236],"wasl":[7,8,135,136,150,151,178,179,214,215]},
-"15": {"ghunnah":[78,81,85,88,131,135,139,143],"idgham":[72,78,154,159,174,178,184,189],"madd":[2,4,18,19,29,31,113,114,148,150,182,183,191,192],"qalqalah":[24,26,143,145],"silent":[126,128],"wasl":[11,12,106,107,162,163]},
-"16": {"ghunnah":[107,110],"idgham":[56,57,78,83,87,88,106,107,153,158],"madd":[41,42,46,47,62,63,95,96,124,125,151,152,164,165],"wasl":[13,14,26,27,55,56,86,87,105,106]},
-"17": {"ghunnah":[37,40,178,181,189,193,325,329],"idgham":[89,93,137,141,211,216,232,233],"madd":[30,32,183,184,238,239,241,242,292,294,331,332],"qalqalah":[5,7,66,68,160,162],"silent":[32,34],"wasl":[15,16,41,42,54,55,65,66,105,106,148,149,159,160,195,196,231,232,247,248,299,300]},
-"18": {"ghunnah":[25,28,104,108,117,121,126,129,129,133,141,144],"idgham":[24,25,136,141,167,171,192,196,221,222],"madd":[30,31,49,51,73,75,79,80,173,175,198,200,227,228,230,231,282,283],"qalqalah":[45,47],"silent":[53,55],"wasl":[10,11,23,24,56,57,220,221,236,237,275,276]},
-"19": {"ghunnah":[100,104,130,133,152,156,169,173,217,221],"idgham":[80,85,89,90,138,142,177,181,187,191],"madd":[2,4,18,19,29,31,119,121,163,165,223,224],"qalqalah":[24,26,158,160],"silent":[110,112],"wasl":[11,12,88,89,191,192]},
-"20": {"ghunnah":[105,107],"idgham":[125,130,134,139,148,153,172,178],"madd":[31,32,35,36,110,112,145,146,186,187,191,192],"silent":[51,53],"wasl":[43,44,63,64,181,182]},
-"21": {"ghunnah":[121,124],"madd":[2,3,99,102,134,135,139,140],"qalqalah":[11,13,105,107],"silent":[18,20,92,94,129,131],"wasl":[10,11,21,22,31,32,46,47,61,62]},
-"22": {"ghunnah":[23,26,39,44,58,61,138,141],"idgham":[65,70,112,116],"madd":[11,12,17,20,145,146,150,151],"qalqalah":[70,72],"silent":[6,8,97,99,123,125]},
-"23": {"ghunnah":[128,131,181,185,185,188],"idgham":[188,193],"madd":[138,139,174,176,199,200],"qalqalah":[72,74],"silent":[79,81,176,178],"wasl":[21,22,51,52,71,72,93,94,155,156]},
-"24": {"ghunnah":[23,26,87,90,115,118],"idgham":[30,35,51,57],"madd":[11,12,17,20,43,45,105,106,110,112,122,123,131,132,136,137],"qalqalah":[35,37,82,84],"silent":[6,8,65,67],"wasl":[77,78]},
-"25": {"ghunnah":[14,17],"madd":[21,23,100,101,105,106],"qalqalah":[63,65],"wasl":[58,59,85,86,95,96]},
-"26": {"ghunnah":[10,13],"idgham":[57,61],"madd":[118,119,123,124],"wasl":[74,75,103,104,113,114]},
-"27": {"ghunnah":[75,80,158,161,172,175],"madd":[214,215],"qalqalah":[27,29,152,154],"wasl":[2,3,26,27,44,45,131,132,191,192,204,205]},
-"28": {"ghunnah":[5,8,97,100],"idgham":[64,68],"madd":[46,48,100,102,130,131,135,136],"qalqalah":[34,36,86,88],"wasl":[111,112,125,126]},
-"29": {"ghunnah":[2,5,18,22,77,80],"idgham":[76,77,106,107],"madd":[5,7,24,26,71,72,88,89,98,100,110,111,115,116],"silent":[102,104],"wasl":[75,76,105,106]},
-"30": {"madd":[16,17,26,27,53,54,76,77,81,82],"wasl":[71,72]},
-"31": {"ghunnah":[209,212],"idgham":[23,28,208,209],"madd":[59,60,72,73,102,103,111,114,148,149,170,171,212,213,217,218],"qalqalah":[28,30],"wasl":[9,10,39,40,153,154,207,208]},
-"32": {"ghunnah":[60,63,69,73,83,88,114,118,136,139,152,155,192,195,210,213,276,279,282,285,302,306],"idgham":[151,152,165,170,209,210,223,228,292,298],"madd":[14,15,41,43,50,52,65,66,197,199,237,239,270,271,313,314,343,344],"qalqalah":[7,9,24,26,232,234],"wasl":[120,121,150,151,208,209,260,261,323,324]},
-"33": {"ghunnah":[2,5,199,202,242,246],"idgham":[102,106,176,181,249,250],"madd":[13,15,62,63,113,115,132,134,188,189,224,225,297,298],"silent":[17,19,115,117,134,136,204,206],"wasl":[20,21,43,44,81,82,212,213,248,249,272,273]},
-"34": {"ghunnah":[28,32,39,43,80,83],"idgham":[98,103],"madd":[73,75,105,106],"qalqalah":[32,34,43,45],"silent":[23,25,50,52,75,77],"wasl":[7,8,66,67,84,85]},
-"35": {"madd":[2,4,61,63,92,93,114,115,136,137],"qalqalah":[55,57],"silent":[31,33,41,43,63,65,98,100],"wasl":[13,14,34,35,44,45,54,55,75,76]},
-"36": {"ghunnah":[2,5,33,36],"idgham":[41,46,68,73],"madd":[81,82,89,90,109,110,138,139,188,189],"silent":[23,25,102,104],"wasl":[6,7,52,53,131,132]},
-"37": {"ghunnah":[34,37,49,53],"idgham":[13,17,33,34,87,92],"madd":[55,56,94,95],"silent":[24,26],"wasl":[32,33]},
-"38": {"ghunnah":[63,67],"idgham":[3,4,16,17,86,92],"madd":[37,39,60,62,84,85,125,126],"qalqalah":[31,33],"silent":[39,41],"wasl":[2,3,15,16,30,31,95,96,105,106]},
-"39": {"ghunnah":[4,8,15,18,49,52,80,83],"idgham":[98,103],"madd":[32,33,105,106],"wasl":[53,54,84,85]},
-"40": {"ghunnah":[18,21,146,150],"idgham":[44,45,81,85,107,111],"madd":[34,35,50,51,53,54,87,89,113,115,152,153],"wasl":[22,23,43,44,59,60,120,121]},
-"41": {"ghunnah":[34,37,105,108,139,143,181,184,204,207,275,278,414,418],"idgham":[14,15,345,350,381,385,498,502,534,535,549,553],"madd":[2,4,52,53,95,97,118,119,184,185,207,208,295,296,326,327,408,409,429,430,459,461,589,590],"silent":[97,99,176,178,374,376,455,457],"wasl":[13,14,38,39,65,66,80,81,160,161,262,263,366,367,390,391,436,437,466,467,488,489,533,534,564,565]},
-"42": {"ghunnah":[2,5,50,54,69,73,109,113,178,182,188,192,204,207],"idgham":[37,38,133,137,152,157],"madd":[5,6,28,29,54,56,235,236],"qalqalah":[229,231],"wasl":[64,65,173,174,192,193,208,209,224,225]},
-"43": {"ghunnah":[28,31,74,77,95,98],"idgham":[37,38],"madd":[46,47,106,107,116,118,125,127,145,146],"silent":[121,123],"wasl":[36,37,64,65,134,135]},
-"44": {"ghunnah":[2,5,10,13,71,74,183,187,251,254,306,311,336,340,347,350],"idgham":[20,21,43,48,52,56,70,71,128,129,250,251,315,320,322,327],"madd":[5,7,29,30,135,136,189,190,227,229,296,297,342,344,369,371,386,387,391,392],"silent":[102,104,122,124,178,180,209,211,246,248,285,287,365,367],"wasl":[19,20,69,70,83,84,127,128,147,148,166,167,193,194,249,250,260,261,353,354,381,382]},
-"45": {"ghunnah":[33,36,39,42,51,54,90,93,101,104,136,139,147,150,170,174,176,180,237,241,248,251],"idgham":[38,39,50,51,132,133,143,144,210,215,223,228,283,284],"madd":[28,30,192,193,217,218,243,245,270,272,287,288,292,293],"qalqalah":[6,8],"silent":[266,268],"wasl":[37,38,49,50,61,62,73,74,85,86,96,97,107,108,119,120,131,132,142,143,153,154,254,255,282,283]},
-"46": {"ghunnah":[31,35,130,133],"idgham":[65,71,97,98,146,151,155,159,167,173,199,200,217,222,231,236],"madd":[17,20,26,27,106,107,121,122,208,209,245,246],"qalqalah":[43,45],"wasl":[42,43,96,97,125,126,198,199]},
-"47": {"ghunnah":[25,28,41,44,79,83,90,93],"idgham":[65,70],"madd":[36,38,85,87,112,114,129,130,134,135],"silent":[108,110],"wasl":[20,21,47,48,96,97,124,125]},
-"48": {"ghunnah":[4,7,125,129,135,139,146,149,193,196,227,231,241,244,306,309,429,434,445,449,455,458],"idgham":[53,59,254,258,266,271,310,314,320,324,329,334],"madd":[11,13,30,31,91,92,141,143,182,184,200,202,278,280,314,315,326,327,353,355,362,363,392,393,477,478],"qalqalah":[336,338],"silent":[380,382],"wasl":[23,24,36,37,84,85,120,121,152,153,212,213,283,284,370,371,383,384,402,403]},
-"49": {"ghunnah":[12,16,22,26,33,36,111,114,127,130,154,158,180,183,216,220,243,246,264,267],"idgham":[94,98,205,209,253,259,263,264],"madd":[28,30,69,71,122,124,275,276,280,281],"silent":[165,167],"wasl":[7,8,39,40,80,81,133,134,170,171,195,196,262,263]},
-"50": {"idgham":[71,77,82,86],"madd":[16,17,91,92],"qalqalah":[29,31],"wasl":[11,12,58,59]},
-"51": {"ghunnah":[66,69,144,147,154,157,172,175],"idgham":[65,66,120,124,126,130,139,144,207,208],"madd":[2,4,71,72,74,77,86,88,110,112,159,160,211,212,216,217],"silent":[31,33,48,50],"wasl":[13,14,51,52,64,65,176,177,196,197,206,207]},
-"52": {"ghunnah":[85,89,107,111,170,173,221,224],"idgham":[31,36,39,43,127,131,160,165],"madd":[45,46,79,82,100,102,175,176,200,202,216,218,233,234,238,239],"silent":[188,190,211,213],"wasl":[8,9,117,118,140,141]},
-"53": {"ghunnah":[102,105],"madd":[27,29,36,38,42,44,92,93,136,137,160,161,165,166],"qalqalah":[59,61],"silent":[29,31,66,68,155,157],"wasl":[10,11,47,48,71,72]},
-"54": {"ghunnah":[50,53,58,62,259,263],"idgham":[36,40,101,105,296,300],"madd":[2,4,67,68,129,131,184,185,197,198,254,256,263,264,302,304,319,320,329,330],"silent":[31,33],"wasl":[13,14,86,87,148,149,179,180,218,219,276,277,309,310]},
-"55": {"ghunnah":[2,5],"idgham":[87,88,111,112],"madd":[40,41,94,95,118,119,131,132,136,137],"silent":[62,64,93,94,117,118],"wasl":[21,22,44,45,65,66,86,87,110,111]},
-"56": {"ghunnah":[64,67],"idgham":[4,8],"madd":[35,36,93,94,98,99],"silent":[57,59],"wasl":[16,17,39,40,75,76,88,89]},
-"57": {"ghunnah":[139,143,201,205,205,208],"idgham":[88,93,98,104,208,213],"madd":[2,4,133,134,174,176,219,220],"qalqalah":[143,145],"silent":[31,33,48,50,70,72,123,125,188,190],"wasl":[13,14,51,52,61,62,107,108,126,127,154,155,181,182,191,192]},
-"58": {"ghunnah":[66,71,81,84],"idgham":[27,28,56,61,94,99],"madd":[34,35,71,72,109,110],"silent":[33,34],"wasl":[26,27,38,39]},
-"59": {"ghunnah":[34,37,45,48,69,72,93,96,118,121,126,130,139,142],"madd":[7,9,23,24,48,50,56,58,88,90,113,115,158,159,163,164],"qalqalah":[130,132],"wasl":[16,17,76,77]},
-"60": {"ghunnah":[21,25,34,38,56,59,216,220],"idgham":[29,34,70,75,164,165,192,197,201,206,228,229],"madd":[38,39,168,169,181,183,222,224,234,235],"silent":[177,179],"wasl":[60,61,82,83,126,127,140,141,163,164,227,228]},
-"61": {"ghunnah":[35,38],"madd":[10,12,25,27,95,96,139,140],"qalqalah":[78,80],"silent":[27,29,54,56,88,90,128,130],"wasl":[59,60,99,100]},
-"62": {"idgham":[15,21,84,85],"madd":[32,33,66,67,123,124],"qalqalah":[62,64],"silent":[112,114],"wasl":[45,46,57,58,83,84]},
-"63": {"ghunnah":[56,60],"idgham":[22,23,93,94],"madd":[15,16,29,30,132,133],"silent":[121,123],"wasl":[21,22,41,42,69,70,92,93]},
-"64": {"ghunnah":[123,126,156,159,186,189],"idgham":[166,172,176,181,203,208,222,227,232,237,342,348,410,415],"madd":[140,142,181,183,220,221,267,268,284,286,310,311,323,325,446,447],"qalqalah":[108,110,359,361],"silent":[75,77,90,92,335,337],"wasl":[10,11,26,27,260,261,275,276,303,304,369,370,394,395,415,416,435,436]},
-"65": {"ghunnah":[9,12,115,118,124,127],"idgham":[123,124],"madd":[27,28,107,108,118,119,129,130],"qalqalah":[99,101],"silent":[39,41,52,54],"wasl":[20,21,44,45,122,123]},
-"66": {"ghunnah":[9,12,49,52,65,68,111,115,128,132,161,164],"idgham":[29,30,79,84,84,89,147,152,165,170,179,183,189,194],"madd":[38,39,60,62,203,205,220,221],"qalqalah":[170,172],"silent":[25,27,106,108],"wasl":[28,29,44,45]},
-"67": {"ghunnah":[39,42,145,148,154,157],"idgham":[14,15,56,61,71,76,144,145],"madd":[2,4,34,36,115,116,193,194,198,199],"wasl":[13,14,119,120,143,144,158,159,178,179,188,189]},
-"68": {"ghunnah":[90,93,106,109,149,152,179,182,225,230],"idgham":[70,71,120,125,125,130,159,165,169,174,196,201,215,220],"madd":[7,9,23,24,79,80,101,103,174,176,213,214,262,263,267,268],"silent":[66,68],"wasl":[16,17,69,70,85,86,247,248,257,258]},
-"69": {"ghunnah":[2,5,69,72,141,146],"idgham":[51,52,68,69],"madd":[55,56,74,75,137,138,187,188],"silent":[24,26,45,47],"wasl":[6,7,29,30,50,51,67,68,95,96,105,106,115,116]},
-"70": {"ghunnah":[78,83,107,111,132,135,148,153],"idgham":[170,175],"madd":[22,23,30,32,39,41,59,61,92,94,126,129,181,182],"qalqalah":[4,6,175,177],"silent":[159,161]},
-"71": {"ghunnah":[35,39,51,54,60,63,91,94,107,110,148,152],"idgham":[120,125],"madd":[8,10,165,166],"silent":[10,12,44,46,55,57,100,102,111,113],"wasl":[70,71,134,135]},
-"72": {"ghunnah":[36,39,162,165,229,232,250,253,285,288],"idgham":[171,175,249,250,265,266],"madd":[29,31,100,101,105,107,114,116,167,168,244,245,269,270,288,289],"qalqalah":[4,6,65,67,196,198],"silent":[31,33,130,132],"wasl":[14,15,40,41,53,54,64,65,87,88,122,123,133,134,184,185,207,208,224,225,248,249]},
-"73": {"ghunnah":[37,40,124,127,135,138,160,163],"idgham":[65,69,100,104,108,112,114,119],"madd":[30,32,61,62,82,83,91,93,98,99,104,105,205,206],"qalqalah":[5,7],"silent":[32,34,130,132,181,183],"wasl":[15,16,41,42,164,165]},
-"74": {"idgham":[70,75],"madd":[52,53,77,78],"wasl":[25,26,56,57]},
-"75": {"ghunnah":[44,48,60,64,85,88,101,105,134,137,178,181,183,186,191,194],"idgham":[72,73,123,124],"madd":[90,91,172,173,205,206],"qalqalah":[17,19,48,50,64,66],"wasl":[5,6,16,17,71,72,122,123,133,134,164,165,182,183]},
-"76": {"ghunnah":[21,25],"idgham":[65,70,79,84,98,99],"madd":[115,116],"wasl":[29,30,84,85,97,98,108,109]},
-"77": {"ghunnah":[107,111,125,129,169,173],"idgham":[153,158,181,182],"madd":[7,9,23,24,86,88,97,99,175,177,187,188],"qalqalah":[111,113,129,131],"silent":[38,40,88,90,120,122,144,146,164,166],"wasl":[16,17,62,63,180,181]},
-"78": {"ghunnah":[30,33],"madd":[36,38,45,47,73,74,103,104,143,144],"qalqalah":[87,89],"silent":[24,26,120,122,132,134],"wasl":[7,8,86,87]},
-"79": {"ghunnah":[34,37,38,42],"idgham":[29,34],"madd":[80,81],"silent":[6,8,69,71]},
-"80": {"ghunnah":[92,95,104,108],"idgham":[13,19],"madd":[156,157,161,162],"silent":[57,59],"wasl":[40,41,113,114,138,139]},
-"81": {"ghunnah":[42,45,60,63,113,116],"idgham":[41,42,123,129],"madd":[55,57,101,103,110,111,138,139,143,144],"silent":[13,15],"wasl":[30,31,40,41,79,80]},
-"82": {"ghunnah":[8,11,22,25,107,110,179,182,206,209,248,251],"idgham":[21,22,37,42,121,126,132,137,241,246],"madd":[33,34,172,174,188,189,196,197,272,273],"qalqalah":[113,115],"silent":[59,61,94,96,154,156,174,176],"wasl":[20,21,62,63,75,76,157,158]},
-"83": {"ghunnah":[25,28,94,97,149,152],"idgham":[38,39,83,84,173,174],"madd":[20,22,52,55,141,143,177,178,182,183],"qalqalah":[161,163],"silent":[15,17,106,108],"wasl":[37,38,82,83,114,115,156,157,172,173]},
-"84": {"idgham":[78,82,117,118],"madd":[43,45,121,122,126,127],"qalqalah":[69,71,82,84],"wasl":[27,28,56,57,106,107,116,117]},
-"85": {"ghunnah":[39,42,44,48,56,60],"madd":[6,7,42,43,77,78,83,84,103,104,113,115,129,130],"qalqalah":[48,50],"silent":[34,36],"wasl":[14,15,68,69,118,119]},
-"86": {"madd":[43,44,48,50,57,59,70,71,81,82],"silent":[19,21,32,34,53,55],"wasl":[2,3,74,75]},
-"87": {"ghunnah":[111,114],"madd":[2,4,58,59,64,66,104,106,146,147],"silent":[31,33,48,50,106,108],"wasl":[13,14,75,76,115,116,135,136]},
-"88": {"ghunnah":[12,15,42,47,85,88,88,92],"idgham":[51,56],"madd":[40,41,80,82,94,95,104,105],"silent":[7,9,63,65],"wasl":[28,29,56,57,66,67,74,75]},
-"89": {"ghunnah":[77,81,239,243,287,291],"idgham":[29,30,64,68,90,91,245,250],"madd":[40,42,49,50,61,62,106,107,117,118,124,126,150,151,274,275,291,292,302,303,314,315,348,350,359,360,371,372,407,408,412,413,434,435],"qalqalah":[129,131,177,179,257,259],"silent":[350,352],"wasl":[18,19,28,29,97,98,341,342,387,388]},
-"90": {"ghunnah":[37,40,75,78],"idgham":[102,107,118,119],"madd":[2,4,30,32,93,94,126,127,165,166],"qalqalah":[99,101,133,135],"silent":[32,34],"wasl":[13,14,44,45,56,57,70,71,84,85,117,118,132,133]},
-"91": {"ghunnah":[2,5,126,130,171,174,179,182],"idgham":[18,19,32,36,151,152,174,179],"madd":[26,27,60,61,77,79,158,159,184,185],"silent":[157,158],"wasl":[17,18,53,54,68,69,86,87,98,99,135,136,150,151]},
-"92": {"ghunnah":[62,66,94,97],"idgham":[35,36],"madd":[87,89,126,127,137,138],"silent":[10,12,31,33,55,57,89,91],"wasl":[13,14,34,35,47,48,80,81,119,120,130,131]},
-"93": {"ghunnah":[66,70,148,151,178,181],"idgham":[47,48,133,134],"madd":[51,52,56,57,81,83,137,138,142,143,236,237],"silent":[31,33,43,45,83,85,103,105,117,119,129,131,159,161,173,175,189,191,204,206],"wasl":[13,14,46,47,96,97,132,133,152,153,182,183,209,210,225,226]},
-"94": {"ghunnah":[44,47],"idgham":[67,72,76,77,144,148],"madd":[2,4,94,96,155,156,195,196,207,208,221,222],"qalqalah":[38,40],"silent":[31,33],"wasl":[13,14,52,53,75,76,134,135,159,160,176,177]},
-"95": {"ghunnah":[64,67,81,85,95,98,107,110,111,116,151,154,190,193,201,206,239,243,334,337,363,366,402,406,409,412],"idgham":[51,52,75,79,98,103,123,128,150,151,185,190,286,292],"madd":[2,4,91,92,120,122,172,173,207,208,235,236,253,254,274,275,316,317,414,415],"qalqalah":[40,42,182,184,198,200,267,269],"silent":[31,33,47,49],"wasl":[13,14,50,51,149,150,213,214,324,325,371,372,388,389,408,409]},
-"96": {"idgham":[51,57,66,67,134,139],"madd":[43,44,49,50,163,165,183,184],"silent":[146,148],"wasl":[22,23,107,108,139,140,149,150,157,158]},
-"97": {"ghunnah":[61,64,144,147,211,214],"idgham":[54,60,60,61,71,72,174,175],"madd":[52,53,112,114,121,122,137,139,180,181,183,184,242,243],"qalqalah":[98,100],"silent":[139,141],"wasl":[7,8,15,16,27,28,37,38,70,71,80,81,93,94,105,106,148,149,173,174,197,198,215,216]},
-"98": {"ghunnah":[14,17,49,52],"idgham":[67,72],"madd":[7,9,74,75],"silent":[9,11],"wasl":[18,19,34,35,53,54]},
-"99": {"idgham":[12,13],"madd":[36,37,87,88],"qalqalah":[65,67],"wasl":[11,12,29,30,42,43]},
-"100": {"idgham":[33,34],"madd":[103,105,122,123,146,147],"silent":[90,92,107,109],"wasl":[19,20,32,33,70,71,83,84,93,94,113,114]},
-"101": {"ghunnah":[69,73,100,104],"madd":[2,4,62,64,210,211],"qalqalah":[73,75,154,156],"silent":[31,33,48,50,112,114],"wasl":[13,14,139,140,172,173,190,191]},
-"102": {"ghunnah":[25,29,40,43],"idgham":[20,25],"madd":[64,65,69,70],"qalqalah":[2,4,29,31],"silent":[53,55]},
-"103": {"ghunnah":[22,25,86,89],"idgham":[32,36,49,53,65,69,77,81],"madd":[42,44,83,84,173,174],"silent":[107,109],"wasl":[11,12,90,91,128,129,136,137]},
-"104": {"ghunnah":[47,50],"idgham":[70,71,187,192],"madd":[42,44,127,129,133,135,156,158,204,205],"qalqalah":[107,109],"silent":[30,32,86,88],"wasl":[53,54,69,70]},
-"105": {"ghunnah":[47,50,75,79,136,141,152,156,162,165],"idgham":[70,75],"madd":[2,4,176,177],"silent":[31,33],"wasl":[13,14,89,90,109,110]},
-"106": {"ghunnah":[133,136,178,181,265,268,416,419],"idgham":[128,133,222,227,275,276,352,357,425,431],"madd":[2,4,38,39,215,216,282,283,345,346,400,401,419,421,446,447],"qalqalah":[125,127,188,190,290,292,320,322],"silent":[31,33,281,282],"wasl":[13,14,79,80,95,96,108,109,199,200,235,236,274,275,302,303,315,316,406,407,436,437]},
-"107": {"ghunnah":[24,27,51,56,194,198,233,236],"idgham":[242,248,254,255],"madd":[18,21,43,45,140,141,174,175,181,183,200,201,228,230,236,238,258,259,263,264],"qalqalah":[148,150],"wasl":[33,34,97,98,107,108,129,130,160,161,217,218,253,254]},
-"108": {"ghunnah":[84,88,102,106],"idgham":[20,24,35,36],"madd":[2,3,14,17,41,42,62,64,77,79,100,101,118,119,196,197,201,202],"qalqalah":[10,12,56,58],"silent":[29,31,79,81,135,137,156,158],"wasl":[34,35,128,129,138,139,148,149,161,162,181,182,191,192]},
-"109": {"ghunnah":[92,95,100,103],"idgham":[25,26],"madd":[49,51,87,89,109,110,120,121],"qalqalah":[9,11,56,58,121,122],"silent":[69,71],"wasl":[16,17,24,25,113,114]},
-"110": {"ghunnah":[139,142,237,240,310,313,338,343,476,479,493,497],"idgham":[102,103,138,139,167,172,217,218,266,267,287,288,573,578],"madd":[21,22,82,83,196,197,226,227,457,459,466,468,507,508,555,556,558,560,580,581],"qalqalah":[30,32,356,358,382,384],"silent":[536,538],"wasl":[11,12,29,30,44,45,117,118,137,138,150,151,189,190,202,203,216,217,232,233,265,266,286,287,363,364,377,378,415,416,497,498,519,520]},
-"111": {"ghunnah":[89,92,108,111],"madd":[37,38,79,81,123,124],"qalqalah":[101,103],"silent":[54,56,81,83],"wasl":[24,25,96,97]},
-"112": {"ghunnah":[157,161,161,164],"idgham":[80,84,111,116,120,121,164,169],"madd":[30,31,104,106,126,128,175,176],"qalqalah":[39,41],"silent":[144,146],"wasl":[11,12,38,39,119,120,137,138,147,148]},
-"113": {"ghunnah":[49,52,77,81],"idgham":[19,24,122,123],"madd":[126,127,131,132],"qalqalah":[43,45,81,83,88,90],"silent":[6,8],"wasl":[121,122]},
-"114": {"ghunnah":[35,38,51,54,157,160,178,181],"idgham":[29,30,76,81,85,86,114,120,152,157,190,191],"madd":[46,48,69,71,91,93,194,195,199,200],"qalqalah":[14,16,168,170],"wasl":[13,14,28,29,84,85,163,164,189,190]},
-"115": {"ghunnah":[16,19,69,72,79,82],"idgham":[49,53,104,110,132,138],"madd":[82,84,96,97,110,112,124,126,146,147,151,152],"wasl":[6,7,141,142]},
-"116": {"ghunnah":[50,53,64,67,88,91,108,112,197,201,201,204,294,297,302,305],"idgham":[63,64],"madd":[23,24,98,99,136,137,156,158,213,214,232,233,263,265,311,312,322,323],"qalqalah":[32,34,132,134,219,221,323,324],"wasl":[13,14,31,32,71,72,116,117,315,316]},
-"117": {"ghunnah":[96,99,144,147,166,169,172,175,202,205,224,228],"idgham":[117,123,177,178],"madd":[27,29,46,48,230,231],"qalqalah":[231,232],"silent":[62,64],"wasl":[54,55,65,66,176,177]},
-"118": {"ghunnah":[2,6,22,25,44,48,66,69,74,77],"madd":[96,97],"qalqalah":[11,13],"wasl":[78,79,89,90]},
-"119": {"ghunnah":[30,33,70,73,75,79,87,91],"idgham":[37,38,136,142],"madd":[16,17,41,42,73,74,108,109,114,115,128,130,183,184,206,207],"qalqalah":[52,54,79,81],"silent":[171,173],"wasl":[6,7,36,37,99,100,147,148,189,190,199,200]},
-"120": {"ghunnah":[52,55,81,85],"idgham":[16,17],"madd":[22,23,25,26,87,88],"wasl":[15,16,31,32]}
+"1": {"ghunnah":[212,215],"ikhfa":[197,200],"ikhfa_shafawi":[111,115],"lam_shamsiyyah":[184,185],"madd_2":[132,133],"madd_246":[241,242],"madd_munfasil":[41,43,69,71],"qalqalah":[242,243],"silent":[71,73,81,83],"hamzat_wasl":[52,53,86,87,123,124,183,184,216,217]},
+"2": {"ghunnah":[142,145,266,269,467,470],"ikhfa":[294,298,337,341],"idghaam_ghunnah":[187,193,216,221],"idghaam_no_ghunnah":[193,198],"lam_shamsiyyah":[75,76,384,385],"madd_2":[214,215,441,442],"madd_246":[494,495],"madd_munfasil":[2,4,135,137],"madd_muttasil":[53,55,124,126],"madd_6":[140,142],"qalqalah":[106,108,172,174,260,262,388,390,437,439,495,496],"silent":[31,33,46,48,249,251,348,350,363,365,411,413,454,456],"hamzat_wasl":[13,14,60,61,74,75,84,85,101,102,117,118,149,150,159,160,240,241,312,313,324,325,372,373,383,384,420,421,432,433,447,448,457,458,471,472,487,488]},
+"3": {"ghunnah":[160,163,239,242,556,559],"ikhfa":[57,60,251,255,340,344,489,494,550,554],"idghaam_no_ghunnah":[540,545,574,579],"lam_shamsiyyah":[36,37,159,160,186,187,238,239],"madd_2":[100,101,280,281,286,287,481,482],"madd_246":[581,582],"madd_munfasil":[68,70,175,177],"qalqalah":[259,261],"silent":[266,268,335,337],"hamzat_wasl":[21,22,35,36,52,53,88,89,104,105,122,123,139,140,158,159,185,186,237,238,271,272,301,302,318,319,373,374,383,384,472,473,499,500,560,561]},
+"4": {"ghunnah":[135,138,141,144,178,181,264,267],"idghaam_shafawi":[87,92],"lam_shamsiyyah":[59,60],"madd_2":[68,69],"madd_246":[291,292],"madd_munfasil":[20,22,181,183],"qalqalah":[292,293],"silent":[173,175,216,218,251,253],"hamzat_wasl":[58,59,95,96,158,159,208,209,219,220,225,226,244,245,254,255,268,269,284,285]},
+"5": {"ghunnah":[246,249,259,262],"ikhfa":[212,216],"idghaam_ghunnah":[321,325,327,331],"idghaam_no_ghunnah":[83,88,111,116],"lam_shamsiyyah":[26,27],"madd_2":[35,36,75,76,134,135,154,155,171,172,206,207,286,287,348,349,374,375,410,411],"madd_246":[415,416],"madd_munfasil":[229,231,310,312],"qalqalah":[216,218,356,358],"silent":[65,67,196,198],"hamzat_wasl":[25,26,49,50,68,69,123,124,143,144,160,161,180,181,199,200,340,341,387,388,405,406]},
+"6": {"ghunnah":[333,336,373,376,543,546],"ikhfa":[193,197,197,200,208,213,230,234,234,237,291,294,365,369,388,393,397,402],"idghaam_ghunnah":[286,291,500,504,509,513],"idghaam_shafawi":[237,242,294,299,438,443,487,492],"lam_shamsiyyah":[57,58,332,333],"madd_2":[64,65,321,322,506,507,557,558],"madd_246":[590,591],"madd_munfasil":[2,4,30,32,246,249],"madd_muttasil":[276,278,307,309,338,340,362,364],"qalqalah":[472,474],"silent":[32,34,63,64,78,80,137,139,223,225,357,359,379,381,410,412],"hamzat_wasl":[13,14,56,57,70,71,114,115,129,130,175,176,213,214,302,303,331,332,402,403,460,461]},
+"7": {"ghunnah":[138,141],"ikhfa_shafawi":[71,75],"iqlab":[156,160],"lam_shamsiyyah":[168,169],"madd_2":[48,49],"madd_246":[174,175],"madd_munfasil":[77,79],"silent":[10,12,125,127],"hamzat_wasl":[2,3,22,23,54,55,118,119,128,129,142,143,167,168]},
+"8": {"ghunnah":[100,103,213,216],"iqlab":[231,235],"lam_shamsiyyah":[180,181],"madd_2":[48,49],"madd_246":[248,249],"madd_munfasil":[2,4,130,133],"madd_muttasil":[69,71],"qalqalah":[94,96,171,173,184,186],"silent":[31,33,40,42,150,152,161,163,200,202],"hamzat_wasl":[13,14,76,77,153,154,193,194,203,204,217,218]},
+"9": {"idghaam_ghunnah":[78,82],"idghaam_shafawi":[66,71],"lam_shamsiyyah":[49,50],"madd_2":[53,54,58,59],"madd_246":[93,94],"qalqalah":[84,86],"silent":[33,35,45,47],"hamzat_wasl":[7,8,15,16,48,49]},
+"10": {"madd_2":[43,44,70,71],"madd_246":[81,82],"madd_munfasil":[48,50],"madd_muttasil":[57,59],"silent":[19,21,32,34,53,55],"hamzat_wasl":[2,3,74,75]},
+"11": {"ghunnah":[80,83],"ikhfa":[155,158],"idghaam_ghunnah":[93,97],"madd_246":[224,225],"madd_munfasil":[2,4,103,105],"qalqalah":[97,99],"silent":[31,33,42,44,105,107,170,172],"hamzat_wasl":[13,14,34,35,54,55,163,164,173,174,189,190,213,214]},
+"12": {"ghunnah":[117,120,279,282,319,322,329,332],"ikhfa":[194,197,285,288,334,338,346,350,375,379,401,404],"ikhfa_shafawi":[197,201],"idghaam_ghunnah":[96,101],"idghaam_no_ghunnah":[264,270],"lam_shamsiyyah":[150,151,176,177,430,431],"madd_2":[29,30,157,158,183,184,332,333,367,368,393,394],"madd_246":[436,437],"madd_munfasil":[37,39],"madd_muttasil":[46,48,424,426],"qalqalah":[6,8,232,234,313,315,338,340,411,413],"silent":[156,157,182,183],"hamzat_wasl":[16,17,75,76,107,108,149,150,175,176,243,244,358,359,429,430]},
+"13": {"ghunnah":[36,39,140,143,269,272],"idghaam_ghunnah":[77,81,104,109,134,140,202,207,227,233],"idghaam_shafawi":[16,21],"madd_2":[24,25,39,40,71,72,118,119,160,161],"madd_246":[300,301],"madd_muttasil":[195,197],"qalqalah":[10,12],"silent":[127,129,153,155],"hamzat_wasl":[92,93,242,243,259,260,273,274,289,290]},
+"14": {"ghunnah":[29,32,88,91],"idghaam_ghunnah":[82,88],"madd_2":[38,39,60,61,108,109,185,186],"madd_246":[245,246],"madd_munfasil":[22,24,41,44],"madd_muttasil":[159,161],"silent":[24,26,75,77,101,103,234,236],"hamzat_wasl":[7,8,135,136,150,151,178,179,214,215]},
+"15": {"ghunnah":[78,81],"ikhfa":[85,88,131,135,139,143],"idghaam_ghunnah":[72,78,174,178,184,189],"idghaam_shafawi":[154,159],"madd_2":[18,19,113,114,182,183],"madd_246":[191,192],"madd_munfasil":[2,4],"madd_muttasil":[29,31,148,150],"qalqalah":[24,26,143,145],"silent":[126,128],"hamzat_wasl":[11,12,106,107,162,163]},
+"16": {"ghunnah":[107,110],"idghaam_ghunnah":[153,158],"idghaam_shafawi":[78,83],"lam_shamsiyyah":[56,57,87,88,106,107],"madd_2":[41,42,46,47,62,63,95,96,124,125,151,152],"madd_246":[164,165],"hamzat_wasl":[13,14,26,27,55,56,86,87,105,106]},
+"17": {"ghunnah":[37,40,178,181],"ikhfa":[189,193,325,329],"idghaam_ghunnah":[89,93,137,141,211,216],"lam_shamsiyyah":[232,233],"madd_2":[183,184,238,239,241,242],"madd_246":[331,332],"madd_munfasil":[30,32],"madd_muttasil":[292,294],"qalqalah":[5,7,66,68,160,162],"silent":[32,34],"hamzat_wasl":[15,16,41,42,54,55,65,66,105,106,148,149,159,160,195,196,231,232,247,248,299,300]},
+"18": {"ghunnah":[25,28,141,144],"ikhfa":[126,129],"ikhfa_shafawi":[104,108,117,121,129,133],"idghaam_ghunnah":[136,141,167,171,192,196],"lam_shamsiyyah":[24,25,221,222],"madd_2":[30,31,79,80,227,228,230,231],"madd_246":[282,283],"madd_muttasil":[49,51,73,75,173,175,198,200],"qalqalah":[45,47],"silent":[53,55],"hamzat_wasl":[10,11,23,24,56,57,220,221,236,237,275,276]},
+"19": {"ikhfa":[100,104,152,156,217,221],"ikhfa_shafawi":[169,173],"iqlab":[130,133],"idghaam_ghunnah":[80,85,138,142,177,181,187,191],"lam_shamsiyyah":[89,90],"madd_2":[18,19],"madd_246":[223,224],"madd_munfasil":[2,4],"madd_muttasil":[29,31,119,121,163,165],"qalqalah":[24,26,158,160],"silent":[110,112],"hamzat_wasl":[11,12,88,89,191,192]},
+"20": {"iqlab":[105,107],"idghaam_ghunnah":[134,139,172,178],"idghaam_shafawi":[125,130,148,153],"madd_2":[31,32,35,36,145,146,186,187],"madd_246":[191,192],"madd_muttasil":[110,112],"silent":[51,53],"hamzat_wasl":[43,44,63,64,181,182]},
+"21": {"ikhfa":[121,124],"madd_2":[2,3,134,135],"madd_246":[139,140],"madd_munfasil":[99,102],"qalqalah":[11,13,105,107],"silent":[18,20,92,94,129,131],"hamzat_wasl":[10,11,21,22,31,32,46,47,61,62]},
+"22": {"ghunnah":[23,26,58,61,138,141],"ikhfa":[39,44],"idghaam_ghunnah":[65,70,112,116],"madd_2":[11,12,145,146],"madd_246":[150,151],"madd_munfasil":[17,20],"qalqalah":[70,72],"silent":[6,8,97,99,123,125]},
+"23": {"ghunnah":[128,131],"ikhfa":[181,185,185,188],"idghaam_shafawi":[188,193],"madd_2":[138,139],"madd_246":[199,200],"madd_munfasil":[174,176],"qalqalah":[72,74],"silent":[79,81,176,178],"hamzat_wasl":[21,22,51,52,71,72,93,94,155,156]},
+"24": {"ghunnah":[23,26,115,118],"ikhfa":[87,90],"idghaam_ghunnah":[30,35,51,57],"madd_2":[11,12,105,106,122,123,131,132],"madd_246":[136,137],"madd_munfasil":[17,20,43,45,110,112],"qalqalah":[35,37,82,84],"silent":[6,8,65,67],"hamzat_wasl":[77,78]},
+"25": {"ghunnah":[14,17],"madd_2":[100,101],"madd_246":[105,106],"madd_munfasil":[21,23],"qalqalah":[63,65],"hamzat_wasl":[58,59,85,86,95,96]},
+"26": {"ghunnah":[10,13],"idghaam_ghunnah":[57,61],"madd_2":[118,119],"madd_246":[123,124],"hamzat_wasl":[74,75,103,104,113,114]},
+"27": {"ghunnah":[158,161,172,175],"ikhfa":[75,80],"madd_246":[214,215],"qalqalah":[27,29,152,154],"hamzat_wasl":[2,3,26,27,44,45,131,132,191,192,204,205]},
+"28": {"ghunnah":[97,100],"iqlab":[5,8],"idghaam_ghunnah":[64,68],"madd_2":[130,131],"madd_246":[135,136],"madd_munfasil":[46,48,100,102],"qalqalah":[34,36,86,88],"hamzat_wasl":[111,112,125,126]},
+"29": {"ghunnah":[2,5,77,80],"ikhfa":[18,22],"lam_shamsiyyah":[76,77,106,107],"madd_2":[71,72,88,89,110,111],"madd_246":[115,116],"madd_munfasil":[5,7,24,26],"madd_muttasil":[98,100],"silent":[102,104],"hamzat_wasl":[75,76,105,106]},
+"30": {"madd_2":[16,17,26,27,53,54,76,77],"madd_246":[81,82],"hamzat_wasl":[71,72]},
+"31": {"ghunnah":[209,212],"idghaam_ghunnah":[23,28],"lam_shamsiyyah":[208,209],"madd_2":[59,60,72,73,102,103,148,149,170,171,212,213],"madd_246":[217,218],"madd_munfasil":[111,114],"qalqalah":[28,30],"hamzat_wasl":[9,10,39,40,153,154,207,208]},
+"32": {"ghunnah":[60,63,136,139,152,155,192,195,210,213,276,279,282,285],"ikhfa":[69,73,114,118],"ikhfa_shafawi":[302,306],"iqlab":[83,88],"idghaam_ghunnah":[165,170,223,228,292,298],"lam_shamsiyyah":[151,152,209,210],"madd_2":[14,15,65,66,270,271,313,314],"madd_246":[343,344],"madd_munfasil":[41,43,197,199],"madd_muttasil":[50,52,237,239],"qalqalah":[7,9,24,26,232,234],"hamzat_wasl":[120,121,150,151,208,209,260,261,323,324]},
+"33": {"ghunnah":[2,5],"ikhfa":[199,202,242,246],"idghaam_ghunnah":[102,106],"idghaam_shafawi":[176,181],"lam_shamsiyyah":[249,250],"madd_2":[62,63,188,189,224,225],"madd_246":[297,298],"madd_munfasil":[113,115,132,134],"madd_muttasil":[13,15],"silent":[17,19,115,117,134,136,204,206],"hamzat_wasl":[20,21,43,44,81,82,212,213,248,249,272,273]},
+"34": {"ghunnah":[80,83],"ikhfa":[28,32,39,43],"idghaam_no_ghunnah":[98,103],"madd_246":[105,106],"madd_munfasil":[73,75],"qalqalah":[32,34,43,45],"silent":[23,25,50,52,75,77],"hamzat_wasl":[7,8,66,67,84,85]},
+"35": {"madd_2":[92,93,114,115],"madd_246":[136,137],"madd_munfasil":[2,4,61,63],"qalqalah":[55,57],"silent":[31,33,41,43,63,65,98,100],"hamzat_wasl":[13,14,34,35,44,45,54,55,75,76]},
+"36": {"ghunnah":[2,5,33,36],"idghaam_ghunnah":[68,73],"idghaam_shafawi":[41,46],"madd_2":[81,82,89,90,109,110,138,139],"madd_246":[188,189],"silent":[23,25,102,104],"hamzat_wasl":[6,7,52,53,131,132]},
+"37": {"ghunnah":[34,37],"ikhfa_shafawi":[49,53],"idghaam_ghunnah":[13,17,87,92],"lam_shamsiyyah":[33,34],"madd_2":[55,56],"madd_246":[94,95],"silent":[24,26],"hamzat_wasl":[32,33]},
+"38": {"iqlab":[63,67],"idghaam_ghunnah":[86,92],"lam_shamsiyyah":[3,4,16,17],"madd_2":[84,85],"madd_246":[125,126],"madd_munfasil":[37,39],"madd_muttasil":[60,62],"qalqalah":[31,33],"silent":[39,41],"hamzat_wasl":[2,3,15,16,30,31,95,96,105,106]},
+"39": {"ghunnah":[49,52,80,83],"ikhfa":[4,8],"iqlab":[15,18],"idghaam_no_ghunnah":[98,103],"madd_2":[32,33],"madd_246":[105,106],"hamzat_wasl":[53,54,84,85]},
+"40": {"ghunnah":[18,21],"ikhfa":[146,150],"idghaam_ghunnah":[81,85,107,111],"lam_shamsiyyah":[44,45],"madd_2":[34,35,50,51,53,54],"madd_246":[152,153],"madd_muttasil":[87,89,113,115],"hamzat_wasl":[22,23,43,44,59,60,120,121]},
+"41": {"ghunnah":[105,108,181,184,204,207],"ikhfa":[34,37,139,143,414,418],"iqlab":[275,278],"idghaam_ghunnah":[381,385,498,502,549,553],"idghaam_no_ghunnah":[345,350],"lam_shamsiyyah":[14,15,534,535],"madd_2":[52,53,118,119,184,185,207,208,295,296,326,327,408,409,429,430],"madd_246":[589,590],"madd_munfasil":[2,4,95,97],"madd_muttasil":[459,461],"silent":[97,99,176,178,374,376,455,457],"hamzat_wasl":[13,14,38,39,65,66,80,81,160,161,262,263,366,367,390,391,436,437,466,467,488,489,533,534,564,565]},
+"42": {"ghunnah":[2,5,204,207],"ikhfa":[50,54,109,113],"ikhfa_shafawi":[69,73,178,182,188,192],"idghaam_ghunnah":[133,137,152,157],"lam_shamsiyyah":[37,38],"madd_2":[5,6,28,29],"madd_246":[235,236],"madd_muttasil":[54,56],"qalqalah":[229,231],"hamzat_wasl":[64,65,173,174,192,193,208,209,224,225]},
+"43": {"ghunnah":[74,77],"ikhfa":[28,31],"iqlab":[95,98],"lam_shamsiyyah":[37,38],"madd_2":[46,47,106,107],"madd_246":[145,146],"madd_munfasil":[116,118],"madd_muttasil":[125,127],"silent":[121,123],"hamzat_wasl":[36,37,64,65,134,135]},
+"44": {"ghunnah":[2,5,71,74,251,254],"ikhfa":[10,13,183,187,306,311,347,350],"ikhfa_shafawi":[336,340],"idghaam_ghunnah":[43,48,52,56,315,320],"idghaam_no_ghunnah":[322,327],"lam_shamsiyyah":[20,21,70,71,128,129,250,251],"madd_2":[29,30,135,136,189,190,296,297,386,387],"madd_246":[391,392],"madd_munfasil":[5,7,342,344],"madd_muttasil":[227,229,369,371],"silent":[102,104,122,124,178,180,209,211,246,248,285,287,365,367],"hamzat_wasl":[19,20,69,70,83,84,127,128,147,148,166,167,193,194,249,250,260,261,353,354,381,382]},
+"45": {"ghunnah":[33,36,39,42,51,54,136,139,147,150],"ikhfa":[90,93,101,104,170,174,176,180,248,251],"ikhfa_shafawi":[237,241],"idghaam_no_ghunnah":[210,215,223,228],"lam_shamsiyyah":[38,39,50,51,132,133,143,144,283,284],"madd_2":[192,193,217,218,287,288],"madd_246":[292,293],"madd_munfasil":[28,30,243,245],"madd_muttasil":[270,272],"qalqalah":[6,8],"silent":[266,268],"hamzat_wasl":[37,38,49,50,61,62,73,74,85,86,96,97,107,108,119,120,131,132,142,143,153,154,254,255,282,283]},
+"46": {"ikhfa":[130,133],"ikhfa_shafawi":[31,35],"idghaam_ghunnah":[146,151,155,159,217,222],"idghaam_no_ghunnah":[65,71,167,173,231,236],"lam_shamsiyyah":[97,98,199,200],"madd_2":[26,27,106,107,121,122,208,209],"madd_246":[245,246],"madd_munfasil":[17,20],"qalqalah":[43,45],"hamzat_wasl":[42,43,96,97,125,126,198,199]},
+"47": {"ikhfa":[25,28,41,44,90,93],"ikhfa_shafawi":[79,83],"idghaam_no_ghunnah":[65,70],"madd_2":[129,130],"madd_246":[134,135],"madd_munfasil":[36,38,85,87],"madd_muttasil":[112,114],"silent":[108,110],"hamzat_wasl":[20,21,47,48,96,97,124,125]},
+"48": {"ghunnah":[193,196,306,309],"ikhfa":[4,7,146,149,227,231,241,244,429,434,455,458],"ikhfa_shafawi":[125,129,135,139,445,449],"idghaam_ghunnah":[254,258,266,271,310,314,320,324],"idghaam_no_ghunnah":[53,59,329,334],"madd_2":[30,31,91,92,314,315,326,327,362,363,392,393],"madd_246":[477,478],"madd_munfasil":[11,13,141,143,353,355],"madd_muttasil":[182,184,200,202,278,280],"qalqalah":[336,338],"silent":[380,382],"hamzat_wasl":[23,24,36,37,84,85,120,121,152,153,212,213,283,284,370,371,383,384,402,403]},
+"49": {"ghunnah":[180,183,243,246,264,267],"ikhfa":[33,36,127,130,154,158],"ikhfa_shafawi":[12,16,22,26,216,220],"iqlab":[111,114],"idghaam_ghunnah":[94,98,205,209,253,259],"lam_shamsiyyah":[263,264],"madd_2":[275,276],"madd_246":[280,281],"madd_munfasil":[28,30,122,124],"madd_muttasil":[69,71],"silent":[165,167],"hamzat_wasl":[7,8,39,40,80,81,133,134,170,171,195,196,262,263]},
+"50": {"idghaam_ghunnah":[82,86],"idghaam_no_ghunnah":[71,77],"madd_2":[16,17],"madd_246":[91,92],"qalqalah":[29,31],"hamzat_wasl":[11,12,58,59]},
+"51": {"ghunnah":[66,69,154,157,172,175],"ikhfa":[144,147],"idghaam_ghunnah":[120,124,126,130],"idghaam_shafawi":[139,144],"lam_shamsiyyah":[65,66,207,208],"madd_2":[71,72,159,160,211,212],"madd_246":[216,217],"madd_munfasil":[2,4,74,77],"madd_muttasil":[86,88,110,112],"silent":[31,33,48,50],"hamzat_wasl":[13,14,51,52,64,65,176,177,196,197,206,207]},
+"52": {"ikhfa":[85,89,107,111,170,173,221,224],"idghaam_ghunnah":[39,43,127,131,160,165],"idghaam_shafawi":[31,36],"madd_2":[45,46,175,176,233,234],"madd_246":[238,239],"madd_munfasil":[79,82,200,202,216,218],"madd_muttasil":[100,102],"silent":[188,190,211,213],"hamzat_wasl":[8,9,117,118,140,141]},
+"53": {"ghunnah":[102,105],"madd_2":[92,93,136,137,160,161],"madd_246":[165,166],"madd_munfasil":[27,29],"madd_muttasil":[36,38,42,44],"qalqalah":[59,61],"silent":[29,31,66,68,155,157],"hamzat_wasl":[10,11,47,48,71,72]},
+"54": {"ikhfa":[50,53,58,62,259,263],"idghaam_ghunnah":[36,40,101,105,296,300],"madd_2":[67,68,184,185,197,198,263,264,319,320],"madd_246":[329,330],"madd_munfasil":[2,4,129,131],"madd_muttasil":[254,256,302,304],"silent":[31,33],"hamzat_wasl":[13,14,86,87,148,149,179,180,218,219,276,277,309,310]},
+"55": {"ghunnah":[2,5],"lam_shamsiyyah":[87,88,111,112],"madd_2":[40,41,94,95,118,119,131,132],"madd_246":[136,137],"silent":[62,64,93,94,117,118],"hamzat_wasl":[21,22,44,45,65,66,86,87,110,111]},
+"56": {"ghunnah":[64,67],"idghaam_ghunnah":[4,8],"madd_2":[35,36,93,94],"madd_246":[98,99],"silent":[57,59],"hamzat_wasl":[16,17,39,40,75,76,88,89]},
+"57": {"ikhfa":[139,143,201,205,205,208],"idghaam_ghunnah":[88,93,98,104],"idghaam_shafawi":[208,213],"madd_2":[133,134],"madd_246":[219,220],"madd_munfasil":[2,4],"madd_muttasil":[174,176],"qalqalah":[143,145],"silent":[31,33,48,50,70,72,123,125,188,190],"hamzat_wasl":[13,14,51,52,61,62,107,108,126,127,154,155,181,182,191,192]},
+"58": {"ghunnah":[81,84],"ikhfa":[66,71],"idghaam_ghunnah":[56,61],"idghaam_no_ghunnah":[94,99],"lam_shamsiyyah":[27,28],"madd_2":[34,35,71,72],"madd_246":[109,110],"silent":[33,34],"hamzat_wasl":[26,27,38,39]},
+"59": {"ghunnah":[45,48,69,72,139,142],"ikhfa":[34,37,93,96,118,121,126,130],"madd_2":[23,24,158,159],"madd_246":[163,164],"madd_munfasil":[7,9,48,50,56,58,88,90,113,115],"qalqalah":[130,132],"hamzat_wasl":[16,17,76,77]},
+"60": {"ikhfa":[34,38,56,59,216,220],"ikhfa_shafawi":[21,25],"idghaam_ghunnah":[29,34,192,197,201,206],"idghaam_no_ghunnah":[70,75],"lam_shamsiyyah":[164,165,228,229],"madd_2":[38,39,168,169],"madd_246":[234,235],"madd_muttasil":[181,183,222,224],"silent":[177,179],"hamzat_wasl":[60,61,82,83,126,127,140,141,163,164,227,228]},
+"61": {"ghunnah":[35,38],"madd_2":[95,96],"madd_246":[139,140],"madd_munfasil":[25,27],"madd_muttasil":[10,12],"qalqalah":[78,80],"silent":[27,29,54,56,88,90,128,130],"hamzat_wasl":[59,60,99,100]},
+"62": {"idghaam_ghunnah":[15,21],"lam_shamsiyyah":[84,85],"madd_2":[32,33,66,67],"madd_246":[123,124],"qalqalah":[62,64],"silent":[112,114],"hamzat_wasl":[45,46,57,58,83,84]},
+"63": {"ikhfa":[56,60],"lam_shamsiyyah":[22,23,93,94],"madd_2":[15,16,29,30],"madd_246":[132,133],"silent":[121,123],"hamzat_wasl":[21,22,41,42,69,70,92,93]},
+"64": {"ghunnah":[156,159],"ikhfa":[123,126,186,189],"idghaam_ghunnah":[166,172,222,227,232,237,410,415],"idghaam_no_ghunnah":[203,208,342,348],"idghaam_shafawi":[176,181],"madd_2":[220,221,267,268,310,311],"madd_246":[446,447],"madd_munfasil":[181,183,323,325],"madd_muttasil":[140,142,284,286],"qalqalah":[108,110,359,361],"silent":[75,77,90,92,335,337],"hamzat_wasl":[10,11,26,27,260,261,275,276,303,304,369,370,394,395,415,416,435,436]},
+"65": {"ghunnah":[9,12,115,118,124,127],"lam_shamsiyyah":[123,124],"madd_2":[27,28,107,108,118,119],"madd_246":[129,130],"qalqalah":[99,101],"silent":[39,41,52,54],"hamzat_wasl":[20,21,44,45,122,123]},
+"66": {"ghunnah":[9,12,161,164],"ikhfa":[49,52,65,68,111,115,128,132],"idghaam_ghunnah":[165,170,179,183,189,194],"idghaam_no_ghunnah":[84,89],"idghaam_shafawi":[79,84,147,152],"lam_shamsiyyah":[29,30],"madd_2":[38,39],"madd_246":[220,221],"madd_munfasil":[60,62],"madd_muttasil":[203,205],"qalqalah":[170,172],"silent":[25,27,106,108],"hamzat_wasl":[28,29,44,45]},
+"67": {"ghunnah":[145,148,154,157],"ikhfa":[39,42],"idghaam_no_ghunnah":[56,61,71,76],"lam_shamsiyyah":[14,15,144,145],"madd_2":[115,116,193,194],"madd_246":[198,199],"madd_munfasil":[2,4,34,36],"hamzat_wasl":[13,14,119,120,143,144,158,159,178,179,188,189]},
+"68": {"ghunnah":[149,152],"ikhfa":[90,93,106,109,179,182,225,230],"idghaam_ghunnah":[159,165,215,220],"idghaam_no_ghunnah":[125,130,196,201],"idghaam_shafawi":[120,125,169,174],"lam_shamsiyyah":[70,71],"madd_2":[23,24,79,80,213,214,262,263],"madd_246":[267,268],"madd_munfasil":[7,9,101,103,174,176],"silent":[66,68],"hamzat_wasl":[16,17,69,70,85,86,247,248,257,258]},
+"69": {"ghunnah":[2,5,69,72],"ikhfa":[141,146],"lam_shamsiyyah":[51,52,68,69],"madd_2":[55,56,74,75,137,138],"madd_246":[187,188],"silent":[24,26,45,47],"hamzat_wasl":[6,7,29,30,50,51,67,68,95,96,105,106,115,116]},
+"70": {"ikhfa":[78,83,132,135,148,153],"iqlab":[107,111],"idghaam_ghunnah":[170,175],"madd_2":[22,23],"madd_246":[181,182],"madd_munfasil":[30,32,59,61,126,129],"madd_muttasil":[39,41,92,94],"qalqalah":[4,6,175,177],"silent":[159,161]},
+"71": {"ghunnah":[51,54,60,63,91,94,107,110],"ikhfa":[35,39],"iqlab":[148,152],"idghaam_ghunnah":[120,125],"madd_246":[165,166],"madd_munfasil":[8,10],"silent":[10,12,44,46,55,57,100,102,111,113],"hamzat_wasl":[70,71,134,135]},
+"72": {"ghunnah":[36,39,162,165,229,232,250,253],"ikhfa":[285,288],"idghaam_ghunnah":[171,175],"lam_shamsiyyah":[249,250,265,266],"madd_2":[100,101,167,168,244,245,269,270],"madd_246":[288,289],"madd_munfasil":[29,31,105,107],"madd_muttasil":[114,116],"qalqalah":[4,6,65,67,196,198],"silent":[31,33,130,132],"hamzat_wasl":[14,15,40,41,53,54,64,65,87,88,122,123,133,134,184,185,207,208,224,225,248,249]},
+"73": {"ghunnah":[37,40,135,138,160,163],"ikhfa":[124,127],"idghaam_ghunnah":[65,69,100,104,108,112],"idghaam_no_ghunnah":[114,119],"madd_2":[61,62,82,83,98,99,104,105],"madd_246":[205,206],"madd_munfasil":[30,32,91,93],"qalqalah":[5,7],"silent":[32,34,130,132,181,183],"hamzat_wasl":[15,16,41,42,164,165]},
+"74": {"idghaam_no_ghunnah":[70,75],"madd_2":[52,53],"madd_246":[77,78],"hamzat_wasl":[25,26,56,57]},
+"75": {"ghunnah":[85,88,178,181,191,194],"ikhfa":[44,48,60,64,101,105,134,137,183,186],"lam_shamsiyyah":[72,73,123,124],"madd_2":[90,91,172,173],"madd_246":[205,206],"qalqalah":[17,19,48,50,64,66],"hamzat_wasl":[5,6,16,17,71,72,122,123,133,134,164,165,182,183]},
+"76": {"ikhfa":[21,25],"idghaam_ghunnah":[65,70,79,84],"lam_shamsiyyah":[98,99],"madd_246":[115,116],"hamzat_wasl":[29,30,84,85,97,98,108,109]},
+"77": {"ikhfa":[107,111,125,129,169,173],"idghaam_ghunnah":[153,158],"lam_shamsiyyah":[181,182],"madd_2":[23,24],"madd_246":[187,188],"madd_munfasil":[7,9,86,88],"madd_muttasil":[97,99,175,177],"qalqalah":[111,113,129,131],"silent":[38,40,88,90,120,122,144,146,164,166],"hamzat_wasl":[16,17,62,63,180,181]},
+"78": {"iqlab":[30,33],"madd_2":[73,74,103,104],"madd_246":[143,144],"madd_munfasil":[36,38],"madd_muttasil":[45,47],"qalqalah":[87,89],"silent":[24,26,120,122,132,134],"hamzat_wasl":[7,8,86,87]},
+"79": {"ikhfa":[34,37,38,42],"idghaam_ghunnah":[29,34],"madd_246":[80,81],"silent":[6,8,69,71]},
+"80": {"ikhfa":[92,95,104,108],"idghaam_ghunnah":[13,19],"madd_2":[156,157],"madd_246":[161,162],"silent":[57,59],"hamzat_wasl":[40,41,113,114,138,139]},
+"81": {"ghunnah":[42,45,113,116],"ikhfa":[60,63],"idghaam_ghunnah":[123,129],"lam_shamsiyyah":[41,42],"madd_2":[110,111,138,139],"madd_246":[143,144],"madd_munfasil":[55,57],"madd_muttasil":[101,103],"silent":[13,15],"hamzat_wasl":[30,31,40,41,79,80]},
+"82": {"ghunnah":[8,11,22,25,107,110,179,182,206,209,248,251],"idghaam_ghunnah":[241,246],"idghaam_no_ghunnah":[37,42,132,137],"idghaam_shafawi":[121,126],"lam_shamsiyyah":[21,22],"madd_2":[33,34,188,189,196,197],"madd_246":[272,273],"madd_munfasil":[172,174],"qalqalah":[113,115],"silent":[59,61,94,96,154,156,174,176],"hamzat_wasl":[20,21,62,63,75,76,157,158]},
+"83": {"ghunnah":[94,97,149,152],"ikhfa":[25,28],"lam_shamsiyyah":[38,39,83,84,173,174],"madd_2":[177,178],"madd_246":[182,183],"madd_munfasil":[20,22,52,55,141,143],"qalqalah":[161,163],"silent":[15,17,106,108],"hamzat_wasl":[37,38,82,83,114,115,156,157,172,173]},
+"84": {"idghaam_ghunnah":[78,82],"lam_shamsiyyah":[117,118],"madd_2":[121,122],"madd_246":[126,127],"madd_muttasil":[43,45],"qalqalah":[69,71,82,84],"hamzat_wasl":[27,28,56,57,106,107,116,117]},
+"85": {"ghunnah":[39,42],"ikhfa":[44,48,56,60],"madd_2":[6,7,42,43,77,78,83,84,103,104],"madd_246":[129,130],"madd_muttasil":[113,115],"qalqalah":[48,50],"silent":[34,36],"hamzat_wasl":[14,15,68,69,118,119]},
+"86": {"madd_2":[43,44,70,71],"madd_246":[81,82],"madd_munfasil":[48,50],"madd_muttasil":[57,59],"silent":[19,21,32,34,53,55],"hamzat_wasl":[2,3,74,75]},
+"87": {"ghunnah":[111,114],"madd_2":[58,59],"madd_246":[146,147],"madd_munfasil":[2,4,64,66,104,106],"silent":[31,33,48,50,106,108],"hamzat_wasl":[13,14,75,76,115,116,135,136]},
+"88": {"ghunnah":[12,15],"ikhfa":[42,47,85,88],"ikhfa_shafawi":[88,92],"idghaam_ghunnah":[51,56],"madd_2":[40,41,94,95],"madd_246":[104,105],"madd_munfasil":[80,82],"silent":[7,9,63,65],"hamzat_wasl":[28,29,56,57,66,67,74,75]},
+"89": {"ikhfa":[239,243,287,291],"ikhfa_shafawi":[77,81],"idghaam_ghunnah":[64,68],"idghaam_mutajanisayn":[90,91],"idghaam_no_ghunnah":[245,250],"lam_shamsiyyah":[29,30],"madd_2":[49,50,61,62,106,107,117,118,150,151,274,275,291,292,302,303,314,315,359,360,371,372,407,408,412,413],"madd_246":[434,435],"madd_munfasil":[40,42,124,126,348,350],"qalqalah":[129,131,177,179,257,259],"silent":[350,352],"hamzat_wasl":[18,19,28,29,97,98,341,342,387,388]},
+"90": {"ghunnah":[37,40],"ikhfa":[75,78],"idghaam_ghunnah":[102,107],"lam_shamsiyyah":[118,119],"madd_2":[93,94,126,127],"madd_246":[165,166],"madd_munfasil":[2,4,30,32],"qalqalah":[99,101,133,135],"silent":[32,34],"hamzat_wasl":[13,14,44,45,56,57,70,71,84,85,117,118,132,133]},
+"91": {"ghunnah":[2,5],"ikhfa":[126,130,171,174,179,182],"idghaam_ghunnah":[32,36],"idghaam_shafawi":[174,179],"lam_shamsiyyah":[18,19,151,152],"madd_2":[26,27,60,61,158,159],"madd_246":[184,185],"madd_muttasil":[77,79],"silent":[157,158],"hamzat_wasl":[17,18,53,54,68,69,86,87,98,99,135,136,150,151]},
+"92": {"ghunnah":[94,97],"ikhfa":[62,66],"lam_shamsiyyah":[35,36],"madd_2":[126,127],"madd_246":[137,138],"madd_munfasil":[87,89],"silent":[10,12,31,33,55,57,89,91],"hamzat_wasl":[13,14,34,35,47,48,80,81,119,120,130,131]},
+"93": {"ghunnah":[148,151,178,181],"ikhfa":[66,70],"lam_shamsiyyah":[47,48,133,134],"madd_2":[51,52,56,57,137,138,142,143],"madd_246":[236,237],"madd_munfasil":[81,83],"silent":[31,33,43,45,83,85,103,105,117,119,129,131,159,161,173,175,189,191,204,206],"hamzat_wasl":[13,14,46,47,96,97,132,133,152,153,182,183,209,210,225,226]},
+"94": {"ghunnah":[44,47],"idghaam_ghunnah":[67,72,144,148],"lam_shamsiyyah":[76,77],"madd_2":[155,156,195,196,207,208],"madd_246":[221,222],"madd_munfasil":[2,4,94,96],"qalqalah":[38,40],"silent":[31,33],"hamzat_wasl":[13,14,52,53,75,76,134,135,159,160,176,177]},
+"95": {"ghunnah":[107,110,151,154,334,337],"ikhfa":[64,67,81,85,95,98,111,116,190,193,239,243,363,366,402,406,409,412],"iqlab":[201,206],"idghaam_ghunnah":[75,79,123,128,185,190],"idghaam_no_ghunnah":[286,292],"idghaam_shafawi":[98,103],"lam_shamsiyyah":[51,52,150,151],"madd_2":[91,92,172,173,207,208,235,236,253,254,274,275,316,317],"madd_246":[414,415],"madd_munfasil":[2,4],"madd_muttasil":[120,122],"qalqalah":[40,42,182,184,198,200,267,269],"silent":[31,33,47,49],"hamzat_wasl":[13,14,50,51,149,150,213,214,324,325,371,372,388,389,408,409]},
+"96": {"idghaam_ghunnah":[134,139],"idghaam_no_ghunnah":[51,57],"lam_shamsiyyah":[66,67],"madd_2":[43,44,49,50],"madd_246":[183,184],"madd_munfasil":[163,165],"silent":[146,148],"hamzat_wasl":[22,23,107,108,139,140,149,150,157,158]},
+"97": {"ghunnah":[61,64,144,147,211,214],"idghaam_no_ghunnah":[54,60],"lam_shamsiyyah":[60,61,71,72,174,175],"madd_2":[52,53,121,122,180,181,183,184],"madd_246":[242,243],"madd_munfasil":[137,139],"madd_muttasil":[112,114],"qalqalah":[98,100],"silent":[139,141],"hamzat_wasl":[7,8,15,16,27,28,37,38,70,71,80,81,93,94,105,106,148,149,173,174,197,198,215,216]},
+"98": {"ghunnah":[14,17,49,52],"idghaam_no_ghunnah":[67,72],"madd_246":[74,75],"madd_munfasil":[7,9],"silent":[9,11],"hamzat_wasl":[18,19,34,35,53,54]},
+"99": {"lam_shamsiyyah":[12,13],"madd_2":[36,37],"madd_246":[87,88],"qalqalah":[65,67],"hamzat_wasl":[11,12,29,30,42,43]},
+"100": {"lam_shamsiyyah":[33,34],"madd_2":[122,123],"madd_246":[146,147],"madd_munfasil":[103,105],"silent":[90,92,107,109],"hamzat_wasl":[19,20,32,33,70,71,83,84,93,94,113,114]},
+"101": {"ikhfa":[69,73,100,104],"madd_246":[210,211],"madd_munfasil":[2,4],"madd_muttasil":[62,64],"qalqalah":[73,75,154,156],"silent":[31,33,48,50,112,114],"hamzat_wasl":[13,14,139,140,172,173,190,191]},
+"102": {"ghunnah":[40,43],"ikhfa":[25,29],"idghaam_ghunnah":[20,25],"madd_2":[64,65],"madd_246":[69,70],"qalqalah":[2,4,29,31],"silent":[53,55]},
+"103": {"ghunnah":[86,89],"iqlab":[22,25],"idghaam_ghunnah":[32,36,49,53,65,69,77,81],"madd_2":[83,84],"madd_246":[173,174],"madd_muttasil":[42,44],"silent":[107,109],"hamzat_wasl":[11,12,90,91,128,129,136,137]},
+"104": {"ikhfa":[47,50],"idghaam_ghunnah":[187,192],"lam_shamsiyyah":[70,71],"madd_246":[204,205],"madd_munfasil":[42,44,133,135],"madd_muttasil":[127,129,156,158],"qalqalah":[107,109],"silent":[30,32,86,88],"hamzat_wasl":[53,54,69,70]},
+"105": {"ikhfa":[47,50,75,79,136,141,162,165],"ikhfa_shafawi":[152,156],"idghaam_shafawi":[70,75],"madd_246":[176,177],"madd_munfasil":[2,4],"silent":[31,33],"hamzat_wasl":[13,14,89,90,109,110]},
+"106": {"ghunnah":[416,419],"ikhfa":[133,136,178,181],"iqlab":[265,268],"idghaam_ghunnah":[128,133,352,357],"idghaam_no_ghunnah":[425,431],"idghaam_shafawi":[222,227],"lam_shamsiyyah":[275,276],"madd_2":[38,39,215,216,282,283,345,346,400,401],"madd_246":[446,447],"madd_munfasil":[2,4,419,421],"qalqalah":[125,127,188,190,290,292,320,322],"silent":[31,33,281,282],"hamzat_wasl":[13,14,79,80,95,96,108,109,199,200,235,236,274,275,302,303,315,316,406,407,436,437]},
+"107": {"ghunnah":[24,27,233,236],"ikhfa":[51,56,194,198],"idghaam_no_ghunnah":[242,248],"lam_shamsiyyah":[254,255],"madd_2":[140,141,174,175,200,201,258,259],"madd_246":[263,264],"madd_munfasil":[18,21,43,45,181,183,228,230,236,238],"qalqalah":[148,150],"hamzat_wasl":[33,34,97,98,107,108,129,130,160,161,217,218,253,254]},
+"108": {"ikhfa":[84,88],"iqlab":[102,106],"idghaam_ghunnah":[20,24],"lam_shamsiyyah":[35,36],"madd_2":[2,3,41,42,100,101,118,119,196,197],"madd_246":[201,202],"madd_munfasil":[14,17,62,64,77,79],"qalqalah":[10,12,56,58],"silent":[29,31,79,81,135,137,156,158],"hamzat_wasl":[34,35,128,129,138,139,148,149,161,162,181,182,191,192]},
+"109": {"ghunnah":[92,95],"ikhfa":[100,103],"lam_shamsiyyah":[25,26],"madd_2":[109,110],"madd_246":[120,121],"madd_munfasil":[49,51,87,89],"qalqalah":[9,11,56,58,121,122],"silent":[69,71],"hamzat_wasl":[16,17,24,25,113,114]},
+"110": {"ghunnah":[139,142],"ikhfa":[237,240,310,313,476,479],"ikhfa_shafawi":[493,497],"iqlab":[338,343],"idghaam_ghunnah":[167,172,573,578],"idghaam_mutajanisayn":[102,103],"lam_shamsiyyah":[138,139,217,218,266,267,287,288],"madd_2":[21,22,82,83,196,197,226,227,507,508,555,556],"madd_246":[580,581],"madd_munfasil":[457,459,558,560],"madd_muttasil":[466,468],"qalqalah":[30,32,356,358,382,384],"silent":[536,538],"hamzat_wasl":[11,12,29,30,44,45,117,118,137,138,150,151,189,190,202,203,216,217,232,233,265,266,286,287,363,364,377,378,415,416,497,498,519,520]},
+"111": {"ghunnah":[89,92,108,111],"madd_2":[37,38],"madd_246":[123,124],"madd_munfasil":[79,81],"qalqalah":[101,103],"silent":[54,56,81,83],"hamzat_wasl":[24,25,96,97]},
+"112": {"ikhfa":[157,161,161,164],"idghaam_ghunnah":[80,84,111,116],"idghaam_shafawi":[164,169],"lam_shamsiyyah":[120,121],"madd_2":[30,31],"madd_246":[175,176],"madd_muttasil":[104,106,126,128],"qalqalah":[39,41],"silent":[144,146],"hamzat_wasl":[11,12,38,39,119,120,137,138,147,148]},
+"113": {"ghunnah":[49,52],"ikhfa":[77,81],"idghaam_ghunnah":[19,24],"lam_shamsiyyah":[122,123],"madd_2":[126,127],"madd_246":[131,132],"qalqalah":[43,45,81,83,88,90],"silent":[6,8],"hamzat_wasl":[121,122]},
+"114": {"ghunnah":[35,38],"ikhfa":[51,54,157,160,178,181],"idghaam_ghunnah":[76,81,152,157],"idghaam_no_ghunnah":[114,120],"lam_shamsiyyah":[29,30,85,86,190,191],"madd_2":[194,195],"madd_246":[199,200],"madd_munfasil":[46,48],"madd_muttasil":[69,71,91,93],"qalqalah":[14,16,168,170],"hamzat_wasl":[13,14,28,29,84,85,163,164,189,190]},
+"115": {"ghunnah":[16,19,79,82],"ikhfa":[69,72],"idghaam_ghunnah":[49,53,132,138],"idghaam_no_ghunnah":[104,110],"madd_2":[96,97,146,147],"madd_246":[151,152],"madd_munfasil":[82,84,110,112,124,126],"hamzat_wasl":[6,7,141,142]},
+"116": {"ghunnah":[64,67,88,91,294,297],"ikhfa":[50,53,108,112,197,201,201,204,302,305],"lam_shamsiyyah":[63,64],"madd_2":[23,24,98,99,136,137,213,214,232,233,311,312],"madd_246":[322,323],"madd_munfasil":[156,158,263,265],"qalqalah":[32,34,132,134,219,221,323,324],"hamzat_wasl":[13,14,31,32,71,72,116,117,315,316]},
+"117": {"ghunnah":[144,147],"ikhfa":[96,99,166,169,172,175,202,205,224,228],"idghaam_ghunnah":[117,123],"lam_shamsiyyah":[177,178],"madd_246":[230,231],"madd_munfasil":[27,29,46,48],"qalqalah":[231,232],"silent":[62,64],"hamzat_wasl":[54,55,65,66,176,177]},
+"118": {"ghunnah":[22,25,66,69],"ikhfa":[2,6,44,48,74,77],"madd_246":[96,97],"qalqalah":[11,13],"hamzat_wasl":[78,79,89,90]},
+"119": {"ghunnah":[70,73],"ikhfa":[30,33,75,79,87,91],"idghaam_no_ghunnah":[136,142],"lam_shamsiyyah":[37,38],"madd_2":[16,17,41,42,73,74,108,109,114,115,183,184],"madd_246":[206,207],"madd_munfasil":[128,130],"qalqalah":[52,54,79,81],"silent":[171,173],"hamzat_wasl":[6,7,36,37,99,100,147,148,189,190,199,200]},
+"120": {"ghunnah":[52,55],"ikhfa":[81,85],"lam_shamsiyyah":[16,17],"madd_2":[22,23,25,26],"madd_246":[87,88],"hamzat_wasl":[15,16,31,32]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/50.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/50.json
index 04a3440..6afec50 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/50.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/50.json
@@ -1,47 +1,47 @@
{
-"1": {"madd":[64,65],"madd-lazim":[39,41],"qalqalah":[65,66],"wasl":[44,45,57,58]},
-"2": {"ghunnah":[18,22,33,36],"idgham":[28,33,37,42],"madd":[11,13,22,24,62,63,73,74,89,90],"qalqalah":[90,91],"silent":[13,15],"wasl":[57,58]},
-"3": {"ghunnah":[20,23,31,36,47,51],"madd":[36,37,54,55],"qalqalah":[44,46,55,56]},
-"4": {"ghunnah":[21,24,50,53],"madd":[61,62,69,70],"qalqalah":[2,4],"wasl":[27,28]},
-"5": {"ghunnah":[29,32],"idgham":[62,67],"madd":[36,38,54,56,69,70],"qalqalah":[70,71],"silent":[13,15],"wasl":[18,19]},
-"6": {"ghunnah":[11,14,77,80,99,103],"idgham":[28,29],"madd":[16,18,34,36,65,66,80,81,105,106],"qalqalah":[106,107],"silent":[18,20],"wasl":[27,28]},
-"7": {"ghunnah":[61,63,79,83,92,96],"madd":[20,21,50,51,99,100],"qalqalah":[16,18,100,101],"wasl":[2,3]},
-"8": {"idgham":[9,13,35,40],"madd":[42,43],"qalqalah":[2,4,32,34,43,44]},
-"9": {"ghunnah":[46,51,54,56,71,74],"idgham":[19,20,35,40,76,80],"madd":[25,27,32,34,42,43,67,68,74,75,93,94],"qalqalah":[94,95],"wasl":[18,19,86,87]},
-"10": {"ghunnah":[4,7],"idgham":[3,4,21,26,35,40],"madd":[19,20,42,43],"qalqalah":[43,44],"wasl":[2,3]},
-"11": {"ghunnah":[57,62],"idgham":[6,12,49,54],"madd":[40,41,64,65,77,78],"qalqalah":[78,79],"wasl":[70,71]},
-"12": {"idgham":[32,36,47,48],"madd":[42,43,61,62],"qalqalah":[12,14,62,63],"wasl":[46,47]},
-"13": {"idgham":[6,10],"madd":[29,30,35,36],"qalqalah":[36,37]},
-"14": {"ghunnah":[39,43,45,49],"idgham":[56,57],"madd":[8,9,77,78],"qalqalah":[78,79],"wasl":[12,13,55,56]},
-"15": {"ghunnah":[68,72],"idgham":[55,60],"madd":[74,75],"qalqalah":[52,54,75,76],"wasl":[15,16,25,26]},
-"16": {"ghunnah":[24,27],"madd":[27,28,61,62,71,72,119,120],"qalqalah":[6,8,13,15,84,86,107,109,120,121],"wasl":[19,20,112,113]},
-"17": {"idgham":[58,59],"madd":[72,73],"qalqalah":[73,74],"wasl":[16,17,39,40,57,58]},
-"18": {"ghunnah":[16,20],"madd":[53,54],"qalqalah":[54,55]},
-"19": {"ghunnah":[55,58],"madd":[4,6,43,44,70,71],"qalqalah":[71,72],"wasl":[20,21,32,33]},
-"20": {"idgham":[14,15],"madd":[24,25,44,45],"qalqalah":[45,46],"wasl":[13,14,37,38]},
-"21": {"idgham":[22,27,40,44],"madd":[4,6,35,37,48,49],"qalqalah":[49,50]},
-"22": {"ghunnah":[10,13,54,57],"idgham":[25,30],"madd":[35,36,62,64,94,95],"qalqalah":[5,7,95,96],"wasl":[80,81]},
-"23": {"madd":[17,18,21,22,42,43],"qalqalah":[43,44]},
-"24": {"ghunnah":[18,21],"madd":[43,44],"qalqalah":[44,45]},
-"25": {"ghunnah":[3,6],"idgham":[8,13,29,34],"madd":[36,37],"qalqalah":[37,38]},
-"26": {"idgham":[75,76],"madd":[32,33,81,82],"qalqalah":[82,83],"wasl":[20,21,63,64,74,75]},
-"27": {"ghunnah":[52,56,70,74],"madd":[15,16,28,30,43,44,49,50,68,69,77,78],"qalqalah":[33,35,78,79]},
-"28": {"ghunnah":[57,61],"madd":[68,69],"qalqalah":[36,38,69,70],"silent":[21,23],"wasl":[61,62]},
-"29": {"idgham":[55,60],"madd":[36,38,53,54,66,67],"qalqalah":[67,68],"wasl":[14,15]},
-"30": {"ghunnah":[21,24],"idgham":[61,66],"madd":[68,69],"qalqalah":[69,70],"wasl":[32,33]},
-"31": {"ghunnah":[18,21],"madd":[50,51],"qalqalah":[51,52],"wasl":[13,14]},
-"32": {"madd":[2,3,43,44]},
-"33": {"idgham":[14,15,54,59],"madd":[22,23,42,44,61,62],"qalqalah":[62,63],"wasl":[13,14,28,29]},
-"34": {"ghunnah":[20,24],"madd":[18,19,24,25,44,45],"qalqalah":[1,3,45,46],"wasl":[37,38]},
-"35": {"idgham":[4,9],"madd":[15,17,46,47],"qalqalah":[47,48]},
-"36": {"ghunnah":[32,36,60,64,67,72],"idgham":[27,32,105,110],"madd":[94,95,112,113],"qalqalah":[21,23,64,66],"silent":[80,82],"wasl":[87,88]},
-"37": {"ghunnah":[2,5,33,37],"idgham":[68,69],"madd":[12,13,45,46,88,89],"qalqalah":[89,90],"wasl":[67,68]},
-"38": {"idgham":[20,21,82,86,101,106],"madd":[26,27,29,30,108,109],"qalqalah":[6,8,13,15,109,110],"wasl":[19,20,35,36]},
-"39": {"idgham":[75,76],"madd":[100,101],"qalqalah":[61,63,88,90,101,102],"wasl":[2,3,74,75,93,94]},
-"40": {"idgham":[41,42],"madd":[36,37,47,48],"qalqalah":[32,34,48,49],"wasl":[7,8,40,41]},
-"41": {"ghunnah":[49,53],"idgham":[40,45],"madd":[55,56],"qalqalah":[56,57],"wasl":[2,3,27,28]},
-"42": {"idgham":[20,21],"madd":[44,45,64,65],"qalqalah":[65,66],"wasl":[19,20,33,34,57,58]},
-"43": {"ghunnah":[2,5],"madd":[20,21,51,52],"wasl":[44,45]},
-"44": {"ghunnah":[42,47],"madd":[47,48,74,75],"wasl":[17,18]},
-"45": {"ghunnah":[43,46,55,59,66,70],"idgham":[95,99],"madd":[38,40,109,110],"qalqalah":[110,111],"wasl":[80,81]}
+"1": {"madd_246":[64,65],"madd_6":[39,41],"qalqalah":[65,66],"hamzat_wasl":[44,45,57,58]},
+"2": {"ikhfa":[18,22,33,36],"idghaam_ghunnah":[37,42],"idghaam_shafawi":[28,33],"madd_2":[62,63,73,74],"madd_246":[89,90],"madd_munfasil":[11,13],"madd_muttasil":[22,24],"qalqalah":[90,91],"silent":[13,15],"hamzat_wasl":[57,58]},
+"3": {"ghunnah":[20,23],"ikhfa":[31,36],"iqlab":[47,51],"madd_2":[36,37],"madd_246":[54,55],"qalqalah":[44,46,55,56]},
+"4": {"ikhfa":[21,24,50,53],"madd_2":[61,62],"madd_246":[69,70],"qalqalah":[2,4],"hamzat_wasl":[27,28]},
+"5": {"ghunnah":[29,32],"idghaam_ghunnah":[62,67],"madd_246":[69,70],"madd_munfasil":[54,56],"madd_muttasil":[36,38],"qalqalah":[70,71],"silent":[13,15],"hamzat_wasl":[18,19]},
+"6": {"ghunnah":[77,80],"ikhfa":[11,14,99,103],"lam_shamsiyyah":[28,29],"madd_2":[65,66,80,81],"madd_246":[105,106],"madd_munfasil":[16,18],"madd_muttasil":[34,36],"qalqalah":[106,107],"silent":[18,20],"hamzat_wasl":[27,28]},
+"7": {"ikhfa":[79,83],"iqlab":[61,63,92,96],"madd_2":[20,21,50,51],"madd_246":[99,100],"qalqalah":[16,18,100,101],"hamzat_wasl":[2,3]},
+"8": {"idghaam_ghunnah":[9,13,35,40],"madd_246":[42,43],"qalqalah":[2,4,32,34,43,44]},
+"9": {"ghunnah":[71,74],"ikhfa":[46,51],"iqlab":[54,56],"idghaam_ghunnah":[35,40,76,80],"lam_shamsiyyah":[19,20],"madd_2":[42,43,67,68,74,75],"madd_246":[93,94],"madd_muttasil":[25,27,32,34],"qalqalah":[94,95],"hamzat_wasl":[18,19,86,87]},
+"10": {"ghunnah":[4,7],"idghaam_ghunnah":[35,40],"idghaam_no_ghunnah":[21,26],"lam_shamsiyyah":[3,4],"madd_2":[19,20],"madd_246":[42,43],"qalqalah":[43,44],"hamzat_wasl":[2,3]},
+"11": {"ikhfa":[57,62],"idghaam_ghunnah":[49,54],"idghaam_no_ghunnah":[6,12],"madd_2":[40,41,64,65],"madd_246":[77,78],"qalqalah":[78,79],"hamzat_wasl":[70,71]},
+"12": {"idghaam_ghunnah":[32,36],"lam_shamsiyyah":[47,48],"madd_2":[42,43],"madd_246":[61,62],"qalqalah":[12,14,62,63],"hamzat_wasl":[46,47]},
+"13": {"idghaam_ghunnah":[6,10],"madd_2":[29,30],"madd_246":[35,36],"qalqalah":[36,37]},
+"14": {"ikhfa":[39,43,45,49],"lam_shamsiyyah":[56,57],"madd_2":[8,9],"madd_246":[77,78],"qalqalah":[78,79],"hamzat_wasl":[12,13,55,56]},
+"15": {"ikhfa":[68,72],"idghaam_ghunnah":[55,60],"madd_246":[74,75],"qalqalah":[52,54,75,76],"hamzat_wasl":[15,16,25,26]},
+"16": {"ikhfa":[24,27],"madd_2":[27,28,61,62,71,72],"madd_246":[119,120],"qalqalah":[6,8,13,15,84,86,107,109,120,121],"hamzat_wasl":[19,20,112,113]},
+"17": {"lam_shamsiyyah":[58,59],"madd_246":[72,73],"qalqalah":[73,74],"hamzat_wasl":[16,17,39,40,57,58]},
+"18": {"ikhfa":[16,20],"madd_246":[53,54],"qalqalah":[54,55]},
+"19": {"ikhfa":[55,58],"madd_2":[43,44],"madd_246":[70,71],"madd_muttasil":[4,6],"qalqalah":[71,72],"hamzat_wasl":[20,21,32,33]},
+"20": {"lam_shamsiyyah":[14,15],"madd_2":[24,25],"madd_246":[44,45],"qalqalah":[45,46],"hamzat_wasl":[13,14,37,38]},
+"21": {"idghaam_ghunnah":[22,27,40,44],"madd_246":[48,49],"madd_muttasil":[4,6,35,37],"qalqalah":[49,50]},
+"22": {"ikhfa":[10,13,54,57],"idghaam_ghunnah":[25,30],"madd_2":[35,36],"madd_246":[94,95],"madd_muttasil":[62,64],"qalqalah":[5,7,95,96],"hamzat_wasl":[80,81]},
+"23": {"madd_2":[17,18,21,22],"madd_246":[42,43],"qalqalah":[43,44]},
+"24": {"ghunnah":[18,21],"madd_246":[43,44],"qalqalah":[44,45]},
+"25": {"ghunnah":[3,6],"idghaam_ghunnah":[29,34],"idghaam_no_ghunnah":[8,13],"madd_246":[36,37],"qalqalah":[37,38]},
+"26": {"lam_shamsiyyah":[75,76],"madd_2":[32,33],"madd_246":[81,82],"qalqalah":[82,83],"hamzat_wasl":[20,21,63,64,74,75]},
+"27": {"ikhfa":[52,56],"iqlab":[70,74],"madd_2":[15,16,43,44,49,50,68,69],"madd_246":[77,78],"madd_munfasil":[28,30],"qalqalah":[33,35,78,79]},
+"28": {"ikhfa_shafawi":[57,61],"madd_246":[68,69],"qalqalah":[36,38,69,70],"silent":[21,23],"hamzat_wasl":[61,62]},
+"29": {"idghaam_no_ghunnah":[55,60],"madd_2":[53,54],"madd_246":[66,67],"madd_munfasil":[36,38],"qalqalah":[67,68],"hamzat_wasl":[14,15]},
+"30": {"ghunnah":[21,24],"idghaam_ghunnah":[61,66],"madd_246":[68,69],"qalqalah":[69,70],"hamzat_wasl":[32,33]},
+"31": {"ghunnah":[18,21],"madd_246":[50,51],"qalqalah":[51,52],"hamzat_wasl":[13,14]},
+"32": {"madd_2":[2,3],"madd_246":[43,44]},
+"33": {"idghaam_ghunnah":[54,59],"lam_shamsiyyah":[14,15],"madd_2":[22,23],"madd_246":[61,62],"madd_muttasil":[42,44],"qalqalah":[62,63],"hamzat_wasl":[13,14,28,29]},
+"34": {"ikhfa":[20,24],"madd_2":[18,19,24,25],"madd_246":[44,45],"qalqalah":[1,3,45,46],"hamzat_wasl":[37,38]},
+"35": {"idghaam_shafawi":[4,9],"madd_246":[46,47],"madd_muttasil":[15,17],"qalqalah":[47,48]},
+"36": {"ikhfa":[32,36,67,72],"ikhfa_shafawi":[60,64],"idghaam_ghunnah":[105,110],"idghaam_shafawi":[27,32],"madd_2":[94,95],"madd_246":[112,113],"qalqalah":[21,23,64,66],"silent":[80,82],"hamzat_wasl":[87,88]},
+"37": {"ghunnah":[2,5],"ikhfa":[33,37],"lam_shamsiyyah":[68,69],"madd_2":[12,13,45,46],"madd_246":[88,89],"qalqalah":[89,90],"hamzat_wasl":[67,68]},
+"38": {"idghaam_ghunnah":[82,86],"idghaam_no_ghunnah":[101,106],"lam_shamsiyyah":[20,21],"madd_2":[26,27,29,30],"madd_246":[108,109],"qalqalah":[6,8,13,15,109,110],"hamzat_wasl":[19,20,35,36]},
+"39": {"lam_shamsiyyah":[75,76],"madd_246":[100,101],"qalqalah":[61,63,88,90,101,102],"hamzat_wasl":[2,3,74,75,93,94]},
+"40": {"lam_shamsiyyah":[41,42],"madd_2":[36,37],"madd_246":[47,48],"qalqalah":[32,34,48,49],"hamzat_wasl":[7,8,40,41]},
+"41": {"ikhfa":[49,53],"idghaam_ghunnah":[40,45],"madd_246":[55,56],"qalqalah":[56,57],"hamzat_wasl":[2,3,27,28]},
+"42": {"lam_shamsiyyah":[20,21],"madd_2":[44,45],"madd_246":[64,65],"qalqalah":[65,66],"hamzat_wasl":[19,20,33,34,57,58]},
+"43": {"ghunnah":[2,5],"madd_2":[20,21],"madd_246":[51,52],"hamzat_wasl":[44,45]},
+"44": {"ikhfa":[42,47],"madd_2":[47,48],"madd_246":[74,75],"hamzat_wasl":[17,18]},
+"45": {"ikhfa":[43,46,66,70],"ikhfa_shafawi":[55,59],"idghaam_ghunnah":[95,99],"madd_246":[109,110],"madd_munfasil":[38,40],"qalqalah":[110,111],"hamzat_wasl":[80,81]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/51.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/51.json
index 6f014b1..38ba2e4 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/51.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/51.json
@@ -1,61 +1,61 @@
{
-"1": {"idgham":[42,43],"madd":[46,47,51,52],"wasl":[41,42]},
-"2": {"madd":[7,8,12,13],"qalqalah":[18,20],"wasl":[2,3]},
-"3": {"madd":[7,8,12,13],"wasl":[2,3]},
-"4": {"madd":[14,15],"wasl":[2,3]},
+"1": {"lam_shamsiyyah":[42,43],"madd_2":[46,47,51,52],"hamzat_wasl":[41,42]},
+"2": {"madd_2":[7,8,12,13],"qalqalah":[18,20],"hamzat_wasl":[2,3]},
+"3": {"madd_2":[7,8,12,13],"hamzat_wasl":[2,3]},
+"4": {"madd_2":[14,15],"hamzat_wasl":[2,3]},
"5": {"ghunnah":[2,5],"qalqalah":[27,28]},
-"6": {"ghunnah":[4,7],"idgham":[9,10],"madd":[21,22],"wasl":[8,9]},
-"7": {"idgham":[3,4],"madd":[9,11],"wasl":[2,3,20,21]},
-"8": {"ghunnah":[2,5],"idgham":[21,26]},
-"10": {"madd":[15,16,18,19],"wasl":[7,8]},
-"11": {"ghunnah":[26,30],"madd":[33,34]},
-"12": {"idgham":[30,31],"madd":[34,35],"wasl":[29,30]},
-"13": {"ghunnah":[20,23],"idgham":[19,20],"madd":[35,36],"wasl":[18,19]},
-"14": {"ghunnah":[39,42,42,46],"madd":[24,25,48,49,62,63],"silent":[6,8],"wasl":[29,30]},
-"15": {"ghunnah":[2,5,26,29],"idgham":[31,35],"madd":[29,30,39,40],"wasl":[6,7]},
-"16": {"ghunnah":[40,43],"madd":[13,15,22,23,66,67,80,81],"qalqalah":[59,61],"silent":[54,56]},
-"17": {"idgham":[15,21],"madd":[45,46],"silent":[6,8],"wasl":[24,25]},
-"18": {"madd":[34,35],"wasl":[4,5]},
-"19": {"idgham":[25,30,30,31],"madd":[4,6,13,14,34,36,52,53],"wasl":[43,44]},
-"20": {"idgham":[23,28],"madd":[21,22,37,38],"wasl":[6,7]},
-"21": {"ghunnah":[9,12],"madd":[4,6,35,36],"qalqalah":[29,31]},
-"22": {"idgham":[7,8],"madd":[13,15,42,43],"wasl":[6,7]},
-"23": {"ghunnah":[36,39,66,69,76,79],"idgham":[11,12,49,54],"madd":[17,19,41,42,61,63,81,82],"wasl":[10,11,24,25]},
-"24": {"madd":[10,11,35,36,53,54],"qalqalah":[31,33],"wasl":[42,43]},
-"25": {"ghunnah":[41,46,56,60,68,71],"idgham":[63,68],"madd":[39,40,54,55,73,74],"silent":[12,14,32,34]},
-"26": {"ghunnah":[42,46],"madd":[12,15,24,25,30,32,48,49],"qalqalah":[39,41]},
-"27": {"madd":[11,13,45,46]},
-"28": {"ghunnah":[26,30],"madd":[67,68,75,76],"silent":[34,36]},
-"29": {"ghunnah":[36,40],"madd":[24,25,80,81],"qalqalah":[4,6,50,52],"wasl":[13,14]},
-"30": {"ghunnah":[35,38],"madd":[13,14,40,41,65,66],"silent":[6,8],"wasl":[47,48,58,59]},
-"31": {"madd":[43,44],"qalqalah":[14,16],"wasl":[32,33]},
-"32": {"ghunnah":[12,15],"idgham":[43,48],"madd":[5,7,15,17,28,30,54,55],"qalqalah":[48,50],"silent":[7,9]},
-"33": {"ghunnah":[35,39],"idgham":[30,35],"madd":[39,40]},
-"34": {"ghunnah":[15,18],"madd":[39,40]},
-"35": {"ghunnah":[16,20],"madd":[47,48],"qalqalah":[8,10],"wasl":[36,37]},
-"36": {"idgham":[35,40],"madd":[54,55],"qalqalah":[10,12],"wasl":[43,44]},
-"37": {"idgham":[26,31],"madd":[17,19,69,70],"wasl":[51,52,62,63]},
-"38": {"idgham":[62,67],"madd":[11,14,30,31,60,61,69,70]},
-"39": {"madd":[22,23,34,35,51,52],"qalqalah":[47,49]},
-"40": {"ghunnah":[52,55],"madd":[10,11,25,26,37,38,67,68],"wasl":[47,48]},
-"41": {"idgham":[41,42],"madd":[56,57],"wasl":[40,41,49,50]},
-"42": {"ghunnah":[13,17],"idgham":[59,60],"madd":[65,66],"wasl":[58,59]},
-"43": {"madd":[55,56],"silent":[42,44]},
-"44": {"ghunnah":[70,73],"idgham":[49,50],"madd":[53,54,75,76],"silent":[8,10],"wasl":[48,49]},
-"45": {"ghunnah":[22,26,49,52],"idgham":[30,34],"madd":[13,14,56,57],"silent":[17,19,44,46],"wasl":[6,7]},
-"46": {"ghunnah":[18,22,29,32,51,56],"idgham":[13,18],"madd":[56,57,61,62],"qalqalah":[22,24],"silent":[43,45]},
-"47": {"ghunnah":[42,45],"idgham":[3,4,36,40],"madd":[9,11,22,23,56,57],"silent":[33,35],"wasl":[2,3]},
-"48": {"madd":[20,21,39,40,44,45],"wasl":[2,3,34,35]},
-"49": {"ghunnah":[4,8],"madd":[61,62],"qalqalah":[23,25]},
-"50": {"ghunnah":[28,31],"idgham":[37,42,53,58],"madd":[7,9,60,61],"silent":[9,11],"wasl":[18,19]},
-"51": {"ghunnah":[50,53],"idgham":[59,64,75,80],"madd":[35,36,82,83],"qalqalah":[8,10],"silent":[15,17],"wasl":[23,24]},
-"52": {"ghunnah":[33,37],"idgham":[43,48,48,53],"madd":[4,5,12,14,94,95],"qalqalah":[37,39,90,92],"silent":[72,74],"wasl":[21,22]},
-"53": {"ghunnah":[35,39],"madd":[18,19,42,43],"silent":[11,13]},
-"54": {"ghunnah":[28,31],"madd":[23,25,38,39]},
-"55": {"ghunnah":[14,17,32,35],"idgham":[19,20],"madd":[49,50],"wasl":[18,19,38,39]},
-"56": {"ghunnah":[20,23,31,34],"madd":[52,53],"qalqalah":[10,12],"wasl":[15,16,26,27]},
-"57": {"idgham":[19,24,24,29,32,36,51,55],"madd":[2,4,38,40,61,62],"qalqalah":[55,57]},
-"58": {"ghunnah":[2,5],"idgham":[20,21],"madd":[53,54],"wasl":[6,7,19,20,35,36,46,47]},
-"59": {"ghunnah":[4,7],"idgham":[35,41],"madd":[60,61,86,87],"silent":[26,28]},
-"60": {"idgham":[7,12,33,37],"madd":[61,62],"silent":[28,30],"wasl":[46,47]}
+"6": {"ghunnah":[4,7],"lam_shamsiyyah":[9,10],"madd_2":[21,22],"hamzat_wasl":[8,9]},
+"7": {"lam_shamsiyyah":[3,4],"madd_muttasil":[9,11],"hamzat_wasl":[2,3,20,21]},
+"8": {"ghunnah":[2,5],"idghaam_ghunnah":[21,26]},
+"10": {"madd_2":[15,16],"madd_246":[18,19],"hamzat_wasl":[7,8]},
+"11": {"ikhfa":[26,30],"madd_246":[33,34]},
+"12": {"lam_shamsiyyah":[30,31],"madd_246":[34,35],"hamzat_wasl":[29,30]},
+"13": {"ghunnah":[20,23],"lam_shamsiyyah":[19,20],"madd_246":[35,36],"hamzat_wasl":[18,19]},
+"14": {"ikhfa":[39,42],"ikhfa_shafawi":[42,46],"madd_2":[24,25,48,49],"madd_246":[62,63],"silent":[6,8],"hamzat_wasl":[29,30]},
+"15": {"ghunnah":[2,5,26,29],"idghaam_ghunnah":[31,35],"madd_2":[29,30],"madd_246":[39,40],"hamzat_wasl":[6,7]},
+"16": {"ghunnah":[40,43],"madd_2":[22,23,66,67],"madd_246":[80,81],"madd_munfasil":[13,15],"qalqalah":[59,61],"silent":[54,56]},
+"17": {"idghaam_ghunnah":[15,21],"madd_246":[45,46],"silent":[6,8],"hamzat_wasl":[24,25]},
+"18": {"madd_246":[34,35],"hamzat_wasl":[4,5]},
+"19": {"idghaam_no_ghunnah":[25,30],"lam_shamsiyyah":[30,31],"madd_2":[13,14],"madd_246":[52,53],"madd_munfasil":[4,6],"madd_muttasil":[34,36],"hamzat_wasl":[43,44]},
+"20": {"idghaam_no_ghunnah":[23,28],"madd_2":[21,22],"madd_246":[37,38],"hamzat_wasl":[6,7]},
+"21": {"ikhfa":[9,12],"madd_246":[35,36],"madd_munfasil":[4,6],"qalqalah":[29,31]},
+"22": {"lam_shamsiyyah":[7,8],"madd_246":[42,43],"madd_muttasil":[13,15],"hamzat_wasl":[6,7]},
+"23": {"ghunnah":[36,39,66,69],"ikhfa":[76,79],"idghaam_ghunnah":[49,54],"lam_shamsiyyah":[11,12],"madd_2":[41,42],"madd_246":[81,82],"madd_munfasil":[61,63],"madd_muttasil":[17,19],"hamzat_wasl":[10,11,24,25]},
+"24": {"madd_2":[10,11,35,36],"madd_246":[53,54],"qalqalah":[31,33],"hamzat_wasl":[42,43]},
+"25": {"ikhfa":[41,46,56,60,68,71],"idghaam_ghunnah":[63,68],"madd_2":[39,40,54,55],"madd_246":[73,74],"silent":[12,14,32,34]},
+"26": {"ikhfa":[42,46],"madd_2":[24,25],"madd_246":[48,49],"madd_munfasil":[12,15],"madd_muttasil":[30,32],"qalqalah":[39,41]},
+"27": {"madd_246":[45,46],"madd_munfasil":[11,13]},
+"28": {"ikhfa":[26,30],"madd_2":[67,68],"madd_246":[75,76],"silent":[34,36]},
+"29": {"ikhfa":[36,40],"madd_2":[24,25],"madd_246":[80,81],"qalqalah":[4,6,50,52],"hamzat_wasl":[13,14]},
+"30": {"ghunnah":[35,38],"madd_2":[13,14,40,41],"madd_246":[65,66],"silent":[6,8],"hamzat_wasl":[47,48,58,59]},
+"31": {"madd_246":[43,44],"qalqalah":[14,16],"hamzat_wasl":[32,33]},
+"32": {"ghunnah":[12,15],"idghaam_ghunnah":[43,48],"madd_246":[54,55],"madd_munfasil":[5,7,15,17,28,30],"qalqalah":[48,50],"silent":[7,9]},
+"33": {"ikhfa":[35,39],"idghaam_ghunnah":[30,35],"madd_246":[39,40]},
+"34": {"ikhfa":[15,18],"madd_246":[39,40]},
+"35": {"ikhfa":[16,20],"madd_246":[47,48],"qalqalah":[8,10],"hamzat_wasl":[36,37]},
+"36": {"idghaam_ghunnah":[35,40],"madd_246":[54,55],"qalqalah":[10,12],"hamzat_wasl":[43,44]},
+"37": {"idghaam_no_ghunnah":[26,31],"madd_246":[69,70],"madd_munfasil":[17,19],"hamzat_wasl":[51,52,62,63]},
+"38": {"idghaam_ghunnah":[62,67],"madd_2":[30,31,60,61],"madd_246":[69,70],"madd_munfasil":[11,14]},
+"39": {"madd_2":[22,23,34,35],"madd_246":[51,52],"qalqalah":[47,49]},
+"40": {"ghunnah":[52,55],"madd_2":[10,11,25,26,37,38],"madd_246":[67,68],"hamzat_wasl":[47,48]},
+"41": {"lam_shamsiyyah":[41,42],"madd_246":[56,57],"hamzat_wasl":[40,41,49,50]},
+"42": {"ikhfa":[13,17],"lam_shamsiyyah":[59,60],"madd_246":[65,66],"hamzat_wasl":[58,59]},
+"43": {"madd_246":[55,56],"silent":[42,44]},
+"44": {"ikhfa":[70,73],"lam_shamsiyyah":[49,50],"madd_2":[53,54],"madd_246":[75,76],"silent":[8,10],"hamzat_wasl":[48,49]},
+"45": {"ikhfa":[22,26,49,52],"idghaam_ghunnah":[30,34],"madd_2":[13,14],"madd_246":[56,57],"silent":[17,19,44,46],"hamzat_wasl":[6,7]},
+"46": {"ghunnah":[29,32],"ikhfa":[18,22,51,56],"idghaam_ghunnah":[13,18],"madd_2":[56,57],"madd_246":[61,62],"qalqalah":[22,24],"silent":[43,45]},
+"47": {"ghunnah":[42,45],"idghaam_ghunnah":[36,40],"lam_shamsiyyah":[3,4],"madd_2":[22,23],"madd_246":[56,57],"madd_muttasil":[9,11],"silent":[33,35],"hamzat_wasl":[2,3]},
+"48": {"madd_2":[20,21,39,40],"madd_246":[44,45],"hamzat_wasl":[2,3,34,35]},
+"49": {"ikhfa":[4,8],"madd_246":[61,62],"qalqalah":[23,25]},
+"50": {"ghunnah":[28,31],"idghaam_ghunnah":[53,58],"idghaam_shafawi":[37,42],"madd_246":[60,61],"madd_munfasil":[7,9],"silent":[9,11],"hamzat_wasl":[18,19]},
+"51": {"ghunnah":[50,53],"idghaam_ghunnah":[75,80],"idghaam_shafawi":[59,64],"madd_2":[35,36],"madd_246":[82,83],"qalqalah":[8,10],"silent":[15,17],"hamzat_wasl":[23,24]},
+"52": {"ikhfa":[33,37],"idghaam_no_ghunnah":[48,53],"idghaam_shafawi":[43,48],"madd_2":[4,5],"madd_246":[94,95],"madd_munfasil":[12,14],"qalqalah":[37,39,90,92],"silent":[72,74],"hamzat_wasl":[21,22]},
+"53": {"ikhfa":[35,39],"madd_2":[18,19],"madd_246":[42,43],"silent":[11,13]},
+"54": {"ikhfa":[28,31],"madd_246":[38,39],"madd_munfasil":[23,25]},
+"55": {"ghunnah":[14,17],"ikhfa":[32,35],"lam_shamsiyyah":[19,20],"madd_246":[49,50],"hamzat_wasl":[18,19,38,39]},
+"56": {"ghunnah":[20,23],"ikhfa":[31,34],"madd_246":[52,53],"qalqalah":[10,12],"hamzat_wasl":[15,16,26,27]},
+"57": {"idghaam_ghunnah":[32,36,51,55],"idghaam_no_ghunnah":[24,29],"idghaam_shafawi":[19,24],"madd_246":[61,62],"madd_munfasil":[2,4,38,40],"qalqalah":[55,57]},
+"58": {"ghunnah":[2,5],"lam_shamsiyyah":[20,21],"madd_246":[53,54],"hamzat_wasl":[6,7,19,20,35,36,46,47]},
+"59": {"ghunnah":[4,7],"idghaam_ghunnah":[35,41],"madd_2":[60,61],"madd_246":[86,87],"silent":[26,28]},
+"60": {"idghaam_ghunnah":[33,37],"idghaam_no_ghunnah":[7,12],"madd_246":[61,62],"silent":[28,30],"hamzat_wasl":[46,47]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/52.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/52.json
index a7722a4..5c8b355 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/52.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/52.json
@@ -1,51 +1,51 @@
{
-"1": {"idgham":[42,43],"madd":[46,47],"wasl":[41,42]},
-"2": {"idgham":[8,13],"madd":[6,7,17,18]},
-"3": {"ghunnah":[13,16],"idgham":[8,13],"madd":[16,17]},
-"4": {"madd":[21,22],"wasl":[2,3,12,13]},
-"5": {"idgham":[3,4],"madd":[21,22],"qalqalah":[7,9],"wasl":[2,3,12,13]},
-"6": {"madd":[21,22],"wasl":[2,3,12,13]},
-"7": {"ghunnah":[2,5],"madd":[26,27]},
-"8": {"ghunnah":[13,17],"madd":[9,10]},
-"9": {"idgham":[16,17],"madd":[22,24],"wasl":[15,16]},
-"10": {"wasl":[10,11]},
-"11": {"idgham":[7,11,18,23],"madd":[34,35]},
-"12": {"idgham":[24,28],"madd":[34,35]},
+"1": {"lam_shamsiyyah":[42,43],"madd_246":[46,47],"hamzat_wasl":[41,42]},
+"2": {"idghaam_ghunnah":[8,13],"madd_2":[6,7],"madd_246":[17,18]},
+"3": {"ikhfa":[13,16],"idghaam_ghunnah":[8,13],"madd_246":[16,17]},
+"4": {"madd_246":[21,22],"hamzat_wasl":[2,3,12,13]},
+"5": {"lam_shamsiyyah":[3,4],"madd_246":[21,22],"qalqalah":[7,9],"hamzat_wasl":[2,3,12,13]},
+"6": {"madd_246":[21,22],"hamzat_wasl":[2,3,12,13]},
+"7": {"ghunnah":[2,5],"madd_2":[26,27]},
+"8": {"ikhfa":[13,17],"madd_2":[9,10]},
+"9": {"lam_shamsiyyah":[16,17],"madd_muttasil":[22,24],"hamzat_wasl":[15,16]},
+"10": {"hamzat_wasl":[10,11]},
+"11": {"idghaam_ghunnah":[7,11],"idghaam_no_ghunnah":[18,23],"madd_246":[34,35]},
+"12": {"idghaam_ghunnah":[24,28],"madd_246":[34,35]},
"13": {"ghunnah":[35,38]},
-"14": {"ghunnah":[10,13,27,30,30,34],"idgham":[9,10],"madd":[2,3,47,48],"wasl":[8,9,17,18]},
-"15": {"ghunnah":[26,29],"madd":[13,14,16,18,44,45],"qalqalah":[38,40]},
-"16": {"ghunnah":[68,71,92,95],"madd":[20,22,50,52,106,107],"qalqalah":[77,79],"silent":[22,24,43,45],"wasl":[13,14]},
-"17": {"ghunnah":[2,5,26,29],"idgham":[31,35],"madd":[29,30,39,40],"wasl":[6,7]},
-"18": {"madd":[2,3,15,17,24,25,47,48,78,79],"wasl":[71,72]},
-"19": {"ghunnah":[29,34,41,44],"madd":[25,27,55,56],"silent":[5,7,18,20],"wasl":[10,11]},
-"20": {"ghunnah":[55,59],"idgham":[26,31,39,43],"madd":[52,53,67,68],"qalqalah":[48,50]},
-"21": {"ghunnah":[52,56,138,142,145,149,159,163],"idgham":[117,122,133,138],"madd":[61,62,103,105,114,115,179,180],"qalqalah":[71,73],"silent":[20,22],"wasl":[2,3,25,26,153,154]},
-"22": {"ghunnah":[15,19,41,44],"idgham":[27,31,36,41],"madd":[12,13,21,22,54,55],"qalqalah":[8,10]},
-"23": {"ghunnah":[40,44],"idgham":[27,33],"madd":[6,7,61,62]},
-"24": {"ghunnah":[43,46],"idgham":[29,34,58,63],"madd":[67,68]},
-"25": {"idgham":[34,38],"madd":[42,44,48,49],"qalqalah":[4,6]},
-"26": {"ghunnah":[12,15,19,22],"madd":[5,7,33,35,54,55],"qalqalah":[26,28],"silent":[7,9]},
-"27": {"ghunnah":[4,7],"idgham":[47,48],"madd":[33,34,53,54],"wasl":[8,9,46,47]},
-"28": {"ghunnah":[2,5,9,12,16,20,37,40],"idgham":[59,60],"madd":[42,43,65,66],"qalqalah":[20,22,27,29],"wasl":[49,50,58,59]},
-"29": {"ghunnah":[19,22],"idgham":[50,54],"madd":[14,16,64,65],"qalqalah":[60,62]},
-"30": {"idgham":[22,27],"madd":[41,42,57,58],"wasl":[50,51]},
-"31": {"ghunnah":[22,25],"idgham":[33,38],"madd":[55,56],"silent":[15,17],"wasl":[41,42]},
-"32": {"ghunnah":[29,33,56,60],"madd":[24,25,35,36,38,40,63,64]},
-"33": {"madd":[27,28,46,47]},
-"34": {"ghunnah":[38,42],"idgham":[22,27],"madd":[33,35,51,52,56,57],"silent":[11,13,46,48]},
-"35": {"madd":[49,50,54,55],"silent":[12,14],"wasl":[44,45]},
-"36": {"idgham":[16,17],"madd":[22,23,25,26,57,58],"silent":[12,14],"wasl":[15,16,31,32]},
-"37": {"ghunnah":[7,10],"madd":[19,21,58,59],"wasl":[44,45]},
-"38": {"ghunnah":[63,67],"idgham":[18,22,75,80],"madd":[73,74,82,83]},
-"39": {"madd":[17,18,37,38],"wasl":[10,11,30,31]},
-"40": {"ghunnah":[24,29],"idgham":[31,36,36,41,46,51],"madd":[57,58],"qalqalah":[21,23]},
-"41": {"ghunnah":[7,10],"madd":[40,41],"wasl":[15,16]},
-"42": {"ghunnah":[21,26],"madd":[61,62],"silent":[43,45],"wasl":[26,27,51,52]},
-"43": {"ghunnah":[55,58],"madd":[16,17,41,42,68,69],"qalqalah":[37,39],"wasl":[27,28,45,46]},
-"44": {"idgham":[4,8,20,26,30,31,47,52,67,72],"madd":[36,38,76,77],"silent":[12,14,58,60],"wasl":[29,30]},
-"45": {"madd":[23,24,63,64],"silent":[27,29],"wasl":[41,42]},
-"46": {"ghunnah":[61,64],"idgham":[45,50],"madd":[66,67]},
-"47": {"ghunnah":[4,7,35,40,59,62],"madd":[46,47,56,57,88,89],"silent":[26,28]},
-"48": {"ghunnah":[31,34],"madd":[88,89],"wasl":[2,3]},
-"49": {"ghunnah":[42,45],"idgham":[41,42],"madd":[36,37,47,48],"qalqalah":[32,34],"wasl":[7,8,40,41]}
+"14": {"ghunnah":[10,13],"ikhfa":[27,30],"ikhfa_shafawi":[30,34],"lam_shamsiyyah":[9,10],"madd_2":[2,3],"madd_246":[47,48],"hamzat_wasl":[8,9,17,18]},
+"15": {"ikhfa":[26,29],"madd_2":[13,14],"madd_246":[44,45],"madd_munfasil":[16,18],"qalqalah":[38,40]},
+"16": {"ghunnah":[68,71],"ikhfa":[92,95],"madd_246":[106,107],"madd_munfasil":[20,22],"madd_muttasil":[50,52],"qalqalah":[77,79],"silent":[22,24,43,45],"hamzat_wasl":[13,14]},
+"17": {"ghunnah":[2,5,26,29],"idghaam_ghunnah":[31,35],"madd_2":[29,30],"madd_246":[39,40],"hamzat_wasl":[6,7]},
+"18": {"madd_2":[2,3,24,25,47,48],"madd_246":[78,79],"madd_munfasil":[15,17],"hamzat_wasl":[71,72]},
+"19": {"ikhfa":[41,44],"iqlab":[29,34],"madd_246":[55,56],"madd_muttasil":[25,27],"silent":[5,7,18,20],"hamzat_wasl":[10,11]},
+"20": {"ikhfa_shafawi":[55,59],"idghaam_ghunnah":[26,31,39,43],"madd_2":[52,53],"madd_246":[67,68],"qalqalah":[48,50]},
+"21": {"ikhfa":[138,142,145,149],"ikhfa_shafawi":[52,56],"iqlab":[159,163],"idghaam_shafawi":[117,122,133,138],"madd_2":[61,62,114,115],"madd_246":[179,180],"madd_munfasil":[103,105],"qalqalah":[71,73],"silent":[20,22],"hamzat_wasl":[2,3,25,26,153,154]},
+"22": {"ghunnah":[41,44],"ikhfa_shafawi":[15,19],"idghaam_ghunnah":[27,31,36,41],"madd_2":[12,13,21,22],"madd_246":[54,55],"qalqalah":[8,10]},
+"23": {"ikhfa":[40,44],"idghaam_no_ghunnah":[27,33],"madd_2":[6,7],"madd_246":[61,62]},
+"24": {"ghunnah":[43,46],"idghaam_ghunnah":[58,63],"idghaam_no_ghunnah":[29,34],"madd_246":[67,68]},
+"25": {"idghaam_ghunnah":[34,38],"madd_246":[48,49],"madd_muttasil":[42,44],"qalqalah":[4,6]},
+"26": {"ghunnah":[12,15,19,22],"madd_246":[54,55],"madd_munfasil":[5,7,33,35],"qalqalah":[26,28],"silent":[7,9]},
+"27": {"ghunnah":[4,7],"lam_shamsiyyah":[47,48],"madd_2":[33,34],"madd_246":[53,54],"hamzat_wasl":[8,9,46,47]},
+"28": {"ghunnah":[2,5,9,12,37,40],"ikhfa":[16,20],"lam_shamsiyyah":[59,60],"madd_2":[42,43],"madd_246":[65,66],"qalqalah":[20,22,27,29],"hamzat_wasl":[49,50,58,59]},
+"29": {"ikhfa":[19,22],"idghaam_ghunnah":[50,54],"madd_246":[64,65],"madd_munfasil":[14,16],"qalqalah":[60,62]},
+"30": {"idghaam_ghunnah":[22,27],"madd_2":[41,42],"madd_246":[57,58],"hamzat_wasl":[50,51]},
+"31": {"ghunnah":[22,25],"idghaam_shafawi":[33,38],"madd_246":[55,56],"silent":[15,17],"hamzat_wasl":[41,42]},
+"32": {"ikhfa":[56,60],"ikhfa_shafawi":[29,33],"madd_2":[24,25,35,36],"madd_246":[63,64],"madd_munfasil":[38,40]},
+"33": {"madd_2":[27,28],"madd_246":[46,47]},
+"34": {"ikhfa":[38,42],"idghaam_ghunnah":[22,27],"madd_2":[51,52],"madd_246":[56,57],"madd_munfasil":[33,35],"silent":[11,13,46,48]},
+"35": {"madd_2":[49,50],"madd_246":[54,55],"silent":[12,14],"hamzat_wasl":[44,45]},
+"36": {"lam_shamsiyyah":[16,17],"madd_2":[22,23,25,26],"madd_246":[57,58],"silent":[12,14],"hamzat_wasl":[15,16,31,32]},
+"37": {"ikhfa":[7,10],"madd_246":[58,59],"madd_muttasil":[19,21],"hamzat_wasl":[44,45]},
+"38": {"ikhfa_shafawi":[63,67],"idghaam_ghunnah":[18,22,75,80],"madd_2":[73,74],"madd_246":[82,83]},
+"39": {"madd_2":[17,18],"madd_246":[37,38],"hamzat_wasl":[10,11,30,31]},
+"40": {"ikhfa":[24,29],"idghaam_ghunnah":[36,41,46,51],"idghaam_shafawi":[31,36],"madd_246":[57,58],"qalqalah":[21,23]},
+"41": {"ikhfa":[7,10],"madd_246":[40,41],"hamzat_wasl":[15,16]},
+"42": {"ikhfa":[21,26],"madd_246":[61,62],"silent":[43,45],"hamzat_wasl":[26,27,51,52]},
+"43": {"ghunnah":[55,58],"madd_2":[16,17,41,42],"madd_246":[68,69],"qalqalah":[37,39],"hamzat_wasl":[27,28,45,46]},
+"44": {"idghaam_ghunnah":[4,8,20,26,47,52,67,72],"lam_shamsiyyah":[30,31],"madd_246":[76,77],"madd_muttasil":[36,38],"silent":[12,14,58,60],"hamzat_wasl":[29,30]},
+"45": {"madd_2":[23,24],"madd_246":[63,64],"silent":[27,29],"hamzat_wasl":[41,42]},
+"46": {"ikhfa":[61,64],"idghaam_ghunnah":[45,50],"madd_246":[66,67]},
+"47": {"ghunnah":[4,7,59,62],"ikhfa":[35,40],"madd_2":[46,47,56,57],"madd_246":[88,89],"silent":[26,28]},
+"48": {"ghunnah":[31,34],"madd_246":[88,89],"hamzat_wasl":[2,3]},
+"49": {"ghunnah":[42,45],"lam_shamsiyyah":[41,42],"madd_2":[36,37],"madd_246":[47,48],"qalqalah":[32,34],"hamzat_wasl":[7,8,40,41]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/53.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/53.json
index 8da1ee8..c4e5280 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/53.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/53.json
@@ -1,62 +1,62 @@
{
-"1": {"ghunnah":[43,46],"idgham":[42,43],"qalqalah":[46,48],"wasl":[41,42]},
-"3": {"ghunnah":[8,11],"wasl":[19,20]},
-"4": {"idgham":[22,26]},
-"5": {"madd":[9,10],"wasl":[19,20]},
-"6": {"ghunnah":[10,14],"wasl":[14,15]},
-"7": {"wasl":[9,10,19,20]},
+"1": {"ghunnah":[43,46],"lam_shamsiyyah":[42,43],"qalqalah":[46,48],"hamzat_wasl":[41,42]},
+"3": {"ikhfa":[8,11],"hamzat_wasl":[19,20]},
+"4": {"idghaam_ghunnah":[22,26]},
+"5": {"madd_2":[9,10],"hamzat_wasl":[19,20]},
+"6": {"ikhfa":[10,14],"hamzat_wasl":[14,15]},
+"7": {"hamzat_wasl":[9,10,19,20]},
"8": {"ghunnah":[2,5]},
"9": {"qalqalah":[32,34]},
-"10": {"madd":[8,11,27,28,31,33],"qalqalah":[21,23]},
-"11": {"wasl":[11,12]},
-"12": {"madd":[8,9,16,17]},
+"10": {"madd_2":[27,28],"madd_munfasil":[8,11,31,33],"qalqalah":[21,23]},
+"11": {"hamzat_wasl":[11,12]},
+"12": {"madd_2":[8,9,16,17]},
"13": {"qalqalah":[6,8]},
-"14": {"ghunnah":[2,5,20,23],"qalqalah":[8,10],"wasl":[15,16]},
-"15": {"ghunnah":[2,5,11,14],"wasl":[17,18]},
-"16": {"idgham":[14,15],"qalqalah":[18,20],"wasl":[13,14]},
-"17": {"wasl":[10,11]},
-"18": {"madd":[24,25],"qalqalah":[4,6,41,43],"wasl":[36,37]},
-"19": {"idgham":[16,17],"madd":[20,21],"wasl":[15,16,26,27]},
-"20": {"idgham":[12,13],"madd":[7,8],"silent":[6,7],"wasl":[11,12,24,25]},
-"21": {"ghunnah":[31,34],"idgham":[10,11],"wasl":[9,10,26,27]},
-"22": {"ghunnah":[10,15,20,24]},
-"23": {"ghunnah":[27,31,31,34,48,51,77,80,99,103,140,143,163,166],"idgham":[67,72,113,117,136,137,186,191,191,196],"madd":[15,17,24,26,43,45,61,63,72,74,107,108,180,182],"qalqalah":[175,177],"wasl":[83,84,135,136,158,159,204,205]},
-"24": {"ghunnah":[11,14,26,29],"madd":[14,15]},
-"25": {"wasl":[10,11,25,26]},
-"26": {"ghunnah":[17,21,82,85],"idgham":[4,9,9,14,24,25,93,97,116,120],"madd":[30,31,33,34,53,54,122,124],"wasl":[23,24,104,105]},
-"27": {"ghunnah":[2,5,53,56,92,95],"madd":[67,69],"wasl":[6,7,34,35,60,61,87,88]},
-"28": {"ghunnah":[10,14,59,62,67,70,76,79],"idgham":[32,36,55,56,72,73],"madd":[16,17],"wasl":[54,55,71,72,97,98]},
-"29": {"ghunnah":[18,22,32,36],"idgham":[13,18,78,79],"madd":[73,74],"qalqalah":[55,57],"silent":[72,73],"wasl":[65,66,77,78]},
-"30": {"ghunnah":[38,41,68,72,78,82],"idgham":[18,23],"madd":[2,3,89,90],"qalqalah":[10,12],"wasl":[26,27,114,115]},
-"31": {"idgham":[19,20],"madd":[25,26,28,29,77,79],"qalqalah":[56,58,106,108],"silent":[83,85,99,101,132,134],"wasl":[18,19,42,43,63,64,113,114,137,138]},
-"32": {"ghunnah":[79,82,141,144,175,178,185,188,189,193,205,208,238,241],"idgham":[68,69,148,153],"madd":[28,30,54,55,93,94,210,211,231,233],"qalqalah":[12,14],"silent":[233,235],"wasl":[35,36,47,48,67,68,99,100,156,157,269,270]},
-"33": {"wasl":[13,14]},
-"34": {"idgham":[17,22]},
-"35": {"ghunnah":[4,7],"madd":[9,10],"wasl":[18,19]},
-"37": {"madd":[8,9],"qalqalah":[4,6],"wasl":[15,16]},
-"38": {"idgham":[22,26]},
-"39": {"ghunnah":[20,23],"idgham":[4,9],"madd":[23,24]},
-"40": {"ghunnah":[4,7],"madd":[16,17]},
-"41": {"ghunnah":[2,5],"madd":[13,14,24,26],"qalqalah":[8,10],"wasl":[17,18,29,30]},
-"42": {"ghunnah":[4,7,28,31],"wasl":[23,24]},
-"43": {"ghunnah":[4,7],"madd":[9,10],"qalqalah":[29,31]},
-"44": {"ghunnah":[4,7],"madd":[9,10]},
-"45": {"ghunnah":[4,7,49,52],"idgham":[19,20,33,34],"madd":[9,10],"wasl":[18,19,32,33,44,45]},
-"46": {"idgham":[2,7],"qalqalah":[7,9]},
-"47": {"ghunnah":[4,7,19,22],"idgham":[18,19],"wasl":[17,18,29,30]},
-"48": {"ghunnah":[4,7],"madd":[9,10],"qalqalah":[29,31]},
-"49": {"ghunnah":[4,7],"idgham":[23,24],"madd":[9,10],"wasl":[22,23]},
-"50": {"ghunnah":[4,7],"madd":[9,11],"wasl":[28,29]},
-"51": {"madd":[16,18],"qalqalah":[21,23],"silent":[9,11]},
-"52": {"ghunnah":[18,22,29,32],"idgham":[13,18],"qalqalah":[22,24,64,66],"silent":[43,45]},
-"53": {"wasl":[2,3]},
-"54": {"madd":[8,9]},
-"55": {"madd":[15,17]},
-"56": {"ghunnah":[23,26],"idgham":[13,18,22,23],"madd":[2,3],"wasl":[21,22,31,32]},
-"57": {"wasl":[9,10]},
-"58": {"ghunnah":[15,19],"wasl":[23,24]},
-"59": {"madd":[11,12,35,36],"wasl":[16,17]},
-"60": {"madd":[26,27],"qalqalah":[22,24]},
-"61": {"ghunnah":[4,7],"madd":[12,13,17,18]},
-"62": {"silent":[10,12,31,33],"wasl":[2,3,23,24]}
+"14": {"ikhfa":[2,5,20,23],"qalqalah":[8,10],"hamzat_wasl":[15,16]},
+"15": {"ghunnah":[11,14],"ikhfa":[2,5],"hamzat_wasl":[17,18]},
+"16": {"lam_shamsiyyah":[14,15],"qalqalah":[18,20],"hamzat_wasl":[13,14]},
+"17": {"hamzat_wasl":[10,11]},
+"18": {"madd_2":[24,25],"qalqalah":[4,6,41,43],"hamzat_wasl":[36,37]},
+"19": {"lam_shamsiyyah":[16,17],"madd_2":[20,21],"hamzat_wasl":[15,16,26,27]},
+"20": {"lam_shamsiyyah":[12,13],"madd_2":[7,8],"silent":[6,7],"hamzat_wasl":[11,12,24,25]},
+"21": {"ikhfa":[31,34],"lam_shamsiyyah":[10,11],"hamzat_wasl":[9,10,26,27]},
+"22": {"ikhfa":[10,15,20,24]},
+"23": {"ghunnah":[31,34,140,143],"ikhfa":[27,31,48,51,77,80,99,103,163,166],"idghaam_ghunnah":[113,117],"idghaam_no_ghunnah":[191,196],"idghaam_shafawi":[67,72,186,191],"lam_shamsiyyah":[136,137],"madd_2":[107,108],"madd_munfasil":[15,17,43,45,72,74],"madd_muttasil":[24,26,61,63,180,182],"qalqalah":[175,177],"hamzat_wasl":[83,84,135,136,158,159,204,205]},
+"24": {"ghunnah":[26,29],"ikhfa":[11,14],"madd_2":[14,15]},
+"25": {"hamzat_wasl":[10,11,25,26]},
+"26": {"ikhfa":[17,21],"iqlab":[82,85],"idghaam_ghunnah":[9,14,93,97,116,120],"idghaam_shafawi":[4,9],"lam_shamsiyyah":[24,25],"madd_2":[30,31,33,34,53,54],"madd_muttasil":[122,124],"hamzat_wasl":[23,24,104,105]},
+"27": {"ghunnah":[2,5,53,56],"ikhfa":[92,95],"madd_muttasil":[67,69],"hamzat_wasl":[6,7,34,35,60,61,87,88]},
+"28": {"ghunnah":[59,62,67,70,76,79],"ikhfa_shafawi":[10,14],"idghaam_ghunnah":[32,36],"lam_shamsiyyah":[55,56,72,73],"madd_2":[16,17],"hamzat_wasl":[54,55,71,72,97,98]},
+"29": {"ikhfa":[18,22,32,36],"idghaam_ghunnah":[13,18],"lam_shamsiyyah":[78,79],"madd_2":[73,74],"qalqalah":[55,57],"silent":[72,73],"hamzat_wasl":[65,66,77,78]},
+"30": {"ghunnah":[38,41],"ikhfa":[68,72,78,82],"idghaam_shafawi":[18,23],"madd_2":[2,3,89,90],"qalqalah":[10,12],"hamzat_wasl":[26,27,114,115]},
+"31": {"lam_shamsiyyah":[19,20],"madd_2":[25,26,28,29],"madd_muttasil":[77,79],"qalqalah":[56,58,106,108],"silent":[83,85,99,101,132,134],"hamzat_wasl":[18,19,42,43,63,64,113,114,137,138]},
+"32": {"ghunnah":[79,82,185,188,205,208],"ikhfa":[141,144,175,178,189,193,238,241],"idghaam_shafawi":[148,153],"lam_shamsiyyah":[68,69],"madd_2":[54,55,93,94,210,211],"madd_munfasil":[231,233],"madd_muttasil":[28,30],"qalqalah":[12,14],"silent":[233,235],"hamzat_wasl":[35,36,47,48,67,68,99,100,156,157,269,270]},
+"33": {"hamzat_wasl":[13,14]},
+"34": {"idghaam_ghunnah":[17,22]},
+"35": {"ikhfa":[4,7],"madd_2":[9,10],"hamzat_wasl":[18,19]},
+"37": {"madd_2":[8,9],"qalqalah":[4,6],"hamzat_wasl":[15,16]},
+"38": {"idghaam_ghunnah":[22,26]},
+"39": {"ikhfa":[20,23],"idghaam_no_ghunnah":[4,9],"madd_2":[23,24]},
+"40": {"ghunnah":[4,7],"madd_2":[16,17]},
+"41": {"ghunnah":[2,5],"madd_2":[13,14],"madd_muttasil":[24,26],"qalqalah":[8,10],"hamzat_wasl":[17,18,29,30]},
+"42": {"ghunnah":[4,7],"ikhfa":[28,31],"hamzat_wasl":[23,24]},
+"43": {"ghunnah":[4,7],"madd_2":[9,10],"qalqalah":[29,31]},
+"44": {"ghunnah":[4,7],"madd_2":[9,10]},
+"45": {"ghunnah":[4,7],"ikhfa":[49,52],"lam_shamsiyyah":[19,20,33,34],"madd_2":[9,10],"hamzat_wasl":[18,19,32,33,44,45]},
+"46": {"idghaam_ghunnah":[2,7],"qalqalah":[7,9]},
+"47": {"ghunnah":[4,7,19,22],"lam_shamsiyyah":[18,19],"hamzat_wasl":[17,18,29,30]},
+"48": {"ghunnah":[4,7],"madd_2":[9,10],"qalqalah":[29,31]},
+"49": {"ghunnah":[4,7],"lam_shamsiyyah":[23,24],"madd_2":[9,10],"hamzat_wasl":[22,23]},
+"50": {"ghunnah":[4,7],"madd_munfasil":[9,11],"hamzat_wasl":[28,29]},
+"51": {"madd_munfasil":[16,18],"qalqalah":[21,23],"silent":[9,11]},
+"52": {"ghunnah":[29,32],"ikhfa":[18,22],"idghaam_ghunnah":[13,18],"qalqalah":[22,24,64,66],"silent":[43,45]},
+"53": {"hamzat_wasl":[2,3]},
+"54": {"madd_2":[8,9]},
+"55": {"madd_muttasil":[15,17]},
+"56": {"ghunnah":[23,26],"idghaam_ghunnah":[13,18],"lam_shamsiyyah":[22,23],"madd_2":[2,3],"hamzat_wasl":[21,22,31,32]},
+"57": {"hamzat_wasl":[9,10]},
+"58": {"ikhfa":[15,19],"hamzat_wasl":[23,24]},
+"59": {"madd_2":[11,12],"madd_246":[35,36],"hamzat_wasl":[16,17]},
+"60": {"madd_246":[26,27],"qalqalah":[22,24]},
+"61": {"ikhfa":[4,7],"madd_2":[12,13],"madd_246":[17,18]},
+"62": {"silent":[10,12,31,33],"hamzat_wasl":[2,3,23,24]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/54.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/54.json
index bad00c0..959bb91 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/54.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/54.json
@@ -1,54 +1,54 @@
{
-"1": {"ghunnah":[65,68],"idgham":[52,53],"qalqalah":[40,42],"wasl":[51,52,64,65,72,73]},
-"2": {"idgham":[4,8,21,25,53,58],"silent":[12,14,32,34,45,47]},
-"3": {"idgham":[56,61],"madd":[23,25,34,36],"silent":[10,12,25,27],"wasl":[15,16]},
-"4": {"ghunnah":[31,33],"idgham":[17,22],"madd":[11,13,34,36],"qalqalah":[6,8],"wasl":[25,26]},
-"5": {"ghunnah":[7,11,18,22,35,38],"idgham":[34,35],"madd":[12,13],"wasl":[33,34]},
-"6": {"idgham":[34,35,54,59],"qalqalah":[28,30],"wasl":[33,34]},
-"7": {"ghunnah":[57,60,76,79],"idgham":[71,76],"madd":[15,16],"qalqalah":[11,13,45,47],"wasl":[40,41]},
-"8": {"idgham":[20,21],"madd":[41,42,52,53],"wasl":[19,20,36,37]},
-"9": {"ghunnah":[32,36],"idgham":[76,80],"qalqalah":[12,14,49,51,70,72],"silent":[44,46,65,67],"wasl":[80,81]},
-"10": {"ghunnah":[20,23,33,37,38,41],"madd":[15,17],"wasl":[37,38]},
-"11": {"idgham":[24,25,42,47],"madd":[10,12,19,20,30,32,39,41],"qalqalah":[15,17],"wasl":[23,24]},
-"12": {"ghunnah":[29,34,66,70],"madd":[48,50,57,60],"qalqalah":[70,72],"wasl":[13,14,34,35,43,44]},
-"13": {"idgham":[35,39],"madd":[10,11,33,34]},
-"14": {"ghunnah":[36,40],"idgham":[29,34],"madd":[26,28],"qalqalah":[2,4]},
-"15": {"ghunnah":[29,33],"idgham":[6,7,40,45],"madd":[17,18,20,22]},
-"17": {"idgham":[35,36,53,58],"qalqalah":[6,8],"wasl":[20,21]},
-"18": {"ghunnah":[14,18]},
-"19": {"ghunnah":[2,5,35,40,45,50],"idgham":[64,69],"madd":[5,7]},
-"20": {"ghunnah":[2,5,10,13,21,24,49,52],"idgham":[9,10,44,49],"wasl":[8,9]},
-"22": {"idgham":[35,36,53,58],"qalqalah":[6,8],"wasl":[20,21]},
-"23": {"ghunnah":[22,25],"idgham":[21,22],"wasl":[20,21]},
-"24": {"ghunnah":[25,28,56,59],"idgham":[19,25,36,42,65,71,81,85],"madd":[7,9,32,33,51,53,59,61,79,80],"silent":[9,11]},
-"25": {"ghunnah":[33,36],"idgham":[12,13],"wasl":[11,12]},
-"26": {"idgham":[17,23],"wasl":[26,27,38,39]},
-"27": {"ghunnah":[2,5,21,24],"idgham":[20,21,37,42],"qalqalah":[56,58],"silent":[16,18],"wasl":[19,20,49,50,65,66]},
-"28": {"ghunnah":[16,19,37,41],"idgham":[62,67],"madd":[25,27],"wasl":[20,21]},
+"1": {"ikhfa":[65,68],"lam_shamsiyyah":[52,53],"qalqalah":[40,42],"hamzat_wasl":[51,52,64,65,72,73]},
+"2": {"idghaam_ghunnah":[4,8,21,25,53,58],"silent":[12,14,32,34,45,47]},
+"3": {"idghaam_ghunnah":[56,61],"madd_munfasil":[23,25],"madd_muttasil":[34,36],"silent":[10,12,25,27],"hamzat_wasl":[15,16]},
+"4": {"iqlab":[31,33],"idghaam_shafawi":[17,22],"madd_muttasil":[11,13,34,36],"qalqalah":[6,8],"hamzat_wasl":[25,26]},
+"5": {"ghunnah":[35,38],"ikhfa":[18,22],"iqlab":[7,11],"lam_shamsiyyah":[34,35],"madd_2":[12,13],"hamzat_wasl":[33,34]},
+"6": {"idghaam_ghunnah":[54,59],"lam_shamsiyyah":[34,35],"qalqalah":[28,30],"hamzat_wasl":[33,34]},
+"7": {"ghunnah":[57,60],"ikhfa":[76,79],"idghaam_ghunnah":[71,76],"madd_2":[15,16],"qalqalah":[11,13,45,47],"hamzat_wasl":[40,41]},
+"8": {"lam_shamsiyyah":[20,21],"madd_2":[41,42,52,53],"hamzat_wasl":[19,20,36,37]},
+"9": {"ikhfa":[32,36],"idghaam_ghunnah":[76,80],"qalqalah":[12,14,49,51,70,72],"silent":[44,46,65,67],"hamzat_wasl":[80,81]},
+"10": {"ghunnah":[20,23],"ikhfa":[33,37,38,41],"madd_munfasil":[15,17],"hamzat_wasl":[37,38]},
+"11": {"idghaam_ghunnah":[42,47],"lam_shamsiyyah":[24,25],"madd_2":[19,20],"madd_munfasil":[10,12],"madd_muttasil":[30,32,39,41],"qalqalah":[15,17],"hamzat_wasl":[23,24]},
+"12": {"ikhfa":[29,34,66,70],"madd_munfasil":[57,60],"madd_muttasil":[48,50],"qalqalah":[70,72],"hamzat_wasl":[13,14,34,35,43,44]},
+"13": {"idghaam_ghunnah":[35,39],"madd_2":[10,11,33,34]},
+"14": {"ikhfa":[36,40],"idghaam_no_ghunnah":[29,34],"madd_muttasil":[26,28],"qalqalah":[2,4]},
+"15": {"ikhfa":[29,33],"idghaam_ghunnah":[40,45],"idghaam_mutajanisayn":[6,7],"madd_2":[17,18],"madd_munfasil":[20,22]},
+"17": {"idghaam_ghunnah":[53,58],"lam_shamsiyyah":[35,36],"qalqalah":[6,8],"hamzat_wasl":[20,21]},
+"18": {"ikhfa":[14,18]},
+"19": {"ghunnah":[2,5],"ikhfa":[35,40,45,50],"idghaam_ghunnah":[64,69],"madd_munfasil":[5,7]},
+"20": {"ghunnah":[10,13,21,24],"ikhfa":[2,5,49,52],"idghaam_ghunnah":[44,49],"lam_shamsiyyah":[9,10],"hamzat_wasl":[8,9]},
+"22": {"idghaam_ghunnah":[53,58],"lam_shamsiyyah":[35,36],"qalqalah":[6,8],"hamzat_wasl":[20,21]},
+"23": {"ghunnah":[22,25],"lam_shamsiyyah":[21,22],"hamzat_wasl":[20,21]},
+"24": {"ghunnah":[25,28,56,59],"idghaam_ghunnah":[19,25,36,42,81,85],"idghaam_no_ghunnah":[65,71],"madd_2":[32,33,79,80],"madd_munfasil":[7,9,51,53,59,61],"silent":[9,11]},
+"25": {"iqlab":[33,36],"lam_shamsiyyah":[12,13],"hamzat_wasl":[11,12]},
+"26": {"idghaam_ghunnah":[17,23],"hamzat_wasl":[26,27,38,39]},
+"27": {"ghunnah":[2,5,21,24],"idghaam_no_ghunnah":[37,42],"lam_shamsiyyah":[20,21],"qalqalah":[56,58],"silent":[16,18],"hamzat_wasl":[19,20,49,50,65,66]},
+"28": {"ghunnah":[16,19],"iqlab":[37,41],"idghaam_ghunnah":[62,67],"madd_muttasil":[25,27],"hamzat_wasl":[20,21]},
"29": {"silent":[9,11]},
-"31": {"ghunnah":[2,5,48,52],"idgham":[38,42],"madd":[5,7,42,43],"silent":[58,60],"wasl":[71,72]},
-"32": {"idgham":[35,36,53,58],"qalqalah":[6,8],"wasl":[20,21]},
-"33": {"ghunnah":[21,25,28,31],"idgham":[27,28],"wasl":[26,27]},
-"34": {"ghunnah":[2,5,73,77],"idgham":[58,63],"madd":[5,7,45,47,70,71]},
-"35": {"ghunnah":[18,21,45,49],"idgham":[8,13],"madd":[29,30],"qalqalah":[37,39]},
-"36": {"ghunnah":[11,14,18,22,50,53],"idgham":[49,50],"qalqalah":[6,8,22,24],"silent":[43,45],"wasl":[48,49]},
-"37": {"ghunnah":[22,26],"madd":[11,12,32,33,44,46],"qalqalah":[6,8],"silent":[68,70]},
-"38": {"ghunnah":[18,22],"idgham":[35,40],"qalqalah":[6,8]},
+"31": {"ghunnah":[2,5],"ikhfa":[48,52],"idghaam_ghunnah":[38,42],"madd_2":[42,43],"madd_munfasil":[5,7],"silent":[58,60],"hamzat_wasl":[71,72]},
+"32": {"idghaam_ghunnah":[53,58],"lam_shamsiyyah":[35,36],"qalqalah":[6,8],"hamzat_wasl":[20,21]},
+"33": {"ghunnah":[28,31],"iqlab":[21,25],"lam_shamsiyyah":[27,28],"hamzat_wasl":[26,27]},
+"34": {"ghunnah":[2,5],"ikhfa_shafawi":[73,77],"idghaam_ghunnah":[58,63],"madd_2":[70,71],"madd_munfasil":[5,7,45,47]},
+"35": {"ikhfa":[18,21,45,49],"idghaam_ghunnah":[8,13],"madd_2":[29,30],"qalqalah":[37,39]},
+"36": {"ghunnah":[50,53],"ikhfa":[11,14],"ikhfa_shafawi":[18,22],"lam_shamsiyyah":[49,50],"qalqalah":[6,8,22,24],"silent":[43,45],"hamzat_wasl":[48,49]},
+"37": {"ikhfa":[22,26],"madd_2":[11,12,32,33],"madd_munfasil":[44,46],"qalqalah":[6,8],"silent":[68,70]},
+"38": {"ikhfa_shafawi":[18,22],"idghaam_ghunnah":[35,40],"qalqalah":[6,8]},
"39": {"silent":[8,10]},
-"40": {"idgham":[35,36,53,58],"qalqalah":[6,8],"wasl":[20,21]},
-"41": {"ghunnah":[35,38],"idgham":[34,35],"madd":[11,13],"qalqalah":[6,8],"wasl":[33,34]},
-"42": {"idgham":[64,69],"madd":[19,20,45,46],"qalqalah":[69,71],"silent":[8,10]},
-"43": {"ghunnah":[52,56,63,67],"idgham":[20,25,70,71],"madd":[34,36,58,60],"silent":[30,32],"wasl":[69,70]},
-"44": {"ghunnah":[34,37],"idgham":[29,34]},
-"45": {"idgham":[35,36],"wasl":[11,12,34,35]},
-"46": {"idgham":[6,7,32,33],"qalqalah":[44,46],"wasl":[5,6,31,32]},
-"47": {"ghunnah":[2,5],"idgham":[31,35],"madd":[29,30],"qalqalah":[11,13],"wasl":[6,7]},
-"48": {"ghunnah":[25,28],"idgham":[24,25],"silent":[57,59],"wasl":[23,24]},
-"49": {"ghunnah":[2,5],"madd":[28,29],"qalqalah":[24,26]},
-"50": {"ghunnah":[33,37,42,46],"madd":[4,6,15,17,27,28],"wasl":[47,48]},
-"51": {"idgham":[45,50],"madd":[19,21],"qalqalah":[6,8]},
-"52": {"ghunnah":[13,17],"idgham":[30,31],"wasl":[29,30]},
-"53": {"idgham":[14,18,24,29]},
-"54": {"ghunnah":[2,5,26,29],"idgham":[31,35],"madd":[29,30],"wasl":[6,7]},
-"55": {"ghunnah":[22,25],"idgham":[32,37],"qalqalah":[6,8,15,17,37,39]}
+"40": {"idghaam_ghunnah":[53,58],"lam_shamsiyyah":[35,36],"qalqalah":[6,8],"hamzat_wasl":[20,21]},
+"41": {"ghunnah":[35,38],"lam_shamsiyyah":[34,35],"madd_muttasil":[11,13],"qalqalah":[6,8],"hamzat_wasl":[33,34]},
+"42": {"idghaam_ghunnah":[64,69],"madd_2":[19,20,45,46],"qalqalah":[69,71],"silent":[8,10]},
+"43": {"ikhfa":[63,67],"ikhfa_shafawi":[52,56],"idghaam_ghunnah":[20,25],"lam_shamsiyyah":[70,71],"madd_muttasil":[34,36,58,60],"silent":[30,32],"hamzat_wasl":[69,70]},
+"44": {"ikhfa":[34,37],"idghaam_ghunnah":[29,34]},
+"45": {"lam_shamsiyyah":[35,36],"hamzat_wasl":[11,12,34,35]},
+"46": {"lam_shamsiyyah":[6,7,32,33],"qalqalah":[44,46],"hamzat_wasl":[5,6,31,32]},
+"47": {"ghunnah":[2,5],"idghaam_ghunnah":[31,35],"madd_2":[29,30],"qalqalah":[11,13],"hamzat_wasl":[6,7]},
+"48": {"ghunnah":[25,28],"lam_shamsiyyah":[24,25],"silent":[57,59],"hamzat_wasl":[23,24]},
+"49": {"ghunnah":[2,5],"madd_2":[28,29],"qalqalah":[24,26]},
+"50": {"ikhfa":[33,37],"iqlab":[42,46],"madd_2":[27,28],"madd_munfasil":[4,6,15,17],"hamzat_wasl":[47,48]},
+"51": {"idghaam_ghunnah":[45,50],"madd_munfasil":[19,21],"qalqalah":[6,8]},
+"52": {"ikhfa":[13,17],"lam_shamsiyyah":[30,31],"hamzat_wasl":[29,30]},
+"53": {"idghaam_ghunnah":[14,18,24,29]},
+"54": {"ghunnah":[2,5,26,29],"idghaam_ghunnah":[31,35],"madd_2":[29,30],"hamzat_wasl":[6,7]},
+"55": {"ikhfa":[22,25],"idghaam_ghunnah":[32,37],"qalqalah":[6,8,15,17,37,39]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/55.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/55.json
index 35fac1c..5c05c89 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/55.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/55.json
@@ -1,80 +1,80 @@
{
-"1": {"idgham":[40,41],"madd":[48,49]},
-"2": {"madd":[17,18],"wasl":[8,9]},
-"3": {"ghunnah":[12,15],"madd":[15,16],"wasl":[7,8]},
-"4": {"madd":[17,18],"wasl":[10,11]},
-"5": {"idgham":[1,2],"madd":[30,31],"wasl":[12,13]},
-"6": {"ghunnah":[4,7],"idgham":[3,4,15,16],"madd":[32,33],"qalqalah":[7,9],"wasl":[2,3,14,15]},
-"7": {"idgham":[3,4],"madd":[9,11,41,42],"wasl":[2,3,33,34]},
-"8": {"madd":[30,31],"qalqalah":[9,11],"silent":[15,17],"wasl":[22,23]},
-"9": {"madd":[61,62],"silent":[10,12,50,52],"wasl":[13,14,25,26,53,54]},
-"10": {"madd":[30,31],"wasl":[2,3]},
-"11": {"ghunnah":[21,24],"idgham":[15,19,20,21],"madd":[9,10,44,45],"wasl":[19,20,35,36]},
-"12": {"idgham":[28,29],"madd":[36,37],"wasl":[2,3,15,16,27,28]},
-"13": {"madd":[15,17,40,41]},
-"14": {"ghunnah":[12,15,21,25,31,35],"madd":[15,16,29,30,43,44],"wasl":[7,8,35,36]},
-"15": {"ghunnah":[16,19],"idgham":[22,27,31,36,36,41],"madd":[41,42],"madd-lazim":[14,16],"wasl":[9,10]},
-"16": {"madd":[15,17,40,41]},
-"17": {"madd":[41,42],"wasl":[6,7,30,31]},
-"18": {"madd":[15,17,40,41]},
-"19": {"madd":[31,32],"wasl":[7,8]},
-"20": {"idgham":[19,24],"madd":[34,35],"qalqalah":[28,30]},
-"21": {"madd":[15,17,40,41]},
-"22": {"idgham":[20,21],"madd":[42,43],"wasl":[19,20,33,34]},
-"23": {"madd":[15,17,40,41]},
-"24": {"ghunnah":[23,26],"madd":[58,59],"wasl":[7,8,18,19,37,38,49,50]},
-"25": {"madd":[15,17,40,41]},
-"26": {"madd":[23,24]},
-"27": {"madd":[37,38,52,53],"qalqalah":[4,6,13,15],"wasl":[30,31,43,44]},
-"28": {"madd":[15,17,40,41]},
-"29": {"ghunnah":[15,19],"idgham":[22,23],"madd":[11,12,28,29,31,32],"wasl":[21,22,37,38]},
-"30": {"madd":[15,17,40,41]},
-"31": {"idgham":[27,28],"madd":[35,36],"wasl":[26,27]},
-"32": {"madd":[15,17,40,41]},
-"33": {"ghunnah":[17,20,28,31,53,57,57,60,110,113,125,128],"idgham":[82,83],"madd":[2,3,88,89,91,92,149,150],"qalqalah":[73,75],"silent":[63,65,116,118],"wasl":[12,13,23,24,37,38,81,82,97,98,109,110]},
-"34": {"madd":[15,17,40,41]},
-"35": {"ghunnah":[49,53,59,62],"idgham":[27,32,32,37,39,43],"madd":[66,67]},
-"36": {"madd":[15,17,40,41]},
-"37": {"ghunnah":[9,12,47,51],"idgham":[19,20,52,53],"madd":[25,27,58,59],"wasl":[8,9,18,19,51,52]},
-"38": {"madd":[15,17,40,41]},
-"39": {"ghunnah":[30,34,35,37,45,48,59,61],"idgham":[11,16,47,51],"madd":[40,42],"madd-lazim":[57,59]},
-"40": {"madd":[15,17,40,41]},
-"41": {"ghunnah":[52,55],"idgham":[51,52],"madd":[31,32,57,58,73,74],"qalqalah":[14,16,69,71],"wasl":[9,10,50,51,64,65]},
-"42": {"madd":[15,17,40,41]},
-"43": {"ghunnah":[13,16],"madd":[2,3,7,8,54,55],"qalqalah":[48,50],"wasl":[19,20,43,44]},
-"44": {"madd":[40,41]},
-"45": {"madd":[15,17,40,41]},
-"46": {"ghunnah":[34,37],"madd":[30,31,39,40]},
-"47": {"madd":[15,17,40,41]},
-"48": {"madd":[7,9,16,17]},
-"49": {"madd":[15,17,40,41]},
-"50": {"madd":[27,28],"qalqalah":[21,23]},
-"51": {"madd":[15,17,40,41]},
-"52": {"ghunnah":[11,15,27,31],"madd":[21,22,35,36]},
-"53": {"madd":[15,17,40,41]},
-"54": {"ghunnah":[26,30,74,77],"idgham":[59,63],"madd":[33,35,86,87],"qalqalah":[54,56],"wasl":[69,70]},
-"55": {"madd":[15,17,40,41]},
-"56": {"ghunnah":[5,8,45,48,51,54,53,57,76,78],"idgham":[21,22],"madd":[11,12,16,17],"madd-lazim":[74,76],"qalqalah":[37,39,57,59],"wasl":[20,21]},
-"57": {"madd":[15,17,40,41]},
-"58": {"ghunnah":[4,7,9,12],"madd":[36,37],"wasl":[13,14,27,28]},
-"59": {"madd":[15,17,40,41]},
-"60": {"madd":[9,11,23,24,43,44],"wasl":[14,15,34,35]},
-"61": {"madd":[15,17,40,41]},
-"62": {"ghunnah":[4,8,19,22],"madd":[24,25]},
-"63": {"madd":[15,17,40,41]},
-"64": {"ghunnah":[8,11],"madd":[13,14],"madd-lazim":[6,8],"qalqalah":[2,4]},
-"65": {"madd":[15,17,40,41]},
-"66": {"madd":[29,30]},
-"67": {"madd":[15,17,40,41]},
-"68": {"ghunnah":[32,35],"idgham":[17,21,26,30],"madd":[11,12,35,36]},
-"69": {"madd":[15,17,40,41]},
-"70": {"ghunnah":[5,8],"madd":[15,16,23,24]},
-"71": {"madd":[15,17,40,41]},
-"72": {"ghunnah":[18,22],"idgham":[4,9],"madd":[16,17,31,32],"qalqalah":[9,11],"wasl":[24,25]},
-"73": {"madd":[15,17,40,41]},
-"74": {"ghunnah":[15,18,21,24,23,27,46,48],"madd-lazim":[44,46],"qalqalah":[7,9,27,29]},
-"75": {"madd":[15,17,40,41]},
-"76": {"idgham":[35,39],"madd":[55,56],"qalqalah":[41,43]},
-"77": {"madd":[15,17,40,41]},
-"78": {"madd":[4,5,35,36,50,51],"wasl":[10,11,28,29,41,42]}
+"1": {"lam_shamsiyyah":[40,41],"madd_246":[48,49]},
+"2": {"madd_246":[17,18],"hamzat_wasl":[8,9]},
+"3": {"ikhfa":[12,15],"madd_246":[15,16],"hamzat_wasl":[7,8]},
+"4": {"madd_246":[17,18],"hamzat_wasl":[10,11]},
+"5": {"lam_shamsiyyah":[1,2],"madd_246":[30,31],"hamzat_wasl":[12,13]},
+"6": {"ghunnah":[4,7],"lam_shamsiyyah":[3,4,15,16],"madd_246":[32,33],"qalqalah":[7,9],"hamzat_wasl":[2,3,14,15]},
+"7": {"lam_shamsiyyah":[3,4],"madd_246":[41,42],"madd_muttasil":[9,11],"hamzat_wasl":[2,3,33,34]},
+"8": {"madd_246":[30,31],"qalqalah":[9,11],"silent":[15,17],"hamzat_wasl":[22,23]},
+"9": {"madd_246":[61,62],"silent":[10,12,50,52],"hamzat_wasl":[13,14,25,26,53,54]},
+"10": {"madd_246":[30,31],"hamzat_wasl":[2,3]},
+"11": {"ghunnah":[21,24],"idghaam_ghunnah":[15,19],"lam_shamsiyyah":[20,21],"madd_2":[9,10],"madd_246":[44,45],"hamzat_wasl":[19,20,35,36]},
+"12": {"lam_shamsiyyah":[28,29],"madd_246":[36,37],"hamzat_wasl":[2,3,15,16,27,28]},
+"13": {"madd_246":[40,41],"madd_muttasil":[15,17]},
+"14": {"ikhfa":[12,15,21,25,31,35],"madd_2":[15,16,29,30],"madd_246":[43,44],"hamzat_wasl":[7,8,35,36]},
+"15": {"ghunnah":[16,19],"idghaam_ghunnah":[22,27,31,36,36,41],"madd_246":[41,42],"madd_6":[14,16],"hamzat_wasl":[9,10]},
+"16": {"madd_246":[40,41],"madd_muttasil":[15,17]},
+"17": {"madd_246":[41,42],"hamzat_wasl":[6,7,30,31]},
+"18": {"madd_246":[40,41],"madd_muttasil":[15,17]},
+"19": {"madd_246":[31,32],"hamzat_wasl":[7,8]},
+"20": {"idghaam_no_ghunnah":[19,24],"madd_246":[34,35],"qalqalah":[28,30]},
+"21": {"madd_246":[40,41],"madd_muttasil":[15,17]},
+"22": {"lam_shamsiyyah":[20,21],"madd_246":[42,43],"hamzat_wasl":[19,20,33,34]},
+"23": {"madd_246":[40,41],"madd_muttasil":[15,17]},
+"24": {"ikhfa":[23,26],"madd_246":[58,59],"hamzat_wasl":[7,8,18,19,37,38,49,50]},
+"25": {"madd_246":[40,41],"madd_muttasil":[15,17]},
+"26": {"madd_246":[23,24]},
+"27": {"madd_2":[37,38],"madd_246":[52,53],"qalqalah":[4,6,13,15],"hamzat_wasl":[30,31,43,44]},
+"28": {"madd_246":[40,41],"madd_muttasil":[15,17]},
+"29": {"ikhfa":[15,19],"lam_shamsiyyah":[22,23],"madd_2":[11,12,28,29,31,32],"hamzat_wasl":[21,22,37,38]},
+"30": {"madd_246":[40,41],"madd_muttasil":[15,17]},
+"31": {"lam_shamsiyyah":[27,28],"madd_246":[35,36],"hamzat_wasl":[26,27]},
+"32": {"madd_246":[40,41],"madd_muttasil":[15,17]},
+"33": {"ghunnah":[17,20],"ikhfa":[28,31,53,57,57,60,110,113,125,128],"lam_shamsiyyah":[82,83],"madd_2":[2,3,88,89,91,92],"madd_246":[149,150],"qalqalah":[73,75],"silent":[63,65,116,118],"hamzat_wasl":[12,13,23,24,37,38,81,82,97,98,109,110]},
+"34": {"madd_246":[40,41],"madd_muttasil":[15,17]},
+"35": {"ikhfa":[49,53,59,62],"idghaam_ghunnah":[27,32,32,37,39,43],"madd_246":[66,67]},
+"36": {"madd_246":[40,41],"madd_muttasil":[15,17]},
+"37": {"ikhfa":[9,12,47,51],"lam_shamsiyyah":[19,20,52,53],"madd_246":[58,59],"madd_muttasil":[25,27],"hamzat_wasl":[8,9,18,19,51,52]},
+"38": {"madd_246":[40,41],"madd_muttasil":[15,17]},
+"39": {"ghunnah":[59,61],"ikhfa":[30,34,45,48],"iqlab":[35,37],"idghaam_ghunnah":[47,51],"idghaam_no_ghunnah":[11,16],"madd_munfasil":[40,42],"madd_6":[57,59]},
+"40": {"madd_246":[40,41],"madd_muttasil":[15,17]},
+"41": {"ghunnah":[52,55],"lam_shamsiyyah":[51,52],"madd_2":[31,32,57,58],"madd_246":[73,74],"qalqalah":[14,16,69,71],"hamzat_wasl":[9,10,50,51,64,65]},
+"42": {"madd_246":[40,41],"madd_muttasil":[15,17]},
+"43": {"ghunnah":[13,16],"madd_2":[2,3,7,8],"madd_246":[54,55],"qalqalah":[48,50],"hamzat_wasl":[19,20,43,44]},
+"44": {"madd_246":[40,41]},
+"45": {"madd_246":[40,41],"madd_muttasil":[15,17]},
+"46": {"ghunnah":[34,37],"madd_2":[30,31],"madd_246":[39,40]},
+"47": {"madd_246":[40,41],"madd_muttasil":[15,17]},
+"48": {"madd_246":[16,17],"madd_munfasil":[7,9]},
+"49": {"madd_246":[40,41],"madd_muttasil":[15,17]},
+"50": {"madd_246":[27,28],"qalqalah":[21,23]},
+"51": {"madd_246":[40,41],"madd_muttasil":[15,17]},
+"52": {"ikhfa":[11,15,27,31],"madd_2":[21,22],"madd_246":[35,36]},
+"53": {"madd_246":[40,41],"madd_muttasil":[15,17]},
+"54": {"ghunnah":[74,77],"iqlab":[26,30],"idghaam_ghunnah":[59,63],"madd_246":[86,87],"madd_muttasil":[33,35],"qalqalah":[54,56],"hamzat_wasl":[69,70]},
+"55": {"madd_246":[40,41],"madd_muttasil":[15,17]},
+"56": {"ghunnah":[5,8,45,48,76,78],"ikhfa":[51,54,53,57],"lam_shamsiyyah":[21,22],"madd_2":[11,12,16,17],"madd_6":[74,76],"qalqalah":[37,39,57,59],"hamzat_wasl":[20,21]},
+"57": {"madd_246":[40,41],"madd_muttasil":[15,17]},
+"58": {"ghunnah":[4,7,9,12],"madd_246":[36,37],"hamzat_wasl":[13,14,27,28]},
+"59": {"madd_246":[40,41],"madd_muttasil":[15,17]},
+"60": {"madd_2":[23,24],"madd_246":[43,44],"madd_muttasil":[9,11],"hamzat_wasl":[14,15,34,35]},
+"61": {"madd_246":[40,41],"madd_muttasil":[15,17]},
+"62": {"ghunnah":[19,22],"ikhfa":[4,8],"madd_246":[24,25]},
+"63": {"madd_246":[40,41],"madd_muttasil":[15,17]},
+"64": {"ghunnah":[8,11],"madd_246":[13,14],"madd_6":[6,8],"qalqalah":[2,4]},
+"65": {"madd_246":[40,41],"madd_muttasil":[15,17]},
+"66": {"madd_246":[29,30]},
+"67": {"madd_246":[40,41],"madd_muttasil":[15,17]},
+"68": {"ghunnah":[32,35],"idghaam_ghunnah":[17,21,26,30],"madd_2":[11,12],"madd_246":[35,36]},
+"69": {"madd_246":[40,41],"madd_muttasil":[15,17]},
+"70": {"ghunnah":[5,8],"madd_2":[15,16],"madd_246":[23,24]},
+"71": {"madd_246":[40,41],"madd_muttasil":[15,17]},
+"72": {"ikhfa":[18,22],"idghaam_ghunnah":[4,9],"madd_2":[16,17],"madd_246":[31,32],"qalqalah":[9,11],"hamzat_wasl":[24,25]},
+"73": {"madd_246":[40,41],"madd_muttasil":[15,17]},
+"74": {"ghunnah":[15,18,46,48],"ikhfa":[21,24,23,27],"madd_6":[44,46],"qalqalah":[7,9,27,29]},
+"75": {"madd_246":[40,41],"madd_muttasil":[15,17]},
+"76": {"idghaam_ghunnah":[35,39],"madd_246":[55,56],"qalqalah":[41,43]},
+"77": {"madd_246":[40,41],"madd_muttasil":[15,17]},
+"78": {"madd_2":[4,5,35,36],"madd_246":[50,51],"hamzat_wasl":[10,11,28,29,41,42]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/56.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/56.json
index 65e69cb..6b22284 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/56.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/56.json
@@ -1,97 +1,97 @@
{
-"1": {"wasl":[54,55]},
+"1": {"hamzat_wasl":[54,55]},
"2": {"qalqalah":[11,13]},
-"3": {"idgham":[8,13]},
-"4": {"wasl":[14,15]},
-"5": {"wasl":[10,11]},
-"6": {"ghunnah":[23,25],"idgham":[17,22],"madd":[14,16]},
-"7": {"ghunnah":[4,7,18,23],"madd":[16,17,25,26]},
-"8": {"madd":[8,9,28,30,37,38],"wasl":[12,13,41,42]},
-"9": {"madd":[8,9,29,31,38,39],"wasl":[12,13,42,43]},
-"10": {"idgham":[3,4,17,18],"madd":[7,8,21,22,26,27],"wasl":[2,3,16,17]},
-"11": {"madd":[6,8,25,26],"silent":[2,4],"wasl":[13,14]},
-"12": {"ghunnah":[6,9,15,18],"idgham":[14,15],"madd":[9,10,20,21],"wasl":[13,14]},
-"13": {"idgham":[6,11],"madd":[24,25],"wasl":[14,15]},
-"14": {"idgham":[8,13],"madd":[26,27],"wasl":[16,17]},
-"15": {"idgham":[12,17]},
-"16": {"madd":[31,32,36,37]},
-"17": {"idgham":[27,32],"madd":[25,26,39,40]},
-"18": {"idgham":[10,14,32,37,37,42],"madd":[44,45]},
-"19": {"ghunnah":[34,37],"madd":[39,40]},
-"20": {"ghunnah":[15,18],"idgham":[10,15],"madd":[4,5,31,32]},
-"21": {"ghunnah":[19,22],"idgham":[14,19],"madd":[32,33]},
-"22": {"madd":[10,11]},
-"23": {"idgham":[13,14],"madd":[8,9,33,34],"wasl":[12,13,24,25]},
-"24": {"ghunnah":[7,11],"madd":[4,6,33,34],"silent":[22,24]},
-"25": {"idgham":[28,33]},
-"26": {"ghunnah":[11,16,20,25],"madd":[18,19,27,28]},
-"27": {"madd":[8,9,25,27,34,35,45,46],"wasl":[12,13,38,39]},
-"28": {"idgham":[9,14],"madd":[18,19],"qalqalah":[6,8,19,20]},
-"29": {"ghunnah":[12,15],"idgham":[7,12],"madd":[15,16],"qalqalah":[16,17]},
-"30": {"idgham":[6,11],"madd":[15,16],"qalqalah":[16,17]},
-"31": {"idgham":[7,12],"madd":[4,6,16,17],"qalqalah":[17,18]},
-"32": {"ghunnah":[10,14],"madd":[4,5]},
-"33": {"idgham":[15,19],"qalqalah":[7,9]},
-"34": {"idgham":[7,12]},
-"35": {"ghunnah":[2,5,10,13,20,23,26,29],"madd":[5,7,17,18,29,31]},
-"36": {"ghunnah":[13,16],"madd":[10,11],"qalqalah":[19,21]},
-"38": {"madd":[9,10,20,21],"wasl":[13,14]},
-"39": {"idgham":[6,11],"madd":[24,25],"wasl":[14,15]},
-"40": {"idgham":[8,13],"madd":[26,27],"wasl":[16,17]},
-"41": {"idgham":[13,14,39,40],"madd":[8,9,25,27,34,35,45,46],"wasl":[12,13,38,39]},
-"42": {"idgham":[10,14],"madd":[18,19]},
-"43": {"idgham":[6,11,11,15],"madd":[19,20]},
-"44": {"idgham":[11,15],"madd":[23,24]},
-"45": {"ghunnah":[2,5],"madd":[28,29,42,43],"qalqalah":[21,23],"silent":[16,18]},
-"46": {"ghunnah":[33,36],"madd":[44,45],"silent":[8,10],"wasl":[28,29,37,38]},
-"47": {"ghunnah":[42,45,71,74],"idgham":[53,58],"madd":[62,63,87,88],"qalqalah":[80,82],"silent":[8,10]},
-"48": {"madd":[9,11,27,28],"wasl":[17,18]},
-"49": {"ghunnah":[7,10],"madd":[37,38],"wasl":[11,12,27,28]},
-"50": {"idgham":[36,41],"madd":[27,28,45,46],"qalqalah":[4,6]},
-"51": {"ghunnah":[2,5,8,11],"idgham":[26,27],"madd":[51,52],"madd-lazim":[30,32],"wasl":[25,26,39,40]},
-"52": {"ghunnah":[15,19,27,31],"idgham":[22,27],"madd":[34,35]},
-"53": {"madd":[29,30],"wasl":[22,23]},
-"54": {"madd":[4,5,34,35],"wasl":[27,28]},
-"55": {"madd":[4,5,25,26],"wasl":[20,21]},
-"56": {"idgham":[26,27],"madd":[2,3,30,31],"wasl":[25,26]},
-"57": {"madd":[15,16,40,41],"qalqalah":[11,13]},
-"58": {"idgham":[12,17],"madd":[25,26]},
-"59": {"ghunnah":[4,7],"madd":[23,25,43,44,48,49],"wasl":[38,39]},
-"60": {"madd":[63,64],"wasl":[29,30]},
-"61": {"ghunnah":[41,44],"idgham":[10,15],"madd":[4,7,29,30,71,72]},
-"62": {"ghunnah":[22,25],"idgham":[21,22],"madd":[62,63],"qalqalah":[6,8],"wasl":[20,21,32,33]},
-"63": {"idgham":[12,17],"madd":[27,28]},
-"64": {"ghunnah":[4,7],"idgham":[39,40],"madd":[23,25,43,44,48,49],"wasl":[38,39]},
-"65": {"ghunnah":[34,39],"madd":[9,11,24,25,32,33,57,58]},
-"66": {"ghunnah":[2,5],"madd":[17,18]},
-"67": {"madd":[21,22]},
-"68": {"madd":[20,22,41,42],"wasl":[15,16,25,26]},
-"69": {"ghunnah":[4,7,12,15,57,60],"madd":[62,63],"wasl":[30,31,52,53]},
-"70": {"ghunnah":[32,37],"madd":[9,11,22,23,53,54]},
-"71": {"ghunnah":[17,20],"idgham":[16,17],"madd":[37,38],"wasl":[15,16,24,25]},
-"72": {"ghunnah":[4,7,12,15,52,55],"madd":[32,34,58,59],"wasl":[47,48]},
-"73": {"idgham":[29,33,39,45],"madd":[15,16,37,38,53,54],"qalqalah":[49,51]},
-"74": {"madd":[33,34],"wasl":[12,13,26,27]},
-"75": {"ghunnah":[30,33],"idgham":[29,30],"madd":[4,6,22,23,35,36],"qalqalah":[9,11],"wasl":[28,29]},
-"76": {"ghunnah":[4,7],"idgham":[18,23],"madd":[9,10,42,43]},
-"77": {"ghunnah":[2,5,19,23],"madd":[7,8,25,26]},
-"78": {"idgham":[10,15],"madd":[8,9,19,20]},
-"79": {"madd":[14,16,36,37],"wasl":[24,25]},
-"80": {"ghunnah":[2,5],"idgham":[7,12,12,17],"madd":[26,27,31,32],"wasl":[21,22]},
-"81": {"ghunnah":[26,29],"idgham":[29,34],"madd":[8,9,40,41],"qalqalah":[34,36],"wasl":[13,14]},
-"82": {"ghunnah":[27,30],"madd":[44,45],"qalqalah":[4,6]},
-"83": {"madd":[8,10,35,36],"wasl":[26,27]},
-"84": {"ghunnah":[4,7,18,22,22,25],"madd":[27,28]},
-"85": {"ghunnah":[29,32],"idgham":[42,47],"madd":[39,40,57,58],"qalqalah":[11,13,51,53]},
-"86": {"ghunnah":[13,17,17,20],"madd":[8,10,37,38]},
-"87": {"ghunnah":[18,22,22,25],"madd":[13,15,30,31,35,36]},
-"88": {"ghunnah":[4,7,12,16],"madd":[7,9,37,38],"wasl":[25,26]},
-"89": {"ghunnah":[25,28],"idgham":[7,11,19,23],"madd":[35,36]},
-"90": {"ghunnah":[4,7,12,16],"madd":[7,9,31,32,42,43],"wasl":[35,36]},
-"91": {"idgham":[8,13],"madd":[6,7,27,28,38,39],"wasl":[31,32]},
-"92": {"ghunnah":[4,7,12,16],"idgham":[42,43],"madd":[7,9,51,52],"madd-lazim":[46,48],"wasl":[25,26,41,42]},
-"93": {"idgham":[7,12],"madd":[19,20]},
-"94": {"madd":[17,18]},
-"95": {"ghunnah":[2,5],"madd":[8,9,33,34],"wasl":[26,27]},
-"96": {"madd":[33,34],"wasl":[12,13,26,27]}
+"3": {"idghaam_no_ghunnah":[8,13]},
+"4": {"hamzat_wasl":[14,15]},
+"5": {"hamzat_wasl":[10,11]},
+"6": {"iqlab":[23,25],"idghaam_ghunnah":[17,22],"madd_muttasil":[14,16]},
+"7": {"ikhfa":[4,7,18,23],"madd_2":[16,17,25,26]},
+"8": {"madd_2":[8,9,37,38],"madd_munfasil":[28,30],"hamzat_wasl":[12,13,41,42]},
+"9": {"madd_2":[8,9,38,39],"madd_munfasil":[29,31],"hamzat_wasl":[12,13,42,43]},
+"10": {"lam_shamsiyyah":[3,4,17,18],"madd_2":[7,8,21,22],"madd_246":[26,27],"hamzat_wasl":[2,3,16,17]},
+"11": {"madd_246":[25,26],"madd_muttasil":[6,8],"silent":[2,4],"hamzat_wasl":[13,14]},
+"12": {"ghunnah":[6,9,15,18],"lam_shamsiyyah":[14,15],"madd_2":[9,10],"madd_246":[20,21],"hamzat_wasl":[13,14]},
+"13": {"idghaam_ghunnah":[6,11],"madd_246":[24,25],"hamzat_wasl":[14,15]},
+"14": {"idghaam_ghunnah":[8,13],"madd_246":[26,27],"hamzat_wasl":[16,17]},
+"15": {"idghaam_ghunnah":[12,17]},
+"16": {"madd_2":[31,32],"madd_246":[36,37]},
+"17": {"idghaam_ghunnah":[27,32],"madd_2":[25,26],"madd_246":[39,40]},
+"18": {"idghaam_ghunnah":[10,14,32,37,37,42],"madd_246":[44,45]},
+"19": {"ikhfa":[34,37],"madd_246":[39,40]},
+"20": {"ghunnah":[15,18],"idghaam_ghunnah":[10,15],"madd_2":[4,5],"madd_246":[31,32]},
+"21": {"ghunnah":[19,22],"idghaam_ghunnah":[14,19],"madd_246":[32,33]},
+"22": {"madd_246":[10,11]},
+"23": {"lam_shamsiyyah":[13,14],"madd_2":[8,9],"madd_246":[33,34],"hamzat_wasl":[12,13,24,25]},
+"24": {"iqlab":[7,11],"madd_246":[33,34],"madd_muttasil":[4,6],"silent":[22,24]},
+"25": {"idghaam_ghunnah":[28,33]},
+"26": {"ikhfa":[11,16,20,25],"madd_2":[18,19,27,28]},
+"27": {"madd_2":[8,9,34,35],"madd_246":[45,46],"madd_munfasil":[25,27],"hamzat_wasl":[12,13,38,39]},
+"28": {"idghaam_ghunnah":[9,14],"madd_246":[18,19],"qalqalah":[6,8,19,20]},
+"29": {"ikhfa":[12,15],"idghaam_ghunnah":[7,12],"madd_246":[15,16],"qalqalah":[16,17]},
+"30": {"idghaam_ghunnah":[6,11],"madd_246":[15,16],"qalqalah":[16,17]},
+"31": {"idghaam_ghunnah":[7,12],"madd_246":[16,17],"madd_muttasil":[4,6],"qalqalah":[17,18]},
+"32": {"ikhfa":[10,14],"madd_2":[4,5]},
+"33": {"idghaam_ghunnah":[15,19],"qalqalah":[7,9]},
+"34": {"idghaam_ghunnah":[7,12]},
+"35": {"ghunnah":[2,5,20,23],"ikhfa":[10,13,26,29],"madd_2":[17,18],"madd_munfasil":[5,7],"madd_muttasil":[29,31]},
+"36": {"ghunnah":[13,16],"madd_2":[10,11],"qalqalah":[19,21]},
+"38": {"madd_2":[9,10],"madd_246":[20,21],"hamzat_wasl":[13,14]},
+"39": {"idghaam_ghunnah":[6,11],"madd_246":[24,25],"hamzat_wasl":[14,15]},
+"40": {"idghaam_ghunnah":[8,13],"madd_246":[26,27],"hamzat_wasl":[16,17]},
+"41": {"lam_shamsiyyah":[13,14,39,40],"madd_2":[8,9,34,35],"madd_246":[45,46],"madd_munfasil":[25,27],"hamzat_wasl":[12,13,38,39]},
+"42": {"idghaam_ghunnah":[10,14],"madd_246":[18,19]},
+"43": {"idghaam_ghunnah":[6,11,11,15],"madd_246":[19,20]},
+"44": {"idghaam_ghunnah":[11,15],"madd_246":[23,24]},
+"45": {"ghunnah":[2,5],"madd_2":[28,29],"madd_246":[42,43],"qalqalah":[21,23],"silent":[16,18]},
+"46": {"ikhfa":[33,36],"madd_246":[44,45],"silent":[8,10],"hamzat_wasl":[28,29,37,38]},
+"47": {"ghunnah":[42,45,71,74],"idghaam_ghunnah":[53,58],"madd_2":[62,63],"madd_246":[87,88],"qalqalah":[80,82],"silent":[8,10]},
+"48": {"madd_246":[27,28],"madd_muttasil":[9,11],"hamzat_wasl":[17,18]},
+"49": {"ghunnah":[7,10],"madd_246":[37,38],"hamzat_wasl":[11,12,27,28]},
+"50": {"idghaam_ghunnah":[36,41],"madd_2":[27,28],"madd_246":[45,46],"qalqalah":[4,6]},
+"51": {"ghunnah":[2,5,8,11],"lam_shamsiyyah":[26,27],"madd_246":[51,52],"madd_6":[30,32],"hamzat_wasl":[25,26,39,40]},
+"52": {"ikhfa":[15,19,27,31],"idghaam_ghunnah":[22,27],"madd_246":[34,35]},
+"53": {"madd_246":[29,30],"hamzat_wasl":[22,23]},
+"54": {"madd_2":[4,5],"madd_246":[34,35],"hamzat_wasl":[27,28]},
+"55": {"madd_2":[4,5],"madd_246":[25,26],"hamzat_wasl":[20,21]},
+"56": {"lam_shamsiyyah":[26,27],"madd_2":[2,3],"madd_246":[30,31],"hamzat_wasl":[25,26]},
+"57": {"madd_2":[15,16],"madd_246":[40,41],"qalqalah":[11,13]},
+"58": {"idghaam_shafawi":[12,17],"madd_246":[25,26]},
+"59": {"ikhfa":[4,7],"madd_2":[43,44],"madd_246":[48,49],"madd_munfasil":[23,25],"hamzat_wasl":[38,39]},
+"60": {"madd_246":[63,64],"hamzat_wasl":[29,30]},
+"61": {"ikhfa":[41,44],"idghaam_ghunnah":[10,15],"madd_2":[29,30],"madd_246":[71,72],"madd_munfasil":[4,7]},
+"62": {"ghunnah":[22,25],"lam_shamsiyyah":[21,22],"madd_246":[62,63],"qalqalah":[6,8],"hamzat_wasl":[20,21,32,33]},
+"63": {"idghaam_shafawi":[12,17],"madd_246":[27,28]},
+"64": {"ikhfa":[4,7],"lam_shamsiyyah":[39,40],"madd_2":[43,44],"madd_246":[48,49],"madd_munfasil":[23,25],"hamzat_wasl":[38,39]},
+"65": {"ikhfa":[34,39],"madd_2":[24,25,32,33],"madd_246":[57,58],"madd_muttasil":[9,11]},
+"66": {"ghunnah":[2,5],"madd_246":[17,18]},
+"67": {"madd_246":[21,22]},
+"68": {"madd_246":[41,42],"madd_muttasil":[20,22],"hamzat_wasl":[15,16,25,26]},
+"69": {"ikhfa":[4,7,12,15,57,60],"madd_246":[62,63],"hamzat_wasl":[30,31,52,53]},
+"70": {"ikhfa":[32,37],"madd_2":[22,23],"madd_246":[53,54],"madd_muttasil":[9,11]},
+"71": {"ghunnah":[17,20],"lam_shamsiyyah":[16,17],"madd_246":[37,38],"hamzat_wasl":[15,16,24,25]},
+"72": {"ikhfa":[4,7,12,15,52,55],"madd_246":[58,59],"madd_munfasil":[32,34],"hamzat_wasl":[47,48]},
+"73": {"idghaam_ghunnah":[29,33],"idghaam_no_ghunnah":[39,45],"madd_2":[15,16,37,38],"madd_246":[53,54],"qalqalah":[49,51]},
+"74": {"madd_246":[33,34],"hamzat_wasl":[12,13,26,27]},
+"75": {"ghunnah":[30,33],"lam_shamsiyyah":[29,30],"madd_2":[22,23],"madd_246":[35,36],"madd_munfasil":[4,6],"qalqalah":[9,11],"hamzat_wasl":[28,29]},
+"76": {"ghunnah":[4,7],"idghaam_no_ghunnah":[18,23],"madd_2":[9,10],"madd_246":[42,43]},
+"77": {"ghunnah":[2,5],"ikhfa":[19,23],"madd_2":[7,8],"madd_246":[25,26]},
+"78": {"idghaam_ghunnah":[10,15],"madd_2":[8,9],"madd_246":[19,20]},
+"79": {"madd_246":[36,37],"madd_munfasil":[14,16],"hamzat_wasl":[24,25]},
+"80": {"ikhfa":[2,5],"idghaam_ghunnah":[7,12],"idghaam_no_ghunnah":[12,17],"madd_2":[26,27],"madd_246":[31,32],"hamzat_wasl":[21,22]},
+"81": {"ikhfa":[26,29],"idghaam_shafawi":[29,34],"madd_2":[8,9],"madd_246":[40,41],"qalqalah":[34,36],"hamzat_wasl":[13,14]},
+"82": {"ghunnah":[27,30],"madd_246":[44,45],"qalqalah":[4,6]},
+"83": {"madd_246":[35,36],"madd_munfasil":[8,10],"hamzat_wasl":[26,27]},
+"84": {"ikhfa":[4,7,18,22,22,25],"madd_246":[27,28]},
+"85": {"ikhfa":[29,32],"idghaam_no_ghunnah":[42,47],"madd_2":[39,40],"madd_246":[57,58],"qalqalah":[11,13,51,53]},
+"86": {"ikhfa":[13,17,17,20],"madd_246":[37,38],"madd_munfasil":[8,10]},
+"87": {"ikhfa":[18,22,22,25],"madd_2":[30,31],"madd_246":[35,36],"madd_munfasil":[13,15]},
+"88": {"ghunnah":[4,7],"ikhfa":[12,16],"madd_246":[37,38],"madd_munfasil":[7,9],"hamzat_wasl":[25,26]},
+"89": {"ghunnah":[25,28],"idghaam_ghunnah":[7,11,19,23],"madd_246":[35,36]},
+"90": {"ghunnah":[4,7],"ikhfa":[12,16],"madd_2":[31,32],"madd_246":[42,43],"madd_munfasil":[7,9],"hamzat_wasl":[35,36]},
+"91": {"idghaam_no_ghunnah":[8,13],"madd_2":[6,7,27,28],"madd_246":[38,39],"hamzat_wasl":[31,32]},
+"92": {"ghunnah":[4,7],"ikhfa":[12,16],"lam_shamsiyyah":[42,43],"madd_246":[51,52],"madd_munfasil":[7,9],"madd_6":[46,48],"hamzat_wasl":[25,26,41,42]},
+"93": {"idghaam_ghunnah":[7,12],"madd_246":[19,20]},
+"94": {"madd_246":[17,18]},
+"95": {"ghunnah":[2,5],"madd_2":[8,9],"madd_246":[33,34],"hamzat_wasl":[26,27]},
+"96": {"madd_246":[33,34],"hamzat_wasl":[12,13,26,27]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/57.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/57.json
index 115b4ef..719de9c 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/57.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/57.json
@@ -1,31 +1,31 @@
{
-"1": {"idgham":[64,65],"madd":[70,71,73,74,114,115],"wasl":[63,64,79,80,96,97,107,108]},
-"2": {"ghunnah":[82,86],"idgham":[14,15],"madd":[4,5,20,21,23,24,45,46,88,89],"wasl":[13,14,29,30]},
-"3": {"idgham":[32,33],"madd":[36,37,81,82],"wasl":[5,6,18,19,31,32,44,45]},
-"4": {"ghunnah":[65,69,69,72,164,167,238,241],"idgham":[21,22,176,177],"madd":[27,28,30,31,182,184,276,277],"wasl":[5,6,20,21,36,37,73,74,89,90,123,124,175,176,246,247]},
-"5": {"idgham":[15,16],"madd":[5,6,21,22,24,25,72,73],"wasl":[14,15,30,31,48,49,65,66]},
-"6": {"ghunnah":[23,26,44,47,79,83],"idgham":[22,23,43,44,91,92],"madd":[97,98],"wasl":[8,9,21,22,42,43,57,58,90,91]},
-"7": {"ghunnah":[38,41,49,52,112,115,122,125,143,147],"idgham":[62,67],"madd":[32,33,149,150],"qalqalah":[140,142],"silent":[8,10,44,46,107,109,128,130],"wasl":[13,14,89,90]},
-"8": {"ghunnah":[119,123,123,126],"idgham":[42,43,126,131],"madd":[109,110,137,138],"qalqalah":[54,56,94,96],"silent":[75,77],"wasl":[31,32,41,42]},
-"9": {"ghunnah":[48,52,104,107,115,118],"idgham":[60,65,75,80,84,85,103,104,142,147],"madd":[38,40,46,47,58,59,92,93,149,150],"qalqalah":[32,34],"wasl":[5,6,83,84,102,103,119,120]},
-"10": {"ghunnah":[22,25,112,115,125,128,133,137,211,214,223,226],"idgham":[71,72,115,120,191,196,251,256],"madd":[66,67,77,78,80,81,156,157,168,170,236,237,313,314],"qalqalah":[137,139],"silent":[28,30,164,166,217,219,242,244],"wasl":[43,44,70,71,86,87,142,143,199,200,261,262,269,270,283,284]},
-"11": {"ghunnah":[3,7,47,52,85,89],"madd":[56,57,63,64,69,70,77,79,91,92],"qalqalah":[19,21,82,84],"wasl":[9,10,26,27]},
-"12": {"ghunnah":[61,65,97,101,124,127,129,133,141,145],"madd":[41,42,92,93,106,107,127,128,162,163,168,169,186,187,214,215],"qalqalah":[133,135],"wasl":[13,14,30,31,112,113,153,154,197,198,207,208]},
-"13": {"ghunnah":[72,75,157,162,177,181,198,202,245,249],"idgham":[95,100,185,190,219,220],"madd":[22,23,40,41,45,46,129,131,192,193,210,211,234,235,241,242,263,264],"qalqalah":[84,86,264,265],"silent":[68,70,122,124,150,152],"wasl":[15,16,33,34,71,72,114,115,140,141,218,219,256,257]},
-"14": {"ghunnah":[61,64,73,76,81,84,188,192],"idgham":[26,31],"madd":[58,59,159,161,207,208],"qalqalah":[114,116],"silent":[44,46],"wasl":[109,110,135,136,171,172,192,193,200,201]},
-"15": {"ghunnah":[27,30,88,91],"idgham":[40,44,87,88],"madd":[80,81,107,108,129,130],"qalqalah":[35,37],"silent":[70,72],"wasl":[2,3,53,54,86,87,122,123]},
-"16": {"ghunnah":[39,43,157,161],"idgham":[224,229],"madd":[32,34,151,152,238,239,243,244],"qalqalah":[161,163],"silent":[34,36,120,122,141,143],"wasl":[71,72,97,98,125,126,144,145,185,186]},
-"17": {"ghunnah":[14,17,70,73],"madd":[7,9,90,91,114,115],"qalqalah":[62,64],"silent":[9,11],"wasl":[18,19,33,34,82,83]},
-"18": {"ghunnah":[2,5,111,115],"idgham":[77,82],"madd":[38,39,84,85,117,118],"qalqalah":[46,48,108,110],"silent":[53,55],"wasl":[6,7,25,26,56,57]},
-"19": {"ghunnah":[97,100],"idgham":[65,66,82,83],"madd":[43,45,52,54,90,92,184,185,189,191,198,200,211,212,222,223],"qalqalah":[120,122],"silent":[20,22,48,50,160,162,173,175,194,196],"wasl":[2,3,25,26,64,65,81,82,143,144,215,216]},
-"20": {"ghunnah":[14,17,80,84,104,108,188,191,219,224,224,227,270,274],"idgham":[34,35,49,53,58,62,68,72,242,247,278,282,291,296,317,321,338,339],"madd":[7,9,29,30,119,120,134,135,184,185,207,208,240,241,315,316,333,334,346,348,360,361,371,372],"silent":[9,11,28,29,332,333],"wasl":[21,22,33,34,110,111,125,126,163,164,251,252,299,300,325,326,337,338,364,365]},
-"21": {"ghunnah":[50,53],"idgham":[28,33,33,38,76,77,188,192],"madd":[7,9,82,84,151,152,155,156,194,196,230,231],"silent":[9,11,128,130],"wasl":[75,76,89,90,133,134,168,169,201,202,213,214,223,224]},
-"22": {"ghunnah":[26,30,55,58,87,91,116,119],"idgham":[15,20,82,87,98,103],"madd":[2,4,50,52,80,81,111,113,122,123,146,147],"qalqalah":[91,93,103,105],"wasl":[32,33,134,135]},
-"23": {"ghunnah":[116,120],"madd":[65,67,74,75,122,123],"silent":[19,21,58,60],"wasl":[82,83]},
-"24": {"ghunnah":[38,41,77,80],"idgham":[37,38,61,65],"madd":[112,113],"qalqalah":[12,14,113,114],"wasl":[36,37,47,48,81,82,94,95,105,106]},
-"25": {"ghunnah":[49,52,104,107,127,130,158,162,183,186,217,220,252,255],"idgham":[103,104,166,170,182,183,213,217],"madd":[41,42,74,75,174,175,224,225,236,237,276,277],"qalqalah":[4,6],"wasl":[31,32,67,68,80,81,102,103,113,114,136,137,203,204,240,241,256,257]},
-"26": {"ghunnah":[77,80],"idgham":[25,30,76,77,109,114,119,123,129,134],"madd":[36,37,97,98,143,144,148,149],"qalqalah":[6,8,32,34],"wasl":[75,76,90,91]},
-"27": {"ghunnah":[2,5,35,39,106,109],"idgham":[166,170,177,181,373,378],"madd":[21,24,30,31,97,98,222,223,252,254,263,264,387,388,392,393],"qalqalah":[72,74,197,199,218,220,246,248,356,358],"silent":[342,344],"wasl":[71,72,101,102,137,138,147,148,196,197,245,246,267,268,324,325]},
-"28": {"ghunnah":[139,144],"idgham":[102,107,192,197],"madd":[2,4,76,77,115,116,156,157,199,200],"qalqalah":[121,123],"silent":[31,33,41,43,62,64],"wasl":[13,14,34,35,44,45,178,179]},
-"29": {"ghunnah":[73,77,94,97],"idgham":[68,73,135,139],"madd":[33,34,141,143,177,178],"qalqalah":[46,48],"wasl":[26,27,82,83,98,99,115,116,148,149,160,161,170,171]}
+"1": {"lam_shamsiyyah":[64,65],"madd_2":[70,71,73,74],"madd_246":[114,115],"hamzat_wasl":[63,64,79,80,96,97,107,108]},
+"2": {"ikhfa":[82,86],"lam_shamsiyyah":[14,15],"madd_2":[4,5,20,21,23,24,45,46],"madd_246":[88,89],"hamzat_wasl":[13,14,29,30]},
+"3": {"lam_shamsiyyah":[32,33],"madd_2":[36,37],"madd_246":[81,82],"hamzat_wasl":[5,6,18,19,31,32,44,45]},
+"4": {"ghunnah":[69,72],"ikhfa":[65,69,164,167,238,241],"lam_shamsiyyah":[21,22,176,177],"madd_2":[27,28,30,31],"madd_246":[276,277],"madd_muttasil":[182,184],"hamzat_wasl":[5,6,20,21,36,37,73,74,89,90,123,124,175,176,246,247]},
+"5": {"lam_shamsiyyah":[15,16],"madd_2":[5,6,21,22,24,25],"madd_246":[72,73],"hamzat_wasl":[14,15,30,31,48,49,65,66]},
+"6": {"ghunnah":[23,26,44,47],"iqlab":[79,83],"lam_shamsiyyah":[22,23,43,44,91,92],"madd_246":[97,98],"hamzat_wasl":[8,9,21,22,42,43,57,58,90,91]},
+"7": {"ghunnah":[49,52],"ikhfa":[38,41,112,115,122,125,143,147],"idghaam_shafawi":[62,67],"madd_2":[32,33],"madd_246":[149,150],"qalqalah":[140,142],"silent":[8,10,44,46,107,109,128,130],"hamzat_wasl":[13,14,89,90]},
+"8": {"ikhfa":[119,123,123,126],"idghaam_shafawi":[126,131],"lam_shamsiyyah":[42,43],"madd_2":[109,110],"madd_246":[137,138],"qalqalah":[54,56,94,96],"silent":[75,77],"hamzat_wasl":[31,32,41,42]},
+"9": {"ghunnah":[104,107,115,118],"iqlab":[48,52],"idghaam_no_ghunnah":[60,65,142,147],"idghaam_shafawi":[75,80],"lam_shamsiyyah":[84,85,103,104],"madd_2":[46,47,58,59,92,93],"madd_246":[149,150],"madd_munfasil":[38,40],"qalqalah":[32,34],"hamzat_wasl":[5,6,83,84,102,103,119,120]},
+"10": {"ikhfa":[22,25,112,115,125,128,133,137,211,214],"iqlab":[223,226],"idghaam_ghunnah":[191,196,251,256],"idghaam_shafawi":[115,120],"lam_shamsiyyah":[71,72],"madd_2":[66,67,77,78,80,81,156,157,236,237],"madd_246":[313,314],"madd_muttasil":[168,170],"qalqalah":[137,139],"silent":[28,30,164,166,217,219,242,244],"hamzat_wasl":[43,44,70,71,86,87,142,143,199,200,261,262,269,270,283,284]},
+"11": {"ikhfa":[3,7,47,52,85,89],"madd_2":[56,57,63,64,69,70],"madd_246":[91,92],"madd_munfasil":[77,79],"qalqalah":[19,21,82,84],"hamzat_wasl":[9,10,26,27]},
+"12": {"ghunnah":[124,127],"ikhfa":[129,133,141,145],"ikhfa_shafawi":[61,65,97,101],"madd_2":[41,42,92,93,106,107,127,128,162,163,168,169,186,187],"madd_246":[214,215],"qalqalah":[133,135],"hamzat_wasl":[13,14,30,31,112,113,153,154,197,198,207,208]},
+"13": {"ikhfa":[72,75,157,162,245,249],"ikhfa_shafawi":[177,181],"iqlab":[198,202],"idghaam_ghunnah":[95,100],"idghaam_no_ghunnah":[185,190],"lam_shamsiyyah":[219,220],"madd_2":[22,23,40,41,45,46,192,193,210,211,234,235,241,242],"madd_246":[263,264],"madd_muttasil":[129,131],"qalqalah":[84,86,264,265],"silent":[68,70,122,124,150,152],"hamzat_wasl":[15,16,33,34,71,72,114,115,140,141,218,219,256,257]},
+"14": {"ghunnah":[61,64],"ikhfa":[73,76,81,84],"ikhfa_shafawi":[188,192],"idghaam_ghunnah":[26,31],"madd_2":[58,59],"madd_246":[207,208],"madd_muttasil":[159,161],"qalqalah":[114,116],"silent":[44,46],"hamzat_wasl":[109,110,135,136,171,172,192,193,200,201]},
+"15": {"ghunnah":[88,91],"ikhfa":[27,30],"idghaam_ghunnah":[40,44],"lam_shamsiyyah":[87,88],"madd_2":[80,81,107,108],"madd_246":[129,130],"qalqalah":[35,37],"silent":[70,72],"hamzat_wasl":[2,3,53,54,86,87,122,123]},
+"16": {"ikhfa":[39,43,157,161],"idghaam_ghunnah":[224,229],"madd_2":[151,152,238,239],"madd_246":[243,244],"madd_munfasil":[32,34],"qalqalah":[161,163],"silent":[34,36,120,122,141,143],"hamzat_wasl":[71,72,97,98,125,126,144,145,185,186]},
+"17": {"ghunnah":[14,17,70,73],"madd_2":[90,91],"madd_246":[114,115],"madd_munfasil":[7,9],"qalqalah":[62,64],"silent":[9,11],"hamzat_wasl":[18,19,33,34,82,83]},
+"18": {"ghunnah":[2,5],"ikhfa":[111,115],"idghaam_ghunnah":[77,82],"madd_2":[38,39,84,85],"madd_246":[117,118],"qalqalah":[46,48,108,110],"silent":[53,55],"hamzat_wasl":[6,7,25,26,56,57]},
+"19": {"ikhfa":[97,100],"lam_shamsiyyah":[65,66,82,83],"madd_2":[184,185,211,212],"madd_246":[222,223],"madd_munfasil":[43,45,189,191],"madd_muttasil":[52,54,90,92,198,200],"qalqalah":[120,122],"silent":[20,22,48,50,160,162,173,175,194,196],"hamzat_wasl":[2,3,25,26,64,65,81,82,143,144,215,216]},
+"20": {"ghunnah":[14,17,188,191,224,227],"ikhfa":[104,108,219,224,270,274],"iqlab":[80,84],"idghaam_ghunnah":[49,53,58,62,68,72,242,247,278,282,291,296,317,321],"lam_shamsiyyah":[34,35,338,339],"madd_2":[29,30,119,120,134,135,184,185,207,208,240,241,315,316,333,334,360,361],"madd_246":[371,372],"madd_munfasil":[7,9,346,348],"silent":[9,11,28,29,332,333],"hamzat_wasl":[21,22,33,34,110,111,125,126,163,164,251,252,299,300,325,326,337,338,364,365]},
+"21": {"ghunnah":[50,53],"idghaam_ghunnah":[28,33,188,192],"idghaam_no_ghunnah":[33,38],"lam_shamsiyyah":[76,77],"madd_2":[151,152,155,156],"madd_246":[230,231],"madd_munfasil":[7,9],"madd_muttasil":[82,84,194,196],"silent":[9,11,128,130],"hamzat_wasl":[75,76,89,90,133,134,168,169,201,202,213,214,223,224]},
+"22": {"ghunnah":[116,119],"ikhfa":[26,30,55,58,87,91],"idghaam_ghunnah":[15,20,82,87,98,103],"madd_2":[80,81,122,123],"madd_246":[146,147],"madd_munfasil":[2,4,50,52,111,113],"qalqalah":[91,93,103,105],"hamzat_wasl":[32,33,134,135]},
+"23": {"ikhfa":[116,120],"madd_2":[74,75],"madd_246":[122,123],"madd_munfasil":[65,67],"silent":[19,21,58,60],"hamzat_wasl":[82,83]},
+"24": {"ghunnah":[38,41,77,80],"idghaam_ghunnah":[61,65],"lam_shamsiyyah":[37,38],"madd_246":[112,113],"qalqalah":[12,14,113,114],"hamzat_wasl":[36,37,47,48,81,82,94,95,105,106]},
+"25": {"ghunnah":[104,107,183,186,252,255],"ikhfa":[49,52,127,130,158,162,217,220],"idghaam_ghunnah":[166,170,213,217],"lam_shamsiyyah":[103,104,182,183],"madd_2":[41,42,74,75,174,175,224,225,236,237],"madd_246":[276,277],"qalqalah":[4,6],"hamzat_wasl":[31,32,67,68,80,81,102,103,113,114,136,137,203,204,240,241,256,257]},
+"26": {"ghunnah":[77,80],"idghaam_ghunnah":[25,30,119,123,129,134],"idghaam_shafawi":[109,114],"lam_shamsiyyah":[76,77],"madd_2":[36,37,97,98,143,144],"madd_246":[148,149],"qalqalah":[6,8,32,34],"hamzat_wasl":[75,76,90,91]},
+"27": {"ghunnah":[2,5],"ikhfa":[106,109],"ikhfa_shafawi":[35,39],"idghaam_ghunnah":[166,170,177,181,373,378],"madd_2":[30,31,97,98,222,223,263,264,387,388],"madd_246":[392,393],"madd_munfasil":[21,24],"madd_muttasil":[252,254],"qalqalah":[72,74,197,199,218,220,246,248,356,358],"silent":[342,344],"hamzat_wasl":[71,72,101,102,137,138,147,148,196,197,245,246,267,268,324,325]},
+"28": {"ikhfa":[139,144],"idghaam_no_ghunnah":[102,107,192,197],"madd_2":[76,77,115,116,156,157],"madd_246":[199,200],"madd_munfasil":[2,4],"qalqalah":[121,123],"silent":[31,33,41,43,62,64],"hamzat_wasl":[13,14,34,35,44,45,178,179]},
+"29": {"ghunnah":[94,97],"ikhfa":[73,77],"idghaam_ghunnah":[68,73,135,139],"madd_2":[33,34],"madd_246":[177,178],"madd_muttasil":[141,143],"qalqalah":[46,48],"hamzat_wasl":[26,27,82,83,98,99,115,116,148,149,160,161,170,171]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/58.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/58.json
index 974834a..f36b812 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/58.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/58.json
@@ -1,24 +1,24 @@
{
-"1": {"ghunnah":[164,167,182,186],"madd":[78,79,110,112,159,161,189,190],"qalqalah":[41,43],"wasl":[51,52,66,67,119,120,129,130,168,169]},
-"2": {"ghunnah":[25,28,55,58,61,64,81,84,129,132,152,155,188,191],"idgham":[28,33,33,38,46,51,156,162,181,186],"madd":[14,15,40,42,66,67,86,87,105,107,214,215],"qalqalah":[116,118],"wasl":[101,102,165,166,192,193]},
-"3": {"ghunnah":[45,48,99,103],"idgham":[27,32,94,99,110,114],"madd":[16,17,34,36,127,128,150,151,184,185],"madd-lazim":[118,120],"qalqalah":[103,105],"silent":[72,74],"wasl":[2,3,154,155]},
-"4": {"ghunnah":[58,62,136,141],"idgham":[4,9,69,73,88,93],"madd":[141,142,182,183,217,218,238,239],"madd-lazim":[77,79],"qalqalah":[16,18,62,64,111,113],"silent":[158,160],"wasl":[163,164,201,202]},
-"5": {"ghunnah":[2,5,85,89,107,110,124,128],"idgham":[136,140,161,166],"madd":[48,49,114,116,122,123,134,135,146,147,168,169],"madd-lazim":[20,22],"qalqalah":[89,91,102,104],"silent":[57,59],"wasl":[6,7,29,30,73,74]},
-"6": {"ghunnah":[34,39,50,54,126,130],"madd":[64,66,76,77,132,133],"qalqalah":[9,11,133,134],"silent":[66,68],"wasl":[20,21,80,81,100,101]},
-"7": {"ghunnah":[14,17,194,198,263,266,278,282,318,321],"idgham":[44,45,91,96],"madd":[50,51,53,54,107,108,180,182,198,199,208,210,310,311,349,350],"qalqalah":[96,98,185,187],"silent":[258,260,293,295],"wasl":[18,19,43,44,67,68,303,304,322,323]},
-"8": {"ghunnah":[43,46,55,58,240,243,308,311],"idgham":[42,43,148,149],"madd":[99,100,130,131,168,170,235,237,344,345],"qalqalah":[46,48,126,128],"silent":[33,35,81,83],"wasl":[18,19,41,42,109,110,121,122,147,148,212,213,271,272,337,338]},
-"9": {"idgham":[116,117,154,155],"madd":[2,4,30,32,45,46,67,68,98,99,132,133,191,193,211,212],"qalqalah":[94,96,158,160],"silent":[32,34,72,74,137,139,174,176],"wasl":[13,14,77,78,89,90,115,116,142,143,153,154,167,168,177,178,185,186]},
-"10": {"ghunnah":[2,5,11,14],"idgham":[10,11,27,28],"madd":[35,36,170,171],"madd-lazim":[84,86],"qalqalah":[14,16],"silent":[68,70],"wasl":[9,10,26,27,50,51,119,120,135,136,159,160]},
-"11": {"ghunnah":[136,139,148,151,197,200],"idgham":[242,246],"madd":[2,4,30,32,78,79,240,241,276,277],"silent":[32,34,64,66,94,96,142,144,154,156,192,194,221,223],"wasl":[13,14,71,72,86,87,106,107,135,136,147,148,166,167,174,175,205,206,224,225,246,247]},
-"12": {"ghunnah":[111,115,173,176],"idgham":[54,55,126,131,151,156,191,196],"madd":[2,4,30,32,43,44,98,99,115,116,198,199],"qalqalah":[93,95,140,142],"silent":[32,34,74,76,166,168],"wasl":[13,14,53,54,177,178]},
-"13": {"ghunnah":[17,21,67,71,218,222],"idgham":[134,135,157,158],"madd":[53,54,65,66,141,142,164,165,200,201,235,236],"qalqalah":[8,10,48,50],"silent":[29,31,90,92,130,132,140,141,153,155,163,164,178,180],"wasl":[101,102,133,134,156,157,181,182,204,205]},
-"14": {"ghunnah":[85,88],"idgham":[71,76,80,85],"madd":[151,152],"silent":[37,39],"wasl":[18,19,55,56,126,127]},
-"15": {"ghunnah":[29,34,43,46],"madd":[53,55,79,80],"silent":[68,70],"wasl":[8,9]},
-"16": {"ghunnah":[29,32,33,37,48,52],"idgham":[81,86],"madd":[8,10,19,20,88,89],"silent":[10,12,43,45],"wasl":[58,59]},
-"17": {"ghunnah":[3,7,105,108],"idgham":[55,60,104,105],"madd":[29,30,41,43,50,51,86,88,99,100,126,127,131,132],"silent":[82,84],"wasl":[63,64,103,104]},
-"18": {"ghunnah":[34,39,98,101,129,132],"madd":[55,56,124,126,147,148,152,153],"qalqalah":[9,11],"wasl":[20,21,142,143]},
-"19": {"ghunnah":[40,43,107,110],"idgham":[24,25,86,87,119,120],"madd":[32,33,44,45,71,73,94,95,102,104,127,128,141,142,146,147],"silent":[67,69],"wasl":[23,24,57,58,85,86,118,119,136,137]},
-"20": {"ghunnah":[2,5],"madd":[48,50,57,59,78,79],"madd-lazim":[20,22],"silent":[53,55],"wasl":[6,7,29,30,68,69]},
-"21": {"ghunnah":[25,28,49,52],"madd":[44,46,73,74],"wasl":[7,8,53,54]},
-"22": {"ghunnah":[260,264,295,298,300,304,312,316,433,436],"idgham":[17,22,268,273],"madd":[110,111,124,126,134,136,154,156,174,175,207,209,245,246,298,299,333,334,339,340,402,404,428,430,468,469],"madd-lazim":[69,71,85,87],"qalqalah":[150,152,282,284,304,306],"silent":[126,128,203,205,386,388,398,400],"wasl":[34,35,44,45,54,55,91,92,237,238,324,325,362,363,416,417,444,445,457,458]}
+"1": {"ghunnah":[164,167],"iqlab":[182,186],"madd_2":[78,79],"madd_246":[189,190],"madd_munfasil":[110,112,159,161],"qalqalah":[41,43],"hamzat_wasl":[51,52,66,67,119,120,129,130,168,169]},
+"2": {"ghunnah":[55,58,61,64,81,84,129,132,188,191],"ikhfa":[25,28,152,155],"idghaam_ghunnah":[33,38,156,162,181,186],"idghaam_shafawi":[28,33,46,51],"madd_2":[14,15,66,67,86,87],"madd_246":[214,215],"madd_muttasil":[40,42,105,107],"qalqalah":[116,118],"hamzat_wasl":[101,102,165,166,192,193]},
+"3": {"ghunnah":[45,48],"ikhfa":[99,103],"idghaam_ghunnah":[27,32,94,99,110,114],"madd_2":[16,17,127,128,150,151],"madd_246":[184,185],"madd_muttasil":[34,36],"madd_6":[118,120],"qalqalah":[103,105],"silent":[72,74],"hamzat_wasl":[2,3,154,155]},
+"4": {"ikhfa":[58,62,136,141],"idghaam_ghunnah":[69,73],"idghaam_no_ghunnah":[4,9,88,93],"madd_2":[141,142,182,183,217,218],"madd_246":[238,239],"madd_6":[77,79],"qalqalah":[16,18,62,64,111,113],"silent":[158,160],"hamzat_wasl":[163,164,201,202]},
+"5": {"ghunnah":[2,5],"ikhfa":[85,89,107,110],"iqlab":[124,128],"idghaam_ghunnah":[136,140,161,166],"madd_2":[48,49,122,123,134,135,146,147],"madd_246":[168,169],"madd_munfasil":[114,116],"madd_6":[20,22],"qalqalah":[89,91,102,104],"silent":[57,59],"hamzat_wasl":[6,7,29,30,73,74]},
+"6": {"ikhfa":[34,39,126,130],"ikhfa_shafawi":[50,54],"madd_2":[76,77],"madd_246":[132,133],"madd_munfasil":[64,66],"qalqalah":[9,11,133,134],"silent":[66,68],"hamzat_wasl":[20,21,80,81,100,101]},
+"7": {"ghunnah":[14,17,263,266,318,321],"ikhfa":[194,198],"ikhfa_shafawi":[278,282],"idghaam_ghunnah":[91,96],"lam_shamsiyyah":[44,45],"madd_2":[50,51,53,54,107,108,198,199,310,311],"madd_246":[349,350],"madd_munfasil":[180,182,208,210],"qalqalah":[96,98,185,187],"silent":[258,260,293,295],"hamzat_wasl":[18,19,43,44,67,68,303,304,322,323]},
+"8": {"ghunnah":[43,46,55,58,308,311],"ikhfa":[240,243],"lam_shamsiyyah":[42,43,148,149],"madd_2":[99,100,130,131],"madd_246":[344,345],"madd_munfasil":[235,237],"madd_muttasil":[168,170],"qalqalah":[46,48,126,128],"silent":[33,35,81,83],"hamzat_wasl":[18,19,41,42,109,110,121,122,147,148,212,213,271,272,337,338]},
+"9": {"lam_shamsiyyah":[116,117,154,155],"madd_2":[45,46,67,68,98,99,132,133],"madd_246":[211,212],"madd_munfasil":[2,4,30,32,191,193],"qalqalah":[94,96,158,160],"silent":[32,34,72,74,137,139,174,176],"hamzat_wasl":[13,14,77,78,89,90,115,116,142,143,153,154,167,168,177,178,185,186]},
+"10": {"ghunnah":[2,5,11,14],"lam_shamsiyyah":[10,11,27,28],"madd_2":[35,36],"madd_246":[170,171],"madd_6":[84,86],"qalqalah":[14,16],"silent":[68,70],"hamzat_wasl":[9,10,26,27,50,51,119,120,135,136,159,160]},
+"11": {"ikhfa":[136,139,148,151,197,200],"idghaam_ghunnah":[242,246],"madd_2":[78,79,240,241],"madd_246":[276,277],"madd_munfasil":[2,4,30,32],"silent":[32,34,64,66,94,96,142,144,154,156,192,194,221,223],"hamzat_wasl":[13,14,71,72,86,87,106,107,135,136,147,148,166,167,174,175,205,206,224,225,246,247]},
+"12": {"ghunnah":[173,176],"ikhfa":[111,115],"idghaam_no_ghunnah":[126,131,151,156,191,196],"lam_shamsiyyah":[54,55],"madd_2":[43,44,98,99,115,116],"madd_246":[198,199],"madd_munfasil":[2,4,30,32],"qalqalah":[93,95,140,142],"silent":[32,34,74,76,166,168],"hamzat_wasl":[13,14,53,54,177,178]},
+"13": {"ikhfa":[17,21,67,71],"iqlab":[218,222],"lam_shamsiyyah":[134,135,157,158],"madd_2":[53,54,65,66,141,142,164,165,200,201],"madd_246":[235,236],"qalqalah":[8,10,48,50],"silent":[29,31,90,92,130,132,140,141,153,155,163,164,178,180],"hamzat_wasl":[101,102,133,134,156,157,181,182,204,205]},
+"14": {"ikhfa":[85,88],"idghaam_shafawi":[71,76,80,85],"madd_246":[151,152],"silent":[37,39],"hamzat_wasl":[18,19,55,56,126,127]},
+"15": {"ghunnah":[43,46],"ikhfa":[29,34],"madd_246":[79,80],"madd_muttasil":[53,55],"silent":[68,70],"hamzat_wasl":[8,9]},
+"16": {"ghunnah":[29,32],"ikhfa":[33,37,48,52],"idghaam_ghunnah":[81,86],"madd_2":[19,20],"madd_246":[88,89],"madd_munfasil":[8,10],"silent":[10,12,43,45],"hamzat_wasl":[58,59]},
+"17": {"ghunnah":[105,108],"ikhfa":[3,7],"idghaam_shafawi":[55,60],"lam_shamsiyyah":[104,105],"madd_2":[29,30,50,51,99,100,126,127],"madd_246":[131,132],"madd_munfasil":[41,43],"madd_muttasil":[86,88],"silent":[82,84],"hamzat_wasl":[63,64,103,104]},
+"18": {"ghunnah":[98,101,129,132],"ikhfa":[34,39],"madd_2":[55,56,147,148],"madd_246":[152,153],"madd_munfasil":[124,126],"qalqalah":[9,11],"hamzat_wasl":[20,21,142,143]},
+"19": {"ghunnah":[107,110],"ikhfa":[40,43],"lam_shamsiyyah":[24,25,86,87,119,120],"madd_2":[32,33,44,45,94,95,127,128,141,142],"madd_246":[146,147],"madd_munfasil":[102,104],"madd_muttasil":[71,73],"silent":[67,69],"hamzat_wasl":[23,24,57,58,85,86,118,119,136,137]},
+"20": {"ghunnah":[2,5],"madd_246":[78,79],"madd_munfasil":[48,50],"madd_muttasil":[57,59],"madd_6":[20,22],"silent":[53,55],"hamzat_wasl":[6,7,29,30,68,69]},
+"21": {"ghunnah":[25,28,49,52],"madd_246":[73,74],"madd_munfasil":[44,46],"hamzat_wasl":[7,8,53,54]},
+"22": {"ghunnah":[295,298,433,436],"ikhfa":[300,304,312,316],"ikhfa_shafawi":[260,264],"idghaam_ghunnah":[17,22,268,273],"madd_2":[110,111,174,175,245,246,298,299,333,334,339,340],"madd_246":[468,469],"madd_munfasil":[124,126,428,430],"madd_muttasil":[134,136,154,156,207,209,402,404],"madd_6":[69,71,85,87],"qalqalah":[150,152,282,284,304,306],"silent":[126,128,203,205,386,388,398,400],"hamzat_wasl":[34,35,44,45,54,55,91,92,237,238,324,325,362,363,416,417,444,445,457,458]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/59.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/59.json
index eae5071..093b1b7 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/59.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/59.json
@@ -1,26 +1,26 @@
{
-"1": {"idgham":[64,65],"madd":[70,71,73,74,122,123],"wasl":[63,64,87,88,104,105,115,116]},
-"2": {"ghunnah":[68,72,110,113,136,139,146,149,301,305],"idgham":[118,122,151,156,177,182,271,272],"madd":[11,13,62,63,74,75,139,141,200,201,359,361,378,379],"qalqalah":[374,376],"silent":[40,42,129,131,141,143,242,244,354,356,363,365],"wasl":[5,6,23,24,55,56,92,93,185,186,206,207,270,271,327,328,344,345,369,370]},
-"3": {"ghunnah":[13,17,118,121],"idgham":[72,73,117,118],"madd":[8,10,48,50,121,122],"wasl":[22,23,41,42,71,72,95,96,116,117]},
-"4": {"ghunnah":[12,15,80,83],"idgham":[56,60],"madd":[2,3,50,51,107,108],"madd-lazim":[22,24,62,64],"qalqalah":[108,109],"silent":[28,30],"wasl":[31,32,68,69,84,85,100,101]},
-"5": {"idgham":[12,17,17,22],"madd":[50,52,63,66,115,116,120,121],"wasl":[89,90,110,111]},
-"6": {"ghunnah":[113,116,193,197],"idgham":[90,94,104,108,154,158],"madd":[4,6,11,13,40,41,55,57,110,111,143,144,160,162,199,200],"wasl":[16,17,117,118,167,168]},
-"7": {"ghunnah":[180,184,208,211,281,284,312,315],"idgham":[77,78,147,148,234,235],"madd":[3,5,10,12,39,40,116,117,131,132,201,203,218,220,227,228,265,266,339,340],"qalqalah":[141,143,340,341],"silent":[287,289,299,301],"wasl":[15,16,53,54,95,96,109,110,124,125,140,141,146,147,190,191,233,234,280,281,292,293,302,303,316,317,332,333]},
-"8": {"ghunnah":[55,59,136,139],"idgham":[102,108,129,134,186,187],"madd":[10,12,22,23,61,62,77,78,127,128,164,166,173,175,190,191,195,196],"qalqalah":[87,89],"silent":[50,52,169,171],"wasl":[15,16,31,32,111,112,145,146,185,186]},
-"9": {"ghunnah":[48,52,139,142,178,181],"idgham":[24,25,134,139,216,220,222,226],"madd":[42,43,142,144,172,175,244,245,254,256,277,278],"qalqalah":[52,54],"silent":[151,153,250,252],"wasl":[2,3,23,24,34,35,266,267]},
-"10": {"ghunnah":[23,26,194,197],"idgham":[156,162,206,211],"madd":[14,16,80,81,118,119,189,191,213,214],"qalqalah":[130,132],"silent":[179,181],"wasl":[2,3,56,57,87,88,110,111]},
-"11": {"ghunnah":[139,142,194,198,212,215,217,220,246,249],"idgham":[187,192],"madd":[58,59,105,106,258,259,263,264],"qalqalah":[122,124],"silent":[36,38,83,85],"wasl":[18,19,66,67,98,99,227,228]},
-"12": {"ghunnah":[50,54,69,72,112,115,131,134,141,144],"idgham":[88,93],"madd":[125,126,146,147],"qalqalah":[121,123],"silent":[16,18,60,62],"wasl":[116,117]},
-"13": {"ghunnah":[4,7,25,29,68,71],"idgham":[40,45,81,86],"madd":[58,59,96,97],"wasl":[48,49]},
-"14": {"ghunnah":[83,87,94,98,113,117,171,174],"idgham":[44,50,67,71,134,139,184,189],"madd":[8,9,73,75,161,162,199,200]},
-"15": {"ghunnah":[21,25,40,45],"madd":[92,93],"qalqalah":[25,27],"silent":[49,51],"wasl":[9,10]},
-"16": {"ghunnah":[39,42,58,61,78,81,95,98,101,104],"idgham":[10,11,90,95],"madd":[18,19,42,43,87,89,104,106,134,135,139,140],"wasl":[9,10,46,47,115,116,129,130]},
-"17": {"ghunnah":[26,29,41,44],"idgham":[40,41,89,90],"madd":[10,11,21,23,50,51,71,72,81,83,93,94,98,99],"silent":[85,87],"wasl":[39,40,88,89]},
-"18": {"ghunnah":[58,61,115,118,133,137],"idgham":[69,74,91,95],"madd":[2,4,150,151],"silent":[31,33,41,43,102,104],"wasl":[13,14,34,35,44,45,95,96,105,106,119,120]},
-"19": {"ghunnah":[49,52,61,64],"madd":[53,54,77,79,94,95,99,100],"silent":[14,16,34,36,73,75],"wasl":[19,20,37,38,89,90]},
-"20": {"ghunnah":[27,30,51,54,72,75],"idgham":[26,27],"madd":[12,14,21,22,42,43,63,64,88,90,94,95],"wasl":[25,26,46,47,67,68,83,84]},
-"21": {"ghunnah":[7,10,148,151],"idgham":[48,53,71,77,85,91,147,148],"madd":[18,19,63,64,67,68,129,130,178,179],"wasl":[23,24,103,104,120,121]},
-"22": {"idgham":[67,68,85,86,98,99],"madd":[23,25,30,31,48,49,73,74,93,94,104,105],"wasl":[5,6,13,14,54,55,66,67,84,85,97,98]},
-"23": {"ghunnah":[163,166],"idgham":[69,70],"madd":[23,25,30,31,75,76,149,150,176,177],"qalqalah":[145,147],"wasl":[5,6,13,14,46,47,56,57,68,69,79,80,91,92,105,106,116,117,128,129,153,154]},
-"24": {"idgham":[104,105],"madd":[18,19,62,64,93,94,110,111,113,114,154,155],"wasl":[5,6,13,14,24,25,35,36,53,54,67,68,103,104,119,120,136,137,147,148]}
+"1": {"lam_shamsiyyah":[64,65],"madd_2":[70,71,73,74],"madd_246":[122,123],"hamzat_wasl":[63,64,87,88,104,105,115,116]},
+"2": {"ghunnah":[136,139,146,149],"ikhfa":[68,72,110,113],"ikhfa_shafawi":[301,305],"idghaam_ghunnah":[118,122],"idghaam_shafawi":[151,156,177,182],"lam_shamsiyyah":[271,272],"madd_2":[62,63,74,75,200,201],"madd_246":[378,379],"madd_munfasil":[11,13,139,141,359,361],"qalqalah":[374,376],"silent":[40,42,129,131,141,143,242,244,354,356,363,365],"hamzat_wasl":[5,6,23,24,55,56,92,93,185,186,206,207,270,271,327,328,344,345,369,370]},
+"3": {"ghunnah":[118,121],"ikhfa":[13,17],"lam_shamsiyyah":[72,73,117,118],"madd_246":[121,122],"madd_munfasil":[8,10],"madd_muttasil":[48,50],"hamzat_wasl":[22,23,41,42,71,72,95,96,116,117]},
+"4": {"ghunnah":[12,15,80,83],"idghaam_ghunnah":[56,60],"madd_2":[2,3,50,51],"madd_246":[107,108],"madd_6":[22,24,62,64],"qalqalah":[108,109],"silent":[28,30],"hamzat_wasl":[31,32,68,69,84,85,100,101]},
+"5": {"idghaam_no_ghunnah":[17,22],"idghaam_shafawi":[12,17],"madd_2":[115,116],"madd_246":[120,121],"madd_munfasil":[63,66],"madd_muttasil":[50,52],"hamzat_wasl":[89,90,110,111]},
+"6": {"ghunnah":[113,116],"ikhfa":[193,197],"idghaam_ghunnah":[90,94,104,108,154,158],"madd_2":[40,41,110,111,143,144],"madd_246":[199,200],"madd_munfasil":[4,6,55,57],"madd_muttasil":[11,13,160,162],"hamzat_wasl":[16,17,117,118,167,168]},
+"7": {"ghunnah":[312,315],"ikhfa":[208,211,281,284],"iqlab":[180,184],"lam_shamsiyyah":[77,78,147,148,234,235],"madd_2":[39,40,116,117,131,132,227,228,265,266],"madd_246":[339,340],"madd_munfasil":[3,5,218,220],"madd_muttasil":[10,12,201,203],"qalqalah":[141,143,340,341],"silent":[287,289,299,301],"hamzat_wasl":[15,16,53,54,95,96,109,110,124,125,140,141,146,147,190,191,233,234,280,281,292,293,302,303,316,317,332,333]},
+"8": {"ikhfa":[55,59,136,139],"idghaam_ghunnah":[102,108,129,134],"lam_shamsiyyah":[186,187],"madd_2":[22,23,61,62,77,78,127,128,190,191],"madd_246":[195,196],"madd_munfasil":[164,166],"madd_muttasil":[10,12,173,175],"qalqalah":[87,89],"silent":[50,52,169,171],"hamzat_wasl":[15,16,31,32,111,112,145,146,185,186]},
+"9": {"ghunnah":[139,142],"ikhfa":[48,52,178,181],"idghaam_ghunnah":[134,139,216,220,222,226],"lam_shamsiyyah":[24,25],"madd_2":[42,43,244,245],"madd_246":[277,278],"madd_munfasil":[142,144,172,175],"madd_muttasil":[254,256],"qalqalah":[52,54],"silent":[151,153,250,252],"hamzat_wasl":[2,3,23,24,34,35,266,267]},
+"10": {"ghunnah":[194,197],"iqlab":[23,26],"idghaam_no_ghunnah":[156,162,206,211],"madd_2":[80,81,118,119],"madd_246":[213,214],"madd_munfasil":[189,191],"madd_muttasil":[14,16],"qalqalah":[130,132],"silent":[179,181],"hamzat_wasl":[2,3,56,57,87,88,110,111]},
+"11": {"ghunnah":[139,142,217,220,246,249],"ikhfa":[194,198,212,215],"idghaam_ghunnah":[187,192],"madd_2":[58,59,105,106,258,259],"madd_246":[263,264],"qalqalah":[122,124],"silent":[36,38,83,85],"hamzat_wasl":[18,19,66,67,98,99,227,228]},
+"12": {"ghunnah":[112,115,131,134],"ikhfa":[50,54,69,72,141,144],"idghaam_ghunnah":[88,93],"madd_2":[125,126],"madd_246":[146,147],"qalqalah":[121,123],"silent":[16,18,60,62],"hamzat_wasl":[116,117]},
+"13": {"ghunnah":[68,71],"ikhfa":[4,7,25,29],"idghaam_no_ghunnah":[81,86],"idghaam_shafawi":[40,45],"madd_2":[58,59],"madd_246":[96,97],"hamzat_wasl":[48,49]},
+"14": {"ghunnah":[171,174],"ikhfa":[113,117],"ikhfa_shafawi":[94,98],"iqlab":[83,87],"idghaam_ghunnah":[44,50,67,71,134,139],"idghaam_no_ghunnah":[184,189],"madd_2":[8,9,161,162],"madd_246":[199,200],"madd_muttasil":[73,75]},
+"15": {"ikhfa":[21,25,40,45],"madd_246":[92,93],"qalqalah":[25,27],"silent":[49,51],"hamzat_wasl":[9,10]},
+"16": {"ghunnah":[58,61,78,81,101,104],"ikhfa":[39,42,95,98],"idghaam_ghunnah":[90,95],"lam_shamsiyyah":[10,11],"madd_2":[18,19,42,43,134,135],"madd_246":[139,140],"madd_munfasil":[104,106],"madd_muttasil":[87,89],"hamzat_wasl":[9,10,46,47,115,116,129,130]},
+"17": {"ghunnah":[26,29,41,44],"lam_shamsiyyah":[40,41,89,90],"madd_2":[10,11,50,51,71,72,93,94],"madd_246":[98,99],"madd_munfasil":[21,23],"madd_muttasil":[81,83],"silent":[85,87],"hamzat_wasl":[39,40,88,89]},
+"18": {"ghunnah":[115,118],"ikhfa":[58,61],"iqlab":[133,137],"idghaam_ghunnah":[69,74,91,95],"madd_246":[150,151],"madd_munfasil":[2,4],"silent":[31,33,41,43,102,104],"hamzat_wasl":[13,14,34,35,44,45,95,96,105,106,119,120]},
+"19": {"ikhfa":[49,52,61,64],"madd_2":[53,54,94,95],"madd_246":[99,100],"madd_muttasil":[77,79],"silent":[14,16,34,36,73,75],"hamzat_wasl":[19,20,37,38,89,90]},
+"20": {"ghunnah":[27,30,51,54,72,75],"lam_shamsiyyah":[26,27],"madd_2":[21,22,42,43,63,64],"madd_246":[94,95],"madd_munfasil":[12,14],"madd_muttasil":[88,90],"hamzat_wasl":[25,26,46,47,67,68,83,84]},
+"21": {"ghunnah":[148,151],"ikhfa":[7,10],"idghaam_ghunnah":[71,77,85,91],"idghaam_no_ghunnah":[48,53],"lam_shamsiyyah":[147,148],"madd_2":[18,19,63,64,67,68,129,130],"madd_246":[178,179],"hamzat_wasl":[23,24,103,104,120,121]},
+"22": {"lam_shamsiyyah":[67,68,85,86,98,99],"madd_2":[30,31,48,49,73,74,93,94],"madd_246":[104,105],"madd_munfasil":[23,25],"hamzat_wasl":[5,6,13,14,54,55,66,67,84,85,97,98]},
+"23": {"ghunnah":[163,166],"lam_shamsiyyah":[69,70],"madd_2":[30,31,75,76,149,150],"madd_246":[176,177],"madd_munfasil":[23,25],"qalqalah":[145,147],"hamzat_wasl":[5,6,13,14,46,47,56,57,68,69,79,80,91,92,105,106,116,117,128,129,153,154]},
+"24": {"lam_shamsiyyah":[104,105],"madd_2":[18,19,93,94,110,111,113,114],"madd_246":[154,155],"madd_muttasil":[62,64],"hamzat_wasl":[5,6,13,14,24,25,35,36,53,54,67,68,103,104,119,120,136,137,147,148]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/6.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/6.json
index 244191d..ae73a7f 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/6.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/6.json
@@ -1,167 +1,167 @@
{
-"1": {"ghunnah":[124,127,133,136],"idgham":[73,74,108,109,123,124],"madd":[79,80,82,83,116,117,177,178],"silent":[154,156],"wasl":[57,58,72,73,88,89,107,108,122,123,137,138]},
-"2": {"ghunnah":[26,30,32,36,36,39,70,73,77,80,86,89,92,95],"idgham":[21,26,53,58,63,68],"madd":[44,47,82,83,106,107],"wasl":[5,6]},
-"3": {"idgham":[20,21],"madd":[26,27,29,30,104,105],"wasl":[7,8,19,20,39,40]},
-"4": {"idgham":[15,20,29,34],"madd":[42,43,88,89],"silent":[69,71]},
-"5": {"ghunnah":[31,34,71,73],"madd":[38,40,74,76,98,99,112,113],"qalqalah":[4,6],"silent":[15,17,78,80,91,93],"wasl":[20,21]},
-"6": {"ghunnah":[35,39,50,54,65,68,197,201,225,229,245,248,257,260],"idgham":[45,50,57,62,104,109,129,130,148,153,159,164],"madd":[68,69,135,137,183,184,222,223,285,286],"qalqalah":[39,41,153,155,189,191],"silent":[13,15],"wasl":[78,79,128,129,174,175]},
-"7": {"ghunnah":[33,38,48,52],"idgham":[130,135],"madd":[31,32,100,102,112,113,115,117,137,138],"silent":[102,104],"wasl":[84,85]},
-"8": {"ghunnah":[22,25,53,56,92,95,102,105],"idgham":[42,46,67,73],"madd":[17,19,107,108],"silent":[8,10],"wasl":[80,81]},
-"9": {"idgham":[24,30,47,52,72,77],"madd":[15,16,38,39,87,88]},
-"10": {"ghunnah":[33,37],"idgham":[28,33,80,85],"madd":[100,101,114,115],"qalqalah":[37,39],"silent":[71,73,93,95],"wasl":[9,10,54,55]},
-"11": {"ghunnah":[30,33,35,38],"madd":[59,60,79,80],"silent":[11,13,41,43],"wasl":[18,19,34,35,67,68]},
-"12": {"ghunnah":[104,107,179,182],"idgham":[9,14,21,22,83,84],"madd":[27,28,30,31,133,134,172,174,208,209],"qalqalah":[98,100],"silent":[174,176],"wasl":[20,21,36,37,82,83,126,127,156,157]},
-"13": {"ghunnah":[36,39],"idgham":[35,36,53,54],"madd":[6,7,70,71],"wasl":[23,24,34,35,52,53,63,64]},
-"14": {"ghunnah":[38,43,113,116,176,179],"idgham":[50,51],"madd":[56,57,59,60,116,118,196,197],"qalqalah":[84,86,99,101],"wasl":[14,15,49,50,65,66,185,186]},
-"15": {"ghunnah":[7,10],"madd":[10,12,61,62]},
-"16": {"ghunnah":[30,34],"idgham":[3,7],"madd":[47,48,53,54,76,77],"qalqalah":[36,38],"wasl":[59,60,69,70]},
-"17": {"ghunnah":[31,35,90,94,117,121],"idgham":[4,8,70,74],"madd":[51,53,123,124],"wasl":[17,18]},
-"18": {"madd":[34,35,61,62],"wasl":[7,8,43,44,54,55]},
-"19": {"ghunnah":[35,39,56,60,122,125,129,133,142,145,155,158,179,182,241,244,273,276,292,295],"idgham":[259,263,267,271,287,292],"madd":[31,32,100,101,135,136,222,224,257,258,263,264,284,286,305,306],"wasl":[42,43,105,106,188,189]},
-"20": {"ghunnah":[107,110],"madd":[19,20,32,33,49,50,75,77,100,102,136,137],"qalqalah":[71,73],"silent":[102,104],"wasl":[25,26,84,85]},
-"21": {"ghunnah":[18,21,87,90],"idgham":[108,109],"madd":[77,78,82,84,92,93,112,113,117,118],"wasl":[24,25,40,41,107,108]},
-"22": {"ghunnah":[28,33,33,36,103,106],"madd":[64,66,82,84,117,118],"silent":[66,68],"wasl":[91,92]},
-"23": {"ghunnah":[2,5,15,19,40,44,76,79],"madd":[35,37,89,90],"silent":[48,50],"wasl":[53,54]},
-"24": {"ghunnah":[1,4,34,37],"idgham":[58,63],"madd":[28,31,82,83],"silent":[21,23,71,73]},
-"25": {"ghunnah":[70,73],"idgham":[8,13,13,17,78,82,117,122,124,128,147,152],"madd":[96,98,177,180,189,191,201,202,236,238,248,249,251,253,259,261,266,267,283,284],"qalqalah":[114,116],"silent":[132,134,163,165,238,240],"wasl":[220,221,273,274]},
-"26": {"ghunnah":[74,77],"idgham":[50,54],"madd":[69,71,98,99]},
-"27": {"ghunnah":[38,41],"idgham":[37,38],"madd":[11,14,58,59,101,102,140,141],"silent":[27,29,53,55],"wasl":[36,37,129,130]},
-"28": {"ghunnah":[43,47,104,107],"idgham":[15,20],"madd":[116,117,121,122],"qalqalah":[47,49],"silent":[28,30,65,67,76,78,90,92]},
-"29": {"idgham":[41,42],"madd":[7,9,75,76],"qalqalah":[68,70],"silent":[9,11],"wasl":[40,41]},
-"30": {"ghunnah":[143,146],"madd":[11,14,64,65,157,158],"silent":[27,29,86,88,121,123],"wasl":[71,72,124,125]},
-"31": {"ghunnah":[98,102],"idgham":[81,82],"madd":[39,41,57,60,69,71,111,112,213,215,228,229],"qalqalah":[2,4,140,142],"silent":[30,32,106,108],"wasl":[12,13,44,45,80,81]},
-"32": {"idgham":[19,20,42,46,51,55,57,58,83,88],"madd":[14,15,27,29,124,125],"silent":[13,14],"wasl":[6,7,18,19,65,66]},
-"33": {"ghunnah":[16,19,59,62,93,96],"idgham":[98,99],"madd":[21,22,90,91,102,103,119,120,139,140],"qalqalah":[2,4,133,135],"wasl":[36,37,97,98,123,124]},
-"34": {"ghunnah":[29,33],"idgham":[24,29,171,176],"madd":[90,93,99,100,139,140,162,164,194,195],"qalqalah":[6,8,33,35,157,159],"silent":[49,51,71,73,82,84,180,182],"wasl":[143,144,183,184]},
-"35": {"ghunnah":[4,8,63,67,81,86,109,114,140,144,217,220],"idgham":[117,118,151,155],"madd":[123,125,162,164,231,232,236,237],"qalqalah":[67,69],"wasl":[49,50,88,89,116,117,167,168,194,195,226,227]},
-"36": {"ghunnah":[2,5,80,83],"madd":[101,102],"qalqalah":[59,61],"wasl":[21,22,45,46,70,71]},
-"37": {"ghunnah":[66,69,123,126],"idgham":[42,47,47,52,96,100,114,118],"madd":[57,58,90,93,120,121,152,153],"silent":[8,10],"wasl":[70,71]},
-"38": {"ghunnah":[8,12,18,22,132,136,139,143,143,146],"idgham":[47,51,97,102],"madd":[42,44,76,78,126,127,172,173],"madd-lazim":[12,14],"qalqalah":[109,111],"wasl":[24,25,119,120]},
-"39": {"ghunnah":[40,43,51,55],"idgham":[42,46,58,59,72,76,104,108,137,142],"madd":[31,32,66,67,135,136,148,149],"qalqalah":[115,117],"silent":[20,22],"wasl":[2,3,57,58,81,82]},
-"40": {"ghunnah":[108,112,112,115],"idgham":[69,70],"madd":[30,31,120,121,125,126],"qalqalah":[98,100],"wasl":[44,45,68,69,88,89]},
-"41": {"ghunnah":[60,64,73,76],"madd":[64,66,93,94],"qalqalah":[16,18,41,43]},
-"42": {"ghunnah":[40,44,64,68],"idgham":[35,40,85,86],"madd":[19,21,26,29,61,62,77,79,92,94,120,121],"qalqalah":[6,8,44,46],"wasl":[68,69,84,85]},
-"43": {"ghunnah":[24,28,56,60],"idgham":[95,96],"madd":[8,10,18,20,53,54,103,104,128,129],"silent":[46,48,117,119],"wasl":[94,95]},
-"44": {"ghunnah":[4,7,135,139,144,148],"idgham":[156,161],"madd":[36,37,65,66,87,90,111,113,119,121,132,133,167,168],"qalqalah":[61,63,161,163],"silent":[14,16,29,31,104,106,121,123]},
-"45": {"madd":[78,79,83,84],"silent":[44,46],"wasl":[17,18,27,28,49,50,73,74]},
-"46": {"ghunnah":[130,134,138,141,175,178],"idgham":[90,95],"madd":[57,58,102,103,169,170,192,193],"qalqalah":[53,55],"wasl":[30,31,113,114,137,138,161,162]},
-"47": {"idgham":[107,108],"madd":[30,31,111,112,116,117],"wasl":[44,45,96,97,106,107]},
-"48": {"ghunnah":[54,57],"madd":[132,133],"wasl":[15,16]},
-"49": {"madd":[31,32,84,85],"silent":[20,22,73,75],"wasl":[2,3,50,51]},
-"50": {"ghunnah":[27,30,101,104],"madd":[7,9,36,38,55,57,81,83,144,147,220,221],"wasl":[43,44,67,68,176,177,190,191]},
-"51": {"ghunnah":[4,7,86,90],"idgham":[38,42,81,86,103,107,117,122],"madd":[48,50,95,96,139,140],"silent":[50,52],"wasl":[15,16]},
-"52": {"ghunnah":[42,46,124,128,167,171,174,178],"idgham":[119,124,131,135,162,167,207,208],"madd":[54,55,90,91,211,212,216,217],"qalqalah":[8,10,27,29,84,86,180,182],"silent":[53,54],"wasl":[15,16,46,47,60,61,206,207]},
-"53": {"ghunnah":[16,19,29,33,72,75,98,101],"idgham":[38,43,92,97,142,143],"madd":[6,7,50,52,59,61,65,67,108,110,146,147,151,152],"silent":[52,54],"wasl":[76,77,120,121,141,142]},
-"54": {"ghunnah":[127,130,148,151,159,164,173,177,177,180,190,193,217,220],"idgham":[114,115,230,235],"madd":[10,12,47,48,65,66,132,133,156,158,169,170,200,201,222,223,237,238],"wasl":[17,18,113,114]},
-"55": {"madd":[6,7,30,31,69,70],"qalqalah":[63,65],"wasl":[22,23,58,59]},
-"56": {"ghunnah":[7,10,56,60],"idgham":[124,129],"madd":[79,81,98,100,131,133,157,158],"qalqalah":[46,48,109,111],"wasl":[34,35,64,65,146,147]},
-"57": {"ghunnah":[7,10,53,57,67,70],"idgham":[27,32,32,37],"madd":[59,60,96,98,165,166,170,171],"qalqalah":[49,51],"wasl":[104,105,137,138,160,161]},
-"58": {"ghunnah":[12,15,18,21],"idgham":[111,112],"madd":[47,48,115,116,120,121],"wasl":[58,59,91,92,110,111]},
-"59": {"ghunnah":[4,7,159,163],"idgham":[117,121,196,200,229,234],"madd":[9,10,45,47,171,172,227,228,236,237],"qalqalah":[193,195],"wasl":[21,22,79,80,90,91,175,176]},
-"60": {"ghunnah":[28,32,64,68,70,73,81,84,128,131,130,135,135,138,163,166,178,182,188,191],"idgham":[69,70,121,126],"madd":[25,26,112,115,202,203],"qalqalah":[87,89,108,110],"wasl":[7,8,32,33,68,69]},
-"61": {"madd":[34,35,72,75,84,86,152,153],"wasl":[7,8,100,101]},
-"62": {"ghunnah":[2,5],"madd":[11,13,37,38,94,95,99,100],"silent":[13,15],"wasl":[22,23,43,44,63,64,89,90]},
-"63": {"ghunnah":[24,28,102,105,134,137],"idgham":[7,11,19,24,78,83,90,95,144,145],"madd":[32,33,68,69,106,107,118,119,123,124,148,149,153,154],"qalqalah":[59,61],"wasl":[36,37,47,48,143,144]},
-"64": {"ghunnah":[38,42,51,55,55,58,61,64],"idgham":[23,28],"madd":[75,76],"wasl":[5,6]},
-"65": {"ghunnah":[65,69,85,89,151,155,168,171],"idgham":[31,35,59,65,130,135],"madd":[25,28,199,200,223,224],"qalqalah":[35,37],"wasl":[10,11,167,168,191,192]},
-"66": {"ghunnah":[61,65],"madd":[14,15,69,70],"wasl":[32,33]},
-"67": {"idgham":[14,19,27,31],"madd":[46,47]},
-"68": {"ghunnah":[120,123,127,130,132,135],"idgham":[139,140,174,175,201,202],"madd":[40,42,48,49,114,115,147,148,205,206,210,211],"qalqalah":[159,161,163,165],"silent":[91,93],"wasl":[17,18,138,139,173,174,190,191,200,201]},
-"69": {"ghunnah":[52,56,68,72],"idgham":[47,52,59,63],"madd":[65,66,98,99],"wasl":[12,13]},
-"70": {"ghunnah":[113,117,129,133,162,166,204,208,347,351],"idgham":[44,49,54,59,84,85,184,188,198,202,226,231,315,320,329,333],"madd":[79,80,108,110,248,250,257,259,373,374],"qalqalah":[117,119,223,225,276,278],"silent":[26,28,78,79,253,255,283,285,299,301,362,364],"wasl":[7,8,17,18,71,72,83,84,170,171,264,265]},
-"71": {"ghunnah":[19,23,45,48,256,259],"idgham":[157,158,209,213],"madd":[85,88,119,120,163,164,198,200,207,208,222,224,325,326,330,331],"qalqalah":[9,11,213,215],"silent":[14,16],"wasl":[27,28,124,125,134,135,142,143,156,157,174,175,231,232,240,241,266,267,279,280,320,321]},
-"72": {"idgham":[19,20],"madd":[26,27,55,57,75,76],"silent":[15,17,25,26],"wasl":[18,19,32,33,49,50]},
-"73": {"ghunnah":[78,82,134,137],"idgham":[23,24,145,146,174,175],"madd":[29,30,32,33,155,156,180,181,211,212],"wasl":[7,8,22,23,38,39,50,51,99,100,115,116,144,145,161,162,173,174,193,194,204,205]},
-"74": {"ghunnah":[79,82],"idgham":[115,120],"madd":[19,20,82,84,90,91,113,114,122,123],"qalqalah":[15,17]},
-"75": {"idgham":[43,44],"madd":[6,7,16,18,25,26,49,50,52,53,95,96],"qalqalah":[21,23],"wasl":[42,43,58,59,85,86]},
-"76": {"ghunnah":[4,7,11,14,46,51,73,76],"madd":[57,58,76,78,94,96,115,116],"wasl":[24,25,105,106]},
-"77": {"ghunnah":[4,7,31,36,58,61,115,118],"idgham":[81,86,135,136],"madd":[42,43,61,63,144,145],"madd-lazim":[139,141],"wasl":[15,16,124,125,134,135]},
-"78": {"ghunnah":[4,7,33,37,76,79,109,112,126,129],"idgham":[16,17,121,126],"madd":[43,44,57,58,60,62,79,81,99,100,118,120,139,140],"wasl":[15,16]},
-"79": {"ghunnah":[2,5],"idgham":[43,44,74,79],"madd":[49,50,52,53,81,83,107,108],"qalqalah":[19,21],"wasl":[42,43,58,59,96,97]},
-"80": {"ghunnah":[42,45],"idgham":[123,127,147,152],"madd":[11,12,21,22,71,72,79,81,110,112,118,120,129,131,204,205],"madd-lazim":[4,6,35,37,40,42],"qalqalah":[63,65],"wasl":[51,52]},
-"81": {"ghunnah":[54,57,72,76,128,133,176,180,180,183],"madd":[19,21,107,108,126,127,194,195],"wasl":[76,77,139,140,164,165]},
-"82": {"ghunnah":[51,55],"idgham":[96,101],"madd":[36,38,46,47,68,70,107,108],"silent":[18,20,38,40,64,66],"wasl":[82,83]},
-"83": {"ghunnah":[102,105],"idgham":[83,88,88,93],"madd":[18,20,30,31,33,35,42,43,64,65,81,82,95,97,126,127],"qalqalah":[38,40]},
-"84": {"ghunnah":[79,83,92,96],"madd":[16,18,25,26,106,107,113,114,127,128,166,167,179,180,204,205],"qalqalah":[6,8,83,85,187,189],"wasl":[193,194]},
-"85": {"idgham":[50,55,59,60],"madd":[63,64,68,69],"wasl":[58,59]},
-"86": {"ghunnah":[52,57],"idgham":[43,48],"madd":[8,9,77,78,82,83],"wasl":[17,18,72,73]},
-"87": {"idgham":[103,108],"madd":[12,14,31,32,47,48,68,69,84,85,101,102,114,115],"qalqalah":[58,60],"wasl":[57,58]},
-"88": {"idgham":[38,42,99,104],"madd":[2,3,34,35,44,46,63,64,123,124],"silent":[81,83,112,114],"wasl":[14,15]},
-"89": {"ghunnah":[65,68],"idgham":[64,65,80,84,139,145],"madd":[6,8,32,33,45,46,99,101,105,107,163,164,168,169],"qalqalah":[114,116],"silent":[2,4,150,152],"wasl":[13,14,38,39,51,52,63,64]},
-"90": {"madd":[6,8,46,47,69,71,135,136,140,141],"qalqalah":[53,55,97,99],"silent":[2,4],"wasl":[13,14,29,30,52,53]},
-"91": {"ghunnah":[62,65,93,97,100,104,114,117,179,182,284,287,326,329],"idgham":[88,93,164,169,172,178,178,179,243,248,257,262],"madd":[38,40,57,59,127,128,141,143,150,151,199,200,277,279,294,296,302,304,362,363],"qalqalah":[32,34,188,190,214,216],"silent":[13,15,52,54,279,281],"wasl":[16,17,68,69,120,121,131,132,316,317]},
-"92": {"ghunnah":[19,22,81,84,89,92],"idgham":[38,43],"madd":[4,5,13,14,26,27,175,176,212,213],"wasl":[51,52,93,94,122,123,146,147]},
-"93": {"ghunnah":[18,21,116,120,128,131,148,151,277,280,333,336,384,387],"idgham":[110,114,183,184],"madd":[143,145,173,176,187,188,206,207,229,231,245,247,270,272,400,401,405,406,419,420],"qalqalah":[299,301],"silent":[247,249,272,274],"wasl":[24,25,40,41,154,155,182,183,210,211,222,223,287,288,316,317,356,357,371,372]},
-"94": {"ghunnah":[181,184,248,251,260,263],"idgham":[66,70,78,83,214,215,251,256],"madd":[26,27,46,47,94,95,104,106,149,151,203,205,274,275],"qalqalah":[6,8,42,44],"silent":[207,209],"wasl":[158,159]},
-"95": {"ghunnah":[2,5,35,38,135,138],"idgham":[34,35],"madd":[115,116,149,150],"wasl":[6,7,22,23,33,34,52,53,66,67,88,89,104,105,123,124]},
-"96": {"ghunnah":[79,84],"idgham":[44,49,50,51],"madd":[84,85,118,119],"qalqalah":[92,94],"wasl":[8,9,30,31,49,50,61,62,100,101,111,112]},
-"97": {"ghunnah":[31,34],"idgham":[30,31,130,134],"madd":[70,71,119,120,140,141],"qalqalah":[97,99],"silent":[51,53],"wasl":[7,8,29,30,74,75,85,86,111,112]},
-"98": {"ghunnah":[18,21,48,52,77,81],"idgham":[25,30,30,35,38,42,62,66,114,118],"madd":[13,15,42,43,103,104,124,125],"qalqalah":[81,83],"wasl":[7,8,95,96]},
-"99": {"ghunnah":[18,21,46,50,87,91,165,168,175,179,195,199,211,214,256,259,297,300,356,359],"idgham":[30,31,115,121,139,145,153,158,164,165,205,209,216,221,232,236,237,238,252,253,272,277,383,388,393,397],"madd":[13,15,36,38,43,45,66,67,214,215,290,291,302,304,322,324,329,331,351,353,366,367,381,382,403,404],"qalqalah":[56,58,97,99],"silent":[304,306],"wasl":[7,8,29,30,163,164,236,237,251,252,296,297]},
-"100": {"ghunnah":[36,39,87,91,104,108,133,136],"madd":[26,28,69,70,85,86,112,113,117,118,125,126,144,145],"qalqalah":[108,110],"silent":[9,11,62,64],"wasl":[31,32]},
-"101": {"ghunnah":[36,39],"idgham":[9,10,61,65,74,79,91,95,113,117],"madd":[15,16,18,19,54,55,81,82,85,86,141,142],"wasl":[8,9,24,25]},
-"102": {"ghunnah":[72,76],"idgham":[112,116],"madd":[2,3,30,32,37,38,55,56,118,119],"wasl":[10,11,76,77]},
-"103": {"idgham":[66,67],"madd":[25,26,54,55,83,84],"qalqalah":[7,9,21,23,38,40,50,52],"wasl":[16,17,45,46,65,66,76,77]},
-"104": {"ghunnah":[13,17,119,123],"idgham":[28,33],"madd":[7,9,19,21,69,70,101,103,127,128],"qalqalah":[2,4,50,52]},
-"105": {"idgham":[82,86],"madd":[6,7,30,31,73,74,92,93],"silent":[46,48],"wasl":[22,23]},
-"106": {"idgham":[33,38],"madd":[11,13,46,48,53,54,96,97],"wasl":[85,86]},
-"107": {"ghunnah":[86,89,98,102],"idgham":[74,79],"madd":[9,11,24,26,53,54,81,83,106,107],"silent":[36,38],"wasl":[14,15]},
-"108": {"ghunnah":[39,43,81,86,99,103,116,119,131,134,150,153,197,201],"idgham":[168,173],"madd":[105,106,222,223],"qalqalah":[29,31,78,80],"silent":[14,16,65,67,211,213],"wasl":[17,18,47,48,68,69]},
-"109": {"ghunnah":[49,53,83,86,100,103,121,124,154,157],"idgham":[70,75],"madd":[37,38,53,55,115,116,159,161,170,172,189,190],"qalqalah":[4,6],"silent":[11,13],"wasl":[16,17,107,108,125,126]},
-"110": {"idgham":[88,92],"madd":[36,37,71,73,113,114,129,130],"qalqalah":[32,34],"silent":[64,66]},
-"111": {"ghunnah":[9,12,115,119,190,193],"idgham":[122,128,164,168],"madd":[25,27,46,48,149,151,159,161,170,172,187,188,215,216],"qalqalah":[209,211],"silent":[136,138,151,153],"wasl":[39,40,69,70,175,176]},
-"112": {"ghunnah":[44,49,63,66,74,77,108,112],"idgham":[135,140],"madd":[6,7,51,52,147,149,199,200],"wasl":[58,59,69,70,119,120]},
-"113": {"idgham":[115,120],"madd":[10,13,128,129],"qalqalah":[97,99,120,122],"silent":[106,108],"wasl":[35,36,63,64]},
-"114": {"ghunnah":[55,58,146,149,201,204],"idgham":[34,39,91,96,161,166,166,171],"madd":[50,52,79,80,115,116,128,129,151,152,221,222],"qalqalah":[21,23],"wasl":[11,12,44,45,72,73,96,97,121,122,179,180,210,211]},
-"115": {"ghunnah":[4,7],"idgham":[32,37,42,48,83,84],"madd":[68,69,73,74,100,101],"qalqalah":[29,31,39,41],"wasl":[82,83,93,94]},
-"116": {"ghunnah":[4,8,24,28,53,57,100,103],"idgham":[73,77,96,97],"madd":[131,132],"wasl":[30,31,63,64,95,96]},
-"117": {"ghunnah":[2,5,42,46],"idgham":[30,34],"madd":[53,54,84,85],"wasl":[73,74]},
-"118": {"ghunnah":[12,15,49,53,53,56,56,60],"madd":[66,67,71,72,81,82],"silent":[7,9],"wasl":[24,25,30,31]},
-"119": {"ghunnah":[34,37,152,155,193,197,213,216],"idgham":[88,93,162,168],"madd":[187,189,252,253],"qalqalah":[73,75],"silent":[29,31],"wasl":[46,47,52,53,125,126,241,242]},
-"120": {"ghunnah":[44,47],"madd":[12,13,39,41,118,119],"qalqalah":[84,86,110,112],"silent":[7,9,105,107],"wasl":[18,19,48,49,70,71]},
-"121": {"ghunnah":[20,23,66,69,86,89,182,185],"idgham":[80,84,91,92],"madd":[71,72,97,98,119,122,131,133,146,147,200,201],"silent":[15,17],"wasl":[39,40,45,46,90,91]},
-"122": {"ghunnah":[6,10,19,24,83,86],"idgham":[60,65,82,83,94,99,112,113,139,144],"madd":[34,35,54,55,75,76,105,106,120,121,154,155,174,175,204,205],"silent":[193,195],"wasl":[81,82,111,112]},
-"123": {"ghunnah":[114,117],"madd":[6,7,45,46,138,139],"qalqalah":[53,55],"silent":[75,77]},
-"124": {"ghunnah":[27,31,192,195,212,216,220,224],"idgham":[40,45],"madd":[10,12,78,80,148,149,246,247],"qalqalah":[130,132,172,174],"silent":[35,37,179,181,235,237],"wasl":[96,97,104,105,160,161,196,197]},
-"125": {"ghunnah":[131,136,138,141],"idgham":[4,8,23,27,74,78,85,89,161,162,200,201],"madd":[35,36,54,55,66,67,96,97,115,116,167,169,176,177,237,238],"qalqalah":[48,50,80,82,100,102,109,111,184,186,204,206],"wasl":[13,14,160,161,191,192,199,200,215,216]},
-"126": {"ghunnah":[35,40],"idgham":[73,77],"madd":[4,5,13,14,62,63,85,86],"qalqalah":[40,42],"wasl":[54,55]},
-"127": {"ghunnah":[26,29,56,60],"idgham":[14,15],"madd":[20,21,81,82],"silent":[70,72],"wasl":[13,14]},
-"128": {"ghunnah":[48,51,83,86,122,125,222,225,289,292],"idgham":[28,33,70,75,109,114,164,168,221,222],"madd":[33,34,103,105,176,178,195,197,236,237,244,245,258,260,274,276,313,314],"wasl":[43,44,57,58,78,79,117,118,135,136,189,190,220,221,279,280]},
-"129": {"ghunnah":[47,52],"idgham":[29,30],"madd":[6,7,33,34,74,75],"silent":[63,65],"wasl":[28,29]},
-"130": {"ghunnah":[17,20,28,31,60,63,102,105,171,174,239,242,251,254],"idgham":[55,60,207,208],"madd":[2,3,93,94,119,121,137,138,165,168,202,203,233,236,270,271,275,276],"qalqalah":[155,157],"silent":[148,150,201,202,226,228,265,267],"wasl":[12,13,23,24,194,195,206,207]},
-"131": {"idgham":[10,15,22,27,59,63],"madd":[2,3,75,76,80,81],"wasl":[42,43]},
-"132": {"ghunnah":[8,12,23,26,64,67],"idgham":[18,23],"madd":[16,17,56,57,77,78],"silent":[35,37]},
-"133": {"ghunnah":[79,82,114,117,126,130],"idgham":[26,27,39,43,89,94,121,126],"madd":[100,102,109,111,153,154],"qalqalah":[54,56],"wasl":[10,11,25,26]},
-"134": {"ghunnah":[2,5,38,41,41,45],"idgham":[27,31],"madd":[33,35,53,54]},
-"135": {"ghunnah":[49,52,60,64,85,89,122,125],"idgham":[112,113,143,144],"madd":[7,8,99,100,103,104,127,128,147,148,152,153],"silent":[23,25],"wasl":[15,16,111,112,142,143]},
-"136": {"ghunnah":[22,25,70,75],"madd":[60,61,86,87,116,117,129,131,157,159,240,242,251,253,268,269],"silent":[9,11,81,83],"wasl":[39,40,51,52,185,186]},
-"137": {"idgham":[28,33],"madd":[6,7,64,65,78,80,147,149,199,200],"silent":[114,116],"wasl":[36,37,152,153]},
-"138": {"ghunnah":[217,221],"idgham":[29,33,45,50,74,79,142,147],"madd":[13,14,18,20,27,28,62,64,81,83,107,108,140,141,192,194,242,243],"qalqalah":[42,44,54,56,210,212],"silent":[8,10,231,233],"wasl":[161,162,167,168,185,186]},
-"139": {"ghunnah":[125,129,178,181],"idgham":[56,61,109,113,115,120],"madd":[29,30,44,45,88,91,98,99,146,148,183,184,197,198],"qalqalah":[155,157],"silent":[8,10],"wasl":[35,36]},
-"140": {"ghunnah":[52,57],"idgham":[70,74],"madd":[28,30,39,40,115,117,171,172],"qalqalah":[2,4,136,138],"silent":[30,32,82,84,145,147,160,162],"wasl":[12,13,100,101,108,109,126,127]},
-"141": {"ghunnah":[18,21,26,29,73,76,137,140,176,180,188,192,276,279],"idgham":[31,36,45,49,67,71,72,73,84,85,118,119,133,134,154,159],"madd":[13,15,29,30,43,44,65,66,113,114,150,151,172,173,198,200,205,207,235,236,253,254,269,271,281,282,306,307],"silent":[183,185,225,227,271,273],"wasl":[7,8,71,72,83,84,117,118,132,133,295,296]},
-"142": {"ghunnah":[37,42,50,53,118,121],"idgham":[28,32,104,105,138,143],"madd":[16,17,99,100,112,113,123,124,145,146],"silent":[45,47,90,92],"wasl":[7,8,66,67,103,104]},
-"143": {"ghunnah":[115,118,127,130,168,171,202,206,206,209],"idgham":[20,25,29,30,84,85],"madd":[4,5,18,19,214,215,219,220],"madd-lazim":[82,84],"wasl":[28,29,38,39,55,56,65,66,110,111,132,133,163,164]},
-"144": {"ghunnah":[94,97,106,109,147,150,164,167,233,236,284,287,309,312],"idgham":[63,64,268,274,283,284,344,345],"madd":[176,178,192,193,210,211,348,349,353,354],"madd-lazim":[61,63],"wasl":[7,8,17,18,34,35,44,45,89,90,111,112,142,143,198,199,239,240,255,256,282,283,313,314,333,334,343,344]},
-"145": {"ghunnah":[147,150,152,156,158,161,255,259,261,264],"idgham":[66,70,91,95,118,124,243,247,279,284],"madd":[7,9,23,25,78,80,86,88,163,164,214,215,286,287],"qalqalah":[70,72,167,169],"wasl":[202,203,223,224]},
-"146": {"ghunnah":[198,202,219,223,238,241],"idgham":[53,57],"madd":[117,119,151,153,169,171,202,203,216,217,247,248,252,253],"silent":[24,26],"wasl":[8,9,62,63,74,75,159,160,181,182]},
-"147": {"ghunnah":[4,8],"idgham":[21,22,45,49,55,59],"madd":[49,50,79,80,107,108],"qalqalah":[101,103],"wasl":[86,87,96,97]},
-"148": {"ghunnah":[108,112,115,119,147,151,199,202,217,221,242,246,269,272,282,285],"idgham":[204,209,265,266],"madd":[39,41,54,56,73,75,81,83,121,122,237,239,303,304],"qalqalah":[151,153],"silent":[29,31,174,176],"wasl":[10,11,44,45,135,136,264,265]},
-"149": {"madd":[31,32,48,50,60,61,74,75],"qalqalah":[68,70],"wasl":[15,16,26,27]},
-"150": {"ghunnah":[9,12,52,55,83,87,229,233],"madd":[19,21,74,75,141,143,175,176,251,252],"qalqalah":[107,109],"silent":[92,94,164,166],"wasl":[28,29,56,57,146,147,184,185,212,213]},
-"151": {"ghunnah":[286,289,355,359],"idgham":[88,93,118,123,151,156,167,172,285,286],"madd":[80,81,100,101,116,117,135,137,146,147,165,166,228,229,338,339,352,353,361,362,383,384],"qalqalah":[129,131,211,213,274,276],"silent":[14,16,73,75,137,139,218,220,281,283],"wasl":[95,96,221,222,284,285,294,295,310,311,327,328]},
-"152": {"ghunnah":[285,289],"madd":[92,93,268,269,282,283,291,292,314,315],"qalqalah":[8,10,76,78],"silent":[15,17,103,105,208,210,263,265],"wasl":[24,25,44,45,106,107,118,119,132,133,200,201,248,249]},
-"153": {"ghunnah":[4,7,34,39,101,105,133,137],"idgham":[71,72],"madd":[10,11,19,20,112,113,116,117,130,131,139,140,160,161],"silent":[67,69],"wasl":[39,40,70,71]},
-"154": {"ghunnah":[2,5,126,130],"idgham":[78,84,95,99,102,107,114,119],"madd":[31,32,56,58,134,136,157,158],"wasl":[24,25,50,51]},
-"155": {"ghunnah":[19,22,38,42],"madd":[4,5,13,14,26,27,86,87],"silent":[63,65],"wasl":[42,43,56,57]},
-"156": {"ghunnah":[2,6,18,21,28,31,69,73,85,89,89,92,96,100],"madd":[11,13,23,25,41,42,54,56,116,117,121,122],"qalqalah":[73,75],"silent":[13,15],"wasl":[34,35]},
-"157": {"ghunnah":[23,26,31,34,62,65,101,105,146,150,166,169,169,173],"idgham":[111,116,116,121,134,139],"madd":[26,28,54,55,65,67,95,97,187,188,258,259,267,269,306,307],"qalqalah":[90,92,220,222],"silent":[13,15,295,297],"wasl":[47,48,191,192,226,227,272,273]},
-"158": {"ghunnah":[7,10,26,30,162,165,212,216,257,262,266,269,280,283,287,290],"madd":[21,23,48,50,105,106,144,145,181,182,237,239,245,246,273,275,294,295],"qalqalah":[216,218],"silent":[275,277],"wasl":[41,42,265,266]},
-"159": {"ghunnah":[2,5,86,89,121,124,136,140],"idgham":[53,59],"madd":[91,93,161,162],"silent":[24,26,45,47,150,152],"wasl":[6,7,111,112]},
-"160": {"ghunnah":[2,6,57,61],"idgham":[69,70],"madd":[6,8,31,32,61,63,93,96,133,134],"qalqalah":[89,91],"wasl":[13,14,68,69]},
-"161": {"ghunnah":[7,10,58,62,64,69],"idgham":[45,50,72,78,103,108],"madd":[19,20,29,31,43,44,90,91,134,135],"qalqalah":[86,88],"wasl":[123,124]},
-"162": {"ghunnah":[7,10],"madd":[72,73,77,78],"wasl":[67,68]},
-"163": {"madd":[16,17,24,25,67,68],"wasl":[56,57]},
-"164": {"ghunnah":[149,152,196,200,206,209],"idgham":[34,39,61,65,129,133,167,172],"madd":[228,229],"qalqalah":[24,26],"wasl":[14,15]},
-"165": {"ghunnah":[79,83,130,133,165,168],"idgham":[89,94,180,185],"madd":[30,32,87,88,113,115,122,123,170,171,187,188],"qalqalah":[96,98],"wasl":[7,8,37,38,150,151]}
+"1": {"ghunnah":[124,127,133,136],"lam_shamsiyyah":[73,74,108,109,123,124],"madd_2":[79,80,82,83,116,117],"madd_246":[177,178],"silent":[154,156],"hamzat_wasl":[57,58,72,73,88,89,107,108,122,123,137,138]},
+"2": {"ghunnah":[36,39,70,73,86,89],"ikhfa":[26,30,32,36,77,80,92,95],"idghaam_ghunnah":[53,58,63,68],"idghaam_shafawi":[21,26],"madd_2":[82,83],"madd_246":[106,107],"madd_munfasil":[44,47],"hamzat_wasl":[5,6]},
+"3": {"lam_shamsiyyah":[20,21],"madd_2":[26,27,29,30],"madd_246":[104,105],"hamzat_wasl":[7,8,19,20,39,40]},
+"4": {"idghaam_ghunnah":[29,34],"idghaam_shafawi":[15,20],"madd_2":[42,43],"madd_246":[88,89],"silent":[69,71]},
+"5": {"ghunnah":[31,34],"iqlab":[71,73],"madd_2":[98,99],"madd_246":[112,113],"madd_muttasil":[38,40,74,76],"qalqalah":[4,6],"silent":[15,17,78,80,91,93],"hamzat_wasl":[20,21]},
+"6": {"ghunnah":[65,68],"ikhfa":[35,39,50,54,197,201,245,248],"ikhfa_shafawi":[225,229],"iqlab":[257,260],"idghaam_ghunnah":[57,62,159,164],"idghaam_no_ghunnah":[104,109],"idghaam_shafawi":[45,50,148,153],"lam_shamsiyyah":[129,130],"madd_2":[68,69,183,184,222,223],"madd_246":[285,286],"madd_muttasil":[135,137],"qalqalah":[39,41,153,155,189,191],"silent":[13,15],"hamzat_wasl":[78,79,128,129,174,175]},
+"7": {"ikhfa":[33,38,48,52],"idghaam_ghunnah":[130,135],"madd_2":[31,32,112,113],"madd_246":[137,138],"madd_munfasil":[100,102,115,117],"silent":[102,104],"hamzat_wasl":[84,85]},
+"8": {"ghunnah":[92,95],"ikhfa":[22,25,53,56,102,105],"idghaam_ghunnah":[42,46],"idghaam_no_ghunnah":[67,73],"madd_246":[107,108],"madd_munfasil":[17,19],"silent":[8,10],"hamzat_wasl":[80,81]},
+"9": {"idghaam_ghunnah":[47,52],"idghaam_no_ghunnah":[24,30],"idghaam_shafawi":[72,77],"madd_2":[15,16,38,39],"madd_246":[87,88]},
+"10": {"ikhfa":[33,37],"idghaam_ghunnah":[28,33],"idghaam_shafawi":[80,85],"madd_2":[100,101],"madd_246":[114,115],"qalqalah":[37,39],"silent":[71,73,93,95],"hamzat_wasl":[9,10,54,55]},
+"11": {"ghunnah":[30,33],"ikhfa":[35,38],"madd_2":[59,60],"madd_246":[79,80],"silent":[11,13,41,43],"hamzat_wasl":[18,19,34,35,67,68]},
+"12": {"ghunnah":[104,107],"ikhfa":[179,182],"idghaam_ghunnah":[9,14],"lam_shamsiyyah":[21,22,83,84],"madd_2":[27,28,30,31,133,134],"madd_246":[208,209],"madd_munfasil":[172,174],"qalqalah":[98,100],"silent":[174,176],"hamzat_wasl":[20,21,36,37,82,83,126,127,156,157]},
+"13": {"ghunnah":[36,39],"lam_shamsiyyah":[35,36,53,54],"madd_2":[6,7],"madd_246":[70,71],"hamzat_wasl":[23,24,34,35,52,53,63,64]},
+"14": {"ghunnah":[113,116,176,179],"ikhfa":[38,43],"lam_shamsiyyah":[50,51],"madd_2":[56,57,59,60],"madd_246":[196,197],"madd_munfasil":[116,118],"qalqalah":[84,86,99,101],"hamzat_wasl":[14,15,49,50,65,66,185,186]},
+"15": {"ghunnah":[7,10],"madd_246":[61,62],"madd_munfasil":[10,12]},
+"16": {"ikhfa":[30,34],"idghaam_ghunnah":[3,7],"madd_2":[47,48,53,54],"madd_246":[76,77],"qalqalah":[36,38],"hamzat_wasl":[59,60,69,70]},
+"17": {"ikhfa":[31,35,90,94,117,121],"idghaam_ghunnah":[4,8,70,74],"madd_246":[123,124],"madd_munfasil":[51,53],"hamzat_wasl":[17,18]},
+"18": {"madd_2":[34,35],"madd_246":[61,62],"hamzat_wasl":[7,8,43,44,54,55]},
+"19": {"ghunnah":[155,158,179,182,241,244,273,276,292,295],"ikhfa":[35,39,122,125],"ikhfa_shafawi":[129,133],"iqlab":[56,60,142,145],"idghaam_ghunnah":[259,263,267,271,287,292],"madd_2":[31,32,100,101,135,136,257,258,263,264],"madd_246":[305,306],"madd_munfasil":[222,224],"madd_muttasil":[284,286],"hamzat_wasl":[42,43,105,106,188,189]},
+"20": {"ikhfa":[107,110],"madd_2":[19,20,32,33,49,50],"madd_246":[136,137],"madd_munfasil":[100,102],"madd_muttasil":[75,77],"qalqalah":[71,73],"silent":[102,104],"hamzat_wasl":[25,26,84,85]},
+"21": {"ghunnah":[18,21,87,90],"lam_shamsiyyah":[108,109],"madd_2":[77,78,92,93,112,113],"madd_246":[117,118],"madd_munfasil":[82,84],"hamzat_wasl":[24,25,40,41,107,108]},
+"22": {"ghunnah":[33,36],"ikhfa":[28,33,103,106],"madd_246":[117,118],"madd_munfasil":[64,66],"madd_muttasil":[82,84],"silent":[66,68],"hamzat_wasl":[91,92]},
+"23": {"ghunnah":[2,5,76,79],"ikhfa":[15,19,40,44],"madd_246":[89,90],"madd_munfasil":[35,37],"silent":[48,50],"hamzat_wasl":[53,54]},
+"24": {"ikhfa":[1,4,34,37],"idghaam_shafawi":[58,63],"madd_246":[82,83],"madd_munfasil":[28,31],"silent":[21,23,71,73]},
+"25": {"ghunnah":[70,73],"idghaam_ghunnah":[13,17,78,82,117,122,124,128],"idghaam_no_ghunnah":[147,152],"idghaam_shafawi":[8,13],"madd_2":[201,202,248,249,266,267],"madd_246":[283,284],"madd_munfasil":[96,98,177,180,236,238,251,253,259,261],"madd_muttasil":[189,191],"qalqalah":[114,116],"silent":[132,134,163,165,238,240],"hamzat_wasl":[220,221,273,274]},
+"26": {"ikhfa":[74,77],"idghaam_ghunnah":[50,54],"madd_246":[98,99],"madd_munfasil":[69,71]},
+"27": {"ghunnah":[38,41],"lam_shamsiyyah":[37,38],"madd_2":[58,59,101,102],"madd_246":[140,141],"madd_munfasil":[11,14],"silent":[27,29,53,55],"hamzat_wasl":[36,37,129,130]},
+"28": {"ghunnah":[104,107],"ikhfa":[43,47],"idghaam_shafawi":[15,20],"madd_2":[116,117],"madd_246":[121,122],"qalqalah":[47,49],"silent":[28,30,65,67,76,78,90,92]},
+"29": {"lam_shamsiyyah":[41,42],"madd_246":[75,76],"madd_munfasil":[7,9],"qalqalah":[68,70],"silent":[9,11],"hamzat_wasl":[40,41]},
+"30": {"ikhfa":[143,146],"madd_2":[64,65],"madd_246":[157,158],"madd_munfasil":[11,14],"silent":[27,29,86,88,121,123],"hamzat_wasl":[71,72,124,125]},
+"31": {"ikhfa":[98,102],"lam_shamsiyyah":[81,82],"madd_2":[111,112],"madd_246":[228,229],"madd_munfasil":[57,60],"madd_muttasil":[39,41,69,71,213,215],"qalqalah":[2,4,140,142],"silent":[30,32,106,108],"hamzat_wasl":[12,13,44,45,80,81]},
+"32": {"idghaam_ghunnah":[42,46,51,55],"idghaam_no_ghunnah":[83,88],"lam_shamsiyyah":[19,20,57,58],"madd_2":[14,15],"madd_246":[124,125],"madd_munfasil":[27,29],"silent":[13,14],"hamzat_wasl":[6,7,18,19,65,66]},
+"33": {"ghunnah":[16,19,59,62,93,96],"lam_shamsiyyah":[98,99],"madd_2":[21,22,90,91,102,103,119,120],"madd_246":[139,140],"qalqalah":[2,4,133,135],"hamzat_wasl":[36,37,97,98,123,124]},
+"34": {"ikhfa":[29,33],"idghaam_ghunnah":[24,29,171,176],"madd_2":[99,100,139,140],"madd_246":[194,195],"madd_munfasil":[90,93],"madd_muttasil":[162,164],"qalqalah":[6,8,33,35,157,159],"silent":[49,51,71,73,82,84,180,182],"hamzat_wasl":[143,144,183,184]},
+"35": {"ghunnah":[217,220],"ikhfa":[4,8,63,67,81,86,109,114],"ikhfa_shafawi":[140,144],"idghaam_ghunnah":[151,155],"lam_shamsiyyah":[117,118],"madd_2":[231,232],"madd_246":[236,237],"madd_muttasil":[123,125,162,164],"qalqalah":[67,69],"hamzat_wasl":[49,50,88,89,116,117,167,168,194,195,226,227]},
+"36": {"ghunnah":[2,5,80,83],"madd_246":[101,102],"qalqalah":[59,61],"hamzat_wasl":[21,22,45,46,70,71]},
+"37": {"ghunnah":[66,69,123,126],"idghaam_ghunnah":[42,47,96,100,114,118],"idghaam_no_ghunnah":[47,52],"madd_2":[57,58,120,121],"madd_246":[152,153],"madd_munfasil":[90,93],"silent":[8,10],"hamzat_wasl":[70,71]},
+"38": {"ghunnah":[143,146],"ikhfa":[8,12,18,22,132,136,139,143],"idghaam_ghunnah":[47,51],"idghaam_shafawi":[97,102],"madd_2":[126,127],"madd_246":[172,173],"madd_munfasil":[76,78],"madd_muttasil":[42,44],"madd_6":[12,14],"qalqalah":[109,111],"hamzat_wasl":[24,25,119,120]},
+"39": {"ghunnah":[40,43],"ikhfa":[51,55],"idghaam_ghunnah":[42,46,72,76,104,108,137,142],"lam_shamsiyyah":[58,59],"madd_2":[31,32,66,67,135,136],"madd_246":[148,149],"qalqalah":[115,117],"silent":[20,22],"hamzat_wasl":[2,3,57,58,81,82]},
+"40": {"ikhfa":[108,112,112,115],"lam_shamsiyyah":[69,70],"madd_2":[30,31,120,121],"madd_246":[125,126],"qalqalah":[98,100],"hamzat_wasl":[44,45,68,69,88,89]},
+"41": {"ikhfa":[60,64,73,76],"madd_246":[93,94],"madd_muttasil":[64,66],"qalqalah":[16,18,41,43]},
+"42": {"ikhfa":[40,44],"ikhfa_shafawi":[64,68],"idghaam_ghunnah":[35,40],"lam_shamsiyyah":[85,86],"madd_2":[61,62],"madd_246":[120,121],"madd_munfasil":[19,21,26,29],"madd_muttasil":[77,79,92,94],"qalqalah":[6,8,44,46],"hamzat_wasl":[68,69,84,85]},
+"43": {"ikhfa":[56,60],"ikhfa_shafawi":[24,28],"lam_shamsiyyah":[95,96],"madd_2":[53,54,103,104],"madd_246":[128,129],"madd_munfasil":[8,10],"madd_muttasil":[18,20],"silent":[46,48,117,119],"hamzat_wasl":[94,95]},
+"44": {"ghunnah":[4,7],"ikhfa":[144,148],"ikhfa_shafawi":[135,139],"idghaam_shafawi":[156,161],"madd_2":[36,37,65,66,132,133],"madd_246":[167,168],"madd_munfasil":[87,90,111,113,119,121],"qalqalah":[61,63,161,163],"silent":[14,16,29,31,104,106,121,123]},
+"45": {"madd_2":[78,79],"madd_246":[83,84],"silent":[44,46],"hamzat_wasl":[17,18,27,28,49,50,73,74]},
+"46": {"ghunnah":[175,178],"ikhfa":[138,141],"ikhfa_shafawi":[130,134],"idghaam_shafawi":[90,95],"madd_2":[57,58,102,103,169,170],"madd_246":[192,193],"qalqalah":[53,55],"hamzat_wasl":[30,31,113,114,137,138,161,162]},
+"47": {"lam_shamsiyyah":[107,108],"madd_2":[30,31,111,112],"madd_246":[116,117],"hamzat_wasl":[44,45,96,97,106,107]},
+"48": {"ikhfa":[54,57],"madd_246":[132,133],"hamzat_wasl":[15,16]},
+"49": {"madd_2":[31,32],"madd_246":[84,85],"silent":[20,22,73,75],"hamzat_wasl":[2,3,50,51]},
+"50": {"ghunnah":[101,104],"ikhfa":[27,30],"madd_246":[220,221],"madd_munfasil":[7,9,55,57,81,83,144,147],"madd_muttasil":[36,38],"hamzat_wasl":[43,44,67,68,176,177,190,191]},
+"51": {"ikhfa":[4,7,86,90],"idghaam_ghunnah":[38,42,103,107],"idghaam_no_ghunnah":[117,122],"idghaam_shafawi":[81,86],"madd_2":[95,96],"madd_246":[139,140],"madd_munfasil":[48,50],"silent":[50,52],"hamzat_wasl":[15,16]},
+"52": {"ikhfa":[124,128,167,171,174,178],"ikhfa_shafawi":[42,46],"idghaam_ghunnah":[131,135],"idghaam_shafawi":[119,124,162,167],"lam_shamsiyyah":[207,208],"madd_2":[54,55,90,91,211,212],"madd_246":[216,217],"qalqalah":[8,10,27,29,84,86,180,182],"silent":[53,54],"hamzat_wasl":[15,16,46,47,60,61,206,207]},
+"53": {"ghunnah":[16,19,72,75],"ikhfa_shafawi":[29,33],"iqlab":[98,101],"idghaam_no_ghunnah":[38,43],"idghaam_shafawi":[92,97],"lam_shamsiyyah":[142,143],"madd_2":[6,7,146,147],"madd_246":[151,152],"madd_munfasil":[50,52,108,110],"madd_muttasil":[59,61,65,67],"silent":[52,54],"hamzat_wasl":[76,77,120,121,141,142]},
+"54": {"ghunnah":[127,130,177,180,217,220],"ikhfa":[148,151,173,177],"iqlab":[159,164,190,193],"idghaam_no_ghunnah":[230,235],"lam_shamsiyyah":[114,115],"madd_2":[47,48,65,66,132,133,169,170,200,201,222,223],"madd_246":[237,238],"madd_muttasil":[10,12,156,158],"hamzat_wasl":[17,18,113,114]},
+"55": {"madd_2":[6,7,30,31],"madd_246":[69,70],"qalqalah":[63,65],"hamzat_wasl":[22,23,58,59]},
+"56": {"ghunnah":[7,10],"ikhfa":[56,60],"idghaam_ghunnah":[124,129],"madd_246":[157,158],"madd_munfasil":[79,81,131,133],"madd_muttasil":[98,100],"qalqalah":[46,48,109,111],"hamzat_wasl":[34,35,64,65,146,147]},
+"57": {"ghunnah":[7,10],"ikhfa":[67,70],"ikhfa_shafawi":[53,57],"idghaam_ghunnah":[27,32],"idghaam_no_ghunnah":[32,37],"madd_2":[59,60,165,166],"madd_246":[170,171],"madd_munfasil":[96,98],"qalqalah":[49,51],"hamzat_wasl":[104,105,137,138,160,161]},
+"58": {"ghunnah":[12,15],"ikhfa":[18,21],"lam_shamsiyyah":[111,112],"madd_2":[47,48,115,116],"madd_246":[120,121],"hamzat_wasl":[58,59,91,92,110,111]},
+"59": {"ikhfa":[4,7,159,163],"idghaam_ghunnah":[117,121,196,200,229,234],"madd_2":[9,10,171,172,227,228],"madd_246":[236,237],"madd_munfasil":[45,47],"qalqalah":[193,195],"hamzat_wasl":[21,22,79,80,90,91,175,176]},
+"60": {"ghunnah":[70,73,81,84,128,131,135,138,163,166],"ikhfa":[130,135,188,191],"ikhfa_shafawi":[28,32,64,68,178,182],"idghaam_ghunnah":[121,126],"lam_shamsiyyah":[69,70],"madd_2":[25,26],"madd_246":[202,203],"madd_munfasil":[112,115],"qalqalah":[87,89,108,110],"hamzat_wasl":[7,8,32,33,68,69]},
+"61": {"madd_2":[34,35],"madd_246":[152,153],"madd_munfasil":[72,75],"madd_muttasil":[84,86],"hamzat_wasl":[7,8,100,101]},
+"62": {"ghunnah":[2,5],"madd_2":[37,38,94,95],"madd_246":[99,100],"madd_munfasil":[11,13],"silent":[13,15],"hamzat_wasl":[22,23,43,44,63,64,89,90]},
+"63": {"ghunnah":[134,137],"ikhfa":[24,28,102,105],"idghaam_ghunnah":[7,11,78,83],"idghaam_no_ghunnah":[90,95],"idghaam_shafawi":[19,24],"lam_shamsiyyah":[144,145],"madd_2":[32,33,68,69,106,107,118,119,123,124,148,149],"madd_246":[153,154],"qalqalah":[59,61],"hamzat_wasl":[36,37,47,48,143,144]},
+"64": {"ghunnah":[55,58],"ikhfa":[38,42,51,55,61,64],"idghaam_shafawi":[23,28],"madd_246":[75,76],"hamzat_wasl":[5,6]},
+"65": {"ikhfa":[65,69,85,89,168,171],"ikhfa_shafawi":[151,155],"idghaam_ghunnah":[31,35,59,65,130,135],"madd_2":[199,200],"madd_246":[223,224],"madd_munfasil":[25,28],"qalqalah":[35,37],"hamzat_wasl":[10,11,167,168,191,192]},
+"66": {"ikhfa_shafawi":[61,65],"madd_2":[14,15],"madd_246":[69,70],"hamzat_wasl":[32,33]},
+"67": {"idghaam_ghunnah":[14,19,27,31],"madd_246":[46,47]},
+"68": {"ghunnah":[120,123,132,135],"ikhfa":[127,130],"lam_shamsiyyah":[139,140,174,175,201,202],"madd_2":[48,49,114,115,147,148,205,206],"madd_246":[210,211],"madd_munfasil":[40,42],"qalqalah":[159,161,163,165],"silent":[91,93],"hamzat_wasl":[17,18,138,139,173,174,190,191,200,201]},
+"69": {"ikhfa":[52,56,68,72],"idghaam_ghunnah":[59,63],"idghaam_shafawi":[47,52],"madd_2":[65,66],"madd_246":[98,99],"hamzat_wasl":[12,13]},
+"70": {"ikhfa":[113,117,162,166,204,208],"iqlab":[129,133,347,351],"idghaam_ghunnah":[44,49,54,59,184,188,198,202,315,320,329,333],"idghaam_no_ghunnah":[226,231],"lam_shamsiyyah":[84,85],"madd_2":[79,80],"madd_246":[373,374],"madd_munfasil":[108,110,248,250],"madd_muttasil":[257,259],"qalqalah":[117,119,223,225,276,278],"silent":[26,28,78,79,253,255,283,285,299,301,362,364],"hamzat_wasl":[7,8,17,18,71,72,83,84,170,171,264,265]},
+"71": {"ghunnah":[256,259],"ikhfa":[19,23,45,48],"idghaam_ghunnah":[209,213],"lam_shamsiyyah":[157,158],"madd_2":[119,120,163,164,207,208,325,326],"madd_246":[330,331],"madd_munfasil":[85,88,198,200,222,224],"qalqalah":[9,11,213,215],"silent":[14,16],"hamzat_wasl":[27,28,124,125,134,135,142,143,156,157,174,175,231,232,240,241,266,267,279,280,320,321]},
+"72": {"lam_shamsiyyah":[19,20],"madd_2":[26,27],"madd_246":[75,76],"madd_munfasil":[55,57],"silent":[15,17,25,26],"hamzat_wasl":[18,19,32,33,49,50]},
+"73": {"ikhfa":[78,82,134,137],"lam_shamsiyyah":[23,24,145,146,174,175],"madd_2":[29,30,32,33,155,156,180,181],"madd_246":[211,212],"hamzat_wasl":[7,8,22,23,38,39,50,51,99,100,115,116,144,145,161,162,173,174,193,194,204,205]},
+"74": {"ghunnah":[79,82],"idghaam_ghunnah":[115,120],"madd_2":[19,20,90,91,113,114],"madd_246":[122,123],"madd_munfasil":[82,84],"qalqalah":[15,17]},
+"75": {"lam_shamsiyyah":[43,44],"madd_2":[6,7,25,26,49,50,52,53],"madd_246":[95,96],"madd_munfasil":[16,18],"qalqalah":[21,23],"hamzat_wasl":[42,43,58,59,85,86]},
+"76": {"ghunnah":[4,7,11,14,73,76],"ikhfa":[46,51],"madd_2":[57,58],"madd_246":[115,116],"madd_munfasil":[76,78,94,96],"hamzat_wasl":[24,25,105,106]},
+"77": {"ghunnah":[4,7,58,61,115,118],"ikhfa":[31,36],"idghaam_no_ghunnah":[81,86],"lam_shamsiyyah":[135,136],"madd_2":[42,43],"madd_246":[144,145],"madd_munfasil":[61,63],"madd_6":[139,141],"hamzat_wasl":[15,16,124,125,134,135]},
+"78": {"ghunnah":[4,7,76,79,109,112,126,129],"ikhfa":[33,37],"idghaam_ghunnah":[121,126],"lam_shamsiyyah":[16,17],"madd_2":[43,44,57,58,99,100],"madd_246":[139,140],"madd_munfasil":[60,62,79,81],"madd_muttasil":[118,120],"hamzat_wasl":[15,16]},
+"79": {"ghunnah":[2,5],"idghaam_ghunnah":[74,79],"lam_shamsiyyah":[43,44],"madd_2":[49,50,52,53],"madd_246":[107,108],"madd_munfasil":[81,83],"qalqalah":[19,21],"hamzat_wasl":[42,43,58,59,96,97]},
+"80": {"ghunnah":[42,45],"idghaam_ghunnah":[123,127,147,152],"madd_2":[11,12,21,22,71,72],"madd_246":[204,205],"madd_munfasil":[79,81,110,112,118,120],"madd_muttasil":[129,131],"madd_6":[4,6,35,37,40,42],"qalqalah":[63,65],"hamzat_wasl":[51,52]},
+"81": {"ghunnah":[54,57],"ikhfa":[128,133,176,180,180,183],"ikhfa_shafawi":[72,76],"madd_2":[107,108,126,127],"madd_246":[194,195],"madd_munfasil":[19,21],"hamzat_wasl":[76,77,139,140,164,165]},
+"82": {"ikhfa_shafawi":[51,55],"idghaam_shafawi":[96,101],"madd_2":[46,47],"madd_246":[107,108],"madd_munfasil":[36,38],"madd_muttasil":[68,70],"silent":[18,20,38,40,64,66],"hamzat_wasl":[82,83]},
+"83": {"ghunnah":[102,105],"idghaam_ghunnah":[83,88,88,93],"madd_2":[30,31,42,43,64,65,81,82],"madd_246":[126,127],"madd_munfasil":[18,20,33,35],"madd_muttasil":[95,97],"qalqalah":[38,40]},
+"84": {"ikhfa":[79,83,92,96],"madd_2":[25,26,106,107,113,114,127,128,166,167,179,180],"madd_246":[204,205],"madd_munfasil":[16,18],"qalqalah":[6,8,83,85,187,189],"hamzat_wasl":[193,194]},
+"85": {"idghaam_ghunnah":[50,55],"lam_shamsiyyah":[59,60],"madd_2":[63,64],"madd_246":[68,69],"hamzat_wasl":[58,59]},
+"86": {"ikhfa":[52,57],"idghaam_ghunnah":[43,48],"madd_2":[8,9,77,78],"madd_246":[82,83],"hamzat_wasl":[17,18,72,73]},
+"87": {"idghaam_ghunnah":[103,108],"madd_2":[31,32,47,48,68,69,84,85,101,102],"madd_246":[114,115],"madd_muttasil":[12,14],"qalqalah":[58,60],"hamzat_wasl":[57,58]},
+"88": {"idghaam_ghunnah":[38,42],"idghaam_shafawi":[99,104],"madd_2":[2,3,34,35,63,64],"madd_246":[123,124],"madd_muttasil":[44,46],"silent":[81,83,112,114],"hamzat_wasl":[14,15]},
+"89": {"ghunnah":[65,68],"idghaam_ghunnah":[80,84],"idghaam_no_ghunnah":[139,145],"lam_shamsiyyah":[64,65],"madd_2":[32,33,45,46,163,164],"madd_246":[168,169],"madd_muttasil":[6,8,99,101,105,107],"qalqalah":[114,116],"silent":[2,4,150,152],"hamzat_wasl":[13,14,38,39,51,52,63,64]},
+"90": {"madd_2":[46,47,135,136],"madd_246":[140,141],"madd_munfasil":[69,71],"madd_muttasil":[6,8],"qalqalah":[53,55,97,99],"silent":[2,4],"hamzat_wasl":[13,14,29,30,52,53]},
+"91": {"ghunnah":[179,182,326,329],"ikhfa":[62,65,93,97,100,104,114,117,284,287],"idghaam_ghunnah":[88,93,164,169,243,248],"idghaam_no_ghunnah":[172,178],"idghaam_shafawi":[257,262],"lam_shamsiyyah":[178,179],"madd_2":[127,128,150,151,199,200],"madd_246":[362,363],"madd_munfasil":[38,40,57,59,277,279,294,296],"madd_muttasil":[141,143,302,304],"qalqalah":[32,34,188,190,214,216],"silent":[13,15,52,54,279,281],"hamzat_wasl":[16,17,68,69,120,121,131,132,316,317]},
+"92": {"ghunnah":[89,92],"ikhfa":[19,22,81,84],"idghaam_ghunnah":[38,43],"madd_2":[4,5,13,14,26,27,175,176],"madd_246":[212,213],"hamzat_wasl":[51,52,93,94,122,123,146,147]},
+"93": {"ghunnah":[18,21],"ikhfa":[116,120,128,131,148,151,277,280,333,336,384,387],"idghaam_ghunnah":[110,114],"lam_shamsiyyah":[183,184],"madd_2":[187,188,206,207,400,401,405,406],"madd_246":[419,420],"madd_munfasil":[143,145,173,176,245,247,270,272],"madd_muttasil":[229,231],"qalqalah":[299,301],"silent":[247,249,272,274],"hamzat_wasl":[24,25,40,41,154,155,182,183,210,211,222,223,287,288,316,317,356,357,371,372]},
+"94": {"ghunnah":[181,184],"ikhfa":[248,251,260,263],"idghaam_ghunnah":[66,70],"idghaam_mutajanisayn":[214,215],"idghaam_shafawi":[78,83,251,256],"madd_2":[26,27,46,47,94,95],"madd_246":[274,275],"madd_muttasil":[104,106,149,151,203,205],"qalqalah":[6,8,42,44],"silent":[207,209],"hamzat_wasl":[158,159]},
+"95": {"ghunnah":[2,5,35,38,135,138],"lam_shamsiyyah":[34,35],"madd_2":[115,116],"madd_246":[149,150],"hamzat_wasl":[6,7,22,23,33,34,52,53,66,67,88,89,104,105,123,124]},
+"96": {"ikhfa":[79,84],"idghaam_ghunnah":[44,49],"lam_shamsiyyah":[50,51],"madd_2":[84,85],"madd_246":[118,119],"qalqalah":[92,94],"hamzat_wasl":[8,9,30,31,49,50,61,62,100,101,111,112]},
+"97": {"ghunnah":[31,34],"idghaam_ghunnah":[130,134],"lam_shamsiyyah":[30,31],"madd_2":[70,71,119,120],"madd_246":[140,141],"qalqalah":[97,99],"silent":[51,53],"hamzat_wasl":[7,8,29,30,74,75,85,86,111,112]},
+"98": {"ikhfa":[18,21,48,52,77,81],"idghaam_ghunnah":[30,35,38,42,62,66,114,118],"idghaam_shafawi":[25,30],"madd_2":[42,43,103,104],"madd_246":[124,125],"madd_munfasil":[13,15],"qalqalah":[81,83],"hamzat_wasl":[7,8,95,96]},
+"99": {"ghunnah":[165,168,211,214,256,259,356,359],"ikhfa":[18,21,46,50,87,91,175,179,195,199,297,300],"idghaam_ghunnah":[115,121,139,145,153,158,205,209,216,221,232,236,272,277,393,397],"idghaam_no_ghunnah":[383,388],"lam_shamsiyyah":[30,31,164,165,237,238,252,253],"madd_2":[66,67,214,215,290,291,366,367,381,382],"madd_246":[403,404],"madd_munfasil":[13,15,302,304,322,324,329,331,351,353],"madd_muttasil":[36,38,43,45],"qalqalah":[56,58,97,99],"silent":[304,306],"hamzat_wasl":[7,8,29,30,163,164,236,237,251,252,296,297]},
+"100": {"ghunnah":[36,39,133,136],"ikhfa":[104,108],"iqlab":[87,91],"madd_2":[69,70,85,86,112,113,117,118,125,126],"madd_246":[144,145],"madd_muttasil":[26,28],"qalqalah":[108,110],"silent":[9,11,62,64],"hamzat_wasl":[31,32]},
+"101": {"ghunnah":[36,39],"idghaam_ghunnah":[61,65,91,95,113,117],"idghaam_no_ghunnah":[74,79],"lam_shamsiyyah":[9,10],"madd_2":[15,16,18,19,54,55,81,82,85,86],"madd_246":[141,142],"hamzat_wasl":[8,9,24,25]},
+"102": {"ikhfa":[72,76],"idghaam_ghunnah":[112,116],"madd_2":[2,3,37,38,55,56],"madd_246":[118,119],"madd_munfasil":[30,32],"hamzat_wasl":[10,11,76,77]},
+"103": {"lam_shamsiyyah":[66,67],"madd_2":[25,26,54,55],"madd_246":[83,84],"qalqalah":[7,9,21,23,38,40,50,52],"hamzat_wasl":[16,17,45,46,65,66,76,77]},
+"104": {"ikhfa_shafawi":[13,17,119,123],"idghaam_no_ghunnah":[28,33],"madd_2":[69,70],"madd_246":[127,128],"madd_munfasil":[101,103],"madd_muttasil":[7,9,19,21],"qalqalah":[2,4,50,52]},
+"105": {"idghaam_ghunnah":[82,86],"madd_2":[6,7,30,31,73,74],"madd_246":[92,93],"silent":[46,48],"hamzat_wasl":[22,23]},
+"106": {"idghaam_no_ghunnah":[33,38],"madd_2":[53,54],"madd_246":[96,97],"madd_munfasil":[11,13,46,48],"hamzat_wasl":[85,86]},
+"107": {"ikhfa":[86,89],"ikhfa_shafawi":[98,102],"idghaam_ghunnah":[74,79],"madd_2":[53,54],"madd_246":[106,107],"madd_munfasil":[24,26,81,83],"madd_muttasil":[9,11],"silent":[36,38],"hamzat_wasl":[14,15]},
+"108": {"ghunnah":[116,119,131,134,150,153],"ikhfa":[39,43,99,103],"ikhfa_shafawi":[197,201],"iqlab":[81,86],"idghaam_shafawi":[168,173],"madd_2":[105,106],"madd_246":[222,223],"qalqalah":[29,31,78,80],"silent":[14,16,65,67,211,213],"hamzat_wasl":[17,18,47,48,68,69]},
+"109": {"ghunnah":[83,86,100,103,154,157],"ikhfa":[49,53,121,124],"idghaam_no_ghunnah":[70,75],"madd_2":[37,38,115,116],"madd_246":[189,190],"madd_munfasil":[159,161],"madd_muttasil":[53,55,170,172],"qalqalah":[4,6],"silent":[11,13],"hamzat_wasl":[16,17,107,108,125,126]},
+"110": {"idghaam_ghunnah":[88,92],"madd_2":[36,37,113,114],"madd_246":[129,130],"madd_munfasil":[71,73],"qalqalah":[32,34],"silent":[64,66]},
+"111": {"ghunnah":[9,12,190,193],"ikhfa":[115,119],"idghaam_ghunnah":[122,128,164,168],"madd_2":[187,188],"madd_246":[215,216],"madd_munfasil":[25,27,149,151,159,161],"madd_muttasil":[46,48,170,172],"qalqalah":[209,211],"silent":[136,138,151,153],"hamzat_wasl":[39,40,69,70,175,176]},
+"112": {"ghunnah":[74,77],"ikhfa":[44,49,63,66,108,112],"idghaam_ghunnah":[135,140],"madd_2":[6,7,51,52],"madd_246":[199,200],"madd_muttasil":[147,149],"hamzat_wasl":[58,59,69,70,119,120]},
+"113": {"idghaam_shafawi":[115,120],"madd_246":[128,129],"madd_munfasil":[10,13],"qalqalah":[97,99,120,122],"silent":[106,108],"hamzat_wasl":[35,36,63,64]},
+"114": {"ghunnah":[146,149,201,204],"ikhfa":[55,58],"idghaam_ghunnah":[34,39,91,96,161,166],"idghaam_no_ghunnah":[166,171],"madd_2":[79,80,115,116,128,129,151,152],"madd_246":[221,222],"madd_munfasil":[50,52],"qalqalah":[21,23],"hamzat_wasl":[11,12,44,45,72,73,96,97,121,122,179,180,210,211]},
+"115": {"ghunnah":[4,7],"idghaam_ghunnah":[32,37],"idghaam_no_ghunnah":[42,48],"lam_shamsiyyah":[83,84],"madd_2":[68,69,73,74],"madd_246":[100,101],"qalqalah":[29,31,39,41],"hamzat_wasl":[82,83,93,94]},
+"116": {"ghunnah":[100,103],"ikhfa":[4,8,24,28,53,57],"idghaam_ghunnah":[73,77],"lam_shamsiyyah":[96,97],"madd_246":[131,132],"hamzat_wasl":[30,31,63,64,95,96]},
+"117": {"ghunnah":[2,5],"ikhfa":[42,46],"idghaam_ghunnah":[30,34],"madd_2":[53,54],"madd_246":[84,85],"hamzat_wasl":[73,74]},
+"118": {"ghunnah":[12,15],"ikhfa":[49,53,53,56],"ikhfa_shafawi":[56,60],"madd_2":[66,67,71,72],"madd_246":[81,82],"silent":[7,9],"hamzat_wasl":[24,25,30,31]},
+"119": {"ghunnah":[34,37,152,155,213,216],"ikhfa_shafawi":[193,197],"idghaam_no_ghunnah":[162,168],"idghaam_shafawi":[88,93],"madd_246":[252,253],"madd_muttasil":[187,189],"qalqalah":[73,75],"silent":[29,31],"hamzat_wasl":[46,47,52,53,125,126,241,242]},
+"120": {"ghunnah":[44,47],"madd_2":[12,13],"madd_246":[118,119],"madd_munfasil":[39,41],"qalqalah":[84,86,110,112],"silent":[7,9,105,107],"hamzat_wasl":[18,19,48,49,70,71]},
+"121": {"ghunnah":[20,23,66,69,86,89,182,185],"idghaam_ghunnah":[80,84],"lam_shamsiyyah":[91,92],"madd_2":[71,72,97,98,146,147],"madd_246":[200,201],"madd_munfasil":[119,122],"madd_muttasil":[131,133],"silent":[15,17],"hamzat_wasl":[39,40,45,46,90,91]},
+"122": {"ghunnah":[83,86],"ikhfa":[6,10,19,24],"idghaam_ghunnah":[60,65,94,99,139,144],"lam_shamsiyyah":[82,83,112,113],"madd_2":[34,35,54,55,75,76,105,106,120,121,154,155,174,175],"madd_246":[204,205],"silent":[193,195],"hamzat_wasl":[81,82,111,112]},
+"123": {"ikhfa":[114,117],"madd_2":[6,7,45,46],"madd_246":[138,139],"qalqalah":[53,55],"silent":[75,77]},
+"124": {"ikhfa":[27,31,192,195,212,216],"iqlab":[220,224],"idghaam_ghunnah":[40,45],"madd_2":[148,149],"madd_246":[246,247],"madd_munfasil":[78,80],"madd_muttasil":[10,12],"qalqalah":[130,132,172,174],"silent":[35,37,179,181,235,237],"hamzat_wasl":[96,97,104,105,160,161,196,197]},
+"125": {"ghunnah":[138,141],"ikhfa":[131,136],"idghaam_ghunnah":[4,8,23,27,74,78,85,89],"lam_shamsiyyah":[161,162,200,201],"madd_2":[35,36,54,55,66,67,96,97,115,116,176,177],"madd_246":[237,238],"madd_muttasil":[167,169],"qalqalah":[48,50,80,82,100,102,109,111,184,186,204,206],"hamzat_wasl":[13,14,160,161,191,192,199,200,215,216]},
+"126": {"ikhfa":[35,40],"idghaam_ghunnah":[73,77],"madd_2":[4,5,13,14,62,63],"madd_246":[85,86],"qalqalah":[40,42],"hamzat_wasl":[54,55]},
+"127": {"ikhfa":[26,29],"ikhfa_shafawi":[56,60],"lam_shamsiyyah":[14,15],"madd_2":[20,21],"madd_246":[81,82],"silent":[70,72],"hamzat_wasl":[13,14]},
+"128": {"ghunnah":[48,51,222,225,289,292],"ikhfa":[83,86,122,125],"idghaam_ghunnah":[28,33,164,168],"idghaam_shafawi":[70,75,109,114],"lam_shamsiyyah":[221,222],"madd_2":[33,34,236,237,244,245],"madd_246":[313,314],"madd_munfasil":[176,178,195,197,258,260],"madd_muttasil":[103,105,274,276],"hamzat_wasl":[43,44,57,58,78,79,117,118,135,136,189,190,220,221,279,280]},
+"129": {"iqlab":[47,52],"lam_shamsiyyah":[29,30],"madd_2":[6,7,33,34],"madd_246":[74,75],"silent":[63,65],"hamzat_wasl":[28,29]},
+"130": {"ghunnah":[17,20,251,254],"ikhfa":[28,31,60,63,102,105,171,174,239,242],"idghaam_ghunnah":[55,60],"lam_shamsiyyah":[207,208],"madd_2":[2,3,93,94,137,138,202,203,270,271],"madd_246":[275,276],"madd_munfasil":[165,168,233,236],"madd_muttasil":[119,121],"qalqalah":[155,157],"silent":[148,150,201,202,226,228,265,267],"hamzat_wasl":[12,13,23,24,194,195,206,207]},
+"131": {"idghaam_ghunnah":[59,63],"idghaam_no_ghunnah":[10,15,22,27],"madd_2":[2,3,75,76],"madd_246":[80,81],"hamzat_wasl":[42,43]},
+"132": {"ghunnah":[23,26,64,67],"ikhfa":[8,12],"idghaam_ghunnah":[18,23],"madd_2":[16,17,56,57],"madd_246":[77,78],"silent":[35,37]},
+"133": {"ikhfa":[114,117,126,130],"iqlab":[79,82],"idghaam_ghunnah":[39,43],"idghaam_shafawi":[89,94,121,126],"lam_shamsiyyah":[26,27],"madd_246":[153,154],"madd_munfasil":[109,111],"madd_muttasil":[100,102],"qalqalah":[54,56],"hamzat_wasl":[10,11,25,26]},
+"134": {"ghunnah":[2,5],"ikhfa":[38,41],"ikhfa_shafawi":[41,45],"idghaam_ghunnah":[27,31],"madd_246":[53,54],"madd_munfasil":[33,35]},
+"135": {"ghunnah":[49,52,122,125],"ikhfa":[60,64,85,89],"lam_shamsiyyah":[112,113,143,144],"madd_2":[7,8,99,100,103,104,127,128,147,148],"madd_246":[152,153],"silent":[23,25],"hamzat_wasl":[15,16,111,112,142,143]},
+"136": {"ghunnah":[22,25],"ikhfa":[70,75],"madd_2":[60,61,86,87,116,117],"madd_246":[268,269],"madd_muttasil":[129,131,157,159,240,242,251,253],"silent":[9,11,81,83],"hamzat_wasl":[39,40,51,52,185,186]},
+"137": {"idghaam_ghunnah":[28,33],"madd_2":[6,7,64,65],"madd_246":[199,200],"madd_muttasil":[78,80,147,149],"silent":[114,116],"hamzat_wasl":[36,37,152,153]},
+"138": {"ikhfa_shafawi":[217,221],"idghaam_ghunnah":[29,33,74,79],"idghaam_no_ghunnah":[45,50,142,147],"madd_2":[13,14,27,28,107,108,140,141],"madd_246":[242,243],"madd_munfasil":[18,20,62,64],"madd_muttasil":[81,83,192,194],"qalqalah":[42,44,54,56,210,212],"silent":[8,10,231,233],"hamzat_wasl":[161,162,167,168,185,186]},
+"139": {"ghunnah":[178,181],"ikhfa":[125,129],"idghaam_ghunnah":[109,113,115,120],"idghaam_no_ghunnah":[56,61],"madd_2":[29,30,44,45,98,99,183,184],"madd_246":[197,198],"madd_munfasil":[88,91],"madd_muttasil":[146,148],"qalqalah":[155,157],"silent":[8,10],"hamzat_wasl":[35,36]},
+"140": {"iqlab":[52,57],"idghaam_ghunnah":[70,74],"madd_2":[39,40],"madd_246":[171,172],"madd_munfasil":[28,30],"madd_muttasil":[115,117],"qalqalah":[2,4,136,138],"silent":[30,32,82,84,145,147,160,162],"hamzat_wasl":[12,13,100,101,108,109,126,127]},
+"141": {"ghunnah":[26,29,73,76,137,140,276,279],"ikhfa":[18,21,176,180,188,192],"idghaam_ghunnah":[31,36,45,49,67,71,154,159],"lam_shamsiyyah":[72,73,84,85,118,119,133,134],"madd_2":[29,30,43,44,65,66,113,114,150,151,172,173,235,236,253,254,281,282],"madd_246":[306,307],"madd_munfasil":[13,15,198,200,205,207,269,271],"silent":[183,185,225,227,271,273],"hamzat_wasl":[7,8,71,72,83,84,117,118,132,133,295,296]},
+"142": {"ghunnah":[50,53,118,121],"ikhfa":[37,42],"idghaam_ghunnah":[28,32,138,143],"lam_shamsiyyah":[104,105],"madd_2":[16,17,99,100,112,113,123,124],"madd_246":[145,146],"silent":[45,47,90,92],"hamzat_wasl":[7,8,66,67,103,104]},
+"143": {"ghunnah":[127,130],"ikhfa":[115,118,168,171,202,206,206,209],"idghaam_ghunnah":[20,25],"lam_shamsiyyah":[29,30,84,85],"madd_2":[4,5,18,19,214,215],"madd_246":[219,220],"madd_6":[82,84],"hamzat_wasl":[28,29,38,39,55,56,65,66,110,111,132,133,163,164]},
+"144": {"ghunnah":[106,109,233,236,284,287,309,312],"ikhfa":[94,97,147,150,164,167],"idghaam_no_ghunnah":[268,274],"lam_shamsiyyah":[63,64,283,284,344,345],"madd_2":[192,193,210,211,348,349],"madd_246":[353,354],"madd_muttasil":[176,178],"madd_6":[61,63],"hamzat_wasl":[7,8,17,18,34,35,44,45,89,90,111,112,142,143,198,199,239,240,255,256,282,283,313,314,333,334,343,344]},
+"145": {"ghunnah":[158,161,261,264],"ikhfa":[147,150,152,156,255,259],"idghaam_ghunnah":[66,70,91,95,118,124,243,247],"idghaam_no_ghunnah":[279,284],"madd_2":[163,164,214,215],"madd_246":[286,287],"madd_munfasil":[7,9,23,25,78,80,86,88],"qalqalah":[70,72,167,169],"hamzat_wasl":[202,203,223,224]},
+"146": {"ghunnah":[238,241],"ikhfa":[198,202],"ikhfa_shafawi":[219,223],"idghaam_ghunnah":[53,57],"madd_2":[202,203,216,217,247,248],"madd_246":[252,253],"madd_munfasil":[117,119,151,153,169,171],"silent":[24,26],"hamzat_wasl":[8,9,62,63,74,75,159,160,181,182]},
+"147": {"ikhfa":[4,8],"idghaam_ghunnah":[45,49,55,59],"idghaam_mutaqaribayn":[21,22],"madd_2":[49,50,79,80],"madd_246":[107,108],"qalqalah":[101,103],"hamzat_wasl":[86,87,96,97]},
+"148": {"ghunnah":[269,272],"ikhfa":[108,112,115,119,147,151,199,202,217,221,242,246,282,285],"idghaam_shafawi":[204,209],"lam_shamsiyyah":[265,266],"madd_2":[121,122],"madd_246":[303,304],"madd_munfasil":[54,56,73,75,237,239],"madd_muttasil":[39,41,81,83],"qalqalah":[151,153],"silent":[29,31,174,176],"hamzat_wasl":[10,11,44,45,135,136,264,265]},
+"149": {"madd_2":[31,32,60,61],"madd_246":[74,75],"madd_muttasil":[48,50],"qalqalah":[68,70],"hamzat_wasl":[15,16,26,27]},
+"150": {"ghunnah":[9,12,52,55],"ikhfa":[83,87],"ikhfa_shafawi":[229,233],"madd_2":[74,75,175,176],"madd_246":[251,252],"madd_muttasil":[19,21,141,143],"qalqalah":[107,109],"silent":[92,94,164,166],"hamzat_wasl":[28,29,56,57,146,147,184,185,212,213]},
+"151": {"ghunnah":[286,289],"ikhfa_shafawi":[355,359],"idghaam_ghunnah":[88,93,118,123,167,172],"idghaam_shafawi":[151,156],"lam_shamsiyyah":[285,286],"madd_2":[80,81,100,101,116,117,146,147,165,166,228,229,338,339,352,353,361,362],"madd_246":[383,384],"madd_munfasil":[135,137],"qalqalah":[129,131,211,213,274,276],"silent":[14,16,73,75,137,139,218,220,281,283],"hamzat_wasl":[95,96,221,222,284,285,294,295,310,311,327,328]},
+"152": {"ikhfa_shafawi":[285,289],"madd_2":[92,93,268,269,282,283,291,292],"madd_246":[314,315],"qalqalah":[8,10,76,78],"silent":[15,17,103,105,208,210,263,265],"hamzat_wasl":[24,25,44,45,106,107,118,119,132,133,200,201,248,249]},
+"153": {"ghunnah":[4,7],"ikhfa":[34,39,101,105],"ikhfa_shafawi":[133,137],"lam_shamsiyyah":[71,72],"madd_2":[10,11,19,20,112,113,116,117,130,131,139,140],"madd_246":[160,161],"silent":[67,69],"hamzat_wasl":[39,40,70,71]},
+"154": {"ghunnah":[2,5],"ikhfa_shafawi":[126,130],"idghaam_ghunnah":[95,99,102,107],"idghaam_no_ghunnah":[78,84,114,119],"madd_2":[31,32],"madd_246":[157,158],"madd_munfasil":[56,58],"madd_muttasil":[134,136],"hamzat_wasl":[24,25,50,51]},
+"155": {"ikhfa":[19,22,38,42],"madd_2":[4,5,13,14,26,27],"madd_246":[86,87],"silent":[63,65],"hamzat_wasl":[42,43,56,57]},
+"156": {"ghunnah":[18,21,89,92],"ikhfa":[2,6,28,31,69,73,85,89,96,100],"madd_2":[41,42,116,117],"madd_246":[121,122],"madd_munfasil":[11,13,23,25],"madd_muttasil":[54,56],"qalqalah":[73,75],"silent":[13,15],"hamzat_wasl":[34,35]},
+"157": {"ghunnah":[23,26,62,65,166,169],"ikhfa":[31,34,146,150,169,173],"ikhfa_shafawi":[101,105],"idghaam_ghunnah":[111,116,134,139],"idghaam_no_ghunnah":[116,121],"madd_2":[54,55,187,188,258,259],"madd_246":[306,307],"madd_munfasil":[26,28,65,67],"madd_muttasil":[95,97,267,269],"qalqalah":[90,92,220,222],"silent":[13,15,295,297],"hamzat_wasl":[47,48,191,192,226,227,272,273]},
+"158": {"ghunnah":[280,283],"ikhfa":[7,10,26,30,162,165,212,216,257,262,266,269,287,290],"madd_2":[105,106,144,145,181,182,245,246],"madd_246":[294,295],"madd_munfasil":[21,23,237,239,273,275],"madd_muttasil":[48,50],"qalqalah":[216,218],"silent":[275,277],"hamzat_wasl":[41,42,265,266]},
+"159": {"ghunnah":[2,5,86,89,121,124],"ikhfa_shafawi":[136,140],"idghaam_no_ghunnah":[53,59],"madd_246":[161,162],"madd_munfasil":[91,93],"silent":[24,26,45,47,150,152],"hamzat_wasl":[6,7,111,112]},
+"160": {"ikhfa":[2,6,57,61],"lam_shamsiyyah":[69,70],"madd_2":[31,32],"madd_246":[133,134],"madd_munfasil":[93,96],"madd_muttasil":[6,8,61,63],"qalqalah":[89,91],"hamzat_wasl":[13,14,68,69]},
+"161": {"ghunnah":[7,10],"ikhfa":[58,62,64,69],"idghaam_ghunnah":[45,50,72,78,103,108],"madd_2":[19,20,43,44,90,91],"madd_246":[134,135],"madd_munfasil":[29,31],"qalqalah":[86,88],"hamzat_wasl":[123,124]},
+"162": {"ghunnah":[7,10],"madd_2":[72,73],"madd_246":[77,78],"hamzat_wasl":[67,68]},
+"163": {"madd_2":[16,17,24,25],"madd_246":[67,68],"hamzat_wasl":[56,57]},
+"164": {"ghunnah":[149,152],"ikhfa":[206,209],"ikhfa_shafawi":[196,200],"idghaam_ghunnah":[34,39,61,65,129,133],"idghaam_shafawi":[167,172],"madd_246":[228,229],"qalqalah":[24,26],"hamzat_wasl":[14,15]},
+"165": {"ghunnah":[130,133,165,168],"ikhfa":[79,83],"idghaam_no_ghunnah":[89,94,180,185],"madd_2":[87,88,122,123,170,171],"madd_246":[187,188],"madd_munfasil":[113,115],"madd_muttasil":[30,32],"qalqalah":[96,98],"hamzat_wasl":[7,8,37,38,150,151]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/60.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/60.json
index 2adbdc6..7ee033b 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/60.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/60.json
@@ -1,15 +1,15 @@
{
-"1": {"ghunnah":[144,148,247,251,283,287,287,290,310,315,370,374,438,441,463,466],"idgham":[192,197,222,223,448,452,492,493],"madd":[41,43,121,123,186,188,308,309,335,337,409,411,429,431,486,488,498,499],"qalqalah":[165,167,297,299,329,331,473,475],"silent":[70,72,87,89,175,177,258,260],"wasl":[52,53,148,149,200,201,221,222,263,264,328,329,374,375,491,492]},
-"2": {"ghunnah":[100,104],"idgham":[2,6,45,49,105,106],"madd":[42,44,57,59,109,111,138,139],"qalqalah":[51,53],"silent":[26,28,59,61,122,124],"wasl":[104,105]},
-"3": {"ghunnah":[2,6,6,9],"madd":[34,36,43,44,65,66,123,124],"wasl":[58,59,93,94]},
-"4": {"ghunnah":[36,40,106,109,126,129,136,139,155,159,348,351,393,397],"idgham":[400,405],"madd":[40,42,49,50,74,76,117,119,226,227,243,245,294,296,317,318,361,363,473,474],"qalqalah":[2,4,45,47,313,315,449,451],"silent":[88,90,121,123,273,275],"wasl":[58,59,163,164,219,220,234,235,278,279,383,384,466,467]},
-"5": {"ghunnah":[84,87,92,95],"idgham":[32,37],"madd":[79,81,114,115],"qalqalah":[15,17],"silent":[53,55],"wasl":[58,59,96,97,107,108]},
-"6": {"ghunnah":[51,55,120,123],"idgham":[44,49,104,108],"madd":[155,156],"qalqalah":[4,6,156,157],"silent":[66,68],"wasl":[69,70,79,80,89,90,124,125,137,138,148,149]},
-"7": {"idgham":[16,20,66,71,75,80,86,90,104,108,122,127],"madd":[129,130],"qalqalah":[20,22],"wasl":[6,7,47,48,90,91,108,109]},
-"8": {"ghunnah":[97,101,113,117,156,159],"idgham":[66,67,92,97],"madd":[12,13,50,51,103,104,138,140,187,188],"qalqalah":[132,134,181,183],"silent":[140,142],"wasl":[18,19,31,32,65,66,160,161,176,177]},
-"9": {"ghunnah":[2,5,89,93,140,144],"idgham":[63,64,84,89,160,164,197,198],"madd":[16,17,47,48,95,96,107,108,120,123,184,186,201,202,206,207],"silent":[113,115,180,182],"wasl":[22,23,35,36,62,63,196,197]},
-"10": {"ghunnah":[78,82,94,97,127,130,151,154,165,169,184,187,212,215,256,259,280,283,316,320,320,323,328,331,353,356,366,369,430,433,464,467],"idgham":[220,225,270,275],"madd":[2,4,30,32,43,45,63,64,71,72,76,77,122,123,163,164,275,277,336,338,425,427,459,461,475,476,540,541],"qalqalah":[433,435],"silent":[32,34,286,288,385,387,420,422,454,456,470,472],"wasl":[13,14,52,53,82,83,98,99,194,195,397,398,490,491,520,521]},
-"11": {"ghunnah":[4,8,134,137,174,177,177,181],"idgham":[21,26,117,122],"madd":[35,36,112,113,129,131,169,171,183,184,193,194],"qalqalah":[68,70],"silent":[84,86,140,142,152,154],"wasl":[49,50,87,88,145,146,155,156,163,164]},
-"12": {"ghunnah":[15,18,176,179,239,242,255,258,289,293,302,305,324,327,338,341],"idgham":[14,15,78,83,112,117,206,210,356,361],"madd":[2,4,32,34,50,51,72,75,171,172,204,205,221,222,363,364],"qalqalah":[127,129,156,158],"wasl":[13,14,39,40,98,99,308,309,328,329,342,343]},
-"13": {"madd":[2,4,155,156,166,167],"qalqalah":[88,90],"silent":[31,33,49,51,98,100],"wasl":[13,14,67,68,106,107,132,133,159,160]}
+"1": {"ikhfa":[247,251,283,287,287,290,310,315,438,441,463,466],"ikhfa_shafawi":[144,148,370,374],"idghaam_ghunnah":[448,452],"idghaam_shafawi":[192,197],"lam_shamsiyyah":[222,223,492,493],"madd_2":[308,309],"madd_246":[498,499],"madd_munfasil":[41,43,409,411,429,431],"madd_muttasil":[121,123,186,188,335,337,486,488],"qalqalah":[165,167,297,299,329,331,473,475],"silent":[70,72,87,89,175,177,258,260],"hamzat_wasl":[52,53,148,149,200,201,221,222,263,264,328,329,374,375,491,492]},
+"2": {"ikhfa_shafawi":[100,104],"idghaam_ghunnah":[2,6,45,49],"lam_shamsiyyah":[105,106],"madd_246":[138,139],"madd_munfasil":[57,59],"madd_muttasil":[42,44,109,111],"qalqalah":[51,53],"silent":[26,28,59,61,122,124],"hamzat_wasl":[104,105]},
+"3": {"ikhfa":[2,6,6,9],"madd_2":[43,44,65,66],"madd_246":[123,124],"madd_munfasil":[34,36],"hamzat_wasl":[58,59,93,94]},
+"4": {"ghunnah":[106,109,136,139,348,351],"ikhfa":[36,40,126,129,155,159,393,397],"idghaam_no_ghunnah":[400,405],"madd_2":[49,50,226,227,317,318],"madd_246":[473,474],"madd_munfasil":[40,42,74,76,294,296,361,363],"madd_muttasil":[117,119,243,245],"qalqalah":[2,4,45,47,313,315,449,451],"silent":[88,90,121,123,273,275],"hamzat_wasl":[58,59,163,164,219,220,234,235,278,279,383,384,466,467]},
+"5": {"ghunnah":[84,87],"ikhfa":[92,95],"idghaam_no_ghunnah":[32,37],"madd_246":[114,115],"madd_munfasil":[79,81],"qalqalah":[15,17],"silent":[53,55],"hamzat_wasl":[58,59,96,97,107,108]},
+"6": {"ghunnah":[120,123],"ikhfa":[51,55],"idghaam_ghunnah":[104,108],"idghaam_no_ghunnah":[44,49],"madd_246":[155,156],"qalqalah":[4,6,156,157],"silent":[66,68],"hamzat_wasl":[69,70,79,80,89,90,124,125,137,138,148,149]},
+"7": {"idghaam_ghunnah":[16,20,86,90,104,108],"idghaam_no_ghunnah":[122,127],"idghaam_shafawi":[66,71,75,80],"madd_246":[129,130],"qalqalah":[20,22],"hamzat_wasl":[6,7,47,48,90,91,108,109]},
+"8": {"ghunnah":[156,159],"ikhfa":[97,101,113,117],"idghaam_shafawi":[92,97],"lam_shamsiyyah":[66,67],"madd_2":[12,13,50,51,103,104],"madd_246":[187,188],"madd_munfasil":[138,140],"qalqalah":[132,134,181,183],"silent":[140,142],"hamzat_wasl":[18,19,31,32,65,66,160,161,176,177]},
+"9": {"ghunnah":[2,5],"ikhfa":[89,93,140,144],"idghaam_ghunnah":[160,164],"idghaam_shafawi":[84,89],"lam_shamsiyyah":[63,64,197,198],"madd_2":[16,17,47,48,95,96,107,108,201,202],"madd_246":[206,207],"madd_munfasil":[120,123],"madd_muttasil":[184,186],"silent":[113,115,180,182],"hamzat_wasl":[22,23,35,36,62,63,196,197]},
+"10": {"ghunnah":[94,97,127,130,151,154,184,187,212,215,256,259,328,331,353,356,366,369],"ikhfa":[78,82,165,169,280,283,316,320,320,323,430,433,464,467],"idghaam_no_ghunnah":[220,225],"idghaam_shafawi":[270,275],"madd_2":[63,64,71,72,76,77,122,123,163,164,475,476],"madd_246":[540,541],"madd_munfasil":[2,4,30,32,275,277,336,338,425,427,459,461],"madd_muttasil":[43,45],"qalqalah":[433,435],"silent":[32,34,286,288,385,387,420,422,454,456,470,472],"hamzat_wasl":[13,14,52,53,82,83,98,99,194,195,397,398,490,491,520,521]},
+"11": {"ikhfa":[4,8,134,137,174,177],"ikhfa_shafawi":[177,181],"idghaam_ghunnah":[21,26],"idghaam_shafawi":[117,122],"madd_2":[35,36,112,113,183,184],"madd_246":[193,194],"madd_munfasil":[129,131,169,171],"qalqalah":[68,70],"silent":[84,86,140,142,152,154],"hamzat_wasl":[49,50,87,88,145,146,155,156,163,164]},
+"12": {"ghunnah":[15,18,176,179,239,242,255,258,302,305,324,327,338,341],"ikhfa":[289,293],"idghaam_ghunnah":[112,117,206,210],"idghaam_no_ghunnah":[78,83,356,361],"lam_shamsiyyah":[14,15],"madd_2":[50,51,171,172,204,205,221,222],"madd_246":[363,364],"madd_munfasil":[2,4,72,75],"madd_muttasil":[32,34],"qalqalah":[127,129,156,158],"hamzat_wasl":[13,14,39,40,98,99,308,309,328,329,342,343]},
+"13": {"madd_2":[155,156],"madd_246":[166,167],"madd_munfasil":[2,4],"qalqalah":[88,90],"silent":[31,33,49,51,98,100],"hamzat_wasl":[13,14,67,68,106,107,132,133,159,160]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/61.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/61.json
index 7623fda..ed2fbec 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/61.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/61.json
@@ -1,16 +1,16 @@
{
-"1": {"idgham":[64,65],"madd":[70,71,73,74,122,123],"wasl":[63,64,87,88,104,105,115,116]},
-"2": {"madd":[2,4,66,67],"silent":[31,33],"wasl":[13,14]},
-"3": {"ghunnah":[17,20,31,35],"madd":[60,61],"qalqalah":[9,11],"silent":[41,43],"wasl":[21,22]},
-"4": {"ghunnah":[2,5,64,69,71,74,76,80],"idgham":[86,91],"madd":[36,37,58,59,84,85,95,96],"wasl":[6,7,22,23]},
-"5": {"ghunnah":[82,85,118,121],"idgham":[65,66],"madd":[31,32,35,36,128,130,198,199,203,204],"silent":[130,132],"wasl":[95,96,141,142,163,164,183,184,193,194]},
-"6": {"ghunnah":[61,64,155,160,180,183,213,216,226,230],"idgham":[90,95,101,107,132,133,167,171,265,270],"madd":[37,38,42,44,51,53,141,142,197,199,220,222,240,241,255,256,272,273],"qalqalah":[21,23],"silent":[250,252],"wasl":[20,21,74,75,131,132,190,191,230,231]},
-"7": {"ghunnah":[18,21],"idgham":[127,128],"madd":[71,74,90,91,131,132,136,137],"qalqalah":[67,69],"wasl":[24,25,40,41,48,49,81,82,96,97,116,117,126,127]},
-"8": {"ghunnah":[70,73],"madd":[48,49,81,82,102,103,107,108],"qalqalah":[15,17],"silent":[23,25],"wasl":[32,33,58,59,97,98]},
-"9": {"idgham":[84,85],"madd":[11,13,32,33,75,76,99,100,126,127],"wasl":[5,6,36,37,54,55,83,84,115,116]},
-"10": {"ghunnah":[66,70,70,73],"idgham":[76,81],"madd":[2,4,62,63,96,97],"silent":[31,33],"wasl":[13,14]},
-"11": {"ghunnah":[90,93,127,131,131,134],"idgham":[115,120],"madd":[33,34,41,42,78,79,102,103,145,146],"wasl":[14,15,62,63]},
-"12": {"ghunnah":[45,48,50,54,62,66,107,111,115,118,127,131],"madd":[48,49,83,84,93,94,118,119,131,132,154,155],"qalqalah":[32,34,54,56,124,126],"wasl":[74,75,137,138,147,148]},
-"13": {"ghunnah":[53,57],"idgham":[30,35,61,65],"madd":[84,85],"wasl":[38,39,73,74]},
-"14": {"ghunnah":[46,49,120,123,175,178,218,221,261,265],"idgham":[200,201,212,217,249,250],"madd":[2,4,39,41,109,110,126,128,205,207,224,226,233,235,254,256,332,333,337,338],"qalqalah":[81,83,270,272],"silent":[31,33,41,43,294,296,327,329],"wasl":[13,14,53,54,80,81,135,136,149,150,182,183,276,277]}
+"1": {"lam_shamsiyyah":[64,65],"madd_2":[70,71,73,74],"madd_246":[122,123],"hamzat_wasl":[63,64,87,88,104,105,115,116]},
+"2": {"madd_246":[66,67],"madd_munfasil":[2,4],"silent":[31,33],"hamzat_wasl":[13,14]},
+"3": {"ikhfa":[17,20,31,35],"madd_246":[60,61],"qalqalah":[9,11],"silent":[41,43],"hamzat_wasl":[21,22]},
+"4": {"ghunnah":[2,5,71,74],"ikhfa":[64,69],"ikhfa_shafawi":[76,80],"idghaam_ghunnah":[86,91],"madd_2":[36,37,58,59,84,85],"madd_246":[95,96],"hamzat_wasl":[6,7,22,23]},
+"5": {"ghunnah":[82,85,118,121],"idghaam_mutajanisayn":[65,66],"madd_2":[31,32,35,36,198,199],"madd_246":[203,204],"madd_munfasil":[128,130],"silent":[130,132],"hamzat_wasl":[95,96,141,142,163,164,183,184,193,194]},
+"6": {"ghunnah":[61,64,213,216],"ikhfa_shafawi":[226,230],"iqlab":[155,160,180,183],"idghaam_ghunnah":[167,171,265,270],"idghaam_no_ghunnah":[101,107],"idghaam_shafawi":[90,95],"lam_shamsiyyah":[132,133],"madd_2":[37,38,141,142,240,241,255,256],"madd_246":[272,273],"madd_munfasil":[42,44,197,199],"madd_muttasil":[51,53,220,222],"qalqalah":[21,23],"silent":[250,252],"hamzat_wasl":[20,21,74,75,131,132,190,191,230,231]},
+"7": {"ghunnah":[18,21],"lam_shamsiyyah":[127,128],"madd_2":[90,91,131,132],"madd_246":[136,137],"madd_munfasil":[71,74],"qalqalah":[67,69],"hamzat_wasl":[24,25,40,41,48,49,81,82,96,97,116,117,126,127]},
+"8": {"ghunnah":[70,73],"madd_2":[48,49,81,82,102,103],"madd_246":[107,108],"qalqalah":[15,17],"silent":[23,25],"hamzat_wasl":[32,33,58,59,97,98]},
+"9": {"lam_shamsiyyah":[84,85],"madd_2":[32,33,75,76,99,100],"madd_246":[126,127],"madd_munfasil":[11,13],"hamzat_wasl":[5,6,36,37,54,55,83,84,115,116]},
+"10": {"ikhfa":[66,70,70,73],"idghaam_shafawi":[76,81],"madd_2":[62,63],"madd_246":[96,97],"madd_munfasil":[2,4],"silent":[31,33],"hamzat_wasl":[13,14]},
+"11": {"ikhfa":[90,93,127,131,131,134],"idghaam_no_ghunnah":[115,120],"madd_2":[33,34,41,42,78,79,102,103],"madd_246":[145,146],"hamzat_wasl":[14,15,62,63]},
+"12": {"ghunnah":[45,48,115,118],"ikhfa":[50,54,62,66,107,111,127,131],"madd_2":[48,49,83,84,93,94,118,119,131,132],"madd_246":[154,155],"qalqalah":[32,34,54,56,124,126],"hamzat_wasl":[74,75,137,138,147,148]},
+"13": {"ikhfa":[53,57],"idghaam_ghunnah":[30,35,61,65],"madd_246":[84,85],"hamzat_wasl":[38,39,73,74]},
+"14": {"ikhfa":[46,49,120,123,175,178,261,265],"iqlab":[218,221],"idghaam_ghunnah":[212,217],"idghaam_mutajanisayn":[200,201,249,250],"madd_2":[109,110,332,333],"madd_246":[337,338],"madd_munfasil":[2,4,39,41,126,128,224,226],"madd_muttasil":[205,207,233,235,254,256],"qalqalah":[81,83,270,272],"silent":[31,33,41,43,294,296,327,329],"hamzat_wasl":[13,14,53,54,80,81,135,136,149,150,182,183,276,277]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/62.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/62.json
index c1c960b..271b3f9 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/62.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/62.json
@@ -1,13 +1,13 @@
{
-"1": {"idgham":[66,67],"madd":[72,73,75,76,139,140],"wasl":[65,66,89,90,99,100,109,110,121,122,132,133]},
-"2": {"ghunnah":[29,32,151,155,164,168],"idgham":[45,51,185,190],"madd":[35,36,84,85,89,90,129,130,183,184,192,193],"qalqalah":[168,170],"silent":[65,67,159,161],"wasl":[5,6,24,25,122,123,135,136]},
-"3": {"ghunnah":[24,27],"madd":[73,74],"silent":[38,40],"wasl":[55,56,66,67]},
-"4": {"idgham":[35,39],"madd":[2,3,41,43,77,78],"wasl":[15,16,48,49,60,61,70,71]},
-"5": {"ghunnah":[19,22,44,47,103,108],"idgham":[29,30,205,206],"madd":[38,39,160,161,209,210,214,215],"silent":[25,27,149,151],"wasl":[7,8,28,29,75,76,121,122,131,132,164,165,174,175,194,195,204,205]},
-"6": {"ghunnah":[40,44,55,58,86,90,96,99,109,112,129,133,133,136],"idgham":[95,96],"madd":[7,9,33,35,71,73,141,142,146,147],"silent":[35,37,114,116],"wasl":[18,19,94,95,117,118]},
-"7": {"ghunnah":[12,15,29,34,77,81],"idgham":[83,84],"madd":[21,23,87,88,92,93],"wasl":[63,64,82,83]},
-"8": {"ghunnah":[7,10,51,54,73,76,141,145,151,154],"idgham":[116,117],"madd":[56,57,62,63,97,98,122,123,165,166],"wasl":[11,12,21,22,103,104,115,116]},
-"9": {"ghunnah":[166,170,170,173],"idgham":[51,52,64,68,154,159],"madd":[2,4,30,32,58,59,141,142,184,185],"silent":[32,34,57,58,94,96,126,128],"wasl":[13,14,73,74,87,88,111,112,129,130]},
-"10": {"ghunnah":[32,35,72,76],"idgham":[18,19,116,122],"madd":[25,26,140,141],"qalqalah":[60,62],"silent":[24,25,40,42,67,69,99,101],"wasl":[17,18,31,32,47,48,59,60,81,82,91,92,102,103]},
-"11": {"ghunnah":[41,44,81,86,95,98],"idgham":[112,117,121,122,138,139,168,169],"madd":[21,22,47,49,76,78,144,145,172,173,177,178],"silent":[14,16,49,51],"wasl":[40,41,99,100,120,121,137,138,152,153,167,168]}
+"1": {"lam_shamsiyyah":[66,67],"madd_2":[72,73,75,76],"madd_246":[139,140],"hamzat_wasl":[65,66,89,90,99,100,109,110,121,122,132,133]},
+"2": {"ghunnah":[29,32],"ikhfa":[151,155,164,168],"idghaam_ghunnah":[45,51,185,190],"madd_2":[35,36,84,85,89,90,129,130,183,184],"madd_246":[192,193],"qalqalah":[168,170],"silent":[65,67,159,161],"hamzat_wasl":[5,6,24,25,122,123,135,136]},
+"3": {"ghunnah":[24,27],"madd_246":[73,74],"silent":[38,40],"hamzat_wasl":[55,56,66,67]},
+"4": {"idghaam_ghunnah":[35,39],"madd_2":[2,3],"madd_246":[77,78],"madd_muttasil":[41,43],"hamzat_wasl":[15,16,48,49,60,61,70,71]},
+"5": {"ghunnah":[19,22,44,47],"iqlab":[103,108],"lam_shamsiyyah":[29,30,205,206],"madd_2":[38,39,160,161,209,210],"madd_246":[214,215],"silent":[25,27,149,151],"hamzat_wasl":[7,8,28,29,75,76,121,122,131,132,164,165,174,175,194,195,204,205]},
+"6": {"ghunnah":[55,58,96,99,109,112],"ikhfa":[40,44,86,90,129,133,133,136],"lam_shamsiyyah":[95,96],"madd_2":[141,142],"madd_246":[146,147],"madd_munfasil":[7,9,33,35],"madd_muttasil":[71,73],"silent":[35,37,114,116],"hamzat_wasl":[18,19,94,95,117,118]},
+"7": {"ghunnah":[12,15],"iqlab":[29,34,77,81],"lam_shamsiyyah":[83,84],"madd_2":[87,88],"madd_246":[92,93],"madd_munfasil":[21,23],"hamzat_wasl":[63,64,82,83]},
+"8": {"ghunnah":[7,10,51,54,73,76],"ikhfa":[151,154],"ikhfa_shafawi":[141,145],"lam_shamsiyyah":[116,117],"madd_2":[56,57,62,63,97,98,122,123],"madd_246":[165,166],"hamzat_wasl":[11,12,21,22,103,104,115,116]},
+"9": {"ikhfa":[166,170,170,173],"idghaam_ghunnah":[64,68],"idghaam_no_ghunnah":[154,159],"lam_shamsiyyah":[51,52],"madd_2":[58,59,141,142],"madd_246":[184,185],"madd_munfasil":[2,4,30,32],"silent":[32,34,57,58,94,96,126,128],"hamzat_wasl":[13,14,73,74,87,88,111,112,129,130]},
+"10": {"ikhfa":[32,35,72,76],"idghaam_no_ghunnah":[116,122],"lam_shamsiyyah":[18,19],"madd_2":[25,26],"madd_246":[140,141],"qalqalah":[60,62],"silent":[24,25,40,42,67,69,99,101],"hamzat_wasl":[17,18,31,32,47,48,59,60,81,82,91,92,102,103]},
+"11": {"ikhfa":[41,44,81,86,95,98],"idghaam_ghunnah":[112,117],"lam_shamsiyyah":[121,122,138,139,168,169],"madd_2":[21,22,144,145,172,173],"madd_246":[177,178],"madd_munfasil":[47,49],"madd_muttasil":[76,78],"silent":[14,16,49,51],"hamzat_wasl":[40,41,99,100,120,121,137,138,152,153,167,168]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/63.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/63.json
index d18bcae..8c25934 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/63.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/63.json
@@ -1,13 +1,13 @@
{
-"1": {"ghunnah":[90,93,135,138,175,178],"madd":[47,49,61,62,152,153,186,187,199,200,204,205],"silent":[76,78],"wasl":[54,55,106,107,116,117,156,157,179,180]},
-"2": {"ghunnah":[29,32,33,37,48,52,68,71],"madd":[8,10,19,20,78,80,104,105],"silent":[10,12,43,45,93,95],"wasl":[58,59]},
-"3": {"ghunnah":[12,15,33,36],"madd":[2,3,94,95],"silent":[28,30,44,46]},
-"4": {"ghunnah":[89,92,109,112,207,210],"idgham":[50,54,102,107,115,119],"madd":[187,188,221,222],"qalqalah":[34,36],"silent":[60,62],"wasl":[160,161,173,174,197,198]},
-"5": {"idgham":[121,126],"madd":[136,137],"silent":[30,32,76,78],"wasl":[61,62]},
-"6": {"ghunnah":[102,105],"idgham":[74,78],"madd":[4,6,141,142,146,147],"wasl":[85,86,106,107,126,127,136,137]},
-"7": {"ghunnah":[32,35,55,58,85,88,149,152],"idgham":[117,118],"madd":[109,111,123,124,126,127,146,147,160,161,181,182],"silent":[38,40,92,94],"wasl":[5,6,67,68,116,117,132,133,153,154]},
-"8": {"ghunnah":[58,61,153,156],"idgham":[15,20],"madd":[26,28,126,127,150,151,164,165,185,186],"wasl":[35,36,62,63,81,82,102,103,157,158]},
-"9": {"ghunnah":[86,90],"idgham":[107,111],"madd":[2,4,55,56,67,69,76,77,120,121,134,136,151,152,156,157],"silent":[31,33,130,132],"wasl":[13,14,95,96,146,147]},
-"10": {"ghunnah":[4,7,38,42,133,137,141,145],"idgham":[15,20,33,38,49,53,162,167,171,172],"madd":[30,31,103,105,117,119,124,127,175,176,180,181],"qalqalah":[26,28,42,44],"silent":[10,12],"wasl":[71,72,170,171]},
-"11": {"ghunnah":[71,75],"idgham":[4,8],"madd":[40,42,88,89],"wasl":[16,17,57,58]}
+"1": {"ghunnah":[90,93,135,138,175,178],"madd_2":[61,62,152,153,186,187,199,200],"madd_246":[204,205],"madd_muttasil":[47,49],"silent":[76,78],"hamzat_wasl":[54,55,106,107,116,117,156,157,179,180]},
+"2": {"ghunnah":[29,32,68,71],"ikhfa":[33,37,48,52],"madd_2":[19,20],"madd_246":[104,105],"madd_munfasil":[8,10],"madd_muttasil":[78,80],"silent":[10,12,43,45,93,95],"hamzat_wasl":[58,59]},
+"3": {"ghunnah":[12,15,33,36],"madd_2":[2,3],"madd_246":[94,95],"silent":[28,30,44,46]},
+"4": {"ghunnah":[89,92,109,112,207,210],"idghaam_ghunnah":[50,54,102,107,115,119],"madd_2":[187,188],"madd_246":[221,222],"qalqalah":[34,36],"silent":[60,62],"hamzat_wasl":[160,161,173,174,197,198]},
+"5": {"idghaam_shafawi":[121,126],"madd_246":[136,137],"silent":[30,32,76,78],"hamzat_wasl":[61,62]},
+"6": {"ghunnah":[102,105],"idghaam_ghunnah":[74,78],"madd_2":[141,142],"madd_246":[146,147],"madd_muttasil":[4,6],"hamzat_wasl":[85,86,106,107,126,127,136,137]},
+"7": {"ghunnah":[149,152],"ikhfa":[32,35,55,58,85,88],"lam_shamsiyyah":[117,118],"madd_2":[123,124,126,127,146,147,160,161],"madd_246":[181,182],"madd_muttasil":[109,111],"silent":[38,40,92,94],"hamzat_wasl":[5,6,67,68,116,117,132,133,153,154]},
+"8": {"ghunnah":[58,61,153,156],"idghaam_no_ghunnah":[15,20],"madd_2":[126,127,150,151,164,165],"madd_246":[185,186],"madd_munfasil":[26,28],"hamzat_wasl":[35,36,62,63,81,82,102,103,157,158]},
+"9": {"ikhfa":[86,90],"idghaam_ghunnah":[107,111],"madd_2":[55,56,76,77,120,121,151,152],"madd_246":[156,157],"madd_munfasil":[2,4,67,69],"madd_muttasil":[134,136],"silent":[31,33,130,132],"hamzat_wasl":[13,14,95,96,146,147]},
+"10": {"ikhfa":[4,7,38,42,133,137,141,145],"idghaam_ghunnah":[15,20,49,53,162,167],"idghaam_shafawi":[33,38],"lam_shamsiyyah":[171,172],"madd_2":[30,31,175,176],"madd_246":[180,181],"madd_munfasil":[103,105,117,119,124,127],"qalqalah":[26,28,42,44],"silent":[10,12],"hamzat_wasl":[71,72,170,171]},
+"11": {"iqlab":[71,75],"idghaam_ghunnah":[4,8],"madd_246":[88,89],"madd_muttasil":[40,42],"hamzat_wasl":[16,17,57,58]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/64.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/64.json
index c6d8ed7..867b96b 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/64.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/64.json
@@ -1,20 +1,20 @@
{
-"1": {"ghunnah":[156,160],"idgham":[66,67],"madd":[72,73,75,76,162,163],"wasl":[65,66,89,90,104,105,121,122]},
-"2": {"ghunnah":[28,31,46,49],"idgham":[40,44,49,54,59,63],"madd":[93,94],"wasl":[5,6,63,64]},
-"3": {"idgham":[8,9],"madd":[14,15,17,18,98,99],"wasl":[7,8,23,24,35,36,91,92]},
-"4": {"ghunnah":[103,107],"idgham":[18,19,115,116],"madd":[24,25,27,28,121,122],"wasl":[17,18,33,34,89,90,114,115]},
-"5": {"ghunnah":[49,53],"madd":[109,110],"qalqalah":[53,55],"silent":[24,26,44,46,66,68],"wasl":[27,28]},
-"6": {"ghunnah":[12,15,47,51],"idgham":[84,88],"madd":[2,3,17,18,61,62,72,74,168,169],"qalqalah":[169,170],"silent":[74,76,108,110,121,123],"wasl":[51,52,127,128,138,139,148,149]},
-"7": {"ghunnah":[80,83,86,89,101,104],"idgham":[30,35,35,39],"madd":[23,25,126,127,150,151],"qalqalah":[39,41,74,76],"silent":[25,27,46,48],"wasl":[7,8,138,139]},
-"8": {"ghunnah":[41,44,59,62],"idgham":[40,41],"madd":[35,36,54,56,100,101],"silent":[11,13],"wasl":[16,17,39,40,48,49,70,71]},
-"9": {"ghunnah":[80,83,159,162,164,168,176,180,225,230],"idgham":[55,56,71,75,109,114],"madd":[41,42,105,106,142,143,162,163,197,198,203,204,217,219,230,231,253,254],"qalqalah":[9,11,148,150,168,170],"wasl":[29,30,54,55,84,85,188,189,236,237,246,247]},
-"10": {"ghunnah":[76,79],"idgham":[75,76],"madd":[43,44,48,50,57,59,70,71,85,86,117,118],"silent":[19,21,32,34,53,55],"wasl":[2,3,74,75,110,111]},
-"11": {"ghunnah":[65,68],"idgham":[15,20,56,60],"madd":[2,4,92,93,123,124],"wasl":[44,45,69,70,96,97]},
-"12": {"ghunnah":[49,53,69,72],"idgham":[35,36],"madd":[101,102,112,113],"silent":[10,12,31,33],"wasl":[13,14,34,35,94,95,105,106]},
-"13": {"madd":[10,12,17,18,76,77],"wasl":[41,42,65,66]},
-"14": {"ghunnah":[37,40,112,116,156,159],"idgham":[82,88,174,179],"madd":[2,4,30,32,52,53,68,69,181,182],"silent":[32,34,121,123,135,137,149,151],"wasl":[13,14,95,96,160,161]},
-"15": {"ghunnah":[2,5,61,64],"idgham":[47,51],"madd":[7,9,16,17,32,33,66,68,80,81],"qalqalah":[71,73],"wasl":[51,52]},
-"16": {"ghunnah":[68,71,90,93],"idgham":[82,88,104,108],"madd":[126,127,136,138,159,160],"silent":[9,11,48,50,61,63,74,76,132,134],"wasl":[2,3,12,13,24,25,40,41,148,149]},
-"17": {"ghunnah":[2,6],"idgham":[37,42],"madd":[44,45,99,100],"qalqalah":[6,8],"silent":[13,15],"wasl":[16,17,79,80]},
-"18": {"idgham":[21,22],"madd":[2,3,27,28,51,52],"wasl":[8,9,20,21,33,34,44,45]}
+"1": {"ikhfa":[156,160],"lam_shamsiyyah":[66,67],"madd_2":[72,73,75,76],"madd_246":[162,163],"hamzat_wasl":[65,66,89,90,104,105,121,122]},
+"2": {"ikhfa":[28,31,46,49],"idghaam_ghunnah":[40,44,59,63],"idghaam_shafawi":[49,54],"madd_246":[93,94],"hamzat_wasl":[5,6,63,64]},
+"3": {"lam_shamsiyyah":[8,9],"madd_2":[14,15,17,18],"madd_246":[98,99],"hamzat_wasl":[7,8,23,24,35,36,91,92]},
+"4": {"iqlab":[103,107],"lam_shamsiyyah":[18,19,115,116],"madd_2":[24,25,27,28],"madd_246":[121,122],"hamzat_wasl":[17,18,33,34,89,90,114,115]},
+"5": {"ikhfa":[49,53],"madd_246":[109,110],"qalqalah":[53,55],"silent":[24,26,44,46,66,68],"hamzat_wasl":[27,28]},
+"6": {"ghunnah":[12,15],"ikhfa_shafawi":[47,51],"idghaam_ghunnah":[84,88],"madd_2":[2,3,17,18,61,62],"madd_246":[168,169],"madd_munfasil":[72,74],"qalqalah":[169,170],"silent":[74,76,108,110,121,123],"hamzat_wasl":[51,52,127,128,138,139,148,149]},
+"7": {"ghunnah":[80,83,86,89,101,104],"idghaam_ghunnah":[35,39],"idghaam_no_ghunnah":[30,35],"madd_2":[126,127],"madd_246":[150,151],"madd_munfasil":[23,25],"qalqalah":[39,41,74,76],"silent":[25,27,46,48],"hamzat_wasl":[7,8,138,139]},
+"8": {"ghunnah":[41,44],"ikhfa":[59,62],"lam_shamsiyyah":[40,41],"madd_2":[35,36],"madd_246":[100,101],"madd_munfasil":[54,56],"silent":[11,13],"hamzat_wasl":[16,17,39,40,48,49,70,71]},
+"9": {"ghunnah":[159,162],"ikhfa":[164,168,176,180,225,230],"iqlab":[80,83],"idghaam_ghunnah":[71,75,109,114],"lam_shamsiyyah":[55,56],"madd_2":[41,42,105,106,142,143,162,163,197,198,203,204,230,231],"madd_246":[253,254],"madd_munfasil":[217,219],"qalqalah":[9,11,148,150,168,170],"hamzat_wasl":[29,30,54,55,84,85,188,189,236,237,246,247]},
+"10": {"ghunnah":[76,79],"lam_shamsiyyah":[75,76],"madd_2":[43,44,70,71,85,86],"madd_246":[117,118],"madd_munfasil":[48,50],"madd_muttasil":[57,59],"silent":[19,21,32,34,53,55],"hamzat_wasl":[2,3,74,75,110,111]},
+"11": {"iqlab":[65,68],"idghaam_ghunnah":[15,20,56,60],"madd_2":[92,93],"madd_246":[123,124],"madd_munfasil":[2,4],"hamzat_wasl":[44,45,69,70,96,97]},
+"12": {"ghunnah":[69,72],"ikhfa":[49,53],"lam_shamsiyyah":[35,36],"madd_2":[101,102],"madd_246":[112,113],"silent":[10,12,31,33],"hamzat_wasl":[13,14,34,35,94,95,105,106]},
+"13": {"madd_2":[17,18],"madd_246":[76,77],"madd_munfasil":[10,12],"hamzat_wasl":[41,42,65,66]},
+"14": {"ghunnah":[37,40,156,159],"ikhfa":[112,116],"idghaam_no_ghunnah":[82,88,174,179],"madd_2":[52,53,68,69],"madd_246":[181,182],"madd_munfasil":[2,4,30,32],"silent":[32,34,121,123,135,137,149,151],"hamzat_wasl":[13,14,95,96,160,161]},
+"15": {"ghunnah":[2,5],"ikhfa":[61,64],"idghaam_ghunnah":[47,51],"madd_2":[16,17,32,33],"madd_246":[80,81],"madd_munfasil":[7,9,66,68],"qalqalah":[71,73],"hamzat_wasl":[51,52]},
+"16": {"ikhfa":[68,71,90,93],"idghaam_ghunnah":[104,108],"idghaam_no_ghunnah":[82,88],"madd_2":[126,127],"madd_246":[159,160],"madd_muttasil":[136,138],"silent":[9,11,48,50,61,63,74,76,132,134],"hamzat_wasl":[2,3,12,13,24,25,40,41,148,149]},
+"17": {"ikhfa":[2,6],"idghaam_ghunnah":[37,42],"madd_2":[44,45],"madd_246":[99,100],"qalqalah":[6,8],"silent":[13,15],"hamzat_wasl":[16,17,79,80]},
+"18": {"lam_shamsiyyah":[21,22],"madd_2":[2,3,27,28],"madd_246":[51,52],"hamzat_wasl":[8,9,20,21,33,34,44,45]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/65.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/65.json
index 49acd4b..40f290d 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/65.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/65.json
@@ -1,14 +1,14 @@
{
-"1": {"ghunnah":[54,57,83,86,105,108,120,123,192,195,199,202,210,213],"idgham":[53,54,82,83,241,245,263,268,276,280,307,311],"madd":[41,43,88,90,236,238,257,258,357,358,405,406],"qalqalah":[74,76,226,228,339,341,365,367],"silent":[133,135,156,158],"wasl":[52,53,81,82,136,137,149,150,159,160,295,296,327,328,379,380]},
-"2": {"ghunnah":[25,28,42,45,73,76,120,123,186,190],"idgham":[87,91,115,120,140,141,240,244],"madd":[146,147,162,163,182,183,271,272],"qalqalah":[112,114,260,262],"silent":[100,102,136,138],"wasl":[139,140,205,206,215,216,225,226,250,251]},
-"3": {"ghunnah":[92,95,155,159],"idgham":[44,48],"madd":[87,89,106,107,120,121],"qalqalah":[8,10,124,126,159,161],"wasl":[64,65,96,97,134,135]},
-"4": {"ghunnah":[84,87,167,170,192,195],"idgham":[40,45,105,109,173,177,200,204],"madd":[6,8,47,49,92,93,113,115,142,143,231,232,246,247],"qalqalah":[66,68,220,222],"silent":[138,140],"wasl":[2,3,27,28,61,62,109,110,146,147,210,211]},
-"5": {"ghunnah":[25,28],"idgham":[50,54],"madd":[2,3,32,34,98,99,115,117],"qalqalah":[120,122],"wasl":[15,16,60,61]},
-"6": {"ghunnah":[11,14,31,34,70,73,97,100,105,109,109,112,128,132,134,137,151,154,180,183,220,223,233,236,259,263,277,281],"idgham":[34,39,39,43,271,275],"madd":[119,120,310,312],"madd-lazim":[62,64],"qalqalah":[43,45],"silent":[86,88,115,117,140,142,248,250]},
-"7": {"ghunnah":[4,7,24,28,40,44,74,77,82,85],"idgham":[19,24,190,194],"madd":[34,35,66,67,85,87,94,95,145,147,154,155],"qalqalah":[7,9,77,79,163,165],"wasl":[98,99,120,121,170,171]},
-"8": {"ghunnah":[14,18,87,92],"idgham":[9,14,96,101,121,127],"madd":[63,64,76,77,110,111],"qalqalah":[72,74,106,108]},
-"9": {"madd":[38,39]},
-"10": {"ghunnah":[29,34,38,43,114,117],"madd":[63,65,82,83],"qalqalah":[109,111],"silent":[50,52,67,69,104,106],"wasl":[8,9,43,44,53,54,73,74,86,87,120,121]},
-"11": {"ghunnah":[146,149,166,169,211,214,216,220,228,232,277,282],"idgham":[7,12,59,64,107,108,126,127,145,146,157,161,195,200],"madd":[36,37,57,58,111,112,116,117,134,135,191,192,214,215,249,250,255,256,269,271,306,307],"qalqalah":[200,202,220,222,282,284],"silent":[17,19,91,93,103,105],"wasl":[40,41,73,74,106,107,125,126,144,145,170,171,240,241,294,295]},
-"12": {"ghunnah":[66,69,100,103,121,124,151,155,165,168],"idgham":[39,43,159,163],"madd":[34,35,37,38,114,116],"qalqalah":[25,27,179,181],"silent":[116,118],"wasl":[8,9,48,49,82,83,125,126,169,170]}
+"1": {"ghunnah":[54,57,83,86,105,108,120,123,192,195,210,213],"iqlab":[199,202],"idghaam_ghunnah":[241,245,263,268,276,280,307,311],"lam_shamsiyyah":[53,54,82,83],"madd_2":[257,258,357,358,405,406],"madd_munfasil":[41,43,236,238],"madd_muttasil":[88,90],"qalqalah":[74,76,226,228,339,341,365,367],"silent":[133,135,156,158],"hamzat_wasl":[52,53,81,82,136,137,149,150,159,160,295,296,327,328,379,380]},
+"2": {"ghunnah":[25,28,42,45,73,76],"ikhfa":[120,123,186,190],"idghaam_ghunnah":[87,91,115,120,240,244],"lam_shamsiyyah":[140,141],"madd_2":[146,147,162,163,182,183,271,272],"qalqalah":[112,114,260,262],"silent":[100,102,136,138],"hamzat_wasl":[139,140,205,206,215,216,225,226,250,251]},
+"3": {"ghunnah":[92,95],"ikhfa":[155,159],"idghaam_ghunnah":[44,48],"madd_2":[106,107,120,121],"madd_munfasil":[87,89],"qalqalah":[8,10,124,126,159,161],"hamzat_wasl":[64,65,96,97,134,135]},
+"4": {"ghunnah":[84,87,167,170,192,195],"idghaam_ghunnah":[40,45,105,109,173,177,200,204],"madd_2":[92,93,142,143,231,232,246,247],"madd_muttasil":[6,8,47,49,113,115],"qalqalah":[66,68,220,222],"silent":[138,140],"hamzat_wasl":[2,3,27,28,61,62,109,110,146,147,210,211]},
+"5": {"ikhfa":[25,28],"idghaam_ghunnah":[50,54],"madd_2":[2,3,98,99],"madd_munfasil":[32,34,115,117],"qalqalah":[120,122],"hamzat_wasl":[15,16,60,61]},
+"6": {"ghunnah":[11,14,70,73,97,100,109,112,151,154,180,183,220,223,233,236],"ikhfa":[31,34,105,109,128,132,134,137,277,281],"ikhfa_shafawi":[259,263],"idghaam_ghunnah":[39,43,271,275],"idghaam_shafawi":[34,39],"madd_2":[119,120],"madd_munfasil":[310,312],"madd_6":[62,64],"qalqalah":[43,45],"silent":[86,88,115,117,140,142,248,250]},
+"7": {"ghunnah":[82,85],"ikhfa":[4,7,24,28,40,44,74,77],"idghaam_ghunnah":[19,24,190,194],"madd_2":[34,35,66,67,94,95,154,155],"madd_munfasil":[85,87,145,147],"qalqalah":[7,9,77,79,163,165],"hamzat_wasl":[98,99,120,121,170,171]},
+"8": {"ikhfa":[14,18,87,92],"idghaam_ghunnah":[9,14,96,101,121,127],"madd_2":[63,64,76,77,110,111],"qalqalah":[72,74,106,108]},
+"9": {"madd_2":[38,39]},
+"10": {"ikhfa":[29,34,38,43,114,117],"madd_2":[82,83],"madd_munfasil":[63,65],"qalqalah":[109,111],"silent":[50,52,67,69,104,106],"hamzat_wasl":[8,9,43,44,53,54,73,74,86,87,120,121]},
+"11": {"ghunnah":[146,149,211,214],"ikhfa":[216,220,228,232,277,282],"iqlab":[166,169],"idghaam_ghunnah":[7,12,157,161,195,200],"idghaam_no_ghunnah":[59,64],"lam_shamsiyyah":[107,108,126,127,145,146],"madd_2":[36,37,57,58,111,112,116,117,134,135,191,192,214,215,249,250,255,256,306,307],"madd_munfasil":[269,271],"qalqalah":[200,202,220,222,282,284],"silent":[17,19,91,93,103,105],"hamzat_wasl":[40,41,73,74,106,107,125,126,144,145,170,171,240,241,294,295]},
+"12": {"ghunnah":[66,69,100,103,121,124,165,168],"ikhfa":[151,155],"idghaam_ghunnah":[39,43,159,163],"madd_2":[34,35,37,38],"madd_munfasil":[114,116],"qalqalah":[25,27,179,181],"silent":[116,118],"hamzat_wasl":[8,9,48,49,82,83,125,126,169,170]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/66.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/66.json
index 2299a70..9958cca 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/66.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/66.json
@@ -1,14 +1,14 @@
{
-"1": {"ghunnah":[54,57],"idgham":[53,54,152,157],"madd":[41,43,80,82,130,131,159,160],"qalqalah":[106,108],"wasl":[52,53,91,92,138,139]},
-"2": {"madd":[43,44,68,69,99,100],"qalqalah":[2,4],"wasl":[12,13,53,54,81,82,92,93]},
-"3": {"ghunnah":[17,20,59,64,66,69,149,152,156,160,162,165,200,202],"idgham":[16,17],"madd":[46,47,51,52,85,86,133,134,182,183,210,211,251,252],"wasl":[15,16,100,101,233,234,244,245]},
-"4": {"ghunnah":[2,6,59,63,85,88],"madd":[11,13,65,66,109,110,129,130,159,161,177,178,187,188],"qalqalah":[32,34,117,119],"wasl":[20,21,89,90,135,136,152,153]},
-"5": {"ghunnah":[19,23,30,33,73,76,76,79,103,107,114,118,137,141,149,153],"idgham":[36,40,67,73,90,95,160,164],"madd":[14,16,48,50,57,58,88,89,101,102,107,108,112,113,118,120,124,125,130,131,135,136,141,143,147,148,158,159],"qalqalah":[40,42,166,168]},
-"6": {"ghunnah":[43,46,87,90,138,142],"idgham":[71,76,86,87,146,151],"madd":[2,4,36,38,123,125,173,175,213,214],"silent":[31,33,38,40],"wasl":[13,14,85,86,96,97,163,164]},
-"7": {"ghunnah":[63,66,87,90],"madd":[2,4,101,102],"qalqalah":[72,74],"silent":[30,32,48,50],"wasl":[13,14,51,52]},
-"8": {"ghunnah":[110,113,149,152,154,158,166,170,220,223,380,383,404,408],"idgham":[65,70,96,100,219,220],"madd":[2,4,39,41,152,153,187,188,258,259,308,309,334,336,375,377,410,411],"qalqalah":[136,138,158,160],"silent":[31,33,41,43,249,251],"wasl":[13,14,50,51,178,179,210,211,218,219,231,232,363,364]},
-"9": {"ghunnah":[15,18,102,105],"idgham":[14,15],"madd":[2,4,26,27,53,54,92,93,124,125],"wasl":[13,14,32,33,46,47,64,65,117,118]},
-"10": {"ghunnah":[77,81,218,221],"idgham":[20,26,59,63,196,201,217,218,231,232],"madd":[124,125,235,236,240,241],"qalqalah":[97,99,208,210],"silent":[42,44],"wasl":[7,8,45,46,63,64,182,183,207,208,216,217,230,231]},
-"11": {"ghunnah":[100,103,111,116,123,126,142,146],"idgham":[22,28,194,195],"madd":[165,166,198,199,203,204],"qalqalah":[89,91],"silent":[45,47],"wasl":[9,10,48,49,88,89,118,119,183,184,193,194]},
-"12": {"idgham":[79,84],"madd":[25,26,35,37,111,112,134,135,156,157,161,162],"qalqalah":[12,14],"wasl":[11,12,29,30,151,152]}
+"1": {"ghunnah":[54,57],"idghaam_no_ghunnah":[152,157],"lam_shamsiyyah":[53,54],"madd_2":[130,131],"madd_246":[159,160],"madd_munfasil":[41,43,80,82],"qalqalah":[106,108],"hamzat_wasl":[52,53,91,92,138,139]},
+"2": {"madd_2":[43,44,68,69],"madd_246":[99,100],"qalqalah":[2,4],"hamzat_wasl":[12,13,53,54,81,82,92,93]},
+"3": {"ghunnah":[17,20,66,69,162,165],"ikhfa":[59,64,156,160],"iqlab":[149,152,200,202],"lam_shamsiyyah":[16,17],"madd_2":[46,47,51,52,85,86,133,134,182,183,210,211],"madd_246":[251,252],"hamzat_wasl":[15,16,100,101,233,234,244,245]},
+"4": {"ghunnah":[85,88],"ikhfa":[2,6,59,63],"madd_2":[65,66,109,110,129,130,177,178],"madd_246":[187,188],"madd_munfasil":[11,13],"madd_muttasil":[159,161],"qalqalah":[32,34,117,119],"hamzat_wasl":[20,21,89,90,135,136,152,153]},
+"5": {"ghunnah":[30,33,76,79],"ikhfa":[19,23,73,76,103,107,114,118,137,141,149,153],"idghaam_ghunnah":[36,40,67,73,90,95,160,164],"madd_2":[57,58,88,89,101,102,107,108,112,113,124,125,130,131,135,136,147,148,158,159],"madd_munfasil":[14,16,48,50],"madd_muttasil":[118,120,141,143],"qalqalah":[40,42,166,168]},
+"6": {"ghunnah":[87,90],"ikhfa":[43,46,138,142],"idghaam_ghunnah":[71,76],"idghaam_no_ghunnah":[146,151],"lam_shamsiyyah":[86,87],"madd_246":[213,214],"madd_munfasil":[2,4,36,38,173,175],"madd_muttasil":[123,125],"silent":[31,33,38,40],"hamzat_wasl":[13,14,85,86,96,97,163,164]},
+"7": {"ghunnah":[63,66],"ikhfa":[87,90],"madd_246":[101,102],"madd_munfasil":[2,4],"qalqalah":[72,74],"silent":[30,32,48,50],"hamzat_wasl":[13,14,51,52]},
+"8": {"ghunnah":[149,152,220,223,380,383],"ikhfa":[110,113,154,158,166,170,404,408],"idghaam_ghunnah":[65,70,96,100],"lam_shamsiyyah":[219,220],"madd_2":[152,153,187,188,258,259,308,309],"madd_246":[410,411],"madd_munfasil":[2,4,39,41,334,336,375,377],"qalqalah":[136,138,158,160],"silent":[31,33,41,43,249,251],"hamzat_wasl":[13,14,50,51,178,179,210,211,218,219,231,232,363,364]},
+"9": {"ghunnah":[15,18,102,105],"lam_shamsiyyah":[14,15],"madd_2":[26,27,53,54,92,93],"madd_246":[124,125],"madd_munfasil":[2,4],"hamzat_wasl":[13,14,32,33,46,47,64,65,117,118]},
+"10": {"ghunnah":[218,221],"ikhfa":[77,81],"idghaam_ghunnah":[59,63,196,201],"idghaam_no_ghunnah":[20,26],"lam_shamsiyyah":[217,218,231,232],"madd_2":[124,125,235,236],"madd_246":[240,241],"qalqalah":[97,99,208,210],"silent":[42,44],"hamzat_wasl":[7,8,45,46,63,64,182,183,207,208,216,217,230,231]},
+"11": {"ghunnah":[123,126],"ikhfa":[100,103,111,116,142,146],"idghaam_no_ghunnah":[22,28],"lam_shamsiyyah":[194,195],"madd_2":[165,166,198,199],"madd_246":[203,204],"qalqalah":[89,91],"silent":[45,47],"hamzat_wasl":[9,10,48,49,88,89,118,119,183,184,193,194]},
+"12": {"idghaam_no_ghunnah":[79,84],"madd_2":[25,26,111,112,134,135,156,157],"madd_246":[161,162],"madd_munfasil":[35,37],"qalqalah":[12,14],"hamzat_wasl":[11,12,29,30,151,152]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/67.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/67.json
index 659dbaa..cb8bc58 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/67.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/67.json
@@ -1,32 +1,32 @@
{
-"1": {"ghunnah":[101,105],"madd":[43,44,107,108],"wasl":[49,50,66,67]},
-"2": {"idgham":[78,83],"madd":[35,36,106,107],"qalqalah":[43,45],"silent":[34,35],"wasl":[15,16,27,28,88,89,99,100]},
-"3": {"ghunnah":[31,35,80,84,90,94,126,130],"idgham":[39,45,66,67],"madd":[26,27,29,30,74,75,86,87,132,133],"qalqalah":[17,19],"wasl":[65,66,94,95,102,103]},
-"4": {"ghunnah":[2,5,38,41],"idgham":[71,76],"madd":[85,86],"qalqalah":[43,45],"wasl":[6,7,14,15,55,56]},
-"5": {"ghunnah":[14,17],"idgham":[20,21,32,33,76,82,82,83,125,126],"madd":[26,28,48,49,65,66,88,89,131,132],"qalqalah":[6,8,103,105],"wasl":[19,20,31,32,124,125]},
-"6": {"ghunnah":[47,50],"madd":[69,70],"silent":[20,22],"wasl":[62,63]},
-"7": {"idgham":[46,51],"madd":[4,6,60,61],"silent":[14,16,31,33]},
-"8": {"ghunnah":[64,68],"madd":[40,42,87,89,112,113],"wasl":[23,24]},
-"9": {"ghunnah":[37,41,84,88,100,103,123,127],"madd":[23,25,121,122,129,130],"qalqalah":[18,20,46,48],"silent":[6,8],"wasl":[74,75]},
-"10": {"ghunnah":[18,21,52,55],"idgham":[73,74],"madd":[59,61,68,69,79,80],"silent":[8,10],"wasl":[72,73]},
-"11": {"ghunnah":[20,22],"idgham":[35,41,52,53],"madd":[47,48,58,59],"silent":[12,14],"wasl":[2,3,51,52]},
-"12": {"ghunnah":[2,5,34,38,73,77],"idgham":[52,57,64,68],"madd":[79,80],"qalqalah":[70,72],"wasl":[6,7,38,39]},
-"13": {"ghunnah":[49,52,62,66],"idgham":[74,75],"madd":[44,46,54,55,80,81],"qalqalah":[30,32],"silent":[10,12,37,39],"wasl":[29,30,73,74]},
-"14": {"idgham":[35,36],"madd":[52,53],"wasl":[34,35,45,46]},
-"15": {"ghunnah":[43,48,112,115],"idgham":[86,91,111,112],"madd":[97,98,117,118],"silent":[54,56,81,83],"wasl":[5,6,27,28,48,49,110,111]},
-"16": {"ghunnah":[6,9,14,18],"idgham":[9,14,21,22,34,38],"madd":[27,29,79,80],"wasl":[20,21,52,53]},
-"17": {"ghunnah":[9,12,17,21,65,70],"idgham":[12,17,24,25,37,41],"madd":[30,32,95,96],"wasl":[23,24]},
-"18": {"ghunnah":[29,33],"madd":[61,62],"qalqalah":[6,8,33,35],"wasl":[17,18]},
-"19": {"ghunnah":[83,86,109,112,129,133],"idgham":[25,26,54,58,95,96],"madd":[52,53,103,104,114,115,136,137],"madd-lazim":[47,49],"qalqalah":[60,62],"silent":[15,17],"wasl":[24,25,94,95]},
-"20": {"ghunnah":[2,5,30,33,44,47,56,60],"idgham":[32,37,51,56,65,66],"madd":[10,11,73,74,87,88,111,112],"wasl":[15,16,64,65,82,83]},
-"21": {"ghunnah":[2,5],"idgham":[84,88],"madd":[10,11,58,59,92,93],"silent":[71,73],"wasl":[15,16]},
-"22": {"ghunnah":[55,58],"idgham":[6,10,58,62,90,95],"madd":[40,42,49,52,88,89,101,102],"qalqalah":[34,36]},
-"23": {"ghunnah":[21,24],"idgham":[48,49,95,101],"madd":[16,18,68,69,111,112],"qalqalah":[64,66],"wasl":[10,11,47,48,59,60,74,75]},
-"24": {"madd":[62,63],"wasl":[10,11,33,34]},
-"25": {"ghunnah":[39,43,43,46],"madd":[22,23,51,52,56,57],"wasl":[27,28]},
-"26": {"ghunnah":[7,10,26,29,42,45],"idgham":[63,68],"madd":[47,49,70,71],"wasl":[14,15,30,31]},
-"27": {"ghunnah":[4,7,25,29,90,93,93,97],"madd":[29,31,75,76,99,100,108,109],"silent":[62,64],"wasl":[45,46,80,81]},
-"28": {"idgham":[48,53,77,81],"madd":[92,93,118,119],"wasl":[36,37,87,88]},
-"29": {"ghunnah":[28,31],"idgham":[11,12,99,104],"madd":[19,20,37,38,97,98,106,107],"wasl":[10,11]},
-"30": {"ghunnah":[48,53,66,70],"idgham":[55,59,75,80],"madd":[34,36,72,74,82,83]}
+"1": {"ikhfa":[101,105],"madd_2":[43,44],"madd_246":[107,108],"hamzat_wasl":[49,50,66,67]},
+"2": {"idghaam_ghunnah":[78,83],"madd_2":[35,36],"madd_246":[106,107],"qalqalah":[43,45],"silent":[34,35],"hamzat_wasl":[15,16,27,28,88,89,99,100]},
+"3": {"ikhfa":[31,35,80,84,90,94,126,130],"idghaam_ghunnah":[39,45],"lam_shamsiyyah":[66,67],"madd_2":[26,27,29,30,74,75,86,87],"madd_246":[132,133],"qalqalah":[17,19],"hamzat_wasl":[65,66,94,95,102,103]},
+"4": {"ghunnah":[2,5],"ikhfa":[38,41],"idghaam_ghunnah":[71,76],"madd_246":[85,86],"qalqalah":[43,45],"hamzat_wasl":[6,7,14,15,55,56]},
+"5": {"ghunnah":[14,17],"idghaam_no_ghunnah":[76,82],"lam_shamsiyyah":[20,21,32,33,82,83,125,126],"madd_2":[48,49,65,66,88,89],"madd_246":[131,132],"madd_muttasil":[26,28],"qalqalah":[6,8,103,105],"hamzat_wasl":[19,20,31,32,124,125]},
+"6": {"ghunnah":[47,50],"madd_246":[69,70],"silent":[20,22],"hamzat_wasl":[62,63]},
+"7": {"idghaam_ghunnah":[46,51],"madd_246":[60,61],"madd_munfasil":[4,6],"silent":[14,16,31,33]},
+"8": {"ikhfa":[64,68],"madd_246":[112,113],"madd_munfasil":[40,42,87,89],"hamzat_wasl":[23,24]},
+"9": {"ikhfa":[37,41,84,88,100,103,123,127],"madd_2":[121,122],"madd_246":[129,130],"madd_muttasil":[23,25],"qalqalah":[18,20,46,48],"silent":[6,8],"hamzat_wasl":[74,75]},
+"10": {"ghunnah":[18,21,52,55],"lam_shamsiyyah":[73,74],"madd_2":[68,69],"madd_246":[79,80],"madd_munfasil":[59,61],"silent":[8,10],"hamzat_wasl":[72,73]},
+"11": {"iqlab":[20,22],"idghaam_no_ghunnah":[35,41],"lam_shamsiyyah":[52,53],"madd_2":[47,48],"madd_246":[58,59],"silent":[12,14],"hamzat_wasl":[2,3,51,52]},
+"12": {"ghunnah":[2,5],"ikhfa":[73,77],"ikhfa_shafawi":[34,38],"idghaam_ghunnah":[64,68],"idghaam_shafawi":[52,57],"madd_246":[79,80],"qalqalah":[70,72],"hamzat_wasl":[6,7,38,39]},
+"13": {"ghunnah":[49,52],"iqlab":[62,66],"lam_shamsiyyah":[74,75],"madd_2":[54,55],"madd_246":[80,81],"madd_munfasil":[44,46],"qalqalah":[30,32],"silent":[10,12,37,39],"hamzat_wasl":[29,30,73,74]},
+"14": {"lam_shamsiyyah":[35,36],"madd_246":[52,53],"hamzat_wasl":[34,35,45,46]},
+"15": {"ghunnah":[112,115],"ikhfa":[43,48],"idghaam_no_ghunnah":[86,91],"lam_shamsiyyah":[111,112],"madd_2":[97,98],"madd_246":[117,118],"silent":[54,56,81,83],"hamzat_wasl":[5,6,27,28,48,49,110,111]},
+"16": {"ikhfa":[6,9,14,18],"idghaam_ghunnah":[34,38],"idghaam_shafawi":[9,14],"lam_shamsiyyah":[21,22],"madd_246":[79,80],"madd_muttasil":[27,29],"hamzat_wasl":[20,21,52,53]},
+"17": {"ikhfa":[9,12,17,21,65,70],"idghaam_ghunnah":[37,41],"idghaam_shafawi":[12,17],"lam_shamsiyyah":[24,25],"madd_246":[95,96],"madd_muttasil":[30,32],"hamzat_wasl":[23,24]},
+"18": {"ikhfa":[29,33],"madd_246":[61,62],"qalqalah":[6,8,33,35],"hamzat_wasl":[17,18]},
+"19": {"ghunnah":[83,86,109,112],"iqlab":[129,133],"idghaam_ghunnah":[54,58],"lam_shamsiyyah":[25,26,95,96],"madd_2":[52,53,103,104,114,115],"madd_246":[136,137],"madd_6":[47,49],"qalqalah":[60,62],"silent":[15,17],"hamzat_wasl":[24,25,94,95]},
+"20": {"ghunnah":[2,5],"ikhfa":[30,33,44,47,56,60],"idghaam_no_ghunnah":[32,37],"idghaam_shafawi":[51,56],"lam_shamsiyyah":[65,66],"madd_2":[10,11,73,74,87,88],"madd_246":[111,112],"hamzat_wasl":[15,16,64,65,82,83]},
+"21": {"ghunnah":[2,5],"idghaam_ghunnah":[84,88],"madd_2":[10,11,58,59],"madd_246":[92,93],"silent":[71,73],"hamzat_wasl":[15,16]},
+"22": {"ghunnah":[55,58],"idghaam_ghunnah":[6,10,58,62,90,95],"madd_2":[88,89],"madd_246":[101,102],"madd_munfasil":[40,42,49,52],"qalqalah":[34,36]},
+"23": {"ikhfa":[21,24],"idghaam_ghunnah":[95,101],"lam_shamsiyyah":[48,49],"madd_2":[68,69],"madd_246":[111,112],"madd_munfasil":[16,18],"qalqalah":[64,66],"hamzat_wasl":[10,11,47,48,59,60,74,75]},
+"24": {"madd_246":[62,63],"hamzat_wasl":[10,11,33,34]},
+"25": {"ikhfa":[39,43,43,46],"madd_2":[22,23,51,52],"madd_246":[56,57],"hamzat_wasl":[27,28]},
+"26": {"ghunnah":[7,10,42,45],"ikhfa":[26,29],"idghaam_ghunnah":[63,68],"madd_246":[70,71],"madd_munfasil":[47,49],"hamzat_wasl":[14,15,30,31]},
+"27": {"ghunnah":[4,7],"ikhfa":[25,29,90,93],"ikhfa_shafawi":[93,97],"madd_2":[75,76,99,100],"madd_246":[108,109],"madd_muttasil":[29,31],"silent":[62,64],"hamzat_wasl":[45,46,80,81]},
+"28": {"idghaam_ghunnah":[48,53,77,81],"madd_2":[92,93],"madd_246":[118,119],"hamzat_wasl":[36,37,87,88]},
+"29": {"ghunnah":[28,31],"idghaam_ghunnah":[99,104],"lam_shamsiyyah":[11,12],"madd_2":[19,20,37,38,97,98],"madd_246":[106,107],"hamzat_wasl":[10,11]},
+"30": {"ikhfa":[48,53],"ikhfa_shafawi":[66,70],"idghaam_ghunnah":[55,59,75,80],"madd_246":[82,83],"madd_muttasil":[34,36,72,74]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/68.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/68.json
index bad4e01..9aea101 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/68.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/68.json
@@ -1,54 +1,54 @@
{
-"1": {"madd":[68,69],"madd-lazim":[39,41],"wasl":[44,45]},
-"2": {"ghunnah":[7,10],"madd":[2,4,38,39],"qalqalah":[34,36]},
-"3": {"ghunnah":[4,7],"madd":[36,37],"qalqalah":[17,19]},
-"4": {"ghunnah":[4,7],"madd":[30,31]},
-"5": {"madd":[23,24],"qalqalah":[6,8,17,19]},
-"6": {"madd":[22,23],"wasl":[13,14]},
-"7": {"ghunnah":[2,5,32,36,42,46],"madd":[53,54,84,85],"wasl":[73,74]},
-"8": {"madd":[25,26],"wasl":[13,14]},
-"9": {"madd":[33,34],"qalqalah":[16,18,27,29],"silent":[6,8]},
-"10": {"idgham":[26,31],"madd":[33,34]},
-"11": {"ghunnah":[2,5,18,22],"idgham":[7,12],"madd":[15,17,27,28]},
-"12": {"ghunnah":[3,6],"idgham":[8,13],"madd":[35,36]},
-"13": {"ghunnah":[6,10],"madd":[18,19,28,29]},
-"14": {"ghunnah":[2,6],"idgham":[18,22],"madd":[26,27]},
-"15": {"madd":[29,30,46,47,63,64],"wasl":[53,54]},
-"16": {"madd":[10,11,27,28],"wasl":[18,19]},
-"17": {"ghunnah":[2,5,53,56,86,89],"madd":[15,16,35,37,44,45,101,102],"qalqalah":[66,68],"silent":[73,75],"wasl":[48,49]},
-"18": {"madd":[16,17]},
-"19": {"idgham":[25,30,30,35],"madd":[20,22,50,52,56,57]},
-"20": {"idgham":[16,17],"madd":[22,23],"wasl":[15,16]},
-"21": {"madd":[22,23],"silent":[11,13]},
-"22": {"ghunnah":[34,38,38,41],"madd":[46,47,51,52],"silent":[11,13],"wasl":[5,6]},
-"23": {"ghunnah":[3,6],"madd":[27,28,32,33],"silent":[11,13],"wasl":[2,3]},
-"24": {"ghunnah":[17,20],"idgham":[2,7,42,47],"madd":[51,52],"qalqalah":[11,13],"wasl":[24,25]},
-"25": {"ghunnah":[23,27],"madd":[27,28,32,33],"silent":[8,10]},
-"26": {"ghunnah":[4,7,31,34],"madd":[24,26,45,46],"madd-lazim":[40,42],"silent":[26,28]},
-"27": {"madd":[21,22]},
-"28": {"madd":[57,58]},
-"29": {"ghunnah":[31,34,38,41],"madd":[15,16,26,28,45,46,50,51],"qalqalah":[11,13],"silent":[6,8]},
-"30": {"idgham":[34,38],"madd":[42,43,47,48],"qalqalah":[4,6]},
-"31": {"ghunnah":[25,28,32,35],"madd":[11,12,20,22,39,40,42,43],"silent":[6,8]},
-"32": {"ghunnah":[53,56],"idgham":[19,23,38,44],"madd":[14,16,48,50,56,58,77,78,82,83],"qalqalah":[23,25]},
-"33": {"madd":[4,5,77,78],"silent":[66,68],"wasl":[10,11,33,34]},
-"34": {"ghunnah":[2,5,23,26,39,42,48,51],"idgham":[47,48],"madd":[42,43,53,54],"wasl":[46,47]},
-"35": {"madd":[41,42],"qalqalah":[6,8,35,37],"wasl":[13,14,30,31]},
-"36": {"madd":[26,27]},
-"37": {"ghunnah":[18,22],"madd":[16,17,34,35],"qalqalah":[28,30]},
-"38": {"ghunnah":[2,5],"madd":[34,35]},
-"39": {"ghunnah":[71,74],"madd":[18,19,34,35,63,64,96,97],"wasl":[56,57]},
-"40": {"ghunnah":[16,20],"madd":[22,23,32,33]},
-"41": {"ghunnah":[56,60],"madd":[18,20,45,47,69,70,74,75],"silent":[34,36,64,66]},
-"42": {"ghunnah":[18,22],"idgham":[24,28,46,47],"madd":[73,74],"qalqalah":[30,32],"wasl":[45,46]},
-"43": {"idgham":[43,47,79,80],"madd":[2,3,16,17,98,99,103,104],"qalqalah":[12,14,49,51,63,65],"silent":[58,60],"wasl":[78,79]},
-"44": {"idgham":[14,18,62,67],"madd":[30,31,89,90],"qalqalah":[54,56],"wasl":[35,36]},
-"45": {"ghunnah":[19,22],"madd":[35,36]},
-"46": {"ghunnah":[24,29],"idgham":[31,36,36,41,46,51],"madd":[57,58],"qalqalah":[21,23]},
-"47": {"ghunnah":[7,10],"madd":[40,41],"wasl":[15,16]},
-"48": {"ghunnah":[37,41],"madd":[84,85],"wasl":[2,3,49,50]},
-"49": {"ghunnah":[12,16],"idgham":[34,39,39,44],"madd":[7,9,18,19,25,26,49,50,69,71,87,88],"wasl":[62,63]},
-"50": {"idgham":[40,41],"madd":[9,10,20,21,32,33,44,45,49,50],"qalqalah":[3,5],"wasl":[2,3,39,40]},
-"51": {"ghunnah":[68,71,108,111],"idgham":[4,8,84,85],"madd":[58,59,113,114,123,124],"qalqalah":[54,56,119,121],"silent":[31,33,80,82],"wasl":[14,15,83,84]},
-"52": {"idgham":[23,28],"madd":[32,33,37,38]}
+"1": {"madd_246":[68,69],"madd_6":[39,41],"hamzat_wasl":[44,45]},
+"2": {"ikhfa":[7,10],"madd_246":[38,39],"madd_munfasil":[2,4],"qalqalah":[34,36]},
+"3": {"ghunnah":[4,7],"madd_246":[36,37],"qalqalah":[17,19]},
+"4": {"ghunnah":[4,7],"madd_246":[30,31]},
+"5": {"madd_246":[23,24],"qalqalah":[6,8,17,19]},
+"6": {"madd_246":[22,23],"hamzat_wasl":[13,14]},
+"7": {"ghunnah":[2,5],"ikhfa":[32,36,42,46],"madd_2":[53,54],"madd_246":[84,85],"hamzat_wasl":[73,74]},
+"8": {"madd_246":[25,26],"hamzat_wasl":[13,14]},
+"9": {"madd_246":[33,34],"qalqalah":[16,18,27,29],"silent":[6,8]},
+"10": {"idghaam_ghunnah":[26,31],"madd_246":[33,34]},
+"11": {"ghunnah":[2,5],"iqlab":[18,22],"idghaam_ghunnah":[7,12],"madd_246":[27,28],"madd_muttasil":[15,17]},
+"12": {"ghunnah":[3,6],"idghaam_no_ghunnah":[8,13],"madd_246":[35,36]},
+"13": {"iqlab":[6,10],"madd_2":[18,19],"madd_246":[28,29]},
+"14": {"ikhfa":[2,6],"idghaam_ghunnah":[18,22],"madd_246":[26,27]},
+"15": {"madd_2":[29,30,46,47],"madd_246":[63,64],"hamzat_wasl":[53,54]},
+"16": {"madd_2":[10,11],"madd_246":[27,28],"hamzat_wasl":[18,19]},
+"17": {"ghunnah":[2,5,53,56,86,89],"madd_2":[15,16,44,45],"madd_246":[101,102],"madd_munfasil":[35,37],"qalqalah":[66,68],"silent":[73,75],"hamzat_wasl":[48,49]},
+"18": {"madd_246":[16,17]},
+"19": {"idghaam_ghunnah":[25,30],"idghaam_no_ghunnah":[30,35],"madd_246":[56,57],"madd_muttasil":[20,22,50,52]},
+"20": {"lam_shamsiyyah":[16,17],"madd_246":[22,23],"hamzat_wasl":[15,16]},
+"21": {"madd_246":[22,23],"silent":[11,13]},
+"22": {"ikhfa":[34,38,38,41],"madd_2":[46,47],"madd_246":[51,52],"silent":[11,13],"hamzat_wasl":[5,6]},
+"23": {"ikhfa":[3,6],"madd_2":[27,28],"madd_246":[32,33],"silent":[11,13],"hamzat_wasl":[2,3]},
+"24": {"ghunnah":[17,20],"idghaam_no_ghunnah":[2,7],"idghaam_shafawi":[42,47],"madd_246":[51,52],"qalqalah":[11,13],"hamzat_wasl":[24,25]},
+"25": {"ikhfa":[23,27],"madd_2":[27,28],"madd_246":[32,33],"silent":[8,10]},
+"26": {"ghunnah":[4,7,31,34],"madd_246":[45,46],"madd_munfasil":[24,26],"madd_6":[40,42],"silent":[26,28]},
+"27": {"madd_246":[21,22]},
+"28": {"madd_246":[57,58]},
+"29": {"ghunnah":[31,34,38,41],"madd_2":[15,16,45,46],"madd_246":[50,51],"madd_munfasil":[26,28],"qalqalah":[11,13],"silent":[6,8]},
+"30": {"idghaam_ghunnah":[34,38],"madd_2":[42,43],"madd_246":[47,48],"qalqalah":[4,6]},
+"31": {"ghunnah":[25,28,32,35],"madd_2":[11,12,39,40],"madd_246":[42,43],"madd_munfasil":[20,22],"silent":[6,8]},
+"32": {"ghunnah":[53,56],"idghaam_ghunnah":[19,23,38,44],"madd_2":[77,78],"madd_246":[82,83],"madd_munfasil":[14,16,48,50,56,58],"qalqalah":[23,25]},
+"33": {"madd_2":[4,5],"madd_246":[77,78],"silent":[66,68],"hamzat_wasl":[10,11,33,34]},
+"34": {"ghunnah":[2,5,39,42,48,51],"ikhfa":[23,26],"lam_shamsiyyah":[47,48],"madd_2":[42,43],"madd_246":[53,54],"hamzat_wasl":[46,47]},
+"35": {"madd_246":[41,42],"qalqalah":[6,8,35,37],"hamzat_wasl":[13,14,30,31]},
+"36": {"madd_246":[26,27]},
+"37": {"ikhfa":[18,22],"madd_2":[16,17],"madd_246":[34,35],"qalqalah":[28,30]},
+"38": {"ghunnah":[2,5],"madd_246":[34,35]},
+"39": {"ghunnah":[71,74],"madd_2":[18,19,34,35,63,64],"madd_246":[96,97],"hamzat_wasl":[56,57]},
+"40": {"ikhfa_shafawi":[16,20],"madd_2":[22,23],"madd_246":[32,33]},
+"41": {"ikhfa":[56,60],"madd_2":[69,70],"madd_246":[74,75],"madd_muttasil":[18,20,45,47],"silent":[34,36,64,66]},
+"42": {"ikhfa":[18,22],"idghaam_ghunnah":[24,28],"lam_shamsiyyah":[46,47],"madd_246":[73,74],"qalqalah":[30,32],"hamzat_wasl":[45,46]},
+"43": {"idghaam_ghunnah":[43,47],"lam_shamsiyyah":[79,80],"madd_2":[2,3,16,17,98,99],"madd_246":[103,104],"qalqalah":[12,14,49,51,63,65],"silent":[58,60],"hamzat_wasl":[78,79]},
+"44": {"idghaam_ghunnah":[14,18],"idghaam_shafawi":[62,67],"madd_2":[30,31],"madd_246":[89,90],"qalqalah":[54,56],"hamzat_wasl":[35,36]},
+"45": {"ghunnah":[19,22],"madd_246":[35,36]},
+"46": {"ikhfa":[24,29],"idghaam_ghunnah":[36,41,46,51],"idghaam_shafawi":[31,36],"madd_246":[57,58],"qalqalah":[21,23]},
+"47": {"ikhfa":[7,10],"madd_246":[40,41],"hamzat_wasl":[15,16]},
+"48": {"ikhfa":[37,41],"madd_246":[84,85],"hamzat_wasl":[2,3,49,50]},
+"49": {"ikhfa":[12,16],"idghaam_ghunnah":[34,39],"idghaam_no_ghunnah":[39,44],"madd_2":[18,19,25,26,49,50],"madd_246":[87,88],"madd_munfasil":[7,9],"madd_muttasil":[69,71],"hamzat_wasl":[62,63]},
+"50": {"lam_shamsiyyah":[40,41],"madd_2":[9,10,20,21,32,33,44,45],"madd_246":[49,50],"qalqalah":[3,5],"hamzat_wasl":[2,3,39,40]},
+"51": {"ghunnah":[68,71,108,111],"idghaam_ghunnah":[4,8],"lam_shamsiyyah":[84,85],"madd_2":[58,59,113,114],"madd_246":[123,124],"qalqalah":[54,56,119,121],"silent":[31,33,80,82],"hamzat_wasl":[14,15,83,84]},
+"52": {"idghaam_no_ghunnah":[23,28],"madd_2":[32,33],"madd_246":[37,38]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/69.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/69.json
index 9528de3..a623cec 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/69.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/69.json
@@ -1,53 +1,53 @@
{
-"1": {"madd-lazim":[44,46]},
-"2": {"madd-lazim":[9,11],"wasl":[4,5]},
-"3": {"madd":[4,6,14,15],"madd-lazim":[27,29],"qalqalah":[9,11],"wasl":[22,23]},
-"4": {"ghunnah":[24,28],"wasl":[29,30]},
-"5": {"ghunnah":[4,7],"idgham":[34,35],"silent":[28,30],"wasl":[33,34]},
-"6": {"ghunnah":[4,7,13,17,35,39],"silent":[26,28]},
-"7": {"ghunnah":[66,71,107,110],"idgham":[35,39],"madd":[43,44],"qalqalah":[24,26],"wasl":[77,78]},
-"8": {"ghunnah":[24,27],"idgham":[18,23]},
-"9": {"ghunnah":[24,28],"madd":[4,6,34,35,51,52],"qalqalah":[28,30],"wasl":[38,39,57,58]},
-"10": {"idgham":[49,54],"silent":[8,10]},
-"11": {"ghunnah":[2,5,9,12],"madd":[25,27,38,39],"wasl":[20,21,48,49]},
-"12": {"idgham":[30,34,50,54],"madd":[42,44,54,55],"qalqalah":[4,6]},
-"13": {"idgham":[20,21,35,39],"madd":[39,40],"wasl":[19,20]},
-"14": {"idgham":[51,55],"madd":[55,56],"wasl":[11,12,23,24]},
-"15": {"idgham":[11,15],"wasl":[22,23]},
-"16": {"ghunnah":[3,6],"idgham":[13,14,40,44],"madd":[19,21],"wasl":[2,3,12,13]},
-"17": {"ghunnah":[80,84],"madd":[16,19,26,28,86,87],"wasl":[2,3]},
-"18": {"ghunnah":[9,13,38,41]},
-"19": {"ghunnah":[4,7],"madd":[26,27,31,32,44,45,58,60,80,81],"qalqalah":[66,68],"silent":[73,75],"wasl":[65,66]},
-"20": {"ghunnah":[2,5,11,14,17,20],"madd":[26,27]},
-"21": {"idgham":[17,22]},
+"1": {"madd_6":[44,46]},
+"2": {"madd_6":[9,11],"hamzat_wasl":[4,5]},
+"3": {"madd_2":[14,15],"madd_munfasil":[4,6],"madd_6":[27,29],"qalqalah":[9,11],"hamzat_wasl":[22,23]},
+"4": {"iqlab":[24,28],"hamzat_wasl":[29,30]},
+"5": {"ghunnah":[4,7],"lam_shamsiyyah":[34,35],"silent":[28,30],"hamzat_wasl":[33,34]},
+"6": {"ghunnah":[4,7],"ikhfa":[13,17,35,39],"silent":[26,28]},
+"7": {"ghunnah":[107,110],"ikhfa":[66,71],"idghaam_ghunnah":[35,39],"madd_2":[43,44],"qalqalah":[24,26],"hamzat_wasl":[77,78]},
+"8": {"iqlab":[24,27],"idghaam_shafawi":[18,23]},
+"9": {"ikhfa":[24,28],"madd_2":[34,35,51,52],"madd_muttasil":[4,6],"qalqalah":[28,30],"hamzat_wasl":[38,39,57,58]},
+"10": {"idghaam_no_ghunnah":[49,54],"silent":[8,10]},
+"11": {"ghunnah":[2,5,9,12],"madd_2":[38,39],"madd_muttasil":[25,27],"hamzat_wasl":[20,21,48,49]},
+"12": {"idghaam_ghunnah":[30,34,50,54],"madd_2":[54,55],"madd_munfasil":[42,44],"qalqalah":[4,6]},
+"13": {"idghaam_ghunnah":[35,39],"lam_shamsiyyah":[20,21],"madd_2":[39,40],"hamzat_wasl":[19,20]},
+"14": {"idghaam_ghunnah":[51,55],"madd_2":[55,56],"hamzat_wasl":[11,12,23,24]},
+"15": {"idghaam_ghunnah":[11,15],"hamzat_wasl":[22,23]},
+"16": {"ikhfa":[3,6],"idghaam_ghunnah":[40,44],"lam_shamsiyyah":[13,14],"madd_muttasil":[19,21],"hamzat_wasl":[2,3,12,13]},
+"17": {"ikhfa":[80,84],"madd_2":[86,87],"madd_munfasil":[16,19],"madd_muttasil":[26,28],"hamzat_wasl":[2,3]},
+"18": {"ikhfa":[9,13,38,41]},
+"19": {"ghunnah":[4,7],"madd_2":[26,27,31,32,44,45,80,81],"madd_muttasil":[58,60],"qalqalah":[66,68],"silent":[73,75],"hamzat_wasl":[65,66]},
+"20": {"ghunnah":[2,5,17,20],"ikhfa":[11,14],"madd_2":[26,27]},
+"21": {"idghaam_no_ghunnah":[17,22]},
"22": {"ghunnah":[6,9]},
-"24": {"ghunnah":[29,34],"madd":[25,27,37,39],"silent":[5,7,18,20],"wasl":[10,11,57,58,69,70]},
-"25": {"ghunnah":[4,7],"madd":[26,27,31,32,44,45,58,59,84,85]},
+"24": {"iqlab":[29,34],"madd_munfasil":[37,39],"madd_muttasil":[25,27],"silent":[5,7,18,20],"hamzat_wasl":[10,11,57,58,69,70]},
+"25": {"ghunnah":[4,7],"madd_2":[26,27,31,32,44,45,58,59,84,85]},
"26": {"qalqalah":[9,11]},
-"27": {"madd":[2,3],"wasl":[21,22]},
-"28": {"ghunnah":[16,19],"madd":[2,4]},
-"29": {"ghunnah":[9,12],"madd":[20,21]},
-"30": {"madd":[15,16]},
-"31": {"ghunnah":[2,5],"madd":[22,23],"wasl":[6,7]},
-"32": {"ghunnah":[2,5,19,23,47,52],"madd":[59,60],"qalqalah":[33,35],"wasl":[52,53]},
-"33": {"ghunnah":[2,5],"madd":[7,8,45,46],"wasl":[30,31,38,39]},
-"34": {"madd":[38,39],"wasl":[29,30]},
-"35": {"madd":[26,27,37,38],"wasl":[14,15]},
-"36": {"madd":[32,33]},
-"37": {"madd":[15,17,30,31,36,37],"wasl":[25,26]},
-"38": {"madd":[4,6,30,31],"qalqalah":[9,11,24,26]},
-"39": {"madd":[18,19],"qalqalah":[12,14]},
-"40": {"ghunnah":[2,5,24,28],"madd":[7,8,30,31]},
-"41": {"ghunnah":[26,30],"idgham":[34,40],"madd":[50,51]},
-"42": {"ghunnah":[21,25],"idgham":[29,35],"madd":[46,47]},
-"43": {"ghunnah":[2,5],"idgham":[7,12,12,17],"madd":[26,27,31,32],"wasl":[21,22]},
-"44": {"madd":[44,45],"wasl":[34,35]},
-"45": {"madd":[28,29],"wasl":[21,22]},
-"46": {"ghunnah":[2,5],"madd":[32,33],"wasl":[25,26]},
-"47": {"ghunnah":[8,11],"idgham":[11,16],"madd":[35,36,40,41]},
-"48": {"ghunnah":[4,7],"idgham":[22,27],"madd":[9,10,36,37]},
-"49": {"ghunnah":[4,7,22,25,28,31],"idgham":[31,36],"madd":[43,44]},
-"50": {"ghunnah":[4,7],"madd":[9,10,33,34,38,39],"wasl":[28,29]},
-"51": {"ghunnah":[4,7],"madd":[9,10,26,27],"wasl":[19,20]},
-"52": {"madd":[33,34],"wasl":[12,13,26,27]}
+"27": {"madd_2":[2,3],"hamzat_wasl":[21,22]},
+"28": {"ghunnah":[16,19],"madd_munfasil":[2,4]},
+"29": {"ghunnah":[9,12],"madd_2":[20,21]},
+"30": {"madd_246":[15,16]},
+"31": {"ghunnah":[2,5],"madd_246":[22,23],"hamzat_wasl":[6,7]},
+"32": {"ghunnah":[2,5],"ikhfa":[19,23,47,52],"madd_246":[59,60],"qalqalah":[33,35],"hamzat_wasl":[52,53]},
+"33": {"ghunnah":[2,5],"madd_2":[7,8],"madd_246":[45,46],"hamzat_wasl":[30,31,38,39]},
+"34": {"madd_246":[38,39],"hamzat_wasl":[29,30]},
+"35": {"madd_2":[26,27],"madd_246":[37,38],"hamzat_wasl":[14,15]},
+"36": {"madd_246":[32,33]},
+"37": {"madd_2":[30,31],"madd_246":[36,37],"madd_munfasil":[15,17],"hamzat_wasl":[25,26]},
+"38": {"madd_246":[30,31],"madd_munfasil":[4,6],"qalqalah":[9,11,24,26]},
+"39": {"madd_246":[18,19],"qalqalah":[12,14]},
+"40": {"ghunnah":[2,5],"ikhfa":[24,28],"madd_2":[7,8],"madd_246":[30,31]},
+"41": {"ikhfa":[26,30],"idghaam_ghunnah":[34,40],"madd_246":[50,51]},
+"42": {"ikhfa":[21,25],"idghaam_ghunnah":[29,35],"madd_246":[46,47]},
+"43": {"ikhfa":[2,5],"idghaam_ghunnah":[7,12],"idghaam_no_ghunnah":[12,17],"madd_2":[26,27],"madd_246":[31,32],"hamzat_wasl":[21,22]},
+"44": {"madd_246":[44,45],"hamzat_wasl":[34,35]},
+"45": {"madd_246":[28,29],"hamzat_wasl":[21,22]},
+"46": {"ghunnah":[2,5],"madd_246":[32,33],"hamzat_wasl":[25,26]},
+"47": {"ikhfa":[8,11],"idghaam_shafawi":[11,16],"madd_2":[35,36],"madd_246":[40,41]},
+"48": {"ghunnah":[4,7],"idghaam_no_ghunnah":[22,27],"madd_2":[9,10],"madd_246":[36,37]},
+"49": {"ghunnah":[4,7,22,25],"ikhfa":[28,31],"idghaam_shafawi":[31,36],"madd_246":[43,44]},
+"50": {"ghunnah":[4,7],"madd_2":[9,10,33,34],"madd_246":[38,39],"hamzat_wasl":[28,29]},
+"51": {"ghunnah":[4,7],"madd_2":[9,10],"madd_246":[26,27],"hamzat_wasl":[19,20]},
+"52": {"madd_246":[33,34],"hamzat_wasl":[12,13,26,27]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/7.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/7.json
index 9b6bfde..2852630 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/7.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/7.json
@@ -1,208 +1,208 @@
{
-"1": {"madd-lazim":[40,42,42,44,44,46]},
-"2": {"ghunnah":[10,13,35,39,69,72],"idgham":[55,60],"madd":[4,5,79,80,104,105],"qalqalah":[43,45]},
-"3": {"ghunnah":[19,22,72,76],"idgham":[33,38,38,43,103,109],"madd":[14,16,81,83,92,94,120,121],"silent":[9,11,67,69]},
-"4": {"ghunnah":[9,13],"idgham":[4,9],"madd":[30,31,39,41,61,62,78,80,84,85]},
-"5": {"ghunnah":[38,42,61,65,75,78,82,85],"madd":[19,20,32,34,48,50,56,58,68,70,89,90,94,95],"silent":[70,72]},
-"6": {"ghunnah":[13,16,60,63],"madd":[75,76],"wasl":[17,18,64,65]},
-"7": {"ghunnah":[11,14,23,27,42,45],"idgham":[32,36],"madd":[49,51,55,56]},
-"8": {"ghunnah":[36,40],"madd":[51,52,59,60,69,71,92,93],"silent":[65,67],"wasl":[2,3,23,24,81,82]},
-"9": {"ghunnah":[67,70,74,78],"madd":[19,20,27,28,37,39,60,62,99,100,114,115],"silent":[33,35,62,64,88,90],"wasl":[44,45]},
-"10": {"ghunnah":[14,17],"idgham":[79,85],"madd":[17,18,67,68,95,96],"qalqalah":[6,8],"wasl":[27,28]},
-"11": {"ghunnah":[25,28,46,49],"idgham":[136,141,145,146],"madd":[17,18,38,39,66,68,104,106,114,116,149,150,154,155],"qalqalah":[6,8,13,15,119,121],"silent":[83,85,106,108],"wasl":[75,76,144,145]},
-"12": {"ghunnah":[118,122],"idgham":[69,74,93,98,100,104],"madd":[114,115,122,123],"qalqalah":[83,85,108,110]},
-"13": {"ghunnah":[45,49,78,81],"idgham":[90,91],"madd":[94,95,99,100],"qalqalah":[13,15,73,75],"wasl":[8,9,68,69,89,90]},
-"14": {"ghunnah":[8,11],"madd":[15,17,40,41],"qalqalah":[34,36]},
-"15": {"ghunnah":[8,11,24,27],"madd":[29,30],"wasl":[19,20]},
-"16": {"ghunnah":[39,42],"madd":[12,14,54,55,71,72],"qalqalah":[33,35],"wasl":[60,61]},
-"17": {"ghunnah":[2,5,15,18,26,29,90,94],"idgham":[20,25],"madd":[78,79,96,98,135,136,140,141]},
-"18": {"ghunnah":[50,54,80,83,88,91,96,99],"idgham":[30,36,42,48],"madd":[110,111],"qalqalah":[11,13,36,38,104,106],"wasl":[6,7]},
-"19": {"ghunnah":[25,28,45,48],"idgham":[106,107,134,135],"madd":[4,6,99,100,138,139,143,144],"qalqalah":[89,91],"wasl":[15,16,40,41,105,106,133,134]},
-"20": {"ghunnah":[75,79,162,166],"idgham":[20,21,141,142],"madd":[28,29,57,58,83,84,109,110,134,135,157,159,208,209,213,214],"qalqalah":[36,38],"wasl":[19,20,140,141,203,204]},
-"21": {"ghunnah":[18,21,40,43],"idgham":[39,40],"madd":[13,15,43,44,48,49],"wasl":[38,39]},
-"22": {"ghunnah":[23,27,29,32,133,136,187,191,231,234],"idgham":[42,43,119,123,200,201,236,237,262,267],"madd":[8,9,74,75,147,148,163,165,226,228,244,245,269,270],"wasl":[41,42,128,129,199,200,235,236]},
-"23": {"ghunnah":[29,32,88,91],"idgham":[42,47],"madd":[24,26,102,103,107,108],"wasl":[97,98]},
-"24": {"idgham":[43,47,78,82],"madd":[86,87,99,100],"silent":[14,16],"wasl":[6,7,58,59]},
-"25": {"madd":[62,63]},
-"26": {"ghunnah":[25,28,121,125],"idgham":[51,56,83,88,97,98],"madd":[2,3,7,9,58,59,69,70,110,111,125,126,141,142,175,176],"qalqalah":[20,22,101,103],"wasl":[96,97,145,146]},
-"27": {"ghunnah":[30,33,90,93,98,101,159,162,226,229],"idgham":[39,40,77,82,242,243],"madd":[2,3,7,9,47,48,55,57,147,148,154,156,164,165,171,172,193,194,248,249,263,265,291,292],"wasl":[38,39,85,86,241,242]},
-"28": {"ghunnah":[26,30,104,107],"madd":[20,21,55,57,63,65,140,142,188,189],"qalqalah":[41,43],"silent":[15,17,34,36],"wasl":[73,74,108,109,131,132,164,165]},
-"29": {"ghunnah":[58,61],"idgham":[75,79,106,107],"madd":[138,139],"qalqalah":[80,82],"silent":[41,43],"wasl":[21,22,79,80,105,106]},
-"30": {"ghunnah":[59,62,108,112,140,143],"idgham":[45,46,80,81,145,150],"madd":[51,52,86,87,101,103,156,157],"silent":[76,78],"wasl":[44,45,67,68,79,80,116,117]},
-"31": {"ghunnah":[40,43,103,106],"idgham":[57,61],"madd":[2,3,7,9,96,98,108,109,133,134],"silent":[23,25,66,68,79,81,98,100],"wasl":[71,72,122,123]},
-"32": {"idgham":[68,69,87,88,145,146,163,167,224,228],"madd":[40,42,63,64,77,78,140,141,179,180,189,190,213,214,234,235],"silent":[125,127,139,140],"wasl":[26,27,34,35,67,68,86,87,132,133,144,145,172,173,205,206]},
-"33": {"ghunnah":[7,10,121,125,185,189],"idgham":[178,183],"madd":[37,38,168,169,176,177,228,229],"silent":[132,134,195,197],"wasl":[30,31,77,78,89,90,108,109,137,138,204,205]},
-"34": {"ghunnah":[12,15,23,27],"idgham":[77,81],"madd":[35,37,97,98],"qalqalah":[91,93]},
-"35": {"ghunnah":[20,23,33,36,51,54],"idgham":[46,51],"madd":[2,3,7,9,84,85,159,160],"wasl":[96,97]},
-"36": {"ghunnah":[89,92],"idgham":[88,89],"madd":[31,32,61,63,70,72,83,84,110,111,115,116],"silent":[20,22,52,54,66,68],"wasl":[2,3,40,41,87,88]},
-"37": {"ghunnah":[18,21,217,220,235,239,271,274,298,301,310,313],"idgham":[119,124],"madd":[77,78,82,84,91,93,134,135,143,146,155,157,199,201,292,295,329,330,334,335],"qalqalah":[225,227],"silent":[87,89,201,203,257,259,266,268,285,287,324,326],"wasl":[24,25,40,41,127,128,243,244]},
-"38": {"ghunnah":[27,31,43,47,66,69,77,80,87,90,114,117,181,186,272,277,291,294,310,314],"idgham":[53,58,86,87,118,123,280,286,290,291,317,321,326,331],"madd":[19,21,145,148,199,200,213,214,230,232,236,238,323,324,341,342],"qalqalah":[7,9,31,33,47,49],"silent":[14,16,165,167],"wasl":[6,7,61,62,72,73,85,86,155,156,289,290]},
-"39": {"ghunnah":[68,72,75,79,107,110],"madd":[16,17,31,32,121,122],"silent":[85,87],"wasl":[88,89]},
-"40": {"ghunnah":[2,5,133,136,170,173],"idgham":[99,100],"madd":[35,36,94,95,105,107,191,192,216,217],"qalqalah":[90,92,118,120,199,201,210,212],"silent":[24,26,56,58],"wasl":[6,7,44,45,98,99,128,129,154,155,174,175,205,206]},
-"41": {"ghunnah":[9,13,15,18,33,37],"idgham":[4,9,27,31,52,56,75,76],"madd":[60,61,79,80,84,85],"qalqalah":[68,70],"wasl":[74,75]},
-"42": {"ghunnah":[117,120],"idgham":[36,37],"madd":[40,41,45,46,86,88,95,97,108,109,137,138,142,143],"silent":[20,22,32,34,91,93],"wasl":[2,3,35,36,112,113]},
-"43": {"ghunnah":[41,45,53,57,143,146,250,254,266,269,296,299],"idgham":[29,34],"madd":[75,76,121,122,130,131,167,169,180,181,202,204,243,245,310,311],"qalqalah":[45,47,197,199],"silent":[87,89,245,247],"wasl":[66,67,90,91,108,109,185,186,227,228,261,262]},
-"44": {"ghunnah":[26,29,44,47,53,57,97,102,143,148,180,184],"idgham":[43,44,111,112,115,120,196,201,223,224],"madd":[7,10,17,18,38,39,227,228,232,233],"qalqalah":[57,59,64,66],"silent":[152,154],"wasl":[21,22,42,43,208,209,222,223]},
-"45": {"ghunnah":[23,27,68,72],"idgham":[61,66],"madd":[87,88,92,93],"qalqalah":[45,47],"wasl":[33,34,72,73]},
-"46": {"ghunnah":[67,72,112,115,120,124],"idgham":[20,24,49,53],"madd":[79,80,103,104,126,127,174,175],"qalqalah":[148,150,168,170],"silent":[94,96],"wasl":[30,31,107,108]},
-"47": {"ghunnah":[54,57],"idgham":[53,54,111,112],"madd":[23,24,37,39,48,49,115,116,120,121],"qalqalah":[19,21,85,87],"silent":[67,69],"wasl":[52,53,100,101,110,111]},
-"48": {"ghunnah":[56,60,97,100,122,125],"idgham":[40,45],"madd":[7,10,17,18,66,67,83,85,140,141],"silent":[78,80],"wasl":[21,22]},
-"49": {"ghunnah":[89,92,126,129],"madd":[4,6,10,12,121,123,140,141],"qalqalah":[27,29,74,76],"silent":[81,83],"wasl":[15,16,54,55,73,74,84,85]},
-"50": {"ghunnah":[23,26,45,48,99,102,135,138],"idgham":[22,23],"madd":[7,10,17,18,36,37,87,89,128,130,171,172,176,177],"silent":[64,66,130,132],"wasl":[21,22,40,41,82,83,115,116,139,140,166,167]},
-"51": {"ghunnah":[101,104],"idgham":[37,42,47,52,77,78],"madd":[72,73,105,106,129,131,147,148,175,176,190,191],"qalqalah":[184,186],"silent":[19,21,71,72,122,124,164,166],"wasl":[10,11,64,65,76,77,89,90]},
-"52": {"ghunnah":[18,22,28,32],"idgham":[60,65,72,77,82,86],"madd":[15,16,26,27,39,40,92,93],"qalqalah":[6,8]},
-"53": {"ghunnah":[7,10,92,96,157,161,232,235,264,267],"idgham":[288,293],"madd":[34,35,62,63,108,110,165,167,188,190,257,259,312,313],"qalqalah":[96,98,103,105,248,250],"silent":[181,183,259,261,301,303],"wasl":[72,73,133,134,222,223]},
-"54": {"ghunnah":[2,5,84,88,88,91,137,140,195,198,215,219],"idgham":[40,41,136,137,164,169,170,171,194,195],"madd":[46,47,49,50,156,157,213,214,228,230,293,294,298,299],"qalqalah":[148,150],"wasl":[16,17,24,25,39,40,55,56,92,93,108,109,126,127,135,136,169,170,181,182,193,194,242,243,254,255,274,275,288,289]},
-"55": {"ghunnah":[43,46],"idgham":[27,32],"madd":[48,49,73,74],"qalqalah":[1,3],"silent":[6,8],"wasl":[62,63]},
-"56": {"ghunnah":[83,86],"idgham":[68,73,110,115],"madd":[45,46,129,130],"qalqalah":[55,57],"silent":[15,17],"wasl":[22,23,54,55,96,97,118,119]},
-"57": {"ghunnah":[40,45,102,107,111,116,140,144,146,149,192,196],"idgham":[25,26,131,136,201,202],"madd":[31,32,68,69,75,78,83,85,120,121,165,167,188,189,209,210,217,218,265,266],"qalqalah":[116,118,178,180],"wasl":[7,8,24,25,160,161,200,201,232,233]},
-"58": {"ghunnah":[103,108],"idgham":[13,14,145,149],"madd":[41,42,59,60,110,111,134,135,155,156],"wasl":[2,3,12,13,63,64,126,127]},
-"59": {"ghunnah":[117,120],"idgham":[88,93],"madd":[41,42,53,54,100,101,112,114,120,122,161,162],"qalqalah":[4,6],"silent":[69,71],"wasl":[61,62,72,73]},
-"60": {"ghunnah":[18,22,33,36],"idgham":[59,64],"madd":[28,30,45,46,57,58,66,67],"wasl":[6,7]},
-"61": {"ghunnah":[44,47],"idgham":[35,39,55,60,60,65],"madd":[8,9,31,32,41,42,74,75,79,80],"wasl":[69,70]},
-"62": {"ghunnah":[36,39],"madd":[18,19,21,22,89,90],"wasl":[65,66]},
-"63": {"ghunnah":[17,21,70,73,80,83],"idgham":[35,40,40,45,65,70],"madd":[21,23,127,128],"qalqalah":[8,10],"silent":[102,104]},
-"64": {"ghunnah":[17,20,115,118],"madd":[24,25,46,47,105,106,110,112,144,145],"qalqalah":[70,72],"silent":[94,96,129,131],"wasl":[30,31,52,53,76,77]},
-"65": {"ghunnah":[29,34],"idgham":[75,80],"madd":[40,41,87,88,99,101,117,118],"silent":[56,58],"wasl":[48,49,59,60]},
-"66": {"ghunnah":[38,42,53,56,87,90,98,101],"idgham":[81,85],"madd":[48,50,65,66,114,115,119,120],"silent":[33,35],"wasl":[6,7,16,17,109,110]},
-"67": {"ghunnah":[44,47],"idgham":[35,39,55,60,60,65],"madd":[8,9,41,42,74,75,79,80],"wasl":[69,70]},
-"68": {"madd":[18,19,21,22,60,61]},
-"69": {"ghunnah":[17,21,70,73,80,83,134,137,190,194],"idgham":[35,40,40,45,65,70,154,158],"madd":[21,23,99,101,126,128,201,203,211,213,244,245],"qalqalah":[8,10],"silent":[101,103,184,187,203,205],"wasl":[92,93,172,173,194,195,216,217]},
-"70": {"ghunnah":[121,125,125,128],"idgham":[135,136],"madd":[5,7,49,50,84,86,116,118,139,140,144,145],"silent":[7,9],"wasl":[33,34,134,135]},
-"71": {"ghunnah":[92,96,96,99,113,116,163,167,173,177,178,181,192,195,216,219],"idgham":[26,31,31,36,49,53,132,137,203,208],"madd":[66,67,80,82,89,91,108,110,126,128,171,172,185,187,223,224],"qalqalah":[8,10,46,48],"silent":[187,189],"wasl":[147,148,177,178,211,212]},
-"72": {"ghunnah":[4,7,49,52],"idgham":[44,49],"madd":[11,12,33,34,103,104,133,134],"silent":[92,94,122,124],"wasl":[17,18,74,75]},
-"73": {"ghunnah":[33,38,120,124,186,190,253,257],"idgham":[79,84,130,135,135,140],"madd":[29,30,44,45,91,92,103,104,112,114,150,151,155,156,210,212,250,252,282,283],"qalqalah":[107,109],"silent":[60,62],"wasl":[52,53,63,64,165,166,220,221]},
-"74": {"ghunnah":[44,47,102,106,155,160],"idgham":[57,61,121,126],"madd":[9,11,36,38,167,169,177,179,229,230],"silent":[11,13,169,171,204,206],"wasl":[2,3,77,78,138,139,160,161,182,183,211,212]},
-"75": {"ghunnah":[43,47,121,124,171,174],"idgham":[131,137,142,147,147,152],"madd":[53,54,127,128,157,158,164,166,180,182,196,197,206,207],"silent":[38,40,78,80,166,168],"wasl":[6,7,16,17,26,27,66,67]},
-"76": {"ghunnah":[34,37,55,58,58,62],"madd":[27,29,47,49,64,65,68,69,73,74],"silent":[29,31],"wasl":[6,7,16,17,41,42]},
-"77": {"ghunnah":[14,17,106,110,110,113],"idgham":[13,14],"madd":[69,70,72,73,101,103,130,131],"silent":[9,11,31,33,64,66],"wasl":[12,13,78,79,119,120]},
-"78": {"idgham":[16,17],"madd":[57,58,62,63],"qalqalah":[20,22],"silent":[38,40],"wasl":[15,16]},
-"79": {"ghunnah":[123,126],"idgham":[103,108,122,123],"madd":[31,32,100,101,126,127,131,132],"qalqalah":[43,45,48,50],"wasl":[121,122]},
-"80": {"ghunnah":[70,74],"idgham":[88,93],"madd":[30,32,50,51,101,102,106,107],"wasl":[45,46,96,97]},
-"81": {"ghunnah":[2,5,45,49,55,58,72,75],"idgham":[23,24,40,45,54,55,83,88],"madd":[60,62,94,95],"wasl":[22,23,53,54]},
-"82": {"ghunnah":[41,45,69,73,86,89],"idgham":[64,69,100,104],"madd":[28,30,36,38,48,50,113,114],"silent":[50,52]},
-"83": {"ghunnah":[4,7],"madd":[11,12,25,27,46,47,66,67,71,72],"wasl":[35,36,61,62]},
-"84": {"ghunnah":[30,35,36,39],"idgham":[22,27],"madd":[57,58,76,77],"qalqalah":[70,72],"wasl":[35,36,65,66]},
-"85": {"ghunnah":[35,40,122,126,206,209,307,311,311,314],"idgham":[81,86,132,137,137,142,205,206,295,300,314,319],"madd":[46,47,93,94,105,106,114,116,219,221,273,274,282,283,325,326],"qalqalah":[11,13,109,111,194,196],"silent":[62,64,159,161,201,203,243,245],"wasl":[54,55,65,66,162,163,174,175,204,205,250,251]},
-"86": {"ghunnah":[32,36,60,64,141,144,153,158,173,176],"idgham":[117,122],"madd":[30,31,95,96,129,131,197,198,216,217],"qalqalah":[8,10,101,103],"silent":[15,17,131,133,179,181],"wasl":[70,71,122,123,172,173,205,206]},
-"87": {"ghunnah":[4,8,26,29],"idgham":[21,26,82,87],"madd":[14,16,51,53,69,70,75,77,169,170,174,175],"silent":[40,42,99,101,112,114],"wasl":[45,46,104,105,132,133,164,165]},
-"88": {"ghunnah":[43,47,65,68,115,119,144,147,180,183],"madd":[53,54,73,74,127,129,187,188,192,193],"silent":[38,40,103,105],"wasl":[6,7,16,17,26,27,85,86]},
-"89": {"ghunnah":[66,70,312,315],"idgham":[130,135,159,163],"madd":[86,87,125,127,146,148,154,156,165,167,328,329,333,334],"qalqalah":[47,49],"wasl":[5,6,24,25,91,92,170,171,230,231,260,261,299,300,323,324]},
-"90": {"ghunnah":[40,44,84,87],"idgham":[95,101],"madd":[50,51,103,104,108,109],"silent":[35,37],"wasl":[8,9,18,19,59,60]},
-"91": {"idgham":[16,17],"madd":[57,58,62,63],"qalqalah":[20,22],"silent":[38,40],"wasl":[15,16]},
-"92": {"ghunnah":[28,33,89,94],"idgham":[35,40],"madd":[111,112,116,117],"silent":[18,20,51,53,79,81,98,100],"wasl":[61,62,106,107]},
-"93": {"ghunnah":[126,130],"madd":[31,32,65,66,68,69,130,131,135,136],"qalqalah":[43,45,48,50]},
-"94": {"idgham":[30,35,35,40,94,95],"madd":[4,6,51,53,62,64,86,88,101,103,128,129],"wasl":[77,78,93,94]},
-"95": {"ghunnah":[2,5,143,147],"idgham":[26,27,103,104,118,119,152,156],"madd":[94,96,110,112,125,127,140,141,173,174],"qalqalah":[80,82],"silent":[63,65,75,77],"wasl":[25,26,38,39,102,103,117,118]},
-"96": {"ghunnah":[9,12,75,79,124,128,150,154],"idgham":[85,90,94,95],"madd":[27,30,83,84,100,102,121,122,147,148,175,176],"silent":[39,41,52,54,134,136,164,166],"wasl":[20,21,44,45,93,94,107,108]},
-"97": {"ghunnah":[43,47],"idgham":[31,35,61,66],"madd":[25,28,59,60,73,75,79,80],"wasl":[18,19]},
-"98": {"ghunnah":[43,47],"idgham":[31,35,58,63],"madd":[25,28,76,77],"wasl":[18,19]},
-"99": {"madd":[81,82,86,87],"silent":[11,13],"wasl":[21,22,51,52,66,67,76,77]},
-"100": {"ghunnah":[50,53,100,104],"idgham":[72,77],"madd":[67,69,84,86,97,98,165,166],"qalqalah":[93,95,120,122],"wasl":[37,38]},
-"101": {"ghunnah":[42,44,83,87,149,153],"madd":[45,47,64,66,97,98,162,163,205,206,210,211],"qalqalah":[59,61,153,155,170,172],"silent":[113,115,127,129,144,146],"wasl":[7,8,87,88,177,178,200,201]},
-"102": {"idgham":[28,33,41,45,47,51],"madd":[57,59,77,78,82,83],"qalqalah":[10,12,53,55]},
-"103": {"ghunnah":[2,5,19,22,109,112],"idgham":[29,34],"madd":[48,49,53,55,86,87,130,131,149,150],"silent":[82,84,97,99],"wasl":[108,109,138,139]},
-"104": {"ghunnah":[32,35],"idgham":[43,48,48,53],"madd":[18,19,62,63,67,68],"wasl":[57,58]},
-"105": {"ghunnah":[77,81],"idgham":[18,23,89,94,94,99],"madd":[12,15,23,25,129,131,138,140,142,143],"qalqalah":[66,68],"wasl":[40,41,55,56]},
-"106": {"ghunnah":[8,12,12,15,32,36,50,54,54,57],"idgham":[64,65],"madd":[45,47,68,69,73,74],"wasl":[63,64]},
-"107": {"idgham":[40,45],"madd":[47,48]},
-"108": {"ghunnah":[44,47],"idgham":[43,44],"madd":[15,16,36,38,47,48,52,53]},
-"109": {"ghunnah":[18,22,40,43],"madd":[46,47,55,56,65,66],"wasl":[6,7]},
-"110": {"idgham":[10,14,22,27],"madd":[58,59]},
-"111": {"madd":[5,7,51,53,60,61,65,66],"silent":[7,9],"wasl":[44,45]},
-"112": {"madd":[20,21,30,31]},
-"113": {"ghunnah":[44,47,66,70,70,73],"idgham":[10,11],"madd":[4,6,37,39,87,88,92,93],"qalqalah":[58,60],"silent":[39,41],"wasl":[9,10,82,83]},
-"114": {"ghunnah":[17,20],"madd":[44,45],"wasl":[32,33]},
-"115": {"ghunnah":[23,26,31,35,46,49],"idgham":[54,59],"madd":[11,12,17,20,26,28,49,51,81,82],"silent":[6,8],"wasl":[72,73]},
-"116": {"ghunnah":[20,23,59,62],"idgham":[58,59],"madd":[23,25,43,45,89,91,108,109],"silent":[13,15,34,36,45,47],"wasl":[57,58,68,69]},
-"117": {"madd":[12,14,27,30,85,86]},
-"118": {"madd":[48,49],"silent":[37,39],"wasl":[9,10]},
-"119": {"ghunnah":[25,28],"madd":[38,39,43,44],"silent":[9,11,33,35],"wasl":[24,25]},
-"120": {"idgham":[12,13],"madd":[25,26,30,31],"wasl":[11,12]},
-"121": {"ghunnah":[15,18],"madd":[5,7,33,34,38,39],"silent":[7,9],"wasl":[28,29]},
-"122": {"madd":[18,19,21,22]},
-"123": {"ghunnah":[22,25,25,29,62,65],"idgham":[80,85],"madd":[31,32,68,69,134,136,164,165],"qalqalah":[35,37],"silent":[125,127],"wasl":[101,102]},
-"124": {"ghunnah":[11,14,54,58,58,61,73,76],"idgham":[40,45],"madd":[52,53,89,90],"qalqalah":[83,85]},
-"125": {"ghunnah":[12,15,36,39],"madd":[5,7,15,17,43,44],"silent":[7,9]},
-"126": {"ghunnah":[8,11,16,19,40,43,68,71],"idgham":[119,124],"madd":[19,21,27,29,53,54,75,77,92,94,143,144],"qalqalah":[116,118]},
-"127": {"ghunnah":[20,24,186,189],"madd":[67,68,146,148,167,168,173,175,204,205,209,210],"qalqalah":[142,144],"silent":[80,82],"wasl":[8,9,87,88]},
-"128": {"ghunnah":[65,68],"idgham":[100,104],"madd":[58,60,106,108,125,126,134,135,153,154],"silent":[36,38,60,62],"wasl":[25,26,41,42,51,52,69,70,129,130]},
-"129": {"ghunnah":[22,26,33,37,52,55,160,163],"idgham":[100,104],"madd":[5,7,181,182],"qalqalah":[26,28],"silent":[7,9],"wasl":[146,147]},
-"130": {"idgham":[40,41,57,62,66,67],"madd":[17,19,74,75,100,101],"qalqalah":[6,8,54,56],"wasl":[39,40,65,66]},
-"131": {"ghunnah":[61,65,133,136,155,158,174,177],"idgham":[82,86,112,117],"madd":[10,12,50,51,55,56,121,123,128,130,142,144,171,172,203,204],"qalqalah":[67,69],"silent":[39,41,95,97],"wasl":[21,22,159,160]},
-"132": {"idgham":[46,51],"madd":[33,34,97,98],"silent":[8,10]},
-"133": {"ghunnah":[57,60,109,113],"idgham":[26,27,66,67,81,82,95,100,144,150],"madd":[93,94,107,108,156,157],"qalqalah":[150,152],"silent":[125,127,136,138],"wasl":[25,26,39,40,52,53,65,66,80,81,113,114]},
-"134": {"ghunnah":[4,7,91,94,101,105,114,117,139,142,160,163],"idgham":[28,29,120,121],"madd":[48,49,175,177,184,186,188,189],"qalqalah":[32,34,57,59,124,126],"silent":[43,45],"wasl":[27,28,56,57,119,120]},
-"135": {"ghunnah":[4,7,55,59,81,84],"idgham":[29,30],"madd":[42,45,59,60,86,87],"qalqalah":[33,35],"wasl":[28,29]},
-"136": {"ghunnah":[3,6,50,53,58,61],"madd":[35,36,85,86,113,114,118,119],"qalqalah":[31,33],"silent":[74,76,100,102],"wasl":[2,3,45,46]},
-"137": {"ghunnah":[124,127,207,210],"madd":[63,64,85,86,104,105,170,172,179,181,256,257,281,282],"silent":[40,42,200,202,270,272],"wasl":[14,15,24,25,69,70,94,95,147,148]},
-"138": {"ghunnah":[149,154,173,177,183,186,196,200],"idgham":[69,73,99,104],"madd":[4,5,19,21,28,30,87,90,120,121,140,142,147,148,206,207],"qalqalah":[129,131,200,202],"silent":[54,56,115,117],"wasl":[36,37,128,129]},
-"139": {"ghunnah":[2,5],"idgham":[27,32,53,58],"madd":[8,10,14,16,49,50,77,78],"silent":[66,68]},
-"140": {"idgham":[41,46],"madd":[39,40,74,75,79,80],"qalqalah":[25,27],"wasl":[15,16,69,70]},
-"141": {"ghunnah":[9,12,147,151],"idgham":[19,24,156,161,161,166],"madd":[16,17,61,63,96,98,125,127,142,143,153,155,178,179],"qalqalah":[92,94],"wasl":[66,67]},
-"142": {"ghunnah":[65,69,71,74],"idgham":[39,43,113,117],"madd":[4,5,25,26,53,54,80,81,91,93,143,144,219,220],"qalqalah":[7,9],"wasl":[150,151,208,209]},
-"143": {"ghunnah":[4,7,83,86,106,110,129,132,203,206,276,281,283,286],"idgham":[252,257],"madd":[11,13,31,32,49,50,58,59,78,80,113,114,122,123,178,179,194,195,225,226,246,247,286,288,309,310,359,360],"qalqalah":[305,307,317,319],"wasl":[128,129,141,142,158,159,348,349]},
-"144": {"ghunnah":[20,23,47,50],"idgham":[46,47,109,114,118,119],"madd":[8,9,14,17,60,61,63,64,76,77,90,92,122,123,127,128],"wasl":[25,26,45,46,117,118]},
-"145": {"ghunnah":[37,41,91,95],"idgham":[50,55,62,66,74,80,111,115],"madd":[16,17,182,183,187,188],"qalqalah":[6,8],"silent":[140,142,161,163],"wasl":[22,23,177,178]},
-"146": {"ghunnah":[246,251,261,264],"idgham":[88,92,111,116,140,144,160,161,192,197,199,203],"madd":[21,22,251,252,288,289,316,317,321,322],"silent":[96,98,127,129,148,150,207,209,277,279,303,305],"wasl":[27,28,56,57,75,76,159,160,218,219]},
-"147": {"madd":[31,32,44,46,77,78,129,130],"qalqalah":[92,94],"silent":[20,22,118,120],"wasl":[2,3,49,50]},
-"148": {"ghunnah":[29,32,63,68,107,110],"idgham":[71,77],"madd":[39,40,79,80,112,113,184,185,189,190],"qalqalah":[60,62],"silent":[102,104,179,181],"wasl":[2,3,159,160]},
-"149": {"ghunnah":[4,7,46,49,136,139],"idgham":[81,86],"madd":[18,20,150,151,155,156],"qalqalah":[56,58],"silent":[41,43,65,67,74,76],"wasl":[145,146]},
-"150": {"ghunnah":[4,7,57,62,94,97,219,222,225,228],"idgham":[349,350],"madd":[21,24,40,41,48,49,102,104,193,195,310,312,353,354,358,359],"qalqalah":[212,214,268,270,323,325],"silent":[263,265],"wasl":[145,146,211,212,229,230,239,240,301,302,338,339,348,349]},
-"151": {"ghunnah":[67,70],"idgham":[81,82],"madd":[85,86,90,91],"qalqalah":[38,40],"wasl":[12,13,80,81]},
-"152": {"ghunnah":[2,5,83,87],"idgham":[57,62,62,67,102,103],"madd":[97,98,118,119,143,144],"qalqalah":[33,35,126,128],"silent":[25,27,96,97],"wasl":[6,7,16,17,28,29,89,90,101,102,132,133]},
-"153": {"ghunnah":[39,42,55,58,83,86,98,101],"idgham":[23,24,118,123],"madd":[76,78,125,126],"silent":[19,21,49,51,78,80],"wasl":[2,3,22,23]},
-"154": {"ghunnah":[4,7],"idgham":[18,23,79,84,91,96],"madd":[130,131],"wasl":[28,29,45,46]},
-"155": {"ghunnah":[66,69,138,142,201,204,251,255,274,278,287,290,335,338],"idgham":[44,50,86,87,133,138,186,187],"madd":[27,28,55,56,69,71,154,155,194,196,204,206,257,259,280,282,351,352,356,357],"qalqalah":[31,33,90,92,142,144],"wasl":[2,3,85,86,185,186,304,305,320,321,346,347]},
-"156": {"ghunnah":[69,72,168,172,246,250],"idgham":[29,30,46,50,221,222],"madd":[22,23,80,82,105,107,120,121,131,133,228,229,256,257,271,272],"qalqalah":[7,9,76,78],"silent":[227,228],"wasl":[2,3,28,29,54,55,220,221,234,235]},
-"157": {"ghunnah":[36,39,50,53,91,94,124,127,141,145,183,186,398,401,416,419],"idgham":[24,25,35,36,104,105,207,208,397,398],"madd":[76,77,113,114,167,168,216,217,250,252,297,298,355,356,411,413,428,430,437,439,460,461],"silent":[348,350,393,395,433,435],"wasl":[23,24,34,35,45,46,57,58,103,104,119,120,145,146,178,179,206,207,243,244,288,289,301,302,330,331,384,385,396,397,405,406,449,450]},
-"158": {"ghunnah":[20,23,29,32,198,201,212,215],"idgham":[19,20,92,93,197,198],"madd":[7,9,82,83,98,99,101,102,119,121,126,127,148,149,254,255,259,260,295,296],"silent":[171,173],"wasl":[18,19,42,43,70,71,91,92,107,108,176,177,196,197,207,208,219,220,238,239,263,264]},
-"159": {"ghunnah":[4,8,24,27],"idgham":[28,32],"madd":[18,21,57,58,67,68],"wasl":[42,43]},
-"160": {"ghunnah":[153,155,193,198,275,278,300,303,328,332,383,387,397,400],"idgham":[52,57,220,225,307,308],"madd":[11,12,67,69,82,85,101,102,113,115,267,268,337,338,353,354,380,381,390,392,415,416],"qalqalah":[198,200,349,351],"silent":[323,325,392,394],"wasl":[17,18,91,92,121,122,139,140,151,152,170,171,260,261,295,296,306,307]},
-"161": {"idgham":[102,106,132,138],"madd":[33,34,156,158,161,162,190,191],"qalqalah":[107,109],"silent":[28,30,58,60,93,95,114,116],"wasl":[20,21,39,40,106,107,117,118,179,180]},
-"162": {"idgham":[105,111,115,116],"madd":[121,123,149,150],"qalqalah":[102,104],"silent":[27,29,138,140],"wasl":[10,11,54,55,114,115]},
-"163": {"ghunnah":[213,217],"idgham":[87,88,150,155],"madd":[198,199,238,239],"qalqalah":[91,93,135,137,206,208],"silent":[227,229],"wasl":[19,20,31,32,57,58,86,87]},
-"164": {"ghunnah":[17,20,102,107,111,116],"idgham":[21,26],"madd":[172,173],"silent":[120,122],"wasl":[56,57]},
-"165": {"ghunnah":[4,7,41,44,126,130,136,140],"idgham":[77,78],"madd":[36,38,81,83,162,163],"silent":[14,16,29,31,115,117,151,153],"wasl":[50,51,76,77,98,99]},
-"166": {"ghunnah":[4,7],"idgham":[20,25],"madd":[77,78,83,84],"silent":[15,17,32,34,63,65]},
-"167": {"ghunnah":[35,38,113,116,150,153],"idgham":[79,83,165,170],"madd":[71,72,95,97,155,156,172,173],"qalqalah":[29,31],"wasl":[64,65,100,101,135,136]},
-"168": {"ghunnah":[101,105],"idgham":[36,42,50,51,121,122],"madd":[11,12,54,55,82,83,98,99,114,115,155,156],"wasl":[21,22,49,50,105,106,120,121]},
-"169": {"ghunnah":[12,15],"idgham":[30,34,125,129,143,148,192,197,217,222,290,291,316,321],"madd":[49,50,74,75,154,155,200,201,211,212,357,358],"qalqalah":[84,86],"silent":[39,41,232,234,274,276],"wasl":[42,43,79,80,204,205,241,242,256,257,289,290,298,299]},
-"170": {"ghunnah":[65,68],"idgham":[52,53],"madd":[34,35,59,60,100,101],"qalqalah":[84,86],"silent":[48,50,58,59],"wasl":[2,3,27,28,51,52,89,90]},
-"171": {"ghunnah":[42,45,61,64,71,74,84,88,119,123],"idgham":[55,59,129,133],"madd":[47,48,64,66,76,77,104,106,116,117,173,174],"qalqalah":[11,13],"silent":[66,68,99,101,141,143],"wasl":[17,18,133,134]},
-"172": {"ghunnah":[25,28,44,48,98,101,158,162,193,196,200,203],"madd":[31,33,92,95,153,155,185,186,212,213,219,220,224,225],"qalqalah":[149,151],"silent":[135,137,168,170],"wasl":[178,179]},
-"173": {"ghunnah":[19,22,51,55,64,67,84,87],"idgham":[78,83],"madd":[12,14,24,26,41,43,137,138],"qalqalah":[55,57,131,133],"silent":[14,16],"wasl":[126,127]},
-"174": {"madd":[6,7,30,31,56,57],"wasl":[22,23]},
-"175": {"ghunnah":[63,66],"idgham":[93,94],"madd":[32,34,44,45,53,54,101,102,126,127],"wasl":[2,3,26,27,62,63,92,93,118,119]},
-"176": {"ghunnah":[42,45,128,132],"idgham":[179,180],"madd":[25,26,39,40,47,49,91,92,105,106,184,185,236,237,286,287],"qalqalah":[246,248],"silent":[225,227],"wasl":[65,66,77,78,116,117,197,198,207,208,245,246,253,254]},
-"177": {"ghunnah":[65,68],"madd":[2,4,54,55,92,93],"silent":[43,45,81,83],"wasl":[15,16,25,26]},
-"178": {"idgham":[2,6,43,47],"madd":[62,64,79,80,84,85],"silent":[58,60],"wasl":[11,12,26,27,74,75]},
-"179": {"ghunnah":[25,28,51,54,62,65],"idgham":[37,43,79,84,120,125,161,166],"madd":[184,186,193,195,211,212,239,241,256,257,261,262],"qalqalah":[6,8,129,131],"silent":[189,191,235,237],"wasl":[46,47,57,58,202,203,251,252]},
-"180": {"madd":[19,21,87,89,96,98,102,103,138,139],"qalqalah":[39,41,108,110],"silent":[60,62,127,129],"wasl":[10,11,24,25,38,39,63,64]},
-"181": {"ghunnah":[4,7,23,26],"idgham":[27,31],"madd":[18,20,56,57,66,67],"qalqalah":[14,16],"wasl":[41,42]},
-"182": {"idgham":[54,59],"madd":[31,32,81,82],"qalqalah":[46,48],"silent":[20,22],"wasl":[2,3]},
-"183": {"ghunnah":[19,22],"madd":[35,36]},
-"184": {"ghunnah":[44,48,48,51],"idgham":[39,44,77,82],"madd":[84,85],"silent":[21,23]},
-"185": {"ghunnah":[11,14,83,87,161,165],"idgham":[35,36,90,94,109,113],"madd":[41,42,44,45,103,106,172,173,182,183],"qalqalah":[125,127],"silent":[17,19],"wasl":[34,35,50,51,73,74,124,125]},
-"186": {"idgham":[2,6],"madd":[39,40,64,65,80,81],"wasl":[13,14]},
-"187": {"ghunnah":[59,62,78,81,220,223,249,252,268,271,287,290,302,305],"idgham":[21,22,144,145,199,203,301,302],"madd":[47,48,115,117,150,151,153,154,284,285,321,322],"qalqalah":[109,111],"wasl":[20,21,143,144,159,160,272,273,300,301]},
-"188": {"ghunnah":[85,88],"idgham":[34,39,156,157,190,194,200,205,210,214],"madd":[7,9,63,65,160,162,220,221],"wasl":[68,69,98,99,110,111,129,130,155,156]},
-"189": {"ghunnah":[98,101,139,144,162,165,245,248],"idgham":[21,26,26,31,34,38,44,48,176,177,232,238,255,256],"madd":[38,39,111,112,156,157,165,167,228,229,259,260,264,265],"wasl":[5,6,187,188,254,255]},
-"190": {"ghunnah":[4,7,29,34,99,102],"madd":[7,9,16,17,25,26,44,45,52,54,62,64,71,72,84,85,112,113],"wasl":[89,90]},
-"191": {"idgham":[37,42],"madd":[55,56]},
-"192": {"ghunnah":[45,48,57,60],"idgham":[33,38],"madd":[40,42,62,63]},
-"193": {"ghunnah":[4,8,98,101],"madd":[57,59,106,107,111,112],"qalqalah":[8,10],"wasl":[24,25]},
-"194": {"ghunnah":[2,5,28,32,107,111,111,114],"madd":[119,120,124,125],"qalqalah":[18,20,69,71],"silent":[95,97],"wasl":[6,7,36,37,68,69]},
-"195": {"ghunnah":[183,186,204,207],"idgham":[16,20,52,56,92,96,132,136],"madd":[32,34,70,72,110,112,172,174,209,210],"qalqalah":[56,58,96,98,158,160],"silent":[163,165],"wasl":[157,158]},
-"196": {"ghunnah":[2,5],"idgham":[70,71],"madd":[47,48,74,75,79,80],"wasl":[16,17,24,25,40,41,69,70]},
-"197": {"ghunnah":[24,28,74,77,86,89],"madd":[33,34,69,71,91,92],"qalqalah":[14,16],"wasl":[2,3]},
-"198": {"ghunnah":[4,8,65,68],"madd":[57,58,102,103],"qalqalah":[8,10,96,98],"silent":[47,49],"wasl":[24,25]},
-"199": {"madd":[57,58,62,63],"wasl":[5,6,26,27,52,53]},
-"200": {"ghunnah":[4,7,11,14,16,19,45,49,71,74],"idgham":[28,29],"madd":[36,37,76,77,90,91],"wasl":[27,28,49,50,61,62]},
-"201": {"ghunnah":[2,5],"idgham":[50,55,59,60,94,99],"madd":[45,47,67,68,105,106],"qalqalah":[99,101],"silent":[24,26,81,83],"wasl":[6,7,16,17,58,59]},
-"202": {"ghunnah":[46,49],"madd":[8,9,62,63],"qalqalah":[56,58],"wasl":[35,36]},
-"203": {"ghunnah":[21,25,32,36,73,76],"idgham":[114,119,144,149,162,167,174,179,184,188],"madd":[78,80,100,103,126,127,135,137,194,195],"qalqalah":[52,54],"silent":[40,42],"wasl":[51,52]},
-"204": {"ghunnah":[53,56],"madd":[47,48,82,83],"silent":[40,42,59,61],"wasl":[15,16,30,31]},
-"205": {"idgham":[39,44,50,54,122,127],"madd":[135,136,140,141],"wasl":[2,3,60,61,75,76,87,88,100,101,130,131]},
-"206": {"ghunnah":[2,5,18,21],"madd":[66,67,84,85,92,93,102,103],"wasl":[6,7]}
+"1": {"madd_6":[40,42,42,44,44,46]},
+"2": {"ikhfa":[10,13,35,39,69,72],"idghaam_ghunnah":[55,60],"madd_2":[4,5,79,80],"madd_246":[104,105],"qalqalah":[43,45]},
+"3": {"ikhfa":[19,22,72,76],"idghaam_ghunnah":[103,109],"idghaam_no_ghunnah":[38,43],"idghaam_shafawi":[33,38],"madd_246":[120,121],"madd_munfasil":[14,16,81,83],"madd_muttasil":[92,94],"silent":[9,11,67,69]},
+"4": {"ikhfa":[9,13],"idghaam_shafawi":[4,9],"madd_2":[30,31,61,62],"madd_246":[84,85],"madd_muttasil":[39,41,78,80]},
+"5": {"ghunnah":[75,78,82,85],"ikhfa":[61,65],"ikhfa_shafawi":[38,42],"madd_2":[19,20,89,90],"madd_246":[94,95],"madd_munfasil":[48,50,56,58,68,70],"madd_muttasil":[32,34],"silent":[70,72]},
+"6": {"ghunnah":[13,16,60,63],"madd_246":[75,76],"hamzat_wasl":[17,18,64,65]},
+"7": {"ghunnah":[11,14,42,45],"ikhfa_shafawi":[23,27],"idghaam_ghunnah":[32,36],"madd_246":[55,56],"madd_muttasil":[49,51]},
+"8": {"ikhfa":[36,40],"madd_2":[51,52,59,60],"madd_246":[92,93],"madd_muttasil":[69,71],"silent":[65,67],"hamzat_wasl":[2,3,23,24,81,82]},
+"9": {"ikhfa":[67,70],"ikhfa_shafawi":[74,78],"madd_2":[19,20,27,28,99,100],"madd_246":[114,115],"madd_munfasil":[60,62],"madd_muttasil":[37,39],"silent":[33,35,62,64,88,90],"hamzat_wasl":[44,45]},
+"10": {"ghunnah":[14,17],"idghaam_ghunnah":[79,85],"madd_2":[17,18,67,68],"madd_246":[95,96],"qalqalah":[6,8],"hamzat_wasl":[27,28]},
+"11": {"ghunnah":[25,28,46,49],"idghaam_ghunnah":[136,141],"lam_shamsiyyah":[145,146],"madd_2":[17,18,38,39,149,150],"madd_246":[154,155],"madd_munfasil":[104,106,114,116],"madd_muttasil":[66,68],"qalqalah":[6,8,13,15,119,121],"silent":[83,85,106,108],"hamzat_wasl":[75,76,144,145]},
+"12": {"ikhfa":[118,122],"idghaam_ghunnah":[69,74,93,98,100,104],"madd_2":[114,115],"madd_246":[122,123],"qalqalah":[83,85,108,110]},
+"13": {"ghunnah":[78,81],"ikhfa":[45,49],"lam_shamsiyyah":[90,91],"madd_2":[94,95],"madd_246":[99,100],"qalqalah":[13,15,73,75],"hamzat_wasl":[8,9,68,69,89,90]},
+"14": {"ikhfa":[8,11],"madd_246":[40,41],"madd_munfasil":[15,17],"qalqalah":[34,36]},
+"15": {"ghunnah":[8,11],"ikhfa":[24,27],"madd_246":[29,30],"hamzat_wasl":[19,20]},
+"16": {"ghunnah":[39,42],"madd_2":[54,55],"madd_246":[71,72],"madd_munfasil":[12,14],"qalqalah":[33,35],"hamzat_wasl":[60,61]},
+"17": {"ghunnah":[2,5,15,18],"ikhfa":[90,94],"iqlab":[26,29],"idghaam_shafawi":[20,25],"madd_2":[78,79,135,136],"madd_246":[140,141],"madd_muttasil":[96,98]},
+"18": {"ghunnah":[80,83,88,91],"ikhfa":[50,54,96,99],"idghaam_ghunnah":[30,36],"idghaam_no_ghunnah":[42,48],"madd_246":[110,111],"qalqalah":[11,13,36,38,104,106],"hamzat_wasl":[6,7]},
+"19": {"ghunnah":[45,48],"ikhfa":[25,28],"lam_shamsiyyah":[106,107,134,135],"madd_2":[99,100,138,139],"madd_246":[143,144],"madd_muttasil":[4,6],"qalqalah":[89,91],"hamzat_wasl":[15,16,40,41,105,106,133,134]},
+"20": {"ikhfa":[75,79,162,166],"lam_shamsiyyah":[20,21,141,142],"madd_2":[28,29,57,58,83,84,109,110,134,135,208,209],"madd_246":[213,214],"madd_munfasil":[157,159],"qalqalah":[36,38],"hamzat_wasl":[19,20,140,141,203,204]},
+"21": {"ghunnah":[18,21,40,43],"lam_shamsiyyah":[39,40],"madd_2":[43,44],"madd_246":[48,49],"madd_munfasil":[13,15],"hamzat_wasl":[38,39]},
+"22": {"ghunnah":[29,32,133,136,231,234],"ikhfa":[23,27,187,191],"idghaam_ghunnah":[119,123,262,267],"lam_shamsiyyah":[42,43,200,201,236,237],"madd_2":[8,9,74,75,147,148,244,245],"madd_246":[269,270],"madd_munfasil":[163,165,226,228],"hamzat_wasl":[41,42,128,129,199,200,235,236]},
+"23": {"ghunnah":[88,91],"ikhfa":[29,32],"idghaam_no_ghunnah":[42,47],"madd_2":[102,103],"madd_246":[107,108],"madd_munfasil":[24,26],"hamzat_wasl":[97,98]},
+"24": {"idghaam_ghunnah":[43,47,78,82],"madd_2":[86,87],"madd_246":[99,100],"silent":[14,16],"hamzat_wasl":[6,7,58,59]},
+"25": {"madd_246":[62,63]},
+"26": {"ikhfa":[25,28,121,125],"idghaam_ghunnah":[51,56,83,88],"lam_shamsiyyah":[97,98],"madd_2":[2,3,58,59,69,70,110,111,125,126,141,142],"madd_246":[175,176],"madd_munfasil":[7,9],"qalqalah":[20,22,101,103],"hamzat_wasl":[96,97,145,146]},
+"27": {"ghunnah":[30,33,90,93,159,162,226,229],"ikhfa":[98,101],"idghaam_shafawi":[77,82],"lam_shamsiyyah":[39,40,242,243],"madd_2":[2,3,47,48,147,148,164,165,171,172,193,194,248,249],"madd_246":[291,292],"madd_munfasil":[7,9,55,57,154,156],"madd_muttasil":[263,265],"hamzat_wasl":[38,39,85,86,241,242]},
+"28": {"ghunnah":[104,107],"ikhfa":[26,30],"madd_2":[20,21],"madd_246":[188,189],"madd_munfasil":[55,57],"madd_muttasil":[63,65,140,142],"qalqalah":[41,43],"silent":[15,17,34,36],"hamzat_wasl":[73,74,108,109,131,132,164,165]},
+"29": {"ikhfa":[58,61],"idghaam_ghunnah":[75,79],"lam_shamsiyyah":[106,107],"madd_246":[138,139],"qalqalah":[80,82],"silent":[41,43],"hamzat_wasl":[21,22,79,80,105,106]},
+"30": {"ghunnah":[59,62,140,143],"ikhfa":[108,112],"idghaam_shafawi":[145,150],"lam_shamsiyyah":[45,46,80,81],"madd_2":[51,52,86,87],"madd_246":[156,157],"madd_muttasil":[101,103],"silent":[76,78],"hamzat_wasl":[44,45,67,68,79,80,116,117]},
+"31": {"ghunnah":[103,106],"ikhfa":[40,43],"idghaam_ghunnah":[57,61],"madd_2":[2,3,108,109],"madd_246":[133,134],"madd_munfasil":[7,9,96,98],"silent":[23,25,66,68,79,81,98,100],"hamzat_wasl":[71,72,122,123]},
+"32": {"idghaam_ghunnah":[163,167,224,228],"lam_shamsiyyah":[68,69,87,88,145,146],"madd_2":[63,64,77,78,140,141,179,180,189,190,213,214],"madd_246":[234,235],"madd_munfasil":[40,42],"silent":[125,127,139,140],"hamzat_wasl":[26,27,34,35,67,68,86,87,132,133,144,145,172,173,205,206]},
+"33": {"ghunnah":[7,10],"ikhfa":[121,125,185,189],"idghaam_ghunnah":[178,183],"madd_2":[37,38,168,169,176,177],"madd_246":[228,229],"silent":[132,134,195,197],"hamzat_wasl":[30,31,77,78,89,90,108,109,137,138,204,205]},
+"34": {"ghunnah":[12,15],"ikhfa":[23,27],"idghaam_ghunnah":[77,81],"madd_246":[97,98],"madd_muttasil":[35,37],"qalqalah":[91,93]},
+"35": {"ghunnah":[20,23,33,36],"ikhfa":[51,54],"idghaam_ghunnah":[46,51],"madd_2":[2,3,84,85],"madd_246":[159,160],"madd_munfasil":[7,9],"hamzat_wasl":[96,97]},
+"36": {"ghunnah":[89,92],"lam_shamsiyyah":[88,89],"madd_2":[31,32,83,84,110,111],"madd_246":[115,116],"madd_munfasil":[61,63],"madd_muttasil":[70,72],"silent":[20,22,52,54,66,68],"hamzat_wasl":[2,3,40,41,87,88]},
+"37": {"ghunnah":[18,21,271,274,310,313],"ikhfa":[217,220,235,239,298,301],"idghaam_shafawi":[119,124],"madd_2":[77,78,134,135,329,330],"madd_246":[334,335],"madd_munfasil":[82,84,143,146,199,201,292,295],"madd_muttasil":[91,93,155,157],"qalqalah":[225,227],"silent":[87,89,201,203,257,259,266,268,285,287,324,326],"hamzat_wasl":[24,25,40,41,127,128,243,244]},
+"38": {"ghunnah":[66,69,87,90,114,117,291,294],"ikhfa":[27,31,43,47,77,80,181,186,272,277,310,314],"idghaam_ghunnah":[280,286,317,321],"idghaam_no_ghunnah":[118,123,326,331],"idghaam_shafawi":[53,58],"lam_shamsiyyah":[86,87,290,291],"madd_2":[199,200,213,214,323,324],"madd_246":[341,342],"madd_munfasil":[19,21,145,148],"madd_muttasil":[230,232,236,238],"qalqalah":[7,9,31,33,47,49],"silent":[14,16,165,167],"hamzat_wasl":[6,7,61,62,72,73,85,86,155,156,289,290]},
+"39": {"ikhfa":[68,72,75,79,107,110],"madd_2":[16,17,31,32],"madd_246":[121,122],"silent":[85,87],"hamzat_wasl":[88,89]},
+"40": {"ghunnah":[2,5,133,136,170,173],"lam_shamsiyyah":[99,100],"madd_2":[35,36,94,95,191,192],"madd_246":[216,217],"madd_muttasil":[105,107],"qalqalah":[90,92,118,120,199,201,210,212],"silent":[24,26,56,58],"hamzat_wasl":[6,7,44,45,98,99,128,129,154,155,174,175,205,206]},
+"41": {"ghunnah":[15,18],"ikhfa":[9,13,33,37],"idghaam_ghunnah":[27,31,52,56],"idghaam_shafawi":[4,9],"lam_shamsiyyah":[75,76],"madd_2":[60,61,79,80],"madd_246":[84,85],"qalqalah":[68,70],"hamzat_wasl":[74,75]},
+"42": {"ghunnah":[117,120],"lam_shamsiyyah":[36,37],"madd_2":[40,41,45,46,108,109,137,138],"madd_246":[142,143],"madd_munfasil":[86,88],"madd_muttasil":[95,97],"silent":[20,22,32,34,91,93],"hamzat_wasl":[2,3,35,36,112,113]},
+"43": {"ghunnah":[143,146,266,269],"ikhfa":[41,45,53,57,250,254,296,299],"idghaam_shafawi":[29,34],"madd_2":[75,76,121,122,130,131,180,181],"madd_246":[310,311],"madd_munfasil":[167,169,243,245],"madd_muttasil":[202,204],"qalqalah":[45,47,197,199],"silent":[87,89,245,247],"hamzat_wasl":[66,67,90,91,108,109,185,186,227,228,261,262]},
+"44": {"ghunnah":[26,29,44,47],"ikhfa":[53,57,97,102,143,148],"iqlab":[180,184],"idghaam_mutajanisayn":[111,112],"idghaam_no_ghunnah":[196,201],"idghaam_shafawi":[115,120],"lam_shamsiyyah":[43,44,223,224],"madd_2":[17,18,38,39,227,228],"madd_246":[232,233],"madd_munfasil":[7,10],"qalqalah":[57,59,64,66],"silent":[152,154],"hamzat_wasl":[21,22,42,43,208,209,222,223]},
+"45": {"ikhfa":[23,27],"ikhfa_shafawi":[68,72],"idghaam_ghunnah":[61,66],"madd_2":[87,88],"madd_246":[92,93],"qalqalah":[45,47],"hamzat_wasl":[33,34,72,73]},
+"46": {"ghunnah":[112,115],"ikhfa":[120,124],"iqlab":[67,72],"idghaam_ghunnah":[20,24,49,53],"madd_2":[79,80,103,104,126,127],"madd_246":[174,175],"qalqalah":[148,150,168,170],"silent":[94,96],"hamzat_wasl":[30,31,107,108]},
+"47": {"ghunnah":[54,57],"lam_shamsiyyah":[53,54,111,112],"madd_2":[23,24,48,49,115,116],"madd_246":[120,121],"madd_muttasil":[37,39],"qalqalah":[19,21,85,87],"silent":[67,69],"hamzat_wasl":[52,53,100,101,110,111]},
+"48": {"ikhfa":[97,100,122,125],"ikhfa_shafawi":[56,60],"idghaam_ghunnah":[40,45],"madd_2":[17,18,66,67],"madd_246":[140,141],"madd_munfasil":[7,10,83,85],"silent":[78,80],"hamzat_wasl":[21,22]},
+"49": {"ghunnah":[89,92],"ikhfa":[126,129],"madd_246":[140,141],"madd_munfasil":[121,123],"madd_muttasil":[4,6,10,12],"qalqalah":[27,29,74,76],"silent":[81,83],"hamzat_wasl":[15,16,54,55,73,74,84,85]},
+"50": {"ghunnah":[23,26,45,48,99,102,135,138],"lam_shamsiyyah":[22,23],"madd_2":[17,18,36,37,171,172],"madd_246":[176,177],"madd_munfasil":[7,10,128,130],"madd_muttasil":[87,89],"silent":[64,66,130,132],"hamzat_wasl":[21,22,40,41,82,83,115,116,139,140,166,167]},
+"51": {"ikhfa":[101,104],"idghaam_ghunnah":[37,42,47,52],"lam_shamsiyyah":[77,78],"madd_2":[72,73,105,106,147,148,175,176],"madd_246":[190,191],"madd_muttasil":[129,131],"qalqalah":[184,186],"silent":[19,21,71,72,122,124,164,166],"hamzat_wasl":[10,11,64,65,76,77,89,90]},
+"52": {"ikhfa":[28,32],"ikhfa_shafawi":[18,22],"idghaam_ghunnah":[60,65,82,86],"idghaam_no_ghunnah":[72,77],"madd_2":[15,16,26,27,39,40],"madd_246":[92,93],"qalqalah":[6,8]},
+"53": {"ghunnah":[232,235],"ikhfa":[7,10,92,96,157,161,264,267],"idghaam_shafawi":[288,293],"madd_2":[34,35,62,63],"madd_246":[312,313],"madd_munfasil":[188,190,257,259],"madd_muttasil":[108,110,165,167],"qalqalah":[96,98,103,105,248,250],"silent":[181,183,259,261,301,303],"hamzat_wasl":[72,73,133,134,222,223]},
+"54": {"ghunnah":[2,5,88,91,137,140,195,198],"ikhfa":[84,88],"iqlab":[215,219],"idghaam_ghunnah":[164,169],"lam_shamsiyyah":[40,41,136,137,170,171,194,195],"madd_2":[46,47,49,50,156,157,213,214,293,294],"madd_246":[298,299],"madd_munfasil":[228,230],"qalqalah":[148,150],"hamzat_wasl":[16,17,24,25,39,40,55,56,92,93,108,109,126,127,135,136,169,170,181,182,193,194,242,243,254,255,274,275,288,289]},
+"55": {"ghunnah":[43,46],"idghaam_ghunnah":[27,32],"madd_2":[48,49],"madd_246":[73,74],"qalqalah":[1,3],"silent":[6,8],"hamzat_wasl":[62,63]},
+"56": {"ghunnah":[83,86],"idghaam_ghunnah":[68,73,110,115],"madd_2":[45,46],"madd_246":[129,130],"qalqalah":[55,57],"silent":[15,17],"hamzat_wasl":[22,23,54,55,96,97,118,119]},
+"57": {"ikhfa":[102,107,111,116,140,144,146,149,192,196],"iqlab":[40,45],"idghaam_ghunnah":[131,136],"lam_shamsiyyah":[25,26,201,202],"madd_2":[31,32,68,69,120,121,188,189,209,210,217,218],"madd_246":[265,266],"madd_munfasil":[75,78,83,85],"madd_muttasil":[165,167],"qalqalah":[116,118,178,180],"hamzat_wasl":[7,8,24,25,160,161,200,201,232,233]},
+"58": {"ikhfa":[103,108],"idghaam_ghunnah":[145,149],"lam_shamsiyyah":[13,14],"madd_2":[41,42,59,60,110,111,134,135],"madd_246":[155,156],"hamzat_wasl":[2,3,12,13,63,64,126,127]},
+"59": {"ghunnah":[117,120],"idghaam_shafawi":[88,93],"madd_2":[41,42,53,54,100,101],"madd_246":[161,162],"madd_munfasil":[112,114,120,122],"qalqalah":[4,6],"silent":[69,71],"hamzat_wasl":[61,62,72,73]},
+"60": {"ghunnah":[33,36],"ikhfa":[18,22],"idghaam_ghunnah":[59,64],"madd_2":[45,46,57,58],"madd_246":[66,67],"madd_munfasil":[28,30],"hamzat_wasl":[6,7]},
+"61": {"ghunnah":[44,47],"idghaam_ghunnah":[35,39,55,60],"idghaam_no_ghunnah":[60,65],"madd_2":[8,9,31,32,41,42,74,75],"madd_246":[79,80],"hamzat_wasl":[69,70]},
+"62": {"ikhfa":[36,39],"madd_2":[18,19,21,22],"madd_246":[89,90],"hamzat_wasl":[65,66]},
+"63": {"ikhfa":[17,21,70,73,80,83],"idghaam_ghunnah":[35,40,65,70],"idghaam_no_ghunnah":[40,45],"madd_246":[127,128],"madd_muttasil":[21,23],"qalqalah":[8,10],"silent":[102,104]},
+"64": {"ghunnah":[115,118],"ikhfa":[17,20],"madd_2":[24,25,46,47,105,106],"madd_246":[144,145],"madd_munfasil":[110,112],"qalqalah":[70,72],"silent":[94,96,129,131],"hamzat_wasl":[30,31,52,53,76,77]},
+"65": {"ikhfa":[29,34],"idghaam_shafawi":[75,80],"madd_2":[40,41,87,88],"madd_246":[117,118],"madd_munfasil":[99,101],"silent":[56,58],"hamzat_wasl":[48,49,59,60]},
+"66": {"ghunnah":[53,56,87,90,98,101],"ikhfa":[38,42],"idghaam_ghunnah":[81,85],"madd_2":[65,66,114,115],"madd_246":[119,120],"madd_munfasil":[48,50],"silent":[33,35],"hamzat_wasl":[6,7,16,17,109,110]},
+"67": {"ghunnah":[44,47],"idghaam_ghunnah":[35,39,55,60],"idghaam_no_ghunnah":[60,65],"madd_2":[8,9,41,42,74,75],"madd_246":[79,80],"hamzat_wasl":[69,70]},
+"68": {"madd_2":[18,19,21,22],"madd_246":[60,61]},
+"69": {"ikhfa":[17,21,70,73,80,83,190,194],"iqlab":[134,137],"idghaam_ghunnah":[35,40,65,70,154,158],"idghaam_no_ghunnah":[40,45],"madd_246":[244,245],"madd_munfasil":[99,101,201,203],"madd_muttasil":[21,23,126,128,211,213],"qalqalah":[8,10],"silent":[101,103,184,187,203,205],"hamzat_wasl":[92,93,172,173,194,195,216,217]},
+"70": {"ikhfa":[121,125,125,128],"lam_shamsiyyah":[135,136],"madd_2":[49,50,139,140],"madd_246":[144,145],"madd_munfasil":[5,7,116,118],"madd_muttasil":[84,86],"silent":[7,9],"hamzat_wasl":[33,34,134,135]},
+"71": {"ghunnah":[96,99,192,195],"ikhfa":[92,96,113,116,163,167,173,177,178,181,216,219],"idghaam_ghunnah":[49,53],"idghaam_no_ghunnah":[31,36],"idghaam_shafawi":[26,31,132,137,203,208],"madd_2":[66,67,171,172],"madd_246":[223,224],"madd_munfasil":[80,82,108,110,185,187],"madd_muttasil":[89,91,126,128],"qalqalah":[8,10,46,48],"silent":[187,189],"hamzat_wasl":[147,148,177,178,211,212]},
+"72": {"ghunnah":[49,52],"ikhfa":[4,7],"idghaam_ghunnah":[44,49],"madd_2":[11,12,33,34,103,104],"madd_246":[133,134],"silent":[92,94,122,124],"hamzat_wasl":[17,18,74,75]},
+"73": {"ikhfa":[33,38,186,190,253,257],"ikhfa_shafawi":[120,124],"idghaam_ghunnah":[130,135],"idghaam_no_ghunnah":[135,140],"idghaam_shafawi":[79,84],"madd_2":[29,30,44,45,91,92,103,104,150,151,155,156],"madd_246":[282,283],"madd_munfasil":[210,212],"madd_muttasil":[112,114,250,252],"qalqalah":[107,109],"silent":[60,62],"hamzat_wasl":[52,53,63,64,165,166,220,221]},
+"74": {"ikhfa":[102,106,155,160],"iqlab":[44,47],"idghaam_ghunnah":[57,61,121,126],"madd_246":[229,230],"madd_munfasil":[9,11,167,169],"madd_muttasil":[36,38,177,179],"silent":[11,13,169,171,204,206],"hamzat_wasl":[2,3,77,78,138,139,160,161,182,183,211,212]},
+"75": {"ghunnah":[121,124,171,174],"ikhfa":[43,47],"idghaam_ghunnah":[131,137,142,147],"idghaam_no_ghunnah":[147,152],"madd_2":[53,54,127,128,157,158,196,197],"madd_246":[206,207],"madd_munfasil":[164,166,180,182],"silent":[38,40,78,80,166,168],"hamzat_wasl":[6,7,16,17,26,27,66,67]},
+"76": {"ghunnah":[34,37],"ikhfa":[55,58],"ikhfa_shafawi":[58,62],"madd_2":[64,65,68,69],"madd_246":[73,74],"madd_munfasil":[27,29,47,49],"silent":[29,31],"hamzat_wasl":[6,7,16,17,41,42]},
+"77": {"ghunnah":[14,17],"ikhfa":[106,110,110,113],"lam_shamsiyyah":[13,14],"madd_2":[69,70,72,73],"madd_246":[130,131],"madd_munfasil":[101,103],"silent":[9,11,31,33,64,66],"hamzat_wasl":[12,13,78,79,119,120]},
+"78": {"lam_shamsiyyah":[16,17],"madd_2":[57,58],"madd_246":[62,63],"qalqalah":[20,22],"silent":[38,40],"hamzat_wasl":[15,16]},
+"79": {"ghunnah":[123,126],"idghaam_no_ghunnah":[103,108],"lam_shamsiyyah":[122,123],"madd_2":[31,32,100,101,126,127],"madd_246":[131,132],"qalqalah":[43,45,48,50],"hamzat_wasl":[121,122]},
+"80": {"ikhfa_shafawi":[70,74],"idghaam_ghunnah":[88,93],"madd_2":[50,51,101,102],"madd_246":[106,107],"madd_munfasil":[30,32],"hamzat_wasl":[45,46,96,97]},
+"81": {"ghunnah":[2,5,55,58],"ikhfa":[45,49,72,75],"idghaam_ghunnah":[40,45,83,88],"lam_shamsiyyah":[23,24,54,55],"madd_246":[94,95],"madd_muttasil":[60,62],"hamzat_wasl":[22,23,53,54]},
+"82": {"ghunnah":[86,89],"ikhfa":[41,45,69,73],"idghaam_ghunnah":[100,104],"idghaam_shafawi":[64,69],"madd_246":[113,114],"madd_munfasil":[28,30,36,38,48,50],"silent":[50,52]},
+"83": {"ikhfa":[4,7],"madd_2":[11,12,46,47,66,67],"madd_246":[71,72],"madd_munfasil":[25,27],"hamzat_wasl":[35,36,61,62]},
+"84": {"ikhfa":[30,35,36,39],"idghaam_shafawi":[22,27],"madd_2":[57,58],"madd_246":[76,77],"qalqalah":[70,72],"hamzat_wasl":[35,36,65,66]},
+"85": {"ghunnah":[206,209],"ikhfa":[35,40,307,311,311,314],"ikhfa_shafawi":[122,126],"idghaam_ghunnah":[132,137],"idghaam_no_ghunnah":[137,142,295,300],"idghaam_shafawi":[81,86,314,319],"lam_shamsiyyah":[205,206],"madd_2":[46,47,93,94,105,106,273,274,282,283],"madd_246":[325,326],"madd_muttasil":[114,116,219,221],"qalqalah":[11,13,109,111,194,196],"silent":[62,64,159,161,201,203,243,245],"hamzat_wasl":[54,55,65,66,162,163,174,175,204,205,250,251]},
+"86": {"ikhfa":[32,36,60,64,141,144,153,158,173,176],"idghaam_ghunnah":[117,122],"madd_2":[30,31,95,96,197,198],"madd_246":[216,217],"madd_munfasil":[129,131],"qalqalah":[8,10,101,103],"silent":[15,17,131,133,179,181],"hamzat_wasl":[70,71,122,123,172,173,205,206]},
+"87": {"ikhfa":[4,8,26,29],"idghaam_ghunnah":[21,26],"idghaam_no_ghunnah":[82,87],"madd_2":[69,70,169,170],"madd_246":[174,175],"madd_munfasil":[51,53],"madd_muttasil":[14,16,75,77],"silent":[40,42,99,101,112,114],"hamzat_wasl":[45,46,104,105,132,133,164,165]},
+"88": {"ghunnah":[65,68,144,147,180,183],"ikhfa":[43,47,115,119],"madd_2":[53,54,73,74,187,188],"madd_246":[192,193],"madd_munfasil":[127,129],"silent":[38,40,103,105],"hamzat_wasl":[6,7,16,17,26,27,85,86]},
+"89": {"ikhfa":[312,315],"ikhfa_shafawi":[66,70],"idghaam_ghunnah":[130,135,159,163],"madd_2":[86,87,328,329],"madd_246":[333,334],"madd_munfasil":[125,127,146,148,154,156],"madd_muttasil":[165,167],"qalqalah":[47,49],"hamzat_wasl":[5,6,24,25,91,92,170,171,230,231,260,261,299,300,323,324]},
+"90": {"ghunnah":[84,87],"ikhfa":[40,44],"idghaam_no_ghunnah":[95,101],"madd_2":[50,51,103,104],"madd_246":[108,109],"silent":[35,37],"hamzat_wasl":[8,9,18,19,59,60]},
+"91": {"lam_shamsiyyah":[16,17],"madd_2":[57,58],"madd_246":[62,63],"qalqalah":[20,22],"silent":[38,40],"hamzat_wasl":[15,16]},
+"92": {"ikhfa":[28,33,89,94],"idghaam_no_ghunnah":[35,40],"madd_2":[111,112],"madd_246":[116,117],"silent":[18,20,51,53,79,81,98,100],"hamzat_wasl":[61,62,106,107]},
+"93": {"ikhfa":[126,130],"madd_2":[31,32,65,66,68,69,130,131],"madd_246":[135,136],"qalqalah":[43,45,48,50]},
+"94": {"idghaam_ghunnah":[30,35,35,40],"lam_shamsiyyah":[94,95],"madd_246":[128,129],"madd_munfasil":[4,6,51,53,62,64],"madd_muttasil":[86,88,101,103],"hamzat_wasl":[77,78,93,94]},
+"95": {"ghunnah":[2,5],"ikhfa_shafawi":[143,147],"idghaam_ghunnah":[152,156],"lam_shamsiyyah":[26,27,103,104,118,119],"madd_2":[140,141],"madd_246":[173,174],"madd_muttasil":[94,96,110,112,125,127],"qalqalah":[80,82],"silent":[63,65,75,77],"hamzat_wasl":[25,26,38,39,102,103,117,118]},
+"96": {"ghunnah":[9,12],"ikhfa":[124,128],"ikhfa_shafawi":[75,79,150,154],"idghaam_ghunnah":[85,90],"lam_shamsiyyah":[94,95],"madd_2":[83,84,121,122,147,148],"madd_246":[175,176],"madd_munfasil":[27,30],"madd_muttasil":[100,102],"silent":[39,41,52,54,134,136,164,166],"hamzat_wasl":[20,21,44,45,93,94,107,108]},
+"97": {"ikhfa_shafawi":[43,47],"idghaam_ghunnah":[31,35,61,66],"madd_2":[59,60],"madd_246":[79,80],"madd_munfasil":[25,28],"madd_muttasil":[73,75],"hamzat_wasl":[18,19]},
+"98": {"ikhfa_shafawi":[43,47],"idghaam_ghunnah":[31,35,58,63],"madd_246":[76,77],"madd_munfasil":[25,28],"hamzat_wasl":[18,19]},
+"99": {"madd_2":[81,82],"madd_246":[86,87],"silent":[11,13],"hamzat_wasl":[21,22,51,52,66,67,76,77]},
+"100": {"ikhfa_shafawi":[100,104],"iqlab":[50,53],"idghaam_no_ghunnah":[72,77],"madd_2":[97,98],"madd_246":[165,166],"madd_munfasil":[67,69],"madd_muttasil":[84,86],"qalqalah":[93,95,120,122],"hamzat_wasl":[37,38]},
+"101": {"ikhfa":[149,153],"ikhfa_shafawi":[83,87],"iqlab":[42,44],"madd_2":[97,98,162,163,205,206],"madd_246":[210,211],"madd_muttasil":[45,47,64,66],"qalqalah":[59,61,153,155,170,172],"silent":[113,115,127,129,144,146],"hamzat_wasl":[7,8,87,88,177,178,200,201]},
+"102": {"idghaam_ghunnah":[41,45,47,51],"idghaam_shafawi":[28,33],"madd_2":[77,78],"madd_246":[82,83],"madd_munfasil":[57,59],"qalqalah":[10,12,53,55]},
+"103": {"ghunnah":[2,5],"ikhfa":[109,112],"iqlab":[19,22],"idghaam_shafawi":[29,34],"madd_2":[48,49,86,87,130,131],"madd_246":[149,150],"madd_munfasil":[53,55],"silent":[82,84,97,99],"hamzat_wasl":[108,109,138,139]},
+"104": {"ghunnah":[32,35],"idghaam_ghunnah":[43,48],"idghaam_no_ghunnah":[48,53],"madd_2":[18,19,62,63],"madd_246":[67,68],"hamzat_wasl":[57,58]},
+"105": {"ikhfa_shafawi":[77,81],"idghaam_ghunnah":[89,94],"idghaam_no_ghunnah":[18,23,94,99],"madd_246":[142,143],"madd_munfasil":[12,15,23,25,129,131],"madd_muttasil":[138,140],"qalqalah":[66,68],"hamzat_wasl":[40,41,55,56]},
+"106": {"ikhfa":[8,12,12,15,32,36,50,54,54,57],"lam_shamsiyyah":[64,65],"madd_2":[68,69],"madd_246":[73,74],"madd_munfasil":[45,47],"hamzat_wasl":[63,64]},
+"107": {"idghaam_ghunnah":[40,45],"madd_246":[47,48]},
+"108": {"ghunnah":[44,47],"lam_shamsiyyah":[43,44],"madd_2":[15,16,47,48],"madd_246":[52,53],"madd_muttasil":[36,38]},
+"109": {"ghunnah":[40,43],"ikhfa":[18,22],"madd_2":[46,47,55,56],"madd_246":[65,66],"hamzat_wasl":[6,7]},
+"110": {"idghaam_ghunnah":[10,14],"idghaam_shafawi":[22,27],"madd_246":[58,59]},
+"111": {"madd_2":[60,61],"madd_246":[65,66],"madd_munfasil":[5,7],"madd_muttasil":[51,53],"silent":[7,9],"hamzat_wasl":[44,45]},
+"112": {"madd_2":[20,21],"madd_246":[30,31]},
+"113": {"ghunnah":[44,47,70,73],"ikhfa":[66,70],"lam_shamsiyyah":[10,11],"madd_2":[87,88],"madd_246":[92,93],"madd_munfasil":[37,39],"madd_muttasil":[4,6],"qalqalah":[58,60],"silent":[39,41],"hamzat_wasl":[9,10,82,83]},
+"114": {"ghunnah":[17,20],"madd_246":[44,45],"hamzat_wasl":[32,33]},
+"115": {"ghunnah":[23,26,46,49],"ikhfa":[31,35],"idghaam_ghunnah":[54,59],"madd_2":[11,12],"madd_246":[81,82],"madd_munfasil":[17,20,26,28,49,51],"silent":[6,8],"hamzat_wasl":[72,73]},
+"116": {"ghunnah":[20,23,59,62],"lam_shamsiyyah":[58,59],"madd_246":[108,109],"madd_munfasil":[23,25,43,45],"madd_muttasil":[89,91],"silent":[13,15,34,36,45,47],"hamzat_wasl":[57,58,68,69]},
+"117": {"madd_246":[85,86],"madd_munfasil":[12,14,27,30]},
+"118": {"madd_246":[48,49],"silent":[37,39],"hamzat_wasl":[9,10]},
+"119": {"ikhfa":[25,28],"madd_2":[38,39],"madd_246":[43,44],"silent":[9,11,33,35],"hamzat_wasl":[24,25]},
+"120": {"lam_shamsiyyah":[12,13],"madd_2":[25,26],"madd_246":[30,31],"hamzat_wasl":[11,12]},
+"121": {"ghunnah":[15,18],"madd_2":[33,34],"madd_246":[38,39],"madd_munfasil":[5,7],"silent":[7,9],"hamzat_wasl":[28,29]},
+"122": {"madd_2":[18,19],"madd_246":[21,22]},
+"123": {"ghunnah":[62,65],"ikhfa":[22,25],"ikhfa_shafawi":[25,29],"idghaam_ghunnah":[80,85],"madd_2":[31,32,68,69],"madd_246":[164,165],"madd_munfasil":[134,136],"qalqalah":[35,37],"silent":[125,127],"hamzat_wasl":[101,102]},
+"124": {"ghunnah":[11,14,58,61,73,76],"ikhfa":[54,58],"idghaam_shafawi":[40,45],"madd_2":[52,53],"madd_246":[89,90],"qalqalah":[83,85]},
+"125": {"ghunnah":[12,15],"ikhfa":[36,39],"madd_246":[43,44],"madd_munfasil":[5,7,15,17],"silent":[7,9]},
+"126": {"ghunnah":[16,19,40,43,68,71],"ikhfa":[8,11],"idghaam_ghunnah":[119,124],"madd_2":[53,54],"madd_246":[143,144],"madd_munfasil":[19,21,27,29,92,94],"madd_muttasil":[75,77],"qalqalah":[116,118]},
+"127": {"ghunnah":[186,189],"ikhfa":[20,24],"madd_2":[67,68,167,168,204,205],"madd_246":[209,210],"madd_muttasil":[146,148,173,175],"qalqalah":[142,144],"silent":[80,82],"hamzat_wasl":[8,9,87,88]},
+"128": {"ghunnah":[65,68],"idghaam_ghunnah":[100,104],"madd_2":[125,126,134,135],"madd_246":[153,154],"madd_munfasil":[58,60],"madd_muttasil":[106,108],"silent":[36,38,60,62],"hamzat_wasl":[25,26,41,42,51,52,69,70,129,130]},
+"129": {"ikhfa":[22,26,33,37,160,163],"iqlab":[52,55],"idghaam_ghunnah":[100,104],"madd_246":[181,182],"madd_munfasil":[5,7],"qalqalah":[26,28],"silent":[7,9],"hamzat_wasl":[146,147]},
+"130": {"idghaam_ghunnah":[57,62],"lam_shamsiyyah":[40,41,66,67],"madd_2":[74,75],"madd_246":[100,101],"madd_munfasil":[17,19],"qalqalah":[6,8,54,56],"hamzat_wasl":[39,40,65,66]},
+"131": {"ghunnah":[133,136,174,177],"ikhfa":[61,65,155,158],"idghaam_ghunnah":[82,86,112,117],"madd_2":[50,51,55,56,171,172],"madd_246":[203,204],"madd_munfasil":[121,123,128,130],"madd_muttasil":[10,12,142,144],"qalqalah":[67,69],"silent":[39,41,95,97],"hamzat_wasl":[21,22,159,160]},
+"132": {"idghaam_no_ghunnah":[46,51],"madd_2":[33,34],"madd_246":[97,98],"silent":[8,10]},
+"133": {"ghunnah":[57,60],"ikhfa":[109,113],"idghaam_ghunnah":[95,100,144,150],"lam_shamsiyyah":[26,27,66,67,81,82],"madd_2":[93,94,107,108],"madd_246":[156,157],"qalqalah":[150,152],"silent":[125,127,136,138],"hamzat_wasl":[25,26,39,40,52,53,65,66,80,81,113,114]},
+"134": {"ghunnah":[4,7,114,117,139,142,160,163],"ikhfa":[91,94,101,105],"lam_shamsiyyah":[28,29,120,121],"madd_2":[48,49],"madd_246":[188,189],"madd_munfasil":[175,177],"madd_muttasil":[184,186],"qalqalah":[32,34,57,59,124,126],"silent":[43,45],"hamzat_wasl":[27,28,56,57,119,120]},
+"135": {"ghunnah":[4,7],"ikhfa":[81,84],"ikhfa_shafawi":[55,59],"lam_shamsiyyah":[29,30],"madd_2":[59,60],"madd_246":[86,87],"madd_munfasil":[42,45],"qalqalah":[33,35],"hamzat_wasl":[28,29]},
+"136": {"ghunnah":[50,53,58,61],"ikhfa":[3,6],"madd_2":[35,36,85,86,113,114],"madd_246":[118,119],"qalqalah":[31,33],"silent":[74,76,100,102],"hamzat_wasl":[2,3,45,46]},
+"137": {"ghunnah":[124,127,207,210],"madd_2":[63,64,85,86,104,105,256,257],"madd_246":[281,282],"madd_munfasil":[170,172],"madd_muttasil":[179,181],"silent":[40,42,200,202,270,272],"hamzat_wasl":[14,15,24,25,69,70,94,95,147,148]},
+"138": {"ghunnah":[183,186],"ikhfa":[149,154,173,177,196,200],"idghaam_ghunnah":[69,73],"idghaam_no_ghunnah":[99,104],"madd_2":[4,5,120,121,147,148],"madd_246":[206,207],"madd_munfasil":[19,21,87,90,140,142],"madd_muttasil":[28,30],"qalqalah":[129,131,200,202],"silent":[54,56,115,117],"hamzat_wasl":[36,37,128,129]},
+"139": {"ghunnah":[2,5],"idghaam_ghunnah":[27,32,53,58],"madd_2":[49,50],"madd_246":[77,78],"madd_muttasil":[8,10,14,16],"silent":[66,68]},
+"140": {"idghaam_ghunnah":[41,46],"madd_2":[39,40,74,75],"madd_246":[79,80],"qalqalah":[25,27],"hamzat_wasl":[15,16,69,70]},
+"141": {"ikhfa":[9,12],"ikhfa_shafawi":[147,151],"idghaam_ghunnah":[156,161],"idghaam_no_ghunnah":[161,166],"idghaam_shafawi":[19,24],"madd_2":[16,17,142,143],"madd_246":[178,179],"madd_muttasil":[61,63,96,98,125,127,153,155],"qalqalah":[92,94],"hamzat_wasl":[66,67]},
+"142": {"ghunnah":[71,74],"ikhfa":[65,69],"idghaam_ghunnah":[39,43,113,117],"madd_2":[4,5,25,26,53,54,80,81,143,144],"madd_246":[219,220],"madd_munfasil":[91,93],"qalqalah":[7,9],"hamzat_wasl":[150,151,208,209]},
+"143": {"ghunnah":[4,7,203,206,283,286],"ikhfa":[83,86,106,110,129,132,276,281],"idghaam_ghunnah":[252,257],"madd_2":[31,32,49,50,58,59,113,114,122,123,178,179,194,195,225,226,246,247,309,310],"madd_246":[359,360],"madd_munfasil":[78,80,286,288],"madd_muttasil":[11,13],"qalqalah":[305,307,317,319],"hamzat_wasl":[128,129,141,142,158,159,348,349]},
+"144": {"ghunnah":[20,23,47,50],"idghaam_ghunnah":[109,114],"lam_shamsiyyah":[46,47,118,119],"madd_2":[8,9,60,61,63,64,76,77,122,123],"madd_246":[127,128],"madd_munfasil":[14,17,90,92],"hamzat_wasl":[25,26,45,46,117,118]},
+"145": {"ikhfa":[37,41,91,95],"idghaam_ghunnah":[50,55,62,66,111,115],"idghaam_no_ghunnah":[74,80],"madd_2":[16,17,182,183],"madd_246":[187,188],"qalqalah":[6,8],"silent":[140,142,161,163],"hamzat_wasl":[22,23,177,178]},
+"146": {"ghunnah":[261,264],"ikhfa":[246,251],"idghaam_ghunnah":[88,92,140,144,192,197,199,203],"idghaam_no_ghunnah":[111,116],"lam_shamsiyyah":[160,161],"madd_2":[21,22,251,252,288,289,316,317],"madd_246":[321,322],"silent":[96,98,127,129,148,150,207,209,277,279,303,305],"hamzat_wasl":[27,28,56,57,75,76,159,160,218,219]},
+"147": {"madd_2":[31,32,77,78],"madd_246":[129,130],"madd_muttasil":[44,46],"qalqalah":[92,94],"silent":[20,22,118,120],"hamzat_wasl":[2,3,49,50]},
+"148": {"ghunnah":[107,110],"ikhfa":[63,68],"iqlab":[29,32],"idghaam_no_ghunnah":[71,77],"madd_2":[39,40,79,80,112,113,184,185],"madd_246":[189,190],"qalqalah":[60,62],"silent":[102,104,179,181],"hamzat_wasl":[2,3,159,160]},
+"149": {"ghunnah":[4,7,46,49,136,139],"idghaam_no_ghunnah":[81,86],"madd_2":[150,151],"madd_246":[155,156],"madd_munfasil":[18,20],"qalqalah":[56,58],"silent":[41,43,65,67,74,76],"hamzat_wasl":[145,146]},
+"150": {"ghunnah":[4,7,219,222,225,228],"ikhfa":[57,62],"iqlab":[94,97],"lam_shamsiyyah":[349,350],"madd_2":[40,41,48,49,353,354],"madd_246":[358,359],"madd_munfasil":[21,24,102,104,193,195],"madd_muttasil":[310,312],"qalqalah":[212,214,268,270,323,325],"silent":[263,265],"hamzat_wasl":[145,146,211,212,229,230,239,240,301,302,338,339,348,349]},
+"151": {"ikhfa":[67,70],"lam_shamsiyyah":[81,82],"madd_2":[85,86],"madd_246":[90,91],"qalqalah":[38,40],"hamzat_wasl":[12,13,80,81]},
+"152": {"ghunnah":[2,5],"ikhfa":[83,87],"idghaam_ghunnah":[57,62],"idghaam_no_ghunnah":[62,67],"lam_shamsiyyah":[102,103],"madd_2":[97,98,118,119],"madd_246":[143,144],"qalqalah":[33,35,126,128],"silent":[25,27,96,97],"hamzat_wasl":[6,7,16,17,28,29,89,90,101,102,132,133]},
+"153": {"ghunnah":[39,42,83,86],"iqlab":[55,58,98,101],"idghaam_no_ghunnah":[118,123],"lam_shamsiyyah":[23,24],"madd_246":[125,126],"madd_munfasil":[76,78],"silent":[19,21,49,51,78,80],"hamzat_wasl":[2,3,22,23]},
+"154": {"ghunnah":[4,7],"idghaam_ghunnah":[18,23,79,84],"idghaam_no_ghunnah":[91,96],"madd_246":[130,131],"hamzat_wasl":[28,29,45,46]},
+"155": {"ghunnah":[66,69,201,204],"ikhfa":[138,142,251,255,274,278,287,290,335,338],"idghaam_no_ghunnah":[44,50],"idghaam_shafawi":[133,138],"lam_shamsiyyah":[86,87,186,187],"madd_2":[27,28,55,56,154,155,351,352],"madd_246":[356,357],"madd_munfasil":[69,71,204,206],"madd_muttasil":[194,196,257,259,280,282],"qalqalah":[31,33,90,92,142,144],"hamzat_wasl":[2,3,85,86,185,186,304,305,320,321,346,347]},
+"156": {"ghunnah":[69,72],"ikhfa":[168,172],"ikhfa_shafawi":[246,250],"idghaam_ghunnah":[46,50],"lam_shamsiyyah":[29,30,221,222],"madd_2":[22,23,120,121,228,229,256,257],"madd_246":[271,272],"madd_munfasil":[80,82,105,107],"madd_muttasil":[131,133],"qalqalah":[7,9,76,78],"silent":[227,228],"hamzat_wasl":[2,3,28,29,54,55,220,221,234,235]},
+"157": {"ghunnah":[36,39,50,53,398,401],"ikhfa":[91,94,124,127,183,186,416,419],"ikhfa_shafawi":[141,145],"lam_shamsiyyah":[24,25,35,36,104,105,207,208,397,398],"madd_2":[76,77,113,114,167,168,216,217,297,298,355,356],"madd_246":[460,461],"madd_munfasil":[411,413,428,430],"madd_muttasil":[250,252,437,439],"silent":[348,350,393,395,433,435],"hamzat_wasl":[23,24,34,35,45,46,57,58,103,104,119,120,145,146,178,179,206,207,243,244,288,289,301,302,330,331,384,385,396,397,405,406,449,450]},
+"158": {"ghunnah":[20,23,29,32,198,201,212,215],"lam_shamsiyyah":[19,20,92,93,197,198],"madd_2":[82,83,98,99,101,102,126,127,148,149,254,255,259,260],"madd_246":[295,296],"madd_munfasil":[7,9,119,121],"silent":[171,173],"hamzat_wasl":[18,19,42,43,70,71,91,92,107,108,176,177,196,197,207,208,219,220,238,239,263,264]},
+"159": {"ghunnah":[24,27],"ikhfa":[4,8],"idghaam_ghunnah":[28,32],"madd_2":[57,58],"madd_246":[67,68],"madd_munfasil":[18,21],"hamzat_wasl":[42,43]},
+"160": {"ghunnah":[300,303],"ikhfa":[193,198,275,278,328,332,383,387,397,400],"iqlab":[153,155],"idghaam_ghunnah":[52,57,220,225],"lam_shamsiyyah":[307,308],"madd_2":[11,12,101,102,267,268,337,338,353,354,380,381],"madd_246":[415,416],"madd_munfasil":[67,69,82,85,113,115,390,392],"qalqalah":[198,200,349,351],"silent":[323,325,392,394],"hamzat_wasl":[17,18,91,92,121,122,139,140,151,152,170,171,260,261,295,296,306,307]},
+"161": {"idghaam_ghunnah":[102,106,132,138],"madd_2":[33,34,161,162],"madd_246":[190,191],"madd_muttasil":[156,158],"qalqalah":[107,109],"silent":[28,30,58,60,93,95,114,116],"hamzat_wasl":[20,21,39,40,106,107,117,118,179,180]},
+"162": {"idghaam_ghunnah":[105,111],"lam_shamsiyyah":[115,116],"madd_246":[149,150],"madd_muttasil":[121,123],"qalqalah":[102,104],"silent":[27,29,138,140],"hamzat_wasl":[10,11,54,55,114,115]},
+"163": {"ikhfa_shafawi":[213,217],"idghaam_ghunnah":[150,155],"lam_shamsiyyah":[87,88],"madd_2":[198,199],"madd_246":[238,239],"qalqalah":[91,93,135,137,206,208],"silent":[227,229],"hamzat_wasl":[19,20,31,32,57,58,86,87]},
+"164": {"ghunnah":[17,20],"ikhfa":[102,107,111,116],"idghaam_ghunnah":[21,26],"madd_246":[172,173],"silent":[120,122],"hamzat_wasl":[56,57]},
+"165": {"ghunnah":[4,7],"ikhfa":[41,44],"iqlab":[126,130,136,140],"lam_shamsiyyah":[77,78],"madd_246":[162,163],"madd_munfasil":[36,38],"madd_muttasil":[81,83],"silent":[14,16,29,31,115,117,151,153],"hamzat_wasl":[50,51,76,77,98,99]},
+"166": {"ghunnah":[4,7],"idghaam_ghunnah":[20,25],"madd_2":[77,78],"madd_246":[83,84],"silent":[15,17,32,34,63,65]},
+"167": {"ghunnah":[35,38,113,116,150,153],"idghaam_ghunnah":[79,83],"idghaam_no_ghunnah":[165,170],"madd_2":[71,72,155,156],"madd_246":[172,173],"madd_muttasil":[95,97],"qalqalah":[29,31],"hamzat_wasl":[64,65,100,101,135,136]},
+"168": {"ikhfa_shafawi":[101,105],"idghaam_ghunnah":[36,42],"lam_shamsiyyah":[50,51,121,122],"madd_2":[11,12,54,55,82,83,98,99,114,115],"madd_246":[155,156],"hamzat_wasl":[21,22,49,50,105,106,120,121]},
+"169": {"iqlab":[12,15],"idghaam_ghunnah":[30,34,125,129,143,148],"idghaam_no_ghunnah":[217,222,316,321],"idghaam_shafawi":[192,197],"lam_shamsiyyah":[290,291],"madd_2":[49,50,74,75,154,155,200,201,211,212],"madd_246":[357,358],"qalqalah":[84,86],"silent":[39,41,232,234,274,276],"hamzat_wasl":[42,43,79,80,204,205,241,242,256,257,289,290,298,299]},
+"170": {"ghunnah":[65,68],"lam_shamsiyyah":[52,53],"madd_2":[34,35,59,60],"madd_246":[100,101],"qalqalah":[84,86],"silent":[48,50,58,59],"hamzat_wasl":[2,3,27,28,51,52,89,90]},
+"171": {"ghunnah":[42,45,61,64,71,74],"ikhfa_shafawi":[119,123],"iqlab":[84,88],"idghaam_ghunnah":[55,59,129,133],"madd_2":[47,48,76,77,116,117],"madd_246":[173,174],"madd_munfasil":[64,66,104,106],"qalqalah":[11,13],"silent":[66,68,99,101,141,143],"hamzat_wasl":[17,18,133,134]},
+"172": {"ghunnah":[193,196,200,203],"ikhfa":[44,48,98,101,158,162],"iqlab":[25,28],"madd_2":[185,186,212,213,219,220],"madd_246":[224,225],"madd_munfasil":[31,33,92,95,153,155],"qalqalah":[149,151],"silent":[135,137,168,170],"hamzat_wasl":[178,179]},
+"173": {"ghunnah":[19,22,64,67],"ikhfa":[51,55],"iqlab":[84,87],"idghaam_ghunnah":[78,83],"madd_246":[137,138],"madd_munfasil":[12,14,24,26],"madd_muttasil":[41,43],"qalqalah":[55,57,131,133],"silent":[14,16],"hamzat_wasl":[126,127]},
+"174": {"madd_2":[6,7,30,31],"madd_246":[56,57],"hamzat_wasl":[22,23]},
+"175": {"ikhfa":[63,66],"lam_shamsiyyah":[93,94],"madd_2":[44,45,53,54,101,102],"madd_246":[126,127],"madd_munfasil":[32,34],"hamzat_wasl":[2,3,26,27,62,63,92,93,118,119]},
+"176": {"ghunnah":[42,45],"ikhfa":[128,132],"idghaam_mutajanisayn":[179,180],"madd_2":[25,26,39,40,91,92,105,106,184,185,236,237],"madd_246":[286,287],"madd_munfasil":[47,49],"qalqalah":[246,248],"silent":[225,227],"hamzat_wasl":[65,66,77,78,116,117,197,198,207,208,245,246,253,254]},
+"177": {"ikhfa":[65,68],"madd_2":[54,55],"madd_246":[92,93],"madd_muttasil":[2,4],"silent":[43,45,81,83],"hamzat_wasl":[15,16,25,26]},
+"178": {"idghaam_ghunnah":[2,6,43,47],"madd_2":[79,80],"madd_246":[84,85],"madd_muttasil":[62,64],"silent":[58,60],"hamzat_wasl":[11,12,26,27,74,75]},
+"179": {"ghunnah":[25,28,51,54],"ikhfa":[62,65],"idghaam_ghunnah":[37,43],"idghaam_no_ghunnah":[79,84,120,125,161,166],"madd_2":[211,212,256,257],"madd_246":[261,262],"madd_munfasil":[184,186],"madd_muttasil":[193,195,239,241],"qalqalah":[6,8,129,131],"silent":[189,191,235,237],"hamzat_wasl":[46,47,57,58,202,203,251,252]},
+"180": {"madd_2":[102,103],"madd_246":[138,139],"madd_munfasil":[87,89],"madd_muttasil":[19,21,96,98],"qalqalah":[39,41,108,110],"silent":[60,62,127,129],"hamzat_wasl":[10,11,24,25,38,39,63,64]},
+"181": {"ghunnah":[4,7,23,26],"idghaam_ghunnah":[27,31],"madd_2":[56,57],"madd_246":[66,67],"madd_munfasil":[18,20],"qalqalah":[14,16],"hamzat_wasl":[41,42]},
+"182": {"idghaam_shafawi":[54,59],"madd_2":[31,32],"madd_246":[81,82],"qalqalah":[46,48],"silent":[20,22],"hamzat_wasl":[2,3]},
+"183": {"ghunnah":[19,22],"madd_246":[35,36]},
+"184": {"ghunnah":[48,51],"ikhfa":[44,48],"idghaam_ghunnah":[77,82],"idghaam_shafawi":[39,44],"madd_246":[84,85],"silent":[21,23]},
+"185": {"ikhfa":[11,14,83,87],"iqlab":[161,165],"idghaam_ghunnah":[90,94,109,113],"lam_shamsiyyah":[35,36],"madd_2":[41,42,44,45,172,173],"madd_246":[182,183],"madd_munfasil":[103,106],"qalqalah":[125,127],"silent":[17,19],"hamzat_wasl":[34,35,50,51,73,74,124,125]},
+"186": {"idghaam_ghunnah":[2,6],"madd_2":[39,40,64,65],"madd_246":[80,81],"hamzat_wasl":[13,14]},
+"187": {"ghunnah":[59,62,220,223,249,252,287,290,302,305],"ikhfa":[78,81,268,271],"idghaam_ghunnah":[199,203],"lam_shamsiyyah":[21,22,144,145,301,302],"madd_2":[47,48,150,151,153,154,284,285],"madd_246":[321,322],"madd_munfasil":[115,117],"qalqalah":[109,111],"hamzat_wasl":[20,21,143,144,159,160,272,273,300,301]},
+"188": {"ikhfa":[85,88],"idghaam_ghunnah":[34,39,190,194,210,214],"idghaam_no_ghunnah":[200,205],"lam_shamsiyyah":[156,157],"madd_246":[220,221],"madd_munfasil":[7,9],"madd_muttasil":[63,65,160,162],"hamzat_wasl":[68,69,98,99,110,111,129,130,155,156]},
+"189": {"ghunnah":[98,101,162,165,245,248],"ikhfa":[139,144],"idghaam_ghunnah":[26,31,34,38,44,48],"idghaam_mutajanisayn":[176,177],"idghaam_no_ghunnah":[232,238],"idghaam_shafawi":[21,26],"lam_shamsiyyah":[255,256],"madd_2":[38,39,111,112,156,157,228,229,259,260],"madd_246":[264,265],"madd_munfasil":[165,167],"hamzat_wasl":[5,6,187,188,254,255]},
+"190": {"ghunnah":[4,7,99,102],"ikhfa":[29,34],"madd_2":[16,17,25,26,44,45,71,72,84,85],"madd_246":[112,113],"madd_munfasil":[7,9,62,64],"madd_muttasil":[52,54],"hamzat_wasl":[89,90]},
+"191": {"idghaam_ghunnah":[37,42],"madd_246":[55,56]},
+"192": {"ikhfa":[45,48,57,60],"idghaam_ghunnah":[33,38],"madd_246":[62,63],"madd_munfasil":[40,42]},
+"193": {"ikhfa":[4,8,98,101],"madd_2":[106,107],"madd_246":[111,112],"madd_muttasil":[57,59],"qalqalah":[8,10],"hamzat_wasl":[24,25]},
+"194": {"ghunnah":[2,5],"ikhfa":[28,32,107,111,111,114],"madd_2":[119,120],"madd_246":[124,125],"qalqalah":[18,20,69,71],"silent":[95,97],"hamzat_wasl":[6,7,36,37,68,69]},
+"195": {"ghunnah":[183,186],"ikhfa":[204,207],"idghaam_ghunnah":[16,20,52,56,92,96,132,136],"madd_246":[209,210],"madd_munfasil":[32,34,70,72,110,112],"madd_muttasil":[172,174],"qalqalah":[56,58,96,98,158,160],"silent":[163,165],"hamzat_wasl":[157,158]},
+"196": {"ghunnah":[2,5],"lam_shamsiyyah":[70,71],"madd_2":[47,48,74,75],"madd_246":[79,80],"hamzat_wasl":[16,17,24,25,40,41,69,70]},
+"197": {"ikhfa":[24,28,74,77,86,89],"madd_2":[33,34],"madd_246":[91,92],"madd_munfasil":[69,71],"qalqalah":[14,16],"hamzat_wasl":[2,3]},
+"198": {"ikhfa":[4,8,65,68],"madd_2":[57,58],"madd_246":[102,103],"qalqalah":[8,10,96,98],"silent":[47,49],"hamzat_wasl":[24,25]},
+"199": {"madd_2":[57,58],"madd_246":[62,63],"hamzat_wasl":[5,6,26,27,52,53]},
+"200": {"ghunnah":[4,7,16,19,71,74],"ikhfa":[11,14,45,49],"lam_shamsiyyah":[28,29],"madd_2":[36,37,76,77],"madd_246":[90,91],"hamzat_wasl":[27,28,49,50,61,62]},
+"201": {"ghunnah":[2,5],"idghaam_ghunnah":[50,55],"idghaam_shafawi":[94,99],"lam_shamsiyyah":[59,60],"madd_2":[67,68],"madd_246":[105,106],"madd_muttasil":[45,47],"qalqalah":[99,101],"silent":[24,26,81,83],"hamzat_wasl":[6,7,16,17,58,59]},
+"202": {"ghunnah":[46,49],"madd_2":[8,9],"madd_246":[62,63],"qalqalah":[56,58],"hamzat_wasl":[35,36]},
+"203": {"ghunnah":[73,76],"ikhfa":[32,36],"ikhfa_shafawi":[21,25],"idghaam_ghunnah":[162,167,184,188],"idghaam_no_ghunnah":[114,119,144,149,174,179],"madd_2":[126,127],"madd_246":[194,195],"madd_munfasil":[78,80,100,103],"madd_muttasil":[135,137],"qalqalah":[52,54],"silent":[40,42],"hamzat_wasl":[51,52]},
+"204": {"ikhfa":[53,56],"madd_2":[47,48],"madd_246":[82,83],"silent":[40,42,59,61],"hamzat_wasl":[15,16,30,31]},
+"205": {"idghaam_ghunnah":[39,44,50,54,122,127],"madd_2":[135,136],"madd_246":[140,141],"hamzat_wasl":[2,3,60,61,75,76,87,88,100,101,130,131]},
+"206": {"ghunnah":[2,5],"ikhfa":[18,21],"madd_2":[66,67,84,85,92,93],"madd_246":[102,103],"hamzat_wasl":[6,7]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/70.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/70.json
index ed08610..3d12047 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/70.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/70.json
@@ -1,44 +1,44 @@
{
-"1": {"ghunnah":[53,57],"idgham":[64,68],"madd":[48,50]},
-"2": {"madd":[7,8,27,28]},
-"3": {"qalqalah":[28,29],"wasl":[6,7,18,19]},
-"4": {"ghunnah":[54,58],"idgham":[28,29],"madd":[16,18,73,74],"qalqalah":[64,66],"wasl":[9,10,27,28]},
-"5": {"ghunnah":[15,20],"qalqalah":[12,14],"wasl":[2,3]},
-"6": {"ghunnah":[2,5],"madd":[20,21]},
-"7": {"madd":[7,8]},
-"8": {"idgham":[16,17],"madd":[22,24],"wasl":[15,16,29,30]},
-"9": {"wasl":[10,11,23,24]},
-"11": {"ghunnah":[74,78],"madd":[83,84],"qalqalah":[30,32],"wasl":[25,26]},
-"12": {"madd":[4,5,13,14,21,22]},
-"13": {"madd":[29,30],"wasl":[14,15]},
-"14": {"ghunnah":[4,8,26,31,31,34,37,40],"madd":[40,41],"wasl":[10,11]},
-"15": {"ghunnah":[10,13],"madd":[5,7]},
-"16": {"idgham":[9,14,14,15]},
+"1": {"iqlab":[53,57],"idghaam_ghunnah":[64,68],"madd_muttasil":[48,50]},
+"2": {"madd_2":[7,8,27,28]},
+"3": {"qalqalah":[28,29],"hamzat_wasl":[6,7,18,19]},
+"4": {"ikhfa":[54,58],"lam_shamsiyyah":[28,29],"madd_2":[73,74],"madd_muttasil":[16,18],"qalqalah":[64,66],"hamzat_wasl":[9,10,27,28]},
+"5": {"ikhfa":[15,20],"qalqalah":[12,14],"hamzat_wasl":[2,3]},
+"6": {"ghunnah":[2,5],"madd_2":[20,21]},
+"7": {"madd_2":[7,8]},
+"8": {"lam_shamsiyyah":[16,17],"madd_muttasil":[22,24],"hamzat_wasl":[15,16,29,30]},
+"9": {"hamzat_wasl":[10,11,23,24]},
+"11": {"iqlab":[74,78],"madd_246":[83,84],"qalqalah":[30,32],"hamzat_wasl":[25,26]},
+"12": {"madd_2":[4,5,13,14],"madd_246":[21,22]},
+"13": {"madd_246":[29,30],"hamzat_wasl":[14,15]},
+"14": {"ghunnah":[31,34],"ikhfa":[4,8,26,31,37,40],"madd_246":[40,41],"hamzat_wasl":[10,11]},
+"15": {"ghunnah":[10,13],"madd_munfasil":[5,7]},
+"16": {"idghaam_no_ghunnah":[9,14],"lam_shamsiyyah":[14,15]},
"17": {"qalqalah":[2,4,17,19],"silent":[7,9]},
-"19": {"ghunnah":[2,5,11,14],"madd":[14,15],"wasl":[6,7]},
-"20": {"idgham":[15,16],"wasl":[14,15]},
-"21": {"wasl":[16,17]},
-"22": {"madd":[17,18],"wasl":[7,8]},
-"23": {"madd":[36,38,42,43]},
-"24": {"idgham":[35,40],"madd":[14,16,23,24,44,45],"wasl":[2,3]},
-"25": {"idgham":[3,4],"madd":[7,9,25,26],"wasl":[16,17]},
-"26": {"idgham":[35,36],"madd":[39,40],"wasl":[2,3,34,35]},
-"27": {"idgham":[14,19,37,42],"madd":[48,49],"wasl":[2,3]},
-"28": {"ghunnah":[2,5],"madd":[37,38]},
-"29": {"madd":[33,34,38,39],"wasl":[2,3]},
-"30": {"ghunnah":[65,68],"madd":[11,14,21,22,53,54,87,88]},
-"31": {"madd":[21,23,28,29,42,44,62,63],"qalqalah":[8,10],"silent":[38,40],"wasl":[7,8,54,55]},
-"32": {"madd":[23,24,26,27,49,50,52,53],"wasl":[2,3]},
-"33": {"ghunnah":[14,18],"madd":[22,23,25,26,35,37,41,42],"wasl":[2,3]},
-"34": {"madd":[45,46],"wasl":[2,3]},
-"35": {"ghunnah":[19,22],"idgham":[24,29],"madd":[6,8,22,23,35,36],"silent":[2,4]},
-"36": {"madd":[45,46],"silent":[25,27],"wasl":[8,9]},
-"37": {"idgham":[24,25],"madd":[38,39],"wasl":[5,6,23,24]},
-"38": {"ghunnah":[50,53],"idgham":[23,28,37,41],"madd":[60,61],"qalqalah":[4,6,41,43],"wasl":[17,18]},
-"39": {"ghunnah":[10,13,31,34],"idgham":[26,31],"madd":[5,7,23,24,44,45],"qalqalah":[19,21]},
-"40": {"ghunnah":[54,57],"madd":[4,6,31,32,46,47,63,64,68,69],"qalqalah":[9,11],"wasl":[24,25,39,40]},
-"41": {"idgham":[10,15,28,34],"madd":[4,7,65,66]},
-"42": {"madd":[48,49,81,82],"silent":[19,21,33,35,52,54],"wasl":[66,67]},
-"43": {"ghunnah":[43,48,50,53],"idgham":[70,74],"madd":[79,80],"qalqalah":[29,31],"wasl":[24,25]},
-"44": {"ghunnah":[43,47],"madd":[2,3,16,17,47,48,87,88],"qalqalah":[12,14],"silent":[77,79],"wasl":[53,54,63,64]}
+"19": {"ghunnah":[2,5],"ikhfa":[11,14],"madd_2":[14,15],"hamzat_wasl":[6,7]},
+"20": {"lam_shamsiyyah":[15,16],"hamzat_wasl":[14,15]},
+"21": {"hamzat_wasl":[16,17]},
+"22": {"madd_246":[17,18],"hamzat_wasl":[7,8]},
+"23": {"madd_246":[42,43],"madd_muttasil":[36,38]},
+"24": {"idghaam_ghunnah":[35,40],"madd_2":[23,24],"madd_246":[44,45],"madd_munfasil":[14,16],"hamzat_wasl":[2,3]},
+"25": {"lam_shamsiyyah":[3,4],"madd_246":[25,26],"madd_muttasil":[7,9],"hamzat_wasl":[16,17]},
+"26": {"lam_shamsiyyah":[35,36],"madd_246":[39,40],"hamzat_wasl":[2,3,34,35]},
+"27": {"idghaam_shafawi":[14,19,37,42],"madd_246":[48,49],"hamzat_wasl":[2,3]},
+"28": {"ghunnah":[2,5],"madd_246":[37,38]},
+"29": {"madd_2":[33,34],"madd_246":[38,39],"hamzat_wasl":[2,3]},
+"30": {"ghunnah":[65,68],"madd_2":[21,22,53,54],"madd_246":[87,88],"madd_munfasil":[11,14]},
+"31": {"madd_2":[28,29],"madd_246":[62,63],"madd_muttasil":[21,23,42,44],"qalqalah":[8,10],"silent":[38,40],"hamzat_wasl":[7,8,54,55]},
+"32": {"madd_2":[23,24,26,27,49,50],"madd_246":[52,53],"hamzat_wasl":[2,3]},
+"33": {"ikhfa_shafawi":[14,18],"madd_2":[22,23,25,26],"madd_246":[41,42],"madd_muttasil":[35,37],"hamzat_wasl":[2,3]},
+"34": {"madd_246":[45,46],"hamzat_wasl":[2,3]},
+"35": {"ghunnah":[19,22],"idghaam_ghunnah":[24,29],"madd_2":[22,23],"madd_246":[35,36],"madd_muttasil":[6,8],"silent":[2,4]},
+"36": {"madd_246":[45,46],"silent":[25,27],"hamzat_wasl":[8,9]},
+"37": {"lam_shamsiyyah":[24,25],"madd_246":[38,39],"hamzat_wasl":[5,6,23,24]},
+"38": {"ghunnah":[50,53],"idghaam_ghunnah":[23,28,37,41],"madd_246":[60,61],"qalqalah":[4,6,41,43],"hamzat_wasl":[17,18]},
+"39": {"ghunnah":[10,13,31,34],"idghaam_shafawi":[26,31],"madd_2":[23,24],"madd_246":[44,45],"madd_munfasil":[5,7],"qalqalah":[19,21]},
+"40": {"ghunnah":[54,57],"madd_2":[31,32,46,47,63,64],"madd_246":[68,69],"madd_munfasil":[4,6],"qalqalah":[9,11],"hamzat_wasl":[24,25,39,40]},
+"41": {"idghaam_ghunnah":[10,15,28,34],"madd_246":[65,66],"madd_munfasil":[4,7]},
+"42": {"madd_2":[48,49],"madd_246":[81,82],"silent":[19,21,33,35,52,54],"hamzat_wasl":[66,67]},
+"43": {"ghunnah":[50,53],"ikhfa":[43,48],"idghaam_ghunnah":[70,74],"madd_246":[79,80],"qalqalah":[29,31],"hamzat_wasl":[24,25]},
+"44": {"ikhfa":[43,47],"madd_2":[2,3,16,17,47,48],"madd_246":[87,88],"qalqalah":[12,14],"silent":[77,79],"hamzat_wasl":[53,54,63,64]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/71.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/71.json
index 6a57108..487c8c3 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/71.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/71.json
@@ -1,29 +1,29 @@
{
-"1": {"ghunnah":[41,44,91,94,108,112],"idgham":[119,123],"madd":[44,46,81,83,146,147],"qalqalah":[112,114]},
-"2": {"ghunnah":[18,21],"idgham":[36,41],"madd":[8,9,43,44]},
-"3": {"madd":[45,46],"silent":[13,15],"wasl":[5,6,16,17,26,27]},
-"4": {"ghunnah":[18,22,68,71,75,78,128,131],"idgham":[13,18,61,66],"madd":[52,55,102,104,142,143],"wasl":[86,87]},
-"5": {"ghunnah":[14,17],"idgham":[41,46]},
-"6": {"madd":[22,24,26,28],"qalqalah":[11,13]},
-"7": {"ghunnah":[4,7],"madd":[55,57,64,65,76,78],"silent":[57,59,105,107,130,132,147,149],"wasl":[94,95,135,136,150,151]},
+"1": {"ghunnah":[41,44],"ikhfa":[91,94,108,112],"idghaam_ghunnah":[119,123],"madd_246":[146,147],"madd_munfasil":[44,46,81,83],"qalqalah":[112,114]},
+"2": {"ghunnah":[18,21],"idghaam_ghunnah":[36,41],"madd_2":[8,9],"madd_246":[43,44]},
+"3": {"madd_246":[45,46],"silent":[13,15],"hamzat_wasl":[5,6,16,17,26,27]},
+"4": {"ghunnah":[68,71,75,78],"ikhfa":[18,22,128,131],"idghaam_ghunnah":[61,66],"idghaam_shafawi":[13,18],"madd_246":[142,143],"madd_munfasil":[52,55],"madd_muttasil":[102,104],"hamzat_wasl":[86,87]},
+"5": {"ghunnah":[14,17],"idghaam_ghunnah":[41,46]},
+"6": {"madd_munfasil":[26,28],"madd_muttasil":[22,24],"qalqalah":[11,13]},
+"7": {"ghunnah":[4,7],"madd_2":[64,65],"madd_munfasil":[55,57,76,78],"silent":[57,59,105,107,130,132,147,149],"hamzat_wasl":[94,95,135,136,150,151]},
"8": {"ghunnah":[2,5,8,11]},
-"9": {"ghunnah":[2,5,8,11,20,23],"madd":[11,13]},
-"10": {"ghunnah":[36,39],"madd":[41,42],"silent":[21,23],"wasl":[9,10]},
-"11": {"idgham":[10,11,29,34],"madd":[16,18],"qalqalah":[34,36],"wasl":[9,10]},
-"12": {"ghunnah":[12,16,56,59],"idgham":[24,28,61,65],"madd":[22,23,59,60,87,88],"qalqalah":[8,10,40,42,67,69]},
+"9": {"ghunnah":[2,5,8,11],"ikhfa":[20,23],"madd_munfasil":[11,13]},
+"10": {"ghunnah":[36,39],"madd_2":[41,42],"silent":[21,23],"hamzat_wasl":[9,10]},
+"11": {"idghaam_shafawi":[29,34],"lam_shamsiyyah":[10,11],"madd_muttasil":[16,18],"qalqalah":[34,36],"hamzat_wasl":[9,10]},
+"12": {"ghunnah":[56,59],"ikhfa_shafawi":[12,16],"idghaam_ghunnah":[24,28,61,65],"madd_2":[22,23,59,60,87,88],"qalqalah":[8,10,40,42,67,69]},
"14": {"qalqalah":[4,6,20,22]},
-"15": {"ghunnah":[54,58],"madd":[49,50,52,53],"qalqalah":[40,42],"silent":[13,15],"wasl":[30,31]},
-"16": {"ghunnah":[24,27],"idgham":[32,37,45,46],"wasl":[9,10,44,45]},
-"17": {"ghunnah":[13,15],"idgham":[20,25],"wasl":[2,3,28,29]},
+"15": {"ikhfa":[54,58],"madd_2":[49,50,52,53],"qalqalah":[40,42],"silent":[13,15],"hamzat_wasl":[30,31]},
+"16": {"ghunnah":[24,27],"idghaam_ghunnah":[32,37],"lam_shamsiyyah":[45,46],"hamzat_wasl":[9,10,44,45]},
+"17": {"iqlab":[13,15],"idghaam_shafawi":[20,25],"hamzat_wasl":[2,3,28,29]},
"18": {"ghunnah":[2,5]},
-"19": {"wasl":[2,3,24,25]},
-"20": {"ghunnah":[28,33],"silent":[12,14]},
-"21": {"ghunnah":[21,24],"idgham":[10,15,55,60],"madd":[79,80,91,93],"qalqalah":[67,69],"silent":[50,52],"wasl":[41,42]},
-"22": {"ghunnah":[17,22],"silent":[9,11]},
-"23": {"ghunnah":[21,24,51,54],"idgham":[59,64,74,79],"silent":[8,10]},
-"24": {"idgham":[24,29,41,42],"madd":[45,46,65,66],"qalqalah":[4,6],"silent":[15,17],"wasl":[40,41]},
-"25": {"ghunnah":[3,6,55,60,84,88,102,105],"idgham":[79,84],"madd":[12,14,17,18],"qalqalah":[41,43],"silent":[34,36,48,50,72,74],"wasl":[92,93]},
-"26": {"idgham":[12,17],"madd":[58,59],"wasl":[38,39,53,54]},
-"27": {"ghunnah":[2,5,10,14,74,79],"madd":[56,58],"silent":[31,33,58,60]},
-"28": {"ghunnah":[40,44],"idgham":[65,70,117,118],"madd":[25,26,99,100,121,122],"wasl":[7,8,88,89,116,117]}
+"19": {"hamzat_wasl":[2,3,24,25]},
+"20": {"ikhfa":[28,33],"silent":[12,14]},
+"21": {"ghunnah":[21,24],"idghaam_no_ghunnah":[10,15,55,60],"madd_2":[79,80],"madd_munfasil":[91,93],"qalqalah":[67,69],"silent":[50,52],"hamzat_wasl":[41,42]},
+"22": {"ikhfa":[17,22],"silent":[9,11]},
+"23": {"ghunnah":[21,24,51,54],"idghaam_ghunnah":[59,64,74,79],"silent":[8,10]},
+"24": {"idghaam_ghunnah":[24,29],"lam_shamsiyyah":[41,42],"madd_2":[45,46,65,66],"qalqalah":[4,6],"silent":[15,17],"hamzat_wasl":[40,41]},
+"25": {"ghunnah":[3,6],"ikhfa":[55,60,84,88,102,105],"idghaam_shafawi":[79,84],"madd_2":[17,18],"madd_muttasil":[12,14],"qalqalah":[41,43],"silent":[34,36,48,50,72,74],"hamzat_wasl":[92,93]},
+"26": {"idghaam_no_ghunnah":[12,17],"madd_2":[58,59],"hamzat_wasl":[38,39,53,54]},
+"27": {"ghunnah":[2,5],"ikhfa":[10,14,74,79],"madd_munfasil":[56,58],"silent":[31,33,58,60]},
+"28": {"ikhfa":[40,44],"idghaam_ghunnah":[65,70],"lam_shamsiyyah":[117,118],"madd_2":[25,26,99,100,121,122],"hamzat_wasl":[7,8,88,89,116,117]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/72.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/72.json
index 4b54082..745e322 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/72.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/72.json
@@ -1,30 +1,30 @@
{
-"1": {"ghunnah":[62,65,96,99,114,117],"idgham":[83,88],"madd":[107,109],"silent":[109,111],"wasl":[68,69,91,92]},
-"2": {"ghunnah":[33,36],"idgham":[16,17,48,53],"madd":[6,8,42,43,69,71],"wasl":[15,16]},
-"3": {"ghunnah":[4,7],"idgham":[57,61],"madd":[9,10,15,16,51,52],"wasl":[40,41]},
-"4": {"ghunnah":[4,7],"madd":[9,10],"wasl":[42,43]},
-"5": {"ghunnah":[4,7,13,16,26,30,41,44,52,55],"idgham":[21,26],"madd":[16,18],"wasl":[36,37,47,48,62,63]},
-"6": {"ghunnah":[4,7,36,39,72,75],"idgham":[23,28,59,64],"madd":[9,10],"wasl":[31,32,67,68]},
-"7": {"ghunnah":[4,7,14,17,31,34],"idgham":[39,44,44,48],"qalqalah":[48,50],"silent":[18,20],"wasl":[55,56]},
-"8": {"ghunnah":[4,7,60,65],"idgham":[20,21,69,74],"madd":[26,28,41,42],"qalqalah":[37,39],"wasl":[19,20]},
-"9": {"ghunnah":[4,7,11,14],"idgham":[45,46,58,62,99,105],"madd":[37,38,91,92],"qalqalah":[18,20,84,86],"wasl":[71,72]},
-"10": {"ghunnah":[4,7,42,46],"madd":[19,21],"qalqalah":[15,17],"wasl":[48,49]},
-"11": {"ghunnah":[4,7,11,14,34,37,55,58],"idgham":[17,18],"madd":[21,22,47,48,64,66],"wasl":[16,17]},
-"12": {"ghunnah":[4,7,13,16],"idgham":[21,26,26,31,64,69],"madd":[16,18,77,78],"wasl":[38,39,50,51]},
-"13": {"ghunnah":[4,7,11,14,42,45,66,69],"idgham":[57,61,98,103],"madd":[33,36,51,52,77,78],"wasl":[26,27]},
-"14": {"ghunnah":[4,7,11,14,35,38],"madd":[45,46,78,80],"silent":[74,76,94,96],"wasl":[16,17,40,41]},
-"15": {"ghunnah":[4,7,40,43],"madd":[14,15],"silent":[31,33],"wasl":[9,10]},
-"16": {"idgham":[31,32,58,63],"madd":[17,18,55,56,63,65],"silent":[21,23],"wasl":[10,11,30,31]},
-"17": {"ghunnah":[39,43,74,79],"idgham":[26,30],"madd":[55,56]},
-"18": {"ghunnah":[4,7],"madd":[15,16],"qalqalah":[37,39],"silent":[42,44],"wasl":[8,9,50,51]},
-"19": {"ghunnah":[4,7,13,16],"madd":[9,10],"qalqalah":[26,28,41,43],"silent":[55,57],"wasl":[31,32]},
-"20": {"ghunnah":[7,10],"madd":[12,14,36,38,52,54],"qalqalah":[17,19],"silent":[22,24]},
-"21": {"ghunnah":[7,10],"idgham":[37,42],"madd":[14,16]},
-"22": {"ghunnah":[7,10,63,67],"idgham":[14,18,45,49],"madd":[72,73],"wasl":[32,33]},
-"23": {"ghunnah":[84,87,104,107],"idgham":[13,19,50,54],"madd":[11,12,36,37,39,40,44,45,78,79,92,93,112,113,126,128],"wasl":[22,23,59,60]},
-"24": {"idgham":[75,80],"madd":[5,8],"silent":[21,23]},
-"25": {"idgham":[27,32],"madd":[16,18,63,64,70,72],"qalqalah":[12,14,52,54]},
-"26": {"madd":[2,3,48,50],"wasl":[8,9]},
-"27": {"ghunnah":[33,37,39,42,58,61],"idgham":[24,29],"madd":[44,45,91,92],"wasl":[12,13]},
-"28": {"ghunnah":[14,18],"madd":[37,38,40,41],"qalqalah":[18,20,23,25],"silent":[30,32]}
+"1": {"ghunnah":[62,65,96,99,114,117],"idghaam_ghunnah":[83,88],"madd_munfasil":[107,109],"silent":[109,111],"hamzat_wasl":[68,69,91,92]},
+"2": {"ghunnah":[33,36],"idghaam_ghunnah":[48,53],"lam_shamsiyyah":[16,17],"madd_2":[42,43],"madd_munfasil":[6,8,69,71],"hamzat_wasl":[15,16]},
+"3": {"ghunnah":[4,7],"idghaam_ghunnah":[57,61],"madd_2":[9,10,15,16,51,52],"hamzat_wasl":[40,41]},
+"4": {"ghunnah":[4,7],"madd_2":[9,10],"hamzat_wasl":[42,43]},
+"5": {"ghunnah":[4,7,13,16,52,55],"ikhfa":[26,30,41,44],"idghaam_no_ghunnah":[21,26],"madd_munfasil":[16,18],"hamzat_wasl":[36,37,47,48,62,63]},
+"6": {"ghunnah":[4,7,72,75],"ikhfa":[36,39],"idghaam_ghunnah":[23,28,59,64],"madd_2":[9,10],"hamzat_wasl":[31,32,67,68]},
+"7": {"ghunnah":[4,7,14,17],"ikhfa":[31,34],"idghaam_ghunnah":[44,48],"idghaam_no_ghunnah":[39,44],"qalqalah":[48,50],"silent":[18,20],"hamzat_wasl":[55,56]},
+"8": {"ghunnah":[4,7],"ikhfa":[60,65],"idghaam_ghunnah":[69,74],"lam_shamsiyyah":[20,21],"madd_2":[41,42],"madd_muttasil":[26,28],"qalqalah":[37,39],"hamzat_wasl":[19,20]},
+"9": {"ghunnah":[4,7,11,14],"idghaam_ghunnah":[58,62],"idghaam_no_ghunnah":[99,105],"lam_shamsiyyah":[45,46],"madd_2":[37,38,91,92],"qalqalah":[18,20,84,86],"hamzat_wasl":[71,72]},
+"10": {"ghunnah":[4,7],"ikhfa":[42,46],"madd_munfasil":[19,21],"qalqalah":[15,17],"hamzat_wasl":[48,49]},
+"11": {"ghunnah":[4,7,11,14,34,37,55,58],"lam_shamsiyyah":[17,18],"madd_2":[21,22,47,48],"madd_muttasil":[64,66],"hamzat_wasl":[16,17]},
+"12": {"ghunnah":[4,7,13,16],"idghaam_ghunnah":[26,31,64,69],"idghaam_no_ghunnah":[21,26],"madd_2":[77,78],"madd_munfasil":[16,18],"hamzat_wasl":[38,39,50,51]},
+"13": {"ghunnah":[4,7,11,14,42,45],"iqlab":[66,69],"idghaam_ghunnah":[57,61,98,103],"madd_2":[51,52,77,78],"madd_munfasil":[33,36],"hamzat_wasl":[26,27]},
+"14": {"ghunnah":[4,7,11,14,35,38],"madd_2":[45,46],"madd_muttasil":[78,80],"silent":[74,76,94,96],"hamzat_wasl":[16,17,40,41]},
+"15": {"ghunnah":[4,7,40,43],"madd_2":[14,15],"silent":[31,33],"hamzat_wasl":[9,10]},
+"16": {"idghaam_shafawi":[58,63],"lam_shamsiyyah":[31,32],"madd_2":[17,18,55,56],"madd_muttasil":[63,65],"silent":[21,23],"hamzat_wasl":[10,11,30,31]},
+"17": {"ikhfa":[39,43,74,79],"idghaam_ghunnah":[26,30],"madd_2":[55,56]},
+"18": {"ghunnah":[4,7],"madd_2":[15,16],"qalqalah":[37,39],"silent":[42,44],"hamzat_wasl":[8,9,50,51]},
+"19": {"ghunnah":[4,7,13,16],"madd_2":[9,10],"qalqalah":[26,28,41,43],"silent":[55,57],"hamzat_wasl":[31,32]},
+"20": {"ghunnah":[7,10],"madd_munfasil":[12,14,36,38,52,54],"qalqalah":[17,19],"silent":[22,24]},
+"21": {"ghunnah":[7,10],"idghaam_ghunnah":[37,42],"madd_munfasil":[14,16]},
+"22": {"ghunnah":[7,10],"ikhfa":[63,67],"idghaam_ghunnah":[14,18,45,49],"madd_2":[72,73],"hamzat_wasl":[32,33]},
+"23": {"ghunnah":[84,87,104,107],"idghaam_ghunnah":[13,19,50,54],"madd_2":[11,12,36,37,39,40,44,45,78,79,92,93,112,113],"madd_munfasil":[126,128],"hamzat_wasl":[22,23,59,60]},
+"24": {"idghaam_ghunnah":[75,80],"madd_munfasil":[5,8],"silent":[21,23]},
+"25": {"idghaam_ghunnah":[27,32],"madd_2":[63,64],"madd_munfasil":[16,18,70,72],"qalqalah":[12,14,52,54]},
+"26": {"madd_2":[2,3],"madd_munfasil":[48,50],"hamzat_wasl":[8,9]},
+"27": {"ghunnah":[39,42],"ikhfa":[33,37],"iqlab":[58,61],"idghaam_no_ghunnah":[24,29],"madd_2":[44,45,91,92],"hamzat_wasl":[12,13]},
+"28": {"ikhfa":[14,18],"madd_2":[37,38,40,41],"qalqalah":[18,20,23,25],"silent":[30,32]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/73.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/73.json
index 87a4d38..94a555b 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/73.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/73.json
@@ -1,22 +1,22 @@
{
-"1": {"ghunnah":[60,63],"madd":[41,43],"wasl":[52,53]},
-"2": {"wasl":[5,6]},
-"3": {"ghunnah":[18,21],"madd":[9,11],"wasl":[17,18]},
-"4": {"qalqalah":[7,9],"wasl":[29,30]},
-"5": {"ghunnah":[2,5,31,36]},
-"6": {"ghunnah":[2,5],"idgham":[44,49],"qalqalah":[40,42,51,53],"wasl":[16,17]},
-"7": {"ghunnah":[2,5,17,20,31,36],"idgham":[16,17],"qalqalah":[28,30],"wasl":[15,16]},
-"8": {"qalqalah":[47,49],"wasl":[2,3,10,11]},
-"9": {"madd":[35,37,42,43],"wasl":[7,8,21,22,60,61]},
-"10": {"ghunnah":[51,56],"qalqalah":[48,50],"wasl":[2,3,34,35]},
-"11": {"ghunnah":[38,41],"idgham":[37,38],"silent":[30,32],"wasl":[12,13,36,37]},
-"12": {"ghunnah":[2,5,19,22],"idgham":[24,29],"madd":[14,16]},
-"13": {"ghunnah":[8,13],"idgham":[21,25]},
-"14": {"idgham":[66,72],"wasl":[16,17,28,29,49,50]},
-"15": {"ghunnah":[2,5,38,43],"madd":[5,7,18,20,43,44,65,67,78,80]},
-"16": {"idgham":[21,22,50,55],"madd":[41,42],"wasl":[20,21]},
-"17": {"ghunnah":[22,26],"idgham":[40,45],"madd":[61,62],"qalqalah":[45,47],"wasl":[52,53]},
-"18": {"ghunnah":[14,17,20,24],"idgham":[1,2],"madd":[7,9,27,28,43,44]},
-"19": {"ghunnah":[2,5,24,28,30,34],"madd":[8,9,13,14,34,36,62,63],"wasl":[39,40]},
-"20": {"ghunnah":[2,5,25,28,50,54,163,166,186,190,271,275,285,288,353,357,559,562,579,583,593,596,664,667],"idgham":[105,110,162,163,181,186,288,293,464,465,487,488,533,538,566,571,615,620,634,639,682,687],"madd":[80,81,92,93,98,100,387,388,471,472,494,495,689,690],"qalqalah":[41,43,220,222,341,343,419,421,502,504,631,633],"silent":[227,229,426,428,460,462,470,471,483,485,493,494,509,511,552,554,651,653],"wasl":[61,62,113,114,132,133,150,151,161,162,219,220,249,250,329,330,362,363,408,409,418,419,463,464,486,487,512,513,597,598,639,640,654,655,668,669]}
+"1": {"ghunnah":[60,63],"madd_munfasil":[41,43],"hamzat_wasl":[52,53]},
+"2": {"hamzat_wasl":[5,6]},
+"3": {"ikhfa":[18,21],"madd_munfasil":[9,11],"hamzat_wasl":[17,18]},
+"4": {"qalqalah":[7,9],"hamzat_wasl":[29,30]},
+"5": {"ghunnah":[2,5],"ikhfa":[31,36]},
+"6": {"ghunnah":[2,5],"idghaam_ghunnah":[44,49],"qalqalah":[40,42,51,53],"hamzat_wasl":[16,17]},
+"7": {"ghunnah":[2,5,17,20],"ikhfa":[31,36],"lam_shamsiyyah":[16,17],"qalqalah":[28,30],"hamzat_wasl":[15,16]},
+"8": {"qalqalah":[47,49],"hamzat_wasl":[2,3,10,11]},
+"9": {"madd_2":[42,43],"madd_munfasil":[35,37],"hamzat_wasl":[7,8,21,22,60,61]},
+"10": {"ikhfa":[51,56],"qalqalah":[48,50],"hamzat_wasl":[2,3,34,35]},
+"11": {"ghunnah":[38,41],"lam_shamsiyyah":[37,38],"silent":[30,32],"hamzat_wasl":[12,13,36,37]},
+"12": {"ghunnah":[2,5],"ikhfa":[19,22],"idghaam_ghunnah":[24,29],"madd_munfasil":[14,16]},
+"13": {"ikhfa":[8,13],"idghaam_ghunnah":[21,25]},
+"14": {"idghaam_ghunnah":[66,72],"hamzat_wasl":[16,17,28,29,49,50]},
+"15": {"ghunnah":[2,5],"ikhfa":[38,43],"madd_2":[43,44],"madd_munfasil":[5,7,18,20,65,67,78,80]},
+"16": {"idghaam_ghunnah":[50,55],"lam_shamsiyyah":[21,22],"madd_2":[41,42],"hamzat_wasl":[20,21]},
+"17": {"ikhfa":[22,26],"idghaam_ghunnah":[40,45],"madd_2":[61,62],"qalqalah":[45,47],"hamzat_wasl":[52,53]},
+"18": {"ikhfa":[14,17],"iqlab":[20,24],"lam_shamsiyyah":[1,2],"madd_2":[27,28,43,44],"madd_muttasil":[7,9]},
+"19": {"ghunnah":[2,5],"ikhfa":[24,28,30,34],"madd_2":[8,9,13,14,62,63],"madd_muttasil":[34,36],"hamzat_wasl":[39,40]},
+"20": {"ghunnah":[2,5,25,28,163,166,664,667],"ikhfa":[50,54,186,190,271,275,285,288,353,357,559,562,579,583,593,596],"idghaam_ghunnah":[105,110,533,538,615,620,634,639],"idghaam_no_ghunnah":[181,186,682,687],"idghaam_shafawi":[288,293,566,571],"lam_shamsiyyah":[162,163,464,465,487,488],"madd_2":[80,81,92,93,387,388,471,472,494,495],"madd_246":[689,690],"madd_muttasil":[98,100],"qalqalah":[41,43,220,222,341,343,419,421,502,504,631,633],"silent":[227,229,426,428,460,462,470,471,483,485,493,494,509,511,552,554,651,653],"hamzat_wasl":[61,62,113,114,132,133,150,151,161,162,219,220,249,250,329,330,362,363,408,409,418,419,463,464,486,487,512,513,597,598,639,640,654,655,668,669]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/74.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/74.json
index 7145d63..7097552 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/74.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/74.json
@@ -1,51 +1,51 @@
{
-"1": {"madd":[41,43],"wasl":[52,53]},
-"2": {"ghunnah":[9,12]},
-"5": {"idgham":[3,4],"qalqalah":[7,9],"wasl":[2,3,14,15]},
-"6": {"ghunnah":[12,16]},
-"7": {"wasl":[14,15]},
-"8": {"ghunnah":[21,24],"idgham":[20,21],"madd":[27,28],"wasl":[19,20]},
-"9": {"idgham":[19,23],"madd":[4,5,32,33]},
-"10": {"madd":[11,12,31,32],"wasl":[6,7]},
+"1": {"madd_munfasil":[41,43],"hamzat_wasl":[52,53]},
+"2": {"ikhfa":[9,12]},
+"5": {"lam_shamsiyyah":[3,4],"qalqalah":[7,9],"hamzat_wasl":[2,3,14,15]},
+"6": {"ikhfa":[12,16]},
+"7": {"hamzat_wasl":[14,15]},
+"8": {"ghunnah":[21,24],"lam_shamsiyyah":[20,21],"madd_246":[27,28],"hamzat_wasl":[19,20]},
+"9": {"idghaam_ghunnah":[19,23],"madd_2":[4,5],"madd_246":[32,33]},
+"10": {"madd_2":[11,12],"madd_246":[31,32],"hamzat_wasl":[6,7]},
"11": {"qalqalah":[19,21]},
-"12": {"idgham":[21,27],"madd":[15,16]},
-"14": {"idgham":[7,8],"madd":[16,17]},
-"15": {"ghunnah":[2,5],"madd":[24,25],"qalqalah":[8,10,25,26]},
-"16": {"ghunnah":[10,13],"madd":[5,7,15,16,30,31]},
-"17": {"madd":[12,13]},
-"18": {"ghunnah":[2,5],"madd":[7,8]},
+"12": {"idghaam_ghunnah":[21,27],"madd_2":[15,16]},
+"14": {"idghaam_mutajanisayn":[7,8],"madd_2":[16,17]},
+"15": {"ghunnah":[2,5],"madd_246":[24,25],"qalqalah":[8,10,25,26]},
+"16": {"ghunnah":[10,13],"madd_2":[15,16,30,31],"madd_munfasil":[5,7]},
+"17": {"madd_2":[12,13]},
+"18": {"ghunnah":[2,5],"madd_2":[7,8]},
"20": {"ghunnah":[2,5]},
"21": {"ghunnah":[2,5]},
"22": {"ghunnah":[2,5]},
-"23": {"ghunnah":[2,5],"qalqalah":[8,10],"wasl":[17,18]},
-"24": {"idgham":[33,37],"madd":[15,16,18,20]},
-"25": {"madd":[7,8,10,12],"wasl":[27,28]},
-"27": {"madd":[4,6,14,15],"qalqalah":[9,11]},
+"23": {"ghunnah":[2,5],"qalqalah":[8,10],"hamzat_wasl":[17,18]},
+"24": {"idghaam_ghunnah":[33,37],"madd_2":[15,16],"madd_munfasil":[18,20]},
+"25": {"madd_2":[7,8],"madd_munfasil":[10,12],"hamzat_wasl":[27,28]},
+"27": {"madd_2":[14,15],"madd_munfasil":[4,6],"qalqalah":[9,11]},
"28": {"qalqalah":[6,8]},
-"29": {"idgham":[9,14]},
-"31": {"ghunnah":[29,32,373,378],"idgham":[28,29,54,58,98,103,208,213,309,314,317,321,404,408,427,431],"madd":[14,16,23,24,47,49,163,164,196,198,206,207,253,254,326,327,340,342,363,364,380,381,410,412,433,435],"silent":[119,121,153,155,198,200,243,245],"wasl":[27,28,137,138,156,157,179,180,227,228,246,247,259,260,286,287,321,322,351,352,394,395]},
-"32": {"wasl":[9,10]},
-"33": {"qalqalah":[18,20],"wasl":[2,3]},
-"34": {"idgham":[3,4],"madd":[16,18],"qalqalah":[7,9],"wasl":[2,3]},
-"35": {"ghunnah":[2,5],"wasl":[19,20]},
-"36": {"idgham":[6,12]},
-"37": {"ghunnah":[4,8,15,18],"idgham":[23,27],"madd":[8,10]},
-"38": {"ghunnah":[11,15]},
-"39": {"madd":[5,7,14,15,25,26],"wasl":[18,19]},
-"40": {"ghunnah":[6,9],"idgham":[11,15],"madd":[9,10,19,21,25,26]},
-"41": {"madd":[16,17],"qalqalah":[10,12],"wasl":[5,6]},
-"43": {"madd":[34,35],"silent":[6,8],"wasl":[24,25]},
-"44": {"madd":[30,31],"qalqalah":[14,16],"wasl":[21,22]},
-"45": {"ghunnah":[4,7],"madd":[27,29,33,34],"wasl":[22,23]},
-"46": {"ghunnah":[4,7],"idgham":[29,30],"madd":[33,34],"wasl":[28,29]},
-"47": {"madd":[5,8,14,15,26,27],"wasl":[19,20]},
-"48": {"ghunnah":[8,11],"idgham":[29,30],"madd":[22,23,33,34,38,39],"wasl":[28,29]},
-"49": {"idgham":[19,20],"madd":[40,41],"wasl":[18,19]},
-"50": {"ghunnah":[4,7,26,29],"idgham":[17,22]},
-"51": {"ghunnah":[10,14]},
-"52": {"idgham":[25,30,39,43,55,61],"wasl":[19,20]},
-"53": {"wasl":[27,28]},
-"54": {"ghunnah":[10,13],"madd":[5,7,15,16]},
-"55": {"ghunnah":[4,8],"madd":[8,10]},
-"56": {"idgham":[28,32,60,61],"madd":[23,25,34,36],"qalqalah":[64,66],"wasl":[39,40,59,60,80,81]}
+"29": {"idghaam_no_ghunnah":[9,14]},
+"31": {"ghunnah":[29,32],"ikhfa":[373,378],"idghaam_ghunnah":[54,58,208,213,317,321,404,408,427,431],"idghaam_no_ghunnah":[98,103],"idghaam_shafawi":[309,314],"lam_shamsiyyah":[28,29],"madd_2":[23,24,163,164,206,207,253,254,326,327,363,364,380,381],"madd_munfasil":[14,16,196,198,340,342],"madd_muttasil":[47,49,410,412,433,435],"silent":[119,121,153,155,198,200,243,245],"hamzat_wasl":[27,28,137,138,156,157,179,180,227,228,246,247,259,260,286,287,321,322,351,352,394,395]},
+"32": {"hamzat_wasl":[9,10]},
+"33": {"qalqalah":[18,20],"hamzat_wasl":[2,3]},
+"34": {"lam_shamsiyyah":[3,4],"madd_munfasil":[16,18],"qalqalah":[7,9],"hamzat_wasl":[2,3]},
+"35": {"ghunnah":[2,5],"hamzat_wasl":[19,20]},
+"36": {"idghaam_no_ghunnah":[6,12]},
+"37": {"ikhfa":[4,8,15,18],"idghaam_ghunnah":[23,27],"madd_muttasil":[8,10]},
+"38": {"iqlab":[11,15]},
+"39": {"madd_2":[14,15],"madd_246":[25,26],"madd_munfasil":[5,7],"hamzat_wasl":[18,19]},
+"40": {"ghunnah":[6,9],"idghaam_ghunnah":[11,15],"madd_2":[9,10],"madd_246":[25,26],"madd_muttasil":[19,21]},
+"41": {"madd_246":[16,17],"qalqalah":[10,12],"hamzat_wasl":[5,6]},
+"43": {"madd_246":[34,35],"silent":[6,8],"hamzat_wasl":[24,25]},
+"44": {"madd_246":[30,31],"qalqalah":[14,16],"hamzat_wasl":[21,22]},
+"45": {"ghunnah":[4,7],"madd_246":[33,34],"madd_muttasil":[27,29],"hamzat_wasl":[22,23]},
+"46": {"ghunnah":[4,7],"lam_shamsiyyah":[29,30],"madd_246":[33,34],"hamzat_wasl":[28,29]},
+"47": {"madd_2":[14,15],"madd_246":[26,27],"madd_munfasil":[5,8],"hamzat_wasl":[19,20]},
+"48": {"ikhfa":[8,11],"lam_shamsiyyah":[29,30],"madd_2":[22,23,33,34],"madd_246":[38,39],"hamzat_wasl":[28,29]},
+"49": {"lam_shamsiyyah":[19,20],"madd_246":[40,41],"hamzat_wasl":[18,19]},
+"50": {"ghunnah":[4,7],"ikhfa":[26,29],"idghaam_ghunnah":[17,22]},
+"51": {"ikhfa":[10,14]},
+"52": {"idghaam_ghunnah":[25,30,39,43,55,61],"hamzat_wasl":[19,20]},
+"53": {"hamzat_wasl":[27,28]},
+"54": {"ghunnah":[10,13],"madd_2":[15,16],"madd_munfasil":[5,7]},
+"55": {"ikhfa":[4,8],"madd_muttasil":[8,10]},
+"56": {"idghaam_ghunnah":[28,32],"lam_shamsiyyah":[60,61],"madd_munfasil":[23,25],"madd_muttasil":[34,36],"qalqalah":[64,66],"hamzat_wasl":[39,40,59,60,80,81]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/75.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/75.json
index ac56a35..dfda4c2 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/75.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/75.json
@@ -1,37 +1,37 @@
{
-"1": {"madd":[41,43,69,70],"qalqalah":[46,48],"wasl":[62,63]},
-"2": {"ghunnah":[20,23],"idgham":[19,20,29,30],"madd":[4,6],"qalqalah":[9,11],"wasl":[18,19,28,29]},
-"3": {"ghunnah":[16,19],"idgham":[28,33],"madd":[19,20],"qalqalah":[33,35],"wasl":[11,12]},
-"4": {"idgham":[28,33],"madd":[9,10,22,25]},
-"5": {"ghunnah":[18,21],"madd":[21,22],"wasl":[13,14]},
-"6": {"madd":[33,34],"wasl":[26,27]},
-"7": {"wasl":[15,16]},
-"8": {"wasl":[9,10]},
-"9": {"idgham":[10,11],"wasl":[9,10,21,22]},
-"10": {"ghunnah":[13,16],"madd":[16,17],"wasl":[8,9,38,39]},
-"12": {"wasl":[26,27]},
-"13": {"ghunnah":[17,20,33,37],"madd":[20,21],"silent":[9,11],"wasl":[12,13]},
-"14": {"ghunnah":[10,13],"madd":[13,14,32,33],"wasl":[5,6]},
-"16": {"madd":[18,19]},
-"17": {"ghunnah":[2,5],"madd":[24,25]},
-"18": {"madd":[16,17],"wasl":[22,23]},
+"1": {"madd_2":[69,70],"madd_munfasil":[41,43],"qalqalah":[46,48],"hamzat_wasl":[62,63]},
+"2": {"ghunnah":[20,23],"lam_shamsiyyah":[19,20,29,30],"madd_munfasil":[4,6],"qalqalah":[9,11],"hamzat_wasl":[18,19,28,29]},
+"3": {"ikhfa":[16,19],"idghaam_ghunnah":[28,33],"madd_2":[19,20],"qalqalah":[33,35],"hamzat_wasl":[11,12]},
+"4": {"idghaam_ghunnah":[28,33],"madd_2":[9,10],"madd_munfasil":[22,25]},
+"5": {"ikhfa":[18,21],"madd_2":[21,22],"hamzat_wasl":[13,14]},
+"6": {"madd_2":[33,34],"hamzat_wasl":[26,27]},
+"7": {"hamzat_wasl":[15,16]},
+"8": {"hamzat_wasl":[9,10]},
+"9": {"lam_shamsiyyah":[10,11],"hamzat_wasl":[9,10,21,22]},
+"10": {"ikhfa":[13,16],"madd_2":[16,17],"hamzat_wasl":[8,9,38,39]},
+"12": {"hamzat_wasl":[26,27]},
+"13": {"ikhfa":[17,20],"iqlab":[33,37],"madd_2":[20,21],"silent":[9,11],"hamzat_wasl":[12,13]},
+"14": {"ikhfa":[10,13],"madd_2":[13,14,32,33],"hamzat_wasl":[5,6]},
+"16": {"madd_2":[18,19]},
+"17": {"ghunnah":[2,5],"madd_2":[24,25]},
+"18": {"madd_2":[16,17],"hamzat_wasl":[22,23]},
"19": {"ghunnah":[2,5,8,11]},
-"20": {"wasl":[23,24]},
-"21": {"wasl":[12,13]},
-"22": {"idgham":[6,10,17,22]},
-"24": {"ghunnah":[19,23],"idgham":[8,12]},
-"25": {"ghunnah":[4,7],"idgham":[10,14]},
-"26": {"idgham":[24,25],"madd":[5,7],"wasl":[23,24]},
-"27": {"madd":[15,16],"qalqalah":[16,17]},
-"28": {"ghunnah":[4,7,10,13],"madd":[23,24],"qalqalah":[24,25],"wasl":[16,17]},
-"29": {"idgham":[14,15,25,26],"madd":[29,30],"qalqalah":[30,31],"wasl":[2,3,13,14,24,25]},
-"30": {"madd":[33,34],"qalqalah":[34,35],"wasl":[26,27]},
-"32": {"ghunnah":[7,11],"madd":[4,5]},
-"33": {"ghunnah":[2,5],"madd":[17,20,29,30]},
+"20": {"hamzat_wasl":[23,24]},
+"21": {"hamzat_wasl":[12,13]},
+"22": {"idghaam_ghunnah":[6,10,17,22]},
+"24": {"iqlab":[19,23],"idghaam_ghunnah":[8,12]},
+"25": {"ghunnah":[4,7],"idghaam_ghunnah":[10,14]},
+"26": {"lam_shamsiyyah":[24,25],"madd_munfasil":[5,7],"hamzat_wasl":[23,24]},
+"27": {"madd_246":[15,16],"qalqalah":[16,17]},
+"28": {"ghunnah":[4,7,10,13],"madd_246":[23,24],"qalqalah":[24,25],"hamzat_wasl":[16,17]},
+"29": {"lam_shamsiyyah":[14,15,25,26],"madd_246":[29,30],"qalqalah":[30,31],"hamzat_wasl":[2,3,13,14,24,25]},
+"30": {"madd_246":[33,34],"qalqalah":[34,35],"hamzat_wasl":[26,27]},
+"32": {"ikhfa":[7,11],"madd_2":[4,5]},
+"33": {"ghunnah":[2,5],"madd_2":[29,30],"madd_munfasil":[17,20]},
"35": {"ghunnah":[2,5]},
-"36": {"ghunnah":[16,19],"idgham":[25,29],"madd":[19,20],"wasl":[11,12]},
-"37": {"idgham":[19,24,24,29,33,37],"qalqalah":[14,16]},
-"38": {"ghunnah":[2,5,19,23]},
-"39": {"ghunnah":[47,50],"idgham":[17,18,31,32],"wasl":[16,17,30,31,42,43]},
-"40": {"idgham":[37,41],"madd":[11,12,21,22,31,34],"wasl":[48,49]}
+"36": {"ikhfa":[16,19],"idghaam_ghunnah":[25,29],"madd_2":[19,20],"hamzat_wasl":[11,12]},
+"37": {"idghaam_ghunnah":[19,24,24,29,33,37],"qalqalah":[14,16]},
+"38": {"ghunnah":[2,5],"ikhfa":[19,23]},
+"39": {"ikhfa":[47,50],"lam_shamsiyyah":[17,18,31,32],"hamzat_wasl":[16,17,30,31,42,43]},
+"40": {"idghaam_ghunnah":[37,41],"madd_2":[11,12,21,22],"madd_munfasil":[31,34],"hamzat_wasl":[48,49]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/76.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/76.json
index aec69fe..4667e26 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/76.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/76.json
@@ -1,33 +1,33 @@
{
-"1": {"ghunnah":[62,65,100,104],"idgham":[73,78,82,83,108,114],"madd":[65,66],"wasl":[57,58,81,82]},
-"2": {"ghunnah":[2,5,22,25,86,91],"idgham":[31,36,51,56],"madd":[25,26,76,77],"qalqalah":[11,13,36,38,56,58],"wasl":[17,18]},
-"3": {"ghunnah":[2,5,32,35,50,53],"idgham":[20,21,43,48],"madd":[15,16],"wasl":[19,20]},
-"4": {"ghunnah":[2,5],"idgham":[57,62],"madd":[5,7,26,27,39,40,55,56],"qalqalah":[14,16],"silent":[44,46]},
-"5": {"ghunnah":[2,5,33,37,40,44],"qalqalah":[11,13],"wasl":[6,7]},
-"6": {"idgham":[5,10],"wasl":[31,32]},
-"7": {"ghunnah":[13,16,39,44],"idgham":[12,13],"madd":[55,56],"wasl":[11,12]},
-"8": {"idgham":[15,16,49,54,60,65],"madd":[39,40],"qalqalah":[4,6],"wasl":[14,15]},
-"9": {"ghunnah":[2,5,53,56],"idgham":[66,70],"madd":[63,65],"qalqalah":[11,13,26,28],"wasl":[31,32]},
-"10": {"ghunnah":[2,5,43,48],"idgham":[17,22]},
-"11": {"idgham":[66,70],"madd":[7,8,29,30,53,54],"wasl":[13,14,35,36]},
-"12": {"ghunnah":[10,14,30,33],"idgham":[34,38],"madd":[7,8],"silent":[25,27]},
-"13": {"idgham":[67,72],"madd":[35,37],"wasl":[28,29]},
-"14": {"madd":[27,28]},
-"15": {"ghunnah":[18,22,36,40,56,60],"idgham":[31,36,44,48]},
-"16": {"ghunnah":[15,19,23,27],"qalqalah":[39,41],"silent":[10,12]},
-"17": {"ghunnah":[25,30,47,50]},
-"18": {"ghunnah":[5,10,19,22]},
-"19": {"ghunnah":[90,93],"idgham":[29,34,84,90],"madd":[27,28],"qalqalah":[68,70]},
-"20": {"ghunnah":[19,22,48,53],"idgham":[38,43]},
-"21": {"ghunnah":[22,25,74,78,113,118],"idgham":[33,37,48,52,82,86],"madd":[2,3,57,59,91,92],"qalqalah":[43,45],"silent":[59,61]},
-"22": {"ghunnah":[2,5],"idgham":[33,37,51,56],"madd":[8,9,30,32]},
-"23": {"ghunnah":[2,5,49,52],"wasl":[34,35]},
-"24": {"wasl":[2,3]},
-"25": {"idgham":[31,35],"wasl":[2,3,10,11]},
-"26": {"ghunnah":[49,54],"madd":[30,31],"qalqalah":[23,25],"wasl":[7,8,18,19]},
-"27": {"ghunnah":[2,5,73,78],"madd":[8,10,14,16,59,61],"wasl":[30,31]},
-"28": {"madd":[16,17,32,34,71,73,80,81],"qalqalah":[12,14,28,30,90,92]},
-"29": {"ghunnah":[2,5,24,28,30,34],"madd":[8,9,13,14,34,36,62,63],"wasl":[39,40]},
-"30": {"ghunnah":[49,52],"idgham":[28,32],"madd":[10,12,23,25,34,36],"wasl":[39,40,53,54]},
-"31": {"idgham":[11,15,41,42],"madd":[17,19,36,37,45,46],"qalqalah":[2,4],"wasl":[40,41]}
+"1": {"ikhfa":[62,65,100,104],"idghaam_ghunnah":[73,78,108,114],"lam_shamsiyyah":[82,83],"madd_2":[65,66],"hamzat_wasl":[57,58,81,82]},
+"2": {"ghunnah":[2,5],"ikhfa":[22,25],"iqlab":[86,91],"idghaam_ghunnah":[31,36,51,56],"madd_2":[25,26,76,77],"qalqalah":[11,13,36,38,56,58],"hamzat_wasl":[17,18]},
+"3": {"ghunnah":[2,5,32,35,50,53],"idghaam_ghunnah":[43,48],"lam_shamsiyyah":[20,21],"madd_2":[15,16],"hamzat_wasl":[19,20]},
+"4": {"ghunnah":[2,5],"idghaam_ghunnah":[57,62],"madd_2":[26,27,39,40,55,56],"madd_munfasil":[5,7],"qalqalah":[14,16],"silent":[44,46]},
+"5": {"ghunnah":[2,5],"ikhfa":[33,37,40,44],"qalqalah":[11,13],"hamzat_wasl":[6,7]},
+"6": {"idghaam_ghunnah":[5,10],"hamzat_wasl":[31,32]},
+"7": {"ghunnah":[13,16],"ikhfa":[39,44],"lam_shamsiyyah":[12,13],"madd_2":[55,56],"hamzat_wasl":[11,12]},
+"8": {"idghaam_ghunnah":[49,54,60,65],"lam_shamsiyyah":[15,16],"madd_2":[39,40],"qalqalah":[4,6],"hamzat_wasl":[14,15]},
+"9": {"ghunnah":[2,5],"ikhfa":[53,56],"idghaam_ghunnah":[66,70],"madd_muttasil":[63,65],"qalqalah":[11,13,26,28],"hamzat_wasl":[31,32]},
+"10": {"ghunnah":[2,5],"ikhfa":[43,48],"idghaam_no_ghunnah":[17,22]},
+"11": {"idghaam_ghunnah":[66,70],"madd_2":[7,8,29,30,53,54],"hamzat_wasl":[13,14,35,36]},
+"12": {"ghunnah":[30,33],"ikhfa_shafawi":[10,14],"idghaam_ghunnah":[34,38],"madd_2":[7,8],"silent":[25,27]},
+"13": {"idghaam_ghunnah":[67,72],"madd_muttasil":[35,37],"hamzat_wasl":[28,29]},
+"14": {"madd_2":[27,28]},
+"15": {"ikhfa":[36,40,56,60],"ikhfa_shafawi":[18,22],"idghaam_ghunnah":[31,36,44,48]},
+"16": {"ikhfa":[15,19,23,27],"qalqalah":[39,41],"silent":[10,12]},
+"17": {"ikhfa":[25,30,47,50]},
+"18": {"ghunnah":[19,22],"ikhfa":[5,10]},
+"19": {"ikhfa":[90,93],"idghaam_ghunnah":[29,34,84,90],"madd_2":[27,28],"qalqalah":[68,70]},
+"20": {"ghunnah":[19,22],"ikhfa":[48,53],"idghaam_ghunnah":[38,43]},
+"21": {"ikhfa":[22,25,74,78,113,118],"idghaam_ghunnah":[33,37,48,52,82,86],"madd_2":[2,3,91,92],"madd_munfasil":[57,59],"qalqalah":[43,45],"silent":[59,61]},
+"22": {"ghunnah":[2,5],"idghaam_ghunnah":[33,37],"idghaam_shafawi":[51,56],"madd_2":[8,9],"madd_muttasil":[30,32]},
+"23": {"ghunnah":[2,5],"ikhfa":[49,52],"hamzat_wasl":[34,35]},
+"24": {"hamzat_wasl":[2,3]},
+"25": {"idghaam_ghunnah":[31,35],"hamzat_wasl":[2,3,10,11]},
+"26": {"ikhfa":[49,54],"madd_2":[30,31],"qalqalah":[23,25],"hamzat_wasl":[7,8,18,19]},
+"27": {"ghunnah":[2,5],"ikhfa":[73,78],"madd_muttasil":[8,10,14,16,59,61],"hamzat_wasl":[30,31]},
+"28": {"madd_2":[16,17,80,81],"madd_munfasil":[32,34,71,73],"qalqalah":[12,14,28,30,90,92]},
+"29": {"ghunnah":[2,5],"ikhfa":[24,28,30,34],"madd_2":[8,9,13,14,62,63],"madd_muttasil":[34,36],"hamzat_wasl":[39,40]},
+"30": {"ghunnah":[49,52],"idghaam_ghunnah":[28,32],"madd_munfasil":[23,25],"madd_muttasil":[10,12,34,36],"hamzat_wasl":[39,40,53,54]},
+"31": {"idghaam_ghunnah":[11,15],"lam_shamsiyyah":[41,42],"madd_2":[36,37,45,46],"madd_muttasil":[17,19],"qalqalah":[2,4],"hamzat_wasl":[40,41]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/77.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/77.json
index 5e5c2fa..19f06f4 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/77.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/77.json
@@ -1,50 +1,50 @@
{
-"1": {"madd":[52,53],"wasl":[41,42]},
-"2": {"madd":[7,8,12,13],"wasl":[2,3]},
-"3": {"ghunnah":[4,7],"idgham":[3,4],"madd":[7,8,12,13],"wasl":[2,3]},
-"4": {"madd":[7,8,12,13],"wasl":[2,3]},
-"5": {"madd":[13,14],"wasl":[2,3]},
-"7": {"ghunnah":[2,5],"madd":[24,25]},
-"8": {"ghunnah":[10,13],"idgham":[9,10],"wasl":[8,9]},
-"9": {"idgham":[9,10],"madd":[15,17],"wasl":[8,9]},
-"10": {"wasl":[8,9]},
-"11": {"idgham":[9,10],"wasl":[8,9]},
-"13": {"wasl":[9,10]},
-"14": {"madd":[4,6,14,15],"qalqalah":[9,11],"wasl":[29,30]},
-"15": {"idgham":[5,9,16,21],"madd":[32,33]},
-"16": {"madd":[26,27],"wasl":[16,17]},
-"17": {"ghunnah":[2,5],"madd":[29,30],"wasl":[19,20]},
-"18": {"madd":[4,5,32,33],"qalqalah":[26,28],"wasl":[21,22]},
-"19": {"idgham":[5,9,16,21],"madd":[32,33]},
-"20": {"idgham":[13,14,17,22,22,27,30,35],"madd":[27,29,37,38]},
-"21": {"idgham":[24,29],"madd":[10,11,31,32]},
-"22": {"idgham":[12,17],"madd":[21,22]},
-"23": {"madd":[26,27,31,32],"wasl":[21,22]},
-"24": {"idgham":[5,9,16,21],"madd":[32,33]},
-"25": {"qalqalah":[9,11],"wasl":[16,17]},
-"26": {"idgham":[9,13],"madd":[6,8,19,20]},
-"27": {"ghunnah":[63,67],"idgham":[38,42,55,60],"madd":[23,24,31,32,36,37,52,53,60,62]},
-"28": {"idgham":[5,9,16,21],"madd":[32,33]},
-"29": {"ghunnah":[1,4,26,29,29,33],"madd":[8,10,35,36,46,47],"silent":[10,12]},
-"30": {"ghunnah":[1,4,24,28],"madd":[8,10,34,35],"qalqalah":[42,43],"silent":[10,12]},
-"31": {"idgham":[11,15,33,34],"qalqalah":[39,40],"wasl":[32,33]},
-"32": {"ghunnah":[2,5,24,28],"wasl":[28,29]},
-"33": {"ghunnah":[4,7,19,23],"madd":[9,10,15,16]},
-"34": {"idgham":[5,9,16,21],"madd":[32,33]},
-"35": {"ghunnah":[20,23],"madd":[2,3,25,26]},
-"36": {"madd":[34,35]},
-"37": {"idgham":[5,9,16,21],"madd":[32,33]},
-"38": {"madd":[2,3,32,33,50,51],"wasl":[14,15,40,41]},
-"39": {"ghunnah":[4,8,24,28],"madd":[33,34]},
-"40": {"idgham":[5,9,16,21],"madd":[32,33]},
-"41": {"ghunnah":[2,5],"idgham":[30,34],"madd":[28,29,38,39],"wasl":[6,7]},
-"42": {"ghunnah":[14,17],"madd":[6,7,27,28]},
-"43": {"ghunnah":[29,34,41,44],"madd":[25,27,55,56],"silent":[5,7,18,20],"wasl":[10,11]},
-"44": {"ghunnah":[2,5],"madd":[11,12,36,37],"qalqalah":[19,21],"wasl":[25,26]},
-"45": {"idgham":[5,9,16,21],"madd":[32,33]},
-"46": {"ghunnah":[34,37],"idgham":[39,44],"madd":[50,51],"qalqalah":[44,46],"silent":[5,7,20,22]},
-"47": {"idgham":[5,9,16,21],"madd":[32,33]},
-"48": {"madd":[44,45],"silent":[29,31],"wasl":[21,22]},
-"49": {"idgham":[5,9,16,21],"madd":[32,33]},
-"50": {"ghunnah":[16,20],"madd":[27,28,37,38]}
+"1": {"madd_2":[52,53],"hamzat_wasl":[41,42]},
+"2": {"madd_2":[7,8,12,13],"hamzat_wasl":[2,3]},
+"3": {"ghunnah":[4,7],"lam_shamsiyyah":[3,4],"madd_2":[7,8,12,13],"hamzat_wasl":[2,3]},
+"4": {"madd_2":[7,8,12,13],"hamzat_wasl":[2,3]},
+"5": {"madd_2":[13,14],"hamzat_wasl":[2,3]},
+"7": {"ghunnah":[2,5],"madd_2":[24,25]},
+"8": {"ghunnah":[10,13],"lam_shamsiyyah":[9,10],"hamzat_wasl":[8,9]},
+"9": {"lam_shamsiyyah":[9,10],"madd_muttasil":[15,17],"hamzat_wasl":[8,9]},
+"10": {"hamzat_wasl":[8,9]},
+"11": {"lam_shamsiyyah":[9,10],"hamzat_wasl":[8,9]},
+"13": {"hamzat_wasl":[9,10]},
+"14": {"madd_2":[14,15],"madd_munfasil":[4,6],"qalqalah":[9,11],"hamzat_wasl":[29,30]},
+"15": {"idghaam_ghunnah":[5,9],"idghaam_no_ghunnah":[16,21],"madd_246":[32,33]},
+"16": {"madd_246":[26,27],"hamzat_wasl":[16,17]},
+"17": {"ghunnah":[2,5],"madd_246":[29,30],"hamzat_wasl":[19,20]},
+"18": {"madd_2":[4,5],"madd_246":[32,33],"qalqalah":[26,28],"hamzat_wasl":[21,22]},
+"19": {"idghaam_ghunnah":[5,9],"idghaam_no_ghunnah":[16,21],"madd_246":[32,33]},
+"20": {"idghaam_ghunnah":[22,27,30,35],"idghaam_mutaqaribayn":[13,14],"idghaam_shafawi":[17,22],"madd_246":[37,38],"madd_muttasil":[27,29]},
+"21": {"idghaam_ghunnah":[24,29],"madd_2":[10,11],"madd_246":[31,32]},
+"22": {"idghaam_ghunnah":[12,17],"madd_246":[21,22]},
+"23": {"madd_2":[26,27],"madd_246":[31,32],"hamzat_wasl":[21,22]},
+"24": {"idghaam_ghunnah":[5,9],"idghaam_no_ghunnah":[16,21],"madd_246":[32,33]},
+"25": {"qalqalah":[9,11],"hamzat_wasl":[16,17]},
+"26": {"idghaam_ghunnah":[9,13],"madd_2":[19,20],"madd_muttasil":[6,8]},
+"27": {"ikhfa":[63,67],"idghaam_ghunnah":[38,42],"idghaam_shafawi":[55,60],"madd_2":[23,24,31,32,36,37,52,53],"madd_muttasil":[60,62]},
+"28": {"idghaam_ghunnah":[5,9],"idghaam_no_ghunnah":[16,21],"madd_246":[32,33]},
+"29": {"ikhfa":[1,4,26,29],"ikhfa_shafawi":[29,33],"madd_2":[35,36],"madd_246":[46,47],"madd_munfasil":[8,10],"silent":[10,12]},
+"30": {"ikhfa":[1,4,24,28],"madd_2":[34,35],"madd_munfasil":[8,10],"qalqalah":[42,43],"silent":[10,12]},
+"31": {"idghaam_ghunnah":[11,15],"lam_shamsiyyah":[33,34],"qalqalah":[39,40],"hamzat_wasl":[32,33]},
+"32": {"ghunnah":[2,5],"ikhfa":[24,28],"hamzat_wasl":[28,29]},
+"33": {"ghunnah":[4,7],"ikhfa":[19,23],"madd_2":[9,10,15,16]},
+"34": {"idghaam_ghunnah":[5,9],"idghaam_no_ghunnah":[16,21],"madd_246":[32,33]},
+"35": {"ikhfa":[20,23],"madd_2":[2,3],"madd_246":[25,26]},
+"36": {"madd_246":[34,35]},
+"37": {"idghaam_ghunnah":[5,9],"idghaam_no_ghunnah":[16,21],"madd_246":[32,33]},
+"38": {"madd_2":[2,3,32,33],"madd_246":[50,51],"hamzat_wasl":[14,15,40,41]},
+"39": {"ikhfa":[4,8,24,28],"madd_246":[33,34]},
+"40": {"idghaam_ghunnah":[5,9],"idghaam_no_ghunnah":[16,21],"madd_246":[32,33]},
+"41": {"ghunnah":[2,5],"idghaam_ghunnah":[30,34],"madd_2":[28,29],"madd_246":[38,39],"hamzat_wasl":[6,7]},
+"42": {"ghunnah":[14,17],"madd_2":[6,7],"madd_246":[27,28]},
+"43": {"ikhfa":[41,44],"iqlab":[29,34],"madd_246":[55,56],"madd_muttasil":[25,27],"silent":[5,7,18,20],"hamzat_wasl":[10,11]},
+"44": {"ghunnah":[2,5],"madd_2":[11,12],"madd_246":[36,37],"qalqalah":[19,21],"hamzat_wasl":[25,26]},
+"45": {"idghaam_ghunnah":[5,9],"idghaam_no_ghunnah":[16,21],"madd_246":[32,33]},
+"46": {"ghunnah":[34,37],"idghaam_shafawi":[39,44],"madd_246":[50,51],"qalqalah":[44,46],"silent":[5,7,20,22]},
+"47": {"idghaam_ghunnah":[5,9],"idghaam_no_ghunnah":[16,21],"madd_246":[32,33]},
+"48": {"madd_246":[44,45],"silent":[29,31],"hamzat_wasl":[21,22]},
+"49": {"idghaam_ghunnah":[5,9],"idghaam_no_ghunnah":[16,21],"madd_246":[32,33]},
+"50": {"iqlab":[16,20],"madd_2":[27,28],"madd_246":[37,38]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/78.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/78.json
index d9004ca..6c4fb97 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/78.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/78.json
@@ -1,40 +1,40 @@
{
-"1": {"ghunnah":[41,44],"madd":[51,53,57,58]},
-"2": {"ghunnah":[7,10],"idgham":[6,7],"madd":[22,23],"wasl":[5,6,15,16]},
-"3": {"madd":[29,30]},
-"4": {"madd":[17,18]},
-"5": {"ghunnah":[2,5],"madd":[23,24]},
-"6": {"madd":[30,31],"qalqalah":[9,11],"wasl":[16,17]},
-"7": {"wasl":[2,3]},
-"8": {"madd":[10,11,22,23],"qalqalah":[6,8]},
-"10": {"wasl":[12,13]},
-"11": {"ghunnah":[14,17],"idgham":[13,14],"wasl":[12,13]},
-"12": {"ghunnah":[28,33],"qalqalah":[25,27]},
-"13": {"idgham":[18,23]},
-"14": {"ghunnah":[4,7,38,42],"madd":[29,30,35,37],"wasl":[18,19]},
-"15": {"idgham":[22,27],"madd":[16,17]},
-"16": {"ghunnah":[4,7],"madd":[7,8]},
-"17": {"ghunnah":[2,5],"madd":[34,35],"wasl":[13,14]},
-"18": {"ghunnah":[9,12],"idgham":[20,21],"wasl":[19,20]},
-"19": {"idgham":[12,13],"madd":[18,20,39,40],"qalqalah":[35,37],"wasl":[11,12]},
-"20": {"wasl":[12,13]},
+"1": {"ghunnah":[41,44],"madd_246":[57,58],"madd_muttasil":[51,53]},
+"2": {"ghunnah":[7,10],"lam_shamsiyyah":[6,7],"madd_246":[22,23],"hamzat_wasl":[5,6,15,16]},
+"3": {"madd_246":[29,30]},
+"4": {"madd_246":[17,18]},
+"5": {"ghunnah":[2,5],"madd_246":[23,24]},
+"6": {"madd_2":[30,31],"qalqalah":[9,11],"hamzat_wasl":[16,17]},
+"7": {"hamzat_wasl":[2,3]},
+"8": {"madd_2":[10,11,22,23],"qalqalah":[6,8]},
+"10": {"hamzat_wasl":[12,13]},
+"11": {"ghunnah":[14,17],"lam_shamsiyyah":[13,14],"hamzat_wasl":[12,13]},
+"12": {"ikhfa":[28,33],"qalqalah":[25,27]},
+"13": {"idghaam_ghunnah":[18,23]},
+"14": {"ikhfa":[4,7,38,42],"madd_2":[29,30],"madd_muttasil":[35,37],"hamzat_wasl":[18,19]},
+"15": {"idghaam_ghunnah":[22,27],"madd_2":[16,17]},
+"16": {"ghunnah":[4,7],"madd_2":[7,8]},
+"17": {"ghunnah":[2,5],"madd_2":[34,35],"hamzat_wasl":[13,14]},
+"18": {"ikhfa":[9,12],"lam_shamsiyyah":[20,21],"hamzat_wasl":[19,20]},
+"19": {"lam_shamsiyyah":[12,13],"madd_2":[39,40],"madd_muttasil":[18,20],"qalqalah":[35,37],"hamzat_wasl":[11,12]},
+"20": {"hamzat_wasl":[12,13]},
"21": {"ghunnah":[2,5,10,13]},
-"22": {"idgham":[3,4],"madd":[7,8]},
-"23": {"madd":[3,4,17,19]},
-"24": {"idgham":[28,33]},
-"25": {"idgham":[13,18]},
-"26": {"idgham":[7,11],"madd":[4,6]},
+"22": {"lam_shamsiyyah":[3,4],"madd_2":[7,8]},
+"23": {"madd_2":[3,4],"madd_munfasil":[17,19]},
+"24": {"idghaam_ghunnah":[28,33]},
+"25": {"idghaam_ghunnah":[13,18]},
+"26": {"idghaam_ghunnah":[7,11],"madd_muttasil":[4,6]},
"27": {"ghunnah":[2,5],"silent":[16,18]},
-"28": {"madd":[21,22],"silent":[10,12]},
-"29": {"madd":[25,26,33,34]},
-"30": {"idgham":[15,20],"silent":[8,10]},
+"28": {"madd_2":[21,22],"silent":[10,12]},
+"29": {"madd_2":[25,26,33,34]},
+"30": {"idghaam_ghunnah":[15,20],"silent":[8,10]},
"31": {"ghunnah":[2,5]},
-"32": {"madd":[4,6,19,20]},
-"34": {"ghunnah":[7,12]},
-"35": {"idgham":[29,34],"madd":[43,44]},
-"36": {"idgham":[7,12,12,17],"madd":[4,6,27,29]},
-"37": {"idgham":[8,9,52,53],"madd":[14,15,17,18,60,61],"wasl":[7,8,23,24,51,52]},
-"38": {"idgham":[16,17,46,52,94,95],"madd":[33,35,102,103],"wasl":[15,16,26,27,93,94]},
-"39": {"ghunnah":[31,35],"madd":[2,3,35,37,63,64],"wasl":[8,9,18,19,40,41]},
-"40": {"ghunnah":[2,5,10,13,29,34,50,53,124,127],"idgham":[38,43],"madd":[5,7,17,18,111,112,132,133],"wasl":[56,57,98,99]}
+"32": {"madd_2":[19,20],"madd_muttasil":[4,6]},
+"34": {"ikhfa":[7,12]},
+"35": {"idghaam_ghunnah":[29,34],"madd_2":[43,44]},
+"36": {"idghaam_ghunnah":[7,12],"idghaam_no_ghunnah":[12,17],"madd_muttasil":[4,6,27,29]},
+"37": {"lam_shamsiyyah":[8,9,52,53],"madd_2":[14,15,17,18,60,61],"hamzat_wasl":[7,8,23,24,51,52]},
+"38": {"idghaam_no_ghunnah":[46,52],"lam_shamsiyyah":[16,17,94,95],"madd_2":[102,103],"madd_muttasil":[33,35],"hamzat_wasl":[15,16,26,27,93,94]},
+"39": {"ikhfa":[31,35],"madd_2":[2,3,63,64],"madd_muttasil":[35,37],"hamzat_wasl":[8,9,18,19,40,41]},
+"40": {"ghunnah":[2,5],"ikhfa":[10,13,29,34,50,53,124,127],"idghaam_ghunnah":[38,43],"madd_2":[17,18,111,112,132,133],"madd_munfasil":[5,7],"hamzat_wasl":[56,57,98,99]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/79.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/79.json
index 739bfff..c699359 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/79.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/79.json
@@ -1,45 +1,45 @@
{
-"1": {"ghunnah":[43,46],"idgham":[42,43],"madd":[46,47,51,52],"wasl":[41,42]},
-"2": {"ghunnah":[4,7],"idgham":[3,4],"madd":[7,8,12,13],"wasl":[2,3]},
-"3": {"idgham":[3,4],"madd":[7,8,12,13],"qalqalah":[18,20],"wasl":[2,3]},
-"4": {"idgham":[3,4],"madd":[7,8,12,13],"qalqalah":[18,20],"wasl":[2,3]},
-"5": {"madd":[14,15],"wasl":[2,3]},
-"6": {"idgham":[17,18],"wasl":[16,17]},
-"7": {"idgham":[13,14],"wasl":[12,13]},
-"8": {"idgham":[6,10,17,21]},
-"9": {"madd":[6,7,15,16],"qalqalah":[2,4]},
-"10": {"ghunnah":[15,18],"wasl":[39,40]},
-"11": {"ghunnah":[10,13],"idgham":[21,27],"madd":[19,20]},
-"12": {"ghunnah":[19,24],"silent":[6,8]},
-"13": {"ghunnah":[4,7],"idgham":[23,27],"madd":[27,28],"qalqalah":[18,20]},
-"14": {"ghunnah":[10,14],"idgham":[15,16],"wasl":[14,15]},
-"15": {"madd":[10,11]},
-"16": {"madd":[11,12,22,23],"wasl":[26,27,35,36]},
-"17": {"ghunnah":[28,31],"madd":[33,34],"qalqalah":[5,7]},
-"18": {"ghunnah":[27,31],"madd":[21,24]},
-"20": {"madd":[7,8],"qalqalah":[27,29],"wasl":[11,12,22,23]},
+"1": {"ghunnah":[43,46],"lam_shamsiyyah":[42,43],"madd_2":[46,47,51,52],"hamzat_wasl":[41,42]},
+"2": {"ghunnah":[4,7],"lam_shamsiyyah":[3,4],"madd_2":[7,8,12,13],"hamzat_wasl":[2,3]},
+"3": {"lam_shamsiyyah":[3,4],"madd_2":[7,8,12,13],"qalqalah":[18,20],"hamzat_wasl":[2,3]},
+"4": {"lam_shamsiyyah":[3,4],"madd_2":[7,8,12,13],"qalqalah":[18,20],"hamzat_wasl":[2,3]},
+"5": {"madd_2":[14,15],"hamzat_wasl":[2,3]},
+"6": {"lam_shamsiyyah":[17,18],"hamzat_wasl":[16,17]},
+"7": {"lam_shamsiyyah":[13,14],"hamzat_wasl":[12,13]},
+"8": {"idghaam_ghunnah":[6,10,17,21]},
+"9": {"madd_2":[6,7,15,16],"qalqalah":[2,4]},
+"10": {"ghunnah":[15,18],"hamzat_wasl":[39,40]},
+"11": {"ghunnah":[10,13],"idghaam_ghunnah":[21,27],"madd_2":[19,20]},
+"12": {"ikhfa":[19,24],"silent":[6,8]},
+"13": {"ghunnah":[4,7],"idghaam_ghunnah":[23,27],"madd_2":[27,28],"qalqalah":[18,20]},
+"14": {"ikhfa_shafawi":[10,14],"lam_shamsiyyah":[15,16],"hamzat_wasl":[14,15]},
+"15": {"madd_2":[10,11]},
+"16": {"madd_2":[11,12,22,23],"hamzat_wasl":[26,27,35,36]},
+"17": {"ghunnah":[28,31],"madd_2":[33,34],"qalqalah":[5,7]},
+"18": {"ikhfa":[27,31],"madd_munfasil":[21,24]},
+"20": {"madd_2":[7,8],"qalqalah":[27,29],"hamzat_wasl":[11,12,22,23]},
"22": {"ghunnah":[2,5],"qalqalah":[8,10]},
-"24": {"wasl":[25,26]},
-"25": {"wasl":[11,12,27,28,42,43]},
-"26": {"ghunnah":[2,5],"idgham":[27,32,34,38],"madd":[12,13],"qalqalah":[22,24]},
-"27": {"ghunnah":[4,7],"idgham":[32,33],"madd":[38,40,48,49],"wasl":[31,32]},
-"28": {"madd":[25,26]},
-"29": {"madd":[37,38]},
-"30": {"madd":[21,22,32,33],"wasl":[2,3]},
-"31": {"madd":[19,21,36,37]},
-"32": {"madd":[20,21],"wasl":[2,3]},
-"33": {"idgham":[6,12],"madd":[4,5,27,28]},
-"34": {"ghunnah":[24,27],"idgham":[18,19],"madd":[10,12],"madd-lazim":[22,24],"qalqalah":[35,37],"wasl":[17,18,30,31]},
-"35": {"ghunnah":[24,27],"madd":[27,28],"wasl":[19,20]},
-"36": {"idgham":[27,31],"wasl":[12,13]},
-"37": {"ghunnah":[4,7,11,15]},
-"38": {"idgham":[23,24],"madd":[18,19],"silent":[17,18],"wasl":[10,11,22,23]},
-"39": {"ghunnah":[4,7],"wasl":[8,9,24,25]},
-"40": {"ghunnah":[4,7,47,50],"idgham":[46,47],"madd":[35,36],"wasl":[45,46,60,61]},
-"41": {"ghunnah":[4,7,13,16],"wasl":[8,9,24,25]},
-"42": {"idgham":[21,22],"madd":[47,48],"wasl":[20,21]},
-"43": {"ghunnah":[8,11,14,18],"madd":[23,24]},
-"44": {"ghunnah":[17,20],"madd":[23,24]},
-"45": {"ghunnah":[2,5,12,15,18,21],"idgham":[26,30],"madd":[7,9,35,36]},
-"46": {"ghunnah":[4,7],"madd":[44,46,76,77],"silent":[46,48]}
+"24": {"hamzat_wasl":[25,26]},
+"25": {"hamzat_wasl":[11,12,27,28,42,43]},
+"26": {"ghunnah":[2,5],"idghaam_ghunnah":[34,38],"idghaam_no_ghunnah":[27,32],"madd_2":[12,13],"qalqalah":[22,24]},
+"27": {"ikhfa":[4,7],"lam_shamsiyyah":[32,33],"madd_2":[48,49],"madd_muttasil":[38,40],"hamzat_wasl":[31,32]},
+"28": {"madd_2":[25,26]},
+"29": {"madd_2":[37,38]},
+"30": {"madd_2":[21,22,32,33],"hamzat_wasl":[2,3]},
+"31": {"madd_2":[36,37],"madd_muttasil":[19,21]},
+"32": {"madd_2":[20,21],"hamzat_wasl":[2,3]},
+"33": {"idghaam_no_ghunnah":[6,12],"madd_2":[4,5,27,28]},
+"34": {"ghunnah":[24,27],"lam_shamsiyyah":[18,19],"madd_muttasil":[10,12],"madd_6":[22,24],"qalqalah":[35,37],"hamzat_wasl":[17,18,30,31]},
+"35": {"ikhfa":[24,27],"madd_2":[27,28],"hamzat_wasl":[19,20]},
+"36": {"idghaam_ghunnah":[27,31],"hamzat_wasl":[12,13]},
+"37": {"ghunnah":[4,7],"ikhfa":[11,15]},
+"38": {"lam_shamsiyyah":[23,24],"madd_2":[18,19],"silent":[17,18],"hamzat_wasl":[10,11,22,23]},
+"39": {"ghunnah":[4,7],"hamzat_wasl":[8,9,24,25]},
+"40": {"ghunnah":[4,7,47,50],"lam_shamsiyyah":[46,47],"madd_2":[35,36],"hamzat_wasl":[45,46,60,61]},
+"41": {"ghunnah":[4,7,13,16],"hamzat_wasl":[8,9,24,25]},
+"42": {"lam_shamsiyyah":[21,22],"madd_2":[47,48],"hamzat_wasl":[20,21]},
+"43": {"ikhfa":[8,11,14,18],"madd_2":[23,24]},
+"44": {"ikhfa":[17,20],"madd_2":[23,24]},
+"45": {"ghunnah":[2,5],"ikhfa":[12,15,18,21],"idghaam_ghunnah":[26,30],"madd_2":[35,36],"madd_munfasil":[7,9]},
+"46": {"ghunnah":[4,7],"madd_2":[76,77],"madd_munfasil":[44,46],"silent":[46,48]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/8.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/8.json
index d5fc877..710b9fc 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/8.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/8.json
@@ -1,77 +1,77 @@
{
-"1": {"ghunnah":[64,67,81,84,197,201,201,204],"idgham":[99,100,204,209],"madd":[192,194,215,216],"silent":[118,120,140,142,170,172],"wasl":[59,60,76,77,98,99,111,112,121,122,173,174]},
-"2": {"ghunnah":[2,5],"idgham":[135,140],"madd":[109,110,114,115,133,134,168,169],"wasl":[9,10,24,25,47,48]},
-"3": {"ghunnah":[37,40,58,61],"idgham":[22,23],"madd":[29,30,50,51,63,64],"qalqalah":[46,48],"silent":[28,29],"wasl":[21,22]},
-"4": {"ghunnah":[60,63,94,98],"idgham":[37,43,85,89],"madd":[6,8,54,55,100,101],"silent":[2,4],"wasl":[18,19]},
-"5": {"ghunnah":[29,32,55,58],"idgham":[65,71],"madd":[4,6,93,94,98,99],"wasl":[42,43,74,75]},
-"6": {"ghunnah":[52,55,95,98],"madd":[4,5,100,101],"wasl":[19,20,76,77]},
-"7": {"ghunnah":[54,57,83,86],"idgham":[35,36,101,102,147,151],"madd":[39,41,174,175,179,180,205,206,210,211],"qalqalah":[185,187],"wasl":[18,19,34,35,100,101,137,138,157,158,200,201]},
-"8": {"madd":[35,36,66,67],"qalqalah":[23,25,60,62],"wasl":[10,11,30,31,55,56]},
-"9": {"ghunnah":[52,55,66,70],"idgham":[75,80],"madd":[90,92,107,108],"wasl":[32,33,83,84]},
-"10": {"ghunnah":[51,54,81,84,103,106,117,120],"idgham":[80,81],"madd":[59,60,141,142],"qalqalah":[45,47],"wasl":[15,16,79,80,107,108,121,122]},
-"11": {"ghunnah":[20,23,107,111,128,131],"idgham":[19,20,36,41,66,71,75,76,91,96,142,143],"madd":[81,83,88,90,113,114,150,151,212,213],"qalqalah":[136,138,208,210],"wasl":[18,19,74,75,141,142,203,204]},
-"12": {"ghunnah":[44,47],"idgham":[135,136],"madd":[33,35,209,210],"silent":[68,70,89,91,131,133,154,156,187,189],"wasl":[26,27,71,72,114,115,134,135,146,147,164,165,179,180]},
-"13": {"ghunnah":[12,15,93,96],"idgham":[56,60],"madd":[2,3,50,51,87,88,120,121],"madd-lazim":[22,24],"qalqalah":[121,122],"silent":[28,30],"wasl":[31,32,68,69,97,98,113,114]},
-"14": {"ghunnah":[25,28,54,57],"idgham":[53,54],"madd":[2,3,35,36,57,58],"wasl":[52,53]},
-"15": {"ghunnah":[76,81],"madd":[2,4,30,32,107,108],"qalqalah":[103,105],"silent":[32,34,68,70],"wasl":[13,14,51,52,98,99]},
-"16": {"ghunnah":[27,31,101,105,157,160],"idgham":[4,8,57,63,124,129],"madd":[37,39,112,114,149,150,179,180],"qalqalah":[107,109],"wasl":[132,133,172,173]},
-"17": {"ghunnah":[28,31,87,90,160,163],"madd":[25,26,84,85,145,147,184,185],"qalqalah":[9,11,112,114],"wasl":[32,33,91,92,119,120,164,165]},
-"18": {"ghunnah":[14,17],"madd":[2,3,46,47,51,52],"wasl":[18,19,41,42]},
-"19": {"ghunnah":[2,6,52,56,56,59,91,95,115,119,128,131,174,177],"idgham":[77,82,151,156],"madd":[29,31,202,203],"qalqalah":[24,26,108,110],"silent":[17,19,62,64,101,103],"wasl":[38,39,178,179,191,192]},
-"20": {"ghunnah":[96,99],"madd":[2,4,30,32,65,66,110,111],"silent":[32,34,43,45,82,84],"wasl":[13,14,46,47]},
-"21": {"madd":[67,68],"silent":[14,16,35,37],"wasl":[19,20]},
-"22": {"ghunnah":[2,5,27,30,44,47],"idgham":[13,14,40,41],"madd":[80,81],"madd-lazim":[19,21],"wasl":[12,13,31,32,39,40,48,49,58,59]},
-"23": {"idgham":[35,41,92,97],"madd":[103,104],"silent":[84,86],"wasl":[14,15]},
-"24": {"ghunnah":[120,123,173,176],"idgham":[60,61],"madd":[2,4,113,115,167,168,178,180,198,199],"silent":[31,33,45,47,115,117],"wasl":[13,14,34,35,106,107,124,125,147,148]},
-"25": {"ghunnah":[33,36,59,62,91,94],"idgham":[19,24,73,77],"madd":[84,86,118,119],"madd-lazim":[67,69],"qalqalah":[119,120],"silent":[9,11,54,56,86,88],"wasl":[2,3,37,38,77,78,95,96,111,112]},
-"26": {"ghunnah":[21,24,99,102,132,136],"idgham":[33,38,79,83,98,99,156,161,165,166],"madd":[9,11,115,116,144,145,174,175,198,199],"silent":[11,13],"wasl":[2,3,56,57,97,98,164,165]},
-"27": {"ghunnah":[103,106],"idgham":[60,61],"madd":[2,4,79,81,88,89,91,92,117,118],"silent":[31,33,46,48,81,83],"wasl":[13,14,49,50,59,60]},
-"28": {"ghunnah":[16,19,67,70,81,84],"idgham":[61,65],"madd":[9,11,21,23,30,31,46,47,86,88,100,101],"qalqalah":[91,93],"silent":[11,13],"wasl":[2,3,71,72]},
-"29": {"ghunnah":[37,41,99,102],"idgham":[82,87],"madd":[2,4,30,32,170,171],"qalqalah":[60,62],"silent":[32,34,47,49],"wasl":[13,14,50,51,141,142,153,154,163,164]},
-"30": {"madd":[144,145,149,150],"qalqalah":[62,64],"silent":[38,40],"wasl":[21,22,114,115,124,125,139,140]},
-"31": {"madd":[33,34,73,75,97,98,100,102,110,111,113,115,121,123,128,129,145,146],"qalqalah":[51,53],"silent":[46,48],"wasl":[135,136]},
-"32": {"ghunnah":[23,26,29,33,65,68],"idgham":[17,18,100,105,109,110],"madd":[39,40,115,117,148,149],"silent":[13,15],"wasl":[16,17,49,50,108,109,125,126]},
-"33": {"ghunnah":[40,43],"madd":[105,106],"wasl":[12,13,64,65]},
-"34": {"ghunnah":[171,174],"madd":[99,101,112,114,118,120,134,136,140,142,168,169,200,201],"silent":[101,103],"wasl":[34,35,65,66,77,78,150,151]},
-"35": {"ghunnah":[26,29,67,71,99,102],"idgham":[54,58],"madd":[51,53,113,114],"silent":[77,79],"wasl":[30,31,80,81]},
-"36": {"ghunnah":[2,5,28,31,66,70,90,93,104,107,134,138,138,141,188,191],"madd":[43,44,172,174,202,203],"silent":[23,25,61,63,174,176],"wasl":[6,7,76,77,156,157]},
-"37": {"ghunnah":[89,93,111,116,136,139],"idgham":[35,36],"madd":[75,76,103,104,126,127,148,150,165,166,170,171],"qalqalah":[49,51,118,120],"silent":[144,146],"wasl":[10,11,18,19,34,35,56,57,160,161]},
-"38": {"ghunnah":[33,36,107,110],"idgham":[29,33,55,60,78,82],"madd":[22,24,123,124],"qalqalah":[64,66,95,97],"silent":[24,26,39,41,88,90],"wasl":[113,114]},
-"39": {"ghunnah":[88,91,102,105],"idgham":[42,46,55,56],"madd":[4,5,70,71,136,137],"silent":[95,97],"wasl":[54,55,87,88,106,107]},
-"40": {"ghunnah":[4,8,34,37,89,92],"idgham":[88,89],"madd":[27,29,53,54,94,95],"silent":[15,17,29,31],"wasl":[20,21,38,39,66,67,87,88]},
-"41": {"ghunnah":[16,19,36,40,43,47,49,52,157,161,161,164,172,175,175,179,196,199,299,303],"idgham":[31,36,75,76,145,146],"madd":[9,11,69,70,114,115,129,130,191,193,305,306],"qalqalah":[139,141,214,216],"silent":[11,13],"wasl":[2,3,93,94,107,108,122,123,138,139,144,145,179,180,229,230,249,250,258,259,273,274]},
-"42": {"ghunnah":[7,10,10,14,41,45,92,95,185,190,232,235,269,272,285,288],"idgham":[27,28,72,73,112,113,158,163,202,208,242,246,279,283],"madd":[147,148,155,156,311,312],"qalqalah":[19,21,50,52,165,167],"wasl":[14,15,26,27,45,46,57,58,71,72,121,122,139,140,172,173,289,290]},
-"43": {"ghunnah":[130,133,152,155,165,169],"idgham":[45,50,74,80,177,178],"madd":[60,61,99,100,127,128,157,158,183,184],"wasl":[17,18,113,114,134,135,176,177]},
-"44": {"ghunnah":[126,131],"idgham":[65,70,143,148],"madd":[43,45,86,88,178,179],"qalqalah":[106,108],"wasl":[27,28,113,114,154,155,171,172]},
-"45": {"ghunnah":[56,60],"idgham":[98,104],"madd":[2,4,30,32,122,123],"silent":[32,34,68,70,81,83],"wasl":[13,14,60,61,73,74,84,85]},
-"46": {"ghunnah":[104,107],"idgham":[122,123],"madd":[32,33,44,45,97,99,126,127,131,132],"silent":[10,12,50,52,64,66,99,101],"wasl":[13,14,90,91,108,109,121,122]},
-"47": {"ghunnah":[41,45,52,56,75,78,97,101],"idgham":[59,64,74,75],"madd":[47,48,68,70,147,148],"qalqalah":[148,149],"silent":[14,16,36,38],"wasl":[19,20,73,74,107,108,117,118]},
-"48": {"ghunnah":[93,96,104,107,127,130,191,194,208,211,216,219,248,251],"idgham":[23,24,92,93,113,118,203,208],"madd":[31,32,41,42,136,138,200,202,219,221,251,253,295,296],"qalqalah":[296,297],"wasl":[22,23,76,77,91,92,143,144,262,263,272,273,288,289]},
-"49": {"ghunnah":[129,132],"idgham":[54,59,97,101],"madd":[20,21,72,74,78,80,153,154],"wasl":[13,14,31,32,117,118,133,134]},
-"50": {"madd":[11,14,58,60,99,100,133,134],"qalqalah":[95,97,134,135],"silent":[48,50,115,117],"wasl":[31,32,51,52,126,127]},
-"51": {"ghunnah":[40,43],"idgham":[68,73],"madd":[2,3,66,67,79,80],"qalqalah":[80,81],"wasl":[44,45]},
-"52": {"ghunnah":[40,44,120,123,138,142],"madd":[71,72,155,156],"qalqalah":[44,46,156,157],"silent":[60,62],"wasl":[28,29,75,76,96,97,124,125,148,149]},
-"53": {"ghunnah":[12,15,110,113,124,127],"idgham":[42,48],"madd":[2,3,148,149],"silent":[99,101],"wasl":[16,17,128,129]},
-"54": {"ghunnah":[40,44,101,105,155,159],"madd":[72,73,98,99,129,131,168,169,173,174],"qalqalah":[44,46,125,127],"silent":[61,63,163,165],"wasl":[28,29]},
-"55": {"ghunnah":[2,5,27,30],"idgham":[13,14],"madd":[78,79],"madd-lazim":[19,21],"silent":[56,58],"wasl":[12,13,31,32,39,40]},
-"56": {"ghunnah":[31,34,37,40],"idgham":[15,16,73,77],"madd":[12,13,93,94]},
-"57": {"ghunnah":[4,7,17,20],"idgham":[53,58],"madd":[94,95],"qalqalah":[46,48],"wasl":[29,30]},
-"58": {"ghunnah":[4,7,16,19,22,26,39,43,45,47,80,83],"madd":[73,75,109,111,115,116],"wasl":[43,44,84,85,104,105]},
-"59": {"ghunnah":[14,17,51,54],"madd":[44,46,71,72],"silent":[35,37,46,48],"wasl":[18,19]},
-"60": {"ghunnah":[40,44,138,142,199,202,210,214,217,221,262,265],"idgham":[17,22,35,40,48,52,54,59],"madd":[91,92,280,281],"silent":[10,12,205,207],"wasl":[24,25,65,66,101,102,170,171,231,232]},
-"61": {"ghunnah":[4,8,71,74],"idgham":[18,19,84,85],"madd":[76,77,101,102],"qalqalah":[30,32],"silent":[13,15],"wasl":[29,30,61,62,83,84,94,95]},
-"62": {"ghunnah":[38,41],"idgham":[4,8,20,24],"madd":[13,15,70,72,93,94,110,111],"silent":[15,17],"wasl":[51,52,64,65,99,100]},
-"63": {"ghunnah":[36,39,113,116,146,149],"idgham":[68,74],"madd":[74,76,110,111,151,152,165,166],"qalqalah":[39,41],"wasl":[52,53,117,118]},
-"64": {"ghunnah":[15,18],"idgham":[14,15],"madd":[2,4,75,76],"wasl":[13,14,33,34,48,49,64,65]},
-"65": {"ghunnah":[15,18,77,80,144,147,210,213],"idgham":[14,15,66,70,72,77,133,137,139,144,147,152,157,161,177,183,223,228],"madd":[2,4,95,96,167,169,238,239],"silent":[113,115,118,120,152,154,169,171,203,205],"wasl":[13,14,32,33,53,54,186,187]},
-"66": {"ghunnah":[28,31,45,48,62,67,80,83,93,97,145,148],"idgham":[69,73,75,80,83,88,103,107,134,138,140,145,156,160,215,216],"madd":[6,7,166,168,219,220,224,225],"silent":[88,90,114,116,119,121,168,170],"wasl":[18,19,191,192,201,202,214,215]},
-"67": {"idgham":[22,26,98,99],"madd":[36,38,161,162],"wasl":[69,70,97,98,110,111,126,127,141,142]},
-"68": {"idgham":[15,20],"madd":[13,14,55,57,81,82],"wasl":[23,24]},
-"69": {"ghunnah":[12,15,34,39,68,71],"idgham":[43,48,86,91],"madd":[32,33,93,94],"silent":[7,9,55,57],"wasl":[48,49,58,59,72,73]},
-"70": {"ghunnah":[15,18,33,37,137,140,152,155],"idgham":[14,15,49,54,72,76,112,117,131,137,192,197],"madd":[2,4,37,39,66,69,140,142,199,200],"wasl":[13,14,57,58,83,84,178,179]},
-"71": {"ghunnah":[55,59],"idgham":[4,8],"madd":[106,107],"qalqalah":[33,35,59,61],"silent":[14,16,42,44],"wasl":[45,46,86,87]},
-"72": {"ghunnah":[2,5,73,76,256,260,298,301,337,340,364,368],"idgham":[180,184,233,238,238,242,251,256,314,315,336,337,388,393,398,402],"madd":[44,45,61,62,133,135,144,146,170,172,244,245,396,397,432,433],"silent":[24,26,37,39,50,52,121,123,135,137,140,142,202,204,222,224,283,285],"wasl":[6,7,95,96,105,106,184,185,293,294,313,314,335,336,402,403]},
-"73": {"ghunnah":[76,80,85,89,109,113],"madd":[41,43,115,116],"silent":[19,21],"wasl":[2,3,91,92]},
-"74": {"ghunnah":[170,174],"idgham":[141,147,149,154,161,165],"madd":[40,41,99,101,110,112,176,177],"silent":[20,22,33,35,46,48,87,89,101,103,106,108],"wasl":[2,3,61,62,71,72,122,123]},
-"75": {"ghunnah":[26,29,87,90,145,149,169,172],"madd":[52,53,78,80,155,156,200,201],"silent":[20,22,45,47,58,60,74,76,97,99,102,104],"wasl":[2,3,105,106,159,160,173,174]}
+"1": {"ikhfa":[64,67,81,84,197,201,201,204],"idghaam_shafawi":[204,209],"lam_shamsiyyah":[99,100],"madd_246":[215,216],"madd_munfasil":[192,194],"silent":[118,120,140,142,170,172],"hamzat_wasl":[59,60,76,77,98,99,111,112,121,122,173,174]},
+"2": {"ghunnah":[2,5],"idghaam_ghunnah":[135,140],"madd_2":[109,110,114,115,133,134],"madd_246":[168,169],"hamzat_wasl":[9,10,24,25,47,48]},
+"3": {"ghunnah":[37,40],"ikhfa":[58,61],"lam_shamsiyyah":[22,23],"madd_2":[29,30,50,51],"madd_246":[63,64],"qalqalah":[46,48],"silent":[28,29],"hamzat_wasl":[21,22]},
+"4": {"ikhfa":[60,63,94,98],"idghaam_ghunnah":[85,89],"idghaam_no_ghunnah":[37,43],"madd_2":[54,55],"madd_246":[100,101],"madd_muttasil":[6,8],"silent":[2,4],"hamzat_wasl":[18,19]},
+"5": {"ghunnah":[55,58],"iqlab":[29,32],"idghaam_ghunnah":[65,71],"madd_2":[93,94],"madd_246":[98,99],"madd_munfasil":[4,6],"hamzat_wasl":[42,43,74,75]},
+"6": {"ghunnah":[52,55],"ikhfa":[95,98],"madd_2":[4,5],"madd_246":[100,101],"hamzat_wasl":[19,20,76,77]},
+"7": {"ghunnah":[54,57,83,86],"idghaam_ghunnah":[147,151],"lam_shamsiyyah":[35,36,101,102],"madd_2":[174,175,179,180,205,206],"madd_246":[210,211],"madd_muttasil":[39,41],"qalqalah":[185,187],"hamzat_wasl":[18,19,34,35,100,101,137,138,157,158,200,201]},
+"8": {"madd_2":[35,36],"madd_246":[66,67],"qalqalah":[23,25,60,62],"hamzat_wasl":[10,11,30,31,55,56]},
+"9": {"ghunnah":[52,55],"ikhfa_shafawi":[66,70],"idghaam_ghunnah":[75,80],"madd_246":[107,108],"madd_muttasil":[90,92],"hamzat_wasl":[32,33,83,84]},
+"10": {"ghunnah":[51,54,81,84,117,120],"ikhfa":[103,106],"lam_shamsiyyah":[80,81],"madd_2":[59,60],"madd_246":[141,142],"qalqalah":[45,47],"hamzat_wasl":[15,16,79,80,107,108,121,122]},
+"11": {"ghunnah":[20,23],"ikhfa":[128,131],"ikhfa_shafawi":[107,111],"idghaam_ghunnah":[36,41],"idghaam_no_ghunnah":[91,96],"idghaam_shafawi":[66,71],"lam_shamsiyyah":[19,20,75,76,142,143],"madd_2":[113,114,150,151],"madd_246":[212,213],"madd_muttasil":[81,83,88,90],"qalqalah":[136,138,208,210],"hamzat_wasl":[18,19,74,75,141,142,203,204]},
+"12": {"ghunnah":[44,47],"lam_shamsiyyah":[135,136],"madd_246":[209,210],"madd_muttasil":[33,35],"silent":[68,70,89,91,131,133,154,156,187,189],"hamzat_wasl":[26,27,71,72,114,115,134,135,146,147,164,165,179,180]},
+"13": {"ghunnah":[12,15,93,96],"idghaam_ghunnah":[56,60],"madd_2":[2,3,50,51,87,88],"madd_246":[120,121],"madd_6":[22,24],"qalqalah":[121,122],"silent":[28,30],"hamzat_wasl":[31,32,68,69,97,98,113,114]},
+"14": {"ghunnah":[25,28,54,57],"lam_shamsiyyah":[53,54],"madd_2":[2,3,35,36],"madd_246":[57,58],"hamzat_wasl":[52,53]},
+"15": {"ikhfa":[76,81],"madd_246":[107,108],"madd_munfasil":[2,4,30,32],"qalqalah":[103,105],"silent":[32,34,68,70],"hamzat_wasl":[13,14,51,52,98,99]},
+"16": {"ghunnah":[157,160],"ikhfa":[27,31,101,105],"idghaam_ghunnah":[4,8,124,129],"idghaam_no_ghunnah":[57,63],"madd_2":[149,150],"madd_246":[179,180],"madd_munfasil":[37,39],"madd_muttasil":[112,114],"qalqalah":[107,109],"hamzat_wasl":[132,133,172,173]},
+"17": {"ghunnah":[28,31,87,90,160,163],"madd_2":[25,26,84,85],"madd_246":[184,185],"madd_muttasil":[145,147],"qalqalah":[9,11,112,114],"hamzat_wasl":[32,33,91,92,119,120,164,165]},
+"18": {"ghunnah":[14,17],"madd_2":[2,3,46,47],"madd_246":[51,52],"hamzat_wasl":[18,19,41,42]},
+"19": {"ghunnah":[174,177],"ikhfa":[2,6,52,56,56,59,91,95,115,119,128,131],"idghaam_ghunnah":[151,156],"idghaam_no_ghunnah":[77,82],"madd_246":[202,203],"madd_muttasil":[29,31],"qalqalah":[24,26,108,110],"silent":[17,19,62,64,101,103],"hamzat_wasl":[38,39,178,179,191,192]},
+"20": {"ikhfa":[96,99],"madd_2":[65,66],"madd_246":[110,111],"madd_munfasil":[2,4,30,32],"silent":[32,34,43,45,82,84],"hamzat_wasl":[13,14,46,47]},
+"21": {"madd_246":[67,68],"silent":[14,16,35,37],"hamzat_wasl":[19,20]},
+"22": {"ghunnah":[2,5,44,47],"ikhfa":[27,30],"lam_shamsiyyah":[13,14,40,41],"madd_246":[80,81],"madd_6":[19,21],"hamzat_wasl":[12,13,31,32,39,40,48,49,58,59]},
+"23": {"idghaam_no_ghunnah":[35,41],"idghaam_shafawi":[92,97],"madd_246":[103,104],"silent":[84,86],"hamzat_wasl":[14,15]},
+"24": {"ghunnah":[120,123,173,176],"lam_shamsiyyah":[60,61],"madd_2":[167,168],"madd_246":[198,199],"madd_munfasil":[2,4,113,115,178,180],"silent":[31,33,45,47,115,117],"hamzat_wasl":[13,14,34,35,106,107,124,125,147,148]},
+"25": {"ghunnah":[33,36,91,94],"ikhfa":[59,62],"idghaam_ghunnah":[73,77],"idghaam_no_ghunnah":[19,24],"madd_246":[118,119],"madd_munfasil":[84,86],"madd_6":[67,69],"qalqalah":[119,120],"silent":[9,11,54,56,86,88],"hamzat_wasl":[2,3,37,38,77,78,95,96,111,112]},
+"26": {"ghunnah":[99,102],"ikhfa":[21,24],"ikhfa_shafawi":[132,136],"idghaam_ghunnah":[33,38,79,83],"idghaam_shafawi":[156,161],"lam_shamsiyyah":[98,99,165,166],"madd_2":[115,116,144,145,174,175],"madd_246":[198,199],"madd_munfasil":[9,11],"silent":[11,13],"hamzat_wasl":[2,3,56,57,97,98,164,165]},
+"27": {"ikhfa":[103,106],"lam_shamsiyyah":[60,61],"madd_2":[88,89,91,92],"madd_246":[117,118],"madd_munfasil":[2,4,79,81],"silent":[31,33,46,48,81,83],"hamzat_wasl":[13,14,49,50,59,60]},
+"28": {"ghunnah":[16,19,67,70],"ikhfa":[81,84],"idghaam_ghunnah":[61,65],"madd_2":[30,31,46,47],"madd_246":[100,101],"madd_munfasil":[9,11,21,23,86,88],"qalqalah":[91,93],"silent":[11,13],"hamzat_wasl":[2,3,71,72]},
+"29": {"ikhfa":[37,41,99,102],"idghaam_ghunnah":[82,87],"madd_246":[170,171],"madd_munfasil":[2,4,30,32],"qalqalah":[60,62],"silent":[32,34,47,49],"hamzat_wasl":[13,14,50,51,141,142,153,154,163,164]},
+"30": {"madd_2":[144,145],"madd_246":[149,150],"qalqalah":[62,64],"silent":[38,40],"hamzat_wasl":[21,22,114,115,124,125,139,140]},
+"31": {"madd_2":[33,34,97,98,110,111,128,129],"madd_246":[145,146],"madd_munfasil":[100,102,113,115,121,123],"madd_muttasil":[73,75],"qalqalah":[51,53],"silent":[46,48],"hamzat_wasl":[135,136]},
+"32": {"ghunnah":[23,26],"ikhfa":[29,33,65,68],"idghaam_ghunnah":[100,105],"lam_shamsiyyah":[17,18,109,110],"madd_2":[39,40],"madd_246":[148,149],"madd_muttasil":[115,117],"silent":[13,15],"hamzat_wasl":[16,17,49,50,108,109,125,126]},
+"33": {"ikhfa":[40,43],"madd_246":[105,106],"hamzat_wasl":[12,13,64,65]},
+"34": {"ghunnah":[171,174],"madd_2":[168,169],"madd_246":[200,201],"madd_munfasil":[99,101,118,120,140,142],"madd_muttasil":[112,114,134,136],"silent":[101,103],"hamzat_wasl":[34,35,65,66,77,78,150,151]},
+"35": {"ikhfa":[26,29,67,71,99,102],"idghaam_ghunnah":[54,58],"madd_246":[113,114],"madd_muttasil":[51,53],"silent":[77,79],"hamzat_wasl":[30,31,80,81]},
+"36": {"ghunnah":[2,5,104,107,138,141,188,191],"ikhfa":[28,31,66,70,90,93,134,138],"madd_2":[43,44],"madd_246":[202,203],"madd_munfasil":[172,174],"silent":[23,25,61,63,174,176],"hamzat_wasl":[6,7,76,77,156,157]},
+"37": {"ghunnah":[136,139],"ikhfa":[89,93,111,116],"lam_shamsiyyah":[35,36],"madd_2":[75,76,103,104,126,127,165,166],"madd_246":[170,171],"madd_muttasil":[148,150],"qalqalah":[49,51,118,120],"silent":[144,146],"hamzat_wasl":[10,11,18,19,34,35,56,57,160,161]},
+"38": {"ghunnah":[107,110],"ikhfa":[33,36],"idghaam_ghunnah":[29,33,78,82],"idghaam_shafawi":[55,60],"madd_246":[123,124],"madd_munfasil":[22,24],"qalqalah":[64,66,95,97],"silent":[24,26,39,41,88,90],"hamzat_wasl":[113,114]},
+"39": {"ghunnah":[102,105],"ikhfa":[88,91],"idghaam_ghunnah":[42,46],"lam_shamsiyyah":[55,56],"madd_2":[4,5,70,71],"madd_246":[136,137],"silent":[95,97],"hamzat_wasl":[54,55,87,88,106,107]},
+"40": {"ghunnah":[34,37,89,92],"ikhfa":[4,8],"lam_shamsiyyah":[88,89],"madd_2":[53,54],"madd_246":[94,95],"madd_munfasil":[27,29],"silent":[15,17,29,31],"hamzat_wasl":[20,21,38,39,66,67,87,88]},
+"41": {"ghunnah":[16,19,49,52],"ikhfa":[36,40,43,47,157,161,161,164,172,175,196,199,299,303],"ikhfa_shafawi":[175,179],"idghaam_shafawi":[31,36],"lam_shamsiyyah":[75,76,145,146],"madd_2":[69,70,114,115,129,130],"madd_246":[305,306],"madd_munfasil":[9,11,191,193],"qalqalah":[139,141,214,216],"silent":[11,13],"hamzat_wasl":[2,3,93,94,107,108,122,123,138,139,144,145,179,180,229,230,249,250,258,259,273,274]},
+"42": {"ghunnah":[285,288],"ikhfa":[7,10,92,95,185,190],"ikhfa_shafawi":[10,14,41,45],"iqlab":[232,235,269,272],"idghaam_ghunnah":[242,246,279,283],"idghaam_mutajanisayn":[112,113],"idghaam_no_ghunnah":[158,163,202,208],"lam_shamsiyyah":[27,28,72,73],"madd_2":[147,148,155,156],"madd_246":[311,312],"qalqalah":[19,21,50,52,165,167],"hamzat_wasl":[14,15,26,27,45,46,57,58,71,72,121,122,139,140,172,173,289,290]},
+"43": {"ghunnah":[130,133,152,155],"iqlab":[165,169],"idghaam_ghunnah":[45,50],"idghaam_no_ghunnah":[74,80],"lam_shamsiyyah":[177,178],"madd_2":[60,61,99,100,127,128,157,158],"madd_246":[183,184],"hamzat_wasl":[17,18,113,114,134,135,176,177]},
+"44": {"ikhfa":[126,131],"idghaam_ghunnah":[65,70,143,148],"madd_246":[178,179],"madd_munfasil":[43,45,86,88],"qalqalah":[106,108],"hamzat_wasl":[27,28,113,114,154,155,171,172]},
+"45": {"ikhfa":[56,60],"idghaam_no_ghunnah":[98,104],"madd_246":[122,123],"madd_munfasil":[2,4,30,32],"silent":[32,34,68,70,81,83],"hamzat_wasl":[13,14,60,61,73,74,84,85]},
+"46": {"ghunnah":[104,107],"lam_shamsiyyah":[122,123],"madd_2":[32,33,44,45,126,127],"madd_246":[131,132],"madd_munfasil":[97,99],"silent":[10,12,50,52,64,66,99,101],"hamzat_wasl":[13,14,90,91,108,109,121,122]},
+"47": {"ghunnah":[75,78],"ikhfa":[41,45,97,101],"ikhfa_shafawi":[52,56],"idghaam_ghunnah":[59,64],"lam_shamsiyyah":[74,75],"madd_2":[47,48],"madd_246":[147,148],"madd_muttasil":[68,70],"qalqalah":[148,149],"silent":[14,16,36,38],"hamzat_wasl":[19,20,73,74,107,108,117,118]},
+"48": {"ghunnah":[93,96,104,107,127,130,191,194,216,219,248,251],"ikhfa":[208,211],"idghaam_ghunnah":[203,208],"idghaam_no_ghunnah":[113,118],"lam_shamsiyyah":[23,24,92,93],"madd_2":[31,32,41,42],"madd_246":[295,296],"madd_munfasil":[219,221,251,253],"madd_muttasil":[136,138,200,202],"qalqalah":[296,297],"hamzat_wasl":[22,23,76,77,91,92,143,144,262,263,272,273,288,289]},
+"49": {"ghunnah":[129,132],"idghaam_ghunnah":[97,101],"idghaam_shafawi":[54,59],"madd_2":[20,21],"madd_246":[153,154],"madd_muttasil":[72,74,78,80],"hamzat_wasl":[13,14,31,32,117,118,133,134]},
+"50": {"madd_2":[99,100],"madd_246":[133,134],"madd_munfasil":[11,14],"madd_muttasil":[58,60],"qalqalah":[95,97,134,135],"silent":[48,50,115,117],"hamzat_wasl":[31,32,51,52,126,127]},
+"51": {"ghunnah":[40,43],"idghaam_no_ghunnah":[68,73],"madd_2":[2,3,66,67],"madd_246":[79,80],"qalqalah":[80,81],"hamzat_wasl":[44,45]},
+"52": {"ghunnah":[120,123],"ikhfa":[40,44,138,142],"madd_2":[71,72],"madd_246":[155,156],"qalqalah":[44,46,156,157],"silent":[60,62],"hamzat_wasl":[28,29,75,76,96,97,124,125,148,149]},
+"53": {"ghunnah":[12,15,124,127],"ikhfa":[110,113],"idghaam_ghunnah":[42,48],"madd_2":[2,3],"madd_246":[148,149],"silent":[99,101],"hamzat_wasl":[16,17,128,129]},
+"54": {"ikhfa":[40,44,155,159],"ikhfa_shafawi":[101,105],"madd_2":[72,73,98,99,168,169],"madd_246":[173,174],"madd_munfasil":[129,131],"qalqalah":[44,46,125,127],"silent":[61,63,163,165],"hamzat_wasl":[28,29]},
+"55": {"ghunnah":[2,5],"ikhfa":[27,30],"lam_shamsiyyah":[13,14],"madd_246":[78,79],"madd_6":[19,21],"silent":[56,58],"hamzat_wasl":[12,13,31,32,39,40]},
+"56": {"ghunnah":[31,34],"ikhfa":[37,40],"idghaam_ghunnah":[73,77],"idghaam_mutajanisayn":[15,16],"madd_2":[12,13],"madd_246":[93,94]},
+"57": {"ghunnah":[4,7,17,20],"idghaam_shafawi":[53,58],"madd_246":[94,95],"qalqalah":[46,48],"hamzat_wasl":[29,30]},
+"58": {"ghunnah":[4,7,16,19,80,83],"ikhfa":[22,26,39,43],"iqlab":[45,47],"madd_246":[115,116],"madd_muttasil":[73,75,109,111],"hamzat_wasl":[43,44,84,85,104,105]},
+"59": {"ghunnah":[14,17,51,54],"madd_246":[71,72],"madd_munfasil":[44,46],"silent":[35,37,46,48],"hamzat_wasl":[18,19]},
+"60": {"ikhfa":[40,44,138,142,199,202,210,214,217,221,262,265],"idghaam_ghunnah":[48,52],"idghaam_no_ghunnah":[54,59],"idghaam_shafawi":[17,22,35,40],"madd_2":[91,92],"madd_246":[280,281],"silent":[10,12,205,207],"hamzat_wasl":[24,25,65,66,101,102,170,171,231,232]},
+"61": {"ghunnah":[71,74],"ikhfa":[4,8],"lam_shamsiyyah":[18,19,84,85],"madd_2":[76,77],"madd_246":[101,102],"qalqalah":[30,32],"silent":[13,15],"hamzat_wasl":[29,30,61,62,83,84,94,95]},
+"62": {"ghunnah":[38,41],"idghaam_ghunnah":[4,8,20,24],"madd_2":[93,94],"madd_246":[110,111],"madd_munfasil":[13,15,70,72],"silent":[15,17],"hamzat_wasl":[51,52,64,65,99,100]},
+"63": {"ghunnah":[113,116,146,149],"ikhfa":[36,39],"idghaam_ghunnah":[68,74],"madd_2":[110,111,151,152],"madd_246":[165,166],"madd_munfasil":[74,76],"qalqalah":[39,41],"hamzat_wasl":[52,53,117,118]},
+"64": {"ghunnah":[15,18],"lam_shamsiyyah":[14,15],"madd_246":[75,76],"madd_munfasil":[2,4],"hamzat_wasl":[13,14,33,34,48,49,64,65]},
+"65": {"ghunnah":[15,18,210,213],"ikhfa":[77,80,144,147],"idghaam_ghunnah":[66,70,72,77,133,137,139,144,157,161,177,183],"idghaam_no_ghunnah":[223,228],"idghaam_shafawi":[147,152],"lam_shamsiyyah":[14,15],"madd_2":[95,96],"madd_246":[238,239],"madd_munfasil":[2,4,167,169],"silent":[113,115,118,120,152,154,169,171,203,205],"hamzat_wasl":[13,14,32,33,53,54,186,187]},
+"66": {"ghunnah":[45,48],"ikhfa":[28,31,62,67,80,83,93,97,145,148],"idghaam_ghunnah":[69,73,75,80,103,107,134,138,140,145,156,160],"idghaam_shafawi":[83,88],"lam_shamsiyyah":[215,216],"madd_2":[6,7,219,220],"madd_246":[224,225],"madd_munfasil":[166,168],"silent":[88,90,114,116,119,121,168,170],"hamzat_wasl":[18,19,191,192,201,202,214,215]},
+"67": {"idghaam_ghunnah":[22,26],"lam_shamsiyyah":[98,99],"madd_246":[161,162],"madd_munfasil":[36,38],"hamzat_wasl":[69,70,97,98,110,111,126,127,141,142]},
+"68": {"idghaam_ghunnah":[15,20],"madd_2":[13,14],"madd_246":[81,82],"madd_munfasil":[55,57],"hamzat_wasl":[23,24]},
+"69": {"ghunnah":[12,15,68,71],"ikhfa":[34,39],"idghaam_ghunnah":[43,48],"idghaam_no_ghunnah":[86,91],"madd_2":[32,33],"madd_246":[93,94],"silent":[7,9,55,57],"hamzat_wasl":[48,49,58,59,72,73]},
+"70": {"ghunnah":[15,18,137,140],"ikhfa":[33,37,152,155],"idghaam_ghunnah":[72,76,112,117,131,137],"idghaam_no_ghunnah":[192,197],"idghaam_shafawi":[49,54],"lam_shamsiyyah":[14,15],"madd_246":[199,200],"madd_munfasil":[2,4,37,39,66,69,140,142],"hamzat_wasl":[13,14,57,58,83,84,178,179]},
+"71": {"ikhfa":[55,59],"idghaam_ghunnah":[4,8],"madd_246":[106,107],"qalqalah":[33,35,59,61],"silent":[14,16,42,44],"hamzat_wasl":[45,46,86,87]},
+"72": {"ghunnah":[2,5,337,340],"ikhfa":[73,76,256,260,298,301],"iqlab":[364,368],"idghaam_ghunnah":[180,184,238,242,398,402],"idghaam_shafawi":[233,238,251,256,388,393],"lam_shamsiyyah":[314,315,336,337],"madd_2":[44,45,61,62,244,245,396,397],"madd_246":[432,433],"madd_munfasil":[133,135],"madd_muttasil":[144,146,170,172],"silent":[24,26,37,39,50,52,121,123,135,137,140,142,202,204,222,224,283,285],"hamzat_wasl":[6,7,95,96,105,106,184,185,293,294,313,314,335,336,402,403]},
+"73": {"ikhfa":[76,80,85,89,109,113],"madd_246":[115,116],"madd_muttasil":[41,43],"silent":[19,21],"hamzat_wasl":[2,3,91,92]},
+"74": {"ikhfa":[170,174],"idghaam_ghunnah":[161,165],"idghaam_no_ghunnah":[141,147],"idghaam_shafawi":[149,154],"madd_2":[40,41],"madd_246":[176,177],"madd_munfasil":[99,101],"madd_muttasil":[110,112],"silent":[20,22,33,35,46,48,87,89,101,103,106,108],"hamzat_wasl":[2,3,61,62,71,72,122,123]},
+"75": {"ghunnah":[169,172],"ikhfa":[87,90,145,149],"iqlab":[26,29],"madd_2":[52,53,155,156],"madd_246":[200,201],"madd_muttasil":[78,80],"silent":[20,22,45,47,58,60,74,76,97,99,102,104],"hamzat_wasl":[2,3,105,106,159,160,173,174]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/80.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/80.json
index b0c7135..805dc3e 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/80.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/80.json
@@ -1,38 +1,38 @@
{
-"2": {"ghunnah":[2,6],"madd":[6,8],"wasl":[13,14]},
-"3": {"madd":[25,26],"qalqalah":[8,10]},
-"4": {"ghunnah":[20,23],"idgham":[29,30],"wasl":[28,29]},
-"5": {"ghunnah":[2,5],"wasl":[12,13]},
-"6": {"ghunnah":[4,7],"madd":[12,13]},
-"8": {"ghunnah":[4,7,11,15],"madd":[15,17]},
-"10": {"ghunnah":[4,7]},
-"11": {"ghunnah":[10,13],"madd":[5,7]},
-"12": {"ghunnah":[4,8],"madd":[8,10]},
-"13": {"idgham":[9,14]},
-"14": {"idgham":[11,16]},
-"16": {"ghunnah":[6,10]},
-"17": {"ghunnah":[12,15],"madd":[15,16,21,23],"wasl":[7,8]},
-"19": {"idgham":[2,7],"madd":[22,23],"qalqalah":[7,9]},
-"20": {"ghunnah":[2,5],"idgham":[7,8],"wasl":[6,7]},
-"21": {"ghunnah":[2,5],"madd":[15,16],"qalqalah":[21,23]},
-"22": {"ghunnah":[2,5,21,24],"madd":[14,16]},
-"23": {"ghunnah":[9,12],"madd":[23,25],"qalqalah":[16,18]},
-"24": {"ghunnah":[6,9,17,20],"madd":[20,21],"wasl":[12,13]},
-"25": {"ghunnah":[2,5],"madd":[22,24],"qalqalah":[11,13],"wasl":[17,18]},
-"26": {"ghunnah":[2,5],"qalqalah":[10,12],"wasl":[16,17]},
-"27": {"ghunnah":[5,7]},
-"28": {"idgham":[7,12]},
-"29": {"idgham":[10,15]},
-"30": {"madd":[6,8]},
-"31": {"idgham":[10,14],"madd":[4,5]},
-"32": {"idgham":[7,13],"madd":[5,6,28,29]},
-"33": {"idgham":[18,19],"madd":[10,12],"madd-lazim":[22,24],"wasl":[17,18]},
-"34": {"madd":[34,35],"wasl":[15,16]},
-"35": {"ghunnah":[4,7],"madd":[9,10,17,18]},
-"36": {"madd":[4,5,13,14,21,22]},
-"37": {"ghunnah":[35,39],"idgham":[14,19,42,46],"madd":[50,51],"wasl":[8,9]},
-"38": {"idgham":[6,10,17,22]},
-"39": {"idgham":[8,13],"qalqalah":[17,19]},
-"40": {"idgham":[8,12]},
-"42": {"madd":[6,8],"silent":[2,4],"wasl":[18,19,30,31]}
+"2": {"ikhfa":[2,6],"madd_muttasil":[6,8],"hamzat_wasl":[13,14]},
+"3": {"madd_2":[25,26],"qalqalah":[8,10]},
+"4": {"ikhfa":[20,23],"lam_shamsiyyah":[29,30],"hamzat_wasl":[28,29]},
+"5": {"ghunnah":[2,5],"hamzat_wasl":[12,13]},
+"6": {"ikhfa":[4,7],"madd_2":[12,13]},
+"8": {"ghunnah":[4,7],"ikhfa":[11,15],"madd_muttasil":[15,17]},
+"10": {"ikhfa":[4,7]},
+"11": {"ghunnah":[10,13],"madd_munfasil":[5,7]},
+"12": {"ikhfa":[4,8],"madd_muttasil":[8,10]},
+"13": {"idghaam_ghunnah":[9,14]},
+"14": {"idghaam_ghunnah":[11,16]},
+"16": {"iqlab":[6,10]},
+"17": {"ikhfa":[12,15],"madd_2":[15,16],"madd_munfasil":[21,23],"hamzat_wasl":[7,8]},
+"19": {"idghaam_ghunnah":[2,7],"madd_2":[22,23],"qalqalah":[7,9]},
+"20": {"ghunnah":[2,5],"lam_shamsiyyah":[7,8],"hamzat_wasl":[6,7]},
+"21": {"ghunnah":[2,5],"madd_2":[15,16],"qalqalah":[21,23]},
+"22": {"ghunnah":[2,5],"ikhfa":[21,24],"madd_muttasil":[14,16]},
+"23": {"ghunnah":[9,12],"madd_munfasil":[23,25],"qalqalah":[16,18]},
+"24": {"ikhfa":[6,9,17,20],"madd_2":[20,21],"hamzat_wasl":[12,13]},
+"25": {"ghunnah":[2,5],"madd_muttasil":[22,24],"qalqalah":[11,13],"hamzat_wasl":[17,18]},
+"26": {"ghunnah":[2,5],"qalqalah":[10,12],"hamzat_wasl":[16,17]},
+"27": {"iqlab":[5,7]},
+"28": {"idghaam_ghunnah":[7,12]},
+"29": {"idghaam_ghunnah":[10,15]},
+"30": {"madd_muttasil":[6,8]},
+"31": {"idghaam_ghunnah":[10,14],"madd_2":[4,5]},
+"32": {"idghaam_no_ghunnah":[7,13],"madd_2":[5,6,28,29]},
+"33": {"lam_shamsiyyah":[18,19],"madd_muttasil":[10,12],"madd_6":[22,24],"hamzat_wasl":[17,18]},
+"34": {"madd_246":[34,35],"hamzat_wasl":[15,16]},
+"35": {"ghunnah":[4,7],"madd_2":[9,10],"madd_246":[17,18]},
+"36": {"madd_2":[4,5,13,14],"madd_246":[21,22]},
+"37": {"ikhfa":[35,39],"idghaam_ghunnah":[14,19,42,46],"madd_246":[50,51],"hamzat_wasl":[8,9]},
+"38": {"idghaam_ghunnah":[6,10,17,22]},
+"39": {"idghaam_ghunnah":[8,13],"qalqalah":[17,19]},
+"40": {"idghaam_ghunnah":[8,12]},
+"42": {"madd_muttasil":[6,8],"silent":[2,4],"hamzat_wasl":[18,19,30,31]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/81.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/81.json
index da6c5e9..8dd6041 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/81.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/81.json
@@ -1,31 +1,31 @@
{
-"1": {"idgham":[46,47],"wasl":[45,46]},
-"2": {"ghunnah":[10,13,20,23],"idgham":[9,10],"wasl":[8,9,19,20]},
-"3": {"wasl":[8,9]},
-"4": {"wasl":[8,9]},
-"5": {"wasl":[8,9]},
-"6": {"wasl":[8,9]},
-"7": {"ghunnah":[10,13],"idgham":[9,10],"wasl":[8,9]},
-"8": {"madd":[17,18],"wasl":[8,9]},
-"9": {"ghunnah":[11,13,13,17]},
-"10": {"idgham":[9,10],"wasl":[8,9]},
-"11": {"idgham":[9,10],"madd":[15,17],"wasl":[8,9]},
-"12": {"wasl":[8,9]},
-"13": {"ghunnah":[13,16],"wasl":[8,9]},
-"14": {"idgham":[14,19],"madd":[19,21]},
-"15": {"ghunnah":[23,26],"madd":[4,6],"qalqalah":[9,11],"wasl":[18,19]},
-"16": {"ghunnah":[16,19],"wasl":[11,12]},
-"17": {"wasl":[2,3]},
-"18": {"idgham":[3,4],"qalqalah":[7,9],"wasl":[2,3]},
-"19": {"ghunnah":[2,5,24,28],"madd":[7,8,30,31]},
-"20": {"ghunnah":[14,17],"madd":[36,37],"wasl":[22,23]},
-"21": {"ghunnah":[7,11,11,14],"madd":[19,20]},
-"22": {"ghunnah":[15,19],"madd":[25,26],"qalqalah":[21,23]},
-"23": {"madd":[36,37],"qalqalah":[6,8],"wasl":[19,20,29,30]},
-"24": {"madd":[33,34],"wasl":[17,18]},
-"25": {"idgham":[28,33],"madd":[26,27,35,36]},
-"26": {"madd":[17,18]},
-"27": {"idgham":[22,27],"madd":[31,32,36,37]},
-"28": {"ghunnah":[4,8,15,18],"idgham":[23,27],"madd":[8,10,33,34]},
-"29": {"idgham":[28,32],"madd":[10,12,23,25,34,36,58,59,63,64],"wasl":[39,40,53,54]}
+"1": {"lam_shamsiyyah":[46,47],"hamzat_wasl":[45,46]},
+"2": {"ghunnah":[10,13],"ikhfa":[20,23],"lam_shamsiyyah":[9,10],"hamzat_wasl":[8,9,19,20]},
+"3": {"hamzat_wasl":[8,9]},
+"4": {"hamzat_wasl":[8,9]},
+"5": {"hamzat_wasl":[8,9]},
+"6": {"hamzat_wasl":[8,9]},
+"7": {"ghunnah":[10,13],"lam_shamsiyyah":[9,10],"hamzat_wasl":[8,9]},
+"8": {"madd_2":[17,18],"hamzat_wasl":[8,9]},
+"9": {"ikhfa":[13,17],"iqlab":[11,13]},
+"10": {"lam_shamsiyyah":[9,10],"hamzat_wasl":[8,9]},
+"11": {"lam_shamsiyyah":[9,10],"madd_muttasil":[15,17],"hamzat_wasl":[8,9]},
+"12": {"hamzat_wasl":[8,9]},
+"13": {"ghunnah":[13,16],"hamzat_wasl":[8,9]},
+"14": {"idghaam_ghunnah":[14,19],"madd_munfasil":[19,21]},
+"15": {"ghunnah":[23,26],"madd_munfasil":[4,6],"qalqalah":[9,11],"hamzat_wasl":[18,19]},
+"16": {"ghunnah":[16,19],"hamzat_wasl":[11,12]},
+"17": {"hamzat_wasl":[2,3]},
+"18": {"lam_shamsiyyah":[3,4],"qalqalah":[7,9],"hamzat_wasl":[2,3]},
+"19": {"ghunnah":[2,5],"ikhfa":[24,28],"madd_2":[7,8],"madd_246":[30,31]},
+"20": {"ikhfa":[14,17],"madd_246":[36,37],"hamzat_wasl":[22,23]},
+"21": {"ghunnah":[11,14],"ikhfa":[7,11],"madd_246":[19,20]},
+"22": {"ikhfa_shafawi":[15,19],"madd_246":[25,26],"qalqalah":[21,23]},
+"23": {"madd_246":[36,37],"qalqalah":[6,8],"hamzat_wasl":[19,20,29,30]},
+"24": {"madd_246":[33,34],"hamzat_wasl":[17,18]},
+"25": {"idghaam_no_ghunnah":[28,33],"madd_2":[26,27],"madd_246":[35,36]},
+"26": {"madd_246":[17,18]},
+"27": {"idghaam_no_ghunnah":[22,27],"madd_2":[31,32],"madd_246":[36,37]},
+"28": {"ikhfa":[4,8,15,18],"idghaam_ghunnah":[23,27],"madd_246":[33,34],"madd_muttasil":[8,10]},
+"29": {"idghaam_ghunnah":[28,32],"madd_2":[58,59],"madd_246":[63,64],"madd_munfasil":[23,25],"madd_muttasil":[10,12,34,36],"hamzat_wasl":[39,40,53,54]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/82.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/82.json
index a9544f5..d66603a 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/82.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/82.json
@@ -1,21 +1,21 @@
{
-"1": {"ghunnah":[58,61],"idgham":[46,47],"madd":[52,54],"wasl":[45,46,57,58]},
-"2": {"ghunnah":[22,25],"wasl":[8,9,21,22]},
-"3": {"wasl":[8,9]},
-"4": {"wasl":[8,9]},
-"5": {"idgham":[14,19]},
-"6": {"ghunnah":[18,21],"madd":[2,4,21,22,54,55],"wasl":[13,14,47,48]},
-"7": {"madd":[25,26]},
-"8": {"idgham":[17,22],"madd":[2,4,26,28]},
-"9": {"idgham":[28,29],"madd":[32,33],"wasl":[27,28]},
-"10": {"ghunnah":[4,7],"madd":[23,24,28,29]},
-"11": {"ghunnah":[6,11],"madd":[11,12,16,17]},
-"12": {"madd":[24,25]},
-"13": {"ghunnah":[2,5],"madd":[29,30],"qalqalah":[11,13],"wasl":[6,7]},
-"14": {"ghunnah":[4,7],"madd":[30,31],"wasl":[8,9]},
-"15": {"idgham":[22,23],"madd":[26,27],"wasl":[21,22]},
-"16": {"madd":[23,25,29,30]},
-"17": {"idgham":[30,31],"madd":[4,6,14,15,34,35],"qalqalah":[9,11],"wasl":[29,30]},
-"18": {"ghunnah":[2,5],"idgham":[34,35],"madd":[8,10,18,19,38,39],"qalqalah":[13,15],"wasl":[33,34]},
-"19": {"ghunnah":[35,39],"idgham":[25,30,43,48,67,72],"wasl":[48,49]}
+"1": {"ikhfa":[58,61],"lam_shamsiyyah":[46,47],"madd_muttasil":[52,54],"hamzat_wasl":[45,46,57,58]},
+"2": {"ikhfa":[22,25],"hamzat_wasl":[8,9,21,22]},
+"3": {"hamzat_wasl":[8,9]},
+"4": {"hamzat_wasl":[8,9]},
+"5": {"idghaam_ghunnah":[14,19]},
+"6": {"ikhfa":[18,21],"madd_2":[21,22],"madd_246":[54,55],"madd_munfasil":[2,4],"hamzat_wasl":[13,14,47,48]},
+"7": {"madd_2":[25,26]},
+"8": {"idghaam_ghunnah":[17,22],"madd_munfasil":[2,4],"madd_muttasil":[26,28]},
+"9": {"lam_shamsiyyah":[28,29],"madd_246":[32,33],"hamzat_wasl":[27,28]},
+"10": {"ghunnah":[4,7],"madd_2":[23,24],"madd_246":[28,29]},
+"11": {"ikhfa":[6,11],"madd_2":[11,12],"madd_246":[16,17]},
+"12": {"madd_246":[24,25]},
+"13": {"ghunnah":[2,5],"madd_246":[29,30],"qalqalah":[11,13],"hamzat_wasl":[6,7]},
+"14": {"ghunnah":[4,7],"madd_246":[30,31],"hamzat_wasl":[8,9]},
+"15": {"lam_shamsiyyah":[22,23],"madd_246":[26,27],"hamzat_wasl":[21,22]},
+"16": {"madd_246":[29,30],"madd_muttasil":[23,25]},
+"17": {"lam_shamsiyyah":[30,31],"madd_2":[14,15],"madd_246":[34,35],"madd_munfasil":[4,6],"qalqalah":[9,11],"hamzat_wasl":[29,30]},
+"18": {"ghunnah":[2,5],"lam_shamsiyyah":[34,35],"madd_2":[18,19],"madd_246":[38,39],"madd_munfasil":[8,10],"qalqalah":[13,15],"hamzat_wasl":[33,34]},
+"19": {"ikhfa":[35,39],"idghaam_ghunnah":[43,48],"idghaam_no_ghunnah":[25,30,67,72],"hamzat_wasl":[48,49]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/83.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/83.json
index 7d80e2b..d00ae16 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/83.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/83.json
@@ -1,38 +1,38 @@
{
-"1": {"idgham":[44,49],"madd":[60,61]},
-"2": {"ghunnah":[36,39],"idgham":[35,36],"madd":[53,54],"silent":[25,27],"wasl":[16,17,34,35]},
-"3": {"madd":[44,45]},
-"4": {"ghunnah":[10,13,29,32],"idgham":[34,39],"madd":[20,22,46,47],"qalqalah":[39,41],"silent":[16,18]},
-"5": {"madd":[13,14]},
-"6": {"ghunnah":[17,20],"idgham":[16,17],"madd":[37,38,42,43],"wasl":[15,16,32,33]},
-"7": {"ghunnah":[10,13],"madd":[5,7,18,19,45,46],"wasl":[22,23]},
-"8": {"madd":[4,6,14,15,27,28],"qalqalah":[9,11]},
-"9": {"idgham":[6,11],"madd":[4,5,15,16]},
-"10": {"idgham":[5,9,16,21],"madd":[32,33]},
-"11": {"idgham":[33,34],"madd":[37,38],"wasl":[32,33]},
-"12": {"madd":[20,22,49,50]},
-"13": {"madd":[29,30,46,47,63,64],"wasl":[53,54]},
-"14": {"idgham":[34,39],"madd":[58,59],"silent":[47,49]},
-"15": {"ghunnah":[10,13],"idgham":[20,25,42,47],"madd":[5,7,56,57]},
-"16": {"ghunnah":[2,5,8,11],"madd":[34,35],"silent":[24,26],"wasl":[27,28]},
-"17": {"ghunnah":[2,5,31,34,34,38],"madd":[16,17,40,41,51,52],"wasl":[21,22]},
-"18": {"ghunnah":[10,13],"madd":[5,7,18,19,49,50],"qalqalah":[27,29],"wasl":[22,23]},
-"19": {"madd":[4,6,14,15,30,31],"qalqalah":[9,11]},
-"20": {"idgham":[6,11],"madd":[4,5,15,16]},
-"21": {"madd":[23,24],"wasl":[11,12]},
-"22": {"ghunnah":[2,5],"madd":[29,30],"qalqalah":[11,13],"wasl":[6,7]},
-"23": {"ghunnah":[22,25],"madd":[13,15,27,28],"wasl":[6,7]},
-"24": {"ghunnah":[36,39],"idgham":[35,36],"madd":[41,42],"wasl":[34,35]},
-"25": {"idgham":[13,18,22,27],"madd":[31,32]},
-"26": {"idgham":[16,20],"madd":[4,5,9,10,26,27,57,58,62,63],"wasl":[48,49]},
-"27": {"ghunnah":[15,19],"madd":[11,12,23,24]},
-"28": {"idgham":[5,10],"madd":[35,36],"wasl":[23,24]},
-"29": {"ghunnah":[2,5],"madd":[71,72],"qalqalah":[18,20],"silent":[25,27,34,36,60,62],"wasl":[6,7,42,43]},
-"30": {"madd":[35,36],"silent":[14,16]},
-"31": {"ghunnah":[9,12,41,44],"madd":[16,18,25,28,58,59],"silent":[18,20,49,51],"wasl":[8,9,40,41]},
-"32": {"ghunnah":[31,34],"madd":[24,26,37,39,43,45,57,58],"madd-lazim":[52,54],"silent":[26,28]},
-"33": {"madd":[4,6,32,33,37,38],"silent":[16,18]},
-"34": {"madd":[58,59],"silent":[30,32],"wasl":[2,3,12,13,38,39]},
-"35": {"ghunnah":[22,25],"madd":[13,15,27,28],"wasl":[6,7]},
-"36": {"madd":[46,47],"silent":[35,37],"wasl":[13,14]}
+"1": {"idghaam_no_ghunnah":[44,49],"madd_246":[60,61]},
+"2": {"ghunnah":[36,39],"lam_shamsiyyah":[35,36],"madd_246":[53,54],"silent":[25,27],"hamzat_wasl":[16,17,34,35]},
+"3": {"madd_246":[44,45]},
+"4": {"ghunnah":[10,13,29,32],"idghaam_shafawi":[34,39],"madd_246":[46,47],"madd_muttasil":[20,22],"qalqalah":[39,41],"silent":[16,18]},
+"5": {"madd_246":[13,14]},
+"6": {"ghunnah":[17,20],"lam_shamsiyyah":[16,17],"madd_2":[37,38],"madd_246":[42,43],"hamzat_wasl":[15,16,32,33]},
+"7": {"ghunnah":[10,13],"madd_2":[18,19],"madd_246":[45,46],"madd_munfasil":[5,7],"hamzat_wasl":[22,23]},
+"8": {"madd_2":[14,15],"madd_246":[27,28],"madd_munfasil":[4,6],"qalqalah":[9,11]},
+"9": {"idghaam_ghunnah":[6,11],"madd_2":[4,5],"madd_246":[15,16]},
+"10": {"idghaam_ghunnah":[5,9],"idghaam_no_ghunnah":[16,21],"madd_246":[32,33]},
+"11": {"lam_shamsiyyah":[33,34],"madd_246":[37,38],"hamzat_wasl":[32,33]},
+"12": {"madd_246":[49,50],"madd_munfasil":[20,22]},
+"13": {"madd_2":[29,30,46,47],"madd_246":[63,64],"hamzat_wasl":[53,54]},
+"14": {"idghaam_shafawi":[34,39],"madd_246":[58,59],"silent":[47,49]},
+"15": {"ghunnah":[10,13],"idghaam_no_ghunnah":[20,25,42,47],"madd_246":[56,57],"madd_munfasil":[5,7]},
+"16": {"ghunnah":[2,5,8,11],"madd_246":[34,35],"silent":[24,26],"hamzat_wasl":[27,28]},
+"17": {"ghunnah":[2,5],"ikhfa":[31,34],"ikhfa_shafawi":[34,38],"madd_2":[16,17,40,41],"madd_246":[51,52],"hamzat_wasl":[21,22]},
+"18": {"ghunnah":[10,13],"madd_2":[18,19],"madd_246":[49,50],"madd_munfasil":[5,7],"qalqalah":[27,29],"hamzat_wasl":[22,23]},
+"19": {"madd_2":[14,15],"madd_246":[30,31],"madd_munfasil":[4,6],"qalqalah":[9,11]},
+"20": {"idghaam_ghunnah":[6,11],"madd_2":[4,5],"madd_246":[15,16]},
+"21": {"madd_246":[23,24],"hamzat_wasl":[11,12]},
+"22": {"ghunnah":[2,5],"madd_246":[29,30],"qalqalah":[11,13],"hamzat_wasl":[6,7]},
+"23": {"ikhfa":[22,25],"madd_246":[27,28],"madd_muttasil":[13,15],"hamzat_wasl":[6,7]},
+"24": {"ghunnah":[36,39],"lam_shamsiyyah":[35,36],"madd_246":[41,42],"hamzat_wasl":[34,35]},
+"25": {"idghaam_ghunnah":[22,27],"idghaam_no_ghunnah":[13,18],"madd_246":[31,32]},
+"26": {"idghaam_ghunnah":[16,20],"madd_2":[4,5,9,10,26,27,57,58],"madd_246":[62,63],"hamzat_wasl":[48,49]},
+"27": {"ikhfa":[15,19],"madd_2":[11,12],"madd_246":[23,24]},
+"28": {"idghaam_ghunnah":[5,10],"madd_246":[35,36],"hamzat_wasl":[23,24]},
+"29": {"ghunnah":[2,5],"madd_246":[71,72],"qalqalah":[18,20],"silent":[25,27,34,36,60,62],"hamzat_wasl":[6,7,42,43]},
+"30": {"madd_246":[35,36],"silent":[14,16]},
+"31": {"ikhfa":[9,12,41,44],"madd_246":[58,59],"madd_munfasil":[16,18,25,28],"silent":[18,20,49,51],"hamzat_wasl":[8,9,40,41]},
+"32": {"ghunnah":[31,34],"madd_246":[57,58],"madd_munfasil":[24,26],"madd_muttasil":[37,39,43,45],"madd_6":[52,54],"silent":[26,28]},
+"33": {"madd_2":[32,33],"madd_246":[37,38],"madd_munfasil":[4,6],"silent":[16,18]},
+"34": {"madd_246":[58,59],"silent":[30,32],"hamzat_wasl":[2,3,12,13,38,39]},
+"35": {"ikhfa":[22,25],"madd_246":[27,28],"madd_muttasil":[13,15],"hamzat_wasl":[6,7]},
+"36": {"madd_246":[46,47],"silent":[35,37],"hamzat_wasl":[13,14]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/84.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/84.json
index bdb4597..901bef4 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/84.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/84.json
@@ -1,23 +1,23 @@
{
-"1": {"ghunnah":[58,61],"idgham":[46,47],"madd":[52,54],"wasl":[45,46,57,58]},
-"3": {"wasl":[8,9]},
-"6": {"ghunnah":[18,21,27,30,61,66],"madd":[2,4,21,22,70,71,73,74],"qalqalah":[58,60],"wasl":[13,14]},
-"7": {"ghunnah":[4,7],"madd":[26,27,31,32]},
-"8": {"idgham":[25,30]},
-"9": {"ghunnah":[4,7],"madd":[16,19,28,29]},
-"10": {"ghunnah":[4,7],"madd":[26,27,31,32,37,39]},
+"1": {"ikhfa":[58,61],"lam_shamsiyyah":[46,47],"madd_muttasil":[52,54],"hamzat_wasl":[45,46,57,58]},
+"3": {"hamzat_wasl":[8,9]},
+"6": {"ghunnah":[27,30],"ikhfa":[18,21,61,66],"madd_2":[21,22,70,71],"madd_246":[73,74],"madd_munfasil":[2,4],"qalqalah":[58,60],"hamzat_wasl":[13,14]},
+"7": {"ghunnah":[4,7],"madd_2":[26,27,31,32]},
+"8": {"idghaam_ghunnah":[25,30]},
+"9": {"ikhfa":[4,7],"madd_2":[28,29],"madd_munfasil":[16,19]},
+"10": {"ghunnah":[4,7],"madd_2":[26,27,31,32],"madd_muttasil":[37,39]},
"11": {"qalqalah":[11,13],"silent":[16,18]},
-"13": {"ghunnah":[2,5],"madd":[7,8,17,19,28,29]},
-"14": {"ghunnah":[2,5,11,14],"idgham":[17,22,22,26],"madd":[7,8,28,29]},
-"15": {"ghunnah":[10,13],"madd":[4,7,21,22,33,34]},
-"16": {"idgham":[19,20],"madd":[4,6],"qalqalah":[9,11,25,26],"wasl":[18,19]},
-"17": {"qalqalah":[21,22],"wasl":[2,3]},
-"18": {"qalqalah":[24,25],"wasl":[2,3,18,19]},
-"19": {"ghunnah":[10,13,24,28],"qalqalah":[30,31]},
-"20": {"madd":[25,26]},
-"21": {"madd":[51,52],"wasl":[26,27]},
-"22": {"madd":[34,35],"silent":[22,24],"wasl":[5,6]},
-"23": {"madd":[30,31],"wasl":[2,3]},
-"24": {"ghunnah":[11,15],"madd":[27,28]},
-"25": {"idgham":[41,42],"madd":[45,46,50,51,81,82],"qalqalah":[63,65],"silent":[25,27,37,39],"wasl":[7,8,40,41]}
+"13": {"ghunnah":[2,5],"madd_2":[7,8,28,29],"madd_munfasil":[17,19]},
+"14": {"ghunnah":[2,5,11,14],"idghaam_ghunnah":[22,26],"idghaam_no_ghunnah":[17,22],"madd_2":[7,8],"madd_246":[28,29]},
+"15": {"ghunnah":[10,13],"madd_2":[21,22,33,34],"madd_munfasil":[4,7]},
+"16": {"lam_shamsiyyah":[19,20],"madd_munfasil":[4,6],"qalqalah":[9,11,25,26],"hamzat_wasl":[18,19]},
+"17": {"qalqalah":[21,22],"hamzat_wasl":[2,3]},
+"18": {"qalqalah":[24,25],"hamzat_wasl":[2,3,18,19]},
+"19": {"ghunnah":[10,13],"ikhfa":[24,28],"qalqalah":[30,31]},
+"20": {"madd_246":[25,26]},
+"21": {"madd_246":[51,52],"hamzat_wasl":[26,27]},
+"22": {"madd_246":[34,35],"silent":[22,24],"hamzat_wasl":[5,6]},
+"23": {"madd_246":[30,31],"hamzat_wasl":[2,3]},
+"24": {"ikhfa_shafawi":[11,15],"madd_246":[27,28]},
+"25": {"lam_shamsiyyah":[41,42],"madd_2":[45,46,50,51],"madd_246":[81,82],"qalqalah":[63,65],"silent":[25,27,37,39],"hamzat_wasl":[7,8,40,41]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/85.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/85.json
index 0751e8c..604c424 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/85.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/85.json
@@ -1,24 +1,24 @@
{
-"1": {"idgham":[42,43],"madd":[48,50,66,67],"qalqalah":[67,68],"wasl":[41,42,59,60]},
-"2": {"madd":[21,22],"qalqalah":[22,23],"wasl":[2,3,12,13]},
-"3": {"idgham":[8,12],"madd":[18,19],"qalqalah":[19,20]},
-"4": {"madd":[13,14,26,27],"qalqalah":[27,28],"wasl":[17,18]},
-"5": {"ghunnah":[2,5],"idgham":[1,2],"madd":[22,23],"qalqalah":[23,24],"wasl":[15,16]},
-"6": {"madd":[24,25],"qalqalah":[25,26]},
-"7": {"madd":[51,52],"qalqalah":[52,53],"wasl":[32,33]},
-"8": {"idgham":[35,39],"madd":[30,32,77,78],"qalqalah":[78,79],"silent":[13,15,46,48],"wasl":[51,52,59,60,70,71]},
-"9": {"ghunnah":[75,79],"idgham":[22,23],"madd":[12,13,28,29,31,32,81,82],"qalqalah":[82,83],"wasl":[21,22,37,38,49,50]},
-"10": {"ghunnah":[2,5,60,63,101,104],"madd":[54,55,131,132],"qalqalah":[132,133],"silent":[23,25,77,79],"wasl":[6,7,26,27,43,44,124,125]},
-"11": {"ghunnah":[2,5,62,65,67,71,79,83],"idgham":[40,41],"madd":[44,45,49,50,65,66,100,101,106,107,129,130],"qalqalah":[71,73],"silent":[24,26,36,38],"wasl":[6,7,39,40,91,92,112,113,122,123]},
-"12": {"ghunnah":[2,5],"madd":[27,28],"qalqalah":[8,10,28,29]},
-"13": {"ghunnah":[2,5],"madd":[7,8,29,30],"qalqalah":[16,18,30,31]},
-"14": {"madd":[25,26],"qalqalah":[26,27],"wasl":[7,8,18,19]},
-"15": {"madd":[21,22],"qalqalah":[22,23],"wasl":[4,5,14,15]},
-"16": {"idgham":[7,12],"madd":[20,21],"qalqalah":[21,22]},
-"17": {"madd":[10,11,29,30],"qalqalah":[30,31],"wasl":[22,23]},
-"18": {"madd":[17,18],"qalqalah":[18,19]},
-"19": {"madd":[35,36],"qalqalah":[36,37],"silent":[22,24],"wasl":[5,6]},
-"20": {"idgham":[12,16,24,29],"madd":[18,20,31,32],"qalqalah":[32,33],"wasl":[2,3]},
-"21": {"idgham":[18,23],"madd":[25,26],"qalqalah":[26,27]},
-"22": {"idgham":[9,14],"madd":[18,19]}
+"1": {"lam_shamsiyyah":[42,43],"madd_246":[66,67],"madd_muttasil":[48,50],"qalqalah":[67,68],"hamzat_wasl":[41,42,59,60]},
+"2": {"madd_246":[21,22],"qalqalah":[22,23],"hamzat_wasl":[2,3,12,13]},
+"3": {"idghaam_ghunnah":[8,12],"madd_246":[18,19],"qalqalah":[19,20]},
+"4": {"madd_2":[13,14],"madd_246":[26,27],"qalqalah":[27,28],"hamzat_wasl":[17,18]},
+"5": {"ghunnah":[2,5],"lam_shamsiyyah":[1,2],"madd_246":[22,23],"qalqalah":[23,24],"hamzat_wasl":[15,16]},
+"6": {"madd_246":[24,25],"qalqalah":[25,26]},
+"7": {"madd_246":[51,52],"qalqalah":[52,53],"hamzat_wasl":[32,33]},
+"8": {"idghaam_ghunnah":[35,39],"madd_246":[77,78],"madd_munfasil":[30,32],"qalqalah":[78,79],"silent":[13,15,46,48],"hamzat_wasl":[51,52,59,60,70,71]},
+"9": {"ikhfa":[75,79],"lam_shamsiyyah":[22,23],"madd_2":[12,13,28,29,31,32],"madd_246":[81,82],"qalqalah":[82,83],"hamzat_wasl":[21,22,37,38,49,50]},
+"10": {"ghunnah":[2,5,60,63,101,104],"madd_2":[54,55],"madd_246":[131,132],"qalqalah":[132,133],"silent":[23,25,77,79],"hamzat_wasl":[6,7,26,27,43,44,124,125]},
+"11": {"ghunnah":[2,5,62,65],"ikhfa":[67,71,79,83],"lam_shamsiyyah":[40,41],"madd_2":[44,45,49,50,65,66,100,101,106,107],"madd_246":[129,130],"qalqalah":[71,73],"silent":[24,26,36,38],"hamzat_wasl":[6,7,39,40,91,92,112,113,122,123]},
+"12": {"ghunnah":[2,5],"madd_246":[27,28],"qalqalah":[8,10,28,29]},
+"13": {"ghunnah":[2,5],"madd_2":[7,8],"madd_246":[29,30],"qalqalah":[16,18,30,31]},
+"14": {"madd_246":[25,26],"qalqalah":[26,27],"hamzat_wasl":[7,8,18,19]},
+"15": {"madd_246":[21,22],"qalqalah":[22,23],"hamzat_wasl":[4,5,14,15]},
+"16": {"idghaam_no_ghunnah":[7,12],"madd_246":[20,21],"qalqalah":[21,22]},
+"17": {"madd_2":[10,11],"madd_246":[29,30],"qalqalah":[30,31],"hamzat_wasl":[22,23]},
+"18": {"madd_246":[17,18],"qalqalah":[18,19]},
+"19": {"madd_246":[35,36],"qalqalah":[36,37],"silent":[22,24],"hamzat_wasl":[5,6]},
+"20": {"idghaam_ghunnah":[12,16],"idghaam_shafawi":[24,29],"madd_246":[31,32],"madd_muttasil":[18,20],"qalqalah":[32,33],"hamzat_wasl":[2,3]},
+"21": {"idghaam_ghunnah":[18,23],"madd_246":[25,26],"qalqalah":[26,27]},
+"22": {"idghaam_ghunnah":[9,14],"madd_246":[18,19]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/86.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/86.json
index 22a7ceb..9d1d18c 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/86.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/86.json
@@ -1,18 +1,18 @@
{
-"1": {"idgham":[42,43,56,57],"madd":[48,50],"qalqalah":[63,64],"wasl":[41,42,55,56]},
-"2": {"idgham":[23,24],"madd":[4,6,14,15],"qalqalah":[9,11,30,31],"wasl":[22,23]},
-"3": {"ghunnah":[2,5],"idgham":[1,2,11,12],"qalqalah":[5,7,18,19],"wasl":[10,11]},
-"4": {"ghunnah":[2,6,20,23],"idgham":[15,20]},
-"5": {"ghunnah":[6,9,17,20,26,29],"madd":[20,21],"qalqalah":[34,35],"wasl":[12,13]},
-"6": {"ghunnah":[17,21],"idgham":[9,14],"madd":[14,16],"qalqalah":[24,25]},
-"7": {"ghunnah":[12,15],"idgham":[22,23,34,35],"madd":[40,42],"qalqalah":[44,45],"wasl":[21,22,33,34]},
-"8": {"ghunnah":[2,5],"madd":[7,8,24,25],"qalqalah":[18,20]},
-"9": {"idgham":[16,17],"madd":[22,24],"qalqalah":[9,11],"wasl":[15,16]},
-"10": {"ghunnah":[14,18],"idgham":[22,26],"madd":[10,11]},
-"11": {"idgham":[3,4,21,22],"madd":[9,11],"qalqalah":[25,27],"wasl":[2,3,20,21]},
-"12": {"idgham":[19,20],"qalqalah":[23,25],"wasl":[2,3,18,19]},
-"13": {"ghunnah":[2,5,16,20],"madd":[7,8]},
-"14": {"wasl":[13,14]},
+"1": {"lam_shamsiyyah":[42,43,56,57],"madd_muttasil":[48,50],"qalqalah":[63,64],"hamzat_wasl":[41,42,55,56]},
+"2": {"lam_shamsiyyah":[23,24],"madd_2":[14,15],"madd_munfasil":[4,6],"qalqalah":[9,11,30,31],"hamzat_wasl":[22,23]},
+"3": {"ghunnah":[2,5],"lam_shamsiyyah":[1,2,11,12],"qalqalah":[5,7,18,19],"hamzat_wasl":[10,11]},
+"4": {"ghunnah":[20,23],"ikhfa":[2,6],"idghaam_no_ghunnah":[15,20]},
+"5": {"ghunnah":[26,29],"ikhfa":[6,9,17,20],"madd_2":[20,21],"qalqalah":[34,35],"hamzat_wasl":[12,13]},
+"6": {"ikhfa":[17,21],"idghaam_ghunnah":[9,14],"madd_muttasil":[14,16],"qalqalah":[24,25]},
+"7": {"iqlab":[12,15],"lam_shamsiyyah":[22,23,34,35],"madd_muttasil":[40,42],"qalqalah":[44,45],"hamzat_wasl":[21,22,33,34]},
+"8": {"ghunnah":[2,5],"madd_2":[7,8,24,25],"qalqalah":[18,20]},
+"9": {"lam_shamsiyyah":[16,17],"madd_muttasil":[22,24],"qalqalah":[9,11],"hamzat_wasl":[15,16]},
+"10": {"ikhfa":[14,18],"idghaam_ghunnah":[22,26],"madd_2":[10,11]},
+"11": {"lam_shamsiyyah":[3,4,21,22],"madd_muttasil":[9,11],"qalqalah":[25,27],"hamzat_wasl":[2,3,20,21]},
+"12": {"lam_shamsiyyah":[19,20],"qalqalah":[23,25],"hamzat_wasl":[2,3,18,19]},
+"13": {"ghunnah":[2,5],"ikhfa":[16,20],"madd_2":[7,8]},
+"14": {"hamzat_wasl":[13,14]},
"15": {"ghunnah":[2,5]},
-"17": {"madd":[15,16],"wasl":[10,11]}
+"17": {"madd_2":[15,16],"hamzat_wasl":[10,11]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/87.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/87.json
index eb47f70..4b8a542 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/87.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/87.json
@@ -1,19 +1,19 @@
{
-"1": {"wasl":[47,48,61,62]},
-"3": {"wasl":[2,3]},
-"4": {"madd":[8,10],"wasl":[2,3,20,21]},
-"5": {"madd":[10,11,16,18]},
-"6": {"ghunnah":[21,24],"qalqalah":[4,6]},
-"7": {"ghunnah":[28,31],"madd":[13,15,33,34],"wasl":[18,19,44,45]},
-"9": {"idgham":[12,17,25,26],"wasl":[24,25]},
-"10": {"idgham":[15,19]},
-"11": {"ghunnah":[8,11],"wasl":[17,18]},
-"12": {"ghunnah":[18,21],"idgham":[17,18],"qalqalah":[30,32],"wasl":[16,17,25,26]},
+"1": {"hamzat_wasl":[47,48,61,62]},
+"3": {"hamzat_wasl":[2,3]},
+"4": {"madd_munfasil":[8,10],"hamzat_wasl":[2,3,20,21]},
+"5": {"madd_2":[10,11],"madd_muttasil":[16,18]},
+"6": {"ikhfa":[21,24],"qalqalah":[4,6]},
+"7": {"ghunnah":[28,31],"madd_2":[33,34],"madd_muttasil":[13,15],"hamzat_wasl":[18,19,44,45]},
+"9": {"idghaam_ghunnah":[12,17],"lam_shamsiyyah":[25,26],"hamzat_wasl":[24,25]},
+"10": {"idghaam_ghunnah":[15,19]},
+"11": {"ghunnah":[8,11],"hamzat_wasl":[17,18]},
+"12": {"ghunnah":[18,21],"lam_shamsiyyah":[17,18],"qalqalah":[30,32],"hamzat_wasl":[16,17,25,26]},
"13": {"ghunnah":[2,5]},
-"14": {"ghunnah":[16,20],"qalqalah":[2,4]},
-"15": {"madd":[22,23],"wasl":[9,10]},
-"16": {"idgham":[30,31],"madd":[25,26],"silent":[24,25],"wasl":[17,18,29,30]},
-"17": {"idgham":[20,24],"qalqalah":[26,28],"wasl":[2,3]},
-"18": {"ghunnah":[2,5],"idgham":[20,21],"madd":[8,9],"wasl":[19,20,29,30]},
-"19": {"madd":[13,14],"qalqalah":[9,11]}
+"14": {"ikhfa":[16,20],"qalqalah":[2,4]},
+"15": {"madd_2":[22,23],"hamzat_wasl":[9,10]},
+"16": {"lam_shamsiyyah":[30,31],"madd_2":[25,26],"silent":[24,25],"hamzat_wasl":[17,18,29,30]},
+"17": {"idghaam_ghunnah":[20,24],"qalqalah":[26,28],"hamzat_wasl":[2,3]},
+"18": {"ghunnah":[2,5],"lam_shamsiyyah":[20,21],"madd_2":[8,9],"hamzat_wasl":[19,20,29,30]},
+"19": {"madd_2":[13,14],"qalqalah":[9,11]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/88.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/88.json
index d5c32c5..31dbbca 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/88.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/88.json
@@ -1,24 +1,24 @@
{
-"1": {"madd":[49,50,66,67],"wasl":[61,62]},
-"2": {"idgham":[6,10],"madd":[21,22]},
-"3": {"idgham":[8,13]},
-"6": {"ghunnah":[32,36],"madd":[38,39]},
-"7": {"ghunnah":[30,34],"madd":[34,35]},
-"8": {"idgham":[6,10,17,22]},
+"1": {"madd_2":[49,50,66,67],"hamzat_wasl":[61,62]},
+"2": {"idghaam_ghunnah":[6,10],"madd_2":[21,22]},
+"3": {"idghaam_ghunnah":[8,13]},
+"6": {"ikhfa":[32,36],"madd_246":[38,39]},
+"7": {"ikhfa":[30,34],"madd_246":[34,35]},
+"8": {"idghaam_ghunnah":[6,10,17,22]},
"10": {"ghunnah":[6,9]},
-"11": {"madd":[23,24]},
-"12": {"ghunnah":[12,16]},
-"13": {"idgham":[12,17]},
-"14": {"idgham":[10,15]},
+"11": {"madd_2":[23,24]},
+"12": {"ikhfa":[12,16]},
+"13": {"idghaam_ghunnah":[12,17]},
+"14": {"idghaam_ghunnah":[10,15]},
"16": {"qalqalah":[15,17]},
-"17": {"ghunnah":[10,13],"wasl":[25,26]},
-"18": {"idgham":[9,10],"madd":[15,17],"wasl":[8,9]},
-"19": {"wasl":[8,9]},
-"20": {"wasl":[8,9]},
-"21": {"ghunnah":[12,15,22,25],"madd":[17,19]},
-"22": {"ghunnah":[16,20]},
-"23": {"ghunnah":[9,13]},
-"24": {"wasl":[14,15,22,23,33,34]},
-"25": {"ghunnah":[2,5],"madd":[14,16]},
+"17": {"ikhfa":[10,13],"hamzat_wasl":[25,26]},
+"18": {"lam_shamsiyyah":[9,10],"madd_muttasil":[15,17],"hamzat_wasl":[8,9]},
+"19": {"hamzat_wasl":[8,9]},
+"20": {"hamzat_wasl":[8,9]},
+"21": {"ghunnah":[12,15],"ikhfa":[22,25],"madd_munfasil":[17,19]},
+"22": {"ikhfa_shafawi":[16,20]},
+"23": {"ikhfa":[9,13]},
+"24": {"hamzat_wasl":[14,15,22,23,33,34]},
+"25": {"ghunnah":[2,5],"madd_munfasil":[14,16]},
"26": {"ghunnah":[2,5,8,11]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/89.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/89.json
index a4b59b1..a2dae1d 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/89.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/89.json
@@ -1,31 +1,31 @@
{
-"1": {"qalqalah":[46,48],"wasl":[41,42]},
-"3": {"idgham":[3,4],"wasl":[2,3,14,15]},
-"4": {"wasl":[2,3]},
-"5": {"idgham":[22,27],"madd":[11,12],"qalqalah":[33,35]},
-"6": {"madd":[38,39],"qalqalah":[39,40]},
-"7": {"madd":[20,21],"qalqalah":[21,22],"wasl":[13,14]},
-"8": {"madd":[43,44],"qalqalah":[19,21,44,45],"wasl":[36,37]},
-"9": {"idgham":[30,31],"madd":[46,47],"qalqalah":[47,48],"silent":[26,28],"wasl":[10,11,29,30,41,42]},
-"10": {"madd":[26,27],"qalqalah":[27,28],"wasl":[17,18]},
-"11": {"madd":[30,31],"qalqalah":[31,32],"silent":[16,18],"wasl":[23,24]},
-"12": {"madd":[28,29],"qalqalah":[29,30],"silent":[11,13],"wasl":[21,22]},
-"13": {"madd":[38,39],"qalqalah":[39,40]},
-"14": {"ghunnah":[2,5],"madd":[27,28],"qalqalah":[28,29],"wasl":[18,19]},
-"15": {"ghunnah":[4,7,14,17],"madd":[17,18,39,40,50,51,64,65,77,78,94,96],"qalqalah":[32,34],"wasl":[9,10,31,32]},
-"16": {"ghunnah":[4,7],"madd":[7,9,28,29,58,59,75,77,82,83],"qalqalah":[21,23],"wasl":[20,21]},
-"17": {"madd":[35,36],"wasl":[28,29]},
-"18": {"madd":[43,44],"madd-lazim":[10,12],"wasl":[34,35]},
-"19": {"ghunnah":[36,39],"idgham":[15,16,30,36],"wasl":[14,15]},
-"20": {"ghunnah":[26,31,31,34],"wasl":[13,14]},
-"21": {"ghunnah":[36,41],"madd":[5,7],"wasl":[22,23]},
-"22": {"ghunnah":[33,38],"madd":[4,6],"wasl":[19,20]},
-"23": {"ghunnah":[20,24,29,32,63,66,74,77],"idgham":[44,48,86,87],"madd":[6,8,66,67],"silent":[4,6],"wasl":[58,59,85,86]},
-"24": {"madd":[10,11]},
-"25": {"idgham":[11,16],"madd":[37,39],"qalqalah":[44,45]},
-"26": {"madd":[23,25],"qalqalah":[30,31]},
-"27": {"ghunnah":[17,20,36,39],"idgham":[16,17],"madd":[2,4],"qalqalah":[30,32],"wasl":[15,16,25,26]},
-"28": {"idgham":[33,38],"madd":[7,9]},
-"29": {"madd":[19,20],"qalqalah":[3,5],"wasl":[2,3]},
-"30": {"ghunnah":[13,16],"qalqalah":[3,5],"wasl":[2,3]}
+"1": {"qalqalah":[46,48],"hamzat_wasl":[41,42]},
+"3": {"lam_shamsiyyah":[3,4],"hamzat_wasl":[2,3,14,15]},
+"4": {"hamzat_wasl":[2,3]},
+"5": {"idghaam_no_ghunnah":[22,27],"madd_2":[11,12],"qalqalah":[33,35]},
+"6": {"madd_246":[38,39],"qalqalah":[39,40]},
+"7": {"madd_246":[20,21],"qalqalah":[21,22],"hamzat_wasl":[13,14]},
+"8": {"madd_246":[43,44],"qalqalah":[19,21,44,45],"hamzat_wasl":[36,37]},
+"9": {"lam_shamsiyyah":[30,31],"madd_246":[46,47],"qalqalah":[47,48],"silent":[26,28],"hamzat_wasl":[10,11,29,30,41,42]},
+"10": {"madd_246":[26,27],"qalqalah":[27,28],"hamzat_wasl":[17,18]},
+"11": {"madd_246":[30,31],"qalqalah":[31,32],"silent":[16,18],"hamzat_wasl":[23,24]},
+"12": {"madd_246":[28,29],"qalqalah":[29,30],"silent":[11,13],"hamzat_wasl":[21,22]},
+"13": {"madd_246":[38,39],"qalqalah":[39,40]},
+"14": {"ghunnah":[2,5],"madd_246":[27,28],"qalqalah":[28,29],"hamzat_wasl":[18,19]},
+"15": {"ghunnah":[4,7],"ikhfa":[14,17],"madd_2":[17,18,39,40,50,51,64,65,77,78],"madd_munfasil":[94,96],"qalqalah":[32,34],"hamzat_wasl":[9,10,31,32]},
+"16": {"ghunnah":[4,7],"madd_2":[28,29,58,59,82,83],"madd_munfasil":[7,9,75,77],"qalqalah":[21,23],"hamzat_wasl":[20,21]},
+"17": {"madd_246":[35,36],"hamzat_wasl":[28,29]},
+"18": {"madd_246":[43,44],"madd_6":[10,12],"hamzat_wasl":[34,35]},
+"19": {"ghunnah":[36,39],"idghaam_no_ghunnah":[30,36],"lam_shamsiyyah":[15,16],"hamzat_wasl":[14,15]},
+"20": {"ghunnah":[31,34],"ikhfa":[26,31],"hamzat_wasl":[13,14]},
+"21": {"ikhfa":[36,41],"madd_munfasil":[5,7],"hamzat_wasl":[22,23]},
+"22": {"ikhfa":[33,38],"madd_muttasil":[4,6],"hamzat_wasl":[19,20]},
+"23": {"ghunnah":[29,32,74,77],"ikhfa":[63,66],"iqlab":[20,24],"idghaam_ghunnah":[44,48],"lam_shamsiyyah":[86,87],"madd_2":[66,67],"madd_muttasil":[6,8],"silent":[4,6],"hamzat_wasl":[58,59,85,86]},
+"24": {"madd_2":[10,11]},
+"25": {"idghaam_no_ghunnah":[11,16],"madd_munfasil":[37,39],"qalqalah":[44,45]},
+"26": {"madd_munfasil":[23,25],"qalqalah":[30,31]},
+"27": {"ghunnah":[17,20,36,39],"lam_shamsiyyah":[16,17],"madd_munfasil":[2,4],"qalqalah":[30,32],"hamzat_wasl":[15,16,25,26]},
+"28": {"idghaam_ghunnah":[33,38],"madd_munfasil":[7,9]},
+"29": {"madd_2":[19,20],"qalqalah":[3,5],"hamzat_wasl":[2,3]},
+"30": {"ghunnah":[13,16],"qalqalah":[3,5],"hamzat_wasl":[2,3]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/9.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/9.json
index 6bc661f..8975245 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/9.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/9.json
@@ -1,131 +1,131 @@
{
-"1": {"idgham":[9,14,60,61,64,69],"madd":[4,6,36,38,57,58,83,84],"wasl":[17,18,45,46,72,73]},
-"2": {"ghunnah":[61,64,98,101],"idgham":[43,47],"madd":[54,56,123,124,128,129],"silent":[8,10,56,58],"wasl":[15,16,47,48,86,87,102,103,118,119]},
-"3": {"ghunnah":[46,49,83,86,142,146,179,183,211,214],"idgham":[8,13,45,46,102,107,165,170],"madd":[6,7,35,37,99,101,136,137,204,206,288,289],"qalqalah":[146,148],"silent":[206,208,271,273],"wasl":[16,17,44,45,60,61,69,70,87,88,110,111,197,198,236,237,254,255]},
-"4": {"ghunnah":[51,54,62,65,118,123,127,130,178,181],"idgham":[22,23,26,31,79,84],"madd":[19,20,93,94,130,132,208,209],"silent":[99,101,132,134],"wasl":[7,8,34,35,182,183,198,199]},
-"5": {"ghunnah":[9,12,150,154,156,160,241,244],"idgham":[78,79,181,182,205,206,259,264],"madd":[188,189,212,213,266,267],"qalqalah":[42,44,120,122],"silent":[49,51,127,129,164,166,177,179,187,188,201,203,211,212,224,226],"wasl":[8,9,17,18,29,30,41,42,52,53,104,105,119,120,180,181,204,205,245,246]},
-"6": {"ghunnah":[94,97,133,136],"idgham":[12,17,146,151],"madd":[80,81,119,120,123,124,161,162],"qalqalah":[100,102],"wasl":[20,21,35,36,84,85]},
-"7": {"ghunnah":[40,43,56,59,103,106,182,185],"idgham":[94,95],"madd":[69,71,91,92,143,144,212,213],"silent":[147,149,170,172],"wasl":[44,45,79,80,107,108,119,120,136,137,159,160,186,187,202,203]},
-"8": {"ghunnah":[75,78,92,96],"idgham":[11,15,64,69,79,83],"madd":[102,103,150,151,155,156],"silent":[22,24,49,51]},
-"9": {"ghunnah":[37,42,46,51,62,66,78,81],"madd":[20,21,73,75,88,90,114,115],"silent":[9,11,57,59,103,105],"wasl":[24,25]},
-"10": {"ghunnah":[44,47],"idgham":[33,38,48,52],"madd":[58,60,81,82],"silent":[54,56],"wasl":[70,71]},
-"11": {"ghunnah":[4,8],"idgham":[29,30,53,54,85,86,124,128],"madd":[36,37,60,61,72,73,113,114,134,135],"silent":[12,14,25,27,35,36,49,51,59,60],"wasl":[28,29,52,53,84,85,105,106]},
-"12": {"ghunnah":[35,38,99,102,117,120,161,164],"idgham":[4,9,29,34],"madd":[13,15,24,25,85,86,90,92,127,129,136,137,166,167],"silent":[15,17,64,66,92,94],"wasl":[105,106]},
-"13": {"ghunnah":[57,60,91,95,158,162,173,177,177,180],"idgham":[24,30,77,78,180,185],"madd":[10,11,34,36,45,46,191,192],"silent":[36,38,61,63],"wasl":[76,77,140,141]},
-"14": {"ghunnah":[66,69],"idgham":[109,114],"madd":[2,3,120,121],"qalqalah":[20,22],"wasl":[27,28]},
-"15": {"idgham":[57,61],"madd":[63,65,90,91],"qalqalah":[8,10],"wasl":[40,41,70,71]},
-"16": {"ghunnah":[18,22,36,39,81,84,109,113,189,193],"idgham":[171,175],"madd":[70,71,140,141,206,207],"qalqalah":[9,11],"silent":[29,31,76,78,104,106],"wasl":[50,51,58,59,117,118,148,149,175,176]},
-"17": {"ghunnah":[81,84,88,92,146,149],"idgham":[28,32,145,146],"madd":[46,47,62,63,75,78,108,110,130,131,160,161,165,166],"silent":[39,41,104,106],"wasl":[52,53,92,93,144,145]},
-"18": {"ghunnah":[2,5],"idgham":[93,94,114,115,179,183],"madd":[22,23,100,101,121,122,160,163,170,172,208,209],"silent":[99,100,120,121,166,168,189,191],"wasl":[28,29,51,52,61,62,71,72,92,93,113,114,146,147,197,198]},
-"19": {"ghunnah":[165,168],"idgham":[210,211],"madd":[121,122,159,160,214,215,219,220],"madd-lazim":[28,30],"wasl":[23,24,46,47,58,59,86,87,96,97,106,107,139,140,169,170,179,180,199,200,209,210]},
-"20": {"ghunnah":[87,90,117,120],"madd":[38,39,75,76,137,139,154,156,160,161],"silent":[18,20,31,33,44,46,133,135],"wasl":[59,60,121,122,149,150]},
-"21": {"ghunnah":[21,25,58,61],"idgham":[32,37,52,56,63,68,86,91],"madd":[50,51,61,62,93,94]},
-"22": {"ghunnah":[29,32,43,46],"madd":[2,3,16,18,48,50,62,63],"qalqalah":[53,55],"wasl":[33,34]},
-"23": {"ghunnah":[164,167],"idgham":[146,150,159,164,191,192],"madd":[2,4,47,49,57,59,74,75,90,92,138,139,178,180,195,196,200,201],"silent":[31,33,49,51,111,113,174,176],"wasl":[13,14,100,101,114,115,130,131,190,191]},
-"24": {"ghunnah":[7,11,134,138,238,242],"idgham":[201,206],"madd":[20,22,37,39,54,55,70,71,102,103,130,131,164,165,182,184,228,229,253,254,305,306,344,345,349,350],"qalqalah":[33,35,107,109],"silent":[267,269],"wasl":[106,107,209,210,287,288,309,310,329,330,339,340]},
-"25": {"ghunnah":[117,120,180,183],"idgham":[48,52,129,134,193,198],"madd":[204,205],"qalqalah":[4,6,198,200],"wasl":[18,19,153,154]},
-"26": {"ghunnah":[2,5,8,11,80,83],"idgham":[92,98],"madd":[33,34,51,52,145,146,155,157,165,166,170,171],"silent":[138,140],"wasl":[14,15,61,62,121,122,160,161]},
-"27": {"ghunnah":[2,5,25,28],"idgham":[51,55,78,83],"madd":[36,37,57,59,85,86],"wasl":[14,15,64,65]},
-"28": {"ghunnah":[37,40,64,68,154,158,187,191,202,206,213,216],"madd":[2,4,30,32,126,127,197,199,206,208,237,238],"qalqalah":[74,76],"silent":[32,34,81,83],"wasl":[13,14,44,45,84,85,96,97,177,178,217,218]},
-"29": {"idgham":[227,231,232,236],"madd":[2,3,126,127,191,192,243,244,248,249],"silent":[8,10,181,183,210,212],"wasl":[11,12,39,40,55,56,65,66,107,108,151,152,165,166,184,185,213,214]},
-"30": {"ghunnah":[56,59,107,111,168,172,199,202],"idgham":[55,56],"madd":[61,62,93,94,117,118,129,130,179,180,213,214],"qalqalah":[31,33,78,80,172,174],"silent":[163,165],"wasl":[10,11,30,31,36,37,54,55,66,67,77,78,83,84,146,147,189,190]},
-"31": {"ghunnah":[57,61,200,203],"idgham":[51,57,147,152,156,162],"madd":[8,10,35,36,105,107,114,116,136,138,145,146,152,153,162,164,169,170,191,192,196,197,213,214],"qalqalah":[87,89,187,189],"silent":[10,12,116,118,138,140],"wasl":[65,66,75,76,86,87]},
-"32": {"ghunnah":[92,95],"idgham":[13,17,86,90],"madd":[50,51,81,83,103,104,124,125,129,130],"qalqalah":[17,19],"silent":[25,27],"wasl":[34,35,68,69,119,120]},
-"33": {"idgham":[84,85],"madd":[11,13,32,33,75,76,99,100,126,127],"wasl":[5,6,36,37,54,55,83,84,115,116]},
-"34": {"ghunnah":[37,40,110,113,145,149,218,221,261,265],"idgham":[47,53,72,73,109,110,188,189],"madd":[2,4,30,32,104,105,124,125,277,278],"silent":[32,34],"wasl":[13,14,56,57,71,72,108,109,119,120,155,156,165,166,187,188,199,200,242,243]},
-"35": {"ghunnah":[40,43,129,132,156,159],"madd":[105,106,170,171],"silent":[147,149]},
-"36": {"ghunnah":[2,5,27,30,58,63,146,150,199,202,205,208,251,255,302,305],"idgham":[15,16,96,97,157,158,284,288],"madd":[69,70,102,103,105,106,127,129,150,151,219,220,263,264,295,297,329,330],"madd-lazim":[245,247,278,280],"silent":[191,193,225,227,297,299],"wasl":[14,15,31,32,39,40,73,74,95,96,111,112,156,157,165,166,228,229,288,289,306,307,319,320]},
-"37": {"ghunnah":[2,5,11,14,29,33],"idgham":[10,11,96,101,121,127],"madd":[16,18,90,91,115,116,219,221,230,231,275,276,280,281],"silent":[75,77,138,140,179,181],"wasl":[9,10,35,36,58,59,161,162,194,195,240,241,260,261,270,271]},
-"38": {"ghunnah":[65,68,133,137],"idgham":[150,151,205,206],"madd":[2,4,145,146,188,189,200,201,243,244],"silent":[31,33,71,73,144,145,199,200],"wasl":[13,14,64,65,86,87,94,95,114,115,137,138,149,150,165,166,192,193,204,205,219,220]},
-"39": {"ghunnah":[9,12,138,142],"idgham":[47,52,107,112],"madd":[144,145],"qalqalah":[25,27,58,60],"silent":[15,17],"wasl":[112,113]},
-"40": {"ghunnah":[9,12,161,164,185,188],"idgham":[242,247,299,300],"madd":[137,138,144,145,210,211,232,233,367,368],"qalqalah":[22,24],"silent":[75,77,295,297],"wasl":[34,35,58,59,86,87,111,112,165,166,191,192,278,279,298,299,321,322,334,335,347,348]},
-"41": {"ghunnah":[1,4,63,66,120,124,124,127],"idgham":[16,21,27,32,108,113],"madd":[34,35,51,52,95,96,138,139],"silent":[7,9,40,42],"wasl":[85,86]},
-"42": {"ghunnah":[16,21,35,40,70,73,182,185,213,216],"idgham":[25,30,44,50,93,94],"madd":[66,67,225,226,230,231],"qalqalah":[153,155],"wasl":[50,51,92,93,121,122,134,135,194,195]},
-"43": {"ghunnah":[16,19,29,32],"madd":[101,102,106,107],"silent":[82,84],"wasl":[6,7,65,66,96,97]},
-"44": {"ghunnah":[112,115,138,142],"idgham":[77,81],"madd":[83,84,100,101,153,154],"silent":[89,91],"wasl":[20,21,44,45,54,55,64,65,124,125,143,144]},
-"45": {"ghunnah":[2,5],"madd":[142,143],"wasl":[25,26,53,54,63,64,73,74,86,87]},
-"46": {"ghunnah":[63,67,82,84],"idgham":[54,58],"madd":[46,47,60,61,138,139,143,144],"qalqalah":[118,120],"silent":[15,17,39,41,125,127],"wasl":[18,19,72,73,80,81,117,118,133,134]},
-"47": {"ghunnah":[120,123,153,157],"idgham":[20,25,51,56,159,160],"madd":[74,75,123,124,163,164,168,169],"qalqalah":[84,86],"silent":[12,14,67,69],"wasl":[96,97,139,140,158,159]},
-"48": {"ghunnah":[33,37],"madd":[81,83,128,129,133,134],"qalqalah":[8,10,37,39],"silent":[16,18,52,54],"wasl":[7,8,19,20,60,61,86,87,111,112]},
-"49": {"ghunnah":[47,50,89,92,97,100,113,117],"idgham":[8,13,13,17,28,33],"madd":[50,52,123,124,128,129],"silent":[82,84],"wasl":[23,24,63,64,118,119]},
-"50": {"ghunnah":[2,6,20,24,37,41,97,101],"idgham":[56,60],"madd":[82,84,135,136],"qalqalah":[8,10,43,45,71,73,101,103],"silent":[66,68,118,120]},
-"51": {"idgham":[7,11],"madd":[18,20,65,66,113,114],"wasl":[39,40,78,79,102,103]},
-"52": {"ghunnah":[132,135,176,179],"idgham":[92,96,122,127,187,192],"madd":[27,29,35,37,137,139,169,171,201,202],"silent":[171,173],"wasl":[46,47,106,107]},
-"53": {"ghunnah":[7,10,56,59,64,67,74,77,85,90],"idgham":[34,40,40,44],"madd":[90,91,95,96],"silent":[13,15]},
-"54": {"ghunnah":[19,23,63,66,166,169],"idgham":[123,124],"madd":[45,46,58,60,104,105,130,131,191,192,196,197],"qalqalah":[23,25],"silent":[78,80,129,130],"wasl":[83,84,122,123]},
-"55": {"ghunnah":[54,57,90,94,138,141],"idgham":[115,116],"madd":[23,24,35,37,44,45,110,111,157,158,162,163],"qalqalah":[12,14],"silent":[109,110],"wasl":[69,70,102,103,114,115]},
-"56": {"ghunnah":[26,29,38,41,57,60,70,73],"idgham":[52,57,83,87],"madd":[67,68,93,94],"wasl":[16,17]},
-"57": {"idgham":[55,61],"madd":[35,36,38,39,95,96],"qalqalah":[89,91],"silent":[68,70]},
-"58": {"idgham":[8,13,13,17,31,32,80,85],"madd":[39,40,105,107,127,128],"silent":[57,59,73,75,96,98],"wasl":[30,31]},
-"59": {"ghunnah":[9,12,115,119,143,146],"madd":[27,29,36,37,61,62,125,126,138,140,146,148,165,166,170,171],"silent":[22,24,71,73],"wasl":[42,43,84,85,105,106,155,156]},
-"60": {"ghunnah":[2,5],"idgham":[10,11,115,116,172,173,190,195],"madd":[18,19,32,34,46,47,60,61,132,133,228,229],"qalqalah":[166,168],"wasl":[9,10,39,40,55,56,81,82,114,115,127,128,155,156,165,166,171,172,198,199,208,209]},
-"61": {"ghunnah":[33,36,65,69,176,179],"idgham":[32,33,84,89,149,154],"madd":[239,240],"silent":[171,173],"wasl":[11,12,31,32,105,106,184,185,212,213]},
-"62": {"ghunnah":[91,95],"idgham":[77,81],"madd":[64,66,110,111],"silent":[99,101],"wasl":[14,15,45,46]},
-"63": {"ghunnah":[22,25,68,71,88,91,100,105],"idgham":[31,35],"madd":[15,17,27,28,62,63,76,77,96,97,112,113,135,136],"silent":[17,19],"wasl":[43,44,118,119,128,129]},
-"64": {"ghunnah":[27,31,56,60,69,73,116,119],"idgham":[135,140],"madd":[16,17,109,111,150,151],"silent":[111,113],"wasl":[9,10,98,99,120,121]},
-"65": {"ghunnah":[6,10,30,33,36,39,45,48,115,118],"madd":[93,94,98,99,111,112,133,134],"wasl":[78,79]},
-"66": {"ghunnah":[31,35,67,71,83,86,108,112,115,118],"idgham":[55,60,78,83],"madd":[45,46,71,73,101,103,140,141],"qalqalah":[20,22,96,98,134,136],"silent":[15,17,129,131]},
-"67": {"ghunnah":[48,51,76,79,171,174],"idgham":[42,47,55,59],"madd":[7,8,25,26,30,31,182,183,201,202,206,207],"qalqalah":[117,119],"silent":[145,147],"wasl":[18,19,71,72,100,101,148,149,175,176,196,197]},
-"68": {"ghunnah":[73,76],"idgham":[149,154],"madd":[22,23,40,41,45,46,81,82,156,157],"wasl":[7,8,15,16,33,34,51,52,126,127]},
-"69": {"ghunnah":[14,18,47,50,93,98,142,146,188,192,198,202],"idgham":[59,63,80,85,286,287],"madd":[32,34,78,79,91,92,119,120,150,151,206,207,240,242,251,253,273,274,319,321,336,337,341,342],"qalqalah":[18,20,192,194],"silent":[34,36,110,112,242,244,247,249,315,317],"wasl":[2,3,98,99,129,130,164,165,176,177,227,228,285,286,298,299,331,332]},
-"70": {"ghunnah":[37,41,162,166,222,226,236,239],"idgham":[61,65,69,73],"madd":[96,97,111,112,139,140,176,177,219,220,229,231,254,255],"qalqalah":[41,43,92,94,117,119],"silent":[231,233],"wasl":[25,26,126,127,166,167,192,193]},
-"71": {"ghunnah":[115,118,243,246],"idgham":[63,67,135,136,159,160],"madd":[30,31,53,55,142,143,166,167,202,204,211,213,267,268],"silent":[141,142,165,166,207,209],"wasl":[2,3,19,20,79,80,110,111,134,135,158,159,183,184,233,234,247,248]},
-"72": {"ghunnah":[49,52,54,58,66,70,129,133,137,140],"idgham":[149,153,161,166],"madd":[43,44,52,53,87,88,93,94,115,116,140,141,159,160,188,189,216,217],"qalqalah":[58,60,146,148],"wasl":[7,8,15,16,32,33,78,79,169,170,199,200,209,210]},
-"73": {"ghunnah":[15,18,102,105],"idgham":[14,15],"madd":[2,4,26,27,53,54,92,93,124,125],"wasl":[13,14,32,33,46,47,64,65,117,118]},
-"74": {"ghunnah":[109,112,204,208,311,316],"idgham":[220,224,243,249,258,262,319,320,373,377,381,385],"madd":[97,98,150,152,160,162,175,176,200,201,214,215,393,394],"qalqalah":[41,43,281,283],"silent":[32,34,50,52,81,83,113,115,135,137,152,154,230,232,271,273],"wasl":[14,15,62,63,181,182,288,289,318,319,331,332,361,362]},
-"75": {"ghunnah":[52,56,76,79,91,94],"idgham":[8,13,101,102],"madd":[18,19,45,46,62,63,105,106,110,111],"wasl":[24,25,100,101]},
-"76": {"ghunnah":[4,7,24,28],"idgham":[19,24,70,75],"madd":[7,9,16,17,34,35,50,51,81,82],"silent":[43,45,62,64]},
-"77": {"ghunnah":[21,26],"madd":[66,67,72,74,134,135],"silent":[84,86,123,125],"wasl":[87,88]},
-"78": {"ghunnah":[22,25,72,75],"madd":[15,17,62,63,89,90,100,101],"qalqalah":[57,59,101,102],"silent":[17,19],"wasl":[26,27,76,77,93,94]},
-"79": {"idgham":[64,65],"madd":[72,73,188,189],"wasl":[22,23,44,45,63,64,78,79,150,151]},
-"80": {"ghunnah":[50,54,88,92,132,135],"idgham":[94,98],"madd":[122,123,171,172,210,211,215,216],"qalqalah":[74,76],"silent":[147,149],"wasl":[105,106,152,153,175,176,195,196,205,206]},
-"81": {"ghunnah":[112,115,159,162,196,199],"idgham":[77,81,214,220],"madd":[42,43,70,72,83,84,100,101,240,241],"qalqalah":[27,29],"silent":[72,74,89,91,150,152,165,167,229,231],"wasl":[7,8,54,55,134,135,172,173]},
-"82": {"ghunnah":[45,50,55,59],"idgham":[22,27],"madd":[52,54,81,82],"qalqalah":[31,33],"silent":[13,15,36,38,70,72]},
-"83": {"ghunnah":[91,95,124,128,157,160,172,176,201,205],"idgham":[4,9,40,45,117,122],"madd":[33,35,130,131,226,227,231,232],"qalqalah":[206,208],"silent":[102,104,136,138,213,215],"wasl":[16,17,54,55,176,177,205,206,221,222]},
-"84": {"ghunnah":[86,89],"idgham":[27,32,36,41,50,55],"madd":[18,21,81,83,125,126,147,148,152,153],"qalqalah":[75,77],"silent":[101,103,135,137],"wasl":[106,107]},
-"85": {"ghunnah":[49,52,87,91,123,126],"idgham":[74,78,100,101],"madd":[23,24,39,40,142,143,147,148],"qalqalah":[12,14],"wasl":[64,65,99,100]},
-"86": {"ghunnah":[11,14],"idgham":[107,108,148,153],"madd":[6,8,57,58,161,162,166,167],"silent":[40,42,63,65,98,100,103,105,133,135],"wasl":[45,46,81,82,106,107,156,157]},
-"87": {"idgham":[12,16],"madd":[90,91],"silent":[5,7,22,24],"wasl":[30,31]},
-"88": {"ghunnah":[81,84],"idgham":[9,10],"madd":[2,3,48,49,52,53,69,70,99,101,122,123,134,136,157,158],"silent":[39,41,58,60,95,97,130,132],"wasl":[8,9,21,22,113,114,146,147]},
-"89": {"ghunnah":[25,28,30,34,42,46],"madd":[28,29,63,64,69,70,87,88,110,111],"qalqalah":[34,36],"wasl":[8,9,54,55,93,94,103,104]},
-"90": {"madd":[4,6,109,110,162,163],"silent":[87,89,138,140],"wasl":[9,10,30,31,70,71,90,91,121,122]},
-"91": {"ghunnah":[94,97,174,178],"idgham":[15,16,182,186,200,205],"madd":[23,25,145,146,207,208],"silent":[123,125],"wasl":[14,15,40,41,64,65,157,158,186,187]},
-"92": {"ghunnah":[184,187],"idgham":[144,145],"madd":[30,32,66,68,78,80,189,190],"silent":[111,113,175,177],"wasl":[12,13,143,144]},
-"93": {"ghunnah":[2,5],"idgham":[10,11,87,91],"madd":[70,72,173,174],"silent":[80,82,97,99],"wasl":[9,10,26,27,105,106,127,128]},
-"94": {"ghunnah":[184,187,252,256,262,265],"idgham":[78,83,227,228],"madd":[180,181,208,209,233,234,276,277],"qalqalah":[99,101],"silent":[73,75],"wasl":[113,114,150,151,214,215,226,227]},
-"95": {"ghunnah":[38,41,109,112,143,146,156,160],"idgham":[122,126],"madd":[133,134,153,155,182,183],"qalqalah":[43,45,119,121],"silent":[72,74,95,97,171,173],"wasl":[16,17,37,38]},
-"96": {"ghunnah":[45,49,71,74],"madd":[116,117,121,122],"silent":[29,31,55,57],"wasl":[75,76,101,102,111,112]},
-"97": {"ghunnah":[85,88],"idgham":[26,31,37,42],"madd":[80,82,115,116,139,140],"qalqalah":[44,46],"silent":[67,69],"wasl":[91,92,119,120]},
-"98": {"ghunnah":[40,43],"idgham":[22,26,53,58,78,79,114,115],"madd":[84,86,104,106,145,146],"wasl":[7,8,77,78,113,114,125,126]},
-"99": {"ghunnah":[84,87,102,105,146,149,212,215],"idgham":[22,26,127,128,160,165,230,235],"madd":[96,97,122,123,141,143,207,209,237,238],"qalqalah":[174,176],"wasl":[7,8,35,36,45,46,55,56,106,107,126,127,185,186,216,217]},
-"100": {"ghunnah":[58,61,88,92,163,166,168,172,225,230],"idgham":[3,4,100,105],"madd":[7,8,42,43,98,99,166,167,197,198,203,204,217,219,230,231,253,254],"qalqalah":[172,174],"silent":[134,136],"wasl":[2,3,16,17,35,36,53,54,67,68,77,78,110,111,188,189,236,237,246,247]},
-"101": {"ghunnah":[4,7,97,100,173,176],"idgham":[18,23,96,97,156,161],"madd":[43,44,207,208],"silent":[86,88],"wasl":[26,27,66,67,95,96]},
-"102": {"ghunnah":[55,60,125,128],"idgham":[64,69,102,106,143,148],"madd":[60,61,150,151],"silent":[23,25,47,49],"wasl":[13,14,92,93,129,130]},
-"103": {"ghunnah":[31,35,59,63,88,91],"idgham":[108,113],"madd":[16,17,97,98,140,141],"silent":[96,97],"wasl":[120,121]},
-"104": {"ghunnah":[22,25,104,107],"idgham":[49,50,88,89,122,123,134,135],"madd":[15,17,74,75,96,97,140,141],"qalqalah":[41,43],"silent":[17,19],"wasl":[26,27,48,49,87,88,108,109,121,122,133,134]},
-"105": {"ghunnah":[145,149,155,158],"idgham":[120,121],"madd":[58,59,101,102,126,127,169,170],"silent":[15,17],"wasl":[7,8,28,29,62,63,107,108,119,120]},
-"106": {"ghunnah":[43,46,66,69],"madd":[112,113],"wasl":[33,34,92,93]},
-"107": {"ghunnah":[31,36,63,68,141,145,162,165,222,225],"idgham":[40,45,50,55,99,105],"madd":[137,138,179,181,234,235,239,240],"qalqalah":[145,147,175,177],"silent":[21,23],"wasl":[2,3,12,13,74,75,118,119,189,190,203,204]},
-"108": {"ghunnah":[93,97],"idgham":[22,28,52,53,121,125,136,140],"madd":[184,185],"qalqalah":[56,58],"silent":[150,152],"wasl":[51,52,155,156,171,172]},
-"109": {"ghunnah":[133,137,166,169],"idgham":[80,85,205,206],"madd":[23,24,28,29,67,68,102,103,107,108,150,151,209,210,214,215],"qalqalah":[39,41],"wasl":[51,52,137,138,174,175,194,195,204,205]},
-"110": {"ghunnah":[49,53,77,81],"madd":[18,19,72,74,123,124],"silent":[40,42],"wasl":[26,27,103,104]},
-"111": {"ghunnah":[2,5,46,49,69,73,75,78,91,94,179,184,207,210,317,321],"idgham":[187,188],"madd":[64,65,101,102,196,197,255,256,323,324,329,330,357,358],"qalqalah":[134,136,148,150,277,279],"silent":[284,286],"wasl":[6,7,14,15,29,30,86,87,122,123,186,187,202,203,216,217,262,263,272,273,300,301,340,341,350,351]},
-"112": {"ghunnah":[119,122,139,142],"idgham":[1,2,44,45,59,60,73,74,118,119],"madd":[5,7,20,21,34,35,48,50,63,64,77,78,152,153,200,201],"wasl":[15,16,29,30,43,44,58,59,72,73,86,87,102,103,117,118,134,135,147,148,171,172,189,190]},
-"113": {"ghunnah":[13,16,119,122,151,154],"idgham":[12,13,48,52],"madd":[41,43,94,96,165,166,176,177],"silent":[43,45,63,65,96,98,101,103],"wasl":[24,25,169,170]},
-"114": {"ghunnah":[95,98,119,122,162,165],"idgham":[57,62,69,73,132,137],"madd":[31,32,79,81,114,116,124,125,172,173,186,187,194,195],"qalqalah":[27,29,168,170],"wasl":[12,13]},
-"115": {"ghunnah":[35,40,104,107],"idgham":[84,89],"madd":[56,57,135,136],"wasl":[12,13,108,109]},
-"116": {"ghunnah":[2,5,86,90],"idgham":[28,29,81,86,104,108,112,116],"madd":[18,19,34,35,37,38,59,60,124,125],"wasl":[6,7,27,28,43,44,94,95]},
-"117": {"ghunnah":[30,33,64,67,120,123,175,178,198,201],"idgham":[5,6,29,30,161,166,218,223],"madd":[48,49,203,204,225,226],"wasl":[14,15,28,29,41,42,59,60,71,72,81,82,105,106]},
-"118": {"ghunnah":[124,127,138,141,196,199,233,236],"idgham":[9,10,148,153,251,252,263,264],"madd":[15,16,47,50,141,143,182,184,226,228,269,270],"silent":[39,41,143,145,228,230],"wasl":[8,9,21,22,76,77,169,170,237,238,250,251,262,263]},
-"119": {"idgham":[69,70],"madd":[2,4,73,74,78,79],"silent":[31,33,41,43,60,62],"wasl":[13,14,34,35,44,45,68,69]},
-"120": {"ghunnah":[130,133,167,170,226,230,352,356,365,369,377,380],"idgham":[47,52,70,74,89,94,142,147,196,200,209,213,272,277,323,328],"madd":[153,154,157,158,358,359,369,370,419,420],"qalqalah":[403,405],"silent":[84,86,123,125],"wasl":[19,20,55,56,100,101,240,241,283,284,381,382,408,409]},
-"121": {"ghunnah":[8,11,24,28],"idgham":[34,38,50,54],"madd":[153,154],"qalqalah":[60,62,104,106],"silent":[142,144],"wasl":[115,116]},
-"122": {"ghunnah":[31,34,48,52,69,73,144,147],"idgham":[84,89,105,110,130,131],"madd":[98,100,176,178,212,213],"madd-lazim":[42,44],"silent":[37,39,122,124,150,152,178,180],"wasl":[12,13,129,130]},
-"123": {"ghunnah":[131,134],"idgham":[64,69,113,117],"madd":[2,4,36,37,124,126,158,159],"silent":[31,33,42,44,95,97,126,128],"wasl":[13,14,45,46,72,73,117,118,135,136,148,149]},
-"124": {"ghunnah":[15,18,29,33,91,96,98,101],"idgham":[39,44,44,48,145,150],"madd":[10,12,76,77,81,83,89,90,143,144,167,168],"qalqalah":[161,163],"silent":[121,123],"wasl":[103,104]},
-"125": {"ghunnah":[4,7,40,44],"idgham":[32,37],"madd":[102,103,107,108],"qalqalah":[58,60,73,75],"silent":[90,92],"wasl":[9,10]},
-"126": {"ghunnah":[19,22,83,86],"idgham":[53,58],"madd":[123,124]},
-"127": {"ghunnah":[15,18,90,94,94,97,99,102,134,138,140,143],"idgham":[29,34,77,82,153,158],"madd":[10,12,74,75,168,169],"silent":[107,109],"wasl":[98,99,117,118]},
-"128": {"ghunnah":[34,37,91,95],"idgham":[24,29,116,121],"madd":[9,11,123,124],"qalqalah":[4,6],"wasl":[95,96]},
-"129": {"ghunnah":[4,8],"madd":[44,46,51,52,118,119],"silent":[15,17],"wasl":[34,35,101,102,111,112]}
+"1": {"idghaam_ghunnah":[9,14],"idghaam_mutajanisayn":[60,61],"idghaam_shafawi":[64,69],"madd_2":[57,58],"madd_246":[83,84],"madd_munfasil":[36,38],"madd_muttasil":[4,6],"hamzat_wasl":[17,18,45,46,72,73]},
+"2": {"ghunnah":[61,64,98,101],"idghaam_ghunnah":[43,47],"madd_2":[123,124],"madd_246":[128,129],"madd_munfasil":[54,56],"silent":[8,10,56,58],"hamzat_wasl":[15,16,47,48,86,87,102,103,118,119]},
+"3": {"ghunnah":[46,49,83,86,211,214],"ikhfa":[142,146,179,183],"idghaam_ghunnah":[8,13,102,107],"idghaam_no_ghunnah":[165,170],"lam_shamsiyyah":[45,46],"madd_2":[6,7,136,137],"madd_246":[288,289],"madd_munfasil":[35,37,204,206],"madd_muttasil":[99,101],"qalqalah":[146,148],"silent":[206,208,271,273],"hamzat_wasl":[16,17,44,45,60,61,69,70,87,88,110,111,197,198,236,237,254,255]},
+"4": {"ghunnah":[51,54,127,130,178,181],"ikhfa":[62,65,118,123],"idghaam_ghunnah":[79,84],"idghaam_mutajanisayn":[22,23],"idghaam_shafawi":[26,31],"madd_2":[19,20,93,94],"madd_246":[208,209],"madd_munfasil":[130,132],"silent":[99,101,132,134],"hamzat_wasl":[7,8,34,35,182,183,198,199]},
+"5": {"ghunnah":[241,244],"ikhfa":[9,12,150,154,156,160],"idghaam_mutajanisayn":[78,79],"idghaam_no_ghunnah":[259,264],"lam_shamsiyyah":[181,182,205,206],"madd_2":[188,189,212,213],"madd_246":[266,267],"qalqalah":[42,44,120,122],"silent":[49,51,127,129,164,166,177,179,187,188,201,203,211,212,224,226],"hamzat_wasl":[8,9,17,18,29,30,41,42,52,53,104,105,119,120,180,181,204,205,245,246]},
+"6": {"ghunnah":[94,97,133,136],"idghaam_ghunnah":[12,17],"idghaam_no_ghunnah":[146,151],"madd_2":[80,81,119,120,123,124],"madd_246":[161,162],"qalqalah":[100,102],"hamzat_wasl":[20,21,35,36,84,85]},
+"7": {"ghunnah":[182,185],"ikhfa":[40,43,56,59,103,106],"idghaam_mutajanisayn":[94,95],"madd_2":[91,92,143,144],"madd_246":[212,213],"madd_munfasil":[69,71],"silent":[147,149,170,172],"hamzat_wasl":[44,45,79,80,107,108,119,120,136,137,159,160,186,187,202,203]},
+"8": {"ghunnah":[75,78],"ikhfa_shafawi":[92,96],"idghaam_ghunnah":[11,15,64,69,79,83],"madd_2":[102,103,150,151],"madd_246":[155,156],"silent":[22,24,49,51]},
+"9": {"ghunnah":[78,81],"ikhfa":[37,42,46,51,62,66],"madd_2":[20,21],"madd_246":[114,115],"madd_munfasil":[73,75],"madd_muttasil":[88,90],"silent":[9,11,57,59,103,105],"hamzat_wasl":[24,25]},
+"10": {"ghunnah":[44,47],"idghaam_ghunnah":[33,38,48,52],"madd_246":[81,82],"madd_muttasil":[58,60],"silent":[54,56],"hamzat_wasl":[70,71]},
+"11": {"ikhfa":[4,8],"idghaam_ghunnah":[124,128],"lam_shamsiyyah":[29,30,53,54,85,86],"madd_2":[36,37,60,61,72,73,113,114],"madd_246":[134,135],"silent":[12,14,25,27,35,36,49,51,59,60],"hamzat_wasl":[28,29,52,53,84,85,105,106]},
+"12": {"ghunnah":[99,102,117,120],"ikhfa":[161,164],"iqlab":[35,38],"idghaam_ghunnah":[4,9],"idghaam_shafawi":[29,34],"madd_2":[24,25,85,86,136,137],"madd_246":[166,167],"madd_munfasil":[13,15,90,92,127,129],"silent":[15,17,64,66,92,94],"hamzat_wasl":[105,106]},
+"13": {"ghunnah":[57,60],"ikhfa":[158,162,173,177,177,180],"ikhfa_shafawi":[91,95],"idghaam_ghunnah":[24,30],"idghaam_shafawi":[180,185],"lam_shamsiyyah":[77,78],"madd_2":[10,11,45,46],"madd_246":[191,192],"madd_munfasil":[34,36],"silent":[36,38,61,63],"hamzat_wasl":[76,77,140,141]},
+"14": {"ikhfa":[66,69],"idghaam_ghunnah":[109,114],"madd_2":[2,3],"madd_246":[120,121],"qalqalah":[20,22],"hamzat_wasl":[27,28]},
+"15": {"idghaam_ghunnah":[57,61],"madd_246":[90,91],"madd_muttasil":[63,65],"qalqalah":[8,10],"hamzat_wasl":[40,41,70,71]},
+"16": {"ghunnah":[36,39],"ikhfa":[18,22,81,84,109,113],"iqlab":[189,193],"idghaam_ghunnah":[171,175],"madd_2":[70,71,140,141],"madd_246":[206,207],"qalqalah":[9,11],"silent":[29,31,76,78,104,106],"hamzat_wasl":[50,51,58,59,117,118,148,149,175,176]},
+"17": {"ghunnah":[146,149],"ikhfa":[81,84],"ikhfa_shafawi":[88,92],"idghaam_ghunnah":[28,32],"lam_shamsiyyah":[145,146],"madd_2":[46,47,62,63,130,131,160,161],"madd_246":[165,166],"madd_munfasil":[75,78],"madd_muttasil":[108,110],"silent":[39,41,104,106],"hamzat_wasl":[52,53,92,93,144,145]},
+"18": {"ghunnah":[2,5],"idghaam_ghunnah":[179,183],"lam_shamsiyyah":[93,94,114,115],"madd_2":[22,23,100,101,121,122],"madd_246":[208,209],"madd_munfasil":[160,163],"madd_muttasil":[170,172],"silent":[99,100,120,121,166,168,189,191],"hamzat_wasl":[28,29,51,52,61,62,71,72,92,93,113,114,146,147,197,198]},
+"19": {"ikhfa":[165,168],"lam_shamsiyyah":[210,211],"madd_2":[121,122,159,160,214,215],"madd_246":[219,220],"madd_6":[28,30],"hamzat_wasl":[23,24,46,47,58,59,86,87,96,97,106,107,139,140,169,170,179,180,199,200,209,210]},
+"20": {"ikhfa":[87,90,117,120],"madd_2":[38,39,75,76],"madd_246":[160,161],"madd_muttasil":[137,139,154,156],"silent":[18,20,31,33,44,46,133,135],"hamzat_wasl":[59,60,121,122,149,150]},
+"21": {"ghunnah":[58,61],"ikhfa_shafawi":[21,25],"idghaam_ghunnah":[32,37,52,56,86,91],"idghaam_no_ghunnah":[63,68],"madd_2":[50,51,61,62],"madd_246":[93,94]},
+"22": {"ghunnah":[29,32],"ikhfa":[43,46],"madd_2":[2,3],"madd_246":[62,63],"madd_munfasil":[16,18,48,50],"qalqalah":[53,55],"hamzat_wasl":[33,34]},
+"23": {"ikhfa":[164,167],"idghaam_ghunnah":[146,150],"idghaam_shafawi":[159,164],"lam_shamsiyyah":[191,192],"madd_2":[74,75,138,139,195,196],"madd_246":[200,201],"madd_munfasil":[2,4,47,49],"madd_muttasil":[57,59,90,92,178,180],"silent":[31,33,49,51,111,113,174,176],"hamzat_wasl":[13,14,100,101,114,115,130,131,190,191]},
+"24": {"ikhfa":[7,11,134,138,238,242],"idghaam_shafawi":[201,206],"madd_2":[54,55,70,71,102,103,130,131,164,165,228,229,253,254,305,306,344,345],"madd_246":[349,350],"madd_munfasil":[182,184],"madd_muttasil":[20,22,37,39],"qalqalah":[33,35,107,109],"silent":[267,269],"hamzat_wasl":[106,107,209,210,287,288,309,310,329,330,339,340]},
+"25": {"ghunnah":[180,183],"ikhfa":[117,120],"idghaam_ghunnah":[48,52,129,134],"idghaam_shafawi":[193,198],"madd_246":[204,205],"qalqalah":[4,6,198,200],"hamzat_wasl":[18,19,153,154]},
+"26": {"ghunnah":[2,5],"ikhfa":[8,11,80,83],"idghaam_no_ghunnah":[92,98],"madd_2":[33,34,51,52,145,146,165,166],"madd_246":[170,171],"madd_muttasil":[155,157],"silent":[138,140],"hamzat_wasl":[14,15,61,62,121,122,160,161]},
+"27": {"ghunnah":[2,5],"iqlab":[25,28],"idghaam_ghunnah":[51,55],"idghaam_no_ghunnah":[78,83],"madd_2":[36,37],"madd_246":[85,86],"madd_muttasil":[57,59],"hamzat_wasl":[14,15,64,65]},
+"28": {"ghunnah":[37,40,213,216],"ikhfa":[64,68,154,158,187,191,202,206],"madd_2":[126,127],"madd_246":[237,238],"madd_munfasil":[2,4,30,32,197,199],"madd_muttasil":[206,208],"qalqalah":[74,76],"silent":[32,34,81,83],"hamzat_wasl":[13,14,44,45,84,85,96,97,177,178,217,218]},
+"29": {"idghaam_ghunnah":[227,231,232,236],"madd_2":[2,3,126,127,191,192,243,244],"madd_246":[248,249],"silent":[8,10,181,183,210,212],"hamzat_wasl":[11,12,39,40,55,56,65,66,107,108,151,152,165,166,184,185,213,214]},
+"30": {"ghunnah":[56,59,199,202],"ikhfa":[168,172],"ikhfa_shafawi":[107,111],"lam_shamsiyyah":[55,56],"madd_2":[61,62,93,94,117,118,129,130,179,180],"madd_246":[213,214],"qalqalah":[31,33,78,80,172,174],"silent":[163,165],"hamzat_wasl":[10,11,30,31,36,37,54,55,66,67,77,78,83,84,146,147,189,190]},
+"31": {"ghunnah":[200,203],"ikhfa":[57,61],"idghaam_ghunnah":[51,57,147,152],"idghaam_no_ghunnah":[156,162],"madd_2":[35,36,145,146,152,153,169,170,191,192,196,197],"madd_246":[213,214],"madd_munfasil":[8,10,105,107,114,116,136,138,162,164],"qalqalah":[87,89,187,189],"silent":[10,12,116,118,138,140],"hamzat_wasl":[65,66,75,76,86,87]},
+"32": {"ghunnah":[92,95],"idghaam_ghunnah":[13,17,86,90],"madd_2":[50,51,103,104,124,125],"madd_246":[129,130],"madd_munfasil":[81,83],"qalqalah":[17,19],"silent":[25,27],"hamzat_wasl":[34,35,68,69,119,120]},
+"33": {"lam_shamsiyyah":[84,85],"madd_2":[32,33,75,76,99,100],"madd_246":[126,127],"madd_munfasil":[11,13],"hamzat_wasl":[5,6,36,37,54,55,83,84,115,116]},
+"34": {"ghunnah":[37,40,110,113],"ikhfa":[145,149,218,221],"ikhfa_shafawi":[261,265],"idghaam_ghunnah":[47,53],"lam_shamsiyyah":[72,73,109,110,188,189],"madd_2":[104,105,124,125],"madd_246":[277,278],"madd_munfasil":[2,4,30,32],"silent":[32,34],"hamzat_wasl":[13,14,56,57,71,72,108,109,119,120,155,156,165,166,187,188,199,200,242,243]},
+"35": {"ghunnah":[40,43],"ikhfa":[129,132,156,159],"madd_2":[105,106],"madd_246":[170,171],"silent":[147,149]},
+"36": {"ghunnah":[2,5,199,202,302,305],"ikhfa":[27,30,58,63,146,150,205,208,251,255],"idghaam_ghunnah":[284,288],"lam_shamsiyyah":[15,16,96,97,157,158],"madd_2":[69,70,102,103,105,106,150,151,219,220,263,264],"madd_246":[329,330],"madd_munfasil":[127,129,295,297],"madd_6":[245,247,278,280],"silent":[191,193,225,227,297,299],"hamzat_wasl":[14,15,31,32,39,40,73,74,95,96,111,112,156,157,165,166,228,229,288,289,306,307,319,320]},
+"37": {"ghunnah":[2,5,11,14],"ikhfa":[29,33],"idghaam_ghunnah":[96,101],"idghaam_no_ghunnah":[121,127],"lam_shamsiyyah":[10,11],"madd_2":[90,91,115,116,230,231,275,276],"madd_246":[280,281],"madd_muttasil":[16,18,219,221],"silent":[75,77,138,140,179,181],"hamzat_wasl":[9,10,35,36,58,59,161,162,194,195,240,241,260,261,270,271]},
+"38": {"ikhfa":[65,68],"ikhfa_shafawi":[133,137],"lam_shamsiyyah":[150,151,205,206],"madd_2":[145,146,188,189,200,201],"madd_246":[243,244],"madd_munfasil":[2,4],"silent":[31,33,71,73,144,145,199,200],"hamzat_wasl":[13,14,64,65,86,87,94,95,114,115,137,138,149,150,165,166,192,193,204,205,219,220]},
+"39": {"ikhfa":[9,12,138,142],"idghaam_ghunnah":[47,52,107,112],"madd_246":[144,145],"qalqalah":[25,27,58,60],"silent":[15,17],"hamzat_wasl":[112,113]},
+"40": {"ghunnah":[161,164],"ikhfa":[9,12,185,188],"idghaam_no_ghunnah":[242,247],"lam_shamsiyyah":[299,300],"madd_2":[137,138,144,145,210,211,232,233],"madd_246":[367,368],"qalqalah":[22,24],"silent":[75,77,295,297],"hamzat_wasl":[34,35,58,59,86,87,111,112,165,166,191,192,278,279,298,299,321,322,334,335,347,348]},
+"41": {"ikhfa":[1,4,63,66,120,124,124,127],"idghaam_ghunnah":[16,21,27,32],"idghaam_no_ghunnah":[108,113],"madd_2":[34,35,51,52,95,96],"madd_246":[138,139],"silent":[7,9,40,42],"hamzat_wasl":[85,86]},
+"42": {"ghunnah":[213,216],"ikhfa":[16,21,35,40,182,185],"iqlab":[70,73],"idghaam_ghunnah":[25,30],"idghaam_no_ghunnah":[44,50],"lam_shamsiyyah":[93,94],"madd_2":[66,67,225,226],"madd_246":[230,231],"qalqalah":[153,155],"hamzat_wasl":[50,51,92,93,121,122,134,135,194,195]},
+"43": {"ikhfa":[16,19,29,32],"madd_2":[101,102],"madd_246":[106,107],"silent":[82,84],"hamzat_wasl":[6,7,65,66,96,97]},
+"44": {"ikhfa":[112,115],"iqlab":[138,142],"idghaam_ghunnah":[77,81],"madd_2":[83,84,100,101],"madd_246":[153,154],"silent":[89,91],"hamzat_wasl":[20,21,44,45,54,55,64,65,124,125,143,144]},
+"45": {"ghunnah":[2,5],"madd_246":[142,143],"hamzat_wasl":[25,26,53,54,63,64,73,74,86,87]},
+"46": {"ikhfa":[63,67],"iqlab":[82,84],"idghaam_ghunnah":[54,58],"madd_2":[46,47,60,61,138,139],"madd_246":[143,144],"qalqalah":[118,120],"silent":[15,17,39,41,125,127],"hamzat_wasl":[18,19,72,73,80,81,117,118,133,134]},
+"47": {"ghunnah":[120,123],"iqlab":[153,157],"idghaam_ghunnah":[51,56],"idghaam_shafawi":[20,25],"lam_shamsiyyah":[159,160],"madd_2":[74,75,123,124,163,164],"madd_246":[168,169],"qalqalah":[84,86],"silent":[12,14,67,69],"hamzat_wasl":[96,97,139,140,158,159]},
+"48": {"ikhfa":[33,37],"madd_2":[128,129],"madd_246":[133,134],"madd_muttasil":[81,83],"qalqalah":[8,10,37,39],"silent":[16,18,52,54],"hamzat_wasl":[7,8,19,20,60,61,86,87,111,112]},
+"49": {"ghunnah":[47,50,89,92,97,100],"iqlab":[113,117],"idghaam_ghunnah":[13,17],"idghaam_no_ghunnah":[28,33],"idghaam_shafawi":[8,13],"madd_2":[123,124],"madd_246":[128,129],"madd_munfasil":[50,52],"silent":[82,84],"hamzat_wasl":[23,24,63,64,118,119]},
+"50": {"ikhfa":[2,6,20,24,37,41,97,101],"idghaam_ghunnah":[56,60],"madd_246":[135,136],"madd_munfasil":[82,84],"qalqalah":[8,10,43,45,71,73,101,103],"silent":[66,68,118,120]},
+"51": {"idghaam_ghunnah":[7,11],"madd_2":[65,66],"madd_246":[113,114],"madd_munfasil":[18,20],"hamzat_wasl":[39,40,78,79,102,103]},
+"52": {"ghunnah":[176,179],"ikhfa":[132,135],"idghaam_ghunnah":[92,96,122,127],"idghaam_shafawi":[187,192],"madd_246":[201,202],"madd_munfasil":[27,29,35,37,137,139,169,171],"silent":[171,173],"hamzat_wasl":[46,47,106,107]},
+"53": {"ghunnah":[64,67],"ikhfa":[7,10,56,59,74,77,85,90],"idghaam_ghunnah":[40,44],"idghaam_no_ghunnah":[34,40],"madd_2":[90,91],"madd_246":[95,96],"silent":[13,15]},
+"54": {"ghunnah":[63,66],"ikhfa":[19,23,166,169],"lam_shamsiyyah":[123,124],"madd_2":[45,46,104,105,130,131,191,192],"madd_246":[196,197],"madd_munfasil":[58,60],"qalqalah":[23,25],"silent":[78,80,129,130],"hamzat_wasl":[83,84,122,123]},
+"55": {"ghunnah":[54,57],"ikhfa":[138,141],"ikhfa_shafawi":[90,94],"lam_shamsiyyah":[115,116],"madd_2":[23,24,44,45,110,111,157,158],"madd_246":[162,163],"madd_munfasil":[35,37],"qalqalah":[12,14],"silent":[109,110],"hamzat_wasl":[69,70,102,103,114,115]},
+"56": {"ghunnah":[26,29,70,73],"ikhfa":[38,41,57,60],"idghaam_ghunnah":[83,87],"idghaam_shafawi":[52,57],"madd_2":[67,68],"madd_246":[93,94],"hamzat_wasl":[16,17]},
+"57": {"idghaam_no_ghunnah":[55,61],"madd_2":[35,36,38,39],"madd_246":[95,96],"qalqalah":[89,91],"silent":[68,70]},
+"58": {"idghaam_ghunnah":[13,17],"idghaam_no_ghunnah":[80,85],"idghaam_shafawi":[8,13],"lam_shamsiyyah":[31,32],"madd_2":[39,40],"madd_246":[127,128],"madd_munfasil":[105,107],"silent":[57,59,73,75,96,98],"hamzat_wasl":[30,31]},
+"59": {"ghunnah":[9,12,143,146],"ikhfa":[115,119],"madd_2":[36,37,61,62,125,126,165,166],"madd_246":[170,171],"madd_munfasil":[27,29,138,140,146,148],"silent":[22,24,71,73],"hamzat_wasl":[42,43,84,85,105,106,155,156]},
+"60": {"ghunnah":[2,5],"idghaam_ghunnah":[190,195],"lam_shamsiyyah":[10,11,115,116,172,173],"madd_2":[18,19,46,47,60,61,132,133],"madd_246":[228,229],"madd_muttasil":[32,34],"qalqalah":[166,168],"hamzat_wasl":[9,10,39,40,55,56,81,82,114,115,127,128,155,156,165,166,171,172,198,199,208,209]},
+"61": {"ghunnah":[33,36],"ikhfa":[65,69,176,179],"idghaam_no_ghunnah":[84,89,149,154],"lam_shamsiyyah":[32,33],"madd_246":[239,240],"silent":[171,173],"hamzat_wasl":[11,12,31,32,105,106,184,185,212,213]},
+"62": {"ikhfa":[91,95],"idghaam_ghunnah":[77,81],"madd_246":[110,111],"madd_munfasil":[64,66],"silent":[99,101],"hamzat_wasl":[14,15,45,46]},
+"63": {"ghunnah":[22,25,68,71,88,91],"ikhfa":[100,105],"idghaam_ghunnah":[31,35],"madd_2":[27,28,62,63,76,77,96,97,112,113],"madd_246":[135,136],"madd_munfasil":[15,17],"silent":[17,19],"hamzat_wasl":[43,44,118,119,128,129]},
+"64": {"ghunnah":[116,119],"ikhfa":[27,31,56,60],"ikhfa_shafawi":[69,73],"idghaam_ghunnah":[135,140],"madd_2":[16,17],"madd_246":[150,151],"madd_munfasil":[109,111],"silent":[111,113],"hamzat_wasl":[9,10,98,99,120,121]},
+"65": {"ghunnah":[30,33,36,39,45,48],"ikhfa":[6,10,115,118],"madd_2":[93,94,98,99,111,112],"madd_246":[133,134],"hamzat_wasl":[78,79]},
+"66": {"ghunnah":[115,118],"ikhfa":[67,71,83,86],"ikhfa_shafawi":[31,35],"iqlab":[108,112],"idghaam_ghunnah":[55,60,78,83],"madd_2":[45,46],"madd_246":[140,141],"madd_muttasil":[71,73,101,103],"qalqalah":[20,22,96,98,134,136],"silent":[15,17,129,131]},
+"67": {"ghunnah":[171,174],"ikhfa":[76,79],"iqlab":[48,51],"idghaam_ghunnah":[55,59],"idghaam_shafawi":[42,47],"madd_2":[7,8,25,26,30,31,182,183,201,202],"madd_246":[206,207],"qalqalah":[117,119],"silent":[145,147],"hamzat_wasl":[18,19,71,72,100,101,148,149,175,176,196,197]},
+"68": {"ghunnah":[73,76],"idghaam_ghunnah":[149,154],"madd_2":[22,23,40,41,45,46,81,82],"madd_246":[156,157],"hamzat_wasl":[7,8,15,16,33,34,51,52,126,127]},
+"69": {"ikhfa":[14,18,47,50,93,98,188,192],"ikhfa_shafawi":[142,146,198,202],"idghaam_ghunnah":[59,63,80,85],"lam_shamsiyyah":[286,287],"madd_2":[78,79,91,92,119,120,150,151,206,207,273,274,336,337],"madd_246":[341,342],"madd_munfasil":[32,34,240,242],"madd_muttasil":[251,253,319,321],"qalqalah":[18,20,192,194],"silent":[34,36,110,112,242,244,247,249,315,317],"hamzat_wasl":[2,3,98,99,129,130,164,165,176,177,227,228,285,286,298,299,331,332]},
+"70": {"ikhfa":[37,41,222,226,236,239],"ikhfa_shafawi":[162,166],"idghaam_ghunnah":[61,65,69,73],"madd_2":[96,97,111,112,139,140,176,177,219,220],"madd_246":[254,255],"madd_munfasil":[229,231],"qalqalah":[41,43,92,94,117,119],"silent":[231,233],"hamzat_wasl":[25,26,126,127,166,167,192,193]},
+"71": {"ghunnah":[243,246],"ikhfa":[115,118],"idghaam_ghunnah":[63,67],"lam_shamsiyyah":[135,136,159,160],"madd_2":[30,31,142,143,166,167],"madd_246":[267,268],"madd_munfasil":[202,204],"madd_muttasil":[53,55,211,213],"silent":[141,142,165,166,207,209],"hamzat_wasl":[2,3,19,20,79,80,110,111,134,135,158,159,183,184,233,234,247,248]},
+"72": {"ghunnah":[49,52,137,140],"ikhfa":[54,58,66,70,129,133],"idghaam_ghunnah":[149,153,161,166],"madd_2":[43,44,52,53,87,88,93,94,115,116,140,141,159,160,188,189],"madd_246":[216,217],"qalqalah":[58,60,146,148],"hamzat_wasl":[7,8,15,16,32,33,78,79,169,170,199,200,209,210]},
+"73": {"ghunnah":[15,18,102,105],"lam_shamsiyyah":[14,15],"madd_2":[26,27,53,54,92,93],"madd_246":[124,125],"madd_munfasil":[2,4],"hamzat_wasl":[13,14,32,33,46,47,64,65,117,118]},
+"74": {"ghunnah":[109,112],"ikhfa":[204,208,311,316],"idghaam_ghunnah":[220,224,258,262,373,377,381,385],"idghaam_no_ghunnah":[243,249],"lam_shamsiyyah":[319,320],"madd_2":[97,98,175,176,200,201,214,215],"madd_246":[393,394],"madd_munfasil":[150,152,160,162],"qalqalah":[41,43,281,283],"silent":[32,34,50,52,81,83,113,115,135,137,152,154,230,232,271,273],"hamzat_wasl":[14,15,62,63,181,182,288,289,318,319,331,332,361,362]},
+"75": {"ghunnah":[76,79,91,94],"ikhfa":[52,56],"idghaam_shafawi":[8,13],"lam_shamsiyyah":[101,102],"madd_2":[18,19,45,46,62,63,105,106],"madd_246":[110,111],"hamzat_wasl":[24,25,100,101]},
+"76": {"ghunnah":[4,7],"ikhfa":[24,28],"idghaam_shafawi":[19,24,70,75],"madd_2":[16,17,34,35,50,51],"madd_246":[81,82],"madd_munfasil":[7,9],"silent":[43,45,62,64]},
+"77": {"ikhfa":[21,26],"madd_2":[66,67],"madd_246":[134,135],"madd_munfasil":[72,74],"silent":[84,86,123,125],"hamzat_wasl":[87,88]},
+"78": {"ghunnah":[22,25,72,75],"madd_2":[62,63,89,90],"madd_246":[100,101],"madd_munfasil":[15,17],"qalqalah":[57,59,101,102],"silent":[17,19],"hamzat_wasl":[26,27,76,77,93,94]},
+"79": {"lam_shamsiyyah":[64,65],"madd_2":[72,73],"madd_246":[188,189],"hamzat_wasl":[22,23,44,45,63,64,78,79,150,151]},
+"80": {"ghunnah":[132,135],"ikhfa":[50,54,88,92],"idghaam_ghunnah":[94,98],"madd_2":[122,123,171,172,210,211],"madd_246":[215,216],"qalqalah":[74,76],"silent":[147,149],"hamzat_wasl":[105,106,152,153,175,176,195,196,205,206]},
+"81": {"ghunnah":[196,199],"ikhfa":[112,115,159,162],"idghaam_ghunnah":[77,81],"idghaam_no_ghunnah":[214,220],"madd_2":[42,43,83,84,100,101],"madd_246":[240,241],"madd_munfasil":[70,72],"qalqalah":[27,29],"silent":[72,74,89,91,150,152,165,167,229,231],"hamzat_wasl":[7,8,54,55,134,135,172,173]},
+"82": {"ikhfa":[45,50],"iqlab":[55,59],"idghaam_ghunnah":[22,27],"madd_246":[81,82],"madd_muttasil":[52,54],"qalqalah":[31,33],"silent":[13,15,36,38,70,72]},
+"83": {"ghunnah":[157,160],"ikhfa":[91,95,124,128,201,205],"ikhfa_shafawi":[172,176],"idghaam_ghunnah":[40,45,117,122],"idghaam_no_ghunnah":[4,9],"madd_2":[130,131,226,227],"madd_246":[231,232],"madd_muttasil":[33,35],"qalqalah":[206,208],"silent":[102,104,136,138,213,215],"hamzat_wasl":[16,17,54,55,176,177,205,206,221,222]},
+"84": {"ghunnah":[86,89],"idghaam_ghunnah":[27,32,50,55],"idghaam_shafawi":[36,41],"madd_2":[125,126,147,148],"madd_246":[152,153],"madd_munfasil":[18,21,81,83],"qalqalah":[75,77],"silent":[101,103,135,137],"hamzat_wasl":[106,107]},
+"85": {"ghunnah":[49,52],"ikhfa":[123,126],"ikhfa_shafawi":[87,91],"idghaam_ghunnah":[74,78],"lam_shamsiyyah":[100,101],"madd_2":[23,24,39,40,142,143],"madd_246":[147,148],"qalqalah":[12,14],"hamzat_wasl":[64,65,99,100]},
+"86": {"ikhfa":[11,14],"idghaam_ghunnah":[148,153],"lam_shamsiyyah":[107,108],"madd_2":[57,58,161,162],"madd_246":[166,167],"madd_munfasil":[6,8],"silent":[40,42,63,65,98,100,103,105,133,135],"hamzat_wasl":[45,46,81,82,106,107,156,157]},
+"87": {"idghaam_ghunnah":[12,16],"madd_246":[90,91],"silent":[5,7,22,24],"hamzat_wasl":[30,31]},
+"88": {"ikhfa":[81,84],"lam_shamsiyyah":[9,10],"madd_2":[2,3,48,49,52,53,69,70,122,123],"madd_246":[157,158],"madd_muttasil":[99,101,134,136],"silent":[39,41,58,60,95,97,130,132],"hamzat_wasl":[8,9,21,22,113,114,146,147]},
+"89": {"ghunnah":[25,28],"ikhfa":[30,34,42,46],"madd_2":[28,29,63,64,69,70,87,88],"madd_246":[110,111],"qalqalah":[34,36],"hamzat_wasl":[8,9,54,55,93,94,103,104]},
+"90": {"madd_2":[109,110],"madd_246":[162,163],"madd_muttasil":[4,6],"silent":[87,89,138,140],"hamzat_wasl":[9,10,30,31,70,71,90,91,121,122]},
+"91": {"ikhfa":[94,97,174,178],"idghaam_ghunnah":[182,186],"idghaam_no_ghunnah":[200,205],"lam_shamsiyyah":[15,16],"madd_2":[145,146],"madd_246":[207,208],"madd_muttasil":[23,25],"silent":[123,125],"hamzat_wasl":[14,15,40,41,64,65,157,158,186,187]},
+"92": {"ikhfa":[184,187],"lam_shamsiyyah":[144,145],"madd_246":[189,190],"madd_munfasil":[30,32,66,68,78,80],"silent":[111,113,175,177],"hamzat_wasl":[12,13,143,144]},
+"93": {"ghunnah":[2,5],"idghaam_ghunnah":[87,91],"lam_shamsiyyah":[10,11],"madd_246":[173,174],"madd_muttasil":[70,72],"silent":[80,82,97,99],"hamzat_wasl":[9,10,26,27,105,106,127,128]},
+"94": {"ghunnah":[184,187],"ikhfa":[262,265],"ikhfa_shafawi":[252,256],"idghaam_ghunnah":[78,83],"lam_shamsiyyah":[227,228],"madd_2":[180,181,208,209,233,234],"madd_246":[276,277],"qalqalah":[99,101],"silent":[73,75],"hamzat_wasl":[113,114,150,151,214,215,226,227]},
+"95": {"ghunnah":[109,112,143,146],"ikhfa":[38,41],"iqlab":[156,160],"idghaam_ghunnah":[122,126],"madd_2":[133,134],"madd_246":[182,183],"madd_muttasil":[153,155],"qalqalah":[43,45,119,121],"silent":[72,74,95,97,171,173],"hamzat_wasl":[16,17,37,38]},
+"96": {"ghunnah":[71,74],"ikhfa":[45,49],"madd_2":[116,117],"madd_246":[121,122],"silent":[29,31,55,57],"hamzat_wasl":[75,76,101,102,111,112]},
+"97": {"ikhfa":[85,88],"idghaam_ghunnah":[26,31,37,42],"madd_2":[115,116],"madd_246":[139,140],"madd_munfasil":[80,82],"qalqalah":[44,46],"silent":[67,69],"hamzat_wasl":[91,92,119,120]},
+"98": {"ikhfa":[40,43],"idghaam_ghunnah":[22,26,53,58],"lam_shamsiyyah":[78,79,114,115],"madd_246":[145,146],"madd_muttasil":[84,86,104,106],"hamzat_wasl":[7,8,77,78,113,114,125,126]},
+"99": {"ghunnah":[146,149,212,215],"ikhfa":[84,87,102,105],"idghaam_ghunnah":[22,26],"idghaam_no_ghunnah":[160,165,230,235],"lam_shamsiyyah":[127,128],"madd_2":[96,97,122,123],"madd_246":[237,238],"madd_munfasil":[141,143,207,209],"qalqalah":[174,176],"hamzat_wasl":[7,8,35,36,45,46,55,56,106,107,126,127,185,186,216,217]},
+"100": {"ghunnah":[163,166],"ikhfa":[58,61,168,172,225,230],"ikhfa_shafawi":[88,92],"idghaam_no_ghunnah":[100,105],"lam_shamsiyyah":[3,4],"madd_2":[7,8,42,43,98,99,166,167,197,198,203,204,230,231],"madd_246":[253,254],"madd_munfasil":[217,219],"qalqalah":[172,174],"silent":[134,136],"hamzat_wasl":[2,3,16,17,35,36,53,54,67,68,77,78,110,111,188,189,236,237,246,247]},
+"101": {"ghunnah":[4,7,97,100,173,176],"idghaam_shafawi":[18,23,156,161],"lam_shamsiyyah":[96,97],"madd_2":[43,44],"madd_246":[207,208],"silent":[86,88],"hamzat_wasl":[26,27,66,67,95,96]},
+"102": {"ghunnah":[125,128],"ikhfa":[55,60],"idghaam_ghunnah":[64,69,102,106],"idghaam_no_ghunnah":[143,148],"madd_2":[60,61],"madd_246":[150,151],"silent":[23,25,47,49],"hamzat_wasl":[13,14,92,93,129,130]},
+"103": {"ghunnah":[88,91],"ikhfa":[31,35],"ikhfa_shafawi":[59,63],"idghaam_no_ghunnah":[108,113],"madd_2":[16,17,97,98],"madd_246":[140,141],"silent":[96,97],"hamzat_wasl":[120,121]},
+"104": {"ghunnah":[22,25,104,107],"lam_shamsiyyah":[49,50,88,89,122,123,134,135],"madd_2":[74,75,96,97],"madd_246":[140,141],"madd_munfasil":[15,17],"qalqalah":[41,43],"silent":[17,19],"hamzat_wasl":[26,27,48,49,87,88,108,109,121,122,133,134]},
+"105": {"ikhfa":[155,158],"ikhfa_shafawi":[145,149],"lam_shamsiyyah":[120,121],"madd_2":[58,59,101,102,126,127],"madd_246":[169,170],"silent":[15,17],"hamzat_wasl":[7,8,28,29,62,63,107,108,119,120]},
+"106": {"ghunnah":[43,46,66,69],"madd_246":[112,113],"hamzat_wasl":[33,34,92,93]},
+"107": {"ghunnah":[162,165,222,225],"ikhfa":[31,36,141,145],"iqlab":[63,68],"idghaam_ghunnah":[40,45,50,55],"idghaam_no_ghunnah":[99,105],"madd_2":[137,138,234,235],"madd_246":[239,240],"madd_munfasil":[179,181],"qalqalah":[145,147,175,177],"silent":[21,23],"hamzat_wasl":[2,3,12,13,74,75,118,119,189,190,203,204]},
+"108": {"ikhfa":[93,97],"idghaam_ghunnah":[121,125,136,140],"idghaam_no_ghunnah":[22,28],"lam_shamsiyyah":[52,53],"madd_246":[184,185],"qalqalah":[56,58],"silent":[150,152],"hamzat_wasl":[51,52,155,156,171,172]},
+"109": {"ghunnah":[166,169],"ikhfa":[133,137],"idghaam_shafawi":[80,85],"lam_shamsiyyah":[205,206],"madd_2":[23,24,28,29,67,68,102,103,107,108,150,151,209,210],"madd_246":[214,215],"qalqalah":[39,41],"hamzat_wasl":[51,52,137,138,174,175,194,195,204,205]},
+"110": {"ikhfa":[49,53,77,81],"madd_2":[18,19],"madd_246":[123,124],"madd_munfasil":[72,74],"silent":[40,42],"hamzat_wasl":[26,27,103,104]},
+"111": {"ghunnah":[2,5,75,78,91,94],"ikhfa":[46,49,179,184,207,210],"ikhfa_shafawi":[69,73,317,321],"lam_shamsiyyah":[187,188],"madd_2":[64,65,101,102,196,197,255,256,323,324,329,330],"madd_246":[357,358],"qalqalah":[134,136,148,150,277,279],"silent":[284,286],"hamzat_wasl":[6,7,14,15,29,30,86,87,122,123,186,187,202,203,216,217,262,263,272,273,300,301,340,341,350,351]},
+"112": {"ghunnah":[119,122],"ikhfa":[139,142],"lam_shamsiyyah":[1,2,44,45,59,60,73,74,118,119],"madd_2":[20,21,34,35,63,64,77,78,152,153],"madd_246":[200,201],"madd_muttasil":[5,7,48,50],"hamzat_wasl":[15,16,29,30,43,44,58,59,72,73,86,87,102,103,117,118,134,135,147,148,171,172,189,190]},
+"113": {"ghunnah":[13,16,151,154],"iqlab":[119,122],"idghaam_ghunnah":[48,52],"lam_shamsiyyah":[12,13],"madd_2":[165,166],"madd_246":[176,177],"madd_munfasil":[41,43,94,96],"silent":[43,45,63,65,96,98,101,103],"hamzat_wasl":[24,25,169,170]},
+"114": {"ghunnah":[95,98,119,122,162,165],"idghaam_ghunnah":[57,62,69,73],"idghaam_no_ghunnah":[132,137],"madd_2":[31,32,124,125,172,173,186,187],"madd_246":[194,195],"madd_munfasil":[79,81,114,116],"qalqalah":[27,29,168,170],"hamzat_wasl":[12,13]},
+"115": {"ghunnah":[104,107],"iqlab":[35,40],"idghaam_shafawi":[84,89],"madd_2":[56,57],"madd_246":[135,136],"hamzat_wasl":[12,13,108,109]},
+"116": {"ghunnah":[2,5],"ikhfa":[86,90],"idghaam_ghunnah":[104,108,112,116],"idghaam_shafawi":[81,86],"lam_shamsiyyah":[28,29],"madd_2":[18,19,34,35,37,38,59,60],"madd_246":[124,125],"hamzat_wasl":[6,7,27,28,43,44,94,95]},
+"117": {"ghunnah":[30,33,175,178,198,201],"ikhfa":[64,67],"iqlab":[120,123],"idghaam_ghunnah":[161,166],"idghaam_mutajanisayn":[5,6],"idghaam_no_ghunnah":[218,223],"lam_shamsiyyah":[29,30],"madd_2":[48,49,203,204],"madd_246":[225,226],"hamzat_wasl":[14,15,28,29,41,42,59,60,71,72,81,82,105,106]},
+"118": {"ghunnah":[138,141,196,199,233,236],"ikhfa":[124,127],"idghaam_no_ghunnah":[148,153],"lam_shamsiyyah":[9,10,251,252,263,264],"madd_2":[15,16],"madd_246":[269,270],"madd_munfasil":[47,50,141,143,182,184,226,228],"silent":[39,41,143,145,228,230],"hamzat_wasl":[8,9,21,22,76,77,169,170,237,238,250,251,262,263]},
+"119": {"lam_shamsiyyah":[69,70],"madd_2":[73,74],"madd_246":[78,79],"madd_munfasil":[2,4],"silent":[31,33,41,43,60,62],"hamzat_wasl":[13,14,34,35,44,45,68,69]},
+"120": {"ghunnah":[167,170,377,380],"ikhfa":[130,133,226,230,365,369],"ikhfa_shafawi":[352,356],"idghaam_ghunnah":[70,74,142,147,196,200,209,213,272,277,323,328],"idghaam_no_ghunnah":[89,94],"idghaam_shafawi":[47,52],"madd_2":[153,154,157,158,358,359,369,370],"madd_246":[419,420],"qalqalah":[403,405],"silent":[84,86,123,125],"hamzat_wasl":[19,20,55,56,100,101,240,241,283,284,381,382,408,409]},
+"121": {"ikhfa":[8,11,24,28],"idghaam_ghunnah":[34,38,50,54],"madd_246":[153,154],"qalqalah":[60,62,104,106],"silent":[142,144],"hamzat_wasl":[115,116]},
+"122": {"ikhfa":[31,34,48,52,69,73,144,147],"idghaam_ghunnah":[84,89],"idghaam_no_ghunnah":[105,110],"lam_shamsiyyah":[130,131],"madd_246":[212,213],"madd_munfasil":[176,178],"madd_muttasil":[98,100],"madd_6":[42,44],"silent":[37,39,122,124,150,152,178,180],"hamzat_wasl":[12,13,129,130]},
+"123": {"ghunnah":[131,134],"idghaam_ghunnah":[113,117],"idghaam_shafawi":[64,69],"madd_2":[36,37],"madd_246":[158,159],"madd_munfasil":[2,4,124,126],"silent":[31,33,42,44,95,97,126,128],"hamzat_wasl":[13,14,45,46,72,73,117,118,135,136,148,149]},
+"124": {"ghunnah":[98,101],"ikhfa":[15,18,29,33,91,96],"idghaam_ghunnah":[44,48,145,150],"idghaam_shafawi":[39,44],"madd_2":[76,77,89,90,143,144],"madd_246":[167,168],"madd_munfasil":[10,12,81,83],"qalqalah":[161,163],"silent":[121,123],"hamzat_wasl":[103,104]},
+"125": {"ghunnah":[4,7],"ikhfa":[40,44],"idghaam_shafawi":[32,37],"madd_2":[102,103],"madd_246":[107,108],"qalqalah":[58,60,73,75],"silent":[90,92],"hamzat_wasl":[9,10]},
+"126": {"ghunnah":[19,22,83,86],"idghaam_ghunnah":[53,58],"madd_246":[123,124]},
+"127": {"ghunnah":[94,97,140,143],"ikhfa":[15,18,90,94,99,102],"ikhfa_shafawi":[134,138],"idghaam_ghunnah":[29,34],"idghaam_no_ghunnah":[153,158],"idghaam_shafawi":[77,82],"madd_2":[74,75],"madd_246":[168,169],"madd_munfasil":[10,12],"silent":[107,109],"hamzat_wasl":[98,99,117,118]},
+"128": {"ikhfa":[34,37],"ikhfa_shafawi":[91,95],"idghaam_ghunnah":[24,29],"idghaam_no_ghunnah":[116,121],"madd_246":[123,124],"madd_muttasil":[9,11],"qalqalah":[4,6],"hamzat_wasl":[95,96]},
+"129": {"ikhfa":[4,8],"madd_2":[51,52],"madd_246":[118,119],"madd_munfasil":[44,46],"silent":[15,17],"hamzat_wasl":[34,35,101,102,111,112]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/90.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/90.json
index 938903d..2076727 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/90.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/90.json
@@ -1,21 +1,21 @@
{
-"1": {"madd":[41,43,57,58],"qalqalah":[46,48,69,70],"wasl":[62,63]},
-"2": {"ghunnah":[4,7,12,16],"madd":[19,20],"qalqalah":[31,32],"wasl":[24,25]},
-"3": {"idgham":[8,12],"qalqalah":[20,21]},
-"4": {"ghunnah":[22,25],"madd":[25,26],"qalqalah":[4,6,11,13,37,38],"wasl":[17,18]},
-"5": {"idgham":[13,18,18,22],"qalqalah":[22,24,42,43]},
-"6": {"idgham":[23,29]},
-"7": {"idgham":[13,18],"madd":[27,29],"qalqalah":[34,35]},
-"8": {"madd":[20,21,28,29],"qalqalah":[9,11]},
-"9": {"idgham":[8,13],"madd":[19,20]},
-"10": {"ghunnah":[16,19],"idgham":[15,16],"madd":[10,11,23,24],"qalqalah":[19,21],"wasl":[14,15]},
-"11": {"qalqalah":[7,9],"wasl":[6,7,16,17]},
-"12": {"madd":[4,6,14,15],"qalqalah":[9,11],"wasl":[22,23]},
-"14": {"ghunnah":[13,17,24,28],"madd":[11,12],"qalqalah":[7,9]},
-"15": {"ghunnah":[6,11],"qalqalah":[15,17]},
-"16": {"ghunnah":[13,18]},
-"17": {"ghunnah":[2,5],"idgham":[55,56],"qalqalah":[59,61],"silent":[35,37,49,51,75,77],"wasl":[17,18,54,55,80,81]},
-"18": {"madd":[6,8,19,20],"silent":[2,4],"wasl":[23,24]},
-"19": {"madd":[30,31,48,49],"silent":[19,21],"wasl":[2,3,52,53]},
-"20": {"idgham":[15,20]}
+"1": {"madd_2":[57,58],"madd_munfasil":[41,43],"qalqalah":[46,48,69,70],"hamzat_wasl":[62,63]},
+"2": {"ikhfa":[4,7],"iqlab":[12,16],"madd_2":[19,20],"qalqalah":[31,32],"hamzat_wasl":[24,25]},
+"3": {"idghaam_ghunnah":[8,12],"qalqalah":[20,21]},
+"4": {"ikhfa":[22,25],"madd_2":[25,26],"qalqalah":[4,6,11,13,37,38],"hamzat_wasl":[17,18]},
+"5": {"idghaam_ghunnah":[18,22],"idghaam_no_ghunnah":[13,18],"qalqalah":[22,24,42,43]},
+"6": {"idghaam_no_ghunnah":[23,29]},
+"7": {"idghaam_no_ghunnah":[13,18],"madd_munfasil":[27,29],"qalqalah":[34,35]},
+"8": {"madd_2":[20,21],"madd_246":[28,29],"qalqalah":[9,11]},
+"9": {"idghaam_ghunnah":[8,13],"madd_246":[19,20]},
+"10": {"ghunnah":[16,19],"lam_shamsiyyah":[15,16],"madd_2":[10,11],"madd_246":[23,24],"qalqalah":[19,21],"hamzat_wasl":[14,15]},
+"11": {"qalqalah":[7,9],"hamzat_wasl":[6,7,16,17]},
+"12": {"madd_2":[14,15],"madd_munfasil":[4,6],"qalqalah":[9,11],"hamzat_wasl":[22,23]},
+"14": {"ikhfa":[13,17,24,28],"madd_2":[11,12],"qalqalah":[7,9]},
+"15": {"ikhfa":[6,11],"qalqalah":[15,17]},
+"16": {"ikhfa":[13,18]},
+"17": {"ghunnah":[2,5],"lam_shamsiyyah":[55,56],"qalqalah":[59,61],"silent":[35,37,49,51,75,77],"hamzat_wasl":[17,18,54,55,80,81]},
+"18": {"madd_2":[19,20],"madd_muttasil":[6,8],"silent":[2,4],"hamzat_wasl":[23,24]},
+"19": {"madd_2":[30,31,48,49],"silent":[19,21],"hamzat_wasl":[2,3,52,53]},
+"20": {"idghaam_ghunnah":[15,20]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/91.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/91.json
index 83f9035..2888c15 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/91.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/91.json
@@ -1,17 +1,17 @@
{
-"1": {"idgham":[42,43],"madd":[58,59],"wasl":[41,42]},
-"2": {"madd":[23,24],"wasl":[2,3]},
-"3": {"ghunnah":[4,7],"idgham":[3,4],"madd":[25,26],"wasl":[2,3]},
-"4": {"madd":[24,25],"wasl":[2,3]},
-"5": {"idgham":[3,4],"madd":[9,11,25,26],"wasl":[2,3]},
-"6": {"madd":[23,24],"wasl":[2,3]},
-"7": {"idgham":[7,11],"madd":[21,22]},
-"8": {"madd":[34,35],"qalqalah":[29,31]},
-"9": {"ghunnah":[16,20],"madd":[24,25],"qalqalah":[2,4]},
-"10": {"ghunnah":[15,19],"madd":[23,24],"qalqalah":[4,6]},
-"11": {"madd":[27,28]},
-"12": {"ghunnah":[7,9],"madd":[22,23],"wasl":[5,6]},
-"13": {"madd":[55,56],"qalqalah":[51,53],"wasl":[23,24,39,40]},
-"14": {"ghunnah":[55,59,62,64],"madd":[78,79]},
-"15": {"madd":[20,21],"qalqalah":[16,18]}
+"1": {"lam_shamsiyyah":[42,43],"madd_2":[58,59],"hamzat_wasl":[41,42]},
+"2": {"madd_2":[23,24],"hamzat_wasl":[2,3]},
+"3": {"ghunnah":[4,7],"lam_shamsiyyah":[3,4],"madd_2":[25,26],"hamzat_wasl":[2,3]},
+"4": {"madd_2":[24,25],"hamzat_wasl":[2,3]},
+"5": {"lam_shamsiyyah":[3,4],"madd_2":[25,26],"madd_muttasil":[9,11],"hamzat_wasl":[2,3]},
+"6": {"madd_2":[23,24],"hamzat_wasl":[2,3]},
+"7": {"idghaam_ghunnah":[7,11],"madd_2":[21,22]},
+"8": {"madd_2":[34,35],"qalqalah":[29,31]},
+"9": {"ikhfa":[16,20],"madd_2":[24,25],"qalqalah":[2,4]},
+"10": {"ikhfa":[15,19],"madd_2":[23,24],"qalqalah":[4,6]},
+"11": {"madd_2":[27,28]},
+"12": {"iqlab":[7,9],"madd_2":[22,23],"hamzat_wasl":[5,6]},
+"13": {"madd_2":[55,56],"qalqalah":[51,53],"hamzat_wasl":[23,24,39,40]},
+"14": {"ikhfa_shafawi":[55,59],"iqlab":[62,64],"madd_2":[78,79]},
+"15": {"madd_2":[20,21],"qalqalah":[16,18]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/92.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/92.json
index 87d30c3..7206d65 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/92.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/92.json
@@ -1,21 +1,21 @@
{
-"1": {"wasl":[41,42]},
-"2": {"ghunnah":[4,7],"idgham":[3,4],"wasl":[2,3]},
-"3": {"ghunnah":[30,33],"idgham":[14,15],"wasl":[13,14,25,26]},
+"1": {"hamzat_wasl":[41,42]},
+"2": {"ghunnah":[4,7],"lam_shamsiyyah":[3,4],"hamzat_wasl":[2,3]},
+"3": {"ikhfa":[30,33],"lam_shamsiyyah":[14,15],"hamzat_wasl":[13,14,25,26]},
"4": {"ghunnah":[2,5]},
-"5": {"ghunnah":[4,7],"wasl":[25,26]},
-"6": {"wasl":[12,13]},
-"7": {"madd":[15,16]},
-"8": {"ghunnah":[4,7,12,15],"wasl":[23,24]},
-"9": {"wasl":[12,13]},
-"10": {"madd":[15,16]},
-"11": {"madd":[28,30]},
+"5": {"ghunnah":[4,7],"hamzat_wasl":[25,26]},
+"6": {"hamzat_wasl":[12,13]},
+"7": {"madd_2":[15,16]},
+"8": {"ghunnah":[4,7],"iqlab":[12,15],"hamzat_wasl":[23,24]},
+"9": {"hamzat_wasl":[12,13]},
+"10": {"madd_2":[15,16]},
+"11": {"madd_munfasil":[28,30]},
"12": {"ghunnah":[2,5]},
-"13": {"ghunnah":[4,7],"wasl":[30,31]},
-"14": {"ghunnah":[4,7,20,25]},
-"15": {"madd":[11,12,14,16],"wasl":[24,25]},
-"17": {"ghunnah":[8,11],"wasl":[17,18]},
-"18": {"madd":[23,24]},
-"19": {"ghunnah":[17,20,36,40],"idgham":[26,31],"madd":[22,23],"qalqalah":[40,42]},
-"20": {"madd":[14,16],"qalqalah":[8,10,21,23],"wasl":[7,8,34,35]}
+"13": {"ghunnah":[4,7],"hamzat_wasl":[30,31]},
+"14": {"ikhfa":[4,7,20,25]},
+"15": {"madd_2":[11,12],"madd_munfasil":[14,16],"hamzat_wasl":[24,25]},
+"17": {"ghunnah":[8,11],"hamzat_wasl":[17,18]},
+"18": {"madd_2":[23,24]},
+"19": {"ikhfa":[17,20,36,40],"idghaam_ghunnah":[26,31],"madd_2":[22,23],"qalqalah":[40,42]},
+"20": {"madd_muttasil":[14,16],"qalqalah":[8,10,21,23],"hamzat_wasl":[7,8,34,35]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/93.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/93.json
index 2c61a37..0384703 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/93.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/93.json
@@ -1,11 +1,11 @@
{
-"1": {"idgham":[42,43],"wasl":[41,42]},
-"2": {"wasl":[2,3]},
-"4": {"idgham":[21,26],"wasl":[34,35]},
-"6": {"ghunnah":[22,27],"qalqalah":[11,13]},
-"7": {"ghunnah":[17,22],"madd-lazim":[13,15]},
-"8": {"ghunnah":[18,23],"madd":[13,15]},
-"9": {"ghunnah":[4,7],"qalqalah":[28,30],"wasl":[9,10]},
-"10": {"ghunnah":[4,7],"idgham":[10,11],"madd":[14,16],"wasl":[9,10]},
+"1": {"lam_shamsiyyah":[42,43],"hamzat_wasl":[41,42]},
+"2": {"hamzat_wasl":[2,3]},
+"4": {"idghaam_no_ghunnah":[21,26],"hamzat_wasl":[34,35]},
+"6": {"ikhfa":[22,27],"qalqalah":[11,13]},
+"7": {"ikhfa":[17,22],"madd_6":[13,15]},
+"8": {"ikhfa":[18,23],"madd_muttasil":[13,15]},
+"9": {"ghunnah":[4,7],"qalqalah":[28,30],"hamzat_wasl":[9,10]},
+"10": {"ghunnah":[4,7],"lam_shamsiyyah":[10,11],"madd_muttasil":[14,16],"hamzat_wasl":[9,10]},
"11": {"ghunnah":[4,7]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/94.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/94.json
index fcc35e5..82203d5 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/94.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/94.json
@@ -1,9 +1,9 @@
{
"1": {"qalqalah":[62,64]},
-"2": {"ghunnah":[14,17]},
-"3": {"ghunnah":[11,14],"madd":[6,8]},
-"5": {"ghunnah":[4,7],"wasl":[13,14]},
-"6": {"ghunnah":[2,5],"wasl":[11,12]},
-"7": {"ghunnah":[20,23],"qalqalah":[23,25],"wasl":[19,20]},
-"8": {"qalqalah":[24,25],"wasl":[19,20]}
+"2": {"ikhfa":[14,17]},
+"3": {"ikhfa":[11,14],"madd_munfasil":[6,8]},
+"5": {"ghunnah":[4,7],"hamzat_wasl":[13,14]},
+"6": {"ghunnah":[2,5],"hamzat_wasl":[11,12]},
+"7": {"ikhfa":[20,23],"qalqalah":[23,25],"hamzat_wasl":[19,20]},
+"8": {"qalqalah":[24,25],"hamzat_wasl":[19,20]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/95.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/95.json
index 3e4c339..5a09507 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/95.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/95.json
@@ -1,10 +1,10 @@
{
-"1": {"idgham":[43,44,54,55],"madd":[62,63],"wasl":[42,43,53,54]},
-"2": {"madd":[13,14]},
-"3": {"madd":[4,5,26,27],"wasl":[9,10,19,20]},
-"4": {"ghunnah":[22,25],"madd":[25,26,31,33,49,50],"qalqalah":[4,6,11,13,45,47],"wasl":[17,18]},
-"5": {"ghunnah":[2,5],"madd":[14,15,29,30,34,35],"qalqalah":[10,12]},
-"6": {"idgham":[41,42],"madd":[45,46,50,51,83,84],"qalqalah":[65,67],"silent":[25,27,37,39],"wasl":[7,8,40,41]},
-"7": {"idgham":[28,29],"madd":[32,33],"wasl":[27,28]},
-"8": {"madd":[33,34,38,39],"wasl":[9,10,28,29]}
+"1": {"lam_shamsiyyah":[43,44,54,55],"madd_246":[62,63],"hamzat_wasl":[42,43,53,54]},
+"2": {"madd_246":[13,14]},
+"3": {"madd_2":[4,5],"madd_246":[26,27],"hamzat_wasl":[9,10,19,20]},
+"4": {"ikhfa":[22,25],"madd_2":[25,26],"madd_246":[49,50],"madd_munfasil":[31,33],"qalqalah":[4,6,11,13,45,47],"hamzat_wasl":[17,18]},
+"5": {"ghunnah":[2,5],"madd_2":[14,15,29,30],"madd_246":[34,35],"qalqalah":[10,12]},
+"6": {"lam_shamsiyyah":[41,42],"madd_2":[45,46,50,51],"madd_246":[83,84],"qalqalah":[65,67],"silent":[25,27,37,39],"hamzat_wasl":[7,8,40,41]},
+"7": {"lam_shamsiyyah":[28,29],"madd_246":[32,33],"hamzat_wasl":[27,28]},
+"8": {"madd_2":[33,34],"madd_246":[38,39],"hamzat_wasl":[9,10,28,29]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/96.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/96.json
index a6f6844..2d60618 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/96.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/96.json
@@ -1,21 +1,21 @@
{
-"1": {"qalqalah":[40,42,75,76],"wasl":[49,50,63,64]},
-"2": {"ghunnah":[12,15],"madd":[15,16],"qalqalah":[28,29],"wasl":[7,8]},
-"3": {"qalqalah":[1,3],"wasl":[18,19]},
-"4": {"wasl":[18,19]},
-"5": {"ghunnah":[13,16],"madd":[16,17],"wasl":[8,9]},
-"6": {"ghunnah":[10,13,19,22],"madd":[5,7,22,23],"qalqalah":[30,32],"wasl":[14,15]},
-"7": {"idgham":[2,7],"wasl":[13,14]},
-"8": {"ghunnah":[2,5],"idgham":[22,23],"qalqalah":[26,28],"wasl":[21,22]},
-"9": {"wasl":[11,12]},
+"1": {"qalqalah":[40,42,75,76],"hamzat_wasl":[49,50,63,64]},
+"2": {"ikhfa":[12,15],"madd_2":[15,16],"qalqalah":[28,29],"hamzat_wasl":[7,8]},
+"3": {"qalqalah":[1,3],"hamzat_wasl":[18,19]},
+"4": {"hamzat_wasl":[18,19]},
+"5": {"ikhfa":[13,16],"madd_2":[16,17],"hamzat_wasl":[8,9]},
+"6": {"ghunnah":[10,13],"ikhfa":[19,22],"madd_2":[22,23],"madd_munfasil":[5,7],"qalqalah":[30,32],"hamzat_wasl":[14,15]},
+"7": {"idghaam_no_ghunnah":[2,7],"hamzat_wasl":[13,14]},
+"8": {"ghunnah":[2,5],"lam_shamsiyyah":[22,23],"qalqalah":[26,28],"hamzat_wasl":[21,22]},
+"9": {"hamzat_wasl":[11,12]},
"10": {"qalqalah":[2,4]},
-"11": {"ghunnah":[13,17],"wasl":[27,28]},
-"12": {"idgham":[15,16],"qalqalah":[19,21],"wasl":[14,15]},
-"13": {"ghunnah":[13,17]},
-"14": {"ghunnah":[13,17,19,22],"wasl":[23,24]},
-"15": {"ghunnah":[21,24,36,41,44,47],"idgham":[11,16,43,44],"wasl":[42,43]},
-"16": {"ghunnah":[8,12],"madd":[12,13]},
+"11": {"ikhfa":[13,17],"hamzat_wasl":[27,28]},
+"12": {"lam_shamsiyyah":[15,16],"qalqalah":[19,21],"hamzat_wasl":[14,15]},
+"13": {"ikhfa":[13,17]},
+"14": {"ghunnah":[19,22],"ikhfa_shafawi":[13,17],"hamzat_wasl":[23,24]},
+"15": {"ghunnah":[44,47],"ikhfa":[21,24],"iqlab":[36,41],"idghaam_no_ghunnah":[11,16],"lam_shamsiyyah":[43,44],"hamzat_wasl":[42,43]},
+"16": {"ikhfa":[8,12],"madd_2":[12,13]},
"17": {"qalqalah":[6,8]},
-"18": {"idgham":[10,11],"qalqalah":[4,6],"wasl":[9,10]},
-"19": {"qalqalah":[27,29,33,35,39,40],"wasl":[22,23,32,33]}
+"18": {"lam_shamsiyyah":[10,11],"qalqalah":[4,6],"hamzat_wasl":[9,10]},
+"19": {"qalqalah":[27,29,33,35,39,40],"hamzat_wasl":[22,23,32,33]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/97.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/97.json
index 31ad7ea..1127ea7 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/97.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/97.json
@@ -1,7 +1,7 @@
{
-"1": {"ghunnah":[42,45,50,53],"madd":[45,47,57,58],"qalqalah":[79,81],"wasl":[74,75]},
-"2": {"madd":[4,6,14,15],"qalqalah":[9,11,36,38],"wasl":[31,32]},
-"3": {"idgham":[24,29],"qalqalah":[14,16],"wasl":[9,10]},
-"4": {"ghunnah":[65,69],"idgham":[29,30,60,65],"madd":[17,19],"wasl":[10,11,28,29]},
-"5": {"madd":[4,5],"qalqalah":[23,25,35,37],"wasl":[30,31]}
+"1": {"ghunnah":[42,45],"ikhfa":[50,53],"madd_2":[57,58],"madd_munfasil":[45,47],"qalqalah":[79,81],"hamzat_wasl":[74,75]},
+"2": {"madd_2":[14,15],"madd_munfasil":[4,6],"qalqalah":[9,11,36,38],"hamzat_wasl":[31,32]},
+"3": {"idghaam_ghunnah":[24,29],"qalqalah":[14,16],"hamzat_wasl":[9,10]},
+"4": {"ikhfa":[65,69],"idghaam_shafawi":[60,65],"lam_shamsiyyah":[29,30],"madd_muttasil":[17,19],"hamzat_wasl":[10,11,28,29]},
+"5": {"madd_2":[4,5],"qalqalah":[23,25,35,37],"hamzat_wasl":[30,31]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/98.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/98.json
index 23dda78..efc9b3e 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/98.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/98.json
@@ -1,10 +1,10 @@
{
-"1": {"ghunnah":[113,116],"madd":[90,91],"silent":[68,70],"wasl":[51,52,83,84,96,97,144,145]},
-"2": {"idgham":[6,11,37,43],"silent":[29,31],"wasl":[14,15]},
-"3": {"ghunnah":[12,16]},
-"4": {"ghunnah":[56,59],"madd":[42,43,71,73],"silent":[32,34],"wasl":[16,17,35,36,82,83]},
-"5": {"idgham":[65,66,98,99,122,123],"madd":[4,6,13,15,79,81,105,106,129,130,137,138],"silent":[15,17,36,38,94,96,104,105,118,120,128,129],"wasl":[39,40,64,65,97,98,121,122,149,150]},
-"6": {"ghunnah":[2,5,80,83],"madd":[45,46,88,89,102,104,111,113],"silent":[23,25,107,109],"wasl":[6,7,38,39,51,52,129,130]},
-"7": {"ghunnah":[2,5],"idgham":[40,41],"madd":[44,45,49,50,59,61],"silent":[24,26,36,38,55,57],"wasl":[6,7,39,40,78,79]},
-"8": {"ghunnah":[15,18,31,34,43,47,55,59],"idgham":[104,110],"madd":[4,6,34,35,76,77,82,83,96,98,151,152],"qalqalah":[40,42,47,49],"silent":[139,141],"wasl":[67,68,115,116]}
+"1": {"ikhfa":[113,116],"madd_2":[90,91],"silent":[68,70],"hamzat_wasl":[51,52,83,84,96,97,144,145]},
+"2": {"idghaam_ghunnah":[6,11,37,43],"silent":[29,31],"hamzat_wasl":[14,15]},
+"3": {"ikhfa":[12,16]},
+"4": {"iqlab":[56,59],"madd_2":[42,43],"madd_muttasil":[71,73],"silent":[32,34],"hamzat_wasl":[16,17,35,36,82,83]},
+"5": {"lam_shamsiyyah":[65,66,98,99,122,123],"madd_2":[105,106,129,130,137,138],"madd_munfasil":[4,6,13,15],"madd_muttasil":[79,81],"silent":[15,17,36,38,94,96,104,105,118,120,128,129],"hamzat_wasl":[39,40,64,65,97,98,121,122,149,150]},
+"6": {"ghunnah":[2,5,80,83],"madd_2":[45,46,88,89],"madd_munfasil":[102,104],"madd_muttasil":[111,113],"silent":[23,25,107,109],"hamzat_wasl":[6,7,38,39,51,52,129,130]},
+"7": {"ghunnah":[2,5],"lam_shamsiyyah":[40,41],"madd_2":[44,45,49,50],"madd_muttasil":[59,61],"silent":[24,26,36,38,55,57],"hamzat_wasl":[6,7,39,40,78,79]},
+"8": {"ghunnah":[31,34],"ikhfa":[15,18,43,47,55,59],"idghaam_no_ghunnah":[104,110],"madd_2":[34,35,76,77,82,83,151,152],"madd_munfasil":[96,98],"madd_muttasil":[4,6],"qalqalah":[40,42,47,49],"silent":[139,141],"hamzat_wasl":[67,68,115,116]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/99.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/99.json
index 0df9a8f..c6aa6a9 100644
--- a/apps/web/public/assets/skins/hafs-kfqc/tajweed/99.json
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/99.json
@@ -1,10 +1,10 @@
{
-"1": {"wasl":[56,57]},
-"2": {"wasl":[13,14]},
-"3": {"ghunnah":[13,16],"madd":[16,17],"wasl":[8,9]},
-"4": {"ghunnah":[9,13]},
+"1": {"hamzat_wasl":[56,57]},
+"2": {"hamzat_wasl":[13,14]},
+"3": {"ikhfa":[13,16],"madd_2":[16,17],"hamzat_wasl":[8,9]},
+"4": {"ikhfa":[9,13]},
"5": {"ghunnah":[4,7]},
-"6": {"ghunnah":[22,25],"idgham":[9,13,21,22,37,43],"madd":[58,59],"silent":[49,51],"wasl":[20,21]},
-"7": {"idgham":[4,8,38,43]},
-"8": {"ghunnah":[31,35],"idgham":[4,8,37,42]}
+"6": {"ghunnah":[22,25],"idghaam_ghunnah":[9,13],"idghaam_no_ghunnah":[37,43],"lam_shamsiyyah":[21,22],"madd_2":[58,59],"silent":[49,51],"hamzat_wasl":[20,21]},
+"7": {"idghaam_ghunnah":[4,8,38,43]},
+"8": {"ikhfa":[31,35],"idghaam_ghunnah":[4,8,37,42]}
}
diff --git a/apps/web/public/assets/skins/hafs-kfqc/tajweed/rules.json b/apps/web/public/assets/skins/hafs-kfqc/tajweed/rules.json
new file mode 100644
index 0000000..9e15f5e
--- /dev/null
+++ b/apps/web/public/assets/skins/hafs-kfqc/tajweed/rules.json
@@ -0,0 +1,77 @@
+{
+ "source": "cpfair/quran-tajweed@496f71cd",
+ "rules": [
+ {
+ "id": "ghunnah",
+ "family": "ghunnah"
+ },
+ {
+ "id": "ikhfa",
+ "family": "ghunnah"
+ },
+ {
+ "id": "ikhfa_shafawi",
+ "family": "ghunnah"
+ },
+ {
+ "id": "iqlab",
+ "family": "ghunnah"
+ },
+ {
+ "id": "idghaam_ghunnah",
+ "family": "idgham"
+ },
+ {
+ "id": "idghaam_mutajanisayn",
+ "family": "idgham"
+ },
+ {
+ "id": "idghaam_mutaqaribayn",
+ "family": "idgham"
+ },
+ {
+ "id": "idghaam_no_ghunnah",
+ "family": "idgham"
+ },
+ {
+ "id": "idghaam_shafawi",
+ "family": "idgham"
+ },
+ {
+ "id": "lam_shamsiyyah",
+ "family": "idgham"
+ },
+ {
+ "id": "madd_2",
+ "family": "madd"
+ },
+ {
+ "id": "madd_246",
+ "family": "madd"
+ },
+ {
+ "id": "madd_munfasil",
+ "family": "madd"
+ },
+ {
+ "id": "madd_muttasil",
+ "family": "madd"
+ },
+ {
+ "id": "madd_6",
+ "family": "madd-lazim"
+ },
+ {
+ "id": "qalqalah",
+ "family": "qalqalah"
+ },
+ {
+ "id": "silent",
+ "family": "silent"
+ },
+ {
+ "id": "hamzat_wasl",
+ "family": "wasl"
+ }
+ ]
+}
diff --git a/apps/web/src/App.tsx b/apps/web/src/App.tsx
index 386222d..3ff476d 100644
--- a/apps/web/src/App.tsx
+++ b/apps/web/src/App.tsx
@@ -31,6 +31,7 @@ import {
type RootIndexShard,
type SkinId,
type TajweedShard,
+ type TajweedVocabulary,
} from "@hifth/core";
import {
loadManifest,
@@ -38,6 +39,7 @@ import {
loadRootBucket,
loadShard,
loadTajweedShard,
+ loadTajweedVocabulary,
} from "./assets";
import { applyFieldToDocument, fieldFromHash } from "./field";
import { recordLook } from "./revision-store";
@@ -534,19 +536,34 @@ export function App(): JSX.Element {
new Map(),
);
const requestedTajweed = useRef(new Set());
+ // The vocabulary the shards are written in. Separate state from the shards
+ // because it is fetched once and they are fetched per surah — and because the
+ // colour settings surface needs it whether or not any shard has landed: it
+ // renders one row per rule, so it needs the rule list, not the spans.
+ const [tajweedVocabulary, setTajweedVocabulary] = useState(null);
// Same rebuild-on-set pattern as `adjacency` and `roots`: a pure index over
// whatever has landed, so a shard arriving late re-paints the page without any
// imperative poke at the stage.
const tajweed = useMemo(() => {
if (!manifest) return null;
- const lens = new Tajweed(manifest.edition);
+ const lens = new Tajweed(manifest.edition, tajweedVocabulary ?? undefined);
for (const [surah, shard] of tajweedShards) lens.addShard(surah, shard);
return lens;
- }, [manifest, tajweedShards]);
+ }, [manifest, tajweedShards, tajweedVocabulary]);
+
+ // Fetched the moment the skin goes on, ahead of any shard: a shard whose rule
+ // ids nothing can interpret paints nothing, so this is the round trip that
+ // actually gates the first colour. Once, per session, ~500 bytes.
+ useEffect(() => {
+ if (!manifest || skin !== "tajweed" || tajweedVocabulary) return;
+ void loadTajweedVocabulary(manifest.edition).then((v) => {
+ if (v) setTajweedVocabulary(v);
+ });
+ }, [manifest, skin, tajweedVocabulary]);
// Fetched only once the skin is actually on, and only for surahs on screen —
- // all 114 shards are ~200KB gzipped, and a reader who never opens the skin
+ // all 114 shards are ~240KB gzipped, and a reader who never opens the skin
// should not pay a byte of it.
useEffect(() => {
if (!manifest || skin !== "tajweed") return;
diff --git a/apps/web/src/assets.ts b/apps/web/src/assets.ts
index cba8332..3d2b861 100644
--- a/apps/web/src/assets.ts
+++ b/apps/web/src/assets.ts
@@ -16,10 +16,11 @@ import type {
PackPlan,
RootIndexShard,
TajweedShard,
+ TajweedVocabulary,
WireManifest,
WordShard,
} from "@hifth/core";
-import { expandManifest, isCompactManifest } from "@hifth/core";
+import { expandManifest, isCompactManifest, parseTajweedVocabulary } from "@hifth/core";
import { packedResponse } from "./packs.js";
const BASE = import.meta.env.BASE_URL;
@@ -160,6 +161,28 @@ export function loadTajweedShard(
return json(`${BASE}assets/skins/${edition}/tajweed/${surah}.json`);
}
+/**
+ * Fetch the vocabulary the shards are written in — every rule id they can
+ * contain, and which of the seven families it paints as.
+ *
+ * Eighteen lines, fetched once per session, and nothing paints until it lands:
+ * a shard on its own is offsets keyed by strings this app has deliberately never
+ * been taught. That round trip is the price of the shards no longer carrying
+ * their own interpretation, and it buys the thing the old shape made impossible
+ * — knowing an ikhfa from a ghunnah on the far side of the build.
+ *
+ * Validated rather than cast, unlike the shards above, because it is the file
+ * everything else is interpreted through: a shard with a stray key paints one
+ * ayah oddly, a vocabulary with a stray family would paint a class nothing
+ * styles across the whole mus'haf. Quiet on a miss, like its neighbours.
+ */
+export async function loadTajweedVocabulary(
+ edition: string,
+): Promise {
+ const raw = await json(`${BASE}assets/skins/${edition}/tajweed/rules.json`);
+ return raw === null ? null : parseTajweedVocabulary(raw);
+}
+
/**
* Fetch one *page's* word-box shard (word-C). The only loader here keyed by page
* rather than by surah, because that is how the geometry is stored: a word box
diff --git a/apps/web/src/components/SkinToggle.test.tsx b/apps/web/src/components/SkinToggle.test.tsx
index 783149c..e382b46 100644
--- a/apps/web/src/components/SkinToggle.test.tsx
+++ b/apps/web/src/components/SkinToggle.test.tsx
@@ -1,15 +1,31 @@
import { describe, it, expect, vi } from "vitest";
import { render, screen, fireEvent } from "@testing-library/react";
-import { Tajweed, type TajweedRuleId, type TajweedShard } from "@hifth/core";
+import {
+ Tajweed,
+ type TajweedRuleId,
+ type TajweedShard,
+ type TajweedVocabulary,
+} from "@hifth/core";
import { SkinToggle, TajweedLegend } from "./SkinToggle";
+// Shards are keyed by the *source's* rule ids, and the vocabulary is what turns
+// them into the seven painted families — so a fixture needs both halves.
+const vocabulary: TajweedVocabulary = {
+ source: "test",
+ rules: [
+ { id: "madd_2", family: "madd" },
+ { id: "madd_6", family: "madd-lazim" },
+ { id: "hamzat_wasl", family: "wasl" },
+ ],
+};
+
const shard: TajweedShard = {
- "38": { madd: [24, 25], "madd-lazim": [61, 63] },
- "39": { wasl: [3, 4] },
+ "38": { madd_2: [24, 25], madd_6: [61, 63] },
+ "39": { hamzat_wasl: [3, 4] },
};
function lens(): Tajweed {
- const tj = new Tajweed("hafs-kfqc");
+ const tj = new Tajweed("hafs-kfqc", vocabulary);
tj.addShard(2, shard);
return tj;
}
diff --git a/package.json b/package.json
index 4ea1cdf..9749dee 100644
--- a/package.json
+++ b/package.json
@@ -39,19 +39,28 @@
"gate:revision-privacy": "node scripts/gate-revision-privacy.mjs",
"gate:use-cases": "node scripts/gate-use-cases.mjs",
"gate:issues": "node scripts/gate-issues.mjs",
+ "gate:decisions": "node scripts/gate-decisions.mjs",
"gate:quran-meta": "node scripts/gate-quran-meta.mjs",
+ "gate:tajweed": "node scripts/gate-tajweed.mjs",
"gate:i18n": "node scripts/gate-i18n.mjs",
"gate:params": "node scripts/gate-params.mjs",
"gate:gates": "node scripts/gate-gates.mjs",
- "gates": "pnpm gate:text-sources && pnpm gate:notext && pnpm gate:license && pnpm gate:license-copy && pnpm gate:validation && pnpm gate:verified-edges && pnpm gate:edges && pnpm gate:gates && pnpm gate:ci-artifacts && pnpm gate:golden-env && pnpm gate:golden-size && pnpm gate:assets && pnpm gate:pages && pnpm gate:words && pnpm gate:align && pnpm gate:map && pnpm gate:use-cases && pnpm gate:issues && pnpm gate:quran-meta && pnpm gate:revision-privacy && pnpm gate:i18n && pnpm gate:params && pnpm gate:budget",
+ "gates": "pnpm gate:text-sources && pnpm gate:notext && pnpm gate:license && pnpm gate:license-copy && pnpm gate:validation && pnpm gate:verified-edges && pnpm gate:edges && pnpm gate:gates && pnpm gate:ci-artifacts && pnpm gate:golden-env && pnpm gate:golden-size && pnpm gate:assets && pnpm gate:pages && pnpm gate:words && pnpm gate:align && pnpm gate:map && pnpm gate:use-cases && pnpm gate:issues && pnpm gate:decisions && pnpm gate:quran-meta && pnpm gate:tajweed && pnpm gate:revision-privacy && pnpm gate:i18n && pnpm gate:params && pnpm gate:budget",
"align": "node packages/etl/scripts/build-alignment.mjs",
"probe:ligature-print": "node packages/etl/scripts/probe-ligature-print.mjs",
"probe:word-registration": "node packages/etl/scripts/probe-word-registration.mjs",
"probe:tajweed-words": "node packages/etl/scripts/probe-tajweed-words.mjs",
"probe:encodings": "node packages/etl/scripts/probe-encodings.mjs",
"probe:diacritics": "node packages/etl/scripts/probe-diacritics.mjs",
+ "probe:mark-ink": "node packages/etl/scripts/probe-mark-ink.mjs",
+ "probe:mark-labels": "node packages/etl/scripts/probe-mark-labels.mjs",
+ "adjudicate:marks": "node packages/etl/scripts/build-mark-adjudication.mjs",
+ "adjudicate:score": "node packages/etl/scripts/score-mark-adjudication.mjs",
+ "nudge:marks": "node packages/etl/scripts/build-mark-nudge.mjs",
+ "nudge:score": "node packages/etl/scripts/score-mark-nudge.mjs",
"sample:edges": "node packages/etl/scripts/sample-edges.mjs",
"guide": "node scripts/build-validation-guide.mjs",
+ "session": "node scripts/session.mjs",
"record": "node scripts/record-validation.mjs",
"validate:auto": "node scripts/validate-auto.mjs",
"source-offer": "node scripts/check-source-offer.mjs",
@@ -60,7 +69,9 @@
"use-cases": "node scripts/gate-use-cases.mjs --list",
"use-cases:doc": "node scripts/build-use-cases.mjs",
"issues": "node scripts/gate-issues.mjs --list",
- "issues:doc": "node scripts/build-issues-doc.mjs"
+ "issues:doc": "node scripts/build-issues-doc.mjs",
+ "decisions": "node scripts/gate-decisions.mjs --list",
+ "decisions:doc": "node scripts/build-decisions-doc.mjs"
},
"pnpm": {
"overrides": {
diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts
index 02bc5e1..556569b 100644
--- a/packages/core/src/index.ts
+++ b/packages/core/src/index.ts
@@ -250,6 +250,8 @@ export {
tajweedMarkClass,
marksForAyah,
leadingRule,
+ parseTajweedVocabulary,
+ tajweedFamilyIndex,
geometrySignature,
type SkinId,
type TajweedRule,
@@ -257,6 +259,8 @@ export {
type TajweedShard,
type TajweedMark,
type TajweedLookup,
+ type TajweedVocabulary,
+ type TajweedVocabularyEntry,
} from "./skins.js";
// The print's own mark vocabulary — what the ligature corpus draws above and
diff --git a/packages/core/src/skins.test.ts b/packages/core/src/skins.test.ts
index 5a75a28..1ed7a33 100644
--- a/packages/core/src/skins.test.ts
+++ b/packages/core/src/skins.test.ts
@@ -12,7 +12,10 @@ import {
tajweedClass,
tajweedMarkClass,
tajweedRule,
+ parseTajweedVocabulary,
+ tajweedFamilyIndex,
type TajweedShard,
+ type TajweedVocabulary,
} from "./skins.js";
import type { AssetManifest } from "./types.js";
@@ -33,13 +36,39 @@ const manifest: AssetManifest = {
};
/**
- * Surah 2's shard, in the shape build-tajweed.mjs emits: flat `[start, end, …]`
- * codepoint spans. 2:38 carries four families (two madds), 2:39 only the common
- * one, 2:40 none the source covers.
+ * The vocabulary the shard below is written in — the same shape rules.json
+ * ships, trimmed to the rules this fixture uses. It is what turns the shard's
+ * keys into something paintable, and the reason it is a fixture at all is that
+ * @hifth/core deliberately does not know any source's rule list.
+ */
+const vocabulary: TajweedVocabulary = {
+ source: "test",
+ rules: [
+ { id: "hamzat_wasl", family: "wasl" },
+ { id: "madd_2", family: "madd" },
+ { id: "madd_munfasil", family: "madd" },
+ { id: "madd_6", family: "madd-lazim" },
+ { id: "qalqalah", family: "qalqalah" },
+ ],
+};
+const families = tajweedFamilyIndex(vocabulary);
+
+/**
+ * Surah 2's shard, in the shape build-tajweed.mjs emits: the source's own rule
+ * ids over flat `[start, end, …]` codepoint spans. 2:38 carries five rules that
+ * fold into four families — `madd_2` and `madd_munfasil` are two rules and one
+ * colour, which is the whole point of the widening and so is the case worth
+ * having in the fixture. 2:39 carries only the common one; 2:40 none.
*/
const shard: TajweedShard = {
- "38": { wasl: [7, 8], madd: [24, 25, 51, 53], qalqalah: [30, 31], "madd-lazim": [61, 63] },
- "39": { wasl: [3, 4] },
+ "38": {
+ hamzat_wasl: [7, 8],
+ madd_2: [24, 25],
+ madd_munfasil: [51, 53],
+ qalqalah: [30, 31],
+ madd_6: [61, 63],
+ },
+ "39": { hamzat_wasl: [3, 4] },
"40": {},
};
@@ -104,35 +133,83 @@ describe("tajweed rule registry", () => {
});
describe("marks", () => {
- it("reads an ayah's rules in registry order, dropping unknown ids", () => {
- const marks = marksForAyah({ "38": { qalqalah: [4, 5], madd: [2, 3], bogus: [1, 2] } }, 38);
+ it("reads an ayah's rules in registry order, dropping ids the vocabulary lacks", () => {
+ const marks = marksForAyah(
+ { "38": { qalqalah: [4, 5], madd_2: [2, 3], bogus: [1, 2] } },
+ 38,
+ families,
+ );
expect(marks.map((m) => m.rule.id)).toEqual(["madd", "qalqalah"]);
expect(marks[0]!.count).toBe(1); // one span == one occurrence, not two numbers
expect(marks[0]!.spans).toEqual([2, 3]);
});
it("counts occurrences, not offsets", () => {
- expect(marksForAyah(shard, 38).find((m) => m.rule.id === "madd")!.count).toBe(2);
+ expect(marksForAyah(shard, 38, families).find((m) => m.rule.id === "madd")!.count).toBe(2);
+ });
+
+ it("folds two source rules into one family and keeps both names", () => {
+ // The whole reason for the widening: `madd_2` and `madd_munfasil` are one
+ // colour on the page and two different rules to a reciter. The old shard
+ // shape could express the first and had thrown away the second.
+ const madd = marksForAyah(shard, 38, families).find((m) => m.rule.id === "madd")!;
+ expect(madd.sources).toEqual(["madd_2", "madd_munfasil"]);
+ // Merged ascending, not concatenated in whatever order the keys arrived.
+ expect(madd.spans).toEqual([24, 25, 51, 53]);
});
it("is empty for an unknown or rule-less ayah rather than guessing", () => {
- expect(marksForAyah(shard, 99)).toEqual([]);
- expect(marksForAyah(shard, 40)).toEqual([]);
+ expect(marksForAyah(shard, 99, families)).toEqual([]);
+ expect(marksForAyah(shard, 40, families)).toEqual([]);
+ });
+
+ it("paints nothing at all until the vocabulary lands", () => {
+ // A shard on its own is offsets keyed by strings this package has
+ // deliberately never been taught. Nothing, rather than a guess.
+ expect(marksForAyah(shard, 38, new Map())).toEqual([]);
});
it("marks an ayah with its most DISTINCTIVE rule, not its most common one", () => {
// 2:38 has a madd (91.5% of ayahs do) and a madd lāzim (2.1% do). The mark
// must be the latter — see the coverage table in TAJWEED_RULES.
- expect(leadingRule(marksForAyah(shard, 38))?.id).toBe("madd-lazim");
- expect(leadingRule(marksForAyah(shard, 39))?.id).toBe("wasl");
+ expect(leadingRule(marksForAyah(shard, 38, families))?.id).toBe("madd-lazim");
+ expect(leadingRule(marksForAyah(shard, 39, families))?.id).toBe("wasl");
expect(leadingRule([])).toBeNull();
});
});
+describe("the vocabulary", () => {
+ it("accepts what the ETL writes", () => {
+ const parsed = parseTajweedVocabulary({
+ source: "cpfair/quran-tajweed@496f71cd",
+ rules: [{ id: "ikhfa", family: "ghunnah" }],
+ });
+ expect(parsed?.rules).toEqual([{ id: "ikhfa", family: "ghunnah" }]);
+ });
+
+ it("refuses a family @hifth/core could not paint", () => {
+ // The failure this rejects is a class nothing styles, applied across the
+ // whole mus'haf — silent, and invisible until somebody turns the skin on.
+ expect(parseTajweedVocabulary({ source: "x", rules: [{ id: "a", family: "tafkhim" }] })).toBeNull();
+ });
+
+ it("refuses a duplicate id, an empty list, and anything that is not one", () => {
+ const dup = [
+ { id: "ikhfa", family: "ghunnah" },
+ { id: "ikhfa", family: "madd" },
+ ];
+ expect(parseTajweedVocabulary({ source: "x", rules: dup })).toBeNull();
+ expect(parseTajweedVocabulary({ source: "x", rules: [] })).toBeNull();
+ expect(parseTajweedVocabulary({ rules: [] })).toBeNull();
+ expect(parseTajweedVocabulary(null)).toBeNull();
+ expect(parseTajweedVocabulary("{}")).toBeNull();
+ });
+});
+
describe("Tajweed lens", () => {
let tj: Tajweed;
beforeEach(() => {
- tj = new Tajweed("hafs-kfqc");
+ tj = new Tajweed("hafs-kfqc", vocabulary);
tj.addShard(2, shard);
});
@@ -185,7 +262,7 @@ describe("Highlighter.setSkin", () => {
document.body.innerHTML = "";
svg = makeSvg();
hl = new Highlighter(svg, resolver, 7);
- tj = new Tajweed("hafs-kfqc");
+ tj = new Tajweed("hafs-kfqc", vocabulary);
tj.addShard(2, shard);
});
@@ -237,7 +314,7 @@ describe("Highlighter.setSkin", () => {
});
it("re-applies with the remembered lookup when a shard lands later", () => {
- const late = new Tajweed("hafs-kfqc");
+ const late = new Tajweed("hafs-kfqc", vocabulary);
hl.setSkin("tajweed", late.lookup);
expect(svg.querySelector("#verse-45")!.getAttribute("data-tj")).toBeNull();
late.addShard(2, shard);
@@ -269,7 +346,7 @@ describe("Highlighter.setSkin", () => {
const poly = svg.querySelector("#verse-46")!;
// 2:39 does have one rule; add a page whose ayah has none by clearing it.
expect(poly.getAttribute("data-tj")).toBe("wasl");
- const bare = new Tajweed("hafs-kfqc");
+ const bare = new Tajweed("hafs-kfqc", vocabulary);
bare.addShard(2, { "38": {}, "39": {} });
hl.setSkin("tajweed", bare.lookup);
expect(poly.getAttribute("data-tj")).toBeNull();
diff --git a/packages/core/src/skins.ts b/packages/core/src/skins.ts
index cf9da9b..d8d68ee 100644
--- a/packages/core/src/skins.ts
+++ b/packages/core/src/skins.ts
@@ -128,8 +128,9 @@ export function tajweedMarkClass(id: TajweedRuleId): string {
/* ------------------------------------------------------------------ */
/**
- * One surah's tajweed shard: ayah number (as a string key) → rule id → a FLAT
- * list of `[start, end, start, end, …]` character spans, ascending by start.
+ * One surah's tajweed shard: ayah number (as a string key) → the *source's own*
+ * rule id → a FLAT list of `[start, end, start, end, …]` character spans,
+ * ascending by start.
*
* The offsets are codepoint offsets *within that ayah's* Uthmani text, kept
* exactly as the source publishes them so the shard is a lossless projection of
@@ -139,18 +140,90 @@ export function tajweedMarkClass(id: TajweedRuleId): string {
* until then the only thing read off them is how many times a rule occurs —
* which is why they are stored anyway rather than collapsed to a count. Throwing
* them away would make the shards cheaper to ship and impossible to grow.
+ *
+ * **The keys are the source's vocabulary, not this file's.** They used to be the
+ * seven family ids below, which meant a span reached the reader having forgotten
+ * whether it was an ikhfa or a ghunnah — a collapse that happened at build time
+ * and could not be undone on the far side of it. It now happens when the page is
+ * painted, so a reader who wants those two coloured differently can have that,
+ * and a legend can count what it actually saw. Which family a rule paints as is
+ * data, shipped beside the shards: {@link TajweedVocabulary}.
*/
export interface TajweedShard {
readonly [ayah: string]: { readonly [rule: string]: readonly number[] };
}
-/** One rule's presence on one ayah. */
+/**
+ * The vocabulary the shards are written in: every rule id they can contain, and
+ * which of the seven families it paints as.
+ *
+ * This exists so that {@link TajweedRuleId} can stay what its comment claims —
+ * the families Hifth *colours*, and not the rule list of any one source. The ETL
+ * knows its source's vocabulary because that is its job; this file only learns
+ * it at runtime, from the same build that wrote the spans. A source that splits
+ * madd four ways and one that splits it once then differ in a data file rather
+ * than in three packages.
+ */
+export interface TajweedVocabulary {
+ /** Where the vocabulary came from, for the colophon. Never parsed. */
+ readonly source: string;
+ readonly rules: readonly TajweedVocabularyEntry[];
+}
+
+/** One rule the shards may use, and the family it is painted as. */
+export interface TajweedVocabularyEntry {
+ /** The source's own id, e.g. `idghaam_shafawi`. A shard key. */
+ readonly id: string;
+ /** The family it collapses into — what actually gets a colour. */
+ readonly family: TajweedRuleId;
+}
+
+/**
+ * Validate a fetched `rules.json` into a vocabulary, or null if it is not one.
+ *
+ * Null rather than a throw, for the reason every loader in this feature returns
+ * null: the skin is an enhancement. A vocabulary that fails to parse means the
+ * page stays plain, not that the app stops.
+ */
+export function parseTajweedVocabulary(value: unknown): TajweedVocabulary | null {
+ if (typeof value !== "object" || value === null) return null;
+ const raw = value as { source?: unknown; rules?: unknown };
+ if (typeof raw.source !== "string" || !Array.isArray(raw.rules)) return null;
+ const rules: TajweedVocabularyEntry[] = [];
+ const seen = new Set();
+ for (const entry of raw.rules) {
+ if (typeof entry !== "object" || entry === null) return null;
+ const { id, family } = entry as { id?: unknown; family?: unknown };
+ if (typeof id !== "string" || id.length === 0 || seen.has(id)) return null;
+ if (typeof family !== "string" || !isTajweedRuleId(family)) return null;
+ seen.add(id);
+ rules.push({ id, family });
+ }
+ if (rules.length === 0) return null;
+ return { source: raw.source, rules };
+}
+
+/** Rule id → family, for the hot path. Built once per vocabulary. */
+export function tajweedFamilyIndex(
+ vocabulary: TajweedVocabulary,
+): ReadonlyMap {
+ return new Map(vocabulary.rules.map((r) => [r.id, r.family]));
+}
+
+/** One family's presence on one ayah — what paints, and what the legend counts. */
export interface TajweedMark {
readonly rule: TajweedRule;
/** Flat `[start, end, …]` character spans carrying the rule (see {@link TajweedShard}). */
readonly spans: readonly number[];
/** Occurrences, i.e. `spans.length / 2` — the legend counts, the list doesn't. */
readonly count: number;
+ /**
+ * The source rule ids that folded into this family here, in shard order.
+ * Usually one; `ghunnah` on a busy ayah can be three. This is the half the old
+ * shard shape threw away, and it is the whole reason for the widening: it is
+ * what lets a surface say "ikhfa, twice" rather than "ghunnah, twice".
+ */
+ readonly sources: readonly string[];
}
/**
@@ -166,15 +239,52 @@ export function leadingRule(marks: readonly TajweedMark[]): TajweedRule | null {
return best;
}
-/** Marks for one ayah out of a shard, in registry order. Unknown ids are dropped. */
-export function marksForAyah(shard: TajweedShard, ayah: number): TajweedMark[] {
+/**
+ * Marks for one ayah out of a shard, folded into families, in registry order.
+ *
+ * `families` maps the shard's rule ids to the seven — {@link tajweedFamilyIndex}
+ * over the vocabulary shipped beside the shards. A rule id the vocabulary does
+ * not know is **dropped**, silently and on purpose: the two files come out of
+ * one build and cannot disagree at rest, but an offline reader can hold a cached
+ * shard from one build and a vocabulary from the next, and the right behaviour
+ * there is to paint what is understood rather than to fail the page. Build time
+ * is where an unknown rule is an error, and build-tajweed.mjs throws on one.
+ *
+ * The merged spans stay ascending: each rule's own spans already are, and rules
+ * within a family are merged in shard order, which is not the same thing — so
+ * they are re-sorted as pairs rather than concatenated. A legend counting
+ * occurrences would not notice; anything that later walks the spans to light a
+ * letter would.
+ */
+export function marksForAyah(
+ shard: TajweedShard,
+ ayah: number,
+ families: ReadonlyMap,
+): TajweedMark[] {
const entry = shard[String(ayah)];
if (!entry) return [];
+
+ const byFamily = new Map();
+ for (const [id, spans] of Object.entries(entry)) {
+ const family = families.get(id);
+ if (!family || !spans || spans.length === 0) continue;
+ let bucket = byFamily.get(family);
+ if (!bucket) byFamily.set(family, (bucket = { pairs: [], sources: [] }));
+ for (let i = 0; i + 1 < spans.length; i += 2) bucket.pairs.push([spans[i]!, spans[i + 1]!]);
+ bucket.sources.push(id);
+ }
+
const marks: TajweedMark[] = [];
for (const rule of TAJWEED_RULES) {
- const spans = entry[rule.id];
- if (!spans || spans.length === 0) continue;
- marks.push({ rule, spans, count: spans.length >> 1 });
+ const bucket = byFamily.get(rule.id);
+ if (!bucket || bucket.pairs.length === 0) continue;
+ bucket.pairs.sort((a, b) => a[0]! - b[0]! || a[1]! - b[1]!);
+ marks.push({
+ rule,
+ spans: bucket.pairs.flat(),
+ count: bucket.pairs.length,
+ sources: bucket.sources,
+ });
}
return marks;
}
@@ -204,9 +314,35 @@ function refOf(key: string, edition: string): [number, number] | null {
export class Tajweed {
readonly edition: string;
private readonly shards = new Map();
+ private vocabulary: TajweedVocabulary | null = null;
+ private families: ReadonlyMap = new Map();
- constructor(edition: string) {
+ /**
+ * `vocabulary` may arrive later than construction — it is a fetch, like the
+ * shards — and until it does, nothing paints. That is one round trip standing
+ * in front of the first colour, and it is the price of the shards no longer
+ * carrying their own interpretation. It is paid once per session, against a
+ * file of eighteen lines, and only by a reader who turned the skin on.
+ */
+ constructor(edition: string, vocabulary?: TajweedVocabulary) {
this.edition = edition;
+ if (vocabulary) this.setVocabulary(vocabulary);
+ }
+
+ /** Teach the lens which rule ids the shards use, and what each one paints as. */
+ setVocabulary(vocabulary: TajweedVocabulary): void {
+ this.vocabulary = vocabulary;
+ this.families = tajweedFamilyIndex(vocabulary);
+ }
+
+ /** True once the vocabulary has landed — i.e. once a shard could mean anything. */
+ get ready(): boolean {
+ return this.vocabulary !== null;
+ }
+
+ /** The rule ids the shards may use, in the order the build wrote them. */
+ get rules(): readonly TajweedVocabularyEntry[] {
+ return this.vocabulary?.rules ?? [];
}
/** Add (or replace) one surah's shard. */
@@ -224,7 +360,27 @@ export class Tajweed {
const ref = refOf(key, this.edition);
if (!ref) return [];
const shard = this.shards.get(ref[0]);
- return shard ? marksForAyah(shard, ref[1]) : [];
+ return shard ? marksForAyah(shard, ref[1], this.families) : [];
+ }
+
+ /**
+ * Rule id → how many ayahs among `keys` carry it — the same question
+ * {@link countsForKeys} answers, one grain finer.
+ *
+ * Kept separate rather than folded in, because the two answer different
+ * questions and mixing them would misinform: the family counts say what the
+ * page is *painted* in, the rule counts say what is *there*. An ayah with an
+ * ikhfa and an iqlab is one ghunnah ayah and two rule occurrences, and both
+ * numbers are correct.
+ */
+ ruleCountsForKeys(keys: readonly string[]): Map {
+ const counts = new Map();
+ for (const key of keys) {
+ for (const mark of this.marksForKey(key)) {
+ for (const id of mark.sources) counts.set(id, (counts.get(id) ?? 0) + 1);
+ }
+ }
+ return counts;
}
/**
diff --git a/packages/etl/data/tajweed/PROVENANCE.md b/packages/etl/data/tajweed/PROVENANCE.md
index 51fb491..ead8d64 100644
--- a/packages/etl/data/tajweed/PROVENANCE.md
+++ b/packages/etl/data/tajweed/PROVENANCE.md
@@ -80,6 +80,41 @@
with its *rarest* rule rather than its first. `lam_shamsiyyah` sits under
`idgham` because إدغام الشمسية is an idgham; `iqlab` and both `ikhfa` sit under
`ghunnah` because all three are realised as a nasalisation.
+- **The fold happens when the page is painted, not when the bytes are written.**
+ Until 2026-08-08 the shards were keyed by the seven families above and the
+ eighteen names were discarded at build time — so nothing downstream could tell
+ an ikhfa from an iqlab, and `idghaam_mutaqaribayn` (13 occurrences in the whole
+ mus'haf) was indistinguishable from the 64.5% of ayahs carrying *some* idgham.
+ The shards now carry the source's own ids, `tajweed/rules.json` carries the
+ mapping as data, and `marksForAyah` in core applies it at read time. It costs
+ **+17.5% gzipped** across the 114 shards (205.8 → 241.7 KB; the largest, al-
+ Baqarah, moves 14.8 → 17.3 KB gz against a 50 KB budget) and it is what makes a
+ reader-editable palette and any finer legend possible at all.
+
+ | source rule | occurrences | ayahs | % of ayahs |
+ |---|---:|---:|---:|
+ | `hamzat_wasl` | 13,252 | 4,749 | 76.2% |
+ | `madd_246` | 4,543 | 4,543 | 72.9% |
+ | `madd_2` | 9,028 | 4,160 | 66.7% |
+ | `ghunnah` | 4,946 | 3,104 | 49.8% |
+ | `ikhfa` | 5,301 | 2,994 | 48.0% |
+ | `qalqalah` | 3,834 | 2,641 | 42.4% |
+ | `idghaam_ghunnah` | 3,933 | 2,510 | 40.3% |
+ | `silent` | 4,174 | 2,307 | 37.0% |
+ | `madd_munfasil` | 3,172 | 2,120 | 34.0% |
+ | `lam_shamsiyyah` | 2,733 | 2,013 | 32.3% |
+ | `madd_muttasil` | 1,997 | 1,486 | 23.8% |
+ | `idghaam_no_ghunnah` | 1,035 | 905 | 14.5% |
+ | `idghaam_shafawi` | 832 | 718 | 11.5% |
+ | `iqlab` | 562 | 506 | 8.1% |
+ | `ikhfa_shafawi` | 496 | 453 | 7.3% |
+ | `madd_6` | 148 | 128 | 2.1% |
+ | `idghaam_mutajanisayn` | 58 | 56 | 0.9% |
+ | `idghaam_mutaqaribayn` | 13 | 13 | 0.2% |
+
+ The family percentages above are **not** the sum of their rules' — an ayah with
+ four madds is one madd ayah — which is why both tables are measured rather than
+ one derived from the other.
- **Two parsing facts worth knowing** (both handled in `build-tajweed.mjs`):
1. **The README's rule names are wrong in two places.** It lists
`idghaam_mutajaanisain` and `idghaam_mutaqaaribain`; the data emits
diff --git a/packages/etl/scripts/build-mark-adjudication.mjs b/packages/etl/scripts/build-mark-adjudication.mjs
new file mode 100644
index 0000000..527dc26
--- /dev/null
+++ b/packages/etl/scripts/build-mark-adjudication.mjs
@@ -0,0 +1,414 @@
+/**
+ * Builds the page a person sits down with: one mark at a time, two rectangles,
+ * pick the one that is on it.
+ *
+ * ## What this is for
+ *
+ * The placement measurement says the rectangles the app holds are displaced, and
+ * proposes moving each page's by a measured amount. It is a machine agreeing
+ * with itself: the same code decided the boxes were wrong and decided where they
+ * should go instead. Before that correction ships, somebody who is not this code
+ * has to be able to see the difference — and "see" has to mean something
+ * stronger than looking at the machine's own picture and nodding.
+ *
+ * So this page never shows a verdict, never says which rectangle came from
+ * where, and never says whether the last answer was right. It shows ink and two
+ * rectangles. What comes out is a count, and a count is evidence.
+ *
+ * ## What it will not do
+ *
+ * It will not tell you how you are doing while you work. Feedback after each
+ * trial would teach the pattern — the correction is in the same direction on
+ * every page — and by the fortieth trial the person would be reporting what they
+ * had learned rather than what they could see. The scoring is a separate script,
+ * run afterwards, on a file this page hands back.
+ *
+ * ## Running it
+ *
+ * node packages/etl/scripts/build-mark-adjudication.mjs [--count 100] [--seed 11]
+ *
+ * Then open the page it names, work it, and save the ruling it offers at the
+ * end. Score it with `score-mark-adjudication.mjs`.
+ */
+import { mkdirSync, readFileSync, writeFileSync } from "node:fs";
+import { dirname, join } from "node:path";
+import { fileURLToPath } from "node:url";
+import { planSession, readers, windowFor } from "./lib/adjudication.mjs";
+
+const HERE = dirname(fileURLToPath(import.meta.url));
+const ETL = join(HERE, "..");
+
+const argv = process.argv.slice(2);
+const arg = (k, d) => {
+ const i = argv.indexOf(k);
+ return i >= 0 && argv[i + 1] ? argv[i + 1] : d;
+};
+
+const seed = Number(arg("--seed", 11));
+const count = Number(arg("--count", 100));
+const shiftPath = arg("--shift", join(ETL, "out", "mark-shift.json"));
+const outPath = arg("--out", join(ETL, "out", "mark-adjudication.html"));
+/** How wide a panel is drawn, in pixels. Big enough that a unit is not a hair. */
+const PANEL = Number(arg("--panel", 420));
+
+const shiftText = readFileSync(shiftPath, "utf8");
+const shift = JSON.parse(shiftText);
+
+/**
+ * A fingerprint of the displacements this session was built from.
+ *
+ * The scorer rebuilds the answers from the seed and this same file. If the file
+ * has been re-measured in between, the answers it rebuilds are answers to
+ * different questions, and every number it prints would be quietly wrong. Cheap
+ * to carry, and it turns a silent mismatch into a refusal.
+ */
+function fingerprint(s) {
+ let h = 0x811c9dc5;
+ for (let i = 0; i < s.length; i += 1) {
+ h ^= s.charCodeAt(i);
+ h = Math.imul(h, 0x01000193);
+ }
+ return (h >>> 0).toString(16).padStart(8, "0");
+}
+
+const n2 = (v) => Math.round(v * 100) / 100;
+const esc = (s) => String(s).replace(/[<>&"]/g, (c) => ({ "<": "<", ">": ">", "&": "&", '"': """ })[c]);
+
+/**
+ * One panel: the shipped page's own outlines, clipped to the window, and a
+ * rectangle.
+ *
+ * Deliberately *not* the drawing the evidence page uses. That one traces the
+ * other print's outline in green exactly where the corrected rectangle goes,
+ * which on this page would be the answer printed beside the question. Here there
+ * is ink and one plain rectangle, and nothing else to read.
+ */
+function panel(trial, shapes, slot) {
+ const [x, y, w, h] = trial.box;
+ const side = windowFor(trial.box);
+ const [jx, jy] = trial.jitter;
+ const vx = x + w / 2 - side / 2 + jx;
+ const vy = y + h / 2 - side / 2 + jy;
+ const parts = [];
+ for (const s of shapes) {
+ const ds = [];
+ for (const ring of s.rings) {
+ let lo = Infinity;
+ let hi = -Infinity;
+ let loy = Infinity;
+ let hiy = -Infinity;
+ for (let i = 0; i < ring.length; i += 2) {
+ if (ring[i] < lo) lo = ring[i];
+ if (ring[i] > hi) hi = ring[i];
+ if (ring[i + 1] < loy) loy = ring[i + 1];
+ if (ring[i + 1] > hiy) hiy = ring[i + 1];
+ }
+ if (hi < vx || lo > vx + side || hiy < vy || loy > vy + side) continue;
+ let d = `M${n2(ring[0])} ${n2(ring[1])}`;
+ for (let i = 2; i < ring.length; i += 2) d += `L${n2(ring[i])} ${n2(ring[i + 1])}`;
+ ds.push(`${d}Z`);
+ }
+ if (ds.length) parts.push(` `);
+ }
+ const [dx, dy] = trial.slots[slot];
+ return (
+ `` +
+ parts.join("") +
+ ` ` +
+ " "
+ );
+}
+
+const t0 = Date.now();
+const { trials, skippedForInk, pages } = planSession({ seed, count, shifts: shift.shifts });
+
+const inks = new Map();
+for (const p of new Set(trials.map((t) => t.page))) inks.set(p, readers.inkFor(p));
+
+/**
+ * The trials as the page holds them: what to draw, and nothing about which is
+ * which. Kind and answer are dropped here, on purpose — not hidden behind a
+ * flag, not commented out, absent. Anyone can view the source of this page and
+ * find nothing in it worth finding.
+ */
+const cards = trials
+ .map((t) => {
+ const shapes = inks.get(t.page);
+ return `
+
+A ${panel(t, shapes, 0)}
+B ${panel(t, shapes, 1)}
+
+page ${t.page} · ${t.surah}:${t.aya}
+ `;
+ })
+ .join("\n");
+
+const head = {
+ built: new Date().toISOString(),
+ seed,
+ count: trials.length,
+ pages,
+ shiftRan: shift.ran,
+ shiftFingerprint: fingerprint(shiftText),
+ /**
+ * What this build of the page asked for, so a ruling can say which questions it
+ * was in a position to answer.
+ *
+ * Without it, a ruling worked before the second question existed would score as
+ * "nobody ever said a rectangle failed to close around its mark" — a strong claim
+ * about the boxes, produced entirely by a page that had no way to say otherwise.
+ * That is the exact shape of quiet lie the rest of this check is built to avoid,
+ * so the scorer is told what was on the screen rather than left to assume.
+ */
+ asks: ["choice", "neither"],
+};
+
+const html = `Hifth — which box is on the mark?
+
+Which box is on the mark?
+
+
+
What are you being asked to do?
+
You will see one small piece of a page of the mus'haf, twice, side by side. Each
+copy has one red rectangle drawn on it, and usually one of the two sits where a
+rectangle ought to sit — closed around a single vowel or mark — while the other sits
+somewhere else. Pick the one that looks right.
+
+
Why does it matter which one you pick?
+
The app draws these rectangles to point at a mark when a reader taps it. Our own
+measurement says the ones it draws today are slightly off, and proposes moving them.
+Nothing here tells you which rectangle is which, so if the proposed move is a real
+improvement you will pick it much more often than half the time, and if it is not you
+will not. That count is the only thing that decides this.
+
+
What if you cannot tell them apart?
+
Say so. Some of these are genuinely too close to call, and a few are the same
+rectangle twice with no right answer at all — those are there to check that the
+answers mean something. Guessing to avoid saying "can't tell" makes the result worse,
+not better.
+
+
What if neither rectangle closes around the mark?
+
That happens, and it is worth saying out loud rather than swallowing: a rectangle can
+be in the right place and still be the wrong size, so the mark pokes out of both copies.
+Tick neither closes around it , and then still pick whichever of the two is
+closer — that is a separate question and it does still have an answer.
+
Keeping them separate is the whole reason there is a tick rather than a fourth button.
+Where the rectangle sits and how big it is are two different faults with two different
+repairs, and a single button that meant "wrong somehow" would blend them into one number
+that could not be acted on. The tick is counted on its own, and it never costs the trial.
+
+
How long does it take, and can you stop?
+
${trials.length} of them, and about ${Math.max(2, Math.round(trials.length * 0.12))} minutes if you
+do not linger. Your place is kept in this browser, so you can close the page and come back. You will
+not be told how you are doing until the end, and even then not whether any single
+answer was right — being told would teach you the pattern, and then you would be
+reporting the pattern instead of what you can see.
+
+
Keys
+
A or ← for the left, B or → for the right,
+space for can't tell, N to say neither closes around it.
+
Start
+
+
+
+
+
+Which rectangle is on the mark?
+${cards}
+
+A ←
+Can't tell space
+B →
+
+
+Neither closes around it N
+
+If the mark pokes out of both rectangles, tick that first — then still say which
+of the two is closer.
+
+
+
+
That is all of them — thank you.
+
Save the file below and hand it to whoever asked you to do this. It holds your
+answers and nothing else; the score is worked out separately, from the same recipe
+that built this page.
+
Save the ruling
+
+
+
+
+
+
+`;
+
+mkdirSync(dirname(outPath), { recursive: true });
+writeFileSync(outPath, html);
+
+process.stdout.write(
+ `${trials.length} trials over ${pages} pages · seed ${seed} · displacements ${shift.ran} (${head.shiftFingerprint})\n` +
+ `${skippedForInk} marks passed over for too little ink under the corrected box\n` +
+ `${(html.length / 1e6).toFixed(1)} MB in ${((Date.now() - t0) / 1000).toFixed(1)}s → ${outPath}\n`,
+);
diff --git a/packages/etl/scripts/build-mark-nudge.mjs b/packages/etl/scripts/build-mark-nudge.mjs
new file mode 100644
index 0000000..c72fb61
--- /dev/null
+++ b/packages/etl/scripts/build-mark-nudge.mjs
@@ -0,0 +1,472 @@
+/**
+ * Builds the other page: one mark, one rectangle in the wrong place, and a
+ * reader who drags it to where it belongs.
+ *
+ * ## Why there is a second instrument at all
+ *
+ * The forced-choice page can settle one thing — is the corrected rectangle
+ * preferred to the one that ships? — and it settles it well, because two
+ * unlabelled panels give a person nothing to agree with. What it cannot do is
+ * say *by how much*, or *in which direction the correction is still wrong*,
+ * because the only two answers on offer are the two we thought of. If our
+ * proposed move is right in direction and short by a third, every trial says
+ * yes and no trial says short.
+ *
+ * This asks it the other way round. Nothing to choose between; a rectangle that
+ * starts plainly displaced, and a hand that puts it where it goes. Where it
+ * lands is a measurement in page units, and subtracting our correction from it
+ * leaves the residual — the number that would actually change the boxes.
+ *
+ * ## Why it is not a button on the other page
+ *
+ * Because dragging a box into place inside a two-panel trial *is* the answer
+ * key. Whichever of the two starting positions the landing is nearer is, by
+ * construction, the one we called right, and the blinding that makes the count
+ * evidence is gone. Offering the drag *after* the answer leaks nearly as badly
+ * over a session: the correction points the same way on almost every page, so a
+ * reader learns its direction long before the trials run out and spends the rest
+ * of the hour reporting the rule rather than the ink.
+ *
+ * ## What this page still will not do
+ *
+ * Tell you how you are doing. No target, no snapping, no "close!", no verdict at
+ * the end beyond a count of what you placed. It does not know the answer: the
+ * correction is stripped out of the trials before they reach the page, and only
+ * the scorer ever puts it back.
+ *
+ * ## Running it
+ *
+ * node packages/etl/scripts/build-mark-nudge.mjs [--count 60] [--seed 23]
+ *
+ * Then open the page it names, place them, and save the file it offers at the
+ * end. Read it with `score-mark-nudge.mjs`.
+ */
+import { mkdirSync, readFileSync, writeFileSync } from "node:fs";
+import { dirname, join } from "node:path";
+import { fileURLToPath } from "node:url";
+import { planNudge, readers, windowFor } from "./lib/adjudication.mjs";
+
+const HERE = dirname(fileURLToPath(import.meta.url));
+const ETL = join(HERE, "..");
+
+const argv = process.argv.slice(2);
+const arg = (k, d) => {
+ const i = argv.indexOf(k);
+ return i >= 0 && argv[i + 1] ? argv[i + 1] : d;
+};
+
+const seed = Number(arg("--seed", 23));
+const count = Number(arg("--count", 60));
+const shiftPath = arg("--shift", join(ETL, "out", "mark-shift.json"));
+const outPath = arg("--out", join(ETL, "out", "mark-nudge.html"));
+/** How wide the panel is drawn, in pixels. One page unit is then ~21 px. */
+const PANEL = Number(arg("--panel", 460));
+
+const shiftText = readFileSync(shiftPath, "utf8");
+const shift = JSON.parse(shiftText);
+
+/**
+ * A fingerprint of the displacements this session was built from — the same
+ * guard the forced choice carries, for the same reason. The scorer rebuilds the
+ * session from the seed and this file, and if it has been re-measured in between
+ * then every residual it prints is a subtraction of the wrong number.
+ */
+function fingerprint(s) {
+ let h = 0x811c9dc5;
+ for (let i = 0; i < s.length; i += 1) {
+ h ^= s.charCodeAt(i);
+ h = Math.imul(h, 0x01000193);
+ }
+ return (h >>> 0).toString(16).padStart(8, "0");
+}
+
+const n2 = (v) => Math.round(v * 100) / 100;
+const esc = (s) => String(s).replace(/[<>&"]/g, (c) => ({ "<": "<", ">": ">", "&": "&", '"': """ })[c]);
+
+/** The page's own outlines, clipped to the window. Ink and nothing else. */
+function inkPaths(shapes, vx, vy, side) {
+ const parts = [];
+ for (const s of shapes) {
+ const ds = [];
+ for (const ring of s.rings) {
+ let lo = Infinity;
+ let hi = -Infinity;
+ let loy = Infinity;
+ let hiy = -Infinity;
+ for (let i = 0; i < ring.length; i += 2) {
+ if (ring[i] < lo) lo = ring[i];
+ if (ring[i] > hi) hi = ring[i];
+ if (ring[i + 1] < loy) loy = ring[i + 1];
+ if (ring[i + 1] > hiy) hiy = ring[i + 1];
+ }
+ if (hi < vx || lo > vx + side || hiy < vy || loy > vy + side) continue;
+ let d = `M${n2(ring[0])} ${n2(ring[1])}`;
+ for (let i = 2; i < ring.length; i += 2) d += `L${n2(ring[i])} ${n2(ring[i + 1])}`;
+ ds.push(`${d}Z`);
+ }
+ if (ds.length) parts.push(` `);
+ }
+ return parts.join("");
+}
+
+const t0 = Date.now();
+const { trials, repeats, skippedForInk, pages } = planNudge({ seed, count, shifts: shift.shifts });
+
+const inks = new Map();
+for (const p of new Set(trials.map((t) => t.page))) inks.set(p, readers.inkFor(p));
+
+/**
+ * The trials as the page holds them.
+ *
+ * `shift` — what our measurement proposes — is on the planned trial and is never
+ * read here. It reaches no markup, no data attribute and no comment: anybody can
+ * view the source of this page and find no target in it, which is the only
+ * version of that claim worth making. What the reader is given is where the
+ * rectangle starts, which is a random direction away from where the app draws it
+ * today and therefore says nothing about where it ought to end up.
+ */
+const cards = trials
+ .map((t) => {
+ const [x, y, w, h] = t.box;
+ const side = windowFor(t.box);
+ const [jx, jy] = t.jitter;
+ const vx = x + w / 2 - side / 2 + jx;
+ const vy = y + h / 2 - side / 2 + jy;
+ const [sx, sy] = t.start;
+ return `
+${inkPaths(inks.get(t.page), vx, vy, side)}
+page ${t.page} · ${t.surah}:${t.aya}
+ `;
+ })
+ .join("\n");
+
+const head = {
+ built: new Date().toISOString(),
+ kind: "nudge",
+ seed,
+ count: trials.length,
+ repeats,
+ pages,
+ shiftRan: shift.ran,
+ shiftFingerprint: fingerprint(shiftText),
+ /**
+ * What this build put on the screen. The forced-choice page carries the same
+ * field for the same reason: a reading that assumes a question was asked when
+ * the page had no way to ask it manufactures a finding out of a missing
+ * feature.
+ */
+ asks: ["place", "size"],
+};
+
+const html = `Hifth — put the box where it goes
+
+Put the box where it goes
+
+
+
What are you being asked to do?
+
You will see a small piece of a page of the mus'haf with one red rectangle drawn on
+it. The rectangle starts in the wrong place, every time and on purpose. Drag it until it
+closes around a single vowel or mark — the one nearest to where it started — and then
+press place it .
+
+
Why not just ask you whether a box looks right?
+
Because that question can only be answered yes or no, and the answer we actually need
+is a distance. The app already has its own idea of where these rectangles should move to,
+worked out by measurement. If we show you that idea and ask whether you agree, we learn
+nothing we did not already believe. If instead you place them yourself, without ever
+seeing what the machine thinks, the gap between where you put them and where it wanted
+them is a real number — and that gap is what gets fixed.
+
+
How exact do you need to be?
+
As exact as you can be without labouring over it. You are not expected to be perfect,
+and nothing depends on any single placement: some marks come round a second time, and the
+distance between your two goes at the same mark is how we work out how precise you are.
+Everything else is read against that. So place each one honestly and move on — a careful
+guess is worth much more than a slow one.
+
+
What if the box is the wrong size for the mark?
+
Put it in the best place you can anyway, and tick the box is the wrong size .
+Where a rectangle sits and how big it is are two different faults with two different
+repairs, and this page is only about where it sits. The tick is counted on its own and it
+never costs the placement.
+
+
How long does it take, and can you stop?
+
${trials.length} of them, and about ${Math.max(3, Math.round(trials.length * 0.25))} minutes.
+Your place is kept in this browser, so you can close the page and come back. You are never
+told how close you were, at any point — being told would teach you where the answer tends
+to lie, and after that you would be placing from the rule instead of from the ink.
+
+
Keys
+
Drag with the mouse or a finger. ← → ↑ ↓ to
+nudge, hold shift for a bigger step, enter to place it,
+S to say the box is the wrong size.
+
Start
+
+
+
+
+
+Drag the rectangle onto the mark nearest where it started.
+${cards}
+
+Place it enter
+
+
+The box is the wrong size S
+
+Move it first — it always starts in the wrong place, so leaving it alone is not an answer.
+
+
+
+
That is all of them — thank you.
+
Save the file below and hand it to whoever asked you to do this. It holds where you put
+each rectangle and nothing else; what that means is worked out separately, from the same
+recipe that built this page.
+
Save the placements
+
+
+
+
+
+
+`;
+
+mkdirSync(dirname(outPath), { recursive: true });
+writeFileSync(outPath, html);
+
+process.stdout.write(
+ `${trials.length} placements over ${pages} pages (${repeats} marks shown twice) · seed ${seed} · ` +
+ `displacements ${shift.ran} (${head.shiftFingerprint})\n` +
+ `${skippedForInk} marks passed over for too little ink under the corrected box\n` +
+ `${(html.length / 1e6).toFixed(1)} MB in ${((Date.now() - t0) / 1000).toFixed(1)}s → ${outPath}\n`,
+);
diff --git a/packages/etl/scripts/build-tajweed.mjs b/packages/etl/scripts/build-tajweed.mjs
index 7349938..26d0e1b 100644
--- a/packages/etl/scripts/build-tajweed.mjs
+++ b/packages/etl/scripts/build-tajweed.mjs
@@ -8,9 +8,11 @@
* codepoint span *inside that ayah's own* Tanzil Uthmani text.
*
* Output:
- * - skins//tajweed/.json — ayah → family → flat
+ * - skins//tajweed/.json — ayah → *source rule* → flat
* `[start, end, …]` spans. One shard per surah, so a page fetches at most
* the surahs it shows.
+ * - skins//tajweed/rules.json — the vocabulary: every rule id the
+ * shards use, and which of @hifth/core's seven families it paints as.
* - skins//NOTICE.txt — the CC BY 4.0 attribution, shipped beside the
* bytes it applies to rather than only in the repo's SOURCES.md.
*
@@ -37,9 +39,30 @@
* not the rendering change this comment used to promise.
*
* THE MAPPING is 18 source rules → 7 families (see RULES below and the table in
- * PROVENANCE.md). It is lossy on purpose — seven is what a colour-blind-safe
- * palette carries honestly — and the loss is recorded, not silent: an unknown
- * source rule is a build failure, never a dropped annotation.
+ * PROVENANCE.md), and it is applied when the page is *painted*, not when the
+ * bytes are written. That is a change: the shards used to be keyed by family,
+ * which meant a span arrived on the reader's machine having forgotten whether it
+ * was an ikhfa or a ghunnah, and no amount of work in the app could get that
+ * back. Seven is still what a colour-blind-safe palette carries honestly, so
+ * seven is still what paints — but the collapse now happens at the last possible
+ * moment, and anything that wants the finer grain (a reader colouring ikhfa
+ * differently from ghunnah; a legend that counts what it actually saw) can have
+ * it without another 604-page rebuild.
+ *
+ * WHAT IT COST, measured over the whole corpus before it was done: +36.7% raw
+ * and +17.5% gzipped (205.8 KB → 241.7 KB across the 114 shards), and the
+ * largest shard — al-Baqarah — moves 14.8 KB → 17.3 KB gz, a third of the 50 KB
+ * budget. Long repeated keys are close to free once gzipped, which is why the
+ * raw and compressed numbers are so far apart and why the honest shape was
+ * affordable.
+ *
+ * WHICH FAMILY A RULE PAINTS AS stays here rather than in @hifth/core, because
+ * it is a fact about *this source's* vocabulary and core is deliberately
+ * ignorant of that (skins.ts: "Not the raw rule list of any one source"). So the
+ * mapping ships as data, in rules.json, and L1 reads it the same way it already
+ * reads a lookup handed down from L3. A source with nineteen rules, or with a
+ * different name for the same rule, is then a rebuild rather than an edit in
+ * three packages.
*
* Gates enforced in-script: every (surah, ayah) resolves via toAbsoluteAyah;
* all 6,236 ayahs present in the source; every source rule id known; every
@@ -129,7 +152,7 @@ const SOURCE = JSON.parse(
);
if (!Array.isArray(SOURCE)) throw new Error("tajweed source is not an array");
-/** abs ayah → { family → flat [start, end, …] }. */
+/** abs ayah → { source rule → flat [start, end, …] }. */
const byAyah = new Map();
const seenRules = new Set();
let annotations = 0;
@@ -138,7 +161,7 @@ for (const record of SOURCE) {
// Throws on anything outside 1..114 / the surah's ayah count — the key gate.
const abs = toAbsoluteAyah(record.surah, record.ayah);
if (byAyah.has(abs)) throw new Error(`duplicate record for ${record.surah}:${record.ayah}`);
- const families = new Map();
+ const rules = new Map();
for (const annotation of record.annotations ?? []) {
const family = RULES[annotation.rule];
if (!family) {
@@ -155,11 +178,11 @@ for (const record of SOURCE) {
}
seenRules.add(annotation.rule);
annotations += 1;
- const spans = families.get(family);
+ const spans = rules.get(annotation.rule);
if (spans) spans.push([start, end]);
- else families.set(family, [[start, end]]);
+ else rules.set(annotation.rule, [[start, end]]);
}
- byAyah.set(abs, families);
+ byAyah.set(abs, rules);
}
if (byAyah.size !== TOTAL_AYAHS) {
@@ -220,11 +243,33 @@ function write(relative, json) {
writeFileSync(join(OUT_DIR, relative), json);
}
-// Families in a fixed order (the table's insertion order is stable but not
-// meaningful), spans ascending by start then end: two total orders, so the
-// bytes cannot depend on the order the source happened to list annotations in.
+// Rules in a fixed order — by family, then by rule id — and spans ascending by
+// start then end: two total orders, so the bytes cannot depend on the order the
+// source happened to list annotations in. Grouping by family first is not
+// arbitrary either: it puts the rules that share a colour next to each other in
+// the file, which is what somebody diffing a shard by eye is looking for.
const FAMILY_ORDER = [...new Set(Object.values(RULES))].sort();
+const RULE_ORDER = Object.keys(RULES).sort(
+ (a, b) => FAMILY_ORDER.indexOf(RULES[a]) - FAMILY_ORDER.indexOf(RULES[b]) || a.localeCompare(b),
+);
+// The vocabulary, written before the shards it describes. Every rule id the
+// shards can contain, and the family it paints as — the whole 18 → 7 collapse,
+// as data rather than as a table compiled into three packages. A reader's colour
+// choice is per rule id, so this is also the list a settings surface renders.
+writeFileSync(
+ join(OUT_DIR, "tajweed", "rules.json"),
+ `${JSON.stringify(
+ {
+ source: "cpfair/quran-tajweed@496f71cd",
+ rules: RULE_ORDER.map((id) => ({ id, family: RULES[id] })),
+ },
+ null,
+ 2,
+ )}\n`,
+);
+
+const perRuleAyahs = new Map();
const perFamilyAyahs = new Map();
let markedAyahs = 0;
@@ -237,14 +282,21 @@ for (let surah = 1; surah <= 114; surah++) {
} catch {
break; // past the surah's last ayah
}
- const families = byAyah.get(abs);
- if (!families || families.size === 0) continue; // no rule this source covers
+ const rules = byAyah.get(abs);
+ if (!rules || rules.size === 0) continue; // no rule this source covers
const entry = {};
- for (const family of FAMILY_ORDER) {
- const spans = families.get(family);
+ const familiesHere = new Set();
+ for (const rule of RULE_ORDER) {
+ const spans = rules.get(rule);
if (!spans) continue;
spans.sort((a, b) => a[0] - b[0] || a[1] - b[1]);
- entry[family] = spans.flat();
+ entry[rule] = spans.flat();
+ perRuleAyahs.set(rule, (perRuleAyahs.get(rule) ?? 0) + 1);
+ familiesHere.add(RULES[rule]);
+ }
+ // Per-family ayah coverage is what skins.ts grades salience by, and it is
+ // now a fold rather than a count: four madds on one ayah are one madd ayah.
+ for (const family of familiesHere) {
perFamilyAyahs.set(family, (perFamilyAyahs.get(family) ?? 0) + 1);
}
shard.push([String(ayah), entry]);
@@ -257,14 +309,23 @@ for (let surah = 1; surah <= 114; surah++) {
/* Report. */
/* ------------------------------------------------------------------ */
-const coverage = FAMILY_ORDER.map(
- (f) => `${f} ${((100 * (perFamilyAyahs.get(f) ?? 0)) / TOTAL_AYAHS).toFixed(1)}%`,
-).join(" · ");
+const pct = (n) => `${((100 * n) / TOTAL_AYAHS).toFixed(1)}%`;
+const coverage = FAMILY_ORDER.map((f) => `${f} ${pct(perFamilyAyahs.get(f) ?? 0)}`).join(" · ");
console.log(
`build-tajweed — ${SOURCE.length} source records / ${annotations} annotations / ` +
`${seenRules.size} rule ids → ${markedAyahs}/${TOTAL_AYAHS} marked ayahs (edition ${EDITION})`,
);
console.log(`build-tajweed — ayah coverage by family: ${coverage}`);
+// The per-rule line is the one the shards can now answer and the old shape
+// could not. It is also how you see what the collapse was hiding: a family at
+// 72.9% made of one rule at 60% and three in the single digits is a different
+// picture from three rules at 30% each, and only one of those is worth a
+// reader's separate colour.
+console.log(
+ `build-tajweed — ayah coverage by rule: ${RULE_ORDER.map(
+ (r) => `${r} ${pct(perRuleAyahs.get(r) ?? 0)}`,
+ ).join(" · ")}`,
+);
console.log(
`build-tajweed — 114 surah shards; largest ${maxGz.file} at ${maxGz.bytes}B gz ` +
`(budget ${GZ_LIMIT}B)`,
diff --git a/packages/etl/scripts/lib/adjudication.mjs b/packages/etl/scripts/lib/adjudication.mjs
new file mode 100644
index 0000000..8e57ffa
--- /dev/null
+++ b/packages/etl/scripts/lib/adjudication.mjs
@@ -0,0 +1,356 @@
+/**
+ * The session a person actually works: which marks, shown how, and what the
+ * right answer was.
+ *
+ * ## Why it is a forced choice and not a review
+ *
+ * The obvious tool here is a list of the machine's verdicts with an "agree /
+ * disagree" beside each one. That tool cannot produce evidence. A person handed
+ * a verdict and asked whether they agree agrees — the verdict is the anchor,
+ * the machine sounds confident, and the honest answer to "does this rectangle
+ * look right" is usually "I suppose so". What comes back is the machine's own
+ * opinion with a human name on it.
+ *
+ * So the person is never shown a verdict. They are shown one mark and two
+ * rectangles, told nothing about either, and asked which one sits on it. One of
+ * the two is the corrected placement. If the correction is right, people pick it
+ * far more often than half the time; if it is wrong, they do not. Nobody has to
+ * be asked whether they trust anything.
+ *
+ * ## What is in a session, and why each part is there
+ *
+ * Four kinds of trial, mixed together and indistinguishable while you work:
+ *
+ * - **as shipped** — the corrected rectangle against the one the app holds
+ * today. This is the question. Everything else exists to make its answer
+ * readable.
+ * - **a decoy** — the corrected rectangle against one displaced by the *same
+ * distance* in some other direction. Two jobs. It measures whether a person
+ * can see a displacement this small at all, which is the yardstick the first
+ * number has to be read against; and it breaks the pattern. Without it every
+ * right answer sits the same way on the screen, because the error is in the
+ * same direction on every page, and after twenty trials a person is answering
+ * from the pattern rather than from the ink.
+ * - **a catch** — the corrected rectangle against one a whole letter away.
+ * Anybody looking gets these right. Somebody clicking does not, and a session
+ * that fails them is discarded rather than argued about.
+ * - **twins** — the same rectangle twice. There is no right answer and "I can't
+ * tell" is the only honest response, which is the one thing that catches a
+ * person who always picks something.
+ *
+ * ## Where the answers live
+ *
+ * Nowhere. The plan is a pure function of the seed and the measured
+ * displacements, so the scorer rebuilds it from those two rather than reading a
+ * key off disk. The page a person works holds no answers, and there is no file
+ * to accidentally open, hand over, or check in.
+ */
+import { readFileSync } from "node:fs";
+import { dirname, join } from "node:path";
+import { fileURLToPath } from "node:url";
+import { rasterise, readPageInk } from "./ink.mjs";
+import { rng } from "./mark-ink.mjs";
+import { marksOf } from "./marks.mjs";
+
+const HERE = dirname(fileURLToPath(import.meta.url));
+const REPO = join(HERE, "..", "..", "..", "..");
+const PAGES = join(REPO, "apps", "web", "public", "assets", "pages", "hafs-kfqc");
+
+/** Samples per page unit, as the placement measurement uses. */
+export const RES = 16;
+
+/**
+ * How much of the corrected rectangle has to be ink before a mark is worth
+ * asking about.
+ *
+ * The placement measurement calls a rectangle blank below 2%. That is the floor
+ * for "there is something here at all"; this is a higher bar, for "there is
+ * enough here that a person can see what they are being asked about". A mark
+ * that is four samples of ink in the corner of its box is a trial about
+ * eyesight rather than about placement.
+ */
+const INK_FLOOR = 0.1;
+
+/**
+ * How far a catch trial's wrong rectangle goes: unmissable, or it catches
+ * nobody. Bounded above by the panel window, since a rectangle that fell off the
+ * edge would be a different question — "which panel has two rectangles" — and an
+ * even easier one.
+ */
+const CATCH_UNITS = 4.5;
+
+/**
+ * Every panel is the same window on the page, wide enough that a catch stays
+ * inside it. Fixed rather than fitted to the pair of rectangles, because a
+ * window that grew when the rectangles were far apart would announce the catch
+ * trials by their zoom level before a person had looked at the ink.
+ */
+export const windowFor = ([, , w, h]) => Math.max(w, h) + 14;
+
+const TAU = Math.PI * 2;
+
+/**
+ * Where the mark rows and the shipped ink come from.
+ *
+ * Injected rather than imported at the call site for one reason: both readers
+ * want the ligature-corpus cache and the shipped pages, which are hundreds of
+ * megabytes of gitignored download, and a session planner that could only be
+ * exercised on a machine that had them is a session planner nobody tests. With
+ * these as arguments the trial arithmetic — the mix, the angles, the balance of
+ * left and right — can be checked against a handful of made-up marks.
+ */
+export const readers = {
+ marksFor: marksOf,
+ inkFor: (page) => readPageInk(readFileSync(join(PAGES, `${page}.svg`), "utf8"), 1 / (4 * RES)).shapes,
+};
+
+const inkFraction = (shapes, [x, y, w, h]) => {
+ const cols = Math.max(1, Math.round(w * RES));
+ const rows = Math.max(1, Math.round(h * RES));
+ const mask = rasterise(shapes, x, y, cols, rows, RES);
+ let on = 0;
+ for (let i = 0; i < mask.length; i += 1) if (mask[i]) on += 1;
+ return on / mask.length;
+};
+
+/**
+ * Exactly the mix asked for, then shuffled — rather than each trial drawing its
+ * own kind at random, which would leave a short session with three catches or
+ * none and no way to say which happened.
+ */
+function kindOrder(n, rand) {
+ const catches = Math.max(3, Math.round(n * 0.12));
+ const twins = Math.max(2, Math.round(n * 0.08));
+ const rest = Math.max(0, n - catches - twins);
+ const decoys = Math.round(rest * 0.44);
+ const kinds = [
+ ...Array(catches).fill("catch"),
+ ...Array(twins).fill("twin"),
+ ...Array(decoys).fill("decoy"),
+ ...Array(rest - decoys).fill("shipped"),
+ ];
+ for (let i = kinds.length - 1; i > 0; i -= 1) {
+ const j = Math.floor(rand() * (i + 1));
+ [kinds[i], kinds[j]] = [kinds[j], kinds[i]];
+ }
+ return kinds;
+}
+
+const shuffled = (xs, rand) => {
+ const a = xs.slice();
+ for (let i = a.length - 1; i > 0; i -= 1) {
+ const j = Math.floor(rand() * (i + 1));
+ [a[i], a[j]] = [a[j], a[i]];
+ }
+ return a;
+};
+
+/**
+ * Candidates, taken a page at a time in rotation.
+ *
+ * Round-robin rather than a shuffle of everything, because a plain shuffle over
+ * 40 pages of 500 marks gives a session that is mostly a handful of pages, and
+ * the question is about a per-page correction. Every page that has one should be
+ * asked about.
+ */
+function pool(shifts, want, rand, io) {
+ const perPage = new Map();
+ for (const s of shuffled(shifts, rand)) {
+ const ms = shuffled(io.marksFor(s.page), rand);
+ perPage.set(s.page, { shift: s, marks: ms, at: 0 });
+ }
+ const inks = new Map();
+ const out = [];
+ let exhausted = 0;
+ let blank = 0;
+ while (out.length < want && exhausted < perPage.size) {
+ exhausted = 0;
+ for (const [page, st] of perPage) {
+ if (out.length >= want) break;
+ if (st.at >= st.marks.length) {
+ exhausted += 1;
+ continue;
+ }
+ if (!inks.has(page)) inks.set(page, io.inkFor(page));
+ const shapes = inks.get(page);
+ let taken = null;
+ while (st.at < st.marks.length && !taken) {
+ const m = st.marks[st.at];
+ st.at += 1;
+ const [x, y, w, h] = m.box;
+ const corrected = [x + st.shift.dx, y + st.shift.dy, w, h];
+ if (inkFraction(shapes, corrected) >= INK_FLOOR) taken = { mark: m, shift: st.shift };
+ else blank += 1;
+ }
+ if (taken) out.push(taken);
+ }
+ }
+ return { candidates: out, skippedForInk: blank };
+}
+
+/**
+ * @param seed any integer; the same seed and the same displacements rebuild
+ * the same session, answers included.
+ * @param count how many trials. A hundred takes about fifteen minutes and puts
+ * the interval on the headline number at roughly ±10 points.
+ * @param shifts `[{page, dx, dy}]` — the measured displacement per page, which
+ * is the thing being put on trial.
+ */
+export function planSession({ seed, count, shifts, io = readers }) {
+ const rand = rng(seed);
+ const kinds = kindOrder(count, rand);
+ const { candidates, skippedForInk } = pool(shifts, kinds.length, rand, io);
+ if (candidates.length < kinds.length) {
+ throw new Error(`only ${candidates.length} marks passed the ink floor; asked for ${kinds.length}`);
+ }
+ const trials = candidates.map((cand, i) => {
+ const kind = kinds[i];
+ const { dx, dy } = cand.shift;
+ const right = [dx, dy];
+ const mag = Math.hypot(dx, dy) || 1;
+ let other;
+ if (kind === "shipped") other = [0, 0];
+ else if (kind === "twin") other = [dx, dy];
+ else {
+ // A decoy moves the same distance the correction does; a catch moves far
+ // enough that the rectangle is plainly on a different letter.
+ const dist = kind === "catch" ? CATCH_UNITS : mag;
+ let th = 0;
+ const away = Math.atan2(-dy, -dx); // the direction "as shipped" lies in
+ for (let t = 0; t < 8; t += 1) {
+ th = rand() * TAU;
+ const gap = Math.abs(((th - away + Math.PI) % TAU) - Math.PI);
+ if (kind === "catch" || gap > Math.PI / 6) break;
+ }
+ other = [dx + dist * Math.cos(th), dy + dist * Math.sin(th)];
+ }
+ const rightFirst = rand() < 0.5;
+ return {
+ i,
+ id: `p${cand.mark.page}k${cand.mark.k}`,
+ kind,
+ page: cand.mark.page,
+ k: cand.mark.k,
+ name: cand.mark.name,
+ surah: cand.mark.surah,
+ aya: cand.mark.aya,
+ idx: cand.mark.idx,
+ box: cand.mark.box,
+ d: cand.mark.d,
+ fit: cand.mark.fit,
+ slots: rightFirst ? [right, other] : [other, right],
+ // Which panel holds the corrected rectangle. Null for twins, where both do
+ // and neither answer is wrong.
+ answer: kind === "twin" ? null : rightFirst ? 0 : 1,
+ // Framing wobble, so the corrected rectangle is not always dead centre of
+ // its panel — which would give the whole thing away in three trials.
+ jitter: [(rand() - 0.5) * 1.6, (rand() - 0.5) * 1.6],
+ };
+ });
+ return { trials, skippedForInk, pages: new Set(trials.map((t) => t.page)).size };
+}
+
+/**
+ * How far the rectangle starts from where the app draws it today: a fixed
+ * distance, in a direction that is different every trial.
+ *
+ * Three things ride on the number. It has to be well clear of both placements a
+ * forced choice would have offered — they sit about one unit apart — or somebody
+ * could land on an answer by not moving, and "I left it alone" would score as
+ * agreement. It has to leave the rectangle inside its window with room to spare,
+ * or the trial becomes a hunt for a clipped box rather than a judgement about
+ * ink. And the *direction* has to be spread evenly, because a hand stops short
+ * of where the eye says — every hand does — which drags the landing back toward
+ * wherever it started. Spread evenly, that drag cancels in the average and can
+ * be measured; pointed the same way each time, it would be baked into the answer
+ * as if it were a property of the boxes.
+ */
+export const START_R = 3;
+
+/**
+ * How many trials apart a mark's two showings must be.
+ *
+ * The pair exists to measure the reader's own precision — put the same box
+ * twice, see how far apart the two landings fall — and that is only a precision
+ * measurement if the second placement is a fresh judgement rather than a
+ * remembered one.
+ */
+export const REPEAT_GAP = 10;
+
+/**
+ * A session of the other kind: no choosing, only placing.
+ *
+ * The forced choice can say *our correction is preferred to what ships*. It can
+ * never say *by how much*, nor *in which direction it is still wrong*, because
+ * the only two answers on offer are the two we thought of. This asks the
+ * question the other way round: here is a mark and a rectangle that starts in
+ * the wrong place; put it where it goes. Where it lands is a measurement, and
+ * subtracting our correction from it gives the residual — the number that would
+ * actually change the boxes.
+ *
+ * It is a separate program from the forced choice, and has to be. Dragging a box
+ * into place inside a two-panel trial *is* the answer key: whichever panel the
+ * landing is nearer is by construction the one we called right, and the blinding
+ * is gone. Adjusting after answering leaks nearly as badly across a session,
+ * since the correction points the same way on almost every page and a reader
+ * learns that direction long before the trials run out.
+ *
+ * @param seed any integer; the same seed and the same displacements rebuild
+ * the same session.
+ * @param count how many placements, repeats included.
+ * @param shifts `[{page, dx, dy}]` — the measured displacement per page. Used
+ * to pick marks that have ink under them, and kept on each trial
+ * so the scorer can subtract it. It is never sent to the page.
+ */
+export function planNudge({ seed, count, shifts, io = readers }) {
+ const rand = rng(seed);
+ const repeats = Math.min(Math.max(3, Math.round(count * 0.15)), Math.floor(count / 2));
+ const distinct = Math.max(1, count - repeats);
+ const { candidates, skippedForInk } = pool(shifts, distinct, rand, io);
+ if (candidates.length < distinct) {
+ throw new Error(`only ${candidates.length} marks passed the ink floor; asked for ${distinct}`);
+ }
+ const wobble = () => {
+ const th = rand() * TAU;
+ return {
+ start: [START_R * Math.cos(th), START_R * Math.sin(th)],
+ // Framing wobble, for the same reason the forced choice has one: a window
+ // centred on the shipped rectangle would make the centre of the panel a
+ // free answer, and a reader would be aiming at the frame rather than at
+ // the ink.
+ jitter: [(rand() - 0.5) * 2.4, (rand() - 0.5) * 2.4],
+ };
+ };
+ const showing = (cand, repeat) => ({
+ id: `p${cand.mark.page}k${cand.mark.k}`,
+ page: cand.mark.page,
+ k: cand.mark.k,
+ name: cand.mark.name,
+ surah: cand.mark.surah,
+ aya: cand.mark.aya,
+ idx: cand.mark.idx,
+ box: cand.mark.box,
+ d: cand.mark.d,
+ fit: cand.mark.fit,
+ // What the machine says the correction is, relative to the shipped box.
+ // The builder strips it; only the scorer ever reads it.
+ shift: [cand.shift.dx, cand.shift.dy],
+ repeat,
+ ...wobble(),
+ });
+ const out = shuffled(candidates, rand).map((c) => showing(c, 0));
+ // Second showings are inserted, not appended. A precision estimate built
+ // entirely out of the last fifteen trials measures the end of an hour rather
+ // than a hand, and it is the hand the rest of the arithmetic is divided by.
+ // For the same reason the *first* showings are drawn from across the session
+ // rather than off the top of it.
+ const eligible = out.slice(0, Math.max(1, out.length - REPEAT_GAP));
+ for (const first of shuffled(eligible, rand).slice(0, repeats)) {
+ const at = out.indexOf(first);
+ const lo = at + REPEAT_GAP;
+ const put = lo >= out.length ? out.length : lo + Math.floor(rand() * (out.length - lo + 1));
+ out.splice(put, 0, { ...first, repeat: 1, ...wobble() });
+ }
+ const trials = out.map((t, i) => ({ i, ...t }));
+ return { trials, repeats, skippedForInk, pages: new Set(trials.map((t) => t.page)).size };
+}
diff --git a/packages/etl/scripts/lib/adjudication.test.mjs b/packages/etl/scripts/lib/adjudication.test.mjs
new file mode 100644
index 0000000..33f763b
--- /dev/null
+++ b/packages/etl/scripts/lib/adjudication.test.mjs
@@ -0,0 +1,195 @@
+/**
+ * The session plan, on marks small enough to count by hand.
+ *
+ * What is worth asserting here is not that the page looks right — that is a
+ * thing to look at, and there is a page for looking at it. It is that the
+ * *design* of the session holds, because every one of these properties is a way
+ * the result could be quietly worthless:
+ *
+ * - if the mix drifts, a session can end up with no catches and no way to know
+ * whether the person was paying attention;
+ * - if the corrected rectangle sits in the same panel more often than not, a
+ * person who always presses the same key scores well and the count means
+ * nothing;
+ * - if a decoy happens to point back at the as-shipped position, that trial is
+ * an as-shipped trial wearing the wrong label and it pollutes the yardstick;
+ * - if the plan is not reproducible from the seed, the scorer rebuilds a
+ * different key and every number it prints is fiction.
+ *
+ * The marks below are invented. The point is the arithmetic over them, and
+ * inventing them is what lets this run without the hundreds of megabytes of
+ * corpus cache the real readers want.
+ */
+import { describe, expect, it } from "vitest";
+import { planNudge, planSession, REPEAT_GAP, START_R, windowFor } from "./adjudication.mjs";
+import { shapeOf } from "./ink.mjs";
+
+/** Twelve pages of forty marks, each a plausible size, all of them solid ink. */
+const io = {
+ marksFor: (page) =>
+ Array.from({ length: 40 }, (_, k) => ({
+ page,
+ k,
+ name: "fatha",
+ surah: 1,
+ aya: 1 + (k % 7),
+ idx: k,
+ box: [20 + (k % 8) * 30, 30 + Math.floor(k / 8) * 40, 4 + (k % 3), 3 + (k % 2)],
+ d: "M0 0",
+ fit: { sx: 1, sy: 1, tx: 0, ty: 0 },
+ })),
+ // One rectangle covering the whole page, so every candidate clears the ink
+ // floor and the pool is decided by the walk rather than by the ink.
+ inkFor: () => [shapeOf([[0, 0, 400, 0, 400, 600, 0, 600]], "nonzero")],
+};
+
+const shifts = Array.from({ length: 12 }, (_, i) => ({ page: i + 1, dx: -0.7, dy: -1.05, n: 40 }));
+const plan = (over = {}) => planSession({ seed: 3, count: 120, shifts, io, ...over });
+
+describe("planSession", () => {
+ it("is rebuilt exactly from the seed, which is the only place the answers live", () => {
+ expect(JSON.stringify(plan().trials)).toBe(JSON.stringify(plan().trials));
+ expect(JSON.stringify(plan().trials)).not.toBe(JSON.stringify(plan({ seed: 4 }).trials));
+ });
+
+ it("carries every kind, so no session is missing its own controls", () => {
+ const mix = {};
+ for (const t of plan().trials) mix[t.kind] = (mix[t.kind] ?? 0) + 1;
+ expect(mix.shipped).toBeGreaterThan(mix.catch);
+ expect(mix.decoy).toBeGreaterThan(10);
+ expect(mix.catch).toBeGreaterThan(5);
+ expect(mix.twin).toBeGreaterThan(2);
+ expect(mix.shipped + mix.decoy + mix.catch + mix.twin).toBe(120);
+ });
+
+ it("does not favour a panel, so pressing the same key every time scores half", () => {
+ const answered = plan().trials.filter((t) => t.answer !== null);
+ const left = answered.filter((t) => t.answer === 0).length;
+ expect(Math.abs(left / answered.length - 0.5)).toBeLessThan(0.12);
+ });
+
+ it("puts the corrected rectangle in both panels of a twin, so there is nothing to be right about", () => {
+ for (const t of plan().trials.filter((x) => x.kind === "twin")) {
+ expect(t.slots[0]).toEqual(t.slots[1]);
+ expect(t.answer).toBeNull();
+ }
+ });
+
+ it("moves an as-shipped trial's other rectangle to exactly where the app draws it today", () => {
+ for (const t of plan().trials.filter((x) => x.kind === "shipped")) {
+ expect(t.slots[1 - t.answer]).toEqual([0, 0]);
+ }
+ });
+
+ it("displaces a decoy the same distance as the correction, and never back towards it", () => {
+ for (const t of plan().trials.filter((x) => x.kind === "decoy")) {
+ const right = t.slots[t.answer];
+ const other = t.slots[1 - t.answer];
+ const mag = Math.hypot(right[0], right[1]);
+ const moved = Math.hypot(other[0] - right[0], other[1] - right[1]);
+ expect(moved).toBeCloseTo(mag, 6);
+ // A decoy that landed near the as-shipped position would be an as-shipped
+ // trial counted as the yardstick, which would flatter both numbers.
+ expect(Math.hypot(other[0], other[1])).toBeGreaterThan(0.3 * mag);
+ }
+ });
+
+ it("keeps both rectangles inside the window, so no trial is answerable by counting boxes", () => {
+ for (const t of plan().trials) {
+ const side = windowFor(t.box);
+ const [, , w, h] = t.box;
+ for (const [dx, dy] of t.slots) {
+ expect(Math.abs(dx) + w / 2 + Math.abs(t.jitter[0])).toBeLessThan(side / 2);
+ expect(Math.abs(dy) + h / 2 + Math.abs(t.jitter[1])).toBeLessThan(side / 2);
+ }
+ }
+ });
+
+ it("spreads over the pages that have a displacement rather than dwelling on a few", () => {
+ expect(plan().pages).toBe(shifts.length);
+ });
+
+ it("refuses rather than shortening when there are not enough marks with ink under the box", () => {
+ expect(() => planSession({ seed: 3, count: 120, shifts: shifts.slice(0, 1), io })).toThrow(/passed the ink floor/);
+ });
+});
+
+/**
+ * The other session: no choosing, only placing.
+ *
+ * The failure modes here are different in kind from the forced choice's, and
+ * each assertion below is one of them:
+ *
+ * - if a rectangle could start near where it belongs, somebody could land on an
+ * answer by not moving, and "I left it alone" would be counted as agreement;
+ * - if the starting directions leaned one way, the pull a hand exerts on its own
+ * landing would be baked into the residual as though it were a fact about the
+ * boxes;
+ * - if the two showings of a repeated mark sat close together, the spread
+ * between them would measure memory rather than precision — and the residual
+ * is divided by that number;
+ * - if the correction reached the page, none of it would mean anything at all.
+ */
+const nudge = (over = {}) => planNudge({ seed: 5, count: 60, shifts, io, ...over });
+
+describe("planNudge", () => {
+ it("is rebuilt exactly from the seed, since the correction is subtracted afterwards", () => {
+ expect(JSON.stringify(nudge().trials)).toBe(JSON.stringify(nudge().trials));
+ expect(JSON.stringify(nudge().trials)).not.toBe(JSON.stringify(nudge({ seed: 6 }).trials));
+ });
+
+ it("starts every rectangle the same distance out, so no placement is free", () => {
+ for (const t of nudge().trials) {
+ expect(Math.hypot(t.start[0], t.start[1])).toBeCloseTo(START_R, 6);
+ // Well clear of both placements the forced choice would have offered — the
+ // shipped box at nought and the correction about a unit from it — so
+ // leaving the rectangle where it appeared is never an answer.
+ expect(Math.hypot(t.start[0] - t.shift[0], t.start[1] - t.shift[1])).toBeGreaterThan(1);
+ }
+ });
+
+ it("spreads the starting directions, so a hand's pull towards its start cancels", () => {
+ const { trials } = nudge();
+ const mx = trials.reduce((s, t) => s + t.start[0], 0) / trials.length;
+ const my = trials.reduce((s, t) => s + t.start[1], 0) / trials.length;
+ expect(Math.hypot(mx, my)).toBeLessThan(START_R * 0.25);
+ });
+
+ it("shows some marks twice, far enough apart that the second is a fresh judgement", () => {
+ const { trials, repeats } = nudge();
+ const seen = new Map();
+ for (const t of trials) {
+ if (!seen.has(t.id)) seen.set(t.id, []);
+ seen.get(t.id).push(t);
+ }
+ const twice = [...seen.values()].filter((g) => g.length === 2);
+ expect(twice.length).toBe(repeats);
+ expect(repeats).toBeGreaterThan(2);
+ for (const [a, b] of twice) {
+ expect(b.i - a.i).toBeGreaterThanOrEqual(REPEAT_GAP);
+ // Independent starts, or the pair measures whether somebody repeats a
+ // gesture rather than whether they repeat a judgement.
+ expect(a.start).not.toEqual(b.start);
+ }
+ });
+
+ it("keeps the rectangle inside its window at the start, so no trial opens as a hunt", () => {
+ for (const t of nudge().trials) {
+ const side = windowFor(t.box);
+ const [, , w, h] = t.box;
+ expect(Math.abs(t.start[0]) + w / 2 + Math.abs(t.jitter[0])).toBeLessThan(side / 2);
+ expect(Math.abs(t.start[1]) + h / 2 + Math.abs(t.jitter[1])).toBeLessThan(side / 2);
+ }
+ });
+
+ it("adds up to what was asked for, and spreads over every page with a displacement", () => {
+ const { trials, pages } = nudge();
+ expect(trials.length).toBe(60);
+ expect(trials.map((t, i) => t.i - i).every((d) => d === 0)).toBe(true);
+ expect(pages).toBe(shifts.length);
+ });
+
+ it("refuses rather than shortening when there are not enough marks with ink under the box", () => {
+ expect(() => planNudge({ seed: 5, count: 600, shifts: shifts.slice(0, 1), io })).toThrow(/passed the ink floor/);
+ });
+});
diff --git a/packages/etl/scripts/lib/diacritics.mjs b/packages/etl/scripts/lib/diacritics.mjs
index 49c62fa..dd93bad 100644
--- a/packages/etl/scripts/lib/diacritics.mjs
+++ b/packages/etl/scripts/lib/diacritics.mjs
@@ -184,6 +184,50 @@ export function readDiacritics(svg, apply) {
return out;
}
+/**
+ * The same marks, as the outlines that drew them, in their own frame.
+ *
+ * `readDiacritics` returns rectangles, because a rectangle is what a shard
+ * carries and what an app paints. It is also, on its own, unable to answer the
+ * one question `sub-word-marks.md` §⑦ leaves open — whether the ink a reader
+ * sees is under the rectangle — because a rectangle has no shape and the check
+ * needs one. The publisher already drew every mark; this hands that drawing
+ * back, so a caller can put the mark's own outline over the print we ship and
+ * compare the two directly.
+ *
+ * Returned flat, in the same document order as
+ * `readDiacritics(svg, …).flatMap((w) => w.marks)`, and **deliberately not**
+ * bundled into that return. Two reasons: the outlines are a hundred megabytes
+ * across the corpus and every existing caller wants none of them; and a caller
+ * that reads both can assert the two agree — same length, and each outline's own
+ * box equal to the box the other side reported — which turns "these are the same
+ * marks" from a comment into a check. `probe-mark-ink.mjs` makes exactly that
+ * assertion on every page it reads.
+ *
+ * The constants are shared with the extractor above rather than re-declared,
+ * which is the only thing that makes the assertion meaningful: two walks with
+ * two ideas of where a word ends would agree about nothing worth agreeing about.
+ *
+ * @param {string} svg a ligature-corpus page, verbatim
+ * @returns {{ name: string, d: string }[]}
+ */
+export function readMarkOutlines(svg) {
+ const out = [];
+ for (const m of svg.matchAll(/]*)>/g)) {
+ const rest = svg.slice(m.index + m[0].length);
+ const nxt = rest.match(BOUNDARY);
+ const seg = nxt ? rest.slice(0, nxt.index) : rest;
+ for (const p of seg.matchAll(PATHS)) {
+ const name = attr(p[0], "data-diacritic");
+ if (name === null) continue;
+ const d = attr(p[0], "d");
+ if (d === null) continue;
+ out.push({ name, d });
+ }
+ }
+ return out;
+}
+
/**
* `ours = s·theirs + t`, rebuilt from the four numbers `word-boxes.pin.json`
* records for a page.
diff --git a/packages/etl/scripts/lib/ink.mjs b/packages/etl/scripts/lib/ink.mjs
new file mode 100644
index 0000000..08dfb5f
--- /dev/null
+++ b/packages/etl/scripts/lib/ink.mjs
@@ -0,0 +1,567 @@
+/**
+ * Turning either print into ink you can count, with nothing installed.
+ *
+ * Everything else in this repo that touches the two mus'haf prints asks
+ * questions about *rectangles*: where a word's box is, whether a mark's box sits
+ * inside it, whether two frames register. `mushaf-frame.mjs` is that arithmetic,
+ * and it never draws. This file draws.
+ *
+ * It exists because the one question those rectangles cannot answer is whether
+ * the ink the reader actually sees is under them — `sub-word-marks.md` §⑦ states
+ * it and says nobody has looked. Looking means rasterising, and rasterising in
+ * this repo has one hard constraint: the ETL is deterministic and vendor-free,
+ * so a raster library with a native binary is not available to it. Hence a
+ * scanline filler in ~300 lines of arithmetic, which is the whole dependency.
+ *
+ * ## The two prints do not use the same path grammar
+ *
+ * The ligature corpus is `M … c … z`, always — measured over pages 1, 2, 3, 50
+ * and 604, every path is one moveto, cubics, close. `pathBBox` handles exactly
+ * that, which is why it has never needed more.
+ *
+ * The shipped print is the full grammar: quadratics, smooth quadratics, smooth
+ * cubics, elliptical arcs, and the relative form of all of them. Page 3 alone
+ * carries `q t l h v c s a M H V L A Z z m`. So the parser here is a character
+ * scanner rather than a token regex, and it is a character scanner for one
+ * specific reason: **arc flags may be written unseparated**. In `a5 5 0 0150 50`
+ * the `0150` is *four* values — two flags, then a coordinate — and a numeric
+ * regex reads it as one. `pathBBox` would be wrong on the shipped print for that
+ * reason alone, and it is never pointed at the shipped print.
+ *
+ * ## Where the ink is, on our own pages
+ *
+ * One outer `` holds every drawn
+ * thing; `e` and `f` differ per page (`-136 482` on pages 1–2, `-55 640` on page
+ * 3, `-115 640` on pages 50 and 604), so the matrix is read, never assumed. The
+ * `` tap targets sit *outside* it, in plain viewBox
+ * space, and carry `fill-opacity="0"` — they are not ink and are dropped.
+ *
+ * Fill rule matters and is not uniform: the giant text paths carry
+ * `fill-rule="evenodd"`, most ornament paths do not and so are nonzero. Paths
+ * are therefore filled **one at a time and OR-ed**, never merged into one edge
+ * list — two overlapping even-odd paths merged into a single even-odd pass would
+ * cancel where they overlap and punch a hole in the letter.
+ *
+ * ## What "deterministic" means here, precisely
+ *
+ * Every number below comes out of `+ - * /`, `Math.sqrt`, and — for elliptical
+ * arcs only — `Math.atan2`, `Math.cos`, `Math.sin`. The first four are exact
+ * under IEEE-754 and identical on every machine. The trigonometric three come
+ * from V8's bundled fdlibm port, which is the same code on every platform V8
+ * builds for; they are stable across machines but not guaranteed across V8
+ * *versions*. Arcs never occur in the ligature corpus, so no template ever
+ * touches them; on the shipped print they are a low-hundreds minority of
+ * commands. Scores are reported to three decimals, which is roughly a thousand
+ * times the size of any drift that could produce.
+ */
+
+// -------------------------------------------------------------- transforms --
+
+/** `[a, b, c, d, e, f]`, the SVG convention: `x' = ax + cy + e`, `y' = bx + dy + f`. */
+export const IDENTITY = [1, 0, 0, 1, 0, 0];
+
+export const compose = (m, n) => [
+ m[0] * n[0] + m[2] * n[1],
+ m[1] * n[0] + m[3] * n[1],
+ m[0] * n[2] + m[2] * n[3],
+ m[1] * n[2] + m[3] * n[3],
+ m[0] * n[4] + m[2] * n[5] + m[4],
+ m[1] * n[4] + m[3] * n[5] + m[5],
+];
+
+const num = (s) => Number(s);
+
+/**
+ * The `transform` attribute, as far as these two corpora use it.
+ *
+ * Only `matrix`, `translate` and `scale` appear; `rotate` and the skews would
+ * silently do nothing if they turned up, so they throw instead. A transform this
+ * file mis-reads moves every box on the page by the same wrong amount, which is
+ * exactly the failure this file was built to detect — it must not be able to
+ * cause one.
+ */
+export function parseTransform(s) {
+ let m = IDENTITY;
+ for (const g of (s ?? "").matchAll(/(\w+)\s*\(([^)]*)\)/g)) {
+ const v = (g[2].match(/[-+]?(?:\d*\.\d+|\d+\.?)(?:[eE][-+]?\d+)?/g) ?? []).map(num);
+ if (g[1] === "matrix") m = compose(m, v.slice(0, 6));
+ else if (g[1] === "translate") m = compose(m, [1, 0, 0, 1, v[0], v[1] ?? 0]);
+ else if (g[1] === "scale") m = compose(m, [v[0], 0, 0, v[1] ?? v[0], 0, 0]);
+ else throw new Error(`transform "${g[1]}" is not handled and would be ignored silently`);
+ }
+ return m;
+}
+
+// ------------------------------------------------------------ path parsing --
+
+const isDigit = (c) => c >= "0" && c <= "9";
+
+/**
+ * A path's `d`, flattened to closed rings of points in the target frame.
+ *
+ * `tol` is the flatness tolerance **in target units** — the largest distance a
+ * flattened chord is allowed to sit from the true curve. Callers pass a fraction
+ * of a sample so that subdivision error is invisible at the resolution being
+ * rasterised, which is what keeps the answer independent of how the tolerance
+ * was chosen.
+ */
+export function flatten(d, m, tol) {
+ let i = 0;
+ const n = d.length;
+ const ws = () => {
+ while (i < n && (d[i] === " " || d[i] === "," || d[i] === "\n" || d[i] === "\t" || d[i] === "\r")) i += 1;
+ };
+ const number = () => {
+ ws();
+ const s = i;
+ if (d[i] === "+" || d[i] === "-") i += 1;
+ while (i < n && isDigit(d[i])) i += 1;
+ if (d[i] === ".") {
+ i += 1;
+ while (i < n && isDigit(d[i])) i += 1;
+ }
+ if (d[i] === "e" || d[i] === "E") {
+ i += 1;
+ if (d[i] === "+" || d[i] === "-") i += 1;
+ while (i < n && isDigit(d[i])) i += 1;
+ }
+ if (i === s) throw new Error(`expected a number at ${s} of a path`);
+ return Number(d.slice(s, i));
+ };
+ /** A flag is one character. This is the whole reason for a character scanner. */
+ const flag = () => {
+ ws();
+ const c = d[i];
+ if (c !== "0" && c !== "1") throw new Error(`expected an arc flag at ${i}, saw "${c}"`);
+ i += 1;
+ return c === "1";
+ };
+ const more = () => {
+ ws();
+ return i < n && (isDigit(d[i]) || d[i] === "." || d[i] === "-" || d[i] === "+");
+ };
+
+ const rings = [];
+ let ring = null;
+ // Current point, subpath start, and the reflected control point that the
+ // smooth forms (`S`, `T`) need. `px/py` is null unless the previous command
+ // was of the matching kind, per the SVG spec — a smooth cubic after a lineto
+ // reflects nothing and its first control point is the current point.
+ let cx = 0;
+ let cy = 0;
+ let sx = 0;
+ let sy = 0;
+ let rcx = null;
+ let rcy = null;
+ let rqx = null;
+ let rqy = null;
+
+ const put = (x, y) => ring.push(m[0] * x + m[2] * y + m[4], m[1] * x + m[3] * y + m[5]);
+ const open = (x, y) => {
+ if (ring && ring.length >= 6) rings.push(ring);
+ ring = [];
+ put(x, y);
+ };
+ /** After a close, a bare lineto restarts the subpath at its start point. */
+ const ensure = () => {
+ if (!ring) open(cx, cy);
+ };
+ const close = () => {
+ if (ring && ring.length >= 6) rings.push(ring);
+ ring = null;
+ };
+
+ /**
+ * De Casteljau to a flatness bound, in the target frame. Recursive rather
+ * than a fixed segment count so that a long sweeping curve and a two-unit
+ * terminal get the accuracy each needs, and so the answer does not depend on
+ * a magic segment number nobody can justify.
+ */
+ const cubic = (x0, y0, x1, y1, x2, y2, x3, y3, depth) => {
+ if (depth > 0) {
+ const ux = 3 * x1 - 2 * x0 - x3;
+ const uy = 3 * y1 - 2 * y0 - y3;
+ const vx = 3 * x2 - x0 - 2 * x3;
+ const vy = 3 * y2 - y0 - 2 * y3;
+ const dev = Math.max(ux * ux, vx * vx) + Math.max(uy * uy, vy * vy);
+ if (dev > 16 * tol * tol) {
+ const x01 = (x0 + x1) / 2;
+ const y01 = (y0 + y1) / 2;
+ const x12 = (x1 + x2) / 2;
+ const y12 = (y1 + y2) / 2;
+ const x23 = (x2 + x3) / 2;
+ const y23 = (y2 + y3) / 2;
+ const a = (x01 + x12) / 2;
+ const b = (y01 + y12) / 2;
+ const c = (x12 + x23) / 2;
+ const e = (y12 + y23) / 2;
+ const mx = (a + c) / 2;
+ const my = (b + e) / 2;
+ cubic(x0, y0, x01, y01, a, b, mx, my, depth - 1);
+ cubic(mx, my, c, e, x23, y23, x3, y3, depth - 1);
+ return;
+ }
+ }
+ put(x3, y3);
+ };
+
+ const quad = (x0, y0, x1, y1, x2, y2) =>
+ cubic(
+ x0,
+ y0,
+ x0 + (2 / 3) * (x1 - x0),
+ y0 + (2 / 3) * (y1 - y0),
+ x2 + (2 / 3) * (x1 - x2),
+ y2 + (2 / 3) * (y1 - y2),
+ x2,
+ y2,
+ 20,
+ );
+
+ /** Endpoint parameterisation → centre parameterisation, per SVG appendix F.6.5. */
+ const arc = (x0, y0, rx, ry, rot, large, sweep, x1, y1) => {
+ if (rx === 0 || ry === 0) {
+ put(x1, y1);
+ return;
+ }
+ rx = Math.abs(rx);
+ ry = Math.abs(ry);
+ const phi = (rot * Math.PI) / 180;
+ const cp = Math.cos(phi);
+ const sp = Math.sin(phi);
+ const dx2 = (x0 - x1) / 2;
+ const dy2 = (y0 - y1) / 2;
+ const x1p = cp * dx2 + sp * dy2;
+ const y1p = -sp * dx2 + cp * dy2;
+ const lam = (x1p * x1p) / (rx * rx) + (y1p * y1p) / (ry * ry);
+ if (lam > 1) {
+ const s = Math.sqrt(lam);
+ rx *= s;
+ ry *= s;
+ }
+ const sign = large === sweep ? -1 : 1;
+ const top = rx * rx * ry * ry - rx * rx * y1p * y1p - ry * ry * x1p * x1p;
+ const bot = rx * rx * y1p * y1p + ry * ry * x1p * x1p;
+ const co = sign * Math.sqrt(Math.max(0, top / bot));
+ const cxp = (co * rx * y1p) / ry;
+ const cyp = (-co * ry * x1p) / rx;
+ const ccx = cp * cxp - sp * cyp + (x0 + x1) / 2;
+ const ccy = sp * cxp + cp * cyp + (y0 + y1) / 2;
+ const th0 = Math.atan2((y1p - cyp) / ry, (x1p - cxp) / rx);
+ let dth = Math.atan2((-y1p - cyp) / ry, (-x1p - cxp) / rx) - th0;
+ if (!sweep && dth > 0) dth -= 2 * Math.PI;
+ if (sweep && dth < 0) dth += 2 * Math.PI;
+ // Segment count from the arc's own length against the tolerance, so a
+ // quarter-unit terminal and a full ellipse are both drawn to the same
+ // accuracy. Capped so a degenerate radius cannot spin.
+ const rmax = Math.max(rx, ry);
+ const segs = Math.min(256, Math.max(1, Math.ceil((Math.abs(dth) * rmax) / Math.max(tol, 1e-9) / 8)));
+ for (let k = 1; k <= segs; k += 1) {
+ const th = th0 + (dth * k) / segs;
+ const ct = Math.cos(th);
+ const st = Math.sin(th);
+ put(ccx + cp * rx * ct - sp * ry * st, ccy + sp * rx * ct + cp * ry * st);
+ }
+ };
+
+ let cmd = null;
+ ws();
+ while (i < n) {
+ const c = d[i];
+ if (/[A-Za-z]/.test(c)) {
+ cmd = c;
+ i += 1;
+ } else if (cmd === null) {
+ throw new Error(`a path begins with "${c}"`);
+ }
+ let rel;
+ let K;
+
+ if (cmd === "Z" || cmd === "z") {
+ close();
+ cx = sx;
+ cy = sy;
+ rcx = rcy = rqx = rqy = null;
+ ws();
+ continue;
+ }
+
+ do {
+ // Re-read the command each time round. A moveto's *trailing* pairs are
+ // implicit linetos per the grammar, so the command changes mid-run — and
+ // hoisting this out of the loop is not a style choice, it is the bug that
+ // made every trailing pair open a fresh subpath and dragged the giant text
+ // path's bounding box 185 units off the left edge of the page.
+ rel = cmd === cmd.toLowerCase();
+ K = cmd.toUpperCase();
+ if (K === "M") {
+ const x = number() + (rel ? cx : 0);
+ const y = number() + (rel ? cy : 0);
+ open(x, y);
+ cx = sx = x;
+ cy = sy = y;
+ rcx = rcy = rqx = rqy = null;
+ // Trailing pairs after a moveto are implicit linetos, per the grammar.
+ cmd = rel ? "l" : "L";
+ } else if (K === "L") {
+ ensure();
+ cx = number() + (rel ? cx : 0);
+ cy = number() + (rel ? cy : 0);
+ put(cx, cy);
+ rcx = rcy = rqx = rqy = null;
+ } else if (K === "H") {
+ ensure();
+ cx = number() + (rel ? cx : 0);
+ put(cx, cy);
+ rcx = rcy = rqx = rqy = null;
+ } else if (K === "V") {
+ ensure();
+ cy = number() + (rel ? cy : 0);
+ put(cx, cy);
+ rcx = rcy = rqx = rqy = null;
+ } else if (K === "C" || K === "S") {
+ let x1;
+ let y1;
+ if (K === "C") {
+ x1 = number() + (rel ? cx : 0);
+ y1 = number() + (rel ? cy : 0);
+ } else {
+ x1 = rcx === null ? cx : 2 * cx - rcx;
+ y1 = rcy === null ? cy : 2 * cy - rcy;
+ }
+ const x2 = number() + (rel ? cx : 0);
+ const y2 = number() + (rel ? cy : 0);
+ const x3 = number() + (rel ? cx : 0);
+ const y3 = number() + (rel ? cy : 0);
+ ensure();
+ cubic(cx, cy, x1, y1, x2, y2, x3, y3, 20);
+ rcx = x2;
+ rcy = y2;
+ rqx = rqy = null;
+ cx = x3;
+ cy = y3;
+ } else if (K === "Q" || K === "T") {
+ let x1;
+ let y1;
+ if (K === "Q") {
+ x1 = number() + (rel ? cx : 0);
+ y1 = number() + (rel ? cy : 0);
+ } else {
+ x1 = rqx === null ? cx : 2 * cx - rqx;
+ y1 = rqy === null ? cy : 2 * cy - rqy;
+ }
+ const x2 = number() + (rel ? cx : 0);
+ const y2 = number() + (rel ? cy : 0);
+ ensure();
+ quad(cx, cy, x1, y1, x2, y2);
+ rqx = x1;
+ rqy = y1;
+ rcx = rcy = null;
+ cx = x2;
+ cy = y2;
+ } else if (K === "A") {
+ const rx = number();
+ const ry = number();
+ const rot = number();
+ const large = flag();
+ const sweep = flag();
+ const x1 = number() + (rel ? cx : 0);
+ const y1 = number() + (rel ? cy : 0);
+ ensure();
+ arc(cx, cy, rx, ry, rot, large, sweep, x1, y1);
+ rcx = rcy = rqx = rqy = null;
+ cx = x1;
+ cy = y1;
+ } else {
+ throw new Error(`path command "${cmd}" is not handled`);
+ }
+ } while (more());
+ ws();
+ }
+ close();
+ return rings;
+}
+
+// ------------------------------------------------------------- the raster --
+
+/**
+ * One fillable shape: its rings, its fill rule, its bounds, and a coarse index
+ * from a horizontal band to the edges that cross it.
+ *
+ * The index is what makes a per-mark window cheap. A shipped page is a handful
+ * of paths and one of them has forty thousand characters in it; without the
+ * bands, measuring a six-unit-wide mark would walk every edge on the page.
+ */
+export function shapeOf(rings, fillRule) {
+ let n = 0;
+ for (const r of rings) n += r.length / 2;
+ const ex = new Float64Array(n * 4);
+ let k = 0;
+ let minX = Infinity;
+ let minY = Infinity;
+ let maxX = -Infinity;
+ let maxY = -Infinity;
+ for (const r of rings) {
+ const c = r.length / 2;
+ for (let a = 0; a < c; a += 1) {
+ const b = (a + 1) % c;
+ ex[k] = r[a * 2];
+ ex[k + 1] = r[a * 2 + 1];
+ ex[k + 2] = r[b * 2];
+ ex[k + 3] = r[b * 2 + 1];
+ k += 4;
+ if (r[a * 2] < minX) minX = r[a * 2];
+ if (r[a * 2] > maxX) maxX = r[a * 2];
+ if (r[a * 2 + 1] < minY) minY = r[a * 2 + 1];
+ if (r[a * 2 + 1] > maxY) maxY = r[a * 2 + 1];
+ }
+ }
+ const BAND = 2;
+ const b0 = Math.floor(minY / BAND);
+ const nb = Math.max(1, Math.ceil(maxY / BAND) - b0 + 1);
+ const bands = Array.from({ length: nb }, () => []);
+ for (let e = 0; e < n; e += 1) {
+ const ya = ex[e * 4 + 1];
+ const yb = ex[e * 4 + 3];
+ if (ya === yb) continue; // horizontal edges never cross a scanline
+ const lo = Math.max(0, Math.floor(Math.min(ya, yb) / BAND) - b0);
+ const hi = Math.min(nb - 1, Math.floor(Math.max(ya, yb) / BAND) - b0);
+ for (let q = lo; q <= hi; q += 1) bands[q].push(e);
+ }
+ return { ex, n, rings, fillRule, box: [minX, minY, maxX, maxY], bands, b0, BAND };
+}
+
+/**
+ * A binary mask of a window, sampled at pixel centres.
+ *
+ * `x0, y0` are the window's top-left in target units; `cols × rows` samples at
+ * `1/res` units apart, sample `(i, j)` testing the point
+ * `(x0 + (i + 0.5)/res, y0 + (j + 0.5)/res)`. Centre sampling rather than corner
+ * sampling because a mark is a handful of samples across and a half-sample
+ * systematic shift would show up as exactly the registration bias this is meant
+ * to measure.
+ *
+ * Shapes are OR-ed in, one fill at a time. See the header on why they are never
+ * merged.
+ */
+export function rasterise(shapes, x0, y0, cols, rows, res) {
+ const mask = new Uint8Array(cols * rows);
+ const xs = [];
+ const ws = [];
+ for (const s of shapes) {
+ if (s.box[2] < x0 || s.box[0] > x0 + cols / res) continue;
+ if (s.box[3] < y0 || s.box[1] > y0 + rows / res) continue;
+ for (let j = 0; j < rows; j += 1) {
+ const y = y0 + (j + 0.5) / res;
+ if (y < s.box[1] || y > s.box[3]) continue;
+ const bi = Math.floor(y / s.BAND) - s.b0;
+ if (bi < 0 || bi >= s.bands.length) continue;
+ xs.length = 0;
+ ws.length = 0;
+ for (const e of s.bands[bi]) {
+ const ya = s.ex[e * 4 + 1];
+ const yb = s.ex[e * 4 + 3];
+ if (ya <= y === yb <= y) continue;
+ const xa = s.ex[e * 4];
+ const xb = s.ex[e * 4 + 2];
+ xs.push(xa + ((y - ya) * (xb - xa)) / (yb - ya));
+ ws.push(yb > ya ? 1 : -1);
+ }
+ if (xs.length < 2) continue;
+ const ord = xs.map((_, q) => q).sort((a, b) => xs[a] - xs[b]);
+ const row = j * cols;
+ let wind = 0;
+ for (let q = 0; q < ord.length - 1; q += 1) {
+ wind += ws[ord[q]];
+ const inside = s.fillRule === "evenodd" ? (q & 1) === 0 : wind !== 0;
+ if (!inside) continue;
+ const xa = xs[ord[q]];
+ const xb = xs[ord[q + 1]];
+ let ia = Math.ceil((xa - x0) * res - 0.5);
+ let ib = Math.ceil((xb - x0) * res - 0.5);
+ if (ia < 0) ia = 0;
+ if (ib > cols) ib = cols;
+ for (let p = ia; p < ib; p += 1) mask[row + p] = 1;
+ }
+ }
+ }
+ return mask;
+}
+
+/**
+ * Summed-area table of a mask, so "how much ink is in this rectangle" is four
+ * lookups however many times it is asked.
+ *
+ * It is asked a great many times: the offset search below evaluates a few
+ * hundred candidate placements per mark, and each one needs the ink count under
+ * a moved rectangle.
+ */
+export function integral(mask, cols, rows) {
+ const sat = new Int32Array((cols + 1) * (rows + 1));
+ for (let j = 0; j < rows; j += 1) {
+ let run = 0;
+ for (let i = 0; i < cols; i += 1) {
+ run += mask[j * cols + i];
+ sat[(j + 1) * (cols + 1) + i + 1] = sat[j * (cols + 1) + i + 1] + run;
+ }
+ }
+ return sat;
+}
+
+/** Ink count in `[i0, i1) × [j0, j1)`, clamped to the window. */
+export function boxSum(sat, cols, rows, i0, j0, i1, j1) {
+ const a = Math.max(0, Math.min(cols, i0));
+ const b = Math.max(0, Math.min(rows, j0));
+ const c = Math.max(0, Math.min(cols, i1));
+ const e = Math.max(0, Math.min(rows, j1));
+ if (c <= a || e <= b) return 0;
+ const W = cols + 1;
+ return sat[e * W + c] - sat[b * W + c] - sat[e * W + a] + sat[b * W + a];
+}
+
+// -------------------------------------------------------- reading a page --
+
+const TAG = /<(path|g|\/g|svg)\b([^>]*)>/g;
+
+const attrOf = (s, k) => s.match(new RegExp(`\\s${k}="([^"]*)"`))?.[1] ?? null;
+
+/**
+ * Every filled path on one of our own pages, flattened into the page's own
+ * viewBox frame, plus that frame.
+ *
+ * Two exclusions, both load-bearing:
+ *
+ * - `fill-opacity="0"` — the ayah tap targets. They are full-page-width bands
+ * and counting them as ink would score every mark on the page at 100%.
+ * - `fill="none"` — nothing in these pages carries it today, but a stroke-only
+ * path arriving later would otherwise be filled as if it were solid.
+ *
+ * The `` stack is tracked properly rather than assuming one matrix, because
+ * the tap targets sit outside the transform group and the ornaments inside it,
+ * and a flat read would put one of the two in the wrong frame.
+ */
+export function readPageInk(svg, tol) {
+ const vb = (svg.match(/viewBox="([^"]*)"/)?.[1] ?? "0 0 345 550").split(/\s+/).map(Number);
+ const stack = [IDENTITY];
+ const shapes = [];
+ for (const t of svg.matchAll(TAG)) {
+ if (t[1] === "/g") {
+ if (stack.length > 1) stack.pop();
+ continue;
+ }
+ if (t[1] === "g" || t[1] === "svg") {
+ const tr = attrOf(t[2], "transform");
+ if (t[1] === "g") stack.push(tr ? compose(stack[stack.length - 1], parseTransform(tr)) : stack[stack.length - 1]);
+ continue;
+ }
+ const d = attrOf(t[2], "d");
+ if (!d) continue;
+ const fill = attrOf(t[2], "fill");
+ if (fill === "none") continue;
+ if (attrOf(t[2], "fill-opacity") === "0") continue;
+ const rings = flatten(d, stack[stack.length - 1], tol);
+ if (!rings.length) continue;
+ shapes.push(shapeOf(rings, attrOf(t[2], "fill-rule") === "evenodd" ? "evenodd" : "nonzero"));
+ }
+ return { vb, shapes };
+}
diff --git a/packages/etl/scripts/lib/mark-ink.mjs b/packages/etl/scripts/lib/mark-ink.mjs
new file mode 100644
index 0000000..9a0472a
--- /dev/null
+++ b/packages/etl/scripts/lib/mark-ink.mjs
@@ -0,0 +1,303 @@
+/**
+ * Two questions about one rectangle, and the arithmetic that separates them.
+ *
+ * A mark's box says two things at once: *here* and *a kasra*. They fail
+ * independently and they cost differently, so they are scored separately here
+ * and never combined into one number.
+ *
+ * - **Registration** — is the box where the mark is? Scored by sliding the
+ * mark's own outline over the shipped print and recording where it fits best.
+ * The answer is a displacement in page units, and a displacement has a mean,
+ * which is why this can tell a *bias* (correctable) from *noise* (not).
+ * - **Identity** — is the ink under the box the mark we named? Scored by putting
+ * all twenty-six marks the print knows how to draw on the same spot and asking
+ * which one the ink looks most like. The answer is a class, so it has a
+ * confusion matrix.
+ *
+ * ## The two numbers, and what they physically mean
+ *
+ * Both are computed on binary masks sampled at a fixed number of points per page
+ * unit, over the rectangle the outline being tested occupies.
+ *
+ * **Overlap** is the Jaccard index — shared area over combined area — which is
+ * the same quantity object detection has scored boxes with since PASCAL VOC, and
+ * which document-layout benchmarks still use. It is reported because it is
+ * legible: 0.60 means three fifths of the ink and the outline coincide. It is
+ * *not* used to choose a placement, because it rewards a placement that simply
+ * finds more ink.
+ *
+ * **Agreement** is the correlation coefficient between the two masks — the
+ * ordinary product-moment correlation of two 0/1 variables, which is what
+ * normalised cross-correlation reduces to when both images are binary. It is
+ * what chooses the placement, because it is scored against what would be
+ * expected by chance *at that ink density*: a template dragged onto a solid
+ * black letter scores near zero, not near one. That property is the whole reason
+ * the offset search cannot be fooled by sliding downhill into the nearest heavy
+ * stroke, and it is why the two metrics are both here rather than one.
+ *
+ * Agreement of 1 is an exact match; 0 is exactly chance; negative means the
+ * outline lands where the ink is not. On a mark of median size — 6.3 by 3.4 page
+ * units, so about a hundred by fifty samples — one sample is a fortieth of the
+ * mark's height, and the smallest displacement this can resolve is that.
+ *
+ * ## Why a placement search at all, when the claim is about one rectangle
+ *
+ * Because "the box is 0.3 units low" and "the box is on the wrong letter" are
+ * the same verdict if all you measure is the score at the claimed spot. The
+ * search turns one number into three — how well it fits where it claims, how
+ * well it could fit, and how far it had to move — and only the third can tell a
+ * print that is slightly out of register from one that is mislabelled.
+ */
+import { boxSum, rasterise, shapeOf, flatten } from "./ink.mjs";
+
+/**
+ * A reproducible stream of numbers in `[0, 1)`.
+ *
+ * Sampling has to be reproducible or a reported rate is not a measurement of
+ * anything — someone re-running it gets a different sample and a different
+ * number and has no way to tell which of the two moved. `Math.random` cannot be
+ * seeded, so this is the standard 32-bit mixer, chosen because it is eight lines
+ * and has no state anybody has to trust.
+ */
+export function rng(seed) {
+ let a = seed >>> 0;
+ return () => {
+ a = (a + 0x6d2b79f5) >>> 0;
+ let t = a;
+ t = Math.imul(t ^ (t >>> 15), t | 1);
+ t ^= t + Math.imul(t ^ (t >>> 7), t | 61);
+ return ((t ^ (t >>> 14)) >>> 0) / 4294967296;
+ };
+}
+
+/**
+ * The Wilson score interval for a proportion.
+ *
+ * Every rate in this probe is `k` of `n` drawn from 326,515, so every rate needs
+ * an interval or it is a number with no scale on it. Wilson rather than the
+ * textbook normal approximation for one specific reason: the interesting rates
+ * here are small — a percent or two — and the normal approximation puts the
+ * lower bound of a small proportion below zero, which is not a statement about
+ * anything. Wilson stays inside `[0, 1]` and behaves at `k = 0`, which is the
+ * case a passing run is most likely to be in.
+ *
+ * `z` defaults to 1.96, the two-sided 95% normal quantile.
+ */
+export function wilson(k, n, z = 1.959964) {
+ if (n === 0) return [0, 1];
+ const p = k / n;
+ const d = 1 + (z * z) / n;
+ const c = p + (z * z) / (2 * n);
+ const s = z * Math.sqrt(p * (1 - p) / n + (z * z) / (4 * n * n));
+ return [Math.max(0, (c - s) / d), Math.min(1, (c + s) / d)];
+}
+
+/**
+ * How many marks would have to be looked at to resolve a rate of `p` to within
+ * `±e`, if the sample were drawn from an infinite population — then corrected
+ * for the fact that it is drawn from `N`.
+ *
+ * Reported rather than assumed, because "we sampled five hundred" and "five
+ * hundred is enough to see a one percent effect" are different claims and only
+ * the second is worth anything.
+ */
+export function sampleSizeFor(p, e, N, z = 1.959964) {
+ const n0 = (z * z * p * (1 - p)) / (e * e);
+ return Math.ceil(n0 / (1 + (n0 - 1) / N));
+}
+
+// ------------------------------------------------------------------ masks --
+
+/**
+ * One outline, ready to be slid about: its samples as a sparse list, its own
+ * rectangle, and its area.
+ *
+ * Sparse rather than a dense mask because the search below evaluates several
+ * hundred placements and each one only ever asks about the samples the outline
+ * actually covers — which for a thin curved stroke in its own bounding box is
+ * around a third of them.
+ */
+export function stamp(rings, ox, oy, cols, rows, res) {
+ const mask = rasterise([shapeOf(rings, "nonzero")], ox, oy, cols, rows, res);
+ const is = [];
+ const js = [];
+ let i0 = cols;
+ let j0 = rows;
+ let i1 = 0;
+ let j1 = 0;
+ for (let j = 0; j < rows; j += 1) {
+ for (let i = 0; i < cols; i += 1) {
+ if (!mask[j * cols + i]) continue;
+ is.push(i);
+ js.push(j);
+ if (i < i0) i0 = i;
+ if (i > i1) i1 = i;
+ if (j < j0) j0 = j;
+ if (j > j1) j1 = j;
+ }
+ }
+ // Column and row are kept apart rather than as one flat index. A flat index
+ // plus a horizontal displacement walks off the end of its row and reappears at
+ // the start of the next one, which is not a translation of anything.
+ return {
+ is: Int32Array.from(is),
+ js: Int32Array.from(js),
+ box: [i0, j0, i1 + 1, j1 + 1],
+ area: is.length,
+ cols,
+ rows,
+ };
+}
+
+/**
+ * Agreement and overlap of one outline against the observed ink, at one
+ * displacement measured in samples.
+ *
+ * `di, dj` shift the outline, not the ink. Both metrics are computed over the
+ * outline's own rectangle at that displacement, so the denominator moves with
+ * the numerator and a placement is never rewarded for having been dragged
+ * somewhere with more paper in view.
+ *
+ * **Everything is counted over the same rectangle, and that is not a detail.**
+ * A displacement can push part of the outline off the edge of what was
+ * rasterised. If the shared samples were counted over the whole raster while the
+ * ink was counted over the visible rectangle only, the two counts would be about
+ * different regions, and a correlation coefficient computed from counts over two
+ * different regions is not bounded by one — an early version of this returned
+ * 5.509 for a deliberately-wrong placement, which is how the mistake was found.
+ * So the rectangle is clipped to the raster first, and the outline's own area is
+ * then recounted inside it.
+ */
+export function scoreAt(st, obs, sat, cols, rows, di, dj) {
+ const [bi0, bj0, bi1, bj1] = st.box;
+ const i0 = Math.max(0, Math.min(cols, bi0 + di));
+ const j0 = Math.max(0, Math.min(rows, bj0 + dj));
+ const i1 = Math.max(0, Math.min(cols, bi1 + di));
+ const j1 = Math.max(0, Math.min(rows, bj1 + dj));
+ const n = (i1 - i0) * (j1 - j0);
+ if (n <= 0) return { inter: 0, ink: 0, n: 0, t: 0, seen: 0, iou: 0, phi: 0 };
+ let t = 0;
+ let inter = 0;
+ for (let q = 0; q < st.is.length; q += 1) {
+ const i = st.is[q] + di;
+ const j = st.js[q] + dj;
+ if (i < i0 || i >= i1 || j < j0 || j >= j1) continue;
+ t += 1;
+ if (obs[j * cols + i]) inter += 1;
+ }
+ const ink = boxSum(sat, cols, rows, i0, j0, i1, j1);
+ const iou = t + ink - inter > 0 ? inter / (t + ink - inter) : 0;
+ const varT = t * (n - t);
+ const varI = ink * (n - ink);
+ const phi = varT > 0 && varI > 0 ? (n * inter - t * ink) / Math.sqrt(varT * varI) : 0;
+ // A correlation lies in [-1, 1] by construction, so a value outside it is not
+ // a bad score, it is a broken count — and a broken count that is merely
+ // reported looks like a very good match and gets believed. Loud, not clamped.
+ if (!(phi >= -1.0000001 && phi <= 1.0000001)) {
+ throw new Error(`agreement ${phi} is outside [-1, 1]: n=${n} outline=${t} ink=${ink} shared=${inter}`);
+ }
+ return { inter, ink, n, t, seen: st.area ? t / st.area : 0, iou, phi };
+}
+
+/**
+ * The best placement within `radius` page units of the claimed one.
+ *
+ * Two passes: a coarse sweep on a quarter-unit lattice, then a one-sample sweep
+ * around whatever the coarse pass liked. Two passes rather than one because a
+ * single one-sample sweep over a three-unit radius is ten thousand placements
+ * per mark and the surface is smooth enough not to need them; and because a
+ * coarse-only answer would quantise the displacement to a quarter unit, which is
+ * larger than the bias this exists to measure.
+ *
+ * Ties go to the smaller displacement, and that rule is load-bearing: a blank
+ * region scores zero everywhere, and without it the reported offset for an empty
+ * box would be whichever corner of the search the loop happened to reach last.
+ */
+export function bestPlacement(st, obs, sat, cols, rows, res, radius) {
+ let best = { di: 0, dj: 0, phi: -2, iou: 0 };
+ const consider = (di, dj) => {
+ const s = scoreAt(st, obs, sat, cols, rows, di, dj);
+ const far = di * di + dj * dj;
+ const bf = best.di * best.di + best.dj * best.dj;
+ if (s.phi > best.phi + 1e-12 || (Math.abs(s.phi - best.phi) <= 1e-12 && far < bf)) {
+ best = { di, dj, phi: s.phi, iou: s.iou, inter: s.inter, ink: s.ink, n: s.n };
+ }
+ };
+ const coarse = Math.max(1, Math.round(res / 4));
+ const span = Math.round(radius * res);
+ for (let dj = -span; dj <= span; dj += coarse) for (let di = -span; di <= span; di += coarse) consider(di, dj);
+ const ci = best.di;
+ const cj = best.dj;
+ for (let dj = cj - coarse; dj <= cj + coarse; dj += 1) for (let di = ci - coarse; di <= ci + coarse; di += 1) consider(di, dj);
+ return best;
+}
+
+// -------------------------------------------------------------- templates --
+
+/**
+ * One drawn mark, normalised so that two of them can be compared without either
+ * one's page getting a vote.
+ *
+ * The ligature corpus has a single frame for all 604 pages, so a mark's outline
+ * is already at a comparable size wherever it was drawn — but the *pages* we
+ * ship are not: pages 1 and 2 sit in a 235-unit square and the rest in a 345 by
+ * 550 rectangle, and the fitted scale between the two prints ranges from 1.16 to
+ * 1.33 across the corpus. So a template is kept in the corpus's own frame and
+ * carried onto a page by that page's own recorded fit, never by an average.
+ */
+export function outlineRings(d, sx, sy, tx, ty) {
+ return flatten(d, [sx, 0, 0, sy, tx, ty], 1 / 64);
+}
+
+/**
+ * One exemplar outline per mark name, chosen from the whole corpus.
+ *
+ * The exemplar is the instance closest to its own class's average shape, drawn
+ * at the corpus's own scale so that the comparison between two classes is a
+ * comparison of the marks and not of how big the print happened to draw them.
+ *
+ * **Why an average and not the first one found.** A print draws the same mark at
+ * slightly different sizes depending on what is under it — the design doc
+ * measures one such family at 0.89× an ordinary stroke. Taking the first
+ * instance in page order would pin every later comparison to whatever page 1
+ * happened to do. Taking the one nearest the average makes the choice a property
+ * of the class.
+ *
+ * **Why the nearest instance and not the average itself.** An averaged mask is a
+ * grey blur that no print ever drew, and a blur matches everything slightly. The
+ * exemplar is a real outline the publisher really drew, which is the only kind
+ * of template whose score means something on its own.
+ */
+export function chooseExemplars(instances, res, half) {
+ const cols = half * 2;
+ const rows = half * 2;
+ const out = new Map();
+ for (const [name, list] of instances) {
+ const masks = [];
+ for (const inst of list) {
+ const [x0, y0, x1, y1] = inst.box;
+ const cx = (x0 + x1) / 2;
+ const cy = (y0 + y1) / 2;
+ const rings = flatten(inst.d, [1, 0, 0, 1, 0, 0], 1 / (4 * res));
+ masks.push(rasterise([shapeOf(rings, "nonzero")], cx - half / res, cy - half / res, cols, rows, res));
+ }
+ const mean = new Float64Array(cols * rows);
+ for (const m of masks) for (let q = 0; q < m.length; q += 1) mean[q] += m[q];
+ for (let q = 0; q < mean.length; q += 1) mean[q] /= masks.length;
+ let bi = 0;
+ let bd = Infinity;
+ for (let k = 0; k < masks.length; k += 1) {
+ let e = 0;
+ for (let q = 0; q < mean.length; q += 1) {
+ const v = masks[k][q] - mean[q];
+ e += v * v;
+ }
+ if (e < bd) {
+ bd = e;
+ bi = k;
+ }
+ }
+ out.set(name, { ...list[bi], spread: Math.sqrt(bd / (cols * rows)), seen: list.length });
+ }
+ return out;
+}
diff --git a/packages/etl/scripts/lib/mark-shape.mjs b/packages/etl/scripts/lib/mark-shape.mjs
new file mode 100644
index 0000000..f2f7a57
--- /dev/null
+++ b/packages/etl/scripts/lib/mark-shape.mjs
@@ -0,0 +1,398 @@
+/**
+ * Does the drawing match the name, with no page anywhere in the question?
+ *
+ * There are two separate things that can be wrong with a mark, and for a while
+ * this repo measured them as one number — which is how you get a headline that
+ * swings eighteen points depending on how you choose to count:
+ *
+ * 1. **The rectangle is in the wrong place.** That is a question about two
+ * printings of the same mus'haf and the transform between them, and it is
+ * answered in `mark-ink.mjs`, which needs the shipped page's ink to answer it.
+ * 2. **The drawing does not match the name it was given.** That is a question
+ * about *one* printing, on its own. The corpus drew an outline and, in the
+ * same breath, named it. Either the two agree or they do not, and no page, no
+ * fitted transform and no second printing enters the arithmetic.
+ *
+ * Everything in this file answers only the second. That is deliberate and it is
+ * the point: a displacement cannot contaminate a measurement it is not an input
+ * to. The two probes can then be set beside each other and the comparison means
+ * something, because neither one's failures are the other's.
+ *
+ * ## The three outcomes, which are never summed
+ *
+ * A drawing is scored against one canonical example of every name the print
+ * knows, all of them centred on the same spot and stretched to the same box —
+ * see `fitTo` for why the size has to be taken out before anything else is
+ * asked. The winner is then read against the label three ways:
+ *
+ * - **agrees** — the winner is the label.
+ * - **indistinguishable** — the winner is a different name that this print draws
+ * as the *same shape*. A fatha and a kasra are one short stroke each; what
+ * separates them is that one sits above the letter and one below, and a
+ * comparison that centres both has thrown that away before it starts. This is
+ * a **limit of the method**, not a defect in the data, and counting it as a
+ * disagreement would be measuring the question rather than the corpus.
+ * - **differs** — the winner is outside the label's shape group. Only this one
+ * is a finding about the data, and only this one is worth a person's time.
+ *
+ * The groups are not a list somebody wrote down; they are derived below by
+ * scoring every canonical example against every other and joining any pair that
+ * agrees above a stated threshold. So the excuse in the middle column is
+ * auditable: it is a number, it came from the print, and if the print changes it
+ * changes with it.
+ */
+import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
+import { dirname } from "node:path";
+import { integral, rasterise, shapeOf } from "./ink.mjs";
+import { chooseExemplars, outlineRings, scoreAt, stamp } from "./mark-ink.mjs";
+import { pathBBox } from "./mushaf-frame.mjs";
+
+/**
+ * One canonical example per drawn name, over the whole cache — built once and
+ * shared by both probes.
+ *
+ * Shared and not merely similar: the placement probe and the labelling probe
+ * have to be comparable, and two libraries of templates built by two functions
+ * would eventually differ by one page's worth of scan and make every comparison
+ * between the two probes an argument about which library was right.
+ *
+ * Built rather than committed. It is derived from bytes already pinned by hash,
+ * so committing it would be a second copy of the same fact with its own way of
+ * going stale. Cached in `out/` because the scan is the slowest thing either
+ * probe does and nothing about it changes between runs.
+ *
+ * The reservoir halves itself when it fills, which keeps the kept instances
+ * evenly spread over the corpus in one pass without knowing the class counts up
+ * front — the alternative, keeping the first few hundred, would pin every later
+ * comparison to whatever the opening pages happen to do.
+ */
+export function loadExemplars({ cacheFile, pages, outlinesOf, rebuild = false, cap = 256 }) {
+ if (existsSync(cacheFile) && !rebuild) return new Map(JSON.parse(readFileSync(cacheFile, "utf8")));
+ const kept = new Map();
+ const stride = new Map();
+ const seen = new Map();
+ for (const p of pages) {
+ for (const o of outlinesOf(p)) {
+ const c = (seen.get(o.name) ?? 0) + 1;
+ seen.set(o.name, c);
+ const s = stride.get(o.name) ?? 1;
+ if ((c - 1) % s !== 0) continue;
+ if (!kept.has(o.name)) kept.set(o.name, []);
+ const list = kept.get(o.name);
+ list.push({ page: p, d: o.d, box: pathBBox(o.d) });
+ if (list.length > cap) {
+ kept.set(
+ o.name,
+ list.filter((_, i) => i % 2 === 0),
+ );
+ stride.set(o.name, s * 2);
+ }
+ }
+ }
+ // 6 samples per corpus unit over 12 units square: the widest mark in the
+ // corpus is 8.2 by 7.4 there, so nothing is clipped by the frame.
+ const chosen = chooseExemplars(kept, 6, 36);
+ for (const [name, v] of chosen) v.of = seen.get(name);
+ mkdirSync(dirname(cacheFile), { recursive: true });
+ writeFileSync(cacheFile, JSON.stringify([...chosen]));
+ return chosen;
+}
+
+/**
+ * The frame every shape comparison happens in.
+ *
+ * Twelve samples per corpus unit over a twelve-unit square. The widest mark in
+ * the corpus is 8.2 by 7.4 units, so nothing is clipped by the frame; twelve
+ * samples a unit puts about eighty by forty on a mark of middling size — fine
+ * enough that the difference between two names is many samples wide, coarse
+ * enough that the whole twenty-six-by-twenty-six matrix is instant.
+ */
+export const SHAPE_RES = 12;
+export const SHAPE_HALF = 72;
+
+/**
+ * One drawing, centred in that frame — optionally stretched to a stated box —
+ * as both a sparse stamp and a dense mask.
+ *
+ * Centred on the middle of its own bounding box, which is the whole reason this
+ * is a *shape* comparison: where the mark sat relative to its letter is
+ * discarded here, on purpose, and the cost of discarding it is exactly the
+ * middle column of the three outcomes above.
+ *
+ * The box comes from the curve's true extrema rather than from the flattened
+ * outline, and every caller uses this one function, so that two drawings are
+ * never centred by two slightly different rules — a half-sample of disagreement
+ * about where the middle is would show up as a shape difference and be believed.
+ *
+ * `sx, sy` stretch the drawing about that same centre before it is sampled. At
+ * 1, 1 this is the plain centring it always was; the comparison below uses it to
+ * put the canonical example on the box of whatever it is being compared against,
+ * for the reason `fitTo` explains.
+ */
+export function centred(d, res = SHAPE_RES, half = SHAPE_HALF, sx = 1, sy = 1) {
+ const [x0, y0, x1, y1] = pathBBox(d);
+ const rings = outlineRings(
+ d,
+ sx,
+ sy,
+ -((x0 + x1) / 2) * sx + half / res,
+ -((y0 + y1) / 2) * sy + half / res,
+ );
+ const cols = half * 2;
+ const rows = half * 2;
+ return {
+ s: stamp(rings, 0, 0, cols, rows, res),
+ m: rasterise([shapeOf(rings, "nonzero")], 0, 0, cols, rows, res),
+ cols,
+ rows,
+ size: [x1 - x0, y1 - y0],
+ };
+}
+
+/**
+ * How much to stretch one drawing so its box matches another's.
+ *
+ * **Why this exists at all.** For a while this file compared every drawing to
+ * every canonical example at the size each happened to be drawn, and that is a
+ * measurement of two things at once: whether two marks are the same shape, and
+ * whether the print drew them the same size. The print does not draw them the
+ * same size — it sets a mark smaller under a crowded word and larger under an
+ * open one, and for some names the difference between the tenth and the
+ * ninetieth of the corpus is a third of the mark's own width. When the two sizes
+ * disagree, ink lands on gap, and the agreement score does not merely fall: it
+ * goes *negative*, because ink where the example says paper is worse than
+ * nothing. Two drawings a reader calls the same glyph came back at minus
+ * nought-point-one, and a negative number between two identical-looking shapes
+ * is not a fact about the print. It is the comparison misaligning them.
+ *
+ * The effect is worst where a name is drawn from more than one piece *and* at a
+ * range of sizes. A single stroke slid off by a tenth still overlaps itself and
+ * degrades gently; a mark made of a vowel above a small letter re-spaces its two
+ * pieces when it grows, and both of them miss.
+ *
+ * **Both axes, not one.** Matching the diagonals — one number, isotropic —
+ * recovers most of it, and matching width and height separately recovers nearly
+ * all: the print stretches some marks along one axis only. The cost is that the
+ * comparison can no longer use *proportion* as evidence, and that cost is paid
+ * openly rather than assumed away: the whole square is recomputed with it, and
+ * the names it can no longer tell apart are exactly the two pairs it could not
+ * tell apart before. Nothing new was merged. What changed is that the pairs the
+ * old arithmetic left hovering just under the line — four of them within a
+ * tenth — fell away from it, so the grouping is decided by a wider gap than it
+ * used to be.
+ *
+ * **Rounded to a grid** so the cache of stretched examples is finite and two
+ * runs of this file agree to the byte. A fiftieth of a scale moves a
+ * middling mark by about a sample, which is the resolution the comparison has
+ * anyway; and the bounds keep a hairline or a stray blob from asking for a
+ * stretch no drawing could survive.
+ */
+export const FIT_STEP = 0.02;
+export function fitTo(from, to) {
+ const q = (v) => Math.max(0.2, Math.min(5, Math.round(v / FIT_STEP) * FIT_STEP));
+ const fw = from[2] - from[0];
+ const fh = from[3] - from[1];
+ return [q(fw > 0 ? (to[2] - to[0]) / fw : 1), q(fh > 0 ? (to[3] - to[1]) / fh : 1)];
+}
+
+/**
+ * Every canonical example scored against every other — the whole square, not
+ * each one's nearest neighbour.
+ *
+ * Published in full rather than summarised, because the shape groups derived
+ * from it decide which disagreements are excused, and an excuse that cannot be
+ * audited is one that will eventually be believed for the wrong reason.
+ *
+ * Each example is stretched onto the box of the one it is being scored against,
+ * for the reason `fitTo` gives, so every cell of the square asks about shape and
+ * nothing about size. Both directions are still computed and kept: they come out
+ * near enough identical once the boxes match — the agreement formula is
+ * symmetric in its two masks and they now share a rectangle — but they are
+ * measured rather than assumed, and the grouping below still takes the larger of
+ * each pair, which is the reading that excuses the most and therefore the one
+ * that cannot be accused of manufacturing disagreements.
+ */
+export function similarityMatrix(lib, res = SHAPE_RES, half = SHAPE_HALF) {
+ const names = [...lib.keys()].sort();
+ const box = new Map();
+ for (const name of names) box.set(name, pathBBox(lib.get(name).d));
+ const cols = half * 2;
+ const rows = half * 2;
+ const phi = names.map(() => new Float64Array(names.length));
+ for (let a = 0; a < names.length; a += 1) {
+ const A = centred(lib.get(names[a]).d, res, half);
+ const sat = integral(A.m, cols, rows);
+ for (let b = 0; b < names.length; b += 1) {
+ const [sx, sy] = fitTo(box.get(names[b]), box.get(names[a]));
+ const B = centred(lib.get(names[b]).d, res, half, sx, sy);
+ phi[a][b] = scoreAt(B.s, A.m, sat, cols, rows, 0, 0).phi;
+ }
+ }
+ return { names, phi };
+}
+
+/**
+ * Names this method is not entitled to tell apart, derived from that matrix.
+ *
+ * Union-find over every pair whose agreement — the more generous of the two
+ * directions — reaches the threshold. Returns the representative for any name,
+ * the groups themselves, and the pairs that caused each join, so a reader can
+ * see not merely *that* two names were merged but which number merged them.
+ */
+export function shapeGroups({ names, phi }, threshold) {
+ const parent = new Map(names.map((n) => [n, n]));
+ const find = (x) => (parent.get(x) === x ? x : (parent.set(x, find(parent.get(x))), parent.get(x)));
+ const joins = [];
+ for (let a = 0; a < names.length; a += 1) {
+ for (let b = a + 1; b < names.length; b += 1) {
+ const v = Math.max(phi[a][b], phi[b][a]);
+ if (v < threshold) continue;
+ joins.push({ a: names[a], b: names[b], phi: v });
+ const ra = find(names[a]);
+ const rb = find(names[b]);
+ if (ra !== rb) parent.set(ra, rb);
+ }
+ }
+ const members = new Map();
+ for (const n of names) {
+ const g = find(n);
+ if (!members.has(g)) members.set(g, []);
+ members.get(g).push(n);
+ }
+ return {
+ groupOf: (n) => (parent.has(n) ? find(n) : n),
+ groups: [...members.values()].filter((v) => v.length > 1).map((v) => v.slice().sort()),
+ joins: joins.sort((x, y) => y.phi - x.phi),
+ threshold,
+ };
+}
+
+/**
+ * The strokes a mark is drawn from, in the order the print drew them.
+ *
+ * A mark like a vowel over a small letter is not one closed shape; it is two or
+ * three, written one after another in the same instruction. Splitting on the
+ * move that starts each one recovers them exactly, because the split is the
+ * print's own division and not an inference from the picture.
+ */
+export function pieces(d) {
+ return d.split(/(?=[Mm])/).filter((s) => s.trim().length > 2);
+}
+
+/**
+ * Are these the wrong strokes, or the right strokes set at the wrong distance?
+ *
+ * A whole-shape comparison answers "is this the same picture", and for a mark
+ * drawn from one stroke that is the same question as "is this the same mark".
+ * For a mark drawn from three it is not, because the picture also encodes how
+ * far apart the print set them — and this print does not set them at a fixed
+ * distance. So a comparison can report a stark disagreement about a drawing
+ * whose every stroke is the canonical stroke.
+ *
+ * This separates the two. Each stroke is scored against the canonical example's
+ * stroke in the same position, which answers the first question; and the
+ * distances between stroke centres are compared, in units of the mark's own
+ * size, which answers the second. A caller that has both can say which of them
+ * a disagreement is about, and — this is the point — can find out that the
+ * answer is *always* the second, which is a fact about the comparison rather
+ * than about the corpus, and is not one any single number would have given.
+ *
+ * Returns nothing when the two are not drawn from the same number of strokes,
+ * because then there is no pairing to make and pretending otherwise would put a
+ * number on a comparison that was never made.
+ */
+export function pieceCheck(d, ex, res = SHAPE_RES, half = SHAPE_HALF) {
+ const P = pieces(d);
+ const Q = pieces(ex);
+ if (P.length !== Q.length) return null;
+ const one = (a, b) => {
+ const A = centred(a, res, half);
+ const [sx, sy] = fitTo(pathBBox(b), pathBBox(a));
+ const B = centred(b, res, half, sx, sy);
+ if (!A.s.area || !B.s.area) return 0;
+ return scoreAt(B.s, A.m, integral(A.m, A.cols, A.rows), A.cols, A.rows, 0, 0).phi;
+ };
+ const per = P.map((_, i) => one(P[i], Q[i]));
+ const mid = (s) => {
+ const b = pathBBox(s);
+ return [(b[0] + b[2]) / 2, (b[1] + b[3]) / 2];
+ };
+ const span = (b) => Math.max(b[2] - b[0], b[3] - b[1]);
+ const dz = span(pathBBox(d));
+ const ez = span(pathBBox(ex));
+ let spacing = 0;
+ for (let i = 0; i < P.length; i += 1) {
+ for (let j = i + 1; j < P.length; j += 1) {
+ const a = mid(P[i]);
+ const b = mid(P[j]);
+ const c = mid(Q[i]);
+ const e = mid(Q[j]);
+ spacing = Math.max(
+ spacing,
+ Math.hypot((a[0] - b[0]) / dz - (c[0] - e[0]) / ez, (a[1] - b[1]) / dz - (c[1] - e[1]) / ez),
+ );
+ }
+ }
+ return { per, worst: Math.min(...per), spacing, n: P.length };
+}
+
+/**
+ * A reusable comparer: any drawing scored against every canonical example,
+ * each one stretched onto that drawing's own box, and given the three-way
+ * verdict.
+ *
+ * **The stretch is decided by the drawing, never by the label.** Every example
+ * is put on the same box, so the label the corpus wrote gets no say in how any
+ * of them is drawn, and the winner would be the same if the label were replaced
+ * with any other. That is what lets a caller plant a deliberately wrong label
+ * and learn something from what happens: the planted label costs nothing to
+ * evaluate and cannot flatter itself.
+ *
+ * Stretched examples are cached, because a whole-corpus pass asks for the same
+ * few hundred thousand comparisons at a few hundred distinct sizes, and the
+ * rounding in `fitTo` is what makes that cache finite.
+ *
+ * `margin` is how far the winner beat the label's own example. It is reported
+ * rather than thresholded here, because what counts as a decisive win is a
+ * property of how far two instances of the *same* name normally sit apart —
+ * which the caller measures, and which this function has no business assuming.
+ */
+export function classifier(lib, groupOf, res = SHAPE_RES, half = SHAPE_HALF) {
+ const ex = [];
+ for (const [name, e] of lib) {
+ if (centred(e.d, res, half).s.area) ex.push({ name, d: e.d, box: pathBBox(e.d) });
+ }
+ const cache = new Map();
+ const stampFor = (e, sx, sy) => {
+ const k = `${e.name}|${sx.toFixed(2)}|${sy.toFixed(2)}`;
+ let v = cache.get(k);
+ if (!v) {
+ v = centred(e.d, res, half, sx, sy).s;
+ cache.set(k, v);
+ }
+ return v;
+ };
+ return (d, label) => {
+ const obs = centred(d, res, half);
+ if (!obs.s.area) return null;
+ const obsBox = pathBBox(d);
+ const sat = integral(obs.m, obs.cols, obs.rows);
+ const votes = ex
+ .map((e) => {
+ const [sx, sy] = fitTo(e.box, obsBox);
+ return { name: e.name, phi: scoreAt(stampFor(e, sx, sy), obs.m, sat, obs.cols, obs.rows, 0, 0).phi };
+ })
+ .sort((a, b) => b.phi - a.phi);
+ const mine = votes.find((v) => v.name === label);
+ const won = votes[0];
+ return {
+ saw: won.name,
+ sawPhi: won.phi,
+ minePhi: mine ? mine.phi : -2,
+ margin: won.phi - (mine ? mine.phi : -2),
+ runnerUp: votes[1] ? votes[1].name : null,
+ verdict:
+ won.name === label ? "agrees" : groupOf(won.name) === groupOf(label) ? "indistinguishable" : "differs",
+ };
+ };
+}
diff --git a/packages/etl/scripts/lib/marks.mjs b/packages/etl/scripts/lib/marks.mjs
new file mode 100644
index 0000000..117b5d3
--- /dev/null
+++ b/packages/etl/scripts/lib/marks.mjs
@@ -0,0 +1,82 @@
+/**
+ * One row per mark on a page, with the outline that drew it.
+ *
+ * This used to live inside the placement probe. It moved here the moment a
+ * second tool needed the same rows — the adjudication page, which draws marks
+ * for a person to judge and must draw *exactly* the marks the probe measured or
+ * the judgement is about something else. Two walks over the same cache is the
+ * way a pair like this rots: something gets added to one and not the other, and
+ * the two disagree for a season before anybody notices.
+ *
+ * The two readers below are still called side by side and checked against each
+ * other. They share their constants, so this is not a test that they parse XML
+ * the same way — it is a test that nothing has been added to one walk and not
+ * the other.
+ */
+import { existsSync, readFileSync } from "node:fs";
+import { dirname, join } from "node:path";
+import { fileURLToPath } from "node:url";
+import { DIACRITICS } from "@hifth/core";
+import { applierFromPin, readDiacritics, readMarkOutlines } from "./diacritics.mjs";
+
+const HERE = dirname(fileURLToPath(import.meta.url));
+const ETL = join(HERE, "..", "..");
+const CACHE = join(ETL, "data", "pages", ".cache", "words");
+const PIN = JSON.parse(readFileSync(join(ETL, "data", "pages", "word-boxes.pin.json"), "utf8"));
+
+const pad3 = (n) => String(n).padStart(3, "0");
+
+/** The ligature-corpus page for `p`, which is the print every mark is read from. */
+export const markPageFile = (p) => join(CACHE, `${pad3(p)}.svg`);
+
+/** Which pages of that corpus are on this machine. It is a cache, so it may be partial. */
+export function cachedMarkPages() {
+ const out = [];
+ for (let p = 1; p <= 604; p += 1) if (existsSync(markPageFile(p))) out.push(p);
+ return out;
+}
+
+/**
+ * The fit recorded for a page — `ours = s · theirs + t`, the four numbers the
+ * word boxes were placed by. Every mark rectangle on the page is placed by this
+ * same transform, which is why a displacement in it is a displacement in
+ * shipped word geometry too and not only in the marks.
+ */
+export function fitOf(p) {
+ const row = PIN.pages.find((r) => r.page === p);
+ if (!row) throw new Error(`no fit recorded for page ${p}`);
+ return row;
+}
+
+export function marksOf(p) {
+ const svg = readFileSync(markPageFile(p), "utf8");
+ const row = fitOf(p);
+ const words = readDiacritics(svg, applierFromPin(row));
+ const outlines = readMarkOutlines(svg);
+ const flat = [];
+ for (const w of words) {
+ for (let k = 0; k < w.marks.length; k += 1) flat.push({ w, m: w.marks[k] });
+ }
+ if (flat.length !== outlines.length) {
+ throw new Error(`page ${p}: ${flat.length} marks but ${outlines.length} outlines`);
+ }
+ return flat.map((e, k) => {
+ const [id, x, y, wd, ht] = e.m;
+ if (DIACRITICS[id] !== outlines[k].name) {
+ throw new Error(`page ${p} mark ${k}: box says ${DIACRITICS[id]}, outline says ${outlines[k].name}`);
+ }
+ return {
+ page: p,
+ k,
+ id,
+ name: DIACRITICS[id],
+ box: [x, y, wd, ht],
+ d: outlines[k].d,
+ surah: e.w.surah,
+ aya: e.w.aya,
+ idx: e.w.idx,
+ hafs: e.w.hafs,
+ fit: row,
+ };
+ });
+}
diff --git a/packages/etl/scripts/probe-mark-ink.mjs b/packages/etl/scripts/probe-mark-ink.mjs
new file mode 100644
index 0000000..7bf5f00
--- /dev/null
+++ b/packages/etl/scripts/probe-mark-ink.mjs
@@ -0,0 +1,1306 @@
+#!/usr/bin/env node
+/**
+ * Does the ink under a mark's rectangle match what the rectangle claims?
+ *
+ * 326,515 rectangles say "this box, on this page, holds a kasra". Every check
+ * this repo has run on them so far compares one description of the text with
+ * another description of the text: `probe-diacritics.mjs` ② proves each mark
+ * sits inside its own word's box, ④ that the ligatures partition the letters,
+ * ⑤ that the drawn name and the codepoint agree on 62,931 held-out runs. All of
+ * it is arithmetic over the corpus the boxes came from, and
+ * `sub-word-marks.md` §⑦ says exactly what that leaves untested:
+ *
+ * > A print that named its paths correctly and *placed* one of them a letter to
+ * > the left would satisfy ①–⑤ exactly as a correct one does, because nothing
+ * > here ever asks where the outline sits relative to the letter that wrote it.
+ *
+ * This asks. It is the first thing in the repo to open the picture a hafiz
+ * actually sees — the shipped print, whose text is one anonymous outline per
+ * page — and compare it against the corpus the boxes were measured from.
+ *
+ * ## Two verdicts, never one
+ *
+ * **Registration** — is the box in the right *place*? Slide the mark's own
+ * outline over the shipped page and see where it fits best. A box that is right
+ * scores highest where it claims to be; a box that is on the neighbouring letter
+ * scores highest a letter away, and says so in units.
+ *
+ * **Identity** — is the ink under it the mark we *named*? Put all twenty-six
+ * marks the print knows how to draw on the same spot, and see which one the ink
+ * looks most like. If the answer is not the one on the label, the label is
+ * wrong — and if the answer *cannot* be the one on the label because two marks
+ * are the same shape drawn in different places, that is a finding about the
+ * method and it is reported as one.
+ *
+ * They fail for different reasons and cost different amounts, so they are never
+ * added together.
+ *
+ * ## Why every number here comes with a control
+ *
+ * A pass rate on its own measures nothing, because a metric that says "yes" to
+ * everything also says "yes" to the right answer. So each mark is scored three
+ * more times, at placements known to be wrong: one mark-width to the left, one
+ * to the right, and at a different mark's rectangle elsewhere on the same page.
+ * The gap between the true placement and the best of those is the only evidence
+ * that the score is about the mark rather than about the page being covered in
+ * ink. If the gap is small, nothing else in the output is worth reading, and the
+ * report says so first.
+ *
+ * ## What it does not need
+ *
+ * No model, no download, no network, no native binary, no font. The whole
+ * measurement is `lib/ink.mjs` — a scanline filler in arithmetic — over bytes
+ * already committed to this repo and a cache already pinned by hash. Which is
+ * the point: `packages/etl` re-derives its output from committed bytes offline,
+ * and a check on that output that could not itself be re-derived offline would
+ * be worth less than the thing it checks.
+ *
+ * Named `probe-` and not `gate-` for the reason `probe-encodings.mjs` is: the
+ * ligature corpus is a gitignored cache, so there is nothing for a gate to read
+ * on a clean checkout. It exits non-zero on a breached threshold so that it
+ * *could* become one, and is deliberately not wired into anything yet.
+ *
+ * ## The one rule this script exists under
+ *
+ * **There is no Quran text in this repo and there will not be.** Marks are
+ * reported by page, word index and drawn name. The word's own letters are read
+ * from the cache at runtime and never written to a file outside
+ * `packages/etl/out/`, which is gitignored — the same arrangement
+ * `probe-encodings.mjs` runs under and for the same reason.
+ *
+ * Usage:
+ * node packages/etl/scripts/probe-mark-ink.mjs # a seeded sample
+ * node packages/etl/scripts/probe-mark-ink.mjs --pages 2,3,50 # whole pages
+ * node packages/etl/scripts/probe-mark-ink.mjs --pages 100-120 # a range
+ * node packages/etl/scripts/probe-mark-ink.mjs --sample 2000 --seed 7
+ * node packages/etl/scripts/probe-mark-ink.mjs --json # machine output
+ * node packages/etl/scripts/probe-mark-ink.mjs --out /tmp/look.html
+ */
+import { mkdirSync, readFileSync, writeFileSync } from "node:fs";
+import { dirname, join } from "node:path";
+import { fileURLToPath } from "node:url";
+import { readMarkOutlines } from "./lib/diacritics.mjs";
+import { readPageInk, integral, rasterise } from "./lib/ink.mjs";
+import { cachedMarkPages, markPageFile as pageFile, marksOf } from "./lib/marks.mjs";
+import { bestPlacement, outlineRings, rng, sampleSizeFor, scoreAt, stamp, wilson } from "./lib/mark-ink.mjs";
+import { classifier, loadExemplars, shapeGroups, similarityMatrix } from "./lib/mark-shape.mjs";
+
+const HERE = dirname(fileURLToPath(import.meta.url));
+const ROOT = join(HERE, "..", "..", "..");
+const PAGES = join(ROOT, "apps", "web", "public", "assets", "pages", "hafs-kfqc");
+const PIN = JSON.parse(readFileSync(join(HERE, "..", "data", "pages", "word-boxes.pin.json"), "utf8"));
+const OUT = join(HERE, "..", "out", "mark-ink.html");
+
+const arg = (name, fallback) => {
+ const i = process.argv.indexOf(name);
+ return i === -1 ? fallback : process.argv[i + 1];
+};
+const has = (name) => process.argv.includes(name);
+
+/**
+ * Samples per page unit.
+ *
+ * Sixteen puts about a hundred by fifty samples on a mark of median size, so the
+ * smallest displacement the search can resolve is a fortieth of a mark's height
+ * — comfortably finer than the tenth-of-a-unit the boxes are rounded to, which
+ * is the precision the answer is allowed to claim. Raising it costs time
+ * quadratically and buys nothing the rounding does not throw away.
+ */
+const RES = Number(arg("--res", 16));
+
+/**
+ * How far the search may move a mark, in page units.
+ *
+ * Three units is about half a mark's width and comfortably more than the gap to
+ * the neighbouring letter, so "it fits better one letter over" is inside the
+ * search rather than clipped by it. A radius that could not reach the wrong
+ * answer would report every wrong box as merely unmatched.
+ */
+const RADIUS = Number(arg("--radius", 3));
+
+const wantJson = has("--json");
+const outPath = arg("--out", OUT);
+const crops = Number(arg("--crops", 240));
+
+// ------------------------------------------------------- the working set --
+
+const parsePages = (s) =>
+ s
+ .split(",")
+ .flatMap((part) => {
+ const m = part.match(/^(\d+)-(\d+)$/);
+ if (!m) return [Number(part)];
+ const out = [];
+ for (let p = Number(m[1]); p <= Number(m[2]); p += 1) out.push(p);
+ return out;
+ })
+ .filter((p) => p >= 1 && p <= 604);
+
+const pageArg = arg("--pages", null);
+const sampleN = Number(arg("--sample", 1200));
+const seed = Number(arg("--seed", 7));
+
+const cached = cachedMarkPages();
+if (!cached.length) {
+ console.error(
+ "No ligature pages in packages/etl/data/pages/.cache/words/.\n" +
+ "This probe reads the cache the word boxes were built from; fill it with\n" +
+ "`node packages/etl/scripts/probe-encodings.mjs --fetch` first.",
+ );
+ process.exit(2);
+}
+
+// ----------------------------------------------------------- the scoring --
+
+/**
+ * A mark's window: the claimed rectangle with room round it for the search to
+ * move in, plus one unit so that a template pushed to the edge still has its own
+ * rectangle inside the raster.
+ *
+ * Sideways it is wider still, by the mark's own width, because one of the
+ * controls below puts the outline a whole mark-width to the left and to the
+ * right and then asks how it scores there. A control that fell off the edge of
+ * what was drawn would be scored on the part of it that remained, and the part
+ * of a wrong answer that stayed in view is not the wrong answer.
+ */
+function windowOf(box) {
+ const pad = RADIUS + 1;
+ const padX = pad + box[2];
+ const x0 = box[0] - padX;
+ const y0 = box[1] - pad;
+ return {
+ x0,
+ y0,
+ cols: Math.ceil((box[2] + 2 * padX) * RES),
+ rows: Math.ceil((box[3] + 2 * pad) * RES),
+ };
+}
+
+/**
+ * @param corr a page-wide displacement to apply to the claimed placement before
+ * scoring, in page units. Null on the first pass, which is what
+ * measures it; set on the second, which is what tests it. The
+ * second pass does not search — the best placement is a fact about
+ * the page and does not move when the claim does, so it is carried
+ * over and only the *distance from the claim* changes.
+ */
+function scoreMark(mark, ink, lib, other, corr) {
+ const { box, fit } = mark;
+ const win = windowOf(box);
+ const obs = rasterise(ink.shapes, win.x0, win.y0, win.cols, win.rows, RES);
+ const sat = integral(obs, win.cols, win.rows);
+ const cx0 = corr ? corr.dx : 0;
+ const cy0 = corr ? corr.dy : 0;
+
+ const own = stamp(
+ outlineRings(mark.d, fit.sx, fit.sy, fit.tx - win.x0 + cx0, fit.ty - win.y0 + cy0),
+ 0,
+ 0,
+ win.cols,
+ win.rows,
+ RES,
+ );
+ if (!own.area) return null;
+
+ const at = scoreAt(own, obs, sat, win.cols, win.rows, 0, 0);
+ const best = corr
+ ? { ...corr.best, di: corr.best.di - Math.round(cx0 * RES), dj: corr.best.dj - Math.round(cy0 * RES) }
+ : bestPlacement(own, obs, sat, win.cols, win.rows, RES, RADIUS);
+
+ // The ink fraction of the claimed rectangle, kept because it is the statistic
+ // the first look at this used and the two must be comparable.
+ const inkFrac = at.n ? at.ink / at.n : 0;
+
+ // --- the controls ------------------------------------------------------
+ // One mark-width either side is "the neighbouring letter"; a different mark's
+ // rectangle elsewhere on the page is "somewhere a mark really is, but not
+ // this one". Whichever scores best is the number to beat, which is the
+ // generous reading and the only honest one.
+ const wpx = Math.max(1, Math.round(box[2] * RES));
+ const nulls = [
+ scoreAt(own, obs, sat, win.cols, win.rows, wpx, 0).phi,
+ scoreAt(own, obs, sat, win.cols, win.rows, -wpx, 0).phi,
+ ];
+ if (other) {
+ // The far control gets a raster of its own, centred on the rectangle it is
+ // being moved to. Reusing this mark's window would only have shown whatever
+ // sliver of the displaced outline happened to still be inside it, and a
+ // sliver scores like a sliver rather than like a wrong answer.
+ const w2 = windowOf(other.box);
+ const obs2 = rasterise(ink.shapes, w2.x0, w2.y0, w2.cols, w2.rows, RES);
+ const sat2 = integral(obs2, w2.cols, w2.rows);
+ const dx = other.box[0] + other.box[2] / 2 - (box[0] + box[2] / 2);
+ const dy = other.box[1] + other.box[3] / 2 - (box[1] + box[3] / 2);
+ const far = stamp(
+ outlineRings(mark.d, fit.sx, fit.sy, fit.tx - w2.x0 + dx + cx0, fit.ty - w2.y0 + dy + cy0),
+ 0,
+ 0,
+ w2.cols,
+ w2.rows,
+ RES,
+ );
+ nulls.push(far.area ? scoreAt(far, obs2, sat2, w2.cols, w2.rows, 0, 0).phi : -1);
+ }
+
+ // --- identity ----------------------------------------------------------
+ // Every name the print can draw, centred on the claimed rectangle, scored the
+ // same way. Also scored at the placement the registration search found, so
+ // that a box which is merely low is not read as a box which is mislabelled.
+ const cx = box[0] + box[2] / 2 + cx0;
+ const cy = box[1] + box[3] / 2 + cy0;
+ const votes = [];
+ for (const [name, ex] of lib) {
+ const [bx0, by0, bx1, by1] = ex.box;
+ const ecx = fit.sx * ((bx0 + bx1) / 2) + fit.tx;
+ const ecy = fit.sy * ((by0 + by1) / 2) + fit.ty;
+ const rings = outlineRings(ex.d, fit.sx, fit.sy, fit.tx - win.x0 + (cx - ecx), fit.ty - win.y0 + (cy - ecy));
+ const st = stamp(rings, 0, 0, win.cols, win.rows, RES);
+ if (!st.area) continue;
+ votes.push({
+ name,
+ phi: scoreAt(st, obs, sat, win.cols, win.rows, 0, 0).phi,
+ phiAt: scoreAt(st, obs, sat, win.cols, win.rows, best.di, best.dj).phi,
+ });
+ }
+ votes.sort((a, b) => b.phi - a.phi);
+ const byShift = [...votes].sort((a, b) => b.phiAt - a.phiAt);
+ const mine = votes.find((v) => v.name === mark.name);
+ const runnerUp = votes.find((v) => v.name !== votes[0].name);
+
+ return {
+ page: mark.page,
+ k: mark.k,
+ name: mark.name,
+ id: mark.id,
+ surah: mark.surah,
+ aya: mark.aya,
+ idx: mark.idx,
+ box: [box[0] + cx0, box[1] + cy0, box[2], box[3]],
+ best,
+ ink: inkFrac,
+ phi0: at.phi,
+ iou0: at.iou,
+ phiBest: best.phi,
+ iouBest: best.iou,
+ dx: best.di / RES,
+ dy: best.dj / RES,
+ off: Math.hypot(best.di, best.dj) / RES,
+ nullPhi: Math.max(...nulls),
+ saw: votes[0].name,
+ sawPhi: votes[0].phi,
+ minePhi: mine ? mine.phi : 0,
+ margin: votes[0].phi - (runnerUp ? runnerUp.phi : 0),
+ sawShift: byShift[0].name,
+ };
+}
+
+// --------------------------------------------------------------- summary --
+
+const q = (xs, p) => {
+ if (!xs.length) return 0;
+ const s = [...xs].sort((a, b) => a - b);
+ return s[Math.min(s.length - 1, Math.max(0, Math.round(p * (s.length - 1))))];
+};
+const mean = (xs) => (xs.length ? xs.reduce((a, b) => a + b, 0) / xs.length : 0);
+const sd = (xs) => {
+ if (xs.length < 2) return 0;
+ const m = mean(xs);
+ return Math.sqrt(xs.reduce((a, b) => a + (b - m) * (b - m), 0) / (xs.length - 1));
+};
+
+/**
+ * There is deliberately no confusion matrix in this script.
+ *
+ * An earlier version had one, over every mark it scored, and it was the single
+ * most misleading thing in the output. Its biggest cell was "labelled fatha, ink
+ * looks like kasra" — which is not a confusion at all, because this print draws
+ * the two as one shape. Its next cells were marks whose rectangle sat a unit low
+ * and therefore over the letter rather than over the mark. Three unrelated
+ * effects, stacked into one table, and read as one finding.
+ *
+ * What each of the three now is, and where it lives:
+ *
+ * - the rectangle is displaced — measured here, in the registration numbers;
+ * - the drawing and its name are drawn as one shape — probe-mark-labels.mjs,
+ * which answers it without the shipped page in the arithmetic at all;
+ * - the two printings genuinely differ at one spot — the last section here, on
+ * the marks where the first two have been ruled out, and only there.
+ */
+
+// ------------------------------------------------------------------ main --
+
+const t0 = Date.now();
+
+/**
+ * The same template library the labelling probe uses, built by the same
+ * function — so that when the two probes are read side by side, the comparison
+ * is between two questions and not between two libraries.
+ */
+const lib = loadExemplars({
+ cacheFile: join(HERE, "..", "out", `mark-exemplars.${PIN.pages.length}.json`),
+ pages: cached,
+ outlinesOf: (p) => readMarkOutlines(readFileSync(pageFile(p), "utf8")),
+ rebuild: has("--rebuild-templates"),
+});
+
+/**
+ * Which names this print draws as one shape, and the whole square it came from.
+ *
+ * Derived here only so that this probe can *exclude* marks whose label is
+ * already in question. The labelling verdict itself belongs to
+ * `probe-mark-labels.mjs`, which answers it without the shipped page in the
+ * arithmetic at all; this script must never be the place a reader learns
+ * whether a drawing matches its name, because everything in this script has a
+ * displacement in it.
+ */
+const MATRIX = similarityMatrix(lib);
+const TWIN = Number(arg("--twin", 0.85));
+const SHAPES = shapeGroups(MATRIX, TWIN);
+const labelOf = classifier(lib, SHAPES.groupOf);
+
+let population = null;
+let pagesDrawn = null;
+let picks;
+if (pageArg) {
+ const ps = parsePages(pageArg).filter((p) => cached.includes(p));
+ picks = ps.flatMap((p) => marksOf(p).map((m) => ({ ...m, page: p })));
+} else {
+ /**
+ * A two-stage sample: some pages, then some marks on them.
+ *
+ * Not because it is cheaper — though it is, since opening a page is the
+ * expensive part and a sample spread thinly over all 604 opens every one of
+ * them for four marks. Because the measurement needs it. Half of what this
+ * probe reports is a *per-page* quantity, and a page with four marks on it
+ * cannot say anything about its own alignment; a page with eighty can.
+ *
+ * The price is that the marks are not independent — two marks on one page
+ * share whatever that page's fit did wrong — so a plain binomial interval on a
+ * rate is narrower than the truth. That is why the per-page table is printed
+ * next to every rate: the spread between pages *is* the part the interval
+ * leaves out, and a reader can see it rather than take a corrected number on
+ * trust.
+ */
+ const r = rng(seed);
+ const pool = [...cached];
+ const chosen = [];
+ const want = Math.min(Number(arg("--pages-n", 40)), pool.length);
+ while (chosen.length < want) chosen.push(...pool.splice(Math.floor(r() * pool.length), 1));
+ chosen.sort((a, b) => a - b);
+
+ const counts = chosen.map((p) => readMarkOutlines(readFileSync(pageFile(p), "utf8")).length);
+ population = counts.reduce((a, b) => a + b, 0);
+ const n = Math.min(sampleN, population);
+ const grabs = new Set();
+ while (grabs.size < n) grabs.add(Math.floor(r() * population));
+
+ const byPage = new Map();
+ let base = 0;
+ for (let i = 0; i < chosen.length; i += 1) {
+ const lo = base;
+ const hi = base + counts[i];
+ for (const g of grabs) if (g >= lo && g < hi) {
+ if (!byPage.has(chosen[i])) byPage.set(chosen[i], []);
+ byPage.get(chosen[i]).push(g - lo);
+ }
+ base = hi;
+ }
+ picks = [];
+ for (const p of [...byPage.keys()].sort((a, b) => a - b)) {
+ const all = marksOf(p);
+ for (const k of byPage.get(p).sort((a, b) => a - b)) picks.push(all[k]);
+ }
+ pagesDrawn = chosen.length;
+}
+
+if (!picks.length) {
+ console.error("no marks selected");
+ process.exit(2);
+}
+
+const skipped = [];
+
+/**
+ * Score every selected mark, optionally with a page-wide displacement applied
+ * to the claim first.
+ *
+ * Run twice. The first pass asks what the boxes claim; the second asks what they
+ * would claim if each page's whole-page displacement were taken out. Running it
+ * twice rather than reasoning about the first pass's numbers is the difference
+ * between predicting the correction would work and showing that it does.
+ */
+function scoreAll(corrections) {
+ const out = [];
+ let lastPage = null;
+ let ink = null;
+ let pageMarks = null;
+ const pick = rng(seed ^ 0x5bf03635);
+ for (const m of picks) {
+ if (m.page !== lastPage) {
+ ink = readPageInk(readFileSync(join(PAGES, `${m.page}.svg`), "utf8"), 1 / (4 * RES));
+ pageMarks = marksOf(m.page);
+ lastPage = m.page;
+ }
+ // The swap control: a different mark's rectangle on the same page, of a
+ // different name where one exists, chosen from the seeded stream so the
+ // control is as reproducible as the sample.
+ const pool = pageMarks.filter((o) => o.k !== m.k && o.name !== m.name);
+ const other = pool.length ? pool[Math.floor(pick() * pool.length)] : null;
+ const c = corrections?.get(`${m.page}:${m.k}`) ?? null;
+ const r = scoreMark(m, ink, lib, other, c);
+ if (r) out.push({ ...r, hafs: m.hafs, d: m.d, fit: m.fit });
+ else if (!corrections) skipped.push(m);
+ }
+ return out;
+}
+
+const raw = scoreAll(null);
+
+/**
+ * Each page's own displacement, as the median of its marks'.
+ *
+ * The median rather than the mean, because the thing being estimated is what the
+ * page as a whole does, and a handful of marks that really are on the wrong
+ * letter would drag a mean. Pages with too few marks to estimate anything are
+ * left alone rather than corrected by a number built from four observations.
+ */
+const perPageShift = new Map();
+for (const p of new Set(raw.map((r) => r.page))) {
+ const rs = raw.filter((r) => r.page === p && r.ink >= 0.02);
+ if (rs.length < 20) continue;
+ perPageShift.set(p, {
+ dx: q(rs.map((r) => r.dx), 0.5),
+ dy: q(rs.map((r) => r.dy), 0.5),
+ n: rs.length,
+ });
+}
+/**
+ * What the fit between the two prints would have been if it had been fitted to
+ * the ink instead of to the ornaments.
+ *
+ * The pinned transform is `ours = s · theirs + t`, four numbers a page, fitted
+ * once against the marker shapes the two prints share. Every mark this probe
+ * looked at is a second, independent observation of that same transform: the
+ * rectangle says where the fit *thinks* the mark landed, and the search says
+ * where it actually landed. Regressing the second on the first re-derives the
+ * transform from a few hundred observations spread over the whole page rather
+ * than from a handful of ornaments clustered on it.
+ *
+ * Reported, not applied. It is evidence about the fit, and what to do about the
+ * fit is a decision — this only has to make the decision possible by saying how
+ * far off it is and in which direction.
+ */
+function refit(rs, fit) {
+ const ls = (obs, want) => {
+ const n = obs.length;
+ const mx = obs.reduce((a, b) => a + b, 0) / n;
+ const my = want.reduce((a, b) => a + b, 0) / n;
+ let sxy = 0;
+ let sxx = 0;
+ for (let i = 0; i < n; i += 1) {
+ sxy += (obs[i] - mx) * (want[i] - my);
+ sxx += (obs[i] - mx) * (obs[i] - mx);
+ }
+ const a = sxx > 0 ? sxy / sxx : 1;
+ const b = my - a * mx;
+ let e = 0;
+ for (let i = 0; i < n; i += 1) {
+ const d = want[i] - (a * obs[i] + b);
+ e += d * d;
+ }
+ return { a, b, sd: Math.sqrt(e / Math.max(1, n - 2)) };
+ };
+ // Back out the corpus-frame centre the pinned fit was applied to, then ask
+ // what transform would have carried it to where the ink actually is.
+ const theirsX = rs.map((r) => (r.box[0] + r.box[2] / 2 - fit.tx) / fit.sx);
+ const theirsY = rs.map((r) => (r.box[1] + r.box[3] / 2 - fit.ty) / fit.sy);
+ const oursX = rs.map((r, i) => fit.sx * theirsX[i] + fit.tx + r.dx);
+ const oursY = rs.map((r, i) => fit.sy * theirsY[i] + fit.ty + r.dy);
+ const fx = ls(theirsX, oursX);
+ const fy = ls(theirsY, oursY);
+ return {
+ n: rs.length,
+ sx: fx.a,
+ tx: fx.b,
+ sy: fy.a,
+ ty: fy.b,
+ dsx: fx.a - fit.sx,
+ dtx: fx.b - fit.tx,
+ dsy: fy.a - fit.sy,
+ dty: fy.b - fit.ty,
+ residX: fx.sd,
+ residY: fy.sd,
+ };
+}
+
+const corrections = new Map();
+for (const r of raw) {
+ const s = perPageShift.get(r.page);
+ if (s) corrections.set(`${r.page}:${r.k}`, { dx: s.dx, dy: s.dy, best: r.best });
+}
+const fixed = corrections.size ? scoreAll(corrections) : raw;
+
+// Everything below reports the boxes as they are. The corrected pass is
+// reported alongside it, never instead of it: what ships today is the first
+// number, and the second is what a change would buy.
+const rows = raw;
+
+// ------------------------------------------------------------ aggregation --
+
+/**
+ * The thresholds, and where each one comes from.
+ *
+ * `EMPTY` — a rectangle with under two percent of its area inked. Inherited from
+ * the first look at this so the two numbers can be compared; it is a
+ * "there is nothing here at all" test, not a quality bar.
+ *
+ * `OFF` — how far the best placement may sit from the claimed one. Built from an
+ * error budget rather than chosen: the per-page fits recorded alongside the word
+ * boxes have residuals up to 0.46 page units, both rectangles are rounded to a
+ * tenth so each edge can move 0.05, and one raster sample is 1/16 of a unit.
+ * That is 0.46 + 0.10 + 0.06 ≈ 0.62 units of movement that means nothing.
+ * Rounded up to **0.75**, which is under a quarter of the median mark's width
+ * and well under the distance to the next letter.
+ *
+ * `SEP` — how far the true placement must beat the best deliberately-wrong one
+ * before the run is worth reading at all.
+ */
+const EMPTY = 0.02;
+const OFF = Number(arg("--max-off", 0.75));
+const SEP = Number(arg("--min-separation", 0.25));
+
+const nAll = rows.length;
+const empties = rows.filter((r) => r.ink < EMPTY);
+const placed = rows.filter((r) => r.ink >= EMPTY);
+const shifted = placed.filter((r) => r.off > OFF);
+
+const sep = mean(rows.map((r) => r.phi0 - r.nullPhi));
+const truePhi = rows.map((r) => r.phi0);
+const nullPhi = rows.map((r) => r.nullPhi);
+
+const pct = (k, n) => (n ? (100 * k) / n : 0);
+const ci = (k, n) => wilson(k, n).map((v) => 100 * v);
+
+/** Per drawn name: how many, how empty, how far off, and in which direction. */
+const byName = new Map();
+for (const r of rows) {
+ if (!byName.has(r.name)) byName.set(r.name, []);
+ byName.get(r.name).push(r);
+}
+
+// ------------------------------ do the two printings disagree anywhere? --
+
+/**
+ * Whether each sampled mark's *drawing* matches its *name*, decided without the
+ * shipped page.
+ *
+ * This is not a result of this probe and is not reported as one; it is a filter.
+ * A mark whose own corpus drawing does not match its own corpus name is already
+ * a question for `probe-mark-labels.mjs`, and asking what the shipped ink looks
+ * like at that spot would produce a second, dependent copy of the same doubt.
+ */
+const labelVerdict = new Map();
+for (const m of picks) {
+ const v = labelOf(m.d, m.name);
+ if (v) labelVerdict.set(`${m.page}:${m.k}`, v);
+}
+
+/**
+ * The marks on which the shipped ink is allowed to be asked what it looks like.
+ *
+ * Four conditions, and every one of them exists to stop a different thing being
+ * counted as a disagreement between the two printings:
+ *
+ * - **there is ink there at all** — nothing to look at otherwise.
+ * - **the rectangle is where the mark is** — an identity score on a rectangle a
+ * unit low is scoring partly the letter underneath, which is exactly what
+ * makes a fatha "look like" something else. This is the condition that made
+ * the earlier merged number meaningless.
+ * - **the placement beat a deliberately wrong one** — if it did not, the score
+ * is not about this mark.
+ * - **the drawing already matches its own name** — otherwise the doubt is about
+ * the label, and belongs to the other probe.
+ *
+ * How many were dropped for each is reported, because a filtered rate whose
+ * filter is not published is a rate somebody chose.
+ */
+const excluded = { blank: 0, displaced: 0, notSeparated: 0, labelInQuestion: 0 };
+const eligible = [];
+for (const r of fixed) {
+ const key = `${r.page}:${r.k}`;
+ const lv = labelVerdict.get(key);
+ if (r.ink < EMPTY) excluded.blank += 1;
+ else if (r.off > OFF) excluded.displaced += 1;
+ else if (r.phi0 - r.nullPhi < SEP) excluded.notSeparated += 1;
+ else if (!lv || lv.verdict !== "agrees") excluded.labelInQuestion += 1;
+ else eligible.push(r);
+}
+
+/**
+ * Three counts on that set, never summed.
+ *
+ * The third is the only one that is news, and it is news of a particular kind:
+ * the corpus drew a mark, named it, and the app ships a page whose ink at the
+ * same place looks like a different mark of a different shape. That is the two
+ * printings genuinely differing, and it is a more serious thing than either a
+ * displacement or a look-alike, which is why it gets its own count, its own
+ * list and its own section of the evidence page.
+ */
+const inkSame = eligible.filter((r) => r.saw === r.name);
+const inkTwin = eligible.filter((r) => r.saw !== r.name && SHAPES.groupOf(r.saw) === SHAPES.groupOf(r.name));
+const inkDiff = eligible.filter((r) => SHAPES.groupOf(r.saw) !== SHAPES.groupOf(r.name));
+// A disagreement that does not survive being scored at the placement the search
+// itself preferred is a disagreement about a sixteenth of a unit, not about a
+// mark. Kept separately rather than filtered out, so the count is visible.
+const inkDiffHeld = inkDiff.filter((r) => SHAPES.groupOf(r.sawShift) !== SHAPES.groupOf(r.name));
+
+const report = {
+ ran: new Date().toISOString().slice(0, 10),
+ res: RES,
+ radius: RADIUS,
+ seed: pageArg ? null : seed,
+ pages: [...new Set(rows.map((r) => r.page))].length,
+ pagesDrawn,
+ population,
+ scored: nAll,
+ skipped: skipped.length,
+ ms: Date.now() - t0,
+ control: {
+ truePhiMean: mean(truePhi),
+ truePhiSd: sd(truePhi),
+ nullPhiMean: mean(nullPhi),
+ nullPhiSd: sd(nullPhi),
+ separation: sep,
+ beatsNull: rows.filter((r) => r.phi0 > r.nullPhi).length,
+ },
+ registration: {
+ empty: empties.length,
+ emptyPct: pct(empties.length, nAll),
+ emptyCi: ci(empties.length, nAll),
+ shifted: shifted.length,
+ shiftedPct: pct(shifted.length, placed.length),
+ shiftedCi: ci(shifted.length, placed.length),
+ offP50: q(placed.map((r) => r.off), 0.5),
+ offP95: q(placed.map((r) => r.off), 0.95),
+ dxMean: mean(placed.map((r) => r.dx)),
+ dyMean: mean(placed.map((r) => r.dy)),
+ dxSd: sd(placed.map((r) => r.dx)),
+ dySd: sd(placed.map((r) => r.dy)),
+ iou0P50: q(rows.map((r) => r.iou0), 0.5),
+ iouBestP50: q(rows.map((r) => r.iouBest), 0.5),
+ },
+ /**
+ * Not "identity". This is one question and it is a narrow one: on the marks
+ * where the rectangle is demonstrably in the right place and the drawing
+ * demonstrably matches its own name, does the *other* printing's ink at that
+ * spot look like the same mark?
+ *
+ * There is deliberately no rate here that mixes this with anything else. The
+ * earlier version of this script reported a single "identity" percentage over
+ * every mark, which stacked a displacement, a look-alike and a genuine
+ * difference into one number — and produced a headline that moved eighteen
+ * points depending on which of the three you decided to forgive.
+ */
+ betweenPrints: {
+ eligible: eligible.length,
+ excluded,
+ same: inkSame.length,
+ samePct: pct(inkSame.length, eligible.length),
+ sameCi: ci(inkSame.length, eligible.length),
+ twin: inkTwin.length,
+ twinPct: pct(inkTwin.length, eligible.length),
+ twinCi: ci(inkTwin.length, eligible.length),
+ differ: inkDiff.length,
+ differPct: pct(inkDiff.length, eligible.length),
+ differCi: ci(inkDiff.length, eligible.length),
+ differHeld: inkDiffHeld.length,
+ groups: SHAPES.groups,
+ groupThreshold: TWIN,
+ // Survivors of re-placement first, then by margin. Sorting by margin alone
+ // put the only mark that could actually be a difference between the two
+ // printings at position 38 of 111, underneath a hundred near-misses.
+ worst: inkDiff
+ .slice()
+ .sort(
+ (a, b) =>
+ (SHAPES.groupOf(a.sawShift) !== SHAPES.groupOf(a.name) ? 0 : 1) -
+ (SHAPES.groupOf(b.sawShift) !== SHAPES.groupOf(b.name) ? 0 : 1) ||
+ b.sawPhi - b.minePhi - (a.sawPhi - a.minePhi),
+ )
+ .slice(0, 40)
+ .map((r) => ({
+ page: r.page,
+ k: r.k,
+ name: r.name,
+ saw: r.saw,
+ sawPhi: r.sawPhi,
+ minePhi: r.minePhi,
+ sawShift: r.sawShift,
+ held: SHAPES.groupOf(r.sawShift) !== SHAPES.groupOf(r.name),
+ off: r.off,
+ separation: r.phi0 - r.nullPhi,
+ })),
+ },
+ perName: [...byName.entries()]
+ .map(([name, rs]) => ({
+ name,
+ n: rs.length,
+ empty: rs.filter((r) => r.ink < EMPTY).length,
+ emptyPct: pct(rs.filter((r) => r.ink < EMPTY).length, rs.length),
+ emptyCi: ci(rs.filter((r) => r.ink < EMPTY).length, rs.length),
+ dxMean: mean(rs.map((r) => r.dx)),
+ dyMean: mean(rs.map((r) => r.dy)),
+ dySe: sd(rs.map((r) => r.dy)) / Math.sqrt(Math.max(1, rs.length)),
+ dxSe: sd(rs.map((r) => r.dx)) / Math.sqrt(Math.max(1, rs.length)),
+ offP95: q(rs.map((r) => r.off), 0.95),
+ phi0: mean(rs.map((r) => r.phi0)),
+ }))
+ .sort((a, b) => b.n - a.n),
+ /**
+ * The same displacement, split by page rather than by name.
+ *
+ * Which is the split that tells the two error sources apart. A mark-level
+ * fault is a mark drawn in the wrong place, and its displacement has no reason
+ * to agree with the mark beside it. A page-level fault is the *fit* between
+ * the two prints being wrong, and every mark on that page moves together. So a
+ * per-page mean that is large and a per-page spread that is small is not 500
+ * bad marks — it is one bad number, and it is correctable.
+ */
+ perPage: [...new Set(rows.map((r) => r.page))]
+ .sort((a, b) => a - b)
+ .map((p) => {
+ const rs = rows.filter((r) => r.page === p && r.ink >= EMPTY);
+ const all = rows.filter((r) => r.page === p);
+ const fit = PIN.pages.find((r) => r.page === p);
+ return {
+ page: p,
+ n: all.length,
+ dxMean: mean(rs.map((r) => r.dx)),
+ dyMean: mean(rs.map((r) => r.dy)),
+ dxSd: sd(rs.map((r) => r.dx)),
+ dySd: sd(rs.map((r) => r.dy)),
+ iou0: q(all.map((r) => r.iou0), 0.5),
+ iouBest: q(all.map((r) => r.iouBest), 0.5),
+ // What the fit's own recorded residual said about this page, so the two
+ // opinions of the same fit sit in one row.
+ residual: fit.residual,
+ refit: rs.length >= 20 ? refit(rs, fit) : null,
+ };
+ }),
+ needed: {
+ forOnePercent: sampleSizeFor(0.02, 0.005, 326515),
+ forTenth: sampleSizeFor(0.02, 0.001, 326515),
+ },
+ /**
+ * The same measurements again, after each page's whole-page displacement has
+ * been taken out of the claim.
+ *
+ * This is the part that separates a fault in 326,515 rectangles from a fault
+ * in 604 numbers. If the corrected numbers are good, then the rectangles were
+ * never wrong about which mark is where — the fit that carried them onto the
+ * page was wrong about where the page is, once per page, and it is one
+ * subtraction to put right.
+ */
+ corrected: corrections.size
+ ? {
+ pagesShifted: perPageShift.size,
+ shiftDx: mean([...perPageShift.values()].map((s) => s.dx)),
+ shiftDy: mean([...perPageShift.values()].map((s) => s.dy)),
+ truePhiMean: mean(fixed.map((r) => r.phi0)),
+ nullPhiMean: mean(fixed.map((r) => r.nullPhi)),
+ separation: mean(fixed.map((r) => r.phi0 - r.nullPhi)),
+ beatsNull: fixed.filter((r) => r.phi0 > r.nullPhi).length,
+ empty: fixed.filter((r) => r.ink < EMPTY).length,
+ emptyPct: pct(fixed.filter((r) => r.ink < EMPTY).length, fixed.length),
+ emptyCi: ci(fixed.filter((r) => r.ink < EMPTY).length, fixed.length),
+ shifted: fixed.filter((r) => r.ink >= EMPTY && r.off > OFF).length,
+ shiftedPct: pct(
+ fixed.filter((r) => r.ink >= EMPTY && r.off > OFF).length,
+ fixed.filter((r) => r.ink >= EMPTY).length,
+ ),
+ shiftedCi: ci(
+ fixed.filter((r) => r.ink >= EMPTY && r.off > OFF).length,
+ fixed.filter((r) => r.ink >= EMPTY).length,
+ ),
+ offP50: q(fixed.filter((r) => r.ink >= EMPTY).map((r) => r.off), 0.5),
+ offP95: q(fixed.filter((r) => r.ink >= EMPTY).map((r) => r.off), 0.95),
+ dxSd: sd(fixed.filter((r) => r.ink >= EMPTY).map((r) => r.dx)),
+ dySd: sd(fixed.filter((r) => r.ink >= EMPTY).map((r) => r.dy)),
+ iou0P50: q(fixed.map((r) => r.iou0), 0.5),
+ inkMean: mean(fixed.map((r) => r.ink)),
+ // No identity rate here. Whether the ink matches the label is asked
+ // once, on the marks where the rectangle has been shown to be in the
+ // right place, and it is reported in its own section rather than as a
+ // percentage of everything scored.
+ perName: [...new Set(fixed.map((r) => r.name))]
+ .map((name) => {
+ const rs = fixed.filter((r) => r.name === name);
+ return {
+ name,
+ n: rs.length,
+ emptyPct: pct(rs.filter((r) => r.ink < EMPTY).length, rs.length),
+ dxMean: mean(rs.map((r) => r.dx)),
+ dyMean: mean(rs.map((r) => r.dy)),
+ dySe: sd(rs.map((r) => r.dy)) / Math.sqrt(Math.max(1, rs.length)),
+ dxSe: sd(rs.map((r) => r.dx)) / Math.sqrt(Math.max(1, rs.length)),
+ offP95: q(rs.map((r) => r.off), 0.95),
+ phi0: mean(rs.map((r) => r.phi0)),
+ };
+ })
+ .sort((a, b) => b.n - a.n),
+ }
+ : null,
+};
+
+// ---------------------------------------------------------- the surface --
+
+/**
+ * The evidence for one verdict, drawn at a size a person can judge.
+ *
+ * Not a picture of a picture: the rings are the shipped page's own outlines,
+ * clipped to the neighbourhood and re-emitted as straight segments at the same
+ * flatness the measurement used. So what a reader sees is the thing that was
+ * measured, and if they disagree with the verdict they are disagreeing with the
+ * measurement rather than with a rendering of it.
+ */
+function crop(r, shapes, viewport) {
+ const [x, y, w, h] = r.box;
+ const pad = Math.max(3, w * 0.6);
+ const vx = x - pad;
+ const vy = y - pad;
+ const vw = w + 2 * pad;
+ const vh = h + 2 * pad;
+ const n2 = (v) => Math.round(v * 100) / 100;
+ const parts = [];
+ for (const s of shapes) {
+ const ds = [];
+ for (const ring of s.rings) {
+ let inX = false;
+ let inY = false;
+ let lo = Infinity;
+ let hi = -Infinity;
+ let loy = Infinity;
+ let hiy = -Infinity;
+ for (let i = 0; i < ring.length; i += 2) {
+ if (ring[i] < lo) lo = ring[i];
+ if (ring[i] > hi) hi = ring[i];
+ if (ring[i + 1] < loy) loy = ring[i + 1];
+ if (ring[i + 1] > hiy) hiy = ring[i + 1];
+ }
+ inX = hi >= vx && lo <= vx + vw;
+ inY = hiy >= vy && loy <= vy + vh;
+ if (!inX || !inY) continue;
+ let d = `M${n2(ring[0])} ${n2(ring[1])}`;
+ for (let i = 2; i < ring.length; i += 2) d += `L${n2(ring[i])} ${n2(ring[i + 1])}`;
+ ds.push(`${d}Z`);
+ }
+ if (ds.length) parts.push(` `);
+ }
+ const tr = outlineRings(r.d, r.fit.sx, r.fit.sy, r.fit.tx, r.fit.ty);
+ const td = tr
+ .map((ring) => {
+ let d = `M${n2(ring[0])} ${n2(ring[1])}`;
+ for (let i = 2; i < ring.length; i += 2) d += `L${n2(ring[i])} ${n2(ring[i + 1])}`;
+ return `${d}Z`;
+ })
+ .join("");
+ return (
+ `` +
+ ` ` +
+ parts.join("") +
+ ` ` +
+ ` ` +
+ (Math.abs(r.dx) + Math.abs(r.dy) > 0
+ ? ` `
+ : "") +
+ " "
+ );
+}
+
+const esc = (s) => String(s).replace(/[<>&]/g, (c) => ({ "<": "<", ">": ">", "&": "&" })[c]);
+
+/**
+ * One card, and it answers exactly one question: is the rectangle on the mark?
+ *
+ * There used to be a line on here reading "ink looks like …", and it made the
+ * page unusable for the question the page exists for. A reader working down a
+ * list sorted by placement kept meeting a purple verdict about a name, decided
+ * the two were the same kind of complaint, and stopped reading either carefully.
+ * The name question has a page of its own now, drawn differently, and this one
+ * has three verdicts, all of them about position.
+ */
+function card(r, i, inks, prefix) {
+ const verdict = r.ink < EMPTY ? "empty" : r.off > OFF ? "shifted" : "ok";
+ return `
+#${i + 1} ${verdict} p${r.page} · ${r.surah}:${r.aya} word ${r.idx} · mark ${r.k}
+${crop(r, inks.get(r.page).shapes, 300)}
+labelled ${esc(r.name)}
+agreement here ${r.phi0.toFixed(3)} overlap ${r.iou0.toFixed(3)}, ink ${(100 * r.ink).toFixed(1)}%
+best nearby ${r.phiBest.toFixed(3)} at ${r.dx >= 0 ? "+" : ""}${r.dx.toFixed(2)}, ${r.dy >= 0 ? "+" : ""}${r.dy.toFixed(2)} units (${r.off.toFixed(2)} away)
+a wrong place scores ${r.nullPhi.toFixed(3)} (margin ${(r.phi0 - r.nullPhi).toFixed(3)}) `;
+}
+
+/**
+ * The one place on this page where a name is mentioned, kept apart from
+ * everything above it and reachable only after the position question has been
+ * answered for that mark.
+ */
+function differCard(r, i, inks) {
+ const held = SHAPES.groupOf(r.sawShift) !== SHAPES.groupOf(r.name);
+ return `
+#${i + 1} the two prints differ p${r.page} · ${r.surah}:${r.aya} word ${r.idx} · mark ${r.k}
+${crop(r, inks.get(r.page).shapes, 300)}
+the corpus drew, and named ${esc(r.name)} (and the drawing matches that name)
+the shipped ink looks like ${esc(r.saw)} ${r.sawPhi.toFixed(3)} against ${r.minePhi.toFixed(3)} for the name it was given
+and the rectangle is on it ${r.off.toFixed(2)} units from where it fits best, ${(r.phi0 - r.nullPhi).toFixed(3)} clear of a wrong place
+still differs at the best fit ${held ? `yes — still ${esc(r.sawShift)} once moved` : `no — ${r.sawShift === r.name ? "it agrees" : `it becomes ${esc(r.sawShift)}, inside the name's own shape group`} once moved, so this is the last fraction of a unit of placement and not the two printings differing`} `;
+}
+
+function surface() {
+ const worstOf = (list, n) => [...list].sort((a, b) => a.phi0 - a.nullPhi - (b.phi0 - b.nullPhi)).slice(0, n);
+ const before = worstOf(rows, Math.min(12, rows.length));
+ const after = worstOf(fixed, crops);
+ const inks = new Map();
+ for (const p of new Set([...before, ...after, ...inkDiff].map((r) => r.page))) {
+ inks.set(p, readPageInk(readFileSync(join(PAGES, `${p}.svg`), "utf8"), 1 / (4 * RES)));
+ }
+ const cards = after.map((r, i) => card(r, i, inks, "m")).join("\n");
+ const shipped = before.map((r, i) => card(r, i, inks, "b")).join("\n");
+ // The ones that survive re-placement first: they are the only rows on this
+ // page that could be two printings genuinely differing, and burying them
+ // among a hundred near-misses sorted by margin would hide the finding inside
+ // its own evidence.
+ const heldFirst = (r) => (SHAPES.groupOf(r.sawShift) !== SHAPES.groupOf(r.name) ? 0 : 1);
+ const differs = inkDiff
+ .slice()
+ .sort((a, b) => heldFirst(a) - heldFirst(b) || b.sawPhi - b.minePhi - (a.sawPhi - a.minePhi))
+ .map((r, i) => differCard(r, i, inks))
+ .join("\n");
+ const names = [...new Set(rows.map((r) => r.name))].sort();
+ const c = report.corrected;
+ return `Hifth — is the mark under the box? — ${report.ran}
+
+Is the mark under the box?
+${nAll} marks scored${population ? ` from a seeded sample of ${population.toLocaleString()}` : ""} · generated ${report.ran}
+
+What is being decided on this page?
+Whether the rectangle this app holds for each mark is in the right place — and if it is not,
+whether to correct it and how. Nothing draws a mark today, so nothing is broken for a reader right
+now. What it costs to leave is that the first feature to point at a mark points slightly off, which
+is the failure a reader trusts rather than notices.
+What does the measurement say?
+The rectangles are not scattered — they are displaced together, on all but a handful of pages, by
+very nearly the same amount. A rectangle agrees with the ink underneath it
+${report.control.truePhiMean.toFixed(3)} where it claims to be, against
+${report.control.nullPhiMean.toFixed(3)} at a deliberately wrong place on the same page: a separation of
+${report.control.separation.toFixed(3)} , where this method needs at least ${SEP} before any other number on the
+page means anything. Those two are agreement scores rather than percentages — only the gap between them
+carries the meaning, and it is the gap that has to be positive.${
+ report.control.separation < SEP
+ ? " It does not clear its own control, which is the finding: a rectangle taken from elsewhere describes the ink about as well as the right one does."
+ : ""
+ } ${report.registration.shiftedPct.toFixed(2)}% of rectangles sit further than ${OFF} units from where their own ink is.
+What are the choices?
+
+Leave the rectangles alone and never draw a mark. Costs nothing today and makes the mark
+layer permanently unusable for pointing at anything.
+Record one displacement per page, measured from the ink — recommended.${
+ c
+ ? ` Two numbers per page, derived offline and reproducibly, and the overlap between rectangle and ink
+moves from ${report.registration.iou0P50.toFixed(3)} to ${c.iou0P50.toFixed(3)} , blank rectangles from
+${report.registration.emptyPct.toFixed(2)}% to ${c.emptyPct.toFixed(2)}% , and badly-placed ones from
+${report.registration.shiftedPct.toFixed(1)}% to ${c.shiftedPct.toFixed(1)}% .`
+ : ""
+ } The correction is read from a file thereafter, never re-fitted where it is used.
+Re-derive the whole fit from the ink, scale and all. It works, and it buys about two
+hundredths of a unit over a shift alone — in exchange for discarding a fit that is already checked.
+Rejected on the evidence rather than on principle.
+
+What is left for a person to do?
+Look at a sample of the cards below and say whether the machine's verdicts are the ones you would
+have given. Until somebody has, this measurement stays a report and does not become a check that can
+fail a build — that ordering is deliberate.
+
+
+ the rectangle we claim
+ the outline the other print drew
+ where it fits best
+black is the ink this app actually ships
+
+${
+ c
+ ? `Every rectangle on a page is wrong by the same amount
+The rectangles are not scattered. On all but the opening pages they sit together, about
+${Math.abs(c.shiftDx).toFixed(2)} units too far ${c.shiftDx < 0 ? "right" : "left"} and ${Math.abs(c.shiftDy).toFixed(2)} units too far ${c.shiftDy < 0 ? "down" : "up"}
+— which on a page ${Math.round(345)} units wide is about a fifth of a line's height. Below, the twelve worst as
+they ship. Their outlines are the right shape and the right size; they are in the wrong place, and every
+one of them is in the same wrong place.
+${shipped}
+Taking each page's own displacement out — one subtraction per page, ${c.pagesShifted} numbers in total —
+moves the overlap between rectangle and ink from ${report.registration.iou0P50.toFixed(3)} to
+${c.iou0P50.toFixed(3)} , and the share of rectangles further than ${OFF} units from where they fit best from
+${report.registration.shiftedPct.toFixed(1)}% to ${c.shiftedPct.toFixed(1)}% . Everything below is what is
+left after that correction: the marks a single number per page does not explain.
`
+ : ""
+}
+This page answers one question: is the rectangle on the mark? Whether a mark's drawing
+matches the name it was given is a different question with a different answer, and it has
+a page of its own —
+it is asked without the shipped print, the fitted transform or any rectangle in the arithmetic, so that the
+displacement measured here cannot reach it.
+What is left, worst first
+
+name all ${names.map((n) => `${esc(n)} `).join("")}
+verdict all ok shifted empty
+page
+
+
+
+${cards}
+
+And separately: where the two printings disagree
+A different list, and deliberately not merged into the one above. Every mark here has already
+passed the placement question — there is ink, the rectangle is on it, and it beats a deliberately wrong
+placement — and its own drawing matches its own name. What is left is that the page this app ships
+has, at that spot, ink resembling a mark of a different shape. ${inkDiff.length ? `There ${inkDiff.length === 1 ? "is one" : `are ${inkDiff.length}`} of them, out of ${eligible.length.toLocaleString()} marks that got this far — and ${inkDiffHeld.length === 0 ? "none of them survives " : `${inkDiffHeld.length} survive${inkDiffHeld.length === 1 ? "s" : ""}`} being scored again at the placement the search itself preferred. Read that as the size of the finding: the rest are a fraction of a unit of leftover placement, not two printings drawing different marks.` : `There are none, out of ${eligible.length.toLocaleString()} marks that got this far — which is the result, not an empty section.`}
+${inkDiff.length ? `${differs}
` : ""}
+`;
+}
+
+mkdirSync(dirname(outPath), { recursive: true });
+writeFileSync(outPath, surface());
+
+/**
+ * The correction itself, written down on its own.
+ *
+ * It is buried in the report otherwise, and it is the one thing here another
+ * tool needs: the adjudication page draws these very numbers for a person to
+ * judge, and it must draw the *same* numbers this run measured rather than
+ * numbers it derived a second time. Writing them out once is also what the
+ * recommended option amounts to — this file is that option's shape, produced
+ * here so it can be looked at before anybody agrees to ship it.
+ *
+ * It lands beside the evidence page, which is not checked in. Nothing reads it
+ * at build time and nothing in the app knows it exists.
+ */
+const SHIFT_OUT = arg("--shift-out", join(dirname(outPath), "mark-shift.json"));
+writeFileSync(
+ SHIFT_OUT,
+ `${JSON.stringify(
+ {
+ ran: report.ran,
+ from: "probe-mark-ink.mjs",
+ how: "the median displacement of that page's marks, measured against the ink the app ships",
+ units: "page units of the shipped page frame; add these to a claimed rectangle to correct it",
+ seed,
+ sampled: nAll,
+ minMarksPerPage: 20,
+ shifts: [...perPageShift.entries()]
+ .sort((a, b) => a[0] - b[0])
+ .map(([page, s]) => ({ page, dx: Number(s.dx.toFixed(4)), dy: Number(s.dy.toFixed(4)), n: s.n })),
+ },
+ null,
+ 2,
+ )}\n`,
+);
+
+// ---------------------------------------------------------------- output --
+
+if (wantJson) {
+ console.log(JSON.stringify(report, null, 2));
+} else {
+ const f = (v, n = 2) => v.toFixed(n);
+ const L = [];
+ L.push(`probe:mark-ink — ${nAll} marks on ${report.pages} pages, ${RES} samples per page unit, ${report.ms} ms`);
+ if (population) {
+ L.push(
+ ` seed ${seed}: ${pagesDrawn} pages drawn at random from the ${cached.length} in the cache, ` +
+ `then ${nAll} marks drawn from the ${population.toLocaleString()} on them`,
+ );
+ }
+ L.push("");
+ L.push("① IS THE MEASURE MEASURING ANYTHING — the control");
+ L.push(` agreement where the box claims to be ${f(report.control.truePhiMean, 3)} ± ${f(report.control.truePhiSd, 3)}`);
+ L.push(` agreement at a deliberately wrong place ${f(report.control.nullPhiMean, 3)} ± ${f(report.control.nullPhiSd, 3)}`);
+ L.push(` separation ${f(report.control.separation, 3)} ${report.control.separation < SEP ? "*** TOO SMALL — nothing below is worth reading ***" : "ok"}`);
+ L.push(` marks beating their own wrong place ${report.control.beatsNull} of ${nAll} (${f(pct(report.control.beatsNull, nAll), 2)}%)`);
+ L.push("");
+ L.push("② REGISTRATION — is the box in the right place");
+ L.push(` rectangles essentially blank (<2% ink) ${empties.length} (${f(report.registration.emptyPct)}%, 95% CI ${f(report.registration.emptyCi[0])}–${f(report.registration.emptyCi[1])}%)`);
+ L.push(` best fit further than ${OFF} units off ${shifted.length} of ${placed.length} (${f(report.registration.shiftedPct)}%, 95% CI ${f(report.registration.shiftedCi[0])}–${f(report.registration.shiftedCi[1])}%)`);
+ L.push(` displacement, median / 95th percentile ${f(report.registration.offP50)} / ${f(report.registration.offP95)} units`);
+ L.push(` mean displacement across / down the page ${f(report.registration.dxMean, 3)} / ${f(report.registration.dyMean, 3)} units (sd ${f(report.registration.dxSd, 2)} / ${f(report.registration.dySd, 2)})`);
+ L.push(` overlap where claimed / where best ${f(report.registration.iou0P50, 3)} / ${f(report.registration.iouBestP50, 3)} (median)`);
+ L.push("");
+ L.push("③ WHOSE MARKS ARE ELIGIBLE TO BE COMPARED BETWEEN THE TWO PRINTINGS");
+ L.push(" A mark only qualifies if the rectangle is on ink, sits where it claims, beats a deliberately");
+ L.push(" wrong placement, and — measured with no page in the question — is drawn like its own name.");
+ const bp = report.betweenPrints;
+ L.push(` eligible ${bp.eligible} of ${fixed.length}`);
+ L.push(` set aside, rectangle essentially blank ${bp.excluded.blank}`);
+ L.push(` set aside, rectangle too far off the ink ${bp.excluded.displaced}`);
+ L.push(` set aside, no better than a wrong place ${bp.excluded.notSeparated}`);
+ L.push(` set aside, its own name is in question ${bp.excluded.labelInQuestion}`);
+ L.push(" (that last one is answered on its own, with no page and no fit: run the labelling probe)");
+ L.push("");
+ if (report.corrected) {
+ const c = report.corrected;
+ L.push("④ IF EACH PAGE'S OWN DISPLACEMENT WERE TAKEN OUT FIRST");
+ L.push(` the displacement removed, averaged over ${c.pagesShifted} pages: ${f(c.shiftDx, 2)} across, ${f(c.shiftDy, 2)} down`);
+ L.push(" as shipped corrected");
+ L.push(` agreement where the box claims to be ${f(report.control.truePhiMean, 3).padStart(9)} → ${f(c.truePhiMean, 3).padStart(9)}`);
+ L.push(` separation from a wrong place ${f(report.control.separation, 3).padStart(9)} → ${f(c.separation, 3).padStart(9)}`);
+ L.push(` marks beating their own wrong place ${f(pct(report.control.beatsNull, nAll), 1).padStart(8)}% → ${f(pct(c.beatsNull, fixed.length), 1).padStart(8)}%`);
+ L.push(` mean ink inside the rectangle ${f(100 * mean(rows.map((r) => r.ink)), 1).padStart(8)}% → ${f(100 * c.inkMean, 1).padStart(8)}%`);
+ L.push(` blank rectangles ${f(report.registration.emptyPct, 2).padStart(8)}% → ${f(c.emptyPct, 2).padStart(8)}% (95% CI ${f(c.emptyCi[0], 2)}–${f(c.emptyCi[1], 2)}%)`);
+ L.push(` further than ${OFF} units off ${f(report.registration.shiftedPct, 2).padStart(8)}% → ${f(c.shiftedPct, 2).padStart(8)}% (95% CI ${f(c.shiftedCi[0], 2)}–${f(c.shiftedCi[1], 2)}%)`);
+ L.push(` displacement left over, median / p95 ${f(report.registration.offP50, 2).padStart(9)} → ${f(c.offP50, 2).padStart(9)} / ${f(c.offP95, 2)} units`);
+ L.push(` overlap with the ink, median ${f(report.registration.iou0P50, 3).padStart(9)} → ${f(c.iou0P50, 3).padStart(9)}`);
+ L.push(" (there is deliberately no 'ink matches the label' line here — see ⑧)");
+ L.push("");
+ L.push("⑤ PER NAME, after that correction");
+ L.push(" name n blank% mean dx mean dy off p95 agree");
+ for (const r of c.perName) {
+ const bias = Math.abs(r.dyMean) > 2 * r.dySe && Math.abs(r.dyMean) > 0.05 ? " <" : "";
+ L.push(
+ ` ${r.name.padEnd(22)} ${String(r.n).padStart(4)} ${f(r.emptyPct).padStart(7)} ` +
+ `${f(r.dxMean, 3).padStart(9)} ${f(r.dyMean, 3).padStart(10)}${bias.padEnd(2)} ` +
+ `${f(r.offP95).padStart(7)} ${f(r.phi0, 3).padStart(6)}`,
+ );
+ }
+ L.push(" ('<' marks a mean displacement more than two standard errors from zero — a bias, not noise)");
+ L.push("");
+ }
+ L.push("⑥ PER NAME, as shipped");
+ L.push(" name n blank% mean dx mean dy off p95 agree");
+ for (const r of report.perName) {
+ const bias = Math.abs(r.dyMean) > 2 * r.dySe && Math.abs(r.dyMean) > 0.05 ? " <" : "";
+ L.push(
+ ` ${r.name.padEnd(22)} ${String(r.n).padStart(4)} ${f(r.emptyPct).padStart(7)} ` +
+ `${f(r.dxMean, 3).padStart(9)} ${f(r.dyMean, 3).padStart(10)}${bias.padEnd(2)} ` +
+ `${f(r.offP95).padStart(7)} ${f(r.phi0, 3).padStart(6)}`,
+ );
+ }
+ L.push(" ('<' marks a mean displacement more than two standard errors from zero — a bias, not noise)");
+ L.push("");
+ if (report.perPage.length > 1) {
+ L.push("⑦ PER PAGE — does a page move as one piece?");
+ L.push(" page n mean dx mean dy sd dx sd dy overlap now overlap moved fit residual");
+ for (const r of report.perPage.slice(0, 24)) {
+ L.push(
+ ` ${String(r.page).padStart(4)} ${String(r.n).padStart(5)} ${f(r.dxMean, 3).padStart(9)} ${f(r.dyMean, 3).padStart(10)} ` +
+ `${f(r.dxSd, 2).padStart(7)} ${f(r.dySd, 2).padStart(7)} ${f(r.iou0, 3).padStart(12)} ${f(r.iouBest, 3).padStart(14)} ${f(r.residual, 3).padStart(13)}`,
+ );
+ }
+ if (report.perPage.length > 24) L.push(` … ${report.perPage.length - 24} more pages, in the machine output`);
+ L.push("");
+ const rf = report.perPage.filter((r) => r.refit);
+ if (rf.length) {
+ L.push(" and what the fit between the two prints would have been, re-derived from the ink:");
+ L.push(" page scale across moves by scale down moves by scatter left over");
+ for (const r of rf.slice(0, 24)) {
+ L.push(
+ ` ${String(r.page).padStart(4)} ${f(r.refit.sx, 5).padStart(14)} ${f(r.refit.dtx, 3).padStart(10)} ` +
+ `${f(r.refit.sy, 5).padStart(15)} ${f(r.refit.dty, 3).padStart(12)} ${f(r.refit.residX, 2)} / ${f(r.refit.residY, 2)} units`,
+ );
+ }
+ L.push(
+ ` (the pinned scales are ${f(PIN.pages.find((x) => x.page === rf[0].page).sx, 5)} and ` +
+ `${f(PIN.pages.find((x) => x.page === rf[0].page).sy, 5)} on page ${rf[0].page})`,
+ );
+ L.push("");
+ }
+ }
+ L.push("⑧ AND SEPARATELY: DO THE TWO PRINTINGS DRAW THE SAME MARK IN THE SAME PLACE?");
+ L.push(" Only the eligible marks from ③. Three counts, never added together — the middle one is a");
+ L.push(" limit of a comparison that centres both drawings, not a disagreement between the printings.");
+ L.push(` the shipped ink is drawn as the same name ${bp.same} (${f(bp.samePct)}%, 95% CI ${f(bp.sameCi[0])}–${f(bp.sameCi[1])}%)`);
+ L.push(` a name this print draws as the same shape ${bp.twin} (${f(bp.twinPct)}%, 95% CI ${f(bp.twinCi[0])}–${f(bp.twinCi[1])}%)`);
+ L.push(` a genuinely different shape ${bp.differ} (${f(bp.differPct)}%, 95% CI ${f(bp.differCi[0])}–${f(bp.differCi[1])}%)`);
+ L.push(` …and of those, still different when scored at the placement the search itself preferred:`);
+ L.push(
+ ` ${bp.differHeld} of ${bp.differ}` +
+ (bp.differ && bp.differHeld / bp.differ < 0.1
+ ? " — so all but a handful are a sixteenth of a unit of residual placement, not two printings disagreeing"
+ : ""),
+ );
+ if (bp.groups.length) {
+ L.push(` the shapes this print does not separate, above ${bp.groupThreshold}:`);
+ for (const g of bp.groups) L.push(` ${g.join(" · ")}`);
+ }
+ if (bp.worst.length) {
+ L.push(" worst, by how far the shipped ink beat the named mark ('*' = still differs after re-placing):");
+ for (const w of bp.worst.slice(0, 12)) {
+ L.push(
+ ` ${w.held ? "*" : " "}p${String(w.page).padStart(3)} mark ${String(w.k).padStart(4)} ${w.name.padEnd(22)} ` +
+ `drawn like ${w.saw.padEnd(22)} ${f(w.sawPhi, 3)} vs ${f(w.minePhi, 3)}`,
+ );
+ }
+ }
+ L.push("");
+ L.push(`⑨ HOW BIG A SAMPLE WOULD SETTLE IT`);
+ L.push(` to pin a ~2% rate to ±0.5 points ${report.needed.forOnePercent.toLocaleString()} marks`);
+ L.push(` to pin it to ±0.1 points ${report.needed.forTenth.toLocaleString()} marks`);
+ L.push("");
+ L.push(`Look at the evidence: ${outPath}`);
+ if (skipped.length) L.push(`(${skipped.length} marks had an outline that rasterised to nothing and were not scored)`);
+ console.log(L.join("\n"));
+}
+
+// A breached threshold exits non-zero so this *could* be a gate. It is not one:
+// nothing runs it in CI, on purpose — the thresholds below are proposed in
+// `docs/design/mark-registration.md` and have not been agreed.
+const breaches = [];
+if (report.control.separation < SEP) breaches.push(`separation ${report.control.separation.toFixed(3)} < ${SEP}`);
+if (report.registration.emptyPct > 3) breaches.push(`blank rectangles ${report.registration.emptyPct.toFixed(2)}% > 3%`);
+if (report.registration.shiftedPct > 2) breaches.push(`displaced ${report.registration.shiftedPct.toFixed(2)}% > 2%`);
+if (breaches.length) {
+ console.error(`\nthreshold breached: ${breaches.join("; ")}`);
+ process.exit(1);
+}
diff --git a/packages/etl/scripts/probe-mark-labels.mjs b/packages/etl/scripts/probe-mark-labels.mjs
new file mode 100644
index 0000000..c16827c
--- /dev/null
+++ b/packages/etl/scripts/probe-mark-labels.mjs
@@ -0,0 +1,943 @@
+#!/usr/bin/env node
+/**
+ * Does the drawing match the name the same print gave it?
+ *
+ * This is the second of two questions about a mark, and it is deliberately not
+ * asked in the same script as the first.
+ *
+ * `probe-mark-ink.mjs` asks whether a mark's rectangle is in the right *place*
+ * on the page this app ships. To answer that it must bring in the shipped
+ * printing, the per-page transform fitted between the two printings, and a
+ * raster of real artwork — and the answer turned out to be that the rectangles
+ * are displaced by about a unit, everywhere, on every page.
+ *
+ * That displacement contaminated the *other* question. Asking "is the ink under
+ * this rectangle a damma?" while the rectangle is a unit low is partly asking
+ * about the letter underneath, and a fatha that has slid onto a stroke will
+ * happily look like something else. So the labelling question is asked here
+ * instead, where **the shipped page is not an input at all**:
+ *
+ * take the outline the corpus drew, and ask whether it matches the canonical
+ * example of the name the corpus gave it, in the corpus's own frame.
+ *
+ * No page. No fit. No second printing. No rectangle. The displacement cannot
+ * reach this measurement, because it is not one of the numbers that go into it.
+ *
+ * ## Three outcomes, never summed
+ *
+ * - **agrees** — the drawing's best match is its own name.
+ * - **indistinguishable** — the best match is a name this print draws as the
+ * *same shape*. A fatha and a kasra are one short stroke each; what tells them
+ * apart is which side of the letter they sit on, which a centred shape
+ * comparison discards before it starts. This is a limit of the method and is
+ * reported as one. It is **not** a disagreement and must never be counted as
+ * one.
+ * - **differs** — the best match is outside the label's shape group. Only this
+ * is a finding about the data.
+ *
+ * The groups are derived, not asserted: every canonical example is scored
+ * against every other, the whole square is published, and any pair above a
+ * stated threshold is joined. The threshold's sensitivity is printed beside it,
+ * because a grouping that decides which disagreements are excused has to be
+ * auditable or it is just an excuse.
+ *
+ * ## Why every number here comes with a control
+ *
+ * Three, all of them free — the winner for a drawing does not depend on what it
+ * was labelled, so a label can be planted after the fact and the verdict
+ * recomputed:
+ *
+ * - **plant a random wrong name** from outside the drawing's shape group. The
+ * method should say "differs".
+ * - **plant the nearest wrong name** — the one name outside the group that this
+ * drawing's class most resembles. That is where a real mislabelling would
+ * hide, so it is the control that matters.
+ * - **plant a within-group name**. The method must *not* say "differs", or the
+ * grouping is not doing the job it exists for.
+ *
+ * And on the disagreements themselves, a robustness check: re-centre each one by
+ * a sample in each direction and see whether the verdict survives. A
+ * disagreement that flips when the middle moves by one sample is measuring the
+ * centring, not the shape.
+ *
+ * ## What it does not need
+ *
+ * No model, no download, no network, no native binary, no font, and — unlike
+ * its sibling — no shipped page either. It is a scanline filler in arithmetic
+ * over one cache already pinned by hash.
+ *
+ * Named `probe-` and not `gate-` because the ligature corpus is a gitignored
+ * cache and there is nothing for a gate to read on a clean checkout. It exits
+ * non-zero on a breached threshold so that it *could* become one, and is
+ * deliberately not wired into anything.
+ *
+ * ## The one rule this script exists under
+ *
+ * **There is no Quran text in this repo and there will not be.** Marks are
+ * reported by page, word index and drawn name. Nothing is written outside
+ * `packages/etl/out/`, which is gitignored.
+ *
+ * Usage:
+ * node packages/etl/scripts/probe-mark-labels.mjs # every mark in the cache
+ * node packages/etl/scripts/probe-mark-labels.mjs --sample 20000 --seed 7
+ * node packages/etl/scripts/probe-mark-labels.mjs --pages 2,3,50
+ * node packages/etl/scripts/probe-mark-labels.mjs --json
+ * node packages/etl/scripts/probe-mark-labels.mjs --matrix # the whole square
+ */
+import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
+import { dirname, join } from "node:path";
+import { fileURLToPath } from "node:url";
+import { readMarkOutlines } from "./lib/diacritics.mjs";
+import { integral } from "./lib/ink.mjs";
+import { rng, scoreAt, wilson } from "./lib/mark-ink.mjs";
+import {
+ SHAPE_HALF,
+ SHAPE_RES,
+ centred,
+ classifier,
+ fitTo,
+ loadExemplars,
+ pieceCheck,
+ shapeGroups,
+ similarityMatrix,
+} from "./lib/mark-shape.mjs";
+import { pathBBox } from "./lib/mushaf-frame.mjs";
+
+const HERE = dirname(fileURLToPath(import.meta.url));
+const CACHE = join(HERE, "..", "data", "pages", ".cache", "words");
+const OUT = join(HERE, "..", "out", "mark-labels.html");
+
+const pad3 = (n) => String(n).padStart(3, "0");
+const arg = (name, fallback) => {
+ const i = process.argv.indexOf(name);
+ return i === -1 ? fallback : process.argv[i + 1];
+};
+const has = (name) => process.argv.includes(name);
+
+const wantJson = has("--json");
+const wantMatrix = has("--matrix");
+const outPath = arg("--out", OUT);
+const seed = Number(arg("--seed", 7));
+const sampleN = arg("--sample", null) === null ? null : Number(arg("--sample", null));
+const pageArg = arg("--pages", null);
+const crops = Number(arg("--crops", 300));
+
+/**
+ * How alike two names must be drawn before this method gives up the right to
+ * tell them apart.
+ *
+ * Not tuned. The sensitivity table below reports what the grouping would be at
+ * six other values, and the point of printing it is that the answer does not
+ * move: the pairs this joins sit far above every pair it does not, so anywhere
+ * in a wide band gives the same two groups.
+ */
+const TWIN = Number(arg("--twin", 0.85));
+
+const pageFile = (p) => join(CACHE, `${pad3(p)}.svg`);
+const cached = [];
+for (let p = 1; p <= 604; p += 1) if (existsSync(pageFile(p))) cached.push(p);
+if (!cached.length) {
+ console.error(
+ "No ligature pages in packages/etl/data/pages/.cache/words/.\n" +
+ "This probe reads the cache the word boxes were built from; fill it with\n" +
+ "`node packages/etl/scripts/probe-encodings.mjs --fetch` first.",
+ );
+ process.exit(2);
+}
+
+const parsePages = (s) =>
+ s
+ .split(",")
+ .flatMap((part) => {
+ const m = part.match(/^(\d+)-(\d+)$/);
+ if (!m) return [Number(part)];
+ const out = [];
+ for (let p = Number(m[1]); p <= Number(m[2]); p += 1) out.push(p);
+ return out;
+ })
+ .filter((p) => p >= 1 && p <= 604);
+
+const t0 = Date.now();
+const outlinesOf = (p) => readMarkOutlines(readFileSync(pageFile(p), "utf8"));
+const lib = loadExemplars({
+ cacheFile: join(HERE, "..", "out", `mark-exemplars.${cached.length}.json`),
+ pages: cached,
+ outlinesOf,
+ rebuild: has("--rebuild-templates"),
+});
+
+// -------------------------------------------------------- the shape groups --
+
+const matrix = similarityMatrix(lib);
+const G = shapeGroups(matrix, TWIN);
+
+/**
+ * What the grouping would have been at other thresholds.
+ *
+ * Printed because the grouping is the single most load-bearing judgement in this
+ * script — it decides which disagreements are excused — and a judgement that
+ * changes when a number nobody argued about moves by a hundredth is not a
+ * judgement, it is a coincidence.
+ */
+const sensitivity = [0.7, 0.75, 0.8, 0.85, 0.9, 0.95].map((t) => ({
+ threshold: t,
+ groups: shapeGroups(matrix, t).groups,
+}));
+
+const classify = classifier(lib, G.groupOf);
+
+/**
+ * The nearest name outside a name's own shape group.
+ *
+ * This is the label a real mislabelling is most likely to wear, so it is the one
+ * the sensitivity control plants. Read off the published matrix rather than
+ * chosen, and taken in the more generous direction, so the control is as hard as
+ * the matrix says it should be.
+ */
+const nearestOutside = new Map();
+for (let a = 0; a < matrix.names.length; a += 1) {
+ let best = { name: null, phi: -2 };
+ for (let b = 0; b < matrix.names.length; b += 1) {
+ if (a === b) continue;
+ if (G.groupOf(matrix.names[a]) === G.groupOf(matrix.names[b])) continue;
+ const v = Math.max(matrix.phi[a][b], matrix.phi[b][a]);
+ if (v > best.phi) best = { name: matrix.names[b], phi: v };
+ }
+ nearestOutside.set(matrix.names[a], best);
+}
+
+// ------------------------------------------------------------ the census --
+
+/**
+ * Which marks to look at.
+ *
+ * The default is **all of them**. This question has no per-page quantity in it —
+ * there is no fit, no transform and no page-wide anything — so there is no
+ * reason to cluster the sample by page, and at a seventh of a millisecond a mark
+ * there is no reason to sample at all. A census has no sampling error, so the
+ * rates below carry no confidence interval and need none; the interval is
+ * printed only when `--sample` is given, and then it is honest, because a
+ * uniform draw over the whole corpus really is independent.
+ */
+let picks;
+let population = null;
+if (pageArg) {
+ picks = parsePages(pageArg).filter((p) => cached.includes(p));
+} else {
+ picks = cached;
+}
+
+const counts = new Map();
+const verdicts = new Map();
+const differs = [];
+const control = {
+ randomOutside: { planted: 0, flagged: 0 },
+ nearestOutside: { planted: 0, flagged: 0 },
+ insideGroup: { planted: 0, flagged: 0 },
+};
+const margins = [];
+const ownPhi = new Map();
+let scored = 0;
+let skipped = 0;
+let seenTotal = 0;
+
+/**
+ * How many marks the corpus holds, taken from the template scan rather than
+ * counted again — the scan already walked every page and recorded how many of
+ * each name it saw, and a second count is a second thing that can disagree.
+ */
+const corpusTotal = [...lib.values()].reduce((a, v) => a + (v.of ?? 0), 0);
+
+const r = rng(seed);
+const draw = rng(seed ^ 0x2f1b3c5d);
+const names = matrix.names;
+const outsideOf = (name) => {
+ const g = G.groupOf(name);
+ const pool = names.filter((n) => G.groupOf(n) !== g);
+ return pool.length ? pool[Math.floor(r() * pool.length)] : null;
+};
+const insideOf = (name) => {
+ const pool = names.filter((n) => n !== name && G.groupOf(n) === G.groupOf(name));
+ return pool.length ? pool[Math.floor(r() * pool.length)] : null;
+};
+
+for (const p of picks) {
+ const os = outlinesOf(p);
+ for (let k = 0; k < os.length; k += 1) {
+ seenTotal += 1;
+ // A uniform draw over the whole corpus, from a stream of its own so that
+ // asking for a sample does not change which control labels get planted on
+ // the marks that are drawn.
+ if (sampleN !== null && draw() > sampleN / corpusTotal) continue;
+ const o = os[k];
+ const res = classify(o.d, o.name);
+ if (!res) {
+ skipped += 1;
+ continue;
+ }
+ scored += 1;
+ counts.set(o.name, (counts.get(o.name) ?? 0) + 1);
+ const key = `${o.name}>${res.verdict}`;
+ verdicts.set(key, (verdicts.get(key) ?? 0) + 1);
+ margins.push(res.margin);
+ if (!ownPhi.has(o.name)) ownPhi.set(o.name, []);
+ ownPhi.get(o.name).push(res.minePhi);
+
+ // --- the controls, recomputed from the same winner ---------------------
+ // The winner does not depend on the label, so planting one costs nothing
+ // and the control is measured on every mark rather than on a subsample.
+ const gWon = G.groupOf(res.saw);
+ const pr = outsideOf(o.name);
+ if (pr) {
+ control.randomOutside.planted += 1;
+ if (G.groupOf(pr) !== gWon) control.randomOutside.flagged += 1;
+ }
+ const pn = nearestOutside.get(o.name)?.name;
+ if (pn) {
+ control.nearestOutside.planted += 1;
+ if (G.groupOf(pn) !== gWon) control.nearestOutside.flagged += 1;
+ }
+ const pi = insideOf(o.name);
+ if (pi) {
+ control.insideGroup.planted += 1;
+ if (G.groupOf(pi) !== gWon) control.insideGroup.flagged += 1;
+ }
+
+ if (res.verdict === "differs") {
+ differs.push({ page: p, k, name: o.name, d: o.d, ...res });
+ }
+ }
+}
+population = seenTotal;
+
+// ------------------------------------------- is a disagreement load-bearing --
+
+/**
+ * Does a disagreement survive the middle of the drawing moving by one sample?
+ *
+ * Run on the disagreements only, because they are the only rows anybody will act
+ * on and because it is the one way this method can be wrong that has nothing to
+ * do with the corpus: two drawings centred a half-sample apart are not the same
+ * comparison, and if a verdict flips under that it was never about the shape.
+ */
+function robust(row) {
+ const obs = centred(row.d);
+ const sat = integral(obs.m, obs.cols, obs.rows);
+ const box = pathBBox(row.d);
+ const ex = [];
+ for (const [name, e] of lib) {
+ const [sx, sy] = fitTo(pathBBox(e.d), box);
+ const c = centred(e.d, SHAPE_RES, SHAPE_HALF, sx, sy);
+ if (c.s.area) ex.push({ name, c });
+ }
+ let held = 0;
+ let tried = 0;
+ for (let dj = -1; dj <= 1; dj += 1) {
+ for (let di = -1; di <= 1; di += 1) {
+ if (!di && !dj) continue;
+ tried += 1;
+ let best = { name: null, phi: -2 };
+ for (const e of ex) {
+ const v = scoreAt(e.c.s, obs.m, sat, obs.cols, obs.rows, di, dj).phi;
+ if (v > best.phi) best = { name: e.name, phi: v };
+ }
+ if (G.groupOf(best.name) !== G.groupOf(row.name)) held += 1;
+ }
+ }
+ return { held, tried };
+}
+for (const row of differs.slice(0, 400)) Object.assign(row, robust(row));
+
+// -------------------------- are the strokes wrong, or the distance between? --
+
+/**
+ * For every disagreement, each stroke against the matching stroke of its own
+ * name's example — and the same two numbers for every *other* drawing of the
+ * same name, so the disagreement has something to be read against.
+ *
+ * Run on the names that actually disagreed rather than on all of them, because
+ * it is a second pass over the cache and the question only arises where there is
+ * a verdict to explain.
+ */
+const pieceRows = [];
+const pieceControl = [];
+if (differs.length) {
+ const want = new Set(differs.map((d) => d.name));
+ const flagged = new Set(differs.map((d) => `${d.page}|${d.k}`));
+ const bag = new Map([...want].map((n) => [n, { worst: [], spacing: [], n: 0 }]));
+ for (const d of differs) {
+ const r = pieceCheck(d.d, lib.get(d.name).d);
+ pieceRows.push({
+ page: d.page,
+ k: d.k,
+ name: d.name,
+ saw: d.saw,
+ whole: d.minePhi,
+ strokes: r ? r.n : null,
+ worstStroke: r ? r.worst : null,
+ spacing: r ? r.spacing : null,
+ });
+ }
+ for (const p of picks) {
+ const os = outlinesOf(p);
+ for (let k = 0; k < os.length; k += 1) {
+ if (!want.has(os[k].name) || flagged.has(`${p}|${k}`)) continue;
+ const r = pieceCheck(os[k].d, lib.get(os[k].name).d);
+ if (!r) continue;
+ const b = bag.get(os[k].name);
+ b.n += 1;
+ b.worst.push(r.worst);
+ b.spacing.push(r.spacing);
+ }
+ }
+ for (const [name, b] of bag) pieceControl.push({ name, ...b });
+}
+
+// ---------------------------------------------------------------- summary --
+
+const pct = (k, n) => (n ? (100 * k) / n : 0);
+const ci = (k, n) => wilson(k, n).map((v) => 100 * v);
+const q = (xs, p) => {
+ if (!xs.length) return 0;
+ const s = [...xs].sort((a, b) => a - b);
+ return s[Math.min(s.length - 1, Math.max(0, Math.round(p * (s.length - 1))))];
+};
+const mean = (xs) => (xs.length ? xs.reduce((a, b) => a + b, 0) / xs.length : 0);
+
+const vOf = (name, v) => verdicts.get(`${name}>${v}`) ?? 0;
+const total = (v) => [...counts.keys()].reduce((a, n) => a + vOf(n, v), 0);
+
+const partition = {
+ agrees: total("agrees"),
+ indistinguishable: total("indistinguishable"),
+ differs: total("differs"),
+};
+
+const perName = [...counts.entries()]
+ .map(([name, n]) => ({
+ name,
+ n,
+ agrees: vOf(name, "agrees"),
+ indistinguishable: vOf(name, "indistinguishable"),
+ differs: vOf(name, "differs"),
+ agreesPct: pct(vOf(name, "agrees"), n),
+ indistinguishablePct: pct(vOf(name, "indistinguishable"), n),
+ differsPct: pct(vOf(name, "differs"), n),
+ ownPhiP50: q(ownPhi.get(name) ?? [], 0.5),
+ ownPhiP05: q(ownPhi.get(name) ?? [], 0.05),
+ nearestOutside: nearestOutside.get(name),
+ drawnAs: G.groups.find((g) => g.includes(name)) ?? null,
+ }))
+ .sort((a, b) => b.n - a.n);
+
+const differsBy = (() => {
+ const m = new Map();
+ for (const d of differs) {
+ const k = `${d.name}>${d.saw}`;
+ m.set(k, (m.get(k) ?? 0) + 1);
+ }
+ return [...m.entries()]
+ .map(([k, n]) => ({ labelled: k.split(">")[0], drawnLike: k.split(">")[1], n }))
+ .sort((a, b) => b.n - a.n);
+})();
+
+const census = sampleN === null && !pageArg;
+const report = {
+ ran: new Date().toISOString().slice(0, 10),
+ census,
+ res: SHAPE_RES,
+ half: SHAPE_HALF,
+ seed: sampleN === null ? null : seed,
+ pages: picks.length,
+ population,
+ scored,
+ skipped,
+ ms: Date.now() - t0,
+ groups: {
+ threshold: TWIN,
+ groups: G.groups,
+ joins: G.joins,
+ sensitivity,
+ nearestOutsideMax: [...nearestOutside.entries()]
+ .map(([name, v]) => ({ name, other: v.name, phi: v.phi }))
+ .sort((a, b) => b.phi - a.phi)
+ .slice(0, 8),
+ },
+ partition: {
+ ...partition,
+ agreesPct: pct(partition.agrees, scored),
+ indistinguishablePct: pct(partition.indistinguishable, scored),
+ differsPct: pct(partition.differs, scored),
+ // An interval belongs on a sample and nowhere else. A census has no
+ // sampling error, and a hand-picked list of pages is not a draw from
+ // anything, so putting an interval on either would be inventing a
+ // population that was never sampled from.
+ agreesCi: census || pageArg ? null : ci(partition.agrees, scored),
+ indistinguishableCi: census || pageArg ? null : ci(partition.indistinguishable, scored),
+ differsCi: census || pageArg ? null : ci(partition.differs, scored),
+ },
+ control: {
+ randomOutside: { ...control.randomOutside, pct: pct(control.randomOutside.flagged, control.randomOutside.planted) },
+ nearestOutside: {
+ ...control.nearestOutside,
+ pct: pct(control.nearestOutside.flagged, control.nearestOutside.planted),
+ },
+ insideGroup: { ...control.insideGroup, pct: pct(control.insideGroup.flagged, control.insideGroup.planted) },
+ },
+ margin: { p50: q(margins, 0.5), p95: q(margins, 0.95), mean: mean(margins) },
+ robustness: (() => {
+ const rs = differs.filter((d) => d.tried);
+ return {
+ checked: rs.length,
+ allEight: rs.filter((d) => d.held === 8).length,
+ none: rs.filter((d) => d.held === 0).length,
+ };
+ })(),
+ perName,
+ /**
+ * How well each name's one canonical example stands in for its own class,
+ * worst first, with that class's disagreement rate beside it.
+ *
+ * This is the check on the method rather than on the corpus, and it is here
+ * because the two are easy to confuse and expensive to confuse. A name whose
+ * instances all agree with their example at 0.99 is a name where a
+ * disagreement means something. A name whose median instance agrees with its
+ * own example at 0.58 has no settled shape for this method to compare against,
+ * and a disagreement there may be saying only that.
+ */
+ exemplarQuality: perName
+ .slice()
+ .sort((a, b) => a.ownPhiP50 - b.ownPhiP50)
+ .slice(0, 10)
+ .map((n) => ({ name: n.name, n: n.n, ownPhiP50: n.ownPhiP50, ownPhiP05: n.ownPhiP05, differsPct: n.differsPct })),
+ differsBy,
+ /**
+ * Every disagreement taken apart into its strokes, with its own name's
+ * ordinary drawings beside it.
+ *
+ * This is the section that decides what the disagreements *are*. If a
+ * disagreeing mark's strokes each match the canonical stroke while the
+ * distances between them do not, then nothing about that mark's name is
+ * wrong — what is wrong is that a whole-shape comparison charges a mark for
+ * where the print chose to put its own pieces. That is a defect in the method
+ * and it is reported as one.
+ */
+ strokes: {
+ rows: pieceRows,
+ control: pieceControl.map((c) => ({
+ name: c.name,
+ n: c.n,
+ worstStrokeP05: q(c.worst, 0.05),
+ worstStrokeP50: q(c.worst, 0.5),
+ spacingP50: q(c.spacing, 0.5),
+ spacingP95: q(c.spacing, 0.95),
+ })),
+ },
+ worst: differs
+ .slice()
+ .sort((a, b) => b.margin - a.margin)
+ .slice(0, 60)
+ // The outline itself is left out: it is one mark's artwork, it belongs on
+ // the evidence page and nowhere a report could be pasted into a document.
+ .map((x) => ({
+ page: x.page,
+ k: x.k,
+ name: x.name,
+ saw: x.saw,
+ sawPhi: x.sawPhi,
+ minePhi: x.minePhi,
+ margin: x.margin,
+ held: x.held ?? null,
+ tried: x.tried ?? null,
+ })),
+ matrix: wantJson || wantMatrix ? { names: matrix.names, phi: matrix.phi.map((r2) => [...r2].map((v) => Math.round(v * 1e4) / 1e4)) } : null,
+};
+
+// ---------------------------------------------------------- the surface --
+
+/**
+ * The labelling view: the drawing, beside the name it was given, beside the name
+ * it looks like.
+ *
+ * A separate page from the placement view on purpose. A reader judging "is the
+ * rectangle on the mark" and a reader judging "is this a damma" are answering
+ * different questions, and one ranked list that mixes them makes both of them
+ * harder — the second reader keeps being handed cards whose only problem is that
+ * the box slid, and learns to scroll past.
+ */
+function glyph(d, size, colour) {
+ const [x0, y0, x1, y1] = pathBBox(d);
+ const pad = Math.max(x1 - x0, y1 - y0) * 0.25 + 0.5;
+ const vx = x0 - pad;
+ const vy = y0 - pad;
+ const vw = x1 - x0 + 2 * pad;
+ const vh = y1 - y0 + 2 * pad;
+ const n2 = (v) => Math.round(v * 100) / 100;
+ return (
+ `` +
+ ` ` +
+ ` `
+ );
+}
+
+const esc = (s) => String(s).replace(/[<>&"]/g, (c) => ({ "<": "<", ">": ">", "&": "&", '"': """ })[c]);
+
+function surface() {
+ const worst = differs.slice().sort((a, b) => b.margin - a.margin).slice(0, crops);
+ const strokeOf = new Map(report.strokes.rows.map((r) => [`${r.page}|${r.k}`, r]));
+ const ctlOf = new Map(report.strokes.control.map((c) => [c.name, c]));
+ const cards = worst
+ .map((d, i) => {
+ const st = strokeOf.get(`${d.page}|${d.k}`);
+ const ct = ctlOf.get(d.name);
+ // The stroke line goes on the card because it is the line that decides
+ // whether the card is worth a person's attention at all. A card whose
+ // every stroke matches its own name is not a mislabelled mark, whatever
+ // the whole-picture number says, and a reader should not have to hold that
+ // caveat in their head across a hundred cards.
+ const strokeRow =
+ st && st.worstStroke !== null
+ ? `its strokes, against its own name's ${st.worstStroke.toFixed(3)} at worst, over ${st.strokes} strokes` +
+ `${ct ? ` (others of this name: ${ct.worstStrokeP50.toFixed(3)} typical) ` : ""}
+how far apart the print set them ${st.spacing.toFixed(3)} off the example` +
+ `${ct ? ` (others of this name: ${ct.spacingP50.toFixed(3)} typical, ${ct.spacingP95.toFixed(3)} at the 95th) ` : ""} `
+ : "its strokes drawn from a different number of strokes than the example — not comparable stroke by stroke ";
+ const verdict =
+ st && st.worstStroke !== null && st.worstStroke >= 0.8
+ ? `Every stroke here matches the stroke of its own name. What differs is the distance
+between them, which this print does not hold fixed — so this card is not evidence of a wrong name.
`
+ : "";
+ return `
+#${i + 1} p${d.page} · mark ${d.k}
+
+ ${glyph(d.d, 120, "#231f20")}what the print drew
+ ${glyph(lib.get(d.name).d, 120, "#0a7")}the name it was given${esc(d.name)} — ${d.minePhi.toFixed(3)}
+ ${glyph(lib.get(d.saw).d, 120, "#95c")}the name it looks like${esc(d.saw)} — ${d.sawPhi.toFixed(3)}
+
+margin ${d.margin.toFixed(3)}
+survives re-centring ${d.tried ? `${d.held} of ${d.tried} neighbours` : "not checked"}
+${strokeRow} ${verdict} `;
+ })
+ .join("\n");
+ const nm = [...new Set(differs.map((d) => d.name))].sort();
+ const p = report.partition;
+ // How many of the disagreements are the comparison's own fault: every stroke
+ // matches the stroke of its own name, and only the distance between them
+ // differs. Computed rather than written down, so the sentence below cannot
+ // drift away from the cards it is describing.
+ const firm = differs.filter((d) => {
+ const st = strokeOf.get(`${d.page}|${d.k}`);
+ return st && st.worstStroke !== null && st.worstStroke >= 0.8;
+ }).length;
+ const allFirm = differs.length > 0 && firm === differs.length;
+ return `Hifth — does the drawing match the name? — ${report.ran}
+
+Does the drawing match the name?
+${scored.toLocaleString()} marks${census ? " — every one in the cache, not a sample" : ""} · the shipped page is not an input to anything on this page · generated ${report.ran}
+
+What is being decided on this page?
+Whether the names attached to these marks can be trusted — and, if they cannot, whether any of
+them should be corrected before the app draws anything from them. Nothing is drawn from these
+names today, so nothing breaks either way; what is at stake is whether a later feature that
+colours a recitation rule inherits a fault nobody has bounded.
+What does the measurement say?
+Of ${scored.toLocaleString()} drawings, ${p.agreesPct.toFixed(2)}% are matched best by their own name and
+${p.indistinguishablePct.toFixed(2)}% by a name this print draws as the same shape — which is this comparison's
+own blind spot, not a disagreement about the data. That leaves ${p.differs.toLocaleString()} matched by a name
+outside their own shape group.${
+ differs.length
+ ? ` ${allFirm ? "Every one of those" : `${firm} of those ${differs.length}`} has every stroke matching the strokes of its own
+name, differing only in how far apart the print set them — which this comparison scores as if it
+were shape.${allFirm ? " So no mark in this corpus is evidence of a wrong name." : ""}`
+ : " There are none."
+ }
+What is the recommendation?
+Change no names, and correct no data. Record two limits of the method instead — that
+distance between strokes is being scored as though it were shape, and that no name here has been
+checked against the text the mark belongs to — and leave the labels as the print gave them.
+What is left for a person to do?
+Read the cards below and say whether you agree with them. That is the whole ask on this page;
+no option here changes a byte of shipped data.
+Then what is still open?
+A different question, about where the rectangles sit rather than what they are called:
+is the mark under the box? That is the page with a live choice on it —
+whether to move every rectangle on a page by one measured amount. This page has no bearing on that
+one beyond deciding which marks it is allowed to score.
+
+
+Each mark below was compared against one canonical example of every name this print knows how to draw,
+all of them centred on the same spot and stretched to the same box. Nothing here involves the page the app
+ships, the transform between the two printings, or a rectangle — so the displacement measured by the
+placement probe cannot reach these numbers.
+Read the bottom row of a card before the pictures. Many of these marks are drawn from two or three
+separate strokes, and comparing whole pictures asks about the strokes and about how far apart the print set
+them, in one number. Each card says which of the two it is. Where every stroke matches its own name, the
+card is a defect in this comparison and not a mark with the wrong name — and so far that is every card.
+
+outcome marks share
+the drawing's best match is its own name ${p.agrees.toLocaleString()} ${p.agreesPct.toFixed(2)}%
+best match is a name drawn as the same shape (a limit of this method, not a disagreement) ${p.indistinguishable.toLocaleString()} ${p.indistinguishablePct.toFixed(2)}%
+best match is outside the label's shape group (the only finding about the data) ${p.differs.toLocaleString()} ${p.differsPct.toFixed(2)}%
+
+Names this print draws as one shape, derived by scoring every example against every other and joining any
+pair above ${TWIN}: ${G.groups.length ? G.groups.map((g) => `${g.map(esc).join(" · ")} `).join("; ") : "none"}.
+What separates the members of a group is which side of the letter the mark sits on, which a centred comparison
+throws away before it starts.
+
+Every disagreement, biggest margin first
+${
+ differs.length
+ ? `
+labelled all ${nm.map((n) => `${esc(n)} `).join("")}
+page
+
+
+
+${cards}
+
+`
+ : `There are none. Across ${scored.toLocaleString()} drawings, not one was matched by a name outside its
+own shape group. That is a real result and not an empty section: it means the ${p.indistinguishablePct.toFixed(1)}% in
+the middle row above are entirely the method's own blind spot, and nothing in this corpus is evidence that a
+mark was given the wrong name.
`
+}`;
+}
+
+mkdirSync(dirname(outPath), { recursive: true });
+writeFileSync(outPath, surface());
+
+// ---------------------------------------------------------------- output --
+
+if (wantJson) {
+ console.log(JSON.stringify(report, null, 2));
+} else {
+ const f = (v, n = 2) => v.toFixed(n);
+ const L = [];
+ L.push(
+ `probe:mark-labels — ${scored.toLocaleString()} drawings on ${report.pages} pages, ` +
+ `${SHAPE_RES} samples per corpus unit, ${report.ms} ms`,
+ );
+ L.push(
+ census
+ ? " every mark in the cache, not a sample — so the rates below have no sampling error and carry no interval"
+ : pageArg
+ ? " the pages asked for, which are not a random sample — the rates below describe them and nothing else"
+ : ` seed ${seed}: a uniform draw over the whole corpus, so the intervals below are honest`,
+ );
+ L.push(" the shipped page, the fitted transform and the rectangles are not inputs to anything below");
+ L.push("");
+ L.push("① WHICH NAMES THIS PRINT DRAWS AS ONE SHAPE");
+ L.push(` every canonical example against every other; any pair at or above ${TWIN} is joined`);
+ for (const j of G.joins) L.push(` ${j.a.padEnd(22)} ~ ${j.b.padEnd(22)} ${f(j.phi, 3)}`);
+ L.push(` giving: ${G.groups.length ? G.groups.map((g) => g.join(" · ")).join(" | ") : "no groups"}`);
+ L.push(" the closest pairs that were NOT joined, so the size of the gap is visible:");
+ for (const n of report.groups.nearestOutsideMax.slice(0, 4)) {
+ L.push(` ${n.name.padEnd(22)} ~ ${n.other.padEnd(22)} ${f(n.phi, 3)}`);
+ }
+ L.push(" and what the grouping would be at other thresholds:");
+ for (const s of sensitivity) {
+ L.push(` ${s.threshold.toFixed(2)} ${s.groups.length ? s.groups.map((g) => g.join("·")).join(" ") : "no groups"}`);
+ }
+ L.push("");
+ L.push("② IS THE MEASURE MEASURING ANYTHING — three planted labels");
+ L.push(
+ ` a random name from outside the shape group flagged ${f(report.control.randomOutside.pct, 2)}% ` +
+ `(${report.control.randomOutside.flagged.toLocaleString()} of ${report.control.randomOutside.planted.toLocaleString()})`,
+ );
+ L.push(
+ ` the NEAREST name outside the shape group flagged ${f(report.control.nearestOutside.pct, 2)}% ` +
+ `(${report.control.nearestOutside.flagged.toLocaleString()} of ${report.control.nearestOutside.planted.toLocaleString()}) <- the one that matters`,
+ );
+ L.push(
+ ` a name from INSIDE the shape group flagged ${f(report.control.insideGroup.pct, 2)}% ` +
+ `(${report.control.insideGroup.flagged.toLocaleString()} of ${report.control.insideGroup.planted.toLocaleString()}) <- must be ~0`,
+ );
+ L.push("");
+ L.push("③ THE THREE OUTCOMES — never summed");
+ const p = report.partition;
+ const withCi = (k, n, c) => (c ? ` (95% CI ${f(c[0], 2)}–${f(c[1], 2)}%)` : "");
+ L.push(
+ ` the drawing's best match is its own name ${String(p.agrees).padStart(7)} ${f(p.agreesPct).padStart(6)}%` +
+ withCi(p.agrees, scored, p.agreesCi),
+ );
+ L.push(
+ ` best match is a name drawn as the same shape ${String(p.indistinguishable).padStart(7)} ${f(p.indistinguishablePct).padStart(6)}%` +
+ withCi(p.indistinguishable, scored, p.indistinguishableCi),
+ );
+ L.push(" — a limit of this method, not a disagreement, and never counted as one");
+ L.push(
+ ` best match is OUTSIDE the label's shape group ${String(p.differs).padStart(7)} ${f(p.differsPct).padStart(6)}%` +
+ withCi(p.differs, scored, p.differsCi),
+ );
+ L.push(" — the only one of the three that is a finding about the data");
+ L.push("");
+ if (differs.length) {
+ L.push("④ THE DISAGREEMENTS");
+ for (const d of report.differsBy.slice(0, 14)) {
+ L.push(` labelled ${d.labelled.padEnd(22)} drawn like ${d.drawnLike.padEnd(22)} ${d.n}`);
+ }
+ L.push(
+ ` of the ${report.robustness.checked} checked, ${report.robustness.allEight} still disagree at all eight ` +
+ `one-sample re-centrings and ${report.robustness.none} at none`,
+ );
+ L.push(" the worst, by how far the other name won:");
+ for (const d of report.worst.slice(0, 12)) {
+ L.push(
+ ` p${String(d.page).padStart(3)} mark ${String(d.k).padStart(3)} ${d.name.padEnd(22)} drawn like ${d.saw.padEnd(22)} ` +
+ `${f(d.sawPhi, 3)} vs ${f(d.minePhi, 3)} (margin ${f(d.margin, 3)})`,
+ );
+ }
+ } else {
+ L.push("④ THE DISAGREEMENTS");
+ L.push(" There are none. Not one drawing in the corpus was best matched by a name outside its own");
+ L.push(" shape group. The category is empty, and that is the result: nothing in this corpus is");
+ L.push(" evidence that a mark was given the wrong name, and the whole of the middle row above is");
+ L.push(" this method's blind spot rather than the corpus's error.");
+ }
+ L.push("");
+ L.push("⑤ PER NAME");
+ L.push(" name n own name same shape differs own score drawn as one shape with");
+ for (const n of perName) {
+ L.push(
+ ` ${n.name.padEnd(22)} ${String(n.n).padStart(7)} ${f(n.agreesPct).padStart(8)}% ${f(n.indistinguishablePct).padStart(10)}% ` +
+ `${f(n.differsPct).padStart(8)}% ${f(n.ownPhiP50, 3).padStart(10)} ${n.drawnAs ? n.drawnAs.filter((x) => x !== n.name).join(", ") : "—"}`,
+ );
+ }
+ L.push(" ('own score' is the median agreement between a drawing and the canonical example of its own name)");
+ L.push("");
+ L.push("⑥ ARE THE STROKES WRONG, OR THE DISTANCE BETWEEN THEM?");
+ if (report.strokes.rows.length) {
+ L.push(" Many of these marks are not one stroke. A vowel over a small letter is two or three strokes");
+ L.push(" written in one instruction, and comparing whole pictures asks two questions at once: are these");
+ L.push(" the same strokes, and did the print set them the same distance apart. Here they are asked");
+ L.push(" separately. Each stroke is scored against the stroke in the same position of its own name's");
+ L.push(" example; the spacing is how far the gaps between stroke centres differ, in units of the mark's");
+ L.push(" own size.");
+ L.push(" page mark name strokes whole worst stroke spacing off by");
+ for (const r of report.strokes.rows.slice(0, 20)) {
+ L.push(
+ ` ${String(r.page).padStart(4)} ${String(r.k).padStart(4)} ${r.name.padEnd(22)} ${String(r.strokes ?? "?").padStart(4)} ` +
+ `${f(r.whole, 3).padStart(8)} ${r.worstStroke === null ? " —" : f(r.worstStroke, 3).padStart(10)} ` +
+ `${r.spacing === null ? " —" : f(r.spacing, 3).padStart(14)}`,
+ );
+ }
+ L.push(" and the same two numbers for every OTHER drawing of those names, as something to read against:");
+ L.push(" name n worst stroke 5th pct median spacing median 95th pct");
+ for (const c of report.strokes.control) {
+ L.push(
+ ` ${c.name.padEnd(22)} ${String(c.n).padStart(7)} ${f(c.worstStrokeP05, 3).padStart(16)} ${f(c.worstStrokeP50, 3).padStart(10)} ` +
+ `${f(c.spacingP50, 3).padStart(16)} ${f(c.spacingP95, 3).padStart(10)}`,
+ );
+ }
+ const rows = report.strokes.rows.filter((r) => r.worstStroke !== null);
+ const clean = rows.filter((r) => r.worstStroke >= 0.8).length;
+ L.push("");
+ L.push(
+ ` ${clean} of the ${rows.length} disagreements have every stroke matching its own name's stroke at 0.80 or better,` +
+ ` while the whole picture scored as low as ${f(Math.min(...rows.map((r) => r.whole)), 3)}.`,
+ );
+ L.push(" Read that plainly: these are the right strokes, set at a distance this print does not hold fixed.");
+ L.push(" So a disagreement here is not evidence that a mark carries the wrong name. It is this method");
+ L.push(" charging a mark for where the print chose to put its own pieces — a defect in the comparison,");
+ L.push(" and one that the comparison cannot fix without also losing the ability to tell apart the names");
+ L.push(" whose only difference IS where their pieces sit.");
+ } else {
+ L.push(" Nothing to take apart: no drawing disagreed with its own name.");
+ }
+ L.push("");
+ L.push("⑦ OR IS THE EXAMPLE ITSELF THE PROBLEM?");
+ L.push(" Every name is judged against one real drawing chosen to sit nearest its class's average. For most");
+ L.push(" names that is nearly free — the print draws them identically every time and the median instance");
+ L.push(" agrees with the example at 0.99 or above. For a few it is not. Sorted worst first:");
+ L.push(" name n median 5th pct differs");
+ for (const n of report.exemplarQuality) {
+ L.push(
+ ` ${n.name.padEnd(22)} ${String(n.n).padStart(7)} ${f(n.ownPhiP50, 3).padStart(8)} ${f(n.ownPhiP05, 3).padStart(9)} ` +
+ `${f(n.differsPct, 2).padStart(8)}%`,
+ );
+ }
+ L.push(" The names at the top of this list are the ones drawn from several strokes, and what drags their");
+ L.push(" median down is the spacing measured above, not any doubt about what they are. One example can");
+ L.push(" stand in for a name's strokes; it cannot stand in for every distance the print sets them at.");
+ L.push("");
+ if (wantMatrix) {
+ L.push("⑧ THE WHOLE SQUARE — every canonical example against every other");
+ const short = (s) => s.slice(0, 6).padStart(6);
+ L.push(` ${"".padEnd(22)} ${matrix.names.map(short).join(" ")}`);
+ for (let a = 0; a < matrix.names.length; a += 1) {
+ L.push(
+ ` ${matrix.names[a].padEnd(22)} ${[...matrix.phi[a]].map((v) => f(v, 2).padStart(6)).join(" ")}`,
+ );
+ }
+ L.push(" (rows are the drawing being matched against; columns the example being tried — near enough");
+ L.push(" symmetric now that both are put on the same box, but both directions are measured, not assumed)");
+ L.push("");
+ } else {
+ L.push(" (the whole 26 by 26 square is in the machine output, and in the text report with --matrix)");
+ L.push("");
+ }
+ L.push(`Look at the evidence: ${outPath}`);
+ if (skipped) L.push(`(${skipped} drawings rasterised to nothing and were not scored)`);
+ console.log(L.join("\n"));
+}
+
+// A breached threshold exits non-zero so this *could* be a gate. It is not one:
+// nothing runs it in CI, on purpose — the thresholds are proposed in
+// `docs/design/mark-labels.md` and have not been agreed.
+const MAX_DIFFERS = Number(arg("--max-differs", 0.5));
+const MIN_RECALL = Number(arg("--min-recall", 95));
+const breaches = [];
+if (report.partition.differsPct > MAX_DIFFERS) {
+ breaches.push(`drawings disagreeing with their name ${report.partition.differsPct.toFixed(2)}% > ${MAX_DIFFERS}%`);
+}
+if (report.control.nearestOutside.pct < MIN_RECALL) {
+ breaches.push(`planted nearest-wrong-name caught only ${report.control.nearestOutside.pct.toFixed(2)}% < ${MIN_RECALL}%`);
+}
+if (report.control.insideGroup.planted && report.control.insideGroup.pct > 0.5) {
+ breaches.push(`planted within-group name wrongly flagged ${report.control.insideGroup.pct.toFixed(2)}% > 0.5%`);
+}
+if (breaches.length) {
+ console.error(`\nthreshold breached: ${breaches.join("; ")}`);
+ process.exit(1);
+}
diff --git a/packages/etl/scripts/score-mark-adjudication.mjs b/packages/etl/scripts/score-mark-adjudication.mjs
new file mode 100644
index 0000000..05ff436
--- /dev/null
+++ b/packages/etl/scripts/score-mark-adjudication.mjs
@@ -0,0 +1,234 @@
+/**
+ * Scores a worked session, and says whether the displacement correction survived
+ * it.
+ *
+ * ## Why the scoring is a separate program
+ *
+ * Because the answers do not exist until this runs. The page a person works has
+ * no key in it, and no key was ever written down; this rebuilds the session from
+ * the seed and the same displacement file, and only then does it know which
+ * panel was which. That is the whole defence of the result. Nobody had to be
+ * trusted not to peek, because there was nothing to peek at.
+ *
+ * It refuses to score a ruling built from different displacements. Re-measuring
+ * between building the page and scoring it would leave every answer attached to
+ * a question that is no longer being asked, and the arithmetic would come out
+ * clean and mean nothing.
+ *
+ * ## What comes out, and how to read it
+ *
+ * Four numbers, and only the first is the verdict:
+ *
+ * - **as shipped** — how often the corrected rectangle was picked over the one
+ * the app draws today, with an interval. The correction is supported if that
+ * interval is entirely above half.
+ * - **the decoy** — the same count against a displacement of the same size in
+ * another direction. This is the ceiling: it is what "can see a shift this
+ * small" looks like for this person on this screen. A low headline with a high
+ * decoy is the informative failure — the person could see fine and did not
+ * prefer our correction, which means the correction is wrong rather than the
+ * test being blunt.
+ * - **the catches** — got obviously-wrong rectangles right. Below the floor the
+ * session is not scored at all.
+ * - **twins** — said "can't tell" when shown the same rectangle twice. Low here
+ * means a person who always picks something, and everything above it is worth
+ * less.
+ *
+ * ## And one number that is not about the correction at all
+ *
+ * The page also lets a reader say *neither rectangle closes around the mark* — the
+ * mark pokes out of both copies. That is a claim about how big the rectangle is,
+ * and every trial here is about where it sits, so it is reported on its own line
+ * and kept out of the headline's arithmetic. Two faults, two repairs: a placement
+ * that is off is fixed by moving the box, an extent that is short is fixed by
+ * measuring it again, and a single count that mixed them would recommend neither.
+ *
+ * The headline is then printed a second time with those trials dropped. Not as a
+ * stricter verdict — dropping trials only costs power, so a narrower result that
+ * fails to clear half proves nothing — but because a headline that survives the
+ * removal and one that depends on it are different findings, and only one of them
+ * should be allowed to release a correction quietly.
+ *
+ * Exits non-zero when the session fails its checks or the headline does not
+ * clear half, so it can be a step in something larger without anyone having to
+ * read it.
+ *
+ * node packages/etl/scripts/score-mark-adjudication.mjs ruling.json
+ */
+import { readFileSync } from "node:fs";
+import { dirname, join } from "node:path";
+import { fileURLToPath } from "node:url";
+import { planSession } from "./lib/adjudication.mjs";
+import { wilson } from "./lib/mark-ink.mjs";
+
+const HERE = dirname(fileURLToPath(import.meta.url));
+const ETL = join(HERE, "..");
+
+const argv = process.argv.slice(2);
+const arg = (k, d) => {
+ const i = argv.indexOf(k);
+ return i >= 0 && argv[i + 1] ? argv[i + 1] : d;
+};
+let rulingPath = null;
+for (let i = 0; i < argv.length; i += 1) {
+ if (argv[i].startsWith("--")) i += 1;
+ else if (!rulingPath) rulingPath = argv[i];
+}
+if (!rulingPath) {
+ process.stderr.write("usage: score-mark-adjudication.mjs [--shift path]\n");
+ process.exit(2);
+}
+const shiftPath = arg("--shift", join(ETL, "out", "mark-shift.json"));
+
+/** Below this share of catches right, the session says nothing and is not scored. */
+const CATCH_FLOOR = 0.9;
+/** Below this share of twins called "can't tell", the answers are suspect. */
+const TWIN_FLOOR = 0.5;
+
+const ruling = JSON.parse(readFileSync(rulingPath, "utf8"));
+const shiftText = readFileSync(shiftPath, "utf8");
+
+function fingerprint(s) {
+ let h = 0x811c9dc5;
+ for (let i = 0; i < s.length; i += 1) {
+ h ^= s.charCodeAt(i);
+ h = Math.imul(h, 0x01000193);
+ }
+ return (h >>> 0).toString(16).padStart(8, "0");
+}
+
+const fp = fingerprint(shiftText);
+if (fp !== ruling.shiftFingerprint) {
+ process.stderr.write(
+ `this ruling was worked against different displacements (${ruling.shiftFingerprint}, measured ${ruling.shiftRan})\n` +
+ `${shiftPath} is now ${fp}. Score it against the file it was built from, or build a fresh session.\n`,
+ );
+ process.exit(2);
+}
+
+const shift = JSON.parse(shiftText);
+const { trials } = planSession({ seed: ruling.seed, count: ruling.count, shifts: shift.shifts });
+
+const byIndex = new Map(trials.map((t) => [t.i, t]));
+const buckets = { shipped: [], decoy: [], catch: [], twin: [] };
+for (const a of ruling.answers) {
+ const t = byIndex.get(a.i);
+ if (!t) throw new Error(`answer ${a.i} has no trial; the ruling and the seed disagree`);
+ if (t.id !== a.id) throw new Error(`trial ${a.i} is ${t.id} but the ruling says ${a.id}`);
+ buckets[t.kind].push({ t, a });
+}
+
+/**
+ * Can't-tell is not counted as a miss. It is an honest answer to a question that
+ * really was too close, and folding it in as a wrong answer would punish exactly
+ * the care this asks for. It is reported separately instead, where a reader can
+ * see how much of the session it was.
+ */
+function share(rows, right) {
+ const told = rows.filter((r) => r.a.choice >= 0);
+ const k = told.filter(right).length;
+ const n = told.length;
+ const [lo, hi] = wilson(k, n);
+ return { k, n, abstained: rows.length - n, pct: n ? (100 * k) / n : 0, lo: 100 * lo, hi: 100 * hi };
+}
+
+const correct = (r) => r.a.choice === r.t.answer;
+const s = {
+ shipped: share(buckets.shipped, correct),
+ decoy: share(buckets.decoy, correct),
+ catch: share(buckets.catch, correct),
+};
+
+/**
+ * "Neither rectangle closed around the mark", counted on its own axis.
+ *
+ * `asks` says what was on the screen. A ruling worked before the tick existed has
+ * no flags in it, and reporting that as nought-in-a-hundred would turn a page that
+ * could not ask into a page that asked and was told no — a strong claim about the
+ * boxes, manufactured out of a missing feature. So an older ruling gets a sentence
+ * saying the question was not put, and no number.
+ */
+const asksExtent = (ruling.asks || ["choice"]).includes("neither");
+const flagged = ruling.answers.filter((a) => a.neither);
+const extent = {
+ n: flagged.length,
+ of: ruling.answers.length,
+ pct: ruling.answers.length ? (100 * flagged.length) / ruling.answers.length : 0,
+};
+/**
+ * The headline again with those trials removed.
+ *
+ * Reported, never enforced. Dropping trials only narrows the sample, so a subset
+ * that fails to clear half has not refuted anything — it may simply be smaller.
+ * What it is good for is the comparison: a correction supported by the whole
+ * hundred and by the trials where the rectangle fitted is a different, stronger
+ * finding than one that evaporates when the awkward ones leave.
+ */
+const clean = share(buckets.shipped.filter((r) => !r.a.neither), correct);
+const twin = {
+ n: buckets.twin.length,
+ cantTell: buckets.twin.filter((r) => r.a.choice < 0).length,
+};
+twin.pct = twin.n ? (100 * twin.cantTell) / twin.n : 0;
+
+const ms = ruling.answers.map((a) => a.ms).sort((x, y) => x - y);
+const median = ms.length ? ms[Math.floor(ms.length / 2)] : 0;
+
+const pc = (v) => `${v.toFixed(1)}%`;
+const W = 26;
+const line = (label, x) =>
+ `${label.padEnd(W)} ${pc(x.pct).padStart(6)} [${pc(x.lo)} – ${pc(x.hi)}] ${x.k}/${x.n}` +
+ (x.abstained ? ` (${x.abstained} can't tell)` : "");
+
+const validCatch = s.catch.n > 0 && s.catch.pct >= 100 * CATCH_FLOOR;
+const validTwin = twin.n === 0 || twin.pct >= 100 * TWIN_FLOOR;
+const clears = s.shipped.n > 0 && s.shipped.lo > 50;
+const cleanClears = clean.n > 0 && clean.lo > 50;
+
+/** Enough of them to name, few enough to read. The rest are countable from the line above. */
+const NAMED = 12;
+const names = flagged.slice(0, NAMED).map((a) => a.id).join(", ") +
+ (flagged.length > NAMED ? `, and ${flagged.length - NAMED} more` : "");
+
+const out = [
+ `ruling ${rulingPath}`,
+ `seed ${ruling.seed} · ${ruling.answers.length} of ${ruling.count} answered · displacements ${ruling.shiftRan} (${fp})`,
+ `median ${(median / 1000).toFixed(1)}s a trial`,
+ "",
+ line("as shipped", s.shipped),
+ line("the decoy", s.decoy),
+ line("the catches", s.catch),
+ `${"twins called can't tell".padEnd(W)} ${pc(twin.pct).padStart(6)} ${twin.cantTell}/${twin.n}`,
+ "",
+ !asksExtent
+ ? "neither-closed: not asked. This ruling was worked on a page built before the question existed, so it says nothing either way about how big the rectangles are."
+ : `${"neither box closed on it".padEnd(W)} ${pc(extent.pct).padStart(6)} ${extent.n}/${extent.of}`,
+ asksExtent && extent.n ? line("as shipped, minus those", clean) : "",
+ asksExtent && extent.n
+ ? `\nthe mark poked out of both rectangles on ${extent.n} of ${extent.of} trials. That is a\n` +
+ `question about how big a rectangle is, and every trial here is about where it sits —\n` +
+ `so it is not folded into anything above, and nothing above answers it. It is its own\n` +
+ `finding, and the marks to go and look at are: ${names}.` +
+ (clears === cleanClears
+ ? "\nDropping them does not change the verdict."
+ : `\nDropping them DOES change the verdict — it ${cleanClears ? "clears" : "no longer clears"} half without them.\n` +
+ "Read that as a caution, not a result: a smaller sample has a wider interval, so this\n" +
+ "may be arithmetic rather than a finding. It is a reason to say so out loud in the record.")
+ : "",
+ "",
+ validCatch ? "session valid: the catches were caught" : `SESSION INVALID: catches ${pc(s.catch.pct)} < ${pc(100 * CATCH_FLOOR)}`,
+ validTwin ? "" : `SUSPECT: only ${pc(twin.pct)} of twins drew a can't-tell; this reads as a person always picking one`,
+ "",
+ clears
+ ? `the correction is supported: the interval on "as shipped" clears half`
+ : s.shipped.n === 0
+ ? "nothing to say: no as-shipped trials were answered"
+ : s.decoy.lo > 50
+ ? "the correction is NOT supported, and the decoys say why: the displacement was visible and the corrected box still was not preferred"
+ : "the correction is not supported, and the decoys do not clear half either — this session cannot see a shift this small, so it says nothing about the correction",
+]
+ .filter((l) => l !== "")
+ .join("\n");
+
+process.stdout.write(`${out}\n`);
+process.exit(validCatch && validTwin && clears ? 0 : 1);
diff --git a/packages/etl/scripts/score-mark-nudge.mjs b/packages/etl/scripts/score-mark-nudge.mjs
new file mode 100644
index 0000000..cddcdd6
--- /dev/null
+++ b/packages/etl/scripts/score-mark-nudge.mjs
@@ -0,0 +1,262 @@
+/**
+ * Reads a set of placements, and says how far our correction still misses.
+ *
+ * ## What this measures that the forced choice cannot
+ *
+ * The forced-choice session answers a yes/no: is the corrected rectangle
+ * preferred to the one that ships? That is the right question to ask first, and
+ * it is the wrong question to stop at, because a correction that is right in
+ * direction and short by a third wins every trial and is still wrong. Two
+ * answers on offer means at most one bit of an answer.
+ *
+ * Here a person put each rectangle where they thought it went, having never been
+ * shown where we think it goes. Subtracting our proposed move from theirs leaves
+ * the **residual**: the further move, in page units, that would put our
+ * rectangles where a reader puts them. That is a number that can be applied.
+ *
+ * ## Why a number needs a noise floor before it means anything
+ *
+ * A residual of a fifth of a unit is a finding if a hand is repeatable to a
+ * fiftieth, and it is nothing at all if a hand wanders by half a unit between
+ * two goes at the same mark. So some marks come round twice, with independent
+ * starting positions, and the spread between the two landings is this reader's
+ * own precision — measured here, on this screen, in this session, rather than
+ * assumed. Everything else is printed against it, and a residual inside it is
+ * reported as *not distinguishable from the hand*.
+ *
+ * ## And the pull of the starting point
+ *
+ * Every rectangle starts displaced, and a hand that stops short drags the
+ * landing back toward wherever it started. The starts are spread evenly around
+ * the shipped rectangle precisely so that this cancels in the average — but
+ * "should cancel" is a claim, so it is measured: the landings are regressed on
+ * the starts, and the slope is printed. A slope near nought means the starts did
+ * their job. A large one means the placements are partly a record of where they
+ * began, and widens what the residual can be trusted to.
+ *
+ * Exits non-zero when the session says the correction is not going the right
+ * way, so it can sit inside something larger without being read.
+ *
+ * node packages/etl/scripts/score-mark-nudge.mjs placements.json
+ */
+import { readFileSync } from "node:fs";
+import { dirname, join } from "node:path";
+import { fileURLToPath } from "node:url";
+import { planNudge } from "./lib/adjudication.mjs";
+import { wilson } from "./lib/mark-ink.mjs";
+
+const HERE = dirname(fileURLToPath(import.meta.url));
+const ETL = join(HERE, "..");
+
+const argv = process.argv.slice(2);
+const arg = (k, d) => {
+ const i = argv.indexOf(k);
+ return i >= 0 && argv[i + 1] ? argv[i + 1] : d;
+};
+let path = null;
+for (let i = 0; i < argv.length; i += 1) {
+ if (argv[i].startsWith("--")) i += 1;
+ else if (!path) path = argv[i];
+}
+if (!path) {
+ process.stderr.write("usage: score-mark-nudge.mjs [--shift path]\n");
+ process.exit(2);
+}
+const shiftPath = arg("--shift", join(ETL, "out", "mark-shift.json"));
+
+const ruling = JSON.parse(readFileSync(path, "utf8"));
+const shiftText = readFileSync(shiftPath, "utf8");
+
+function fingerprint(s) {
+ let h = 0x811c9dc5;
+ for (let i = 0; i < s.length; i += 1) {
+ h ^= s.charCodeAt(i);
+ h = Math.imul(h, 0x01000193);
+ }
+ return (h >>> 0).toString(16).padStart(8, "0");
+}
+
+const fp = fingerprint(shiftText);
+if (fp !== ruling.shiftFingerprint) {
+ process.stderr.write(
+ `these placements were made against different displacements (${ruling.shiftFingerprint}, measured ${ruling.shiftRan})\n` +
+ `${shiftPath} is now ${fp}. Read them against the file they were made from, or build a fresh session.\n`,
+ );
+ process.exit(2);
+}
+if (ruling.kind !== "nudge") {
+ process.stderr.write(`${path} is not a placement session (kind ${ruling.kind || "absent"}).\n`);
+ process.exit(2);
+}
+
+const shift = JSON.parse(shiftText);
+const { trials } = planNudge({ seed: ruling.seed, count: ruling.count, shifts: shift.shifts });
+const byIndex = new Map(trials.map((t) => [t.i, t]));
+
+const rows = [];
+for (const a of ruling.answers) {
+ if (!a || !a.u) continue;
+ const t = byIndex.get(a.i);
+ if (!t) throw new Error(`placement ${a.i} has no trial; the file and the seed disagree`);
+ if (t.id !== a.id) throw new Error(`trial ${a.i} is ${t.id} but the file says ${a.id}`);
+ rows.push({ t, a, r: [a.u[0] - t.shift[0], a.u[1] - t.shift[1]] });
+}
+if (!rows.length) {
+ process.stderr.write("nothing placed.\n");
+ process.exit(1);
+}
+
+const mean = (xs) => xs.reduce((s, v) => s + v, 0) / xs.length;
+const median = (xs) => {
+ const a = xs.slice().sort((p, q) => p - q);
+ return a.length ? a[Math.floor(a.length / 2)] : 0;
+};
+/**
+ * A normal interval on a mean, which is the right shape here and not elsewhere
+ * in this check: a residual is an average of continuous displacements, where the
+ * forced choice's numbers are counts of successes and get Wilson intervals. The
+ * two are not interchangeable, and a count reported with one of these would be
+ * wrong at exactly the small samples this check runs at.
+ */
+function meanCI(xs) {
+ const m = mean(xs);
+ const n = xs.length;
+ if (n < 2) return { m, lo: -Infinity, hi: Infinity, sd: 0, n };
+ const sd = Math.sqrt(xs.reduce((s, v) => s + (v - m) ** 2, 0) / (n - 1));
+ const half = (1.96 * sd) / Math.sqrt(n);
+ return { m, lo: m - half, hi: m + half, sd, n };
+}
+
+/**
+ * The reader's own precision, from the marks that came round twice.
+ *
+ * Two independent goes at the same mark differ by the sum of two placements'
+ * worth of wobble, so the spread of the difference is √2 times the spread of a
+ * single placement — hence the halving of the variance. Without this the
+ * residual below is a number with no scale, and a number with no scale is an
+ * opinion with decimal places.
+ */
+const pairs = new Map();
+for (const row of rows) {
+ if (!pairs.has(row.t.id)) pairs.set(row.t.id, []);
+ pairs.get(row.t.id).push(row);
+}
+const twice = [...pairs.values()].filter((g) => g.length >= 2).map((g) => g.slice(0, 2));
+const gaps = twice.map(([p, q]) => Math.hypot(p.a.u[0] - q.a.u[0], p.a.u[1] - q.a.u[1]));
+const axisNoise = (k) =>
+ twice.length ? Math.sqrt(mean(twice.map(([p, q]) => (p.a.u[k] - q.a.u[k]) ** 2)) / 2) : NaN;
+const noise = { n: twice.length, typical: median(gaps), sx: axisNoise(0), sy: axisNoise(1) };
+noise.floor = twice.length ? Math.hypot(noise.sx, noise.sy) : NaN;
+
+/**
+ * The headline, in the currency the forced choice already speaks.
+ *
+ * A landing is either nearer the corrected rectangle than the one that ships, or
+ * it is not. That is the same claim the two-panel session makes, arrived at by a
+ * different route and without ever putting our answer on the screen, so the two
+ * results are comparable — and if they disagree, one of the two instruments is
+ * telling us something the other cannot see.
+ */
+const nearer = rows.filter((r) => Math.hypot(...r.r) < Math.hypot(r.a.u[0], r.a.u[1]));
+const [wLo, wHi] = wilson(nearer.length, rows.length);
+const head = {
+ k: nearer.length,
+ n: rows.length,
+ pct: (100 * nearer.length) / rows.length,
+ lo: 100 * wLo,
+ hi: 100 * wHi,
+};
+
+const rx = meanCI(rows.map((r) => r.r[0]));
+const ry = meanCI(rows.map((r) => r.r[1]));
+const toShipped = rows.map((r) => Math.hypot(r.a.u[0], r.a.u[1]));
+const toCorrected = rows.map((r) => Math.hypot(...r.r));
+
+/**
+ * Did the starting point pull the landing?
+ *
+ * The starts are drawn uniformly around the shipped rectangle, so their mean is
+ * nought and a slope here does not bias the residual — but it inflates the
+ * spread, which is what the residual's interval is made of. Reported rather than
+ * corrected for: a correction would be a model of the hand, and this check is
+ * meant to measure the hand, not to assume one.
+ */
+const slope = (k) => {
+ let num = 0;
+ let den = 0;
+ for (const r of rows) {
+ num += r.a.from[k] * r.a.u[k];
+ den += r.a.from[k] ** 2;
+ }
+ return den ? num / den : 0;
+};
+const pull = { x: slope(0), y: slope(1) };
+
+const asksSize = (ruling.asks || []).includes("size");
+const big = ruling.answers.filter((a) => a && a.wrongSize);
+const NAMED = 12;
+const names =
+ big.slice(0, NAMED).map((a) => a.id).join(", ") + (big.length > NAMED ? `, and ${big.length - NAMED} more` : "");
+
+const ms = rows.map((r) => r.a.ms).sort((x, y) => x - y);
+const u3 = (v) => `${v >= 0 ? "+" : ""}${v.toFixed(3)}`;
+const u2 = (v) => v.toFixed(2);
+const W = 30;
+const say = (label, body) => `${label.padEnd(W)} ${body}`;
+
+const clears = head.lo > 50;
+const readable = Number.isFinite(noise.floor) && noise.floor > 0;
+const residual = Math.hypot(rx.m, ry.m);
+const beyondNoise = readable && residual > noise.floor;
+const xReal = rx.lo > 0 || rx.hi < 0;
+const yReal = ry.lo > 0 || ry.hi < 0;
+
+const out = [
+ `placements ${path}`,
+ `seed ${ruling.seed} · ${rows.length} of ${ruling.count} placed · displacements ${ruling.shiftRan} (${fp})`,
+ `median ${(median(ms) / 1000).toFixed(1)}s a placement`,
+ "",
+ `${say("landed nearer our correction", `${head.pct.toFixed(1)}%`.padStart(6))} [${head.lo.toFixed(1)}% – ${head.hi.toFixed(1)}%] ${head.k}/${head.n}`,
+ say("typical miss, from as-shipped", `${u2(median(toShipped))} units`),
+ say("typical miss, from corrected", `${u2(median(toCorrected))} units`),
+ "",
+ say("what is left over, across", `x ${u3(rx.m)} [${u3(rx.lo)} – ${u3(rx.hi)}]`),
+ say("what is left over, down", `y ${u3(ry.m)} [${u3(ry.lo)} – ${u3(ry.hi)}]`),
+ readable
+ ? say("this hand's own precision", `${u2(noise.floor)} units, from ${noise.n} marks placed twice (typical gap ${u2(noise.typical)})`)
+ : "this hand's own precision: unknown — no mark was placed twice, so nothing below has a scale.",
+ say("pull of the starting point", `x ${pull.x.toFixed(2)} y ${pull.y.toFixed(2)} (0 is none, 1 is 'never moved')`),
+ "",
+ asksSize
+ ? say("the box was the wrong size", `${big.length}/${ruling.answers.length}` + (big.length ? ` — ${names}` : ""))
+ : "wrong-size: not asked. These placements come from a page built before the question existed, so they say nothing about how big the rectangles are.",
+ "",
+ clears
+ ? "the correction goes the right way: placements land nearer it than they do the shipped box, and the interval clears half"
+ : head.hi < 50
+ ? "the correction goes the WRONG way: placements land nearer the shipped box than the corrected one"
+ : "no direction either way: the interval straddles half, so these placements do not separate the two",
+ !readable
+ ? "no residual can be read: without a repeated mark there is no telling a real offset from a wandering hand."
+ : !beyondNoise
+ ? `the residual (${u2(residual)} units) is inside this hand's own precision (${u2(noise.floor)}). Our correction is as close as this session can resolve — which is a result, and it is not the same as being right.`
+ : `the residual is ${u2(residual)} units, larger than this hand's precision (${u2(noise.floor)}).\n` +
+ `A correction of (${u3(rx.m)}, ${u3(ry.m)}) on top of what is proposed would land where this reader puts them.\n` +
+ (xReal || yReal
+ ? `The ${[xReal ? "across" : "", yReal ? "down" : ""].filter(Boolean).join(" and ")} component${xReal && yReal ? "s are" : " is"} distinguishable from nought at 95%; anything not named here is not.`
+ : "Neither component is distinguishable from nought at 95% on its own, so treat the size as suggestive and the direction as unsettled."),
+ Math.abs(pull.x) > 0.25 || Math.abs(pull.y) > 0.25
+ ? `\nCaution: the landings track their starting points (x ${pull.x.toFixed(2)}, y ${pull.y.toFixed(2)}). The starts are\n` +
+ "spread evenly, so this does not tilt the residual in any one direction — but it widens every interval\n" +
+ "above, and a pull this size usually means the placements were made faster than they were judged."
+ : "",
+ big.length && rows.length && big.length / rows.length > 0.15
+ ? `\nAnd a second finding, which is not about placement: the rectangle was the wrong size on ${big.length} of\n` +
+ `${ruling.answers.length}. That is fixed by measuring the boxes again, not by moving them, and nothing above addresses it.`
+ : "",
+]
+ .filter((l) => l !== "")
+ .join("\n");
+
+process.stdout.write(`${out}\n`);
+process.exit(clears ? 0 : 1);
diff --git a/scripts/build-decisions-doc.mjs b/scripts/build-decisions-doc.mjs
new file mode 100644
index 0000000..7776022
--- /dev/null
+++ b/scripts/build-decisions-doc.mjs
@@ -0,0 +1,148 @@
+#!/usr/bin/env node
+/**
+ * Renderer: docs/decisions.json + the records it indexes → docs/decisions/README.md.
+ *
+ * This is the page a person lands on when they open docs/decisions/ and find
+ * sixteen files with sentences for names. It answers one thing first — which
+ * questions are still open, and where to go to look at them — and only then
+ * lists what has already been settled.
+ *
+ * Every title is read out of the record at build time. Nothing in this page is
+ * stored in decisions.json except the question, for the reason the register's
+ * own comment gives: a title that lives in two files is right for a while and
+ * then quietly stops being right, and a stale index reads exactly like a fresh
+ * one.
+ *
+ * The file is generated and committed, and gate-decisions.mjs fails when the
+ * committed copy was built from a different source. Do not hand-edit it.
+ *
+ * Usage: node scripts/build-decisions-doc.mjs
+ */
+import { writeFileSync } from "node:fs";
+import {
+ readDecisions,
+ titleOf,
+ splitDoc,
+ decisionsHash,
+ DOC_PATH,
+ STATUS_ORDER,
+} from "./decisions.mjs";
+
+const decisions = readDecisions();
+
+const out = [];
+const w = (s = "") => out.push(s);
+
+/** Links are relative to docs/decisions/, which is where this page lives. */
+const rel = (p) => (p.startsWith("docs/decisions/") ? p.slice("docs/decisions/".length) : `../${p.slice("docs/".length)}`);
+
+const recordLink = (d) => {
+ const { file } = splitDoc(d.doc);
+ const title = titleOf(file);
+ return title ? `[${title}](${rel(d.doc)})` : `\`${d.doc}\``;
+};
+
+const lookLink = (d) => {
+ if (!d.artifact) return "—";
+ return `[open](${d.artifact}) · [in repo](${rel(d.page)})`;
+};
+
+const whoWhen = (d) => (d.by ? `${d.by}, ${d.date}` : "—");
+
+const HEAD = {
+ open: [
+ "Open",
+ "Nobody has chosen yet. Each one has a page you can open and look at without reading any code.",
+ ],
+ living: [
+ "Living records",
+ "Never finished. A new decision on one of these subjects gets a row appended, not a new file.",
+ ],
+ decided: ["Decided", "The record holds the reasons. Read it before changing anything it covers."],
+ superseded: ["Superseded", "Kept readable. A later decision replaced it, and says which."],
+};
+
+w(``);
+w("");
+w();
+w("# Decisions");
+w();
+w("Every question this project has had to answer, and where the answer is written down.");
+w();
+w("**How to read a row.** The first column is the question, in plain words. The second is the");
+w("record that answers it — its title is the answer in one line. The third, on anything still");
+w("open, is a page you can open in a browser and look at: the options drawn on a real page of");
+w("the mus'haf, with no code in it. You do not need to have opened this repository to take part");
+w("in an open decision, and that is on purpose.");
+w();
+
+for (const status of STATUS_ORDER) {
+ const rows = decisions.filter((d) => d.status === status);
+ if (rows.length === 0) continue;
+ const [heading, blurb] = HEAD[status];
+ w(`## ${heading} — ${rows.length}`);
+ w();
+ w(blurb);
+ w();
+ if (status === "open") {
+ w("| question | options | look at it | record |");
+ w("| --- | --- | --- | --- |");
+ for (const d of rows) {
+ const opts = (d.options ?? []).map((o) => `**${o.id}** ${o.label}`).join(" ");
+ w(`| ${d.question} | ${opts} | ${lookLink(d)} | ${recordLink(d)} |`);
+ }
+ } else if (status === "living") {
+ w("| question | record |");
+ w("| --- | --- |");
+ for (const d of rows) w(`| ${d.question} | ${recordLink(d)} |`);
+ } else {
+ w("| question | what was decided | when |");
+ w("| --- | --- | --- |");
+ for (const d of rows) {
+ const chosen = d.decided ? ` (option **${d.decided}**)` : "";
+ w(`| ${d.question} | ${recordLink(d)}${chosen} | ${whoWhen(d)} |`);
+ }
+ }
+ w();
+}
+
+// --- which questions were already answered before this one got asked.
+//
+// This is the half of a decision no single record can hold: relatedness is a
+// fact about a pair, and the second half of a pair is usually written months
+// after the first, by which time the first is not what anybody is opening. The
+// *reason* each pair holds hands stays in the records — this only says that
+// they do, so a reader arriving at either end can find the other.
+const byId = new Map(decisions.map((d) => [d.id, d]));
+const linked = decisions.filter((d) => (d.related ?? []).length > 0);
+if (linked.length > 0) {
+ w("## Which of these touch each other");
+ w();
+ w("An earlier answer usually rules out part of a later question, and the reason it does is in");
+ w("the record, not here. Read the ones listed beside a question before answering it: that is");
+ w("where the option you were about to invent has often already been ruled out.");
+ w();
+ for (const d of linked) {
+ const to = (d.related ?? [])
+ .map((r) => (byId.has(r) ? recordLink(byId.get(r)) : r))
+ .join(" · ");
+ w(`- **${d.question}** reads with: ${to}`);
+ }
+ w();
+}
+
+w("---");
+w();
+w("**Adding one.** Write the record, add a row to [`docs/decisions.json`](../decisions.json),");
+w("run `make decisions-doc`. If the decision is still open it needs two or more options and a");
+w("page anyone can look at — published *and* checked in here, because a link with no copy dies");
+w("with its host and a copy with no link cannot be sent to anybody. `pnpm gate:decisions`");
+w("refuses one without the other, and refuses a question written in file names or symbols.");
+w();
+w("`make decisions` · `make decisions ID=` · `pnpm gate:decisions` · the `decide` skill");
+w("drives writing one.");
+w();
+
+writeFileSync(DOC_PATH, out.join("\n"));
+const open = decisions.filter((d) => d.status === "open").length;
+console.log(`docs/decisions/README.md — ${decisions.length} decisions, ${open} open`);
diff --git a/scripts/build-mark-options.mjs b/scripts/build-mark-options.mjs
new file mode 100644
index 0000000..aee951e
--- /dev/null
+++ b/scripts/build-mark-options.mjs
@@ -0,0 +1,1063 @@
+#!/usr/bin/env node
+/**
+ * Render docs/design/mark-granularity.html — what the tajweed skin would look
+ * like at mark granularity, drawn on a real page instead of argued in prose.
+ *
+ * ── Why this is a page and not a section of sub-word-marks.md ───────────────
+ * mark-A measured the vocabulary and mark-B walked every tajweed offset down to
+ * a drawn rectangle; both shipped numbers. The number that decides mark-C is not
+ * one of them. It is whether a hafiz, looking at the screen, reads a mark-level
+ * highlight as a truer rendering of the rule than a wash over the whole ayah —
+ * and that question cannot be answered by a table. `sub-word-marks.md` §⑧ ①
+ * says so in place: what stays open is what arithmetic cannot reach.
+ *
+ * So the artifact is a picture, and it is built rather than drawn by hand for
+ * the same reason the shards are: every rectangle on it has to come from the
+ * bytes the app would actually ship, or it is an illustration of a proposal
+ * instead of evidence about one.
+ *
+ * ── Two modes, because the inputs live in two different places ──────────────
+ * node scripts/build-mark-options.mjs # render (repo bytes only)
+ * node scripts/build-mark-options.mjs --extract # refresh the data file
+ *
+ * The render reads only committed assets — the page SVG, the word shard, the
+ * manifest, tokens.css — plus `mark-granularity.data.json`, so anyone with a
+ * checkout can rebuild the page and get the identical file.
+ *
+ * `--extract` is maintainer-only. Mark rectangles come from the ligature corpus,
+ * which lives in the 348 MB fetch cache under `packages/etl/data/pages/.cache/`
+ * (gitignored, pinned by SHA-256). It rewrites the data file; without the cache
+ * it refuses rather than emitting a thinner one, because a data file that is
+ * sometimes complete is worse than one that is absent.
+ *
+ * ── There is no Quran text in this file, or in the one it writes ────────────
+ * That rule is not enforced by a gate — `gate:notext` is about elements
+ * in page SVGs (Safari will not paint them under `content-visibility`), and
+ * `gate:text-sources` is about NUL bytes. It is enforced by the shipped bytes
+ * themselves: `assets/pages/hafs-kfqc/2.svg` is 63.9 KB of outlined and
+ * contains zero Arabic codepoints, and `assets/words/hafs-kfqc/2.json` is
+ * rectangles. This page inherits that property deliberately — the data file
+ * names marks in Latin (`wasla`, `superscript alef`), refers to words by print
+ * index, and the print is referenced by relative URL rather than inlined. A
+ * reader sees the word because the mus'haf draws it, which is the only reason
+ * this repo has ever had to show one.
+ */
+import { existsSync, readFileSync, writeFileSync } from "node:fs";
+import { basename, join } from "node:path";
+
+const ROOT = new URL("..", import.meta.url).pathname;
+const DATA = join(ROOT, "docs/design/mark-granularity.data.json");
+const OUT = join(ROOT, "docs/design/mark-granularity.html");
+
+/** The page the picture is drawn on. Page 2 for three reasons, all measured:
+ * it is five ayahs (small enough to read whole), its 2:3 reproduces the corpus
+ * drawn/letter split almost exactly, and one word on it carries four outcomes. */
+const PAGE = 2;
+
+/**
+ * `--artifact` writes a self-contained copy for publishing.
+ *
+ * An artifact is served from claude.ai under a CSP that blocks every external
+ * host, so the relative URL to the print would 404 and each specimen would show
+ * an empty overlay over nothing — the same silent-blank failure the `attr`
+ * regex already caused once here. The print is therefore inlined ONCE as a
+ * `` and ``d per specimen; six data: URIs would be six copies of
+ * 64 KB. It carries no more text than the referencing copy does: the page is
+ * 63.9 KB of outlined `` with zero Arabic codepoints.
+ */
+const ARTIFACT = process.argv.includes("--artifact");
+const OUT_ARTIFACT = join(ROOT, "docs/design/mark-granularity.artifact.html");
+
+/** packages/etl/scripts/build-tajweed.mjs:89 — the one copy of this map is
+ * there; this is a read of it, and `--extract` asserts the two agree. */
+const RULES = {
+ hamzat_wasl: "wasl",
+ madd_2: "madd",
+ madd_246: "madd",
+ madd_muttasil: "madd",
+ madd_munfasil: "madd",
+ madd_6: "madd-lazim",
+ ghunnah: "ghunnah",
+ ikhfa: "ghunnah",
+ ikhfa_shafawi: "ghunnah",
+ iqlab: "ghunnah",
+ idghaam_ghunnah: "idgham",
+ idghaam_no_ghunnah: "idgham",
+ idghaam_shafawi: "idgham",
+ idghaam_mutajanisayn: "idgham",
+ idghaam_mutaqaribayn: "idgham",
+ lam_shamsiyyah: "idgham",
+ qalqalah: "qalqalah",
+ silent: "silent",
+};
+
+/** packages/core/src/skins.ts TAJWEED_RULES, ascending. `leadingRule` takes the
+ * maximum — the rarest family on the ayah, which is the informative one when
+ * you only get to say one thing. */
+const SALIENCE = { madd: 0, wasl: 1, ghunnah: 2, idgham: 3, qalqalah: 4, silent: 5, "madd-lazim": 6 };
+const leadingFamily = (families) => families.reduce((a, b) => (SALIENCE[b] > SALIENCE[a] ? b : a));
+
+// ───────────────────────────────────────────────────────────── extract ──────
+
+async function extract() {
+ const ETL = join(ROOT, "packages/etl/scripts");
+ const cache = join(ROOT, "packages/etl/data/pages/.cache");
+ if (!existsSync(cache)) {
+ console.error("--extract needs the quran-svg fetch cache at packages/etl/data/pages/.cache/");
+ console.error("It is gitignored and 348 MB. Run the vendor step first, or drop --extract");
+ console.error("and render from the committed data file.");
+ process.exit(1);
+ }
+
+ const { candidatePage } = await import(join(ETL, "lib/candidate-pages.mjs"));
+ const { applierFromPin, readDiacritics } = await import(join(ETL, "lib/diacritics.mjs"));
+ const { markPaths } = await import(join(ETL, "lib/mark-join.mjs"));
+ const { WAQF } = await import(join(ETL, "lib/mushaf-frame.mjs"));
+ const { ALL_CORRECTIONS, ORACLE, foldAyah, oracleOf, respellerFor } = await import(
+ join(ETL, "lib/tajweed-fold.mjs")
+ );
+
+ const dataDir = join(ROOT, "packages/etl/data");
+ const tajweed = JSON.parse(
+ readFileSync(join(dataDir, "tajweed/tajweed.hafs.uthmani-pause-sajdah.json"), "utf8"),
+ );
+ const pin = new Map(
+ JSON.parse(readFileSync(join(dataDir, "pages/word-boxes.pin.json"), "utf8")).pages.map((p) => [
+ p.page,
+ p,
+ ]),
+ );
+
+ // The corpus-wide counts the page argues from. Computed here rather than
+ // quoted, so the prose cannot drift from the data behind it.
+ const corpus = corpusStats(tajweed);
+
+ const svg = (await candidatePage(PAGE, { offline: true })).body.toString("utf8");
+ const ON = new Set(ALL_CORRECTIONS);
+ const respell = respellerFor(ON);
+ const oracleSets = new Map(
+ Object.entries(ORACLE).map(([r, e]) => [r, { set: new Set(e.letters), near: e.near ?? 0 }]),
+ );
+ const letterAt = (cps, rule, start) => {
+ const spec = oracleSets.get(rule);
+ if (!spec) return -1;
+ for (let d = 0; d <= spec.near; d += 1) if (spec.set.has(cps[start + d])) return start + d;
+ return -1;
+ };
+
+ const WORD = /]*)>/g;
+ // The leading boundary is load-bearing: without it `d="` matches the tail of
+ // `id="`, and every ayah polygon comes back carrying the string "verse-8" as
+ // its path data. An SVG with unparseable `d` renders nothing and
+ // reports a zero bbox — so the "today" layer was silently empty while the
+ // mark layer, which uses , drew fine.
+ const attr = (s, n) => {
+ const m = s.match(new RegExp(`(?:^|\\s)${n}="([^"]*)"`));
+ return m ? m[1] : null;
+ };
+ const un = (s) =>
+ s.replace(/</g, "<").replace(/>/g, ">").replace(/"/g, '"').replace(/&/g, "&");
+ const isMark = (t) => [...t].length > 0 && [...t].every((c) => WAQF.has(c));
+
+ const byAyah = new Map();
+ for (const m of svg.matchAll(WORD)) {
+ const a = m[1];
+ const surah = Number(attr(a, "data-surah"));
+ const aya = Number(attr(a, "data-aya"));
+ const idx = Number(attr(a, "data-word-index-in-ayah"));
+ const hafs = attr(a, "data-hafs");
+ if (!surah || !aya || !idx || hafs == null) continue;
+ const key = `${surah}:${aya}`;
+ if (!byAyah.has(key)) byAyah.set(key, new Map());
+ const text = un(hafs);
+ byAyah.get(key).set(idx, { hafs: text, waw: attr(a, "data-waw-alatf") === "true", mark: isMark(text) });
+ }
+
+ const marksByAyah = new Map();
+ for (const w of readDiacritics(svg, applierFromPin(pin.get(PAGE)))) {
+ const key = `${w.surah}:${w.aya}`;
+ if (!marksByAyah.has(key)) marksByAyah.set(key, new Map());
+ marksByAyah.get(key).set(w.idx, markPaths(w));
+ }
+
+ // 1:1's word list, which the fold prefixes onto every sūra-opening ayah.
+ const p1 = (await candidatePage(1, { offline: true })).body.toString("utf8");
+ const b1 = new Map();
+ for (const m of p1.matchAll(WORD)) {
+ const a = m[1];
+ if (Number(attr(a, "data-surah")) !== 1 || Number(attr(a, "data-aya")) !== 1) continue;
+ b1.set(Number(attr(a, "data-word-index-in-ayah")), {
+ hafs: un(attr(a, "data-hafs")),
+ waw: attr(a, "data-waw-alatf") === "true",
+ mark: false,
+ });
+ }
+ const basmala = [...b1.keys()].sort((a, b) => a - b).map((i) => b1.get(i));
+
+ // The hit polygons: already in the 235-unit frame, same space as the shards.
+ const polys = new Map();
+ for (const m of svg.matchAll(/]*class="ayahPolygon"[^>]*\/>/g)) {
+ const el = m[0];
+ polys.set(`${attr(el, "surah")}:${attr(el, "ayah")}`, attr(el, "d"));
+ }
+
+ const pageSvg = readFileSync(join(ROOT, `apps/web/public/assets/pages/hafs-kfqc/${PAGE}.svg`), "utf8");
+ for (const m of pageSvg.matchAll(/]*class="ayahPolygon"[^>]*\/>/g)) {
+ const el = m[0];
+ polys.set(`${attr(el, "surah")}:${attr(el, "ayah")}`, attr(el, "d"));
+ }
+
+ const shard = JSON.parse(
+ readFileSync(join(ROOT, `apps/web/public/assets/words/hafs-kfqc/${PAGE}.json`), "utf8"),
+ );
+
+ const ayahs = [];
+ for (const [key, wordMap] of byAyah) {
+ const idxs = [...wordMap.keys()].sort((a, b) => a - b);
+ // A non-contiguous word index means the ayah is split across pages; its
+ // fold would be over a partial word list and every offset would be wrong.
+ if (idxs.some((v, i) => v !== i + 1)) continue;
+ const words = idxs.map((i) => wordMap.get(i));
+ const [surah, ayah] = key.split(":").map(Number);
+ const rec = tajweed.find((r) => r.surah === surah && r.ayah === ayah);
+ const boxes = shard.words?.[key];
+ if (!rec || !boxes || boxes.from !== 1) continue;
+
+ // No `indices`: probe-encodings.mjs passes none, so `print` is the 1-based
+ // position in `words` — which the contiguity check above just established.
+ const fold = foldAyah({ surah, ayah, words, basmala, on: ON });
+ const cps = [...fold.cps];
+ const byIdx = marksByAyah.get(key);
+
+ const anns = [];
+ for (const a of rec.annotations) {
+ const family = RULES[a.rule];
+ if (!family) throw new Error(`rule ${a.rule} is not in the family map`);
+ const ann = { rule: a.rule, family };
+ const o = oracleOf(cps, { rule: a.rule, start: a.start, end: a.end });
+ const pos = o?.hit ? letterAt(cps, a.rule, a.start) : -1;
+ const host = pos >= 0 ? fold.hosts.find((h) => pos >= h.from && pos < h.to) : null;
+ if (!o?.hit) ann.outcome = "oracle-miss";
+ else if (pos < 0 || !host) ann.outcome = "no-host";
+ else if (host.print === null) ann.outcome = "basmala";
+ else {
+ const word = byIdx?.get(host.print);
+ const hafs = words[host.print - 1]?.hafs;
+ if (word === undefined || hafs === undefined) ann.outcome = "no-word";
+ else if (respell(hafs) !== hafs) ann.outcome = "respelt";
+ else if (word === null) ann.outcome = "unjoined";
+ else {
+ const at = pos - host.from;
+ const hit = word.find((mk) => at >= mk.at && at < mk.at + mk.len);
+ ann.outcome = hit ? "drawn" : "letter";
+ ann.word = host.print;
+ if (hit) {
+ ann.name = hit.name;
+ ann.mark = hit.mark.slice(1).map((n) => Number(n.toFixed(2)));
+ }
+ }
+ if (ann.word === undefined && host.print) ann.word = host.print;
+ }
+ anns.push(ann);
+ }
+
+ const families = [...new Set(anns.map((a) => a.family))];
+ ayahs.push({
+ key,
+ poly: polys.get(key) ?? null,
+ words: boxes.boxes,
+ marks: boxes.marks ?? [],
+ families,
+ lead: leadingFamily(families),
+ anns,
+ });
+ }
+
+ ayahs.sort((a, b) => Number(a.key.split(":")[1]) - Number(b.key.split(":")[1]));
+ const data = {
+ $comment:
+ "Generated by scripts/build-mark-options.mjs --extract. Geometry only — no Quran text. " +
+ "Coordinates are the 235-unit page frame, the same one the word shards use.",
+ page: PAGE,
+ corpus,
+ ayahs,
+ };
+ writeFileSync(DATA, `${JSON.stringify(data, null, 1)}\n`);
+ const n = ayahs.reduce((t, a) => t + a.anns.length, 0);
+ console.log(`--extract — ${ayahs.length} ayahs, ${n} annotations → docs/design/mark-granularity.data.json`);
+}
+
+/** Per ayah: how many families are annotated, and how many of them render. */
+function corpusStats(tajweed) {
+ let ayahs = 0;
+ let anns = 0;
+ let painted = 0;
+ let familySum = 0;
+ const histogram = {};
+ const invisible = {};
+ const wins = {};
+ for (const rec of tajweed) {
+ const families = rec.annotations.map((a) => RULES[a.rule]).filter(Boolean);
+ if (families.length === 0) continue;
+ ayahs += 1;
+ anns += families.length;
+ const distinct = [...new Set(families)];
+ familySum += distinct.length;
+ histogram[distinct.length] = (histogram[distinct.length] ?? 0) + 1;
+ const lead = leadingFamily(distinct);
+ wins[lead] = (wins[lead] ?? 0) + 1;
+ painted += families.filter((f) => f === lead).length;
+ for (const f of distinct) if (f !== lead) invisible[f] = (invisible[f] ?? 0) + 1;
+ }
+ return { ayahs, anns, painted, discarded: anns - painted, meanFamilies: familySum / ayahs, histogram, wins, invisible };
+}
+
+// ────────────────────────────────────────────────────────────── render ──────
+
+/** Pull the tajweed palette out of tokens.css, so the picture cannot drift from
+ * the app's own colours by being retyped here. */
+function palette() {
+ const css = readFileSync(join(ROOT, "apps/web/src/styles/tokens.css"), "utf8");
+ const grab = (re) => {
+ const out = {};
+ for (const m of css.matchAll(re)) out[m[1]] = m[2].trim();
+ return out;
+ };
+ const fill = grab(/--tj-((?!dash|wash|stroke)[a-z-]+):\s*([^;]+);/g);
+ const dash = grab(/--tj-dash-([a-z-]+):\s*([^;]+);/g);
+ const one = (name) => {
+ const m = css.match(new RegExp(`--${name}:\\s*([^;]+);`));
+ return m ? m[1].trim() : null;
+ };
+ return { fill, dash, wash: one("tj-wash"), stroke: one("tj-stroke") };
+}
+
+const FAMILY_LABEL = {
+ wasl: "waṣl",
+ madd: "madd",
+ ghunnah: "ghunnah",
+ qalqalah: "qalqalah",
+ idgham: "idghām",
+ silent: "silent",
+ "madd-lazim": "madd lāzim",
+};
+const ORDER = ["madd", "wasl", "ghunnah", "idgham", "qalqalah", "silent", "madd-lazim"];
+
+const esc = (s) =>
+ String(s).replace(/&/g, "&").replace(/ /g, ">").replace(/"/g, """);
+const pct = (n, d) => `${((n / d) * 100).toFixed(2)}%`;
+
+function render() {
+ if (!existsSync(DATA)) {
+ console.error(`missing ${DATA} — run with --extract first (needs the maintainer cache)`);
+ process.exit(1);
+ }
+ const data = JSON.parse(readFileSync(DATA, "utf8"));
+ const pal = palette();
+ const manifest = JSON.parse(readFileSync(join(ROOT, "apps/web/public/assets/manifest.json"), "utf8"));
+ const viewBox = manifest.viewBoxOverrides?.[String(data.page)] ?? manifest.viewBox;
+ const print = `../../apps/web/public/assets/pages/hafs-kfqc/${data.page}.svg`;
+ // The print's own children, lifted into a on the page's viewBox, so
+ // `` places it in page units inside whatever crop the specimen asks for.
+ const printDefs = ARTIFACT
+ ? `${
+ readFileSync(join(ROOT, `apps/web/public/assets/pages/hafs-kfqc/${data.page}.svg`), "utf8")
+ .replace(/^[\s\S]*?]*>/, "")
+ .replace(/<\/svg>\s*$/, "")
+ } `
+ : "";
+
+ const rect = ([x, y, w, h], attrs) => ` `;
+ const washAttrs = (family, strong = false) =>
+ `fill="${pal.fill[family]}" fill-opacity="${pal.wash}" stroke="${pal.fill[family]}" ` +
+ `stroke-width="${strong ? 0.5 : pal.stroke}" stroke-dasharray="${pal.dash[family]}" ` +
+ `stroke-linejoin="round" vector-effect="non-scaling-stroke"`;
+
+ /** ① what ships today: one wash per ayah, in the ayah's rarest family. */
+ const layerToday = () =>
+ data.ayahs
+ .filter((a) => a.poly)
+ .map((a) => ` `)
+ .join("");
+
+ /** ② mark granularity: the drawn marks in their own family, solid; the rules
+ * that land on a bare letter fall back to that letter's word, washed. */
+ const layerMarks = () => {
+ const out = [];
+ for (const a of data.ayahs) {
+ const byWord = new Map();
+ for (const ann of a.anns) {
+ if (ann.outcome !== "letter" || !ann.word) continue;
+ const list = byWord.get(ann.word) ?? [];
+ list.push(ann.family);
+ byWord.set(ann.word, list);
+ }
+ for (const [w, families] of byWord) {
+ const box = a.words[w - 1];
+ if (box) out.push(rect(box, washAttrs(leadingFamily(families))));
+ }
+ for (const ann of a.anns) {
+ if (ann.outcome !== "drawn" || !ann.mark) continue;
+ out.push(
+ rect(
+ ann.mark,
+ `fill="${pal.fill[ann.family]}" fill-opacity="0.45" stroke="${pal.fill[ann.family]}" ` +
+ `stroke-width="0.35" rx="0.4"`,
+ ),
+ );
+ }
+ }
+ return out.join("");
+ };
+
+ /** ③ shards and gate only: the geometry ships, nothing paints with it. */
+ const layerGeometry = () => {
+ const out = [];
+ for (const a of data.ayahs) {
+ for (const box of a.words) out.push(rect(box, `fill="none" stroke="#a8998a" stroke-width="0.18"`));
+ for (const ann of a.anns) {
+ if (ann.outcome === "drawn" && ann.mark) {
+ out.push(rect(ann.mark, `fill="none" stroke="#a8998a" stroke-width="0.18"`));
+ }
+ }
+ }
+ return out.join("");
+ };
+
+ /**
+ * One specimen. The print is referenced, never copied — ` ` at the same
+ * viewBox as the overlay, so the two share a coordinate system exactly.
+ * `crop` is a viewBox in page units; the wrapper scales both layers together.
+ */
+ const specimen = (layer, { crop = null, label = "" } = {}) => {
+ const [vx, vy, vw, vh] = (crop ?? viewBox).split(/\s+/).map(Number);
+ const [, , pw, ph] = viewBox.split(/\s+/).map(Number);
+ // The window is exactly the crop's aspect, so the overlay's own viewBox
+ // fills it without letterboxing and the two layers share one coordinate
+ // system. The print is then scaled and offset to put the crop at the
+ // window's origin — horizontal percentages resolve against the window's
+ // width and vertical ones against its height, which are different bases,
+ // so the two axes divide by vw and vh respectively rather than by a
+ // single scale factor.
+ const pc = (n) => `${(n * 100).toFixed(4)}%`;
+ // `--artifact` puts the print INSIDE the overlay's own viewBox via ,
+ // which makes the percentage arithmetic above unnecessary — the two layers
+ // are then one SVG coordinate system rather than two aligned ones.
+ const print2 = ARTIFACT
+ ? ` `
+ : "";
+ return `
+
+ ${ARTIFACT ? "" : `
`}
+
${print2}${layer}
+
+ ${label ? `${label} ` : ""}
+ `;
+ };
+
+ const swatch = (f) =>
+ `${FAMILY_LABEL[f]} `;
+
+ // ── the per-ayah ledger of what is present vs what renders ────────────────
+ const ayahRows = data.ayahs
+ .map((a) => {
+ const chips = ORDER.filter((f) => a.families.includes(f))
+ .map(
+ (f) =>
+ `${FAMILY_LABEL[f]} `,
+ )
+ .join("");
+ const drawn = a.anns.filter((x) => x.outcome === "drawn").length;
+ const letter = a.anns.filter((x) => x.outcome === "letter").length;
+ const other = a.anns.length - drawn - letter;
+ return `
+ ${esc(a.key)}
+ ${chips}
+ ${a.anns.length}
+ ${a.anns.filter((x) => x.family === a.lead).length}
+ ${drawn}
+ ${letter}${other ? ` +${other} ` : ""}
+ `;
+ })
+ .join("\n");
+
+ const c = data.corpus;
+ const histRows = Object.keys(c.histogram)
+ .map(Number)
+ .sort((a, b) => a - b)
+ .map((k) => {
+ const v = c.histogram[k];
+ return `${k} ${v.toLocaleString("en")}
+ ${pct(v, c.ayahs)} `;
+ })
+ .join("\n");
+
+ const invisRows = ORDER.filter((f) => c.invisible[f])
+ .sort((a, b) => c.invisible[b] - c.invisible[a])
+ .map(
+ (f) => `${swatch(f)} ${c.invisible[f].toLocaleString("en")}
+
+ ${pct(c.invisible[f], c.ayahs)}
+ ${c.wins[f] ? pct(c.wins[f], c.ayahs) : "—"} `,
+ )
+ .join("\n");
+
+ const pageAnns = data.ayahs.reduce((t, a) => t + a.anns.length, 0);
+ const pagePainted = data.ayahs.reduce((t, a) => t + a.anns.filter((x) => x.family === a.lead).length, 0);
+ const pageDrawn = data.ayahs.reduce((t, a) => t + a.anns.filter((x) => x.outcome === "drawn").length, 0);
+
+ // The word that carries all four outcomes at once — 2:3's sixth word. Named
+ // by index, not spelled: the print draws it, three lines up.
+ const detail = data.ayahs.find((a) => a.key === "2:3");
+ const detailCrop = detail ? cropOf(detail.words[5], 3) : null;
+
+ // A full document, matching `build-validation-guide.mjs`. A fragment renders
+ // in quirks mode from `file://`, which is where this page is read from.
+ const html = `
+
+
+
+One colour a verse — should Hifth colour tajweed more finely?
+
+
+
+
+
+${printDefs}
+
+ Hifth · a decision, drawn on paper
+ One colour a verse. The data knows five.
+
+ Hifth can tint each verse to flag a recitation rule inside it. It gets
+ one colour per verse — but a verse usually carries
+ ${c.meanFamilies.toFixed(1)} different kinds of rule, so most of what we know
+ is never shown. This page asks whether to colour smaller pieces than a whole verse, and shows
+ each option on a real page so you can judge it by eye.
+
+
+
${pct(c.discarded, c.anns)} of the rules we know about are invisible on screen
+
${c.meanFamilies.toFixed(1)} kinds of rule in a typical verse
+
1 gets a colour
+
+
+
Three words, before we start
+
+ A tajweed rule tells a reciter to do something at a particular spot — hold a
+ vowel, hum through a letter, skip one. Hifth sorts them into seven kinds
+ (madd, ghunnah, idghām, qalqalah, silent, waṣl, madd lāzim) and gives each kind a colour. A
+ mark is one of the small signs the printed mus'haf draws above or below a
+ letter. Everything below is about how big an area we tint: a whole verse, or the exact letter
+ or mark the rule is about.
+
+
+
+
+
+
+
+ 1 What is being decided?
+
+ Whether Hifth should keep tinting a whole verse at a time, or start tinting the exact letter or
+ mark a rule lands on — and if it should, whether to put that on the reader's screen now or only
+ lay the groundwork for it.
+
+
+ Three answers, drawn side by side further down. A : leave it as it is, one colour
+ a verse. B : colour the exact letter or mark. C : ship the
+ measurements and the checks that keep them honest, and colour nothing yet.
+
+
+
+
+ 2 Why is this being asked now?
+
+ Because it finally got measured. Letting a reader pick out single words meant working out where
+ every word — and every small mark the printer drew above and below the letters — actually sits on
+ all 604 pages. That work is done and shipped for a different reason, and the moment it existed it
+ was possible to count something nobody had counted before: how much of what we know about
+ recitation rules never reaches the reader's eye. The number came back at
+ ${pct(c.discarded, c.anns)} , and it is the reason this page exists rather than a
+ hunch that verse-sized tinting felt coarse.
+
+
+
+
+ 3 What happens if nobody decides?
+
+ Nothing breaks, and that is worth saying plainly. Option A is what the app does today, it works,
+ and no other part of Hifth is waiting behind this question — nothing is blocked, no release is
+ held up, and this can sit open for a year at no cost to a reader.
+
+
+ What it costs is quieter. The measurements exist and nothing uses them, so nothing checks them:
+ a positioning error would sit undetected until the day somebody builds on it. And
+ ${pct(c.discarded, c.anns)} of what we know stays where it has always been, which is nowhere a
+ reader can see.
+
+
+
+
+ 4 What does the app colour today?
+
+ A whole verse at a time. Below is page ${data.page} exactly as Hifth draws it: five verses,
+ five tinted shapes, each stepping across the line breaks the verse takes. When a verse carries
+ several kinds of rule, Hifth picks the rarest one — telling you a verse hides a silent
+ letter is worth more than telling you it has a madd, which nine verses in ten do.
+
+ ${specimen(layerToday(), { label: `Five verses, five tints. Behind them sit ${pageAnns} rules — only ${pagePainted} are in a colour you can see.` })}
+
+ What each verse on this page carries. A filled chip is the kind that got the colour; a hollow one is a kind that is there and shows nothing.
+ verse kinds of rule present rules shown on a printed mark on a plain letter
+
+${ayahRows}
+
+
+
+
+
+ 5 What is it leaving out?
+
+ Most of it. Across the whole mus'haf we have ${c.anns.toLocaleString("en")}
+ rules marked up, and ${c.discarded.toLocaleString("en")} of them —
+ ${pct(c.discarded, c.anns)} — never reach the screen. Not because we are unsure where they are.
+ Because there is only one colour to give and something else already took it.
+
+
+ How many different kinds of rule land on a single verse, across all ${c.ayahs.toLocaleString("en")} verses that carry any.
+ kinds verses share
+
+${histRows}
+
+
+
+ The one that loses most is the one a reciter meets most. Madd appears in
+ ${pct(c.invisible.madd + (c.wins.madd ?? 0), c.ayahs)} of verses and gets the colour in
+ ${pct(c.wins.madd ?? 0, c.ayahs)} of them. That is deliberate — it ranks last because
+ it is everywhere, which is the right call when you have one colour and the wrong one the moment
+ you have room for two.
+
+
+ Present in the verse, but beaten to the only colour going.
+ kind verses where it loses share wins
+
+${invisRows}
+
+
+
+
+
+ 6 Would colouring smaller pieces let us show more of it?
+
+ Yes — and that is the real prize, more than precision is. The problem today is not that a tint
+ is coarse . It is that a tint is single : one shape per verse means one colour
+ per verse, so ${c.meanFamilies.toFixed(1)} kinds compete for it and
+ ${(c.meanFamilies - 1).toFixed(1)} lose every time. Tint the individual letters and marks
+ instead and they stop competing — each one can carry its own colour, because each one is its
+ own shape.
+
+
+
+
+ 7 What do printed mus'hafs already do about this?
+
+ They answered it the other way, decades ago, and they answered it at the letter. The
+ colour-coded printed mus'haf — the one most huffaz have already held — tints
+ individual letters , never whole verses.
+
+
+ In Dar al-Maarifah's colour-coded mus'haf a letter held longer is printed red, a nasalised
+ letter green, a letter that is written but not pronounced grey, and the echoing letters blue;
+ the publisher's claim is that a reader applies two dozen rules from the colours alone while
+ their attention stays on the meaning. Whatever else is true, that is a working precedent for
+ option B and none at all for option A: no printed tradition colours a whole verse to tell you
+ something about one letter inside it, because on paper it never had to.
+
+
+
Why the precedent does not simply settle it
+
+ Print colours the ink of the letter itself . Hifth cannot: the page it shows
+ is a picture of the printed page, one flat drawing, with no separate letter inside it to
+ recolour. Everything on this page is a tinted shape laid over the print, which is a
+ different visual language — a wash behind a letter reads less precisely than a letter that is
+ simply a different colour, and no amount of accuracy in the positions changes that. So the
+ printed mus'haf tells us readers cope with letter-level colour; it does not tell us that a
+ letter-level wash reads the same way. Section 10 is where you judge that by eye.
+
+
+
+ What was and was not looked up. The printed colour-coded tradition above was
+ checked against booksellers' descriptions of the Dar al-Maarifah edition
+ (one ,
+ two ).
+ No survey was done of how other apps handle it: a search for any published account of a
+ digital mus'haf's colouring turned up sales pages and PDFs of the printed editions, and nothing
+ describing how a screen decides what to tint. Treat that as unlooked-at, not as evidence that
+ nobody has solved it.
+
+
+
+
+ 8 What have we already decided that this has to live with?
+
+ Two earlier answers shape this one, and both of them make B cheaper and narrower than it sounds.
+
+
+ “Should a reader be able to pick single words, or only whole verses?” — answered: single words.
+
+ This is why the measurements exist at all; B is not proposing the expensive half, it is
+ proposing to use it. It also sets a reader's expectation: the app already answers at
+ word size when you touch it, so colour is now the one thing that still only speaks in verses.
+
+ “Can a reader turn the colouring off, jump anywhere, and reopen it with no signal?” — answered: yes, it is a layer you can switch off.
+
+ Anything chosen here is opt-in by construction — nobody is made to look at it — and the seven
+ colours were fixed then. B does not get new colours. It gets smaller places to put the ones we
+ have, which is exactly why section 10's complaint about the two quietest ones is a live one.
+
+
+
+
+
+ 9 What would each option look like on a real page?
+
+ The same three lines, three times. Same size, same colours — the only thing that changes is how
+ small a piece the app is allowed to tint.
+
+
+
+
A · Leave it as it is change nothing
+ ${specimen(layerToday(), { crop: BAND })}
+
+
What it takes Nothing. No new work, no extra data for a phone to download.
+
What you get The app stays exactly as it is now. We already have an internal tool that can show every mark, so nothing we learned is lost — it is just not on the reader's screen.
+
What it costs ${pct(c.discarded, c.anns)} of what we know stays invisible to a reader, indefinitely.
+
+
+
+
+
B · Colour the exact letter or mark every rule gets its own colour
+ ${specimen(layerMarks(), { crop: BAND })}
+
+
What it takes About 5 KB more per page for a phone to download — roughly a tenth of what the page picture itself weighs. Size is not the sticking point.
+
What you get Every kind of rule in the verse gets a colour instead of just one. On these three lines that is ${pageAnns} rules shown rather than ${pagePainted}, and ${pageDrawn} of them sit on the exact mark the printer drew.
+
What it costs Two visual languages on one line: a solid block on rules the printer drew a mark for, a tinted word for rules that land on a plain letter with nothing above it. Whether that reads as precise or as busy is what section 10 is for.
+
+
+
+
+
C · Prepare the ground, colour nothing yet ship the measurements, not the look
+ ${specimen(layerGeometry(), { crop: BAND })}
+
+
What it takes The same ~5 KB per page as B.
+
What you get The positions get locked down and automatically checked before we commit to any look, so B can be tried, changed or abandoned later without redoing the measurement work.
+
What it costs A reader sees option A. The faint outlines above are drawn only here , so you can see what would be available — the app itself would show nothing new.
+
+
+
+
+${
+ detail
+ ? `
+ 10 Where do A and B actually differ?
+
+ One word makes the whole argument. Four rules land on the sixth word of verse ${esc(detail.key)}:
+ a waṣl and a madd , which the printer drew small marks for, and an
+ idghām and a silent , which land on plain letters with nothing above them to
+ colour. Today all four come out as one grey tint over the entire verse. Here is that word at
+ about eight times its real size.
+
+
+ ${specimen(layerToday(), {
+ crop: detailCrop,
+ label:
+ "A — the tint is here, and it is all of it. This close-up sits entirely inside the verse, so " +
+ "the flat grey is the signal: nothing tells you which word or letter the rule is about.",
+ })}
+ ${specimen(layerMarks(), {
+ crop: detailCrop,
+ label:
+ "B — the waṣl (grey box, top right) and the madd (orange bar) sit on the exact marks the " +
+ "printer drew, each in its own colour, over a tinted word for the two rules that have no mark.",
+ })}
+
+
+
This word also shows the two things still unsolved
+
+ Its idghām and its silent both land on plain letters of the
+ same word — so B still has to choose between them. The competition does not
+ disappear, it just moves from verse-sized to word-sized, and we currently only know how to
+ settle it verse-sized. Second: the two colours B leans on hardest here are the faintest two we
+ have. Look at the grey waṣl box against the grey word beneath it. Both colours were picked back
+ when the smallest thing they could land on was a whole verse.
+
+
+ `
+ : ""
+}
+
+
+ 11 What do the colours look like at the size they would be used?
+
+ ${ORDER.map(
+ (f) =>
+ `
+ ${FAMILY_LABEL[f]}
+ ${esc(pal.fill[f])}
+
+ ${c.wins[f] ? `wins ${pct(c.wins[f], c.ayahs)}` : "—"}
`,
+ ).join("\n")}
+
+
+ Colour is never the only signal — each kind also has its own dash pattern along the edge, so the
+ seven stay distinguishable in greyscale, in print, and to a colour-blind reader.
+
+
+
+
+ 12 What else could we do, and why is it not on this page?
+
+ Three ideas were considered and left off. If one of them is the answer, this is the place to say
+ so — an option list with no visible edge is asking you to trust that the edge was somewhere
+ sensible.
+
+
+ Recolour the letters themselves, the way the printed mus'haf does.
+
+ Not possible with the page we ship. It is one flat drawing of the whole printed page; there is
+ no separate letter in it to give a colour to. Doing this would mean redrawing the mus'haf,
+ which is a far larger undertaking than any option here and a different decision entirely.
+
+ Let the reader choose one kind of rule and show only that.
+
+ Pick madd, see madd. This makes the competition disappear without measuring anything, and it
+ would work at today's verse size. It is left off because it answers a different question — what
+ do you want to see — where this page is about what the app shows by default. It is
+ also the cheapest idea on this list, and it stays available whichever of A, B or C wins.
+
+ Tint whole words, and never the printer's marks.
+
+ Half of B: one visual language instead of two, and no need for the mark positions. Left off
+ because it keeps the same competition B fails to fully solve — two rules on two letters of one
+ word — while giving up the precision that was the reason to move at all. It is genuinely a
+ middle option, and if section 10 reads as busy to you, it is the one to ask for.
+
+
+
+
+
+ 13 What would change the answer?
+
+
+ The two quietest colours getting louder. B's weakest moment is a pale grey
+ box on a pale grey word. That is a palette question, not a measurement one, and it can be
+ tried on this very page in an afternoon. If it fixes it, B's main objection is gone.
+
+
+ A hafiz looking at section 10 and calling it busy. One person reciting from
+ the marked-up line would settle this faster and more honestly than any count on this page.
+
+
+ Finding that two rules often land on the same letter , not just the same word.
+ That is not counted here. If it turns out common, B needs a rule for what wins that we do not
+ have, and C becomes the sensible order of work rather than a delay.
+
+
+ The positions failing their check against the print. They are measured, not
+ hand-placed, and they are checked — but on the day a check fails, B and C both stop until it
+ passes, and A is unaffected.
+
+
+
+
+
+ 14 What is this page not settling?
+
+ Which colour each kind of rule gets — B reuses the seven that already exist. Whether a mark can
+ be touched or asked about; this is only about colour. What should happen when two rules land on
+ the exact same letter, which is not counted anywhere here. And nothing at all about where the
+ rule data came from or how good it is: that is a separate question with its own record.
+
+
+
+
+ 15 So which one should we build?
+
+ Whether to build B. A is the status quo and needs no decision; C is B's groundwork without B's
+ look, and is worth taking only if we think the look needs several tries.
+
+
+ The case for B is section 5: we already know where ${c.anns.toLocaleString("en")} rules are, and
+ ${pct(c.discarded, c.anns)} of them are invisible for want of somewhere to put a second colour —
+ and section 7, where the printed tradition has been colouring letters rather than verses for
+ years. The case against is section 10: two of those colours are too quiet at this size, and one
+ word can still carry two rules that want different colours in the same place. Neither is a
+ reason not to build it — both are work that comes with it.
+
+
+
+
+
+
+
+ Where the pictures come from. Nothing here is a mock-up. The page is the real
+ mus'haf image the app ships; the tinted verse shapes are the same ones the app taps against; the
+ word and mark rectangles are the measured positions of the printer's own ink; and the colours are
+ read straight out of the app's stylesheet when this page is built, so it cannot drift from what
+ Hifth actually looks like. All the counts are recomputed from the rule data each time.
+
+
+ Built by scripts/build-mark-options.mjs — edit that, not this. The technical write-up
+ behind it, including what is still unresolved, is docs/design/sub-word-marks.md §⑧.
+ The print is assets/pages/hafs-kfqc/${data.page}.svg: outlined shapes only, no text.
+
+
+`;
+
+ const out = ARTIFACT ? OUT_ARTIFACT : OUT;
+ writeFileSync(out, html);
+ const kb = (Buffer.byteLength(html) / 1024).toFixed(1);
+ console.log(`${basename(out)} — ${kb} KB, ${data.ayahs.length} ayahs, ${pageAnns} annotations`);
+ console.log(` corpus: ${c.discarded.toLocaleString("en")}/${c.anns.toLocaleString("en")} annotations (${pct(c.discarded, c.anns)}) render as nothing at ayah granularity`);
+}
+
+/** A viewBox around one box, padded by `pad` page units. */
+function cropOf([x, y, w, h], pad) {
+ return `${(x - pad).toFixed(1)} ${(y - pad).toFixed(1)} ${(w + pad * 2).toFixed(1)} ${(h + pad * 2).toFixed(1)}`;
+}
+
+/** The three-line band the option cards are cropped to: 2:3 and its neighbours. */
+const BAND = "6 68 228 70";
+
+const STYLE = `
+:root{
+ --paper:#f4efe6; --ink:#26201a; --accent:#1f6f66;
+ --tint:#ede6da; --rule:#ddd2c2; --dim:#6f6559; --card:#fbf8f2;
+ --shadow:0 1px 0 rgba(38,32,26,.05);
+}
+@media (prefers-color-scheme: dark){
+ :root{ --paper:#191612; --ink:#ece4d8; --accent:#5fbfae; --tint:#221d18;
+ --rule:#3a322a; --dim:#9a8d7d; --card:#201b16; --shadow:none; }
+}
+:root[data-theme="dark"]{ --paper:#191612; --ink:#ece4d8; --accent:#5fbfae; --tint:#221d18;
+ --rule:#3a322a; --dim:#9a8d7d; --card:#201b16; --shadow:none; }
+:root[data-theme="light"]{ --paper:#f4efe6; --ink:#26201a; --accent:#1f6f66; --tint:#ede6da;
+ --rule:#ddd2c2; --dim:#6f6559; --card:#fbf8f2; --shadow:0 1px 0 rgba(38,32,26,.05); }
+
+body{ background:var(--paper); color:var(--ink); margin:0;
+ font:16px/1.65 "Iowan Old Style","Charter","Palatino Linotype",Palatino,Georgia,serif;
+ -webkit-text-size-adjust:100%; }
+main,.head,footer{ max-width:60rem; margin:0 auto; padding:0 1.5rem; }
+h1,h2,h3,h4,.eyebrow,.tag,.n,code,table,.stats b,figcaption{
+ font-family:ui-sans-serif,"Helvetica Neue",Arial,system-ui,sans-serif; }
+h1{ font-size:clamp(1.9rem,4.6vw,3rem); line-height:1.1; letter-spacing:-.02em;
+ margin:.2em 0 .5rem; text-wrap:balance; font-weight:650; }
+h2{ font-size:1.35rem; letter-spacing:-.01em; margin:0 0 .9rem; display:flex; gap:.7rem;
+ align-items:baseline; font-weight:650; }
+h3{ font-size:1.08rem; margin:0; font-weight:650; }
+h4{ font-size:.72rem; margin:0 0 .35rem; text-transform:uppercase; letter-spacing:.09em;
+ color:var(--dim); font-weight:650; }
+p{ margin:0 0 1rem; max-width:64ch; }
+code{ font-family:ui-monospace,SFMono-Regular,Menlo,monospace; font-size:.86em;
+ background:var(--tint); padding:.1em .35em; border-radius:3px; }
+strong{ font-weight:650; }
+.dim{ color:var(--dim); } .small{ font-size:.85rem; }
+a{ color:var(--accent); text-underline-offset:2px; }
+a:focus-visible{ outline:2px solid var(--accent); outline-offset:2px; border-radius:2px; }
+
+.head{ padding-top:3.5rem; padding-bottom:1rem; }
+.eyebrow{ font-size:.72rem; letter-spacing:.16em; text-transform:uppercase; color:var(--accent);
+ margin:0; font-weight:650; }
+.standfirst{ font-size:1.1rem; max-width:58ch; }
+.stats{ display:flex; flex-wrap:wrap; gap:1px; background:var(--rule); border:1px solid var(--rule);
+ border-radius:6px; overflow:hidden; margin:1.75rem 0 0; }
+.stats div{ flex:1 1 11rem; background:var(--card); padding:.9rem 1rem; }
+.stats b{ display:block; font-size:1.7rem; font-variant-numeric:tabular-nums; letter-spacing:-.02em;
+ line-height:1.1; }
+.stats span{ display:block; font-size:.8rem; color:var(--dim); margin-top:.15rem; }
+
+section{ padding:3rem 0 0; border-top:1px solid var(--rule); margin-top:3rem; }
+section:first-child{ border-top:0; }
+.num{ font-size:.72rem; color:var(--paper); background:var(--accent); width:1.5rem; height:1.5rem;
+ border-radius:50%; display:inline-grid; place-items:center; flex:0 0 auto; font-weight:650;
+ font-variant-numeric:tabular-nums; }
+.lede{ font-size:1.06rem; }
+
+.spec{ margin:1.5rem 0; }
+.win{ position:relative; width:100%; padding-top:var(--ar); overflow:hidden; background:#fdfaf4;
+ border:1px solid var(--rule); border-radius:5px; }
+@media (prefers-color-scheme: dark){ .win{ background:#f4efe6; } }
+.print{ position:absolute; display:block; max-width:none; }
+.ov{ position:absolute; inset:0; width:100%; height:100%; }
+figcaption{ font-size:.8rem; color:var(--dim); margin-top:.5rem; max-width:64ch; }
+.two{ display:grid; grid-template-columns:repeat(auto-fit,minmax(15rem,1fr)); gap:1.25rem; }
+.two .spec{ margin:0; }
+
+.opt{ border:1px solid var(--rule); border-radius:7px; overflow:hidden; margin:1.5rem 0 0;
+ background:var(--card); box-shadow:var(--shadow); }
+.opt-h{ padding:1rem 1.15rem; display:flex; flex-wrap:wrap; gap:.2rem 1rem; align-items:baseline;
+ border-bottom:1px solid var(--rule); }
+.tag{ margin:0; font-size:.78rem; color:var(--dim); letter-spacing:.02em; }
+.opt .spec{ margin:0; }
+.opt .win{ border:0; border-radius:0; border-bottom:1px solid var(--rule); }
+.cost{ display:grid; grid-template-columns:repeat(auto-fit,minmax(13rem,1fr)); }
+.cost>div{ padding:1rem 1.15rem; border-right:1px solid var(--rule); }
+.cost>div:last-child{ border-right:0; }
+.cost p{ margin:0; font-size:.9rem; }
+
+table.grid{ width:100%; border-collapse:collapse; margin:1.25rem 0 1.5rem; font-size:.88rem;
+ display:block; overflow-x:auto; }
+table.grid caption{ text-align:left; font-size:.82rem; color:var(--dim); padding-bottom:.55rem;
+ font-family:ui-sans-serif,system-ui,sans-serif; max-width:64ch; }
+.grid th{ text-align:left; font-size:.7rem; text-transform:uppercase; letter-spacing:.07em;
+ color:var(--dim); font-weight:650; padding:0 .7rem .45rem 0; border-bottom:1px solid var(--rule);
+ white-space:nowrap; }
+.grid td{ padding:.45rem .7rem .45rem 0; border-bottom:1px solid var(--rule); vertical-align:middle; }
+.grid .n{ text-align:right; font-variant-numeric:tabular-nums; white-space:nowrap; }
+.grid .k{ font-family:ui-monospace,Menlo,monospace; white-space:nowrap; }
+.bar{ width:38%; min-width:5rem; }
+.bar span{ display:block; height:.5rem; border-radius:2px; background:var(--accent); }
+
+.chip{ display:inline-block; font-size:.72rem; padding:.1rem .45rem; border-radius:99px;
+ margin:.1rem .25rem .1rem 0; border:1px solid var(--c); white-space:nowrap;
+ font-family:ui-sans-serif,system-ui,sans-serif; }
+.chip.on{ background:var(--c); color:#fff; font-weight:600; }
+.chip.off{ color:var(--dim); opacity:.75; }
+.sw{ display:inline-block; width:.7rem; height:.7rem; border-radius:2px; background:var(--c);
+ margin-right:.45rem; vertical-align:-1px; }
+.swn{ font-size:.88rem; }
+
+.note{ border-left:3px solid var(--accent); background:var(--tint); padding:1rem 1.15rem;
+ border-radius:0 5px 5px 0; margin:1.5rem 0 0; }
+.note p:last-child{ margin:0; }
+
+.pal{ display:grid; grid-template-columns:repeat(auto-fit,minmax(17rem,1fr)); gap:.15rem 1.5rem; }
+.pk{ display:grid; grid-template-columns:auto 6.5rem auto 1fr auto; gap:.6rem; align-items:center;
+ padding:.4rem 0; border-bottom:1px solid var(--rule); font-size:.85rem; }
+.pk b{ font-family:ui-sans-serif,system-ui,sans-serif; font-weight:600; }
+.chipL{ width:1.4rem; height:1.4rem; border-radius:3px; background:var(--c); }
+.dashline{ width:100%; height:6px; }
+.pk .dim{ font-size:.78rem; font-variant-numeric:tabular-nums; }
+
+/* An earlier answer, or an option left off: the claim in the term, the reason in
+ the definition. A list, not a table — these are read, not compared. */
+.prior{ margin:1.25rem 0 0; max-width:64ch; }
+.prior dt{ font-family:ui-sans-serif,"Helvetica Neue",Arial,system-ui,sans-serif; font-size:.92rem;
+ font-weight:650; margin-top:1.1rem; }
+.prior dt:first-child{ margin-top:0; }
+.prior dd{ margin:.35rem 0 0; padding-left:1rem; border-left:2px solid var(--rule);
+ font-size:.94rem; color:var(--ink); }
+
+.wch{ margin:1.25rem 0 0; padding-left:1.15rem; max-width:64ch; }
+.wch li{ margin-bottom:.7rem; }
+
+footer{ margin-top:3rem; padding-top:1.5rem; padding-bottom:4rem; border-top:1px solid var(--rule); }
+footer p{ font-size:.85rem; color:var(--dim); }
+footer strong{ color:var(--ink); }
+@media (max-width:34rem){ .cost>div{ border-right:0; border-bottom:1px solid var(--rule); } }
+`;
+
+// ──────────────────────────────────────────────────────────────── main ──────
+
+if (process.argv.includes("--extract")) await extract();
+render();
diff --git a/scripts/build-palette-options.mjs b/scripts/build-palette-options.mjs
new file mode 100644
index 0000000..c42ecd4
--- /dev/null
+++ b/scripts/build-palette-options.mjs
@@ -0,0 +1,1000 @@
+#!/usr/bin/env node
+/**
+ * Builds `docs/design/tajweed-colours.html` — the options page for the decision
+ * "how much of the tajweed colouring can a reader change?".
+ *
+ * Sibling of `scripts/build-mark-options.mjs`, deliberately: the two pages are
+ * about the same seven colours from two directions (how *finely* they are
+ * painted, and how *fixed* they are), a reader will very likely arrive at one
+ * from the other, and two option pages that do not look like siblings read as
+ * two projects. It shares that script's stylesheet and its specimen mechanism.
+ *
+ * Everything it draws comes from committed bytes and is recomputed on every
+ * build — there is no extract step and no cache:
+ *
+ * the palette apps/web/src/styles/tokens.css (so it cannot drift)
+ * the seven families packages/core/src/skins.ts (label, mark, salience)
+ * the eighteen rules .../skins/hafs-kfqc/tajweed/rules.json
+ * what each rule costs .../skins/hafs-kfqc/tajweed/*.json (all 114 shards)
+ * the picture docs/design/mark-granularity.data.json + page 2's print
+ *
+ * The alternative palettes below are the only invented numbers on the page, and
+ * they are invented on purpose: an option about recolouring cannot be judged
+ * from a paragraph saying recolouring is possible. They are labelled as
+ * illustrations wherever they appear.
+ *
+ * Run: `node scripts/build-palette-options.mjs`
+ * `node scripts/build-palette-options.mjs --artifact` (self-contained copy)
+ */
+import { existsSync, readFileSync, readdirSync, writeFileSync } from "node:fs";
+import { basename, join } from "node:path";
+
+const ROOT = new URL("..", import.meta.url).pathname;
+const DATA = join(ROOT, "docs/design/mark-granularity.data.json");
+const OUT = join(ROOT, "docs/design/tajweed-colours.html");
+const OUT_ARTIFACT = join(ROOT, "docs/design/tajweed-colours.artifact.html");
+const TAJWEED = join(ROOT, "apps/web/public/assets/skins/hafs-kfqc/tajweed");
+const ARTIFACT = process.argv.includes("--artifact");
+
+// ─────────────────────────────────────────────────────── what core paints ────
+
+/** The seven families, read out of core so the labels and marks cannot drift. */
+function families() {
+ const src = readFileSync(join(ROOT, "packages/core/src/skins.ts"), "utf8");
+ const re = /\{ id: "([a-z-]+)", label: "([^"]+)", latin: "([^"]+)", mark: "([^"]+)", salience: (\d+) \}/g;
+ const out = [...src.matchAll(re)].map((m) => ({
+ id: m[1],
+ label: m[2],
+ latin: m[3],
+ mark: m[4],
+ salience: Number(m[5]),
+ }));
+ if (out.length === 0) {
+ console.error("could not read TAJWEED_RULES out of packages/core/src/skins.ts");
+ process.exit(1);
+ }
+ return out;
+}
+
+/** Pull the tajweed palette out of tokens.css, so the picture cannot drift from
+ * the app's own colours by being retyped here. */
+function palette() {
+ const css = readFileSync(join(ROOT, "apps/web/src/styles/tokens.css"), "utf8");
+ const grab = (re) => {
+ const out = {};
+ for (const m of css.matchAll(re)) out[m[1]] = m[2].trim();
+ return out;
+ };
+ const fill = grab(/--tj-((?!dash|wash|stroke)[a-z-]+):\s*([^;]+);/g);
+ const dash = grab(/--tj-dash-([a-z-]+):\s*([^;]+);/g);
+ const one = (name) => {
+ const m = css.match(new RegExp(`--${name}:\\s*([^;]+);`));
+ return m ? m[1].trim() : null;
+ };
+ return { fill, dash, wash: one("tj-wash"), stroke: one("tj-stroke") };
+}
+
+// ──────────────────────────────────────────── what the shards actually say ────
+
+/**
+ * Every rule the shipped shards use, with what it would cost a reader to be
+ * given a colour picker for it. `ayahs` is where the rule occurs; `shown` is
+ * where its family also won the verse's single colour, which is the only place
+ * a per-rule colour could possibly be seen at today's granularity.
+ */
+function ruleStats(fams) {
+ const vocab = JSON.parse(readFileSync(join(TAJWEED, "rules.json"), "utf8"));
+ const familyOf = new Map(vocab.rules.map((r) => [r.id, r.family]));
+ const salience = new Map(fams.map((f) => [f.id, f.salience]));
+
+ const occ = new Map();
+ const ayahsWith = new Map();
+ const shown = new Map();
+ // Verses where the winning family is carried by more than one distinct rule —
+ // the verses at which "which of the eighteen colours does this wash take?"
+ // has no answer that is not arbitrary.
+ let ambiguous = 0;
+ let total = 0;
+
+ for (const name of readdirSync(TAJWEED)) {
+ if (!/^\d+\.json$/.test(name)) continue;
+ const shard = JSON.parse(readFileSync(join(TAJWEED, name), "utf8"));
+ for (const entry of Object.values(shard)) {
+ total += 1;
+ const ids = Object.keys(entry);
+ const lead = ids
+ .map((id) => familyOf.get(id))
+ .reduce((a, b) => (salience.get(b) > salience.get(a) ? b : a));
+ let leadRules = 0;
+ for (const [id, spans] of Object.entries(entry)) {
+ occ.set(id, (occ.get(id) ?? 0) + spans.length / 2);
+ ayahsWith.set(id, (ayahsWith.get(id) ?? 0) + 1);
+ if (familyOf.get(id) === lead) {
+ shown.set(id, (shown.get(id) ?? 0) + 1);
+ leadRules += 1;
+ }
+ }
+ if (leadRules > 1) ambiguous += 1;
+ }
+ }
+
+ const rules = vocab.rules
+ .map((r) => ({
+ id: r.id,
+ family: r.family,
+ occ: occ.get(r.id) ?? 0,
+ ayahs: ayahsWith.get(r.id) ?? 0,
+ shown: shown.get(r.id) ?? 0,
+ }))
+ .sort((a, b) => b.ayahs - a.ayahs);
+
+ return { source: vocab.source, rules, ayahs: total, ambiguous, familyOf };
+}
+
+// ────────────────────────────────────────────── colour, as arithmetic ────────
+
+function hexToHsl(hex) {
+ const n = parseInt(hex.replace("#", ""), 16);
+ const r = ((n >> 16) & 255) / 255;
+ const g = ((n >> 8) & 255) / 255;
+ const b = (n & 255) / 255;
+ const max = Math.max(r, g, b);
+ const min = Math.min(r, g, b);
+ const l = (max + min) / 2;
+ const d = max - min;
+ if (d === 0) return [0, 0, l * 100];
+ const s = d / (1 - Math.abs(2 * l - 1));
+ let h;
+ if (max === r) h = ((g - b) / d) % 6;
+ else if (max === g) h = (b - r) / d + 2;
+ else h = (r - g) / d + 4;
+ return [((h * 60) + 360) % 360, s * 100, l * 100];
+}
+
+function hslToHex(h, s, l) {
+ h = ((h % 360) + 360) % 360;
+ s = Math.min(100, Math.max(0, s)) / 100;
+ l = Math.min(100, Math.max(0, l)) / 100;
+ const c = (1 - Math.abs(2 * l - 1)) * s;
+ const x = c * (1 - Math.abs(((h / 60) % 2) - 1));
+ const m = l - c / 2;
+ const [r, g, b] =
+ h < 60 ? [c, x, 0]
+ : h < 120 ? [x, c, 0]
+ : h < 180 ? [0, c, x]
+ : h < 240 ? [0, x, c]
+ : h < 300 ? [x, 0, c]
+ : [c, 0, x];
+ const to = (v) => Math.round((v + m) * 255).toString(16).padStart(2, "0");
+ return `#${to(r)}${to(g)}${to(b)}`;
+}
+
+/** Relative luminance and the WCAG contrast ratio, for the honesty column. */
+function luminance(hex) {
+ const n = parseInt(hex.replace("#", ""), 16);
+ const ch = [(n >> 16) & 255, (n >> 8) & 255, n & 255].map((v) => {
+ const s = v / 255;
+ return s <= 0.03928 ? s / 12.92 : ((s + 0.055) / 1.055) ** 2.4;
+ });
+ return 0.2126 * ch[0] + 0.7152 * ch[1] + 0.0722 * ch[2];
+}
+const contrast = (a, b) => {
+ const [x, y] = [luminance(a), luminance(b)].sort((p, q) => q - p);
+ return (x + 0.05) / (y + 0.05);
+};
+/** How far apart two colours are, as a plain distance in the HSL cylinder.
+ * Crude on purpose — it is used only to rank pairs, never to certify one. */
+function apart(a, b) {
+ const [h1, s1, l1] = hexToHsl(a);
+ const [h2, s2, l2] = hexToHsl(b);
+ const dh = Math.min(Math.abs(h1 - h2), 360 - Math.abs(h1 - h2)) / 180;
+ return Math.hypot(dh * 60, (s1 - s2) / 2, l1 - l2);
+}
+
+/**
+ * Option C at its best honest version: eighteen colours, each family's hue
+ * fanned out in lightness and a little in hue, widest fan to the family with
+ * the most rules. Built rather than hand-picked so nobody can say the argument
+ * was won by choosing bad colours — this is what a careful person would produce.
+ */
+function fanned(pal, stats, fams) {
+ const byFamily = new Map(fams.map((f) => [f.id, []]));
+ for (const r of stats.rules) byFamily.get(r.family)?.push(r);
+ const out = {};
+ for (const [family, rules] of byFamily) {
+ const [h, s, l] = hexToHsl(pal.fill[family]);
+ const n = rules.length;
+ rules.forEach((r, i) => {
+ if (n === 1) {
+ out[r.id] = pal.fill[family];
+ return;
+ }
+ const t = i / (n - 1) - 0.5; // −0.5 … +0.5, commonest rule keeps the base end
+ out[r.id] = hslToHex(h + t * 26, s - Math.abs(t) * 14, l + t * 30);
+ });
+ }
+ return out;
+}
+
+// ───────────────────────────────────────────── the illustrative schemes ──────
+
+/**
+ * Two whole palettes a reader might be offered under option D, and one of them
+ * doubles as option B's "the reader changed things" picture. Neither is
+ * proposed here — they exist so the options can be looked at rather than read.
+ *
+ * `print` follows the convention the colour-coded printed mus'hafs settled on
+ * — red for the elongations, green for the nasal sounds, light blue for the
+ * echoing letters, grey for the letters that are written and not said. Those
+ * editions have no colour for idghām or for the joining hamza, because they do
+ * not mark them; the two here are ours, kept quiet so they read as extra.
+ */
+const SCHEMES = [
+ {
+ id: "print",
+ name: "Like a printed colour-coded mus'haf",
+ note: "Red elongations, green nasal sounds, blue echoing letters, grey silent letters.",
+ fill: {
+ madd: "#c62828",
+ "madd-lazim": "#7f1d1d",
+ ghunnah: "#2e7d32",
+ qalqalah: "#4fa3d1",
+ silent: "#9e9e9e",
+ idgham: "#7b5aa6",
+ wasl: "#b0a48f",
+ },
+ },
+ {
+ id: "contrast",
+ name: "Darker, for a bright room",
+ note: "The same seven meanings, pushed deeper so they hold up on a phone in sunlight.",
+ fill: {
+ madd: "#a83200",
+ "madd-lazim": "#5c1500",
+ ghunnah: "#00625a",
+ qalqalah: "#00457a",
+ silent: "#3d352c",
+ idgham: "#8e2f6b",
+ wasl: "#6a5f50",
+ },
+ },
+];
+
+// ───────────────────────────────────────────────────────────── render ────────
+
+const esc = (s) =>
+ String(s).replace(/&/g, "&").replace(/ /g, ">").replace(/"/g, """);
+const pct = (n, d) => `${((n / d) * 100).toFixed(2)}%`;
+const pct1 = (n, d) => `${((n / d) * 100).toFixed(1)}%`;
+const num = (n) => n.toLocaleString("en");
+
+function render() {
+ if (!existsSync(DATA)) {
+ console.error(`missing ${DATA} — build the mark-granularity page first`);
+ process.exit(1);
+ }
+ const fams = families();
+ const pal = palette();
+ const stats = ruleStats(fams);
+ const data = JSON.parse(readFileSync(DATA, "utf8"));
+ const c = data.corpus;
+ const fan = fanned(pal, stats, fams);
+
+ const FAM = new Map(fams.map((f) => [f.id, f]));
+ const ORDER = [...fams].sort((a, b) => a.salience - b.salience).map((f) => f.id);
+ const label = (id) => FAM.get(id)?.latin ?? id;
+
+ const manifest = JSON.parse(readFileSync(join(ROOT, "apps/web/public/assets/manifest.json"), "utf8"));
+ const viewBox = manifest.viewBoxOverrides?.[String(data.page)] ?? manifest.viewBox;
+ const print = `../../apps/web/public/assets/pages/hafs-kfqc/${data.page}.svg`;
+ const printDefs = ARTIFACT
+ ? `${
+ readFileSync(join(ROOT, `apps/web/public/assets/pages/hafs-kfqc/${data.page}.svg`), "utf8")
+ .replace(/^[\s\S]*?]*>/, "")
+ .replace(/<\/svg>\s*$/, "")
+ } `
+ : "";
+
+ // ── the pictures ───────────────────────────────────────────────────────────
+
+ const washAttrs = (colour, family) =>
+ `fill="${colour}" fill-opacity="${pal.wash}" stroke="${colour}" ` +
+ `stroke-width="${pal.stroke}" stroke-dasharray="${pal.dash[family]}" ` +
+ `stroke-linejoin="round" vector-effect="non-scaling-stroke"`;
+
+ /** The page as the app draws it, under whatever palette is handed in. */
+ const bandWith = (fill) =>
+ data.ayahs
+ .filter((a) => a.poly)
+ .map((a) => ` `)
+ .join("");
+
+ /** Option C on the page: each verse's one wash takes the colour of one *rule*
+ * inside the winning family — the commonest, because nothing says otherwise. */
+ const bandPerRule = () => {
+ let arbitrary = 0;
+ const paths = [];
+ for (const a of data.ayahs) {
+ if (!a.poly) continue;
+ const counts = new Map();
+ for (const ann of a.anns) {
+ if (ann.family !== a.lead) continue;
+ counts.set(ann.rule, (counts.get(ann.rule) ?? 0) + 1);
+ }
+ if (counts.size > 1) arbitrary += 1;
+ const winner = [...counts.entries()].sort((x, y) => y[1] - x[1])[0]?.[0];
+ const colour = (winner && fan[winner]) || pal.fill[a.lead];
+ paths.push(` `);
+ }
+ return { svg: paths.join(""), arbitrary };
+ };
+
+ /** A reader who set two families to the same colour. The point of the picture
+ * is what still separates them: the outline pattern, which is not editable. */
+ const bandCollided = () => {
+ const collided = { ...pal.fill, ghunnah: pal.fill.madd };
+ return bandWith(collided);
+ };
+
+ const cropped = (crop) => crop;
+ const specimen = (layer, { crop = null, label: cap = "" } = {}) => {
+ const [vx, vy, vw, vh] = (crop ?? viewBox).split(/\s+/).map(Number);
+ const [, , pw, ph] = viewBox.split(/\s+/).map(Number);
+ const pc = (n) => `${(n * 100).toFixed(4)}%`;
+ const inner = ARTIFACT ? ` ` : "";
+ return `
+
+ ${ARTIFACT ? "" : `
`}
+
${inner}${layer}
+
+ ${cap ? `${cap} ` : ""}
+ `;
+ };
+
+ /** The three-line band the option cards are cropped to: 2:3 and its neighbours. */
+ const BAND = "6 68 228 70";
+
+ // ── the legends ────────────────────────────────────────────────────────────
+
+ const keyRow = (id, colour, name, right) =>
+ `
+
+ ${esc(name)}
+ ${esc(FAM.get(id)?.mark ?? "")}
+
+ ${right}
+
`;
+
+ const todayKey = ORDER.map((id) =>
+ keyRow(id, pal.fill[id], label(id), `${pct1((c.wins[id] ?? 0) + (c.invisible[id] ?? 0), c.ayahs)} of verses`),
+ ).join("");
+
+ const schemeKey = (scheme) =>
+ ORDER.map((id) => ` `).join("");
+
+ // ── the eighteen, and what a picker for each would buy ─────────────────────
+
+ const ruleRows = stats.rules
+ .map(
+ (r) => `
+ ${esc(r.id.replace(/_/g, " "))}
+ ${esc(label(r.family))}
+ ${num(r.occ)}
+ ${num(r.ayahs)}
+
+ ${pct1(r.shown, r.ayahs)}
+ `,
+ )
+ .join("\n");
+
+ // The pair of today's seven that sit closest together, stated rather than
+ // claimed — it is the number that says how much headroom a fan of eighteen
+ // has, which is the whole of option C's problem.
+ const pairs = [];
+ for (let i = 0; i < ORDER.length; i += 1) {
+ for (let j = i + 1; j < ORDER.length; j += 1) {
+ pairs.push({ a: ORDER[i], b: ORDER[j], d: apart(pal.fill[ORDER[i]], pal.fill[ORDER[j]]) });
+ }
+ }
+ pairs.sort((x, y) => x.d - y.d);
+ const tightestToday = pairs[0];
+
+ const fanPairs = [];
+ const fanIds = stats.rules.map((r) => r.id);
+ for (let i = 0; i < fanIds.length; i += 1) {
+ for (let j = i + 1; j < fanIds.length; j += 1) {
+ fanPairs.push({ a: fanIds[i], b: fanIds[j], d: apart(fan[fanIds[i]], fan[fanIds[j]]) });
+ }
+ }
+ fanPairs.sort((x, y) => x.d - y.d);
+ const tightestFan = fanPairs[0];
+ const tighterThanToday = fanPairs.filter((p) => p.d < tightestToday.d).length;
+
+ const paperContrast = ORDER.map((id) => ({ id, r: contrast(pal.fill[id], "#fdfaf4") })).sort(
+ (a, b) => a.r - b.r,
+ );
+
+ const perRule = bandPerRule();
+ const pageRules = new Set(data.ayahs.flatMap((a) => a.anns.map((x) => x.rule))).size;
+
+ const fanChips = stats.rules
+ .map(
+ (r) =>
+ `${esc(
+ r.id.replace(/_/g, " "),
+ )} `,
+ )
+ .join("");
+
+ // The checked-in copy is a whole document, because it is read from `file://`
+ // and a fragment renders there in quirks mode. The publishable copy is the
+ // body only: the host wraps it in its own skeleton, and a second inside
+ // that one is discarded along with whatever it was carrying.
+ const head = ARTIFACT
+ ? `Whose colours are they? — can a reader recolour Hifth's tajweed marks
+`
+ : `
+
+
+
+Whose colours are they? — can a reader recolour Hifth's tajweed marks
+
+
+
+
+`;
+
+ const html = `${head}
+${printDefs}
+
+ Hifth · a decision, drawn on paper
+ Whose colours are they?
+
+ Hifth tints a verse to flag a recitation rule inside it, and it uses seven colours it chose
+ itself. A reader who learned from a colour-coded printed mus'haf learned different ones. This
+ page asks whether a reader should be able to change ours — and, if so, how far down that goes:
+ the seven groups the app shows, or all
+ ${stats.rules.length} rules the data underneath actually distinguishes.
+
+
+
7 colours on screen today, fixed
+
${stats.rules.length} rules the data tells apart
+
${pct(c.discarded, c.anns)} of those rules are invisible at the size we colour
+
+
+
Four words, before we start
+
+ A tajweed rule tells a reciter to do something at a particular spot — hold a
+ vowel, hum through a letter, skip one. A madd is a held vowel; a
+ ghunnah is a hum through the nose; a qalqalah is a slight
+ echo on a stopped letter. Hifth sorts every rule into seven groups and gives
+ each group a colour, an outline pattern and a small Arabic letter, so the colour is never
+ carrying the meaning on its own.
+
+
+
+
+
+
+
+ 1 What is being decided?
+
+ Whether a reader can change the tajweed colours, and how far down the change reaches.
+
+
+ Four answers, drawn side by side further down. A : leave them fixed.
+ B : a reader recolours the seven groups. C : a reader recolours
+ all ${stats.rules.length} rules. D : no picker at all — a short list of whole
+ ready-made schemes to choose between.
+
+
+
+
+ 2 Why is this being asked now?
+
+ Because the app only just started knowing which rule it is looking at. Until this week the
+ colouring data was stored as the seven groups and the finer names were thrown away when it was
+ built — an ikhfa and an iqlab were the same thing by the time anything could
+ ask. They are now kept, all ${stats.rules.length} of them, which cost
+ 17.5% more to download and bought exactly one thing: the question on this page
+ became answerable in more than one way.
+
+
+ And because a reader arriving from a printed colour-coded mus'haf arrives with colours already
+ in their head. Ours are not wrong, but they are ours.
+
+
+
+
+ 3 What happens if nobody decides?
+
+ Nothing breaks. Option A is what the app does today: seven colours, chosen once, the same for
+ everyone. Nothing else is waiting behind this question and it can sit open indefinitely.
+
+
+ The cost is that a reader who finds our green unreadable, or who knows red as the elongation
+ colour and meets orange, has nowhere to go but switching the colouring off entirely — which is
+ the one control that does exist today, and is a blunt answer to a small complaint.
+
+
+
+
+ 4 What colours does the app use today, and where did they come from?
+
+ Seven, drawn from a palette designed to stay distinguishable to readers with the common kinds of
+ colour blindness. Each group also gets its own outline pattern and its own small Arabic letter,
+ so nothing on screen depends on telling two hues apart. Here they are on a real page — three
+ lines of the second page of the mus'haf, at about the size a phone shows them.
+
+ ${specimen(bandWith(pal.fill), { crop: BAND, label: "What the app draws today. One tint per verse, in the rarest kind of rule that verse carries." })}
+ ${todayKey}
+
+ The right-hand figure is how many verses in the whole mus'haf carry that kind of rule at all —
+ not how many show it. Most of them show nothing, which is the subject of a
+ separate question .
+
+
+ How each colour stands against the paper. Anything under 3 is a colour that has to lean on its outline pattern to be found, which is exactly why the outline patterns exist.
+ group contrast against the page
+
+${paperContrast
+ .map(
+ (p) => `${esc(label(p.id))}
+ ${p.r.toFixed(2)}
+ `,
+ )
+ .join("\n")}
+
+
+
+
+
+ 5 If a reader picks two colours the same, does the page break?
+
+ No — and this is the reason a colour picker is safe to offer at all.
+
+
+ Below is the same three lines with two different kinds of rule set to the identical colour, which
+ is the worst thing a reader could do with a picker. The verses are still told apart, because the
+ outline pattern is not part of what a reader would be changing: one group is drawn with a long
+ dash, the other with a fine dot.
+
+ ${specimen(bandCollided(), { crop: BAND, label: "Two groups, one colour, still separable. The outline pattern and the small Arabic letter stay fixed under every option on this page." })}
+
+
+ So the constraint is narrow. Whatever is offered, the outline patterns and the
+ letters stay ours. A reader is choosing hues, not choosing whether the page remains readable
+ without them.
+
+
+
+
+
+ 6 What do printed mus'hafs and other apps do?
+
+ We looked. The printed colour-coded mus'hafs — the Damascus edition most people
+ mean by the term, and the several editions that followed it — settle on a small number of
+ colours and hold them fixed: red for the elongations, green for the nasal sounds, blue for the
+ echoing letters, grey for letters written and not pronounced. One publisher describes covering
+ 28 rules with three colour families; others run to about seven. In every case the reader gets a
+ legend at the foot of the page, not a choice.
+
+
+ Among apps, the pattern we found is a switch , not a palette: the colouring is turned on
+ or off in settings, and the colours themselves are the publisher's. We did not find a mus'haf
+ app that lets a reader change which colour means which rule. That is worth stating as what it
+ is — an absence in what we searched, not proof that none exists.
+
+
+ Printed, fixed, and explained at the foot of every page.
+
+ The colour-coded print tradition is old enough to be a convention, and the convention is that
+ the reader is taught the colours rather than asked for them. It is the strongest argument for
+ option D over B: a scheme is a thing you can learn, a hue you picked yourself is not.
+ Sources:
+ Mushaf al-Tajweed, Dar al-Maarifah ·
+ Colour-coded Qur'an, seven colours
+
+
+ In apps, the control is a toggle.
+
+ Tajweed colours are switched on in settings and that is the whole of it; where a reader can
+ interact with a colour, it is to ask what the rule means, not to change it.
+ Sources:
+ Muslim Pro — turning tajweed colours on ·
+ Greentech Apps — tajweed colour code ·
+ quran_android — colour-coded tajweed support
+
+
+ Where the idea of an editable palette actually comes from.
+
+ Not from mus'hafs. From code editors and reading apps, where a colour theme is expected to be
+ the reader's and shipping a few good ones is standard. That is a real precedent, but it is a
+ precedent for schemes — nobody recolours a syntax highlighter one token type at a
+ time either.
+
+
+
+
+
+ 7 What have we already decided that ties our hands?
+
+ The app colours a whole verse at a time — and that question is still open.
+
+ A verse carries ${c.meanFamilies.toFixed(1)} different kinds of rule on
+ average and gets one colour, so ${pct(c.discarded, c.anns)} of everything we
+ know is already invisible. This is the constraint that decides between B and C below, and it
+ is not settled: it has its own page .
+
+ A reader can already turn the colouring off completely.
+
+ That control exists and stays. Everything here is about what happens when it is on.
+
+ Colour is never the only carrier.
+
+ Every group has an outline pattern and an Arabic letter as well as a hue, so a reader who
+ cannot separate two colours has two other ways to. Section 5 is what that buys.
+
+
+
+
+
+ 8 How much would a reader actually see change?
+
+ For the seven groups: all of it. For the ${stats.rules.length} rules: almost none of it, today.
+
+
+ A colour can only be seen where it is painted, and the app paints one tint per verse in whichever
+ group is rarest. So a colour given to a single rule shows up only in the verses where that rule's
+ group won — the last column below. Change the colour of the commonest elongation and
+ ${pct1(stats.rules.find((r) => r.id === "madd_2").shown, stats.rules.find((r) => r.id === "madd_2").ayahs)}
+ of the verses that contain it would look any different.
+
+
+ All ${stats.rules.length} rules in the shipped data, commonest first. The swatches are option C's colours, built by fanning each group's hue — see section 11. “Where it could show” is the share of that rule's verses in which its group also won the verse's one tint.
+ rule group places verses where it could show
+
+${ruleRows}
+
+
+
+
+ And ${num(stats.ambiguous)} verses have no answer at all. In
+ ${pct1(stats.ambiguous, stats.ayahs)} of the ${num(stats.ayahs)} coloured verses, the winning
+ group is carried by more than one rule at once — two kinds of elongation in the same verse, say.
+ There is one tint to give and two colours that want it, and nothing in the data says which. At
+ verse size, ${stats.rules.length} colours is not a finer picture; it is the same picture with a
+ coin toss in it.
+
+
+
+
+
+ 9 The options, drawn
+
+ All four on the same three lines, so the comparison is by eye rather than by adjective.
+
+
+
+
A · Leave the colours fixed what the app does today
+ ${specimen(bandWith(pal.fill), { crop: BAND })}
+
+
What a reader gets One set of colours, the same on every device, chosen to survive colour blindness. A legend that means the same thing to two people talking about it.
+
What it costs A reader who finds a colour unreadable, or who learned different ones, can only switch the whole thing off.
+
What it costs us Nothing. No new screen, no stored preference, no way for a reader to make the page worse.
+
+
+
+
+
B · A reader recolours the seven groups seven colour pickers
+ ${specimen(bandWith(SCHEMES[0].fill), { crop: BAND, label: "The same three lines after a reader moved all seven towards the printed convention. Illustration — these are not proposed values." })}
+
+
What a reader gets Their own colours, at the only size the app actually paints. Someone who learned red elongations can have red elongations.
+
What it costs Seven pickers is a real screen to design, and a reader can produce a palette worse than the one they started from — recoverable, since section 5 shows the page still works, and a reset returns it.
+
What it costs us A settings surface, seven stored values, and the colours stop being something two people can assume they share.
+
+
+
+
+
C · A reader recolours all ${stats.rules.length} rules ${stats.rules.length} colour pickers
+ ${specimen(perRule.svg, { crop: BAND, label: `The same three lines with every rule given its own colour. ${perRule.arbitrary > 0 ? `On ${perRule.arbitrary} of these verses the tint had to be picked between two rules that both qualified.` : "Barely distinguishable from A, because there is still one tint per verse."}` })}
+
${fanChips}
+
+
What a reader gets In principle, the full grain of the data: an ikhfa told apart from an iqlab by colour.
+
What it costs ${stats.rules.length} colours do not fit. Fanning each group's hue out as far as it will honestly go still puts ${tighterThanToday} pairs closer together than the closest pair in today's seven. And at verse size most of them never paint at all — section 8.
+
What it costs us ${stats.rules.length} pickers, ${stats.rules.length} names to write in two languages, and a legend nobody can hold in their head.
+
+
+
+
+
D · Offer a few ready-made schemes no picker; a short list
+
+ ${specimen(bandWith(pal.fill), { crop: BAND, label: "As it ships." })}
+ ${SCHEMES.map((s) => specimen(bandWith(s.fill), { crop: BAND, label: `${esc(s.name)}. ${esc(s.note)} Illustration.` })).join("\n ")}
+
+
+
As it ships ${ORDER.map((id) => ` `).join("")}
+ ${SCHEMES.map((s) => `
${esc(s.name)} ${schemeKey(s)}
`).join("\n ")}
+
+
+
What a reader gets A choice that cannot go wrong, in one tap. Each scheme is designed as a whole, checked for colour blindness as a whole, and can be named — which means two people can still talk about it.
+
What it costs Not the colours a particular reader wanted, only the nearest of three or four. Somebody has to design each scheme and stand behind it.
+
What it costs us One stored value instead of seven, one screen with three rows on it, and no way for a reader to break their own page.
+
+
+
+
+
+ 10 What else could be considered, and why is it not here?
+
+ Let a reader choose which kinds of rule to show, rather than what colour they are.
+
+ Show only the elongations, say. This is a different and possibly better answer to the same
+ frustration, it needs no palette at all, and — unlike C — it gets more useful the more rules
+ the data distinguishes. It is left off because it is not a colour question, and because it
+ belongs with the question of how finely we paint rather than this one. It stays available
+ whichever of A, B, C or D wins.
+
+ One slider for how strong the colouring is, and nothing else.
+
+ Most complaints about a wash are that it is too loud or too faint, not that it is the wrong
+ hue. This is the cheapest thing on the page and it may well be the thing actually being asked
+ for. It is left off because it does not answer "whose colours are they" — but if the answer to
+ this page is A, it is the next thing to build.
+
+ Follow the printed convention exactly and stop.
+
+ Change our seven to the Damascus colours and offer nothing. It is a defensible answer and it
+ is not on the list because that convention has no colour for two of our seven groups, and
+ because it would trade a palette that survives colour blindness for one that was designed for
+ ink on paper.
+
+
+
+
+
+ 11 What would change the answer?
+
+
+ Colouring smaller than a whole verse. This is the big one. If the app starts
+ tinting the exact letter a rule lands on, ${pct(c.discarded, c.anns)} of the rules stop being
+ invisible, the ${num(stats.ambiguous)} undecidable verses in section 8 stop being undecidable,
+ and C goes from pointless to plausible in a single change. That question has
+ its own page and is still open; this one should probably not
+ be answered with C before it is answered.
+
+
+ A hafiz saying our green is not their green. One person reciting from a page
+ and naming a colour that reads wrong would settle B versus D faster than anything here.
+
+
+ A reader who cannot use the palette we chose. The current seven are picked to
+ survive the common kinds of colour blindness, but "common" is doing work in that sentence. One
+ report of a pair that genuinely cannot be separated turns B from a preference into an
+ accessibility fix — and then it should not wait behind anything.
+
+
+ Somebody wanting to share a scheme. If schemes turn out to be something a
+ teacher hands to a class, D grows a name-and-a-link and B does not scale to it at all.
+
+
+
+
+
+ 12 What is this page not settling?
+
+ How finely the app paints — that is the separate open question this page keeps pointing at.
+ Whether the colouring is on by default. What the ${stats.rules.length} rules should be
+ called in Arabic and English, which becomes necessary the moment anything shows them one
+ by one. Whether a reader can ask what a colour means by touching it. And nothing at all about
+ where the rule data came from or how good it is, which has its own record.
+
+
+
+
+ 13 So what should we build?
+
+ The real choice is between B and D . A needs no decision, and
+ C is the one option this page can argue against with a picture rather than an opinion.
+
+
+ The case against C is section 8 and section 9's third card together: at the size we paint,
+ ${stats.rules.length} colours mostly cannot be seen, on ${num(stats.ambiguous)} verses the app
+ would have to guess which one to use, and fanned as generously as they honestly can be they are
+ still ${tighterThanToday} pairs tighter than anything we ship today. That is not an argument
+ against ever telling ${stats.rules.length} rules apart — it is an argument that colour is the
+ wrong tool for it until we paint smaller than a verse.
+
+
+ Between B and D: B gives a reader exactly what they asked for and gives us seven ways for a page
+ to end up worse than it started. D gives a reader less, keeps the palette something designed
+ rather than assembled, and keeps it nameable — which matters more than it sounds, because a
+ colour scheme two people share is a thing they can talk about and a colour scheme one person
+ invented is not.
+
+
+
+
+
+
+
+ Where the pictures come from. Nothing here is a mock-up. The page is the real
+ mus'haf image the app ships and the tinted shapes are the same ones the app taps against. The
+ seven colours, their outline patterns and their Arabic letters are read out of the app's own
+ stylesheet and source when this page is built, so they cannot drift from what Hifth looks like.
+ Every count comes from the ${stats.rules.length} rules in the shipped data, recomputed on each
+ build. The alternative palettes in options B and D are drawn to make the options visible and are
+ labelled as illustrations wherever they appear — nothing on this page proposes them.
+
+
+ Built by scripts/build-palette-options.mjs — edit that, not this. The rule data is
+ ${esc(stats.source)}; the print is
+ assets/pages/hafs-kfqc/${data.page}.svg, outlined shapes only, no text.
+
+
+${ARTIFACT ? "" : "\n\n"}`;
+
+ const out = ARTIFACT ? OUT_ARTIFACT : OUT;
+ writeFileSync(out, html);
+ const kb = (Buffer.byteLength(html) / 1024).toFixed(1);
+ console.log(`${basename(out)} — ${kb} KB, ${stats.rules.length} rules, ${pageRules} of them on page ${data.page}`);
+ console.log(
+ ` ${num(stats.ambiguous)}/${num(stats.ayahs)} verses (${pct1(stats.ambiguous, stats.ayahs)}) have a winning family carried by more than one rule`,
+ );
+ console.log(
+ ` fanned to ${stats.rules.length}: ${tighterThanToday} pairs closer than today's tightest (${label(tightestToday.a)}/${label(tightestToday.b)}), worst ${tightestFan.a}/${tightestFan.b}`,
+ );
+}
+
+// ────────────────────────────────────────────────────────────── style ────────
+//
+// Shared with `build-mark-options.mjs` by being the same, on purpose: the two
+// pages are the same kind of document about the same seven colours, and a
+// reader crossing between them should not feel they changed project. The
+// additions at the end are the ones this page needs and that one does not.
+
+const STYLE = `
+:root{
+ --paper:#f4efe6; --ink:#26201a; --accent:#1f6f66;
+ --tint:#ede6da; --rule:#ddd2c2; --dim:#6f6559; --card:#fbf8f2;
+ --shadow:0 1px 0 rgba(38,32,26,.05);
+}
+@media (prefers-color-scheme: dark){
+ :root{ --paper:#191612; --ink:#ece4d8; --accent:#5fbfae; --tint:#221d18;
+ --rule:#3a322a; --dim:#9a8d7d; --card:#201b16; --shadow:none; }
+}
+:root[data-theme="dark"]{ --paper:#191612; --ink:#ece4d8; --accent:#5fbfae; --tint:#221d18;
+ --rule:#3a322a; --dim:#9a8d7d; --card:#201b16; --shadow:none; }
+:root[data-theme="light"]{ --paper:#f4efe6; --ink:#26201a; --accent:#1f6f66; --tint:#ede6da;
+ --rule:#ddd2c2; --dim:#6f6559; --card:#fbf8f2; --shadow:0 1px 0 rgba(38,32,26,.05); }
+
+body{ background:var(--paper); color:var(--ink); margin:0;
+ font:16px/1.65 "Iowan Old Style","Charter","Palatino Linotype",Palatino,Georgia,serif;
+ -webkit-text-size-adjust:100%; }
+main,.head,footer{ max-width:60rem; margin:0 auto; padding:0 1.5rem; }
+h1,h2,h3,h4,.eyebrow,.tag,.n,code,table,.stats b,figcaption{
+ font-family:ui-sans-serif,"Helvetica Neue",Arial,system-ui,sans-serif; }
+h1{ font-size:clamp(1.9rem,4.6vw,3rem); line-height:1.1; letter-spacing:-.02em;
+ margin:.2em 0 .5rem; text-wrap:balance; font-weight:650; }
+h2{ font-size:1.35rem; letter-spacing:-.01em; margin:0 0 .9rem; display:flex; gap:.7rem;
+ align-items:baseline; font-weight:650; }
+h3{ font-size:1.08rem; margin:0; font-weight:650; }
+h4{ font-size:.72rem; margin:0 0 .35rem; text-transform:uppercase; letter-spacing:.09em;
+ color:var(--dim); font-weight:650; }
+p{ margin:0 0 1rem; max-width:64ch; }
+code{ font-family:ui-monospace,SFMono-Regular,Menlo,monospace; font-size:.86em;
+ background:var(--tint); padding:.1em .35em; border-radius:3px; }
+strong{ font-weight:650; }
+.dim{ color:var(--dim); } .small{ font-size:.85rem; }
+a{ color:var(--accent); text-underline-offset:2px; }
+a:focus-visible{ outline:2px solid var(--accent); outline-offset:2px; border-radius:2px; }
+
+.head{ padding-top:3.5rem; padding-bottom:1rem; }
+.eyebrow{ font-size:.72rem; letter-spacing:.16em; text-transform:uppercase; color:var(--accent);
+ margin:0; font-weight:650; }
+.standfirst{ font-size:1.1rem; max-width:58ch; }
+.stats{ display:flex; flex-wrap:wrap; gap:1px; background:var(--rule); border:1px solid var(--rule);
+ border-radius:6px; overflow:hidden; margin:1.75rem 0 0; }
+.stats div{ flex:1 1 11rem; background:var(--card); padding:.9rem 1rem; }
+.stats b{ display:block; font-size:1.7rem; font-variant-numeric:tabular-nums; letter-spacing:-.02em;
+ line-height:1.1; }
+.stats span{ display:block; font-size:.8rem; color:var(--dim); margin-top:.15rem; }
+
+section{ padding:3rem 0 0; border-top:1px solid var(--rule); margin-top:3rem; }
+section:first-child{ border-top:0; }
+.num{ font-size:.72rem; color:var(--paper); background:var(--accent); width:1.5rem; height:1.5rem;
+ border-radius:50%; display:inline-grid; place-items:center; flex:0 0 auto; font-weight:650;
+ font-variant-numeric:tabular-nums; }
+.lede{ font-size:1.06rem; }
+
+.spec{ margin:1.5rem 0; }
+.win{ position:relative; width:100%; padding-top:var(--ar); overflow:hidden; background:#fdfaf4;
+ border:1px solid var(--rule); border-radius:5px; }
+@media (prefers-color-scheme: dark){ .win{ background:#f4efe6; } }
+.print{ position:absolute; display:block; max-width:none; }
+.ov{ position:absolute; inset:0; width:100%; height:100%; }
+figcaption{ font-size:.8rem; color:var(--dim); margin-top:.5rem; max-width:64ch; }
+.two{ display:grid; grid-template-columns:repeat(auto-fit,minmax(15rem,1fr)); gap:1.25rem; }
+.two .spec{ margin:0; }
+
+.opt{ border:1px solid var(--rule); border-radius:7px; overflow:hidden; margin:1.5rem 0 0;
+ background:var(--card); box-shadow:var(--shadow); }
+.opt-h{ padding:1rem 1.15rem; display:flex; flex-wrap:wrap; gap:.2rem 1rem; align-items:baseline;
+ border-bottom:1px solid var(--rule); }
+.tag{ margin:0; font-size:.78rem; color:var(--dim); letter-spacing:.02em; }
+.opt .spec{ margin:0; }
+.opt .win{ border:0; border-radius:0; border-bottom:1px solid var(--rule); }
+.opt .two{ padding:1.15rem; border-bottom:1px solid var(--rule); }
+.opt .two .win{ border:1px solid var(--rule); border-radius:4px; }
+.cost{ display:grid; grid-template-columns:repeat(auto-fit,minmax(13rem,1fr)); }
+.cost>div{ padding:1rem 1.15rem; border-right:1px solid var(--rule); }
+.cost>div:last-child{ border-right:0; }
+.cost p{ margin:0; font-size:.9rem; }
+
+table.grid{ width:100%; border-collapse:collapse; margin:1.25rem 0 1.5rem; font-size:.88rem;
+ display:block; overflow-x:auto; }
+table.grid caption{ text-align:left; font-size:.82rem; color:var(--dim); padding-bottom:.55rem;
+ font-family:ui-sans-serif,system-ui,sans-serif; max-width:64ch; }
+.grid th{ text-align:left; font-size:.7rem; text-transform:uppercase; letter-spacing:.07em;
+ color:var(--dim); font-weight:650; padding:0 .7rem .45rem 0; border-bottom:1px solid var(--rule);
+ white-space:nowrap; }
+.grid td{ padding:.45rem .7rem .45rem 0; border-bottom:1px solid var(--rule); vertical-align:middle; }
+.grid .n{ text-align:right; font-variant-numeric:tabular-nums; white-space:nowrap; }
+.bar{ width:26%; min-width:4rem; }
+.bar span{ display:block; height:.5rem; border-radius:2px; background:var(--accent); }
+
+.chip{ display:inline-block; font-size:.72rem; padding:.1rem .45rem; border-radius:99px;
+ margin:.1rem .25rem .1rem 0; border:1px solid var(--c); white-space:nowrap;
+ font-family:ui-sans-serif,system-ui,sans-serif; }
+.chip.off{ color:var(--dim); opacity:.85; }
+.sw{ display:inline-block; width:.7rem; height:.7rem; border-radius:2px; background:var(--c);
+ margin-right:.45rem; vertical-align:-1px; }
+.swn{ font-size:.88rem; }
+
+.note{ border-left:3px solid var(--accent); background:var(--tint); padding:1rem 1.15rem;
+ border-radius:0 5px 5px 0; margin:1.5rem 0 0; }
+.note p:last-child{ margin:0; }
+
+.pal{ display:grid; grid-template-columns:repeat(auto-fit,minmax(19rem,1fr)); gap:.15rem 1.5rem; }
+.pk{ display:grid; grid-template-columns:1.4rem 8rem 1.2rem 1fr auto; gap:.6rem; align-items:center;
+ padding:.4rem 0; border-bottom:1px solid var(--rule); font-size:.85rem; }
+.pk b{ font-family:ui-sans-serif,system-ui,sans-serif; font-weight:600; }
+.chipL{ width:1.4rem; height:1.4rem; border-radius:3px; background:var(--c); }
+.dashline{ width:100%; height:6px; }
+.pk .dim{ font-size:.78rem; font-variant-numeric:tabular-nums; }
+.pk .mk{ font-size:1rem; }
+
+/* Option C's eighteen, shown together at legend size — the collisions are the
+ argument, so they have to sit next to each other rather than in a table. */
+.pal-chips{ padding:1rem 1.15rem; border-bottom:1px solid var(--rule); }
+.pal-chips .chip{ border:0; font-weight:600; }
+
+.schemes{ padding:0 1.15rem 1.15rem; display:grid; gap:.5rem; }
+.schemes div{ display:flex; align-items:center; gap:.5rem; flex-wrap:wrap; }
+.schemes .swn{ min-width:16rem; color:var(--dim); }
+.schemes .sw{ width:1.35rem; height:1.35rem; margin:0; border-radius:3px; }
+
+/* An earlier answer, or an option left off: the claim in the term, the reason in
+ the definition. A list, not a table — these are read, not compared. */
+.prior{ margin:1.25rem 0 0; max-width:64ch; }
+.prior dt{ font-family:ui-sans-serif,"Helvetica Neue",Arial,system-ui,sans-serif; font-size:.92rem;
+ font-weight:650; margin-top:1.1rem; }
+.prior dt:first-child{ margin-top:0; }
+.prior dd{ margin:.35rem 0 0; padding-left:1rem; border-left:2px solid var(--rule);
+ font-size:.94rem; color:var(--ink); }
+.src{ display:block; margin-top:.5rem; font-size:.8rem; color:var(--dim); }
+
+.wch{ margin:1.25rem 0 0; padding-left:1.15rem; max-width:64ch; }
+.wch li{ margin-bottom:.7rem; }
+
+footer{ margin-top:3rem; padding-top:1.5rem; padding-bottom:4rem; border-top:1px solid var(--rule); }
+footer p{ font-size:.85rem; color:var(--dim); }
+footer strong{ color:var(--ink); }
+@media (max-width:34rem){ .cost>div{ border-right:0; border-bottom:1px solid var(--rule); }
+ .schemes .swn{ min-width:0; flex:1 0 100%; } }
+`;
+
+// ──────────────────────────────────────────────────────────────── main ───────
+
+render();
diff --git a/scripts/build-validation-guide.mjs b/scripts/build-validation-guide.mjs
index 0de7004..f3e0120 100644
--- a/scripts/build-validation-guide.mjs
+++ b/scripts/build-validation-guide.mjs
@@ -17,6 +17,13 @@
* served over a plain-http LAN preview to a phone that may be in airplane mode
* for the check it is describing.
*
+ * This is the *reading* surface: all the checks, none of them written to. The
+ * writing surface is `make session CHECK=` (scripts/session.mjs), which
+ * draws one check from the same renderer and banks what you do to a transcript.
+ * The split is deliberate — you browse what is outstanding far more often than
+ * you sit down to work one, and a page that opens a file on disk every time
+ * somebody scrolls past it is a page nobody leaves open.
+ *
* Usage:
* node scripts/build-validation-guide.mjs # write the file
* node scripts/build-validation-guide.mjs --serve # write it, then serve it on the LAN
@@ -24,7 +31,8 @@
import { writeFileSync, readFileSync, existsSync } from "node:fs";
import { createServer } from "node:http";
import { extname, join, normalize } from "node:path";
-import { readLedger, ledgerHash, readEvidence, GUIDE_PATH, ROOT } from "./validation-ledger.mjs";
+import { readLedger, ledgerHash, GUIDE_PATH, ROOT } from "./validation-ledger.mjs";
+import { card, CSS } from "./lib/validation-render.mjs";
/* ── rendering ─────────────────────────────────────────────────────────── */
@@ -52,12 +60,13 @@ function page(checks, hash) {
-${checks.map(card).join("\n")}
+${checks.map((c) => card(c)).join("\n")}
@@ -66,296 +75,13 @@ ${checks.map(card).join("\n")}
`;
}
-function card(check) {
- const rb = check.runbook ?? {};
- const done = check.status === "done";
- const blocked = (rb.needs ?? []).some((n) => /not runnable yet/i.test(n));
-
- // Steps a command has already discharged, on a real run with a real exit
- // code. Only `pass` strikes — a producer that could not reach its subject
- // (exit 3) has proved nothing, and the safeguard is that the step stays.
- const ran = check.evidence?.run ? readEvidence(check.id) : null;
- const struck = new Set(ran?.outcome === "pass" ? (check.evidence.covers ?? []) : []);
-
- return `
-
-
${
- done ? "done" : blocked ? "blocked" : "outstanding"
- }
-
${rich(check.title)}
-
${attr(check.id)}${
- (check.blocks ?? []).length ? ` · blocks ${check.blocks.map((b) => `${rich(b)} `).join(", ")}` : ""
- }${check.staleAfterDays ? ` · repeats every ${check.staleAfterDays} days` : ""}
-
-
- ${rich(check.why)}
- ${
- done
- ? `Verdict ${attr(check.verifiedOn ?? "")}: ${rich(check.result ?? "")}
`
- : ""
- }
-
- ${machine(check, ran, struck)}
- ${list("What you need", rb.needs)}
- ${
- (rb.setup ?? []).length
- ? `
- Setup — on the laptop
- ${rb.setup
- .map(
- (s) => `${rich(s.run)}
- ${s.expect ? `${rich(s.expect)}
` : ""}`,
- )
- .join("\n")}
- `
- : ""
- }
-
- ${
- (rb.steps ?? []).length
- ? `
- Steps — on the phone
-
- ${rb.steps
- .map((s, i) =>
- s.id && struck.has(s.id)
- ? // Struck, not deleted. The step is still the runbook's own account
- // of what this check is; hiding it would leave the person on the
- // phone unable to tell a discharged step from one nobody wrote.
- `
- ${rich(s.do)}
- Done by ${attr(check.evidence.run)} on ${attr(ran.ranAt.slice(0, 10))}. Skip it.
- `
- : `
- ${rich(s.do)}
- ${rich(s.expect)}
- ${shot(s.shot)}
- ${s.why ? `${rich(s.why)}
` : ""}
- `,
- )
- .join("\n ")}
-
- `
- : ""
- }
-
- ${list("Reading the result", rb.reading)}
-
-
- Record it
- ${rich(rb.record ?? `make record CHECK=${check.id} RESULT=''`)}
- Then do what it tunes:
- ${(check.tunes ?? []).map((t) => `${rich(t)} `).join("")}
- ${check.record ? `Written up in ${rich(check.record)}
` : ""}
-
- `;
-}
-
-/**
- * What a command already did, and — the part that matters — what it could not.
- *
- * This block sits above "What you need" because it changes how much of the card
- * is yours before you read any of it. The residue is rendered as prominently as
- * the discharge on purpose: the risk this feature introduces is a page that
- * looks mostly struck through and reads as "nearly automated", when what is
- * left is the whole reason the check exists.
- */
-function machine(check, ran, struck) {
- if (!check.evidence?.run) return "";
- const state = !ran ? "never-run" : ran.outcome;
- return `
- Already done for you
- ${rich(check.evidence.run)}
- ${
- ran
- ? `${attr(state)} · ${attr(ran.ranAt.slice(0, 10))} · ${attr(ran.commit ?? "?")} · ${attr(ran.on)} — ${
- struck.size ? `${struck.size} step(s) below are struck through` : "nothing struck through"
- }`
- : `Never run on this tree. Run make validate-auto on the laptop, then make guide — until then every step below is still yours.`
- }
- What it cannot do — still yours:
- ${(check.evidence.residue ?? []).map((r) => `${rich(r)} `).join("")}
- `;
-}
-
-/**
- * The picture of what the step's `expect` line describes.
- *
- * Emitted whether or not the file is on disk. A missing shot should look
- * broken: the alternative is that it quietly vanishes from the page and only
- * `gate:validation` ever knows, which is how a guide ends up promising a
- * picture in the terminal and showing none on the phone.
- */
-function shot(id) {
- if (!id) return "";
- return `
-
- from the build · a shape to recognise, not a result to match
- `;
-}
-
-function list(title, items) {
- if (!(items ?? []).length) return "";
- return `
- ${title}
- ${items.map((i) => `${rich(i)} `).join("")}
- `;
-}
-
-/* ── text ──────────────────────────────────────────────────────────────── */
-
-const attr = (s) =>
- String(s).replace(/&/g, "&").replace(//g, ">").replace(/"/g, """);
-
-/**
- * Escape, then honour the three bits of markup the ledger's prose actually
- * uses (**bold**, `code`, → arrows survive as-is), and isolate Arabic runs.
- *
- * The isolation is not cosmetic: these runbooks quote the app's own Arabic UI
- * strings inside English sentences, and without `` the bidi algorithm
- * drags neighbouring punctuation — the « » quotes, the trailing colon — to the
- * wrong end of the line, so the instruction names a button that appears to be
- * called something else.
- */
-// An Arabic run must start AND end on an Arabic character: pulling a trailing
-// ASCII period or colon inside the isolate flips it to the far side of the
-// phrase, which is exactly the mangling the isolate is here to prevent.
-const ARABIC_RUN =
- /[-ۿݐ-ݿ](?:[-ۿݐ-ݿ\s]*[-ۿݐ-ݿ])?/g;
-
-function rich(text) {
- return attr(text)
- .replace(/\*\*([^*]+)\*\*/g, "$1 ")
- .replace(/`([^`]+)`/g, "$1")
- .replace(ARABIC_RUN, (m) => `${m} `);
-}
-
-/* ── the look ──────────────────────────────────────────────────────────── */
-//
-// Deliberately not the app's paper-and-ink palette. This is a tool for the
-// person testing the product, and a tool that looks like the product is a tool
-// someone will eventually mistake for the product — in a screenshot, in a bug
-// report, in a share sheet. Night workshop: cold ground, one warm accent
-// (amber, the same wash the app puts on a selected ayah, so the through-line is
-// still there), hairline rules for structure and nothing else.
-
-const CSS = `
-:root {
- --ground: #0f1319; --raised: #161c25; --line: #263140;
- --text: #e6ebf2; --dim: #9aa7b8; --amber: #f0a65a; --green: #7fd4a0; --wait: #b6a4d8;
- --mono: ui-monospace, SFMono-Regular, Menlo, monospace;
-}
-* { box-sizing: border-box; }
-html { -webkit-text-size-adjust: 100%; }
-body {
- margin: 0; background: var(--ground); color: var(--text);
- font: 17px/1.55 ui-serif, Georgia, "Times New Roman", serif;
- padding: 0 16px env(safe-area-inset-bottom) 16px;
-}
-bdi { font-family: ui-sans-serif, system-ui, sans-serif; }
-b { color: #fff; font-weight: 600; }
-code { font: 0.85em/1.4 var(--mono); color: var(--amber); overflow-wrap: anywhere; }
-
-.top { max-width: 44rem; margin: 0 auto; padding: 40px 0 8px; }
-.kicker { margin: 0; font: 600 13px/1 var(--mono); letter-spacing: .18em;
- text-transform: uppercase; color: var(--amber); }
-h1 { margin: 8px 0 4px; font-size: 40px; line-height: 1; letter-spacing: -.02em; }
-.lede { margin: 0 0 18px; color: var(--dim); }
-.rule { margin: 0; padding: 14px 16px; border-left: 3px solid var(--amber);
- background: var(--raised); font-size: 15px; }
-.src { margin: 14px 0 0; font-size: 13px; color: var(--dim); }
-
-main { max-width: 44rem; margin: 0 auto; }
-.card { margin: 28px 0; padding: 20px 18px 6px; background: var(--raised);
- border: 1px solid var(--line); border-radius: 14px; }
-.card.is-done { opacity: .72; }
-.head h2 { margin: 10px 0 2px; font-size: 25px; line-height: 1.2; letter-spacing: -.01em; }
-.id { margin: 0 0 14px; font-size: 13px; color: var(--dim); }
-.badge { display: inline-block; padding: 3px 9px; border-radius: 999px;
- font: 600 11px/1.5 var(--mono); letter-spacing: .1em; text-transform: uppercase;
- color: var(--ground); background: var(--amber); }
-.badge.ok { background: var(--green); }
-.badge.wait { background: var(--wait); }
-.why { margin: 0 0 4px; color: var(--dim); font-size: 15.5px; }
-.verdict { margin: 12px 0 0; padding: 10px 12px; border-left: 3px solid var(--green);
- background: #131a17; font-size: 15px; }
-
-.block { margin: 22px 0; }
-.block h3 { margin: 0 0 10px; font: 600 12px/1 var(--mono); letter-spacing: .16em;
- text-transform: uppercase; color: var(--dim); }
-.bullets, .tunes { margin: 0; padding-left: 1.1em; }
-.bullets li, .tunes li { margin: 0 0 9px; }
-.tunes li { font-size: 15px; color: var(--dim); }
-.tunes-lead { margin: 16px 0 6px; font-size: 15px; }
-
-pre.cmd { margin: 0 0 10px; padding: 12px 14px; overflow-x: auto;
- background: #0a0d12; border: 1px solid var(--line); border-radius: 9px;
- font: 14px/1.5 var(--mono); color: var(--green); white-space: pre-wrap;
- overflow-wrap: anywhere; -webkit-user-select: all; user-select: all; }
-
-/* The expectation is the whole point of a step: what you should see if it is
- working. It gets its own slab so it cannot be skimmed past. */
-.expect { margin: 6px 0 0; padding: 9px 12px 9px 14px; border-left: 2px solid var(--line);
- background: #121820; color: var(--dim); font-size: 15px; border-radius: 0 8px 8px 0; }
-.expect::before { content: "expect "; font: 600 11px/1 var(--mono); letter-spacing: .14em;
- text-transform: uppercase; color: var(--amber); }
-
-/* And what the step buys. Quieter than the expectation on purpose — it is the
- line you read when you are tempted to skip the step, not on every pass. An
- expectation nobody can justify is one a tired reader waves through. */
-.why { margin: 8px 0 0; padding-left: 14px; color: var(--dim); font-size: 14px; line-height: 1.55; }
-.why::before { content: "why "; font: 600 11px/1 var(--mono); letter-spacing: .14em;
- text-transform: uppercase; color: var(--wait); }
-
-/* A description of a screen you have never seen cannot be checked against the
- screen. These come from e2e/shots.spec.ts against the real build — never a
- hand-crop, which would be a second copy of the UI, drifting silently. */
-figure.shot { margin: 10px 0 0; }
-figure.shot img { display: block; width: 100%; max-width: 300px; height: auto;
- border: 1px solid var(--line); border-radius: 10px; background: var(--ground); }
-figure.shot figcaption { margin-top: 6px; font: 500 10px/1.4 var(--mono);
- letter-spacing: .12em; text-transform: uppercase; color: var(--dim); opacity: .75; }
-
-ol.steps { margin: 0; padding-left: 1.4em; }
-ol.steps > li { margin: 0 0 18px; padding-left: 4px; }
-ol.steps > li::marker { color: var(--amber); font-family: var(--mono); font-size: 14px; }
-label.do { display: flex; gap: 12px; align-items: flex-start; min-height: 44px;
- cursor: pointer; -webkit-tap-highlight-color: transparent; }
-label.do input { flex: none; width: 24px; height: 24px; margin: 8px 0 0; accent-color: var(--amber); }
-label.do input:checked + span { color: var(--dim); text-decoration: line-through;
- text-decoration-color: var(--line); }
-label.do span { padding: 8px 0; }
-
-/* What a command already did. Bordered like a card-within-a-card because it is
- the only block on the page that subtracts work, and the reader has to be able
- to see at a glance which claim is doing the subtracting. The left edge is
- green only on a real pass — a "could not tell" gets the waiting colour, since
- an unreachable subject proves nothing and strikes nothing. */
-.machine { padding: 14px 16px; border: 1px solid var(--line); border-left-width: 3px;
- border-radius: 0 10px 10px 0; background: #0d1219; }
-.machine.is-pass { border-left-color: var(--green); }
-.machine.is-fail { border-left-color: #e07a6a; }
-.machine.is-unknown, .machine.is-never-run { border-left-color: var(--wait); }
-.machine .expect::before { content: "ran "; }
-
-/* Struck, not hidden. A step that vanished would be indistinguishable from one
- nobody ever wrote, and the runbook is also the description of what the check
- is — so it stays legible, just visibly not yours. */
-ol.steps > li.struck { opacity: .62; }
-li.struck .do { margin: 0; padding: 8px 0 0; }
-li.struck s { text-decoration-color: var(--green); }
-li.struck .expect::before { content: "machine "; color: var(--green); }
-
-.record { border-top: 1px solid var(--line); padding-top: 18px; }
-.foot { max-width: 44rem; margin: 0 auto; padding: 8px 0 48px; color: var(--dim); font-size: 15px; }
-
-@media (min-width: 46rem) { body { padding: 0 24px; } .card { padding: 26px 26px 10px; } }
-@media (prefers-reduced-motion: no-preference) { html { scroll-behavior: smooth; } }
-`;
-
// Progress survives a screen lock, which a fifteen-minute walkthrough on a
// phone will hit at least once. Keyed by check + index only, so regenerating
// the guide does not wipe a session in progress.
+//
+// This is the guide's own persistence and it stays browser-local on purpose:
+// the guide is a page you skim, and a tick here is a bookmark, not evidence.
+// Evidence is what `make session` writes, to a file, with a timestamp.
const JS = `
(function () {
var KEY = "hifth-guide:";
@@ -401,8 +127,8 @@ function serve() {
/* ── run ───────────────────────────────────────────────────────────────── */
//
-// Last, not first: `const CSS`/`const JS` above are in the temporal dead zone
-// until the module body has run past them, and page() reads both.
+// Last, not first: `const JS` above is in the temporal dead zone until the
+// module body has run past it, and page() reads it.
const ledger = readLedger();
const checks = ledger.checks ?? [];
diff --git a/scripts/decisions.mjs b/scripts/decisions.mjs
new file mode 100644
index 0000000..9cffeb6
--- /dev/null
+++ b/scripts/decisions.mjs
@@ -0,0 +1,163 @@
+/**
+ * Shared reader for docs/decisions.json and the records it indexes.
+ *
+ * Three things read this — the gate, the terminal renderer and the markdown
+ * builder — and a decision that reads one way in the terminal and another in
+ * the committed page is worse than no page, because the disagreement is silent.
+ * So the parsing, the joins and the hash live here once. Same shape and same
+ * reason as scripts/issues.mjs and scripts/use-cases.mjs.
+ *
+ * The interesting work in this file is `plainLanguage`, which is the only place
+ * that knows what the CLAUDE.md tenet means in characters. A tenet nobody can
+ * fail is a preference; this one fails a build.
+ */
+import { readFileSync, existsSync, readdirSync } from "node:fs";
+import { createHash } from "node:crypto";
+import { join } from "node:path";
+import { ROOT } from "./code-pointers.mjs";
+
+export const DECISIONS_PATH = join(ROOT, "docs", "decisions.json");
+export const DOC_PATH = join(ROOT, "docs", "decisions", "README.md");
+export const RECORD_DIR = join(ROOT, "docs", "decisions");
+
+/** The four words. Defined in docs/decisions.json's $comment; enforced here. */
+export const STATUSES = ["open", "decided", "living", "superseded"];
+
+/** Open first — nobody scans this list to admire the settled ones. */
+export const STATUS_ORDER = ["open", "living", "decided", "superseded"];
+
+/**
+ * The only host an `artifact` may name.
+ *
+ * Not a general URL check. A decision aid that lives on somebody's gist, or on
+ * a preview deployment, or behind http, is a link that will be dead the day
+ * somebody needs it — and the failure is silent, because a dead link still
+ * renders as a link. Narrow on purpose: widen it when there is a second place
+ * these are actually published, not in advance.
+ */
+export const ARTIFACT_HOST = "https://claude.ai/";
+
+export function readDecisions() {
+ if (!existsSync(DECISIONS_PATH)) {
+ console.error(`decisions missing at ${DECISIONS_PATH}`);
+ process.exit(1);
+ }
+ const { decisions } = JSON.parse(readFileSync(DECISIONS_PATH, "utf8"));
+ return decisions;
+}
+
+/** Every record in docs/decisions/, minus the generated index. */
+export function records() {
+ return readdirSync(RECORD_DIR)
+ .filter((f) => f.endsWith(".md") && f !== "README.md")
+ .map((f) => `docs/decisions/${f}`)
+ .sort();
+}
+
+/**
+ * A record's own title, read at build time.
+ *
+ * Never stored in the register. The titles here are sentences with opinions in
+ * them — "The grain gets finer where the finger already is" — and the moment
+ * one lives in two files, one of them is a copy that stops being true without
+ * anybody noticing. The register stores the *question*; the record owns the
+ * *answer*, and the answer is read out of it whenever it is shown.
+ */
+export function titleOf(file) {
+ const path = join(ROOT, file);
+ if (!existsSync(path)) return null;
+ const m = readFileSync(path, "utf8").match(/^#\s+(.+?)\s*$/m);
+ return m ? m[1] : null;
+}
+
+/** `docs/x.md#anchor` → `{ file, anchor }`. */
+export function splitDoc(doc) {
+ const i = doc.indexOf("#");
+ return i === -1 ? { file: doc, anchor: null } : { file: doc.slice(0, i), anchor: doc.slice(i + 1) };
+}
+
+/** GitHub's heading slug, near enough: lowercase, drop punctuation, spaces → dashes. */
+export const slug = (s) =>
+ s
+ .toLowerCase()
+ .replace(/[^\p{L}\p{N}\s-]/gu, "")
+ .trim()
+ .replace(/\s+/g, "-");
+
+/** Does a file carry a heading this anchor could be pointing at? */
+export function hasAnchor(file, anchor) {
+ const path = join(ROOT, file);
+ if (!existsSync(path)) return false;
+ const want = slug(anchor);
+ return readFileSync(path, "utf8")
+ .split("\n")
+ .filter((l) => l.startsWith("#"))
+ .some((l) => {
+ const text = l.replace(/^#+\s*/, "");
+ return slug(text) === want || text.startsWith(anchor);
+ });
+}
+
+/**
+ * The CLAUDE.md tenet, in characters: does this sentence make a reader who has
+ * never opened the repo look something up?
+ *
+ * Returns the offending fragments, or an empty array. Each pattern is here
+ * because it is a way a question stops being answerable by a stranger — not
+ * because it is ugly. Prose is allowed to be long, technical and Arabic; it is
+ * not allowed to name a file, a function or a command.
+ *
+ * Deliberately not checked: reading age, sentence length, whether a word is
+ * "hard". Those are taste, and a gate that enforces taste gets switched off.
+ */
+export function plainLanguage(text) {
+ const bad = [];
+ const flag = (re, why) => {
+ for (const m of text.matchAll(re)) bad.push(`${m[0]} — ${why}`);
+ };
+ flag(/\S+\.(mjs|[jt]sx?|json|css|html|md|svg|yml)\b/g, "names a file");
+ flag(/\S*\/\S+/g, "names a path");
+ flag(/`[^`]*`/g, "quotes code");
+ flag(/\b(pnpm|npm|node|make|git)\s+\S+/g, "names a command");
+ flag(/\bgate:[a-z0-9-]+/g, "names a gate");
+ flag(/\b[a-z]+[A-Z]\w*/g, "names a symbol");
+ flag(/\b\w+_\w+\b/g, "names a symbol");
+ return bad;
+}
+
+/**
+ * The slice the committed page renders, and therefore the slice whose change
+ * makes docs/decisions/README.md stale. Not the whole file: editing `$comment`
+ * should not fail a build over a page that never shows it.
+ */
+export function docPayload(decisions) {
+ return decisions.map((d) => ({
+ id: d.id,
+ question: d.question,
+ status: d.status,
+ options: d.options ?? [],
+ artifact: d.artifact ?? null,
+ page: d.page ?? null,
+ doc: d.doc,
+ decided: d.decided ?? null,
+ by: d.by ?? null,
+ date: d.date ?? null,
+ related: d.related ?? [],
+ supersededBy: d.supersededBy ?? null,
+ // The record's title is read, not stored — but it is rendered, so a retitled
+ // record has to restale the page too, or the index quietly shows the old one.
+ title: titleOf(splitDoc(d.doc).file),
+ }));
+}
+
+/** Stable short hash of the rendered slice; stamped into README.md. */
+export function decisionsHash(decisions) {
+ return createHash("sha256").update(JSON.stringify(docPayload(decisions))).digest("hex").slice(0, 12);
+}
+
+/** The hash README.md was built from, or null if there is no page (or no stamp). */
+export function docHash() {
+ if (!existsSync(DOC_PATH)) return null;
+ const m = readFileSync(DOC_PATH, "utf8").match(//);
+ return m ? m[1] : null;
+}
diff --git a/scripts/gate-assets.mjs b/scripts/gate-assets.mjs
index a574ece..359e2cf 100644
--- a/scripts/gate-assets.mjs
+++ b/scripts/gate-assets.mjs
@@ -77,12 +77,18 @@ const CONCORDANCE = join(ROOT, "packages", "core", "src", "concordance.ts");
* with them. Restoring the 2× margin after every intended growth would turn
* this gate into a ratchet that can only ever be satisfied, which is the one
* failure mode a ceiling has.
+ *
+ * `skins` moved for the same kind of reason and by the same rule: the tajweed
+ * shards stopped naming the seven colours the app paints and started naming the
+ * eighteen rules the source actually distinguishes, +37.4 KB gz across 114
+ * shards plus the one-line vocabulary that reads them. The ceiling stays at
+ * 384 KB.
*/
const CEILINGS = {
// today what a breach would mean
adj: 128 * 1024, // 79.5 KB the edge shards stopped being edge lists
roots: 768 * 1024, // 532.3 KB the root index started carrying text
- skins: 384 * 1024, // 207.7 KB the tajweed shards started carrying geometry
+ skins: 384 * 1024, // 245.1 KB the tajweed shards started carrying geometry
words: 1792 * 1024, // 885.6 KB the word shards started carrying text
};
diff --git a/scripts/gate-decisions.mjs b/scripts/gate-decisions.mjs
new file mode 100644
index 0000000..706910b
--- /dev/null
+++ b/scripts/gate-decisions.mjs
@@ -0,0 +1,269 @@
+#!/usr/bin/env node
+/**
+ * CI gate + renderer: docs/decisions.json still indexes every decision this
+ * repo has recorded, and every open one can still be answered by a stranger.
+ *
+ * Two halves, and the second is the one that is easy to skip.
+ *
+ * The first half is the shape this repo already runs on — pointers resolve, the
+ * generated page is not stale, and nothing sits in docs/decisions/ that the
+ * index does not know about. That reverse check is why the index exists at all:
+ * a record can be written, committed and forgotten, and every forward link in
+ * the repo will keep resolving perfectly the whole time, because nothing points
+ * at it.
+ *
+ * The second half is about who a decision is *for*. An option is only really
+ * open if somebody outside this code can look at it and choose, so:
+ *
+ * - An open decision must name two or more options, must carry a published
+ * `artifact` link anyone can open, and must carry the `page` — the same
+ * picture checked in here. Both, or the gate fails. A link with no copy
+ * dies when the host does; a copy with no link cannot be sent to anybody.
+ * - Whatever is checked in must be rebuildable: `builtBy` names the script,
+ * and it has to exist. A committed page nobody can regenerate is a
+ * screenshot with extra steps, and it starts lying the day the data moves.
+ * - The record must link to both of them. A decision doc that argues about a
+ * picture the reader cannot reach is asking them to take its word for it.
+ * - The `question` must be plain language: no file names, no paths, no
+ * symbols, no commands, no backticked code. That is the CLAUDE.md tenet,
+ * and this is the only place it is more than a preference. The check is
+ * narrow on purpose — it refuses identifiers, not long words.
+ *
+ * Deliberately NOT refused: an `open` decision. An unanswered question is the
+ * normal state of a live project, and a gate that failed for having one would
+ * be switched off within a week. This gate only ever fails because two files
+ * disagree, or because a decision was written down in a way nobody outside the
+ * repo could act on.
+ *
+ * Usage:
+ * node scripts/gate-decisions.mjs check everything (CI)
+ * node scripts/gate-decisions.mjs --list the register, open first
+ * node scripts/gate-decisions.mjs --id one decision in full
+ * node scripts/gate-decisions.mjs --files a b c the pre-commit scope
+ */
+import { existsSync, readFileSync } from "node:fs";
+import { join } from "node:path";
+import { ROOT } from "./code-pointers.mjs";
+import {
+ readDecisions,
+ records,
+ titleOf,
+ splitDoc,
+ hasAnchor,
+ plainLanguage,
+ decisionsHash,
+ docHash,
+ STATUSES,
+ STATUS_ORDER,
+ ARTIFACT_HOST,
+} from "./decisions.mjs";
+
+const decisions = readDecisions();
+const argv = process.argv.slice(2);
+const flag = (name) => {
+ const i = argv.indexOf(name);
+ return i === -1 ? null : (argv[i + 1] ?? "");
+};
+
+const byId = new Map(decisions.map((d) => [d.id, d]));
+const exists = (p) => existsSync(join(ROOT, p));
+
+// ---------------------------------------------------------------- renderers
+
+const STATUS_MARK = { open: "○", living: "◍", decided: "●", superseded: "◌" };
+
+const line = (d) => {
+ const t = titleOf(splitDoc(d.doc).file);
+ return ` ${STATUS_MARK[d.status] ?? "?"} ${d.id.padEnd(20)} ${d.question}\n ${t ?? "(no record)"} — ${d.doc}`;
+};
+
+if (argv.includes("--list")) {
+ const order = (d) => STATUS_ORDER.indexOf(d.status);
+ console.log("\nDecisions — open first. `make decisions ID=` for one in full.\n");
+ for (const status of STATUS_ORDER) {
+ const rows = decisions.filter((d) => d.status === status).sort((a, b) => order(a) - order(b));
+ if (rows.length === 0) continue;
+ console.log(`${STATUS_MARK[status]} ${status} — ${rows.length}`);
+ for (const d of rows) console.log(line(d));
+ console.log("");
+ }
+ process.exit(0);
+}
+
+if (flag("--id") !== null) {
+ const d = byId.get(flag("--id"));
+ if (!d) {
+ console.error(`no decision with id "${flag("--id")}"`);
+ process.exit(1);
+ }
+ console.log(`\n${d.question}\n`);
+ console.log(` id ${d.id}`);
+ console.log(` status ${d.status}${d.decided ? ` — ${d.decided}` : ""}`);
+ if (d.by || d.date) console.log(` made by ${d.by ?? "?"} on ${d.date ?? "?"}`);
+ console.log(` record ${d.doc}`);
+ console.log(` ${titleOf(splitDoc(d.doc).file) ?? "(missing)"}`);
+ if (d.artifact) console.log(` look at ${d.artifact}`);
+ if (d.page) console.log(` ${d.page}${d.builtBy ? ` (rebuild: node ${d.builtBy})` : ""}`);
+ for (const o of d.options ?? []) {
+ console.log(` option ${o.id === d.decided ? "✓" : " "} ${o.id} — ${o.label}`);
+ }
+ for (const r of d.related ?? []) {
+ console.log(` related ${r.padEnd(20)} ${byId.get(r)?.question ?? ""}`);
+ }
+ console.log("");
+ process.exit(0);
+}
+
+// -------------------------------------------------------------------- gate
+
+/**
+ * The pre-commit scope. `--files a b c` runs the whole check, but only when one
+ * of the staged files could have moved something the register points at — so a
+ * commit that touches none of this costs nothing and says nothing. The hook
+ * exists for the one moment the information is free: you are renaming the file
+ * right now, so you know where it went. CI runs the unscoped check regardless.
+ */
+const scoped = argv.includes("--files");
+if (scoped) {
+ const staged = new Set(argv.slice(argv.indexOf("--files") + 1));
+ const watched = new Set(["docs/decisions.json"]);
+ for (const f of records()) watched.add(f);
+ for (const d of decisions) {
+ if (d.doc) watched.add(splitDoc(d.doc).file);
+ if (d.page) watched.add(d.page);
+ if (d.builtBy) watched.add(d.builtBy);
+ }
+ const touched = [...staged].some((f) => watched.has(f) || f.startsWith("docs/decisions/"));
+ if (!touched) process.exit(0);
+}
+
+const fail = [];
+const seen = new Set();
+
+for (const d of decisions) {
+ const at = `decisions.json[${d.id ?? "?"}]`;
+
+ if (!d.id || !/^[a-z0-9]+(-[a-z0-9]+)*$/.test(d.id)) fail.push(`${at}: id must be kebab-case`);
+ if (seen.has(d.id)) fail.push(`${at}: duplicate id`);
+ seen.add(d.id);
+
+ if (!STATUSES.includes(d.status)) {
+ fail.push(`${at}: status "${d.status}" is not one of ${STATUSES.join(", ")}`);
+ }
+
+ // --- the question is the register's own prose, so it is the register's rule.
+ if (!d.question || !d.question.trim().endsWith("?")) {
+ fail.push(`${at}: question must be a question, ending in "?"`);
+ }
+ for (const bad of plainLanguage(d.question ?? "")) {
+ fail.push(`${at}: question is not plain language: ${bad}`);
+ }
+ for (const o of d.options ?? []) {
+ if (!o.id || !o.label) fail.push(`${at}: every option needs an id and a label`);
+ for (const bad of plainLanguage(o.label ?? "")) {
+ fail.push(`${at}: option ${o.id} is not plain language: ${bad}`);
+ }
+ }
+
+ // --- the record.
+ if (!d.doc) {
+ fail.push(`${at}: no doc — every decision names the record that holds its reasons`);
+ } else {
+ const { file, anchor } = splitDoc(d.doc);
+ if (!exists(file)) fail.push(`${at}: doc ${file} does not exist`);
+ else if (anchor && !hasAnchor(file, anchor)) fail.push(`${at}: doc ${file} has no heading "${anchor}"`);
+ else if (!titleOf(file)) fail.push(`${at}: doc ${file} has no "# " title to index it by`);
+ }
+
+ // --- the two links, which are the reason a stranger can take part at all.
+ const hasArtifact = Boolean(d.artifact);
+ const hasPage = Boolean(d.page);
+ if (hasArtifact !== hasPage) {
+ fail.push(
+ `${at}: ${hasArtifact ? "artifact with no checked-in page" : "checked-in page with no artifact link"}` +
+ " — a link with no copy dies with its host, a copy with no link cannot be sent to anyone",
+ );
+ }
+ if (hasArtifact && !d.artifact.startsWith(ARTIFACT_HOST)) {
+ fail.push(`${at}: artifact must be an absolute ${ARTIFACT_HOST}… link, got ${d.artifact}`);
+ }
+ if (hasPage) {
+ if (!d.page.startsWith("docs/")) fail.push(`${at}: page must live under docs/, got ${d.page}`);
+ else if (!exists(d.page)) fail.push(`${at}: page ${d.page} does not exist`);
+ if (!d.builtBy) fail.push(`${at}: page ${d.page} has no builtBy — nobody could rebuild it`);
+ else if (!exists(d.builtBy)) fail.push(`${at}: builtBy ${d.builtBy} does not exist`);
+ }
+
+ // The record has to reach both of them, or its argument is unreachable from
+ // the thing it argues about.
+ if (d.doc && hasPage && exists(splitDoc(d.doc).file)) {
+ const prose = readFileSync(join(ROOT, splitDoc(d.doc).file), "utf8");
+ const leaf = d.page.split("/").pop();
+ if (!prose.includes(leaf)) fail.push(`${at}: ${splitDoc(d.doc).file} never links ${leaf}`);
+ if (hasArtifact && !prose.includes(d.artifact)) {
+ fail.push(`${at}: ${splitDoc(d.doc).file} never gives the ${ARTIFACT_HOST}… link a reader could open`);
+ }
+ }
+
+ // --- status obligations.
+ if (d.status === "open") {
+ if ((d.options ?? []).length < 2) fail.push(`${at}: an open decision names two or more options`);
+ if (!hasArtifact) fail.push(`${at}: an open decision needs something to look at — no artifact`);
+ if (d.decided) fail.push(`${at}: open, but decided is set to "${d.decided}"`);
+ }
+ if (d.status === "decided") {
+ if (!d.by || !d.date) fail.push(`${at}: decided, but does not say who decided it and when`);
+ if ((d.options ?? []).length > 0 && !(d.options ?? []).some((o) => o.id === d.decided)) {
+ fail.push(`${at}: decided is "${d.decided ?? "null"}", which is not one of its options`);
+ }
+ }
+ // --- what else this decision is holding hands with.
+ //
+ // Both directions, or it does not count. A reader arrives at whichever of a
+ // pair they were sent, and a one-way link is invisible from the other end —
+ // which is the end they are usually standing at, because the second half of a
+ // pair is written months later and the first is no longer what anyone opens.
+ for (const r of d.related ?? []) {
+ if (r === d.id) fail.push(`${at}: related to itself`);
+ else if (!byId.has(r)) fail.push(`${at}: related "${r}" matches no decision`);
+ else if (!(byId.get(r).related ?? []).includes(d.id)) {
+ fail.push(`${at}: related "${r}" does not name it back — say it in both rows`);
+ }
+ }
+
+ if (d.status === "superseded") {
+ if (!d.supersededBy) fail.push(`${at}: superseded, but does not say by what`);
+ else if (!decisions.some((o) => o.id === d.supersededBy)) {
+ fail.push(`${at}: supersededBy "${d.supersededBy}" matches no decision`);
+ }
+ }
+ if (d.date && !/^\d{4}-\d{2}-\d{2}$/.test(d.date)) fail.push(`${at}: date must be YYYY-MM-DD`);
+}
+
+// --- the reverse direction: a record nothing points at.
+const indexed = new Set(decisions.map((d) => splitDoc(d.doc ?? "").file));
+for (const file of records()) {
+ if (!indexed.has(file)) {
+ fail.push(`${file}: a decision record with no row in docs/decisions.json — add one`);
+ }
+}
+
+// --- the generated page.
+const want = decisionsHash(decisions);
+const got = docHash();
+if (got === null) fail.push("docs/decisions/README.md is missing or unstamped — run `make decisions-doc`");
+else if (got !== want) fail.push(`docs/decisions/README.md is stale (${got} ≠ ${want}) — run \`make decisions-doc\``);
+
+if (fail.length > 0) {
+ console.error("gate:decisions — FAIL\n");
+ for (const f of fail) console.error(` ${f}`);
+ console.error(`\n ${fail.length} problem${fail.length === 1 ? "" : "s"}.`);
+ process.exit(1);
+}
+
+if (!scoped) {
+ console.log(
+ `gate:decisions — OK: ${decisions.length} decisions, ${records().length} records, ` +
+ `${decisions.filter((d) => d.status === "open").length} open.`,
+ );
+}
diff --git a/scripts/gate-tajweed.mjs b/scripts/gate-tajweed.mjs
new file mode 100644
index 0000000..40ce121
--- /dev/null
+++ b/scripts/gate-tajweed.mjs
@@ -0,0 +1,221 @@
+#!/usr/bin/env node
+/**
+ * CI gate: the tajweed shards and the vocabulary that interprets them agree.
+ *
+ * The shards used to be keyed by the seven families Hifth paints, so a shard was
+ * self-describing: a key was either a colour or it was nothing, and TypeScript
+ * said which. They are now keyed by the *source's* eighteen rule ids, and which
+ * colour each one paints is a separate shipped file — `tajweed/rules.json`. That
+ * bought the app the ability to tell an ikhfa from an iqlab, and it introduced a
+ * failure this repo had no way to notice:
+ *
+ * a shard key with no vocabulary entry paints NOTHING, silently, for as long
+ * as it ships.
+ *
+ * Not an error, not a blank page, not a console warning — `marksForAyah` drops
+ * an id it cannot place, because the alternative (painting an unknown rule some
+ * default colour) is worse. The symptom is that a rule stops appearing, on every
+ * page, and the only witness is a hafiz who noticed the ghunnah went quiet.
+ * A rebuild with a stale `rules.json`, a half-copied deploy, or a source refresh
+ * that adds a rule and a mapping that does not, all land there.
+ *
+ * So this reads the shipped bytes — all 114 shards and the vocabulary beside
+ * them — and checks the two directions of the same claim: every id the shards
+ * use is described, and every id the vocabulary describes is used. Plus the two
+ * ends the vocabulary is bolted to: the family it names must be one core paints,
+ * and the family core paints must have a colour to paint it with.
+ *
+ * Read from the built assets rather than from the ETL's table on purpose. The
+ * table being right is not the question — the question is whether the files a
+ * browser will fetch agree with each other, which is a fact about
+ * `apps/web/public/assets` and nothing else. A gate that read `build-tajweed.mjs`
+ * would pass on a tree whose shards were built before the table changed.
+ *
+ * Run: `pnpm gate:tajweed` (also in `pnpm gates`, `make ci` and CI).
+ */
+import { existsSync, readFileSync, readdirSync } from "node:fs";
+import { join } from "node:path";
+
+const ROOT = new URL("..", import.meta.url).pathname;
+const ASSETS = join(ROOT, "apps", "web", "public", "assets", "skins");
+const SKINS_TS = join(ROOT, "packages", "core", "src", "skins.ts");
+const TOKENS = join(ROOT, "apps", "web", "src", "styles", "tokens.css");
+
+const problems = [];
+
+// ── What core paints ─────────────────────────────────────────────────────────
+//
+// Parsed out of the TypeScript source, like `gate:quran-meta` does, so the gate
+// fails on the commit that introduces the drift rather than on whatever `dist/`
+// happens to hold.
+const skinsSrc = readFileSync(SKINS_TS, "utf8");
+const families = [...skinsSrc.matchAll(/^\s*\{ id: "([a-z-]+)", label:/gm)].map((m) => m[1]);
+if (families.length === 0) {
+ console.error(
+ "gate:tajweed — FAIL: could not read TAJWEED_RULES out of packages/core/src/skins.ts. " +
+ "If the registry's shape changed, this gate's parser has to change with it.",
+ );
+ process.exit(1);
+}
+
+// ── Every family has a colour ────────────────────────────────────────────────
+const tokens = readFileSync(TOKENS, "utf8");
+for (const family of families) {
+ if (!tokens.includes(`--tj-${family}:`)) {
+ problems.push(
+ `core paints the family "${family}" but tokens.css declares no --tj-${family} — ` +
+ `the wash and the outline would fall back to whatever the cascade offers.`,
+ );
+ }
+ if (!tokens.includes(`--tj-dash-${family}:`)) {
+ problems.push(
+ `the family "${family}" has no --tj-dash-${family} dash pattern. Colour is never ` +
+ `the only carrier here (WCAG 1.4.1); a family with a hue and no dash is one a ` +
+ `colour-blind reader cannot separate from its neighbour.`,
+ );
+ }
+}
+
+// ── Every shipped edition ────────────────────────────────────────────────────
+const editions = existsSync(ASSETS)
+ ? readdirSync(ASSETS, { withFileTypes: true })
+ .filter((e) => e.isDirectory() && existsSync(join(ASSETS, e.name, "tajweed")))
+ .map((e) => e.name)
+ : [];
+
+if (editions.length === 0) {
+ console.error(
+ "gate:tajweed — FAIL: no edition under apps/web/public/assets/skins/ ships a tajweed " +
+ "tree. Run `pnpm --filter @hifth/etl build:tajweed`; the shards are committed.",
+ );
+ process.exit(1);
+}
+
+const report = [];
+
+for (const edition of editions) {
+ const dir = join(ASSETS, edition, "tajweed");
+ const vocabPath = join(dir, "rules.json");
+
+ if (!existsSync(vocabPath)) {
+ problems.push(
+ `${edition}: the shards ship without rules.json, so nothing can interpret them — ` +
+ `every ayah in this edition would render plain under the tajweed skin.`,
+ );
+ continue;
+ }
+
+ let vocab;
+ try {
+ vocab = JSON.parse(readFileSync(vocabPath, "utf8"));
+ } catch (err) {
+ problems.push(`${edition}: rules.json is not valid JSON (${err.message}).`);
+ continue;
+ }
+
+ if (typeof vocab?.source !== "string" || vocab.source.length === 0) {
+ problems.push(
+ `${edition}: rules.json carries no "source". It is what the colophon credits — ` +
+ `an unattributed vocabulary is a licence problem before it is a data one.`,
+ );
+ }
+ if (!Array.isArray(vocab?.rules) || vocab.rules.length === 0) {
+ problems.push(`${edition}: rules.json declares no rules.`);
+ continue;
+ }
+
+ const declared = new Map();
+ for (const entry of vocab.rules) {
+ if (typeof entry?.id !== "string" || typeof entry?.family !== "string") {
+ problems.push(`${edition}: rules.json has an entry that is not {id, family}.`);
+ continue;
+ }
+ if (declared.has(entry.id)) {
+ problems.push(
+ `${edition}: rules.json names "${entry.id}" twice, with families ` +
+ `"${declared.get(entry.id)}" and "${entry.family}". One of them is being ignored.`,
+ );
+ }
+ if (!families.includes(entry.family)) {
+ problems.push(
+ `${edition}: rules.json maps "${entry.id}" onto the family "${entry.family}", ` +
+ `which core does not paint. Known families: ${families.join(", ")}.`,
+ );
+ }
+ declared.set(entry.id, entry.family);
+ }
+
+ // ── The two directions ─────────────────────────────────────────────────────
+ const used = new Map(); // rule id → how many ayahs use it
+ let shards = 0;
+ let ayahs = 0;
+
+ for (const name of readdirSync(dir)) {
+ if (!/^\d+\.json$/.test(name)) continue;
+ shards += 1;
+ let shard;
+ try {
+ shard = JSON.parse(readFileSync(join(dir, name), "utf8"));
+ } catch (err) {
+ problems.push(`${edition}/${name}: not valid JSON (${err.message}).`);
+ continue;
+ }
+ for (const [ayah, entry] of Object.entries(shard)) {
+ ayahs += 1;
+ for (const [id, spans] of Object.entries(entry)) {
+ used.set(id, (used.get(id) ?? 0) + 1);
+ if (!Array.isArray(spans) || spans.length === 0 || spans.length % 2 !== 0) {
+ problems.push(
+ `${edition}/${name} ayah ${ayah}: "${id}" is not a non-empty flat list of ` +
+ `[start, end] pairs.`,
+ );
+ }
+ }
+ }
+ }
+
+ const orphans = [...used.keys()].filter((id) => !declared.has(id)).sort();
+ if (orphans.length > 0) {
+ problems.push(
+ `${edition}: the shards use ${orphans.length} rule id(s) rules.json does not ` +
+ `describe — ${orphans.join(", ")}. Every span under those ids paints nothing, ` +
+ `on every page, without an error. Rebuild the shards and the vocabulary together.`,
+ );
+ }
+
+ const unused = [...declared.keys()].filter((id) => !used.has(id)).sort();
+ if (unused.length > 0) {
+ problems.push(
+ `${edition}: rules.json describes ${unused.length} rule id(s) no shard uses — ` +
+ `${unused.join(", ")}. Either the shards are stale or the source stopped ` +
+ `emitting a rule, and both are worth knowing before a reader finds out.`,
+ );
+ }
+
+ // A family core paints, with a colour and a dash and a legend row, that no
+ // rule in this edition's vocabulary ever reaches. Not fatal in principle — a
+ // future source might be coarser — but today it means a colour nobody can see.
+ const reachable = new Set(declared.values());
+ for (const family of families) {
+ if (!reachable.has(family)) {
+ problems.push(
+ `${edition}: no rule paints as "${family}", so that colour and its legend row ` +
+ `are unreachable in this edition.`,
+ );
+ }
+ }
+
+ report.push(
+ `${edition}: ${declared.size} rule ids → ${reachable.size} families, ` +
+ `${ayahs} marked ayahs across ${shards} shards`,
+ );
+}
+
+if (problems.length > 0) {
+ console.error("gate:tajweed — FAIL:");
+ for (const p of problems) console.error(" -", p);
+ process.exit(1);
+}
+
+for (const line of report) console.log(" ", line);
+console.log(`gate:tajweed — OK (${editions.length} edition(s), ${families.length} families)`);
diff --git a/scripts/lib/session-log.mjs b/scripts/lib/session-log.mjs
new file mode 100644
index 0000000..ac0f4b0
--- /dev/null
+++ b/scripts/lib/session-log.mjs
@@ -0,0 +1,181 @@
+/**
+ * The transcript of a co-working session: what a person did while working a
+ * ledger check, written down as they did it.
+ *
+ * ── Why this exists ──────────────────────────────────────────────────────
+ *
+ * `docs/validation/ledger.json` has always ended a check the same way: one
+ * sentence of `result`, typed on the laptop after the walkthrough is over. That
+ * sentence is the artifact and it is worth having — but it is written from
+ * memory. A person walks ten steps on a phone over fifteen minutes, and
+ * whatever they noticed at step four survives only if they were still holding
+ * it at step ten. Everything else is gone, and nobody can tell afterwards
+ * whether a check produced a thin result because there was nothing to say or
+ * because the saying happened too late.
+ *
+ * A transcript fixes the ordering: the observation lands on disk while the step
+ * is still in front of you, and the `result` sentence at the end becomes a
+ * summary of a record rather than a feat of recall.
+ *
+ * ── What it is not ───────────────────────────────────────────────────────
+ *
+ * It is not a second ledger. The ledger stays the register — the verdict, the
+ * date, the status — and a transcript is the working underneath one entry in
+ * it, the way `docs/validation/evidence/` is the working underneath a machine
+ * half. Nothing reads a transcript to decide whether a check passed.
+ *
+ * ── Why JSONL, appended ──────────────────────────────────────────────────
+ *
+ * One event per line, `O_APPEND`, flushed per write. A session is twenty
+ * minutes of a scarce person's attention and the thing being defended against
+ * is losing it — a closed laptop, a killed terminal, a browser tab that went
+ * away. Append-only costs one line in the worst case. A rewritten JSON document
+ * costs the file.
+ *
+ * The lines are also a diff a human can read, which matters the day somebody
+ * asks how a verdict was arrived at.
+ */
+import { appendFileSync, existsSync, mkdirSync, readFileSync, readdirSync } from "node:fs";
+import { join } from "node:path";
+import { ROOT } from "../validation-ledger.mjs";
+
+export const SESSIONS_DIR = join(ROOT, "docs", "validation", "sessions");
+
+/**
+ * One file per session, named so an `ls` sorts chronologically and a filename
+ * says which check it belongs to without being opened.
+ */
+export function sessionPath(checkId, stamp) {
+ return join(SESSIONS_DIR, `${stamp}-${checkId}.jsonl`);
+}
+
+/** `2026-08-12T0641` — date-sortable, filename-safe, minute resolution. */
+export function stampNow(now = new Date()) {
+ return now.toISOString().slice(0, 16).replace(/:/g, "").replace("T", "T");
+}
+
+export function ensureDir() {
+ if (!existsSync(SESSIONS_DIR)) mkdirSync(SESSIONS_DIR, { recursive: true });
+}
+
+/**
+ * Append one event. The timestamp is stamped here rather than accepted from the
+ * caller: the browser posting these has its own clock, its own timezone, and no
+ * particular reason to be right, and a transcript whose times came from two
+ * sources cannot be read as a sequence.
+ */
+export function append(path, event) {
+ ensureDir();
+ const line = JSON.stringify({ t: new Date().toISOString(), ...event });
+ appendFileSync(path, `${line}\n`, "utf8");
+ return line;
+}
+
+/**
+ * Read a transcript back. A truncated last line — the exact thing an append-only
+ * log exists to survive — is dropped rather than thrown on, because a session
+ * that died mid-write is precisely when you most want to read the rest of it.
+ */
+export function readSession(path) {
+ if (!existsSync(path)) return [];
+ const out = [];
+ for (const line of readFileSync(path, "utf8").split("\n")) {
+ if (!line.trim()) continue;
+ try {
+ out.push(JSON.parse(line));
+ } catch {
+ /* a half-written final line: everything before it is still good */
+ }
+ }
+ return out;
+}
+
+/** Every transcript for a check, newest first. */
+export function sessionsFor(checkId) {
+ if (!existsSync(SESSIONS_DIR)) return [];
+ return readdirSync(SESSIONS_DIR)
+ .filter((f) => f.endsWith(`-${checkId}.jsonl`))
+ .sort()
+ .reverse()
+ .map((f) => join(SESSIONS_DIR, f));
+}
+
+/**
+ * A transcript that was started and never banked — the thing to offer to resume
+ * rather than silently starting a second one beside it. Two half-sessions for
+ * one check is the worst outcome available here: neither is the record, and the
+ * person who finds them later cannot tell which was the real attempt.
+ */
+export function openSessionFor(checkId) {
+ for (const path of sessionsFor(checkId)) {
+ const events = readSession(path);
+ if (events.length && !events.some((e) => e.kind === "verdict")) return { path, events };
+ }
+ return null;
+}
+
+/**
+ * What the transcript adds up to.
+ *
+ * Deliberately arithmetic only — counts, the notes in order, the last verdict.
+ * It does not judge, score, or grade anything, and the session server shows this
+ * and nothing else while a check is being worked. That restraint is load-bearing
+ * for at least one check in the ledger: `placement-correction-by-eye` is a blind
+ * forced choice whose whole validity rests on nobody, the worker included,
+ * knowing how it is going while it is going. A progress bar is fine. A running
+ * score would quietly turn the measurement into a training exercise.
+ */
+export function summarise(events) {
+ const head = events.find((e) => e.kind === "session") ?? null;
+ const steps = new Map();
+ const notes = [];
+ const observations = [];
+ const artifacts = [];
+ let verdict = null;
+
+ for (const e of events) {
+ if (e.kind === "step") steps.set(e.stepId ?? `#${e.index}`, e);
+ else if (e.kind === "note") {
+ // Notes are typed and retyped; the transcript keeps every version (it is
+ // append-only) but the summary shows the last one per step, which is what
+ // the person meant to leave behind.
+ const at = notes.findIndex((n) => n.stepId === e.stepId);
+ if (at >= 0) notes[at] = e;
+ else notes.push(e);
+ } else if (e.kind === "observation") observations.push(e);
+ else if (e.kind === "artifact") artifacts.push(e);
+ else if (e.kind === "verdict") verdict = e;
+ }
+
+ const done = [...steps.values()].filter((s) => s.state === "done");
+ return {
+ check: head?.check ?? null,
+ startedAt: head?.t ?? events[0]?.t ?? null,
+ lastAt: events.at(-1)?.t ?? null,
+ commit: head?.commit ?? null,
+ stepsDone: done.length,
+ stepsTotal: head?.stepsTotal ?? steps.size,
+ notes: notes.filter((n) => (n.text ?? "").trim()),
+ observations: observations.length,
+ artifacts,
+ verdict,
+ };
+}
+
+/**
+ * The transcript as a paragraph a person can paste into `make record`.
+ *
+ * A starting point, never the verdict itself. The ledger's `result` is a
+ * judgement — "the correction is supported", "two leaves disagreed" — and no
+ * reduction over a log can produce one. What this saves is the retyping of what
+ * you already wrote down, which is exactly the part that gets dropped when the
+ * walkthrough has run long.
+ */
+export function draftResult(summary) {
+ const bits = [];
+ if (summary.stepsTotal) bits.push(`${summary.stepsDone}/${summary.stepsTotal} steps`);
+ if (summary.observations) bits.push(`${summary.observations} recorded answers`);
+ const head = bits.join(" · ");
+ const body = summary.notes.map((n) => n.text.trim()).join(" · ");
+ return [head, body].filter(Boolean).join(" — ");
+}
diff --git a/scripts/lib/validation-render.mjs b/scripts/lib/validation-render.mjs
new file mode 100644
index 0000000..28f88b4
--- /dev/null
+++ b/scripts/lib/validation-render.mjs
@@ -0,0 +1,343 @@
+/**
+ * The one renderer for a ledger check, shared by every HTML surface that draws
+ * one.
+ *
+ * There are two of those now — `build-validation-guide.mjs` (the read-only
+ * field guide, all checks, served to a phone) and `session.mjs` (one check,
+ * live, capturing what you do). They exist for different reasons and neither is
+ * redundant, but they must never disagree about what a step *says*. A runbook
+ * that reads one way on the guide and another in the session is worse than
+ * having only one of them: the disagreement is silent, and the person following
+ * it has no way to know which page is the stale one.
+ *
+ * So the words come from docs/validation/ledger.json, and the markup around
+ * them comes from here. What each surface owns is its own chrome — the guide's
+ * index and its checkbox persistence, the session's capture bar — never a
+ * second copy of a step.
+ */
+import { readEvidence } from "../validation-ledger.mjs";
+
+/* ── text ──────────────────────────────────────────────────────────────── */
+
+export const attr = (s) =>
+ String(s).replace(/&/g, "&").replace(//g, ">").replace(/"/g, """);
+
+// An Arabic run must start AND end on an Arabic character: pulling a trailing
+// ASCII period or colon inside the isolate flips it to the far side of the
+// phrase, which is exactly the mangling the isolate is here to prevent.
+const ARABIC_RUN =
+ /[-ۿݐ-ݿ](?:[-ۿݐ-ݿ\s]*[-ۿݐ-ݿ])?/g;
+
+/**
+ * Escape, then honour the three bits of markup the ledger's prose actually
+ * uses (**bold**, `code`, → arrows survive as-is), and isolate Arabic runs.
+ *
+ * The isolation is not cosmetic: these runbooks quote the app's own Arabic UI
+ * strings inside English sentences, and without `` the bidi algorithm
+ * drags neighbouring punctuation — the « » quotes, the trailing colon — to the
+ * wrong end of the line, so the instruction names a button that appears to be
+ * called something else.
+ */
+export function rich(text) {
+ return attr(text)
+ .replace(/\*\*([^*]+)\*\*/g, "$1 ")
+ .replace(/`([^`]+)`/g, "$1")
+ .replace(ARABIC_RUN, (m) => `${m} `);
+}
+
+/* ── the parts of a card ───────────────────────────────────────────────── */
+
+/**
+ * The picture of what the step's `expect` line describes.
+ *
+ * Emitted whether or not the file is on disk. A missing shot should look
+ * broken: the alternative is that it quietly vanishes from the page and only
+ * `gate:validation` ever knows, which is how a guide ends up promising a
+ * picture in the terminal and showing none on the phone.
+ */
+export function shot(id) {
+ if (!id) return "";
+ return `
+
+ from the build · a shape to recognise, not a result to match
+ `;
+}
+
+export function list(title, items) {
+ if (!(items ?? []).length) return "";
+ return `
+ ${title}
+ ${items.map((i) => `${rich(i)} `).join("")}
+ `;
+}
+
+/**
+ * What a command already did, and — the part that matters — what it could not.
+ *
+ * This block sits above "What you need" because it changes how much of the card
+ * is yours before you read any of it. The residue is rendered as prominently as
+ * the discharge on purpose: the risk this feature introduces is a page that
+ * looks mostly struck through and reads as "nearly automated", when what is
+ * left is the whole reason the check exists.
+ */
+export function machine(check, ran, struck) {
+ if (!check.evidence?.run) return "";
+ const state = !ran ? "never-run" : ran.outcome;
+ return `
+ Already done for you
+ ${rich(check.evidence.run)}
+ ${
+ ran
+ ? `${attr(state)} · ${attr(ran.ranAt.slice(0, 10))} · ${attr(ran.commit ?? "?")} · ${attr(ran.on)} — ${
+ struck.size ? `${struck.size} step(s) below are struck through` : "nothing struck through"
+ }`
+ : `Never run on this tree. Run make validate-auto on the laptop, then make guide — until then every step below is still yours.`
+ }
+ What it cannot do — still yours:
+ ${(check.evidence.residue ?? []).map((r) => `${rich(r)} `).join("")}
+ `;
+}
+
+/**
+ * Which of a check's steps a real command has already discharged.
+ *
+ * Only `pass` strikes. A producer that could not reach its subject (exit 3) has
+ * proved nothing, and letting that discharge a human's step is precisely how a
+ * muted watcher comes to look covered.
+ */
+export function struckSteps(check) {
+ const ran = check.evidence?.run ? readEvidence(check.id) : null;
+ const struck = new Set(ran?.outcome === "pass" ? (check.evidence.covers ?? []) : []);
+ return { ran, struck };
+}
+
+/**
+ * One check, whole.
+ *
+ * `capture` is the only difference between the guide's card and the session's:
+ * it stamps each step with its ledger id as well as its position, because a
+ * transcript that recorded positions would silently re-point itself the day
+ * somebody reorders a runbook. Same rule `evidence.covers` already lives under.
+ */
+export function card(check, { capture = false } = {}) {
+ const rb = check.runbook ?? {};
+ const done = check.status === "done";
+ const blocked = (rb.needs ?? []).some((n) => /not runnable yet/i.test(n));
+ const { ran, struck } = struckSteps(check);
+
+ return `
+
+
${
+ done ? "done" : blocked ? "blocked" : "outstanding"
+ }
+
${rich(check.title)}
+
${attr(check.id)}${
+ (check.blocks ?? []).length ? ` · blocks ${check.blocks.map((b) => `${rich(b)} `).join(", ")}` : ""
+ }${check.staleAfterDays ? ` · repeats every ${check.staleAfterDays} days` : ""}
+
+
+ ${rich(check.why)}
+ ${
+ done
+ ? `Verdict ${attr(check.verifiedOn ?? "")}: ${rich(check.result ?? "")}
`
+ : ""
+ }
+
+ ${machine(check, ran, struck)}
+ ${list("What you need", rb.needs)}
+ ${
+ (rb.setup ?? []).length
+ ? `
+ Setup — on the laptop
+ ${rb.setup
+ .map(
+ (s) => `${rich(s.run)}
+ ${s.expect ? `${rich(s.expect)}
` : ""}`,
+ )
+ .join("\n")}
+ `
+ : ""
+ }
+
+ ${
+ (rb.steps ?? []).length
+ ? `
+ Steps${capture ? "" : " — on the phone"}
+
+ ${rb.steps
+ .map((s, i) =>
+ s.id && struck.has(s.id)
+ ? // Struck, not deleted. The step is still the runbook's own account
+ // of what this check is; hiding it would leave the person on the
+ // phone unable to tell a discharged step from one nobody wrote.
+ `
+ ${rich(s.do)}
+ Done by ${attr(check.evidence.run)} on ${attr(ran.ranAt.slice(0, 10))}. Skip it.
+ `
+ : `
+ ${rich(s.do)}
+ ${rich(s.expect)}
+ ${shot(s.shot)}
+ ${s.why ? `${rich(s.why)}
` : ""}
+ ${capture ? note(check.id, s.id ?? String(i)) : ""}
+ `,
+ )
+ .join("\n ")}
+
+ `
+ : ""
+ }
+
+ ${list("Reading the result", rb.reading)}
+
+
+ Record it
+ ${rich(rb.record ?? `make record CHECK=${check.id} RESULT=''`)}
+ Then do what it tunes:
+ ${(check.tunes ?? []).map((t) => `${rich(t)} `).join("")}
+ ${check.record ? `Written up in ${rich(check.record)}
` : ""}
+
+ `;
+}
+
+/**
+ * The box you type into while the step is still in front of you.
+ *
+ * Session pages only. This is the whole reason the session surface exists: the
+ * ledger's `result` has always been written from memory at the end of a
+ * walkthrough, so whatever you noticed at step four survives only if you were
+ * still holding it fifteen minutes later. A note written here lands on disk
+ * before you have moved on.
+ */
+function note(checkId, stepKey) {
+ return `
+ Anything you noticed — banked as you type
+
+
`;
+}
+
+/* ── the look ──────────────────────────────────────────────────────────── */
+//
+// Deliberately not the app's paper-and-ink palette. This is a tool for the
+// person testing the product, and a tool that looks like the product is a tool
+// someone will eventually mistake for the product — in a screenshot, in a bug
+// report, in a share sheet. Night workshop: cold ground, one warm accent
+// (amber, the same wash the app puts on a selected ayah, so the through-line is
+// still there), hairline rules for structure and nothing else.
+
+export const CSS = `
+:root {
+ --ground: #0f1319; --raised: #161c25; --line: #263140;
+ --text: #e6ebf2; --dim: #9aa7b8; --amber: #f0a65a; --green: #7fd4a0; --wait: #b6a4d8;
+ --mono: ui-monospace, SFMono-Regular, Menlo, monospace;
+}
+* { box-sizing: border-box; }
+html { -webkit-text-size-adjust: 100%; }
+body {
+ margin: 0; background: var(--ground); color: var(--text);
+ font: 17px/1.55 ui-serif, Georgia, "Times New Roman", serif;
+ padding: 0 16px env(safe-area-inset-bottom) 16px;
+}
+bdi { font-family: ui-sans-serif, system-ui, sans-serif; }
+b { color: #fff; font-weight: 600; }
+code { font: 0.85em/1.4 var(--mono); color: var(--amber); overflow-wrap: anywhere; }
+
+.top { max-width: 44rem; margin: 0 auto; padding: 40px 0 8px; }
+.kicker { margin: 0; font: 600 13px/1 var(--mono); letter-spacing: .18em;
+ text-transform: uppercase; color: var(--amber); }
+h1 { margin: 8px 0 4px; font-size: 40px; line-height: 1; letter-spacing: -.02em; }
+.lede { margin: 0 0 18px; color: var(--dim); }
+.rule { margin: 0; padding: 14px 16px; border-left: 3px solid var(--amber);
+ background: var(--raised); font-size: 15px; }
+.src { margin: 14px 0 0; font-size: 13px; color: var(--dim); }
+
+main { max-width: 44rem; margin: 0 auto; }
+.card { margin: 28px 0; padding: 20px 18px 6px; background: var(--raised);
+ border: 1px solid var(--line); border-radius: 14px; }
+.card.is-done { opacity: .72; }
+.head h2 { margin: 10px 0 2px; font-size: 25px; line-height: 1.2; letter-spacing: -.01em; }
+.id { margin: 0 0 14px; font-size: 13px; color: var(--dim); }
+.badge { display: inline-block; padding: 3px 9px; border-radius: 999px;
+ font: 600 11px/1.5 var(--mono); letter-spacing: .1em; text-transform: uppercase;
+ color: var(--ground); background: var(--amber); }
+.badge.ok { background: var(--green); }
+.badge.wait { background: var(--wait); }
+.why { margin: 0 0 4px; color: var(--dim); font-size: 15.5px; }
+.verdict { margin: 12px 0 0; padding: 10px 12px; border-left: 3px solid var(--green);
+ background: #131a17; font-size: 15px; }
+
+.block { margin: 22px 0; }
+.block h3 { margin: 0 0 10px; font: 600 12px/1 var(--mono); letter-spacing: .16em;
+ text-transform: uppercase; color: var(--dim); }
+.bullets, .tunes { margin: 0; padding-left: 1.1em; }
+.bullets li, .tunes li { margin: 0 0 9px; }
+.tunes li { font-size: 15px; color: var(--dim); }
+.tunes-lead { margin: 16px 0 6px; font-size: 15px; }
+
+pre.cmd { margin: 0 0 10px; padding: 12px 14px; overflow-x: auto;
+ background: #0a0d12; border: 1px solid var(--line); border-radius: 9px;
+ font: 14px/1.5 var(--mono); color: var(--green); white-space: pre-wrap;
+ overflow-wrap: anywhere; -webkit-user-select: all; user-select: all; }
+
+/* The expectation is the whole point of a step: what you should see if it is
+ working. It gets its own slab so it cannot be skimmed past. */
+.expect { margin: 6px 0 0; padding: 9px 12px 9px 14px; border-left: 2px solid var(--line);
+ background: #121820; color: var(--dim); font-size: 15px; border-radius: 0 8px 8px 0; }
+.expect::before { content: "expect "; font: 600 11px/1 var(--mono); letter-spacing: .14em;
+ text-transform: uppercase; color: var(--amber); }
+
+/* And what the step buys. Quieter than the expectation on purpose — it is the
+ line you read when you are tempted to skip the step, not on every pass. An
+ expectation nobody can justify is one a tired reader waves through. */
+.why { margin: 8px 0 0; padding-left: 14px; color: var(--dim); font-size: 14px; line-height: 1.55; }
+.why::before { content: "why "; font: 600 11px/1 var(--mono); letter-spacing: .14em;
+ text-transform: uppercase; color: var(--wait); }
+
+/* A description of a screen you have never seen cannot be checked against the
+ screen. These come from e2e/shots.spec.ts against the real build — never a
+ hand-crop, which would be a second copy of the UI, drifting silently. */
+figure.shot { margin: 10px 0 0; }
+figure.shot img { display: block; width: 100%; max-width: 300px; height: auto;
+ border: 1px solid var(--line); border-radius: 10px; background: var(--ground); }
+figure.shot figcaption { margin-top: 6px; font: 500 10px/1.4 var(--mono);
+ letter-spacing: .12em; text-transform: uppercase; color: var(--dim); opacity: .75; }
+
+ol.steps { margin: 0; padding-left: 1.4em; }
+ol.steps > li { margin: 0 0 18px; padding-left: 4px; }
+ol.steps > li::marker { color: var(--amber); font-family: var(--mono); font-size: 14px; }
+label.do { display: flex; gap: 12px; align-items: flex-start; min-height: 44px;
+ cursor: pointer; -webkit-tap-highlight-color: transparent; }
+label.do input { flex: none; width: 24px; height: 24px; margin: 8px 0 0; accent-color: var(--amber); }
+label.do input:checked + span { color: var(--dim); text-decoration: line-through;
+ text-decoration-color: var(--line); }
+label.do span { padding: 8px 0; }
+
+/* What a command already did. Bordered like a card-within-a-card because it is
+ the only block on the page that subtracts work, and the reader has to be able
+ to see at a glance which claim is doing the subtracting. The left edge is
+ green only on a real pass — a "could not tell" gets the waiting colour, since
+ an unreachable subject proves nothing and strikes nothing. */
+.machine { padding: 14px 16px; border: 1px solid var(--line); border-left-width: 3px;
+ border-radius: 0 10px 10px 0; background: #0d1219; }
+.machine.is-pass { border-left-color: var(--green); }
+.machine.is-fail { border-left-color: #e07a6a; }
+.machine.is-unknown, .machine.is-never-run { border-left-color: var(--wait); }
+.machine .expect::before { content: "ran "; }
+
+/* Struck, not hidden. A step that vanished would be indistinguishable from one
+ nobody ever wrote, and the runbook is also the description of what the check
+ is — so it stays legible, just visibly not yours. */
+ol.steps > li.struck { opacity: .62; }
+li.struck .do { margin: 0; padding: 8px 0 0; }
+li.struck s { text-decoration-color: var(--green); }
+li.struck .expect::before { content: "machine "; color: var(--green); }
+
+.record { border-top: 1px solid var(--line); padding-top: 18px; }
+.foot { max-width: 44rem; margin: 0 auto; padding: 8px 0 48px; color: var(--dim); font-size: 15px; }
+
+@media (min-width: 46rem) { body { padding: 0 24px; } .card { padding: 26px 26px 10px; } }
+@media (prefers-reduced-motion: no-preference) { html { scroll-behavior: smooth; } }
+`;
diff --git a/scripts/session.mjs b/scripts/session.mjs
new file mode 100644
index 0000000..2ef1a0d
--- /dev/null
+++ b/scripts/session.mjs
@@ -0,0 +1,622 @@
+#!/usr/bin/env node
+/**
+ * A co-working session on one manual validation check: the runbook, on the
+ * device you are working from, with everything you do banked to disk as you do
+ * it.
+ *
+ * ── The gap this closes ──────────────────────────────────────────────────
+ *
+ * `docs/validation/ledger.json` is the register and the runbook, and it is
+ * already rendered three ways — the terminal (`make validate CHECK=`), the
+ * phone (`make guide`), and this skill's own prose. All three are *read-only*.
+ * The writing has always happened at the end, on the laptop, from memory:
+ * `make record CHECK= RESULT=''`.
+ *
+ * That is fine for the verdict, which is a judgement and belongs to a person.
+ * It is bad for everything else. Fifteen minutes of walking a runbook on a
+ * phone produces observations at step four that are gone by step ten, and the
+ * one surviving sentence cannot tell anybody afterwards whether the check was
+ * thin or the recall was. Worse, a check with structured answers — the
+ * hundred forced choices in `placement-correction-by-eye` — held its entire
+ * output in a browser tab's `localStorage` on a `file://` origin, which is a
+ * store no browser promises to keep, until the very end when it produced a
+ * download the person then had to find and hand to a scorer.
+ *
+ * So: a small local server that renders one check from the same ledger, and
+ * appends every tick, note, structured answer and verdict to
+ * `docs/validation/sessions/-.jsonl` the moment it happens.
+ *
+ * ── What it deliberately does not do ─────────────────────────────────────
+ *
+ * It does not judge. Nothing on the page tells you how you are doing, and no
+ * route on the server can score anything. That is not minimalism, it is a
+ * requirement borrowed from the check that most needs it: a blind forced
+ * choice is only evidence while nobody — the worker included — knows how it is
+ * going. A progress bar is fine; a running tally would quietly convert the
+ * measurement into a training exercise, and the number that came out would be
+ * a measure of how fast someone learned the pattern.
+ *
+ * It also does not replace `make guide`. That page is for skimming what is
+ * outstanding, stays committed, and is gated against ledger drift. This one is
+ * ephemeral, opens a file for writing, and exists only while you are working.
+ *
+ * ── Why the token ────────────────────────────────────────────────────────
+ *
+ * The server binds `0.0.0.0`, because most of these checks happen on a phone
+ * and a phone needs the LAN. That means anything else on the network can reach
+ * the write routes, and the write routes append to a file this project treats
+ * as evidence. A random token in the URL is cheap and turns "anyone on this
+ * Wi-Fi can post observations into a validation record" into "nobody can". The
+ * integrity argument is the real one; the confidentiality is incidental.
+ *
+ * Usage:
+ * node scripts/session.mjs --check # resume an unbanked session, or start one
+ * node scripts/session.mjs --check --new # start a fresh transcript regardless
+ * node scripts/session.mjs --check --port 4180
+ */
+import { createServer } from "node:http";
+import { existsSync, readFileSync, writeFileSync } from "node:fs";
+import { randomBytes } from "node:crypto";
+import { spawnSync, spawn } from "node:child_process";
+import { extname, join, basename } from "node:path";
+import { readLedger, ROOT, SHOTS_DIR } from "./validation-ledger.mjs";
+import { card, CSS, rich, attr } from "./lib/validation-render.mjs";
+import {
+ append,
+ draftResult,
+ openSessionFor,
+ readSession,
+ sessionPath,
+ stampNow,
+ summarise,
+} from "./lib/session-log.mjs";
+
+/* ── arguments ─────────────────────────────────────────────────────────── */
+
+const argv = process.argv.slice(2);
+const arg = (name) => {
+ const i = argv.indexOf(`--${name}`);
+ return i >= 0 ? argv[i + 1] : undefined;
+};
+const flag = (name) => argv.includes(`--${name}`);
+
+const ledger = readLedger();
+const checks = ledger.checks ?? [];
+const id = arg("check");
+const check = checks.find((c) => c.id === id);
+
+if (!id || !check) {
+ console.error(`\n session — ${id ? `no check "${id}" in the ledger` : "which check?"}. Available:\n`);
+ for (const c of checks) console.error(` ${c.id.padEnd(32)} ${c.status}`);
+ console.error(`\n usage: make session CHECK=\n`);
+ process.exit(2);
+}
+
+const steps = check.runbook?.steps ?? [];
+if (!steps.length) {
+ console.error(
+ `\n session — "${id}" has no runbook steps, so there is nothing to walk.\n` +
+ ` Add them to docs/validation/ledger.json first; gate:validation already\n` +
+ ` refuses a pending human check without them.\n`,
+ );
+ process.exit(2);
+}
+
+/* ── the transcript ────────────────────────────────────────────────────── */
+
+const commit =
+ spawnSync("git", ["rev-parse", "--short", "HEAD"], { cwd: ROOT, encoding: "utf8" }).stdout?.trim() || null;
+
+// Resuming is the default, and the reason is the failure this whole script is
+// about: an interrupted session whose work is still on disk must not be
+// orphaned beside a fresh empty one. Two half-transcripts for one check is
+// worse than either alone — nobody can tell later which was the real attempt.
+const resumed = flag("new") ? null : openSessionFor(id);
+const logPath = resumed?.path ?? sessionPath(id, stampNow());
+
+if (resumed) {
+ const s = summarise(resumed.events);
+ console.log(`\n resuming ${basename(logPath)} — ${s.stepsDone}/${steps.length} steps, ${s.observations} answers`);
+} else {
+ append(logPath, {
+ kind: "session",
+ check: id,
+ title: check.title,
+ commit,
+ on: `${process.platform} node ${process.versions.node}`,
+ stepsTotal: steps.length,
+ });
+ console.log(`\n new transcript → docs/validation/sessions/${basename(logPath)}`);
+}
+
+/* ── the page ──────────────────────────────────────────────────────────── */
+
+const TOKEN = randomBytes(9).toString("base64url");
+const tool = check.runbook?.tool ?? null;
+const toolReady = tool ? existsSync(join(ROOT, tool.path)) : false;
+
+function page() {
+ return `
+
+
+
+
+
+Hifth — session · ${attr(check.id)}
+
+
+
+
+ Hifth · حِفظ · session
+ ${rich(check.title)}
+ Everything you tick or type below lands in
+ docs/validation/sessions/${attr(basename(logPath))} as you do it — not at the end,
+ and not from memory.
+ Nothing here tells you how you are doing, and nothing here can.
+ A verdict is yours to write at the bottom; this page only remembers what you saw.
+
+
+
+${
+ tool
+ ? `
+ tool
${rich(tool.label ?? "This check has its own tool")}
+ ${tool.note ? `${rich(tool.note)}
` : ""}
+ ${
+ toolReady
+ ? `Open it →
+ Answers it records come straight here, into the same transcript. No download to find afterwards.
`
+ : `Not built yet on this machine. Run the check's setup commands above, then reload this page.
`
+ }
+ `
+ : ""
+}
+${card(check, { capture: true })}
+
+
+ last
Bank the verdict
+ One sentence, in your words: what you saw, and what it decides. This is
+ the artifact — a done with no result is indistinguishable from a check nobody ran.
+ Bank a refusal exactly as carefully as a confirmation.
+
+ Your notes so far, to crib from: —
+
+ Bank it and stamp the ledger
+
+
+ This runs make record for you: the ledger gets the verdict and
+ the date, the guide is regenerated, and gate:validation re-runs. What it will not do
+ is the tunes work above — that needs judgement, so it stays yours.
+
+
+
+
+ 0/${steps.length} steps
+ banked
+
+
+
+
+
+
+
+`;
+}
+
+const EXTRA_CSS = `
+/* The session's own chrome. Everything above this line is the shared card
+ renderer, so a step reads identically here and in the field guide. */
+textarea { display: block; width: 100%; margin: 8px 0 0; padding: 10px 12px;
+ background: #0a0d12; color: var(--text); border: 1px solid var(--line); border-radius: 9px;
+ font: 15px/1.5 ui-serif, Georgia, serif; resize: vertical; }
+textarea:focus-visible { outline: 2px solid var(--amber); outline-offset: 1px; }
+.note { margin: 10px 0 0; }
+.note label { font: 600 11px/1 var(--mono); letter-spacing: .14em; text-transform: uppercase;
+ color: var(--dim); }
+
+.tool-card { border-color: var(--amber); }
+.tool-open { display: inline-block; margin: 6px 0 2px; padding: 12px 18px; border-radius: 10px;
+ background: var(--amber); color: #10141a; font: 600 16px/1 ui-sans-serif, system-ui, sans-serif;
+ text-decoration: none; min-height: 44px; box-sizing: border-box; }
+
+.bank { border-color: var(--green); }
+.bank .draft { margin: 10px 0 0; font-size: 14px; color: var(--dim); }
+.bank-row { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; margin: 12px 0 4px; }
+#bank { padding: 13px 20px; min-height: 44px; border: 0; border-radius: 10px;
+ background: var(--green); color: #0d1512; font: 600 16px/1 ui-sans-serif, system-ui, sans-serif;
+ cursor: pointer; }
+#bank[disabled] { opacity: .5; cursor: default; }
+#bank-say { font-size: 15px; color: var(--dim); }
+
+/* Progress and a save state, and nothing else. Anything resembling a score
+ belongs to the scorer, which runs afterwards and not here. */
+.bar { position: fixed; left: 0; right: 0; bottom: 0; display: flex; justify-content: space-between;
+ gap: 16px; padding: 10px 16px calc(10px + env(safe-area-inset-bottom));
+ background: #0a0d12ee; border-top: 1px solid var(--line); backdrop-filter: blur(8px);
+ font: 600 13px/1.4 var(--mono); letter-spacing: .04em; }
+.bar .ok { color: var(--green); }
+.bar .pending { color: var(--amber); }
+.bar .lost { color: #e07a6a; }
+body { padding-bottom: 72px; }
+`;
+
+/**
+ * The client. Three jobs: restore what the transcript already knows, post every
+ * change immediately, and be visibly honest when a post did not land.
+ *
+ * That last one is the whole contract. A capture surface that drops writes
+ * quietly is worse than the download it replaced, because the download at least
+ * failed where you could see it.
+ */
+const JS = `
+(function () {
+ var TOKEN = document.body.dataset.token;
+ var queue = [], flushing = false, lost = 0;
+ var saved = document.getElementById("saved");
+ var prog = document.getElementById("prog");
+ var total = ${steps.length};
+
+ function say() {
+ if (lost) { saved.textContent = lost + " not banked — retrying"; saved.className = "lost"; }
+ else if (queue.length || flushing) { saved.textContent = "banking…"; saved.className = "pending"; }
+ else { saved.textContent = "banked"; saved.className = "ok"; }
+ }
+
+ function post(event) { queue.push(event); say(); flush(); }
+
+ function flush() {
+ if (flushing || !queue.length) return;
+ flushing = true;
+ var event = queue[0];
+ fetch("/api/event?t=" + encodeURIComponent(TOKEN), {
+ method: "POST", headers: { "content-type": "application/json" },
+ body: JSON.stringify(event), keepalive: true,
+ }).then(function (r) {
+ if (!r.ok) throw new Error(r.status);
+ queue.shift(); lost = 0; flushing = false; say(); flush();
+ }).catch(function () {
+ // Keep it queued and keep saying so. Retrying forever is right here: the
+ // server is on this machine or this LAN, so a failure is almost always a
+ // sleep or a Ctrl-C, and the work is worth more than the tidiness.
+ lost = queue.length; flushing = false; say(); setTimeout(flush, 1500);
+ });
+ }
+
+ function progress() {
+ var n = document.querySelectorAll("input[data-step]:checked").length;
+ prog.textContent = n + "/" + total + " steps";
+ }
+
+ document.querySelectorAll("input[data-step]").forEach(function (box) {
+ box.addEventListener("change", function () {
+ post({ kind: "step", stepId: box.dataset.stepId || null,
+ index: Number(box.dataset.stepIndex), do: box.dataset.stepDo,
+ state: box.checked ? "done" : "undone" });
+ progress();
+ });
+ });
+
+ var timers = {};
+ document.querySelectorAll("textarea[data-note]").forEach(function (area) {
+ area.addEventListener("input", function () {
+ // Debounced, not per-keystroke: the transcript is append-only and a line
+ // per character would bury the reading. Short enough that a closed lid
+ // costs at most the last sentence.
+ clearTimeout(timers[area.dataset.note]);
+ timers[area.dataset.note] = setTimeout(function () {
+ post({ kind: "note", stepId: area.dataset.note, text: area.value });
+ }, 600);
+ });
+ area.addEventListener("blur", function () {
+ clearTimeout(timers[area.dataset.note]);
+ post({ kind: "note", stepId: area.dataset.note, text: area.value });
+ });
+ });
+
+ // What the transcript already holds, so a reload or a second device picks up
+ // where the first left off rather than looking like a fresh session.
+ fetch("/api/state?t=" + encodeURIComponent(TOKEN)).then(function (r) { return r.json(); })
+ .then(function (s) {
+ (s.stepStates || []).forEach(function (st) {
+ var sel = st.stepId
+ ? 'input[data-step-id="' + CSS.escape(st.stepId) + '"]'
+ : 'input[data-step-index="' + st.index + '"]';
+ var box = document.querySelector(sel);
+ if (box) box.checked = st.state === "done";
+ });
+ (s.notes || []).forEach(function (n) {
+ var area = document.querySelector('textarea[data-note="' + CSS.escape(n.stepId) + '"]');
+ if (area) area.value = n.text;
+ });
+ document.getElementById("draft").textContent = s.draft || "—";
+ progress();
+ }).catch(function () { lost = 1; say(); });
+
+ var bank = document.getElementById("bank");
+ var bankSay = document.getElementById("bank-say");
+ bank.addEventListener("click", function () {
+ var text = document.getElementById("verdict").value.trim();
+ if (!text) { bankSay.textContent = "The verdict in words IS the artifact — say what you saw."; return; }
+ bank.disabled = true; bankSay.textContent = "recording…";
+ fetch("/api/record?t=" + encodeURIComponent(TOKEN), {
+ method: "POST", headers: { "content-type": "application/json" },
+ body: JSON.stringify({ result: text }),
+ }).then(function (r) { return r.json(); }).then(function (out) {
+ bankSay.textContent = out.ok
+ ? "Banked. Now do what tunes says — see the terminal."
+ : "make record refused: " + (out.error || "see the terminal");
+ bank.disabled = !out.ok;
+ }).catch(function () { bank.disabled = false; bankSay.textContent = "could not reach the session — is it still running?"; });
+ });
+
+ say();
+})();
+`;
+
+/**
+ * The shim a check's own tool finds waiting for it.
+ *
+ * Injected into any page served at `/tool`, before that page's own scripts, so
+ * a tool can post structured answers into the transcript without knowing
+ * anything about this server beyond one function. A tool opened straight off
+ * the filesystem finds no shim and keeps whatever offline behaviour it already
+ * had — which is why this is an opt-in call and not an interception.
+ */
+const SHIM = (token) => ``;
+
+/**
+ * Put the shim in front of the tool's own scripts, and say so — or refuse.
+ *
+ * The first version of this looked for `` and nothing else, which is a
+ * reasonable-looking assumption and wrong: a generated single-file tool very
+ * often opens `…` and never writes a
+ * head tag at all, because the parser supplies one. The tool then loaded with no
+ * sink on the window, took its own documented fallback, and wrote a file to the
+ * downloads folder — correct behaviour for a page opened off the filesystem, and
+ * a silent lie about a page served from here.
+ *
+ * So: three anchors, tried in order, and a caller that fails loudly rather than
+ * serving a page that will quietly bank nothing. Never prepend ahead of a
+ * doctype — that is how a page ends up in quirks mode, which would break the
+ * tool's layout to fix its reporting.
+ */
+const ANCHORS = [/]*)?>/i, /]*>/i, /]*)?>/i];
+
+function injectShim(html, token) {
+ for (const re of ANCHORS) {
+ const m = html.match(re);
+ if (m) return { html: html.replace(re, (hit) => hit + SHIM(token)), at: m[0].slice(0, 24) };
+ }
+ // No doctype, no html, no head: a fragment, and there is nothing to displace.
+ if (!/^\s* {
+ let raw = "";
+ // A ceiling, because one of the tools posts a whole ruling and an unbounded
+ // read on a LAN-bound socket is somebody else's denial of service.
+ req.on("data", (c) => {
+ raw += c;
+ if (raw.length > 4e6) reject(new Error("too big"));
+ });
+ req.on("end", () => {
+ try {
+ resolve(JSON.parse(raw || "{}"));
+ } catch (e) {
+ reject(e);
+ }
+ });
+ req.on("error", reject);
+ });
+}
+
+const server = createServer(async (req, res) => {
+ const url = new URL(req.url ?? "/", `http://${req.headers.host ?? "localhost"}`);
+ const path = url.pathname;
+
+ // Every route that reads or writes the transcript is behind the token. The
+ // page itself is not: it carries the token, so serving it is how you get one,
+ // and it holds nothing a stranger could not read in the repo anyway.
+ const authed = url.searchParams.get("t") === TOKEN;
+ if (path.startsWith("/api/") && !authed) return json(res, 403, { ok: false, error: "bad token" });
+
+ if (path === "/" || path === "/index.html") {
+ res.writeHead(200, { "content-type": TYPES[".html"] });
+ return res.end(page());
+ }
+
+ if (path === "/tool") {
+ if (!authed) return json(res, 403, { ok: false, error: "bad token" });
+ if (!tool || !toolReady) {
+ res.writeHead(404, { "content-type": "text/plain; charset=utf-8" });
+ return res.end("this check declares no tool, or it has not been built yet");
+ }
+ const shimmed = injectShim(readFileSync(join(ROOT, tool.path), "utf8"), TOKEN);
+ if (!shimmed.html) {
+ // Refusing beats serving it. A tool that loads without the sink falls back
+ // to its offline behaviour and looks like it is working, and the session
+ // ends with an empty transcript and a file in the downloads folder.
+ console.log(`\n ! ${tool.path} has nowhere to put the session shim — serving it would bank nothing.`);
+ res.writeHead(500, { "content-type": "text/plain; charset=utf-8" });
+ return res.end("this tool has nowhere to put the session shim — it would bank nothing, so it is not being served");
+ }
+ console.log(` tool opened · shim after ${shimmed.at}`);
+ res.writeHead(200, { "content-type": TYPES[".html"] });
+ return res.end(shimmed.html);
+ }
+
+ // The runbook's screenshots, from where `make shots` writes them.
+ if (path.startsWith("/shots/")) {
+ const file = join(SHOTS_DIR, basename(path));
+ if (!existsSync(file)) {
+ res.writeHead(404, { "content-type": "text/plain" });
+ return res.end("no shot");
+ }
+ res.writeHead(200, { "content-type": TYPES[extname(file)] ?? "application/octet-stream" });
+ return res.end(readFileSync(file));
+ }
+
+ if (path === "/api/state") {
+ const events = readSession(logPath);
+ const s = summarise(events);
+ const stepStates = [];
+ for (const e of events) {
+ if (e.kind !== "step") continue;
+ const at = stepStates.findIndex((x) => (x.stepId ?? null) === (e.stepId ?? null) && x.index === e.index);
+ const row = { stepId: e.stepId ?? null, index: e.index, state: e.state };
+ if (at >= 0) stepStates[at] = row;
+ else stepStates.push(row);
+ }
+ return json(res, 200, { stepStates, notes: s.notes, draft: draftResult(s), observations: s.observations });
+ }
+
+ if (path === "/api/event" && req.method === "POST") {
+ let event;
+ try {
+ event = await body(req);
+ } catch {
+ return json(res, 400, { ok: false, error: "unreadable" });
+ }
+ append(logPath, event);
+ return json(res, 200, { ok: true });
+ }
+
+ // A tool's finished output, written where its scorer already expects to find
+ // it. This is the half of the download that was worth keeping: the file, at a
+ // path the next command can be told. What is dropped is the hunting.
+ if (path === "/api/artifact" && req.method === "POST") {
+ let payload;
+ try {
+ payload = await body(req);
+ } catch {
+ return json(res, 400, { ok: false, error: "unreadable" });
+ }
+ // The raw name, not its basename. Sanitising `../../../etc/evil.json` down
+ // to `evil.json` and writing it would be safe — it lands in the same
+ // directory either way — but it would also report success for a name the
+ // caller plainly did not mean, which turns a bug in a tool into a file
+ // nobody goes looking for. Refuse anything that is not already a bare name.
+ const name = String(payload.name ?? "");
+ if (!/^[A-Za-z0-9._-]+\.json$/.test(name)) return json(res, 400, { ok: false, error: "bad name" });
+ const out = join(ROOT, "packages", "etl", "out", name);
+ writeFileSync(out, `${JSON.stringify(payload.json, null, 2)}\n`, "utf8");
+ append(logPath, { kind: "artifact", name, path: `packages/etl/out/${name}` });
+ console.log(`\n artifact → packages/etl/out/${name}`);
+ return json(res, 200, { ok: true, path: `packages/etl/out/${name}` });
+ }
+
+ if (path === "/api/record" && req.method === "POST") {
+ let payload;
+ try {
+ payload = await body(req);
+ } catch {
+ return json(res, 400, { ok: false, error: "unreadable" });
+ }
+ const result = String(payload.result ?? "").trim();
+ if (!result) return json(res, 400, { ok: false, error: "no verdict" });
+
+ append(logPath, { kind: "verdict", result });
+ const ran = spawnSync(
+ process.execPath,
+ [join(ROOT, "scripts", "record-validation.mjs"), "--check", id, "--result", result],
+ { stdio: "inherit", cwd: ROOT },
+ );
+ if (ran.status !== 0) return json(res, 200, { ok: false, error: `record exited ${ran.status}` });
+ banked = true;
+ goodbye();
+ return json(res, 200, { ok: true });
+ }
+
+ res.writeHead(404, { "content-type": "text/plain; charset=utf-8" });
+ res.end("not here");
+});
+
+// Whether this sitting ended with a verdict written into the ledger. Read on the
+// way out; a session that stops without one is normal and says so.
+let banked = false;
+
+server.listen(port, "0.0.0.0", () => {
+ const lan = process.env.LAN_IP;
+ console.log(`\n ${check.title}`);
+ console.log(` ${check.id} · ${check.status}${check.blocks?.length ? ` · blocks ${check.blocks.join(", ")}` : ""}\n`);
+ console.log(` Here: http://localhost:${port}/`);
+ if (lan) console.log(` Same Wi-Fi: http://${lan}:${port}/`);
+ console.log(`\n Ticks, notes and answers land in docs/validation/sessions/${basename(logPath)}`);
+ console.log(` as you make them. Ctrl-C when you are done — nothing is lost by stopping.\n`);
+ if (tool && !toolReady) {
+ console.log(` ! ${tool.path} is not built yet — run the setup commands above first.\n`);
+ }
+ if (!flag("no-open") && process.platform === "darwin") {
+ // `?s=` is a cache-buster, and it is not optional. `open` hands the URL to
+ // the browser, and a browser with a tab already pointed at exactly this URL
+ // brings that tab to the front rather than loading anything — so a stale tab
+ // from whatever last used this port appears, looking like the session and
+ // failing like one. A per-run query makes it a URL no tab can already hold.
+ spawn("open", [`http://localhost:${port}/?s=${TOKEN}`], { stdio: "ignore", detached: true }).unref();
+ }
+});
+
+/**
+ * What was captured, and the one command that turns it into a ledger entry.
+ *
+ * Printed on the way out rather than only at the end of a successful bank,
+ * because stopping early is a normal thing to do — the runbook for the
+ * adjudication check tells you in as many words to stop when you get tired.
+ */
+function goodbye() {
+ const s = summarise(readSession(logPath));
+ console.log(`\n ── session over ────────────────────────────────────────────`);
+ console.log(` transcript docs/validation/sessions/${basename(logPath)}`);
+ console.log(` steps ${s.stepsDone}/${steps.length}`);
+ console.log(` notes ${s.notes.length}`);
+ if (s.observations) console.log(` answers ${s.observations} recorded from the tool`);
+ for (const a of s.artifacts) console.log(` artifact ${a.path}`);
+ if (banked || s.verdict) {
+ console.log(`\n Banked: ${(s.verdict?.result ?? "").slice(0, 120)}`);
+ console.log(` Now do what its 'tunes' list says — that is what the check was bought for.\n`);
+ } else {
+ console.log(`\n Not banked yet. When you have a verdict:`);
+ console.log(` make record CHECK=${id} RESULT='${draftResult(s).replace(/'/g, "’") || ""}'`);
+ console.log(` Re-running 'make session CHECK=${id}' picks this transcript back up.\n`);
+ }
+}
+
+process.on("SIGINT", () => {
+ goodbye();
+ process.exit(0);
+});
From 7277515381c1be19c9b7b1450138fc3a898d681a Mon Sep 17 00:00:00 2001
From: Omar Eid
Date: Wed, 12 Aug 2026 11:32:08 -0500
Subject: [PATCH 2/2] The registers learn that a preference is not a distance
Two rows where there was one. placement-correction-by-eye was carrying both
halves of a question it can only answer half of: a forced choice returns one
bit per trial, so it can confirm that our correction points the right way and
is structurally incapable of confirming that it goes far enough. Every
threshold in mark-registration.md's section 7 is a claim about distance.
So placement-residual-by-hand joins it in the ledger, section 10 item 7
states the gap in the design doc, and the issue that was open on the first
question is scoped rather than rewritten -- it now says what it can never
deliver, so that nobody six months from now reads a preference as a distance.
The two verdicts are scored separately and never summed, and the sessions
should not be worked back to back by the same person.
The other registers follow: four pointers in the code map, two rules in the
extend skill about instruments and about measuring the hand in the same
sitting as the thing the hand measured, and a transcripts README saying why
a sitting is written down as it happens.
Also here, from the same stretch of work: the decisions register and its
rendered face, the tajweed-colours record and its options page, the mark
granularity options page, mark-labels.md, and CLAUDE.md -- which says the
thing all of this is in service of, that a decision is explained in plain
language or it is not explained.
Co-Authored-By: Claude Opus 5
Claude-Session: https://claude.ai/code/session_01EuhvbUKjGesE3uMhjCzBGt
---
.claude/skills/decide/SKILL.md | 170 ++++
.claude/skills/validate/SKILL.md | 117 ++-
CLAUDE.md | 93 ++
docs/decisions.json | 287 ++++++
docs/decisions/README.md | 79 ++
docs/decisions/tajweed-colours.md | 185 ++++
docs/design/mark-granularity.data.json | 687 +++++++++++++
docs/design/mark-granularity.html | 654 ++++++++++++
docs/design/mark-labels.md | 568 +++++++++++
docs/design/mark-registration.md | 941 ++++++++++++++++++
docs/design/sub-word-marks.md | 15 +
docs/design/tajweed-colours.html | 795 +++++++++++++++
docs/issues.json | 90 ++
docs/issues.md | 17 +-
docs/map.json | 188 +++-
docs/validation/guide.html | 236 ++++-
docs/validation/ledger.json | 203 +++-
...-12T1357-placement-correction-by-eye.jsonl | 6 +
docs/validation/sessions/README.md | 75 ++
19 files changed, 5388 insertions(+), 18 deletions(-)
create mode 100644 .claude/skills/decide/SKILL.md
create mode 100644 CLAUDE.md
create mode 100644 docs/decisions.json
create mode 100644 docs/decisions/README.md
create mode 100644 docs/decisions/tajweed-colours.md
create mode 100644 docs/design/mark-granularity.data.json
create mode 100644 docs/design/mark-granularity.html
create mode 100644 docs/design/mark-labels.md
create mode 100644 docs/design/mark-registration.md
create mode 100644 docs/design/tajweed-colours.html
create mode 100644 docs/validation/sessions/2026-08-12T1357-placement-correction-by-eye.jsonl
create mode 100644 docs/validation/sessions/README.md
diff --git a/.claude/skills/decide/SKILL.md b/.claude/skills/decide/SKILL.md
new file mode 100644
index 0000000..54d32c6
--- /dev/null
+++ b/.claude/skills/decide/SKILL.md
@@ -0,0 +1,170 @@
+---
+name: decide
+description: Put an open question in front of a person in a form they can actually answer — what is being decided and why now, what the world outside this repo does about it, what we have already decided that constrains it, the options drawn on real data, and what we are choosing not to consider. Registered in docs/decisions.json. Use when a decision needs making and the choice is not obvious, when writing or reviewing an options page, or when recording a decision that has just been made.
+---
+
+# Putting a decision in front of a person
+
+Two failures, and the second is the common one.
+
+The first is a page nobody outside this code can read — written in file names and our own
+vocabulary, so it has to be re-derived before it can be used. That is the `CLAUDE.md` tenet,
+and the second half of this document is that rule as a checklist.
+
+The second is a page that is *legible and still not answerable*: here are three options, pick
+one. A person cannot pick one, because the options are the last thing they need and the first
+thing they were given. They do not know why this is being asked now, what happens if nothing
+is chosen, whether anyone else has solved it already, or which of our earlier decisions have
+quietly ruled half the space out. So they either rubber-stamp the recommendation or defer,
+and both of those are the decision being made by whoever wrote the page.
+
+**A decision record answers the questions below, in roughly this order.** Not every one needs
+a section, and a short decision should stay short — but each one that goes unanswered should
+go unanswered *on purpose*, and you should be able to say why.
+
+## The questions a record has to answer
+
+**1 · What is being decided?** One question, in plain words, that a person could answer with
+one of the options. Not a topic — a question. This is the sentence that goes in the register.
+
+**2 · Why is this being asked now?** What forced it. A measurement that came back, a feature
+that cannot be built until this is settled, a defect that turned out to be a design gap.
+"It seemed worth thinking about" is a real answer and worth writing, because it tells the
+reader they are allowed to say *not yet*.
+
+**3 · What happens if nobody decides?** Say the cost of the status quo out loud, and be
+honest when it is small. Some questions can sit open for a year at no cost, and a reader who
+learns that from the page will spend their attention on a different one. Say what *else* is
+blocked behind it — decisions with nothing waiting on them are cheaper to leave open than
+they look.
+
+**4 · What does the app do today, and what is it costing?** Measured, not remembered. The
+status quo is always one of the options, and it deserves the same evidence as the others.
+Numbers here are the strongest thing on the page: the mark-granularity decision turned on
+one — that 83% of what is annotated renders as nothing — and no paragraph would have produced
+it.
+
+**5 · What do people outside this project do about this?** Prior art, and name it. Other
+mus'haf apps, the printed tradition, published guidance, how comparable software solves the
+comparable problem. Link what you find. Two rules:
+
+- **If you did not look, say you did not look.** A record silent about prior art reads as one
+ that found none, which is a much stronger claim than the truth.
+- **Say why the answer does not transfer**, when it does not. The reference points here are
+ often print, and print has no state, no accessibility tree and no 150 KB budget. A
+ convention that exists because of a printing press is evidence about readers, not about
+ implementations.
+
+**6 · What have we already decided that touches this?** Name the earlier decisions by their
+row in the register, and say what each one *constrains* — not just that it is related. This
+is the question that most often turns a three-option page into a two-option one, and it is
+the one nobody remembers to ask, because the constraint feels obvious to whoever is holding
+it and is invisible to everyone else. If an earlier decision would have to be reopened for an
+option to work, that option is not on this page; it is on a bigger one.
+
+**7 · What are the options?** Each one **drawn**, on real data, at the size it would really
+be used — see the checklist below. Each with what it takes, what it gets, what it costs.
+Doing nothing is always on the list and is often right.
+
+**8 · What else could we consider, and why is it not here?** The options you thought about
+and left off, with the reason. This is where a reader adds the one you missed. A page whose
+option list arrives with no visible edge invites the reader to trust that the edge was
+somewhere sensible, and it usually was not.
+
+**9 · What would change the answer?** The measurement, the device, the person, or the
+upstream change that would make a different option win. This is what makes a decision
+reopenable on evidence rather than on mood, and it is what you check against when somebody
+asks a year later why it was done this way.
+
+**10 · What is this not settling?** State the gap on the page. An options page that reads as
+complete when it is not is worse than one that admits its edge, because the gap gets
+discovered after the choice instead of before it.
+
+## The plain-language rule, as a checklist
+
+Run this over anything you are about to publish. Every line is a way a page stops being
+answerable by the person it is for.
+
+**Headings**
+
+- [ ] Every section heading is a **question a reader might arrive holding**. "What is it
+ leaving out?" — not "Discarded annotations". A noun-phrase heading is describing the
+ machinery instead of answering the reader.
+- [ ] The last heading is the decision itself: *so what is being decided?*
+
+**Words**
+
+- [ ] No file names, paths, function names, gate names, or commands anywhere a reader is
+ meant to follow. They belong in the body of the record, where the reasons are.
+- [ ] Domain words stay — *verse*, *tajweed*, *madd*, *ghunnah*, *mus'haf*, *waṣl*. A reader
+ of this app knows them, and translating them out makes the page vaguer, not simpler.
+- [ ] Our words for our plumbing go — *salience*, *shard*, *skin*, *family*, *pipeline*,
+ *annotation*. If one is load-bearing, say the thing it means instead.
+- [ ] A short glossary near the top for the domain words. Three or four lines, once.
+- [ ] Read the page out loud as if to someone who has never seen the app. Every place you
+ would have to add a sentence of explanation is a place the page is missing one.
+
+**Evidence**
+
+- [ ] Each option is **drawn**, at the size it would really be used. Not described.
+- [ ] It is drawn on real data from this project, not a mock. A mock cannot surprise you, and
+ the surprise is the reason to draw it — a wash that turns out invisible at print size
+ has answered the question no paragraph would have.
+- [ ] Any number on the page can be re-derived by running the generator.
+- [ ] No option is written to lose. If one is obviously worse, either it is not a real option
+ or the page is arguing rather than presenting.
+
+## Building it
+
+The page is generated from committed data by a script, so the numbers stay true and anybody
+can rebuild it. Split the generator when the data needs something not in the repo: an
+`--extract` mode that reads whatever large local cache is involved and writes a small JSON of
+findings, and a default mode that renders from **committed bytes only**. Then the page
+rebuilds on a fresh clone and the expensive half runs once.
+
+Two outputs, and the gate refuses one without the other:
+
+- **the checked-in page**, under `docs/`, a full HTML document — a fragment renders in quirks
+ mode from `file://`, which is where it is read from
+- **the published copy**, which is what a person is actually sent
+
+The published copy is served under a policy that blocks every external host, so **inline
+everything**: no relative URLs, no CDN links, no external fonts. A referenced asset does not
+error, it silently renders nothing. Where the same picture repeats, define it once and
+reference it rather than embedding several copies.
+
+Before publishing, check what the bytes carry. This repo ships **no Qur'an text** — a
+standing rule kept by the shipped bytes, not only by policy. A page built from mus'haf assets
+must contain zero Arabic codepoints and no text elements; the vendored print is outlined
+paths, so it does not, but verify rather than assume.
+
+## Registering it
+
+A decision that is not in the register does not exist — nothing counts it as open, and
+nothing notices when it goes stale.
+
+```
+ add a row to docs/decisions.json question, status, options, artifact, page, builtBy, doc, related
+ make decisions-doc re-render docs/decisions/README.md
+ pnpm gate:decisions the check
+```
+
+The row stores **one sentence of its own**: the plain-language question. Everything else it
+points at. Do not summarise the decision into the register — the record owns the answer, and a
+copy would be right for a while and then quietly stop being right.
+
+`artifact` is the published link; `page` is the same page checked in here. Both, always: a
+link with no copy dies when the host does, and a copy with no link cannot be sent to anybody.
+The record named in `doc` has to link to each, or its argument is about a picture the reader
+cannot reach.
+
+`related` lists the ids of decisions that constrain or are constrained by this one — question
+6, made machine-checkable. It is the one piece of a decision that no single record can hold,
+because relatedness is a fact about a pair, and the second half is usually written months
+after the first. Fill it in **both** directions; the gate says so, since a link a reader can
+only follow one way is one they will not find from the end they are standing at.
+
+When the decision is made: set `decided` to the option that won, `status` to decided, and `by`
+and `date` to who chose and when. The losing options stay on the page. They are the reason the
+choice was a choice, and the next person to reopen this will want them — along with question
+9's answer, which is what tells them whether anything has actually changed.
diff --git a/.claude/skills/validate/SKILL.md b/.claude/skills/validate/SKILL.md
index 795cfa9..57f94d9 100644
--- a/.claude/skills/validate/SKILL.md
+++ b/.claude/skills/validate/SKILL.md
@@ -307,10 +307,12 @@ and the fix it names is that one command.
3. Pick one. Read it here with `make validate CHECK=`; a step a producer
discharged prints as `[machine] …` with the command and the date, and you skip
it.
-4. If it happens on a phone (most of them do), `make guide` and open the printed
- LAN URL on the phone — same runbook, tickable, with the checkboxes persisted
- so a screen lock does not lose the walkthrough. Run the check's own `setup`
- commands (e.g. `make phone-perf`) in a second terminal.
+4. Open the runbook where the check actually happens. Two surfaces, same source:
+ `make guide` for the phone (every check, tickable, nothing written down), or
+ `make session CHECK=` for the one you are about to work (a single check,
+ everything you tick or type banked to a transcript as you do it — see below).
+ Run the check's own `setup` commands (e.g. `make phone-perf`) in a second
+ terminal either way.
5. `make record CHECK= RESULT=''`. The words are the
artifact: a `done` with no result is indistinguishable from a check nobody ran.
Recording stamps the ledger, regenerates the guide, and re-runs the gate.
@@ -334,14 +336,78 @@ check that tunes nothing, a pending human check with no runbook (nobody can run
it, so it will sit there looking tracked), or a `guide.html` that was not
regenerated after the ledger moved.
+### Co-working a check — `make session`
+
+```bash
+make session CHECK= # resume an unbanked sitting, or start one
+make session CHECK= NEW=1 # start a fresh transcript regardless
+make session CHECK= PORT=4180
+```
+
+One check, drawn from the same renderer the field guide uses, served on the LAN so
+the phone can hold it — and, unlike the guide, it **writes**. Every box ticked,
+every note typed, and every answer a check's own tool reports lands in
+`docs/validation/sessions/-.jsonl` at the moment it happens. At the end
+the page banks the verdict into the ledger for you (it runs `make record`), or
+prints the `make record` line pre-filled from what you wrote if you would rather
+say it yourself.
+
+The gap this closes is an ordering problem, not a documentation one. The ledger's
+`result` has always been typed after the walkthrough was over, so what you noticed
+at step four survived only if you were still holding it at step ten. Here the
+observation is on disk while the step is still in front of you.
+
+Four properties, each load-bearing:
+
+- **It cannot score.** The page shows how far through you are and whether the last
+ write landed, and nothing else. `placement-correction-by-eye` is a blind forced
+ choice whose validity rests on nobody — the worker included — knowing how it is
+ going while it is going, and a running tally would quietly turn the measurement
+ into a training exercise. `summarise()` in `scripts/lib/session-log.mjs` is
+ arithmetic only for exactly this reason.
+- **It is not a second ledger.** Nothing reads a transcript to decide whether a
+ check passed. `docs/validation/sessions/README.md` is the format; the ledger
+ stays the register.
+- **A dropped write is visible.** The client retries forever and shows an
+ unmissable "N not banked" pill while it does. A capture surface that loses
+ writes quietly is worse than the download it replaced, which at least failed
+ where you could see it.
+- **The server binds `0.0.0.0`, so every write route carries a per-run token.**
+ The URL printed in your terminal has it; a second thing on the Wi-Fi does not.
+ The integrity argument is the real one — these files are treated as evidence.
+
+**Giving a check its own tool.** A check whose work is a purpose-built page
+declares it in the ledger, beside the runbook that builds it:
+
+```json
+"runbook": {
+ "tool": { "path": "packages/etl/out/mark-adjudication.html", "label": "…", "note": "…" }
+}
+```
+
+The session serves that file with a small sink injected, and the page opts in:
+
+```js
+window.HIFTH_SESSION?.post("observation", { … }); // one answer, as it is given
+window.HIFTH_SESSION?.artifact("ruling.json", { … }); // the file, at the end
+```
+
+Both calls are optional by construction. Opened as a plain file — still supported,
+still the documented fallback — the sink is absent, the calls do nothing, and the
+tool keeps whatever offline behaviour it had. **Never send the sink anything the
+page is not supposed to know**: the adjudication tool posts *which panel was
+chosen* and never whether it was right, because the answer key does not exist
+until the scorer rebuilds it from the seed, and a reporting path is the last place
+that should be where it leaks.
+
### `evidence` — the half a machine *can* run, written down
A check may carry an `evidence` block: one command (`run`), the runbook step
**ids** it discharges (`covers`), and the `residue` it cannot. `make validate-auto`
runs each one and writes the real exit code into
`docs/validation/evidence/.json`; the terminal and the guide read those
-records and strike the covered steps off. Three of the six checks have one today
-— `source-offer-resolves`, `kfgqpc-terms-primary-source`, `edge-spot-audit`.
+records and strike the covered steps off. Three checks have one today —
+`source-offer-resolves`, `kfgqpc-terms-primary-source`, `edge-spot-audit`.
Four rules, each of them load-bearing:
@@ -439,6 +505,45 @@ verdict.
If a whole *class* of edge turns out wrong, that is a filter in
`packages/etl/scripts/build-adjacency.mjs`, not twenty more rejections.
+### The placement adjudication — asking without telling
+
+The second check with a dedicated tool, and the one to copy when a measurement
+here needs a person to settle it. Steps:
+`make validate CHECK=placement-correction-by-eye`.
+
+**Never show someone a verdict and ask if they agree.** They agree. The
+measurement sounds confident, the honest answer to "does this look right" is "I
+suppose so", and what comes back is the machine's own opinion with a human's name
+on it — indistinguishable from evidence, and worthless. This check exists because
+the surface that already existed (a page of worst-first verdicts, each drawn with
+the expected outline beside the claimed rectangle) is exactly that mistake, and it
+sat unworked for weeks partly because nobody could say what working it would
+prove.
+
+**The shape that does work.** A forced choice between two candidates, nothing on
+the screen saying which is ours, and — the part that makes it evidence rather
+than a promise — no answer key on disk. `pnpm adjudicate:marks` plans the session
+from a seed; `pnpm adjudicate:score` rebuilds the same session from the same seed
+afterwards and only then knows which panel was which. Nobody had to be trusted not
+to peek, because for the twenty minutes that mattered there was nothing to peek
+at. The scorer refuses outright (exit 2) if the underlying measurement moved
+between building the session and scoring it.
+
+**A session carries its own controls, and they are not optional.** An easy
+condition (a rectangle a whole letter off) so a session worked while distracted
+fails visibly instead of adding noise; an unanswerable one (the same rectangle
+twice) so a person who always picks something is caught; and a decoy displaced the
+*same distance in another direction*, which does two jobs — it measures whether an
+eye can resolve a difference that small at all, and it breaks the pattern that
+would otherwise be learnable within twenty trials. Without the decoy, "people did
+not prefer our correction" and "people cannot see a shift this small" are the same
+number, and only one of them is a finding about the data.
+
+**Bank the refusal as carefully as the confirmation.** The most valuable outcome
+this can produce is *the decoys were seen clearly and ours still lost* — our
+correction is wrong, not the test blunt — and it is the outcome most likely to be
+left in a terminal scrollback. `make record` either way.
+
---
## Adding a validation
diff --git a/CLAUDE.md b/CLAUDE.md
new file mode 100644
index 0000000..546f0a1
--- /dev/null
+++ b/CLAUDE.md
@@ -0,0 +1,93 @@
+# Working in this repo
+
+## Decisions are explained in plain language, or they are not explained
+
+This is the tenet. Everything below is how it is enforced.
+
+Hifth is for huffaz, and its decisions get made by people who are not in the weeds of this
+code — including the person who owns it, six months from now, and anyone they show it to.
+So **every options page and every decision record must be followable by someone who has
+never opened this repository.** Concretely:
+
+- **Headings are questions.** "What does the app colour today?", not "Current salience
+ model". A reader arrives holding a question; the page's headings are how they find it.
+- **No internal identifiers in the prose a reader is meant to follow.** No file names, no
+ function names, no gate names, no commands, no backticked code in a question or an option
+ label. Those belong in the record's body, where the reasons live, and in the code map —
+ not in the sentence a stranger has to understand before they can have an opinion.
+- **Domain words stay; jargon goes.** *Verse*, *tajweed*, *madd*, *ghunnah*, *mus'haf* are
+ the subject and a reader of this app knows them — but define each one once, in a short
+ glossary near the top. *Salience*, *shard*, *skin*, *family*, *ETL* are our words for our
+ plumbing, and a reader should never need them to choose between options.
+- **Show it, do not only argue it.** An options page draws each option on a real page of the
+ mus'haf, at the size it would actually be used. A wash you cannot see at that size is an
+ answer, and it is one no paragraph would have given you.
+
+### Legible is not the same as answerable
+
+The second failure is quieter than the first: a page anyone can read, which still nobody can
+act on, because it opens with three options and the options are the *last* thing a person
+needs. So a decision — the record and the page both — answers these, in roughly this order:
+
+what is being decided · why it is being asked now · what happens if nobody decides · what
+the app does today and what that costs, measured · what people outside this project do about
+it, linked, and *if you did not look, say you did not look* · what we have already decided
+that constrains it · the options, each one drawn · what else could be considered and why it
+is not here · what would change the answer · what this is not settling.
+
+Not every one needs its own section, and a small decision stays small — but each one skipped
+should be skipped on purpose. The `decide` skill is this list in full.
+
+### The register
+
+`docs/decisions.json` indexes every decision this project has made or is still holding open,
+and `docs/decisions/README.md` is its rendered face. It stores **one sentence of its own** —
+the plain-language question — and points at the record for everything else. Never paraphrase
+a decision into it: a copy is right for a while and then quietly stops being right.
+
+Adding one:
+
+```
+ write the record in docs/decisions/ the reasons, in full
+ add a row to docs/decisions.json the question, the status, the links
+ make decisions-doc re-render the reader's page
+ pnpm gate:decisions it refuses the ways this rots
+```
+
+An **open** decision must carry two things or the gate fails: an `artifact` — the published
+page anyone can open in a browser — and a `page`, the same thing checked into `docs/`. Both,
+always. A link with no copy dies the day the host does; a copy with no link cannot be sent to
+anybody. Whatever is checked in names the script that rebuilds it, and the record links to
+both. The `decide` skill walks the whole thing.
+
+A row also names the decisions that constrain it, in `related` — the one part of a decision
+no single record can hold, because relatedness is a fact about a *pair* and the second half
+is usually written months after the first, by which time the first is not what anybody is
+opening. Say it in both rows; the gate insists, since a link a reader can only follow one way
+is one they will not find from the end they happen to be standing at.
+
+### What the gate actually refuses
+
+A question that is not a question · a question written in file names, paths, symbols or
+commands · an artifact link that is not an absolute `https://claude.ai/…` URL · an artifact
+with no checked-in page, or a page with no link · a page nobody can rebuild · a record that
+never links its own picture · an open decision with fewer than two options · a decision
+marked settled that does not say who settled it · a related decision that does not name it
+back · a record in `docs/decisions/` with no row in the index · a stale `README.md`.
+
+It does **not** refuse an open decision. Unanswered questions are the normal state of a live
+project, and a gate that failed for having one would be switched off inside a week.
+
+## The other registers
+
+Same rule in each: they index, they do not restate.
+
+| register | question it answers | driver |
+| --- | --- | --- |
+| `docs/map.json` | where does this feature live? | `make map` · the `extend` skill |
+| `docs/issues.json` | what is still open, worst first? | `make issues` · the `issues` skill |
+| `docs/use-cases.json` | who uses this, and what proves it? | `make use-cases` |
+| `docs/decisions.json` | what did we decide, and why? | `make decisions` · the `decide` skill |
+| `docs/validation/ledger.json` | what can only a human check? | `make validate` |
+
+`docs/map.json` and every other JSON register is **hand-edited, never generated**.
diff --git a/docs/decisions.json b/docs/decisions.json
new file mode 100644
index 0000000..a5bd335
--- /dev/null
+++ b/docs/decisions.json
@@ -0,0 +1,287 @@
+{
+ "$comment": [
+ "The decision register: one row per question this project has had to answer,",
+ "and the only place that knows they are the same kind of thing.",
+ "",
+ "WHY THIS EXISTS. docs/decisions/ already held fifteen records, and there was",
+ "no way in. Their titles are sentences, not subjects — 'The grain gets finer",
+ "where the finger already is' is a good title and a useless index entry, and a",
+ "reader who has never opened this repo cannot tell from the directory listing",
+ "which file answers the question they arrived with. Worse, the running-table",
+ "habit existed but was scoped to one topic: desktop-vs-mobile.md says 'append",
+ "a row there rather than restating one here', and nothing generalised it, so",
+ "an open decision could sit in a design doc's eighth section for a month with",
+ "nothing anywhere counting it as open.",
+ "",
+ "WHAT IT IS NOT. This file does not restate a decision. It carries no summary",
+ "of the answer and no argument — those live in the record that owns them, and",
+ "a copy here would be right for a while and then quietly stop being right.",
+ "Same rule as docs/issues.json, docs/use-cases.json and the validation ledger:",
+ "an index points, it does not paraphrase. The one sentence this file does own",
+ "is `question`, because the records' own titles are not question-shaped and a",
+ "stranger scanning for their question will not find it in a title.",
+ "",
+ "WHAT IT ADDS. Status, when an open question is still open. The options, when",
+ "there are named options to choose between. And the two links that make an",
+ "option choosable by someone who is not in the weeds of this code: `artifact`,",
+ "the published page anyone can open, and `page`, the same page checked in here",
+ "so it outlives the link. gate:decisions refuses one without the other.",
+ "",
+ "THE FIELDS.",
+ " id kebab-case, unique. The name a task or a PR uses.",
+ " question one plain-language question. No file names, no symbols, no",
+ " repo jargon — the CLAUDE.md tenet, enforced by the gate's",
+ " identifier check. This is the only prose stored here.",
+ " status open — nobody has chosen yet.",
+ " decided — chosen; `doc` holds the record and the reasons.",
+ " living — a running record that is never finished; new rows",
+ " get appended to it rather than a new file made.",
+ " superseded— a later decision replaced it; `supersededBy` says",
+ " which, and the old record stays readable.",
+ " options [{id, label}] — required (2 or more) while `open`. Absent on",
+ " the records written before this register existed: they were",
+ " narrated, not enumerated, and inventing options after the",
+ " fact would be fiction with a schema.",
+ " artifact https://claude.ai/... — the published page. Required while",
+ " `open`: an open question with nothing to look at cannot be",
+ " answered by anyone who is not already holding the code.",
+ " page the same page, checked in, so the decision survives the link",
+ " rotting. Required whenever `artifact` is set, and vice versa.",
+ " builtBy the script that regenerates `page`. A checked-in page nobody",
+ " can rebuild is a screenshot with extra steps.",
+ " doc the record that holds the reasons. Required, always.",
+ " related the ids of decisions that constrain, or are constrained by,",
+ " this one — and the reason each does belongs in the record,",
+ " not here. This is the one fact no single record can hold:",
+ " relatedness is a property of a pair, and the second half is",
+ " usually written months after the first, by which time the",
+ " first has stopped being the thing anyone is reading. The",
+ " gate requires it in both directions, because a link a reader",
+ " can only follow one way is one they will not find from the",
+ " end they happen to be standing at.",
+ " decided the option id that won, when options were enumerated.",
+ " by, date who made the call and when. Required once decided.",
+ "",
+ "Regenerate the reader's copy with `make decisions-doc`; `pnpm gate:decisions`",
+ "fails if this file and docs/decisions/README.md disagree, if a link does not",
+ "resolve, or if a record exists in docs/decisions/ with no row here."
+ ],
+ "decisions": [
+ {
+ "id": "mark-granularity",
+ "question": "Should the app colour tajweed one colour a verse, or should it colour the exact letter a rule lands on?",
+ "status": "open",
+ "options": [
+ {
+ "id": "A",
+ "label": "Leave it as it is — one colour a verse"
+ },
+ {
+ "id": "B",
+ "label": "Colour the exact letter or mark"
+ },
+ {
+ "id": "C",
+ "label": "Prepare the ground, colour nothing yet"
+ }
+ ],
+ "artifact": "https://claude.ai/code/artifact/5f230dff-e4e8-40c6-9c4e-888786eeef9b",
+ "page": "docs/design/mark-granularity.html",
+ "builtBy": "scripts/build-mark-options.mjs",
+ "doc": "docs/design/sub-word-marks.md",
+ "decided": null,
+ "by": null,
+ "date": null,
+ "related": [
+ "word-selection",
+ "loop-6a",
+ "tajweed-colours"
+ ]
+ },
+ {
+ "id": "tajweed-colours",
+ "question": "Should a reader be able to change the colours the app uses for recitation rules, and how many colours are there to change?",
+ "status": "open",
+ "options": [
+ {
+ "id": "A",
+ "label": "Leave the colours fixed"
+ },
+ {
+ "id": "B",
+ "label": "A reader recolours the seven groups"
+ },
+ {
+ "id": "C",
+ "label": "A reader recolours all eighteen rules"
+ },
+ {
+ "id": "D",
+ "label": "Offer a few ready-made schemes, no picker"
+ }
+ ],
+ "artifact": "https://claude.ai/code/artifact/74b37363-d082-45e7-9651-54c47c328844",
+ "page": "docs/design/tajweed-colours.html",
+ "builtBy": "scripts/build-palette-options.mjs",
+ "doc": "docs/decisions/tajweed-colours.md",
+ "decided": null,
+ "by": null,
+ "date": null,
+ "related": [
+ "mark-granularity",
+ "loop-6a"
+ ]
+ },
+ {
+ "id": "desktop-vs-mobile",
+ "question": "When should a wide window behave differently from a phone?",
+ "status": "living",
+ "doc": "docs/decisions/desktop-vs-mobile.md",
+ "related": [
+ "wheel-and-zoom"
+ ]
+ },
+ {
+ "id": "wheel-and-zoom",
+ "question": "Should rolling the mouse wheel magnify the page?",
+ "status": "decided",
+ "doc": "docs/decisions/wheel-and-zoom.md",
+ "by": "omar",
+ "date": "2026-08-06",
+ "related": [
+ "desktop-vs-mobile"
+ ]
+ },
+ {
+ "id": "word-search",
+ "question": "When a reader picks out a few words, what should the app go looking for?",
+ "status": "decided",
+ "doc": "docs/decisions/word-search.md",
+ "by": "omar",
+ "date": "2026-08-05",
+ "related": [
+ "word-selection",
+ "loop-4a"
+ ]
+ },
+ {
+ "id": "word-selection",
+ "question": "Should a reader be able to pick single words, or only whole verses?",
+ "status": "decided",
+ "doc": "docs/decisions/word-selection.md",
+ "by": "omar",
+ "date": "2026-08-04",
+ "related": [
+ "word-search",
+ "mark-granularity"
+ ]
+ },
+ {
+ "id": "pin-marker",
+ "question": "How does the app keep a page it was told to save without storing it twice?",
+ "status": "decided",
+ "doc": "docs/decisions/pin-marker.md",
+ "by": "omar",
+ "date": "2026-08-04",
+ "related": [
+ "loop-6b"
+ ]
+ },
+ {
+ "id": "i18n",
+ "question": "How does the app's own wording get translated, and what keeps the two languages in step?",
+ "status": "decided",
+ "doc": "docs/decisions/i18n.md",
+ "by": "omar",
+ "date": "2026-07-30"
+ },
+ {
+ "id": "loop-0",
+ "question": "Can a real page of the mus'haf be put on a phone, installed, and opened again offline?",
+ "status": "decided",
+ "doc": "docs/decisions/loop-0.md",
+ "by": "omar",
+ "date": "2026-07-20"
+ },
+ {
+ "id": "loop-1",
+ "question": "Does touching a verse on a phone answer fast enough to build the rest on?",
+ "status": "decided",
+ "doc": "docs/decisions/loop-1.md",
+ "by": "omar",
+ "date": "2026-07-20"
+ },
+ {
+ "id": "loop-2",
+ "question": "Can a reader jump from a verse to one that sounds like it, and find the way back?",
+ "status": "decided",
+ "doc": "docs/decisions/loop-2.md",
+ "by": "omar",
+ "date": "2026-07-23"
+ },
+ {
+ "id": "loop-3",
+ "question": "Can a teacher send a link that opens exactly what they were looking at?",
+ "status": "decided",
+ "doc": "docs/decisions/loop-3.md",
+ "by": "omar",
+ "date": "2026-07-25"
+ },
+ {
+ "id": "loop-4a",
+ "question": "Where does the list of look-alike verses come from, and is it the same list every time it is built?",
+ "status": "decided",
+ "doc": "docs/decisions/loop-4a.md",
+ "by": "omar",
+ "date": "2026-07-25",
+ "related": [
+ "loop-4b",
+ "word-search"
+ ]
+ },
+ {
+ "id": "loop-4b",
+ "question": "Can the app carry the whole mus'haf instead of three pages?",
+ "status": "decided",
+ "doc": "docs/decisions/loop-4b.md",
+ "by": "omar",
+ "date": "2026-08-03",
+ "related": [
+ "loop-4a"
+ ]
+ },
+ {
+ "id": "loop-5",
+ "question": "Can a reader mark a stretch of more than one verse and ask about all of it at once?",
+ "status": "decided",
+ "doc": "docs/decisions/loop-5.md",
+ "by": "omar",
+ "date": "2026-07-25"
+ },
+ {
+ "id": "loop-6a",
+ "question": "Can a reader turn the colouring off, jump anywhere in the book, and reopen it with no signal?",
+ "status": "decided",
+ "doc": "docs/decisions/loop-6a.md",
+ "by": "omar",
+ "date": "2026-07-25",
+ "related": [
+ "mark-granularity",
+ "loop-6b",
+ "tajweed-colours"
+ ]
+ },
+ {
+ "id": "loop-6b",
+ "question": "Can a reader keep one thirtieth of the book on their phone for good?",
+ "status": "decided",
+ "doc": "docs/decisions/loop-6b.md",
+ "by": "omar",
+ "date": "2026-08-04",
+ "related": [
+ "pin-marker",
+ "loop-6a"
+ ]
+ }
+ ]
+}
diff --git a/docs/decisions/README.md b/docs/decisions/README.md
new file mode 100644
index 0000000..1920c81
--- /dev/null
+++ b/docs/decisions/README.md
@@ -0,0 +1,79 @@
+
+
+
+# Decisions
+
+Every question this project has had to answer, and where the answer is written down.
+
+**How to read a row.** The first column is the question, in plain words. The second is the
+record that answers it — its title is the answer in one line. The third, on anything still
+open, is a page you can open in a browser and look at: the options drawn on a real page of
+the mus'haf, with no code in it. You do not need to have opened this repository to take part
+in an open decision, and that is on purpose.
+
+## Open — 2
+
+Nobody has chosen yet. Each one has a page you can open and look at without reading any code.
+
+| question | options | look at it | record |
+| --- | --- | --- | --- |
+| Should the app colour tajweed one colour a verse, or should it colour the exact letter a rule lands on? | **A** Leave it as it is — one colour a verse **B** Colour the exact letter or mark **C** Prepare the ground, colour nothing yet | [open](https://claude.ai/code/artifact/5f230dff-e4e8-40c6-9c4e-888786eeef9b) · [in repo](../design/mark-granularity.html) | [Sub-word marks: the level below a word, and the print that already named it](../design/sub-word-marks.md) |
+| Should a reader be able to change the colours the app uses for recitation rules, and how many colours are there to change? | **A** Leave the colours fixed **B** A reader recolours the seven groups **C** A reader recolours all eighteen rules **D** Offer a few ready-made schemes, no picker | [open](https://claude.ai/code/artifact/74b37363-d082-45e7-9651-54c47c328844) · [in repo](../design/tajweed-colours.html) | [Whose colours are they?](tajweed-colours.md) |
+
+## Living records — 1
+
+Never finished. A new decision on one of these subjects gets a row appended, not a new file.
+
+| question | record |
+| --- | --- |
+| When should a wide window behave differently from a phone? | [Desktop vs mobile — the running record](desktop-vs-mobile.md) |
+
+## Decided — 14
+
+The record holds the reasons. Read it before changing anything it covers.
+
+| question | what was decided | when |
+| --- | --- | --- |
+| Should rolling the mouse wheel magnify the page? | [The wheel navigates, buttons magnify](wheel-and-zoom.md) | omar, 2026-08-06 |
+| When a reader picks out a few words, what should the app go looking for? | [A run of words asks a question, and the answer is a number](word-search.md) | omar, 2026-08-05 |
+| Should a reader be able to pick single words, or only whole verses? | [The grain gets finer where the finger already is](word-selection.md) | omar, 2026-08-04 |
+| How does the app keep a page it was told to save without storing it twice? | [One bit of provenance, and the line it does not cross](pin-marker.md) | omar, 2026-08-04 |
+| How does the app's own wording get translated, and what keeps the two languages in step? | [The chrome's language layer moved to a message compiler](i18n.md) | omar, 2026-07-30 |
+| Can a real page of the mus'haf be put on a phone, installed, and opened again offline? | [Loop 0 — Skeleton on a phone](loop-0.md) | omar, 2026-07-20 |
+| Does touching a verse on a phone answer fast enough to build the rest on? | [Loop 1 — Select + the performance question](loop-1.md) | omar, 2026-07-20 |
+| Can a reader jump from a verse to one that sounds like it, and find the way back? | [Loop 2 — The hop](loop-2.md) | omar, 2026-07-23 |
+| Can a teacher send a link that opens exactly what they were looking at? | [Loop 3 — Diffs, share links, a11y pass](loop-3.md) | omar, 2026-07-25 |
+| Where does the list of look-alike verses come from, and is it the same list every time it is built? | [Loop 4a — Edge-data ETL (full mutashabihat corpus)](loop-4a.md) | omar, 2026-07-25 |
+| Can the app carry the whole mus'haf instead of three pages? | [Loop 4b — Page corpus + streaming (all 604 pages)](loop-4b.md) | omar, 2026-08-03 |
+| Can a reader mark a stretch of more than one verse and ask about all of it at once? | [Loop 5 — Highlight gesture + root lens](loop-5.md) | omar, 2026-07-25 |
+| Can a reader turn the colouring off, jump anywhere in the book, and reopen it with no signal? | [Loop 6a — Skin, editions, wayfinding, offline foundation](loop-6a.md) | omar, 2026-07-25 |
+| Can a reader keep one thirtieth of the book on their phone for good? | [Loop 6b — Pin-a-juz packs](loop-6b.md) | omar, 2026-08-04 |
+
+## Which of these touch each other
+
+An earlier answer usually rules out part of a later question, and the reason it does is in
+the record, not here. Read the ones listed beside a question before answering it: that is
+where the option you were about to invent has often already been ruled out.
+
+- **Should the app colour tajweed one colour a verse, or should it colour the exact letter a rule lands on?** reads with: [The grain gets finer where the finger already is](word-selection.md) · [Loop 6a — Skin, editions, wayfinding, offline foundation](loop-6a.md) · [Whose colours are they?](tajweed-colours.md)
+- **Should a reader be able to change the colours the app uses for recitation rules, and how many colours are there to change?** reads with: [Sub-word marks: the level below a word, and the print that already named it](../design/sub-word-marks.md) · [Loop 6a — Skin, editions, wayfinding, offline foundation](loop-6a.md)
+- **When should a wide window behave differently from a phone?** reads with: [The wheel navigates, buttons magnify](wheel-and-zoom.md)
+- **Should rolling the mouse wheel magnify the page?** reads with: [Desktop vs mobile — the running record](desktop-vs-mobile.md)
+- **When a reader picks out a few words, what should the app go looking for?** reads with: [The grain gets finer where the finger already is](word-selection.md) · [Loop 4a — Edge-data ETL (full mutashabihat corpus)](loop-4a.md)
+- **Should a reader be able to pick single words, or only whole verses?** reads with: [A run of words asks a question, and the answer is a number](word-search.md) · [Sub-word marks: the level below a word, and the print that already named it](../design/sub-word-marks.md)
+- **How does the app keep a page it was told to save without storing it twice?** reads with: [Loop 6b — Pin-a-juz packs](loop-6b.md)
+- **Where does the list of look-alike verses come from, and is it the same list every time it is built?** reads with: [Loop 4b — Page corpus + streaming (all 604 pages)](loop-4b.md) · [A run of words asks a question, and the answer is a number](word-search.md)
+- **Can the app carry the whole mus'haf instead of three pages?** reads with: [Loop 4a — Edge-data ETL (full mutashabihat corpus)](loop-4a.md)
+- **Can a reader turn the colouring off, jump anywhere in the book, and reopen it with no signal?** reads with: [Sub-word marks: the level below a word, and the print that already named it](../design/sub-word-marks.md) · [Loop 6b — Pin-a-juz packs](loop-6b.md) · [Whose colours are they?](tajweed-colours.md)
+- **Can a reader keep one thirtieth of the book on their phone for good?** reads with: [One bit of provenance, and the line it does not cross](pin-marker.md) · [Loop 6a — Skin, editions, wayfinding, offline foundation](loop-6a.md)
+
+---
+
+**Adding one.** Write the record, add a row to [`docs/decisions.json`](../decisions.json),
+run `make decisions-doc`. If the decision is still open it needs two or more options and a
+page anyone can look at — published *and* checked in here, because a link with no copy dies
+with its host and a copy with no link cannot be sent to anybody. `pnpm gate:decisions`
+refuses one without the other, and refuses a question written in file names or symbols.
+
+`make decisions` · `make decisions ID=` · `pnpm gate:decisions` · the `decide` skill
+drives writing one.
diff --git a/docs/decisions/tajweed-colours.md b/docs/decisions/tajweed-colours.md
new file mode 100644
index 0000000..d7ed43f
--- /dev/null
+++ b/docs/decisions/tajweed-colours.md
@@ -0,0 +1,185 @@
+# Whose colours are they?
+
+**Status:** open. Nobody has chosen.
+**Date opened:** 2026-08-08.
+**Asked as:** *"can we also enable a tajweed rule color coding page where readers can change
+the colors of tajweed rules"*.
+**The picture:** [`docs/design/tajweed-colours.html`](../design/tajweed-colours.html), built by
+`scripts/build-palette-options.mjs`, published at
+.
+**Constrains and is constrained by:** [mark granularity](../design/sub-word-marks.md) — the
+question of whether the app paints a whole verse or the exact letter. That one decides how much
+of this one is even visible, and it is also open.
+
+## The question
+
+Whether a reader can change Hifth's tajweed colours, and how far down the change reaches: the
+**seven** groups the app paints, or the **eighteen** rules the shipped data now distinguishes.
+
+Four options, each drawn on three real lines of page 2 in the options page:
+
+| | |
+|---|---|
+| **A** | Leave the colours fixed — what ships today |
+| **B** | A reader recolours the seven groups |
+| **C** | A reader recolours all eighteen rules |
+| **D** | No picker; a short list of whole ready-made schemes |
+
+## Why it is being asked now
+
+Two things landed in the same week.
+
+The first is ours. Until this week the tajweed shards were keyed by the seven families the app
+paints, and the source's own eighteen rule names were discarded at build time — an `ikhfa` and
+an `iqlab` were the same byte by the time anything downstream could ask. They are now kept
+(`tj-1`, `tj-2`), which cost **+17.5% gzipped** across the 114 shards and bought exactly one
+thing: the question "which colours can a reader change" acquired a second possible answer.
+Asking it before that widening would have been asking about seven and only seven.
+
+The second is the reader's. Somebody arriving from a colour-coded printed mus'haf arrives with
+red-means-elongation already learned. Hifth's palette is Okabe–Ito — chosen to survive the
+common kinds of colour blindness on cream paper — and it is not wrong, but it is ours.
+
+## What happens if nobody decides
+
+Nothing breaks, and the app needs no change to stay correct. The cost is narrow and real: a
+reader who cannot read one of our seven, or who knows a different convention, has exactly one
+control today, and it is the switch that turns the whole colouring off. That is a blunt answer
+to a small complaint.
+
+## What the app does today, measured
+
+Seven colours, seven dash patterns and seven Arabic marks, all fixed, all in
+`apps/web/src/styles/tokens.css` and `packages/core/src/skins.ts`. One tint per verse, in
+whichever group is *rarest* in that verse.
+
+Two numbers decide most of this record:
+
+- **83.29%** of what the data knows renders as nothing. Across the corpus there are 60,057
+ annotations on 6,173 verses; 50,023 of them are invisible because the verse already gave its
+ one tint to something else. A typical verse carries 3.9 different kinds of rule.
+- **10.0%** of coloured verses (620 of 6,173) have a *winning group carried by more than one
+ rule* — two kinds of elongation in the same verse, say. At verse granularity, an
+ eighteen-colour palette has no non-arbitrary answer for those verses at all.
+
+Per rule, the share of a rule's own verses in which its group also won the tint — i.e. the only
+places a per-rule colour could be seen — is brutal for the common rules and generous only for
+the rare ones:
+
+| rule | group | verses | where it could show |
+| --- | --- | ---: | ---: |
+| `hamzat_wasl` | wasl | 4,749 | 5.9% |
+| `madd_246` | madd | 4,543 | 2.8% |
+| `madd_2` | madd | 4,160 | **1.6%** |
+| `ghunnah` | ghunnah | 3,104 | 11.6% |
+| `ikhfa` | ghunnah | 2,994 | 10.5% |
+| `qalqalah` | qalqalah | 2,641 | 55.1% |
+| `idghaam_ghunnah` | idgham | 2,510 | 29.4% |
+| `silent` | silent | 2,307 | 98.3% |
+| `madd_munfasil` | madd | 2,120 | 0.8% |
+| `lam_shamsiyyah` | idgham | 2,013 | 29.4% |
+| `madd_muttasil` | madd | 1,486 | 2.8% |
+| `idghaam_no_ghunnah` | idgham | 905 | 29.3% |
+| `idghaam_shafawi` | idgham | 718 | 22.6% |
+| `iqlab` | ghunnah | 506 | 7.1% |
+| `ikhfa_shafawi` | ghunnah | 453 | 7.3% |
+| `madd_6` | madd-lazim | 128 | 100.0% |
+| `idghaam_mutajanisayn` | idgham | 56 | 39.3% |
+| `idghaam_mutaqaribayn` | idgham | 13 | 61.5% |
+
+Recomputed from the shipped shards on every build of the options page, not typed here from
+memory — but restated here because a record that only points at a generated page stops being
+readable the day the generator does.
+
+## What the industry does
+
+**We looked.** Two searches, summarised, with the sources in the options page's §6.
+
+- **Printed colour-coded mus'hafs are fixed, and small.** The Damascus edition most people mean
+ by the term uses a handful of colour families — red for the elongations, green for the nasal
+ sounds, blue for the echoing letters, grey for the silent letters — and one publisher
+ describes covering 28 rules with three of them. Other editions run to about seven. In every
+ case the reader is *taught* the colours by a legend at the foot of the page; nobody is asked
+ to choose them. That is the strongest argument for D over B: a named scheme is a thing you can
+ learn and talk about, a hue you invented is not.
+- **In apps, the control is a switch.** Muslim Pro, the Greentech apps, and the long-running
+ request on `quran/quran_android` all treat tajweed colour as on-or-off; where a colour is
+ interactive, it is to *explain* the rule, not to change it. **We did not find a mus'haf app
+ that lets a reader change which colour means which rule.** That is an absence in what we
+ searched, not a proof that none exists, and it is stated that way on the page.
+- **The editable-palette idea comes from somewhere else** — code editors and reading apps, where
+ a theme is expected to be the reader's. Worth noticing that even there, nobody recolours a
+ syntax highlighter one token type at a time; they ship themes.
+
+## What we have already decided that constrains it
+
+- **Mark granularity is open, and it dominates.** The app paints one tint per verse. Until that
+ changes, eighteen colours are mostly unpaintable and 620 verses have no answer. If that
+ question is settled as "colour the exact letter", C stops being a bad idea and becomes a
+ plausible one in a single change. Answering *this* record with C before that one is answered
+ would be building a picker for colours nobody can see.
+- **Loop 6a settled that the colouring can be turned off entirely.** That control stays;
+ everything here is about what happens when it is on.
+- **Colour is never the only carrier** (WCAG 1.4.1). Every group has a dash pattern and an
+ Arabic mark as well as a hue. This is what makes a picker *safe*: §5 of the options page draws
+ two groups set to the identical colour and they are still separable, because the dash patterns
+ and the marks are not part of what a reader would be editing. Whatever wins, they stay ours.
+
+## Why C is the one option this page argues against
+
+Not by preference — by picture and by arithmetic:
+
+1. **The colours do not fit.** Fanning each family's hue in lightness and a little in hue, as
+ generously as is honest, still produces **18 pairs closer together than the closest pair in
+ today's seven**. Seven is roughly what a qualitative palette can carry on cream paper.
+2. **Most of them cannot be painted.** See the table: change the commonest elongation's colour
+ and 1.6% of the verses containing it look any different.
+3. **620 verses have no answer.** One tint, two rules of the winning group, nothing in the data
+ to break the tie.
+4. **It costs eighteen names in two languages.** A legend nobody can hold in their head, and the
+ per-rule label gate that `tj-3` deliberately deferred.
+
+None of that argues against ever distinguishing eighteen rules. It argues that *colour* is the
+wrong instrument for it until the app paints smaller than a verse.
+
+## What else could be considered, and why it is not an option here
+
+- **Choose which rules to show, rather than what colour they are.** Show only the elongations.
+ Needs no palette, and unlike C it gets *more* useful the more rules the data distinguishes. It
+ is a genuinely good idea and it is not on this list because it is not a colour question — it
+ belongs with mark granularity. It survives whichever of A–D wins.
+- **One strength slider and nothing else.** Most complaints about a wash are that it is too loud
+ or too faint rather than the wrong hue. Cheapest thing in sight, and quite possibly what is
+ actually being asked for. If this record is answered A, that is the next thing to build.
+- **Adopt the printed convention outright and stop.** Defensible; left off because that
+ convention has no colour for two of our seven groups, and because it would trade a palette
+ that survives colour blindness for one designed for ink on paper.
+
+## What would change the answer
+
+- **Mark granularity settling as "colour the exact letter."** The big one — it is what makes C
+ coherent and what makes B's stakes higher.
+- **A hafiz naming one of our seven as wrong.** Would settle B versus D faster than anything on
+ the page.
+- **One report of a pair that genuinely cannot be separated.** That turns B from a preference
+ into an accessibility fix, and then it should not wait behind anything.
+- **Schemes turning out to be shareable** — a teacher handing one to a class. D grows a name and
+ a link; B does not scale to that at all.
+
+## What this is not settling
+
+How finely the app paints. Whether the colouring is on by default. What the eighteen rules
+should be *called* in Arabic and English — necessary the moment anything shows them one at a
+time, which is `tj-5`'s problem whichever option wins. Whether touching a colour can explain the
+rule. And nothing at all about where the rule data came from, which is
+[`packages/etl/data/tajweed/PROVENANCE.md`](../../packages/etl/data/tajweed/PROVENANCE.md).
+
+## Where the numbers come from
+
+`scripts/build-palette-options.mjs` reads the palette out of `tokens.css`, the seven families
+out of `packages/core/src/skins.ts`, the eighteen rules out of the shipped
+`assets/skins/hafs-kfqc/tajweed/rules.json`, every count out of all 114 shipped shards, and the
+picture out of `docs/design/mark-granularity.data.json` plus the print of page 2. Nothing is
+cached and there is no extract step, so the page cannot drift from the app. The alternative
+palettes in options B and D are the only invented values on it, and they are labelled as
+illustrations wherever they appear.
diff --git a/docs/design/mark-granularity.data.json b/docs/design/mark-granularity.data.json
new file mode 100644
index 0000000..5190159
--- /dev/null
+++ b/docs/design/mark-granularity.data.json
@@ -0,0 +1,687 @@
+{
+ "$comment": "Generated by scripts/build-mark-options.mjs --extract. Geometry only — no Quran text. Coordinates are the 235-unit page frame, the same one the word shards use.",
+ "page": 2,
+ "corpus": {
+ "ayahs": 6173,
+ "anns": 60057,
+ "painted": 10034,
+ "discarded": 50023,
+ "meanFamilies": 3.904584480803499,
+ "histogram": {
+ "1": 369,
+ "2": 733,
+ "3": 1197,
+ "4": 1527,
+ "5": 1531,
+ "6": 798,
+ "7": 18
+ },
+ "wins": {
+ "idgham": 1295,
+ "wasl": 278,
+ "madd": 169,
+ "madd-lazim": 128,
+ "silent": 2267,
+ "qalqalah": 1454,
+ "ghunnah": 582
+ },
+ "invisible": {
+ "wasl": 4471,
+ "madd": 5540,
+ "idgham": 2726,
+ "ghunnah": 3966,
+ "qalqalah": 1187,
+ "silent": 40
+ }
+ },
+ "ayahs": [
+ {
+ "key": "2:1",
+ "poly": "M206.5 46h-34.1v26.2h34Z",
+ "words": [
+ [
+ 185.1,
+ 50.5,
+ 16.2,
+ 18.8
+ ]
+ ],
+ "marks": [],
+ "families": [
+ "madd-lazim"
+ ],
+ "lead": "madd-lazim",
+ "anns": [
+ {
+ "rule": "madd_6",
+ "family": "madd-lazim",
+ "outcome": "letter",
+ "word": 1
+ },
+ {
+ "rule": "madd_6",
+ "family": "madd-lazim",
+ "outcome": "letter",
+ "word": 1
+ }
+ ]
+ },
+ {
+ "key": "2:2",
+ "poly": "M172.4 46H33.8v26.2l192 .2v30h-53.4V72v.2Z",
+ "words": [
+ [
+ 150.6,
+ 53.6,
+ 19.2,
+ 16.5
+ ],
+ [
+ 107.2,
+ 50.8,
+ 43.2,
+ 19.6
+ ],
+ [
+ 97.1,
+ 50.7,
+ 10,
+ 16.6
+ ],
+ [
+ 79.1,
+ 54.1,
+ 18.6,
+ 16.4
+ ],
+ [
+ 78.7,
+ 47.6,
+ 5.3,
+ 5
+ ],
+ [
+ 62.9,
+ 56.3,
+ 16.9,
+ 14.5
+ ],
+ [
+ 63.1,
+ 47.8,
+ 5.7,
+ 5.1
+ ],
+ [
+ 37.2,
+ 53.6,
+ 24.5,
+ 15.5
+ ],
+ [
+ 188.2,
+ 78.7,
+ 35.7,
+ 19.7
+ ]
+ ],
+ "marks": [
+ 5,
+ 7
+ ],
+ "families": [
+ "madd",
+ "wasl",
+ "idgham"
+ ],
+ "lead": "idgham",
+ "anns": [
+ {
+ "rule": "madd_2",
+ "family": "madd",
+ "outcome": "drawn",
+ "word": 1,
+ "name": "superscript alef",
+ "mark": [
+ 163.3,
+ 56.8,
+ 1.8,
+ 5.1
+ ]
+ },
+ {
+ "rule": "hamzat_wasl",
+ "family": "wasl",
+ "outcome": "drawn",
+ "word": 2,
+ "name": "wasla",
+ "mark": [
+ 145.8,
+ 50.8,
+ 4.6,
+ 3.6
+ ]
+ },
+ {
+ "rule": "madd_2",
+ "family": "madd",
+ "outcome": "drawn",
+ "word": 2,
+ "name": "superscript alef",
+ "mark": [
+ 117.5,
+ 57.5,
+ 1.8,
+ 5.1
+ ]
+ },
+ {
+ "rule": "idghaam_no_ghunnah",
+ "family": "idgham",
+ "outcome": "drawn",
+ "word": 8,
+ "name": "successive fathatan",
+ "mark": [
+ 46.7,
+ 55.1,
+ 6.7,
+ 2.9
+ ]
+ },
+ {
+ "rule": "madd_246",
+ "family": "madd",
+ "outcome": "letter",
+ "word": 9
+ }
+ ]
+ },
+ {
+ "key": "2:3",
+ "poly": "M172.4 72.2H12v29.5h102v32.2h114.2v-30.2h-55.8V72.4Z",
+ "words": [
+ [
+ 147.1,
+ 76.2,
+ 22.8,
+ 23.9
+ ],
+ [
+ 115.8,
+ 81.3,
+ 31,
+ 18.3
+ ],
+ [
+ 84.7,
+ 77.7,
+ 30.3,
+ 24.2
+ ],
+ [
+ 74.3,
+ 84.3,
+ 9.6,
+ 14.5
+ ],
+ [
+ 45.8,
+ 80.2,
+ 33.6,
+ 18.7
+ ],
+ [
+ 13.2,
+ 77.6,
+ 32.3,
+ 20.3
+ ],
+ [
+ 215.2,
+ 111.9,
+ 9.7,
+ 15.1
+ ],
+ [
+ 202.3,
+ 111.1,
+ 18.1,
+ 14.1
+ ],
+ [
+ 164.3,
+ 109.2,
+ 37.2,
+ 25
+ ],
+ [
+ 129.2,
+ 108.8,
+ 34.1,
+ 19.4
+ ]
+ ],
+ "marks": [],
+ "families": [
+ "wasl",
+ "idgham",
+ "silent",
+ "madd",
+ "ghunnah",
+ "qalqalah"
+ ],
+ "lead": "silent",
+ "anns": [
+ {
+ "rule": "hamzat_wasl",
+ "family": "wasl",
+ "outcome": "drawn",
+ "word": 3,
+ "name": "wasla",
+ "mark": [
+ 107.5,
+ 77.7,
+ 4.6,
+ 3.6
+ ]
+ },
+ {
+ "rule": "hamzat_wasl",
+ "family": "wasl",
+ "outcome": "drawn",
+ "word": 6,
+ "name": "wasla",
+ "mark": [
+ 40.8,
+ 77.6,
+ 4.6,
+ 3.6
+ ]
+ },
+ {
+ "rule": "lam_shamsiyyah",
+ "family": "idgham",
+ "outcome": "letter",
+ "word": 6
+ },
+ {
+ "rule": "silent",
+ "family": "silent",
+ "outcome": "letter",
+ "word": 6
+ },
+ {
+ "rule": "madd_2",
+ "family": "madd",
+ "outcome": "drawn",
+ "word": 6,
+ "name": "superscript alef",
+ "mark": [
+ 20.6,
+ 83.9,
+ 1.8,
+ 5.1
+ ]
+ },
+ {
+ "rule": "ghunnah",
+ "family": "ghunnah",
+ "outcome": "letter",
+ "word": 8
+ },
+ {
+ "rule": "qalqalah",
+ "family": "qalqalah",
+ "outcome": "letter",
+ "word": 9
+ },
+ {
+ "rule": "madd_2",
+ "family": "madd",
+ "outcome": "drawn",
+ "word": 9,
+ "name": "superscript alef",
+ "mark": [
+ 178.6,
+ 115.7,
+ 1.8,
+ 5.1
+ ]
+ },
+ {
+ "rule": "ikhfa",
+ "family": "ghunnah",
+ "outcome": "letter",
+ "word": 10
+ },
+ {
+ "rule": "madd_246",
+ "family": "madd",
+ "outcome": "letter",
+ "word": 10
+ }
+ ]
+ },
+ {
+ "key": "2:4",
+ "poly": "M114 101.7H11.5v58.5h217v-26.6H114z",
+ "words": [
+ [
+ 102.9,
+ 112.3,
+ 9.8,
+ 14.5
+ ],
+ [
+ 85.4,
+ 104.9,
+ 22.7,
+ 24
+ ],
+ [
+ 52.3,
+ 110.9,
+ 32.7,
+ 17.5
+ ],
+ [
+ 32,
+ 108.7,
+ 19.5,
+ 20.3
+ ],
+ [
+ 12.4,
+ 103.1,
+ 19.5,
+ 27.7
+ ],
+ [
+ 197.6,
+ 135.6,
+ 25.3,
+ 22.2
+ ],
+ [
+ 187,
+ 139.4,
+ 9.8,
+ 14.7
+ ],
+ [
+ 178.5,
+ 135.2,
+ 11,
+ 16.3
+ ],
+ [
+ 161.1,
+ 130.6,
+ 16.9,
+ 27
+ ],
+ [
+ 146.1,
+ 145.1,
+ 14.3,
+ 10.1
+ ],
+ [
+ 120.7,
+ 136.1,
+ 24.1,
+ 19.8
+ ],
+ [
+ 110.6,
+ 139.4,
+ 9.8,
+ 14.4
+ ],
+ [
+ 79.1,
+ 135,
+ 34.5,
+ 23.1
+ ],
+ [
+ 63.2,
+ 138,
+ 14,
+ 23.5
+ ],
+ [
+ 31.5,
+ 138.5,
+ 30.6,
+ 17.5
+ ]
+ ],
+ "marks": [],
+ "families": [
+ "wasl",
+ "madd",
+ "ghunnah",
+ "qalqalah"
+ ],
+ "lead": "qalqalah",
+ "anns": [
+ {
+ "rule": "hamzat_wasl",
+ "family": "wasl",
+ "outcome": "drawn",
+ "word": 2,
+ "name": "wasla",
+ "mark": [
+ 103.5,
+ 108.1,
+ 4.6,
+ 3.6
+ ]
+ },
+ {
+ "rule": "madd_munfasil",
+ "family": "madd",
+ "outcome": "letter",
+ "word": 4
+ },
+ {
+ "rule": "ikhfa",
+ "family": "ghunnah",
+ "outcome": "letter",
+ "word": 5
+ },
+ {
+ "rule": "madd_munfasil",
+ "family": "madd",
+ "outcome": "letter",
+ "word": 8
+ },
+ {
+ "rule": "ikhfa",
+ "family": "ghunnah",
+ "outcome": "letter",
+ "word": 9
+ },
+ {
+ "rule": "ikhfa",
+ "family": "ghunnah",
+ "outcome": "letter",
+ "word": 10
+ },
+ {
+ "rule": "qalqalah",
+ "family": "qalqalah",
+ "outcome": "letter",
+ "word": 11
+ },
+ {
+ "rule": "hamzat_wasl",
+ "family": "wasl",
+ "outcome": "respelt",
+ "word": 13
+ },
+ {
+ "rule": "madd_246",
+ "family": "madd",
+ "outcome": "letter",
+ "word": 15
+ }
+ ]
+ },
+ {
+ "key": "2:5",
+ "poly": "M200 158.5H37.7v28.6h31.7v29.1h99.5v-28H200z",
+ "words": [
+ [
+ 167.9,
+ 158.9,
+ 31.6,
+ 26.6
+ ],
+ [
+ 152.4,
+ 163.9,
+ 14.9,
+ 20
+ ],
+ [
+ 124.5,
+ 165.3,
+ 26.5,
+ 16.3
+ ],
+ [
+ 109,
+ 168,
+ 14.3,
+ 15.2
+ ],
+ [
+ 76.1,
+ 165.9,
+ 31.2,
+ 21.4
+ ],
+ [
+ 80,
+ 160.3,
+ 7.7,
+ 5.9
+ ],
+ [
+ 67.6,
+ 168.4,
+ 10.4,
+ 14
+ ],
+ [
+ 38.7,
+ 158.6,
+ 32.3,
+ 27
+ ],
+ [
+ 149.6,
+ 195.8,
+ 18,
+ 15
+ ],
+ [
+ 87.8,
+ 191.1,
+ 63.2,
+ 21.8
+ ]
+ ],
+ "marks": [
+ 6
+ ],
+ "families": [
+ "silent",
+ "madd",
+ "idgham",
+ "wasl"
+ ],
+ "lead": "silent",
+ "anns": [
+ {
+ "rule": "silent",
+ "family": "silent",
+ "outcome": "letter",
+ "word": 1
+ },
+ {
+ "rule": "madd_muttasil",
+ "family": "madd",
+ "outcome": "drawn",
+ "word": 1,
+ "name": "superscript alef",
+ "mark": [
+ 184.9,
+ 171.8,
+ 1.8,
+ 5.1
+ ]
+ },
+ {
+ "rule": "idghaam_ghunnah",
+ "family": "idgham",
+ "outcome": "drawn",
+ "word": 3,
+ "name": "successive fathatan",
+ "mark": [
+ 133.5,
+ 165.3,
+ 7.8,
+ 3
+ ]
+ },
+ {
+ "rule": "idghaam_no_ghunnah",
+ "family": "idgham",
+ "outcome": "letter",
+ "word": 4
+ },
+ {
+ "rule": "silent",
+ "family": "silent",
+ "outcome": "letter",
+ "word": 8
+ },
+ {
+ "rule": "madd_muttasil",
+ "family": "madd",
+ "outcome": "drawn",
+ "word": 8,
+ "name": "superscript alef",
+ "mark": [
+ 55.3,
+ 171,
+ 1.8,
+ 5.1
+ ]
+ },
+ {
+ "rule": "hamzat_wasl",
+ "family": "wasl",
+ "outcome": "drawn",
+ "word": 10,
+ "name": "wasla",
+ "mark": [
+ 146.4,
+ 191.1,
+ 4.6,
+ 3.6
+ ]
+ },
+ {
+ "rule": "madd_246",
+ "family": "madd",
+ "outcome": "letter",
+ "word": 10
+ }
+ ]
+ }
+ ]
+}
diff --git a/docs/design/mark-granularity.html b/docs/design/mark-granularity.html
new file mode 100644
index 0000000..70af3b2
--- /dev/null
+++ b/docs/design/mark-granularity.html
@@ -0,0 +1,654 @@
+
+
+
+
+One colour a verse — should Hifth colour tajweed more finely?
+
+
+
+
+
+
+
+ Hifth · a decision, drawn on paper
+ One colour a verse. The data knows five.
+
+ Hifth can tint each verse to flag a recitation rule inside it. It gets
+ one colour per verse — but a verse usually carries
+ 3.9 different kinds of rule, so most of what we know
+ is never shown. This page asks whether to colour smaller pieces than a whole verse, and shows
+ each option on a real page so you can judge it by eye.
+
+
+
83.29% of the rules we know about are invisible on screen
+
3.9 kinds of rule in a typical verse
+
1 gets a colour
+
+
+
Three words, before we start
+
+ A tajweed rule tells a reciter to do something at a particular spot — hold a
+ vowel, hum through a letter, skip one. Hifth sorts them into seven kinds
+ (madd, ghunnah, idghām, qalqalah, silent, waṣl, madd lāzim) and gives each kind a colour. A
+ mark is one of the small signs the printed mus'haf draws above or below a
+ letter. Everything below is about how big an area we tint: a whole verse, or the exact letter
+ or mark the rule is about.
+
+
+
+
+
+
+
+ 1 What is being decided?
+
+ Whether Hifth should keep tinting a whole verse at a time, or start tinting the exact letter or
+ mark a rule lands on — and if it should, whether to put that on the reader's screen now or only
+ lay the groundwork for it.
+
+
+ Three answers, drawn side by side further down. A : leave it as it is, one colour
+ a verse. B : colour the exact letter or mark. C : ship the
+ measurements and the checks that keep them honest, and colour nothing yet.
+
+
+
+
+ 2 Why is this being asked now?
+
+ Because it finally got measured. Letting a reader pick out single words meant working out where
+ every word — and every small mark the printer drew above and below the letters — actually sits on
+ all 604 pages. That work is done and shipped for a different reason, and the moment it existed it
+ was possible to count something nobody had counted before: how much of what we know about
+ recitation rules never reaches the reader's eye. The number came back at
+ 83.29% , and it is the reason this page exists rather than a
+ hunch that verse-sized tinting felt coarse.
+
+
+
+
+ 3 What happens if nobody decides?
+
+ Nothing breaks, and that is worth saying plainly. Option A is what the app does today, it works,
+ and no other part of Hifth is waiting behind this question — nothing is blocked, no release is
+ held up, and this can sit open for a year at no cost to a reader.
+
+
+ What it costs is quieter. The measurements exist and nothing uses them, so nothing checks them:
+ a positioning error would sit undetected until the day somebody builds on it. And
+ 83.29% of what we know stays where it has always been, which is nowhere a
+ reader can see.
+
+
+
+
+ 4 What does the app colour today?
+
+ A whole verse at a time. Below is page 2 exactly as Hifth draws it: five verses,
+ five tinted shapes, each stepping across the line breaks the verse takes. When a verse carries
+ several kinds of rule, Hifth picks the rarest one — telling you a verse hides a silent
+ letter is worth more than telling you it has a madd, which nine verses in ten do.
+
+
+
+
+
+
+ Five verses, five tints. Behind them sit 34 rules — only 7 are in a colour you can see.
+
+
+ What each verse on this page carries. A filled chip is the kind that got the colour; a hollow one is a kind that is there and shows nothing.
+ verse kinds of rule present rules shown on a printed mark on a plain letter
+
+
+ 2:1
+ madd lāzim
+ 2
+ 2
+ 0
+ 2
+
+
+ 2:2
+ madd waṣl idghām
+ 5
+ 1
+ 4
+ 1
+
+
+ 2:3
+ madd waṣl ghunnah idghām qalqalah silent
+ 10
+ 1
+ 4
+ 6
+
+
+ 2:4
+ madd waṣl ghunnah qalqalah
+ 9
+ 1
+ 1
+ 7 +1
+
+
+ 2:5
+ madd waṣl idghām silent
+ 8
+ 2
+ 4
+ 4
+
+
+
+
+
+
+ 5 What is it leaving out?
+
+ Most of it. Across the whole mus'haf we have 60,057
+ rules marked up, and 50,023 of them —
+ 83.29% — never reach the screen. Not because we are unsure where they are.
+ Because there is only one colour to give and something else already took it.
+
+
+ How many different kinds of rule land on a single verse, across all 6,173 verses that carry any.
+ kinds verses share
+
+1 369
+ 5.98%
+2 733
+ 11.87%
+3 1,197
+ 19.39%
+4 1,527
+ 24.74%
+5 1,531
+ 24.80%
+6 798
+ 12.93%
+7 18
+ 0.29%
+
+
+
+ The one that loses most is the one a reciter meets most. Madd appears in
+ 92.48% of verses and gets the colour in
+ 2.74% of them. That is deliberate — it ranks last because
+ it is everywhere, which is the right call when you have one colour and the wrong one the moment
+ you have room for two.
+
+
+ Present in the verse, but beaten to the only colour going.
+ kind verses where it loses share wins
+
+madd 5,540
+
+ 89.75%
+ 2.74%
+waṣl 4,471
+
+ 72.43%
+ 4.50%
+ghunnah 3,966
+
+ 64.25%
+ 9.43%
+idghām 2,726
+
+ 44.16%
+ 20.98%
+qalqalah 1,187
+
+ 19.23%
+ 23.55%
+silent 40
+
+ 0.65%
+ 36.72%
+
+
+
+
+
+ 6 Would colouring smaller pieces let us show more of it?
+
+ Yes — and that is the real prize, more than precision is. The problem today is not that a tint
+ is coarse . It is that a tint is single : one shape per verse means one colour
+ per verse, so 3.9 kinds compete for it and
+ 2.9 lose every time. Tint the individual letters and marks
+ instead and they stop competing — each one can carry its own colour, because each one is its
+ own shape.
+
+
+
+
+ 7 What do printed mus'hafs already do about this?
+
+ They answered it the other way, decades ago, and they answered it at the letter. The
+ colour-coded printed mus'haf — the one most huffaz have already held — tints
+ individual letters , never whole verses.
+
+
+ In Dar al-Maarifah's colour-coded mus'haf a letter held longer is printed red, a nasalised
+ letter green, a letter that is written but not pronounced grey, and the echoing letters blue;
+ the publisher's claim is that a reader applies two dozen rules from the colours alone while
+ their attention stays on the meaning. Whatever else is true, that is a working precedent for
+ option B and none at all for option A: no printed tradition colours a whole verse to tell you
+ something about one letter inside it, because on paper it never had to.
+
+
+
Why the precedent does not simply settle it
+
+ Print colours the ink of the letter itself . Hifth cannot: the page it shows
+ is a picture of the printed page, one flat drawing, with no separate letter inside it to
+ recolour. Everything on this page is a tinted shape laid over the print, which is a
+ different visual language — a wash behind a letter reads less precisely than a letter that is
+ simply a different colour, and no amount of accuracy in the positions changes that. So the
+ printed mus'haf tells us readers cope with letter-level colour; it does not tell us that a
+ letter-level wash reads the same way. Section 10 is where you judge that by eye.
+
+
+
+ What was and was not looked up. The printed colour-coded tradition above was
+ checked against booksellers' descriptions of the Dar al-Maarifah edition
+ (one ,
+ two ).
+ No survey was done of how other apps handle it: a search for any published account of a
+ digital mus'haf's colouring turned up sales pages and PDFs of the printed editions, and nothing
+ describing how a screen decides what to tint. Treat that as unlooked-at, not as evidence that
+ nobody has solved it.
+
+
+
+
+ 8 What have we already decided that this has to live with?
+
+ Two earlier answers shape this one, and both of them make B cheaper and narrower than it sounds.
+
+
+ “Should a reader be able to pick single words, or only whole verses?” — answered: single words.
+
+ This is why the measurements exist at all; B is not proposing the expensive half, it is
+ proposing to use it. It also sets a reader's expectation: the app already answers at
+ word size when you touch it, so colour is now the one thing that still only speaks in verses.
+
+ “Can a reader turn the colouring off, jump anywhere, and reopen it with no signal?” — answered: yes, it is a layer you can switch off.
+
+ Anything chosen here is opt-in by construction — nobody is made to look at it — and the seven
+ colours were fixed then. B does not get new colours. It gets smaller places to put the ones we
+ have, which is exactly why section 10's complaint about the two quietest ones is a live one.
+
+
+
+
+
+ 9 What would each option look like on a real page?
+
+ The same three lines, three times. Same size, same colours — the only thing that changes is how
+ small a piece the app is allowed to tint.
+
+
+
+
A · Leave it as it is change nothing
+
+
+
+
+
+
+
+
+
What it takes Nothing. No new work, no extra data for a phone to download.
+
What you get The app stays exactly as it is now. We already have an internal tool that can show every mark, so nothing we learned is lost — it is just not on the reader's screen.
+
What it costs 83.29% of what we know stays invisible to a reader, indefinitely.
+
+
+
+
+
B · Colour the exact letter or mark every rule gets its own colour
+
+
+
+
+
+
+
+
+
What it takes About 5 KB more per page for a phone to download — roughly a tenth of what the page picture itself weighs. Size is not the sticking point.
+
What you get Every kind of rule in the verse gets a colour instead of just one. On these three lines that is 34 rules shown rather than 7, and 13 of them sit on the exact mark the printer drew.
+
What it costs Two visual languages on one line: a solid block on rules the printer drew a mark for, a tinted word for rules that land on a plain letter with nothing above it. Whether that reads as precise or as busy is what section 10 is for.
+
+
+
+
+
C · Prepare the ground, colour nothing yet ship the measurements, not the look
+
+
+
+
+
+
+
+
+
What it takes The same ~5 KB per page as B.
+
What you get The positions get locked down and automatically checked before we commit to any look, so B can be tried, changed or abandoned later without redoing the measurement work.
+
What it costs A reader sees option A. The faint outlines above are drawn only here , so you can see what would be available — the app itself would show nothing new.
+
+
+
+
+
+ 10 Where do A and B actually differ?
+
+ One word makes the whole argument. Four rules land on the sixth word of verse 2:3:
+ a waṣl and a madd , which the printer drew small marks for, and an
+ idghām and a silent , which land on plain letters with nothing above them to
+ colour. Today all four come out as one grey tint over the entire verse. Here is that word at
+ about eight times its real size.
+
+
+
+
+
+
+
+ A — the tint is here, and it is all of it. This close-up sits entirely inside the verse, so the flat grey is the signal: nothing tells you which word or letter the rule is about.
+
+
+
+
+
+
+ B — the waṣl (grey box, top right) and the madd (orange bar) sit on the exact marks the printer drew, each in its own colour, over a tinted word for the two rules that have no mark.
+
+
+
+
This word also shows the two things still unsolved
+
+ Its idghām and its silent both land on plain letters of the
+ same word — so B still has to choose between them. The competition does not
+ disappear, it just moves from verse-sized to word-sized, and we currently only know how to
+ settle it verse-sized. Second: the two colours B leans on hardest here are the faintest two we
+ have. Look at the grey waṣl box against the grey word beneath it. Both colours were picked back
+ when the smallest thing they could land on was a whole verse.
+
+
+
+
+
+ 11 What do the colours look like at the size they would be used?
+
+
+ madd
+ #d55e00
+
+ wins 2.74%
+
+ waṣl
+ #9c9284
+
+ wins 4.50%
+
+ ghunnah
+ #009e73
+
+ wins 9.43%
+
+ idghām
+ #cc79a7
+
+ wins 20.98%
+
+ qalqalah
+ #0072b2
+
+ wins 23.55%
+
+ silent
+ #6e6259
+
+ wins 36.72%
+
+ madd lāzim
+ #8e2400
+
+ wins 2.07%
+
+
+ Colour is never the only signal — each kind also has its own dash pattern along the edge, so the
+ seven stay distinguishable in greyscale, in print, and to a colour-blind reader.
+
+
+
+
+ 12 What else could we do, and why is it not on this page?
+
+ Three ideas were considered and left off. If one of them is the answer, this is the place to say
+ so — an option list with no visible edge is asking you to trust that the edge was somewhere
+ sensible.
+
+
+ Recolour the letters themselves, the way the printed mus'haf does.
+
+ Not possible with the page we ship. It is one flat drawing of the whole printed page; there is
+ no separate letter in it to give a colour to. Doing this would mean redrawing the mus'haf,
+ which is a far larger undertaking than any option here and a different decision entirely.
+
+ Let the reader choose one kind of rule and show only that.
+
+ Pick madd, see madd. This makes the competition disappear without measuring anything, and it
+ would work at today's verse size. It is left off because it answers a different question — what
+ do you want to see — where this page is about what the app shows by default. It is
+ also the cheapest idea on this list, and it stays available whichever of A, B or C wins.
+
+ Tint whole words, and never the printer's marks.
+
+ Half of B: one visual language instead of two, and no need for the mark positions. Left off
+ because it keeps the same competition B fails to fully solve — two rules on two letters of one
+ word — while giving up the precision that was the reason to move at all. It is genuinely a
+ middle option, and if section 10 reads as busy to you, it is the one to ask for.
+
+
+
+
+
+ 13 What would change the answer?
+
+
+ The two quietest colours getting louder. B's weakest moment is a pale grey
+ box on a pale grey word. That is a palette question, not a measurement one, and it can be
+ tried on this very page in an afternoon. If it fixes it, B's main objection is gone.
+
+
+ A hafiz looking at section 10 and calling it busy. One person reciting from
+ the marked-up line would settle this faster and more honestly than any count on this page.
+
+
+ Finding that two rules often land on the same letter , not just the same word.
+ That is not counted here. If it turns out common, B needs a rule for what wins that we do not
+ have, and C becomes the sensible order of work rather than a delay.
+
+
+ The positions failing their check against the print. They are measured, not
+ hand-placed, and they are checked — but on the day a check fails, B and C both stop until it
+ passes, and A is unaffected.
+
+
+
+
+
+ 14 What is this page not settling?
+
+ Which colour each kind of rule gets — B reuses the seven that already exist. Whether a mark can
+ be touched or asked about; this is only about colour. What should happen when two rules land on
+ the exact same letter, which is not counted anywhere here. And nothing at all about where the
+ rule data came from or how good it is: that is a separate question with its own record.
+
+
+
+
+ 15 So which one should we build?
+
+ Whether to build B. A is the status quo and needs no decision; C is B's groundwork without B's
+ look, and is worth taking only if we think the look needs several tries.
+
+
+ The case for B is section 5: we already know where 60,057 rules are, and
+ 83.29% of them are invisible for want of somewhere to put a second colour —
+ and section 7, where the printed tradition has been colouring letters rather than verses for
+ years. The case against is section 10: two of those colours are too quiet at this size, and one
+ word can still carry two rules that want different colours in the same place. Neither is a
+ reason not to build it — both are work that comes with it.
+
+
+
+
+
+
+
+ Where the pictures come from. Nothing here is a mock-up. The page is the real
+ mus'haf image the app ships; the tinted verse shapes are the same ones the app taps against; the
+ word and mark rectangles are the measured positions of the printer's own ink; and the colours are
+ read straight out of the app's stylesheet when this page is built, so it cannot drift from what
+ Hifth actually looks like. All the counts are recomputed from the rule data each time.
+
+
+ Built by scripts/build-mark-options.mjs — edit that, not this. The technical write-up
+ behind it, including what is still unresolved, is docs/design/sub-word-marks.md §⑧.
+ The print is assets/pages/hafs-kfqc/2.svg: outlined shapes only, no text.
+
+
diff --git a/docs/design/mark-labels.md b/docs/design/mark-labels.md
new file mode 100644
index 0000000..5eb1b8f
--- /dev/null
+++ b/docs/design/mark-labels.md
@@ -0,0 +1,568 @@
+# Does each mark's drawing match the name it was given?
+
+> A companion to [Are the marks in the right place, and how would we know?](mark-registration.md),
+> and deliberately not part of it. That document asks whether a rectangle sits on the ink. This
+> one asks a question that needs no page, no rectangle and no second printing to answer: the
+> corpus drew a shape and, in the same breath, named it — do the two agree?
+
+**Status:** a measurement, and the finding is that there is nothing to find. It has been run over
+**every one of the 326,515 marks**, not a sample. Nothing in the app changes as a result. What it
+settles is that **not one mark in this corpus is drawn with the strokes of a different name** —
+the category of genuine mislabelling is empty — that one specific limit of the method is real and
+must never be reported as an error, and that a second limit, which used to produce forty-five
+convincing-looking errors, has been found, fixed, and measured.
+
+> **This document was wrong once, and the correction is the most useful thing in it.** An earlier
+> version reported forty-five marks "drawn unlike their own name" and asked for a person to review
+> them. Every one of the forty-five was an artefact of how the comparison worked, not a fact about
+> the corpus. §④ walks through how that was caught and what replaced it, because the same mistake
+> is available to anyone who compares two drawings by laying one over the other.
+
+---
+
+## What do the words mean?
+
+- **Mus'haf** — the printed Qur'an. Two different printings of the same one exist in this
+ project. **Only one of them appears below**, which is the entire point of this document.
+- **Harakah** (plural *harakat*) — the small vowel marks written above and below the letters.
+ Twenty-six named kinds appear in this mus'haf. "Mark" below always means one of these.
+- **Iqlab** — a recitation rule; three of the twenty-six names are marks written for it, and
+ they turn out to matter here out of all proportion to how rare they are.
+- **Agreement** — one number between −1 and 1 comparing two drawn shapes: 1 means the same ink
+ in the same places, 0 means no more alike than chance. It is the same number used in the
+ companion document, and it is chance-corrected, so a mark that is mostly blank space cannot
+ score well simply by being mostly blank space. It can go **below zero**, and that turns out to
+ matter: below zero means ink landed where the other drawing has nothing, which is worse than
+ no resemblance at all.
+- **Stroke** — one continuous piece of a drawn mark. Some of the twenty-six names are a single
+ stroke; others are two or three written one after another — a vowel above a small letter, or
+ two short slashes side by side. Whether a name is one stroke or three is the hinge of this
+ whole document.
+
+---
+
+## ① What is being decided?
+
+Whether the names attached to the marks can be trusted, and how anyone would ever know.
+
+This used to be asked as part of the placement question, and asking them together made both
+answers worse. The old measurement produced a single figure — "the ink matches the name for
+51.15% of marks, or 69.15% if you count look-alikes" — and an eighteen-point swing that depends
+on how you choose to count is not one measurement. It was three unrelated things added together:
+a rectangle in the wrong place, a pair of names this method is not entitled to separate, and an
+actual mislabelling. Only the third is a finding.
+
+So the decision here is narrow: **is there a data-integrity problem in the names, and how big is
+it?**
+
+## ② Why is this being asked now?
+
+Because the answer to the placement question depends on it. A measurement of whether the shipped
+page's ink matches a mark's name is worthless if the name itself is in doubt — it would report
+the same failure twice and call it two pieces of evidence. Separating them lets the placement
+probe *exclude* marks whose name is in question, and say how many it excluded.
+
+And because separating them makes the labelling question far easier than it looked. It needs no
+page, no fitted transform and no rectangle, which means the large displacement documented next
+door **cannot contaminate it**. That is a stronger claim than reporting the two numbers side by
+side: the displacement is not an input to this arithmetic at all.
+
+## ③ What happens if nobody decides?
+
+Very little, and that is a real answer rather than a shrug. Nothing is drawn from these names
+today. The cost of leaving it is that the placement work carries an unbounded doubt it cannot
+resolve from inside itself, and that a future feature which colours a recitation rule inherits
+whatever is wrong here without any way to notice.
+
+## ④ What does the app do today, and what does that cost?
+
+### How is anything measured, with only one printing?
+
+Every mark in the corpus is drawn as an outline and carries a name. One real drawing per name is
+chosen as that name's canonical example — the instance nearest its own class's average, so the
+choice is a property of the class rather than of whichever page happened to be scanned first.
+Every drawing in the corpus is then centred on its own middle, stretched so its width and height
+match the example's, scored against all twenty-six examples treated the same way, and the winner
+compared with the label.
+
+Centring both shapes is what makes this a comparison of *shape alone*. It is also this method's
+one unavoidable limit, and the next section measures the size of it rather than asserting it.
+
+The stretching is not decoration and it was not there at first. §④'s section *[Where did the
+forty-five go?](#where-did-the-forty-five-go)* is the account of what happened without it.
+
+### Which names does this print draw as the same shape?
+
+Not a list somebody wrote down. Every canonical example was scored against every other — the
+whole twenty-six by twenty-six square — and any pair reaching **0.85** was joined:
+
+| this name | and this one | agreement |
+|---|---|---|
+| fatha | kasra | 0.968 |
+| fathatan | kasratan | 0.914 |
+
+**Two groups, and nothing else comes close.** The nearest pairs that were *not* joined sit at
+0.627 and 0.494 — a gap of nearly three tenths of the scale, so the threshold is not doing
+delicate work:
+
+| threshold | groups it gives |
+|---|---|
+| 0.70 | fatha·kasra · fathatan·kasratan |
+| 0.75 | fatha·kasra · fathatan·kasratan |
+| 0.80 | fatha·kasra · fathatan·kasratan |
+| **0.85** | **fatha·kasra · fathatan·kasratan** |
+| 0.90 | fatha·kasra · fathatan·kasratan |
+| 0.95 | fatha·kasra |
+
+**The same two groups across every threshold from 0.70 to 0.90** — a five-fold widening of the
+band, with no change in the answer.
+
+That stability is itself a repaired result, and it is worth showing both readings side by side,
+because the earlier one looked stable and was not. Before the drawings were put on a common box,
+four other pairs sat within a tenth of the line:
+
+| pair | before | after |
+|---|---|---|
+| fatha ~ kasra | 0.917 · joined | 0.968 · joined |
+| fathatan ~ kasratan | 0.970 · joined | 0.914 · joined |
+| fathatan ~ successive fathatan | 0.785 | 0.533 |
+| kasratan ~ successive fathatan | 0.763 | 0.505 |
+| kasratan ~ successive kasratan | 0.746 | 0.494 |
+| rounded zero ~ rectangular zero | 0.560 | 0.627 |
+
+The two real groups barely moved. The four near-misses fell away, and the reason is exactly the
+reason §④'s repair exists: *successive fathatan* is two short slashes with a gap between them,
+and comparing it to *fathatan* at whatever size each happened to be drawn was scoring the gap
+rather than the slashes. **So the answer to "are the shape groups an artefact of the same
+arithmetic?" is no — but the pairs that used to sit just outside them were.**
+
+The whole square is printed in the measurement's own output and is reproduced at the end of this
+document, because it is the thing that decides which disagreements get excused and an excuse
+nobody can audit is one that will eventually be believed for the wrong reason.
+
+What separates a fatha from a kasra is that one sits above the letter and one below. A comparison
+that centres both has thrown that away before it starts. **So this method is not entitled to tell
+those two pairs apart, and a case where it "sees a kasra" on a mark labelled fatha is a limit of
+the question, not a disagreement about the data.** It is never counted as one below.
+
+### Does the measure measure anything? — three planted labels
+
+The winner is chosen without ever looking at the label, so a wrong label can be planted for free
+and the answer is known in advance. Three plants, over the whole corpus:
+
+| what was planted instead of the real name | flagged | should be |
+|---|---|---|
+| a random name from outside the label's shape group | **100.00%** (326,514 of 326,515) | ~100% |
+| **the nearest name from outside the shape group** | **100.00%** (326,511 of 326,515) | ~100% |
+| a name from *inside* the shape group | **0.00%** (1 of 170,251) | ~0% |
+
+The second row is the one that matters: it is the hardest wrong answer available, and it was
+caught every time but four. The third row is the other half of the same claim — the excuse in
+the middle column of the results is not a hole through which real errors escape, because a
+deliberately planted within-group error is *supposed* to escape, and this measurement's own
+report of it is honest about that.
+
+These three rows are also the guard on the repair described below. A change that made the
+comparison more forgiving would show up here first, as a wrong name that stopped being caught.
+Stretching every example onto the drawing's own box moved the second row by three marks out of
+326,515 and the third by one. The repair did not buy its result by lowering the bar.
+
+### So how often does a drawing match its name — and why is that three numbers, not one?
+
+Every mark in the cache, so these are counts of the whole population and carry no sampling error
+and therefore no confidence interval:
+
+| outcome | marks | share |
+|---|---|---|
+| the drawing's best match is its own name | 256,948 | **78.69%** |
+| best match is a name this print draws as the same shape | 69,562 | **21.30%** |
+| **best match is outside the label's shape group** | **5** | **0.00%** |
+
+The middle row is entirely fatha/kasra and fathatan/kasratan, and it is a statement about the
+method. The bottom row is the only one that could be a finding — and §④'s last two sections show
+that it is not one either.
+
+**No number in this document adds those rows together, and none should.** A combined figure would
+mean "however much of this method's own blind spot you feel like forgiving today", which is what
+made the old single percentage unusable.
+
+### Where did the forty-five go?
+
+An earlier run of this same measurement put forty-five marks in that bottom row and this document
+reported them as a small data-integrity finding. They were not one. What follows is how that was
+caught, because the way it was caught is more reusable than the result.
+
+**It was caught by looking at the top card.** The evidence page draws every disagreement three
+times: the mark as the print drew it, the example of the name it was given, and the example of
+the name it was matched to. On one card the first two pictures were two parallel diagonal strokes
+and so were the second two — plainly the same glyph to anyone's eye — and the number between them
+was **−0.096**. Not a weak match: an *anti*-correlation, beaten by a name it resembles not at all.
+
+A negative number between two drawings a reader calls identical is not a fact about the corpus.
+It is the comparison failing, and no amount of careful reporting downstream repairs it.
+
+**What was actually wrong.** The comparison laid each drawing over each example at whatever size
+each happened to have been drawn. But this print does not draw a name at one size — it sets a
+mark smaller under a crowded word and larger under an open one. Measured across the whole corpus,
+the gap between the tenth and the ninetieth percentile of a name's own width runs to a third of
+the mark's width for the commonest names:
+
+| how variably the print sizes this name | names | how often they disagreed |
+|---|---|---|
+| barely at all (under 2% spread) | shadda, sukun, wasla, damma, dammatan, hamza, maddah, small meem, small noon, small yeh, small waw, superscript alef, rectangular zero, rounded zero, successive dammatan | 0.00%, except two marks |
+| a great deal (10% to 34% spread) | fatha, kasra, fathatan, kasratan, small seen, vowel sign, successive fathatan, successive kasratan, and all three iqlab marks | every disagreement in the corpus |
+
+**And the size alone is not the mechanism — it is size *and* strokes.** A name drawn as one
+stroke, laid over a copy of itself a fifth too large, still overlaps itself down the middle and
+scores respectably. A name drawn as two or three strokes does not: when it grows, the gaps
+between its strokes grow too, so each stroke lands on the paper *between* the example's strokes.
+Ink on gap is what drives agreement below zero. That is why fatha, the most size-variable name in
+the corpus, never disagreed once, while the three iqlab marks — a vowel above a small letter,
+which is two strokes and sometimes three — supplied thirty-nine of the forty-five.
+
+**The repair.** Before scoring, each example is stretched so its width and its height match the
+drawing's. Both axes rather than one, because matching the diagonal alone — a single isotropic
+number — recovered 32 of the 45 while matching both recovered 42. Three other repairs were
+tested and rejected on evidence, in §⑧.
+
+The stretch is decided **by the drawing alone**, never by the label, which is what keeps the
+planted-label controls above meaningful: every example is put on the same box, so the name the
+corpus wrote gets no say in how any candidate is drawn.
+
+**What it cost and what it bought.** The full three-way split moved from 79.57 / 20.42 / 45 to
+78.69 / 21.30 / 5. The shape groups did not change. The planted controls moved by four marks in
+326,515. The two directions of the twenty-six by twenty-six square, which used to differ because
+each was scored over a different rectangle, are now near enough identical — both are still
+computed and reported rather than one being assumed from the other.
+
+### Are those last five the right strokes, or the right name?
+
+Five marks still match a name outside their own group. They are not five mislabels, and this is
+measured rather than argued.
+
+Each of the five was taken apart into the strokes the print drew it from, and each stroke scored
+against the stroke in the same position of its own name's example. Separately, the distances
+between stroke centres were compared, in units of the mark's own size:
+
+| mark | strokes | whole picture | worst single stroke | spacing differs by |
+|---|---|---|---|---|
+| p315 mark 257 · successive kasratan | 2 | **−0.142** | **0.948** | **0.797** |
+| p58 mark 79 · damma iqlab | 3 | 0.409 | 0.993 | 0.141 |
+| p108 mark 353 · damma iqlab | 3 | 0.443 | 0.998 | 0.113 |
+| p74 mark 124 · successive kasratan | 2 | 0.686 | 0.832 | 0.102 |
+| p82 mark 321 · kasratan | 2 | 0.643 | 0.943 | 0.090 |
+
+And, so those columns have something to be read against, the same two numbers for every *other*
+drawing of those three names:
+
+| name | other drawings | worst stroke, typical | spacing, typical | spacing, 95th percentile |
+|---|---|---|---|---|
+| damma iqlab | 132 | 0.992 | 0.031 | 0.093 |
+| successive kasratan | 1,933 | 0.985 | 0.038 | 0.084 |
+| kasratan | 598 | 0.985 | 0.064 | 0.817 |
+
+**All five of the five have every stroke matching their own name's stroke at 0.83 or better**,
+while the whole-picture score falls as low as −0.142. The first row is the extreme case: two
+strokes that are, to three decimal places, the canonical strokes of a successive kasratan — and
+the print set them nearly twice as far apart as usual, ten times its own class's ninety-fifth
+percentile.
+
+So the honest count of marks in this corpus whose drawing carries the wrong name is **zero**. Not
+"five, pending review". Zero. **The category emptied out**, and an empty category is the result,
+not a gap in the work.
+
+What the remaining five measure is that a whole-picture comparison charges a mark for where the
+print chose to put its own pieces. That could be repaired too — score stroke against stroke and
+ignore the arrangement — but it must not be, and §⑧ says why: the arrangement is the *only* thing
+separating fathatan from successive fathatan, and a comparison that discards it would trade five
+false alarms for four thousand real confusions.
+
+### How firm are the five?
+
+Each was re-scored at eight neighbouring centrings, one sample away in each direction, to see
+whether the verdict is about the mark or about where the middle was judged to be. **2 of the 5
+still disagree at all eight; none survives at zero of eight.** The stroke-by-stroke table above
+supersedes this check rather than depending on it, and it is kept because a verdict that flipped
+under a half-sample would have been a third thing wrong and worth knowing about.
+
+### Or is the example itself the problem?
+
+Each name is judged against *one* real drawing. For most names that costs nothing — the print
+draws them identically every time, and the median instance agrees with its own example at 0.99 or
+better. For a few it does not:
+
+| name | drawings | median agreement with its own example | 5th percentile | disagreeing |
+|---|---|---|---|---|
+| kasra iqlab | 99 | **0.737** | 0.437 | 0.00% |
+| fatha iqlab | 106 | **0.764** | 0.461 | 0.00% |
+| successive fathatan | 2,901 | **0.816** | 0.603 | 0.00% |
+| small seen | 8 | **0.847** | 0.628 | 0.00% |
+| damma iqlab | 134 | **0.849** | 0.581 | 1.49% |
+| fathatan | 734 | 0.865 | 0.701 | 0.00% |
+
+Every name at the top of that list is a name drawn from two or three strokes, and what holds its
+median down is the spacing measured in the previous section, not any doubt about what it is. One
+example can stand in for a name's strokes; it cannot stand in for every distance the print sets
+them at. **Note also that five of the six now disagree zero times** — before the repair, four of
+them supplied every disagreement in the corpus. The correlation that made this section look
+alarming was between a name being multi-stroke and the old comparison being wrong about it.
+
+## ⑤ What do people outside this project do about this?
+
+The general shape of the practice is well established: to find wrong labels in a labelled
+dataset, score every item with something that never saw its label, rank the disagreements, and
+have a person read the top of the list. The best-known demonstration of it found label errors in
+the standard machine-learning benchmarks that everyone had been reporting scores against for
+years — which is the relevant lesson here, that a dataset can be wrong in a way no amount of
+using it reveals.
+
+The specific choices below are borrowed from that practice: separating the classes a method
+cannot distinguish from the ones it can before counting anything, and ranking by how far the
+winner beat the label rather than by the winner's score alone.
+
+**What was not checked in this pass, stated plainly rather than smoothed over:** no primary
+source was re-read for this document, and no survey was done of how Arabic typographic corpora in
+particular audit their own diacritic labels. The companion document's §⑤ contains the literature
+search that *was* done, and it was about placement, not naming. If this becomes a question anyone
+has to defend, that search still needs doing.
+
+## ⑥ What have we already decided that this has to live inside?
+
+- **No scripture is committed to this repository.** The evidence page draws marks and is written
+ to the untracked working directory, never to `docs/`. Everything in this document is reported
+ by page number, mark index and diacritic name.
+- **Derived data is derived offline from committed bytes, deterministically.** Two runs of the
+ command below produce identical output; it reaches no network and needs nothing installed.
+- **Measurements are not gates until a person has agreed with them.** This one exits with a
+ failure code when a threshold is breached so that it *could* become a check, and it is wired
+ into nothing.
+- The companion document's Option B — one recorded displacement per page — is unaffected by
+ anything here, which is the useful consequence of the two being independent.
+
+## ⑦ What are the options?
+
+The question these answer has changed since the first draft. It is no longer "what do we do about
+the forty-five", because there are no forty-five. It is "we now know the names are clean — what,
+if anything, is worth building on top of that".
+
+### Option A — record the two limits, change no data, ask nobody to review anything · **recommended**
+
+Write down that shape cannot separate fatha from kasra or fathatan from kasratan, so that no
+future work claims it can; write down that a whole-picture comparison also cannot judge how far
+apart a print sets a mark's own strokes; and stop there.
+
+Measured consequence: the first limit is bounded and known — it touches 21.30% of marks and is
+entirely two pairs. The second is bounded at five marks in 326,515, every one of them shown to be
+the right strokes at an unusual spacing. **Nothing is asked of a person**, and that is the point
+of the option rather than an omission: the earlier draft of this document asked for an afternoon
+of human review of forty-five marks, and every one of the forty-five would have been a wasted
+judgement. Attention is the one resource here that cannot be regenerated by re-running anything.
+
+### Option B — correct the labels · **rejected on the measurement**
+
+Kept in the list because an earlier draft recommended a version of it, and a rejected option that
+disappears leaves the next reader wondering whether it was ever considered.
+
+Measured consequence: there is nothing to correct. Zero marks in 326,515 are drawn with the
+strokes of a different name. If the corpus is ever replaced, this option comes back — but it
+comes back needing the same evidence, which is a stroke-by-stroke table, not a ranked list of
+whole-picture scores.
+
+### Option C — add more than one example per name
+
+Several examples per name, a drawing matching if it resembles any of them.
+
+Measured consequence: it would raise the "own name" column for the multi-stroke names, whose
+median agreement with their single example still sits at 0.74–0.87 for reasons §④ explains. It
+would not change any verdict — those names now disagree zero times — so it buys a prettier
+number and nothing else, at the price of making the method harder to explain and weakening the
+planted-label control, since more templates means more chances for a wrong name to win. **Not
+worth doing.** This is a firmer answer than the earlier draft could give, which deferred it
+pending a review.
+
+### Option D — separate the look-alike pairs by where they sit
+
+Fatha above the letter, kasra below. Shape cannot see it; position relative to the carrying letter
+can.
+
+Measured consequence: it would close the 21.30% column, and it is the *only* thing that would — a
+better shape comparison cannot help, and that is settled by the 0.968 between two names this
+document is otherwise confident about. But it needs the placement question answered first, because
+it needs to know where the letter is. Deferred rather than rejected, and it is carried as an open
+item in one place only — [`mark-registration.md`](mark-registration.md) §⑩ ⑤ — because it is one
+question and a copy of it here would be a second thing to keep in step.
+
+### What thresholds would go with this, and are they enforced?
+
+Proposed and **not enforced anywhere**:
+
+- Disagreements outside the shape groups no higher than **0.5%** of drawings, against a measured
+ **0.00%** (5 marks).
+- The nearest-wrong-name control flagged at least **95%** of the time, against a measured
+ **100.00%**.
+- The within-group control flagging no more than **0.5%**, against a measured **0.00%** — this is
+ the one that would catch the shape groups being drawn too generously.
+- **Every disagreement's worst single stroke at or above 0.80**, against a measured 5 of 5. This
+ one is new and it is the important one: it is the threshold that fails if a real mislabelling
+ ever appears, and it is the only proposed threshold whose breach would mean the *corpus* is
+ wrong rather than this method.
+
+## ⑧ What else could be considered, and why is it not here?
+
+**Comparing each drawing to its class average rather than to one real drawing.** An average of
+many outlines is blurred at the edges, and everything then scores against it slightly worse in the
+same way, which flattens exactly the distinction being measured. A real instance keeps sharp
+edges, and the cost of choosing one — that the choice might be unrepresentative — is measured
+directly in §④ rather than hidden.
+
+**Scoring against every drawing of a name rather than one.** Correct, and 326,515 by 326,515. The
+single-example version runs the whole corpus in fifty seconds, and §④ shows where its weakness
+is, which is enough to decide what to do next.
+
+**Three other repairs for the size problem, all tested, all rejected on the numbers.** These were
+run against each other rather than chosen by preference, and the losers are listed because a
+repair with no rejected alternatives beside it is one nobody can check:
+
+| what was tried | of the 45, how many turned out to be their own name | why not |
+|---|---|---|
+| try each example at ten sizes, keep the best | 22 | Taking the best of several sizes can only ever *raise* a score, never lower one, so it cannot separate anything — it can only merge. The near-miss pairs in the square stayed exactly where they were, and one new pair rose. A repair that is mathematically incapable of finding a difference is not a measurement. |
+| match the diagonals — one size number, shape kept in proportion | 32 | Better, and it does lower scores as well as raise them. But the print stretches some marks along one axis only, and thirteen of the forty-five stayed wrong. |
+| widen the window to cover both drawings, without resizing | 24 | This fixes a different real defect — a small example laid inside a big drawing used to be scored only where it sat, so it was never charged for the ink it failed to explain. Worth knowing, but once both drawings are put on the same box the two windows coincide and the question disappears. It is subsumed, not dismissed. |
+| **match width and height separately** | **42** | **Chosen.** Also collapsed the four near-miss pairs in the square, which none of the others did. |
+
+**Scoring stroke against stroke and ignoring the arrangement.** This would take the last five to
+zero. It must not be done, and the reason is a number: *fathatan* and *successive fathatan* are
+the same two strokes, and the only thing distinguishing them is how far apart the print sets
+them. Discarding arrangement would merge them, and they are 3,635 marks against the five it would
+save. The measurement of stroke spacing therefore lives beside the whole-picture score as
+evidence for reading a verdict, and is deliberately not folded into the verdict itself.
+
+**Anything that learns.** A trained classifier would answer this better and would not be
+reproducible from committed bytes without pinning weights, a runtime and a numerical library.
+Nothing here needs it: the classes are typographic, the print draws each one nearly identically,
+and the measured evidence for that is the 0.99-and-above column.
+
+**Reading the Arabic character each mark carries.** The corpus names its marks and also carries
+the text they belong to, so the name could be cross-checked against the text rather than against
+the drawing. That is a genuinely independent check and a good one — but it compares one record
+against another record, and every mark in this corpus would pass it while still being drawn
+wrongly. It answers a different question, and it should be done as well, not instead.
+
+## ⑨ What would change the answer?
+
+- **A disagreement whose worst stroke scores badly.** This is the one to watch. Today all five
+ disagreements have every stroke matching their own name at 0.83 or better, which is what makes
+ them arrangement rather than error. A disagreement with a stroke below 0.80 would be the first
+ real candidate for a wrong name this corpus has produced, and it is worth a person's afternoon
+ the moment one appears — which is precisely what the earlier draft could not tell you, because
+ it was ranking whole-picture scores that were meaningless for exactly these marks.
+- **The shape groups being wrong.** They are derived at 0.85 and identical at every threshold from
+ 0.70 to 0.90 — but if some third pair belongs together, the middle column grows and the bottom
+ row shrinks.
+- **The corpus changing.** Every number here is a census of one specific set of bytes.
+- **The multi-stroke names becoming load-bearing.** No name disagrees more than 1.49% now, so
+ nothing here blocks anything. But the names whose single example represents them worst are the
+ iqlab marks and the doubled vowels, and a feature that colours a recitation rule would be
+ leaning on exactly those. It would be worth re-reading §④'s spacing measurement first.
+
+## ⑩ Open questions, and what would answer each
+
+What this document does *not* settle, stated so that each answer would be recognisable when it
+arrives. Both are indexed in [`docs/issues.json`](../issues.json), which is the only place that
+counts them.
+
+### ① Whether a spacing-aware comparison is worth building · **open**
+
+The five remaining disagreements are the right strokes at an unusual distance apart. A comparison
+that scored strokes and arrangement as two numbers instead of one would report them correctly
+rather than merely explain them afterwards. §⑧ says why the naive version of that must not be
+built. Nothing depends on the answer today, which is why this is open rather than urgent.
+
+### ② Whether the names agree with the text they belong to · **open**
+
+The check described in §⑧ — name against carried text rather than name against drawing — has not
+been done. It is cheap, it is independent of everything here, and it would catch a class of error
+this document is blind to.
+
+## How can someone look at this for themselves?
+
+The measurement writes a page of evidence, and it is a **separate** page from the placement one
+on purpose — one ranked list mixing "the rectangle is in the wrong place" with "the name is wrong"
+is how the two got confused in the first place. It shows the corpus's own drawing beside the
+canonical example of the name it was given and the canonical example of the name it was matched
+as, worst-first by how far the winner beat the label, filterable by name and by verdict.
+
+Each card also carries the two numbers from §④'s stroke table — the worst single stroke, and how
+far the spacing differs — with that name's typical values beside them, and says in one sentence
+which of the two the card is about. **That line is on the card because of what happened without
+it.** The first version of this page showed three pictures and a score, a reader compared the
+first two pictures, saw the same glyph twice, and only the score disagreed. A card that shows a
+verdict without showing what the verdict is made of teaches a reader to distrust the page rather
+than to find the defect.
+
+That page is **not** checked in: it contains the mus'haf's own artwork, and no scripture is
+committed here. It is written to the untracked working directory and rebuilt by the command below.
+
+## Where does this live?
+
+- `packages/etl/scripts/probe-mark-labels.mjs` — the measurement. Not a gate, not wired into
+ `make ci` or the Makefile; run it directly or via `pnpm probe:mark-labels`.
+- `packages/etl/scripts/lib/mark-shape.mjs` — the canonical examples, the whole-square comparison,
+ the shape groups derived from it, and the three-way verdict. Shared with the placement probe so
+ that both use one library of examples rather than two that could drift apart.
+- `packages/etl/scripts/lib/mark-ink.mjs` — the agreement score and the example selection.
+- [`mark-registration.md`](mark-registration.md) — the placement question, and why it is a
+ different document.
+- [`docs/map.json`](../map.json), feature `word-geometry` — the code pointers of record.
+
+Reproduce every number here with:
+
+```
+node packages/etl/scripts/probe-mark-labels.mjs
+```
+
+It takes about fifty seconds over all 604 pages, reaches no network, and passes its own thresholds
+today. Two consecutive runs produce a byte-identical evidence page.
+
+---
+
+## Appendix: how alike is every name to every other?
+
+Every canonical example scored against every other, each one stretched onto the box of the one it
+is being scored against. Rows are the drawing being matched; columns the example being tried.
+Both directions are computed and printed rather than one being assumed from the other; now that
+both drawings sit on a common box the two agree to within **0.042** everywhere, where before they
+were measured over different rectangles and could differ a great deal.
+
+Only the two cells at 0.85 or above join anything, and they are marked in bold. **The largest cell
+anywhere else in the square is 0.627**, so the threshold that decides the shape groups has nearly
+a quarter of the scale of clear air beneath it.
+
+| | damma | damma iqlab | dammatan | fatha | fatha iqlab | fathatan | hamza | kasra | kasra iqlab | kasratan | maddah | rect zero | round zero | shadda | sm meem | sm noon | sm seen | sm waw | sm yeh | succ dammatan | succ fathatan | succ kasratan | sukun | sup alef | vowel sign | wasla |
+|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
+| damma | 1.00 | 0.02 | 0.28 | 0.02 | -0.06 | 0.33 | -0.00 | 0.01 | 0.02 | 0.30 | 0.12 | -0.08 | 0.03 | 0.08 | -0.00 | -0.04 | 0.22 | 0.02 | 0.01 | 0.12 | 0.27 | 0.18 | 0.36 | 0.13 | 0.16 | 0.17 |
+| damma iqlab | 0.01 | 1.00 | 0.07 | 0.19 | 0.25 | 0.04 | -0.05 | 0.19 | 0.21 | 0.04 | 0.02 | 0.11 | 0.13 | -0.06 | 0.14 | -0.10 | 0.05 | 0.05 | -0.08 | 0.07 | -0.09 | -0.01 | 0.15 | -0.03 | 0.08 | -0.01 |
+| dammatan | 0.25 | 0.08 | 1.00 | 0.02 | 0.05 | 0.15 | 0.25 | 0.02 | 0.13 | 0.14 | 0.18 | -0.09 | -0.03 | 0.10 | 0.08 | -0.17 | 0.04 | -0.01 | -0.03 | 0.05 | 0.10 | 0.06 | 0.24 | -0.00 | 0.09 | 0.15 |
+| fatha | 0.00 | 0.17 | 0.02 | 1.00 | 0.15 | -0.19 | -0.10 | **0.96** | -0.05 | -0.11 | 0.31 | -0.16 | -0.16 | 0.16 | -0.05 | -0.10 | 0.19 | -0.01 | -0.09 | 0.11 | -0.32 | 0.12 | -0.15 | -0.12 | 0.06 | 0.33 |
+| fatha iqlab | -0.06 | 0.24 | 0.04 | 0.15 | 1.00 | -0.19 | -0.08 | 0.15 | 0.15 | -0.19 | -0.12 | 0.07 | -0.05 | -0.06 | 0.03 | -0.05 | 0.05 | -0.10 | -0.10 | 0.00 | -0.17 | -0.11 | 0.06 | 0.15 | 0.04 | -0.12 |
+| fathatan | 0.33 | 0.04 | 0.14 | -0.21 | -0.20 | 1.00 | 0.28 | -0.20 | 0.12 | **0.91** | 0.04 | -0.02 | 0.19 | 0.23 | 0.10 | -0.13 | -0.00 | -0.06 | 0.00 | 0.14 | 0.35 | 0.39 | 0.27 | -0.06 | 0.21 | 0.26 |
+| hamza | -0.03 | -0.05 | 0.22 | -0.08 | -0.08 | 0.27 | 1.00 | -0.09 | 0.00 | 0.28 | 0.17 | 0.14 | 0.24 | 0.18 | 0.26 | -0.13 | -0.12 | -0.19 | -0.06 | -0.04 | 0.13 | 0.10 | 0.23 | -0.10 | 0.37 | 0.17 |
+| kasra | 0.01 | 0.19 | 0.02 | **0.97** | 0.15 | -0.20 | -0.10 | 1.00 | -0.05 | -0.14 | 0.33 | -0.18 | -0.18 | 0.14 | -0.02 | -0.12 | 0.19 | -0.03 | -0.08 | 0.13 | -0.33 | 0.18 | -0.18 | -0.13 | 0.06 | 0.33 |
+| kasra iqlab | 0.03 | 0.20 | 0.13 | -0.05 | 0.15 | 0.11 | -0.01 | -0.05 | 1.00 | 0.09 | -0.12 | 0.09 | 0.05 | -0.05 | -0.04 | -0.03 | -0.09 | -0.14 | 0.03 | 0.09 | 0.09 | 0.02 | -0.07 | -0.04 | 0.08 | -0.12 |
+| kasratan | 0.29 | 0.04 | 0.12 | -0.13 | -0.19 | **0.91** | 0.25 | -0.12 | 0.10 | 1.00 | 0.03 | -0.07 | 0.15 | 0.27 | 0.08 | -0.12 | -0.04 | -0.06 | -0.02 | 0.15 | 0.32 | 0.49 | 0.23 | -0.06 | 0.16 | 0.27 |
+| maddah | 0.10 | 0.03 | 0.18 | 0.31 | -0.13 | 0.05 | 0.19 | 0.32 | -0.13 | 0.02 | 1.00 | -0.16 | -0.22 | 0.19 | -0.02 | -0.12 | 0.02 | -0.12 | -0.17 | -0.05 | 0.21 | 0.06 | 0.01 | -0.18 | 0.20 | 0.33 |
+| rect zero | -0.09 | 0.13 | -0.11 | -0.16 | 0.09 | -0.04 | 0.12 | -0.17 | 0.10 | -0.07 | -0.18 | 1.00 | 0.61 | -0.04 | 0.29 | 0.33 | -0.08 | 0.21 | 0.06 | 0.08 | -0.09 | -0.21 | 0.14 | -0.06 | 0.44 | -0.15 |
+| round zero | 0.04 | 0.13 | -0.01 | -0.17 | -0.07 | 0.16 | 0.27 | -0.18 | 0.06 | 0.18 | -0.26 | 0.63 | 1.00 | 0.07 | 0.25 | 0.32 | 0.07 | 0.25 | 0.10 | 0.12 | 0.12 | -0.07 | 0.32 | -0.05 | 0.38 | -0.10 |
+| shadda | 0.08 | -0.05 | 0.10 | 0.17 | -0.05 | 0.24 | 0.20 | 0.14 | -0.05 | 0.28 | 0.18 | -0.03 | 0.09 | 1.00 | -0.17 | 0.00 | 0.26 | 0.06 | -0.14 | -0.09 | 0.07 | 0.21 | 0.06 | -0.10 | 0.11 | 0.36 |
+| sm meem | 0.00 | 0.13 | 0.07 | -0.01 | 0.03 | 0.10 | 0.28 | -0.01 | -0.05 | 0.09 | -0.02 | 0.29 | 0.26 | -0.16 | 1.00 | -0.11 | -0.14 | -0.10 | -0.02 | -0.01 | -0.02 | 0.05 | 0.32 | -0.10 | 0.19 | 0.08 |
+| sm noon | -0.04 | -0.10 | -0.18 | -0.11 | -0.05 | -0.13 | -0.14 | -0.11 | -0.04 | -0.13 | -0.13 | 0.34 | 0.36 | 0.01 | -0.11 | 1.00 | 0.26 | 0.21 | 0.25 | 0.05 | -0.03 | -0.14 | -0.06 | -0.00 | 0.04 | -0.24 |
+| sm seen | 0.22 | 0.06 | 0.04 | 0.19 | 0.05 | -0.03 | -0.10 | 0.19 | -0.10 | -0.03 | 0.03 | -0.06 | 0.09 | 0.25 | -0.11 | 0.26 | 1.00 | 0.15 | 0.18 | -0.07 | 0.08 | 0.03 | 0.17 | -0.09 | -0.02 | -0.01 |
+| sm waw | 0.01 | 0.05 | -0.03 | -0.01 | -0.10 | -0.05 | -0.19 | -0.01 | -0.15 | -0.05 | -0.12 | 0.20 | 0.24 | 0.10 | -0.08 | 0.22 | 0.16 | 1.00 | 0.18 | 0.28 | -0.13 | -0.05 | -0.01 | -0.03 | -0.05 | 0.01 |
+| sm yeh | 0.00 | -0.08 | -0.03 | -0.08 | -0.10 | -0.01 | -0.07 | -0.08 | 0.03 | -0.03 | -0.16 | 0.06 | 0.12 | -0.15 | -0.01 | 0.27 | 0.16 | 0.19 | 1.00 | -0.04 | 0.04 | 0.07 | -0.12 | -0.12 | 0.02 | -0.22 |
+| succ dammatan | 0.11 | 0.07 | 0.05 | 0.12 | 0.00 | 0.14 | -0.02 | 0.14 | 0.08 | 0.15 | -0.05 | 0.09 | 0.16 | -0.04 | -0.02 | 0.04 | -0.08 | 0.26 | -0.03 | 1.00 | 0.01 | 0.13 | 0.12 | 0.07 | 0.18 | 0.11 |
+| succ fathatan | 0.28 | -0.09 | 0.08 | -0.32 | -0.17 | 0.35 | 0.12 | -0.33 | 0.09 | 0.30 | 0.21 | -0.07 | 0.12 | 0.07 | -0.01 | -0.04 | 0.08 | -0.12 | 0.04 | 0.01 | 1.00 | -0.01 | 0.26 | 0.00 | 0.25 | 0.10 |
+| succ kasratan | 0.19 | -0.00 | 0.07 | 0.16 | -0.11 | 0.41 | 0.10 | 0.18 | 0.01 | 0.49 | 0.04 | -0.20 | -0.05 | 0.22 | 0.05 | -0.14 | 0.03 | -0.04 | 0.07 | 0.13 | -0.02 | 1.00 | 0.08 | -0.11 | 0.01 | 0.32 |
+| sukun | 0.35 | 0.15 | 0.25 | -0.18 | 0.06 | 0.25 | 0.27 | -0.18 | -0.08 | 0.22 | 0.02 | 0.18 | 0.33 | 0.06 | 0.28 | -0.05 | 0.15 | -0.03 | -0.15 | 0.13 | 0.25 | 0.07 | 1.00 | 0.13 | 0.38 | 0.14 |
+| sup alef | 0.11 | -0.00 | -0.01 | -0.16 | 0.14 | -0.05 | -0.09 | -0.15 | -0.06 | -0.06 | -0.14 | -0.06 | -0.04 | -0.14 | -0.13 | -0.03 | -0.11 | -0.04 | -0.12 | 0.10 | 0.02 | -0.07 | 0.16 | 1.00 | 0.06 | -0.17 |
+| vowel sign | 0.13 | 0.13 | 0.07 | 0.06 | 0.01 | 0.20 | 0.38 | 0.07 | 0.06 | 0.16 | 0.19 | 0.44 | 0.40 | 0.11 | 0.17 | 0.04 | -0.05 | -0.04 | -0.02 | 0.19 | 0.24 | 0.01 | 0.39 | 0.06 | 1.00 | 0.10 |
+| wasla | 0.16 | 0.01 | 0.16 | 0.33 | -0.13 | 0.25 | 0.16 | 0.34 | -0.11 | 0.27 | 0.33 | -0.16 | -0.07 | 0.35 | 0.08 | -0.25 | -0.00 | 0.01 | -0.22 | 0.10 | 0.10 | 0.31 | 0.14 | -0.21 | 0.09 | 1.00 |
diff --git a/docs/design/mark-registration.md b/docs/design/mark-registration.md
new file mode 100644
index 0000000..f807c80
--- /dev/null
+++ b/docs/design/mark-registration.md
@@ -0,0 +1,941 @@
+# Are the marks in the right place, and how would we know?
+
+> Read this before drawing a single mark on a page for a reader. The app knows where 326,515
+> marks are to a tenth of a unit, and until now nothing had ever checked that the ink is
+> underneath. It is not. This document is that measurement and what follows from it.
+
+> **This document is about placement only.** Whether each mark's drawing matches the *name* it
+> was given is a different question with a different answer, and it lives in
+> [Does each mark's drawing match the name it was given?](mark-labels.md). The two used to be
+> one document and one number, and that was a mistake: the merged figure moved eighteen points
+> depending on how you chose to count, because it had a displacement, a look-alike and a real
+> mislabelling stacked inside it. They are measured apart now, and the naming question needs
+> no page and no rectangle at all — so a displacement cannot contaminate it.
+
+**Status:** a finding and a proposal. The measurement is built, run and reproducible; the
+remedy is **not applied** and the thresholds below are **not enforced anywhere**. Nothing in
+the app changes as a result of this document. What it settles is that the rectangles are
+displaced by a large, consistent, *correctable* amount, and that the correction is worth
+making before anything is drawn for a reader.
+
+---
+
+## What do the words mean?
+
+Six words are used throughout and each is defined once, here.
+
+- **Mus'haf** — the printed Qur'an. Two different printings of the same one are involved
+ below, and the whole document is about whether they agree.
+- **Harakah** (plural *harakat*) — the small vowel marks written above and below the
+ letters. Twenty-six named kinds appear in this mus'haf; *fatha*, *kasra*, *damma*,
+ *sukun*, *shadda* and *tanween* are among them. "Mark" below always means one of these.
+- **Ligature** — a cluster of letters drawn as a single joined shape. Marks are drawn onto
+ ligatures, not onto isolated letters, which is why a mark's position is a fact about the
+ drawing rather than about the spelling.
+- **Tajweed** — the rules of recitation the app can colour. The reason any of this matters:
+ colouring a rule means pointing at the mark the rule is about.
+- **Page unit** — the coordinate the page is drawn in. A page is 345 units across and 550
+ down (the opening two pages are a 235-unit square instead). A mark of middling size is
+ **5.6 units wide and 3.6 tall**, so a unit is a substantial fraction of a mark and a
+ tenth of a unit is a hairline.
+- **Agreement** and **overlap** — the two numbers used to compare a drawn shape with the
+ ink on the page. They are defined and justified in §④, because what they physically mean
+ is the whole argument and cannot be relegated to a glossary.
+
+---
+
+## ① What is being decided?
+
+Two things, and they are separable.
+
+**First: are the mark rectangles correct enough to point at?** The app holds one rectangle
+per mark. It has never been compared against the picture a reader actually sees. Every check
+that exists compares the marks against *other numbers* — against the word that contains
+them, against the letters that carry them, against a reconstructed text. All of those would
+pass unchanged if the whole page of rectangles were slid a centimetre to the left.
+
+**Second: by what method would anybody ever know?** A rectangle can be wrong in two
+different ways — it can be in the wrong *place*, or it can be in the right place with the
+wrong *name*. These fail independently, they cost differently, and any method that adds them
+into one score cannot tell a print that is slightly out of register from one that is
+mislabelled. So they are not added: the naming question is measured in a
+[separate document](mark-labels.md) by a measurement that takes no page, no fit and no
+rectangle as input, and this document answers placement and then uses that result only to
+decide which marks it is entitled to ask about at all. What follows is the placement method,
+what it found, and what to do about it.
+
+## ② Why is this being asked now?
+
+Because the next step in this area is drawing marks for a human to look at, and a picture
+drawn from unverified geometry is not evidence about anything — it is a picture of our own
+assumption. The existing design of record for the mark layer says so itself, in the section
+that names what it cannot answer:
+
+> §⑤ closes *identity* — that a given path is the sukun and not the hamza — and via R1 it
+> predicts which box carries which name for 99.56% of multi-mark runs. Every step of that is
+> a correspondence between a reconstructed text and the corpus's own attributes. None of it
+> looks at the picture. A print that named its paths correctly and *placed* one of them a
+> letter to the left would satisfy ①–⑤ exactly as a correct one does, because nothing here
+> ever asks where the outline sits relative to the letter that wrote it.
+>
+> That is not a gap arithmetic can close from inside the file, and it does not need to be
+> large to matter: a tanween highlight that lights the letter beside the tanween is worse
+> than no highlight, because a hafiz would trust it.
+
+That paragraph named the risk and left it standing. This is the measurement it asked for,
+and the answer is worse than the paragraph feared: the marks are not *occasionally* a letter
+out, they are *systematically* out, on every page but a handful, by very nearly the same
+amount.
+
+## ③ What happens if nobody decides?
+
+Nothing breaks today, because nothing draws a mark today. That is exactly why this is cheap
+to fix now and expensive later. Three things happen if it is left:
+
+- The next feature to draw marks draws them in the wrong place, and it will look almost
+ right — off by a fraction of a letter — which is the failure mode a reader trusts.
+- A human review of a drawn page becomes a review of the displacement rather than of the
+ data, and thirty minutes of a hafiz's attention gets spent finding something a machine
+ found in fifty seconds.
+- The displacement stays invisible to every check we have, because the number the pipeline
+ already records about how well the two printings were fitted together **does not know
+ about it**: across forty pages the correlation between that recorded quality number and
+ the actual error is **0.117**, which is no relationship at all.
+
+## ④ What does the app do today, and what does that cost?
+
+### How is anything measured at all?
+
+The app ships one printing of the mus'haf as outlines — shapes with no names. A second
+printing of the same mus'haf, held only as working data, draws every mark separately and
+*names* it. The rectangles come from the second printing, carried onto the first by a
+per-page fit. So the question "is the mark under the box" has a direct form: take the mark's
+own outline as the second printing drew it, put it where the rectangle claims it is, and ask
+how much of it lands on ink.
+
+Both shapes are turned into grids of on/off samples at **16 samples per page unit**, which
+puts about 90 by 58 samples on a mark of middling size. Two numbers are then computed.
+
+**Overlap** is shared area over combined area — the same quantity object detection has
+scored boxes with for fifteen years. It is reported because it is legible: 0.6 means three
+fifths of the shape and the ink coincide. It is deliberately **not** used to choose anything,
+because it rewards a placement for simply finding more ink.
+
+**Agreement** is the ordinary correlation between the two grids. Because both are on/off,
+this is exactly what normalised cross-correlation reduces to, and it has the property
+overlap lacks: it is scored against what would be expected *by chance at that ink density*.
+A shape dragged onto a solid black letter scores near zero, not near one. That is what stops
+a search sliding downhill into the nearest heavy stroke, and it is why both numbers are here
+rather than one.
+
+Agreement of 1 is an exact match, 0 is exactly chance, and negative means the shape landed
+where the ink is not. On a mark 3.6 units tall, one sample is a fifty-eighth of its height,
+so the finest displacement this can resolve is finer than the tenth-of-a-unit the rectangles
+are rounded to — which is the precision the answer is allowed to claim.
+
+Alongside the score where the rectangle claims to be, the mark's outline is **searched**
+through every position within three units, and the best position is recorded. That turns one
+number into three — how well it fits where it claims, how well it *could* fit, and how far it
+had to move — and only the third can tell "slightly out of register" from "wrong letter".
+
+### Does the measure measure anything? — the control
+
+This is the single most important number in the document, and it comes before every other
+one. A score that cannot separate the true pairing from a deliberately wrong one is not
+measuring the pairing. So every mark is also scored in three places it is known **not** to
+be: one mark-width to the left, one mark-width to the right, and on a different mark's
+rectangle elsewhere on the same page. The best of those three — the generous reading, the one
+that makes us look worst — is the number the true placement has to beat.
+
+On 4,000 marks:
+
+| | as shipped |
+|---|---|
+| agreement where the rectangle claims to be | **−0.127** ± 0.164 |
+| agreement at a deliberately wrong place | **+0.116** ± 0.135 |
+| separation | **−0.242** |
+| marks that beat their own wrong place | **508 of 4,000 — 12.7%** |
+
+The separation is *negative*. A rectangle chosen at random from elsewhere on the same page is
+a **better** description of where this mark's ink is than the rectangle we hold for it. Seven
+marks in eight lose to their own control. Nothing downstream of a number like that is worth
+reading, and the probe says so in those words before it prints anything else.
+
+This is also, incidentally, how a real bug in the measurement was caught: an early version
+scored one control at 5.509, and a correlation cannot exceed 1. The shared area and the ink
+were being counted over two slightly different regions whenever a displacement pushed part of
+the shape off the edge of what had been drawn. It now refuses to return a value outside the
+possible range rather than reporting one, because an impossible score looks like an excellent
+match and gets believed.
+
+### What is the actual error, and is it correctable?
+
+The displacements are not scattered. On every page sampled they point the same way and are
+very nearly the same size. Each `o` is one of forty pages; `O` and `#` are two and three
+pages landing on the same spot. The `+` is where a correct page would be.
+
+```
+how far down
+ ·
+ -1.5 ·
+ o ·
+ o o o o o ·
+ oo oOOOoOo ·
+ -1.0 OooOo#O# ·
+ ·
+ ·
+ ·
+ -0.5 ·
+ ·
+ ·
+ ·
+ 0.0 ····································+············
+ ·
+ ·
+ ·
+ | | | | |
+ -1.5 -1.0 -0.5 0.0 +0.5
+ how far across →
+```
+
+Across forty pages the mean displacement is **0.79 units across and 1.07 units down**, with a
+page-to-page spread of only 0.11 and 0.10 units — a range of −1.04 to −0.61 and −1.40 to
+−0.93. Not one page is near zero.
+
+For scale: a mark is 5.6 by 3.6 units and is drawn with a thin stroke. Being 1.07 units low
+is being about a third of the mark's height out, which for a thin stroke means the rectangle
+and the ink barely touch. The measured overlap where the rectangle claims to be is **0.011**.
+
+And the shapes are otherwise *right*. Once each page is moved by its own single displacement,
+the overlap achievable per page is **0.901 to 0.913** across all forty — a figure that cannot
+arise by accident. The outlines are the correct shape and the correct size; they are simply
+in the wrong place.
+
+### What happens if each page is moved by one number?
+
+The displacement is taken per page as the **median** of its marks — median rather than mean so
+that a handful of genuinely misplaced marks cannot drag the correction — and every number is
+recomputed. Nothing is applied to any shipped data; this is a second pass of the same
+measurement.
+
+| | as shipped | corrected |
+|---|---|---|
+| agreement where the rectangle claims to be | −0.127 | **0.466** |
+| separation from a deliberately wrong place | −0.242 | **0.287** |
+| marks beating their own wrong place | 12.7% | **76.8%** |
+| mean ink inside the rectangle | 19.3% | 26.9% |
+| rectangles essentially blank | 1.15% (0.86–1.53%) | **0.10%** (0.04–0.26%) |
+| further than 0.75 units from the best fit | 97.80% (97.29–98.21%) | **18.27%** (17.10–19.50%) |
+| displacement left over, middle / 95th | 1.24 / 2.41 units | **0.38 / 1.37 units** |
+| overlap with the ink, middle | 0.011 | **0.507** |
+
+Ranges are 95% score intervals. Every rate in this document carries one, because a rate drawn
+from a sample and printed without one is a number with no scale on it.
+
+There is deliberately **no row here for "the ink matches the name"**. An earlier version had
+one, at 51.15% before look-alikes and 69.15% after, and the eighteen points between those two
+figures were doing the work of an argument. That number added three unrelated things together —
+a rectangle in the wrong place, a pair this method cannot separate, and a genuine mislabelling —
+and the first of the three is what this whole table is about, so it appeared on both sides of
+its own comparison. The three are counted separately now: the naming half in
+[its own document](mark-labels.md), and what is left over under *Is there anything left over
+once the displacement is taken out?* below.
+
+One displacement per page moves the measure from "worse than random" to "clearly right", and
+it does so on every page. That is the finding.
+
+### Is this a fact about the marks, or about the whole page?
+
+About the whole page. The same displacement can be recovered **without looking at a single
+mark**: rasterising the entire second printing of a page — letters and all — and sliding it
+against the entire shipped page needs the same shift, around 0.75 across and 1.00 down, with
+the two pages' total ink agreeing to within 0.05 percentage points. It is the same print,
+displaced. The marks are not wrong; the alignment between the two printings is.
+
+### Is the error systematic or random, and would correcting it help?
+
+Separating the two is the difference between a fixable bug and an irreducible noise floor.
+
+The **systematic** part is the per-page displacement above: tight, one-directional, and
+recoverable to about a tenth of a unit. Correcting it is what the second column of the table
+buys.
+
+The **random** part is what is left after it: marks scatter about their own page's
+displacement by 0.48 units across and 0.35 down. That does not go away, and it is why the
+corrected column reads 18.27% rather than zero — the remainder is genuine per-mark variation,
+not a second bias waiting to be removed.
+
+Re-deriving the whole fit between the two printings from the ink rather than from the page
+ornaments gives scales of **1.33188 ± 0.00112** across and **1.33375 ± 0.00066** down, against
+a recorded 1.3334 and 1.3336. So the error is overwhelmingly a *shift*, with only a whisper of
+scale in it — and the arithmetic confirms it: allowing the scale to move as well leaves 0.46
+and 0.34 units of scatter, against 0.48 and 0.35 for a shift alone. The scale term buys
+two-hundredths of a unit and is not worth the complexity.
+
+### Does the pipeline's own quality number know about any of this?
+
+No, and this is the most transferable lesson here. Each page's fit already records a residual
+— a number meant to say how well the two printings were matched. Across the forty pages it
+ranges from 0.030 to 0.336, and its correlation with the actual displacement is **0.117**. A
+page with an excellent recorded residual is just as displaced as a page with a poor one. The
+residual measures how well a handful of ornament positions were fitted; it says nothing about
+where the ink ended up, and it was quietly trusted to.
+
+### How confident is any of this, and how much would settle more?
+
+The 4,000 marks are drawn in two stages — forty pages first, then marks on them — because
+half of what is reported is a *per-page* quantity and a page with four marks on it cannot say
+anything about its own alignment. The price is that marks on one page are not independent, so
+a plain interval on a rate is a little narrower than the truth; the per-page spread is printed
+beside every rate for exactly that reason.
+
+To resolve a rate near 2% to within half a percentage point takes **2,985 marks**; to within a
+tenth of a point, **61,185**. The 4,000 used here comfortably settle the first and cannot
+settle the second, and no claim below is made to a tenth of a point.
+
+An earlier, cruder look at this used a different rasteriser inside a browser and found 46 of
+2,494 rectangles essentially blank. Retro-fitting an interval onto that measurement gives
+**1.84% (1.39–2.45%)**; this probe's own rasteriser on the same 2,494 gives 53, or **2.13%
+(1.63–2.77%)**. The intervals overlap, so the two independent implementations agree — which is
+the point of stating the interval rather than the two bare percentages, which look like a 16%
+disagreement.
+
+The whole run is reproducible: two runs of the same command produce byte-identical output.
+
+### Is there anything left over once the displacement is taken out?
+
+There is one more thing this measurement can ask, and it has to be asked very carefully,
+because it is the question that used to be reported as a single "identity" percentage and was
+not one measurement at all. Stated precisely: **on marks where the rectangle is demonstrably in
+the right place, and where the corpus's own drawing demonstrably matches its own name, does the
+ink on the page the app ships look like the same mark?** If it does not, the two printings
+genuinely differ, which would be a more serious thing than a displacement.
+
+That question is only meaningful on marks that have earned it, so four conditions apply and
+each one exists to stop something else being counted as a disagreement:
+
+| condition | why | set aside |
+|---|---|---|
+| there is ink in the rectangle at all | nothing to look at otherwise | 4 |
+| the rectangle is within 0.75 units of its ink, after correction | a rectangle a unit low is scoring partly the letter underneath, which is exactly what makes a fatha "look like" something else | 730 |
+| the placement beat a deliberately wrong one | if it did not, the score is not about this mark | 997 |
+| the drawing already matches its own name | otherwise the doubt belongs to the [naming question](mark-labels.md), and asking here would report the same doubt twice | 462 |
+
+That leaves **1,807 of 4,000** marks eligible. The exclusions are published because a filtered
+rate whose filter is not published is a rate somebody chose. Three counts on that set, and
+they are **never added together**:
+
+| what the shipped ink looks like at that spot | marks | share | 95% CI |
+|---|---|---|---|
+| the same name | 1,525 | **84.39%** | 82.65–85.99% |
+| a name this print draws as the *same shape* | 174 | **9.63%** | 8.35–11.08% |
+| a genuinely different shape | 108 | **5.98%** | 4.97–7.17% |
+
+> **These three numbers moved slightly, and the reason is worth stating.** The naming question
+> was re-measured after a defect was found in how it compared two drawings, and the last row of
+> the table above — which marks have a name in doubt — is that measurement's output. So the
+> naming work does reach this section, in exactly one direction and through exactly one door:
+> it can change *who is eligible*, never what the ink shows. An earlier draft claimed the two
+> could not touch each other at all; that was too strong. The eligible set moved by 19 marks in
+> 4,000, every share moved by less than a tenth of a point, and no conclusion below changed.
+> **The independence that mattered still held**: a defect in the naming arithmetic could not
+> reach the displacement finding, which is the number this document exists for.
+
+The middle row is the method's own blind spot, measured in the naming document: **fatha and
+kasra are the same shape (0.968), and so are fathatan and kasratan (0.914)**. What separates
+them is which side of the letter they sit on, and a comparison that centres two shapes on each
+other has thrown that away before it starts. So this method is not *entitled* to tell those
+pairs apart, and counting the middle row as an error would be measuring the question rather
+than the data.
+
+**And the bottom row empties out, which is the result.** Each of the 108 was scored again at the
+placement the search itself preferred — a fraction of a unit away — and **only one still
+disagrees**. That one is a mark labelled *successive fathatan* whose ink resembles a plain
+*fathatan* by 0.522 against 0.505: a margin of seventeen thousandths, which is a coin toss. It
+is the same mark that survived before the naming measurement was corrected, at the same two
+scores.
+
+So 107 of the 108 are the last sixteenth of a unit of residual placement, and the survivor is
+indistinguishable from noise. **There is no evidence here that the two printings disagree about
+what any mark is.** This section was written expecting to find something and found nothing, and
+saying so plainly is the honest result rather than a wasted section — it means the entire
+measured defect in the mark layer is the displacement, and Option B below is the whole remedy.
+
+That also settles what the remaining work is. Separating fatha from kasra is a *positional*
+feature — where the mark sits relative to the letter carrying it — and not a better shape
+comparison. A better shape comparison cannot help, and the 0.968 is why.
+
+### Did the suspicion that kasra is biased downward hold?
+
+**No.** It was a reasonable guess — kasra is written *below* the letter while most marks are
+written above, so a systematic vertical error might well have shown up in kasra alone. It does
+not. After correction, kasra's mean vertical displacement is **−0.091** units; fatha's is
+−0.059, damma's −0.091, sukun's −0.087, shadda's −0.134 and superscript alef's −0.156. Kasra
+is neither the largest nor distinguishable from the others; every class shows the same small
+residue, which is a known artefact of correcting by a median rather than a mean. The
+hypothesis is refuted, and refuting it is what makes the single page-wide displacement the
+right correction rather than a per-class one.
+
+## ⑤ What do people outside this project do about this?
+
+Enough of the answer is surprising that it is worth stating up front: **there is no published
+precedent for validating per-mark boxes against the ink.** Two adjacent fields have most of
+the answer, and neither does quite this. The claims below were checked against primary
+sources; where something could not be established, it is named as such at the end of the
+section rather than smoothed over.
+
+**Object detection has a conventional threshold, and it was set for the opposite reason.** The
+familiar 0.5 overlap comes from the PASCAL VOC challenge, whose own paper says why: *"The
+threshold of 50% was set deliberately low to account for inaccuracies in bounding boxes in the
+ground truth data."*
+([paper](https://homepages.inf.ed.ac.uk/ckiw/postscript/ijcv_voc09.pdf), §4.2.) It is a slack
+budget for untrustworthy labels. We are *testing* the labels, so inheriting a number designed
+to conceal label error is exactly backwards.
+
+**Overlap is measurably broken at this size anyway.** The Normalized Gaussian Wasserstein
+Distance paper measures it directly: a six-by-six object shifted **one pixel diagonally** has
+its overlap fall from 0.53 to 0.06, where a thirty-six-by-thirty-six object shifted the same
+one pixel falls only from 0.90 to 0.65 ([arXiv 2110.13389](https://arxiv.org/abs/2110.13389)).
+An overlap threshold on objects this small measures the rasteriser's rounding, not the labels.
+Honest caveat: the field responded by changing the metric used to *assign* boxes during
+training, not the one used to *evaluate* them — no benchmark was found that lowered its
+evaluation threshold below 0.5.
+
+**Document layout analysis had the better idea fifteen years ago.** The PRImA performance
+evaluation work argues that errors should be quantified by **foreground area**, not by
+bounding area, and gives the reason plainly: different methods wrap regions more loosely or
+more tightly, still marking the region correctly, and using only the foreground ignores the
+difference ([paper](https://www.primaresearch.org/www/assets/papers/ICDAR2011_Clausner_PerformanceEvaluation.pdf)).
+A generous rectangle and a tight rectangle around the same mark are the same answer. That is
+precisely why this document scores the *outline* against the *ink* and reports the rectangle's
+own area nowhere.
+
+**Establishing your own ceiling before setting a threshold is standard practice.** DocLayNet
+double- and triple-annotated thousands of pages specifically to measure how well two humans
+agree, and found agreement between 60% and 91% depending on the class
+([arXiv 2206.01062](https://arxiv.org/abs/2206.01062)). That is the precedent for the
+representative-against-representative table in §④: a threshold set above your own ceiling is a
+threshold that fails on correct data.
+
+**"Fix the labels" is a recognised discipline, and the payoff is large.** AI-TOD-v2 exists
+because v1's boxes were wrong; the authors found out by rendering hits and misses over the
+existing labels and looking, then added 52,133 instances, and report that the annotation
+change alone exceeds most published method improvements
+([arXiv 2206.13996](https://arxiv.org/abs/2206.13996)). The label-error literature also names
+our exact second failure: the "swapped class" score in ObjectLab looks for a nearby box
+confidently predicting a *different* class
+([arXiv 2309.00832](https://arxiv.org/abs/2309.00832)).
+
+**Where geometry cannot be trusted, count instead.** The CRAFT text detector validates
+machine-generated character boxes not by geometry at all but by **cardinality** — does the
+number of boxes match the known length of the word
+([arXiv 1904.01941](https://arxiv.org/abs/1904.01941))? That check is orthogonal to everything
+here, far cheaper, and would catch a class of error no score can. It is listed as an open item.
+
+**The font world does this routinely, and compares outlines rather than pixels.** Google's
+font regression tools compare the *serialised shaping result* as an exact string with no
+numeric tolerance at all; where they do compare pictures, they count **differing pixels rather
+than a percentage**, with a written rationale that applies here verbatim — a percentage lets a
+real difference hide inside a large shape
+([diffenator3](https://github.com/googlefonts/diffenator3)). Noto's own shape-difference tool
+takes the boolean **exclusive-or of two sets of contours** and measures the leftover area
+([source](https://github.com/notofonts/nototools/blob/main/nototools/shape_diff.py)) — the
+purest form of the comparison this document makes.
+
+**And the rendering world concluded that pixel determinism across machines is unattainable.**
+FreeType's own change log records releases that "inevitably lead to different rendering
+results" and an environment variable that changes rasterisation at run time
+([changes](https://github.com/freetype/freetype/blob/master/docs/CHANGES)); Chromium keeps
+per-platform baselines and adjusts the display colour profile so its pixel tests reproduce;
+Skia solves it by substituting a controlled typeface and comparing against human-approved
+hashes ([testing](https://skia.org/docs/dev/testing/)). Two of the best-funded rendering test
+systems in existence gave up on cross-platform pixel equality. That is a strong argument
+against depending on somebody else's rasteriser, and it is why the one used here is our own
+integer scanline fill — see §⑥.
+
+**On reading the page with a text recogniser.** The register holds no decision on this, and it
+should: it is the first idea anyone has. The evidence says it cannot work, for a reason that
+is not the obvious one. Recognition and localisation have separated into disjoint tool sets —
+the engines that read harakat well emit no coordinates, and the engines that emit
+character coordinates emit vertical strips. Concretely: the best published result for reading
+diacritised Arabic emits **no coordinates of any kind**
+([arXiv 2506.02295](https://arxiv.org/abs/2506.02295)); Tesseract's Arabic character set
+contains only 8 of our 26 marks, so the rest are not even representable in its output, and its
+maintainers state that its recogniser "does not actually output bounding boxes, but rather a
+simple x coordinate per character"
+([issue](https://github.com/tesseract-ocr/tesseract/issues/3477)); the one engine documenting
+genuine per-character boxes derives them from the same vertical-strip mechanism, and its
+ecosystem's Arabic training data omits vocalisation as a matter of policy
+([arXiv 2402.10943](https://arxiv.org/abs/2402.10943)); forced alignment is defined by its own
+maintainers as producing *"approximate character locations"*
+([documentation](https://kraken.re/main/user_guide/api.html)) and cuts a line horizontally,
+which cannot separate a mark from the letter it sits on top of. Worst of all, the benchmark
+most Arabic recognition results are quoted against **strips the diacritics before scoring**
+([arXiv 2502.14949](https://arxiv.org/abs/2502.14949)), so most published accuracy figures say
+nothing whatever about the thing we care about. A recogniser would also be a model download, a
+non-deterministic step, and a second opinion that is *worse informed* than the one we already
+have — because we already possess the publisher's own drawing of every mark, which is better
+evidence than any recogniser's guess at it.
+
+**What was not established.** Whether one commercial cloud service preserves the marks and
+returns per-symbol boxes — it is the only system with symbol-level boxes as a documented
+output and it would settle in one call, but no call was made and no credible published report
+either way was found. How tight the one engine with genuine per-character boxes actually is —
+documented to exist, never measured by anyone, and not run here. Whether a particular Rust
+rasteriser's claim of bit-identical output across processor architectures holds — it is
+claimed upstream, no published cross-architecture comparison exists, and none was run.
+
+## ⑥ What have we already decided that this has to live inside?
+
+Three standing commitments constrain any answer, and each rules something out.
+
+**The data pipeline is deterministic and offline.** A gate re-derives the shipped data from
+committed bytes with no network and no model, and fails on any drift. Anything proposed here
+that needed a downloaded model, a native binary compiled at install time, or a third-party
+rasteriser whose output changes with its version would break that — not in principle, but on
+the first day CI ran on a different machine. This is why the measurement uses a rasteriser
+written for it: an integer scanline fill with no floating-point rounding in the coverage
+decision, no dependencies, and no system libraries. It is also why the run being
+byte-identical twice is reported as a result rather than assumed.
+
+**The fit between the two printings is recorded once and read, never re-derived.** The
+existing rule is that re-fitting at a call site creates a second transform that can disagree
+with the one the data was built with, and a mark that disagrees with its own word by a tenth
+of a unit is indistinguishable from a mark on the wrong letter. This document **obeys** that
+rule — it re-derives the fit only to *report* what it would have been, and applies nothing —
+but §⑦ is precisely a proposal to change what gets recorded, which is the correct place to
+change it.
+
+**Nothing ships until a human has looked.** The agreed order for this area is: build the
+vocabulary and measure it, then draw the marks for a person, and only then emit anything an
+app downloads. That order is the reason this document exists before anything was drawn, and it
+is why §⑦'s recommendation is a change to working data and not to a shipped asset.
+
+**And one constraint that is not ours.** The publisher's font — the obvious source of a
+"correct" reference shape — is distributed free of charge but under terms that forbid
+modification, alteration, reverse engineering and decompilation. Subsetting a font is
+arguably alteration. That makes any method requiring the font to be embedded, subset or
+queried a licensing question before it is a technical one, and there is already an open item
+in the validation register to read the publisher's terms at the source. Nothing proposed here
+touches the font.
+
+## ⑦ What are the options?
+
+Every option below was measured on the same 4,000 marks, so the numbers are comparable.
+
+### Option A — change nothing, and do not draw marks
+
+The rectangles stay as they are and no feature is built on them. Honest, and it costs
+nothing today.
+
+Measured consequence: the mark layer is permanently unusable for pointing at anything. 97.80%
+of rectangles are further than 0.75 units from where their own ink is; the median rectangle
+misses its mark's ink almost entirely (overlap 0.011); and a rectangle picked at random from
+elsewhere on the page describes the ink *better* than the right one does.
+
+### Option B — record one displacement per page, measured from the ink · **recommended**
+
+Each page's fit gains a small correction, derived as the median displacement of that page's
+marks and recorded alongside the four numbers already stored per page. It is written down
+once, exactly like the fit itself, and read thereafter — so the existing rule against
+re-fitting at call sites is respected rather than broken.
+
+Measured consequence — the second column of §④'s table. Blank rectangles fall from 1.15% to
+**0.10%**; badly-placed rectangles from 97.80% to **18.27%**; the median overlap with the ink
+rises from 0.011 to 0.507; and the measure clears its own control by 0.287 where it previously
+failed it by 0.242. Two numbers per page, both derived offline from committed bytes, and the
+derivation is reproducible byte-for-byte.
+
+Cost: the correction is derived from the ink, so it must be re-derived if either printing
+changes — which is what a gate is for, and §⑩ ② is that gate.
+
+### Option C — re-derive the whole fit from the ink, scale and all
+
+Rather than adding a shift, replace the per-page fit entirely with one least-squares fitted to
+the ink.
+
+Measured consequence: it works, and it is not worth it. The re-derived scales are 1.33188 ±
+0.00112 and 1.33375 ± 0.00066 against a recorded 1.3334 and 1.3336, and allowing scale to move
+leaves 0.46 and 0.34 units of scatter against 0.48 and 0.35 for a shift alone. Two-hundredths
+of a unit, in exchange for discarding a fit that a gate already re-derives and checks, and for
+a much larger surface of things that could silently change. Rejected on the evidence, not on
+principle.
+
+### Option D — keep the marks but never point at one
+
+Use the mark layer only in aggregate — how many marks a word has, which names occur — and
+never draw a rectangle.
+
+Measured consequence: everything in §④ becomes irrelevant, and so does the feature. The whole
+reason to hold 326,515 rectangles is to point at one. This is Option A with extra steps.
+
+### What thresholds would go with Option B, and are they enforced?
+
+Proposed, and deliberately **not enforced anywhere** — not in the build, not in continuous
+integration, not in any gate:
+
+- The measure must clear its own control by at least **0.25**. Below that, nothing else in the
+ report means anything, and the report says so instead of printing numbers.
+- No more than **2%** of rectangles further than **0.75 units** from where their own ink is.
+ That figure is an error budget, not a preference: 0.46 units of scatter left after the fit,
+ 0.10 for the tenth-of-a-unit rounding the rectangles are stored at, and 0.06 for one sample
+ of the grid — about 0.62, rounded up.
+- No more than **0.5%** of rectangles essentially blank, against a measured 0.10% after
+ correction and two independent measurements agreeing on roughly 2% before it.
+
+The measurement exits with a failure code when a threshold is breached, so that it *could*
+become an enforced check later. It is not one today, and making it one has a named
+prerequisite: somebody has to look, under conditions where looking can actually settle it.
+The prerequisite used to be written as *agreeing with a sample of its verdicts*, and that was
+the wrong instrument — a person shown a verdict agrees with it, and what comes back is this
+document's own opinion with a reader's name on it. It is now a forced choice between two
+rectangles with nothing on the screen saying which one is ours, and it takes about twenty
+minutes. §⑩ ① is the question and the runbook is `placement-correction-by-eye` in
+[`docs/validation/ledger.json`](../validation/ledger.json).
+
+A forced choice can only ever say whether the proposed move beats the one alternative it was
+shown against, so it cannot say whether the move is far *enough* — and the numbers above are a
+claim about magnitude, not about direction. §⑩ ⑦ is that second question, asked by having a
+reader place the rectangles themselves; its runbook is `placement-residual-by-hand`. Either
+answer releases these thresholds; only that one can change them.
+
+## ⑧ What else could be considered, and why is it not here?
+
+**A borrowed overlap threshold.** The obvious method: rasterise, compute overlap, fail below
+0.5. Rejected for the two reasons in §⑤ — the conventional threshold was set to *hide* label
+error rather than find it, and overlap collapses under sub-pixel displacement at this object
+size. It is still *reported* here, because it is the number a reader understands; it is just
+not allowed to decide anything.
+
+**Distance-based shape matching.** Chamfer matching and its identical twin from the
+Hausdorff-distance literature both degrade *smoothly* with misalignment where overlap falls
+off a cliff, which is genuinely attractive at this size, and both are exactly computable on
+integer distance transforms so determinism is not an obstacle. Rejected on cost-benefit: the
+correlation used here already degrades smoothly, is chance-corrected at local ink density
+(which chamfer is not), and needs no distance transform per window. Chamfer's other property —
+tolerance of small rotations and deformations — is worth nothing when both shapes come from
+printings of the same mus'haf. It would be the right answer if the shapes differed; they do
+not.
+
+**Moment invariants.** Seven or a few dozen scalars per shape, invariant to translation,
+scale, rotation and reflection. Rejected twice over. First, rotation invariance is actively
+harmful for typographic marks — a mark and a rotated mark are different marks — so the method's
+headline property is a defect here. Second, and decisively, the standard form requires a
+logarithmic rescaling, and the floating-point standard only *recommends* correct rounding for
+logarithms rather than requiring it, so the same input can give different answers on different
+machines. That is disqualifying for a check meant to be re-derivable offline.
+
+**Point-correspondence shape matching.** The classic method for comparing outlines by sampling
+points and solving an assignment problem. Rejected: its power is in modelling *deformation*,
+there is no deformation here, and it would cost a cubic-time assignment per comparison,
+326,515 times, to solve a problem we do not have. Its log-polar binning would also destroy
+exactly the fine positional information that separates our confusable names.
+
+**An off-the-shelf rasteriser.** Several exist and one makes an explicit promise of
+pixel-identical output on every platform. Rejected, and this was the closest call in the
+document. Against it: two of the three widely-used ones fetch a binary from the network at
+install time and fall back to compiling, which breaks an offline install outright; the one
+based on a system imaging library inherits an entire text-rendering stack for 18 MB; the pure
+JavaScript one implements *neither* standard fill rule correctly, which was verified by
+measurement — a shape whose two rings run the same way should fill to 6,400 or 4,800 samples
+under one rule or the other, and it produced 5,600. And the strongest candidate's determinism
+claim, though credible and explicitly made upstream, has no published cross-architecture test
+behind it. Weighed against that, the rasteriser needed here fills two-dimensional polygons with
+integer arithmetic and is a few hundred lines; writing it costs less than defending a
+dependency, and it is the only route where the determinism claim is ours to verify.
+
+**Asking the font instead of the picture.** The cheapest correct oracle in principle: shape
+the text with a layout engine, read each mark's extents in font units, compare. No rasteriser,
+exact integers, machine-independent, and orders of magnitude faster. It was measured and it
+fails on this mus'haf for three specific reasons. Five marks — including fatha and damma —
+have **no separate glyph at all** when they follow a shadda; the two are drawn as one
+inseparable shape with one shared box, so a per-mark claim over them has no referent to
+compare against. Six more take a contextual variant whose *outline* differs from the standalone
+one, not merely its position, so a naive reference render is out by roughly a tenth of the
+glyph's height. And if these pages were produced from the publisher's per-page fonts, the
+smallest addressable unit in them is **a whole word**, not a mark, and no reference render can
+exist at all. Rejected as a primary method; kept as a cross-check worth running once, and named
+in §⑩.
+
+**A recogniser reading the printed page.** Covered in §⑤ and rejected on evidence: the tools
+that read the marks return no coordinates, the tools that return coordinates cannot represent
+most of the marks, and we already hold better evidence than any of them could produce — the
+publisher's own drawing.
+
+## ⑨ What would change the answer?
+
+- **A human disagreeing with the verdicts.** The whole argument rests on a score that has been
+ validated against a control but never against a person. A sample of worst-first verdicts
+ reviewed by someone who can read the page would either confirm the method or end it. This is
+ the single highest-value thing anyone could do next, and it is written up as a proposed
+ validation-register entry rather than performed here.
+- **Either printing changing.** The correction is measured from the ink of two specific
+ printings. If either is revised, the correction is stale and silently wrong — which is
+ exactly the failure this document is about, one layer up.
+- **The two look-alike pairs turning out to matter.** If a feature needs to distinguish fatha
+ from kasra by shape, the answer is that it cannot, and the work is a positional feature
+ rather than a better comparison. Whether that work is needed depends on what gets built.
+- **The one surviving disagreement between the printings turning into many.** On this sample
+ exactly one mark still looks like a different shape once its placement is corrected, and it
+ wins by seventeen thousandths. On a larger sample that could be a handful or it could be
+ nothing; it is currently indistinguishable from nothing, and a run over the whole corpus
+ would say which.
+- **A cardinality check disagreeing.** Counting the marks a page should have and comparing
+ against the marks it does have is cheap, orthogonal, and would catch a whole class of error
+ no geometric score can. If it disagreed, something is wrong that none of this would find.
+- **The remaining 18% concentrating somewhere.** After correction, roughly one mark in six is
+ still further than 0.75 units from its ink. If those turn out to share a page, a name, or a
+ position on the line, that is a second effect and this document has found only the first.
+
+## ⑩ Open questions, and what would answer each
+
+What this document does *not* settle. Each is stated so that the answer would be recognisable
+when it arrives, and each is indexed in [`docs/issues.json`](../issues.json), which is the only
+place that counts them.
+
+### ① Would a person pick our rectangle over the one we ship · **open**
+
+Nothing here has been checked by a human, and until something is, the thresholds in §⑦ stay
+unenforced.
+
+The question was first written as *does a person agree with the machine's verdicts*, and the
+page of worst-first verdicts was built to answer it. That page cannot: it ranks the marks by
+this document's own score, draws the outline it expects beside the rectangle it claims, and
+then asks whether the reader agrees. A reader agrees. What comes back is this document's
+opinion with somebody else's name on it, which is worth nothing and is very hard to notice is
+worth nothing.
+
+So the question is asked a different way. One mark, drawn twice side by side, one rectangle on
+each, and the only thing asked is which rectangle sits on the mark. Usually one of them is the
+corrected placement and the other is what the app draws today; nothing on the screen says
+which, and no answer key exists anywhere — the session is a function of a seed, and the key is
+rebuilt from that seed only when the answers are scored. So there is nothing to peek at, and
+nobody has to be trusted not to.
+
+Three things are asked alongside it, mixed in and indistinguishable while working, because the
+headline number is unreadable without them. Some trials put the corrected rectangle against
+one displaced *the same distance in a different direction*: that measures whether an eye can
+resolve a shift this small at all, which is the ceiling the headline has to be read against —
+and it also breaks the pattern, since the error points the same way on every page and a person
+would otherwise be answering from a learned rule within twenty trials. Some put it against a
+rectangle a whole letter away, which anybody looking gets right and a distracted session does
+not. And some show the same rectangle twice, where "I can't tell" is the only honest answer,
+which is what catches a person who always picks something.
+
+The outcome that would be worth the most is the one that refuses: if the same-distance decoys
+are seen clearly and our correction is *still* not preferred, then the correction is wrong
+rather than the difference being invisible — and no amount of ink arithmetic could have told
+us that.
+
+The first reader to sit down with it hit something none of the four kinds of trial could say:
+on some marks **neither** rectangle closes around the mark, because the mark pokes out of both
+copies. That is not this question. Where a rectangle sits and how big it is are two faults with
+two repairs — one is fixed by moving the box, the other by measuring it again — and the whole
+argument of this document is that they were measured together for months and produced a number
+that meant nothing. So the page grew a tick rather than a fourth answer: the reader says
+*neither closes around it* and then still says which of the two is *closer*, which is a question
+that survives both being wrong. The tick is counted on its own line, the marks that got one are
+named so somebody can go and look at those boxes, and the headline's denominator does not move.
+A run of them is a finding about extent, and it belongs in §④ with the residuals rather than
+here.
+
+The runbook is `placement-correction-by-eye` in
+[`docs/validation/ledger.json`](../validation/ledger.json); it takes about twenty minutes and
+needs no mushaf, no phone and no network.
+
+### ② Is there anything stopping the correction going stale · **open**
+
+If Option B is adopted, the correction is data derived from two printings, and nothing
+re-derives it or checks it. That is the same shape of problem as the fit residual in §④ — a
+recorded number nobody re-validates — and it deserves the same answer a gate gives everything
+else here: re-derive offline from committed bytes and fail on drift.
+
+### ③ Do the pages count the marks they should · **open**
+
+An entirely separate and much cheaper check, borrowed from §⑤: does each page carry the number
+of marks of each name that the text says it should, in the order it says? It would catch
+missing and duplicated marks, which no geometric score can, and it is a few hours of work.
+
+### ④ Which of the two printings' fonts produced the pages · **open**
+
+If the shipped pages came from the publisher's per-page fonts, the smallest thing addressable
+in that source is a whole word, and one of the cross-checks in §⑧ is impossible in principle
+rather than merely awkward. The two candidate sources differ in a single readable number, so
+this is settled by looking, not by arguing.
+
+### ⑤ What separates the look-alike pairs · **open**
+
+Fatha from kasra, fathatan from kasratan: shape does not separate them and never will, and the
+[naming document](mark-labels.md) measures exactly how far that limit reaches. Whether the
+position of the mark relative to the letter that carries it separates them — and whether
+anything needs it to — is unexamined, and it is answerable only after placement is corrected,
+because it needs to know where the letter is.
+
+### ⑥ Whether the names on the marks are right · **answered**
+
+Not this document's question, and deliberately so — it is answered, and answered next door. It is
+measured over the whole corpus in
+[Does each mark's drawing match the name it was given?](mark-labels.md), which finds that **no
+mark in the corpus is drawn with the strokes of a different name** — the category is empty. Five
+drawings out of 326,515 still match another name overall, and all five are shown there to be the
+right strokes set an unusual distance apart. It is named here only so that nobody reads this
+document's silence on it as a claim.
+
+### ⑦ How far is our correction still out · **open**
+
+① can only settle a preference. It offers two placements and asks which is better, so a
+correction that points the right way and falls a third short wins every single trial and
+nothing in that session can say so. The measurement proposes a specific move; whether that
+move is *far enough* is a different question, and it needs a different instrument.
+
+So the same marks get asked the other way round. One panel, one rectangle, starting plainly
+displaced in a random direction, and the reader drags it onto the mark. Nothing on the screen
+says where we think it goes — the proposed move is stripped out before the trials reach the
+page — so the landing is a placement rather than an agreement. Subtracting our move from it
+leaves the **residual**: a distance, in page units, that would put our rectangles where a
+reader puts them. That is a number Option B can be edited by, where ① can only say whether to
+adopt it at all.
+
+A hand-measured number is worth nothing without the hand's own noise measured beside it. A
+residual of a fifth of a unit is a finding if the reader is repeatable to a fiftieth and it is
+nothing at all if they wander by half a unit between two goes at the same mark, so some marks
+come round a second time from an independent starting point and the spread between the two
+landings is the floor everything else is read against. A residual inside that floor is reported
+as *not distinguishable from the hand* — which is a result, and is not the same as our
+correction being right.
+
+Two properties of the design are load-bearing rather than incidental. The starting positions
+are spread evenly around the rectangle the app draws today, so the pull every hand exerts back
+toward wherever it started cancels in the average instead of being recorded as a fact about the
+boxes; the pull is measured and printed anyway, because "should cancel" is a claim. And the
+drag cannot be offered inside ①'s trials: dragging a box to fit and then comparing the landing
+to the two starting positions *is* the answer key, and offering the drag after each answer
+teaches the correction's direction — it points the same way on almost every page — within
+twenty trials. For the same reason the two sessions should not be worked back to back by the
+same person.
+
+If ① and ⑦ disagree, that is the most valuable outcome either can produce and neither can
+produce alone: two instruments looking at the same rectangles from opposite directions,
+one of them wrong, and a reason to re-measure before three hundred thousand rectangles move.
+
+The runbook is `placement-residual-by-hand` in
+[`docs/validation/ledger.json`](../validation/ledger.json); about twenty-five minutes, and it
+needs no mushaf, no phone and no network either.
+
+## How can someone look at this for themselves?
+
+The measurement writes a page of evidence: the worst verdicts first, each one drawn at a size
+a person can judge — the real ink from the page the app ships, the rectangle we claim in red,
+the outline the other printing drew in green, and where it actually fits in dashed blue —
+filterable by name, by page and by verdict, and addressable so a single mark can be linked to.
+It opens in any browser and needs nothing running.
+
+**That list answers one question only: is the rectangle on the mark?** The handful of marks
+where the two printings appear to disagree about *what* the mark is are shown further down the
+same page, under their own heading, and are never mixed into the ranked list above — one list
+sorted by a score that means two different things for different rows is how the two questions
+got confused in the first place. The naming question has a page of its own again, built by its
+own measurement.
+
+That page is **not** checked in, and deliberately: it contains crops of the mus'haf's own
+artwork, and the standing rule is that no scripture is committed to this repository. It is
+written into the working output directory, which is not tracked, and rebuilt by the command
+named in the next section.
+
+It is a new surface rather than an addition to the existing inspector, and the reason is
+concrete rather than aesthetic. The existing inspector draws abstract rectangles against a
+synthetic outline and **never renders the shipped page's ink at all** — the page artwork is
+not in its payload in any form, so there is nothing on it against which a displacement could
+be seen. It is also addressed by verse rather than ordered by score, which is the wrong axis
+for a worst-first review, and its payload is already several megabytes before adding page
+crops. The new surface borrows the inspector's visual language deliberately, so that the two
+read as one family.
+
+### And how can someone check it rather than read it?
+
+Reading that page tells you what this measurement thinks. It cannot tell you whether this
+measurement is right, for the reason §⑩ ① gives: every row on it shows the verdict beside the
+evidence, so looking at it is agreeing with it.
+
+There is a second page for checking, and it shows no verdicts at all. It puts one mark on the
+screen twice, draws a rectangle on each, and asks which rectangle sits on the mark — a hundred
+times, in about twenty minutes, on marks drawn from every page that has a measured
+displacement. Usually one of the two is the corrected placement and the other is what the app
+draws today. Nothing on the screen says which, and nothing on disk knows: the session comes
+from a seed, and the answers are rebuilt from that seed afterwards, by a second command, when
+the answering is over.
+
+It carries its own controls, so a session can fail in a way that is legible rather than just
+disappointing — some pairs differ by the same distance in a *different* direction, which
+measures whether the difference is visible at all; some differ by a whole letter, which
+anybody looking gets right; and some are the same rectangle twice, where "I can't tell" is the
+only honest answer. The scorer reports all four numbers, and refuses to score at all if the
+displacements were re-measured after the page was built.
+
+```
+node packages/etl/scripts/probe-mark-ink.mjs --sample 4000 --seed 7 --pages-n 40
+pnpm adjudicate:marks --seed 11 --count 100
+# work packages/etl/out/mark-adjudication.html in a browser, save the ruling it offers
+pnpm adjudicate:score ~/Downloads/mark-ruling-11.json
+```
+
+Like the evidence page, it is written to the untracked output directory and never committed,
+for the same reason: it draws the mus'haf's own ink.
+
+## Where does this live?
+
+The reasons above are the document; these are the pointers, kept here so the prose stays
+readable without them.
+
+- `packages/etl/scripts/probe-mark-ink.mjs` — the measurement. Not a gate and not wired into
+ `make ci` or the Makefile; run it directly or via `pnpm probe:mark-ink`.
+- `packages/etl/scripts/lib/ink.mjs` — the rasteriser: path flattening, transform composition,
+ integer scanline fill with both fill rules, summed-area tables.
+- `packages/etl/scripts/lib/mark-ink.mjs` — the two scores, the placement search, the score
+ interval and sample-size arithmetic, and the representative-shape selection.
+- `packages/etl/scripts/lib/adjudication.mjs` — the by-eye session: which marks, shown how,
+ and which rectangle was ours. A pure function of the seed and the measured displacements, so
+ no answer key is ever written down.
+- `packages/etl/scripts/build-mark-adjudication.mjs` — renders that session to one page,
+ carrying no verdicts, no answers and a fingerprint of the displacements it was built from.
+- `packages/etl/scripts/score-mark-adjudication.mjs` — rebuilds the key from the seed and
+ reports the four numbers. This is the first moment anybody knows what the answers were.
+- `packages/etl/scripts/lib/marks.mjs` — one reader for a page's marks, shared by the
+ measurement and the session so the two cannot disagree about what a mark is.
+- `packages/etl/scripts/lib/adjudication.mjs`, `planNudge` — the placing session: which
+ marks, how far out each rectangle starts, and which ones come round twice. Same shape as
+ the session above, and for the same reason: rebuilt from the seed, so the correction it is
+ measured against is never written down anywhere the reader could reach.
+- `packages/etl/scripts/build-mark-nudge.mjs` — renders that session to one page. It carries
+ the ink, the rectangle and where the rectangle starts; the proposed correction reaches no
+ markup, no attribute and no comment on it.
+- `packages/etl/scripts/score-mark-nudge.mjs` — subtracts the proposed correction from where
+ each rectangle was put and reports what is left, beside the precision of the hand that put
+ them, so a residual smaller than the wobble is called what it is.
+- [`docs/validation/ledger.json`](../validation/ledger.json), `placement-correction-by-eye` —
+ the runbook of record for §⑩ ①, and where its verdict gets banked.
+- [`docs/validation/ledger.json`](../validation/ledger.json), `placement-residual-by-hand` —
+ the same, for §⑩ ⑦.
+- `packages/etl/scripts/lib/mark-shape.mjs` — the canonical examples and the shape comparison,
+ shared with the naming measurement so that both use one library of examples rather than two
+ that could drift apart. This document uses it only to decide which marks are eligible.
+- [`mark-labels.md`](mark-labels.md) — the naming question, and why it is a different document.
+- `packages/etl/scripts/lib/diacritics.mjs` — `readMarkOutlines` returns the publisher's own
+ drawing of each mark beside the rectangles `readDiacritics` returns, sharing the same walk so
+ the two cannot drift.
+- `packages/etl/data/pages/word-boxes.pin.json` — where a per-page correction would be
+ recorded under Option B.
+- [`sub-word-marks.md`](sub-word-marks.md) §⑦ — the question this answers.
+- [`encoding-inspector.md`](encoding-inspector.md) — the existing surface, and why this is
+ beside it rather than inside it.
+- [`docs/map.json`](../map.json), feature `word-geometry` — the code pointers of record.
+
+Reproduce every number in this document with:
+
+```
+node packages/etl/scripts/probe-mark-ink.mjs --sample 4000 --seed 7 --pages-n 40
+```
+
+It takes about fifty seconds, reaches no network, downloads nothing, and exits with a failure
+code today — by design, because the thresholds it checks are breached and §⑦ is the proposal
+to stop breaching them.
diff --git a/docs/design/sub-word-marks.md b/docs/design/sub-word-marks.md
index 87234e4..90fcbf9 100644
--- a/docs/design/sub-word-marks.md
+++ b/docs/design/sub-word-marks.md
@@ -414,6 +414,21 @@ available for the rules about marks and not for the rules about letters, and any
this has to say which it is doing. That is a design constraint mark-C inherits, and it was
not visible before the walk.
+**What the wash discards, which the split does not say.** The table above asks what a rule
+*could* be drawn on. It does not ask what the screen draws today, and that turns out to be
+the larger number. `leadingRule` paints one family per ayah, and an ayah carries **3.90
+distinct families** on average, so **50,023 of the 60,057 annotations — 83.29% — render as
+nothing**. `madd` is the sharpest case: annotated on 92.48% of ayahs, it wins 2.74% of them,
+because its salience is lowest *precisely* because it is everywhere, which is the right call
+for one colour and the wrong one the moment there is room for more. So the pressure on the
+skin is not that a wash is coarse; it is that a wash is **singular**, and finer selection is
+what buys a second colour. [`mark-granularity.html`](mark-granularity.html) draws all three
+options over page 2 — `node scripts/build-mark-options.mjs` rebuilds it from committed bytes
+alone. The same page, published so it can be sent to somebody who does not have this repo:
+. It is the row
+`mark-granularity` in [`docs/decisions.json`](../decisions.json), and it is **open** — the
+three options are A, B and C below, and nothing has chosen between them.
+
**What is still not answered, and cannot be by arithmetic:** whether the box the dictionary
names sits where a reader *looks* for that mark, and whether lighting it reads as a truer
rendering of the rule than washing the whole word. The inspector now draws the boxes
diff --git a/docs/design/tajweed-colours.html b/docs/design/tajweed-colours.html
new file mode 100644
index 0000000..51ffc4d
--- /dev/null
+++ b/docs/design/tajweed-colours.html
@@ -0,0 +1,795 @@
+
+
+
+
+Whose colours are they? — can a reader recolour Hifth's tajweed marks
+
+
+
+
+
+
+
+ Hifth · a decision, drawn on paper
+ Whose colours are they?
+
+ Hifth tints a verse to flag a recitation rule inside it, and it uses seven colours it chose
+ itself. A reader who learned from a colour-coded printed mus'haf learned different ones. This
+ page asks whether a reader should be able to change ours — and, if so, how far down that goes:
+ the seven groups the app shows, or all
+ 18 rules the data underneath actually distinguishes.
+
+
+
7 colours on screen today, fixed
+
18 rules the data tells apart
+
83.29% of those rules are invisible at the size we colour
+
+
+
Four words, before we start
+
+ A tajweed rule tells a reciter to do something at a particular spot — hold a
+ vowel, hum through a letter, skip one. A madd is a held vowel; a
+ ghunnah is a hum through the nose; a qalqalah is a slight
+ echo on a stopped letter. Hifth sorts every rule into seven groups and gives
+ each group a colour, an outline pattern and a small Arabic letter, so the colour is never
+ carrying the meaning on its own.
+
+
+
+
+
+
+
+ 1 What is being decided?
+
+ Whether a reader can change the tajweed colours, and how far down the change reaches.
+
+
+ Four answers, drawn side by side further down. A : leave them fixed.
+ B : a reader recolours the seven groups. C : a reader recolours
+ all 18 rules. D : no picker at all — a short list of whole
+ ready-made schemes to choose between.
+
+
+
+
+ 2 Why is this being asked now?
+
+ Because the app only just started knowing which rule it is looking at. Until this week the
+ colouring data was stored as the seven groups and the finer names were thrown away when it was
+ built — an ikhfa and an iqlab were the same thing by the time anything could
+ ask. They are now kept, all 18 of them, which cost
+ 17.5% more to download and bought exactly one thing: the question on this page
+ became answerable in more than one way.
+
+
+ And because a reader arriving from a printed colour-coded mus'haf arrives with colours already
+ in their head. Ours are not wrong, but they are ours.
+
+
+
+
+ 3 What happens if nobody decides?
+
+ Nothing breaks. Option A is what the app does today: seven colours, chosen once, the same for
+ everyone. Nothing else is waiting behind this question and it can sit open indefinitely.
+
+
+ The cost is that a reader who finds our green unreadable, or who knows red as the elongation
+ colour and meets orange, has nowhere to go but switching the colouring off entirely — which is
+ the one control that does exist today, and is a blunt answer to a small complaint.
+
+
+
+
+ 4 What colours does the app use today, and where did they come from?
+
+ Seven, drawn from a palette designed to stay distinguishable to readers with the common kinds of
+ colour blindness. Each group also gets its own outline pattern and its own small Arabic letter,
+ so nothing on screen depends on telling two hues apart. Here they are on a real page — three
+ lines of the second page of the mus'haf, at about the size a phone shows them.
+
+
+
+
+
+
+ What the app draws today. One tint per verse, in the rarest kind of rule that verse carries.
+
+
+
+ madd
+ مـ
+
+ 92.5% of verses
+
+
+ hamzat wasl
+ ٱ
+
+ 76.9% of verses
+
+
+ ghunnah / ikhfa
+ غ
+
+ 73.7% of verses
+
+
+ idgham
+ د
+
+ 65.1% of verses
+
+
+ qalqalah
+ ق
+
+ 42.8% of verses
+
+
+ silent
+ ص
+
+ 37.4% of verses
+
+
+ madd lazim
+ مّ
+
+ 2.1% of verses
+
+
+ The right-hand figure is how many verses in the whole mus'haf carry that kind of rule at all —
+ not how many show it. Most of them show nothing, which is the subject of a
+ separate question .
+
+
+ How each colour stands against the paper. Anything under 3 is a colour that has to lean on its outline pattern to be found, which is exactly why the outline patterns exist.
+ group contrast against the page
+
+idgham
+ 2.94
+
+hamzat wasl
+ 2.94
+
+ghunnah / ikhfa
+ 3.28
+
+madd
+ 3.71
+
+qalqalah
+ 4.98
+
+silent
+ 5.67
+
+madd lazim
+ 8.39
+
+
+
+
+
+
+ 5 If a reader picks two colours the same, does the page break?
+
+ No — and this is the reason a colour picker is safe to offer at all.
+
+
+ Below is the same three lines with two different kinds of rule set to the identical colour, which
+ is the worst thing a reader could do with a picker. The verses are still told apart, because the
+ outline pattern is not part of what a reader would be changing: one group is drawn with a long
+ dash, the other with a fine dot.
+
+
+
+
+
+
+ Two groups, one colour, still separable. The outline pattern and the small Arabic letter stay fixed under every option on this page.
+
+
+
+ So the constraint is narrow. Whatever is offered, the outline patterns and the
+ letters stay ours. A reader is choosing hues, not choosing whether the page remains readable
+ without them.
+
+
+
+
+
+ 6 What do printed mus'hafs and other apps do?
+
+ We looked. The printed colour-coded mus'hafs — the Damascus edition most people
+ mean by the term, and the several editions that followed it — settle on a small number of
+ colours and hold them fixed: red for the elongations, green for the nasal sounds, blue for the
+ echoing letters, grey for letters written and not pronounced. One publisher describes covering
+ 28 rules with three colour families; others run to about seven. In every case the reader gets a
+ legend at the foot of the page, not a choice.
+
+
+ Among apps, the pattern we found is a switch , not a palette: the colouring is turned on
+ or off in settings, and the colours themselves are the publisher's. We did not find a mus'haf
+ app that lets a reader change which colour means which rule. That is worth stating as what it
+ is — an absence in what we searched, not proof that none exists.
+
+
+ Printed, fixed, and explained at the foot of every page.
+
+ The colour-coded print tradition is old enough to be a convention, and the convention is that
+ the reader is taught the colours rather than asked for them. It is the strongest argument for
+ option D over B: a scheme is a thing you can learn, a hue you picked yourself is not.
+ Sources:
+ Mushaf al-Tajweed, Dar al-Maarifah ·
+ Colour-coded Qur'an, seven colours
+
+
+ In apps, the control is a toggle.
+
+ Tajweed colours are switched on in settings and that is the whole of it; where a reader can
+ interact with a colour, it is to ask what the rule means, not to change it.
+ Sources:
+ Muslim Pro — turning tajweed colours on ·
+ Greentech Apps — tajweed colour code ·
+ quran_android — colour-coded tajweed support
+
+
+ Where the idea of an editable palette actually comes from.
+
+ Not from mus'hafs. From code editors and reading apps, where a colour theme is expected to be
+ the reader's and shipping a few good ones is standard. That is a real precedent, but it is a
+ precedent for schemes — nobody recolours a syntax highlighter one token type at a
+ time either.
+
+
+
+
+
+ 7 What have we already decided that ties our hands?
+
+ The app colours a whole verse at a time — and that question is still open.
+
+ A verse carries 3.9 different kinds of rule on
+ average and gets one colour, so 83.29% of everything we
+ know is already invisible. This is the constraint that decides between B and C below, and it
+ is not settled: it has its own page .
+
+ A reader can already turn the colouring off completely.
+
+ That control exists and stays. Everything here is about what happens when it is on.
+
+ Colour is never the only carrier.
+
+ Every group has an outline pattern and an Arabic letter as well as a hue, so a reader who
+ cannot separate two colours has two other ways to. Section 5 is what that buys.
+
+
+
+
+
+ 8 How much would a reader actually see change?
+
+ For the seven groups: all of it. For the 18 rules: almost none of it, today.
+
+
+ A colour can only be seen where it is painted, and the app paints one tint per verse in whichever
+ group is rarest. So a colour given to a single rule shows up only in the verses where that rule's
+ group won — the last column below. Change the colour of the commonest elongation and
+ 1.6%
+ of the verses that contain it would look any different.
+
+
+ All 18 rules in the shipped data, commonest first. The swatches are option C's colours, built by fanning each group's hue — see section 11. “Where it could show” is the share of that rule's verses in which its group also won the verse's one tint.
+ rule group places verses where it could show
+
+
+ hamzat wasl
+ hamzat wasl
+ 13,252
+ 4,749
+
+ 5.9%
+
+
+ madd 246
+ madd
+ 4,543
+ 4,543
+
+ 2.8%
+
+
+ madd 2
+ madd
+ 9,028
+ 4,160
+
+ 1.6%
+
+
+ ghunnah
+ ghunnah / ikhfa
+ 4,946
+ 3,104
+
+ 11.6%
+
+
+ ikhfa
+ ghunnah / ikhfa
+ 5,301
+ 2,994
+
+ 10.5%
+
+
+ qalqalah
+ qalqalah
+ 3,834
+ 2,641
+
+ 55.1%
+
+
+ idghaam ghunnah
+ idgham
+ 3,933
+ 2,510
+
+ 29.4%
+
+
+ silent
+ silent
+ 4,174
+ 2,307
+
+ 98.3%
+
+
+ madd munfasil
+ madd
+ 3,172
+ 2,120
+
+ 0.8%
+
+
+ lam shamsiyyah
+ idgham
+ 2,733
+ 2,013
+
+ 29.4%
+
+
+ madd muttasil
+ madd
+ 1,997
+ 1,486
+
+ 2.8%
+
+
+ idghaam no ghunnah
+ idgham
+ 1,035
+ 905
+
+ 29.3%
+
+
+ idghaam shafawi
+ idgham
+ 832
+ 718
+
+ 22.6%
+
+
+ iqlab
+ ghunnah / ikhfa
+ 562
+ 506
+
+ 7.1%
+
+
+ ikhfa shafawi
+ ghunnah / ikhfa
+ 496
+ 453
+
+ 7.3%
+
+
+ madd 6
+ madd lazim
+ 148
+ 128
+
+ 100.0%
+
+
+ idghaam mutajanisayn
+ idgham
+ 58
+ 56
+
+ 39.3%
+
+
+ idghaam mutaqaribayn
+ idgham
+ 13
+ 13
+
+ 61.5%
+
+
+
+
+
+ And 620 verses have no answer at all. In
+ 10.0% of the 6,173 coloured verses, the winning
+ group is carried by more than one rule at once — two kinds of elongation in the same verse, say.
+ There is one tint to give and two colours that want it, and nothing in the data says which. At
+ verse size, 18 colours is not a finer picture; it is the same picture with a
+ coin toss in it.
+
+
+
+
+
+ 9 The options, drawn
+
+ All four on the same three lines, so the comparison is by eye rather than by adjective.
+
+
+
+
A · Leave the colours fixed what the app does today
+
+
+
+
+
+
+
+
+
What a reader gets One set of colours, the same on every device, chosen to survive colour blindness. A legend that means the same thing to two people talking about it.
+
What it costs A reader who finds a colour unreadable, or who learned different ones, can only switch the whole thing off.
+
What it costs us Nothing. No new screen, no stored preference, no way for a reader to make the page worse.
+
+
+
+
+
B · A reader recolours the seven groups seven colour pickers
+
+
+
+
+
+ The same three lines after a reader moved all seven towards the printed convention. Illustration — these are not proposed values.
+
+
+
What a reader gets Their own colours, at the only size the app actually paints. Someone who learned red elongations can have red elongations.
+
What it costs Seven pickers is a real screen to design, and a reader can produce a palette worse than the one they started from — recoverable, since section 5 shows the page still works, and a reset returns it.
+
What it costs us A settings surface, seven stored values, and the colours stop being something two people can assume they share.
+
+
+
+
+
C · A reader recolours all 18 rules 18 colour pickers
+
+
+
+
+
+ The same three lines with every rule given its own colour. Barely distinguishable from A, because there is still one tint per verse.
+
+
hamzat wasl madd 246 madd 2 ghunnah ikhfa qalqalah idghaam ghunnah silent madd munfasil lam shamsiyyah madd muttasil idghaam no ghunnah idghaam shafawi iqlab ikhfa shafawi madd 6 idghaam mutajanisayn idghaam mutaqaribayn
+
+
What a reader gets In principle, the full grain of the data: an ikhfa told apart from an iqlab by colour.
+
What it costs 18 colours do not fit. Fanning each group's hue out as far as it will honestly go still puts 18 pairs closer together than the closest pair in today's seven. And at verse size most of them never paint at all — section 8.
+
What it costs us 18 pickers, 18 names to write in two languages, and a legend nobody can hold in their head.
+
+
+
+
+
D · Offer a few ready-made schemes no picker; a short list
+
+
+
+
+
+
+ As it ships.
+
+
+
+
+
+
+ Like a printed colour-coded mus'haf. Red elongations, green nasal sounds, blue echoing letters, grey silent letters. Illustration.
+
+
+
+
+
+
+ Darker, for a bright room. The same seven meanings, pushed deeper so they hold up on a phone in sunlight. Illustration.
+
+
+
+
As it ships
+
Like a printed colour-coded mus'haf
+
Darker, for a bright room
+
+
+
What a reader gets A choice that cannot go wrong, in one tap. Each scheme is designed as a whole, checked for colour blindness as a whole, and can be named — which means two people can still talk about it.
+
What it costs Not the colours a particular reader wanted, only the nearest of three or four. Somebody has to design each scheme and stand behind it.
+
What it costs us One stored value instead of seven, one screen with three rows on it, and no way for a reader to break their own page.
+
+
+
+
+
+ 10 What else could be considered, and why is it not here?
+
+ Let a reader choose which kinds of rule to show, rather than what colour they are.
+
+ Show only the elongations, say. This is a different and possibly better answer to the same
+ frustration, it needs no palette at all, and — unlike C — it gets more useful the more rules
+ the data distinguishes. It is left off because it is not a colour question, and because it
+ belongs with the question of how finely we paint rather than this one. It stays available
+ whichever of A, B, C or D wins.
+
+ One slider for how strong the colouring is, and nothing else.
+
+ Most complaints about a wash are that it is too loud or too faint, not that it is the wrong
+ hue. This is the cheapest thing on the page and it may well be the thing actually being asked
+ for. It is left off because it does not answer "whose colours are they" — but if the answer to
+ this page is A, it is the next thing to build.
+
+ Follow the printed convention exactly and stop.
+
+ Change our seven to the Damascus colours and offer nothing. It is a defensible answer and it
+ is not on the list because that convention has no colour for two of our seven groups, and
+ because it would trade a palette that survives colour blindness for one that was designed for
+ ink on paper.
+
+
+
+
+
+ 11 What would change the answer?
+
+
+ Colouring smaller than a whole verse. This is the big one. If the app starts
+ tinting the exact letter a rule lands on, 83.29% of the rules stop being
+ invisible, the 620 undecidable verses in section 8 stop being undecidable,
+ and C goes from pointless to plausible in a single change. That question has
+ its own page and is still open; this one should probably not
+ be answered with C before it is answered.
+
+
+ A hafiz saying our green is not their green. One person reciting from a page
+ and naming a colour that reads wrong would settle B versus D faster than anything here.
+
+
+ A reader who cannot use the palette we chose. The current seven are picked to
+ survive the common kinds of colour blindness, but "common" is doing work in that sentence. One
+ report of a pair that genuinely cannot be separated turns B from a preference into an
+ accessibility fix — and then it should not wait behind anything.
+
+
+ Somebody wanting to share a scheme. If schemes turn out to be something a
+ teacher hands to a class, D grows a name-and-a-link and B does not scale to it at all.
+
+
+
+
+
+ 12 What is this page not settling?
+
+ How finely the app paints — that is the separate open question this page keeps pointing at.
+ Whether the colouring is on by default. What the 18 rules should be
+ called in Arabic and English, which becomes necessary the moment anything shows them one
+ by one. Whether a reader can ask what a colour means by touching it. And nothing at all about
+ where the rule data came from or how good it is, which has its own record.
+
+
+
+
+ 13 So what should we build?
+
+ The real choice is between B and D . A needs no decision, and
+ C is the one option this page can argue against with a picture rather than an opinion.
+
+
+ The case against C is section 8 and section 9's third card together: at the size we paint,
+ 18 colours mostly cannot be seen, on 620 verses the app
+ would have to guess which one to use, and fanned as generously as they honestly can be they are
+ still 18 pairs tighter than anything we ship today. That is not an argument
+ against ever telling 18 rules apart — it is an argument that colour is the
+ wrong tool for it until we paint smaller than a verse.
+
+
+ Between B and D: B gives a reader exactly what they asked for and gives us seven ways for a page
+ to end up worse than it started. D gives a reader less, keeps the palette something designed
+ rather than assembled, and keeps it nameable — which matters more than it sounds, because a
+ colour scheme two people share is a thing they can talk about and a colour scheme one person
+ invented is not.
+
+
+
+
+
+
+
+ Where the pictures come from. Nothing here is a mock-up. The page is the real
+ mus'haf image the app ships and the tinted shapes are the same ones the app taps against. The
+ seven colours, their outline patterns and their Arabic letters are read out of the app's own
+ stylesheet and source when this page is built, so they cannot drift from what Hifth looks like.
+ Every count comes from the 18 rules in the shipped data, recomputed on each
+ build. The alternative palettes in options B and D are drawn to make the options visible and are
+ labelled as illustrations wherever they appear — nothing on this page proposes them.
+
+
+ Built by scripts/build-palette-options.mjs — edit that, not this. The rule data is
+ cpfair/quran-tajweed@496f71cd; the print is
+ assets/pages/hafs-kfqc/2.svg, outlined shapes only, no text.
+
+
+
+
diff --git a/docs/issues.json b/docs/issues.json
index 774c8dd..89c8199 100644
--- a/docs/issues.json
+++ b/docs/issues.json
@@ -693,6 +693,20 @@
"severity": "risk",
"owner": "user"
},
+ {
+ "id": "check-placement-correction-by-eye",
+ "source": { "ledger": "placement-correction-by-eye" },
+ "severity": "risk",
+ "owner": "user",
+ "note": "The runnable half of nobody-has-looked-at-the-placement-verdicts: that row is the question, this row is the twenty minutes that answers it. Built 2026-08-08 — `pnpm adjudicate:marks` renders a hundred blind two-panel trials over forty pages, and `pnpm adjudicate:score` rebuilds the key from the seed afterwards, so nothing on disk knew the answers while they were being given. Deliberately a forced choice rather than a list of verdicts with agree/disagree beside each: a person shown a machine's verdict agrees with it, and what comes back is the machine's own opinion wearing a human's name. It is a risk rather than a question because mark-C cannot ship on an uninspected correction. Wired into `make session CHECK=placement-correction-by-eye` on 2026-08-12: opened from a session the trials post each answer straight into that sitting's transcript and bank the ruling file at the end, so the twenty minutes cannot end in a download nobody can find. Still says nothing about how it is going, because it still does not know."
+ },
+ {
+ "id": "check-placement-residual-by-hand",
+ "source": { "ledger": "placement-residual-by-hand" },
+ "severity": "risk",
+ "owner": "user",
+ "note": "The other half hour, and it asks a question the first one cannot. A forced choice returns a preference — our rectangle beat the one it was shown against — and a correction that points the right way and falls a third short wins every trial while still being wrong. Built 2026-08-12: `pnpm nudge:marks` renders one rectangle per trial, starting a fixed distance out in a direction that changes every time, and the reader puts it where it belongs; `pnpm nudge:score` subtracts what the machine proposed from where it was actually put, and what is left is a magnitude in units. It reports that against the reader's OWN precision, measured in the same sitting from marks shown twice, because a residual smaller than the hand that produced it is not a finding. Deliberately a second session rather than a drag handle on the first: adjusting a rectangle inside a two-panel trial and then scoring the landing against the two starting positions IS the answer key, and adjusting after answering teaches the direction of the correction, which points the same way on nearly every page. The two should not be worked back to back by the same person. Risk rather than question because mark-C's thresholds are a claim about magnitude and only this can check one."
+ },
{
"id": "plan-perf-verdict",
@@ -820,6 +834,82 @@
"severity": "question",
"owner": "agent",
"closedBy": "apps/web/e2e/revision.spec.ts"
+ },
+ {
+ "id": "spacing-is-scored-as-shape",
+ "source": { "file": "docs/design/mark-labels.md", "item": "①" },
+ "status": "open",
+ "severity": "question",
+ "owner": "agent",
+ "note": "Comparing whole pictures asks two questions in one number — are these the same strokes, and did the print set them the same distance apart. Five marks in 326,515 are charged for the second when only the first was asked. Bounded and understood, so this is a question about whether a better comparison is worth building, not a defect waiting on anyone. The naive version must not be built: arrangement is the only thing separating fathatan from successive fathatan, 3,635 marks against the 5 it would save."
+ },
+ {
+ "id": "names-never-checked-against-the-text",
+ "source": { "file": "docs/design/mark-labels.md", "item": "②" },
+ "status": "open",
+ "severity": "question",
+ "owner": "agent",
+ "note": "Everything measured so far compares a name to a drawing. Nothing has compared a name to the text the mark belongs to, which is a different question with a different blind spot — it would catch a mark that is drawn exactly as its name says and is the wrong name for that word. Cheap, and independent of both the placement and the drawing work."
+ },
+ {
+ "id": "nobody-has-looked-at-the-placement-verdicts",
+ "source": { "file": "docs/design/mark-registration.md", "item": "①" },
+ "status": "open",
+ "severity": "question",
+ "owner": "user",
+ "blockedBy": ["placement-correction-by-eye"],
+ "note": "The placement measurement has been reproduced twice and its controls hold, but no human has looked at a single verdict. Until one does, the thresholds in that document's §⑦ stay unenforced and nothing is wired into CI. The equivalent question for the naming probe WAS worked by eye, and doing so is what caught a scorer artefact that had been read as forty-five mislabelled marks — which is the argument for spending the time here too. Narrowed 2026-08-08 without being closed: the blocker was 'a person working the evidence page', and that page was the wrong instrument — it ranks the machine's own verdicts worst-first and draws the expected outline in green beside the rectangle, so a reader is being shown the answer and asked whether they agree, which is the one form of looking that cannot produce evidence. What replaced it is a forced choice between two rectangles with nothing on screen saying which is ours and no key written down until the scorer rebuilds it from the seed; it carries its own controls (obviously-wrong rectangles to catch a session worked while distracted, identical pairs to catch a person who always picks something, and same-size displacements in other directions to measure whether an eye can resolve a shift this small at all — which is what the headline number has to be read against). The runbook is `placement-correction-by-eye` in the validation ledger; this row stays open until a ruling is banked. Scoped 2026-08-12, which is a narrowing of what this row can ever deliver rather than of the work: a forced choice settles a preference and not a distance, so a-preference-does-not-say-how-far now carries the magnitude half and neither row's answer should be read as the other's."
+ },
+ {
+ "id": "a-preference-does-not-say-how-far",
+ "source": { "file": "docs/design/mark-registration.md", "item": "⑦" },
+ "status": "open",
+ "severity": "question",
+ "owner": "user",
+ "blockedBy": ["placement-residual-by-hand"],
+ "note": "Opened 2026-08-12 by building the instrument that answers it, and it is the gap the row above cannot close by any number of trials. A forced choice yields at most one bit per trial — is the proposed move preferred to the alternative it was shown against — so it can confirm a direction and is structurally incapable of confirming a distance. Every threshold in that document's §⑦ is a claim about distance. What answers it is a placing session: one rectangle, started deliberately out of position, put where a reader says it belongs, with the proposed correction subtracted from the landing afterwards. Three outcomes, and all three are useful: the residual is smaller than the reader's own measured precision (adopt as proposed, and say the precision it was adopted at); it is larger and consistent (adopt with the residual applied); or it points the OTHER way from the forced choice's verdict, which is the most valuable result of the three and the reason the two sessions are scored separately and never summed. The runbook is `placement-residual-by-hand`; this row stays open until a residual is banked."
+ },
+ {
+ "id": "the-displacement-correction-could-go-stale",
+ "source": { "file": "docs/design/mark-registration.md", "item": "②" },
+ "status": "open",
+ "severity": "risk",
+ "owner": "agent",
+ "blockedBy": ["the placement decision"],
+ "note": "Only bites if the per-page correction is adopted. It would be data derived from two printings with nothing re-deriving or re-checking it — the same shape of problem as the fit residual that looked like validation and was blind to a one-unit displacement. The answer is the one every other derived number here already gets: re-derive offline from committed bytes and fail on drift."
+ },
+ {
+ "id": "pages-are-never-counted-against-the-text",
+ "source": { "file": "docs/design/mark-registration.md", "item": "③" },
+ "status": "open",
+ "severity": "question",
+ "owner": "agent",
+ "note": "Does each page carry the number of marks of each name the text says it should, in that order? Counting is blind to geometry and geometry is blind to counting: no score in either document can see a missing or duplicated mark, because a mark that was never drawn has no box to be wrong about. Cheap next to everything else here."
+ },
+ {
+ "id": "which-printing-made-the-shipped-pages",
+ "source": { "file": "docs/design/mark-registration.md", "item": "④" },
+ "status": "open",
+ "severity": "question",
+ "owner": "agent",
+ "note": "If the shipped pages came from the publisher's per-page fonts, the smallest addressable thing in that source is a whole word, and one of the cross-checks becomes impossible in principle rather than merely awkward. The two candidates differ in a single readable number, so this is settled by looking rather than by arguing."
+ },
+ {
+ "id": "position-might-separate-the-look-alike-pairs",
+ "source": { "file": "docs/design/mark-registration.md", "item": "⑤" },
+ "status": "open",
+ "severity": "risk",
+ "owner": "agent",
+ "blockedBy": ["the placement decision"],
+ "note": "Shape does not separate fatha from kasra (0.968) or fathatan from kasratan (0.914), and no better shape comparison will — what separates them is which side of the letter they sit on, which a centred comparison discards before it starts. This is a risk rather than a question because it lands on the tajweed work: a rule that names a kasra cannot be verified by shape alone. Answerable only once placement is corrected, because it needs to know where the letter is. Carried here only — mark-labels.md §⑦ Option D points at this row rather than repeating it."
+ },
+ {
+ "id": "marks-are-drawn-with-the-strokes-of-their-own-name",
+ "source": { "file": "docs/design/mark-registration.md", "item": "⑥" },
+ "status": "answered",
+ "severity": "question",
+ "owner": "agent",
+ "note": "Answered 2026-08-08 over all 326,515 marks, with no page, no fitted transform and no rectangle in the arithmetic: no mark in the corpus is drawn with the strokes of a different name. The category is empty. Five drawings still match another name overall and all five are shown to be the right strokes at an unusual spacing — that residue is carried as spacing-is-scored-as-shape. A further 21.30% match a name this print draws as the same shape, which is a limit of the method and never counted as a disagreement — carried as position-might-separate-the-look-alike-pairs. Named in the placement document so its silence on the question is not read as a claim."
}
]
}
diff --git a/docs/issues.md b/docs/issues.md
index fae1c50..a2dfae2 100644
--- a/docs/issues.md
+++ b/docs/issues.md
@@ -1,5 +1,5 @@
-
+
# Open items
@@ -26,21 +26,29 @@ code, never reproduced. `open` — undecided, nothing blocking. `blocked` — th
and unavailable. `answered` — decided, nothing owed in code. `fixed` — closed in code *and* in a
test that would fail if it came back; the gate refuses the word without one.
-## Open — 30
+## Open — 40
| item | status | severity | owner | waiting on |
| --- | --- | --- | --- | --- |
| [`LICENSES.md` buckets `assets/adj/**` under one of its two upstreams](design/track-b-native.md#-licensesmd-buckets-assetsadj-under-one-of-its-two-upstreams--confirmed) | confirmed | defect | agent | — |
| [`skins.ts` still says the print's glyphs are anonymous](design/sub-word-marks.md#-skinsts-still-says-the-prints-glyphs-are-anonymous--confirmed) | confirmed | defect | agent | diacritic-shards-need-a-caller |
+| [How far is our correction still out](design/mark-registration.md#-how-far-is-our-correction-still-out--open) | open | question | user | placement-residual-by-hand |
| [Arabic number agreement outside `distance`](design/i18n.md#-arabic-number-agreement-outside-distance--open) | open | defect | user | a hafiz |
| [A mark id is only meaningful against an array's order](design/sub-word-marks.md#-a-mark-id-is-only-meaningful-against-an-arrays-order--open) | open | risk | agent | diacritic-shards-need-a-caller |
| [Are the shards worth 2.28 MB, and against what ceiling](design/sub-word-marks.md#-are-the-shards-worth-228-mb-and-against-what-ceiling--open) | open | question | agent | tajweed-span-to-named-mark |
| [Does a real fore-edge stack vary?](design/page-transition.md#-does-a-real-fore-edge-stack-vary--open) | open | question | user | — |
| [Whether this document should be generated rather than written](design/etl-pipeline.md#-whether-this-document-should-be-generated-rather-than-written--open) | open | question | agent | — |
| [Whether the GPL/App-Store reading in ①–③ is right](design/track-b-native.md#-whether-the-gplapp-store-reading-in--is-right--open) | open | risk | user | a licensing opinion |
+| [Whether the names agree with the text they belong to](design/mark-labels.md#-whether-the-names-agree-with-the-text-they-belong-to--open) | open | question | agent | — |
+| [Would a person pick our rectangle over the one we ship](design/mark-registration.md#-would-a-person-pick-our-rectangle-over-the-one-we-ship--open) | open | question | user | placement-correction-by-eye |
+| [Do the pages count the marks they should](design/mark-registration.md#-do-the-pages-count-the-marks-they-should--open) | open | question | agent | — |
+| [What separates the look-alike pairs](design/mark-registration.md#-what-separates-the-look-alike-pairs--open) | open | risk | agent | the placement decision |
+| [Whether a spacing-aware comparison is worth building](design/mark-labels.md#-whether-a-spacing-aware-comparison-is-worth-building--open) | open | question | agent | — |
| [Does a tajweed span land on a mark a reader can be shown](design/sub-word-marks.md#-does-a-tajweed-span-land-on-a-mark-a-reader-can-be-shown--open) | open | question | agent | a hafiz looking at the drawn marks |
+| [Is there anything stopping the correction going stale](design/mark-registration.md#-is-there-anything-stopping-the-correction-going-stale--open) | open | risk | agent | the placement decision |
| [`PLAN.md` states an unachievable order and one wrong citation](design/track-b-native.md#-planmd-states-an-unachievable-order-and-one-wrong-citation--open) | open | defect | agent | gpl-and-the-app-store |
| [Whether Track B should exist at all after ④ and ⑤](design/track-b-native.md#-whether-track-b-should-exist-at-all-after--and---open) | open | question | user | web v1.0 and somebody using it |
+| [Which of the two printings' fonts produced the pages](design/mark-registration.md#-which-of-the-two-printings-fonts-produced-the-pages--open) | open | question | agent | — |
| [The CI frame budget is a number from an emulator](backlog.md#-the-ci-frame-budget-is-a-number-from-an-emulator--blocked) | blocked | risk | agent | perf-verdict-on-device |
| [Does the fold read at all?](design/page-transition.md#-does-the-fold-read-at-all--blocked) | blocked | question | user | a hafiz on the acceptance phone |
| [The same measurement on real mid-tier Android](backlog.md#-the-same-measurement-on-real-mid-tier-android--blocked) | blocked | risk | user | an Android phone |
@@ -58,10 +66,12 @@ test that would fail if it came back; the gate refuses the word without one.
| [Read the Complex's published terms at the source](validation/ledger.json) | pending | risk | user | — |
| [8+ day offline survival, installed vs browser tab](validation/ledger.json) | pending | risk | user | — |
| [On-device pan/zoom + highlight-toggle verdict](validation/ledger.json) | pending | risk | user | — |
+| [Placement correction by eye — a hundred forced choices between the corrected box and the one we ship](validation/ledger.json) | pending | risk | user | — |
+| [Placement by hand — put each rectangle where it belongs, and measure how far our correction still misses](validation/ledger.json) | pending | risk | user | — |
| [Two days of real revision produce two days in the record](validation/ledger.json) | pending | risk | user | — |
| [VoiceOver / TalkBack gesture walkthrough](validation/ledger.json) | pending | risk | user | — |
-## Closed — 57
+## Closed — 58
`answered` owes nothing further. `fixed` owes a test, and names it here.
@@ -79,6 +89,7 @@ test that would fail if it came back; the gate refuses the word without one.
| [Whether the report should be able to show a page's boxes](design/encoding-inspector.md#-whether-the-report-should-be-able-to-show-a-pages-boxes--answered) | answered | — |
| [Whether `lam_shamsiyyah`'s 21 `+1` misses are a source defect](design/encoding-inspector.md#-whether-lam_shamsiyyahs-21-1-misses-are-a-source-defect--answered) | answered | — |
| [`langSwitchTo(other)` interpolates a locale's name into another locale's sentence](design/i18n.md#-langswitchtoother-interpolates-a-locales-name-into-another-locales-sentence--answered) | answered | — |
+| [Whether the names on the marks are right](design/mark-registration.md#-whether-the-names-on-the-marks-are-right--answered) | answered | — |
| [The map assumes no ayah spans a page](design/word-indexing.md#-the-map-assumes-no-ayah-spans-a-page--answered) | answered | — |
| [Hifth's own license](PLAN.md#open-follow-ups) | answered | — |
| [The merge pass is a step, not a formality](PLAN.md#open-follow-ups) | answered | — |
diff --git a/docs/map.json b/docs/map.json
index 321a664..0319671 100644
--- a/docs/map.json
+++ b/docs/map.json
@@ -299,20 +299,42 @@
{
"file": "packages/core/src/skins.ts",
"symbol": "class Tajweed",
- "note": "Per-surah mark shards → per-ayah marks. `TAJWEED_RULES` is the rule vocabulary and the palette keys derive from it."
+ "note": "Per-surah mark shards → per-ayah marks. `TAJWEED_RULES` is the seven-colour PAINTING vocabulary — not the source's, which has eighteen entries and lives in data. Two vocabularies rather than one is the whole shape of this feature: a shard says `ikhfa_shafawi`, `rules.json` says that paints as `ghunnah`, and `marksForAyah` folds the two at read time. Core is deliberately ignorant of which source it is reading, so it validates the mapping (`parseTajweedVocabulary`) instead of hard-coding it, and paints NOTHING until the mapping lands — a shard on its own is offsets keyed by strings this layer has never been taught."
+ },
+ {
+ "file": "packages/core/src/skins.ts",
+ "symbol": "marksForAyah",
+ "note": "Where the eighteen become seven. It folds every source rule sharing a family into one mark, keeps both source names on `TajweedMark.sources`, and orders the result by `TAJWEED_RULES` so the rarest rule still wins the ayah. The fold used to happen in the build, which is why nothing downstream could tell an ikhfa from an iqlab; moving it here cost +17.5% gzipped on the shards and is what makes a finer legend — or a reader-editable palette — possible at all."
+ },
+ {
+ "file": "packages/etl/scripts/build-tajweed.mjs",
+ "symbol": "RULES",
+ "note": "The eighteen-to-seven table, and the only place it exists. It stays in L3 because it is a fact about *this source's* vocabulary rather than about tajweed: a different corpus with a different rule list would need a different table and no core code would change. The build writes it out as `tajweed/rules.json` beside the shards, so the mapping ships as data a reader can inspect rather than as a decision baked into 114 files."
},
{
"file": "apps/web/src/components/SkinToggle.tsx",
"symbol": "SkinToggle",
"note": "The switch. Skin swap must not re-render the stage — it changes classes on existing nodes."
+ },
+ {
+ "file": "scripts/gate-tajweed.mjs",
+ "symbol": "orphans",
+ "note": "The gate the two-vocabulary shape made necessary. A shard key with no entry in `rules.json` paints NOTHING — no error, no blank page, no console warning, because painting an unplaceable rule some default colour would be worse. The symptom is a rule that quietly stops appearing on every page, and the only witness is a hafiz who noticed the ghunnah went silent. It reads the SHIPPED bytes rather than the build's table, on purpose: whether the table is right is not the question, whether the 114 files a browser will fetch agree with the file beside them is. Both directions — an id no vocabulary describes, and a vocabulary entry no shard uses — plus the two ends it is bolted to: a family core does not paint, and a family with no colour or dash pattern in tokens.css."
}
],
"extend": [
"A new edition is a data change first: assets, a SOURCES.md entry with its licence, and a concordance. Only then a registry entry.",
"gate:license and gate:text-sources both read SOURCES.md — an edition whose provenance is not recorded cannot ship, by construction.",
- "A new tajweed rule: add to TAJWEED_RULES, emit from build-tajweed.mjs, add the palette entry. The class prefix is centralised so CSS and TS cannot drift."
+ "A new PAINTED family: add to TAJWEED_RULES, add the palette entry, add its label to both message catalogues. The class prefix is centralised so CSS and TS cannot drift. Seven is not arbitrary — it is the most a colour-blind-safe qualitative palette carries honestly on cream paper, so an eighth is a palette decision before it is a code change.",
+ "A new SOURCE rule is not that. It goes in build-tajweed.mjs's table pointing at a family that already exists; the build throws on an id the table does not name, so a source refresh that adds one fails loudly instead of dropping it."
+ ],
+ "gates": [
+ "pnpm test",
+ "pnpm gate:license",
+ "pnpm gate:text-sources",
+ "pnpm gate:tajweed",
+ "make ci"
],
- "gates": ["pnpm test", "pnpm gate:license", "pnpm gate:text-sources", "make ci"],
"seeAlso": ["edge-data-etl", "provenance"]
},
@@ -640,14 +662,97 @@
"file": "packages/etl/scripts/lib/mark-join.test.mjs",
"symbol": "describe(\"markPaths\"",
"note": "28 tests on words small enough to count by hand, and most of them assert that `markPaths` returns `null`. The probe is the measurement — 86,962 words joined, 34 tokens pinned — and it needs 380 MB of gitignored cache to say anything, which is why it is a probe; what a test can hold is the arithmetic and the refusals. Marks are written as `[diacriticId(name), x, y, w, h]` rather than pasted ids, so reordering `DIACRITICS` fails here instead of silently re-labelling what this file claims. One test earned its comment the hard way: `مَـَٔ` yields three tokens, not two — the tatweel and the sajda overline get no path, but the hamza-above on the tatweel does."
+ },
+ {
+ "file": "scripts/build-mark-options.mjs",
+ "symbol": "const BAND",
+ "note": "The mark-C decision drawn on the print instead of argued: three overlays over page 2 — what ships today, what mark granularity would paint, and geometry-only — so the choice is looked at rather than described. Its finding is the one the option cards exist to carry: at ayah granularity **50,023 of 60,057 annotations (83.29%) render as nothing**, because an ayah carries 3.90 distinct families on average and `leadingRule` paints exactly one; `madd` is annotated on 92.48% of ayahs and wins 2.74% of them. So the constraint the skin is under is not that a wash is coarse, it is that a wash is *singular*, and that is what finer selection buys. Split in two on purpose: `--extract` needs the 348 MB gitignored page cache and writes `mark-granularity.data.json`, while the default render reads only committed bytes, so any checkout reproduces the identical HTML without the cache — the same bargain `probe-diacritics.mjs` makes, one step further along. Every rectangle on it is traceable: word boxes from the shipped shard, mark boxes from `markPaths` through `applierFromPin`, ayah polygons from the page's own `verse-N` hit shapes, colours and dashes read out of `tokens.css` at build time so the picture cannot drift from the app. It references the print by relative URL rather than inlining it — 42 KB, not 256 KB, and no second copy of bytes the repo already ships. Its `attr` reader carries the same leading-`\\s` boundary `diacritics.mjs` names, and for the same reason: without it `d` matches the tail of `id=\"verse-8\"`, every ayah polygon gets `d=\"verse-8\"`, and an unparseable `d` paints nothing and reports a zero bbox — so the \"today\" layer renders empty while the ``-based mark layer draws fine, which looks exactly like a wash being subtle."
+ },
+ {
+ "file": "packages/etl/scripts/probe-mark-ink.mjs",
+ "symbol": "const eligible",
+ "note": "Asks the question nothing before it asked: does a mark's rectangle sit on the ink a reader's eye goes to? Everything earlier counted ink INSIDE the box, which the base letter satisfies — so a box a full mark-height off scored as a hit. What makes this one different is the null control: every mark is also scored one width left, one width right, and on another mark's rectangle elsewhere on the page, and a claimed placement that cannot beat a deliberately wrong one is not a measurement. It does not. As shipped, separation is **−0.242** (claimed −0.127 against wrong +0.116) and only 12.70% of marks beat their own wrong placement; the error is a shift of **0.79 across and 1.07 down** on marks 5.6 × 3.6, the same direction on all 40 sampled pages, and taking each page's own shift out lifts achievable overlap to 0.901–0.912 everywhere. The pipeline's recorded fit residual correlates 0.117 with the real error, which is why a number that looked like validation was blind to this. Exits non-zero on a breached threshold by design, and is deliberately NOT in `gates`, `make ci` or the Makefile — a probe reports, a gate refuses, and nothing should refuse until a person has worked the evidence page. Consumes the labelling verdict as its eligibility filter, so it is downstream of `probe-mark-labels.mjs` and not independent of it."
+ },
+ {
+ "file": "packages/etl/scripts/probe-mark-labels.mjs",
+ "symbol": "const TWIN",
+ "note": "The other half of the split, and the split is the point: whether a mark's rectangle is in the right PLACE and whether its NAME is right were once one number — \"51.15%, or 69.15% counting look-alikes\" — which was three unrelated effects added together. This half touches no shipped page, no fitted transform and no rectangle, so displacement cannot enter its arithmetic. A census over all 326,515 marks, so no confidence intervals: **256,948 (78.69%) match their own name · 69,562 (21.30%) match a name this print draws as the same shape · 5 anything else**, and those 5 have every stroke matching their own name at 0.83+, differing only in spacing. Genuine mislabels: zero. Three planted-label controls keep it honest — nearest wrong name flagged 100.00%, within-group 0.00%. Byte-identical across runs; exits 0."
+ },
+ {
+ "file": "packages/etl/scripts/lib/ink.mjs",
+ "symbol": "rasterise",
+ "note": "A dependency-free SVG rasteriser, written rather than depended on for reasons that were measured, not assumed: two of the three npm rasterisers fetch a binary at install (so a determinism re-run cannot prove it re-derived), one drags an 18 MB text stack, and the pure-JS one implements neither fill rule correctly — on the same 5,600-sample shape nonzero says 6,400 and evenodd says 4,800. So both rules are honoured per-shape and OR-ed. Path flattening covers the full grammar including the arc form whose flags are written unseparated, which forces a character scanner rather than a number split. Summed-area tables make a rectangle's ink O(1), which is what lets a probe score 4,000 marks in three placements each."
+ },
+ {
+ "file": "packages/etl/scripts/lib/mark-ink.mjs",
+ "symbol": "bestPlacement",
+ "note": "The scorer, and the choice of scorer is load-bearing. Product-moment correlation of two binary masks (`phi`) DECIDES; Jaccard/IoU is reported and decides nothing, because IoU cannot go negative and so cannot tell 'wrong place' from 'nothing there' — the distinction the whole null control turns on. Two-stage search, quarter-unit coarse lattice then one-sample refine, ties broken toward the smaller displacement so a search cannot manufacture a better answer by moving further. Also `wilson`/`sampleSizeFor` for the intervals, `rng` (mulberry32, one stream per purpose so adding a control does not renumber the sample), and `chooseExemplars`, medoid-by-nearest-to-mean. An earlier version reported a correlation of 5.509 where the maximum is 1 — shared area and ink counted over different regions when a displacement pushed a shape off the raster edge — and it now throws rather than printing an impossible number."
+ },
+ {
+ "file": "packages/etl/scripts/lib/mark-shape.mjs",
+ "symbol": "similarityMatrix",
+ "note": "One library of canonical examples, shared by both probes so they cannot drift into two vocabularies. `similarityMatrix` scores all 26 names against each other and `shapeGroups` joins any pair above a stated threshold — which is how the two look-alike pairs stopped being a judgement call: **fatha ~ kasra 0.968, fathatan ~ kasratan 0.914**, the largest unjoined cell 0.627, and the same grouping at every threshold from 0.70 to 0.90. `fitTo` matches width and height SEPARATELY, and that is not a detail: the comparison originally rescaled nothing, this print sizes a mark by what is under it (up to a third of its own width), and a multi-stroke mark compared against a differently-sized copy lands ink on gap and scores below zero. That produced 45 apparent mislabels which were all artefacts. The repair was chosen by competition against those 45 — ten-scale ladder 22, isotropic diagonal 32, widened window 24, separate axes **42**. `pieces`/`pieceCheck` score stroke-by-stroke, used to EXPLAIN a verdict and deliberately not to make one: arrangement is the only thing separating fathatan from successive fathatan."
+ },
+ {
+ "file": "packages/etl/scripts/lib/marks.mjs",
+ "symbol": "marksOf",
+ "note": "One page of marks, read once and cached: the ligature corpus's own `` boxes put onto our frame through `applierFromPin`, each carrying the surah, ayah and word index of the word it was drawn inside. Extracted from `probe-mark-ink.mjs` when a second consumer appeared, for the reason every other shared reader here exists: two walks over the same 380 MB cache is two chances to disagree about what a mark is, and the disagreement would show up as a placement finding. Wants the gitignored `data/pages/.cache/words/**`, which is why nothing that imports it can be a gate."
+ },
+ {
+ "file": "packages/etl/scripts/lib/adjudication.mjs",
+ "symbol": "planSession",
+ "note": "The trial plan a person works, and the reason their answers count as evidence: it is a pure function of the seed and the measured displacements, so no key is ever written to disk — the page holds none and the scorer rebuilds the same session afterwards. Four kinds, shuffled and indistinguishable while you work: **as shipped** (the corrected rectangle against the one the app draws today — the question), **decoy** (against the same distance in another direction, at least 30° off the as-shipped bearing; it is both the yardstick for whether an eye resolves a shift this small AND what breaks the pattern, since the error points the same way on every page and twenty trials is enough to learn that), **catch** (4.5 units off — anybody looking gets these, a session that fails them is discarded), **twin** (the same rectangle twice, where \"can't tell\" is the only honest answer, which is what catches a person who always picks something). Candidates are walked page-by-page in rotation rather than shuffled flat, because a flat shuffle over 40 pages of ~540 marks yields a session about four pages and the correction is per-page. Its readers are injected, not imported at the call site, so the arithmetic — the mix, the angles, the left/right balance — is testable on invented marks without the 380 MB cache."
+ },
+ {
+ "file": "packages/etl/scripts/lib/adjudication.mjs",
+ "symbol": "planNudge",
+ "note": "The other plan, in the same module and deliberately not in the same session: no choosing, one rectangle, and a reader who drags it where it belongs. It exists because a forced choice yields at most one bit — *is ours preferred to what ships* — and a correction that points the right way and falls a third short wins every trial and is still wrong. Subtracting the machine's proposed move from the reader's landing gives the residual, which is a distance that can be applied rather than a preference that can only be counted. `START_R` puts every rectangle 3 units out in a uniformly random direction: well clear of both placements a forced choice would have offered (about 1 unit apart), so nobody lands by not moving; inside the window with the box's own half-width to spare; and evenly spread, so the pull a hand exerts toward its own starting point cancels in the average instead of being baked in as a fact about the boxes. `REPEAT_GAP` keeps a mark's two showings at least 10 trials apart, and those showings are inserted across the session rather than appended — the pair measures the reader's precision, and a precision built from the last fifteen trials measures the end of an hour. Placement cannot be offered inside a two-panel trial: dragging to fit and then comparing the landing to the two starts *is* the answer key, and offering the drag after the answer leaks the correction's direction across the session."
+ },
+ {
+ "file": "packages/etl/scripts/build-mark-adjudication.mjs",
+ "symbol": "function panel",
+ "note": "Renders the session to one self-contained page: two panels, one rectangle each, no verdict, no feedback, no answers in the payload. `panel` is its own renderer and must stay that way — the measurement's own crop draws the other printing's outline in green exactly where the corrected rectangle goes, which is the answer key in a colour. Every panel is the same fixed square window (`windowFor`) plus a small framing wobble, so a catch cannot be spotted by its zoom and the corrected box is never dead centre. Asks a second question alongside the first — a tick, `N`, for *neither rectangle closes around the mark* — and it is a tick rather than a fourth button on purpose: a box can be in the right place and the wrong size, which is a different fault with a different repair, and a single \"wrong somehow\" answer would both blend the two and eat the trials where \"which is closer\" still has an answer. `head.asks` records that the question was put, so a ruling worked before it existed scores as *not asked* rather than as nobody-complained. Fingerprints the displacement file into the page so a ruling can be refused later if the measurement moved underneath it; resumes from localStorage keyed on seed + fingerprint. Not checked in and never should be: it draws crops of the mus'haf's own artwork, and the standing rule is that no scripture is committed here."
+ },
+ {
+ "file": "packages/etl/scripts/score-mark-adjudication.mjs",
+ "symbol": "const CATCH_FLOOR",
+ "note": "Rebuilds the key from the seed and only then learns what the answers were — which is the whole defence of the result, since nobody had to be trusted not to peek at something that did not exist. Refuses (exit 2) when the displacement file no longer fingerprints to what the page was built from: answers attached to a question that has since changed come out looking clean and mean nothing. Reports four numbers with Wilson intervals and \"can't tell\" excluded from the denominator rather than counted as a miss — folding it in would punish exactly the care the session asks for. A fifth line, on its own axis and out of the headline's arithmetic, counts the trials where the reader said neither rectangle closed around the mark, and names them so somebody can go and look; the headline is then reprinted without them as a comparison, never as a stricter verdict, since dropping trials only widens the interval. Three distinguishable outcomes, and the middle one is why the decoys exist: supported · not supported *and the decoys clear half*, meaning the shift was visible and ours still lost, which is our correction being wrong rather than the test being blunt · neither clears, meaning the session says nothing either way."
+ },
+ {
+ "file": "packages/etl/scripts/build-mark-nudge.mjs",
+ "symbol": "function inkPaths",
+ "note": "The placement page: one panel, the page's own outlines, and one rectangle that always starts 3 units off. `shift` — what the measurement proposes — is on the planned trial and is never read here, so it reaches no markup, no data attribute and no comment; anybody can view source and find no target, which is the only version of that claim worth making. What the page *is* given is where the rectangle starts, a random direction from where the app draws it today, which points at the right mark without pointing at the right place. The commit button stays dead until the box is moved, because a rectangle that always starts wrong makes \"I left it alone\" a garbage datum rather than an answer. Pointer capture is on the panel and not the rectangle — a one-unit box is about twenty pixels and asking somebody to grab it exactly would make this a test of aim. Records the start alongside the landing, since the pull of a starting point on a landing can only be measured with both ends of it in the record. Same fingerprint guard, same `window.HIFTH_SESSION` sink, same localStorage resume as the forced-choice page; not checked in, for the same reason it is not — it draws crops of the mus'haf's own artwork."
+ },
+ {
+ "file": "packages/etl/scripts/score-mark-nudge.mjs",
+ "symbol": "function meanCI",
+ "note": "Turns placements into a distance. Prints the headline in the forced choice's own currency — how often a landing fell nearer our correction than the shipped box, with a Wilson interval — so the two instruments are comparable and a disagreement between them is legible as a finding rather than as arithmetic. Then the part only this can produce: the residual per axis with a normal interval (a mean of continuous displacements, not a count of successes — the two interval shapes are not interchangeable at these sample sizes), and the reader's own precision from the marks shown twice, halving the variance because two independent placements differ by √2 times one placement's wobble. A residual inside that precision is reported as *not distinguishable from the hand*, which is a result and is not the same as the correction being right. The pull of the starting point is regressed and printed rather than corrected for: correcting would be assuming a model of the hand, and this is the instrument that measures one. Refuses (exit 2) on a fingerprint mismatch or on a file that is not a placement session."
+ },
+ {
+ "file": "packages/etl/scripts/lib/adjudication.test.mjs",
+ "symbol": "describe(\"planSession\"",
+ "note": "Nine tests on twelve invented pages, asserting the properties that decide whether a worked session is worth anything rather than whether the page looks right: rebuilt byte-identically from the seed and different under another; every kind present and the counts summing; the corrected rectangle in the left panel within 12% of half the time, so pressing one key scores 50%; twins genuinely identical with a null answer; an as-shipped trial's other rectangle at exactly the origin; a decoy moved exactly the correction's magnitude and never back toward the as-shipped position (a decoy that drifted home is an as-shipped trial flattering the yardstick); both rectangles plus jitter inside the window, so no trial is answerable by counting boxes; and a refusal rather than a silently shortened session when too few marks clear the ink floor."
+ },
+ {
+ "file": "packages/etl/scripts/lib/adjudication.test.mjs",
+ "symbol": "describe(\"planNudge\"",
+ "note": "Seven more on the same invented pages, each one a way a placement session could be quietly worthless: a rectangle that could start near where it belongs (somebody lands by not moving, and \"I left it alone\" counts as agreement); starting directions that lean one way (a hand's pull toward its own start gets baked into the residual as a fact about the boxes); the two showings of a repeated mark sitting close together (the pair measures memory instead of precision, and the residual is divided by that number); a rectangle clipped at the window edge (the trial opens as a hunt); and a plan that is not reproducible from the seed, after which the residual is a subtraction of the wrong number."
}
],
"extend": [
+ "Two questions that look like one are not one. A rectangle in the wrong place and a mark with the wrong name were measured together for months and produced a single figure with an eighteen-point swing depending on how you counted — see `mark-registration.md` and `mark-labels.md`, which are two documents on purpose. Do not add a combined number back.",
+ "Any claim that a measurement here works needs a null control — the same measurement at a place the answer is known to be wrong. Without one, 'the box has ink in it' is satisfied by the base letter and a systematically displaced rectangle reads as a hit. This is how a one-unit displacement survived every check for months.",
+ "Shape cannot separate fatha from kasra, or fathatan from kasratan, and no better shape comparison will — what separates them is which side of the letter they sit on, which a centred comparison discards before it starts. Anything that colours a recitation rule naming one of those four cannot verify itself by shape.",
+ "The word boxes and the mark boxes are placed by the SAME per-page fit, recorded in `word-boxes.pin.json`. A correction to one is a correction to both, and a displacement in one is a displacement in both — it is invisible in word boxes only because a word box is a median 27.9 × 24.3 against a mark's 5.6 × 3.6.",
"The word index here is the *print's*, not the Quranic Arabic Corpus's — the print counts pause marks as words, and the two disagree on 4,499 of 6,236 ayahs. That alignment now exists and is a separate feature, `word-indexing`; do not re-derive it here, and do not renumber these boxes to match QAC. The number on a box is the number the geometry arrived with, and the map is what relates it to anything else.",
"No upstream bytes ship and none should start. The pages stay the quranpedia print; what this area contributes is numbers. If a change would vendor their ink or their text, it is a new source and needs a SOURCES.md entry of its own, not an extension of this one.",
"Anything that transfers external geometry onto a page works in plain top-down viewBox space, outside the `matrix(1.3333 0 0 -1.3333 …)` the ink sits under. See assets-and-pages' note on the two coordinate spaces.",
"A tolerance added here is measured before it is written, and the measurement goes in the comment beside it — `MAX_RESIDUAL` and `MARK_DROP` both name the distribution they clear. A number with no distribution behind it is an allow-list wearing a constant's clothes.",
- "`gate:words` deliberately duplicates parsing and point-in-polygon. Do not refactor it to import `lib/mushaf-frame.mjs`; the duplication is the check."
+ "`gate:words` deliberately duplicates parsing and point-in-polygon. Do not refactor it to import `lib/mushaf-frame.mjs`; the duplication is the check.",
+ "A human verdict is only evidence if the answer did not exist while it was being given. Do not add a review surface that shows someone the machine's verdict and asks whether they agree — they agree, and what comes back is the machine's own opinion with a person's name on it. The adjudication tool is the shape that works: a forced choice between two candidates, nothing on screen saying which is ours, and the key rebuilt from a seed afterwards. Anything asking a person to settle a measurement here follows that shape, and carries its own controls — an easy condition to catch a session worked while distracted, an unanswerable one to catch a person who always picks something, and a same-magnitude decoy so the headline number has a yardstick to be read against.",
+ "When a reader says the instrument cannot express what they can see, widen it on a new axis — do not add an option to the existing one. The adjudication page grew a tick for \"neither rectangle closes around it\" rather than a fourth button, because a fourth button would have absorbed trials that still carried a usable preference and merged a size fault into a placement count. The test of a proposed new answer is whether it is the same question: if it is not, it gets its own line in the score and its own sentence in the record, and the headline's denominator does not move.",
+ "A preference and a magnitude are two instruments, not two readouts of one. A forced choice can only ever say whether our answer beats the one alternative we thought of, so a correction that points the right way and falls short wins every trial — which is why placement lives in its own session (`planNudge`) rather than as a drag added to the two-panel page. It cannot be added there: dragging a box to fit and then comparing the landing to the two starting positions IS the answer key, and offering the drag after the answer teaches the direction of the correction across a session, since it points the same way on almost every page. The general rule for this area: if a proposed feature would let a reader see where we think the answer is, it belongs in a different session with a different seed, and the two sessions should not be worked back to back by the same person.",
+ "A hand-measured number needs the hand's own noise measured in the same session or it means nothing. `planNudge` shows some marks twice from independent starts for exactly this, and the scorer refuses to call a residual a finding unless it exceeds that spread. Do not import a precision figure from another session, another reader or a previous run — the number is a property of a person on a screen on a day, and borrowing one is how a wandering hand comes to look like a discovery about the boxes."
],
"gates": ["pnpm gate:words", "pnpm gate:assets", "pnpm probe:word-registration", "make ci"],
"seeAlso": ["assets-and-pages", "select-an-ayah", "word-selection", "word-indexing"]
@@ -1080,6 +1185,21 @@
"symbol": "evidencePath",
"note": "Derived from the check id, never stored beside it: a path written down in two places is a path that can disagree with itself."
},
+ {
+ "file": "scripts/lib/validation-render.mjs",
+ "symbol": "card",
+ "note": "One renderer for a check, shared by the field guide and the session page, so a runbook step cannot read one way on the phone and another on the laptop. `capture` is the only difference between the two surfaces — it stamps each step with its ledger id as well as its position, the same rule `evidence.covers` lives under, so a reordered runbook cannot silently re-point a transcript."
+ },
+ {
+ "file": "scripts/session.mjs",
+ "symbol": "SHIM",
+ "note": "The writing surface: one check, served to the phone, every tick and note appended to a transcript as it happens rather than typed from memory at the end. This is the opt-in a check's own tool gets — inject a sink, and a page built for the check posts to it; opened as a plain file it finds nothing and keeps its offline behaviour. Every /api route is token-gated because the server binds 0.0.0.0 for the phone, and these files are treated as evidence."
+ },
+ {
+ "file": "scripts/lib/session-log.mjs",
+ "symbol": "summarise",
+ "note": "Arithmetic only — counts, the notes in order, the last verdict — and deliberately never a score. placement-correction-by-eye is a blind forced choice whose validity rests on nobody, the worker included, knowing how it is going while it is going; a progress bar is fine, a running tally would turn the measurement into a training exercise."
+ },
{
"file": "scripts/probe-reference.mjs",
"symbol": "V1_V2_DIVERGENCE",
@@ -1097,12 +1217,72 @@
"When a check comes back, record it and then do what `tunes` printed. That step is what turns a verdict into a permanent test instead of a note.",
"An `evidence` block must name a `residue` — say in words what the command cannot do. The gate rejects one that does not, because an automated run naming no remainder is one claiming to have done a human's job.",
"`evidence.covers` points at runbook step ids, never positions, and `evidence.run` is a script rather than a make target — make flattens every failed recipe to exit 2, which would let a network timeout read as a verdict.",
+ "A check whose work is a purpose-built page declares it as `runbook.tool` and the page opts into `window.HIFTH_SESSION` — never send that sink anything the page is not supposed to know. The adjudication tool posts which panel was chosen and never whether it was right, because the answer key does not exist until the scorer rebuilds it from the seed.",
"Before asking a human for a mushaf, run `make probe-reference ALL=1` and see what is left. It cannot judge whether two ayahs resemble each other — nothing on a network can — but it settles every arithmetic claim underneath that question, and it must never become a gate: a check that reaches the internet teaches everyone to skip it the first time a host is down."
],
"gates": ["pnpm gate:validation", "make ci"],
"seeAlso": ["edge-data-etl", "provenance"]
},
+ {
+ "id": "decisions",
+ "what": "Every question this project has had to answer, in words a person outside the repo can act on.",
+ "layer": "gate",
+ "entry": [
+ {
+ "file": "docs/decisions.json",
+ "symbol": "decisions",
+ "note": "The register. Fifteen records already existed in docs/decisions/ with no way in: their titles are sentences — 'The grain gets finer where the finger already is' is a good title and a useless index entry — so a reader arriving with a question could not find which file answers it. The running-table habit existed and was scoped to one topic (desktop-vs-mobile.md says 'append a row there rather than restating one here') and nothing generalised it, so an open decision could sit in a design doc's eighth section for a month with nothing counting it as open. Stores exactly one sentence of its own, the plain-language `question`, and points at the record for everything else — same anti-duplication rule as issues.json and the ledger. The exception is `related`, which is not a restatement of anything: relatedness is a property of a PAIR, so no single record can hold it, and the second half of a pair is normally written months after the first — by which time the first is not the file anybody opens. Hand-edited, never generated."
+ },
+ {
+ "file": "scripts/gate-decisions.mjs",
+ "symbol": "hasArtifact",
+ "note": "The half that is easy to skip: who a decision is FOR. An open decision must carry both an `artifact` — the published page anybody can open — and a `page`, the same picture checked in here, and the gate fails on either alone. A link with no copy dies when the host does; a copy with no link cannot be sent to anyone. Whatever is checked in names the script that rebuilds it, because a committed page nobody can regenerate is a screenshot with extra steps that starts lying the day the data moves. And the record has to link to both, or its argument is about a picture the reader cannot reach. Also carries the reverse check issues.json exists for: a record in docs/decisions/ with no row here. And `related` must be symmetric: naming a decision that does not name you back is a link invisible from the end a reader is usually standing at."
+ },
+ {
+ "file": "scripts/decisions.mjs",
+ "symbol": "plainLanguage",
+ "note": "The CLAUDE.md tenet, in characters — the only place it is more than a preference. Refuses a question or an option label that names a file, a path, a symbol, a command, a gate, or backticked code, because each of those makes a reader look something up before they can have an opinion. Deliberately does NOT check reading age, sentence length or word difficulty: those are taste, and a gate that enforces taste gets switched off. Domain words — verse, tajweed, madd, ghunnah, mus'haf — pass, and should: translating them out makes the page vaguer, not simpler."
+ },
+ {
+ "file": "scripts/build-decisions-doc.mjs",
+ "symbol": "recordLink",
+ "note": "Renders docs/decisions/README.md, open first. Every title is read out of the record at build time and none is stored — the register holds the question, the record owns the answer, and a title living in two files is right for a while and then quietly stops being right. Stamped with a hash the gate compares, the same rule as issues.md and the validation guide."
+ },
+ {
+ "file": ".githooks/pre-commit",
+ "symbol": "gate-decisions.mjs",
+ "note": "Scoped to the staged files, silent when a commit touches none of them. This pairing breaks on exactly one kind of commit — the one that adds the artifact link before committing the page, or renames the page and leaves the link — and that is the commit where the information is free, because you are moving the thing right now."
+ },
+ {
+ "file": ".claude/skills/decide/SKILL.md",
+ "symbol": "name: decide",
+ "note": "The rule applied, as a checklist: question-shaped headings, no identifiers in prose a reader must follow, a glossary for the domain words, every option drawn on real data at the size it would really be used, and what the page does NOT settle stated on the page. Not a template — the shape of an options page follows the question; what does not vary is that a reader can follow it cold. The symbol is the frontmatter name for the reason mushaf-reference gives: code-pointers.mjs reads a leading `#` as a comment, so no heading can be a live pointer."
+ },
+ {
+ "file": "scripts/build-mark-options.mjs",
+ "symbol": "ARTIFACT",
+ "note": "The worked example of what the skill asks for, and of the split every options generator wants: `--extract` reads the 348 MB gitignored page cache and writes a small JSON of findings; the default render reads only committed bytes, so the page rebuilds on a fresh clone. `--artifact` re-renders it with the print inlined once as a and d per specimen — the publishing host blocks every external request, so a relative URL does not error, it silently draws nothing, and six data: URIs would be six copies of 64 KB. That copy is gitignored: same page, roughly twice the bytes."
+ },
+ {
+ "file": "scripts/build-palette-options.mjs",
+ "symbol": "fanned",
+ "note": "The second options page, and the one that shows what a generator is FOR: its central claim is one nobody can make in a paragraph — that eighteen editable colours do not fit on cream paper — so it builds the best honest eighteen it can, fanning each family's hue in lightness and a little in hue, and then counts what that costs. Answer: **18 pairs closer together than the closest pair in today's seven**, which is the argument against option C, generated rather than asserted, and it would move on its own if the palette moved. Deliberately shares build-mark-options.mjs's stylesheet verbatim — the two pages are the same kind of document about the same seven colours, a reader will arrive at one from the other, and two option pages that do not look like siblings read as two projects. Unlike its sibling it has NO `--extract` half: every number comes from the shipped shards, `rules.json`, `tokens.css` and `skins.ts`, so there is nothing to stale. The two measurements the record turns on are computed here and nowhere else: `shown` — the share of a rule's own ayahs in which its family ALSO won the ayah's single tint, 1.6% for the commonest madd — and `ambiguous`, the 620 ayahs (10.0%) whose winning family is carried by more than one rule, where an eighteen-colour palette has no non-arbitrary answer at all. `--artifact` emits the body only, without a document shell: the publishing host wraps what it is given, and a second inside the first is discarded along with the