[{"data":1,"prerenderedAt":3168},["ShallowReactive",2],{"i-mdi:magnify":3,"i-simple-icons:visualstudiocode":8,"i-mdi:github":11,"i-mdi:discord":13,"i-mdi:youtube":15,"i-mdi:flask-outline":17,"i-vscode-icons:default-folder-opened":19,"i-vscode-icons:default-folder":22,"i-vscode-icons:folder-type-plugin":24,"i-vscode-icons:folder-type-src":26,"i-vscode-icons:folder-type-test":28,"i-vscode-icons:file-type-typescript":30,"i-vscode-icons:file-type-json":32,"docs-\u002Fdocs\u002Fv2\u002Fcognets\u002Foverview\u002Flanguages":34,"i-vscode-icons:folder-type-interfaces":3156,"i-vscode-icons:folder-type-library":3158,"i-vscode-icons:folder-type-typings":3160,"i-vscode-icons:file-type-rust":3162,"i-vscode-icons:file-type-cargo":3164,"i-vscode-icons:file-type-python":3166},{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":7},0,24,false,"\u003Cpath fill=\"currentColor\" d=\"M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5l-1.5 1.5l-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16A6.5 6.5 0 0 1 3 9.5A6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14S14 12 14 9.5S12 5 9.5 5\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":9,"hidden":10},"\u003Cpath fill=\"currentColor\" d=\"M23.15 2.587L18.21.21a1.49 1.49 0 0 0-1.705.29l-9.46 8.63l-4.12-3.128a1 1 0 0 0-1.276.057L.327 7.261A1 1 0 0 0 .326 8.74L3.899 12L.326 15.26a1 1 0 0 0 .001 1.479L1.65 17.94a1 1 0 0 0 1.276.057l4.12-3.128l9.46 8.63a1.49 1.49 0 0 0 1.704.29l4.942-2.377A1.5 1.5 0 0 0 24 20.06V3.939a1.5 1.5 0 0 0-.85-1.352m-5.146 14.861L10.826 12l7.178-5.448z\"\u002F>",true,{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":12},"\u003Cpath fill=\"currentColor\" d=\"M12 2A10 10 0 0 0 2 12c0 4.42 2.87 8.17 6.84 9.5c.5.08.66-.23.66-.5v-1.69c-2.77.6-3.36-1.34-3.36-1.34c-.46-1.16-1.11-1.47-1.11-1.47c-.91-.62.07-.6.07-.6c1 .07 1.53 1.03 1.53 1.03c.87 1.52 2.34 1.07 2.91.83c.09-.65.35-1.09.63-1.34c-2.22-.25-4.55-1.11-4.55-4.92c0-1.11.38-2 1.03-2.71c-.1-.25-.45-1.29.1-2.64c0 0 .84-.27 2.75 1.02c.79-.22 1.65-.33 2.5-.33s1.71.11 2.5.33c1.91-1.29 2.75-1.02 2.75-1.02c.55 1.35.2 2.39.1 2.64c.65.71 1.03 1.6 1.03 2.71c0 3.82-2.34 4.66-4.57 4.91c.36.31.69.92.69 1.85V21c0 .27.16.59.67.5C19.14 20.16 22 16.42 22 12A10 10 0 0 0 12 2\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":14,"hidden":10},"\u003Cpath fill=\"currentColor\" d=\"m22 24l-5.25-5l.63 2H4.5A2.5 2.5 0 0 1 2 18.5v-15A2.5 2.5 0 0 1 4.5 1h15A2.5 2.5 0 0 1 22 3.5V24M12 6.8c-2.68 0-4.56 1.15-4.56 1.15c1.03-.92 2.83-1.45 2.83-1.45l-.17-.17c-1.69.03-3.22 1.2-3.22 1.2c-1.72 3.59-1.61 6.69-1.61 6.69c1.4 1.81 3.48 1.68 3.48 1.68l.71-.9c-1.25-.27-2.04-1.38-2.04-1.38S9.3 14.9 12 14.9s4.58-1.28 4.58-1.28s-.79 1.11-2.04 1.38l.71.9s2.08.13 3.48-1.68c0 0 .11-3.1-1.61-6.69c0 0-1.53-1.17-3.22-1.2l-.17.17s1.8.53 2.83 1.45c0 0-1.88-1.15-4.56-1.15m-2.07 3.79c.65 0 1.18.57 1.17 1.27c0 .69-.52 1.27-1.17 1.27c-.64 0-1.16-.58-1.16-1.27c0-.7.51-1.27 1.16-1.27m4.17 0c.65 0 1.17.57 1.17 1.27c0 .69-.52 1.27-1.17 1.27c-.64 0-1.16-.58-1.16-1.27c0-.7.51-1.27 1.16-1.27Z\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":16},"\u003Cpath fill=\"currentColor\" d=\"m10 15l5.19-3L10 9zm11.56-7.83c.13.47.22 1.1.28 1.9c.07.8.1 1.49.1 2.09L22 12c0 2.19-.16 3.8-.44 4.83c-.25.9-.83 1.48-1.73 1.73c-.47.13-1.33.22-2.65.28c-1.3.07-2.49.1-3.59.1L12 19c-4.19 0-6.8-.16-7.83-.44c-.9-.25-1.48-.83-1.73-1.73c-.13-.47-.22-1.1-.28-1.9c-.07-.8-.1-1.49-.1-2.09L2 12c0-2.19.16-3.8.44-4.83c.25-.9.83-1.48 1.73-1.73c.47-.13 1.33-.22 2.65-.28c1.3-.07 2.49-.1 3.59-.1L12 5c4.19 0 6.8.16 7.83.44c.9.25 1.48.83 1.73 1.73\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":18},"\u003Cpath fill=\"currentColor\" d=\"M5 19a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1c0-.21-.07-.41-.18-.57L13 8.35V4h-2v4.35L5.18 18.43c-.11.16-.18.36-.18.57m1 3a3 3 0 0 1-3-3c0-.6.18-1.16.5-1.63L9 7.81V6a1 1 0 0 1-1-1V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v1a1 1 0 0 1-1 1v1.81l5.5 9.56c.32.47.5 1.03.5 1.63a3 3 0 0 1-3 3zm7-6l1.34-1.34L16.27 18H7.73l2.66-4.61zm-.5-4a.5.5 0 0 1 .5.5a.5.5 0 0 1-.5.5a.5.5 0 0 1-.5-.5a.5.5 0 0 1 .5-.5\"\u002F>",{"left":4,"top":4,"width":20,"height":20,"rotate":4,"vFlip":6,"hFlip":6,"body":21},32,"\u003Cpath fill=\"#dcb67a\" d=\"M27.4 5.5h-9.2l-2.1 4.2H4.3v16.8h25.2v-21Zm0 18.7H6.6V11.8h20.8Zm0-14.5h-8.2l1-2.1h7.1v2.1Z\"\u002F>\u003Cpath fill=\"#dcb67a\" d=\"M25.7 13.7H.5l3.8 12.8h25.2z\"\u002F>",{"left":4,"top":4,"width":20,"height":20,"rotate":4,"vFlip":6,"hFlip":6,"body":23},"\u003Cpath fill=\"#c09553\" d=\"M27.5 5.5h-9.3l-2.1 4.2H4.4v16.8h25.2v-21Zm0 4.2h-8.2l1.1-2.1h7.1Z\"\u002F>",{"left":4,"top":4,"width":20,"height":20,"rotate":4,"vFlip":6,"hFlip":6,"body":25},"\u003Cpath fill=\"#ffba58\" d=\"M27.5 5.5h-9.3l-2.1 4.2H4.4v16.8h25.2v-21Zm0 4.2h-8.2l1.1-2.1h7.1Z\"\u002F>\u003Cpath fill=\"#e76a00\" d=\"M20 12.5V14h-4a2.006 2.006 0 0 0-2 2v4h-1.5a2.5 2.5 0 0 0 0 5H14v4a2.006 2.006 0 0 0 2 2h3.8v-1.5a2.7 2.7 0 0 1 5.4 0V31H29a2.006 2.006 0 0 0 2-2v-3.8h-1.5a2.7 2.7 0 0 1 0-5.4H31V16a2.006 2.006 0 0 0-2-2h-4v-1.5a2.5 2.5 0 0 0-5 0\"\u002F>",{"left":4,"top":4,"width":20,"height":20,"rotate":4,"vFlip":6,"hFlip":6,"body":27},"\u003Cpath fill=\"#14622a\" d=\"M27.5 5.5h-9.3l-2.1 4.2H4.4v16.8h25.2v-21Zm0 4.2h-8.2l1.1-2.1h7.1Z\"\u002F>\u003Cpath fill=\"#06cc14\" d=\"M19.146 30.989a1 1 0 0 1-.207-.025a1.04 1.04 0 0 1-.726-1.213l2.709-14.431a1.04 1.04 0 0 1 .444-.683a.9.9 0 0 1 .7-.122a1.043 1.043 0 0 1 .727 1.213L20.077 30.16a1.03 1.03 0 0 1-.442.681a.9.9 0 0 1-.489.148m5.432-2.045h-.068a.93.93 0 0 1-.668-.377a1.1 1.1 0 0 1 .1-1.419l4.658-4.553l-4.638-4.239a1.1 1.1 0 0 1-.141-1.416a.94.94 0 0 1 .661-.4a.9.9 0 0 1 .709.237l5.47 5a1.1 1.1 0 0 1 .144 1.416a1 1 0 0 1-.142.163l-5.447 5.324a.92.92 0 0 1-.638.264m-8.155.003a.9.9 0 0 1-.639-.267l-5.452-5.327a1 1 0 0 1-.132-.153a1.094 1.094 0 0 1 .141-1.414l5.471-5a.88.88 0 0 1 .7-.238a.94.94 0 0 1 .665.4a1.1 1.1 0 0 1-.14 1.417L12.4 22.6l4.659 4.551a1.09 1.09 0 0 1 .1 1.419a.93.93 0 0 1-.669.377Z\"\u002F>",{"left":4,"top":4,"width":20,"height":20,"rotate":4,"vFlip":6,"hFlip":6,"body":29},"\u003Cpath fill=\"#b70b0b\" d=\"M27.5 5.5h-9.3l-2.1 4.2H4.4v16.8h25.2v-21Zm0 4.2h-8.2l1.1-2.1h7.1Z\"\u002F>\u003Cpath fill=\"#fac6c5\" d=\"M28.3 27.423c-1.729-.4-2.332-2.482-1.329-4.583a8.95 8.95 0 0 1 2.217-2.779l.314-.26l.009.357a6.7 6.7 0 0 0 .748 2.425a14 14 0 0 1 .625 1.631a3.2 3.2 0 0 1-.073 1.958a2.67 2.67 0 0 1-1.111 1.087a2.8 2.8 0 0 1-1.4.164m.351-3.565c.124-.143.155-.332.164-1l.011-.825l-.2.158a1.68 1.68 0 0 0-.635 1.4c.07.214.286.448.411.446a.5.5 0 0 0 .249-.179m-15.527 7.087a3.85 3.85 0 0 1-3.031-4.563c.254-1.07.2-1.008 5.726-6.787l5.2-5.442l.738.7l.738.7l-3 3.132l-3 3.132l2.508-.054l2.508-.054l1.773-1.85l1.773-1.85l.735.707l.735.707l-5.213 5.43c-4.783 4.982-5.257 5.452-5.743 5.692a3.9 3.9 0 0 1-2.452.393Zm14.662-12.484c-.138-.082-1.546-1.4-3.129-2.921l-2.879-2.772l-.009-.421a.86.86 0 0 1 .194-.673A.99.99 0 0 1 23 11.3a69 69 0 0 1 6.277 6.023a1 1 0 0 1-1.492 1.133Z\"\u002F>\u003Cpath fill=\"#fac6c5\" d=\"M11.578 26.851a2.1 2.1 0 0 0 2.579 2.614c.191-.2 2.407-2.515 7.387-7.737c-2.505.054-2.475-.055-4.98 0c-5.015 5.195-5.114 5.157-4.986 5.123\"\u002F>",{"left":4,"top":4,"width":20,"height":20,"rotate":4,"vFlip":6,"hFlip":6,"body":31},"\u003Cpath fill=\"#007acc\" d=\"M23.827 8.243a4.4 4.4 0 0 1 2.223 1.281a6 6 0 0 1 .852 1.143c.011.045-1.534 1.083-2.471 1.662c-.034.023-.169-.124-.322-.35a2.01 2.01 0 0 0-1.67-1c-1.077-.074-1.771.49-1.766 1.433a1.3 1.3 0 0 0 .153.666c.237.49.677.784 2.059 1.383c2.544 1.095 3.636 1.817 4.31 2.843a5.16 5.16 0 0 1 .416 4.333a4.76 4.76 0 0 1-3.932 2.815a11 11 0 0 1-2.708-.028a6.53 6.53 0 0 1-3.616-1.884a6.3 6.3 0 0 1-.926-1.371a3 3 0 0 1 .327-.208c.158-.09.756-.434 1.32-.761l1.024-.6l.214.312a4.8 4.8 0 0 0 1.35 1.292a3.3 3.3 0 0 0 3.458-.175a1.545 1.545 0 0 0 .2-1.974c-.276-.395-.84-.727-2.443-1.422a8.8 8.8 0 0 1-3.349-2.055a4.7 4.7 0 0 1-.976-1.777a7.1 7.1 0 0 1-.062-2.268a4.33 4.33 0 0 1 3.644-3.374a9 9 0 0 1 2.691.084m-8.343 1.483l.011 1.454h-4.63v13.148H7.6V11.183H2.97V9.755a14 14 0 0 1 .04-1.466c.017-.023 2.832-.034 6.245-.028l6.211.017Z\"\u002F>",{"left":4,"top":4,"width":20,"height":20,"rotate":4,"vFlip":6,"hFlip":6,"body":33},"\u003Cpath fill=\"#f5de19\" d=\"M4.014 14.976a2.5 2.5 0 0 0 1.567-.518a2.38 2.38 0 0 0 .805-1.358a15.3 15.3 0 0 0 .214-2.944q.012-2.085.075-2.747a5.2 5.2 0 0 1 .418-1.686a3 3 0 0 1 .755-1.018A3.05 3.05 0 0 1 9 4.125A6.8 6.8 0 0 1 10.544 4h.7v1.96h-.387a2.34 2.34 0 0 0-1.723.468a3.4 3.4 0 0 0-.425 2.092a36 36 0 0 1-.137 4.133a4.7 4.7 0 0 1-.768 2.06A4.6 4.6 0 0 1 6.1 16a3.8 3.8 0 0 1 1.992 1.754a8.9 8.9 0 0 1 .618 3.865q0 2.435.05 2.9a1.76 1.76 0 0 0 .504 1.181a2.64 2.64 0 0 0 1.592.337h.387V28h-.7a5.7 5.7 0 0 1-1.773-.2a2.97 2.97 0 0 1-1.324-.93a3.35 3.35 0 0 1-.681-1.63a24 24 0 0 1-.165-3.234a16.5 16.5 0 0 0-.214-3.106a2.4 2.4 0 0 0-.805-1.361a2.5 2.5 0 0 0-1.567-.524Zm23.972 2.035a2.5 2.5 0 0 0-1.567.524a2.4 2.4 0 0 0-.805 1.361a16.5 16.5 0 0 0-.212 3.109a24 24 0 0 1-.169 3.234a3.35 3.35 0 0 1-.681 1.63a2.97 2.97 0 0 1-1.324.93a5.7 5.7 0 0 1-1.773.2h-.7V26.04h.387a2.64 2.64 0 0 0 1.592-.337a1.76 1.76 0 0 0 .506-1.186q.05-.462.05-2.9a8.9 8.9 0 0 1 .618-3.865A3.8 3.8 0 0 1 25.9 16a4.6 4.6 0 0 1-1.7-1.286a4.7 4.7 0 0 1-.768-2.06a36 36 0 0 1-.137-4.133a3.4 3.4 0 0 0-.425-2.092a2.34 2.34 0 0 0-1.723-.468h-.387V4h.7a6.8 6.8 0 0 1 1.54.125a3.05 3.05 0 0 1 1.149.581a3 3 0 0 1 .755 1.018a5.2 5.2 0 0 1 .418 1.686q.062.662.075 2.747a15.3 15.3 0 0 0 .212 2.947a2.38 2.38 0 0 0 .805 1.355a2.5 2.5 0 0 0 1.567.518Z\"\u002F>",{"id":35,"title":36,"body":37,"description":3149,"extension":3150,"meta":3151,"navigation":10,"path":3152,"seo":3153,"stem":3154,"__hash__":3155},"docs\u002Fdocs\u002Fv2\u002Fcognets\u002Foverview\u002Flanguages.md","Three languages",{"type":38,"value":39,"toc":3142},"minimark",[40,44,48,51,56,61,77,634,638,649,682,1398,1402,1405,2498,2502,2505,2974,2978,3009,3138],[41,42,36],"h1",{"id":43},"three-languages",[45,46,47],"p",{},"Every part of a cognet can be written in TypeScript, Rust or Python. Not three APIs — one,\nspoken three ways. Pick the language each part is best written in, or write the whole mind in\nthe one you know.",[45,49,50],{},"This page builds a mind that follows a person with its head. Switch language on any example;\nthe choice sticks.",[52,53],"flow",{":steps":54,"caption":55},"[{\"kind\":\"io\",\"label\":\"camera\",\"note\":\"from the body\"},{\"kind\":\"component\",\"label\":\"picture\"},{\"kind\":\"system\",\"label\":\"detect\",\"lang\":\"py\"},{\"kind\":\"component\",\"label\":\"people\"},{\"kind\":\"system\",\"label\":\"track\",\"lang\":\"rs\"},{\"kind\":\"component\",\"label\":\"target\"},{\"kind\":\"system\",\"label\":\"look\",\"lang\":\"ts\"},{\"kind\":\"io\",\"label\":\"neck\",\"note\":\"to the body\"}]","follow",[57,58,60],"h2",{"id":59},"the-types","The types",[45,62,63,64,68,69,72,73,76],{},"Declared once, in whichever language you like. ",[65,66,67],"code",{},"axonl prepare"," generates the other two, so\nevery system sees the same ",[65,70,71],{},"People"," and ",[65,74,75],{},"Target",", natively.",[78,79,80,287,500],"code-langs",{},[81,82,84],"template",{"v-slot:ts":83},"",[85,86,90],"pre",{"className":87,"code":88,"language":89,"meta":83,"style":83},"language-ts shiki shiki-themes dark-plus","\u002F\u002F types\u002Ffollow\u002Ffollow.components.ts\ninterface Sighting {\n    x: f64\n    y: f64\n    width: f64\n    height: f64\n    confidence: f32\n}\n\n\u002F** Everyone seen in the newest picture. *\u002F\nexport interface People {\n    boxes: Sighting[]\n    sensed: f64\n}\n\n\u002F** The person being followed, smoothed over time. *\u002F\nexport interface Target {\n    x: f64\n    y: f64\n    sensed: f64\n}\n","ts",[65,91,92,101,116,129,139,149,159,170,176,182,188,203,217,227,232,237,243,255,264,273,282],{"__ignoreMap":83},[93,94,97],"span",{"class":95,"line":96},"line",1,[93,98,100],{"class":99},"sOLPB","\u002F\u002F types\u002Ffollow\u002Ffollow.components.ts\n",[93,102,104,108,112],{"class":95,"line":103},2,[93,105,107],{"class":106},"scz_3","interface",[93,109,111],{"class":110},"sNl3T"," Sighting",[93,113,115],{"class":114},"sTNBD"," {\n",[93,117,119,123,126],{"class":95,"line":118},3,[93,120,122],{"class":121},"s3F5K","    x",[93,124,125],{"class":114},": ",[93,127,128],{"class":110},"f64\n",[93,130,132,135,137],{"class":95,"line":131},4,[93,133,134],{"class":121},"    y",[93,136,125],{"class":114},[93,138,128],{"class":110},[93,140,142,145,147],{"class":95,"line":141},5,[93,143,144],{"class":121},"    width",[93,146,125],{"class":114},[93,148,128],{"class":110},[93,150,152,155,157],{"class":95,"line":151},6,[93,153,154],{"class":121},"    height",[93,156,125],{"class":114},[93,158,128],{"class":110},[93,160,162,165,167],{"class":95,"line":161},7,[93,163,164],{"class":121},"    confidence",[93,166,125],{"class":114},[93,168,169],{"class":110},"f32\n",[93,171,173],{"class":95,"line":172},8,[93,174,175],{"class":114},"}\n",[93,177,179],{"class":95,"line":178},9,[93,180,181],{"emptyLinePlaceholder":10},"\n",[93,183,185],{"class":95,"line":184},10,[93,186,187],{"class":99},"\u002F** Everyone seen in the newest picture. *\u002F\n",[93,189,191,195,198,201],{"class":95,"line":190},11,[93,192,194],{"class":193},"sYbnZ","export",[93,196,197],{"class":106}," interface",[93,199,200],{"class":110}," People",[93,202,115],{"class":114},[93,204,206,209,211,214],{"class":95,"line":205},12,[93,207,208],{"class":121},"    boxes",[93,210,125],{"class":114},[93,212,213],{"class":110},"Sighting",[93,215,216],{"class":114},"[]\n",[93,218,220,223,225],{"class":95,"line":219},13,[93,221,222],{"class":121},"    sensed",[93,224,125],{"class":114},[93,226,128],{"class":110},[93,228,230],{"class":95,"line":229},14,[93,231,175],{"class":114},[93,233,235],{"class":95,"line":234},15,[93,236,181],{"emptyLinePlaceholder":10},[93,238,240],{"class":95,"line":239},16,[93,241,242],{"class":99},"\u002F** The person being followed, smoothed over time. *\u002F\n",[93,244,246,248,250,253],{"class":95,"line":245},17,[93,247,194],{"class":193},[93,249,197],{"class":106},[93,251,252],{"class":110}," Target",[93,254,115],{"class":114},[93,256,258,260,262],{"class":95,"line":257},18,[93,259,122],{"class":121},[93,261,125],{"class":114},[93,263,128],{"class":110},[93,265,267,269,271],{"class":95,"line":266},19,[93,268,134],{"class":121},[93,270,125],{"class":114},[93,272,128],{"class":110},[93,274,276,278,280],{"class":95,"line":275},20,[93,277,222],{"class":121},[93,279,125],{"class":114},[93,281,128],{"class":110},[93,283,285],{"class":95,"line":284},21,[93,286,175],{"class":114},[81,288,289],{"v-slot:rs":83},[85,290,294],{"className":291,"code":292,"language":293,"meta":83,"style":83},"language-rust shiki shiki-themes dark-plus","\u002F\u002F types\u002Ffollow\u002Ffollow.components.rs\nstruct Sighting {\n    pub x: f64,\n    pub y: f64,\n    pub width: f64,\n    pub height: f64,\n    pub confidence: f32,\n}\n\n\u002F\u002F\u002F Everyone seen in the newest picture.\npub struct People {\n    pub boxes: Vec\u003CSighting>,\n    pub sensed: f64,\n}\n\n\u002F\u002F\u002F The person being followed, smoothed over time.\npub struct Target {\n    pub x: f64,\n    pub y: f64,\n    pub sensed: f64,\n}\n","rust",[65,295,296,301,310,326,339,352,365,379,383,387,392,404,424,437,441,445,450,460,472,484,496],{"__ignoreMap":83},[93,297,298],{"class":95,"line":96},[93,299,300],{"class":99},"\u002F\u002F types\u002Ffollow\u002Ffollow.components.rs\n",[93,302,303,306,308],{"class":95,"line":103},[93,304,305],{"class":106},"struct",[93,307,111],{"class":110},[93,309,115],{"class":114},[93,311,312,315,318,320,323],{"class":95,"line":118},[93,313,314],{"class":106},"    pub",[93,316,317],{"class":121}," x",[93,319,125],{"class":114},[93,321,322],{"class":110},"f64",[93,324,325],{"class":114},",\n",[93,327,328,330,333,335,337],{"class":95,"line":131},[93,329,314],{"class":106},[93,331,332],{"class":121}," y",[93,334,125],{"class":114},[93,336,322],{"class":110},[93,338,325],{"class":114},[93,340,341,343,346,348,350],{"class":95,"line":141},[93,342,314],{"class":106},[93,344,345],{"class":121}," width",[93,347,125],{"class":114},[93,349,322],{"class":110},[93,351,325],{"class":114},[93,353,354,356,359,361,363],{"class":95,"line":151},[93,355,314],{"class":106},[93,357,358],{"class":121}," height",[93,360,125],{"class":114},[93,362,322],{"class":110},[93,364,325],{"class":114},[93,366,367,369,372,374,377],{"class":95,"line":161},[93,368,314],{"class":106},[93,370,371],{"class":121}," confidence",[93,373,125],{"class":114},[93,375,376],{"class":110},"f32",[93,378,325],{"class":114},[93,380,381],{"class":95,"line":172},[93,382,175],{"class":114},[93,384,385],{"class":95,"line":178},[93,386,181],{"emptyLinePlaceholder":10},[93,388,389],{"class":95,"line":184},[93,390,391],{"class":99},"\u002F\u002F\u002F Everyone seen in the newest picture.\n",[93,393,394,397,400,402],{"class":95,"line":190},[93,395,396],{"class":106},"pub",[93,398,399],{"class":106}," struct",[93,401,200],{"class":110},[93,403,115],{"class":114},[93,405,406,408,411,413,416,419,421],{"class":95,"line":205},[93,407,314],{"class":106},[93,409,410],{"class":121}," boxes",[93,412,125],{"class":114},[93,414,415],{"class":110},"Vec",[93,417,418],{"class":114},"\u003C",[93,420,213],{"class":110},[93,422,423],{"class":114},">,\n",[93,425,426,428,431,433,435],{"class":95,"line":219},[93,427,314],{"class":106},[93,429,430],{"class":121}," sensed",[93,432,125],{"class":114},[93,434,322],{"class":110},[93,436,325],{"class":114},[93,438,439],{"class":95,"line":229},[93,440,175],{"class":114},[93,442,443],{"class":95,"line":234},[93,444,181],{"emptyLinePlaceholder":10},[93,446,447],{"class":95,"line":239},[93,448,449],{"class":99},"\u002F\u002F\u002F The person being followed, smoothed over time.\n",[93,451,452,454,456,458],{"class":95,"line":245},[93,453,396],{"class":106},[93,455,399],{"class":106},[93,457,252],{"class":110},[93,459,115],{"class":114},[93,461,462,464,466,468,470],{"class":95,"line":257},[93,463,314],{"class":106},[93,465,317],{"class":121},[93,467,125],{"class":114},[93,469,322],{"class":110},[93,471,325],{"class":114},[93,473,474,476,478,480,482],{"class":95,"line":266},[93,475,314],{"class":106},[93,477,332],{"class":121},[93,479,125],{"class":114},[93,481,322],{"class":110},[93,483,325],{"class":114},[93,485,486,488,490,492,494],{"class":95,"line":275},[93,487,314],{"class":106},[93,489,430],{"class":121},[93,491,125],{"class":114},[93,493,322],{"class":110},[93,495,325],{"class":114},[93,497,498],{"class":95,"line":284},[93,499,175],{"class":114},[81,501,502],{"v-slot:py":83},[85,503,507],{"className":504,"code":505,"language":506,"meta":83,"style":83},"language-python shiki shiki-themes dark-plus","# types\u002Ffollow\u002Ffollow.components.py\nclass _Sighting:\n    x: float\n    y: float\n    width: float\n    height: float\n    confidence: float\n\n\nclass People:\n    \"\"\"Everyone seen in the newest picture.\"\"\"\n    boxes: list[_Sighting]\n    sensed: float\n\n\nclass Target:\n    \"\"\"The person being followed, smoothed over time.\"\"\"\n    x: float\n    y: float\n    sensed: float\n","python",[65,508,509,514,525,533,540,547,554,561,565,569,577,583,588,595,599,603,611,616,622,628],{"__ignoreMap":83},[93,510,511],{"class":95,"line":96},[93,512,513],{"class":99},"# types\u002Ffollow\u002Ffollow.components.py\n",[93,515,516,519,522],{"class":95,"line":103},[93,517,518],{"class":106},"class",[93,520,521],{"class":110}," _Sighting",[93,523,524],{"class":114},":\n",[93,526,527,530],{"class":95,"line":118},[93,528,529],{"class":114},"    x: ",[93,531,532],{"class":110},"float\n",[93,534,535,538],{"class":95,"line":131},[93,536,537],{"class":114},"    y: ",[93,539,532],{"class":110},[93,541,542,545],{"class":95,"line":141},[93,543,544],{"class":114},"    width: ",[93,546,532],{"class":110},[93,548,549,552],{"class":95,"line":151},[93,550,551],{"class":114},"    height: ",[93,553,532],{"class":110},[93,555,556,559],{"class":95,"line":161},[93,557,558],{"class":114},"    confidence: ",[93,560,532],{"class":110},[93,562,563],{"class":95,"line":172},[93,564,181],{"emptyLinePlaceholder":10},[93,566,567],{"class":95,"line":178},[93,568,181],{"emptyLinePlaceholder":10},[93,570,571,573,575],{"class":95,"line":184},[93,572,518],{"class":106},[93,574,200],{"class":110},[93,576,524],{"class":114},[93,578,579],{"class":95,"line":190},[93,580,582],{"class":581},"sKc5r","    \"\"\"Everyone seen in the newest picture.\"\"\"\n",[93,584,585],{"class":95,"line":205},[93,586,587],{"class":114},"    boxes: list[_Sighting]\n",[93,589,590,593],{"class":95,"line":219},[93,591,592],{"class":114},"    sensed: ",[93,594,532],{"class":110},[93,596,597],{"class":95,"line":229},[93,598,181],{"emptyLinePlaceholder":10},[93,600,601],{"class":95,"line":234},[93,602,181],{"emptyLinePlaceholder":10},[93,604,605,607,609],{"class":95,"line":239},[93,606,518],{"class":106},[93,608,252],{"class":110},[93,610,524],{"class":114},[93,612,613],{"class":95,"line":245},[93,614,615],{"class":581},"    \"\"\"The person being followed, smoothed over time.\"\"\"\n",[93,617,618,620],{"class":95,"line":257},[93,619,529],{"class":114},[93,621,532],{"class":110},[93,623,624,626],{"class":95,"line":266},[93,625,537],{"class":114},[93,627,532],{"class":110},[93,629,630,632],{"class":95,"line":275},[93,631,592],{"class":114},[93,633,532],{"class":110},[57,635,637],{"id":636},"detect","Detect",[45,639,640,641,644,645,648],{},"Asks a detector to find people. The cognet declares it needs ",[65,642,643],{},"detect@1"," under the name\n",[65,646,647],{},"people"," — never which model; the agent decides what fills it.",[85,650,652],{"className":87,"code":651,"language":89,"meta":83,"style":83},"\u002F\u002F cognet.config.ts\nuses: { people: { interface: \"detect@1\" } },\n",[65,653,654,659],{"__ignoreMap":83},[93,655,656],{"class":95,"line":96},[93,657,658],{"class":99},"\u002F\u002F cognet.config.ts\n",[93,660,661,665,668,670,672,674,676,679],{"class":95,"line":103},[93,662,664],{"class":663},"sqDPy","uses",[93,666,667],{"class":114},": { ",[93,669,647],{"class":663},[93,671,667],{"class":114},[93,673,107],{"class":663},[93,675,125],{"class":114},[93,677,678],{"class":581},"\"detect@1\"",[93,680,681],{"class":114}," } },\n",[78,683,684,920,1214],{},[81,685,686],{"v-slot:ts":83},[85,687,689],{"className":87,"code":688,"language":89,"meta":83,"style":83},"\u002F\u002F src\u002Ffollow\u002Fdetect.system.ts\nexport default defineSystem({\n    reads: [\"picture\"],\n    writes: [\"people\"],\n\n    async run() {\n        const [self] = ecs.query({ components: [\"picture\"] })\n        if (!self) return\n\n        const boxes = await services.people.detect({ picture: self.picture, labels: [\"person\"] })\n        ecs.set({ id: \"self\", components: { people: { boxes: boxes, sensed: self.picture.sensed } } })\n    },\n})\n",[65,690,691,696,710,724,736,740,751,787,803,807,856,910,915],{"__ignoreMap":83},[93,692,693],{"class":95,"line":96},[93,694,695],{"class":99},"\u002F\u002F src\u002Ffollow\u002Fdetect.system.ts\n",[93,697,698,700,703,707],{"class":95,"line":103},[93,699,194],{"class":193},[93,701,702],{"class":193}," default",[93,704,706],{"class":705},"sCudf"," defineSystem",[93,708,709],{"class":114},"({\n",[93,711,712,715,718,721],{"class":95,"line":118},[93,713,714],{"class":121},"    reads:",[93,716,717],{"class":114}," [",[93,719,720],{"class":581},"\"picture\"",[93,722,723],{"class":114},"],\n",[93,725,726,729,731,734],{"class":95,"line":131},[93,727,728],{"class":121},"    writes:",[93,730,717],{"class":114},[93,732,733],{"class":581},"\"people\"",[93,735,723],{"class":114},[93,737,738],{"class":95,"line":141},[93,739,181],{"emptyLinePlaceholder":10},[93,741,742,745,748],{"class":95,"line":151},[93,743,744],{"class":106},"    async",[93,746,747],{"class":705}," run",[93,749,750],{"class":114},"() {\n",[93,752,753,756,758,762,765,768,771,774,777,780,782,784],{"class":95,"line":161},[93,754,755],{"class":106},"        const",[93,757,717],{"class":114},[93,759,761],{"class":760},"s9McN","self",[93,763,764],{"class":114},"] = ",[93,766,767],{"class":121},"ecs",[93,769,770],{"class":114},".",[93,772,773],{"class":705},"query",[93,775,776],{"class":114},"({ ",[93,778,779],{"class":121},"components:",[93,781,717],{"class":114},[93,783,720],{"class":581},[93,785,786],{"class":114},"] })\n",[93,788,789,792,795,797,800],{"class":95,"line":172},[93,790,791],{"class":193},"        if",[93,793,794],{"class":114}," (!",[93,796,761],{"class":121},[93,798,799],{"class":114},") ",[93,801,802],{"class":193},"return\n",[93,804,805],{"class":95,"line":178},[93,806,181],{"emptyLinePlaceholder":10},[93,808,809,811,813,816,819,822,824,826,828,830,832,835,838,840,843,846,849,851,854],{"class":95,"line":184},[93,810,755],{"class":106},[93,812,410],{"class":760},[93,814,815],{"class":114}," = ",[93,817,818],{"class":193},"await",[93,820,821],{"class":121}," services",[93,823,770],{"class":114},[93,825,647],{"class":121},[93,827,770],{"class":114},[93,829,636],{"class":705},[93,831,776],{"class":114},[93,833,834],{"class":121},"picture:",[93,836,837],{"class":121}," self",[93,839,770],{"class":114},[93,841,842],{"class":121},"picture",[93,844,845],{"class":114},", ",[93,847,848],{"class":121},"labels:",[93,850,717],{"class":114},[93,852,853],{"class":581},"\"person\"",[93,855,786],{"class":114},[93,857,858,861,863,866,868,871,874,876,878,881,884,886,889,891,893,896,898,900,902,904,907],{"class":95,"line":190},[93,859,860],{"class":121},"        ecs",[93,862,770],{"class":114},[93,864,865],{"class":705},"set",[93,867,776],{"class":114},[93,869,870],{"class":121},"id:",[93,872,873],{"class":581}," \"self\"",[93,875,845],{"class":114},[93,877,779],{"class":121},[93,879,880],{"class":114}," { ",[93,882,883],{"class":121},"people:",[93,885,880],{"class":114},[93,887,888],{"class":121},"boxes:",[93,890,410],{"class":121},[93,892,845],{"class":114},[93,894,895],{"class":121},"sensed:",[93,897,837],{"class":121},[93,899,770],{"class":114},[93,901,842],{"class":121},[93,903,770],{"class":114},[93,905,906],{"class":121},"sensed",[93,908,909],{"class":114}," } } })\n",[93,911,912],{"class":95,"line":205},[93,913,914],{"class":114},"    },\n",[93,916,917],{"class":95,"line":219},[93,918,919],{"class":114},"})\n",[81,921,922],{"v-slot:rs":83},[85,923,925],{"className":291,"code":924,"language":293,"meta":83,"style":83},"\u002F\u002F src\u002Ffollow\u002Fdetect.system.rs\nuse cognet::prelude::*;\nuse crate::schema::follow::follow::People;\nuse crate::schema::sense::sense::Picture;\n\n#[system(reads = [\"picture\"], writes = [\"people\"])]\nasync fn detect(run: &mut Run) -> Result\u003C(), Fault> {\n    let Some(picture) = ecs.first::\u003CPicture>(\"picture\")? else { return Ok(()) };\n\n    let boxes = run.services.people.detect(&picture, &[\"person\"]).await?;\n    ecs.set(\"self\").put(\"people\", People { boxes: boxes, sensed: picture.sensed })?;\n    Ok(())\n}\n",[65,926,927,932,949,976,1002,1006,1027,1068,1117,1121,1154,1202,1210],{"__ignoreMap":83},[93,928,929],{"class":95,"line":96},[93,930,931],{"class":99},"\u002F\u002F src\u002Ffollow\u002Fdetect.system.rs\n",[93,933,934,937,940,943,946],{"class":95,"line":103},[93,935,936],{"class":106},"use",[93,938,939],{"class":110}," cognet",[93,941,942],{"class":114},"::",[93,944,945],{"class":110},"prelude",[93,947,948],{"class":114},"::*;\n",[93,950,951,953,956,958,961,963,965,967,969,971,973],{"class":95,"line":118},[93,952,936],{"class":106},[93,954,955],{"class":106}," crate",[93,957,942],{"class":114},[93,959,960],{"class":110},"schema",[93,962,942],{"class":114},[93,964,55],{"class":110},[93,966,942],{"class":114},[93,968,55],{"class":110},[93,970,942],{"class":114},[93,972,71],{"class":110},[93,974,975],{"class":114},";\n",[93,977,978,980,982,984,986,988,991,993,995,997,1000],{"class":95,"line":131},[93,979,936],{"class":106},[93,981,955],{"class":106},[93,983,942],{"class":114},[93,985,960],{"class":110},[93,987,942],{"class":114},[93,989,990],{"class":110},"sense",[93,992,942],{"class":114},[93,994,990],{"class":110},[93,996,942],{"class":114},[93,998,999],{"class":110},"Picture",[93,1001,975],{"class":114},[93,1003,1004],{"class":95,"line":141},[93,1005,181],{"emptyLinePlaceholder":10},[93,1007,1008,1011,1013,1016,1019,1022,1024],{"class":95,"line":151},[93,1009,1010],{"class":114},"#[system(reads = [",[93,1012,720],{"class":581},[93,1014,1015],{"class":114},"], ",[93,1017,1018],{"class":121},"writes",[93,1020,1021],{"class":114}," = [",[93,1023,733],{"class":581},[93,1025,1026],{"class":114},"])]\n",[93,1028,1029,1032,1035,1038,1041,1044,1047,1050,1053,1056,1059,1062,1065],{"class":95,"line":161},[93,1030,1031],{"class":106},"async",[93,1033,1034],{"class":106}," fn",[93,1036,1037],{"class":705}," detect",[93,1039,1040],{"class":114},"(",[93,1042,1043],{"class":121},"run",[93,1045,1046],{"class":114},": &",[93,1048,1049],{"class":106},"mut",[93,1051,1052],{"class":110}," Run",[93,1054,1055],{"class":114},") -> ",[93,1057,1058],{"class":110},"Result",[93,1060,1061],{"class":114},"\u003C(), ",[93,1063,1064],{"class":110},"Fault",[93,1066,1067],{"class":114},"> {\n",[93,1069,1070,1073,1076,1078,1080,1083,1085,1087,1090,1093,1095,1098,1100,1103,1106,1108,1111,1114],{"class":95,"line":172},[93,1071,1072],{"class":106},"    let",[93,1074,1075],{"class":110}," Some",[93,1077,1040],{"class":114},[93,1079,842],{"class":121},[93,1081,1082],{"class":114},") = ",[93,1084,767],{"class":121},[93,1086,770],{"class":114},[93,1088,1089],{"class":705},"first",[93,1091,1092],{"class":114},"::\u003C",[93,1094,999],{"class":110},[93,1096,1097],{"class":114},">(",[93,1099,720],{"class":581},[93,1101,1102],{"class":114},")? ",[93,1104,1105],{"class":193},"else",[93,1107,880],{"class":114},[93,1109,1110],{"class":193},"return",[93,1112,1113],{"class":110}," Ok",[93,1115,1116],{"class":114},"(()) };\n",[93,1118,1119],{"class":95,"line":178},[93,1120,181],{"emptyLinePlaceholder":10},[93,1122,1123,1125,1127,1129,1131,1134,1136,1139,1141,1144,1146,1149,1151],{"class":95,"line":184},[93,1124,1072],{"class":106},[93,1126,410],{"class":121},[93,1128,815],{"class":114},[93,1130,1043],{"class":121},[93,1132,1133],{"class":114},".services.people.",[93,1135,636],{"class":705},[93,1137,1138],{"class":114},"(&",[93,1140,842],{"class":121},[93,1142,1143],{"class":114},", &[",[93,1145,853],{"class":581},[93,1147,1148],{"class":114},"]).",[93,1150,818],{"class":193},[93,1152,1153],{"class":114},"?;\n",[93,1155,1156,1159,1161,1163,1165,1168,1171,1174,1176,1178,1180,1182,1184,1187,1189,1191,1193,1195,1197,1199],{"class":95,"line":190},[93,1157,1158],{"class":121},"    ecs",[93,1160,770],{"class":114},[93,1162,865],{"class":705},[93,1164,1040],{"class":114},[93,1166,1167],{"class":581},"\"self\"",[93,1169,1170],{"class":114},").",[93,1172,1173],{"class":705},"put",[93,1175,1040],{"class":114},[93,1177,733],{"class":581},[93,1179,845],{"class":114},[93,1181,71],{"class":110},[93,1183,880],{"class":114},[93,1185,1186],{"class":121},"boxes",[93,1188,125],{"class":114},[93,1190,1186],{"class":121},[93,1192,845],{"class":114},[93,1194,906],{"class":121},[93,1196,125],{"class":114},[93,1198,842],{"class":121},[93,1200,1201],{"class":114},".sensed })?;\n",[93,1203,1204,1207],{"class":95,"line":205},[93,1205,1206],{"class":110},"    Ok",[93,1208,1209],{"class":114},"(())\n",[93,1211,1212],{"class":95,"line":219},[93,1213,175],{"class":114},[81,1215,1216],{"v-slot:py":83},[85,1217,1219],{"className":504,"code":1218,"language":506,"meta":83,"style":83},"# src\u002Ffollow\u002Fdetect.system.py\nfrom cognet import system, Run\nfrom schema.follow.follow import People\nfrom schema.sense.sense import Picture\n\n\n@system(reads=[\"picture\"], writes=[\"people\"])\nasync def detect(run: Run) -> None:\n    picture = run.ecs.first(\"picture\", Picture)\n    if picture is None:\n        return\n\n    boxes = await run.services.people.detect(picture, labels=[\"person\"])\n    run.ecs.set(\"self\").put(\"people\", People(boxes=boxes, sensed=picture.sensed))\n",[65,1220,1221,1226,1240,1252,1264,1268,1272,1298,1319,1329,1345,1350,1354,1373],{"__ignoreMap":83},[93,1222,1223],{"class":95,"line":96},[93,1224,1225],{"class":99},"# src\u002Ffollow\u002Fdetect.system.py\n",[93,1227,1228,1231,1234,1237],{"class":95,"line":103},[93,1229,1230],{"class":193},"from",[93,1232,1233],{"class":114}," cognet ",[93,1235,1236],{"class":193},"import",[93,1238,1239],{"class":114}," system, Run\n",[93,1241,1242,1244,1247,1249],{"class":95,"line":118},[93,1243,1230],{"class":193},[93,1245,1246],{"class":114}," schema.follow.follow ",[93,1248,1236],{"class":193},[93,1250,1251],{"class":114}," People\n",[93,1253,1254,1256,1259,1261],{"class":95,"line":131},[93,1255,1230],{"class":193},[93,1257,1258],{"class":114}," schema.sense.sense ",[93,1260,1236],{"class":193},[93,1262,1263],{"class":114}," Picture\n",[93,1265,1266],{"class":95,"line":141},[93,1267,181],{"emptyLinePlaceholder":10},[93,1269,1270],{"class":95,"line":151},[93,1271,181],{"emptyLinePlaceholder":10},[93,1273,1274,1277,1279,1282,1285,1287,1289,1291,1293,1295],{"class":95,"line":161},[93,1275,1276],{"class":705},"@system",[93,1278,1040],{"class":114},[93,1280,1281],{"class":121},"reads",[93,1283,1284],{"class":114},"=[",[93,1286,720],{"class":581},[93,1288,1015],{"class":114},[93,1290,1018],{"class":121},[93,1292,1284],{"class":114},[93,1294,733],{"class":581},[93,1296,1297],{"class":114},"])\n",[93,1299,1300,1302,1305,1307,1309,1311,1314,1317],{"class":95,"line":172},[93,1301,1031],{"class":106},[93,1303,1304],{"class":106}," def",[93,1306,1037],{"class":705},[93,1308,1040],{"class":114},[93,1310,1043],{"class":121},[93,1312,1313],{"class":114},": Run) -> ",[93,1315,1316],{"class":106},"None",[93,1318,524],{"class":114},[93,1320,1321,1324,1326],{"class":95,"line":178},[93,1322,1323],{"class":114},"    picture = run.ecs.first(",[93,1325,720],{"class":581},[93,1327,1328],{"class":114},", Picture)\n",[93,1330,1331,1334,1337,1340,1343],{"class":95,"line":184},[93,1332,1333],{"class":193},"    if",[93,1335,1336],{"class":114}," picture ",[93,1338,1339],{"class":106},"is",[93,1341,1342],{"class":106}," None",[93,1344,524],{"class":114},[93,1346,1347],{"class":95,"line":190},[93,1348,1349],{"class":193},"        return\n",[93,1351,1352],{"class":95,"line":205},[93,1353,181],{"emptyLinePlaceholder":10},[93,1355,1356,1359,1361,1364,1367,1369,1371],{"class":95,"line":219},[93,1357,1358],{"class":114},"    boxes = ",[93,1360,818],{"class":193},[93,1362,1363],{"class":114}," run.services.people.detect(picture, ",[93,1365,1366],{"class":121},"labels",[93,1368,1284],{"class":114},[93,1370,853],{"class":581},[93,1372,1297],{"class":114},[93,1374,1375,1378,1380,1383,1385,1388,1390,1393,1395],{"class":95,"line":229},[93,1376,1377],{"class":114},"    run.ecs.set(",[93,1379,1167],{"class":581},[93,1381,1382],{"class":114},").put(",[93,1384,733],{"class":581},[93,1386,1387],{"class":114},", People(",[93,1389,1186],{"class":121},[93,1391,1392],{"class":114},"=boxes, ",[93,1394,906],{"class":121},[93,1396,1397],{"class":114},"=picture.sensed))\n",[57,1399,1401],{"id":1400},"track","Track",[45,1403,1404],{},"Follows the most confident person, smoothed so the head doesn't jitter. Pure arithmetic — the\nkind of system Rust is best at, when it runs every tick.",[78,1406,1407,1807,2236],{},[81,1408,1409],{"v-slot:ts":83},[85,1410,1412],{"className":87,"code":1411,"language":89,"meta":83,"style":83},"\u002F\u002F src\u002Ffollow\u002Ftrack.system.ts\nconst SMOOTHING = 0.3\n\nexport default defineSystem({\n    reads: [\"people\"],\n    recalls: [\"target\"],\n    writes: [\"target\"],\n\n    run() {\n        const [self] = ecs.query({ components: [\"people\"] })\n        const best = self?.people.boxes.toSorted((a, b) => b.confidence - a.confidence)[0]\n        if (!self || !best) return\n\n        const last = ecs.query({ components: [\"target\"] })[0]?.target\n        const next = last\n            ? { x: last.x + (best.x - last.x) * SMOOTHING, y: last.y + (best.y - last.y) * SMOOTHING }\n            : { x: best.x, y: best.y }\n\n        ecs.set({ id: \"self\", components: { target: { ...next, sensed: self.people.sensed } } })\n    },\n})\n",[65,1413,1414,1419,1433,1437,1447,1457,1469,1479,1483,1490,1516,1583,1601,1605,1639,1651,1725,1750,1754,1799,1803],{"__ignoreMap":83},[93,1415,1416],{"class":95,"line":96},[93,1417,1418],{"class":99},"\u002F\u002F src\u002Ffollow\u002Ftrack.system.ts\n",[93,1420,1421,1424,1427,1429],{"class":95,"line":103},[93,1422,1423],{"class":106},"const",[93,1425,1426],{"class":760}," SMOOTHING",[93,1428,815],{"class":114},[93,1430,1432],{"class":1431},"sDGX8","0.3\n",[93,1434,1435],{"class":95,"line":118},[93,1436,181],{"emptyLinePlaceholder":10},[93,1438,1439,1441,1443,1445],{"class":95,"line":131},[93,1440,194],{"class":193},[93,1442,702],{"class":193},[93,1444,706],{"class":705},[93,1446,709],{"class":114},[93,1448,1449,1451,1453,1455],{"class":95,"line":141},[93,1450,714],{"class":121},[93,1452,717],{"class":114},[93,1454,733],{"class":581},[93,1456,723],{"class":114},[93,1458,1459,1462,1464,1467],{"class":95,"line":151},[93,1460,1461],{"class":121},"    recalls:",[93,1463,717],{"class":114},[93,1465,1466],{"class":581},"\"target\"",[93,1468,723],{"class":114},[93,1470,1471,1473,1475,1477],{"class":95,"line":161},[93,1472,728],{"class":121},[93,1474,717],{"class":114},[93,1476,1466],{"class":581},[93,1478,723],{"class":114},[93,1480,1481],{"class":95,"line":172},[93,1482,181],{"emptyLinePlaceholder":10},[93,1484,1485,1488],{"class":95,"line":178},[93,1486,1487],{"class":705},"    run",[93,1489,750],{"class":114},[93,1491,1492,1494,1496,1498,1500,1502,1504,1506,1508,1510,1512,1514],{"class":95,"line":184},[93,1493,755],{"class":106},[93,1495,717],{"class":114},[93,1497,761],{"class":760},[93,1499,764],{"class":114},[93,1501,767],{"class":121},[93,1503,770],{"class":114},[93,1505,773],{"class":705},[93,1507,776],{"class":114},[93,1509,779],{"class":121},[93,1511,717],{"class":114},[93,1513,733],{"class":581},[93,1515,786],{"class":114},[93,1517,1518,1520,1523,1525,1527,1530,1532,1534,1536,1538,1541,1544,1547,1549,1552,1554,1557,1560,1562,1565,1568,1570,1572,1574,1577,1580],{"class":95,"line":190},[93,1519,755],{"class":106},[93,1521,1522],{"class":760}," best",[93,1524,815],{"class":114},[93,1526,761],{"class":121},[93,1528,1529],{"class":114},"?.",[93,1531,647],{"class":121},[93,1533,770],{"class":114},[93,1535,1186],{"class":121},[93,1537,770],{"class":114},[93,1539,1540],{"class":705},"toSorted",[93,1542,1543],{"class":114},"((",[93,1545,1546],{"class":121},"a",[93,1548,845],{"class":114},[93,1550,1551],{"class":121},"b",[93,1553,799],{"class":114},[93,1555,1556],{"class":106},"=>",[93,1558,1559],{"class":121}," b",[93,1561,770],{"class":114},[93,1563,1564],{"class":121},"confidence",[93,1566,1567],{"class":114}," - ",[93,1569,1546],{"class":121},[93,1571,770],{"class":114},[93,1573,1564],{"class":121},[93,1575,1576],{"class":114},")[",[93,1578,1579],{"class":1431},"0",[93,1581,1582],{"class":114},"]\n",[93,1584,1585,1587,1589,1591,1594,1597,1599],{"class":95,"line":205},[93,1586,791],{"class":193},[93,1588,794],{"class":114},[93,1590,761],{"class":121},[93,1592,1593],{"class":114}," || !",[93,1595,1596],{"class":121},"best",[93,1598,799],{"class":114},[93,1600,802],{"class":193},[93,1602,1603],{"class":95,"line":219},[93,1604,181],{"emptyLinePlaceholder":10},[93,1606,1607,1609,1612,1614,1616,1618,1620,1622,1624,1626,1628,1631,1633,1636],{"class":95,"line":229},[93,1608,755],{"class":106},[93,1610,1611],{"class":760}," last",[93,1613,815],{"class":114},[93,1615,767],{"class":121},[93,1617,770],{"class":114},[93,1619,773],{"class":705},[93,1621,776],{"class":114},[93,1623,779],{"class":121},[93,1625,717],{"class":114},[93,1627,1466],{"class":581},[93,1629,1630],{"class":114},"] })[",[93,1632,1579],{"class":1431},[93,1634,1635],{"class":114},"]?.",[93,1637,1638],{"class":121},"target\n",[93,1640,1641,1643,1646,1648],{"class":95,"line":234},[93,1642,755],{"class":106},[93,1644,1645],{"class":760}," next",[93,1647,815],{"class":114},[93,1649,1650],{"class":121},"last\n",[93,1652,1653,1656,1659,1661,1663,1666,1669,1671,1673,1675,1677,1680,1682,1684,1687,1690,1692,1695,1697,1699,1702,1704,1706,1708,1710,1712,1714,1716,1718,1720,1722],{"class":95,"line":239},[93,1654,1655],{"class":114},"            ? { ",[93,1657,1658],{"class":121},"x:",[93,1660,1611],{"class":121},[93,1662,770],{"class":114},[93,1664,1665],{"class":121},"x",[93,1667,1668],{"class":114}," + (",[93,1670,1596],{"class":121},[93,1672,770],{"class":114},[93,1674,1665],{"class":121},[93,1676,1567],{"class":114},[93,1678,1679],{"class":121},"last",[93,1681,770],{"class":114},[93,1683,1665],{"class":121},[93,1685,1686],{"class":114},") * ",[93,1688,1689],{"class":760},"SMOOTHING",[93,1691,845],{"class":114},[93,1693,1694],{"class":121},"y:",[93,1696,1611],{"class":121},[93,1698,770],{"class":114},[93,1700,1701],{"class":121},"y",[93,1703,1668],{"class":114},[93,1705,1596],{"class":121},[93,1707,770],{"class":114},[93,1709,1701],{"class":121},[93,1711,1567],{"class":114},[93,1713,1679],{"class":121},[93,1715,770],{"class":114},[93,1717,1701],{"class":121},[93,1719,1686],{"class":114},[93,1721,1689],{"class":760},[93,1723,1724],{"class":114}," }\n",[93,1726,1727,1730,1732,1734,1736,1738,1740,1742,1744,1746,1748],{"class":95,"line":245},[93,1728,1729],{"class":114},"            : { ",[93,1731,1658],{"class":121},[93,1733,1522],{"class":121},[93,1735,770],{"class":114},[93,1737,1665],{"class":121},[93,1739,845],{"class":114},[93,1741,1694],{"class":121},[93,1743,1522],{"class":121},[93,1745,770],{"class":114},[93,1747,1701],{"class":121},[93,1749,1724],{"class":114},[93,1751,1752],{"class":95,"line":257},[93,1753,181],{"emptyLinePlaceholder":10},[93,1755,1756,1758,1760,1762,1764,1766,1768,1770,1772,1774,1777,1780,1783,1785,1787,1789,1791,1793,1795,1797],{"class":95,"line":266},[93,1757,860],{"class":121},[93,1759,770],{"class":114},[93,1761,865],{"class":705},[93,1763,776],{"class":114},[93,1765,870],{"class":121},[93,1767,873],{"class":581},[93,1769,845],{"class":114},[93,1771,779],{"class":121},[93,1773,880],{"class":114},[93,1775,1776],{"class":121},"target:",[93,1778,1779],{"class":114}," { ...",[93,1781,1782],{"class":121},"next",[93,1784,845],{"class":114},[93,1786,895],{"class":121},[93,1788,837],{"class":121},[93,1790,770],{"class":114},[93,1792,647],{"class":121},[93,1794,770],{"class":114},[93,1796,906],{"class":121},[93,1798,909],{"class":114},[93,1800,1801],{"class":95,"line":275},[93,1802,914],{"class":114},[93,1804,1805],{"class":95,"line":284},[93,1806,919],{"class":114},[81,1808,1809],{"v-slot:rs":83},[85,1810,1812],{"className":291,"code":1811,"language":293,"meta":83,"style":83},"\u002F\u002F src\u002Ffollow\u002Ftrack.system.rs\nuse cognet::prelude::*;\nuse crate::schema::follow::follow::{People, Target};\n\nconst SMOOTHING: f64 = 0.3;\n\n#[system(reads = [\"people\"], recalls = [\"target\"], writes = [\"target\"])]\nfn track(run: &mut Run) -> Result\u003C(), Fault> {\n    let Some(people) = ecs.first::\u003CPeople>(\"people\")? else { return Ok(()) };\n    let Some(best) = people.boxes.iter().max_by(|a, b| a.confidence.total_cmp(&b.confidence)) else { return Ok(()) };\n\n    let next = match ecs.first::\u003CTarget>(\"target\")? {\n        Some(last) => Target {\n            x: last.x + (best.x - last.x) * SMOOTHING,\n            y: last.y + (best.y - last.y) * SMOOTHING,\n            sensed: people.sensed,\n        },\n        None => Target { x: best.x, y: best.y, sensed: people.sensed },\n    };\n\n    ecs.set(\"self\").put(\"target\", next)?;\n    Ok(())\n}\n",[65,1813,1814,1819,1831,1861,1865,1881,1885,1910,1938,1976,2039,2043,2072,2088,2110,2132,2144,2149,2188,2193,2197,2224,2231],{"__ignoreMap":83},[93,1815,1816],{"class":95,"line":96},[93,1817,1818],{"class":99},"\u002F\u002F src\u002Ffollow\u002Ftrack.system.rs\n",[93,1820,1821,1823,1825,1827,1829],{"class":95,"line":103},[93,1822,936],{"class":106},[93,1824,939],{"class":110},[93,1826,942],{"class":114},[93,1828,945],{"class":110},[93,1830,948],{"class":114},[93,1832,1833,1835,1837,1839,1841,1843,1845,1847,1849,1852,1854,1856,1858],{"class":95,"line":118},[93,1834,936],{"class":106},[93,1836,955],{"class":106},[93,1838,942],{"class":114},[93,1840,960],{"class":110},[93,1842,942],{"class":114},[93,1844,55],{"class":110},[93,1846,942],{"class":114},[93,1848,55],{"class":110},[93,1850,1851],{"class":114},"::{",[93,1853,71],{"class":110},[93,1855,845],{"class":114},[93,1857,75],{"class":110},[93,1859,1860],{"class":114},"};\n",[93,1862,1863],{"class":95,"line":131},[93,1864,181],{"emptyLinePlaceholder":10},[93,1866,1867,1869,1872,1874,1876,1879],{"class":95,"line":141},[93,1868,1423],{"class":106},[93,1870,1871],{"class":114}," SMOOTHING: ",[93,1873,322],{"class":110},[93,1875,815],{"class":114},[93,1877,1878],{"class":1431},"0.3",[93,1880,975],{"class":114},[93,1882,1883],{"class":95,"line":151},[93,1884,181],{"emptyLinePlaceholder":10},[93,1886,1887,1889,1891,1893,1896,1898,1900,1902,1904,1906,1908],{"class":95,"line":161},[93,1888,1010],{"class":114},[93,1890,733],{"class":581},[93,1892,1015],{"class":114},[93,1894,1895],{"class":121},"recalls",[93,1897,1021],{"class":114},[93,1899,1466],{"class":581},[93,1901,1015],{"class":114},[93,1903,1018],{"class":121},[93,1905,1021],{"class":114},[93,1907,1466],{"class":581},[93,1909,1026],{"class":114},[93,1911,1912,1915,1918,1920,1922,1924,1926,1928,1930,1932,1934,1936],{"class":95,"line":172},[93,1913,1914],{"class":106},"fn",[93,1916,1917],{"class":705}," track",[93,1919,1040],{"class":114},[93,1921,1043],{"class":121},[93,1923,1046],{"class":114},[93,1925,1049],{"class":106},[93,1927,1052],{"class":110},[93,1929,1055],{"class":114},[93,1931,1058],{"class":110},[93,1933,1061],{"class":114},[93,1935,1064],{"class":110},[93,1937,1067],{"class":114},[93,1939,1940,1942,1944,1946,1948,1950,1952,1954,1956,1958,1960,1962,1964,1966,1968,1970,1972,1974],{"class":95,"line":178},[93,1941,1072],{"class":106},[93,1943,1075],{"class":110},[93,1945,1040],{"class":114},[93,1947,647],{"class":121},[93,1949,1082],{"class":114},[93,1951,767],{"class":121},[93,1953,770],{"class":114},[93,1955,1089],{"class":705},[93,1957,1092],{"class":114},[93,1959,71],{"class":110},[93,1961,1097],{"class":114},[93,1963,733],{"class":581},[93,1965,1102],{"class":114},[93,1967,1105],{"class":193},[93,1969,880],{"class":114},[93,1971,1110],{"class":193},[93,1973,1113],{"class":110},[93,1975,1116],{"class":114},[93,1977,1978,1980,1982,1984,1986,1988,1990,1993,1996,1999,2002,2005,2007,2009,2011,2014,2016,2019,2022,2024,2026,2029,2031,2033,2035,2037],{"class":95,"line":184},[93,1979,1072],{"class":106},[93,1981,1075],{"class":110},[93,1983,1040],{"class":114},[93,1985,1596],{"class":121},[93,1987,1082],{"class":114},[93,1989,647],{"class":121},[93,1991,1992],{"class":114},".boxes.",[93,1994,1995],{"class":705},"iter",[93,1997,1998],{"class":114},"().",[93,2000,2001],{"class":705},"max_by",[93,2003,2004],{"class":114},"(|",[93,2006,1546],{"class":121},[93,2008,845],{"class":114},[93,2010,1551],{"class":121},[93,2012,2013],{"class":114},"| ",[93,2015,1546],{"class":121},[93,2017,2018],{"class":114},".confidence.",[93,2020,2021],{"class":705},"total_cmp",[93,2023,1138],{"class":114},[93,2025,1551],{"class":121},[93,2027,2028],{"class":114},".confidence)) ",[93,2030,1105],{"class":193},[93,2032,880],{"class":114},[93,2034,1110],{"class":193},[93,2036,1113],{"class":110},[93,2038,1116],{"class":114},[93,2040,2041],{"class":95,"line":190},[93,2042,181],{"emptyLinePlaceholder":10},[93,2044,2045,2047,2049,2051,2054,2057,2059,2061,2063,2065,2067,2069],{"class":95,"line":205},[93,2046,1072],{"class":106},[93,2048,1645],{"class":121},[93,2050,815],{"class":114},[93,2052,2053],{"class":193},"match",[93,2055,2056],{"class":121}," ecs",[93,2058,770],{"class":114},[93,2060,1089],{"class":705},[93,2062,1092],{"class":114},[93,2064,75],{"class":110},[93,2066,1097],{"class":114},[93,2068,1466],{"class":581},[93,2070,2071],{"class":114},")? {\n",[93,2073,2074,2077,2079,2081,2084,2086],{"class":95,"line":219},[93,2075,2076],{"class":110},"        Some",[93,2078,1040],{"class":114},[93,2080,1679],{"class":121},[93,2082,2083],{"class":114},") => ",[93,2085,75],{"class":110},[93,2087,115],{"class":114},[93,2089,2090,2093,2095,2097,2100,2102,2105,2107],{"class":95,"line":229},[93,2091,2092],{"class":121},"            x",[93,2094,125],{"class":114},[93,2096,1679],{"class":121},[93,2098,2099],{"class":114},".x + (",[93,2101,1596],{"class":121},[93,2103,2104],{"class":114},".x - ",[93,2106,1679],{"class":121},[93,2108,2109],{"class":114},".x) * SMOOTHING,\n",[93,2111,2112,2115,2117,2119,2122,2124,2127,2129],{"class":95,"line":234},[93,2113,2114],{"class":121},"            y",[93,2116,125],{"class":114},[93,2118,1679],{"class":121},[93,2120,2121],{"class":114},".y + (",[93,2123,1596],{"class":121},[93,2125,2126],{"class":114},".y - ",[93,2128,1679],{"class":121},[93,2130,2131],{"class":114},".y) * SMOOTHING,\n",[93,2133,2134,2137,2139,2141],{"class":95,"line":239},[93,2135,2136],{"class":121},"            sensed",[93,2138,125],{"class":114},[93,2140,647],{"class":121},[93,2142,2143],{"class":114},".sensed,\n",[93,2145,2146],{"class":95,"line":245},[93,2147,2148],{"class":114},"        },\n",[93,2150,2151,2154,2157,2159,2161,2163,2165,2167,2170,2172,2174,2176,2179,2181,2183,2185],{"class":95,"line":257},[93,2152,2153],{"class":110},"        None",[93,2155,2156],{"class":114}," => ",[93,2158,75],{"class":110},[93,2160,880],{"class":114},[93,2162,1665],{"class":121},[93,2164,125],{"class":114},[93,2166,1596],{"class":121},[93,2168,2169],{"class":114},".x, ",[93,2171,1701],{"class":121},[93,2173,125],{"class":114},[93,2175,1596],{"class":121},[93,2177,2178],{"class":114},".y, ",[93,2180,906],{"class":121},[93,2182,125],{"class":114},[93,2184,647],{"class":121},[93,2186,2187],{"class":114},".sensed },\n",[93,2189,2190],{"class":95,"line":266},[93,2191,2192],{"class":114},"    };\n",[93,2194,2195],{"class":95,"line":275},[93,2196,181],{"emptyLinePlaceholder":10},[93,2198,2199,2201,2203,2205,2207,2209,2211,2213,2215,2217,2219,2221],{"class":95,"line":284},[93,2200,1158],{"class":121},[93,2202,770],{"class":114},[93,2204,865],{"class":705},[93,2206,1040],{"class":114},[93,2208,1167],{"class":581},[93,2210,1170],{"class":114},[93,2212,1173],{"class":705},[93,2214,1040],{"class":114},[93,2216,1466],{"class":581},[93,2218,845],{"class":114},[93,2220,1782],{"class":121},[93,2222,2223],{"class":114},")?;\n",[93,2225,2227,2229],{"class":95,"line":2226},22,[93,2228,1206],{"class":110},[93,2230,1209],{"class":114},[93,2232,2234],{"class":95,"line":2233},23,[93,2235,175],{"class":114},[81,2237,2238],{"v-slot:py":83},[85,2239,2241],{"className":504,"code":2240,"language":506,"meta":83,"style":83},"# src\u002Ffollow\u002Ftrack.system.py\nfrom cognet import system, Run\nfrom schema.follow.follow import People, Target\n\nSMOOTHING = 0.3\n\n\n@system(reads=[\"people\"], recalls=[\"target\"], writes=[\"target\"])\ndef track(run: Run) -> None:\n    people = run.ecs.first(\"people\", People)\n    if people is None or not people.boxes:\n        return\n    best = max(people.boxes, key=lambda box: box.confidence)\n\n    last = run.ecs.first(\"target\", Target)\n    if last is None:\n        nxt = Target(x=best.x, y=best.y, sensed=people.sensed)\n    else:\n        nxt = Target(\n            x=last.x + (best.x - last.x) * SMOOTHING,\n            y=last.y + (best.y - last.y) * SMOOTHING,\n            sensed=people.sensed,\n        )\n\n    run.ecs.set(\"self\").put(\"target\", nxt)\n",[65,2242,2243,2248,2258,2269,2273,2280,2284,2288,2318,2335,2345,2365,2369,2395,2399,2409,2422,2442,2449,2454,2461,2468,2475,2480,2484],{"__ignoreMap":83},[93,2244,2245],{"class":95,"line":96},[93,2246,2247],{"class":99},"# src\u002Ffollow\u002Ftrack.system.py\n",[93,2249,2250,2252,2254,2256],{"class":95,"line":103},[93,2251,1230],{"class":193},[93,2253,1233],{"class":114},[93,2255,1236],{"class":193},[93,2257,1239],{"class":114},[93,2259,2260,2262,2264,2266],{"class":95,"line":118},[93,2261,1230],{"class":193},[93,2263,1246],{"class":114},[93,2265,1236],{"class":193},[93,2267,2268],{"class":114}," People, Target\n",[93,2270,2271],{"class":95,"line":131},[93,2272,181],{"emptyLinePlaceholder":10},[93,2274,2275,2278],{"class":95,"line":141},[93,2276,2277],{"class":114},"SMOOTHING = ",[93,2279,1432],{"class":1431},[93,2281,2282],{"class":95,"line":151},[93,2283,181],{"emptyLinePlaceholder":10},[93,2285,2286],{"class":95,"line":161},[93,2287,181],{"emptyLinePlaceholder":10},[93,2289,2290,2292,2294,2296,2298,2300,2302,2304,2306,2308,2310,2312,2314,2316],{"class":95,"line":172},[93,2291,1276],{"class":705},[93,2293,1040],{"class":114},[93,2295,1281],{"class":121},[93,2297,1284],{"class":114},[93,2299,733],{"class":581},[93,2301,1015],{"class":114},[93,2303,1895],{"class":121},[93,2305,1284],{"class":114},[93,2307,1466],{"class":581},[93,2309,1015],{"class":114},[93,2311,1018],{"class":121},[93,2313,1284],{"class":114},[93,2315,1466],{"class":581},[93,2317,1297],{"class":114},[93,2319,2320,2323,2325,2327,2329,2331,2333],{"class":95,"line":178},[93,2321,2322],{"class":106},"def",[93,2324,1917],{"class":705},[93,2326,1040],{"class":114},[93,2328,1043],{"class":121},[93,2330,1313],{"class":114},[93,2332,1316],{"class":106},[93,2334,524],{"class":114},[93,2336,2337,2340,2342],{"class":95,"line":184},[93,2338,2339],{"class":114},"    people = run.ecs.first(",[93,2341,733],{"class":581},[93,2343,2344],{"class":114},", People)\n",[93,2346,2347,2349,2352,2354,2356,2359,2362],{"class":95,"line":190},[93,2348,1333],{"class":193},[93,2350,2351],{"class":114}," people ",[93,2353,1339],{"class":106},[93,2355,1342],{"class":106},[93,2357,2358],{"class":106}," or",[93,2360,2361],{"class":106}," not",[93,2363,2364],{"class":114}," people.boxes:\n",[93,2366,2367],{"class":95,"line":205},[93,2368,1349],{"class":193},[93,2370,2371,2374,2377,2380,2383,2386,2389,2392],{"class":95,"line":219},[93,2372,2373],{"class":114},"    best = ",[93,2375,2376],{"class":705},"max",[93,2378,2379],{"class":114},"(people.boxes, ",[93,2381,2382],{"class":121},"key",[93,2384,2385],{"class":114},"=",[93,2387,2388],{"class":106},"lambda",[93,2390,2391],{"class":121}," box",[93,2393,2394],{"class":114},": box.confidence)\n",[93,2396,2397],{"class":95,"line":229},[93,2398,181],{"emptyLinePlaceholder":10},[93,2400,2401,2404,2406],{"class":95,"line":234},[93,2402,2403],{"class":114},"    last = run.ecs.first(",[93,2405,1466],{"class":581},[93,2407,2408],{"class":114},", Target)\n",[93,2410,2411,2413,2416,2418,2420],{"class":95,"line":239},[93,2412,1333],{"class":193},[93,2414,2415],{"class":114}," last ",[93,2417,1339],{"class":106},[93,2419,1342],{"class":106},[93,2421,524],{"class":114},[93,2423,2424,2427,2429,2432,2434,2437,2439],{"class":95,"line":245},[93,2425,2426],{"class":114},"        nxt = Target(",[93,2428,1665],{"class":121},[93,2430,2431],{"class":114},"=best.x, ",[93,2433,1701],{"class":121},[93,2435,2436],{"class":114},"=best.y, ",[93,2438,906],{"class":121},[93,2440,2441],{"class":114},"=people.sensed)\n",[93,2443,2444,2447],{"class":95,"line":257},[93,2445,2446],{"class":193},"    else",[93,2448,524],{"class":114},[93,2450,2451],{"class":95,"line":266},[93,2452,2453],{"class":114},"        nxt = Target(\n",[93,2455,2456,2458],{"class":95,"line":275},[93,2457,2092],{"class":121},[93,2459,2460],{"class":114},"=last.x + (best.x - last.x) * SMOOTHING,\n",[93,2462,2463,2465],{"class":95,"line":284},[93,2464,2114],{"class":121},[93,2466,2467],{"class":114},"=last.y + (best.y - last.y) * SMOOTHING,\n",[93,2469,2470,2472],{"class":95,"line":2226},[93,2471,2136],{"class":121},[93,2473,2474],{"class":114},"=people.sensed,\n",[93,2476,2477],{"class":95,"line":2233},[93,2478,2479],{"class":114},"        )\n",[93,2481,2482],{"class":95,"line":5},[93,2483,181],{"emptyLinePlaceholder":10},[93,2485,2487,2489,2491,2493,2495],{"class":95,"line":2486},25,[93,2488,1377],{"class":114},[93,2490,1167],{"class":581},[93,2492,1382],{"class":114},[93,2494,1466],{"class":581},[93,2496,2497],{"class":114},", nxt)\n",[57,2499,2501],{"id":2500},"look","Look",[45,2503,2504],{},"Turns the target into a command for the neck.",[78,2506,2507,2678,2852],{},[81,2508,2509],{"v-slot:ts":83},[85,2510,2512],{"className":87,"code":2511,"language":89,"meta":83,"style":83},"\u002F\u002F src\u002Ffollow\u002Flook.system.ts\nexport default defineSystem({\n    reads: [\"target\"],\n\n    async run() {\n        const [self] = ecs.query({ components: [\"target\"] })\n        if (!self) return\n\n        await kernel.output(\"cognet:output:vector\", {\n            channel: \"\u002Fneck\",\n            values: [self.target.x - 0.5, self.target.y - 0.5],\n        })\n    },\n})\n",[65,2513,2514,2519,2529,2539,2543,2551,2577,2589,2593,2614,2624,2665,2670,2674],{"__ignoreMap":83},[93,2515,2516],{"class":95,"line":96},[93,2517,2518],{"class":99},"\u002F\u002F src\u002Ffollow\u002Flook.system.ts\n",[93,2520,2521,2523,2525,2527],{"class":95,"line":103},[93,2522,194],{"class":193},[93,2524,702],{"class":193},[93,2526,706],{"class":705},[93,2528,709],{"class":114},[93,2530,2531,2533,2535,2537],{"class":95,"line":118},[93,2532,714],{"class":121},[93,2534,717],{"class":114},[93,2536,1466],{"class":581},[93,2538,723],{"class":114},[93,2540,2541],{"class":95,"line":131},[93,2542,181],{"emptyLinePlaceholder":10},[93,2544,2545,2547,2549],{"class":95,"line":141},[93,2546,744],{"class":106},[93,2548,747],{"class":705},[93,2550,750],{"class":114},[93,2552,2553,2555,2557,2559,2561,2563,2565,2567,2569,2571,2573,2575],{"class":95,"line":151},[93,2554,755],{"class":106},[93,2556,717],{"class":114},[93,2558,761],{"class":760},[93,2560,764],{"class":114},[93,2562,767],{"class":121},[93,2564,770],{"class":114},[93,2566,773],{"class":705},[93,2568,776],{"class":114},[93,2570,779],{"class":121},[93,2572,717],{"class":114},[93,2574,1466],{"class":581},[93,2576,786],{"class":114},[93,2578,2579,2581,2583,2585,2587],{"class":95,"line":161},[93,2580,791],{"class":193},[93,2582,794],{"class":114},[93,2584,761],{"class":121},[93,2586,799],{"class":114},[93,2588,802],{"class":193},[93,2590,2591],{"class":95,"line":172},[93,2592,181],{"emptyLinePlaceholder":10},[93,2594,2595,2598,2601,2603,2606,2608,2611],{"class":95,"line":178},[93,2596,2597],{"class":193},"        await",[93,2599,2600],{"class":121}," kernel",[93,2602,770],{"class":114},[93,2604,2605],{"class":705},"output",[93,2607,1040],{"class":114},[93,2609,2610],{"class":581},"\"cognet:output:vector\"",[93,2612,2613],{"class":114},", {\n",[93,2615,2616,2619,2622],{"class":95,"line":184},[93,2617,2618],{"class":121},"            channel:",[93,2620,2621],{"class":581}," \"\u002Fneck\"",[93,2623,325],{"class":114},[93,2625,2626,2629,2631,2633,2635,2638,2640,2642,2644,2647,2649,2651,2653,2655,2657,2659,2661,2663],{"class":95,"line":190},[93,2627,2628],{"class":121},"            values:",[93,2630,717],{"class":114},[93,2632,761],{"class":121},[93,2634,770],{"class":114},[93,2636,2637],{"class":121},"target",[93,2639,770],{"class":114},[93,2641,1665],{"class":121},[93,2643,1567],{"class":114},[93,2645,2646],{"class":1431},"0.5",[93,2648,845],{"class":114},[93,2650,761],{"class":121},[93,2652,770],{"class":114},[93,2654,2637],{"class":121},[93,2656,770],{"class":114},[93,2658,1701],{"class":121},[93,2660,1567],{"class":114},[93,2662,2646],{"class":1431},[93,2664,723],{"class":114},[93,2666,2667],{"class":95,"line":205},[93,2668,2669],{"class":114},"        })\n",[93,2671,2672],{"class":95,"line":219},[93,2673,914],{"class":114},[93,2675,2676],{"class":95,"line":229},[93,2677,919],{"class":114},[81,2679,2680],{"v-slot:rs":83},[85,2681,2683],{"className":291,"code":2682,"language":293,"meta":83,"style":83},"\u002F\u002F src\u002Ffollow\u002Flook.system.rs\nuse cognet::prelude::*;\nuse crate::schema::follow::follow::Target;\n\n#[system(reads = [\"target\"])]\nasync fn look(run: &mut Run) -> Result\u003C(), Fault> {\n    let Some(target) = ecs.first::\u003CTarget>(\"target\")? else { return Ok(()) };\n\n    run.kernel.output(\"\u002Fneck\", &[target.x - 0.5, target.y - 0.5])?;\n    Ok(())\n}\n",[65,2684,2685,2690,2702,2726,2730,2738,2767,2805,2809,2842,2848],{"__ignoreMap":83},[93,2686,2687],{"class":95,"line":96},[93,2688,2689],{"class":99},"\u002F\u002F src\u002Ffollow\u002Flook.system.rs\n",[93,2691,2692,2694,2696,2698,2700],{"class":95,"line":103},[93,2693,936],{"class":106},[93,2695,939],{"class":110},[93,2697,942],{"class":114},[93,2699,945],{"class":110},[93,2701,948],{"class":114},[93,2703,2704,2706,2708,2710,2712,2714,2716,2718,2720,2722,2724],{"class":95,"line":118},[93,2705,936],{"class":106},[93,2707,955],{"class":106},[93,2709,942],{"class":114},[93,2711,960],{"class":110},[93,2713,942],{"class":114},[93,2715,55],{"class":110},[93,2717,942],{"class":114},[93,2719,55],{"class":110},[93,2721,942],{"class":114},[93,2723,75],{"class":110},[93,2725,975],{"class":114},[93,2727,2728],{"class":95,"line":131},[93,2729,181],{"emptyLinePlaceholder":10},[93,2731,2732,2734,2736],{"class":95,"line":141},[93,2733,1010],{"class":114},[93,2735,1466],{"class":581},[93,2737,1026],{"class":114},[93,2739,2740,2742,2744,2747,2749,2751,2753,2755,2757,2759,2761,2763,2765],{"class":95,"line":151},[93,2741,1031],{"class":106},[93,2743,1034],{"class":106},[93,2745,2746],{"class":705}," look",[93,2748,1040],{"class":114},[93,2750,1043],{"class":121},[93,2752,1046],{"class":114},[93,2754,1049],{"class":106},[93,2756,1052],{"class":110},[93,2758,1055],{"class":114},[93,2760,1058],{"class":110},[93,2762,1061],{"class":114},[93,2764,1064],{"class":110},[93,2766,1067],{"class":114},[93,2768,2769,2771,2773,2775,2777,2779,2781,2783,2785,2787,2789,2791,2793,2795,2797,2799,2801,2803],{"class":95,"line":161},[93,2770,1072],{"class":106},[93,2772,1075],{"class":110},[93,2774,1040],{"class":114},[93,2776,2637],{"class":121},[93,2778,1082],{"class":114},[93,2780,767],{"class":121},[93,2782,770],{"class":114},[93,2784,1089],{"class":705},[93,2786,1092],{"class":114},[93,2788,75],{"class":110},[93,2790,1097],{"class":114},[93,2792,1466],{"class":581},[93,2794,1102],{"class":114},[93,2796,1105],{"class":193},[93,2798,880],{"class":114},[93,2800,1110],{"class":193},[93,2802,1113],{"class":110},[93,2804,1116],{"class":114},[93,2806,2807],{"class":95,"line":172},[93,2808,181],{"emptyLinePlaceholder":10},[93,2810,2811,2813,2816,2818,2820,2823,2825,2827,2829,2831,2833,2835,2837,2839],{"class":95,"line":178},[93,2812,1487],{"class":121},[93,2814,2815],{"class":114},".kernel.",[93,2817,2605],{"class":705},[93,2819,1040],{"class":114},[93,2821,2822],{"class":581},"\"\u002Fneck\"",[93,2824,1143],{"class":114},[93,2826,2637],{"class":121},[93,2828,2104],{"class":114},[93,2830,2646],{"class":1431},[93,2832,845],{"class":114},[93,2834,2637],{"class":121},[93,2836,2126],{"class":114},[93,2838,2646],{"class":1431},[93,2840,2841],{"class":114},"])?;\n",[93,2843,2844,2846],{"class":95,"line":184},[93,2845,1206],{"class":110},[93,2847,1209],{"class":114},[93,2849,2850],{"class":95,"line":190},[93,2851,175],{"class":114},[81,2853,2854],{"v-slot:py":83},[85,2855,2857],{"className":504,"code":2856,"language":506,"meta":83,"style":83},"# src\u002Ffollow\u002Flook.system.py\nfrom cognet import system, Run\nfrom schema.follow.follow import Target\n\n\n@system(reads=[\"target\"])\nasync def look(run: Run) -> None:\n    target = run.ecs.first(\"target\", Target)\n    if target is None:\n        return\n\n    run.kernel.output(\"\u002Fneck\", [target.x - 0.5, target.y - 0.5])\n",[65,2858,2859,2864,2874,2885,2889,2893,2907,2925,2934,2947,2951,2955],{"__ignoreMap":83},[93,2860,2861],{"class":95,"line":96},[93,2862,2863],{"class":99},"# src\u002Ffollow\u002Flook.system.py\n",[93,2865,2866,2868,2870,2872],{"class":95,"line":103},[93,2867,1230],{"class":193},[93,2869,1233],{"class":114},[93,2871,1236],{"class":193},[93,2873,1239],{"class":114},[93,2875,2876,2878,2880,2882],{"class":95,"line":118},[93,2877,1230],{"class":193},[93,2879,1246],{"class":114},[93,2881,1236],{"class":193},[93,2883,2884],{"class":114}," Target\n",[93,2886,2887],{"class":95,"line":131},[93,2888,181],{"emptyLinePlaceholder":10},[93,2890,2891],{"class":95,"line":141},[93,2892,181],{"emptyLinePlaceholder":10},[93,2894,2895,2897,2899,2901,2903,2905],{"class":95,"line":151},[93,2896,1276],{"class":705},[93,2898,1040],{"class":114},[93,2900,1281],{"class":121},[93,2902,1284],{"class":114},[93,2904,1466],{"class":581},[93,2906,1297],{"class":114},[93,2908,2909,2911,2913,2915,2917,2919,2921,2923],{"class":95,"line":161},[93,2910,1031],{"class":106},[93,2912,1304],{"class":106},[93,2914,2746],{"class":705},[93,2916,1040],{"class":114},[93,2918,1043],{"class":121},[93,2920,1313],{"class":114},[93,2922,1316],{"class":106},[93,2924,524],{"class":114},[93,2926,2927,2930,2932],{"class":95,"line":172},[93,2928,2929],{"class":114},"    target = run.ecs.first(",[93,2931,1466],{"class":581},[93,2933,2408],{"class":114},[93,2935,2936,2938,2941,2943,2945],{"class":95,"line":178},[93,2937,1333],{"class":193},[93,2939,2940],{"class":114}," target ",[93,2942,1339],{"class":106},[93,2944,1342],{"class":106},[93,2946,524],{"class":114},[93,2948,2949],{"class":95,"line":184},[93,2950,1349],{"class":193},[93,2952,2953],{"class":95,"line":190},[93,2954,181],{"emptyLinePlaceholder":10},[93,2956,2957,2960,2962,2965,2967,2970,2972],{"class":95,"line":205},[93,2958,2959],{"class":114},"    run.kernel.output(",[93,2961,2822],{"class":581},[93,2963,2964],{"class":114},", [target.x - ",[93,2966,2646],{"class":1431},[93,2968,2969],{"class":114},", target.y - ",[93,2971,2646],{"class":1431},[93,2973,1297],{"class":114},[57,2975,2977],{"id":2976},"what-the-engine-did","What the engine did",[2979,2980,2981,2997,3003],"ul",{},[2982,2983,2984,2988,2989,2991,2992,2991,2994,2996],"li",{},[2985,2986,2987],"strong",{},"Ordered them."," ",[65,2990,636],{},", then ",[65,2993,1400],{},[65,2995,2500],{}," — from the reads and writes alone.",[2982,2998,2999,3002],{},[2985,3000,3001],{},"Ran each where it belongs."," Python in its own process, so a slow model never holds up a\ntick. Rust in-process, its arrays crossing as memory, not copies.",[2982,3004,3005,3008],{},[2985,3006,3007],{},"Recorded all of it."," The debugger answers the same questions whatever language a system\nis written in:",[85,3010,3014],{"className":3011,"code":3012,"language":3013,"meta":83,"style":83},"language-bash shiki shiki-themes dark-plus","$ axonl debug perf\n{\"ok\":true,\"data\":{\"systems\":[\n  {\"system\":\"follow\u002Fdetect\",\"meanMs\":18.2,\"p95Ms\":24, …},\n  {\"system\":\"follow\u002Ftrack\",\"meanMs\":0.04,\"p95Ms\":0.07, …},\n  {\"system\":\"follow\u002Flook\",\"meanMs\":0.11,\"p95Ms\":0.2, …}\n], …}}\n","bash",[65,3015,3016,3030,3058,3087,3110,3133],{"__ignoreMap":83},[93,3017,3018,3021,3024,3027],{"class":95,"line":96},[93,3019,3020],{"class":705},"$",[93,3022,3023],{"class":581}," axonl",[93,3025,3026],{"class":581}," debug",[93,3028,3029],{"class":581}," perf\n",[93,3031,3032,3035,3038,3041,3044,3047,3049,3052,3055],{"class":95,"line":103},[93,3033,3034],{"class":114},"{",[93,3036,3037],{"class":705},"\"ok\"",[93,3039,3040],{"class":705},":true,",[93,3042,3043],{"class":705},"\"data\"",[93,3045,3046],{"class":705},":",[93,3048,3034],{"class":581},[93,3050,3051],{"class":114},"\"",[93,3053,3054],{"class":705},"systems",[93,3056,3057],{"class":705},"\":[\n",[93,3059,3060,3063,3066,3069,3072,3075,3078,3081,3084],{"class":95,"line":118},[93,3061,3062],{"class":705},"  {\"",[93,3064,3065],{"class":705},"system",[93,3067,3068],{"class":705},"\":\"",[93,3070,3071],{"class":705},"follow\u002Fdetect",[93,3073,3074],{"class":705},"\",\"",[93,3076,3077],{"class":705},"meanMs",[93,3079,3080],{"class":705},"\":18.2,\"",[93,3082,3083],{"class":705},"p95Ms",[93,3085,3086],{"class":705},"\":24, …},\n",[93,3088,3089,3091,3093,3095,3098,3100,3102,3105,3107],{"class":95,"line":131},[93,3090,3062],{"class":705},[93,3092,3065],{"class":705},[93,3094,3068],{"class":705},[93,3096,3097],{"class":705},"follow\u002Ftrack",[93,3099,3074],{"class":705},[93,3101,3077],{"class":705},[93,3103,3104],{"class":705},"\":0.04,\"",[93,3106,3083],{"class":705},[93,3108,3109],{"class":705},"\":0.07, …},\n",[93,3111,3112,3114,3116,3118,3121,3123,3125,3128,3130],{"class":95,"line":141},[93,3113,3062],{"class":705},[93,3115,3065],{"class":705},[93,3117,3068],{"class":705},[93,3119,3120],{"class":705},"follow\u002Flook",[93,3122,3074],{"class":705},[93,3124,3077],{"class":705},[93,3126,3127],{"class":705},"\":0.11,\"",[93,3129,3083],{"class":705},[93,3131,3132],{"class":705},"\":0.2, …}\n",[93,3134,3135],{"class":95,"line":151},[93,3136,3137],{"class":705},"], …}}\n",[3139,3140,3141],"style",{},"html pre.shiki code .sOLPB, html code.shiki .sOLPB{--shiki-default:#6A9955}html pre.shiki code .scz_3, html code.shiki .scz_3{--shiki-default:#569CD6}html pre.shiki code .sNl3T, html code.shiki .sNl3T{--shiki-default:#4EC9B0}html pre.shiki code .sTNBD, html code.shiki .sTNBD{--shiki-default:#D4D4D4}html pre.shiki code .s3F5K, html code.shiki .s3F5K{--shiki-default:#9CDCFE}html pre.shiki code .sYbnZ, html code.shiki .sYbnZ{--shiki-default:#C586C0}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .sKc5r, html code.shiki .sKc5r{--shiki-default:#CE9178}html pre.shiki code .sqDPy, html code.shiki .sqDPy{--shiki-default:#C8C8C8}html pre.shiki code .sCudf, html code.shiki .sCudf{--shiki-default:#DCDCAA}html pre.shiki code .s9McN, html code.shiki .s9McN{--shiki-default:#4FC1FF}html pre.shiki code .sDGX8, html code.shiki .sDGX8{--shiki-default:#B5CEA8}",{"title":83,"searchDepth":103,"depth":103,"links":3143},[3144,3145,3146,3147,3148],{"id":59,"depth":103,"text":60},{"id":636,"depth":103,"text":637},{"id":1400,"depth":103,"text":1401},{"id":2500,"depth":103,"text":2501},{"id":2976,"depth":103,"text":2977},"The same mind, written in TypeScript, Rust or Python — one world underneath.","md",{},"\u002Fdocs\u002Fv2\u002Fcognets\u002Foverview\u002Flanguages",{"title":36,"description":3149},"docs\u002Fv2\u002Fcognets\u002Foverview\u002Flanguages","TqUTBBdiRL_qkk2nPZrZkKtNIyxUg2fyAm8dEGA9Q78",{"left":4,"top":4,"width":20,"height":20,"rotate":4,"vFlip":6,"hFlip":6,"body":3157},"\u003Cpath fill=\"#a4b100\" d=\"M27.5 5.5h-9.3l-2.1 4.2H4.4v16.8h25.2v-21Zm0 4.2h-8.2l1.1-2.1h7.1Z\"\u002F>\u003Cpath fill=\"#fff\" d=\"M31.239 18.461H23.3a3.458 3.458 0 1 0-1.874 4.612a3.97 3.97 0 0 0 2.018-1.729h7.789a8.3 8.3 0 0 1 .006-2.883m-11.108 3.026a1.585 1.585 0 1 1 1.585-1.587a1.584 1.584 0 0 1-1.585 1.587\"\u002F>\u003Cpath fill=\"none\" stroke=\"#fff\" stroke-miterlimit=\"10\" stroke-width=\"2\" d=\"M25.239 13.951a7.909 7.909 0 1 0 .772 10.965\"\u002F>",{"left":4,"top":4,"width":20,"height":20,"rotate":4,"vFlip":6,"hFlip":6,"body":3159},"\u003Cpath fill=\"#c18053\" d=\"M27.5 5.5h-9.3l-2.1 4.2H4.4v16.8h25.2v-21Zm0 4.2h-8.2l1.1-2.1h7.1Z\"\u002F>\u003Cpath fill=\"#59c2f2\" d=\"m13.065 26.488l-.383-.365v-.753a4.48 4.48 0 0 0 5.557 0v.753l-.383.365a3.47 3.47 0 0 1-4.791 0\"\u002F>\u003Cpath fill=\"#59c2f2\" d=\"M12.682 23.9V13a4.03 4.03 0 0 0 5.557 0v10.9l-.383.365a3.47 3.47 0 0 1-4.791 0Zm1.111-6.455h3.334v-1.111h-3.334Zm1.667 11.114a4.57 4.57 0 0 1-2.778-.966v2.077a4.03 4.03 0 0 0 5.557 0v-2.077a4.57 4.57 0 0 1-2.779.966\"\u002F>\u003Cpath fill=\"#8abf4f\" d=\"m23.968 26.488l.383-.365v-.753a4.48 4.48 0 0 1-5.557 0v.753l.383.365a3.47 3.47 0 0 0 4.791 0\"\u002F>\u003Cpath fill=\"#8abf4f\" d=\"M18.794 23.9V13a4.03 4.03 0 0 0 5.557 0v10.9l-.383.365a3.47 3.47 0 0 1-4.791 0Zm1.111-6.455h3.335v-1.111h-3.334Zm1.668 11.114a4.57 4.57 0 0 1-2.778-.966v2.077a4.03 4.03 0 0 0 5.557 0v-2.077a4.57 4.57 0 0 1-2.779.966\"\u002F>\u003Cpath fill=\"#b533a5\" d=\"m30.081 26.488l.383-.365v-.753a4.48 4.48 0 0 1-5.557 0v.753l.383.365a3.47 3.47 0 0 0 4.791 0\"\u002F>\u003Cpath fill=\"#b533a5\" d=\"M24.907 23.9V13a4.03 4.03 0 0 0 5.557 0v10.9l-.383.365a3.47 3.47 0 0 1-4.791 0Zm1.111-6.455h3.334v-1.111h-3.334Zm1.667 11.114a4.57 4.57 0 0 1-2.778-.966v2.077a4.03 4.03 0 0 0 5.557 0v-2.077a4.57 4.57 0 0 1-2.779.966\"\u002F>",{"left":4,"top":4,"width":20,"height":20,"rotate":4,"vFlip":6,"hFlip":6,"body":3161},"\u003Cpath fill=\"#00a23c\" d=\"M27.5 5.5h-9.3l-2.1 4.2H4.4v16.8h25.2v-21Zm0 4.2h-8.2l1.1-2.1h7.1Z\"\u002F>\u003Cpath fill=\"#fff\" d=\"M27.249 17.436a3.56 3.56 0 0 1 1.787 1.03a4.7 4.7 0 0 1 .685.916c.009.036-1.234.871-1.987 1.338c-.027.018-.136-.1-.259-.281a1.62 1.62 0 0 0-1.343-.808c-.866-.059-1.424.395-1.42 1.152a1.05 1.05 0 0 0 .122.535c.191.395.544.631 1.656 1.111c2.046.88 2.922 1.461 3.466 2.286a4.15 4.15 0 0 1 .331 3.484a3.83 3.83 0 0 1-3.162 2.264a8.8 8.8 0 0 1-2.178-.023a5.25 5.25 0 0 1-2.908-1.515a5 5 0 0 1-.744-1.1a2 2 0 0 1 .263-.168c.127-.073.608-.349 1.062-.612l.821-.476l.172.254a3.8 3.8 0 0 0 1.087 1.038a2.65 2.65 0 0 0 2.781-.141a1.24 1.24 0 0 0 .159-1.583c-.222-.318-.676-.585-1.964-1.143a7.1 7.1 0 0 1-2.69-1.656a3.8 3.8 0 0 1-.785-1.429a5.7 5.7 0 0 1-.05-1.824a3.48 3.48 0 0 1 2.931-2.713a7.2 7.2 0 0 1 2.167.064m-6.71 1.193l.009 1.17h-3.72V30.37H14.2V19.8h-3.72v-1.148a11 11 0 0 1 .032-1.18c.014-.018 2.277-.027 5.022-.023l4.995.014Z\"\u002F>\u003Cpath fill=\"#00a23c\" d=\"M26.173 31a8.4 8.4 0 0 1-1.309-.087a5.74 5.74 0 0 1-3.177-1.665c-.49-.543-1.028-1.271-.8-1.661a1.15 1.15 0 0 1 .437-.341c.131-.075.611-.351 1.062-.613l1.205-.7l.422.621a3.5 3.5 0 0 0 .913.885a2.21 2.21 0 0 0 2.239-.073a.58.58 0 0 0 .213-.5a.6.6 0 0 0-.129-.455a4.9 4.9 0 0 0-1.762-.976a7.5 7.5 0 0 1-2.85-1.77a4.3 4.3 0 0 1-.9-1.629a6.1 6.1 0 0 1-.057-2.046a3.98 3.98 0 0 1 3.312-3.09a7.6 7.6 0 0 1 2.372.069a4.06 4.06 0 0 1 2.016 1.162a5 5 0 0 1 .8 1.128c.09.35.11.433-2.2 1.864l-.158.1l-.193-.033c-.161-.031-.31-.122-.555-.484a1.15 1.15 0 0 0-.981-.6a.96.96 0 0 0-.732.189a.63.63 0 0 0-.178.483a.6.6 0 0 0 .072.324c.117.241.348.424 1.419.888c2.142.922 3.069 1.543 3.675 2.461a4.66 4.66 0 0 1 .379 3.916a4.28 4.28 0 0 1-3.53 2.566a7 7 0 0 1-1.025.067m-4.237-3.007a6 6 0 0 0 .46.615a4.76 4.76 0 0 0 2.637 1.365a8.5 8.5 0 0 0 2.011.022a3.38 3.38 0 0 0 2.8-1.964a3.68 3.68 0 0 0-.284-3.051c-.489-.74-1.31-1.273-3.256-2.111c-1.114-.482-1.624-.775-1.9-1.343a1.5 1.5 0 0 1-.171-.743a1.56 1.56 0 0 1 .48-1.182a1.88 1.88 0 0 1 1.45-.446a2.08 2.08 0 0 1 1.657.945c.462-.3.952-.623 1.261-.836a7 7 0 0 0-.4-.474a3.1 3.1 0 0 0-1.554-.892a6.9 6.9 0 0 0-1.964-.058a3.02 3.02 0 0 0-2.553 2.344a5.4 5.4 0 0 0 .044 1.6a3.3 3.3 0 0 0 .674 1.23a6.66 6.66 0 0 0 2.529 1.542c1.393.6 1.879.9 2.166 1.307a1.72 1.72 0 0 1-.227 2.211a3.12 3.12 0 0 1-3.326.21A4.3 4.3 0 0 1 23.3 27.2l-.438.255Zm-4.629 2.855H13.72v-10.57H10v-1.626c0-1.24.007-1.381.175-1.523a.2.2 0 0 1 .041-.033c.21-.129.9-.13 5.314-.121l5.47.012l.032 3.29h-3.726Zm-2.632-.955h1.677v-10.57h3.716l-.013-1.383l-4.524-.013c-2.207 0-3.844 0-4.568.01c0 .182-.007.423-.007.714v.671h3.72Z\"\u002F>",{"left":4,"top":4,"width":20,"height":20,"rotate":4,"vFlip":6,"hFlip":6,"body":3163},"\u003Cdefs>\u003CradialGradient id=\"SVGZmFlvcVj\" cx=\"-492.035\" cy=\"-883.37\" r=\"13.998\" gradientTransform=\"matrix(.866 -.5 -.3 -.52 177.106 -689.033)\" gradientUnits=\"userSpaceOnUse\">\u003Cstop offset=\"0\" stop-color=\"#7d7d7d\"\u002F>\u003Cstop offset=\".267\" stop-color=\"#7e7c7a\"\u002F>\u003Cstop offset=\".45\" stop-color=\"#817871\"\u002F>\u003Cstop offset=\".608\" stop-color=\"#867162\"\u002F>\u003Cstop offset=\".753\" stop-color=\"#8d684c\"\u002F>\u003Cstop offset=\".886\" stop-color=\"#965c30\"\u002F>\u003Cstop offset=\"1\" stop-color=\"#a04f12\"\u002F>\u003C\u002FradialGradient>\u003C\u002Fdefs>\u003Cpath fill=\"url(#SVGZmFlvcVj)\" d=\"M15.124 5.3a.832.832 0 1 1 .832.832a.83.83 0 0 1-.832-.832M5.2 12.834a.832.832 0 1 1 .832.832a.83.83 0 0 1-.832-.832m19.856.039a.832.832 0 1 1 .832.832a.83.83 0 0 1-.832-.832m-17.451 1.14a.76.76 0 0 0 .386-1l-.369-.835h1.452v6.545h-2.93a10.3 10.3 0 0 1-.332-3.911Zm6.074.161v-1.929h3.458c.179 0 1.261.206 1.261 1.016c0 .672-.83.913-1.513.913ZM8.958 24.561a.832.832 0 1 1 .832.832a.83.83 0 0 1-.832-.832m12.331.039a.832.832 0 1 1 .832.832a.83.83 0 0 1-.832-.832m.257-1.887a.76.76 0 0 0-.9.584l-.418 1.949a10.25 10.25 0 0 1-8.545-.041l-.417-1.949a.76.76 0 0 0-.9-.583l-1.721.37a10 10 0 0 1-.89-1.049h8.374c.095 0 .158-.017.158-.1v-2.966c0-.086-.063-.1-.158-.1h-2.45v-1.881h2.649a1.665 1.665 0 0 1 1.629 1.412c.105.413.336 1.757.494 2.187c.157.483.8 1.447 1.482 1.447h4.323a10 10 0 0 1-.949 1.1Zm4.65-7.821a10.3 10.3 0 0 1 .022 1.779h-1.051c-.105 0-.148.069-.148.172v.483c0 1.136-.641 1.384-1.2 1.447c-.535.06-1.128-.224-1.2-.551a3.62 3.62 0 0 0-1.671-2.808c1.03-.654 2.1-1.619 2.1-2.911A3.29 3.29 0 0 0 21.44 9.8a4.56 4.56 0 0 0-2.2-.724H8.367A10.25 10.25 0 0 1 14.1 5.84l1.282 1.344a.76.76 0 0 0 1.072.026l1.434-1.372a10.25 10.25 0 0 1 7.015 5l-.982 2.217a.76.76 0 0 0 .386 1Zm2.448.036l-.033-.343l1.011-.943a.42.42 0 0 0-.013-.595a.4.4 0 0 0-.121-.081l-1.288-.483l-.1-.334l.806-1.12a.42.42 0 0 0-.13-.581a.4.4 0 0 0-.133-.055l-1.363-.222l-.164-.306l.573-1.257a.42.42 0 0 0-.236-.544a.4.4 0 0 0-.146-.029l-1.383.048l-.224-.264l.318-1.347a.42.42 0 0 0-.343-.487a.4.4 0 0 0-.144 0l-1.348.315l-.266-.219l.049-1.381a.42.42 0 0 0-.431-.411a.4.4 0 0 0-.141.028l-1.257.573l-.306-.164l-.222-1.363a.42.42 0 0 0-.5-.318a.4.4 0 0 0-.133.055l-1.121.806l-.333-.1l-.483-1.293a.42.42 0 0 0-.555-.215a.4.4 0 0 0-.12.08l-.946 1.012l-.343-.033l-.728-1.177a.42.42 0 0 0-.688 0l-.728 1.177l-.343.033l-.943-1.012a.42.42 0 0 0-.595.015a.4.4 0 0 0-.08.12L12.483 3.8l-.333.1l-1.12-.8a.42.42 0 0 0-.581.13a.4.4 0 0 0-.055.133l-.222 1.363l-.306.164l-1.258-.573a.42.42 0 0 0-.544.239a.4.4 0 0 0-.028.144l.048 1.383l-.266.217l-1.347-.316a.42.42 0 0 0-.487.343a.4.4 0 0 0 0 .144L6.3 7.819l-.218.265L4.7 8.036a.422.422 0 0 0-.383.573l.573 1.257l-.164.306l-1.363.222a.42.42 0 0 0-.318.5a.4.4 0 0 0 .055.133l.806 1.12l-.1.334l-1.293.483a.42.42 0 0 0-.215.555a.4.4 0 0 0 .081.121l1.011.943l-.033.343l-1.177.728a.42.42 0 0 0 0 .688l1.177.728l.033.343l-1.011.943a.42.42 0 0 0 .015.595a.4.4 0 0 0 .119.08l1.293.483l.1.334l-.806 1.124a.42.42 0 0 0 .131.581a.4.4 0 0 0 .133.055l1.363.222l.164.307l-.573 1.257a.42.42 0 0 0 .24.545a.4.4 0 0 0 .143.028l1.383-.048l.219.266l-.317 1.348a.42.42 0 0 0 .341.486a.4.4 0 0 0 .146 0l1.345-.319l.266.218l-.049 1.382a.42.42 0 0 0 .429.41a.4.4 0 0 0 .143-.028l1.257-.573l.306.164l.222 1.362a.42.42 0 0 0 .5.319a.4.4 0 0 0 .133-.055l1.12-.807l.334.1l.483 1.292a.42.42 0 0 0 .556.214a.4.4 0 0 0 .119-.08l.943-1.011l.343.034l.728 1.177a.42.42 0 0 0 .588.1a.4.4 0 0 0 .1-.1l.728-1.177l.343-.034l.943 1.011a.42.42 0 0 0 .595-.015a.4.4 0 0 0 .08-.119l.483-1.292l.334-.1l1.12.807a.42.42 0 0 0 .581-.131a.4.4 0 0 0 .055-.133l.222-1.362l.306-.164l1.257.573a.42.42 0 0 0 .544-.239a.4.4 0 0 0 .028-.143l-.048-1.384l.265-.218l1.347.317a.42.42 0 0 0 .487-.34a.5.5 0 0 0 0-.146l-.309-1.346l.218-.266l1.383.048a.42.42 0 0 0 .41-.431a.4.4 0 0 0-.028-.142l-.573-1.257l.164-.307l1.363-.222a.42.42 0 0 0 .319-.5a.4.4 0 0 0-.056-.135l-.806-1.12l.1-.334l1.293-.483a.42.42 0 0 0 .215-.554a.4.4 0 0 0-.081-.121l-1.011-.943l.033-.343l1.177-.728a.42.42 0 0 0 0-.688Z\"\u002F>",{"left":4,"top":4,"width":20,"height":20,"rotate":4,"vFlip":6,"hFlip":6,"body":3165},"\u003Cdefs>\u003Csymbol id=\"SVGh9hTDc8z\" viewBox=\"0 0 45.72 26.28\">\u003Cpath fill=\"none\" d=\"M0 0h45.7v26.3H0z\"\u002F>\u003Cpath fill=\"#231f20\" d=\"M0 16.3h22.9v10l22.8-13.2L22.9 0v9.97H0z\"\u002F>\u003C\u002Fsymbol>\u003C\u002Fdefs>\u003Cpath fill=\"#977753\" d=\"m14.3 29.5l-.007-.457l12.9-5.51l2.04.288l-.012.385l-12.9 6.33z\"\u002F>\u003Cpath fill=\"#7a552c\" d=\"m14.3 29.1l12.9-5.88l2.05.663l-13 6.26z\"\u002F>\u003Cpath fill=\"#886947\" d=\"m14.3 27.6l2.01 1.09v1.42l-2.01-1.09z\"\u002F>\u003Cpath fill=\"#9a7246\" d=\"m29.1 22.5l-1.52.766v1.42l1.52-.766z\"\u002F>\u003Cpath fill=\"#694a27\" d=\"m20.2 24.8l2.01 1.09v1.42l-2.01-1.09z\"\u002F>\u003Cpath fill=\"#9a7246\" d=\"m23.7 25.1l-1.52.766v1.42l1.52-.766z\"\u002F>\u003Cpath fill=\"#715a40\" d=\"m8.72 26.7l-.007-.4l12.9-5.51l2.04.288l-.012.385l-12.9 6.28z\"\u002F>\u003Cpath fill=\"#886947\" d=\"m8.72 24.9l2.01 1.09v1.42l-2.01-1.09z\"\u002F>\u003Cpath fill=\"#6d471e\" d=\"m12.2 25.2l-1.52.766v1.42l1.52-.766z\"\u002F>\u003Cpath fill=\"#7a5f41\" d=\"m3.45 24.1l-.007-.349l12.9-5.51l2.04.288l-.011.384l-12.9 6.23z\"\u002F>\u003Cpath fill=\"#886947\" d=\"m3.45 22.3l2.01 1.09v1.42l-2.01-1.09z\"\u002F>\u003Cpath fill=\"#6d471e\" d=\"m6.98 22.6l-1.52.766v1.42l1.52-.766z\"\u002F>\u003Cpath fill=\"#977753\" d=\"m3.34 22.6l-.007-.282s2.54-.09 1.69.115c1.05-.663 11.2-4.56 11.2-4.56l13 4.44l.062.279l-12.9 6.09z\"\u002F>\u003Cpath fill=\"#c69c6d\" d=\"m3.3 22.4l13-4.52l13 4.52l-13 6.02z\"\u002F>\u003Cpath fill=\"#e5ac3d\" stroke=\"#73561f\" stroke-miterlimit=\"10\" stroke-width=\".054\" d=\"m16.4 6.64l-6.2-2.48v8.12l6.2 2.52z\"\u002F>\u003Cpath fill=\"#e3b04e\" stroke=\"#73561f\" stroke-miterlimit=\"10\" stroke-width=\".054\" d=\"m16.3 6.67l6.12-2.44l-6.15-2.53l-6.14 2.47z\"\u002F>\u003Cuse width=\"45.72\" height=\"26.28\" href=\"#SVGh9hTDc8z\" transform=\"matrix(0 -.029 .022 .013 10.6 6.25)\"\u002F>\u003Cpath fill=\"#e5ac3d\" stroke=\"#73561f\" stroke-miterlimit=\"10\" stroke-width=\".054\" d=\"m22.5 17.1l6.2-2.48v7.31l-6.2 2.88z\"\u002F>\u003Cpath fill=\"#e5ac3d\" stroke=\"#73561f\" stroke-miterlimit=\"10\" stroke-width=\".054\" d=\"m22.5 9.13l6.2-2.42v7.91l-6.2 2.51z\"\u002F>\u003Cpath fill=\"#e3b04e\" stroke=\"#73561f\" stroke-miterlimit=\"10\" stroke-width=\".054\" d=\"m22.4 9.12l-6.03-2.56l6.06-2.27l6.2 2.4z\"\u002F>\u003Cpath fill=\"#e5ac3d\" stroke=\"#73561f\" stroke-miterlimit=\"10\" stroke-width=\".054\" d=\"m10.1 17.1l-6.2-2.39v7.38l6.2 2.85z\"\u002F>\u003Cpath fill=\"#e3b04e\" stroke=\"#73561f\" stroke-miterlimit=\"10\" stroke-width=\".054\" d=\"m10.1 17.1l6.2-2.42l-6.2-2.46l-6.2 2.4z\"\u002F>\u003Cpath fill=\"none\" stroke=\"#73561f\" stroke-miterlimit=\"10\" stroke-width=\".054\" d=\"m6.95 15.9l6.15-2.5\"\u002F>\u003Cpath fill=\"#e5ac3d\" stroke=\"#73561f\" stroke-miterlimit=\"10\" stroke-width=\".054\" d=\"m16.3 19.7l-6.2-2.46v7.72l6.2 2.96z\"\u002F>\u003Cpath fill=\"#e5ac3d\" stroke=\"#73561f\" stroke-miterlimit=\"10\" stroke-width=\".054\" d=\"m16.2 19.7l6.26-2.48v7.66l-6.26 2.96z\"\u002F>\u003Cpath fill=\"#e5ac3d\" stroke=\"#73561f\" stroke-miterlimit=\"10\" stroke-width=\".054\" d=\"m16.3 11.5l6.2-2.45v8.16l-6.2 2.48zm0 0l-6.2-2.48v8.12l6.2 2.52z\"\u002F>\u003Cpath fill=\"#e3b04e\" stroke=\"#73561f\" stroke-miterlimit=\"10\" stroke-width=\".054\" d=\"m16.3 11.5l6.17-2.44l-6.2-2.53L10.07 9z\"\u002F>\u003Cpath fill=\"none\" stroke=\"#73561f\" stroke-miterlimit=\"10\" stroke-width=\".054\" d=\"M12.8 10.1L19 7.68m-6-2.31l6.2-2.47m.6 2.39l6.3 2.44\"\u002F>\u003Cpath fill=\"#fff\" stroke=\"#73561f\" stroke-miterlimit=\"10\" stroke-width=\".047\" d=\"m18.3 7.4l-6.2 2.48l1.4.62l6.2-2.49zm.3-4.78L12.3 5.1l1.5.59L20 3.23zM6.27 15.6l1.48.6l2.35-.9v-1.2z\" opacity=\".3\"\u002F>\u003Cpath fill=\"#fff\" stroke=\"#73561f\" stroke-miterlimit=\"10\" stroke-width=\".042\" d=\"m20.5 5.03l-1.3.52l6.2 2.42l1.3-.53z\" opacity=\".3\"\u002F>\u003Cpath fill=\"none\" d=\"M6.7 17.5h.05l-.1-.1zm.39.2l.07-.1h-.13z\"\u002F>\u003Cpath fill=\"#fff\" stroke=\"#73561f\" stroke-miterlimit=\"10\" stroke-width=\".067\" d=\"m7.72 16.2l-1.45-.6v1.7l.2-.2l.18.3l.1.1l.14-.2l.14.3h.13l.18-.1l.24.3h.14z\" opacity=\".3\"\u002F>\u003Cpath fill=\"none\" d=\"M12.8 6.97v-.04l-.1-.04zm.4.17v-.05l-.1-.05z\"\u002F>\u003Cpath fill=\"#fff\" stroke=\"#73561f\" stroke-miterlimit=\"10\" stroke-width=\".067\" d=\"m13.8 5.66l-1.5-.57v1.65l.3-.14l.1.29l.1.04l.2-.12l.1.23l.1.05l.2-.17l.3.33l.1.05z\" opacity=\".3\"\u002F>\u003Cpath fill=\"none\" d=\"m12.5 11.8l.1-.1h-.1zm.4.2l.1-.1l-.1-.1z\"\u002F>\u003Cpath fill=\"#fff\" stroke=\"#73561f\" stroke-miterlimit=\"10\" stroke-width=\".067\" d=\"m13.6 10.5l-1.5-.6v1.7l.2-.2l.2.3h.1l.1-.1l.2.2l.1.1l.2-.2l.2.4h.2z\" opacity=\".3\"\u002F>\u003Cpath fill=\"none\" d=\"M13.1 16.7v.1h.1zm-.4-.1l.1.1z\"\u002F>\u003Cpath fill=\"#fff\" stroke=\"#73561f\" stroke-miterlimit=\"10\" stroke-width=\".067\" d=\"m12.1 18l1.5.6v-1.7l-.2.2l-.2-.3h-.1l-.1.1l-.2-.2l-.1-.1l-.2.2l-.2-.3l-.2-.1z\" opacity=\".3\"\u002F>\u003Cpath fill=\"none\" d=\"M7.33 21.9h-.05l.1.1zm-.39-.2l-.07.1H7z\"\u002F>\u003Cpath fill=\"#fff\" stroke=\"#73561f\" stroke-miterlimit=\"10\" stroke-width=\".067\" d=\"m6.33 23.2l1.39.6l.05-1.7l-.2.1l-.19-.2l-.1-.1l-.14.1l-.14-.2h-.13l-.19.1l-.24-.3H6.3z\" opacity=\".3\"\u002F>\u003Cpath fill=\"none\" d=\"m25.8 14.1l-.1.1zm.4-.2v.1h-.1z\"\u002F>\u003Cpath fill=\"#fff\" stroke=\"#73561f\" stroke-miterlimit=\"10\" stroke-width=\".067\" d=\"m26.8 15.4l-1.5.6v-1.7l.2.2l.2-.3l.1-.1l.2.2l.1-.3h.1l.2.1l.2-.3h.2z\" opacity=\".3\"\u002F>\u003Cpath fill=\"none\" d=\"m26.4 9.32l-.1-.04l.1-.04zm-.4.16l-.1-.05l.1-.05z\"\u002F>\u003Cpath fill=\"#fff\" stroke=\"#73561f\" stroke-miterlimit=\"10\" stroke-width=\".067\" d=\"m25.4 7.99l1.4-.54v1.64l-.2-.13l-.2.28l-.1.04l-.1-.13l-.2.23l-.1.05l-.2-.17l-.2.33l-.2.05z\" opacity=\".3\"\u002F>\u003Cpath fill=\"none\" d=\"M19.4 24.6h.1zm.4-.2h.1l-.1.1z\"\u002F>\u003Cpath fill=\"#fff\" stroke=\"#73561f\" stroke-miterlimit=\"10\" stroke-width=\".067\" d=\"m20.4 25.9l-1.4.6v-1.7l.2.1l.2-.3h.1l.1.1l.2-.2l.1-.1l.2.2l.2-.3l.1-.1z\" opacity=\".3\"\u002F>\u003Cpath fill=\"none\" d=\"M20 19.9h.1zm-.4.2l.1-.1z\"\u002F>\u003Cpath fill=\"#fff\" stroke=\"#73561f\" stroke-miterlimit=\"10\" stroke-width=\".067\" d=\"m19 18.6l1.5-.5v1.6l-.2-.1l-.2.3H20l-.2-.1l-.1.2l-.1.1l-.2-.2l-.3.3l-.1.1z\" opacity=\".3\"\u002F>\u003Cpath d=\"m21.426 13.49l-.172-.039V13.4l.148-.208a.1.1 0 0 0 .018-.065a.035.035 0 0 0-.037-.03l-.189.006l-.015-.045l.118-.222a.07.07 0 0 0 .007-.063a.04.04 0 0 0-.045-.018l-.2.051l-.024-.037l.084-.229a.06.06 0 0 0 0-.058a.04.04 0 0 0-.051-.006l-.2.094l-.032-.027l.047-.227a.05.05 0 0 0-.016-.052a.05.05 0 0 0-.056.007l-.2.133l-.039-.017l.007-.215a.04.04 0 0 0-.026-.043a.07.07 0 0 0-.058.02l-.184.166l-.045-.006l-.033-.2a.036.036 0 0 0-.036-.032a.08.08 0 0 0-.057.031l-.164.194l-.049.005l-.071-.168a.036.036 0 0 0-.044-.021a.1.1 0 0 0-.055.042l-.138.214l-.05.016l-.107-.135a.04.04 0 0 0-.05-.008a.1.1 0 0 0-.05.051l-.107.226l-.05.026l-.138-.1a.05.05 0 0 0-.055 0a.1.1 0 0 0-.044.058l-.071.228l-.049.036l-.164-.054a.06.06 0 0 0-.057.017a.1.1 0 0 0-.036.063l-.033.223l-.045.044l-.184-.01a.08.08 0 0 0-.058.029a.1.1 0 0 0-.026.065l.007.209l-.039.05l-.2.035a.1.1 0 0 0-.056.04a.1.1 0 0 0-.016.065l.046.187l-.032.054l-.2.079a.1.1 0 0 0-.051.049a.07.07 0 0 0 0 .062l.084.157l-.024.057l-.2.119a.1.1 0 0 0-.045.057a.06.06 0 0 0 .007.057l.118.122l-.015.058l-.189.155a.1.1 0 0 0-.037.062a.045.045 0 0 0 .018.05l.148.082v.055l-.172.185a.1.1 0 0 0-.028.065a.04.04 0 0 0 .028.041l.172.039v.051l-.148.208a.1.1 0 0 0-.018.065a.035.035 0 0 0 .037.03l.189-.006l.015.045l-.118.222a.07.07 0 0 0-.007.063a.04.04 0 0 0 .045.018l.2-.051l.024.037l-.084.229a.06.06 0 0 0 0 .058a.04.04 0 0 0 .051.006l.2-.094l.032.027l-.046.227a.05.05 0 0 0 .016.051a.05.05 0 0 0 .056-.007l.2-.133l.039.017l-.007.215a.04.04 0 0 0 .026.043a.07.07 0 0 0 .058-.02l.184-.166l.045.006l.033.2a.035.035 0 0 0 .036.032a.08.08 0 0 0 .057-.031l.164-.194l.049-.005l.071.168a.036.036 0 0 0 .044.02a.1.1 0 0 0 .055-.042l.138-.214l.05-.016l.107.135a.04.04 0 0 0 .05.008a.1.1 0 0 0 .05-.051l.107-.226l.05-.027l.138.1a.05.05 0 0 0 .055 0a.1.1 0 0 0 .044-.058l.071-.228l.049-.036l.164.054a.06.06 0 0 0 .057-.017a.1.1 0 0 0 .036-.063l.033-.223l.045-.044l.184.01a.08.08 0 0 0 .058-.029a.1.1 0 0 0 .026-.065l-.007-.209l.039-.05l.2-.035a.1.1 0 0 0 .056-.04a.1.1 0 0 0 .016-.065l-.046-.187l.017-.053l.2-.079a.1.1 0 0 0 .051-.049a.07.07 0 0 0 0-.062l-.084-.157l.024-.057l.2-.119a.1.1 0 0 0 .045-.057a.06.06 0 0 0-.007-.057l-.118-.122l.015-.058l.189-.155a.1.1 0 0 0 .037-.062a.045.045 0 0 0-.018-.05l-.148-.082v-.055l.172-.185a.1.1 0 0 0 .028-.065a.04.04 0 0 0-.014-.039m-1.153 1.988c-.066.013-.108-.037-.094-.112a.21.21 0 0 1 .145-.16c.066-.013.108.037.094.112a.21.21 0 0 1-.145.16m-.059-.39a.19.19 0 0 0-.132.146l-.061.325a2.3 2.3 0 0 1-.619.4a1.4 1.4 0 0 1-.632.123l-.061-.273c-.013-.057-.072-.072-.132-.033l-.252.164a1 1 0 0 1-.13-.106l1.226-.521q.022-.007.023-.026v-.455c0-.013-.009-.012-.023-.006l-.359.152v-.288l.388-.165a.16.16 0 0 1 .239.115c.015.057.049.249.072.3s.117.172.217.13l.611-.26l.022-.012a3 3 0 0 1-.139.23Zm-1.7 1.13c-.066.043-.131.026-.145-.037a.2.2 0 0 1 .094-.192c.066-.043.131-.026.145.037a.2.2 0 0 1-.09.192Zm-.465-1.779a.18.18 0 0 1-.062.2c-.062.055-.134.056-.161 0a.18.18 0 0 1 .062-.2c.066-.051.138-.053.165 0Zm-.143.416l.263-.234a.16.16 0 0 0 .057-.178l-.054-.105l.213-.09v1l-.429.182a1.4 1.4 0 0 1-.057-.407c.001-.052.001-.11.011-.168Zm1.152-.587v-.3l.506-.215c.026-.011.185-.047.185.077c0 .1-.122.192-.222.234l-.47.2Zm1.84-.516v.118l-.154.065a.04.04 0 0 0-.022.036v.074a.31.31 0 0 1-.176.3c-.078.043-.165.036-.176-.01c-.046-.253-.123-.278-.245-.327a1 1 0 0 0 .308-.578a.3.3 0 0 0-.235-.315a.57.57 0 0 0-.322.026l-1.592.677a2.7 2.7 0 0 1 .84-.853l.188.127c.042.029.113 0 .157-.063l.21-.3a.94.94 0 0 1 1.027.33l-.144.4c-.025.069 0 .128.057.13l.277.011q.004.073.004.152Zm-1.591-1.044c.049-.069.126-.1.172-.069s.045.113 0 .183s-.126.1-.172.069s-.044-.114.005-.184Zm1.427.6a.19.19 0 0 1 .161-.133c.062 0 .089.066.062.142a.19.19 0 0 1-.161.133c-.057-.006-.085-.07-.058-.15Z\" opacity=\".55\"\u002F>\u003Cpath d=\"m15.314 23.421l-.19-.195l-.005-.057l.163-.085a.05.05 0 0 0 .02-.052a.1.1 0 0 0-.041-.065l-.208-.163l-.016-.06l.13-.127a.06.06 0 0 0 .007-.06a.12.12 0 0 0-.05-.06l-.22-.126l-.026-.06l.092-.165a.07.07 0 0 0-.005-.065a.1.1 0 0 0-.057-.052l-.223-.083l-.035-.057l.051-.2a.1.1 0 0 0-.017-.068a.1.1 0 0 0-.061-.042l-.217-.038l-.043-.053l.008-.22a.1.1 0 0 0-.029-.068a.1.1 0 0 0-.063-.031l-.2.01l-.049-.047l-.036-.234a.1.1 0 0 0-.039-.066a.07.07 0 0 0-.063-.018l-.181.056l-.054-.038l-.078-.24a.12.12 0 0 0-.048-.061a.06.06 0 0 0-.06-.005l-.152.1l-.059-.026l-.117-.238a.1.1 0 0 0-.055-.054a.05.05 0 0 0-.055.008l-.117.142l-.055-.017l-.152-.225a.1.1 0 0 0-.06-.044a.04.04 0 0 0-.048.021l-.078.176l-.054-.006l-.181-.2a.1.1 0 0 0-.063-.033a.04.04 0 0 0-.039.034l-.036.205l-.049.006l-.2-.175a.07.07 0 0 0-.063-.021a.04.04 0 0 0-.029.045l.008.226l-.043.018l-.217-.14a.06.06 0 0 0-.061-.008a.05.05 0 0 0-.017.054l.051.238l-.035.028l-.223-.1a.05.05 0 0 0-.057.006a.06.06 0 0 0-.005.061l.092.24l-.026.039l-.22-.054a.04.04 0 0 0-.05.019a.07.07 0 0 0 .007.066l.13.234l-.016.047l-.208-.007a.04.04 0 0 0-.041.032a.1.1 0 0 0 .02.068l.163.219l-.005.053l-.19.04a.04.04 0 0 0-.031.043a.1.1 0 0 0 .031.068l.19.195l.005.057l-.163.085a.05.05 0 0 0-.02.052a.1.1 0 0 0 .041.065l.208.163l.016.06l-.13.127a.06.06 0 0 0-.007.06a.12.12 0 0 0 .05.06l.22.126l.026.06l-.092.165a.07.07 0 0 0 .005.065a.1.1 0 0 0 .057.052l.223.083l.035.057l-.051.2a.1.1 0 0 0 .017.068a.1.1 0 0 0 .061.042l.217.038l.043.053l-.008.22a.1.1 0 0 0 .029.068a.1.1 0 0 0 .063.031l.2-.009l.049.047l.036.234a.1.1 0 0 0 .039.066a.07.07 0 0 0 .063.019l.18-.056l.054.038l.078.24a.12.12 0 0 0 .048.061a.06.06 0 0 0 .06.005l.152-.1l.055.028l.117.238a.1.1 0 0 0 .055.054a.05.05 0 0 0 .055-.008l.117-.142l.055.017l.152.225a.1.1 0 0 0 .06.044a.04.04 0 0 0 .048-.021l.078-.176l.054.006l.181.2a.1.1 0 0 0 .063.033a.04.04 0 0 0 .039-.034l.036-.2l.049-.006l.2.175a.07.07 0 0 0 .063.021a.04.04 0 0 0 .029-.045l-.008-.226l.043-.018l.217.14a.06.06 0 0 0 .061.008a.05.05 0 0 0 .017-.054l-.051-.238l.035-.028l.223.1a.05.05 0 0 0 .057-.006a.06.06 0 0 0 .005-.061l-.092-.24l.026-.039l.22.054a.04.04 0 0 0 .05-.019a.07.07 0 0 0-.007-.066l-.13-.234l.016-.047l.208.007a.04.04 0 0 0 .041-.032a.1.1 0 0 0-.02-.068l-.163-.219l.005-.053l.19-.04a.04.04 0 0 0 .031-.043a.1.1 0 0 0-.026-.077m-1.269 1.054a.21.21 0 0 1-.1-.2c.015-.066.087-.083.159-.038a.21.21 0 0 1 .1.2c-.015.063-.086.083-.159.038m-.064-.462c-.066-.041-.131-.026-.145.035l-.067.287a1.6 1.6 0 0 1-.681-.132a2.5 2.5 0 0 1-.7-.438l-.067-.342a.2.2 0 0 0-.145-.153l-.277-.054q-.077-.111-.143-.228l1.35.552c.015.006.025.008.025-.006v-.477q-.001-.02-.025-.027l-.395-.161v-.3l.427.175a.46.46 0 0 1 .263.335c.017.074.054.305.08.385a.6.6 0 0 0 .239.331l.672.275l.024.008a1 1 0 0 1-.153.117Zm-1.867-.334a.22.22 0 0 1-.159-.168c-.015-.079.031-.132.1-.118a.23.23 0 0 1 .159.168c.019.079-.027.132-.1.118m-.514-2.286c.03.08 0 .147-.068.149a.21.21 0 0 1-.177-.141c-.03-.08 0-.147.068-.149a.21.21 0 0 1 .177.141m-.157.309l.289-.01c.062 0 .09-.063.062-.136l-.06-.159l.234.1v1.055l-.472-.193a2 2 0 0 1-.063-.479a2 2 0 0 1 .012-.18Zm1.268.416v-.311l.557.228c.029.012.2.116.2.247c0 .108-.134.092-.244.047l-.517-.211Zm2.025 1.108v.121l-.169-.069q-.025-.01-.024.018v.078c0 .183-.1.181-.194.154a.31.31 0 0 1-.194-.168a.95.95 0 0 0-.269-.563c.166-.038.339-.122.339-.331a.86.86 0 0 0-.259-.542a1.2 1.2 0 0 0-.355-.262l-1.752-.717a1.14 1.14 0 0 1 .924-.144l.207.3c.047.068.124.1.173.075l.231-.127a2.95 2.95 0 0 1 1.13 1.267l-.158.293a.17.17 0 0 0 .062.187l.3.26q.01.087.01.17ZM12.987 20.7c.054-.029.138.007.19.082s.049.159 0 .188s-.138-.007-.19-.082s-.053-.156 0-.188m1.57 1.905c.03-.056.109-.054.177 0a.185.185 0 0 1 .068.205c-.03.056-.109.054-.177 0a.185.185 0 0 1-.068-.202Z\" opacity=\".56\"\u002F>\u003Cpath d=\"m27.838 18.724l-.172-.039v-.051l.148-.208a.1.1 0 0 0 .018-.065a.035.035 0 0 0-.037-.03l-.189.006l-.015-.045l.118-.222a.07.07 0 0 0 .007-.063a.04.04 0 0 0-.045-.018l-.2.051l-.03-.04l.084-.229a.06.06 0 0 0 0-.058a.04.04 0 0 0-.051-.006l-.2.094l-.032-.027l.047-.227a.05.05 0 0 0-.016-.052a.05.05 0 0 0-.056.007l-.2.133l-.039-.017l.007-.215a.04.04 0 0 0-.026-.043a.07.07 0 0 0-.058.02l-.184.166l-.045-.006l-.033-.2a.036.036 0 0 0-.036-.032a.08.08 0 0 0-.057.031l-.164.194l-.049.005l-.071-.168a.036.036 0 0 0-.044-.021a.1.1 0 0 0-.055.042l-.138.214l-.05.016l-.107-.135a.04.04 0 0 0-.05-.008a.1.1 0 0 0-.05.051l-.107.226l-.05.026l-.138-.1a.05.05 0 0 0-.055 0a.1.1 0 0 0-.044.058l-.071.228l-.049.036l-.164-.054a.06.06 0 0 0-.057.017a.1.1 0 0 0-.036.063l-.033.223l-.045.044l-.184-.01a.08.08 0 0 0-.058.029a.1.1 0 0 0-.026.065l.007.209l-.039.05l-.2.035a.1.1 0 0 0-.056.04a.1.1 0 0 0-.016.065l.046.187l-.032.054l-.2.079a.1.1 0 0 0-.051.049a.07.07 0 0 0 0 .062l.084.157l-.024.057l-.2.119a.1.1 0 0 0-.045.057a.06.06 0 0 0 .007.057l.118.122l-.015.058l-.189.155a.1.1 0 0 0-.037.062a.045.045 0 0 0 .018.05l.148.082v.055l-.172.185a.1.1 0 0 0-.028.065a.04.04 0 0 0 .028.041l.172.039v.051l-.148.208a.1.1 0 0 0-.018.065a.035.035 0 0 0 .037.03l.189-.006l.015.045l-.118.222a.07.07 0 0 0-.007.063a.04.04 0 0 0 .045.018l.2-.051l.024.037l-.094.247a.06.06 0 0 0 0 .058a.04.04 0 0 0 .051.006l.2-.094l.032.027l-.046.227a.05.05 0 0 0 .016.051a.05.05 0 0 0 .056-.007l.2-.133l.039.017l-.007.215a.04.04 0 0 0 .026.043a.07.07 0 0 0 .058-.02l.184-.166l.045.006l.033.2a.035.035 0 0 0 .036.032a.08.08 0 0 0 .057-.031l.164-.194l.049-.005l.071.168a.036.036 0 0 0 .044.02a.1.1 0 0 0 .055-.042l.138-.214l.05-.016l.107.135a.04.04 0 0 0 .05.008a.1.1 0 0 0 .05-.051l.107-.226l.05-.027l.138.1a.05.05 0 0 0 .055 0a.1.1 0 0 0 .044-.058l.071-.228l.049-.036l.164.054a.06.06 0 0 0 .057-.017a.1.1 0 0 0 .036-.063l.038-.239l.045-.044l.184.01a.08.08 0 0 0 .058-.029a.1.1 0 0 0 .026-.065l-.007-.209l.039-.05l.2-.035a.1.1 0 0 0 .056-.04a.1.1 0 0 0 .016-.065l-.046-.187l.032-.054l.2-.079a.1.1 0 0 0 .051-.049a.07.07 0 0 0 0-.062l-.084-.157l.024-.057l.2-.119a.1.1 0 0 0 .045-.057a.06.06 0 0 0-.006-.052l-.118-.122l.015-.058l.189-.155a.1.1 0 0 0 .037-.062a.045.045 0 0 0-.018-.05l-.148-.082v-.055l.172-.185a.1.1 0 0 0 .028-.065a.04.04 0 0 0-.019-.042m-1.153 1.988c-.066.013-.108-.037-.094-.112a.21.21 0 0 1 .145-.16c.066-.013.108.037.094.112a.21.21 0 0 1-.146.161Zm-.059-.39a.19.19 0 0 0-.132.146l-.061.325a2.3 2.3 0 0 1-.619.4a1.4 1.4 0 0 1-.632.123l-.061-.273c-.013-.057-.072-.072-.132-.033l-.252.164a1 1 0 0 1-.13-.106l1.226-.521q.022-.007.023-.026v-.455c0-.013-.009-.012-.023-.006l-.359.152v-.288l.388-.165a.16.16 0 0 1 .239.115c.015.057.049.249.072.3s.117.172.217.13l.611-.26l.022-.012a3 3 0 0 1-.139.23Zm-1.7 1.13c-.066.043-.131.026-.145-.037a.2.2 0 0 1 .094-.192c.066-.043.131-.026.145.037a.2.2 0 0 1-.09.192Zm-.465-1.779a.18.18 0 0 1-.062.2c-.062.055-.134.056-.161 0a.18.18 0 0 1 .062-.2c.065-.051.137-.053.165 0Zm-.143.416l.263-.234a.16.16 0 0 0 .057-.178l-.054-.105l.213-.09v1l-.429.182a1.4 1.4 0 0 1-.057-.407c.002-.057.005-.11.011-.168Zm1.152-.587v-.3l.506-.215c.026-.011.185-.047.185.077c0 .1-.122.192-.222.234l-.47.2Zm1.84-.516v.118l-.154.065a.04.04 0 0 0-.022.036v.074a.31.31 0 0 1-.176.3c-.078.043-.165.036-.176-.01c-.046-.253-.123-.278-.245-.327a1 1 0 0 0 .308-.578a.3.3 0 0 0-.235-.315a.57.57 0 0 0-.322.026l-1.588.675a2.7 2.7 0 0 1 .84-.853l.188.127c.042.029.113 0 .157-.063l.21-.3a.94.94 0 0 1 1.027.33l-.144.4c-.025.069 0 .128.057.13l.277.011q.002.075.002.154Zm-1.591-1.044c.049-.069.126-.1.172-.069s.045.113 0 .183s-.126.1-.172.069s-.045-.114.004-.184Zm1.427.6a.19.19 0 0 1 .161-.133c.062 0 .089.066.062.142a.19.19 0 0 1-.161.133c-.058-.006-.086-.07-.058-.146Z\" opacity=\".55\"\u002F>\u003Cuse width=\"45.72\" height=\"26.28\" href=\"#SVGh9hTDc8z\" transform=\"matrix(0 -.029 .022 .013 4.31 16.8)\"\u002F>\u003Cuse width=\"45.72\" height=\"26.28\" href=\"#SVGh9hTDc8z\" transform=\"matrix(0 -.029 .022 .013 8.88 18.6)\"\u002F>\u003Cuse width=\"45.72\" height=\"26.28\" href=\"#SVGh9hTDc8z\" transform=\"matrix(0 -.029 .022 .013 10.5 11.1)\"\u002F>\u003Cuse width=\"45.72\" height=\"26.28\" href=\"#SVGh9hTDc8z\" transform=\"matrix(0 -.029 .022 .013 15 13)\"\u002F>\u003Cuse width=\"45.72\" height=\"26.28\" href=\"#SVGh9hTDc8z\" transform=\"matrix(0 -.029 .02 -.012 16.8 21.5)\"\u002F>\u003Cuse width=\"45.72\" height=\"26.28\" href=\"#SVGh9hTDc8z\" transform=\"matrix(0 -.029 .02 -.012 21.4 19.7)\"\u002F>\u003Cuse width=\"45.72\" height=\"26.28\" href=\"#SVGh9hTDc8z\" transform=\"matrix(0 -.029 .02 -.012 23.1 11.2)\"\u002F>\u003Cuse width=\"45.72\" height=\"26.28\" href=\"#SVGh9hTDc8z\" transform=\"matrix(0 -.029 .02 -.012 27.7 9.32)\"\u002F>",{"left":4,"top":4,"width":20,"height":20,"rotate":4,"vFlip":6,"hFlip":6,"body":3167},"\u003Cdefs>\u003ClinearGradient id=\"SVGg4rxgcri\" x1=\"-133.268\" x2=\"-133.198\" y1=\"-202.91\" y2=\"-202.84\" gradientTransform=\"matrix(189.38 0 0 189.81 25243.061 38519.17)\" gradientUnits=\"userSpaceOnUse\">\u003Cstop offset=\"0\" stop-color=\"#387eb8\"\u002F>\u003Cstop offset=\"1\" stop-color=\"#366994\"\u002F>\u003C\u002FlinearGradient>\u003ClinearGradient id=\"SVG5ouQmWbV\" x1=\"-133.575\" x2=\"-133.495\" y1=\"-203.203\" y2=\"-203.133\" gradientTransform=\"matrix(189.38 0 0 189.81 25309.061 38583.42)\" gradientUnits=\"userSpaceOnUse\">\u003Cstop offset=\"0\" stop-color=\"#ffe052\"\u002F>\u003Cstop offset=\"1\" stop-color=\"#ffc331\"\u002F>\u003C\u002FlinearGradient>\u003C\u002Fdefs>\u003Cpath fill=\"url(#SVGg4rxgcri)\" d=\"M15.885 2.1c-7.1 0-6.651 3.07-6.651 3.07v3.19h6.752v1H6.545S2 8.8 2 16.005s4.013 6.912 4.013 6.912H8.33v-3.361s-.13-4.013 3.9-4.013h6.762s3.772.06 3.772-3.652V5.8s.572-3.712-6.842-3.712Zm-3.732 2.137a1.214 1.214 0 1 1-1.183 1.244v-.02a1.214 1.214 0 0 1 1.214-1.214Z\"\u002F>\u003Cpath fill=\"url(#SVG5ouQmWbV)\" d=\"M16.085 29.91c7.1 0 6.651-3.08 6.651-3.08v-3.18h-6.751v-1h9.47S30 23.158 30 15.995s-4.013-6.912-4.013-6.912H23.64V12.4s.13 4.013-3.9 4.013h-6.765S9.2 16.356 9.2 20.068V26.2s-.572 3.712 6.842 3.712h.04Zm3.732-2.147A1.214 1.214 0 1 1 21 26.519v.03a1.214 1.214 0 0 1-1.214 1.214z\"\u002F>",1792229000688]