@polycode-projects/the-mechanical-code-talker 6.0.20 → 6.0.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -165,15 +165,15 @@ ${m}`:""}${h}`}var Mv=L(()=>{zt();sn();Gc();Fe();ot()});var Fv,Dv=L(()=>{Fe();ot
|
|
|
165
165
|
${a.canonical.join(`
|
|
166
166
|
`)}`:l,data:{...a,grounded:c}})}finally{await i()}}var KE=L(()=>{Qe();Ue();ot();Kh.ownsGraphLoad=!0});var kP,HE=L(()=>{Qf();i$();Lv();Mv();Dv();zv();Wv();Vv();Hv();Yv();mE();bE();yE();SE();pu();jE();_E();AE();OE();NE();PE();FE();BE();UE();VE();KE();kP=Object.freeze({tmct_context:Jf,tmct_context_more:r$,tmct_describe:Nv,tmct_snippet:Pv,tmct_signature:Fv,tmct_impact:Bv,tmct_search:Uv,tmct_members:Gv,tmct_subclasses:Kv,tmct_related:Bh,tmct_sprite:Gh,tmct_architecture:gE,tmct_exports:wE,tmct_untested:$E,tmct_ask:xE,tmct_tests_for:kE,tmct_history:RE,tmct_file_history:TE,tmct_method_history:IE,tmct_class_history:CE,tmct_callers:LE,tmct_callees:ME,tmct_calls:DE,tmct_cochanges:zE,tmct_export:Vh,tmct_ingest:Kh})});var Hh=L(()=>{});var hu,qh=L(()=>{hu=()=>({relations:[],constructions:[]})});var qE,YE=L(()=>{zt();Qe();eb();sn();Pi();us();Hc();qc();HE();pu();ot();Hr();Oc();Hh();qh();qc();Qf();pu();Cc(void 0);Ic(hu);qE=Zg.map(({name:e,agentDescription:t,inputSchema:n})=>({name:e,description:t,inputSchema:n}))});var ZY,e3,t3,mu=L(()=>{ZY=Object.freeze(["entity","set","event","measure"]),e3=Object.freeze(["date","count","op","pivot","metric","kind","provenance"]),t3=Object.freeze({it:Object.freeze(["entity","event","measure"]),this:Object.freeze(["entity","event","measure"]),that:Object.freeze(["entity","event","measure"]),"this one":Object.freeze(["entity","event","measure"]),"that one":Object.freeze(["entity","event","measure"]),those:Object.freeze(["set"]),them:Object.freeze(["set"]),these:Object.freeze(["set"]),here:Object.freeze(["entity"])})});var gu=L(()=>{});var jt,o3,r3,i3,a3,c3,l3,u3,d3,f3,p3,h3,m3,g3,b3,w3,y3,tn,$3,S3,v3,jo=L(()=>{jt=e=>()=>{throw new Error(e+" unavailable in the browser ask bundle")},o3=jt("createRequire"),r3=jt("readFileSync"),i3=jt("access"),a3=jt("readFile"),c3=jt("writeFile"),l3=jt("appendFile"),u3=jt("mkdir"),d3=jt("mkdtemp"),f3=jt("rename"),p3=jt("unlink"),h3=jt("rm"),m3=jt("stat"),g3=jt("copyFile"),b3=jt("readdir"),w3=jt("createReadStream"),y3=jt("createWriteStream"),tn=e=>String(e),$3=jt("randomBytes"),S3=jt("spawnSync"),v3=jt("createInterface")});var sx={};Nt(sx,{PHRASEBOOK_FILE:()=>QE,TECHNICAL_SLOTS:()=>Xh,TEMPLATES_FILE:()=>JE,flatten:()=>Qh,loadPhrasebook:()=>TP,loadTemplates:()=>Zh,loadTemplatesMerged:()=>_P,render:()=>nx,renderSegments:()=>tx,slotKind:()=>ex,slotsOf:()=>Jh});function Jh(e){let t=[];for(let n of String(e).matchAll(ZE))t.includes(n[1])||t.push(n[1]);return t}function ex(e){return RP[e]||"entity"}function Qh(e){let t="";for(let n of e)t+=n.text;return t}function tx(e,t={},n=Ca){if(!n)throw new Error("renderSegments() before loadTemplates() \u2014 load the template library first");let s=n.get(e);if(!s)throw new Error(`unknown template id "${e}"`);let o=s.slots.filter(u=>t[u]===void 0||t[u]===null);if(o.length)throw new Error(`template "${e}" missing slot${o.length>1?"s":""}: ${o.join(", ")}`);let r=s.template,i=new RegExp(ZE.source,"g"),a=[],c=0,l;for(;(l=i.exec(r))!==null;)l.index>c&&a.push({type:"prose",text:r.slice(c,l.index)}),a.push({type:ex(l[1]),text:String(t[l[1]])}),c=l.index+l[0].length;return c<r.length&&a.push({type:"prose",text:r.slice(c)}),a}async function Zh(e=JE){let t=await Ce(e,"utf8"),n=new Map,s=t.split(`
|
|
167
167
|
`);for(let o=0;o<s.length;o+=1){let r=s[o].trim();if(!r)continue;let i;try{i=JSON.parse(r)}catch(c){throw new Error(`${e}:${o+1}: not valid JSON: ${c.message}`)}for(let c of["id","class","template","register"])if(typeof i[c]!="string"||!i[c])throw new Error(`${e}:${o+1}: missing/empty "${c}"`);if(!jP.has(i.register))throw new Error(`${e}:${o+1}: register must be terse|friendly|technical, got "${i.register}"`);if(n.has(i.id))throw new Error(`${e}:${o+1}: duplicate template id "${i.id}"`);let a=Jh(i.template);if(i.register==="technical"){let c=a.filter(l=>!Xh.has(l));if(c.length)throw new Error(`${e}:${o+1}: technical template "${i.id}" uses non-mechanical slot${c.length>1?"s":""}: ${c.join(", ")} (allowed: ${[...Xh].join(", ")})`);if(!a.includes("provenance"))throw new Error(`${e}:${o+1}: technical template "${i.id}" must carry a {provenance} fill (an advanced claim always shows its source)`)}n.set(i.id,{...i,slots:a})}return Ca=n,n}async function _P(e=[]){let t=Ca,n=new Map;try{for(let s of e){let o=await Zh(s);for(let[r,i]of o){if(!r.includes(":"))throw new Error(`${s}: extension-pack template id "${r}" is not namespaced ("<packname>:<id>")`);if(n.has(r))throw new Error(`${s}: duplicate template id "${r}" already loaded from an earlier path`);n.set(r,i)}}}finally{Ca=t}return n}function nx(e,t={},n=Ca){if(!n)throw new Error("render() before loadTemplates() \u2014 load the template library first");return Qh(tx(e,t,n))}async function TP(e=QE){let t=await Ce(e,"utf8"),n=[],s=[],o=t.split(`
|
|
168
|
-
`);for(let r=0;r<o.length;r+=1){let i=o[r].trim();if(!(!i||i.startsWith("#"))){if(i.startsWith("~")){let a=i.slice(1).split(",").map(c=>c.trim().toLowerCase()).filter(Boolean);if(a.length<2)throw new Error(`${e}:${r+1}: a synonym family needs at least 2 entries`);s.push(a);continue}n.push({pattern:i,slots:Jh(i)})}}return{patterns:n,synonyms:s}}var AP,XE,JE,QE,jP,ZE,Xh,RP,Ca,bu=L(()=>{zt();jo();Qe();AP={},XE=ne(Se(tn(AP.url)),"..","..",".."),JE=ne(XE,"data","templates","responses.jsonl"),QE=ne(XE,"data","phrasebook","software-phrases.txt"),jP=new Set(["terse","friendly","technical"]),ZE=/\{([A-Za-z][A-Za-z0-9]*)\}/g,Xh=Object.freeze(new Set(["subject","count","noun","scope","comparison","metric","unit","superlative","provenance"]));RP={count:"number",when:"number",location:"path",commit:"path",provenance:"provenance"};Ca=null});function OP(e,t={}){let n=IP.exec(String(e||""));if(!n)return 1;let s=t?.[n[1]];return typeof s=="number"&&Number.isFinite(s)?s:1}function CP(e,t={}){let n=Array.isArray(e?.sourceIds)?e.sourceIds:[];return n.length?Math.max(...n.map(s=>OP(s,t))):1}function lt(e,t={}){return(Array.isArray(e)?e:[]).map(s=>({row:s,bias:CP(s,t)})).sort((s,o)=>o.bias-s.bias||(o.row?.trust??0)-(s.row?.trust??0)||Zt(s.row,o.row)).map(s=>s.row)}var IP,ox=L(()=>{tr();IP=/^src:corpus:(.+)$/});var Rt,T3,Zs,A3,I3,O3,C3,N3,L3,P3,M3,F3,D3,B3,z3,rx,NP,U3,W3,G3,Ro=L(()=>{Rt=e=>()=>{throw new Error(e+" unavailable in the browser ask bundle")},T3=Rt("createRequire"),Zs=Rt("readFileSync"),A3=Rt("access"),I3=Rt("readFile"),O3=Rt("writeFile"),C3=Rt("appendFile"),N3=Rt("mkdir"),L3=Rt("mkdtemp"),P3=Rt("rename"),M3=Rt("unlink"),F3=Rt("rm"),D3=Rt("stat"),B3=Rt("copyFile"),z3=Rt("readdir"),rx=Rt("createReadStream"),NP=Rt("createWriteStream"),U3=Rt("randomBytes"),W3=Rt("spawnSync"),G3=Rt("createInterface")});function em(e,t){let n=String(e).toLowerCase().replace(/^[^a-z]+/,"");if(!n)return null;for(let o of t.vowel_sound_consonants||[])if(n.startsWith(o))return!0;for(let o of t.consonant_sound_vowels||[])if(n.startsWith(o))return!1;let s=n[0];return"aeiou".includes(s)?!0:/[a-z]/.test(s)?!1:null}function FP(e=PP){let t=lr(Zs(e,"utf8"));return Array.isArray(t.rule)?t.rule:[]}function yu(){if(wu===null)try{wu=FP()}catch{wu=[]}return wu}var DP,LP,PP,MP,J3,wu,$u=L(()=>{Ro();jo();Qe();Fl();bu();DP={},LP=Se(tn(DP.url)),PP=ne(LP,"..","..","data","templates","grammar-rules.toml"),MP=Object.freeze(["prose","entity","path","number","code","provenance","receipt"]),J3=Object.freeze(new Set(MP.filter(e=>e!=="prose")));wu=null});function BP(){if(Na!==void 0)return Na;try{let e=ix?ix():zP();Na=e&&e.winkNLP&&e.model?e:null}catch{Na=null}return Na}function zP(){let e=process.getBuiltinModule("node:module").createRequire(UP.url);return{winkNLP:e("wink-nlp"),model:e("wink-eng-lite-web-model")}}function Su(){if(yi!==void 0)return yi;let e=BP();if(!e)return yi=null,null;try{yi=e.winkNLP(e.model)}catch{yi=null}return yi}var UP,ix,Na,yi,vu=L(()=>{UP={}});var tm=L(()=>{vu()});var cx,ax=L(()=>{cx={comment:"tmct's starter lexicon, now covering BOTH the original software domain and the default 'human-world' persona's everyday people/places/objects/nature/time/body/mind vocabulary. Every word the ACE-OWL sub-fragment parser (src/domain/grammar/ace.mjs) is allowed to understand is DECLARED here \u2014 tmct never guesses a word's category. Nouns may declare a possessive property typing ('data' or 'object', pattern 7) or an irregular 'plural' (WordNet-sourced human nouns like 'man'/'child' need this \u2014 the morphology fold only handles regular -s/-ies/-es endings); adjectives MUST declare a type ('subclass' forms a class, 'data' asserts a boolean-ish datatype property, pattern 8); verbs may declare a preposition ('depend' + 'on' \u2192 dependsOn). The human-domain additions are flat and simple (breadth over depth \u2014 no gender/kinship taxonomy, no formal role hierarchy), matching corpus/tier2/generate.mjs's CORPUSES.human.lexicon sub-key, which --verify drift-checks against. Extend via loadLexicon(extra) with this same shape.",nouns:{module:{},class:{},function:{},method:{},attribute:{},variable:{},constant:{},test:{},suite:{},service:{},repository:{},branch:{},commit:{},tag:{},release:{},package:{},library:{},framework:{},api:{},endpoint:{},route:{},handler:{},controller:{},model:{},view:{},template:{},component:{},interface:{},type:{},category:{},kind:{},artifact:{},routine:{},part:{},helper:{},operation:{},change:{},schema:{},database:{},table:{},query:{},index:{plural:"indices"},cache:{},queue:{},worker:{},job:{},task:{},bug:{},defect:{},issue:{},ticket:{},feature:{},requirement:{},specification:{},document:{},developer:{},engineer:{},user:{},visitor:{},team:{},project:{},codebase:{},file:{},directory:{},folder:{},line:{},symbol:{},identifier:{},comment:{},docstring:{},string:{},number:{},list:{},array:{},graph:{},node:{},edge:{},triple:{},fact:{},ontology:{},lexicon:{},grammar:{},sentence:{},utterance:{},session:{},response:{},request:{},question:{},answer:{},error:{},exception:{},warning:{},log:{},metric:{},benchmark:{},pipeline:{},build:{},deployment:{},environment:{},config:{},configuration:{},setting:{},option:{},flag:{},argument:{},parameter:{},value:{},result:{},output:{},input:{},server:{},client:{},protocol:{},message:{},event:{},hook:{},plugin:{},script:{},tool:{},command:{},prompt:{},token:{},parser:{},compiler:{},linter:{},formatter:{},runtime:{},process:{},thread:{},loop:{},statement:{},expression:{},keyword:{},scope:{},callback:{},promise:{},iterator:{},generator:{},unit:{},risk:{},prototype:{},milestone:{},sprint:{},backlog:{},roadmap:{},phase:{},pattern:{},smell:{},coverage:{},mock:{},stub:{},fixture:{},assertion:{},snapshot:{},regression:{},migration:{},refactor:{},review:{},merge:{},license:{property:"data"},version:{property:"data"},name:{property:"data"},path:{property:"data"},size:{property:"data"},status:{property:"data"},language:{property:"data"},extension:{property:"data"},churn:{property:"data"},impact:{property:"data"},complexity:{property:"data"},latency:{property:"data"},duration:{property:"data"},frequency:{property:"data"},severity:{property:"data"},owner:{property:"object"},maintainer:{property:"object"},author:{property:"object"},reviewer:{property:"object"},parent:{property:"object"},dependency:{property:"object"},man:{plural:"men"},woman:{plural:"women"},person:{plural:"people"},child:{plural:"children"},boy:{},girl:{},baby:{},adult:{},friend:{},neighbor:{},stranger:{},guest:{},doctor:{},teacher:{},nurse:{},student:{},farmer:{},mother:{},father:{},brother:{},sister:{},family:{},king:{},queen:{},soldier:{},artist:{},writer:{},cook:{},group:{},crowd:{},audience:{},club:{},president:{},human:{},lawyer:{},driver:{},manager:{},officer:{},judge:{},priest:{},servant:{},butler:{},housekeeper:{},gardener:{},employee:{},boss:{},husband:{},wife:{plural:"wives"},son:{},daughter:{},grandmother:{},grandfather:{},citizen:{},customer:{},leader:{},champion:{},volunteer:{},resident:{},place:{},city:{},town:{},village:{},country:{},house:{},home:{},room:{},kitchen:{},bedroom:{},bathroom:{},school:{},hospital:{},shop:{},market:{},church:{},park:{},garden:{},street:{},road:{},bridge:{},farm:{},office:{},factory:{},museum:{},hotel:{},airport:{},castle:{},beach:{},forest:{},mountain:{},hat:{},shirt:{},coat:{},shoe:{},dress:{},clothing:{},chair:{},desk:{},lamp:{},portrait:{},bed:{},door:{},window:{},wall:{},roof:{},pen:{},paper:{},key:{},lock:{},box:{},car:{},bicycle:{},boat:{},train:{},wheel:{},knife:{plural:"knives"},spoon:{},fork:{},plate:{},cup:{},bottle:{},bag:{},money:{},coin:{},toy:{},machine:{},clock:{},phone:{},book:{},letter:{},umbrella:{},glove:{},sock:{},ring:{},watch:{},mirror:{},candle:{},ladder:{},hammer:{},basket:{},wallet:{},dog:{},cat:{},horse:{},cow:{},pig:{},sheep:{},bird:{},fish:{},mouse:{plural:"mice"},rabbit:{},rodent:{},bear:{},lion:{},tiger:{},elephant:{},snake:{},mole:{},groundhog:{},meerkat:{},tree:{},flower:{},grass:{},leaf:{plural:"leaves"},root:{},seed:{},fruit:{},water:{},air:{},fire:{},earth:{},stone:{},sand:{},gold:{},iron:{},rain:{},snow:{},wind:{},cloud:{},sun:{},moon:{},star:{},owl:{},wolf:{plural:"wolves"},frog:{},bee:{},ant:{},butterfly:{},spider:{},river:{},ocean:{},time:{},day:{},night:{},morning:{},evening:{},week:{},month:{},year:{},hour:{},minute:{},second:{},moment:{},season:{},spring:{},summer:{},winter:{},wedding:{},race:{},dozen:{},half:{plural:"halves"},amount:{},meeting:{},game:{},war:{},trip:{},birthday:{},holiday:{},autumn:{},century:{},body:{},head:{},hand:{},arm:{},leg:{},foot:{plural:"feet"},eye:{},ear:{},mouth:{},nose:{},hair:{},heart:{},blood:{},bone:{},skin:{},face:{},food:{},bread:{},meat:{},milk:{},egg:{},cheese:{},vegetable:{},meal:{},breakfast:{},dinner:{},drink:{},wine:{},tea:{},coffee:{},tongue:{},tooth:{plural:"teeth"},finger:{},toe:{},shoulder:{},knee:{},brain:{},lung:{},sugar:{},salt:{},word:{},story:{},news:{},idea:{},thought:{},mind:{},memory:{},dream:{},belief:{},love:{},hate:{},fear:{},joy:{},anger:{},hope:{},surprise:{},pride:{},song:{},music:{},sound:{},voice:{},picture:{},art:{},knowledge:{},opinion:{},reason:{},imagination:{},laughter:{},tear:{},smile:{},silence:{},object:{},location:{},quantity:{},organization:{},animal:{},plant:{},furniture:{},vehicle:{},insect:{},emotion:{},metal:{},liquid:{},weather:{},planet:{},jewelry:{},cutlery:{},government:{},material:{},draw:{},set:{},heavy:{},stand:{},free:{},pack:{},dead:{},pick:{},double:{},straight:{},cast:{},dry:{},bank:{},stamp:{},tender:{},fair:{},active:{},regular:{},blue:{},hack:{},band:{},brush:{},guard:{},master:{},transfer:{},firm:{},side:{},bull:{},mate:{},rank:{},board:{},brace:{},grade:{},better:{},course:{},natural:{},butt:{},camp:{},crop:{},date:{},fold:{},help:{},hunt:{},count:{},court:{},crush:{},major:{},march:{},tease:{},tough:{},flight:{},forward:{},division:{},commission:{},jam:{},rat:{},gray:{},hood:{},jerk:{},miss:{},pile:{},pool:{},rear:{},whip:{},bench:{},chain:{},cycle:{},grind:{},guide:{},stiff:{},troll:{},union:{},circle:{},carrier:{},defence:{},defense:{},radical:{},reserve:{},intimate:{},opposite:{},superior:{},grey:{},host:{},knot:{},left:{},lost:{},blind:{},crank:{},panel:{},rally:{},state:{},tramp:{},waver:{},clutch:{},living:{},runner:{},steady:{},stream:{},combine:{},company:{},convert:{},general:{},moderate:{},alternate:{},ace:{},crab:{},flop:{},fund:{},pair:{},rake:{},rock:{},sick:{},blade:{},cheat:{},sport:{},caller:{},column:{},couple:{},divine:{},pledge:{},simple:{},sponge:{},system:{},wanton:{},sleeper:{},business:{},associate:{},instrument:{},substitute:{},gun:{},sum:{},alto:{},best:{},buff:{},dear:{},mass:{},cream:{},creep:{},giant:{},labor:{},pilot:{},sneak:{},stack:{},staff:{},world:{},gutter:{},jumper:{},labour:{},lather:{},picket:{},reader:{},savage:{},captain:{},culture:{},monitor:{},neutral:{},unknown:{},utility:{},inferior:{},initiate:{},innocent:{},national:{},transpose:{},association:{},professional:{},bum:{},fan:{},law:{},deck:{},fool:{},join:{},kink:{},page:{},pink:{},stud:{},twin:{},clump:{},coach:{},dance:{},drone:{},extra:{},feast:{},fence:{},fleet:{},flock:{},ghost:{},clear:{},right:{},open:{},beat:{},back:{},block:{},see:{},keep:{},square:{},pitch:{},center:{},centre:{},top:{},post:{},field:{},spot:{},bar:{},end:{},frame:{},rough:{},address:{},quarter:{},position:{},land:{},bound:{},range:{},seat:{},dark:{},rail:{},cross:{},section:{},tip:{},plug:{},port:{},stall:{},corner:{},outside:{},dig:{},way:{},front:{},joint:{},patch:{},reach:{},thick:{},medium:{plural:"media"},dock:{},ruin:{},tack:{},floor:{},bottom:{},puddle:{},compound:{},retreat:{},mat:{},belt:{},dump:{},scene:{},space:{},border:{},common:{},cradle:{},inside:{},surface:{},lie:{},boot:{},clog:{},coil:{},nest:{},wire:{},yard:{},forge:{},limit:{},lodge:{},buffer:{},middle:{},capital:{},overhead:{},preserve:{},terminal:{},direction:{},hall:{},loft:{},plot:{},tape:{},grate:{},stoop:{},fringe:{},circuit:{},distance:{},derivation:{},bent:{},gate:{},mill:{},safe:{},sail:{},hedge:{},paint:{},parcel:{},sphere:{},bearing:{},profile:{},shelter:{},crossing:{},interior:{},reservation:{},area:{},bush:{},cork:{},dive:{},limb:{},raft:{},shed:{},zone:{},chase:{},cut:{},light:{},charge:{},check:{},work:{},stock:{},stick:{},flat:{},crack:{},press:{},settle:{},spread:{},wash:{},well:{},swing:{},fly:{},tap:{},stretch:{},shot:{},black:{},strip:{},separate:{},tie:{},rack:{},match:{},piece:{},shell:{},still:{},present:{},trim:{},spike:{},split:{},white:{},yield:{},squeeze:{},bolt:{},fret:{},choke:{},float:{},track:{},low:{},crown:{},screen:{},die:{plural:"dice"},pin:{},chip:{},mold:{},seal:{},draft:{},shade:{},shaft:{},stuff:{},switch:{},balance:{},reverse:{},subject:{},approach:{},beam:{},bill:{},card:{},link:{},sack:{},sink:{},trap:{},spare:{},credit:{},counter:{},express:{},positive:{},net:{},pay:{},ball:{},bond:{},bowl:{},horn:{},pole:{},wing:{},glass:{},grant:{},smack:{},collar:{},record:{},ruffle:{},silver:{},negative:{},cap:{},lap:{},pad:{},rag:{},rig:{},bend:{},clip:{},fine:{},flap:{},heel:{},pall:{},pump:{},gauge:{},image:{},plain:{},print:{},slick:{},spoil:{},clinch:{},gather:{},offset:{},pocket:{},relief:{},channel:{},whistle:{},irregular:{},transport:{},bat:{},ice:{},peg:{},pot:{},bust:{},grip:{},hole:{},nail:{},poke:{},slug:{},spat:{},stem:{},suit:{},yoke:{},flood:{},grand:{},gross:{},perch:{},slip:{},down:{},shoot:{},ground:{},discharge:{},solid:{},kill:{},slack:{},waste:{},rush:{},grain:{},shake:{},pit:{},mould:{},colour:{},render:{},mount:{},cutting:{},fill:{},flux:{},tail:{},plaster:{},swallow:{},concentrate:{},bay:{},gum:{},ray:{},slop:{},spur:{},extract:{},fat:{},hop:{},corn:{},rust:{},smut:{},label:{},stain:{},composition:{},gas:{},pip:{},duck:{},gall:{},lime:{},mint:{},tick:{},stalk:{},whiff:{},cement:{},rubber:{},conjugate:{},preparation:{},dun:{},dust:{},jade:{},mire:{},pulp:{},snag:{},bloom:{},caper:{},crude:{},fluid:{},frost:{},paste:{},rinse:{},steam:{},straw:{},corona:{},poison:{},refuse:{},savory:{},feather:{},ferment:{},organic:{},chestnut:{},mushroom:{},percolate:{},sublimate:{},synthetic:{},suspension:{},precipitate:{},cod:{},pet:{},rod:{},bunt:{},crow:{},hide:{},punk:{},vein:{},assay:{},goose:{plural:"geese"},olive:{},stray:{},trash:{},ginger:{},pepper:{},permit:{},polish:{},sorrel:{},blister:{},bristle:{},complex:{},filling:{},flicker:{},harvest:{},scollop:{},whiting:{},anteater:{},snowball:{},tincture:{},repellent:{},ink:{},lip:{},nag:{},rue:{},wad:{},acid:{},beak:{},bean:{},coal:{},dirt:{},fawn:{},fuel:{},lark:{},ling:{},mash:{},palm:{},pelt:{},plum:{},pony:{},pout:{},soil:{},stag:{},bream:{},brier:{},chalk:{},coral:{},fiber:{},fall:{},pass:{},lift:{},go:{},roll:{},drop:{},blow:{},return:{},strike:{},rise:{},snap:{},shift:{},twist:{},case:{},deal:{},start:{},deep:{},jump:{},step:{},stop:{},pound:{},advance:{},pop:{},flash:{},rest:{},crash:{},score:{},figure:{},leave:{},smash:{},stroke:{},first:{},sweep:{},even:{},flow:{},kick:{},heave:{},trace:{},opening:{},full:{},gain:{},jack:{},spin:{},wave:{},splash:{},bob:{},bang:{},dash:{},flick:{},hitch:{},prime:{},proof:{},passing:{},bit:{},click:{},knock:{},swell:{},trouble:{},collapse:{},movement:{},standard:{},variation:{},rap:{},boom:{},bump:{},clap:{},pace:{},peck:{},zero:{},blaze:{},speed:{},spell:{},treat:{},bounce:{},factor:{},little:{},plunge:{},scrape:{},single:{},ban:{},mix:{},one:{},mesh:{},roar:{},tilt:{},climb:{},flip:{},puff:{},bite:{},feed:{},bitter:{},chop:{},sour:{},special:{},crisp:{},tonic:{},scallop:{},mess:{},quick:{},smear:{},fillet:{},curl:{},malt:{},glaze:{},souse:{},breast:{},humour:{},draught:{},delicacy:{},dressing:{},transplant:{},hip:{},sop:{},kiss:{},mush:{},neck:{},belly:{},frank:{},jumble:{},junket:{},trifle:{},stomach:{},clot:{},shin:{},stew:{},tart:{},cheek:{},graft:{},molar:{},roast:{},spice:{},stout:{},sweat:{},groove:{},region:{},savoury:{},western:{},backbone:{},conserve:{},dominant:{},macerate:{},melancholy:{},cake:{},lens:{},loaf:{plural:"loaves"},menu:{},must:{},peel:{},pore:{},suds:{},butch:{},cling:{},curry:{},drool:{},honey:{},jerky:{},juice:{},mince:{},nasal:{},nerve:{},sauce:{},tract:{},dainty:{},entree:{},facial:{},relish:{},squash:{},brittle:{},caramel:{},cordial:{},fissure:{},oblique:{},adhesion:{},turnover:{},nonpareil:{},posterior:{},vegetation:{},ail:{},orb:{},pap:{},rum:{},brew:{},chew:{},hash:{},lard:{},rump:{},brine:{},dowdy:{},farce:{},flour:{},fudge:{},halal:{},icing:{},lunch:{},play:{},make:{},hold:{},close:{},mark:{},form:{},order:{},support:{},rule:{},sign:{},hang:{},drag:{},feel:{},find:{},shock:{},mean:{},offer:{},study:{},show:{},tone:{},flare:{},attack:{},act:{},life:{plural:"lives"},stay:{},think:{},secret:{},account:{},hurt:{},note:{},taste:{},report:{},measure:{},condition:{},cry:{},focus:{plural:"foci"},style:{},thing:{},title:{},recall:{},average:{},contract:{},dissolve:{},so:{},aim:{},bind:{},heat:{},know:{},stir:{},claim:{},power:{},demand:{},design:{},notice:{},source:{},upgrade:{},resolution:{},bid:{},skim:{},brand:{},curve:{},sight:{},smoke:{},digest:{},regard:{},passage:{},program:{},exposure:{},interest:{},character:{},projection:{},lay:{},curse:{},favor:{},remit:{},sense:{},slash:{},wedge:{},bubble:{},excuse:{},favour:{},invite:{},mantle:{},salute:{},stress:{},survey:{},temper:{},comfort:{},neglect:{},resolve:{},respect:{},torment:{},conflict:{},dispatch:{},standing:{},challenge:{},programme:{},background:{},conclusion:{},impression:{},particular:{},withdrawal:{},cite:{},echo:{},hail:{},rip:{},lot:{},great:{},relay:{},tenor:{},browse:{},bundle:{},chorus:{},cypher:{},fellow:{},litter:{},marine:{},native:{},occult:{},plague:{},rocker:{},scheme:{},series:{plural:"series"},social:{},streak:{},sucker:{},teaser:{},antique:{},battery:{},bracket:{},founder:{},gallery:{},liberal:{},starter:{},turnout:{},witness:{},diagonal:{},familiar:{},ordinary:{},prospect:{},sequence:{},aggregate:{},authority:{},community:{},dependent:{},desperate:{},patronage:{},primitive:{},principal:{},complement:{},engagement:{},foundation:{},generation:{},settlement:{},combination:{},lightweight:{},steamroller:{},subordinate:{},organisation:{},establishment:{},representative:{},con:{},fox:{},kid:{},pod:{},red:{},sex:{},spy:{},vet:{},aged:{},bore:{},diet:{},fare:{},gown:{},hawk:{},heap:{},herd:{},hive:{},lump:{},romp:{},sort:{},agent:{},alien:{},beard:{},brave:{},breed:{},brood:{},canon:{},craft:{},crazy:{},devil:{},dummy:{},equal:{},flake:{},groom:{},mound:{},organ:{},scrub:{},toast:{},troop:{},youth:{},colony:{},copper:{},cutter:{},escort:{},feeder:{},junior:{},maroon:{},matrix:{plural:"matrices"},modern:{},muscle:{},people:{},sector:{},shrink:{},tinker:{},topper:{},booster:{},gallant:{},hostile:{},marshal:{},network:{},nucleus:{plural:"nuclei"},premier:{},scourge:{},secular:{},sitting:{},snapper:{},suspect:{},swagger:{},traffic:{},variant:{},cardinal:{},derelict:{},domestic:{},favorite:{},finisher:{},graduate:{},humanist:{},infernal:{},magazine:{},manifold:{},minister:{},palatine:{},presence:{},receiver:{},relation:{},favourite:{},following:{},goldbrick:{},operative:{},sensitive:{},syndicate:{},complexion:{},mouthpiece:{},withdrawer:{},appointment:{},conjugation:{},constituent:{},heavyweight:{},incompetent:{},independent:{},replacement:{},underground:{},untouchable:{},conservative:{},administration:{},ape:{},gem:{},hob:{},sap:{},van:{},axis:{plural:"axes"},chap:{},char:{},crew:{},cult:{},duet:{},gang:{},hero:{},hire:{},lamb:{},lame:{},mute:{},nude:{},pawn:{},pill:{},sage:{},soul:{},tout:{},trio:{},ward:{},worm:{},bunch:{},crimp:{},dwarf:{},elect:{},flank:{},ideal:{},noble:{},octet:{},quack:{},saint:{},scrag:{},shark:{},shoal:{},silly:{},skunk:{},super:{},witch:{},zombi:{},agency:{},anchor:{},backup:{},batter:{},buster:{},canary:{},circus:{},dealer:{},domain:{},doomed:{},genius:{},gossip:{},herald:{},hoodoo:{},hopper:{},immune:{},jockey:{},legion:{},member:{},nature:{},orphan:{},parade:{},peanut:{},pillar:{},pirate:{},player:{},porter:{},pusher:{},putter:{},senior:{},septet:{},sestet:{},sextet:{},surety:{},tapper:{},tiller:{},zombie:{},adjunct:{},butcher:{},captive:{},cascade:{},chapter:{},charity:{},checker:{},chicane:{},chicken:{},climber:{},cognate:{},consort:{},cracker:{},dresser:{},gentile:{},invalid:{},knocker:{},lineage:{},mission:{},mixture:{},monster:{},offence:{},partner:{},pioneer:{},pitcher:{},quartet:{},quintet:{},recruit:{},referee:{},shooter:{},spoiler:{},sponsor:{},stemmer:{},steward:{},striker:{},terrace:{},alliance:{},castrate:{},designer:{},director:{},ensemble:{},faithful:{},friendly:{},mandarin:{},operator:{},romantic:{},accessory:{},annoyance:{},attendant:{},bourgeois:{},precedent:{},quadruple:{},reception:{},recession:{},religious:{},reprobate:{},satellite:{},selection:{},sensation:{},supporter:{},contingent:{},convention:{},expedition:{},incendiary:{},individual:{},masquerade:{},population:{},sweetheart:{},tubercular:{},confederate:{},cooperative:{},subdivision:{},territorial:{},transcriber:{},intelligence:{},registration:{},sophisticate:{},welterweight:{},revolutionary:{},ex:{},ass:{},cog:{},cub:{},den:{},dud:{},duo:{},ham:{},hog:{},mob:{},pro:{},deaf:{},dove:{},fate:{},five:{},folk:{},gull:{},jinx:{},mime:{},nark:{},nine:{},pest:{},prey:{},quad:{},rash:{},scab:{},sire:{},wisp:{},wood:{},zany:{},armor:{},batch:{},bogey:{},caste:{},chief:{},choir:{},clone:{},divan:{},drunk:{},elder:{},enemy:{},exile:{},faith:{},flirt:{},grunt:{},joker:{},lobby:{},louse:{plural:"lice"},pagan:{},pivot:{},racer:{},rebel:{},scout:{},siren:{},slave:{},swarm:{},timid:{},triad:{},tribe:{},armour:{},bearer:{},censor:{},choker:{},convoy:{},covert:{},damned:{},deputy:{},empire:{},goffer:{},gopher:{},huddle:{},killer:{},league:{},martyr:{},muster:{},mystic:{},outfit:{},packet:{},palace:{},passer:{},patrol:{},potter:{},quarry:{},rigger:{},ringer:{},rustic:{},scribe:{},sitter:{},slider:{},slouch:{},squire:{},squirt:{},stupid:{},summit:{},tailor:{},tenant:{},terror:{},tracer:{},turkey:{},turner:{},venter:{},voider:{},voodoo:{},walker:{},worthy:{},academy:{},agonist:{},amateur:{},ancient:{},banquet:{},cabinet:{},cashier:{},classic:{},commune:{},courser:{},crammer:{},current:{},divider:{},economy:{},edition:{},emperor:{},entrant:{},fireman:{},lookout:{},octette:{},orderly:{},painter:{},pervert:{},plotter:{},plunger:{},roaster:{},sampler:{},scanner:{},sellout:{},skimmer:{},skipper:{},society:{},soprano:{},spastic:{},spotter:{},stratum:{plural:"strata"},trimmer:{},tripper:{},trooper:{},tumbler:{},upstart:{},veteran:{},wheeler:{},academic:{},agnostic:{},aviation:{},backstop:{},baritone:{},calendar:{},casualty:{},colonial:{},divinity:{},fireball:{},homeless:{},huckster:{},marriage:{},militant:{},military:{},ministry:{},modifier:{},partisan:{},pedigree:{},possible:{},recorder:{},regiment:{},renegade:{},repeater:{},revenant:{},septette:{},sextette:{},shepherd:{},stalwart:{},stringer:{},stripper:{},whistler:{},affiliate:{},ascendant:{},bacchanal:{},canvasser:{},cockscomb:{},collector:{},comforter:{},commander:{},companion:{},conductor:{},crossover:{},eccentric:{},executive:{},fledgling:{},franchise:{},freelance:{},incumbent:{},mercenary:{},moderator:{},neighbour:{},newspaper:{},patriarch:{},patrician:{},portfolio:{},quartette:{},quintette:{},repertory:{},secretary:{},segregate:{},spearhead:{},stigmatic:{},summation:{},transient:{},trumpeter:{},voluntary:{},absolutism:{},anthropoid:{},apparition:{},assemblage:{},collective:{},contractor:{},delinquent:{},episcopate:{},exaltation:{},exposition:{},illiterate:{},judicature:{},leadership:{},lieutenant:{},minimalist:{},percussion:{},profligate:{},provincial:{},rendezvous:{},brotherhood:{},determinant:{},distributor:{},interpreter:{},stipendiary:{},analphabetic:{},antediluvian:{},civilisation:{},civilization:{},commonwealth:{},conglomerate:{},contemporary:{},cosmopolitan:{},humanitarian:{},neighborhood:{},thoroughbred:{},ultramontane:{},concatenation:{},featherweight:{},superordinate:{},classification:{},fundamentalist:{},cop:{},don:{},eon:{},gal:{},gob:{},god:{},hoe:{},kin:{},nan:{},pup:{},wag:{},wit:{},aeon:{},ally:{},bard:{},chum:{},clew:{},dean:{},fink:{},flak:{},geek:{},goof:{},hulk:{},idol:{},lady:{},loon:{},mace:{},para:{},ruck:{},seer:{},self:{plural:"selves"},adder:{},angel:{},augur:{},baron:{},blond:{},brick:{},brute:{},cabal:{},champ:{},comic:{},crier:{},decoy:{},demon:{},diner:{},diver:{},diwan:{},drove:{},envoy:{},fiend:{},flack:{},flier:{},flyer:{},freak:{},gaudy:{},harpy:{},horde:{},indie:{},jewel:{},leech:{},levee:{},liege:{},locus:{},loser:{},mimic:{},needy:{},nymph:{},oiler:{},poser:{},pupil:{},riser:{},roper:{},rummy:{},scold:{},squad:{},timer:{},tutor:{},usher:{},vicar:{},whale:{},wiper:{},affine:{},albino:{},angler:{},badass:{},baster:{},beggar:{},blonde:{},bomber:{},bowler:{},butter:{},carver:{},caster:{},chichi:{},clinic:{},closer:{},cohort:{},coiner:{},comber:{},cookie:{},cordon:{},corpus:{},cotter:{},cowboy:{},coyote:{},critic:{},dragon:{},drawer:{},drudge:{},eleven:{},ensign:{},estate:{},ethnic:{},exarch:{},finder:{},fodder:{},gaffer:{},gainer:{},galaxy:{},granny:{},hacker:{},hedger:{},heller:{},holder:{},honker:{},hooker:{},hotdog:{},inmate:{},intern:{},jungle:{},knight:{},kvetch:{},lineup:{},lovely:{},magpie:{},maiden:{},mailer:{},maniac:{},matron:{},miller:{},muller:{},nation:{},opener:{},ouster:{},packer:{},parrot:{},patron:{},peeler:{},peeper:{},polity:{},poster:{},powwow:{},punter:{},puppet:{},purdah:{},racist:{},rafter:{},ramrod:{},redact:{},regent:{},rusher:{},sailor:{},scorer:{},seeder:{},shaver:{},slaver:{},slicer:{},smoker:{},snitch:{},syntax:{},tacker:{},tagger:{},tanker:{},tartar:{},teller:{},thrush:{},trigon:{},troika:{},truant:{},tucker:{},tyrant:{},umpire:{},undoer:{},vestal:{},virgin:{},votary:{},warren:{},washer:{},wetter:{},winder:{},winner:{},wizard:{},admirer:{},amnesic:{},analyst:{},anomaly:{},aphasic:{},armorer:{},arrival:{},ascetic:{},auditor:{},baggage:{},bastion:{},biology:{},boarder:{},brahman:{},brahmin:{},breaker:{},caravan:{},clapper:{},cluster:{},coaster:{},cobbler:{},college:{},convict:{},council:{},counsel:{},coxcomb:{},crawler:{},creeper:{},crewman:{},crimper:{},darling:{},destiny:{},dragoon:{},dreamer:{},duality:{},echelon:{},ejector:{},fiddler:{},fighter:{},flasher:{},forbear:{},harrier:{},holdout:{},hostess:{},incubus:{},ingenue:{},justice:{},kachina:{},kindred:{},kingpin:{},macumba:{},manikin:{},marcher:{},married:{},newborn:{},notable:{},nursing:{},outpost:{},parvenu:{},patient:{},payroll:{},peasant:{},phalanx:{},phantom:{},planter:{},platoon:{},plodder:{},poacher:{},printer:{},prodigy:{},puncher:{},realist:{},redhead:{},revival:{},runaway:{},scholar:{},sharpie:{},skidder:{},slicker:{},slogger:{},smasher:{},snorter:{},snuffer:{},spinner:{},splicer:{},stalker:{},stamper:{},standby:{},stepper:{},striper:{},sweeper:{},thrower:{},triplet:{},utopian:{},utterer:{},voucher:{},washout:{},watcher:{},wiggler:{},wrecker:{},affluent:{},armourer:{},attender:{},bacchant:{},bachelor:{},bankrupt:{},bisexual:{},bondsman:{},cautious:{},congress:{},corporal:{},creature:{},decadent:{},defeated:{},delegate:{},diabetic:{},dictator:{},dyslexic:{},effector:{},exponent:{},flagging:{},freshman:{},fugitive:{},futurist:{},garrison:{},greyback:{},hangover:{},humanism:{},immortal:{},juvenile:{},lapidary:{},mainstay:{},mannikin:{},maverick:{},mechanic:{},minority:{},minstrel:{},mistress:{},monotype:{},mutation:{},nativist:{},neophyte:{},neurotic:{},newsroom:{},nobility:{},opponent:{},pacifier:{},pantheon:{},planting:{},probable:{},producer:{},recusant:{},referral:{},reminder:{},retainer:{},ruralism:{},scalawag:{},scrubber:{},searcher:{},sergeant:{},sociable:{},songster:{},splitter:{},squadron:{},straggle:{},strawman:{},survivor:{},taxonomy:{},treasury:{},vanguard:{},virtuoso:{},walloper:{},warhorse:{},yearling:{},alcoholic:{},anorectic:{},artificer:{},artillery:{},attracter:{},attractor:{},automaton:{},auxiliary:{},barbarian:{},bombshell:{},brokerage:{},coalition:{},concourse:{},contralto:{},counselor:{},crewwoman:{},cyberpunk:{},defaulter:{},deliverer:{},democracy:{},dependant:{},descender:{},dissident:{},dyspeptic:{},feudatory:{},firewoman:{},flyweight:{},incurable:{},institute:{},insurgent:{},intellect:{},introvert:{},mandatory:{},mendicant:{},middleman:{},navigator:{},organiser:{},organizer:{},pluralism:{},pluralist:{},pothunter:{},precursor:{},predictor:{},presenter:{},pretender:{},processor:{},proconsul:{},publisher:{},quintuple:{},registrar:{},regulator:{},scallywag:{},scavenger:{},scrambler:{},scratcher:{},serration:{},singleton:{},stargazer:{},stockpile:{},successor:{},surrogate:{},symbolism:{},temporary:{},throwback:{},trickster:{},warrantee:{},womanhood:{},antagonist:{},attendance:{},blackguard:{},bondswoman:{},chancellor:{},classifier:{},conference:{},conformist:{},counsellor:{},crossroads:{},descendant:{},descendent:{},doorkeeper:{},embodiment:{},expatriate:{},federation:{},fellowship:{},filibuster:{},forerunner:{},fratricide:{},grandstand:{},mastermind:{},minstrelsy:{},missionary:{},ordination:{},plantation:{},powerhouse:{},quadruplet:{},quintuplet:{},repatriate:{},republican:{},respondent:{},rubberneck:{},salamander:{},scholastic:{},separatism:{},sisterhood:{},subscriber:{},subsidiary:{},supplicant:{},suppresser:{},suppressor:{},timekeeper:{},translator:{},university:{},wallflower:{},abomination:{},academician:{},agriculture:{},anachronism:{},antiquarian:{},beneficiary:{},bureaucracy:{},clairvoyant:{},conditioner:{},confederacy:{},consumptive:{},deification:{},enlightened:{},incarnation:{},lilliputian:{},middlewoman:{},narcoleptic:{},nationalist:{},partnership:{},peacekeeper:{},peripatetic:{},pontificate:{},progression:{},prosecution:{},quarterback:{},recessional:{},romanticist:{},shipbuilder:{},transmitter:{},transsexual:{},underwriter:{},undesirable:{},utilitarian:{},acquaintance:{},bantamweight:{},collaborator:{},congregation:{},conservatory:{},countertenor:{},demonstrator:{},denomination:{},headquarters:{},illegitimate:{},investigator:{},metropolitan:{},middleweight:{},noncombatant:{},philharmonic:{},schoolmaster:{},sharpshooter:{},totalitarian:{},authoritarian:{},confederation:{},correspondent:{},reincarnation:{},schizophrenic:{},supernumerary:{},categorization:{},tatterdemalion:{},instrumentality:{},internationalist:{},bey:{},cox:{},cur:{},few:{},foe:{},hag:{},lad:{},mod:{},obi:{},sib:{},aide:{},amah:{},anti:{},army:{},beau:{},bevy:{},bogy:{},chit:{},clod:{},coon:{},czar:{},dada:{},dame:{},derp:{},dodo:{},dude:{},duke:{},dupe:{},gild:{},giro:{},goat:{},goon:{},grad:{},guru:{},heir:{},hobo:{},hunk:{},jilt:{},jock:{},jury:{},khan:{},maid:{},naif:{},navy:{},nerd:{},peri:{},pimp:{},putz:{},sect:{},suer:{},swot:{},tuft:{},adept:{},baker:{},basso:{},beast:{},bride:{},bunny:{},cadre:{},comer:{},cooky:{},corps:{},covey:{},deist:{},edger:{},elite:{},emcee:{},enate:{},faery:{},fatty:{},fauna:{},felon:{},filer:{},flora:{},folks:{},forum:{},genus:{plural:"genera"},ghoul:{},gipsy:{},giver:{},gnome:{},grove:{},gypsy:{},hajji:{},hakim:{},junky:{},knave:{},lefty:{},leper:{},loony:{},macho:{},madam:{},magus:{},medic:{},mezzo:{},miler:{},mooch:{},mufti:{},nabob:{},nexus:{},ninja:{},obeah:{},parer:{},pigmy:{},poilu:{},ponce:{},prior:{},proxy:{},puppy:{},pygmy:{},quint:{},raver:{},rover:{},satyr:{},scamp:{},sheik:{},shill:{},shrew:{},sibyl:{},sissy:{},slain:{},smith:{},snoop:{},sprog:{},stoic:{},sylph:{},taker:{},thane:{},toady:{},totem:{},trier:{},tryst:{},tuner:{},twirp:{},uncle:{},valet:{},vegan:{},vixen:{},waker:{},widow:{},wight:{},wirer:{},yenta:{},agnate:{},alexic:{},amazon:{},audile:{},avatar:{},avower:{},bagger:{},bagman:{},banker:{},barber:{},barker:{},bather:{},bawler:{},beater:{},beldam:{},bidder:{},boater:{},brewer:{},broker:{},brunet:{},bureau:{},caddie:{},camper:{},cantor:{},caucus:{},chaser:{},cherub:{},chosen:{},coeval:{},cooper:{},coquet:{},cottar:{},craven:{},cubist:{},daemon:{},deacon:{},digger:{},dodger:{},dowser:{},duette:{},dunker:{},egoist:{},eldest:{},eparch:{},erotic:{},eyeful:{},faller:{},fitter:{},flunky:{},forger:{},framer:{},gaggle:{},gagman:{},gamine:{},gasbag:{},gillie:{},goalie:{},gouger:{},grouch:{},gunman:{},gunner:{},hamlet:{},hanger:{},hawker:{},heaver:{},hermit:{},hitter:{},hummer:{},iceman:{},joiner:{},junkie:{},jurist:{},keeper:{},kelpie:{},kisser:{},lackey:{},lector:{},lifter:{},lister:{},lizard:{},loader:{},loaner:{},logjam:{},longer:{},lubber:{},lumper:{},lyceum:{},madcap:{},maenad:{},maimed:{},masher:{},medico:{},menial:{},midden:{},midget:{},minder:{},moiety:{},motile:{},nester:{},oblate:{},oilman:{},parish:{},paster:{},pelter:{},phylum:{},picker:{},plenum:{},police:{},pruner:{},psyche:{},puller:{},python:{},rabble:{},raider:{},raiser:{},ranger:{},ranker:{},rapper:{},reaper:{},redcap:{},reeler:{},regime:{},renter:{},rifler:{},romper:{},sachem:{},salter:{},sawyer:{},sealer:{},seeker:{},sender:{},sexist:{},shaker:{},shaper:{},sharpy:{},signer:{},silvan:{},sleuth:{},smiler:{},sorter:{},sphinx:{},stager:{},stater:{},supper:{},sylvan:{},talent:{},tanner:{},tester:{},theist:{},throng:{},tilter:{},tipper:{},toller:{},tosser:{},tourer:{},townie:{},trusty:{},varlet:{},vermin:{},vestry:{},victor:{},virago:{},voicer:{},waster:{},weasel:{},weaver:{},weeder:{},weeper:{},weirdo:{},whaler:{},winker:{},wraith:{},wretch:{},yakuza:{},yeoman:{},adapter:{},admiral:{},airhead:{},amalgam:{},animist:{},aphakic:{},applier:{},arbiter:{},armiger:{},atheist:{},attache:{},babbler:{},baffled:{},beldame:{},beloved:{},berserk:{},bondman:{},bounder:{},brigade:{},browser:{},buffoon:{},bulimic:{},burgher:{},caitiff:{},carload:{},catcher:{},cavalry:{},chachka:{},changer:{},charmer:{},chemist:{},cocotte:{},collage:{},compere:{},shadow:{},layer:{},north:{},orbit:{},trend:{},truss:{},vault:{},bunker:{},harbor:{},orient:{},origin:{},resort:{},safety:{},target:{},chamber:{},extreme:{},harbour:{},kingdom:{},mandate:{},outline:{},station:{},blockade:{},darkness:{},overlook:{},landscape:{},northeast:{},northwest:{},partition:{},southeast:{},southwest:{},structure:{},atmosphere:{},lug:{},tee:{},balk:{},burr:{},cage:{},drip:{},east:{},fort:{},hoop:{},west:{},cleat:{},fluke:{},scour:{},south:{},beacon:{},closet:{},duplex:{},radius:{plural:"radii"},vacuum:{},wattle:{},canteen:{},grounds:{},cloister:{},pinnacle:{},property:{},surround:{},terminus:{},anchorage:{},barricade:{},honeycomb:{},turnaround:{},institution:{},termination:{},cab:{},dam:{},brim:{},calk:{},dome:{},goal:{},hill:{},hull:{},knob:{},prop:{},seam:{},site:{},turf:{},apron:{},arena:{},baulk:{},cabin:{},grill:{},groin:{},haunt:{},lever:{},niche:{},privy:{},works:{},airway:{},barren:{},corral:{},dugout:{},fender:{},galley:{},hurdle:{},lounge:{},outlet:{},refuge:{},sconce:{},sprawl:{},temple:{},toilet:{},wicket:{},barrack:{},bulwark:{},buttery:{},cornice:{},grating:{},landing:{},leeward:{},maximum:{},pasture:{},salient:{},shingle:{},squinch:{},surgery:{},building:{},cylinder:{},downtown:{},fountain:{},landmark:{},munition:{},quadrant:{},rearward:{},sideline:{},windward:{},homestead:{},multiplex:{},perfumery:{},residence:{},stretcher:{},substrate:{},excavation:{},silhouette:{},convenience:{},culmination:{},declination:{},architecture:{},spa:{},aery:{},brow:{},bung:{},dike:{},flue:{},hell:{},tent:{},abbey:{},aisle:{},arbor:{},attic:{},booth:{},brink:{},disco:{},oxbow:{},oxeye:{},quoin:{},realm:{},salon:{},villa:{},whorl:{},barony:{},barrow:{},bazaar:{},billet:{},bustle:{},canton:{},casing:{},cellar:{},cooler:{},garage:{},ghetto:{},grille:{},hearth:{},locker:{},midway:{},muffle:{},oracle:{},remise:{},saloon:{},stocks:{},studio:{},tiptop:{},uptown:{},volute:{},arsenal:{},chassis:{},cockpit:{},commons:{},cubicle:{},dockage:{},fairway:{},fencing:{},gondola:{},heading:{},hotspot:{},lattice:{},lodging:{},minimum:{},moorage:{},pannier:{},rattrap:{},rootage:{},stowage:{},theater:{},theatre:{},vacuity:{},baseline:{},butchery:{},buttress:{},clearing:{},crosscut:{},domicile:{},erection:{},exterior:{},fanlight:{},fastness:{},firewall:{},foothold:{},frontier:{},lavatory:{},memorial:{},monument:{},mortuary:{},overhang:{},pedestal:{},scenario:{},solitude:{},sprocket:{},stockade:{},stoppage:{},vaulting:{},bombproof:{},cathedral:{},fundament:{},hindrance:{},panhandle:{},proximity:{},resonator:{},sanctuary:{},territory:{},watershed:{},confluence:{},department:{},encampment:{},flashpoint:{},groundwork:{},hinderance:{},quartering:{},substratum:{},underbelly:{},breadbasket:{},columbarium:{},destination:{},engineering:{},equinoctial:{},planetarium:{},penitentiary:{},circumference:{},confectionery:{},fortification:{},hub:{},hut:{},lee:{},sty:{},acme:{},apex:{},barn:{},brig:{},coop:{},digs:{},holy:{},jail:{},jook:{},juke:{},loge:{},mall:{},nook:{},pave:{},sash:{},silo:{},slum:{},tope:{},weir:{},abode:{},aerie:{},altar:{},bazar:{},detox:{},haven:{},heath:{},hutch:{},kraal:{},lager:{},manor:{},manse:{},navel:{},oasis:{plural:"oases"},opera:{},paddy:{},plaza:{},pylon:{},rodeo:{},shire:{},spile:{},sprag:{},venue:{},visor:{},apogee:{},arcade:{},ashram:{},asylum:{},atrium:{},bagnio:{},bailey:{},barrio:{},belfry:{},boards:{},casino:{},chapel:{},county:{},creche:{},cupola:{},deckle:{},fraise:{},haymow:{},hostel:{},kennel:{},lancet:{},larder:{},lockup:{},mihrab:{},parlor:{},plaque:{},prefab:{},prison:{},spigot:{},stacks:{},tampon:{},turret:{},vertex:{},zodiac:{},automat:{},balcony:{},batwing:{},benthos:{},borough:{},bubbler:{},bullpen:{},cabaret:{},caboose:{},chantry:{},convent:{},deanery:{},demesne:{},derrick:{},desktop:{},drydock:{},dukedom:{},dungeon:{},earldom:{},earplug:{},embassy:{},emirate:{},eparchy:{},equinox:{},fiefdom:{},florist:{},flyover:{},framing:{},funfair:{},grocery:{},hayrack:{},hospice:{},khanate:{},lunette:{},mansion:{},marquee:{},masonry:{},matting:{},midland:{},mooring:{},narthex:{},nirvana:{},obelisk:{},outback:{},parapet:{},parlour:{},pinhead:{},railing:{},rathole:{},redoubt:{},ribbing:{},rotunda:{},sanctum:{},sawmill:{},shipway:{},shoebox:{},stopple:{},tambour:{},transom:{},trellis:{},trestle:{},tribune:{},vantage:{},abutment:{},airspace:{},ambiance:{},ambience:{},backside:{},ballpark:{},basement:{},basilica:{},bioscope:{},bodywork:{},brattice:{},diggings:{},doghouse:{},dominion:{},entrepot:{},environs:{},extremum:{},farmland:{},fireside:{},hacienda:{},hideaway:{},imperium:{},jalousie:{},littoral:{},mantelet:{},mounting:{},nailhead:{},outdoors:{},palisade:{},pharmacy:{},porthole:{},province:{},revolver:{},seascape:{},sidewall:{},steerage:{},stopover:{},suburbia:{},sudatory:{},sweatbox:{},tailgate:{},turnpike:{},wellhead:{},backwater:{},bailiwick:{},beachhead:{},belvedere:{},caliphate:{},caparison:{},cellarage:{},chandlery:{},cloakroom:{},colonnade:{},cookhouse:{},couchette:{},crematory:{},crownwork:{},cubbyhole:{},dollhouse:{},dormitory:{},dripstone:{},fieldwork:{},fireguard:{},forefront:{},guardroom:{},hatchback:{},isoclinal:{},lazaretto:{},lineation:{},mezzanine:{},millinery:{},orphanage:{},outfitter:{},pleasance:{},princedom:{},revetment:{},roadblock:{},scrapheap:{},shrubbery:{},viewpoint:{},viscounty:{},workhouse:{},architrave:{},birthplace:{},borderline:{},bridgehead:{},brownstone:{},chokepoint:{},commissary:{},courthouse:{},escarpment:{},greenhouse:{},ironmonger:{},justiciary:{},laboratory:{},lamination:{},maisonette:{},metropolis:{},obstructor:{},panopticon:{},playground:{},prefecture:{},proscenium:{},quadrangle:{},rotisserie:{},sanatorium:{},suzerainty:{},tenderloin:{},triclinium:{},wellspring:{},wheelhouse:{},condominium:{},conventicle:{},crematorium:{},crenelation:{},demarcation:{},maisonnette:{},observatory:{},reformatory:{},superstrate:{},tobacconist:{},trusteeship:{},wainscoting:{},amphitheater:{},amphitheatre:{},chapterhouse:{},clotheshorse:{},delicatessen:{},fountainhead:{},haberdashery:{},municipality:{},packinghouse:{},patriarchate:{},retrenchment:{},substructure:{},superstratum:{},surroundings:{},wainscotting:{},juxtaposition:{},infrastructure:{},dec:{},inn:{},loo:{},pub:{},burg:{},cafe:{},deli:{},dorm:{},hank:{},iglu:{},kirk:{},lair:{},lawn:{},mart:{},nave:{},oast:{},rink:{},souk:{},tine:{},tipi:{},veld:{},ways:{},wold:{},yurt:{},apsis:{},burgh:{},condo:{},cubby:{},cuddy:{},dacha:{},duchy:{},duomo:{},eaves:{},flies:{},gable:{},glade:{},gulag:{},harem:{},hogan:{},igloo:{},lanai:{},layby:{},mecca:{},midst:{},motel:{},oriel:{},parts:{},patio:{},polls:{},qibla:{},roads:{},rooms:{},sauna:{},skein:{},socle:{},soddy:{},sodom:{},spire:{},stoep:{},stupa:{},tenon:{},tepee:{},tupek:{},tupik:{},veldt:{},weald:{},abatis:{},abbacy:{},alcove:{},apiary:{},arbour:{},aviary:{},bedsit:{},bethel:{},bodega:{},bounds:{},bowels:{},cabana:{},calkin:{},campus:{},carrel:{},casbah:{},casern:{},chalet:{},depths:{},dolmen:{},donjon:{},dormer:{},durbar:{},eatery:{},escarp:{},fipple:{},flange:{},flyway:{},friary:{},furket:{},gantry:{},garret:{},hangar:{},hareem:{},hayrig:{},imaret:{},isobar:{},isohel:{},isolex:{},kasbah:{},laager:{},locale:{},loggia:{},marina:{},masjid:{},meadow:{},medina:{},menhir:{},merlon:{},midair:{},morgue:{},mosque:{},mudhif:{},musjid:{},pagoda:{},paling:{},pantry:{},parvis:{},pelmet:{},piazza:{},pigsty:{},plinth:{},priory:{},pueblo:{},radome:{},setoff:{},skybox:{},skyway:{},stalls:{},storey:{},suburb:{},tenter:{},upside:{},volary:{},wigwam:{},wikiup:{},winery:{},abattis:{},airdock:{},airlock:{},alcazar:{},antapex:{},apadana:{},apojove:{},apolune:{},athanor:{},barroom:{},bascule:{},bedside:{},beeline:{},borstal:{},boudoir:{},brewery:{},brewpub:{},brothel:{},campong:{},cannery:{},capitol:{},carport:{},carrell:{},chancel:{},chateau:{},citadel:{},coaming:{},corncob:{},cottage:{},cowbarn:{},cowshed:{},cowtown:{},crinion:{},dinette:{},diocese:{},earshot:{},edifice:{},enclave:{},exurbia:{},eyeshot:{},fantail:{},feedlot:{},firebox:{},screw:{},share:{},sheet:{},slice:{},slide:{},spill:{},stage:{},stake:{},tread:{},paddle:{},weight:{},canvass:{},compact:{},undercut:{},representation:{},fin:{},gag:{},jet:{},tug:{},bark:{},bunk:{},drum:{},mask:{},pipe:{},reel:{},scan:{},blank:{},drill:{},plumb:{},plume:{},shank:{},sling:{},spray:{},pickup:{},saddle:{},trench:{},capsule:{},security:{},sacrifice:{},technical:{},can:{},jar:{},map:{},ply:{},rib:{},rim:{},web:{},bell:{},buck:{},claw:{},comb:{},copy:{},crib:{},dish:{},fake:{},foil:{},grab:{},kite:{},ramp:{},rent:{},slot:{},spit:{},tank:{},bosom:{},cable:{},charm:{},drain:{},grave:{},price:{},skirt:{},stool:{},strap:{},stump:{},trail:{},access:{},cannon:{},fiddle:{},formal:{},insert:{},launch:{},purple:{},reward:{},strand:{},tackle:{},display:{},floater:{},incline:{},limited:{},portion:{},torpedo:{},overcast:{},puncture:{},broadside:{},duplicate:{},submarine:{},surcharge:{},production:{},interchange:{},bus:{},due:{},gap:{},jaw:{},lag:{},nut:{},tin:{},win:{},arch:{},bail:{},cell:{},dope:{},fell:{},film:{},lace:{},lash:{},mail:{},pale:{},purl:{},rate:{},skid:{},sole:{},spar:{},tuck:{},vamp:{},vent:{},vest:{},brake:{},brass:{},chuck:{},cramp:{},crest:{},drape:{},elbow:{},habit:{},lease:{},lower:{},prize:{},roach:{},royal:{},scrap:{},slate:{},snare:{},snuff:{},total:{},trump:{},beaver:{},canvas:{},future:{},handle:{},header:{},jacket:{},motley:{},muzzle:{},quiver:{},rocket:{},roller:{},staple:{},wrench:{},compass:{},element:{},exhaust:{},frontal:{},thunder:{},transit:{},upstage:{},traverse:{},accession:{},allowance:{},guarantee:{},promenade:{},shipwreck:{},attachment:{},protection:{},perpendicular:{},aid:{},gig:{},gin:{},nap:{},oil:{},ram:{},bead:{},bulb:{},curb:{},dart:{},daub:{},dial:{},dose:{},exit:{},fuse:{},goad:{},item:{},knit:{},plan:{},rein:{},swag:{},veil:{},alarm:{},chart:{},cinch:{},clasp:{},eagle:{},entry:{},fluff:{},gouge:{},lance:{},meter:{},miter:{},pouch:{},probe:{},punch:{},purse:{},sable:{},scuff:{},shear:{},stern:{},taper:{},thumb:{},wharf:{},whisk:{},barrel:{},beetle:{},bronze:{},burden:{},congee:{},fleece:{},glossy:{},halter:{},limber:{},margin:{},mobile:{},needle:{},remote:{},shroud:{},sketch:{},splice:{},stripe:{},toggle:{},trough:{},volume:{},ballast:{},binding:{},blanket:{},costume:{},crackle:{},crystal:{},diamond:{},fitting:{},graphic:{},harness:{},premium:{},product:{},pyramid:{},sandbag:{},squelch:{},trammel:{},uniform:{},venture:{},warrant:{},wildcat:{},working:{},assembly:{},charcoal:{},discount:{},envelope:{},imperial:{},ligature:{},original:{},specific:{},treasure:{},vertical:{},deduction:{},distemper:{},inventory:{},objective:{},reversion:{},whitewash:{},supplement:{},contrivance:{},convertible:{},inspiration:{},intersection:{},counterbalance:{},bet:{},gel:{},gut:{},jag:{},jig:{},pan:{},pry:{},tab:{},tax:{},zip:{},bait:{},barb:{},bomb:{},cone:{},cuff:{},dado:{},disk:{},gear:{},gore:{},grid:{},harp:{},loom:{},main:{},pant:{},pike:{},prod:{},reef:{},ruff:{},sham:{},tare:{},tidy:{},tire:{},toll:{},award:{},basic:{},basin:{},baton:{},birch:{},braid:{},broom:{},clack:{},cloak:{},clout:{},crock:{},fagot:{},ferry:{},filet:{},forte:{},found:{},frail:{},jolly:{},motor:{},pedal:{},potty:{},radio:{},rivet:{},scarf:{},shore:{},shunt:{},sieve:{},splat:{},splay:{},stave:{},steal:{},steel:{},thong:{},tithe:{},torch:{},trunk:{},twine:{},upper:{},valve:{},weave:{},bridle:{},buckle:{},buffet:{},carpet:{},cotton:{},custom:{},devise:{},enamel:{},entail:{},furrow:{},girdle:{},hobble:{},mangle:{},mosaic:{},motive:{},pallet:{},pencil:{},pinion:{},powder:{},radial:{},rattle:{},rebate:{},rumble:{},shield:{},shimmy:{},shovel:{},sledge:{},sluice:{},tablet:{},throne:{},timber:{},tinsel:{},uplift:{},benefit:{},bombard:{},bootleg:{},console:{},default:{},forfeit:{},freight:{},gantlet:{},generic:{},grapple:{},journal:{},loading:{},molding:{},overlap:{},pigment:{},plastic:{},salvage:{},scooter:{},scuffle:{},spindle:{},steamer:{},stopper:{},upright:{},carriage:{},catapult:{},facility:{},laminate:{},medicine:{},offstage:{},overload:{},plastron:{},railroad:{},retrofit:{},strickle:{},throttle:{},whipping:{},wireless:{},automatic:{},blackjack:{},blackwash:{},foliation:{},interlock:{},roughcast:{},threshold:{},antiseptic:{},camouflage:{},incidental:{},intangible:{},preventive:{},reversible:{},watercolor:{},maintenance:{},watercolour:{},differential:{},prescription:{},preventative:{},prophylactic:{},reproduction:{},transcription:{},transportation:{},fob:{},guy:{},hem:{},jug:{},kit:{},saw:{},cane:{},cart:{},clam:{},coif:{},cosy:{},cozy:{},disc:{},felt:{},gash:{},hone:{},hose:{},keel:{},loot:{},luff:{},lure:{},mast:{},mend:{},mine:{},muff:{},nuke:{},plow:{},robe:{},ruby:{},snip:{},soap:{},spud:{},swab:{},tile:{},till:{},tram:{},vane:{},wand:{},weed:{},weld:{},welt:{},audio:{},audit:{},baste:{},bilge:{},brail:{},bugle:{},canal:{},chest:{},chock:{},conge:{},couch:{},crape:{},crepe:{},crook:{},flute:{},frill:{},frock:{},fusee:{},hoist:{},inset:{},kitty:{},leash:{},liner:{},mixer:{},noose:{},novel:{},pearl:{},piano:{},plait:{},quill:{},reset:{},roost:{},saber:{},sabre:{},scull:{},spear:{},squab:{},stilt:{},sulky:{},video:{},vomit:{},wagon:{},aerial:{},armory:{},baffle:{},banner:{},batten:{},binder:{},bodkin:{},bypass:{},canopy:{},chisel:{},clench:{},dollar:{},dredge:{},drogue:{},duster:{},engine:{},excise:{},facing:{},funnel:{},garner:{},hamper:{},joggle:{},kettle:{},lining:{},livery:{},lumber:{},marble:{},mortar:{},mousse:{},nickel:{},ocular:{},payoff:{},pestle:{},piping:{},pommel:{},profit:{},puzzle:{},ransom:{},ration:{},rental:{},ribbon:{},rotary:{},runway:{},saucer:{},seesaw:{},siphon:{},suture:{},tattoo:{},thatch:{},throat:{},tunnel:{},turtle:{},wealth:{},acrylic:{},armoury:{},balloon:{},bargain:{},beehive:{},blinker:{},bolster:{},caisson:{},casting:{},ceiling:{},chariot:{},chopper:{},clarion:{},clinker:{},clipper:{},cowhide:{},earnest:{},elastic:{},expense:{},festoon:{},fortune:{},garnish:{},gravure:{},grinder:{},killing:{},linkage:{},novelty:{},overall:{},overlay:{},pallium:{},perfume:{},pillory:{},pointer:{},ringlet:{},rosette:{},segment:{},shuttle:{},staging:{},trailer:{},trumpet:{},unction:{},barbecue:{},barbeque:{},disguise:{},electric:{},elevated:{},fraction:{},gauntlet:{},gossamer:{},heritage:{},homespun:{},ironclad:{},lifeline:{},lighting:{},mackinaw:{},moulding:{},pinpoint:{},pinwheel:{},poundage:{},sanguine:{},sapphire:{},scribble:{},triangle:{},underlay:{},upstairs:{},virginal:{},admission:{},amphibian:{},backstage:{},capillary:{},cartridge:{},cartwheel:{},cathartic:{},condenser:{},damascene:{},depiction:{},diaphragm:{},medallion:{},overdrive:{},pacemaker:{},reservoir:{},screening:{},sectional:{},solitaire:{},spotlight:{},undercoat:{},assessment:{},bottleneck:{},equatorial:{},overburden:{},pigeonhole:{},pocketbook:{},pontifical:{},refractory:{},reparation:{},roundabout:{},simulation:{},waterproof:{},accelerator:{},certificate:{},inheritance:{},installment:{},restorative:{},ventilation:{},modification:{},subscription:{},hospitalization:{},instrumentation:{},ax:{},axe:{},bib:{},bin:{},bur:{},cot:{},fee:{},fur:{},jib:{},lid:{},six:{},ten:{},tub:{},two:{},bath:{},bike:{},cash:{},coke:{},cope:{},cowl:{},cusp:{},darn:{},debt:{},dice:{},dory:{},duct:{},fore:{},four:{},gaff:{},gage:{},gong:{},helm:{},hemp:{},icon:{},iris:{},junk:{},kern:{},loan:{},maul:{},mink:{},pane:{},pier:{},quid:{},reed:{},rook:{},scum:{},semi:{},sump:{},swob:{},taxi:{},vice:{},ware:{},wool:{},yarn:{},yawl:{},annex:{},atlas:{},barge:{},bevel:{},chaff:{},chute:{},clamp:{},crane:{},crate:{},cubeb:{},dandy:{},dicky:{},dinky:{},dolly:{},dower:{},eight:{},fifty:{},flail:{},floss:{},folio:{},fuzee:{},genre:{},girth:{},gourd:{},grape:{},hinge:{},hobby:{},inlay:{},japan:{},ladle:{},latch:{},linen:{},means:{},mitre:{},motif:{},mulct:{},pique:{},quilt:{},quirk:{},quota:{},rifle:{},rotor:{},setup:{},seven:{},shred:{},skate:{},spade:{},spool:{},spout:{},strut:{},three:{},toner:{},trawl:{},truck:{},twill:{},virtu:{},alpaca:{},anklet:{},argyle:{},argyll:{},arnica:{},balsam:{},bender:{},birdie:{},bishop:{},blower:{},blowup:{},bolero:{},bonnet:{},bounty:{},budget:{},bullet:{},cachet:{},carbon:{},casket:{},castor:{},claxon:{},cobble:{},cobweb:{},collet:{},crenel:{},cutoff:{},cutout:{},damask:{},damper:{},dibble:{},dickey:{},dipper:{},domino:{},douche:{},dragee:{},equity:{},eyelet:{},fetish:{},foible:{},fresco:{},gaiter:{},gibbet:{},gusset:{},heckle:{},hooter:{},horror:{},hunter:{},intake:{},jigger:{},lacing:{},lappet:{},makeup:{},making:{},mallet:{},marker:{},patina:{},paving:{},platen:{},plough:{},poleax:{},portal:{},primer:{},rabbet:{},rattan:{},refill:{},retort:{},revere:{},screed:{},sheath:{},sinker:{},socket:{},splint:{},stereo:{},syphon:{},tamper:{},tandem:{},tarmac:{},tenure:{},ticker:{},trepan:{},twenty:{},velvet:{},veneer:{},vessel:{},vicuna:{},backing:{},bandage:{},bobsled:{},carving:{},central:{},chamfer:{},chequer:{},cistern:{},cleaner:{},cleanup:{},coinage:{},crochet:{},cruiser:{},curtain:{},dilator:{},distaff:{},emerald:{},etching:{},flannel:{},flounce:{},footing:{},gangway:{},garbage:{},garland:{},gauffer:{},gelatin:{},grizzle:{},hanging:{},haywire:{},lamella:{},laniard:{},lanyard:{},lashing:{},lockage:{},lounger:{},manakin:{},masking:{},meshing:{},mileage:{},mintage:{},mortice:{},mortise:{},movable:{},muffler:{},palette:{},pendant:{},pendent:{},pennant:{},pillbox:{},poleaxe:{},portage:{},pottery:{},priming:{},quarrel:{},readout:{},retread:{},roundel:{},rubbing:{},scupper:{},scuttle:{},serpent:{},shampoo:{},shellac:{},shutter:{},snaffle:{},snorkel:{},spangle:{},spouter:{},stabile:{},stinker:{},tankage:{},toehold:{},tracing:{},treadle:{},trefoil:{},truckle:{},trundle:{},vesture:{},webbing:{},whipsaw:{},wrapper:{},additive:{},adjuvant:{},aperture:{},aquatint:{},backdoor:{},basilisk:{},blowback:{},bludgeon:{},breakage:{},causeway:{},checkout:{},clincher:{},compress:{},corduroy:{},coupling:{},crossbar:{},currency:{},detector:{},dividend:{},dogtooth:{},downcast:{},followup:{},frontage:{},giveaway:{},goodwill:{},hardware:{},headgear:{},headshot:{},hypnotic:{},ignition:{},inhalant:{},lipstick:{},masthead:{},meniscus:{},metallic:{},modeling:{},nautilus:{},neckband:{},nightcap:{},ornament:{},outboard:{},partizan:{},pavement:{},pectoral:{},planking:{},plumbing:{},portable:{},pressing:{},radiator:{},remittal:{},residual:{},resource:{},roulette:{},scaffold:{},scapular:{},scissors:{plural:"scissors"},scrabble:{},springer:{},sunburst:{},tapestry:{},taxation:{},thrasher:{},tomahawk:{},totality:{},tympanum:{},valuable:{},vignette:{},wardrobe:{},widening:{},admixture:{},antiquity:{},aquaplane:{},bagatelle:{},bastinado:{},blindfold:{},blueprint:{},boomerang:{},carpetbag:{},crinoline:{},depressor:{},detergent:{},doodlebug:{},downstage:{},emergency:{},endowment:{},equalizer:{},exemption:{},extortion:{},extractor:{},facsimile:{},freewheel:{},gabardine:{},grotesque:{},hemstitch:{},horseshoe:{},invention:{},jackknife:{},microwave:{},millstone:{},miniature:{},modernism:{},nosepiece:{},ownership:{},packaging:{},pargeting:{},patchwork:{},pinstripe:{},polyester:{},potpourri:{},recording:{},refresher:{},semaphore:{},semblance:{},shielding:{},sideboard:{},skyrocket:{},slapstick:{},soporific:{},spectacle:{},starboard:{},telephone:{},telescope:{},treadmill:{},turntable:{},verdigris:{},videotape:{},whirligig:{},allocation:{},ambulatory:{},anesthetic:{},assistance:{},astringent:{},automation:{},cantilever:{},chinchilla:{},concertina:{},constraint:{},deductible:{},depilatory:{},disposable:{},elongation:{},escutcheon:{},featherbed:{},foreground:{},forfeiture:{},guillotine:{},hammerhead:{},hydroplane:{},innovation:{},intoxicant:{},knockabout:{},lithograph:{},monochrome:{},nonpayment:{},nutcracker:{},pargetting:{},peripheral:{},polychrome:{},redemption:{},stabilizer:{},stenograph:{},subvention:{},sustenance:{},technology:{},television:{},waterspout:{},anaesthetic:{},anamorphism:{},concealment:{},containment:{},copperplate:{},cornerstone:{},counterfeit:{},countersink:{},cryptograph:{},delineation:{},delinquency:{},encumbrance:{},fingerboard:{},fluorescent:{},incumbrance:{},perforation:{},pyrotechnic:{},retribution:{},subsistence:{},tensiometer:{},transporter:{},undercharge:{},withholding:{},dispensation:{},electrolytic:{},encrustation:{},inclinometer:{},incrustation:{},installation:{},intermixture:{},photogravure:{},straightaway:{},transparency:{},appropriation:{},embellishment:{},improvisation:{},merchandising:{},mystification:{},quadruplicate:{},semiautomatic:{},pharmaceutical:{},superannuation:{},aba:{},boa:{},dag:{},fax:{},gad:{},keg:{},nib:{},nog:{},pix:{},pyx:{},rep:{},ski:{},taw:{},urn:{},ante:{},arms:{},bale:{},berm:{},bier:{},bitt:{},bola:{},bolo:{},brad:{},cape:{},cask:{},cent:{},coax:{},coca:{},cosh:{},dime:{},dole:{},doll:{},garb:{},gilt:{},gyro:{},hasp:{},hypo:{},ikon:{},juju:{},lane:{},lint:{},luge:{},lute:{},maxi:{},maze:{},mini:{},mitt:{},mule:{},pail:{},perk:{},plat:{},pork:{},pouf:{},rung:{},scow:{},silk:{},sill:{},skep:{},sled:{},tamp:{},tapa:{},topi:{},trey:{},vape:{},wale:{},wick:{},adobe:{},aegis:{},aglet:{},album:{},alley:{},anode:{},anvil:{},arrow:{},auger:{},batik:{},bogie:{},bolus:{},bongo:{},borer:{},bribe:{},bulla:{},caddy:{},canoe:{},chime:{},coign:{},debit:{},denim:{},depot:{},diary:{},diode:{},drier:{},flask:{},flume:{},fount:{},frier:{},fryer:{},gauze:{},globe:{},golem:{},hijab:{},inlet:{},jimmy:{},jorum:{},kayak:{},khaki:{},lasso:{},latex:{},lisle:{},lorry:{},lucre:{},manta:{},mimeo:{},mizen:{},moire:{},mulch:{},newel:{},nylon:{},penny:{},piste:{},plush:{},poker:{},prism:{},pyxis:{},ranch:{},razor:{},relic:{},rouge:{},ruler:{},sabot:{},scape:{},sedan:{},seine:{},servo:{},shelf:{plural:"shelves"},slops:{},spoke:{},sprig:{},stele:{},steps:{},stoup:{},stove:{},strop:{},suede:{},swage:{},tammy:{},tanka:{},tappa:{},teddy:{},terms:{},toque:{},torus:{},towel:{},tunic:{},tweed:{},usury:{},verso:{},vizor:{},waist:{},winch:{},withe:{},xerox:{},yacht:{},abacus:{},afghan:{},aiglet:{},alidad:{},amends:{},arctic:{},artery:{},avenue:{},banger:{},bangle:{},banian:{},banyan:{},bauble:{},beaker:{},bicorn:{},blazon:{},boiler:{},bracer:{},broach:{},bumper:{},burner:{},buzzer:{},caftan:{},calash:{},camera:{},camion:{},camlet:{},capote:{},carton:{},casein:{},catgut:{},chaise:{},cheque:{},chiton:{},chukka:{},cither:{},cloaca:{},cloche:{},coffer:{},coffin:{},coigne:{},colors:{},corbel:{},corker:{},corset:{},crayon:{},crutch:{},dagger:{},daybed:{},detour:{},diaper:{},dickie:{},dipole:{},dirndl:{},discus:{},dogleg:{},dolman:{},dosage:{},duffel:{},duffle:{},eyecup:{},fabric:{},facade:{},falsie:{},fanjet:{},fascia:{},fetter:{},firkin:{},fizgig:{},floppy:{},frieze:{},garter:{},gimlet:{},goblet:{},guimpe:{},guinea:{},gunnel:{},harrow:{},helmet:{},hookup:{},hotbed:{},impost:{},instep:{},iodine:{},island:{},jersey:{},jetsam:{},jigsaw:{},juicer:{},kaftan:{},kibble:{},kirtle:{},lateen:{},laurel:{},ledger:{},linage:{},lunula:{},magnet:{},markup:{},miotic:{},mizzen:{},myotic:{},nipple:{},nozzle:{},onager:{},pajama:{},pavage:{},pellet:{},pennon:{},peplum:{},peyote:{},pincer:{},pipage:{},pomade:{},pompon:{},popper:{},pyjama:{},ragbag:{},reamer:{},remake:{},reseau:{},rudder:{},russet:{},scythe:{},settee:{},shades:{},shorts:{},siding:{},sleeve:{},sleigh:{},spinet:{},spline:{},stoker:{},stylus:{},sublet:{},subway:{},surtax:{},swathe:{},swivel:{},syrinx:{},taenia:{},talcum:{},tariff:{},teacup:{},teeter:{},tenner:{},tether:{},thwart:{},tocsin:{},trophy:{},trowel:{},turban:{},viewer:{},waggon:{},wampum:{},wherry:{},wicker:{},willow:{},wiring:{},woolen:{},yarder:{},zipper:{},acetate:{},aerosol:{},airline:{},alidade:{},ampulla:{},android:{},aneroid:{},annulet:{},anodyne:{},apanage:{},apparel:{},archive:{},armband:{},armilla:{},arrears:{},banding:{},basting:{},batting:{},bayonet:{},beading:{},bedding:{},bladder:{},blocker:{},blusher:{},bollock:{},bouquet:{},bracing:{},brocade:{},broiler:{},bullion:{},bunting:{},burthen:{},bushing:{},caleche:{},caliper:{},cathode:{},catwalk:{},cautery:{},charger:{},charnel:{},chemise:{},chevron:{},chimney:{},chlamys:{},circlet:{},colours:{},commode:{},cooling:{},cordage:{},coronet:{},corsair:{},crampon:{},cutaway:{},daybook:{},deadeye:{},decoder:{},diagram:{},doeskin:{},dogsled:{},doormat:{},dragger:{},dragnet:{},drapery:{},drawers:{},dustpan:{},escheat:{},eyehole:{},fixings:{},flatbed:{},flattop:{},flipper:{},foghorn:{},foliage:{},footage:{},foretop:{},forgery:{},frigate:{},funding:{},furring:{},fustian:{},garment:{},garotte:{},garrote:{},gouache:{},grapnel:{},griddle:{},hackney:{},hammock:{},harpoon:{},hassock:{},hatchel:{},hatchet:{},heating:{},hedging:{},hibachi:{},hobnail:{},holding:{},holster:{},hydrant:{},iceboat:{},igniter:{},impasse:{},ironing:{},jackpot:{},javelin:{},joinery:{},fibre:{},hazel:{},lemon:{},peach:{},plank:{},raven:{},snipe:{},spine:{},steer:{},stint:{},stunt:{},bleach:{},breath:{},callus:{},cherry:{},dimple:{},entire:{},ferret:{},filler:{},hybrid:{},jackal:{},marrow:{},orange:{},radish:{},spruce:{},stifle:{},winkle:{},endemic:{},vanilla:{},beefwood:{},calabash:{},concrete:{},emission:{},kingfish:{},solution:{},volatile:{},partridge:{},repellant:{},derivative:{},thickening:{},ash:{},bud:{},cob:{},hen:{},mew:{},mud:{},mum:{},paw:{},roe:{},sow:{},soy:{},wax:{},yam:{},beef:{},burl:{},calf:{plural:"calves"},chat:{},fowl:{},fuzz:{},gill:{},grub:{},hock:{},hoof:{},lobe:{},rose:{},scup:{},soup:{},swan:{},tint:{},tuna:{},tusk:{},alloy:{},briar:{},clove:{},coney:{},ebony:{},ether:{},filth:{},flesh:{},gumbo:{},homer:{},jelly:{},matte:{},mocha:{},reeve:{},wrack:{},annual:{},canine:{},carrot:{},cereal:{},cockle:{},feeler:{},fennel:{},flimsy:{},gargle:{},gravel:{},grouse:{},indigo:{},mammee:{},medlar:{},monkey:{},nebula:{},oyster:{},salmon:{plural:"salmon"},shiner:{},shrimp:{},sprout:{},stigma:{},blossom:{},blubber:{},buffalo:{},cabbage:{},calamus:{},catfish:{},caudate:{},caustic:{},chelate:{},chicory:{},ciliate:{},essence:{},griffon:{},hemlock:{},hydrate:{},incense:{},lighter:{},remount:{},sardine:{},stinger:{},vitriol:{},ambrosia:{},billfish:{},blackcap:{},crawfish:{},crayfish:{},earthnut:{},escallop:{},filament:{},flounder:{},infusion:{},ironwood:{},quandong:{},relative:{},ringtail:{},screamer:{},sycamore:{},alabaster:{},algarroba:{},broadbill:{},composite:{},fulminate:{},perennial:{},tangerine:{},bladderpod:{},granadilla:{},heartsease:{},periwinkle:{},tumbleweed:{},agglomerate:{},bittersweet:{},intermediate:{},dye:{},elk:{},fig:{},haw:{},oka:{},pea:{},pee:{},rye:{},sac:{},tar:{},yak:{},carp:{},clay:{},coma:{},cony:{},crud:{},cusk:{},dung:{},fang:{},foam:{},germ:{},glue:{},hare:{},hind:{},husk:{},kiwi:{},lake:{},mung:{},okra:{},pine:{},pith:{},puke:{},rice:{},roan:{},sloe:{},taro:{},teal:{},yellow:{},titi:{},twig:{},amber:{},anime:{},berry:{},boxer:{},carob:{},cedar:{},chine:{},guava:{},hound:{},husky:{},kauri:{},lemma:{},monad:{},ocher:{},ochre:{},onion:{},ounce:{},pansy:{},pecan:{},pewit:{},prawn:{},quail:{},shuck:{},sloth:{},slush:{},smelt:{},snail:{},snout:{},spawn:{},swift:{},tabby:{},thorn:{},topaz:{},umber:{},virus:{},wafer:{},wahoo:{},wheat:{},whelk:{},badger:{},bonito:{},broody:{},chrome:{},cirrus:{},cocoon:{},cowpea:{},cuckoo:{},elixir:{},grease:{},grubby:{},howler:{},jabiru:{},jargon:{},jujube:{},kernel:{},leaven:{},lentil:{},liquor:{},locust:{},manioc:{},mastic:{},mentum:{},mildew:{},mimosa:{},mullet:{},muscat:{},mutant:{},nectar:{},nettle:{},nodule:{},pawpaw:{},pecker:{},plasma:{},ruddle:{},sallow:{},shoddy:{},squill:{},starch:{},stroma:{},stucco:{},sunray:{},thorax:{},tissue:{},violet:{},walnut:{},warble:{},amyloid:{},antenna:{plural:"antennae"},apricot:{},aquatic:{},terrestrial:{},asphalt:{},avocado:{},beebalm:{},bobtail:{},builder:{},bulldog:{},caltrop:{},cayenne:{},chinook:{},coconut:{},cricket:{},cudweed:{},currant:{},cuticle:{},dasheen:{},gallfly:{},juniper:{},lacquer:{},leaflet:{},lettuce:{},macadam:{},mordant:{},mustard:{},packing:{},panther:{},papilla:{},papyrus:{},parsnip:{},pigweed:{},pollard:{},redfish:{},redwood:{},rubbish:{},saffron:{},salsify:{},shallot:{},slating:{},solvate:{},solvent:{},soybean:{},sunfish:{},truffle:{},whisker:{},abrasive:{},allspice:{},angelica:{},biennial:{},bilberry:{},bluebell:{},chickpea:{},cinnabar:{},cinnamon:{},congener:{},creosote:{},demerara:{},duckbill:{},firebird:{},fleabane:{},humanity:{},lavender:{},mahogany:{},monkfish:{},paraffin:{},peduncle:{},peroxide:{},plantain:{},rockfish:{},sandarac:{},sandwort:{},scammony:{},shamrock:{},skipjack:{},skullcap:{},snowbird:{},suckling:{},tubercle:{},alligator:{},angelfish:{},arachnoid:{},arrowroot:{},bearberry:{},blackfish:{},buckthorn:{},capitulum:{},carbonate:{},carnation:{},celluloid:{},chemistry:{},coriander:{},corrosive:{},crabapple:{},devilfish:{},emanation:{},groundnut:{},horseback:{},horsemint:{},injection:{},matchwood:{},mistletoe:{},offspring:{plural:"offspring"},pyrethrum:{},raspberry:{},razorback:{},satinwood:{},sheepskin:{},tomatillo:{},waxflower:{},whitefish:{},ammunition:{},bitterwood:{},blackberry:{},butterfish:{},chinquapin:{},coneflower:{},flagellate:{},flamboyant:{},fledgeling:{},insulation:{},peppermint:{},receptacle:{},strawberry:{},watercress:{},chittamwood:{},everlasting:{},fomentation:{},helleborine:{},honeysuckle:{},horseradish:{},huckleberry:{},salmonberry:{},shittimwood:{},strawflower:{},ultramarine:{},whitethroat:{},wintergreen:{},helmetflower:{},impregnation:{},quintessence:{},sternutatory:{},thimbleberry:{},contamination:{},extravasation:{},leatherjacket:{},pulverisation:{},pulverization:{},tortoiseshell:{},ti:{},ala:{},asp:{},eel:{},elm:{},fir:{},gar:{},neb:{},nit:{},oak:{},oat:{},sol:{},tom:{},yew:{},agar:{},akee:{},anil:{},atom:{},balm:{},bast:{},beet:{},boar:{},bole:{},bran:{},brit:{},cere:{},cero:{},chow:{},coho:{},dahl:{},dill:{},flax:{},foal:{},glop:{},gnat:{},hake:{},herb:{},hoar:{},homo:{},kaki:{},kino:{},leek:{},loin:{},mite:{},musk:{},parr:{},pear:{},poon:{},puka:{},rhea:{},saki:{},seta:{},shad:{},silt:{},slag:{},soda:{},soma:{},soot:{},soya:{},talc:{},teak:{},tufa:{},unai:{},unau:{},whey:{},woad:{},wort:{},yolk:{},zinc:{},abaca:{},alder:{},alula:{},amino:{},anise:{},apple:{},aroid:{},aster:{},balsa:{},basil:{},beech:{},betel:{},biddy:{},billy:{},biped:{},booby:{},britt:{},bruin:{},cairn:{},capon:{},caulk:{},chard:{},chess:{},chick:{},cisco:{},cohoe:{},comma:{},croup:{},cumin:{},dross:{},elver:{},epoxy:{},ergot:{},falls:{},flint:{},fossa:{},genip:{},grout:{},grume:{},henna:{},hilum:{},humus:{},hydra:{},icaco:{},ilama:{},imago:{},ivory:{},kapok:{},kenaf:{},lapin:{},larch:{},lilac:{},lotus:{},luffa:{},mahoe:{},maize:{},mamey:{},mango:{},manna:{},melon:{},moong:{},naiad:{},nanny:{},nopal:{},orris:{},osier:{},otter:{},ovary:{},ovule:{},pacer:{},panda:{},papaw:{},piggy:{},pilus:{},pinna:{},pixie:{},polyp:{},potto:{},putty:{},quira:{},robin:{},roble:{},rosin:{},scrod:{},sepia:{},sisal:{},slime:{},sorus:{},sprat:{},squid:{},stoma:{},sumac:{},swede:{},theca:{},thyme:{},trout:{plural:"trout"},tunny:{},vapor:{},velum:{},venom:{},vinyl:{},whelp:{},yeast:{},acetum:{},acinus:{},acumen:{},adduct:{},agaric:{},alkali:{},almond:{},anuran:{},archil:{},argent:{},balata:{},bamboo:{},bantam:{},barley:{},basset:{},beluga:{},bennet:{},bluing:{},bonduc:{},borage:{},capsid:{},cashew:{},cassia:{},caudex:{},celery:{},chives:{},cilium:{},citron:{},cobnut:{},cocker:{},cosmos:{},cowage:{},croton:{},cupule:{},cushaw:{},darter:{},dentin:{},dobson:{},dodder:{},donkey:{},durian:{},embryo:{},endive:{},ermine:{},falcon:{},feijoa:{},feline:{},fisher:{},fucoid:{},gadfly:{},garlic:{},glycol:{},hackle:{},haunch:{},herpes:{},hyssop:{},kaffir:{},kitten:{},lichee:{},limpet:{},linden:{},linnet:{},litchi:{},loofah:{},loquat:{},lovage:{},lupine:{},madder:{},maguey:{},manure:{},marang:{},mescal:{},mocker:{},mombin:{},mucoid:{},mudcat:{},munggo:{},murine:{},mussel:{},myrtle:{},nipper:{},nutmeg:{},obeche:{},orchil:{},orchis:{},oriole:{},padauk:{},paigle:{},papaya:{},parget:{},pasang:{},peewee:{},peewit:{},phenol:{},plaice:{},pomelo:{},poplar:{},possum:{},potato:{},pothos:{},pouter:{},puffer:{},pullet:{},pumice:{},pyrene:{},quahog:{},quartz:{},quince:{},rachis:{},raffia:{},ratter:{},relict:{},sabicu:{},saline:{},sapote:{},saurel:{},schrod:{},senega:{},septum:{},setter:{},sierra:{},simian:{},sludge:{},solder:{},spirea:{},stevia:{},sulfur:{},thrift:{},toetoe:{},tomato:{},tophus:{},triton:{},tupelo:{},turbot:{},turnip:{},vapour:{},vellum:{},wapiti:{},wasabi:{},acerola:{},actinon:{},aculeus:{},adamant:{},albumen:{},alewife:{},alfalfa:{},amboyna:{},anchovy:{},anemone:{},anionic:{},annelid:{},annulus:{},antacid:{},antlion:{},arsenic:{},aurochs:{},babbitt:{},barilla:{},beeswax:{},bimetal:{},biomass:{},bloomer:{},blotter:{},bluefin:{},blueing:{},boneset:{},boxwood:{},bracken:{},brocket:{},bromide:{},buckeye:{},bugbane:{},bugloss:{},bullock:{},bulrush:{},buzzard:{},cackler:{},cacodyl:{},caliche:{},calycle:{},cambium:{},capulin:{},caraway:{},cardoon:{},catbird:{},catechu:{},celtuce:{},ceriman:{},chalaza:{},chamois:{},chervil:{},chigger:{},citrate:{},cocoyam:{},codfish:{},comfrey:{},compost:{},cowslip:{},crappie:{},crawdad:{},crinoid:{},cyanide:{},cypress:{},dabbler:{},denizen:{},diploid:{},dogfish:{},dogwood:{},echidna:{},eelpout:{},enation:{},fallout:{},ferrite:{},fetlock:{},filaria:{},filbert:{},firebug:{},firefly:{},frijole:{},fuchsia:{},gamboge:{},ginseng:{},girasol:{},glutton:{},gobbler:{},grackle:{},grampus:{},granite:{},grizzly:{},grouper:{},grunter:{},gudgeon:{},haddock:{},halibut:{},haploid:{},haricot:{},heather:{},hepatic:{},herring:{},hickory:{},hogfish:{},honesty:{},hyaline:{},ignitor:{},inducer:{},jackass:{},jewfish:{},jonquil:{},kestrel:{},kingcup:{},kumquat:{},lactate:{},langsat:{},lanolin:{},lingcod:{},lobster:{},logwood:{},mahagua:{},majagua:{},malacca:{},mammoth:{},marabou:{},marasca:{},menthol:{},mercury:{},monarch:{},moneran:{},mongrel:{},moorhen:{},morello:{},muskrat:{},nervure:{},nitrate:{},octopus:{},oldwife:{},opossum:{},oregano:{},ostrich:{},oxheart:{},parsley:{},peacock:{},pigfish:{},pimento:{},piranha:{},plumcot:{},pollack:{},pollock:{},pompano:{},popcorn:{},poultry:{},pricket:{},puccoon:{},pulasan:{},pyrogen:{},quahaug:{},quassia:{},quetzal:{},raccoon:{},ragweed:{},ragwort:{},rattler:{},redbird:{},redpoll:{},redtail:{},reducer:{},redwing:{},remover:{},residue:{},retinal:{},rhubarb:{},rosebud:{},rostrum:{},satsuma:{},saurian:{},sequoia:{},seriema:{},skylark:{},sockeye:{},soursop:{},sparrow:{},spinach:{},spiraea:{},stentor:{},steroid:{},stubble:{},sulfate:{},sulphur:{},tangelo:{},taproot:{},tarweed:{},tarwood:{},tattler:{},taurine:{},teargas:{},timothy:{},tobacco:{},topknot:{},tortrix:{},trotter:{},varmint:{},verdure:{},viceroy:{},vinegar:{},viscose:{},vulture:{},walleye:{},waratah:{},warbler:{},waxwork:{},whooper:{},wilding:{},witloof:{},wryneck:{},abradant:{},absinthe:{},acceptor:{},actinoid:{},adhesive:{},adjutant:{},ageratum:{},agueweed:{},albacore:{},amarelle:{},amethyst:{},ammoniac:{},argonaut:{},armyworm:{},auricula:{},balancer:{},baldpate:{},barnacle:{},basswood:{},bayberry:{},bearskin:{},beetroot:{},birdlime:{},blackfly:{},blacktop:{},bluebird:{},bluefish:{},boarfish:{},bocconia:{},boxberry:{},brisling:{},broccoli:{},buckskin:{},bullhead:{},bullrush:{},canistel:{},capuchin:{},carangid:{},carbonyl:{},carboxyl:{},cardamom:{},cardamon:{},carinate:{},carnauba:{},carotene:{},cashmere:{},catalyst:{},catchfly:{},celeriac:{},cetacean:{},chimaera:{},chloride:{},cilantro:{},cinchona:{},citrange:{},cockspur:{},conodont:{},costmary:{},cowberry:{},cucumber:{},deadwood:{},detritus:{},dewberry:{},dilution:{},dolomite:{},duckling:{},ectozoan:{},eelgrass:{},effluent:{},eggplant:{},emulsion:{},estragon:{},filtrate:{},fireweed:{},flathead:{},flooring:{},forelock:{},galangal:{},garbanzo:{},grayback:{},guaiacum:{},hardtack:{},harebell:{},hawkweed:{},hazelnut:{},hedgehog:{},hepatica:{},hookworm:{},hornwort:{},horsefly:{},hyacinth:{},impurity:{},iodoform:{},jalapeno:{},jamberry:{},japonica:{},keurboom:{},kindling:{},kingwood:{},kinkajou:{},kohlrabi:{},labdanum:{},lambskin:{},locoweed:{},lovebird:{},magnolia:{},mahimahi:{},mandrake:{},margarin:{},marjoram:{},medusoid:{},mephitis:{},migrator:{},molecule:{},moonfish:{},mucilage:{},mulberry:{},nestling:{},omnivore:{},ovenbird:{},pandanus:{},pickerel:{},pilchard:{},pimiento:{},pitahaya:{},placenta:{},plumbago:{},predator:{},ptomaine:{},puffball:{},pulassan:{},purebred:{},pyrectic:{},quandang:{},quickset:{},rambotan:{},rambutan:{},redberry:{},redstart:{},reedbird:{},ricebird:{},richweed:{},ringdove:{},rockrose:{},rosefish:{},rosemary:{},rosewood:{},ruminant:{},rutabaga:{},sailfish:{},salsilla:{},saltwort:{},sandfish:{},scallion:{},seahorse:{},sealskin:{},sewerage:{},shoveler:{},siderite:{},silkworm:{},sparling:{},squealer:{},squirrel:{},stearate:{},stinkpot:{},superbug:{},surffish:{},sweetsop:{},tamarind:{},tarragon:{},teaberry:{},thresher:{},throstle:{},tilefish:{},tomentum:{},toxicant:{},turmeric:{},ungulate:{},univalve:{},urochord:{},vesicant:{},warragal:{},warrigal:{},watchdog:{},waxberry:{},weakfish:{},wolffish:{},woodbine:{},woodruff:{},wormcast:{},wriggler:{},zucchini:{},absorbent:{},adsorbate:{},adsorbent:{},albatross:{},almandine:{},andromeda:{},antiknock:{},apophysis:{},archangel:{},arsenical:{},artichoke:{},asparagus:{},aubergine:{},bacteroid:{},blackbird:{},blindworm:{},bluegrass:{},bluepoint:{},broadtail:{},brooklime:{},brookweed:{},brushwood:{},buckwheat:{},bugleweed:{},buteonine:{},butternut:{},caecilian:{},calyculus:{},candlenut:{},cantaloup:{},carambola:{},carbonado:{},carbuncle:{},cardboard:{},carnivore:{},catamount:{},celandine:{},chameleon:{},chatterer:{},chelonian:{},cherimoya:{},chickweed:{},chlamydia:{},clamshell:{},clapboard:{},coachwhip:{},cochineal:{},cocklebur:{},cocozelle:{},coltsfoot:{},commensal:{},courgette:{},crackling:{},cupflower:{},cyanamide:{},digestive:{},digitalis:{},driftfish:{},ecrevisse:{},ectoplasm:{},eiderdown:{},ephemeral:{},eutherian:{},evergreen:{},excretion:{},exudation:{},fenugreek:{},firebrand:{},firestone:{},flagellum:{},frostweed:{},funiculus:{},gladiolus:{},glasswort:{},goldeneye:{},goldfinch:{},grapevine:{},grenadier:{},hackberry:{},hamadryad:{},heartleaf:{},hellebore:{},hollyhock:{},horehound:{},horsebean:{},horsehair:{},horseweed:{},hortensia:{},hydroxide:{},jackfruit:{},jacksnipe:{},jellyfish:{},juneberry:{},lancewood:{},langouste:{},leavening:{},lemonwood:{},mammalian:{},manzanita:{},maravilla:{},marihuana:{},marijuana:{},moosewood:{},muscadine:{},muskmelon:{},nakedwood:{},nectarine:{},nighthawk:{},pasturage:{},patchouli:{},patchouly:{},pelecypod:{},pellitory:{},peregrine:{},peristome:{},persimmon:{},phosphate:{},pimpernel:{},pinchbeck:{},pineapple:{},pistachio:{},polyploid:{},probiotic:{},proboscis:{},protozoan:{},pureblood:{},quadruped:{},rauwolfia:{},recycling:{},reptilian:{},reticulum:{},rockcress:{},rootstock:{},rosinweed:{},sandpaper:{},sapodilla:{},sassafras:{},sheldrake:{},shingling:{},shoveller:{},siccative:{},sicklepod:{},snakeroot:{},snowflake:{},sourdough:{},spicebush:{},spirillum:{},stainless:{},stiffener:{},strangler:{},strawworm:{},sugarcane:{},swordfish:{},tamarindo:{},tarantula:{},topminnow:{},tulipwood:{},turquoise:{},twayblade:{},twinberry:{},wallpaper:{},whitebait:{},whiteface:{},wineberry:{},wolverine:{},workhorse:{},adulterant:{},amygdaloid:{},anopheline:{},aquamarine:{},belladonna:{},bellwether:{},bitterweed:{},blacksnake:{},blackthorn:{},bluebonnet:{},bluebottle:{},bottlenose:{},brachiopod:{},brazilwood:{},breadfruit:{},butterball:{},butterweed:{},candelilla:{},cantaloupe:{},catarrhine:{},cellulosic:{},chatterbox:{},chinaberry:{},cinquefoil:{},citronwood:{},clementine:{},condensate:{},copperhead:{},coralberry:{},cornflower:{},cottonweed:{},cottonwood:{},crossbreed:{},crustacean:{},deathwatch:{},demoiselle:{},dollarfish:{},elderberry:{},exhalation:{},feathertop:{},fetterbush:{},fiddlehead:{},flycatcher:{},fritillary:{},garambulla:{},goldenbush:{},gooseberry:{},grapefruit:{},jaboticaba:{},jackrabbit:{},ketembilla:{},kitembilla:{},lemongrass:{},littleneck:{},loganberry:{},loggerhead:{},mangosteen:{},marblewood:{},marguerite:{},massasauga:{},meerschaum:{},monoclonal:{},nasturtium:{},needlefish:{},nonstarter:{},ornamental:{},pacesetter:{},parenchyma:{},pennyroyal:{},pepperwort:{},plasmodium:{},princewood:{},propellant:{},propellent:{},pufferfish:{},pyrimidine:{},quercitron:{},restharrow:{},restrainer:{},ribbonfish:{},ribbonwood:{},rudderfish:{},sapphirine:{},scorzonera:{},sidewinder:{},silverbush:{},silverfish:{},silverweed:{},spiceberry:{},sticktight:{},sugarberry:{},superoxide:{},tarmacadam:{},turpentine:{},turtledove:{},velvetleaf:{},vertebrate:{},vesicatory:{},wandflower:{},watermelon:{},windowpane:{},witchgrass:{},yellowbird:{},yellowtail:{},yellowwood:{},adulterator:{},arthrospore:{},artiodactyl:{},bactericide:{},boysenberry:{},branchiopod:{},buffalofish:{},butcherbird:{},cauliflower:{},cherrystone:{},chittimwood:{},chokecherry:{},combustible:{},conspecific:{},digitigrade:{},dolphinfish:{},flameflower:{},gillyflower:{},groundberry:{},groundcover:{},heterocycle:{},honeyflower:{},insectivore:{},leatherleaf:{},leatherwood:{},lingonberry:{},liquidambar:{},loosestrife:{},muskellunge:{},plantigrade:{},platyrrhine:{},pomegranate:{},precipitant:{},prickleback:{},quicksilver:{},recombinant:{},refrigerant:{},shellflower:{},silversides:{},sleuthhound:{},swallowwort:{},unguiculate:{},waldmeister:{},archosaurian:{},distillation:{},heterocyclic:{},honeycreeper:{},instillation:{},invertebrate:{},nonsteroidal:{},placentation:{},sarsaparilla:{},serviceberry:{},squirrelfish:{},transudation:{},weatherboard:{},whortleberry:{},yellowhammer:{},branchiopodan:{},inflorescence:{},platyrrhinian:{},semiconductor:{},transactinide:{},vitrification:{},fructification:{},aa:{},ai:{},ani:{},auk:{},awn:{},bot:{},dak:{},daw:{},dew:{},doe:{},dug:{},eft:{},ern:{},ewe:{},gib:{},gnu:{},goo:{},ivy:{},jay:{},kea:{},kob:{},lac:{},lye:{},may:{},mei:{},moa:{},oca:{},ola:{},olm:{},pia:{},pug:{},teg:{},tup:{},acyl:{},agua:{},aloe:{},amyl:{},anoa:{},apar:{},aril:{},arui:{},atar:{},axil:{},barm:{},baya:{},bine:{},boll:{},bufo:{},buna:{},calx:{},cavy:{},chub:{},cleg:{},coco:{},colt:{},coot:{},corm:{},cows:{},craw:{},culm:{},cyme:{},dace:{},dalo:{},deer:{plural:"deer"},derv:{},dhak:{},dhal:{},dika:{},diol:{},disa:{},dita:{},dogy:{},doob:{},dopa:{},enol:{},erne:{},eyas:{},fern:{},fice:{},floc:{},fuji:{},gean:{},goby:{},guan:{},guar:{},guib:{},haem:{},halm:{},hart:{},heme:{},hogg:{},hops:{},hoya:{},ibex:{},ibis:{},inga:{},jird:{},jute:{},kali:{},kelp:{},kola:{},kudu:{},lily:{},lino:{},liza:{},loam:{},loir:{},lory:{},lynx:{},mako:{},mamo:{},mara:{},marl:{},merl:{},mica:{},milo:{},miro:{},mola:{},moss:{},munj:{},mutt:{},myna:{},nagi:{},napa:{},napu:{},neem:{},neon:{},olla:{},ombu:{},onyx:{},opah:{},opal:{},orca:{},oryx:{},paca:{},peat:{},peba:{},pika:{},pome:{},puku:{},puma:{},pupa:{},ragi:{},rimu:{},rudd:{},sago:{},salp:{},sang:{},sard:{},scut:{},sial:{},sika:{},sild:{},sima:{},skua:{},smew:{},sugi:{},tatu:{},teff:{},teju:{},tern:{},tipu:{},toad:{},tody:{},tolu:{},tuff:{},tung:{},urea:{},urus:{},vole:{},wasp:{},weka:{},blast:{},dinar:{},lapse:{},lurch:{},whirl:{},travel:{},capacity:{},encounter:{},conversion:{},separation:{},age:{},nip:{},now:{},halt:{},leap:{},mile:{},peak:{},peso:{},slam:{},term:{},wake:{},faint:{},scoop:{},surge:{},third:{},trick:{},bother:{},cackle:{},motion:{},chatter:{},reversal:{},elevation:{},experience:{},dab:{},pat:{},cube:{},howl:{},over:{},peep:{},span:{},cause:{},death:{},plump:{},plunk:{},poise:{},pulse:{},shame:{},spark:{},twang:{},wound:{},cipher:{},crunch:{},damage:{},fusion:{},period:{},racket:{},repeat:{},supply:{},wallow:{},wonder:{},dribble:{},failure:{},outrage:{},sparkle:{},backfire:{},campaign:{},delivery:{},increase:{},variance:{},explosion:{},correction:{},disturbance:{},translation:{},displacement:{},transposition:{},hum:{},mug:{},buzz:{},cord:{},dawn:{},fuss:{},hint:{},hiss:{},much:{},past:{},ping:{},rout:{},seek:{},tide:{},warp:{},birth:{},blend:{},crumb:{},delay:{},rupee:{},worst:{},climax:{},deluge:{},dirham:{},recoil:{},replay:{},rhythm:{},rising:{},descent:{},grumble:{},impulse:{},respite:{},scruple:{},triumph:{},addition:{},dogfight:{},eruption:{},occasion:{},progress:{},reprieve:{},shilling:{},stampede:{},accretion:{},induction:{},appearance:{},suggestion:{},circulation:{},irradiation:{},accommodation:{},precipitation:{},in:{},ebb:{},mil:{},zap:{},gush:{},honk:{},lull:{},plop:{},rave:{},ream:{},slap:{},then:{},zoom:{},fifth:{},final:{},gleam:{},reign:{},swash:{},throb:{},thump:{},tweet:{},wreck:{},wring:{},billow:{},breach:{},ending:{},fourth:{},gurgle:{},injury:{},nibble:{},parity:{},sunset:{},billion:{},history:{},instant:{},spatter:{},blackout:{},creation:{},decision:{},downhill:{},entrance:{},rational:{},trillion:{},hereafter:{},immersion:{},intrusion:{},millenary:{},remainder:{},saltation:{},adjustment:{},antecedent:{},dedication:{},deflection:{},impairment:{},limitation:{},outpouring:{},refinement:{},scattering:{},devastation:{},elaboration:{},fundamental:{},prohibition:{},retardation:{},interference:{},transmission:{},manifestation:{},scintillation:{},mi:{},kip:{},wee:{},yaw:{},bout:{},bray:{},doom:{},harm:{},haul:{},jolt:{},none:{},ooze:{},pity:{},sigh:{},surf:{},thaw:{},tour:{},alpha:{},carom:{},chunk:{},clink:{},colon:{},deuce:{},drama:{},glint:{},going:{},shtik:{},sixth:{},spurt:{},thrum:{},tinge:{},today:{},waltz:{},worth:{},bucket:{},egress:{},fathom:{},mutter:{},patter:{},picnic:{},quaver:{},ripple:{},rustle:{},shtick:{},sizzle:{},squawk:{},stride:{},tremor:{},whoosh:{},wobble:{},absence:{},allegro:{},andante:{},deficit:{},episode:{},heaving:{},raising:{},rebirth:{},roaring:{},rupture:{},screech:{},scrunch:{},seventh:{},success:{},sunrise:{},takeoff:{},trample:{},twinkle:{},cracking:{},deletion:{},incident:{},interval:{},isometry:{},overflow:{},rattling:{},skeleton:{},splatter:{},striking:{},twilight:{},upheaval:{},advantage:{},alignment:{},deflexion:{},diffusion:{},emergence:{},inflation:{},normality:{},remission:{},resultant:{},ruination:{},shakedown:{},vibration:{},yesterday:{},allegretto:{},conception:{},concoction:{},concretion:{},disruption:{},divergence:{},graduation:{},inflection:{},initiation:{},moderation:{},sprinkling:{},approaching:{},biquadratic:{},competition:{},compression:{},contraction:{},humiliation:{},permutation:{},constriction:{},ramification:{},accompaniment:{},embarrassment:{},mortification:{},rectification:{},coo:{},eve:{},gee:{},par:{},sea:{},sec:{},tot:{},won:{},yen:{},bash:{},beep:{},ding:{},dram:{},fete:{},gait:{},inch:{},lira:{},peal:{},pint:{},purr:{},rial:{},ting:{},toot:{},whiz:{},blare:{},bleat:{},brawl:{},cease:{},digit:{},dying:{},epoch:{},gravy:{},idyll:{},knell:{},metre:{},minim:{},ninth:{},plash:{},plonk:{},quake:{},quart:{},ravel:{},salvo:{},skirl:{},snore:{},spate:{},spirt:{},swish:{},tenth:{},unity:{},whack:{},whirr:{},years:{},ascent:{},bushel:{},curfew:{},drachm:{},eighth:{},enough:{},finale:{},fizzle:{},footer:{},gobble:{},jingle:{},marvel:{},myriad:{},octave:{},ravage:{},smudge:{},spritz:{},squeak:{},squeal:{},squish:{},swerve:{},tierce:{},usance:{},waxing:{},atrophy:{},banging:{},bending:{},blowout:{},centner:{},clangor:{},debacle:{},decimal:{},eclipse:{},glitter:{},kickoff:{},midterm:{},million:{},misfire:{},modulus:{},monsoon:{},ordinal:{},outflow:{},ringing:{},shimmer:{},sinking:{},smolder:{},torrent:{},twelfth:{},backwash:{},bouncing:{},downfall:{},dripping:{},drumbeat:{},eighties:{},eternity:{},exigency:{},footstep:{},furlough:{},gleaming:{},grinding:{},hardship:{},instance:{},invasion:{},majority:{},maturity:{},nineties:{},overtime:{},overture:{},pandemic:{},pounding:{},receding:{},recovery:{},rustling:{},scraping:{},sixtieth:{},smoulder:{},spoilage:{},spraying:{},tomorrow:{},touching:{},amplitude:{},ascension:{},athletics:{},avalanche:{},billionth:{},checkmate:{},clearance:{},collision:{},commotion:{},contagion:{},departure:{},fertility:{},formality:{},gestation:{},heartbeat:{},honeymoon:{},hundredth:{},interlude:{},irruption:{},lactation:{},millionth:{},multitude:{},onslaught:{},outgrowth:{},plurality:{},probation:{},pulsation:{},shrinkage:{},sixteenth:{},spreading:{},stalemate:{},throbbing:{},whistling:{},withering:{},affliction:{},alteration:{},betterment:{},dispersion:{},enervation:{},expiration:{},foreboding:{},incubation:{},incumbency:{},inevitable:{},irrational:{},jubilation:{},levitation:{},millennium:{plural:"millennia"},procession:{},repetition:{},revolution:{},sabbatical:{},solubility:{},subsidence:{},thousandth:{},undulation:{},visitation:{},accelerando:{},catastrophe:{},celebration:{},coincidence:{},consequence:{},continuance:{},deformation:{},dislocation:{},dissipation:{},expansivity:{},fluctuation:{},gravitation:{},oscillation:{},preliminary:{},punctuation:{},sufficiency:{},acceleration:{},augmentation:{},championship:{},commencement:{},conservation:{},deceleration:{},degeneration:{},encroachment:{},interlocking:{},reflectivity:{},consolidation:{},hundredweight:{},magnetisation:{},magnetization:{},regurgitation:{},sheepshearing:{},transmutation:{},conglomeration:{},materialisation:{},optic:{},patty:{},prune:{},saute:{},scalp:{},sinus:{},swill:{},bubbly:{},burgoo:{},choler:{},claret:{},cortex:{},crotch:{},drivel:{},frappe:{},hiatus:{},kosher:{},legume:{},macula:{},phlegm:{},pickle:{},stemma:{},thenar:{},tiptoe:{},adrenal:{},anatomy:{},confect:{},freckle:{},jugular:{},knuckle:{},mastoid:{},medulla:{},pudding:{},takeout:{},thyroid:{},tonsure:{},wassail:{},anterior:{},coloring:{},julienne:{},libation:{},rhomboid:{},sandwich:{},takeaway:{},appendage:{},chocolate:{},colouring:{},endocrine:{},hamstring:{},moonshine:{},permanent:{},recessive:{},turbinate:{},confection:{},hemisphere:{},ingredient:{},spatchcock:{},sweetening:{},convolution:{},pneumogastric:{},os:{},cos:{},cud:{},sup:{},caul:{},chaw:{},chin:{},chou:{},curd:{},cyst:{},fizz:{},jowl:{},mane:{},milt:{},perm:{},snot:{},sorb:{},sura:{},taco:{},booze:{},broth:{},caput:{},chili:{},cocoa:{},costa:{},cress:{},dough:{},eater:{},fanny:{},fondu:{},hyoid:{},loins:{},lolly:{},lumen:{},mamma:{},mummy:{},pasta:{},plasm:{},porgy:{},puree:{},quaff:{},quark:{},sinew:{},thigh:{},tripe:{},tummy:{},areola:{},banana:{},booger:{},bowleg:{},brunch:{},carpal:{},cervix:{},citrus:{},comfit:{},dactyl:{},dorsum:{},edible:{},flitch:{},fondue:{},fornix:{},gammon:{},herbal:{},lambda:{},malted:{},marcel:{},millet:{},monggo:{},noodle:{},paring:{},pastry:{},pelvis:{},simnel:{},spleen:{},tarsal:{},tensor:{},tipple:{},waffle:{},wonton:{},abdomen:{},adenoid:{},auricle:{},biscuit:{},brownie:{},clabber:{},criollo:{},croaker:{},cubitus:{},deltoid:{},dentine:{},dietary:{},eyeball:{},fistula:{},forearm:{},fritter:{},gherkin:{},haircut:{},headful:{},hyaloid:{},iceberg:{},isthmus:{},kneecap:{},lacteal:{},lasagna:{},lasagne:{},lozenge:{},marmite:{},midriff:{},oatmeal:{},ocellus:{},pageboy:{},paprika:{},pathway:{},pottage:{},prepuce:{},pumpkin:{},ramekin:{},ratafia:{},roulade:{},sausage:{},seltzer:{},serving:{},sidecar:{},slobber:{},sorghum:{},stirrup:{},sultana:{},teacake:{},timbale:{},toenail:{},topping:{},tostada:{},trachea:{},treacle:{},twister:{},vintage:{},abducent:{},abductor:{},afferent:{},alveolus:{},appendix:{plural:"appendices"},astragal:{},bicuspid:{},blowfish:{},blowhole:{},bouffant:{},capitate:{},chowchow:{},cobblers:{},cocktail:{},coquille:{},couscous:{},doughboy:{},doughnut:{},dumpling:{},efferent:{},eminence:{},exocrine:{},fascicle:{},flatfish:{},flatfoot:{},flummery:{},forehead:{},foreskin:{},hairline:{},honeydew:{},licorice:{},ligament:{},lollipop:{},macaroni:{},mackerel:{},marinade:{},membrane:{},monstera:{},mouthful:{},muscatel:{},pheasant:{},physique:{},potation:{},prostate:{},ramequin:{},receptor:{},sillabub:{},sinusoid:{},smoothie:{},specimen:{},streusel:{},stuffing:{},syllabub:{},teardrop:{},venation:{},windfall:{},abdominal:{},apparatus:{},blueberry:{},casserole:{},corpuscle:{},cranberry:{},demitasse:{},dentition:{},drinkable:{},drumstick:{},epiphysis:{},flageolet:{},fricassee:{},hamburger:{},labyrinth:{},lifeblood:{},lineament:{},liquorice:{},mastoidal:{},maxillary:{},navicular:{},pituitary:{},pompadour:{},provender:{},purulence:{},shellfish:{},spaghetti:{},spareribs:{},splayfoot:{},spoilable:{},sundowner:{},sweetener:{},trapezium:{},trapezoid:{},umbilical:{},ventricle:{},vestibule:{},zygomatic:{},applesauce:{},autoplasty:{},blackheart:{},breadstuff:{},cheesecake:{},comestible:{},gastronomy:{},hotchpotch:{},interstice:{},jawbreaker:{},kitambilla:{},maraschino:{},metacarpal:{},metatarsal:{},passageway:{},perishable:{},salmagundi:{},shortening:{},articulator:{},excrescence:{},grasshopper:{},griddlecake:{},intercostal:{},longanberry:{},nourishment:{},screwdriver:{},smorgasbord:{},spindlelegs:{},checkerberry:{},perspiration:{},spindleshanks:{},parasympathetic:{},ab:{},ade:{},ale:{},bap:{},bun:{},jak:{},lat:{},lox:{},pes:{},pie:{},poi:{},pud:{},pus:{},tum:{},vas:{},veg:{},anus:{},arak:{},axon:{},baba:{},bile:{},bleb:{},bleu:{},bock:{},bosc:{},choc:{},clit:{},cola:{},coxa:{},crus:{},cuke:{},duff:{},dura:{},edda:{},eggs:{},fist:{},flab:{},flan:{},fugu:{},genu:{},ghee:{},glia:{},grog:{},isaw:{},java:{},kava:{},marc:{},mayo:{},mead:{},miso:{},mons:{},naan:{},nape:{},nipa:{},oleo:{},orzo:{},ouzo:{},ovum:{},pecs:{},pita:{},pone:{},pons:{},porc:{},rete:{},rima:{},rind:{},roux:{},ruga:{},rusk:{},slaw:{},sops:{},suet:{},tofu:{},ugli:{},ulna:{},umbo:{},uvea:{},veal:{},veau:{},vena:{},vino:{},womb:{},ziti:{},zona:{},ackee:{},adobo:{},aioli:{},anjou:{},ankle:{},annon:{},aorta:{},arcus:{},aspic:{},atole:{},axone:{},babka:{},bacon:{},bagel:{},bialy:{},bigos:{},bitok:{},blanc:{},blini:{},bliny:{},boeuf:{},borsh:{},bowel:{},bursa:{},butty:{},cauda:{},cavum:{},cecum:{},celom:{},chips:{},chyle:{},cider:{},congo:{},copra:{},cornu:{},cuppa:{},cutis:{},cyder:{},cytol:{},decaf:{},donut:{},facia:{},femur:{},filum:{},flews:{},fovea:{},fries:{},gigot:{},gland:{},glans:{},gleet:{},glogg:{},glute:{},gonad:{},goody:{},grist:{},grits:{},gruel:{},gyrus:{},hilus:{},hoagy:{},hooch:{},hooks:{},hymen:{},hyson:{},ileum:{},ilium:{},incus:{},inion:{},jello:{},julep:{},kabob:{},kasha:{},kebab:{},knish:{},kumis:{},kvass:{},lansa:{},latke:{},latte:{},lichi:{},limpa:{},lymph:{},macon:{},manus:{},matzo:{},mucus:{},nacho:{},naris:{},nates:{},negus:{},offal:{},ootid:{},pekoe:{},penis:{},penne:{},perry:{},pesto:{},pilaf:{},pinky:{},pizza:{},plica:{},porta:{},pruno:{},psoas:{},pubis:{},quiff:{},raita:{},ramus:{},raphe:{},salmi:{},salsa:{},savoy:{},sebum:{},serum:{},sirup:{},skull:{},sperm:{},steak:{},sudor:{},sushi:{},taffy:{},tamal:{},tater:{},teeth:{},teres:{},tibia:{},titty:{},toddy:{},toffy:{},torso:{},torte:{},tress:{},uvula:{},vagus:{},viand:{},vodka:{},vomer:{},vulva:{},wrist:{},adnexa:{},afters:{},agnail:{},ananas:{},anlage:{},annexa:{},annona:{},antrum:{},armpit:{},arrack:{},axilla:{},baguet:{},beigel:{},biceps:{},bisque:{},blintz:{},bonbon:{},borsch:{},brazil:{},bregma:{},bulgur:{},burger:{},cachou:{},caecum:{},canape:{},canola:{},cardia:{},carina:{},carpus:{},casaba:{},catsup:{},caviar:{},chevre:{},chiasm:{},chilli:{},choana:{},coccyx:{},coelom:{},comedo:{},concha:{},confit:{},congou:{},corium:{},corpse:{},cupper:{},cuspid:{},cutlet:{},damson:{},danish:{},dermis:{},dewlap:{},dolmas:{},eclair:{},eggnog:{},eschar:{},eyelid:{},farina:{},fauces:{},fibula:{},finnan:{},flexor:{},fundus:{},gateau:{},geneva:{},giblet:{},glossa:{},gluten:{},goatee:{},gobbet:{},gonion:{},goober:{},graham:{},grappa:{},groats:{},gulyas:{},haggis:{},hairdo:{},hallah:{},hallux:{},hamate:{},haslet:{},hoagie:{},hominy:{},hommos:{},hootch:{},hotpot:{},huitre:{},hummus:{},inguen:{},intima:{},jambon:{},jugale:{},jumbal:{},karyon:{},kencur:{},kidney:{},kipper:{},kirsch:{},kishke:{},korlan:{},kummel:{},labium:{},lamina:{},lanseh:{},lanugo:{},larynx:{},lekvar:{},limbus:{},lingua:{},lobule:{},lochia:{},locule:{},lunule:{},matzoh:{},meatus:{},meninx:{},milium:{},mohawk:{},mouton:{},mucosa:{},muesli:{},muffin:{},murphy:{},mutton:{},nasion:{},nervus:{},neuron:{},nougat:{},oculus:{},omelet:{},onyxis:{},oocyte:{},oolong:{},operon:{},organs:{},paczki:{},paella:{},palate:{},paries:{},pastis:{},paunch:{},pectus:{},phyllo:{},pilaff:{},pinkie:{},pinole:{},pirogi:{},pleura:{},plexus:{},pollex:{},polony:{},posset:{},potage:{},poteen:{},potion:{},potpie:{},poulet:{},premix:{},pulque:{},purloo:{},quiche:{},rectum:{},rectus:{},repast:{},retina:{},rhaphe:{},ribier:{},rickey:{},rotgut:{},sacrum:{},salami:{},saliva:{},samosa:{},sapota:{},scampi:{},scampo:{},sclera:{},scruff:{},seckel:{},serosa:{},shandy:{},sherry:{},silage:{},skilly:{},smegma:{},soleus:{},sorbet:{},sputum:{},stapes:{},stodge:{},succus:{},sulcus:{},sundae:{},sutura:{},tahini:{},tamale:{},tarsus:{},tendon:{},testis:{},thymus:{},tidbit:{},tiffin:{},tisane:{},titbit:{},toffee:{},tonsil:{},tragus:{},troche:{},tubule:{},tunica:{},unguis:{},ureter:{},uterus:{},vagina:{},veggie:{},venula:{},venule:{},vermis:{},vesica:{},viscus:{},vitals:{},waters:{},whisky:{},wiener:{},yogurt:{},zaatar:{},zonula:{},zonule:{},zygoma:{},zygote:{},absinth:{},akvavit:{},aniseed:{},aquavit:{},arteria:{},ashcake:{},baklava:{},bannock:{},beignet:{},keen:{},rage:{},wish:{},aside:{},chafe:{},gloss:{},tense:{},whole:{},worry:{},effect:{},reject:{},riddle:{},snatch:{},speech:{},closure:{},collect:{},romance:{},flourish:{},classical:{},influence:{},substance:{},reflection:{},inclination:{},recognition:{},dot:{},nod:{},blur:{},itch:{},slur:{},solo:{},wink:{},abuse:{},acute:{},alert:{},angle:{},bluff:{},cheer:{},honor:{},humor:{},lyric:{},snarl:{},tally:{},accent:{},degree:{},detail:{},indent:{},matter:{},patent:{},rubric:{},thrill:{},abandon:{},bluster:{},concern:{},concord:{},formula:{plural:"formulae"},imprint:{},nominal:{},quality:{},reading:{},sputter:{},torture:{},wrinkle:{},contrast:{},estimate:{},harmonic:{},judgment:{},reaction:{},sanction:{},singular:{},straddle:{},construct:{},judgement:{},reflexion:{},rendering:{},universal:{},acceptance:{},discipline:{},irritation:{},regulation:{},relaxation:{},submission:{},application:{},replication:{},construction:{},introduction:{},presentation:{},cant:{},code:{},joke:{},pain:{},stab:{},trot:{},will:{},blame:{},brief:{},dodge:{},fancy:{},glide:{},grasp:{},guess:{},quote:{},scent:{},slant:{},snort:{},swoop:{},theme:{},trial:{},vocal:{},accord:{},affect:{},cancel:{},debate:{},desire:{},heroic:{},murmur:{},phrase:{},resume:{},scream:{},serial:{},tangle:{},closing:{},dissent:{},drawing:{},example:{},exhibit:{},fatigue:{},feeling:{},mention:{},partial:{},posture:{},protest:{},regress:{},telling:{},welcome:{},absolute:{},analysis:{plural:"analyses"},distress:{},pastoral:{},platform:{},temporal:{},agreement:{},attention:{},beginning:{},closeness:{},connexion:{},dimension:{},discourse:{},lightness:{},principle:{},surrender:{},assignment:{},coordinate:{},involution:{},abstraction:{},arrangement:{},conjunction:{},declaration:{},penetration:{},proposition:{},realisation:{},realization:{},condensation:{},consideration:{},no:{},cue:{},fun:{},rub:{},bias:{},gift:{},hoot:{},jazz:{},oral:{},snub:{},text:{},tune:{},urge:{},coast:{},craze:{},daily:{},debut:{},dowse:{},funny:{},logic:{},mercy:{},peace:{},rerun:{},samba:{},slang:{},taboo:{},verse:{},whine:{},words:{},aspect:{},babble:{},canker:{},choice:{},clamor:{},denial:{},device:{},esteem:{},format:{},lament:{},manual:{},menace:{},normal:{},pardon:{},regret:{},skinny:{},sorrow:{},tickle:{},twinge:{},vision:{},warmth:{},caution:{},charter:{},conceit:{},cunning:{},delight:{},dictate:{},discord:{},finance:{},harmony:{},keynote:{},knowing:{},leaning:{},lecture:{},mistake:{},musical:{},offense:{},palaver:{},preempt:{},purpose:{},pyrrhic:{},realism:{},sharing:{},texture:{},worship:{},writing:{},aspirate:{},biweekly:{},blessing:{},citation:{},despatch:{},dullness:{},feminine:{},flatness:{},geminate:{},manifest:{},personal:{},pleasure:{},politics:{},singsong:{},yielding:{},agitation:{},attrition:{},bimonthly:{},broadcast:{},confusion:{},deviation:{},disregard:{},education:{},faintness:{},heaviness:{},imitation:{},indenture:{},interview:{},isolation:{},isometric:{},minuscule:{},portrayal:{},predicate:{},provision:{},screaming:{},signature:{},spiritual:{},throwaway:{},tightness:{},accounting:{},aggression:{},assumption:{},attraction:{},commercial:{},compromise:{},confession:{},confidence:{},conformity:{},conveyance:{},detachment:{},difference:{},discretion:{},imperative:{},mellowness:{},modulation:{},tenderness:{},uneasiness:{},awkwardness:{},discernment:{},elimination:{},endorsement:{},examination:{},fabrication:{},familiarity:{},implication:{},indorsement:{},involvement:{},observation:{},obstruction:{},performance:{},requisition:{},sensitivity:{},testimonial:{},appreciation:{},articulation:{},condemnation:{},confirmation:{},deliberation:{},intervention:{},satisfaction:{},confrontation:{},decomposition:{},determination:{},reinforcement:{},understanding:{},characteristic:{},correspondence:{},sophistication:{},transformation:{},rationalisation:{},rationalization:{},dub:{},fog:{},bold:{},buoy:{},dare:{},daze:{},envy:{},gape:{},okay:{},plus:{},rasp:{},rime:{},role:{},tabu:{},yell:{},above:{},affix:{},agape:{},chord:{},croak:{},doubt:{},email:{},essay:{},folly:{},idiom:{},laugh:{},modal:{},panic:{},posit:{},rhyme:{},rider:{},rumba:{},scare:{},scorn:{},sneer:{},trill:{},truth:{},wince:{},adagio:{},binary:{},daring:{},defeat:{},dismay:{},docket:{},filing:{},flavor:{},giving:{},gospel:{},lesson:{},median:{},neuter:{},notion:{},parody:{},parole:{},plight:{},rebuff:{},rhumba:{},sample:{},shiver:{},solace:{},trance:{},unseen:{},vanity:{},vector:{},amnesty:{},anguish:{},arousal:{},bucolic:{},caption:{},catalog:{},contour:{},descant:{},disdain:{},dispute:{},fantasy:{},flavour:{},glimpse:{},insight:{},languor:{},licence:{},marking:{},overbid:{},prelude:{},probate:{},purport:{},pursuit:{},reality:{},receipt:{},recital:{},riposte:{},splurge:{},sticker:{},summons:{},wrangle:{},approval:{},buoyancy:{},converse:{},coolness:{},covenant:{},crotchet:{},devotion:{},dialogue:{},emphasis:{},esthetic:{},excision:{},fairness:{},fixation:{},forecast:{},hieratic:{},identity:{},illusion:{},integral:{},monotone:{},offering:{},paradigm:{},premiere:{},printing:{},referent:{},rescript:{},research:{},rhetoric:{},schedule:{},skimming:{},sleeping:{},speaking:{},splutter:{},streamer:{},tendency:{},topology:{},vexation:{},wildness:{},adjective:{},aesthetic:{},assurance:{},burlesque:{},catalogue:{},correlate:{},detection:{},discovery:{},dismissal:{},exclusion:{},exclusive:{},expansion:{},impromptu:{},inaugural:{},indicator:{},intensive:{},interdict:{},largeness:{},masculine:{},paragraph:{},partitive:{},pragmatic:{},prevision:{},quarterly:{},quotation:{},readiness:{},rendition:{},reverence:{},roundness:{},safeguard:{},suspicion:{},sweetness:{},thickness:{},trademark:{},antagonism:{},aspiration:{},bitterness:{},coarseness:{},collection:{},conjecture:{},deposition:{},estimation:{},excitement:{},gloominess:{},impossible:{},incitement:{},invocation:{},inwardness:{},literature:{},morphology:{},narrowness:{},nominative:{},observance:{},possessive:{},postmortem:{},preemption:{},preference:{},profession:{},profundity:{},recitation:{},redundancy:{},abnormality:{},acquisition:{},affirmation:{},affirmative:{},alternative:{},bombardment:{},commutation:{},concurrence:{},convergence:{},countenance:{},disposition:{},distinction:{},distraction:{},enlargement:{},expectation:{},fingerprint:{},indentation:{},instruction:{},nationalism:{},possibility:{},presumption:{},publication:{},spectacular:{},speculation:{},substantive:{},superlative:{},unconscious:{},unitisation:{},unitization:{},anticipation:{},apprehension:{},circumstance:{},continuation:{},coordination:{},countercheck:{},distribution:{},hieroglyphic:{},illustration:{},intimidation:{},misdirection:{},overestimate:{},precondition:{},renunciation:{},approximation:{},authorisation:{},authorization:{},certification:{},falsification:{},interrogative:{},nonconformity:{},reduplication:{},sensitiveness:{},sequestration:{},superposition:{},underestimate:{},capitalisation:{},capitalization:{},generalisation:{},generalization:{},perceptiveness:{},recapitulation:{},sensationalism:{},awe:{},bop:{},ego:{},hex:{},jot:{},lit:{},nub:{},vow:{},beta:{},brag:{},clue:{},cull:{},elan:{},epic:{},funk:{},fury:{},gibe:{},hymn:{},jibe:{},leer:{},lust:{},mood:{},oath:{},pang:{},plea:{},quip:{},rant:{},riff:{},visa:{},zeal:{},zest:{},alibi:{},badge:{},basis:{plural:"bases"},bravo:{},carol:{},chant:{},chaos:{},conga:{},delta:{},demur:{},dread:{},fable:{},flair:{},fugue:{},given:{},gloat:{},gloom:{},hunch:{},infix:{},irony:{},largo:{},least:{},libel:{},magic:{},moral:{},polka:{},reply:{},sally:{},spiel:{},spook:{},stymy:{},tango:{},usage:{},velar:{},vigil:{},whoop:{},affair:{},airing:{},ardour:{},ballot:{},bathos:{},beauty:{},bellow:{},bowing:{},curtsy:{},deceit:{},dental:{},dialog:{},gambit:{},gibber:{},grudge:{},halloo:{},insult:{},intent:{},italic:{},kowtow:{},labial:{},latest:{},manner:{},mumble:{},naming:{},outcry:{},pathos:{},piffle:{},plural:{},policy:{},praise:{},raving:{},rehash:{},revise:{},scalar:{},scroll:{},seeing:{},shriek:{},sonnet:{},stymie:{},tattle:{},theory:{},tingle:{},tumult:{},upbeat:{},urging:{},wangle:{},weekly:{},wheeze:{},yearly:{},acclaim:{},acidity:{},airmail:{},analogy:{},apology:{},barrage:{},barrier:{},bidding:{},bonding:{},buildup:{},cadence:{},cartoon:{},censure:{},clutter:{},concert:{},cruelty:{},despair:{},disgust:{},dodging:{},earmark:{},embargo:{},enquiry:{},erasure:{},eristic:{},fluency:{},gradual:{},gravity:{},initial:{},inquiry:{},lingual:{},loyalty:{},mastery:{},mimesis:{},monthly:{},numeral:{},omnibus:{},outlook:{},palatal:{},placard:{},polemic:{},posting:{},presage:{},preview:{},quibble:{},refrain:{},reissue:{},reorder:{},reprint:{},rewrite:{},roundup:{},singing:{},slander:{},sorting:{},tasting:{},tribute:{},turmoil:{},whisper:{},ablative:{},acridity:{},allegory:{},alveolar:{},ambition:{},ascender:{},audition:{},binomial:{},brandish:{},brooding:{},bundling:{},calculus:{},circular:{},clipping:{},coldness:{},courtesy:{},critique:{},daydream:{},defiance:{},delusion:{},demurrer:{},disfavor:{},disquiet:{},dynamism:{},easiness:{},equation:{},fondness:{},grasping:{},grouping:{},guidance:{},guttural:{},hornpipe:{},hysteria:{},idealism:{},intimacy:{},mistrust:{},monition:{},negation:{},nickname:{},nihilism:{},notation:{},ordinate:{},outburst:{},particle:{},passport:{},pedagogy:{},petition:{},phantasy:{},planning:{},playbook:{},proposal:{},revision:{},rhapsody:{},ridicule:{},sampling:{},serenade:{},slowness:{},sourness:{},subtitle:{},suspense:{},sympathy:{},tartness:{},teaching:{},theology:{},travesty:{},universe:{},acuteness:{},addiction:{},adoration:{},attending:{},autograph:{},constancy:{},crispness:{},cuneiform:{},deception:{},defensive:{},denseness:{},dialectic:{},dictation:{},digestion:{},diplomacy:{},disfavour:{},editorial:{},emulation:{},enactment:{},evocation:{},fecundity:{},footprint:{},formalism:{},formative:{},gradation:{},grievance:{},grumbling:{},guideline:{},immediacy:{},insurance:{},intention:{},intercept:{},invariant:{},itinerary:{},lassitude:{},majuscule:{},misgiving:{},monologue:{},morbidity:{},murmuring:{},narration:{},nutrition:{},ordinance:{},oversight:{},pictorial:{},pizzicato:{},prejudice:{},quadratic:{},quickness:{},quickstep:{},reckoning:{},reflexive:{},rejoicing:{},repulsion:{},retention:{},retrieval:{},revealing:{},saltiness:{},schooling:{},sentience:{},sulkiness:{},synthesis:{},testament:{},testimony:{},underline:{},undertone:{},accidental:{},accusative:{},adaptation:{},admiration:{},affixation:{},allurement:{},anatomical:{},antiphonal:{},asceticism:{},belittling:{},brightness:{},brilliance:{},chronology:{},classified:{},cleverness:{},clumsiness:{},cognizance:{},compliment:{},concession:{},conscience:{},conspiracy:{},contention:{},continuity:{},decoration:{},determiner:{},deterrence:{},digression:{},diminution:{},discontent:{},dissection:{},dissonance:{},divination:{},empiricism:{},enthusiasm:{},enticement:{},equivalent:{},execration:{},fortissimo:{},grogginess:{},hesitation:{},humbleness:{},hypostasis:{},hypothesis:{plural:"hypotheses"},impatience:{},infliction:{},insistence:{},instalment:{},intermezzo:{},jocularity:{},loneliness:{},neutrality:{},nomination:{},oppression:{},perfection:{},pestilence:{},philosophy:{},precaution:{},pretension:{},propensity:{},refutation:{},reputation:{},revelation:{},rumination:{},salutation:{},semiweekly:{},stigmatism:{},theatrical:{},triviality:{},underscore:{},unfairness:{},vernacular:{},vocabulary:{},whispering:{},acceptation:{},advancement:{},aggravation:{},appellative:{},benevolence:{},calculation:{},comparative:{},concordance:{},conjunctive:{},conjuration:{},correlation:{},correlative:{},countersign:{},denigration:{},designation:{},discourtesy:{},documentary:{},electricity:{},enchantment:{},engrossment:{},exclamation:{},explanation:{},exploration:{},foolishness:{},frustration:{},imperialism:{},infatuation:{},inscription:{},jactitation:{},obfuscation:{},outwardness:{},peculiarity:{},playfulness:{},presentment:{},propagation:{},provocation:{},rationalism:{},regionalism:{},repudiation:{},resignation:{},rotogravure:{},semimonthly:{},sensibility:{},seriousness:{},stipulation:{},strangeness:{},subcontract:{},supposition:{},syncopation:{},titillation:{},tranquility:{},unorthodoxy:{},unsoundness:{},valedictory:{},breakthrough:{},choreography:{},conciliation:{},constitution:{},consultation:{},counterpoint:{},covetousness:{},depreciation:{},faultfinding:{},heedlessness:{},helplessness:{},idealisation:{},idealization:{},impertinence:{},intoxication:{},irritability:{},mercifulness:{},notification:{},pacification:{},processional:{},promulgation:{},proportional:{},recollection:{},retroflexion:{},retroversion:{},significance:{},solicitation:{},spiritualism:{},stupefaction:{},supplication:{},transference:{},acculturation:{},attentiveness:{},communication:{},comprehensive:{},condescension:{},contradiction:{},demonstrative:{},determinative:{},documentation:{},hallucination:{},impersonation:{},individualism:{},interpolation:{},orchestration:{},preoccupation:{},prevarication:{},qualification:{},retentiveness:{},retroflection:{},structuralism:{},symbolisation:{},symbolization:{},versification:{},aggressiveness:{},categorisation:{},demoralisation:{},demoralization:{},farsightedness:{},predisposition:{},recommendation:{},reconstruction:{},sesquipedalian:{},simplification:{},traditionalism:{},conventionality:{},crystallization:{},personification:{},prognostication:{},characterization:{},predetermination:{},pi:{},xi:{},boo:{},bye:{},dit:{},fib:{},ire:{},ken:{},nay:{},pic:{},psi:{},pun:{},wai:{},woe:{},yea:{},blip:{},blog:{},deed:{},demo:{},epos:{},gist:{},grin:{},heed:{},idyl:{},iota:{},jive:{},moan:{},muse:{},norm:{},noun:{},nous:{},odor:{},pean:{},ploy:{},pomp:{},quiz:{},sass:{},sext:{},spam:{},sulk:{},surd:{},tale:{},trig:{},vlog:{},whim:{},yack:{},yoga:{},agony:{},alias:{},aroma:{},axiom:{},bebop:{},blues:{},bonus:{},canto:{},codex:{},creed:{},ditto:{},dogma:{},drawl:{},edict:{},ethic:{},facet:{},fever:{},frown:{},gamma:{},gamut:{},grief:{},groan:{},guilt:{},intro:{},kotow:{},macro:{},odour:{},omega:{},paean:{},pavan:{},peeve:{},prate:{},primo:{},prose:{},psalm:{},qualm:{},retro:{},rumor:{},savvy:{},scowl:{},shrug:{},skill:{},smirk:{},danger:{},push:{},refusal:{},tooling:{},trelvox:{}},verbs:{import:{},call:{},test:{},contain:{},extend:{},use:{},depend:{prep:"on"},rely:{prep:"on"},inherit:{prep:"from"},belong:{prep:"to",predicate:"mgx:partOf"},point:{prep:"to"},implement:{},override:{},export:{},define:{},declare:{},reference:{},invoke:{},wrap:{},mock:{},cover:{},document:{},describe:{},modify:{},touch:{},fix:{},break:{},introduce:{},deprecate:{},replace:{},own:{},maintain:{},review:{},merge:{},revert:{},deploy:{},run:{},execute:{},load:{},parse:{},emit:{},validate:{},log:{},throw:{},catch:{},create:{},delete:{},update:{},expose:{},consume:{},produce:{},generate:{},configure:{},install:{},publish:{},release:{},ship:{},watch:{},trigger:{},build:{},write:{},read:{},have:{},like:{},want:{},need:{},believe:{},trust:{},love:{},hate:{},fear:{},hope:{},teach:{},learn:{},drive:{},cook:{},sing:{},visit:{},care:{},grow:{},marry:{},wear:{},eat:{},sleep:{},walk:{},buy:{},sell:{},give:{},take:{},meet:{},ride:{},speak:{},duck:{}},adjectives:{legacy:{type:"subclass"},mock:{type:"subclass"},senior:{type:"subclass"},internal:{type:"subclass"},external:{type:"subclass"},public:{type:"subclass"},private:{type:"subclass"},abstract:{type:"subclass"},static:{type:"subclass"},async:{type:"subclass"},experimental:{type:"subclass"},stable:{type:"subclass"},core:{type:"subclass"},shared:{type:"subclass"},global:{type:"subclass"},local:{type:"subclass"},generated:{type:"subclass"},standalone:{type:"subclass"},primary:{type:"subclass"},secondary:{type:"subclass"},deprecated:{type:"data"},fast:{type:"data"},slow:{type:"data"},large:{type:"data"},small:{type:"data"},flaky:{type:"data"},tested:{type:"data"},documented:{type:"data"},buggy:{type:"data"},broken:{type:"data"},green:{type:"data"},deterministic:{type:"data"},pure:{type:"data"},empty:{type:"data"},stale:{type:"data"},male:{type:"data"},female:{type:"data"},young:{type:"data"},old:{type:"data"},hot:{type:"data"},cold:{type:"data"},sweet:{type:"data"},salty:{type:"data"},sharp:{type:"data"},round:{type:"data"},tall:{type:"data"},short:{type:"data"},happy:{type:"data"},sad:{type:"data"},angry:{type:"data"},afraid:{type:"data"},strong:{type:"data"},weak:{type:"data"},rich:{type:"data"},poor:{type:"data"},hard:{type:"data"},soft:{type:"data"},wild:{type:"data"},gentle:{type:"data"},colorful:{type:"data"},legitimate:{type:"data"},ranked:{type:"data"},related:{type:"data"},sacred:{type:"data"},unaffected:{type:"data"}},properNames:["tmct","Node","npm","JavaScript","TypeScript","Python","Java","Git","GitHub","GitLab","ESLint","Linux","macOS","Windows","Polycode","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"]}});var hx={};Nt(hx,{CODE_REF_SHAPE:()=>xu,DETERMINERS:()=>sm,OF_CLASSIFIER_HEADS:()=>rm,OF_PARTITIVE_HEADS:()=>im,QUANTIFIERS:()=>om,classify:()=>am,loadLexicon:()=>an,lookupAdjective:()=>Ma,lookupNoun:()=>bn,lookupProperName:()=>$i,lookupVerb:()=>Pa,numberOf:()=>La,predicateOf:()=>Eu,readsAsIndividualName:()=>ku,thirdPerson:()=>dx,withProperNames:()=>px});function La(e){let t=String(e??"").trim().toLowerCase();return/^\d+$/.test(t)?Number(t):GP[t]??null}function dx(e){let t=String(e);return t==="have"?"has":/[^aeiou]y$/.test(t)?`${t.slice(0,-1)}ies`:/(s|x|z|ch|sh)$/.test(t)?`${t}es`:`${t}s`}function Eu(e,t=ux){if(e.predicate)return e.predicate;let n=e.prep?e.prep[0].toUpperCase()+e.prep.slice(1):"";return`${t}${dx(e.lemma)}${n}`}function fx(e){let t=String(e),n=[t];return t.length>4&&/[a-z]ies$/.test(t)&&n.push(`${t.slice(0,-3)}y`),/(ses|xes|zes|ches|shes)$/.test(t)&&n.push(t.slice(0,-2)),/[a-z]s$/.test(t)&&!/ss$/.test(t)&&n.push(t.slice(0,-1)),t==="has"&&n.push("have"),n}function lx(e,t={}){for(let[n,s]of Object.entries(t.nouns||{})){let o={lemma:n,...s||{}};if(o.property&&!VP.has(o.property))throw new Error(`lexicon noun "${n}": property must be "data" or "object", got ${JSON.stringify(o.property)}`);e.nouns.set(n,o),o.plural&&e.nounPlurals.set(o.plural,n)}for(let[n,s]of Object.entries(t.verbs||{}))e.verbs.set(n,{lemma:n,...s||{}});for(let[n,s]of Object.entries(t.adjectives||{})){let o={lemma:n,...s||{}};if(!KP.has(o.type))throw new Error(`lexicon adjective "${n}": type must be "subclass" or "data", got ${JSON.stringify(o.type)}`);e.adjectives.set(n,o)}for(let n of t.properNames||[])e.properNames.set(String(n).toLowerCase(),String(n))}function an(e,t=ux){if(!e&&nm.has(t))return nm.get(t);let n=cx,s={nouns:new Map,nounPlurals:new Map,verbs:new Map,adjectives:new Map,properNames:new Map,ns:t};return lx(s,n),e?(lx(s,e),s):(nm.set(t,s),s)}function px(e,t){let n=new Map(e.properNames);for(let s of t)n.set(String(s).toLowerCase(),String(s));return{...e,properNames:n}}function bn(e,t,n={}){return HP(e,t,n)[0]??null}function HP(e,t,n={}){let s=String(t??"").toLowerCase(),o=e.nouns.get(s),r=e.nounPlurals.get(s),i=[],a=new Set,c=l=>{l&&!a.has(l.lemma)&&(a.add(l.lemma),i.push(l))};if(r){let l=e.nouns.get(r)??null;return n.singularOnly&&o?(c(o),c(l)):(c(l),c(o)),i}for(let l of fx(s))c(e.nouns.get(l));return i}function Pa(e,t){return qP(e,t)[0]??null}function qP(e,t){let n=String(t??"").toLowerCase(),s=[],o=new Set;for(let r of fx(n)){let i=e.verbs.get(r);i&&!o.has(i.lemma)&&(o.add(i.lemma),s.push(i))}return s}function Ma(e,t){return e.adjectives.get(String(t??"").toLowerCase())??null}function $i(e,t){return e.properNames.get(String(t??"").toLowerCase())??null}function ku(e,t){let n=String(e??"");if(!n)return!1;if($i(t,n)||xu.test(n)||/^[a-z][\w]*(?:-[\w]+)+$/i.test(n)||/^[A-Z]/.test(n))return!0;let s=bn(t,n);return s?s.lemma.toLowerCase()!==n.toLowerCase():!0}function am(e,t=an()){let n=String(e??"").trim();if(!n)return null;let s=n.toLowerCase();if(sm[s])return{pos:"determiner",type:sm[s]};if(om[s])return{pos:"quantifier",type:om[s]};let o=La(s);if(o!=null)return{pos:"number",type:"cardinal",value:o};let r=$i(t,n);if(r)return{pos:"properName",type:"individual",canonical:r};let i=bn(t,s);if(i)return i.property?{pos:"noun",type:`${i.property}-property`,lemma:i.lemma,property:i.property}:{pos:"noun",type:"class",lemma:i.lemma};let a=Pa(t,s);if(a)return{pos:"verb",type:"objectProperty",lemma:a.lemma,predicate:Eu(a,t.ns),...a.prep?{prep:a.prep}:{}};let c=Ma(t,s);return c?{pos:"adjective",type:c.type,lemma:c.lemma}:null}var ux,sm,om,rm,im,GP,VP,KP,nm,xu,ts=L(()=>{ax();ux="tmct:",sm=Object.freeze({every:"universal",a:"indefinite",an:"indefinite",the:"definite",no:"negative"}),om=Object.freeze({"at least":"owl:minCardinality","at most":"owl:maxCardinality",exactly:"owl:cardinality"}),rm=Object.freeze(new Set(["type","kind","sort","form","class","variety","species","breed","genus"])),im=Object.freeze(new Set(["body","mass","group","collection","set","series","number","amount","piece","part","lot","pair","bunch","pile"])),GP=Object.freeze({one:1,two:2,three:3,four:4,five:5,six:6,seven:7,eight:8,nine:9,ten:10});VP=new Set(["data","object"]),KP=new Set(["subclass","data"]);nm=new Map;xu=/[./\\#:@]/});var iX,aX,cX,YP,lX,uX,dX,mx=L(()=>{us();Fe();iX=Object.freeze({class:"Class",module:"Module",function:"Function",method:"Method",attribute:"Attribute",variable:"GlobalVariable",constant:"GlobalVariable",commit:"Commit"}),aX=Object.freeze({Class:["class","classes"],Module:["module","modules"],Function:["function","functions"],Method:["method","methods"],Attribute:["attribute","attributes"],GlobalVariable:["variable","variables"],Commit:["commit","commits"]}),cX=Object.freeze({Class:[e=>`which classes inherit from ${e}`,e=>`what does ${e} contain`,e=>`where is ${e} defined`],Module:[e=>`what does ${e} import`,e=>`which modules import ${e}`,e=>`where is ${e} defined`],Function:[e=>`what calls ${e}`,e=>`what does ${e} call`,e=>`where is ${e} defined`],Method:[e=>`which class contains ${e}`,e=>`what calls ${e}`,e=>`where is ${e} defined`],Attribute:[e=>`which class contains ${e}`,e=>`where is ${e} defined`],GlobalVariable:[e=>`where is ${e} defined`,e=>`where is ${e} mentioned`],Commit:[e=>`what did commit ${e} touch`,e=>`when did ${e} change`]}),YP=Object.freeze({import:"imports",imports:"imports",importing:"imports",imported:"imports",call:"calls",calls:"calls",calling:"calls",called:"calls",invoke:"calls",invokes:"calls",invoking:"calls",contain:"contains",contains:"contains",containing:"contains",containment:"contains",member:"contains",members:"contains",inherit:"inherits",inherits:"inherits",inheriting:"inherits",inheritance:"inherits",extend:"inherits",extends:"inherits",extending:"inherits",subclass:"inherits",subclasses:"inherits",subclassing:"inherits",test:"tests",tests:"tests",testing:"tests",tested:"tests",coverage:"tests",define:"defines",defines:"defines",defining:"defines",defined:"defines",definition:"defines",definitions:"defines",declaration:"defines",touch:"touches",touches:"touches",touching:"touches",touched:"touches",cochange:"cochange","co-change":"cochange","change-coupling":"cochange",coupled:"cochange",export:"reexports",exports:"reexports",exporting:"reexports",exported:"reexports",reexport:"reexports",reexports:"reexports",reexporting:"reexports","re-export":"reexports","re-exports":"reexports","re-exporting":"reexports",serve:"serves",serves:"serves",serving:"serves",served:"serves",denote:"denotes",denotes:"denotes",denoting:"denotes",denoted:"denotes"}),lX=Object.freeze({imports:["imports"],calls:["calls","callsSymbol"],contains:["contains"],inherits:["inherits"],tests:["tests"],defines:["defines"],touches:["touches","touchesSymbol"],cochange:["cochange"],reexports:["reexports"],serves:["serves"],denotes:["denotes"]}),uX=Object.freeze({imports:{verb:"imports",edgeNoun:"import"},calls:{verb:"calls",edgeNoun:"call"},contains:{verb:"contains",edgeNoun:"containment"},inherits:{verb:"inherits from",edgeNoun:"inheritance"},tests:{verb:"tests",edgeNoun:"test"},defines:{verb:"defines",edgeNoun:"definition"},touches:{verb:"touches",edgeNoun:"touch"},cochange:{verb:"changes together with",edgeNoun:"change-coupling"},reexports:{verb:"re-exports",edgeNoun:"re-export"},serves:{verb:"serves",edgeNoun:"service"},denotes:{verb:"denotes",edgeNoun:"denotation"}}),dX=Object.freeze({imports:[{side:"obj",make:e=>`which modules import ${e}`},{side:"subj",make:e=>`what does ${e} import`}],calls:[{side:"obj",make:e=>`what calls ${e}`},{side:"subj",make:e=>`what does ${e} call`}],contains:[{side:"subj",make:e=>`what does ${e} contain`},{side:"obj",make:e=>`which class contains ${e}`}],inherits:[{side:"obj",make:e=>`which classes inherit from ${e}`},{side:"subj",make:e=>`where is ${e} defined`}],tests:[{side:"obj",make:e=>`what tests ${e}`},{side:"obj",make:e=>`where is ${e} defined`}],defines:[{side:"obj",make:e=>`where is ${e} defined`},{side:"subj",make:e=>`what does ${e} contain`}],touches:[{side:"obj",make:e=>`when did ${e} change`},{side:"subj",make:e=>`what did commit ${e} touch`}],cochange:[{side:"obj",make:e=>`where is ${e} defined`},{side:"subj",make:e=>`which modules import ${e}`}],reexports:[{side:"subj",make:e=>`what does ${e} export`},{side:"obj",make:e=>`where is ${e} defined`}],serves:[{side:"subj",make:e=>`what does ${e} serve`},{side:"obj",make:e=>`what serves ${e}`}],denotes:[{side:"subj",make:e=>`what does ${e} denote`},{side:"obj",make:e=>`what denotes ${e}`}]})});function wx(e){return!!e&&typeof e=="object"&&typeof e.s=="string"&&XP.test(e.s)&&typeof e.t=="string"&&e.t.length>0&&Number.isInteger(e.r)&&e.r>0}function _o(e){if(!e||typeof e!="object")return!1;for(let t of["term","title","text","summary","url"])if(typeof e[t]!="string"||!e[t])return!1;if(!Number.isInteger(e.revid)||e.revid<=0)return!1;for(let t of["isa","source","licence"])if(e[t]!==void 0&&(typeof e[t]!="string"||!e[t]))return!1;return!0}function Ru(e,t){let n=String(e??"").split(/(?<=[.!?])\s+/),s="";for(let o of n){let r=s?`${s} ${o}`:o;if(r.length>t)break;s=r}return s||String(e??"").slice(0,t)}function QP(e){let t=e,n;do n=t,t=t.replace(/\s*\([^()]*\)/g,"");while(t!==n);return t}function bx(e,t){let n=bn(t,e);return n?V(n.lemma):e}function yx(e,t){let n=QP(String(e??"")).match(JP);if(!n)return null;let s=!n[1],o=[];for(let u of n[2].trim().split(/\s+/))if(ZP.has(u)||(o.push(u),o.length>=6))break;let r=o;for(let u=r.indexOf("of");u>0;u=r.indexOf("of")){let d=r[u-1]?.split("-").pop(),p=d&&bx(d,t);if(p&&(tM.has(p)||nM.has(p))){r=r.slice(u+1);continue}r=r.slice(0,u);break}for(;r.length&&eM.has(r[0]);)r=r.slice(1);if(!r.length)return null;let i=r[r.length-1].split("-").pop();if(!i)return null;let a=bx(i,t);if(gx.has(i)||gx.has(a))return null;let c=bn(t,i);if(!c)return null;let l=V(c.lemma);return s&&(!/s$/.test(i)||V(i)===l)?null:l}var XP,ju,JP,ZP,gx,eM,tM,nM,br=L(()=>{Ve();ts();mx();XP=/^ref-[0-3][0-9a-f]$/;ju=400;JP=/^[A-Z][^.!?]*? (?:is|are) (?:(a|an|the) )?([a-z][a-z -]{1,60})/;ZP=new Set(["that","which","where","who","whose","whom","when","used","found","made","with","in","on","for","from","by","to","and","or","about","around","roughly","approximately"]),gx=new Set(["type","kind","sort","form","class","variety","group","part","piece","member","way","term","name","word","thing","example","family","genus","species","unit","series","set","list","number","amount","body","mass"]),eM=new Set(["a","an","the"]),tM=new Set(["type","kind","sort","form","class","variety","species","breed","genus","group","part","parts","piece","bunch","bit","name","set","way","unit","family","ability","color","series","mammal","practice","list","amount","mass","reworking","blockage","goddess","aura","development","consisting","announcement","messengers","subset","carrying","photograph","adding","use","science","songbird","symptom","accumulation","number","suborder","falling","management","evaluation","superorder","activity","interlacing","introduction"]),nM=new Set(["either","one","each","both","any"])});var wr,Fa=L(()=>{wr=()=>{throw new Error("gunzipSync unavailable in a browser bundle")}});function $x(e=process.env){return e?.TMCT_REFERENCE_PACK_DIR||ne(sM,"corpus","reference")}function Sx(e){try{return wr(Zs(e))}catch{return null}}function um(e){if(cm.has(e))return cm.get(e);let t=null,n=Sx(ne(e,"index.json.gz"));if(n)try{let s=JSON.parse(n.toString("utf8"));s&&typeof s=="object"&&!Array.isArray(s)&&(t=s)}catch{}return cm.set(e,t),t}function oM(e,t){let n=`${e}\0${t}`;if(lm.has(n))return lm.get(n);let s=null,o=Sx(ne(e,"shards",`${t}.jsonl.gz`));if(o){s=new Map;for(let r of o.toString("utf8").split(`
|
|
169
|
-
`))if(r.trim())try{let i=JSON.parse(r);_o(i)&&s.set(i.term,i)}catch{}}return lm.set(n,s),s}function dm(e,t){let n=um(e);if(!n)return null;let s=n[String(t??"")];return wx(s)?oM(e,s.s)?.get(s.t)??null:null}var rM,sM,cm,lm,fm=L(()=>{Ro();Fa();jo();Qe();br();rM={},sM=ne(Se(tn(rM.url)),"..","..","..");cm=new Map,lm=new Map});function aM(e){if(!e||typeof e!="object")return!1;for(let t of["subject","predicate","object","provenance"])if(typeof e[t]!="string"||!e[t])return!1;return iM.includes(e.predicate)}function vx(e){return _o(e)?e.facts===void 0?!0:Array.isArray(e.facts)&&e.facts.length>0&&e.facts.every(aM):!1}function yr(e,t){return`research:${e}:${V(t).replace(/ /g,"_")}`}function Si(e){if(!e||typeof e.name!="string"||!e.name||typeof e.create!="function")throw new Error("registerResearchSource: expected { name, create(options) }");cM.set(e.name,{name:e.name,create:e.create})}var iM,cM,jX,RX,$r=L(()=>{Ve();br();iM=Object.freeze(["rdf:type","rdfs:subClassOf","mgx:partOf","mgx:hasA","mgx:usedFor","mgx:capableOf","mgx:atLocation","mgx:causes","mgx:madeOf","mgx:createdBy","mgx:locatedNear","mgx:hasProperty"]);cM=new Map;jX=Object.freeze(["wikipedia","wikidata","simple-wikipedia","simple-wikipedia-pack","wiktionary","dbpedia"]),RX=Object.freeze({wikipedia:"simple-wikipedia",wikidata:"wikidata","simple-wikipedia":"simple-wikipedia","simple-wikipedia-pack":"simple-wikipedia-pack",wiktionary:"wiktionary",dbpedia:"dbpedia-lookup"})});function Ex(e){let t=Number(e);return Number.isFinite(t)?t===408||t===429||t>=500:!1}var TX,_u=L(()=>{TX=Object.freeze({failureThreshold:5,windowMs:6e4,cooldownMs:6e4})});function Ba({fetchImpl:e,timeoutMs:t=vi,minIntervalMs:n=nn,retryAfterFloorMs:s=lM,maxFetchesPerTurn:o=uM,userAgent:r,waitForSlot:i=!1,validators:a=null}={}){let c=e??((...x)=>globalThis.fetch(...x)),l=new Map,u=0,d=0,p=!1,f=0,h=0,m=0,b=!1,g=!1,w=()=>{if(!r)return null;let x={"Api-User-Agent":r};return typeof document>"u"&&(x["User-Agent"]=r),x};function y(x){let j=Number(x)*1e3;d=Date.now()+Math.max(j||0,s)}function S(x){let j=a?.get(x);if(!j)return null;let M={};return j.etag&&(M["If-None-Match"]=j.etag),j.lastModified&&(M["If-Modified-Since"]=j.lastModified),Object.keys(M).length?M:null}function T(x,j){if(!a)return;let M=j.headers?.get?.("etag")??"",D=j.headers?.get?.("last-modified")??"";if(!M&&!D)return;let H=a.get(x)??{};a.set(x,{etag:M||H.etag||"",lastModified:D||H.lastModified||""})}async function v(x,{asJson:j}){if(b&&m>=o)return g=!0,null;f+=1,m+=1;let M=typeof AbortController=="function"?new AbortController:null,D=M?setTimeout(()=>M.abort(),t):null;try{let H={};M&&(H.signal=M.signal);let Y={...w()??{},...S(x)??{}};Object.keys(Y).length&&(H.headers=Y);let Z;try{Z=await c(x,H)}catch{return h+=1,null}if(Z.status===429)return y(Z.headers?.get?.("retry-after")),h+=1,null;if(Z.status===304)return a?{notModified:!0}:null;if(!Z.ok)return Ex(Z.status)&&(h+=1),null;if(T(x,Z),j){let P=await Z.json();return P?.error?.code==="maxlag"?(y(Z.headers?.get?.("retry-after")),h+=1,null):P}return await Z.text()}catch{return M?.signal?.aborted&&(h+=1),null}finally{D!==null&&clearTimeout(D)}}async function E(x){return v(x,{asJson:!0})}async function I(x){return v(x,{asJson:!1})}let k=()=>Math.max(d,u+n);async function R(){for(;;){let x=Date.now();if(!p&&x>=k())return u=x,p=!0,!0;if(!i)return!1;await new Promise(j=>setTimeout(j,Math.max(k()-x,25)))}}async function $(x,j,{remember:M=!0}={}){if(l.has(x))return l.get(x);if(!await R())return null;let D=null;try{D=await j()}catch{D=null}finally{p=!1}return M&&l.set(x,D),D}function _(){b=!0,m=0,g=!1}function O(){return{fetches:f,systemicFailures:h,fetchesThisTurn:m,budgetExhausted:g}}return{fetchJson:E,fetchText:I,cachedFetch:$,beginTurn:_,stats:O}}var vi,nn,lM,uM,Da,za=L(()=>{_u();vi=4e3,nn=2e3,lM=5e3,uM=6,Da=5});function bM({fetchImpl:e,origin:t=dM,timeoutMs:n=vi,minIntervalMs:s=nn,lexicon:o=null,userAgent:r=gM,waitForSlot:i=!1,sourceName:a=pM,label:c=hM}={}){let l=Ba({fetchImpl:e,timeoutMs:n,minIntervalMs:s,userAgent:r,waitForSlot:i});function u(f,h){let m=Array.isArray(h?.[1])?h[1]:[];for(let b of m){let g=V(b);if(g===f||g.startsWith(f))return String(b)}return null}async function d(f,h){let m=await l.fetchJson(`${t}/api/rest_v1/page/summary/${encodeURIComponent(h.replace(/ /g,"_"))}`);if(!m)return null;let b=String(m.extract??""),g=Number(m.revision),w={term:f,title:String(m.title??h),text:b,summary:Ru(b,ju),url:String(m.content_urls?.desktop?.page??`${t}/wiki/${encodeURIComponent(h.replace(/ /g,"_"))}`),revid:g},y=o;if(!y)try{y=an()}catch{y=null}let S=y?yx(b,y):null;return S&&(w.isa=S),_o(w)?w:null}async function p(f){let h=await l.fetchJson(`${t}/w/api.php?action=opensearch&format=json&origin=*&maxlag=${Da}&search=${encodeURIComponent(f)}&limit=3`),m=h?u(f,h):null;return m?d(f,m):null}return{name:a,origin:t,label:c,beginTurn(){l.beginTurn()},stats(){return l.stats()},provenanceTag(f){return yr(a,f)},async lookup(f){let h=String(f??"");return h?l.cachedFetch(h,()=>p(h)):null},async pageByTitle(f){let h=String(f??"").trim();return h?l.cachedFetch(`title\0${V(h)}`,()=>d(V(h),h)):null},async linkedTitles(f,{limit:h=25}={}){let m=String(f??"").trim();if(!m)return null;let b=await l.cachedFetch(`links\0${V(m)}`,async()=>{let w=(await l.fetchJson(`${t}/w/api.php?action=parse&format=json&formatversion=2&origin=*&maxlag=${Da}&prop=links&redirects=1&page=${encodeURIComponent(m)}§ion=0`))?.parse?.links;if(!Array.isArray(w))return null;let y=new Set,S=[];for(let T of w){if(!T||T.ns!==0||T.exists===!1)continue;let v=String(T.title??T["*"]??"").trim(),E=V(v);!v||!E||y.has(E)||(y.add(E),S.push(v))}return S});return Array.isArray(b)?b.slice(0,Math.max(0,h)):null}}}function wM(e={}){return bM({origin:fM,sourceName:kx,label:mM,waitForSlot:!0,...e})}var dM,fM,pM,kx,hM,mM,gM,jx=L(()=>{Ve();ts();br();$r();za();dM="https://en.wikipedia.org",fM="https://simple.wikipedia.org",pM="wikipedia-live",kx="simple-wikipedia",hM="Wikipedia",mM="Simple English Wikipedia",gM="the-mechanical-code-talker (+https://tmct.polycode.co.uk/)";Si({name:kx,create:wM})});function RM(e,t){let n=Array.isArray(t?.search)?t.search:[],s=[],o=[];for(let r of n){let i=String(r?.id??"");if(!Tx.test(i))continue;let a=V(r?.label??"");a===e?s.push(i):a.startsWith(e)&&o.push(i)}return[...s,...o]}function _M(e){let t=[];for(let[n,s]of Object.entries(vM)){let o=e?.claims?.[n];if(!Array.isArray(o))continue;let r=0;for(let i of o){if(t.length>=jM)return t;if(r>=kM)break;let a=i?.mainsnak;if(a?.snaktype!=="value")continue;let c=String(a?.datavalue?.value?.id??"");Tx.test(c)&&(t.push({property:n,predicate:s,id:c}),r+=1)}}return t}function TM(e,t,n){for(let s of EM)for(let o of e){if(o.property!==s)continue;let r=t.get(o.id);if(r&&r!==n)return r}return null}function AM({fetchImpl:e,origin:t=yM,timeoutMs:n=vi,minIntervalMs:s=nn,userAgent:o=SM,waitForSlot:r=!1,sourceName:i=_x}={}){let a=Ba({fetchImpl:e,timeoutMs:n,minIntervalMs:s,userAgent:o,waitForSlot:r}),c=d=>`${t}/w/api.php?${new URLSearchParams({format:"json",origin:"*",maxlag:String(Da),...d})}`;async function l(d){let p=new Map;if(!d.length)return p;let f=await a.fetchJson(c({action:"wbgetentities",languages:"en",props:"labels",ids:d.join("|")}));for(let[h,m]of Object.entries(f?.entities??{})){let b=V(m?.labels?.en?.value??"");b&&p.set(h,b)}return p}async function u(d){let p=await a.fetchJson(c({action:"wbsearchentities",language:"en",uselang:"en",type:"item",limit:"5",search:d})),f=p?RM(d,p):[];for(let h of f){let b=(await a.fetchJson(c({action:"wbgetentities",languages:"en",props:"labels|descriptions|claims|info",ids:h})))?.entities?.[h];if(!b)continue;let g=_M(b),w=await l(g.map(k=>k.id)),y=TM(g,w,d);if(y&&xM.has(y))continue;let S=yr(i,d),T=[],v=new Set;for(let k of g){let R=w.get(k.id);!R||R===d||v.has(`${k.predicate}\0${R}`)||(v.add(`${k.predicate}\0${R}`),T.push({subject:d,predicate:k.predicate,object:R,provenance:S}))}let E=String(b.descriptions?.en?.value??""),I={term:d,title:String(b.labels?.en?.value??""),text:E,summary:Ru(E,ju),url:`${t}/wiki/${h}`,revid:Number(b.lastrevid),source:Rx,licence:$M};if(y&&(I.isa=y),T.length&&(I.facts=T),vx(I))return I}return null}return{name:i,origin:t,label:Rx,beginTurn(){a.beginTurn()},stats(){return a.stats()},provenanceTag(d){return yr(i,d)},async lookup(d){let p=V(d??"");return p?a.cachedFetch(p,()=>u(p)):null}}}function IM(e={}){return AM({waitForSlot:!0,...e})}var yM,_x,Rx,$M,SM,vM,EM,xM,kM,jM,Tx,Ax=L(()=>{Ve();br();$r();za();yM="https://www.wikidata.org",_x="wikidata",Rx="Wikidata",$M="CC0 1.0",SM="the-mechanical-code-talker (+https://tmct.polycode.co.uk/)",vM=Object.freeze({P31:"rdf:type",P279:"rdfs:subClassOf",P361:"mgx:partOf",P527:"mgx:hasA",P186:"mgx:madeOf",P366:"mgx:usedFor",P276:"mgx:atLocation",P1542:"mgx:causes",P170:"mgx:createdBy",P2670:"mgx:hasA"}),EM=["P279","P31"],xM=new Set(["scholarly article","album","song","single","film","television series","television series episode","band","musical group","video game","book","novel"]),kM=3,jM=12,Tx=/^Q[1-9][0-9]*$/;Si({name:_x,create:IM})});function LM(e,t){let n=bn(t,e);return n?V(n.lemma):V(e)}function MM(e,t,n,s,o,r){if(!s||r<=0)return[];let i=new Set([n]),a=[];for(let c of String(t??"").matchAll(CM)){if(a.length>=r)break;let l=LM(c[0],o);!l||!ib(l)||i.has(l)||!s[l]||(i.add(l),dm(e,l)&&a.push(PM(l)))}return a}function FM({dir:e,lexicon:t=null,sourceName:n=Ix}={}){let s=e||$x(),o=t;function r(){if(o)return o;try{o=an()}catch{o=null}return o}function i(a){let c=V(a??"");if(!c)return null;let l=dm(s,c);if(!l)return null;let u={...l,term:c};return _o(u)?u:null}return{name:n,origin:OM,provenanceTag(a){return yr(n,a)},async lookup(a){return i(a)},async pageByTitle(a){return i(a)},async linkedTitles(a,{limit:c=NM}={}){let l=i(a);if(!l)return null;let u=um(s);return MM(s,l.text,l.term,u,r(),Math.max(0,c))}}}var OM,Ix,CM,NM,PM,Ox=L(()=>{Ve();ts();Yn();br();fm();$r();OM="https://simple.wikipedia.org",Ix="simple-wikipedia-pack",CM=/[A-Za-z][A-Za-z'-]*/g,NM=25;PM=e=>e.charAt(0).toUpperCase()+e.slice(1);Si({name:Ix,create:FM})});var DM,BM,s4,pm=L(()=>{Ve();ts();Hr();$r();DM=Object.freeze({fanoutLimit:5,maxDepth:1,maxTopics:12,minIntervalMs:2e3,source:"wikipedia"}),BM=["this","is","about","the"],s4=BM.length});var Cx=L(()=>{zt();Qe();qp();Ve();Ue()});var Nx=L(()=>{Ve()});var Tu=L(()=>{Ln();Gr()});var Lx=L(()=>{Ve()});var zM,Px,Mx,Fx,T4,Dx=L(()=>{Lx();za();zM=250,Px=Object.freeze([{id:"wikimedia-featured",name:"Wikimedia featured feed",kind:"contemporary",format:"wikimedia-feed",url:"https://api.wikimedia.org/feed/v1/wikipedia/en/featured",homepage:"https://www.wikipedia.org/",licence:"CC BY-SA 4.0",browserVerified:"2026-08-08",minIntervalMs:nn,enabledByDefault:!0},{id:"hacker-news",name:"Hacker News",kind:"contemporary",format:"hn",url:"https://hacker-news.firebaseio.com/v0",homepage:"https://news.ycombinator.com/",licence:"user-submitted, discussion linked",browserVerified:"2026-08-08",minIntervalMs:zM,enabledByDefault:!0},{id:"usgs-quakes",name:"USGS earthquakes",kind:"contemporary",format:"usgs",url:"https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/2.5_day.geojson",homepage:"https://earthquake.usgs.gov/",licence:"US public domain",browserVerified:"2026-08-08",minIntervalMs:nn,enabledByDefault:!0},{id:"nyt-world",name:"NYT World News",kind:"contemporary",format:"rss",url:"https://rss.nytimes.com/services/xml/rss/nyt/World.xml",homepage:"https://www.nytimes.com/section/world",licence:"personal use with attribution",browserVerified:"2026-08-08",minIntervalMs:nn,enabledByDefault:!0},{id:"wikinews-published",name:"Wikinews",kind:"contemporary",format:"mediawiki",url:"https://en.wikinews.org/w/api.php",homepage:"https://en.wikinews.org/",licence:"CC BY 2.5",browserVerified:"2026-08-08",minIntervalMs:nn,enabledByDefault:!0},{id:"simple-wikipedia",name:"Simple English Wikipedia",kind:"kb",format:"wikipedia-summary",url:"https://simple.wikipedia.org",homepage:"https://simple.wikipedia.org/",licence:"CC BY-SA 4.0",browserVerified:"2026-08-08",minIntervalMs:nn,enabledByDefault:!0},{id:"wikidata",name:"Wikidata",kind:"kb",format:"wikidata",url:"https://www.wikidata.org",homepage:"https://www.wikidata.org/",licence:"CC0 1.0",browserVerified:"2026-08-08",minIntervalMs:nn,enabledByDefault:!0},{id:"wiktionary",name:"Wiktionary",kind:"kb",format:"wiktionary",url:"https://en.wiktionary.org",homepage:"https://en.wiktionary.org/",licence:"CC BY-SA 3.0",browserVerified:"2026-08-08",minIntervalMs:nn,enabledByDefault:!0},{id:"dbpedia-lookup",name:"DBpedia Lookup",kind:"kb",format:"dbpedia-lookup",url:"https://lookup.dbpedia.org",homepage:"https://www.dbpedia.org/",licence:"CC BY-SA 3.0",browserVerified:"2026-08-08",minIntervalMs:nn,enabledByDefault:!1},{id:"english-wikipedia",name:"English Wikipedia",kind:"kb",format:"wikipedia-summary",url:"https://en.wikipedia.org",homepage:"https://en.wikipedia.org/",licence:"CC BY-SA 4.0",browserVerified:"2026-08-08",minIntervalMs:nn,enabledByDefault:!1}]),Mx=Object.freeze(["wikimedia-featured","hacker-news","usgs-quakes","nyt-world","wikinews-published"]),Fx=Object.freeze(["simple-wikipedia","wikidata","wiktionary"]),T4=new Map(Px.map(e=>[e.id,e]))});var C4,N4,Bx=L(()=>{Ve();di();C4=Object.freeze(["wordnet-complete"]),N4=Object.freeze({"wordnet-complete":Object.freeze({license:"CC-BY-4.0",notice:"corpus/wordnet/LICENSE-NOTICE"})})});var _t,P4,M4,F4,D4,B4,z4,U4,W4,G4,V4,K4,H4,q4,Y4,X4,J4,Q4,Z4,e5,hm=L(()=>{_t=e=>()=>{throw new Error(e+" unavailable in the browser ask bundle")},P4=_t("createRequire"),M4=_t("readFileSync"),F4=_t("access"),D4=_t("readFile"),B4=_t("writeFile"),z4=_t("appendFile"),U4=_t("mkdir"),W4=_t("mkdtemp"),G4=_t("rename"),V4=_t("unlink"),K4=_t("rm"),H4=_t("stat"),q4=_t("copyFile"),Y4=_t("readdir"),X4=_t("createReadStream"),J4=_t("createWriteStream"),Q4=_t("randomBytes"),Z4=_t("spawnSync"),e5=_t("createInterface")});var zx=L(()=>{});var VM,S5,Ux,v5,E5,Wx=L(()=>{zt();hm();Qe();Ua();$u();tm();Ue();sn();zx();Nn();Ve();Yn();ll();vu();ts();VM=new Set(["VERB","AUX","ADP","SCONJ","CCONJ"]),S5=new Set([...VM,"PRON"]),Ux="said|says|told|reported|reports|announced|announces|stated|states|confirmed|confirms|added|wrote|writes",v5=new RegExp(`,\\s*["'\u201C\u201D\u2018\u2019]?\\s*([\\w.'\u2019-]+(?:\\s+[\\w.'\u2019-]+){0,3})\\s+(?:${Ux})\\s*[.!?]?\\s*$`,"i"),E5=new RegExp(`^\\s*([\\w.'\u2019-]+(?:\\s+[\\w.'\u2019-]+){0,4})\\s+(?:has\\s+|had\\s+|have\\s+)?(?:${Ux})\\s+(?:that\\s+)?(\\S.*)$`,"i")});var l8,u8,d8,f8,gm=L(()=>{Ve();xp();Nx();Ft();ts();Tu();Nn();Dx();za();$r();Bx();_u();Wx();l8=Object.freeze({sources:Mx,kbSources:Fx,extraSources:Object.freeze([]),pollMinutes:15,enrichMinutes:10,enrichTermsPerCycle:3,negativeCacheTtlHours:24,syllogismsPerIngest:12,itemCap:30,newsFactCap:4e3,feedTop:3,windowHours:48,minIntervalMs:0}),u8=6*36e5,d8=Object.freeze({"simple-wikipedia":"simple-wikipedia",wikidata:"wikidata",wiktionary:"wiktionary","dbpedia-lookup":"dbpedia"}),f8=Os.teach});function YM(e){if(!e||typeof e!="object")return!1;for(let t of["subject","predicate","object"])if(typeof e[t]!="string"||!e[t])return!1;return!(e.weight!==void 0&&!(typeof e.weight=="number"&&Number.isFinite(e.weight)&&e.weight>0))}function bm(e){if(!e||typeof e!="object"||typeof e.term!="string"||!e.term||!Array.isArray(e.facts)||e.facts.length===0)return!1;for(let t of e.facts)if(!YM(t)||V(t.subject)!==e.term&&V(t.object)!==e.term)return!1;return!0}var Gx,Au=L(()=>{Ve();Gx=32});var XM,E8,Vx=L(()=>{Ro();Fa();jo();Qe();Au();Ve();XM={},E8=ne(Se(tn(XM.url)),"..","..","..")});var k8,j8,R8,Kx=L(()=>{k8=Object.freeze(["task","autoFeedback","alloFeedback","turnManagement","timeManagement","discourseStructuring","ownCommunicationManagement","partnerCommunicationManagement","socialObligationsManagement","contactManagement"]),j8=Object.freeze({propositionalQuestion:Object.freeze({dimension:"task",gloss:"a yes/no question about whether a proposition holds ('does X import Y?')"}),checkQuestion:Object.freeze({dimension:"task",gloss:"a yes/no question whose asker already expects the answer yes ('..., right?')"}),setQuestion:Object.freeze({dimension:"task",gloss:"a wh-question asking for the members of a set ('what does X import?')"}),choiceQuestion:Object.freeze({dimension:"task",gloss:"a question asking which of the listed alternatives holds ('is X a module or a class?')"}),inform:Object.freeze({dimension:"task",gloss:"a declarative telling the addressee something (a teach turn; also tmct explaining its own function)"}),answer:Object.freeze({dimension:"task",gloss:"an inform that discharges a question just asked (an answer grounded in the graph)"}),confirm:Object.freeze({dimension:"task",gloss:"an answer 'yes' to a check question"}),disconfirm:Object.freeze({dimension:"task",gloss:"an answer 'no' to a check question"}),agreement:Object.freeze({dimension:"task",gloss:"an inform stating that the speaker holds what the addressee just stated to be true"}),disagreement:Object.freeze({dimension:"task",gloss:"an inform stating that the speaker holds what the addressee just stated to be false"}),correction:Object.freeze({dimension:"task",gloss:"a disagreement that also supplies the replacement ('no, I meant Y')"}),request:Object.freeze({dimension:"task",gloss:"asks the addressee to perform an action ('solve it' \u2014 a goal turn)"}),instruct:Object.freeze({dimension:"task",gloss:"a request the addressee is expected to carry out without negotiation (a bare imperative)"}),suggestion:Object.freeze({dimension:"task",gloss:"puts an action forward as advisable without claiming authority over the addressee"}),offer:Object.freeze({dimension:"task",gloss:"commits the speaker to an action, conditional on the addressee wanting it"}),autoPositive:Object.freeze({dimension:"autoFeedback",gloss:"the sender reports its own processing of the previous turn succeeded (an acknowledgement)"}),autoNegative:Object.freeze({dimension:"autoFeedback",gloss:"the sender reports its own processing of the previous turn failed \u2014 tmct's honest miss"}),initialGreeting:Object.freeze({dimension:"socialObligationsManagement",gloss:"opens an exchange of greetings ('hi')"}),returnGreeting:Object.freeze({dimension:"socialObligationsManagement",gloss:"answers a greeting with a greeting"}),thanking:Object.freeze({dimension:"socialObligationsManagement",gloss:"expresses gratitude for something the addressee did"}),apology:Object.freeze({dimension:"socialObligationsManagement",gloss:"expresses regret for something the speaker did"})}),R8=Object.freeze({teach:"inform","ask-set":"setQuestion","ask-propositional":"propositionalQuestion","ask-choice":"choiceQuestion",goal:"request",imperative:"instruct","honest-miss":"autoNegative",greeting:"initialGreeting",thanks:"thanking",help:"inform","game-answer":"answer","game-inform":"inform"})});var C8,QM,ZM,Hx,N8,L8,P8,M8,F8,qx=L(()=>{Ln();Tu();C8=Object.freeze({inline:"inline",enumerated:"enumerated"}),QM=new Set(["in","on","at","for","with","from","of","into","onto"]),ZM=new Set(["you","i","it","he","she","they","we","there","someone","something","one","him","her","them","who","himself","herself","itself","themselves","myself","yourself"]),Hx=new Set([...QM,"to","behind","before","near","next","along","alongside","under","over","between","among","during","without","about","by","as","like","that","if","when","while","being","because","since","until","so","and","but","or","immediately","likely","usually","normally","currently","is","are","was","were","do","does","did","has","have","had","will","would","could","should","might","must","can"]),N8=new Set([...Hx,"be","been"]),L8=new RegExp("^(?:in|at|on|from|by|with|for|of|to|off)\\s+(?:(?:what|which)\\s+[a-z][\\w'-]*|where|when|why|how|who)\\s+(?:is|are|was|were|do|does|did|can|could|should|would|will|has|have|might|must)\\s+(.+?)[?.!]*$","i"),P8=new RegExp("^(.*?)\\b(?:what|who|which|where|when|why|how)\\s+(?:i|you|he|she|it|we|they)?\\s*(?:is|are|was|were|do|does|did|can|could|should|would|will|has|have|might|must)\\b","i"),M8=Object.freeze([{family:"AtLocation",predicates:Object.freeze(["mgx:atLocation","mgx:locatedNear"]),cue:/\b(where|located|location)\b/i},{family:"IsA/Synonym/HasProperty",predicates:Object.freeze(["rdfs:subClassOf","mgx:synonym","mgx:hasProperty"]),cue:/\b(kind of|type of|another word for|same as|synonym)\b/i},{family:"HasPrerequisite/HasSubevent",predicates:Object.freeze(["mgx:hasPrerequisite","mgx:hasSubevent","mgx:hasFirstSubevent","mgx:hasLastSubevent"]),cue:/\b(before|after|first|next|then|once you|in order to)\b/i},{family:"Desires/MotivatedByGoal",predicates:Object.freeze(["mgx:desires","mgx:motivatedByGoal","mgx:causesDesire"]),cue:/\b(want\w*|desire\w*|motivat\w*)\b/i},{family:"Causes",predicates:Object.freeze(["mgx:causes","mgx:causesDesire"]),cue:/\b(cause\w*|result(?:s|ed)? in|leads? to|led to)\b/i},{family:"PartOf/HasA/MadeOf",predicates:Object.freeze(["mgx:partOf","mgx:hasA","mgx:madeOf"]),cue:/\b(part of|made of|has a|have a)\b/i},{family:"CapableOf",predicates:Object.freeze(["mgx:capableOf","mgxneg:capableOf"]),cue:/\b(capable of|able to)\b/i},{family:"UsedFor",predicates:Object.freeze(["mgx:usedFor"]),cue:/\b(used for|used to|use for)\b/i}]),F8=new Set([...ZM,...Hx,"a","an","the","some","any","few","many","several","more","most","my","your","his","its","our","their","what","which","where","when","why","how","find","found","put","get","keep","store","place","buy","locate","hide","wear","carry","use","take","open","cross","need","want"])});function Wa(e){let t=new Map;for(let[n,s]of e||[])!n||!s||n===s||(t.has(n)||t.set(n,new Set),t.get(n).add(s));return t}function Iu(e,t,{cap:n=6,stopAt:s=null,toward:o=null}={}){let r=[e],i=new Set([e]),a=e;for(;r.length<n&&!(o&&a===o);){let c=[...t.get(a)||[]].filter(d=>!i.has(d)).sort(Yx);if(!c.length)break;let l=o?c.filter(d=>d===o||ym(d,t).has(o)):[];a=(l.length?l:c)[0];let u=s&&s.has(a);if(u&&r.length>1||(i.add(a),r.push(a),u))break}return r}function ym(e,t,{cap:n=64}={}){let s=new Set([e]),o=[e];for(;o.length&&s.size<n;){let r=o.shift();for(let i of t.get(r)||[])s.has(i)||(s.add(i),o.push(i))}return s}function $m(e,t,n,s){if(n.has(e))return n.get(e);if(s.has(e))return 1;s.add(e);let o=t.get(e),r=1;if(o&&o.size){let i=0;for(let a of o)i=Math.max(i,$m(a,t,n,s));r=i+1}return s.delete(e),n.set(e,r),r}function eF(e){let t=new Map;for(let[n,s]of e||[])!n||!s||(t.has(n)||t.set(n,new Set),t.get(n).add(s),t.has(s)||t.set(s,new Set),t.get(s).add(n));return t}function tF(e,t,n,s,o,{threshold:r,rootDepth:i,icByTerm:a}){let c=ym(e,n),l=ym(t,n);if(c.has(t)||l.has(e))return{distinct:!1,reason:"subsumes",lcs:c.has(t)?t:e};if(s.size)for(let m of c){let b=s.get(m);if(b){for(let g of l)if(b.has(g))return{distinct:!0,reason:"disjoint",lcs:null}}}let u=[...c].filter(m=>l.has(m));if(!u.length)return c.size<2||l.size<2?{distinct:!1,reason:"inconclusive",lcs:null}:{distinct:!0,reason:"non-intersecting",lcs:null};let d=m=>$m(m,n,o,new Set),p=u[0],f=d(p);for(let m of u){let b=d(m);(b>f||b===f&&m<p)&&(p=m,f=b)}if(f<=i)return{distinct:!0,reason:"root-subsumer",lcs:p};if(a){let m=a.get(p);return typeof m=="number"&&m<r?{distinct:!0,reason:"low-ic",lcs:p}:{distinct:!1,reason:"shared-lineage",lcs:p}}return 2*f/(d(e)+d(t))<r?{distinct:!0,reason:"shallow-subsumer",lcs:p}:{distinct:!1,reason:"shared-lineage",lcs:p}}function Ou(e,{subClassEdges:t=[],parents:n=null,disjointEdges:s=[],threshold:o=.5,rootDepth:r=1,icByTerm:i=null}={}){let a=[...new Set((e||[]).filter(Boolean))],c=n||Wa(t),l=eF(s),u=new Map,d=new Map(a.map(w=>[w,w])),p=w=>{for(;d.get(w)!==w;)d.set(w,d.get(d.get(w))),w=d.get(w);return w},f=(w,y)=>{let S=p(w),T=p(y);S!==T&&d.set(S<T?T:S,S<T?S:T)},h=[];for(let w=0;w<a.length;w+=1)for(let y=w+1;y<a.length;y+=1){let S=tF(a[w],a[y],c,l,u,{threshold:o,rootDepth:r,icByTerm:i});h.push({a:a[w],b:a[y],...S}),S.distinct||f(a[w],a[y])}let m=new Map;for(let w of a){let y=p(w);m.has(y)||m.set(y,[]),m.get(y).push(w)}let b=w=>$m(w,c,u,new Set),g=[...m.values()].map(w=>{let y=[...w].sort(),S=y[0],T=b(S);for(let v of y){let E=b(v);E>T&&(T=E,S=v)}return{objects:y,label:S}}).sort((w,y)=>Yx(w.label,y.label));return{split:g.length>1,clusters:g,pairs:h}}var Yx,Cu=L(()=>{Ft();la();Yx=(e,t)=>e<t?-1:e>t?1:0});var Xx=L(()=>{});function Jx(e,{pending:t=null}={}){return t?!0:String(e??"").split(`
|
|
170
|
-
`).filter(n=>n.trim()!=="").length>1}var Nu,H8,Qx=L(()=>{Xx();Nu=Object.freeze({MEMORY_COUNT:"memory-count",MEMORY_CLASS:"memory-class",LETTER_WORDS:"letter-words",COLLECTION_CONTENTS:"collection-contents",TAUGHT_CLASS_COUNT:"taught-class-count",MEMBERSHIP_LIST:"membership-list",MEMBERSHIP_EXAMPLE:"membership-example",SKOS_NEIGHBOURHOOD:"skos-neighbourhood",WHAT_ELSE:"what-else",FACT_SET:"fact-set",FACT_READBACK:"fact-readback"}),H8=Object.freeze(Object.values(Nu))});function Sm(e){return typeof e=="string"&&nF.test(e)}function Zx(e){return!!e&&typeof e=="object"&&Sr(e.s)}function vm(e){return!!e&&typeof e=="object"&&e.kind==="fact"&&Sm(e.world)&&Sr(e.subject)&&Sr(e.predicate)&&Sr(e.object)}function Em(e){if(!e||typeof e!="object"||e.kind!=="rule"||!Sm(e.world)||!Sr(e.name)||!oF.has(e.ruleKind)||!e.slots||typeof e.slots!="object"||Array.isArray(e.slots))return!1;let t=Object.values(e.slots);return t.length>0&&t.every(Sr)}function xm(e){return!!e&&typeof e=="object"&&e.kind==="meta"&&Sm(e.world)&&Sr(e.opening)}function ek(e){return vm(e)||Em(e)||xm(e)}function tk(e){let t=e||[],n=t.filter(l=>l.predicate===rF).sort((l,u)=>iF(`${l.subject}\0${l.object}`,`${u.subject}\0${u.object}`));if(!n.length)return t;let s=new Set(t.filter(l=>l.predicate==="rdf:type").map(l=>l.subject)),o=new Map;for(let l of t)l.predicate==="mgx:located-in"&&o.set(l.subject,l.object);let r=(l,u)=>t.some(d=>d.predicate==="rdf:type"&&d.object===l&&o.get(d.subject)===u),i=t.find(l=>typeof l.world=="string"&&l.kind==="fact"),a=(l,u,d)=>({...i?{world:i.world,kind:"fact"}:{},subject:l,predicate:u,object:d}),c=[];for(let l of n){let u=l.subject,d=l.object;if(r(d,u))continue;let p=d,f=1;for(;s.has(p);)f+=1,p=`${d}-${f}`;s.add(p),c.push(a(p,"rdf:type",d)),c.push(a(p,"rdf:type","portable")),c.push(a(p,"mgx:located-in",u))}return c.length?[...t,...c]:t}var nF,sF,oF,Sr,rF,iF,vr=L(()=>{nF=/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/,sF=Object.freeze(["action-signature","action-precond","action-effect","action-constraint"]),oF=new Set(sF),Sr=e=>typeof e=="string"&&e.trim()!=="";rF="mgx:default-contains",iF=(e,t)=>e<t?-1:e>t?1:0});var aF,cF,X8,Ga=L(()=>{aF=Object.freeze(["mgx:consumes","mgx:display-name","mgx:evades","mgx:guards","mgx:hasMass","mgx:is-predator","mgx:mass-drain-per-turn","mgx:model","mgx:pursues","mgx:vision-radius"]),cF=Object.freeze(new Set(["mgx:consumes","mgx:evades","mgx:guards","mgx:pursues"])),X8=Object.freeze(["mgx:consumes","mgx:evades","mgx:pursues"])});var Ei=L(()=>{});var lF,uF,dF,fF,pF,hF,mF,gF,bF,wF,yF,$F,SF,vF,EF,xF,kF,jF,RF,t6,_F,nk,n6,s6,sk=L(()=>{ts();Gr();lF="subClassOf",uF="typeAssertion",dF="relation",fF="someValuesFrom",pF="cardinality",hF="disjointWith",mF="possessive",gF="adjective",bF="capability",wF="union",yF="complement",$F="negativeType",SF="enumeration",vF="differentFrom",EF="bareExistential",xF="transitiveRole",kF="inverseRole",jF="universal",RF="subPropertyOf",t6=Object.freeze([lF,uF,dF,fF,pF,hF,mF,gF,bF,wF,yF,$F,SF,vF,EF,xF,kF,jF,RF]),_F=new Set(["go","take","drop","open","unlock","close","give","look","talk","examine","dig","eat","put"]),nk=new Map([["pick up","take"],["pick","take"],["grab","take"],["put down","drop"],["set down","drop"],["leave","drop"],["talk to","talk"],["speak to","talk"],["speak with","talk"],["talk","talk"],["speak","talk"],["chat with","talk"],["converse with","talk"],["look at","examine"],["examine","examine"],["inspect","examine"],["have a look at","examine"],["take a look at","examine"],["check out","examine"],["shut","close"]]),n6=Math.max(...[...nk.keys()].map(e=>e.split(" ").length)),s6=[...new Set([..._F,...[...nk.keys()].map(e=>e.split(" ")[0])])]});var Er=L(()=>{});var km=L(()=>{Fe();us();Er()});function Ht({name:e,label:t,question:n,params:s=[],preconditions:o=[],add:r=[],del:i=[]}){return Object.freeze({type:To.Capability,name:e,label:t,question:n,readOnly:!0,parameters:Object.freeze(s),preconditions:Object.freeze(o),effects:Object.freeze({add:Object.freeze(r),del:Object.freeze(i)})})}var TF,To,je,AF,xr,bt,cn,wn,IF,ok,Kt,OF,CF,rk,u6,d6,f6,xi=L(()=>{TF=Object.freeze({cap:"urn:tmct:cap#",taught:"urn:tmct:taught#",mgx:"urn:tmct:mgx#",seon:"http://se-on.org/ontologies/seon.owl#"}),To=Object.freeze({Capability:"cap:Capability",Parameter:"cap:Parameter",Precondition:"cap:Precondition",Effect:"cap:Effect"}),je=Object.freeze({Symbol:"seon:CodeEntity",Module:"mgx:Module",Class:"seon:ClassType",MemoryTerm:"mgx:MemoryTerm",Query:"cap:FreeText",Kind:"cap:KindFilter",Package:"cap:PackageName"}),AF=Object.freeze([je.MemoryTerm]),xr=Object.freeze({graphLoaded:"cap:graph-loaded",resolves:"cap:resolves",anyPresent:"cap:any-present",memoryFacts:"cap:memory-facts"}),bt=(e,t,{arg:n=e,required:s=!0,note:o=""}={})=>Object.freeze({type:To.Parameter,name:e,kind:t,arg:n,required:s,note:o}),cn=()=>Object.freeze({type:To.Precondition,pred:xr.graphLoaded}),wn=(e,t)=>Object.freeze({type:To.Precondition,pred:xr.resolves,param:e,as:t}),IF=e=>Object.freeze({type:To.Precondition,pred:xr.anyPresent,params:Object.freeze([...e])}),ok=()=>Object.freeze({type:To.Precondition,pred:xr.memoryFacts}),Kt=(e,t=null)=>Object.freeze({type:To.Effect,pred:"cap:knows",topic:e,of:t?`?${t}`:null});OF=Object.freeze([Ht({name:"tmct_search",label:"search",question:"lexical search across the graph",params:[bt("query",je.Query,{required:!1,note:"required unless a kind filter is given"}),bt("kind",je.Kind,{required:!1}),bt("name",je.Query,{required:!1}),bt("decorator",je.Query,{required:!1})],preconditions:[cn(),IF(["query","kind"])],add:[Kt("matches","query")]}),Ht({name:"tmct_describe",label:"describe",question:"a symbol's definition, kind and relations",params:[bt("symbol",je.Symbol)],preconditions:[cn(),wn("symbol",je.Symbol)],add:[Kt("description","symbol")]}),Ht({name:"tmct_signature",label:"signature",question:"a symbol's signature only",params:[bt("symbol",je.Symbol)],preconditions:[cn(),wn("symbol",je.Symbol)],add:[Kt("signature","symbol")]}),Ht({name:"tmct_impact",label:"impact",question:"what a change to this module or symbol reaches (impact closure)",params:[bt("module",je.Symbol,{note:"a Module, or any sited symbol \u2014 a fine-grained seed walks callsSymbol dependents and coarsens them to module grain"})],preconditions:[cn(),wn("module",je.Symbol)],add:[Kt("impact","module")]}),Ht({name:"tmct_members",label:"members",question:"the methods/attributes of a class",params:[bt("class",je.Class,{arg:"class"})],preconditions:[cn(),wn("class",je.Class)],add:[Kt("members","class")]}),Ht({name:"tmct_subclasses",label:"subclasses",question:"the subclasses of a class",params:[bt("class",je.Class,{arg:"class"})],preconditions:[cn(),wn("class",je.Class)],add:[Kt("subclasses","class")]}),Ht({name:"tmct_exports",label:"exports",question:"a module's public exports",params:[bt("module",je.Module)],preconditions:[cn(),wn("module",je.Module)],add:[Kt("exports","module")]}),Ht({name:"tmct_callers",label:"callers",question:"functions that call this symbol",params:[bt("symbol",je.Symbol)],preconditions:[cn(),wn("symbol",je.Symbol)],add:[Kt("callers","symbol")]}),Ht({name:"tmct_callees",label:"callees",question:"functions this symbol calls",params:[bt("symbol",je.Symbol)],preconditions:[cn(),wn("symbol",je.Symbol)],add:[Kt("callees","symbol")]}),Ht({name:"tmct_calls",label:"calls",question:"the call edges out of this symbol/module",params:[bt("symbol",je.Symbol)],preconditions:[cn(),wn("symbol",je.Symbol)],add:[Kt("calls","symbol")]}),Ht({name:"tmct_tests_for",label:"tests",question:"the tests covering this symbol",params:[bt("symbol",je.Symbol)],preconditions:[cn(),wn("symbol",je.Symbol)],add:[Kt("tests","symbol")]}),Ht({name:"tmct_untested",label:"untested",question:"symbols with no covering test",params:[],preconditions:[cn()],add:[Kt("untested",null)]}),Ht({name:"tmct_history",label:"history",question:"the commit history of this symbol",params:[bt("symbol",je.Symbol)],preconditions:[cn(),wn("symbol",je.Symbol)],add:[Kt("history","symbol")]}),Ht({name:"tmct_cochanges",label:"cochanges",question:"symbols that change together with this one",params:[bt("symbol",je.Symbol)],preconditions:[cn(),wn("symbol",je.Symbol)],add:[Kt("cochanges","symbol")]}),Ht({name:"tmct_architecture",label:"arch",question:"the architecture overview (optional package filter)",params:[bt("package",je.Package,{required:!1})],preconditions:[cn()],add:[Kt("architecture","package")]}),Ht({name:"tmct_related",label:"related",question:"a term's synonyms and related concepts (the SKOS view over the conversational-memory graph)",params:[bt("term",je.MemoryTerm,{note:"a concept term, matched against memory relation facts rather than resolved in the code graph"})],preconditions:[ok(),wn("term",je.MemoryTerm)],add:[Kt("related","term")]}),Ht({name:"tmct_sprite",label:"sprite",question:"the sprite for a class, with the expression and size asked for",params:[bt("class",je.MemoryTerm,{arg:"class",note:"a world class, matched against the memory graph's own fact rows rather than resolved in the code graph"}),bt("expression",je.Kind,{required:!1,note:"one of sprite-expressions.mjs's palette words, carried as an mgx:feels fact"}),bt("size",je.Kind,{required:!1,note:"a taught mgx:hasProperty size word, resolved to a render scale \u2014 not a template tier"})],preconditions:[ok(),wn("class",je.MemoryTerm)],add:[Kt("sprite","class")]})]),CF=e=>Object.freeze(e.reduce((t,n)=>(t[n.name]=n,t),Object.create(null))),rk=OF,u6=CF(rk),d6=Object.freeze({tmct_context:"unbounded edit-context bundle (multi-file); needs a size/budget precondition",tmct_context_more:"unbounded context continuation; same as tmct_context",tmct_snippet:"raw source-file read (reads the filesystem); needs a file-read + span precondition",tmct_ask:"the plain-English question entry point itself \u2014 calls ask.mjs directly and bypasses the capability planner; not one of the planner's operators",tmct_export:"reads the memory store's whole fact set with no discriminating param and no resolver goal frame; needs NL-reachability wiring before it can join",tmct_ingest:"writes into the memory store (grounds facts); capability() only models read-only operators, so a write path needs its own precondition/effect design first",tmct_file_history:"a module-grain cut of the same history edge tmct_history already models; no NL frame distinguishes the granularities yet",tmct_method_history:"a method-grain cut of the same history edge tmct_history already models; no NL frame distinguishes the granularities yet",tmct_class_history:"a class-grain cut of the same history edge tmct_history already models; no NL frame distinguishes the granularities yet"}),f6=Object.freeze({prefixes:TF,vocab:To,kinds:je,precond:xr,get capabilities(){return rk}})});var jm=L(()=>{xi()});var Lu=L(()=>{Nn()});var Rm=L(()=>{xi()});function FF(e){let t={};for(let n of String(e).toLowerCase().match(/[a-z]+/g)||[])!t.expression&&Object.hasOwn(co,n)&&(t.expression=n),!t.size&&Oa([{predicate:MF,object:n}])!==1&&(t.size=n);return t}var N6,L6,P6,M6,MF,F6,_m=L(()=>{us();as();du();Ve();Fe();uc();Wh();xi();Rm();N6=new RegExp(`\\b(?:${Object.keys(rs).map(e=>e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(/\s+/g,"\\s+")).join("|")})\\b`,"i"),L6=Object.freeze({"reverse:calls":{topic:"callers",arg:"symbol"},"forward:calls":{topic:"callees",arg:"symbol"},"reverse:tests":{topic:"tests",arg:"symbol"},"forward:tests":{topic:"tests",arg:"symbol"},"reverse:inherits":{topic:"subclasses",arg:"class"},"forward:reexports":{topic:"exports",arg:"module"},"forward:contains":{topic:"members",arg:"class"},"when:touches":{topic:"history",arg:"symbol"},"forward:cochange":{topic:"cochanges",arg:"symbol"},"reverse:cochange":{topic:"cochanges",arg:"symbol"}}),P6=Object.freeze({imports:"no importer/imports query tool in the registry (there is no tmct_imports); refusing beats mis-routing to calls",uses:"a query-side UNION (imports+calls+callsSymbol) with no single capability; a router that must emit ONE call cannot honour it \u2014 refuse",defines:"Module->symbol `defines` has no dedicated capability (tmct_members is Class-scoped `contains`); refuse rather than answer a different grain",serves:"a provider-declared edge with no capability in the registry; the ask lane traverses it directly, so refusing here beats mis-routing to a code-grain tool",denotes:"a provider-declared edge with no capability in the registry; the ask lane traverses it directly, so refusing here beats mis-routing to a code-grain tool"}),M6=Object.freeze({}),MF="mgx:hasProperty";F6=Object.freeze([{re:/\buntested\b|\bwithout\s+(?:a\s+)?tests?\b|\bhas\s+no\s+tests?\b|\bneeds?\s+(?:a\s+)?tests?\b/i,topic:"untested",noArg:!0,skipIfSuperlative:!0},{re:/\bblast\s*radius\b|\bimpacts?\b|\bimpacted\b|what\s+(?:a\s+)?change.*(?:reach|affect|touch)|what\s+(?:depends?\s+on|dependents?)\b/i,topic:"impact",arg:"module"},{re:/\bcall[\s-]*edges?\b|\bcall[\s-]*graph\b|\boutgoing\s+calls?\b|\bcall[\s-]*sites?\s+(?:of|in|out|from)\b/i,topic:"calls",arg:"symbol"},{re:/\bcallees?\b|wh(?:at|o)\s+does\s+\S+\s+call\b/i,topic:"callees",arg:"symbol"},{re:/\bcallers?\b|who\s+calls\b|what\s+calls\b/i,topic:"callers",arg:"symbol"},{re:/\btests?\b.*\b(?:for|cover|covering|of)\b|which\s+tests?\b|covers?\b|covered\b|test\s+coverage\b/i,topic:"tests",arg:"symbol"},{re:/\bcochang|change[- ]coupl/i,topic:"cochanges",arg:"symbol"},{re:/\bexports?\b|\bpublic\s+api\b/i,topic:"exports",arg:"module"},{re:/\bsubclasses?\b|children\s+of\b|\bextends?\b/i,topic:"subclasses",arg:"class"},{re:/\bmembers?\b|\bmethods?\s+of\b|\battributes?\s+of\b/i,topic:"members",arg:"class"},{re:/\bhistory\b|who\s+changed\b|commits?\s+(?:that\s+)?touch/i,topic:"history",arg:"symbol"},{re:/\bsignature\b/i,topic:"signature",arg:"symbol"},{re:/\bsynonyms?\b|\banother\s+word\s+for\b|\brelated\s+(?:words?|concepts?|to)\b/i,topic:"related",arg:"term"},{re:/\bsprite\b|\bicon\b|\bavatar\b|\bpicture\s+of\b|\bwhat\s+does\s+.+\s+look\s+like\b/i,topic:"sprite",arg:"class",slots:FF},{re:/\bdescribe\b|\bexplain\b|what\s+is\b|tell\s+me\s+about\b|definition\s+of\b/i,topic:"description",arg:"symbol"},{re:/\bsearch\b|\bfind\b|look\s+for\b/i,topic:"matches",arg:"query"}])});var ck=L(()=>{});var BF,lk=L(()=>{_m();xi();Rm();ck();us();BF=Object.freeze([Object.freeze({id:"coverage-invariant",kind:"maintenance",invariant:"an impactful module must be tested",focusClass:"Module",modes:Object.freeze(["scoped","global"]),subGoals:Object.freeze(["impact","untested"]),priorityTopic:"impact",coverageTopic:"untested",compose:Object.freeze({op:"intersect",a:Object.freeze({topic:"untested"}),b:Object.freeze({topic:"impact",of:"focus",withFocus:!0}),names:"the change's untested footprint",empty:"no coverage gap"}),achieves:"coverage-gap"}),Object.freeze({id:"cochange-risk-invariant",kind:"maintenance",invariant:"a module change-coupled with the focus must be tested",focusClass:"Module",modes:Object.freeze(["scoped"]),subGoals:Object.freeze(["cochanges","untested"]),priorityTopic:"cochanges",coverageTopic:"untested",compose:Object.freeze({op:"intersect",a:Object.freeze({topic:"cochanges",of:"focus"}),b:Object.freeze({topic:"untested"}),names:"the change-coupled untested set",empty:"every change-coupled module is tested"}),achieves:"cochange-risk"})])});var Pu=L(()=>{Ei();Lu();_m();lk();xi();jm()});function WF(e=process.env){return e?.TMCT_WORLDS_PACK_DIR||ne(UF,"corpus","worlds")}function uk(e){try{return wr(Zs(e))}catch{return null}}function dk(e){if(Am.has(e))return Am.get(e);let t=null,n=uk(ne(e,"index.json.gz"));if(n)try{let s=JSON.parse(n.toString("utf8"));s&&typeof s=="object"&&!Array.isArray(s)&&(t=s)}catch{}return Am.set(e,t),t}function GF(e,t){let n=dk(e);if(!n)return null;let s=n[String(t??"")];if(!Zx(s))return null;let o=`${e}\0${t}`;if(Im.has(o))return Im.get(o);let r=null,i=uk(ne(e,"shards",`${s.s}.jsonl.gz`));if(i){let a=[],c=[],l=null;for(let u of i.toString("utf8").split(`
|
|
171
|
-
`))if(u.trim())try{let d=JSON.parse(u);if(!ek(d)||d.world!==t)continue;vm(d)?a.push(d):Em(d)?c.push(d):xm(d)&&!l&&(l=d)}catch{}(a.length||c.length||l)&&(r={name:t,facts:tk(a),rules:c,meta:l})}return Im.set(o,r),r}var KF,UF,Am,Im,VF,
|
|
168
|
+
`);for(let r=0;r<o.length;r+=1){let i=o[r].trim();if(!(!i||i.startsWith("#"))){if(i.startsWith("~")){let a=i.slice(1).split(",").map(c=>c.trim().toLowerCase()).filter(Boolean);if(a.length<2)throw new Error(`${e}:${r+1}: a synonym family needs at least 2 entries`);s.push(a);continue}n.push({pattern:i,slots:Jh(i)})}}return{patterns:n,synonyms:s}}var AP,XE,JE,QE,jP,ZE,Xh,RP,Ca,bu=L(()=>{zt();jo();Qe();AP={},XE=ne(Se(tn(AP.url)),"..","..",".."),JE=ne(XE,"data","templates","responses.jsonl"),QE=ne(XE,"data","phrasebook","software-phrases.txt"),jP=new Set(["terse","friendly","technical"]),ZE=/\{([A-Za-z][A-Za-z0-9]*)\}/g,Xh=Object.freeze(new Set(["subject","count","noun","scope","comparison","metric","unit","superlative","provenance"]));RP={count:"number",when:"number",location:"path",commit:"path",provenance:"provenance"};Ca=null});function OP(e,t={}){let n=IP.exec(String(e||""));if(!n)return 1;let s=t?.[n[1]];return typeof s=="number"&&Number.isFinite(s)?s:1}function CP(e,t={}){let n=Array.isArray(e?.sourceIds)?e.sourceIds:[];return n.length?Math.max(...n.map(s=>OP(s,t))):1}function lt(e,t={}){return(Array.isArray(e)?e:[]).map(s=>({row:s,bias:CP(s,t)})).sort((s,o)=>o.bias-s.bias||(o.row?.trust??0)-(s.row?.trust??0)||Zt(s.row,o.row)).map(s=>s.row)}var IP,ox=L(()=>{tr();IP=/^src:corpus:(.+)$/});var Rt,T3,Zs,A3,I3,O3,C3,N3,L3,P3,M3,F3,D3,B3,z3,rx,NP,U3,W3,G3,Ro=L(()=>{Rt=e=>()=>{throw new Error(e+" unavailable in the browser ask bundle")},T3=Rt("createRequire"),Zs=Rt("readFileSync"),A3=Rt("access"),I3=Rt("readFile"),O3=Rt("writeFile"),C3=Rt("appendFile"),N3=Rt("mkdir"),L3=Rt("mkdtemp"),P3=Rt("rename"),M3=Rt("unlink"),F3=Rt("rm"),D3=Rt("stat"),B3=Rt("copyFile"),z3=Rt("readdir"),rx=Rt("createReadStream"),NP=Rt("createWriteStream"),U3=Rt("randomBytes"),W3=Rt("spawnSync"),G3=Rt("createInterface")});function em(e,t){let n=String(e).toLowerCase().replace(/^[^a-z]+/,"");if(!n)return null;for(let o of t.vowel_sound_consonants||[])if(n.startsWith(o))return!0;for(let o of t.consonant_sound_vowels||[])if(n.startsWith(o))return!1;let s=n[0];return"aeiou".includes(s)?!0:/[a-z]/.test(s)?!1:null}function FP(e=PP){let t=lr(Zs(e,"utf8"));return Array.isArray(t.rule)?t.rule:[]}function yu(){if(wu===null)try{wu=FP()}catch{wu=[]}return wu}var DP,LP,PP,MP,J3,wu,$u=L(()=>{Ro();jo();Qe();Fl();bu();DP={},LP=Se(tn(DP.url)),PP=ne(LP,"..","..","data","templates","grammar-rules.toml"),MP=Object.freeze(["prose","entity","path","number","code","provenance","receipt"]),J3=Object.freeze(new Set(MP.filter(e=>e!=="prose")));wu=null});function BP(){if(Na!==void 0)return Na;try{let e=ix?ix():zP();Na=e&&e.winkNLP&&e.model?e:null}catch{Na=null}return Na}function zP(){let e=process.getBuiltinModule("node:module").createRequire(UP.url);return{winkNLP:e("wink-nlp"),model:e("wink-eng-lite-web-model")}}function Su(){if(yi!==void 0)return yi;let e=BP();if(!e)return yi=null,null;try{yi=e.winkNLP(e.model)}catch{yi=null}return yi}var UP,ix,Na,yi,vu=L(()=>{UP={}});var tm=L(()=>{vu()});var cx,ax=L(()=>{cx={comment:"tmct's starter lexicon, now covering BOTH the original software domain and the default 'human-world' persona's everyday people/places/objects/nature/time/body/mind vocabulary. Every word the ACE-OWL sub-fragment parser (src/domain/grammar/ace.mjs) is allowed to understand is DECLARED here \u2014 tmct never guesses a word's category. Nouns may declare a possessive property typing ('data' or 'object', pattern 7) or an irregular 'plural' (WordNet-sourced human nouns like 'man'/'child' need this \u2014 the morphology fold only handles regular -s/-ies/-es endings); adjectives MUST declare a type ('subclass' forms a class, 'data' asserts a boolean-ish datatype property, pattern 8); verbs may declare a preposition ('depend' + 'on' \u2192 dependsOn). The human-domain additions are flat and simple (breadth over depth \u2014 no gender/kinship taxonomy, no formal role hierarchy), matching corpus/tier2/generate.mjs's CORPUSES.human.lexicon sub-key, which --verify drift-checks against. Extend via loadLexicon(extra) with this same shape.",nouns:{module:{},class:{},function:{},method:{},attribute:{},variable:{},constant:{},test:{},suite:{},service:{},repository:{},branch:{},commit:{},tag:{},release:{},package:{},library:{},framework:{},api:{},endpoint:{},route:{},handler:{},controller:{},model:{},view:{},template:{},component:{},interface:{},type:{},category:{},kind:{},artifact:{},routine:{},part:{},helper:{},operation:{},change:{},schema:{},database:{},table:{},query:{},index:{plural:"indices"},cache:{},queue:{},worker:{},job:{},task:{},bug:{},defect:{},issue:{},ticket:{},feature:{},requirement:{},specification:{},document:{},developer:{},engineer:{},user:{},visitor:{},team:{},project:{},codebase:{},file:{},directory:{},folder:{},line:{},symbol:{},identifier:{},comment:{},docstring:{},string:{},number:{},list:{},array:{},graph:{},node:{},edge:{},triple:{},fact:{},ontology:{},lexicon:{},grammar:{},sentence:{},utterance:{},session:{},response:{},request:{},question:{},answer:{},error:{},exception:{},warning:{},log:{},metric:{},benchmark:{},pipeline:{},build:{},deployment:{},environment:{},config:{},configuration:{},setting:{},option:{},flag:{},argument:{},parameter:{},value:{},result:{},output:{},input:{},server:{},client:{},protocol:{},message:{},event:{},hook:{},plugin:{},script:{},tool:{},command:{},prompt:{},token:{},parser:{},compiler:{},linter:{},formatter:{},runtime:{},process:{},thread:{},loop:{},statement:{},expression:{},keyword:{},scope:{},callback:{},promise:{},iterator:{},generator:{},unit:{},risk:{},prototype:{},milestone:{},sprint:{},backlog:{},roadmap:{},phase:{},pattern:{},smell:{},coverage:{},mock:{},stub:{},fixture:{},assertion:{},snapshot:{},regression:{},migration:{},refactor:{},review:{},merge:{},license:{property:"data"},version:{property:"data"},name:{property:"data"},path:{property:"data"},size:{property:"data"},status:{property:"data"},language:{property:"data"},extension:{property:"data"},churn:{property:"data"},impact:{property:"data"},complexity:{property:"data"},latency:{property:"data"},duration:{property:"data"},frequency:{property:"data"},severity:{property:"data"},owner:{property:"object"},maintainer:{property:"object"},author:{property:"object"},reviewer:{property:"object"},parent:{property:"object"},dependency:{property:"object"},man:{plural:"men"},woman:{plural:"women"},person:{plural:"people"},child:{plural:"children"},boy:{},girl:{},baby:{},adult:{},friend:{},neighbor:{},stranger:{},guest:{},doctor:{},teacher:{},nurse:{},student:{},farmer:{},mother:{},father:{},brother:{},sister:{},family:{},king:{},queen:{},soldier:{},artist:{},writer:{},cook:{},group:{},crowd:{},audience:{},club:{},president:{},human:{},lawyer:{},driver:{},manager:{},officer:{},judge:{},priest:{},servant:{},butler:{},housekeeper:{},gardener:{},employee:{},boss:{},husband:{},wife:{plural:"wives"},son:{},daughter:{},grandmother:{},grandfather:{},citizen:{},customer:{},leader:{},champion:{},volunteer:{},resident:{},place:{},city:{},town:{},village:{},country:{},house:{},home:{},room:{},kitchen:{},bedroom:{},bathroom:{},school:{},hospital:{},shop:{},market:{},church:{},park:{},garden:{},street:{},road:{},bridge:{},farm:{},office:{},factory:{},museum:{},hotel:{},airport:{},castle:{},beach:{},forest:{},mountain:{},hat:{},shirt:{},coat:{},shoe:{},dress:{},clothing:{},chair:{},desk:{},lamp:{},portrait:{},bed:{},door:{},window:{},wall:{},roof:{},pen:{},paper:{},key:{},lock:{},box:{},car:{},bicycle:{},boat:{},train:{},wheel:{},knife:{plural:"knives"},spoon:{},fork:{},plate:{},cup:{},bottle:{},bag:{},money:{},coin:{},toy:{},machine:{},clock:{},phone:{},book:{},letter:{},umbrella:{},glove:{},sock:{},ring:{},watch:{},mirror:{},candle:{},ladder:{},hammer:{},basket:{},wallet:{},dog:{},cat:{},horse:{},cow:{},pig:{},sheep:{},bird:{},fish:{},mouse:{plural:"mice"},rabbit:{},rodent:{},bear:{},lion:{},tiger:{},elephant:{},snake:{},mole:{},groundhog:{},meerkat:{},tree:{},flower:{},grass:{},leaf:{plural:"leaves"},root:{},seed:{},fruit:{},water:{},air:{},fire:{},earth:{},stone:{},sand:{},gold:{},iron:{},rain:{},snow:{},wind:{},cloud:{},sun:{},moon:{},star:{},owl:{},wolf:{plural:"wolves"},frog:{},bee:{},ant:{},butterfly:{},spider:{},river:{},ocean:{},time:{},day:{},night:{},morning:{},evening:{},week:{},month:{},year:{},hour:{},minute:{},second:{},moment:{},season:{},spring:{},summer:{},winter:{},wedding:{},race:{},dozen:{},half:{plural:"halves"},amount:{},meeting:{},game:{},war:{},trip:{},birthday:{},holiday:{},autumn:{},century:{},body:{},head:{},hand:{},arm:{},leg:{},foot:{plural:"feet"},eye:{},ear:{},mouth:{},nose:{},hair:{},heart:{},blood:{},bone:{},skin:{},face:{},food:{},bread:{},meat:{},milk:{},egg:{},cheese:{},vegetable:{},meal:{},breakfast:{},dinner:{},drink:{},wine:{},tea:{},coffee:{},tongue:{},tooth:{plural:"teeth"},finger:{},toe:{},shoulder:{},knee:{},brain:{},lung:{},sugar:{},salt:{},word:{},story:{},news:{},idea:{},thought:{},mind:{},memory:{},dream:{},belief:{},love:{},hate:{},fear:{},joy:{},anger:{},hope:{},surprise:{},pride:{},song:{},music:{},sound:{},voice:{},picture:{},art:{},knowledge:{},opinion:{},reason:{},imagination:{},laughter:{},tear:{},smile:{},silence:{},object:{},location:{},quantity:{},organization:{},animal:{},plant:{},furniture:{},vehicle:{},insect:{},emotion:{},metal:{},liquid:{},weather:{},planet:{},jewelry:{},cutlery:{},government:{},material:{},draw:{},set:{},heavy:{},stand:{},free:{},pack:{},dead:{},pick:{},double:{},straight:{},cast:{},dry:{},bank:{},stamp:{},tender:{},fair:{},active:{},regular:{},blue:{},hack:{},band:{},brush:{},guard:{},master:{},transfer:{},firm:{},side:{},bull:{},mate:{},rank:{},board:{},brace:{},grade:{},better:{},course:{},natural:{},butt:{},camp:{},crop:{},date:{},fold:{},help:{},hunt:{},count:{},court:{},crush:{},major:{},march:{},tease:{},tough:{},flight:{},forward:{},division:{},commission:{},jam:{},rat:{},gray:{},hood:{},jerk:{},miss:{},pile:{},pool:{},rear:{},whip:{},bench:{},chain:{},cycle:{},grind:{},guide:{},stiff:{},troll:{},union:{},circle:{},carrier:{},defence:{},defense:{},radical:{},reserve:{},intimate:{},opposite:{},superior:{},grey:{},host:{},knot:{},left:{},lost:{},blind:{},crank:{},panel:{},rally:{},state:{},tramp:{},waver:{},clutch:{},living:{},runner:{},steady:{},stream:{},combine:{},company:{},convert:{},general:{},moderate:{},alternate:{},ace:{},crab:{},flop:{},fund:{},pair:{},rake:{},rock:{},sick:{},blade:{},cheat:{},sport:{},caller:{},column:{},couple:{},divine:{},pledge:{},simple:{},sponge:{},system:{},wanton:{},sleeper:{},business:{},associate:{},instrument:{},substitute:{},gun:{},sum:{},alto:{},best:{},buff:{},dear:{},mass:{},cream:{},creep:{},giant:{},labor:{},pilot:{},sneak:{},stack:{},staff:{},world:{},gutter:{},jumper:{},labour:{},lather:{},picket:{},reader:{},savage:{},captain:{},culture:{},monitor:{},neutral:{},unknown:{},utility:{},inferior:{},initiate:{},innocent:{},national:{},transpose:{},association:{},professional:{},bum:{},fan:{},law:{},deck:{},fool:{},join:{},kink:{},page:{},pink:{},stud:{},twin:{},clump:{},coach:{},dance:{},drone:{},extra:{},feast:{},fence:{},fleet:{},flock:{},ghost:{},clear:{},right:{},open:{},beat:{},back:{},block:{},see:{},keep:{},square:{},pitch:{},center:{},centre:{},top:{},post:{},field:{},spot:{},bar:{},end:{},frame:{},rough:{},address:{},quarter:{},position:{},land:{},bound:{},range:{},seat:{},dark:{},rail:{},cross:{},section:{},tip:{},plug:{},port:{},stall:{},corner:{},outside:{},dig:{},way:{},front:{},joint:{},patch:{},reach:{},thick:{},medium:{plural:"media"},dock:{},ruin:{},tack:{},floor:{},bottom:{},puddle:{},compound:{},retreat:{},mat:{},belt:{},dump:{},scene:{},space:{},border:{},common:{},cradle:{},inside:{},surface:{},lie:{},boot:{},clog:{},coil:{},nest:{},wire:{},yard:{},forge:{},limit:{},lodge:{},buffer:{},middle:{},capital:{},overhead:{},preserve:{},terminal:{},direction:{},hall:{},loft:{},plot:{},tape:{},grate:{},stoop:{},fringe:{},circuit:{},distance:{},derivation:{},bent:{},gate:{},mill:{},safe:{},sail:{},hedge:{},paint:{},parcel:{},sphere:{},bearing:{},profile:{},shelter:{},crossing:{},interior:{},reservation:{},area:{},bush:{},cork:{},dive:{},limb:{},raft:{},shed:{},zone:{},chase:{},cut:{},light:{},charge:{},check:{},work:{},stock:{},stick:{},flat:{},crack:{},press:{},settle:{},spread:{},wash:{},well:{},swing:{},fly:{},tap:{},stretch:{},shot:{},black:{},strip:{},separate:{},tie:{},rack:{},match:{},piece:{},shell:{},still:{},present:{},trim:{},spike:{},split:{},white:{},yield:{},squeeze:{},bolt:{},fret:{},choke:{},float:{},track:{},low:{},crown:{},screen:{},die:{plural:"dice"},pin:{},chip:{},mold:{},seal:{},draft:{},shade:{},shaft:{},stuff:{},switch:{},balance:{},reverse:{},subject:{},approach:{},beam:{},bill:{},card:{},link:{},sack:{},sink:{},trap:{},spare:{},credit:{},counter:{},express:{},positive:{},net:{},pay:{},ball:{},bond:{},bowl:{},horn:{},pole:{},wing:{},glass:{},grant:{},smack:{},collar:{},record:{},ruffle:{},silver:{},negative:{},cap:{},lap:{},pad:{},rag:{},rig:{},bend:{},clip:{},fine:{},flap:{},heel:{},pall:{},pump:{},gauge:{},image:{},plain:{},print:{},slick:{},spoil:{},clinch:{},gather:{},offset:{},pocket:{},relief:{},channel:{},whistle:{},irregular:{},transport:{},bat:{},ice:{},peg:{},pot:{},bust:{},grip:{},hole:{},nail:{},poke:{},slug:{},spat:{},stem:{},suit:{},yoke:{},flood:{},grand:{},gross:{},perch:{},slip:{},down:{},shoot:{},ground:{},discharge:{},solid:{},kill:{},slack:{},waste:{},rush:{},grain:{},shake:{},pit:{},mould:{},colour:{},render:{},mount:{},cutting:{},fill:{},flux:{},tail:{},plaster:{},swallow:{},concentrate:{},bay:{},gum:{},ray:{},slop:{},spur:{},extract:{},fat:{},hop:{},corn:{},rust:{},smut:{},label:{},stain:{},composition:{},gas:{},pip:{},duck:{},gall:{},lime:{},mint:{},tick:{},stalk:{},whiff:{},cement:{},rubber:{},conjugate:{},preparation:{},dun:{},dust:{},jade:{},mire:{},pulp:{},snag:{},bloom:{},caper:{},crude:{},fluid:{},frost:{},paste:{},rinse:{},steam:{},straw:{},corona:{},poison:{},refuse:{},savory:{},feather:{},ferment:{},organic:{},chestnut:{},mushroom:{},percolate:{},sublimate:{},synthetic:{},suspension:{},precipitate:{},cod:{},pet:{},rod:{},bunt:{},crow:{},hide:{},punk:{},vein:{},assay:{},goose:{plural:"geese"},olive:{},stray:{},trash:{},ginger:{},pepper:{},permit:{},polish:{},sorrel:{},blister:{},bristle:{},complex:{},filling:{},flicker:{},harvest:{},scollop:{},whiting:{},anteater:{},snowball:{},tincture:{},repellent:{},ink:{},lip:{},nag:{},rue:{},wad:{},acid:{},beak:{},bean:{},coal:{},dirt:{},fawn:{},fuel:{},lark:{},ling:{},mash:{},palm:{},pelt:{},plum:{},pony:{},pout:{},soil:{},stag:{},bream:{},brier:{},chalk:{},coral:{},fiber:{},fall:{},pass:{},lift:{},go:{},roll:{},drop:{},blow:{},return:{},strike:{},rise:{},snap:{},shift:{},twist:{},case:{},deal:{},start:{},deep:{},jump:{},step:{},stop:{},pound:{},advance:{},pop:{},flash:{},rest:{},crash:{},score:{},figure:{},leave:{},smash:{},stroke:{},first:{},sweep:{},even:{},flow:{},kick:{},heave:{},trace:{},opening:{},full:{},gain:{},jack:{},spin:{},wave:{},splash:{},bob:{},bang:{},dash:{},flick:{},hitch:{},prime:{},proof:{},passing:{},bit:{},click:{},knock:{},swell:{},trouble:{},collapse:{},movement:{},standard:{},variation:{},rap:{},boom:{},bump:{},clap:{},pace:{},peck:{},zero:{},blaze:{},speed:{},spell:{},treat:{},bounce:{},factor:{},little:{},plunge:{},scrape:{},single:{},ban:{},mix:{},one:{},mesh:{},roar:{},tilt:{},climb:{},flip:{},puff:{},bite:{},feed:{},bitter:{},chop:{},sour:{},special:{},crisp:{},tonic:{},scallop:{},mess:{},quick:{},smear:{},fillet:{},curl:{},malt:{},glaze:{},souse:{},breast:{},humour:{},draught:{},delicacy:{},dressing:{},transplant:{},hip:{},sop:{},kiss:{},mush:{},neck:{},belly:{},frank:{},jumble:{},junket:{},trifle:{},stomach:{},clot:{},shin:{},stew:{},tart:{},cheek:{},graft:{},molar:{},roast:{},spice:{},stout:{},sweat:{},groove:{},region:{},savoury:{},western:{},backbone:{},conserve:{},dominant:{},macerate:{},melancholy:{},cake:{},lens:{},loaf:{plural:"loaves"},menu:{},must:{},peel:{},pore:{},suds:{},butch:{},cling:{},curry:{},drool:{},honey:{},jerky:{},juice:{},mince:{},nasal:{},nerve:{},sauce:{},tract:{},dainty:{},entree:{},facial:{},relish:{},squash:{},brittle:{},caramel:{},cordial:{},fissure:{},oblique:{},adhesion:{},turnover:{},nonpareil:{},posterior:{},vegetation:{},ail:{},orb:{},pap:{},rum:{},brew:{},chew:{},hash:{},lard:{},rump:{},brine:{},dowdy:{},farce:{},flour:{},fudge:{},halal:{},icing:{},lunch:{},play:{},make:{},hold:{},close:{},mark:{},form:{},order:{},support:{},rule:{},sign:{},hang:{},drag:{},feel:{},find:{},shock:{},mean:{},offer:{},study:{},show:{},tone:{},flare:{},attack:{},act:{},life:{plural:"lives"},stay:{},think:{},secret:{},account:{},hurt:{},note:{},taste:{},report:{},measure:{},condition:{},cry:{},focus:{plural:"foci"},style:{},thing:{},title:{},recall:{},average:{},contract:{},dissolve:{},so:{},aim:{},bind:{},heat:{},know:{},stir:{},claim:{},power:{},demand:{},design:{},notice:{},source:{},upgrade:{},resolution:{},bid:{},skim:{},brand:{},curve:{},sight:{},smoke:{},digest:{},regard:{},passage:{},program:{},exposure:{},interest:{},character:{},projection:{},lay:{},curse:{},favor:{},remit:{},sense:{},slash:{},wedge:{},bubble:{},excuse:{},favour:{},invite:{},mantle:{},salute:{},stress:{},survey:{},temper:{},comfort:{},neglect:{},resolve:{},respect:{},torment:{},conflict:{},dispatch:{},standing:{},challenge:{},programme:{},background:{},conclusion:{},impression:{},particular:{},withdrawal:{},cite:{},echo:{},hail:{},rip:{},lot:{},great:{},relay:{},tenor:{},browse:{},bundle:{},chorus:{},cypher:{},fellow:{},litter:{},marine:{},native:{},occult:{},plague:{},rocker:{},scheme:{},series:{plural:"series"},social:{},streak:{},sucker:{},teaser:{},antique:{},battery:{},bracket:{},founder:{},gallery:{},liberal:{},starter:{},turnout:{},witness:{},diagonal:{},familiar:{},ordinary:{},prospect:{},sequence:{},aggregate:{},authority:{},community:{},dependent:{},desperate:{},patronage:{},primitive:{},principal:{},complement:{},engagement:{},foundation:{},generation:{},settlement:{},combination:{},lightweight:{},steamroller:{},subordinate:{},organisation:{},establishment:{},representative:{},con:{},fox:{},kid:{},pod:{},red:{},sex:{},spy:{},vet:{},aged:{},bore:{},diet:{},fare:{},gown:{},hawk:{},heap:{},herd:{},hive:{},lump:{},romp:{},sort:{},agent:{},alien:{},beard:{},brave:{},breed:{},brood:{},canon:{},craft:{},crazy:{},devil:{},dummy:{},equal:{},flake:{},groom:{},mound:{},organ:{},scrub:{},toast:{},troop:{},youth:{},colony:{},copper:{},cutter:{},escort:{},feeder:{},junior:{},maroon:{},matrix:{plural:"matrices"},modern:{},muscle:{},people:{},sector:{},shrink:{},tinker:{},topper:{},booster:{},gallant:{},hostile:{},marshal:{},network:{},nucleus:{plural:"nuclei"},premier:{},scourge:{},secular:{},sitting:{},snapper:{},suspect:{},swagger:{},traffic:{},variant:{},cardinal:{},derelict:{},domestic:{},favorite:{},finisher:{},graduate:{},humanist:{},infernal:{},magazine:{},manifold:{},minister:{},palatine:{},presence:{},receiver:{},relation:{},favourite:{},following:{},goldbrick:{},operative:{},sensitive:{},syndicate:{},complexion:{},mouthpiece:{},withdrawer:{},appointment:{},conjugation:{},constituent:{},heavyweight:{},incompetent:{},independent:{},replacement:{},underground:{},untouchable:{},conservative:{},administration:{},ape:{},gem:{},hob:{},sap:{},van:{},axis:{plural:"axes"},chap:{},char:{},crew:{},cult:{},duet:{},gang:{},hero:{},hire:{},lamb:{},lame:{},mute:{},nude:{},pawn:{},pill:{},sage:{},soul:{},tout:{},trio:{},ward:{},worm:{},bunch:{},crimp:{},dwarf:{},elect:{},flank:{},ideal:{},noble:{},octet:{},quack:{},saint:{},scrag:{},shark:{},shoal:{},silly:{},skunk:{},super:{},witch:{},zombi:{},agency:{},anchor:{},backup:{},batter:{},buster:{},canary:{},circus:{},dealer:{},domain:{},doomed:{},genius:{},gossip:{},herald:{},hoodoo:{},hopper:{},immune:{},jockey:{},legion:{},member:{},nature:{},orphan:{},parade:{},peanut:{},pillar:{},pirate:{},player:{},porter:{},pusher:{},putter:{},senior:{},septet:{},sestet:{},sextet:{},surety:{},tapper:{},tiller:{},zombie:{},adjunct:{},butcher:{},captive:{},cascade:{},chapter:{},charity:{},checker:{},chicane:{},chicken:{},climber:{},cognate:{},consort:{},cracker:{},dresser:{},gentile:{},invalid:{},knocker:{},lineage:{},mission:{},mixture:{},monster:{},offence:{},partner:{},pioneer:{},pitcher:{},quartet:{},quintet:{},recruit:{},referee:{},shooter:{},spoiler:{},sponsor:{},stemmer:{},steward:{},striker:{},terrace:{},alliance:{},castrate:{},designer:{},director:{},ensemble:{},faithful:{},friendly:{},mandarin:{},operator:{},romantic:{},accessory:{},annoyance:{},attendant:{},bourgeois:{},precedent:{},quadruple:{},reception:{},recession:{},religious:{},reprobate:{},satellite:{},selection:{},sensation:{},supporter:{},contingent:{},convention:{},expedition:{},incendiary:{},individual:{},masquerade:{},population:{},sweetheart:{},tubercular:{},confederate:{},cooperative:{},subdivision:{},territorial:{},transcriber:{},intelligence:{},registration:{},sophisticate:{},welterweight:{},revolutionary:{},ex:{},ass:{},cog:{},cub:{},den:{},dud:{},duo:{},ham:{},hog:{},mob:{},pro:{},deaf:{},dove:{},fate:{},five:{},folk:{},gull:{},jinx:{},mime:{},nark:{},nine:{},pest:{},prey:{},quad:{},rash:{},scab:{},sire:{},wisp:{},wood:{},zany:{},armor:{},batch:{},bogey:{},caste:{},chief:{},choir:{},clone:{},divan:{},drunk:{},elder:{},enemy:{},exile:{},faith:{},flirt:{},grunt:{},joker:{},lobby:{},louse:{plural:"lice"},pagan:{},pivot:{},racer:{},rebel:{},scout:{},siren:{},slave:{},swarm:{},timid:{},triad:{},tribe:{},armour:{},bearer:{},censor:{},choker:{},convoy:{},covert:{},damned:{},deputy:{},empire:{},goffer:{},gopher:{},huddle:{},killer:{},league:{},martyr:{},muster:{},mystic:{},outfit:{},packet:{},palace:{},passer:{},patrol:{},potter:{},quarry:{},rigger:{},ringer:{},rustic:{},scribe:{},sitter:{},slider:{},slouch:{},squire:{},squirt:{},stupid:{},summit:{},tailor:{},tenant:{},terror:{},tracer:{},turkey:{},turner:{},venter:{},voider:{},voodoo:{},walker:{},worthy:{},academy:{},agonist:{},amateur:{},ancient:{},banquet:{},cabinet:{},cashier:{},classic:{},commune:{},courser:{},crammer:{},current:{},divider:{},economy:{},edition:{},emperor:{},entrant:{},fireman:{},lookout:{},octette:{},orderly:{},painter:{},pervert:{},plotter:{},plunger:{},roaster:{},sampler:{},scanner:{},sellout:{},skimmer:{},skipper:{},society:{},soprano:{},spastic:{},spotter:{},stratum:{plural:"strata"},trimmer:{},tripper:{},trooper:{},tumbler:{},upstart:{},veteran:{},wheeler:{},academic:{},agnostic:{},aviation:{},backstop:{},baritone:{},calendar:{},casualty:{},colonial:{},divinity:{},fireball:{},homeless:{},huckster:{},marriage:{},militant:{},military:{},ministry:{},modifier:{},partisan:{},pedigree:{},possible:{},recorder:{},regiment:{},renegade:{},repeater:{},revenant:{},septette:{},sextette:{},shepherd:{},stalwart:{},stringer:{},stripper:{},whistler:{},affiliate:{},ascendant:{},bacchanal:{},canvasser:{},cockscomb:{},collector:{},comforter:{},commander:{},companion:{},conductor:{},crossover:{},eccentric:{},executive:{},fledgling:{},franchise:{},freelance:{},incumbent:{},mercenary:{},moderator:{},neighbour:{},newspaper:{},patriarch:{},patrician:{},portfolio:{},quartette:{},quintette:{},repertory:{},secretary:{},segregate:{},spearhead:{},stigmatic:{},summation:{},transient:{},trumpeter:{},voluntary:{},absolutism:{},anthropoid:{},apparition:{},assemblage:{},collective:{},contractor:{},delinquent:{},episcopate:{},exaltation:{},exposition:{},illiterate:{},judicature:{},leadership:{},lieutenant:{},minimalist:{},percussion:{},profligate:{},provincial:{},rendezvous:{},brotherhood:{},determinant:{},distributor:{},interpreter:{},stipendiary:{},analphabetic:{},antediluvian:{},civilisation:{},civilization:{},commonwealth:{},conglomerate:{},contemporary:{},cosmopolitan:{},humanitarian:{},neighborhood:{},thoroughbred:{},ultramontane:{},concatenation:{},featherweight:{},superordinate:{},classification:{},fundamentalist:{},cop:{},don:{},eon:{},gal:{},gob:{},god:{},hoe:{},kin:{},nan:{},pup:{},wag:{},wit:{},aeon:{},ally:{},bard:{},chum:{},clew:{},dean:{},fink:{},flak:{},geek:{},goof:{},hulk:{},idol:{},lady:{},loon:{},mace:{},para:{},ruck:{},seer:{},self:{plural:"selves"},adder:{},angel:{},augur:{},baron:{},blond:{},brick:{},brute:{},cabal:{},champ:{},comic:{},crier:{},decoy:{},demon:{},diner:{},diver:{},diwan:{},drove:{},envoy:{},fiend:{},flack:{},flier:{},flyer:{},freak:{},gaudy:{},harpy:{},horde:{},indie:{},jewel:{},leech:{},levee:{},liege:{},locus:{},loser:{},mimic:{},needy:{},nymph:{},oiler:{},poser:{},pupil:{},riser:{},roper:{},rummy:{},scold:{},squad:{},timer:{},tutor:{},usher:{},vicar:{},whale:{},wiper:{},affine:{},albino:{},angler:{},badass:{},baster:{},beggar:{},blonde:{},bomber:{},bowler:{},butter:{},carver:{},caster:{},chichi:{},clinic:{},closer:{},cohort:{},coiner:{},comber:{},cookie:{},cordon:{},corpus:{},cotter:{},cowboy:{},coyote:{},critic:{},dragon:{},drawer:{},drudge:{},eleven:{},ensign:{},estate:{},ethnic:{},exarch:{},finder:{},fodder:{},gaffer:{},gainer:{},galaxy:{},granny:{},hacker:{},hedger:{},heller:{},holder:{},honker:{},hooker:{},hotdog:{},inmate:{},intern:{},jungle:{},knight:{},kvetch:{},lineup:{},lovely:{},magpie:{},maiden:{},mailer:{},maniac:{},matron:{},miller:{},muller:{},nation:{},opener:{},ouster:{},packer:{},parrot:{},patron:{},peeler:{},peeper:{},polity:{},poster:{},powwow:{},punter:{},puppet:{},purdah:{},racist:{},rafter:{},ramrod:{},redact:{},regent:{},rusher:{},sailor:{},scorer:{},seeder:{},shaver:{},slaver:{},slicer:{},smoker:{},snitch:{},syntax:{},tacker:{},tagger:{},tanker:{},tartar:{},teller:{},thrush:{},trigon:{},troika:{},truant:{},tucker:{},tyrant:{},umpire:{},undoer:{},vestal:{},virgin:{},votary:{},warren:{},washer:{},wetter:{},winder:{},winner:{},wizard:{},admirer:{},amnesic:{},analyst:{},anomaly:{},aphasic:{},armorer:{},arrival:{},ascetic:{},auditor:{},baggage:{},bastion:{},biology:{},boarder:{},brahman:{},brahmin:{},breaker:{},caravan:{},clapper:{},cluster:{},coaster:{},cobbler:{},college:{},convict:{},council:{},counsel:{},coxcomb:{},crawler:{},creeper:{},crewman:{},crimper:{},darling:{},destiny:{},dragoon:{},dreamer:{},duality:{},echelon:{},ejector:{},fiddler:{},fighter:{},flasher:{},forbear:{},harrier:{},holdout:{},hostess:{},incubus:{},ingenue:{},justice:{},kachina:{},kindred:{},kingpin:{},macumba:{},manikin:{},marcher:{},married:{},newborn:{},notable:{},nursing:{},outpost:{},parvenu:{},patient:{},payroll:{},peasant:{},phalanx:{},phantom:{},planter:{},platoon:{},plodder:{},poacher:{},printer:{},prodigy:{},puncher:{},realist:{},redhead:{},revival:{},runaway:{},scholar:{},sharpie:{},skidder:{},slicker:{},slogger:{},smasher:{},snorter:{},snuffer:{},spinner:{},splicer:{},stalker:{},stamper:{},standby:{},stepper:{},striper:{},sweeper:{},thrower:{},triplet:{},utopian:{},utterer:{},voucher:{},washout:{},watcher:{},wiggler:{},wrecker:{},affluent:{},armourer:{},attender:{},bacchant:{},bachelor:{},bankrupt:{},bisexual:{},bondsman:{},cautious:{},congress:{},corporal:{},creature:{},decadent:{},defeated:{},delegate:{},diabetic:{},dictator:{},dyslexic:{},effector:{},exponent:{},flagging:{},freshman:{},fugitive:{},futurist:{},garrison:{},greyback:{},hangover:{},humanism:{},immortal:{},juvenile:{},lapidary:{},mainstay:{},mannikin:{},maverick:{},mechanic:{},minority:{},minstrel:{},mistress:{},monotype:{},mutation:{},nativist:{},neophyte:{},neurotic:{},newsroom:{},nobility:{},opponent:{},pacifier:{},pantheon:{},planting:{},probable:{},producer:{},recusant:{},referral:{},reminder:{},retainer:{},ruralism:{},scalawag:{},scrubber:{},searcher:{},sergeant:{},sociable:{},songster:{},splitter:{},squadron:{},straggle:{},strawman:{},survivor:{},taxonomy:{},treasury:{},vanguard:{},virtuoso:{},walloper:{},warhorse:{},yearling:{},alcoholic:{},anorectic:{},artificer:{},artillery:{},attracter:{},attractor:{},automaton:{},auxiliary:{},barbarian:{},bombshell:{},brokerage:{},coalition:{},concourse:{},contralto:{},counselor:{},crewwoman:{},cyberpunk:{},defaulter:{},deliverer:{},democracy:{},dependant:{},descender:{},dissident:{},dyspeptic:{},feudatory:{},firewoman:{},flyweight:{},incurable:{},institute:{},insurgent:{},intellect:{},introvert:{},mandatory:{},mendicant:{},middleman:{},navigator:{},organiser:{},organizer:{},pluralism:{},pluralist:{},pothunter:{},precursor:{},predictor:{},presenter:{},pretender:{},processor:{},proconsul:{},publisher:{},quintuple:{},registrar:{},regulator:{},scallywag:{},scavenger:{},scrambler:{},scratcher:{},serration:{},singleton:{},stargazer:{},stockpile:{},successor:{},surrogate:{},symbolism:{},temporary:{},throwback:{},trickster:{},warrantee:{},womanhood:{},antagonist:{},attendance:{},blackguard:{},bondswoman:{},chancellor:{},classifier:{},conference:{},conformist:{},counsellor:{},crossroads:{},descendant:{},descendent:{},doorkeeper:{},embodiment:{},expatriate:{},federation:{},fellowship:{},filibuster:{},forerunner:{},fratricide:{},grandstand:{},mastermind:{},minstrelsy:{},missionary:{},ordination:{},plantation:{},powerhouse:{},quadruplet:{},quintuplet:{},repatriate:{},republican:{},respondent:{},rubberneck:{},salamander:{},scholastic:{},separatism:{},sisterhood:{},subscriber:{},subsidiary:{},supplicant:{},suppresser:{},suppressor:{},timekeeper:{},translator:{},university:{},wallflower:{},abomination:{},academician:{},agriculture:{},anachronism:{},antiquarian:{},beneficiary:{},bureaucracy:{},clairvoyant:{},conditioner:{},confederacy:{},consumptive:{},deification:{},enlightened:{},incarnation:{},lilliputian:{},middlewoman:{},narcoleptic:{},nationalist:{},partnership:{},peacekeeper:{},peripatetic:{},pontificate:{},progression:{},prosecution:{},quarterback:{},recessional:{},romanticist:{},shipbuilder:{},transmitter:{},transsexual:{},underwriter:{},undesirable:{},utilitarian:{},acquaintance:{},bantamweight:{},collaborator:{},congregation:{},conservatory:{},countertenor:{},demonstrator:{},denomination:{},headquarters:{},illegitimate:{},investigator:{},metropolitan:{},middleweight:{},noncombatant:{},philharmonic:{},schoolmaster:{},sharpshooter:{},totalitarian:{},authoritarian:{},confederation:{},correspondent:{},reincarnation:{},schizophrenic:{},supernumerary:{},categorization:{},tatterdemalion:{},instrumentality:{},internationalist:{},bey:{},cox:{},cur:{},few:{},foe:{},hag:{},lad:{},mod:{},obi:{},sib:{},aide:{},amah:{},anti:{},army:{},beau:{},bevy:{},bogy:{},chit:{},clod:{},coon:{},czar:{},dada:{},dame:{},derp:{},dodo:{},dude:{},duke:{},dupe:{},gild:{},giro:{},goat:{},goon:{},grad:{},guru:{},heir:{},hobo:{},hunk:{},jilt:{},jock:{},jury:{},khan:{},maid:{},naif:{},navy:{},nerd:{},peri:{},pimp:{},putz:{},sect:{},suer:{},swot:{},tuft:{},adept:{},baker:{},basso:{},beast:{},bride:{},bunny:{},cadre:{},comer:{},cooky:{},corps:{},covey:{},deist:{},edger:{},elite:{},emcee:{},enate:{},faery:{},fatty:{},fauna:{},felon:{},filer:{},flora:{},folks:{},forum:{},genus:{plural:"genera"},ghoul:{},gipsy:{},giver:{},gnome:{},grove:{},gypsy:{},hajji:{},hakim:{},junky:{},knave:{},lefty:{},leper:{},loony:{},macho:{},madam:{},magus:{},medic:{},mezzo:{},miler:{},mooch:{},mufti:{},nabob:{},nexus:{},ninja:{},obeah:{},parer:{},pigmy:{},poilu:{},ponce:{},prior:{},proxy:{},puppy:{},pygmy:{},quint:{},raver:{},rover:{},satyr:{},scamp:{},sheik:{},shill:{},shrew:{},sibyl:{},sissy:{},slain:{},smith:{},snoop:{},sprog:{},stoic:{},sylph:{},taker:{},thane:{},toady:{},totem:{},trier:{},tryst:{},tuner:{},twirp:{},uncle:{},valet:{},vegan:{},vixen:{},waker:{},widow:{},wight:{},wirer:{},yenta:{},agnate:{},alexic:{},amazon:{},audile:{},avatar:{},avower:{},bagger:{},bagman:{},banker:{},barber:{},barker:{},bather:{},bawler:{},beater:{},beldam:{},bidder:{},boater:{},brewer:{},broker:{},brunet:{},bureau:{},caddie:{},camper:{},cantor:{},caucus:{},chaser:{},cherub:{},chosen:{},coeval:{},cooper:{},coquet:{},cottar:{},craven:{},cubist:{},daemon:{},deacon:{},digger:{},dodger:{},dowser:{},duette:{},dunker:{},egoist:{},eldest:{},eparch:{},erotic:{},eyeful:{},faller:{},fitter:{},flunky:{},forger:{},framer:{},gaggle:{},gagman:{},gamine:{},gasbag:{},gillie:{},goalie:{},gouger:{},grouch:{},gunman:{},gunner:{},hamlet:{},hanger:{},hawker:{},heaver:{},hermit:{},hitter:{},hummer:{},iceman:{},joiner:{},junkie:{},jurist:{},keeper:{},kelpie:{},kisser:{},lackey:{},lector:{},lifter:{},lister:{},lizard:{},loader:{},loaner:{},logjam:{},longer:{},lubber:{},lumper:{},lyceum:{},madcap:{},maenad:{},maimed:{},masher:{},medico:{},menial:{},midden:{},midget:{},minder:{},moiety:{},motile:{},nester:{},oblate:{},oilman:{},parish:{},paster:{},pelter:{},phylum:{},picker:{},plenum:{},police:{},pruner:{},psyche:{},puller:{},python:{},rabble:{},raider:{},raiser:{},ranger:{},ranker:{},rapper:{},reaper:{},redcap:{},reeler:{},regime:{},renter:{},rifler:{},romper:{},sachem:{},salter:{},sawyer:{},sealer:{},seeker:{},sender:{},sexist:{},shaker:{},shaper:{},sharpy:{},signer:{},silvan:{},sleuth:{},smiler:{},sorter:{},sphinx:{},stager:{},stater:{},supper:{},sylvan:{},talent:{},tanner:{},tester:{},theist:{},throng:{},tilter:{},tipper:{},toller:{},tosser:{},tourer:{},townie:{},trusty:{},varlet:{},vermin:{},vestry:{},victor:{},virago:{},voicer:{},waster:{},weasel:{},weaver:{},weeder:{},weeper:{},weirdo:{},whaler:{},winker:{},wraith:{},wretch:{},yakuza:{},yeoman:{},adapter:{},admiral:{},airhead:{},amalgam:{},animist:{},aphakic:{},applier:{},arbiter:{},armiger:{},atheist:{},attache:{},babbler:{},baffled:{},beldame:{},beloved:{},berserk:{},bondman:{},bounder:{},brigade:{},browser:{},buffoon:{},bulimic:{},burgher:{},caitiff:{},carload:{},catcher:{},cavalry:{},chachka:{},changer:{},charmer:{},chemist:{},cocotte:{},collage:{},compere:{},shadow:{},layer:{},north:{},orbit:{},trend:{},truss:{},vault:{},bunker:{},harbor:{},orient:{},origin:{},resort:{},safety:{},target:{},chamber:{},extreme:{},harbour:{},kingdom:{},mandate:{},outline:{},station:{},blockade:{},darkness:{},overlook:{},landscape:{},northeast:{},northwest:{},partition:{},southeast:{},southwest:{},structure:{},atmosphere:{},lug:{},tee:{},balk:{},burr:{},cage:{},drip:{},east:{},fort:{},hoop:{},west:{},cleat:{},fluke:{},scour:{},south:{},beacon:{},closet:{},duplex:{},radius:{plural:"radii"},vacuum:{},wattle:{},canteen:{},grounds:{},cloister:{},pinnacle:{},property:{},surround:{},terminus:{},anchorage:{},barricade:{},honeycomb:{},turnaround:{},institution:{},termination:{},cab:{},dam:{},brim:{},calk:{},dome:{},goal:{},hill:{},hull:{},knob:{},prop:{},seam:{},site:{},turf:{},apron:{},arena:{},baulk:{},cabin:{},grill:{},groin:{},haunt:{},lever:{},niche:{},privy:{},works:{},airway:{},barren:{},corral:{},dugout:{},fender:{},galley:{},hurdle:{},lounge:{},outlet:{},refuge:{},sconce:{},sprawl:{},temple:{},toilet:{},wicket:{},barrack:{},bulwark:{},buttery:{},cornice:{},grating:{},landing:{},leeward:{},maximum:{},pasture:{},salient:{},shingle:{},squinch:{},surgery:{},building:{},cylinder:{},downtown:{},fountain:{},landmark:{},munition:{},quadrant:{},rearward:{},sideline:{},windward:{},homestead:{},multiplex:{},perfumery:{},residence:{},stretcher:{},substrate:{},excavation:{},silhouette:{},convenience:{},culmination:{},declination:{},architecture:{},spa:{},aery:{},brow:{},bung:{},dike:{},flue:{},hell:{},tent:{},abbey:{},aisle:{},arbor:{},attic:{},booth:{},brink:{},disco:{},oxbow:{},oxeye:{},quoin:{},realm:{},salon:{},villa:{},whorl:{},barony:{},barrow:{},bazaar:{},billet:{},bustle:{},canton:{},casing:{},cellar:{},cooler:{},garage:{},ghetto:{},grille:{},hearth:{},locker:{},midway:{},muffle:{},oracle:{},remise:{},saloon:{},stocks:{},studio:{},tiptop:{},uptown:{},volute:{},arsenal:{},chassis:{},cockpit:{},commons:{},cubicle:{},dockage:{},fairway:{},fencing:{},gondola:{},heading:{},hotspot:{},lattice:{},lodging:{},minimum:{},moorage:{},pannier:{},rattrap:{},rootage:{},stowage:{},theater:{},theatre:{},vacuity:{},baseline:{},butchery:{},buttress:{},clearing:{},crosscut:{},domicile:{},erection:{},exterior:{},fanlight:{},fastness:{},firewall:{},foothold:{},frontier:{},lavatory:{},memorial:{},monument:{},mortuary:{},overhang:{},pedestal:{},scenario:{},solitude:{},sprocket:{},stockade:{},stoppage:{},vaulting:{},bombproof:{},cathedral:{},fundament:{},hindrance:{},panhandle:{},proximity:{},resonator:{},sanctuary:{},territory:{},watershed:{},confluence:{},department:{},encampment:{},flashpoint:{},groundwork:{},hinderance:{},quartering:{},substratum:{},underbelly:{},breadbasket:{},columbarium:{},destination:{},engineering:{},equinoctial:{},planetarium:{},penitentiary:{},circumference:{},confectionery:{},fortification:{},hub:{},hut:{},lee:{},sty:{},acme:{},apex:{},barn:{},brig:{},coop:{},digs:{},holy:{},jail:{},jook:{},juke:{},loge:{},mall:{},nook:{},pave:{},sash:{},silo:{},slum:{},tope:{},weir:{},abode:{},aerie:{},altar:{},bazar:{},detox:{},haven:{},heath:{},hutch:{},kraal:{},lager:{},manor:{},manse:{},navel:{},oasis:{plural:"oases"},opera:{},paddy:{},plaza:{},pylon:{},rodeo:{},shire:{},spile:{},sprag:{},venue:{},visor:{},apogee:{},arcade:{},ashram:{},asylum:{},atrium:{},bagnio:{},bailey:{},barrio:{},belfry:{},boards:{},casino:{},chapel:{},county:{},creche:{},cupola:{},deckle:{},fraise:{},haymow:{},hostel:{},kennel:{},lancet:{},larder:{},lockup:{},mihrab:{},parlor:{},plaque:{},prefab:{},prison:{},spigot:{},stacks:{},tampon:{},turret:{},vertex:{},zodiac:{},automat:{},balcony:{},batwing:{},benthos:{},borough:{},bubbler:{},bullpen:{},cabaret:{},caboose:{},chantry:{},convent:{},deanery:{},demesne:{},derrick:{},desktop:{},drydock:{},dukedom:{},dungeon:{},earldom:{},earplug:{},embassy:{},emirate:{},eparchy:{},equinox:{},fiefdom:{},florist:{},flyover:{},framing:{},funfair:{},grocery:{},hayrack:{},hospice:{},khanate:{},lunette:{},mansion:{},marquee:{},masonry:{},matting:{},midland:{},mooring:{},narthex:{},nirvana:{},obelisk:{},outback:{},parapet:{},parlour:{},pinhead:{},railing:{},rathole:{},redoubt:{},ribbing:{},rotunda:{},sanctum:{},sawmill:{},shipway:{},shoebox:{},stopple:{},tambour:{},transom:{},trellis:{},trestle:{},tribune:{},vantage:{},abutment:{},airspace:{},ambiance:{},ambience:{},backside:{},ballpark:{},basement:{},basilica:{},bioscope:{},bodywork:{},brattice:{},diggings:{},doghouse:{},dominion:{},entrepot:{},environs:{},extremum:{},farmland:{},fireside:{},hacienda:{},hideaway:{},imperium:{},jalousie:{},littoral:{},mantelet:{},mounting:{},nailhead:{},outdoors:{},palisade:{},pharmacy:{},porthole:{},province:{},revolver:{},seascape:{},sidewall:{},steerage:{},stopover:{},suburbia:{},sudatory:{},sweatbox:{},tailgate:{},turnpike:{},wellhead:{},backwater:{},bailiwick:{},beachhead:{},belvedere:{},caliphate:{},caparison:{},cellarage:{},chandlery:{},cloakroom:{},colonnade:{},cookhouse:{},couchette:{},crematory:{},crownwork:{},cubbyhole:{},dollhouse:{},dormitory:{},dripstone:{},fieldwork:{},fireguard:{},forefront:{},guardroom:{},hatchback:{},isoclinal:{},lazaretto:{},lineation:{},mezzanine:{},millinery:{},orphanage:{},outfitter:{},pleasance:{},princedom:{},revetment:{},roadblock:{},scrapheap:{},shrubbery:{},viewpoint:{},viscounty:{},workhouse:{},architrave:{},birthplace:{},borderline:{},bridgehead:{},brownstone:{},chokepoint:{},commissary:{},courthouse:{},escarpment:{},greenhouse:{},ironmonger:{},justiciary:{},laboratory:{},lamination:{},maisonette:{},metropolis:{},obstructor:{},panopticon:{},playground:{},prefecture:{},proscenium:{},quadrangle:{},rotisserie:{},sanatorium:{},suzerainty:{},tenderloin:{},triclinium:{},wellspring:{},wheelhouse:{},condominium:{},conventicle:{},crematorium:{},crenelation:{},demarcation:{},maisonnette:{},observatory:{},reformatory:{},superstrate:{},tobacconist:{},trusteeship:{},wainscoting:{},amphitheater:{},amphitheatre:{},chapterhouse:{},clotheshorse:{},delicatessen:{},fountainhead:{},haberdashery:{},municipality:{},packinghouse:{},patriarchate:{},retrenchment:{},substructure:{},superstratum:{},surroundings:{},wainscotting:{},juxtaposition:{},infrastructure:{},dec:{},inn:{},loo:{},pub:{},burg:{},cafe:{},deli:{},dorm:{},hank:{},iglu:{},kirk:{},lair:{},lawn:{},mart:{},nave:{},oast:{},rink:{},souk:{},tine:{},tipi:{},veld:{},ways:{},wold:{},yurt:{},apsis:{},burgh:{},condo:{},cubby:{},cuddy:{},dacha:{},duchy:{},duomo:{},eaves:{},flies:{},gable:{},glade:{},gulag:{},harem:{},hogan:{},igloo:{},lanai:{},layby:{},mecca:{},midst:{},motel:{},oriel:{},parts:{},patio:{},polls:{},qibla:{},roads:{},rooms:{},sauna:{},skein:{},socle:{},soddy:{},sodom:{},spire:{},stoep:{},stupa:{},tenon:{},tepee:{},tupek:{},tupik:{},veldt:{},weald:{},abatis:{},abbacy:{},alcove:{},apiary:{},arbour:{},aviary:{},bedsit:{},bethel:{},bodega:{},bounds:{},bowels:{},cabana:{},calkin:{},campus:{},carrel:{},casbah:{},casern:{},chalet:{},depths:{},dolmen:{},donjon:{},dormer:{},durbar:{},eatery:{},escarp:{},fipple:{},flange:{},flyway:{},friary:{},furket:{},gantry:{},garret:{},hangar:{},hareem:{},hayrig:{},imaret:{},isobar:{},isohel:{},isolex:{},kasbah:{},laager:{},locale:{},loggia:{},marina:{},masjid:{},meadow:{},medina:{},menhir:{},merlon:{},midair:{},morgue:{},mosque:{},mudhif:{},musjid:{},pagoda:{},paling:{},pantry:{},parvis:{},pelmet:{},piazza:{},pigsty:{},plinth:{},priory:{},pueblo:{},radome:{},setoff:{},skybox:{},skyway:{},stalls:{},storey:{},suburb:{},tenter:{},upside:{},volary:{},wigwam:{},wikiup:{},winery:{},abattis:{},airdock:{},airlock:{},alcazar:{},antapex:{},apadana:{},apojove:{},apolune:{},athanor:{},barroom:{},bascule:{},bedside:{},beeline:{},borstal:{},boudoir:{},brewery:{},brewpub:{},brothel:{},campong:{},cannery:{},capitol:{},carport:{},carrell:{},chancel:{},chateau:{},citadel:{},coaming:{},corncob:{},cottage:{},cowbarn:{},cowshed:{},cowtown:{},crinion:{},dinette:{},diocese:{},earshot:{},edifice:{},enclave:{},exurbia:{},eyeshot:{},fantail:{},feedlot:{},firebox:{},screw:{},share:{},sheet:{},slice:{},slide:{},spill:{},stage:{},stake:{},tread:{},paddle:{},weight:{},canvass:{},compact:{},undercut:{},representation:{},fin:{},gag:{},jet:{},tug:{},bark:{},bunk:{},drum:{},mask:{},pipe:{},reel:{},scan:{},blank:{},drill:{},plumb:{},plume:{},shank:{},sling:{},spray:{},pickup:{},saddle:{},trench:{},capsule:{},security:{},sacrifice:{},technical:{},can:{},jar:{},map:{},ply:{},rib:{},rim:{},web:{},bell:{},buck:{},claw:{},comb:{},copy:{},crib:{},dish:{},fake:{},foil:{},grab:{},kite:{},ramp:{},rent:{},slot:{},spit:{},tank:{},bosom:{},cable:{},charm:{},drain:{},grave:{},price:{},skirt:{},stool:{},strap:{},stump:{},trail:{},access:{},cannon:{},fiddle:{},formal:{},insert:{},launch:{},purple:{},reward:{},strand:{},tackle:{},display:{},floater:{},incline:{},limited:{},portion:{},torpedo:{},overcast:{},puncture:{},broadside:{},duplicate:{},submarine:{},surcharge:{},production:{},interchange:{},bus:{},due:{},gap:{},jaw:{},lag:{},nut:{},tin:{},win:{},arch:{},bail:{},cell:{},dope:{},fell:{},film:{},lace:{},lash:{},mail:{},pale:{},purl:{},rate:{},skid:{},sole:{},spar:{},tuck:{},vamp:{},vent:{},vest:{},brake:{},brass:{},chuck:{},cramp:{},crest:{},drape:{},elbow:{},habit:{},lease:{},lower:{},prize:{},roach:{},royal:{},scrap:{},slate:{},snare:{},snuff:{},total:{},trump:{},beaver:{},canvas:{},future:{},handle:{},header:{},jacket:{},motley:{},muzzle:{},quiver:{},rocket:{},roller:{},staple:{},wrench:{},compass:{},element:{},exhaust:{},frontal:{},thunder:{},transit:{},upstage:{},traverse:{},accession:{},allowance:{},guarantee:{},promenade:{},shipwreck:{},attachment:{},protection:{},perpendicular:{},aid:{},gig:{},gin:{},nap:{},oil:{},ram:{},bead:{},bulb:{},curb:{},dart:{},daub:{},dial:{},dose:{},exit:{},fuse:{},goad:{},item:{},knit:{},plan:{},rein:{},swag:{},veil:{},alarm:{},chart:{},cinch:{},clasp:{},eagle:{},entry:{},fluff:{},gouge:{},lance:{},meter:{},miter:{},pouch:{},probe:{},punch:{},purse:{},sable:{},scuff:{},shear:{},stern:{},taper:{},thumb:{},wharf:{},whisk:{},barrel:{},beetle:{},bronze:{},burden:{},congee:{},fleece:{},glossy:{},halter:{},limber:{},margin:{},mobile:{},needle:{},remote:{},shroud:{},sketch:{},splice:{},stripe:{},toggle:{},trough:{},volume:{},ballast:{},binding:{},blanket:{},costume:{},crackle:{},crystal:{},diamond:{},fitting:{},graphic:{},harness:{},premium:{},product:{},pyramid:{},sandbag:{},squelch:{},trammel:{},uniform:{},venture:{},warrant:{},wildcat:{},working:{},assembly:{},charcoal:{},discount:{},envelope:{},imperial:{},ligature:{},original:{},specific:{},treasure:{},vertical:{},deduction:{},distemper:{},inventory:{},objective:{},reversion:{},whitewash:{},supplement:{},contrivance:{},convertible:{},inspiration:{},intersection:{},counterbalance:{},bet:{},gel:{},gut:{},jag:{},jig:{},pan:{},pry:{},tab:{},tax:{},zip:{},bait:{},barb:{},bomb:{},cone:{},cuff:{},dado:{},disk:{},gear:{},gore:{},grid:{},harp:{},loom:{},main:{},pant:{},pike:{},prod:{},reef:{},ruff:{},sham:{},tare:{},tidy:{},tire:{},toll:{},award:{},basic:{},basin:{},baton:{},birch:{},braid:{},broom:{},clack:{},cloak:{},clout:{},crock:{},fagot:{},ferry:{},filet:{},forte:{},found:{},frail:{},jolly:{},motor:{},pedal:{},potty:{},radio:{},rivet:{},scarf:{},shore:{},shunt:{},sieve:{},splat:{},splay:{},stave:{},steal:{},steel:{},thong:{},tithe:{},torch:{},trunk:{},twine:{},upper:{},valve:{},weave:{},bridle:{},buckle:{},buffet:{},carpet:{},cotton:{},custom:{},devise:{},enamel:{},entail:{},furrow:{},girdle:{},hobble:{},mangle:{},mosaic:{},motive:{},pallet:{},pencil:{},pinion:{},powder:{},radial:{},rattle:{},rebate:{},rumble:{},shield:{},shimmy:{},shovel:{},sledge:{},sluice:{},tablet:{},throne:{},timber:{},tinsel:{},uplift:{},benefit:{},bombard:{},bootleg:{},console:{},default:{},forfeit:{},freight:{},gantlet:{},generic:{},grapple:{},journal:{},loading:{},molding:{},overlap:{},pigment:{},plastic:{},salvage:{},scooter:{},scuffle:{},spindle:{},steamer:{},stopper:{},upright:{},carriage:{},catapult:{},facility:{},laminate:{},medicine:{},offstage:{},overload:{},plastron:{},railroad:{},retrofit:{},strickle:{},throttle:{},whipping:{},wireless:{},automatic:{},blackjack:{},blackwash:{},foliation:{},interlock:{},roughcast:{},threshold:{},antiseptic:{},camouflage:{},incidental:{},intangible:{},preventive:{},reversible:{},watercolor:{},maintenance:{},watercolour:{},differential:{},prescription:{},preventative:{},prophylactic:{},reproduction:{},transcription:{},transportation:{},fob:{},guy:{},hem:{},jug:{},kit:{},saw:{},cane:{},cart:{},clam:{},coif:{},cosy:{},cozy:{},disc:{},felt:{},gash:{},hone:{},hose:{},keel:{},loot:{},luff:{},lure:{},mast:{},mend:{},mine:{},muff:{},nuke:{},plow:{},robe:{},ruby:{},snip:{},soap:{},spud:{},swab:{},tile:{},till:{},tram:{},vane:{},wand:{},weed:{},weld:{},welt:{},audio:{},audit:{},baste:{},bilge:{},brail:{},bugle:{},canal:{},chest:{},chock:{},conge:{},couch:{},crape:{},crepe:{},crook:{},flute:{},frill:{},frock:{},fusee:{},hoist:{},inset:{},kitty:{},leash:{},liner:{},mixer:{},noose:{},novel:{},pearl:{},piano:{},plait:{},quill:{},reset:{},roost:{},saber:{},sabre:{},scull:{},spear:{},squab:{},stilt:{},sulky:{},video:{},vomit:{},wagon:{},aerial:{},armory:{},baffle:{},banner:{},batten:{},binder:{},bodkin:{},bypass:{},canopy:{},chisel:{},clench:{},dollar:{},dredge:{},drogue:{},duster:{},engine:{},excise:{},facing:{},funnel:{},garner:{},hamper:{},joggle:{},kettle:{},lining:{},livery:{},lumber:{},marble:{},mortar:{},mousse:{},nickel:{},ocular:{},payoff:{},pestle:{},piping:{},pommel:{},profit:{},puzzle:{},ransom:{},ration:{},rental:{},ribbon:{},rotary:{},runway:{},saucer:{},seesaw:{},siphon:{},suture:{},tattoo:{},thatch:{},throat:{},tunnel:{},turtle:{},wealth:{},acrylic:{},armoury:{},balloon:{},bargain:{},beehive:{},blinker:{},bolster:{},caisson:{},casting:{},ceiling:{},chariot:{},chopper:{},clarion:{},clinker:{},clipper:{},cowhide:{},earnest:{},elastic:{},expense:{},festoon:{},fortune:{},garnish:{},gravure:{},grinder:{},killing:{},linkage:{},novelty:{},overall:{},overlay:{},pallium:{},perfume:{},pillory:{},pointer:{},ringlet:{},rosette:{},segment:{},shuttle:{},staging:{},trailer:{},trumpet:{},unction:{},barbecue:{},barbeque:{},disguise:{},electric:{},elevated:{},fraction:{},gauntlet:{},gossamer:{},heritage:{},homespun:{},ironclad:{},lifeline:{},lighting:{},mackinaw:{},moulding:{},pinpoint:{},pinwheel:{},poundage:{},sanguine:{},sapphire:{},scribble:{},triangle:{},underlay:{},upstairs:{},virginal:{},admission:{},amphibian:{},backstage:{},capillary:{},cartridge:{},cartwheel:{},cathartic:{},condenser:{},damascene:{},depiction:{},diaphragm:{},medallion:{},overdrive:{},pacemaker:{},reservoir:{},screening:{},sectional:{},solitaire:{},spotlight:{},undercoat:{},assessment:{},bottleneck:{},equatorial:{},overburden:{},pigeonhole:{},pocketbook:{},pontifical:{},refractory:{},reparation:{},roundabout:{},simulation:{},waterproof:{},accelerator:{},certificate:{},inheritance:{},installment:{},restorative:{},ventilation:{},modification:{},subscription:{},hospitalization:{},instrumentation:{},ax:{},axe:{},bib:{},bin:{},bur:{},cot:{},fee:{},fur:{},jib:{},lid:{},six:{},ten:{},tub:{},two:{},bath:{},bike:{},cash:{},coke:{},cope:{},cowl:{},cusp:{},darn:{},debt:{},dice:{},dory:{},duct:{},fore:{},four:{},gaff:{},gage:{},gong:{},helm:{},hemp:{},icon:{},iris:{},junk:{},kern:{},loan:{},maul:{},mink:{},pane:{},pier:{},quid:{},reed:{},rook:{},scum:{},semi:{},sump:{},swob:{},taxi:{},vice:{},ware:{},wool:{},yarn:{},yawl:{},annex:{},atlas:{},barge:{},bevel:{},chaff:{},chute:{},clamp:{},crane:{},crate:{},cubeb:{},dandy:{},dicky:{},dinky:{},dolly:{},dower:{},eight:{},fifty:{},flail:{},floss:{},folio:{},fuzee:{},genre:{},girth:{},gourd:{},grape:{},hinge:{},hobby:{},inlay:{},japan:{},ladle:{},latch:{},linen:{},means:{},mitre:{},motif:{},mulct:{},pique:{},quilt:{},quirk:{},quota:{},rifle:{},rotor:{},setup:{},seven:{},shred:{},skate:{},spade:{},spool:{},spout:{},strut:{},three:{},toner:{},trawl:{},truck:{},twill:{},virtu:{},alpaca:{},anklet:{},argyle:{},argyll:{},arnica:{},balsam:{},bender:{},birdie:{},bishop:{},blower:{},blowup:{},bolero:{},bonnet:{},bounty:{},budget:{},bullet:{},cachet:{},carbon:{},casket:{},castor:{},claxon:{},cobble:{},cobweb:{},collet:{},crenel:{},cutoff:{},cutout:{},damask:{},damper:{},dibble:{},dickey:{},dipper:{},domino:{},douche:{},dragee:{},equity:{},eyelet:{},fetish:{},foible:{},fresco:{},gaiter:{},gibbet:{},gusset:{},heckle:{},hooter:{},horror:{},hunter:{},intake:{},jigger:{},lacing:{},lappet:{},makeup:{},making:{},mallet:{},marker:{},patina:{},paving:{},platen:{},plough:{},poleax:{},portal:{},primer:{},rabbet:{},rattan:{},refill:{},retort:{},revere:{},screed:{},sheath:{},sinker:{},socket:{},splint:{},stereo:{},syphon:{},tamper:{},tandem:{},tarmac:{},tenure:{},ticker:{},trepan:{},twenty:{},velvet:{},veneer:{},vessel:{},vicuna:{},backing:{},bandage:{},bobsled:{},carving:{},central:{},chamfer:{},chequer:{},cistern:{},cleaner:{},cleanup:{},coinage:{},crochet:{},cruiser:{},curtain:{},dilator:{},distaff:{},emerald:{},etching:{},flannel:{},flounce:{},footing:{},gangway:{},garbage:{},garland:{},gauffer:{},gelatin:{},grizzle:{},hanging:{},haywire:{},lamella:{},laniard:{},lanyard:{},lashing:{},lockage:{},lounger:{},manakin:{},masking:{},meshing:{},mileage:{},mintage:{},mortice:{},mortise:{},movable:{},muffler:{},palette:{},pendant:{},pendent:{},pennant:{},pillbox:{},poleaxe:{},portage:{},pottery:{},priming:{},quarrel:{},readout:{},retread:{},roundel:{},rubbing:{},scupper:{},scuttle:{},serpent:{},shampoo:{},shellac:{},shutter:{},snaffle:{},snorkel:{},spangle:{},spouter:{},stabile:{},stinker:{},tankage:{},toehold:{},tracing:{},treadle:{},trefoil:{},truckle:{},trundle:{},vesture:{},webbing:{},whipsaw:{},wrapper:{},additive:{},adjuvant:{},aperture:{},aquatint:{},backdoor:{},basilisk:{},blowback:{},bludgeon:{},breakage:{},causeway:{},checkout:{},clincher:{},compress:{},corduroy:{},coupling:{},crossbar:{},currency:{},detector:{},dividend:{},dogtooth:{},downcast:{},followup:{},frontage:{},giveaway:{},goodwill:{},hardware:{},headgear:{},headshot:{},hypnotic:{},ignition:{},inhalant:{},lipstick:{},masthead:{},meniscus:{},metallic:{},modeling:{},nautilus:{},neckband:{},nightcap:{},ornament:{},outboard:{},partizan:{},pavement:{},pectoral:{},planking:{},plumbing:{},portable:{},pressing:{},radiator:{},remittal:{},residual:{},resource:{},roulette:{},scaffold:{},scapular:{},scissors:{plural:"scissors"},scrabble:{},springer:{},sunburst:{},tapestry:{},taxation:{},thrasher:{},tomahawk:{},totality:{},tympanum:{},valuable:{},vignette:{},wardrobe:{},widening:{},admixture:{},antiquity:{},aquaplane:{},bagatelle:{},bastinado:{},blindfold:{},blueprint:{},boomerang:{},carpetbag:{},crinoline:{},depressor:{},detergent:{},doodlebug:{},downstage:{},emergency:{},endowment:{},equalizer:{},exemption:{},extortion:{},extractor:{},facsimile:{},freewheel:{},gabardine:{},grotesque:{},hemstitch:{},horseshoe:{},invention:{},jackknife:{},microwave:{},millstone:{},miniature:{},modernism:{},nosepiece:{},ownership:{},packaging:{},pargeting:{},patchwork:{},pinstripe:{},polyester:{},potpourri:{},recording:{},refresher:{},semaphore:{},semblance:{},shielding:{},sideboard:{},skyrocket:{},slapstick:{},soporific:{},spectacle:{},starboard:{},telephone:{},telescope:{},treadmill:{},turntable:{},verdigris:{},videotape:{},whirligig:{},allocation:{},ambulatory:{},anesthetic:{},assistance:{},astringent:{},automation:{},cantilever:{},chinchilla:{},concertina:{},constraint:{},deductible:{},depilatory:{},disposable:{},elongation:{},escutcheon:{},featherbed:{},foreground:{},forfeiture:{},guillotine:{},hammerhead:{},hydroplane:{},innovation:{},intoxicant:{},knockabout:{},lithograph:{},monochrome:{},nonpayment:{},nutcracker:{},pargetting:{},peripheral:{},polychrome:{},redemption:{},stabilizer:{},stenograph:{},subvention:{},sustenance:{},technology:{},television:{},waterspout:{},anaesthetic:{},anamorphism:{},concealment:{},containment:{},copperplate:{},cornerstone:{},counterfeit:{},countersink:{},cryptograph:{},delineation:{},delinquency:{},encumbrance:{},fingerboard:{},fluorescent:{},incumbrance:{},perforation:{},pyrotechnic:{},retribution:{},subsistence:{},tensiometer:{},transporter:{},undercharge:{},withholding:{},dispensation:{},electrolytic:{},encrustation:{},inclinometer:{},incrustation:{},installation:{},intermixture:{},photogravure:{},straightaway:{},transparency:{},appropriation:{},embellishment:{},improvisation:{},merchandising:{},mystification:{},quadruplicate:{},semiautomatic:{},pharmaceutical:{},superannuation:{},aba:{},boa:{},dag:{},fax:{},gad:{},keg:{},nib:{},nog:{},pix:{},pyx:{},rep:{},ski:{},taw:{},urn:{},ante:{},arms:{},bale:{},berm:{},bier:{},bitt:{},bola:{},bolo:{},brad:{},cape:{},cask:{},cent:{},coax:{},coca:{},cosh:{},dime:{},dole:{},doll:{},garb:{},gilt:{},gyro:{},hasp:{},hypo:{},ikon:{},juju:{},lane:{},lint:{},luge:{},lute:{},maxi:{},maze:{},mini:{},mitt:{},mule:{},pail:{},perk:{},plat:{},pork:{},pouf:{},rung:{},scow:{},silk:{},sill:{},skep:{},sled:{},tamp:{},tapa:{},topi:{},trey:{},vape:{},wale:{},wick:{},adobe:{},aegis:{},aglet:{},album:{},alley:{},anode:{},anvil:{},arrow:{},auger:{},batik:{},bogie:{},bolus:{},bongo:{},borer:{},bribe:{},bulla:{},caddy:{},canoe:{},chime:{},coign:{},debit:{},denim:{},depot:{},diary:{},diode:{},drier:{},flask:{},flume:{},fount:{},frier:{},fryer:{},gauze:{},globe:{},golem:{},hijab:{},inlet:{},jimmy:{},jorum:{},kayak:{},khaki:{},lasso:{},latex:{},lisle:{},lorry:{},lucre:{},manta:{},mimeo:{},mizen:{},moire:{},mulch:{},newel:{},nylon:{},penny:{},piste:{},plush:{},poker:{},prism:{},pyxis:{},ranch:{},razor:{},relic:{},rouge:{},ruler:{},sabot:{},scape:{},sedan:{},seine:{},servo:{},shelf:{plural:"shelves"},slops:{},spoke:{},sprig:{},stele:{},steps:{},stoup:{},stove:{},strop:{},suede:{},swage:{},tammy:{},tanka:{},tappa:{},teddy:{},terms:{},toque:{},torus:{},towel:{},tunic:{},tweed:{},usury:{},verso:{},vizor:{},waist:{},winch:{},withe:{},xerox:{},yacht:{},abacus:{},afghan:{},aiglet:{},alidad:{},amends:{},arctic:{},artery:{},avenue:{},banger:{},bangle:{},banian:{},banyan:{},bauble:{},beaker:{},bicorn:{},blazon:{},boiler:{},bracer:{},broach:{},bumper:{},burner:{},buzzer:{},caftan:{},calash:{},camera:{},camion:{},camlet:{},capote:{},carton:{},casein:{},catgut:{},chaise:{},cheque:{},chiton:{},chukka:{},cither:{},cloaca:{},cloche:{},coffer:{},coffin:{},coigne:{},colors:{},corbel:{},corker:{},corset:{},crayon:{},crutch:{},dagger:{},daybed:{},detour:{},diaper:{},dickie:{},dipole:{},dirndl:{},discus:{},dogleg:{},dolman:{},dosage:{},duffel:{},duffle:{},eyecup:{},fabric:{},facade:{},falsie:{},fanjet:{},fascia:{},fetter:{},firkin:{},fizgig:{},floppy:{},frieze:{},garter:{},gimlet:{},goblet:{},guimpe:{},guinea:{},gunnel:{},harrow:{},helmet:{},hookup:{},hotbed:{},impost:{},instep:{},iodine:{},island:{},jersey:{},jetsam:{},jigsaw:{},juicer:{},kaftan:{},kibble:{},kirtle:{},lateen:{},laurel:{},ledger:{},linage:{},lunula:{},magnet:{},markup:{},miotic:{},mizzen:{},myotic:{},nipple:{},nozzle:{},onager:{},pajama:{},pavage:{},pellet:{},pennon:{},peplum:{},peyote:{},pincer:{},pipage:{},pomade:{},pompon:{},popper:{},pyjama:{},ragbag:{},reamer:{},remake:{},reseau:{},rudder:{},russet:{},scythe:{},settee:{},shades:{},shorts:{},siding:{},sleeve:{},sleigh:{},spinet:{},spline:{},stoker:{},stylus:{},sublet:{},subway:{},surtax:{},swathe:{},swivel:{},syrinx:{},taenia:{},talcum:{},tariff:{},teacup:{},teeter:{},tenner:{},tether:{},thwart:{},tocsin:{},trophy:{},trowel:{},turban:{},viewer:{},waggon:{},wampum:{},wherry:{},wicker:{},willow:{},wiring:{},woolen:{},yarder:{},zipper:{},acetate:{},aerosol:{},airline:{},alidade:{},ampulla:{},android:{},aneroid:{},annulet:{},anodyne:{},apanage:{},apparel:{},archive:{},armband:{},armilla:{},arrears:{},banding:{},basting:{},batting:{},bayonet:{},beading:{},bedding:{},bladder:{},blocker:{},blusher:{},bollock:{},bouquet:{},bracing:{},brocade:{},broiler:{},bullion:{},bunting:{},burthen:{},bushing:{},caleche:{},caliper:{},cathode:{},catwalk:{},cautery:{},charger:{},charnel:{},chemise:{},chevron:{},chimney:{},chlamys:{},circlet:{},colours:{},commode:{},cooling:{},cordage:{},coronet:{},corsair:{},crampon:{},cutaway:{},daybook:{},deadeye:{},decoder:{},diagram:{},doeskin:{},dogsled:{},doormat:{},dragger:{},dragnet:{},drapery:{},drawers:{},dustpan:{},escheat:{},eyehole:{},fixings:{},flatbed:{},flattop:{},flipper:{},foghorn:{},foliage:{},footage:{},foretop:{},forgery:{},frigate:{},funding:{},furring:{},fustian:{},garment:{},garotte:{},garrote:{},gouache:{},grapnel:{},griddle:{},hackney:{},hammock:{},harpoon:{},hassock:{},hatchel:{},hatchet:{},heating:{},hedging:{},hibachi:{},hobnail:{},holding:{},holster:{},hydrant:{},iceboat:{},igniter:{},impasse:{},ironing:{},jackpot:{},javelin:{},joinery:{},fibre:{},hazel:{},lemon:{},peach:{},plank:{},raven:{},snipe:{},spine:{},steer:{},stint:{},stunt:{},bleach:{},breath:{},callus:{},cherry:{},dimple:{},entire:{},ferret:{},filler:{},hybrid:{},jackal:{},marrow:{},orange:{},radish:{},spruce:{},stifle:{},winkle:{},endemic:{},vanilla:{},beefwood:{},calabash:{},concrete:{},emission:{},kingfish:{},solution:{},volatile:{},partridge:{},repellant:{},derivative:{},thickening:{},ash:{},bud:{},cob:{},hen:{},mew:{},mud:{},mum:{},paw:{},roe:{},sow:{},soy:{},wax:{},yam:{},beef:{},burl:{},calf:{plural:"calves"},chat:{},fowl:{},fuzz:{},gill:{},grub:{},hock:{},hoof:{},lobe:{},rose:{},scup:{},soup:{},swan:{},tint:{},tuna:{},tusk:{},alloy:{},briar:{},clove:{},coney:{},ebony:{},ether:{},filth:{},flesh:{},gumbo:{},homer:{},jelly:{},matte:{},mocha:{},reeve:{},wrack:{},annual:{},canine:{},carrot:{},cereal:{},cockle:{},feeler:{},fennel:{},flimsy:{},gargle:{},gravel:{},grouse:{},indigo:{},mammee:{},medlar:{},monkey:{},nebula:{},oyster:{},salmon:{plural:"salmon"},shiner:{},shrimp:{},sprout:{},stigma:{},blossom:{},blubber:{},buffalo:{},cabbage:{},calamus:{},catfish:{},caudate:{},caustic:{},chelate:{},chicory:{},ciliate:{},essence:{},griffon:{},hemlock:{},hydrate:{},incense:{},lighter:{},remount:{},sardine:{},stinger:{},vitriol:{},ambrosia:{},billfish:{},blackcap:{},crawfish:{},crayfish:{},earthnut:{},escallop:{},filament:{},flounder:{},infusion:{},ironwood:{},quandong:{},relative:{},ringtail:{},screamer:{},sycamore:{},alabaster:{},algarroba:{},broadbill:{},composite:{},fulminate:{},perennial:{},tangerine:{},bladderpod:{},granadilla:{},heartsease:{},periwinkle:{},tumbleweed:{},agglomerate:{},bittersweet:{},intermediate:{},dye:{},elk:{},fig:{},haw:{},oka:{},pea:{},pee:{},rye:{},sac:{},tar:{},yak:{},carp:{},clay:{},coma:{},cony:{},crud:{},cusk:{},dung:{},fang:{},foam:{},germ:{},glue:{},hare:{},hind:{},husk:{},kiwi:{},lake:{},mung:{},okra:{},pine:{},pith:{},puke:{},rice:{},roan:{},sloe:{},taro:{},teal:{},yellow:{},titi:{},twig:{},amber:{},anime:{},berry:{},boxer:{},carob:{},cedar:{},chine:{},guava:{},hound:{},husky:{},kauri:{},lemma:{},monad:{},ocher:{},ochre:{},onion:{},ounce:{},pansy:{},pecan:{},pewit:{},prawn:{},quail:{},shuck:{},sloth:{},slush:{},smelt:{},snail:{},snout:{},spawn:{},swift:{},tabby:{},thorn:{},topaz:{},umber:{},virus:{},wafer:{},wahoo:{},wheat:{},whelk:{},badger:{},bonito:{},broody:{},chrome:{},cirrus:{},cocoon:{},cowpea:{},cuckoo:{},elixir:{},grease:{},grubby:{},howler:{},jabiru:{},jargon:{},jujube:{},kernel:{},leaven:{},lentil:{},liquor:{},locust:{},manioc:{},mastic:{},mentum:{},mildew:{},mimosa:{},mullet:{},muscat:{},mutant:{},nectar:{},nettle:{},nodule:{},pawpaw:{},pecker:{},plasma:{},ruddle:{},sallow:{},shoddy:{},squill:{},starch:{},stroma:{},stucco:{},sunray:{},thorax:{},tissue:{},violet:{},walnut:{},warble:{},amyloid:{},antenna:{plural:"antennae"},apricot:{},aquatic:{},terrestrial:{},asphalt:{},avocado:{},beebalm:{},bobtail:{},builder:{},bulldog:{},caltrop:{},cayenne:{},chinook:{},coconut:{},cricket:{},cudweed:{},currant:{},cuticle:{},dasheen:{},gallfly:{},juniper:{},lacquer:{},leaflet:{},lettuce:{},macadam:{},mordant:{},mustard:{},packing:{},panther:{},papilla:{},papyrus:{},parsnip:{},pigweed:{},pollard:{},redfish:{},redwood:{},rubbish:{},saffron:{},salsify:{},shallot:{},slating:{},solvate:{},solvent:{},soybean:{},sunfish:{},truffle:{},whisker:{},abrasive:{},allspice:{},angelica:{},biennial:{},bilberry:{},bluebell:{},chickpea:{},cinnabar:{},cinnamon:{},congener:{},creosote:{},demerara:{},duckbill:{},firebird:{},fleabane:{},humanity:{},lavender:{},mahogany:{},monkfish:{},paraffin:{},peduncle:{},peroxide:{},plantain:{},rockfish:{},sandarac:{},sandwort:{},scammony:{},shamrock:{},skipjack:{},skullcap:{},snowbird:{},suckling:{},tubercle:{},alligator:{},angelfish:{},arachnoid:{},arrowroot:{},bearberry:{},blackfish:{},buckthorn:{},capitulum:{},carbonate:{},carnation:{},celluloid:{},chemistry:{},coriander:{},corrosive:{},crabapple:{},devilfish:{},emanation:{},groundnut:{},horseback:{},horsemint:{},injection:{},matchwood:{},mistletoe:{},offspring:{plural:"offspring"},pyrethrum:{},raspberry:{},razorback:{},satinwood:{},sheepskin:{},tomatillo:{},waxflower:{},whitefish:{},ammunition:{},bitterwood:{},blackberry:{},butterfish:{},chinquapin:{},coneflower:{},flagellate:{},flamboyant:{},fledgeling:{},insulation:{},peppermint:{},receptacle:{},strawberry:{},watercress:{},chittamwood:{},everlasting:{},fomentation:{},helleborine:{},honeysuckle:{},horseradish:{},huckleberry:{},salmonberry:{},shittimwood:{},strawflower:{},ultramarine:{},whitethroat:{},wintergreen:{},helmetflower:{},impregnation:{},quintessence:{},sternutatory:{},thimbleberry:{},contamination:{},extravasation:{},leatherjacket:{},pulverisation:{},pulverization:{},tortoiseshell:{},ti:{},ala:{},asp:{},eel:{},elm:{},fir:{},gar:{},neb:{},nit:{},oak:{},oat:{},sol:{},tom:{},yew:{},agar:{},akee:{},anil:{},atom:{},balm:{},bast:{},beet:{},boar:{},bole:{},bran:{},brit:{},cere:{},cero:{},chow:{},coho:{},dahl:{},dill:{},flax:{},foal:{},glop:{},gnat:{},hake:{},herb:{},hoar:{},homo:{},kaki:{},kino:{},leek:{},loin:{},mite:{},musk:{},parr:{},pear:{},poon:{},puka:{},rhea:{},saki:{},seta:{},shad:{},silt:{},slag:{},soda:{},soma:{},soot:{},soya:{},talc:{},teak:{},tufa:{},unai:{},unau:{},whey:{},woad:{},wort:{},yolk:{},zinc:{},abaca:{},alder:{},alula:{},amino:{},anise:{},apple:{},aroid:{},aster:{},balsa:{},basil:{},beech:{},betel:{},biddy:{},billy:{},biped:{},booby:{},britt:{},bruin:{},cairn:{},capon:{},caulk:{},chard:{},chess:{},chick:{},cisco:{},cohoe:{},comma:{},croup:{},cumin:{},dross:{},elver:{},epoxy:{},ergot:{},falls:{},flint:{},fossa:{},genip:{},grout:{},grume:{},henna:{},hilum:{},humus:{},hydra:{},icaco:{},ilama:{},imago:{},ivory:{},kapok:{},kenaf:{},lapin:{},larch:{},lilac:{},lotus:{},luffa:{},mahoe:{},maize:{},mamey:{},mango:{},manna:{},melon:{},moong:{},naiad:{},nanny:{},nopal:{},orris:{},osier:{},otter:{},ovary:{},ovule:{},pacer:{},panda:{},papaw:{},piggy:{},pilus:{},pinna:{},pixie:{},polyp:{},potto:{},putty:{},quira:{},robin:{},roble:{},rosin:{},scrod:{},sepia:{},sisal:{},slime:{},sorus:{},sprat:{},squid:{},stoma:{},sumac:{},swede:{},theca:{},thyme:{},trout:{plural:"trout"},tunny:{},vapor:{},velum:{},venom:{},vinyl:{},whelp:{},yeast:{},acetum:{},acinus:{},acumen:{},adduct:{},agaric:{},alkali:{},almond:{},anuran:{},archil:{},argent:{},balata:{},bamboo:{},bantam:{},barley:{},basset:{},beluga:{},bennet:{},bluing:{},bonduc:{},borage:{},capsid:{},cashew:{},cassia:{},caudex:{},celery:{},chives:{},cilium:{},citron:{},cobnut:{},cocker:{},cosmos:{},cowage:{},croton:{},cupule:{},cushaw:{},darter:{},dentin:{},dobson:{},dodder:{},donkey:{},durian:{},embryo:{},endive:{},ermine:{},falcon:{},feijoa:{},feline:{},fisher:{},fucoid:{},gadfly:{},garlic:{},glycol:{},hackle:{},haunch:{},herpes:{},hyssop:{},kaffir:{},kitten:{},lichee:{},limpet:{},linden:{},linnet:{},litchi:{},loofah:{},loquat:{},lovage:{},lupine:{},madder:{},maguey:{},manure:{},marang:{},mescal:{},mocker:{},mombin:{},mucoid:{},mudcat:{},munggo:{},murine:{},mussel:{},myrtle:{},nipper:{},nutmeg:{},obeche:{},orchil:{},orchis:{},oriole:{},padauk:{},paigle:{},papaya:{},parget:{},pasang:{},peewee:{},peewit:{},phenol:{},plaice:{},pomelo:{},poplar:{},possum:{},potato:{},pothos:{},pouter:{},puffer:{},pullet:{},pumice:{},pyrene:{},quahog:{},quartz:{},quince:{},rachis:{},raffia:{},ratter:{},relict:{},sabicu:{},saline:{},sapote:{},saurel:{},schrod:{},senega:{},septum:{},setter:{},sierra:{},simian:{},sludge:{},solder:{},spirea:{},stevia:{},sulfur:{},thrift:{},toetoe:{},tomato:{},tophus:{},triton:{},tupelo:{},turbot:{},turnip:{},vapour:{},vellum:{},wapiti:{},wasabi:{},acerola:{},actinon:{},aculeus:{},adamant:{},albumen:{},alewife:{},alfalfa:{},amboyna:{},anchovy:{},anemone:{},anionic:{},annelid:{},annulus:{},antacid:{},antlion:{},arsenic:{},aurochs:{},babbitt:{},barilla:{},beeswax:{},bimetal:{},biomass:{},bloomer:{},blotter:{},bluefin:{},blueing:{},boneset:{},boxwood:{},bracken:{},brocket:{},bromide:{},buckeye:{},bugbane:{},bugloss:{},bullock:{},bulrush:{},buzzard:{},cackler:{},cacodyl:{},caliche:{},calycle:{},cambium:{},capulin:{},caraway:{},cardoon:{},catbird:{},catechu:{},celtuce:{},ceriman:{},chalaza:{},chamois:{},chervil:{},chigger:{},citrate:{},cocoyam:{},codfish:{},comfrey:{},compost:{},cowslip:{},crappie:{},crawdad:{},crinoid:{},cyanide:{},cypress:{},dabbler:{},denizen:{},diploid:{},dogfish:{},dogwood:{},echidna:{},eelpout:{},enation:{},fallout:{},ferrite:{},fetlock:{},filaria:{},filbert:{},firebug:{},firefly:{},frijole:{},fuchsia:{},gamboge:{},ginseng:{},girasol:{},glutton:{},gobbler:{},grackle:{},grampus:{},granite:{},grizzly:{},grouper:{},grunter:{},gudgeon:{},haddock:{},halibut:{},haploid:{},haricot:{},heather:{},hepatic:{},herring:{},hickory:{},hogfish:{},honesty:{},hyaline:{},ignitor:{},inducer:{},jackass:{},jewfish:{},jonquil:{},kestrel:{},kingcup:{},kumquat:{},lactate:{},langsat:{},lanolin:{},lingcod:{},lobster:{},logwood:{},mahagua:{},majagua:{},malacca:{},mammoth:{},marabou:{},marasca:{},menthol:{},mercury:{},monarch:{},moneran:{},mongrel:{},moorhen:{},morello:{},muskrat:{},nervure:{},nitrate:{},octopus:{},oldwife:{},opossum:{},oregano:{},ostrich:{},oxheart:{},parsley:{},peacock:{},pigfish:{},pimento:{},piranha:{},plumcot:{},pollack:{},pollock:{},pompano:{},popcorn:{},poultry:{},pricket:{},puccoon:{},pulasan:{},pyrogen:{},quahaug:{},quassia:{},quetzal:{},raccoon:{},ragweed:{},ragwort:{},rattler:{},redbird:{},redpoll:{},redtail:{},reducer:{},redwing:{},remover:{},residue:{},retinal:{},rhubarb:{},rosebud:{},rostrum:{},satsuma:{},saurian:{},sequoia:{},seriema:{},skylark:{},sockeye:{},soursop:{},sparrow:{},spinach:{},spiraea:{},stentor:{},steroid:{},stubble:{},sulfate:{},sulphur:{},tangelo:{},taproot:{},tarweed:{},tarwood:{},tattler:{},taurine:{},teargas:{},timothy:{},tobacco:{},topknot:{},tortrix:{},trotter:{},varmint:{},verdure:{},viceroy:{},vinegar:{},viscose:{},vulture:{},walleye:{},waratah:{},warbler:{},waxwork:{},whooper:{},wilding:{},witloof:{},wryneck:{},abradant:{},absinthe:{},acceptor:{},actinoid:{},adhesive:{},adjutant:{},ageratum:{},agueweed:{},albacore:{},amarelle:{},amethyst:{},ammoniac:{},argonaut:{},armyworm:{},auricula:{},balancer:{},baldpate:{},barnacle:{},basswood:{},bayberry:{},bearskin:{},beetroot:{},birdlime:{},blackfly:{},blacktop:{},bluebird:{},bluefish:{},boarfish:{},bocconia:{},boxberry:{},brisling:{},broccoli:{},buckskin:{},bullhead:{},bullrush:{},canistel:{},capuchin:{},carangid:{},carbonyl:{},carboxyl:{},cardamom:{},cardamon:{},carinate:{},carnauba:{},carotene:{},cashmere:{},catalyst:{},catchfly:{},celeriac:{},cetacean:{},chimaera:{},chloride:{},cilantro:{},cinchona:{},citrange:{},cockspur:{},conodont:{},costmary:{},cowberry:{},cucumber:{},deadwood:{},detritus:{},dewberry:{},dilution:{},dolomite:{},duckling:{},ectozoan:{},eelgrass:{},effluent:{},eggplant:{},emulsion:{},estragon:{},filtrate:{},fireweed:{},flathead:{},flooring:{},forelock:{},galangal:{},garbanzo:{},grayback:{},guaiacum:{},hardtack:{},harebell:{},hawkweed:{},hazelnut:{},hedgehog:{},hepatica:{},hookworm:{},hornwort:{},horsefly:{},hyacinth:{},impurity:{},iodoform:{},jalapeno:{},jamberry:{},japonica:{},keurboom:{},kindling:{},kingwood:{},kinkajou:{},kohlrabi:{},labdanum:{},lambskin:{},locoweed:{},lovebird:{},magnolia:{},mahimahi:{},mandrake:{},margarin:{},marjoram:{},medusoid:{},mephitis:{},migrator:{},molecule:{},moonfish:{},mucilage:{},mulberry:{},nestling:{},omnivore:{},ovenbird:{},pandanus:{},pickerel:{},pilchard:{},pimiento:{},pitahaya:{},placenta:{},plumbago:{},predator:{},ptomaine:{},puffball:{},pulassan:{},purebred:{},pyrectic:{},quandang:{},quickset:{},rambotan:{},rambutan:{},redberry:{},redstart:{},reedbird:{},ricebird:{},richweed:{},ringdove:{},rockrose:{},rosefish:{},rosemary:{},rosewood:{},ruminant:{},rutabaga:{},sailfish:{},salsilla:{},saltwort:{},sandfish:{},scallion:{},seahorse:{},sealskin:{},sewerage:{},shoveler:{},siderite:{},silkworm:{},sparling:{},squealer:{},squirrel:{},stearate:{},stinkpot:{},superbug:{},surffish:{},sweetsop:{},tamarind:{},tarragon:{},teaberry:{},thresher:{},throstle:{},tilefish:{},tomentum:{},toxicant:{},turmeric:{},ungulate:{},univalve:{},urochord:{},vesicant:{},warragal:{},warrigal:{},watchdog:{},waxberry:{},weakfish:{},wolffish:{},woodbine:{},woodruff:{},wormcast:{},wriggler:{},zucchini:{},absorbent:{},adsorbate:{},adsorbent:{},albatross:{},almandine:{},andromeda:{},antiknock:{},apophysis:{},archangel:{},arsenical:{},artichoke:{},asparagus:{},aubergine:{},bacteroid:{},blackbird:{},blindworm:{},bluegrass:{},bluepoint:{},broadtail:{},brooklime:{},brookweed:{},brushwood:{},buckwheat:{},bugleweed:{},buteonine:{},butternut:{},caecilian:{},calyculus:{},candlenut:{},cantaloup:{},carambola:{},carbonado:{},carbuncle:{},cardboard:{},carnivore:{},catamount:{},celandine:{},chameleon:{},chatterer:{},chelonian:{},cherimoya:{},chickweed:{},chlamydia:{},clamshell:{},clapboard:{},coachwhip:{},cochineal:{},cocklebur:{},cocozelle:{},coltsfoot:{},commensal:{},courgette:{},crackling:{},cupflower:{},cyanamide:{},digestive:{},digitalis:{},driftfish:{},ecrevisse:{},ectoplasm:{},eiderdown:{},ephemeral:{},eutherian:{},evergreen:{},excretion:{},exudation:{},fenugreek:{},firebrand:{},firestone:{},flagellum:{},frostweed:{},funiculus:{},gladiolus:{},glasswort:{},goldeneye:{},goldfinch:{},grapevine:{},grenadier:{},hackberry:{},hamadryad:{},heartleaf:{},hellebore:{},hollyhock:{},horehound:{},horsebean:{},horsehair:{},horseweed:{},hortensia:{},hydroxide:{},jackfruit:{},jacksnipe:{},jellyfish:{},juneberry:{},lancewood:{},langouste:{},leavening:{},lemonwood:{},mammalian:{},manzanita:{},maravilla:{},marihuana:{},marijuana:{},moosewood:{},muscadine:{},muskmelon:{},nakedwood:{},nectarine:{},nighthawk:{},pasturage:{},patchouli:{},patchouly:{},pelecypod:{},pellitory:{},peregrine:{},peristome:{},persimmon:{},phosphate:{},pimpernel:{},pinchbeck:{},pineapple:{},pistachio:{},polyploid:{},probiotic:{},proboscis:{},protozoan:{},pureblood:{},quadruped:{},rauwolfia:{},recycling:{},reptilian:{},reticulum:{},rockcress:{},rootstock:{},rosinweed:{},sandpaper:{},sapodilla:{},sassafras:{},sheldrake:{},shingling:{},shoveller:{},siccative:{},sicklepod:{},snakeroot:{},snowflake:{},sourdough:{},spicebush:{},spirillum:{},stainless:{},stiffener:{},strangler:{},strawworm:{},sugarcane:{},swordfish:{},tamarindo:{},tarantula:{},topminnow:{},tulipwood:{},turquoise:{},twayblade:{},twinberry:{},wallpaper:{},whitebait:{},whiteface:{},wineberry:{},wolverine:{},workhorse:{},adulterant:{},amygdaloid:{},anopheline:{},aquamarine:{},belladonna:{},bellwether:{},bitterweed:{},blacksnake:{},blackthorn:{},bluebonnet:{},bluebottle:{},bottlenose:{},brachiopod:{},brazilwood:{},breadfruit:{},butterball:{},butterweed:{},candelilla:{},cantaloupe:{},catarrhine:{},cellulosic:{},chatterbox:{},chinaberry:{},cinquefoil:{},citronwood:{},clementine:{},condensate:{},copperhead:{},coralberry:{},cornflower:{},cottonweed:{},cottonwood:{},crossbreed:{},crustacean:{},deathwatch:{},demoiselle:{},dollarfish:{},elderberry:{},exhalation:{},feathertop:{},fetterbush:{},fiddlehead:{},flycatcher:{},fritillary:{},garambulla:{},goldenbush:{},gooseberry:{},grapefruit:{},jaboticaba:{},jackrabbit:{},ketembilla:{},kitembilla:{},lemongrass:{},littleneck:{},loganberry:{},loggerhead:{},mangosteen:{},marblewood:{},marguerite:{},massasauga:{},meerschaum:{},monoclonal:{},nasturtium:{},needlefish:{},nonstarter:{},ornamental:{},pacesetter:{},parenchyma:{},pennyroyal:{},pepperwort:{},plasmodium:{},princewood:{},propellant:{},propellent:{},pufferfish:{},pyrimidine:{},quercitron:{},restharrow:{},restrainer:{},ribbonfish:{},ribbonwood:{},rudderfish:{},sapphirine:{},scorzonera:{},sidewinder:{},silverbush:{},silverfish:{},silverweed:{},spiceberry:{},sticktight:{},sugarberry:{},superoxide:{},tarmacadam:{},turpentine:{},turtledove:{},velvetleaf:{},vertebrate:{},vesicatory:{},wandflower:{},watermelon:{},windowpane:{},witchgrass:{},yellowbird:{},yellowtail:{},yellowwood:{},adulterator:{},arthrospore:{},artiodactyl:{},bactericide:{},boysenberry:{},branchiopod:{},buffalofish:{},butcherbird:{},cauliflower:{},cherrystone:{},chittimwood:{},chokecherry:{},combustible:{},conspecific:{},digitigrade:{},dolphinfish:{},flameflower:{},gillyflower:{},groundberry:{},groundcover:{},heterocycle:{},honeyflower:{},insectivore:{},leatherleaf:{},leatherwood:{},lingonberry:{},liquidambar:{},loosestrife:{},muskellunge:{},plantigrade:{},platyrrhine:{},pomegranate:{},precipitant:{},prickleback:{},quicksilver:{},recombinant:{},refrigerant:{},shellflower:{},silversides:{},sleuthhound:{},swallowwort:{},unguiculate:{},waldmeister:{},archosaurian:{},distillation:{},heterocyclic:{},honeycreeper:{},instillation:{},invertebrate:{},nonsteroidal:{},placentation:{},sarsaparilla:{},serviceberry:{},squirrelfish:{},transudation:{},weatherboard:{},whortleberry:{},yellowhammer:{},branchiopodan:{},inflorescence:{},platyrrhinian:{},semiconductor:{},transactinide:{},vitrification:{},fructification:{},aa:{},ai:{},ani:{},auk:{},awn:{},bot:{},dak:{},daw:{},dew:{},doe:{},dug:{},eft:{},ern:{},ewe:{},gib:{},gnu:{},goo:{},ivy:{},jay:{},kea:{},kob:{},lac:{},lye:{},may:{},mei:{},moa:{},oca:{},ola:{},olm:{},pia:{},pug:{},teg:{},tup:{},acyl:{},agua:{},aloe:{},amyl:{},anoa:{},apar:{},aril:{},arui:{},atar:{},axil:{},barm:{},baya:{},bine:{},boll:{},bufo:{},buna:{},calx:{},cavy:{},chub:{},cleg:{},coco:{},colt:{},coot:{},corm:{},cows:{},craw:{},culm:{},cyme:{},dace:{},dalo:{},deer:{plural:"deer"},derv:{},dhak:{},dhal:{},dika:{},diol:{},disa:{},dita:{},dogy:{},doob:{},dopa:{},enol:{},erne:{},eyas:{},fern:{},fice:{},floc:{},fuji:{},gean:{},goby:{},guan:{},guar:{},guib:{},haem:{},halm:{},hart:{},heme:{},hogg:{},hops:{},hoya:{},ibex:{},ibis:{},inga:{},jird:{},jute:{},kali:{},kelp:{},kola:{},kudu:{},lily:{},lino:{},liza:{},loam:{},loir:{},lory:{},lynx:{},mako:{},mamo:{},mara:{},marl:{},merl:{},mica:{},milo:{},miro:{},mola:{},moss:{},munj:{},mutt:{},myna:{},nagi:{},napa:{},napu:{},neem:{},neon:{},olla:{},ombu:{},onyx:{},opah:{},opal:{},orca:{},oryx:{},paca:{},peat:{},peba:{},pika:{},pome:{},puku:{},puma:{},pupa:{},ragi:{},rimu:{},rudd:{},sago:{},salp:{},sang:{},sard:{},scut:{},sial:{},sika:{},sild:{},sima:{},skua:{},smew:{},sugi:{},tatu:{},teff:{},teju:{},tern:{},tipu:{},toad:{},tody:{},tolu:{},tuff:{},tung:{},urea:{},urus:{},vole:{},wasp:{},weka:{},blast:{},dinar:{},lapse:{},lurch:{},whirl:{},travel:{},capacity:{},encounter:{},conversion:{},separation:{},age:{},nip:{},now:{},halt:{},leap:{},mile:{},peak:{},peso:{},slam:{},term:{},wake:{},faint:{},scoop:{},surge:{},third:{},trick:{},bother:{},cackle:{},motion:{},chatter:{},reversal:{},elevation:{},experience:{},dab:{},pat:{},cube:{},howl:{},over:{},peep:{},span:{},cause:{},death:{},plump:{},plunk:{},poise:{},pulse:{},shame:{},spark:{},twang:{},wound:{},cipher:{},crunch:{},damage:{},fusion:{},period:{},racket:{},repeat:{},supply:{},wallow:{},wonder:{},dribble:{},failure:{},outrage:{},sparkle:{},backfire:{},campaign:{},delivery:{},increase:{},variance:{},explosion:{},correction:{},disturbance:{},translation:{},displacement:{},transposition:{},hum:{},mug:{},buzz:{},cord:{},dawn:{},fuss:{},hint:{},hiss:{},much:{},past:{},ping:{},rout:{},seek:{},tide:{},warp:{},birth:{},blend:{},crumb:{},delay:{},rupee:{},worst:{},climax:{},deluge:{},dirham:{},recoil:{},replay:{},rhythm:{},rising:{},descent:{},grumble:{},impulse:{},respite:{},scruple:{},triumph:{},addition:{},dogfight:{},eruption:{},occasion:{},progress:{},reprieve:{},shilling:{},stampede:{},accretion:{},induction:{},appearance:{},suggestion:{},circulation:{},irradiation:{},accommodation:{},precipitation:{},in:{},ebb:{},mil:{},zap:{},gush:{},honk:{},lull:{},plop:{},rave:{},ream:{},slap:{},then:{},zoom:{},fifth:{},final:{},gleam:{},reign:{},swash:{},throb:{},thump:{},tweet:{},wreck:{},wring:{},billow:{},breach:{},ending:{},fourth:{},gurgle:{},injury:{},nibble:{},parity:{},sunset:{},billion:{},history:{},instant:{},spatter:{},blackout:{},creation:{},decision:{},downhill:{},entrance:{},rational:{},trillion:{},hereafter:{},immersion:{},intrusion:{},millenary:{},remainder:{},saltation:{},adjustment:{},antecedent:{},dedication:{},deflection:{},impairment:{},limitation:{},outpouring:{},refinement:{},scattering:{},devastation:{},elaboration:{},fundamental:{},prohibition:{},retardation:{},interference:{},transmission:{},manifestation:{},scintillation:{},mi:{},kip:{},wee:{},yaw:{},bout:{},bray:{},doom:{},harm:{},haul:{},jolt:{},none:{},ooze:{},pity:{},sigh:{},surf:{},thaw:{},tour:{},alpha:{},carom:{},chunk:{},clink:{},colon:{},deuce:{},drama:{},glint:{},going:{},shtik:{},sixth:{},spurt:{},thrum:{},tinge:{},today:{},waltz:{},worth:{},bucket:{},egress:{},fathom:{},mutter:{},patter:{},picnic:{},quaver:{},ripple:{},rustle:{},shtick:{},sizzle:{},squawk:{},stride:{},tremor:{},whoosh:{},wobble:{},absence:{},allegro:{},andante:{},deficit:{},episode:{},heaving:{},raising:{},rebirth:{},roaring:{},rupture:{},screech:{},scrunch:{},seventh:{},success:{},sunrise:{},takeoff:{},trample:{},twinkle:{},cracking:{},deletion:{},incident:{},interval:{},isometry:{},overflow:{},rattling:{},skeleton:{},splatter:{},striking:{},twilight:{},upheaval:{},advantage:{},alignment:{},deflexion:{},diffusion:{},emergence:{},inflation:{},normality:{},remission:{},resultant:{},ruination:{},shakedown:{},vibration:{},yesterday:{},allegretto:{},conception:{},concoction:{},concretion:{},disruption:{},divergence:{},graduation:{},inflection:{},initiation:{},moderation:{},sprinkling:{},approaching:{},biquadratic:{},competition:{},compression:{},contraction:{},humiliation:{},permutation:{},constriction:{},ramification:{},accompaniment:{},embarrassment:{},mortification:{},rectification:{},coo:{},eve:{},gee:{},par:{},sea:{},sec:{},tot:{},won:{},yen:{},bash:{},beep:{},ding:{},dram:{},fete:{},gait:{},inch:{},lira:{},peal:{},pint:{},purr:{},rial:{},ting:{},toot:{},whiz:{},blare:{},bleat:{},brawl:{},cease:{},digit:{},dying:{},epoch:{},gravy:{},idyll:{},knell:{},metre:{},minim:{},ninth:{},plash:{},plonk:{},quake:{},quart:{},ravel:{},salvo:{},skirl:{},snore:{},spate:{},spirt:{},swish:{},tenth:{},unity:{},whack:{},whirr:{},years:{},ascent:{},bushel:{},curfew:{},drachm:{},eighth:{},enough:{},finale:{},fizzle:{},footer:{},gobble:{},jingle:{},marvel:{},myriad:{},octave:{},ravage:{},smudge:{},spritz:{},squeak:{},squeal:{},squish:{},swerve:{},tierce:{},usance:{},waxing:{},atrophy:{},banging:{},bending:{},blowout:{},centner:{},clangor:{},debacle:{},decimal:{},eclipse:{},glitter:{},kickoff:{},midterm:{},million:{},misfire:{},modulus:{},monsoon:{},ordinal:{},outflow:{},ringing:{},shimmer:{},sinking:{},smolder:{},torrent:{},twelfth:{},backwash:{},bouncing:{},downfall:{},dripping:{},drumbeat:{},eighties:{},eternity:{},exigency:{},footstep:{},furlough:{},gleaming:{},grinding:{},hardship:{},instance:{},invasion:{},majority:{},maturity:{},nineties:{},overtime:{},overture:{},pandemic:{},pounding:{},receding:{},recovery:{},rustling:{},scraping:{},sixtieth:{},smoulder:{},spoilage:{},spraying:{},tomorrow:{},touching:{},amplitude:{},ascension:{},athletics:{},avalanche:{},billionth:{},checkmate:{},clearance:{},collision:{},commotion:{},contagion:{},departure:{},fertility:{},formality:{},gestation:{},heartbeat:{},honeymoon:{},hundredth:{},interlude:{},irruption:{},lactation:{},millionth:{},multitude:{},onslaught:{},outgrowth:{},plurality:{},probation:{},pulsation:{},shrinkage:{},sixteenth:{},spreading:{},stalemate:{},throbbing:{},whistling:{},withering:{},affliction:{},alteration:{},betterment:{},dispersion:{},enervation:{},expiration:{},foreboding:{},incubation:{},incumbency:{},inevitable:{},irrational:{},jubilation:{},levitation:{},millennium:{plural:"millennia"},procession:{},repetition:{},revolution:{},sabbatical:{},solubility:{},subsidence:{},thousandth:{},undulation:{},visitation:{},accelerando:{},catastrophe:{},celebration:{},coincidence:{},consequence:{},continuance:{},deformation:{},dislocation:{},dissipation:{},expansivity:{},fluctuation:{},gravitation:{},oscillation:{},preliminary:{},punctuation:{},sufficiency:{},acceleration:{},augmentation:{},championship:{},commencement:{},conservation:{},deceleration:{},degeneration:{},encroachment:{},interlocking:{},reflectivity:{},consolidation:{},hundredweight:{},magnetisation:{},magnetization:{},regurgitation:{},sheepshearing:{},transmutation:{},conglomeration:{},materialisation:{},optic:{},patty:{},prune:{},saute:{},scalp:{},sinus:{},swill:{},bubbly:{},burgoo:{},choler:{},claret:{},cortex:{},crotch:{},drivel:{},frappe:{},hiatus:{},kosher:{},legume:{},macula:{},phlegm:{},pickle:{},stemma:{},thenar:{},tiptoe:{},adrenal:{},anatomy:{},confect:{},freckle:{},jugular:{},knuckle:{},mastoid:{},medulla:{},pudding:{},takeout:{},thyroid:{},tonsure:{},wassail:{},anterior:{},coloring:{},julienne:{},libation:{},rhomboid:{},sandwich:{},takeaway:{},appendage:{},chocolate:{},colouring:{},endocrine:{},hamstring:{},moonshine:{},permanent:{},recessive:{},turbinate:{},confection:{},hemisphere:{},ingredient:{},spatchcock:{},sweetening:{},convolution:{},pneumogastric:{},os:{},cos:{},cud:{},sup:{},caul:{},chaw:{},chin:{},chou:{},curd:{},cyst:{},fizz:{},jowl:{},mane:{},milt:{},perm:{},snot:{},sorb:{},sura:{},taco:{},booze:{},broth:{},caput:{},chili:{},cocoa:{},costa:{},cress:{},dough:{},eater:{},fanny:{},fondu:{},hyoid:{},loins:{},lolly:{},lumen:{},mamma:{},mummy:{},pasta:{},plasm:{},porgy:{},puree:{},quaff:{},quark:{},sinew:{},thigh:{},tripe:{},tummy:{},areola:{},banana:{},booger:{},bowleg:{},brunch:{},carpal:{},cervix:{},citrus:{},comfit:{},dactyl:{},dorsum:{},edible:{},flitch:{},fondue:{},fornix:{},gammon:{},herbal:{},lambda:{},malted:{},marcel:{},millet:{},monggo:{},noodle:{},paring:{},pastry:{},pelvis:{},simnel:{},spleen:{},tarsal:{},tensor:{},tipple:{},waffle:{},wonton:{},abdomen:{},adenoid:{},auricle:{},biscuit:{},brownie:{},clabber:{},criollo:{},croaker:{},cubitus:{},deltoid:{},dentine:{},dietary:{},eyeball:{},fistula:{},forearm:{},fritter:{},gherkin:{},haircut:{},headful:{},hyaloid:{},iceberg:{},isthmus:{},kneecap:{},lacteal:{},lasagna:{},lasagne:{},lozenge:{},marmite:{},midriff:{},oatmeal:{},ocellus:{},pageboy:{},paprika:{},pathway:{},pottage:{},prepuce:{},pumpkin:{},ramekin:{},ratafia:{},roulade:{},sausage:{},seltzer:{},serving:{},sidecar:{},slobber:{},sorghum:{},stirrup:{},sultana:{},teacake:{},timbale:{},toenail:{},topping:{},tostada:{},trachea:{},treacle:{},twister:{},vintage:{},abducent:{},abductor:{},afferent:{},alveolus:{},appendix:{plural:"appendices"},astragal:{},bicuspid:{},blowfish:{},blowhole:{},bouffant:{},capitate:{},chowchow:{},cobblers:{},cocktail:{},coquille:{},couscous:{},doughboy:{},doughnut:{},dumpling:{},efferent:{},eminence:{},exocrine:{},fascicle:{},flatfish:{},flatfoot:{},flummery:{},forehead:{},foreskin:{},hairline:{},honeydew:{},licorice:{},ligament:{},lollipop:{},macaroni:{},mackerel:{},marinade:{},membrane:{},monstera:{},mouthful:{},muscatel:{},pheasant:{},physique:{},potation:{},prostate:{},ramequin:{},receptor:{},sillabub:{},sinusoid:{},smoothie:{},specimen:{},streusel:{},stuffing:{},syllabub:{},teardrop:{},venation:{},windfall:{},abdominal:{},apparatus:{},blueberry:{},casserole:{},corpuscle:{},cranberry:{},demitasse:{},dentition:{},drinkable:{},drumstick:{},epiphysis:{},flageolet:{},fricassee:{},hamburger:{},labyrinth:{},lifeblood:{},lineament:{},liquorice:{},mastoidal:{},maxillary:{},navicular:{},pituitary:{},pompadour:{},provender:{},purulence:{},shellfish:{},spaghetti:{},spareribs:{},splayfoot:{},spoilable:{},sundowner:{},sweetener:{},trapezium:{},trapezoid:{},umbilical:{},ventricle:{},vestibule:{},zygomatic:{},applesauce:{},autoplasty:{},blackheart:{},breadstuff:{},cheesecake:{},comestible:{},gastronomy:{},hotchpotch:{},interstice:{},jawbreaker:{},kitambilla:{},maraschino:{},metacarpal:{},metatarsal:{},passageway:{},perishable:{},salmagundi:{},shortening:{},articulator:{},excrescence:{},grasshopper:{},griddlecake:{},intercostal:{},longanberry:{},nourishment:{},screwdriver:{},smorgasbord:{},spindlelegs:{},checkerberry:{},perspiration:{},spindleshanks:{},parasympathetic:{},ab:{},ade:{},ale:{},bap:{},bun:{},jak:{},lat:{},lox:{},pes:{},pie:{},poi:{},pud:{},pus:{},tum:{},vas:{},veg:{},anus:{},arak:{},axon:{},baba:{},bile:{},bleb:{},bleu:{},bock:{},bosc:{},choc:{},clit:{},cola:{},coxa:{},crus:{},cuke:{},duff:{},dura:{},edda:{},eggs:{},fist:{},flab:{},flan:{},fugu:{},genu:{},ghee:{},glia:{},grog:{},isaw:{},java:{},kava:{},marc:{},mayo:{},mead:{},miso:{},mons:{},naan:{},nape:{},nipa:{},oleo:{},orzo:{},ouzo:{},ovum:{},pecs:{},pita:{},pone:{},pons:{},porc:{},rete:{},rima:{},rind:{},roux:{},ruga:{},rusk:{},slaw:{},sops:{},suet:{},tofu:{},ugli:{},ulna:{},umbo:{},uvea:{},veal:{},veau:{},vena:{},vino:{},womb:{},ziti:{},zona:{},ackee:{},adobo:{},aioli:{},anjou:{},ankle:{},annon:{},aorta:{},arcus:{},aspic:{},atole:{},axone:{},babka:{},bacon:{},bagel:{},bialy:{},bigos:{},bitok:{},blanc:{},blini:{},bliny:{},boeuf:{},borsh:{},bowel:{},bursa:{},butty:{},cauda:{},cavum:{},cecum:{},celom:{},chips:{},chyle:{},cider:{},congo:{},copra:{},cornu:{},cuppa:{},cutis:{},cyder:{},cytol:{},decaf:{},donut:{},facia:{},femur:{},filum:{},flews:{},fovea:{},fries:{},gigot:{},gland:{},glans:{},gleet:{},glogg:{},glute:{},gonad:{},goody:{},grist:{},grits:{},gruel:{},gyrus:{},hilus:{},hoagy:{},hooch:{},hooks:{},hymen:{},hyson:{},ileum:{},ilium:{},incus:{},inion:{},jello:{},julep:{},kabob:{},kasha:{},kebab:{},knish:{},kumis:{},kvass:{},lansa:{},latke:{},latte:{},lichi:{},limpa:{},lymph:{},macon:{},manus:{},matzo:{},mucus:{},nacho:{},naris:{},nates:{},negus:{},offal:{},ootid:{},pekoe:{},penis:{},penne:{},perry:{},pesto:{},pilaf:{},pinky:{},pizza:{},plica:{},porta:{},pruno:{},psoas:{},pubis:{},quiff:{},raita:{},ramus:{},raphe:{},salmi:{},salsa:{},savoy:{},sebum:{},serum:{},sirup:{},skull:{},sperm:{},steak:{},sudor:{},sushi:{},taffy:{},tamal:{},tater:{},teeth:{},teres:{},tibia:{},titty:{},toddy:{},toffy:{},torso:{},torte:{},tress:{},uvula:{},vagus:{},viand:{},vodka:{},vomer:{},vulva:{},wrist:{},adnexa:{},afters:{},agnail:{},ananas:{},anlage:{},annexa:{},annona:{},antrum:{},armpit:{},arrack:{},axilla:{},baguet:{},beigel:{},biceps:{},bisque:{},blintz:{},bonbon:{},borsch:{},brazil:{},bregma:{},bulgur:{},burger:{},cachou:{},caecum:{},canape:{},canola:{},cardia:{},carina:{},carpus:{},casaba:{},catsup:{},caviar:{},chevre:{},chiasm:{},chilli:{},choana:{},coccyx:{},coelom:{},comedo:{},concha:{},confit:{},congou:{},corium:{},corpse:{},cupper:{},cuspid:{},cutlet:{},damson:{},danish:{},dermis:{},dewlap:{},dolmas:{},eclair:{},eggnog:{},eschar:{},eyelid:{},farina:{},fauces:{},fibula:{},finnan:{},flexor:{},fundus:{},gateau:{},geneva:{},giblet:{},glossa:{},gluten:{},goatee:{},gobbet:{},gonion:{},goober:{},graham:{},grappa:{},groats:{},gulyas:{},haggis:{},hairdo:{},hallah:{},hallux:{},hamate:{},haslet:{},hoagie:{},hominy:{},hommos:{},hootch:{},hotpot:{},huitre:{},hummus:{},inguen:{},intima:{},jambon:{},jugale:{},jumbal:{},karyon:{},kencur:{},kidney:{},kipper:{},kirsch:{},kishke:{},korlan:{},kummel:{},labium:{},lamina:{},lanseh:{},lanugo:{},larynx:{},lekvar:{},limbus:{},lingua:{},lobule:{},lochia:{},locule:{},lunule:{},matzoh:{},meatus:{},meninx:{},milium:{},mohawk:{},mouton:{},mucosa:{},muesli:{},muffin:{},murphy:{},mutton:{},nasion:{},nervus:{},neuron:{},nougat:{},oculus:{},omelet:{},onyxis:{},oocyte:{},oolong:{},operon:{},organs:{},paczki:{},paella:{},palate:{},paries:{},pastis:{},paunch:{},pectus:{},phyllo:{},pilaff:{},pinkie:{},pinole:{},pirogi:{},pleura:{},plexus:{},pollex:{},polony:{},posset:{},potage:{},poteen:{},potion:{},potpie:{},poulet:{},premix:{},pulque:{},purloo:{},quiche:{},rectum:{},rectus:{},repast:{},retina:{},rhaphe:{},ribier:{},rickey:{},rotgut:{},sacrum:{},salami:{},saliva:{},samosa:{},sapota:{},scampi:{},scampo:{},sclera:{},scruff:{},seckel:{},serosa:{},shandy:{},sherry:{},silage:{},skilly:{},smegma:{},soleus:{},sorbet:{},sputum:{},stapes:{},stodge:{},succus:{},sulcus:{},sundae:{},sutura:{},tahini:{},tamale:{},tarsus:{},tendon:{},testis:{},thymus:{},tidbit:{},tiffin:{},tisane:{},titbit:{},toffee:{},tonsil:{},tragus:{},troche:{},tubule:{},tunica:{},unguis:{},ureter:{},uterus:{},vagina:{},veggie:{},venula:{},venule:{},vermis:{},vesica:{},viscus:{},vitals:{},waters:{},whisky:{},wiener:{},yogurt:{},zaatar:{},zonula:{},zonule:{},zygoma:{},zygote:{},absinth:{},akvavit:{},aniseed:{},aquavit:{},arteria:{},ashcake:{},baklava:{},bannock:{},beignet:{},keen:{},rage:{},wish:{},aside:{},chafe:{},gloss:{},tense:{},whole:{},worry:{},effect:{},reject:{},riddle:{},snatch:{},speech:{},closure:{},collect:{},romance:{},flourish:{},classical:{},influence:{},substance:{},reflection:{},inclination:{},recognition:{},dot:{},nod:{},blur:{},itch:{},slur:{},solo:{},wink:{},abuse:{},acute:{},alert:{},angle:{},bluff:{},cheer:{},honor:{},humor:{},lyric:{},snarl:{},tally:{},accent:{},degree:{},detail:{},indent:{},matter:{},patent:{},rubric:{},thrill:{},abandon:{},bluster:{},concern:{},concord:{},formula:{plural:"formulae"},imprint:{},nominal:{},quality:{},reading:{},sputter:{},torture:{},wrinkle:{},contrast:{},estimate:{},harmonic:{},judgment:{},reaction:{},sanction:{},singular:{},straddle:{},construct:{},judgement:{},reflexion:{},rendering:{},universal:{},acceptance:{},discipline:{},irritation:{},regulation:{},relaxation:{},submission:{},application:{},replication:{},construction:{},introduction:{},presentation:{},cant:{},code:{},joke:{},pain:{},stab:{},trot:{},will:{},blame:{},brief:{},dodge:{},fancy:{},glide:{},grasp:{},guess:{},quote:{},scent:{},slant:{},snort:{},swoop:{},theme:{},trial:{},vocal:{},accord:{},affect:{},cancel:{},debate:{},desire:{},heroic:{},murmur:{},phrase:{},resume:{},scream:{},serial:{},tangle:{},closing:{},dissent:{},drawing:{},example:{},exhibit:{},fatigue:{},feeling:{},mention:{},partial:{},posture:{},protest:{},regress:{},telling:{},welcome:{},absolute:{},analysis:{plural:"analyses"},distress:{},pastoral:{},platform:{},temporal:{},agreement:{},attention:{},beginning:{},closeness:{},connexion:{},dimension:{},discourse:{},lightness:{},principle:{},surrender:{},assignment:{},coordinate:{},involution:{},abstraction:{},arrangement:{},conjunction:{},declaration:{},penetration:{},proposition:{},realisation:{},realization:{},condensation:{},consideration:{},no:{},cue:{},fun:{},rub:{},bias:{},gift:{},hoot:{},jazz:{},oral:{},snub:{},text:{},tune:{},urge:{},coast:{},craze:{},daily:{},debut:{},dowse:{},funny:{},logic:{},mercy:{},peace:{},rerun:{},samba:{},slang:{},taboo:{},verse:{},whine:{},words:{},aspect:{},babble:{},canker:{},choice:{},clamor:{},denial:{},device:{},esteem:{},format:{},lament:{},manual:{},menace:{},normal:{},pardon:{},regret:{},skinny:{},sorrow:{},tickle:{},twinge:{},vision:{},warmth:{},caution:{},charter:{},conceit:{},cunning:{},delight:{},dictate:{},discord:{},finance:{},harmony:{},keynote:{},knowing:{},leaning:{},lecture:{},mistake:{},musical:{},offense:{},palaver:{},preempt:{},purpose:{},pyrrhic:{},realism:{},sharing:{},texture:{},worship:{},writing:{},aspirate:{},biweekly:{},blessing:{},citation:{},despatch:{},dullness:{},feminine:{},flatness:{},geminate:{},manifest:{},personal:{},pleasure:{},politics:{},singsong:{},yielding:{},agitation:{},attrition:{},bimonthly:{},broadcast:{},confusion:{},deviation:{},disregard:{},education:{},faintness:{},heaviness:{},imitation:{},indenture:{},interview:{},isolation:{},isometric:{},minuscule:{},portrayal:{},predicate:{},provision:{},screaming:{},signature:{},spiritual:{},throwaway:{},tightness:{},accounting:{},aggression:{},assumption:{},attraction:{},commercial:{},compromise:{},confession:{},confidence:{},conformity:{},conveyance:{},detachment:{},difference:{},discretion:{},imperative:{},mellowness:{},modulation:{},tenderness:{},uneasiness:{},awkwardness:{},discernment:{},elimination:{},endorsement:{},examination:{},fabrication:{},familiarity:{},implication:{},indorsement:{},involvement:{},observation:{},obstruction:{},performance:{},requisition:{},sensitivity:{},testimonial:{},appreciation:{},articulation:{},condemnation:{},confirmation:{},deliberation:{},intervention:{},satisfaction:{},confrontation:{},decomposition:{},determination:{},reinforcement:{},understanding:{},characteristic:{},correspondence:{},sophistication:{},transformation:{},rationalisation:{},rationalization:{},dub:{},fog:{},bold:{},buoy:{},dare:{},daze:{},envy:{},gape:{},okay:{},plus:{},rasp:{},rime:{},role:{},tabu:{},yell:{},above:{},affix:{},agape:{},chord:{},croak:{},doubt:{},email:{},essay:{},folly:{},idiom:{},laugh:{},modal:{},panic:{},posit:{},rhyme:{},rider:{},rumba:{},scare:{},scorn:{},sneer:{},trill:{},truth:{},wince:{},adagio:{},binary:{},daring:{},defeat:{},dismay:{},docket:{},filing:{},flavor:{},giving:{},gospel:{},lesson:{},median:{},neuter:{},notion:{},parody:{},parole:{},plight:{},rebuff:{},rhumba:{},sample:{},shiver:{},solace:{},trance:{},unseen:{},vanity:{},vector:{},amnesty:{},anguish:{},arousal:{},bucolic:{},caption:{},catalog:{},contour:{},descant:{},disdain:{},dispute:{},fantasy:{},flavour:{},glimpse:{},insight:{},languor:{},licence:{},marking:{},overbid:{},prelude:{},probate:{},purport:{},pursuit:{},reality:{},receipt:{},recital:{},riposte:{},splurge:{},sticker:{},summons:{},wrangle:{},approval:{},buoyancy:{},converse:{},coolness:{},covenant:{},crotchet:{},devotion:{},dialogue:{},emphasis:{},esthetic:{},excision:{},fairness:{},fixation:{},forecast:{},hieratic:{},identity:{},illusion:{},integral:{},monotone:{},offering:{},paradigm:{},premiere:{},printing:{},referent:{},rescript:{},research:{},rhetoric:{},schedule:{},skimming:{},sleeping:{},speaking:{},splutter:{},streamer:{},tendency:{},topology:{},vexation:{},wildness:{},adjective:{},aesthetic:{},assurance:{},burlesque:{},catalogue:{},correlate:{},detection:{},discovery:{},dismissal:{},exclusion:{},exclusive:{},expansion:{},impromptu:{},inaugural:{},indicator:{},intensive:{},interdict:{},largeness:{},masculine:{},paragraph:{},partitive:{},pragmatic:{},prevision:{},quarterly:{},quotation:{},readiness:{},rendition:{},reverence:{},roundness:{},safeguard:{},suspicion:{},sweetness:{},thickness:{},trademark:{},antagonism:{},aspiration:{},bitterness:{},coarseness:{},collection:{},conjecture:{},deposition:{},estimation:{},excitement:{},gloominess:{},impossible:{},incitement:{},invocation:{},inwardness:{},literature:{},morphology:{},narrowness:{},nominative:{},observance:{},possessive:{},postmortem:{},preemption:{},preference:{},profession:{},profundity:{},recitation:{},redundancy:{},abnormality:{},acquisition:{},affirmation:{},affirmative:{},alternative:{},bombardment:{},commutation:{},concurrence:{},convergence:{},countenance:{},disposition:{},distinction:{},distraction:{},enlargement:{},expectation:{},fingerprint:{},indentation:{},instruction:{},nationalism:{},possibility:{},presumption:{},publication:{},spectacular:{},speculation:{},substantive:{},superlative:{},unconscious:{},unitisation:{},unitization:{},anticipation:{},apprehension:{},circumstance:{},continuation:{},coordination:{},countercheck:{},distribution:{},hieroglyphic:{},illustration:{},intimidation:{},misdirection:{},overestimate:{},precondition:{},renunciation:{},approximation:{},authorisation:{},authorization:{},certification:{},falsification:{},interrogative:{},nonconformity:{},reduplication:{},sensitiveness:{},sequestration:{},superposition:{},underestimate:{},capitalisation:{},capitalization:{},generalisation:{},generalization:{},perceptiveness:{},recapitulation:{},sensationalism:{},awe:{},bop:{},ego:{},hex:{},jot:{},lit:{},nub:{},vow:{},beta:{},brag:{},clue:{},cull:{},elan:{},epic:{},funk:{},fury:{},gibe:{},hymn:{},jibe:{},leer:{},lust:{},mood:{},oath:{},pang:{},plea:{},quip:{},rant:{},riff:{},visa:{},zeal:{},zest:{},alibi:{},badge:{},basis:{plural:"bases"},bravo:{},carol:{},chant:{},chaos:{},conga:{},delta:{},demur:{},dread:{},fable:{},flair:{},fugue:{},given:{},gloat:{},gloom:{},hunch:{},infix:{},irony:{},largo:{},least:{},libel:{},magic:{},moral:{},polka:{},reply:{},sally:{},spiel:{},spook:{},stymy:{},tango:{},usage:{},velar:{},vigil:{},whoop:{},affair:{},airing:{},ardour:{},ballot:{},bathos:{},beauty:{},bellow:{},bowing:{},curtsy:{},deceit:{},dental:{},dialog:{},gambit:{},gibber:{},grudge:{},halloo:{},insult:{},intent:{},italic:{},kowtow:{},labial:{},latest:{},manner:{},mumble:{},naming:{},outcry:{},pathos:{},piffle:{},plural:{},policy:{},praise:{},raving:{},rehash:{},revise:{},scalar:{},scroll:{},seeing:{},shriek:{},sonnet:{},stymie:{},tattle:{},theory:{},tingle:{},tumult:{},upbeat:{},urging:{},wangle:{},weekly:{},wheeze:{},yearly:{},acclaim:{},acidity:{},airmail:{},analogy:{},apology:{},barrage:{},barrier:{},bidding:{},bonding:{},buildup:{},cadence:{},cartoon:{},censure:{},clutter:{},concert:{},cruelty:{},despair:{},disgust:{},dodging:{},earmark:{},embargo:{},enquiry:{},erasure:{},eristic:{},fluency:{},gradual:{},gravity:{},initial:{},inquiry:{},lingual:{},loyalty:{},mastery:{},mimesis:{},monthly:{},numeral:{},omnibus:{},outlook:{},palatal:{},placard:{},polemic:{},posting:{},presage:{},preview:{},quibble:{},refrain:{},reissue:{},reorder:{},reprint:{},rewrite:{},roundup:{},singing:{},slander:{},sorting:{},tasting:{},tribute:{},turmoil:{},whisper:{},ablative:{},acridity:{},allegory:{},alveolar:{},ambition:{},ascender:{},audition:{},binomial:{},brandish:{},brooding:{},bundling:{},calculus:{},circular:{},clipping:{},coldness:{},courtesy:{},critique:{},daydream:{},defiance:{},delusion:{},demurrer:{},disfavor:{},disquiet:{},dynamism:{},easiness:{},equation:{},fondness:{},grasping:{},grouping:{},guidance:{},guttural:{},hornpipe:{},hysteria:{},idealism:{},intimacy:{},mistrust:{},monition:{},negation:{},nickname:{},nihilism:{},notation:{},ordinate:{},outburst:{},particle:{},passport:{},pedagogy:{},petition:{},phantasy:{},planning:{},playbook:{},proposal:{},revision:{},rhapsody:{},ridicule:{},sampling:{},serenade:{},slowness:{},sourness:{},subtitle:{},suspense:{},sympathy:{},tartness:{},teaching:{},theology:{},travesty:{},universe:{},acuteness:{},addiction:{},adoration:{},attending:{},autograph:{},constancy:{},crispness:{},cuneiform:{},deception:{},defensive:{},denseness:{},dialectic:{},dictation:{},digestion:{},diplomacy:{},disfavour:{},editorial:{},emulation:{},enactment:{},evocation:{},fecundity:{},footprint:{},formalism:{},formative:{},gradation:{},grievance:{},grumbling:{},guideline:{},immediacy:{},insurance:{},intention:{},intercept:{},invariant:{},itinerary:{},lassitude:{},majuscule:{},misgiving:{},monologue:{},morbidity:{},murmuring:{},narration:{},nutrition:{},ordinance:{},oversight:{},pictorial:{},pizzicato:{},prejudice:{},quadratic:{},quickness:{},quickstep:{},reckoning:{},reflexive:{},rejoicing:{},repulsion:{},retention:{},retrieval:{},revealing:{},saltiness:{},schooling:{},sentience:{},sulkiness:{},synthesis:{},testament:{},testimony:{},underline:{},undertone:{},accidental:{},accusative:{},adaptation:{},admiration:{},affixation:{},allurement:{},anatomical:{},antiphonal:{},asceticism:{},belittling:{},brightness:{},brilliance:{},chronology:{},classified:{},cleverness:{},clumsiness:{},cognizance:{},compliment:{},concession:{},conscience:{},conspiracy:{},contention:{},continuity:{},decoration:{},determiner:{},deterrence:{},digression:{},diminution:{},discontent:{},dissection:{},dissonance:{},divination:{},empiricism:{},enthusiasm:{},enticement:{},equivalent:{},execration:{},fortissimo:{},grogginess:{},hesitation:{},humbleness:{},hypostasis:{},hypothesis:{plural:"hypotheses"},impatience:{},infliction:{},insistence:{},instalment:{},intermezzo:{},jocularity:{},loneliness:{},neutrality:{},nomination:{},oppression:{},perfection:{},pestilence:{},philosophy:{},precaution:{},pretension:{},propensity:{},refutation:{},reputation:{},revelation:{},rumination:{},salutation:{},semiweekly:{},stigmatism:{},theatrical:{},triviality:{},underscore:{},unfairness:{},vernacular:{},vocabulary:{},whispering:{},acceptation:{},advancement:{},aggravation:{},appellative:{},benevolence:{},calculation:{},comparative:{},concordance:{},conjunctive:{},conjuration:{},correlation:{},correlative:{},countersign:{},denigration:{},designation:{},discourtesy:{},documentary:{},electricity:{},enchantment:{},engrossment:{},exclamation:{},explanation:{},exploration:{},foolishness:{},frustration:{},imperialism:{},infatuation:{},inscription:{},jactitation:{},obfuscation:{},outwardness:{},peculiarity:{},playfulness:{},presentment:{},propagation:{},provocation:{},rationalism:{},regionalism:{},repudiation:{},resignation:{},rotogravure:{},semimonthly:{},sensibility:{},seriousness:{},stipulation:{},strangeness:{},subcontract:{},supposition:{},syncopation:{},titillation:{},tranquility:{},unorthodoxy:{},unsoundness:{},valedictory:{},breakthrough:{},choreography:{},conciliation:{},constitution:{},consultation:{},counterpoint:{},covetousness:{},depreciation:{},faultfinding:{},heedlessness:{},helplessness:{},idealisation:{},idealization:{},impertinence:{},intoxication:{},irritability:{},mercifulness:{},notification:{},pacification:{},processional:{},promulgation:{},proportional:{},recollection:{},retroflexion:{},retroversion:{},significance:{},solicitation:{},spiritualism:{},stupefaction:{},supplication:{},transference:{},acculturation:{},attentiveness:{},communication:{},comprehensive:{},condescension:{},contradiction:{},demonstrative:{},determinative:{},documentation:{},hallucination:{},impersonation:{},individualism:{},interpolation:{},orchestration:{},preoccupation:{},prevarication:{},qualification:{},retentiveness:{},retroflection:{},structuralism:{},symbolisation:{},symbolization:{},versification:{},aggressiveness:{},categorisation:{},demoralisation:{},demoralization:{},farsightedness:{},predisposition:{},recommendation:{},reconstruction:{},sesquipedalian:{},simplification:{},traditionalism:{},conventionality:{},crystallization:{},personification:{},prognostication:{},characterization:{},predetermination:{},pi:{},xi:{},boo:{},bye:{},dit:{},fib:{},ire:{},ken:{},nay:{},pic:{},psi:{},pun:{},wai:{},woe:{},yea:{},blip:{},blog:{},deed:{},demo:{},epos:{},gist:{},grin:{},heed:{},idyl:{},iota:{},jive:{},moan:{},muse:{},norm:{},noun:{},nous:{},odor:{},pean:{},ploy:{},pomp:{},quiz:{},sass:{},sext:{},spam:{},sulk:{},surd:{},tale:{},trig:{},vlog:{},whim:{},yack:{},yoga:{},agony:{},alias:{},aroma:{},axiom:{},bebop:{},blues:{},bonus:{},canto:{},codex:{},creed:{},ditto:{},dogma:{},drawl:{},edict:{},ethic:{},facet:{},fever:{},frown:{},gamma:{},gamut:{},grief:{},groan:{},guilt:{},intro:{},kotow:{},macro:{},odour:{},omega:{},paean:{},pavan:{},peeve:{},prate:{},primo:{},prose:{},psalm:{},qualm:{},retro:{},rumor:{},savvy:{},scowl:{},shrug:{},skill:{},smirk:{},danger:{},push:{},refusal:{},tooling:{},trelvox:{}},verbs:{import:{},call:{},test:{},contain:{},extend:{},use:{},depend:{prep:"on"},rely:{prep:"on"},inherit:{prep:"from"},belong:{prep:"to",predicate:"mgx:partOf"},point:{prep:"to"},implement:{},override:{},export:{},define:{},declare:{},reference:{},invoke:{},wrap:{},mock:{},cover:{},document:{},describe:{},modify:{},touch:{},fix:{},break:{},introduce:{},deprecate:{},replace:{},own:{},maintain:{},review:{},merge:{},revert:{},deploy:{},run:{},execute:{},load:{},parse:{},emit:{},validate:{},log:{},throw:{},catch:{},create:{},delete:{},update:{},expose:{},consume:{},produce:{},generate:{},configure:{},install:{},publish:{},release:{},ship:{},watch:{},trigger:{},build:{},write:{},read:{},have:{},like:{},want:{},need:{},believe:{},trust:{},love:{},hate:{},fear:{},hope:{},teach:{},learn:{},drive:{},cook:{},sing:{},visit:{},care:{},grow:{},marry:{},wear:{},eat:{},sleep:{},walk:{},buy:{},sell:{},give:{},take:{},meet:{},ride:{},speak:{},duck:{}},adjectives:{legacy:{type:"subclass"},mock:{type:"subclass"},senior:{type:"subclass"},internal:{type:"subclass"},external:{type:"subclass"},public:{type:"subclass"},private:{type:"subclass"},abstract:{type:"subclass"},static:{type:"subclass"},async:{type:"subclass"},experimental:{type:"subclass"},stable:{type:"subclass"},core:{type:"subclass"},shared:{type:"subclass"},global:{type:"subclass"},local:{type:"subclass"},generated:{type:"subclass"},standalone:{type:"subclass"},primary:{type:"subclass"},secondary:{type:"subclass"},deprecated:{type:"data"},fast:{type:"data"},slow:{type:"data"},large:{type:"data"},small:{type:"data"},flaky:{type:"data"},tested:{type:"data"},documented:{type:"data"},buggy:{type:"data"},broken:{type:"data"},green:{type:"data"},deterministic:{type:"data"},pure:{type:"data"},empty:{type:"data"},stale:{type:"data"},male:{type:"data"},female:{type:"data"},young:{type:"data"},old:{type:"data"},hot:{type:"data"},cold:{type:"data"},sweet:{type:"data"},salty:{type:"data"},sharp:{type:"data"},round:{type:"data"},tall:{type:"data"},short:{type:"data"},happy:{type:"data"},sad:{type:"data"},angry:{type:"data"},afraid:{type:"data"},strong:{type:"data"},weak:{type:"data"},rich:{type:"data"},poor:{type:"data"},hard:{type:"data"},soft:{type:"data"},wild:{type:"data"},gentle:{type:"data"},colorful:{type:"data"},legitimate:{type:"data"},ranked:{type:"data"},related:{type:"data"},sacred:{type:"data"},unaffected:{type:"data"}},properNames:["tmct","Node","npm","JavaScript","TypeScript","Python","Java","Git","GitHub","GitLab","ESLint","Linux","macOS","Windows","Polycode","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"]}});var hx={};Nt(hx,{CODE_REF_SHAPE:()=>xu,DETERMINERS:()=>sm,OF_CLASSIFIER_HEADS:()=>rm,OF_PARTITIVE_HEADS:()=>im,QUANTIFIERS:()=>om,classify:()=>am,loadLexicon:()=>an,lookupAdjective:()=>Ma,lookupNoun:()=>bn,lookupProperName:()=>$i,lookupVerb:()=>Pa,numberOf:()=>La,predicateOf:()=>Eu,readsAsIndividualName:()=>ku,thirdPerson:()=>dx,withProperNames:()=>px});function La(e){let t=String(e??"").trim().toLowerCase();return/^\d+$/.test(t)?Number(t):GP[t]??null}function dx(e){let t=String(e);return t==="have"?"has":/[^aeiou]y$/.test(t)?`${t.slice(0,-1)}ies`:/(s|x|z|ch|sh)$/.test(t)?`${t}es`:`${t}s`}function Eu(e,t=ux){if(e.predicate)return e.predicate;let n=e.prep?e.prep[0].toUpperCase()+e.prep.slice(1):"";return`${t}${dx(e.lemma)}${n}`}function fx(e){let t=String(e),n=[t];return t.length>4&&/[a-z]ies$/.test(t)&&n.push(`${t.slice(0,-3)}y`),/(ses|xes|zes|ches|shes)$/.test(t)&&n.push(t.slice(0,-2)),/[a-z]s$/.test(t)&&!/ss$/.test(t)&&n.push(t.slice(0,-1)),t==="has"&&n.push("have"),n}function lx(e,t={}){for(let[n,s]of Object.entries(t.nouns||{})){let o={lemma:n,...s||{}};if(o.property&&!VP.has(o.property))throw new Error(`lexicon noun "${n}": property must be "data" or "object", got ${JSON.stringify(o.property)}`);e.nouns.set(n,o),o.plural&&e.nounPlurals.set(o.plural,n)}for(let[n,s]of Object.entries(t.verbs||{}))e.verbs.set(n,{lemma:n,...s||{}});for(let[n,s]of Object.entries(t.adjectives||{})){let o={lemma:n,...s||{}};if(!KP.has(o.type))throw new Error(`lexicon adjective "${n}": type must be "subclass" or "data", got ${JSON.stringify(o.type)}`);e.adjectives.set(n,o)}for(let n of t.properNames||[])e.properNames.set(String(n).toLowerCase(),String(n))}function an(e,t=ux){if(!e&&nm.has(t))return nm.get(t);let n=cx,s={nouns:new Map,nounPlurals:new Map,verbs:new Map,adjectives:new Map,properNames:new Map,ns:t};return lx(s,n),e?(lx(s,e),s):(nm.set(t,s),s)}function px(e,t){let n=new Map(e.properNames);for(let s of t)n.set(String(s).toLowerCase(),String(s));return{...e,properNames:n}}function bn(e,t,n={}){return HP(e,t,n)[0]??null}function HP(e,t,n={}){let s=String(t??"").toLowerCase(),o=e.nouns.get(s),r=e.nounPlurals.get(s),i=[],a=new Set,c=l=>{l&&!a.has(l.lemma)&&(a.add(l.lemma),i.push(l))};if(r){let l=e.nouns.get(r)??null;return n.singularOnly&&o?(c(o),c(l)):(c(l),c(o)),i}for(let l of fx(s))c(e.nouns.get(l));return i}function Pa(e,t){return qP(e,t)[0]??null}function qP(e,t){let n=String(t??"").toLowerCase(),s=[],o=new Set;for(let r of fx(n)){let i=e.verbs.get(r);i&&!o.has(i.lemma)&&(o.add(i.lemma),s.push(i))}return s}function Ma(e,t){return e.adjectives.get(String(t??"").toLowerCase())??null}function $i(e,t){return e.properNames.get(String(t??"").toLowerCase())??null}function ku(e,t){let n=String(e??"");if(!n)return!1;if($i(t,n)||xu.test(n)||/^[a-z][\w]*(?:-[\w]+)+$/i.test(n)||/^[A-Z]/.test(n))return!0;let s=bn(t,n);return s?s.lemma.toLowerCase()!==n.toLowerCase():!0}function am(e,t=an()){let n=String(e??"").trim();if(!n)return null;let s=n.toLowerCase();if(sm[s])return{pos:"determiner",type:sm[s]};if(om[s])return{pos:"quantifier",type:om[s]};let o=La(s);if(o!=null)return{pos:"number",type:"cardinal",value:o};let r=$i(t,n);if(r)return{pos:"properName",type:"individual",canonical:r};let i=bn(t,s);if(i)return i.property?{pos:"noun",type:`${i.property}-property`,lemma:i.lemma,property:i.property}:{pos:"noun",type:"class",lemma:i.lemma};let a=Pa(t,s);if(a)return{pos:"verb",type:"objectProperty",lemma:a.lemma,predicate:Eu(a,t.ns),...a.prep?{prep:a.prep}:{}};let c=Ma(t,s);return c?{pos:"adjective",type:c.type,lemma:c.lemma}:null}var ux,sm,om,rm,im,GP,VP,KP,nm,xu,ts=L(()=>{ax();ux="tmct:",sm=Object.freeze({every:"universal",a:"indefinite",an:"indefinite",the:"definite",no:"negative"}),om=Object.freeze({"at least":"owl:minCardinality","at most":"owl:maxCardinality",exactly:"owl:cardinality"}),rm=Object.freeze(new Set(["type","kind","sort","form","class","variety","species","breed","genus"])),im=Object.freeze(new Set(["body","mass","group","collection","set","series","number","amount","piece","part","lot","pair","bunch","pile"])),GP=Object.freeze({one:1,two:2,three:3,four:4,five:5,six:6,seven:7,eight:8,nine:9,ten:10});VP=new Set(["data","object"]),KP=new Set(["subclass","data"]);nm=new Map;xu=/[./\\#:@]/});var i4,a4,c4,YP,l4,u4,d4,mx=L(()=>{us();Fe();i4=Object.freeze({class:"Class",module:"Module",function:"Function",method:"Method",attribute:"Attribute",variable:"GlobalVariable",constant:"GlobalVariable",commit:"Commit"}),a4=Object.freeze({Class:["class","classes"],Module:["module","modules"],Function:["function","functions"],Method:["method","methods"],Attribute:["attribute","attributes"],GlobalVariable:["variable","variables"],Commit:["commit","commits"]}),c4=Object.freeze({Class:[e=>`which classes inherit from ${e}`,e=>`what does ${e} contain`,e=>`where is ${e} defined`],Module:[e=>`what does ${e} import`,e=>`which modules import ${e}`,e=>`where is ${e} defined`],Function:[e=>`what calls ${e}`,e=>`what does ${e} call`,e=>`where is ${e} defined`],Method:[e=>`which class contains ${e}`,e=>`what calls ${e}`,e=>`where is ${e} defined`],Attribute:[e=>`which class contains ${e}`,e=>`where is ${e} defined`],GlobalVariable:[e=>`where is ${e} defined`,e=>`where is ${e} mentioned`],Commit:[e=>`what did commit ${e} touch`,e=>`when did ${e} change`]}),YP=Object.freeze({import:"imports",imports:"imports",importing:"imports",imported:"imports",call:"calls",calls:"calls",calling:"calls",called:"calls",invoke:"calls",invokes:"calls",invoking:"calls",contain:"contains",contains:"contains",containing:"contains",containment:"contains",member:"contains",members:"contains",inherit:"inherits",inherits:"inherits",inheriting:"inherits",inheritance:"inherits",extend:"inherits",extends:"inherits",extending:"inherits",subclass:"inherits",subclasses:"inherits",subclassing:"inherits",test:"tests",tests:"tests",testing:"tests",tested:"tests",coverage:"tests",define:"defines",defines:"defines",defining:"defines",defined:"defines",definition:"defines",definitions:"defines",declaration:"defines",touch:"touches",touches:"touches",touching:"touches",touched:"touches",cochange:"cochange","co-change":"cochange","change-coupling":"cochange",coupled:"cochange",export:"reexports",exports:"reexports",exporting:"reexports",exported:"reexports",reexport:"reexports",reexports:"reexports",reexporting:"reexports","re-export":"reexports","re-exports":"reexports","re-exporting":"reexports",serve:"serves",serves:"serves",serving:"serves",served:"serves",denote:"denotes",denotes:"denotes",denoting:"denotes",denoted:"denotes"}),l4=Object.freeze({imports:["imports"],calls:["calls","callsSymbol"],contains:["contains"],inherits:["inherits"],tests:["tests"],defines:["defines"],touches:["touches","touchesSymbol"],cochange:["cochange"],reexports:["reexports"],serves:["serves"],denotes:["denotes"]}),u4=Object.freeze({imports:{verb:"imports",edgeNoun:"import"},calls:{verb:"calls",edgeNoun:"call"},contains:{verb:"contains",edgeNoun:"containment"},inherits:{verb:"inherits from",edgeNoun:"inheritance"},tests:{verb:"tests",edgeNoun:"test"},defines:{verb:"defines",edgeNoun:"definition"},touches:{verb:"touches",edgeNoun:"touch"},cochange:{verb:"changes together with",edgeNoun:"change-coupling"},reexports:{verb:"re-exports",edgeNoun:"re-export"},serves:{verb:"serves",edgeNoun:"service"},denotes:{verb:"denotes",edgeNoun:"denotation"}}),d4=Object.freeze({imports:[{side:"obj",make:e=>`which modules import ${e}`},{side:"subj",make:e=>`what does ${e} import`}],calls:[{side:"obj",make:e=>`what calls ${e}`},{side:"subj",make:e=>`what does ${e} call`}],contains:[{side:"subj",make:e=>`what does ${e} contain`},{side:"obj",make:e=>`which class contains ${e}`}],inherits:[{side:"obj",make:e=>`which classes inherit from ${e}`},{side:"subj",make:e=>`where is ${e} defined`}],tests:[{side:"obj",make:e=>`what tests ${e}`},{side:"obj",make:e=>`where is ${e} defined`}],defines:[{side:"obj",make:e=>`where is ${e} defined`},{side:"subj",make:e=>`what does ${e} contain`}],touches:[{side:"obj",make:e=>`when did ${e} change`},{side:"subj",make:e=>`what did commit ${e} touch`}],cochange:[{side:"obj",make:e=>`where is ${e} defined`},{side:"subj",make:e=>`which modules import ${e}`}],reexports:[{side:"subj",make:e=>`what does ${e} export`},{side:"obj",make:e=>`where is ${e} defined`}],serves:[{side:"subj",make:e=>`what does ${e} serve`},{side:"obj",make:e=>`what serves ${e}`}],denotes:[{side:"subj",make:e=>`what does ${e} denote`},{side:"obj",make:e=>`what denotes ${e}`}]})});function wx(e){return!!e&&typeof e=="object"&&typeof e.s=="string"&&XP.test(e.s)&&typeof e.t=="string"&&e.t.length>0&&Number.isInteger(e.r)&&e.r>0}function _o(e){if(!e||typeof e!="object")return!1;for(let t of["term","title","text","summary","url"])if(typeof e[t]!="string"||!e[t])return!1;if(!Number.isInteger(e.revid)||e.revid<=0)return!1;for(let t of["isa","source","licence"])if(e[t]!==void 0&&(typeof e[t]!="string"||!e[t]))return!1;return!0}function Ru(e,t){let n=String(e??"").split(/(?<=[.!?])\s+/),s="";for(let o of n){let r=s?`${s} ${o}`:o;if(r.length>t)break;s=r}return s||String(e??"").slice(0,t)}function QP(e){let t=e,n;do n=t,t=t.replace(/\s*\([^()]*\)/g,"");while(t!==n);return t}function bx(e,t){let n=bn(t,e);return n?V(n.lemma):e}function yx(e,t){let n=QP(String(e??"")).match(JP);if(!n)return null;let s=!n[1],o=[];for(let u of n[2].trim().split(/\s+/))if(ZP.has(u)||(o.push(u),o.length>=6))break;let r=o;for(let u=r.indexOf("of");u>0;u=r.indexOf("of")){let d=r[u-1]?.split("-").pop(),p=d&&bx(d,t);if(p&&(tM.has(p)||nM.has(p))){r=r.slice(u+1);continue}r=r.slice(0,u);break}for(;r.length&&eM.has(r[0]);)r=r.slice(1);if(!r.length)return null;let i=r[r.length-1].split("-").pop();if(!i)return null;let a=bx(i,t);if(gx.has(i)||gx.has(a))return null;let c=bn(t,i);if(!c)return null;let l=V(c.lemma);return s&&(!/s$/.test(i)||V(i)===l)?null:l}var XP,ju,JP,ZP,gx,eM,tM,nM,br=L(()=>{Ve();ts();mx();XP=/^ref-[0-3][0-9a-f]$/;ju=400;JP=/^[A-Z][^.!?]*? (?:is|are) (?:(a|an|the) )?([a-z][a-z -]{1,60})/;ZP=new Set(["that","which","where","who","whose","whom","when","used","found","made","with","in","on","for","from","by","to","and","or","about","around","roughly","approximately"]),gx=new Set(["type","kind","sort","form","class","variety","group","part","piece","member","way","term","name","word","thing","example","family","genus","species","unit","series","set","list","number","amount","body","mass"]),eM=new Set(["a","an","the"]),tM=new Set(["type","kind","sort","form","class","variety","species","breed","genus","group","part","parts","piece","bunch","bit","name","set","way","unit","family","ability","color","series","mammal","practice","list","amount","mass","reworking","blockage","goddess","aura","development","consisting","announcement","messengers","subset","carrying","photograph","adding","use","science","songbird","symptom","accumulation","number","suborder","falling","management","evaluation","superorder","activity","interlacing","introduction"]),nM=new Set(["either","one","each","both","any"])});var wr,Fa=L(()=>{wr=()=>{throw new Error("gunzipSync unavailable in a browser bundle")}});function $x(e=process.env){return e?.TMCT_REFERENCE_PACK_DIR||ne(sM,"corpus","reference")}function Sx(e){try{return wr(Zs(e))}catch{return null}}function um(e){if(cm.has(e))return cm.get(e);let t=null,n=Sx(ne(e,"index.json.gz"));if(n)try{let s=JSON.parse(n.toString("utf8"));s&&typeof s=="object"&&!Array.isArray(s)&&(t=s)}catch{}return cm.set(e,t),t}function oM(e,t){let n=`${e}\0${t}`;if(lm.has(n))return lm.get(n);let s=null,o=Sx(ne(e,"shards",`${t}.jsonl.gz`));if(o){s=new Map;for(let r of o.toString("utf8").split(`
|
|
169
|
+
`))if(r.trim())try{let i=JSON.parse(r);_o(i)&&s.set(i.term,i)}catch{}}return lm.set(n,s),s}function dm(e,t){let n=um(e);if(!n)return null;let s=n[String(t??"")];return wx(s)?oM(e,s.s)?.get(s.t)??null:null}var rM,sM,cm,lm,fm=L(()=>{Ro();Fa();jo();Qe();br();rM={},sM=ne(Se(tn(rM.url)),"..","..","..");cm=new Map,lm=new Map});function aM(e){if(!e||typeof e!="object")return!1;for(let t of["subject","predicate","object","provenance"])if(typeof e[t]!="string"||!e[t])return!1;return iM.includes(e.predicate)}function vx(e){return _o(e)?e.facts===void 0?!0:Array.isArray(e.facts)&&e.facts.length>0&&e.facts.every(aM):!1}function yr(e,t){return`research:${e}:${V(t).replace(/ /g,"_")}`}function Si(e){if(!e||typeof e.name!="string"||!e.name||typeof e.create!="function")throw new Error("registerResearchSource: expected { name, create(options) }");cM.set(e.name,{name:e.name,create:e.create})}var iM,cM,j4,R4,$r=L(()=>{Ve();br();iM=Object.freeze(["rdf:type","rdfs:subClassOf","mgx:partOf","mgx:hasA","mgx:usedFor","mgx:capableOf","mgx:atLocation","mgx:causes","mgx:madeOf","mgx:createdBy","mgx:locatedNear","mgx:hasProperty"]);cM=new Map;j4=Object.freeze(["wikipedia","wikidata","simple-wikipedia","simple-wikipedia-pack","wiktionary","dbpedia"]),R4=Object.freeze({wikipedia:"simple-wikipedia",wikidata:"wikidata","simple-wikipedia":"simple-wikipedia","simple-wikipedia-pack":"simple-wikipedia-pack",wiktionary:"wiktionary",dbpedia:"dbpedia-lookup"})});function Ex(e){let t=Number(e);return Number.isFinite(t)?t===408||t===429||t>=500:!1}var T4,_u=L(()=>{T4=Object.freeze({failureThreshold:5,windowMs:6e4,cooldownMs:6e4})});function Ba({fetchImpl:e,timeoutMs:t=vi,minIntervalMs:n=nn,retryAfterFloorMs:s=lM,maxFetchesPerTurn:o=uM,userAgent:r,waitForSlot:i=!1,validators:a=null}={}){let c=e??((...x)=>globalThis.fetch(...x)),l=new Map,u=0,d=0,p=!1,f=0,h=0,m=0,b=!1,g=!1,w=()=>{if(!r)return null;let x={"Api-User-Agent":r};return typeof document>"u"&&(x["User-Agent"]=r),x};function y(x){let j=Number(x)*1e3;d=Date.now()+Math.max(j||0,s)}function S(x){let j=a?.get(x);if(!j)return null;let M={};return j.etag&&(M["If-None-Match"]=j.etag),j.lastModified&&(M["If-Modified-Since"]=j.lastModified),Object.keys(M).length?M:null}function T(x,j){if(!a)return;let M=j.headers?.get?.("etag")??"",D=j.headers?.get?.("last-modified")??"";if(!M&&!D)return;let H=a.get(x)??{};a.set(x,{etag:M||H.etag||"",lastModified:D||H.lastModified||""})}async function v(x,{asJson:j}){if(b&&m>=o)return g=!0,null;f+=1,m+=1;let M=typeof AbortController=="function"?new AbortController:null,D=M?setTimeout(()=>M.abort(),t):null;try{let H={};M&&(H.signal=M.signal);let Y={...w()??{},...S(x)??{}};Object.keys(Y).length&&(H.headers=Y);let Z;try{Z=await c(x,H)}catch{return h+=1,null}if(Z.status===429)return y(Z.headers?.get?.("retry-after")),h+=1,null;if(Z.status===304)return a?{notModified:!0}:null;if(!Z.ok)return Ex(Z.status)&&(h+=1),null;if(T(x,Z),j){let P=await Z.json();return P?.error?.code==="maxlag"?(y(Z.headers?.get?.("retry-after")),h+=1,null):P}return await Z.text()}catch{return M?.signal?.aborted&&(h+=1),null}finally{D!==null&&clearTimeout(D)}}async function E(x){return v(x,{asJson:!0})}async function I(x){return v(x,{asJson:!1})}let k=()=>Math.max(d,u+n);async function R(){for(;;){let x=Date.now();if(!p&&x>=k())return u=x,p=!0,!0;if(!i)return!1;await new Promise(j=>setTimeout(j,Math.max(k()-x,25)))}}async function $(x,j,{remember:M=!0}={}){if(l.has(x))return l.get(x);if(!await R())return null;let D=null;try{D=await j()}catch{D=null}finally{p=!1}return M&&l.set(x,D),D}function _(){b=!0,m=0,g=!1}function O(){return{fetches:f,systemicFailures:h,fetchesThisTurn:m,budgetExhausted:g}}return{fetchJson:E,fetchText:I,cachedFetch:$,beginTurn:_,stats:O}}var vi,nn,lM,uM,Da,za=L(()=>{_u();vi=4e3,nn=2e3,lM=5e3,uM=6,Da=5});function bM({fetchImpl:e,origin:t=dM,timeoutMs:n=vi,minIntervalMs:s=nn,lexicon:o=null,userAgent:r=gM,waitForSlot:i=!1,sourceName:a=pM,label:c=hM}={}){let l=Ba({fetchImpl:e,timeoutMs:n,minIntervalMs:s,userAgent:r,waitForSlot:i});function u(f,h){let m=Array.isArray(h?.[1])?h[1]:[];for(let b of m){let g=V(b);if(g===f||g.startsWith(f))return String(b)}return null}async function d(f,h){let m=await l.fetchJson(`${t}/api/rest_v1/page/summary/${encodeURIComponent(h.replace(/ /g,"_"))}`);if(!m)return null;let b=String(m.extract??""),g=Number(m.revision),w={term:f,title:String(m.title??h),text:b,summary:Ru(b,ju),url:String(m.content_urls?.desktop?.page??`${t}/wiki/${encodeURIComponent(h.replace(/ /g,"_"))}`),revid:g},y=o;if(!y)try{y=an()}catch{y=null}let S=y?yx(b,y):null;return S&&(w.isa=S),_o(w)?w:null}async function p(f){let h=await l.fetchJson(`${t}/w/api.php?action=opensearch&format=json&origin=*&maxlag=${Da}&search=${encodeURIComponent(f)}&limit=3`),m=h?u(f,h):null;return m?d(f,m):null}return{name:a,origin:t,label:c,beginTurn(){l.beginTurn()},stats(){return l.stats()},provenanceTag(f){return yr(a,f)},async lookup(f){let h=String(f??"");return h?l.cachedFetch(h,()=>p(h)):null},async pageByTitle(f){let h=String(f??"").trim();return h?l.cachedFetch(`title\0${V(h)}`,()=>d(V(h),h)):null},async linkedTitles(f,{limit:h=25}={}){let m=String(f??"").trim();if(!m)return null;let b=await l.cachedFetch(`links\0${V(m)}`,async()=>{let w=(await l.fetchJson(`${t}/w/api.php?action=parse&format=json&formatversion=2&origin=*&maxlag=${Da}&prop=links&redirects=1&page=${encodeURIComponent(m)}§ion=0`))?.parse?.links;if(!Array.isArray(w))return null;let y=new Set,S=[];for(let T of w){if(!T||T.ns!==0||T.exists===!1)continue;let v=String(T.title??T["*"]??"").trim(),E=V(v);!v||!E||y.has(E)||(y.add(E),S.push(v))}return S});return Array.isArray(b)?b.slice(0,Math.max(0,h)):null}}}function wM(e={}){return bM({origin:fM,sourceName:kx,label:mM,waitForSlot:!0,...e})}var dM,fM,pM,kx,hM,mM,gM,jx=L(()=>{Ve();ts();br();$r();za();dM="https://en.wikipedia.org",fM="https://simple.wikipedia.org",pM="wikipedia-live",kx="simple-wikipedia",hM="Wikipedia",mM="Simple English Wikipedia",gM="the-mechanical-code-talker (+https://tmct.polycode.co.uk/)";Si({name:kx,create:wM})});function RM(e,t){let n=Array.isArray(t?.search)?t.search:[],s=[],o=[];for(let r of n){let i=String(r?.id??"");if(!Tx.test(i))continue;let a=V(r?.label??"");a===e?s.push(i):a.startsWith(e)&&o.push(i)}return[...s,...o]}function _M(e){let t=[];for(let[n,s]of Object.entries(vM)){let o=e?.claims?.[n];if(!Array.isArray(o))continue;let r=0;for(let i of o){if(t.length>=jM)return t;if(r>=kM)break;let a=i?.mainsnak;if(a?.snaktype!=="value")continue;let c=String(a?.datavalue?.value?.id??"");Tx.test(c)&&(t.push({property:n,predicate:s,id:c}),r+=1)}}return t}function TM(e,t,n){for(let s of EM)for(let o of e){if(o.property!==s)continue;let r=t.get(o.id);if(r&&r!==n)return r}return null}function AM({fetchImpl:e,origin:t=yM,timeoutMs:n=vi,minIntervalMs:s=nn,userAgent:o=SM,waitForSlot:r=!1,sourceName:i=_x}={}){let a=Ba({fetchImpl:e,timeoutMs:n,minIntervalMs:s,userAgent:o,waitForSlot:r}),c=d=>`${t}/w/api.php?${new URLSearchParams({format:"json",origin:"*",maxlag:String(Da),...d})}`;async function l(d){let p=new Map;if(!d.length)return p;let f=await a.fetchJson(c({action:"wbgetentities",languages:"en",props:"labels",ids:d.join("|")}));for(let[h,m]of Object.entries(f?.entities??{})){let b=V(m?.labels?.en?.value??"");b&&p.set(h,b)}return p}async function u(d){let p=await a.fetchJson(c({action:"wbsearchentities",language:"en",uselang:"en",type:"item",limit:"5",search:d})),f=p?RM(d,p):[];for(let h of f){let b=(await a.fetchJson(c({action:"wbgetentities",languages:"en",props:"labels|descriptions|claims|info",ids:h})))?.entities?.[h];if(!b)continue;let g=_M(b),w=await l(g.map(k=>k.id)),y=TM(g,w,d);if(y&&xM.has(y))continue;let S=yr(i,d),T=[],v=new Set;for(let k of g){let R=w.get(k.id);!R||R===d||v.has(`${k.predicate}\0${R}`)||(v.add(`${k.predicate}\0${R}`),T.push({subject:d,predicate:k.predicate,object:R,provenance:S}))}let E=String(b.descriptions?.en?.value??""),I={term:d,title:String(b.labels?.en?.value??""),text:E,summary:Ru(E,ju),url:`${t}/wiki/${h}`,revid:Number(b.lastrevid),source:Rx,licence:$M};if(y&&(I.isa=y),T.length&&(I.facts=T),vx(I))return I}return null}return{name:i,origin:t,label:Rx,beginTurn(){a.beginTurn()},stats(){return a.stats()},provenanceTag(d){return yr(i,d)},async lookup(d){let p=V(d??"");return p?a.cachedFetch(p,()=>u(p)):null}}}function IM(e={}){return AM({waitForSlot:!0,...e})}var yM,_x,Rx,$M,SM,vM,EM,xM,kM,jM,Tx,Ax=L(()=>{Ve();br();$r();za();yM="https://www.wikidata.org",_x="wikidata",Rx="Wikidata",$M="CC0 1.0",SM="the-mechanical-code-talker (+https://tmct.polycode.co.uk/)",vM=Object.freeze({P31:"rdf:type",P279:"rdfs:subClassOf",P361:"mgx:partOf",P527:"mgx:hasA",P186:"mgx:madeOf",P366:"mgx:usedFor",P276:"mgx:atLocation",P1542:"mgx:causes",P170:"mgx:createdBy",P2670:"mgx:hasA"}),EM=["P279","P31"],xM=new Set(["scholarly article","album","song","single","film","television series","television series episode","band","musical group","video game","book","novel"]),kM=3,jM=12,Tx=/^Q[1-9][0-9]*$/;Si({name:_x,create:IM})});function LM(e,t){let n=bn(t,e);return n?V(n.lemma):V(e)}function MM(e,t,n,s,o,r){if(!s||r<=0)return[];let i=new Set([n]),a=[];for(let c of String(t??"").matchAll(CM)){if(a.length>=r)break;let l=LM(c[0],o);!l||!ib(l)||i.has(l)||!s[l]||(i.add(l),dm(e,l)&&a.push(PM(l)))}return a}function FM({dir:e,lexicon:t=null,sourceName:n=Ix}={}){let s=e||$x(),o=t;function r(){if(o)return o;try{o=an()}catch{o=null}return o}function i(a){let c=V(a??"");if(!c)return null;let l=dm(s,c);if(!l)return null;let u={...l,term:c};return _o(u)?u:null}return{name:n,origin:OM,provenanceTag(a){return yr(n,a)},async lookup(a){return i(a)},async pageByTitle(a){return i(a)},async linkedTitles(a,{limit:c=NM}={}){let l=i(a);if(!l)return null;let u=um(s);return MM(s,l.text,l.term,u,r(),Math.max(0,c))}}}var OM,Ix,CM,NM,PM,Ox=L(()=>{Ve();ts();Yn();br();fm();$r();OM="https://simple.wikipedia.org",Ix="simple-wikipedia-pack",CM=/[A-Za-z][A-Za-z'-]*/g,NM=25;PM=e=>e.charAt(0).toUpperCase()+e.slice(1);Si({name:Ix,create:FM})});var DM,BM,sX,pm=L(()=>{Ve();ts();Hr();$r();DM=Object.freeze({fanoutLimit:5,maxDepth:1,maxTopics:12,minIntervalMs:2e3,source:"wikipedia"}),BM=["this","is","about","the"],sX=BM.length});var Cx=L(()=>{zt();Qe();qp();Ve();Ue()});var Nx=L(()=>{Ve()});var Tu=L(()=>{Ln();Gr()});var Lx=L(()=>{Ve()});var zM,Px,Mx,Fx,TX,Dx=L(()=>{Lx();za();zM=250,Px=Object.freeze([{id:"wikimedia-featured",name:"Wikimedia featured feed",kind:"contemporary",format:"wikimedia-feed",url:"https://api.wikimedia.org/feed/v1/wikipedia/en/featured",homepage:"https://www.wikipedia.org/",licence:"CC BY-SA 4.0",browserVerified:"2026-08-08",minIntervalMs:nn,enabledByDefault:!0},{id:"hacker-news",name:"Hacker News",kind:"contemporary",format:"hn",url:"https://hacker-news.firebaseio.com/v0",homepage:"https://news.ycombinator.com/",licence:"user-submitted, discussion linked",browserVerified:"2026-08-08",minIntervalMs:zM,enabledByDefault:!0},{id:"usgs-quakes",name:"USGS earthquakes",kind:"contemporary",format:"usgs",url:"https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/2.5_day.geojson",homepage:"https://earthquake.usgs.gov/",licence:"US public domain",browserVerified:"2026-08-08",minIntervalMs:nn,enabledByDefault:!0},{id:"nyt-world",name:"NYT World News",kind:"contemporary",format:"rss",url:"https://rss.nytimes.com/services/xml/rss/nyt/World.xml",homepage:"https://www.nytimes.com/section/world",licence:"personal use with attribution",browserVerified:"2026-08-08",minIntervalMs:nn,enabledByDefault:!0},{id:"wikinews-published",name:"Wikinews",kind:"contemporary",format:"mediawiki",url:"https://en.wikinews.org/w/api.php",homepage:"https://en.wikinews.org/",licence:"CC BY 2.5",browserVerified:"2026-08-08",minIntervalMs:nn,enabledByDefault:!0},{id:"simple-wikipedia",name:"Simple English Wikipedia",kind:"kb",format:"wikipedia-summary",url:"https://simple.wikipedia.org",homepage:"https://simple.wikipedia.org/",licence:"CC BY-SA 4.0",browserVerified:"2026-08-08",minIntervalMs:nn,enabledByDefault:!0},{id:"wikidata",name:"Wikidata",kind:"kb",format:"wikidata",url:"https://www.wikidata.org",homepage:"https://www.wikidata.org/",licence:"CC0 1.0",browserVerified:"2026-08-08",minIntervalMs:nn,enabledByDefault:!0},{id:"wiktionary",name:"Wiktionary",kind:"kb",format:"wiktionary",url:"https://en.wiktionary.org",homepage:"https://en.wiktionary.org/",licence:"CC BY-SA 3.0",browserVerified:"2026-08-08",minIntervalMs:nn,enabledByDefault:!0},{id:"dbpedia-lookup",name:"DBpedia Lookup",kind:"kb",format:"dbpedia-lookup",url:"https://lookup.dbpedia.org",homepage:"https://www.dbpedia.org/",licence:"CC BY-SA 3.0",browserVerified:"2026-08-08",minIntervalMs:nn,enabledByDefault:!1},{id:"english-wikipedia",name:"English Wikipedia",kind:"kb",format:"wikipedia-summary",url:"https://en.wikipedia.org",homepage:"https://en.wikipedia.org/",licence:"CC BY-SA 4.0",browserVerified:"2026-08-08",minIntervalMs:nn,enabledByDefault:!1}]),Mx=Object.freeze(["wikimedia-featured","hacker-news","usgs-quakes","nyt-world","wikinews-published"]),Fx=Object.freeze(["simple-wikipedia","wikidata","wiktionary"]),TX=new Map(Px.map(e=>[e.id,e]))});var CX,NX,Bx=L(()=>{Ve();di();CX=Object.freeze(["child","conceptnet","wordnet-complete"]),NX=Object.freeze({child:Object.freeze({license:"CC-BY-SA-4.0",notice:"corpus/child/LICENSE-NOTICE"}),conceptnet:Object.freeze({license:"CC-BY-SA-4.0",notice:"corpus/conceptnet/LICENSE-NOTICE"}),"wordnet-complete":Object.freeze({license:"CC-BY-4.0",notice:"corpus/wordnet/LICENSE-NOTICE"})})});var _t,PX,MX,FX,DX,BX,zX,UX,WX,GX,VX,KX,HX,qX,YX,XX,JX,QX,ZX,e5,hm=L(()=>{_t=e=>()=>{throw new Error(e+" unavailable in the browser ask bundle")},PX=_t("createRequire"),MX=_t("readFileSync"),FX=_t("access"),DX=_t("readFile"),BX=_t("writeFile"),zX=_t("appendFile"),UX=_t("mkdir"),WX=_t("mkdtemp"),GX=_t("rename"),VX=_t("unlink"),KX=_t("rm"),HX=_t("stat"),qX=_t("copyFile"),YX=_t("readdir"),XX=_t("createReadStream"),JX=_t("createWriteStream"),QX=_t("randomBytes"),ZX=_t("spawnSync"),e5=_t("createInterface")});var zx=L(()=>{});var VM,S5,Ux,v5,E5,Wx=L(()=>{zt();hm();Qe();Ua();$u();tm();Ue();sn();zx();Nn();Ve();Yn();ll();vu();ts();VM=new Set(["VERB","AUX","ADP","SCONJ","CCONJ"]),S5=new Set([...VM,"PRON"]),Ux="said|says|told|reported|reports|announced|announces|stated|states|confirmed|confirms|added|wrote|writes",v5=new RegExp(`,\\s*["'\u201C\u201D\u2018\u2019]?\\s*([\\w.'\u2019-]+(?:\\s+[\\w.'\u2019-]+){0,3})\\s+(?:${Ux})\\s*[.!?]?\\s*$`,"i"),E5=new RegExp(`^\\s*([\\w.'\u2019-]+(?:\\s+[\\w.'\u2019-]+){0,4})\\s+(?:has\\s+|had\\s+|have\\s+)?(?:${Ux})\\s+(?:that\\s+)?(\\S.*)$`,"i")});var l8,u8,d8,f8,p8,gm=L(()=>{Ve();xp();Nx();Ft();ts();Tu();Nn();Dx();za();$r();Bx();_u();Wx();l8=Object.freeze({sources:Mx,kbSources:Fx,extraSources:Object.freeze([]),pollMinutes:15,enrichMinutes:10,enrichTermsPerCycle:3,negativeCacheTtlHours:24,syllogismsPerIngest:12,itemCap:30,newsFactCap:4e3,feedTop:3,windowHours:48,minIntervalMs:0}),u8=6*36e5,d8=Object.freeze({"simple-wikipedia":"simple-wikipedia",wikidata:"wikidata",wiktionary:"wiktionary","dbpedia-lookup":"dbpedia"}),f8=Object.freeze(["child","conceptnet","wordnet-complete"]),p8=Os.teach});function YM(e){if(!e||typeof e!="object")return!1;for(let t of["subject","predicate","object"])if(typeof e[t]!="string"||!e[t])return!1;return!(e.weight!==void 0&&!(typeof e.weight=="number"&&Number.isFinite(e.weight)&&e.weight>0))}function bm(e){if(!e||typeof e!="object"||typeof e.term!="string"||!e.term||!Array.isArray(e.facts)||e.facts.length===0)return!1;for(let t of e.facts)if(!YM(t)||V(t.subject)!==e.term&&V(t.object)!==e.term)return!1;return!0}var Gx,Au=L(()=>{Ve();Gx=32});var XM,x8,Vx=L(()=>{Ro();Fa();jo();Qe();Au();Ve();XM={},x8=ne(Se(tn(XM.url)),"..","..","..")});var j8,R8,_8,Kx=L(()=>{j8=Object.freeze(["task","autoFeedback","alloFeedback","turnManagement","timeManagement","discourseStructuring","ownCommunicationManagement","partnerCommunicationManagement","socialObligationsManagement","contactManagement"]),R8=Object.freeze({propositionalQuestion:Object.freeze({dimension:"task",gloss:"a yes/no question about whether a proposition holds ('does X import Y?')"}),checkQuestion:Object.freeze({dimension:"task",gloss:"a yes/no question whose asker already expects the answer yes ('..., right?')"}),setQuestion:Object.freeze({dimension:"task",gloss:"a wh-question asking for the members of a set ('what does X import?')"}),choiceQuestion:Object.freeze({dimension:"task",gloss:"a question asking which of the listed alternatives holds ('is X a module or a class?')"}),inform:Object.freeze({dimension:"task",gloss:"a declarative telling the addressee something (a teach turn; also tmct explaining its own function)"}),answer:Object.freeze({dimension:"task",gloss:"an inform that discharges a question just asked (an answer grounded in the graph)"}),confirm:Object.freeze({dimension:"task",gloss:"an answer 'yes' to a check question"}),disconfirm:Object.freeze({dimension:"task",gloss:"an answer 'no' to a check question"}),agreement:Object.freeze({dimension:"task",gloss:"an inform stating that the speaker holds what the addressee just stated to be true"}),disagreement:Object.freeze({dimension:"task",gloss:"an inform stating that the speaker holds what the addressee just stated to be false"}),correction:Object.freeze({dimension:"task",gloss:"a disagreement that also supplies the replacement ('no, I meant Y')"}),request:Object.freeze({dimension:"task",gloss:"asks the addressee to perform an action ('solve it' \u2014 a goal turn)"}),instruct:Object.freeze({dimension:"task",gloss:"a request the addressee is expected to carry out without negotiation (a bare imperative)"}),suggestion:Object.freeze({dimension:"task",gloss:"puts an action forward as advisable without claiming authority over the addressee"}),offer:Object.freeze({dimension:"task",gloss:"commits the speaker to an action, conditional on the addressee wanting it"}),autoPositive:Object.freeze({dimension:"autoFeedback",gloss:"the sender reports its own processing of the previous turn succeeded (an acknowledgement)"}),autoNegative:Object.freeze({dimension:"autoFeedback",gloss:"the sender reports its own processing of the previous turn failed \u2014 tmct's honest miss"}),initialGreeting:Object.freeze({dimension:"socialObligationsManagement",gloss:"opens an exchange of greetings ('hi')"}),returnGreeting:Object.freeze({dimension:"socialObligationsManagement",gloss:"answers a greeting with a greeting"}),thanking:Object.freeze({dimension:"socialObligationsManagement",gloss:"expresses gratitude for something the addressee did"}),apology:Object.freeze({dimension:"socialObligationsManagement",gloss:"expresses regret for something the speaker did"})}),_8=Object.freeze({teach:"inform","ask-set":"setQuestion","ask-propositional":"propositionalQuestion","ask-choice":"choiceQuestion",goal:"request",imperative:"instruct","honest-miss":"autoNegative",greeting:"initialGreeting",thanks:"thanking",help:"inform","game-answer":"answer","game-inform":"inform"})});var N8,QM,ZM,Hx,L8,P8,M8,F8,D8,qx=L(()=>{Ln();Tu();N8=Object.freeze({inline:"inline",enumerated:"enumerated"}),QM=new Set(["in","on","at","for","with","from","of","into","onto"]),ZM=new Set(["you","i","it","he","she","they","we","there","someone","something","one","him","her","them","who","himself","herself","itself","themselves","myself","yourself"]),Hx=new Set([...QM,"to","behind","before","near","next","along","alongside","under","over","between","among","during","without","about","by","as","like","that","if","when","while","being","because","since","until","so","and","but","or","immediately","likely","usually","normally","currently","is","are","was","were","do","does","did","has","have","had","will","would","could","should","might","must","can"]),L8=new Set([...Hx,"be","been"]),P8=new RegExp("^(?:in|at|on|from|by|with|for|of|to|off)\\s+(?:(?:what|which)\\s+[a-z][\\w'-]*|where|when|why|how|who)\\s+(?:is|are|was|were|do|does|did|can|could|should|would|will|has|have|might|must)\\s+(.+?)[?.!]*$","i"),M8=new RegExp("^(.*?)\\b(?:what|who|which|where|when|why|how)\\s+(?:i|you|he|she|it|we|they)?\\s*(?:is|are|was|were|do|does|did|can|could|should|would|will|has|have|might|must)\\b","i"),F8=Object.freeze([{family:"AtLocation",predicates:Object.freeze(["mgx:atLocation","mgx:locatedNear"]),cue:/\b(where|located|location)\b/i},{family:"IsA/Synonym/HasProperty",predicates:Object.freeze(["rdfs:subClassOf","mgx:synonym","mgx:hasProperty"]),cue:/\b(kind of|type of|another word for|same as|synonym)\b/i},{family:"HasPrerequisite/HasSubevent",predicates:Object.freeze(["mgx:hasPrerequisite","mgx:hasSubevent","mgx:hasFirstSubevent","mgx:hasLastSubevent"]),cue:/\b(before|after|first|next|then|once you|in order to)\b/i},{family:"Desires/MotivatedByGoal",predicates:Object.freeze(["mgx:desires","mgx:motivatedByGoal","mgx:causesDesire"]),cue:/\b(want\w*|desire\w*|motivat\w*)\b/i},{family:"Causes",predicates:Object.freeze(["mgx:causes","mgx:causesDesire"]),cue:/\b(cause\w*|result(?:s|ed)? in|leads? to|led to)\b/i},{family:"PartOf/HasA/MadeOf",predicates:Object.freeze(["mgx:partOf","mgx:hasA","mgx:madeOf"]),cue:/\b(part of|made of|has a|have a)\b/i},{family:"CapableOf",predicates:Object.freeze(["mgx:capableOf","mgxneg:capableOf"]),cue:/\b(capable of|able to)\b/i},{family:"UsedFor",predicates:Object.freeze(["mgx:usedFor"]),cue:/\b(used for|used to|use for)\b/i}]),D8=new Set([...ZM,...Hx,"a","an","the","some","any","few","many","several","more","most","my","your","his","its","our","their","what","which","where","when","why","how","find","found","put","get","keep","store","place","buy","locate","hide","wear","carry","use","take","open","cross","need","want"])});function Wa(e){let t=new Map;for(let[n,s]of e||[])!n||!s||n===s||(t.has(n)||t.set(n,new Set),t.get(n).add(s));return t}function Iu(e,t,{cap:n=6,stopAt:s=null,toward:o=null}={}){let r=[e],i=new Set([e]),a=e;for(;r.length<n&&!(o&&a===o);){let c=[...t.get(a)||[]].filter(d=>!i.has(d)).sort(Yx);if(!c.length)break;let l=o?c.filter(d=>d===o||ym(d,t).has(o)):[];a=(l.length?l:c)[0];let u=s&&s.has(a);if(u&&r.length>1||(i.add(a),r.push(a),u))break}return r}function ym(e,t,{cap:n=64}={}){let s=new Set([e]),o=[e];for(;o.length&&s.size<n;){let r=o.shift();for(let i of t.get(r)||[])s.has(i)||(s.add(i),o.push(i))}return s}function $m(e,t,n,s){if(n.has(e))return n.get(e);if(s.has(e))return 1;s.add(e);let o=t.get(e),r=1;if(o&&o.size){let i=0;for(let a of o)i=Math.max(i,$m(a,t,n,s));r=i+1}return s.delete(e),n.set(e,r),r}function eF(e){let t=new Map;for(let[n,s]of e||[])!n||!s||(t.has(n)||t.set(n,new Set),t.get(n).add(s),t.has(s)||t.set(s,new Set),t.get(s).add(n));return t}function tF(e,t,n,s,o,{threshold:r,rootDepth:i,icByTerm:a}){let c=ym(e,n),l=ym(t,n);if(c.has(t)||l.has(e))return{distinct:!1,reason:"subsumes",lcs:c.has(t)?t:e};if(s.size)for(let m of c){let b=s.get(m);if(b){for(let g of l)if(b.has(g))return{distinct:!0,reason:"disjoint",lcs:null}}}let u=[...c].filter(m=>l.has(m));if(!u.length)return c.size<2||l.size<2?{distinct:!1,reason:"inconclusive",lcs:null}:{distinct:!0,reason:"non-intersecting",lcs:null};let d=m=>$m(m,n,o,new Set),p=u[0],f=d(p);for(let m of u){let b=d(m);(b>f||b===f&&m<p)&&(p=m,f=b)}if(f<=i)return{distinct:!0,reason:"root-subsumer",lcs:p};if(a){let m=a.get(p);return typeof m=="number"&&m<r?{distinct:!0,reason:"low-ic",lcs:p}:{distinct:!1,reason:"shared-lineage",lcs:p}}return 2*f/(d(e)+d(t))<r?{distinct:!0,reason:"shallow-subsumer",lcs:p}:{distinct:!1,reason:"shared-lineage",lcs:p}}function Ou(e,{subClassEdges:t=[],parents:n=null,disjointEdges:s=[],threshold:o=.5,rootDepth:r=1,icByTerm:i=null}={}){let a=[...new Set((e||[]).filter(Boolean))],c=n||Wa(t),l=eF(s),u=new Map,d=new Map(a.map(w=>[w,w])),p=w=>{for(;d.get(w)!==w;)d.set(w,d.get(d.get(w))),w=d.get(w);return w},f=(w,y)=>{let S=p(w),T=p(y);S!==T&&d.set(S<T?T:S,S<T?S:T)},h=[];for(let w=0;w<a.length;w+=1)for(let y=w+1;y<a.length;y+=1){let S=tF(a[w],a[y],c,l,u,{threshold:o,rootDepth:r,icByTerm:i});h.push({a:a[w],b:a[y],...S}),S.distinct||f(a[w],a[y])}let m=new Map;for(let w of a){let y=p(w);m.has(y)||m.set(y,[]),m.get(y).push(w)}let b=w=>$m(w,c,u,new Set),g=[...m.values()].map(w=>{let y=[...w].sort(),S=y[0],T=b(S);for(let v of y){let E=b(v);E>T&&(T=E,S=v)}return{objects:y,label:S}}).sort((w,y)=>Yx(w.label,y.label));return{split:g.length>1,clusters:g,pairs:h}}var Yx,Cu=L(()=>{Ft();la();Yx=(e,t)=>e<t?-1:e>t?1:0});var Xx=L(()=>{});function Jx(e,{pending:t=null}={}){return t?!0:String(e??"").split(`
|
|
170
|
+
`).filter(n=>n.trim()!=="").length>1}var Nu,q8,Qx=L(()=>{Xx();Nu=Object.freeze({MEMORY_COUNT:"memory-count",MEMORY_CLASS:"memory-class",LETTER_WORDS:"letter-words",COLLECTION_CONTENTS:"collection-contents",TAUGHT_CLASS_COUNT:"taught-class-count",MEMBERSHIP_LIST:"membership-list",MEMBERSHIP_EXAMPLE:"membership-example",SKOS_NEIGHBOURHOOD:"skos-neighbourhood",WHAT_ELSE:"what-else",FACT_SET:"fact-set",FACT_READBACK:"fact-readback"}),q8=Object.freeze(Object.values(Nu))});function Sm(e){return typeof e=="string"&&nF.test(e)}function Zx(e){return!!e&&typeof e=="object"&&Sr(e.s)}function vm(e){return!!e&&typeof e=="object"&&e.kind==="fact"&&Sm(e.world)&&Sr(e.subject)&&Sr(e.predicate)&&Sr(e.object)}function Em(e){if(!e||typeof e!="object"||e.kind!=="rule"||!Sm(e.world)||!Sr(e.name)||!oF.has(e.ruleKind)||!e.slots||typeof e.slots!="object"||Array.isArray(e.slots))return!1;let t=Object.values(e.slots);return t.length>0&&t.every(Sr)}function xm(e){return!!e&&typeof e=="object"&&e.kind==="meta"&&Sm(e.world)&&Sr(e.opening)}function ek(e){return vm(e)||Em(e)||xm(e)}function tk(e){let t=e||[],n=t.filter(l=>l.predicate===rF).sort((l,u)=>iF(`${l.subject}\0${l.object}`,`${u.subject}\0${u.object}`));if(!n.length)return t;let s=new Set(t.filter(l=>l.predicate==="rdf:type").map(l=>l.subject)),o=new Map;for(let l of t)l.predicate==="mgx:located-in"&&o.set(l.subject,l.object);let r=(l,u)=>t.some(d=>d.predicate==="rdf:type"&&d.object===l&&o.get(d.subject)===u),i=t.find(l=>typeof l.world=="string"&&l.kind==="fact"),a=(l,u,d)=>({...i?{world:i.world,kind:"fact"}:{},subject:l,predicate:u,object:d}),c=[];for(let l of n){let u=l.subject,d=l.object;if(r(d,u))continue;let p=d,f=1;for(;s.has(p);)f+=1,p=`${d}-${f}`;s.add(p),c.push(a(p,"rdf:type",d)),c.push(a(p,"rdf:type","portable")),c.push(a(p,"mgx:located-in",u))}return c.length?[...t,...c]:t}var nF,sF,oF,Sr,rF,iF,vr=L(()=>{nF=/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/,sF=Object.freeze(["action-signature","action-precond","action-effect","action-constraint"]),oF=new Set(sF),Sr=e=>typeof e=="string"&&e.trim()!=="";rF="mgx:default-contains",iF=(e,t)=>e<t?-1:e>t?1:0});var aF,cF,J8,Ga=L(()=>{aF=Object.freeze(["mgx:consumes","mgx:display-name","mgx:evades","mgx:guards","mgx:hasMass","mgx:is-predator","mgx:mass-drain-per-turn","mgx:model","mgx:pursues","mgx:vision-radius"]),cF=Object.freeze(new Set(["mgx:consumes","mgx:evades","mgx:guards","mgx:pursues"])),J8=Object.freeze(["mgx:consumes","mgx:evades","mgx:pursues"])});var Ei=L(()=>{});var lF,uF,dF,fF,pF,hF,mF,gF,bF,wF,yF,$F,SF,vF,EF,xF,kF,jF,RF,n6,_F,nk,s6,o6,sk=L(()=>{ts();Gr();lF="subClassOf",uF="typeAssertion",dF="relation",fF="someValuesFrom",pF="cardinality",hF="disjointWith",mF="possessive",gF="adjective",bF="capability",wF="union",yF="complement",$F="negativeType",SF="enumeration",vF="differentFrom",EF="bareExistential",xF="transitiveRole",kF="inverseRole",jF="universal",RF="subPropertyOf",n6=Object.freeze([lF,uF,dF,fF,pF,hF,mF,gF,bF,wF,yF,$F,SF,vF,EF,xF,kF,jF,RF]),_F=new Set(["go","take","drop","open","unlock","close","give","look","talk","examine","dig","eat","put"]),nk=new Map([["pick up","take"],["pick","take"],["grab","take"],["put down","drop"],["set down","drop"],["leave","drop"],["talk to","talk"],["speak to","talk"],["speak with","talk"],["talk","talk"],["speak","talk"],["chat with","talk"],["converse with","talk"],["look at","examine"],["examine","examine"],["inspect","examine"],["have a look at","examine"],["take a look at","examine"],["check out","examine"],["shut","close"]]),s6=Math.max(...[...nk.keys()].map(e=>e.split(" ").length)),o6=[...new Set([..._F,...[...nk.keys()].map(e=>e.split(" ")[0])])]});var Er=L(()=>{});var km=L(()=>{Fe();us();Er()});function Ht({name:e,label:t,question:n,params:s=[],preconditions:o=[],add:r=[],del:i=[]}){return Object.freeze({type:To.Capability,name:e,label:t,question:n,readOnly:!0,parameters:Object.freeze(s),preconditions:Object.freeze(o),effects:Object.freeze({add:Object.freeze(r),del:Object.freeze(i)})})}var TF,To,je,AF,xr,bt,cn,wn,IF,ok,Kt,OF,CF,rk,d6,f6,p6,xi=L(()=>{TF=Object.freeze({cap:"urn:tmct:cap#",taught:"urn:tmct:taught#",mgx:"urn:tmct:mgx#",seon:"http://se-on.org/ontologies/seon.owl#"}),To=Object.freeze({Capability:"cap:Capability",Parameter:"cap:Parameter",Precondition:"cap:Precondition",Effect:"cap:Effect"}),je=Object.freeze({Symbol:"seon:CodeEntity",Module:"mgx:Module",Class:"seon:ClassType",MemoryTerm:"mgx:MemoryTerm",Query:"cap:FreeText",Kind:"cap:KindFilter",Package:"cap:PackageName"}),AF=Object.freeze([je.MemoryTerm]),xr=Object.freeze({graphLoaded:"cap:graph-loaded",resolves:"cap:resolves",anyPresent:"cap:any-present",memoryFacts:"cap:memory-facts"}),bt=(e,t,{arg:n=e,required:s=!0,note:o=""}={})=>Object.freeze({type:To.Parameter,name:e,kind:t,arg:n,required:s,note:o}),cn=()=>Object.freeze({type:To.Precondition,pred:xr.graphLoaded}),wn=(e,t)=>Object.freeze({type:To.Precondition,pred:xr.resolves,param:e,as:t}),IF=e=>Object.freeze({type:To.Precondition,pred:xr.anyPresent,params:Object.freeze([...e])}),ok=()=>Object.freeze({type:To.Precondition,pred:xr.memoryFacts}),Kt=(e,t=null)=>Object.freeze({type:To.Effect,pred:"cap:knows",topic:e,of:t?`?${t}`:null});OF=Object.freeze([Ht({name:"tmct_search",label:"search",question:"lexical search across the graph",params:[bt("query",je.Query,{required:!1,note:"required unless a kind filter is given"}),bt("kind",je.Kind,{required:!1}),bt("name",je.Query,{required:!1}),bt("decorator",je.Query,{required:!1})],preconditions:[cn(),IF(["query","kind"])],add:[Kt("matches","query")]}),Ht({name:"tmct_describe",label:"describe",question:"a symbol's definition, kind and relations",params:[bt("symbol",je.Symbol)],preconditions:[cn(),wn("symbol",je.Symbol)],add:[Kt("description","symbol")]}),Ht({name:"tmct_signature",label:"signature",question:"a symbol's signature only",params:[bt("symbol",je.Symbol)],preconditions:[cn(),wn("symbol",je.Symbol)],add:[Kt("signature","symbol")]}),Ht({name:"tmct_impact",label:"impact",question:"what a change to this module or symbol reaches (impact closure)",params:[bt("module",je.Symbol,{note:"a Module, or any sited symbol \u2014 a fine-grained seed walks callsSymbol dependents and coarsens them to module grain"})],preconditions:[cn(),wn("module",je.Symbol)],add:[Kt("impact","module")]}),Ht({name:"tmct_members",label:"members",question:"the methods/attributes of a class",params:[bt("class",je.Class,{arg:"class"})],preconditions:[cn(),wn("class",je.Class)],add:[Kt("members","class")]}),Ht({name:"tmct_subclasses",label:"subclasses",question:"the subclasses of a class",params:[bt("class",je.Class,{arg:"class"})],preconditions:[cn(),wn("class",je.Class)],add:[Kt("subclasses","class")]}),Ht({name:"tmct_exports",label:"exports",question:"a module's public exports",params:[bt("module",je.Module)],preconditions:[cn(),wn("module",je.Module)],add:[Kt("exports","module")]}),Ht({name:"tmct_callers",label:"callers",question:"functions that call this symbol",params:[bt("symbol",je.Symbol)],preconditions:[cn(),wn("symbol",je.Symbol)],add:[Kt("callers","symbol")]}),Ht({name:"tmct_callees",label:"callees",question:"functions this symbol calls",params:[bt("symbol",je.Symbol)],preconditions:[cn(),wn("symbol",je.Symbol)],add:[Kt("callees","symbol")]}),Ht({name:"tmct_calls",label:"calls",question:"the call edges out of this symbol/module",params:[bt("symbol",je.Symbol)],preconditions:[cn(),wn("symbol",je.Symbol)],add:[Kt("calls","symbol")]}),Ht({name:"tmct_tests_for",label:"tests",question:"the tests covering this symbol",params:[bt("symbol",je.Symbol)],preconditions:[cn(),wn("symbol",je.Symbol)],add:[Kt("tests","symbol")]}),Ht({name:"tmct_untested",label:"untested",question:"symbols with no covering test",params:[],preconditions:[cn()],add:[Kt("untested",null)]}),Ht({name:"tmct_history",label:"history",question:"the commit history of this symbol",params:[bt("symbol",je.Symbol)],preconditions:[cn(),wn("symbol",je.Symbol)],add:[Kt("history","symbol")]}),Ht({name:"tmct_cochanges",label:"cochanges",question:"symbols that change together with this one",params:[bt("symbol",je.Symbol)],preconditions:[cn(),wn("symbol",je.Symbol)],add:[Kt("cochanges","symbol")]}),Ht({name:"tmct_architecture",label:"arch",question:"the architecture overview (optional package filter)",params:[bt("package",je.Package,{required:!1})],preconditions:[cn()],add:[Kt("architecture","package")]}),Ht({name:"tmct_related",label:"related",question:"a term's synonyms and related concepts (the SKOS view over the conversational-memory graph)",params:[bt("term",je.MemoryTerm,{note:"a concept term, matched against memory relation facts rather than resolved in the code graph"})],preconditions:[ok(),wn("term",je.MemoryTerm)],add:[Kt("related","term")]}),Ht({name:"tmct_sprite",label:"sprite",question:"the sprite for a class, with the expression and size asked for",params:[bt("class",je.MemoryTerm,{arg:"class",note:"a world class, matched against the memory graph's own fact rows rather than resolved in the code graph"}),bt("expression",je.Kind,{required:!1,note:"one of sprite-expressions.mjs's palette words, carried as an mgx:feels fact"}),bt("size",je.Kind,{required:!1,note:"a taught mgx:hasProperty size word, resolved to a render scale \u2014 not a template tier"})],preconditions:[ok(),wn("class",je.MemoryTerm)],add:[Kt("sprite","class")]})]),CF=e=>Object.freeze(e.reduce((t,n)=>(t[n.name]=n,t),Object.create(null))),rk=OF,d6=CF(rk),f6=Object.freeze({tmct_context:"unbounded edit-context bundle (multi-file); needs a size/budget precondition",tmct_context_more:"unbounded context continuation; same as tmct_context",tmct_snippet:"raw source-file read (reads the filesystem); needs a file-read + span precondition",tmct_ask:"the plain-English question entry point itself \u2014 calls ask.mjs directly and bypasses the capability planner; not one of the planner's operators",tmct_export:"reads the memory store's whole fact set with no discriminating param and no resolver goal frame; needs NL-reachability wiring before it can join",tmct_ingest:"writes into the memory store (grounds facts); capability() only models read-only operators, so a write path needs its own precondition/effect design first",tmct_file_history:"a module-grain cut of the same history edge tmct_history already models; no NL frame distinguishes the granularities yet",tmct_method_history:"a method-grain cut of the same history edge tmct_history already models; no NL frame distinguishes the granularities yet",tmct_class_history:"a class-grain cut of the same history edge tmct_history already models; no NL frame distinguishes the granularities yet"}),p6=Object.freeze({prefixes:TF,vocab:To,kinds:je,precond:xr,get capabilities(){return rk}})});var jm=L(()=>{xi()});var Lu=L(()=>{Nn()});var Rm=L(()=>{xi()});function FF(e){let t={};for(let n of String(e).toLowerCase().match(/[a-z]+/g)||[])!t.expression&&Object.hasOwn(co,n)&&(t.expression=n),!t.size&&Oa([{predicate:MF,object:n}])!==1&&(t.size=n);return t}var L6,P6,M6,F6,MF,D6,_m=L(()=>{us();as();du();Ve();Fe();uc();Wh();xi();Rm();L6=new RegExp(`\\b(?:${Object.keys(rs).map(e=>e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(/\s+/g,"\\s+")).join("|")})\\b`,"i"),P6=Object.freeze({"reverse:calls":{topic:"callers",arg:"symbol"},"forward:calls":{topic:"callees",arg:"symbol"},"reverse:tests":{topic:"tests",arg:"symbol"},"forward:tests":{topic:"tests",arg:"symbol"},"reverse:inherits":{topic:"subclasses",arg:"class"},"forward:reexports":{topic:"exports",arg:"module"},"forward:contains":{topic:"members",arg:"class"},"when:touches":{topic:"history",arg:"symbol"},"forward:cochange":{topic:"cochanges",arg:"symbol"},"reverse:cochange":{topic:"cochanges",arg:"symbol"}}),M6=Object.freeze({imports:"no importer/imports query tool in the registry (there is no tmct_imports); refusing beats mis-routing to calls",uses:"a query-side UNION (imports+calls+callsSymbol) with no single capability; a router that must emit ONE call cannot honour it \u2014 refuse",defines:"Module->symbol `defines` has no dedicated capability (tmct_members is Class-scoped `contains`); refuse rather than answer a different grain",serves:"a provider-declared edge with no capability in the registry; the ask lane traverses it directly, so refusing here beats mis-routing to a code-grain tool",denotes:"a provider-declared edge with no capability in the registry; the ask lane traverses it directly, so refusing here beats mis-routing to a code-grain tool"}),F6=Object.freeze({}),MF="mgx:hasProperty";D6=Object.freeze([{re:/\buntested\b|\bwithout\s+(?:a\s+)?tests?\b|\bhas\s+no\s+tests?\b|\bneeds?\s+(?:a\s+)?tests?\b/i,topic:"untested",noArg:!0,skipIfSuperlative:!0},{re:/\bblast\s*radius\b|\bimpacts?\b|\bimpacted\b|what\s+(?:a\s+)?change.*(?:reach|affect|touch)|what\s+(?:depends?\s+on|dependents?)\b/i,topic:"impact",arg:"module"},{re:/\bcall[\s-]*edges?\b|\bcall[\s-]*graph\b|\boutgoing\s+calls?\b|\bcall[\s-]*sites?\s+(?:of|in|out|from)\b/i,topic:"calls",arg:"symbol"},{re:/\bcallees?\b|wh(?:at|o)\s+does\s+\S+\s+call\b/i,topic:"callees",arg:"symbol"},{re:/\bcallers?\b|who\s+calls\b|what\s+calls\b/i,topic:"callers",arg:"symbol"},{re:/\btests?\b.*\b(?:for|cover|covering|of)\b|which\s+tests?\b|covers?\b|covered\b|test\s+coverage\b/i,topic:"tests",arg:"symbol"},{re:/\bcochang|change[- ]coupl/i,topic:"cochanges",arg:"symbol"},{re:/\bexports?\b|\bpublic\s+api\b/i,topic:"exports",arg:"module"},{re:/\bsubclasses?\b|children\s+of\b|\bextends?\b/i,topic:"subclasses",arg:"class"},{re:/\bmembers?\b|\bmethods?\s+of\b|\battributes?\s+of\b/i,topic:"members",arg:"class"},{re:/\bhistory\b|who\s+changed\b|commits?\s+(?:that\s+)?touch/i,topic:"history",arg:"symbol"},{re:/\bsignature\b/i,topic:"signature",arg:"symbol"},{re:/\bsynonyms?\b|\banother\s+word\s+for\b|\brelated\s+(?:words?|concepts?|to)\b/i,topic:"related",arg:"term"},{re:/\bsprite\b|\bicon\b|\bavatar\b|\bpicture\s+of\b|\bwhat\s+does\s+.+\s+look\s+like\b/i,topic:"sprite",arg:"class",slots:FF},{re:/\bdescribe\b|\bexplain\b|what\s+is\b|tell\s+me\s+about\b|definition\s+of\b/i,topic:"description",arg:"symbol"},{re:/\bsearch\b|\bfind\b|look\s+for\b/i,topic:"matches",arg:"query"}])});var ck=L(()=>{});var BF,lk=L(()=>{_m();xi();Rm();ck();us();BF=Object.freeze([Object.freeze({id:"coverage-invariant",kind:"maintenance",invariant:"an impactful module must be tested",focusClass:"Module",modes:Object.freeze(["scoped","global"]),subGoals:Object.freeze(["impact","untested"]),priorityTopic:"impact",coverageTopic:"untested",compose:Object.freeze({op:"intersect",a:Object.freeze({topic:"untested"}),b:Object.freeze({topic:"impact",of:"focus",withFocus:!0}),names:"the change's untested footprint",empty:"no coverage gap"}),achieves:"coverage-gap"}),Object.freeze({id:"cochange-risk-invariant",kind:"maintenance",invariant:"a module change-coupled with the focus must be tested",focusClass:"Module",modes:Object.freeze(["scoped"]),subGoals:Object.freeze(["cochanges","untested"]),priorityTopic:"cochanges",coverageTopic:"untested",compose:Object.freeze({op:"intersect",a:Object.freeze({topic:"cochanges",of:"focus"}),b:Object.freeze({topic:"untested"}),names:"the change-coupled untested set",empty:"every change-coupled module is tested"}),achieves:"cochange-risk"})])});var Pu=L(()=>{Ei();Lu();_m();lk();xi();jm()});function WF(e=process.env){return e?.TMCT_WORLDS_PACK_DIR||ne(UF,"corpus","worlds")}function uk(e){try{return wr(Zs(e))}catch{return null}}function dk(e){if(Am.has(e))return Am.get(e);let t=null,n=uk(ne(e,"index.json.gz"));if(n)try{let s=JSON.parse(n.toString("utf8"));s&&typeof s=="object"&&!Array.isArray(s)&&(t=s)}catch{}return Am.set(e,t),t}function GF(e,t){let n=dk(e);if(!n)return null;let s=n[String(t??"")];if(!Zx(s))return null;let o=`${e}\0${t}`;if(Im.has(o))return Im.get(o);let r=null,i=uk(ne(e,"shards",`${s.s}.jsonl.gz`));if(i){let a=[],c=[],l=null;for(let u of i.toString("utf8").split(`
|
|
171
|
+
`))if(u.trim())try{let d=JSON.parse(u);if(!ek(d)||d.world!==t)continue;vm(d)?a.push(d):Em(d)?c.push(d):xm(d)&&!l&&(l=d)}catch{}(a.length||c.length||l)&&(r={name:t,facts:tk(a),rules:c,meta:l})}return Im.set(o,r),r}var KF,UF,Am,Im,VF,lJ,Mu=L(()=>{Ro();Fa();jo();Qe();vr();KF={},UF=ne(Se(tn(KF.url)),"..","..","..");Am=new Map,Im=new Map;VF=e=>({list:async()=>{let t=dk(e());return t?Object.keys(t).sort():null},load:async t=>GF(e(),t)}),lJ=VF(()=>WF())});var wJ,fk=L(()=>{zt();Qe();Yn();Mi();Nn();Ue();wJ=ne(".tmct","memory","blocks")});var pk=L(()=>{Er()});var mk=L(()=>{Yn();Mi();Er()});var Om=L(()=>{Yn();Mi();Er()});var gk=L(()=>{Om();Yn();Cs();Er()});var bk=L(()=>{});var wk=L(()=>{pk();mk();Om();gk();bk();Er()});var yk=L(()=>{fk();Ue();Hc();$u();wk();km()});function ki(e,t){let n=parseInt(e.slice(1),16);return`rgba(${n>>16&255}, ${n>>8&255}, ${n&255}, ${t})`}function Du(e){let t=n=>XF.map((s,o)=>`--${n}-t${o+1}: ${ki(e[n],s)};`).join(" ");return[`--bg: ${e.bg}; --ink: ${e.ink}; --muted: ${e.muted}; --line: ${e.line}; --card: ${e.card};`,`--taught: ${e.taught}; --corpus: ${e.corpus}; --entail: ${e.entail}; --alert: ${e.alert};`,t("taught"),t("corpus"),t("entail"),`--taught-soft: ${ki(e.taught,.12)}; --corpus-soft: ${ki(e.corpus,.12)};`,`--entail-soft: ${ki(e.entail,.14)}; --alert-soft: ${ki(e.alert,.12)};`,`--sprite-pop: drop-shadow(0 0 .6px ${ki(e.ink,e.popRimAlpha)}) drop-shadow(${e.popShadow});`].join(" ")}var Fu,XF,u9,Cm=L(()=>{Tu();Fu=Object.freeze({light:Object.freeze({bg:"#F7F6F2",ink:"#23272B",muted:"#6E7168",line:"#DDD9D0",card:"#FFFFFF",taught:"#2E7D4F",corpus:"#5A80AC",entail:"#B07C2E",alert:"#B0503F",popRimAlpha:.66,popShadow:"0 1px 1.2px rgba(0, 0, 0, .30)"}),dark:Object.freeze({bg:"#15181C",ink:"#E7E5DF",muted:"#9A9E95",line:"#2B3036",card:"#1C2126",taught:"#5FBE8B",corpus:"#6C93BF",entail:"#D9A554",alert:"#D08070",popRimAlpha:.45,popShadow:"0 1px 1.4px rgba(0, 0, 0, .55)"})}),XF=[.35,.65,1];u9=`
|
|
172
172
|
:root { color-scheme: light dark; ${Du(Fu.light)} }
|
|
173
173
|
@media (prefers-color-scheme: dark) { :root { ${Du(Fu.dark)} } }
|
|
174
174
|
:root[data-theme="dark"] { ${Du(Fu.dark)} }
|
|
175
175
|
:root[data-theme="light"] { ${Du(Fu.light)} }
|
|
176
|
-
`});var $k=L(()=>{Ei();Cm()});var Sk=L(()=>{Ei();Cm()});var Ek=L(()=>{Ue();vr();Ln();ji()});var kk=L(()=>{Cs();Ue();Ei();Pu();ji()});var Nm,oD,rD,iD,aD,cD,lD,lQ,uQ,ji=L(()=>{vr();Ga();Ei();sk();ts();mu();km();jm();Pu();Lu();Mu();Ue();yk();$k();Sk();Ek();kk();Nm="mgx:world-epoch",oD=new Set(["mgx:currently-in","mgx:located-in","mgx:fixed-in","mgx:stands-locked-in","mgx:hidden-in"]),rD=new Set(["mgx:on-top-of","mgx:on-plane","mgx:under"]),iD="mgx:is-open",aD="mgx:hasMass",cD="mgx:knows-about",lD="mgx:display-name",lQ=new Set([...oD,...rD,iD,aD,cD,lD,"rdf:type",Nm]),uQ=new RegExp("^(?:what\\s+foods?\\s+(?:do\\s+you\\s+know(?:\\s+about)?|have\\s+you\\s+(?:found|seen|heard\\s+(?:about|of))|do\\s+you\\s+know\\s+of)|what\\s+do\\s+you\\s+know\\s+about\\s+(?:any\\s+)?foods?|do\\s+you\\s+know\\s+(?:about|of)\\s+(?:any\\s+)?foods?|where\\s+is\\s+(?:the\\s+)?food)[?.!\\s]*$","i")});var Ri,fQ,pQ,hQ,mQ,gQ,bQ,Ao=L(()=>{Ri=Object.freeze({spiderFly:Object.freeze({spiderInitialMass:15,spiderMassDecrementPerTurn:.5,flyInitialMass:10,flyMassDecrementPerTurn:1,spiderVisionRadius:4,flyVisionRadius:4,eggHatchDelayTurns:3,flySpawnIntervalTurns:3,eggLayMassThreshold:25,eggHatchCount:2,minHatchlingMass:3,webDurationTurns:10}),mud:Object.freeze({moleInitialMass:8,moleMassDecrementPerTurn:.06,moleSpeed:1,moleDigReach:1,voleInitialMass:6,voleMassDecrementPerTurn:.05,voleSpeed:1,voleDigReach:1,badgerInitialMass:20,badgerMassDecrementPerTurn:.08,badgerSpeed:2,badgerDigReach:2,groundhogInitialMass:12,groundhogMassDecrementPerTurn:.06,groundhogSpeed:2,groundhogDigReach:2,meerkatInitialMass:9,meerkatMassDecrementPerTurn:.05,meerkatSpeed:1,meerkatDigReach:1}),mudiii:Object.freeze({predatorInitialMass:20,predatorMassDecrementPerTurn:.08,predatorVisionRadius:4,preyInitialMass:8,preyMassDecrementPerTurn:.06,preyVisionRadius:3,preySpawnIntervalTurns:5,foodSpawnIntervalTurns:3,spawnedFoodMass:2,placedFoodMass:2,maxPreyPopulation:6,maxFoodItems:8,foodVisionGated:!0,blendPreyDecision:!1,preyThreatWeight:.5,teach:!1}),guessNumber:Object.freeze({defaultLo:1,defaultHi:100,maxBound:1e9}),adventure:Object.freeze({teach:!1}),planning:Object.freeze({maxDepth:300})}),fQ=Object.freeze({spider_initial_mass:"spiderInitialMass",spider_mass_decrement_per_turn:"spiderMassDecrementPerTurn",fly_initial_mass:"flyInitialMass",fly_mass_decrement_per_turn:"flyMassDecrementPerTurn",spider_vision_radius:"spiderVisionRadius",fly_vision_radius:"flyVisionRadius",egg_hatch_delay_turns:"eggHatchDelayTurns",fly_spawn_interval_turns:"flySpawnIntervalTurns",egg_lay_mass_threshold:"eggLayMassThreshold",egg_hatch_count:"eggHatchCount",min_hatchling_mass:"minHatchlingMass",web_duration_turns:"webDurationTurns"}),pQ=Object.freeze({mole_initial_mass:"moleInitialMass",mole_mass_decrement_per_turn:"moleMassDecrementPerTurn",mole_speed:"moleSpeed",mole_dig_reach:"moleDigReach",vole_initial_mass:"voleInitialMass",vole_mass_decrement_per_turn:"voleMassDecrementPerTurn",vole_speed:"voleSpeed",vole_dig_reach:"voleDigReach",badger_initial_mass:"badgerInitialMass",badger_mass_decrement_per_turn:"badgerMassDecrementPerTurn",badger_speed:"badgerSpeed",badger_dig_reach:"badgerDigReach",groundhog_initial_mass:"groundhogInitialMass",groundhog_mass_decrement_per_turn:"groundhogMassDecrementPerTurn",groundhog_speed:"groundhogSpeed",groundhog_dig_reach:"groundhogDigReach",meerkat_initial_mass:"meerkatInitialMass",meerkat_mass_decrement_per_turn:"meerkatMassDecrementPerTurn",meerkat_speed:"meerkatSpeed",meerkat_dig_reach:"meerkatDigReach"}),hQ=Object.freeze({predator_initial_mass:"predatorInitialMass",predator_mass_decrement_per_turn:"predatorMassDecrementPerTurn",predator_vision_radius:"predatorVisionRadius",prey_initial_mass:"preyInitialMass",prey_mass_decrement_per_turn:"preyMassDecrementPerTurn",prey_vision_radius:"preyVisionRadius",prey_spawn_interval_turns:"preySpawnIntervalTurns",food_spawn_interval_turns:"foodSpawnIntervalTurns",spawned_food_mass:"spawnedFoodMass",placed_food_mass:"placedFoodMass",max_prey_population:"maxPreyPopulation",max_food_items:"maxFoodItems",food_vision_gated:"foodVisionGated",blend_prey_decision:"blendPreyDecision",prey_threat_weight:"preyThreatWeight",teach:"teach"}),mQ=Object.freeze({teach:"teach"}),gQ=Object.freeze({default_lo:"defaultLo",default_hi:"defaultHi",max_bound:"maxBound"}),bQ=Object.freeze({max_depth:"maxDepth"})});var _k,uD,zu,dD,fD,Tk,Ak,pD,hD,$Q,mD,gD,Ik=L(()=>{Ao();_k="spider-fly",uD=10,zu=Object.freeze({x:2,y:2}),dD=1,fD=Object.freeze({predator:Object.freeze({role:"predator",kind:"spider",idPrefix:"spider",hunts:"prey"}),prey:Object.freeze({role:"prey",kind:"fly",idPrefix:"fly",hunts:null}),food:null}),Tk=(e,t)=>`cell-${e}-${t}`,Ak=(e,t,n,s)=>Math.max(Math.abs(e-n),Math.abs(t-s)),pD=(e,t)=>Ak(e,t,zu.x,zu.y)<=dD,hD=Object.freeze({north:Object.freeze({dx:0,dy:-1}),south:Object.freeze({dx:0,dy:1}),east:Object.freeze({dx:1,dy:0}),west:Object.freeze({dx:-1,dy:0})}),$Q=Object.freeze([Object.freeze(["poodle","dog"]),Object.freeze(["sheepdog","dog"]),Object.freeze(["dog","animal"]),Object.freeze(["spider","arachnid"]),Object.freeze(["arachnid","animal"]),Object.freeze(["fly","insect"]),Object.freeze(["insect","animal"])]),mD="a spider waits in its web; a fly drifts in from the edge of the board. Neither is yours to move. Watch, or address one by name in chat.",gD=Object.freeze({name:_k,gridSize:uD,opening:mD,boardNoun:"board",boardSubject:"board",cast:Object.freeze({predators:1,prey:1}),props:Object.freeze([]),staticWebAt:pD,webHomeCell:Tk(zu.x,zu.y)})});var Ok,Pk,EQ,xQ,kQ,Lm,Ck,Nk,Lk,Pm,jQ,RQ,Uu=L(()=>{Ao();Ok=Object.freeze({predator:"fox",prey:"goblin",spawnedFood:"crumb",placedFood:"morsel"}),Pk=Object.freeze({north:Object.freeze({dx:0,dy:-1}),south:Object.freeze({dx:0,dy:1}),east:Object.freeze({dx:1,dy:0}),west:Object.freeze({dx:-1,dy:0})}),EQ=Object.freeze(["north","northeast","east","southeast","south","southwest","west","northwest"]),xQ=Object.freeze(["blacksmith","bush","cart","fence","house","inn","oak","stall","well"]),kQ=Object.freeze([Ok.spawnedFood,Ok.placedFood]),Lm=e=>Object.freeze({...e,props:Object.freeze(e.props.map(t=>Object.freeze(t))),cast:Object.freeze(e.cast)}),Ck=Lm({name:"town-square",gridSize:12,opening:"a fox prowls the town square; goblins pick over the stalls for scraps. Neither is yours to move. Watch, or address one by name in chat.",cast:{predators:1,prey:3},props:[{id:"house-1",model:"house-1",cell:"cell-8-1",rotation:"180"},{id:"house-2",model:"house-2",cell:"cell-8-2",rotation:"180"},{id:"house-3",model:"house-3",cell:"cell-8-3",rotation:"180"},{id:"well-1",model:"well",cell:"cell-6-7",rotation:"0"},{id:"stall-1",model:"market-stall-1",cell:"cell-3-9",rotation:"90"},{id:"inn-1",model:"inn",cell:"cell-11-10",rotation:"270"}]}),Nk=Lm({name:"town-square-market",gridSize:10,opening:"market day in the town square: two rows of stalls, goblins working the lanes between them, and a fox somewhere among the crowd.",cast:{predators:1,prey:4},props:[{id:"stall-1",model:"market-stall-1",cell:"cell-2-4",rotation:"0"},{id:"stall-2",model:"market-stall-2",cell:"cell-3-4",rotation:"0"},{id:"stall-3",model:"market-stall-1",cell:"cell-4-4",rotation:"0"},{id:"stall-4",model:"market-stall-2",cell:"cell-6-4",rotation:"0"},{id:"stall-5",model:"market-stall-1",cell:"cell-7-4",rotation:"0"},{id:"stall-6",model:"market-stall-2",cell:"cell-8-4",rotation:"0"},{id:"stall-7",model:"market-stall-2",cell:"cell-2-7",rotation:"180"},{id:"stall-8",model:"market-stall-1",cell:"cell-3-7",rotation:"180"},{id:"stall-9",model:"market-stall-2",cell:"cell-4-7",rotation:"180"},{id:"stall-10",model:"market-stall-1",cell:"cell-6-7",rotation:"180"},{id:"stall-11",model:"market-stall-2",cell:"cell-7-7",rotation:"180"},{id:"stall-12",model:"market-stall-1",cell:"cell-8-7",rotation:"180"},{id:"well-1",model:"well",cell:"cell-5-5",rotation:"0"},{id:"blacksmith-1",model:"blacksmith",cell:"cell-10-5",rotation:"270"},{id:"cart-1",model:"cart",cell:"cell-1-1",rotation:"90"},{id:"cart-2",model:"cart",cell:"cell-10-10",rotation:"270"},{id:"bush-1",model:"bush",cell:"cell-10-1",rotation:"0"},{id:"bush-2",model:"bush",cell:"cell-1-10",rotation:"0"}]}),Lk=Lm({name:"town-square-chapel",gridSize:14,opening:"the chapel corner of the town square, fenced to the south and shaded by three oaks. Two foxes hunt here, and two goblins know it.",cast:{predators:2,prey:2},props:[{id:"inn-1",model:"inn",cell:"cell-2-2",rotation:"180"},{id:"house-1",model:"house-1",cell:"cell-3-2",rotation:"180"},{id:"house-2",model:"house-2",cell:"cell-2-3",rotation:"90"},{id:"fence-1",model:"fence",cell:"cell-7-11",rotation:"0"},{id:"fence-2",model:"fence",cell:"cell-8-11",rotation:"0"},{id:"fence-3",model:"fence",cell:"cell-9-11",rotation:"0"},{id:"oak-1",model:"oak-tree",cell:"cell-12-4",rotation:"0"},{id:"oak-2",model:"oak-tree",cell:"cell-12-12",rotation:"90"},{id:"oak-3",model:"oak-tree",cell:"cell-5-8",rotation:"180"}]}),Pm=Object.freeze({[Ck.name]:Ck,[Nk.name]:Nk,[Lk.name]:Lk}),jQ=Object.freeze(Object.keys(Pm)),RQ=Object.freeze([Object.freeze(["fox","canine"]),Object.freeze(["canine","animal"]),Object.freeze(["goblin","humanoid"]),Object.freeze(["humanoid","creature"]),Object.freeze(["creature","animal"]),Object.freeze(["crumb","food"]),Object.freeze(["morsel","food"]),Object.freeze(["food","thing"]),Object.freeze(["prop","thing"])])});var Mm=L(()=>{});var Mk=L(()=>{});var Ha,ZQ,kD,jD,RD,_D,TD,AD,ID,OD,CD,ND,LD,PD,MD,FD,DD,BD,zD,e7,Fm=L(()=>{Uu();Mm();Cs();Ue();vr();Mk();Ve();Ao();Ga();ji();Ha=Object.freeze({predator:{role:"predator",kind:"fox",idPrefix:"fox",hunts:"prey"},prey:{role:"prey",kind:"goblin",idPrefix:"goblin",hunts:null},food:{spawnedKind:"crumb",placedKind:"morsel"}}),ZQ=Object.freeze(["predator","prey"]),kD="mgx:currently-in",jD="mgx:hasMass",RD="mgx:feels",_D="mgx:facing",TD="mgx:driven-facing",AD="mgx:eaten-by",ID="mgx:starved",OD="mgx:placed-by",CD="mgx:model",ND="mgx:rotation",LD="mgx:carrying",PD="mgx:prey-eaten",MD="mgx:web-built-at-turn",FD="mgx:laid-at-turn",DD="mgx:hatched-into",BD="mgx:turn-played",zD=new Set([kD,jD,RD,_D,TD,AD,ID,OD,CD,ND,BD,LD,PD,MD,FD,DD,"rdf:type",Nm]),e7=Object.freeze([...zD].sort())});var w7,y7,Dk=L(()=>{Ik();Uu();Fm();vr();Mu();Ue();Ao();w7=new RegExp("^@(spider|fly)(?:-(\\d+))?[,:]?\\s+the\\s+(spider|fly)(?:-(\\d+))?\\s+is\\s+(?:(north|south|east|west)|at\\s+(cell-\\d+-\\d+))[.!?\\s]*$","i"),y7=Object.freeze({"catch-prey":"caught","eat-agent":"eaten",starve:"starved","lay-egg":"laid","hatch-egg":"hatched","spawn-prey":"spawned"})});var Y7,X7,J7,Q7,Z7,eZ,tZ,VD,KD,HD,qD,Bk,zk,YD,nZ,sZ,Uk=L(()=>{Uu();Fm();ji();Ln();vr();Mu();Ue();Ao();Ga();Mm();Lu();Cs();Y7=Ha.predator.kind,X7=Ha.prey.kind,J7=Ha.food.spawnedKind,Q7=Ha.food.placedKind,Z7=Object.freeze(new Set(["river-crossing"])),eZ=new RegExp("^@(fox|goblin)(?:-(\\d+))?[,:]?\\s+the\\s+(fox|goblin|crumb|morsel)(?:-(\\d+))?\\s+is\\s+(?:(north|south|east|west)|at\\s+(cell-\\d+-\\d+))[.!?\\s]*$","i"),tZ=new RegExp("^who\\s+(?:put|placed|dropped)\\s+(?:(?:the\\s+)?(morsel|crumb)(?:-(\\d+))?|(?:(?:the\\s+)?(?:food|morsel|crumb|that|it)\\s+)?(?:at|on)\\s+(cell-\\d+-\\d+))(?:\\s+there)?[?.!\\s]*$","i"),VD="mgx:currently-in",KD="mgx:hasMass",HD="mgx:feels",qD="mgx:facing",Bk="(fox|goblin|crumb|morsel)(?:-(\\d+))?",zk="(fox|goblin)(?:-(\\d+))?",YD="(crumb|morsel)(?:-(\\d+))?",nZ=[{kind:"placement",predicate:VD,re:new RegExp(`^(?:the\\s+)?${Bk}\\s+is\\s+at\\s+(cell-\\d+-\\d+)[.!\\s]*$`,"i")},{kind:"mass",predicate:KD,re:new RegExp(`^(?:the\\s+)?${Bk}\\s+weighs\\s+(\\d+(?:\\.\\d+)?)[.!\\s]*$`,"i")},{kind:"mood",predicate:HD,re:new RegExp(`^(?:the\\s+)?${zk}\\s+feels\\s+(calm|angry|scared|happy)[.!\\s]*$`,"i")},{kind:"facing",predicate:qD,re:new RegExp(`^(?:the\\s+)?${zk}\\s+faces\\s+(north|south|east|west)[.!\\s]*$`,"i")}],sZ=new RegExp(`^(?:the\\s+)?([a-z][a-z-]*)\\s+(?:put|placed|dropped)\\s+(?:the\\s+)?${YD}\\s+there[.!\\s]*$`,"i")});var Wk=L(()=>{Ga()});var Tt,uZ,dZ,fZ,pZ,hZ,mZ,gZ,bZ,wZ,yZ,$Z,SZ,vZ,EZ,xZ,kZ,jZ,RZ,XD,Gk=L(()=>{Tt=e=>()=>{throw new Error(e+" unavailable in the browser ask bundle")},uZ=Tt("createRequire"),dZ=Tt("readFileSync"),fZ=Tt("access"),pZ=Tt("readFile"),hZ=Tt("writeFile"),mZ=Tt("appendFile"),gZ=Tt("mkdir"),bZ=Tt("mkdtemp"),wZ=Tt("rename"),yZ=Tt("unlink"),$Z=Tt("rm"),SZ=Tt("stat"),vZ=Tt("copyFile"),EZ=Tt("readdir"),xZ=Tt("createReadStream"),kZ=Tt("createWriteStream"),jZ=Tt("randomBytes"),RZ=Tt("spawnSync"),XD=Tt("createInterface")});var At,TZ,AZ,IZ,OZ,CZ,NZ,LZ,PZ,MZ,FZ,DZ,BZ,zZ,UZ,WZ,GZ,VZ,Vk,KZ,Dm=L(()=>{At=e=>()=>{throw new Error(e+" unavailable in the browser ask bundle")},TZ=At("createRequire"),AZ=At("readFileSync"),IZ=At("access"),OZ=At("readFile"),CZ=At("writeFile"),NZ=At("appendFile"),LZ=At("mkdir"),PZ=At("mkdtemp"),MZ=At("rename"),FZ=At("unlink"),DZ=At("rm"),BZ=At("stat"),zZ=At("copyFile"),UZ=At("readdir"),WZ=At("createReadStream"),GZ=At("createWriteStream"),VZ=At("randomBytes"),Vk=At("spawnSync"),KZ=At("createInterface")});var Kk=L(()=>{Dm();Qe();zt();Qe();Sa();sn()});var Hk=L(()=>{});var JD,qk=L(()=>{zt();Qe();Ue();Hk();JD=ne(".tmct","sessions")});var Yk=L(()=>{zt();Qe();gu()});var Xk,fee,Jk=L(()=>{Xk=Object.freeze({countNouns:{class:"Class",classes:"Class",function:"Function",functions:"Function",func:"Function",funcs:"Function",module:"Module",modules:"Module",file:"Module",files:"Module",package:"Package",packages:"Package",method:"Method",methods:"Method",attribute:"Attribute",attributes:"Attribute",variable:"GlobalVariable",variables:"GlobalVariable",global:"GlobalVariable",globals:"GlobalVariable",commit:"Commit",commits:"Commit",session:"Session",sessions:"Session"},classLabels:{Class:["class","classes"],Function:["function","functions"],Module:["module","modules"],Package:["package","packages"],Method:["method","methods"],Attribute:["attribute","attributes"],GlobalVariable:["variable","variables"],Commit:["commit","commits"],Session:["session","sessions"]},helpRows:[["/find <query>","lexical search across the graph"],["/search <query>","alias of /find"],["/context <symbol>","the sized edit bundle for a symbol (start here to change code)"],["/snippet <symbol>","exact source of one function/class/method"],["/describe <symbol>","a symbol's definition, kind and relations"],["/signature <symbol>","a symbol's signature only"],["/members <class>","the methods/attributes of a class"],["/subclasses <class>","the subclasses of a class"],["/impact <module>","what a change to this module or symbol reaches (impact closure)"],["/callers <symbol>","functions that call this symbol"],["/callees <symbol>","functions this symbol calls"],["/tests <symbol>","the tests covering this symbol"],["/untested","symbols with no covering test"],["/history <symbol>","the commit history of this symbol"],["/exports <module>","a module's public exports"],["/arch [package]","the architecture overview (optional package filter)"]],missRecoveryPointer:"for code structure, index this repo with `tmct index`, or point me at a .tmct/graph.json with --repo <path> (or try `npm run example:mini`)."}),fee=Object.freeze({countNouns:{},classLabels:{},helpRows:[],missRecoveryPointer:""})});var It,hee,mee,gee,bee,wee,yee,$ee,See,vee,Eee,xee,kee,jee,Ree,_ee,Tee,Aee,Iee,Qk,Zk=L(()=>{It=e=>()=>{throw new Error(e+" unavailable in the browser ask bundle")},hee=It("createRequire"),mee=It("readFileSync"),gee=It("access"),bee=It("readFile"),wee=It("writeFile"),yee=It("appendFile"),$ee=It("mkdir"),See=It("mkdtemp"),vee=It("rename"),Eee=It("unlink"),xee=It("rm"),kee=It("stat"),jee=It("copyFile"),Ree=It("readdir"),_ee=It("createReadStream"),Tee=It("createWriteStream"),Aee=It("randomBytes"),Iee=It("spawnSync"),Qk=It("createInterface")});var oj={};Nt(oj,{CONTEXT_PASSAGE_PREDICATE:()=>tj,CO_OCCURS_PREDICATE:()=>Wu,ingestUnknownFromAssertions:()=>eB,knownTermsFrom:()=>nj,passageFor:()=>sj});function nj(e,t){let n=new Set;for(let s of e?.individuals||[]){if(s?.class!==Ke)continue;let o=a=>(s.attributes||[]).find(c=>c?.key===a)?.value,r=o("subject"),i=o("object");r&&n.add(V(r)),i&&n.add(V(i))}for(let s of t||[])s?.subject&&n.add(V(s.subject)),s?.object&&n.add(V(s.object));return n}function sj(e,t){let n=e?.surfaceText;if(typeof n=="string"&&n.trim())return n.replace(/\[\[([^\]]+)\]\]/g,"$1").replace(/\s+/g," ").trim();let s=Io(e?.start),o=Io(e?.end);return t?.surface&&s&&o?t.surface.replace("{start}",s).replace("{end}",o):null}function ZD(e,t,n){let s=String(e||"").toLowerCase().replace(/[^a-z0-9\s]/g," ").split(/\s+/).filter(Boolean),o=[],r=new Set;for(let i=0;i<s.length&&o.length<ej;i+=1){let a=[s[i]];i+1<s.length&&a.push(`${s[i]} ${s[i+1]}`);for(let c of a)if(!(QD.has(c)||r.has(c)||n.has(c))&&t.has(c)&&(o.push(c),r.add(c),o.length>=ej))break}return o}async function eB(e,{assertions:t,map:n,mappedFacts:s=[],memory:o,provenancePrefix:r="corpus:unknown",limit:i=500}={}){if(!Array.isArray(t)||!n)return{captured:0,linked:0,appended:0,skipped:0};let a=o||await rt(e),c=nj(a,s),l=new Set,u=[];for(let f of t){if(l.size>=i)break;let h=n.get(f.rel);if(!h||h.ace!=="none")continue;let m=Io(f.start),b=Io(f.end);if(!m||!b)continue;let g=V(m),w=V(b),y=!c.has(g),S=!c.has(w);if(!y&&!S)continue;let T=sj(f,h);if(!T)continue;let v=[[m,b,y],[b,m,S]];for(let[E,I,k]of v){if(!k||l.size>=i)continue;let R=V(E);if(l.has(R))continue;let $=`${r} ${f.rel}`;u.push({subject:E,predicate:tj,object:T,provenance:$}),u.push({subject:E,predicate:Wu,object:I,provenance:$});let _=ZD(T,c,new Set([g,w]));for(let O of _)u.push({subject:E,predicate:Wu,object:O,provenance:$});l.add(R),c.add(R)}}if(!u.length)return{captured:0,linked:0,appended:0,skipped:0};let d=await es(e,u),p=u.filter(f=>f.predicate===Wu).length;return{captured:l.size,linked:p,appended:d.appended,skipped:d.skipped}}var tj,Wu,QD,ej,rj=L(()=>{Ue();qa();tj="mgx:contextPassage",Wu="mgx:coOccursWith",QD=new Set(["a","an","the","is","are","was","were","be","being","been","to","of","for","in","on","at","with","by","as","and","or","that","this","it","its","you","your","related","kind","used"]),ej=3});var aj={};Nt(aj,{MAP_FILE:()=>Xa,SEON_CONCEPTS_FILE:()=>Gu,SEON_DEFINITIONS_FILE:()=>tB,SLICE_FILE:()=>Ya,TIER2_DIR:()=>kr,TIER2_MANIFEST_FILE:()=>nB,WORDNET_DIR:()=>Ja,appendNewFacts:()=>Yu,loadMap:()=>Ku,loadSlice:()=>Vu,preferThenLimit:()=>qu,seedMemory:()=>oB,termText:()=>Io,toFacts:()=>Hu});async function Vu(e=Ya){let t=Qk({input:rx(e,"utf8"),crlfDelay:1/0}),n=[],s=0;for await(let o of t){s+=1;let r=o.trim();if(!r)continue;let i;try{i=JSON.parse(r)}catch(a){throw new Error(`${e}:${s}: not valid JSON: ${a.message}`)}for(let a of["start","rel","end"])if(typeof i[a]!="string"||!i[a])throw new Error(`${e}:${s}: assertion missing "${a}"`);n.push(i)}return n}async function Ku(e=Xa){let n=lr(await Ce(e,"utf8")).relation||[],s=new Map;for(let o of n){if(!o.rel)throw new Error(`${e}: a [[relation]] row is missing "rel"`);if(s.has(o.rel))throw new Error(`${e}: duplicate mapping for ${o.rel}`);if(!sB.has(o.ace))throw new Error(`${e}: ${o.rel} has unknown ace pattern ${JSON.stringify(o.ace)}`);if(o.ace!=="none"&&!o.predicate)throw new Error(`${e}: ${o.rel} maps to ${o.ace} but names no predicate URI`);s.set(o.rel,o)}return s}function Hu(e,t,n="corpus:conceptnet"){let s=[];for(let o of e){let r=t.get(o.rel);if(!r)throw new Error(`slice/map drift: relation ${o.rel} has no row in conceptnet-map.toml`);if(r.ace==="none")continue;let i=Io(o.start),a=Io(o.end);if(!i||!a)continue;let c=r.predicate==="mgx:relatedTo"?n.replace(/^corpus:/,"corpus-weak:"):n;s.push({subject:i,predicate:r.predicate,object:a,provenance:`${c} ${o.rel}`})}return s}function qu(e,t,n){let s=e;if(Array.isArray(t)&&t.length){let o=new Map(t.map((r,i)=>[r,i]));s=s.slice().sort((r,i)=>(o.get(r.predicate)??t.length)-(o.get(i.predicate)??t.length))}return n===void 0?s:s.slice(0,n)}async function Yu(e,t,n){let s=n??await rt(e),o=new Set;for(let c of s.individuals||[]){if(c?.class!=="Fact")continue;let l=u=>(c.attributes||[]).find(d=>d.key===u)?.value;o.add(ij(l("subject"),l("predicate"),l("object")))}let r=0,i=[];for(let c of t){let l=ij(c.subject,c.predicate,c.object);if(o.has(l)){r+=1;continue}o.add(l),i.push(c)}let a=await es(e,i);return{appended:a.appended,skipped:r+a.skipped}}async function oB(e,{limit:t,slicePath:n=Ya,mapPath:s=Xa,prefer:o,provenancePrefix:r,captureUnknownContext:i=!1,unknownContextLimit:a}={}){let[c,l]=await Promise.all([Vu(n),Ku(s)]),u=qu(Hu(c,l,r),o,t),d=await rt(e),{appended:p,skipped:f}=await Yu(e,u,d),h;if(i){let{ingestUnknownFromAssertions:m}=await Promise.resolve().then(()=>(rj(),oj));h=await m(e,{assertions:c,map:l,mappedFacts:u,memory:d,provenancePrefix:r?`${r}-unknown`:void 0,limit:a})}return{appended:p,skipped:f,total:u.length,...h?{unknown:h}:{}}}var rB,_i,Ya,Xa,Gu,tB,kr,nB,Ja,Uee,sB,Io,ij,qa=L(()=>{Ro();zt();Zk();jo();Qe();Fl();Ue();rB={},_i=ne(Se(tn(rB.url)),"..","..",".."),Ya=ne(_i,"corpus","conceptnet","slice.jsonl"),Xa=ne(_i,"src","adapters","corpus","conceptnet-map.toml"),Gu=ne(_i,"corpus","domains","code","concepts.jsonl"),tB=ne(_i,"corpus","domains","code","definitions.jsonl"),kr=ne(_i,"corpus","tier2"),nB=ne(kr,"manifest.json"),Ja=ne(_i,"corpus","wordnet"),Uee=ne(Ja,"manifest.json"),sB=new Set(["subClassOf","type","ObjectProperty","someValuesFrom","disjointWith","property","none"]);Io=e=>{let t=/^\/c\/en\/([^/]+)/.exec(String(e||""));return t?t[1].replace(/_/g," "):null};ij=(e,t,n)=>`${V(e)} ${t} ${V(n)}`});var lj={};Nt(lj,{loadChildPackFacts:()=>cj,seedChildPack:()=>aB});function iB(){return Array.from({length:Gx},(e,t)=>`child-${t.toString(16).padStart(2,"0")}`)}function cj(e,t="corpus:child"){let n=[],s=new Set;for(let o of iB()){let r;try{r=wr(Zs(ne(e,"shards",`${o}.jsonl.gz`))).toString("utf8")}catch{continue}for(let i of r.split(`
|
|
176
|
+
`});var $k=L(()=>{Ei();Cm()});var Sk=L(()=>{Ei();Cm()});var Ek=L(()=>{Ue();vr();Ln();ji()});var kk=L(()=>{Cs();Ue();Ei();Pu();ji()});var Nm,oD,rD,iD,aD,cD,lD,uQ,dQ,ji=L(()=>{vr();Ga();Ei();sk();ts();mu();km();jm();Pu();Lu();Mu();Ue();yk();$k();Sk();Ek();kk();Nm="mgx:world-epoch",oD=new Set(["mgx:currently-in","mgx:located-in","mgx:fixed-in","mgx:stands-locked-in","mgx:hidden-in"]),rD=new Set(["mgx:on-top-of","mgx:on-plane","mgx:under"]),iD="mgx:is-open",aD="mgx:hasMass",cD="mgx:knows-about",lD="mgx:display-name",uQ=new Set([...oD,...rD,iD,aD,cD,lD,"rdf:type",Nm]),dQ=new RegExp("^(?:what\\s+foods?\\s+(?:do\\s+you\\s+know(?:\\s+about)?|have\\s+you\\s+(?:found|seen|heard\\s+(?:about|of))|do\\s+you\\s+know\\s+of)|what\\s+do\\s+you\\s+know\\s+about\\s+(?:any\\s+)?foods?|do\\s+you\\s+know\\s+(?:about|of)\\s+(?:any\\s+)?foods?|where\\s+is\\s+(?:the\\s+)?food)[?.!\\s]*$","i")});var Ri,pQ,hQ,mQ,gQ,bQ,wQ,Ao=L(()=>{Ri=Object.freeze({spiderFly:Object.freeze({spiderInitialMass:15,spiderMassDecrementPerTurn:.5,flyInitialMass:10,flyMassDecrementPerTurn:1,spiderVisionRadius:4,flyVisionRadius:4,eggHatchDelayTurns:3,flySpawnIntervalTurns:3,eggLayMassThreshold:25,eggHatchCount:2,minHatchlingMass:3,webDurationTurns:10}),mud:Object.freeze({moleInitialMass:8,moleMassDecrementPerTurn:.06,moleSpeed:1,moleDigReach:1,voleInitialMass:6,voleMassDecrementPerTurn:.05,voleSpeed:1,voleDigReach:1,badgerInitialMass:20,badgerMassDecrementPerTurn:.08,badgerSpeed:2,badgerDigReach:2,groundhogInitialMass:12,groundhogMassDecrementPerTurn:.06,groundhogSpeed:2,groundhogDigReach:2,meerkatInitialMass:9,meerkatMassDecrementPerTurn:.05,meerkatSpeed:1,meerkatDigReach:1}),mudiii:Object.freeze({predatorInitialMass:20,predatorMassDecrementPerTurn:.08,predatorVisionRadius:4,preyInitialMass:8,preyMassDecrementPerTurn:.06,preyVisionRadius:3,preySpawnIntervalTurns:5,foodSpawnIntervalTurns:3,spawnedFoodMass:2,placedFoodMass:2,maxPreyPopulation:6,maxFoodItems:8,foodVisionGated:!0,blendPreyDecision:!1,preyThreatWeight:.5,teach:!1}),guessNumber:Object.freeze({defaultLo:1,defaultHi:100,maxBound:1e9}),adventure:Object.freeze({teach:!1}),planning:Object.freeze({maxDepth:300})}),pQ=Object.freeze({spider_initial_mass:"spiderInitialMass",spider_mass_decrement_per_turn:"spiderMassDecrementPerTurn",fly_initial_mass:"flyInitialMass",fly_mass_decrement_per_turn:"flyMassDecrementPerTurn",spider_vision_radius:"spiderVisionRadius",fly_vision_radius:"flyVisionRadius",egg_hatch_delay_turns:"eggHatchDelayTurns",fly_spawn_interval_turns:"flySpawnIntervalTurns",egg_lay_mass_threshold:"eggLayMassThreshold",egg_hatch_count:"eggHatchCount",min_hatchling_mass:"minHatchlingMass",web_duration_turns:"webDurationTurns"}),hQ=Object.freeze({mole_initial_mass:"moleInitialMass",mole_mass_decrement_per_turn:"moleMassDecrementPerTurn",mole_speed:"moleSpeed",mole_dig_reach:"moleDigReach",vole_initial_mass:"voleInitialMass",vole_mass_decrement_per_turn:"voleMassDecrementPerTurn",vole_speed:"voleSpeed",vole_dig_reach:"voleDigReach",badger_initial_mass:"badgerInitialMass",badger_mass_decrement_per_turn:"badgerMassDecrementPerTurn",badger_speed:"badgerSpeed",badger_dig_reach:"badgerDigReach",groundhog_initial_mass:"groundhogInitialMass",groundhog_mass_decrement_per_turn:"groundhogMassDecrementPerTurn",groundhog_speed:"groundhogSpeed",groundhog_dig_reach:"groundhogDigReach",meerkat_initial_mass:"meerkatInitialMass",meerkat_mass_decrement_per_turn:"meerkatMassDecrementPerTurn",meerkat_speed:"meerkatSpeed",meerkat_dig_reach:"meerkatDigReach"}),mQ=Object.freeze({predator_initial_mass:"predatorInitialMass",predator_mass_decrement_per_turn:"predatorMassDecrementPerTurn",predator_vision_radius:"predatorVisionRadius",prey_initial_mass:"preyInitialMass",prey_mass_decrement_per_turn:"preyMassDecrementPerTurn",prey_vision_radius:"preyVisionRadius",prey_spawn_interval_turns:"preySpawnIntervalTurns",food_spawn_interval_turns:"foodSpawnIntervalTurns",spawned_food_mass:"spawnedFoodMass",placed_food_mass:"placedFoodMass",max_prey_population:"maxPreyPopulation",max_food_items:"maxFoodItems",food_vision_gated:"foodVisionGated",blend_prey_decision:"blendPreyDecision",prey_threat_weight:"preyThreatWeight",teach:"teach"}),gQ=Object.freeze({teach:"teach"}),bQ=Object.freeze({default_lo:"defaultLo",default_hi:"defaultHi",max_bound:"maxBound"}),wQ=Object.freeze({max_depth:"maxDepth"})});var _k,uD,zu,dD,fD,Tk,Ak,pD,hD,SQ,mD,gD,Ik=L(()=>{Ao();_k="spider-fly",uD=10,zu=Object.freeze({x:2,y:2}),dD=1,fD=Object.freeze({predator:Object.freeze({role:"predator",kind:"spider",idPrefix:"spider",hunts:"prey"}),prey:Object.freeze({role:"prey",kind:"fly",idPrefix:"fly",hunts:null}),food:null}),Tk=(e,t)=>`cell-${e}-${t}`,Ak=(e,t,n,s)=>Math.max(Math.abs(e-n),Math.abs(t-s)),pD=(e,t)=>Ak(e,t,zu.x,zu.y)<=dD,hD=Object.freeze({north:Object.freeze({dx:0,dy:-1}),south:Object.freeze({dx:0,dy:1}),east:Object.freeze({dx:1,dy:0}),west:Object.freeze({dx:-1,dy:0})}),SQ=Object.freeze([Object.freeze(["poodle","dog"]),Object.freeze(["sheepdog","dog"]),Object.freeze(["dog","animal"]),Object.freeze(["spider","arachnid"]),Object.freeze(["arachnid","animal"]),Object.freeze(["fly","insect"]),Object.freeze(["insect","animal"])]),mD="a spider waits in its web; a fly drifts in from the edge of the board. Neither is yours to move. Watch, or address one by name in chat.",gD=Object.freeze({name:_k,gridSize:uD,opening:mD,boardNoun:"board",boardSubject:"board",cast:Object.freeze({predators:1,prey:1}),props:Object.freeze([]),staticWebAt:pD,webHomeCell:Tk(zu.x,zu.y)})});var Ok,Pk,xQ,kQ,jQ,Lm,Ck,Nk,Lk,Pm,RQ,_Q,Uu=L(()=>{Ao();Ok=Object.freeze({predator:"fox",prey:"goblin",spawnedFood:"crumb",placedFood:"morsel"}),Pk=Object.freeze({north:Object.freeze({dx:0,dy:-1}),south:Object.freeze({dx:0,dy:1}),east:Object.freeze({dx:1,dy:0}),west:Object.freeze({dx:-1,dy:0})}),xQ=Object.freeze(["north","northeast","east","southeast","south","southwest","west","northwest"]),kQ=Object.freeze(["blacksmith","bush","cart","fence","house","inn","oak","stall","well"]),jQ=Object.freeze([Ok.spawnedFood,Ok.placedFood]),Lm=e=>Object.freeze({...e,props:Object.freeze(e.props.map(t=>Object.freeze(t))),cast:Object.freeze(e.cast)}),Ck=Lm({name:"town-square",gridSize:12,opening:"a fox prowls the town square; goblins pick over the stalls for scraps. Neither is yours to move. Watch, or address one by name in chat.",cast:{predators:1,prey:3},props:[{id:"house-1",model:"house-1",cell:"cell-8-1",rotation:"180"},{id:"house-2",model:"house-2",cell:"cell-8-2",rotation:"180"},{id:"house-3",model:"house-3",cell:"cell-8-3",rotation:"180"},{id:"well-1",model:"well",cell:"cell-6-7",rotation:"0"},{id:"stall-1",model:"market-stall-1",cell:"cell-3-9",rotation:"90"},{id:"inn-1",model:"inn",cell:"cell-11-10",rotation:"270"}]}),Nk=Lm({name:"town-square-market",gridSize:10,opening:"market day in the town square: two rows of stalls, goblins working the lanes between them, and a fox somewhere among the crowd.",cast:{predators:1,prey:4},props:[{id:"stall-1",model:"market-stall-1",cell:"cell-2-4",rotation:"0"},{id:"stall-2",model:"market-stall-2",cell:"cell-3-4",rotation:"0"},{id:"stall-3",model:"market-stall-1",cell:"cell-4-4",rotation:"0"},{id:"stall-4",model:"market-stall-2",cell:"cell-6-4",rotation:"0"},{id:"stall-5",model:"market-stall-1",cell:"cell-7-4",rotation:"0"},{id:"stall-6",model:"market-stall-2",cell:"cell-8-4",rotation:"0"},{id:"stall-7",model:"market-stall-2",cell:"cell-2-7",rotation:"180"},{id:"stall-8",model:"market-stall-1",cell:"cell-3-7",rotation:"180"},{id:"stall-9",model:"market-stall-2",cell:"cell-4-7",rotation:"180"},{id:"stall-10",model:"market-stall-1",cell:"cell-6-7",rotation:"180"},{id:"stall-11",model:"market-stall-2",cell:"cell-7-7",rotation:"180"},{id:"stall-12",model:"market-stall-1",cell:"cell-8-7",rotation:"180"},{id:"well-1",model:"well",cell:"cell-5-5",rotation:"0"},{id:"blacksmith-1",model:"blacksmith",cell:"cell-10-5",rotation:"270"},{id:"cart-1",model:"cart",cell:"cell-1-1",rotation:"90"},{id:"cart-2",model:"cart",cell:"cell-10-10",rotation:"270"},{id:"bush-1",model:"bush",cell:"cell-10-1",rotation:"0"},{id:"bush-2",model:"bush",cell:"cell-1-10",rotation:"0"}]}),Lk=Lm({name:"town-square-chapel",gridSize:14,opening:"the chapel corner of the town square, fenced to the south and shaded by three oaks. Two foxes hunt here, and two goblins know it.",cast:{predators:2,prey:2},props:[{id:"inn-1",model:"inn",cell:"cell-2-2",rotation:"180"},{id:"house-1",model:"house-1",cell:"cell-3-2",rotation:"180"},{id:"house-2",model:"house-2",cell:"cell-2-3",rotation:"90"},{id:"fence-1",model:"fence",cell:"cell-7-11",rotation:"0"},{id:"fence-2",model:"fence",cell:"cell-8-11",rotation:"0"},{id:"fence-3",model:"fence",cell:"cell-9-11",rotation:"0"},{id:"oak-1",model:"oak-tree",cell:"cell-12-4",rotation:"0"},{id:"oak-2",model:"oak-tree",cell:"cell-12-12",rotation:"90"},{id:"oak-3",model:"oak-tree",cell:"cell-5-8",rotation:"180"}]}),Pm=Object.freeze({[Ck.name]:Ck,[Nk.name]:Nk,[Lk.name]:Lk}),RQ=Object.freeze(Object.keys(Pm)),_Q=Object.freeze([Object.freeze(["fox","canine"]),Object.freeze(["canine","animal"]),Object.freeze(["goblin","humanoid"]),Object.freeze(["humanoid","creature"]),Object.freeze(["creature","animal"]),Object.freeze(["crumb","food"]),Object.freeze(["morsel","food"]),Object.freeze(["food","thing"]),Object.freeze(["prop","thing"])])});var Mm=L(()=>{});var Mk=L(()=>{});var Ha,e7,kD,jD,RD,_D,TD,AD,ID,OD,CD,ND,LD,PD,MD,FD,DD,BD,zD,t7,Fm=L(()=>{Uu();Mm();Cs();Ue();vr();Mk();Ve();Ao();Ga();ji();Ha=Object.freeze({predator:{role:"predator",kind:"fox",idPrefix:"fox",hunts:"prey"},prey:{role:"prey",kind:"goblin",idPrefix:"goblin",hunts:null},food:{spawnedKind:"crumb",placedKind:"morsel"}}),e7=Object.freeze(["predator","prey"]),kD="mgx:currently-in",jD="mgx:hasMass",RD="mgx:feels",_D="mgx:facing",TD="mgx:driven-facing",AD="mgx:eaten-by",ID="mgx:starved",OD="mgx:placed-by",CD="mgx:model",ND="mgx:rotation",LD="mgx:carrying",PD="mgx:prey-eaten",MD="mgx:web-built-at-turn",FD="mgx:laid-at-turn",DD="mgx:hatched-into",BD="mgx:turn-played",zD=new Set([kD,jD,RD,_D,TD,AD,ID,OD,CD,ND,BD,LD,PD,MD,FD,DD,"rdf:type",Nm]),t7=Object.freeze([...zD].sort())});var y7,$7,Dk=L(()=>{Ik();Uu();Fm();vr();Mu();Ue();Ao();y7=new RegExp("^@(spider|fly)(?:-(\\d+))?[,:]?\\s+the\\s+(spider|fly)(?:-(\\d+))?\\s+is\\s+(?:(north|south|east|west)|at\\s+(cell-\\d+-\\d+))[.!?\\s]*$","i"),$7=Object.freeze({"catch-prey":"caught","eat-agent":"eaten",starve:"starved","lay-egg":"laid","hatch-egg":"hatched","spawn-prey":"spawned"})});var X7,J7,Q7,Z7,eZ,tZ,nZ,VD,KD,HD,qD,Bk,zk,YD,sZ,oZ,Uk=L(()=>{Uu();Fm();ji();Ln();vr();Mu();Ue();Ao();Ga();Mm();Lu();Cs();X7=Ha.predator.kind,J7=Ha.prey.kind,Q7=Ha.food.spawnedKind,Z7=Ha.food.placedKind,eZ=Object.freeze(new Set(["river-crossing"])),tZ=new RegExp("^@(fox|goblin)(?:-(\\d+))?[,:]?\\s+the\\s+(fox|goblin|crumb|morsel)(?:-(\\d+))?\\s+is\\s+(?:(north|south|east|west)|at\\s+(cell-\\d+-\\d+))[.!?\\s]*$","i"),nZ=new RegExp("^who\\s+(?:put|placed|dropped)\\s+(?:(?:the\\s+)?(morsel|crumb)(?:-(\\d+))?|(?:(?:the\\s+)?(?:food|morsel|crumb|that|it)\\s+)?(?:at|on)\\s+(cell-\\d+-\\d+))(?:\\s+there)?[?.!\\s]*$","i"),VD="mgx:currently-in",KD="mgx:hasMass",HD="mgx:feels",qD="mgx:facing",Bk="(fox|goblin|crumb|morsel)(?:-(\\d+))?",zk="(fox|goblin)(?:-(\\d+))?",YD="(crumb|morsel)(?:-(\\d+))?",sZ=[{kind:"placement",predicate:VD,re:new RegExp(`^(?:the\\s+)?${Bk}\\s+is\\s+at\\s+(cell-\\d+-\\d+)[.!\\s]*$`,"i")},{kind:"mass",predicate:KD,re:new RegExp(`^(?:the\\s+)?${Bk}\\s+weighs\\s+(\\d+(?:\\.\\d+)?)[.!\\s]*$`,"i")},{kind:"mood",predicate:HD,re:new RegExp(`^(?:the\\s+)?${zk}\\s+feels\\s+(calm|angry|scared|happy)[.!\\s]*$`,"i")},{kind:"facing",predicate:qD,re:new RegExp(`^(?:the\\s+)?${zk}\\s+faces\\s+(north|south|east|west)[.!\\s]*$`,"i")}],oZ=new RegExp(`^(?:the\\s+)?([a-z][a-z-]*)\\s+(?:put|placed|dropped)\\s+(?:the\\s+)?${YD}\\s+there[.!\\s]*$`,"i")});var Wk=L(()=>{Ga()});var Tt,dZ,fZ,pZ,hZ,mZ,gZ,bZ,wZ,yZ,$Z,SZ,vZ,EZ,xZ,kZ,jZ,RZ,_Z,XD,Gk=L(()=>{Tt=e=>()=>{throw new Error(e+" unavailable in the browser ask bundle")},dZ=Tt("createRequire"),fZ=Tt("readFileSync"),pZ=Tt("access"),hZ=Tt("readFile"),mZ=Tt("writeFile"),gZ=Tt("appendFile"),bZ=Tt("mkdir"),wZ=Tt("mkdtemp"),yZ=Tt("rename"),$Z=Tt("unlink"),SZ=Tt("rm"),vZ=Tt("stat"),EZ=Tt("copyFile"),xZ=Tt("readdir"),kZ=Tt("createReadStream"),jZ=Tt("createWriteStream"),RZ=Tt("randomBytes"),_Z=Tt("spawnSync"),XD=Tt("createInterface")});var At,AZ,IZ,OZ,CZ,NZ,LZ,PZ,MZ,FZ,DZ,BZ,zZ,UZ,WZ,GZ,VZ,KZ,Vk,HZ,Dm=L(()=>{At=e=>()=>{throw new Error(e+" unavailable in the browser ask bundle")},AZ=At("createRequire"),IZ=At("readFileSync"),OZ=At("access"),CZ=At("readFile"),NZ=At("writeFile"),LZ=At("appendFile"),PZ=At("mkdir"),MZ=At("mkdtemp"),FZ=At("rename"),DZ=At("unlink"),BZ=At("rm"),zZ=At("stat"),UZ=At("copyFile"),WZ=At("readdir"),GZ=At("createReadStream"),VZ=At("createWriteStream"),KZ=At("randomBytes"),Vk=At("spawnSync"),HZ=At("createInterface")});var Kk=L(()=>{Dm();Qe();zt();Qe();Sa();sn()});var Hk=L(()=>{});var JD,qk=L(()=>{zt();Qe();Ue();Hk();JD=ne(".tmct","sessions")});var Yk=L(()=>{zt();Qe();gu()});var Xk,pee,Jk=L(()=>{Xk=Object.freeze({countNouns:{class:"Class",classes:"Class",function:"Function",functions:"Function",func:"Function",funcs:"Function",module:"Module",modules:"Module",file:"Module",files:"Module",package:"Package",packages:"Package",method:"Method",methods:"Method",attribute:"Attribute",attributes:"Attribute",variable:"GlobalVariable",variables:"GlobalVariable",global:"GlobalVariable",globals:"GlobalVariable",commit:"Commit",commits:"Commit",session:"Session",sessions:"Session"},classLabels:{Class:["class","classes"],Function:["function","functions"],Module:["module","modules"],Package:["package","packages"],Method:["method","methods"],Attribute:["attribute","attributes"],GlobalVariable:["variable","variables"],Commit:["commit","commits"],Session:["session","sessions"]},helpRows:[["/find <query>","lexical search across the graph"],["/search <query>","alias of /find"],["/context <symbol>","the sized edit bundle for a symbol (start here to change code)"],["/snippet <symbol>","exact source of one function/class/method"],["/describe <symbol>","a symbol's definition, kind and relations"],["/signature <symbol>","a symbol's signature only"],["/members <class>","the methods/attributes of a class"],["/subclasses <class>","the subclasses of a class"],["/impact <module>","what a change to this module or symbol reaches (impact closure)"],["/callers <symbol>","functions that call this symbol"],["/callees <symbol>","functions this symbol calls"],["/tests <symbol>","the tests covering this symbol"],["/untested","symbols with no covering test"],["/history <symbol>","the commit history of this symbol"],["/exports <module>","a module's public exports"],["/arch [package]","the architecture overview (optional package filter)"]],missRecoveryPointer:"for code structure, index this repo with `tmct index`, or point me at a .tmct/graph.json with --repo <path> (or try `npm run example:mini`)."}),pee=Object.freeze({countNouns:{},classLabels:{},helpRows:[],missRecoveryPointer:""})});var It,mee,gee,bee,wee,yee,$ee,See,vee,Eee,xee,kee,jee,Ree,_ee,Tee,Aee,Iee,Oee,Qk,Zk=L(()=>{It=e=>()=>{throw new Error(e+" unavailable in the browser ask bundle")},mee=It("createRequire"),gee=It("readFileSync"),bee=It("access"),wee=It("readFile"),yee=It("writeFile"),$ee=It("appendFile"),See=It("mkdir"),vee=It("mkdtemp"),Eee=It("rename"),xee=It("unlink"),kee=It("rm"),jee=It("stat"),Ree=It("copyFile"),_ee=It("readdir"),Tee=It("createReadStream"),Aee=It("createWriteStream"),Iee=It("randomBytes"),Oee=It("spawnSync"),Qk=It("createInterface")});var oj={};Nt(oj,{CONTEXT_PASSAGE_PREDICATE:()=>tj,CO_OCCURS_PREDICATE:()=>Wu,ingestUnknownFromAssertions:()=>eB,knownTermsFrom:()=>nj,passageFor:()=>sj});function nj(e,t){let n=new Set;for(let s of e?.individuals||[]){if(s?.class!==Ke)continue;let o=a=>(s.attributes||[]).find(c=>c?.key===a)?.value,r=o("subject"),i=o("object");r&&n.add(V(r)),i&&n.add(V(i))}for(let s of t||[])s?.subject&&n.add(V(s.subject)),s?.object&&n.add(V(s.object));return n}function sj(e,t){let n=e?.surfaceText;if(typeof n=="string"&&n.trim())return n.replace(/\[\[([^\]]+)\]\]/g,"$1").replace(/\s+/g," ").trim();let s=Io(e?.start),o=Io(e?.end);return t?.surface&&s&&o?t.surface.replace("{start}",s).replace("{end}",o):null}function ZD(e,t,n){let s=String(e||"").toLowerCase().replace(/[^a-z0-9\s]/g," ").split(/\s+/).filter(Boolean),o=[],r=new Set;for(let i=0;i<s.length&&o.length<ej;i+=1){let a=[s[i]];i+1<s.length&&a.push(`${s[i]} ${s[i+1]}`);for(let c of a)if(!(QD.has(c)||r.has(c)||n.has(c))&&t.has(c)&&(o.push(c),r.add(c),o.length>=ej))break}return o}async function eB(e,{assertions:t,map:n,mappedFacts:s=[],memory:o,provenancePrefix:r="corpus:unknown",limit:i=500}={}){if(!Array.isArray(t)||!n)return{captured:0,linked:0,appended:0,skipped:0};let a=o||await rt(e),c=nj(a,s),l=new Set,u=[];for(let f of t){if(l.size>=i)break;let h=n.get(f.rel);if(!h||h.ace!=="none")continue;let m=Io(f.start),b=Io(f.end);if(!m||!b)continue;let g=V(m),w=V(b),y=!c.has(g),S=!c.has(w);if(!y&&!S)continue;let T=sj(f,h);if(!T)continue;let v=[[m,b,y],[b,m,S]];for(let[E,I,k]of v){if(!k||l.size>=i)continue;let R=V(E);if(l.has(R))continue;let $=`${r} ${f.rel}`;u.push({subject:E,predicate:tj,object:T,provenance:$}),u.push({subject:E,predicate:Wu,object:I,provenance:$});let _=ZD(T,c,new Set([g,w]));for(let O of _)u.push({subject:E,predicate:Wu,object:O,provenance:$});l.add(R),c.add(R)}}if(!u.length)return{captured:0,linked:0,appended:0,skipped:0};let d=await es(e,u),p=u.filter(f=>f.predicate===Wu).length;return{captured:l.size,linked:p,appended:d.appended,skipped:d.skipped}}var tj,Wu,QD,ej,rj=L(()=>{Ue();qa();tj="mgx:contextPassage",Wu="mgx:coOccursWith",QD=new Set(["a","an","the","is","are","was","were","be","being","been","to","of","for","in","on","at","with","by","as","and","or","that","this","it","its","you","your","related","kind","used"]),ej=3});var aj={};Nt(aj,{MAP_FILE:()=>Xa,SEON_CONCEPTS_FILE:()=>Gu,SEON_DEFINITIONS_FILE:()=>tB,SLICE_FILE:()=>Ya,TIER2_DIR:()=>kr,TIER2_MANIFEST_FILE:()=>nB,WORDNET_DIR:()=>Ja,appendNewFacts:()=>Yu,loadMap:()=>Ku,loadSlice:()=>Vu,preferThenLimit:()=>qu,seedMemory:()=>oB,termText:()=>Io,toFacts:()=>Hu});async function Vu(e=Ya){let t=Qk({input:rx(e,"utf8"),crlfDelay:1/0}),n=[],s=0;for await(let o of t){s+=1;let r=o.trim();if(!r)continue;let i;try{i=JSON.parse(r)}catch(a){throw new Error(`${e}:${s}: not valid JSON: ${a.message}`)}for(let a of["start","rel","end"])if(typeof i[a]!="string"||!i[a])throw new Error(`${e}:${s}: assertion missing "${a}"`);n.push(i)}return n}async function Ku(e=Xa){let n=lr(await Ce(e,"utf8")).relation||[],s=new Map;for(let o of n){if(!o.rel)throw new Error(`${e}: a [[relation]] row is missing "rel"`);if(s.has(o.rel))throw new Error(`${e}: duplicate mapping for ${o.rel}`);if(!sB.has(o.ace))throw new Error(`${e}: ${o.rel} has unknown ace pattern ${JSON.stringify(o.ace)}`);if(o.ace!=="none"&&!o.predicate)throw new Error(`${e}: ${o.rel} maps to ${o.ace} but names no predicate URI`);s.set(o.rel,o)}return s}function Hu(e,t,n="corpus:conceptnet"){let s=[];for(let o of e){let r=t.get(o.rel);if(!r)throw new Error(`slice/map drift: relation ${o.rel} has no row in conceptnet-map.toml`);if(r.ace==="none")continue;let i=Io(o.start),a=Io(o.end);if(!i||!a)continue;let c=r.predicate==="mgx:relatedTo"?n.replace(/^corpus:/,"corpus-weak:"):n;s.push({subject:i,predicate:r.predicate,object:a,provenance:`${c} ${o.rel}`})}return s}function qu(e,t,n){let s=e;if(Array.isArray(t)&&t.length){let o=new Map(t.map((r,i)=>[r,i]));s=s.slice().sort((r,i)=>(o.get(r.predicate)??t.length)-(o.get(i.predicate)??t.length))}return n===void 0?s:s.slice(0,n)}async function Yu(e,t,n){let s=n??await rt(e),o=new Set;for(let c of s.individuals||[]){if(c?.class!=="Fact")continue;let l=u=>(c.attributes||[]).find(d=>d.key===u)?.value;o.add(ij(l("subject"),l("predicate"),l("object")))}let r=0,i=[];for(let c of t){let l=ij(c.subject,c.predicate,c.object);if(o.has(l)){r+=1;continue}o.add(l),i.push(c)}let a=await es(e,i);return{appended:a.appended,skipped:r+a.skipped}}async function oB(e,{limit:t,slicePath:n=Ya,mapPath:s=Xa,prefer:o,provenancePrefix:r,captureUnknownContext:i=!1,unknownContextLimit:a}={}){let[c,l]=await Promise.all([Vu(n),Ku(s)]),u=qu(Hu(c,l,r),o,t),d=await rt(e),{appended:p,skipped:f}=await Yu(e,u,d),h;if(i){let{ingestUnknownFromAssertions:m}=await Promise.resolve().then(()=>(rj(),oj));h=await m(e,{assertions:c,map:l,mappedFacts:u,memory:d,provenancePrefix:r?`${r}-unknown`:void 0,limit:a})}return{appended:p,skipped:f,total:u.length,...h?{unknown:h}:{}}}var rB,_i,Ya,Xa,Gu,tB,kr,nB,Ja,Wee,sB,Io,ij,qa=L(()=>{Ro();zt();Zk();jo();Qe();Fl();Ue();rB={},_i=ne(Se(tn(rB.url)),"..","..",".."),Ya=ne(_i,"corpus","conceptnet","slice.jsonl"),Xa=ne(_i,"src","adapters","corpus","conceptnet-map.toml"),Gu=ne(_i,"corpus","domains","code","concepts.jsonl"),tB=ne(_i,"corpus","domains","code","definitions.jsonl"),kr=ne(_i,"corpus","tier2"),nB=ne(kr,"manifest.json"),Ja=ne(_i,"corpus","wordnet"),Wee=ne(Ja,"manifest.json"),sB=new Set(["subClassOf","type","ObjectProperty","someValuesFrom","disjointWith","property","none"]);Io=e=>{let t=/^\/c\/en\/([^/]+)/.exec(String(e||""));return t?t[1].replace(/_/g," "):null};ij=(e,t,n)=>`${V(e)} ${t} ${V(n)}`});var lj={};Nt(lj,{loadChildPackFacts:()=>cj,seedChildPack:()=>aB});function iB(){return Array.from({length:Gx},(e,t)=>`child-${t.toString(16).padStart(2,"0")}`)}function cj(e,t="corpus:child"){let n=[],s=new Set;for(let o of iB()){let r;try{r=wr(Zs(ne(e,"shards",`${o}.jsonl.gz`))).toString("utf8")}catch{continue}for(let i of r.split(`
|
|
177
177
|
`)){if(!i.trim())continue;let a;try{a=JSON.parse(i)}catch{continue}if(bm(a))for(let c of a.facts){let l=`${c.subject} ${c.predicate} ${c.object}`;s.has(l)||(s.add(l),n.push({subject:c.subject,predicate:c.predicate,object:c.object,provenance:`${t} ${a.term}`}))}}}return n}async function aB(e,{packDir:t,provenancePrefix:n,limit:s,prefer:o}={}){let r=qu(cj(t,n),o,s),{appended:i,skipped:a}=await Yu(e,r);return{appended:i,skipped:a,total:r.length}}var uj=L(()=>{Ro();Fa();Qe();Au();qa()});var bj={};Nt(bj,{BUILTIN_EXTENSIONS:()=>fB,EXTENSION_KINDS:()=>Xu,activeDomainPacks:()=>Wm,defaultCodeDomainPacks:()=>gj,defaultCodeLaneVocab:()=>mj,isSeedableEntry:()=>pj,mergedLaneVocab:()=>Um,mergedLexiconExtra:()=>hj,resolveExtensions:()=>fj,seedActiveCorpusEntries:()=>mB,validateExtensionEntry:()=>dj,validateExtensionPack:()=>bB});function Ju(){return{seon:{kind:"corpus",active:!1,corpusPath:Gu,provenancePrefix:"corpus:seon"},code:{kind:"pack",active:!1,corpusPath:Gu,provenancePrefix:"corpus:seon",vocabPath:uB,vocabData:Xk,groundingKind:"extraction",groundingAdapter:"tmct index (the graphPaths provider seam)"},conceptnet:{kind:"corpus",active:!1,corpusPath:Ya,provenancePrefix:"corpus:conceptnet",limit:void 0,prefer:dB},human:{kind:"corpus",active:!0,corpusPath:ne(kr,"human.jsonl"),provenancePrefix:"corpus:human"},"human-medium":{kind:"corpus",active:!1,corpusPath:ne(kr,"human-medium.jsonl"),provenancePrefix:"corpus:human-medium"},"human-large":{kind:"corpus",active:!1,corpusPath:ne(kr,"human-large.jsonl"),provenancePrefix:"corpus:human-large"},"tier2-general":{kind:"corpus",active:!1,corpusPath:ne(kr,"general.jsonl"),provenancePrefix:"corpus:tier2-general"},"wordnet-xl":{kind:"corpus",active:!1,corpusPath:ne(Ja,"wordnet-xl.jsonl"),provenancePrefix:"corpus:wordnet-xl"},"wordnet-full":{kind:"corpus",active:!1,corpusPath:ne(Ja,"wordnet-full.jsonl"),provenancePrefix:"corpus:wordnet-full"},namenet:{kind:"corpus",active:!1,corpusPath:ne(cB,"namenet.jsonl"),provenancePrefix:"corpus:namenet"},child:{kind:"corpus",active:!1,shardPackPath:lB,provenancePrefix:"corpus:child"}}}function dj(e,t){if(!t||typeof t!="object")throw new Error(`extension "${e}": entry must be an object`);if(!Xu.includes(t.kind))throw new Error(`extension "${e}": unknown kind ${JSON.stringify(t.kind)} (must be one of ${Xu.join(", ")})`);if(t.active!==void 0&&typeof t.active!="boolean")throw new Error(`extension "${e}": "active" must be a boolean`);if(t.kind==="corpus"&&!t.corpusPath&&!t.shardPackPath)throw new Error(`extension "${e}": a "corpus" entry needs corpus_path or shard_pack_path`);if(t.kind==="ontology"&&!t.corpusPath)throw new Error(`extension "${e}": an "ontology" entry needs ontology_path`);if(t.kind==="lexicon"&&!t.lexiconPath)throw new Error(`extension "${e}": a "lexicon" entry needs lexicon_path`);if(t.kind==="templates"&&!t.templatesPath)throw new Error(`extension "${e}": a "templates" entry needs templates_path`);if(t.kind==="pack"&&!t.corpusPath&&!t.shardPackPath&&!t.lexiconPath&&!t.templatesPath&&!t.phrasebookPath)throw new Error(`extension "${e}": a "pack" entry needs at least one of corpus_path/shard_pack_path/lexicon_path/templates_path/phrasebook_path`);if(t.limit!==void 0&&!Number.isFinite(t.limit))throw new Error(`extension "${e}": "limit" must be a finite number`);if(t.prefer!==void 0&&!Array.isArray(t.prefer))throw new Error(`extension "${e}": "prefer" must be an array of predicate URIs`)}function hB(e,t,n,s){if(!t&&n.kind===void 0)throw new Error(`extension "${e}": an unrecognized extension needs a "kind" (one of ${Xu.join(", ")})`);let o={kind:n.kind!==void 0?n.kind:t?.kind,active:n.active!==void 0?!!n.active:!!t?.active},r=[["corpus_path","corpusPath"],["ontology_path","corpusPath"],["shard_pack_path","shardPackPath"],["lexicon_path","lexiconPath"],["templates_path","templatesPath"],["phrasebook_path","phrasebookPath"],["map_path","mapPath"],["vocab_path","vocabPath"]];for(let[i,a]of r)n[i]!==void 0?o[a]=pB(s,n[i]):t?.[a]!==void 0&&(o[a]=t[a]);return o.provenancePrefix=n.provenance_prefix!==void 0?String(n.provenance_prefix):t?.provenancePrefix??`corpus:${e}`,n.limit!==void 0?o.limit=Number(n.limit):t?.limit!==void 0&&(o.limit=t.limit),n.prefer!==void 0?o.prefer=n.prefer:t?.prefer!==void 0&&(o.prefer=t.prefer),n.grounding_kind!==void 0?o.groundingKind=String(n.grounding_kind):t?.groundingKind!==void 0&&(o.groundingKind=t.groundingKind),n.grounding_adapter!==void 0?o.groundingAdapter=String(n.grounding_adapter):t?.groundingAdapter!==void 0&&(o.groundingAdapter=t.groundingAdapter),o}async function fj(e,{configFile:t}={}){let n=e?await zl(e,t?{file:t}:{}):null,s=Ju(),o=n&&n.extensions&&typeof n.extensions=="object"?n.extensions:{},r=n&&n.bias&&typeof n.bias=="object"?n.bias:{},i=new Set([...Object.keys(s),...Object.keys(o)]),a=new Map;for(let p of i){let f=hB(p,s[p]||null,o[p]||{},e||process.cwd());dj(p,f),a.set(p,f)}let c={};for(let[p,f]of Object.entries(r)){if(typeof f!="number"||!Number.isFinite(f))throw new Error(`[bias] "${p}": bias must be a finite number, got ${JSON.stringify(f)}`);c[p]=f}let u=["seon","conceptnet",...[...a.keys()].filter(p=>p!=="seon"&&p!=="conceptnet").sort()].filter(p=>a.has(p));return{entries:new Map(u.map(p=>[p,a.get(p)])),biasByBundle:c}}function pj(e){return e?e.kind==="corpus"||e.kind==="ontology"?!0:e.kind==="pack"&&!!(e.corpusPath||e.shardPackPath):!1}async function mB(e,t,n={}){let{seedMemory:s}=await Promise.resolve().then(()=>(qa(),aj)),{captureUnknownContext:o,unknownContextLimit:r}=n,i={},a=0,c=0,l=0;for(let[u,d]of t instanceof Map?t:new Map)if(d.active&&pj(d))try{let p=d.shardPackPath?await(await Promise.resolve().then(()=>(uj(),lj))).seedChildPack(e,{packDir:d.shardPackPath,provenancePrefix:d.provenancePrefix,limit:d.limit,prefer:d.prefer}):await s(e,{slicePath:d.corpusPath,mapPath:d.mapPath,provenancePrefix:d.provenancePrefix,limit:d.limit,prefer:d.prefer,captureUnknownContext:o,unknownContextLimit:r});i[u]={appended:p.appended,skipped:p.skipped,total:p.total},a+=p.appended,c+=p.skipped,l+=p.total}catch(p){i[u]={appended:0,skipped:0,total:0,error:p&&p.message?p.message:String(p)}}return{appended:a,skipped:c,total:l,perBundle:i}}async function hj(e,t={}){let n=[];for(let[o,r]of e instanceof Map?e:new Map)r.active&&(r.kind!=="lexicon"&&r.kind!=="pack"||r.lexiconPath&&n.push({name:o,path:r.lexiconPath,bias:t[o]??1}));if(!n.length)return null;n.sort((o,r)=>o.bias-r.bias);let s={nouns:{},verbs:{},adjectives:{},properNames:[]};for(let o of n){let r;try{r=JSON.parse(await Ce(o.path,"utf8"))}catch(i){throw new Error(`extension "${o.name}": lexicon file ${o.path} \u2014 ${i&&i.message?i.message:i}`)}if(Object.assign(s.nouns,r.nouns||{}),Object.assign(s.verbs,r.verbs||{}),Object.assign(s.adjectives,r.adjectives||{}),Array.isArray(r.properNames))for(let i of r.properNames)s.properNames.includes(i)||s.properNames.push(i)}return s}async function Um(e,t={}){let n=[];for(let[o,r]of e instanceof Map?e:new Map)r.active&&r.kind==="pack"&&(!r.vocabPath&&!r.vocabData||n.push({name:o,path:r.vocabPath,data:r.vocabData,bias:t[o]??1}));let s={countNouns:{},classLabels:{},helpRows:[],missRecoveryPointer:""};if(!n.length)return s;n.sort((o,r)=>o.bias-r.bias);for(let o of n){let r;if(o.data)r=o.data;else try{r=JSON.parse(await Ce(o.path,"utf8"))}catch(i){throw new Error(`extension "${o.name}": vocab file ${o.path} \u2014 ${i&&i.message?i.message:i}`)}Object.assign(s.countNouns,r.countNouns||{}),Object.assign(s.classLabels,r.classLabels||{}),Array.isArray(r.helpRows)&&s.helpRows.push(...r.helpRows),r.missRecoveryPointer&&(s.missRecoveryPointer=r.missRecoveryPointer)}return s}function mj(){if(!Bm){let e={...Ju().code,active:!0};Bm=Um(new Map([["code",e]]),{})}return Bm}async function gB(e,t){let n={name:e,groundingKind:t.groundingKind||"",groundingAdapter:t.groundingAdapter||"",commandCount:0,countNounCount:0};if(!t.vocabPath)return n;try{let s=JSON.parse(await Ce(t.vocabPath,"utf8"));n.commandCount=Array.isArray(s.helpRows)?s.helpRows.length:0,n.countNounCount=Object.keys(s.countNouns||{}).length}catch{}return n}async function Wm(e,t={}){let n=[];for(let[o,r]of e instanceof Map?e:new Map)r.active&&r.kind==="pack"&&n.push({name:o,entry:r,bias:t[o]??1});n.sort((o,r)=>o.bias-r.bias||o.name.localeCompare(r.name));let s=[];for(let o of n)s.push(await gB(o.name,o.entry));return s}function gj(){if(!zm){let e={...Ju().code,active:!0};zm=Wm(new Map([["code",e]]),{})}return zm}async function bB(e,t){let n=[],s=o=>o&&($d(o)?o:Xt(e,o));if(t.corpusPath){let o=s(t.corpusPath);try{let r=await Vu(o),i=await Ku(s(t.mapPath)||Xa),a=Hu(r,i,t.provenancePrefix||"corpus:pack");n.push({kind:"corpus",path:o,ok:!0,counts:{assertions:r.length,facts:a.length}})}catch(r){n.push({kind:"corpus",path:o,ok:!1,error:r&&r.message?r.message:String(r)})}}if(t.lexiconPath){let o=s(t.lexiconPath);try{let{loadLexicon:r}=await Promise.resolve().then(()=>(ts(),hx)),i=JSON.parse(await Ce(o,"utf8")),a=r(i);n.push({kind:"lexicon",path:o,ok:!0,counts:{nouns:a.nouns.size,verbs:a.verbs.size,adjectives:a.adjectives.size,properNames:a.properNames.size}})}catch(r){n.push({kind:"lexicon",path:o,ok:!1,error:r&&r.message?r.message:String(r)})}}if(t.templatesPath){let o=s(t.templatesPath);try{let{loadTemplates:r}=await Promise.resolve().then(()=>(bu(),sx)),i=await r(o),a=[...i.keys()].filter(c=>!c.includes(":"));if(a.length)throw new Error(`template id${a.length>1?"s":""} not namespaced "<packname>:<id>": ${a.join(", ")}`);n.push({kind:"templates",path:o,ok:!0,counts:{templates:i.size}})}catch(r){n.push({kind:"templates",path:o,ok:!1,error:r&&r.message?r.message:String(r)})}}if(t.vocabPath){let o=s(t.vocabPath);try{let r=JSON.parse(await Ce(o,"utf8")),i=r.countNouns&&typeof r.countNouns=="object"?Object.keys(r.countNouns).length:0,a=r.classLabels&&typeof r.classLabels=="object"?Object.keys(r.classLabels).length:0,c=Array.isArray(r.helpRows)?r.helpRows.length:0;n.push({kind:"vocab",path:o,ok:!0,counts:{countNouns:i,classLabels:a,helpRows:c}})}catch(r){n.push({kind:"vocab",path:o,ok:!1,error:r&&r.message?r.message:String(r)})}}if(t.kind==="pack"){let o=t.groundingKind;o!=="extraction"&&o!=="taught-only"?n.push({kind:"grounding",path:"(pack manifest)",ok:!1,error:`a "pack" entry needs "grounding_kind" of "extraction" or "taught-only" (got ${JSON.stringify(o??null)})`}):o==="extraction"&&!t.groundingAdapter?n.push({kind:"grounding",path:"(pack manifest)",ok:!1,error:'grounding_kind "extraction" needs "grounding_adapter" naming the adapter'}):n.push({kind:"grounding",path:"(pack manifest)",ok:!0,counts:o==="extraction"?{channel:o,adapter:t.groundingAdapter}:{channel:o}})}return{ok:n.length>0&&n.every(o=>o.ok),results:n}}var Gm,cB,lB,uB,Xu,dB,fB,pB,Bm,zm,Vm=L(()=>{Qe();zt();jo();Jk();Sa();qa();Gm={},cB=ne(Se(tn(Gm.url)),"..","..","corpus","namenet"),lB=ne(Se(tn(Gm.url)),"..","..","corpus","child"),uB=ne(Se(tn(Gm.url)),"..","..","corpus","domains","code","vocab.json"),Xu=Object.freeze(["corpus","lexicon","templates","pack","ontology"]),dB=["rdfs:subClassOf","rdf:type","mgx:usedFor","mgx:partOf","mgx:capableOf","mgx:atLocation","mgx:causes","mgx:desires","mgx:motivatedByGoal","mgx:hasSubevent"];fB=Object.freeze(Ju());pB=(e,t)=>{if(t==null)return;let n=String(t);return $d(n)?n:Xt(e,n)};Bm=null;zm=null});var wj=L(()=>{});var yj=L(()=>{Qe();Ro();zt();hm();Gk();Dm();sn();Kk();Fe();qk();gu();Yk();Pi();Vm();Ua();Ao();mu();Pu();pm();gm();$r();wj()});var $j={};Nt($j,{proseLemma:()=>$B});function $B(){if(jr!==void 0)return jr;try{let e=Su();if(!e)return jr=null,jr;let t=e.its,n=new Map;jr=s=>{let o=String(s||"");if(n.has(o))return n.get(o);let r;try{r=String(e.readDoc(o).tokens().out(t.lemma)[0]||o).toLowerCase()}catch{r=o.toLowerCase()}return n.set(o,r),r}}catch{jr=null}return jr}var jr,Sj=L(()=>{vu()});var vj={};Nt(vj,{digestTermFromRows:()=>EB,loadDigestStructureTable:()=>vB,readDigestStructures:()=>SB});var SB,vB,EB,Ej=L(()=>{SB=()=>null,vB=()=>null,EB=()=>null});var Zm={};Nt(Zm,{DEFAULT_MODULE_HOPS:()=>Ym,DEFAULT_PROVE_BRANCHES:()=>Oj,DEFAULT_PROVE_NODES:()=>Cj,DEFAULT_PROVE_STEPS:()=>Ij,MAX_PROVEN_CASES:()=>Lj,MAX_ROLE_ASSERTIONS:()=>Nj,TABLEAU_RULE_CONFIDENCE:()=>TB,buildTableauKb:()=>QB,canonicalKey:()=>He,extractTableauModule:()=>tz,findTableauViolations:()=>ez,isSatisfiable:()=>Jm,moduleHasDlShape:()=>sz,proveEntailment:()=>qB,proveSubsumption:()=>YB,proveSubsumptionOfNegation:()=>XB,toNNF:()=>ln});function He(e){if(!e||typeof e!="object"||typeof e.t!="string")throw new TypeError("canonicalKey: expr must be a concept-expression object carrying a t tag");switch(e.t){case"top":return"top";case"bot":return"bot";case"atom":return`atom(${e.name})`;case"nom":return`nom(${e.ind})`;case"not":return`not(${He(e.c)})`;case"and":return`and(${e.cs.map(He).sort().join(",")})`;case"or":return`or(${e.cs.map(He).sort().join(",")})`;case"some":return`some(${e.r},${He(e.c)})`;case"all":return`all(${e.r},${He(e.c)})`;case"atLeast":return`atLeast(${e.n},${e.r},${He(e.c)})`;case"atMost":return`atMost(${e.n},${e.r},${He(e.c)})`;default:throw new TypeError(`canonicalKey: unknown expression tag "${e.t}"`)}}function Qa(e,t){if(!e||typeof e!="object"||typeof e.t!="string")throw new TypeError("toNNF: expr must be a concept-expression object carrying a t tag");switch(e.t){case"top":return t?{t:"bot"}:{t:"top"};case"bot":return t?{t:"top"}:{t:"bot"};case"atom":return t?{t:"not",c:{t:"atom",name:e.name}}:{t:"atom",name:e.name};case"nom":return t?{t:"not",c:{t:"nom",ind:e.ind}}:{t:"nom",ind:e.ind};case"not":return Qa(e.c,!t);case"and":case"or":{let n=e.t==="and"?"or":"and",s=e.cs.map(o=>Qa(o,t));return s.sort((o,r)=>Ot(He(o),He(r))),{t:t?n:e.t,cs:s}}case"some":case"all":{let n=e.t==="some"?"all":"some",s=Qa(e.c,t);return{t:t?n:e.t,r:e.r,c:s}}case"atLeast":case"atMost":{let n=Qa(e.c,!1);return t?e.t==="atLeast"?{t:"atMost",n:e.n-1,r:e.r,c:n}:{t:"atLeast",n:e.n+1,r:e.r,c:n}:{t:e.t,n:e.n,r:e.r,c:n}}default:throw new TypeError(`toNNF: unknown expression tag "${e.t}"`)}}function ln(e){return Qa(e,!1)}function qt(e){return[...new Set((Array.isArray(e)?e:[]).filter(Boolean))].sort()}function Hm(e,t){let n=Number(e);return Number.isFinite(n)&&n>0?Math.floor(n):t}function jB(e,t){let n=Number(e);return Number.isFinite(n)&&n>=0?Math.floor(n):t}function Aj(e,t){let n=new Set(e),s=!0;for(;s;){s=!1;for(let o of t)n.has(o.subject)&&!n.has(o.object)&&(n.add(o.object),s=!0),n.has(o.object)&&!n.has(o.subject)&&(n.add(o.subject),s=!0)}return n}function RB(e){let t=new Map;for(let[s,o]of e||[])!s||!o||s===o||(t.has(s)||t.set(s,new Set),t.get(s).add(o));let n=new Map;return s=>{if(n.has(s))return n.get(s);let o=new Set,r=[...t.get(s)||[]];for(;r.length;){let i=r.pop();if(!o.has(i)){o.add(i);for(let a of t.get(i)||[])o.has(a)||r.push(a)}}return n.set(s,o),o}}function _B(e,t){let n=(e||[]).map(([r,i])=>[js(r),js(i)]),s=RB(n.map(([r,i])=>[i,r])),o=new Map;for(let r of t){let i=js(r);o.set(i,new Set([i,...s(i)]))}return o}function xj(e,t,n){let s=js(t),o=js(n);if(s===o)return!0;let r=e&&e.roleClosure?e.roleClosure.get(o):null;return r?r.has(s):!1}function ed(e,t,n,s){let o=[];for(let r of e.edges)if(r.from===n&&xj(t,r.r,s))o.push({to:r.to,fromFacts:r.fromFacts});else if(r.to===n){let i=t&&t.inverseOf?t.inverseOf.get(js(r.r)):null;i&&xj(t,i,s)&&o.push({to:r.from,fromFacts:r.fromFacts})}return o}function Qu(e,t){return t==="fresh-0"?!1:e&&e.namedIndividuals&&e.namedIndividuals.has(t)?!0:!AB.test(t)}function Za(e,t){return e<t?`${e}\u241F${t}`:`${t}\u241F${e}`}function IB(e,t,n,s){if(t===n)return;let o=Za(t,n),r=e.inequalityFrom.get(o);e.inequalityFrom.set(o,qt(r?[...r,...s]:s))}function Pj(e,t,n,s){return n===s?!1:Qu(t,n)&&Qu(t,s)?!0:e.inequalityFrom.has(Za(n,s))}function Mj(e,t,n){let s=e.inequalityFrom.get(Za(t,n));return s?s.slice():[]}function OB(e,t,n){let s=Qu(e,t),o=Qu(e,n);return s&&!o?[t,n]:o&&!s?[n,t]:t<n?[t,n]:[n,t]}function Fj(e,t,n,s){if(n===s)return n;let[o,r]=OB(t,n,s),i=e.nodes.get(o),a=e.nodes.get(r);if(!i||!a)return o;for(let[d,{expr:p,from:f}]of a.labels){let h=i.labels.get(d);i.labels.set(d,{expr:p,from:h?qt([...h.from,...f]):f.slice()})}let c=[],l=new Map;for(let d of e.edges){let p=d.from===r?o:d.from,f=d.to===r?o:d.to,h=`${p}\u241F${d.r}\u241F${f}`,m=l.get(h);if(m)m.fromFacts=qt([...m.fromFacts,...d.fromFacts]);else{let b={from:p,r:d.r,to:f,fromFacts:d.fromFacts.slice()};l.set(h,b),c.push(b)}}e.edges=c;for(let d of e.nodes.values())d.parent===r&&(d.parent=o);let u=new Map;for(let[d,p]of e.inequalityFrom){let[f,h]=d.split("\u241F"),m=f===r?o:f,b=h===r?o:h;if(m===b)continue;let g=Za(m,b),w=u.get(g);u.set(g,w?qt([...w,...p]):p)}return e.inequalityFrom=u,e.nodes.delete(r),o}function Xm(e,t){return{id:e,labels:new Map,parent:t??null,branchedOn:new Set,appliedAxioms:new Set,successorCount:0}}function ns(e,t,n){let s=He(t);return e.labels.has(s)?!1:(e.labels.set(s,{expr:t,from:qt(n)}),!0)}function Ti(e){return[...e.labels.entries()].sort((t,n)=>Ot(t[0],n[0]))}function Zu(e){if(e.labels.has("bot"))return{nodeId:e.id,keyA:"bot",keyB:"bot",premises:e.labels.get("bot").from.slice()};let t=[...e.labels.keys()].sort();for(let n of t){let{expr:s,from:o}=e.labels.get(n),r=He(ln(ks(s)));if(r<=n)continue;let i=e.labels.get(r);if(i)return{nodeId:e.id,keyA:n,keyB:r,premises:qt([...o,...i.from])}}return null}function kj(e,t){let n=new Set;for(let s of e.edges)s.to===t&&n.add(s.r);return n}function Dj(e,t,n){let s=[...e.labels.keys()],o=!!(n&&n.inverseOf&&n.inverseOf.size>0),r=o?kj(t,e.id):null,i=e.parent;for(;i;){let a=t.nodes.get(i);if(!a)break;if(s.length===a.labels.size&&s.every(c=>a.labels.has(c))){if(!o)return!0;let c=kj(t,a.id);if(r.size===c.size&&[...r].every(l=>c.has(l)))return!0}i=a.parent}return!1}function jj(e){let t=new Map;for(let[n,s]of e.nodes)t.set(n,{id:s.id,labels:new Map(s.labels),parent:s.parent,branchedOn:new Set(s.branchedOn),appliedAxioms:new Set(s.appliedAxioms),successorCount:s.successorCount});return{nodes:t,edges:e.edges.slice(),closed:!1,clash:null,inequalityFrom:new Map(e.inequalityFrom),choices:(e.choices||[]).slice()}}function CB(e){for(let t of e.nodes.values())for(let[,{expr:n,from:s}]of Ti(t)){if(n.t!=="and")continue;let o=!1;for(let r of n.cs)ns(t,r,s)&&(o=!0);if(o)return{applied:!0,touched:[t.id]}}return{applied:!1,touched:[]}}function NB(e,t){let n=new Map;for(let o of e.nodes.values())for(let r of o.labels.keys())r.startsWith("nom(")&&(n.has(r)||n.set(r,[]),n.get(r).push(o.id));let s=[...n.keys()].sort();for(let o of s){let r=[...new Set(n.get(o))].sort();if(r.length<2)continue;let[i,a]=r;if(Pj(e,t,i,a)){let c=e.nodes.get(i).labels.get(o)?.from||[],l=e.nodes.get(a).labels.get(o)?.from||[];return{kind:"clash",clash:{nodeId:i,keyA:o,keyB:`merge(${i},${a})`,premises:qt([...c,...l,...Mj(e,i,a)])}}}return{kind:"merge",a:i,b:a}}return{kind:"none"}}function LB(e,t){let n=t&&t.transitiveRoles instanceof Set?t.transitiveRoles:null;for(let s of e.nodes.values())for(let[,{expr:o,from:r}]of Ti(s)){if(o.t!=="all")continue;let i=[];for(let{to:a,fromFacts:c}of ed(e,t,s.id,o.r)){let l=e.nodes.get(a);if(!l)continue;let u=[...r,...c];ns(l,o.c,u)&&i.push(l.id),n&&n.has(o.r)&&ns(l,o,u)&&i.push(l.id)}if(i.length)return{applied:!0,touched:i}}return{applied:!1,touched:[]}}function PB(e,t){for(let n of e.nodes.values())for(let s=0;s<t.axioms.length;s+=1){if(n.appliedAxioms.has(s))continue;let o=t.axioms[s];if(n.appliedAxioms.add(s),ns(n,o.disjunction,o.from))return{applied:!0,touched:[n.id]}}return{applied:!1,touched:[]}}function MB(e,t){if(He(t)==="bot")return[];let n=He(ln(ks(t))),s=e.labels.get(n);return s?s.from:null}function FB(e,t,n){return n.some(s=>e.unionOrOneOfIds&&e.unionOrOneOfIds.has(s))&&t.every(s=>s.t==="atom"||s.t==="nom")}function DB(e,t){for(let n of e.nodes.values())for(let[s,{expr:o,from:r}]of Ti(n)){if(o.t!=="or"||n.branchedOn.has(s))continue;let i=[...o.cs].sort((d,p)=>Ot(He(d),He(p)));if(i.some(d=>n.labels.has(He(d)))){n.branchedOn.add(s);continue}let a=i.map(d=>({c:d,clashFrom:MB(n,d)})),c=a.filter(d=>d.clashFrom===null).map(d=>d.c),l=a.filter(d=>d.clashFrom!==null).flatMap(d=>d.clashFrom),u=FB(t,i,r)?{cs:i,from:r}:null;return c.length===0?{kind:"clash",clash:{nodeId:n.id,keyA:He(i[0]),keyB:He(ln(ks(i[0]))),premises:qt([...r,...l])},choice:u}:c.length===1?(n.branchedOn.add(s),ns(n,c[0],[...r,...l]),{kind:"applied",touched:[n.id],choice:u}):(n.branchedOn.add(s),{kind:"split",node:n,from:r,disjuncts:c,choice:u})}return{kind:"none"}}function BB(e,t){for(let n of e.nodes.values())if(!Dj(n,e,t))for(let[,{expr:s,from:o}]of Ti(n)){if(s.t!=="some")continue;let r=He(s.c);if(ed(e,t,n.id,s.r).some(c=>e.nodes.get(c.to)?.labels.has(r)))continue;n.successorCount+=1;let a=Xm(`${n.id}.${n.successorCount}`,n.id);return ns(a,s.c,o),e.nodes.set(a.id,a),e.edges.push({from:n.id,r:s.r,to:a.id,fromFacts:o.slice()}),{applied:!0,touched:[a.id]}}return{applied:!1,touched:[]}}function zB(e,t){for(let n of e.nodes.values())for(let[s,{expr:o,from:r}]of Ti(n)){if(o.t!=="atMost")continue;let i=He(o.c),a=[...new Set(ed(e,t,n.id,o.r).map(u=>u.to))].filter(u=>e.nodes.get(u)?.labels.has(i)).sort();if(a.length<=o.n)continue;let c=[];for(let u=0;u<a.length;u+=1)for(let d=u+1;d<a.length;d+=1)c.push([a[u],a[d]]);if(c.length===0){let u=e.nodes.get(a[0])?.labels.get(i)?.from||[];return{kind:"clash",clash:{nodeId:n.id,keyA:s,keyB:`witness(${a[0]})`,premises:qt([...r,...u])}}}let l=c.filter(([u,d])=>!Pj(e,t,u,d));if(l.length===0){let[u,d]=c[0];return{kind:"clash",clash:{nodeId:n.id,keyA:s,keyB:`merge(${u},${d})`,premises:qt([...r,...Mj(e,u,d)])}}}return{kind:"split-merge",pairs:l}}return{kind:"none"}}function UB(e,t){for(let n of e.nodes.values())if(!Dj(n,e,t))for(let[,{expr:s,from:o}]of Ti(n)){if(s.t!=="atLeast")continue;let r=He(s.c),i=[...new Set(ed(e,t,n.id,s.r).map(c=>c.to))].filter(c=>e.nodes.get(c)?.labels.has(r)).sort();if(i.length>=s.n)continue;n.successorCount+=1;let a=Xm(`${n.id}.${n.successorCount}`,n.id);ns(a,s.c,o),e.nodes.set(a.id,a),e.edges.push({from:n.id,r:s.r,to:a.id,fromFacts:o.slice()});for(let c of i)IB(e,a.id,c,o);return{applied:!0,touched:[a.id]}}return{applied:!1,touched:[]}}function WB(e,t){for(let n of t){let s=e.nodes.get(n),o=s&&Zu(s);if(o)return o}return null}function Rr(e,t){let n=WB(e,t);return n?{kind:"clash",clash:n}:{kind:"applied"}}function GB(e,t){let n=CB(e);if(n.applied)return Rr(e,n.touched);let s=LB(e,t);if(s.applied)return Rr(e,s.touched);let o=NB(e,t);if(o.kind==="clash")return o;if(o.kind==="merge"){let u=Fj(e,t,o.a,o.b);return Rr(e,[u])}let r=PB(e,t);if(r.applied)return Rr(e,r.touched);let i=DB(e,t);if(i.kind==="clash")return i;if(i.kind==="applied")return i.choice&&e.choices.push(i.choice),Rr(e,i.touched);if(i.kind==="split")return i;let a=zB(e,t);if(a.kind==="clash"||a.kind==="split-merge")return a;let c=UB(e,t);if(c.applied)return Rr(e,c.touched);let l=BB(e,t);return l.applied?Rr(e,l.touched):{kind:"done"}}function VB(e){let t=[...e.nodes.values()].map(s=>({id:s.id,parent:s.parent,labels:[...s.labels.entries()].sort((o,r)=>Ot(o[0],r[0])).map(([,{expr:o,from:r}])=>({expr:o,from:r}))})),n=e.edges.map(({from:s,r:o,to:r,fromFacts:i})=>({from:s,r:o,to:r,fromFacts:i.slice()}));return{nodes:t,edges:n}}function KB(e,t,n){let s=Hm(n.maxSteps,Ij),o=Hm(n.maxBranches,Oj),r=Hm(n.maxNodes,Cj),i=[e],a=0,c=1,l=[];for(;i.length;){let u=i.pop();if(u.closed){l.push(u.clash);continue}if(u.nodes.size>r)return{status:"exhausted",reason:"nodes",steps:a,branches:c};for(;;){let d=GB(u,t);if(d.kind==="clash"){let p=d.choice?[...u.choices,d.choice]:u.choices.slice();l.push({...d.clash,choices:p});break}if(d.kind==="applied"){if(a+=1,a>s)return{status:"exhausted",reason:"steps",steps:a,branches:c};if(u.nodes.size>r)return{status:"exhausted",reason:"nodes",steps:a,branches:c};continue}if(d.kind==="split"){if(a+=1,a>s)return{status:"exhausted",reason:"steps",steps:a,branches:c};let p=d.disjuncts.map(f=>{let h=jj(u);d.choice&&h.choices.push(d.choice);let m=h.nodes.get(d.node.id);ns(m,f,d.from);let b=Zu(m);return b&&(h.closed=!0,h.clash={...b,choices:h.choices.slice()}),h});for(let f=p.length-1;f>=0;f-=1){if(c+=1,c>o)return{status:"exhausted",reason:"branches",steps:a,branches:c};i.push(p[f])}break}if(d.kind==="split-merge"){if(a+=1,a>s)return{status:"exhausted",reason:"steps",steps:a,branches:c};let p=d.pairs.map(([f,h])=>{let m=jj(u),b=Fj(m,t,f,h),g=m.nodes.get(b),w=g&&Zu(g);return w&&(m.closed=!0,m.clash={...w,choices:m.choices.slice()}),m});for(let f=p.length-1;f>=0;f-=1){if(c+=1,c>o)return{status:"exhausted",reason:"branches",steps:a,branches:c};i.push(p[f])}break}return{status:"satisfiable",model:VB(u),steps:a,branches:c}}if(c>o)return{status:"exhausted",reason:"branches",steps:a,branches:c}}return{status:"unsatisfiable",clashes:l,steps:a,branches:c}}function HB(e,t){let n=new Map,s=i=>(n.has(i)||n.set(i,Xm(i,null)),n.get(i));for(let i of e.individuals||[])s(i);for(let i of e.assertions||[])ns(s(i.ind),i.expr,i.from);for(let i of t||[])!i||!i.ind||!i.expr||ns(s(i.ind),ln(i.expr),i.from||[]);for(let[i,a]of e.nominalIndividuals||[])ns(s(i),{t:"nom",ind:i},a);let o=new Map;for(let i of e.differentFrom||[]){if(!i||!i.a||!i.b||i.a===i.b)continue;let a=Za(i.a,i.b),c=o.get(a);o.set(a,qt(c?[...c,...i.from]:i.from))}let r=[];for(let i of e.roleAssertions||[])s(i.a),s(i.b),r.push({from:i.a,r:i.r,to:i.b,fromFacts:i.from.slice()});return{nodes:n,edges:r,closed:!1,clash:null,inequalityFrom:o,choices:[]}}function Jm(e,t=[],n={}){let s=HB(e,t);for(let r of s.nodes.values()){let i=Zu(r);if(i){s.closed=!0,s.clash={...i,choices:[]};break}}let o=KB(s,e,n);return o.status==="exhausted"?{satisfiable:null,exhausted:o.reason,steps:o.steps,branches:o.branches}:o.status==="satisfiable"?{satisfiable:!0,model:o.model,steps:o.steps,branches:o.branches}:{satisfiable:!1,closedClashes:o.clashes,steps:o.steps,branches:o.branches}}function Qm(e,t,n){let s=Jm(e,t,n);if(s.satisfiable===null)return{status:"exhausted",reason:s.exhausted,steps:s.steps,branches:s.branches};if(s.satisfiable===!1){let o=qt(s.closedClashes.flatMap(l=>l?.premises||[])),r=new Map;for(let l of s.closedClashes)for(let u of l?.choices||[])for(let d of u.cs)r.set(He(d),d);let i=[...r.keys()].sort(),a=i.slice(0,Lj).map(l=>r.get(l)),c=i.length;return{status:"proved",premises:o,cases:a,casesTotal:c,steps:s.steps,branches:s.branches}}return{status:"disproved",model:s.model,steps:s.steps,branches:s.branches}}function qB(e,t,n,s={}){return Qm(e,[{ind:t,expr:ln(ks(n)),from:[]}],s)}function YB(e,t,n,s={}){let o=ln(_j([De(t),ks(De(n))]));return Qm(e,[{ind:"fresh-0",expr:o,from:[]}],s)}function XB(e,t,n,s={}){let o=ln(_j([De(t),De(n)]));return Qm(e,[{ind:"fresh-0",expr:o,from:[]}],s)}function JB(e){return e?e.keyA==="bot"?"bottom":`complement:${e.keyA}~${e.keyB}`:"unsatisfiable"}function QB(e){let t=Array.isArray(e)?e.filter(P=>P&&P.subject&&P.predicate):[],n=new Map,s=new Map,o=new Map,r=new Map,i=new Map,a=new Map,c=new Map,l=new Map,u=[],d=[],p=[],f=[],h=new Set,m=[],b=[],g=[],w=[],y=(P,K,W)=>{P.has(K)||P.set(K,[]),P.get(K).push(W)};for(let P of t){let K=String(P.predicate).trim().toLowerCase();K==="owl:onproperty"?n.set(P.subject,{object:P.object,id:P.id}):K==="owl:somevaluesfrom"?s.set(P.subject,{object:P.object,id:P.id}):K==="owl:allvaluesfrom"?o.set(P.subject,{object:P.object,id:P.id}):K==="owl:onclass"?r.set(P.subject,{object:P.object,id:P.id}):K==="owl:mincardinality"?i.set(P.subject,{kind:"min",n:Number(P.object),id:P.id}):K==="owl:maxcardinality"?i.set(P.subject,{kind:"max",n:Number(P.object),id:P.id}):K==="owl:cardinality"?i.set(P.subject,{kind:"exact",n:Number(P.object),id:P.id}):K==="rdfs:subclassof"?u.push(P):K==="owl:disjointwith"?d.push(P):K==="rdf:type"?(p.push(P),String(P.object||"").toLowerCase()==="transitiveproperty"&&h.add(P.subject)):K==="mgxneg:subclassof"?f.push(P):K==="owl:unionof"?y(a,P.subject,P):K==="owl:complementof"?c.set(P.subject,P):K==="rdfs:subpropertyof"?m.push(P):K==="owl:differentfrom"?b.push(P):K==="owl:oneof"?y(l,P.subject,P):K==="owl:inverseof"?g.push(P):w.push(P)}let S=new Set;for(let P of p){let K=String(P.object||"").toLowerCase();qm.has(K)||S.add(P.subject)}let T=Aj(S,w),v=P=>T.has(P)||Tj.test(P),E=w.filter(P=>v(P.subject)&&v(P.object)).sort((P,K)=>Ot(P.subject,K.subject)||Ot(P.predicate,K.predicate)||Ot(P.object,K.object)).slice(0,Nj).map(P=>({a:P.subject,r:P.predicate,b:P.object,from:[P.id]})),I=(P,K,W)=>({sub:P,sup:K,from:qt(W),disjunction:ln(Km([ks(P),K]))}),k=[],R=[];for(let P of u){let K=P.object;if(!n.has(K)){k.push(I(De(P.subject),De(K),[P.id]));continue}let W=n.get(K),C=s.get(K);if(C){k.push(I(De(P.subject),xB(W.object,De(C.object)),[P.id,W.id,C.id]));continue}let F=o.get(K);if(F){k.push(I(De(P.subject),kB(W.object,De(F.object)),[P.id,W.id,F.id]));continue}let N=i.get(K),B=r.get(K);if(N&&B){let z=[P.id,W.id,B.id,N.id];N.kind==="min"?k.push(I(De(P.subject),{t:"atLeast",n:N.n,r:W.object,c:De(B.object)},z)):N.kind==="max"?k.push(I(De(P.subject),{t:"atMost",n:N.n,r:W.object,c:De(B.object)},z)):N.kind==="exact"&&(k.push(I(De(P.subject),{t:"atLeast",n:N.n,r:W.object,c:De(B.object)},z)),k.push(I(De(P.subject),{t:"atMost",n:N.n,r:W.object,c:De(B.object)},z)))}}for(let P of d)v(P.subject)?R.push({ind:P.subject,expr:ln(ks(De(P.object))),from:[P.id]}):k.push(I(De(P.subject),ln(ks(De(P.object))),[P.id]));for(let P of p)qm.has(String(P.object||"").toLowerCase())||R.push({ind:P.subject,expr:De(P.object),from:[P.id]});for(let P of f)R.push({ind:P.subject,expr:ln(ks(De(P.object))),from:[P.id]});for(let[P,K]of a){let W=[...K].sort((B,z)=>Ot(String(B.object),String(z.object))),C=W.map(B=>De(B.object)),F=W.map(B=>B.id),N=ln(Km(C));k.push(I(De(P),N,F)),k.push(I(N,De(P),F))}for(let[P,K]of c){let W=ln(ks(De(K.object)));k.push(I(De(P),W,[K.id])),k.push(I(W,De(P),[K.id]))}let $=new Map;for(let[P,K]of l){let W=[...K].sort((N,B)=>Ot(String(N.object),String(B.object))),C=W.map(N=>({t:"nom",ind:N.object})),F=W.map(N=>N.id);k.push(I(De(P),ln(Km(C)),F));for(let N of W){k.push(I({t:"nom",ind:N.object},De(P),[N.id]));let B=$.get(N.object);$.set(N.object,B?qt([...B,N.id]):[N.id])}}let _=b.map(P=>({a:P.subject,b:P.object,from:[P.id]})).sort((P,K)=>Ot(P.a,K.a)||Ot(P.b,K.b)),O=new Map;for(let P of g)O.set(P.subject,P.object),O.has(P.object)||O.set(P.object,P.subject);let x=new Set;for(let{object:P}of n.values())x.add(P);for(let P of E)x.add(P.r);let j=m.map(P=>[P.subject,P.object]).sort((P,K)=>Ot(P[0],K[0])||Ot(P[1],K[1])),M=new Set([...x,...j.flat(),...O.keys(),...O.values()]),D=_B(j,M);k.sort((P,K)=>Ot(He(P.sub),He(K.sub))||Ot(He(P.sup),He(K.sup))||Ot(P.from.join(","),K.from.join(","))),R.sort((P,K)=>Ot(P.ind,K.ind)||Ot(He(P.expr),He(K.expr)));let H=[...new Set([...R.map(P=>P.ind),...E.flatMap(P=>[P.a,P.b])])].sort(),Y=new Set(H),Z=new Set([...[...a.values()].flatMap(P=>P.map(K=>K.id)),...[...l.values()].flatMap(P=>P.map(K=>K.id))]);return{axioms:k,assertions:R,roles:[...x].sort(),individuals:H,transitiveRoles:h,roleClosure:D,namedIndividuals:Y,nominalIndividuals:$,differentFrom:_,inverseOf:O,roleAssertions:E,unionOrOneOfIds:Z}}function ZB(e,t){return{axioms:e.axioms,assertions:(e.assertions||[]).filter(n=>n.ind===t),roles:e.roles,individuals:[t],transitiveRoles:e.transitiveRoles,roleAssertions:e.roleAssertions,roleClosure:e.roleClosure,namedIndividuals:e.namedIndividuals,nominalIndividuals:e.nominalIndividuals,differentFrom:e.differentFrom,inverseOf:e.inverseOf,unionOrOneOfIds:e.unionOrOneOfIds}}function ez(e,t=null,n={}){let s=[...new Set(Array.isArray(t)&&t.length?t:e.individuals||[])].sort(),o=[];for(let r of s){let i=ZB(e,r);if(!i.assertions.length)continue;let a=Jm(i,[],n);if(a.satisfiable===null||a.satisfiable===!0)continue;let c=qt(a.closedClashes.flatMap(l=>l?.premises||[]));o.push({subject:r,premises:c,kind:JB(a.closedClashes[0])})}return o.sort((r,i)=>Ot(r.subject,i.subject)),o}function xs(e,t,n){e.has(t)||e.set(t,new Set),e.get(t).add(n)}function tz(e,t,{hops:n=Ym}={}){let s=Array.isArray(e)?e.filter(j=>j&&j.subject&&j.predicate):[],o=jB(n,Ym),r=new Map,i=new Map,a=new Map,c=new Map,l=new Map,u=new Map,d=new Map,p=new Map,f=new Map,h=new Map,m=new Map,b=[],g=new Map,w=new Set;for(let j of s){if(String(j.predicate).trim().toLowerCase()!=="rdf:type")continue;let M=String(j.object||"").toLowerCase();qm.has(M)||w.add(j.subject)}let y=s.filter(j=>!Rj.has(String(j.predicate).trim().toLowerCase())),S=Aj(w,y),T=j=>S.has(j)||Tj.test(j);for(let j of s){let M=String(j.predicate).trim().toLowerCase();M==="rdfs:subclassof"?(xs(r,j.subject,j.object),xs(i,j.object,j.subject)):M==="owl:onproperty"?a.set(j.subject,j.object):M==="owl:somevaluesfrom"||M==="owl:allvaluesfrom"||M==="owl:onclass"?(c.set(j.subject,j.object),xs(l,j.object,j.subject)):M==="owl:unionof"?(xs(u,j.subject,j.object),xs(d,j.object,j.subject)):M==="owl:complementof"?(p.set(j.subject,j.object),xs(f,j.object,j.subject)):M==="owl:oneof"?(xs(h,j.subject,j.object),xs(m,j.object,j.subject)):!Rj.has(M)&&T(j.subject)&&T(j.object)&&(b.push(j),xs(g,j.subject,j.object),xs(g,j.object,j.subject))}let v=new Map;function E(j){let M=v.get(j);if(M)return M;let D=new Set,H=[...r.get(j)||[],...i.get(j)||[]];for(;H.length;){let Y=H.pop();if(!D.has(Y)){D.add(Y);for(let Z of r.get(Y)||[])D.has(Z)||H.push(Z);for(let Z of i.get(Y)||[])D.has(Z)||H.push(Z)}}v.set(j,D);for(let Y of D)v.has(Y)||v.set(Y,D);return D}let I=new Set,k=new Map,R=[];function $(j,M){if(!j)return;let D=k.get(j);D!==void 0&&D>=M||(k.set(j,M),R.push({term:j,hopsLeft:M}))}let _=[...new Set((Array.isArray(t)?t:[]).map(j=>V(j)).filter(Boolean))];for(let j of _)$(j,o);let O=0;for(;O<R.length;){let{term:j,hopsLeft:M}=R[O];if(O+=1,k.get(j)===M){I.add(j);for(let D of E(j))I.add(D),$(D,M);if(!(M<=0)){c.has(j)&&$(c.get(j),o);for(let D of l.get(j)||[])$(D,o);for(let D of u.get(j)||[])$(D,M-1);for(let D of d.get(j)||[])$(D,M-1);p.has(j)&&$(p.get(j),M-1);for(let D of f.get(j)||[])$(D,M-1);for(let D of h.get(j)||[])$(D,M-1);for(let D of m.get(j)||[])$(D,M-1);for(let D of g.get(j)||[])$(D,o)}}}let x=new Set;for(let[j,M]of a)I.has(j)&&x.add(js(M));for(let j of b)(I.has(j.subject)||I.has(j.object))&&x.add(js(j.predicate));return s.filter(j=>{if(I.has(j.subject)||I.has(j.object))return!0;let M=String(j.predicate).trim().toLowerCase();return M==="rdfs:subpropertyof"||M==="owl:inverseof"||M==="rdf:type"&&String(j.object).toLowerCase()==="transitiveproperty"?x.has(js(j.subject)):!1})}function sz(e){return(Array.isArray(e)?e:[]).some(n=>{let s=String(n?.predicate||"").trim().toLowerCase();return nz.has(s)?!0:s==="rdf:type"&&String(n?.object||"").toLowerCase()==="transitiveproperty"})}var Ot,De,ks,_j,Km,xB,kB,Tj,js,qm,Ij,Oj,Cj,TB,Ym,Nj,Lj,AB,Rj,nz,eg=L(()=>{Ve();Ot=(e,t)=>e<t?-1:e>t?1:0,De=e=>({t:"atom",name:e}),ks=e=>({t:"not",c:e}),_j=e=>({t:"and",cs:e}),Km=e=>({t:"or",cs:e}),xB=(e,t)=>({t:"some",r:e,c:t}),kB=(e,t)=>({t:"all",r:e,c:t});Tj=/[./\\#:@]/;js=e=>V(e);qm=new Set(["restriction","transitiveproperty","class"]),Ij=5e3,Oj=256,Cj=512,TB=.95,Ym=4,Nj=256,Lj=6,AB=/\.\d+$/;Rj=new Set(["owl:onproperty","owl:somevaluesfrom","owl:allvaluesfrom","owl:onclass","owl:mincardinality","owl:maxcardinality","owl:cardinality","rdfs:subclassof","owl:disjointwith","rdf:type","mgxneg:subclassof","owl:unionof","owl:complementof","rdfs:subpropertyof","owl:differentfrom","owl:oneof","owl:inverseof"]);nz=new Set(["owl:unionof","owl:complementof","owl:oneof","owl:allvaluesfrom","owl:mincardinality","owl:maxcardinality","owl:cardinality","rdfs:subpropertyof","owl:inverseof"])});var Vj={};Nt(Vj,{BOT:()=>yn,DEFAULT_EL_BUDGET:()=>rg,DEFAULT_EL_ROUNDS:()=>ig,EL_RESTRICTION_RULE:()=>og,EL_RULE_CONFIDENCE:()=>tg,EL_SUBSUMPTION_RULE:()=>sg,ENTAILED_EL_PROVENANCE:()=>Wj,ENTAILED_EL_RESTRICTION_PROVENANCE:()=>tc,TOP:()=>Oo,classifyEl:()=>yz,elGoalAxioms:()=>zj,elGoalFor:()=>Uj,elUnsatisfiableClasses:()=>wz,normalizeElTBox:()=>ng,proveElSubsumption:()=>bz,saturateEl:()=>td});function rz(e,t,n){for(let s of t)if(typeof e?.[s]!="function")throw new TypeError(`${n} needs a store option carrying { ${t.join(", ")} } (memory/core.mjs's read/write functions) \u2014 missing ${s}`);return e}function iz(e){if(!e)return null;let t=e instanceof Set?[...e]:Array.isArray(e)?e:[],n=new Set;for(let s of t){let o=V(s);o&&n.add(o)}return n.size?n:null}function ng(e,{budget:t=500}={}){let s=[...(Array.isArray(e)?e:[]).filter($=>$&&$.id&&$.subject&&$.predicate&&$.object!==void 0&&$.object!==null)].sort(oz),o=s.length>t,r=o?s.slice(0,t):s,i=new Set,a=new Set,c=$=>{$&&$!==Oo&&$!==yn&&i.add($)},l=new Map,u=new Map,d=new Map,p=new Map,f=new Map,h=new Map,m=[],b=[],g=new Map,w=[];for(let $ of r){if($.subject===Oo||$.subject===yn||$.object===Oo||$.object===yn)continue;let _=$.predicate;lz(_)?(l.set($.subject,$),c($.subject)):uz(_)?(u.set($.subject,$),c($.subject),c($.object)):dz(_)?d.set($.subject,$):fz(_)?(p.set($.subject,$),c($.subject),c($.object)):gz(_)?(f.set($.subject,$),c($.subject)):pz(_)?(h.has($.subject)||h.set($.subject,[]),h.get($.subject).push($),c($.subject),c($.object)):Bj(_)?(m.push($),c($.subject),c($.object)):cz(_)?(b.push($),c($.subject),c($.object)):az(_)&&$.object==="transitiveproperty"?(g.has($.subject)||g.set($.subject,$),a.add($.subject)):hz(_)&&(w.push($),a.add($.subject),a.add($.object))}let y=new Set([...l.keys()].filter($=>u.has($))),S=new Set([...l.keys()].filter($=>d.has($)));for(let $ of S)i.delete($);let T=new Map;for(let $ of y)T.set($,{role:l.get($).object,filler:u.get($).object});let v=new Map;for(let $ of lp(r))$.kind!=="min"&&$.kind!=="exactly"||$.n>=1&&(y.has($.restriction)||!l.has($.restriction)||!p.has($.restriction)||!f.has($.restriction)||(v.set($.restriction,$.onClass),T.set($.restriction,{role:"has",filler:$.onClass})));let E=new Set(h.keys()),I=[],k=new Map;for(let $ of m){let _=$.subject,O=$.object;if(E.has(_)){k.has(_)||k.set(_,$);continue}if(y.has(O)){let{role:x,filler:j}=T.get(O),M=l.get(O),D=u.get(O);I.push({form:"someRight",sub:_,role:x,filler:j,from:[$.id,M.id,D.id]}),I.push({form:"someLeft",role:x,filler:j,sup:O,from:[M.id,D.id]});continue}if(v.has(O)){let x=v.get(O),j=l.get(O),M=p.get(O),D=f.get(O);I.push({form:"someRight",sub:_,role:"has",filler:x,from:[$.id,j.id,M.id,D.id]}),I.push({form:"someLeft",role:"has",filler:x,sup:O,from:[j.id,M.id,D.id]});continue}S.has(O)||I.push({form:"sub",sub:_,sup:O,from:[$.id]})}for(let[$,_]of h){let O=k.get($);if(!O)continue;let x=new Map;for(let H of _)x.has(H.object)||x.set(H.object,H);let j=[...x.keys()].sort();if(j.length<2)continue;let M=j[0],D=[x.get(j[0]).id];for(let H=1;H<j.length;H+=1){let Y=j[H],Z=H===j.length-1,P=Z?O.object:`${M}-and-${Y}`,K=[M,Y].sort(),W=x.get(Y).id,C=Z?[...D,W,O.id]:[...D,W];I.push({form:"and",subs:K,sup:P,from:C}),D=[...D,W],M=P}}for(let $ of b)I.push({form:"and",subs:[$.subject,$.object].sort(),sup:yn,from:[$.id]});let R=[];for(let $ of[...g.keys()].sort())R.push({kind:"transitive",role:$,from:[g.get($).id]});for(let $ of[...w].sort(Zt))R.push({kind:"sub",sub:$.subject,sup:$.object,from:[$.id]});return{axioms:I,roleAxioms:R,concepts:i,roles:a,restrictionOf:T,truncated:o}}function td(e,{budget:t=2e3,rounds:n=64,focus:s=null}={}){let o=e?.axioms||[],r=e?.roleAxioms||[],i=[...e?.concepts||[]].sort(),a=s instanceof Set?s.size?s:null:iz(s),c=(...$)=>!a||$.some(_=>a.has(_)),l=new Map,u=new Map,d=new Map,p=new Map;for(let $ of o)if($.form==="sub")l.has($.sub)||l.set($.sub,[]),l.get($.sub).push({sup:$.sup,from:$.from});else if($.form==="and"){let[_,O]=$.subs;for(let[x,j]of[[_,O],[O,_]])u.has(x)||u.set(x,[]),u.get(x).push({other:j,sup:$.sup,from:$.from})}else if($.form==="someRight")d.has($.sub)||d.set($.sub,[]),d.get($.sub).push({role:$.role,filler:$.filler,from:$.from});else if($.form==="someLeft"){let _=`${$.role}${ue}${$.filler}`;p.has(_)||p.set(_,[]),p.get(_).push({sup:$.sup,from:$.from})}let f=new Map,h=new Set,m=new Map;for(let $ of r)$.kind==="sub"?(f.has($.sub)||f.set($.sub,[]),f.get($.sub).push({sup:$.sup,from:$.from})):$.kind==="transitive"&&(h.add($.role),m.has($.role)||m.set($.role,$.from));let b=new Map;for(let $ of i)b.set($,new Set([$,Oo]));let g=new Map,w=new Map,y=new Map,S=($,_)=>$===_?[]:w.get(`${$}${ue}${_}`)||[],T=($,_)=>y.get(`${$}${ue}${_}`)||[],v=(...$)=>{let _=new Set,O=[];for(let x of $)for(let j of x||[])!j||_.has(j)||(_.add(j),O.push(j));return O},E=0,I=!1,k=0;for(let $=0;$<n;$+=1){k+=1;let _=[];for(let[x,j]of b)for(let M of j)for(let{sup:D,from:H}of l.get(M)||[])j.has(D)||c(x,M,D)&&_.push({kind:"sub",A:x,X:D,from:v(S(x,M),H),sortKey:`1${ue}${x}${ue}${D}${ue}${M}`});for(let[x,j]of b)for(let M of j)for(let{other:D,sup:H,from:Y}of u.get(M)||[])j.has(D)&&(j.has(H)||c(x,M,D,H)&&_.push({kind:"sub",A:x,X:H,from:v(S(x,M),S(x,D),Y),sortKey:`2${ue}${x}${ue}${H}${ue}${[M,D].sort().join(ue)}`}));for(let[x,j]of b)for(let M of j)for(let{role:D,filler:H,from:Y}of d.get(M)||[]){let Z=`${x}${ue}${H}`;(g.get(D)||ec).has(Z)||c(x,M,H)&&_.push({kind:"role",role:D,A:x,B:H,from:v(S(x,M),Y),sortKey:`3${ue}${D}${ue}${x}${ue}${H}${ue}${M}`})}for(let[x,j]of g)for(let M of j){let[D,H]=M.split(ue),Y=b.get(H)||ec;for(let Z of Y)for(let{sup:P,from:K}of p.get(`${x}${ue}${Z}`)||[]){let W=b.get(D);!W||W.has(P)||c(D,H,Z,P)&&_.push({kind:"sub",A:D,X:P,from:v(T(x,M),S(H,Z),K),sortKey:`4${ue}${D}${ue}${P}${ue}${x}${ue}${H}${ue}${Z}`})}}for(let[x,j]of g)for(let M of j){let[D,H]=M.split(ue);if(!(b.get(H)||ec).has(yn))continue;let Y=b.get(D);!Y||Y.has(yn)||c(D,H)&&_.push({kind:"sub",A:D,X:yn,from:v(T(x,M),S(H,yn)),sortKey:`5${ue}${D}${ue}${x}${ue}${H}`})}for(let[x,j]of g)for(let{sup:M,from:D}of f.get(x)||[])for(let H of j){if((g.get(M)||ec).has(H))continue;let[Y,Z]=H.split(ue);c(Y,Z)&&_.push({kind:"role",role:M,A:Y,B:Z,from:v(T(x,H),D),sortKey:`6${ue}${M}${ue}${Y}${ue}${Z}${ue}${x}`})}for(let x of[...h].sort()){let j=g.get(x);if(j)for(let M of j){let[D,H]=M.split(ue);for(let Y of j){let[Z,P]=Y.split(ue);if(Z!==H)continue;let K=`${D}${ue}${P}`;j.has(K)||c(D,H,P)&&_.push({kind:"role",role:x,A:D,B:P,from:v(T(x,M),T(x,Y),m.get(x)),sortKey:`7${ue}${x}${ue}${D}${ue}${P}${ue}${H}`})}}}if(!_.length){I=!0;break}_.sort((x,j)=>x.sortKey<j.sortKey?-1:x.sortKey>j.sortKey?1:0);let O=!1;for(let x of _){if(E>=t)break;if(x.kind==="sub"){let j=b.get(x.A);if(!j||j.has(x.X))continue;j.add(x.X),w.set(`${x.A}${ue}${x.X}`,x.from),E+=1,O=!0}else{g.has(x.role)||g.set(x.role,new Set);let j=g.get(x.role),M=`${x.A}${ue}${x.B}`;if(j.has(M))continue;j.add(M),y.set(`${x.role}${ue}${M}`,x.from),E+=1,O=!0}}if(E>=t)break;if(!O){I=!0;break}}let R=[...b.entries()].filter(([,$])=>$.has(yn)).map(([$])=>$).sort();return{subsumers:b,roleEdges:g,unsatisfiable:R,derivationOf:w,rounds:k,truncated:!I}}function zj(e,t,{budget:n=200}={}){let o=[...(e?.axioms||[]).filter(a=>a.form==="someRight")].sort((a,c)=>{let l=`${a.role}${ue}${a.filler}${ue}${a.sub}`,u=`${c.role}${ue}${c.filler}${ue}${c.sub}`;return l<u?-1:l>u?1:0}),r=[],i=new Set;for(let a of o){let l=[...t?.get(a.filler)||new Set([a.filler,Oo])].filter(u=>u!==Oo&&u!==yn).sort();for(let u of l){let d=`some-${a.role}-${u}`;if(!i.has(d)&&(i.add(d),r.push({form:"someLeft",role:a.role,filler:u,sup:d,from:[]}),r.length>=n))return r}}return r}function Uj(e,t){let n=V(e),s=V(t),o=`some-${n}-${s}`;return{axiom:{form:"someLeft",role:n,filler:s,sup:o,from:[]},name:o}}function bz(e,t,{role:n,filler:s},{budget:o=2e3,rounds:r=64}={}){let i=V(t),a=ng(e,{budget:o}),{axiom:c,name:l}=Uj(n,s),u=new Set(a.concepts);u.add(i),u.add(c.filler);let d={...a,axioms:[...a.axioms,c],concepts:u},p=td(d,{budget:o,rounds:r});return(p.subsumers.get(i)||ec).has(l)?{proved:!0,premises:p.derivationOf.get(`${i}${ue}${l}`)||[]}:{proved:!1,exhausted:p.truncated}}function Gj(e,{budget:t=rg,rounds:n=ig,focus:s=null}={}){let o=ng(e,{budget:t}),r=td(o,{budget:t,rounds:n,focus:s}),i=zj(o,r.subsumers),a=new Map(i.map(d=>[d.sup,{role:d.role,filler:d.filler}])),c={...o,axioms:[...o.axioms,...i]},l=td(c,{budget:t,rounds:n,focus:s}),u=o.truncated||r.truncated||l.truncated;return{normalized:o,goals:i,goalInfo:a,finalPass:l,truncated:u}}function wz(e,t={}){let{finalPass:n,truncated:s}=Gj(e,t);return{unsatisfiable:n.unsatisfiable,premisesOf:o=>n.derivationOf.get(`${o}${ue}${yn}`)||[],truncated:s}}async function yz(e,{budget:t=rg,rounds:n=ig,focus:s=null,maxEnvironments:o=ni,store:r}={}){let{loadMemory:i,readFactRows:a,appendFacts:c}=rz(r,["loadMemory","readFactRows","appendFacts"],"classifyEl"),l=await i(e),u=a(l),{normalized:d,goals:p,goalInfo:f,finalPass:h,truncated:m}=Gj(u,{budget:t,rounds:n,focus:s}),b=new Map;for(let R of u)b.set(`${R.subject}${ue}${R.predicate}${ue}${R.object}`,R.trust);let g=new Map(u.map(R=>[R.id,R])),w=R=>(R||[]).map($=>g.get($)?.trust).filter($=>typeof $=="number"),y=new Set(u.filter(R=>Bj(R.predicate)).map(R=>`${R.subject}${ue}${R.object}`)),S=[],T=[],v=new Set,E=[...h.subsumers.keys()].sort();for(let R of E){let $=h.subsumers.get(R);if($.has(yn))continue;let _=[...$].filter(O=>O!==R&&O!==Oo&&O!==yn).sort();for(let O of _){let x=`${R}${ue}${O}`;if(y.has(x))continue;let j=h.derivationOf.get(x)||[],M=f.get(O);if(M){v.has(O)||(v.add(O),S.push({subject:O,predicate:Gt,object:"owl:Restriction",provenance:tc,justification:[j]}),S.push({subject:O,predicate:Pn,object:M.role,provenance:tc,justification:[j]}),S.push({subject:O,predicate:Mn,object:M.filler,provenance:tc,justification:[j]}));let D=w(j),H=S.length;S.push({subject:R,predicate:Be,object:O,provenance:tc,justification:[j],...D.length?{premiseTrusts:D,ruleConfidence:tg}:{}}),T.push({toWriteIndex:H,subject:R,object:O,rule:og})}else if(d.concepts.has(O)){let D=w(j),H=S.length;S.push({subject:R,predicate:Be,object:O,provenance:Wj,justification:[j],...D.length?{premiseTrusts:D,ruleConfidence:tg}:{}}),T.push({toWriteIndex:H,subject:R,object:O,rule:sg})}}}let{ids:I}=await c(e,S),k=T.map(R=>({id:I[R.toWriteIndex],subject:R.subject,object:R.object,rule:R.rule}));return{derived:k,count:k.length,budget:t,rounds:n,truncated:m,unsatisfiable:h.unsatisfiable,goalCount:p.length}}var ue,oz,Oo,yn,Rs,Bj,az,cz,lz,uz,dz,fz,pz,hz,mz,gz,ec,sg,Wj,og,tc,tg,rg,ig,Kj=L(()=>{Ve();Ft();tr();ue="\u241F",oz=(e,t)=>{let n=String(e.id),s=String(t.id);return n<s?-1:n>s?1:0},Oo="top",yn="bot";Rs=e=>String(e||"").trim().toLowerCase(),Bj=e=>Rs(e)==="rdfs:subclassof",az=e=>Rs(e)==="rdf:type",cz=e=>Rs(e)==="owl:disjointwith",lz=e=>Rs(e)==="owl:onproperty",uz=e=>Rs(e)==="owl:somevaluesfrom",dz=e=>Rs(e)==="owl:allvaluesfrom",fz=e=>Rs(e)==="owl:onclass",pz=e=>Rs(e)==="owl:intersectionof",hz=e=>Rs(e)==="rdfs:subpropertyof",mz=new Set(["owl:cardinality","owl:mincardinality","owl:maxcardinality"]),gz=e=>mz.has(Rs(e));ec=new Set;sg="elSubsumption",Wj=`entailed:${sg}`,og="elRestriction",tc=`entailed:${og}`,tg=.95,rg=2e3,ig=64});var Hj={};Nt(Hj,{DEFAULT_REASONING_CONFIG:()=>nd,resolveReasoningConfig:()=>xz});function vz(e,t){let n=Number(e);return Number.isInteger(n)&&n>0?n:t}function Ez(e,t){return typeof e=="boolean"?e:t}function xz(e){let t=e?.reasoning||{},n={...nd};for(let[s,o]of Object.entries($z))t[s]!==void 0&&(n[o]=vz(t[s],nd[o]));for(let[s,o]of Object.entries(Sz))t[s]!==void 0&&(n[o]=Ez(t[s],nd[o]));return n}var nd,$z,Sz,qj=L(()=>{nd=Object.freeze({syllogiseBudget:50,syllogiseDepth:32,classifyBudget:2e3,classifyRounds:64,maxEnvironments:4,proveSteps:5e3,proveBranches:256,proveNodes:512,askProveFallback:!0,askProveSteps:1e3,askProveBranches:64,askProveNodes:128}),$z=Object.freeze({syllogise_budget:"syllogiseBudget",syllogise_depth:"syllogiseDepth",classify_budget:"classifyBudget",classify_rounds:"classifyRounds",max_environments:"maxEnvironments",prove_steps:"proveSteps",prove_branches:"proveBranches",prove_nodes:"proveNodes",ask_prove_steps:"askProveSteps",ask_prove_branches:"askProveBranches",ask_prove_nodes:"askProveNodes"}),Sz=Object.freeze({ask_prove_fallback:"askProveFallback"})});function bg(e){if(!e)return null;let{node:t,shape:n,kind:s}=e;if(t==="find")return`locate a specific named entity ("${e.term}")`;if(t==="count")return`get a count of ${sd(e.entityType)}`;if(t==="list")return`list/enumerate ${sd(e.entityType)} matching a condition`;if(t==="superlative")return`rank/compare ${sd(e.entityType)} by ${e.metricNoun||e.metric||"a metric"}`;if(t==="anaphora")return"follow up on the previous answer's result set (discourse anaphora)";if(t==="membership")return`understand "${e.term||"an entity"}"'s membership/relationship`;if(t==="clause")return bg(e.clause);if(t==="miss")return null;if(t==="boolean"||t==="qualifier"||t==="reverseSet"||t==="forwardSet"||t==="allOfClass"||t==="temporal"){let o=s||e.inner?.kind;return o&&Vn[o]?Vn[o]:`filter/traverse ${sd(e.entityType)} by a relationship`}return n==="meta"?`understand a vocabulary/definition term ("${e.object}")`:n==="where"?`locate where something is defined ("${e.object}")`:n==="when"?"understand when something last changed (history)":n==="whoLast"?"find who most recently touched something (history)":n==="mentions"?`find where something is mentioned in prose ("${e.object}")`:n==="ask"?s&&Vn[s]||"check a specific subject/object relationship":(n==="reverse"||n==="forward")&&s?Vn[s]||`understand a "${s}" relationship`:"understand a graph relationship"}function xg(e){let t=new Map;for(let n of e)t.has(Xj(n))||t.set(Xj(n),n);return t}function cg(e,t=No){let n=[],s=[];for(let c of e)c.predicate===t&&(s.push([c.subject,c.object]),_r(c)&&n.push([c.subject,c.object]));let o=new Map,r=new Map,i=new Set,a=(c,l,u)=>{!l||!u||l===u||(c.has(l)||c.set(l,new Set),c.get(l).add(u))};for(let[c,l]of s)a(r,c,l),l&&i.add(l);for(let[c,l]of n)a(o,c,l);return{strictEdges:n,broadEdges:s,strictSucc:o,broadSucc:r,reachableHeads:i}}function lg(e,t,n,s,o){let r=s.reachableHeads,i=!1;for(let a of n)if(r.has(a)){i=!0;break}return i?e(t,n,[],s.strictSucc,o)||e(t,n,[],s.broadSucc,o):null}function Iz(e,t){return!/ves$/i.test(e)||!/fe?$/i.test(t)?t:e.slice(0,-1)}async function Oz(e){let t=String(e||"").toLowerCase();try{let{proseLemma:n}=await Promise.resolve().then(()=>(Sj(),$j)),s=n();return s?Iz(t,s(t)):t}catch{return t}}function jg(e){let t=String(e||"").trim();if(/[a-z]ies$/i.test(t))return`${t.slice(0,-3)}y`;if(/[a-z]ses$/i.test(t)){let n=t.slice(0,-2);return/ss$/i.test(n)||Cz.has(n.toLowerCase())?n:t.slice(0,-1)}return/(xes|zes|ches|shes)$/i.test(t)?t.slice(0,-2):/[a-z]s$/i.test(t)&&!/(?:ss|ous)$/i.test(t)?t.slice(0,-1):t}async function ld(e){let t=String(e||"").toLowerCase();if(t==="has"||t==="have")return wi;if(t==="can")return"mgx:capableOf";try{let n=await Oz(t);return n==="have"?wi:fs(`mgx:${n}`)}catch{return fs(`mgx:${t}`)}}function Bz(e,t){let n=String(t||"").match(Dz);return n&&/^mgx:[a-z]+$/.test(e)?{predicate:`${e}-${n[1].toLowerCase()}`,object:n[2].trim()}:{predicate:e,object:String(t||"").trim()}}async function nc(e,t){if(!e||!t)return null;try{let{resolveObject:n}=await Promise.resolve().then(()=>(us(),e$)),s=n(e,t);if(s?.match?.id&&!s.ambiguous)return{id:s.match.id,label:s.match.label}}catch{}return null}function Zj(e){return e.predicate===vR&&e.object==="transitiveproperty"||e.predicate===ER}function pg(e){let t=/^mgx:([a-z][\w-]*)$/i.exec(String(e||""));return t?t[1].toLowerCase():null}function Hz(e){let t=String(e||"").trim(),n=t.toLowerCase();for(let{marker:s,predicate:o}of Kz)if(n!==s&&n.endsWith(` ${s}`)){let r=t.slice(0,t.length-s.length).trim();if(r)return{subject:r,predicate:o}}return{subject:t,predicate:null}}function wg(e){return e.replace(/#node:[0-9a-f]+/g,"")}function _g(e){let t=O$(e),n=e.provenance?` (source: ${wg(e.provenance)})`:"";return`${t?` ${t}`:""}${qz(e)}${n}`}function qz(e){let t=[...new Set((Array.isArray(e?.attributedTo)?e.attributedTo:[]).filter(Boolean))].sort();return t.length?` (${t.length===1?t[0]:`${t.slice(0,-1).join(", ")} and ${t[t.length-1]}`} said)`:""}function Lo(e){return`${to(e)}${_g(e)}`}function se(e){let t=_g(e);return e.predicate===ER?`${vp(e.subject)} implies ${vp(e.object)}${t}`:e.provenance.includes("ace:chat")||e.provenance.includes("teach:chat")?`you told me: ${to(e)}${t}`:e.provenance.includes("corpus-weak:")?`possibly: ${to(e)}${t}`:e.provenance.includes("corpus:")?`${to(e)}${t}`:e.provenance.includes("reference:")?`${to(e)}${t}`:`i learned: ${to(e)}${t}`}function Tg(e,t=null){if(t?.senseScreen?.rows===e)return t.senseScreen.gate;let n=[],s=[];for(let r of e||[])String(r.provenance||"").includes("entailed:")||(r.predicate===No?n.push([r.subject,r.object]):r.predicate===vR&&s.push([r.subject,r.object]));let o=ra({subClassEdges:n,typeEdges:s});return t&&(t.senseScreen={rows:e,gate:o}),o}function TR(e,t,n){for(let s of n)if(e.declines(t,s))return!0;return!1}function tR(e,t,n,{toward:s=null,screen:o=null}={}){let r=se(e);if(!$n.has(e.predicate)||!n.has(e.subject))return r;let i=Iu(e.object,t,{cap:6,stopAt:ul,toward:s});if(o){let l=i.findIndex((u,d)=>d>0&&o.declines(e.object,u));l>0&&(i=i.slice(0,l))}if(i.length<=1)return r;let a=` \u2192 ${i.slice(1).join(" \u2192 ")}`,c=_g(e);return!c||!r.endsWith(c)?r+a:r.slice(0,r.length-c.length)+a+c}function nR(e,t,n,{indent:s="",cache:o=null}={}){let r=t.filter(E=>E.predicate===No).map(E=>[E.subject,E.object]),i=Wa(r),a=Tg(t,o),c=e.map(E=>`${s}${tR(E,i,n,{screen:a})}`),l=e.filter(E=>$n.has(E.predicate)&&n.has(E.subject)),u=[...new Set(l.map(E=>E.object))];if(u.length<2)return{lines:c,grouped:null};let d=t.filter(E=>E.predicate==="owl:disjointWith").map(E=>[E.subject,E.object]),{split:p,clusters:f}=Ou(u,{parents:i,disjointEdges:d});if(!p)return{lines:c,grouped:null};let h=l[0].subject,m=new Map;for(let E of f)for(let I of E.objects)m.set(I,E);let b=e.filter(E=>!($n.has(E.predicate)&&n.has(E.subject))),g=[],w=[],y=0,S=E=>{let I=tR(E,i,n,{screen:a});return y<_e?(y+=1,`${s}${I}`):(w.push(I),null)};for(let E of f){let I=l.filter(k=>m.get(k.object)===E).map(S).filter(Boolean);I.length&&g.push(`${s}${h}, the ${E.label}:
|
|
178
178
|
${I.join(`
|
|
179
179
|
`)}`)}if(b.length){let E=b.map(S).filter(Boolean);E.length&&g.push(`${s}also about ${h}:
|
|
@@ -233,4 +233,4 @@ ${ut.join(`
|
|
|
233
233
|
`),replace:!0}}}return null}}let w=l.match(oR),y=l.match(Co)||$g(l)||w&&`is ${w[1].trim()} a ${w[2].trim()}`.match(Co);if(y){let C=Q(c,En(y[2])),F=r&&eo.test(y[1].trim())?r:y[1],N=new Set(Q(c,F));if([...N].some(q=>C.has(q))){let q=En(y[2]).trim();return{text:`yes \u2014 ${Tr(q)} ${q} is ${Tr(q)} ${q}, trivially: every kind is a kind of itself.`,replace:!0}}let B=await s2(o,F);if(B)for(let q of Q(c,B))N.add(q);let{findIsaChain:z,buildSubClassSuccessors:U,deriveDisjointViolations:G,SUBCLASS_PREDICATE:J,TYPE_PREDICATE:ae,DISJOINT_PREDICATE:pe}=await Promise.resolve().then(()=>(Ft(),mn)),re=_r,ee=p.filter(q=>q.predicate===J&&re(q)),X=p.filter(q=>q.predicate===ae&&re(q)),te=ee.map(q=>[q.subject,q.object]),oe=X.map(q=>[q.subject,q.object]),Te=p.filter(q=>q.predicate===J),ge=p.filter(q=>q.predicate===ae),Ie=ge.map(q=>[q.subject,q.object]),Ee=Te.map(q=>[q.subject,q.object]),xe=U(te),et=U(Ee),ce=d.filter(q=>q.predicate===pe&&re(q)),le=ce.map(q=>[q.subject,q.object]),de=ce.length?G(Ie.concat(Ee),Ee,le,{budget:20,focus:new Set([...N,...C])}):[],ut=q=>{let ke=de.find(We=>We.subject===q&&C.has(We.object));if(!ke)return null;let ye=p.filter(We=>C.has(We.object)&&(We.subject===ke.viaClass||We.subject===ke.subject)).sort(f)[0],Re=ce.find(We=>We.subject===ke.viaClass&&We.object===ke.object||We.subject===ke.object&&We.object===ke.viaClass);return!ye||!Re?null:Jz(ye,Re)},Ct=p.filter(q=>N.has(q.subject)&&C.has(q.object)).sort(f)[0],Yt=d.filter(q=>q.predicate===nl&&N.has(q.subject)&&C.has(q.object)).sort(f)[0],ie=ce.find(q=>N.has(q.subject)&&C.has(q.object)||N.has(q.object)&&C.has(q.subject));if(Ct&&!Yt){let q=ut(Ct.subject);if(q)return q}let qe=AR(Ct,Yt||ie);if(qe)return qe;if(ce.length){let q=Re=>{let We=new Set(Re),Bt=new Set(Re);for(let Me=0;Me<8&&Bt.size;Me+=1){let $e=new Set;for(let[Ye,Po]of Ee)Bt.has(Ye)&&!We.has(Po)&&$e.add(Po);if(!$e.size)break;for(let Ye of $e)We.add(Ye);Bt=$e}return We},ke=q(C),ye=de.find(Re=>N.has(Re.subject)&&ke.has(Re.object)&&!q([Re.viaClass]).has(Re.object)&&!q([Re.object]).has(Re.viaClass));if(ye){let Re=p.filter($e=>N.has($e.subject)&&$e.object===ye.viaClass).sort(f)[0],We=ce.find($e=>$e.subject===ye.viaClass&&$e.object===ye.object||$e.subject===ye.object&&$e.object===ye.viaClass),Bt=!C.has(ye.object),Me=Bt?p.filter($e=>C.has($e.subject)&&$e.object===ye.object).sort(f)[0]:null;if(Re&&We&&(!Bt||Me)){let $e=En(y[2]).trim();return{text:`no \u2014 ${[Re,...Me?[Me]:[]].map(se).join("; ")}; and ${Lo(We)} \u2014 so ${F} can never be ${Tr($e)} ${$e}.`,replace:!0}}}}let $t=await nc(o,F);if($t){let q=new Map;for(let ye of ad(o,$t.id))for(let Re of Q(c,ye.label))!N.has(Re)&&!q.has(Re)&&q.set(Re,ye.label);let ke=p.filter(ye=>q.has(ye.subject)&&C.has(ye.object)).sort(f)[0];if(ke)return{text:`yes \u2014 the code graph says ${$t.label} inherits ${q.get(ke.subject)}, and ${se(ke)}`,replace:!0}}let Ze=Tg(d,a),St=[...N].filter(q=>!TR(Ze,q,C)),Or=q=>(q.predicate===J?ee:X).find(ke=>ke.subject===q.subject&&ke.object===q.object);for(let q of St){let ke=z(q,C,oe,xe,{maxHops:2});if(!ke)continue;let ye=ut(q);if(ye)return ye;let Re=ke.map(Or);if(Re.every(Boolean))return{text:`yes \u2014 ${od(Re)}`,replace:!0}}let A=q=>(q.predicate===J?Te:ge).find(ke=>ke.subject===q.subject&&ke.object===q.object);for(let q of St){let ke=z(q,C,Ie,et,{maxHops:2});if(!ke)continue;let ye=ut(q);if(ye)return ye;let Re=ke.map(A);if(Re.every(Boolean)&&Re.some(re))return{text:`yes \u2014 ${od(Re)}`,replace:!0}}let me=F.match(/^(.*\S)\s+not$/i),Ne=me&&[me[0],r&&eo.test(me[1].trim())?r:me[1]];if(Ne){let q=Q(c,Ne[1]),ke=C,ye=p.filter(Me=>q.has(Me.subject)&&ke.has(Me.object)).sort(f)[0];if(ye)return{text:`no \u2014 ${se(ye)}`,replace:!0};let Re=ce.find(Me=>q.has(Me.subject)&&ke.has(Me.object)||q.has(Me.object)&&ke.has(Me.subject));if(Re)return{text:`yes \u2014 ${se(Re)}`,replace:!0};let We=Ne[1].trim(),Bt=En(y[2]).trim();return{text:`I can't confirm that either way \u2014 nothing I remember links ${We} and ${Bt}. If no ${We} is a ${Bt}, teach me: "no ${We} is a ${Bt}".`,replace:!0,miss:!0}}if(ce.length){let q=G(oe.concat(te),te,le,{budget:10});for(let ke of N){let ye=q.find(Me=>Me.subject===ke&&C.has(Me.object));if(!ye)continue;let Re=X.concat(ee).find(Me=>Me.subject===ye.subject&&Me.object===ye.viaType),We=ce.find(Me=>Me.subject===ye.viaClass&&Me.object===ye.object||Me.subject===ye.object&&Me.object===ye.viaClass),Bt=[Re,We].filter(Boolean).map(se);return{text:`no \u2014 ${Bt.length?Bt.join("; "):`${ye.viaClass} and ${ye.object} are disjoint.`}`,replace:!0}}}let{deriveSomeValuesFromApplication:_s,ON_PROPERTY_PREDICATE:Ts,SOME_VALUES_FROM_PREDICATE:sc,deriveSomeValuesFromSubsumption:i_,ENTAILED_SCM_SVF_PROVENANCE:a_,SCM_SVF_RULE_CONFIDENCE:c_,entailedTrustFrom:Ig}=await Promise.resolve().then(()=>(Ft(),mn)),Og=d.filter(q=>q.predicate===Ts&&re(q)),Cg=d.filter(q=>q.predicate===sc&&re(q));if(Og.length&&Cg.length){let q=new Map(Cg.map($e=>[$e.subject,$e.object])),ke=Og.map($e=>({restriction:$e.subject,property:$e.object,target:q.get($e.subject)})).filter($e=>$e.target),ye=new Set([J,ae,pe,Ts,sc,"owl:intersectionOf"]),Re=d.filter($e=>re($e)&&!ye.has($e.predicate)),We=Re.map($e=>[$e.subject,$e.predicate,$e.object]),Bt=_s(We,oe,te,ke,{budget:10});for(let $e of N){let Ye=Bt.find(Kn=>Kn.subject===$e&&C.has(Kn.object));if(!Ye)continue;let Po=Re.find(Kn=>Kn.subject===Ye.subject&&Kn.predicate===Ye.viaProperty&&Kn.object===Ye.viaValue),Mo=X.find(Kn=>Kn.subject===Ye.viaValue&&Kn.object===Ye.viaType),Ii=[Po,Mo].filter(Boolean).map(se);return{text:`yes \u2014 ${Ii.length?Ii.join("; "):`${Ye.subject} ${Ye.viaProperty} ${Ye.viaValue}, and ${Ye.viaValue} is a ${Ye.viaType}.`}`,replace:!0}}let Me=ke.length>1?i_(ke,te,{budget:10}):[];if(Me.length){let $e=U(te.concat(Me.map(Oe=>[Oe.subject,Oe.object]))),Ye=new Map(ke.map(Oe=>[Oe.restriction,Oe])),Po=new Map;for(let Oe of d)Po.set(`${Oe.subject}\0${Oe.predicate}\0${Oe.object}`,Oe.trust);let Mo=(Oe,ss,un)=>Po.get(`${Oe}\0${ss}\0${un}`),Ii=new Map;for(let Oe of Me){let ss=Ye.get(Oe.subject),un=Ye.get(Oe.object),Sn=[ss&&Mo(Oe.subject,Ts,ss.property),Mo(Oe.subject,sc,Oe.viaY1),un&&Mo(Oe.object,Ts,un.property),Mo(Oe.object,sc,Oe.viaY2),Mo(Oe.viaY1,J,Oe.viaY2)].filter(d_=>typeof d_=="number"),oc=Ig(Sn,c_);oc!==null&&Ii.set(`${Oe.subject}\0${Oe.object}`,oc)}let Kn=Oe=>{if(Oe.predicate!==J)return X.find(Sn=>Sn.subject===Oe.subject&&Sn.object===Oe.object);let ss=ee.find(Sn=>Sn.subject===Oe.subject&&Sn.object===Oe.object);if(ss)return ss;let un=Me.find(Sn=>Sn.subject===Oe.subject&&Sn.object===Oe.object);return un?{subject:un.subject,predicate:J,object:un.object,provenance:a_,trust:Ii.get(`${un.subject}\0${un.object}`)}:void 0};for(let Oe of St){let ss=z(Oe,C,oe,$e,{maxHops:3});if(!ss)continue;let un=ss.map(Kn);if(un.every(Boolean)){let Sn=Ig(un.map(oc=>oc.trust),1);return{text:`yes \u2014 ${od(un)}`,replace:!0,...Sn!==null?{trust:Sn}:{}}}}}}let l_=Q(c,F),bd=p.filter(q=>l_.has(q.subject)).sort(f),An=F.trim(),so=En(y[2]).trim(),u_=St.some(q=>z(q,C,oe,xe,{maxHops:iU})),wd=await GU(e,a,d,An,N,C,so);if(wd?.text)return wd;let yd=!!wd?.budgetExhausted;if(bd.length){let q=bd.slice(0,3).map(se).join("; "),{ON_PROPERTY_PREDICATE:ke,SOME_VALUES_FROM_PREDICATE:ye}=await Promise.resolve().then(()=>(Ft(),mn)),Re=new Set,We=new Set;for(let Ye of d)Ye.predicate===ke?Re.add(Ye.subject):Ye.predicate===ye&&We.add(Ye.subject);let Bt=new Set([...Re].filter(Ye=>We.has(Ye))),$e=bd.some(Ye=>Bt.has(Ye.object))?`The facts to settle it are here, but reaching it means composing a restriction /syllogise doesn't follow. Run "/classify ${An}", then ask me again.`:u_?`The facts to settle it are here, but the chain is longer than I follow while answering. Run "/syllogise ${An}", then ask me again.`:`If it's true, teach me: "${An} is a kind of ${so}". If it isn't, teach me: "no ${An} is a ${so}".`;return{text:`I can't confirm that \u2014 nothing I remember says ${An} is a ${so}. I do know: ${q}. ${$e}`,replace:!0,miss:!0,...yd?{budgetExhausted:!0}:{}}}let Ng=p.filter(q=>N.has(q.object)&&C.has(q.subject)).sort(f)[0];return Ng?{text:`I can't confirm that \u2014 what I know runs the other way: ${se(Ng)}. A kind doesn't reverse. If it's true, teach me: "every ${An} is a ${so}". If it isn't, teach me: "no ${An} is a ${so}".`,replace:!0,miss:!0,...yd?{budgetExhausted:!0}:{}}:!$t&&!B&&!jz(An)&&!d.some(q=>N.has(q.subject)||N.has(q.object))?{text:`I can't confirm that \u2014 I don't know "${An}" at all yet. If it's true, teach me: "${An} is a kind of ${so}". If it isn't, teach me: "no ${An} is a ${so}".`,replace:!0,miss:!0,...yd?{budgetExhausted:!0}:{}}:null}let S=l.match(qU);if(S){let[,C,F,N]=S,{SUBCLASS_PREDICATE:B,ON_PROPERTY_PREDICATE:z,buildCardinalityRestrictions:U,proveCardinalityAtLeast:G,CARDINALITY_RULE_CONFIDENCE:J,entailedTrustFrom:ae}=await Promise.resolve().then(()=>(Ft(),mn)),pe=_r,re=p.filter(te=>te.predicate===B&&pe(te)).map(te=>[te.subject,te.object]),ee=d.filter(te=>(te.predicate===z||fR.has(te.predicate))&&pe(te)),X=U(ee);if(X.length){let te=Q(c,C.trim()),oe=Q(c,N.trim()),Te=Number(F),ge=sR(te,oe,(Ie,Ee)=>G(re,X,Ie,Ee,Te,{}));if(ge){let Ie=d.find(de=>de.predicate===B&&de.subject===ge.viaClass&&de.object===ge.viaRestriction),Ee=Ie?.provenance?` (source: ${wg(Ie.provenance)})`:"",xe=ge.kind==="exactly"?"exactly":"at least",et=(de,ut)=>`${de}${ut===1?"":"s"}`,ce=[Ie?.trust,...ee.filter(de=>de.subject===ge.viaRestriction).map(de=>de.trust),...ge.viaClass!==ge.subject?[p.find(de=>de.predicate===B&&de.subject===ge.subject&&de.object===ge.viaClass)?.trust]:[]].filter(de=>typeof de=="number"),le=ae(ce,J);return{text:`yes \u2014 every ${ge.viaClass} has ${xe} ${ge.n} ${et(ge.object,ge.n)}${Ee}, so at least ${Te} follows.`,replace:!0,...le!==null?{trust:le}:{}}}}}let T=l.match(YU);if(T){let[,C,F]=T,{SUBCLASS_PREDICATE:N,ON_PROPERTY_PREDICATE:B,buildCardinalityRestrictions:z,proveMaxCardinalityZeroDenial:U,CAX_MAXC0_RULE_CONFIDENCE:G,entailedTrustFrom:J}=await Promise.resolve().then(()=>(Ft(),mn)),ae=_r,pe=p.filter(X=>X.predicate===N&&ae(X)).map(X=>[X.subject,X.object]),re=d.filter(X=>(X.predicate===B||fR.has(X.predicate))&&ae(X)),ee=z(re);if(ee.length){let X=Q(c,C.trim()),te=Q(c,F.trim()),oe=sR(X,te,(Te,ge)=>U(pe,ee,Te,ge,{}));if(oe){let Te=d.find(xe=>xe.predicate===N&&xe.subject===oe.viaClass&&xe.object===oe.viaRestriction),ge=Te?.provenance?` (source: ${wg(Te.provenance)})`:"",Ie=[Te?.trust,...re.filter(xe=>xe.subject===oe.viaRestriction).map(xe=>xe.trust),...oe.viaClass!==oe.subject?[p.find(xe=>xe.predicate===N&&xe.subject===oe.subject&&xe.object===oe.viaClass)?.trust]:[]].filter(xe=>typeof xe=="number"),Ee=J(Ie,G);return{text:`no \u2014 every ${oe.viaClass} has at most 0 ${oe.object}${ge}.`,replace:!0,...Ee!==null?{trust:Ee}:{}}}}}let v=l.match(XU);if(v){let C=Q(c,v[1]),F=d.filter(N=>N.predicate===ag&&C.has(N.subject)).sort(f);return F.length?h(F):null}let E=u.match(JU);if(E){let[,C,F]=E,N=Q(c,C.trim()),B=Q(c,F.replace(/^an?\s+/i,"").trim()),z=d.filter(U=>U.predicate===ag&&B.has(U.subject)&&N.has(U.object)).sort(f)[0];return z?{text:`yes \u2014 ${se(z)}`,replace:!0}:{text:`no \u2014 no remembered fact says ${C.trim().toLowerCase()} owns/maintains ${F.trim()}.`,replace:!0}}let I=u.match(QU);if(I){let[,C,F]=I,N=Q(c,C.replace(/^an?\s+/i,"").trim()),B=Q(c,F.trim()),z=d.filter(U=>U.predicate===ag&&N.has(U.subject)&&B.has(U.object)).sort(f)[0];return z?{text:`yes \u2014 ${se(z)}`,replace:!0}:{text:`no \u2014 no remembered fact says ${C.trim().toLowerCase()} is owned by ${F.trim()}.`,replace:!0}}let k=u.match(ZU);if(k){let[,C,F]=k,N=Q(c,C.trim()),B=Q(c,`${F.trim()} method`),z=d.filter(U=>U.predicate===wi&&N.has(U.subject)&&B.has(U.object)).sort(f)[0];return z?{text:`yes \u2014 ${se(z)}`,replace:!0}:null}let R=u.match(e2);if(R){let C=Q(c,R[1].trim()),F=d.filter(N=>N.predicate===wi&&C.has(N.subject)&&/ method$/.test(N.object)).sort(f);return F.length?h(F):null}let $=u.match(pR);if($){let C=$[1].trim(),F=mR.test(C)||hR.test(C)?null:eo.test(C)?r||null:C,N=$[2].trim().toLowerCase();if(F){let B=Q(c,F),z=new Map,U=null;if(o){let X=await nc(o,F);if(U=X,X)for(let te of ad(o,X.id))for(let oe of Q(c,te.label))!B.has(oe)&&!z.has(oe)&&z.set(oe,te.label),B.add(oe)}let G=X=>X.predicate===cd&&c(X.object)===N||X.predicate===`tmct:${N}`&&X.object==="true",J=c(F).split(/\s+/).filter(X=>X.length>=4&&!IR.has(X)),ae=X=>J.some(te=>new Set(String(X.subject||"").split(/\s+/)).has(te)),pe=X=>B.has(X.subject)||J.length&&ae(X),re=d.filter(X=>pe(X)&&G(X)).sort(f)[0];if(re){let X=z.get(re.subject);return{text:X?`yes \u2014 the code graph says ${U.label} inherits ${X}, and ${se(re)}`:`yes \u2014 ${se(re)}`,replace:!0}}let ee=LR(d,B,N,c);if(ee)return{text:`yes \u2014 ${ee.map(se).join("; ")}`,replace:!0};{let{findIsaChain:X,SUBCLASS_PREDICATE:te,TYPE_PREDICATE:oe}=await Promise.resolve().then(()=>(Ft(),mn)),Te=_r,ge=d.filter(le=>le.predicate===te&&Te(le)),Ie=d.filter(le=>le.predicate===oe&&Te(le)),Ee=ge.map(le=>[le.subject,le.object]),xe=Ie.map(le=>[le.subject,le.object]),et=le=>(le.predicate===te?ge:Ie).find(de=>de.subject===le.subject&&de.object===le.object),ce=Q(c,N);for(let le of B){let de=X(le,ce,xe,Ee,{maxHops:2});if(!de)continue;let ut=de.map(et);if(ut.every(Boolean))return{text:`yes \u2014 ${od(ut)}`,replace:!0}}}if(d.some(pe)&&!n?.parsed)return/^there\b/i.test(F)||t2.test(N)?null:{text:`I don't have a fact saying ${Zz(F)} is ${N}.`,replace:!0};if(!n?.parsed&&!Jj.test(N))return gR(F,N)}}let _=ud(l).match(Mz);if(_&&!dg.test(l)){let[,C,F,N]=_,B=F.toLowerCase();if(!ug.test(B)&&!fg.test(B)){let z=C.trim(),U=Bz(await ld(B),N),G=U.object.replace(/^an?\s+/i,"").trim();if(z&&G){let J=U.predicate,ae=Q(c,z),pe=Q(c,G),re=[J,ri(J)],ee=d.filter(te=>re.includes(te.predicate)&&ae.has(te.subject)&&pe.has(te.object)).sort(f)[0];if(ee)return{text:`${j$(ee.predicate)?"no":"yes"} \u2014 ${se(ee)}`,replace:!0,generalVerbQuery:!0};let X=d.filter(te=>re.includes(te.predicate)&&ae.has(te.subject));if(X.length){let te=X.slice(0,3).map(se).join("; ");return{text:`I can't confirm that \u2014 nothing I remember says ${to({subject:z,predicate:J,object:G})}. I do know: ${te}.`,replace:!0,miss:!0}}return null}}}let O=l.match(Fz);if(O&&!dg.test(l)){let[,C,F]=O,[N,B]=F.toLowerCase().split(/\s+/);if(!ug.test(N)&&!fg.test(N)){let z=C.trim();if(z){let U=await ld(N);B&&/^mgx:[a-z]+$/.test(U)&&(U=`${U}-${B}`);let G=Q(c,z),J=[U,ri(U)],ae=lt(d.filter(pe=>J.includes(pe.predicate)&&G.has(pe.subject)),i);if(ae.length)return{...h(ae),generalVerbQuery:!0}}}}let x=l.match(/^(?:what|who)\s+([a-z]+)\s+(on|in|at|onto|upon|under|over|beside|near|behind|above|below|inside|outside)\s+(.+?)[?.!\s]*$/i);if(x&&!dg.test(l)){let[,C,F,N]=x,B=C.toLowerCase();if(!ug.test(B)&&!fg.test(B)&&!Pz.test(B)){let z=await ld(B);/^mgx:[a-z]+$/.test(z)&&(z=`${z}-${F.toLowerCase()}`);let U=Q(c,N.replace(/^(?:an?|the)\s+/i,"").trim()),G=lt(d.filter(J=>J.predicate===z&&U.has(J.object)),i);if(G.length)return{...h(G),generalVerbQuery:!0}}}let j=l.match(KU);if(j){let C=Q(c,j[1]),F=lt(d.filter(J=>C.has(J.subject)||C.has(J.object)),i);if(!F.length)return null;let N=C.has(F[0].subject)?F[0].subject:F[0].object,B=F.map(J=>` ${se(J)}`),z=B.slice(0,_e),U=B.slice(_e),G=U.length?`
|
|
234
234
|
\u2026and ${U.length} more \u2014 say 'more' to see them.`:"";return{text:`${F.length} remembered fact${F.length===1?"":"s"} about ${N}:
|
|
235
235
|
${z.join(`
|
|
236
|
-
`)}${G}`,replace:!0,...U.length?{pending:{items:U.map(J=>J.trim()),noun:"facts"}}:{}}}let M=n?.parsed?.shape==="meta"?n.parsed.object:null,D=!1,H=null,Y=l.match(HU);if(Y)H=Y[1]?Y[1].trim():null,M=Y[2],D=!0;else if(!M&&!n?.parsed){let C=l.match(/^what\s+(?:is|are)\s+(?:an?\s+)?(.+?)[?.!\s]*$/i);C&&(M=C[1])}if(!M)return null;let Z=Q(c,M),P=lt(p.filter(C=>Z.has(C.subject)),i),K=lt(p.filter(C=>Z.has(C.object)),i),W=D?P.length?P:K:K.length?K:P;if(!W.length)return null;if(H&&W===P){let C=Q(c,H),F=B=>p.find(z=>z.subject===B.object&&C.has(z.object)),N=W.map(B=>({hit:B,bridge:F(B)})).find(({bridge:B})=>B);if(N)return{text:`${se(N.hit)} \u2014 ${se(N.bridge)}`,replace:!0}}return h(W)}function mg(e){let t=e.sourceTypes||[];return t.length===0||t.some(n=>n!=="corpusWeak")}async function UR(e){let{resolveReasoningConfig:t}=await Promise.resolve().then(()=>(qj(),Hj));try{let{loadTomlConfig:n,normalizeConfig:s}=await Promise.resolve().then(()=>(Sa(),th)),o=await n(e),r=await s(o,{configDir:e});return t(r)}catch{return t(null)}}function bR(e,t,n){for(let s of t){if(e.has(s.subject))return s.subject;if(e.has(s.object))return s.object}return n}var kz,Eg,jz,Vn,sd,Yj,wR,Mse,Rz,Fse,Dse,yR,$R,SR,_z,Xj,Bse,zse,Use,Wse,Gse,kg,Vse,Tz,Je,ag,cd,No,vR,ER,Az,_r,Kse,Hse,qse,Yse,Xse,Jse,Qse,Zse,eoe,toe,noe,soe,ooe,roe,ioe,aoe,coe,loe,Jj,Cz,pd,Nz,uoe,doe,xR,foe,poe,hoe,moe,Lz,goe,ug,dg,Pz,boe,Mz,Fz,fg,Dz,zz,woe,kR,jR,Uz,yoe,$oe,RR,Soe,voe,Eoe,Wz,xoe,Gz,Ai,koe,joe,Roe,_R,_oe,Toe,Vz,Aoe,Ioe,Ooe,Coe,Qj,eR,Rg,to,Kz,Yz,id,eU,IR,Noe,yg,OR,tU,nU,fd,sU,oU,Co,$n,rU,iU,aU,cU,Sg,oR,lU,_e,dU,fU,pU,rR,hU,bU,wU,yU,$U,SU,vU,EU,xU,kU,jU,RU,_U,TU,aR,PR,IU,OU,NU,LU,PU,MU,FU,uR,DU,zU,KU,HU,qU,YU,fR,XU,JU,QU,ZU,e2,pR,eo,t2,hR,mR,gR,n2,o2,r2,Loe,zR,a2,c2,Poe,gg,vg,l2,Moe,Foe,WR,Doe,Boe,zoe,Uoe,Woe,hd,Goe,Voe,Koe,Hoe,u2,qoe,Yoe,Ua=L(()=>{Qe();YE();sn();Fe();us();ll();mu();gu();Pi();bu();ox();tr();Ue();di();rl();$u();tm();as();Ln();Hr();Oc();Hh();qh();Gr();ts();af();br();fm();jx();Ax();Ox();pm();Cx();gm();Au();Vx();Kx();qx();Cu();Jc();la();du();Qx();_u();ji();Dk();Uk();Wk();Ao();yj();kz=(e,t)=>e<t?-1:e>t?1:0;Cc(void 0);Ic(hu);Eg=new Set(["it","this","that","here"]),jz=e=>Eg.has(String(e||"").trim().toLowerCase()),Vn={imports:"understand a dependency/import relationship",uses:"understand a dependency/usage relationship (imports and/or calls)",calls:"understand a call relationship",callsSymbol:"understand a call relationship",defines:"locate what a module/class defines",contains:"understand class membership (methods/attributes)",tests:"assess test coverage",inherits:"understand a class hierarchy/inheritance relationship",touches:"understand commit/change history",touchesSymbol:"understand commit/change history",cochange:"understand change-coupling between modules",reexports:"understand a module's public exports/API surface",serves:"understand which component provides or backs another",denotes:"understand which vocabulary term names a code entity"},sd=e=>e?`${String(e).toLowerCase()}(s)`:"entities",Yj="look up a taught fact about a subject/verb/object";wR={find:{tool:"tmct_search",arg:"query",help:"lexical search across the graph"},search:{tool:"tmct_search",arg:"query",help:"alias of /find"},context:{tool:"tmct_context",arg:"symbol",help:"the sized edit bundle for a symbol (start here to change code)"},snippet:{tool:"tmct_snippet",arg:"symbol",help:"exact source of one function/class/method"},describe:{tool:"tmct_describe",arg:"symbol",help:"a symbol's definition, kind and relations"},signature:{tool:"tmct_signature",arg:"symbol",help:"a symbol's signature only"},members:{tool:"tmct_members",arg:"class",help:"the methods/attributes of a class"},subclasses:{tool:"tmct_subclasses",arg:"class",help:"the subclasses of a class"},impact:{tool:"tmct_impact",arg:"module",help:"what a change to this module or symbol reaches (impact closure)"},callers:{tool:"tmct_callers",arg:"symbol",help:"functions that call this symbol"},callees:{tool:"tmct_callees",arg:"symbol",help:"functions this symbol calls"},tests:{tool:"tmct_tests_for",arg:"symbol",help:"the tests covering this symbol"},untested:{tool:"tmct_untested",arg:null,help:"symbols with no covering test"},history:{tool:"tmct_history",arg:"symbol",help:"the commit history of this symbol"},exports:{tool:"tmct_exports",arg:"module",help:"a module's public exports"},arch:{tool:"tmct_architecture",arg:"package",help:"the architecture overview (optional package filter)",optional:!0}},Mse=new Set(["stats","memory","focus",...Object.keys(wR)]),Rz=new Set(["have","has","holds","hold"]),Fse=new RegExp(`\\b(?:${[...Object.keys(he),...Object.keys(io)].filter(e=>!Rz.has(e)).sort((e,t)=>t.length-e.length).map(e=>e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join("|")})\\b`,"i"),Dse=new Set([...qE.map(e=>e.name),...Object.values(wR).map(e=>e.tool)]),yR=new Set(["hi","hello","hey","yo","hiya","howdy","sup","greetings","g'day","gday","hey there","hi there","hello there","good morning","good afternoon","good evening","morning","alright","you alright","alright mate","morning all","yeah nah","hey y'all","howdy there","hiya there","good day","good day to you","salutations","good to meet you","pleased to meet you","yo yo","ayy","wassup","sup fam","heya","hiya!","gm","ge"]),$R=new Set(["thanks","thank you","thankyou","thx","ty","ta","cheers","nice one","much appreciated","cool thanks","many thanks","much obliged","ta very much","cheers mate","cheers for that","tks","sweet thanks","nice","brilliant","ta for that","cheers, that's everything for now, thanks","that's everything for now, thanks","that's all for now, thanks"]),SR=new Set(["bye","goodbye","quit","exit","see ya","see you","cya","later","farewell","peace","peace out","im off","i'm off","gtg","gotta go","catch you later","farewell then"]),_z=new Set(["ok","okay","cool","aight","fair enough","got it","gotcha","noted","sounds good","sure","cool cool","right","haha ok fair enough"]),Xj=e=>e.replace(/(.)\1+/g,"$1");Bse=xg(yR),zse=xg($R),Use=xg(SR),Wse=new RegExp(`^(?:${[..._z].map(at).join("|")})\\s+(.+)$`,"i"),Gse=[...yR,...$R,...SR,"what can you do","what do you do","help","how do you work","who are you","what are you","what is your name"],kg="(?:[a-z]+er|better|worse|(?:more|less)\\s+[a-z]+)",Vse=new RegExp(`^(?:the\\s+|an?\\s+)?([\\w'-]+(?:\\s+[\\w'-]+)?)\\s+(?:is|are)\\s+(${kg})\\s+than\\s+(.+)$`,"i"),Tz=new RegExp(`^(?:is|are)\\s+(.+?)\\s+(${kg})\\s+than\\s+(.+?)[?.!\\s]*$`,"i"),Je="on|in|at|onto|upon|under|over|beside|near|behind|above|below|inside|outside",ag="mgx:ownedBy",cd="mgx:hasProperty",No="rdfs:subClassOf",vR="rdf:type",ER="rdfs:subPropertyOf",Az=new Set(["operator","teach","entailed"]),_r=e=>!!e.sourceTypes?.some(t=>Az.has(t));Kse=new RegExp(`^you\\s+(?:can|may)\\s+([a-z]+)\\s+an?\\s+([a-z][\\w-]*)\\s+(${Je})\\s+an?\\s+([a-z][\\w-]*)[.!?]*$`,"i"),Hse=new RegExp(`^an?\\s+([a-z][\\w-]*)\\s+(?:can|may)\\s+be\\s+([a-z]+)\\s+(${Je})\\s+an?\\s+([a-z][\\w-]*)[.!?]*$`,"i"),qse=new RegExp(`^to\\s+([a-z]+)\\s+an?\\s+([a-z][\\w-]*)\\s+(${Je})\\s+an?\\s+([a-z][\\w-]*)\\s*,?\\s*nothing\\s+may\\s+([a-z]+)\\s+(${Je})\\s+the\\s+([a-z][\\w-]*)[.!?]*$`,"i"),Yse=new RegExp(`^to\\s+([a-z]+)\\s+an?\\s+([a-z][\\w-]*)\\s+(${Je})\\s+an?\\s+([a-z][\\w-]*)\\s*,?\\s*the\\s+([a-z][\\w-]*)\\s+must\\s+be\\s+(${kg})\\s+than\\s+the\\s+([a-z][\\w-]*)[.!?]*$`,"i"),Xse=new RegExp(`^([a-z]+ing)\\s+an?\\s+([a-z][\\w-]*)\\s+(${Je})\\s+an?\\s+([a-z][\\w-]*)\\s+makes\\s+(?:it|the\\s+([a-z][\\w-]*))\\s+([a-z]+)\\s+(${Je})\\s+the\\s+([a-z][\\w-]*)[.!?]*$`,"i"),Jse=new RegExp(`^to\\s+([a-z]+)\\s+an?\\s+([a-z][\\w-]*)\\s+(${Je})\\s+an?\\s+([a-z][\\w-]*)\\s*,?\\s*the\\s+([a-z][\\w-]*)\\s+may\\s+not\\s+be\\s+with\\s+the\\s+([a-z][\\w-]*)\\s+without\\s+the\\s+([a-z][\\w-]*)[.!?]*$`,"i");Qse=new RegExp(`^the\\s+goal\\s+is\\s+that\\s+(?:(every|each|all)\\s+)?([\\w-]+)\\s+([a-z]+s)\\s+(${Je})\\s+([\\w-]+)[.!?]*$`,"i"),Zse=new RegExp(`^(?:the\\s+goal\\s+is\\s+for|i\\s+want)\\s+(?:(every|each|all)\\s+)?([\\w-]+)\\s+to\\s+([a-z]+)\\s+(${Je})\\s+([\\w-]+)[.!?]*$`,"i"),eoe=new RegExp(`^(?:the\\s+goal\\s+is\\s+for|i\\s+want)\\s+(?:(every|each|all)\\s+)?([\\w-]+)\\s+(${Je})\\s+([\\w-]+)[.!?]*$`,"i"),toe=new RegExp(`^(?:can|could)\\s+you\\s+([a-z]+)\\s+an?\\s+([a-z][\\w-]*)\\s+(${Je})\\s+an?\\s+([a-z][\\w-]*)[?.!]*$`,"i"),noe=new RegExp(`^(?:get|put|place|stack)\\s+(?:(every|each|all|both)\\s+)?(?:the\\s+)?([\\w-]+?)\\s+(${Je})\\s+([\\w-]+)[?.!]*$`,"i"),soe=new RegExp(`^the\\s+goal\\s+is\\s+(?:(every|each|all|both)\\s+)?(?:the\\s+)?([\\w-]+?)\\s+(${Je})\\s+([\\w-]+)[?.!]*$`,"i"),ooe=new RegExp(`^(?:(every|each|all)\\s+)?([\\w-]+)\\s+([a-z]+s)\\s+(${Je})\\s+([\\w-]+)$`,"i"),roe=new RegExp(`^(?:and\\s+|so\\s+|but\\s+)?what\\s+if\\s+([\\w-]+)\\s+(?:had\\s+)?(?:started|start|starts|begun|began|begins|was|were|is|had\\s+been|rested|rests|sat|sits|stood|stands|lay|lies|lain)(?:\\s+(?:out|off))?\\s+(?:${Je})\\s+([\\w-]+)(?:\\s+(?:instead|initially|to\\s+start\\s+with|at\\s+the\\s+start|from\\s+the\\s+start|at\\s+the\\s+beginning))?[?.!\\s]*$`,"i"),ioe=new RegExp(`^(?:and\\s+|so\\s+|but\\s+)?why\\s+(?:did\\s+you\\s+|do\\s+you\\s+|would\\s+you\\s+)?(?:choose\\s+to\\s+|decide\\s+to\\s+)?([a-z]+)\\s+([\\w-]+)(?:\\s+(?:${Je})\\s+([\\w-]+))?(?:\\s+(?:first|initially|at\\s+the\\s+start|to\\s+start(?:\\s+with)?|to\\s+begin(?:\\s+with)?))?\\s+(?:instead\\s+of|rather\\s+than|and\\s+not|not)\\s+([\\w-]+)[?.!\\s]*$`,"i"),aoe=new RegExp(`^(?:and\\s+|so\\s+|but\\s+)?why\\s+(?:not|didn'?t\\s+you|did\\s+you\\s+not|couldn'?t\\s+you)\\s+([a-z]+)\\s+([\\w-]+)(?:\\s+(?:${Je})\\s+([\\w-]+))?(?:\\s+(?:first|initially|at\\s+the\\s+start|to\\s+start(?:\\s+with)?))?[?.!\\s]*$`,"i"),coe=new RegExp(`^(?:what|who)\\s+([a-z']+)\\s+(${Je})\\s+(.+?)[?.!\\s]*$`,"i"),loe=new RegExp(`^what\\s+(?:does|do|is)\\s+([\\w-]+)\\s+([a-z]+)(?:\\s+(${Je}))?[?.!\\s]*$`,"i"),Jj=/^(?:anywhere|everywhere|nowhere|somewhere)$/i,Cz=new Set(["bus","gas","plus","minus","surplus","lens","bias","atlas","canvas","virus","bonus","campus","census","chorus","circus","focus","status","iris","genius","sinus","walrus","cactus","fungus","radius","nucleus","alias","crocus","abacus","syllabus","octopus","platypus"]);pd="(?:(?:usually|often|sometimes|rarely|always|typically|generally|occasionally|frequently|normally|regularly|commonly|mostly|currently|still|also|really|actually|closely|strongly|directly)\\s+)?",Nz="(?:cannot|can't|can not|does not|doesn't|do not|don't|never)",uoe=new RegExp(`^(.+?)\\s+(${Nz})\\s+(.+)$`,"i"),doe=new RegExp(`^([\\w'-]+)\\s+${pd}([a-z]+)\\s+(.+?)[.!?]*$`,"i"),xR="with|to|from|by|of|in|on|for|as|about|into",foe=new RegExp(`^(?:the\\s+|an?\\s+)?([\\w'-]+(?:\\s+[\\w'-]+)?)\\s+(?:is|are|was|were)\\s+${pd}(${al})\\s+(${xR})\\s+(.+)$`,"i"),poe=new RegExp(`^(the\\s+|an?\\s+)?([\\w'-]+(?:\\s+[\\w'-]+)?)\\s+(is|are|was|were)\\s+(?:an?\\s+)?([\\w'-]+)\\s+(${al})\\s+(${xR})\\s+(.+)$`,"i"),hoe=new RegExp(`^(?:the\\s+|an?\\s+)([\\w'-]+(?:\\s+[\\w'-]+)?)\\s+([a-z]+)\\s+(${Je})\\s+(.+?)[.!?]*$`,"i"),moe=new RegExp(`^(every|each|all)\\s+([\\w'-]+)\\s+([a-z]+)\\s+(${Je})\\s+(.+?)[.!?]*$`,"i"),Lz="(?:just\\s+)?(?:one|another)\\s+more|another",goe=new RegExp(`^(?:${Lz})\\s+([\\w'-]+)\\s+([a-z]+)\\s+(${Je})\\s+(.+?)[.!?]*$`,"i"),ug=/^(?:is|are|am|owns|maintains)$/i,dg=/\b(?:is|are|am|owns|maintains)\b/i,Pz=new RegExp("^(?:i|me|you|he|him|she|her|it|we|us|they|them|my|your|his|its|our|their|mine|yours|hers|ours|theirs|this|that|these|those|a|an|the|every|each|all|some|any|no|both|either|neither|in|on|at|to|from|by|with|for|of|about|into|onto|over|under|near|before|after|during|through|up|down|off|out|above|below|between|among|against|without|within|along|across|behind|beyond|upon|toward|towards|per|and|but|or|if|because|although|though|while|when|since|unless|until|whether|so|nor|than|as|what|who|whom|whose|which|where|why|how)$","i"),boe=new RegExp(`^(?:${Wo.filter(e=>!/\s/.test(e)).join("|")})$`,"i");Mz=new RegExp(`^(?:does|did)\\s+(?:(?:every|each|all|any)\\s+)?([\\w'-]+)\\s+${pd}([a-z]+)\\s+(.+?)[?.!\\s]*$`,"i"),Fz=new RegExp(`^what\\s+(?:does|did)\\s+([\\w'-]+)\\s+${pd}([a-z]+(?:\\s+(?:${Je}))?)[?.!\\s]*$`,"i"),fg=/^(?:be|own|maintain)$/i,Dz=new RegExp(`^(${Je})\\s+(.+)$`,"i");zz=["first","second","third","then","next","finally","later","meanwhile","afterward","afterwards"],woe=new RegExp(`^(?:${zz.join("|")})\\b\\s*,?\\s+`,"i"),kR=Object.freeze(["you","i","it","they","he","she","we"]),jR=Object.freeze(["you're","i'm","it's","they're","he's","she's","we're"]),Uz=Object.freeze([...jR,...kR]),yoe=new RegExp(`^(?:every\\s+|each\\s+|all\\s+|some\\s+|a few\\s+|a\\s+|an\\s+)?(${Uz.join("|")})\\s+\\S+`,"i"),$oe=new RegExp(`^(?:every\\s+|each\\s+|all\\s+|some\\s+|a few\\s+|a\\s+|an\\s+)?(?:(${kR.join("|")})\\s+(?:is|are|am|was|were)|(${jR.join("|")}))\\s+(?:an?\\s+)?[\\w'-]+[.!?]*$`,"i"),RR="forget|unlearn|delete|remove",Soe=new RegExp(`^(?:${RR})\\s+(?:that\\s+)?(?:a\\s+|an\\s+)?([\\w-]+(?:\\s+[\\w-]+)?)\\s+(?:is|are)\\s+(?:an?\\s+)?(?:(?:kind|type)\\s+of\\s+)?([\\w-]+)$`,"i"),voe=new RegExp(`^([\\w-]+)\\s+([a-z]+)s\\s+(${Je})\\s+([\\w-]+)$`,"i"),Eoe=new RegExp(`^(?:${RR})\\s+(?:that\\s+)?([\\w-]+)\\s+([a-z]+)s\\s+(${Je})\\s+([\\w-]+)$`,"i"),Wz="collection|set|group|family",xoe=new RegExp(`^(?:the\\s+|an?\\s+)?([\\w'-]+(?:\\s+[\\w'-]+)?)\\s+(?:is|are)\\s+an?\\s+(?:${Wz})\\s+of\\s+(?:the\\s+)?([\\w'-]+)[.!?]*$`,"i"),Gz=Object.freeze(["mgx:memberOf","mgx:partOf"]),Ai="(?:\\s+(?:exactly|really|actually|truly|anyway|internally|properly))?",koe=new RegExp(`^what\\s+does\\s+(.+?)${Ai}\\s+do${Ai}\\??$`,"i"),joe=new RegExp(`^what\\s+(.+?)${Ai}\\s+does${Ai}\\??$`,"i"),Roe=new RegExp(`^what(?:'s|s|\\s+is)\\s+(.+?)${Ai}\\s+do${Ai}\\??$`,"i"),_R="([A-Za-z][\\w'.-]*(?:\\s+[A-Za-z][\\w'.-]*){0,3})",_oe=new RegExp(`^who\\s+(?:is|was)\\s+${_R}$`,"i"),Toe=new RegExp(`^what\\s+(?:did|has)\\s+${_R}\\s+(?:touch(?:ed)?|chang(?:e|ed)|work(?:ed)?\\s+on|commit(?:ted)?)$`,"i"),Vz="(?:good|bad|clean|messy|ugly|nice|great|terrible|awful|solid|elegant|readable|maintainable|well[- ]written|well[- ]structured|spaghetti|ok|okay|decent|healthy)",Aoe=new RegExp(`^is\\s+(?:this|the)\\s+code(?:base)?\\s+(?:any\\s+)?${Vz}\\b`,"i"),Ioe=new RegExp("^(?:what\\s+time\\s+is\\s+it(?:\\s+(?:now|right\\s+now))?|what(?:'s|s|\\s+is)\\s+the\\s+time(?:\\s+(?:now|right\\s+now))?|what\\s+day\\s+is\\s+it(?:\\s+today)?|what(?:'s|s|\\s+is)\\s+(?:the\\s+)?(?:day|date)(?:\\s+today)?|what(?:'s|s|\\s+is)\\s+today'?s\\s+date|what(?:'s|s|\\s+is)\\s+the\\s+weather(?:\\s+like)?(?:\\s+(?:today|outside))?|how'?s\\s+the\\s+weather(?:\\s+like)?(?:\\s+(?:today|outside))?)\\??$","i"),Ooe=Object.freeze({game:["higher","lower","warmer","colder","hotter","up","down","guess"],spiderFly:["watch","step","tick","move","board","web"],adventure:["help","xyzzy","wait","hint","plugh"]});Coe=new Set([...Object.keys(he).flatMap(e=>e.split(/[\s-]+/)),...vn,...Hn,"owns","maintains"].filter(e=>e.length>=3)),Qj=new Set(["mgx:hidden-in","mgx:is-objective","mgx:unlocks-with","mgx:is-npc","mgx:acts-on-turn","mgx:acts-toward","mgx:is-container","mgx:is-open"]);eR=new Set(["owl:onProperty","owl:someValuesFrom","owl:allValuesFrom"]),Rg=new Set(["mgx:currently-in","mgx:located-in","mgx:fixed-in","mgx:stands-locked-in","mgx:works-in"]),to=e=>`${e.subject} ${cl(e.predicate)} ${e.object}`;Kz=Object.entries(Ks).filter(([e])=>!Rg.has(e)).map(([e,t])=>{let n=/^(?:is|are)\s+(.+)$/i.exec(t);return n?{predicate:e,marker:n[1].trim().toLowerCase()}:null}).filter(e=>e&&e.marker.length>1).sort((e,t)=>t.marker.length-e.marker.length);Yz=8;id=null;eU=/^(?:every|each|all|any)\s+/i;IR=new Set(["module","modules","class","classes","function","functions","method","methods","handler","handlers","controller","controllers","service","services","component","components","flow","flows","thing","things","item","items","object","objects","commit","commits"]),Noe=new Set([["interpreter","compiler"],["string","thread"],["heart","kernel"],["battalion","heap"],["bash","sock"],["command","skill"],["docker","longshoreman"],["name","list"],["list","number"]].map(([e,t])=>[e,t].sort().join("|"))),yg=/^(?:is|are|was|were)\s+([\w'-]+(?:\s+[A-Z][\w'-]*)?)\s+(?:the|an?)\s+([a-z][\w-]*)\s+of\s+([\w'-]+(?:\s+[A-Z][\w'-]*)?)[?.!\s]*$/i,OR=/^(?:who|what)\s+(?:is|are)\s+(?:the|an?)\s+([a-z][\w-]*)\s+of\s+([\w'-]+(?:\s+[A-Z][\w'-]*)?)[?.!\s]*$/i,tU=/^(?:who|what)\s+(?:is|are|was|were)\s+([\w-]+(?:\s+[A-Z][\w-]*)?)'s\s+([a-z][\w-]*)[?.!\s]*$/i,nU=/^(who|what)'?s\s+/i,fd=e=>String(e).replace(nU,(t,n)=>`${n} is `),sU=/^(?:who|what)\s+(?:is|are|was|were)\s+([\w-]{2,}?)s\s+([a-z][\w-]*)[?.!\s]*$/i;oU=/^list\s+(?:the\s+|all\s+)?([a-z][\w-]*)\s+of\s+([\w'-]+(?:\s+[A-Z][\w'-]*)?)[?.!\s]*$/i,Co=/^(?:is|are)\s+(?:an?\s+)?(.+?)\s+(?:a\s+kind\s+of|a\s+type\s+of|an?)\s+(.+?)[?.!\s]*$/i,$n=new Set(["rdfs:subClassOf","rdf:type"]),rU=e=>[...e.filter(t=>$n.has(t.predicate)),...e.filter(t=>!$n.has(t.predicate))],iU=6,aU=/^why\s+(?=(?:is|are)\b)/i,cU=/^explain\s+how\s+you\s+know\s+(?:that\s+)?(.+?)\s+(?:is|are)\s+(?:an?\s+)?(.+?)[?.!\s]*$/i;Sg=new Set(["kind","sort","type","subclass","superclass"]),oR=/^(?:so\s+)?(.+?)\s+(?:is|are)\s+(?:an?\s+)?(.+?)\s*,?\s*(?:now\s+)?(?:right|correct|yeah)\??$/i,lU=/^(?:what\s+do\s+you\s+know\s+about|what(?:'s|s|\s+is)\s+in\s+your\s+memory\s+about|what\s+do\s+you\s+remember\s+about)\s+(.+?)[?.!\s]*$/i,_e=32;dU=/^(?:can|could)\s+(all\s+|every\s+)?(?:an?\s+)?([\w'-]+(?:\s+[\w'-]+)*?)\s+([a-z]+)[?.!\s]*$/i,fU=/^(?:does|do)\s+(?:an?\s+|the\s+)?(.+?)\s+have\s+(?:an?\s+|the\s+)?(.+?)[?.!\s]*$/i,pU=/^how\s+many\s+(.+?)\s+(?:does|do)\s+(?:an?\s+|the\s+)?(.+?)\s+have[?.!\s]*$/i,rR=new Set(["mgx:hasA","tmct:has"]),hU=/^(?:can|could)\s+(?:all\s+|every\s+)?(?:an?\s+|the\s+)?(.+?)\s+be\s+([a-z][\w-]*)[?.!\s]*$/i;bU=/^(?:does|do)\s+(?:an?\s+|the\s+)?(.+?)\s+([a-z]+)\s+(?:an?\s+|the\s+)?(.+?)[?.!\s]*$/i,wU=/^what\s+can\s+(?:an?\s+)?(.+?)\s+do[?.!\s]*$/i,yU=/^what\s+has\s+(?:an?\s+)?(.+?)[?.!\s]*$/i,$U=/^what\s+(?:(?:can\s+be|is)\s+used\s+for|is\s+for)\s+(.+?)[?.!\s]*$/i,SU=/^where(?:'s|\s+is|\s+are)\s+(.+?)(?:\s+now)?\s*[?.!]*$/i,vU=/^where\s+(?:does|do|did)\s+(.+?)\s+[a-z][a-z'-]*(?:\s+now)?\s*[?.!]*$/i,EU=new RegExp(`^what(?:'s|\\s+is|\\s+are)\\s+(${Je})\\s+(.+?)\\s*[?.!]*$`,"i"),xU=/^what(?:'s|\s+is|\s+are)\s+(?:the\s+)?(parts|members|contents)\s+of\s+(?:the\s+|an?\s+)?(.+?)\s*[?.!]*$/i,kU=/^what\s+([a-z][\w-]*)\s+(?:does|do)\s+(?:an?\s+|the\s+)?(.+?)\s+([a-z][a-z-]*)\s*[?.!]*$/i,jU=/^(?:do|does)\s+(all\s+|every\s+)?(?:an?\s+|the\s+)?([\w'-]+(?:\s+[\w'-]+)*?)\s+([a-z-]+)[?.!\s]*$/i,RU=/^what\s+can\s+(?!be\s)(.+?)[?.!\s]*$/i,_U=/^what\s+(?:cannot|can't|cant|can\s+not)\s+(.+?)[?.!\s]*$/i,TU=/^(?:which|what)\s+([\w'-]+(?:\s+[\w'-]+)*?)\s+can\s+(.+?)[?.!\s]*$/i;aR=e=>String(e||"").replace(/\s+/g," ").trim();PR="(?:most|least)\\s+[a-z][\\w-]*|[a-z][\\w-]*est|best|worst",IU=new RegExp(`^which\\s+([\\w'-]+)\\s+(?:is|are)\\s+(?:the\\s+)?(${PR})[?.!\\s]*$`,"i"),OU=new RegExp(`^what(?:'s|s|\\s+is)\\s+the\\s+(${PR})\\s+([\\w'-]+)[?.!\\s]*$`,"i");NU=new Set(["rdfs:subClassOf","rdf:type","mgx:hasA","mgx:capableOf","mgx:usedFor","mgx:ownedBy","owl:disjointWith","mgx:hasProperty","mgx:receivesAction"]),LU=Object.entries(Ks).filter(([e])=>!NU.has(e)&&!Rg.has(e)).map(([e,t])=>({predicate:e,re:new RegExp(`^what\\s+${at(t)}\\s+(.+?)[?.!\\s]*$`,"i")})).sort((e,t)=>t.re.source.length-e.re.source.length),PU=new Set(["rdfs:subClassOf","rdf:type","owl:disjointWith","mgx:hasProperty","mgx:hasA","mgx:capableOf","mgx:ownedBy"]),MU=new Set(["mgx:partOf","mgx:memberOf"]),FU=Object.entries(Ks).filter(([e])=>!PU.has(e)&&!Rg.has(e)).map(([e,t])=>{let n;if(t==="can be")n=new RegExp("^can\\s+(?:an?\\s+|the\\s+)?(.+?)\\s+be\\s+(.+?)[?.!\\s]*$","i");else if(t.startsWith("is ")){let s=at(t.slice(3));n=new RegExp(`^(?:is|are)\\s+(?:an?\\s+|the\\s+)?(.+?)\\s+${s}\\s+(?:an?\\s+|the\\s+)?(.+?)[?.!\\s]*$`,"i")}else{let[s,...o]=t.split(" "),r=[nr(s),...o].map(at).join("\\s+");n=new RegExp(`^(?:does|do)\\s+(?:an?\\s+|the\\s+)?(.+?)\\s+${r}\\s+(?:an?\\s+|the\\s+)?(.+?)[?.!\\s]*$`,"i")}return{predicate:e,phrase:t,re:n}}).sort((e,t)=>t.re.source.length-e.re.source.length),uR=/^what\s+(?:inherits?\s+(?:from\s+)?(?:an?\s+)?|is\s+(?:an?\s+)?(?:kind|sort|type)\s+of\s+|is\s+(?:an?\s+)?subclass\s+of\s+)(.+?)[?.!\s]*$/i,DU=new Set(["changed","change","changes","updated","modified","happened","occurred"]);zU=new Set(["owl:unionof","owl:complementof","owl:oneof","owl:allvaluesfrom","owl:mincardinality","owl:maxcardinality","owl:cardinality","rdfs:subpropertyof","owl:inverseof"]);KU=/^what\s+(?:did|have)\s+(?:i|we|you)\s+(?:told|tell|said|say)\s+(?:you|me|us)?\s*about\s+(.+?)[?.!\s]*$/i,HU=/^what\s+(?:kind|type)\s+of\s+(?:an?\s+)?([\w-]+(?:\s+[\w-]+)?)?\s*(?:is|are)\s+(?:an?\s+)?(.+?)[?.!\s]*$/i,qU=/^does\s+every\s+(.+?)\s+have\s+at\s+least\s+(\d+)\s+(.+?)[?.!\s]*$/i,YU=/^does\s+an?\s+(.+?)\s+have\s+an?\s+(.+?)[?.!\s]*$/i,fR=new Set(["owl:cardinality","owl:minCardinality","owl:maxCardinality","owl:onClass"]),XU=/^who\s+(?:owns|maintains)\s+(.+?)[?.!\s]*$/i,JU=/^(?:does|did)\s+([\w'-]+)\s+(?:owns?|maintains?)\s+(.+?)[?.!\s]*$/i,QU=/^(?:is|are|was|were)\s+(.+?)\s+owned\s+by\s+([A-Za-z][\w'-]*(?:\s+[A-Z][\w'-]*)?)[?.!\s]*$/i,ZU=/^(?:does|did)\s+([\w'-]+)\s+(?:has|have)\s+an?\s+([a-z][\w-]*)\s+method[?.!\s]*$/i,e2=/^what\s+methods\s+does\s+([\w'-]+)\s+have[?.!\s]*$/i,pR=/^(?:is|are|was|were)\s+(.+?)\s+([A-Za-z][\w-]*)[?.!\s]*$/i,eo=/^(?:it|this|that)$/i,t2=/^(?:it|them|this|that|in|on|of|to|at)$/i,hR=/^(?:it|this|that)(?:\s+one)?\s+(?:before|after)\b/i,mR=/^(?:you|i|they|he|she|we)\b/i,gR=(e,t)=>({text:`I don't know anything about "${e}" yet \u2014 teach me directly, e.g. "remember that ${dd(e)} is ${t}".`,replace:!0}),n2=/^(?:what\s+(?:did|have)\s+(?:i|we)\s+(?:told?|tell|said?|say)\s+(?:you|me|us)?(?:\s+(?:last\s+time|before|earlier|previously|already))?|what\s+facts?\s+do\s+you\s+(?:know|have|remember)|what\s+do\s+you\s+(?:know|remember)|what\s+have\s+you\s+(?:learned|learnt|remembered))[?.!\s]*$/i;o2=/inherit|supertype|subclass|extend|specializ/i,r2=8;Loe=new RegExp(`\\b(?:${[...Eg].join("|")})\\b`,"i"),zR=/^what\s+(?:is|are)\s+(?:an?\s+)?(.+?)[?.!\s]*$/i,a2=/^who\s+(?:is|are|was|were)\s+(?:an?\s+|the\s+)?([\w'-]+)[?.!\s]*$/i,c2=/^(?:please\s+|can\s+you\s+|could\s+you\s+)*(?:define|definition\s+of|give\s+me\s+the\s+definition\s+of)\s+(?:the\s+(?:term|word)\s+)?(?:an?\s+|the\s+)?(.+?)[?.!\s]*$/i;Poe=new RegExp(`^(?:(?:the|a|an)\\s+)?(.+?)\\s+(${Object.keys(nt).join("|")})$`,"i"),gg="(?:(?:can|could|would)\\s+you\\s+(?:please\\s+)?)?(?:(?:show|give)\\s+(?:me|us)\\s+|describe\\s+|explain\\s+|what(?:'s|s|\\s+is)\\s+)?",vg="(?:of|for)\\s+(?:this|the)\\s+(?:app|codebase|repo|repository|project|code)",l2=`(?:\\s+${vg})?`,Moe=[new RegExp(`^${gg}the\\s+architecture(?:\\s+(?:overview|map|diagram))?${l2}(?:\\s+here)?\\??$`,"i"),new RegExp(`^${gg}architecture\\s+(?:${vg}|overview|map|diagram)\\??$`,"i"),new RegExp(`^${gg}(?:(?:an?|the)\\s+)?(?:overview|map|diagram)\\s+${vg}(?:\\s+here)?\\??$`,"i")],Foe={find:"locate a specific named entity",search:"locate a specific named entity",context:"gather the sized edit bundle for a symbol before changing code",snippet:"view a symbol's exact source",describe:"look up a symbol's definition and relations",signature:"view a symbol's signature",members:Vn.contains,subclasses:Vn.inherits,impact:"understand what a change to this module would reach (impact closure)",callers:Vn.calls,callees:Vn.calls,tests:Vn.tests,untested:Vn.tests,history:Vn.touches,exports:Vn.reexports,arch:"understand the overall architecture (package/module boundaries)",capabilities:"see what /plan can plan over \u2014 built-in query tools and taught actions",goals:"see the declared goals a trace is recognized against, and where each one came from",syllogise:"materialize the entailed facts that follow from what's remembered about one term",wiki:"toggle the live Wikipedia supplement for questions nothing local can answer",wikipedia:"choose which source the research lane fetches from",wikidata:"choose which source the research lane fetches from",export:"write the memory store to a file, in the standard JSONL shape",ingest:"read a local text file and store every fact the recognizer grounds from it",news:"surface or work the news feed built over this graph"},WR="(?:changed?|modif(?:y|ied)|edits?|edited|touch(?:es|ed)?|updates?|updated|alters?|altered|deletes?|deleted|removes?|removed|drops?|dropped)",Doe=new RegExp(`^what\\s+(?:would|will|might|could|does|do)?\\s*(?:breaks?|fails?|happens?|stops?\\s+working|is\\s+affected|are\\s+affected|gets?\\s+affected|be\\s+affected|is\\s+impacted|be\\s+impacted)\\s+if\\s+(?:i|we|you|one|someone)\\s+${WR}\\s+(?:the\\s+)?(.+?)[?.!\\s]*$`,"i"),Boe=new RegExp(`^if\\s+(?:i|we|you|one|someone)\\s+${WR}\\s+(?:the\\s+)?(.+?),?\\s+what\\s+(?:would\\s+|will\\s+|might\\s+|could\\s+|does\\s+|do\\s+)?(?:breaks?|fails?|happens?|stops?\\s+working|is\\s+affected|are\\s+affected|gets?\\s+affected|be\\s+affected|would\\s+break|will\\s+break)[?.!\\s]*$`,"i"),zoe=new RegExp("^what\\s+(?:is|are|gets?|would\\s+be|will\\s+be)\\s+(?:affected|impacted|broken)\\s+(?:by|when|if)\\s+(?:i\\s+|we\\s+|you\\s+)?(?:chang(?:e|es|ing)|edit(?:s|ing)?|modif(?:y|ies|ying)|touch(?:es|ing)?|updat(?:e|es|ing)|delet(?:e|es|ing)|remov(?:e|es|ing)|a\\s+change\\s+to)\\s+(?:the\\s+)?(.+?)[?.!\\s]*$","i"),Uoe=new RegExp("^(?:(?:can|could)\\s+(?:i|we|you|one|someone)\\s+safely|is\\s+it\\s+safe\\s+to)\\s+(?:change|edit|modify|touch|update|alter|delete|remove|drop)\\s+(?:the\\s+)?(.+?)[?.!\\s]*$","i"),Woe=new RegExp("^(?:what(?:'s|\\s+is)\\s+the\\s+)?(?:blast\\s+radius|impact)\\s+(?:of|for)\\s+(?:chang(?:ing|es)\\s+|editing\\s+|modifying\\s+|touching\\s+|updating\\s+|deleting\\s+|removing\\s+)?(?:the\\s+)?(.+?)[?.!\\s]*$","i"),hd="as\\s+(?:its|the|an?)?\\s*(?:base\\s+class|parent\\s+class|base|parent)",Goe=new RegExp(`^(.+?)\\s+uses?\\s+(?:which\\s+[\\w'-]+|what)\\s+${hd}\\s*\\??$`,"i"),Voe=new RegExp(`^what\\s+(?:does|do|did)\\s+(.+?)\\s+uses?\\s+${hd}\\s*\\??$`,"i"),Koe=new RegExp(`^(?:does|do|did)\\s+(.+?)\\s+uses?\\s+(.+?)\\s+${hd}\\s*\\??$`,"i"),Hoe=new RegExp(`^(.+?)\\s+uses?\\s+(.+?)\\s+${hd}\\s*[.!]*$`,"i"),u2=Object.freeze([...Eg].filter(e=>e!=="here").concat("they")),qoe=new RegExp(`^((?:is|are|can|could|does|do)\\s+|what\\s+(?:is|are)\\s+)(${u2.join("|")})\\b(\\s+\\S.*)?$`,"i"),Yoe=ne(".tmct","memory","corpus-seed.json")});Ua();Ue();Nn();tr();Cu();var md={uninformativeClassMaxShare:.35,uninformativeClassMinSubjects:12,entailedDepthPenalty:.2,minoritySensePenalty:.5,minScore:.05,groupSplitThreshold:4,openerConceptCount:2,maxObjectsPerBodySentence:4,maxBodySentences:4,closerRootCount:2,budget:{chatReply:5,researchPanel:10,cliDigest:12,ledgerTerm:8}};var f2=(e,t)=>e<t?-1:e>t?1:0,KR=Object.freeze({"rdfs:subClassOf":"isa","rdf:type":"isa","mgx:atLocation":"location","mgx:locatedNear":"location","mgx:partOf":"partOf","mgx:memberOf":"partOf","mgx:capableOf":"capableOf","mgx:usedFor":"usedFor"}),Ar=Object.freeze(["isa","location","partOf","capableOf","usedFor","other"]),gd=e=>KR[e]||"other",p2=e=>Math.max(0,Math.min(1,e));function GR(e){let t=(e.sourceTypes||[]).map(n=>Os[n]??0);return t.length?Math.max(...t):typeof e.trust=="number"&&e.trust>0?e.trust:Os.entailed}function h2(e){return Array.isArray(e.environments)&&e.environments.length?!0:(e.sourceTypes||[]).includes("entailed")}function VR(e,t){let n=Number(t?.totalSubjects)||0;return n<=0?0:(Number(t?.classSubjectCounts?.[e])||0)/n}function HR(e,t,n={},s={}){let o={...md,...s.config||{}},r=Number.isInteger(s.budget)?s.budget:o.budget.chatReply,i=(t||[]).filter(v=>v&&v.object&&v.object!==e),a=[],c=(Number(n?.totalSubjects)||0)>=o.uninformativeClassMinSubjects,l=[];for(let v of i){if(gd(v.predicate)==="isa"){let E=VR(v.object,n);if(c&&E>o.uninformativeClassMaxShare){a.push({row:v,family:"isa",reason:"uninformative-class",share:E});continue}}l.push(v)}let u=l.filter(v=>gd(v.predicate)==="isa").map(v=>v.object),d=Ou(u,{subClassEdges:n.subClassEdges||[],disjointEdges:n.disjointEdges||[]}),p=new Map,f=new Map;for(let v of d.clusters){let E=0;for(let I of v.objects){f.set(I,v.label);let k=l.find(R=>R.object===I&&gd(R.predicate)==="isa");E+=k?GR(k):0}p.set(v.label,E)}let h=null,m=-1;for(let[v,E]of[...p].sort((I,k)=>f2(I[0],k[0])))E>m&&(m=E,h=v);let b=[];for(let v of l){let E=gd(v.predicate),I=GR(v),k={provenance:I};if(h2(v)&&(I-=o.entailedDepthPenalty,k.entailed=!0),E==="isa"){let $=.6+.4*(1-VR(v.object,n));I*=$,k.informativeness=$;let _=f.get(v.object);h&&_&&_!==h&&(I-=o.minoritySensePenalty,k.minoritySense=_)}I=p2(I),b.push({row:v,family:E,score:I,reasons:k})}let g=[];for(let v of b)v.score<o.minScore?a.push({row:v.row,family:v.family,reason:"below-floor",score:v.score}):g.push(v);let w=new Map;for(let v of g)w.has(v.family)||w.set(v.family,[]),w.get(v.family).push(v);for(let v of w.values())v.sort((E,I)=>I.score-E.score||Zt(E.row,I.row));let y=Ar.filter(v=>w.has(v)).concat([...w.keys()].filter(v=>!Ar.includes(v)).sort()),S=[],T=!1;for(;S.length<r&&!T;){T=!0;for(let v of y){let E=w.get(v);if(E&&E.length&&(S.push(E.shift()),T=!1,S.length>=r))break}}for(let v of y)for(let E of w.get(v)||[])a.push({row:E.row,family:E.family,reason:"over-budget",score:E.score});return S.sort((v,E)=>{let I=Ar.indexOf(v.family),k=Ar.indexOf(E.family);return I-k||E.score-v.score||Zt(v.row,E.row)}),{term:e,selected:S,cut:a,senses:{split:d.split,clusters:d.clusters,dominantLabel:h}}}qi();Ve();var m2=new Set(["isa","location","partOf","capableOf","usedFor"]),g2=new Set(["single","several","chained","group","closer"]),qR=(e,t)=>`${e}:${t}`;function Ag(e){let t=new Map;for(let n of e||[]){if(!n||typeof n.family!="string"||!m2.has(n.family)||typeof n.form!="string"||!g2.has(n.form)||typeof n.template!="string"||!n.template.trim())continue;let s=qR(n.family,n.form);t.has(s)||t.set(s,{family:n.family,form:n.form,templates:[]});let o=t.get(s);o.templates.includes(n.template)||o.templates.push(n.template)}return t}var Ir=e=>`${Ds(e)} ${e}`;function b2(e){let t=(e||[]).map(o=>String(o||"").trim()).filter(Boolean);if(!t.length)return"";let n=Ir(t[0]),s=t.slice(1);return s.length?`${n}, and so ${Hi(s.map(Ir))}`:n}function w2(e,t,n,s){let o=String(e||"").trim(),r=(t||[]).map(c=>String(c||"").trim()).filter(Boolean),i=r[0]||"",a=String(s||"").trim();return{TERM:o,TERM_CAP:qr(o),A_TERM:Ir(o),A_TERM_CAP:qr(Ir(o)),TERMS:Lc(o),TERMS_CAP:qr(Lc(o)),PRONOUN:"it",PRONOUN_CAP:"It",PARENT:a,A_PARENT:a?Ir(a):"",OBJECT:i,A_OBJECT:i?Ir(i):"",OBJECTS_A:Hi(r.map(Ir)),OBJECTS_PLURAL:Hi(r.map(Lc)),OBJECTS_RAW:Hi(r),CHAIN:b2(n&&n.length?n:r.slice(0,1))}}function y2(e,t){return String(e).replace(/\{([A-Z_]+)\}/g,(n,s)=>s in t?t[s]:"").replace(/\s+/g," ").replace(/\s+([.,;])/g,"$1").trim()}function no(e,t,n,s={}){let o=(n||[]).filter(Boolean);if(!o.length)return null;let r=s.term??o[0].subject??"",i=s.form||(o.length>1?"several":"single"),a=e instanceof Map?e.get(qR(t,i)):null,c=a?a.templates:null;if(!c||!c.length)return null;let l=s.variantSeed??"",u=Yc(`${r}|${t}|${i}|${l}`)%c.length,d=s.objectsOverride||o.map(f=>f.object),p=y2(c[u],w2(r,d,s.chain,s.parent));return p?{text:p,rows:o,family:t,form:i}:null}qi();var $2=Ar.filter(e=>e!=="isa"&&e!=="other"),S2=(e,t)=>e<t?-1:e>t?1:0;function v2(e){let t=new Map;for(let n of e||[])t.has(n.family)||t.set(n.family,[]),t.get(n.family).push(n.row);return t}function YR(e,t){let n=Math.max(1,Math.trunc(t)||1),s=[];for(let o=0;o<(e||[]).length;o+=n)s.push(e.slice(o,o+n));return s}function E2(e,t){let n=c=>(t?.[c.object]||[])[1]||null,s=new Map;for(let c of e||[]){let l=n(c);l&&s.set(l,(s.get(l)||0)+1)}let o=new Map,r=[],i=[];for(let c of e||[]){let l=n(c);l&&s.get(l)>=2?(o.has(l)||(o.set(l,[]),r.push(l)),o.get(l).push(c)):i.push(c)}let a=r.map(c=>({parent:c,rows:o.get(c)}));return i.length&&a.push({parent:null,rows:i}),a}function x2(e,t,n){let s=new Map,o=new Map;for(let c of t||[]){let l=e?.[c.object];if(!Array.isArray(l)||l.length<2)continue;let u=l[l.length-1];!u||u===c.object||(s.set(u,(s.get(u)||0)+1),o.has(u)||o.set(u,[]),o.get(u).push(c))}let r=[...s.keys()].sort((c,l)=>s.get(l)-s.get(c)||S2(c,l)).slice(0,Math.max(0,n)),i=[],a=new Set;for(let c of r)for(let l of o.get(c)||[])a.has(l.id)||(a.add(l.id),i.push(l));return{roots:r,rows:i}}function k2(e,t,n,s,o){let r=[];if(!e.length)return r;if(e.length===1){let p=t[e[0].object],f=p&&p.length>1?"chained":"single",h=no(s,"isa",e,{term:n,form:f,chain:p});return h&&r.push({...h,role:"names-term",paragraph:"definition"}),r}if(e.length<=o.groupSplitThreshold){let p=no(s,"isa",e,{term:n,form:"several"});return p&&r.push({...p,role:"names-term",paragraph:"definition"}),r}let i=e.slice(0,o.openerConceptCount),a=e.slice(o.openerConceptCount),c=no(s,"isa",i,{term:n,form:i.length>1?"several":"single",variantSeed:n});c&&r.push({...c,role:"names-term",paragraph:"definition"});let l=[];for(let p of E2(a,t))for(let f of YR(p.rows,o.maxObjectsPerBodySentence))l.push({parent:p.parent,rows:f});if(l.length>o.maxBodySentences){let p=l.slice(0,o.maxBodySentences),f=p[p.length-1];for(let h of l.slice(o.maxBodySentences))f.rows=f.rows.concat(h.rows);f.parent=null,l=p}for(let p of l){let f=p.parent?no(s,"isa",p.rows,{term:n,form:"group",parent:p.parent,variantSeed:p.parent}):no(s,"isa",p.rows,{term:n,form:"several",variantSeed:n});f&&r.push({...f,role:"describes-isa",paragraph:"definition"})}let{roots:u,rows:d}=x2(t,e,o.closerRootCount);if(u.length){let p=no(s,"isa",d.length?d:e,{term:n,form:"closer",objectsOverride:u,variantSeed:n});p&&r.push({...p,role:"closes-isa",paragraph:"definition"})}return r}function j2(e,t){if(!e.length)return;let n=e[0];if(/\bnames-term\b/.test(n.role))return;let s=qr(`${Ds(t)} ${t}`);n.text=n.text.replace(/^It\b/,s),n.role="names-term"}function R2(e,t){let n=[],s=null,o=null;for(let r of e)(!s||r.paragraph!==o||s.length>=t)&&(s=[],o=r.paragraph,n.push(s)),s.push(r);return n.map(r=>({sentences:r,text:r.map(i=>i.text).join(" ")}))}function XR(e,t,n={}){let s=e?.term||"",o=Number.isInteger(n.maxSentencesPerParagraph)?n.maxSentencesPerParagraph:3,r=n.chains||{},i={...md,...n.config||{}},a=v2(e?.selected||[]),c=[];for(let u of k2(a.get("isa")||[],r,s,t,i))c.push(u);for(let u of $2){let d=a.get(u);if(!(!d||!d.length))for(let p of YR(d,i.maxObjectsPerBodySentence)){let f=no(t,u,p,{term:s});f&&c.push({...f,role:"describes",paragraph:"description"})}}j2(c,s);let l=new Map;for(let u of c)for(let d of u.rows)l.has(d.id)||l.set(d.id,d);return{term:s,sentences:c,paragraphs:R2(c,o),provenanceRows:[...l.values()]}}var _2=e=>({subject:e.subject,predicate:e.predicate,object:e.object,sourceTypes:e.sourceTypes||[],provenance:e.provenance||""});function T2(e){let t=new Set,n=[];for(let s of e||[]){let o=s.provenance||(s.sourceTypes||[]).join(",");!o||t.has(o)||(t.add(o),n.push({provenance:s.provenance||"",sourceTypes:s.sourceTypes||[]}))}return n}var A2=Object.freeze({facts:"show the facts",chains:"show the chains"});function I2(e,t){let n=[...(e?.selected||[]).map(o=>o.row),...(e?.cut||[]).map(o=>o.row)].filter(Boolean),s=Object.entries(t||{}).filter(([,o])=>Array.isArray(o)&&o.length>1).map(([o,r])=>({object:o,chain:r}));return{escapes:A2,facts:n.map(_2),factCount:n.length,chains:s}}function JR(e,t,n={}){let s=t?.term||e?.term||"";return{kind:"term-article",term:s,headline:s,paragraphs:(t?.paragraphs||[]).map(o=>o.text).filter(Boolean),body:t?.paragraphs||[],sources:T2(t?.provenanceRows||[]),detail:I2(e,n.chains),provenanceRows:t?.provenanceRows||[]}}function QR(e,t,n={},s=new Map,o={}){let r=HR(e,t,n,o),i=XR(r,s,o);return JR(r,i,o)}Cu();la();var ZR=new Set(["rdfs:subClassOf","rdf:type"]);function e_(e){let t=new Map,n=new Set,s=[],o=[];for(let i of e||[])!i||!i.predicate||(ZR.has(i.predicate)?(n.add(i.subject),t.has(i.object)||t.set(i.object,new Set),t.get(i.object).add(i.subject),s.push([i.subject,i.object])):i.predicate==="owl:disjointWith"&&o.push([i.subject,i.object]));let r={};for(let[i,a]of t)r[i]=a.size;return{classSubjectCounts:r,totalSubjects:n.size,subClassEdges:s,disjointEdges:o}}function t_(e,t,n=6){let s=Wa(e||[]),o={};for(let r of t||[]){if(r in o)continue;let i=Iu(r,s,{cap:n,stopAt:ul});i.length>1&&(o[r]=i)}return o}function n_(e){let t=[],n=new Set;for(let s of e||[])!s||!ZR.has(s.predicate)||n.has(s.object)||(n.add(s.object),t.push(s.object));return t}Ue();Ua();function O2(e,t,n,s,o={}){let r=Ag(s||[]);if(!r||r.size===0)return null;let i=t||[],a=e_(n||i),c=t_(a.subClassEdges,n_(i));return QR(e,i,a,r,{...o,chains:c})}function s_(e,t,n,s={}){let o=gt(e||{individuals:[],objectProperties:[]}),r=Q(V,t),i=o.filter(c=>r.has(c.subject));if(!i.length)return null;let a=O2(t,i,o,n,s);return C2(a)}function C2(e){if(!e||!Array.isArray(e.paragraphs)||!e.paragraphs.length)return null;let t=e.detail&&Array.isArray(e.detail.facts)?e.detail.facts:[];return{term:e.term||"",paragraphs:e.paragraphs.slice(),sources:[...new Set((e.sources||[]).map(n=>n.provenance).filter(Boolean))],facts:t,factCount:e.detail&&Number.isInteger(e.detail.factCount)?e.detail.factCount:t.length}}var N2="no session is open on this page yet \u2014 await tmct.open() first",o_=Symbol.for("tmct.surface.fallback");function r_({open:e,ask:t=null,plan:n=null,turn:s=null,page:o={},fallback:r=!1,target:i=globalThis}={}){if(typeof e!="function")throw new Error("publishTmctSurface: `open` must be this page's session factory");let a=i.tmct;if(r&&a&&!a[o_])return a;let c=null,l=()=>{if(!c)throw new Error(N2);return c},u={async open(...d){return c=await e(...d),c},get session(){return c},async turn(d,p){let f=l();return s?s(d,p,f):typeof f.turn!="function"?{answer:"this page runs no conversational turn \u2014 see tmct.session for what it does run",end:!1,record:null,plan:null,research:null}:f.turn(d,p)},async ask(d,p){return t?t(d,p,l()):{answer:"this page has no separate ask route \u2014 it answers questions through tmct.turn()",data:void 0,miss:!0}},async plan(d,p){return n?n(d,p,l()):{refused:!0,why:"this page's bundle carries no capability planner",driver:null,calls:[],composed:null,observed:null}},page:o,fallback:r};return u[o_]=r,i.tmct=u,u}function L2({payload:e=null}={}){let t=ja();return e&&(t.payload=e),{memoryDir:t}}async function P2(e,t,n){let s=null;try{s=await MR(n.memoryDir,e,null,!0,{})}catch{s=null}if(!(s&&s.text))try{s=await BR(n.memoryDir,e,null,!0,null)}catch{s=null}return s&&s.text?{answer:s.text,data:s,miss:!1}:{answer:null,data:null,miss:!0}}r_({open:L2,ask:P2,page:{normFactTerm:V,digestTermFromPayloadBrowser:s_},fallback:!0});})();
|
|
236
|
+
`)}${G}`,replace:!0,...U.length?{pending:{items:U.map(J=>J.trim()),noun:"facts"}}:{}}}let M=n?.parsed?.shape==="meta"?n.parsed.object:null,D=!1,H=null,Y=l.match(HU);if(Y)H=Y[1]?Y[1].trim():null,M=Y[2],D=!0;else if(!M&&!n?.parsed){let C=l.match(/^what\s+(?:is|are)\s+(?:an?\s+)?(.+?)[?.!\s]*$/i);C&&(M=C[1])}if(!M)return null;let Z=Q(c,M),P=lt(p.filter(C=>Z.has(C.subject)),i),K=lt(p.filter(C=>Z.has(C.object)),i),W=D?P.length?P:K:K.length?K:P;if(!W.length)return null;if(H&&W===P){let C=Q(c,H),F=B=>p.find(z=>z.subject===B.object&&C.has(z.object)),N=W.map(B=>({hit:B,bridge:F(B)})).find(({bridge:B})=>B);if(N)return{text:`${se(N.hit)} \u2014 ${se(N.bridge)}`,replace:!0}}return h(W)}function mg(e){let t=e.sourceTypes||[];return t.length===0||t.some(n=>n!=="corpusWeak")}async function UR(e){let{resolveReasoningConfig:t}=await Promise.resolve().then(()=>(qj(),Hj));try{let{loadTomlConfig:n,normalizeConfig:s}=await Promise.resolve().then(()=>(Sa(),th)),o=await n(e),r=await s(o,{configDir:e});return t(r)}catch{return t(null)}}function bR(e,t,n){for(let s of t){if(e.has(s.subject))return s.subject;if(e.has(s.object))return s.object}return n}var kz,Eg,jz,Vn,sd,Yj,wR,Fse,Rz,Dse,Bse,yR,$R,SR,_z,Xj,zse,Use,Wse,Gse,Vse,kg,Kse,Tz,Je,ag,cd,No,vR,ER,Az,_r,Hse,qse,Yse,Xse,Jse,Qse,Zse,eoe,toe,noe,soe,ooe,roe,ioe,aoe,coe,loe,uoe,Jj,Cz,pd,Nz,doe,foe,xR,poe,hoe,moe,goe,Lz,boe,ug,dg,Pz,woe,Mz,Fz,fg,Dz,zz,yoe,kR,jR,Uz,$oe,Soe,RR,voe,Eoe,xoe,Wz,koe,Gz,Ai,joe,Roe,_oe,_R,Toe,Aoe,Vz,Ioe,Ooe,Coe,Noe,Qj,eR,Rg,to,Kz,Yz,id,eU,IR,Loe,yg,OR,tU,nU,fd,sU,oU,Co,$n,rU,iU,aU,cU,Sg,oR,lU,_e,dU,fU,pU,rR,hU,bU,wU,yU,$U,SU,vU,EU,xU,kU,jU,RU,_U,TU,aR,PR,IU,OU,NU,LU,PU,MU,FU,uR,DU,zU,KU,HU,qU,YU,fR,XU,JU,QU,ZU,e2,pR,eo,t2,hR,mR,gR,n2,o2,r2,Poe,zR,a2,c2,Moe,gg,vg,l2,Foe,Doe,WR,Boe,zoe,Uoe,Woe,Goe,hd,Voe,Koe,Hoe,qoe,u2,Yoe,Xoe,Ua=L(()=>{Qe();YE();sn();Fe();us();ll();mu();gu();Pi();bu();ox();tr();Ue();di();rl();$u();tm();as();Ln();Hr();Oc();Hh();qh();Gr();ts();af();br();fm();jx();Ax();Ox();pm();Cx();gm();Au();Vx();Kx();qx();Cu();Jc();la();du();Qx();_u();ji();Dk();Uk();Wk();Ao();yj();kz=(e,t)=>e<t?-1:e>t?1:0;Cc(void 0);Ic(hu);Eg=new Set(["it","this","that","here"]),jz=e=>Eg.has(String(e||"").trim().toLowerCase()),Vn={imports:"understand a dependency/import relationship",uses:"understand a dependency/usage relationship (imports and/or calls)",calls:"understand a call relationship",callsSymbol:"understand a call relationship",defines:"locate what a module/class defines",contains:"understand class membership (methods/attributes)",tests:"assess test coverage",inherits:"understand a class hierarchy/inheritance relationship",touches:"understand commit/change history",touchesSymbol:"understand commit/change history",cochange:"understand change-coupling between modules",reexports:"understand a module's public exports/API surface",serves:"understand which component provides or backs another",denotes:"understand which vocabulary term names a code entity"},sd=e=>e?`${String(e).toLowerCase()}(s)`:"entities",Yj="look up a taught fact about a subject/verb/object";wR={find:{tool:"tmct_search",arg:"query",help:"lexical search across the graph"},search:{tool:"tmct_search",arg:"query",help:"alias of /find"},context:{tool:"tmct_context",arg:"symbol",help:"the sized edit bundle for a symbol (start here to change code)"},snippet:{tool:"tmct_snippet",arg:"symbol",help:"exact source of one function/class/method"},describe:{tool:"tmct_describe",arg:"symbol",help:"a symbol's definition, kind and relations"},signature:{tool:"tmct_signature",arg:"symbol",help:"a symbol's signature only"},members:{tool:"tmct_members",arg:"class",help:"the methods/attributes of a class"},subclasses:{tool:"tmct_subclasses",arg:"class",help:"the subclasses of a class"},impact:{tool:"tmct_impact",arg:"module",help:"what a change to this module or symbol reaches (impact closure)"},callers:{tool:"tmct_callers",arg:"symbol",help:"functions that call this symbol"},callees:{tool:"tmct_callees",arg:"symbol",help:"functions this symbol calls"},tests:{tool:"tmct_tests_for",arg:"symbol",help:"the tests covering this symbol"},untested:{tool:"tmct_untested",arg:null,help:"symbols with no covering test"},history:{tool:"tmct_history",arg:"symbol",help:"the commit history of this symbol"},exports:{tool:"tmct_exports",arg:"module",help:"a module's public exports"},arch:{tool:"tmct_architecture",arg:"package",help:"the architecture overview (optional package filter)",optional:!0}},Fse=new Set(["stats","memory","focus",...Object.keys(wR)]),Rz=new Set(["have","has","holds","hold"]),Dse=new RegExp(`\\b(?:${[...Object.keys(he),...Object.keys(io)].filter(e=>!Rz.has(e)).sort((e,t)=>t.length-e.length).map(e=>e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join("|")})\\b`,"i"),Bse=new Set([...qE.map(e=>e.name),...Object.values(wR).map(e=>e.tool)]),yR=new Set(["hi","hello","hey","yo","hiya","howdy","sup","greetings","g'day","gday","hey there","hi there","hello there","good morning","good afternoon","good evening","morning","alright","you alright","alright mate","morning all","yeah nah","hey y'all","howdy there","hiya there","good day","good day to you","salutations","good to meet you","pleased to meet you","yo yo","ayy","wassup","sup fam","heya","hiya!","gm","ge"]),$R=new Set(["thanks","thank you","thankyou","thx","ty","ta","cheers","nice one","much appreciated","cool thanks","many thanks","much obliged","ta very much","cheers mate","cheers for that","tks","sweet thanks","nice","brilliant","ta for that","cheers, that's everything for now, thanks","that's everything for now, thanks","that's all for now, thanks"]),SR=new Set(["bye","goodbye","quit","exit","see ya","see you","cya","later","farewell","peace","peace out","im off","i'm off","gtg","gotta go","catch you later","farewell then"]),_z=new Set(["ok","okay","cool","aight","fair enough","got it","gotcha","noted","sounds good","sure","cool cool","right","haha ok fair enough"]),Xj=e=>e.replace(/(.)\1+/g,"$1");zse=xg(yR),Use=xg($R),Wse=xg(SR),Gse=new RegExp(`^(?:${[..._z].map(at).join("|")})\\s+(.+)$`,"i"),Vse=[...yR,...$R,...SR,"what can you do","what do you do","help","how do you work","who are you","what are you","what is your name"],kg="(?:[a-z]+er|better|worse|(?:more|less)\\s+[a-z]+)",Kse=new RegExp(`^(?:the\\s+|an?\\s+)?([\\w'-]+(?:\\s+[\\w'-]+)?)\\s+(?:is|are)\\s+(${kg})\\s+than\\s+(.+)$`,"i"),Tz=new RegExp(`^(?:is|are)\\s+(.+?)\\s+(${kg})\\s+than\\s+(.+?)[?.!\\s]*$`,"i"),Je="on|in|at|onto|upon|under|over|beside|near|behind|above|below|inside|outside",ag="mgx:ownedBy",cd="mgx:hasProperty",No="rdfs:subClassOf",vR="rdf:type",ER="rdfs:subPropertyOf",Az=new Set(["operator","teach","entailed"]),_r=e=>!!e.sourceTypes?.some(t=>Az.has(t));Hse=new RegExp(`^you\\s+(?:can|may)\\s+([a-z]+)\\s+an?\\s+([a-z][\\w-]*)\\s+(${Je})\\s+an?\\s+([a-z][\\w-]*)[.!?]*$`,"i"),qse=new RegExp(`^an?\\s+([a-z][\\w-]*)\\s+(?:can|may)\\s+be\\s+([a-z]+)\\s+(${Je})\\s+an?\\s+([a-z][\\w-]*)[.!?]*$`,"i"),Yse=new RegExp(`^to\\s+([a-z]+)\\s+an?\\s+([a-z][\\w-]*)\\s+(${Je})\\s+an?\\s+([a-z][\\w-]*)\\s*,?\\s*nothing\\s+may\\s+([a-z]+)\\s+(${Je})\\s+the\\s+([a-z][\\w-]*)[.!?]*$`,"i"),Xse=new RegExp(`^to\\s+([a-z]+)\\s+an?\\s+([a-z][\\w-]*)\\s+(${Je})\\s+an?\\s+([a-z][\\w-]*)\\s*,?\\s*the\\s+([a-z][\\w-]*)\\s+must\\s+be\\s+(${kg})\\s+than\\s+the\\s+([a-z][\\w-]*)[.!?]*$`,"i"),Jse=new RegExp(`^([a-z]+ing)\\s+an?\\s+([a-z][\\w-]*)\\s+(${Je})\\s+an?\\s+([a-z][\\w-]*)\\s+makes\\s+(?:it|the\\s+([a-z][\\w-]*))\\s+([a-z]+)\\s+(${Je})\\s+the\\s+([a-z][\\w-]*)[.!?]*$`,"i"),Qse=new RegExp(`^to\\s+([a-z]+)\\s+an?\\s+([a-z][\\w-]*)\\s+(${Je})\\s+an?\\s+([a-z][\\w-]*)\\s*,?\\s*the\\s+([a-z][\\w-]*)\\s+may\\s+not\\s+be\\s+with\\s+the\\s+([a-z][\\w-]*)\\s+without\\s+the\\s+([a-z][\\w-]*)[.!?]*$`,"i");Zse=new RegExp(`^the\\s+goal\\s+is\\s+that\\s+(?:(every|each|all)\\s+)?([\\w-]+)\\s+([a-z]+s)\\s+(${Je})\\s+([\\w-]+)[.!?]*$`,"i"),eoe=new RegExp(`^(?:the\\s+goal\\s+is\\s+for|i\\s+want)\\s+(?:(every|each|all)\\s+)?([\\w-]+)\\s+to\\s+([a-z]+)\\s+(${Je})\\s+([\\w-]+)[.!?]*$`,"i"),toe=new RegExp(`^(?:the\\s+goal\\s+is\\s+for|i\\s+want)\\s+(?:(every|each|all)\\s+)?([\\w-]+)\\s+(${Je})\\s+([\\w-]+)[.!?]*$`,"i"),noe=new RegExp(`^(?:can|could)\\s+you\\s+([a-z]+)\\s+an?\\s+([a-z][\\w-]*)\\s+(${Je})\\s+an?\\s+([a-z][\\w-]*)[?.!]*$`,"i"),soe=new RegExp(`^(?:get|put|place|stack)\\s+(?:(every|each|all|both)\\s+)?(?:the\\s+)?([\\w-]+?)\\s+(${Je})\\s+([\\w-]+)[?.!]*$`,"i"),ooe=new RegExp(`^the\\s+goal\\s+is\\s+(?:(every|each|all|both)\\s+)?(?:the\\s+)?([\\w-]+?)\\s+(${Je})\\s+([\\w-]+)[?.!]*$`,"i"),roe=new RegExp(`^(?:(every|each|all)\\s+)?([\\w-]+)\\s+([a-z]+s)\\s+(${Je})\\s+([\\w-]+)$`,"i"),ioe=new RegExp(`^(?:and\\s+|so\\s+|but\\s+)?what\\s+if\\s+([\\w-]+)\\s+(?:had\\s+)?(?:started|start|starts|begun|began|begins|was|were|is|had\\s+been|rested|rests|sat|sits|stood|stands|lay|lies|lain)(?:\\s+(?:out|off))?\\s+(?:${Je})\\s+([\\w-]+)(?:\\s+(?:instead|initially|to\\s+start\\s+with|at\\s+the\\s+start|from\\s+the\\s+start|at\\s+the\\s+beginning))?[?.!\\s]*$`,"i"),aoe=new RegExp(`^(?:and\\s+|so\\s+|but\\s+)?why\\s+(?:did\\s+you\\s+|do\\s+you\\s+|would\\s+you\\s+)?(?:choose\\s+to\\s+|decide\\s+to\\s+)?([a-z]+)\\s+([\\w-]+)(?:\\s+(?:${Je})\\s+([\\w-]+))?(?:\\s+(?:first|initially|at\\s+the\\s+start|to\\s+start(?:\\s+with)?|to\\s+begin(?:\\s+with)?))?\\s+(?:instead\\s+of|rather\\s+than|and\\s+not|not)\\s+([\\w-]+)[?.!\\s]*$`,"i"),coe=new RegExp(`^(?:and\\s+|so\\s+|but\\s+)?why\\s+(?:not|didn'?t\\s+you|did\\s+you\\s+not|couldn'?t\\s+you)\\s+([a-z]+)\\s+([\\w-]+)(?:\\s+(?:${Je})\\s+([\\w-]+))?(?:\\s+(?:first|initially|at\\s+the\\s+start|to\\s+start(?:\\s+with)?))?[?.!\\s]*$`,"i"),loe=new RegExp(`^(?:what|who)\\s+([a-z']+)\\s+(${Je})\\s+(.+?)[?.!\\s]*$`,"i"),uoe=new RegExp(`^what\\s+(?:does|do|is)\\s+([\\w-]+)\\s+([a-z]+)(?:\\s+(${Je}))?[?.!\\s]*$`,"i"),Jj=/^(?:anywhere|everywhere|nowhere|somewhere)$/i,Cz=new Set(["bus","gas","plus","minus","surplus","lens","bias","atlas","canvas","virus","bonus","campus","census","chorus","circus","focus","status","iris","genius","sinus","walrus","cactus","fungus","radius","nucleus","alias","crocus","abacus","syllabus","octopus","platypus"]);pd="(?:(?:usually|often|sometimes|rarely|always|typically|generally|occasionally|frequently|normally|regularly|commonly|mostly|currently|still|also|really|actually|closely|strongly|directly)\\s+)?",Nz="(?:cannot|can't|can not|does not|doesn't|do not|don't|never)",doe=new RegExp(`^(.+?)\\s+(${Nz})\\s+(.+)$`,"i"),foe=new RegExp(`^([\\w'-]+)\\s+${pd}([a-z]+)\\s+(.+?)[.!?]*$`,"i"),xR="with|to|from|by|of|in|on|for|as|about|into",poe=new RegExp(`^(?:the\\s+|an?\\s+)?([\\w'-]+(?:\\s+[\\w'-]+)?)\\s+(?:is|are|was|were)\\s+${pd}(${al})\\s+(${xR})\\s+(.+)$`,"i"),hoe=new RegExp(`^(the\\s+|an?\\s+)?([\\w'-]+(?:\\s+[\\w'-]+)?)\\s+(is|are|was|were)\\s+(?:an?\\s+)?([\\w'-]+)\\s+(${al})\\s+(${xR})\\s+(.+)$`,"i"),moe=new RegExp(`^(?:the\\s+|an?\\s+)([\\w'-]+(?:\\s+[\\w'-]+)?)\\s+([a-z]+)\\s+(${Je})\\s+(.+?)[.!?]*$`,"i"),goe=new RegExp(`^(every|each|all)\\s+([\\w'-]+)\\s+([a-z]+)\\s+(${Je})\\s+(.+?)[.!?]*$`,"i"),Lz="(?:just\\s+)?(?:one|another)\\s+more|another",boe=new RegExp(`^(?:${Lz})\\s+([\\w'-]+)\\s+([a-z]+)\\s+(${Je})\\s+(.+?)[.!?]*$`,"i"),ug=/^(?:is|are|am|owns|maintains)$/i,dg=/\b(?:is|are|am|owns|maintains)\b/i,Pz=new RegExp("^(?:i|me|you|he|him|she|her|it|we|us|they|them|my|your|his|its|our|their|mine|yours|hers|ours|theirs|this|that|these|those|a|an|the|every|each|all|some|any|no|both|either|neither|in|on|at|to|from|by|with|for|of|about|into|onto|over|under|near|before|after|during|through|up|down|off|out|above|below|between|among|against|without|within|along|across|behind|beyond|upon|toward|towards|per|and|but|or|if|because|although|though|while|when|since|unless|until|whether|so|nor|than|as|what|who|whom|whose|which|where|why|how)$","i"),woe=new RegExp(`^(?:${Wo.filter(e=>!/\s/.test(e)).join("|")})$`,"i");Mz=new RegExp(`^(?:does|did)\\s+(?:(?:every|each|all|any)\\s+)?([\\w'-]+)\\s+${pd}([a-z]+)\\s+(.+?)[?.!\\s]*$`,"i"),Fz=new RegExp(`^what\\s+(?:does|did)\\s+([\\w'-]+)\\s+${pd}([a-z]+(?:\\s+(?:${Je}))?)[?.!\\s]*$`,"i"),fg=/^(?:be|own|maintain)$/i,Dz=new RegExp(`^(${Je})\\s+(.+)$`,"i");zz=["first","second","third","then","next","finally","later","meanwhile","afterward","afterwards"],yoe=new RegExp(`^(?:${zz.join("|")})\\b\\s*,?\\s+`,"i"),kR=Object.freeze(["you","i","it","they","he","she","we"]),jR=Object.freeze(["you're","i'm","it's","they're","he's","she's","we're"]),Uz=Object.freeze([...jR,...kR]),$oe=new RegExp(`^(?:every\\s+|each\\s+|all\\s+|some\\s+|a few\\s+|a\\s+|an\\s+)?(${Uz.join("|")})\\s+\\S+`,"i"),Soe=new RegExp(`^(?:every\\s+|each\\s+|all\\s+|some\\s+|a few\\s+|a\\s+|an\\s+)?(?:(${kR.join("|")})\\s+(?:is|are|am|was|were)|(${jR.join("|")}))\\s+(?:an?\\s+)?[\\w'-]+[.!?]*$`,"i"),RR="forget|unlearn|delete|remove",voe=new RegExp(`^(?:${RR})\\s+(?:that\\s+)?(?:a\\s+|an\\s+)?([\\w-]+(?:\\s+[\\w-]+)?)\\s+(?:is|are)\\s+(?:an?\\s+)?(?:(?:kind|type)\\s+of\\s+)?([\\w-]+)$`,"i"),Eoe=new RegExp(`^([\\w-]+)\\s+([a-z]+)s\\s+(${Je})\\s+([\\w-]+)$`,"i"),xoe=new RegExp(`^(?:${RR})\\s+(?:that\\s+)?([\\w-]+)\\s+([a-z]+)s\\s+(${Je})\\s+([\\w-]+)$`,"i"),Wz="collection|set|group|family",koe=new RegExp(`^(?:the\\s+|an?\\s+)?([\\w'-]+(?:\\s+[\\w'-]+)?)\\s+(?:is|are)\\s+an?\\s+(?:${Wz})\\s+of\\s+(?:the\\s+)?([\\w'-]+)[.!?]*$`,"i"),Gz=Object.freeze(["mgx:memberOf","mgx:partOf"]),Ai="(?:\\s+(?:exactly|really|actually|truly|anyway|internally|properly))?",joe=new RegExp(`^what\\s+does\\s+(.+?)${Ai}\\s+do${Ai}\\??$`,"i"),Roe=new RegExp(`^what\\s+(.+?)${Ai}\\s+does${Ai}\\??$`,"i"),_oe=new RegExp(`^what(?:'s|s|\\s+is)\\s+(.+?)${Ai}\\s+do${Ai}\\??$`,"i"),_R="([A-Za-z][\\w'.-]*(?:\\s+[A-Za-z][\\w'.-]*){0,3})",Toe=new RegExp(`^who\\s+(?:is|was)\\s+${_R}$`,"i"),Aoe=new RegExp(`^what\\s+(?:did|has)\\s+${_R}\\s+(?:touch(?:ed)?|chang(?:e|ed)|work(?:ed)?\\s+on|commit(?:ted)?)$`,"i"),Vz="(?:good|bad|clean|messy|ugly|nice|great|terrible|awful|solid|elegant|readable|maintainable|well[- ]written|well[- ]structured|spaghetti|ok|okay|decent|healthy)",Ioe=new RegExp(`^is\\s+(?:this|the)\\s+code(?:base)?\\s+(?:any\\s+)?${Vz}\\b`,"i"),Ooe=new RegExp("^(?:what\\s+time\\s+is\\s+it(?:\\s+(?:now|right\\s+now))?|what(?:'s|s|\\s+is)\\s+the\\s+time(?:\\s+(?:now|right\\s+now))?|what\\s+day\\s+is\\s+it(?:\\s+today)?|what(?:'s|s|\\s+is)\\s+(?:the\\s+)?(?:day|date)(?:\\s+today)?|what(?:'s|s|\\s+is)\\s+today'?s\\s+date|what(?:'s|s|\\s+is)\\s+the\\s+weather(?:\\s+like)?(?:\\s+(?:today|outside))?|how'?s\\s+the\\s+weather(?:\\s+like)?(?:\\s+(?:today|outside))?)\\??$","i"),Coe=Object.freeze({game:["higher","lower","warmer","colder","hotter","up","down","guess"],spiderFly:["watch","step","tick","move","board","web"],adventure:["help","xyzzy","wait","hint","plugh"]});Noe=new Set([...Object.keys(he).flatMap(e=>e.split(/[\s-]+/)),...vn,...Hn,"owns","maintains"].filter(e=>e.length>=3)),Qj=new Set(["mgx:hidden-in","mgx:is-objective","mgx:unlocks-with","mgx:is-npc","mgx:acts-on-turn","mgx:acts-toward","mgx:is-container","mgx:is-open"]);eR=new Set(["owl:onProperty","owl:someValuesFrom","owl:allValuesFrom"]),Rg=new Set(["mgx:currently-in","mgx:located-in","mgx:fixed-in","mgx:stands-locked-in","mgx:works-in"]),to=e=>`${e.subject} ${cl(e.predicate)} ${e.object}`;Kz=Object.entries(Ks).filter(([e])=>!Rg.has(e)).map(([e,t])=>{let n=/^(?:is|are)\s+(.+)$/i.exec(t);return n?{predicate:e,marker:n[1].trim().toLowerCase()}:null}).filter(e=>e&&e.marker.length>1).sort((e,t)=>t.marker.length-e.marker.length);Yz=8;id=null;eU=/^(?:every|each|all|any)\s+/i;IR=new Set(["module","modules","class","classes","function","functions","method","methods","handler","handlers","controller","controllers","service","services","component","components","flow","flows","thing","things","item","items","object","objects","commit","commits"]),Loe=new Set([["interpreter","compiler"],["string","thread"],["heart","kernel"],["battalion","heap"],["bash","sock"],["command","skill"],["docker","longshoreman"],["name","list"],["list","number"]].map(([e,t])=>[e,t].sort().join("|"))),yg=/^(?:is|are|was|were)\s+([\w'-]+(?:\s+[A-Z][\w'-]*)?)\s+(?:the|an?)\s+([a-z][\w-]*)\s+of\s+([\w'-]+(?:\s+[A-Z][\w'-]*)?)[?.!\s]*$/i,OR=/^(?:who|what)\s+(?:is|are)\s+(?:the|an?)\s+([a-z][\w-]*)\s+of\s+([\w'-]+(?:\s+[A-Z][\w'-]*)?)[?.!\s]*$/i,tU=/^(?:who|what)\s+(?:is|are|was|were)\s+([\w-]+(?:\s+[A-Z][\w-]*)?)'s\s+([a-z][\w-]*)[?.!\s]*$/i,nU=/^(who|what)'?s\s+/i,fd=e=>String(e).replace(nU,(t,n)=>`${n} is `),sU=/^(?:who|what)\s+(?:is|are|was|were)\s+([\w-]{2,}?)s\s+([a-z][\w-]*)[?.!\s]*$/i;oU=/^list\s+(?:the\s+|all\s+)?([a-z][\w-]*)\s+of\s+([\w'-]+(?:\s+[A-Z][\w'-]*)?)[?.!\s]*$/i,Co=/^(?:is|are)\s+(?:an?\s+)?(.+?)\s+(?:a\s+kind\s+of|a\s+type\s+of|an?)\s+(.+?)[?.!\s]*$/i,$n=new Set(["rdfs:subClassOf","rdf:type"]),rU=e=>[...e.filter(t=>$n.has(t.predicate)),...e.filter(t=>!$n.has(t.predicate))],iU=6,aU=/^why\s+(?=(?:is|are)\b)/i,cU=/^explain\s+how\s+you\s+know\s+(?:that\s+)?(.+?)\s+(?:is|are)\s+(?:an?\s+)?(.+?)[?.!\s]*$/i;Sg=new Set(["kind","sort","type","subclass","superclass"]),oR=/^(?:so\s+)?(.+?)\s+(?:is|are)\s+(?:an?\s+)?(.+?)\s*,?\s*(?:now\s+)?(?:right|correct|yeah)\??$/i,lU=/^(?:what\s+do\s+you\s+know\s+about|what(?:'s|s|\s+is)\s+in\s+your\s+memory\s+about|what\s+do\s+you\s+remember\s+about)\s+(.+?)[?.!\s]*$/i,_e=32;dU=/^(?:can|could)\s+(all\s+|every\s+)?(?:an?\s+)?([\w'-]+(?:\s+[\w'-]+)*?)\s+([a-z]+)[?.!\s]*$/i,fU=/^(?:does|do)\s+(?:an?\s+|the\s+)?(.+?)\s+have\s+(?:an?\s+|the\s+)?(.+?)[?.!\s]*$/i,pU=/^how\s+many\s+(.+?)\s+(?:does|do)\s+(?:an?\s+|the\s+)?(.+?)\s+have[?.!\s]*$/i,rR=new Set(["mgx:hasA","tmct:has"]),hU=/^(?:can|could)\s+(?:all\s+|every\s+)?(?:an?\s+|the\s+)?(.+?)\s+be\s+([a-z][\w-]*)[?.!\s]*$/i;bU=/^(?:does|do)\s+(?:an?\s+|the\s+)?(.+?)\s+([a-z]+)\s+(?:an?\s+|the\s+)?(.+?)[?.!\s]*$/i,wU=/^what\s+can\s+(?:an?\s+)?(.+?)\s+do[?.!\s]*$/i,yU=/^what\s+has\s+(?:an?\s+)?(.+?)[?.!\s]*$/i,$U=/^what\s+(?:(?:can\s+be|is)\s+used\s+for|is\s+for)\s+(.+?)[?.!\s]*$/i,SU=/^where(?:'s|\s+is|\s+are)\s+(.+?)(?:\s+now)?\s*[?.!]*$/i,vU=/^where\s+(?:does|do|did)\s+(.+?)\s+[a-z][a-z'-]*(?:\s+now)?\s*[?.!]*$/i,EU=new RegExp(`^what(?:'s|\\s+is|\\s+are)\\s+(${Je})\\s+(.+?)\\s*[?.!]*$`,"i"),xU=/^what(?:'s|\s+is|\s+are)\s+(?:the\s+)?(parts|members|contents)\s+of\s+(?:the\s+|an?\s+)?(.+?)\s*[?.!]*$/i,kU=/^what\s+([a-z][\w-]*)\s+(?:does|do)\s+(?:an?\s+|the\s+)?(.+?)\s+([a-z][a-z-]*)\s*[?.!]*$/i,jU=/^(?:do|does)\s+(all\s+|every\s+)?(?:an?\s+|the\s+)?([\w'-]+(?:\s+[\w'-]+)*?)\s+([a-z-]+)[?.!\s]*$/i,RU=/^what\s+can\s+(?!be\s)(.+?)[?.!\s]*$/i,_U=/^what\s+(?:cannot|can't|cant|can\s+not)\s+(.+?)[?.!\s]*$/i,TU=/^(?:which|what)\s+([\w'-]+(?:\s+[\w'-]+)*?)\s+can\s+(.+?)[?.!\s]*$/i;aR=e=>String(e||"").replace(/\s+/g," ").trim();PR="(?:most|least)\\s+[a-z][\\w-]*|[a-z][\\w-]*est|best|worst",IU=new RegExp(`^which\\s+([\\w'-]+)\\s+(?:is|are)\\s+(?:the\\s+)?(${PR})[?.!\\s]*$`,"i"),OU=new RegExp(`^what(?:'s|s|\\s+is)\\s+the\\s+(${PR})\\s+([\\w'-]+)[?.!\\s]*$`,"i");NU=new Set(["rdfs:subClassOf","rdf:type","mgx:hasA","mgx:capableOf","mgx:usedFor","mgx:ownedBy","owl:disjointWith","mgx:hasProperty","mgx:receivesAction"]),LU=Object.entries(Ks).filter(([e])=>!NU.has(e)&&!Rg.has(e)).map(([e,t])=>({predicate:e,re:new RegExp(`^what\\s+${at(t)}\\s+(.+?)[?.!\\s]*$`,"i")})).sort((e,t)=>t.re.source.length-e.re.source.length),PU=new Set(["rdfs:subClassOf","rdf:type","owl:disjointWith","mgx:hasProperty","mgx:hasA","mgx:capableOf","mgx:ownedBy"]),MU=new Set(["mgx:partOf","mgx:memberOf"]),FU=Object.entries(Ks).filter(([e])=>!PU.has(e)&&!Rg.has(e)).map(([e,t])=>{let n;if(t==="can be")n=new RegExp("^can\\s+(?:an?\\s+|the\\s+)?(.+?)\\s+be\\s+(.+?)[?.!\\s]*$","i");else if(t.startsWith("is ")){let s=at(t.slice(3));n=new RegExp(`^(?:is|are)\\s+(?:an?\\s+|the\\s+)?(.+?)\\s+${s}\\s+(?:an?\\s+|the\\s+)?(.+?)[?.!\\s]*$`,"i")}else{let[s,...o]=t.split(" "),r=[nr(s),...o].map(at).join("\\s+");n=new RegExp(`^(?:does|do)\\s+(?:an?\\s+|the\\s+)?(.+?)\\s+${r}\\s+(?:an?\\s+|the\\s+)?(.+?)[?.!\\s]*$`,"i")}return{predicate:e,phrase:t,re:n}}).sort((e,t)=>t.re.source.length-e.re.source.length),uR=/^what\s+(?:inherits?\s+(?:from\s+)?(?:an?\s+)?|is\s+(?:an?\s+)?(?:kind|sort|type)\s+of\s+|is\s+(?:an?\s+)?subclass\s+of\s+)(.+?)[?.!\s]*$/i,DU=new Set(["changed","change","changes","updated","modified","happened","occurred"]);zU=new Set(["owl:unionof","owl:complementof","owl:oneof","owl:allvaluesfrom","owl:mincardinality","owl:maxcardinality","owl:cardinality","rdfs:subpropertyof","owl:inverseof"]);KU=/^what\s+(?:did|have)\s+(?:i|we|you)\s+(?:told|tell|said|say)\s+(?:you|me|us)?\s*about\s+(.+?)[?.!\s]*$/i,HU=/^what\s+(?:kind|type)\s+of\s+(?:an?\s+)?([\w-]+(?:\s+[\w-]+)?)?\s*(?:is|are)\s+(?:an?\s+)?(.+?)[?.!\s]*$/i,qU=/^does\s+every\s+(.+?)\s+have\s+at\s+least\s+(\d+)\s+(.+?)[?.!\s]*$/i,YU=/^does\s+an?\s+(.+?)\s+have\s+an?\s+(.+?)[?.!\s]*$/i,fR=new Set(["owl:cardinality","owl:minCardinality","owl:maxCardinality","owl:onClass"]),XU=/^who\s+(?:owns|maintains)\s+(.+?)[?.!\s]*$/i,JU=/^(?:does|did)\s+([\w'-]+)\s+(?:owns?|maintains?)\s+(.+?)[?.!\s]*$/i,QU=/^(?:is|are|was|were)\s+(.+?)\s+owned\s+by\s+([A-Za-z][\w'-]*(?:\s+[A-Z][\w'-]*)?)[?.!\s]*$/i,ZU=/^(?:does|did)\s+([\w'-]+)\s+(?:has|have)\s+an?\s+([a-z][\w-]*)\s+method[?.!\s]*$/i,e2=/^what\s+methods\s+does\s+([\w'-]+)\s+have[?.!\s]*$/i,pR=/^(?:is|are|was|were)\s+(.+?)\s+([A-Za-z][\w-]*)[?.!\s]*$/i,eo=/^(?:it|this|that)$/i,t2=/^(?:it|them|this|that|in|on|of|to|at)$/i,hR=/^(?:it|this|that)(?:\s+one)?\s+(?:before|after)\b/i,mR=/^(?:you|i|they|he|she|we)\b/i,gR=(e,t)=>({text:`I don't know anything about "${e}" yet \u2014 teach me directly, e.g. "remember that ${dd(e)} is ${t}".`,replace:!0}),n2=/^(?:what\s+(?:did|have)\s+(?:i|we)\s+(?:told?|tell|said?|say)\s+(?:you|me|us)?(?:\s+(?:last\s+time|before|earlier|previously|already))?|what\s+facts?\s+do\s+you\s+(?:know|have|remember)|what\s+do\s+you\s+(?:know|remember)|what\s+have\s+you\s+(?:learned|learnt|remembered))[?.!\s]*$/i;o2=/inherit|supertype|subclass|extend|specializ/i,r2=8;Poe=new RegExp(`\\b(?:${[...Eg].join("|")})\\b`,"i"),zR=/^what\s+(?:is|are)\s+(?:an?\s+)?(.+?)[?.!\s]*$/i,a2=/^who\s+(?:is|are|was|were)\s+(?:an?\s+|the\s+)?([\w'-]+)[?.!\s]*$/i,c2=/^(?:please\s+|can\s+you\s+|could\s+you\s+)*(?:define|definition\s+of|give\s+me\s+the\s+definition\s+of)\s+(?:the\s+(?:term|word)\s+)?(?:an?\s+|the\s+)?(.+?)[?.!\s]*$/i;Moe=new RegExp(`^(?:(?:the|a|an)\\s+)?(.+?)\\s+(${Object.keys(nt).join("|")})$`,"i"),gg="(?:(?:can|could|would)\\s+you\\s+(?:please\\s+)?)?(?:(?:show|give)\\s+(?:me|us)\\s+|describe\\s+|explain\\s+|what(?:'s|s|\\s+is)\\s+)?",vg="(?:of|for)\\s+(?:this|the)\\s+(?:app|codebase|repo|repository|project|code)",l2=`(?:\\s+${vg})?`,Foe=[new RegExp(`^${gg}the\\s+architecture(?:\\s+(?:overview|map|diagram))?${l2}(?:\\s+here)?\\??$`,"i"),new RegExp(`^${gg}architecture\\s+(?:${vg}|overview|map|diagram)\\??$`,"i"),new RegExp(`^${gg}(?:(?:an?|the)\\s+)?(?:overview|map|diagram)\\s+${vg}(?:\\s+here)?\\??$`,"i")],Doe={find:"locate a specific named entity",search:"locate a specific named entity",context:"gather the sized edit bundle for a symbol before changing code",snippet:"view a symbol's exact source",describe:"look up a symbol's definition and relations",signature:"view a symbol's signature",members:Vn.contains,subclasses:Vn.inherits,impact:"understand what a change to this module would reach (impact closure)",callers:Vn.calls,callees:Vn.calls,tests:Vn.tests,untested:Vn.tests,history:Vn.touches,exports:Vn.reexports,arch:"understand the overall architecture (package/module boundaries)",capabilities:"see what /plan can plan over \u2014 built-in query tools and taught actions",goals:"see the declared goals a trace is recognized against, and where each one came from",syllogise:"materialize the entailed facts that follow from what's remembered about one term",wiki:"toggle the live Wikipedia supplement for questions nothing local can answer",wikipedia:"choose which source the research lane fetches from",wikidata:"choose which source the research lane fetches from",export:"write the memory store to a file, in the standard JSONL shape",ingest:"read a local text file and store every fact the recognizer grounds from it",news:"surface or work the news feed built over this graph"},WR="(?:changed?|modif(?:y|ied)|edits?|edited|touch(?:es|ed)?|updates?|updated|alters?|altered|deletes?|deleted|removes?|removed|drops?|dropped)",Boe=new RegExp(`^what\\s+(?:would|will|might|could|does|do)?\\s*(?:breaks?|fails?|happens?|stops?\\s+working|is\\s+affected|are\\s+affected|gets?\\s+affected|be\\s+affected|is\\s+impacted|be\\s+impacted)\\s+if\\s+(?:i|we|you|one|someone)\\s+${WR}\\s+(?:the\\s+)?(.+?)[?.!\\s]*$`,"i"),zoe=new RegExp(`^if\\s+(?:i|we|you|one|someone)\\s+${WR}\\s+(?:the\\s+)?(.+?),?\\s+what\\s+(?:would\\s+|will\\s+|might\\s+|could\\s+|does\\s+|do\\s+)?(?:breaks?|fails?|happens?|stops?\\s+working|is\\s+affected|are\\s+affected|gets?\\s+affected|be\\s+affected|would\\s+break|will\\s+break)[?.!\\s]*$`,"i"),Uoe=new RegExp("^what\\s+(?:is|are|gets?|would\\s+be|will\\s+be)\\s+(?:affected|impacted|broken)\\s+(?:by|when|if)\\s+(?:i\\s+|we\\s+|you\\s+)?(?:chang(?:e|es|ing)|edit(?:s|ing)?|modif(?:y|ies|ying)|touch(?:es|ing)?|updat(?:e|es|ing)|delet(?:e|es|ing)|remov(?:e|es|ing)|a\\s+change\\s+to)\\s+(?:the\\s+)?(.+?)[?.!\\s]*$","i"),Woe=new RegExp("^(?:(?:can|could)\\s+(?:i|we|you|one|someone)\\s+safely|is\\s+it\\s+safe\\s+to)\\s+(?:change|edit|modify|touch|update|alter|delete|remove|drop)\\s+(?:the\\s+)?(.+?)[?.!\\s]*$","i"),Goe=new RegExp("^(?:what(?:'s|\\s+is)\\s+the\\s+)?(?:blast\\s+radius|impact)\\s+(?:of|for)\\s+(?:chang(?:ing|es)\\s+|editing\\s+|modifying\\s+|touching\\s+|updating\\s+|deleting\\s+|removing\\s+)?(?:the\\s+)?(.+?)[?.!\\s]*$","i"),hd="as\\s+(?:its|the|an?)?\\s*(?:base\\s+class|parent\\s+class|base|parent)",Voe=new RegExp(`^(.+?)\\s+uses?\\s+(?:which\\s+[\\w'-]+|what)\\s+${hd}\\s*\\??$`,"i"),Koe=new RegExp(`^what\\s+(?:does|do|did)\\s+(.+?)\\s+uses?\\s+${hd}\\s*\\??$`,"i"),Hoe=new RegExp(`^(?:does|do|did)\\s+(.+?)\\s+uses?\\s+(.+?)\\s+${hd}\\s*\\??$`,"i"),qoe=new RegExp(`^(.+?)\\s+uses?\\s+(.+?)\\s+${hd}\\s*[.!]*$`,"i"),u2=Object.freeze([...Eg].filter(e=>e!=="here").concat("they")),Yoe=new RegExp(`^((?:is|are|can|could|does|do)\\s+|what\\s+(?:is|are)\\s+)(${u2.join("|")})\\b(\\s+\\S.*)?$`,"i"),Xoe=ne(".tmct","memory","corpus-seed.json")});Ua();Ue();Nn();tr();Cu();var md={uninformativeClassMaxShare:.35,uninformativeClassMinSubjects:12,entailedDepthPenalty:.2,minoritySensePenalty:.5,minScore:.05,groupSplitThreshold:4,openerConceptCount:2,maxObjectsPerBodySentence:4,maxBodySentences:4,closerRootCount:2,budget:{chatReply:5,researchPanel:10,cliDigest:12,ledgerTerm:8}};var f2=(e,t)=>e<t?-1:e>t?1:0,KR=Object.freeze({"rdfs:subClassOf":"isa","rdf:type":"isa","mgx:atLocation":"location","mgx:locatedNear":"location","mgx:partOf":"partOf","mgx:memberOf":"partOf","mgx:capableOf":"capableOf","mgx:usedFor":"usedFor"}),Ar=Object.freeze(["isa","location","partOf","capableOf","usedFor","other"]),gd=e=>KR[e]||"other",p2=e=>Math.max(0,Math.min(1,e));function GR(e){let t=(e.sourceTypes||[]).map(n=>Os[n]??0);return t.length?Math.max(...t):typeof e.trust=="number"&&e.trust>0?e.trust:Os.entailed}function h2(e){return Array.isArray(e.environments)&&e.environments.length?!0:(e.sourceTypes||[]).includes("entailed")}function VR(e,t){let n=Number(t?.totalSubjects)||0;return n<=0?0:(Number(t?.classSubjectCounts?.[e])||0)/n}function HR(e,t,n={},s={}){let o={...md,...s.config||{}},r=Number.isInteger(s.budget)?s.budget:o.budget.chatReply,i=(t||[]).filter(v=>v&&v.object&&v.object!==e),a=[],c=(Number(n?.totalSubjects)||0)>=o.uninformativeClassMinSubjects,l=[];for(let v of i){if(gd(v.predicate)==="isa"){let E=VR(v.object,n);if(c&&E>o.uninformativeClassMaxShare){a.push({row:v,family:"isa",reason:"uninformative-class",share:E});continue}}l.push(v)}let u=l.filter(v=>gd(v.predicate)==="isa").map(v=>v.object),d=Ou(u,{subClassEdges:n.subClassEdges||[],disjointEdges:n.disjointEdges||[]}),p=new Map,f=new Map;for(let v of d.clusters){let E=0;for(let I of v.objects){f.set(I,v.label);let k=l.find(R=>R.object===I&&gd(R.predicate)==="isa");E+=k?GR(k):0}p.set(v.label,E)}let h=null,m=-1;for(let[v,E]of[...p].sort((I,k)=>f2(I[0],k[0])))E>m&&(m=E,h=v);let b=[];for(let v of l){let E=gd(v.predicate),I=GR(v),k={provenance:I};if(h2(v)&&(I-=o.entailedDepthPenalty,k.entailed=!0),E==="isa"){let $=.6+.4*(1-VR(v.object,n));I*=$,k.informativeness=$;let _=f.get(v.object);h&&_&&_!==h&&(I-=o.minoritySensePenalty,k.minoritySense=_)}I=p2(I),b.push({row:v,family:E,score:I,reasons:k})}let g=[];for(let v of b)v.score<o.minScore?a.push({row:v.row,family:v.family,reason:"below-floor",score:v.score}):g.push(v);let w=new Map;for(let v of g)w.has(v.family)||w.set(v.family,[]),w.get(v.family).push(v);for(let v of w.values())v.sort((E,I)=>I.score-E.score||Zt(E.row,I.row));let y=Ar.filter(v=>w.has(v)).concat([...w.keys()].filter(v=>!Ar.includes(v)).sort()),S=[],T=!1;for(;S.length<r&&!T;){T=!0;for(let v of y){let E=w.get(v);if(E&&E.length&&(S.push(E.shift()),T=!1,S.length>=r))break}}for(let v of y)for(let E of w.get(v)||[])a.push({row:E.row,family:E.family,reason:"over-budget",score:E.score});return S.sort((v,E)=>{let I=Ar.indexOf(v.family),k=Ar.indexOf(E.family);return I-k||E.score-v.score||Zt(v.row,E.row)}),{term:e,selected:S,cut:a,senses:{split:d.split,clusters:d.clusters,dominantLabel:h}}}qi();Ve();var m2=new Set(["isa","location","partOf","capableOf","usedFor"]),g2=new Set(["single","several","chained","group","closer"]),qR=(e,t)=>`${e}:${t}`;function Ag(e){let t=new Map;for(let n of e||[]){if(!n||typeof n.family!="string"||!m2.has(n.family)||typeof n.form!="string"||!g2.has(n.form)||typeof n.template!="string"||!n.template.trim())continue;let s=qR(n.family,n.form);t.has(s)||t.set(s,{family:n.family,form:n.form,templates:[]});let o=t.get(s);o.templates.includes(n.template)||o.templates.push(n.template)}return t}var Ir=e=>`${Ds(e)} ${e}`;function b2(e){let t=(e||[]).map(o=>String(o||"").trim()).filter(Boolean);if(!t.length)return"";let n=Ir(t[0]),s=t.slice(1);return s.length?`${n}, and so ${Hi(s.map(Ir))}`:n}function w2(e,t,n,s){let o=String(e||"").trim(),r=(t||[]).map(c=>String(c||"").trim()).filter(Boolean),i=r[0]||"",a=String(s||"").trim();return{TERM:o,TERM_CAP:qr(o),A_TERM:Ir(o),A_TERM_CAP:qr(Ir(o)),TERMS:Lc(o),TERMS_CAP:qr(Lc(o)),PRONOUN:"it",PRONOUN_CAP:"It",PARENT:a,A_PARENT:a?Ir(a):"",OBJECT:i,A_OBJECT:i?Ir(i):"",OBJECTS_A:Hi(r.map(Ir)),OBJECTS_PLURAL:Hi(r.map(Lc)),OBJECTS_RAW:Hi(r),CHAIN:b2(n&&n.length?n:r.slice(0,1))}}function y2(e,t){return String(e).replace(/\{([A-Z_]+)\}/g,(n,s)=>s in t?t[s]:"").replace(/\s+/g," ").replace(/\s+([.,;])/g,"$1").trim()}function no(e,t,n,s={}){let o=(n||[]).filter(Boolean);if(!o.length)return null;let r=s.term??o[0].subject??"",i=s.form||(o.length>1?"several":"single"),a=e instanceof Map?e.get(qR(t,i)):null,c=a?a.templates:null;if(!c||!c.length)return null;let l=s.variantSeed??"",u=Yc(`${r}|${t}|${i}|${l}`)%c.length,d=s.objectsOverride||o.map(f=>f.object),p=y2(c[u],w2(r,d,s.chain,s.parent));return p?{text:p,rows:o,family:t,form:i}:null}qi();var $2=Ar.filter(e=>e!=="isa"&&e!=="other"),S2=(e,t)=>e<t?-1:e>t?1:0;function v2(e){let t=new Map;for(let n of e||[])t.has(n.family)||t.set(n.family,[]),t.get(n.family).push(n.row);return t}function YR(e,t){let n=Math.max(1,Math.trunc(t)||1),s=[];for(let o=0;o<(e||[]).length;o+=n)s.push(e.slice(o,o+n));return s}function E2(e,t){let n=c=>(t?.[c.object]||[])[1]||null,s=new Map;for(let c of e||[]){let l=n(c);l&&s.set(l,(s.get(l)||0)+1)}let o=new Map,r=[],i=[];for(let c of e||[]){let l=n(c);l&&s.get(l)>=2?(o.has(l)||(o.set(l,[]),r.push(l)),o.get(l).push(c)):i.push(c)}let a=r.map(c=>({parent:c,rows:o.get(c)}));return i.length&&a.push({parent:null,rows:i}),a}function x2(e,t,n){let s=new Map,o=new Map;for(let c of t||[]){let l=e?.[c.object];if(!Array.isArray(l)||l.length<2)continue;let u=l[l.length-1];!u||u===c.object||(s.set(u,(s.get(u)||0)+1),o.has(u)||o.set(u,[]),o.get(u).push(c))}let r=[...s.keys()].sort((c,l)=>s.get(l)-s.get(c)||S2(c,l)).slice(0,Math.max(0,n)),i=[],a=new Set;for(let c of r)for(let l of o.get(c)||[])a.has(l.id)||(a.add(l.id),i.push(l));return{roots:r,rows:i}}function k2(e,t,n,s,o){let r=[];if(!e.length)return r;if(e.length===1){let p=t[e[0].object],f=p&&p.length>1?"chained":"single",h=no(s,"isa",e,{term:n,form:f,chain:p});return h&&r.push({...h,role:"names-term",paragraph:"definition"}),r}if(e.length<=o.groupSplitThreshold){let p=no(s,"isa",e,{term:n,form:"several"});return p&&r.push({...p,role:"names-term",paragraph:"definition"}),r}let i=e.slice(0,o.openerConceptCount),a=e.slice(o.openerConceptCount),c=no(s,"isa",i,{term:n,form:i.length>1?"several":"single",variantSeed:n});c&&r.push({...c,role:"names-term",paragraph:"definition"});let l=[];for(let p of E2(a,t))for(let f of YR(p.rows,o.maxObjectsPerBodySentence))l.push({parent:p.parent,rows:f});if(l.length>o.maxBodySentences){let p=l.slice(0,o.maxBodySentences),f=p[p.length-1];for(let h of l.slice(o.maxBodySentences))f.rows=f.rows.concat(h.rows);f.parent=null,l=p}for(let p of l){let f=p.parent?no(s,"isa",p.rows,{term:n,form:"group",parent:p.parent,variantSeed:p.parent}):no(s,"isa",p.rows,{term:n,form:"several",variantSeed:n});f&&r.push({...f,role:"describes-isa",paragraph:"definition"})}let{roots:u,rows:d}=x2(t,e,o.closerRootCount);if(u.length){let p=no(s,"isa",d.length?d:e,{term:n,form:"closer",objectsOverride:u,variantSeed:n});p&&r.push({...p,role:"closes-isa",paragraph:"definition"})}return r}function j2(e,t){if(!e.length)return;let n=e[0];if(/\bnames-term\b/.test(n.role))return;let s=qr(`${Ds(t)} ${t}`);n.text=n.text.replace(/^It\b/,s),n.role="names-term"}function R2(e,t){let n=[],s=null,o=null;for(let r of e)(!s||r.paragraph!==o||s.length>=t)&&(s=[],o=r.paragraph,n.push(s)),s.push(r);return n.map(r=>({sentences:r,text:r.map(i=>i.text).join(" ")}))}function XR(e,t,n={}){let s=e?.term||"",o=Number.isInteger(n.maxSentencesPerParagraph)?n.maxSentencesPerParagraph:3,r=n.chains||{},i={...md,...n.config||{}},a=v2(e?.selected||[]),c=[];for(let u of k2(a.get("isa")||[],r,s,t,i))c.push(u);for(let u of $2){let d=a.get(u);if(!(!d||!d.length))for(let p of YR(d,i.maxObjectsPerBodySentence)){let f=no(t,u,p,{term:s});f&&c.push({...f,role:"describes",paragraph:"description"})}}j2(c,s);let l=new Map;for(let u of c)for(let d of u.rows)l.has(d.id)||l.set(d.id,d);return{term:s,sentences:c,paragraphs:R2(c,o),provenanceRows:[...l.values()]}}var _2=e=>({subject:e.subject,predicate:e.predicate,object:e.object,sourceTypes:e.sourceTypes||[],provenance:e.provenance||""});function T2(e){let t=new Set,n=[];for(let s of e||[]){let o=s.provenance||(s.sourceTypes||[]).join(",");!o||t.has(o)||(t.add(o),n.push({provenance:s.provenance||"",sourceTypes:s.sourceTypes||[]}))}return n}var A2=Object.freeze({facts:"show the facts",chains:"show the chains"});function I2(e,t){let n=[...(e?.selected||[]).map(o=>o.row),...(e?.cut||[]).map(o=>o.row)].filter(Boolean),s=Object.entries(t||{}).filter(([,o])=>Array.isArray(o)&&o.length>1).map(([o,r])=>({object:o,chain:r}));return{escapes:A2,facts:n.map(_2),factCount:n.length,chains:s}}function JR(e,t,n={}){let s=t?.term||e?.term||"";return{kind:"term-article",term:s,headline:s,paragraphs:(t?.paragraphs||[]).map(o=>o.text).filter(Boolean),body:t?.paragraphs||[],sources:T2(t?.provenanceRows||[]),detail:I2(e,n.chains),provenanceRows:t?.provenanceRows||[]}}function QR(e,t,n={},s=new Map,o={}){let r=HR(e,t,n,o),i=XR(r,s,o);return JR(r,i,o)}Cu();la();var ZR=new Set(["rdfs:subClassOf","rdf:type"]);function e_(e){let t=new Map,n=new Set,s=[],o=[];for(let i of e||[])!i||!i.predicate||(ZR.has(i.predicate)?(n.add(i.subject),t.has(i.object)||t.set(i.object,new Set),t.get(i.object).add(i.subject),s.push([i.subject,i.object])):i.predicate==="owl:disjointWith"&&o.push([i.subject,i.object]));let r={};for(let[i,a]of t)r[i]=a.size;return{classSubjectCounts:r,totalSubjects:n.size,subClassEdges:s,disjointEdges:o}}function t_(e,t,n=6){let s=Wa(e||[]),o={};for(let r of t||[]){if(r in o)continue;let i=Iu(r,s,{cap:n,stopAt:ul});i.length>1&&(o[r]=i)}return o}function n_(e){let t=[],n=new Set;for(let s of e||[])!s||!ZR.has(s.predicate)||n.has(s.object)||(n.add(s.object),t.push(s.object));return t}Ue();Ua();function O2(e,t,n,s,o={}){let r=Ag(s||[]);if(!r||r.size===0)return null;let i=t||[],a=e_(n||i),c=t_(a.subClassEdges,n_(i));return QR(e,i,a,r,{...o,chains:c})}function s_(e,t,n,s={}){let o=gt(e||{individuals:[],objectProperties:[]}),r=Q(V,t),i=o.filter(c=>r.has(c.subject));if(!i.length)return null;let a=O2(t,i,o,n,s);return C2(a)}function C2(e){if(!e||!Array.isArray(e.paragraphs)||!e.paragraphs.length)return null;let t=e.detail&&Array.isArray(e.detail.facts)?e.detail.facts:[];return{term:e.term||"",paragraphs:e.paragraphs.slice(),sources:[...new Set((e.sources||[]).map(n=>n.provenance).filter(Boolean))],facts:t,factCount:e.detail&&Number.isInteger(e.detail.factCount)?e.detail.factCount:t.length}}var N2="no session is open on this page yet \u2014 await tmct.open() first",o_=Symbol.for("tmct.surface.fallback");function r_({open:e,ask:t=null,plan:n=null,turn:s=null,page:o={},fallback:r=!1,target:i=globalThis}={}){if(typeof e!="function")throw new Error("publishTmctSurface: `open` must be this page's session factory");let a=i.tmct;if(r&&a&&!a[o_])return a;let c=null,l=()=>{if(!c)throw new Error(N2);return c},u={async open(...d){return c=await e(...d),c},get session(){return c},async turn(d,p){let f=l();return s?s(d,p,f):typeof f.turn!="function"?{answer:"this page runs no conversational turn \u2014 see tmct.session for what it does run",end:!1,record:null,plan:null,research:null}:f.turn(d,p)},async ask(d,p){return t?t(d,p,l()):{answer:"this page has no separate ask route \u2014 it answers questions through tmct.turn()",data:void 0,miss:!0}},async plan(d,p){return n?n(d,p,l()):{refused:!0,why:"this page's bundle carries no capability planner",driver:null,calls:[],composed:null,observed:null}},page:o,fallback:r};return u[o_]=r,i.tmct=u,u}function L2({payload:e=null}={}){let t=ja();return e&&(t.payload=e),{memoryDir:t}}async function P2(e,t,n){let s=null;try{s=await MR(n.memoryDir,e,null,!0,{})}catch{s=null}if(!(s&&s.text))try{s=await BR(n.memoryDir,e,null,!0,null)}catch{s=null}return s&&s.text?{answer:s.text,data:s,miss:!1}:{answer:null,data:null,miss:!0}}r_({open:L2,ask:P2,page:{normFactTerm:V,digestTermFromPayloadBrowser:s_},fallback:!0});})();
|