From 24c45725f7b9ffca4529b46661acf343ce93cee3 Mon Sep 17 00:00:00 2001 From: ToikY <27568617+ToikY@users.noreply.github.com> Date: Tue, 13 Oct 2026 13:06:55 -0700 Subject: [PATCH] Construct 55 same-frame rewrites of the composed R439 bit word Save 110 complete ADDs, independently verify strict precision and native frame/column invoices, and compare the concurrent GL5 sibling. Prepared for ToikY with substantial OpenAI Codex assistance. Apache-2.0; predecessor notices and exact source pins retained. --- .../CANDIDATE-WORD.json | 1 + .../r439-abc-zrewrite-seed16/CERTIFICATE.json | 400 ++ research/r439-abc-zrewrite-seed16/CLAIM.json | 41 + research/r439-abc-zrewrite-seed16/MOVES.json | 2711 ++++++++++ research/r439-abc-zrewrite-seed16/NATIVE.json | 358 ++ research/r439-abc-zrewrite-seed16/NOTICE.md | 43 + research/r439-abc-zrewrite-seed16/PROOF.md | 59 + research/r439-abc-zrewrite-seed16/README.md | 150 + .../r439-abc-zrewrite-seed16/SEARCH-LOG.json | 126 + .../r439-abc-zrewrite-seed16/SOURCES.json | 53 + .../r439-abc-zrewrite-seed16/VALIDATION.md | 36 + research/r439-abc-zrewrite-seed16/native.py | 166 + research/r439-abc-zrewrite-seed16/search.py | 384 ++ .../vendor/pr1122/CERTIFICATE.json | 173 + .../vendor/pr1122/EXPECTED.json | 4398 +++++++++++++++++ .../vendor/pr1122/LICENSE | 201 + .../vendor/pr1122/NOTICE.md | 41 + .../vendor/pr1122/PROOF.md | 119 + .../vendor/pr1122/README.md | 108 + .../vendor/pr1122/SOURCES.json | 142 + .../vendor/pr1122/candidate.json.gz | Bin 0 -> 36211 bytes .../vendor/pr1122/common.py | 78 + .../vendor/pr1122/native.py | 112 + .../vendor/pr1122/verify.py | 305 ++ .../vendor/pr1127/CERTIFICATE.json | 63 + .../vendor/pr1127/NOTICE.md | 38 + .../vendor/pr1127/search.py | 342 ++ .../vendor/pr1127/verify.py | 390 ++ .../vendor/pr1188/NOTICE.md | 33 + .../vendor/pr1188/candidate.json.gz | Bin 0 -> 35768 bytes research/r439-abc-zrewrite-seed16/verify.py | 335 ++ 31 files changed, 11406 insertions(+) create mode 100644 research/r439-abc-zrewrite-seed16/CANDIDATE-WORD.json create mode 100644 research/r439-abc-zrewrite-seed16/CERTIFICATE.json create mode 100644 research/r439-abc-zrewrite-seed16/CLAIM.json create mode 100644 research/r439-abc-zrewrite-seed16/MOVES.json create mode 100644 research/r439-abc-zrewrite-seed16/NATIVE.json create mode 100644 research/r439-abc-zrewrite-seed16/NOTICE.md create mode 100644 research/r439-abc-zrewrite-seed16/PROOF.md create mode 100644 research/r439-abc-zrewrite-seed16/README.md create mode 100644 research/r439-abc-zrewrite-seed16/SEARCH-LOG.json create mode 100644 research/r439-abc-zrewrite-seed16/SOURCES.json create mode 100644 research/r439-abc-zrewrite-seed16/VALIDATION.md create mode 100644 research/r439-abc-zrewrite-seed16/native.py create mode 100644 research/r439-abc-zrewrite-seed16/search.py create mode 100644 research/r439-abc-zrewrite-seed16/vendor/pr1122/CERTIFICATE.json create mode 100644 research/r439-abc-zrewrite-seed16/vendor/pr1122/EXPECTED.json create mode 100644 research/r439-abc-zrewrite-seed16/vendor/pr1122/LICENSE create mode 100644 research/r439-abc-zrewrite-seed16/vendor/pr1122/NOTICE.md create mode 100644 research/r439-abc-zrewrite-seed16/vendor/pr1122/PROOF.md create mode 100644 research/r439-abc-zrewrite-seed16/vendor/pr1122/README.md create mode 100644 research/r439-abc-zrewrite-seed16/vendor/pr1122/SOURCES.json create mode 100644 research/r439-abc-zrewrite-seed16/vendor/pr1122/candidate.json.gz create mode 100644 research/r439-abc-zrewrite-seed16/vendor/pr1122/common.py create mode 100644 research/r439-abc-zrewrite-seed16/vendor/pr1122/native.py create mode 100644 research/r439-abc-zrewrite-seed16/vendor/pr1122/verify.py create mode 100644 research/r439-abc-zrewrite-seed16/vendor/pr1127/CERTIFICATE.json create mode 100644 research/r439-abc-zrewrite-seed16/vendor/pr1127/NOTICE.md create mode 100644 research/r439-abc-zrewrite-seed16/vendor/pr1127/search.py create mode 100644 research/r439-abc-zrewrite-seed16/vendor/pr1127/verify.py create mode 100644 research/r439-abc-zrewrite-seed16/vendor/pr1188/NOTICE.md create mode 100644 research/r439-abc-zrewrite-seed16/vendor/pr1188/candidate.json.gz create mode 100644 research/r439-abc-zrewrite-seed16/verify.py diff --git a/research/r439-abc-zrewrite-seed16/CANDIDATE-WORD.json b/research/r439-abc-zrewrite-seed16/CANDIDATE-WORD.json new file mode 100644 index 0000000000..83fb8ef228 --- /dev/null +++ b/research/r439-abc-zrewrite-seed16/CANDIDATE-WORD.json @@ -0,0 +1 @@ +{"A":[[2,222,[0]],[2,223,[0]],[3,224,[1]],[3,225,[1]],[4,226,[2]],[4,227,[2]],[5,228,[3]],[5,229,[3]],[6,230,[4]],[6,231,[4]],[7,232,[5]],[7,233,[5]],[8,234,[6]],[8,235,[6]],[9,236,[7]],[9,237,[7]],[10,238,[8]],[10,239,[8]],[11,240,[9]],[11,241,[9]],[12,244,[10]],[12,245,[10]],[13,246,[11]],[13,247,[11]],[14,248,[12]],[14,249,[12]],[15,250,[13]],[15,251,[13]],[16,254,[14]],[16,255,[14]],[17,256,[15]],[17,257,[15]],[18,258,[16]],[18,259,[16]],[19,260,[17]],[19,261,[17]],[20,262,[18]],[20,263,[18]],[21,264,[19]],[21,265,[19]],[22,266,[20]],[22,267,[20]],[23,268,[21]],[23,269,[21]],[24,270,[22]],[24,271,[22]],[25,272,[23]],[25,273,[23]],[26,274,[24]],[26,275,[24]],[27,276,[25]],[27,277,[25]],[28,278,[26]],[28,279,[26]],[29,280,[27]],[29,281,[27]],[30,282,[28]],[30,283,[28]],[31,284,[29]],[31,285,[29]],[32,286,[30]],[32,287,[30]],[33,288,[31]],[33,289,[31]],[34,290,[32]],[34,291,[32]],[35,292,[33]],[35,293,[33]],[36,294,[34]],[36,295,[34]],[37,296,[35]],[37,297,[35]],[38,298,[36]],[38,299,[36]],[39,300,[37]],[39,301,[37]],[40,302,[38]],[40,303,[38]],[41,304,[39]],[41,305,[39]],[42,306,[40]],[42,307,[40]],[43,308,[41]],[43,309,[41]],[44,310,[42]],[44,311,[42]],[45,312,[43]],[45,313,[43]],[46,314,[44]],[46,315,[44]],[47,316,[45]],[47,317,[45]],[48,318,[46]],[48,319,[46]],[49,320,[47]],[49,321,[47]],[50,322,[48]],[50,323,[48]],[51,326,[49]],[51,327,[49]],[52,330,[50]],[52,331,[50]],[53,332,[51]],[53,333,[51]],[54,336,[52]],[54,337,[52]],[55,338,[53]],[55,339,[53]],[56,340,[54]],[56,341,[54]],[57,342,[55]],[57,343,[55]],[58,344,[56]],[58,345,[56]],[59,346,[57]],[59,347,[57]],[60,348,[58]],[60,349,[58]],[61,350,[59]],[61,351,[59]],[62,352,[60]],[62,353,[60]],[63,356,[61]],[63,357,[61]],[64,358,[62]],[64,359,[62]],[65,360,[63]],[65,361,[63]],[66,362,[64]],[66,363,[64]],[67,364,[65]],[67,365,[65]],[68,368,[66]],[68,369,[66]],[69,370,[67]],[69,371,[67]],[70,372,[68]],[70,373,[68]],[71,374,[69]],[71,375,[69]],[72,376,[70]],[72,377,[70]],[73,378,[71]],[73,379,[71]],[74,380,[72]],[74,381,[72]],[75,382,[73]],[75,383,[73]],[76,384,[74]],[76,385,[74]],[77,386,[75]],[77,387,[75]],[78,388,[76]],[78,389,[76]],[79,390,[77]],[79,391,[77]],[80,392,[78]],[80,393,[78]],[81,394,[79]],[81,395,[79]],[82,396,[80]],[82,397,[80]],[83,398,[81]],[83,399,[81]],[84,402,[82]],[84,403,[82]],[85,404,[83]],[85,405,[83]],[86,406,[84]],[86,407,[84]],[87,408,[85]],[87,409,[85]],[88,410,[86]],[88,411,[86]],[89,412,[87]],[89,413,[87]],[90,414,[88]],[90,415,[88]],[91,416,[89]],[91,417,[89]],[92,418,[90]],[92,419,[90]],[93,420,[91]],[93,421,[91]],[94,422,[92]],[94,423,[92]],[95,424,[93]],[95,425,[93]],[96,426,[94]],[96,427,[94]],[97,428,[95]],[97,429,[95]],[98,430,[96]],[98,431,[96]],[99,432,[97]],[99,433,[97]],[100,434,[98]],[100,435,[98]],[101,436,[99]],[101,437,[99]],[102,438,[100]],[102,439,[100]],[103,440,[101]],[103,441,[101]],[104,442,[102]],[104,443,[102]],[105,446,[103]],[105,447,[103]],[106,448,[104]],[106,449,[104]],[107,450,[105]],[107,451,[105]],[108,452,[106]],[108,453,[106]],[109,454,[107]],[109,455,[107]],[110,456,[108]],[110,457,[108]],[111,458,[109]],[111,459,[109]],[112,460,[110]],[112,461,[110]],[49,462,[47]],[54,463,[52]],[56,464,[54]],[2,465,[0]],[21,466,[19]],[29,467,[27]],[40,468,[38]],[52,469,[50]],[79,470,[77]],[94,471,[92]],[8,472,[6]],[13,473,[11]],[58,474,[56]],[59,475,[57]],[69,476,[67]],[71,477,[69]],[70,478,[68]],[45,479,[43]],[19,480,[17]],[113,232,[6]],[113,481,[232]],[114,240,[5]],[114,482,[240]],[7,242,[233]],[7,483,[242]],[115,234,[241]],[115,484,[234]],[8,485,[235]],[11,243,[9]],[11,486,[243]],[48,324,[46]],[48,487,[324]],[116,318,[340]],[116,488,[318]],[117,344,[319]],[117,489,[344]],[56,325,[54]],[56,490,[325]],[58,491,[345]],[118,341,[56]],[118,492,[341]],[119,320,[48]],[119,493,[320]],[120,321,[52]],[120,494,[321]],[121,348,[47]],[121,495,[348]],[122,336,[322]],[122,496,[336]],[123,323,[349]],[123,497,[323]],[124,337,[58]],[124,498,[337]],[125,222,[228]],[125,499,[222]],[126,223,[11]],[126,500,[223]],[2,252,[0]],[2,501,[252]],[127,246,[3]],[127,502,[246]],[5,253,[229]],[5,503,[253]],[13,504,[247]],[64,354,[358]],[64,505,[354]],[71,506,[374]],[74,355,[72]],[74,507,[355]],[128,359,[69]],[128,508,[359]],[129,380,[62]],[129,509,[380]],[130,375,[381]],[130,510,[375]],[131,356,[63]],[131,511,[356]],[63,366,[61]],[63,512,[366]],[132,372,[357]],[132,513,[372]],[65,367,[360]],[65,514,[367]],[133,361,[68]],[133,515,[361]],[70,516,[373]],[134,272,[15]],[134,517,[272]],[135,256,[91]],[135,518,[256]],[136,430,[257]],[136,519,[430]],[137,420,[23]],[137,520,[420]],[138,431,[273]],[138,521,[431]],[139,421,[96]],[139,522,[421]],[140,308,[30]],[140,523,[308]],[141,286,[386]],[141,524,[286]],[142,402,[287]],[142,525,[402]],[143,387,[41]],[143,526,[387]],[144,309,[82]],[144,527,[309]],[145,403,[75]],[145,528,[403]],[146,338,[49]],[146,529,[338]],[147,326,[59]],[147,530,[326]],[148,376,[327]],[148,531,[376]],[149,350,[53]],[149,532,[350]],[150,339,[70]],[150,533,[339]],[151,351,[377]],[151,534,[351]],[152,280,[19]],[152,535,[280]],[153,264,[416]],[153,536,[264]],[154,265,[97]],[154,537,[265]],[155,281,[89]],[155,538,[281]],[156,432,[27]],[156,539,[432]],[157,417,[433]],[157,540,[417]],[158,296,[43]],[158,541,[296]],[159,384,[35]],[159,542,[384]],[37,400,[297]],[37,543,[400]],[160,312,[74]],[160,544,[312]],[45,545,[313]],[76,401,[385]],[76,546,[401]],[59,547,[346]],[67,328,[65]],[67,548,[328]],[68,329,[66]],[68,549,[329]],[161,364,[57]],[161,550,[364]],[162,347,[368]],[162,551,[347]],[163,369,[365]],[163,552,[369]],[164,268,[278]],[164,553,[268]],[165,426,[21]],[165,554,[426]],[166,269,[102]],[166,555,[269]],[167,279,[94]],[167,556,[279]],[168,442,[26]],[168,557,[442]],[169,427,[443]],[169,558,[427]],[170,298,[44]],[170,559,[298]],[171,299,[396]],[171,560,[299]],[172,406,[36]],[172,561,[406]],[173,314,[80]],[173,562,[314]],[174,315,[84]],[174,563,[315]],[175,397,[407]],[175,564,[397]],[176,342,[332]],[176,565,[342]],[177,362,[333]],[177,566,[362]],[178,378,[51]],[178,567,[378]],[179,363,[55]],[179,568,[363]],[180,343,[71]],[180,569,[343]],[181,379,[64]],[181,570,[379]],[182,260,[22]],[182,571,[260]],[183,422,[17]],[183,572,[422]],[19,573,[261]],[184,270,[92]],[184,574,[270]],[24,445,[271]],[24,575,[445]],[94,576,[423]],[185,302,[33]],[185,577,[302]],[186,292,[77]],[186,578,[292]],[187,412,[293]],[187,579,[412]],[188,390,[38]],[188,580,[390]],[189,303,[87]],[189,581,[303]],[190,391,[413]],[190,582,[391]],[52,334,[50]],[52,583,[334]],[191,330,[352]],[191,584,[330]],[192,331,[67]],[192,585,[331]],[62,335,[60]],[62,586,[335]],[69,587,[370]],[193,353,[371]],[193,588,[353]],[194,244,[13]],[194,589,[244]],[195,448,[10]],[195,590,[448]],[196,454,[245]],[196,591,[454]],[197,449,[250]],[197,592,[449]],[198,251,[107]],[198,593,[251]],[199,455,[104]],[199,594,[455]],[200,294,[290]],[200,595,[294]],[201,291,[83]],[201,596,[291]],[202,408,[32]],[202,597,[408]],[203,404,[295]],[203,598,[404]],[204,409,[34]],[204,599,[409]],[205,405,[85]],[205,600,[405]],[206,304,[42]],[206,601,[304]],[207,388,[39]],[207,602,[388]],[208,305,[394]],[208,603,[305]],[209,310,[76]],[209,604,[310]],[210,395,[311]],[210,605,[395]],[211,389,[79]],[211,606,[389]],[212,236,[1]],[212,607,[236]],[213,224,[452]],[213,608,[224]],[214,225,[108]],[214,609,[225]],[215,453,[7]],[215,610,[453]],[216,456,[237]],[216,611,[456]],[217,457,[106]],[217,612,[457]],[218,274,[284]],[218,613,[274]],[219,275,[99]],[219,614,[275]],[220,440,[24]],[220,615,[440]],[221,285,[436]],[221,616,[285]],[222,441,[29]],[222,617,[441]],[223,437,[101]],[223,618,[437]],[224,276,[28]],[224,619,[276]],[225,434,[277]],[225,620,[434]],[226,438,[25]],[226,621,[438]],[227,282,[435]],[227,622,[282]],[228,283,[100]],[228,623,[283]],[229,439,[98]],[229,624,[439]],[230,226,[4]],[230,625,[226]],[231,446,[2]],[231,626,[446]],[232,458,[227]],[232,627,[458]],[233,230,[103]],[233,628,[230]],[234,231,[459]],[234,629,[231]],[235,447,[109]],[235,630,[447]],[236,266,[14]],[236,631,[266]],[237,418,[254]],[237,632,[418]],[238,255,[428]],[238,633,[255]],[239,267,[90]],[239,634,[267]],[240,429,[20]],[240,635,[429]],[241,419,[95]],[241,636,[419]],[242,258,[18]],[242,637,[258]],[243,414,[16]],[243,638,[414]],[244,424,[259]],[244,639,[424]],[245,262,[415]],[245,640,[262]],[246,263,[93]],[246,641,[263]],[247,425,[88]],[247,642,[425]],[248,238,[248]],[248,643,[238]],[249,450,[8]],[249,644,[450]],[250,239,[110]],[250,645,[239]],[251,249,[105]],[251,646,[249]],[252,460,[12]],[252,647,[460]],[253,461,[451]],[253,648,[461]],[254,288,[37]],[254,649,[288]],[255,289,[398]],[255,650,[289]],[256,410,[31]],[256,651,[410]],[257,300,[81]],[257,652,[300]],[258,301,[411]],[258,653,[301]],[259,399,[86]],[259,654,[399]],[260,316,[40]],[260,655,[316]],[261,306,[382]],[261,656,[306]],[262,392,[307]],[262,657,[392]],[263,383,[45]],[263,658,[383]],[264,317,[78]],[264,659,[317]],[265,393,[73]],[265,660,[393]],[266,238,[226]],[266,238,[247]],[266,238,[243]],[266,238,[236]],[266,226,[244]],[266,236,[244]],[266,244,[247]],[266,244,[243]],[266,243,[244]],[266,247,[244]],[266,244,[236]],[266,244,[226]],[266,236,[238]],[266,243,[238]],[266,247,[238]],[266,226,[238]],[267,222,[353]],[267,379,[353]],[267,222,[369]],[267,379,[369]],[267,222,[486]],[267,351,[379]],[267,379,[222]],[267,369,[222]],[267,353,[222]],[267,486,[351]],[267,379,[351]],[267,369,[351]],[267,353,[351]],[268,223,[235]],[268,260,[280]],[268,274,[258]],[268,258,[260]],[268,260,[223]],[268,235,[260]],[268,274,[223]],[268,235,[274]],[268,223,[235]],[268,280,[274]],[268,258,[274]],[269,253,[485]],[269,389,[399]],[269,253,[389]],[269,403,[389]],[269,253,[397]],[269,403,[397]],[269,397,[253]],[269,397,[403]],[269,399,[397]],[269,389,[253]],[269,485,[403]],[269,389,[403]],[270,252,[234]],[270,252,[266]],[270,272,[266]],[270,252,[276]],[270,272,[276]],[270,266,[252]],[270,276,[252]],[270,252,[268]],[270,272,[268]],[270,268,[252]],[270,266,[272]],[270,276,[272]],[270,234,[272]],[271,246,[484]],[271,391,[401]],[271,405,[393]],[271,393,[391]],[271,391,[246]],[271,484,[391]],[271,405,[246]],[271,484,[405]],[271,246,[484]],[271,393,[405]],[271,401,[405]],[272,242,[501]],[272,302,[296]],[272,302,[242]],[272,501,[302]],[272,294,[242]],[272,242,[501]],[272,294,[316]],[272,302,[316]],[272,316,[302]],[272,296,[294]],[272,501,[294]],[272,242,[294]],[273,419,[439]],[273,502,[483]],[273,502,[419]],[273,439,[502]],[273,421,[419]],[273,419,[439]],[273,502,[427]],[273,421,[427]],[273,427,[502]],[273,419,[421]],[273,483,[421]],[273,439,[421]],[274,288,[304]],[274,500,[240]],[274,500,[288]],[274,304,[500]],[274,308,[288]],[274,288,[304]],[274,500,[298]],[274,308,[298]],[274,298,[500]],[274,240,[308]],[274,304,[308]],[274,288,[308]],[275,482,[503]],[275,417,[425]],[275,482,[417]],[275,482,[437]],[275,423,[437]],[275,417,[423]],[275,503,[417]],[275,425,[482]],[275,437,[425]],[275,425,[423]],[275,437,[417]],[275,423,[482]],[276,232,[504]],[276,232,[338]],[276,232,[346]],[276,232,[334]],[276,342,[334]],[276,346,[342]],[276,338,[346]],[276,504,[338]],[276,342,[232]],[276,346,[232]],[276,334,[346]],[276,346,[338]],[277,447,[461]],[277,481,[461]],[277,457,[447]],[277,461,[457]],[277,455,[457]],[277,499,[455]],[277,461,[455]],[277,481,[499]],[277,447,[481]],[277,461,[481]],[277,457,[481]],[278,339,[341]],[278,456,[341]],[278,339,[343]],[278,339,[375]],[278,456,[375]],[278,341,[339]],[278,375,[339]],[278,339,[231]],[278,456,[231]],[278,231,[339]],[278,341,[456]],[278,343,[456]],[278,375,[456]],[279,492,[354]],[279,492,[329]],[279,492,[449]],[279,492,[249]],[279,331,[249]],[279,331,[449]],[279,329,[331]],[279,354,[329]],[279,331,[492]],[279,249,[331]],[279,449,[331]],[279,331,[329]],[280,345,[380]],[280,261,[345]],[280,261,[299]],[280,261,[281]],[280,281,[309]],[280,380,[309]],[280,309,[299]],[280,299,[345]],[280,380,[345]],[280,380,[261]],[280,345,[380]],[280,299,[281]],[280,281,[261]],[280,309,[261]],[281,374,[263]],[281,410,[263]],[281,374,[275]],[281,410,[275]],[281,310,[410]],[281,374,[491]],[281,275,[310]],[281,410,[310]],[281,491,[310]],[281,263,[310]],[281,275,[374]],[281,410,[374]],[281,263,[374]],[282,256,[392]],[282,256,[404]],[282,256,[442]],[282,359,[325]],[282,359,[392]],[282,359,[404]],[282,404,[359]],[282,392,[359]],[282,359,[442]],[282,442,[359]],[282,404,[256]],[282,392,[256]],[282,325,[256]],[283,312,[412]],[283,312,[429]],[283,312,[434]],[283,355,[429]],[283,355,[434]],[283,355,[490]],[283,434,[355]],[283,429,[355]],[283,412,[355]],[283,490,[312]],[283,434,[312]],[283,429,[312]],[284,390,[283]],[284,508,[283]],[284,390,[418]],[284,508,[418]],[284,400,[390]],[284,508,[344]],[284,344,[400]],[284,390,[400]],[284,418,[400]],[284,283,[400]],[284,390,[508]],[284,418,[508]],[284,283,[508]],[285,383,[408]],[285,426,[431]],[285,431,[489]],[285,489,[383]],[285,408,[489]],[285,507,[383]],[285,383,[408]],[285,489,[426]],[285,431,[507]],[285,507,[426]],[285,426,[431]],[285,383,[507]],[285,408,[507]],[286,318,[509]],[286,441,[300]],[286,318,[441]],[286,318,[414]],[286,305,[414]],[286,305,[441]],[286,509,[305]],[286,300,[305]],[286,300,[318]],[286,414,[300]],[286,414,[441]],[286,441,[318]],[286,441,[305]],[287,265,[270]],[287,265,[315]],[287,265,[488]],[287,265,[506]],[287,270,[286]],[287,286,[488]],[287,286,[506]],[287,506,[286]],[287,488,[286]],[287,286,[315]],[287,506,[265]],[287,488,[265]],[287,315,[265]],[287,270,[265]],[288,326,[224]],[288,326,[446]],[288,326,[362]],[288,505,[224]],[288,505,[446]],[288,505,[324]],[288,362,[505]],[288,446,[505]],[288,224,[505]],[288,324,[326]],[288,446,[326]],[288,224,[326]],[289,454,[239]],[289,335,[454]],[289,487,[510]],[289,239,[487]],[289,487,[335]],[289,454,[487]],[289,364,[335]],[289,454,[364]],[289,335,[454]],[289,239,[364]],[289,510,[364]],[290,337,[373]],[290,370,[337]],[290,230,[337]],[290,453,[230]],[290,370,[453]],[290,337,[370]],[290,453,[347]],[290,347,[370]],[290,370,[453]],[290,373,[347]],[290,230,[347]],[291,356,[498]],[291,251,[460]],[291,498,[460]],[291,376,[460]],[291,460,[251]],[291,251,[356]],[291,378,[251]],[291,498,[356]],[291,356,[498]],[291,376,[378]],[291,498,[376]],[291,460,[376]],[291,356,[376]],[292,361,[406]],[292,387,[406]],[292,406,[424]],[292,285,[424]],[292,424,[406]],[292,387,[285]],[292,424,[285]],[292,323,[387]],[292,285,[387]],[292,361,[323]],[292,406,[361]],[292,424,[361]],[292,285,[361]],[293,497,[366]],[293,264,[289]],[293,497,[264]],[293,497,[395]],[293,445,[395]],[293,264,[445]],[293,366,[264]],[293,289,[497]],[293,395,[289]],[293,289,[445]],[293,395,[264]],[293,445,[497]],[294,255,[306]],[294,282,[255]],[294,367,[336]],[294,255,[367]],[294,367,[282]],[294,306,[367]],[294,255,[282]],[294,409,[282]],[294,306,[409]],[294,282,[306]],[294,255,[409]],[294,336,[409]],[295,269,[372]],[295,313,[372]],[295,269,[496]],[295,313,[496]],[295,420,[269]],[295,269,[313]],[295,496,[313]],[295,372,[313]],[295,420,[292]],[295,313,[292]],[295,269,[420]],[295,496,[420]],[295,372,[420]],[295,292,[420]],[296,348,[279]],[296,384,[279]],[296,303,[384]],[296,430,[303]],[296,279,[303]],[296,514,[430]],[296,279,[430]],[296,348,[514]],[296,303,[348]],[296,384,[348]],[296,279,[348]],[297,438,[317]],[297,513,[317]],[297,267,[438]],[297,317,[291]],[297,291,[267]],[297,495,[291]],[297,513,[495]],[297,317,[513]],[297,438,[513]],[297,267,[513]],[298,301,[422]],[298,515,[422]],[298,301,[388]],[298,422,[388]],[298,388,[422]],[298,388,[432]],[298,432,[301]],[298,321,[432]],[298,515,[321]],[298,301,[515]],[298,422,[515]],[298,388,[515]],[299,440,[262]],[299,314,[440]],[299,512,[494]],[299,262,[512]],[299,512,[314]],[299,440,[512]],[299,402,[314]],[299,440,[402]],[299,314,[440]],[299,262,[402]],[299,494,[402]],[300,225,[320]],[300,225,[458]],[300,225,[511]],[300,330,[320]],[300,330,[328]],[300,330,[511]],[300,511,[330]],[300,320,[330]],[300,330,[458]],[300,458,[330]],[300,511,[225]],[300,328,[225]],[300,320,[225]],[301,350,[363]],[301,350,[493]],[301,450,[493]],[301,350,[516]],[301,450,[516]],[301,516,[350]],[301,493,[350]],[301,350,[450]],[301,448,[450]],[301,450,[350]],[301,350,[448]],[301,516,[448]],[301,493,[448]],[301,363,[448]],[302,522,[548]],[302,522,[553]],[302,522,[604]],[302,522,[652]],[302,587,[652]],[302,587,[604]],[302,548,[587]],[302,587,[522]],[302,652,[587]],[302,604,[587]],[302,587,[548]],[302,553,[548]],[303,521,[539]],[303,521,[557]],[303,607,[630]],[303,630,[575]],[303,557,[575]],[303,575,[521]],[303,539,[575]],[303,607,[521]],[303,539,[607]],[303,521,[539]],[303,630,[607]],[303,557,[607]],[304,520,[556]],[304,591,[646]],[304,618,[637]],[304,646,[618]],[304,618,[520]],[304,556,[618]],[304,591,[520]],[304,556,[591]],[304,520,[556]],[304,646,[591]],[304,637,[591]],[305,519,[555]],[305,613,[642]],[305,613,[519]],[305,555,[613]],[305,592,[519]],[305,519,[555]],[305,613,[645]],[305,592,[645]],[305,645,[613]],[305,519,[592]],[305,642,[592]],[305,555,[592]],[306,536,[554]],[306,612,[554]],[306,554,[518]],[306,572,[518]],[306,612,[625]],[306,554,[612]],[306,518,[612]],[306,554,[536]],[306,572,[536]],[306,536,[554]],[306,536,[572]],[306,612,[572]],[306,625,[572]],[307,517,[551]],[307,517,[584]],[307,517,[603]],[307,517,[651]],[307,551,[558]],[307,558,[584]],[307,584,[603]],[307,584,[651]],[307,558,[517]],[307,651,[558]],[307,651,[584]],[307,603,[558]],[307,603,[584]],[307,584,[551]],[307,551,[517]],[308,550,[585]],[308,550,[622]],[308,559,[622]],[308,550,[634]],[308,559,[634]],[308,528,[559]],[308,559,[528]],[308,585,[528]],[308,622,[528]],[308,634,[528]],[308,559,[550]],[308,622,[550]],[308,634,[550]],[309,527,[563]],[309,610,[627]],[309,527,[610]],[309,527,[655]],[309,600,[655]],[309,600,[610]],[309,563,[600]],[309,655,[600]],[309,655,[527]],[309,627,[655]],[309,610,[527]],[309,610,[600]],[310,579,[543]],[310,648,[543]],[310,589,[579]],[310,589,[648]],[310,543,[589]],[310,579,[589]],[310,526,[589]],[310,589,[579]],[310,543,[562]],[310,526,[562]],[310,562,[543]],[310,579,[526]],[310,589,[526]],[310,648,[526]],[311,561,[525]],[311,544,[561]],[311,643,[561]],[311,561,[580]],[311,594,[580]],[311,594,[643]],[311,544,[594]],[311,580,[594]],[311,561,[544]],[311,580,[544]],[311,643,[544]],[311,525,[544]],[312,524,[595]],[312,560,[524]],[312,628,[609]],[312,524,[628]],[312,628,[560]],[312,595,[628]],[312,524,[560]],[312,660,[560]],[312,595,[660]],[312,560,[595]],[312,524,[660]],[312,609,[660]],[313,549,[586]],[313,564,[586]],[313,523,[564]],[313,586,[633]],[313,621,[633]],[313,633,[586]],[313,549,[621]],[313,633,[621]],[313,621,[549]],[313,523,[549]],[313,564,[523]],[313,586,[523]],[313,621,[523]],[313,633,[523]],[314,602,[620]],[314,565,[650]],[314,620,[650]],[314,632,[650]],[314,650,[620]],[314,650,[602]],[314,602,[632]],[314,534,[602]],[314,565,[534]],[314,620,[565]],[314,632,[565]],[314,650,[565]],[315,566,[599]],[315,576,[599]],[315,533,[566]],[315,599,[535]],[315,535,[659]],[315,533,[535]],[315,535,[576]],[315,576,[533]],[315,566,[576]],[315,599,[576]],[315,659,[576]],[316,614,[638]],[316,532,[614]],[316,546,[567]],[316,532,[546]],[316,567,[577]],[316,577,[614]],[316,546,[577]],[316,577,[532]],[316,638,[577]],[316,567,[532]],[316,614,[546]],[316,614,[567]],[317,531,[541]],[317,541,[568]],[317,617,[641]],[317,568,[641]],[317,641,[568]],[317,541,[617]],[317,541,[582]],[317,582,[531]],[317,531,[541]],[317,641,[582]],[317,617,[582]],[317,568,[582]],[317,582,[541]],[318,569,[571]],[318,571,[596]],[318,656,[571]],[318,596,[571]],[318,596,[540]],[318,540,[656]],[318,530,[540]],[318,569,[530]],[318,571,[569]],[318,596,[569]],[318,656,[569]],[319,529,[570]],[319,623,[635]],[319,529,[623]],[319,529,[653]],[319,605,[653]],[319,605,[623]],[319,570,[605]],[319,653,[605]],[319,653,[529]],[319,635,[653]],[319,623,[529]],[319,623,[605]],[320,538,[574]],[320,593,[644]],[320,624,[631]],[320,644,[624]],[320,624,[538]],[320,574,[624]],[320,593,[538]],[320,574,[593]],[320,538,[574]],[320,644,[593]],[320,631,[593]],[321,537,[573]],[321,590,[537]],[321,573,[590]],[321,619,[537]],[321,537,[573]],[321,619,[647]],[321,590,[647]],[321,619,[636]],[321,590,[636]],[321,636,[590]],[321,537,[619]],[321,647,[619]],[321,573,[619]],[322,581,[601]],[322,581,[611]],[322,581,[626]],[322,545,[581]],[322,581,[654]],[322,611,[654]],[322,601,[626]],[322,626,[545]],[322,626,[654]],[322,654,[601]],[322,654,[626]],[322,601,[611]],[322,611,[545]],[323,578,[542]],[323,578,[608]],[323,606,[608]],[323,578,[629]],[323,606,[629]],[323,608,[578]],[323,629,[578]],[323,578,[649]],[323,606,[649]],[323,649,[578]],[323,608,[606]],[323,629,[606]],[323,542,[606]],[324,552,[658]],[324,616,[658]],[324,640,[616]],[324,658,[598]],[324,598,[640]],[324,583,[598]],[324,552,[583]],[324,658,[552]],[324,640,[552]],[324,616,[552]],[325,588,[657]],[325,615,[657]],[325,639,[615]],[325,657,[597]],[325,597,[639]],[325,547,[597]],[325,588,[547]],[325,615,[588]],[325,639,[588]],[325,657,[588]],[326,247,[351]],[327,235,[403]],[328,234,[484]],[329,501,[483]],[330,240,[417]],[331,504,[499]],[332,375,[329]],[333,345,[310]],[334,256,[490]],[335,400,[507]],[336,509,[488]],[337,326,[510]],[338,373,[498]],[339,323,[366]],[340,409,[372]],[341,430,[291]],[342,432,[402]],[343,511,[493]],[344,243,[338]],[345,485,[503]],[346,246,[421]],[347,272,[242]],[348,223,[308]],[349,486,[455]],[350,341,[364]],[351,305,[380]],[352,344,[325]],[353,312,[489]],[354,491,[506]],[355,324,[354]],[356,347,[516]],[357,387,[321]],[358,336,[514]],[359,495,[496]],[360,494,[264]],[361,320,[356]],[362,502,[548]],[363,539,[426]],[364,520,[313]],[365,555,[348]],[366,536,[359]],[367,252,[517]],[368,253,[550]],[369,600,[309]],[370,543,[361]],[371,525,[512]],[372,595,[265]],[373,500,[549]],[374,222,[534]],[375,456,[535]],[376,363,[546]],[377,251,[541]],[378,505,[530]],[379,232,[570]],[380,482,[569]],[381,521,[515]],[382,574,[281]],[383,573,[286]],[384,518,[497]],[385,274,[533]],[386,405,[532]],[387,601,[420]],[388,561,[355]],[389,526,[508]],[390,606,[384]],[391,296,[531]],[392,369,[598]],[393,337,[551]],[394,487,[528]],[395,492,[523]],[396,225,[522]],[397,342,[597]],[398,427,[584]],[399,557,[442]],[400,556,[279]],[401,519,[269]],[402,612,[431]],[403,268,[553]],[404,389,[564]],[405,563,[315]],[406,562,[440]],[407,544,[285]],[408,524,[261]],[409,298,[559]],[410,379,[605]],[411,343,[540]],[412,448,[617]],[413,378,[567]],[414,362,[566]],[415,346,[602]],[416,437,[599]],[417,607,[395]],[418,538,[270]],[419,537,[299]],[420,554,[388]],[421,280,[596]],[422,401,[582]],[423,581,[303]],[424,594,[390]],[425,589,[412]],[426,542,[292]],[427,294,[614]],[428,353,[547]],[429,453,[587]],[430,454,[621]],[431,331,[585]],[432,328,[558]],[433,334,[583]],[434,481,[580]],[435,624,[376]],[436,613,[249]],[437,618,[335]],[438,619,[350]],[439,244,[579]],[440,527,[391]],[441,367,[576]],[442,392,[552]],[443,588,[383]],[444,571,[513]],[445,302,[560]],[446,578,[397]],[447,445,[529]],[448,374,[604]],[449,603,[318]],[450,565,[422]],[451,304,[545]],[452,457,[572]],[453,626,[339]],[454,627,[370]],[455,660,[330]],[456,608,[446]],[457,236,[575]],[458,423,[591]],[459,568,[441]],[460,616,[406]],[461,314,[615]],[462,275,[577]],[463,260,[592]],[464,419,[593]],[465,283,[635]],[466,255,[634]],[467,586,[438]],[468,620,[434]],[469,266,[590]],[470,447,[630]],[471,629,[231]],[472,609,[230]],[473,655,[458]],[474,611,[224]],[475,226,[625]],[476,439,[636]],[477,429,[653]],[478,267,[622]],[479,633,[306]],[480,632,[418]],[481,276,[631]],[482,425,[642]],[483,263,[641]],[484,262,[640]],[485,639,[424]],[486,638,[300]],[487,258,[637]],[488,461,[648]],[489,647,[460]],[490,646,[449]],[491,645,[239]],[492,644,[450]],[493,238,[643]],[494,654,[399]],[495,301,[623]],[496,414,[652]],[497,651,[410]],[498,650,[289]],[499,288,[649]],[500,628,[393]],[501,659,[317]],[502,658,[408]],[503,404,[657]],[504,282,[656]],[505,316,[610]],[506,349,[6]],[506,349,[56]],[506,349,[319]],[506,349,[322]],[506,340,[233]],[506,349,[340]],[506,349,[462]],[506,349,[463]],[506,340,[241]],[506,340,[319]],[506,340,[349]],[506,340,[464]],[506,241,[6]],[506,241,[56]],[506,241,[233]],[506,241,[319]],[506,241,[322]],[506,241,[463]],[506,241,[464]],[507,360,[68]],[507,360,[69]],[507,360,[357]],[507,360,[358]],[507,360,[381]],[507,381,[11]],[507,381,[69]],[507,381,[228]],[507,381,[358]],[507,381,[360]],[507,381,[465]],[508,385,[43]],[508,385,[57]],[508,385,[297]],[508,385,[416]],[508,385,[433]],[508,385,[466]],[508,385,[467]],[508,368,[365]],[508,368,[385]],[508,368,[433]],[508,368,[466]],[79,444,[470]],[509,444,[271]],[509,444,[293]],[509,444,[352]],[509,413,[17]],[509,444,[413]],[509,444,[468]],[509,444,[471]],[509,413,[271]],[509,413,[293]],[509,413,[352]],[509,413,[371]],[509,413,[471]],[470,436,[447]],[348,349,[223]],[330,228,[240]],[455,415,[660]],[456,227,[608]],[490,311,[646]],[331,360,[504]],[349,322,[486]],[491,295,[645]],[438,382,[619]],[478,435,[267]],[364,396,[520]],[483,237,[263]],[418,433,[538]],[485,284,[639]],[380,293,[482]],[382,271,[574]],[399,257,[557]],[420,368,[554]],[458,459,[423]],[465,254,[283]],[401,273,[519]],[461,259,[314]],[441,307,[367]],[444,248,[571]],[406,327,[562]],[497,245,[651]],[426,416,[542]],[447,451,[445]],[501,290,[659]],[371,333,[525]],[372,278,[595]],[449,398,[603]],[390,413,[606]],[517,413,[469]],[408,377,[524]],[332,381,[375]],[340,358,[409]],[341,357,[430]],[336,229,[509]],[374,332,[222]],[376,407,[363]],[392,444,[369]],[393,352,[337]],[428,385,[353]],[411,386,[343]],[412,287,[448]],[432,365,[328]],[351,340,[305]],[352,233,[344]],[357,319,[387]],[361,241,[320]],[505,250,[316]],[391,371,[296]],[427,297,[294]],[499,394,[288]],[481,452,[276]],[367,443,[252]],[469,428,[266]],[475,277,[226]],[439,411,[244]],[328,472,[234]],[510,472,[240]],[510,472,[360]],[346,473,[246]],[511,473,[349]],[511,473,[486]],[335,474,[400]],[512,474,[381]],[512,474,[509]],[394,475,[487]],[513,475,[444]],[513,475,[337]],[431,476,[331]],[514,476,[385]],[514,476,[328]],[350,477,[341]],[515,477,[340]],[515,477,[233]],[359,478,[495]],[516,478,[387]],[516,478,[241]],[388,479,[561]],[517,479,[413]],[517,479,[296]],[421,480,[280]],[518,480,[538]],[518,480,[368]]],"B":[[127,111,[3]],[217,112,[106]],[233,113,[103]],[235,115,[109]],[11,116,[9]],[114,117,[5]],[214,118,[108]],[252,119,[12]],[198,121,[107]],[2,122,[0]],[249,123,[8]],[199,124,[104]],[239,125,[90]],[139,126,[96]],[246,127,[93]],[184,128,[92]],[247,129,[88]],[155,130,[89]],[241,131,[95]],[168,132,[26]],[135,134,[91]],[222,135,[29]],[229,136,[98]],[165,137,[21]],[154,138,[97]],[226,139,[25]],[223,140,[101]],[143,141,[41]],[257,142,[81]],[205,143,[85]],[188,144,[38]],[202,145,[32]],[160,146,[74]],[173,147,[80]],[259,148,[86]],[186,149,[77]],[211,150,[79]],[263,151,[45]],[145,152,[75]],[207,153,[39]],[159,154,[35]],[172,155,[36]],[265,156,[73]],[124,158,[58]],[121,159,[47]],[149,160,[53]],[62,161,[60]],[181,162,[64]],[119,163,[48]],[147,164,[59]],[48,165,[46]],[178,166,[51]],[56,167,[54]],[67,168,[65]],[120,169,[52]],[150,170,[70]],[74,173,[72]],[63,174,[61]],[180,175,[71]],[68,176,[66]],[52,178,[50]],[131,179,[63]],[129,180,[62]],[146,181,[49]],[179,182,[55]],[264,184,[78]],[144,186,[82]],[206,187,[42]],[189,188,[87]],[260,189,[40]],[209,190,[76]],[174,191,[84]],[256,192,[31]],[140,193,[30]],[204,194,[34]],[170,195,[44]],[201,196,[83]],[254,197,[37]],[185,198,[33]],[242,199,[18]],[156,200,[27]],[240,201,[20]],[134,202,[15]],[182,203,[22]],[243,204,[16]],[166,205,[102]],[236,206,[14]],[137,207,[23]],[152,208,[19]],[228,209,[100]],[220,210,[24]],[224,211,[28]],[219,212,[99]],[167,213,[94]],[230,214,[4]],[194,215,[13]],[250,216,[110]],[212,217,[1]],[195,218,[10]],[215,219,[7]],[231,220,[2]],[251,221,[105]],[506,52,[58]],[506,52,[54]],[506,47,[48]],[506,58,[48]],[506,48,[5]],[506,47,[46]],[506,5,[9]],[506,52,[56]],[506,52,[6]],[506,9,[6]],[506,46,[56]],[506,52,[5]],[506,52,[47]],[506,56,[52]],[506,5,[52]],[506,54,[52]],[506,58,[52]],[506,47,[52]],[506,9,[52]],[506,46,[54]],[506,48,[9]],[507,3,[62]],[507,465,[69]],[507,69,[62]],[507,68,[11]],[507,68,[63]],[507,63,[0]],[507,69,[11]],[507,61,[72]],[507,61,[0]],[507,62,[3]],[507,11,[3]],[507,465,[63]],[507,63,[72]],[507,68,[61]],[507,62,[69]],[507,61,[62]],[507,63,[62]],[507,3,[68]],[507,62,[68]],[507,69,[68]],[507,465,[3]],[507,72,[3]],[507,11,[69]],[507,0,[69]],[519,49,[75]],[519,49,[41]],[519,30,[49]],[519,59,[53]],[519,53,[41]],[519,41,[82]],[519,53,[75]],[519,59,[30]],[519,15,[91]],[519,30,[75]],[519,96,[23]],[519,82,[70]],[519,59,[82]],[519,75,[82]],[519,82,[96]],[519,82,[15]],[519,30,[82]],[519,82,[53]],[519,96,[59]],[519,91,[59]],[519,15,[96]],[519,70,[15]],[519,49,[15]],[519,23,[15]],[519,41,[15]],[519,75,[70]],[519,53,[49]],[508,43,[97]],[508,74,[19]],[508,35,[74]],[508,35,[43]],[508,66,[57]],[508,89,[35]],[508,89,[27]],[508,66,[35]],[508,43,[66]],[508,66,[65]],[508,65,[89]],[508,27,[66]],[508,97,[27]],[508,43,[65]],[508,35,[97]],[508,57,[89]],[508,97,[19]],[508,35,[89]],[508,74,[43]],[508,466,[43]],[508,43,[19]],[520,36,[80]],[520,44,[84]],[520,44,[36]],[520,94,[21]],[520,55,[64]],[520,55,[44]],[520,55,[71]],[520,55,[51]],[520,44,[94]],[520,44,[102]],[520,44,[26]],[520,94,[55]],[520,21,[26]],[520,71,[44]],[520,80,[55]],[520,84,[71]],[520,26,[51]],[520,84,[64]],[520,80,[21]],[520,71,[51]],[520,51,[44]],[520,44,[55]],[520,21,[94]],[520,26,[36]],[520,80,[102]],[520,102,[94]],[520,26,[102]],[520,64,[51]],[520,36,[44]],[509,87,[77]],[509,87,[38]],[509,77,[33]],[509,87,[22]],[509,87,[50]],[509,87,[92]],[509,87,[60]],[509,87,[67]],[509,468,[38]],[509,38,[33]],[509,33,[87]],[509,17,[33]],[509,33,[22]],[509,92,[33]],[509,38,[17]],[509,67,[17]],[509,77,[17]],[509,60,[17]],[509,468,[92]],[509,50,[67]],[521,10,[107]],[521,13,[85]],[521,76,[42]],[521,79,[104]],[521,79,[76]],[521,79,[13]],[521,83,[32]],[521,83,[34]],[521,83,[10]],[521,83,[79]],[521,10,[39]],[521,39,[83]],[521,104,[34]],[521,34,[39]],[521,104,[107]],[521,76,[107]],[521,107,[13]],[521,107,[79]],[521,32,[42]],[521,79,[10]],[521,13,[34]],[521,34,[42]],[521,42,[83]],[521,10,[83]],[521,85,[79]],[521,32,[34]],[521,76,[10]],[521,34,[104]],[521,104,[10]],[521,107,[34]],[522,101,[7]],[522,29,[24]],[522,29,[98]],[522,29,[101]],[522,1,[108]],[522,29,[99]],[522,28,[100]],[522,7,[25]],[522,7,[108]],[522,108,[24]],[522,108,[29]],[522,29,[1]],[522,100,[25]],[522,29,[25]],[522,108,[98]],[522,108,[99]],[522,106,[29]],[522,29,[100]],[522,25,[7]],[522,28,[106]],[522,1,[28]],[522,98,[28]],[522,24,[28]],[522,100,[28]],[522,99,[28]],[522,25,[28]],[522,101,[24]],[522,7,[1]],[522,108,[25]],[523,18,[88]],[523,93,[16]],[523,93,[18]],[523,2,[4]],[523,2,[93]],[523,14,[90]],[523,20,[95]],[523,103,[109]],[523,103,[2]],[523,20,[14]],[523,2,[20]],[523,20,[103]],[523,95,[18]],[523,4,[2]],[523,14,[18]],[523,93,[103]],[523,109,[18]],[523,90,[103]],[523,18,[20]],[523,93,[2]],[523,20,[88]],[523,14,[18]],[523,109,[18]],[523,88,[18]],[523,95,[18]],[523,16,[20]],[524,8,[86]],[524,8,[105]],[524,110,[12]],[524,12,[73]],[524,73,[86]],[524,40,[73]],[524,105,[37]],[524,110,[8]],[524,40,[45]],[524,31,[78]],[524,73,[8]],[524,31,[81]],[524,31,[37]],[524,78,[31]],[524,110,[31]],[524,31,[40]],[524,73,[31]],[524,45,[110]],[524,40,[110]],[524,12,[110]],[524,81,[40]],[524,37,[40]],[524,78,[40]],[524,8,[40]],[524,86,[40]],[524,105,[78]],[345,9,[485]],[454,93,[627]],[471,99,[629]],[344,5,[243]],[474,25,[611]],[327,62,[235]],[326,0,[247]],[452,2,[457]],[488,34,[461]],[329,69,[501]],[434,31,[481]],[347,48,[272]],[492,39,[644]],[437,73,[618]],[477,106,[429]],[363,21,[539]],[484,101,[262]],[416,97,[437]],[482,28,[425]],[381,92,[521]],[476,100,[439]],[400,91,[556]],[419,35,[537]],[362,94,[502]],[459,109,[568]],[466,95,[255]],[398,23,[427]],[384,87,[518]],[464,103,[419]],[462,16,[275]],[369,36,[600]],[496,42,[414]],[440,45,[527]],[422,43,[401]],[443,86,[588]],[386,77,[405]],[405,49,[563]],[494,76,[654]],[425,27,[589]],[448,81,[374]],[500,79,[628]],[368,102,[253]],[446,78,[578]],[389,38,[526]],[404,41,[389]],[504,32,[282]],[333,72,[345]],[338,11,[373]],[342,63,[432]],[375,51,[456]],[429,89,[453]],[410,82,[379]],[339,465,[323]],[377,71,[251]],[337,3,[326]],[413,15,[378]],[334,68,[256]],[395,17,[492]],[343,61,[511]],[379,64,[232]],[433,65,[334]],[356,47,[347]],[354,46,[491]],[360,58,[494]],[415,30,[346]],[397,50,[342]],[396,60,[225]],[430,57,[454]],[358,52,[336]],[353,56,[312]],[378,84,[505]],[414,53,[362]],[355,54,[324]],[503,13,[404]],[387,67,[601]],[373,26,[500]],[451,105,[304]],[423,74,[581]],[502,85,[658]],[450,37,[565]],[407,75,[544]],[495,107,[301]],[370,44,[543]],[445,110,[302]],[409,70,[298]],[442,12,[392]],[498,83,[650]],[424,466,[594]],[487,24,[258]],[383,33,[573]],[479,29,[633]],[365,55,[555]],[417,66,[607]],[486,108,[638]],[403,96,[268]],[480,98,[632]],[366,80,[536]],[385,468,[274]],[467,90,[586]],[463,88,[260]],[468,14,[620]],[460,18,[616]],[402,59,[612]],[473,7,[655]],[435,40,[624]],[489,104,[647]],[453,20,[626]],[436,8,[613]],[457,4,[236]],[472,1,[609]],[493,10,[238]],[525,111,[243,9,246]],[526,112,[457,626,93]],[527,113,[436,99,609]],[528,114,[5,272,223]],[529,115,[447,655,25]],[530,116,[247,62,234]],[531,117,[0,501,228]],[532,118,[2,660,608]],[533,119,[34,647,311]],[534,120,[235,69,504]],[535,121,[31,624,613]],[536,122,[485,48,322]],[537,123,[461,645,39]],[538,124,[481,73,382]],[539,125,[439,106,267]],[540,126,[502,21,520]],[541,127,[425,237,101]],[542,128,[97,607,433]],[543,129,[28,639,638]],[544,130,[482,92,271]],[545,131,[100,633,632]],[546,132,[427,257,91]],[547,133,[437,35,554]],[548,134,[94,555,536]],[549,135,[459,109,616]],[550,136,[419,254,95]],[551,137,[23,273,612]],[552,138,[293,573,87]],[553,139,[103,586,620]],[554,140,[423,314,16]],[555,141,[253,36,543]],[556,142,[654,301,42]],[557,143,[45,367,392]],[558,144,[43,581,594]],[559,145,[527,86,571]],[560,146,[77,601,561]],[561,147,[389,49,327]],[562,148,[76,245,650]],[563,149,[401,27,416]],[564,150,[578,445,81]],[565,151,[79,290,658]],[566,152,[102,525,278]],[567,153,[78,603,565]],[568,154,[405,38,606]],[569,155,[41,544,524]],[570,156,[628,404,32]],[571,157,[375,72,256]],[572,158,[11,323,358]],[573,159,[373,357,63]],[574,160,[332,51,363]],[575,161,[353,89,454]],[576,162,[82,343,287]],[577,163,[465,430,511]],[578,164,[222,71,505]],[579,165,[345,400,3]],[580,166,[379,15,362]],[581,167,[68,229,326]],[582,168,[369,17,225]],[583,169,[409,432,61]],[584,170,[456,251,64]],[585,171,[453,331,65]],[586,172,[47,319,336]],[587,173,[341,312,46]],[588,174,[347,495,58]],[589,175,[386,378,30]],[590,176,[352,492,50]],[591,177,[487,60,342]],[592,178,[57,365,334]],[593,179,[52,494,320]],[594,180,[305,56,324]],[595,181,[407,84,232]],[596,182,[448,53,346]],[597,183,[344,491,54]],[598,184,[659,13,250]],[599,185,[67,526,371]],[600,186,[600,333,26]],[601,187,[451,398,105]],[602,188,[74,589,294]],[603,189,[85,282,316]],[604,190,[374,37,304]],[605,191,[563,75,298]],[606,192,[107,651,288]],[607,193,[44,595,500]],[608,194,[307,588,110]],[609,195,[562,377,70]],[610,196,[12,248,302]],[611,197,[414,83,394]],[612,198,[466,542,297]],[613,199,[263,284,24]],[614,200,[521,33,274]],[615,201,[429,29,452]],[616,202,[539,55,252]],[617,203,[66,537,280]],[618,204,[262,108,258]],[619,205,[557,519,96]],[620,206,[435,98,276]],[621,207,[396,80,443]],[622,208,[574,518,468]],[623,209,[283,90,428]],[624,210,[568,259,88]],[625,211,[255,14,266]],[626,212,[18,275,260]],[627,213,[556,59,268]],[628,214,[629,7,277]],[629,215,[40,618,411]],[630,216,[104,295,238]],[631,217,[20,415,236]],[632,218,[8,619,244]],[633,219,[627,227,4]],[634,220,[1,611,226]],[635,221,[646,644,10]]],"C":[[1,10,[238]],[1,1,[609]],[1,4,[236]],[1,8,[613]],[1,20,[626]],[1,104,[647]],[1,40,[624]],[1,7,[655]],[1,59,[612]],[1,18,[616]],[1,14,[620]],[1,88,[260]],[1,90,[586]],[1,468,[274]],[1,80,[536]],[1,98,[632]],[1,96,[268]],[1,108,[638]],[1,66,[607]],[1,55,[555]],[1,29,[633]],[1,33,[573]],[1,24,[258]],[1,466,[594]],[1,83,[650]],[1,12,[392]],[1,70,[298]],[1,110,[302]],[1,44,[543]],[1,107,[301]],[1,75,[544]],[1,37,[565]],[1,85,[658]],[1,74,[581]],[1,105,[304]],[1,26,[500]],[1,67,[601]],[1,13,[404]],[1,54,[324]],[1,53,[362]],[1,84,[505]],[1,56,[312]],[1,52,[336]],[1,57,[454]],[1,60,[225]],[1,50,[342]],[1,30,[346]],[1,58,[494]],[1,46,[491]],[1,47,[347]],[1,65,[334]],[1,64,[232]],[1,61,[511]],[1,17,[492]],[1,68,[256]],[1,15,[378]],[1,3,[326]],[1,71,[251]],[1,465,[323]],[1,82,[379]],[1,89,[453]],[1,51,[456]],[1,63,[432]],[1,11,[373]],[1,72,[345]],[1,32,[282]],[1,41,[389]],[1,38,[526]],[1,78,[578]],[1,102,[253]],[1,79,[628]],[1,81,[374]],[1,27,[589]],[1,76,[654]],[1,49,[563]],[1,77,[405]],[1,86,[588]],[1,43,[401]],[1,45,[527]],[1,42,[414]],[1,36,[600]],[1,16,[275]],[1,103,[419]],[1,87,[518]],[1,23,[427]],[1,95,[255]],[1,109,[568]],[1,94,[502]],[1,35,[537]],[1,91,[556]],[1,100,[439]],[1,92,[521]],[1,28,[425]],[1,97,[437]],[1,101,[262]],[1,21,[539]],[1,106,[429]],[1,73,[618]],[1,39,[644]],[1,48,[272]],[1,31,[481]],[1,69,[501]],[1,34,[461]],[1,2,[457]],[1,0,[247]],[1,62,[235]],[1,25,[611]],[1,5,[243]],[1,99,[629]],[1,93,[627]],[1,9,[485]],[1,105,[78]],[1,86,[40]],[1,8,[40]],[1,78,[40]],[1,37,[40]],[1,81,[40]],[1,12,[110]],[1,40,[110]],[1,45,[110]],[1,73,[31]],[1,31,[40]],[1,110,[31]],[1,78,[31]],[1,31,[37]],[1,31,[81]],[1,73,[8]],[1,31,[78]],[1,40,[45]],[1,110,[8]],[1,105,[37]],[1,40,[73]],[1,73,[86]],[1,12,[73]],[1,110,[12]],[1,8,[105]],[1,8,[86]],[1,16,[20]],[1,95,[18]],[1,88,[18]],[1,109,[18]],[1,14,[18]],[1,20,[88]],[1,93,[2]],[1,18,[20]],[1,90,[103]],[1,109,[18]],[1,93,[103]],[1,14,[18]],[1,4,[2]],[1,95,[18]],[1,20,[103]],[1,2,[20]],[1,20,[14]],[1,103,[2]],[1,103,[109]],[1,20,[95]],[1,14,[90]],[1,2,[93]],[1,2,[4]],[1,93,[18]],[1,93,[16]],[1,18,[88]],[1,108,[25]],[1,7,[1]],[1,101,[24]],[1,25,[28]],[1,99,[28]],[1,100,[28]],[1,24,[28]],[1,98,[28]],[1,1,[28]],[1,28,[106]],[1,25,[7]],[1,29,[100]],[1,106,[29]],[1,108,[99]],[1,108,[98]],[1,29,[25]],[1,100,[25]],[1,29,[1]],[1,108,[29]],[1,108,[24]],[1,7,[108]],[1,7,[25]],[1,28,[100]],[1,29,[99]],[1,1,[108]],[1,29,[101]],[1,29,[98]],[1,29,[24]],[1,101,[7]],[1,107,[34]],[1,104,[10]],[1,34,[104]],[1,76,[10]],[1,32,[34]],[1,85,[79]],[1,10,[83]],[1,42,[83]],[1,34,[42]],[1,13,[34]],[1,79,[10]],[1,32,[42]],[1,107,[79]],[1,107,[13]],[1,76,[107]],[1,104,[107]],[1,34,[39]],[1,104,[34]],[1,39,[83]],[1,10,[39]],[1,83,[79]],[1,83,[10]],[1,83,[34]],[1,83,[32]],[1,79,[13]],[1,79,[76]],[1,79,[104]],[1,76,[42]],[1,13,[85]],[1,10,[107]],[1,50,[67]],[1,468,[92]],[1,60,[17]],[1,77,[17]],[1,67,[17]],[1,38,[17]],[1,92,[33]],[1,33,[22]],[1,17,[33]],[1,33,[87]],[1,38,[33]],[1,468,[38]],[1,87,[67]],[1,87,[60]],[1,87,[92]],[1,87,[50]],[1,87,[22]],[1,77,[33]],[1,87,[38]],[1,87,[77]],[1,36,[44]],[1,64,[51]],[1,26,[102]],[1,102,[94]],[1,80,[102]],[1,26,[36]],[1,21,[94]],[1,44,[55]],[1,51,[44]],[1,71,[51]],[1,80,[21]],[1,84,[64]],[1,26,[51]],[1,84,[71]],[1,80,[55]],[1,71,[44]],[1,21,[26]],[1,94,[55]],[1,44,[26]],[1,44,[102]],[1,44,[94]],[1,55,[51]],[1,55,[71]],[1,55,[44]],[1,55,[64]],[1,94,[21]],[1,44,[36]],[1,44,[84]],[1,36,[80]],[1,43,[19]],[1,466,[43]],[1,74,[43]],[1,35,[89]],[1,97,[19]],[1,57,[89]],[1,35,[97]],[1,43,[65]],[1,97,[27]],[1,27,[66]],[1,65,[89]],[1,66,[65]],[1,43,[66]],[1,66,[35]],[1,89,[27]],[1,89,[35]],[1,66,[57]],[1,35,[43]],[1,35,[74]],[1,74,[19]],[1,43,[97]],[1,53,[49]],[1,75,[70]],[1,41,[15]],[1,23,[15]],[1,49,[15]],[1,70,[15]],[1,15,[96]],[1,91,[59]],[1,96,[59]],[1,82,[53]],[1,30,[82]],[1,82,[15]],[1,82,[96]],[1,75,[82]],[1,59,[82]],[1,82,[70]],[1,96,[23]],[1,30,[75]],[1,15,[91]],[1,59,[30]],[1,53,[75]],[1,41,[82]],[1,53,[41]],[1,59,[53]],[1,30,[49]],[1,49,[41]],[1,49,[75]],[1,0,[69]],[1,11,[69]],[1,72,[3]],[1,465,[3]],[1,69,[68]],[1,62,[68]],[1,3,[68]],[1,63,[62]],[1,61,[62]],[1,62,[69]],[1,68,[61]],[1,63,[72]],[1,465,[63]],[1,11,[3]],[1,62,[3]],[1,61,[0]],[1,61,[72]],[1,69,[11]],[1,63,[0]],[1,68,[63]],[1,68,[11]],[1,69,[62]],[1,465,[69]],[1,3,[62]],[1,48,[9]],[1,46,[54]],[1,9,[52]],[1,47,[52]],[1,58,[52]],[1,54,[52]],[1,5,[52]],[1,56,[52]],[1,52,[47]],[1,52,[5]],[1,46,[56]],[1,9,[6]],[1,52,[6]],[1,52,[56]],[1,5,[9]],[1,47,[46]],[1,48,[5]],[1,58,[48]],[1,47,[48]],[1,52,[54]],[1,52,[58]],[1,480,[368]],[1,480,[538]],[1,480,[280]],[1,479,[296]],[1,479,[413]],[1,479,[561]],[1,478,[241]],[1,478,[387]],[1,478,[495]],[1,477,[233]],[1,477,[340]],[1,477,[341]],[1,476,[328]],[1,476,[385]],[1,476,[331]],[1,475,[337]],[1,475,[444]],[1,475,[487]],[1,474,[509]],[1,474,[381]],[1,474,[400]],[1,473,[486]],[1,473,[349]],[1,473,[246]],[1,472,[360]],[1,472,[240]],[1,472,[234]],[1,411,[244]],[1,277,[226]],[1,428,[266]],[1,443,[252]],[1,452,[276]],[1,394,[288]],[1,297,[294]],[1,371,[296]],[1,250,[316]],[1,241,[320]],[1,319,[387]],[1,233,[344]],[1,340,[305]],[1,365,[328]],[1,287,[448]],[1,386,[343]],[1,385,[353]],[1,352,[337]],[1,444,[369]],[1,407,[363]],[1,332,[222]],[1,229,[509]],[1,357,[430]],[1,358,[409]],[1,381,[375]],[1,377,[524]],[1,413,[469]],[1,413,[606]],[1,398,[603]],[1,278,[595]],[1,333,[525]],[1,290,[659]],[1,451,[445]],[1,416,[542]],[1,245,[651]],[1,327,[562]],[1,248,[571]],[1,307,[367]],[1,259,[314]],[1,273,[519]],[1,254,[283]],[1,459,[423]],[1,368,[554]],[1,257,[557]],[1,271,[574]],[1,293,[482]],[1,284,[639]],[1,433,[538]],[1,237,[263]],[1,396,[520]],[1,435,[267]],[1,382,[619]],[1,295,[645]],[1,322,[486]],[1,360,[504]],[1,311,[646]],[1,227,[608]],[1,415,[660]],[1,228,[240]],[1,349,[223]],[1,436,[447]],[1,413,[471]],[1,413,[371]],[1,413,[352]],[1,413,[293]],[1,413,[271]],[1,444,[471]],[1,444,[468]],[1,444,[413]],[1,413,[17]],[1,444,[352]],[1,444,[293]],[1,444,[271]],[1,444,[470]],[1,368,[466]],[1,368,[433]],[1,368,[385]],[1,368,[365]],[1,385,[467]],[1,385,[466]],[1,385,[433]],[1,385,[416]],[1,385,[297]],[1,385,[57]],[1,385,[43]],[1,381,[465]],[1,381,[360]],[1,381,[358]],[1,381,[228]],[1,381,[69]],[1,381,[11]],[1,360,[381]],[1,360,[358]],[1,360,[357]],[1,360,[69]],[1,360,[68]],[1,241,[464]],[1,241,[463]],[1,241,[322]],[1,241,[319]],[1,241,[233]],[1,241,[56]],[1,241,[6]],[1,340,[464]],[1,340,[349]],[1,340,[319]],[1,340,[241]],[1,349,[463]],[1,349,[462]],[1,349,[340]],[1,340,[233]],[1,349,[322]],[1,349,[319]],[1,349,[56]],[1,349,[6]],[1,316,[610]],[1,282,[656]],[1,404,[657]],[1,658,[408]],[1,659,[317]],[1,628,[393]],[1,288,[649]],[1,650,[289]],[1,651,[410]],[1,414,[652]],[1,301,[623]],[1,654,[399]],[1,238,[643]],[1,644,[450]],[1,645,[239]],[1,646,[449]],[1,647,[460]],[1,461,[648]],[1,258,[637]],[1,638,[300]],[1,639,[424]],[1,262,[640]],[1,263,[641]],[1,425,[642]],[1,276,[631]],[1,632,[418]],[1,633,[306]],[1,267,[622]],[1,429,[653]],[1,439,[636]],[1,226,[625]],[1,611,[224]],[1,655,[458]],[1,609,[230]],[1,629,[231]],[1,447,[630]],[1,266,[590]],[1,620,[434]],[1,586,[438]],[1,255,[634]],[1,283,[635]],[1,419,[593]],[1,260,[592]],[1,275,[577]],[1,314,[615]],[1,616,[406]],[1,568,[441]],[1,423,[591]],[1,236,[575]],[1,608,[446]],[1,660,[330]],[1,627,[370]],[1,626,[339]],[1,457,[572]],[1,304,[545]],[1,565,[422]],[1,603,[318]],[1,374,[604]],[1,445,[529]],[1,578,[397]],[1,302,[560]],[1,571,[513]],[1,588,[383]],[1,392,[552]],[1,367,[576]],[1,527,[391]],[1,244,[579]],[1,619,[350]],[1,618,[335]],[1,613,[249]],[1,624,[376]],[1,481,[580]],[1,334,[583]],[1,328,[558]],[1,331,[585]],[1,454,[621]],[1,453,[587]],[1,353,[547]],[1,294,[614]],[1,542,[292]],[1,589,[412]],[1,594,[390]],[1,581,[303]],[1,401,[582]],[1,280,[596]],[1,554,[388]],[1,537,[299]],[1,538,[270]],[1,607,[395]],[1,437,[599]],[1,346,[602]],[1,362,[566]],[1,378,[567]],[1,448,[617]],[1,343,[540]],[1,379,[605]],[1,298,[559]],[1,524,[261]],[1,544,[285]],[1,562,[440]],[1,563,[315]],[1,389,[564]],[1,268,[553]],[1,612,[431]],[1,519,[269]],[1,556,[279]],[1,557,[442]],[1,427,[584]],[1,342,[597]],[1,225,[522]],[1,492,[523]],[1,487,[528]],[1,337,[551]],[1,369,[598]],[1,296,[531]],[1,606,[384]],[1,526,[508]],[1,561,[355]],[1,601,[420]],[1,405,[532]],[1,274,[533]],[1,518,[497]],[1,573,[286]],[1,574,[281]],[1,521,[515]],[1,482,[569]],[1,232,[570]],[1,505,[530]],[1,251,[541]],[1,363,[546]],[1,456,[535]],[1,222,[534]],[1,500,[549]],[1,595,[265]],[1,525,[512]],[1,543,[361]],[1,600,[309]],[1,253,[550]],[1,252,[517]],[1,536,[359]],[1,555,[348]],[1,520,[313]],[1,539,[426]],[1,502,[548]],[1,320,[356]],[1,494,[264]],[1,495,[496]],[1,336,[514]],[1,387,[321]],[1,347,[516]],[1,324,[354]],[1,491,[506]],[1,312,[489]],[1,344,[325]],[1,305,[380]],[1,341,[364]],[1,486,[455]],[1,223,[308]],[1,272,[242]],[1,246,[421]],[1,485,[503]],[1,243,[338]],[1,511,[493]],[1,432,[402]],[1,430,[291]],[1,409,[372]],[1,323,[366]],[1,373,[498]],[1,326,[510]],[1,509,[488]],[1,400,[507]],[1,256,[490]],[1,345,[310]],[1,375,[329]],[1,504,[499]],[1,240,[417]],[1,501,[483]],[1,234,[484]],[1,235,[403]],[1,247,[351]],[1,657,[588]],[1,639,[588]],[1,615,[588]],[1,588,[547]],[1,547,[597]],[1,597,[639]],[1,657,[597]],[1,639,[615]],[1,615,[657]],[1,588,[657]],[1,616,[552]],[1,640,[552]],[1,658,[552]],[1,552,[583]],[1,583,[598]],[1,598,[640]],[1,658,[598]],[1,640,[616]],[1,616,[658]],[1,552,[658]],[1,542,[606]],[1,629,[606]],[1,608,[606]],[1,649,[578]],[1,606,[649]],[1,578,[649]],[1,629,[578]],[1,608,[578]],[1,606,[629]],[1,578,[629]],[1,606,[608]],[1,578,[608]],[1,578,[542]],[1,611,[545]],[1,601,[611]],[1,654,[626]],[1,654,[601]],[1,626,[654]],[1,626,[545]],[1,601,[626]],[1,611,[654]],[1,581,[654]],[1,545,[581]],[1,581,[626]],[1,581,[611]],[1,581,[601]],[1,573,[619]],[1,647,[619]],[1,537,[619]],[1,636,[590]],[1,590,[636]],[1,619,[636]],[1,590,[647]],[1,619,[647]],[1,537,[573]],[1,619,[537]],[1,573,[590]],[1,590,[537]],[1,537,[573]],[1,631,[593]],[1,644,[593]],[1,538,[574]],[1,574,[593]],[1,593,[538]],[1,574,[624]],[1,624,[538]],[1,644,[624]],[1,624,[631]],[1,593,[644]],[1,538,[574]],[1,623,[605]],[1,623,[529]],[1,635,[653]],[1,653,[529]],[1,653,[605]],[1,570,[605]],[1,605,[623]],[1,605,[653]],[1,529,[653]],[1,529,[623]],[1,623,[635]],[1,529,[570]],[1,656,[569]],[1,596,[569]],[1,571,[569]],[1,569,[530]],[1,530,[540]],[1,540,[656]],[1,596,[540]],[1,596,[571]],[1,656,[571]],[1,571,[596]],[1,569,[571]],[1,582,[541]],[1,568,[582]],[1,617,[582]],[1,641,[582]],[1,531,[541]],[1,582,[531]],[1,541,[582]],[1,541,[617]],[1,641,[568]],[1,568,[641]],[1,617,[641]],[1,541,[568]],[1,531,[541]],[1,614,[567]],[1,614,[546]],[1,567,[532]],[1,638,[577]],[1,577,[532]],[1,546,[577]],[1,577,[614]],[1,567,[577]],[1,532,[546]],[1,546,[567]],[1,532,[614]],[1,614,[638]],[1,659,[576]],[1,599,[576]],[1,566,[576]],[1,576,[533]],[1,535,[576]],[1,533,[535]],[1,535,[659]],[1,599,[535]],[1,533,[566]],[1,576,[599]],[1,566,[599]],[1,650,[565]],[1,632,[565]],[1,620,[565]],[1,565,[534]],[1,534,[602]],[1,602,[632]],[1,650,[602]],[1,650,[620]],[1,632,[650]],[1,620,[650]],[1,565,[650]],[1,602,[620]],[1,633,[523]],[1,621,[523]],[1,586,[523]],[1,564,[523]],[1,523,[549]],[1,621,[549]],[1,633,[621]],[1,549,[621]],[1,633,[586]],[1,621,[633]],[1,586,[633]],[1,523,[564]],[1,564,[586]],[1,549,[586]],[1,609,[660]],[1,524,[660]],[1,560,[595]],[1,595,[660]],[1,660,[560]],[1,524,[560]],[1,595,[628]],[1,628,[560]],[1,524,[628]],[1,628,[609]],[1,560,[524]],[1,524,[595]],[1,525,[544]],[1,643,[544]],[1,580,[544]],[1,561,[544]],[1,580,[594]],[1,544,[594]],[1,594,[643]],[1,594,[580]],[1,561,[580]],[1,643,[561]],[1,544,[561]],[1,561,[525]],[1,648,[526]],[1,589,[526]],[1,579,[526]],[1,562,[543]],[1,526,[562]],[1,543,[562]],[1,589,[579]],[1,526,[589]],[1,579,[589]],[1,543,[589]],[1,589,[648]],[1,589,[579]],[1,648,[543]],[1,579,[543]],[1,610,[600]],[1,610,[527]],[1,627,[655]],[1,655,[527]],[1,655,[600]],[1,563,[600]],[1,600,[610]],[1,600,[655]],[1,527,[655]],[1,527,[610]],[1,610,[627]],[1,527,[563]],[1,634,[550]],[1,622,[550]],[1,559,[550]],[1,634,[528]],[1,622,[528]],[1,585,[528]],[1,559,[528]],[1,528,[559]],[1,559,[634]],[1,550,[634]],[1,559,[622]],[1,550,[622]],[1,550,[585]],[1,551,[517]],[1,584,[551]],[1,603,[584]],[1,603,[558]],[1,651,[584]],[1,651,[558]],[1,558,[517]],[1,584,[651]],[1,584,[603]],[1,558,[584]],[1,551,[558]],[1,517,[651]],[1,517,[603]],[1,517,[584]],[1,517,[551]],[1,625,[572]],[1,612,[572]],[1,536,[572]],[1,536,[554]],[1,572,[536]],[1,554,[536]],[1,518,[612]],[1,554,[612]],[1,612,[625]],[1,572,[518]],[1,554,[518]],[1,612,[554]],[1,536,[554]],[1,555,[592]],[1,642,[592]],[1,519,[592]],[1,645,[613]],[1,592,[645]],[1,613,[645]],[1,519,[555]],[1,592,[519]],[1,555,[613]],[1,613,[519]],[1,613,[642]],[1,519,[555]],[1,637,[591]],[1,646,[591]],[1,520,[556]],[1,556,[591]],[1,591,[520]],[1,556,[618]],[1,618,[520]],[1,646,[618]],[1,618,[637]],[1,591,[646]],[1,520,[556]],[1,557,[607]],[1,630,[607]],[1,521,[539]],[1,539,[607]],[1,607,[521]],[1,539,[575]],[1,575,[521]],[1,557,[575]],[1,630,[575]],[1,607,[630]],[1,521,[557]],[1,521,[539]],[1,553,[548]],[1,587,[548]],[1,604,[587]],[1,652,[587]],[1,587,[522]],[1,548,[587]],[1,587,[604]],[1,587,[652]],[1,522,[652]],[1,522,[604]],[1,522,[553]],[1,522,[548]],[1,363,[448]],[1,493,[448]],[1,516,[448]],[1,350,[448]],[1,450,[350]],[1,448,[450]],[1,350,[450]],[1,493,[350]],[1,516,[350]],[1,450,[516]],[1,350,[516]],[1,450,[493]],[1,350,[493]],[1,350,[363]],[1,320,[225]],[1,328,[225]],[1,511,[225]],[1,458,[330]],[1,330,[458]],[1,320,[330]],[1,511,[330]],[1,330,[511]],[1,330,[328]],[1,330,[320]],[1,225,[511]],[1,225,[458]],[1,225,[320]],[1,494,[402]],[1,262,[402]],[1,314,[440]],[1,440,[402]],[1,402,[314]],[1,440,[512]],[1,512,[314]],[1,262,[512]],[1,512,[494]],[1,314,[440]],[1,440,[262]],[1,388,[515]],[1,422,[515]],[1,301,[515]],[1,515,[321]],[1,321,[432]],[1,432,[301]],[1,388,[432]],[1,388,[422]],[1,422,[388]],[1,301,[388]],[1,515,[422]],[1,301,[422]],[1,267,[513]],[1,438,[513]],[1,317,[513]],[1,513,[495]],[1,495,[291]],[1,291,[267]],[1,317,[291]],[1,267,[438]],[1,513,[317]],[1,438,[317]],[1,279,[348]],[1,384,[348]],[1,303,[348]],[1,348,[514]],[1,279,[430]],[1,514,[430]],[1,279,[303]],[1,430,[303]],[1,303,[384]],[1,384,[279]],[1,348,[279]],[1,292,[420]],[1,372,[420]],[1,496,[420]],[1,269,[420]],[1,313,[292]],[1,420,[292]],[1,372,[313]],[1,496,[313]],[1,269,[313]],[1,420,[269]],[1,313,[496]],[1,269,[496]],[1,313,[372]],[1,269,[372]],[1,336,[409]],[1,255,[409]],[1,282,[306]],[1,306,[409]],[1,409,[282]],[1,255,[282]],[1,306,[367]],[1,367,[282]],[1,255,[367]],[1,367,[336]],[1,282,[255]],[1,255,[306]],[1,445,[497]],[1,395,[264]],[1,289,[445]],[1,395,[289]],[1,289,[497]],[1,366,[264]],[1,264,[445]],[1,445,[395]],[1,497,[395]],[1,497,[264]],[1,264,[289]],[1,497,[366]],[1,285,[361]],[1,424,[361]],[1,406,[361]],[1,361,[323]],[1,285,[387]],[1,323,[387]],[1,424,[285]],[1,387,[285]],[1,424,[406]],[1,285,[424]],[1,406,[424]],[1,387,[406]],[1,361,[406]],[1,356,[376]],[1,460,[376]],[1,498,[376]],[1,376,[378]],[1,356,[498]],[1,498,[356]],[1,378,[251]],[1,251,[356]],[1,460,[251]],[1,376,[460]],[1,498,[460]],[1,251,[460]],[1,356,[498]],[1,230,[347]],[1,373,[347]],[1,370,[453]],[1,347,[370]],[1,453,[347]],[1,337,[370]],[1,370,[453]],[1,453,[230]],[1,230,[337]],[1,370,[337]],[1,337,[373]],[1,510,[364]],[1,239,[364]],[1,335,[454]],[1,454,[364]],[1,364,[335]],[1,454,[487]],[1,487,[335]],[1,239,[487]],[1,487,[510]],[1,335,[454]],[1,454,[239]],[1,224,[326]],[1,446,[326]],[1,324,[326]],[1,224,[505]],[1,446,[505]],[1,362,[505]],[1,505,[324]],[1,505,[446]],[1,505,[224]],[1,326,[362]],[1,326,[446]],[1,326,[224]],[1,270,[265]],[1,315,[265]],[1,488,[265]],[1,506,[265]],[1,286,[315]],[1,488,[286]],[1,506,[286]],[1,286,[506]],[1,286,[488]],[1,270,[286]],[1,265,[506]],[1,265,[488]],[1,265,[315]],[1,265,[270]],[1,441,[305]],[1,441,[318]],[1,414,[441]],[1,414,[300]],[1,300,[318]],[1,300,[305]],[1,509,[305]],[1,305,[441]],[1,305,[414]],[1,318,[414]],[1,318,[441]],[1,441,[300]],[1,318,[509]],[1,408,[507]],[1,383,[507]],[1,426,[431]],[1,507,[426]],[1,431,[507]],[1,489,[426]],[1,383,[408]],[1,507,[383]],[1,408,[489]],[1,489,[383]],[1,431,[489]],[1,426,[431]],[1,383,[408]],[1,283,[508]],[1,418,[508]],[1,390,[508]],[1,283,[400]],[1,418,[400]],[1,390,[400]],[1,344,[400]],[1,508,[344]],[1,400,[390]],[1,508,[418]],[1,390,[418]],[1,508,[283]],[1,390,[283]],[1,429,[312]],[1,434,[312]],[1,490,[312]],[1,412,[355]],[1,429,[355]],[1,434,[355]],[1,355,[490]],[1,355,[434]],[1,355,[429]],[1,312,[434]],[1,312,[429]],[1,312,[412]],[1,325,[256]],[1,392,[256]],[1,404,[256]],[1,442,[359]],[1,359,[442]],[1,392,[359]],[1,404,[359]],[1,359,[404]],[1,359,[392]],[1,359,[325]],[1,256,[442]],[1,256,[404]],[1,256,[392]],[1,263,[374]],[1,410,[374]],[1,275,[374]],[1,263,[310]],[1,491,[310]],[1,410,[310]],[1,275,[310]],[1,374,[491]],[1,310,[410]],[1,410,[275]],[1,374,[275]],[1,410,[263]],[1,374,[263]],[1,309,[261]],[1,281,[261]],[1,299,[281]],[1,345,[380]],[1,380,[261]],[1,380,[345]],[1,299,[345]],[1,309,[299]],[1,380,[309]],[1,281,[309]],[1,261,[281]],[1,261,[299]],[1,261,[345]],[1,345,[380]],[1,331,[329]],[1,449,[331]],[1,249,[331]],[1,331,[492]],[1,354,[329]],[1,329,[331]],[1,331,[449]],[1,331,[249]],[1,492,[249]],[1,492,[449]],[1,492,[329]],[1,492,[354]],[1,375,[456]],[1,343,[456]],[1,341,[456]],[1,231,[339]],[1,456,[231]],[1,339,[231]],[1,375,[339]],[1,341,[339]],[1,456,[375]],[1,339,[375]],[1,339,[343]],[1,456,[341]],[1,339,[341]],[1,457,[481]],[1,461,[481]],[1,447,[481]],[1,481,[499]],[1,461,[455]],[1,499,[455]],[1,455,[457]],[1,461,[457]],[1,457,[447]],[1,481,[461]],[1,447,[461]],[1,346,[338]],[1,334,[346]],[1,346,[232]],[1,342,[232]],[1,504,[338]],[1,338,[346]],[1,346,[342]],[1,342,[334]],[1,232,[334]],[1,232,[346]],[1,232,[338]],[1,232,[504]],[1,423,[482]],[1,437,[417]],[1,425,[423]],[1,437,[425]],[1,425,[482]],[1,503,[417]],[1,417,[423]],[1,423,[437]],[1,482,[437]],[1,482,[417]],[1,417,[425]],[1,482,[503]],[1,288,[308]],[1,304,[308]],[1,240,[308]],[1,298,[500]],[1,308,[298]],[1,500,[298]],[1,288,[304]],[1,308,[288]],[1,304,[500]],[1,500,[288]],[1,500,[240]],[1,288,[304]],[1,439,[421]],[1,483,[421]],[1,419,[421]],[1,427,[502]],[1,421,[427]],[1,502,[427]],[1,419,[439]],[1,421,[419]],[1,439,[502]],[1,502,[419]],[1,502,[483]],[1,419,[439]],[1,242,[294]],[1,501,[294]],[1,296,[294]],[1,316,[302]],[1,302,[316]],[1,294,[316]],[1,242,[501]],[1,294,[242]],[1,501,[302]],[1,302,[242]],[1,302,[296]],[1,242,[501]],[1,401,[405]],[1,393,[405]],[1,246,[484]],[1,484,[405]],[1,405,[246]],[1,484,[391]],[1,391,[246]],[1,393,[391]],[1,405,[393]],[1,391,[401]],[1,246,[484]],[1,234,[272]],[1,276,[272]],[1,266,[272]],[1,268,[252]],[1,272,[268]],[1,252,[268]],[1,276,[252]],[1,266,[252]],[1,272,[276]],[1,252,[276]],[1,272,[266]],[1,252,[266]],[1,252,[234]],[1,389,[403]],[1,485,[403]],[1,389,[253]],[1,399,[397]],[1,397,[403]],[1,397,[253]],[1,403,[397]],[1,253,[397]],[1,403,[389]],[1,253,[389]],[1,389,[399]],[1,253,[485]],[1,258,[274]],[1,280,[274]],[1,223,[235]],[1,235,[274]],[1,274,[223]],[1,235,[260]],[1,260,[223]],[1,258,[260]],[1,274,[258]],[1,260,[280]],[1,223,[235]],[1,353,[351]],[1,369,[351]],[1,379,[351]],[1,486,[351]],[1,353,[222]],[1,369,[222]],[1,379,[222]],[1,351,[379]],[1,222,[486]],[1,379,[369]],[1,222,[369]],[1,379,[353]],[1,222,[353]],[1,226,[238]],[1,247,[238]],[1,243,[238]],[1,236,[238]],[1,244,[226]],[1,244,[236]],[1,247,[244]],[1,243,[244]],[1,244,[243]],[1,244,[247]],[1,236,[244]],[1,226,[244]],[1,238,[236]],[1,238,[243]],[1,238,[247]],[1,238,[226]],[1,660,[393]],[1,393,[73]],[1,659,[317]],[1,317,[78]],[1,658,[383]],[1,383,[45]],[1,657,[392]],[1,392,[307]],[1,656,[306]],[1,306,[382]],[1,655,[316]],[1,316,[40]],[1,654,[399]],[1,399,[86]],[1,653,[301]],[1,301,[411]],[1,652,[300]],[1,300,[81]],[1,651,[410]],[1,410,[31]],[1,650,[289]],[1,289,[398]],[1,649,[288]],[1,288,[37]],[1,648,[461]],[1,461,[451]],[1,647,[460]],[1,460,[12]],[1,646,[249]],[1,249,[105]],[1,645,[239]],[1,239,[110]],[1,644,[450]],[1,450,[8]],[1,643,[238]],[1,238,[248]],[1,642,[425]],[1,425,[88]],[1,641,[263]],[1,263,[93]],[1,640,[262]],[1,262,[415]],[1,639,[424]],[1,424,[259]],[1,638,[414]],[1,414,[16]],[1,637,[258]],[1,258,[18]],[1,636,[419]],[1,419,[95]],[1,635,[429]],[1,429,[20]],[1,634,[267]],[1,267,[90]],[1,633,[255]],[1,255,[428]],[1,632,[418]],[1,418,[254]],[1,631,[266]],[1,266,[14]],[1,630,[447]],[1,447,[109]],[1,629,[231]],[1,231,[459]],[1,628,[230]],[1,230,[103]],[1,627,[458]],[1,458,[227]],[1,626,[446]],[1,446,[2]],[1,625,[226]],[1,226,[4]],[1,624,[439]],[1,439,[98]],[1,623,[283]],[1,283,[100]],[1,622,[282]],[1,282,[435]],[1,621,[438]],[1,438,[25]],[1,620,[434]],[1,434,[277]],[1,619,[276]],[1,276,[28]],[1,618,[437]],[1,437,[101]],[1,617,[441]],[1,441,[29]],[1,616,[285]],[1,285,[436]],[1,615,[440]],[1,440,[24]],[1,614,[275]],[1,275,[99]],[1,613,[274]],[1,274,[284]],[1,612,[457]],[1,457,[106]],[1,611,[456]],[1,456,[237]],[1,610,[453]],[1,453,[7]],[1,609,[225]],[1,225,[108]],[1,608,[224]],[1,224,[452]],[1,607,[236]],[1,236,[1]],[1,606,[389]],[1,389,[79]],[1,605,[395]],[1,395,[311]],[1,604,[310]],[1,310,[76]],[1,603,[305]],[1,305,[394]],[1,602,[388]],[1,388,[39]],[1,601,[304]],[1,304,[42]],[1,600,[405]],[1,405,[85]],[1,599,[409]],[1,409,[34]],[1,598,[404]],[1,404,[295]],[1,597,[408]],[1,408,[32]],[1,596,[291]],[1,291,[83]],[1,595,[294]],[1,294,[290]],[1,594,[455]],[1,455,[104]],[1,593,[251]],[1,251,[107]],[1,592,[449]],[1,449,[250]],[1,591,[454]],[1,454,[245]],[1,590,[448]],[1,448,[10]],[1,589,[244]],[1,244,[13]],[1,588,[353]],[1,353,[371]],[1,587,[370]],[1,586,[335]],[1,335,[60]],[1,585,[331]],[1,331,[67]],[1,584,[330]],[1,330,[352]],[1,583,[334]],[1,334,[50]],[1,582,[391]],[1,391,[413]],[1,581,[303]],[1,303,[87]],[1,580,[390]],[1,390,[38]],[1,579,[412]],[1,412,[293]],[1,578,[292]],[1,292,[77]],[1,577,[302]],[1,302,[33]],[1,576,[423]],[1,575,[445]],[1,445,[271]],[1,574,[270]],[1,270,[92]],[1,573,[261]],[1,572,[422]],[1,422,[17]],[1,571,[260]],[1,260,[22]],[1,570,[379]],[1,379,[64]],[1,569,[343]],[1,343,[71]],[1,568,[363]],[1,363,[55]],[1,567,[378]],[1,378,[51]],[1,566,[362]],[1,362,[333]],[1,565,[342]],[1,342,[332]],[1,564,[397]],[1,397,[407]],[1,563,[315]],[1,315,[84]],[1,562,[314]],[1,314,[80]],[1,561,[406]],[1,406,[36]],[1,560,[299]],[1,299,[396]],[1,559,[298]],[1,298,[44]],[1,558,[427]],[1,427,[443]],[1,557,[442]],[1,442,[26]],[1,556,[279]],[1,279,[94]],[1,555,[269]],[1,269,[102]],[1,554,[426]],[1,426,[21]],[1,553,[268]],[1,268,[278]],[1,552,[369]],[1,369,[365]],[1,551,[347]],[1,347,[368]],[1,550,[364]],[1,364,[57]],[1,549,[329]],[1,329,[66]],[1,548,[328]],[1,328,[65]],[1,547,[346]],[1,546,[401]],[1,401,[385]],[1,545,[313]],[1,544,[312]],[1,312,[74]],[1,543,[400]],[1,400,[297]],[1,542,[384]],[1,384,[35]],[1,541,[296]],[1,296,[43]],[1,540,[417]],[1,417,[433]],[1,539,[432]],[1,432,[27]],[1,538,[281]],[1,281,[89]],[1,537,[265]],[1,265,[97]],[1,536,[264]],[1,264,[416]],[1,535,[280]],[1,280,[19]],[1,534,[351]],[1,351,[377]],[1,533,[339]],[1,339,[70]],[1,532,[350]],[1,350,[53]],[1,531,[376]],[1,376,[327]],[1,530,[326]],[1,326,[59]],[1,529,[338]],[1,338,[49]],[1,528,[403]],[1,403,[75]],[1,527,[309]],[1,309,[82]],[1,526,[387]],[1,387,[41]],[1,525,[402]],[1,402,[287]],[1,524,[286]],[1,286,[386]],[1,523,[308]],[1,308,[30]],[1,522,[421]],[1,421,[96]],[1,521,[431]],[1,431,[273]],[1,520,[420]],[1,420,[23]],[1,519,[430]],[1,430,[257]],[1,518,[256]],[1,256,[91]],[1,517,[272]],[1,272,[15]],[1,516,[373]],[1,515,[361]],[1,361,[68]],[1,514,[367]],[1,367,[360]],[1,513,[372]],[1,372,[357]],[1,512,[366]],[1,366,[61]],[1,511,[356]],[1,356,[63]],[1,510,[375]],[1,375,[381]],[1,509,[380]],[1,380,[62]],[1,508,[359]],[1,359,[69]],[1,507,[355]],[1,355,[72]],[1,506,[374]],[1,505,[354]],[1,354,[358]],[1,504,[247]],[1,503,[253]],[1,253,[229]],[1,502,[246]],[1,246,[3]],[1,501,[252]],[1,252,[0]],[1,500,[223]],[1,223,[11]],[1,499,[222]],[1,222,[228]],[1,498,[337]],[1,337,[58]],[1,497,[323]],[1,323,[349]],[1,496,[336]],[1,336,[322]],[1,495,[348]],[1,348,[47]],[1,494,[321]],[1,321,[52]],[1,493,[320]],[1,320,[48]],[1,492,[341]],[1,341,[56]],[1,491,[345]],[1,490,[325]],[1,325,[54]],[1,489,[344]],[1,344,[319]],[1,488,[318]],[1,318,[340]],[1,487,[324]],[1,324,[46]],[1,486,[243]],[1,243,[9]],[1,485,[235]],[1,484,[234]],[1,234,[241]],[1,483,[242]],[1,242,[233]],[1,482,[240]],[1,240,[5]],[1,481,[232]],[1,232,[6]],[1,480,[17]],[1,479,[43]],[1,478,[68]],[1,477,[69]],[1,476,[67]],[1,475,[57]],[1,474,[56]],[1,473,[11]],[1,472,[6]],[1,471,[92]],[1,470,[77]],[1,469,[50]],[1,468,[38]],[1,467,[27]],[1,466,[19]],[1,465,[0]],[1,464,[54]],[1,463,[52]],[1,462,[47]],[1,461,[110]],[1,460,[110]],[1,459,[109]],[1,458,[109]],[1,457,[108]],[1,456,[108]],[1,455,[107]],[1,454,[107]],[1,453,[106]],[1,452,[106]],[1,451,[105]],[1,450,[105]],[1,449,[104]],[1,448,[104]],[1,447,[103]],[1,446,[103]],[1,443,[102]],[1,442,[102]],[1,441,[101]],[1,440,[101]],[1,439,[100]],[1,438,[100]],[1,437,[99]],[1,436,[99]],[1,435,[98]],[1,434,[98]],[1,433,[97]],[1,432,[97]],[1,431,[96]],[1,430,[96]],[1,429,[95]],[1,428,[95]],[1,427,[94]],[1,426,[94]],[1,425,[93]],[1,424,[93]],[1,423,[92]],[1,422,[92]],[1,421,[91]],[1,420,[91]],[1,419,[90]],[1,418,[90]],[1,417,[89]],[1,416,[89]],[1,415,[88]],[1,414,[88]],[1,413,[87]],[1,412,[87]],[1,411,[86]],[1,410,[86]],[1,409,[85]],[1,408,[85]],[1,407,[84]],[1,406,[84]],[1,405,[83]],[1,404,[83]],[1,403,[82]],[1,402,[82]],[1,399,[81]],[1,398,[81]],[1,397,[80]],[1,396,[80]],[1,395,[79]],[1,394,[79]],[1,393,[78]],[1,392,[78]],[1,391,[77]],[1,390,[77]],[1,389,[76]],[1,388,[76]],[1,387,[75]],[1,386,[75]],[1,385,[74]],[1,384,[74]],[1,383,[73]],[1,382,[73]],[1,381,[72]],[1,380,[72]],[1,379,[71]],[1,378,[71]],[1,377,[70]],[1,376,[70]],[1,375,[69]],[1,374,[69]],[1,373,[68]],[1,372,[68]],[1,371,[67]],[1,370,[67]],[1,369,[66]],[1,368,[66]],[1,365,[65]],[1,364,[65]],[1,363,[64]],[1,362,[64]],[1,361,[63]],[1,360,[63]],[1,359,[62]],[1,358,[62]],[1,357,[61]],[1,356,[61]],[1,353,[60]],[1,352,[60]],[1,351,[59]],[1,350,[59]],[1,349,[58]],[1,348,[58]],[1,347,[57]],[1,346,[57]],[1,345,[56]],[1,344,[56]],[1,343,[55]],[1,342,[55]],[1,341,[54]],[1,340,[54]],[1,339,[53]],[1,338,[53]],[1,337,[52]],[1,336,[52]],[1,333,[51]],[1,332,[51]],[1,331,[50]],[1,330,[50]],[1,327,[49]],[1,326,[49]],[1,323,[48]],[1,322,[48]],[1,321,[47]],[1,320,[47]],[1,319,[46]],[1,318,[46]],[1,317,[45]],[1,316,[45]],[1,315,[44]],[1,314,[44]],[1,313,[43]],[1,312,[43]],[1,311,[42]],[1,310,[42]],[1,309,[41]],[1,308,[41]],[1,307,[40]],[1,306,[40]],[1,305,[39]],[1,304,[39]],[1,303,[38]],[1,302,[38]],[1,301,[37]],[1,300,[37]],[1,299,[36]],[1,298,[36]],[1,297,[35]],[1,296,[35]],[1,295,[34]],[1,294,[34]],[1,293,[33]],[1,292,[33]],[1,291,[32]],[1,290,[32]],[1,289,[31]],[1,288,[31]],[1,287,[30]],[1,286,[30]],[1,285,[29]],[1,284,[29]],[1,283,[28]],[1,282,[28]],[1,281,[27]],[1,280,[27]],[1,279,[26]],[1,278,[26]],[1,277,[25]],[1,276,[25]],[1,275,[24]],[1,274,[24]],[1,273,[23]],[1,272,[23]],[1,271,[22]],[1,270,[22]],[1,269,[21]],[1,268,[21]],[1,267,[20]],[1,266,[20]],[1,265,[19]],[1,264,[19]],[1,263,[18]],[1,262,[18]],[1,261,[17]],[1,260,[17]],[1,259,[16]],[1,258,[16]],[1,257,[15]],[1,256,[15]],[1,255,[14]],[1,254,[14]],[1,251,[13]],[1,250,[13]],[1,249,[12]],[1,248,[12]],[1,247,[11]],[1,246,[11]],[1,245,[10]],[1,244,[10]],[1,241,[9]],[1,240,[9]],[1,239,[8]],[1,238,[8]],[1,237,[7]],[1,236,[7]],[1,235,[6]],[1,234,[6]],[1,233,[5]],[1,232,[5]],[1,231,[4]],[1,230,[4]],[1,229,[3]],[1,228,[3]],[1,227,[2]],[1,226,[2]],[1,225,[1]],[1,224,[1]],[1,223,[0]],[1,222,[0]]],"D":[[0,280,[260]],[0,351,[377]],[0,274,[284]],[0,461,[451]],[0,345,[380]],[0,656,[596]],[0,301,[411]],[0,353,[371]],[0,356,[320]],[0,424,[259]],[0,418,[254]],[0,253,[229]],[0,506,[374]],[0,306,[382]],[0,518,[554]],[0,231,[459]],[0,323,[366]],[0,488,[318]],[0,495,[348]],[0,496,[336]],[0,335,[364]],[0,294,[290]],[0,265,[261]],[0,263,[414]],[0,391,[413]],[0,456,[237]],[0,507,[355]],[0,434,[277]],[0,356,[373]],[0,430,[257]],[0,238,[248]],[0,285,[436]],[0,274,[223]],[0,612,[625]],[0,431,[256]],[0,431,[273]],[0,488,[340]],[0,234,[252]],[0,599,[659]],[0,404,[295]],[0,421,[272]],[0,568,[531]],[0,458,[227]],[0,425,[258]],[0,593,[631]],[0,417,[423]],[0,347,[368]],[0,586,[549]],[0,264,[536]],[0,268,[427]],[0,361,[321]],[0,651,[603]],[0,417,[433]],[0,344,[325]],[0,316,[393]],[0,268,[278]],[0,276,[439]],[0,332,[342]],[0,454,[245]],[0,376,[327]],[0,614,[638]],[0,389,[304]],[0,305,[300]],[0,537,[573]],[0,286,[309]],[0,482,[503]],[0,409,[291]],[0,313,[292]],[0,558,[517]],[0,247,[243]],[0,392,[307]],[0,302,[296]],[0,305,[394]],[0,425,[240]],[0,449,[250]],[0,334,[346]],[0,262,[415]],[0,559,[528]],[0,266,[419]],[0,591,[637]],[0,597,[657]],[0,492,[341]],[0,626,[611]],[0,480,[538]],[0,617,[641]],[0,236,[457]],[0,324,[354]],[0,314,[402]],[0,613,[642]],[0,418,[283]],[0,249,[239]],[0,280,[322]],[0,399,[288]],[0,480,[467]],[0,404,[408]],[0,286,[386]],[0,438,[267]],[0,648,[589]],[0,643,[594]],[0,639,[615]],[0,445,[271]],[0,392,[383]],[0,654,[601]],[0,301,[388]],[0,289,[398]],[0,244,[455]],[0,630,[607]],[0,302,[401]],[0,275,[441]],[0,400,[297]],[0,421,[246]],[0,294,[242]],[0,553,[652]],[0,593,[624]],[0,458,[328]],[0,567,[532]],[0,353,[369]],[0,395,[311]],[0,452,[224]],[0,504,[222]],[0,656,[571]],[0,552,[583]],[0,310,[410]],[0,527,[655]],[0,591,[520]],[0,430,[420]],[0,396,[299]],[0,326,[530]],[0,544,[312]],[0,598,[658]],[0,362,[333]],[0,426,[442]],[0,453,[225]],[0,264,[432]],[0,316,[405]],[0,448,[460]],[0,279,[269]],[0,629,[608]],[0,613,[519]],[0,527,[627]],[0,632,[620]],[0,447,[226]],[0,515,[569]],[0,592,[645]],[0,255,[428]],[0,505,[446]],[0,606,[649]],[0,619,[636]],[0,270,[329]],[0,482,[540]],[0,572,[365]],[0,498,[337]],[0,542,[384]],[0,363,[378]],[0,514,[367]],[0,479,[469]],[0,474,[509]],[0,495,[478]],[0,599,[535]],[0,623,[635]],[0,630,[539]],[0,450,[251]],[0,313,[303]],[0,412,[293]],[0,623,[529]],[0,622,[403]],[0,462,[473]],[0,622,[634]],[0,376,[350]],[0,262,[440]],[0,282,[435]],[0,526,[543]],[0,448,[493]],[0,338,[379]],[0,510,[375]],[0,362,[343]],[0,557,[422]],[0,330,[370]],[0,651,[551]],[0,587,[548]],[0,560,[524]],[0,434,[429]],[0,512,[298]],[0,577,[546]],[0,453,[230]],[0,330,[352]],[0,306,[317]],[0,492,[487]],[0,400,[390]],[0,444,[475]],[0,572,[618]],[0,445,[497]],[0,275,[437]],[0,614,[357]],[0,499,[484]],[0,555,[556]],[0,474,[465]],[0,633,[621]],[0,444,[470]],[0,502,[483]],[0,553,[522]],[0,590,[443]],[0,397,[407]],[0,323,[349]],[0,654,[581]],[0,640,[616]],[0,397,[308]],[0,479,[471]],[0,234,[241]],[0,590,[647]],[0,632,[565]],[0,628,[660]],[0,560,[381]],[0,650,[372]],[0,505,[360]],[0,525,[287]],[0,485,[486]],[0,265,[281]],[0,578,[385]],[0,481,[232]],[0,628,[609]],[0,588,[547]],[0,544,[561]],[0,255,[464]],[0,600,[563]],[0,541,[582]],[0,481,[472]],[0,326,[339]],[0,534,[570]],[0,489,[228]],[0,592,[646]],[0,512,[494]],[0,557,[521]],[0,650,[602]],[0,515,[235]],[0,314,[406]],[0,168,[161]],[0,111,[116]],[0,177,[171]],[0,157,[173]],[0,122,[120]],[0,183,[165]],[0,138,[163]],[0,158,[179]],[0,134,[213]],[0,167,[180]],[0,161,[116]],[0,173,[171]],[0,196,[145]],[0,203,[116]],[0,174,[163]],[0,116,[185]],[0,179,[120]],[0,117,[114]],[0,121,[124]],[0,170,[162]],[0,140,[212]],[0,184,[151]],[0,171,[165]],[0,132,[202]],[0,176,[178]],[0,174,[158]],[0,128,[165]],[0,214,[113]],[0,219,[118]],[0,214,[219]],[0,209,[136]],[0,215,[218]],[0,215,[121]],[0,163,[208]],[0,126,[205]],[0,125,[201]],[0,125,[209]],[0,185,[188]],[0,198,[185]],[0,158,[159]],[0,153,[150]],[0,210,[135]],[0,140,[210]],[0,196,[184]],[0,120,[208]],[0,143,[194]],[0,184,[143]],[0,147,[141]],[0,113,[118]],[0,192,[197]],[0,153,[192]],[0,213,[205]],[0,188,[165]],[0,165,[146]],[0,127,[199]],[0,210,[127]],[0,211,[139]],[0,211,[209]],[0,144,[146]],[0,144,[185]],[0,134,[132]],[0,132,[126]],[0,151,[156]],[0,162,[166]],[0,181,[166]],[0,181,[170]],[0,131,[206]],[0,209,[131]],[0,200,[114]],[0,148,[142]],[0,148,[192]],[0,191,[186]],[0,147,[191]],[0,123,[119]],[0,121,[123]],[0,195,[193]],[0,195,[191]],[0,124,[197]],[0,141,[152]],[0,220,[115]],[0,220,[219]],[0,150,[197]],[0,221,[216]],[0,221,[123]],[0,154,[169]],[0,208,[199]],[0,169,[170]],[0,145,[205]],[0,201,[159]],[0,136,[201]],[0,182,[164]],[0,182,[170]],[0,152,[155]],[0,152,[191]],[0,197,[114]],[0,213,[130]],[0,212,[199]],[0,137,[207]],[0,126,[137]],[0,189,[156]],[0,189,[143]],[0,212,[123]],[0,166,[201]],[0,180,[171]],[0,173,[180]],[0,186,[193]],[0,141,[186]],[0,129,[204]],[0,127,[129]],[0,139,[164]],[0,172,[114]],[0,202,[207]],[0,202,[130]],[0,202,[213]],[0,133,[170]],[0,217,[112]],[0,219,[217]],[0,118,[159]],[0,218,[149]],[0,135,[207]],[0,192,[180]],[0,162,[114]],[0,160,[175]],[0,170,[160]],[0,115,[112]],[0,113,[115]],[0,146,[207]],[0,155,[199]],[0,205,[149]],[0,218,[197]],[0,124,[218]],[0,187,[197]],[0,119,[112]],[0,186,[114]],[0,130,[114]],[0,217,[130]],[0,194,[159]],[0,190,[197]],[0,151,[169]],[0,123,[137]],[0,193,[163]],[0,149,[188]],[0,165,[149]],[0,159,[177]],[0,129,[159]],[0,183,[173]],[0,204,[208]],[0,206,[156]],[0,150,[160]],[0,114,[177]],[0,120,[204]],[0,168,[176]],[0,178,[191]],[0,177,[176]],[0,118,[217]],[0,204,[181]],[0,111,[122]],[0,171,[178]],[0,191,[169]],[0,160,[191]],[0,163,[160]],[0,131,[160]],[0,163,[181]],[0,194,[188]],[0,115,[117]],[0,201,[118]],[0,122,[117]],[0,175,[207]],[0,157,[167]],[0,200,[203]],[0,125,[209]],[0,173,[157]],[0,199,[216]],[0,178,[167]],[0,150,[169]],[0,188,[181]],[0,184,[189]],[0,164,[135]],[0,166,[182]],[0,138,[117]],[0,143,[167]],[0,117,[111]],[0,180,[117]],[0,191,[158]],[0,133,[117]],[0,129,[158]],[0,179,[169]],[0,120,[111]],[0,123,[167]],[0,131,[170]],[0,149,[181]],[0,189,[196]],[0,120,[170]],[0,167,[183]],[0,126,[134]],[0,214,[220]],[0,143,[176]],[0,185,[117]],[0,212,[176]],[0,112,[117]],[0,187,[168]],[0,185,[170]],[0,212,[168]],[0,124,[165]],[0,162,[181]],[0,130,[183]],[0,213,[183]],[0,160,[170]],[0,128,[183]],[0,200,[182]],[0,179,[200]],[0,179,[191]],[0,179,[163]],[0,179,[111]],[0,133,[181]],[0,203,[133]],[0,186,[144]],[0,206,[183]],[0,143,[168]],[0,114,[210]],[0,167,[173]],[0,151,[182]],[0,172,[158]],[0,178,[152]],[0,190,[117]],[0,190,[187]],[0,190,[180]],[0,190,[192]],[0,190,[153]],[0,190,[168]],[0,205,[116]],[0,205,[183]],[0,205,[198]],[0,161,[209]],[0,186,[117]],[0,169,[174]],[0,171,[152]],[0,131,[158]],[0,142,[152]],[0,188,[195]],[0,161,[117]],[0,199,[158]],[0,114,[161]],[0,179,[117]],[0,116,[147]],[0,188,[173]],[0,154,[144]],[0,145,[151]],[0,129,[168]],[0,145,[170]],[0,171,[173]],[0,139,[166]],[0,139,[169]],[0,139,[172]],[0,139,[162]],[0,131,[147]],[0,139,[181]],[0,139,[182]],[0,158,[183]],[0,160,[158]],[0,198,[165]],[0,198,[144]],[0,130,[189]],[0,197,[173]],[0,186,[220]],[0,188,[165]],[0,204,[120]],[0,204,[200]],[0,204,[179]],[0,117,[204]],[0,181,[182]],[0,170,[181]],[0,179,[170]],[0,136,[147]],[0,135,[165]],[0,193,[172]],[0,193,[131]],[0,213,[179]],[0,175,[183]],[0,200,[170]],[0,136,[177]],[0,116,[185]],[0,205,[198]],[0,206,[111]],[0,194,[113]],[0,118,[111]],[0,159,[167]],[0,156,[117]],[0,191,[174]],[0,176,[198]],[0,180,[176]],[0,216,[209]],[0,114,[198]],[0,174,[117]],[0,137,[111]],[0,152,[195]],[0,147,[152]],[0,160,[195]],[0,207,[160]],[0,207,[158]],[0,149,[158]],[0,166,[157]],[0,161,[198]],[0,135,[122]],[0,178,[198]],[0,171,[157]],[0,111,[228,246,252,322,483,486,499,501,504]],[0,112,[225,226,258,261,264,265,267,270,274,280,281,282,286,292,297,300,308,313,316,328,337,341,346,354,356,369,370,380,381,391,392,399,400,401,405,410,414,418,419,421,422,424,431,432,433,439,440,441,447,457,466,467,474,476,481,484,487,488,492,499,507,511,518,527,545,547,558,559,572,585,597,600,611,618,622,639,651,654]],[0,113,[230,436,453,456,609,626,627,629]],[0,114,[233,235,237,246,254,258,259,266,267,280,284,294,302,305,310,316,346,347,364,389,391,392,399,404,417,425,428,433,435,437,459,467,476,484,486,499,504,523,548,549,553,558,559,564,583,586,597,598,604,615,616,621,631,633,636,637,642,651]],[0,115,[228,231,236,246,247,252,264,266,268,274,276,280,322,324,326,330,332,334,337,338,341,347,351,353,356,358,360,362,375,381,416,417,421,425,426,431,437,443,445,452,456,458,483,497,501,505,511,518,530,539,557,572,575,607,618,626,627]],[0,116,[223,231,233,235,236,263,271,274,275,280,293,296,314,319,322,327,333,334,340,342,349,351,352,353,357,363,365,371,386,390,391,400,403,406,412,413,417,425,446,447,452,456,462,463,479,484,499,504,523,526,528,534,544,582,606,614,617,626,629,643,648,654]],[0,117,[357,358,465]],[0,118,[225,231,235,238,246,251,253,258,261,262,263,266,270,274,280,287,292,293,296,302,306,314,315,316,324,325,328,329,337,345,348,352,355,360,361,362,363,371,381,384,396,402,405,413,414,415,417,419,422,432,434,438,439,441,450,453,457,458,460,461,472,479,482,483,486,490,498,505,514,515,525,527,530,542,544,568,571,574,578,582,593,600,608,617,629,630,643,644,656]],[0,119,[225,226,239,244,251,258,261,264,265,276,279,285,288,291,292,301,303,304,305,311,314,315,316,317,320,321,322,328,329,330,331,335,337,344,347,349,354,358,365,373,375,380,381,383,390,392,393,396,399,402,404,408,412,414,416,418,419,424,426,437,438,439,441,447,449,457,460,462,473,477,487,492,495,496,498,518,526,527,537,545,556,562,572,579,589,591,600,611,619,654]],[0,120,[223,235,247,263,284,294,305,310,314,316,318,319,323,342,345,349,351,361,363,374,386,387,389,392,397,399,403,404,440,462,463,484,491,509,512,534,541,552,577,588,597,598,638]],[0,121,[249,311,382,448,449,493,520,591,593,624,631,637,645,647]],[0,122,[223,240,253,322,484,485,499,503,504]],[0,123,[229,233,234,242,246,251,268,272,273,279,286,299,311,315,356,359,363,376,420,449,488,490,492,493,498,502,507,509,516,518,537,538,555,558,574,592,593,619]],[0,124,[222,223,234,240,244,246,249,280,292,302,303,324,329,331,335,348,372,382,390,391,401,417,481,492,496,501,504,510,514,520,546,555,579,580,581,613,618,637,643,645,648]],[0,125,[224,435,452]],[0,126,[257,273,299,396,443]],[0,127,[237,284]],[0,128,[231,236,253,263,264,274,275,280,289,297,301,305,306,310,319,322,323,341,344,345,361,365,368,381,385,392,395,404,409,425,433,445,446,447,452,456,480,482,507,510,515,518,530,533,535,538,540,557,566,576,599,612,630,656]],[0,129,[235,253,274,280,298,313,321,324,331,334,335,336,337,346,352,357,360,361,364,365,372,381,384,417,425,440,482,492,494,498,510,511,512,514,519,540,547,551,552,555,584,585,588,591,592,639,640,642]],[0,130,[233,235,238,244,247,248,249,250,253,264,271,290,294,297,302,307,316,319,329,331,335,341,344,345,358,365,368,375,391,392,404,417,445,449,454,461,472,474,480,482,497,499,504,506,507,518,539,557,571,574,575,612,630]],[0,131,[233,234,242,266,268,276,282,309,315,321,327,345,358,361,363,367,372,376,406,419,421,435,478,488,493,494,495,502,506,511,512,513,514,537,538,559,562,563,564,574,590,593,624,633,634,644]],[0,132,[257,269,272,519,520,522,553,555,558,652]],[0,133,[228,232,235,253,268,280,286,297,315,332,343,345,350,356,363,365,368,378,385,396,407,416,421,480,482,488,493,498,499,506,516,535,537,566,567,569,570,573,590,593,619,644]],[0,134,[256,257,272,442,518,521,522,553,558,652]],[0,135,[222,223,225,226,231,234,240,241,243,247,256,261,263,264,267,269,274,279,280,281,282,292,298,299,303,309,313,318,321,322,323,324,325,332,337,338,339,341,343,344,346,347,350,353,354,358,359,360,361,363,364,366,370,371,372,373,376,378,379,387,400,406,418,419,421,422,426,432,439,442,443,444,453,456,457,459,464,468,471,472,473,477,479,482,484,485,487,496,503,509,510,517,540,541,542,546,551,552,554,556,558,559,568,572,581,582,612,616,622,637,641]],[0,136,[224,234,241,242,254,255,262,266,267,268,276,279,283,285,312,313,314,321,327,329,333,335,344,347,352,355,356,357,359,364,365,384,400,403,406,412,421,424,430,439,443,452,453,458,463,490,495,496,498,502,508,525,528,548,550,551,559,562,564,584,631,634,635]],[0,137,[223,233,234,240,241,242,247,252,265,270,272,273,280,286,299,315,319,331,332,334,335,338,340,341,351,353,358,359,365,375,417,420,421,430,443,464,472,473,474,477,483,488,489,501,502,518,558,591,592,613,618]],[0,138,[228,233,241,246,247,252,253,264,265,268,279,293,297,313,319,321,332,334,338,351,353,361,363,368,376,384,385,417,421,430,445,463,464,465,480,482,483,493,495,496,501,511,515,569,571,573,590,593,619,644]],[0,139,[224,231,232,234,242,274,283,323,324,326,338,339,340,341,349,351,357,367,375,425,437,438,439,456,462,463,465,472,494,496,499,502,505,513,514,540,565,576,599,620,621,623,631,656]],[0,140,[259,459]],[0,141,[278,333]],[0,142,[231,239,241,243,246,253,264,265,266,268,278,281,283,291,292,297,301,304,306,313,315,317,318,326,328,333,335,338,341,344,351,353,368,370,379,383,391,392,393,395,399,400,401,403,404,405,408,418,426,429,443,446,447,450,454,455,461,464,473,477,480,485,488,506,509,518,523,524,528,545,553,563,569,570,581,587,593,605,612,623,626,644,656]],[0,143,[229,233,234,242,246,265,270,302,307,328,331,334,337,346,347,356,359,381,385,391,392,393,404,484,488,490,492,501,507,509,511,527,547,548,552,560,563,586,588,610,628,657,658]],[0,144,[296,371,390,391,543,544,546,561,579,580,582]],[0,145,[223,230,232,236,239,240,243,246,251,252,260,269,272,274,285,288,290,291,298,300,301,304,306,308,309,310,314,315,316,317,326,330,334,336,339,342,346,351,353,357,358,367,369,373,379,381,386,406,409,410,420,422,423,430,431,437,440,442,445,449,453,455,460,461,472,484,486,496,497,498,499,511,516,521,522,527,535,540,552,553,563,566,567,570,571,575,587,592,596,597,599,604,610,613,630,640,646,658]],[0,146,[231,238,241,243,246,249,252,256,261,264,266,268,269,274,275,276,280,281,292,298,299,300,303,308,309,313,322,330,335,339,340,341,343,344,347,350,351,353,355,357,359,370,378,379,380,391,399,400,402,406,410,416,418,421,422,426,432,434,442,446,447,461,464,473,477,484,486,490,517,525,544,546,554,567,572,581,584,591,612,614,626,643,646,651,654]],[0,147,[278,327,333,377]],[0,148,[245,394]],[0,149,[234,241,246,279,287,294,303,305,310,316,323,336,341,344,345,348,358,363,381,385,389,392,399,401,404,407,416,426,430,431,463,464,484,494,495,501,507,510,530,533,542,606,614,617,626,629,654]],[0,150,[223,233,235,240,241,253,255,262,263,275,282,285,289,298,301,305,306,310,314,318,319,321,340,342,345,351,357,363,372,374,386,387,388,394,397,403,409,410,418,424,434,437,438,448,450,463,485,486,491,495,496,500,509,511,567,568,604,623,632,649,652,653]],[0,151,[232,233,241,247,287,290,291,314,317,321,322,336,343,344,350,351,356,359,360,367,378,387,392,404,409,426,431,463,464,478,486,489,496,498,504,507,511,513,516,534,535,552,566,568,569,570,571,588,599,639,640,656,657,658]],[0,152,[278,287,298,377,387,397,406,523,525,528,562]],[0,153,[289,388,394,395,410,551,602,604,605,651,652,653]],[0,154,[234,238,241,244,246,255,262,263,271,275,282,285,287,293,294,306,316,321,344,352,355,359,372,385,390,401,409,412,413,418,424,434,437,438,448,450,461,463,479,484,490,495,496,501,508,511,525,526,561,562,567,568,580,614,617,643,648]],[0,155,[225,226,230,231,238,241,242,243,249,253,255,256,263,267,269,272,279,284,285,286,294,296,298,305,310,329,339,340,341,343,344,346,350,351,363,364,365,369,374,376,378,379,385,387,389,390,399,400,401,403,404,405,418,419,420,421,424,427,438,439,441,442,443,447,456,457,461,473,477,485,491,523,524,541,544,556,561,568,580,586,588,591,595,597,628,633,643,646]],[0,156,[222,230,234,239,241,242,246,252,255,260,261,264,266,267,270,286,288,294,300,301,304,305,306,308,317,322,325,335,336,340,341,344,347,353,354,356,359,361,367,368,373,375,392,393,409,410,416,417,421,422,423,431,432,433,447,450,454,455,458,461,465,466,467,473,474,476,477,480,484,487,492,506,507,511,515,518,540,547,558,559,560,569,571,585,588,593,595,597,612,622,628,644,651,656,657,660]],[0,157,[229,324,341,358,375,488,491,506,509,510]],[0,158,[319,323,336,349,358,360,372,462,473,477,494,495,496,514]],[0,159,[265,270,279,286,287,313,314,315,321,322,330,337,344,346,349,360,364,384,387,396,426,430,431,462,473,474,477,488,489,490,492,495,496,498,511,548,583,585,597,598,639,640]],[0,160,[228,249,306,309,319,321,322,336,341,344,345,358,361,363,375,376,377,381,392,404,406,409,426,431,448,449,450,454,474,494,506,507,511,512,514,524,528,550,562,585,586,622,633]],[0,161,[223,228,235,236,238,244,246,247,249,254,266,267,305,310,322,324,331,335,337,356,357,360,385,389,399,428,433,435,447,449,453,454,458,461,467,472,476,484,486,492,510,511,523,549,553,558,559,564,585,586,604,621,631,633,636,651]],[0,162,[228,231,233,236,238,244,247,263,274,275,294,306,316,324,326,339,341,356,375,378,407,409,425,447,448,450,452,456,461,472,498,499,504,505,516,531,532,540,541,567,568,576,577,599,614,617,656]],[0,163,[235,260,264,279,286,287,297,309,313,323,329,331,332,333,335,338,342,357,365,368,372,384,385,386,387,396,407,430,445,465,468,480,512,515,525,528,534,550,563,566,574,585,586,599,622,633,656]],[0,164,[222,225,226,234,241,243,247,253,260,262,264,272,274,279,280,283,289,299,300,301,306,318,320,322,323,324,325,326,332,338,339,346,347,349,359,361,366,369,378,380,381,388,392,396,410,416,417,418,419,420,421,423,424,426,427,429,434,438,439,440,452,457,458,459,462,464,472,482,495,498,499,504,505,509,517,531,534,552,554,556,565,570,572,584,598,612,616,617,632,637,640,641,650,651,656]],[0,165,[271,292,293,296,352,371,391,413,416,479,542,546,581,582]],[0,166,[222,224,225,226,228,229,234,243,256,258,260,261,262,264,265,268,269,270,272,274,275,276,279,281,283,286,296,297,302,303,309,312,314,315,320,322,325,335,336,341,347,351,353,355,356,361,364,367,368,370,375,376,384,397,406,412,414,420,423,426,427,430,437,438,441,442,453,457,480,486,490,491,505,509,510,515,518,523,532,534,538,564,570,574,576,577,586,599,612,614,623,624,656]],[0,167,[228,324,341,358,375,489,490,507,510]],[0,168,[330,352,353,547,548,551,583,584]],[0,169,[232,241,255,262,266,268,274,276,282,285,314,321,322,332,336,340,343,349,350,356,357,378,381,387,421,424,425,437,438,443,462,465,472,478,493,499,514,540,568,570,576,599,656]],[0,170,[287,332,342,386,407]],[0,171,[231,246,262,263,268,275,278,285,309,314,323,326,331,335,337,341,356,361,362,365,381,421,424,437,443,446,452,453,456,458,488,491,492,510,511,512,524,525,530,549,550,553,558,559,564,604,651]],[0,172,[236,238,244,255,266,268,276,279,282,294,302,306,313,316,322,323,330,332,334,338,340,347,349,351,353,356,358,363,365,372,376,384,385,391,409,421,430,438,443,447,448,450,453,458,461,462,463,464,486,493,494,516]],[0,173,[228,229,357,360,474,509]],[0,174,[336,360,372,478,493,495,496,498,511,514,516]],[0,175,[222,232,234,243,247,249,251,260,265,268,272,274,275,276,280,281,283,286,289,296,297,299,300,301,302,303,313,315,319,320,325,326,330,334,335,343,344,347,350,356,359,361,368,370,373,375,378,380,381,386,388,400,410,416,417,420,423,427,429,434,443,450,460,480,488,496,498,504,506,515,517,518,532,540,554,565,572,577,584,591,593,614,632,644,646,650,651]],[0,176,[271,293,331,353,364,385,413,433,444,467,468,471,476,547,583,585,586]],[0,177,[330,331,352,364,365,548,551,584,585,586]],[0,178,[229,232,247,278,309,314,319,323,331,332,335,338,344,345,346,351,353,361,365,369,385,426,431,433,467,476,486,489,490,492,504,506,509,512,524,525,547,549,550,559,564,583,597,598,639,640]],[0,179,[228,270,297,329,360,365,368,381,385,416,422,465,468,472,480,536,537,539,574,575]],[0,180,[232,246,263,266,274,275,276,280,312,319,325,329,330,331,334,344,345,347,352,369,385,400,412,417,418,425,433,434,467,476,489,492,499,507,547,551,553,558,584,586,604,651]],[0,181,[338,376,407,534,567,568]],[0,182,[287,326,338,362,533,534]],[0,183,[233,241,322,349,462,463,464,473,477]],[0,184,[250,290]],[0,185,[247,263,266,268,274,275,276,279,280,287,292,296,303,319,322,334,342,344,348,351,353,355,359,360,363,365,371,372,386,390,391,400,417,418,421,425,430,434,443,486,490,496,499,504,508,514,534,543,579,581,582,614,617]],[0,186,[227,230,236,242,247,262,265,270,274,280,285,296,298,302,309,315,319,322,323,328,329,333,340,345,349,361,371,385,387,390,400,402,412,417,424,425,437,447,457,458,462,463,488,499,504,506,512,525,546,562,563,582,595,600,607,609,610,625,628,643,648,655]],[0,187,[231,236,238,244,246,266,276,288,289,294,301,302,313,316,319,322,328,334,340,347,349,352,365,388,391,394,398,418,434,446,447,451,452,456,461,462,463,486,534,542,545,547,548,553,558,578,581,583,587,601,603,623,626,629,632,653]],[0,188,[229,238,244,249,265,270,292,305,310,314,315,331,333,335,345,357,363,375,377,389,390,399,400,406,407,412,416,449,454,461,488,509,510,524,526,530,533,542,544,546,563,581,606,614,617,626,629,643,648,654]],[0,189,[248,250,290,307]],[0,190,[398,451]],[0,191,[228,232,247,265,270,280,309,315,321,331,333,334,335,338,343,345,350,351,353,356,361,365,372,378,387,417,465,478,486,488,493,494,495,496,504,506,512,525,528,540,550,563,568,570,576,585,586,599,622,633,656]],[0,192,[232,235,247,264,271,293,305,310,312,318,319,323,325,328,329,340,344,352,361,364,365,369,374,394,395,400,412,413,416,422,444,445,468,471,486,489,491,492,504,507,509,515,534,536,551,569,583,585,587,603,604,605,623,632]],[0,193,[223,230,234,235,236,238,240,243,251,256,260,265,266,267,269,272,281,302,303,306,308,313,314,316,319,327,329,332,334,335,338,339,343,347,350,362,363,364,366,367,370,373,378,379,390,396,400,401,402,405,406,412,419,420,421,426,427,435,438,442,445,450,453,460,461,465,468,478,495,500,502,512,513,514,516,518,533,537,538,543,559,563,564,566,579,586,590,595,599,612,624,628,634,648]],[0,194,[228,239,242,244,251,255,260,261,262,263,280,281,282,286,287,288,291,294,301,302,304,306,307,310,317,319,326,335,336,344,345,346,347,348,353,355,367,369,370,373,376,380,384,387,390,393,399,401,402,412,418,422,423,424,432,434,436,438,440,452,454,455,460,461,464,489,490,498,510,514,526,530,533,535,560,562,566,567,576,588,597,609,614,627,628,629,639,648,654,657,659]],[0,195,[286,287,333,377,387,396,406,524,525,562,563]],[0,196,[242,248,250,290,294,393,563,595,597,598,600,655,660]],[0,197,[223,229,233,236,238,239,240,243,244,246,249,270,276,281,283,291,292,294,297,301,302,304,306,316,317,318,323,326,328,331,334,338,340,351,361,365,368,370,375,379,381,383,393,394,400,401,405,408,416,421,422,429,431,434,445,449,450,452,455,456,480,500,506,507,515,518,534,536,542,553,570,578,587,593,612,629,632,644,656]],[0,198,[297,416,466]],[0,199,[223,225,226,231,233,235,236,239,240,247,249,251,252,265,271,276,280,281,284,285,288,291,293,294,295,301,304,310,313,316,317,320,324,325,330,335,336,345,346,348,352,353,354,355,358,361,366,369,370,371,372,374,380,381,383,389,390,392,393,405,408,413,419,422,424,425,432,434,438,439,441,452,457,458,460,479,487,490,491,494,498,501,510,537,541,555,580,582,588,591,594,597,606,613,617,619,629,643,646]],[0,200,[223,233,247,260,265,286,289,294,298,301,302,306,315,316,323,334,342,345,351,353,361,365,385,386,389,391,395,396,397,399,403,407,409,484,488,497,506,515,534,537,539,566,575,599,656]],[0,201,[224,226,233,234,235,243,247,253,261,266,271,274,280,281,292,294,298,302,308,312,315,324,325,328,329,332,334,335,336,337,345,347,355,358,361,362,364,367,370,373,379,385,388,389,395,396,397,401,405,409,412,415,419,425,429,437,439,447,458,482,490,505,515,523,527,529,530,538,542,564,570,571,578,586,600,605,606,608,624,630,653,656]],[0,202,[256,269,299,396,442,443,518,519,520,521,555]],[0,203,[223,228,232,233,235,238,244,247,253,264,280,289,298,301,319,322,323,332,340,343,349,350,356,361,363,378,389,395,397,399,403,407,416,426,431,445,448,450,461,462,463,482,484,486,498,499,515,516,518,535,557,566,567,570,612,630]],[0,204,[228,233,319,340,349,360,381,462,463,465,472]],[0,205,[231,235,240,243,244,246,247,252,261,263,269,272,279,280,281,300,305,308,309,310,313,328,335,339,341,343,348,350,351,353,357,360,363,365,370,372,376,378,379,380,389,391,396,397,402,403,406,410,420,425,431,432,442,445,446,447,449,454,496,497,508,514,521,522,525,553,561,568,575,580,587,592,604,613,617,626,630,643,646,654]],[0,206,[225,226,230,231,239,242,243,247,255,258,260,261,270,283,286,288,289,294,304,305,308,317,326,329,331,334,335,336,338,341,346,351,353,358,364,367,369,379,380,388,393,409,414,423,424,425,429,434,435,437,440,441,447,450,454,455,456,457,461,464,472,478,483,484,486,495,501,508,513,534,538,540,550,559,560,565,569,570,571,574,585,588,593,595,620,622,624,628,634,639,644,650,657,660]],[0,207,[222,228,234,243,251,256,261,267,268,269,270,274,276,280,282,285,298,299,323,325,326,335,339,343,345,346,350,351,353,354,358,359,363,368,369,377,378,379,387,404,409,422,432,433,437,438,440,442,448,449,454,460,466,467,476,480,486,487,492,496,512,515,517,518,524,528,547,550,554,558,559,562,572,584,586,591,593,597,633,639,644,646,656]],[0,208,[225,226,231,249,251,260,263,264,266,270,279,281,284,285,289,296,301,303,305,310,313,322,329,330,335,341,344,346,349,353,356,361,362,363,366,369,370,373,374,391,395,400,404,409,416,418,419,422,424,426,438,439,441,450,456,457,458,460,462,468,473,477,491,495,496,497,518,533,536,541,556,566,568,574,588,591,593,597,599,612,644,646]],[0,209,[254,255,267,276,282,403,428,435,438,464,621,622,631,636]],[0,210,[223,237,258,259,262,274,284,285,424,459,615,616,637,639,640,642]],[0,211,[254,428]],[0,212,[240,251,258,263,265,266,270,275,276,284,302,311,331,334,337,346,347,385,391,414,424,425,440,441,449,453,458,493,498,511,516,519,537,538,541,547,548,552,567,568,574,577,586,588,592,593,613,616,618,619,639]],[0,213,[223,228,235,240,253,256,270,271,280,313,331,335,341,345,348,359,360,365,372,375,384,430,465,468,472,474,482,489,496,506,514,520,521,536,537,554,556,557,571,572,575,591,592,613]],[0,214,[277,436]],[0,215,[382,411]],[0,216,[222,223,228,236,238,239,240,241,247,251,254,255,262,265,271,280,281,288,291,293,295,300,301,303,304,305,308,313,317,320,321,337,340,349,352,353,364,369,370,373,383,385,387,390,391,393,401,402,403,404,405,408,410,413,421,422,424,425,428,430,432,435,440,444,447,453,458,460,461,462,468,471,495,496,498,525,537,544,551,555,556,558,559,580,584,594,598,613,619,621,631,636,640,651]],[0,217,[222,226,233,235,242,253,265,270,271,297,302,328,329,330,337,345,347,356,357,358,360,368,391,415,416,417,480,481,482,484,488,504,506,511,527,560,571,572,574,595,600,612,618,630,660]],[0,218,[233,234,238,243,244,247,249,252,263,264,265,266,280,281,283,288,292,294,302,305,316,318,320,323,325,328,329,331,334,338,340,351,354,355,357,358,370,372,373,376,379,380,389,394,418,421,425,429,430,432,445,448,455,461,484,487,490,492,496,500,509,516,534,536,537,553,555,556,568,570,578,579,587,606,613,617,619,632,645,647,648]],[0,219,[227,415]],[0,220,[227,230,453,457,607,609,625,627]],[0,221,[295,311]],[0,171,[157]],[0,178,[198]],[0,135,[122]],[0,161,[198]],[0,166,[157]],[0,149,[158]],[0,207,[158]],[0,207,[160]],[0,160,[195]],[0,147,[152]],[0,152,[195]],[0,137,[111]],[0,174,[117]],[0,114,[198]],[0,216,[209]],[0,180,[176]],[0,176,[198]],[0,191,[174]],[0,156,[117]],[0,159,[167]],[0,118,[111]],[0,194,[113]],[0,206,[111]],[0,205,[198]],[0,116,[185]],[0,136,[177]],[0,200,[170]],[0,175,[183]],[0,213,[179]],[0,193,[131]],[0,193,[172]],[0,135,[165]],[0,136,[147]],[0,179,[170]],[0,170,[181]],[0,181,[182]],[0,117,[204]],[0,204,[179]],[0,204,[200]],[0,204,[120]],[0,188,[165]],[0,186,[220]],[0,197,[173]],[0,130,[189]],[0,198,[144]],[0,198,[165]],[0,160,[158]],[0,158,[183]],[0,139,[182]],[0,139,[181]],[0,131,[147]],[0,139,[162]],[0,139,[172]],[0,139,[169]],[0,139,[166]],[0,171,[173]],[0,145,[170]],[0,129,[168]],[0,145,[151]],[0,154,[144]],[0,188,[173]],[0,116,[147]],[0,179,[117]],[0,114,[161]],[0,199,[158]],[0,161,[117]],[0,188,[195]],[0,142,[152]],[0,131,[158]],[0,171,[152]],[0,169,[174]],[0,186,[117]],[0,161,[209]],[0,205,[198]],[0,205,[183]],[0,205,[116]],[0,190,[168]],[0,190,[153]],[0,190,[192]],[0,190,[180]],[0,190,[187]],[0,190,[117]],[0,178,[152]],[0,172,[158]],[0,151,[182]],[0,167,[173]],[0,114,[210]],[0,143,[168]],[0,206,[183]],[0,186,[144]],[0,203,[133]],[0,133,[181]],[0,179,[111]],[0,179,[163]],[0,179,[191]],[0,179,[200]],[0,200,[182]],[0,128,[183]],[0,160,[170]],[0,213,[183]],[0,130,[183]],[0,162,[181]],[0,124,[165]],[0,212,[168]],[0,185,[170]],[0,187,[168]],[0,112,[117]],[0,212,[176]],[0,185,[117]],[0,143,[176]],[0,214,[220]],[0,126,[134]],[0,167,[183]],[0,120,[170]],[0,189,[196]],[0,149,[181]],[0,131,[170]],[0,123,[167]],[0,120,[111]],[0,179,[169]],[0,129,[158]],[0,133,[117]],[0,191,[158]],[0,180,[117]],[0,117,[111]],[0,143,[167]],[0,138,[117]],[0,166,[182]],[0,164,[135]],[0,184,[189]],[0,188,[181]],[0,150,[169]],[0,178,[167]],[0,199,[216]],[0,173,[157]],[0,125,[209]],[0,200,[203]],[0,157,[167]],[0,175,[207]],[0,122,[117]],[0,201,[118]],[0,115,[117]],[0,194,[188]],[0,163,[181]],[0,131,[160]],[0,163,[160]],[0,160,[191]],[0,191,[169]],[0,171,[178]],[0,111,[122]],[0,204,[181]],[0,118,[217]],[0,177,[176]],[0,178,[191]],[0,168,[176]],[0,120,[204]],[0,114,[177]],[0,150,[160]],[0,206,[156]],[0,204,[208]],[0,183,[173]],[0,129,[159]],[0,159,[177]],[0,165,[149]],[0,149,[188]],[0,193,[163]],[0,123,[137]],[0,151,[169]],[0,190,[197]],[0,194,[159]],[0,217,[130]],[0,130,[114]],[0,186,[114]],[0,119,[112]],[0,187,[197]],[0,124,[218]],[0,218,[197]],[0,205,[149]],[0,155,[199]],[0,146,[207]],[0,113,[115]],[0,115,[112]],[0,170,[160]],[0,160,[175]],[0,162,[114]],[0,192,[180]],[0,135,[207]],[0,218,[149]],[0,118,[159]],[0,219,[217]],[0,217,[112]],[0,133,[170]],[0,202,[213]],[0,202,[130]],[0,202,[207]],[0,172,[114]],[0,139,[164]],[0,127,[129]],[0,129,[204]],[0,141,[186]],[0,186,[193]],[0,173,[180]],[0,180,[171]],[0,166,[201]],[0,212,[123]],[0,189,[143]],[0,189,[156]],[0,126,[137]],[0,137,[207]],[0,212,[199]],[0,213,[130]],[0,197,[114]],[0,152,[191]],[0,152,[155]],[0,182,[170]],[0,182,[164]],[0,136,[201]],[0,201,[159]],[0,145,[205]],[0,169,[170]],[0,208,[199]],[0,154,[169]],[0,221,[123]],[0,221,[216]],[0,150,[197]],[0,220,[219]],[0,220,[115]],[0,141,[152]],[0,124,[197]],[0,195,[191]],[0,195,[193]],[0,121,[123]],[0,123,[119]],[0,147,[191]],[0,191,[186]],[0,148,[192]],[0,148,[142]],[0,200,[114]],[0,209,[131]],[0,131,[206]],[0,181,[170]],[0,181,[166]],[0,162,[166]],[0,151,[156]],[0,132,[126]],[0,134,[132]],[0,144,[185]],[0,144,[146]],[0,211,[209]],[0,211,[139]],[0,210,[127]],[0,127,[199]],[0,165,[146]],[0,188,[165]],[0,213,[205]],[0,153,[192]],[0,192,[197]],[0,113,[118]],[0,147,[141]],[0,184,[143]],[0,143,[194]],[0,120,[208]],[0,196,[184]],[0,140,[210]],[0,210,[135]],[0,153,[150]],[0,158,[159]],[0,198,[185]],[0,185,[188]],[0,125,[209]],[0,125,[201]],[0,126,[205]],[0,163,[208]],[0,215,[121]],[0,215,[218]],[0,209,[136]],[0,214,[219]],[0,219,[118]],[0,214,[113]],[0,128,[165]],[0,174,[158]],[0,176,[178]],[0,132,[202]],[0,171,[165]],[0,184,[151]],[0,140,[212]],[0,170,[162]],[0,121,[124]],[0,117,[114]],[0,179,[120]],[0,116,[185]],[0,174,[163]],[0,203,[116]],[0,196,[145]],[0,173,[171]],[0,161,[116]],[0,167,[180]],[0,134,[213]],[0,158,[179]],[0,138,[163]],[0,183,[165]],[0,122,[120]],[0,157,[173]],[0,177,[171]],[0,111,[116]],[0,168,[161]],[0,314,[406]],[0,515,[235]],[0,650,[602]],[0,557,[521]],[0,512,[494]],[0,592,[646]],[0,489,[228]],[0,534,[570]],[0,326,[339]],[0,481,[472]],[0,541,[582]],[0,600,[563]],[0,255,[464]],[0,544,[561]],[0,588,[547]],[0,628,[609]],[0,481,[232]],[0,578,[385]],[0,265,[281]],[0,485,[486]],[0,525,[287]],[0,505,[360]],[0,650,[372]],[0,560,[381]],[0,628,[660]],[0,632,[565]],[0,590,[647]],[0,234,[241]],[0,479,[471]],[0,397,[308]],[0,640,[616]],[0,654,[581]],[0,323,[349]],[0,397,[407]],[0,590,[443]],[0,553,[522]],[0,502,[483]],[0,444,[470]],[0,633,[621]],[0,474,[465]],[0,555,[556]],[0,499,[484]],[0,614,[357]],[0,275,[437]],[0,445,[497]],[0,572,[618]],[0,444,[475]],[0,400,[390]],[0,492,[487]],[0,306,[317]],[0,330,[352]],[0,453,[230]],[0,577,[546]],[0,512,[298]],[0,434,[429]],[0,560,[524]],[0,587,[548]],[0,651,[551]],[0,330,[370]],[0,557,[422]],[0,362,[343]],[0,510,[375]],[0,338,[379]],[0,448,[493]],[0,526,[543]],[0,282,[435]],[0,262,[440]],[0,376,[350]],[0,622,[634]],[0,462,[473]],[0,622,[403]],[0,623,[529]],[0,412,[293]],[0,313,[303]],[0,450,[251]],[0,630,[539]],[0,623,[635]],[0,599,[535]],[0,495,[478]],[0,474,[509]],[0,479,[469]],[0,514,[367]],[0,363,[378]],[0,542,[384]],[0,498,[337]],[0,572,[365]],[0,482,[540]],[0,270,[329]],[0,619,[636]],[0,606,[649]],[0,505,[446]],[0,255,[428]],[0,592,[645]],[0,515,[569]],[0,447,[226]],[0,632,[620]],[0,527,[627]],[0,613,[519]],[0,629,[608]],[0,279,[269]],[0,448,[460]],[0,316,[405]],[0,264,[432]],[0,453,[225]],[0,426,[442]],[0,362,[333]],[0,598,[658]],[0,544,[312]],[0,326,[530]],[0,396,[299]],[0,430,[420]],[0,591,[520]],[0,527,[655]],[0,310,[410]],[0,552,[583]],[0,656,[571]],[0,504,[222]],[0,452,[224]],[0,395,[311]],[0,353,[369]],[0,567,[532]],[0,458,[328]],[0,593,[624]],[0,553,[652]],[0,294,[242]],[0,421,[246]],[0,400,[297]],[0,275,[441]],[0,302,[401]],[0,630,[607]],[0,244,[455]],[0,289,[398]],[0,301,[388]],[0,654,[601]],[0,392,[383]],[0,445,[271]],[0,639,[615]],[0,643,[594]],[0,648,[589]],[0,438,[267]],[0,286,[386]],[0,404,[408]],[0,480,[467]],[0,399,[288]],[0,280,[322]],[0,249,[239]],[0,418,[283]],[0,613,[642]],[0,314,[402]],[0,324,[354]],[0,236,[457]],[0,617,[641]],[0,480,[538]],[0,626,[611]],[0,492,[341]],[0,597,[657]],[0,591,[637]],[0,266,[419]],[0,559,[528]],[0,262,[415]],[0,334,[346]],[0,449,[250]],[0,425,[240]],[0,305,[394]],[0,302,[296]],[0,392,[307]],[0,247,[243]],[0,558,[517]],[0,313,[292]],[0,409,[291]],[0,482,[503]],[0,286,[309]],[0,537,[573]],[0,305,[300]],[0,389,[304]],[0,614,[638]],[0,376,[327]],[0,454,[245]],[0,332,[342]],[0,276,[439]],[0,268,[278]],[0,316,[393]],[0,344,[325]],[0,417,[433]],[0,651,[603]],[0,361,[321]],[0,268,[427]],[0,264,[536]],[0,586,[549]],[0,347,[368]],[0,417,[423]],[0,593,[631]],[0,425,[258]],[0,458,[227]],[0,568,[531]],[0,421,[272]],[0,404,[295]],[0,599,[659]],[0,234,[252]],[0,488,[340]],[0,431,[273]],[0,431,[256]],[0,612,[625]],[0,274,[223]],[0,285,[436]],[0,238,[248]],[0,430,[257]],[0,356,[373]],[0,434,[277]],[0,507,[355]],[0,456,[237]],[0,391,[413]],[0,263,[414]],[0,265,[261]],[0,294,[290]],[0,335,[364]],[0,496,[336]],[0,495,[348]],[0,488,[318]],[0,323,[366]],[0,231,[459]],[0,518,[554]],[0,306,[382]],[0,506,[374]],[0,253,[229]],[0,418,[254]],[0,424,[259]],[0,356,[320]],[0,353,[371]],[0,301,[411]],[0,656,[596]],[0,345,[380]],[0,461,[451]],[0,274,[284]],[0,351,[377]],[0,280,[260]]],"R":439,"coords":"ham","final":[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,525,526,527,528,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],"form":"/2","format":"bitE8/1+mut","frames":[[],[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110],[0],[1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12],[13],[14],[15],[16],[17],[18],[19],[20],[21],[22],[23],[24],[25],[26],[27],[28],[29],[30],[31],[32],[33],[34],[35],[36],[37],[38],[39],[40],[41],[42],[43],[44],[45],[46],[47],[48],[49],[50],[51],[52],[53],[54],[55],[56],[57],[58],[59],[60],[61],[62],[63],[64],[65],[66],[67],[68],[69],[70],[71],[72],[73],[74],[75],[76],[77],[78],[79],[80],[81],[82],[83],[84],[85],[86],[87],[88],[89],[90],[91],[92],[93],[94],[95],[96],[97],[98],[99],[100],[101],[102],[103],[104],[105],[106],[107],[108],[109],[110],[5,6],[5,9],[6,9],[46,54],[46,56],[54,56],[47,48],[47,52],[47,58],[48,52],[48,58],[52,58],[0,3],[0,11],[3,11],[62,69],[62,72],[69,72],[61,63],[61,68],[63,68],[15,23],[15,91],[15,96],[23,91],[23,96],[91,96],[30,41],[30,75],[30,82],[41,75],[41,82],[75,82],[49,53],[49,59],[49,70],[53,59],[53,70],[59,70],[19,27],[19,89],[19,97],[27,89],[27,97],[89,97],[35,43],[35,74],[43,74],[57,65],[57,66],[65,66],[21,26],[21,94],[21,102],[26,94],[26,102],[94,102],[36,44],[36,80],[36,84],[44,80],[44,84],[80,84],[51,55],[51,64],[51,71],[55,64],[55,71],[64,71],[17,22],[17,92],[22,92],[33,38],[33,77],[33,87],[38,77],[38,87],[77,87],[50,60],[50,67],[60,67],[10,13],[10,104],[10,107],[13,104],[13,107],[104,107],[32,34],[32,83],[32,85],[34,83],[34,85],[83,85],[39,42],[39,76],[39,79],[42,76],[42,79],[76,79],[1,7],[1,106],[1,108],[7,106],[7,108],[106,108],[24,29],[24,99],[24,101],[29,99],[29,101],[99,101],[25,28],[25,98],[25,100],[28,98],[28,100],[98,100],[2,4],[2,103],[2,109],[4,103],[4,109],[103,109],[14,20],[14,90],[14,95],[20,90],[20,95],[90,95],[16,18],[16,88],[16,93],[18,88],[18,93],[88,93],[8,12],[8,105],[8,110],[12,105],[12,110],[105,110],[31,37],[31,81],[31,86],[37,81],[37,86],[81,86],[40,45],[40,73],[40,78],[45,73],[45,78],[73,78],[1,2,4,7,8,9,10,11,12,13],[0,3,9,59,60,64,65,66,67,70,71],[0,6,11,16,17,18,19,22,24,27,29],[3,6,75,76,79,80,81,82,84,86],[0,6,9,14,15,20,21,23,25,26,28],[3,6,9,11,73,74,77,78,83,85,87],[0,5,32,33,34,35,38,40,43,45],[3,5,11,90,91,94,95,96,98,100,102],[0,5,9,11,30,31,36,37,39,41,42,44],[3,5,9,88,89,92,93,97,99,101],[5,6,11,49,50,51,53,55,57],[0,3,5,6,103,104,105,106,107,108,109,110],[4,7,53,54,55,56,69,70,71,72,108,109],[12,13,50,54,56,62,66,67,104,105],[17,27,36,41,56,62,72,80,82,89],[18,24,31,42,56,69,76,86,93,99],[15,26,34,40,54,62,69,78,83,91,102],[20,25,33,43,54,72,74,87,95,98],[14,28,35,38,46,56,62,69,77,90,100],[21,23,32,45,46,56,72,73,85,94,96],[16,29,37,39,46,54,62,72,79,81,88,101],[19,22,30,44,46,54,69,75,84,92,97],[1,2,46,49,51,59,62,64,103,106],[8,10,46,57,60,65,69,72,107,110],[4,7,52,57,58,66,67,68,103,106],[12,13,49,51,52,58,61,63,70,71,107,110],[16,29,36,41,48,58,63,68,75,84,93,99],[19,22,31,42,48,58,61,79,81,89],[14,28,34,40,48,52,63,73,85,95,98],[21,23,33,43,48,52,61,68,77,91,102],[15,26,35,38,47,58,63,74,87,94,96],[20,25,32,45,47,58,61,68,78,83,90,100],[17,27,37,39,47,52,63,68,76,86,92,97],[18,24,30,44,47,52,61,80,82,88,101],[1,2,47,48,50,60,61,63,65,108,109],[8,10,47,48,53,55,59,64,68,104,105],[21,26,37,42,65,67,76,81,91,96],[1,7,22,23,26,27,96,97,102,103,109],[10,12,16,18,23,26,91,94,99,101,105,107],[8,13,15,21,24,29,88,93,96,102,104,110],[2,4,15,17,19,21,89,91,92,94,106,108],[15,23,31,39,50,57,60,66,79,86,94,102],[20,28,36,44,50,57,65,67,75,82,90,98],[2,7,40,41,44,45,82,83,84,85,106,109],[10,13,33,35,41,44,75,80,87,105,110],[8,12,30,36,38,43,74,77,82,84,104,107],[1,4,30,32,34,36,73,75,78,80,103,108],[14,25,30,41,60,66,80,84,95,100],[14,25,31,39,51,55,59,70,76,81,90,98],[19,27,34,45,51,53,64,70,78,85,92],[16,24,33,38,51,53,59,71,74,88,99],[18,29,35,43,49,55,64,70,77,87,93,101],[17,22,32,40,49,55,59,71,73,83,89,97],[20,28,37,42,49,53,64,71,79,86,95,100],[8,13,14,20,22,27,89,92,98,100,105,107],[10,12,17,19,25,28,90,95,97,104,110],[2,7,38,39,42,43,81,86,87,103,108],[1,4,31,33,35,37,74,76,77,79,106,109],[18,29,34,45,50,65,66,73,83,88,99],[16,24,32,40,57,60,67,78,85,93,101],[0,1,2,3,4,7,8,9,10,11,12,13,59,60,61,62,63,64,65,66,67,68,69,70,71,72],[0,3,6,11,16,17,18,19,22,24,27,29,61,62,63,68,69,72,75,76,79,80,81,82,84,86],[0,3,6,9,11,14,15,20,21,23,25,26,28,61,62,63,68,69,72,73,74,77,78,83,85,87],[0,3,5,11,32,33,34,35,38,40,43,45,61,62,63,68,69,72,90,91,94,95,96,98,100,102],[0,3,5,9,11,30,31,36,37,39,41,42,44,61,62,63,68,69,72,88,89,92,93,97,99,101],[0,3,5,6,11,49,50,51,53,55,57,61,62,63,68,69,72,103,104,105,106,107,108,109,110],[0,3,4,7,11,12,13,50,53,54,55,56,61,62,63,66,67,68,69,70,71,72,104,105,108,109],[0,3,11,17,18,24,27,31,36,41,42,56,61,62,63,68,69,72,76,80,82,86,89,93,99],[0,3,11,15,20,25,26,33,34,40,43,54,61,62,63,68,69,72,74,78,83,87,91,95,98,102],[0,3,11,14,21,23,28,32,35,38,45,46,56,61,62,63,68,69,72,73,77,85,90,94,96,100],[0,3,11,16,19,22,29,30,37,39,44,46,54,61,62,63,68,69,72,75,79,81,84,88,92,97,101],[0,1,2,3,8,10,11,46,49,51,57,59,60,61,62,63,64,65,68,69,72,103,106,107,110],[0,3,4,7,11,12,13,49,51,52,57,58,61,62,63,66,67,68,69,70,71,72,103,106,107,110],[0,3,11,16,19,22,29,31,36,41,42,48,58,61,62,63,68,69,72,75,79,81,84,89,93,99],[0,3,11,14,21,23,28,33,34,40,43,48,52,61,62,63,68,69,72,73,77,85,91,95,98,102],[0,3,11,15,20,25,26,32,35,38,45,47,58,61,62,63,68,69,72,74,78,83,87,90,94,96,100],[0,3,11,17,18,24,27,30,37,39,44,47,52,61,62,63,68,69,72,76,80,82,86,88,92,97,101],[0,1,2,3,8,10,11,47,48,50,53,55,59,60,61,62,63,64,65,68,69,72,104,105,108,109],[1,2,4,5,6,7,8,9,10,11,12,13,46,47,48,49,50,51,52,53,54,55,56,57,58],[3,5,6,9,46,47,48,52,54,56,58,75,76,79,80,81,82,84,86,88,89,92,93,97,99,101],[3,5,6,9,11,46,47,48,52,54,56,58,73,74,77,78,83,85,87,90,91,94,95,96,98,100,102],[0,5,6,9,14,15,20,21,23,25,26,28,32,33,34,35,38,40,43,45,46,47,48,52,54,56,58],[0,5,6,9,11,16,17,18,19,22,24,27,29,30,31,36,37,39,41,42,44,46,47,48,52,54,56,58],[0,3,5,6,9,46,47,48,52,54,56,58,59,60,64,65,66,67,70,71,103,104,105,106,107,108,109,110],[4,5,6,7,8,9,10,46,47,48,52,53,54,55,56,57,58,60,65,69,70,71,72,107,108,109,110],[5,6,9,16,17,27,29,36,37,39,41,46,47,48,52,54,56,58,62,72,79,80,81,82,88,89,101],[5,6,9,14,15,26,28,34,35,38,40,46,47,48,52,54,56,58,62,69,77,78,83,90,91,100,102],[5,6,9,20,21,23,25,32,33,43,45,46,47,48,52,54,56,58,72,73,74,85,87,94,95,96,98],[5,6,9,18,19,22,24,30,31,42,44,46,47,48,52,54,56,58,69,75,76,84,86,92,93,97,99],[1,2,5,6,9,12,13,46,47,48,49,50,51,52,54,56,58,59,62,64,66,67,103,104,105,106],[4,5,6,7,8,9,10,46,47,48,52,53,54,55,56,57,58,59,64,66,67,68,103,104,105,106],[5,6,9,16,17,27,29,36,37,39,41,46,47,48,52,54,56,58,63,68,75,76,84,86,92,93,97,99],[5,6,9,14,15,26,28,34,35,38,40,46,47,48,52,54,56,58,63,73,74,85,87,94,95,96,98],[5,6,9,20,21,23,25,32,33,43,45,46,47,48,52,54,56,58,61,68,77,78,83,90,91,100,102],[5,6,9,18,19,22,24,30,31,42,44,46,47,48,52,54,56,58,61,79,80,81,82,88,89,101],[1,2,5,6,9,12,13,46,47,48,49,50,51,52,54,56,58,60,61,63,65,70,71,107,108,109,110],[3,5,11,21,26,36,37,42,44,51,55,64,65,67,71,76,80,81,84,90,91,94,95,96,98,100,102],[1,7,21,22,23,26,27,32,36,44,45,46,51,55,56,64,71,72,73,80,84,85,94,96,97,102,103,109],[10,12,16,18,21,23,26,33,36,43,44,48,51,52,55,61,64,68,71,77,80,84,91,94,99,101,102,105,107],[8,13,15,21,24,26,29,35,36,38,44,47,51,55,58,63,64,71,74,80,84,87,88,93,94,96,102,104,110],[2,4,15,17,19,21,26,34,36,40,44,51,54,55,62,64,69,71,78,80,83,84,89,91,92,94,102,106,108],[0,6,9,14,15,20,21,23,25,26,28,31,36,39,44,50,51,55,57,60,64,66,71,79,80,84,86,94,102],[3,6,20,21,26,28,36,44,50,51,55,57,64,65,67,71,75,76,79,80,81,82,84,86,90,94,98,102],[2,7,17,21,26,27,36,40,41,44,45,51,55,56,62,64,71,72,80,82,83,84,85,89,94,102,106,109],[10,13,16,21,26,29,33,35,36,41,44,48,51,55,58,63,64,68,71,75,80,84,87,93,94,99,102,105,110],[8,12,18,21,24,26,30,36,38,43,44,47,51,52,55,61,64,71,74,77,80,82,84,88,94,101,102,104,107],[1,4,19,21,22,26,30,32,34,36,44,46,51,54,55,64,69,71,73,75,78,80,84,92,94,97,102,103,108],[0,5,9,11,14,21,25,26,30,31,36,37,39,41,42,44,51,55,60,64,66,71,80,84,94,95,100,102],[0,3,9,14,21,25,26,31,36,39,44,51,55,59,60,64,65,66,67,70,71,76,80,81,84,90,94,98,102],[4,7,19,21,26,27,34,36,44,45,51,53,54,55,56,64,69,70,71,72,78,80,84,85,92,94,102,108,109],[8,10,16,21,24,26,33,36,38,44,47,48,51,53,55,59,64,68,71,74,80,84,88,94,99,102,104,105],[12,13,18,21,26,29,35,36,43,44,49,51,52,55,58,61,63,64,70,71,77,80,84,87,93,94,101,102,107,110],[1,2,17,21,22,26,32,36,40,44,46,49,51,55,59,62,64,71,73,80,83,84,89,94,97,102,103,106],[5,6,11,20,21,26,28,36,37,42,44,49,50,51,53,55,57,64,71,79,80,84,86,94,95,100,102],[3,5,9,17,22,32,33,38,40,49,50,55,59,60,67,71,73,77,83,87,88,89,92,93,97,99,101],[1,7,17,22,23,26,27,33,37,38,39,47,50,52,60,63,67,68,76,77,86,87,92,96,97,102,103,109],[8,13,14,17,20,22,27,33,36,38,41,50,56,60,62,67,72,77,80,82,87,89,92,98,100,105,107],[10,12,17,19,22,25,28,30,33,38,44,46,50,54,60,67,69,75,77,84,87,90,92,95,97,104,110],[2,4,15,17,19,21,22,31,33,38,42,48,50,58,60,61,67,77,79,81,87,89,91,92,94,106,108],[0,6,11,16,17,18,19,22,24,27,29,33,34,38,45,50,51,53,60,64,67,70,77,78,85,87,92],[3,6,9,11,16,17,22,24,33,38,50,51,53,59,60,67,71,73,74,77,78,83,85,87,88,92,99],[2,7,17,21,22,23,33,38,39,42,43,48,50,52,60,61,67,68,77,81,86,87,91,92,102,103,108],[8,12,17,20,22,25,30,33,36,38,43,50,54,60,67,72,74,77,82,84,87,92,95,98,104,107],[10,13,14,17,22,28,33,35,38,41,44,46,50,56,60,62,67,69,75,77,80,87,90,92,100,105,110],[1,4,15,17,22,26,31,33,35,37,38,47,50,58,60,63,67,74,76,77,79,87,92,94,96,106,109],[0,5,17,18,22,29,32,33,34,35,38,40,43,45,49,50,55,60,64,67,70,77,87,92,93,101],[0,3,9,17,18,22,29,33,34,38,45,50,59,60,64,65,66,67,70,71,73,77,83,87,88,92,99],[4,7,15,17,22,23,31,33,38,39,50,52,57,58,60,66,67,68,77,79,86,87,92,94,102,103,106],[8,10,17,20,22,28,33,36,38,44,46,50,57,60,65,67,69,72,75,77,82,87,90,92,98,107,110],[12,13,14,17,22,25,30,33,38,41,50,54,56,60,62,66,67,77,80,84,87,92,95,100,104,105],[1,2,17,21,22,26,33,37,38,42,47,48,50,60,61,63,65,67,76,77,81,87,91,92,96,108,109],[5,6,11,16,17,22,24,32,33,38,40,49,50,51,53,55,57,60,67,77,78,85,87,92,93,101],[3,5,11,15,23,30,31,39,41,49,50,53,57,59,60,66,70,75,79,82,86,90,91,94,95,96,98,100,102],[1,7,15,22,23,26,27,30,34,40,41,49,53,54,59,62,69,70,75,78,82,83,91,96,97,102,103,109],[10,12,15,16,18,23,26,30,35,38,41,47,49,53,58,59,63,70,74,75,82,87,91,94,96,99,101,105,107],[8,13,15,21,23,24,29,30,33,41,43,48,49,52,53,59,61,68,70,75,77,82,88,91,93,96,102,104,110],[2,4,15,17,19,21,23,30,32,41,45,46,49,53,56,59,70,72,73,75,82,85,89,91,92,94,96,106,108],[0,6,9,14,15,20,21,23,25,26,28,30,37,41,42,49,53,59,65,67,70,75,76,81,82,91,96],[3,6,14,15,23,25,30,41,49,53,59,60,66,70,75,76,79,80,81,82,84,86,91,95,96,100],[2,7,15,19,22,23,30,40,41,44,45,46,49,53,54,59,69,70,75,82,83,84,85,91,92,96,97,106,109],[10,13,15,18,23,24,30,33,35,41,44,47,49,52,53,59,61,70,75,80,82,87,88,91,96,101,105,110],[8,12,15,16,23,29,30,36,38,41,43,48,49,53,58,59,63,68,70,74,75,77,82,84,91,93,96,99,104,107],[1,4,15,17,23,27,30,32,34,36,41,49,53,56,59,62,70,72,73,75,78,80,82,89,91,96,103,108],[0,5,9,11,15,20,23,28,30,31,36,37,39,41,42,44,49,50,53,57,59,65,67,70,75,82,90,91,96,98],[0,3,9,15,20,23,28,30,37,41,42,49,53,59,60,64,65,66,67,70,71,75,79,82,86,91,95,96,100],[4,7,15,17,22,23,30,32,40,41,49,53,54,55,56,59,69,70,71,72,73,75,82,83,89,91,96,97,108,109],[8,10,15,18,23,29,30,35,41,43,47,48,49,53,55,59,64,68,70,75,77,82,87,91,93,96,101,104,105],[12,13,15,16,23,24,30,33,38,41,49,51,52,53,58,59,61,63,70,71,74,75,82,88,91,96,99,107,110],[1,2,15,19,23,27,30,34,41,45,46,49,51,53,59,62,64,70,75,78,82,85,91,92,96,103,106],[5,6,11,14,15,23,25,30,31,39,41,49,50,51,53,55,57,59,70,75,76,81,82,90,91,96,98],[3,5,9,19,27,34,35,43,45,51,53,57,64,65,66,70,74,78,85,88,89,92,93,97,99,101],[1,7,19,22,23,26,27,31,35,42,43,48,57,58,61,65,66,74,79,81,89,96,97,102,103,109],[8,13,14,19,20,22,27,30,35,43,44,46,54,57,65,66,69,74,75,84,89,92,97,98,100,105,107],[10,12,17,19,25,27,28,35,36,41,43,56,57,62,65,66,72,74,80,82,89,90,95,97,104,110],[2,4,15,17,19,21,27,35,37,39,43,47,52,57,63,65,66,68,74,76,86,89,91,92,94,97,106,108],[0,6,11,16,17,18,19,22,24,27,29,32,35,40,43,49,55,57,59,65,66,71,73,74,83,89,97],[3,6,9,11,18,19,27,29,35,43,49,55,57,64,65,66,70,73,74,77,78,83,85,87,89,93,97,101],[2,7,15,19,26,27,35,38,39,42,43,47,57,58,63,65,66,74,81,86,87,89,94,96,97,103,108],[8,12,14,19,27,28,30,35,36,38,43,46,56,57,62,65,66,69,74,77,82,84,89,90,97,100,104,107],[10,13,19,20,25,27,33,35,41,43,44,54,57,65,66,72,74,75,80,87,89,95,97,98,105,110],[1,4,19,21,23,27,31,33,35,37,43,48,52,57,61,65,66,68,74,76,77,79,89,91,97,102,106,109],[0,5,16,19,24,27,32,33,34,35,38,40,43,45,51,53,57,59,65,66,71,74,88,89,97,99],[0,3,9,16,19,24,27,32,35,40,43,57,59,60,64,65,66,67,70,71,74,78,85,89,93,97,101],[4,7,19,21,26,27,35,37,42,43,52,57,58,65,66,67,68,74,76,81,89,91,96,97,103,106],[8,10,14,19,25,27,30,35,41,43,46,57,60,65,66,69,72,74,80,84,89,95,97,100,107,110],[12,13,19,20,27,28,35,36,43,44,50,54,56,57,62,65,66,67,74,75,82,89,90,97,98,104,105],[1,2,15,19,23,27,31,35,39,43,47,48,50,57,60,61,63,65,66,74,79,86,89,94,97,102,108,109],[5,6,11,18,19,27,29,34,35,43,45,49,50,51,53,55,57,65,66,73,74,83,88,89,97,99],[0,3,5,6,8,12,30,31,36,37,38,40,43,45,73,74,77,78,81,82,84,86,103,104,105,106,107,108,109,110],[8,12,13,14,20,22,27,31,37,40,45,49,51,52,58,61,63,70,71,73,78,81,86,89,92,98,100,105,107,110],[8,12,13,15,21,24,29,31,37,40,45,50,54,56,62,66,67,73,78,81,86,88,93,96,102,104,105,110],[8,10,12,16,18,23,26,31,37,40,45,46,57,60,65,69,72,73,78,81,86,91,94,99,101,105,107,110],[8,10,12,17,19,25,28,31,37,40,45,47,48,53,55,59,64,68,73,78,81,86,90,95,97,104,105,110],[1,2,4,7,8,9,10,11,12,13,31,33,35,37,40,41,44,45,73,75,78,80,81,86,87,105,110],[2,3,6,7,8,9,11,12,31,37,40,41,44,45,73,74,77,78,81,82,83,84,85,86,87,105,106,109,110],[8,12,14,19,27,28,31,34,37,40,45,48,51,52,53,63,64,70,73,78,81,85,86,92,95,98,105,110],[8,12,15,18,26,29,31,34,37,40,45,50,54,62,65,66,69,73,78,81,83,86,88,91,99,102,105,110],[8,12,16,21,23,24,31,32,37,40,45,46,56,57,60,67,72,73,78,81,85,86,93,94,96,101,105,110],[8,12,17,20,22,25,31,32,37,40,45,47,49,55,58,59,61,68,71,73,78,81,83,86,89,90,97,100,105,110],[0,1,4,5,8,12,30,31,32,33,34,35,36,37,38,40,43,45,73,75,78,80,81,86,103,105,108,110],[1,3,4,6,8,12,31,33,35,37,40,45,73,74,75,76,77,78,79,80,81,82,84,86,105,106,109,110],[8,12,19,20,22,28,31,37,40,42,45,48,49,53,58,61,64,71,73,78,79,81,86,89,95,100,105,110],[8,12,18,21,24,26,31,37,40,42,45,56,65,67,69,73,76,78,81,86,91,93,96,99,105,110],[8,12,15,16,23,29,31,37,39,40,45,46,50,54,57,60,62,66,72,73,78,79,81,86,88,94,101,102,105,110],[8,12,14,17,25,27,31,37,39,40,45,47,51,52,55,59,63,68,70,73,76,78,81,86,90,92,97,98,105,110],[0,2,5,7,8,9,11,12,30,31,36,37,38,39,40,41,42,43,44,45,73,78,81,86,87,103,105,108,110],[0,2,3,4,5,6,14,15,16,17,18,19,20,21,88,89,90,91,92,93,94,95,103,104,105,106,107,108,109,110],[2,4,7,14,16,18,20,38,39,42,43,53,54,55,56,69,70,71,72,81,86,87,88,90,93,95,103,108,109],[2,4,7,14,16,18,20,40,41,44,45,52,57,58,66,67,68,82,83,84,85,88,90,93,95,103,106,109],[1,2,4,14,16,18,20,30,32,34,36,47,48,50,60,61,63,65,73,75,78,80,88,90,93,95,103,108,109],[1,2,4,14,16,18,20,31,33,35,37,46,49,51,59,62,64,74,76,77,79,88,90,93,95,103,106,109],[1,2,4,7,8,9,10,11,12,13,14,16,18,20,22,23,26,27,88,90,93,95,96,97,102,103,109],[2,3,4,5,9,10,12,14,16,18,20,23,26,88,89,90,91,92,93,94,95,97,99,101,103,105,107,109],[2,4,14,16,18,20,29,35,37,39,43,46,49,54,55,62,64,70,72,77,79,81,87,88,90,93,95,101,103,109],[2,4,14,16,18,20,29,34,36,41,45,48,50,58,63,65,66,68,73,75,83,84,88,90,93,95,99,103,109],[2,4,14,16,18,20,24,30,32,40,44,47,52,57,60,61,67,78,80,82,85,88,90,93,95,101,103,109],[2,4,14,16,18,20,24,31,33,38,42,51,53,56,59,69,71,74,76,86,88,90,93,95,99,103,109],[0,2,4,6,8,11,13,14,15,16,17,18,19,20,21,22,24,27,29,88,90,93,95,96,102,103,104,109,110],[2,3,4,5,8,11,13,14,16,18,20,22,27,88,89,90,91,92,93,94,95,96,98,100,102,103,105,107,109],[2,4,14,16,18,20,28,35,37,38,42,46,49,53,56,62,64,69,71,77,79,86,88,90,93,95,100,103,109],[2,4,14,16,18,20,28,34,36,40,44,48,50,52,57,63,65,67,73,75,82,85,88,90,93,95,98,103,109],[2,4,14,16,18,20,25,30,32,41,45,47,58,60,61,66,68,78,80,83,84,88,90,93,95,100,103,109],[2,4,14,16,18,20,25,31,33,39,43,51,54,55,59,70,72,74,76,81,87,88,90,93,95,98,103,109],[0,2,4,6,9,10,12,14,15,16,17,18,19,20,21,23,25,26,28,88,90,93,95,97,103,104,109,110],[0,1,3,5,6,7,22,23,24,25,26,27,28,29,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110],[1,4,7,24,25,28,29,31,33,35,37,53,54,55,56,69,70,71,72,74,76,77,79,98,99,100,101,106,108,109],[1,4,7,24,25,28,29,30,32,34,36,52,57,58,66,67,68,73,75,78,80,98,99,100,101,103,106,108],[1,2,7,24,25,28,29,40,41,44,45,47,48,50,60,61,63,65,82,83,84,85,98,99,100,101,106,108,109],[1,2,7,24,25,28,29,38,39,42,43,46,49,51,59,62,64,81,86,87,98,99,100,101,103,106,108],[1,2,4,7,8,9,10,11,12,13,15,17,19,21,24,25,28,29,89,91,92,94,98,99,100,101,106,108],[1,3,5,7,10,11,12,17,19,24,25,28,29,90,91,94,95,96,97,98,99,100,101,102,104,106,108,110],[1,7,20,24,25,28,29,33,37,42,43,49,53,54,64,71,72,74,79,86,87,95,98,99,100,101,106,108],[1,7,20,24,25,28,29,32,36,44,45,47,50,57,58,61,65,67,68,75,78,82,83,90,98,99,100,101,106,108],[1,7,14,24,25,28,29,30,34,40,41,48,52,60,63,66,73,80,84,85,95,98,99,100,101,106,108],[1,7,14,24,25,28,29,31,35,38,39,46,51,55,56,59,62,69,70,76,77,81,90,98,99,100,101,106,108],[0,1,6,7,8,9,13,14,15,20,21,22,23,24,25,26,27,28,29,89,92,98,99,100,101,105,106,107,108],[1,3,5,7,8,9,13,15,21,24,25,28,29,88,89,92,93,96,97,98,99,100,101,102,104,106,108,110],[1,7,18,24,25,28,29,31,35,42,43,49,55,56,64,69,70,76,77,86,87,93,98,99,100,101,106,108],[1,7,18,24,25,28,29,30,34,44,45,47,50,52,61,65,66,73,80,82,83,88,98,99,100,101,106,108],[1,7,16,24,25,28,29,32,36,40,41,48,57,58,60,63,67,68,75,78,84,85,93,98,99,100,101,106,108],[1,7,16,24,25,28,29,33,37,38,39,46,51,53,54,59,62,71,72,74,79,81,88,98,99,100,101,106,108],[0,1,6,7,10,11,12,16,17,18,19,22,23,24,25,26,27,28,29,91,94,98,99,100,101,105,106,107,108],[0,3,5,6,10,13,32,33,34,35,39,41,42,44,75,76,79,80,83,85,87,103,104,105,106,107,108,109,110],[10,12,13,17,19,25,28,32,34,39,42,49,51,52,58,61,63,70,71,76,79,83,85,90,95,97,104,107,110],[10,12,13,16,18,23,26,32,34,39,42,50,54,56,62,66,67,76,79,83,85,91,94,99,101,104,105,107],[8,10,13,15,21,24,29,32,34,39,42,46,57,60,65,69,72,76,79,83,85,88,93,96,102,104,107,110],[8,10,13,14,20,22,27,32,34,39,42,47,48,53,55,59,64,68,76,79,83,85,89,92,98,100,104,105,107],[1,2,4,7,8,9,10,11,12,13,30,32,34,36,38,39,42,43,74,76,77,79,82,83,84,85,104,107],[2,3,6,7,10,13,32,34,38,39,42,43,75,76,79,80,81,82,83,84,85,86,87,103,104,107,108],[10,13,17,20,27,28,32,34,37,39,42,47,49,52,53,63,64,68,71,76,79,83,85,86,92,95,97,100,104,107],[10,13,16,21,26,29,32,34,37,39,42,46,54,62,65,67,72,76,79,81,83,85,88,91,96,101,104,107],[10,13,15,18,23,24,31,32,34,39,42,50,56,57,60,66,69,76,79,83,85,86,93,94,99,102,104,107],[10,13,14,19,22,25,31,32,34,39,42,48,51,55,58,59,61,70,76,79,81,83,85,89,90,98,104,107],[0,1,4,5,9,10,11,13,30,31,32,33,34,35,36,37,39,41,42,44,74,76,77,79,83,85,104,106,107,109],[1,3,4,6,9,10,11,13,30,32,34,36,39,42,73,74,75,76,77,78,79,80,83,85,87,103,104,107,108],[10,13,19,20,25,27,32,34,39,42,45,47,51,53,58,61,64,68,70,76,78,79,83,85,90,92,100,104,107],[10,13,18,21,23,29,32,34,39,42,45,46,50,56,65,66,72,73,76,79,83,85,88,94,96,99,104,107],[10,13,15,16,24,26,32,34,39,40,42,54,57,60,62,67,69,76,78,79,83,85,91,93,101,102,104,107],[10,13,14,17,22,28,32,34,39,40,42,48,49,52,55,59,63,71,73,76,79,83,85,89,95,97,98,104,107],[0,2,5,7,10,13,32,33,34,35,38,39,40,41,42,43,44,45,76,79,82,83,84,85,104,106,107,109],[5,6,9,46,47,48,52,54,56,58],[0,3,11,61,62,63,68,69,72],[19,27,35,43,57,65,66,74,89,97],[17,22,33,38,50,60,67,77,87,92],[0,3,5,6,9,11,14,15,20,21,23,25,26,28,30,31,36,37,39,41,42,44,49,50,51,53,55,57,61,62,63,68,69,72,73,74,77,78,83,85,87,88,89,92,93,97,99,101,103,104,105,106,107,108,109,110],[0,3,5,6,9,11,16,17,18,19,22,24,27,29,30,31,36,37,39,41,42,44,46,47,48,52,54,56,58,59,60,64,65,66,67,70,71,73,74,77,78,83,85,87,90,91,94,95,96,98,100,102,103,104,105,106,107,108,109,110],[0,3,4,7,11,12,13,14,16,19,21,22,23,28,29,30,32,35,37,38,39,44,45,46,50,53,54,55,56,61,62,63,66,67,68,69,70,71,72,73,75,77,79,81,84,85,88,90,92,94,96,97,100,101,104,105,108,109],[0,3,4,7,8,9,10,15,17,18,20,22,23,28,29,31,33,34,36,38,39,44,45,46,50,52,57,58,59,60,64,65,66,67,68,69,70,71,72,73,75,77,79,82,83,86,87,88,90,92,94,98,99,102,103,106,107,110],[0,1,2,3,9,12,13,15,16,19,20,23,24,27,28,31,32,35,36,39,40,43,44,47,48,50,54,56,57,59,60,61,62,63,64,65,66,67,70,71,74,75,78,79,82,85,86,89,90,93,94,97,98,101,102,104,105,108,109],[4,5,6,7,8,9,10,14,15,16,17,26,27,28,29,34,35,36,37,38,39,40,41,46,47,48,52,53,54,55,56,57,58,60,62,65,69,70,71,72,77,78,79,80,81,82,83,88,89,90,91,100,101,102,107,108,109,110],[1,2,5,6,9,12,13,16,17,20,21,23,25,27,29,32,33,36,37,39,41,43,45,46,47,48,49,50,51,52,54,56,58,60,61,63,65,68,70,71,75,76,77,78,83,84,86,90,91,92,93,97,99,100,102,107,108,109,110],[0,1,4,5,8,12,15,17,18,20,22,25,26,29,30,31,32,33,34,35,36,37,38,40,43,45,47,49,50,54,55,58,60,63,64,67,70,72,74,76,77,79,82,84,87,92,93,94,95,96,98,101,104,106,107,109],[0,2,4,6,8,11,13,14,15,16,17,18,19,20,21,22,24,27,29,30,32,35,37,39,40,43,44,46,47,49,52,54,55,57,59,63,65,66,68,69,71,73,74,75,76,83,84,86,89,91,92,94,97,98,100,105,106,107,108],[15,23,30,41,49,53,59,70,75,82,91,96],[21,26,36,44,51,55,64,71,80,84,94,102],[10,13,32,34,39,42,76,79,83,85,104,107],[1,7,24,25,28,29,98,99,100,101,106,108],[2,4,14,16,18,20,88,90,93,95,103,109],[8,12,31,37,40,45,73,78,81,86,105,110],[1,2,3,4,5,6,7,8,9,10,11,12,13,46,47,48,49,50,51,52,53,54,55,56,57,58,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102],[0,2,3,4,5,6,7,14,15,16,17,18,19,20,21,38,39,40,41,42,43,44,45,52,53,54,55,56,57,58,66,67,68,69,70,71,72,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,103,104,105,106,107,108,109,110],[0,1,3,4,5,6,7,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,52,53,54,55,56,57,58,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110],[0,1,2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58],[0,1,2,3,5,6,7,22,23,24,25,26,27,28,29,38,39,40,41,42,43,44,45,46,47,48,49,50,51,59,60,61,62,63,64,65,81,82,83,84,85,86,87,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110],[0,1,2,3,4,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87],[0,1,2,3,4,5,7,8,9,10,11,12,13,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,59,60,61,62,63,64,65,66,67,68,69,70,71,72,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102],[0,1,2,3,4,5,6,14,15,16,17,18,19,20,21,30,31,32,33,34,35,36,37,46,47,48,49,50,51,59,60,61,62,63,64,65,73,74,75,76,77,78,79,80,88,89,90,91,92,93,94,95,103,104,105,106,107,108,109,110],[0,3,5,6,10,12,13,16,17,18,19,23,25,26,28,32,33,34,35,39,41,42,44,49,50,51,52,54,56,58,61,62,63,66,67,70,71,75,76,79,80,83,85,87,90,91,94,95,97,99,101,103,104,105,106,107,108,109,110],[0,3,5,6,11,16,17,18,19,22,24,27,29,32,33,34,35,38,40,43,45,49,50,51,53,55,57,61,62,63,68,69,72,75,76,79,80,81,82,84,86,90,91,94,95,96,98,100,102,103,104,105,106,107,108,109,110],[0,3,5,6,8,12,13,14,15,20,21,22,24,27,29,30,31,36,37,38,40,43,45,49,50,51,52,54,56,58,61,62,63,66,67,70,71,73,74,77,78,81,82,84,86,88,89,92,93,96,98,100,102,103,104,105,106,107,108,109,110],[0,3,5,6,9,14,15,20,21,23,25,26,28,32,33,34,35,38,40,43,45,46,47,48,52,54,56,58,59,60,64,65,66,67,70,71,75,76,79,80,81,82,84,86,88,89,92,93,97,99,101,103,104,105,106,107,108,109,110],[0,3,5,6,8,10,13,14,15,20,21,22,24,27,29,32,33,34,35,39,41,42,44,46,47,48,53,55,57,59,60,64,65,68,69,72,75,76,79,80,83,85,87,88,89,92,93,96,98,100,102,103,104,105,106,107,108,109,110],[0,3,5,6,8,10,12,16,17,18,19,23,25,26,28,30,31,36,37,38,40,43,45,46,47,48,53,55,57,59,60,64,65,68,69,72,73,74,77,78,81,82,84,86,90,91,94,95,97,99,101,103,104,105,106,107,108,109,110],[1,3,5,7,10,11,12,17,19,20,24,25,28,29,32,33,36,37,42,43,44,45,47,49,50,53,54,57,58,61,64,65,67,68,71,72,74,75,78,79,82,83,86,87,90,91,94,95,96,97,98,99,100,101,102,104,106,108,110],[1,3,5,7,10,11,12,16,18,21,22,23,26,27,32,33,36,37,42,43,44,45,46,48,51,52,55,56,61,64,65,67,68,71,72,73,76,77,80,81,84,85,90,91,94,95,96,97,98,99,100,101,102,103,105,107,109],[1,3,5,7,8,9,13,15,18,21,24,25,28,29,30,31,34,35,42,43,44,45,47,49,50,52,55,56,61,64,65,66,69,70,73,76,77,80,82,83,86,87,88,89,92,93,96,97,98,99,100,101,102,104,106,108,110],[1,3,5,7,8,9,13,14,19,20,22,23,26,27,30,31,34,35,42,43,44,45,46,48,51,53,54,57,58,61,64,65,66,69,70,74,75,78,79,81,84,85,88,89,92,93,96,97,98,99,100,101,102,103,105,107,109],[1,3,5,7,8,9,13,15,16,21,24,25,28,29,32,33,36,37,38,39,40,41,46,48,51,53,54,57,58,59,60,62,63,67,68,71,72,74,75,78,79,81,84,85,88,89,92,93,96,97,98,99,100,101,102,104,106,108,110],[1,3,5,7,8,9,13,14,17,20,22,23,26,27,32,33,36,37,38,39,40,41,47,49,50,52,55,56,59,60,62,63,67,68,71,72,73,76,77,80,82,83,86,87,88,89,92,93,96,97,98,99,100,101,102,103,105,107,109],[1,3,5,7,10,11,12,14,17,19,24,25,28,29,30,31,34,35,38,39,40,41,46,48,51,52,55,56,59,60,62,63,66,69,70,73,76,77,80,81,84,85,90,91,94,95,96,97,98,99,100,101,102,104,106,108,110],[1,3,5,7,10,11,12,15,16,18,22,23,26,27,30,31,34,35,38,39,40,41,47,49,50,53,54,57,58,59,60,62,63,66,69,70,74,75,78,79,82,83,86,87,90,91,94,95,96,97,98,99,100,101,102,103,105,107,109],[2,3,4,5,9,10,12,15,17,19,21,25,27,28,34,35,36,37,39,41,43,45,47,51,52,53,56,57,62,63,64,65,66,68,70,72,74,76,78,80,82,85,86,88,89,90,91,92,93,94,95,97,99,101,104,106,108,110],[2,3,4,5,8,11,13,15,17,19,21,24,26,29,34,35,36,37,38,40,42,44,47,51,54,55,58,62,63,64,65,67,69,71,74,76,78,80,81,83,84,87,88,89,90,91,92,93,94,95,96,98,100,102,104,106,108,110],[2,3,4,5,9,10,12,14,16,18,20,23,26,29,34,35,36,37,39,41,43,45,46,48,49,50,54,55,58,62,63,64,65,66,68,70,72,73,75,77,79,81,83,84,87,88,89,90,91,92,93,94,95,97,99,101,103,105,107,109],[2,3,4,5,8,11,13,14,16,18,20,22,27,28,34,35,36,37,38,40,42,44,46,48,49,50,52,53,56,57,62,63,64,65,67,69,71,73,75,77,79,82,85,86,88,89,90,91,92,93,94,95,96,98,100,102,103,105,107,109],[2,3,4,5,8,11,13,15,17,19,21,23,24,29,30,31,32,33,39,41,43,45,46,48,49,50,52,53,56,57,59,60,61,66,68,70,72,73,75,77,79,82,85,86,88,89,90,91,92,93,94,95,96,98,100,102,104,106,108,110],[2,3,4,5,9,10,12,15,17,19,21,22,25,28,30,31,32,33,38,40,42,44,46,48,49,50,54,55,58,59,60,61,67,69,71,73,75,77,79,81,83,84,87,88,89,90,91,92,93,94,95,97,99,101,104,106,108,110],[2,3,4,5,8,11,13,14,16,18,20,22,25,27,30,31,32,33,39,41,43,45,47,51,54,55,58,59,60,61,66,68,70,72,74,76,78,80,81,83,84,87,88,89,90,91,92,93,94,95,96,98,100,102,103,105,107,109],[2,3,4,5,9,10,12,14,16,18,20,23,24,26,30,31,32,33,38,40,42,44,47,51,52,53,56,57,59,60,61,67,69,71,74,76,78,80,82,85,86,88,89,90,91,92,93,94,95,97,99,101,103,105,107,109],[2,3,6,7,10,13,16,17,20,21,26,27,28,29,33,35,36,40,41,44,45,48,50,51,55,56,57,58,62,63,64,65,67,68,71,72,75,76,79,80,81,82,83,84,85,86,87,89,90,93,94,98,99,102,105,106,109,110],[2,3,6,7,10,13,16,17,20,21,26,27,28,29,32,34,37,38,39,42,43,46,47,49,52,53,54,62,63,64,65,67,68,71,72,75,76,79,80,81,82,83,84,85,86,87,88,91,92,95,96,97,100,101,103,104,107,108],[2,3,6,7,8,9,11,12,14,15,18,19,26,27,28,29,31,34,37,40,41,44,45,48,50,51,52,53,54,62,63,64,65,66,69,70,73,74,77,78,81,82,83,84,85,86,87,88,91,92,95,98,99,102,105,106,109,110],[2,3,6,7,8,9,11,12,14,15,18,19,26,27,28,29,30,35,36,38,39,42,43,46,47,49,55,56,57,58,62,63,64,65,66,69,70,73,74,77,78,81,82,83,84,85,86,87,89,90,93,94,96,97,100,101,103,104,107,108],[2,3,6,7,8,9,11,12,16,17,20,21,22,23,24,25,31,32,37,40,41,44,45,46,47,49,55,56,57,58,59,60,61,67,68,71,72,73,74,77,78,81,82,83,84,85,86,87,89,90,93,94,96,97,100,101,105,106,109,110],[2,3,6,7,8,9,11,12,16,17,20,21,22,23,24,25,30,33,36,38,39,42,43,48,50,51,52,53,54,59,60,61,67,68,71,72,73,74,77,78,81,82,83,84,85,86,87,88,91,92,95,98,99,102,103,104,107,108],[2,3,6,7,10,13,14,15,18,19,22,23,24,25,30,33,35,40,41,44,45,46,47,49,52,53,54,59,60,61,66,69,70,75,76,79,80,81,82,83,84,85,86,87,88,91,92,95,96,97,100,101,105,106,109,110],[2,3,6,7,10,13,14,15,18,19,22,23,24,25,31,32,34,38,39,42,43,48,50,51,55,56,57,58,59,60,61,66,69,70,75,76,79,80,81,82,83,84,85,86,87,89,90,93,94,98,99,102,103,104,107,108],[1,3,4,6,9,10,11,13,18,19,20,21,23,25,27,29,31,33,35,37,41,43,44,48,49,52,54,55,57,61,64,65,66,68,70,72,73,74,75,76,77,78,79,80,83,85,87,89,91,93,95,97,98,101,102,105,106,109,110],[1,3,4,6,8,12,18,19,20,21,22,24,26,28,31,33,35,37,40,42,45,48,49,53,56,58,61,64,65,67,69,71,73,74,75,76,77,78,79,80,81,82,84,86,89,91,93,95,96,99,100,105,106,109,110],[1,3,4,6,9,10,11,13,18,19,20,21,23,25,27,29,30,32,34,36,39,42,45,46,47,50,51,53,56,58,61,64,65,66,68,70,72,73,74,75,76,77,78,79,80,83,85,87,88,90,92,94,96,99,100,103,104,107,108],[1,3,4,6,8,12,18,19,20,21,22,24,26,28,30,32,34,36,38,43,44,46,47,50,51,52,54,55,57,61,64,65,67,69,71,73,74,75,76,77,78,79,80,81,82,84,86,88,90,92,94,97,98,101,102,103,104,107,108],[1,3,4,6,8,12,14,15,16,17,23,25,27,29,31,33,35,37,39,40,45,46,47,50,51,52,54,55,57,59,60,62,63,66,68,70,72,73,74,75,76,77,78,79,80,81,82,84,86,88,90,92,94,97,98,101,102,105,106,109,110],[1,3,4,6,9,10,11,13,14,15,16,17,22,24,26,28,31,33,35,37,38,41,44,46,47,50,51,53,56,58,59,60,62,63,67,69,71,73,74,75,76,77,78,79,80,83,85,87,88,90,92,94,96,99,100,105,106,109,110],[1,3,4,6,8,12,14,15,16,17,23,25,27,29,30,32,34,36,38,41,43,48,49,53,56,58,59,60,62,63,66,68,70,72,73,74,75,76,77,78,79,80,81,82,84,86,89,91,93,95,96,99,100,103,104,107,108],[1,3,4,6,9,10,11,13,14,15,16,17,22,24,26,28,30,32,34,36,39,40,42,48,49,52,54,55,57,59,60,62,63,67,69,71,73,74,75,76,77,78,79,80,83,85,87,89,91,93,95,97,98,101,102,103,104,107,108],[0,3,4,7,11,12,13,15,17,18,20,24,25,26,27,31,33,34,36,40,41,42,43,50,53,54,55,56,61,62,63,66,67,68,69,70,71,72,74,76,78,80,82,83,86,87,89,91,93,95,98,99,102,104,105,108,109],[0,3,4,7,11,12,13,14,16,19,21,22,23,28,29,31,33,34,36,40,41,42,43,48,49,51,52,57,58,61,62,63,66,67,68,69,70,71,72,73,75,77,79,81,84,85,89,91,93,95,98,99,102,103,106,107,110],[0,3,4,7,11,12,13,15,17,18,20,24,25,26,27,30,32,35,37,38,39,44,45,47,49,51,52,57,58,61,62,63,66,67,68,69,70,71,72,74,76,78,80,82,83,86,87,88,90,92,94,96,97,100,101,103,106,107,110],[0,3,4,7,8,9,10,14,16,19,21,24,25,26,27,31,33,34,36,38,39,44,45,47,48,51,53,54,55,56,59,60,64,65,66,67,68,69,70,71,72,74,76,78,80,81,84,85,88,90,92,94,98,99,102,104,105,108,109],[0,3,4,7,8,9,10,14,16,19,21,24,25,26,27,30,32,35,37,40,41,42,43,46,52,57,58,59,60,64,65,66,67,68,69,70,71,72,74,76,78,80,81,84,85,89,91,93,95,96,97,100,101,103,106,107,110],[0,3,4,7,8,9,10,15,17,18,20,22,23,28,29,30,32,35,37,40,41,42,43,47,48,49,53,54,55,56,59,60,64,65,66,67,68,69,70,71,72,73,75,77,79,82,83,86,87,89,91,93,95,96,97,100,101,104,105,108,109],[0,1,2,3,8,10,11,15,16,19,20,22,25,26,29,31,32,35,36,38,41,42,45,47,48,50,53,55,58,59,60,61,62,63,64,65,68,69,72,74,75,78,79,81,83,84,87,89,90,93,94,96,99,100,104,105,108,109],[0,1,2,3,9,12,13,14,17,18,21,22,25,26,29,31,32,35,36,39,40,43,44,46,49,51,52,55,58,59,60,61,62,63,64,65,66,67,70,71,73,76,77,80,81,83,84,87,89,90,93,94,97,98,101,102,103,106,107,110],[0,1,2,3,8,10,11,14,17,18,21,23,24,27,28,31,32,35,36,38,41,42,45,46,49,51,56,57,59,60,61,62,63,64,65,68,69,72,73,76,77,80,82,85,86,89,90,93,94,96,99,100,103,106,107,110],[0,1,2,3,9,12,13,15,16,19,20,23,24,27,28,30,33,34,37,38,41,42,45,46,49,51,52,53,58,59,60,61,62,63,64,65,66,67,70,71,74,75,78,79,82,85,86,88,91,92,95,96,99,100,103,106,107,110],[0,1,2,3,8,10,11,15,16,19,20,22,25,26,29,30,33,34,37,39,40,43,44,46,49,51,54,57,59,60,61,62,63,64,65,68,69,72,74,75,78,79,81,83,84,87,88,91,92,95,97,98,101,102,103,106,107,110],[0,1,2,3,9,12,13,14,17,18,21,22,25,26,29,30,33,34,37,38,41,42,45,47,48,50,54,56,59,60,61,62,63,64,65,66,67,70,71,73,76,77,80,81,83,84,87,88,91,92,95,96,99,100,104,105,108,109],[0,1,2,3,8,10,11,14,17,18,21,23,24,27,28,30,33,34,37,39,40,43,44,47,48,50,52,53,55,59,60,61,62,63,64,65,68,69,72,73,76,77,80,82,85,86,88,91,92,95,97,98,101,102,104,105,108,109],[4,5,6,7,11,12,13,18,19,20,21,26,27,28,29,34,35,36,37,42,43,44,45,49,50,51,52,53,54,55,56,57,58,61,63,64,69,70,71,72,77,78,79,80,84,85,86,87,92,93,94,95,100,101,102,107,108,109,110],[4,5,6,7,11,12,13,18,19,20,21,26,27,28,29,34,35,36,37,42,43,44,45,49,50,51,52,53,54,55,56,57,58,62,65,66,67,68,73,74,75,76,81,82,83,88,89,90,91,96,97,98,99,103,104,105,106],[4,5,6,7,8,9,10,14,15,16,17,26,27,28,29,34,35,36,37,38,39,40,41,46,47,48,52,53,54,55,56,57,58,59,63,64,66,67,68,73,74,75,76,84,85,86,87,92,93,94,95,96,97,98,99,103,104,105,106],[4,5,6,7,8,9,10,18,19,20,21,22,23,24,25,30,31,32,33,42,43,44,45,46,47,48,52,53,54,55,56,57,58,60,65,69,70,71,72,73,74,75,76,84,85,86,87,92,93,94,95,96,97,98,99,107,108,109,110],[4,5,6,7,8,9,10,18,19,20,21,22,23,24,25,30,31,32,33,42,43,44,45,46,47,48,52,53,54,55,56,57,58,59,61,64,66,67,68,77,78,79,80,81,82,83,88,89,90,91,100,101,102,103,104,105,106],[4,5,6,7,11,12,13,14,15,16,17,22,23,24,25,30,31,32,33,38,39,40,41,49,50,51,52,53,54,55,56,57,58,59,61,63,69,70,71,72,73,74,75,76,81,82,83,88,89,90,91,96,97,98,99,107,108,109,110],[4,5,6,7,11,12,13,14,15,16,17,22,23,24,25,30,31,32,33,38,39,40,41,49,50,51,52,53,54,55,56,57,58,60,62,66,67,68,77,78,79,80,84,85,86,87,92,93,94,95,100,101,102,103,104,105,106],[1,2,5,6,8,10,11,16,17,20,21,22,24,26,28,32,33,36,37,38,40,42,44,46,47,48,49,50,51,53,55,57,60,61,63,65,67,69,72,75,76,77,78,81,82,85,87,90,91,92,93,96,98,101,107,108,109,110],[1,2,5,6,8,10,11,14,15,18,19,23,25,27,29,30,31,34,35,39,41,43,45,46,47,48,49,50,51,53,55,57,60,61,63,65,66,69,72,73,74,79,80,83,84,86,88,89,94,95,97,99,100,102,107,108,109,110],[1,2,5,6,9,12,13,14,15,18,19,22,24,26,28,30,31,34,35,38,40,42,44,46,47,48,49,50,51,52,54,56,58,60,61,63,65,70,71,73,74,79,80,81,82,85,87,88,89,94,95,96,98,101,107,108,109,110],[1,2,5,6,9,12,13,16,17,20,21,23,25,27,29,32,33,36,37,39,41,43,45,46,47,48,49,50,51,52,54,56,58,59,62,64,66,67,72,73,74,79,80,81,82,85,87,88,89,94,95,96,98,101,103,104,105,106],[1,2,5,6,8,10,11,16,17,20,21,22,24,26,28,32,33,36,37,38,40,42,44,46,47,48,49,50,51,53,55,57,59,62,64,68,71,73,74,79,80,83,84,86,88,89,94,95,97,99,100,102,103,104,105,106],[1,2,5,6,8,10,11,14,15,18,19,23,25,27,29,30,31,34,35,39,41,43,45,46,47,48,49,50,51,53,55,57,59,62,64,68,70,75,76,77,78,81,82,85,87,90,91,92,93,96,98,101,103,104,105,106],[1,2,5,6,9,12,13,14,15,18,19,22,24,26,28,30,31,34,35,38,40,42,44,46,47,48,49,50,51,52,54,56,58,59,62,64,66,67,69,75,76,77,78,83,84,86,90,91,92,93,97,99,100,102,103,104,105,106],[0,2,5,7,10,13,15,16,19,20,24,25,26,27,32,33,34,35,38,39,40,41,42,43,44,45,47,51,53,54,57,58,60,61,62,64,67,68,69,70,76,78,79,82,83,84,85,90,91,92,93,100,101,102,104,106,107,109],[0,2,5,7,10,13,14,17,18,21,22,23,28,29,32,33,34,35,38,39,40,41,42,43,44,45,46,48,49,50,52,55,56,60,61,62,64,67,68,69,70,75,77,80,81,86,87,90,91,92,93,100,101,102,103,105,108,110],[0,2,5,7,8,9,11,12,14,17,18,21,24,25,26,27,30,31,36,37,38,39,40,41,42,43,44,45,47,51,52,55,56,60,61,62,64,66,71,72,74,77,80,82,83,84,85,88,89,94,95,100,101,102,104,106,107,109],[0,2,5,7,8,9,11,12,15,16,19,20,22,23,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,48,49,50,53,54,57,58,60,61,62,64,66,71,72,73,78,79,81,86,87,88,89,94,95,100,101,102,103,105,108,110],[0,2,5,7,10,13,15,16,19,20,24,25,26,27,32,33,34,35,38,39,40,41,42,43,44,45,47,51,53,54,57,58,59,63,65,66,71,72,74,75,80,81,86,87,88,89,94,95,96,97,98,99,103,105,108,110],[0,2,5,7,10,13,14,17,18,21,22,23,28,29,32,33,34,35,38,39,40,41,42,43,44,45,46,48,49,50,52,55,56,59,63,65,66,71,72,73,76,79,82,83,84,85,88,89,94,95,96,97,98,99,104,106,107,109],[0,2,5,7,8,9,11,12,14,17,18,21,24,25,26,27,30,31,36,37,38,39,40,41,42,43,44,45,47,51,52,55,56,59,63,65,67,68,69,70,73,76,78,81,86,87,90,91,92,93,96,97,98,99,103,105,108,110],[0,2,5,7,8,9,11,12,15,16,19,20,22,23,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,48,49,50,53,54,57,58,59,63,65,67,68,69,70,74,75,77,82,83,84,85,90,91,92,93,96,97,98,99,104,106,107,109],[0,1,4,5,9,10,11,13,15,17,18,20,23,24,27,28,30,31,32,33,34,35,36,37,39,41,42,44,47,49,50,52,53,56,57,60,63,64,66,68,69,71,74,76,77,79,83,85,86,92,93,94,95,97,99,100,102,104,106,107,109],[0,1,4,5,9,10,11,13,14,16,19,21,22,25,26,29,30,31,32,33,34,35,36,37,39,41,42,44,46,48,51,54,55,58,60,63,64,66,68,69,71,73,75,78,80,84,87,92,93,94,95,97,99,100,102,103,105,108,110],[0,1,4,5,8,12,14,16,19,21,23,24,27,28,30,31,32,33,34,35,36,37,38,40,43,45,46,48,51,52,53,56,57,60,63,64,67,70,72,73,75,78,80,81,85,86,92,93,94,95,96,98,101,103,105,108,110],[0,1,4,5,9,10,11,13,15,17,18,20,23,24,27,28,30,31,32,33,34,35,36,37,39,41,42,44,47,49,50,52,53,56,57,59,61,62,65,67,70,72,73,75,78,80,82,87,88,89,90,91,96,98,101,103,105,108,110],[0,1,4,5,8,12,15,17,18,20,22,25,26,29,30,31,32,33,34,35,36,37,38,40,43,45,47,49,50,54,55,58,59,61,62,65,66,68,69,71,73,75,78,80,81,83,86,88,89,90,91,97,99,100,102,103,105,108,110],[0,1,4,5,9,10,11,13,14,16,19,21,22,25,26,29,30,31,32,33,34,35,36,37,39,41,42,44,46,48,51,54,55,58,59,61,62,65,67,70,72,74,76,77,79,81,83,85,88,89,90,91,96,98,101,104,106,107,109],[0,1,4,5,8,12,14,16,19,21,23,24,27,28,30,31,32,33,34,35,36,37,38,40,43,45,46,48,51,52,53,56,57,59,61,62,65,66,68,69,71,74,76,77,79,82,84,88,89,90,91,97,99,100,102,104,106,107,109],[0,1,6,7,10,11,12,16,17,18,19,22,23,24,25,26,27,28,29,31,32,35,36,40,41,42,43,48,49,55,56,57,58,60,63,64,67,68,69,70,75,76,77,78,84,85,86,87,91,93,94,98,99,100,101,105,106,107,108],[0,1,6,7,10,11,12,16,17,18,19,22,23,24,25,26,27,28,29,30,33,34,37,38,39,44,45,46,47,50,51,52,53,54,60,63,64,67,68,69,70,75,76,77,78,84,85,86,87,90,92,95,96,97,102,103,104,109,110],[0,1,6,7,8,9,13,14,15,20,21,22,23,24,25,26,27,28,29,30,33,34,37,40,41,42,43,48,49,52,53,54,60,63,64,66,71,72,73,74,79,80,84,85,86,87,89,92,95,98,99,100,101,105,106,107,108],[0,1,6,7,8,9,13,14,15,20,21,22,23,24,25,26,27,28,29,31,32,35,36,38,39,44,45,46,47,50,51,55,56,57,58,60,63,64,66,71,72,73,74,79,80,84,85,86,87,88,93,94,96,97,102,103,104,109,110],[0,1,6,7,10,11,12,16,17,18,19,22,23,24,25,26,27,28,29,31,32,35,36,40,41,42,43,48,49,55,56,57,58,59,61,62,65,66,71,72,73,74,79,80,81,82,83,89,90,95,96,97,102,103,104,109,110],[0,1,6,7,10,11,12,16,17,18,19,22,23,24,25,26,27,28,29,30,33,34,37,38,39,44,45,46,47,50,51,52,53,54,59,61,62,65,66,71,72,73,74,79,80,81,82,83,88,91,94,98,99,100,101,105,106,107,108],[0,1,6,7,8,9,13,14,15,20,21,22,23,24,25,26,27,28,29,30,33,34,37,40,41,42,43,48,49,52,53,54,59,61,62,65,67,68,69,70,75,76,77,78,81,82,83,88,91,93,96,97,102,103,104,109,110],[0,1,6,7,8,9,13,14,15,20,21,22,23,24,25,26,27,28,29,31,32,35,36,38,39,44,45,46,47,50,51,55,56,57,58,59,61,62,65,67,68,69,70,75,76,77,78,81,82,83,89,90,92,98,99,100,101,105,106,107,108],[0,2,4,6,9,10,12,14,15,16,17,18,19,20,21,23,25,26,28,31,33,34,36,39,40,43,44,48,50,51,52,54,55,57,60,61,62,64,66,68,69,71,77,78,79,80,83,84,86,89,91,92,94,99,101,102,105,106,107,108],[0,2,4,6,8,11,13,14,15,16,17,18,19,20,21,22,24,27,29,31,33,34,36,38,41,42,45,48,50,51,53,56,58,60,61,62,64,67,70,72,77,78,79,80,81,82,85,87,89,91,92,94,98,100,105,106,107,108],[0,2,4,6,9,10,12,14,15,16,17,18,19,20,21,23,25,26,28,30,32,35,37,38,41,42,45,46,47,49,53,56,58,60,61,62,64,66,68,69,71,77,78,79,80,83,84,86,88,90,93,95,97,100,103,104,109,110],[0,2,4,6,8,11,13,14,15,16,17,18,19,20,21,22,24,27,29,30,32,35,37,39,40,43,44,46,47,49,52,54,55,57,60,61,62,64,67,70,72,77,78,79,80,81,82,85,87,88,90,93,95,96,101,102,103,104,109,110],[0,2,4,6,9,10,12,14,15,16,17,18,19,20,21,23,25,26,28,31,33,34,36,39,40,43,44,48,50,51,52,54,55,57,59,63,65,67,70,72,73,74,75,76,81,82,85,87,88,90,93,95,97,98,103,104,109,110],[0,2,4,6,8,11,13,14,15,16,17,18,19,20,21,22,24,27,29,31,33,34,36,38,41,42,45,48,50,51,53,56,58,59,63,65,66,68,69,71,73,74,75,76,83,84,86,88,90,93,95,96,99,102,103,104,109,110],[0,2,4,6,9,10,12,14,15,16,17,18,19,20,21,23,25,26,28,30,32,35,37,38,41,42,45,46,47,49,53,56,58,59,63,65,67,70,72,73,74,75,76,81,82,85,87,89,91,92,94,96,99,101,105,106,107,108],[1,2,4,7,8,9,10,11,12,13,15,17,19,21,24,25,28,29,31,33,35,37,40,41,44,45,47,48,50,53,54,55,56,60,61,63,65,69,70,71,72,74,76,77,79,82,83,84,85,89,91,92,94,98,99,100,101,106,108,109],[1,2,4,7,8,9,10,11,12,13,14,16,18,20,22,23,26,27,31,33,35,37,40,41,44,45,46,49,51,52,57,58,60,61,63,65,69,70,71,72,73,75,78,80,81,86,87,89,91,92,94,98,99,100,101,105,107,110],[1,2,4,7,8,9,10,11,12,13,15,17,19,21,24,25,28,29,30,32,34,36,38,39,42,43,46,49,51,52,57,58,60,61,63,65,69,70,71,72,74,76,77,79,82,83,84,85,88,90,93,95,96,97,102,104,107,110],[1,2,4,7,8,9,10,11,12,13,14,16,18,20,22,23,26,27,30,32,34,36,38,39,42,43,47,48,50,53,54,55,56,60,61,63,65,69,70,71,72,73,75,78,80,81,86,87,88,90,93,95,96,97,102,103,108,109],[1,2,4,7,8,9,10,11,12,13,15,17,19,21,24,25,28,29,31,33,35,37,40,41,44,45,47,48,50,53,54,55,56,59,62,64,66,67,68,73,75,78,80,81,86,87,88,90,93,95,96,97,102,104,105,110],[1,2,4,7,8,9,10,11,12,13,14,16,18,20,22,23,26,27,31,33,35,37,40,41,44,45,46,49,51,52,57,58,59,62,64,66,67,68,74,76,77,79,82,83,84,85,88,90,93,95,96,97,102,103,106,109],[1,2,4,7,8,9,10,11,12,13,15,17,19,21,24,25,28,29,30,32,34,36,38,39,42,43,46,49,51,52,57,58,59,62,64,66,67,68,73,75,78,80,81,86,87,89,91,92,94,98,99,100,101,103,106,108],[1,2,4,7,8,9,10,11,12,13,14,16,18,20,22,23,26,27,30,32,34,36,38,39,42,43,47,48,50,53,54,55,56,59,62,64,66,67,68,74,76,77,79,82,83,84,85,89,91,92,94,98,99,100,101,104,105,107]],"h":8,"lines":[[2,0,0,0,0,0,0,0],[0,2,0,0,0,0,0,0],[0,0,2,0,0,0,0,0],[0,0,0,2,0,0,0,0],[0,0,0,0,2,0,0,0],[0,0,0,0,0,2,0,0],[0,0,0,0,0,0,2,0],[0,0,0,0,0,0,0,2],[0,1,1,0,1,0,0,1],[0,1,1,0,1,0,0,-1],[0,1,1,0,-1,0,0,-1],[0,1,-1,0,1,0,0,1],[0,1,-1,0,1,0,0,-1],[0,1,-1,0,-1,0,0,1],[1,0,1,0,1,0,1,0],[1,0,1,0,1,0,-1,0],[1,0,1,0,-1,0,1,0],[1,0,1,0,-1,0,-1,0],[1,0,-1,0,1,0,1,0],[1,0,-1,0,1,0,-1,0],[1,0,-1,0,-1,0,1,0],[1,0,-1,0,-1,0,-1,0],[1,1,0,0,0,0,1,1],[1,1,0,0,0,0,1,-1],[1,1,0,0,0,0,-1,1],[1,1,0,0,0,0,-1,-1],[1,-1,0,0,0,0,1,1],[1,-1,0,0,0,0,1,-1],[1,-1,0,0,0,0,-1,1],[1,-1,0,0,0,0,-1,-1],[1,1,0,0,1,1,0,0],[1,1,0,0,1,-1,0,0],[1,1,0,0,-1,1,0,0],[1,1,0,0,-1,-1,0,0],[1,-1,0,0,1,1,0,0],[1,-1,0,0,1,-1,0,0],[1,-1,0,0,-1,1,0,0],[1,-1,0,0,-1,-1,0,0],[1,0,1,0,0,1,0,1],[1,0,1,0,0,1,0,-1],[1,0,1,0,0,-1,0,1],[1,0,1,0,0,-1,0,-1],[1,0,-1,0,0,1,0,1],[1,0,-1,0,0,1,0,-1],[1,0,-1,0,0,-1,0,1],[1,0,-1,0,0,-1,0,-1],[0,1,1,0,0,1,1,0],[0,1,1,0,0,1,-1,0],[0,1,1,0,0,-1,1,0],[0,1,-1,0,0,1,1,0],[0,1,-1,0,0,-1,1,0],[0,1,-1,0,0,-1,-1,0],[0,0,0,0,1,1,1,-1],[0,0,0,0,1,1,-1,1],[0,0,0,0,1,1,-1,-1],[0,0,0,0,1,-1,1,1],[0,0,0,0,1,-1,1,-1],[0,0,0,0,1,-1,-1,1],[0,0,0,0,1,-1,-1,-1],[1,1,1,1,0,0,0,0],[1,1,1,-1,0,0,0,0],[1,1,-1,-1,0,0,0,0],[1,-1,1,1,0,0,0,0],[1,-1,1,-1,0,0,0,0],[1,-1,-1,1,0,0,0,0],[1,-1,-1,-1,0,0,0,0],[1,0,0,1,1,0,0,-1],[1,0,0,1,-1,0,0,1],[1,0,0,1,-1,0,0,-1],[1,0,0,-1,1,0,0,1],[1,0,0,-1,1,0,0,-1],[1,0,0,-1,-1,0,0,1],[1,0,0,-1,-1,0,0,-1],[0,1,0,1,1,0,1,0],[0,1,0,1,1,0,-1,0],[0,1,0,1,-1,0,1,0],[0,1,0,1,-1,0,-1,0],[0,1,0,-1,1,0,1,0],[0,1,0,-1,1,0,-1,0],[0,1,0,-1,-1,0,1,0],[0,1,0,-1,-1,0,-1,0],[0,0,1,1,0,0,1,1],[0,0,1,1,0,0,-1,1],[0,0,1,1,0,0,-1,-1],[0,0,1,-1,0,0,1,1],[0,0,1,-1,0,0,1,-1],[0,0,1,-1,0,0,-1,1],[0,0,1,-1,0,0,-1,-1],[0,0,1,1,1,1,0,0],[0,0,1,1,1,-1,0,0],[0,0,1,1,-1,1,0,0],[0,0,1,1,-1,-1,0,0],[0,0,1,-1,1,1,0,0],[0,0,1,-1,1,-1,0,0],[0,0,1,-1,-1,1,0,0],[0,0,1,-1,-1,-1,0,0],[0,1,0,1,0,1,0,1],[0,1,0,1,0,1,0,-1],[0,1,0,1,0,-1,0,1],[0,1,0,1,0,-1,0,-1],[0,1,0,-1,0,1,0,1],[0,1,0,-1,0,1,0,-1],[0,1,0,-1,0,-1,0,1],[1,0,0,1,0,1,1,0],[1,0,0,1,0,1,-1,0],[1,0,0,1,0,-1,1,0],[1,0,0,1,0,-1,-1,0],[1,0,0,-1,0,1,1,0],[1,0,0,-1,0,1,-1,0],[1,0,0,-1,0,-1,1,0],[1,0,0,-1,0,-1,-1,0]],"ports_geom":[0,1,2,3,4,5,6,7,8,9,11,12,13,14,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,52,54,55,57,58,59,60,61,62,63,64,65,67,68,69,70,71,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,112,113,114,115,116,117,118,119],"punctured":[10,15,51,53,56,66,72,89,111],"ret":[472,473,474,475,476,477,478,479,480],"scatter":[[4,5,6,7,8],[1,2,4],[0,1,2,3,4,5,6,7,8],[0,3,4],[0,2,4],[0,1,4,5,6,7,8],[1,3,4],[2,3,4,5,6,7,8],[1,2,4,5,6],[3,5,6,7,8],[0,1,2,3,4,7,8],[0,1,3,5,6,7,8],[0,2,4,5,6],[2,3,4,7,8],[0,3,4,6,7],[0,5,7],[1,2,3,5,7],[1,2,4,6,7],[2,6,8],[2,3,4,5,8],[0,1,4,5,8],[0,1,3,6,8],[0,1,2,5,8],[0,3,4,5,7],[0,1,2,3,4,6,8],[0,6,7],[0,1,4,6,8],[0,2,3,6,7],[0,1,3,5,8],[0,2,4,5,7],[0,1,4,5,7],[1,5,8],[2,6,7],[0,2,4,6,8],[0,1,2,6,7],[1,2,4,6,8],[4,5,7],[0,5,8],[2,5,7],[1,3,4,5,8],[0,2,4,5,8],[0,1,3,5,7],[0,3,4,5,8],[0,1,2,5,7],[3,5,7],[1,2,4,5,8],[0,2,3,5,6,7,8],[0,2,4,7,8],[2,3,4,5,6],[4,5,6],[0,5,6,7,8],[0,3,4,7,8],[1,2,3,7,8],[3,5,6],[1,2,4,5,6,7,8],[0,7,8],[0,1,2,3,4],[0,3,4,5,6,7,8],[0,1,2,5,6],[0,2,3,4,5,7,8],[1,2,6,7,8],[0,1,3,4,6],[0,3,6,7,8],[1,4,5,7,8],[2,4,6],[0,1,2,3,5],[1,2,3,4,6,7,8],[0,1,2,4,5],[0,3,5,7,8],[0,1,3,4,5],[0,2,5,7,8],[2,3,6],[1,4,6,7,8],[0,3,8],[0,4,5,6,8],[1,2,3,4,5,6,8],[1,2,8],[1,4,5,6,8],[1,3,8],[0,2,8],[0,2,3,4,5,6,8],[1,2,3,4,8],[1,2,5,6,8],[3,4,5,6,7],[0,2,5,6,8],[0,1,3,4,5,6,7],[0,2,3,4,8],[0,1,7],[1,3,7],[0,1,3,4,8],[0,2,3,4,5,6,7],[2,3,5,6,8],[0,4,5,6,7],[5,6,8],[1,2,7],[0,1,2,4,8],[2,4,5,6,8],[1,3,5,6,7],[0,2,5,6,7],[0,1,3,4,5,6,8],[0,1,2,3,8],[0,4,7],[1,2,3,4,7],[0,1,3,4,6,7,8],[0,1,5,7,8],[1,3,6],[1,4,5],[5,7,8],[3,4,6,7,8],[0,4,5],[0,3,6]],"start":[2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"stats":{"extra_carriers":10,"junk_wires":0,"rcv_flips":10},"v":111} diff --git a/research/r439-abc-zrewrite-seed16/CERTIFICATE.json b/research/r439-abc-zrewrite-seed16/CERTIFICATE.json new file mode 100644 index 0000000000..107e69adb3 --- /dev/null +++ b/research/r439-abc-zrewrite-seed16/CERTIFICATE.json @@ -0,0 +1,400 @@ +{ + "base_commit": "1b59b624d21924f8e3537cdc1ac52d3be6eda2fe", + "base_word_sha256": "7bbaed96041297cd38e89ff48eb055750cfab36609b9fdbeafcec1b2758c1254", + "candidate_word_sha256": "85df062ca4cdffc17113fe12e32588db91dc950c1ec9a089b59920a3be17e353", + "concurrent_pr1188": { + "canonical_word_sha256": "b381d9bc18820b89f92485826ff9f8449d0f72f7599772d52c14e07d6b89b7f2", + "pr1188_head": "6e142e72e94515566e87c964c0fca39eea93156f", + "price": { + "ADDs": 10492, + "B": 3758418, + "F": 13667, + "admitted": true, + "local_bits": 91, + "local_upper": "2307861360443122886999501568", + "nine_bits": 175, + "nine_upper": "24941709210337926871896158204497246778939630375927808" + }, + "scope": "Independent complete literal endpoints and precision invoice; no GL5 optimality or native replay claimed here" + }, + "moves": 55, + "negative_controls": [ + "wrong retained-edge order", + "wrong duplicate occurrence", + "intervening noncommuting gate", + "semantically exact stale literal cleanup", + "omitted copy", + "omitted erase", + "omitted paid D gate", + "boolean frame ID", + "strict cap equality local_upper", + "strict cap equality nine_upper", + "duplicate JSON key" + ], + "owning": { + "labels": { + "frames": 636, + "gram_det": 1, + "labels": 111, + "lattice_rank": 8, + "punctured": 9, + "root_lines": 120 + }, + "words": { + "baseline": { + "conclusions": { + "C_is_U_inverse": true, + "J_identity": true, + "K_equals_D": false, + "U_block_form": true + }, + "full": { + "columns": 661, + "gates": { + "A": 1706, + "B": 578, + "C": 2071, + "D": 1195 + }, + "scatter_terms": 527 + }, + "hypotheses": { + "H1_no_target_feeds_z": true, + "H2_D_frame0_targets_from_helpers": false, + "H3_A_z_only_scatter_targets_B_split": true, + "H4_C_literal_reverse_at_full": true, + "H5_V_identity": true + }, + "totals": [ + { + "frame": 510, + "hyperplane_of_punctured_line": [ + 0, + 1, + 1, + 0, + -1, + 0, + 0, + 1 + ], + "rank": 7, + "register": 472 + }, + { + "frame": 511, + "hyperplane_of_punctured_line": [ + 0, + 1, + -1, + 0, + -1, + 0, + 0, + -1 + ], + "rank": 7, + "register": 473 + }, + { + "frame": 512, + "hyperplane_of_punctured_line": [ + 0, + 1, + 1, + 0, + 0, + -1, + -1, + 0 + ], + "rank": 7, + "register": 474 + }, + { + "frame": 513, + "hyperplane_of_punctured_line": [ + 0, + 1, + -1, + 0, + 0, + 1, + -1, + 0 + ], + "rank": 7, + "register": 475 + }, + { + "frame": 514, + "hyperplane_of_punctured_line": [ + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ], + "rank": 7, + "register": 476 + }, + { + "frame": 515, + "hyperplane_of_punctured_line": [ + 1, + 1, + -1, + 1, + 0, + 0, + 0, + 0 + ], + "rank": 7, + "register": 477 + }, + { + "frame": 516, + "hyperplane_of_punctured_line": [ + 1, + 0, + 0, + 1, + 1, + 0, + 0, + 1 + ], + "rank": 7, + "register": 478 + }, + { + "frame": 517, + "hyperplane_of_punctured_line": [ + 0, + 0, + 1, + 1, + 0, + 0, + 1, + -1 + ], + "rank": 7, + "register": 479 + }, + { + "frame": 518, + "hyperplane_of_punctured_line": [ + 0, + 1, + 0, + -1, + 0, + -1, + 0, + -1 + ], + "rank": 7, + "register": 480 + } + ] + }, + "candidate": { + "conclusions": { + "C_is_U_inverse": true, + "J_identity": true, + "K_equals_D": false, + "U_block_form": true + }, + "full": { + "columns": 661, + "gates": { + "A": 1652, + "B": 577, + "C": 2016, + "D": 1195 + }, + "scatter_terms": 527 + }, + "hypotheses": { + "H1_no_target_feeds_z": true, + "H2_D_frame0_targets_from_helpers": false, + "H3_A_z_only_scatter_targets_B_split": true, + "H4_C_literal_reverse_at_full": true, + "H5_V_identity": true + }, + "totals": [ + { + "frame": 510, + "hyperplane_of_punctured_line": [ + 0, + 1, + 1, + 0, + -1, + 0, + 0, + 1 + ], + "rank": 7, + "register": 472 + }, + { + "frame": 511, + "hyperplane_of_punctured_line": [ + 0, + 1, + -1, + 0, + -1, + 0, + 0, + -1 + ], + "rank": 7, + "register": 473 + }, + { + "frame": 512, + "hyperplane_of_punctured_line": [ + 0, + 1, + 1, + 0, + 0, + -1, + -1, + 0 + ], + "rank": 7, + "register": 474 + }, + { + "frame": 513, + "hyperplane_of_punctured_line": [ + 0, + 1, + -1, + 0, + 0, + 1, + -1, + 0 + ], + "rank": 7, + "register": 475 + }, + { + "frame": 514, + "hyperplane_of_punctured_line": [ + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ], + "rank": 7, + "register": 476 + }, + { + "frame": 515, + "hyperplane_of_punctured_line": [ + 1, + 1, + -1, + 1, + 0, + 0, + 0, + 0 + ], + "rank": 7, + "register": 477 + }, + { + "frame": 516, + "hyperplane_of_punctured_line": [ + 1, + 0, + 0, + 1, + 1, + 0, + 0, + 1 + ], + "rank": 7, + "register": 478 + }, + { + "frame": 517, + "hyperplane_of_punctured_line": [ + 0, + 0, + 1, + 1, + 0, + 0, + 1, + -1 + ], + "rank": 7, + "register": 479 + }, + { + "frame": 518, + "hyperplane_of_punctured_line": [ + 0, + 1, + 0, + -1, + 0, + -1, + 0, + -1 + ], + "rank": 7, + "register": 480 + } + ] + } + } + }, + "phase_map_sha256": { + "A": "f188fceaee853e7eecfdc3425b23059be273ca0a595d5e765cdfe9f461b60fd2", + "B": "450d31615be38590c22bec705a53038f1e86ccf4a866cb30f8613ce1a5927977", + "C": "44878b845a20b6d747400edfe405b5fb510e23ba5cb2cbecc60c81ecbfcdc28a", + "D": "64f2245c24c80a448eceb15a7b1c68e259aad5ad3454d68aa63291a4cfd87777", + "scatter": "6e2b1c09a8044c762150697a6842b8e65d48f99edc3197fdc3b9418ed02f0db6" + }, + "prices": { + "baseline": { + "ADDs": 10652, + "B": 3910388, + "F": 15223, + "admitted": true, + "local_bits": 92, + "local_upper": "3452394524099512658714524672", + "nine_bits": 176, + "nine_upper": "50109557170207398770972615575887331408085730734374912" + }, + "candidate": { + "ADDs": 10542, + "B": 3663878, + "F": 13721, + "admitted": true, + "local_bits": 91, + "local_upper": "2219316669212827291362119936", + "nine_bits": 174, + "nine_upper": "22973795977533615901914742933524089773622692690264064" + } + }, + "status": "PASS_COMPLETE_WORD_REWRITE_AND_PRECISION" +} diff --git a/research/r439-abc-zrewrite-seed16/CLAIM.json b/research/r439-abc-zrewrite-seed16/CLAIM.json new file mode 100644 index 0000000000..726cec0927 --- /dev/null +++ b/research/r439-abc-zrewrite-seed16/CLAIM.json @@ -0,0 +1,41 @@ +{ + "attribution": "Prepared for ToikY with substantial OpenAI Codex assistance; credit bitplane/Gareth Davidson PR1122, navinor PR1127, Sagar Thakrar PR1062, Dugongue PR541/548, DreamingOfClouds PR589 and eumemic PR555. Apache-2.0.", + "base_commit": "1b59b624d21924f8e3537cdc1ac52d3be6eda2fe", + "candidates": [ + "Compose commuting 3-to-2 z rewrites with the frozen PR1122 complete A/B/star-D circuit: chosen, different input word from PR1127 and explicitly left as future work there", + "Earlier-cut width-seven frame on six PR1128 candidates: deferred, requires simultaneous transfers and a larger suffix/interface construction", + "Four arbitrary-support five-cube decoder terms: deferred, adjacent new PR1177 has the three-term classification and a changed cost mechanism is needed" + ], + "claimed_utc": "2026-10-13 19:48:00 UTC", + "coordination": "No pinned sprint coordination issue: only open issues650/913. Local claim. Read discussion inventory, start-here1163 and handoff1166; only seed97 PR279 provenance claim, no overlap. Targeted PR1122/1127 and refreshed open-PR queue checked. No new reservation issue or public coordination message.", + "deliverable": "One fully invoiced finite bit circuit if a verified saving exists, otherwise only a concrete scoped interaction finding; at most one PR, no merge.", + "expected_finish_utc": "2026-10-13 20:15:01 UTC", + "method": "Exact register-level commutation and all-column endpoint/frame-path/profile filtering; deterministic seed-diversified greedy order to fixed point or 60 rounds, no optimizer restarts. Independent complete F2 map and invoice/positive-majorant check.", + "optimistic_complete_cost": "At most two ADDs disappear per accepted triangle, one forward edge and its paid cleanup mirror; all source reads, helper stock, scalar gates, COPY/ERASE, frame changes, restoration and children remain charged. Profile unchanged implies no bit-moment or kappa gain; complex supplier still binds. Candidate must retain 104/192-bit inherited precision ceiling after recomputation.", + "predecessors": { + "1122": "a2551e70fce0cc34348f50f1a94e7cc4c80bbcbf", + "1127": "2e9dc9d3356a6b7258ed869ddcee46352907f746" + }, + "randomness": "one fresh secrets.randbelow(100) OS draw", + "result": { + "ADDs": 10542, + "B": 3663878, + "F": 13721, + "artifact_link": "https://github.com/ToikY/integer-mult-bounds/tree/codex/bit-seed16/research/r439-abc-zrewrite-seed16", + "branch": "codex/bit-seed16", + "local_bits": 91, + "moves": 55, + "nine_bits": 174, + "rank_mass": 5129, + "saved_ADDs": 110, + "scope": "all paid ranks and frame paths unchanged; no new kappa; pending semantic-D interface obligations inherited", + "status": "DONE finite circuit construction; focused PR preparation" + }, + "scope": "Test same-section commuting Steinberg 3-to-2 rewrites on the complete PR1122 A/B/star-D composed word, preserving every register frame path and complete paid profile, rebuilding literal cleanup, and repricing both full orientations and positive precision envelopes. No supplier adoption or kappa claim.", + "scope_key": "R439-ABC-star/commuting-z-triangles/complete-word-and-precision", + "seed": 16, + "started_utc": "2026-10-13 19:45:01 UTC", + "stopping_rule": "One fixed complete PR1122 word in same-section commuting triangle class; stop on zero accepted rewrites or round60. No global optimality claim and no rerun of PR1127 fixed PR589 experiment.", + "track": "bit supplier", + "verification_reserve_utc": "2026-10-13 20:07:31 UTC" +} diff --git a/research/r439-abc-zrewrite-seed16/MOVES.json b/research/r439-abc-zrewrite-seed16/MOVES.json new file mode 100644 index 0000000000..ba8b2c7d06 --- /dev/null +++ b/research/r439-abc-zrewrite-seed16/MOVES.json @@ -0,0 +1,2711 @@ +{ + "accepted_filter": [ + "same section", + "strict window commutation", + "exact endpoint on 661 basis columns", + "D/A/scatter/B/C phase maps identical", + "661 register frame paths identical", + "frame-label profile identical", + "literal reverse C" + ], + "base_ADDs": 10652, + "base_canonical_sha256": "7bbaed96041297cd38e89ff48eb055750cfab36609b9fdbeafcec1b2758c1254", + "base_source_pin": "a2551e70fce0cc34348f50f1a94e7cc4c80bbcbf", + "base_word": "research/r439-abc-zrewrite-seed16/vendor/pr1122/candidate.json.gz", + "candidate_ADDs": 10542, + "candidate_canonical_sha256": "85df062ca4cdffc17113fe12e32588db91dc950c1ec9a089b59920a3be17e353", + "cross_frame_moves": 0, + "frame_label_profile": { + "1": 602, + "2": 245, + "7": 12, + "8": 101, + "9": 162, + "10": 227, + "13": 1, + "14": 8, + "15": 55, + "16": 156, + "17": 155, + "18": 119, + "25": 4, + "26": 24, + "27": 18, + "28": 25, + "29": 53, + "30": 79, + "31": 122, + "32": 68, + "33": 13, + "49": 3, + "50": 15, + "51": 42, + "52": 93, + "53": 118, + "54": 58, + "55": 52, + "56": 35, + "57": 32, + "58": 23, + "59": 9, + "60": 2, + "81": 15, + "82": 39, + "83": 50, + "84": 42, + "85": 30, + "86": 4, + "101": 8, + "110": 1 + }, + "moves": [ + { + "a": 38, + "b": 468, + "crossed_gate_frames": [ + 509 + ], + "crosses_distinct_frame": false, + "g_ax": [ + 509, + 38, + [ + 33 + ] + ], + "g_ba": [ + 509, + 468, + [ + 38 + ] + ], + "g_bx": [ + 509, + 468, + [ + 33 + ] + ], + "index_ax": 227, + "index_ba": 234, + "index_bx": 226, + "mapA": false, + "moved_edge_frame": 509, + "occ_ax": 0, + "occ_ba": 0, + "occ_bx": 0, + "pos": [ + 1933, + 1941, + 1934 + ], + "sec": "B", + "window": [ + 1933, + 1941 + ], + "x": 33 + }, + { + "a": 413, + "b": 444, + "crossed_gate_frames": [ + 509 + ], + "crosses_distinct_frame": false, + "g_ax": [ + 509, + 413, + [ + 17 + ] + ], + "g_ba": [ + 509, + 444, + [ + 413 + ] + ], + "g_bx": [ + 509, + 444, + [ + 17 + ] + ], + "index_ax": 1612, + "index_ba": 1609, + "index_bx": 1605, + "mapA": true, + "moved_edge_frame": 509, + "occ_ax": 0, + "occ_ba": 0, + "occ_bx": 0, + "pos": [ + 1605, + 1609, + 1612 + ], + "sec": "A", + "window": [ + 1605, + 1612 + ], + "x": 17 + }, + { + "a": 340, + "b": 349, + "crossed_gate_frames": [ + 506 + ], + "crosses_distinct_frame": false, + "g_ax": [ + 506, + 340, + [ + 233 + ] + ], + "g_ba": [ + 506, + 349, + [ + 340 + ] + ], + "g_bx": [ + 506, + 349, + [ + 233 + ] + ], + "index_ax": 1570, + "index_ba": 1567, + "index_bx": 1564, + "mapA": true, + "moved_edge_frame": 506, + "occ_ax": 0, + "occ_ba": 0, + "occ_bx": 0, + "pos": [ + 1564, + 1567, + 1570 + ], + "sec": "A", + "window": [ + 1564, + 1570 + ], + "x": 233 + }, + { + "a": 597, + "b": 657, + "crossed_gate_frames": [ + 325 + ], + "crosses_distinct_frame": false, + "g_ax": [ + 325, + 597, + [ + 639 + ] + ], + "g_ba": [ + 325, + 657, + [ + 597 + ] + ], + "g_bx": [ + 325, + 657, + [ + 639 + ] + ], + "index_ax": 1374, + "index_ba": 1376, + "index_bx": 1375, + "mapA": false, + "moved_edge_frame": 325, + "occ_ax": 0, + "occ_ba": 0, + "occ_bx": 0, + "pos": [ + 1375, + 1376, + 1374 + ], + "sec": "A", + "window": [ + 1374, + 1376 + ], + "x": 639 + }, + { + "a": 598, + "b": 583, + "crossed_gate_frames": [ + 324 + ], + "crosses_distinct_frame": false, + "g_ax": [ + 324, + 598, + [ + 640 + ] + ], + "g_ba": [ + 324, + 583, + [ + 598 + ] + ], + "g_bx": [ + 324, + 583, + [ + 640 + ] + ], + "index_ax": 1365, + "index_ba": 1364, + "index_bx": 1366, + "mapA": true, + "moved_edge_frame": 324, + "occ_ax": 0, + "occ_ba": 0, + "occ_bx": 0, + "pos": [ + 1366, + 1364, + 1365 + ], + "sec": "A", + "window": [ + 1364, + 1366 + ], + "x": 640 + }, + { + "a": 590, + "b": 573, + "crossed_gate_frames": [ + 321 + ], + "crosses_distinct_frame": false, + "g_ax": [ + 321, + 590, + [ + 537 + ] + ], + "g_ba": [ + 321, + 573, + [ + 590 + ] + ], + "g_bx": [ + 321, + 573, + [ + 537 + ] + ], + "index_ax": 1323, + "index_ba": 1321, + "index_bx": 1324, + "mapA": true, + "moved_edge_frame": 321, + "occ_ax": 0, + "occ_ba": 0, + "occ_bx": 0, + "pos": [ + 1324, + 1321, + 1323 + ], + "sec": "A", + "window": [ + 1321, + 1324 + ], + "x": 537 + }, + { + "a": 574, + "b": 538, + "crossed_gate_frames": [ + 320 + ], + "crosses_distinct_frame": false, + "g_ax": [ + 320, + 574, + [ + 593 + ] + ], + "g_ba": [ + 320, + 538, + [ + 574 + ] + ], + "g_bx": [ + 320, + 538, + [ + 593 + ] + ], + "index_ax": 1319, + "index_ba": 1315, + "index_bx": 1316, + "mapA": true, + "moved_edge_frame": 320, + "occ_ax": 0, + "occ_ba": 1, + "occ_bx": 0, + "pos": [ + 1316, + 1315, + 1319 + ], + "sec": "A", + "window": [ + 1315, + 1319 + ], + "x": 593 + }, + { + "a": 624, + "b": 574, + "crossed_gate_frames": [ + 320 + ], + "crosses_distinct_frame": false, + "g_ax": [ + 320, + 624, + [ + 538 + ] + ], + "g_ba": [ + 320, + 574, + [ + 624 + ] + ], + "g_bx": [ + 320, + 574, + [ + 538 + ] + ], + "index_ax": 1312, + "index_ba": 1311, + "index_bx": 1314, + "mapA": true, + "moved_edge_frame": 320, + "occ_ax": 0, + "occ_ba": 0, + "occ_bx": 0, + "pos": [ + 1314, + 1311, + 1312 + ], + "sec": "A", + "window": [ + 1311, + 1314 + ], + "x": 538 + }, + { + "a": 623, + "b": 529, + "crossed_gate_frames": [ + 319 + ], + "crosses_distinct_frame": false, + "g_ax": [ + 319, + 623, + [ + 635 + ] + ], + "g_ba": [ + 319, + 529, + [ + 623 + ] + ], + "g_bx": [ + 319, + 529, + [ + 635 + ] + ], + "index_ax": 1299, + "index_ba": 1295, + "index_bx": 1296, + "mapA": true, + "moved_edge_frame": 319, + "occ_ax": 0, + "occ_ba": 0, + "occ_bx": 0, + "pos": [ + 1296, + 1295, + 1299 + ], + "sec": "A", + "window": [ + 1295, + 1299 + ], + "x": 635 + }, + { + "a": 540, + "b": 596, + "crossed_gate_frames": [ + 318 + ], + "crosses_distinct_frame": false, + "g_ax": [ + 318, + 540, + [ + 656 + ] + ], + "g_ba": [ + 318, + 596, + [ + 540 + ] + ], + "g_bx": [ + 318, + 596, + [ + 656 + ] + ], + "index_ax": 1286, + "index_ba": 1288, + "index_bx": 1287, + "mapA": false, + "moved_edge_frame": 318, + "occ_ax": 0, + "occ_ba": 0, + "occ_bx": 0, + "pos": [ + 1287, + 1288, + 1286 + ], + "sec": "A", + "window": [ + 1286, + 1288 + ], + "x": 656 + }, + { + "a": 571, + "b": 656, + "crossed_gate_frames": [ + 318 + ], + "crosses_distinct_frame": false, + "g_ax": [ + 318, + 571, + [ + 596 + ] + ], + "g_ba": [ + 318, + 656, + [ + 571 + ] + ], + "g_bx": [ + 318, + 656, + [ + 596 + ] + ], + "index_ax": 1283, + "index_ba": 1282, + "index_bx": 1284, + "mapA": true, + "moved_edge_frame": 318, + "occ_ax": 0, + "occ_ba": 0, + "occ_bx": 0, + "pos": [ + 1284, + 1282, + 1283 + ], + "sec": "A", + "window": [ + 1282, + 1284 + ], + "x": 596 + }, + { + "a": 541, + "b": 531, + "crossed_gate_frames": [ + 317 + ], + "crosses_distinct_frame": false, + "g_ax": [ + 317, + 541, + [ + 582 + ] + ], + "g_ba": [ + 317, + 531, + [ + 541 + ] + ], + "g_bx": [ + 317, + 531, + [ + 582 + ] + ], + "index_ax": 1279, + "index_ba": 1274, + "index_bx": 1275, + "mapA": true, + "moved_edge_frame": 317, + "occ_ax": 0, + "occ_ba": 1, + "occ_bx": 0, + "pos": [ + 1275, + 1274, + 1279 + ], + "sec": "A", + "window": [ + 1274, + 1279 + ], + "x": 582 + }, + { + "a": 577, + "b": 638, + "crossed_gate_frames": [ + 316 + ], + "crosses_distinct_frame": false, + "g_ax": [ + 316, + 577, + [ + 532 + ] + ], + "g_ba": [ + 316, + 638, + [ + 577 + ] + ], + "g_bx": [ + 316, + 638, + [ + 532 + ] + ], + "index_ax": 1263, + "index_ba": 1261, + "index_bx": 1260, + "mapA": true, + "moved_edge_frame": 316, + "occ_ax": 0, + "occ_ba": 0, + "occ_bx": 0, + "pos": [ + 1260, + 1261, + 1263 + ], + "sec": "A", + "window": [ + 1260, + 1263 + ], + "x": 532 + }, + { + "a": 614, + "b": 532, + "crossed_gate_frames": [ + 316 + ], + "crosses_distinct_frame": false, + "g_ax": [ + 316, + 614, + [ + 638 + ] + ], + "g_ba": [ + 316, + 532, + [ + 614 + ] + ], + "g_bx": [ + 316, + 532, + [ + 638 + ] + ], + "index_ax": 1257, + "index_ba": 1252, + "index_bx": 1253, + "mapA": true, + "moved_edge_frame": 316, + "occ_ax": 0, + "occ_ba": 0, + "occ_bx": 0, + "pos": [ + 1253, + 1252, + 1257 + ], + "sec": "A", + "window": [ + 1252, + 1257 + ], + "x": 638 + }, + { + "a": 576, + "b": 535, + "crossed_gate_frames": [ + 315 + ], + "crosses_distinct_frame": false, + "g_ax": [ + 315, + 576, + [ + 533 + ] + ], + "g_ba": [ + 315, + 535, + [ + 576 + ] + ], + "g_bx": [ + 315, + 535, + [ + 533 + ] + ], + "index_ax": 1247, + "index_ba": 1248, + "index_bx": 1246, + "mapA": false, + "moved_edge_frame": 315, + "occ_ax": 0, + "occ_ba": 0, + "occ_bx": 0, + "pos": [ + 1246, + 1248, + 1247 + ], + "sec": "A", + "window": [ + 1246, + 1248 + ], + "x": 533 + }, + { + "a": 535, + "b": 599, + "crossed_gate_frames": [ + 315 + ], + "crosses_distinct_frame": false, + "g_ax": [ + 315, + 535, + [ + 659 + ] + ], + "g_ba": [ + 315, + 599, + [ + 535 + ] + ], + "g_bx": [ + 315, + 599, + [ + 659 + ] + ], + "index_ax": 1242, + "index_ba": 1244, + "index_bx": 1243, + "mapA": false, + "moved_edge_frame": 315, + "occ_ax": 0, + "occ_ba": 0, + "occ_bx": 0, + "pos": [ + 1243, + 1244, + 1242 + ], + "sec": "A", + "window": [ + 1242, + 1244 + ], + "x": 659 + }, + { + "a": 602, + "b": 650, + "crossed_gate_frames": [ + 314 + ], + "crosses_distinct_frame": false, + "g_ax": [ + 314, + 602, + [ + 632 + ] + ], + "g_ba": [ + 314, + 650, + [ + 602 + ] + ], + "g_bx": [ + 314, + 650, + [ + 632 + ] + ], + "index_ax": 1231, + "index_ba": 1233, + "index_bx": 1232, + "mapA": false, + "moved_edge_frame": 314, + "occ_ax": 0, + "occ_ba": 0, + "occ_bx": 0, + "pos": [ + 1232, + 1233, + 1231 + ], + "sec": "A", + "window": [ + 1231, + 1233 + ], + "x": 632 + }, + { + "a": 595, + "b": 560, + "crossed_gate_frames": [ + 312 + ], + "crosses_distinct_frame": false, + "g_ax": [ + 312, + 595, + [ + 660 + ] + ], + "g_ba": [ + 312, + 560, + [ + 595 + ] + ], + "g_bx": [ + 312, + 560, + [ + 660 + ] + ], + "index_ax": 1210, + "index_ba": 1207, + "index_bx": 1211, + "mapA": true, + "moved_edge_frame": 312, + "occ_ax": 0, + "occ_ba": 0, + "occ_bx": 0, + "pos": [ + 1211, + 1207, + 1210 + ], + "sec": "A", + "window": [ + 1207, + 1211 + ], + "x": 660 + }, + { + "a": 628, + "b": 595, + "crossed_gate_frames": [ + 312 + ], + "crosses_distinct_frame": false, + "g_ax": [ + 312, + 628, + [ + 560 + ] + ], + "g_ba": [ + 312, + 595, + [ + 628 + ] + ], + "g_bx": [ + 312, + 595, + [ + 560 + ] + ], + "index_ax": 1205, + "index_ba": 1202, + "index_bx": 1206, + "mapA": true, + "moved_edge_frame": 312, + "occ_ax": 0, + "occ_ba": 0, + "occ_bx": 0, + "pos": [ + 1206, + 1202, + 1205 + ], + "sec": "A", + "window": [ + 1202, + 1206 + ], + "x": 560 + }, + { + "a": 610, + "b": 527, + "crossed_gate_frames": [ + 309 + ], + "crosses_distinct_frame": false, + "g_ax": [ + 309, + 610, + [ + 627 + ] + ], + "g_ba": [ + 309, + 527, + [ + 610 + ] + ], + "g_bx": [ + 309, + 527, + [ + 627 + ] + ], + "index_ax": 1164, + "index_ba": 1160, + "index_bx": 1161, + "mapA": true, + "moved_edge_frame": 309, + "occ_ax": 0, + "occ_ba": 0, + "occ_bx": 0, + "pos": [ + 1161, + 1160, + 1164 + ], + "sec": "A", + "window": [ + 1160, + 1164 + ], + "x": 627 + }, + { + "a": 558, + "b": 651, + "crossed_gate_frames": [ + 307 + ], + "crosses_distinct_frame": false, + "g_ax": [ + 307, + 558, + [ + 517 + ] + ], + "g_ba": [ + 307, + 651, + [ + 558 + ] + ], + "g_bx": [ + 307, + 651, + [ + 517 + ] + ], + "index_ax": 1141, + "index_ba": 1139, + "index_bx": 1138, + "mapA": true, + "moved_edge_frame": 307, + "occ_ax": 0, + "occ_ba": 0, + "occ_bx": 0, + "pos": [ + 1138, + 1139, + 1141 + ], + "sec": "A", + "window": [ + 1138, + 1141 + ], + "x": 517 + }, + { + "a": 613, + "b": 555, + "crossed_gate_frames": [ + 305 + ], + "crosses_distinct_frame": false, + "g_ax": [ + 305, + 613, + [ + 519 + ] + ], + "g_ba": [ + 305, + 555, + [ + 613 + ] + ], + "g_bx": [ + 305, + 555, + [ + 519 + ] + ], + "index_ax": 1107, + "index_ba": 1106, + "index_bx": 1109, + "mapA": true, + "moved_edge_frame": 305, + "occ_ax": 0, + "occ_ba": 0, + "occ_bx": 0, + "pos": [ + 1109, + 1106, + 1107 + ], + "sec": "A", + "window": [ + 1106, + 1109 + ], + "x": 519 + }, + { + "a": 556, + "b": 520, + "crossed_gate_frames": [ + 304 + ], + "crosses_distinct_frame": false, + "g_ax": [ + 304, + 556, + [ + 591 + ] + ], + "g_ba": [ + 304, + 520, + [ + 556 + ] + ], + "g_bx": [ + 304, + 520, + [ + 591 + ] + ], + "index_ax": 1103, + "index_ba": 1099, + "index_bx": 1100, + "mapA": true, + "moved_edge_frame": 304, + "occ_ax": 0, + "occ_ba": 1, + "occ_bx": 0, + "pos": [ + 1100, + 1099, + 1103 + ], + "sec": "A", + "window": [ + 1099, + 1103 + ], + "x": 591 + }, + { + "a": 618, + "b": 556, + "crossed_gate_frames": [ + 304 + ], + "crosses_distinct_frame": false, + "g_ax": [ + 304, + 618, + [ + 520 + ] + ], + "g_ba": [ + 304, + 556, + [ + 618 + ] + ], + "g_bx": [ + 304, + 556, + [ + 520 + ] + ], + "index_ax": 1096, + "index_ba": 1095, + "index_bx": 1098, + "mapA": true, + "moved_edge_frame": 304, + "occ_ax": 0, + "occ_ba": 0, + "occ_bx": 0, + "pos": [ + 1098, + 1095, + 1096 + ], + "sec": "A", + "window": [ + 1095, + 1098 + ], + "x": 520 + }, + { + "a": 539, + "b": 521, + "crossed_gate_frames": [ + 303 + ], + "crosses_distinct_frame": false, + "g_ax": [ + 303, + 539, + [ + 607 + ] + ], + "g_ba": [ + 303, + 521, + [ + 539 + ] + ], + "g_bx": [ + 303, + 521, + [ + 607 + ] + ], + "index_ax": 1090, + "index_ba": 1086, + "index_bx": 1087, + "mapA": true, + "moved_edge_frame": 303, + "occ_ax": 0, + "occ_ba": 1, + "occ_bx": 0, + "pos": [ + 1087, + 1086, + 1090 + ], + "sec": "A", + "window": [ + 1086, + 1090 + ], + "x": 607 + }, + { + "a": 575, + "b": 539, + "crossed_gate_frames": [ + 303 + ], + "crosses_distinct_frame": false, + "g_ax": [ + 303, + 575, + [ + 521 + ] + ], + "g_ba": [ + 303, + 539, + [ + 575 + ] + ], + "g_bx": [ + 303, + 539, + [ + 521 + ] + ], + "index_ax": 1084, + "index_ba": 1082, + "index_bx": 1085, + "mapA": true, + "moved_edge_frame": 303, + "occ_ax": 0, + "occ_ba": 0, + "occ_bx": 0, + "pos": [ + 1085, + 1082, + 1084 + ], + "sec": "A", + "window": [ + 1082, + 1085 + ], + "x": 521 + }, + { + "a": 440, + "b": 314, + "crossed_gate_frames": [ + 299 + ], + "crosses_distinct_frame": false, + "g_ax": [ + 299, + 440, + [ + 402 + ] + ], + "g_ba": [ + 299, + 314, + [ + 440 + ] + ], + "g_bx": [ + 299, + 314, + [ + 402 + ] + ], + "index_ax": 1036, + "index_ba": 1033, + "index_bx": 1037, + "mapA": true, + "moved_edge_frame": 299, + "occ_ax": 0, + "occ_ba": 1, + "occ_bx": 0, + "pos": [ + 1037, + 1033, + 1036 + ], + "sec": "A", + "window": [ + 1033, + 1037 + ], + "x": 402 + }, + { + "a": 512, + "b": 440, + "crossed_gate_frames": [ + 299 + ], + "crosses_distinct_frame": false, + "g_ax": [ + 299, + 512, + [ + 314 + ] + ], + "g_ba": [ + 299, + 440, + [ + 512 + ] + ], + "g_bx": [ + 299, + 440, + [ + 314 + ] + ], + "index_ax": 1030, + "index_ba": 1029, + "index_bx": 1031, + "mapA": true, + "moved_edge_frame": 299, + "occ_ax": 0, + "occ_ba": 0, + "occ_bx": 0, + "pos": [ + 1031, + 1029, + 1030 + ], + "sec": "A", + "window": [ + 1029, + 1031 + ], + "x": 314 + }, + { + "a": 432, + "b": 321, + "crossed_gate_frames": [ + 298 + ], + "crosses_distinct_frame": false, + "g_ax": [ + 298, + 432, + [ + 301 + ] + ], + "g_ba": [ + 298, + 321, + [ + 432 + ] + ], + "g_bx": [ + 298, + 321, + [ + 301 + ] + ], + "index_ax": 1019, + "index_ba": 1018, + "index_bx": 1020, + "mapA": true, + "moved_edge_frame": 298, + "occ_ax": 0, + "occ_ba": 0, + "occ_bx": 0, + "pos": [ + 1020, + 1018, + 1019 + ], + "sec": "A", + "window": [ + 1018, + 1020 + ], + "x": 301 + }, + { + "a": 291, + "b": 317, + "crossed_gate_frames": [ + 297 + ], + "crosses_distinct_frame": false, + "g_ax": [ + 297, + 291, + [ + 267 + ] + ], + "g_ba": [ + 297, + 317, + [ + 291 + ] + ], + "g_bx": [ + 297, + 317, + [ + 267 + ] + ], + "index_ax": 1004, + "index_ba": 1006, + "index_bx": 1005, + "mapA": false, + "moved_edge_frame": 297, + "occ_ax": 0, + "occ_ba": 0, + "occ_bx": 0, + "pos": [ + 1005, + 1006, + 1004 + ], + "sec": "A", + "window": [ + 1004, + 1006 + ], + "x": 267 + }, + { + "a": 306, + "b": 282, + "crossed_gate_frames": [ + 294 + ], + "crosses_distinct_frame": false, + "g_ax": [ + 294, + 306, + [ + 409 + ] + ], + "g_ba": [ + 294, + 282, + [ + 306 + ] + ], + "g_bx": [ + 294, + 282, + [ + 409 + ] + ], + "index_ax": 974, + "index_ba": 971, + "index_bx": 975, + "mapA": true, + "moved_edge_frame": 294, + "occ_ax": 0, + "occ_ba": 0, + "occ_bx": 0, + "pos": [ + 975, + 971, + 974 + ], + "sec": "A", + "window": [ + 971, + 975 + ], + "x": 409 + }, + { + "a": 367, + "b": 306, + "crossed_gate_frames": [ + 294 + ], + "crosses_distinct_frame": false, + "g_ax": [ + 294, + 367, + [ + 282 + ] + ], + "g_ba": [ + 294, + 306, + [ + 367 + ] + ], + "g_bx": [ + 294, + 306, + [ + 282 + ] + ], + "index_ax": 969, + "index_ba": 966, + "index_bx": 970, + "mapA": true, + "moved_edge_frame": 294, + "occ_ax": 0, + "occ_ba": 0, + "occ_bx": 0, + "pos": [ + 970, + 966, + 969 + ], + "sec": "A", + "window": [ + 966, + 970 + ], + "x": 282 + }, + { + "a": 264, + "b": 497, + "crossed_gate_frames": [ + 293 + ], + "crosses_distinct_frame": false, + "g_ax": [ + 293, + 264, + [ + 289 + ] + ], + "g_ba": [ + 293, + 497, + [ + 264 + ] + ], + "g_bx": [ + 293, + 497, + [ + 289 + ] + ], + "index_ax": 953, + "index_ba": 950, + "index_bx": 952, + "mapA": true, + "moved_edge_frame": 293, + "occ_ax": 0, + "occ_ba": 0, + "occ_bx": 0, + "pos": [ + 952, + 950, + 953 + ], + "sec": "A", + "window": [ + 950, + 953 + ], + "x": 289 + }, + { + "a": 251, + "b": 378, + "crossed_gate_frames": [ + 291 + ], + "crosses_distinct_frame": false, + "g_ax": [ + 291, + 251, + [ + 356 + ] + ], + "g_ba": [ + 291, + 378, + [ + 251 + ] + ], + "g_bx": [ + 291, + 378, + [ + 356 + ] + ], + "index_ax": 928, + "index_ba": 927, + "index_bx": 930, + "mapA": true, + "moved_edge_frame": 291, + "occ_ax": 0, + "occ_ba": 0, + "occ_bx": 0, + "pos": [ + 930, + 927, + 928 + ], + "sec": "A", + "window": [ + 927, + 930 + ], + "x": 356 + }, + { + "a": 453, + "b": 370, + "crossed_gate_frames": [ + 290 + ], + "crosses_distinct_frame": false, + "g_ax": [ + 290, + 453, + [ + 347 + ] + ], + "g_ba": [ + 290, + 370, + [ + 453 + ] + ], + "g_bx": [ + 290, + 370, + [ + 347 + ] + ], + "index_ax": 920, + "index_ba": 917, + "index_bx": 918, + "mapA": true, + "moved_edge_frame": 290, + "occ_ax": 0, + "occ_ba": 1, + "occ_bx": 0, + "pos": [ + 918, + 917, + 920 + ], + "sec": "A", + "window": [ + 917, + 920 + ], + "x": 347 + }, + { + "a": 454, + "b": 335, + "crossed_gate_frames": [ + 289 + ], + "crosses_distinct_frame": false, + "g_ax": [ + 289, + 454, + [ + 364 + ] + ], + "g_ba": [ + 289, + 335, + [ + 454 + ] + ], + "g_bx": [ + 289, + 335, + [ + 364 + ] + ], + "index_ax": 907, + "index_ba": 904, + "index_bx": 908, + "mapA": true, + "moved_edge_frame": 289, + "occ_ax": 0, + "occ_ba": 1, + "occ_bx": 0, + "pos": [ + 908, + 904, + 907 + ], + "sec": "A", + "window": [ + 904, + 908 + ], + "x": 364 + }, + { + "a": 487, + "b": 454, + "crossed_gate_frames": [ + 289 + ], + "crosses_distinct_frame": false, + "g_ax": [ + 289, + 487, + [ + 335 + ] + ], + "g_ba": [ + 289, + 454, + [ + 487 + ] + ], + "g_bx": [ + 289, + 454, + [ + 335 + ] + ], + "index_ax": 901, + "index_ba": 900, + "index_bx": 902, + "mapA": true, + "moved_edge_frame": 289, + "occ_ax": 0, + "occ_ba": 0, + "occ_bx": 0, + "pos": [ + 902, + 900, + 901 + ], + "sec": "A", + "window": [ + 900, + 902 + ], + "x": 335 + }, + { + "a": 441, + "b": 318, + "crossed_gate_frames": [ + 286 + ], + "crosses_distinct_frame": false, + "g_ax": [ + 286, + 441, + [ + 300 + ] + ], + "g_ba": [ + 286, + 318, + [ + 441 + ] + ], + "g_bx": [ + 286, + 318, + [ + 300 + ] + ], + "index_ax": 861, + "index_ba": 857, + "index_bx": 859, + "mapA": true, + "moved_edge_frame": 286, + "occ_ax": 0, + "occ_ba": 0, + "occ_bx": 0, + "pos": [ + 859, + 857, + 861 + ], + "sec": "A", + "window": [ + 857, + 861 + ], + "x": 300 + }, + { + "a": 431, + "b": 426, + "crossed_gate_frames": [ + 285 + ], + "crosses_distinct_frame": false, + "g_ax": [ + 285, + 431, + [ + 507 + ] + ], + "g_ba": [ + 285, + 426, + [ + 431 + ] + ], + "g_bx": [ + 285, + 426, + [ + 507 + ] + ], + "index_ax": 853, + "index_ba": 851, + "index_bx": 854, + "mapA": true, + "moved_edge_frame": 285, + "occ_ax": 0, + "occ_ba": 1, + "occ_bx": 0, + "pos": [ + 854, + 851, + 853 + ], + "sec": "A", + "window": [ + 851, + 854 + ], + "x": 507 + }, + { + "a": 489, + "b": 408, + "crossed_gate_frames": [ + 285 + ], + "crosses_distinct_frame": false, + "g_ax": [ + 285, + 489, + [ + 383 + ] + ], + "g_ba": [ + 285, + 408, + [ + 489 + ] + ], + "g_bx": [ + 285, + 408, + [ + 383 + ] + ], + "index_ax": 845, + "index_ba": 843, + "index_bx": 846, + "mapA": true, + "moved_edge_frame": 285, + "occ_ax": 0, + "occ_ba": 0, + "occ_bx": 0, + "pos": [ + 846, + 843, + 845 + ], + "sec": "A", + "window": [ + 843, + 846 + ], + "x": 383 + }, + { + "a": 380, + "b": 345, + "crossed_gate_frames": [ + 280 + ], + "crosses_distinct_frame": false, + "g_ax": [ + 280, + 380, + [ + 261 + ] + ], + "g_ba": [ + 280, + 345, + [ + 380 + ] + ], + "g_bx": [ + 280, + 345, + [ + 261 + ] + ], + "index_ax": 788, + "index_ba": 783, + "index_bx": 787, + "mapA": true, + "moved_edge_frame": 280, + "occ_ax": 0, + "occ_ba": 1, + "occ_bx": 0, + "pos": [ + 787, + 783, + 788 + ], + "sec": "A", + "window": [ + 783, + 788 + ], + "x": 261 + }, + { + "a": 417, + "b": 482, + "crossed_gate_frames": [ + 275 + ], + "crosses_distinct_frame": false, + "g_ax": [ + 275, + 417, + [ + 425 + ] + ], + "g_ba": [ + 275, + 482, + [ + 417 + ] + ], + "g_bx": [ + 275, + 482, + [ + 425 + ] + ], + "index_ax": 716, + "index_ba": 713, + "index_bx": 715, + "mapA": true, + "moved_edge_frame": 275, + "occ_ax": 0, + "occ_ba": 0, + "occ_bx": 0, + "pos": [ + 715, + 713, + 716 + ], + "sec": "A", + "window": [ + 713, + 716 + ], + "x": 425 + }, + { + "a": 500, + "b": 304, + "crossed_gate_frames": [ + 274 + ], + "crosses_distinct_frame": false, + "g_ax": [ + 274, + 500, + [ + 288 + ] + ], + "g_ba": [ + 274, + 304, + [ + 500 + ] + ], + "g_bx": [ + 274, + 304, + [ + 288 + ] + ], + "index_ax": 702, + "index_ba": 701, + "index_bx": 704, + "mapA": true, + "moved_edge_frame": 274, + "occ_ax": 0, + "occ_ba": 0, + "occ_bx": 0, + "pos": [ + 704, + 701, + 702 + ], + "sec": "A", + "window": [ + 701, + 704 + ], + "x": 288 + }, + { + "a": 502, + "b": 439, + "crossed_gate_frames": [ + 273 + ], + "crosses_distinct_frame": false, + "g_ax": [ + 273, + 502, + [ + 419 + ] + ], + "g_ba": [ + 273, + 439, + [ + 502 + ] + ], + "g_bx": [ + 273, + 439, + [ + 419 + ] + ], + "index_ax": 689, + "index_ba": 688, + "index_bx": 690, + "mapA": true, + "moved_edge_frame": 273, + "occ_ax": 0, + "occ_ba": 0, + "occ_bx": 0, + "pos": [ + 690, + 688, + 689 + ], + "sec": "A", + "window": [ + 688, + 690 + ], + "x": 419 + }, + { + "a": 302, + "b": 501, + "crossed_gate_frames": [ + 272 + ], + "crosses_distinct_frame": false, + "g_ax": [ + 272, + 302, + [ + 242 + ] + ], + "g_ba": [ + 272, + 501, + [ + 302 + ] + ], + "g_bx": [ + 272, + 501, + [ + 242 + ] + ], + "index_ax": 677, + "index_ba": 675, + "index_bx": 678, + "mapA": true, + "moved_edge_frame": 272, + "occ_ax": 0, + "occ_ba": 0, + "occ_bx": 0, + "pos": [ + 678, + 675, + 677 + ], + "sec": "A", + "window": [ + 675, + 678 + ], + "x": 242 + }, + { + "a": 484, + "b": 246, + "crossed_gate_frames": [ + 271 + ], + "crosses_distinct_frame": false, + "g_ax": [ + 271, + 484, + [ + 405 + ] + ], + "g_ba": [ + 271, + 246, + [ + 484 + ] + ], + "g_bx": [ + 271, + 246, + [ + 405 + ] + ], + "index_ax": 671, + "index_ba": 668, + "index_bx": 672, + "mapA": true, + "moved_edge_frame": 271, + "occ_ax": 0, + "occ_ba": 1, + "occ_bx": 0, + "pos": [ + 672, + 668, + 671 + ], + "sec": "A", + "window": [ + 668, + 672 + ], + "x": 405 + }, + { + "a": 391, + "b": 484, + "crossed_gate_frames": [ + 271 + ], + "crosses_distinct_frame": false, + "g_ax": [ + 271, + 391, + [ + 246 + ] + ], + "g_ba": [ + 271, + 484, + [ + 391 + ] + ], + "g_bx": [ + 271, + 484, + [ + 246 + ] + ], + "index_ax": 665, + "index_ba": 664, + "index_bx": 667, + "mapA": true, + "moved_edge_frame": 271, + "occ_ax": 0, + "occ_ba": 0, + "occ_bx": 0, + "pos": [ + 667, + 664, + 665 + ], + "sec": "A", + "window": [ + 664, + 667 + ], + "x": 246 + }, + { + "a": 397, + "b": 399, + "crossed_gate_frames": [ + 269 + ], + "crosses_distinct_frame": false, + "g_ax": [ + 269, + 397, + [ + 253 + ] + ], + "g_ba": [ + 269, + 399, + [ + 397 + ] + ], + "g_bx": [ + 269, + 399, + [ + 253 + ] + ], + "index_ax": 641, + "index_ba": 639, + "index_bx": 640, + "mapA": true, + "moved_edge_frame": 269, + "occ_ax": 0, + "occ_ba": 0, + "occ_bx": 0, + "pos": [ + 640, + 639, + 641 + ], + "sec": "A", + "window": [ + 639, + 641 + ], + "x": 253 + }, + { + "a": 235, + "b": 223, + "crossed_gate_frames": [ + 268 + ], + "crosses_distinct_frame": false, + "g_ax": [ + 268, + 235, + [ + 274 + ] + ], + "g_ba": [ + 268, + 223, + [ + 235 + ] + ], + "g_bx": [ + 268, + 223, + [ + 274 + ] + ], + "index_ax": 632, + "index_ba": 628, + "index_bx": 629, + "mapA": true, + "moved_edge_frame": 268, + "occ_ax": 0, + "occ_ba": 1, + "occ_bx": 0, + "pos": [ + 629, + 628, + 632 + ], + "sec": "A", + "window": [ + 628, + 632 + ], + "x": 274 + }, + { + "a": 260, + "b": 235, + "crossed_gate_frames": [ + 268 + ], + "crosses_distinct_frame": false, + "g_ax": [ + 268, + 260, + [ + 223 + ] + ], + "g_ba": [ + 268, + 235, + [ + 260 + ] + ], + "g_bx": [ + 268, + 235, + [ + 223 + ] + ], + "index_ax": 626, + "index_ba": 624, + "index_bx": 627, + "mapA": true, + "moved_edge_frame": 268, + "occ_ax": 0, + "occ_ba": 0, + "occ_bx": 0, + "pos": [ + 627, + 624, + 626 + ], + "sec": "A", + "window": [ + 624, + 627 + ], + "x": 223 + }, + { + "a": 582, + "b": 541, + "crossed_gate_frames": [ + 317 + ], + "crosses_distinct_frame": false, + "g_ax": [ + 317, + 582, + [ + 531 + ] + ], + "g_ba": [ + 317, + 541, + [ + 582 + ] + ], + "g_bx": [ + 317, + 541, + [ + 531 + ] + ], + "index_ax": 1234, + "index_ba": 1236, + "index_bx": 1235, + "mapA": false, + "moved_edge_frame": 317, + "occ_ax": 0, + "occ_ba": 0, + "occ_bx": 0, + "pos": [ + 1235, + 1236, + 1234 + ], + "sec": "A", + "window": [ + 1234, + 1236 + ], + "x": 531 + }, + { + "a": 347, + "b": 453, + "crossed_gate_frames": [ + 290 + ], + "crosses_distinct_frame": false, + "g_ax": [ + 290, + 347, + [ + 370 + ] + ], + "g_ba": [ + 290, + 453, + [ + 347 + ] + ], + "g_bx": [ + 290, + 453, + [ + 370 + ] + ], + "index_ax": 900, + "index_ba": 902, + "index_bx": 901, + "mapA": false, + "moved_edge_frame": 290, + "occ_ax": 0, + "occ_ba": 0, + "occ_bx": 0, + "pos": [ + 901, + 902, + 900 + ], + "sec": "A", + "window": [ + 900, + 902 + ], + "x": 370 + }, + { + "a": 507, + "b": 431, + "crossed_gate_frames": [ + 285 + ], + "crosses_distinct_frame": false, + "g_ax": [ + 285, + 507, + [ + 426 + ] + ], + "g_ba": [ + 285, + 431, + [ + 507 + ] + ], + "g_bx": [ + 285, + 431, + [ + 426 + ] + ], + "index_ax": 837, + "index_ba": 840, + "index_bx": 839, + "mapA": false, + "moved_edge_frame": 285, + "occ_ax": 0, + "occ_ba": 0, + "occ_bx": 0, + "pos": [ + 839, + 840, + 837 + ], + "sec": "A", + "window": [ + 837, + 840 + ], + "x": 426 + }, + { + "a": 345, + "b": 261, + "crossed_gate_frames": [ + 280 + ], + "crosses_distinct_frame": false, + "g_ax": [ + 280, + 345, + [ + 380 + ] + ], + "g_ba": [ + 280, + 261, + [ + 345 + ] + ], + "g_bx": [ + 280, + 261, + [ + 380 + ] + ], + "index_ax": 769, + "index_ba": 765, + "index_bx": 764, + "mapA": true, + "moved_edge_frame": 280, + "occ_ax": 0, + "occ_ba": 0, + "occ_bx": 0, + "pos": [ + 764, + 765, + 769 + ], + "sec": "A", + "window": [ + 764, + 769 + ], + "x": 380 + }, + { + "a": 397, + "b": 399, + "crossed_gate_frames": [ + 269 + ], + "crosses_distinct_frame": false, + "g_ax": [ + 269, + 397, + [ + 403 + ] + ], + "g_ba": [ + 269, + 399, + [ + 397 + ] + ], + "g_bx": [ + 269, + 399, + [ + 403 + ] + ], + "index_ax": 642, + "index_ba": 638, + "index_bx": 641, + "mapA": true, + "moved_edge_frame": 269, + "occ_ax": 0, + "occ_ba": 0, + "occ_bx": 0, + "pos": [ + 641, + 638, + 642 + ], + "sec": "A", + "window": [ + 638, + 642 + ], + "x": 403 + } + ], + "n_moves": 55, + "round_cap": 60, + "saved_ADDs": 110, + "scope": "finite circuit rewrite only; no new kappa or improved frame-label profile", + "seed": 16, + "stopping_rule": "fixed point under stated filters", + "tie_order": "descending window endpoints, SHA256 of 16:b:a:x", + "track": "bit supplier (00-19)" +} diff --git a/research/r439-abc-zrewrite-seed16/NATIVE.json b/research/r439-abc-zrewrite-seed16/NATIVE.json new file mode 100644 index 0000000000..30bc10ae3b --- /dev/null +++ b/research/r439-abc-zrewrite-seed16/NATIVE.json @@ -0,0 +1,358 @@ +{ + "complete_frame_paths_identical": true, + "controls_rejected": 96, + "copy_erase_records_identical": true, + "no_new_kappa": true, + "scope": "Finite physical/native 5/9/11-stage coverage; local104/nine192 admission only.", + "status": "PASS_R439_ABC_ZREWRITE_NATIVE", + "words": { + "baseline": { + "canonical_word_sha256": "7bbaed96041297cd38e89ff48eb055750cfab36609b9fdbeafcec1b2758c1254", + "common_frame_ADDs": 10652, + "copies": 9, + "erasures": 9, + "literal_price": { + "ADDs": 10652, + "B": 3910388, + "F": 15223, + "admitted": true, + "local_bits": 92, + "local_upper": "3452394524099512658714524672", + "nine_bits": 176, + "nine_upper": "50109557170207398770972615575887331408085730734374912" + }, + "nonadd_record_sha256": "aa12b10043ca982fea804da0dfb0d1e146d1921b3d28dda2d75e7d620dd50ba0", + "paid_histogram": [ + [ + 1, + 1323 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 19 + ] + ], + "rank_mass": 5129, + "records": 13581, + "staged": { + "11": { + "bridge_additions": 2664, + "controls_rejected": 24, + "formal_columns_checked": 1549, + "fresh_center_copies": 99, + "local_raw_H": [ + [ + 1, + 1323 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 19 + ] + ], + "payload_prefix_bits": 92, + "payload_prefix_upper": "3452394524099512658714524672", + "reverse_fresh_center_copies": 45, + "scalar_ADDs": 117172, + "total_ADDs": 119836 + }, + "5": { + "bridge_additions": 666, + "controls_rejected": 6, + "formal_columns_checked": 883, + "fresh_center_copies": 45, + "local_raw_H": [ + [ + 1, + 1323 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 19 + ] + ], + "payload_prefix_bits": 92, + "payload_prefix_upper": "3452394524099512658714524672", + "reverse_fresh_center_copies": 18, + "scalar_ADDs": 53260, + "total_ADDs": 53926 + }, + "9": { + "bridge_additions": 1998, + "controls_rejected": 18, + "formal_columns_checked": 1327, + "fresh_center_copies": 81, + "local_raw_H": [ + [ + 1, + 1323 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 19 + ] + ], + "payload_prefix_bits": 92, + "payload_prefix_upper": "3452394524099512658714524672", + "reverse_fresh_center_copies": 36, + "scalar_ADDs": 95868, + "total_ADDs": 97866 + } + } + }, + "candidate": { + "canonical_word_sha256": "85df062ca4cdffc17113fe12e32588db91dc950c1ec9a089b59920a3be17e353", + "common_frame_ADDs": 10542, + "copies": 9, + "erasures": 9, + "literal_price": { + "ADDs": 10542, + "B": 3663878, + "F": 13721, + "admitted": true, + "local_bits": 91, + "local_upper": "2219316669212827291362119936", + "nine_bits": 174, + "nine_upper": "22973795977533615901914742933524089773622692690264064" + }, + "nonadd_record_sha256": "aa12b10043ca982fea804da0dfb0d1e146d1921b3d28dda2d75e7d620dd50ba0", + "paid_histogram": [ + [ + 1, + 1323 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 19 + ] + ], + "rank_mass": 5129, + "records": 13471, + "staged": { + "11": { + "bridge_additions": 2664, + "controls_rejected": 24, + "formal_columns_checked": 1549, + "fresh_center_copies": 99, + "local_raw_H": [ + [ + 1, + 1323 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 19 + ] + ], + "payload_prefix_bits": 91, + "payload_prefix_upper": "2219316669212827291362119936", + "reverse_fresh_center_copies": 45, + "scalar_ADDs": 115962, + "total_ADDs": 118626 + }, + "5": { + "bridge_additions": 666, + "controls_rejected": 6, + "formal_columns_checked": 883, + "fresh_center_copies": 45, + "local_raw_H": [ + [ + 1, + 1323 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 19 + ] + ], + "payload_prefix_bits": 91, + "payload_prefix_upper": "2219316669212827291362119936", + "reverse_fresh_center_copies": 18, + "scalar_ADDs": 52710, + "total_ADDs": 53376 + }, + "9": { + "bridge_additions": 1998, + "controls_rejected": 18, + "formal_columns_checked": 1327, + "fresh_center_copies": 81, + "local_raw_H": [ + [ + 1, + 1323 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 19 + ] + ], + "payload_prefix_bits": 91, + "payload_prefix_upper": "2219316669212827291362119936", + "reverse_fresh_center_copies": 36, + "scalar_ADDs": 94878, + "total_ADDs": 96876 + } + } + } + } +} diff --git a/research/r439-abc-zrewrite-seed16/NOTICE.md b/research/r439-abc-zrewrite-seed16/NOTICE.md new file mode 100644 index 0000000000..c3a752db7f --- /dev/null +++ b/research/r439-abc-zrewrite-seed16/NOTICE.md @@ -0,0 +1,43 @@ +# Attribution and license + +Prepared for **ToikY**, with substantial **OpenAI Codex assistance** in +mathematics, discovery, implementation, independent replay and writing. +Two bounded Codex workers assisted with discovery and native contract checks; +these are AI checks, not independent human peer review. Apache-2.0, under the +repository LICENSE. Original predecessor files and notices remain unchanged. + +- **Gareth Davidson (@bitplane), PR1122** supplies the complete A/B/star-D + composition and the positive-envelope/native verification pattern. Its A + lineage includes PR980/952/904 and **Ross Richardson PR936**. +- **Aaron Wang (@navinor), PR1127**, prepared with opencode assistance, supplies + the same-section commuting-triangle discovery pattern. This contribution + uses a different, fully composed input word and independently verifies the + resulting saving. **Dugongue PR541/548** and the PR589 tuner are the + transvection-move predecessors. +- **Sagar Thakrar (@thakrarsagar), PR1062**, with Anthropic Claude assistance, + supplies the B/star-D parent composed by PR1122. Its B programs are + **Aaron Wang PR1015** and **Ross Richardson PR923**. The restored-helper-star + mechanism follows **Sricharan Vagvala PR967**, **Gareth Davidson PR926** and + the frozen PR915 target basis. See the complete inherited notices for + earlier helper-star contributors. +- The selected bit-word ancestry is **DreamingOfClouds PR589**, on + **eumemic PR555/543**. The owning checker retains eumemic's Apache-2.0 and + Anthropic Claude disclosure. +- Native exporter, cohort adapter and checker lineage: **Dylan Crow**, **DaysSky**, + **Zhihao Chen**, **Sagar Thakrar**, **Sricharan Vagvala**, and original + PR249/266/315/496/527 contributors credited in the pinned source notices. +- Canonical decoded-payload comparison follows **Maxime Fleury**, building on + **Antoine Olivier's** reproducibility work. Immutable source archives keep + their original byte hashes. + +The full original PR1122 and PR1127 notices are included under vendor/; their +historical selected-context statements describe their own bases. The accepted +context of this contribution is PR1094 at the exact new base recorded here. +No selected-frontier ownership, priority or unrestricted shortest-word claim +is made. + +Concurrent **Gareth Davidson PR1188** is credited for a smaller sibling circuit +on the same base. Its unchanged word and notice are included for independent +complete-invoice comparison, not as a dependency of these 55 rewrites. +**Sagar Thakrar PR1181** clarifies PR1015's retained provenance; **woklerx +PR1194** contributes a pending semantic-D scalar proof, not adopted here. diff --git a/research/r439-abc-zrewrite-seed16/PROOF.md b/research/r439-abc-zrewrite-seed16/PROOF.md new file mode 100644 index 0000000000..a09b94e3b8 --- /dev/null +++ b/research/r439-abc-zrewrite-seed16/PROOF.md @@ -0,0 +1,59 @@ +# Scoped rewrite identity and complete precision invoice + +For distinct z registers a,b,x over F2, elementary transvections satisfy + +```text +[b += x][b += a][a += x] = [a += x][b += a] +[a += x][b += a][b += x] = [b += a][a += x]. +``` + +For the first relation, both sides send a to a+x and b to b+a+x, leaving x +and all other registers unchanged. The second is its reverse. The deleted +b<-x edge commutes with each retained edge, so its position among the three +edges is immaterial. When every intervening elementary transvection commutes +with all three edges, those intervening operations can be moved aside and the +same identity applied. Target-read barriers are checked using all donors; A/B +section boundaries cannot be crossed. Same-destination donor groups comprise +commuting transvections, but all other donors remain in the window check. + +The witness uses 55 specific occurrences with distinct roles in one A/B section. +The verifier locates each occurrence in the current word, checks its donors, +commutation window, orientation and common frame, deletes b<-x, swaps the +relative order of b<-a and a<-x, and retains every other donor. It reconstructs +the exact committed candidate without importing discovery code. It also checks +all five complete phase maps, the dirty full-word endpoint in both directions, +and the literal reverse z-cleanup C. One forward ADD and its cleanup mirror +disappear per move:2*55=110. D, scatter and all geometry fields are identical. + +Native legality checks every source-access frame, all physical MOVE paths, +arbitrary dirty columns and private COPY lifetimes. Comparing the complete +non-ADD records separately ensures the saving does not omit a frame change, +COPY, restoration or recursive child. The actual E8 paid rank histogram and +rank mass 5129 match the complete baseline; no rank claim is inferred from +frame-label cardinality. All copies retain rank7. + +For the signed/arithmetic lift, begin every regular input with positive bound1 +and a private copied register with bound0. An ADD replaces the destination +bound by destination+source; COPY duplicates its source bound, and ERASE clears +the private bound only after symbolic equality with the unchanged original. +Taking every intermediate maximum in each full orientation gives cancellation-free row-l1 envelopes F=13721 and B=3663878. The independently reproduced native +prefixes agree exactly. Consequently the pinned K=2 local and K=4 nine-stage +bridge formulas give + +```text +2^6 F^3 B^2 = 2219316669212827291362119936 < 2^104 +2^18 F^5 B^4 = 22973795977533615901914742933524089773622692690264064 < 2^192. +``` + +The strict caps are checked as integers, including equality-at-cap negative +controls. Further controls reject a wrong retained-edge order, wrong duplicate +occurrence, intervening noncommuting gate, omitted COPY/ERASE, omitted paid D +gate, boolean frame ID and duplicate JSON key. A positive control confirms that +using the predecessor's semantically exact C still reaches the endpoint, while +a negative control rejects it as nonliteral cleanup. The native staged checks +add 96 separate omitted-bridge controls. + +These statements establish this finite circuit and its stated envelopes under +the inherited arithmetic/recursive interfaces. They do not prove the unresolved +semantic-D supplier lemma, global circuit optimality, eleven-stage192-bit +admission, or a new conditional multiplication exponent. diff --git a/research/r439-abc-zrewrite-seed16/README.md b/research/r439-abc-zrewrite-seed16/README.md new file mode 100644 index 0000000000..4f31bf4cef --- /dev/null +++ b/research/r439-abc-zrewrite-seed16/README.md @@ -0,0 +1,150 @@ +# Seed16: commuting rewrites on the complete ABC/star-D bit circuit + +**Construction / finite circuit improvement.** Applying 55 same-frame +Steinberg 3-to-2 rewrites to the complete pending PR1122 circuit reduces +**10,652 to 10,542 ADDs**. This measures the resulting full word, including +its rebuilt literal cleanup; it does not add predecessor savings on different +words. No new kappa, paid-moment gain or selected-frontier change is claimed. + +| Complete invoice | Frozen PR1122 | This candidate | +|---|---:|---:| +| D / A / scatter / B / C ADDs | 5548 / 1706 / 527 / 800 / 2071 | 5548 / 1652 / 527 / 799 / 2016 | +| All scalar ADDs | 10652 | 10542 | +| Positive forward prefix F | 15223 | 13721 | +| Positive reverse prefix B | 3910388 | 3663878 | +| Local precision bits | 92 | 91 | +| Nine-stage precision bits | 176 | 174 | +| Actual E8 paid rank mass | 5129 | 5129 | +| Dirty local input columns | 661 | 661 | +| Retained COPY / ERASE lifetimes | 9 / 9 | 9 / 9 | + +Every ordered register MOVE path, COPY/ERASE record, source-access operation, +helper stock, restoration obligation and paid recursive rank histogram is +unchanged. The 439 helpers and nine rank-seven copied centers remain charged. +The complete staged ADD invoices, including bridges, are 53376 / 96876 / +118626 for five / nine / eleven stages. These are finite scalar savings; +unchanged paid ranks leave the bit moment unchanged, and the selected +assembly's complex constraint continues to bind. + +## Reproduce + +From the repository root, with Python3.9+, a C++17 compiler and Boost headers: + +```sh +BOOST_INCLUDE=/path/to/boost python3 -I -B research/r439-abc-zrewrite-seed16/native.py +``` + +Expected final output: + +```text +PASS_R439_ABC_ZREWRITE_NATIVE: 2 words; 5/9/11 stages; 96 bridge controls; rank_mass5129; no_new_kappa +``` + +This one command independently reconstructs the witness and checks +`CERTIFICATE.json`, then freshly exports both words, compiles the pinned native +checkers and reproduces `NATIVE.json`. It checks all 883/1327/1549 formal columns +at 5/9/11 stages, every paid rank, all 45/81/99 fresh center copies, all bridges, +and 96 omitted-bridge controls. The exact local and nine-stage formulas are +bound to the pinned source AST. Eleven-stage endpoint coverage does not assert +192-bit admission for that stage count. + +A quick standard-library replay, also tested with optimization enabled, is: + +```sh +python3 -I -B research/r439-abc-zrewrite-seed16/verify.py +python3 -I -O -B research/r439-abc-zrewrite-seed16/verify.py +``` + +Both print `PASS_COMPLETE_WORD_REWRITE_AND_PRECISION moves 55 ADDs 10542`. +Discovery regeneration is `python3 -I -B research/r439-abc-zrewrite-seed16/search.py`; +it rewrites only the three discovery artifacts in this package. Compare decoded +canonical payloads, not newly compressed-container bytes. No external Python +packages are required. The tested environment was macOS, Python3.9.6, Apple +clang21, Boost1.87.0 (`BOOST_INCLUDE=/private/tmp/boost_1_87_0`). Native build +logs can be retained with `--output NEW_DIRECTORY`; the default uses a temporary +folder and leaves repository sources unchanged. + +## Search domain and new evidence + +The assignment was one fresh OS-random draw, **seed16**, bit-supplier track. +`CLAIM.json` records three considered tasks, the favorable complete-cost budget, +timing, scope and local coordination receipt. No pinned sprint coordination +issue existed; open PRs and discussions were checked. The new object is PR1122's +complete A/B/star-D word. PR1127 investigates the PR589 word and explicitly +leaves application to this composed lineage as future work. + +Search exhausts distinct-register triangle occurrences in the current A/B +z-program, restricted to one section and strictly commuting intervening +transvections/read barriers. Greedy windows run right to left; SHA256 of +`16:b:a:x` breaks ties. Stop at a filtered fixed point or 60 rounds, without +restarts. Fifty moves were accepted in round 1 and five in round 2; round 3 +exhausted 417 occurrences: 79 cross-section and 338 noncommuting, with zero clear +candidates. Two earlier candidates were skipped because their edges were already +consumed. `SEARCH-LOG.json` contains the complete per-round census. This fixed +point is neither a globally shortest circuit nor an impossibility theorem. + +All 55 accepted triangles have one common physical frame (54 in A, one in B). +`MOVES.json` names exact donor-group occurrences; `verify.py` does not import +`search.py`. The discovery adaptation fixes value-based `list.index/remove` +lookup of duplicate equal gates by selecting their occurrence and moving the +actual object. Trial failures before that repair were implementation failures, +not counterexamples to the algebraic identity. + +The predecessor discovery's frame-label cardinality is not E8 vector-space rank. +The retained `frame_label_profile` is only auxiliary search bookkeeping; its +large indices are not paid dimensions. Actual rank mass 5129 and the complete +paid histogram are obtained from the owning/native E8 checks in `NATIVE.json`. + +## Concurrent overlap + +Before submission, open PRs were refreshed through #1199. Gareth Davidson's +concurrent [PR1188](https://github.com/CrocSwap/integer-mult-bounds/pull/1188), +head `6e142e72e94515566e87c964c0fca39eea93156f`, reduces the same PR1122 word to +10492 ADDs using exact five-wire window programs. This triangle result is not +an ADD-count record. Its independently checked precision tradeoff is distinct: + +| Complete result | ADDs | F | B | Exact nine-stage envelope | +|---|---:|---:|---:|---:| +| PR1188 five-wire programs | 10492 | 13667 | 3758418 | 24941709210337926871896158204497246778939630375927808 (175 bits) | +| These commuting triangles | 10542 | 13721 | 3663878 | 22973795977533615901914742933524089773622692690264064 (174 bits) | + +`verify.py` independently replays the frozen PR1188 word's complete literal +endpoints and price, and records that exact comparison in `CERTIFICATE.json`. +Its original notice and input word are retained solely for this comparison. +The GL5 optimum/BFS certificate and its native proof are not rerun here, and +savings from the two sibling programs are not assumed additive. + +Concurrent PR1181 supplies a PR1015 retention/credit receipt and clarifies that +PR1062 is already retained in main. PR1194 supplies a pending semantic-D scalar +contract proof for the PR1062 word; this package does not review or adopt it. +The original syntactic flags and selected-supplier obligations remain explicit. + +## Sources, scope and inherited obligations + +Exact repository base: `1b59b624d21924f8e3537cdc1ac52d3be6eda2fe`. + +- Gareth Davidson (@bitplane), PR1122, head + `a2551e70fce0cc34348f50f1a94e7cc4c80bbcbf`, supplies the frozen complete word. +- Aaron Wang (@navinor), PR1127, head + `2e9dc9d3356a6b7258ed869ddcee46352907f746`, supplies the discovery pattern. +- Their unchanged files and original notices are retained in `vendor/`. + These archival scripts are reference sources; use the new package's entry + points, whose root paths and complete pins are adapted for this layout. +- `SOURCES.json` binds 17 unchanged repository dependencies and all retained + predecessor and comparison files. Candidate canonical SHA256 is + `85df062ca4cdffc17113fe12e32588db91dc950c1ec9a089b59920a3be17e353`. + +At this base the selected certificate remains PR1094, +`research/community-frontier1094-audit/ASSEMBLY.json`, SHA256 +`1122cb3a575f8c788345fc1bf4c108ac7c3250fb81a5988671f5eb04b3ab3045`, +with kappa `836330098538459/500000000000000000` and maintainer review +`docs/research/community-batch1099-review.md`. Pending supplier constructions +are not accepted frontier records. + +The star-D lineage retains **false** syntactic +`H2_D_frame0_targets_from_helpers` and `K_equals_D`, while all other owning H/K +checks pass. Complete dirty endpoints and scalar precision do not supply the +missing semantic-D supplier interface proof or prove the full conditional +integer-multiplication theorem. No native acceptance predicate is disabled. +`PROOF.md` gives the scoped algebra and exact envelopes; `NOTICE.md` credits the +predecessor chain and substantial AI assistance. diff --git a/research/r439-abc-zrewrite-seed16/SEARCH-LOG.json b/research/r439-abc-zrewrite-seed16/SEARCH-LOG.json new file mode 100644 index 0000000000..fc1bad801f --- /dev/null +++ b/research/r439-abc-zrewrite-seed16/SEARCH-LOG.json @@ -0,0 +1,126 @@ +{ + "accepted_filter": [ + "same section", + "strict window commutation", + "exact endpoint on 661 basis columns", + "D/A/scatter/B/C phase maps identical", + "661 register frame paths identical", + "frame-label profile identical", + "literal reverse C" + ], + "base_ADDs": 10652, + "base_canonical_sha256": "7bbaed96041297cd38e89ff48eb055750cfab36609b9fdbeafcec1b2758c1254", + "base_source_pin": "a2551e70fce0cc34348f50f1a94e7cc4c80bbcbf", + "base_word": "research/r439-abc-zrewrite-seed16/vendor/pr1122/candidate.json.gz", + "candidate_ADDs": 10542, + "candidate_canonical_sha256": "85df062ca4cdffc17113fe12e32588db91dc950c1ec9a089b59920a3be17e353", + "clear_instances_at_stop": 0, + "cross_frame_moves": 0, + "final_coverage": { + "clear_same_section": 0, + "cross_section": 79, + "distinct_register_triangles": 400, + "noncommuting_window": 338, + "triangle_occurrences": 417 + }, + "frame_label_profile": { + "1": 602, + "2": 245, + "7": 12, + "8": 101, + "9": 162, + "10": 227, + "13": 1, + "14": 8, + "15": 55, + "16": 156, + "17": 155, + "18": 119, + "25": 4, + "26": 24, + "27": 18, + "28": 25, + "29": 53, + "30": 79, + "31": 122, + "32": 68, + "33": 13, + "49": 3, + "50": 15, + "51": 42, + "52": 93, + "53": 118, + "54": 58, + "55": 52, + "56": 35, + "57": 32, + "58": 23, + "59": 9, + "60": 2, + "81": 15, + "82": 39, + "83": 50, + "84": 42, + "85": 30, + "86": 4, + "101": 8, + "110": 1 + }, + "initial_duplicate_edges": 39, + "initial_duplicate_extra_occurrences": 39, + "n_moves": 55, + "rejected": { + "edge-consumed": 2 + }, + "round_cap": 60, + "rounds": [ + { + "applied": 50, + "coverage": { + "clear_same_section": 52, + "cross_section": 80, + "distinct_register_triangles": 533, + "noncommuting_window": 433, + "triangle_occurrences": 565 + }, + "rejected_cumulative": { + "edge-consumed": 2 + }, + "round": 1 + }, + { + "applied": 5, + "coverage": { + "clear_same_section": 5, + "cross_section": 79, + "distinct_register_triangles": 412, + "noncommuting_window": 346, + "triangle_occurrences": 430 + }, + "rejected_cumulative": { + "edge-consumed": 2 + }, + "round": 2 + }, + { + "applied": 0, + "coverage": { + "clear_same_section": 0, + "cross_section": 79, + "distinct_register_triangles": 400, + "noncommuting_window": 338, + "triangle_occurrences": 417 + }, + "rejected_cumulative": { + "edge-consumed": 2 + }, + "round": 3 + } + ], + "saved_ADDs": 110, + "scope": "finite circuit rewrite only; no new kappa or improved frame-label profile", + "seed": 16, + "stopping_rule": "fixed point under stated filters", + "tie_order": "descending window endpoints, SHA256 of 16:b:a:x", + "track": "bit supplier (00-19)" +} diff --git a/research/r439-abc-zrewrite-seed16/SOURCES.json b/research/r439-abc-zrewrite-seed16/SOURCES.json new file mode 100644 index 0000000000..523fe8a48f --- /dev/null +++ b/research/r439-abc-zrewrite-seed16/SOURCES.json @@ -0,0 +1,53 @@ +{ + "base_commit": "1b59b624d21924f8e3537cdc1ac52d3be6eda2fe", + "package_sources": { + "CANDIDATE-WORD.json": "66b34404f39f5f612c2aaadd53ae33eb9f5993ec2065c82e23d7467cce03a226", + "MOVES.json": "c79e28adacf17025ab0f5fd6f8252af3ba3a931b619e43c44af0c237cb44fa03", + "SEARCH-LOG.json": "b12de48535854e367a3c93ca4c7147e29c4e06a40fa157aeafc4eca91590050e", + "native.py": "14d9c8c90d4c39b0a4a86ea7ce11cbec32b07d32283bcb8a6215b68f6d8c5ac2", + "search.py": "abf0c92ccb97bd7fbee9bdc978b957e4b1d85b065f483767a7ecee88e2bc4723", + "vendor/pr1122/CERTIFICATE.json": "fb508230ed2825676759f1f9b22756b0a933ae460ede3484219d8d2e624c3613", + "vendor/pr1122/EXPECTED.json": "1233f67048a30639d3ae3928353d65f43e8f3eb1535d568e823af21a848d9ea4", + "vendor/pr1122/LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "vendor/pr1122/NOTICE.md": "2a6534d43c9c00583a21429627c4393d0f641beb49c8f2370f054f4c461a22f7", + "vendor/pr1122/PROOF.md": "a2c5d68d64dfd49c91187f9c44942c7225e3da2d8497456db916d90e13a2a554", + "vendor/pr1122/README.md": "5b26bbd515abeb1544502806a5812342763815cb224d4f3119561736077d9d31", + "vendor/pr1122/SOURCES.json": "bec52574d75d5cf994a7932f81ceebf147a28a61fa23e51c89d9b1b744971156", + "vendor/pr1122/candidate.json.gz": "2b09a7a3851cdf2a7f19350d1555cf75788d001c9507a37e459cd931881ee066", + "vendor/pr1122/common.py": "81b6924a6f0c318895dc2a1066ff8581e77721cc7f413eaee0cb82c97339aca8", + "vendor/pr1122/native.py": "67771fbe6f0339ca74e9a129dfb853a8a623fe0b65ec3b837dd590a8a6d703fe", + "vendor/pr1122/verify.py": "6987a1fb198e33d5970c6774cc6c73dbc374d47a29ee7fdb7bc3c050d1d827ec", + "vendor/pr1127/CERTIFICATE.json": "4d3a5aa6fef9137f635b17380b14d01d2fd6f738f1809f61b5707e0dafde32b9", + "vendor/pr1127/NOTICE.md": "75aa4310afff8752d4b19c414b43d7acd217c6e3ea5a5818069bc348001d9923", + "vendor/pr1127/search.py": "fb929432d59fc8fd13c50689cb715fc88fc1ceda5a6a9f2b0e8ff4513aa5cb1f", + "vendor/pr1127/verify.py": "2950b9a1e7cc6f848eac52ad104e08870c8cd5f6f4f2953c5082979775ff4b20", + "vendor/pr1188/NOTICE.md": "c37d4ba8f547fe492ea1834f985c86778d9b57460e16d27682fd338279d5db0f", + "vendor/pr1188/candidate.json.gz": "4e7904d01ebdbfc60a26472b4e0d2e813c19c2fe1a4bb8ab390c12746a1da359", + "verify.py": "0a34b6537181607f3b9500df53c4b5bf13514a8a2e0a78cf5e65d2e2656b98a9" + }, + "predecessor_heads": { + "1122": "a2551e70fce0cc34348f50f1a94e7cc4c80bbcbf", + "1127": "2e9dc9d3356a6b7258ed869ddcee46352907f746", + "1188_comparison": "6e142e72e94515566e87c964c0fca39eea93156f" + }, + "repository_files": { + "research/e8-bit-carrier-skeleton/LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "research/e8-bit-carrier-skeleton/NOTICE.md": "5f4b7fcbf99f572be28b6da612ce775363908cdfc7810f7aca167be01c86e49a", + "research/e8-bit-carrier-skeleton/code/bit/checkers/columns_k.cpp": "1c344d18fcd494eeca93e259f10cafae7705780e6592f6dcb35b34752dab9bc2", + "research/e8-bit-carrier-skeleton/code/bit/checkers/json.hpp": "aaf127c04cb31c406e5b04a63f1ae89369fccde6d8fa7cdda1ed4f32dfc5de63", + "research/e8-bit-carrier-skeleton/code/bit/checkers/legality_h.cpp": "6c1ef2b24e57781d6951c172a1024fc4300e6fd392c9d6672079a7806ab663b3", + "research/e8-bit-carrier-skeleton/code/bit/export_records.py": "8a5999601f917dbb492bb9ae9a344611f18cc7cedc53dc3c76496a369e530eb3", + "research/e8-bit-carrier-skeleton/code/bit/regression/stage_cohort.py": "6c288f6f234b528c1a7c0a4adfb724e91e0fe6b18c8dffad96af3f973de1829a", + "research/e8-bit-carrier-skeleton/portable-include/bits/stdc++.h": "420094be2af295eed03a983dd66debbbe9cfb78d8252859f4498a615a0074b99", + "research/e8-bit-p111-tuned/LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "research/e8-bit-p111-tuned/NOTICE.md": "5b88eb2b7de76aa2a3288ee3c7a08d18a5eadfa82f5e7a99e207d232aed71221", + "research/e8-bit-p111-tuned/code/xcheck_p.py": "af3decc877e27c00001cf56f50c6c09566e8e101297ab34c7860aed96a06d80e", + "research/e8-bit-p111-tuned/tune/EXPECTED.json": "b9f0e5ca038abe837b0007c8fe006f366a6f02009244ac57705a8a200e2301f4", + "research/e8-bit-p111-tuned/tune/bitE8mut-p111-tuned.json.gz": "e3e301e62bc2b41dbf1ceac0acf3d35824ebeab1848c5a2142d4577b109da52f", + "research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/vendor/e8-r715-eleven-stage-whole/code/global_k.py": "6368196a393ac25bb2918880e4c4bd31ed733b762c27b6873ab391cbc0c5c3c8", + "research/r439-global-prefix-admission/NOTICE.md": "f562b006f82e0bd0a92fca97da82f0ee2127ef0646f85d3dc6a2527c1c683ad2", + "research/r439-global-prefix-admission/README.md": "9a41a2ec720317c6c293b731f6afcd85b5770b3c7a07e3153c267fc03386ba11", + "research/r439-global-prefix-admission/candidate.json.gz": "fffc0484a3572c76bf3bb5284d4a40eeb723c4b3acf3da5e2d9e113ac1747ec6" + }, + "selected_certificate_sha256": "1122cb3a575f8c788345fc1bf4c108ac7c3250fb81a5988671f5eb04b3ab3045" +} diff --git a/research/r439-abc-zrewrite-seed16/VALIDATION.md b/research/r439-abc-zrewrite-seed16/VALIDATION.md new file mode 100644 index 0000000000..20dca07011 --- /dev/null +++ b/research/r439-abc-zrewrite-seed16/VALIDATION.md @@ -0,0 +1,36 @@ +# Completed validation + +Base: 1b59b624d21924f8e3537cdc1ac52d3be6eda2fe. macOS; Python3.9.6; +Apple clang21; Boost1.87.0. Standard-library Python only. + +- Discovery reached its stated fixed point in three rounds. A second run + regenerated MOVES.json, SEARCH-LOG.json and CANDIDATE-WORD.json byte identically. +- `python3 -I -B research/r439-abc-zrewrite-seed16/verify.py` and its + `-O` variant independently regenerate the complete certificate and pass. + These checks cover all 55 occurrence-aware moves, all five phase maps, + both complete 661-column dirty endpoints, literal cleanup, copied-center + lifetimes, exact positive envelopes, strict caps, source/formula pins and + eleven negative controls. A code-disjoint bitset replay is used; discovery + code is not imported. +- `BOOST_INCLUDE=/private/tmp/boost_1_87_0 python3 -I -B + research/r439-abc-zrewrite-seed16/native.py --output NEW_DIRECTORY` + passes, freshly exporting both words and compiling four native binaries. + The two completed runs' logs are at `/private/tmp/seed16-native-20261013-1956` + and `/private/tmp/seed16-native-final-20261013`. Both agree on the committed + NATIVE.json: all 883/1327/1549 columns, every frame path, actual paid rank + histogram/mass 5129, copied-center lifetimes, exact prefixes and 96 rejected + bridge controls. The driver also checks CERTIFICATE.json before native work. +- The concurrent PR1188 frozen word was independently replayed in both literal + directions and repriced: 10492 ADDs and 175 nine-stage bits, versus 10542 and 174 + here. No sibling composition, GL5 BFS replay or unrestricted comparison is + claimed. Exact comparison head and input hashes are recorded. +- All retained repository dependencies match the PR1122 source pins at this + new base. Selected PR1094 certificate hash is guarded; upstream/ and the + selected-result record have no modifications. Staged whitespace checks + accompany publication. + +Not run: selected hosted-supplier cold replay, repository-wide historical +suites, Linux execution, full analytic theorem formalization, independent human +review, PR1188's GL5 optimality replay or adoption of PR1194's pending semantic-D +proof. The new evidence is limited to this finite word, unchanged physical +invoice, exact local 104/nine 192 precision and the scoped sibling comparison. diff --git a/research/r439-abc-zrewrite-seed16/native.py b/research/r439-abc-zrewrite-seed16/native.py new file mode 100644 index 0000000000..0eabffdc0f --- /dev/null +++ b/research/r439-abc-zrewrite-seed16/native.py @@ -0,0 +1,166 @@ +#!/usr/bin/env python3 +"""Fresh native baseline/candidate checks; adapted from PR1122, Apache-2.0. + +Gareth Davidson's PR1122 harness follows PR980/926, Sagar Thakrar PR837, +and Sricharan Vagvala PR967. Adaptation with substantial OpenAI Codex help. +""" +import argparse +import hashlib +import importlib.util +import json +import os +from pathlib import Path +import shlex +import struct +import subprocess +import sys +import tempfile + +HERE = Path(__file__).resolve().parent +ROOT = HERE.parents[1] + + +def verification(): + spec = importlib.util.spec_from_file_location("seed16_verify", HERE / "verify.py") + result = importlib.util.module_from_spec(spec) + spec.loader.exec_module(result) + return result + + +def write(path, value): + with Path(path).open("x") as stream: + json.dump(value, stream, indent=2, sort_keys=True, allow_nan=False) + stream.write("\n") + + +def canonical(value): + return json.dumps(value, sort_keys=True, separators=(",", ":"), allow_nan=False).encode() + + +def run(output): + V = verification() + V.same(V.run(), V.load(HERE / "CERTIFICATE.json"), "finite certificate") + paths = {"baseline": HERE / "vendor/pr1122/candidate.json.gz", + "candidate": HERE / "CANDIDATE-WORD.json"} + words = {name: V.load(path) for name, path in paths.items()} + prices = {name: V.price(word) for name, word in words.items()} + for name, price in prices.items(): + V.need(int(price["local_upper"]) < 1 << 104, name + " local precision") + V.need(int(price["nine_upper"]) < 1 << 192, name + " nine-stage precision") + V.need(prices["baseline"]["ADDs"] == 10652, "frozen complete baseline invoice") + for key in words["baseline"]: + if key not in ("A", "B", "C"): + V.same(words["baseline"][key], words["candidate"][key], "unchanged field " + key) + output = Path(output).resolve() + output.mkdir(parents=True, exist_ok=False) + hub = ROOT / "research/e8-bit-carrier-skeleton" + checker = hub / "code/bit/checkers" + flags = shlex.split(os.environ.get("CXX", "c++")) + [ + "-O2", "-std=c++17", "-DHDIM=8", "-DNCOPY=9", + "-I" + str(hub / "portable-include"), "-I" + str(checker), + "-I" + os.environ.get("BOOST_INCLUDE", "/usr/include")] + commands = [] + + def execute(args, log): + args = [str(x) for x in args] + commands.append(args) + with Path(log).open("x") as stream: + subprocess.run(args, stdout=stream, stderr=subprocess.STDOUT, check=True) + + execute(flags + ["-o", output / "legality", checker / "legality_h.cpp"], + output / "compile-legality.log") + for k in (2, 4, 5): + execute(flags + ["-DVPORTS=111", "-DRHELP=439", "-DKPAIRS=" + str(k), + "-o", output / ("columns-" + str(k)), checker / "columns_k.cpp"], + output / ("compile-columns-" + str(k) + ".log")) + # Inherited exporters use assertions: never propagate -O to them. + python = [sys.executable, "-I", "-B"] + reports, nonadd = {}, {} + inherited = V.load(HERE / "vendor/pr1122/EXPECTED.json")["native"]["7"] + for label in ("baseline", "candidate"): + print("native word " + label, flush=True) + folder = output / label + folder.mkdir() + records, cin, cout = (folder / name for name in ("records", "cin", "cout")) + execute(python + [hub / "code/bit/export_records.py", paths[label], records], + folder / "export.log") + execute(python + [hub / "code/bit/regression/stage_cohort.py", records, records, cin, cout], + folder / "stage.log") + execute([output / "legality", cin, cout, cout / "legality.json"], folder / "legality.log") + legality = V.load(cout / "legality.json") + V.need(legality["status"] == "PASS_INDEPENDENT_COHORT_LEGALITY_SOURCE_OWNERS_AND_LIFECYCLE", + "native legality status") + V.need(legality["copies"] == legality["erasures"] == 9, "native COPY lifetime") + V.need(legality["rank_mass"] == 5129, "true E8 paid rank mass") + V.same(legality["paid_histogram"], inherited["paid_histogram"], "inherited true paid histogram") + V.need(legality["common_frame_ADDs"] == prices[label]["ADDs"], "native local ADD invoice") + rows = list(struct.iter_unpack("<6i", (records / "249-records.bin").read_bytes())) + movements = {} + for row in rows: + if row[0] == 0: + movements.setdefault(str(row[1]), []).append(list(row)) + nonadd[label] = {"moves": movements, "copy_erase": [list(row) for row in rows if row[0] in (2, 3)]} + stages = {} + for k in (2, 4, 5): + name = "columns-" + str(k) + execute([output / name, cout / "COHORT249-RECORDS.bin", cout / (name + ".json")], + folder / (name + ".log")) + col = V.load(cout / (name + ".json")) + expected = ("PASS_NEW_COHORT249_ALL_FIVE_STAGE_FORMAL_COLUMNS_AND_PREFIX_BILL" if k == 2 + else "PASS_NEW_COHORT249_ALL_BRIDGED_STAGE_FORMAL_COLUMNS_AND_PREFIX_BILL") + V.need(col["status"] == expected, "native columns status") + V.need(col["formal_columns_checked"] == 2 * k * 111 + 439, "native column coverage") + V.need(len(col["stages"]) == 2 * k + 1, "native stage coverage") + V.need(col["bridge_additions"] == 6 * (k - 1) * 111, "native bridge invoice") + V.need(col["fresh_center_copies"] == 9 * (2 * k + 1) + and col["reverse_fresh_center_copies"] == 9 * k, "native staged COPY invoice") + addition_key = "five_stage_additions" if k == 2 else "stage_additions" + V.need(col[addition_key] == (2 * k + 1) * prices[label]["ADDs"], "all scalar stages billed") + V.need(col["local_scalar_additions"] == prices[label]["ADDs"], "native local ADD agreement") + V.need(col["payload_prefix_bits"] == prices[label]["local_bits"] <= 104, "native local precision") + V.need(int(col["payload_prefix_upper"]) == int(prices[label]["local_upper"]), "exact local precision invoice") + V.same([int(x["cancellation_free_signed_row_l1_upper"]) for x in col["signed_lift_prefix"]], + [prices[label]["F"], prices[label]["B"]], "native literal F/B agreement") + controls = col["negative_controls"] + V.need(len(controls) == 6 * (k - 1) and all(x["rejected"] is True for x in controls), + "native omitted-bridge controls") + stages[str(2 * k + 1)] = {key: col[key] for key in ( + "formal_columns_checked", "bridge_additions", "fresh_center_copies", + "reverse_fresh_center_copies", "payload_prefix_bits", "payload_prefix_upper", "local_raw_H")} + stages[str(2 * k + 1)].update(scalar_ADDs=col[addition_key], + total_ADDs=col[addition_key] + col["bridge_additions"], controls_rejected=len(controls)) + reports[label] = {key: legality[key] for key in ( + "records", "common_frame_ADDs", "rank_mass", "paid_histogram", "copies", "erasures")} + reports[label].update(staged=stages, literal_price=prices[label], + canonical_word_sha256=hashlib.sha256(canonical(words[label])).hexdigest(), + nonadd_record_sha256=hashlib.sha256(canonical(nonadd[label])).hexdigest()) + V.same(nonadd["baseline"], nonadd["candidate"], "every register MOVE path and COPY/ERASE record") + V.need(reports["baseline"]["records"] - reports["candidate"]["records"] == + prices["baseline"]["ADDs"] - prices["candidate"]["ADDs"], "unexpected non-ADD record saving") + for stage in ("5", "9", "11"): + V.same(reports["baseline"]["staged"][stage]["local_raw_H"], + reports["candidate"]["staged"][stage]["local_raw_H"], "true local raw ranks unchanged") + write(output / "commands.json", commands) + write(output / "native-report.json", reports) + return {"status": "PASS_R439_ABC_ZREWRITE_NATIVE", "words": reports, + "complete_frame_paths_identical": True, "copy_erase_records_identical": True, + "controls_rejected": 96, "no_new_kappa": True, + "scope": "Finite physical/native 5/9/11-stage coverage; local104/nine192 admission only."} + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--output", type=Path) + parser.add_argument("--write-certificate", action="store_true") + args = parser.parse_args() + with tempfile.TemporaryDirectory(prefix="seed16-native-") as temporary: + report = run(args.output or Path(temporary) / "run") + if args.write_certificate: + write(HERE / "NATIVE.json", report) + else: + verification().same(report, verification().load(HERE / "NATIVE.json"), "native certificate") + print("PASS_R439_ABC_ZREWRITE_NATIVE: 2 words; 5/9/11 stages; 96 bridge controls; rank_mass5129; no_new_kappa") + + +if __name__ == "__main__": + main() diff --git a/research/r439-abc-zrewrite-seed16/search.py b/research/r439-abc-zrewrite-seed16/search.py new file mode 100644 index 0000000000..29605664ad --- /dev/null +++ b/research/r439-abc-zrewrite-seed16/search.py @@ -0,0 +1,384 @@ +"""Discovery search: exact triangle (Steinberg 3->2) rewrites of the z-program of +the fixed PR1122 A/B/star-D bit word, with unchanged frame paths and frame-label profile. + +Research package research/r439-abc-zrewrite-seed16 (bit-supplier track, assignment seed 16). +Adapted from navinor's PR1127 discovery, prepared with help from opencode. +Seed 16 adaptation prepared with substantial OpenAI Codex assistance. Apache-2.0. + +The rewrite (a, b, x distinct registers; edges (b,x), (b,a), (a,x) all present in +the z-program): delete edge (b,x) and swap the relative order of edges (b,a) and +(a,x). As a contiguous identity (gate order left to right, over F2): + + [b += x] [b += a] [a += x] == [a += x] [b += a] (p(b,a) < p(a,x)) + [a += x] [b += a] [b += x] == [b += a] [a += x] (p(a,x) < p(b,a)) + +so one forward source edge disappears; the rebuilt literal-reverse cleanup C +loses its mirror edge as well: 2 ADDs per accepted rewrite. + +A candidate instance is accepted only if (i) every gate strictly between the +earliest and the latest of the three edges commutes with all three edges at the +register level (multi-source gates are groups of same-destination transvections +and commute internally), (ii) the rewritten word with rebuilt C passes an exact +replay of the F2 endpoint on all 2v+R = 661 basis columns, (iii) all 661 +register frame paths are identical to the base word, and (iv) the frame-label cardinality +bookkeeping is identical. This is not the E8 paid rank profile; the unchanged +ordered frame paths are checked independently by the package verifier. +D/A/scatter/B/C phase maps must also remain identical. Output: MOVES.json +(witness), CANDIDATE-WORD.json, SEARCH-LOG.json (complete coverage census). + +usage: python3 -I -B research/r439-abc-zrewrite-seed16/search.py +""" +import gzip, json, hashlib, collections, copy, sys, time +from pathlib import Path + +ROOT = Path(__file__).resolve().parents[2] +PACKAGE = Path(__file__).resolve().parent +BASE_WORD = PACKAGE / 'vendor/pr1122/candidate.json.gz' +SEED = 16 + +def load_word(p): + return json.load(gzip.open(p, 'rt')) + +def canon(w): + return json.dumps(w, sort_keys=True, separators=(',', ':')).encode() + +# ---------------------------------------------------------------- replay core +class Model: + def __init__(self, w): + self.w = w + self.V, self.R = w['v'], w['R'] + self.N = 2 * self.V + self.R + self.frames = w['frames'] + self.dim = [len(f) for f in self.frames] + self.mask = [sum(1 << i for i in f) for f in self.frames] + + def is_z(self, t): + return t < self.V or t >= 2 * self.V + + def replay(self, w): + V, N, dim, mask = self.V, self.N, self.dim, self.mask + cur = list(w['start']) + H = collections.Counter() + paths = [[] for _ in range(N)] + for r, f in enumerate(cur): + paths[r].append(f) + + def climb(r, f): + a = cur[r] + if a == f: + return + assert mask[a] & mask[f] == mask[a], ('climb', r, a, f) + if dim[f] > dim[a]: + H[dim[f] - dim[a]] += 1 + cur[r] = f + paths[r].append(f) + + val = [1 << i for i in range(N)] + + def gates(sec): + for f, t, ss in w[sec]: + assert len({t, *ss}) == 1 + len(ss), ('dup src', sec, f, t, ss) + for r in [t, *ss]: + climb(r, f) + for s in ss: + val[t] ^= val[s] + + phase_maps = {} + gates('D'); phase_maps['D'] = tuple(val) + gates('A'); phase_maps['A'] = tuple(val) + tops = [dim[cur[q]] for q in w['ret']] + snap = [val[q] for q in w['ret']] + for t, ks in enumerate(w['scatter']): + for k in ks: + val[V + t] ^= snap[k] + phase_maps['scatter'] = tuple(val) + gates('B'); phase_maps['B'] = tuple(val) + gates('C'); phase_maps['C'] = tuple(val) + for r, f in enumerate(w['final']): + climb(r, f) + ok = all(val[r] == ((1 << r) ^ (1 << (r - V)) if V <= r < 2 * V else 1 << r) + for r in range(N)) + prof = dict(sorted((H + collections.Counter(tops)).items())) + return [tuple(p) for p in paths], prof, ok, phase_maps + + def rebuild_C(self, w): + full = next(i for i, f in enumerate(w['frames']) if len(f) == self.V) + z = [g for g in w['A'] + w['B'] if self.is_z(g[1])] + return [[full, t, list(ss)] for f, t, ss in reversed(z)] + + def add_count(self, w): + return (sum(len(g[2]) for g in w['D'] + w['A'] + w['B'] + w['C']) + + sum(len(x) for x in w['scatter'])) + +# ------------------------------------------------------- z stream and triangles +def z_stream(w, M): + """stream of ('T', (dst, src, gate_key)) and barriers ('Y', ...) / ('SNAP', ...). + gate_key = (section, index-of-gate-in-section-list-at-snapshot).""" + stream = [] + for gi, (f, t, ss) in enumerate(w['A']): + for s in ss: + stream.append(('T', (t, s, ('A', gi)))) + stream.append(('SNAP', tuple(sorted(w['ret'])))) + for gi, (f, t, ss) in enumerate(w['B']): + if M.is_z(t): + for s in ss: + stream.append(('T', (t, s, ('B', gi)))) + else: + stream.append(('Y', (t, tuple(ss), ('B', gi)))) + return stream + +def tau_commutes(a, x, b, y): + if a == b: + return True + return (a != y) and (b != x) + +def blocks(a, x, item): + k, payload = item + if k == 'T': + b, y, _ = payload + return not tau_commutes(a, x, b, y) + if k == 'Y': + return any(not tau_commutes(a, x, payload[0], src) for src in payload[1]) + return a in payload # SNAP + +def find_triangles(w, M): + """Exhaust every distinct-register triangle occurrence in this snapshot. + + A candidate is retained only within one section and after strict register + commutation with every intervening elementary transvection/barrier. + """ + stream = z_stream(w, M) + pos = collections.defaultdict(list) + for idx, (kind, payload) in enumerate(stream): + if kind == 'T': + pos[(payload[0], payload[1])].append(idx) + outgoing = collections.defaultdict(list) + for b, x in sorted(pos): + outgoing[b].append(x) + out = [] + census = collections.Counter({key: 0 for key in ( + 'distinct_register_triangles', 'triangle_occurrences', 'cross_section', + 'noncommuting_window', 'clear_same_section')}) + for b in sorted(outgoing): + for a in outgoing[b]: + for x in outgoing[b]: + if len({a, b, x}) != 3 or (a, x) not in pos: + continue + census['distinct_register_triangles'] += 1 + for p_bx in pos[(b, x)]: + for p_ba in pos[(b, a)]: + for p_ax in pos[(a, x)]: + ps = [p_bx, p_ba, p_ax] + census['triangle_occurrences'] += 1 + secs = {stream[i][1][2][0] for i in ps} + if len(secs) != 1: + census['cross_section'] += 1 + continue + lo, hi = min(ps), max(ps) + blocked = False + for i in range(lo + 1, hi): + if i in ps: + continue + if any(blocks(dst, src, stream[i]) + for dst, src in ((b, x), (b, a), (a, x))): + blocked = True + break + if blocked: + census['noncommuting_window'] += 1 + continue + census['clear_same_section'] += 1 + out.append({'b': b, 'a': a, 'x': x, + 'pos': ps, 'mapA': p_ba < p_ax, + 'window': [lo, hi], 'sec': secs.pop()}) + return out, stream, dict(sorted(census.items())) + +# --------------------------------------------------------------- apply a move +def gate_identity(g): + return [g[0], g[1], list(g[2])] + +def apply_move(w, M, mv): + """Delete edge (b,x); move the gate holding (a,x) across the gate holding + (b,a) so the kept pair swaps relative order. Gates are identified by their + exact (frame, dst, src-list) identity captured at search time.""" + b, a, x = mv['b'], mv['a'], mv['x'] + sec = mv['sec'] + L = w[sec] + + def gate_by_identity(ident, occ): + hits = [i for i, g in enumerate(L) + if g[0] == ident[0] and g[1] == ident[1] and list(g[2]) == list(ident[2])] + if len(hits) <= occ: + raise AssertionError('gate identity not found: %r' % (ident,)) + return hits[occ] + + i_bx = gate_by_identity(mv['g_bx'], mv['occ_bx']) + i_ba = gate_by_identity(mv['g_ba'], mv['occ_ba']) + i_ax = gate_by_identity(mv['g_ax'], mv['occ_ax']) + g_bx, g_ba, g_ax = L[i_bx], L[i_ba], L[i_ax] + # 1. delete edge (b,x) + g_bx[2] = [s for s in g_bx[2] if s != x] + if not g_bx[2] and g_bx is not g_ba and g_bx is not g_ax: + L.pop(next(i for i, g in enumerate(L) if g is g_bx)) + # 2. extract edge (a,x) into its own gate at the same frame + if g_ax is g_ba: + raise AssertionError('triangle degenerate: (a,x) and (b,a) same gate') + rest = [s for s in g_ax[2] if s != x] + moved = [g_ax[0], a, [x]] + if rest: + g_ax[2] = rest + anchor_is_moved = False + else: + L.pop(next(i for i, g in enumerate(L) if g is g_ax)) + # 3. swap relative order: place moved (a,x) on the other side of (b,a) + j_ba = next(i for i, g in enumerate(L) if g is g_ba) + if mv['mapA']: + L.insert(j_ba, moved) # (a,x) now before (b,a) + else: + L.insert(j_ba + 1, moved) # (a,x) now after (b,a) + w['C'] = M.rebuild_C(w) + return w + +# ----------------------------------------------------------------- main search +def main(): + if sys.flags.optimize: + raise RuntimeError('discovery must run unoptimized; replay assertions are required') + w0 = load_word(BASE_WORD) + M = Model(w0) + base_hash = hashlib.sha256(canon(w0)).hexdigest() + bp, bprof, bok, bphase = M.replay(w0) + if not bok: + raise ValueError('base endpoint failed') + if w0['C'] != M.rebuild_C(w0): + raise ValueError('base C is not the literal reverse z cleanup') + base_adds = M.add_count(w0) + stream0 = z_stream(w0, M) + occ = collections.defaultdict(list) + for idx, (kind, payload) in enumerate(stream0): + if kind == 'T': + occ[(payload[0], payload[1])].append(idx) + dup = {k: v for k, v in occ.items() if len(v) > 1} + + work = copy.deepcopy(w0) + moves, rounds = [], [] + rejected = collections.Counter() + stopping_rule = '60-round cap' + for round_no in range(1, 61): + clear, stream, census = find_triangles(work, M) + # Snapshot exact gate identities before any accepted mutation. Windows + # are traversed right to left so disjoint earlier gates keep their index. + prepared = [] + for mv in clear: + sec = mv['sec'] + L = work[sec] + m = dict(mv) + for label, position in zip(('bx', 'ba', 'ax'), mv['pos']): + gi = stream[position][1][2][1] + ident = gate_identity(L[gi]) + m['g_' + label] = ident + m['occ_' + label] = sum(gate_identity(g) == ident for g in L[:gi]) + m['index_' + label] = gi + lo, hi = sorted((m['index_ba'], m['index_ax'])) + m['moved_edge_frame'] = m['g_ax'][0] + m['crossed_gate_frames'] = sorted({g[0] for g in L[lo:hi + 1]}) + m['crosses_distinct_frame'] = any(f != m['moved_edge_frame'] + for f in m['crossed_gate_frames']) + prepared.append(m) + def order(m): + tie = hashlib.sha256(('16:' + str(m['b']) + ':' + str(m['a']) + ':' + str(m['x'])).encode()).hexdigest() + return (-m['window'][1], -m['window'][0], tie) + applied = 0 + used_windows = [] + used_edges = set() + for m in sorted(prepared, key=order): + edges = [(m['b'], m['x']), (m['b'], m['a']), (m['a'], m['x'])] + if any(e in used_edges for e in edges): + rejected['edge-consumed'] += 1 + continue + lo, hi = m['window'] + if any(not (hi < a or b < lo) for a, b in used_windows): + rejected['window-overlap'] += 1 + continue + # Each witness occurrence must still identify its exact current gate. + for label in ('bx', 'ba', 'ax'): + ident = m['g_' + label] + hits = [i for i, g in enumerate(work[m['sec']]) if gate_identity(g) == ident] + if len(hits) <= m['occ_' + label] or hits[m['occ_' + label]] != m['index_' + label]: + raise ValueError('snapshot index drift for accepted-order trial') + trial = copy.deepcopy(work) + try: + apply_move(trial, M, m) + tp, tprof, tok, tphase = M.replay(trial) + except (AssertionError, ValueError, IndexError) as ex: + rejected['apply-or-replay:' + type(ex).__name__] += 1 + continue + if not tok: + rejected['endpoint'] += 1 + continue + if tphase != bphase: + rejected['phase-maps'] += 1 + continue + if tp != bp: + rejected['frame-paths'] += 1 + continue + if tprof != bprof: + rejected['frame-label-profile'] += 1 + continue + if M.add_count(work) - M.add_count(trial) != 2: + raise ValueError('accepted move must save exactly two ADDs') + work = trial + moves.append(m) + applied += 1 + used_edges.update(edges) + used_windows.append((lo, hi)) + rounds.append({'round': round_no, 'coverage': census, + 'applied': applied, + 'rejected_cumulative': dict(sorted(rejected.items()))}) + print('round %d: clear=%d applied=%d moves=%d' % (round_no, len(clear), applied, len(moves)), flush=True) + if applied == 0: + stopping_rule = 'fixed point under stated filters' + break + tp, tprof, tok, tphase = M.replay(work) + if not (tok and tp == bp and tprof == bprof and tphase == bphase): + raise ValueError('final preservation check failed') + cand_adds = M.add_count(work) + cand_hash = hashlib.sha256(canon(work)).hexdigest() + clear_end, _, end_census = find_triangles(work, M) + common = { + 'base_word': str(BASE_WORD.relative_to(ROOT)), + 'base_source_pin': 'a2551e70fce0cc34348f50f1a94e7cc4c80bbcbf', + 'base_canonical_sha256': base_hash, + 'candidate_canonical_sha256': cand_hash, + 'base_ADDs': base_adds, 'candidate_ADDs': cand_adds, + 'saved_ADDs': base_adds - cand_adds, + 'n_moves': len(moves), 'seed': SEED, + 'track': 'bit supplier (00-19)', + 'accepted_filter': ['same section', 'strict window commutation', + 'exact endpoint on 661 basis columns', + 'D/A/scatter/B/C phase maps identical', + '661 register frame paths identical', + 'frame-label profile identical', 'literal reverse C'], + 'frame_label_profile': bprof, + 'stopping_rule': stopping_rule, + 'round_cap': 60, + 'tie_order': 'descending window endpoints, SHA256 of 16:b:a:x', + 'cross_frame_moves': sum(m['crosses_distinct_frame'] for m in moves), + 'scope': 'finite circuit rewrite only; no new kappa or improved frame-label profile', + } + record = dict(common) + record['moves'] = moves + log = dict(common) + log.update({'rounds': rounds, 'rejected': dict(sorted(rejected.items())), + 'initial_duplicate_edges': len(dup), + 'initial_duplicate_extra_occurrences': sum(len(v) - 1 for v in dup.values()), + 'final_coverage': end_census, + 'clear_instances_at_stop': len(clear_end)}) + (PACKAGE / 'MOVES.json').write_text(json.dumps(record, indent=2, sort_keys=True) + '\n') + (PACKAGE / 'SEARCH-LOG.json').write_text(json.dumps(log, indent=2, sort_keys=True) + '\n') + (PACKAGE / 'CANDIDATE-WORD.json').write_text(canon(work).decode() + '\n') + print('ADDs %d -> %d (saved %d), moves %d, cross-frame %d, %s' % + (base_adds, cand_adds, base_adds - cand_adds, len(moves), + common['cross_frame_moves'], stopping_rule), flush=True) + print('rejected: ' + json.dumps(dict(sorted(rejected.items()))), flush=True) + +if __name__ == '__main__': + main() diff --git a/research/r439-abc-zrewrite-seed16/vendor/pr1122/CERTIFICATE.json b/research/r439-abc-zrewrite-seed16/vendor/pr1122/CERTIFICATE.json new file mode 100644 index 0000000000..ba41f8e033 --- /dev/null +++ b/research/r439-abc-zrewrite-seed16/vendor/pr1122/CERTIFICATE.json @@ -0,0 +1,173 @@ +{ + "bit_order": [ + "A_from_PR980", + "B_from_PR1062", + "D_from_PR1062" + ], + "candidate_mask": 7, + "corners": { + "0": { + "ADDs": 24305, + "B": 1113070, + "F": 49347, + "admitted": true, + "local_bits": 93, + "local_upper": "9528119495320518471870892800", + "nine_bits": 177, + "nine_upper": "117742596540718658156527847560864213734191286190080000", + "sections": { + "A": 2130, + "B": 934, + "C": 2629, + "D": 18085, + "scatter": 527 + }, + "sha256": "5642fd0e35a1acc11acff8d0c08350c1617e95f310d4d35ad63a651f9eeeba0b" + }, + "1": { + "ADDs": 23457, + "B": 734894, + "F": 39741, + "admitted": true, + "local_bits": 91, + "local_upper": "2169430543563436414251005184", + "nine_bits": 173, + "nine_upper": "7579362586098503299337647784840281046334606906753024", + "sections": { + "A": 1706, + "B": 934, + "C": 2205, + "D": 18085, + "scatter": 527 + }, + "sha256": "eb3a6c4a4696e436c3589d3038976d782595d2785fbc12b38a5f055101e14094" + }, + "2": { + "ADDs": 24037, + "B": 628338, + "F": 16841, + "admitted": true, + "local_bits": 87, + "local_upper": "120689712358592942082836736", + "nine_bits": 166, + "nine_upper": "55354457979264516602137696273028027286537564585984", + "sections": { + "A": 2130, + "B": 800, + "C": 2495, + "D": 18085, + "scatter": 527 + }, + "sha256": "fe72af73656eeaa4208907fcfc41a3bb2ebb11f6417f1ddc73ad12a5451fb468" + }, + "3": { + "ADDs": 23189, + "B": 338078, + "F": 9973, + "admitted": true, + "local_bits": 83, + "local_upper": "7255899389298649606696192", + "nine_bits": 158, + "nine_upper": "337859907815899833990771378853677191902844157952", + "sections": { + "A": 1706, + "B": 800, + "C": 2071, + "D": 18085, + "scatter": 527 + }, + "sha256": "14cf12af1fbb20f8e4cf220f2cb30c9f288e226012abeda7dfe730cfb6fb7a18" + }, + "4": { + "ADDs": 11768, + "B": 10470774, + "F": 79883, + "admitted": false, + "local_bits": 102, + "local_upper": "3576849318364915677794890906368", + "nine_bits": 193, + "nine_upper": "10250071566696342930038773719808475856064851818022690619392", + "sections": { + "A": 2130, + "B": 934, + "C": 2629, + "D": 5548, + "scatter": 527 + }, + "sha256": "3e16aae2dfe6ac3d59bef06b94d96d95d29c92328e54d5bd62ae026ccb07eb1f" + }, + "5": { + "ADDs": 10920, + "B": 7938516, + "F": 65853, + "admitted": true, + "local_bits": 100, + "local_upper": "1151821859173995790402836231168", + "nine_bits": 190, + "nine_upper": "1289362521029361945472698679437770033840632530837241331712", + "sections": { + "A": 1706, + "B": 934, + "C": 2205, + "D": 5548, + "scatter": 527 + }, + "sha256": "d3f218116d7972d30cded4cd82e9d3010537d9a2ad74a1c8bb647cf5429e97a2" + }, + "6": { + "ADDs": 11500, + "B": 5911840, + "F": 25717, + "admitted": true, + "local_bits": 95, + "local_upper": "38044005158586490435359539200", + "nine_bits": 182, + "nine_upper": "3601903994416905225984905662960686510006596408442880000", + "sections": { + "A": 2130, + "B": 800, + "C": 2495, + "D": 5548, + "scatter": 527 + }, + "sha256": "62fc64481911bec4c18643c0c6ac7d31091f09c081a9223096839a7150185be8" + }, + "7": { + "ADDs": 10652, + "B": 3910388, + "F": 15223, + "admitted": true, + "local_bits": 92, + "local_upper": "3452394524099512658714524672", + "nine_bits": 176, + "nine_upper": "50109557170207398770972615575887331408085730734374912", + "sections": { + "A": 1706, + "B": 800, + "C": 2071, + "D": 5548, + "scatter": 527 + }, + "sha256": "7bbaed96041297cd38e89ff48eb055750cfab36609b9fdbeafcec1b2758c1254" + } + }, + "format": "r439-abc-star-composition/1", + "new_kappa_claim": false, + "order": [ + 5, + 4, + 7, + 6, + 1, + 0, + 3, + 2 + ], + "seed": 13, + "sources": { + "PR1062": "62fc64481911bec4c18643c0c6ac7d31091f09c081a9223096839a7150185be8", + "PR589": "5642fd0e35a1acc11acff8d0c08350c1617e95f310d4d35ad63a651f9eeeba0b", + "PR980": "6ad029fc492597ed492e87e449e3fdcfccb27400a66189976db7c7243c81dd2b" + }, + "stopping_rule": "all eight frozen subsets; no search or restart" +} diff --git a/research/r439-abc-zrewrite-seed16/vendor/pr1122/EXPECTED.json b/research/r439-abc-zrewrite-seed16/vendor/pr1122/EXPECTED.json new file mode 100644 index 0000000000..067019c301 --- /dev/null +++ b/research/r439-abc-zrewrite-seed16/vendor/pr1122/EXPECTED.json @@ -0,0 +1,4398 @@ +{ + "certificate_sha256": "eb5287caedb92da23abba182fe727157c2d411c30b0f587af68841eb4449bd9c", + "controls": { + "positive_controls": [ + "stale cleanup still F2 exact", + "D-only corner remains F2 exact while admission fails" + ], + "rejected": [ + "omitted A gate", + "omitted B gate", + "omitted helper preparation", + "omitted helper restoration", + "semantically valid stale cleanup", + "omitted private COPY", + "omitted private ERASE", + "wrong ERASE original", + "boolean frame id", + "self ADD", + "double-counted inherited B saving", + "stale forward bound", + "underpriced bridges", + "D-only semantic success exceeds precision", + "strict equality at local_upper", + "strict equality at nine_upper", + "non-nested physical frame" + ] + }, + "exact_phase_maps": { + "columns": 661, + "directions": 2, + "phases": 3, + "words": 8 + }, + "literal_streams": { + "columns": 661, + "directions": 2, + "instructions": 139972, + "words": 8 + }, + "native": { + "0": { + "common_frame_ADDs": 24305, + "copies": 9, + "erasures": 9, + "nine_stage_admitted": true, + "paid_histogram": [ + [ + 1, + 1323 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 19 + ] + ], + "rank_mass": 5129, + "records": 27234, + "staged": { + "11": { + "bridge_additions": 2664, + "controls_rejected": 24, + "formal_columns_checked": 1549, + "fresh_center_copies": 99, + "local_raw_H": [ + [ + 1, + 1323 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 19 + ] + ], + "payload_prefix_bits": 93, + "payload_prefix_upper": "9528119495320518471870892800", + "reverse_fresh_center_copies": 45, + "scalar_ADDs": 267355, + "signed_lift_prefix": [ + { + "bits": 16, + "cancellation_free_signed_row_l1_upper": "49347", + "reverse": false + }, + { + "bits": 21, + "cancellation_free_signed_row_l1_upper": "1113070", + "reverse": true + } + ], + "stages": [ + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": false, + "stage": 0 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": true, + "stage": 1 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": false, + "stage": 2 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": true, + "stage": 3 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": false, + "stage": 4 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": true, + "stage": 5 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": false, + "stage": 6 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": true, + "stage": 7 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": false, + "stage": 8 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": true, + "stage": 9 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": false, + "stage": 10 + } + ] + }, + "5": { + "bridge_additions": 666, + "controls_rejected": 6, + "formal_columns_checked": 883, + "fresh_center_copies": 45, + "local_raw_H": [ + [ + 1, + 1323 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 19 + ] + ], + "payload_prefix_bits": 93, + "payload_prefix_upper": "9528119495320518471870892800", + "reverse_fresh_center_copies": 18, + "scalar_ADDs": 121525, + "signed_lift_prefix": [ + { + "bits": 16, + "cancellation_free_signed_row_l1_upper": "49347", + "reverse": false + }, + { + "bits": 21, + "cancellation_free_signed_row_l1_upper": "1113070", + "reverse": true + } + ], + "stages": [ + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": false, + "stage": 0 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": true, + "stage": 1 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": false, + "stage": 2 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": true, + "stage": 3 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": false, + "stage": 4 + } + ] + }, + "9": { + "bridge_additions": 1998, + "controls_rejected": 18, + "formal_columns_checked": 1327, + "fresh_center_copies": 81, + "local_raw_H": [ + [ + 1, + 1323 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 19 + ] + ], + "payload_prefix_bits": 93, + "payload_prefix_upper": "9528119495320518471870892800", + "reverse_fresh_center_copies": 36, + "scalar_ADDs": 218745, + "signed_lift_prefix": [ + { + "bits": 16, + "cancellation_free_signed_row_l1_upper": "49347", + "reverse": false + }, + { + "bits": 21, + "cancellation_free_signed_row_l1_upper": "1113070", + "reverse": true + } + ], + "stages": [ + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": false, + "stage": 0 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": true, + "stage": 1 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": false, + "stage": 2 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": true, + "stage": 3 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": false, + "stage": 4 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": true, + "stage": 5 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": false, + "stage": 6 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": true, + "stage": 7 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": false, + "stage": 8 + } + ] + } + } + }, + "1": { + "common_frame_ADDs": 23457, + "copies": 9, + "erasures": 9, + "nine_stage_admitted": true, + "paid_histogram": [ + [ + 1, + 1323 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 19 + ] + ], + "rank_mass": 5129, + "records": 26386, + "staged": { + "11": { + "bridge_additions": 2664, + "controls_rejected": 24, + "formal_columns_checked": 1549, + "fresh_center_copies": 99, + "local_raw_H": [ + [ + 1, + 1323 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 19 + ] + ], + "payload_prefix_bits": 91, + "payload_prefix_upper": "2169430543563436414251005184", + "reverse_fresh_center_copies": 45, + "scalar_ADDs": 258027, + "signed_lift_prefix": [ + { + "bits": 16, + "cancellation_free_signed_row_l1_upper": "39741", + "reverse": false + }, + { + "bits": 20, + "cancellation_free_signed_row_l1_upper": "734894", + "reverse": true + } + ], + "stages": [ + { + "fresh_copies": 9, + "scalar_additions": 23457, + "signed_inverse": false, + "stage": 0 + }, + { + "fresh_copies": 9, + "scalar_additions": 23457, + "signed_inverse": true, + "stage": 1 + }, + { + "fresh_copies": 9, + "scalar_additions": 23457, + "signed_inverse": false, + "stage": 2 + }, + { + "fresh_copies": 9, + "scalar_additions": 23457, + "signed_inverse": true, + "stage": 3 + }, + { + "fresh_copies": 9, + "scalar_additions": 23457, + "signed_inverse": false, + "stage": 4 + }, + { + "fresh_copies": 9, + "scalar_additions": 23457, + "signed_inverse": true, + "stage": 5 + }, + { + "fresh_copies": 9, + "scalar_additions": 23457, + "signed_inverse": false, + "stage": 6 + }, + { + "fresh_copies": 9, + "scalar_additions": 23457, + "signed_inverse": true, + "stage": 7 + }, + { + "fresh_copies": 9, + "scalar_additions": 23457, + "signed_inverse": false, + "stage": 8 + }, + { + "fresh_copies": 9, + "scalar_additions": 23457, + "signed_inverse": true, + "stage": 9 + }, + { + "fresh_copies": 9, + "scalar_additions": 23457, + "signed_inverse": false, + "stage": 10 + } + ] + }, + "5": { + "bridge_additions": 666, + "controls_rejected": 6, + "formal_columns_checked": 883, + "fresh_center_copies": 45, + "local_raw_H": [ + [ + 1, + 1323 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 19 + ] + ], + "payload_prefix_bits": 91, + "payload_prefix_upper": "2169430543563436414251005184", + "reverse_fresh_center_copies": 18, + "scalar_ADDs": 117285, + "signed_lift_prefix": [ + { + "bits": 16, + "cancellation_free_signed_row_l1_upper": "39741", + "reverse": false + }, + { + "bits": 20, + "cancellation_free_signed_row_l1_upper": "734894", + "reverse": true + } + ], + "stages": [ + { + "fresh_copies": 9, + "scalar_additions": 23457, + "signed_inverse": false, + "stage": 0 + }, + { + "fresh_copies": 9, + "scalar_additions": 23457, + "signed_inverse": true, + "stage": 1 + }, + { + "fresh_copies": 9, + "scalar_additions": 23457, + "signed_inverse": false, + "stage": 2 + }, + { + "fresh_copies": 9, + "scalar_additions": 23457, + "signed_inverse": true, + "stage": 3 + }, + { + "fresh_copies": 9, + "scalar_additions": 23457, + "signed_inverse": false, + "stage": 4 + } + ] + }, + "9": { + "bridge_additions": 1998, + "controls_rejected": 18, + "formal_columns_checked": 1327, + "fresh_center_copies": 81, + "local_raw_H": [ + [ + 1, + 1323 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 19 + ] + ], + "payload_prefix_bits": 91, + "payload_prefix_upper": "2169430543563436414251005184", + "reverse_fresh_center_copies": 36, + "scalar_ADDs": 211113, + "signed_lift_prefix": [ + { + "bits": 16, + "cancellation_free_signed_row_l1_upper": "39741", + "reverse": false + }, + { + "bits": 20, + "cancellation_free_signed_row_l1_upper": "734894", + "reverse": true + } + ], + "stages": [ + { + "fresh_copies": 9, + "scalar_additions": 23457, + "signed_inverse": false, + "stage": 0 + }, + { + "fresh_copies": 9, + "scalar_additions": 23457, + "signed_inverse": true, + "stage": 1 + }, + { + "fresh_copies": 9, + "scalar_additions": 23457, + "signed_inverse": false, + "stage": 2 + }, + { + "fresh_copies": 9, + "scalar_additions": 23457, + "signed_inverse": true, + "stage": 3 + }, + { + "fresh_copies": 9, + "scalar_additions": 23457, + "signed_inverse": false, + "stage": 4 + }, + { + "fresh_copies": 9, + "scalar_additions": 23457, + "signed_inverse": true, + "stage": 5 + }, + { + "fresh_copies": 9, + "scalar_additions": 23457, + "signed_inverse": false, + "stage": 6 + }, + { + "fresh_copies": 9, + "scalar_additions": 23457, + "signed_inverse": true, + "stage": 7 + }, + { + "fresh_copies": 9, + "scalar_additions": 23457, + "signed_inverse": false, + "stage": 8 + } + ] + } + } + }, + "2": { + "common_frame_ADDs": 24037, + "copies": 9, + "erasures": 9, + "nine_stage_admitted": true, + "paid_histogram": [ + [ + 1, + 1323 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 19 + ] + ], + "rank_mass": 5129, + "records": 26966, + "staged": { + "11": { + "bridge_additions": 2664, + "controls_rejected": 24, + "formal_columns_checked": 1549, + "fresh_center_copies": 99, + "local_raw_H": [ + [ + 1, + 1323 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 19 + ] + ], + "payload_prefix_bits": 87, + "payload_prefix_upper": "120689712358592942082836736", + "reverse_fresh_center_copies": 45, + "scalar_ADDs": 264407, + "signed_lift_prefix": [ + { + "bits": 15, + "cancellation_free_signed_row_l1_upper": "16841", + "reverse": false + }, + { + "bits": 20, + "cancellation_free_signed_row_l1_upper": "628338", + "reverse": true + } + ], + "stages": [ + { + "fresh_copies": 9, + "scalar_additions": 24037, + "signed_inverse": false, + "stage": 0 + }, + { + "fresh_copies": 9, + "scalar_additions": 24037, + "signed_inverse": true, + "stage": 1 + }, + { + "fresh_copies": 9, + "scalar_additions": 24037, + "signed_inverse": false, + "stage": 2 + }, + { + "fresh_copies": 9, + "scalar_additions": 24037, + "signed_inverse": true, + "stage": 3 + }, + { + "fresh_copies": 9, + "scalar_additions": 24037, + "signed_inverse": false, + "stage": 4 + }, + { + "fresh_copies": 9, + "scalar_additions": 24037, + "signed_inverse": true, + "stage": 5 + }, + { + "fresh_copies": 9, + "scalar_additions": 24037, + "signed_inverse": false, + "stage": 6 + }, + { + "fresh_copies": 9, + "scalar_additions": 24037, + "signed_inverse": true, + "stage": 7 + }, + { + "fresh_copies": 9, + "scalar_additions": 24037, + "signed_inverse": false, + "stage": 8 + }, + { + "fresh_copies": 9, + "scalar_additions": 24037, + "signed_inverse": true, + "stage": 9 + }, + { + "fresh_copies": 9, + "scalar_additions": 24037, + "signed_inverse": false, + "stage": 10 + } + ] + }, + "5": { + "bridge_additions": 666, + "controls_rejected": 6, + "formal_columns_checked": 883, + "fresh_center_copies": 45, + "local_raw_H": [ + [ + 1, + 1323 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 19 + ] + ], + "payload_prefix_bits": 87, + "payload_prefix_upper": "120689712358592942082836736", + "reverse_fresh_center_copies": 18, + "scalar_ADDs": 120185, + "signed_lift_prefix": [ + { + "bits": 15, + "cancellation_free_signed_row_l1_upper": "16841", + "reverse": false + }, + { + "bits": 20, + "cancellation_free_signed_row_l1_upper": "628338", + "reverse": true + } + ], + "stages": [ + { + "fresh_copies": 9, + "scalar_additions": 24037, + "signed_inverse": false, + "stage": 0 + }, + { + "fresh_copies": 9, + "scalar_additions": 24037, + "signed_inverse": true, + "stage": 1 + }, + { + "fresh_copies": 9, + "scalar_additions": 24037, + "signed_inverse": false, + "stage": 2 + }, + { + "fresh_copies": 9, + "scalar_additions": 24037, + "signed_inverse": true, + "stage": 3 + }, + { + "fresh_copies": 9, + "scalar_additions": 24037, + "signed_inverse": false, + "stage": 4 + } + ] + }, + "9": { + "bridge_additions": 1998, + "controls_rejected": 18, + "formal_columns_checked": 1327, + "fresh_center_copies": 81, + "local_raw_H": [ + [ + 1, + 1323 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 19 + ] + ], + "payload_prefix_bits": 87, + "payload_prefix_upper": "120689712358592942082836736", + "reverse_fresh_center_copies": 36, + "scalar_ADDs": 216333, + "signed_lift_prefix": [ + { + "bits": 15, + "cancellation_free_signed_row_l1_upper": "16841", + "reverse": false + }, + { + "bits": 20, + "cancellation_free_signed_row_l1_upper": "628338", + "reverse": true + } + ], + "stages": [ + { + "fresh_copies": 9, + "scalar_additions": 24037, + "signed_inverse": false, + "stage": 0 + }, + { + "fresh_copies": 9, + "scalar_additions": 24037, + "signed_inverse": true, + "stage": 1 + }, + { + "fresh_copies": 9, + "scalar_additions": 24037, + "signed_inverse": false, + "stage": 2 + }, + { + "fresh_copies": 9, + "scalar_additions": 24037, + "signed_inverse": true, + "stage": 3 + }, + { + "fresh_copies": 9, + "scalar_additions": 24037, + "signed_inverse": false, + "stage": 4 + }, + { + "fresh_copies": 9, + "scalar_additions": 24037, + "signed_inverse": true, + "stage": 5 + }, + { + "fresh_copies": 9, + "scalar_additions": 24037, + "signed_inverse": false, + "stage": 6 + }, + { + "fresh_copies": 9, + "scalar_additions": 24037, + "signed_inverse": true, + "stage": 7 + }, + { + "fresh_copies": 9, + "scalar_additions": 24037, + "signed_inverse": false, + "stage": 8 + } + ] + } + } + }, + "3": { + "common_frame_ADDs": 23189, + "copies": 9, + "erasures": 9, + "nine_stage_admitted": true, + "paid_histogram": [ + [ + 1, + 1323 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 19 + ] + ], + "rank_mass": 5129, + "records": 26118, + "staged": { + "11": { + "bridge_additions": 2664, + "controls_rejected": 24, + "formal_columns_checked": 1549, + "fresh_center_copies": 99, + "local_raw_H": [ + [ + 1, + 1323 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 19 + ] + ], + "payload_prefix_bits": 83, + "payload_prefix_upper": "7255899389298649606696192", + "reverse_fresh_center_copies": 45, + "scalar_ADDs": 255079, + "signed_lift_prefix": [ + { + "bits": 14, + "cancellation_free_signed_row_l1_upper": "9973", + "reverse": false + }, + { + "bits": 19, + "cancellation_free_signed_row_l1_upper": "338078", + "reverse": true + } + ], + "stages": [ + { + "fresh_copies": 9, + "scalar_additions": 23189, + "signed_inverse": false, + "stage": 0 + }, + { + "fresh_copies": 9, + "scalar_additions": 23189, + "signed_inverse": true, + "stage": 1 + }, + { + "fresh_copies": 9, + "scalar_additions": 23189, + "signed_inverse": false, + "stage": 2 + }, + { + "fresh_copies": 9, + "scalar_additions": 23189, + "signed_inverse": true, + "stage": 3 + }, + { + "fresh_copies": 9, + "scalar_additions": 23189, + "signed_inverse": false, + "stage": 4 + }, + { + "fresh_copies": 9, + "scalar_additions": 23189, + "signed_inverse": true, + "stage": 5 + }, + { + "fresh_copies": 9, + "scalar_additions": 23189, + "signed_inverse": false, + "stage": 6 + }, + { + "fresh_copies": 9, + "scalar_additions": 23189, + "signed_inverse": true, + "stage": 7 + }, + { + "fresh_copies": 9, + "scalar_additions": 23189, + "signed_inverse": false, + "stage": 8 + }, + { + "fresh_copies": 9, + "scalar_additions": 23189, + "signed_inverse": true, + "stage": 9 + }, + { + "fresh_copies": 9, + "scalar_additions": 23189, + "signed_inverse": false, + "stage": 10 + } + ] + }, + "5": { + "bridge_additions": 666, + "controls_rejected": 6, + "formal_columns_checked": 883, + "fresh_center_copies": 45, + "local_raw_H": [ + [ + 1, + 1323 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 19 + ] + ], + "payload_prefix_bits": 83, + "payload_prefix_upper": "7255899389298649606696192", + "reverse_fresh_center_copies": 18, + "scalar_ADDs": 115945, + "signed_lift_prefix": [ + { + "bits": 14, + "cancellation_free_signed_row_l1_upper": "9973", + "reverse": false + }, + { + "bits": 19, + "cancellation_free_signed_row_l1_upper": "338078", + "reverse": true + } + ], + "stages": [ + { + "fresh_copies": 9, + "scalar_additions": 23189, + "signed_inverse": false, + "stage": 0 + }, + { + "fresh_copies": 9, + "scalar_additions": 23189, + "signed_inverse": true, + "stage": 1 + }, + { + "fresh_copies": 9, + "scalar_additions": 23189, + "signed_inverse": false, + "stage": 2 + }, + { + "fresh_copies": 9, + "scalar_additions": 23189, + "signed_inverse": true, + "stage": 3 + }, + { + "fresh_copies": 9, + "scalar_additions": 23189, + "signed_inverse": false, + "stage": 4 + } + ] + }, + "9": { + "bridge_additions": 1998, + "controls_rejected": 18, + "formal_columns_checked": 1327, + "fresh_center_copies": 81, + "local_raw_H": [ + [ + 1, + 1323 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 19 + ] + ], + "payload_prefix_bits": 83, + "payload_prefix_upper": "7255899389298649606696192", + "reverse_fresh_center_copies": 36, + "scalar_ADDs": 208701, + "signed_lift_prefix": [ + { + "bits": 14, + "cancellation_free_signed_row_l1_upper": "9973", + "reverse": false + }, + { + "bits": 19, + "cancellation_free_signed_row_l1_upper": "338078", + "reverse": true + } + ], + "stages": [ + { + "fresh_copies": 9, + "scalar_additions": 23189, + "signed_inverse": false, + "stage": 0 + }, + { + "fresh_copies": 9, + "scalar_additions": 23189, + "signed_inverse": true, + "stage": 1 + }, + { + "fresh_copies": 9, + "scalar_additions": 23189, + "signed_inverse": false, + "stage": 2 + }, + { + "fresh_copies": 9, + "scalar_additions": 23189, + "signed_inverse": true, + "stage": 3 + }, + { + "fresh_copies": 9, + "scalar_additions": 23189, + "signed_inverse": false, + "stage": 4 + }, + { + "fresh_copies": 9, + "scalar_additions": 23189, + "signed_inverse": true, + "stage": 5 + }, + { + "fresh_copies": 9, + "scalar_additions": 23189, + "signed_inverse": false, + "stage": 6 + }, + { + "fresh_copies": 9, + "scalar_additions": 23189, + "signed_inverse": true, + "stage": 7 + }, + { + "fresh_copies": 9, + "scalar_additions": 23189, + "signed_inverse": false, + "stage": 8 + } + ] + } + } + }, + "4": { + "common_frame_ADDs": 11768, + "copies": 9, + "erasures": 9, + "nine_stage_admitted": false, + "paid_histogram": [ + [ + 1, + 1323 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 19 + ] + ], + "rank_mass": 5129, + "records": 14697, + "staged": { + "11": { + "bridge_additions": 2664, + "controls_rejected": 24, + "formal_columns_checked": 1549, + "fresh_center_copies": 99, + "local_raw_H": [ + [ + 1, + 1323 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 19 + ] + ], + "payload_prefix_bits": 102, + "payload_prefix_upper": "3576849318364915677794890906368", + "reverse_fresh_center_copies": 45, + "scalar_ADDs": 129448, + "signed_lift_prefix": [ + { + "bits": 17, + "cancellation_free_signed_row_l1_upper": "79883", + "reverse": false + }, + { + "bits": 24, + "cancellation_free_signed_row_l1_upper": "10470774", + "reverse": true + } + ], + "stages": [ + { + "fresh_copies": 9, + "scalar_additions": 11768, + "signed_inverse": false, + "stage": 0 + }, + { + "fresh_copies": 9, + "scalar_additions": 11768, + "signed_inverse": true, + "stage": 1 + }, + { + "fresh_copies": 9, + "scalar_additions": 11768, + "signed_inverse": false, + "stage": 2 + }, + { + "fresh_copies": 9, + "scalar_additions": 11768, + "signed_inverse": true, + "stage": 3 + }, + { + "fresh_copies": 9, + "scalar_additions": 11768, + "signed_inverse": false, + "stage": 4 + }, + { + "fresh_copies": 9, + "scalar_additions": 11768, + "signed_inverse": true, + "stage": 5 + }, + { + "fresh_copies": 9, + "scalar_additions": 11768, + "signed_inverse": false, + "stage": 6 + }, + { + "fresh_copies": 9, + "scalar_additions": 11768, + "signed_inverse": true, + "stage": 7 + }, + { + "fresh_copies": 9, + "scalar_additions": 11768, + "signed_inverse": false, + "stage": 8 + }, + { + "fresh_copies": 9, + "scalar_additions": 11768, + "signed_inverse": true, + "stage": 9 + }, + { + "fresh_copies": 9, + "scalar_additions": 11768, + "signed_inverse": false, + "stage": 10 + } + ] + }, + "5": { + "bridge_additions": 666, + "controls_rejected": 6, + "formal_columns_checked": 883, + "fresh_center_copies": 45, + "local_raw_H": [ + [ + 1, + 1323 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 19 + ] + ], + "payload_prefix_bits": 102, + "payload_prefix_upper": "3576849318364915677794890906368", + "reverse_fresh_center_copies": 18, + "scalar_ADDs": 58840, + "signed_lift_prefix": [ + { + "bits": 17, + "cancellation_free_signed_row_l1_upper": "79883", + "reverse": false + }, + { + "bits": 24, + "cancellation_free_signed_row_l1_upper": "10470774", + "reverse": true + } + ], + "stages": [ + { + "fresh_copies": 9, + "scalar_additions": 11768, + "signed_inverse": false, + "stage": 0 + }, + { + "fresh_copies": 9, + "scalar_additions": 11768, + "signed_inverse": true, + "stage": 1 + }, + { + "fresh_copies": 9, + "scalar_additions": 11768, + "signed_inverse": false, + "stage": 2 + }, + { + "fresh_copies": 9, + "scalar_additions": 11768, + "signed_inverse": true, + "stage": 3 + }, + { + "fresh_copies": 9, + "scalar_additions": 11768, + "signed_inverse": false, + "stage": 4 + } + ] + }, + "9": { + "bridge_additions": 1998, + "controls_rejected": 18, + "formal_columns_checked": 1327, + "fresh_center_copies": 81, + "local_raw_H": [ + [ + 1, + 1323 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 19 + ] + ], + "payload_prefix_bits": 102, + "payload_prefix_upper": "3576849318364915677794890906368", + "reverse_fresh_center_copies": 36, + "scalar_ADDs": 105912, + "signed_lift_prefix": [ + { + "bits": 17, + "cancellation_free_signed_row_l1_upper": "79883", + "reverse": false + }, + { + "bits": 24, + "cancellation_free_signed_row_l1_upper": "10470774", + "reverse": true + } + ], + "stages": [ + { + "fresh_copies": 9, + "scalar_additions": 11768, + "signed_inverse": false, + "stage": 0 + }, + { + "fresh_copies": 9, + "scalar_additions": 11768, + "signed_inverse": true, + "stage": 1 + }, + { + "fresh_copies": 9, + "scalar_additions": 11768, + "signed_inverse": false, + "stage": 2 + }, + { + "fresh_copies": 9, + "scalar_additions": 11768, + "signed_inverse": true, + "stage": 3 + }, + { + "fresh_copies": 9, + "scalar_additions": 11768, + "signed_inverse": false, + "stage": 4 + }, + { + "fresh_copies": 9, + "scalar_additions": 11768, + "signed_inverse": true, + "stage": 5 + }, + { + "fresh_copies": 9, + "scalar_additions": 11768, + "signed_inverse": false, + "stage": 6 + }, + { + "fresh_copies": 9, + "scalar_additions": 11768, + "signed_inverse": true, + "stage": 7 + }, + { + "fresh_copies": 9, + "scalar_additions": 11768, + "signed_inverse": false, + "stage": 8 + } + ] + } + } + }, + "5": { + "common_frame_ADDs": 10920, + "copies": 9, + "erasures": 9, + "nine_stage_admitted": true, + "paid_histogram": [ + [ + 1, + 1323 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 19 + ] + ], + "rank_mass": 5129, + "records": 13849, + "staged": { + "11": { + "bridge_additions": 2664, + "controls_rejected": 24, + "formal_columns_checked": 1549, + "fresh_center_copies": 99, + "local_raw_H": [ + [ + 1, + 1323 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 19 + ] + ], + "payload_prefix_bits": 100, + "payload_prefix_upper": "1151821859173995790402836231168", + "reverse_fresh_center_copies": 45, + "scalar_ADDs": 120120, + "signed_lift_prefix": [ + { + "bits": 17, + "cancellation_free_signed_row_l1_upper": "65853", + "reverse": false + }, + { + "bits": 23, + "cancellation_free_signed_row_l1_upper": "7938516", + "reverse": true + } + ], + "stages": [ + { + "fresh_copies": 9, + "scalar_additions": 10920, + "signed_inverse": false, + "stage": 0 + }, + { + "fresh_copies": 9, + "scalar_additions": 10920, + "signed_inverse": true, + "stage": 1 + }, + { + "fresh_copies": 9, + "scalar_additions": 10920, + "signed_inverse": false, + "stage": 2 + }, + { + "fresh_copies": 9, + "scalar_additions": 10920, + "signed_inverse": true, + "stage": 3 + }, + { + "fresh_copies": 9, + "scalar_additions": 10920, + "signed_inverse": false, + "stage": 4 + }, + { + "fresh_copies": 9, + "scalar_additions": 10920, + "signed_inverse": true, + "stage": 5 + }, + { + "fresh_copies": 9, + "scalar_additions": 10920, + "signed_inverse": false, + "stage": 6 + }, + { + "fresh_copies": 9, + "scalar_additions": 10920, + "signed_inverse": true, + "stage": 7 + }, + { + "fresh_copies": 9, + "scalar_additions": 10920, + "signed_inverse": false, + "stage": 8 + }, + { + "fresh_copies": 9, + "scalar_additions": 10920, + "signed_inverse": true, + "stage": 9 + }, + { + "fresh_copies": 9, + "scalar_additions": 10920, + "signed_inverse": false, + "stage": 10 + } + ] + }, + "5": { + "bridge_additions": 666, + "controls_rejected": 6, + "formal_columns_checked": 883, + "fresh_center_copies": 45, + "local_raw_H": [ + [ + 1, + 1323 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 19 + ] + ], + "payload_prefix_bits": 100, + "payload_prefix_upper": "1151821859173995790402836231168", + "reverse_fresh_center_copies": 18, + "scalar_ADDs": 54600, + "signed_lift_prefix": [ + { + "bits": 17, + "cancellation_free_signed_row_l1_upper": "65853", + "reverse": false + }, + { + "bits": 23, + "cancellation_free_signed_row_l1_upper": "7938516", + "reverse": true + } + ], + "stages": [ + { + "fresh_copies": 9, + "scalar_additions": 10920, + "signed_inverse": false, + "stage": 0 + }, + { + "fresh_copies": 9, + "scalar_additions": 10920, + "signed_inverse": true, + "stage": 1 + }, + { + "fresh_copies": 9, + "scalar_additions": 10920, + "signed_inverse": false, + "stage": 2 + }, + { + "fresh_copies": 9, + "scalar_additions": 10920, + "signed_inverse": true, + "stage": 3 + }, + { + "fresh_copies": 9, + "scalar_additions": 10920, + "signed_inverse": false, + "stage": 4 + } + ] + }, + "9": { + "bridge_additions": 1998, + "controls_rejected": 18, + "formal_columns_checked": 1327, + "fresh_center_copies": 81, + "local_raw_H": [ + [ + 1, + 1323 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 19 + ] + ], + "payload_prefix_bits": 100, + "payload_prefix_upper": "1151821859173995790402836231168", + "reverse_fresh_center_copies": 36, + "scalar_ADDs": 98280, + "signed_lift_prefix": [ + { + "bits": 17, + "cancellation_free_signed_row_l1_upper": "65853", + "reverse": false + }, + { + "bits": 23, + "cancellation_free_signed_row_l1_upper": "7938516", + "reverse": true + } + ], + "stages": [ + { + "fresh_copies": 9, + "scalar_additions": 10920, + "signed_inverse": false, + "stage": 0 + }, + { + "fresh_copies": 9, + "scalar_additions": 10920, + "signed_inverse": true, + "stage": 1 + }, + { + "fresh_copies": 9, + "scalar_additions": 10920, + "signed_inverse": false, + "stage": 2 + }, + { + "fresh_copies": 9, + "scalar_additions": 10920, + "signed_inverse": true, + "stage": 3 + }, + { + "fresh_copies": 9, + "scalar_additions": 10920, + "signed_inverse": false, + "stage": 4 + }, + { + "fresh_copies": 9, + "scalar_additions": 10920, + "signed_inverse": true, + "stage": 5 + }, + { + "fresh_copies": 9, + "scalar_additions": 10920, + "signed_inverse": false, + "stage": 6 + }, + { + "fresh_copies": 9, + "scalar_additions": 10920, + "signed_inverse": true, + "stage": 7 + }, + { + "fresh_copies": 9, + "scalar_additions": 10920, + "signed_inverse": false, + "stage": 8 + } + ] + } + } + }, + "6": { + "common_frame_ADDs": 11500, + "copies": 9, + "erasures": 9, + "nine_stage_admitted": true, + "paid_histogram": [ + [ + 1, + 1323 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 19 + ] + ], + "rank_mass": 5129, + "records": 14429, + "staged": { + "11": { + "bridge_additions": 2664, + "controls_rejected": 24, + "formal_columns_checked": 1549, + "fresh_center_copies": 99, + "local_raw_H": [ + [ + 1, + 1323 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 19 + ] + ], + "payload_prefix_bits": 95, + "payload_prefix_upper": "38044005158586490435359539200", + "reverse_fresh_center_copies": 45, + "scalar_ADDs": 126500, + "signed_lift_prefix": [ + { + "bits": 15, + "cancellation_free_signed_row_l1_upper": "25717", + "reverse": false + }, + { + "bits": 23, + "cancellation_free_signed_row_l1_upper": "5911840", + "reverse": true + } + ], + "stages": [ + { + "fresh_copies": 9, + "scalar_additions": 11500, + "signed_inverse": false, + "stage": 0 + }, + { + "fresh_copies": 9, + "scalar_additions": 11500, + "signed_inverse": true, + "stage": 1 + }, + { + "fresh_copies": 9, + "scalar_additions": 11500, + "signed_inverse": false, + "stage": 2 + }, + { + "fresh_copies": 9, + "scalar_additions": 11500, + "signed_inverse": true, + "stage": 3 + }, + { + "fresh_copies": 9, + "scalar_additions": 11500, + "signed_inverse": false, + "stage": 4 + }, + { + "fresh_copies": 9, + "scalar_additions": 11500, + "signed_inverse": true, + "stage": 5 + }, + { + "fresh_copies": 9, + "scalar_additions": 11500, + "signed_inverse": false, + "stage": 6 + }, + { + "fresh_copies": 9, + "scalar_additions": 11500, + "signed_inverse": true, + "stage": 7 + }, + { + "fresh_copies": 9, + "scalar_additions": 11500, + "signed_inverse": false, + "stage": 8 + }, + { + "fresh_copies": 9, + "scalar_additions": 11500, + "signed_inverse": true, + "stage": 9 + }, + { + "fresh_copies": 9, + "scalar_additions": 11500, + "signed_inverse": false, + "stage": 10 + } + ] + }, + "5": { + "bridge_additions": 666, + "controls_rejected": 6, + "formal_columns_checked": 883, + "fresh_center_copies": 45, + "local_raw_H": [ + [ + 1, + 1323 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 19 + ] + ], + "payload_prefix_bits": 95, + "payload_prefix_upper": "38044005158586490435359539200", + "reverse_fresh_center_copies": 18, + "scalar_ADDs": 57500, + "signed_lift_prefix": [ + { + "bits": 15, + "cancellation_free_signed_row_l1_upper": "25717", + "reverse": false + }, + { + "bits": 23, + "cancellation_free_signed_row_l1_upper": "5911840", + "reverse": true + } + ], + "stages": [ + { + "fresh_copies": 9, + "scalar_additions": 11500, + "signed_inverse": false, + "stage": 0 + }, + { + "fresh_copies": 9, + "scalar_additions": 11500, + "signed_inverse": true, + "stage": 1 + }, + { + "fresh_copies": 9, + "scalar_additions": 11500, + "signed_inverse": false, + "stage": 2 + }, + { + "fresh_copies": 9, + "scalar_additions": 11500, + "signed_inverse": true, + "stage": 3 + }, + { + "fresh_copies": 9, + "scalar_additions": 11500, + "signed_inverse": false, + "stage": 4 + } + ] + }, + "9": { + "bridge_additions": 1998, + "controls_rejected": 18, + "formal_columns_checked": 1327, + "fresh_center_copies": 81, + "local_raw_H": [ + [ + 1, + 1323 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 19 + ] + ], + "payload_prefix_bits": 95, + "payload_prefix_upper": "38044005158586490435359539200", + "reverse_fresh_center_copies": 36, + "scalar_ADDs": 103500, + "signed_lift_prefix": [ + { + "bits": 15, + "cancellation_free_signed_row_l1_upper": "25717", + "reverse": false + }, + { + "bits": 23, + "cancellation_free_signed_row_l1_upper": "5911840", + "reverse": true + } + ], + "stages": [ + { + "fresh_copies": 9, + "scalar_additions": 11500, + "signed_inverse": false, + "stage": 0 + }, + { + "fresh_copies": 9, + "scalar_additions": 11500, + "signed_inverse": true, + "stage": 1 + }, + { + "fresh_copies": 9, + "scalar_additions": 11500, + "signed_inverse": false, + "stage": 2 + }, + { + "fresh_copies": 9, + "scalar_additions": 11500, + "signed_inverse": true, + "stage": 3 + }, + { + "fresh_copies": 9, + "scalar_additions": 11500, + "signed_inverse": false, + "stage": 4 + }, + { + "fresh_copies": 9, + "scalar_additions": 11500, + "signed_inverse": true, + "stage": 5 + }, + { + "fresh_copies": 9, + "scalar_additions": 11500, + "signed_inverse": false, + "stage": 6 + }, + { + "fresh_copies": 9, + "scalar_additions": 11500, + "signed_inverse": true, + "stage": 7 + }, + { + "fresh_copies": 9, + "scalar_additions": 11500, + "signed_inverse": false, + "stage": 8 + } + ] + } + } + }, + "7": { + "common_frame_ADDs": 10652, + "copies": 9, + "erasures": 9, + "nine_stage_admitted": true, + "paid_histogram": [ + [ + 1, + 1323 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 19 + ] + ], + "rank_mass": 5129, + "records": 13581, + "staged": { + "11": { + "bridge_additions": 2664, + "controls_rejected": 24, + "formal_columns_checked": 1549, + "fresh_center_copies": 99, + "local_raw_H": [ + [ + 1, + 1323 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 19 + ] + ], + "payload_prefix_bits": 92, + "payload_prefix_upper": "3452394524099512658714524672", + "reverse_fresh_center_copies": 45, + "scalar_ADDs": 117172, + "signed_lift_prefix": [ + { + "bits": 14, + "cancellation_free_signed_row_l1_upper": "15223", + "reverse": false + }, + { + "bits": 22, + "cancellation_free_signed_row_l1_upper": "3910388", + "reverse": true + } + ], + "stages": [ + { + "fresh_copies": 9, + "scalar_additions": 10652, + "signed_inverse": false, + "stage": 0 + }, + { + "fresh_copies": 9, + "scalar_additions": 10652, + "signed_inverse": true, + "stage": 1 + }, + { + "fresh_copies": 9, + "scalar_additions": 10652, + "signed_inverse": false, + "stage": 2 + }, + { + "fresh_copies": 9, + "scalar_additions": 10652, + "signed_inverse": true, + "stage": 3 + }, + { + "fresh_copies": 9, + "scalar_additions": 10652, + "signed_inverse": false, + "stage": 4 + }, + { + "fresh_copies": 9, + "scalar_additions": 10652, + "signed_inverse": true, + "stage": 5 + }, + { + "fresh_copies": 9, + "scalar_additions": 10652, + "signed_inverse": false, + "stage": 6 + }, + { + "fresh_copies": 9, + "scalar_additions": 10652, + "signed_inverse": true, + "stage": 7 + }, + { + "fresh_copies": 9, + "scalar_additions": 10652, + "signed_inverse": false, + "stage": 8 + }, + { + "fresh_copies": 9, + "scalar_additions": 10652, + "signed_inverse": true, + "stage": 9 + }, + { + "fresh_copies": 9, + "scalar_additions": 10652, + "signed_inverse": false, + "stage": 10 + } + ] + }, + "5": { + "bridge_additions": 666, + "controls_rejected": 6, + "formal_columns_checked": 883, + "fresh_center_copies": 45, + "local_raw_H": [ + [ + 1, + 1323 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 19 + ] + ], + "payload_prefix_bits": 92, + "payload_prefix_upper": "3452394524099512658714524672", + "reverse_fresh_center_copies": 18, + "scalar_ADDs": 53260, + "signed_lift_prefix": [ + { + "bits": 14, + "cancellation_free_signed_row_l1_upper": "15223", + "reverse": false + }, + { + "bits": 22, + "cancellation_free_signed_row_l1_upper": "3910388", + "reverse": true + } + ], + "stages": [ + { + "fresh_copies": 9, + "scalar_additions": 10652, + "signed_inverse": false, + "stage": 0 + }, + { + "fresh_copies": 9, + "scalar_additions": 10652, + "signed_inverse": true, + "stage": 1 + }, + { + "fresh_copies": 9, + "scalar_additions": 10652, + "signed_inverse": false, + "stage": 2 + }, + { + "fresh_copies": 9, + "scalar_additions": 10652, + "signed_inverse": true, + "stage": 3 + }, + { + "fresh_copies": 9, + "scalar_additions": 10652, + "signed_inverse": false, + "stage": 4 + } + ] + }, + "9": { + "bridge_additions": 1998, + "controls_rejected": 18, + "formal_columns_checked": 1327, + "fresh_center_copies": 81, + "local_raw_H": [ + [ + 1, + 1323 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 19 + ] + ], + "payload_prefix_bits": 92, + "payload_prefix_upper": "3452394524099512658714524672", + "reverse_fresh_center_copies": 36, + "scalar_ADDs": 95868, + "signed_lift_prefix": [ + { + "bits": 14, + "cancellation_free_signed_row_l1_upper": "15223", + "reverse": false + }, + { + "bits": 22, + "cancellation_free_signed_row_l1_upper": "3910388", + "reverse": true + } + ], + "stages": [ + { + "fresh_copies": 9, + "scalar_additions": 10652, + "signed_inverse": false, + "stage": 0 + }, + { + "fresh_copies": 9, + "scalar_additions": 10652, + "signed_inverse": true, + "stage": 1 + }, + { + "fresh_copies": 9, + "scalar_additions": 10652, + "signed_inverse": false, + "stage": 2 + }, + { + "fresh_copies": 9, + "scalar_additions": 10652, + "signed_inverse": true, + "stage": 3 + }, + { + "fresh_copies": 9, + "scalar_additions": 10652, + "signed_inverse": false, + "stage": 4 + }, + { + "fresh_copies": 9, + "scalar_additions": 10652, + "signed_inverse": true, + "stage": 5 + }, + { + "fresh_copies": 9, + "scalar_additions": 10652, + "signed_inverse": false, + "stage": 6 + }, + { + "fresh_copies": 9, + "scalar_additions": 10652, + "signed_inverse": true, + "stage": 7 + }, + { + "fresh_copies": 9, + "scalar_additions": 10652, + "signed_inverse": false, + "stage": 8 + } + ] + } + } + } + }, + "no_new_kappa": true, + "prefix": { + "K": 4, + "bridge_exponent": 18, + "local_cap": 104, + "nine_cap": 192 + }, + "prices": { + "0": { + "ADDs": 24305, + "B": 1113070, + "F": 49347, + "admitted": true, + "local_bits": 93, + "local_upper": "9528119495320518471870892800", + "nine_bits": 177, + "nine_upper": "117742596540718658156527847560864213734191286190080000" + }, + "1": { + "ADDs": 23457, + "B": 734894, + "F": 39741, + "admitted": true, + "local_bits": 91, + "local_upper": "2169430543563436414251005184", + "nine_bits": 173, + "nine_upper": "7579362586098503299337647784840281046334606906753024" + }, + "2": { + "ADDs": 24037, + "B": 628338, + "F": 16841, + "admitted": true, + "local_bits": 87, + "local_upper": "120689712358592942082836736", + "nine_bits": 166, + "nine_upper": "55354457979264516602137696273028027286537564585984" + }, + "3": { + "ADDs": 23189, + "B": 338078, + "F": 9973, + "admitted": true, + "local_bits": 83, + "local_upper": "7255899389298649606696192", + "nine_bits": 158, + "nine_upper": "337859907815899833990771378853677191902844157952" + }, + "4": { + "ADDs": 11768, + "B": 10470774, + "F": 79883, + "admitted": false, + "local_bits": 102, + "local_upper": "3576849318364915677794890906368", + "nine_bits": 193, + "nine_upper": "10250071566696342930038773719808475856064851818022690619392" + }, + "5": { + "ADDs": 10920, + "B": 7938516, + "F": 65853, + "admitted": true, + "local_bits": 100, + "local_upper": "1151821859173995790402836231168", + "nine_bits": 190, + "nine_upper": "1289362521029361945472698679437770033840632530837241331712" + }, + "6": { + "ADDs": 11500, + "B": 5911840, + "F": 25717, + "admitted": true, + "local_bits": 95, + "local_upper": "38044005158586490435359539200", + "nine_bits": 182, + "nine_upper": "3601903994416905225984905662960686510006596408442880000" + }, + "7": { + "ADDs": 10652, + "B": 3910388, + "F": 15223, + "admitted": true, + "local_bits": 92, + "local_upper": "3452394524099512658714524672", + "nine_bits": 176, + "nine_upper": "50109557170207398770972615575887331408085730734374912" + } + }, + "source_checks": { + "labels": { + "frames": 636, + "gram_det": 1, + "labels": 111, + "lattice_rank": 8, + "punctured": 9, + "root_lines": 120 + }, + "words": { + "0": { + "conclusions": { + "C_is_U_inverse": true, + "J_identity": true, + "K_equals_D": true, + "U_block_form": true + }, + "full": { + "columns": 661, + "gates": { + "A": 2075, + "B": 712, + "C": 2574, + "D": 111 + }, + "scatter_terms": 527 + }, + "hypotheses": { + "H1_no_target_feeds_z": true, + "H2_D_frame0_targets_from_helpers": true, + "H3_A_z_only_scatter_targets_B_split": true, + "H4_C_literal_reverse_at_full": true, + "H5_V_identity": true + }, + "totals": [ + { + "frame": 510, + "hyperplane_of_punctured_line": [ + 0, + 1, + 1, + 0, + -1, + 0, + 0, + 1 + ], + "rank": 7, + "register": 472 + }, + { + "frame": 511, + "hyperplane_of_punctured_line": [ + 0, + 1, + -1, + 0, + -1, + 0, + 0, + -1 + ], + "rank": 7, + "register": 473 + }, + { + "frame": 512, + "hyperplane_of_punctured_line": [ + 0, + 1, + 1, + 0, + 0, + -1, + -1, + 0 + ], + "rank": 7, + "register": 474 + }, + { + "frame": 513, + "hyperplane_of_punctured_line": [ + 0, + 1, + -1, + 0, + 0, + 1, + -1, + 0 + ], + "rank": 7, + "register": 475 + }, + { + "frame": 514, + "hyperplane_of_punctured_line": [ + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ], + "rank": 7, + "register": 476 + }, + { + "frame": 515, + "hyperplane_of_punctured_line": [ + 1, + 1, + -1, + 1, + 0, + 0, + 0, + 0 + ], + "rank": 7, + "register": 477 + }, + { + "frame": 516, + "hyperplane_of_punctured_line": [ + 1, + 0, + 0, + 1, + 1, + 0, + 0, + 1 + ], + "rank": 7, + "register": 478 + }, + { + "frame": 517, + "hyperplane_of_punctured_line": [ + 0, + 0, + 1, + 1, + 0, + 0, + 1, + -1 + ], + "rank": 7, + "register": 479 + }, + { + "frame": 518, + "hyperplane_of_punctured_line": [ + 0, + 1, + 0, + -1, + 0, + -1, + 0, + -1 + ], + "rank": 7, + "register": 480 + } + ] + }, + "1": { + "conclusions": { + "C_is_U_inverse": true, + "J_identity": true, + "K_equals_D": true, + "U_block_form": true + }, + "full": { + "columns": 661, + "gates": { + "A": 1706, + "B": 712, + "C": 2205, + "D": 111 + }, + "scatter_terms": 527 + }, + "hypotheses": { + "H1_no_target_feeds_z": true, + "H2_D_frame0_targets_from_helpers": true, + "H3_A_z_only_scatter_targets_B_split": true, + "H4_C_literal_reverse_at_full": true, + "H5_V_identity": true + }, + "totals": [ + { + "frame": 510, + "hyperplane_of_punctured_line": [ + 0, + 1, + 1, + 0, + -1, + 0, + 0, + 1 + ], + "rank": 7, + "register": 472 + }, + { + "frame": 511, + "hyperplane_of_punctured_line": [ + 0, + 1, + -1, + 0, + -1, + 0, + 0, + -1 + ], + "rank": 7, + "register": 473 + }, + { + "frame": 512, + "hyperplane_of_punctured_line": [ + 0, + 1, + 1, + 0, + 0, + -1, + -1, + 0 + ], + "rank": 7, + "register": 474 + }, + { + "frame": 513, + "hyperplane_of_punctured_line": [ + 0, + 1, + -1, + 0, + 0, + 1, + -1, + 0 + ], + "rank": 7, + "register": 475 + }, + { + "frame": 514, + "hyperplane_of_punctured_line": [ + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ], + "rank": 7, + "register": 476 + }, + { + "frame": 515, + "hyperplane_of_punctured_line": [ + 1, + 1, + -1, + 1, + 0, + 0, + 0, + 0 + ], + "rank": 7, + "register": 477 + }, + { + "frame": 516, + "hyperplane_of_punctured_line": [ + 1, + 0, + 0, + 1, + 1, + 0, + 0, + 1 + ], + "rank": 7, + "register": 478 + }, + { + "frame": 517, + "hyperplane_of_punctured_line": [ + 0, + 0, + 1, + 1, + 0, + 0, + 1, + -1 + ], + "rank": 7, + "register": 479 + }, + { + "frame": 518, + "hyperplane_of_punctured_line": [ + 0, + 1, + 0, + -1, + 0, + -1, + 0, + -1 + ], + "rank": 7, + "register": 480 + } + ] + }, + "2": { + "conclusions": { + "C_is_U_inverse": true, + "J_identity": true, + "K_equals_D": true, + "U_block_form": true + }, + "full": { + "columns": 661, + "gates": { + "A": 2075, + "B": 578, + "C": 2440, + "D": 111 + }, + "scatter_terms": 527 + }, + "hypotheses": { + "H1_no_target_feeds_z": true, + "H2_D_frame0_targets_from_helpers": true, + "H3_A_z_only_scatter_targets_B_split": true, + "H4_C_literal_reverse_at_full": true, + "H5_V_identity": true + }, + "totals": [ + { + "frame": 510, + "hyperplane_of_punctured_line": [ + 0, + 1, + 1, + 0, + -1, + 0, + 0, + 1 + ], + "rank": 7, + "register": 472 + }, + { + "frame": 511, + "hyperplane_of_punctured_line": [ + 0, + 1, + -1, + 0, + -1, + 0, + 0, + -1 + ], + "rank": 7, + "register": 473 + }, + { + "frame": 512, + "hyperplane_of_punctured_line": [ + 0, + 1, + 1, + 0, + 0, + -1, + -1, + 0 + ], + "rank": 7, + "register": 474 + }, + { + "frame": 513, + "hyperplane_of_punctured_line": [ + 0, + 1, + -1, + 0, + 0, + 1, + -1, + 0 + ], + "rank": 7, + "register": 475 + }, + { + "frame": 514, + "hyperplane_of_punctured_line": [ + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ], + "rank": 7, + "register": 476 + }, + { + "frame": 515, + "hyperplane_of_punctured_line": [ + 1, + 1, + -1, + 1, + 0, + 0, + 0, + 0 + ], + "rank": 7, + "register": 477 + }, + { + "frame": 516, + "hyperplane_of_punctured_line": [ + 1, + 0, + 0, + 1, + 1, + 0, + 0, + 1 + ], + "rank": 7, + "register": 478 + }, + { + "frame": 517, + "hyperplane_of_punctured_line": [ + 0, + 0, + 1, + 1, + 0, + 0, + 1, + -1 + ], + "rank": 7, + "register": 479 + }, + { + "frame": 518, + "hyperplane_of_punctured_line": [ + 0, + 1, + 0, + -1, + 0, + -1, + 0, + -1 + ], + "rank": 7, + "register": 480 + } + ] + }, + "3": { + "conclusions": { + "C_is_U_inverse": true, + "J_identity": true, + "K_equals_D": true, + "U_block_form": true + }, + "full": { + "columns": 661, + "gates": { + "A": 1706, + "B": 578, + "C": 2071, + "D": 111 + }, + "scatter_terms": 527 + }, + "hypotheses": { + "H1_no_target_feeds_z": true, + "H2_D_frame0_targets_from_helpers": true, + "H3_A_z_only_scatter_targets_B_split": true, + "H4_C_literal_reverse_at_full": true, + "H5_V_identity": true + }, + "totals": [ + { + "frame": 510, + "hyperplane_of_punctured_line": [ + 0, + 1, + 1, + 0, + -1, + 0, + 0, + 1 + ], + "rank": 7, + "register": 472 + }, + { + "frame": 511, + "hyperplane_of_punctured_line": [ + 0, + 1, + -1, + 0, + -1, + 0, + 0, + -1 + ], + "rank": 7, + "register": 473 + }, + { + "frame": 512, + "hyperplane_of_punctured_line": [ + 0, + 1, + 1, + 0, + 0, + -1, + -1, + 0 + ], + "rank": 7, + "register": 474 + }, + { + "frame": 513, + "hyperplane_of_punctured_line": [ + 0, + 1, + -1, + 0, + 0, + 1, + -1, + 0 + ], + "rank": 7, + "register": 475 + }, + { + "frame": 514, + "hyperplane_of_punctured_line": [ + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ], + "rank": 7, + "register": 476 + }, + { + "frame": 515, + "hyperplane_of_punctured_line": [ + 1, + 1, + -1, + 1, + 0, + 0, + 0, + 0 + ], + "rank": 7, + "register": 477 + }, + { + "frame": 516, + "hyperplane_of_punctured_line": [ + 1, + 0, + 0, + 1, + 1, + 0, + 0, + 1 + ], + "rank": 7, + "register": 478 + }, + { + "frame": 517, + "hyperplane_of_punctured_line": [ + 0, + 0, + 1, + 1, + 0, + 0, + 1, + -1 + ], + "rank": 7, + "register": 479 + }, + { + "frame": 518, + "hyperplane_of_punctured_line": [ + 0, + 1, + 0, + -1, + 0, + -1, + 0, + -1 + ], + "rank": 7, + "register": 480 + } + ] + }, + "4": { + "conclusions": { + "C_is_U_inverse": true, + "J_identity": true, + "K_equals_D": false, + "U_block_form": true + }, + "full": { + "columns": 661, + "gates": { + "A": 2075, + "B": 712, + "C": 2574, + "D": 1195 + }, + "scatter_terms": 527 + }, + "hypotheses": { + "H1_no_target_feeds_z": true, + "H2_D_frame0_targets_from_helpers": false, + "H3_A_z_only_scatter_targets_B_split": true, + "H4_C_literal_reverse_at_full": true, + "H5_V_identity": true + }, + "totals": [ + { + "frame": 510, + "hyperplane_of_punctured_line": [ + 0, + 1, + 1, + 0, + -1, + 0, + 0, + 1 + ], + "rank": 7, + "register": 472 + }, + { + "frame": 511, + "hyperplane_of_punctured_line": [ + 0, + 1, + -1, + 0, + -1, + 0, + 0, + -1 + ], + "rank": 7, + "register": 473 + }, + { + "frame": 512, + "hyperplane_of_punctured_line": [ + 0, + 1, + 1, + 0, + 0, + -1, + -1, + 0 + ], + "rank": 7, + "register": 474 + }, + { + "frame": 513, + "hyperplane_of_punctured_line": [ + 0, + 1, + -1, + 0, + 0, + 1, + -1, + 0 + ], + "rank": 7, + "register": 475 + }, + { + "frame": 514, + "hyperplane_of_punctured_line": [ + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ], + "rank": 7, + "register": 476 + }, + { + "frame": 515, + "hyperplane_of_punctured_line": [ + 1, + 1, + -1, + 1, + 0, + 0, + 0, + 0 + ], + "rank": 7, + "register": 477 + }, + { + "frame": 516, + "hyperplane_of_punctured_line": [ + 1, + 0, + 0, + 1, + 1, + 0, + 0, + 1 + ], + "rank": 7, + "register": 478 + }, + { + "frame": 517, + "hyperplane_of_punctured_line": [ + 0, + 0, + 1, + 1, + 0, + 0, + 1, + -1 + ], + "rank": 7, + "register": 479 + }, + { + "frame": 518, + "hyperplane_of_punctured_line": [ + 0, + 1, + 0, + -1, + 0, + -1, + 0, + -1 + ], + "rank": 7, + "register": 480 + } + ] + }, + "5": { + "conclusions": { + "C_is_U_inverse": true, + "J_identity": true, + "K_equals_D": false, + "U_block_form": true + }, + "full": { + "columns": 661, + "gates": { + "A": 1706, + "B": 712, + "C": 2205, + "D": 1195 + }, + "scatter_terms": 527 + }, + "hypotheses": { + "H1_no_target_feeds_z": true, + "H2_D_frame0_targets_from_helpers": false, + "H3_A_z_only_scatter_targets_B_split": true, + "H4_C_literal_reverse_at_full": true, + "H5_V_identity": true + }, + "totals": [ + { + "frame": 510, + "hyperplane_of_punctured_line": [ + 0, + 1, + 1, + 0, + -1, + 0, + 0, + 1 + ], + "rank": 7, + "register": 472 + }, + { + "frame": 511, + "hyperplane_of_punctured_line": [ + 0, + 1, + -1, + 0, + -1, + 0, + 0, + -1 + ], + "rank": 7, + "register": 473 + }, + { + "frame": 512, + "hyperplane_of_punctured_line": [ + 0, + 1, + 1, + 0, + 0, + -1, + -1, + 0 + ], + "rank": 7, + "register": 474 + }, + { + "frame": 513, + "hyperplane_of_punctured_line": [ + 0, + 1, + -1, + 0, + 0, + 1, + -1, + 0 + ], + "rank": 7, + "register": 475 + }, + { + "frame": 514, + "hyperplane_of_punctured_line": [ + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ], + "rank": 7, + "register": 476 + }, + { + "frame": 515, + "hyperplane_of_punctured_line": [ + 1, + 1, + -1, + 1, + 0, + 0, + 0, + 0 + ], + "rank": 7, + "register": 477 + }, + { + "frame": 516, + "hyperplane_of_punctured_line": [ + 1, + 0, + 0, + 1, + 1, + 0, + 0, + 1 + ], + "rank": 7, + "register": 478 + }, + { + "frame": 517, + "hyperplane_of_punctured_line": [ + 0, + 0, + 1, + 1, + 0, + 0, + 1, + -1 + ], + "rank": 7, + "register": 479 + }, + { + "frame": 518, + "hyperplane_of_punctured_line": [ + 0, + 1, + 0, + -1, + 0, + -1, + 0, + -1 + ], + "rank": 7, + "register": 480 + } + ] + }, + "6": { + "conclusions": { + "C_is_U_inverse": true, + "J_identity": true, + "K_equals_D": false, + "U_block_form": true + }, + "full": { + "columns": 661, + "gates": { + "A": 2075, + "B": 578, + "C": 2440, + "D": 1195 + }, + "scatter_terms": 527 + }, + "hypotheses": { + "H1_no_target_feeds_z": true, + "H2_D_frame0_targets_from_helpers": false, + "H3_A_z_only_scatter_targets_B_split": true, + "H4_C_literal_reverse_at_full": true, + "H5_V_identity": true + }, + "totals": [ + { + "frame": 510, + "hyperplane_of_punctured_line": [ + 0, + 1, + 1, + 0, + -1, + 0, + 0, + 1 + ], + "rank": 7, + "register": 472 + }, + { + "frame": 511, + "hyperplane_of_punctured_line": [ + 0, + 1, + -1, + 0, + -1, + 0, + 0, + -1 + ], + "rank": 7, + "register": 473 + }, + { + "frame": 512, + "hyperplane_of_punctured_line": [ + 0, + 1, + 1, + 0, + 0, + -1, + -1, + 0 + ], + "rank": 7, + "register": 474 + }, + { + "frame": 513, + "hyperplane_of_punctured_line": [ + 0, + 1, + -1, + 0, + 0, + 1, + -1, + 0 + ], + "rank": 7, + "register": 475 + }, + { + "frame": 514, + "hyperplane_of_punctured_line": [ + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ], + "rank": 7, + "register": 476 + }, + { + "frame": 515, + "hyperplane_of_punctured_line": [ + 1, + 1, + -1, + 1, + 0, + 0, + 0, + 0 + ], + "rank": 7, + "register": 477 + }, + { + "frame": 516, + "hyperplane_of_punctured_line": [ + 1, + 0, + 0, + 1, + 1, + 0, + 0, + 1 + ], + "rank": 7, + "register": 478 + }, + { + "frame": 517, + "hyperplane_of_punctured_line": [ + 0, + 0, + 1, + 1, + 0, + 0, + 1, + -1 + ], + "rank": 7, + "register": 479 + }, + { + "frame": 518, + "hyperplane_of_punctured_line": [ + 0, + 1, + 0, + -1, + 0, + -1, + 0, + -1 + ], + "rank": 7, + "register": 480 + } + ] + }, + "7": { + "conclusions": { + "C_is_U_inverse": true, + "J_identity": true, + "K_equals_D": false, + "U_block_form": true + }, + "full": { + "columns": 661, + "gates": { + "A": 1706, + "B": 578, + "C": 2071, + "D": 1195 + }, + "scatter_terms": 527 + }, + "hypotheses": { + "H1_no_target_feeds_z": true, + "H2_D_frame0_targets_from_helpers": false, + "H3_A_z_only_scatter_targets_B_split": true, + "H4_C_literal_reverse_at_full": true, + "H5_V_identity": true + }, + "totals": [ + { + "frame": 510, + "hyperplane_of_punctured_line": [ + 0, + 1, + 1, + 0, + -1, + 0, + 0, + 1 + ], + "rank": 7, + "register": 472 + }, + { + "frame": 511, + "hyperplane_of_punctured_line": [ + 0, + 1, + -1, + 0, + -1, + 0, + 0, + -1 + ], + "rank": 7, + "register": 473 + }, + { + "frame": 512, + "hyperplane_of_punctured_line": [ + 0, + 1, + 1, + 0, + 0, + -1, + -1, + 0 + ], + "rank": 7, + "register": 474 + }, + { + "frame": 513, + "hyperplane_of_punctured_line": [ + 0, + 1, + -1, + 0, + 0, + 1, + -1, + 0 + ], + "rank": 7, + "register": 475 + }, + { + "frame": 514, + "hyperplane_of_punctured_line": [ + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ], + "rank": 7, + "register": 476 + }, + { + "frame": 515, + "hyperplane_of_punctured_line": [ + 1, + 1, + -1, + 1, + 0, + 0, + 0, + 0 + ], + "rank": 7, + "register": 477 + }, + { + "frame": 516, + "hyperplane_of_punctured_line": [ + 1, + 0, + 0, + 1, + 1, + 0, + 0, + 1 + ], + "rank": 7, + "register": 478 + }, + { + "frame": 517, + "hyperplane_of_punctured_line": [ + 0, + 0, + 1, + 1, + 0, + 0, + 1, + -1 + ], + "rank": 7, + "register": 479 + }, + { + "frame": 518, + "hyperplane_of_punctured_line": [ + 0, + 1, + 0, + -1, + 0, + -1, + 0, + -1 + ], + "rank": 7, + "register": 480 + } + ] + } + } + }, + "sources": { + "base_commit": "ba82555c64e1879e4b7decce28186f208fcb8262", + "files": { + "research/e8-bit-carrier-skeleton/LICENSE": { + "commit": "ba82555c64e1879e4b7decce28186f208fcb8262", + "git_blob": "261eeb9e9f8b2b4b0d119366dda99c6fd7d35c64", + "path": "research/e8-bit-carrier-skeleton/LICENSE", + "sha256": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4" + }, + "research/e8-bit-carrier-skeleton/NOTICE.md": { + "commit": "ba82555c64e1879e4b7decce28186f208fcb8262", + "git_blob": "5a0ecdcd2c7fad0488740a1da0f633b73b56a809", + "path": "research/e8-bit-carrier-skeleton/NOTICE.md", + "sha256": "5f4b7fcbf99f572be28b6da612ce775363908cdfc7810f7aca167be01c86e49a" + }, + "research/e8-bit-carrier-skeleton/code/bit/checkers/columns_k.cpp": { + "commit": "ba82555c64e1879e4b7decce28186f208fcb8262", + "git_blob": "42bb232fbec4de703e70cc13dc2f39a3b43a3a01", + "path": "research/e8-bit-carrier-skeleton/code/bit/checkers/columns_k.cpp", + "sha256": "1c344d18fcd494eeca93e259f10cafae7705780e6592f6dcb35b34752dab9bc2" + }, + "research/e8-bit-carrier-skeleton/code/bit/checkers/json.hpp": { + "commit": "ba82555c64e1879e4b7decce28186f208fcb8262", + "git_blob": "82d69f7c5d044c9887c96b90c97f5639083ecd14", + "path": "research/e8-bit-carrier-skeleton/code/bit/checkers/json.hpp", + "sha256": "aaf127c04cb31c406e5b04a63f1ae89369fccde6d8fa7cdda1ed4f32dfc5de63" + }, + "research/e8-bit-carrier-skeleton/code/bit/checkers/legality_h.cpp": { + "commit": "ba82555c64e1879e4b7decce28186f208fcb8262", + "git_blob": "cb1233c7e96b1aa8bbf4d2e4165d75ab0dca64b9", + "path": "research/e8-bit-carrier-skeleton/code/bit/checkers/legality_h.cpp", + "sha256": "6c1ef2b24e57781d6951c172a1024fc4300e6fd392c9d6672079a7806ab663b3" + }, + "research/e8-bit-carrier-skeleton/code/bit/export_records.py": { + "commit": "ba82555c64e1879e4b7decce28186f208fcb8262", + "git_blob": "3632d370486a02f5456f7643ced03f8c925b2350", + "path": "research/e8-bit-carrier-skeleton/code/bit/export_records.py", + "sha256": "8a5999601f917dbb492bb9ae9a344611f18cc7cedc53dc3c76496a369e530eb3" + }, + "research/e8-bit-carrier-skeleton/code/bit/regression/stage_cohort.py": { + "commit": "ba82555c64e1879e4b7decce28186f208fcb8262", + "git_blob": "f6d7afe3e623208c4207b6a683a1e3e49249e31c", + "path": "research/e8-bit-carrier-skeleton/code/bit/regression/stage_cohort.py", + "sha256": "6c288f6f234b528c1a7c0a4adfb724e91e0fe6b18c8dffad96af3f973de1829a" + }, + "research/e8-bit-carrier-skeleton/portable-include/bits/stdc++.h": { + "commit": "ba82555c64e1879e4b7decce28186f208fcb8262", + "git_blob": "fc5664e929d9a81d9b4926bee049a93330be86ec", + "path": "research/e8-bit-carrier-skeleton/portable-include/bits/stdc++.h", + "sha256": "420094be2af295eed03a983dd66debbbe9cfb78d8252859f4498a615a0074b99" + }, + "research/e8-bit-p111-tuned/LICENSE": { + "commit": "ba82555c64e1879e4b7decce28186f208fcb8262", + "git_blob": "261eeb9e9f8b2b4b0d119366dda99c6fd7d35c64", + "path": "research/e8-bit-p111-tuned/LICENSE", + "sha256": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4" + }, + "research/e8-bit-p111-tuned/NOTICE.md": { + "commit": "ba82555c64e1879e4b7decce28186f208fcb8262", + "git_blob": "b589500c8ae02a0a4c476e61dfdd1b79dcbf7cad", + "path": "research/e8-bit-p111-tuned/NOTICE.md", + "sha256": "5b88eb2b7de76aa2a3288ee3c7a08d18a5eadfa82f5e7a99e207d232aed71221" + }, + "research/e8-bit-p111-tuned/code/xcheck_p.py": { + "commit": "ba82555c64e1879e4b7decce28186f208fcb8262", + "git_blob": "184f5dcf94a486cc7db91ca4db5865916bf26009", + "path": "research/e8-bit-p111-tuned/code/xcheck_p.py", + "sha256": "af3decc877e27c00001cf56f50c6c09566e8e101297ab34c7860aed96a06d80e" + }, + "research/e8-bit-p111-tuned/tune/EXPECTED.json": { + "commit": "ba82555c64e1879e4b7decce28186f208fcb8262", + "git_blob": "e293ddc557742637f9f679f083a1a282d87b1b13", + "path": "research/e8-bit-p111-tuned/tune/EXPECTED.json", + "sha256": "b9f0e5ca038abe837b0007c8fe006f366a6f02009244ac57705a8a200e2301f4" + }, + "research/e8-bit-p111-tuned/tune/bitE8mut-p111-tuned.json.gz": { + "commit": "ba82555c64e1879e4b7decce28186f208fcb8262", + "git_blob": "85a4499bf9e4911a705d50567a2c2ef6cf23739a", + "path": "research/e8-bit-p111-tuned/tune/bitE8mut-p111-tuned.json.gz", + "sha256": "e3e301e62bc2b41dbf1ceac0acf3d35824ebeab1848c5a2142d4577b109da52f" + }, + "research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/vendor/e8-r715-eleven-stage-whole/code/global_k.py": { + "commit": "ba82555c64e1879e4b7decce28186f208fcb8262", + "git_blob": "3df12bd632f1fdba825ced57110a1fee82eb2857", + "path": "research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/vendor/e8-r715-eleven-stage-whole/code/global_k.py", + "sha256": "6368196a393ac25bb2918880e4c4bd31ed733b762c27b6873ab391cbc0c5c3c8" + }, + "research/r439-global-prefix-admission/NOTICE.md": { + "commit": "ba82555c64e1879e4b7decce28186f208fcb8262", + "git_blob": "d5f423eaec5b1302fae81cafa5d1364566e6ce67", + "path": "research/r439-global-prefix-admission/NOTICE.md", + "sha256": "f562b006f82e0bd0a92fca97da82f0ee2127ef0646f85d3dc6a2527c1c683ad2" + }, + "research/r439-global-prefix-admission/README.md": { + "commit": "ba82555c64e1879e4b7decce28186f208fcb8262", + "git_blob": "8c81b03691e6a5f87edda390a29ee5de0e0e8cea", + "path": "research/r439-global-prefix-admission/README.md", + "sha256": "9a41a2ec720317c6c293b731f6afcd85b5770b3c7a07e3153c267fc03386ba11" + }, + "research/r439-global-prefix-admission/candidate.json.gz": { + "commit": "ba82555c64e1879e4b7decce28186f208fcb8262", + "git_blob": "d409686d75c095126cf719c40df7ef2af48a7c45", + "path": "research/r439-global-prefix-admission/candidate.json.gz", + "sha256": "fffc0484a3572c76bf3bb5284d4a40eeb723c4b3acf3da5e2d9e113ac1747ec6" + } + }, + "selected_word_pr589": "a5afc8c6169ea61ba7c51dfd3cade02cc7b13b46", + "source_pr1062": "cd016e5dcd5ba28dafa3f3b4eeef003a38e6a11b", + "source_pr980": "ba1cf68bef0c97dfb120add04304e2de0db6f29c", + "vendor_files": { + "BASE-SELECTION.json": { + "commit": "ba82555c64e1879e4b7decce28186f208fcb8262", + "git_blob": "f451ced6626a1f03aba6915ce23a136b01ebe51d", + "path": "certificates/selected-result.json", + "sha256": "207d1f49f113c585024b9d3c17eadbb8b1be17c1321e3d190aabe2f18ce1c5b7" + }, + "vendor/pr1062/README.md": { + "commit": "cd016e5dcd5ba28dafa3f3b4eeef003a38e6a11b", + "git_blob": "188175a52bb2a3ad65c701b3bd218ae3fc0bdfde", + "path": "research/r439-bsection-stars-seed01/README.md", + "sha256": "3a32ecbf886d6605eb7441c63ca934c6aab0942d0e7e570c3dd0795d1cf00336" + }, + "vendor/pr1062/SOURCES.json": { + "commit": "cd016e5dcd5ba28dafa3f3b4eeef003a38e6a11b", + "git_blob": "8c02baa7fcc9e04abb8f7fc81299c708b3dfeb42", + "path": "research/r439-bsection-stars-seed01/SOURCES.json", + "sha256": "779a4d0d1ca0d578026d0f4ce0f8f16466cc6e866b7d80193ef9e7eb2a2d6cfe" + }, + "vendor/pr1062/candidate.json.gz": { + "commit": "cd016e5dcd5ba28dafa3f3b4eeef003a38e6a11b", + "git_blob": "9a17b4920334878d6c949191f6931bd97126fe3c", + "path": "research/r439-bsection-stars-seed01/candidate.json.gz", + "sha256": "b452d2c2b0b2a546d1105b1da9769aa78e5c54d6f00e97b30c77e3f54ce445ee" + }, + "vendor/pr1062/candidate_search.json": { + "commit": "cd016e5dcd5ba28dafa3f3b4eeef003a38e6a11b", + "git_blob": "97f5d9f0d3a153feb2b38a39daf826d959364e8f", + "path": "research/r439-bsection-stars-seed01/candidate_search.json", + "sha256": "488741d5ad803372b622495972d754ab2998a8afb0b84ef755edc337b20d0af0" + } + } + }, + "status": "PASS_R439_ABC_STAR_COMPOSITION" +} diff --git a/research/r439-abc-zrewrite-seed16/vendor/pr1122/LICENSE b/research/r439-abc-zrewrite-seed16/vendor/pr1122/LICENSE new file mode 100644 index 0000000000..261eeb9e9f --- /dev/null +++ b/research/r439-abc-zrewrite-seed16/vendor/pr1122/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/research/r439-abc-zrewrite-seed16/vendor/pr1122/NOTICE.md b/research/r439-abc-zrewrite-seed16/vendor/pr1122/NOTICE.md new file mode 100644 index 0000000000..3c5825191e --- /dev/null +++ b/research/r439-abc-zrewrite-seed16/vendor/pr1122/NOTICE.md @@ -0,0 +1,41 @@ +# Attribution and license + +New composition, eight-corner comparison, packaging and checks: **Gareth +Davidson (@bitplane)**, with substantial **OpenAI Codex assistance** in +mathematics, implementation, verification and writing. Apache-2.0; see LICENSE. +No subagents or independent human reviewers were used for this contribution. + +- PR980, PR952 and PR904 by Gareth Davidson supply the A program. Ross + Richardson's PR936 is an incorporated predecessor in that program. +- **Sagar Thakrar (@thakrarsagar), PR1062**, prepared with Anthropic Claude + assistance, supplies the exact pending B/star-D composition at + `cd016e5dcd5ba28dafa3f3b4eeef003a38e6a11b`. The four files under vendor/pr1062 + are unchanged copies, including the original README attribution. Its B + programs are **Aaron Wang (@navinor), PR1015**, with **Ross Richardson, + PR923** for frame 520. +- The restored-helper-star mechanism and seed-19 scan are **Sricharan + Vagvala (@theon199), PR967**, extending **Gareth Davidson PR926** and the + frozen target basis of **PR915**. Mechanism predecessors include **Scott + Woolsey Biggart PR733**, **Greer Guthrie PR694**, **Mikhail R. Gadelha PR686**, + **commdata2338 PR794**, and **Sagar Thakrar PR753** for earlier helper stars + in R420. This pass neither reruns nor claims authorship of that search. +- The selected finite bit word is **DreamingOfClouds PR589**, on + **eumemic PR555/543**. The pinned owner checker carries eumemic's original + Apache-2.0 and Anthropic Claude disclosure. +- The native exporter, cohort adapter and checker lineage credits **Dylan + Crow**, **DaysSky**, **Zhihao Chen**, **Sagar Thakrar**, and the original + PR249/266/315/496/527 contributors recorded in the pinned source notices. + The native driver here adapts the PR926/967/980 harnesses, themselves + following Sagar Thakrar's r420-decoder-sharing harness. +- Strict decoded-payload comparison follows the repository reproducibility + guidance and **Maxime Fleury**, following **Antoine Olivier's** replay + findings. Immutable source containers retain their original byte hashes. +- Adjacent work **woklerx PR1040/1047/1067**, **Sagar Thakrar PR1045**, and + **PR1016/1048** is acknowledged; its distinct D edits, signed envelopes and + paid-profile conclusions are not imported as new savings here. + +The accepted context at the recorded base is **Jeremy Kothe PR1042**, on the +mutable-leaver/slot chain including **Rohan Arun PR987** and **Hao Yan PR858's +T16 controller**. That context is not the construction changed by this pass. +All retained work keeps its original license and attribution; no priority or +unrestricted best-circuit claim is made. diff --git a/research/r439-abc-zrewrite-seed16/vendor/pr1122/PROOF.md b/research/r439-abc-zrewrite-seed16/vendor/pr1122/PROOF.md new file mode 100644 index 0000000000..7b141d83ff --- /dev/null +++ b/research/r439-abc-zrewrite-seed16/vendor/pr1122/PROOF.md @@ -0,0 +1,119 @@ +# Finite composition and complete accounting + +Write the local circuit, in execution order, as D, A, scatter, B, C on 111 +source registers, 111 target registers and 439 arbitrary dirty helpers. COPY +uses a separate temporary, initially empty; every copied center remains +unchanged until its ERASE. The source and helper registers must be restored, +and target i must finish as its initial value plus source i over F2. + +## Composition argument + +The verifier propagates sets of formal input columns through each A, B and D +phase, separately and in both directions. Each chosen phase has exactly the +same F2 linear map as its PR589 phase on all 661 independent input registers. +Equality on this basis proves equality for all inputs by linearity. This +includes arbitrary dirt and target contents; zero-initialized helper tests +would not suffice. No equality of their positive integer lifts is assumed. + +A and the z-destination operations of B write only source/helper registers +from source/helper registers. Here z denotes those registers. The new C is +the literal reverse of those elementary transvections, each at the full +frame, so it restores the same z map after scatter and B. Scatter and target +reads are frozen. Consequently each of the eight compositions has the same +full F2 endpoint. The implementation also checks that endpoint directly, +forward and backward, using explicit copied-center lifetimes. Independent +owning and native checkers provide further evidence for the stated finite +construction. + +Algebraic equality alone would not establish physical frame legality. +The owning checker checks every nested climb and endpoint. Native records +then compare every register's entire ordered MOVE sequence with PR589, +including rank increments, and compare every COPY/ERASE record. This checks +the physical use of all existing sources and helpers, rather than inferring +unchanged cost from an equal helper count. + +## Exact local bill + +For the full composition the ADD counts are: + +| Phase | ADDs | +|---|---:| +| D | 5,548 | +| A | 1,706 | +| Scatter | 527 | +| B | 800 | +| C | 2,071 | +| Total | **10,652** | + +D consists of 236 helper preparation ADDs, 306 target preparation ADDs, +4,464 injection ADDs, 306 reversed target ADDs, and 236 reversed helper ADDs. +The copied PR1062 certificate records 162 components, including 74 two-leaf +stars. None of these operations is free. Their realized boundary is checked +directly rather than trusting the historical search score. + +Relative to PR1062 only A and its part of C change: 2,130 becomes 1,706, +and 2,495 becomes 2,071. Thus the complete saving is 2 × 424 = 848. Relative +to PR589 the total saving is 24,305 − 10,652 = 13,653. The 12 B ADDs and 12 +paired C ADDs already included in PR980's 872 headline saving cannot be +added a second time: the PR1062 B circuit replaces those same blocks. + +The common-frame source access of each ADD, all preparation and restoration, +and all scatter ADDs are included in the literal stream. Frame transitions +and nine rank-seven COPY/ERASE pairs retain their original invoices. Paid +rank mass is 5,129. No helper, source projection, recursive child or other +record is added. In particular this is a change to the finite scalar bill, +not an improvement of the recursive moment. + +For 5, 9 and 11 stages the scalar word costs are respectively 53,260, +95,868 and 117,172 ADDs. The corresponding bridge additions are 666, 1,998 +and 2,664. Totals are therefore **53,926, 97,866 and 119,836**, with **45, +81 and 99** fresh copied-center events. The reverse stages account for 18, +36 and 45 of those events; they are not additional to the stated totals. +The unchanged native checker verifies these counts and all physical input +columns at each stage count. These are finite-stage invoices, not a complete +whole-call hosted-supplier invoice. + +## Precision interaction + +For a forward ADD, a cancellation-free upper bound adds the two operand +bounds. The signed inverse negates the scalar ADD coefficient, but absolute +value propagation still adds the same bounds in reverse order. COPY takes +the original's bound; ERASE closes the temporary. Starting each ordinary +register at bound one yields complete positive prefixes F and B. This +triangle-inequality bound applies to arbitrary inputs of absolute value at +most one; scaling gives the corresponding general input bound. + +For the full composition the explicit stream and separate macro interpreter +agree on F = 15,223 and B = 3,910,388. The native exporter/checker agrees too. +The exact inherited expressions are: + +``` +local = 2^6 F^3 B^2 + = 3452394524099512658714524672 < 2^104 +nine = 2^18 F^5 B^4 + = 50109557170207398770972615575887331408085730734374912 < 2^192 +``` + +The nine-stage formula and 18 bridge exponent are bound to the pinned +global_k.py syntax; the 192-bit production charge is checked in the pinned +PR589 receipt. The native local expression is compared as an exact integer, +not just by its bit length. These are conservative positive envelopes, not +claims of tight signed prefix norms. + +The isolated PR1062 D gives 193 nine-stage bits and fails admission. The +same D with A gives 190, with B gives 182, and with both gives 176. This is +an explicit example where equal phase endpoints and smaller scalar count +do not suffice for precision admission. Every corner is fully repriced. +No unchanged per-phase bound or monotonicity assumption is used. + +## Interface boundary + +PR1062 D includes helper and target basis changes. It therefore fails the +original syntactic H2 shape test and the literal K extractor, exactly as +PR915/926/967 do. The source predicates are preserved and their false values +are required for the four affected corners. Semantic D equality is a distinct +finite result. H1/H3/H4/H5 and the other decomposed conclusions pass. This +package does not promote semantic equality to acceptance by an unmodified +whole-supplier interface, change the selected certificate, or claim a new +kappa. The remaining adoption and inherited theorem obligations are listed +in README.md. diff --git a/research/r439-abc-zrewrite-seed16/vendor/pr1122/README.md b/research/r439-abc-zrewrite-seed16/vendor/pr1122/README.md new file mode 100644 index 0000000000..bd48329115 --- /dev/null +++ b/research/r439-abc-zrewrite-seed16/vendor/pr1122/README.md @@ -0,0 +1,108 @@ +# Compose R439 preparation, B blocks and restored helper stars + +**Finite bit-circuit construction; no new kappa.** Combining PR980's A +preparation with the B blocks and compensation D of PR1062 reduces the complete +word from **11,500 to 10,652 ADDs**, saving **848**. Relative to the selected +PR589 bit word, this is 13,653 fewer ADDs. Every restoration is included. + +The full composition also reduces the conservative positive bounds from +F = 25,717, B = 5,911,840 to **F = 15,223, B = 3,910,388**. Its local and +nine-stage expressions use **92 and 176 bits**, within the inherited 104/192 +ceilings. This package supplies the eight fixed subset comparisons and fresh +native checks, including the native replay that PR1062 explicitly left open. + +| A from PR980 | B from PR1062 | D from PR1062 | Complete ADDs | F | B | Local / nine-stage bits | Admitted | +|---|---|---|---:|---:|---:|---:|---| +| — | — | — | 24,305 | 49,347 | 1,113,070 | 93 / 177 | yes | +| yes | — | — | 23,457 | 39,741 | 734,894 | 91 / 173 | yes | +| — | yes | — | 24,037 | 16,841 | 628,338 | 87 / 166 | yes | +| yes | yes | — | 23,189 | 9,973 | 338,078 | 83 / 158 | yes | +| — | — | yes | 11,768 | 79,883 | 10,470,774 | 102 / **193** | **no** | +| yes | — | yes | 10,920 | 65,853 | 7,938,516 | 100 / 190 | yes | +| — | yes | yes | 11,500 | 25,717 | 5,911,840 | 95 / 182 | yes | +| yes | yes | yes | **10,652** | **15,223** | **3,910,388** | **92 / 176** | **yes** | + +All eight words implement the same finite F2 map on arbitrary source, target +and helper contents. The D-only corner fails the nine-stage precision cap. +Either changed preparation phase makes that D admissible. Full-word precision +is measured for each corner; it is not inferred by adding savings or bounds. + +PR980's headline saving is 872, but 24 of those ADDs belong to its inherited +B changes and cleanup. PR1062 already replaces those blocks. Only its **424 +A ADDs plus 424 cleanup ADDs** are additional here; a 10,628-ADD claim would +double-count those 24. A rejection control covers that mistaken invoice. + +## Reproduce + +From the repository root, with Python 3.10+, C++17 and Boost headers: + +```sh +python3 -I -B research/r439-abc-star-composition/verify.py +python3 -I -B research/r439-abc-star-composition/test_package.py -v +``` + +The first command regenerates the full composition certificate, compares the +entire decoded candidate, checks all eight corners and compiles/runs the +unchanged native programs. Its expected final line is: + +```text +PASS_R439_ABC_STAR_COMPOSITION: 8 corners; ADDs 11500 -> 10652; 661 dirty columns; 5/9/11 stages; 384 bridge controls; 92/176 bits; no new kappa +``` + +Set `BOOST_INCLUDE` for a nonstandard include directory and `CXX` for a +different compiler. `--output NEW_DIRECTORY --receipt NEW_FILE` retains logs +and a deterministic receipt; existing destinations are refused. The default +verification compares every receipt field with EXPECTED.json. `-O` is +supported; the original exporters are deliberately invoked with assertions +enabled. No network or third-party Python module is needed. + +The checks independently interpret literal ADD/COPY/ERASE instructions with +sets of all **661** input columns in both directions; compare A, B and D +phase maps; verify E8 geometry and the owning interface; and check ordered +MOVE paths for every register. Native 5/9/11-stage executions cover +**883/1,327/1,549** physical input columns per word and reject **384** omitted +bridge controls across the eight words. The paid histogram, rank mass +**5,129**, nine rank-seven copies, all 439 helpers and all frame paths agree +with PR589. Seventeen additional semantic/accounting controls and ten package +tests cover the failure modes described in VALIDATION.md. + +## Sources, scope and credit + +Exact base: **ba82555c64e1879e4b7decce28186f208fcb8262**, selecting the +conditional PR1042 exponent **1672188119205421 / 10^18**, with PR589 still +the bit supplier. BASE-SELECTION.json preserves that context. SOURCES.json +binds 22 retained files to Git blobs and SHA-256 hashes. PR980 is incorporated +at the base; pending PR1062 is frozen at +**cd016e5dcd5ba28dafa3f3b4eeef003a38e6a11b**. Its four vendored files are +unchanged. The candidate's complete canonical decoded SHA-256 is +`7bbaed96041297cd38e89ff48eb055750cfab36609b9fdbeafcec1b2758c1254`. + +Assignment seed **13** fixes the diagnostic subset order +`5, 4, 7, 6, 1, 0, 3, 2`. The domain is exactly eight frozen combinations; +there is no new synthesis, star search, tie-order restart or optimum claim. +PR1062's source search is not rerun: its resulting D is checked directly on +every formal input. The four words containing that D inherit **false +syntactic H2 and literal K_equals_D**; the unchanged checker reports them. +Their semantic D endpoint is separately verified. The other four retain all +original H1–H5 conclusions. No predicate is weakened. + +The paid recursive profile is unchanged, so no larger kappa follows. Supplier +adoption still requires accepting the semantic D interface, exporting and +auditing the full hosted supplier, binding the complete finite and precision +invoices, and rerunning outer assembly. All-size/compiler, common-label and +mutable-source realization, hosting, precision/tape, exact recovery and +analytic obligations remain. A finite stage replay is not a formal proof of +the multiplication theorem or a practical runtime benchmark. + +Credit **Gareth Davidson (@bitplane), PR904/915/926/952/980**; **Ross Richardson, +PR936 and PR923**; **Aaron Wang (@navinor), PR1015**; **Sricharan Vagvala +(@theon199), PR967**; and **Sagar Thakrar (@thakrarsagar), PR1062**, whose +composition and guard-relaxed helper search supply B and D. The bit lineage +is **DreamingOfClouds PR589 on eumemic PR555/543**, with the retained native +checker contributors. PR1040/1047's later D retunes, PR1067's signed bound +and PR1045's quartet class are credited adjacent work and are not composed. +See NOTICE.md for fuller mechanism and verification attribution. + +Prepared by **Gareth Davidson (@bitplane)** with substantial **OpenAI Codex +assistance** in implementation, mathematics, checking and writing. New +material is Apache-2.0. No independent human review is claimed. diff --git a/research/r439-abc-zrewrite-seed16/vendor/pr1122/SOURCES.json b/research/r439-abc-zrewrite-seed16/vendor/pr1122/SOURCES.json new file mode 100644 index 0000000000..f8437d4ea4 --- /dev/null +++ b/research/r439-abc-zrewrite-seed16/vendor/pr1122/SOURCES.json @@ -0,0 +1,142 @@ +{ + "base_commit": "ba82555c64e1879e4b7decce28186f208fcb8262", + "files": { + "research/e8-bit-carrier-skeleton/LICENSE": { + "commit": "ba82555c64e1879e4b7decce28186f208fcb8262", + "git_blob": "261eeb9e9f8b2b4b0d119366dda99c6fd7d35c64", + "path": "research/e8-bit-carrier-skeleton/LICENSE", + "sha256": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4" + }, + "research/e8-bit-carrier-skeleton/NOTICE.md": { + "commit": "ba82555c64e1879e4b7decce28186f208fcb8262", + "git_blob": "5a0ecdcd2c7fad0488740a1da0f633b73b56a809", + "path": "research/e8-bit-carrier-skeleton/NOTICE.md", + "sha256": "5f4b7fcbf99f572be28b6da612ce775363908cdfc7810f7aca167be01c86e49a" + }, + "research/e8-bit-carrier-skeleton/code/bit/checkers/columns_k.cpp": { + "commit": "ba82555c64e1879e4b7decce28186f208fcb8262", + "git_blob": "42bb232fbec4de703e70cc13dc2f39a3b43a3a01", + "path": "research/e8-bit-carrier-skeleton/code/bit/checkers/columns_k.cpp", + "sha256": "1c344d18fcd494eeca93e259f10cafae7705780e6592f6dcb35b34752dab9bc2" + }, + "research/e8-bit-carrier-skeleton/code/bit/checkers/json.hpp": { + "commit": "ba82555c64e1879e4b7decce28186f208fcb8262", + "git_blob": "82d69f7c5d044c9887c96b90c97f5639083ecd14", + "path": "research/e8-bit-carrier-skeleton/code/bit/checkers/json.hpp", + "sha256": "aaf127c04cb31c406e5b04a63f1ae89369fccde6d8fa7cdda1ed4f32dfc5de63" + }, + "research/e8-bit-carrier-skeleton/code/bit/checkers/legality_h.cpp": { + "commit": "ba82555c64e1879e4b7decce28186f208fcb8262", + "git_blob": "cb1233c7e96b1aa8bbf4d2e4165d75ab0dca64b9", + "path": "research/e8-bit-carrier-skeleton/code/bit/checkers/legality_h.cpp", + "sha256": "6c1ef2b24e57781d6951c172a1024fc4300e6fd392c9d6672079a7806ab663b3" + }, + "research/e8-bit-carrier-skeleton/code/bit/export_records.py": { + "commit": "ba82555c64e1879e4b7decce28186f208fcb8262", + "git_blob": "3632d370486a02f5456f7643ced03f8c925b2350", + "path": "research/e8-bit-carrier-skeleton/code/bit/export_records.py", + "sha256": "8a5999601f917dbb492bb9ae9a344611f18cc7cedc53dc3c76496a369e530eb3" + }, + "research/e8-bit-carrier-skeleton/code/bit/regression/stage_cohort.py": { + "commit": "ba82555c64e1879e4b7decce28186f208fcb8262", + "git_blob": "f6d7afe3e623208c4207b6a683a1e3e49249e31c", + "path": "research/e8-bit-carrier-skeleton/code/bit/regression/stage_cohort.py", + "sha256": "6c288f6f234b528c1a7c0a4adfb724e91e0fe6b18c8dffad96af3f973de1829a" + }, + "research/e8-bit-carrier-skeleton/portable-include/bits/stdc++.h": { + "commit": "ba82555c64e1879e4b7decce28186f208fcb8262", + "git_blob": "fc5664e929d9a81d9b4926bee049a93330be86ec", + "path": "research/e8-bit-carrier-skeleton/portable-include/bits/stdc++.h", + "sha256": "420094be2af295eed03a983dd66debbbe9cfb78d8252859f4498a615a0074b99" + }, + "research/e8-bit-p111-tuned/LICENSE": { + "commit": "ba82555c64e1879e4b7decce28186f208fcb8262", + "git_blob": "261eeb9e9f8b2b4b0d119366dda99c6fd7d35c64", + "path": "research/e8-bit-p111-tuned/LICENSE", + "sha256": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4" + }, + "research/e8-bit-p111-tuned/NOTICE.md": { + "commit": "ba82555c64e1879e4b7decce28186f208fcb8262", + "git_blob": "b589500c8ae02a0a4c476e61dfdd1b79dcbf7cad", + "path": "research/e8-bit-p111-tuned/NOTICE.md", + "sha256": "5b88eb2b7de76aa2a3288ee3c7a08d18a5eadfa82f5e7a99e207d232aed71221" + }, + "research/e8-bit-p111-tuned/code/xcheck_p.py": { + "commit": "ba82555c64e1879e4b7decce28186f208fcb8262", + "git_blob": "184f5dcf94a486cc7db91ca4db5865916bf26009", + "path": "research/e8-bit-p111-tuned/code/xcheck_p.py", + "sha256": "af3decc877e27c00001cf56f50c6c09566e8e101297ab34c7860aed96a06d80e" + }, + "research/e8-bit-p111-tuned/tune/EXPECTED.json": { + "commit": "ba82555c64e1879e4b7decce28186f208fcb8262", + "git_blob": "e293ddc557742637f9f679f083a1a282d87b1b13", + "path": "research/e8-bit-p111-tuned/tune/EXPECTED.json", + "sha256": "b9f0e5ca038abe837b0007c8fe006f366a6f02009244ac57705a8a200e2301f4" + }, + "research/e8-bit-p111-tuned/tune/bitE8mut-p111-tuned.json.gz": { + "commit": "ba82555c64e1879e4b7decce28186f208fcb8262", + "git_blob": "85a4499bf9e4911a705d50567a2c2ef6cf23739a", + "path": "research/e8-bit-p111-tuned/tune/bitE8mut-p111-tuned.json.gz", + "sha256": "e3e301e62bc2b41dbf1ceac0acf3d35824ebeab1848c5a2142d4577b109da52f" + }, + "research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/vendor/e8-r715-eleven-stage-whole/code/global_k.py": { + "commit": "ba82555c64e1879e4b7decce28186f208fcb8262", + "git_blob": "3df12bd632f1fdba825ced57110a1fee82eb2857", + "path": "research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/vendor/e8-r715-eleven-stage-whole/code/global_k.py", + "sha256": "6368196a393ac25bb2918880e4c4bd31ed733b762c27b6873ab391cbc0c5c3c8" + }, + "research/r439-global-prefix-admission/NOTICE.md": { + "commit": "ba82555c64e1879e4b7decce28186f208fcb8262", + "git_blob": "d5f423eaec5b1302fae81cafa5d1364566e6ce67", + "path": "research/r439-global-prefix-admission/NOTICE.md", + "sha256": "f562b006f82e0bd0a92fca97da82f0ee2127ef0646f85d3dc6a2527c1c683ad2" + }, + "research/r439-global-prefix-admission/README.md": { + "commit": "ba82555c64e1879e4b7decce28186f208fcb8262", + "git_blob": "8c81b03691e6a5f87edda390a29ee5de0e0e8cea", + "path": "research/r439-global-prefix-admission/README.md", + "sha256": "9a41a2ec720317c6c293b731f6afcd85b5770b3c7a07e3153c267fc03386ba11" + }, + "research/r439-global-prefix-admission/candidate.json.gz": { + "commit": "ba82555c64e1879e4b7decce28186f208fcb8262", + "git_blob": "d409686d75c095126cf719c40df7ef2af48a7c45", + "path": "research/r439-global-prefix-admission/candidate.json.gz", + "sha256": "fffc0484a3572c76bf3bb5284d4a40eeb723c4b3acf3da5e2d9e113ac1747ec6" + } + }, + "selected_word_pr589": "a5afc8c6169ea61ba7c51dfd3cade02cc7b13b46", + "source_pr1062": "cd016e5dcd5ba28dafa3f3b4eeef003a38e6a11b", + "source_pr980": "ba1cf68bef0c97dfb120add04304e2de0db6f29c", + "vendor_files": { + "BASE-SELECTION.json": { + "commit": "ba82555c64e1879e4b7decce28186f208fcb8262", + "git_blob": "f451ced6626a1f03aba6915ce23a136b01ebe51d", + "path": "certificates/selected-result.json", + "sha256": "207d1f49f113c585024b9d3c17eadbb8b1be17c1321e3d190aabe2f18ce1c5b7" + }, + "vendor/pr1062/README.md": { + "commit": "cd016e5dcd5ba28dafa3f3b4eeef003a38e6a11b", + "git_blob": "188175a52bb2a3ad65c701b3bd218ae3fc0bdfde", + "path": "research/r439-bsection-stars-seed01/README.md", + "sha256": "3a32ecbf886d6605eb7441c63ca934c6aab0942d0e7e570c3dd0795d1cf00336" + }, + "vendor/pr1062/SOURCES.json": { + "commit": "cd016e5dcd5ba28dafa3f3b4eeef003a38e6a11b", + "git_blob": "8c02baa7fcc9e04abb8f7fc81299c708b3dfeb42", + "path": "research/r439-bsection-stars-seed01/SOURCES.json", + "sha256": "779a4d0d1ca0d578026d0f4ce0f8f16466cc6e866b7d80193ef9e7eb2a2d6cfe" + }, + "vendor/pr1062/candidate.json.gz": { + "commit": "cd016e5dcd5ba28dafa3f3b4eeef003a38e6a11b", + "git_blob": "9a17b4920334878d6c949191f6931bd97126fe3c", + "path": "research/r439-bsection-stars-seed01/candidate.json.gz", + "sha256": "b452d2c2b0b2a546d1105b1da9769aa78e5c54d6f00e97b30c77e3f54ce445ee" + }, + "vendor/pr1062/candidate_search.json": { + "commit": "cd016e5dcd5ba28dafa3f3b4eeef003a38e6a11b", + "git_blob": "97f5d9f0d3a153feb2b38a39daf826d959364e8f", + "path": "research/r439-bsection-stars-seed01/candidate_search.json", + "sha256": "488741d5ad803372b622495972d754ab2998a8afb0b84ef755edc337b20d0af0" + } + } +} diff --git a/research/r439-abc-zrewrite-seed16/vendor/pr1122/candidate.json.gz b/research/r439-abc-zrewrite-seed16/vendor/pr1122/candidate.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..0ab597fefd68bfefecc85d631b172d174bdaeb70 GIT binary patch literal 36211 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 DMB0b{ literal 0 HcmV?d00001 diff --git a/research/r439-abc-zrewrite-seed16/vendor/pr1122/common.py b/research/r439-abc-zrewrite-seed16/vendor/pr1122/common.py new file mode 100644 index 0000000000..9d5c64e2a1 --- /dev/null +++ b/research/r439-abc-zrewrite-seed16/vendor/pr1122/common.py @@ -0,0 +1,78 @@ +"""Strict artifact I/O, adapted from Gareth Davidson's PR980; Apache-2.0.""" +import gzip +import hashlib +import importlib.util +import json +from pathlib import Path + +HERE = Path(__file__).resolve().parent +ROOT = HERE.parents[1] +BASE = "ba82555c64e1879e4b7decce28186f208fcb8262" +WORD = "research/e8-bit-p111-tuned/tune/bitE8mut-p111-tuned.json.gz" +A_WORD = "research/r439-global-prefix-admission/candidate.json.gz" +BD_WORD = "vendor/pr1062/candidate.json.gz" +CHECKER = "research/e8-bit-p111-tuned/code/xcheck_p.py" +HUB = "research/e8-bit-carrier-skeleton" + + +def need(condition, message): + if not condition: + raise ValueError(message) + + +def canonical(value): + return json.dumps(value, sort_keys=True, separators=(",", ":"), allow_nan=False).encode() + + +def digest(value): + return hashlib.sha256(canonical(value)).hexdigest() + + +def pairs(items): + result = {} + for key, value in items: + need(key not in result, "duplicate JSON key: " + key) + result[key] = value + return result + + +def invalid(value): + raise ValueError("nonfinite JSON: " + value) + + +def load(path): + path = Path(path) + raw = path.read_bytes() + if path.suffix == ".gz": + raw = gzip.decompress(raw) + return json.loads(raw, object_pairs_hook=pairs, parse_constant=invalid) + + +def write(path, value): + path = Path(path) + with path.open("xb") as stream: + if path.suffix == ".gz": + stream.write(gzip.compress(canonical(value), mtime=0)) + else: + stream.write((json.dumps(value, indent=2, sort_keys=True, allow_nan=False) + "\n").encode()) + + +def same(a, b, message): + need(canonical(a) == canonical(b), message) + + +def pins(root): + manifest = load(HERE / "SOURCES.json") + need(manifest["base_commit"] == BASE, "base context") + for scope, directory in (("files", Path(root)), ("vendor_files", HERE)): + for name, row in manifest[scope].items(): + need(hashlib.sha256((directory / name).read_bytes()).hexdigest() == row["sha256"], + "source hash mismatch: " + name) + return manifest + + +def module(name, path): + spec = importlib.util.spec_from_file_location(name, path) + result = importlib.util.module_from_spec(spec) + spec.loader.exec_module(result) + return result diff --git a/research/r439-abc-zrewrite-seed16/vendor/pr1122/native.py b/research/r439-abc-zrewrite-seed16/vendor/pr1122/native.py new file mode 100644 index 0000000000..0c4ab69e1a --- /dev/null +++ b/research/r439-abc-zrewrite-seed16/vendor/pr1122/native.py @@ -0,0 +1,112 @@ +#!/usr/bin/env python3 +"""Eight words through unchanged native legality and 5/9/11-stage checkers. + +Adapted from the PR980/926 harness by Gareth Davidson, following Sagar Thakrar's +PR837 harness, and from Sricharan Vagvala's PR967 harness. Apache-2.0. +Gareth Davidson (@bitplane), with substantial OpenAI Codex assistance. +""" +import os +from pathlib import Path +import runpy +import shlex +import struct +import subprocess +import sys + +C = runpy.run_path(str(Path(__file__).with_name("common.py"))) +need, same = C["need"], C["same"] + + +def run(root, words_dir, prices, output): + C["pins"](root) + output = Path(output).resolve() + output.mkdir(parents=True, exist_ok=False) + hub = Path(root).resolve() / C["HUB"] + checker = hub / "code/bit/checkers" + compiler = shlex.split(os.environ.get("CXX", "c++")) + includes = ["-I" + str(hub / "portable-include"), "-I" + str(checker), + "-I" + os.environ.get("BOOST_INCLUDE", "/usr/include")] + commands = [] + + def execute(args, log): + args = [str(x) for x in args] + commands.append(args) + with log.open("x") as stream: + subprocess.run(args, stdout=stream, stderr=subprocess.STDOUT, check=True) + + flags = compiler + ["-O2", "-std=c++17", "-DHDIM=8", "-DNCOPY=9"] + includes + execute(flags + ["-o", output / "legality", checker / "legality_h.cpp"], output / "compile-legality.log") + for k in (2, 4, 5): + execute(flags + ["-DVPORTS=111", "-DRHELP=439", "-DKPAIRS=" + str(k), + "-o", output / ("columns-" + str(k)), checker / "columns_k.cpp"], + output / ("compile-columns-" + str(k) + ".log")) + # Original exporters contain assertions: keep them enabled even under -O. + python = [sys.executable, "-I", "-B"] + results, nonadd = {}, {} + for label in map(str, range(8)): + print("native composition mask", label, flush=True) + folder = output / label + folder.mkdir() + records, cin, cout = (folder / name for name in ("records", "cin", "cout")) + execute(python + [hub / "code/bit/export_records.py", Path(words_dir) / (label + ".json.gz"), records], + folder / "export.log") + execute(python + [hub / "code/bit/regression/stage_cohort.py", records, records, cin, cout], + folder / "stage.log") + execute([output / "legality", cin, cout, cout / "legality.json"], folder / "legality.log") + legality = C["load"](cout / "legality.json") + need(legality["status"] == "PASS_INDEPENDENT_COHORT_LEGALITY_SOURCE_OWNERS_AND_LIFECYCLE", + "native legality") + need(legality["copies"] == legality["erasures"] == 9, "native COPY lifetime") + record_rows = list(struct.iter_unpack("<6i", (records / "249-records.bin").read_bytes())) + movements = {} + for row in record_rows: + if row[0] == 0: + movements.setdefault(str(row[1]), []).append(list(row)) + nonadd[label] = {"moves": movements, + "copy_erase": [list(x) for x in record_rows if x[0] in (2, 3)]} + stages = {} + for k in (2, 4, 5): + name = "columns-" + str(k) + execute([output / name, cout / "COHORT249-RECORDS.bin", cout / (name + ".json")], + folder / (name + ".log")) + col = C["load"](cout / (name + ".json")) + expected = ("PASS_NEW_COHORT249_ALL_FIVE_STAGE_FORMAL_COLUMNS_AND_PREFIX_BILL" if k == 2 + else "PASS_NEW_COHORT249_ALL_BRIDGED_STAGE_FORMAL_COLUMNS_AND_PREFIX_BILL") + need(col["status"] == expected, "native columns") + need(col["formal_columns_checked"] == 2 * k * 111 + 439, "native column coverage") + need(len(col["stages"]) == 2 * k + 1, "native stage coverage") + need(col["bridge_additions"] == 6 * (k - 1) * 111, "native bridge bill") + need(col["fresh_center_copies"] == 9 * (2 * k + 1) + and col["reverse_fresh_center_copies"] == 9 * k, + "native staged COPY bill") + addition_key = "five_stage_additions" if k == 2 else "stage_additions" + need(col[addition_key] == (2 * k + 1) * prices[label]["ADDs"], "all scalar stages billed") + need(col["local_scalar_additions"] == legality["common_frame_ADDs"] == prices[label]["ADDs"], + "native ADD agreement") + need(col["payload_prefix_bits"] == prices[label]["local_bits"] <= 104, "native local precision") + need(int(col["payload_prefix_upper"]) == int(prices[label]["local_upper"]), "native exact local bill") + same([int(x["cancellation_free_signed_row_l1_upper"]) for x in col["signed_lift_prefix"]], + [prices[label]["F"], prices[label]["B"]], "native literal prefix agreement") + controls = col["negative_controls"] + need(len(controls) == 6 * (k - 1) and all(x["rejected"] is True for x in controls), + "native omitted-bridge controls") + stages[str(2 * k + 1)] = {key: col[key] for key in ( + "formal_columns_checked", "bridge_additions", "fresh_center_copies", "reverse_fresh_center_copies", + "signed_lift_prefix", "payload_prefix_bits", "payload_prefix_upper", "local_raw_H", "stages")} + stages[str(2 * k + 1)].update(scalar_ADDs=col[addition_key], controls_rejected=len(controls)) + results[label] = {key: legality[key] for key in ( + "records", "common_frame_ADDs", "rank_mass", "paid_histogram", "copies", "erasures")} + results[label]["staged"] = stages + results[label]["nine_stage_admitted"] = prices[label]["admitted"] + baseline = results["0"] + for label, after in results.items(): + same(nonadd["0"], nonadd[label], "per-register frame path or copy lifetime changed") + need(baseline["records"] - after["records"] == 24305 - prices[label]["ADDs"], "unexpected record delta") + for key in ("rank_mass", "paid_histogram", "copies", "erasures"): + same(baseline[key], after[key], "paid resource changed: " + key) + for stage in ("5", "9", "11"): + same(baseline["staged"][stage]["local_raw_H"], after["staged"][stage]["local_raw_H"], + "local raw ranks changed") + C["write"](output / "commands.json", commands) + C["write"](output / "native-report.json", results) + return results diff --git a/research/r439-abc-zrewrite-seed16/vendor/pr1122/verify.py b/research/r439-abc-zrewrite-seed16/vendor/pr1122/verify.py new file mode 100644 index 0000000000..3ebe448d01 --- /dev/null +++ b/research/r439-abc-zrewrite-seed16/vendor/pr1122/verify.py @@ -0,0 +1,305 @@ +#!/usr/bin/env python3 +"""Independent literal replay and complete billing of an eight-word composition. + +Set-valued streams and source-binding patterns follow PR926/967/980. +Gareth Davidson (@bitplane), with substantial OpenAI Codex assistance. +Apache-2.0. No assertion is needed for rejection in this verifier. +""" +import argparse +import ast +import copy +from pathlib import Path +import runpy +import tempfile + +C = runpy.run_path(str(Path(__file__).with_name("common.py"))) +need, same, load = C["need"], C["same"], C["load"] + + +def instructions(word): + n = 2 * word["v"] + word["R"] + out = [] + for phase in ("D", "A", "scatter", "B", "C"): + if phase == "scatter": + for j, center in enumerate(word["ret"]): + out.append(("copy", n, center)) + for i, uses in enumerate(word["scatter"]): + if j in uses: + out.append(("add", word["v"] + i, n)) + out.append(("erase", n, center)) + else: + for frame, d, donors in word[phase]: + need(type(frame) is int and 0 <= frame < len(word["frames"]), "frame domain") + need(type(d) is int and 0 <= d < n, "destination domain") + need(type(donors) is list and len(set(donors)) == len(donors), "distinct donors") + need(all(type(s) is int and 0 <= s < n and s != d for s in donors), "donor domain") + out.extend(("add", d, s) for s in donors) + return out + + +def execute(word, reverse=False, stream=None): + """Sets of formal columns plus integer positive bounds; COPY work starts empty.""" + n = 2 * word["v"] + word["R"] + symbolic = [{i} for i in range(n)] + [set()] + positive = [1] * n + [0] + stream = instructions(word) if stream is None else stream + opened, peak, adds, copies, erasures = False, 1, 0, 0, 0 + for kind, d, s in reversed(stream) if reverse else stream: + if reverse and kind != "add": + kind = "erase" if kind == "copy" else "copy" + if kind == "add": + need(d < n, "private COPY target cannot be ADD destination") + need(s != n or opened, "private COPY read outside lifetime") + symbolic[d].symmetric_difference_update(symbolic[s]) + positive[d] += positive[s] + adds += 1 + elif kind == "copy": + need(d == n and not opened and not symbolic[n] and positive[n] == 0, "COPY destination not empty") + symbolic[n] = set(symbolic[s]) + positive[n] = positive[s] + opened = True + copies += 1 + elif kind == "erase": + need(d == n and opened and symbolic[n] == symbolic[s], "ERASE original changed or missing COPY") + symbolic[n] = set() + positive[n] = 0 + opened = False + erasures += 1 + else: + raise ValueError("unknown instruction") + peak = max(peak, positive[d]) + need(not opened and not symbolic[n] and positive[n] == 0, "unclosed private COPY") + expected = [{i} for i in range(n)] + for i in range(word["v"]): + expected[word["v"] + i].add(i) + need(symbolic[:-1] == expected, "dirty full-word boundary") + need(copies == erasures == 9, "complete COPY bill") + return dict(ADDs=adds, bound=peak, copies=copies, erasures=erasures, + columns=n, instructions=len(stream)) + + +def phase_rows(word, phase, reverse=False): + n = 2 * word["v"] + word["R"] + rows = [{i} for i in range(n)] + for _, d, donors in reversed(word[phase]) if reverse else word[phase]: + for s in donors: + rows[d].symmetric_difference_update(rows[s]) + return rows + + +def literal_cleanup(word): + fulls = [i for i, f in enumerate(word["frames"]) if sorted(f) == list(range(word["v"]))] + need(len(fulls) == 1, "one full frame") + reverse = [] + for phase in ("B", "A"): + for gate in word[phase][::-1]: + if not word["v"] <= gate[1] < 2 * word["v"]: + reverse.append([fulls[0], gate[1], list(gate[2])]) + same(reverse, word["C"], "literal cleanup") + + +def literal_price(word): + forward, reverse = execute(word), execute(word, True) + same(forward["ADDs"], reverse["ADDs"], "reverse ADD bill") + f, b = forward["bound"], reverse["bound"] + local, nine = 2**6 * f * f * f * b * b, 2**18 * f**5 * b**4 + return dict(ADDs=forward["ADDs"], F=f, B=b, local_upper=str(local), nine_upper=str(nine), + local_bits=local.bit_length(), nine_bits=nine.bit_length(), + admitted=local < 2**104 and nine < 2**192) + + +def require_admission(price): + need(int(price["local_upper"]) < 2**104, "local precision cap") + need(int(price["nine_upper"]) < 2**192, "nine-stage precision cap") + + +def recipe(baseline, source_a, source_bd, word, mask): + need(type(mask) is int and 0 <= mask <= 7, "mask domain") + for key in baseline: + if key not in ("A", "B", "C", "D"): + same(word[key], baseline[key], "unchanged field " + key) + same(source_a[key], baseline[key], "PR980 immutable geometry " + key) + same(source_bd[key], baseline[key], "PR1062 immutable geometry " + key) + same(sorted(word), sorted(baseline), "complete payload keys") + for phase, flag, source in (("A", 1, source_a), ("B", 2, source_bd), ("D", 4, source_bd)): + same(word[phase], (source if mask & flag else baseline)[phase], "exact phase splice " + phase) + for reverse in (False, True): + need(phase_rows(word, phase, reverse) == phase_rows(baseline, phase, reverse), + "phase semantic boundary " + phase) + literal_cleanup(word) + + +def source_formula(root): + name = ("research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/" + "vendor/e8-r715-eleven-stage-whole/code/global_k.py") + syntax = ast.parse((root / name).read_text()) + formulas = [node.value for node in ast.walk(syntax) if isinstance(node, ast.Assign) + and any(isinstance(t, ast.Name) and t.id == "prefix" for t in node.targets)] + formula = ast.parse("(1 << nb) * cf ** (K + 1) * cb ** K", mode="eval").body + need(len(formulas) == 1 and ast.dump(formulas[0]) == ast.dump(formula), "nine-stage formula binding") + bridge = ast.parse("nb == 6 * (K - 1)", mode="eval").body + need(any(isinstance(node, ast.Compare) and ast.dump(node) == ast.dump(bridge) + for node in ast.walk(syntax)), "bridge exponent binding") + need(load(root / "research/e8-bit-p111-tuned/tune/EXPECTED.json")["nine"]["bit"] + ["charged_prefix_bits"] == 192, "retained nine-stage charge") + return dict(K=4, bridge_exponent=18, local_cap=104, nine_cap=192) + + +def owner_checks(root, words): + owner = C["module"]("composition_owner", root / C["CHECKER"]) + original = owner.Word(words["0"]) + labels = original.labels() + result = {} + for label, word in words.items(): + # recipe() has checked every geometry field; only scalar sections differ. + current = copy.copy(original) + current.w = word + full = current.full() + totals = current.totals() + hypotheses, conclusions, _ = current.interface() + d_changed = bool(int(label) & 4) + for key, value in hypotheses.items(): + need(value is (not d_changed if key == "H2_D_frame0_targets_from_helpers" else True), + "unchanged owning hypothesis " + key) + for key, value in conclusions.items(): + need(value is (not d_changed if key == "K_equals_D" else True), "owning conclusion " + key) + need(full["columns"] == 661 and [x["rank"] for x in totals] == [7] * 9, "owning coverage") + need(all(x["hyperplane_of_punctured_line"] for x in totals), "punctured total geometry") + result[label] = dict(hypotheses=hypotheses, conclusions=conclusions, + full=full, totals=totals) + return original, dict(labels=labels, words=result) + + +def controls(words, prices, owner): + rejected = [] + + def reject(label, action, reason): + try: + action() + except ValueError as exc: + need(reason in str(exc), "wrong rejection for " + label + ": " + str(exc)) + rejected.append(label) + else: + raise ValueError("negative control accepted: " + label) + + candidate = words["7"] + for phase, index, label in (("A", 0, "omitted A gate"), ("B", 0, "omitted B gate"), + ("D", 0, "omitted helper preparation"), ("D", -1, "omitted helper restoration")): + bad = copy.deepcopy(candidate) + del bad[phase][index] + reject(label, lambda w=bad: execute(w), "boundary") + stale = copy.deepcopy(candidate) + stale["C"] = copy.deepcopy(words["0"]["C"]) + execute(stale) # Same F2 inverse, but no longer the declared literal cleanup. + reject("semantically valid stale cleanup", lambda: literal_cleanup(stale), "literal cleanup") + altered = instructions(candidate) + at = next(i for i, x in enumerate(altered) if x[0] == "copy") + missing_copy = altered[:at] + altered[at + 1:] + reject("omitted private COPY", lambda: execute(candidate, stream=missing_copy), "outside lifetime") + er = next(i for i, x in enumerate(altered) if x[0] == "erase") + missing_erase = altered[:er] + altered[er + 1:] + reject("omitted private ERASE", lambda: execute(candidate, stream=missing_erase), "not empty") + wrong_original = list(altered) + kind, d, s = wrong_original[er] + wrong_original[er] = kind, d, s + 1 + reject("wrong ERASE original", lambda: execute(candidate, stream=wrong_original), "original changed") + bad = copy.deepcopy(candidate) + bad["A"][0][0] = True + reject("boolean frame id", lambda: execute(bad), "frame domain") + bad = copy.deepcopy(candidate) + bad["A"][0][2] = [bad["A"][0][1]] + reject("self ADD", lambda: execute(bad), "donor domain") + for field, value, label in (("ADDs", 10628, "double-counted inherited B saving"), + ("F", 1, "stale forward bound"), ("nine_upper", "1", "underpriced bridges")): + bad_price = dict(prices["7"], **{field: value}) + reject(label, lambda p=bad_price: same(p, literal_price(candidate), "literal price"), "literal price") + reject("D-only semantic success exceeds precision", lambda: require_admission(prices["4"]), "nine-stage") + for key, cap in (("local_upper", 104), ("nine_upper", 192)): + bad_price = dict(prices["7"], **{key: str(1 << cap)}) + reject("strict equality at " + key, lambda p=bad_price: require_admission(p), "precision cap") + wrong_frame = copy.deepcopy(candidate) + wrong_frame["A"][0][0] = 0 + current = copy.copy(owner) + current.w = wrong_frame + try: + current.full() + except Exception as exc: + need(type(exc).__name__ == "Reject" and "climb not nested" in str(exc), "wrong frame rejection") + rejected.append("non-nested physical frame") + else: + raise ValueError("physical frame control accepted") + return dict(rejected=rejected, positive_controls=["stale cleanup still F2 exact", + "D-only corner remains F2 exact while admission fails"]) + + +def artifacts(root): + root = Path(root).resolve() + manifest = C["pins"](root) + builder = C["module"]("composition_builder", C["HERE"] / "build.py") + words, certificate = builder.build(root) + same(certificate, load(C["HERE"] / "CERTIFICATE.json"), "complete certificate regeneration") + same(words["7"], load(C["HERE"] / "candidate.json.gz"), "complete decoded candidate regeneration") + return manifest, words, certificate + + +def run(root, output): + root, output = Path(root).resolve(), Path(output).resolve() + manifest, words, certificate = artifacts(root) + output.mkdir(parents=True, exist_ok=False) + (output / "regenerated").mkdir() + for name, word in words.items(): + C["write"](output / "regenerated" / (name + ".json.gz"), word) + C["write"](output / "regenerated" / "CERTIFICATE.json", certificate) + baseline, source_a, source_bd = (load(root / C["WORD"]), load(root / C["A_WORD"]), + load(C["HERE"] / C["BD_WORD"])) + same(words["0"], baseline, "baseline identity") + same(words["6"], source_bd, "PR1062 identity") + need((baseline["v"], baseline["R"]) == (111, 439), "fixed dimensions") + print("eight compositions: phase maps, arbitrary dirty columns, explicit COPY/ERASE and full bounds", flush=True) + prices = {} + for label, word in words.items(): + recipe(baseline, source_a, source_bd, word, int(label)) + price = literal_price(word) + recorded = certificate["corners"][label] + same(price, {k: recorded[k] for k in price}, "macro/literal complete price") + prices[label] = price + need([int(k) for k, v in prices.items() if not v["admitted"]] == [4], "exact failed corner") + need(prices["7"]["ADDs"] == 10652 and prices["6"]["ADDs"] - prices["7"]["ADDs"] == 848, + "composition complete saving") + prefix = source_formula(root) + print("owning E8/frame checker, semantic D exception and rejection controls", flush=True) + owner, checked = owner_checks(root, words) + negatives = controls(words, prices, owner) + native = C["module"]("composition_native", C["HERE"] / "native.py").run( + root, output / "regenerated", prices, output / "native") + return dict(status="PASS_R439_ABC_STAR_COMPOSITION", sources=manifest, + certificate_sha256=C["digest"](certificate), prices=prices, + prefix=prefix, source_checks=checked, native=native, controls=negatives, + exact_phase_maps=dict(phases=3, directions=2, columns=661, words=8), + literal_streams=dict(directions=2, columns=661, words=8, + instructions=sum(len(instructions(w)) for w in words.values())), + no_new_kappa=True) + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--source-root", type=Path, default=C["ROOT"]) + parser.add_argument("--output", type=Path) + parser.add_argument("--receipt", type=Path) + parser.add_argument("--write-expected", action="store_true", + help="initial artifact production only; refuses to replace EXPECTED.json") + args = parser.parse_args() + with tempfile.TemporaryDirectory(prefix="r439-composition-") as temporary: + receipt = run(args.source_root, args.output or Path(temporary) / "run") + if args.write_expected: + C["write"](C["HERE"] / "EXPECTED.json", receipt) + else: + same(receipt, load(C["HERE"] / "EXPECTED.json"), "complete deterministic receipt") + if args.receipt: + C["write"](args.receipt, receipt) + print("PASS_R439_ABC_STAR_COMPOSITION: 8 corners; ADDs 11500 -> 10652; " + "661 dirty columns; 5/9/11 stages; 384 bridge controls; 92/176 bits; no new kappa") + + +if __name__ == "__main__": + main() diff --git a/research/r439-abc-zrewrite-seed16/vendor/pr1127/CERTIFICATE.json b/research/r439-abc-zrewrite-seed16/vendor/pr1127/CERTIFICATE.json new file mode 100644 index 0000000000..c8833d9621 --- /dev/null +++ b/research/r439-abc-zrewrite-seed16/vendor/pr1127/CERTIFICATE.json @@ -0,0 +1,63 @@ +{ + "COPYs": 9, + "ERASEs": 9, + "MOVEs": 2911, + "base_ADDs": 24305, + "base_canonical_sha256": "5642fd0e35a1acc11acff8d0c08350c1617e95f310d4d35ad63a651f9eeeba0b", + "base_records": 27234, + "base_word": "research/e8-bit-p111-tuned/tune/bitE8mut-p111-tuned.json.gz", + "candidate_ADDs": 23495, + "candidate_canonical_sha256": "8aedb3be192baae884c80a2ff3d15d9f32ae8c8055dff170bebca2f87e75539a", + "candidate_records": 26424, + "columns_checked": 661, + "controls_rejected": 6, + "exporter_cross_check": true, + "frame_paths_identical": true, + "n_moves": 405, + "paid_profile": { + "1": 602, + "10": 227, + "101": 8, + "110": 1, + "13": 1, + "14": 8, + "15": 55, + "16": 156, + "17": 155, + "18": 119, + "2": 245, + "25": 4, + "26": 24, + "27": 18, + "28": 25, + "29": 53, + "30": 79, + "31": 122, + "32": 68, + "33": 13, + "49": 3, + "50": 15, + "51": 42, + "52": 93, + "53": 118, + "54": 58, + "55": 52, + "56": 35, + "57": 32, + "58": 23, + "59": 9, + "60": 2, + "7": 12, + "8": 101, + "81": 15, + "82": 39, + "83": 50, + "84": 42, + "85": 30, + "86": 4, + "9": 162 + }, + "paid_profile_identical": true, + "saved_ADDs": 810, + "z_product_identical": true +} \ No newline at end of file diff --git a/research/r439-abc-zrewrite-seed16/vendor/pr1127/NOTICE.md b/research/r439-abc-zrewrite-seed16/vendor/pr1127/NOTICE.md new file mode 100644 index 0000000000..02a28bfc2f --- /dev/null +++ b/research/r439-abc-zrewrite-seed16/vendor/pr1127/NOTICE.md @@ -0,0 +1,38 @@ +# NOTICE + +Research package `research/r439-z3to2-seed13`, prepared with help from +opencode. Apache-2.0 (repository license). + +Predecessor work this result builds on and does not supersede: + +- The word itself: DreamingOfClouds' PR589 (tuned punctured R439 word) on + eumemic's PR555, with the PR543/PR545/PR510 lineage. The base word file is + used unchanged; only gate lists A/B and the rebuilt cleanup C differ in the + candidate. +- The transvection (Steinberg 3->2) relation and its use as a word-rewrite + mechanism: Dugongue's PR541/PR548 move families on the R480 word and PR589's + own tuner (`research/e8-bit-p111-tuned/tune/tune.py`). That tuner optimizes + the paid moment to a fixed point and records that its Steinberg step has + "nothing to apply that lowers the moment"; it does not optimize ADD count, and + equal-moment rewrites are outside its greedy objective. This package's delta + is the ADD-count objective with exact register-level commutation windows and + the unchanged-profile/unchanged-paths acceptance gate. +- The record-format contract and exporter: `export_records.py` (Dylan Crow) in + `research/e8-bit-carrier-skeleton/code/bit/`, used as a subprocess cross-check + only. +- Prior finite block ADD-count results on the same word (PR873, PR973, PR986, + PR1001, PR1002, PR989, PR980, the r439-bsection-survey and + r439-frame524-seed13 packages, and concurrent PR1015 and follow-ups) work the + phase-B blocks with donor/factor/multi-write programs. This package changes + none of those blocks and is not additive to them by construction: each result + is measured against the same committed base word. +- Concurrent PR1122 (bitplane; same track and a coincidentally identical + assignment seed, different agent) composes the frozen PR980/PR1062 changes on + the semantic-D word lineage. Its object, word and mechanism are different and + its numbers are not additive to this package's; these 3->2 rewrites are + candidates for that lineage as future work. +- The duplicate-pair (paired-transvection) census here is the bit-word + counterpart of the program-identity audits in those packages; it is reported + as coverage, not as a separate claim. + +Substantial AI assistance is disclosed as required by CONTRIBUTING.md. diff --git a/research/r439-abc-zrewrite-seed16/vendor/pr1127/search.py b/research/r439-abc-zrewrite-seed16/vendor/pr1127/search.py new file mode 100644 index 0000000000..a20b42b757 --- /dev/null +++ b/research/r439-abc-zrewrite-seed16/vendor/pr1127/search.py @@ -0,0 +1,342 @@ +"""Discovery search: exact triangle (Steinberg 3->2) rewrites of the z-program of +the PR589 tuned bit word, with unchanged frame paths and paid profile. + +Research package research/r439-z3to2-seed13 (bit-supplier track, assignment seed 13). +Prepared with help from opencode. Apache-2.0. + +The rewrite (a, b, x distinct registers; edges (b,x), (b,a), (a,x) all present in +the z-program): delete edge (b,x) and swap the relative order of edges (b,a) and +(a,x). As a contiguous identity (gate order left to right, over F2): + + [b += x] [b += a] [a += x] == [a += x] [b += a] (p(b,a) < p(a,x)) + [a += x] [b += a] [b += x] == [b += a] [a += x] (p(a,x) < p(b,a)) + +so one forward source edge disappears; the rebuilt literal-reverse cleanup C +loses its mirror edge as well: 2 ADDs per accepted rewrite. + +A candidate instance is accepted only if (i) every gate strictly between the +earliest and the latest of the three edges commutes with all three edges at the +register level (multi-source gates are groups of same-destination transvections +and commute internally), (ii) the rewritten word with rebuilt C passes an exact +replay of the F2 endpoint on all 2v+R = 661 basis columns, (iii) all 661 +register frame paths are identical to the base word, and (iv) the wlib-style +paid profile is identical. Output: MOVES.json (witness), CANDIDATE.json / +certificate counts, SEARCH-LOG.json (complete coverage census). + +usage: python3 -I -B research/r439-z3to2-seed13/search.py +""" +import gzip, json, hashlib, collections, copy, sys, time +from pathlib import Path + +ROOT = Path(__file__).resolve().parents[2] +BASE_WORD = ROOT / 'research/e8-bit-p111-tuned/tune/bitE8mut-p111-tuned.json.gz' + +def load_word(p): + return json.load(gzip.open(p, 'rt')) + +def canon(w): + return json.dumps(w, sort_keys=True, separators=(',', ':')).encode() + +# ---------------------------------------------------------------- replay core +class Model: + def __init__(self, w): + self.w = w + self.V, self.R = w['v'], w['R'] + self.N = 2 * self.V + self.R + self.frames = w['frames'] + self.dim = [len(f) for f in self.frames] + self.mask = [sum(1 << i for i in f) for f in self.frames] + + def is_z(self, t): + return t < self.V or t >= 2 * self.V + + def replay(self, w): + V, N, dim, mask = self.V, self.N, self.dim, self.mask + cur = list(w['start']) + H = collections.Counter() + paths = [[] for _ in range(N)] + for r, f in enumerate(cur): + paths[r].append(f) + + def climb(r, f): + a = cur[r] + if a == f: + return + assert mask[a] & mask[f] == mask[a], ('climb', r, a, f) + if dim[f] > dim[a]: + H[dim[f] - dim[a]] += 1 + cur[r] = f + paths[r].append(f) + + val = [1 << i for i in range(N)] + + def gates(sec): + for f, t, ss in w[sec]: + assert len({t, *ss}) == 1 + len(ss), ('dup src', sec, f, t, ss) + for r in [t, *ss]: + climb(r, f) + for s in ss: + val[t] ^= val[s] + + gates('D'); gates('A') + tops = [dim[cur[q]] for q in w['ret']] + snap = [val[q] for q in w['ret']] + for t, ks in enumerate(w['scatter']): + for k in ks: + val[V + t] ^= snap[k] + gates('B'); gates('C') + for r, f in enumerate(w['final']): + climb(r, f) + ok = all(val[r] == ((1 << r) ^ (1 << (r - V)) if V <= r < 2 * V else 1 << r) + for r in range(N)) + prof = dict(sorted((H + collections.Counter(tops)).items())) + return [tuple(p) for p in paths], prof, ok + + def rebuild_C(self, w): + full = next(i for i, f in enumerate(w['frames']) if len(f) == self.V) + z = [g for g in w['A'] + w['B'] if self.is_z(g[1])] + return [[full, t, list(ss)] for f, t, ss in reversed(z)] + + def add_count(self, w): + return (sum(len(g[2]) for g in w['D'] + w['A'] + w['B'] + w['C']) + + sum(len(x) for x in w['scatter'])) + +# ------------------------------------------------------- z stream and triangles +def z_stream(w, M): + """stream of ('T', (dst, src, gate_key)) and barriers ('Y', ...) / ('SNAP', ...). + gate_key = (section, index-of-gate-in-section-list-at-snapshot).""" + stream = [] + for gi, (f, t, ss) in enumerate(w['A']): + for s in ss: + stream.append(('T', (t, s, ('A', gi)))) + stream.append(('SNAP', tuple(sorted(w['ret'])))) + for gi, (f, t, ss) in enumerate(w['B']): + if M.is_z(t): + for s in ss: + stream.append(('T', (t, s, ('B', gi)))) + else: + stream.append(('Y', (t, tuple(ss), ('B', gi)))) + return stream + +def tau_commutes(a, x, b, y): + if a == b: + return True + return (a != y) and (b != x) + +def blocks(a, x, item): + k, payload = item + if k == 'T': + b, y, _ = payload + return not tau_commutes(a, x, b, y) + if k == 'Y': + return a in payload[1] + return a in payload # SNAP + +def find_triangles(w, M): + stream = z_stream(w, M) + pos = collections.defaultdict(list) + for idx, (k, p) in enumerate(stream): + if k == 'T': + pos[(p[0], p[1])].append(idx) + edges = set(pos) + out = [] + for (b, a) in sorted(edges): + if a == b: + continue + for (b2, x) in sorted(edges): + if b2 != b or x == a or x == b: + continue + if (a, x) not in edges: + continue + for p_bx in pos[(b, x)]: + for p_ba in pos[(b, a)]: + for p_ax in pos[(a, x)]: + ps = [p_bx, p_ba, p_ax] + if len(set(ps)) < 3: + continue + lo, hi = min(ps), max(ps) + ok = True + for i in range(lo + 1, hi): + if i in ps: + continue + for e in ((b, x), (b, a), (a, x)): + if blocks(e[0], e[1], stream[i]): + ok = False + break + if not ok: + break + if ok: + out.append({'b': b, 'a': a, 'x': x, + 'pos': [p_bx, p_ba, p_ax], + 'mapA': p_ba < p_ax, + 'window': [lo, hi]}) + return out, stream, pos + +# --------------------------------------------------------------- apply a move +def gate_identity(g): + return [g[0], g[1], list(g[2])] + +def apply_move(w, M, mv): + """Delete edge (b,x); move the gate holding (a,x) across the gate holding + (b,a) so the kept pair swaps relative order. Gates are identified by their + exact (frame, dst, src-list) identity captured at search time.""" + b, a, x = mv['b'], mv['a'], mv['x'] + sec = mv['sec'] + L = w[sec] + + def gate_by_identity(ident, occ): + hits = [i for i, g in enumerate(L) + if g[0] == ident[0] and g[1] == ident[1] and list(g[2]) == list(ident[2])] + if len(hits) <= occ: + raise AssertionError('gate identity not found: %r' % (ident,)) + return hits[occ] + + i_bx = gate_by_identity(mv['g_bx'], 0) + i_ba = gate_by_identity(mv['g_ba'], 0) + i_ax = gate_by_identity(mv['g_ax'], 0) + g_bx, g_ba, g_ax = L[i_bx], L[i_ba], L[i_ax] + # 1. delete edge (b,x) + g_bx[2] = [s for s in g_bx[2] if s != x] + if not g_bx[2] and g_bx is not g_ba and g_bx is not g_ax: + L.remove(g_bx) + # 2. extract edge (a,x) into its own gate at the same frame + if g_ax is g_ba: + raise AssertionError('triangle degenerate: (a,x) and (b,a) same gate') + rest = [s for s in g_ax[2] if s != x] + moved = [g_ax[0], a, [x]] + if rest: + g_ax[2] = rest + anchor_is_moved = False + else: + L.remove(g_ax) + # 3. swap relative order: place moved (a,x) on the other side of (b,a) + j_ba = L.index(g_ba) + if mv['mapA']: + L.insert(j_ba, moved) # (a,x) now before (b,a) + else: + L.insert(j_ba + 1, moved) # (a,x) now after (b,a) + w['C'] = M.rebuild_C(w) + return w + +# ----------------------------------------------------------------- main search +def main(): + t0 = time.time() + w0 = load_word(BASE_WORD) + M = Model(w0) + base_hash = hashlib.sha256(canon(w0)).hexdigest() + bp, bprof, bok = M.replay(w0) + assert bok + base_adds = M.add_count(w0) + + # duplicate-pair census (paired-transvection class) for the coverage record + stream0 = z_stream(w0, M) + occ = collections.defaultdict(list) + for idx, (k, p) in enumerate(stream0): + if k == 'T': + occ[(p[0], p[1])].append(idx) + dup = {k: v for k, v in occ.items() if len(v) > 1} + + work = copy.deepcopy(w0) + moves = [] + rounds = [] + tri_total = tri_clear_total = 0 + rejected = collections.Counter() + while True: + tris, stream, pos = find_triangles(work, M) + tri_total_this = len({(t['b'], t['a'], t['x']) for t in tris}) + clear = tris # find_triangles returns only clear instances + tri_total += 0 + applied_this_round = 0 + used_edges = set() + used_windows = [] + for mv in sorted(clear, key=lambda t: (-t['window'][1], -t['window'][0], t['b'], t['a'], t['x'])): + key = (mv['b'], mv['a'], mv['x']) + if any(e in used_edges for e in [(mv['b'], mv['x']), (mv['b'], mv['a']), (mv['a'], mv['x'])]): + rejected['edge-consumed'] += 1 + continue + lo, hi = mv['window'] + if any(not (hi < ulo or uhi < lo) for ulo, uhi in used_windows): + rejected['window-overlap'] += 1 + continue + # derive section from stream entries at the three positions + secs = {stream[i][1][2][0] for i in mv['pos']} + if len(secs) != 1: + rejected['cross-section'] += 1 + continue + sec = secs.pop() + L = work[sec] + try: + gi_bx = stream[mv['pos'][0]][1][2][1] + gi_ba = stream[mv['pos'][1]][1][2][1] + gi_ax = stream[mv['pos'][2]][1][2][1] + m = {'b': mv['b'], 'a': mv['a'], 'x': mv['x'], 'sec': sec, + 'g_bx': gate_identity(L[gi_bx]), + 'g_ba': gate_identity(L[gi_ba]), + 'g_ax': gate_identity(L[gi_ax]), + 'mapA': mv['mapA'], 'window': mv['window']} + trial = copy.deepcopy(work) + apply_move(trial, M, m) + tp, tprof, tok = M.replay(trial) + except Exception as ex: + rejected['apply-or-replay:%s' % type(ex).__name__] += 1 + continue + if not tok: + rejected['endpoint'] += 1 + continue + if tp != bp: + rejected['frame-paths'] += 1 + continue + if tprof != bprof: + rejected['profile'] += 1 + continue + work = trial + moves.append(m) + used_edges.update([(m['b'], m['x']), (m['b'], m['a']), (m['a'], m['x'])]) + used_windows.append((lo, hi)) + applied_this_round += 1 + rounds.append({'clear_instances': len(clear), + 'distinct_triangles': tri_total_this, + 'applied': applied_this_round, + 'rejected_cumulative': dict(rejected)}) + print('round %d: clear instances %d, distinct triangles %d, applied %d, total moves %d' + % (len(rounds), len(clear), tri_total_this, applied_this_round, len(moves))) + if applied_this_round == 0: + break + if len(rounds) >= 60: + break + + tp, tprof, tok = M.replay(work) + assert tok and tp == bp and tprof == bprof + cand_adds = M.add_count(work) + cand_hash = hashlib.sha256(canon(work)).hexdigest() + + # final census on the fixed point + tris_end, stream_end, _ = find_triangles(work, M) + + rec = { + 'base_word': str(BASE_WORD.relative_to(ROOT)).replace('\\', '/'), + 'base_canonical_sha256': base_hash, + 'candidate_canonical_sha256': cand_hash, + 'base_ADDs': base_adds, + 'candidate_ADDs': cand_adds, + 'saved_ADDs': base_adds - cand_adds, + 'moves': moves, + 'n_moves': len(moves), + 'rounds': rounds, + 'duplicate_edges': len(dup), + 'duplicate_extra_occurrences': sum(len(v) - 1 for v in dup.values()), + 'clear_triangles_at_fixed_point': len(tris_end), + 'accepted_filter': ['window commutation', 'exact endpoint on 661 columns', + '661 frame paths identical', 'paid profile identical'], + 'seed': 13, + 'track': 'bit supplier (00-19)', + } + out = Path(__file__).resolve().parent + (out / 'MOVES.json').write_text(json.dumps(rec, indent=1, sort_keys=True)) + (out / 'CANDIDATE-WORD.json').write_text(canon(work).decode()) + print('ADDs %d -> %d (saved %d) moves %d elapsed %.1fs' + % (base_adds, cand_adds, base_adds - cand_adds, len(moves), time.time() - t0)) + print('rejected:', dict(rejected)) + +if __name__ == '__main__': + main() diff --git a/research/r439-abc-zrewrite-seed16/vendor/pr1127/verify.py b/research/r439-abc-zrewrite-seed16/vendor/pr1127/verify.py new file mode 100644 index 0000000000..af2ba109ba --- /dev/null +++ b/research/r439-abc-zrewrite-seed16/vendor/pr1127/verify.py @@ -0,0 +1,390 @@ +"""Independent verification of research/r439-z3to2-seed13 (research package, +bit-supplier track, assignment seed 13). Prepared with help from opencode. +Apache-2.0. Standard library only; Python 3.11+. + +usage: python3 -I -B research/r439-z3to2-seed13/verify.py + +Checks (imports no search code): + 1. base word canonical SHA-256 equals the pin in SOURCES.json; + 2. re-apply every witness move of MOVES.json from scratch and compare the + rebuilt candidate word byte-for-byte with CANDIDATE-WORD.json; + 3. per-move obligations: three distinct registers, the three edges present in + the base word, the exact 3-register F2 identity before == after, and the + window commutation condition recomputed on the base stream; + 4. independent exact replay of base and candidate on all 2v+R = 661 basis + columns (the full F2 word map, hence J = I and the helper matrix K and D + are unchanged); + 5. the z-program product U (550 x 550 over F2) is identical base vs candidate; + 6. all 661 register frame paths identical, and the paid profile identical; + 7. exact record accounting (ADD/MOVE/COPY/ERASE) from the words, cross-checked + against the repository exporter export_records.py run on both words; + 8. six negative controls must each be rejected; + 9. the recomputed summary equals CERTIFICATE.json. +""" +import gzip, json, hashlib, collections, copy, subprocess, sys, tempfile, struct, os +from pathlib import Path + +HERE = Path(__file__).resolve().parent +ROOT = HERE.parents[1] +BASE_WORD = ROOT / 'research/e8-bit-p111-tuned/tune/bitE8mut-p111-tuned.json.gz' +EXPORT = ROOT / 'research/e8-bit-carrier-skeleton/code/bit/export_records.py' + +def canon(w): + return json.dumps(w, sort_keys=True, separators=(',', ':')).encode() + +def sha(w): + return hashlib.sha256(canon(w)).hexdigest() + +def need(cond, msg): + if not cond: + raise SystemExit('FAIL: ' + msg) + +# ------------------------------------------------------------ independent replay +class Replay: + def __init__(self, w): + self.V, self.R = w['v'], w['R'] + self.N = 2 * self.V + self.R + self.dim = [len(f) for f in w['frames']] + self.mask = [sum(1 << i for i in f) for f in w['frames']] + + def run(self, w, strict=True): + V, N, dim, mask = self.V, self.N, self.dim, self.mask + cur = list(w['start']) + H = collections.Counter() + paths = [[] for _ in range(N)] + for r, f in enumerate(cur): + paths[r].append(f) + + def climb(r, f): + a = cur[r] + if a == f: + return + if not (mask[a] & mask[f] == mask[a]): + raise ValueError(('climb', r, a, f)) + if dim[f] > dim[a]: + H[dim[f] - dim[a]] += 1 + cur[r] = f + paths[r].append(f) + + val = [1 << i for i in range(N)] + + def gates(sec): + for f, t, ss in w[sec]: + if len({t, *ss}) != 1 + len(ss): + raise ValueError(('dup', sec, t, ss)) + for r in [t, *ss]: + climb(r, f) + for s in ss: + val[t] ^= val[s] + + gates('D'); gates('A') + tops = [dim[cur[q]] for q in w['ret']] + snap = [val[q] for q in w['ret']] + for t, ks in enumerate(w['scatter']): + for k in ks: + val[V + t] ^= snap[k] + gates('B'); gates('C') + for r, f in enumerate(w['final']): + climb(r, f) + ok = all(val[r] == ((1 << r) ^ (1 << (r - V)) if V <= r < 2 * V else 1 << r) + for r in range(N)) + prof = dict(sorted((H + collections.Counter(tops)).items())) + return [tuple(p) for p in paths], prof, ok + +# ------------------------------------------------------- z product (550 x 550) +def z_product(w): + V, R = w['v'], w['R'] + zids = [r for r in range(2 * V + R) if r < V or r >= 2 * V] + zidx = {r: i for i, r in enumerate(zids)} + Z = len(zids) + cols = [1 << i for i in range(Z)] + def apply_tau(a, x): + ai, xi = zidx[a], zidx[x] + for j in range(Z): + if (cols[j] >> xi) & 1: + cols[j] ^= 1 << ai + for sec in ('A', 'B'): + for f, t, ss in w[sec]: + if t in zidx: + for s in ss: + apply_tau(t, s) + return cols + +# ------------------------------------------------------- move re-application +def rebuild_C(w, V): + full = next(i for i, f in enumerate(w['frames']) if len(f) == V) + z = [g for g in w['A'] + w['B'] if g[1] < V or g[1] >= 2 * V] + return [[full, t, list(ss)] for f, t, ss in reversed(z)] + +def stream_of(w): + """z-edge stream with gate identities and barriers, for the window check.""" + V = w['v'] + stream = [] + for gi, g in enumerate(w['A']): + for s in g[2]: + stream.append(('T', (g[1], s, ('A', gi)))) + stream.append(('SNAP', tuple(sorted(w['ret'])))) + for gi, g in enumerate(w['B']): + if g[1] < V or g[1] >= 2 * V: + for s in g[2]: + stream.append(('T', (g[1], s, ('B', gi)))) + else: + stream.append(('Y', tuple(g[2]))) + return stream + +def window_check(w, mv): + """Recompute the conservative commutation window of one move on the + current stream; also check that mapA matches the observed edge order.""" + stream = stream_of(w) + hits = {} + for idx, (k, p) in enumerate(stream): + if k != 'T': + continue + dst, src, key = p + for name, ident, e in (('bx', mv['g_bx'], (mv['b'], mv['x'])), + ('ba', mv['g_ba'], (mv['b'], mv['a'])), + ('ax', mv['g_ax'], (mv['a'], mv['x']))): + if (dst, src) == e and list(w[key[0]][key[1]]) == list(ident): + hits[name] = idx + if sorted(hits) != ['ax', 'ba', 'bx']: + raise ValueError('move edges not uniquely located at application time') + ps = [hits['bx'], hits['ba'], hits['ax']] + if len(set(ps)) < 3: + raise ValueError('move edges coincide') + if (hits['ba'] < hits['ax']) != bool(mv['mapA']): + raise ValueError('mapA disagrees with observed edge order') + lo, hi = min(ps), max(ps) + + def blocks(a, x, item): + k, payload = item + if k == 'T': + b, y, _ = payload + if a == b: + return False + return (a == y) or (b == x) + if k == 'Y': + return a in payload + return a in payload + + for i in range(lo + 1, hi): + if i in ps: + continue + for e in ((mv['b'], mv['x']), (mv['b'], mv['a']), (mv['a'], mv['x'])): + if blocks(e[0], e[1], stream[i]): + raise ValueError('window not clear at application time') + return True + +def apply_moves(w, moves): + w = copy.deepcopy(w) + V = w['v'] + for mv in moves: + sec, b, a, x = mv['sec'], mv['b'], mv['a'], mv['x'] + L = w[sec] + window_check(w, mv) + def find(ident): + hits = [i for i, g in enumerate(L) + if g[0] == ident[0] and g[1] == ident[1] and list(g[2]) == list(ident[2])] + if len(hits) != 1: + raise ValueError('move gate identity must be unique: %r' % (ident,)) + return hits[0] + i_bx, i_ba, i_ax = find(mv['g_bx']), find(mv['g_ba']), find(mv['g_ax']) + g_bx, g_ba, g_ax = L[i_bx], L[i_ba], L[i_ax] + if not (g_bx[1] == b and x in g_bx[2] and g_ba[1] == b and a in g_ba[2] + and g_ax[1] == a and x in g_ax[2] and g_ax is not g_ba): + raise ValueError('move edge mismatch') + # delete edge (b,x) + g_bx[2] = [s for s in g_bx[2] if s != x] + if not g_bx[2]: + if g_bx is g_ba: + raise ValueError('deleted edge gate still needed') + L.remove(g_bx) + # extract (a,x) into its own gate and swap it across (b,a) + rest = [s for s in g_ax[2] if s != x] + if rest: + g_ax[2] = rest + else: + L.remove(g_ax) + moved = [g_ax[0], a, [x]] + j_ba = L.index(g_ba) + if mv['mapA']: + L.insert(j_ba, moved) + else: + L.insert(j_ba + 1, moved) + w['C'] = rebuild_C(w, V) + return w + +def tri_identity_ok(b, a, x, mapA): + """The 3-register F2 map of the triple equals that of the kept pair.""" + def ev(prog): + va, vb, vx = 1, 2, 4 # basis images of a, b, x as bit triples (a,b,x) + st = {'a': 1, 'b': 2, 'x': 4} + for dst, src in prog: + st[dst] ^= st[src] + return (st['a'], st['b'], st['x']) + if mapA: + before = [('b', 'x'), ('b', 'a'), ('a', 'x')] + after = [('a', 'x'), ('b', 'a')] + else: + before = [('a', 'x'), ('b', 'a'), ('b', 'x')] + after = [('b', 'a'), ('a', 'x')] + return ev(before) == ev(after) + +def record_counts(w, rp): + V = w['v'] + adds = sum(len(g[2]) for g in w['D'] + w['A'] + w['B'] + w['C']) + sum(len(x) for x in w['scatter']) + moves_ = sum(len(p) - 1 for p in rp[0]) + copies = len(w['ret']) + erases = len(w['ret']) + return {'ADDs': adds, 'MOVEs': moves_, 'COPYs': copies, 'ERASEs': erases, + 'records': adds + moves_ + copies + erases} + +def exporter_counts(word_path, outdir): + out = Path(outdir) / 'exp' + r = subprocess.run([sys.executable, '-I', '-B', str(EXPORT), str(word_path), str(out)], + capture_output=True, text=True) + need(r.returncode == 0, 'exporter failed: %s' % r.stderr[-400:]) + data = (out / '249-records.bin').read_bytes() + n = len(data) // 24 + cnt = collections.Counter() + for i in range(n): + rec = struct.unpack('<6i', data[24 * i:24 * i + 24]) + cnt[rec[0]] += 1 + return {'MOVEs': cnt[0], 'ADDs': cnt[1], 'COPYs': cnt[2], 'ERASEs': cnt[3], 'records': n} + +# --------------------------------------------------------------------- main +def main(): + src_pin = json.loads((HERE / 'SOURCES.json').read_text()) + mv_doc = json.loads((HERE / 'MOVES.json').read_text()) + cert = None + if '--write-certificate' not in sys.argv: + cert = json.loads((HERE / 'CERTIFICATE.json').read_text()) + base = json.load(gzip.open(BASE_WORD, 'rt')) + need(sha(base) == src_pin['base_word']['canonical_sha256'], 'base word hash pin') + need(sha(base) == mv_doc['base_canonical_sha256'], 'MOVES.json base pin') + + # 2. re-apply moves + cand = apply_moves(base, mv_doc['moves']) + need(len(mv_doc['moves']) == mv_doc['n_moves'], 'move count') + need(sha(cand) == mv_doc['candidate_canonical_sha256'], 'rebuilt candidate hash') + committed = json.loads((HERE / 'CANDIDATE-WORD.json').read_text()) + need(canon(committed) == canon(cand), 'committed candidate bytes') + + # 3. per-move obligations (window commutation is recomputed inside + # apply_moves at each move's application state) + for mv in mv_doc['moves']: + need(len({mv['b'], mv['a'], mv['x']}) == 3, 'move registers distinct') + need(tri_identity_ok(mv['b'], mv['a'], mv['x'], mv['mapA']), 'triangle identity') + + # 4-6. independent replay + RP = Replay(base) + bp, bprof, bok = RP.run(base) + need(bok, 'base replay endpoint') + cp, cprof, cok = RP.run(cand) + need(cok, 'candidate replay endpoint on all %d columns' % RP.N) + need(cp == bp, 'frame paths differ') + need(cprof == bprof, 'paid profile differs') + zb, zc = z_product(base), z_product(cand) + need(zb == zc, 'z-program product U differs') + + # 7. record accounting + cb = record_counts(base, RP.run(base)) + cc = record_counts(cand, RP.run(cand)) + need(cb['ADDs'] == 24305, 'base ADDs') + need(cc['ADDs'] == cb['ADDs'] - 2 * mv_doc['n_moves'], 'ADD saving is 2 per move') + need(cc['MOVEs'] == cb['MOVEs'] and cc['COPYs'] == cb['COPYs'] + and cc['ERASEs'] == cb['ERASEs'], 'non-ADD records changed') + with tempfile.TemporaryDirectory() as td: + bp_path = Path(td) / 'base.json' + cp_path = Path(td) / 'cand.json' + bp_path.write_text(canon(base).decode()) + cp_path.write_text(canon(cand).decode()) + eb = exporter_counts(bp_path, td) + ec = exporter_counts(cp_path, td) + need(eb == cb, 'own/exporter base counts disagree: %r vs %r' % (eb, cb)) + need(ec == cc, 'own/exporter candidate counts disagree: %r vs %r' % (ec, cc)) + + # 8. negative controls: each tamper must be rejected by some check + controls = [] + def reject(name, fn): + try: + got = fn() + except Exception: + got = 'rejected' + need(got == 'rejected', 'control not rejected: ' + name) + controls.append(name) + + def try_run(w2): + try: + _, _, ok = RP.run(w2) + except Exception: + return 'rejected' + return 'rejected' if not ok else 'accepted' + + def c1(): + w2 = copy.deepcopy(cand) + w2['A'][5][2][0] ^= 1 + return try_run(w2) + def c2(): + w2 = copy.deepcopy(cand) + w2['C'].pop(3) + return try_run(w2) + def c3(): + w2 = copy.deepcopy(cand) + w2['C'] = w2['C'][:-1] + return try_run(w2) + def c4(): + m2 = copy.deepcopy(mv_doc['moves']) + m2[0]['x'] = m2[0]['x'] ^ 1 + apply_moves(base, m2) + return 'accepted' + def c5(): + w2 = copy.deepcopy(cand) + A = w2['A'] + i = next(i for i, g in enumerate(A) if g[1] < w2['v'] and g[2] and g[2][0] < w2['v']) + j = next(j for j, g in enumerate(A) if g[1] == A[i][2][0] and A[i][1] in g[2]) + A[i], A[j] = A[j], A[i] + return try_run(w2) # no C rebuild: cleanup no longer inverts the z-program + def c6(): + w2 = copy.deepcopy(base) + w2['D'][0][2] = w2['D'][0][2][:-1] + return try_run(w2) + for name, fn in (('c1-source-corruption', c1), ('c2-cleanup-gate-deleted', c2), + ('c3-cleanup-truncated', c3), ('c4-tampered-move-list', c4), + ('c5-noncommuting-swap-no-c-rebuild', c5), ('c6-dirt-gate-truncated', c6)): + reject(name, fn) + need(len(controls) == 6, 'all six controls must reject') + + summary = { + 'base_word': 'research/e8-bit-p111-tuned/tune/bitE8mut-p111-tuned.json.gz', + 'base_canonical_sha256': sha(base), + 'candidate_canonical_sha256': sha(cand), + 'n_moves': mv_doc['n_moves'], + 'base_ADDs': cb['ADDs'], + 'candidate_ADDs': cc['ADDs'], + 'saved_ADDs': cb['ADDs'] - cc['ADDs'], + 'base_records': cb['records'], + 'candidate_records': cc['records'], + 'MOVEs': cb['MOVEs'], + 'COPYs': cb['COPYs'], + 'ERASEs': cb['ERASEs'], + 'frame_paths_identical': True, + 'paid_profile_identical': True, + 'paid_profile': bprof, + 'z_product_identical': True, + 'columns_checked': RP.N, + 'controls_rejected': len(controls), + 'exporter_cross_check': True, + } + summary = json.loads(json.dumps(summary)) + if '--write-certificate' in sys.argv: + (HERE / 'CERTIFICATE.json').write_text(json.dumps(summary, indent=1, sort_keys=True)) + print('wrote CERTIFICATE.json') + else: + need(summary == cert, 'certificate mismatch:\n got %r\n want %r' % (summary, cert)) + print('PASS_R439_Z3TO2 moves=%d ADDs=%d->%d records=%d->%d columns=%d paths=%d ' + 'profile=identical U=identical controls=%d/%d exporter=ok no_new_kappa' + % (summary['n_moves'], cb['ADDs'], cc['ADDs'], cb['records'], cc['records'], + RP.N, RP.N, len(controls), 6)) + +if __name__ == '__main__': + main() diff --git a/research/r439-abc-zrewrite-seed16/vendor/pr1188/NOTICE.md b/research/r439-abc-zrewrite-seed16/vendor/pr1188/NOTICE.md new file mode 100644 index 0000000000..726353d126 --- /dev/null +++ b/research/r439-abc-zrewrite-seed16/vendor/pr1188/NOTICE.md @@ -0,0 +1,33 @@ +# Attribution and license + +New GL5 application, distance checker, bounded interval certificate and package: +**Gareth Davidson (@bitplane)** with substantial **OpenAI Codex assistance** in +mathematics, implementation, checks and writing. Apache-2.0. No subagents or +independent human review were used. + +- **Ross Richardson, PR936**, supplies the previous five-wire window method, + with PR904 and **Jeffrey Cox, PR754**, among its small-circuit predecessors. +- **Davidson PR1122**, on PR980/952/904, is the complete frozen input. Its exact + candidate, proof, certificate, README, notice and license are preserved under + `vendor/pr1122/`. Literal replay, strict I/O and native harness code adapt + PR1122/980 with their attribution retained. +- **Sagar Thakrar, PR1062**, supplies the inherited B/star-D composition; + **Aaron Wang, PR1015**, **Ross Richardson, PR923**, **Sricharan Vagvala, + PR967**, and **Davidson PR915/926** retain credit. The unchanged parent notice + records earlier helper-star and interface contributors in detail. +- The selected bit supplier is **DreamingOfClouds PR589**, on **eumemic + PR555/543**. Original checker and Apache-2.0/AI notices remain unchanged. +- The native exporter/checker lineage credits **Dylan Crow**, **DaysSky**, + **Zhihao Chen**, **Sagar Thakrar**, and PR249/266/315/496/527 contributors. + Pinned native notices retain full attribution. Gzip payload comparison follows + the repository guidance credited to **Maxime Fleury** and **Antoine Olivier**. +- Optimal CNOT synthesis by GL(n,2) Cayley-graph search predates this work. + See **Jens Emil Christensen, Søren Fuglede Jørgensen, Andreas Pavlogiannis and + Jaco van de Pol**, *On Exact Sizes of Minimal CNOT Circuits*, RC2025, + https://cs.au.dk/~pavlogiannis/publications/papers/rc25.pdf and their CNOTter + repository. The two C++ programs here are fresh implementations; no external + source code or data is copied, and no algorithmic priority is claimed. + +The selected context is **Rohan Arun PR1094** and its credited complex/owner +chain. It is not changed by this contribution. PR1127's commuting Steinberg +rewrites and the local guard work in PR936 remain distinct mechanisms. diff --git a/research/r439-abc-zrewrite-seed16/vendor/pr1188/candidate.json.gz b/research/r439-abc-zrewrite-seed16/vendor/pr1188/candidate.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..0d4dd2fb241a00cab1b57b17991db82bc06edd91 GIT binary patch literal 35768 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 GwhutWYP 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 A!~g&Q literal 0 HcmV?d00001 diff --git a/research/r439-abc-zrewrite-seed16/verify.py b/research/r439-abc-zrewrite-seed16/verify.py new file mode 100644 index 0000000000..e132e984f1 --- /dev/null +++ b/research/r439-abc-zrewrite-seed16/verify.py @@ -0,0 +1,335 @@ +#!/usr/bin/env python3 +"""Independent integer-bitset replay of pinned complete-word rewrites. + +Prepared by ToikY with substantial OpenAI Codex assistance; Apache-2.0. +Does not import the discovery implementation. Source formula/interface checks +follow the credited PR1122 verifier; formal-column replay is independent. +""" +import argparse +import ast +import copy +import gzip +import hashlib +import importlib.util +import json +from pathlib import Path + +HERE = Path(__file__).resolve().parent +ROOT = HERE.parents[1] +BASE = '1b59b624d21924f8e3537cdc1ac52d3be6eda2fe' +CHECKER = 'research/e8-bit-p111-tuned/code/xcheck_p.py' +FORMULA = ('research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/' + 'vendor/e8-r715-eleven-stage-whole/code/global_k.py') + + +def need(ok, message): + if not ok: + raise ValueError(message) + + +def canonical(value): + return json.dumps(value, sort_keys=True, separators=(',', ':'), allow_nan=False).encode() + + +def digest(value): + return hashlib.sha256(canonical(value)).hexdigest() + + +def same(a, b, message): + need(canonical(a) == canonical(b), message) + + +def pairs(items): + out = {} + for key, value in items: + need(key not in out, 'duplicate key ' + key) + out[key] = value + return out + + +def invalid(value): + raise ValueError('nonfinite JSON ' + value) + + +def load(path): + raw = Path(path).read_bytes() + if str(path).endswith('.gz'): + raw = gzip.decompress(raw) + return json.loads(raw, object_pairs_hook=pairs, parse_constant=invalid) + + +def write(path, value): + Path(path).write_text(json.dumps(value, sort_keys=True, indent=2, allow_nan=False) + '\n') + + +def pins(): + manifest = load(HERE / 'SOURCES.json') + need(manifest['base_commit'] == BASE, 'base pin') + for directory, key in ((ROOT, 'repository_files'), (HERE, 'package_sources')): + for name, expected in manifest[key].items(): + need(hashlib.sha256((directory / name).read_bytes()).hexdigest() == expected, + 'source pin ' + name) + need(hashlib.sha256((ROOT / 'research/community-frontier1094-audit/ASSEMBLY.json').read_bytes()).hexdigest() + == manifest['selected_certificate_sha256'], 'selected certificate pin') + syntax = ast.parse((ROOT / FORMULA).read_text()) + target = ast.parse('(1 << nb) * cf ** (K + 1) * cb ** K', mode='eval').body + formulas = [n.value for n in ast.walk(syntax) if isinstance(n, ast.Assign) + and any(isinstance(t, ast.Name) and t.id == 'prefix' for t in n.targets)] + need(len(formulas) == 1 and ast.dump(formulas[0]) == ast.dump(target), 'prefix formula') + bridge = ast.parse('nb == 6 * (K - 1)', mode='eval').body + need(any(isinstance(n, ast.Compare) and ast.dump(n) == ast.dump(bridge) + for n in ast.walk(syntax)), 'bridge exponent') + need(load(ROOT / 'research/e8-bit-p111-tuned/tune/EXPECTED.json')['nine']['bit'] + ['charged_prefix_bits'] == 192, 'nine precision charge') + return manifest + + +def stream(word): + n, v = 2 * word['v'] + word['R'], word['v'] + result = [] + for phase in ('D', 'A', 'scatter', 'B', 'C'): + if phase == 'scatter': + need(len(word['ret']) == 9, 'nine centers') + for j, center in enumerate(word['ret']): + need(type(center) is int and 0 <= center < n, 'center domain') + result.append(('copy', n, center)) + for i, uses in enumerate(word['scatter']): + need(len(set(uses)) == len(uses) and all(type(k) is int and 0 <= k < 9 for k in uses), + 'scatter domain') + if j in uses: + result.append(('add', v + i, n)) + result.append(('erase', n, center)) + else: + for f, d, donors in word[phase]: + need(type(f) is int and 0 <= f < len(word['frames']), 'frame domain') + need(type(d) is int and 0 <= d < n, 'destination domain') + need(type(donors) is list and len(set(donors)) == len(donors), 'distinct donors') + need(all(type(s) is int and 0 <= s < n and s != d for s in donors), 'donor domain') + result.extend(('add', d, s) for s in donors) + return result + + +def execute(word, reverse=False, records=None): + n, v = 2 * word['v'] + word['R'], word['v'] + rows, bound = [1 << i for i in range(n)] + [0], [1] * n + [0] + records = stream(word) if records is None else records + active, peak, adds, copies, erasures = False, 1, 0, 0, 0 + for kind, d, s in reversed(records) if reverse else records: + if reverse and kind != 'add': + kind = 'erase' if kind == 'copy' else 'copy' + if kind == 'add': + need(d < n and (s != n or active), 'private COPY lifetime') + rows[d] ^= rows[s] + bound[d] += bound[s] + adds += 1 + elif kind == 'copy': + need(d == n and not active and rows[n] == bound[n] == 0, 'COPY not empty') + rows[n], bound[n], active = rows[s], bound[s], True + copies += 1 + elif kind == 'erase': + need(d == n and active and rows[n] == rows[s], 'ERASE original') + rows[n], bound[n], active = 0, 0, False + erasures += 1 + else: + raise ValueError('instruction kind') + peak = max(peak, bound[d]) + expected = [1 << i for i in range(n)] + for i in range(v): + expected[v + i] ^= 1 << i + need(rows[:-1] == expected, 'dirty endpoint') + need(not active and rows[n] == bound[n] == 0 and copies == erasures == 9, 'complete COPY bill') + return dict(ADDs=adds, bound=peak, columns=n, copies=copies, erasures=erasures) + + +def admission(p): + need(int(p['local_upper']) < 2**104, 'local precision cap') + need(int(p['nine_upper']) < 2**192, 'nine precision cap') + + +def price(word): + f, b = execute(word), execute(word, True) + need(f['ADDs'] == b['ADDs'], 'reverse bill') + F, B = f['bound'], b['bound'] + local, nine = 2**6 * F**3 * B**2, 2**18 * F**5 * B**4 + return dict(ADDs=f['ADDs'], F=F, B=B, local_upper=str(local), nine_upper=str(nine), + local_bits=local.bit_length(), nine_bits=nine.bit_length(), + admitted=local < 2**104 and nine < 2**192) + + +def cleanup(word): + full = [i for i, f in enumerate(word['frames']) if sorted(f) == list(range(word['v']))] + need(len(full) == 1, 'unique full frame') + return [[full[0], d, list(ss)] for phase in ('B', 'A') + for _, d, ss in reversed(word[phase]) if not word['v'] <= d < 2 * word['v']] + + +def phase_map(word, phase): + rows = [1 << i for i in range(2 * word['v'] + word['R'])] + if phase == 'scatter': + for i, uses in enumerate(word['scatter']): + for j in uses: + rows[word['v'] + i] ^= 1 << word['ret'][j] + else: + for _, d, ss in word[phase]: + for s in ss: + rows[d] ^= rows[s] + return rows + + +def replay_moves(base, moves): + word = copy.deepcopy(base) + v = word['v'] + for m in moves: + need(m['sec'] in ('A', 'B'), 'rewrite section') + a, b, x = (m[k] for k in ('a', 'b', 'x')) + need(len({a, b, x}) == 3 and all(type(t) is int and (0 <= t < v or 2*v <= t < 2*v+word['R']) + for t in (a, b, x)), 'rewrite roles') + gates = word[m['sec']] + chosen = [] + for label, d, s in (('bx', b, x), ('ba', b, a), ('ax', a, x)): + matches = [i for i, g in enumerate(gates) if g == m['g_' + label]] + occ = m['occ_' + label] + need(type(occ) is int and 0 <= occ < len(matches), 'rewrite occurrence') + index = matches[occ] + need(gates[index][1] == d and s in gates[index][2], 'rewrite edge') + chosen.append((index, gates[index], s)) + need(len({g[0] for _, g, _ in chosen}) == 1, 'triangle common frame') + edges = [] + for i, (_, d, ss) in enumerate(gates): + edges.extend((i, d, s) for s in ss) + positions = [edges.index((i, g[1], s)) for i, g, s in chosen] + lo, hi = min(positions), max(positions) + def commutes(d, s, e, t): + return d == e or (d != t and e != s) + for j in range(lo + 1, hi): + if j not in positions: + _, d, s = edges[j] + need(all(commutes(d, s, e, t) for e, t in ((b,x), (b,a), (a,x))), 'noncommuting window') + need(m['mapA'] is (positions[1] < positions[2]), 'rewrite order') + # All accepted moves here stay in one physical frame, including every + # whole gate crossed when extracting a member of a donor group. + i0, i1 = sorted((chosen[1][0], chosen[2][0])) + need(all(g[0] == chosen[2][1][0] for g in gates[i0:i1+1]), 'cross-frame rewrite') + bx, ba, ax = [g for _, g, _ in chosen] + bx[2].remove(x) + if not bx[2]: + gates.pop(next(i for i, g in enumerate(gates) if g is bx)) + ax[2].remove(x) + if not ax[2]: + gates.pop(next(i for i, g in enumerate(gates) if g is ax)) + anchor = next(i for i, g in enumerate(gates) if g is ba) + gates.insert(anchor if m['mapA'] else anchor + 1, [ax[0], a, [x]]) + word['C'] = cleanup(word) + return word + + +def owning(base, candidate): + spec = importlib.util.spec_from_file_location('seed16_owning', ROOT / CHECKER) + mod = importlib.util.module_from_spec(spec) + spec.loader.exec_module(mod) + first = mod.Word(base) + labels = first.labels() + reports = {} + for name, word in (('baseline', base), ('candidate', candidate)): + current = copy.copy(first) + current.w = word + full, totals = current.full(), current.totals() + h, k, _ = current.interface() + need(full['columns'] == 661 and [t['rank'] for t in totals] == [7]*9, 'owning coverage') + need(all(t['hyperplane_of_punctured_line'] for t in totals), 'total geometry') + need(all(value is (key != 'H2_D_frame0_targets_from_helpers') for key,value in h.items()), 'owning H') + need(all(value is (key != 'K_equals_D') for key,value in k.items()), 'owning K') + reports[name] = dict(full=full, totals=totals, hypotheses=h, conclusions=k) + for key in ('totals', 'hypotheses', 'conclusions'): + same(reports['baseline'][key], reports['candidate'][key], 'owning contract unchanged ' + key) + return dict(labels=labels, words=reports) + + +def controls(base, candidate, moves): + rejected = [] + def reject(name, fn): + try: + fn() + except ValueError: + rejected.append(name) + else: + raise ValueError('control accepted: ' + name) + bad = copy.deepcopy(moves) + bad[0]['mapA'] = not bad[0]['mapA'] + reject('wrong retained-edge order', lambda: replay_moves(base, bad)) + bad = copy.deepcopy(moves) + bad[0]['occ_bx'] = 1000000 + reject('wrong duplicate occurrence', lambda: replay_moves(base, bad)) + bad_base = copy.deepcopy(base) + first = moves[0] + i = min(first['index_bx'], first['index_ba'], first['index_ax']) + 1 + bad_base[first['sec']].insert(i, [first['g_ax'][0], first['x'], [first['b']]]) + reject('intervening noncommuting gate', lambda: replay_moves(bad_base, moves)) + bad = copy.deepcopy(candidate) + bad['C'] = base['C'] + execute(bad) # The predecessor inverse remains semantically exact. + reject('semantically exact stale literal cleanup', lambda: same(bad['C'], cleanup(bad), 'literal cleanup')) + records = stream(candidate) + for kind in ('copy', 'erase'): + index = next(i for i, row in enumerate(records) if row[0] == kind) + reject('omitted ' + kind, lambda i=index: execute(candidate, records=records[:i]+records[i+1:])) + bad = copy.deepcopy(candidate) + del bad['D'][0] + reject('omitted paid D gate', lambda: execute(bad)) + bad = copy.deepcopy(candidate) + bad['A'][0][0] = True + reject('boolean frame ID', lambda: execute(bad)) + for field, cap in (('local_upper',104), ('nine_upper',192)): + bad = price(candidate) + bad[field] = str(1 << cap) + reject('strict cap equality ' + field, lambda p=bad: admission(p)) + reject('duplicate JSON key', lambda: json.loads('{"a":1,"a":2}', object_pairs_hook=pairs)) + return rejected + + +def run(): + pins() + base = load(HERE / 'vendor/pr1122/candidate.json.gz') + candidate = load(HERE / 'CANDIDATE-WORD.json') + witness = load(HERE / 'MOVES.json') + same(replay_moves(base, witness['moves']), candidate, 'independent witness reconstruction') + need((candidate['v'], candidate['R']) == (111,439), 'dimensions') + same(sorted(base), sorted(candidate), 'payload keys') + for key in base: + if key not in ('A','B','C'): + same(base[key], candidate[key], 'unchanged ' + key) + maps = {} + for phase in ('D','A','scatter','B','C'): + same(phase_map(base,phase),phase_map(candidate,phase), 'phase map ' + phase) + maps[phase] = digest(phase_map(candidate,phase)) + same(candidate['C'], cleanup(candidate), 'literal cleanup') + prices = {name: price(word) for name,word in (('baseline',base),('candidate',candidate))} + for p in prices.values(): + admission(p) + need(prices['baseline']['ADDs']-prices['candidate']['ADDs'] == 2*len(witness['moves']), 'complete saving') + concurrent = load(HERE / 'vendor/pr1188/candidate.json.gz') + concurrent_price = price(concurrent) + admission(concurrent_price) + comparison = dict(pr1188_head=load(HERE / 'SOURCES.json')['predecessor_heads']['1188_comparison'], + canonical_word_sha256=digest(concurrent), price=concurrent_price, + scope='Independent complete literal endpoints and precision invoice; no GL5 optimality or native replay claimed here') + need(prices['candidate']['ADDs'] > concurrent_price['ADDs'], 'concurrent circuit has fewer ADDs') + need(int(prices['candidate']['local_upper']) < int(concurrent_price['local_upper']) + and int(prices['candidate']['nine_upper']) < int(concurrent_price['nine_upper']), 'distinct precision tradeoff') + return dict(status='PASS_COMPLETE_WORD_REWRITE_AND_PRECISION', base_commit=BASE, + concurrent_pr1188=comparison, + base_word_sha256=digest(base), candidate_word_sha256=digest(candidate), + moves=len(witness['moves']), phase_map_sha256=maps, prices=prices, + owning=owning(base,candidate), negative_controls=controls(base,candidate,witness['moves'])) + + +if __name__ == '__main__': + parser = argparse.ArgumentParser() + parser.add_argument('--write-certificate', action='store_true') + args = parser.parse_args() + report = run() + if args.write_certificate: + write(HERE / 'CERTIFICATE.json', report) + else: + same(report, load(HERE / 'CERTIFICATE.json'), 'certificate regeneration') + print(report['status'], 'moves', report['moves'], 'ADDs', report['prices']['candidate']['ADDs'])