<xml xmlns="https://developers.google.com/blockly/xml">
<variables>
<variable id="0dvp3:dj5bz%K/6-t#s+">face</variable>
<variable id="TC`ZX(-AgXb{8E~@6^u/">uvParams</variable>
<variable id="2^Q-N!%M(5QY*3,SjZjY">srf</variable>
<variable id="-?PFj;sqp]dunhz|[/PQ">ellipseMinor</variable>
<variable id=")D|z+SUVIRkTL.Wg(m]~">ellipseMajor</variable>
<variable id="#|0hz9A,rSrp.T]4,1Hk">ellipsesOnSurface</variable>
<variable id="Hc+aQ,@M,j{Qx2DhN*W:">curve1</variable>
<variable id="4td}#E)?F*lX^:2WOINn">i</variable>
<variable id="7*^v?Y;^3SV2-Q172p$h">curve2</variable>
<variable id="e/$DaRE5=XZ{x#TU~wUs">curve3</variable>
<variable id="3ZsSD-.`eXDI9gfdsbxI">face1</variable>
<variable id="85.A(S/.oO4yqw%tD^8|">face2</variable>
<variable id="Jb}OqCmeVh~H-cDIX%{e">uvParams1</variable>
<variable id="O2DS:5q7f[YJK*wE`T[P">uvParams2</variable>
<variable id="DKAISb%*M~+$/_,:ECDc">ellipsesOnSurface1</variable>
<variable id="6$-:{2?d3;2Ey92n.xr4">ellipsesOnSurface2</variable>
<variable id="6Uobshv).d$BLqg6z[/f">toSew</variable>
<variable id="APfT.`+4@$eBae(4%o(O">j</variable>
<variable id="m!J4oi0a0k5gLjuS2aU2">e1</variable>
<variable id="FGrDwhNZ]G{|YJ-Wwq5S">e2</variable>
<variable id="EW(,TM7|IXP0/Ba}#T9.">loft</variable>
</variables>
<block type="bitbybit.babylon.scene.activateCamera" id="X8iymOoyK9~n6H=)%4ht" x="-911" y="-174">
<value name="Camera">
<block type="bitbybit.babylon.camera.arcRotate.create" id="RH%XM+ow_lP`-RzJrWT9">
<value name="Alpha">
<block type="math_number" id="91dStGd{KX44keVy(2b#">
<field name="NUM">42</field>
</block>
</value>
<value name="Beta">
<block type="math_number" id="KRGZ{*0_x[.ItaJ$d+6q">
<field name="NUM">1.3</field>
</block>
</value>
<value name="Radius">
<block type="math_number" id="YJT?-y2nT|=qO)tEJV8(">
<field name="NUM">50</field>
</block>
</value>
<value name="Target">
<block type="bitbybit.point.pointXYZ" id="-,+o3+1urZkZ@8fii[b(">
<value name="X">
<block type="math_number" id="0U9f*QzBxBIE#[FjBt@P">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="Wk21Fn8BC*V59{WK-#Wl">
<field name="NUM">7</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="Z*iAC$|qp3YY2ANdPXN^">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="bitbybit.babylon.scene.drawDirectionalLightNoReturn" id="Nm~%j6VYLM4Z=GUXd3#!">
<value name="Direction">
<block type="bitbybit.point.pointXYZ" id="YzF?Hhhx11H+BUB%1;Mc">
<value name="X">
<block type="math_number" id="m%H)3NXjCZg=XSaXPKfX">
<field name="NUM">-100</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="DW^%T,M{3NQ$fp?UHLh.">
<field name="NUM">-50</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="HAcpBHbR/(fgOR+4~I=J">
<field name="NUM">100</field>
</block>
</value>
</block>
</value>
<value name="Intensity">
<block type="math_number" id="#|]KYHVOfR{Y}iR0i;J`">
<field name="NUM">0.5</field>
</block>
</value>
<value name="Diffuse">
<block type="colour_picker" id="lh)RQ)LPhtK(`#!:eym=">
<field name="COLOUR">#ffffff</field>
</block>
</value>
<value name="Specular">
<block type="colour_picker" id="Is/rX@VuX(V!C)SRm[g5">
<field name="COLOUR">#ffffff</field>
</block>
</value>
<value name="ShadowGeneratorMapSize">
<block type="math_number" id="9X_[BA!=fdpA=|CxMO[Y">
<field name="NUM">1024</field>
</block>
</value>
<value name="EnableShadows">
<block type="logic_boolean" id="+I-7c[xvi7OA3t^_7z@1">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="ShadowDarkness">
<block type="math_number" id="ynp8DBtwZZ}-^DAH[qTW">
<field name="NUM">0</field>
</block>
</value>
<next>
<block type="variables_set" id="{(9ZKNhx;i`F/=/HdbXv">
<field name="VAR" id="Hc+aQ,@M,j{Qx2DhN*W:">curve1</field>
<value name="VALUE">
<block type="bitbybit.occt.shapes.wire.interpolatePoints" id="f+wMy$*ZJOs~]L0_zpnb">
<value name="Points">
<block type="lists_create_with" id=",:^flO%|A@|XAK+cGqjk">
<mutation items="4">
</mutation>
<value name="ADD0">
<block type="bitbybit.point.pointXYZ" id="e0_V^RDqE!y;{6FC=}^s">
<value name="X">
<block type="math_number" id="r-Q~d?WU4gfT/3c~+NUg">
<field name="NUM">-10</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="AeB08!CEMD-B%(*at;KD">
<field name="NUM">0</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="iXT;*BR[W$U3p,[SI37l">
<field name="NUM">-10</field>
</block>
</value>
</block>
</value>
<value name="ADD1">
<block type="bitbybit.point.pointXYZ" id="LRudbD$CyXNbb0xg`N$V">
<value name="X">
<block type="math_number" id="17,#it,H142|o]4{EDw}">
<field name="NUM">10</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="3^:._.Y6ktKtKc{]MHi.">
<field name="NUM">0</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="K9aH}zcPn-2IG|,yBUBy">
<field name="NUM">-18</field>
</block>
</value>
</block>
</value>
<value name="ADD2">
<block type="bitbybit.point.pointXYZ" id="V5(LR;gtr1LI=fEp=C?Y">
<value name="X">
<block type="math_number" id="i[}PfPw_=Pl@`hLfpUa_">
<field name="NUM">10</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="0am8##S^CU2T5+6f+09;">
<field name="NUM">0</field>
</block>
</value>
<value name="Z">
<block type="math_number" id=",V9Jh%GIz%#L:gT!/be$">
<field name="NUM">10</field>
</block>
</value>
</block>
</value>
<value name="ADD3">
<block type="bitbybit.point.pointXYZ" id="Cg_A(EVmpba9e5^SlFY9">
<value name="X">
<block type="math_number" id="vc!8Y$@w;HoQi9Uy~mc%">
<field name="NUM">-10</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="br)fhU=1e6-raM653P?!">
<field name="NUM">0</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="|Hu9SL+oMBsu2{VelN]B">
<field name="NUM">10</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="Periodic">
<block type="logic_boolean" id="X#h@[Cl16:7=Q8n@tY+{">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="Tolerance">
<block type="math_number" id="l[:b+{SpgZuaZX!V4u@_">
<field name="NUM">1e-7</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="{t#D/_G{oyr~+(T_H1Qp">
<field name="VAR" id="7*^v?Y;^3SV2-Q172p$h">curve2</field>
<value name="VALUE">
<block type="bitbybit.occt.shapes.wire.interpolatePoints" id="8yqHp-|Z2okR7aZ[Acej">
<value name="Points">
<block type="lists_create_with" id="2gaDCjy}q^1r1PQ-M7UG">
<mutation items="4">
</mutation>
<value name="ADD0">
<block type="bitbybit.point.pointXYZ" id="?/*7xy/Zwfer2s.70dQa">
<value name="X">
<block type="math_number" id="Rqkq2isCFYdp=1OJ]u8-">
<field name="NUM">-18</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="(_y[W9T.PB|FgqZ%-oD/">
<field name="NUM">6</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="/7)|Ll#/T`hJL7$A,PC[">
<field name="NUM">-14</field>
</block>
</value>
</block>
</value>
<value name="ADD1">
<block type="bitbybit.point.pointXYZ" id="J`fieMeDfX5bG,hX6x+j">
<value name="X">
<block type="math_number" id="F67XzH9|jSe!gwn9luSW">
<field name="NUM">18</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="8VQDHILZ+BR+!6XtCG0=">
<field name="NUM">6</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="g^+*BTLW:iGu;:n(/.)z">
<field name="NUM">-22</field>
</block>
</value>
</block>
</value>
<value name="ADD2">
<block type="bitbybit.point.pointXYZ" id="yw}}$[0hw)7,=uvOJl$P">
<value name="X">
<block type="math_number" id="*BCU!*BF8`Nq-cd)Ro!0">
<field name="NUM">18</field>
</block>
</value>
<value name="Y">
<block type="math_number" id=".A4wDq`bjKmr`mQQOTTF">
<field name="NUM">6</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="vjPx_XS|eq/LODHA5zE!">
<field name="NUM">18</field>
</block>
</value>
</block>
</value>
<value name="ADD3">
<block type="bitbybit.point.pointXYZ" id="=4FEVjq0h4odhur?w_zx">
<value name="X">
<block type="math_number" id="KJxHN*rGQV;Mg`670k,h">
<field name="NUM">-18</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="z)z/981_RRUiiD_V}izs">
<field name="NUM">6</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="xC6Ee7Gj6FYg^t1?BlIV">
<field name="NUM">18</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="Periodic">
<block type="logic_boolean" id="z]rsGd!Ha9OVm~*Hu1fb">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="Tolerance">
<block type="math_number" id="@CYr^kXr{:t6|y-JS6b%">
<field name="NUM">1e-7</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id=".|z.PlNc:)4IVkPeHT)9">
<field name="VAR" id="e/$DaRE5=XZ{x#TU~wUs">curve3</field>
<value name="VALUE">
<block type="bitbybit.occt.shapes.wire.interpolatePoints" id="5Q[P=oUU|r9IU]A+OI$*">
<value name="Points">
<block type="lists_create_with" id="mfU]v]W/e0-(Um!)Rn`Z">
<mutation items="4">
</mutation>
<value name="ADD0">
<block type="bitbybit.point.pointXYZ" id="x3z0%Qmy/nWH;KU_-(.b">
<value name="X">
<block type="math_number" id="EfV.jD8JtT+QR;w#G[_v">
<field name="NUM">-10</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="Hxn7;)JR[.*ljQI!xoVp">
<field name="NUM">30</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="qtv(yZi$KwY~B/[GNBkN">
<field name="NUM">-10</field>
</block>
</value>
</block>
</value>
<value name="ADD1">
<block type="bitbybit.point.pointXYZ" id=".5WnLr?Wa*rRF%KJ[6?9">
<value name="X">
<block type="math_number" id="erjI{=6:A#c(~-wc8n^}">
<field name="NUM">10</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="x1o%K6Pv:%gD5XWQvYr#">
<field name="NUM">26</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="0INws!wpab^$@=Ed^gjh">
<field name="NUM">-18</field>
</block>
</value>
</block>
</value>
<value name="ADD2">
<block type="bitbybit.point.pointXYZ" id="X0uWq9h0^aF9OZRFs%-#">
<value name="X">
<block type="math_number" id="Y7{3=KK+=WH!*7RfjAS@">
<field name="NUM">10</field>
</block>
</value>
<value name="Y">
<block type="math_number" id=";e7i0rIobC~lBH`[J}2*">
<field name="NUM">16</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="d(gu;mdB{+P?eYQ5eo]b">
<field name="NUM">10</field>
</block>
</value>
</block>
</value>
<value name="ADD3">
<block type="bitbybit.point.pointXYZ" id="?P/#}D@U#I`=iGqU0@M%">
<value name="X">
<block type="math_number" id="[7SSj#^T*ei96K,?Y^!X">
<field name="NUM">-10</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="B3D(.F7l;5xrYz;3ac*A">
<field name="NUM">18</field>
</block>
</value>
<value name="Z">
<block type="math_number" id=".]LY,J%S3Pf_5!7RVK8a">
<field name="NUM">10</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="Periodic">
<block type="logic_boolean" id="JKK0S{iL8;pCi~rg_N*8">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="Tolerance">
<block type="math_number" id="08K_U9rFDzcBc}%*cMys">
<field name="NUM">1e-7</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="m}0}z@9js0|1+J=Pog3p">
<field name="VAR" id="3ZsSD-.`eXDI9gfdsbxI">face1</field>
<value name="VALUE">
<block type="bitbybit.occt.shapes.face.getFace" id="RDGiuF=dzOLjPr7j[0q~">
<value name="Shape">
<block type="bitbybit.occt.shapes.face.reversedFace" id=",*Sp}GXkfouYMM+6d?,X">
<value name="Shape">
<block type="bitbybit.occt.operations.loft" id="wb3Q1XK=1avd?nCoWM@e">
<value name="Shapes">
<block type="lists_create_with" id="Q9AqF)TdK}471F20(Kys">
<mutation items="3">
</mutation>
<value name="ADD0">
<block type="variables_get" id="ake%jO/3EHWyYQMta2?-">
<field name="VAR" id="Hc+aQ,@M,j{Qx2DhN*W:">curve1</field>
</block>
</value>
<value name="ADD1">
<block type="variables_get" id="EJm+h*$d)]lbTPg~wT$n">
<field name="VAR" id="7*^v?Y;^3SV2-Q172p$h">curve2</field>
</block>
</value>
<value name="ADD2">
<block type="variables_get" id="Qp)(cfl4*Kxc*HX#4Rwk">
<field name="VAR" id="e/$DaRE5=XZ{x#TU~wUs">curve3</field>
</block>
</value>
</block>
</value>
<value name="MakeSolid">
<block type="logic_boolean" id="i}*Lo7!b|M(|;GZvNm31">
<field name="BOOL">FALSE</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="Index">
<block type="math_number" id="rQRZJ.P;69(!_^y)L=Y/">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="97Sy6e45@X/oZiGm3[-M">
<field name="VAR" id="85.A(S/.oO4yqw%tD^8|">face2</field>
<value name="VALUE">
<block type="bitbybit.occt.shapes.face.getFace" id="dB;0OTc@[9a@G)7#d)#J">
<value name="Shape">
<block type="bitbybit.occt.operations.offset" id="*:)}Ewjd-zC^Njw8`6zU">
<value name="Shape">
<block type="variables_get" id="6DGdA?q22vc)A@c[2g60">
<field name="VAR" id="3ZsSD-.`eXDI9gfdsbxI">face1</field>
</block>
</value>
<value name="Distance">
<block type="math_number" id="i)sl+qKX?zVC/X;~3frg">
<field name="NUM">-0.5</field>
</block>
</value>
<value name="Tolerance">
<block type="math_number" id="WQj]#]@gKGZork?bk^52">
<field name="NUM">0.1</field>
</block>
</value>
</block>
</value>
<value name="Index">
<block type="math_number" id="0?sy/^d@)v;-s6ju`QnH">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<next>
<block type="bitbybit.draw.drawAnyAsyncNoReturn" id="}:HUBP)z{.a.Ay(G/!7J">
<value name="Entity">
<block type="bitbybit.occt.transforms.translate" id=")r.KP948J2BV/qVJp(XW">
<value name="Shape">
<block type="bitbybit.occt.transforms.scale" id="GWi?Q+Z#lus:KleJCNPT">
<value name="Shape">
<block type="bitbybit.occt.shapes.face.reversedFace" id="abKFh|~bkT|UwGiy6N%:">
<value name="Shape">
<block type="bitbybit.occt.shapes.face.createFaceFromWire" id="tnBKS$up)t!L2J~C6*SP">
<value name="Shape">
<block type="variables_get" id="xwm*3HL7v60o:;*P8_xt">
<field name="VAR" id="Hc+aQ,@M,j{Qx2DhN*W:">curve1</field>
</block>
</value>
<value name="Planar">
<block type="logic_boolean" id="jSh2:Hntv[Fy3CzdRs*@">
<field name="BOOL">TRUE</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="Factor">
<block type="math_number" id="wLzPGQrwWf*:8*.yAPw?">
<field name="NUM">4</field>
</block>
</value>
</block>
</value>
<value name="Translation">
<block type="bitbybit.point.pointXYZ" id="+YdV(t[}_u#ZmU|/Q?ae">
<value name="X">
<block type="math_number" id="*fiXvazx[Oki,MchVI_0">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="@HX+1tC].mg9}R@_]@Q,">
<field name="NUM">-0.4</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="O%2SED3Rn@S*y8;9c!(u">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="Options">
<block type="bitbybit.draw.optionsOcctShapeSimple" id="C!?]bYOFGL|,jhdIxNG#">
<value name="Precision">
<block type="math_number" id="3hM*zhRIb7t=$Cuu!Ygy">
<field name="NUM">0.05</field>
</block>
</value>
<value name="DrawFaces">
<block type="logic_boolean" id="NLBNZJ(KtA0^A%68/=TR">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="FaceColour">
<block type="colour_picker" id="tp?RwYNo]tzn2deS`RvY">
<field name="COLOUR">#6600cc</field>
</block>
</value>
<value name="DrawEdges">
<block type="logic_boolean" id="EwpHYXNb4,B:79[?ruh!">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="EdgeColour">
<block type="colour_picker" id="?R62:``@gp1U=Ba9F2Nl">
<field name="COLOUR">#bbbbff</field>
</block>
</value>
<value name="EdgeWidth">
<block type="math_number" id="O4paSQjh.b~YI:[|*q$v">
<field name="NUM">2</field>
</block>
</value>
</block>
</value>
<next>
<block type="base_time_async_context" id="3$45oKj+o(0tf|FOsF0l">
<statement name="Then">
<block type="variables_set" id="(BCHY3hYZ|WI5b?|KnGF">
<field name="VAR" id="Jb}OqCmeVh~H-cDIX%{e">uvParams1</field>
<value name="VALUE">
<block type="base_time_await_return" id="tYk.MFyw:$.RVQZjeEW)">
<value name="Promise">
<block type="procedures_callreturn" id="A%;yhiuPVG2AXAdT_b?d">
<mutation name="makeUvParams">
<arg name="face">
</arg>
</mutation>
<value name="ARG0">
<block type="variables_get" id="A]%pKmuwuR#D;.a4*-3p">
<field name="VAR" id="3ZsSD-.`eXDI9gfdsbxI">face1</field>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="N}ZXGB~;ow.]{?:d)XDM">
<field name="VAR" id="O2DS:5q7f[YJK*wE`T[P">uvParams2</field>
<value name="VALUE">
<block type="base_time_await_return" id="a7dz5W1F5@J0-=a[K()F">
<value name="Promise">
<block type="procedures_callreturn" id="VCi_P24c9hsKjx+)rKED">
<mutation name="makeUvParams">
<arg name="face">
</arg>
</mutation>
<value name="ARG0">
<block type="variables_get" id="!$yrdQ=/$s5(e(lH%(6$">
<field name="VAR" id="85.A(S/.oO4yqw%tD^8|">face2</field>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="mTN,`HfUA*M~6/pkO|4D">
<field name="VAR" id="DKAISb%*M~+$/_,:ECDc">ellipsesOnSurface1</field>
<value name="VALUE">
<block type="base_time_await_return" id="+Bgyh^LFn|*HR2Lu,hic">
<value name="Promise">
<block type="procedures_callreturn" id="egx6Wh$kLkS.LaQjwk_3">
<mutation name="ellipsesOnSurface">
<arg name="uvParams">
</arg>
<arg name="srf">
</arg>
<arg name="ellipseMinor">
</arg>
<arg name="ellipseMajor">
</arg>
</mutation>
<value name="ARG0">
<block type="variables_get" id="Hf`(]MO$!twV=Icmbjt:">
<field name="VAR" id="Jb}OqCmeVh~H-cDIX%{e">uvParams1</field>
</block>
</value>
<value name="ARG1">
<block type="bitbybit.occt.geom.surfaces.surfaceFromFace" id=",=dVi{P,Zy0je,NnP|-+">
<value name="Shape">
<block type="variables_get" id="#a~5]u]EfCfPq%pKQ0p^">
<field name="VAR" id="3ZsSD-.`eXDI9gfdsbxI">face1</field>
</block>
</value>
</block>
</value>
<value name="ARG2">
<block type="math_number" id=",~rqhJ:g^yo%~+tS:`~n">
<field name="NUM">0.02</field>
</block>
</value>
<value name="ARG3">
<block type="math_number" id="J73fz:2qEvYwx(G:%1Qr">
<field name="NUM">0.04</field>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="QtU#z!cz`chcz^w+TdPm">
<field name="VAR" id="6$-:{2?d3;2Ey92n.xr4">ellipsesOnSurface2</field>
<value name="VALUE">
<block type="base_time_await_return" id="t!EtPPP+uSV5.iTNY7?C">
<value name="Promise">
<block type="procedures_callreturn" id="FxdCpHKXe,pf}9]qZ`?p">
<mutation name="ellipsesOnSurface">
<arg name="uvParams">
</arg>
<arg name="srf">
</arg>
<arg name="ellipseMinor">
</arg>
<arg name="ellipseMajor">
</arg>
</mutation>
<value name="ARG0">
<block type="variables_get" id="zR?i`(J:.B}YsdU~q#5f">
<field name="VAR" id="O2DS:5q7f[YJK*wE`T[P">uvParams2</field>
</block>
</value>
<value name="ARG1">
<block type="bitbybit.occt.geom.surfaces.surfaceFromFace" id="RPy7Bux5B4kpl0I@tgg5">
<value name="Shape">
<block type="variables_get" id="I]xhwturSkmkG!bh1cJ3">
<field name="VAR" id="85.A(S/.oO4yqw%tD^8|">face2</field>
</block>
</value>
</block>
</value>
<value name="ARG2">
<block type="math_number" id="^0B34{d}[a5GefT0p%|{">
<field name="NUM">0.01</field>
</block>
</value>
<value name="ARG3">
<block type="math_number" id="6P,-_|Pcf?i0*5/VCAMz">
<field name="NUM">0.01</field>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="R1t+=kG}{ie4xNDhhg/c">
<field name="VAR" id="6Uobshv).d$BLqg6z[/f">toSew</field>
<value name="VALUE">
<block type="lists_create_with" id="Y?]J?8PEu_H:W?Y2Z}Or">
<mutation items="0">
</mutation>
</block>
</value>
<next>
<block type="controls_for" id=",,J#W@pUp|RL{Dmi:mR}">
<field name="VAR" id="APfT.`+4@$eBae(4%o(O">j</field>
<value name="FROM">
<block type="math_number" id="kBdk1*[_o?S?sTo:GrDK">
<field name="NUM">1</field>
</block>
</value>
<value name="TO">
<block type="lists_length" id="%oGUe]Vl/q`@+]OShH$c">
<value name="VALUE">
<block type="variables_get" id="|sNrqwr8GzQ3KB7BQ[+R">
<field name="VAR" id="DKAISb%*M~+$/_,:ECDc">ellipsesOnSurface1</field>
</block>
</value>
</block>
</value>
<value name="BY">
<block type="math_number" id="]8mupjBLaBtyzeS}/gFQ">
<field name="NUM">1</field>
</block>
</value>
<statement name="DO">
<block type="variables_set" id="9b4/W(pY*P6~/BdgsDdX">
<field name="VAR" id="m!J4oi0a0k5gLjuS2aU2">e1</field>
<value name="VALUE">
<block type="lists_getIndex" id="ZauN.m1R^C2,YziXrYLt">
<mutation statement="false" at="true">
</mutation>
<field name="MODE">GET</field>
<field name="WHERE">FROM_START</field>
<value name="VALUE">
<block type="variables_get" id="{)hs^coS(ocNLn:0-aFv">
<field name="VAR" id="DKAISb%*M~+$/_,:ECDc">ellipsesOnSurface1</field>
</block>
</value>
<value name="AT">
<block type="variables_get" id="l*M9`a3]GpigKdt~0+a1">
<field name="VAR" id="APfT.`+4@$eBae(4%o(O">j</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="8s`R?K!)@8ZHEgaVQ-M~">
<field name="VAR" id="FGrDwhNZ]G{|YJ-Wwq5S">e2</field>
<value name="VALUE">
<block type="lists_getIndex" id="2J02n_`m@GVoum#(ur)H">
<mutation statement="false" at="true">
</mutation>
<field name="MODE">GET</field>
<field name="WHERE">FROM_START</field>
<value name="VALUE">
<block type="variables_get" id="xk0nKlw$QHU+)L?qkjV$">
<field name="VAR" id="6$-:{2?d3;2Ey92n.xr4">ellipsesOnSurface2</field>
</block>
</value>
<value name="AT">
<block type="variables_get" id="9I5yzp,ndCz/r15XV8/`">
<field name="VAR" id="APfT.`+4@$eBae(4%o(O">j</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="Ne8K;=RFvC;jiC`Yh?Au">
<field name="VAR" id="EW(,TM7|IXP0/Ba}#T9.">loft</field>
<value name="VALUE">
<block type="bitbybit.occt.operations.loft" id="uaNP4_XvRHhSRys^76;_">
<value name="Shapes">
<block type="lists_create_with" id="}[h](/UU^l_Ho1x!A]mC">
<mutation items="2">
</mutation>
<value name="ADD0">
<block type="variables_get" id="6;)qkqR#{(,O*%;3*!EK">
<field name="VAR" id="m!J4oi0a0k5gLjuS2aU2">e1</field>
</block>
</value>
<value name="ADD1">
<block type="variables_get" id="RC^~6UCS7b:fD89eS_t]">
<field name="VAR" id="FGrDwhNZ]G{|YJ-Wwq5S">e2</field>
</block>
</value>
</block>
</value>
<value name="MakeSolid">
<block type="logic_boolean" id="=_?cU[++$4HGF`:A6Nu/">
<field name="BOOL">FALSE</field>
</block>
</value>
</block>
</value>
<next>
<block type="lists_setIndex" id="i3#W`zB8@i$WOOpvZb9^">
<mutation at="false">
</mutation>
<field name="MODE">INSERT</field>
<field name="WHERE">LAST</field>
<value name="LIST">
<block type="variables_get" id="?odelcd?b*S,kaC8+D_H">
<field name="VAR" id="6Uobshv).d$BLqg6z[/f">toSew</field>
</block>
</value>
<value name="TO">
<block type="variables_get" id="L(keG)|uedex*LgbU:%H">
<field name="VAR" id="EW(,TM7|IXP0/Ba}#T9.">loft</field>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
<next>
<block type="lists_setIndex" id="jkzI)587G*KvOOW~KPtg">
<mutation at="false">
</mutation>
<field name="MODE">INSERT</field>
<field name="WHERE">LAST</field>
<value name="LIST">
<block type="variables_get" id="5)fD?%#@pj9w{rY;)^HR">
<field name="VAR" id="6Uobshv).d$BLqg6z[/f">toSew</field>
</block>
</value>
<value name="TO">
<block type="bitbybit.occt.shapes.face.reversedFace" id="_JE@lg:TH@6-n.xbGYN7">
<value name="Shape">
<block type="bitbybit.occt.shapes.face.getFace" id="-QW]s);GJm2Hx+/kDndM">
<value name="Shape">
<block type="bitbybit.occt.operations.splitShapeWithShapes" id="JD!8nW~F]0s-Z(pP=+t-">
<value name="Shape">
<block type="variables_get" id=":v{x5X[muP+-Rl7ln3f]">
<field name="VAR" id="3ZsSD-.`eXDI9gfdsbxI">face1</field>
</block>
</value>
<value name="Shapes">
<block type="variables_get" id="x8D8LW,B7SE+Fpe%du%h">
<field name="VAR" id="DKAISb%*M~+$/_,:ECDc">ellipsesOnSurface1</field>
</block>
</value>
</block>
</value>
<value name="Index">
<block type="math_arithmetic" id="K#|!V12X:5c2KF/$}%^L">
<field name="OP">MINUS</field>
<value name="A">
<block type="lists_length" id="R85IM-GWE=Ai^w`yEG#x">
<value name="VALUE">
<block type="variables_get" id="s3#|q*Rs/Dc/uKQ*}-Q~">
<field name="VAR" id="DKAISb%*M~+$/_,:ECDc">ellipsesOnSurface1</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="math_number" id="ZyK7*yp-40HUQ9V4SP.G">
<field name="NUM">1</field>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="lists_setIndex" id="bb:Th$y`#@?f=`=R`SFT">
<mutation at="false">
</mutation>
<field name="MODE">INSERT</field>
<field name="WHERE">LAST</field>
<value name="LIST">
<block type="variables_get" id="~MK!GvAjp|wi}.wupcns">
<field name="VAR" id="6Uobshv).d$BLqg6z[/f">toSew</field>
</block>
</value>
<value name="TO">
<block type="bitbybit.occt.shapes.face.createFaceFromWire" id="#(2m|%H_m;DYFmIN|J[.">
<value name="Shape">
<block type="variables_get" id="Pl(Mt*6-IkXiX-`xcDA$">
<field name="VAR" id="Hc+aQ,@M,j{Qx2DhN*W:">curve1</field>
</block>
</value>
<value name="Planar">
<block type="logic_boolean" id="?%v}-FM*{}ld/_T)Qa!o">
<field name="BOOL">TRUE</field>
</block>
</value>
</block>
</value>
<next>
<block type="bitbybit.draw.drawAnyAsyncNoReturn" id="_/4BHHAR0|NDx/jiphbs">
<value name="Entity">
<block type="bitbybit.occt.operations.makeThickSolidSimple" id="#ru0BJeQV$.`$s{zS^PM">
<value name="Shape">
<block type="bitbybit.occt.fillets.filletEdges" id="N-L2n=/y#*4D5Pbse9q[">
<value name="Shape">
<block type="bitbybit.occt.shapes.shell.sewFaces" id="Uk40VNCvG-ol1mZ-4O(8">
<value name="Shapes">
<block type="variables_get" id="P:_PNdiJTDV@.1SX%(5x">
<field name="VAR" id="6Uobshv).d$BLqg6z[/f">toSew</field>
</block>
</value>
<value name="Tolerance">
<block type="math_number" id="$2O+2LyKURmb5E]R9C99">
<field name="NUM">0.001</field>
</block>
</value>
</block>
</value>
<value name="Radius">
<block type="math_number" id="/MMBpi(us7#1S,e{a)]L">
<field name="NUM">0.65</field>
</block>
</value>
</block>
</value>
<value name="Offset">
<block type="math_number" id="sEoIRG*:-+pSVLlNH8}T">
<field name="NUM">-0.2</field>
</block>
</value>
</block>
</value>
<value name="Options">
<block type="bitbybit.draw.optionsOcctShapeMaterial" id="`c:MG]n)x4NwT7~YZrzw">
<value name="Precision">
<block type="math_number" id="!4[3BQOBk84[6p4:/oVd">
<field name="NUM">0.1</field>
</block>
</value>
<value name="FaceMaterial">
<block type="bitbybit.babylon.material.pbrMetallicRoughness.create" id="BPQRGva8aPQS#nL(oZzj">
<value name="Name">
<block type="text" id="/4hY):vy^ZDF/-;wGQv~">
<field name="TEXT">MyMaterial</field>
</block>
</value>
<value name="BaseColor">
<block type="colour_picker" id="!LD2A|*zOpnJQE[{nz!?">
<field name="COLOUR">#cc33cc</field>
</block>
</value>
<value name="Metallic">
<block type="math_number" id="ryGQgSUOAxJ9.-UJn}x}">
<field name="NUM">1</field>
</block>
</value>
<value name="Roughness">
<block type="math_number" id="O(Ljk},esz0i7#C^WGzW">
<field name="NUM">0.2</field>
</block>
</value>
<value name="Alpha">
<block type="math_number" id="D:%fWp90u=uM_5NU/!pg">
<field name="NUM">1</field>
</block>
</value>
<value name="BackFaceCulling">
<block type="logic_boolean" id="?1Vq|!UxQ!8@`~Nh+jrv">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="ZOffset">
<block type="math_number" id="#=`GmYgriBI8,fUN@eu?">
<field name="NUM">2</field>
</block>
</value>
</block>
</value>
<value name="DrawEdges">
<block type="logic_boolean" id="7@qVc:h.[KtAHHNv;u:h">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="EdgeColour">
<block type="colour_picker" id="`n4#B?VvrA-GrUw?JGaR">
<field name="COLOUR">#ffffff</field>
</block>
</value>
<value name="EdgeWidth">
<block type="math_number" id="?r:AQkGQo@y~!CJZR_E@">
<field name="NUM">2</field>
</block>
</value>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
<block type="procedures_defreturn" id="U-ZYLrri*D+08,.93-Z)" x="549" y="114">
<mutation>
<arg name="face" varid="0dvp3:dj5bz%K/6-t#s+">
</arg>
</mutation>
<field name="NAME">makeUvParams</field>
<comment pinned="false" h="80" w="160">Describe this function...</comment>
<statement name="STACK">
<block type="variables_set" id="N;:rIBL-{t$/5u`PlgYW">
<field name="VAR" id="TC`ZX(-AgXb{8E~@6^u/">uvParams</field>
<value name="VALUE">
<block type="bitbybit.occt.shapes.face.subdivideToUV" id="{J(e+p(c[K~Di|``TrI9">
<value name="Shape">
<block type="variables_get" id="P|E/j~fY#2{pKscBO)~7">
<field name="VAR" id="0dvp3:dj5bz%K/6-t#s+">face</field>
</block>
</value>
<value name="NrDivisionsU">
<block type="math_number" id="cU?P#~wDiBNZ)2YD)WEL">
<field name="NUM">20</field>
</block>
</value>
<value name="NrDivisionsV">
<block type="math_number" id="|4qY-H!iudk7V|r:]N,+">
<field name="NUM">8</field>
</block>
</value>
<value name="ShiftHalfStepU">
<block type="logic_boolean" id="a3/7Xf4vyfoC;BobF?U-">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="RemoveStartEdgeU">
<block type="logic_boolean" id="TV:PlQS#^ZoAUY]nt1EV">
<field name="BOOL">FALSE</field>
</block>
</value>
<value name="RemoveEndEdgeU">
<block type="logic_boolean" id="Q]Pd5S[3It[ur;?i1x2a">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="ShiftHalfStepV">
<block type="logic_boolean" id="2I.*c*)kAaw[*w2Ky?a+">
<field name="BOOL">FALSE</field>
</block>
</value>
<value name="RemoveStartEdgeV">
<block type="logic_boolean" id="3^j.z#zaF_YVAQ^V%NVN">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="RemoveEndEdgeV">
<block type="logic_boolean" id="MYHk03,Tz(Se?O2nxCf[">
<field name="BOOL">TRUE</field>
</block>
</value>
</block>
</value>
</block>
</statement>
<value name="RETURN">
<block type="variables_get" id="1fu=4hb,I!WlU/oJ|!ef">
<field name="VAR" id="TC`ZX(-AgXb{8E~@6^u/">uvParams</field>
</block>
</value>
</block>
<block type="procedures_defreturn" id="nn1,}s5IR`5TwM:]a9~w" x="559" y="808">
<mutation>
<arg name="uvParams" varid="TC`ZX(-AgXb{8E~@6^u/">
</arg>
<arg name="srf" varid="2^Q-N!%M(5QY*3,SjZjY">
</arg>
<arg name="ellipseMinor" varid="-?PFj;sqp]dunhz|[/PQ">
</arg>
<arg name="ellipseMajor" varid=")D|z+SUVIRkTL.Wg(m]~">
</arg>
</mutation>
<field name="NAME">ellipsesOnSurface</field>
<comment pinned="false" h="80" w="160">Describe this function...</comment>
<statement name="STACK">
<block type="variables_set" id="%0HWfzU[dP@9YcsApSl~">
<field name="VAR" id="#|0hz9A,rSrp.T]4,1Hk">ellipsesOnSurface</field>
<value name="VALUE">
<block type="lists_create_with" id="jW%SV@V./kHxu!9Z)I7J">
<mutation items="0">
</mutation>
</block>
</value>
<next>
<block type="controls_forEach" id="-#RYa+#?a~;(ng0$U!g9">
<field name="VAR" id="4td}#E)?F*lX^:2WOINn">i</field>
<value name="LIST">
<block type="variables_get" id=":P5B=zk_b[,p2Fh|r}=[">
<field name="VAR" id="TC`ZX(-AgXb{8E~@6^u/">uvParams</field>
</block>
</value>
<statement name="DO">
<block type="lists_setIndex" id="q!zb1Q{hGFAAJDbS5Bx/">
<mutation at="false">
</mutation>
<field name="MODE">INSERT</field>
<field name="WHERE">LAST</field>
<value name="LIST">
<block type="variables_get" id="Tti($kT@~#=WW{FlYp1y">
<field name="VAR" id="#|0hz9A,rSrp.T]4,1Hk">ellipsesOnSurface</field>
</block>
</value>
<value name="TO">
<block type="bitbybit.occt.shapes.wire.combineEdgesAndWiresIntoAWire" id="!DqS]1}9Sss[=LjRBMot">
<value name="Shapes">
<block type="lists_create_with" id="b,rzV)(=v{vIB%pL=[zx">
<mutation items="1">
</mutation>
<value name="ADD0">
<block type="bitbybit.occt.shapes.edge.makeEdgeFromGeom2dCurveAndSurface" id="=`oNnzI9T}4,ASv{/;[q">
<value name="Curve">
<block type="bitbybit.occt.geom.curves.geom2dEllipse" id="B]l2{Q[S4=tMGQL{fS45">
<value name="Center">
<block type="variables_get" id="JCbe93HRt%QSKb%Olpk/">
<field name="VAR" id="4td}#E)?F*lX^:2WOINn">i</field>
</block>
</value>
<value name="Direction">
<block type="bitbybit.vector.vectorXY" id="-{E/pK6+g0c8bY~.WA~^">
<value name="X">
<block type="math_number" id="f=Ny_j6y-wC5l%bufL@4">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="7Ilu8s8RKl,bRTHM0#!;">
<field name="NUM">1</field>
</block>
</value>
</block>
</value>
<value name="RadiusMinor">
<block type="variables_get" id="V,JU?0yl#TRO~{:2eoki">
<field name="VAR" id="-?PFj;sqp]dunhz|[/PQ">ellipseMinor</field>
</block>
</value>
<value name="RadiusMajor">
<block type="variables_get" id="-WFWNf=0q(NJtGttzY8v">
<field name="VAR" id=")D|z+SUVIRkTL.Wg(m]~">ellipseMajor</field>
</block>
</value>
<value name="Sense">
<block type="logic_boolean" id="yCyI|(Q)rO-Bij#4uXf9">
<field name="BOOL">TRUE</field>
</block>
</value>
</block>
</value>
<value name="Surface">
<block type="variables_get" id="J=eyRwnTcQ[JI/Z8ffTg">
<field name="VAR" id="2^Q-N!%M(5QY*3,SjZjY">srf</field>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</statement>
</block>
</next>
</block>
</statement>
<value name="RETURN">
<block type="variables_get" id="cr!}`xNk^Y~NY:k+Y~#=">
<field name="VAR" id="#|0hz9A,rSrp.T]4,1Hk">ellipsesOnSurface</field>
</block>
</value>
</block>
</xml>