1 line
24 KiB
XML
1 line
24 KiB
XML
<xml version="Mixly 3.0 rc0" board="Python ESP32-S3@元控自强" shown="block"><block type="procedures_defnoreturn" id="B_Uy:y|8/#::7JM?8vwh" x="-752" y="-561"><field name="NAME">显示我机</field><statement name="STACK"><block type="variables_global" id="Ll`m{k=],)s:+knk`i/;"><value name="VAR"><block type="variables_get" id="6@Dx,#wvbVMCi(_5XjEb"><field name="VAR">本机X坐标</field></block></value><next><block type="variables_set" id="5/z:936:Sy*aL!A67b,/"><field name="VAR">本机X坐标</field><value name="VALUE"><block type="math_constrain" id="*?rb!4m~WHB!xg1SSCai"><value name="VALUE"><shadow type="math_number" id="6.FGg^Vzbw]GbYF.t/qC"><field name="NUM">1000</field></shadow><block type="variables_get" id="*N9Z2Fo5b{jL?yKn!a08"><field name="VAR">本机X坐标</field></block></value><value name="LOW"><shadow type="math_number" id="j-0}U8hmoxQY]V{c9F:P"><field name="NUM">0</field></shadow></value><value name="HIGH"><shadow type="math_number" id="M:s=4,O5$4F+nmN,LXh;"><field name="NUM">100</field></shadow><block type="math_arithmetic" id="$xLIsXH:*|N}nV[zDzMz"><field name="OP">MINUS</field><value name="A"><shadow type="math_number" id="ndPK)1,0jA[BGY]Ed?nI"><field name="NUM">1</field></shadow><block type="variables_get" id="PHs${E}LnXfLL]f?dN6M"><field name="VAR">屏幕X最大值</field></block></value><value name="B"><shadow type="math_number" id="hR_7_EF.p^A:rUJgxZ+6"><field name="NUM">1</field></shadow></value></block></value></block></value><next><block type="onboard_tft_display_shape_rect" id="VS6.9Mz(B;X`c$hp80U;"><field name="shape">fill_rect</field><value name="x"><shadow type="math_number" id="#`x+DHaP_h{+la(lr[C,"><field name="NUM">0</field></shadow></value><value name="y"><shadow type="math_number" id="-qcH$fEw$J_*jiwlef1P"><field name="NUM">220</field></shadow></value><value name="w"><shadow type="math_number" id="eIGH6sv_?tjU8h1d`sMY"><field name="NUM">240</field></shadow></value><value name="h"><shadow type="math_number" id="+T~Be$,F9TqlYlftyk}^"><field name="NUM">20</field></shadow></value><value name="VAR"><shadow type="tuple_create_with_text_return" id="Bawr7vKmO`2W+=(4J|a*"><field name="TEXT">255,255,0</field></shadow><block type="display_color_seclet" id="F}mv/_wD,Wv}uhubnZ.q"><field name="COLOR">#000000</field></block></value><value name="boolean"><shadow type="logic_boolean" id="Q-MjQ:85EYkSABba,e|5"><field name="BOOL">FALSE</field></shadow></value><next><block type="onboard_tft_display_shape_rect" id=".33U{,vhua#A.*K.f66~"><field name="shape">fill_rect</field><value name="x"><shadow type="math_number" id="J:x86d]0`O`;U0?us5RO"><field name="NUM">20</field></shadow><block type="math_arithmetic" id="WM}=TsHaL^(Z0@Hmeasq"><field name="OP">MULTIPLY</field><value name="A"><shadow type="math_number" id="}exA{Xo8tz6#NLMoViwP"><field name="NUM">1</field></shadow><block type="math_arithmetic" id="K8VaseOkNV^cR-]h~WlF"><field name="OP">MINUS</field><value name="A"><shadow type="math_number" id="3Uk(rMuUGDX}v@#jlNn8"><field name="NUM">1</field></shadow><block type="variables_get" id="K#my/_sI7S#(::,08X=r"><field name="VAR">本机X坐标</field></block></value><value name="B"><shadow type="math_number" id="3!slq@Sh7CMUUsJ.0wSh"><field name="NUM">1</field></shadow></value></block></value><value name="B"><shadow type="math_number" id="WLG@~QA+H=ot*zwFGm@t"><field name="NUM">10</field></shadow></value></block></value><value name="y"><shadow type="math_number" id="GEZ0wCG1gxtfzp9GUq_b"><field name="NUM">230</field></shadow></value><value name="w"><shadow type="math_number" id="Bb.(*[$Z/kGt$$DaLF|Q"><field name="NUM">30</field></shadow></value><value name="h"><shadow type="math_number" id="(fyM7IT~sWZOH(WPC:ll"><field name="NUM">10</field></shadow></value><value name="VAR"><shadow type="tuple_create_with_text_return" id=")T#gIbc4ya8p.z}mvf)u"><field name="TEXT">255,255,0</field></shadow><block type="display_color_seclet" id="=9t;wz6te9}Ssh-u1zZY"><field name="COLOR">#ffffff</field></block></value><value name="boolean"><shadow type="logic_boolean" id="|Ii,,PF#1T-_=P6ZIOtt"><field name="BOOL">FALSE</field></shadow></value><next><block type="onboard_tft_display_shape_rect" id="7:cgq6AR1|}ZIkB:1Vf:"><field name="shape">fill_rect</field><value name="x"><shadow type="math_number" id="/R!w]RjKzFLa:56Xf08P"><field name="NUM">20</field></shadow><block type="math_arithmetic" id="IljVo^7$@,7qgvb+BC3+"><field name="OP">MULTIPLY</field><value name="A"><shadow type="math_number" id="AE:@7(btZvm{rxzSkQVy"><field name="NUM">1</field></shadow><block type="variables_get" id="5e]*N7NKDx0lx0Kos.Cf"><field name="VAR">本机X坐标</field></block></value><value name="B"><shadow type="math_number" id="|46DS9wsod.Kc4~naBS)"><field name="NUM">10</field></shadow></value></block></value><value name="y"><shadow type="math_number" id="y`4!^^CRbm23ybB#`k$U"><field name="NUM">220</field></shadow></value><value name="w"><shadow type="math_number" id="p1_|kv:1IqSL}yvRZs}d"><field name="NUM">10</field></shadow></value><value name="h"><shadow type="math_number" id="}+-b@BJKwWDh:ii).EM0"><field name="NUM">10</field></shadow></value><value name="VAR"><shadow type="tuple_create_with_text_return" id="$~M#agIlw{=Ne,Ta|Z5q"><field name="TEXT">255,255,0</field></shadow><block type="display_color_seclet" id="AFhFl[5e[}c?-?2XS_[t"><field name="COLOR">#ffffff</field></block></value><value name="boolean"><shadow type="logic_boolean" id="_vxCH|/+`Ibkn]aqq9A$"><field name="BOOL">TRUE</field></shadow></value><next><block type="esp32_onboard_music_pitch_with_time" id="I1L$,:-Q4dE}=n0tcaS0"><value name="pitch"><shadow type="pins_tone_notes" id="P*~f4k7yb|+p@O^j}T8p"><field name="PIN">294</field></shadow></value><value name="time"><shadow type="math_number" id="YzZgWsl86ks=No)~aZ=q"><field name="NUM">50</field></shadow></value></block></next></block></next></block></next></block></next></block></next></block></statement></block><block type="variables_set" id="p(YdrPuXJxE*;]cFhMdh" x="-1304" y="-411"><field name="VAR">屏幕X最大值</field><value name="VALUE"><block type="math_number" id="y77,;n@OB=8^~Ywj_n-X"><field name="NUM">23</field></block></value><next><block type="variables_set" id="MCB$/v!)4~rNx1:9:3=Q"><field name="VAR">屏幕Y最大值</field><value name="VALUE"><block type="math_number" id="Asg~A;E#XK4xaPHf#g!^"><field name="NUM">23</field></block></value><next><block type="variables_set" id="kjrU{FU[f}~Bn/d^)PAw"><field name="VAR">本机X坐标</field><value name="VALUE"><block type="math_number" id="r[klMpYN81X);;)|3,hj"><field name="NUM">0</field></block></value><next><block type="variables_set" id="!G6FpEX~:jDiH*@6T?NG"><field name="VAR">敌机X坐标</field><value name="VALUE"><block type="math_number" id="=l5X1#_bG|#ny[8`]PpM"><field name="NUM">0</field></block></value><next><block type="variables_set" id="a!,{RuOP#LtOPKeyb@PS"><field name="VAR">子弹X坐标</field><value name="VALUE"><block type="math_number" id="b!bQ.qt(w$`iiE=HTkSj"><field name="NUM">0</field></block></value><next><block type="procedures_callnoreturn" id="FZpo#lG`=Q@jffdUxL!@" inline="true"><mutation name="显示我机"></mutation><next><block type="controls_whileUntil" id="5i[^`$S*xYve3qNZcTHL"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="/cK)47d$T]tyKMdjtZi3"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="procedures_callnoreturn" id="I1B^lmfN,k_l+mDBa-7}"><mutation name="显示敌机"></mutation><next><block type="controls_if" id="Ka.,#xpaG?!N/($,XWrt"><value name="IF0"><block type="sensor_mixgo_button_was_pressed" id="A7D:gP7OIlE.@LWN~zhM"><value name="btn"><shadow type="pins_button" id="aGMJ|~DHKgT2_,hdk7d,"><field name="PIN">A1key</field></shadow></value></block></value><statement name="DO0"><block type="math_selfcalcu" id="/q2t)q|,0zq(t;~|ttTb"><field name="OP">MINUS</field><value name="A"><shadow type="variables_get" id="Xbf]k9Rbp@Axe*{GtJdW"><field name="VAR">本机X坐标</field></shadow></value><value name="B"><shadow type="math_number" id="p.|Q$-13J7~C#*!h],-J"><field name="NUM">1</field></shadow></value><next><block type="procedures_callnoreturn" id="91^L$M1v#bH~n-jnm}=t" inline="true"><mutation name="显示我机"></mutation></block></next></block></statement><next><block type="controls_if" id="x{R1pa[Ig0*uf+XDy:wb"><value name="IF0"><block type="sensor_mixgo_button_was_pressed" id="Wa@neh1rtw/Ji0/nRGTW"><value name="btn"><shadow type="pins_button" id="$YINC5/b~/Sj;D!0}UX2"><field name="PIN">B1key</field></shadow></value></block></value><statement name="DO0"><block type="math_selfcalcu" id="6:MlPevYbEZeHO+14z4)"><field name="OP">ADD</field><value name="A"><shadow type="variables_get" id="=*hvZtnr!U+XX:QpNK2m"><field name="VAR">本机X坐标</field></shadow></value><value name="B"><shadow type="math_number" id="BQHkgbjd_+w_pD4=6j;J"><field name="NUM">1</field></shadow></value><next><block type="procedures_callnoreturn" id="11]FN*aYbsRR(J3=PKdW" inline="true"><mutation name="显示我机"></mutation></block></next></block></statement><next><block type="controls_if" id="2d!yIU^9Y[fnbtAmnYY`"><value name="IF0"><block type="sensor_mixgo_button_was_pressed" id="(C00(Ydo,OO94kCsU#^x"><value name="btn"><shadow type="pins_button" id="qc)x:dqte)=RGrmk7/zv"><field name="PIN">B2key</field></shadow></value></block></value><statement name="DO0"><block type="procedures_callnoreturn" id="$YcYC!YAEu^;t?`MUeAt"><mutation name="发射子弹"></mutation></block></statement></block></next></block></next></block></next></block></statement></block></next></block></next></block></next></block></next></block></next></block></next></block><block type="procedures_defnoreturn" id=":[T]@;R}2y9RsJw.Ydrc" collapsed="true" x="-306" y="-256"><field name="NAME">发射子弹</field><statement name="STACK"><block type="variables_global" id="V:cMFA{qCAtarQRnsD(x"><value name="VAR"><block type="variables_get" id="]T0W`nxsSRhsfSfOj9Us"><field name="VAR">子弹X坐标</field></block></value><next><block type="variables_set" id="C9,mtYLC{dNyTuitvQq]"><field name="VAR">子弹X坐标</field><value name="VALUE"><block type="variables_get" id="NQz}1Ru_m/AnT*Gx`3{L"><field name="VAR">本机X坐标</field></block></value><next><block type="esp32_onboard_music_pitch_with_time" id="@^Un|:g@PQ;UJV{l6Zyf"><value name="pitch"><shadow type="pins_tone_notes" id="6xT}_fE2eA1s]3qgjUkf"><field name="PIN">262</field></shadow></value><value name="time"><shadow type="math_number" id="D0(rHVZGLn#orG,v^g9t"><field name="NUM">50</field></shadow></value><next><block type="controls_forEach" id="#58,f}-w/4@@`C/RqHIt"><value name="LIST"><shadow type="list_many_input" id="uC{L#_o)s7Ju6Z*]?|jF"><field name="CONTENT">0,1,2,3</field></shadow><block type="controls_range" id="*yy]}|VKu~?Q(H9|^O_}"><value name="FROM"><shadow type="math_number" id="WY6z,=${RR|2ZVfI2@|X"><field name="NUM">2</field></shadow><block type="math_arithmetic" id="+!)$3);t(=}YP`(.:8w["><field name="OP">MINUS</field><value name="A"><shadow type="math_number" id="|h0GAREfCm2mPxg=K9/f"><field name="NUM">1</field></shadow><block type="variables_get" id="qAy]gBJFn/{l=BJ}#moU"><field name="VAR">屏幕Y最大值</field></block></value><value name="B"><shadow type="math_number" id="=8]9:!/.o33.S,,^1H8:"><field name="NUM">2</field></shadow></value></block></value><value name="TO"><shadow type="math_number" id="K}2*?1h@ZuS}($kT^!_c"><field name="NUM">-2</field></shadow></value><value name="STEP"><shadow type="math_number" id="6f^ZqjCpo/117z;jsD`@"><field name="NUM">-1</field></shadow></value></block></value><value name="VAR"><shadow type="variables_get" id="EVy8F?46FZpbUcCYE*U]"><field name="VAR">子弹Y坐标</field></shadow></value><statement name="DO"><block type="onboard_tft_display_shape_rect" id="a`z3|I[AMaP@.4!i`S)V"><field name="shape">fill_rect</field><value name="x"><shadow type="math_number" id="@Pp1o[+9I5sbDSy-dENs"><field name="NUM">20</field></shadow><block type="math_arithmetic" id="t[:@utkx)1`*/UHAc#8R"><field name="OP">MULTIPLY</field><value name="A"><shadow type="math_number" id="MQOU[T~H|R[g+Vhl^c6k"><field name="NUM">1</field></shadow><block type="variables_get" id="lN^6Xj7QBXe[!Tg#A_Nv"><field name="VAR">子弹X坐标</field></block></value><value name="B"><shadow type="math_number" id=";.u_k.;x(oLJ9-aHR~J_"><field name="NUM">10</field></shadow></value></block></value><value name="y"><shadow type="math_number" id="idUS=ZHzDfddhNliSVvJ"><field name="NUM">230</field></shadow><block type="math_arithmetic" id="5)!5mK@#On)NNeqLA~or"><field name="OP">MULTIPLY</field><value name="A"><shadow type="math_number" id="Wy#?s:2YAhxjBTfgkIQ_"><field name="NUM">1</field></shadow><block type="variables_get" id=",I@nNsoV#,waYeJ(9#rC"><field name="VAR">子弹Y坐标</field></block></value><value name="B"><shadow type="math_number" id="++EIi!NH91oMlTGq3{ir"><field name="NUM">10</field></shadow></value></block></value><value name="w"><shadow type="math_number" id="NM;ecTyUS;NjBsZf8X$S"><field name="NUM">10</field></shadow></value><value name="h"><shadow type="math_number" id="R2b5*5*kuU8(8w{(U[yc"><field name="NUM">10</field></shadow></value><value name="VAR"><shadow type="tuple_create_with_text_return" id="4XELO!j7u1b.k+Os:N9$"><field name="TEXT">255,255,0</field></shadow><block type="display_color_seclet" id="iK1dp:vV$UMtx!d7)_hs"><field name="COLOR">#ffffff</field></block></value><value name="boolean"><shadow type="logic_boolean" id="]d,$4vHdhi]LnCbwSP/9"><field name="BOOL">TRUE</field></shadow></value><next><block type="onboard_tft_display_shape_rect" id=",$~HE)3X1*hPummRfHMr"><field name="shape">fill_rect</field><value name="x"><shadow type="math_number" id="su2BBnAY8|SRybIoMcjv"><field name="NUM">20</field></shadow><block type="math_arithmetic" id="XuCbI!3!VnQb-SDlT}a$"><field name="OP">MULTIPLY</field><value name="A"><shadow type="math_number" id="hh|[xXaeB?A[8hVj|DT;"><field name="NUM">1</field></shadow><block type="variables_get" id="*Z3fdn)IJvBX49Yo65z#"><field name="VAR">子弹X坐标</field></block></value><value name="B"><shadow type="math_number" id="wX-3]Gj5`_P(FFs/33yn"><field name="NUM">10</field></shadow></value></block></value><value name="y"><shadow type="math_number" id="GNYPM;Lg3{tR|cGz#y}}"><field name="NUM">230</field></shadow><block type="math_arithmetic" id="O~ehhK7#hs+pP1m6$2+@"><field name="OP">MULTIPLY</field><value name="A"><shadow type="math_number" id="8rI;,:YY9*t!r6WDBYtB"><field name="NUM">1</field></shadow><block type="variables_get" id="^0ifF!A;F(|M9el(.Bk1"><field name="VAR">子弹Y坐标</field></block></value><value name="B"><shadow type="math_number" id="vrVpGhQ0oTy_-SbvU9^0"><field name="NUM">10</field></shadow></value></block></value><value name="w"><shadow type="math_number" id="4o5d^?(#{r{n|pu3~x)b"><field name="NUM">10</field></shadow></value><value name="h"><shadow type="math_number" id="9NjgxZceq/[3.NbqUT7."><field name="NUM">10</field></shadow></value><value name="VAR"><shadow type="tuple_create_with_text_return" id="2N=#8as4pKaiEBg2Sg[3"><field name="TEXT">255,255,0</field></shadow><block type="display_color_seclet" id="1WYHT:;.LgPb#ghaJk+H"><field name="COLOR">#000000</field></block></value><value name="boolean"><shadow type="logic_boolean" id="U*uI-pp}1CbKo@-iB~}}"><field name="BOOL">FALSE</field></shadow></value></block></next></block></statement></block></next></block></next></block></next></block></statement></block><block type="procedures_defnoreturn" id="(q)Rah[pvH{LdXRs{@TV" inline="true" x="-773" y="-182"><field name="NAME">显示敌机</field><statement name="STACK"><block type="variables_global" id="OT29|2(:{`iApD5bmN~Y"><value name="VAR"><block type="variables_get" id=")VR/AI!J{gn=H+!tIJz|"><field name="VAR">敌机X坐标</field></block></value><next><block type="variables_set" id=":/2=4lHHUKd^zG#O|Xk5"><field name="VAR">敌机是否存在</field><value name="VALUE"><block type="logic_boolean" id="vVq3ivRyf^ER0M$DnPpU"><field name="BOOL">FALSE</field></block></value><next><block type="controls_forEach" id="EkGZw^TfnjRdCRNixKU["><value name="LIST"><shadow type="list_many_input" id="A8WM-82e^)pkhBbvOax3"><field name="CONTENT">0,1,2,3</field></shadow><block type="controls_range" id="4~?.7D98e(nk{s9/L`wH"><value name="FROM"><shadow type="math_number" id="Q_S{I]R0j4lXn6s^4?bf"><field name="NUM">0</field></shadow></value><value name="TO"><shadow type="math_number" id="3~uaGYxPhF|Py*$(8l_V"><field name="NUM">8</field></shadow><block type="variables_get" id="v|k7gC-=6J#B3KRhHD.R"><field name="VAR">屏幕X最大值</field></block></value><value name="STEP"><shadow type="math_number" id="/IZT1N{]prX;]xVjD??p"><field name="NUM">1</field></shadow></value></block></value><value name="VAR"><shadow type="variables_get" id="J/h-+lZ;?N8I.UX1jK*0"><field name="VAR">x</field></shadow></value><statement name="DO"><block type="controls_if" id="i}P,~,sz}B*/$D=?9@Sq"><value name="IF0"><block type="logic_compare" id="nl(9zJuvL[*j]$XymbTy"><field name="OP">EQ</field><value name="A"><block type="onboard_tft_get_pixel" id="cq~HK.i{KGd4xm@2xBm{"><value name="x"><shadow type="math_number" id="ywhF)jycgJFsK,5HNICs"><field name="NUM">0</field></shadow><block type="math_arithmetic" id=";)=DPL8;n4AjC.p9D7yA"><field name="OP">MULTIPLY</field><value name="A"><shadow type="math_number" id="/V-BpCR!4Dqk4+J~V.zz"><field name="NUM">1</field></shadow><block type="variables_get" id="@*8+H1RW[A`$(nDj!5)7"><field name="VAR">x</field></block></value><value name="B"><shadow type="math_number" id="UEC?u18bM(/.ofrSuv|0"><field name="NUM">10</field></shadow></value></block></value><value name="y"><shadow type="math_number" id="n~-`6DpXMaD2tMWO]YpJ"><field name="NUM">0</field></shadow></value></block></value><value name="B"><block type="display_color_seclet" id="Qdw.Uhdzdvx)[NhG+pcW"><field name="COLOR">#ffffff</field></block></value></block></value><statement name="DO0"><block type="variables_set" id="EdoDNiuR{_9RBphFzg[d"><field name="VAR">敌机是否存在</field><value name="VALUE"><block type="logic_boolean" id="{},y`b,iTfvWe=.=$Q}L"><field name="BOOL">TRUE</field></block></value><next><block type="controls_flow_statements" id="h4)Pb-y/fUFR:OypV42`"><field name="FLOW">BREAK</field></block></next></block></statement></block></statement><next><block type="controls_if" id="O:r1r3HmDyqOCu5VbJJD"><value name="IF0"><block type="logic_negate" id="KAqTR#WSetddy-KHA-^."><value name="BOOL"><block type="variables_get" id=")-86BZS7xztG1G_*`^`{"><field name="VAR">敌机是否存在</field></block></value></block></value><statement name="DO0"><block type="variables_set" id="/6Tj?Y7Zcy8n)Q4a_{nC"><field name="VAR">敌机X坐标</field><value name="VALUE"><block type="math_random" id="{}=bB,O9wgWw06EOMl-1"><field name="TYPE">int</field><value name="FROM"><shadow type="math_number" id="B(`J0GSF#CN=hlU/*2rg"><field name="NUM">0</field></shadow></value><value name="TO"><shadow type="math_number" id="r~n=+!=ASI+PV`BrlI1]"><field name="NUM">6</field></shadow><block type="variables_get" id="J/4[g*n$a.]uyAeP9!:u"><field name="VAR">屏幕X最大值</field></block></value></block></value><next><block type="onboard_tft_display_shape_rect" id="LTh+Jq8nZljp~A*|e~e["><field name="shape">fill_rect</field><value name="x"><shadow type="math_number" id="{;4EgTmzQ_$J5`;k70(N"><field name="NUM">20</field></shadow><block type="math_arithmetic" id=")ypNduzY+2-0JkDf$Rau"><field name="OP">MULTIPLY</field><value name="A"><shadow type="math_number" id="PcCt6]fYdP$U`$mB8IAq"><field name="NUM">1</field></shadow><block type="variables_get" id="4L3oo,U.v:v1^/A/I6T^"><field name="VAR">敌机X坐标</field></block></value><value name="B"><shadow type="math_number" id="rb7g_,z_0zgcGh-ZtjFi"><field name="NUM">10</field></shadow></value></block></value><value name="y"><shadow type="math_number" id="i}`QY1O`(td2]ZXfR7a."><field name="NUM">0</field></shadow></value><value name="w"><shadow type="math_number" id="IESSJAD-jH6K#UFwWW}F"><field name="NUM">10</field></shadow></value><value name="h"><shadow type="math_number" id=",iFu09r*[=/Jf$810$G$"><field name="NUM">10</field></shadow></value><value name="VAR"><shadow type="tuple_create_with_text_return" id="B~$OVED9##UaBh_X(plx"><field name="TEXT">255,255,0</field></shadow><block type="display_color_seclet" id="+;X6J.g0~$x4koS}t$y^"><field name="COLOR">#ffffff</field></block></value><value name="boolean"><shadow type="logic_boolean" id="}g+^A.2Uk+xk]G@F}^ms"><field name="BOOL">TRUE</field></shadow></value></block></next></block></statement></block></next></block></next></block></next></block></statement></block></xml><config>{"BurnSpeed":{"key":"921600","label":"921600"}}</config><code>ZnJvbSBtaXhnb19zYW50IGltcG9ydCBvbmJvYXJkX3RmdApmcm9tIG1peGdvX3NhbnQgaW1wb3J0IG9uYm9hcmRfbXVzaWMKaW1wb3J0IG1peGdvX3NhbnQKaW1wb3J0IHJhbmRvbQoKCmRlZiDmmL7npLrmiJHmnLooKToKICAgIGdsb2JhbCDmnKzmnLpY5Z2Q5qCHCiAgICDmnKzmnLpY5Z2Q5qCHID0gbWluKG1heCjmnKzmnLpY5Z2Q5qCHLCAwKSwg5bGP5bmVWOacgOWkp+WAvCAtIDEpCiAgICBvbmJvYXJkX3RmdC5maWxsX3JlY3QoMCwgMjIwLCAyNDAsIDIwLCAweDAsc3luYz1GYWxzZSkKICAgIG9uYm9hcmRfdGZ0LmZpbGxfcmVjdCgoKOacrOaculjlnZDmoIcgLSAxKSAqIDEwKSwgMjMwLCAzMCwgMTAsIDB4ZmZmZixzeW5jPUZhbHNlKQogICAgb25ib2FyZF90ZnQuZmlsbF9yZWN0KCjmnKzmnLpY5Z2Q5qCHICogMTApLCAyMjAsIDEwLCAxMCwgMHhmZmZmLHN5bmM9VHJ1ZSkKICAgIG9uYm9hcmRfbXVzaWMucGl0Y2hfdGltZSgyOTQsIDUwKQoKZGVmIOWPkeWwhOWtkOW8uSgpOgogICAgZ2xvYmFsIOWtkOW8uVjlnZDmoIcKICAgIOWtkOW8uVjlnZDmoIcgPSDmnKzmnLpY5Z2Q5qCHCiAgICBvbmJvYXJkX211c2ljLnBpdGNoX3RpbWUoMjYyLCA1MCkKICAgIGZvciDlrZDlvLlZ5Z2Q5qCHIGluIHJhbmdlKOWxj+W5lVnmnIDlpKflgLwgLSAyLCAtMiwgLTEpOgogICAgICAgIG9uYm9hcmRfdGZ0LmZpbGxfcmVjdCgo5a2Q5by5WOWdkOaghyAqIDEwKSwgKOWtkOW8uVnlnZDmoIcgKiAxMCksIDEwLCAxMCwgMHhmZmZmLHN5bmM9VHJ1ZSkKICAgICAgICBvbmJvYXJkX3RmdC5maWxsX3JlY3QoKOWtkOW8uVjlnZDmoIcgKiAxMCksICjlrZDlvLlZ5Z2Q5qCHICogMTApLCAxMCwgMTAsIDB4MCxzeW5jPUZhbHNlKQoKZGVmIOaYvuekuuaVjOacuigpOgogICAgZ2xvYmFsIOaVjOaculjlnZDmoIcKICAgIOaVjOacuuaYr+WQpuWtmOWcqCA9IEZhbHNlCiAgICBmb3IgeCBpbiByYW5nZSgwLCDlsY/luZVY5pyA5aSn5YC8LCAxKToKICAgICAgICBpZiBvbmJvYXJkX3RmdC5waXhlbChpbnQoKHggKiAxMCkpLCBpbnQoMCkpID09IDB4ZmZmZjoKICAgICAgICAgICAg5pWM5py65piv5ZCm5a2Y5ZyoID0gVHJ1ZQogICAgICAgICAgICBicmVhawogICAgaWYgbm90IOaVjOacuuaYr+WQpuWtmOWcqDoKICAgICAgICDmlYzmnLpY5Z2Q5qCHID0gcmFuZG9tLnJhbmRpbnQoMCwg5bGP5bmVWOacgOWkp+WAvCkKICAgICAgICBvbmJvYXJkX3RmdC5maWxsX3JlY3QoKOaVjOaculjlnZDmoIcgKiAxMCksIDAsIDEwLCAxMCwgMHhmZmZmLHN5bmM9VHJ1ZSkKCgoK5bGP5bmVWOacgOWkp+WAvCA9IDIzCuWxj+W5lVnmnIDlpKflgLwgPSAyMwrmnKzmnLpY5Z2Q5qCHID0gMArmlYzmnLpY5Z2Q5qCHID0gMArlrZDlvLlY5Z2Q5qCHID0gMArmmL7npLrmiJHmnLooKQp3aGlsZSBUcnVlOgogICAg5pi+56S65pWM5py6KCkKICAgIGlmIG1peGdvX3NhbnQuQTFrZXkud2FzX3ByZXNzZWQoKToKICAgICAgICDmnKzmnLpY5Z2Q5qCHIC09IDEKICAgICAgICDmmL7npLrmiJHmnLooKQogICAgaWYgbWl4Z29fc2FudC5CMWtleS53YXNfcHJlc3NlZCgpOgogICAgICAgIOacrOaculjlnZDmoIcgKz0gMQogICAgICAgIOaYvuekuuaIkeacuigpCiAgICBpZiBtaXhnb19zYW50LkIya2V5Lndhc19wcmVzc2VkKCk6CiAgICAgICAg5Y+R5bCE5a2Q5by5KCkK</code>jlfOTVZX0U2XzlDXzgwX0U1X0E0X0E3X0U1XzgwX0JDIC0gMSksIDApCiAgICAgICAgb25ib2FyZF9tYXRyaXguc2hvdygpCiAgICBvbmJvYXJkX21hdHJpeC5waXhlbChpbnQoX0U2XzlDX0FDX0U2XzlDX0JBWF9FNV85RF85MF9FNl9BMF84NyksIGludChfRTVfQjFfOEZfRTVfQjlfOTVZX0U2XzlDXzgwX0U1X0E0X0E3X0U1XzgwX0JDKSwgMSkKICAgIG9uYm9hcmRfbWF0cml4LnNob3coKQogICAgb25ib2FyZF9tYXRyaXgucGl4ZWwoaW50KF9FNl85Q19BQ19FNl85Q19CQVhfRTVfOURfOTBfRTZfQTBfODcgLSAxKSwgaW50KF9FNV9CMV84Rl9FNV9COV85NVlfRTZfOUNfODBfRTVfQTRfQTdfRTVfODBfQkMpLCAxKQogICAgb25ib2FyZF9tYXRyaXguc2hvdygpCiAgICBvbmJvYXJkX21hdHJpeC5waXhlbChpbnQoX0U2XzlDX0FDX0U2XzlDX0JBWF9FNV85RF85MF9FNl9BMF84NyArIDEpLCBpbnQoX0U1X0IxXzhGX0U1X0I5Xzk1WV9FNl85Q184MF9FNV9BNF9BN19FNV84MF9CQyksIDEpCiAgICBvbmJvYXJkX21hdHJpeC5zaG93KCkKICAgIG9uYm9hcmRfbWF0cml4LnBpeGVsKGludChfRTZfOUNfQUNfRTZfOUNfQkFYX0U1XzlEXzkwX0U2X0EwXzg3KSwgaW50KF9FNV9CMV84Rl9FNV9COV85NVlfRTZfOUNfODBfRTVfQTRfQTdfRTVfODBfQkMgLSAxKSwgMSkKICAgIG9uYm9hcmRfbWF0cml4LnNob3coKQogICAgb25ib2FyZF9tdXNpYy5waXRjaF90aW1lKDI5NCwgNTApCgoKCl9FNV9CMV84Rl9FNV9COV85NVhfRTZfOUNfODBfRTVfQTRfQTdfRTVfODBfQkMgPSAxMQpfRTVfQjFfOEZfRTVfQjlfOTVZX0U2XzlDXzgwX0U1X0E0X0E3X0U1XzgwX0JDID0gNwpfRTZfOUNfQUNfRTZfOUNfQkFYX0U1XzlEXzkwX0U2X0EwXzg3ID0gMQpfRTZfOTVfOENfRTZfOUNfQkFYX0U1XzlEXzkwX0U2X0EwXzg3ID0gMQpfRTVfQURfOTBfRTVfQkNfQjlYX0U1XzlEXzkwX0U2X0EwXzg3ID0gMQpfRTVfQkVfOTdfRTVfODhfODYgPSAwCl9FNl85OF9CRV9FN19BNF9CQV9FNl84OF85MV9FNl85Q19CQSgpCndoaWxlIFRydWU6CiAgICBfRTZfOThfQkVfRTdfQTRfQkFfRTZfOTVfOENfRTZfOUNfQkEoKQogICAgaWYgbWl4Z29fbWluaS5BMWtleS53YXNfcHJlc3NlZCgpOgogICAgICAgIF9FNl85Q19BQ19FNl85Q19CQVhfRTVfOURfOTBfRTZfQTBfODcgLT0gMQogICAgICAgIF9FNl85OF9CRV9FN19BNF9CQV9FNl84OF85MV9FNl85Q19CQSgpCiAgICBpZiBtaXhnb19taW5pLkIxa2V5Lndhc19wcmVzc2VkKCk6CiAgICAgICAgX0U2XzlDX0FDX0U2XzlDX0JBWF9FNV85RF85MF9FNl9BMF84NyArPSAxCiAgICAgICAgX0U2Xzk4X0JFX0U3X0E0X0JBX0U2Xzg4XzkxX0U2XzlDX0JBKCkKICAgIGlmIG1peGdvX21pbmkuQjJrZXkud2FzX3ByZXNzZWQoKToKICAgICAgICBfRTVfOEZfOTFfRTVfQjBfODRfRTVfQURfOTBfRTVfQkNfQjkoKQo=</code> |