diff --git a/research/p104-literal-repair-rank/PROOF.md b/research/p104-literal-repair-rank/PROOF.md new file mode 100644 index 0000000000..3910c55db9 --- /dev/null +++ b/research/p104-literal-repair-rank/PROOF.md @@ -0,0 +1,233 @@ +# Complete information rank at the literal P104 correction boundary + +All ranks are over a characteristic-zero field containing `i`, for example +`Q(i)`. One array has dimension `d` over this field. The physical formulas +are ideal exact operators. No rounded implementation is inferred. + +## 1. Credited boundary, new question + +Chris R / Clear1nsight's PR3954 supplies the physical encoding and old +correction; unpaidmoon's PR4133 separates their dimension-free commutators. +We retain those operators, including the literal slot exchange: + +``` +J = I-H, H^2=H, T invertible, K=T^-1, HT=TH, +P = [ I 0; K I ], L = [ D HT; 0 I ], +Pi = [ J H; H J ], A = Pi L. +``` + +Both banks have dimension `n`. Neither `DT=TD` nor commutation between +different address blocks of T is assumed. The stated compatibility maps +act as identity on every borrowed helper. This is their mathematical +boundary extension, not an implementation of a helper's earlier native path. + +The old operation on an encoded input gives `P A x`; the intended encoded +operation gives `A P x`. The existing first-bank defect is `-H K a`, of +rank `h=rank(H)`. The question here is the **complete two-bank** defect, +then the exact amount of linear information needed by an additive repair. + +## 2. General rank and kernel + +The credited block multiplication gives + +``` +E = P A - A P = [ -HK 0 ] + [ KJ(D-I)-H KH ]. +``` + +Let `j=n-h`, and let `B0` be the endomorphism `J(D-I)J` restricted to +`im(J)`. Put `r=rank(B0)`. Then + +``` +ker(E) = { (a,b) : Ha=Hb=0 and J(D-I)J a=0 }, +rank(E) = 2h+r. (1) +``` + +To prove this, the top equation `HK a=0` gives `Ha=0`, since K is +invertible and commutes with H. Apply H to the bottom equation: its first +term vanishes because `HKJ=0`, and `Ha=0` leaves `KHb=0`. Hence `Hb=0`. +The remaining bottom equation is exactly `KJ(D-I)Ja=0`, equivalent to +`B0 a=0`. Conversely these three conditions make both blocks zero. +The kernel dimension is `(j-r)+j`; subtracting it from `2n` proves (1). +Invertibility of D is unnecessary for this defect statement. + +For a one-port check, take `H=T=I` and `D=-I`. Then +`A=[0 1;-1 1]`, `E=[-1 0;-1 1]` and the eventual repair is +`R=[3 -1;1 0]`. The first-bank error has rank one, while E and R-I +have rank two. This is the smallest instance of the two-bank distinction. + +This also explains a boundary on the specialization below. If the pivot +block differs from identity by rank one, the complete defect rank increases +by one. A zero first-bank response on a pivot input alone is insufficient. + +## 3. Actual P104 specialization + +Use the ordered ports J followed by N, with original pivot indices +`(0,1,3,6,22,31,93,103)`, `|J|=8`, `|N|=96`. Here J denotes both the +pivot set and its projection, according to context. PR3954's scalar block is + +``` +D = [ I8 B ], H = diag(0_8,I_96), + [ B^t B^t B-I96 ] +D^-1 = [ -11 I8 B ], BB^t = 12 I8. + [ B^t -I96 ] +``` + +The checker reconstructs the roots and Gram matrix from the pinned P104 +fixture and verifies these premises. Thus `J(D-I)J=0`. For arbitrary +invertible physical T preserving J/N, including the port-dependent native +charts, (1) gives + +``` +rank(E) = 192d, +ker(E) = { (a_J,0_N,b_J,0_N) }, dim ker(E)=16d. (2) +``` + +The 72 unchanged helper arrays add `72d` to the kernel and zero to the +rank: the complete 280-array boundary has kernel dimension `88d`. + +A concrete minor makes the lower bound especially transparent. Project +the two output banks onto their N ports and restrict the inputs to their +two N banks. The resulting `192d` square matrix is + +``` +[ -K_N 0 ] +[ -I K_N ]. (3) +``` + +It is invertible. The 16 pivot input arrays are annihilated, establishing +the matching upper bound without any numerical rank tolerance. The lower +pivot output still contains `K_J B a_N`; it is not omitted from the replay. + +The kernel in (2) uses the input *before* A. It must not be confused with +the coordinates already stored in the literal encoded banks. For an +encoded input `z=A x`, unchanged P is correct exactly when + +``` +z_first,N=0, z_second,N=B^t z_first,J. +``` + +The second pivot bank and all borrowed helpers are arbitrary. This follows +by applying A to (2). The same conditions hold after P, because its added +term on the N bank is zero on this subspace. + +Removing Pi gives the ordered commutator `[-H 0; K(D-I) H]`. +For this D its kernel instead has `a_N=0` and `b_N=-K_N B^t a_J`, +with both pivot inputs free. It has the same rank 192d but a different +kernel. Thus a successful rank comparison alone cannot bind the literal +slot convention; the checker also compares every endpoint coefficient. + +## 4. Changed consumer: arbitrary linear summaries + +Now allow a much more permissive repair than a uniform bank multiplier. +After the old operation, let `s=P A x`. Require the repaired state to be +`A P x`, with every physical bank and helper returned at this boundary. +Since D is invertible, the unique full-state linear repair is + +``` +R = A P A^-1 P^-1, +R-I = -E A^-1 P^-1, rank(R-I)=192d. (4) +``` + +The changed consumer receives an input-independent linear summary `U s` +in `k` arrays, and its *entire additive increment* is a linear function +`V U s`. The unchanged s is retained as the identity passthrough. Thus its +contract is `R(s)=s+VUs`. Rank submultiplicativity and (4) imply + +``` +192d = rank(R-I) <= rank(U) <= kd, so k >= 192. (5) +``` + +This bound even grants free formation and communication of U and ignores +scratch restoration costs. Requiring a real arbitrary-dirty implementation +cannot weaken it. It is a lower bound on the total linear information +factoring the increment, **not on simultaneous scratch storage**, native +child rank, scalar operations or native calls. Streaming with repeated +reads, a changed producer, changed output equivalence, or nonlinear coding +needs its own model. There is no claim that an arbitrary in-place algorithm +needs 192 live scratch arrays. + +The information bound is sharp algebraically. Write the two current banks +as `(r,w)`, and form exactly two 96-array summaries + +``` +v = r_N, e = w_N-B^t r_J, +u = (K_N+T_N)v-e. +``` + +Then the complete repair is + +``` +r'_J = r_J, +r'_N = r_N + K_N u, +w'_J = w_J - K_J B u, +w'_N = w_N + u-K_N v, (6) +helpers' = helpers. +``` + +Indeed, set `(a,b)=A^-1 P^-1(r,w)`. Direct inversion using the displayed +D^-1 gives `a_N=u` and `b_N=v`. The complete defect on these coordinates +is `(-K_N u, K_J B u, -u+K_N v)` on the respective nonzero output blocks. +Subtracting it proves (6). Operator order is retained throughout; in +particular `K_J B` is not changed to `B K_N`. Both summaries can range +independently over all 192 arrays (set `r_J=0`), and the increment map in +(6) is injective on them, consistent with (5). + +Equations (4)--(6) are a factorization of a uniquely forced map, not an +affordable physical implementation. A borrowed summary register starts +with independent dirt eta: replacing `Us` by `Us+eta` adds `V eta`. +Here V is injective, so nonzero eta necessarily contaminates the endpoint. +Any dirty echo or cleanup must cancel that contribution and be priced. +The 72 existing helpers are untouched in (6), but they do not automatically +provide 192 clean summaries. No clean-scratch hypothesis is hidden in the +claim of arbitrary dirty *existing-helper* restoration. + +## 5. Complete finite scope + +The retained physical port label p has chart +`T_p=((1+i)I+(1-i)X_p)/2`. In the character basis its eigenvalue is +`i^(ell.p)` and K's is `i^(-ell.p)`. For a fixed nonzero row-fiber label q +in the 81-bit tensor address, the chart labels are `p tensor q`. Contraction +of a tensor character with q maps onto every `ell in F2^9`, each with +`2^72` preimages. To see surjectivity, choose a coordinate where q is one +and place ell in that column, with all other columns zero. + +The checker therefore covers all distinct address-character blocks of one +full physical row fiber by the 512 nine-bit ell values, without materializing +`2^81` addresses. For each value it literally composes `P A` and `A P` on +all 208 data and 72 dirty basis inputs and applies (6) to the former. Basis +values are scaled by four to keep this exact finite calculation in Gaussian +integers; no rounding occurs. The written linear proof covers arbitrary +payloads, all address dimensions and arbitrary invertible T satisfying the +stated premise. It is not an inference from finitely many sampled payloads. + +`algebra.py` imports no main checker. Dense rational multiplication and +Gaussian elimination test (1) for all 512 binary 3-by-3 D matrices and +all four coordinate projections H. A two-dimensional address fixture has +noncommuting T blocks and `DT != TD`; the literal defect and the full repair +both have rank eight. Altering one pivot entry raises the rank to nine. +Dropping `HT=TH` invalidates the simplified literal formula; dropping +idempotence invalidates the slot involution. These are corroborating finite +checks of the written proof, not independent human or formal-kernel review. + +## 6. Cost decision + +The complete boundary obligations are explicit: + +| Obligation | Status | +| --- | --- | +| Literal action on both banks, including pivot outputs | Proved by (1)--(6); exact finite replay | +| Identity on 72 independently dirty existing helpers | Proved for this boundary extension and replayed | +| Minimum information for the linear-summary increment | Exactly 192 arrays in the relaxed algebraic model | +| Summary formation, a chronological producer and legal chart access | Unknown physical implementation | +| New scratch initialization, dirty compensation and eventual restoration | Unknown physical implementation | +| Native chart conversions, owners, scalar passes, routing, storage, precision | Additional unpriced obligations | +| Complete supplier moment and all-size admission | Not supplied | + +The inherited PR3954 scaffold already fails its favorable rank-mass gate +by 44,096 before extra boundary costs; that predecessor rejection is not +new evidence here. We make no recursive invoice edit, so the signed-invoice +preflight has no new pair of complete invoices to compare. In particular, +192 information arrays cannot be entered as 192 native tariff units. +Stop after the information obligation. A future changed producer/consumer +must supply a new favorable complete bill before construction expansion. diff --git a/research/p104-literal-repair-rank/README.md b/research/p104-literal-repair-rank/README.md new file mode 100644 index 0000000000..85bf0e3084 --- /dev/null +++ b/research/p104-literal-repair-rank/README.md @@ -0,0 +1,157 @@ +# P104 literal correction needs 192 arrays of repair information + +The full error from applying the old correction to PR3954's literal encoded +P104 banks has rank **192d**, where one array has complex dimension d. Its +data kernel has dimension **16d**. Extending both maps by identity on all +72 arbitrary dirty helpers leaves rank 192d and gives kernel dimension 88d. + +This strengthens the previously stated **first-bank** rank 96d to the full +two-bank boundary. It also answers a changed consumer question: any additive +repair whose entire increment factors through k array-sized linear summaries +needs **k >= 192**, even when those summaries are granted for free. An +explicit algebraic factorization attains 192. This is a scoped proof and +source-bound finite audit, not a native-call count, scratch-space lower bound, +complete physical correction, supplier or new kappa. + +## Boundary and result + +Retain the predecessor notation + +``` +P=[I 0; T^-1 I], L=[D HT; 0 I], Pi=[I-H H; H I-H], A=Pi L. +``` + +The wrong order gives `PAx`; the required order is `APx`. With `H^2=H`, +`HT=TH`, and invertible T, the complete defect E has the exact formula + +``` +rank(PA-AP) = 2 rank(H) + rank((I-H)(D-I)(I-H)). +``` + +The last rank is restricted to the complementary subspace, equivalently +computed in the whole space with zeros elsewhere. For the actual P104 +pivot block `D_JJ=I_8`, it vanishes. The two N-bank input/output submatrix +is invertible: + +``` +[ -T_N^-1 0 ] +[ -I T_N^-1 ]. +``` + +Every pivot input column is zero in E. The 16-dimensional data kernel is +therefore exact, not just a dimension count from the first output bank. +In pre-encoding coordinates it consists of inputs supported on the pivot +ports in both banks. In already encoded coordinates the equivalent condition +is `first_N=0, second_N=B^t first_J`; these are different coordinates. + +The unique repair after the wrong operation is `R=APA^-1P^-1`. Thus +`rank(R-I)=192d`. If `R(s)=s+VUs`, the summary Us must have dimension at +least 192d. [PROOF.md](PROOF.md) supplies the kernel proof, a sharp explicit +summary factorization, dirty-state implications and the complete obligation +ledger. No commutation of D with T is assumed. + +## Exact evidence + +The new checker imports no predecessor executable. It reconstructs the 120 +doubled E8 representatives, removes the two pinned frames, orders the 104 +ports, reconstructs B and D, and binds the retained physical labels to every +Gram pairing. It checks all **512 phase patterns**, executing both operation +orders on **280 basis inputs each: 143,360 columns**. It checks the full +defect, its explicit invertible minor, the complete kernel, the postprocessor +and every dirty return. This covers all distinct character blocks of a fixed +nonzero physical row fiber; the proof explains the tensor contraction. + +[RESULT.json](RESULT.json) stores every pattern's exact-column digest and +the complete typed receipt. Digests summarize already compared coefficients; +they do not replace operator comparisons. Default replay is read-only. + +A separate dense rational checker, [algebra.py](algebra.py), tests all 2,048 +combinations of a binary 3-by-3 D and a coordinate projection H. Its larger +address-block fixture uses noncommuting chart blocks and checks the full +repair directly. Changing one pivot entry raises its rank from eight to nine. +Dropping the H/T commutation or projection hypothesis fails the appropriate +identity. + +Seven further semantic controls reject a missing second-bank defect, a +first-bank-only repair, a rank-preserving sign error, the same-rank ordered +encoding in place of the literal slots, leaked or erased helper dirt, and +an uncancelled dirty summary. A dense Gaussian fixture includes nonzero +independent helper contents; every one of the 192 summary-dirt basis +directions has a nonzero output response. These are separate implementations in one +AI-assisted session; no independent human or proof-kernel review is claimed. + +## Reproduce + +Python 3.12, standard library only, from the repository root: + +```sh +python3 -B scripts/research_package.py --package research/p104-literal-repair-rank --check-only +python3 -B scripts/research_package.py --package research/p104-literal-repair-rank +``` + +The registered replay runs the main check normally and under `-O`, followed +by the separate algebra check. Direct commands also work in a source-complete +Git-free export: + +```sh +python3 -I -W error -B research/p104-literal-repair-rank/verify.py +python3 -I -O -W error -B research/p104-literal-repair-rank/algebra.py +``` + +The main marker is +`PASS_P104_LITERAL_REPAIR_RANK rank=192 data_kernel=16 dirty_helpers=72 characters=512 columns=143360 summary_arrays=192 controls=7 no_new_kappa`. +`verify.py --emit` prints a newly derived receipt without modifying files. +Source SHA256 and Git blob IDs are checked before and after the main replay. + +## Decision and limits + +Task `p104-side-correction`, scope **refined**, priority revision 7; base +`32890bc5de034ab8fc93ac88ead7279a6a416d04`. The question follows the literal +slot finding in [discussion #1166](https://github.com/CrocSwap/integer-mult-bounds/discussions/1166#discussioncomment-19057044) +and its original [adjacent-pair handoff](https://github.com/CrocSwap/integer-mult-bounds/discussions/1166#discussioncomment-19034066). +The claim is in [discussion #1166](https://github.com/CrocSwap/integer-mult-bounds/discussions/1166#discussioncomment-19173713). +The changed consumer admits arbitrary linear summaries instead of only a +uniform scalar repair. Predecessor block identities and the old first-bank +defect retain their credit; the complete rank, kernel and sharp summary +contract are the addition. + +**Narrow and stop.** The existing 44,096-excess scaffold remains rejected. +We neither convert information rank into a recursive tariff nor propose a +changed paid profile. Summary production, new scratch restoration, actual +chart availability, native phase lowering, owners, physical scalar/movement +costs, precision, the complete moment and all-size admission remain open. +The 72-helper identity extension does not execute their earlier native +completion. No full original-word or selected cold replay, Lean or Docker +run is part of this audit. The selected record remains unchanged. + +## Open next questions + +Can a concrete caller use the two summaries in PROOF.md's equation (6) +without paying for a full decode? First name the physical chart, owner, +available value and dirty state for `r_N` and `w_N-B^t r_J`, then derive the +complete acquisition, output and restoration bill. This determines whether +the algebraic factorization is physically useful. An actual prepared caller +and a newly favorable full budget are blockers; the unchanged failed +scaffold does not justify a further implementation search. Repeating the +rank calculation or adding phase patterns cannot resolve those obligations. + +## Credit + +Chris R / Clear1nsight's PR3954, head +`f1e2839819959cd0534d008be91ed5b79ec55a6a`, supplies the physical encoding, +slot swap, correction, pivot block and failed scaffold, following +PR3882/3940/3943. Unpaidmoon's PR4133, head +`88666f1dee93fbd85b31fd5d6f91a219e111b5f4`, supplies the general literal +commutator and uniform-scalar obstruction. PR4370 concerns the different +helper-completion gate; PR4339 corrects the different fiber-tag orientation. +Neither is claimed as new coverage here. + +Retain Rohan Arun / PR1972, Chafik Boukhalfa / PR1991, Adam Gall / PR1940, +Josie Elliston / PR1071, and the E8, native, Clifford and caller contributors +credited by the pinned sources. The previous commdata2338 P104 acquisition, +matching, native transport and precision contributions have different scopes. +Rank-nullity and linear factorization are standard tools; only their stated +complete-boundary application and checking are new here. + +Prepared for commdata2338 (@commdata2338), with substantial OpenAI Codex assistance. +New work is Apache-2.0. No independent human review is claimed. diff --git a/research/p104-literal-repair-rank/RESULT.json b/research/p104-literal-repair-rank/RESULT.json new file mode 100644 index 0000000000..00ae458f83 --- /dev/null +++ b/research/p104-literal-repair-rank/RESULT.json @@ -0,0 +1,3121 @@ +{ + "B_nonzero_entries": 384, + "characters": 512, + "columns_per_character": 280, + "complete_kernel_per_address": 88, + "data_kernel_per_address": 16, + "dirty_helpers": 72, + "dirty_summary_directions_checked": 192, + "literal_columns": 143360, + "minimum_linear_summary_arrays": 192, + "minor_determinant_counts": { + "1": 512 + }, + "new_kappa": false, + "nonpivot_ports": 96, + "patterns": [ + { + "character": 0, + "defect_sha256": "cd4aff9144dafb96027a277b5981d432b64cbea21763f08e7a117ccf2f0ca57f", + "minor_determinant": 1, + "odd_N_charts": 0 + }, + { + "character": 1, + "defect_sha256": "a855744cd8d25c1d79be8015cbb16760c0d98daac842b79960af8e0c1df62632", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 2, + "defect_sha256": "64a6e5489ca14cd9fb7a94de462a8234942c9960677a56fed5aae6bdc7a60a51", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 3, + "defect_sha256": "f805e288108feb9256cd54d31ae7143ac1e4f230733264740d8cd9aa36ca8c46", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 4, + "defect_sha256": "fd317f5dddfe5494e139466ac3ebd0b729343b4283052fc2d23280c56b45a6b4", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 5, + "defect_sha256": "a7f934b2fa515c244c1d9288dbd638d2a8b1e2b51bd98aded22883e8a36de6d5", + "minor_determinant": 1, + "odd_N_charts": 60 + }, + { + "character": 6, + "defect_sha256": "ca3daa2ef9d25a8eff8f9ce50eecd8b13dbc36f3326914bf0f331fd0ba572ee8", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 7, + "defect_sha256": "d44abcbb15f807cce2aed64515609704b80f39a2a46d90421086f0341a5c813e", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 8, + "defect_sha256": "d2f70232075b8261579e8119fe4a1a6bfc2698138915291ae7f1b952f16a23ba", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 9, + "defect_sha256": "631c8561a61cfb49ab391d82c0524c242077165b1fdec295087b918b984bdb36", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 10, + "defect_sha256": "90eb9294f333ef4553c105bf7ac5a1d7b4063d99a6214c77b4c312e175cbba20", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 11, + "defect_sha256": "a9ccff73ea18690d4dec5510acc026ca8590963230c504e2e3e6094c64d698bc", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 12, + "defect_sha256": "9bf84cff54df361ba295563a844016b2e3215fad4867c2cc5506630e22046882", + "minor_determinant": 1, + "odd_N_charts": 56 + }, + { + "character": 13, + "defect_sha256": "3dc01c2afb374a831be798329cc6626495e07809fe3f1846fecaa61cac59b04b", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 14, + "defect_sha256": "a513c717ed3ba40ca0ad718f0968692c2c11d2d1dbc38094f4237ee193088c0c", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 15, + "defect_sha256": "eb105cfa7292498300fc44091f1995e47da27b7062596adf4b4adae28f9e148e", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 16, + "defect_sha256": "f0e6129a5c4ae9001de241aac03395b9528260b12c8e1598a72c58c2ea0b1173", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 17, + "defect_sha256": "b70c0208753de070f20a7c5161f0e46f3383eadae6588dc0fd788e641d6a3cf8", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 18, + "defect_sha256": "a2fffb760c63194d6234196ed528cecd48abf178fc1333978ae4ea6319981c51", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 19, + "defect_sha256": "07feefed0156326383f73c43313e2c0a5913f4c1eccd068c6e254f3faeba66fc", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 20, + "defect_sha256": "ac59ecf5e66a138f3eb5fff5af93d1b39db834abb6e89cf4426d2cbc3c9dcc72", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 21, + "defect_sha256": "ca3d6138679a38f41a7caea8878bf0820501607c2c510f373f6b934bc133bf2e", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 22, + "defect_sha256": "81e54870c68b44b9d2878e49d0858ff6c1240ef290c019d3f2e736b9dc411296", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 23, + "defect_sha256": "6c8e06d6a3eae2aa3cad3f7095a16b9b57a66e5c191d5f0b053543aa50ee2b7b", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 24, + "defect_sha256": "918ce5151339566bb19fd0f8cd6f925af470941bd73e800a909368be5c6c95a8", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 25, + "defect_sha256": "e67bcedcc6e07b9337de3df7d09061effa31f229069734b51c4805883bdca69e", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 26, + "defect_sha256": "7bff31bb026be6ce9a3ad55384410e6dffb31eda02e8af9d24d615a255c83905", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 27, + "defect_sha256": "ac9eba2784947b481b71212bfc1e57e3d6072cd38c5ceffd5df98d2f45cbe6ec", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 28, + "defect_sha256": "b15346ff0a5d366bddbe1f972d90c25567bfb91b18898a52d0a84f8c784eafe3", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 29, + "defect_sha256": "cdd244bc9b1bf74718898548574d839ec81e8d6a31d5ac8f2a784bfa15206e24", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 30, + "defect_sha256": "8ef80ffb7cb75a5d07a41ed3de2ea990fa1f5f3c4489fcace17d4f4d11bd6dc0", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 31, + "defect_sha256": "842d18d90740eb66660a8179140cb28304d27cbcaf8c7849e908872052ca27f2", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 32, + "defect_sha256": "0af719140d804a65e1ba02b98dad9e790c5f270c56ab39f4857b713ea02ad915", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 33, + "defect_sha256": "464c745c779746d208372425ce0353d2b9c0af630223a8815dbb205adad97c63", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 34, + "defect_sha256": "b93295a54a8191baa3a03d551577cd6cc47fa36eca727b5f98721fd2e0cf19ee", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 35, + "defect_sha256": "aed572fc8a49ffdb7bf0bd389f29c49265c439b32062da9c257bbcc96481b76a", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 36, + "defect_sha256": "0b08cdb7bef87d03b23fefb06867ad30b758885db1590d25a343c705809aee3f", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 37, + "defect_sha256": "2add97ce9183bd62ebf7373d109bf16681a99cf16ea0ac37b84515b2d5f92f51", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 38, + "defect_sha256": "547e78191ca0d530b9104d57ee5fb5357fe9cb61f5896946bf4d69247be4350d", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 39, + "defect_sha256": "e4cb0506d06cc913612964bed617ac2b73fba2b85f3d90e02f7902dfbe036e45", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 40, + "defect_sha256": "75ac9b40b80bd15e00f182c30a6484130507f30c31a09faa4cf46875e36711e8", + "minor_determinant": 1, + "odd_N_charts": 60 + }, + { + "character": 41, + "defect_sha256": "59dd29cd7ba4560bab0cd74e0639e92b444e0667984d2bd57819bce41fb3dfdf", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 42, + "defect_sha256": "04704544e7489af4e1a288f953ec4a4e55e716e6d135d2490f5bc5fefb6efb9a", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 43, + "defect_sha256": "a7a91a29f2d02c01dcdc8eaa0fb6a26a6793b33dbafe0b339ab2313121dc72ed", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 44, + "defect_sha256": "e682da915c14cc1cf26d91730d27185d1aebffe8d371bc2f97cc7d035522202e", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 45, + "defect_sha256": "0177ec07d1e673e9446fb733852b82b20009109cb23e7bc9b2c3596e820faeac", + "minor_determinant": 1, + "odd_N_charts": 60 + }, + { + "character": 46, + "defect_sha256": "0509cda7d0cd017ef10b62fb6c9754c0df2c9d8264c33d9db434204f43812312", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 47, + "defect_sha256": "91b5e02f22af964b9366f3e4c6f80a44b21e231c8c040c4df900acf4e702331e", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 48, + "defect_sha256": "64148cc9c9a412a248883d2aa1467533cf6c485f75a628509ac988ecfe20f018", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 49, + "defect_sha256": "886992d0c76d415bf6c8e240b1279544ccf9a0ba1d9d7bb9155bcab69f305900", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 50, + "defect_sha256": "5cf873b19fb838707cc7d46765db1abd4f3ba74369aff98924a4828411e05f06", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 51, + "defect_sha256": "0512fabcd23aed1190c9a0043203c5c5b2bc6d31dcf130abb79cebe712e2feb0", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 52, + "defect_sha256": "bbd63531e5471d8d167a48766f32b31d7f46e3f487cc802106155fe8ae37faf4", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 53, + "defect_sha256": "d9d1f2dbf54fae010c8139e304d4689893dc4d889bf0eb0ac1fa405bf74c7ba5", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 54, + "defect_sha256": "80648ea0257083eca74c8348851e28a1175c1f1c3863a61abd5eb924253b73d4", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 55, + "defect_sha256": "9057436496d5c3271c966f7f785e547adc058b2c3356840261935bc589427ac2", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 56, + "defect_sha256": "acde2fdc6bf94ecc1a25bc2bc0b611bc4d9fd9dabbc2fc2ec85ea5611d36efee", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 57, + "defect_sha256": "14cf6005beb1f76450ae5767beef5ff8428cb1a80671c251477b5bf42fc5dfd2", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 58, + "defect_sha256": "b1f3eb9b40bc595c2cd00d48c07ba760ddd5969606570e8d4b578c965622b98d", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 59, + "defect_sha256": "e9041fed1a1482eafad7d9f20fd9c362e8c61d534b924cdf7e1052265bb451e6", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 60, + "defect_sha256": "c707c3eab950b8cd87bc8a95703d61dde6d1a88b00412a0ce197808ae05ae2a3", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 61, + "defect_sha256": "fd3f14cbaf05cec3bd584d7937248d2bbabbf08f95bed2c4904bdcf6290c5dad", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 62, + "defect_sha256": "1c96e1f6223ca86b874cc9c9243d5b490e274c81754c279230413cca18e262a7", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 63, + "defect_sha256": "050caa69909d7f599768c069cb2f866b3025f16e019ac1a71805f7f46a9f7ea6", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 64, + "defect_sha256": "1af6abeec034bc270dabcf86619544c63f6868bf0c6e0a684b83d5cd2a31e743", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 65, + "defect_sha256": "9fa9f338933c61faed3dcf493b1ef7d24e84240be746366903307771d601770f", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 66, + "defect_sha256": "74a9df4962a4635f44021c0bf0cb7c43399107f71d0b5805c236fa23f70917e4", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 67, + "defect_sha256": "f698cbe3edb031fe5c29565ca066a2dada8752bf9e2f77ca1221c4cc22b5d33c", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 68, + "defect_sha256": "ccfc7ad1e54c112c4c2941ca0cfd878bc6a8c48d5daea180d304910ed0b652b0", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 69, + "defect_sha256": "095903ca6635e6c7d8a59a880a30b315e9bad3002e25782ccf19557f149c5566", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 70, + "defect_sha256": "6c5b2249c676738594c910122df50f893430fb1be085e284bec0a6b2d866a4a2", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 71, + "defect_sha256": "d3fc8c5cbb2461cb3bd39e9696852dceb36b09b936dff8960b56a8b900512efd", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 72, + "defect_sha256": "0626816fde90a9df5f39442a586234f6087716334082bdba6ded91070d2a86d1", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 73, + "defect_sha256": "8d6b6a8099ef643c3c172b4df8adafc4f1bfe904891bf995ce956abe77754204", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 74, + "defect_sha256": "b068a6e066a0fccbcfa35f4e45da8d184f159441623fe8ead7510ac3fc5e8467", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 75, + "defect_sha256": "9f22d1acde9021ca1b9d331f2fd2b68de8526eb88244c399ba28c33f9cd1b652", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 76, + "defect_sha256": "614b1cec68de67c76f1d9c1c78ffff0227a95c8efcc65ab870b431381133fa3c", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 77, + "defect_sha256": "e5cf97e0fc5c4fcafe18bacd877022730bb7728ffa73228a6f7019c534475c24", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 78, + "defect_sha256": "336ca72e8f44e1ce9b82e63755287c006d255893c86f5a5fe7670001b6517c12", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 79, + "defect_sha256": "a3afcb9d5179ecc5617270975a9024f4d3f0e55cf2b56c5f673d4ce30320d2e1", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 80, + "defect_sha256": "7bf7c6493121d764cfefd4f847162c761ca47168c1d4cc4933afc2a2ee763dd9", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 81, + "defect_sha256": "7ef9a2ecf67d5778063858c69b95d1fd46f82069fe0425ca53756d61c1e8d43e", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 82, + "defect_sha256": "f8213fe11afcb327841813f0ab1485c9e4ef62df846f5469431f8f779c98cafb", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 83, + "defect_sha256": "33af6b5c6c962c8a933a2eb809843ff818f5adbdd74c76db6c9cd9d396f42644", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 84, + "defect_sha256": "04aa1ada4e00ee92fa35818b296adbe4bed2d687f5fcafb49a88043ec6b0816a", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 85, + "defect_sha256": "3661f923a2da2c1cc8ea465a059070515b65a93fca157275bb7600b31403c4c8", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 86, + "defect_sha256": "5059ce4eab0f278b2c948ebbf68e96002f72723967c7a8399ed569a39c8a088f", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 87, + "defect_sha256": "a32bbc30f51db6cfa72c1a99d39749bae96e7891ceab5f47c8ea70e87ba9b9e6", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 88, + "defect_sha256": "d955e5c9dc3f430b92d4fbc053279231a94f1ed721cdbd64fbe9c715f24e5034", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 89, + "defect_sha256": "c126cbd46e028f5622ddb58197a4edaa9117dac71b085934b955f70646b61811", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 90, + "defect_sha256": "7206fe08fe5fcfecebf168a03eb603e786c6a454dff5c4024dbdbf353a3c10ab", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 91, + "defect_sha256": "37df9f80107a60617a1ac7649c7fdd076130ec2ea5e2f62389d79f04b69ee574", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 92, + "defect_sha256": "2f4ace0d63c0922a009482ec6b5cea69744889088237b41e39cbcee415c39a19", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 93, + "defect_sha256": "3a5df6022b30c76e02d5e19f3821bbea1d1303c8e161bd742aaa8d44e25ff16c", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 94, + "defect_sha256": "21da480f05a8abb2dec4fbaa16955b8dd57c987fc4238e18fea40a04b9d17649", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 95, + "defect_sha256": "d675bd2d1f7f5ddfd9f9f14f62cc1fa95b68de6fa6517ba05e5f8597b2ebe558", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 96, + "defect_sha256": "a5b39b17d9dbc72fe13dcbde086200fd1bc7b0fc5ad0210edf5086ae852957f2", + "minor_determinant": 1, + "odd_N_charts": 56 + }, + { + "character": 97, + "defect_sha256": "b0543bdd0dcacf60805ff6b5f891fb1fdc311ac8a7e01ba5f53fc8ac4fd62500", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 98, + "defect_sha256": "f005fc145d789cd56fe30d52e4eb9217b1f482728e851a085f5fbb7d35b06ed2", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 99, + "defect_sha256": "aca2da8b336e02f23033e8f129e24db24ce55bf4befb5a2c524b976a9cd29fdc", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 100, + "defect_sha256": "01146c0a713c25f70c3044503aeb5e7aeed55357bdcc6d9b3053785b035b1660", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 101, + "defect_sha256": "5b3f0cea9f10692cac518bb54098964877584024aafe7b3ebb7549feb1642524", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 102, + "defect_sha256": "2ab23c2ee45a91a3bef8f897ad59842ee6d8c20e551ff436f700999de62e6140", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 103, + "defect_sha256": "38f45102768c1eb9435da546fe5f2e58ee259f46bbaa3dea2ad1585d9cb40e05", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 104, + "defect_sha256": "f4c3e3a8c03c42ae9d518e82c3eb92b68fedc8d17024882cb22b93d5822546a2", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 105, + "defect_sha256": "502010c97eef275fa3cee13615e5b30be07ce3faf244dfc3bdf42b6ebee7a0d9", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 106, + "defect_sha256": "ee8876e982b13f79246efb890fe01f840c34b804db6c9e001466711e99753c63", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 107, + "defect_sha256": "d43d764fa47b24c43f699047af61645451126fb2e071d2abc17da1d22f8e6443", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 108, + "defect_sha256": "2a6dd501729b22723892097ddbaec46a7801e6e05f34a1f6c0495de795393a8d", + "minor_determinant": 1, + "odd_N_charts": 56 + }, + { + "character": 109, + "defect_sha256": "df8e2527618aa49a4431dde3aeb11f9fc790cdcbb2a206b80c43ff55752e6492", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 110, + "defect_sha256": "de4af9aa01f63ec528bf903e6780e85848fdbcb91f645dc015297a159f1f71ec", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 111, + "defect_sha256": "948b63ea0808219a21032f49e3d96b59e18fc627029987e0f19be5a0868d65e1", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 112, + "defect_sha256": "8ea7f31ab93d6b75283d7e9f89a71d7b0bc78b35ee1355c3c6c62ad70b0b6eac", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 113, + "defect_sha256": "925f672b80a4e371c23e458f99e63333b0a9888a0af766b4b23abb31415495db", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 114, + "defect_sha256": "fef1e69d1af135ca79b7e98cd5225267fb93b40a32aabb9385ae60b2e03fab33", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 115, + "defect_sha256": "8ba6e1ad88636390fa65d9b3d5458ac1968ee7d9ab52a52a525a4b83b379e1be", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 116, + "defect_sha256": "d72a3d554ed0cc54ba570997e5f6b22e0560c3d9fcb555cdb249a3ae618fad3c", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 117, + "defect_sha256": "b03ef4f298ecc80adcb461bc944abefbe2d4f948fcccc5932857ddceb9cc31bd", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 118, + "defect_sha256": "96d136350803a85981ab959fb6d4ca451f33357900ada97fa52757c556d45552", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 119, + "defect_sha256": "a2ace81dbf71cf948574441258b6051cdab7db87a9dc90b90026632af242a734", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 120, + "defect_sha256": "e7bfc2b44472f8fae00bff9b282203b1d2c07d8c56ae9f0df9a7311ac8a3525d", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 121, + "defect_sha256": "83e102f0efde4ace3908ccae3d336b60bb2eba2afe827f3833e4929749319e7d", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 122, + "defect_sha256": "f27a2a37284027b2f82313f59e677aad750a63ea0a4ad2ad0f092ea2cb85b423", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 123, + "defect_sha256": "5d008b42e65bb108805611cc49a05e2137297fbaee2b4fdc18717daca16ac889", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 124, + "defect_sha256": "9d7e5ff67032cd160514e7856fa1ba1109e8932fb4cc03e228c149ac47ee8f7c", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 125, + "defect_sha256": "8ffc2c944cfd489c413850f5676a45dadcaa82fe54189b01fe6087526706fbca", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 126, + "defect_sha256": "7baf4f7bd07fcc4fc66fe2dd38baa5638e5d65172553ab145ff9c527f532fa58", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 127, + "defect_sha256": "3bf0b80a720c6f4a8c3d0ee41637108fe3c84955111d44b23fff4e630d8e4b05", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 128, + "defect_sha256": "a4e79ecc489d0e9bd5e7a9398d16d70b105739049ec5cfa506f19ad61645a175", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 129, + "defect_sha256": "db3c12a4c51314d9b2280a60fb265af994af8577c3c29849085eaefe8d246a55", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 130, + "defect_sha256": "bbd8e1e021be9cb433da9769a9b4439b9e3696654d65801141f012b80d575621", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 131, + "defect_sha256": "222d3b89b7f24705beccdd0a9f0bd20c184a5924e8bc7c4f8c50fc9dce56f0ac", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 132, + "defect_sha256": "28ac7d03f52442d7b3b1cda184a509898cc8b17015a42b2a8d2a5c6ddb0f6fa9", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 133, + "defect_sha256": "67668a8464e54b5f90c3c48bd42d709bba71cdcf9304e4e72c663f373656a364", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 134, + "defect_sha256": "b3fb9e294137f6aaf298429efa28804c51f0bf00a38460b920a8fff2730893e4", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 135, + "defect_sha256": "4509f4a4ecedc831b049b041c7b8762105ede172102e3a9879d449e998f3cf8e", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 136, + "defect_sha256": "fe08bfb0808515f217050a6007c3a40a4d8a80ed8dd0e67e02416eb3e7be0258", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 137, + "defect_sha256": "8b69eeca3e02977ed5ebdb87fa2a2d7f163f76ce80aa884388975a9aa15c5249", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 138, + "defect_sha256": "fa960b961265fb21fb1cdfe690dfd2b4df266bb0abcd864af96bd3f4c6ec995b", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 139, + "defect_sha256": "da69ff68d16c45df4a8639b542ce529848281eb8489e75221c2a0f001e3123b6", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 140, + "defect_sha256": "d67aff7e4db49945f98d46d16d3d16b7635dd4416d7565a1842db3b8b9b8de0c", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 141, + "defect_sha256": "aeea5013caaba1c81b90b4f083a2365f4c2dd38cd70ebd39e936f16e31a4d47e", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 142, + "defect_sha256": "4624d0502584369a53266c1986292d56f5c7c8d711104dacb4adf13ccab8a09d", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 143, + "defect_sha256": "c2f356cf62968bcaaab018cc5c8dd4e20ef7fb309f5c2d5c554fd25c1ccb7379", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 144, + "defect_sha256": "771b868db5ad0aaad648ccf4cf4215ddacb4d1e8199ebb38373290d0ea981942", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 145, + "defect_sha256": "8407555197e9aa0fbf5518d18502787931d9f9a5a5578fe90aa19fcaa54a1041", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 146, + "defect_sha256": "cf11fcea56be7831ccfb2b6f7de5938ee8aac3085d038d067fb4428778b399ef", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 147, + "defect_sha256": "454d4f0efa9faf147dfdf7ef8ddb224886ba0b26dae303edc68bd5a72a1c9934", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 148, + "defect_sha256": "83427ea23fd38d65bb604bf72a30143f4523160f7c9f96b7ca73b089e4305d47", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 149, + "defect_sha256": "51de5e645b91a4d67ec3d38c384beb6fe4326d4c5c61e2f8c3ab3b5cd775332e", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 150, + "defect_sha256": "6bc94f10a6276efce889b21e9cbe4cfca81eaa904f586b0c4736ef4a633a60d6", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 151, + "defect_sha256": "66d79f9294c0aefd74cecba82097df0cb23139e28c6b7abc957cd0b8888be314", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 152, + "defect_sha256": "7d4a751b222bad0c1194fa2e358e7f72fcb90afcdba4addfd838c9a53f2c2e53", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 153, + "defect_sha256": "421ff1ece29ce73e575c5af191ce61b3a84f22119ad03ab269ec9910c4ac8ffa", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 154, + "defect_sha256": "dd228e46fd2f15d2a7abdaf82cab731bf2473982a660ac44178d847bdd612a64", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 155, + "defect_sha256": "673b99a792b40657a15c6be63d351b9c34d259570a77e6cc009e6efe83ee35a4", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 156, + "defect_sha256": "e9f25d043eeccc0dd7d0660e3587c3f63c3f146435dd9bc18408ec6d65089e09", + "minor_determinant": 1, + "odd_N_charts": 56 + }, + { + "character": 157, + "defect_sha256": "dc44c266351fc8681a1fc33b4b7000ae7d871d64f42dcfa7f48d44f49b8deb54", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 158, + "defect_sha256": "8bab1b8b1d40aa301cb2ab1f2afdf6166fac11f95ed9d9c9ed97a3cdbc9af404", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 159, + "defect_sha256": "58e871064e43e3aacfdaf1a3e394bf670d6def2ad7751e447226d78b01ccfb39", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 160, + "defect_sha256": "e602ee27788d5f10ba4ba193ec5afbf674208a247c4e3c1b3483db1e8e606d63", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 161, + "defect_sha256": "2342f7120e4c6add99969d14784cda73f3c607c76489bdd345f9e848f3b74781", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 162, + "defect_sha256": "0cdf1c2a58592b7024f08e0a6bd2a0dcbcb14ae29e6606c56ee1aa1714c72da2", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 163, + "defect_sha256": "d33b65fa14ba188b811c419f1c3863e480de9ce73ce58c57db6c4c168ca4d736", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 164, + "defect_sha256": "7c77d6808f8065109bff8567376c509f817e7a03787e8f58d9ceee3e3a2028f1", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 165, + "defect_sha256": "a691b06d2c01362d85def165b84d401b89aeb0a9b398b96b2cac4d16a92d78dc", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 166, + "defect_sha256": "6aea9d449e41b6792a301f6d77f360e1fcab1b8d1be57bb40066d8b2da1e75f7", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 167, + "defect_sha256": "3ef153de71a6a03bac1416ac885e8db536730e24b7b0a110e798ce7aaaa00f6f", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 168, + "defect_sha256": "117e14c01d5d68de53440437c9cc5ceaa289f72514f76641846e7e4245c50065", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 169, + "defect_sha256": "118929bba6fef1bed53b6b589073885dcbe734bf62a50431192b1d03daf8a7e9", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 170, + "defect_sha256": "07b8e956e44cb0907a595089dda0c2c9c5893c6405ab62dd20cb700c78ab25ba", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 171, + "defect_sha256": "d08d430d6bfd4d6487158a17daabacf997a80bc954d8928e8e55459e3626b3d5", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 172, + "defect_sha256": "9d53ebd615200b8f83b3a46a6cce11b0b04d19ace4e2eab80e991412bd901edf", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 173, + "defect_sha256": "da10ee7e4a38d1217ee1ba1db98493836ecf012fa26f067abab2504cfbde0b13", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 174, + "defect_sha256": "8548c0b282fadac6b5330e2d4201086837eb4317e3c5af24c995526d7d6507be", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 175, + "defect_sha256": "31c8846026c46a6498457299d3f5069c32249d5bed4d2210ff7e79b4f9ff9c7b", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 176, + "defect_sha256": "f4da76e611c4f71c08e8b5b299f8b4760e90d295bed66b6553d444d133b28782", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 177, + "defect_sha256": "0808975d7b4c63d66534c20f208b6ca2951ffd52b6bb551b7b2ff09d9eb93557", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 178, + "defect_sha256": "4b08718d398ba943cb8aa4dc1c247d84e530b790a0d2803ec8285d0acbc2f06b", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 179, + "defect_sha256": "ca22454797a9c0a24e4d5be344d39045997f8cb0ac5ae011f4f83eedf594192e", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 180, + "defect_sha256": "a45f11334dd4eb4415f1a12e84aed1f25d287aba50685b82765f25bbf9213747", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 181, + "defect_sha256": "b4a1a97b8dc24024d871ea2c0e2cf869b2491af4edcb72f0d9629e839bbf5de5", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 182, + "defect_sha256": "6e505042a5c40be90fdf25a267b5ec3a2cbccd13938a2be80bc3c853d1aefb01", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 183, + "defect_sha256": "66e50b5cb2a8b680b8ef3a64307bd783269c8b39f3e594ab52799b3c12fae5d1", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 184, + "defect_sha256": "12586c192e942a89d23250df951f26d6f89d2b63c0628b635e548c85999af530", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 185, + "defect_sha256": "684627f8dfce1ce54e9c75eca371656d438ef8e1d9c0763769ac96760314839d", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 186, + "defect_sha256": "7edffb65f9e15cc9ad7e8f6732d32a0a341c07b8db452bd1072eb5f404c98ed7", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 187, + "defect_sha256": "974dbe5d15d864c9917923524dbc5a6b78c2f5706edba3ff373f6f1dca3104ae", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 188, + "defect_sha256": "1d55dc812ad94b8b5f1ea60cb9555a5439e73a0535541d7f3aa180b4ee9699cd", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 189, + "defect_sha256": "7f9f6b545c727464d84283af269b928688c771019f3f803d8d1f675a3ca5143c", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 190, + "defect_sha256": "200c29966d11be93f46363b958fc632feab3a6a0986b02994f38a1f10acaa84e", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 191, + "defect_sha256": "dec6ccfd16b0d0e8ac7b1c3dd13328fa7781ad8a0254a8e8ad93732dae4807d5", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 192, + "defect_sha256": "eaa265fdcb30ba828700722f12590eb38d5ca490e73f34a831179a56ba10f6f0", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 193, + "defect_sha256": "adcdd2cdc1a8f50bd1803bb5d3b73d8dced07ee22084bd751359dfff75bcfef6", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 194, + "defect_sha256": "af5d8851e9822cb71f7002619e6fdd3ffc996ac762c6b2ae83e044a9a02606f3", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 195, + "defect_sha256": "75c5cb53cd0c6e5cc807c96e2709f1ad1522824bbe2b80b5d64ad8c2c2e45af1", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 196, + "defect_sha256": "2285af0579b0a73b509094cecbdf1c45062648edcc4eb995edc22f3b4485b1a7", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 197, + "defect_sha256": "831b9730cdb83f7e752180894c7d53a75bd1bb3b8d23722eaa6bf1c23cfc6f17", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 198, + "defect_sha256": "36d6e2a3b2a15ca1dba11b2849e45e0551ab08453b40f01b8c8abf4f9191e372", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 199, + "defect_sha256": "205e6a5a5a662b8b5287d6adbbc1813c59f641b152fe79e8434f1291ca620fe5", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 200, + "defect_sha256": "bea13b1f561cfcbfc9986a5d0dfac2501a2aa68f1ef5700eeae17d44d21867f9", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 201, + "defect_sha256": "8b72079e65b613b40b57e96bfc7e462255823a25d72c4e1d915a2f35d18f903d", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 202, + "defect_sha256": "608056b80c11c2f96547e087ad4b6a7c377e151c5a68fbc4b6a2c4f99c8c08cf", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 203, + "defect_sha256": "e79ccd7f58ddf4164a4a3fd59c21e86ab9f37c12d596d187de8bd220e7f2c0ce", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 204, + "defect_sha256": "126f21109a733704d2f135ac285fc71f7c0306dbaddf7a5c7add27cec1d7bcf2", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 205, + "defect_sha256": "141051c7a0c9eb1976166969b5c4261d9b58b6a238439f1efaab30018ae05713", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 206, + "defect_sha256": "7ec123bf38967bcd609aae75cccc2b2222297075eca75d25d5c6a2866f1bf7c4", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 207, + "defect_sha256": "2704c05183e7b6476bbf88f57a2e188a584bf78b64a9cc73196396ec89d2dc79", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 208, + "defect_sha256": "87642c9ef3cb09f67f54a67ffb6b0885a200b7e86108981a3f9905cccc7cc8ad", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 209, + "defect_sha256": "49d235e49192f40e7da5337ef6f2e1d6ab94a7f3c8d9f534f86a5d27631ca56e", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 210, + "defect_sha256": "dc5c5a132737e1d318175e5eb5c2431368b0b518115bcb6ba02e6d38a1598deb", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 211, + "defect_sha256": "9d8aa91740004972867144eba2e6483bb525415ddb30bba81b4a35338330a5b0", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 212, + "defect_sha256": "73d2507e90b1e1b3a2c061bf1f23ea29b6314f8f97093c3c653a6c5831d1f04a", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 213, + "defect_sha256": "d9b679e1bf70f2741453ee2c9ca279f1d0eed2f6db8ad745503261ddf46cf145", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 214, + "defect_sha256": "b1f43aabf7297a0ae50c51fc59aa1133d4c5a0e7e8d5950191a8629fb5fca41e", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 215, + "defect_sha256": "5fff201996ce5a77bc26f269f6675ed3a9a2ad17739f1e66aa0ff372b04bd3d5", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 216, + "defect_sha256": "eb3502ed0d4108e9d10e49df8a6cc022ca83a389766ea51a2e9aa4d790ff19e6", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 217, + "defect_sha256": "759d6cb54a79febcf14ae12a4b2f8b1cba3f4bf1152373b8a43ffa7014498c9a", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 218, + "defect_sha256": "7a42b3086159534c4e054136387e0fab7b4d87bba50f2d48db74fcdb792719eb", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 219, + "defect_sha256": "43775524274a5cb0e5604a233e14120b8162aabeab478292f47bfcf4ba2d57e6", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 220, + "defect_sha256": "a8999cbf7560650382cb20f33c1f3712ae4d2aaba97369a0c9ce7793aa208863", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 221, + "defect_sha256": "5431c4780274f9a085647baf8d398a8859e32bc41b7655bbe9c5eb6c6e22f414", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 222, + "defect_sha256": "fad40ae84aaefb3c31b169703076b0ab356482a40f4ae43067a7fc96b53123b8", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 223, + "defect_sha256": "478e33f0db13f70a31f629dcd67ff0bf86a82afe0423df7a8e7eb20397323771", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 224, + "defect_sha256": "e2a683f9d2acd5b5e1565d36419877d9d4968c39f7928f85e535fb8e55d7a496", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 225, + "defect_sha256": "9102a74cf06c1dbb714534eb3b87bb2d11a652696b48185250e78b03aa1f6892", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 226, + "defect_sha256": "9a6a9631c0f475d760246a7303080e87bbb88f44d4c2629f4af002c5da9877a9", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 227, + "defect_sha256": "b92c222636983241d673bb8db72bf271339c365e92de213ec7a0e84f18d84a67", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 228, + "defect_sha256": "dbd01c1a84f4b60b65283e8a0e44dde0f8c65bb78e33955548c6caed6f169e0d", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 229, + "defect_sha256": "373d866e3c6fe76e339820c0decf2ac19410cc9ffd4373e9742f153eb06c1f27", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 230, + "defect_sha256": "f3ba364f779e8dcae736b5c26d730cc0f003714415ab8460086655c11ffc8779", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 231, + "defect_sha256": "f3ae6881c81e662b42e40e0c8c8f8c348b95e4c7fc23d55d224d8789756666f6", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 232, + "defect_sha256": "eeae868b81ecf8ba83f8ca6b6ac39a26fd0ef4b0c20558c930bc0687bb55cc6c", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 233, + "defect_sha256": "134abda8641018e8b88847d54e3674c2a260f4477104f670202bc0c7cf7fe551", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 234, + "defect_sha256": "43b6a0411968621df3c0fa857d7b570004b8d8c5dd2e16c5765187a6c55ce0be", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 235, + "defect_sha256": "6824b6f34477dafaddb282526eb0b4c16393f9e1530546270bfdbb37f3995dd6", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 236, + "defect_sha256": "4996ab8d95e15e429987c93b76d9bad172c2a31df090d018a196a310ac8122c9", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 237, + "defect_sha256": "af34466c978980a105cb4885e9b2fd07d55ac2bd126c2fce33999506be01cdce", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 238, + "defect_sha256": "8741267cbbfbcaa24a5d41dc30033818a1948e5a1aadcd0d47a9b29ef5e27120", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 239, + "defect_sha256": "5a3687ce2206b65c53c84b65c6ed37c4f7ad2fc7807fb6efccbffeb4f98fc6b4", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 240, + "defect_sha256": "dbf61f96a84e2deef6691867cd7cc460542de827357da4a1598fc1104322bcf2", + "minor_determinant": 1, + "odd_N_charts": 56 + }, + { + "character": 241, + "defect_sha256": "5266a81296da3c80dd4dc466d0d6128d588185c99f5c79514f00a27c32d12d36", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 242, + "defect_sha256": "51d567990156eacc002551d6f36c45e15839f499a66b919c36bdce4a5a497a13", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 243, + "defect_sha256": "c2439690d68cbbe345ba763be88d580396f3edb0d0b41e665ab113f124297350", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 244, + "defect_sha256": "8e75b654d5faf7b2298a2bf6c28fa54815944d78a07244b95a0a8a3c87f53a4f", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 245, + "defect_sha256": "5ebefd52ad5958d00abc8edd06fe57f131b06ea1e585533d23179cdea5c9570f", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 246, + "defect_sha256": "7fc9fbe54c75999c632d6fd24a016cd84cb1a4ae375cc40a44c52b796037327a", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 247, + "defect_sha256": "3040e54a4f937520e5ce616b731ca6007734015c24f5a4f3bebf106035677d0b", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 248, + "defect_sha256": "bea551cd0c344d6cefc6f78ee8c4e52588d6d3476bb8656e68b0ae807840c118", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 249, + "defect_sha256": "4cf4d38282c684fa6210923a06cd0db680bd0841700913d590615ab6577b5b95", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 250, + "defect_sha256": "88f5ca08d852d2ee1278d2e9b06e6855fbc4998a3be82905a950a860f983222f", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 251, + "defect_sha256": "87fa538cfc8102ab1b0a28a87142a2748d25dd53bcd67eb8fd7e85dee73b31cd", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 252, + "defect_sha256": "fcb247b3a96b4b2793d5543fef105882a2ef7ce2d1cad919e6f8809db8dda045", + "minor_determinant": 1, + "odd_N_charts": 56 + }, + { + "character": 253, + "defect_sha256": "56334e57ff6da8e4c60e0119a5d5f90d09a1f5277fd7de32ca9408f9d47bfc3b", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 254, + "defect_sha256": "7aed6bc54cf7cff1b94db93a53f0f63516d81581283052ac68c6e5c1976af89f", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 255, + "defect_sha256": "66521a64fc98d2846fcc4da00c7397278b79bfbda578e4d526202ee1f9581415", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 256, + "defect_sha256": "e681daa12ff6bd0b3febb279ed75e851871edb4ae071809dd917df0a5b6788cb", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 257, + "defect_sha256": "fb2dd27a6437538aad55afbb0968239ce9012432d3ea9a5bdb6ef41b2f94ff0c", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 258, + "defect_sha256": "151f52e8fda4133d56a371b5a9ed0eb6949bfed50a10bb86e58a9bf23d5a1000", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 259, + "defect_sha256": "f1d18b5fb3f769dcadda5dc57a0e8f2845b5973eed6c55c45b505d98529b9093", + "minor_determinant": 1, + "odd_N_charts": 40 + }, + { + "character": 260, + "defect_sha256": "e3935586fe799a0f9db6b141ce7a6469ce18e0b442cfe695ba004e49488bcada", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 261, + "defect_sha256": "a80fe3fc2c50200674df42d8801f364a9ebfea386c42ab475cd11628e2e0c945", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 262, + "defect_sha256": "214c29e5063b208e3bb50c2f87d96007bd8b4e475bed8a1b1cfd85299dcf747c", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 263, + "defect_sha256": "5d55dc444c8632d6b7bdbe64228debeae7586cf4a5aa82950dc7cb5dc8d203f7", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 264, + "defect_sha256": "89b54c7d2e17b111b709e3a9601c47ada618031f781273b41d9f229f9ae689c6", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 265, + "defect_sha256": "bef790343d008543596a16dbd9ebc12c04c7393ca8e9927229b7848729662ba1", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 266, + "defect_sha256": "761aab2cee7b693bf2f09129999c88a207e021d2282f0f0bb1b0392a3c6809be", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 267, + "defect_sha256": "74b2a2e03da1a788b9d7570aa24c8e1907f3d2903bcb9cc0871988e1c301f78c", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 268, + "defect_sha256": "3c1edd57e2ba98364d92ab2b60be6b3413531c568f5c25cafdedb121a60331a3", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 269, + "defect_sha256": "ac156b66dfc025764b19a022dfb34fd68cc0722c67a5e787537fe5491a3a46b8", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 270, + "defect_sha256": "dadbfae64ff165d12b42be922a3c6821c27ba5da4ac8e4a164045bdb30302cdc", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 271, + "defect_sha256": "02877cba05f24e6dbce162bd08b2c182f2fb6087b0d2af23509af291de391ffc", + "minor_determinant": 1, + "odd_N_charts": 40 + }, + { + "character": 272, + "defect_sha256": "f74f47181ecef28093100ee1007c0d9be15a0003fdf36268738ea0f19cbe350c", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 273, + "defect_sha256": "4d5a9600d9943cd64fc3d30f2974b5553a52c0ee6bd1dff6592890ff24c90b51", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 274, + "defect_sha256": "c7e71f133ddbdce1f911c269d3d8858630ac0bdf7b56cf1335a77234c64d3013", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 275, + "defect_sha256": "6b8510af6178290b66d2bb2941f74b96526aec2e4078de8bceff47ed49889759", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 276, + "defect_sha256": "a7827c84ba4d9712096a8724bc8e3fd66ad5212d63ec9e1fca817b4092b727e6", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 277, + "defect_sha256": "e27905a87187e2a3023c24a245b0faf37f4121213cdc18c554d9a24b5db02e59", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 278, + "defect_sha256": "84a025143b3db6bfe761b4ef3560ed536a326e817dcc044c2b29277c2e25a72c", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 279, + "defect_sha256": "22d56d999d74c341947808e4c326e8a8e30590b9b2361bad9006e814fafa2585", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 280, + "defect_sha256": "5f74ac69d503eb364b5184617541d034b40af60fbac1d6f300884d0465bcfa80", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 281, + "defect_sha256": "bbf4db38adfc255ef68e2f46ce9577d4f996f02e536b7557023a2094bda0d8c7", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 282, + "defect_sha256": "345d61a99bdb2534a2fbb4a9e835d8b95073ef6cf75b0ada6a7e35df76e08bac", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 283, + "defect_sha256": "9b59648798cd4d52b0b70d7ee27fe3b9da1e510be9b922ca0d29a78bb8a01815", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 284, + "defect_sha256": "86abd4f94f35c0c339db46394051d1a35433c69f0f659e514710b8ecce5b5fac", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 285, + "defect_sha256": "757da041a121c0057683c8a3e6073ae64cacb4fc8681a0dcdb1290d4adbc4428", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 286, + "defect_sha256": "2d4df23f22abe968ed0a6a2a181437833a76466497941444030b3b62b2a622b2", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 287, + "defect_sha256": "d457692adf425920bd63feb3b3a70f064c8b29745c39089f88eda00b70fe5fea", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 288, + "defect_sha256": "449ff7cd73ad7e06fc6a286bd92d49ae14e0175468f8cbf3aea51491ca06616e", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 289, + "defect_sha256": "df6a03be6617e15671367ab4389c0b4ea04cab77e067ac71da386e99bf306016", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 290, + "defect_sha256": "8b105fa736097a44fbc49419319d379e617503bb6dcb49e602906aedc8fcc0fb", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 291, + "defect_sha256": "9dec1568884115047f0342f82b12c861a8d56d9f859291809726305cf4f69649", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 292, + "defect_sha256": "a5c28559df0df7489a0121ea593e729d2dfb619f2d61dd1bfdcc31891829e7e6", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 293, + "defect_sha256": "f2f49ee255daf3050102046c9928ac8ca21e1599445de58412c4cdd1442323c7", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 294, + "defect_sha256": "f2763630d4b572f467bb88bd8aa7fffd6dd5404a2d6424bc52cfbd8549f65594", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 295, + "defect_sha256": "64c9667c77435e16710cdc94dd0f152ae59e52ec09fc643e48fe845aba1ec2eb", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 296, + "defect_sha256": "ec90129b11d0ecf6fef3ee42289b4b48af549bae7a213e05b07ef803223cf2e4", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 297, + "defect_sha256": "3924a4b0f786dd0675f25fd2894c9b1ff06a51cabfafbd76d155f82799ea1173", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 298, + "defect_sha256": "dc2f2e14001d6369b73f0f011287eb70d198917ef912eb5a8f4217b4981b5f5e", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 299, + "defect_sha256": "f82d419d7607a255026b09fc49af5d84cd784be8f1b19b1a9a468b2338327a4a", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 300, + "defect_sha256": "1bf4bd8eabf610a997127dd404d9f9a9c5c072600dc5fffc09bf742978d7f209", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 301, + "defect_sha256": "d07c9b472250bff6a750781e46e8e67fe929a6838ab4b16ec4dd5c15cf7cd8e1", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 302, + "defect_sha256": "05cb2d9b8f38aead8bfbcdeec5546b47b5f2b5ce88a938f791ef10e64f6cbc16", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 303, + "defect_sha256": "e7e026429b664f0043fe2d02e05045108d2009f9f87fdc7faed98e1a180f0b29", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 304, + "defect_sha256": "0925dec4cc1209b20dda8f2a82781cf6078a2df5b0d1c2c44782921ad4fa4381", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 305, + "defect_sha256": "3ba424f1ad9e4c6407138e5938a653f825741cde370a740e16413d7d0e3801df", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 306, + "defect_sha256": "0b17e39aa6f003d69a52abfb87ddbbfd92c62130d9ccd1fb9b6308b034971137", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 307, + "defect_sha256": "bdd7859c1d1467828c88c2fe011a49d1ea6ea3ff6defb398a1e034f66004ff22", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 308, + "defect_sha256": "a41ec1acad014ce1f8ce0c1b61be23245f38f2883efc3f04253d13768e6f486a", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 309, + "defect_sha256": "4fd4084e3410cee596ddc5077a7743c6356360ebf1035c12ac5182007c7d8a2b", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 310, + "defect_sha256": "2cce8b48d5702fe2d0a58f52ddd8fcfb96225af66eb14e4ac35d0eca94ad4d3b", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 311, + "defect_sha256": "0a7dd855d7782645105a2886adbd72ef5ba159e6dffa570761dd0bb6ee14fc09", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 312, + "defect_sha256": "0ffb4755ffcad6cd8e629a87c824722dacb49ddfbe7d0f146cc436325ece3721", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 313, + "defect_sha256": "b410a05b728d8a49d9d81ed72f117fc214b96bc50c24d8e8c6d93565bcecece7", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 314, + "defect_sha256": "ef7c1e5cf92dd121ddfb41886d0f9624984c71db7f08bc4622a68beb66585d27", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 315, + "defect_sha256": "b2be4554d77cc5cf7045dee71e54af8b64dc2cb6d1da6a04cbced1cf98826ca7", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 316, + "defect_sha256": "754a212a0a5cbfe427279ca424ed8338b19534c888417e92443ba748d8e184b0", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 317, + "defect_sha256": "d4ab9afcd8a9b6d4553cfab3092b5dd66d926502695accbc0320135bf7dd2ff7", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 318, + "defect_sha256": "d97948a441a76fa82d626de4af222b8d616daf33d9e21c24225c404ae84d2e01", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 319, + "defect_sha256": "a72c0235f7391b2e95ba754b0b76a9882391bfc9e38b6e2308ea534e3489b927", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 320, + "defect_sha256": "763f344363be20d8ba968bf27f0b521ff4d4f9334744e348a24b7468d29bd316", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 321, + "defect_sha256": "7cf32288d4dc4508c943e3d01dd4fd4455043ffb5e4d792a6c0d59279663ce0f", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 322, + "defect_sha256": "44a591ce4b13b2ed658488a0d31b1021197d8208ce72f0dbe41347ebbb858383", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 323, + "defect_sha256": "b4191dbf8f850c86a9a09c54a5f80b210dafbb79964efccae47878a854b0d506", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 324, + "defect_sha256": "7596717acfd231633458b9ba44df8aa1f31a39674dd1b2c3e31366635eaf7340", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 325, + "defect_sha256": "ddbcc6a8276e23e7117349165cb1bd3f913d3189b9739ddf0381051af1c26af9", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 326, + "defect_sha256": "b966a8aac189b7bfdf232dbb7bce5c17e636d4daae440fda2367f61015af4ac5", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 327, + "defect_sha256": "6f9aed8e0eb78141edb1a1dc1bdd02b5bac9bd7a4275a1bc5311e8907a9293c8", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 328, + "defect_sha256": "f81187cf0bd3d47d93f047bb17b1af259ba6c9231181f3c21aad5e31c1aac2ec", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 329, + "defect_sha256": "667fb949d6411f450b069e07b02579afdf3847eabf94a0c314569e32806a9faf", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 330, + "defect_sha256": "dc91948aa0295eb886dc409a745ce788cfdbd0706f9b4030e9d041a5b5bae45f", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 331, + "defect_sha256": "a38231b80b9a1dbed83e2b2fea9ff7ca019f01502b11bafd9c6dfc4724e2456f", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 332, + "defect_sha256": "74c392a556364021d19d154ef68e39c26d8c90106b8edbc3419d909c60300888", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 333, + "defect_sha256": "ce15607cda6c18fc595aac545c86d66299fc14d2c5b66ca103e6aab569176f90", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 334, + "defect_sha256": "07761ccffe22dfdb4e39896a2506ad293531dd9060c70006835d6d2052ec5c3a", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 335, + "defect_sha256": "db88499f58fd2535d6f0767233b6633404c3f53b5898c0fd5c7743279e3995a5", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 336, + "defect_sha256": "16fecede63c6af099da22ce478026abb9665e89f4ae0b77f1b681d046d656e78", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 337, + "defect_sha256": "c0e1d4a347f0e9f9a1c2d8c79e5e0318b6a3dd92a3d43b3f5b3995da76bdd5ec", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 338, + "defect_sha256": "f1ac7ed81e66a759901f7a3245bbf0a9c19dc3df4719bed3f68842c36ec30691", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 339, + "defect_sha256": "8f24576b66f2253fe5709e8c548e527b1778df647549d033e624ccc3e44e6a6d", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 340, + "defect_sha256": "540b2ece2654403e7b779b497ff68a8d877e23ba6d4f911213b7723071f494e0", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 341, + "defect_sha256": "9c6b34f1e28dc9f45b8b2ad64a661b6aedbabc33eaeae91b399b1ef396302f28", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 342, + "defect_sha256": "206e02c15dd5e17c80343ed63fff5e11d903e66b8118966e0beb4a6aed99e8a3", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 343, + "defect_sha256": "869ec945283c02fbbbeac07fc78a32582b098fe77f00aedf98bbc853f6e2af00", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 344, + "defect_sha256": "d74086656ff455b4fdfe9c014c24a52d9e54f6e2511a00603f7f063c0f4891c5", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 345, + "defect_sha256": "e02c5d0c66041e8d8d80f48ac8b05cbe0ce6825a18e31e7ce764a54df50295a1", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 346, + "defect_sha256": "663f606e14bbe0b51ac14c0909da51da10e17fd3025ef67d0c80da2d983f652d", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 347, + "defect_sha256": "5ef306ee5aea98afebc8611c6c6ec3c3ecd1166e2f800dcb53bf2545734d9621", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 348, + "defect_sha256": "c3825a0721c6ca095fd439d21b044b11ceeef32d53484daf5634d123f620b99a", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 349, + "defect_sha256": "1e7ee95e9f3f05f329fb43f50ca4dd80021edb99d774cb2ff6ded79e31daf049", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 350, + "defect_sha256": "195a72ab6d70f8c00c7fec79fe7dfb6cbf858de0ab382bd9b4bbaa0c9ac0b226", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 351, + "defect_sha256": "92a068c6e2396b364d98d90e7809b00eccd5873e655ed8af6fceb065e6e242bb", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 352, + "defect_sha256": "e5a263be95c0cce37758d79621c25bc7ea0685650032ca700be26685ef80bef9", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 353, + "defect_sha256": "6333439b3e2725d587afdaa9d092157170d6da77ce76e977bf2fee9c0806fa0a", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 354, + "defect_sha256": "0507bac574c39fa26917805fbda567880efcd3e95b98802a944116ea3883e01a", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 355, + "defect_sha256": "c6dc7f7a0f10ed2e17b4913600174aed766a89e4494883fdf1a3b825b0c660de", + "minor_determinant": 1, + "odd_N_charts": 40 + }, + { + "character": 356, + "defect_sha256": "8bc9061ed4018e771f3e90cc2e8735b6b85acffd3ac38bdfd2d91e954158724f", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 357, + "defect_sha256": "8b3cdca52f0596c0672b90ff0320d4237795da9c0c40fb4f4256643a77912f4d", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 358, + "defect_sha256": "60dfe3ca22b63eb2039bf8b27e38ac2fe5de1715c6f117fbbf27b52763238ebc", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 359, + "defect_sha256": "e4be875b012a2576dc17e52a7335a419ea06a212df8590895e92b4b1fbb76831", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 360, + "defect_sha256": "9fa3325e7c72d3a7c398ad39b635c274270fe9a4f5ac113015d4a6d0e80d7c6a", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 361, + "defect_sha256": "d86ae50adfb93f99201fe10cdbf17a947744a4158442ebd29bc45d304d922295", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 362, + "defect_sha256": "7cf09a566e076776ab2771da299e9d8f3276b9ae931959642a1b9deec7ebb044", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 363, + "defect_sha256": "7dac451dce7786b8a9801384bdb8c6a0c87131af0c5196b8cde129c86ac3f5a6", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 364, + "defect_sha256": "8dcc20101f86428b25295064d69c860b87c4c4df79250ff42630d64df4236a22", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 365, + "defect_sha256": "13cd41b635d11564b9499a668fb7dcbeabfb396a36e7199f6ae6639b70b457db", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 366, + "defect_sha256": "010ab9abe6e3ae4576c3e0991d0b4ad0a17747cdbf6daf182b571315b7d763fb", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 367, + "defect_sha256": "6a737df2093b3d575b07e772933b67f5105fd43ed16f2f127b6098c0a90c7f71", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 368, + "defect_sha256": "9c869df8a63d4bbe43b75d8ab657044e93e15bbda60adcae9aa8fccfc871a04e", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 369, + "defect_sha256": "19458cc81b7cdd941de3b7d67c9e4086fee2a9db0b496f3ec496a4b3a9ef79b1", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 370, + "defect_sha256": "6971bb70bb149b7237c92532cab7f3830fcaf1c9384f0ad1e0355c57b90076a1", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 371, + "defect_sha256": "f445080312af52bd031e6b0cb52587e99aaba6148bfd306814ae33455bccb76c", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 372, + "defect_sha256": "05d6145e25f022d117c734f6604dee0247513702456ddb6ba96c9e6a6e55e7f2", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 373, + "defect_sha256": "376381a44b14521ceb776b3709c2ecc954ae936210f8ddac7a9b66608c24ac09", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 374, + "defect_sha256": "55db00844a82665b1c634414804537b243bc955371fa28d0f4f2e19fafdab509", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 375, + "defect_sha256": "45fa275a299682acbf3bbb927562b316b6b62f544d611a61358b154cb226ce88", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 376, + "defect_sha256": "75bd80e3606ae7cd97bf2204a9ec986e1133e34c8ccd28e204bfa21a0d419b93", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 377, + "defect_sha256": "7a2b32a3e1b99694dc74f3dd1164a5dfa464bffd245a819256e9c01d873be35e", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 378, + "defect_sha256": "646656143934860d94089ac03a800636c546c47d6f522f730569690dd2c16acf", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 379, + "defect_sha256": "e50e82a6baa9907a503f88fcf6fca7c965556d70c8a46676a75ca700511260a1", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 380, + "defect_sha256": "48353b3a7d559a28471b33a8642412d67e0e3d6f73b1d358b1a15412e52b5f62", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 381, + "defect_sha256": "128fbcb54310563215c04bb161d46c7ad143e2ed3055a70f7ee5da95ea385d8f", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 382, + "defect_sha256": "ae6031e41e5b134dd87b73dd926d44e0a6363cc01ba1cabced9569fbcf92baf1", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 383, + "defect_sha256": "e671759700ced2d144aa0bac7270d8161de2ec36956d2168eff177f0371e50e8", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 384, + "defect_sha256": "b8340c57fe61568a0fbb449decb901217832fa84a8dd1307cd7e018e62017517", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 385, + "defect_sha256": "7f91f8b67a518c3bb6fcb84a5fe9faaa1ab551a96e2665c08d102729a48ce6dd", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 386, + "defect_sha256": "da7862de8396803903c838c3b1e24c888c5e16c1dc7668956f43faacd52dd31d", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 387, + "defect_sha256": "9e45b0459af9cb70d40552828e2fd58219a43f0d7840b6def787b450ca5edd87", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 388, + "defect_sha256": "6de5d7aeb8194f80bb431571eba323a951201970806ee06e8db9430eb1532edd", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 389, + "defect_sha256": "8c126a5ca697a86cfc71885c8ff4806bbd6b21df44fca923ca382e8a09715c83", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 390, + "defect_sha256": "e2db3e13d3a188e1dfe8eb466ac31ffd383715a2240dd380a09769d3bc8509e8", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 391, + "defect_sha256": "4587c753124b888b51a8b0fff4ead1e264bc868dd4f6d6566277b36fe7f1e685", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 392, + "defect_sha256": "758c1710983e216eadb8128e2a0a74377521c478627d8357a30060301f2db019", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 393, + "defect_sha256": "ccb236e8f88806dbf65b548f7497835a377664be1fc8ef7c5a2af9d702d30bf3", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 394, + "defect_sha256": "e4357475605f16beb5632f539bbeccb463565b89819a94b528c3d3fe389ff55f", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 395, + "defect_sha256": "8ed1e3700ed43e68dc585a47ebec61bda0aafd8ab7941c293f8a3ca7670075f5", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 396, + "defect_sha256": "f50a63ccab0502ad31a52c6f572fdedad670cd0aa6e4fefd96bcb9d2d2df139c", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 397, + "defect_sha256": "6d95114fac9c6a5182c6107b216f8165c0b5c1102c84863926f9107ee4e76114", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 398, + "defect_sha256": "c9eb562efcdd3dbe9a2119e7934620f5bc32e67a7513cfee047289f514eb0c56", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 399, + "defect_sha256": "9e2150cbef1b96ba3f8ed394e21a550a011f9f5188716b85b9aea593e1940bbc", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 400, + "defect_sha256": "52869276b9d41a80a4e5d17f26a87629c990e0755d6c006b6a9b643adbf8cfab", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 401, + "defect_sha256": "79982779062c8df657b87b276152993bb8f111d579301f1bb44a9de8203c2fa6", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 402, + "defect_sha256": "dfbc89c18d13a457a8ceda88a8dcd2727a38eceb9a4b51116638403a30e9546c", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 403, + "defect_sha256": "466f2fe24bd0e1a89740646c683623448355c02a68aeab4b00b1c72d57bbae29", + "minor_determinant": 1, + "odd_N_charts": 40 + }, + { + "character": 404, + "defect_sha256": "782a7db04f88f0912a49315ccf3033d14b018c00bfec0fc813925250cd164c56", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 405, + "defect_sha256": "5e303b8363dad899e950f13e71767663f0ecff243d234372230d3aa9854f8bee", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 406, + "defect_sha256": "65010d2d0e072eaa13ffd4c5d31835210143f804c105e572776248b1921ad3b6", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 407, + "defect_sha256": "86983acf4c48ebfa756e97614261d69167bd141268b3d004ed06642476665398", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 408, + "defect_sha256": "8266c26621534b81e09d29b637290d4f6802ef30881e721b7520d83ab4824db7", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 409, + "defect_sha256": "a1c534af8605e563fb6b714131d421b8b2af8bf9432dc892368d90bfe8b6dbc7", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 410, + "defect_sha256": "e7d7ab9446341e8dfceb2816388f45e0370982ee63d2eb513c15a57e393961f9", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 411, + "defect_sha256": "9e500f36b3638d8db31965ed88429011e8d2fb9a0a2af19131b616c8376a8942", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 412, + "defect_sha256": "08f708a2fa604280bed7885891606ad73f0e9eff2db95d78a557f081d4669045", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 413, + "defect_sha256": "6102049e57bd5eb9cf1a0a9b0aec80765df7decf5de1e7f55ff24b1a8cbe0d4b", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 414, + "defect_sha256": "661998918902d42d055e84f6df348b081354b29002d95fbfd0d6566b67fd65a7", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 415, + "defect_sha256": "515c1c60960f5742eb0c86ec7e99f4254aaa2487dab777fb53da31367750a3d5", + "minor_determinant": 1, + "odd_N_charts": 40 + }, + { + "character": 416, + "defect_sha256": "8c91920dd71d7c7d31b9e5cbbb700692890c56b4e0832d28def90aa501561a88", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 417, + "defect_sha256": "58b7cc642f649a2739cfb7b6ffcba4738011a0355fc3fd6306b9e9954b8caa78", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 418, + "defect_sha256": "94f96e6e5ff9d13394a9997737d1fad4db0fe36fb3c397e7bfb7a26b9ede9ad4", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 419, + "defect_sha256": "80cc0f4b82027e9844b2460056b5a781c17fe4fb86a4c112cf270f89e9639364", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 420, + "defect_sha256": "0942ad27755f9a12ce1b37476ff00e740b9c3592a3436a2959923ee9e7d65c06", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 421, + "defect_sha256": "09645bd2c44f5e1aecf152ebb1724c87d958b6b170b193442280975dbdc03cf6", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 422, + "defect_sha256": "4acf8343c91cdbf0556c1616e19975e111535084ec254d1c63e2aee077a1de5f", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 423, + "defect_sha256": "3ad8c1f4e2e196088b668b69d999c56e0f56550a6f55bd138388c3e8295678db", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 424, + "defect_sha256": "85f24ddca49719d81d2b06b542a7947f1b8e6762a2861973d9bd5d595bc121a1", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 425, + "defect_sha256": "c9d4c26f785d37497949295a05a2272b3037a1550144835531ed63ba0cec4da6", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 426, + "defect_sha256": "a38ba19f9f85a6678e375759d2d2bbbfcc6d4f28d303f9983557ae650aaf057b", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 427, + "defect_sha256": "ef798c297e0b433068da140eabe69c9f28d8241ce87f13211b92e7f759905eaf", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 428, + "defect_sha256": "61b0f0a6fde6616ceef9b8cecaa7b79f15e00d5066e2684ef1143cf51dc01bf1", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 429, + "defect_sha256": "058ce579a7fcc32e4ca156405c9b276fee5befb4f2a3d15182ad5c4f957d7604", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 430, + "defect_sha256": "409d687d3a0027394f9055ec610037f492b30888cd6c249fcae4d9439c877cd1", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 431, + "defect_sha256": "8ee59c0b19494dfb37f15531555846a3f998d2bc8c61ede7af19fef00d3175cc", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 432, + "defect_sha256": "274fe88ae87d2c1382e0c9adb6d8ab84297ae9c5519e904afb7642c3e2c071f8", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 433, + "defect_sha256": "a2dd6df2fd448c077751b7b6931e6dd30bb8ad8870fc5cc8c0b4b435b4c351d1", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 434, + "defect_sha256": "024722161339a5606c1aa1116ee238e2102e7cb35a14aff97d195b2bb72f4e61", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 435, + "defect_sha256": "c5a1d83b9c60f8bc72e421ce8a54fcdf658b97e4fd2fa125b4511751d5113974", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 436, + "defect_sha256": "ae644068e7412f037d8792b3522d31824d7c5d5d417cbfbce1accd531e2f8b1d", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 437, + "defect_sha256": "c52dcb31721e136378a7ff21b4b378483585dc2bd4c912f4480b3c83be6f0d86", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 438, + "defect_sha256": "b73a4271d24cea6a29a8d9b78d7aaedf7712650dd2e65da2b3908c97fa24e185", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 439, + "defect_sha256": "1fd4806df19590078606b8f2728c34a0af5274a60f3e3c1072316318225307f3", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 440, + "defect_sha256": "34a2a8fd16bbd091de00e0a28074a61f85375dcf7641d5b99c97ca16eac807bc", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 441, + "defect_sha256": "efc0624cf5d58d6621ef2d4c175e38cc718b518bef5ac4eef71fe2ba3eadf943", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 442, + "defect_sha256": "f2f263d11a5e4f33dcff834730096657a4ff35e524b703eca4dd01a517f617e3", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 443, + "defect_sha256": "6ebd83095fe4994a13e7b1150af23f159c88fa1dd5a6e777f17dab63722356b6", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 444, + "defect_sha256": "71bcccee73f38de5d53ec2b4b21649faba4515dc53cc5f519ed5f642d8015df3", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 445, + "defect_sha256": "8bd2eb527e2b36fc358cd5f09b2107751b37265fb33ec470b5ea82e2e57f8bf5", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 446, + "defect_sha256": "16f0c2e32700628b0d45dd184c3189e0e986bdaff9183a8a6e90804e4eb55554", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 447, + "defect_sha256": "872aeebea7f391a02fba260ec0f5ff261ff6017d003c60f508fc685c1a6f2151", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 448, + "defect_sha256": "9b1f85b17616406b7e8f1a0d53755cdb1b32b09b7eaf2a9513d9baed328985cf", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 449, + "defect_sha256": "0a6dc9584853fe4fa2ec3b41b1fec8dbc1b0ca17216a88cdb751d0c9870858e8", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 450, + "defect_sha256": "81a7fd3eadf52cd7b52b36d0c665351435bce7a8dbeca623770b46192c144c50", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 451, + "defect_sha256": "f49de45d6d63a5c3c2920c63889fd823101aa253e64a4cb29cfcfb81be82fb7d", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 452, + "defect_sha256": "a19b6d29ac393ceabcb46ca5aa93021706cf5c3cacaf8b3ed4539d4c12d85ef8", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 453, + "defect_sha256": "365da9734396110bf4198440cde6cd12f67370f5da070899ea73ddb65f3dce53", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 454, + "defect_sha256": "84cda10191f8bf44366cd3667d189a502ba3b53a521a44247778c65fe117ddb4", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 455, + "defect_sha256": "2853a8159713ca96f21027f85fc23fc17135eca9805a9bd8dff2c49e0fcfd2cd", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 456, + "defect_sha256": "94fddb8fcc25c2d6bd23960dcdf296a6660e6f6b50b71d97fd600fa3fcdb2327", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 457, + "defect_sha256": "45d219bb5cc348538defd54b844794e9d19a0f450fb92888f65fc7dcbaec4b25", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 458, + "defect_sha256": "1475d2db7fc2e2948d374cdfc9ec5d11df8f85f65da3ff3e748f2acfb28e42f1", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 459, + "defect_sha256": "e5f19cd9031b8948f8cc6c85f3780639a2df3a68957355cd6262daa145cffc89", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 460, + "defect_sha256": "01807bb3a0f501340daa0fde0d3dd596203c38ad8bd5134c6e8ae6d4d01d563b", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 461, + "defect_sha256": "df9c44caa6f5aa8147d4b906e82471e50fe4803ab5417b5d0d9ccdd27b888a6c", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 462, + "defect_sha256": "a53bdc976b079fe193a10029c682ef9097a40033bd30ebc115139d35ce218b8a", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 463, + "defect_sha256": "95ee6c62ec9d5c5dd3c81952408300cae20031c3efb8f07a6a3e8fa0c613dbaa", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 464, + "defect_sha256": "92f225b2bb1f2a6b5d9e73393ecafc0b5aa72ba46384a62b85eaeb4add179fb3", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 465, + "defect_sha256": "95f94e2e61a85e149466964ae37cdd1b6491dc22b0919c1176f4da0e02f93f2f", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 466, + "defect_sha256": "da878687bd4090616f43e100051035c42f6e20f91991e6c183af189358a82f71", + "minor_determinant": 1, + "odd_N_charts": 36 + }, + { + "character": 467, + "defect_sha256": "99c80b480475137fa7975474ca79b5f06c1ba23f65f88ea1ffe3d39dcd8bcecb", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 468, + "defect_sha256": "93880d1c2af5c903b46177ba8cec65cec90821f446f275215f51bdd7645afe1d", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 469, + "defect_sha256": "d4a286be54c7bba53d0419e459381c96b4dc8fa4e589c21d4e913179c81a8867", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 470, + "defect_sha256": "ef106eac6573be4b0a4d823d85421bb2753076f8480736b7b2b85652cdd05554", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 471, + "defect_sha256": "b828d307b435aa17466933ade9169ae67c0b281e48bd2fdb29a26eed02e56ce1", + "minor_determinant": 1, + "odd_N_charts": 36 + }, + { + "character": 472, + "defect_sha256": "ab9bc0aba0176f331ddf7116142282a93576d49faf7370bf45b23ded4fba4585", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 473, + "defect_sha256": "5f0ab4f2e264501c79040452812a47a1d9b1c644a5b27fc2731a9f7ad7d6ad97", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 474, + "defect_sha256": "ce93363be17e56ed5bb8079c5482eee14b5e93152b499b26542bcccb00281aa6", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 475, + "defect_sha256": "76d1ebff719bce822b8b9ba32f2376287d1ecf7077d8a6f1d151ead2dbe62244", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 476, + "defect_sha256": "addfd7a9f22e066de244421c7cf0bfd7db72e9eb675bffc46e49e9d5a1ecb01e", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 477, + "defect_sha256": "69716ab47e9f9c3654f3a466c2b7081bed66ef5e046845522e7b5210da32b301", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 478, + "defect_sha256": "12b07b01834b6047efa79757bbe826f33fdac599b149c4f386c242cd67a0f3ca", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 479, + "defect_sha256": "ca7d94c40744d1497853ca9cbb4fc821094975d5b919ace2abf1f53e1846b416", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 480, + "defect_sha256": "d1774519217979959507d2b88d391f39030995c8235f5abc748459a050923859", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 481, + "defect_sha256": "a3718f219112869e9b71d1ee7a6e333af55d2ed7fe92780943fddd1698b18474", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 482, + "defect_sha256": "27318ffd990ca972b9f5c32d539f062259c8ffee92d52553a3f4044ad2f9b50c", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 483, + "defect_sha256": "37198c15b32361656125e62bdfcfc3a660c77ea47de7172ae38a2f99035b6934", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 484, + "defect_sha256": "8a225c0741b1ab3b2fdd99aec22e76e28a79c07b4b3e4accb61336d3daf6e15b", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 485, + "defect_sha256": "81b7e175ccda36ddfa688ba9c220d79785831ea291bbef3267d9e1308f0ca93b", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 486, + "defect_sha256": "f2b8ae6e748b1061b7bd67f17a37398f267dc9d99b6939aec9a4b91a25efdb0f", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 487, + "defect_sha256": "e7f7385ee7cef4f7fa94223d08931982b39e661b71a5bd1ea4260a5d2756f061", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 488, + "defect_sha256": "72aaab5f337c6b94537703a46c9f06e1f78402ef548cef2cc449679049248920", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 489, + "defect_sha256": "c38405f9bbd266fe19124d066e011f18904d46fe10d4ae96b47432403334bae1", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 490, + "defect_sha256": "7e7b5bde87ee206ca753e1245f6bb54e6516976cc83687f2ab2823a8a9e5d228", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 491, + "defect_sha256": "e1c9c771b4aeebfdf516d4d21c5c9e32fa45e4c929a6cc6e149e92877414944f", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 492, + "defect_sha256": "c03188b604e9c1ecacd23368439cbb6f6352aa4d0228782b2d5ff73d55f3aafb", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 493, + "defect_sha256": "f4f4a2ccf1415d917ef1244d6e6b6648ecee2e011bf4dec4c38478ff9621f34f", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 494, + "defect_sha256": "6e4c5955c18256aa59d432477e676c8993282b355bd04825d2027c5ede181a48", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 495, + "defect_sha256": "35bdcdbfcc56efcdaa85885260c612e0a57dd4622a5d428a6080bb76bb69d414", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 496, + "defect_sha256": "1568f61a63cf2d5913d9a5946007c6f4728eef5d8b61670c40cf0021516c0a14", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 497, + "defect_sha256": "e94f3cc0aeedc61b1b135e425e2250a69042c06aeb37846b9fce763c7ae1a70f", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 498, + "defect_sha256": "616a0aefa0c24bf9e7d728d371a78d14f60cdabcbe69cb8d2e4b9b91b4fad3fa", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 499, + "defect_sha256": "fd88599509fbc17c937db8109f580a160caab2157bb107e2917d411987c1d6d9", + "minor_determinant": 1, + "odd_N_charts": 40 + }, + { + "character": 500, + "defect_sha256": "a7f94bfd76ea12820bba91c279728adc778bf0aeb1c6e8031a37d5363189929e", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 501, + "defect_sha256": "ac13a3d186bc05725026382d12325c1eba9f04441c27cd9eaeb58a424442aa8b", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 502, + "defect_sha256": "2b9613c8901d2a661d488b814947f2830cf98a93cdbb2a9d39aa0dc234108d0f", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 503, + "defect_sha256": "d1a94491068414c229e8066648653b26945c8eaa269b8ec4f0e78ef98f25e1c1", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 504, + "defect_sha256": "25bc90956bbe354baecbe5d47a29496e67f4be9d27c3cca11d111d0a7e634eb8", + "minor_determinant": 1, + "odd_N_charts": 52 + }, + { + "character": 505, + "defect_sha256": "e887ae653df6e504efc506ec27d48027dbba8b49ae3b062141a907e1a13e6b58", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 506, + "defect_sha256": "6f7cea64911125fc48d314be8ab44b7e9f342c1e7bf2473aeeef4797a3aab510", + "minor_determinant": 1, + "odd_N_charts": 36 + }, + { + "character": 507, + "defect_sha256": "f84af9e15fd029dc863f838d66c79f4258834d16166bac28ddfa19cd1b4511a2", + "minor_determinant": 1, + "odd_N_charts": 44 + }, + { + "character": 508, + "defect_sha256": "b8c6a71668c23c04e512460f57fbdbcbd332977381b1d4c337a338f8ce4f2bae", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 509, + "defect_sha256": "b58b975ae352421165331b2fa28126a01bacbb16955c08fec2a62d4b9a82f77c", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 510, + "defect_sha256": "604c039411f306e0750aadaf2976c7c1e549f4e0cdf1173947abdf89e33c543d", + "minor_determinant": 1, + "odd_N_charts": 48 + }, + { + "character": 511, + "defect_sha256": "8c18d3c0358eeafab69f58d0affb4bc91c2325f30de56493a55d95d80e5695af", + "minor_determinant": 1, + "odd_N_charts": 96 + } + ], + "pivot_ports": [ + 0, + 1, + 3, + 6, + 22, + 31, + 93, + 103 + ], + "ports": 104, + "postprocessor_columns": 143360, + "rank_per_address": 192, + "schema": "p104-literal-repair-rank/v1", + "scope": "ideal exact linear boundary; not native tariff", + "semantic_rejections": [ + "first-bank-only-defect", + "first-bank-only-repair", + "rank-preserving-wrong-sign", + "same-rank-wrong-slot-kernel", + "dirty-helper-leak", + "erased-dirty-helper", + "uncancelled-summary-dirt" + ], + "source_sha256": { + "research/p104-literal-slot-defect/PROOF.md": "32311654437dce3d2ab35bf30373a1f64ad4a401318a449f91e7fd24df60af55", + "research/p104-native-channel/inputs/P104-FIXTURE.json": "516c06f6ec3cb84be588c546108de897650288576dd5fbf5fe44b9c5546ad8a4", + "research/p104-two-axis-compatibility/PROOF.md": "bdc7d868e4411541a33179af683f48011e66d6446a45bef363f3f3dd5163f717", + "research/p104-two-axis-compatibility/RESULT.json": "ce05a27ebc98677bec4febaa488fa03f5b6fc60216aa43b34298444d12f7ab6c" + }, + "status": "PASS" +} diff --git a/research/p104-literal-repair-rank/SOURCES.json b/research/p104-literal-repair-rank/SOURCES.json new file mode 100644 index 0000000000..971c4afe59 --- /dev/null +++ b/research/p104-literal-repair-rank/SOURCES.json @@ -0,0 +1,42 @@ +{ + "schema_version": 1, + "base_commit": "32890bc5de034ab8fc93ac88ead7279a6a416d04", + "files": [ + { + "path": "certificates/selected-result.json", + "usage": "provenance", + "git_blob": "fc3d4ba105e1f097d0d7d051a308281e86ab1446", + "sha256": "66974efdced4083c00025f97d95d83909a226cdf801edb9301c195c6641f6903" + }, + { + "path": "docs/research/agent-task-catalog.json", + "usage": "provenance", + "git_blob": "f126dd2e2dad2b669e75d1d0d0bd05c600725602", + "sha256": "f7a48bfa2659b88378282a8eee7d9fe52cdf505594124c4d1686b58510fffd72" + }, + { + "path": "research/p104-literal-slot-defect/PROOF.md", + "usage": "input", + "git_blob": "8cd3f035d8f4c52f20480f56622d57833bb60bff", + "sha256": "32311654437dce3d2ab35bf30373a1f64ad4a401318a449f91e7fd24df60af55" + }, + { + "path": "research/p104-native-channel/inputs/P104-FIXTURE.json", + "usage": "input", + "git_blob": "2e16f99b295bb386fd13bd8fbd57b42ef54143a9", + "sha256": "516c06f6ec3cb84be588c546108de897650288576dd5fbf5fe44b9c5546ad8a4" + }, + { + "path": "research/p104-two-axis-compatibility/PROOF.md", + "usage": "input", + "git_blob": "1d84b2a1188eab6a5c38743cc1eed32d66446a3d", + "sha256": "bdc7d868e4411541a33179af683f48011e66d6446a45bef363f3f3dd5163f717" + }, + { + "path": "research/p104-two-axis-compatibility/RESULT.json", + "usage": "input", + "git_blob": "c7ed0ea02e8c462694762508b0bdd1dde2e116d0", + "sha256": "ce05a27ebc98677bec4febaa488fa03f5b6fc60216aa43b34298444d12f7ab6c" + } + ] +} diff --git a/research/p104-literal-repair-rank/TASK.json b/research/p104-literal-repair-rank/TASK.json new file mode 100644 index 0000000000..5e7f8589b1 --- /dev/null +++ b/research/p104-literal-repair-rank/TASK.json @@ -0,0 +1,167 @@ +{ + "schema_version": 1, + "task_id": "p104-side-correction", + "priority_revision": 7, + "base_commit": "32890bc5de034ab8fc93ac88ead7279a6a416d04", + "original_card": { + "id": "p104-side-correction", + "question": "Can a changed P104 producer/consumer contract escape the scoped slot, chart and completion obstructions with a favorable full bill?", + "starting_points": [ + "docs/research/research-family-status.md", + "certificates/selected-result.json", + "research/p104-literal-slot-defect/README.md", + "research/p104-uniform-commutation-gap/README.md", + "research/p104-uniform-encoding-gap/README.md", + "research/p104-source-chart-shortcut/README.md", + "research/p104-fiber-tag-seam/README.md" + ], + "methods": [ + "Construct one side-correction word at an explicit chronological cut with the needed frames still available.", + "Derive a lower bound on the side correction and hosting costs that decides whether this channel can beat the selected budget." + ], + "acceptance_gate": "An exact arbitrary-input identity, source/target frame availability and restoration at the chosen cut, plus the complete channel+correction+idle/hosting bill or an explicit favorable bound. The native channel alone is not a supplier. A scoped local result may be retained without a complete supplier. Expanding it into further construction rounds requires the family-level budget and obligation gate in research-family-status.md; an optimistic passing relaxation alone is not acceptance.", + "first_step": { + "command": [ + "python3", + "-B", + "scripts/research_baseline.py" + ], + "expected": "PASS_RESEARCH_BASELINE_BINDINGS_ONLY", + "inspect": "Read the named successor obstructions before extending #2981 static flags. Distinguish literal-slot action, commutation, uniform encoding, source-chart shortcut and fiber-tag seam scopes; none excludes all P104 mechanisms.", + "scope": "Source-binding orientation only; no scientific replay, theorem acceptance or supplier admission. Budget any heavy replay separately." + }, + "first_experiment": "Name one hypothesis changed from these exact interfaces. Write a literal producer-to-consumer timeline and an arbitrary-dirty-input positive/control pair, then charge acquisition, coefficients, completion, hosting and restoration. Stop if the same slot/fiber mismatch persists or the favorable full budget already fails. A scoped independent audit remains useful; another static count is not a new completion.", + "bottleneck_link": "Completing an already realized changed channel tests a concrete construction opportunity, instead of refining the incumbent packing. A positive local result still needs global and all-size admission.", + "allowed_variations": [ + "One correction factorization, one chronological cut, or one explicit hosting obstruction.", + "A changed correction schedule with an updated full bill and native frame contract." + ], + "scope_change_triggers": [ + "Recompiling the already certified low-rank channel without closing a new obligation.", + "Treating a pending ancestor, local histogram or unpriced side correction as an admitted global supplier.", + "Repeating a correction or physical conversion already supplied by a pending follow-up without adding independent coverage or a different unresolved obligation.", + "Repeating the 208-flag static matching or calling a static nested cover a chronological correction program. Independent audit of that certificate is distinct and remains useful.", + "Repeating a static cover, source-chart shortcut or fiber-tag seam without changing the hypothesis responsible for its obstruction." + ], + "overlap_terms": [ + "P104", + "I-G/2", + "side correction", + "native channel", + "1972", + "1991", + "2586", + "endpoint transport", + "physical dual", + "relay composition", + "2981", + "joint unit flags", + "acquisition delivery", + "static nesting", + "4133", + "4136", + "4140", + "4153", + "4154", + "p104-literal-slot-defect", + "p104-uniform-commutation-gap", + "p104-uniform-encoding-gap", + "p104-source-chart-shortcut", + "p104-fiber-tag-seam" + ], + "existing_checks": [ + { + "scope": "PR #4133: literal-slot defect", + "evidence": "research/p104-literal-slot-defect/README.md", + "remaining": "Independently validate the stated scope or change its producer/consumer premise and pay the complete boundary.", + "status": "author-checked", + "source_commit": "88666f1dee93fbd85b31fd5d6f91a219e111b5f4", + "selected_record_sha256": "bb2eaa58647b353f88d0aec2eafb9d30df1be53589231b23e12ceef3e4bad129" + }, + { + "scope": "PR #4136: uniform commutation gap", + "evidence": "research/p104-uniform-commutation-gap/README.md", + "remaining": "Independently validate the stated scope or change its producer/consumer premise and pay the complete boundary.", + "status": "author-checked", + "source_commit": "281ce601a8be9db470de630759179c23e1dfaa88", + "selected_record_sha256": "bb2eaa58647b353f88d0aec2eafb9d30df1be53589231b23e12ceef3e4bad129" + }, + { + "scope": "PR #4140: uniform encoding gap", + "evidence": "research/p104-uniform-encoding-gap/README.md", + "remaining": "Independently validate the stated scope or change its producer/consumer premise and pay the complete boundary.", + "status": "author-checked", + "source_commit": "de25c6525aa866962309df5d107b32d55e6e5628", + "selected_record_sha256": "bb2eaa58647b353f88d0aec2eafb9d30df1be53589231b23e12ceef3e4bad129" + }, + { + "scope": "PR #4153: source-chart shortcut exhausts its optimistic allowance", + "evidence": "research/p104-source-chart-shortcut/README.md", + "remaining": "Independently validate the stated scope or change its producer/consumer premise and pay the complete boundary.", + "status": "author-checked", + "source_commit": "9123241fea53df77e51ffe30d9aca1625d4bf3a8", + "selected_record_sha256": "bb2eaa58647b353f88d0aec2eafb9d30df1be53589231b23e12ceef3e4bad129" + }, + { + "scope": "PR #4154: fiber-tag seam mismatch", + "evidence": "research/p104-fiber-tag-seam/README.md", + "remaining": "Independently validate the stated scope or change its producer/consumer premise and pay the complete boundary.", + "status": "author-checked", + "source_commit": "4ffcdaee5d6255a9cea1fe53a5424435068089d0", + "selected_record_sha256": "bb2eaa58647b353f88d0aec2eafb9d30df1be53589231b23e12ceef3e4bad129" + } + ] + }, + "scope_status": "refined", + "actual_scope": "Complete rank and kernel of the PR3954/4133 literal two-bank defect; sharp minimum dimension of a linear-summary additive repair, with all 72 arbitrary dirty helpers preserved.", + "scope_change_reason": "Refine the card to one explicit correction-interface obligation. Replace the uniform-scalar consumer by an arbitrary linear-summary additive postprocessor, retaining literal input/output locations. No complete supplier is claimed.", + "bottleneck_link": "The predecessor gives a rank-96 first-bank defect. A repair must carry the entire two-bank error; this decides the necessary information demand before pricing a changed consumer.", + "budget_minutes": 60, + "stop_rule": "Stop after the rank/kernel theorem and source-bound finite audit. No native expansion under the inherited failed 44096-excess gate; unknown physical costs are not zero.", + "outcome": "completed", + "evidence": "PROOF.md: rank(E)=2 rank(H)+rank(J(D-I)J), specialized to 192d; sharp summary factorization. verify.py: 512 phase patterns times 280 complete columns, exact minor/kernel, post-repair and dirty returns, seven semantic controls. algebra.py: 2048 dense rational cases and noncommuting address-block/hypothesis controls.", + "author": "commdata2338", + "ai_assistance": "Substantial OpenAI Codex (GPT-6 Astra) assistance in derivation, implementation, checking and writing. No independent human or proof-kernel review claimed.", + "open_questions": [ + { + "question": "Can an actual caller supply the two summaries r_N and w_N-B^t r_J at the literal cut with an affordable complete repair?", + "why_it_matters": "The sharp information factorization does not supply native access or remove the rejected scaffold cost.", + "first_step": "Name each summary owner, exact chart, chronology and dirty state; price acquisition, all output updates and eventual restoration.", + "blocked_by": "No prepared physical producer, legal summary reader, arbitrary-dirty scratch implementation or newly favorable complete budget is supplied." + } + ], + "scope_key": "72dfbf0708467ad34793/literal-two-bank-defect-linear-summary-repair", + "selection": { + "mode": "handoff-first refinement; specific card retrieved without reroll", + "seed": "ec040933c293736d31a20d4f764ea62e", + "track": "complex-mechanisms", + "handoff": "https://github.com/CrocSwap/integer-mult-bounds/discussions/1166#discussioncomment-19057044", + "existing_checks_inspected": [ + 4133, + 4136, + 4140, + 4153, + 4154 + ], + "successor_checks_inspected": [ + 4339, + 4370 + ], + "selected_record_context": "Current selected record is PR5413; historical priority-page selection text and frozen card context differ. The current selected-baseline orientation passed.", + "claim": "https://github.com/CrocSwap/integer-mult-bounds/discussions/1166#discussioncomment-19173713" + }, + "predecessors": [ + { + "pr": 3954, + "head": "f1e2839819959cd0534d008be91ed5b79ec55a6a", + "credit": "Chris R / Clear1nsight", + "used": "Physical boundary and pivot geometry; source bytes pinned on base main." + }, + { + "pr": 4133, + "head": "88666f1dee93fbd85b31fd5d6f91a219e111b5f4", + "credit": "unpaidmoon", + "used": "Literal commutator and first-bank scalar obstruction; no predecessor executable imported." + } + ] +} diff --git a/research/p104-literal-repair-rank/VERIFY.json b/research/p104-literal-repair-rank/VERIFY.json new file mode 100644 index 0000000000..b9054bd7f1 --- /dev/null +++ b/research/p104-literal-repair-rank/VERIFY.json @@ -0,0 +1,52 @@ +{ + "schema_version": 1, + "status": "ready", + "python": "3.12", + "requirements": [], + "inputs": [ + "research/p104-literal-slot-defect/PROOF.md", + "research/p104-native-channel/inputs/P104-FIXTURE.json", + "research/p104-two-axis-compatibility/PROOF.md", + "research/p104-two-axis-compatibility/RESULT.json" + ], + "commands": [ + { + "argv": [ + "{python}", + "-I", + "-W", + "error", + "-B", + "{package}/verify.py" + ], + "timeout_seconds": 300, + "checks": "All 512 character blocks, 143360 literal and postprocessor columns, complete minor/kernel, 72 dirty returns and seven semantic rejecting controls; full typed receipt." + }, + { + "argv": [ + "{python}", + "-I", + "-O", + "-W", + "error", + "-B", + "{package}/verify.py" + ], + "timeout_seconds": 300, + "checks": "Same complete source-bound acceptance under optimized Python; all requirements explicit." + }, + { + "argv": [ + "{python}", + "-I", + "-O", + "-W", + "error", + "-B", + "{package}/algebra.py" + ], + "timeout_seconds": 120, + "checks": "Separate dense rational general-rank verification on 2048 cases; noncommuting address blocks and dropped-hypothesis controls." + } + ] +} diff --git a/research/p104-literal-repair-rank/algebra.py b/research/p104-literal-repair-rank/algebra.py new file mode 100644 index 0000000000..79a65b8195 --- /dev/null +++ b/research/p104-literal-repair-rank/algebra.py @@ -0,0 +1,173 @@ +#!/usr/bin/env python3 +"""Separate dense rational check of the general rank lemma; no producer imports. + +Prepared for commdata2338 with OpenAI Codex assistance. Apache-2.0. +""" +from fractions import Fraction as F +import itertools + + +def need(ok, message): + if not ok: + raise ValueError(message) + + +def identity(n): + return [[F(i == j) for j in range(n)] for i in range(n)] + + +def zero(n): + return [[F(0) for _ in range(n)] for _ in range(n)] + + +def subtract(a, b): + return [[x-y for x, y in zip(r, s)] for r, s in zip(a, b)] + + +def multiply(a, b): + cols = list(zip(*b)) + return [[sum(x*y for x, y in zip(row, col)) for col in cols] for row in a] + + +def block(a, b, c, d): + return [x+y for x, y in zip(a, b)] + [x+y for x, y in zip(c, d)] + + +def reduce_rows(matrix): + a = [list(map(F, row)) for row in matrix] + if not a: + return a, 0 + count = 0 + for column in range(len(a[0])): + pivot = next((r for r in range(count, len(a)) if a[r][column]), None) + if pivot is None: + continue + a[count], a[pivot] = a[pivot], a[count] + v = a[count][column] + a[count] = [x/v for x in a[count]] + for row in range(len(a)): + if row != count and a[row][column]: + v = a[row][column] + a[row] = [x-v*y for x, y in zip(a[row], a[count])] + count += 1 + if count == len(a): + break + return a, count + + +def rank(a): + return reduce_rows(a)[1] + + +def inverse(a): + n = len(a) + red, _ = reduce_rows([row+unit for row, unit in zip(a, identity(n))]) + need([r[:n] for r in red] == identity(n), "invertible matrix required") + return [r[n:] for r in red] + + +def maps(d, h, t): + n = len(d) + i, z = identity(n), zero(n) + k = inverse(t) + j = subtract(i, h) + p = block(i, z, k, i) + l = block(d, multiply(h, t), z, i) + pi = block(j, h, h, j) + return p, l, pi, multiply(pi, l) + + +def expected(d, h, t): + n = len(d) + i, z = identity(n), zero(n) + k = inverse(t) + j = subtract(i, h) + return block(subtract(z, multiply(h, k)), z, + subtract(multiply(multiply(k, j), subtract(d, i)), h), multiply(k, h)) + + +def exhaustive_small(): + total = 0 + histogram = {} + # Every 3x3 binary D; invertibility of D is not needed for the defect lemma. + for jdim in range(4): + h = [[F(i == j and i >= jdim) for j in range(3)] for i in range(3)] + t = identity(3) + for i in range(2): + if (i < jdim) == (i+1 < jdim): + t[i][i+1] = F(1) + i3 = identity(3) + for entries in itertools.product((0, 1), repeat=9): + d = [list(map(F, entries[3*i:3*i+3])) for i in range(3)] + p, _l, _pi, a = maps(d, h, t) + actual = subtract(multiply(p, a), multiply(a, p)) + need(actual == expected(d, h, t), "literal dense block identity") + jj = [row[:jdim] for row in subtract(d, i3)[:jdim]] + observed = rank(actual) + need(observed == 2*(3-jdim)+rank(jj), "general exact rank") + histogram[observed] = histogram.get(observed, 0) + 1 + total += 1 + need(total == 2048, "complete small domain") + return histogram + + +def noncommuting_address_blocks(): + # Three ports, two-dimensional address payloads. T's port blocks do not + # commute with one another; the proof must not diagonalize them together. + small = [[1, 1, 2], [1, 0, 2], [2, 2, 3]] + d = [[F(small[i//2][j//2] * (i % 2 == j % 2)) for j in range(6)] for i in range(6)] + t = zero(6) + blocks = ([[1, 1], [0, 1]], [[1, 0], [1, 1]], [[2, 0], [0, 1]]) + need(multiply(blocks[0], blocks[1]) != multiply(blocks[1], blocks[0]), + "address blocks really do not commute") + for port, matrix in enumerate(blocks): + for i in range(2): + for j in range(2): + t[2*port+i][2*port+j] = F(matrix[i][j]) + h = [[F(i == j and i >= 2) for j in range(6)] for i in range(6)] + need(multiply(t, h) == multiply(h, t), "H/T premise") + need(multiply(t, d) != multiply(d, t), "D/T must not be commuted") + p, l, _pi, a = maps(d, h, t) + defect = subtract(multiply(p, a), multiply(a, p)) + need(defect == expected(d, h, t) and rank(defect) == 8, "operator-block rank") + ordered = subtract(multiply(p, l), multiply(l, p)) + need(rank(ordered) == 8 and ordered != defect, "same rank does not bind slots") + q = multiply(multiply(a, p), inverse(a)) + repair = multiply(q, inverse(p)) + need(multiply(repair, multiply(p, a)) == multiply(a, p), "dense full repair") + need(rank(subtract(repair, identity(12))) == 8, "repair rank preserved") + # Alter the pivot block: the old 2h specialization is now false. + changed = [row[:] for row in d] + changed[0][0] += 1 + p2, _l, _pi, a2 = maps(changed, h, t) + altered = subtract(multiply(p2, a2), multiply(a2, p2)) + need(rank(altered) == 9, "pivot-block control must add one rank") + return {"address_dimension": 2, "rank": 8, "changed_pivot_rank": 9} + + +def dropped_hypotheses(): + d = identity(2) + h = [[F(0), F(0)], [F(0), F(1)]] + t = [[F(1), F(1)], [F(0), F(1)]] + p, _l, _pi, a = maps(d, h, t) + defect = subtract(multiply(p, a), multiply(a, p)) + need(multiply(h, t) != multiply(t, h), "noncommuting premise control") + need(defect != expected(d, h, t), "omitted H/T premise must fail") + bad_h = [[F(0), F(0)], [F(0), F(2)]] + _p, _l, pi, _a = maps(d, bad_h, identity(2)) + need(multiply(pi, pi) != identity(4), "nonprojector must fail literal swap") + return 2 + + +def main(): + histogram = exhaustive_small() + operator_case = noncommuting_address_blocks() + controls = dropped_hypotheses() + print("PASS_P104_REPAIR_RANK_ALGEBRA cases=2048 operator_rank=8 " + "changed_pivot_rank=9 hypothesis_controls=2") + print("rank_histogram=" + repr(sorted(histogram.items()))) + need(operator_case["rank"] == 8 and controls == 2, "all corroboration groups") + + +if __name__ == "__main__": + main() diff --git a/research/p104-literal-repair-rank/verify.py b/research/p104-literal-repair-rank/verify.py new file mode 100644 index 0000000000..4efb563a58 --- /dev/null +++ b/research/p104-literal-repair-rank/verify.py @@ -0,0 +1,337 @@ +#!/usr/bin/env python3 +"""Exact literal P104 repair-rank check. Apache-2.0; see README for credit.""" +import argparse +from collections import Counter +import hashlib +import itertools +import json +from pathlib import Path + +HERE = Path(__file__).resolve().parent +ROOT = HERE.parents[1] +PIVOTS = (0, 1, 3, 6, 22, 31, 93, 103) +ZERO = (0, 0) + + +def require(ok, message): + if not ok: + raise ValueError(message) + + +def canonical(value): + return (json.dumps(value, sort_keys=True, separators=(",", ":")) + "\n").encode() + + +def read_json(path): + def unique(pairs): + result = {} + for key, value in pairs: + require(key not in result, "duplicate JSON key: " + key) + result[key] = value + return result + return json.loads(path.read_text(encoding="utf-8"), object_pairs_hook=unique) + + +def authenticate(): + inputs = {} + for item in read_json(HERE / "SOURCES.json")["files"]: + if item["usage"] != "input": + continue + path = ROOT / item["path"] + require(not path.is_symlink(), "source symlink") + raw = path.read_bytes() + require(hashlib.sha256(raw).hexdigest() == item["sha256"], + "source SHA256: " + item["path"]) + blob = hashlib.sha1(b"blob " + str(len(raw)).encode() + b"\0" + raw).hexdigest() + require(blob == item["git_blob"], "source Git blob: " + item["path"]) + inputs[item["path"]] = item["sha256"] + require(len(inputs) == 4, "complete declared source inventory") + return inputs + + +def dot(a, b): + return sum(x * y for x, y in zip(a, b)) + + +def geometry(): + # Enumerate one representative of each +/- doubled E8 root. + roots = set() + for positions in itertools.combinations(range(8), 2): + for sign in (-1, 1): + row = [0] * 8 + row[positions[0]], row[positions[1]] = 2, 2 * sign + roots.add(tuple(row)) + for tail in itertools.product((-1, 1), repeat=7): + if sum(x == -1 for x in tail) % 2 == 0: + roots.add((1,) + tail) + require(len(roots) == 120, "root representatives") + fixture = read_json(ROOT / "research/p104-native-channel/inputs/P104-FIXTURE.json") + section = fixture["section4_explicit_P104"] + removed = set(map(tuple, section["F0"] + section["C"])) + require(len(removed) == 16 and removed <= roots, "two deleted frames") + original = sorted(roots - removed) + order = list(PIVOTS) + [i for i in range(104) if i not in PIVOTS] + ports = [original[i] for i in order] + require(all(dot(a, b) % 4 == 0 for a in ports for b in ports), "dyadic Gram") + gram2 = [[dot(a, b) // 4 for b in ports] for a in ports] + require(all(gram2[i][j] == 2 * (i == j) for i in range(8) for j in range(8)), + "actual pivot block is I") + b2 = [row[8:] for row in gram2[:8]] + require(all(sum(b2[i][s] * b2[j][s] for s in range(96)) == 48 * (i == j) + for i in range(8) for j in range(8)), "BB^t = 12I") + require(all(sum(b2[k][i] * b2[k][j] for k in range(8)) == 2 * gram2[8+i][8+j] + for i in range(96) for j in range(96)), "A_NN = B^t B") + d2 = [[gram2[i][j] - 2 * (i == j and i >= 8) for j in range(104)] + for i in range(104)] + source = read_json(ROOT / "research/p104-two-axis-compatibility/RESULT.json") + labels = source["physical_labels"] + require(len(labels) == len(set(labels)) == 104, "physical port labels") + require(all(type(x) is int and 0 < x < 512 and x.bit_count() % 2 for x in labels), + "odd nine-bit physical labels") + require(all(((labels[i] & labels[j]).bit_count() % 2) == ((gram2[i][j] + 1) % 2) + for i in range(104) for j in range(104)), "physical label/Gram binding") + require(source["dirty_roles"] == 72, "helper boundary") + cols = [[(i, d2[i][j]) for i in range(104) if d2[i][j]] for j in range(104)] + return labels, b2, cols + + +def phase(value, exponent): + x, y = value + return ((x, y), (-y, x), (-x, -y), (y, -x))[exponent % 4] + + +def plus(a, b): + return a[0] + b[0], a[1] + b[1] + + +def minus(a, b): + return a[0] - b[0], a[1] - b[1] + + +def half(value): + require(value[0] % 2 == value[1] % 2 == 0, "exact integer replay scale") + return value[0] // 2, value[1] // 2 + + +def accumulate(state, role, value): + new = plus(state.get(role, ZERO), value) + if new != ZERO: + state[role] = new + else: + state.pop(role, None) + + +def old_p(state, t, sign=1): + """Literal old correction: second bank += T^-1 first bank.""" + out = state.copy() + for role, value in state.items(): + if role < 104: + v = phase(value, -t[role]) + accumulate(out, 104 + role, (sign * v[0], sign * v[1])) + return out + + +def encode(state, t, dcols, swap=True): + """Execute L then the literal N-slot exchange, not a defect formula.""" + ordered = {r: v for r, v in state.items() if r >= 104} + for role, value in state.items(): + if role < 104: + for target, coefficient in dcols[role]: + v = half((coefficient * value[0], coefficient * value[1])) + accumulate(ordered, target, v) + elif 112 <= role < 208: + accumulate(ordered, role - 104, phase(value, t[role - 104])) + if not swap: + return ordered + return {(r + 104 if 8 <= r < 104 else r - 104 if 112 <= r < 208 else r): v + for r, v in ordered.items()} + + +def difference(left, right): + out = left.copy() + for role, value in right.items(): + accumulate(out, role, (-value[0], -value[1])) + return out + + +def b_multiply(b2, values, transpose=False): + rows = list(zip(*b2)) if transpose else b2 + result = [] + for row in rows: + real = sum(c * v[0] for c, v in zip(row, values)) + imag = sum(c * v[1] for c, v in zip(row, values)) + result.append(half((real, imag))) + return result + + +def predicted_defect(state, t, b2): + """New kernel calculation: E depends only on the two N inputs.""" + out = {} + a_n = [state.get(i, ZERO) for i in range(8, 104)] + b_n = [state.get(104+i, ZERO) for i in range(8, 104)] + for offset, (a, b) in enumerate(zip(a_n, b_n)): + i = offset + 8 + ka, kb = phase(a, -t[i]), phase(b, -t[i]) + accumulate(out, i, (-ka[0], -ka[1])) + accumulate(out, 104+i, minus(kb, a)) + for j, value in enumerate(b_multiply(b2, a_n)): + accumulate(out, 104+j, phase(value, -t[j])) + return out + + +def repair(state, t, b2, first_bank_only=False, summary_noise=None): + """Abstract exact postprocessor; not a native lowering. + + Two 96-array summaries are v=r_N and e=w_N-B^t r_J. Then + a_N=(K+T)v-e. Helpers are untouched, not initialized clean. + """ + r_j = [state.get(j, ZERO) for j in range(8)] + code = b_multiply(b2, r_j, transpose=True) + v_n = [state.get(i, ZERO) for i in range(8, 104)] + e_n = [minus(state.get(104+i, ZERO), code[i-8]) for i in range(8, 104)] + if summary_noise is not None: # Deliberate dirty-summary failure control. + bank, index, value = summary_noise + require(bank in (0, 1) and 0 <= index < 96, "summary noise coordinate") + target = v_n if bank == 0 else e_n + target[index] = plus(target[index], value) + a_n = [] + for offset, i in enumerate(range(8, 104)): + v, e = v_n[offset], e_n[offset] + a_n.append(minus(plus(phase(v, -t[i]), phase(v, t[i])), e)) + out = state.copy() + for offset, i in enumerate(range(8, 104)): + accumulate(out, i, phase(a_n[offset], -t[i])) + if not first_bank_only: + increment = minus(a_n[offset], phase(v_n[offset], -t[i])) + accumulate(out, 104+i, increment) + if not first_bank_only: + for j, value in enumerate(b_multiply(b2, a_n)): + v = phase(value, -t[j]) + accumulate(out, 104+j, (-v[0], -v[1])) + return out + + +def validate_column(column, defect, t, b2): + require(defect == predicted_defect({column: (4, 0)}, t, b2), + "complete literal defect column") + # A concrete 192-square minor, independent of the B output rows. + projected = {r: v for r, v in defect.items() if 8 <= r < 104 or 112 <= r < 208} + expected = {} + if 8 <= column < 104: + k = phase((4, 0), -t[column]) + expected = {column: (-k[0], -k[1]), column+104: (-4, 0)} + elif 112 <= column < 208: + expected = {column: phase((4, 0), -t[column-104])} + require(projected == expected, "invertible N-by-N block minor") + if column < 8 or 104 <= column < 112 or column >= 208: + require(not defect, "complete 88-array kernel including helpers") + + +def phase_census(labels, b2, dcols): + records = [] + for character in range(512): + t = [(character & label).bit_count() % 2 for label in labels] + digest = hashlib.sha256() + for column in range(280): + state = {column: (4, 0)} + wrong = old_p(encode(state, t, dcols), t) + correct = encode(old_p(state, t), t, dcols) + defect = difference(wrong, correct) + validate_column(column, defect, t, b2) + require(repair(wrong, t, b2) == correct, "postprocessor complete boundary") + for endpoint in (wrong, correct): + helpers = {r: v for r, v in endpoint.items() if r >= 208} + require(helpers == ({column: (4, 0)} if column >= 208 else {}), + "arbitrary dirty helper restoration") + digest.update(canonical([column, sorted(defect.items())])) + records.append({"character": character, "odd_N_charts": sum(t[8:]), + "minor_determinant": -1 if sum(t[8:]) % 2 else 1, + "defect_sha256": digest.hexdigest()}) + return records + + +def check_controls(labels, b2, dcols): + t = [(7 & label).bit_count() % 2 for label in labels] + rejected = [] + + def reject(name, function): + try: + function() + except ValueError: + rejected.append(name) + else: + raise ValueError("control accepted: " + name) + + source = {8: (4, 0)} + wrong = old_p(encode(source, t, dcols), t) + correct = encode(old_p(source, t), t, dcols) + defect = difference(wrong, correct) + truncated = {r: v for r, v in defect.items() if r < 104} + reject("first-bank-only-defect", lambda: validate_column(8, truncated, t, b2)) + reject("first-bank-only-repair", lambda: require( + repair(wrong, t, b2, first_bank_only=True) == correct, "second bank not repaired")) + opposite = {r: (-v[0], -v[1]) for r, v in defect.items()} + reject("rank-preserving-wrong-sign", lambda: validate_column(8, opposite, t, b2)) + pivot = {0: (4, 0)} + ordered = difference(old_p(encode(pivot, t, dcols, swap=False), t), + encode(old_p(pivot, t), t, dcols, swap=False)) + require(bool(ordered), "ordered-kernel control must differ") + reject("same-rank-wrong-slot-kernel", lambda: validate_column(0, ordered, t, b2)) + reject("dirty-helper-leak", lambda: validate_column(208, {8: (4, 0)}, t, b2)) + dirt = {208: (4, 0)} + restored = repair(old_p(encode(dirt, t, dcols), t), t, b2) + require(restored == dirt, "nonzero arbitrary dirty fixture") + lost = restored.copy() + del lost[208] + reject("erased-dirty-helper", lambda: require(lost == dirt, "helper return")) + # Actually insert independent dirt in each summary coordinate, rather than + # assuming those summaries are clean. Every direction changes real output. + for bank in (0, 1): + for index in range(96): + noisy = repair({}, t, b2, summary_noise=(bank, index, (4, 0))) + require(bool(noisy), "dirty summary must have nonzero output response") + noisy = repair({}, t, b2, summary_noise=(1, 0, (4, 0))) + reject("uncancelled-summary-dirt", lambda: require(not noisy, "summary dirt leaked")) + dense = {r: (4 * ((r * 17) % 11 - 5), 4 * ((r * 13) % 7 - 3)) for r in range(280)} + dense = {r: v for r, v in dense.items() if v != ZERO} + wrong = old_p(encode(dense, t, dcols), t) + correct = encode(old_p(dense, t), t, dcols) + require(repair(wrong, t, b2) == correct, "dense Gaussian arbitrary-dirty control") + return rejected + + +def compute(): + pins = authenticate() + labels, b2, dcols = geometry() + records = phase_census(labels, b2, dcols) + controls = check_controls(labels, b2, dcols) + require(authenticate() == pins, "source changed during replay") + return {"schema": "p104-literal-repair-rank/v1", "status": "PASS", + "source_sha256": pins, "scope": "ideal exact linear boundary; not native tariff", + "ports": 104, "pivot_ports": list(PIVOTS), "nonpivot_ports": 96, + "dirty_helpers": 72, "characters": 512, "columns_per_character": 280, + "literal_columns": 143360, "postprocessor_columns": 143360, + "rank_per_address": 192, "data_kernel_per_address": 16, + "complete_kernel_per_address": 88, "minimum_linear_summary_arrays": 192, + "dirty_summary_directions_checked": 192, + "B_nonzero_entries": sum(bool(v) for row in b2 for v in row), + "minor_determinant_counts": dict(Counter(str(r["minor_determinant"]) for r in records)), + "semantic_rejections": controls, "patterns": records, "new_kappa": False} + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--emit", action="store_true", help="emit freshly derived receipt to stdout") + args = parser.parse_args() + result = compute() + if args.emit: + print(json.dumps(result, indent=2, sort_keys=True)) + else: + require(canonical(result) == canonical(read_json(HERE / "RESULT.json")), + "complete typed receipt mismatch") + print("PASS_P104_LITERAL_REPAIR_RANK rank=192 data_kernel=16 dirty_helpers=72 " + "characters=512 columns=143360 summary_arrays=192 controls=7 no_new_kappa") + + +if __name__ == "__main__": + main()