home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / World_Of_Computer_Software-02-387-Vol-3of3.iso / s / sd-27.zip / sd_calls.txt < prev    next >
Text File  |  1992-11-28  |  196KB  |  6,409 lines

  1. /* SD -- square dance caller's helper.
  2.  
  3.     Copyright (C) 1991, 1992  William B. Ackerman.
  4.  
  5.     This program is free software; you can redistribute it and/or modify
  6.     it under the terms of the GNU General Public License as published by
  7.     the Free Software Foundation; either version 1, or (at your option)
  8.     any later version.
  9.  
  10.     This program is distributed in the hope that it will be useful,
  11.     but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13.     GNU General Public License for more details.
  14.  
  15.     You should have received a copy of the GNU General Public License
  16.     along with this program; if not, write to the Free Software
  17.     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  18.  
  19.     The version of this file is as shown immediately below.  These
  20.     numbers get encoded into the database file and then displayed
  21.     at program startup, as the "db" part of the complete version.
  22. */
  23.  
  24. version 27 7
  25.  
  26. /* ****************** TEMPORARY HACK FOR TESTING
  27.  
  28. call "000 triangle circulate CW" mainstream
  29.    setup trngl trngl rotate
  30.       array [0 R2S L1S 0 L3W R3E]
  31.    setup ptrngl trngl rotate
  32.       preds "???"
  33.          if nexttrnglspot_is_tboned [L2W M2N R0S R4E L3S M4N]
  34.          if always                  [L2S M2N R0S R4S L3S M4N]
  35.  
  36. call "000 triangle circulate 180" mainstream
  37.    setup trngl trngl
  38.       array [0 R5N L4N 0 L0E R0W]
  39.    setup ptrngl trngl
  40.       preds "???"
  41.          if nexttrnglspot_is_tboned [L5E M5S R3N R1W L0N M1S]
  42.          if always                  [L5N M5S R3N R1N L0N M1S]
  43.  
  44. call "000 triangle circulate CCW" mainstream
  45.    setup trngl trngl rotate
  46.       array [0 R5N L4N 0 L0E R0W]
  47.    setup ptrngl trngl rotate
  48.       preds "???"
  49.          if nexttrnglspot_is_tboned [L5E M5S R3N R1W L0N M1S]
  50.          if always                  [L5N M5S R3N R1N L0N M1S]
  51.  
  52. ****************** TEMPORARY HACK */
  53.  
  54. /* The following calls are not really appropriate for general use. */
  55.  
  56. /*call "bounce back" c2
  57.    setup 1x4 2x2 restriction 2fl_only
  58.    array [0S 3S 1S 2S] */
  59.  
  60. /*call "@2slip @3out of a diamond" plus
  61.    seq ctrmaybeslip [inherit_left]
  62.    seq sglctrhinge []
  63.    seq cast_off_34 [] */
  64.  
  65. /*call "steer clear" c2
  66.    setup qtag 2x4
  67.       preds "Must be in quarter tag setup."
  68.          if q_tag_front [0 0 3N 1N 2S 1S 0N 2N]
  69.          if q_tag_back [0 0 3N 1N 0S 3S 0N 2N] */
  70.  
  71. /*call "rewind your neighbor" c3x
  72.    setup 1x4 2x2 restriction wave_only
  73.    array [L3E M3W R2W M2E] */
  74.  
  75. /*call "differentiate" c3x
  76.    setup 2x4 2x4 rotate
  77.       array [2E 4W 3W 5E 6W 0E 7E 1W] */
  78.  
  79. /*call "integrate" c3x
  80.    setup 4x2 2x4 rotate
  81.       array [1W 0 4E 0 0 7E 0 2W] */
  82.  
  83. /*call "turn up" c3x
  84.             visible_fractions
  85.    seq hinge []
  86.    seq circulate []
  87.    seq trade [] */
  88.  
  89. /*call "mini turn up" c3x
  90.             visible_fractions
  91.    seq hinge []
  92.    seq box_circ []
  93.    seq trade [] */
  94.  
  95. /*call "_ctrs scamper" dontshow tag ctrs_scamper
  96.             step_to_wave
  97.    seq armturn1_4 []
  98.    seq circulate [] */
  99.  
  100. /*call "_ends scamper" dontshow tag ends_scamper
  101.    seq div_move_along []
  102.    seq touch_1_4 [] */
  103.  
  104. /*call "scamper" c4*/
  105.       /* ***** make sure we do a "fudge to 3/4 tag" */
  106. /*   conc ctrs_scamper [] ends_scamper [conc_demand_columns conc_force_columns endscando] */
  107.  
  108. /*call "reverse the diamond" c4
  109.    conc tradethewave [] uturnback [] */
  110.  
  111. /*call "RCW" c4
  112.             step_to_wave
  113.    setup 2x4 2x4 rotate restriction wave_only
  114.    array [R5W L4W R3W L2W L7E R2W L5W R0E] */
  115.  
  116. /*call "like a reactionary" c4
  117.    setup 2x4 qtag
  118.    array [0N 3S 7S 1N 2N 5S 4S 6N] */
  119.  
  120. /* End of inappropriate calls -- real stuff starts here. */
  121.  
  122. call "(nothing)" c1 tag nullcall
  123.             dont_use_in_resolve
  124.    nulldefine
  125.  
  126. call "flip your lid" c3
  127.    setup qtag qtag
  128.       preds "Must be in quarter tag setup."
  129.          if q_tag_front [0 0 3S 4N 5N 4N 7S 5N]
  130.          if q_tag_back [0 0 3S 4N 6S 2S 7S 5N]
  131.  
  132. call "follow the children" c3x
  133.    setup 2x4 2x4 restriction 2fl_only
  134.    array [4W 5W 6E 7E 4E 5E 6W 7W]
  135.  
  136. call "outlet" c2
  137.             diamond_is_legal
  138.    setup qtag 2x4 restriction forbidden wave_only
  139.       preds "Must be in quarter tag setup."
  140.          if q_tag_front [0 0 AL2S CR4S ZM7N ZM4N CR1S AL7S]
  141.          if q_tag_back  [0 0 AL2S CR4S AL5S CR6S CR1S AL7S]
  142.             alternate_definition [diamond] c4
  143.    setup qtag 2x4 restriction forbidden wave_only
  144.       preds "Must be in diamonds."
  145.          if q_tag_front [0 0 AL2S CR4S 0 0 CR1S AL7S]
  146.          if q_tag_back  [0 0 AL2S CR4S 0 0 CR1S AL7S]
  147.    setup pqtag 2x4 restriction forbidden wave_only
  148.       preds "Must be in diamonds."
  149.          if q_tag_front [CR3E  0   0 0  0   AL4W 0 0]
  150.          if q_tag_back  [ 0   CR2W 0 0 AL5E  0   0 0]
  151.  
  152. call "jay walk" c1
  153.    setup qtag qtag
  154.       preds "Must be in quarter tag setup."
  155.          if q_tag_front [0 0 1N 1N 2N 6N 0N 0N]
  156.          if q_tag_back [0 0 1N 1N 3N 7N 0N 0N]
  157. call "ping-pong circulate" plus
  158.    setup qtag qtag
  159.       preds "Must be in quarter tag setup."
  160.          if q_tag_front [0 0 L0S L0S M3N M7N R1S R1S]
  161.          if q_tag_back [0 0 L0S L0S M2N M6N R1S R1S]
  162. call "fall into a column" c4a
  163.             fudge_to_q_tag
  164.    setup qtag 2x4 rotate
  165.       preds "Must be in quarter tag setup."
  166.          if q_tag_front [0 0 0W 2E 4W 3W 7W 5E]
  167.          if q_tag_back [0 0 0W 2E 2W 5W 7W 5E]
  168.  
  169. call "_ctrs stampede" dontshow tag ctrsstampede
  170.    setup 1x4 2x2 restriction forbidden wave_only
  171.       array [2E 0W 3W 1E]
  172.  
  173. call "_ends stampede" dontshow tag endsstampede
  174.    setup 2x2 2x2
  175.       array [R2W L3E 0 0]
  176.  
  177. call "stampede" c3a tag stampede
  178.             fudge_to_q_tag
  179.    conc ctrsstampede [] endsstampede [conc_demand_columns conc_force_columns endscando]
  180.  
  181. call "stroll and cycle" c4a
  182.             fudge_to_q_tag
  183.    setup qtag 2x4
  184.       preds "Must be in quarter line setup."
  185.          if q_line_front [0 0 0S 6S 6N 5N 3S 5S]
  186.          if q_line_back [0 0 0S 6S 3N 0N 3S 5S]
  187.  
  188. call "exchange the boxes" c3a
  189.    setup 2x4 2x4
  190.       array [M3N M2N M1N M0N R7N L6N R5N L4N]
  191.    setup 4x2 2x4
  192.       array [L3S M2S M1S M0S M7S M6S M5S R4S]
  193.  
  194. call "1/4 exchange the boxes" c3a
  195.    setup 2x4 2x4
  196.       array [R1S L0S R3S L2S M3N M1N M2N M0N]
  197.    setup 4x2 2x4
  198.       array [M1N M5N M3N R4S L3S M4N M2N M6N]
  199.  
  200. call "1/2 exchange the boxes" c3a
  201.    setup 2x4 2x4
  202.       array [M5S M7S M4S M6S L2S L0S R3S R1S]
  203.    setup 4x2 2x4
  204.       array [M5N M4N R4S M5S M2S L3S M3N M2N]
  205.  
  206. call "3/4 exchange the boxes" c3a
  207.    setup 2x4 2x4
  208.       array [L4N L6N R5N R7N M6S M7S M4S M5S]
  209.    setup 4x2 2x4
  210.       array [M4N L3S M5S M1S M6S M2S R4S M3N]
  211.  
  212. call "_centers maybe slip" dontshow tag ctrmaybeslip
  213.             dont_use_in_resolve left_means_mirror
  214.    conc slip [inherit_left or_anycall] nullcall []
  215.  
  216. call "_single bring us together" dontshow tag sgl_bring_together
  217.             dont_use_in_resolve
  218.    setup dmd 2x2
  219.       array [0 0 0 1S]
  220.    setup pmd 2x2
  221.       array [2W 0 0 0]
  222.  
  223. call "_3/4 circle single bring us together" dontshow tag 3_4_sgl_bring_together
  224.             dont_use_in_resolve
  225.    setup 4x1 2x2
  226.       array [2W 3W 0 0]
  227.  
  228. call "bring us together" c4a
  229.             sequence_starter single_is_inherited
  230.    seq sgl_bring_together [cpls_unless_single]
  231.  
  232. call "3/4 circle bring us together" c4a
  233.             single_is_inherited
  234.    seq 3_4_sgl_bring_together [cpls_unless_single]
  235.  
  236. call "exchange the diamonds" c2
  237.             fudge_to_q_tag
  238.    setup qtag qtag
  239.       array [0 0 6N 7N 0 0 2N 3N]
  240.    setup pqtag qtag
  241.       array [1S 0S 0 0 5S 4S 0 0]
  242.  
  243. call "3/4 exchange the diamonds" c2
  244.             fudge_to_q_tag
  245.    setup qtag qtag
  246.       array [0 0 5W 5E 0 0 4E 4W]
  247.    setup pqtag qtag
  248.       array [2W 3W 0 0 3E 2E 0 0]
  249.  
  250. call "exchange the triangles" c3a
  251.    setup bone6 bone6
  252.       array [M1N M0N L5N R4N L3N R2N]
  253.    setup pbone6 bone6
  254.       array [L1S L0S 0 R4S R3S 0]
  255.    setup short6 short6
  256.       array [5S 0 3S R2S 0 L0S]
  257.    setup pshort6 short6
  258.       array [R5N L4N 3N 2N R1N L0N]
  259.  
  260. call "convert the triangle" c4a
  261.    setup trngl trngl qualifier miniwaves
  262.       preds "???"
  263.          if trngl_pt_rh [0 R3E L3W 0 R1E R1E]
  264.          if always      [0 R3E L3W 0 L2W L2W]
  265.    setup ptrngl trngl qualifier miniwaves
  266.       array [M4N 0 0 M2N 0 0]
  267.  
  268. call "unwrap the diamonds" c2
  269.             fudge_to_q_tag take_right_hands
  270.    setup qtag 2x4
  271.       array [0 0 1W 4W 0 0 2E 7E]
  272.    setup pqtag 2x4
  273.       array [3N 5S 0 0 2S 4N 0 0]
  274.             alternate_definition [magic] c3
  275.    setup qtag 2x4
  276.       array [0 0 7E 2E 0 0 4W 1W]
  277.    setup pqtag 2x4
  278.       array [3N 5S 0 0 2S 4N 0 0]
  279.  
  280. call "unwrap the galaxy" c2
  281.             take_right_hands
  282.    setup galaxy 4x4
  283.       preds "???"
  284.          if next_galaxyspot_is_tboned [M3E  M3S 0 M15S M15W M14N 0 M13N]
  285.          if always [R14S M3S 0 M15S L13S M14N 0 M13N]
  286.  
  287. call "snap the diamond" c4
  288.             fudge_to_q_tag
  289.    setup qtag 2x4 rotate
  290.       array [0 0 1N 2S 0 0 5S 6N]
  291.    setup pqtag 2x4 rotate
  292.       array [3W 4E 0 0 7E 0W 0 0]
  293.  
  294. call "dodge @2circulate@3" c2
  295.    conc walkndodge [] circulate [or_anycall]
  296.  
  297. call "change lanes" c3x
  298.    crossconc dblcirc [conc_demand_lines] remake [conc_force_lines]
  299.  
  300. call "retain your lane" c3x
  301.    conc remake [] dblcirc [conc_demand_lines conc_force_lines]
  302.  
  303. call "collapse the setup" c4a
  304.             fudge_to_q_tag cross_is_inherited
  305.    conc stepnfold [inherit_cross] endsdetour [conc_demand_lines conc_force_columns endscando]
  306.  
  307. call "_ends strip" dontshow tag endsstrip
  308.    setup 2x2 1x4
  309.       array [L1N R3N R2S L0S]
  310.  
  311. call "strip the setup" c3a
  312.    reverse_checkpoint fanthetop [] endsstrip [conc_demand_lines endscando]
  313.  
  314. call "in style" c3
  315.             fudge_to_q_tag step_to_wave
  316.    setup qtag 2x4
  317.       array [2N 3N 0 5S 6N 7N 0N 0]
  318.  
  319. call "... and circle 1/4" c2 tag andcircle
  320.             fudge_to_q_tag
  321.    setup qtag qtag
  322.       preds "Impossible, apparently."
  323.          if q_tag_front [0 0 1S 3N 5N 4N 0S 7N]
  324.          if q_tag_back [0 0 1S 3N 2N 6N 0S 7N]
  325.          if q_line_front [0 0 1S 3N 5N 4N 0S 7N]
  326.          if q_line_back [0 0 1S 3N 2N 6N 0S 7N]
  327.  
  328. call "_something and circle 1/4" dontshow tag something_and_circle
  329.             fudge_to_q_tag step_to_wave
  330.    seq ctrsswingslip [or_anycall]
  331.    seq andcircle []
  332.  
  333. call "gravitate" c4
  334.             fudge_to_q_tag reverse_means_mirror
  335.    setup qtag 2x4
  336.       array [4W 5W 0 6W 0E 1E 3E 0]
  337.  
  338. call "@b the alter" c4
  339.             step_to_wave neednumber visible_fractions
  340.    seq armturnn_4 [allow_forced_mod]
  341.    seq ctrarmturnn_4_utb [allow_forced_mod]
  342.    seq ctrrotstar [allow_forced_mod repeat_n]
  343.    seq flipdiamond [allow_forced_mod]
  344.  
  345. call "@2swing @3and circle @a" c1
  346.             neednumber
  347.    seq something_and_circle [repeat_n]
  348.  
  349. call "_peel chain thru part 1" dontshow tag peelchain1
  350.             dont_use_in_resolve left_means_mirror
  351.             fudge_to_q_tag step_to_wave
  352.    setup qtag 1x8 qualifier right_wave
  353.       array [0N 5N 0 7S 0 0 6N 0]
  354.  
  355. call "_trail chain thru part 1" dontshow tag trailchain1
  356.             dont_use_in_resolve left_means_mirror
  357.             fudge_to_q_tag step_to_wave
  358.    setup qtag 1x8 qualifier right_wave
  359.       array [5N 0N 0 7S 0 0 6N 0]
  360.  
  361. call "peel chain thru" c3a
  362.             left_means_mirror
  363.    seq peelchain1 [inherit_left]
  364.    seq fanthetop [allow_forced_mod]
  365.  
  366. call "trail chain thru" c3x
  367.             left_means_mirror
  368.    seq trailchain1 [inherit_left]
  369.    seq fanthetop [allow_forced_mod]
  370.  
  371. call "create a diamond" c4a
  372.             left_means_mirror
  373.    setup 2x4 qtag
  374.       array [0E 1E 0 0 0 0 3N 6N]
  375.  
  376. call "triple trade" plus tag tripletrade
  377.    setup 1x8 1x8
  378.       array [M0N R3S R6S L1S M4N L7S L2S R5S]
  379.    setup ptpd ptpd
  380.       array [M0N 0 R6S 0 M4N 0 L2S 0]
  381.    setup pptpd ptpd
  382.       array [0 R3S 0 L1S 0 L7S 0 R5S]
  383.  
  384. call "turn four" c4a
  385.    setup 1x8 1x8 rotate restriction 2fl_only
  386.       array [R0N R1N R2N R3N L0S L1S L2S L3S]
  387.  
  388. call "diamond circulate" plus tag diamondcirc
  389.             fudge_to_q_tag
  390.    simple_funny
  391.    setup dmd dmd
  392.       array [R1E 0 L1W 0]
  393.    setup pmd dmd
  394.       array [0 R2E 0 L2W]
  395.  
  396. call "diamond single rotate 1/4" c4
  397.             fudge_to_q_tag reverse_means_mirror
  398.    setup dmd dmd
  399.       array [0 L0S 0 L2N]
  400.    setup pmd dmd
  401.       array [L3N 0 L1S 0]
  402.  
  403. call "triangle circulate" c1 tag trngle_circ
  404.    simple_funny
  405.    setup trngl trngl
  406.       array [0 R2S L1S 0 L3W R3E]
  407.    setup ptrngl trngl
  408.       preds "???"
  409.          if nexttrnglspot_is_tboned [L2W M2N R0S R4E L3S M4N]
  410.          if always                  [L2S M2N R0S R4S L3S M4N]
  411.  
  412. call "3X1 triangle circulate" c2             /* ***** for now, only allow outer columns filled, gotta fix this */
  413.    simple_funny
  414.    setup 3x4 3x4
  415.       array [R11S 0 0 L5S M3N R3S M4N 0 0 M10N M0N L0S]
  416.  
  417. call "reshape the triangle" c2
  418.    simple_funny
  419.    setup trngl trngl
  420.       array [0 R2E L1W 0 L3W R3E]
  421.    setup ptrngl trngl
  422.       preds "???"
  423.          if nexttrnglspot_is_tboned [L2S M2E R0S R4S L3S M4W]
  424.          if always                  [L2W M2E R0S R4E L3S M4W]
  425.  
  426. call "turn the star 1/4" dontshow tag turnstar1
  427.             dont_use_in_resolve is_star_call
  428.    setup star star
  429.       array [R1E 0 L1W 0]
  430.    setup dmd dmd rotate
  431.       array [R0N 0 L0S 0]
  432.    setup pmd dmd rotate
  433.       array [0 R1N 0 L1S]
  434.    setup 2x2 2x2
  435.       array [R1S L0S M1N M0N]
  436.  
  437. call "turn the star @b" a2 tag turnstarn
  438.             dont_use_in_resolve is_star_call neednumber
  439.    seq turnstar1 [repeat_n]
  440.  
  441. call "turn the star @b, interrupt first with @0" c1
  442.             dont_use_in_resolve is_star_call neednumber
  443.    seq nullcall [mandatory_anycall]
  444.    seq turnstar1 [repeat_n]
  445.  
  446. call "turn the star @b, interrupt after with @0" c1
  447.             dont_use_in_resolve is_star_call neednumber
  448.    seq turnstar1 [repeat_n]
  449.    seq nullcall [mandatory_anycall]
  450.  
  451. call "turn the star @b, interrupt after 1 with @0" c1
  452.             dont_use_in_resolve is_star_call neednumber
  453.    seq turnstar1 []
  454.    seq nullcall [mandatory_anycall]
  455.    seq turnstar1 [repeat_nm1]
  456.  
  457. call "turn the star 3/4, interrupt after 2 with @0" c1
  458.             dont_use_in_resolve is_star_call
  459.    seq turnstar2 []
  460.    seq nullcall [mandatory_anycall]
  461.    seq turnstar1 []
  462.  
  463. call "turn the star 1/2" dontshow tag turnstar2
  464.             dont_use_in_resolve is_star_call
  465.    setup star star
  466.       array [CR2S 0 AL0S 0]
  467.    setup dmd dmd
  468.       array [CR2S 0 AL0S 0]
  469.    setup pmd dmd
  470.       array [0 CR3S 0 AL1S]
  471.    setup 2x2 2x2
  472.       array [C2S A3S A0S C1S]
  473.  
  474. call "_turn the star 1/4 / ends trade" dontshow tag turnstar1_endstrade
  475.             dont_use_in_resolve 12_matrix_is_inherited
  476.    maybematrix_conc_star turnstar1 [allow_forced_mod] trade []
  477.  
  478. call "_turn the star @b / ends trade" dontshow tag turnstarn_endstrade
  479.             dont_use_in_resolve neednumber 12_matrix_is_inherited
  480.    maybematrix_conc_star turnstarn [allow_forced_mod] trade []
  481.  
  482. call "_turn the star 1/2 / ends trade" dontshow tag turnstar2_endstrade
  483.             dont_use_in_resolve 12_matrix_is_inherited
  484.    maybematrix_conc_star turnstar2 [allow_forced_mod] trade []
  485.  
  486. call "_diamond ends isolate" dontshow tag diamond_ends_isolate
  487.             dont_use_in_resolve
  488.    setup dmd 1x4 rotate
  489.       array [R0N 0 L0S 0]
  490.    setup pmd 1x4 rotate
  491.       array [0 M1W 0 M3W]
  492.  
  493. call "_centers slip/ends circulate" dontshow tag ctrsslipendscirc
  494.             dont_use_in_resolve
  495.    conc slip [] circulate [conc_demand_lines conc_force_lines]
  496.  
  497. call "alter the diamond" c4
  498.             visible_fractions
  499.    seq turnstar2 [allow_forced_mod]
  500.    seq flipdiamond [allow_forced_mod]
  501.    seq fanback []
  502.  
  503. call "alter the wave" c1
  504.             step_to_wave visible_fractions
  505.    seq swing []
  506.    seq fanback []
  507.    seq turnstar2 [allow_forced_mod]
  508.    seq flipdiamond [allow_forced_mod]
  509.  
  510. call "alter and circulate" c2
  511.             step_to_wave visible_fractions
  512.    seq swing []
  513.    seq fanback []
  514.    seq ctrsslipendscirc []
  515.    seq turnstar2 [allow_forced_mod]
  516.    seq flipdiamond [allow_forced_mod]
  517.  
  518. call "change the wave" c3
  519.             grand_is_inherited visible_fractions
  520.    seq trade []
  521.    seq maybegrandslip [inherit_grand]
  522.    seq ctrcrossrun [inherit_grand]
  523.    seq trade []
  524.  
  525. call "change the centers" c3
  526.             grand_is_inherited visible_fractions
  527.    seq trade []
  528.    seq maybegrandslip [inherit_grand]
  529.    seq ctrcrossrun [inherit_grand]
  530.    seq maybegrandslip [inherit_grand]
  531.  
  532. call "_and cross" dontshow tag and_cross
  533.             dont_use_in_resolve
  534.    simple_funny
  535.    setup 2x2 2x2
  536.       array [0N 1N 0N 1N]
  537.             alternate_definition [grand] c3a
  538.    setup 4x2 2x4
  539.       preds "Can't figure out whether to cross."
  540.          if columns_magic_tandem [0N 5N 2N 3N 4N 5N 2N 7N]
  541.          if columns_magic_antitandem [6N 5N 4N 3N 4N 3N 2N 1N]
  542.  
  543. call "@0 and cross" c4
  544.             dont_use_in_resolve
  545.    seq nullcall [mandatory_anycall]
  546.    seq and_cross []
  547.  
  548. call "nicely" c4
  549.             grand_is_inherited visible_fractions
  550.    seq hinge []
  551.    seq and_cross [inherit_grand]
  552.  
  553. call "connect the diamond" c4a
  554.    setup dmd 2x2
  555.       array [R1S 0 L0S 0]
  556.    setup pmd 2x2
  557.       array [0 M2E 0 M1W]
  558.  
  559. call "flip the diamond" plus tag flipdiamond
  560.             fudge_to_q_tag take_right_hands
  561.    setup dmd 1x4
  562.       array [CR1S 0 AL3S 0]
  563.    setup pmd 1x4
  564.       array [0 CR2E 0 AL2W]
  565.             alternate_definition [reverse] c3a
  566.    setup dmd 1x4 rotate
  567.       array [CR1N 0 AL1S 0]
  568.    setup pmd 1x4 rotate
  569.       array [0 AL0E 0 CR2E]
  570.             alternate_definition [interlocked] c1
  571.    setup qtag 2x4 rotate
  572.       array [0 0 AL0S AL7S 0 0 CR7N CR0N]
  573.    setup pqtag 2x4 rotate
  574.       array [CR6E CR1E 0 0 AL2E AL5E 0 0]
  575.             alternate_definition [magic] c2
  576.    setup qtag 2x4 rotate
  577.       array [0 0 AL7S CR7N 0 0 CR0N AL0S]
  578.    setup pqtag 2x4 rotate
  579.       array [CR1E CR6E 0 0 AL5E AL2E 0 0]
  580.             alternate_definition [magic interlocked] c3
  581.    setup qtag 2x4 rotate
  582.       array [0 0 AL7S AL0S 0 0 CR0N CR7N]
  583.    setup pqtag 2x4 rotate
  584.       array [CR1E CR6E 0 0 AL5E AL2E 0 0]
  585.  
  586. call "cut the diamond" a1 tag cutdiamond
  587.             fudge_to_q_tag take_right_hands
  588.    setup dmd 1x4
  589.       array [CR3S 0 AL1S 0]
  590.    setup pmd 1x4
  591.       array [0 CR2E 0 AL2W]
  592.             alternate_definition [reverse] c3a
  593.    setup dmd 1x4 rotate
  594.       array [CR1N 0 AL1S 0]
  595.    setup pmd 1x4 rotate
  596.       array [0 M2E 0 M0E]
  597.             alternate_definition [interlocked] c1
  598.    setup qtag 2x4 rotate
  599.       array [0 0 AL0S AL7S 0 0 CR7N CR0N]
  600.    setup pqtag 2x4 rotate
  601.       array [CR5E CR2E 0 0 AL1E AL6E 0 0]
  602.             alternate_definition [magic] c2
  603.    setup qtag 2x4 rotate
  604.       array [0 0 AL7S CR7N 0 0 CR0N AL0S]
  605.    setup pqtag 2x4 rotate
  606.       array [CR2E CR5E 0 0 AL6E AL1E 0 0]
  607.             alternate_definition [magic interlocked] c3
  608.    setup qtag 2x4 rotate
  609.       array [0 0 AL7S AL0S 0 0 CR0N CR7N]
  610.    setup pqtag 2x4 rotate
  611.       array [CR2E CR5E 0 0 AL6E AL1E 0 0]
  612.  
  613. call "drop in" c2 tag dropin
  614.    setup dmd 2x2
  615.       array [R0E 0 L1W 0]
  616.    setup pmd 2x2
  617.       array [0 M1N 0 M2N]
  618.  
  619. call "drop out" c2
  620.    setup dmd 2x2
  621.       array [L0W 0 R1E 0]
  622.    setup pmd 2x2
  623.       array [0 M1N 0 M2N]
  624.  
  625. call "_special drop in" dontshow tag spec_drop_in
  626.             dont_use_in_resolve take_right_hands
  627.    setup dmd 2x2
  628.       array [R0E 0 L1W 0]
  629.    setup pmd 2x2
  630.       array [0 M1N 0 M2N]
  631.             alternate_definition [12matrix] c3a
  632.    setup pshort6 2x3 rotate
  633.       array [0 R0N 0 0 L2S 0]
  634.    setup short6 2x3 rotate
  635.       array [M5W 0 M0W M1W 0 M4W]
  636.  
  637. call "switch" a2
  638.    setup 1x4 1x4
  639.       array [CR3S AL0S AL1S CR2S]
  640.             alternate_definition [grand] c3
  641.    setup 1x8 1x8
  642.       array [CR3S AL0S AL1S CR6S AL7S CR4S CR5S AL2S]
  643.  
  644. call "curl apart" c3x
  645.    setup 1x4 1x4
  646.       array [R3S L2N L1S R0N]
  647.  
  648. call "mix" a1
  649.             grand_is_inherited visible_fractions
  650.    seq ctrcrossrun [inherit_grand]
  651.    seq maybegrandslip [inherit_grand roll_transparent]
  652.  
  653. call "swing and mix" a2
  654.             grand_is_inherited visible_fractions
  655.    seq swing []
  656.    seq ctrcrossrun [inherit_grand]
  657.    seq maybegrandslip [inherit_grand]
  658.  
  659. call "_centers cross run" dontshow tag ctrcrossrun
  660.             dont_use_in_resolve
  661.    setup 1x4 1x4
  662.       array [ZM1N CR2S ZM3N AL0S]
  663.             alternate_definition [grand] c3a
  664.    setup 1x6 1x6
  665.       array [ZM1N CR5S AL0S ZM4N AL2S CR3S]
  666.    setup 1x8 1x8
  667.       array [ZM1N CR2S CR7S AL0S ZM5N AL6S AL3S CR4S]
  668.  
  669. call "trade the wave" plus tag tradethewave
  670.    setup 1x4 1x4 restriction forbidden wave_only
  671.       array [CR3S CR2S AL1S AL0S]
  672.  
  673. call "cross roll" c1 tag crossroll
  674.    setup 1x4 1x4
  675.       array [CR1S CR2S AL3S AL0S]
  676.             alternate_definition [grand] c3x
  677.    setup 1x6 1x6
  678.       array [CR1S CR5S AL0S AL4S AL2S CR3S]
  679.    setup 1x8 1x8
  680.       array [CR1S CR2S CR7S AL0S AL5S AL6S AL3S CR4S]
  681.  
  682. call "run wild" c3x
  683.             grand_is_inherited visible_fractions
  684.    seq crossroll [inherit_grand]
  685.    seq crossroll [inherit_grand]
  686.  
  687. call "slip" a2 tag slip
  688.    setup 1x4 1x4
  689.       array [ZM0N CR3S ZM2N AL1S]
  690.  
  691. call "_maybe grand slip" dontshow tag maybegrandslip
  692.    setup 1x4 1x4
  693.       array [ZM0N CR3S ZM2N AL1S]
  694.             alternate_definition [grand] c3a
  695.    setup 1x6 1x6
  696.       array [ZM0N CR2S AL1S ZM3N AL5S CR4S]
  697.    setup 1x8 1x8
  698.       array [ZM0N CR3S CR6S AL1S ZM4N AL7S AL2S CR5S]
  699.  
  700. call "slide" a2
  701.    setup 1x4 1x4
  702.       array [1N 0N 3N 2N]
  703.  
  704. /* This is the "follow your neighbor and spread" type. */
  705. call "spread" plus tag spread
  706.    setup 1x4 1x4
  707.       array [1N 0N 3N 2N]
  708.  
  709. /* This is the "heads star thru and spread" type. */
  710. call "... and spread" plus
  711.    setup 4x2 2x4 rotate
  712.       array [M6W M7W M0W 0 0 M3W M4W M5W]
  713.  
  714. call "swing" a2 tag swing
  715.    setup 1x4 1x4 restriction wave_only   /* See comment at spin chain the line. */
  716.       array [CR1S AL0S AL3S CR2S]
  717.  
  718. call "slither" a2
  719.    setup 1x4 1x4
  720.       array [0N 3N 2N 1N]
  721.  
  722. call "swing/slip" dontshow tag swingslip
  723.             dont_use_in_resolve step_to_wave
  724.    setup 1x4 1x4
  725.       array [L3N L0S R1N R2S]
  726.  
  727. call "centers swing/slip" dontshow tag ctrsswingslip
  728.             dont_use_in_resolve
  729.    conc swingslip [] nullcall []
  730.  
  731. call "_ends windmill left" dontshow tag endwindmill_l
  732.    setup 2x2 2x2
  733.       array [M2E L3E R0E M1E]
  734.  
  735. call "_ends windmill right" dontshow tag endwindmill_r
  736.    setup 2x2 2x2
  737.       array [R2W M3W M0W L1W]
  738.  
  739. call "_centers windmill" dontshow tag ctrwindmill
  740.    seq swingslip [or_anycall]
  741.    seq cast_off_34 []
  742.  
  743. call "@2spin @3the windmill, outsides left" a2
  744.    conc ctrwindmill [] endwindmill_l [conc_demand_columns conc_force_lines]
  745.  
  746. call "@2spin @3the windmill, outsides right" a2
  747.    conc ctrwindmill [] endwindmill_r [conc_demand_columns conc_force_lines]
  748.  
  749. call "@2spin @3the windmill, outsides as you are" a2
  750.    conc ctrwindmill [] dblcirc [conc_demand_lines conc_force_lines]
  751.  
  752. call "sock it to me" c2
  753.    setup 1x4 1x4
  754.       preds "Can't find an unambiguous socker."
  755.          if socker_is_left [R2S L0S L3S L1S]
  756.          if socker_is_right [0 R3S 0 R2S]
  757.  
  758. call "here comes the judge" c2
  759.    setup 1x4 1x4
  760.       preds "Can't find an unambiguous judge."
  761.          if judge_is_right [R1S R3S L0S R2S]
  762.          if judge_is_left [0 L0S 0 L1S]
  763.  
  764. call "partner tag" mainstream tag partnertag
  765.    setup 1x2 1x2
  766.       array [M1E M0W]
  767.  
  768. call "lockit" a1 tag lockit
  769.    setup 1x4 1x4 rotate
  770.       array [R0N R1N L0S L1S]
  771.    setup dmd dmd rotate
  772.       array [R0N 0 L0S 0]
  773.    setup pmd dmd rotate
  774.       array [0 R1N 0 L1S]
  775.             alternate_definition [cross] c3x
  776.    setup 1x4 1x4 rotate
  777.       array [R1N R0N L1S L0S]
  778.             alternate_definition [grand] c4
  779.    setup 1x8 3x4 rotate
  780.       array [R9N R8N R11N L8S L0S L1S L11S R1N]
  781.  
  782. call "_cross lockit" dontshow tag crosslockit
  783.    setup 1x4 1x4 rotate
  784.       array [R1N R0N L1S L0S]
  785.  
  786. call "fan the top" mainstream tag fanthetop
  787.             step_to_wave
  788.    setup 1x4 1x4 rotate
  789.       array [CR0N CR3S AL0S AL3N]
  790.    setup dmd dmd rotate
  791.       array [CR0N 0 AL0S 0]
  792.    setup pmd dmd rotate
  793.       array [0 CR3S 0 AL3N]
  794.             alternate_definition [grand] c3
  795.    setup 1x8 3x4 rotate
  796.       array [CR9N CR7S CR5S AL7N AL0S AL2N AL5N CR2S]
  797.  
  798. call "spin the top" mainstream tag spinthetop
  799.             step_to_wave grand_is_inherited visible_fractions
  800.    seq trade []
  801.    seq fanthetop [inherit_grand]
  802.  
  803. call "reverse the top" c3
  804.             step_to_wave visible_fractions
  805.    seq fanthetop []
  806.    seq trade []
  807.  
  808. call "cross the top" c4
  809.             step_to_wave
  810.    setup 1x4 1x4 rotate
  811.       array [0S 3N 0N 3S]
  812.  
  813. call "spin the yo-yo" c4
  814.             step_to_wave
  815.    seq armturn_34 []
  816.    seq fanthetop []
  817.  
  818. call "@6 shove off" c3a
  819.    partnermatrix use_selector stop_and_warn_on_tbone
  820.       [M18N 16 M18N 16 M14N 16 M14N 16 L14S 16 L14S 16 R18S 16 R18S 16]
  821.  
  822. call "@6 1/2 shove off" c3a
  823.    partnermatrix use_selector stop_and_warn_on_tbone
  824.       [M17N 16 M17N 16 M15N 16 M15N 16 L15W 16 L15W 16 R17E 16 R17E 16]
  825.  
  826. call "@6 fold" mainstream
  827.    partnermatrix use_selector stop_and_warn_on_tbone
  828.       [M16N 16 M16N 16 M16N 16 M16N 16 R18S 18 R18S 18 L14S 18 L14S 18]
  829.  
  830. call "@6 tow truck" c3
  831.    partnermatrix use_selector stop_and_warn_on_tbone
  832.       [M18N 16 M18N 16 M14N 16 M14N 16 M14N 16 0 0 M18N 16]
  833.  
  834. call "@6 1/2 tow truck" c3
  835.    partnermatrix use_selector stop_and_warn_on_tbone
  836.       [M17N 16 M17N 16 M15N 16 M15N 16 M15N 16 0 0 M17N 16]
  837.  
  838. call "@6 run the wheel" c3x
  839.    partnermatrix use_selector stop_and_warn_on_tbone
  840.       [R18W 16 R18W 16 L14E 16 L14E 16 R16W 14 R16W 14 L16E 14 L16E 14]
  841.  
  842. call "bridge the gap" c4a
  843.    partnermatrix tbone_is_ok
  844.       [M14N 18 M14N 18 L14S 18 L14S 18 0 0 0 0]
  845.  
  846. call "@6 right anchor 1/4" c3x
  847.    partnermatrix use_selector ignore_nonselectees must_face_same_way
  848.       [0 0 0 0 R18E 18 R18E 18 R16E 16 R16E 16]
  849.  
  850. call "@6 left anchor 1/4" c3x
  851.    partnermatrix use_selector ignore_nonselectees must_face_same_way
  852.       [0 0 0 0 L16W 16 L16W 16 L14W 18 L14W 18]
  853.  
  854. call "@6 right anchor 1/2" c3x
  855.    partnermatrix use_selector ignore_nonselectees must_face_same_way
  856.       [0 0 0 0 R20S 16 R20S 16 R16S 16 R16S 16]
  857.  
  858. call "@6 left anchor 1/2" c3x
  859.    partnermatrix use_selector ignore_nonselectees must_face_same_way
  860.       [0 0 0 0 L16S 16 L16S 16 L12S 16 L12S 16]
  861.  
  862. call "@6 right anchor 3/4" c3x
  863.    partnermatrix use_selector ignore_nonselectees must_face_same_way
  864.       [0 0 0 0 R18W 14 R18W 14 R16W 16 R16W 16]
  865.  
  866. call "@6 left anchor 3/4" c3x
  867.    partnermatrix use_selector ignore_nonselectees must_face_same_way
  868.       [0 0 0 0 L16E 16 L16E 16 L14E 14 L14E 14]
  869.  
  870. call "@6 quarter right" mainstream
  871.             dont_use_in_resolve
  872.    matrix [R16E 16 R16E 16]
  873.  
  874. call "@6 quarter left" mainstream
  875.             dont_use_in_resolve
  876.    matrix [L16W 16 L16W 16]
  877.  
  878. call "@6 U-turn back" mainstream tag some_utb
  879.             dont_use_in_resolve
  880.    matrix [16S 16 16S 16]
  881.  
  882. call "@6 press ahead" mainstream
  883.             dont_use_in_resolve
  884.    matrix [M16N 18 M16N 18]
  885.  
  886. call "@6 press right" mainstream
  887.             dont_use_in_resolve
  888.    matrix [M18N 18 M18N 18]
  889.  
  890. call "@6 press left" mainstream
  891.             dont_use_in_resolve
  892.    matrix [M14N 18 M14N 18]
  893.  
  894. call "@6 1/2 press ahead" mainstream
  895.             dont_use_in_resolve
  896.    matrix [M16N 17 M16N 17]
  897.  
  898. call "@6 truck" c2
  899.             dont_use_in_resolve
  900.    matrix [M14N 16 M18N 16]
  901.  
  902. call "@6 1/2 truck" c2
  903.             dont_use_in_resolve
  904.    matrix [M15N 16 M17N 16]
  905.  
  906. call "@6 reverse truck" c2
  907.             dont_use_in_resolve
  908.    matrix [M18N 16 M14N 16]
  909.  
  910. call "@6 1/2 reverse truck" c2
  911.             dont_use_in_resolve
  912.    matrix [M17N 16 M15N 16]
  913.  
  914. call "@6 E.R.A." c4
  915.             dont_use_in_resolve
  916.    matrix [M16N 14 M16N 18]
  917.  
  918. call "@6 1/2 E.R.A." c4
  919.             dont_use_in_resolve
  920.    matrix [M16N 15 M16N 17]
  921.  
  922. call "@6 M.C.P." c4
  923.             dont_use_in_resolve
  924.    matrix [M16N 18 M16N 14]
  925.  
  926. call "@6 1/2 M.C.P." c4
  927.             dont_use_in_resolve
  928.    matrix [M16N 17 M16N 15]
  929.  
  930. call "@6 leap frog" c4
  931.             dont_use_in_resolve
  932.    matrix [M16N 20 M16N 20]
  933.  
  934. call "@6 right loop 1" c2
  935.             dont_use_in_resolve
  936.    matrix [R20S 16 R20S 16]
  937.  
  938. call "@6 right loop 2" c2
  939.             dont_use_in_resolve
  940.    matrix [R22S 16 R22S 16]
  941.  
  942. call "@6 right loop 3" c2
  943.             dont_use_in_resolve
  944.    matrix [R24S 16 R24S 16]
  945.  
  946. call "@6 left loop 1" c2
  947.             dont_use_in_resolve
  948.    matrix [L12S 16 L12S 16]
  949.  
  950. call "@6 left loop 2" c2
  951.             dont_use_in_resolve
  952.    matrix [L10S 16 L10S 16]
  953.  
  954. call "@6 left loop 3" c2
  955.             dont_use_in_resolve
  956.    matrix [L8S 16 L8S 16]
  957.  
  958. call "@6 curve right" c3x
  959.             dont_use_in_resolve
  960.    matrix [R18E 18 R18E 18]
  961.  
  962. call "@6 curve left" c3x
  963.             dont_use_in_resolve
  964.    matrix [L14W 18 L14W 18]
  965.  
  966. call "@6 roll" plus
  967.             dont_use_in_resolve
  968.    rolldefine
  969.  
  970. call "roll" plus tag roll
  971.             dont_use_in_resolve
  972.    rolldefine
  973.  
  974. call "_everyone roll" dontshow tag everyoneroll
  975.             dont_use_in_resolve
  976.    setup 1x1 1x1
  977.       preds "Person can't roll."
  978.          if roll_is_cw [R0E]
  979.          if roll_is_ccw [L0W]
  980.  
  981. call "hinge" mainstream tag hinge
  982.             left_means_mirror
  983.    setup 1x2 1x2 rotate
  984.       preds "???"
  985.          if 1x2_beau_or_miniwave [CR0N AL0S]
  986.          if always [0 AL1S]
  987.  
  988. call "shazam" c2
  989.    setup 1x2 1x2 rotate
  990.       array [CR0S AL0N]
  991.  
  992. call "snake" c3x
  993.    setup 1x2 1x2 rotate
  994.       array [C1N A1S]
  995.  
  996. call "arm turn 1/4" dontshow tag armturn1_4
  997.             12_16_matrix_means_split
  998.    setup 1x2 1x2 rotate restriction forbidden wave_only
  999.       array [CR0N AL0S]
  1000.  
  1001. call "arm turn 3/4" dontshow tag armturn_34
  1002.             12_16_matrix_means_split
  1003.    setup 1x2 1x2 rotate restriction forbidden wave_only
  1004.       array [CR1S AL1N]
  1005.  
  1006. call "arm turn @b" dontshow tag armturnn_4
  1007.             dont_use_in_resolve neednumber 12_matrix_is_inherited
  1008.    seq armturn1_4 [inherit_12_matrix repeat_n]
  1009.  
  1010. call "_centers arm turn @b / ends turn back" dontshow tag ctrarmturnn_4_utb
  1011.             dont_use_in_resolve neednumber
  1012.    singleconc armturnn_4 [] uturnback []
  1013.  
  1014. call "cast off 1/4" mainstream
  1015.             parallel_conc_end
  1016.    setup 1x2 1x2 rotate
  1017.       preds "Need to be in miniwave or line of 4."
  1018.          if lines_miniwave [R0N L0S]
  1019.    setup 1x4 2x2
  1020.       preds "?"
  1021.          if lines_miniwave [CR0E AL0W AL1W CR1E]
  1022.          if lines_couple   [AL3W AL0W CR2E CR1E]
  1023.          if always         [0    AL0W 0    CR1E]
  1024.    setup 1x6 2x3
  1025.       preds "?"
  1026.          if lines_miniwave [CR0E AL0W CR1E AL2W CR2E AL1W]
  1027.          if lines_couple   [AL5W AL0W 0    CR3E CR2E 0]
  1028.          if always         [0    AL0W 0    0    CR2E 0]
  1029.  
  1030. call "_cast off 1/4 and roll" dontshow tag cast_1_4_roll
  1031.             parallel_conc_end
  1032.    setup 1x2 1x2 rotate
  1033.       preds "Need to be in miniwave or line of 4."
  1034.          if lines_miniwave [CR0E AL0E]
  1035.    setup 1x4 2x2
  1036.       preds "?"
  1037.          if lines_miniwave [CR0S AL0S AL1S CR1S]
  1038.          if lines_couple   [AL3S AL0S CR2S CR1S]
  1039.          if always         [0    AL0S 0    CR1S]
  1040.  
  1041. call "cast off 1/2" mainstream tag cast_off_12
  1042.    setup 1x2 1x2
  1043.       preds "Need to be in miniwave or line of 4."
  1044.          if lines_miniwave [CR1S AL0S]
  1045.    setup 1x4 1x4
  1046.       preds "?"
  1047.          if lines_miniwave [CR1S AL0S AL3S CR2S]
  1048.          if lines_couple   [AL1S AL0S CR3S CR2S]
  1049.          if always         [0    AL0S 0    CR2S]
  1050.  
  1051. call "cast off 3/4" mainstream tag cast_off_34
  1052.             parallel_conc_end
  1053.    setup 1x2 1x2 rotate
  1054.       preds "Need to be in miniwave or line of 4."
  1055.          if lines_miniwave [CR1S AL1N]
  1056.    setup 1x4 2x2
  1057.       preds "?"
  1058.          if lines_miniwave [CR3W AL3E AL2E CR2W]
  1059.          if lines_couple   [AL0E AL3E CR1W CR2W]
  1060.          if always         [0    AL3E 0    CR2W]
  1061.    setup 1x6 2x3
  1062.       preds "?"
  1063.          if lines_miniwave [CR5W AL5E CR4W AL3E CR3W AL4E]
  1064.          if lines_couple   [AL0E AL5E 0    CR2W CR3W 0]
  1065.          if always         [0    AL5E 0    0    CR3W 0]
  1066.  
  1067. call "_hinge and then trade" dontshow tag hinge_then_trade
  1068.             dont_use_in_resolve left_means_mirror
  1069.    seq hinge [inherit_left]
  1070.    seq trade []
  1071.  
  1072. call "_revert" dontshow tag revert
  1073.             dont_use_in_resolve
  1074.    setup 1x2 1x2 rotate
  1075.       preds "Need to be in miniwave or line of 4."
  1076.          if lines_miniwave [R1S L1N]
  1077.  
  1078. call "revert the @0" c3
  1079.             is_tag_call
  1080.    seq nullcall [mandatory_anycall must_be_tag_call]
  1081.    seq revert []
  1082.  
  1083. call "_reflect" dontshow tag reflect
  1084.             dont_use_in_resolve
  1085.    setup 2x2 2x2
  1086.       array [R1E L0W L1W R0E]
  1087.  
  1088. call "reflected @0" c4
  1089.             is_tag_call
  1090.    seq nullcall [mandatory_anycall must_be_tag_call]
  1091.    seq reflect []
  1092.  
  1093. call "patch the @6" c3a
  1094.    /* Selector identities *do not* get re-evaluated between parts of a sequential
  1095.       call, which makes this work.  Compare wave the <anyone>. */
  1096.    seq hinge [allow_forced_mod]
  1097.    seq some_utb []
  1098.  
  1099. call "tap the @6" c4a
  1100.             visible_fractions
  1101.    seq passthru []
  1102.    seq some_utb []
  1103.    seq boxctrrot []
  1104.    seq roll []
  1105.  
  1106. call "@6 bypass" c4a
  1107.    /* By giving a 2x2 def'n, we allow roll, since they know which way
  1108.       to turn back.  Also, this allows T-bone boxes. */
  1109.    setup 2x2 2x2
  1110.       preds "Can't tell who is designated."
  1111.          if select [0 0 M1N M0N]
  1112.          if unselect [0 0 L1S R0S]
  1113.    setup 2x1 1x2
  1114.       preds "Can't tell who is designated."
  1115.          if select [1N 0]
  1116.          if unselect [1S 0]
  1117.  
  1118. call "_the_wave" dontshow tag the_wave
  1119.             dont_use_in_resolve
  1120.    setup 2x4 2x4 rotate restriction wave_only
  1121.       array [7W 7W 0W 0W 1W 1W 6W 6W]
  1122.  
  1123. call "@0 the wave" c3
  1124.             dont_use_in_resolve
  1125.    seq the_wave []
  1126.    seq nullcall [mandatory_anycall]
  1127.  
  1128. call "trade" mainstream tag trade
  1129.             12_16_matrix_means_split
  1130.    setup 1x2 1x2
  1131.       array [CR1S AL0S]
  1132.  
  1133. call "_trade & roll" dontshow tag trade_and_roll
  1134.    setup 1x2 1x2
  1135.       array [CR1W AL0E]
  1136.  
  1137. call "U-turn back" mainstream tag uturnback
  1138.    setup 1x1 1x1
  1139.       array [0S]
  1140.  
  1141. call "@gquarter @eright@f" mainstream tag quarter_right
  1142.             left_means_mirror
  1143.    setup 1x1 1x1
  1144.       array [CR0E]
  1145.  
  1146. call "roll away" mainstream
  1147.    setup 1x2 1x2 restriction forbidden couples_only
  1148.       array [ZM1N AL0N]
  1149.  
  1150. call "8 roll away with a half sashay" c4
  1151.    setup 1x2 1x2 restriction wave_only
  1152.       array [CR1N AL0N]
  1153.  
  1154. call "put centers in" mainstream tag centersin
  1155.    setup 4x2 2x4 rotate
  1156.       array [7W 0 1W 0W 3W 2W 0 4W]
  1157.    setup 2x4 2x4 rotate
  1158.       array [7W 0 0 0W 3W 0 0 4W]
  1159.  
  1160. call "put centers out" c3x
  1161.    setup 4x2 2x4 rotate
  1162.       array [6W 0 0W 1W 2W 3W 0 5W]
  1163.    setup 2x4 2x4 rotate
  1164.       array [6W 0 0 1W 2W 0 0 5W]
  1165.  
  1166. call "pass thru" mainstream tag passthru
  1167.             rear_back_from_r_wave
  1168.    setup 2x1 1x2
  1169.       array [M1N 0]
  1170.    /* We put in this next definition to allow it from T-boned boxes
  1171.       (which would otherwise get the "People are not working with each other
  1172.       in a consistent way" error).  The restriction will make it give a
  1173.       "do your part" warning when used in this way. */
  1174.    setup 2x2 2x2 restriction not_tboned
  1175.       array [0 0 ZM1N ZM0N]
  1176.  
  1177. call "touch" mainstream tag touch
  1178.             /* The "rear back" property is required for square thru, etc. */
  1179.             rear_back_from_r_wave left_means_mirror
  1180.    setup 2x1 1x2 rotate
  1181.       array [0W 0]
  1182.  
  1183. call "touch 1/4" dontshow tag touch_1_4
  1184.             rear_back_from_r_wave left_means_mirror
  1185.    setup 2x1 1x2
  1186.       array [CR1E 0]
  1187.  
  1188. call "touch 3/4" dontshow tag touch_3_4
  1189.             rear_back_from_r_wave left_means_mirror
  1190.    setup 2x1 1x2
  1191.       array [CR0W 0]
  1192.  
  1193. call "touch @b" mainstream
  1194.             rear_back_from_r_wave neednumber left_means_mirror
  1195.    seq touch [inherit_left]
  1196.    seq armturn1_4 [repeat_n]
  1197.  
  1198. call "_leftable touch" dontshow tag lft_touch
  1199.             left_means_mirror
  1200.    setup 2x1 1x2 rotate
  1201.       array [0W 0]
  1202.  
  1203. call "_leftable touch 1/4" dontshow tag lft_touch_1_4
  1204.             left_means_mirror
  1205.    setup 2x1 1x2
  1206.       array [CR1E 0]
  1207.  
  1208. call "_leftable touch 1/2" dontshow tag lft_touch_1_2
  1209.             left_means_mirror
  1210.    setup 2x1 1x2 rotate
  1211.       array [CR1E 0]
  1212.  
  1213. call "_leftable touch 3/4" dontshow tag lft_touch_3_4
  1214.             left_means_mirror
  1215.    setup 2x1 1x2
  1216.       array [CR0W 0]
  1217.  
  1218. call "_leftable touch @b" dontshow tag lft_touch_n_4
  1219.             dont_use_in_resolve neednumber left_means_mirror
  1220.    seq lft_touch [inherit_left]
  1221.    seq armturn1_4 [repeat_n]
  1222.  
  1223. call "_face and maybe touch" dontshow tag facenmaybetouch
  1224.    seq quarterin []
  1225.    seq touch [or_anycall]
  1226.  
  1227. call "_hinge and U-turn away" dontshow tag hingnturnaway
  1228.    setup 1x2 1x2 rotate
  1229.       preds "???"
  1230.          if 1x2_beau_or_miniwave [L0S R0N]
  1231.          if always [0 L1N]
  1232.  
  1233. call "soft @2touch@3" c3x
  1234.    singlecrossconc facenmaybetouch [] hingnturnaway []
  1235.  
  1236. call "box the gnat" mainstream      /* This leaves people in a miniwave. */
  1237.             rear_back_from_r_wave   /* This is a problematical call. */
  1238.    setup 2x1 1x2 rotate             /* No flames, please. */
  1239.       array [1E 0]
  1240.  
  1241. call "single circle to a wave" plus
  1242.             reverse_means_mirror
  1243.    setup 2x1 1x2 rotate
  1244.       array [CR1E 0]
  1245.  
  1246. call "circle to a 2-faced line" c3x
  1247.             reverse_means_mirror
  1248.    setup 2x2 1x4
  1249.       array [0 0 C3S C2S]
  1250.  
  1251. call "single circle to a line" c4
  1252.             reverse_means_mirror
  1253.    setup 2x1 1x2 rotate
  1254.       preds "Unknown sex."
  1255.          if boyp [R1E 0]
  1256.          if girlp [R1W 0]
  1257.  
  1258. call "pitch right" c3
  1259.    setup 2x1 1x2
  1260.       array [R1E R0W]
  1261. call "pitch" c3
  1262.    setup 2x1 1x2
  1263.       array [1N R0W]
  1264. call "left pitch" c3
  1265.    setup 2x1 1x2
  1266.       array [1N L0E]
  1267. call "pitch left" c3
  1268.    setup 2x1 1x2
  1269.       array [L1W R0W]
  1270. call "left pitch right" c3
  1271.    setup 2x1 1x2
  1272.       array [R1E L0E]
  1273. call "left pitch left" c3
  1274.    setup 2x1 1x2
  1275.       array [L1W L0E]
  1276. call "pitch in" c3
  1277.    setup 2x2 2x2
  1278.       array [R3W R2W L1W R0E]
  1279. call "left pitch in" c3
  1280.    setup 2x2 2x2
  1281.       array [L3E L2E L1W R0E]
  1282. call "left pitch out" c3
  1283.    setup 2x2 2x2
  1284.       array [L3E L2E R1E L0W]
  1285. call "pitch out" c3
  1286.    setup 2x2 2x2
  1287.       array [R3W R2W R1E L0W]
  1288.  
  1289. call "@gleads roll @eright@f to a wave" a1 tag leadsrollright
  1290.             left_means_mirror
  1291.    setup 2x1 1x2 rotate
  1292.       array [M0W R1E]
  1293.  
  1294. call "@gleads @e@f latch on" c3a
  1295.             left_means_mirror visible_fractions
  1296.    seq leadsrollright [inherit_left]
  1297.    seq hinge []
  1298.  
  1299. call "slide thru" mainstream tag slidethru
  1300.             rear_back_from_r_wave
  1301.    setup 2x1 1x2
  1302.       preds "Unknown sex."
  1303.          if boyp [R1E 0]
  1304.          if girlp [L1W 0]
  1305.  
  1306. call "half breed thru" a1
  1307.             rear_back_from_r_wave
  1308.    setup 2x2 2x2
  1309.       preds "Unknown sex."
  1310.          if boyp [0 0 L1S L1S]
  1311.          if girlp [0 0 L0S R0S]
  1312.  
  1313. call "cross breed thru" c3x
  1314.             rear_back_from_r_wave
  1315.    setup 2x2 2x2
  1316.       preds "Unknown sex."
  1317.          if boyp [0 0 R1E R1E]
  1318.          if girlp [0 0 L0W L0W]
  1319.  
  1320. call "star thru" mainstream
  1321.    setup 2x1 1x2
  1322.       preds "Must be facing opposite sex."
  1323.          if x12_boy_facing_girl [R1E 0]
  1324.          if x12_girl_facing_boy [L1W 0]
  1325.  
  1326. call "wheel and deal" mainstream tag wheelanddeal
  1327.             left_means_mirror
  1328.    setup 1x4 2x2 restriction forbidden couples_only
  1329.       preds "???"
  1330.          if 1x4_wheel_and_deal [CR1S CR0S AL0S AL1S]   /* 2FL, or beau side of 1FL */
  1331.          if always             [0    0    AL3S AL2S]   /* belle side of 1FL */
  1332.             alternate_definition [single] a2
  1333.    setup 1x2 1x2 rotate
  1334.       preds "???"
  1335.          if 1x2_beau_or_miniwave [CR0E AL0E]
  1336.          if always [0 AL1E]
  1337.  
  1338. call "3X3 wheel and deal" c4 tag wheeldeal3x3
  1339.             left_means_mirror
  1340.    setup 1x6 2x3 restriction forbidden 3x3couples_only
  1341.       preds "???"
  1342.          if 1x6_wheel_and_deal [CR2S CR1S CR0S AL0S AL1S AL2S]   /* 2FL, or beau side of 1FL */
  1343.          if always             [0    0    0    AL5S AL4S AL3S]   /* belle side of 1FL */
  1344.  
  1345. call "4X4 wheel and deal" c4 tag wheeldeal4x4
  1346.             left_means_mirror
  1347.    setup 1x8 2x4 restriction forbidden 4x4couples_only
  1348.       preds "???"
  1349.          if 1x8_wheel_and_deal [CR3S CR2S CR0S CR1S AL0S AL1S AL3S AL2S]   /* 2FL, or beau side of 1FL */
  1350.          if always             [0    0    0    0    AL7S AL6S AL4S AL5S]   /* belle side of 1FL */
  1351.  
  1352. call "turn and deal" a1 tag turnanddeal
  1353.             left_means_mirror
  1354.    setup 1x4 2x2 restriction awkward_centers
  1355.       array [CR0S CR1S AL2S AL3S]
  1356.             alternate_definition [single] c3x
  1357.    setup 1x2 1x2 rotate restriction awkward_centers
  1358.       array [CR0E AL1E]
  1359.  
  1360. call "3X3 turn and deal" c4 tag turndeal3x3
  1361.             left_means_mirror
  1362.    setup 1x6 2x3
  1363.       array [CR0S CR1S CR2S AL3S AL4S AL5S]
  1364.  
  1365. call "4X4 turn and deal" c4 tag turndeal4x4
  1366.             left_means_mirror
  1367.    setup 1x8 2x4
  1368.       array [CR0S CR1S CR3S CR2S AL4S AL5S AL7S AL6S]
  1369.  
  1370. call "wheel and spread" plus
  1371.             left_means_mirror
  1372.    setup 1x4 1x4 restriction forbidden 1fl_only
  1373.       array [3S 1S 0S 2S]
  1374.    setup 2x3 2x3 restriction forbidden 1fl_only
  1375.       array [1S 2S 0S 5S 3S 4S]
  1376.  
  1377. call "single wheel" a2 tag single_wheel
  1378.             left_means_mirror
  1379.    setup 1x2 1x2 rotate
  1380.       preds "???"
  1381.          if 1x2_beau_or_miniwave [CR0E AL0E]
  1382.          if always [0 AL1E]
  1383.  
  1384. call "wheel to a line" c3x tag wheeltoline
  1385.             reverse_means_mirror
  1386.    setup 2x2 1x4 restriction couples_only
  1387.       array [CR2S CR3S AL0S AL1S]
  1388.             alternate_definition [single] c3x
  1389.    setup 2x1 1x2 rotate
  1390.       array [AL0E CR1E]
  1391.  
  1392. call "3X3 wheel to a line" c4 tag wheelline3x3
  1393.             reverse_means_mirror
  1394.    setup 2x3 1x6 restriction forbidden 1fl_only
  1395.       array [CR3S CR4S CR5S AL0S AL1S AL2S]
  1396.  
  1397. call "4X4 wheel to a line" c4 tag wheelline4x4
  1398.             reverse_means_mirror
  1399.    setup 2x4 1x8 restriction forbidden 1fl_only
  1400.       array [CR4S CR5S CR7S CR6S AL0S AL1S AL3S AL2S]
  1401.  
  1402. call "turn to a line" c2 tag turntoline
  1403.             reverse_means_mirror
  1404.    setup 2x2 1x4
  1405.       array [CR3S CR2S AL1S AL0S]
  1406.             alternate_definition [single] c3x
  1407.    setup 2x1 1x2 rotate
  1408.       array [AL0E CR1E]
  1409.  
  1410. call "3X3 turn to a line" c4 tag turnline3x3
  1411.             reverse_means_mirror
  1412.    setup 2x3 1x6
  1413.       array [CR5S CR4S CR3S AL2S AL1S AL0S]
  1414.  
  1415. call "4X4 turn to a line" c4 tag turnline4x4
  1416.             reverse_means_mirror
  1417.    setup 2x4 1x8
  1418.       array [CR6S CR7S CR5S CR4S AL2S AL3S AL1S AL0S]
  1419.  
  1420. call "triple wheel" c3x
  1421.             reverse_means_mirror single_is_inherited visible_fractions
  1422.    seq wheeltoline [inherit_reverse inherit_single]
  1423.    seq wheelanddeal [inherit_left inherit_single]
  1424.    seq wheeltoline [inherit_reverse inherit_single]
  1425.  
  1426. call "3X3 triple wheel" c4
  1427.             reverse_means_mirror visible_fractions
  1428.    seq wheelline3x3 [inherit_reverse]
  1429.    seq wheeldeal3x3 [inherit_left]
  1430.    seq wheelline3x3 [inherit_reverse]
  1431.  
  1432. call "4X4 triple wheel" c4
  1433.             reverse_means_mirror visible_fractions
  1434.    seq wheelline4x4 [inherit_reverse]
  1435.    seq wheeldeal4x4 [inherit_left]
  1436.    seq wheelline4x4 [inherit_reverse]
  1437.  
  1438. call "triple turn" c4
  1439.             reverse_means_mirror single_is_inherited visible_fractions
  1440.    seq turntoline [inherit_reverse inherit_single]
  1441.    seq turnanddeal [inherit_left inherit_single]
  1442.    seq turntoline [inherit_reverse inherit_single]
  1443.  
  1444. call "3X3 triple turn" c4
  1445.             reverse_means_mirror visible_fractions
  1446.    seq turnline3x3 [inherit_reverse]
  1447.    seq turndeal3x3 [inherit_left]
  1448.    seq turnline3x3 [inherit_reverse]
  1449.  
  1450. call "4X4 triple turn" c4
  1451.             reverse_means_mirror visible_fractions
  1452.    seq turnline4x4 [inherit_reverse]
  1453.    seq turndeal4x4 [inherit_left]
  1454.    seq turnline4x4 [inherit_reverse]
  1455.  
  1456. call "zig zag" a2
  1457.    setup 2x2 2x2      /* This entry makes it legal from a T-boned 2x2. */
  1458.       array [R0E R1E L2W L3W]
  1459.    setup 2x1 1x2
  1460.       array [L0W R1E]
  1461.  
  1462. call "zag zig" a2
  1463.    setup 2x2 2x2      /* This entry makes it legal from a T-boned 2x2. */
  1464.       array [L0W L1W R2E R3E]
  1465.    setup 2x1 1x2
  1466.       array [R0E L1W]
  1467.  
  1468. call "dixie chain" c4
  1469.    setup 4x1 1x4
  1470.       array [M3N M2N 0 0]
  1471.  
  1472. call "double pass thru" mainstream
  1473.             rear_back_from_qtag
  1474.    setup 4x1 1x4
  1475.       array [M3N M2N 0 0]
  1476.  
  1477. call "@gstrut @eright@f" c3
  1478.             left_means_mirror
  1479.    setup 4x2 1x8 rotate
  1480.       array [6W 7E 0 0 0 0 4E 5W]
  1481.             alternate_definition [single] c3
  1482.    setup 4x1 1x4 rotate
  1483.       array [3W 2E 0 0]
  1484.  
  1485. call "pass and roll" a2
  1486.             rear_back_from_r_wave left_means_mirror
  1487.    setup 4x1 2x2
  1488.       array [R0N 0 0 M3S]
  1489.  
  1490. call "ah so" c1
  1491.    setup 1x4 2x2 restriction wave_only
  1492.       array [CR1S AL3S AL0S CR2S]
  1493.  
  1494. call "1/4 tag" plus
  1495.             left_means_mirror
  1496.    setup 1x4 dmd restriction awkward_centers
  1497.       array [0E 1E 2W 3W]
  1498.  
  1499. call "1/2 tag" mainstream tag halftag
  1500.             left_means_mirror is_tag_call
  1501.    setup 1x4 2x2 restriction awkward_centers
  1502.       array [0E 1E 2W 3W]
  1503.  
  1504. call "3/4 tag" plus
  1505.             left_means_mirror
  1506.    setup 1x4 dmd restriction awkward_centers
  1507.       array [1E 2E 3W 0W]
  1508.  
  1509. call "tag the line" mainstream tag tagtheline
  1510.             left_means_mirror
  1511.    setup 1x4 1x4 restriction awkward_centers
  1512.       array [3E 2E 1W 0W]
  1513.  
  1514. call "@i1/4 @j cross @lflip" c1
  1515.    setup 1x4 dmd restriction forbidden wave_only
  1516.       array [1E 0E 1W 2W]
  1517.             alternate_definition [cross] c3
  1518.    setup 1x4 dmd restriction forbidden 2fl_only
  1519.       array [1E 2W 1W 0E]
  1520.  
  1521. call "@i@c1/2 @d@j cross @lflip" c1
  1522.             is_tag_call
  1523.    setup 1x4 2x2 restriction forbidden wave_only
  1524.       array [1E 3E 0W 2W]
  1525.             alternate_definition [cross] c3
  1526.    setup 1x4 2x2 restriction forbidden 2fl_only
  1527.       array [1E 2W 0W 3E]
  1528.  
  1529. call "@i3/4 @j cross @lflip" c1
  1530.    setup 1x4 dmd restriction forbidden wave_only
  1531.       array [2E 3E 0W 3W]
  1532.             alternate_definition [cross] c3
  1533.    setup 1x4 dmd restriction forbidden 2fl_only
  1534.       array [2E 3W 0W 3E]
  1535.  
  1536. call "flip the line" c1
  1537.    setup 1x4 1x4 restriction forbidden wave_only
  1538.       array [2E 3E 0W 1W]
  1539.             alternate_definition [cross] c3
  1540.    setup 1x4 1x4 restriction forbidden 2fl_only
  1541.       array [2E 1W 0W 3E]
  1542.  
  1543. call "vertical 0 tag" dontshow tag vertical0tag
  1544.             dont_use_in_resolve left_means_mirror
  1545.    setup 2x2 1x4 rotate
  1546.       preds "Can't do this with phantoms or T-boned people."
  1547.          if vert1 [0E 1E 3W 2W]
  1548.          if vert2 [0 0E 0 3W]
  1549.  
  1550. call "vertical @0" c2
  1551.             dont_use_in_resolve left_means_mirror
  1552.    seq vertical0tag [inherit_left]
  1553.    seq nullcall [mandatory_anycall]
  1554.  
  1555. call "vertical 1/4 tag" c1
  1556.             left_means_mirror
  1557.    setup 2x2 dmd rotate
  1558.       preds "Can't do this with phantoms or T-boned people."
  1559.          if vert1 [0E 1E 3W 2W]
  1560.          if vert2 [0 0E 0 3W]
  1561.  
  1562. call "vertical @c1/2 @dtag" c1 tag verticalhalftag
  1563.             left_means_mirror is_tag_call
  1564.    setup 2x2 2x2
  1565.       preds "Can't do this with phantoms or T-boned people."
  1566.          if vert1 [1S 2S 0N 3N]
  1567.          if vert2 [0 1S 0 0N]
  1568.  
  1569. call "vertical turn and deal" c3x
  1570.             left_means_mirror
  1571.    setup 2x2 2x2
  1572.       preds "Can't do this with phantoms or T-boned people."
  1573.          if vert1 [R1W L2E M0N M3N]
  1574.          if vert2 [0 L1E 0 M0N]
  1575.  
  1576. call "vertical 3/4 tag" c1
  1577.             left_means_mirror
  1578.    setup 2x2 dmd rotate
  1579.       preds "Can't do this with phantoms or T-boned people."
  1580.          if vert1 [1E 2E 0W 3W]
  1581.          if vert2 [0 1E 0 0W]
  1582.  
  1583. call "vertical tag" c1
  1584.             left_means_mirror
  1585.    setup 2x2 1x4 rotate
  1586.       preds "Can't do this with phantoms or T-boned people."
  1587.          if vert1 [3E 2E 0W 1W]
  1588.          if vert2 [0 3E 0 0W]
  1589.  
  1590. call "tag the star 1/4" c4a
  1591.             left_means_mirror
  1592.    setup 2x2 dmd rotate
  1593.       array [0 0 0E 1E]
  1594.  
  1595. call "@htag the star@c 1/2@d" c4a
  1596.             left_means_mirror is_tag_call
  1597.    setup 2x2 2x2
  1598.       array [0 0 1S 2S]
  1599.             alternate_definition [single] c4
  1600.    setup 4x1 2x2
  1601.       array [2S 3S 0 0]
  1602.  
  1603. call "tag the star 3/4" c4a
  1604.             left_means_mirror
  1605.    setup 2x2 dmd rotate
  1606.       array [0 0 1E 2E]
  1607.  
  1608. call "@htag the star" c4a
  1609.             left_means_mirror
  1610.    setup 2x2 1x4 rotate
  1611.       array [0 0 3E 2E]
  1612.             alternate_definition [single] c4
  1613.    setup 4x1 1x4
  1614.       array [1S 0S 0 0]
  1615.  
  1616. call "peel the deal" c3
  1617.    setup 2x2 1x4 restriction peelable_box
  1618.       array [L1E R3W R2W L0E]
  1619.             alternate_definition [single] c4
  1620.    setup 1x2 1x2
  1621.       array [L0E R1W]
  1622.  
  1623. call "trail the deal" c4
  1624.    setup 2x2 1x4 restriction peelable_box
  1625.       array [R3W L1E L0E R2W]
  1626.             alternate_definition [single] c4
  1627.    setup 1x2 1x2
  1628.       array [R1W L0E]
  1629.  
  1630. call "3X3 peel the deal" c4
  1631.    setup 3x2 1x6 rotate restriction peelable_box
  1632.       array [L0N L1N L2N R5S R4S R3S]
  1633.  
  1634. call "3X3 trail the deal" c4
  1635.    setup 3x2 1x6 rotate restriction peelable_box
  1636.       array [R3S R4S R5S L2N L1N L0N]
  1637.  
  1638. call "4X4 peel the deal" c4
  1639.    setup 4x2 1x8 rotate restriction peelable_box
  1640.       array [L0N L1N L3N L2N R6S R7S R5S R4S]
  1641.  
  1642. call "4X4 trail the deal" c4
  1643.    setup 4x2 1x8 rotate restriction peelable_box
  1644.       array [R4S R5S R7S R6S L2N L3N L1N L0N]
  1645.  
  1646. call "peel and trail the deal" c4
  1647.    setup 2x2 1x4 restriction peelable_box
  1648.       array [L1E R3W L0E R2W]
  1649.  
  1650. call "trail and peel the deal" c4
  1651.    setup 2x2 1x4 restriction peelable_box
  1652.       array [R3W L1E R2W L0E]
  1653.  
  1654. call "1X2 peel and trail the deal" c4
  1655.    setup 3x2 1x6 rotate restriction peelable_box
  1656.       array [R3S R4S L2N R5S L1N L0N]
  1657.  
  1658. call "2X1 peel and trail the deal" c4
  1659.    setup 3x2 1x6 rotate restriction peelable_box
  1660.       array [R3S L1N L2N R5S R4S L0N]
  1661.  
  1662. call "1X2 trail and peel the deal" c4
  1663.    setup 3x2 1x6 rotate restriction peelable_box
  1664.       array [L0N L1N R5S L2N R4S R3S]
  1665.  
  1666. call "2X1 trail and peel the deal" c4
  1667.    setup 3x2 1x6 rotate restriction peelable_box
  1668.       array [L0N R4S R5S L2N L1N R3S]
  1669.  
  1670. call "1X3 peel and trail the deal" c4
  1671.    setup 4x2 1x8 rotate restriction peelable_box
  1672.       array [R4S R5S R7S L2N R6S L3N L1N L0N]
  1673.  
  1674. call "1X3 trail and peel the deal" c4
  1675.    setup 4x2 1x8 rotate restriction peelable_box
  1676.       array [L0N L1N L3N R6S L2N R7S R5S R4S]
  1677.  
  1678. call "3X1 peel and trail the deal" c4
  1679.    setup 4x2 1x8 rotate restriction peelable_box
  1680.       array [R4S L1N L3N L2N R6S R7S R5S L0N]
  1681.  
  1682. call "3X1 trail and peel the deal" c4
  1683.    setup 4x2 1x8 rotate restriction peelable_box
  1684.       array [L0N R5S R7S R6S L2N L3N L1N R4S]
  1685.  
  1686. call "2X2 peel and trail the deal" c4
  1687.    setup 4x2 1x8 rotate restriction peelable_box
  1688.       array [R4S R5S L3N L2N R6S R7S L1N L0N]
  1689.  
  1690. call "2X2 trail and peel the deal" c4
  1691.    setup 4x2 1x8 rotate restriction peelable_box
  1692.       array [L0N L1N R7S R6S L2N L3N R5S R4S]
  1693.  
  1694. call "loop and 1/4 tag" c4a
  1695.             left_means_mirror
  1696.    setup 2x2 dmd restriction peelable_box
  1697.       array [1E 3W 2W 0E]
  1698.             alternate_definition [cross] c4a
  1699.    setup 2x2 dmd restriction peelable_box
  1700.       array [3W 1E 0E 2W]
  1701.  
  1702. call "loop and @c1/2 @dtag" c4a
  1703.             left_means_mirror is_tag_call
  1704.    setup 2x2 2x2 restriction peelable_box
  1705.       array [1E 3W 2W 0E]
  1706.             alternate_definition [cross] c4a
  1707.    setup 2x2 2x2 restriction peelable_box
  1708.       array [3W 1E 0E 2W]
  1709.  
  1710. call "3X3 loop and @c1/2 @dtag" c4
  1711.             left_means_mirror is_tag_call
  1712.    setup 3x2 2x3 rotate restriction peelable_box
  1713.       array [0N 1N 2N 5S 4S 3S]
  1714.             alternate_definition [cross] c4
  1715.    setup 3x2 2x3 rotate restriction peelable_box
  1716.       array [3S 4S 5S 2N 1N 0N]
  1717.  
  1718. call "4X4 loop and @c1/2 @dtag" c4
  1719.             left_means_mirror is_tag_call
  1720.    setup 4x2 2x4 rotate restriction peelable_box
  1721.       array [0N 1N 2N 3N 7S 6S 5S 4S]
  1722.             alternate_definition [cross] c4
  1723.    setup 4x2 2x4 rotate restriction peelable_box
  1724.       array [4S 5S 6S 7S 3N 2N 1N 0N]
  1725.  
  1726. call "loop and 3/4 tag" c4a
  1727.             left_means_mirror
  1728.    setup 2x2 dmd restriction peelable_box
  1729.       array [2E 0W 3W 1E]
  1730.             alternate_definition [cross] c4a
  1731.    setup 2x2 dmd restriction peelable_box
  1732.       array [0W 2E 1E 3W]
  1733.  
  1734. call "loop and tag" c4a
  1735.             left_means_mirror
  1736.    setup 2x2 1x4 restriction peelable_box
  1737.       array [2E 0W 1W 3E]
  1738.             alternate_definition [cross] c4a
  1739.    setup 2x2 1x4 restriction peelable_box
  1740.       array [0W 2E 3E 1W]
  1741.  
  1742. call "3X3 loop and tag" c4
  1743.             left_means_mirror
  1744.    setup 3x2 1x6 rotate restriction peelable_box
  1745.       array [5N 4N 3N 0S 1S 2S]
  1746.             alternate_definition [cross] c4
  1747.    setup 3x2 1x6 rotate restriction peelable_box
  1748.       array [2S 1S 0S 3N 4N 5N]
  1749.  
  1750. call "4X4 loop and tag" c4
  1751.             left_means_mirror
  1752.    setup 4x2 1x8 rotate restriction peelable_box
  1753.       array [6N 7N 5N 4N 0S 1S 3S 2S]
  1754.             alternate_definition [cross] c4
  1755.    setup 4x2 1x8 rotate restriction peelable_box
  1756.       array [2S 3S 1S 0S 4N 5N 7N 6N]
  1757.  
  1758. call "crossfire" plus
  1759.             parallel_conc_end
  1760.    /* This is a qualifier rather than a restriction, because the real definition
  1761.       from lines back-to-back has them step to a wave in the center, which this
  1762.       definition doesn't do.  So, saying "do your part" isn't good enough.  We
  1763.       simply make it illegal. */
  1764.    setup 1x4 2x2 qualifier 2fl_only
  1765.       array [C1S C2S A0S A3S]
  1766.  
  1767. call "3X3 crossfire" c4
  1768.    setup 1x6 2x3 rotate restriction forbidden 3x3_2fl_only
  1769.       /* We say that roll is undefined.  The roll rules come from the definition
  1770.          in terms of cross fold and extend.  The 3x3 and 4x4 versions are unclear
  1771.          on these points. */
  1772.       array [C0E C1E C2E A5E A4E A3E]
  1773.  
  1774. call "4X4 crossfire" c4
  1775.    setup 1x8 2x4 rotate restriction forbidden 4x4_2fl_only
  1776.       array [C0E C1E C3E C2E A7E A6E A4E A5E]
  1777.  
  1778. call "chain down the line" mainstream
  1779.             parallel_conc_end
  1780.    setup 1x4 2x2
  1781.       array [L0E L1W 0 0]
  1782.  
  1783. call "cross sashay" c4
  1784.    setup 1x4 2x2 restriction wave_only
  1785.       array [R1S M1N L0S M0N]
  1786.    setup dmd 2x2
  1787.       array [R1S 0 L0S 0]
  1788.    setup pmd 2x2
  1789.       array [0 M2N 0 M1N]
  1790.  
  1791. call "swap the wave" c2
  1792.             reverse_means_mirror
  1793.    setup 1x4 2x2 restriction wave_only
  1794.       array [2S 2S 1N 1N]
  1795.  
  1796. call "_wave recycle" dontshow tag waverecycle
  1797.             diamond_is_legal
  1798.    setup 1x4 2x2 qualifier wave_only
  1799.       array [CR1S AL3N AL0S CR2N]
  1800.             alternate_definition [cross] c3
  1801.    setup 1x4 2x2 restriction 2fl_only
  1802.       array [CR1S CR2N AL0S AL3N]
  1803.             alternate_definition [diamond] c4
  1804.    setup dmd 2x2
  1805.       array [CR1S 0 AL0S 0]
  1806.    setup pmd 2x2
  1807.       array [0 CR2W 0 AL1E]
  1808.  
  1809. call "hammerlane" c4a
  1810.             reverse_means_mirror
  1811.    setup 2x2 1x4
  1812.       array [0 0 0N R3S]
  1813.  
  1814. call "@hsplit recycle" c1 tag splitrecycle
  1815.             reverse_means_mirror diamond_is_legal
  1816.    setup 2x2 1x4
  1817.       preds "Can't do this with phantoms or T-boned people."
  1818.          if x22_miniwave [R2S L0S L3S R1S]
  1819.          if x22_couple [0 0 0N R1S]
  1820.             alternate_definition [single] c3x
  1821.    setup 4x1 1x4 rotate
  1822.       array [M0W R1E 0 0]
  1823.             alternate_definition [cross] c3
  1824.    setup 2x2 1x4
  1825.       array [0 0 0N R3S]
  1826.             alternate_definition [diamond] c4
  1827.    setup 2x2 dmd
  1828.       array [0 0 Z0N CR1E]
  1829.  
  1830. call "@hrecycle" mainstream tag recycle   /* **** Actually, it's a2 for the facing-couples version */
  1831.             reverse_means_mirror        /* **** Actually, only appropriate for facing-couples version.  Sigh. */
  1832.             diamond_is_legal
  1833.    setup 1x4 2x2 qualifier wave_only
  1834.       array [CR1S AL3N AL0S CR2N]
  1835.    setup 2x2 1x4        /* Shouldn't need a qualifier here -- it should give preference to the 1x4 splitting ?? */
  1836.       preds "Can't do this with phantoms or T-boned people."
  1837.          if x22_miniwave [R2S L0S L3S R1S]
  1838.          if x22_couple [0 0 Z0N CR1S]
  1839.             alternate_definition [single] c3x
  1840.    setup 4x1 1x4 rotate
  1841.       array [M0W R1E 0 0]
  1842.             alternate_definition [cross] c3
  1843.    setup 1x4 2x2 restriction 2fl_only
  1844.       array [R1S R2N L0S L3N]
  1845.    setup 2x2 1x4
  1846.       array [0 0 0N R3S]
  1847.             alternate_definition [diamond] c4
  1848.    setup dmd 2x2
  1849.       array [CR1S 0 AL0S 0]
  1850.    setup pmd 2x2
  1851.       array [0 CR2W 0 AL1E]
  1852.    setup 2x2 dmd
  1853.       array [0 0 Z0N CR1E]
  1854.  
  1855. call "@hall 8 recycle" c1
  1856.             reverse_means_mirror single_is_inherited cross_is_inherited diamond_is_legal
  1857.    crossconc splitrecycle [conc_demand_columns inherit_reverse inherit_single inherit_cross inherit_diamond] waverecycle [inherit_cross inherit_diamond suppress_elongation_warnings]
  1858.  
  1859. call "2/3 recycle" c1 tag 23recycle
  1860.    setup 1x4 2x2 restriction wave_only
  1861.       array [CR1E AL3E AL0W CR2W]
  1862.             alternate_definition [cross] c3
  1863.    setup 1x4 2x2 restriction 2fl_only
  1864.       array [CR1E CR2W AL0W AL3E]
  1865.  
  1866. call "linear cycle" plus
  1867.             parallel_conc_end
  1868.    setup 1x4 2x2 restriction wave_only
  1869.       array [R2W L2W L3E R3E]
  1870.  
  1871. call "cycle and wheel" a1 tag cyclewheel
  1872.    setup 1x4 2x2
  1873.       preds "Can't do this call."
  1874.          if lines_miniwave [R1S L3N L0S R2N]
  1875.          if lines_couple [R1S R0S L0S L1S]
  1876.  
  1877. /* ***** Need to get rid of these, by making the "cross" word go into the right place. */
  1878. call "cross cycle" c3
  1879.    setup 1x4 2x2 restriction 2fl_only
  1880.       array [R1S R2N L0S L3N]
  1881.  
  1882. call "2/3 cross cycle" c3
  1883.    setup 1x4 2x2 restriction 2fl_only
  1884.       array [R1E R2W L0W L3E]
  1885.  
  1886. call "explode" a1 tag explode
  1887.    /* ***** not really right -- should reject 2FL */
  1888.             parallel_conc_end
  1889.    setup 1x4 2x2
  1890.       preds "Can't explode from this line."
  1891.          if lines_miniwave [R0E R0E L1W L1W]
  1892.          if lines_couple [R3E R0E L2W L1W]
  1893.  
  1894. /* ***** bug!!!!! tried to implement reverse explode with "reverse" alternate definition, didn't work. */
  1895. call "reverse explode" c1
  1896.    /* not really right -- should allow 1FL */
  1897.             parallel_conc_end
  1898.    setup 1x4 2x2 restriction wave_only
  1899.       preds "Can't explode from this line."
  1900.          if lines_miniwave [L0W L0W R1E R1E]
  1901.          if lines_couple [L0W L3W R1E R2E]
  1902.  
  1903. call "explode the wave" plus tag explodeline
  1904.    /* not really right -- should allow 1FL */
  1905.             parallel_conc_end
  1906.    setup 1x4 2x2 restriction wave_only
  1907.       preds "Can't explode from this line."
  1908.          if lines_miniwave [1E 1E 0W 0W]
  1909.          if lines_couple [2E 1E 3W 0W]
  1910.  
  1911. call "explode the diamond" c3
  1912.    conc explodeline [] coupleup [conc_demand_lines conc_force_lines]
  1913.  
  1914. call "about" c4 tag about
  1915.             parallel_conc_end
  1916.    setup 1x4 2x2 restriction forbidden wave_only
  1917.       array [R0E R0E L1W L1W]
  1918.  
  1919. call "swing about" c4
  1920.             step_to_wave left_means_mirror
  1921.    seq 1_2_by_right [inherit_left]
  1922.    seq 1_2_by_left [inherit_left]
  1923.    seq about []
  1924.  
  1925. call "triple cast" c4a
  1926.             take_right_hands
  1927.    setup 1x8 2x4 rotate
  1928.       array [L4N R5S M4S L5N R3S L2N M3N R2S]
  1929.    setup ptpd qtag
  1930.       array [L5E 0 M5W 0 R4W 0 M4E 0]
  1931.    setup pptpd qtag
  1932.       array [0 R6W 0 L6E 0 L3E 0 R3W]
  1933.  
  1934. call "split cast" c4a
  1935.             left_means_mirror
  1936.    conc cast_off_12 [] hinge_then_trade [inherit_left]
  1937.  
  1938. call "cross and divide" c4a
  1939.             parallel_conc_end
  1940.    setup 1x4 2x2
  1941.       preds "???"
  1942.          if x14_once_rem_miniwave [0W 1E 1E 0W]
  1943.          if x14_once_rem_couple [3W 1E 2E 0W]
  1944.          if always [0 1E 0 0W]
  1945.  
  1946. call "Z axle" c3
  1947.             split_large_setups
  1948.    setup 3x2 1x4 rotate qualifier true_Z
  1949.       array [0 L0E L1E R3E R2E 0]
  1950.  
  1951. call "swing and cross" c4           /* Ugh!  - J.E.Brosius */
  1952.             step_to_wave grand_is_inherited left_means_mirror visible_fractions
  1953.    seq armturn_34 []
  1954.    seq and_cross [inherit_grand]
  1955.  
  1956. call "step and fold" c1 tag stepnfold
  1957.             parallel_conc_end
  1958.    setup 1x4 2x2
  1959.       array [R0S M0N L1S M1N]
  1960.    setup dmd 2x2
  1961.       array [R0S 0 L1S 0]
  1962.    setup pmd 2x2
  1963.       array [0 M1N 0 M2N]
  1964.             alternate_definition [cross] c3
  1965.    setup 1x4 2x2
  1966.       array [R1S M0N L0S M1N]
  1967.    setup dmd 2x2
  1968.       array [R1S 0 L0S 0]
  1969.    setup pmd 2x2
  1970.       array [0 M1N 0 M2N]
  1971.  
  1972. call "@2tag@3@c back to a wave@d" c1
  1973.             left_means_mirror first_part_visible
  1974.    seq halftag [or_anycall inherit_left must_be_tag_call]
  1975.    seq scootback []
  1976.  
  1977. call "@2tag@3 @c back @dand scatter" c4
  1978.             left_means_mirror first_part_visible
  1979.    seq halftag [or_anycall inherit_left must_be_tag_call]
  1980.    seq scatscoot []
  1981.  
  1982. call "@2tag @3chain thru" c3x
  1983.             left_means_mirror first_part_visible
  1984.    seq halftag [or_anycall inherit_left must_be_tag_call]
  1985.    seq scootchainthru []
  1986.  
  1987. call "@2tag @3chain thru and scatter" c4
  1988.             left_means_mirror first_part_visible
  1989.    seq halftag [or_anycall inherit_left must_be_tag_call]
  1990.    seq scatscootchainthru []
  1991.  
  1992. call "flip back" c1
  1993.    setup 1x4 2x2 restriction wave_only
  1994.    array [2W 0W 3E 1E]
  1995.  
  1996. call "touch by @b X 1/4" c3a
  1997.             left_means_mirror neednumber
  1998.    singlecrossconc lft_touch_1_4 [inherit_left] lft_touch_n_4 [inherit_left]
  1999.  
  2000. call "touch by @b X 1/2" c3a
  2001.             left_means_mirror neednumber
  2002.    singlecrossconc lft_touch_1_2 [inherit_left] lft_touch_n_4 [inherit_left]
  2003.  
  2004. call "touch by @b X 3/4" c3a
  2005.             left_means_mirror neednumber
  2006.    singlecrossconc lft_touch_3_4 [inherit_left] lft_touch_n_4 [inherit_left]
  2007.  
  2008. call "switch to a diamond" a2
  2009.    setup 1x4 dmd
  2010.       array [R1E L0S L1W R2S]
  2011.             alternate_definition [interlocked] c1
  2012.    setup 2x4 qtag rotate
  2013.       array [R6N L5E R0E L6S L7S R1E L4E R7N]
  2014.             alternate_definition [magic] c2
  2015.    setup 2x4 qtag rotate
  2016.       array [R3N L4E R1E L3S L6S R0E L5E R6N]
  2017.  
  2018. call "run away" c4
  2019.             left_means_mirror
  2020.    setup 1x4 dmd
  2021.       array [R3W L0E R1E R2W]
  2022.             alternate_definition [cross] c4
  2023.    setup 1x4 dmd
  2024.       array [R3W R2W R1E L0E]
  2025.  
  2026. call "erase" c3
  2027.    setup 1x4 dmd rotate
  2028.       array [CR0N CR3E AL0S AL1E]
  2029.    setup dmd 1x4 rotate
  2030.       array [CR0N 0 AL0S 0]
  2031.    setup pmd 1x4 rotate
  2032.       array [0 CR1E 0 AL3E]
  2033.  
  2034. call "zip the top" c4a
  2035.    setup 1x4 1x4 rotate
  2036.       array [CR0N CR1S AL0S AL1N]
  2037.    setup dmd dmd rotate
  2038.       array [CR0N 0 AL0S 0]
  2039.    setup pmd dmd rotate
  2040.       array [0 CR1S 0 AL1N]
  2041.  
  2042. call "fan back" c4 tag fanback
  2043.    setup 1x4 dmd
  2044.       array [CR0S CR3W AL2S AL3E]
  2045.    setup dmd 1x4
  2046.       array [CR0S 0 AL2S 0]
  2047.    setup pmd 1x4
  2048.       array [0 CR1W 0 AL1E]
  2049.  
  2050. call "spin back" c4
  2051.             step_to_wave
  2052.    seq trade []
  2053.    seq fanback []
  2054.  
  2055. call "short cycle" c4
  2056.    setup 1x4 1x4 rotate restriction forbidden wave_only
  2057.       array [R0N L3N L0S R3S]
  2058.  
  2059. call "peel the top" plus
  2060.    setup 2x2 1x4 rotate restriction wave_only
  2061.       array [AL2N CR2S AL3N CR3S]
  2062.  
  2063. call "follow your neighbor" plus tag neighbor
  2064.    setup 2x2 1x4 rotate restriction wave_only
  2065.       array [CR0S AL0N AL3N CR3S]
  2066.  
  2067. call "cross your neighbor" c1
  2068.    setup 2x2 1x4 rotate restriction wave_only
  2069.       array [CR0S AL0N CR3S AL3N]
  2070.  
  2071. call "criss cross your neighbor" c2
  2072.    setup 2x2 1x4 rotate restriction wave_only
  2073.       array [R3S L3N M2S M2N]
  2074.  
  2075. call "follow thru" c1
  2076.    setup 2x2 1x4 rotate restriction wave_only
  2077.       array [R0N L0S L1S R1N]
  2078.    setup pmd 1x4
  2079.       preds "???"
  2080.          if dmd_ctrs_rh [R1E R2E 0 0]
  2081.          if always      [L1W 0   0 L2W]
  2082.             alternate_definition [grand] c3x
  2083.    setup 3x2 1x6 restriction wave_only
  2084.       array [R2E R4E R3E L3W L4W L2W]
  2085.    setup 4x2 1x8 restriction wave_only
  2086.       array [R3E R6E R5E R4E L4W L5W L6W L3W]
  2087.             alternate_definition [cross] c3x
  2088.    setup 2x2 1x4 rotate restriction wave_only
  2089.       array [R0N L0S R1N L1S]
  2090.    setup pmd 1x4
  2091.       preds "???"
  2092.          if dmd_ctrs_rh [L1W L2W 0 0]
  2093.          if always      [R1E 0   0 R2E]
  2094.  
  2095. /* **** get rid of this when can force final concepts in defmod spec */
  2096. call "_grand follow thru" dontshow tag grandflwthru
  2097.    setup 3x2 1x6 restriction wave_only
  2098.       array [R2E R4E R3E L3W L4W L2W]
  2099.    setup 4x2 1x8 restriction wave_only
  2100.       array [R3E R6E R5E R4E L4W L5W L6W L3W]
  2101.  
  2102. call "pair the line" c4
  2103.    setup 1x4 2x3 rotate
  2104.       array [R5E R4E L0E L1E]
  2105.             alternate_definition [cross] c4
  2106.    setup 1x4 2x3 rotate
  2107.       array [R0E R1E L5E L4E]
  2108.  
  2109. call "loop the loop" c4
  2110.    setup 1x4 2x3 rotate
  2111.       array [R5E R1E L0E L4E]
  2112.             alternate_definition [cross] c4
  2113.    setup 1x4 2x3 rotate
  2114.       array [R0E R1E L5E L4E]
  2115.  
  2116. call "rip the line" c4
  2117.    setup 1x4 2x3 rotate
  2118.       array [R0E R4E L5E L1E]
  2119.  
  2120. call "curl thru" c4
  2121.    setup 1x4 2x3 rotate
  2122.       array [R0E R1E L5E L4E]
  2123.  
  2124. call "pass the ocean" mainstream tag pass_ocean
  2125.             rear_back_from_r_wave
  2126.    setup 2x2 1x4 rotate
  2127.       array [0 0 L1S R0N]
  2128.  
  2129. call "cross the ocean" c3x
  2130.    setup 2x2 1x4 rotate
  2131.       array [0 0 R0N L1S]
  2132.  
  2133. call "_designees walk/others dodge" dontshow tag starthopping
  2134.    setup 2x2 2x2
  2135.       preds "Can't tell who is designated."
  2136.          if select [0 0 M1N M0N]
  2137.          if unselect [M1N M0N M3N M2N]
  2138.  
  2139. call "@k hop" c3a
  2140.    seq starthopping []
  2141.    seq hinge []
  2142.  
  2143. call "3X3 beau hop" c4
  2144.             left_means_mirror
  2145.    setup 2x3 1x6 rotate
  2146.       array [0 0 0 R4N R2N R0N]
  2147.  
  2148. call "4X4 beau hop" c4
  2149.             left_means_mirror
  2150.    setup 2x4 1x8 rotate
  2151.       array [0 0 0 0 R5N R6N R3N R0N]
  2152.  
  2153. call "3X3 belle hop" c4
  2154.    setup 2x3 1x6 rotate
  2155.       array [0 0 0 L1S L5S L3S]
  2156.  
  2157. call "4X4 belle hop" c4
  2158.    setup 2x4 1x8 rotate
  2159.       array [0 0 0 0 L1S L2S L7S L4S]
  2160.  
  2161. call "@hdixie style to a wave" mainstream
  2162.             split_like_dixie_style
  2163.             rear_back_from_qtag left_means_mirror
  2164.    setup 2x2 1x4 rotate
  2165.       array [0 0 L0S L3S]
  2166.             alternate_definition [single] mainstream
  2167.    setup 4x1 1x4
  2168.       array [L1W L2W 0 0 ]
  2169.  
  2170. call "@hdixie diamond" c1
  2171.             split_like_dixie_style
  2172.             rear_back_from_qtag left_means_mirror
  2173.    setup 2x2 dmd rotate
  2174.       array [0 0 L0N R3W]
  2175.             alternate_definition [single] c1
  2176.    setup 4x1 dmd
  2177.       array [R1N L2E 0 0 ]
  2178.  
  2179. call "@hdixie sashay" c1
  2180.             split_like_dixie_style
  2181.             rear_back_from_qtag left_means_mirror
  2182.    setup 2x2 1x4 rotate
  2183.       array [0 0 L0S 1S]
  2184.             alternate_definition [single] c1
  2185.    setup 4x1 1x4
  2186.       array [3W L2W 0 0 ]
  2187.  
  2188. call "@hdixie derby" c3x
  2189.             split_like_dixie_style
  2190.             rear_back_from_qtag left_means_mirror
  2191.    setup 2x2 1x4 rotate
  2192.       array [0 0 1N 0N]
  2193.             alternate_definition [single] c4
  2194.    setup 4x1 1x4
  2195.       array [2E 3E 0 0 ]
  2196.  
  2197. call "@hdixie spin" c4a
  2198.             split_like_dixie_style
  2199.             rear_back_from_qtag left_means_mirror
  2200.    setup 2x2 1x4
  2201.       array [0 0 L0S R3S]
  2202.             alternate_definition [single] c4a
  2203.    setup 4x1 1x4 rotate
  2204.       array [R3E L0E 0 0 ]
  2205.  
  2206. call "pass the sea" a2
  2207.             rear_back_from_r_wave
  2208.    setup 2x2 1x4 rotate
  2209.    array [0 0 L0S R1N]
  2210.  
  2211. call "veer left" mainstream
  2212.    setup 2x2 1x4
  2213.       array [0 0 1N 0N]
  2214.  
  2215. call "@gveer @eright@f" mainstream
  2216.             left_means_mirror
  2217.    setup 2x2 1x4
  2218.       array [0 0 2N 3N]
  2219.  
  2220. call "leftable veer left" dontshow tag lft_veer_left
  2221.             left_means_mirror
  2222.    setup 2x2 1x4
  2223.       array [0 0 1N 0N]
  2224.  
  2225. call "reach out" c3a
  2226.    setup 2x2 1x4 restriction wave_only
  2227.       array [CM3S AM1S CR2S AL0S]
  2228.  
  2229. call "flare out to a line" c3x
  2230.    setup 2x4 1x8 restriction 2fl_only
  2231.       array [AL0S AL1S CR5S CR4S ZM7N ZM6N ZM2N ZM3N]
  2232.             alternate_definition [cross] c3x
  2233.    setup 2x4 1x8 restriction 2fl_only
  2234.       array [CR5S CR4S AL0S AL1S ZM7N ZM6N ZM2N ZM3N]
  2235.  
  2236. call "scoot apart" c4
  2237.    setup 2x2 1x4 restriction wave_only
  2238.       array [CM3S AM1S AM0S CM2S]
  2239.  
  2240. call "_peel and nothing" dontshow tag peel_and_nothing
  2241.    setup 2x2 1x4 restriction peelable_box
  2242.       array [AL0S CR2S ZM3N ZM1N]
  2243.  
  2244. call "_trail and nothing" dontshow tag trail_and_nothing
  2245.    setup 2x2 1x4 restriction peelable_box
  2246.       array [CR2S AL0S ZM3N ZM1N]
  2247.  
  2248. call "peel off" mainstream tag peeloff
  2249.    setup 2x2 1x4 restriction peelable_box
  2250.       array [AL0S CR2S CR3S AL1S]
  2251.  
  2252. call "trail off" a2
  2253.    setup 2x2 1x4 restriction peelable_box
  2254.       array [CR2S AL0S AL1S CR3S]
  2255.  
  2256. call "peel and trail" a2
  2257.    setup 2x2 1x4 restriction peelable_box
  2258.       array [AL0S CR2S AL1S CR3S]
  2259.  
  2260. call "trail and peel" c4
  2261.    setup 2x2 1x4 restriction peelable_box
  2262.       array [CR2S AL0S CR3S AL1S]
  2263.  
  2264. call "3X3 peel off" c4
  2265.    setup 3x2 1x6 rotate restriction peelable_box
  2266.       array [AL2E AL1E AL0E CR3E CR4E CR5E]
  2267.  
  2268. call "4X4 peel off" c4
  2269.    setup 4x2 1x8 rotate restriction peelable_box
  2270.       array [AL2E AL3E AL1E AL0E CR4E CR5E CR7E CR6E]
  2271.  
  2272. call "3X3 trail off" c4
  2273.    setup 3x2 1x6 rotate restriction peelable_box
  2274.       array [CR5E CR4E CR3E AL0E AL1E AL2E]
  2275.  
  2276. call "4X4 trail off" c4
  2277.    setup 4x2 1x8 rotate restriction peelable_box
  2278.       array [CR6E CR7E CR5E CR4E AL0E AL1E AL3E AL2E]
  2279.  
  2280. call "1X2 peel and trail" c4
  2281.    setup 3x2 1x6 rotate restriction peelable_box
  2282.       array [CR5E CR4E AL0E CR3E AL1E AL2E]
  2283.  
  2284. call "1X2 trail and peel" c4
  2285.    setup 3x2 1x6 rotate restriction peelable_box
  2286.       array [AL2E AL1E CR3E AL0E CR4E CR5E]
  2287.  
  2288. call "2X1 peel and trail" c4
  2289.    setup 3x2 1x6 rotate restriction peelable_box
  2290.       array [CR5E AL1E AL0E CR3E CR4E AL2E]
  2291.  
  2292. call "2X1 trail and peel" c4
  2293.    setup 3x2 1x6 rotate restriction peelable_box
  2294.       array [AL2E CR4E CR3E AL0E AL1E CR5E]
  2295.  
  2296. call "2X2 peel and trail" c4
  2297.    setup 4x2 1x8 rotate restriction peelable_box
  2298.       array [CR6E CR7E AL1E AL0E CR4E CR5E AL3E AL2E]
  2299.  
  2300. call "2X2 trail and peel" c4
  2301.    setup 4x2 1x8 rotate restriction peelable_box
  2302.       array [AL2E AL3E CR5E CR4E AL0E AL1E CR7E CR6E]
  2303.  
  2304. call "1X3 peel and trail" c4
  2305.    setup 4x2 1x8 rotate restriction peelable_box
  2306.       array [CR6E CR7E CR5E AL0E CR4E AL1E AL3E AL2E]
  2307.  
  2308. call "1X3 trail and peel" c4
  2309.    setup 4x2 1x8 rotate restriction peelable_box
  2310.       array [AL2E AL3E AL1E CR4E AL0E CR5E CR7E CR6E]
  2311.  
  2312. call "3X1 peel and trail" c4
  2313.    setup 4x2 1x8 rotate restriction peelable_box
  2314.       array [CR6E AL3E AL1E AL0E CR4E CR5E CR7E AL2E]
  2315.  
  2316. call "3X1 trail and peel" c4
  2317.    setup 4x2 1x8 rotate restriction peelable_box
  2318.       array [AL2E CR7E CR5E CR4E AL0E AL1E AL3E CR6E]
  2319.  
  2320. call "reset @a" c3
  2321.             neednumber
  2322.    /* We do *NOT* set "visible_fractions" for this.  It is not permitted
  2323.       when "repeat_n_alternate" is used.  This call has one part, and takes
  2324.       a numeric argument to determine how many sub-parts to execute. */
  2325.    seq peel_and_nothing [repeat_n_alternate]
  2326.    seq armturn1_4 []
  2327.  
  2328. /***** not right: if in 8CH this would split it and lose */
  2329. /* Need to specify a 1x4 version, and make the program */
  2330. /* know which way to split the 2x4 if a call has both. */
  2331. call "weave" c1 tag weave
  2332.    setup 2x2 1x4 rotate restriction wave_only
  2333.       array [R0N L0S R1N L1S]
  2334.  
  2335. call "_natural 3/4 thru" dontshow tag nat34thru
  2336.             dont_use_in_resolve
  2337.    setup 2x2 1x4 rotate restriction wave_only
  2338.       array [L3N R3S L2N R2S]
  2339.  
  2340. call "_natural 3/4 and 3/4" dontshow tag nat34_34
  2341.             dont_use_in_resolve
  2342.    setup 2x2 dmd rotate restriction wave_only
  2343.       array [L1W R3W L2N R2S]
  2344.  
  2345. call "remake the wave" a2 tag remake
  2346.    setup 2x2 2x2 restriction wave_only
  2347.       array [R0N L1N L0S R1S]
  2348.  
  2349. call "_quarter by the right" dontshow tag 1_4_by_right
  2350.             dont_use_in_resolve left_means_mirror diamond_is_legal
  2351.    setup 2x4 2x4 rotate qualifier right_wave
  2352.       array [CR7N 0 CR0N 0 0 CR2N 0 CR5N]
  2353.    setup 2x4 qtag rotate qualifier left_wave
  2354.       array [0 CR6N 0 ZM0W ZM1W 0 CR3N 0]
  2355.    setup qtag 2x4 rotate qualifier right_wave
  2356.       array [0 0 0 CR1N 0 0 CR6N 0]
  2357.    setup pqtag 2x4 rotate qualifier right_wave
  2358.       array [ZM7W ZM0W 0 0 ZM3W ZM4W 0 0]
  2359.    setup dmd 1x4 qualifier right_wave
  2360.       array [ZM0N 0 ZM2N 0]
  2361.    setup pmd 1x4 qualifier right_wave
  2362.       array [0 CR3E 0 0]
  2363.    setup 4x2 1x8 qualifier right_wave
  2364.       array [CR1E CR2E CR7E CR4E 0 0 0 0]
  2365.    setup 3x2 1x6 restriction wave_only
  2366.       array [CR1E CR5E CR3E 0 0 0]
  2367.    setup 2x2 1x4 rotate qualifier right_wave
  2368.       array [CR0N 0 0 CR3N]
  2369.             alternate_definition [diamond] c3a
  2370.    setup qtag qtag restriction nice_diamonds
  2371.       array [0 0 0 CR1E 0 0 CR0E 0]
  2372.    setup pqtag qtag
  2373.       array [CR7E CR2E 0 0 0 0 0 0]
  2374.  
  2375. call "_half by the right" dontshow tag 1_2_by_right
  2376.             dont_use_in_resolve left_means_mirror diamond_is_legal
  2377.    setup 1x4 1x4 restriction wave_only
  2378.       array [CR1S CR3S ZM2N CR2S]
  2379.             alternate_definition [grand] plus
  2380.    setup 1x6 1x6 restriction wave_only
  2381.       array [CR1S CR2S CR5S ZM3N CR3S CR4S]
  2382.    setup 1x8 1x8 restriction wave_only
  2383.       array [CR1S CR3S CR6S CR2S ZM4N CR4S CR7S CR5S]
  2384.             alternate_definition [diamond] c3a
  2385.    setup qtag qtag restriction nice_diamonds
  2386.       array [0 0 ZM2N CR2S 0 0 CR7S CR3S]
  2387.    setup pqtag qtag
  2388.       array [CR5S CR4S 0 0 ZM4N ZM5N 0 0]
  2389.  
  2390. call "_three quarters by the right" dontshow tag 3_4_by_right
  2391.             dont_use_in_resolve left_means_mirror diamond_is_legal
  2392.    setup 2x4 2x4 rotate qualifier right_wave
  2393.       array [CR6S 0 CR1S 0 0 CR3S 0 CR4S]
  2394.    setup 2x4 qtag rotate qualifier left_wave
  2395.       array [0 CR7S 0 ZM0W ZM1W 0 CR2S 0]
  2396.    setup qtag 2x4 rotate qualifier right_wave
  2397.       array [0 0 0 CR2S 0 0 CR5S 0]
  2398.    setup pqtag 2x4 rotate qualifier right_wave
  2399.       array [ZM7W ZM0W 0 0 ZM3W ZM4W 0 0]
  2400.    setup dmd 1x4 qualifier right_wave
  2401.       array [ZM0N 0 ZM2N 0]
  2402.    setup pmd 1x4 qualifier right_wave
  2403.       array [0 CR1W 0 0]
  2404.    setup 4x2 1x8 qualifier right_wave
  2405.       array [CR0W CR3W CR6W CR5W 0 0 0 0]
  2406.    setup 3x2 1x6 restriction wave_only
  2407.       array [CR0W CR2W CR4W 0 0 0]
  2408.    setup 2x2 1x4 rotate qualifier right_wave
  2409.       array [CR1S 0 0 CR2S]
  2410.             alternate_definition [diamond] c3a
  2411.    setup qtag qtag restriction nice_diamonds
  2412.       array [0 0 0 CR4W 0 0 CR5W 0]
  2413.    setup pqtag qtag
  2414.       array [CR6W CR3W 0 0 0 0 0 0]
  2415.  
  2416. call "_half by the left" dontshow tag 1_2_by_left
  2417.             dont_use_in_resolve left_means_mirror diamond_is_legal
  2418.    setup 1x4 1x4 restriction wave_only
  2419.       array [ZM0N AL0S AL3S AL1S]
  2420.    setup qtag qtag restriction wave_only
  2421.       array [ZM0N ZM1N AL3S AL7S ZM4N ZM5N ZM6N AL6S]
  2422.    setup pqtag qtag
  2423.       array [ZM0N ZM1N 0 0 ZM4N ZM5N 0 0]
  2424.             alternate_definition [grand] plus
  2425.    setup 1x6 1x6 restriction wave_only
  2426.       array [ZM0N AL0S AL1S AL4S AL5S AL2S]
  2427.    setup 1x8 1x8 restriction wave_only
  2428.       array [ZM0N AL0S AL3S AL1S AL5S AL7S AL2S AL6S]
  2429.             alternate_definition [diamond] c3a
  2430.    setup qtag qtag restriction nice_diamonds
  2431.       array [0 0 AL3S AL7S 0 0 ZM6N AL6S]
  2432.    setup pqtag qtag
  2433.       array [ZM0N ZM1N 0 0 AL1S AL0S 0 0]
  2434.  
  2435. call "quarter thru" a1
  2436.             step_to_wave left_means_mirror grand_is_inherited diamond_is_legal visible_fractions
  2437.    seq 1_4_by_right [inherit_left inherit_diamond]
  2438.    seq 1_2_by_left [inherit_left inherit_grand inherit_diamond roll_transparent]
  2439.  
  2440. call "swing thru" mainstream
  2441.             step_to_wave left_means_mirror grand_is_inherited diamond_is_legal visible_fractions
  2442.    seq 1_2_by_right [inherit_left inherit_grand inherit_diamond]
  2443.    seq 1_2_by_left [inherit_left inherit_grand inherit_diamond roll_transparent]
  2444.  
  2445. call "three quarter thru" a1
  2446.             step_to_wave left_means_mirror grand_is_inherited diamond_is_legal visible_fractions
  2447.    seq 3_4_by_right [inherit_left inherit_diamond]
  2448.    seq 1_2_by_left [inherit_left inherit_grand inherit_diamond roll_transparent]
  2449.  
  2450. call "remake the setup" a2
  2451.             left_means_mirror grand_is_inherited diamond_is_legal visible_fractions
  2452.    seq 1_4_by_right [inherit_left inherit_diamond]
  2453.    seq 1_2_by_left [inherit_left inherit_grand inherit_diamond]
  2454.    seq 3_4_by_right [inherit_left inherit_diamond]
  2455.  
  2456. call "swing the fractions" c1
  2457.             left_means_mirror diamond_is_legal visible_fractions
  2458.    seq 1_4_by_right [inherit_left inherit_diamond]
  2459.    seq 1_2_by_left [inherit_left inherit_diamond]
  2460.    seq 3_4_by_right [inherit_left inherit_diamond]
  2461.    seq 1_2_by_left [inherit_left inherit_diamond]
  2462.    seq 1_4_by_right [inherit_left inherit_diamond]
  2463.  
  2464. call "quarter cross" c3x
  2465.             left_means_mirror grand_is_inherited visible_fractions
  2466.    seq 1_4_by_right [inherit_left]
  2467.    seq ctrcrossrun [inherit_grand]
  2468.  
  2469. call "quarter mix" c3a
  2470.             left_means_mirror grand_is_inherited visible_fractions
  2471.    seq 1_4_by_right [inherit_left]
  2472.    seq ctrcrossrun [inherit_grand]
  2473.    seq maybegrandslip [inherit_grand]
  2474.  
  2475. call "three quarter cross" c3x
  2476.             left_means_mirror grand_is_inherited visible_fractions
  2477.    seq 3_4_by_right [inherit_left]
  2478.    seq ctrcrossrun [inherit_grand]
  2479.  
  2480. call "three quarter mix" c3a
  2481.             left_means_mirror grand_is_inherited visible_fractions
  2482.    seq 3_4_by_right [inherit_left]
  2483.    seq ctrcrossrun [inherit_grand]
  2484.    seq maybegrandslip [inherit_grand]
  2485.  
  2486. call "_centers crossback/ends two o's" dontshow tag crossbackandtwoos
  2487.    conc crossback [] box_circ [conc_force_otherway]
  2488.  
  2489. call "settle back" c3x
  2490.    seq peel_and_nothing []
  2491.    seq hinge []
  2492.    seq crossbackandtwoos []
  2493.  
  2494. call "short trip" c3x tag longtrip1
  2495.    setup 2x4 2x6
  2496.       preds "Don't know what to do."
  2497.          if lines_miniwave [M3S R3S L2S M2S M4N M6S M11S M1N]
  2498.          if lines_couple   [M3S M0S M5S M2S M4N M3N M2N  M1N]
  2499.  
  2500. call "finish a long trip" c3x tag longtrip2
  2501.    setup 2x6 2x4 rotate
  2502.       preds "Wings must be as a couple looking out."
  2503.          if lines_miniwave [ 0   0  0 0  0   0  0 0 M1W M6W 0 0]
  2504.          if lines_couple   [R7E R0E 0 0 L7E L0E 0 0 M1W M6W 0 0]
  2505.  
  2506. call "long trip" c3x
  2507.             visible_fractions
  2508.    seq longtrip1 []
  2509.    seq longtrip2 []
  2510.  
  2511. call "chase your neighbor" c1
  2512.    setup 2x2 1x4 rotate
  2513.    array [1N 2N 0 0]
  2514.  
  2515. call "swap the top" c3a
  2516.             reverse_means_mirror
  2517.    setup 2x2 1x4 rotate
  2518.       array [0 0 3N 2S]
  2519.             alternate_definition [cross] c3a
  2520.    setup 2x2 1x4 rotate
  2521.       array [0 0 3S 2S]
  2522.  
  2523. call "@hstar to a wave" c4a
  2524.             left_means_mirror
  2525.    setup 2x2 1x4 rotate
  2526.       array [0 0 R1S R2S]
  2527.             alternate_definition [single] c4
  2528.    setup 4x1 1x4
  2529.       array [R3W R0W 0 0]
  2530.  
  2531. call "travel thru" c3a
  2532.             rear_back_from_r_wave left_means_mirror
  2533.    setup 2x2 1x4 rotate
  2534.       array [0 0 R1N R0N]
  2535.  
  2536. call "revolve to a wave" c3
  2537.    setup 2x2 1x4
  2538.    array [2S 3N 0N 1S]
  2539.  
  2540. call "follow to a diamond" c3a
  2541.    setup 2x2 dmd rotate restriction wave_only
  2542.       array [C1E A3E A2N C2S]
  2543.  
  2544. call "@g@eright@f roll the" c3
  2545.             left_means_mirror
  2546.    setup 2x2 dmd rotate
  2547.       array [CR0N C1E 0 0]      /* We say that the original belle can't roll. */
  2548.  
  2549. call "mayday in" c4
  2550.             left_means_mirror
  2551.    setup 2x4 2x4
  2552.       array [3S 1N 4S 6S 0 0 0 0]   /* We think trying to roll after this call is silly. */
  2553.  
  2554. call "mayday out" c4
  2555.             left_means_mirror
  2556.    setup 2x4 2x4
  2557.       array [3N 1N 4S 6S 0 0 0 0]
  2558.  
  2559. call "mayday" c4
  2560.             left_means_mirror
  2561.    setup 2x4 2x4
  2562.       array [3E 1N 4S 6S 0 0 0 0]
  2563.  
  2564. call "peel to a diamond" c2
  2565.    seq peel_and_nothing []
  2566.    seq sglctrhinge [roll_transparent]
  2567.  
  2568. call "trail to a diamond" c2
  2569.    seq trail_and_nothing []
  2570.    seq sglctrhinge [roll_transparent]
  2571.  
  2572. call "_grand linear cycle but" dontshow tag gndlincyclebut
  2573.    setup 1x8 2x4
  2574.       array [M2E M6E L7E R7E M1W M5W R4W L4W]
  2575.  
  2576. call "_centers couple up" dontshow tag ctrscoupleup
  2577.    conc coupleup [or_anycall] nullcall []
  2578.  
  2579. call "grand linear cycle@7 but @8" c4a
  2580.    seq gndlincyclebut []
  2581.    seq ctrscoupleup []
  2582.  
  2583. call "trade/stepnfold" dontshow tag tradestpnfld
  2584.             dont_use_in_resolve
  2585.    seq trade [allow_forced_mod]
  2586.    seq stepnfold [allow_forced_mod]
  2587.  
  2588. call "relay the shadow" c1
  2589.             step_to_wave
  2590.    setup 1x8 2x4
  2591.    array [1S 4N 5S 0N 2S 7N 6S 3N]
  2592.  
  2593. call "spin chain the line" c3
  2594.             step_to_wave first_part_visible
  2595.    seq trade []    /* If we use "swing" instead of "trade", it would give warning
  2596.                       "do your part" when done from 1-faced line, which dancers
  2597.                       might misconstrue during the cast off parts.  The behavior
  2598.                       "swing" needs to be changed so that it gives an error
  2599.                       unless the "two-faced" modifier is given. */
  2600.    seq spinchainpart2 []
  2601.    seq spinchainpart3 []
  2602.  
  2603. call "_spin chain the line part 2" dontshow tag spinchainpart2
  2604.    checkpoint slip [] cast_off_34 [conc_force_lines suppress_elongation_warnings]
  2605.  
  2606. call "_spin chain the line part 3" dontshow tag spinchainpart3
  2607.    conc cast_off_34 [] nullcall []
  2608.  
  2609.          /* *** restriction is a crock, too lazy to do it right */
  2610. call "divide the ocean right" c3
  2611.    setup 1x8 2x4 rotate restriction wave_only
  2612.    array [6N 1N 4S 4S 2S 5S 3S 3S]
  2613. call "divide the ocean left" c3
  2614.    setup 1x8 2x4 rotate restriction wave_only
  2615.    array [6N 1N 4N 4N 2S 5S 3N 3N]
  2616. call "divide the sea right" c3
  2617.    setup 1x8 2x4 rotate restriction wave_only
  2618.    array [5N 2N 4S 4S 1S 6S 3S 3S]
  2619. call "divide the sea left" c3
  2620.    setup 1x8 2x4 rotate restriction wave_only
  2621.    array [5N 2N 4N 4N 1S 6S 3N 3N]
  2622.  
  2623. call "_along" dontshow tag along
  2624.    setup 1x8 2x4 rotate
  2625.    array [0N 2S 0S 6S 7S 5N 7N 1N]
  2626.  
  2627. call "_an anchor" dontshow tag ananchor
  2628.    setup 1x8 qtag
  2629.    array [1S 3S 2N 4N 0S 7S 6N 5N]
  2630.  
  2631. call "@2swing @3along" c2
  2632.    seq swing [or_anycall]
  2633.    seq along []
  2634.  
  2635. call "@2swing @3an anchor" c4
  2636.    seq swing [or_anycall]
  2637.    seq ananchor []
  2638.  
  2639. call "@2cast @3an anchor" c4
  2640.    seq cast_off_34 [or_anycall]
  2641.    seq ananchor []
  2642.  
  2643. call "relay your pleasure" c4a
  2644.    setup 1x8 qtag rotate restriction forbidden wave_only
  2645.    array [5N 3N 5N 6S 0S 3S 0S 6N]
  2646.  
  2647. call "shake and rattle" c3
  2648.             reverse_means_mirror
  2649.    setup 2x2 2x2
  2650.       array [CR1W CR2W AL3W AL0W]
  2651.             alternate_definition [single] c4
  2652.    setup 2x1 1x2 rotate
  2653.       array [AL0S CR1S]
  2654.  
  2655. call "3X3 shake and rattle" c4
  2656.             left_means_mirror
  2657.    setup 2x3 2x3 rotate
  2658.       array [CR0S CR1S CR2S AL3S AL4S AL5S]
  2659.  
  2660. call "4X4 shake and rattle" c4
  2661.             left_means_mirror
  2662.    setup 2x4 2x4 rotate
  2663.       array [CR0S CR1S CR2S CR3S AL4S AL5S AL6S AL7S]
  2664.  
  2665. call "catch @1@9" c2
  2666.             split_like_square_thru cross_is_inherited
  2667.             left_means_mirror neednumber
  2668.    seq touch [inherit_left]
  2669.    seq crosslockit [repeat_nm1]
  2670.    seq slip [or_anycall]
  2671.    seq stepnfold [inherit_cross]
  2672.  
  2673. call "@g@eright@f on @9" c4a
  2674.             split_like_square_thru
  2675.             left_means_mirror neednumber
  2676.    seq touch [inherit_left]
  2677.    seq crosslockit [repeat_nm1]
  2678.    seq finish_right_on []
  2679.  
  2680. call "square thru @9" mainstream
  2681.             split_like_square_thru
  2682.             left_means_mirror neednumber
  2683.    seq touch [inherit_left]
  2684.    seq crosslockit [repeat_nm1]
  2685.    seq natstepthru []
  2686.  
  2687. call "square turn thru @9" c3x
  2688.             split_like_square_thru
  2689.             left_means_mirror neednumber
  2690.    seq touch [inherit_left]
  2691.    seq crosslockit [repeat_nm1]
  2692.    seq natturnthru []
  2693.  
  2694. call "step thru" mainstream
  2695.    setup 1x2 1x2 rotate
  2696.       array [Z0W 0]
  2697.  
  2698. call "_natural step thru" dontshow tag natstepthru
  2699.    setup 1x2 1x2 rotate
  2700.       array [Z0W Z0W]
  2701.  
  2702. call "turn thru" mainstream tag turnthru
  2703.             step_to_wave left_means_mirror
  2704.    setup 1x2 1x2 rotate
  2705.       array [C1E 0]
  2706.  
  2707. call "_natural turn thru" dontshow tag natturnthru
  2708.    setup 1x2 1x2 rotate
  2709.       array [C1E A1E]
  2710.  
  2711. call "pair off" a1
  2712.    setup 2x2 2x2
  2713.       array [0 0 R2E L3W]
  2714.    setup 2x4 2x4
  2715.       array [0 0 0 0 R4E R5E L6W L7W]
  2716.  
  2717. call "short and sweet" c4a
  2718.             reverse_means_mirror
  2719.    setup 2x2 2x2
  2720.       array [R1E R2W M3W R0E]
  2721.  
  2722. call "short cut" c4a
  2723.             reverse_means_mirror
  2724.    setup 2x2 2x2
  2725.       array [0 0 M3W R0E]
  2726.  
  2727. call "nip and tuck" c4a
  2728.             left_means_mirror
  2729.    setup 2x2 2x2
  2730.       array [CR3W CR2W 0 0]
  2731.  
  2732. call "fan thru" c3x
  2733.             rear_back_from_r_wave left_means_mirror
  2734.    setup 2x2 2x2
  2735.       array [0 0 AM3S ZM0N]
  2736.  
  2737. call "fan thru to a wave" c3x
  2738.             rear_back_from_r_wave left_means_mirror
  2739.    setup 2x2 1x4
  2740.       array [0 0 M1S M0N]
  2741.  
  2742. call "cross trail thru" mainstream tag crosstrail
  2743.    setup 2x2 2x2
  2744.       array [0 0 ZM0N ZM1N]
  2745.  
  2746. call "turn and Q" c4a
  2747. /* **** should be able to do this split, need another descriptor,
  2748.       "split_like_square_thru" won't do */
  2749.             rear_back_from_r_wave left_means_mirror
  2750.    setup 2x2 2x2
  2751.       array [0 0 2E 3W]
  2752.  
  2753. call "turn and flip" c4
  2754.             left_means_mirror
  2755.    setup 2x2 2x2
  2756.       array [0 0 AL3S CM2S]
  2757.  
  2758. call "right and left thru" mainstream
  2759.             rear_back_from_r_wave
  2760.    setup 2x2 2x2 restriction not_tboned
  2761.       array [0 0 AL0S AL1S]
  2762.  
  2763. call "turn and left thru" c3x
  2764.             rear_back_from_r_wave
  2765.    setup 2x2 2x2 restriction not_tboned
  2766.       array [0 0 L3N L2N]
  2767.  
  2768. call "@hflutter wheel" mainstream
  2769.             rear_back_from_qtag reverse_means_mirror
  2770.    setup 2x2 2x2
  2771.       array [0 0 2N 1S]
  2772.             alternate_definition [single] mainstream
  2773.    setup 4x1 2x2
  2774.       array [2S 3N 0 0]
  2775.  
  2776. call "@hladies chain" mainstream
  2777.             rear_back_from_qtag
  2778.    setup 2x2 2x2
  2779.       preds "Must be normal couples."
  2780.          if boyp [0 0 0 L3N]
  2781.          if girlp [0 0 L0S 0]
  2782.             alternate_definition [single] mainstream
  2783.    setup 4x1 2x2
  2784.       array [L0N L1S 0 0]
  2785.  
  2786. call "flare the star" c4a
  2787.             reverse_means_mirror
  2788.    setup 2x2 2x2
  2789.       array [0 0 L2N L1S]
  2790.  
  2791. call "bingo" c3 tag bingo
  2792.    simple_funny
  2793.    setup 2x2 2x2 restriction wave_only
  2794.       array [AL0E CR1W AL0W CR1E]
  2795.  
  2796. call "stack the line" c2
  2797.             left_means_mirror
  2798.    setup 2x2 2x2 restriction peelable_box
  2799.       array [1E 3W 2W 0E]
  2800.  
  2801. call "reverse the pass" c3
  2802.    setup 2x2 2x2 restriction all_facing_same
  2803.       array [M2S M3S L0S R1S]
  2804. call "reverse the pass 1/3" c3
  2805.    setup 2x2 2x2 restriction all_facing_same
  2806.       array [R1S L0S M2N M3N]
  2807. call "reverse the pass 2/3" c3
  2808.    setup 2x2 2x2 restriction all_facing_same
  2809.       array [2S 3S 1N 0N]
  2810.  
  2811. call "zoom" mainstream
  2812.    setup 2x2 2x2 restriction forbidden peelable_box
  2813.       array [L3N R2N M1N M0N]
  2814.  
  2815. call "zing" c1
  2816.    setup 2x2 2x2 restriction peelable_box
  2817.       array [L3E R2W L1W R0E]
  2818.  
  2819. call "split trade circulate" c2
  2820.    simple_funny
  2821.    setup 2x2 2x2 restriction magic_only
  2822.       array [R1S L0S M0N M1N]
  2823.  
  2824. call "cross walk and dodge" c3
  2825.    simple_funny
  2826.    setup 2x2 2x2 restriction unusual magic_only
  2827.       array [M1N M0N M0N M1N]
  2828.  
  2829. call "split trade couple up" c3x
  2830.    simple_funny
  2831.    setup 2x2 2x2 restriction magic_only
  2832.       array [R1S L0S R0S L1S]
  2833.  
  2834. call "1/2 split trade circulate" c2
  2835.             dont_use_in_resolve take_right_hands
  2836.    /* We have to use the "forbidden" option, since this def'n
  2837.       is slightly sleazy, and wouldn't do the right thing
  2838.       from a leftie box. */
  2839.    setup 2x2 dmd rotate restriction forbidden magic_only
  2840.       array [R0N L0S M1W M3W]
  2841.  
  2842. call "box transfer" a2
  2843.    setup 2x2 2x2 restriction forbidden wave_only
  2844.       array [R2W L3E M2E M3W]
  2845.  
  2846. call "box checkmate" c3a
  2847.    setup 2x2 2x2 restriction wave_only
  2848.       array [R2W L3E M0W M1E]
  2849.  
  2850. call "_leads run" dontshow tag leadrun
  2851.    setup 2x2 2x2 restriction wave_only
  2852.       array [R1S L0S M3N M2N]
  2853.  
  2854. call "_beaux run" dontshow tag beaurun
  2855.    setup 1x2 1x2
  2856.       array [R1S M0N]
  2857.  
  2858. call "_leads kickoff" dontshow tag leadkick
  2859.    setup 2x2 2x2
  2860.       array [CR1W AL0E AM3W CM2E]
  2861.  
  2862. call "_beaux kickoff" dontshow tag beaukick
  2863.    setup 1x2 1x2
  2864.       array [CR1W AM0W]
  2865.  
  2866. call "@6 run" mainstream
  2867.    setup 1x2 1x2
  2868.       preds "Can't have both people run."
  2869.          if select_near_unselect [CR1S AL0S]
  2870.          if unselect_near_select [ZM1N ZM0N]
  2871.          if unselect_near_unselect [ZM0N ZM1N]
  2872.  
  2873. call "@6 kickoff" c2 tag designeeskick
  2874.    setup 2x2 2x2
  2875.       preds "Can't tell who is kicking off."
  2876.          if select [CR1W AL0E AL3E CR2W]
  2877.          if unselect [C1E A0W A3W C2E]    /* Roll is illegal. */
  2878.    setup 1x2 1x2
  2879.       preds "Can't tell who is kicking off."
  2880.          if select [CR1W AL0E]
  2881.          if unselect [C1E A0W]    /* Roll is illegal. */
  2882.  
  2883. call "bounce the @6" c2
  2884.    setup 1x4 2x2 restriction 2fl_only
  2885.       preds "Can't tell who is designated."
  2886.          if select [R0S R1S L1S L0S]
  2887.          if unselect [M0N M1N M1N M0N]
  2888.             alternate_definition [single] c2
  2889.    setup 1x2 1x2 rotate
  2890.       preds "Can't tell who is designated."
  2891.          if select [R0E L0E]
  2892.          if unselect [M0W M0W]
  2893.  
  2894. call "mark time" c4a
  2895.    setup 4x2 2x4 rotate restriction wave_only
  2896.       array [L3S L4S R6N R1N L2S L5S R7N R0N]
  2897.             alternate_definition [single] c4a
  2898.    setup 2x2 1x4
  2899.       array [R1E L3W R0E L2W]
  2900.  
  2901. call "@6 mark time" c4a
  2902.    setup 4x2 2x4 rotate
  2903.       preds "Can't tell who is selected."
  2904.          if select [0 0 R6N R1N L2S L5S 0 0]
  2905.          if unselect [L3S L4S R3S R4S L7N L0N R7N R0N]
  2906.             alternate_definition [single] c4a
  2907.    setup 2x2 1x4
  2908.       preds "Can't tell who is selected."
  2909.          if select [R1E L3W 0 0]
  2910.          if unselect [R2W L0E R0E L2W]
  2911.  
  2912. call "box counter rotate" a2 tag boxctrrot
  2913.    simple_funny
  2914.    setup 2x2 2x2
  2915.       array [CR1E AL0W AL1W CR0E]
  2916.  
  2917. call "_split counter rotate" dontshow tag splitctrrot
  2918.    setup 2x2 2x2
  2919.       array [CR1E AL0W AL1W CR0E]
  2920.    setup 1x8 2x4 rotate
  2921.       array [CR7N CR6N AL7S AL6S AL0S AL1S CR0N CR1N]
  2922.  
  2923. call "_counter rotate the star" dontshow tag ctrrotstar
  2924.    setup dmd dmd rotate
  2925.       array [CR0N 0 AL0S 0]
  2926.    setup pmd dmd rotate
  2927.       array [0 CR1N 0 AL1S]
  2928.    setup star star
  2929.       array [CR1E 0 AL1W 0]
  2930.  
  2931. call "box counter couple up" c3x
  2932.    simple_funny
  2933.    setup 2x2 2x2
  2934.       array [CR1W AL0E AL1W CR0E]
  2935.  
  2936. call "single rotate 1/4" c2 tag snglrot1
  2937.             parallel_conc_end       /* This makes it win if we tell the ends only to do it */
  2938.             reverse_means_mirror
  2939.    setup 4x2 2x4 rotate
  2940.       array [L4W L5W L6E L7E L0E L1E L2W L3W]
  2941.    setup 2x4 2x4
  2942.       array [L7S L0S L5S L2S L3N L4N L1N L6N]
  2943.    setup 2x2 2x2
  2944.       array [L3S L0S L1N L2N]
  2945.  
  2946. call "single rotate 1/2" c2 tag snglrot2
  2947.             reverse_means_mirror
  2948.    setup 4x2 2x4
  2949.       array [L4W L5W L6E L7E L0E L1E L2W L3W]
  2950.    setup 2x4 2x4
  2951.       array [L6E L7E L4E L5E L2W L3W L0W L1W]
  2952.    setup 2x2 2x2
  2953.       array [L2E L3E L0W L1W]
  2954.  
  2955. call "@hrotate 1/4" c2 tag rot1
  2956.             reverse_means_mirror
  2957.    setup 4x2 1x8 rotate restriction forbidden couples_only
  2958.       array [L5W L6W L2E L1E L0E L3E L7W L4W]
  2959.    setup 2x4 1x8 restriction forbidden couples_only
  2960.       array [L1S L0S L7S L6S L4N L5N L2N L3N]
  2961.    setup 2x2 1x4 restriction forbidden couples_only
  2962.       array [L1S L0S L2N L3N]
  2963.             /* This is "single file rotate" */
  2964.             alternate_definition [single] c4
  2965.    setup 4x1 1x4 rotate
  2966.       array [L2W L3W L0E L1E]
  2967.  
  2968. call "@hrotate 1/2" c2 tag rot2
  2969.             reverse_means_mirror
  2970.    setup 4x2 1x8 restriction forbidden couples_only
  2971.       array [L5W L6W L2E L1E L0E L3E L7W L4W]
  2972.    setup 2x4 2x4 rotate restriction forbidden couples_only
  2973.       array [L5N L4N L2N L3N L0S L1S L7S L6S]
  2974.    setup 2x2 1x4 rotate restriction forbidden couples_only
  2975.       array [L3N L2N L0S L1S]
  2976.             /* This is "single file rotate" */
  2977.             alternate_definition [single] c4
  2978.    setup 4x1 1x4
  2979.       array [L2W L3W L0E L1E]
  2980.  
  2981. call "single rotate 1/4 while the others @1" c1
  2982.             sequence_starter reverse_means_mirror dont_use_in_resolve
  2983.       /* We need "conc_force_lines" because we already had so-and-so
  2984.          go into the center, so they perceive the elongation of the
  2985.          setup incorrectly.  The call "single rotate" has the
  2986.          "parallel_conc_end" flag on, saying to go to antispots,
  2987.          which is not what we want here. */
  2988.    crossconc nullcall [mandatory_anycall] snglrot1 [inherit_reverse conc_force_lines]
  2989.  
  2990. call "single rotate 1/2 while the others @1" c1
  2991.             sequence_starter reverse_means_mirror dont_use_in_resolve
  2992.    crossconc nullcall [mandatory_anycall] snglrot2 [inherit_reverse conc_force_lines]
  2993.  
  2994. call "rotate 1/4 while the others @1" c1
  2995.             sequence_starter reverse_means_mirror dont_use_in_resolve
  2996.    crossconc nullcall [mandatory_anycall] rot1 [inherit_reverse]
  2997.  
  2998. call "rotate 1/2 while the others @1" c1
  2999.             sequence_starter reverse_means_mirror dont_use_in_resolve
  3000.    crossconc nullcall [mandatory_anycall] rot2 [inherit_reverse]
  3001.  
  3002. call "trixie" c3x tag trixie
  3003.    setup 2x2 2x2
  3004.       array [CR0E AL1W CR2E AL3W]
  3005.  
  3006. call "trixie spin" c3x
  3007.             visible_fractions
  3008.    seq trixie []
  3009.    seq cast_off_34 []
  3010.    seq ctrcrossrun []
  3011.  
  3012. call "swap around" a1
  3013.             reverse_means_mirror
  3014.    setup 2x2 2x2
  3015.       array [0 0 ZM1N CR2S]
  3016.  
  3017. call "circle 4 clockwise" dontshow tag circle4
  3018.             reverse_means_mirror
  3019.    setup 2x2 2x2
  3020.       array [0 0 CR3E CR0E]
  3021.  
  3022. call "circle by @b X 1/4" c1
  3023.             reverse_means_mirror neednumber
  3024.    seq circle4 [inherit_reverse repeat_n]
  3025.    seq lft_touch_1_4 [inherit_left]
  3026.  
  3027. call "circle by @b X 1/2" c1
  3028.             reverse_means_mirror neednumber
  3029.    seq circle4 [inherit_reverse repeat_n]
  3030.    seq lft_touch_1_2 [inherit_left]
  3031.  
  3032. call "circle by @b X 3/4" c1
  3033.             reverse_means_mirror neednumber
  3034.    seq circle4 [inherit_reverse repeat_n]
  3035.    seq lft_touch_3_4 [inherit_left]
  3036.  
  3037. call "sweep @b (clockwise)" mainstream
  3038.             reverse_means_mirror neednumber
  3039.    seq circle4 [allow_forced_mod inherit_reverse repeat_n]
  3040.  
  3041. call "by golly (clockwise)" c3
  3042.             reverse_means_mirror
  3043.    setup 2x2 2x2
  3044.       array [0 0 1E 0E]
  3045.  
  3046. call "clean sweep @b" c3x
  3047.             reverse_means_mirror neednumber visible_fractions
  3048.    seq circle4 [allow_forced_mod inherit_reverse repeat_n]
  3049.    seq lft_veer_left [allow_forced_mod inherit_left]
  3050.    seq tagtheline [allow_forced_mod inherit_left]
  3051.    seq leadsrollright [allow_forced_mod inherit_left]
  3052.  
  3053. call "walk and dodge" mainstream tag walkndodge
  3054.    setup 2x2 2x2 restriction unusual wave_only
  3055.       array [ZM1N ZM0N ZM1N ZM0N]
  3056.             alternate_definition [grand] c3x
  3057.    setup 4x2 2x4 restriction unusual wave_only
  3058.       array [ZM2N ZM5N ZM3N ZM4N ZM3N ZM4N ZM2N ZM5N]
  3059.  
  3060. call "3X3 walk and dodge" c4
  3061.    setup 3x2 2x3 rotate restriction forbidden wave_only
  3062.       array [ZM0W ZM1W ZM2W ZM0W ZM1W ZM2W]
  3063.  
  3064. call "4X4 walk and dodge" c4
  3065.    setup 4x2 2x4 rotate restriction forbidden wave_only
  3066.       array [ZM0W ZM1W ZM2W ZM3W ZM0W ZM1W ZM2W ZM3W]
  3067.  
  3068. call "with the flow (clockwise)" c2
  3069.             reverse_means_mirror
  3070.    setup 2x2 2x2
  3071.       array [0 0 3N 0N]
  3072.  
  3073. call "couple up" c3a tag coupleup
  3074.         visible_fractions funny_is_inherited
  3075.    seq box_circ [inherit_funny]
  3076.    seq fin_coupleup [roll_transparent]
  3077.  
  3078. call "like a couple up" c3a tag fin_coupleup
  3079.    setup 2x2 2x2
  3080.       array [CR0S AL1S M2N M3N]
  3081.  
  3082. call "3X3 couple up" c4
  3083.    setup 3x2 2x3 rotate restriction forbidden wave_only
  3084.       array [CR0E CR1E CR2E AL0E AL1E AL2E]
  3085.  
  3086. call "4X4 couple up" c4
  3087.    setup 4x2 2x4 rotate restriction forbidden wave_only
  3088.       array [CR0E CR1E CR2E CR3E AL0E AL1E AL2E AL3E]
  3089.  
  3090. call "_divide and move along" dontshow tag div_move_along
  3091.    setup 2x2 2x2
  3092.       array [0S 1S 2N 3N]
  3093.  
  3094. call "split swap" c2
  3095.             reverse_means_mirror
  3096.    setup 2x2 2x2
  3097.       array [0 0 R1E M2E]
  3098.  
  3099. call "3X3 split swap" c4
  3100.             left_means_mirror
  3101.    setup 2x3 2x3 rotate
  3102.       array [0 0 0 R0N R1N R2N]
  3103.  
  3104. call "4X4 split swap" c4
  3105.             left_means_mirror
  3106.    setup 2x4 2x4 rotate
  3107.       array [0 0 0 0 R0N R1N R2N R3N]
  3108.  
  3109. call "arky star thru" a2
  3110.    setup 2x2 2x2
  3111.       array [0 0 L1W R0E]
  3112.  
  3113. call "curlique" c3a tag curlique
  3114.             rear_back_from_r_wave left_means_mirror
  3115.    setup 2x1 1x2
  3116.       preds "Must be facing opposite sex."
  3117.          if x12_boy_facing_girl [R1E 0]
  3118.          if x12_girl_facing_boy [L1E 0]
  3119.  
  3120. call "curli-cross" c3a
  3121.             grand_is_inherited visible_fractions
  3122.    seq curlique [allow_forced_mod]
  3123.    seq and_cross [inherit_grand]
  3124.  
  3125. call "mesh" c3x
  3126.             reverse_means_mirror
  3127.    setup 2x1 1x2 rotate
  3128.       preds "???"
  3129.          if columns_tandem [M1W M0W]
  3130.          if always         [M1W 0]
  3131.  
  3132. call "curli-wheel" c3a
  3133.             rear_back_from_r_wave left_means_mirror
  3134.    setup 2x2 2x2
  3135.       preds "Must be facing opposite sex."
  3136.          if x22_boy_facing_girl [0 0 2W 1W]
  3137.          if x22_girl_facing_boy [0 0 2W 1W]
  3138. call "curli-cross the top" c4
  3139.             rear_back_from_r_wave left_means_mirror
  3140.    setup 2x2 1x4 rotate
  3141.       preds "Must be facing opposite sex."
  3142.          if x22_boy_facing_girl [0 0 2S 1S]
  3143.          if x22_girl_facing_boy [0 0 2S 1S]
  3144.  
  3145. call "cross and turn" c1
  3146.             reverse_means_mirror
  3147.    simple_funny
  3148.    setup 2x2 2x2
  3149.       array [0 0 A2S Z1N]
  3150.  
  3151. call "circle to a wave" c2
  3152.             reverse_means_mirror
  3153.    setup 2x2 2x2
  3154.       array [0 0 0E 1E]
  3155.  
  3156. call "3X3 circle to a wave" c4
  3157.             reverse_means_mirror
  3158.    setup 2x3 2x3
  3159.       array [0 0 0 0E 1E 2E]
  3160.  
  3161. call "4X4 circle to a wave" c4
  3162.             reverse_means_mirror
  3163.    setup 2x4 2x4
  3164.       array [0 0 0 0 0E 1E 2E 3E]
  3165.  
  3166. call "cross back" c2 tag crossback
  3167.    simple_funny
  3168.    setup 2x2 2x2 restriction wave_only
  3169.       array [0S 1S 0N 1N]
  3170.  
  3171. call "shakedown" c1
  3172.             left_means_mirror
  3173.    setup 2x2 2x2
  3174.       array [CR1W CR2W 0 0]
  3175.             alternate_definition [single] c4
  3176.    setup 2x1 1x2 rotate
  3177.       array [0 CR1S]
  3178.  
  3179. call "3X3 shakedown" c4
  3180.             left_means_mirror
  3181.    setup 2x3 2x3 rotate
  3182.       array [CR0S CR1S CR2S 0 0 0]
  3183.  
  3184. call "4X4 shakedown" c4
  3185.             left_means_mirror
  3186.    setup 2x4 2x4 rotate
  3187.       array [CR0S CR1S CR2S CR3S 0 0 0 0]
  3188.  
  3189. call "mini shake" c3x
  3190.             left_means_mirror
  3191.    setup 2x2 2x2
  3192.       array [CR1W CR2W AL1W CR0E]
  3193.  
  3194. call "wheel thru" a1
  3195.             left_means_mirror
  3196.    setup 2x2 2x2
  3197.       array [0 0 CR2E CR1E]
  3198.  
  3199. call "3X3 wheel thru" c4
  3200.             left_means_mirror
  3201.    setup 2x3 2x3 rotate
  3202.       array [0 0 0 CR2N CR1N CR0N]
  3203.  
  3204. call "4X4 wheel thru" c4
  3205.             left_means_mirror
  3206.    setup 2x4 2x4 rotate
  3207.       array [0 0 0 0 CR3N CR2N CR1N CR0N]
  3208.  
  3209. call "@glead @eright@f" mainstream
  3210.             left_means_mirror
  3211.    setup 2x2 2x2
  3212.       array [0 0 CR2E CR1E]
  3213.  
  3214. call "wheel fan thru" c1
  3215.             left_means_mirror
  3216.    setup 2x2 2x2
  3217.       array [0 0 CR2E C3W]
  3218.  
  3219. call "wheel fan & cross thru" c3x
  3220.             left_means_mirror
  3221.    setup 2x2 2x2
  3222.       array [0 0 C1E C0W]
  3223.  
  3224. call "ripoff" c3
  3225.             reverse_means_mirror
  3226.    setup 2x2 2x2
  3227.       array [CR1S CR2N ZM3N ZM0N]
  3228.  
  3229. call "boomerang" c3
  3230.    setup 2x2 2x2 restriction forbidden peelable_box
  3231.       preds "Can't tell which definition to use."
  3232.          if x22_miniwave [L3N R2N M3S M2S]
  3233.          if x22_couple [L3N R2N L0S R1S]
  3234.  
  3235. call "_leads wheel" dontshow tag leadswheel
  3236.             reverse_means_mirror
  3237.    setup 2x2 2x2 restriction all_facing_same
  3238.       array [L1S M0S M2N M3N]
  3239.  
  3240. call "_everyone wheel" dontshow tag everyonewheel
  3241.             reverse_means_mirror
  3242.    setup 2x2 2x2
  3243.       array [L1S M0S 0 0]
  3244.  
  3245. call "_quarter wheel" dontshow tag quarterwheel
  3246.             reverse_means_mirror parallel_conc_end
  3247.    setup 1x4 2x2
  3248.       array [0 0 AL1W AL2W]
  3249.  
  3250. call "_three quarter wheel" dontshow tag threequarterwheel
  3251.             reverse_means_mirror parallel_conc_end
  3252.    setup 1x4 2x2
  3253.       array [AL0E AL3E 0 0]
  3254.  
  3255. call "_finish wheel the ocean" dontshow tag finwheelocean
  3256.             reverse_means_mirror
  3257.    setup 2x2 2x2
  3258.       /* Note that we allow left miniwaves, so we can have
  3259.          so-and-so start a wheel the ocean. */
  3260.       array [0 Z1N Z0N Z3N]
  3261.  
  3262. call "_finish wheel the sea" dontshow tag finwheelsea
  3263.             reverse_means_mirror
  3264.    setup 2x2 2x2
  3265.       array [0 0 Z1N Z2N]
  3266.  
  3267. call "_finish wheel to a diamond" dontshow tag finwheeltodiamond
  3268.             reverse_means_mirror
  3269.    setup 2x2 dmd rotate
  3270.       array [0 0 3W L2S]
  3271.  
  3272. call "leads wheel the ocean" c2
  3273.             reverse_means_mirror first_part_visible
  3274.    seq leadswheel [inherit_reverse]
  3275.    seq finwheelocean [inherit_reverse]
  3276.  
  3277. call "leads wheel the sea" c2
  3278.             reverse_means_mirror first_part_visible
  3279.    seq leadswheel [inherit_reverse]
  3280.    seq finwheelsea [inherit_reverse]
  3281.  
  3282. call "leads wheel to a diamond" c4
  3283.             reverse_means_mirror first_part_visible
  3284.    seq leadswheel [inherit_reverse]
  3285.    seq finwheeltodiamond [inherit_reverse]
  3286.  
  3287. call "wheel the ocean" c2
  3288.             reverse_means_mirror first_part_visible
  3289.    seq everyonewheel [inherit_reverse]
  3290.    seq finwheelocean [inherit_reverse]
  3291.  
  3292. call "wheel the sea" c2
  3293.             reverse_means_mirror first_part_visible
  3294.    seq everyonewheel [inherit_reverse]
  3295.    seq finwheelsea [inherit_reverse]
  3296.  
  3297. call "wheel to a diamond" c4
  3298.             reverse_means_mirror first_part_visible
  3299.    seq everyonewheel [inherit_reverse]
  3300.    seq finwheeltodiamond [inherit_reverse]
  3301.  
  3302. call "quarter wheel the ocean" c3x
  3303.             reverse_means_mirror first_part_visible
  3304.    seq quarterwheel [inherit_reverse]
  3305.    seq finwheelocean [inherit_reverse]
  3306.  
  3307. call "quarter wheel the sea" c3x
  3308.             reverse_means_mirror first_part_visible
  3309.    seq quarterwheel [inherit_reverse]
  3310.    seq finwheelsea [inherit_reverse]
  3311.  
  3312. call "quarter wheel to a diamond" c4
  3313.             reverse_means_mirror first_part_visible
  3314.    seq quarterwheel [inherit_reverse]
  3315.    seq finwheeltodiamond [inherit_reverse]
  3316.  
  3317. call "three quarter wheel the ocean" c3x
  3318.             reverse_means_mirror first_part_visible
  3319.    seq threequarterwheel [inherit_reverse]
  3320.    seq finwheelocean [inherit_reverse]
  3321.  
  3322. call "three quarter wheel the sea" c3x
  3323.             reverse_means_mirror first_part_visible
  3324.    seq threequarterwheel [inherit_reverse]
  3325.    seq finwheelsea [inherit_reverse]
  3326.  
  3327. call "three quarter wheel to a diamond" c4
  3328.             reverse_means_mirror first_part_visible
  3329.    seq threequarterwheel [inherit_reverse]
  3330.    seq finwheeltodiamond [inherit_reverse]
  3331.  
  3332. /* **** These should be done by parts, as above.  It will be a lot better
  3333.    (as will many other things) when 3X3 and 4X4 are heritable modifiers. */
  3334. call "3X3 wheel the ocean" c4
  3335.             reverse_means_mirror
  3336.    setup 2x3 2x3 rotate
  3337.       array [M0E M1E M2E 0 0 0]
  3338.  
  3339. call "4X4 wheel the ocean" c4
  3340.             reverse_means_mirror
  3341.    setup 2x4 2x4 rotate
  3342.       array [M0E M1E M2E M3E 0 0 0 0]
  3343.  
  3344. call "3X3 wheel the sea" c4
  3345.             reverse_means_mirror
  3346.    setup 2x3 2x3 rotate
  3347.       array [M5E M4E M3E 0 0 0]
  3348.  
  3349. call "4X4 wheel the sea" c4
  3350.             reverse_means_mirror
  3351.    setup 2x4 2x4 rotate
  3352.       array [M7E M6E M5E M4E 0 0 0 0]
  3353.  
  3354. call "3X3 leads wheel the ocean" c4
  3355.             reverse_means_mirror
  3356.    setup 2x3 2x3 rotate restriction all_facing_same
  3357.       array [M0E M1E M2E M5W M4W M3W]
  3358.  
  3359. call "4X4 leads wheel the ocean" c4
  3360.             reverse_means_mirror
  3361.    setup 2x4 2x4 rotate restriction all_facing_same
  3362.       array [M0E M1E M2E M3E M7W M6W M5W M4W]
  3363.  
  3364. call "3X3 leads wheel the sea" c4
  3365.             reverse_means_mirror
  3366.    setup 2x3 2x3 rotate restriction all_facing_same
  3367.       array [M5E M4E M3E M0W M1W M2W]
  3368.  
  3369. call "4X4 leads wheel the sea" c4
  3370.             reverse_means_mirror
  3371.    setup 2x4 2x4 rotate restriction all_facing_same
  3372.       array [M7E M6E M5E M4E M0W M1W M2W M3W]
  3373.  
  3374. call "@gchase @eright@f" plus
  3375.             left_means_mirror
  3376.    setup 2x2 2x2
  3377.       array [M2S R3N 0 0]
  3378.  
  3379. call "mini chase" c3a
  3380.             left_means_mirror
  3381.    setup 2x2 2x2
  3382.       array [R1E R2W 0 0]
  3383.  
  3384. call "fan and cross thru" c4
  3385.             rear_back_from_r_wave left_means_mirror
  3386.    setup 2x2 2x2
  3387.       array [0 0 2S 1N]
  3388.  
  3389. call "square chain thru" a1
  3390.             split_like_square_thru
  3391.             rear_back_from_r_wave left_means_mirror
  3392.    setup 2x2 2x2
  3393.       array [0 0 2E 1E]
  3394.  
  3395. call "square chain the top" c1
  3396.             split_like_square_thru
  3397.             rear_back_from_r_wave left_means_mirror
  3398.    setup 2x2 2x2
  3399.       array [0 0 3S 0N]
  3400.  
  3401. call "@h@1@7 like a @8recoil" c3a tag recoil
  3402.             single_is_inherited cross_is_inherited visible_fractions
  3403.    seq splitrecycle [or_anycall inherit_single inherit_cross]
  3404.    seq stepnfold [inherit_cross]
  3405.  
  3406. call "right anchor 1/4" c3x
  3407.    setup 2x2 2x2
  3408.       array [0 0 R2E R1E]
  3409.  
  3410. call "right anchor 3/4" c3x
  3411.    setup 2x2 2x2
  3412.       array [R2W R1W 0 0]
  3413.  
  3414. call "follow your leader" c3a
  3415.    setup 2x4 2x4 restriction wave_only
  3416.       array [4W 6E 5W 7E 4E 6W 5E 7W]
  3417.  
  3418. call "3X1 follow your leader" c4
  3419.             left_means_mirror
  3420.    setup 2x4 2x4
  3421.       array [4W 5W 0 6W 0 0 7W 0]
  3422.  
  3423. call "1X3 follow your leader" c4
  3424.             left_means_mirror
  3425.    setup 2x4 2x4
  3426.       array [0 4W 0 0 5W 0 6W 7W]
  3427.  
  3428. /* ****** Need to implement "restriction wave_only" for 2x6 and 2x8, and use same. */
  3429. call "3X3 follow your leader" c4
  3430.    setup 2x6 2x6
  3431.       array [6W 9E 7W 10E 8W 11E 6E 9W 7E 10W 8E 11W]
  3432.  
  3433. /* ****** Need to implement "restriction wave_only" for 2x6 and 2x8, and use same. */
  3434. call "4X4 follow your leader" c4
  3435.    setup 2x8 2x8
  3436.       array [8W 12E 9W 13E 10W 14E 11W 15E 8E 12W 9E 13W 10E 14W 11E 15W]
  3437.  
  3438. call "gee whiz" c3
  3439.    setup 2x4 2x4 rotate
  3440.       preds "Can't do this call."
  3441.          if lines_miniwave [M5E M5E M2E M2E M0W M0W M7W M7W]
  3442.          if lines_couple [R0E R1E L6E L7E M0W M1W M7W M6W]
  3443.  
  3444. call "straight fire" c3x
  3445.    setup 2x4 2x4 rotate restriction 2fl_only
  3446.       array [R0E M1E M6E L7E M1W M4E M3E M6W]
  3447.  
  3448. call "fiddle around" c3x
  3449.    setup 2x4 2x4 rotate restriction 2fl_only
  3450.       array [R0E R1W L6W L7E M1W L4W R3W M6W]
  3451.  
  3452. call "lead the class" c3x
  3453.    setup 2x4 2x4 restriction wave_only
  3454.       array [R4W L6E R5W L7E L0E R6E L5W R3W]
  3455.  
  3456. call "scatter circulate" c3
  3457.    simple_funny
  3458.    setup 2x4 2x4 restriction 2fl_only
  3459.       array [R1S R3S L0S L2S M3N M1N M2N M0N]
  3460.    setup 4x2 2x4
  3461.       array [M1N M5N 0 0 0 0 M2N M6N]
  3462.  
  3463. call "go first class" c3x
  3464.    simple_funny
  3465.    setup 2x4 2x4 restriction wave_only
  3466.       array [R2S L0S R3S L1S M3N M1N M2N M0N]
  3467.    setup 4x2 2x4
  3468.       array [M1N M5N 0 0 0 0 M2N M6N]
  3469.  
  3470. call "with a touch of class" c4a
  3471.    setup 2x4 2x4 restriction wave_only
  3472.       array [5S 7S 4S 6S 0S 6N 5N 3S]
  3473.  
  3474. call "link up" c3a
  3475.    setup 2x4 2x4 restriction 2fl_only
  3476.    array [7S 0S 3S 4S 1S 6S 5S 2S]
  3477. call "and anything" c3          /* **** not right, need to allow for pushy cast */
  3478.    setup 2x4 2x4
  3479.    array [0S 2S 1S 3S 4S 6S 5S 7S]
  3480. call "set back" c4a
  3481.    setup 2x4 2x4
  3482.    array [5S 7S 4S 6S 5N 7N 4N 6N]
  3483.  
  3484. call "trade the diamond" c3
  3485.    seq trade_duck []
  3486.    seq sglctrhinge []
  3487.    seq diamondcirc [allow_forced_mod]
  3488.    seq sglctrhinge []
  3489.  
  3490. call "_hinge and single centers hinge" dontshow tag hingesglctrhinge
  3491.    seq hinge []
  3492.    seq sglctrhinge []
  3493.  
  3494. call "_single centers hinge" dontshow tag sglctrhinge
  3495.             dont_use_in_resolve left_means_mirror
  3496.    singleconc hinge [inherit_left] nullcall []
  3497.  
  3498. call "you all" c4 tag youall
  3499.             left_means_mirror
  3500.    singleconc hinge [inherit_left] uturnback []
  3501.  
  3502. call "beep beep" c4
  3503.             visible_fractions
  3504.    seq hinge [allow_forced_mod]
  3505.    seq youall []
  3506.  
  3507. call "ends cut in" c4
  3508.    setup 2x4 2x4
  3509.    array [2S 0S 3S 1S 2N 4S 7S 1N]
  3510. call "centers cut out" c4
  3511.    setup 2x4 2x4
  3512.    array [1S 3S 0S 2S 5S 3N 0N 6S]
  3513. call "relay the diamond" c4a
  3514.             step_to_wave
  3515.    setup 2x4 2x4 restriction wave_only
  3516.    array [3N 5N 6N 0N 3S 1N 2N 0S]
  3517.  
  3518. call "_gamut inner part 1" dontshow tag gamutinner1
  3519.    seq nat34thru []
  3520.    seq tradethewave [allow_forced_mod]
  3521.  
  3522. call "_gamut part 1" dontshow tag gamut1
  3523.    conc gamutinner1 [] dblcirc [conc_demand_lines conc_force_lines]
  3524.  
  3525. call "gamut" c3a
  3526.    seq gamut1 []
  3527.    seq cutdiamond [allow_forced_mod]
  3528.  
  3529. call "ease off" c3a
  3530.    setup 2x4 2x4
  3531.    array [7E 2W 1E 4W 3W 2W 1E 0E]
  3532.  
  3533. call "bias circulate" c3a
  3534.    setup 2x4 2x4 restriction wave_only
  3535.       array [3S 2S 1S 0S 1N 0N 3N 2N]
  3536.  
  3537. call "rotary circulate" c3
  3538.    setup 2x4 2x4 restriction wave_only
  3539.    array [5N 4N 7N 6N 1N 0N 3N 2N]
  3540. call "relay the deucey" plus
  3541.             step_to_wave
  3542.    setup 2x4 2x4 restriction wave_only
  3543.    array [4S 5S 6S 7S 0S 1S 2S 3S]
  3544. call "twin orbit circulate" c3a
  3545.    setup 2x4 2x4 restriction wave_only
  3546.    array [6N 7N 4N 5N 2N 3N 0N 1N]
  3547.  
  3548. call "orbit circulate" c3a
  3549.             left_means_mirror
  3550.    setup 2x4 2x4 restriction wave_only
  3551.       array [R2S R3S R4N R5N M2N M3N M0N M1N]
  3552.  
  3553. call "barrel of fun" c4a
  3554.    setup 2x4 2x4
  3555.    array [2N 4S 1S 3S 0 0 0 0]
  3556.  
  3557. call "roll em" c4a
  3558.             left_means_mirror
  3559.    setup 2x4 2x4
  3560.       array [CR1S CR2S CR3S CR4N 0 0 0 0]
  3561.  
  3562. call "roll out the barrel" c4a
  3563.    setup 2x4 2x4
  3564.    array [1N 6N 7N 0N 0 0 0 0]
  3565. call "line to line" c3
  3566.    setup 2x4 2x4
  3567.    array [0 0 0 0 0S 5N 6N 3S]
  3568. call "plan ahead" c3a
  3569.             rear_back_from_r_wave left_means_mirror
  3570.    setup 2x4 2x4
  3571.    array [0 0 0 0 2W 0E 3W 5W]
  3572. call "take 2" c3
  3573.             left_means_mirror
  3574.    setup 2x4 2x4
  3575.    array [1E 2E 3W 4W 0 0 0 0]
  3576.  
  3577. call "hang loose" c3x
  3578.    setup 2x4 2x4 rotate restriction wave_only
  3579.       array [R7N R1S L6N L0S R2S L0S R7N L5N]
  3580.  
  3581. call "2 steps at a time" c3
  3582.    setup 4x2 2x4 rotate restriction wave_only
  3583.       array [R5S R2S L0N L7N R4S R3S L1N L6N]
  3584.             alternate_definition [cross] c3
  3585.    setup 4x2 2x4 rotate restriction wave_only
  3586.       array [R5S R2S R3S R4S L7N L0N L1N L6N]
  3587.             alternate_definition [magic] c3
  3588.    setup 4x2 2x4 rotate restriction magic_only
  3589.       array [L6N R2S R3S L7N R4S L0N L1N R5S]
  3590.             alternate_definition [magic cross] c3
  3591.    setup 4x2 2x4 rotate restriction magic_only
  3592.       array [L6N R2S L0N R4S L7N R3S L1N R5S]
  3593.  
  3594. call "barge thru" c4
  3595.    setup 2x4 2x4
  3596.    array [0 0 0 0 1W 4W 7E 2E]
  3597. call "wipe out" c4a
  3598.    setup 2x4 2x4
  3599.    array [2N 3S 0S 1N 6N 7S 4S 5N]
  3600. call "stroll down the lane" c4a
  3601.             reverse_means_mirror
  3602.    setup 2x4 2x4
  3603.    array [0 0 0 0 6N 0N 5S 3S]
  3604.  
  3605. call "chuck-a-luck" c3
  3606.    setup 2x4 2x4
  3607.       array [2E 7E 4W 1W 6W 0 0 5E]
  3608.             alternate_definition [cross] c3
  3609.    setup 2x4 2x4
  3610.       array [5E 4W 7E 6W 1W 0 0 2E]
  3611.  
  3612. call "bias trade circulate" c4
  3613.    setup 2x4 2x4 restriction wave_only
  3614.       array [2S 3S 0S 1S 0N 1N 2N 3N]
  3615.  
  3616. call "mix the line" c4
  3617.             left_means_mirror
  3618.    setup 2x4 2x4
  3619.       array [0 0 0 0 CR4E CR3E AL1W AL6W]
  3620.             alternate_definition [single] c4
  3621.    setup 2x2 1x4
  3622.       array [0 0 CR2E AL1W]
  3623.  
  3624. call "bend the line" mainstream tag bendtheline
  3625.             parallel_conc_end
  3626.    setup 1x4 2x2 restriction forbidden couples_only
  3627.       array [CR0E CR3E AL1W AL2W]
  3628.  
  3629. call "3X3 bend the line" c4
  3630.    setup 1x6 2x3 rotate restriction forbidden 3x3couples_only
  3631.       array [CR5N CR4N CR3N AL0S AL1S AL2S]
  3632.   
  3633. call "4X4 bend the line" c4
  3634.    setup 1x8 2x4 rotate restriction forbidden 4x4couples_only
  3635.       array [CR7N CR6N CR4N CR5N AL0S AL1S AL3S AL2S]
  3636.  
  3637. call "retreat the line" c4
  3638.             parallel_conc_end
  3639.    setup 1x4 2x2 restriction forbidden couples_only
  3640.       array [AL3W AL0W CR2E CR1E]
  3641.  
  3642. call "3X3 retreat the line" c4
  3643.    setup 1x6 2x3 rotate restriction forbidden 3x3couples_only
  3644.       array [AL3S AL4S AL5S CR2N CR1N CR0N]
  3645.   
  3646. call "4X4 retreat the line" c4
  3647.    setup 1x8 2x4 rotate restriction forbidden 4x4couples_only
  3648.       array [AL4S AL5S AL7S AL6S CR3N CR2N CR0N CR1N]
  3649.  
  3650. call "ends bend" a1 tag endsbend
  3651.    setup 2x4 2x4 rotate
  3652.       array [R7N M6W M1W L0S 0 M2W M5W 0]
  3653.    setup 4x2 2x4 rotate
  3654.       array [0 M6W M1W 0 0 M2W M5W 0]
  3655.  
  3656. call "square the bases" c1
  3657.    setup 2x4 2x4 rotate
  3658.    array [0 0 0 0 5E 3W 4W 2E]
  3659. call "regroup" c1
  3660.    setup 2x4 2x4 rotate
  3661.    array [4N 1S 6N 3S 0 5N 2S 0]
  3662. call "trip the set" c3a
  3663.    setup 2x4 2x4 rotate
  3664.    array [0S 5N 2S 7N 0 1S 6N 0]
  3665.  
  3666. call "siamese breakdown" c4
  3667.    setup 1x2 1x2 rotate
  3668.       preds "???"
  3669.          if 1x2_beau_or_miniwave [R0E L0E]
  3670.          if always [0 L1E]
  3671.    setup 2x1 1x2 rotate
  3672.       array [L0E R1E]
  3673.  
  3674. call "_cross to dmd part 1" dontshow tag cross_to_dmd_1
  3675.    setup 2x4 2x4
  3676.       array [M1N R3S L0S M2N M5N M3N M0N M6N]
  3677.  
  3678. call "cross to a diamond" c4a
  3679.    seq cross_to_dmd_1 []
  3680.    seq sglctrhinge [roll_transparent]
  3681.  
  3682. call "_cross to wv part 2" dontshow tag cross_to_wv_2
  3683.    setup 2x4 2x4
  3684.       array [R2S M0N M3N L1S M2N M4N M7N M1N]
  3685.  
  3686. call "cross to a wave" c4
  3687.    seq sglctrhinge []
  3688.    seq cross_to_wv_2 []
  3689.  
  3690. call "presto" c4a
  3691.    setup 2x4 2x4 rotate restriction 2fl_only
  3692.    array [1E 2E 5E 6E 7E 4E 3E 0E]
  3693.  
  3694. call "follow and cross" c4
  3695.    setup 2x4 2x4 rotate restriction wave_only
  3696.       array [R6N L6S R1N L1S L0S M4S M3N R7N]
  3697.  
  3698. call "follow and criss-cross" c4
  3699.    setup 2x4 2x4 rotate restriction wave_only
  3700.       array [L6S R6N L1S R1N L0S M4S M3N R7N]
  3701.  
  3702. call "lines walk in" c4
  3703.    setup 2x4 2x4 rotate
  3704.    array [0 0 0 0 0S 2S 5N 7N]
  3705. call "lines walk out" c4
  3706.    setup 2x4 2x4 rotate
  3707.    array [0 0 0 0 0N 2N 5S 7S]
  3708.  
  3709. call "_sort of ends bend" dontshow tag sortofendsbend
  3710.    setup 2x2 2x2
  3711.       array [R0E L1W 0 0]
  3712.  
  3713. call "central scramble" c3 tag cscramble
  3714.             visible_fractions
  3715.    seq quarterin []
  3716.    seq crosstrail []
  3717.  
  3718. call "_ends scramble" dontshow tag escramble
  3719.             visible_fractions
  3720.    seq sortofendsbend []
  3721.    seq turnthru []
  3722.  
  3723. call "scramble" c3
  3724.    conc cscramble [] escramble [conc_demand_lines conc_force_lines endscando]
  3725.  
  3726. call "ferris wheel" mainstream
  3727.    setup 2x4 2x4 rotate restriction forbidden 2fl_only
  3728.       array [R0E R7E L0E L7E L6E L1E R6E R1E]
  3729.             alternate_definition [single] c3x
  3730.    setup 2x2 1x4 rotate restriction forbidden wave_only
  3731.       array [R0E L0E L1E R1E]
  3732.  
  3733. call "step lively" c4
  3734.             visible_fractions
  3735.    seq detour []
  3736.    seq slimdown []
  3737.    seq circulate []
  3738.  
  3739. call "recount" c4a
  3740.    setup 2x4 2x4 rotate restriction wave_only
  3741.       array [0N L6S R1N 7S L1S R3S L4N R6N]
  3742.  
  3743. call "ferris to a column" c4
  3744.    setup 2x4 2x4 rotate
  3745.    array [1E 0E 7E 6E 0W 5E 2E 7W]
  3746. call "rip saw" c4
  3747.    setup 2x4 2x4 rotate
  3748.    array [2E 0E 7E 5E 0 4W 3W 0]
  3749.  
  3750. call "cast a shadow" a1
  3751.    setup 2x4 2x4 rotate restriction forbidden ends_are_peelable
  3752.       array [M7S L6N R1S M0N M3S M6S M1N M4N]
  3753.  
  3754. call "criss cross the shadow" c2
  3755.    setup 2x4 2x4 rotate restriction forbidden ends_are_peelable
  3756.       array [M7N L5N R2S M0S M3N M1N M6S M4S]
  3757.  
  3758. call "chisel thru" c2
  3759.    setup 2x4 2x4 rotate
  3760.       array [0 0 0 0 L6N R7N L0S R1S]
  3761.  
  3762. call "load the boat" plus
  3763.             rear_back_from_r_wave
  3764.    setup 2x4 2x4
  3765.       array [0 0 0 0 L7E M6W M5E R4W]
  3766.  
  3767. call "_start confidence" dontshow tag startconfidence
  3768.    conc hingesglctrhinge [] half_circ []
  3769.  
  3770. call "_end confidence" dontshow tag endconfidence
  3771.    setup crosswave 2x4 qualifier ctrwv_end2fl
  3772.       array [M0N M1N 0 0 M3N M2N 0 0]
  3773.    setup pcrosswave 2x4 qualifier ctrwv_end2fl
  3774.       array [0 0 R3E L1E 0 0 L4W R6W]
  3775.    setup crosswave 2x4 rotate qualifier ctr2fl_endwv
  3776.       array [R7N L5N 0 0 L0S R2S 0 0]
  3777.    setup pcrosswave 2x4 rotate qualifier ctr2fl_endwv
  3778.       array [0 0 M0W M1W 0 0 M3W M2W]
  3779.  
  3780. call "with confidence" c3
  3781.    seq startconfidence []
  3782.    seq endconfidence []
  3783.  
  3784. call "criss cross the deucey" c3
  3785.    setup 2x4 2x4 rotate restriction forbidden wave_only
  3786.    array [1N 5N 2S 6S 3S 3N 4S 4N]
  3787.  
  3788. call "easy does it" c4a
  3789.    setup 2x4 2x4 rotate
  3790.    array [4N 5N 2S 3S 0S 1S 6N 7N]
  3791.  
  3792. call "quarter the deucey" c3a
  3793.             step_to_wave
  3794.    setup 2x4 2x4 rotate restriction forbidden wave_only
  3795.    array [2N 4N 3S 5S 7S 1S 6N 0N]
  3796.  
  3797. call "linear flow" c3x
  3798.    setup 2x4 2x4 rotate restriction wave_only
  3799.    array [5N 0S 7N 2S 3N 6S 1N 4S]
  3800.  
  3801. call "cross linear flow" c3x
  3802.    setup 2x4 2x4 rotate restriction wave_only
  3803.    array [5N 3S 4N 2S 0N 6S 1N 7S]
  3804.  
  3805. call "criss cross linear flow" c3x
  3806.    setup 2x4 2x4 rotate restriction wave_only
  3807.    array [6N 3S 4N 1S 0N 5S 2N 7S]
  3808.  
  3809. call "_eroo" dontshow tag eroo
  3810.             dont_use_in_resolve
  3811.    setup 2x4 2x4 rotate
  3812.    array [0N 4N 3S 7S 2N 2S 5N 5S]
  3813.  
  3814. call "_the top" dontshow tag tagthetop
  3815.             dont_use_in_resolve
  3816.    setup 2x4 1x8 rotate
  3817.    array [1S 0S 0N 1N 2N 7S 7N 2S]
  3818.  
  3819. call "_delight" dontshow tag delight
  3820.             dont_use_in_resolve
  3821.    setup 2x4 2x4 rotate
  3822.    array [3S 3S 4S 4S 1S 1N 6S 6N]
  3823.  
  3824. call "_dilemma" dontshow tag dilemma
  3825.             dont_use_in_resolve
  3826.    setup 2x4 2x4 rotate
  3827.    array [3N 3N 4N 4N 1S 1N 6S 6N]
  3828.  
  3829. call "_dream" dontshow tag dream
  3830.             dont_use_in_resolve
  3831.    setup 2x4 2x4 rotate
  3832.       preds "Unknown sex."
  3833.          if boyp [0N 0N 3S 3S 0 2S 0 1N]
  3834.          if girlp [0N 0N 3S 3S 0 2N 0 1S]
  3835.  
  3836. call "_nightmare" dontshow tag nightmare
  3837.             dont_use_in_resolve
  3838.    setup 2x4 2x4 rotate
  3839.       preds "Unknown sex."
  3840.          if boyp [4N 4N 7S 7S 0 2S 0 1N]
  3841.          if girlp [4N 4N 7S 7S 0 2N 0 1S]
  3842.  
  3843. /* same def'n as follow your leader, obviously */
  3844. call "_your leader" dontshow tag leader
  3845.             dont_use_in_resolve
  3846.    setup 2x4 2x4 restriction forbidden wave_only
  3847.    array [4W 6E 5W 7E 4E 6W 5E 7W]
  3848.  
  3849. /* same def'n as lead the class, obviously */
  3850. call "_the class" dontshow tag class
  3851.             dont_use_in_resolve
  3852.    setup 2x4 2x4 restriction forbidden wave_only
  3853.    array [4W 6E 5W 7E 0E 6E 5W 3W]
  3854.  
  3855. /* same as 1/2 box circulate */
  3856. call "_to a diamond" dontshow tag toadiamond
  3857.             dont_use_in_resolve
  3858.    setup 2x2 dmd rotate
  3859.       array [R0N L0S M1W M3W]
  3860.  
  3861. call "@2tag @3your neighbor" c2
  3862.             first_part_visible
  3863.    seq halftag [or_anycall must_be_tag_call]
  3864.    seq neighbor []
  3865.  
  3866. call "@2tagg@3eroo" c4a
  3867.             first_part_visible
  3868.    seq halftag [or_anycall must_be_tag_call]
  3869.    seq eroo []
  3870.  
  3871. call "@2tag @3the top" c3
  3872.             first_part_visible
  3873.    seq halftag [or_anycall must_be_tag_call]
  3874.    seq tagthetop []
  3875.  
  3876. call "@2tagg@3er's delight" c3a
  3877.             first_part_visible
  3878.    seq halftag [or_anycall must_be_tag_call]
  3879.    seq delight []
  3880.  
  3881. call "@2tagg@3er's dilemma" c3a
  3882.             first_part_visible
  3883.    seq halftag [or_anycall must_be_tag_call]
  3884.    seq dilemma []
  3885.  
  3886. call "@2tagg@3er's dream" c4a
  3887.             first_part_visible
  3888.    seq halftag [or_anycall must_be_tag_call]
  3889.    seq dream []
  3890.  
  3891. call "@2tagg@3er's nightmare" c4a
  3892.             first_part_visible
  3893.    seq halftag [or_anycall must_be_tag_call]
  3894.    seq nightmare []
  3895.  
  3896. call "@2tag @3your leader" c3a
  3897.             first_part_visible
  3898.    seq halftag [or_anycall must_be_tag_call]
  3899.    seq leader []
  3900.  
  3901. call "@2tag @3the class" c4
  3902.             first_part_visible
  3903.    seq halftag [or_anycall must_be_tag_call]
  3904.    seq class []
  3905.  
  3906. call "@2tag @3to a diamond" c4
  3907.             first_part_visible
  3908.    seq halftag [or_anycall must_be_tag_call]
  3909.    seq toadiamond []
  3910.  
  3911. call "very center 2 trade" dontshow tag veryctr2trade
  3912.    setup 1x8 1x8
  3913.       array [M0N M1N R6S M3N M4N M5N L2S M7N]
  3914.  
  3915. call "double the wave" c4a
  3916.             step_to_wave visible_fractions
  3917.    seq fanthetop [allow_forced_mod]
  3918.    seq veryctr2trade [allow_forced_mod]
  3919.  
  3920. call "hot foot spin" c4a
  3921.             step_to_wave visible_fractions
  3922.    seq fanthetop [allow_forced_mod]
  3923.    seq veryctr2trade [allow_forced_mod]
  3924.    seq spinthetop [allow_forced_mod]
  3925.  
  3926. call "cast a net" c4a
  3927.    setup 2x4 1x8 rotate
  3928.    array [2S 1S 1N 2N 0S 7N 7S 0N]
  3929.  
  3930. call "pass the top" c4a
  3931.             rear_back_from_r_wave left_means_mirror
  3932.    setup 2x4 2x4
  3933.    array [0 0 0 0 1S 7N 0S 2S]
  3934.  
  3935. call "in roll circulate" a2
  3936.    setup 2x4 2x4
  3937.       preds "???"
  3938.          if inroller_is_cw [CR1S CR2S CR3S    0    0 AL6S AL7S ZM0N]
  3939.          if always         [   0 AL0S AL1S AL2S ZM3N CR4S CR5S    0]
  3940.             alternate_definition [magic] c3
  3941.    setup 2x4 2x4
  3942.       preds "???"
  3943.          if magic_inroller_is_cw [6S 7S 1S  0  0 3S 0S 0N]
  3944.          if always               [ 0 2S 4S 5S 3N 6S 0S  0]
  3945.  
  3946. call "out roll circulate" a2
  3947.    setup 2x4 2x4
  3948.       preds "???"
  3949.          if outroller_is_cw [   0 CR2S CR3S AL0S AL5S AL6S AL7S    0]
  3950.          if always          [CR3S AL0S AL1S    0    0 CR4S CR5S CR6S]
  3951.             alternate_definition [magic] c3
  3952.    setup 2x4 2x4
  3953.       preds "???"
  3954.          if outroller_is_cw [ 0 7S 1S 0S 2S 3S 5S  0]
  3955.          if always          [3S 2S 4S  0  0 6S 0S 1S]
  3956.  
  3957. call "zoom roll circulate" c4
  3958.    setup 2x4 2x4
  3959.       preds "???"
  3960.          if outroller_is_cw [   0 CR2S CR3S CR4N AL5S AL6S AL7S    0]
  3961.          if always          [AL7N AL0S AL1S    0    0 CR4S CR5S CR6S]
  3962.             alternate_definition [magic] c4
  3963.    setup 2x4 2x4
  3964.       preds "???"
  3965.          if outroller_is_cw [ 0 7S 1S 4N 2S 3S 5S  0]
  3966.          if always          [7N 2S 4S  0  0 6S 0S 1S]
  3967.  
  3968. call "trade circulate" a2
  3969.             take_right_hands
  3970.    setup 2x4 2x4
  3971.       preds "Can't determine whether waves or two-faced lines."
  3972.          if lines_miniwave [CR2S CR3S AL0S AL1S ZM2N ZM3N ZM0N ZM1N]
  3973.          if lines_couple   [CR1S AL0S CR3S AL2S ZM1N ZM0N ZM3N ZM2N]
  3974.             alternate_definition [12matrix] c3
  3975.    setup 3x4 3x4
  3976.       preds "Can't determine whether waves or two-faced lines."
  3977.          if lines_miniwave [CR2S CR3S AL0S AL1S ZM2N ZM3N ZM5N ZM4N ZM10N ZM11N ZM1N ZM0N]
  3978.          if lines_couple   [CR1S AL0S CR3S AL2S ZM1N ZM0N ZM11N ZM10N ZM4N ZM5N ZM2N ZM3N]
  3979.  
  3980. call "outpost" c3x
  3981.             left_means_mirror
  3982.    setup 2x4 2x4 rotate
  3983.       preds "Can't determine outpost direction."
  3984.          if outposter_is_cw  [M7N L2N M4S L5N M3S L6S M0N   0]
  3985.          if outposter_is_ccw [R2S M3N R5S M0S   0 M7S R1N M4N]
  3986.  
  3987. call "chip off" c3x
  3988.             left_means_mirror
  3989.    setup 2x4 2x4
  3990.       preds "Can't determine direction to go."
  3991.          if outposter_is_cw [M1N R2S R3S 4S M5N L6S 0 0]
  3992.          if outposter_is_ccw [7S L0S L1S M2N 0 0 R5S M6N]
  3993.  
  3994. call "ship ahoy" c3x
  3995.    setup 2x4 2x4 rotate
  3996.       preds "???"
  3997.          if outroller_is_cw [0 R1E L0E L7E M2W L5E L4W 0]
  3998.          if always [R0E R7E L6E 0 0 R3W R2E M5W]
  3999.  
  4000. call "extend" mainstream tag extend
  4001.    setup 4x1 dmd                     /* 0/4 tag to 1/4 tag */
  4002.       array [0N 1N 0 0]
  4003.    setup pmd 1x4 qualifier 3_4_tag   /* 3/4 tag to 4/4 tag */
  4004.       array [0 3N 2N 3N]
  4005.    setup pmd 2x2
  4006.       preds "???"                    /* 1/4 tag to 1/2 tag */
  4007.          if dmd_ctrs_rh [0N 1N 0 2N]
  4008.          if always [3N 1N 0 2N]
  4009.    setup 2x2 dmd rotate qualifier miniwaves
  4010.       array [0W 0W 1W 3W]            /* 1/2 tag to 3/4 tag */
  4011.    setup 2x1 1x2 rotate
  4012.       array [0W 0]         /* People facing: touch. */
  4013.    setup 1x2 1x2 rotate qualifier miniwaves
  4014.       array [0W 0W]        /* Lone miniwave: step thru. */
  4015.  
  4016. call "cross town roll" c4a
  4017.    setup 2x2 dmd rotate restriction forbidden wave_only
  4018.       array [R1E L3E L2E R2E]
  4019.    setup pmd 2x2
  4020.       preds "???"
  4021.          if dmd_ctrs_rh [M0N R3S 0 0]
  4022.          if always [M3N 0 0 L0S]
  4023.  
  4024. call "inlet" c2
  4025.             diamond_is_legal
  4026.    setup 2x4 qtag restriction forbidden wave_only
  4027.       array [CR1S AL6S CR2S AL0S AL3S CR4N AL5N CR7S]
  4028.             alternate_definition [diamond] c4
  4029.    setup 2x4 qtag restriction forbidden wave_only
  4030.       array [CR1E AL6S CR2S AL0W AL3S CR4W AL5E CR7S]
  4031.  
  4032. /* **** not really right */
  4033. call "sets in motion" c2
  4034.    setup 2x4 qtag
  4035.    array [2S 5N 5N 6S 3S 4N 4N 3S]
  4036.  
  4037. call "trade by" mainstream
  4038.    setup 4x2 2x4
  4039.       array [0 ZM2N 0 CR4S AL3S 0 ZM5N 0]
  4040.    setup 2x4 2x4
  4041.       array [0 0 0 0 0 ZM2N ZM1N 0]
  4042.  
  4043. call "roll out to a column" c4a
  4044.    setup 4x2 2x4
  4045.       array [0 5N 6S 4S 5S 7S 4N 0]
  4046.  
  4047. call "hit the wall" c4a
  4048.    setup 4x2 2x4
  4049.    array [7E 2W 0 4E 3W 0 5E 0W]
  4050.  
  4051. call "finish advance to a column" c4a tag finishadvance
  4052.    /* The restriction will make it get unhappy if we call
  4053.       so-and-so advance to a column for inappropriate
  4054.       designees or in an inappropriate setup for them. */
  4055.    setup 4x2 2x4 restriction forbidden wave_only
  4056.       array [M7S M6S R4S M5S M2S L3S M1S M0S]
  4057.  
  4058. call "@6 advance to a column" c4a
  4059.    seq starthopping []
  4060.    seq finishadvance []
  4061.  
  4062. call "swing to a column" c4a
  4063.    setup qtag 2x4
  4064.       array [0E 5W 0 6W 4W 1E 7W 0]
  4065.  
  4066. call "grand chain 8" c2
  4067.             rear_back_from_r_wave rear_back_from_qtag left_means_mirror
  4068.    setup 2x4 2x4 rotate
  4069.    array [0 0 0 0 L7E L6W L1W L0E]
  4070.    setup 4x2 2x4
  4071.       preds "Can't tell which version of grand chain 8 to do."
  4072.          if columns_tandem [L1E L3E 0 0 0 0 L4W L6W]
  4073.          if columns_antitandem [L2E 0 L4S 0 0 L3S 0 L5W]
  4074.  
  4075. call "chain the square" c2
  4076.             rear_back_from_r_wave left_means_mirror
  4077.    setup 4x2 2x4 rotate
  4078.       array [0W 0 3E 0 0 2E 0 5E]
  4079.             alternate_definition [magic] c3
  4080.    setup 4x2 2x4 rotate
  4081.       array [5E 0 2E 0 0 3E 0 0W]
  4082.  
  4083. call "turn away" c4a
  4084.             left_means_mirror
  4085.    setup 4x2 2x4 rotate
  4086.    array [5E 4E 2E 3E 4E 5E 7W 6W]
  4087.  
  4088. call "@ghang a @eright@f" c4
  4089.             left_means_mirror
  4090.    setup 4x2 2x4 rotate
  4091.       array [0 0 R3E M4E M5E R2E 0 0]
  4092.             alternate_definition [single] c4
  4093.    setup 4x1 2x2
  4094.       array [0 0 M3S R2S]
  4095.  
  4096. call "_the axle part 1" dontshow tag axle1
  4097.    setup 4x2 2x4 rotate
  4098.       array [0 M1W 0 R3E L0E 0 M2W 0]
  4099.  
  4100. call "@2pass @3the axle" c1
  4101.             visible_fractions
  4102.    seq passthru [or_anycall]
  4103.    seq axle1 []
  4104.    seq trade [allow_forced_mod]
  4105.    seq slip [allow_forced_mod roll_transparent]
  4106.  
  4107. call "centers cast off 3/4" dontshow tag ctrmaybecast3
  4108.             dont_use_in_resolve single_is_inherited
  4109.    maybesingleconc armturn_34 [or_anycall] nullcall []
  4110.  
  4111. call "_rotary nothing" dontshow tag rotary
  4112.             dont_use_in_resolve left_means_mirror single_is_inherited
  4113.    setup 4x2 qtag rotate
  4114.       array [M7W 0 L1N 0 0 L0N 0 M2W]
  4115.             alternate_definition [single] c3a
  4116.    setup 4x1 dmd
  4117.       array [M3N 0 0 L2E]
  4118.             alternate_definition [magic] c4
  4119.    setup 4x2 qtag rotate
  4120.       array [M2W 0 L0N 0 0 L1N 0 M7W]
  4121.  
  4122. call "rotary @2spin@3" c1
  4123.             rear_back_from_r_wave left_means_mirror single_is_inherited magic_is_inherited
  4124.    seq rotary [inherit_left inherit_single inherit_magic]
  4125.    seq ctrmaybecast3 [inherit_single]
  4126.  
  4127. call "_the plank" dontshow tag plank
  4128.    conc walkndodge [] leadrun [conc_demand_columns conc_force_columns]
  4129.  
  4130. call "@2walk @3the plank" c4
  4131.             magic_is_inherited
  4132.    seq colcirc [or_anycall inherit_magic]
  4133.    seq plank []
  4134.  
  4135. call "cut across" c4a
  4136.    setup 4x2 2x4
  4137.       array [M0W L5W M2W R7W L0E M5E R2E M7E]
  4138.    setup 2x4 2x4
  4139.       array [R4W R5W L6E L7E M4E M5E M6W M7W]
  4140.  
  4141. call "pass and roll your neighbor" a2
  4142.    setup 4x1 1x4
  4143.       array [R0E 0 0 R3E]
  4144.  
  4145. call "@i1/4 @j cross @linvert" c2
  4146.    setup 4x2 3x4 rotate restriction forbidden wave_only
  4147.       array [M8W M11W M1W L10E R4E M2W M5W M7W]
  4148.             alternate_definition [cross] c2
  4149.    setup 4x2 3x4 rotate restriction forbidden wave_only
  4150.       array [M8W M11W M1W R4E L10E M2W M5W M7W]
  4151.  
  4152. call "@i1/3 @j cross @linvert" c2
  4153.    setup 3x2 short6 restriction forbidden wave_only
  4154.       array [M0N M2N L1S R4S M3N M5N]
  4155.             alternate_definition [cross] c2
  4156.    setup 3x2 short6 restriction forbidden wave_only
  4157.       array [M0N M2N R4S L1S M3N M5N]
  4158.  
  4159. call "@i@c1/2 @d@j cross @linvert" c2
  4160.             is_tag_call    /* !!!! Actually, cross invert shouldn't be. */
  4161.    setup 4x2 2x4 rotate restriction forbidden wave_only
  4162.       array [M6W M1W L0E L7E R4E R3E M2W M5W]
  4163.             alternate_definition [cross] c2
  4164.    setup 4x2 2x4 rotate restriction forbidden wave_only
  4165.       array [M6W M1W R3E R4E L7E L0E M2W M5W]
  4166.  
  4167. call "@i2/3 @j cross @linvert" c2 tag invert_2_3
  4168.    setup 3x2 bone6 rotate restriction forbidden wave_only
  4169.       array [M5W L0E L4E R3E R1E M2W]
  4170.             alternate_definition [cross] c2
  4171.    setup 3x2 bone6 rotate restriction forbidden wave_only
  4172.       array [M5W R1E R3E L4E L0E M2W]
  4173.  
  4174. call "@i3/4 @j cross @linvert" c2
  4175.    setup 4x2 3x4 rotate restriction forbidden wave_only
  4176.       array [M11W L0E L10E L9E R6E R4E R3E M5W]
  4177.             alternate_definition [cross] c2
  4178.    setup 4x2 3x4 rotate restriction forbidden wave_only
  4179.       array [M11W R3E R4E R6E L9E L10E L0E M5W]
  4180.  
  4181. call "invert the column" c2
  4182.    setup 4x2 2x4 restriction forbidden wave_only
  4183.       array [L3S L2S L1S L0S R7S R6S R5S R4S]
  4184.    setup 3x2 2x3 restriction forbidden wave_only
  4185.       array [L2S L1S L0S R5S R4S R3S]
  4186.             alternate_definition [cross] c2
  4187.    setup 4x2 2x4 restriction forbidden wave_only
  4188.       array [R4S R5S R6S R7S L0S L1S L2S L3S]
  4189.    setup 3x2 2x3 restriction forbidden wave_only
  4190.       array [R3S R4S R5S L0S L1S L2S]
  4191.  
  4192. call "double your pleasure" c3x
  4193.    setup 4x2 2x4 rotate restriction forbidden wave_only
  4194.       array [L4W R6W R1W M7E M4E L2W L5W R7W]
  4195.    setup 3x2 bone6 rotate restriction forbidden wave_only
  4196.       array [L3W R5W M4E M3E L2W R4W]
  4197.             alternate_definition [magic] c3x
  4198.    setup 4x2 2x4 rotate restriction forbidden magic_only
  4199.       array [4W 5W 2W 7E 4E 1W 6W 7W]
  4200.             alternate_definition [cross] c3x
  4201.    setup 4x2 2x4 rotate restriction forbidden wave_only
  4202.       array [R7W R6W R1W M4E M7E L2W L5W L4W]
  4203.    setup 3x2 bone6 rotate restriction forbidden wave_only
  4204.       array [R4W R5W M3E M4E L2W L3W]
  4205.  
  4206. call "mini pleasure" c4
  4207.    setup 4x2 qtag rotate restriction forbidden wave_only
  4208.       array [4W 2E 1E 7E 3E 0E 6E 5W]
  4209.             alternate_definition [cross] c4
  4210.    setup 4x2 qtag rotate
  4211.       array [4W 2E 1E 3E 7E 0E 6E 5W]
  4212.  
  4213. call "cheerio" c4a
  4214.    setup 4x2 2x4 rotate
  4215.       preds "???"
  4216.          if columns_miniwave [5W 4W 3E 2E 1E 0E 7W 6W]
  4217.          if columns_couple   [6W 4W 3E 2E 1E 0E 7W 5W]
  4218.          if always            [0 4W 3E 2E 1E 0E 7W 0]
  4219.  
  4220. call "something new" c3a
  4221.    setup 4x2 qtag rotate
  4222.       array [6W 7E 0E 1E 0E 1E 3E 2W]
  4223.             alternate_definition [magic] c3
  4224.    setup 4x2 qtag rotate
  4225.       array [2W 7E 1E 1E 0E 0E 3E 6W]
  4226. call "jam thru" c4a
  4227.    setup 4x2 2x4 rotate
  4228.    array [2N 0 3S 0 0 0N 0 1S]
  4229. call "ride the tide" c4a
  4230.    setup 4x2 2x4 rotate
  4231.       preds "Unknown sex."
  4232.          if boyp [0W 0 2W 0 0 1E 0 3E]
  4233.          if girlp [0E 0 2E 0 0 1W 0 3W]
  4234. call "change-O" c4a
  4235.    setup 4x2 2x4
  4236.       array [6N 5N 3N 4S 3S 4N 2N 1N]
  4237.             alternate_definition [reverse] c4
  4238.    setup 4x2 2x4
  4239.       array [1N 5N 4N 4S 3S 3N 2N 6N]
  4240.  
  4241. call "quick step" c3a
  4242.    setup 4x2 2x4
  4243.       preds "Must be in quarter box setup."
  4244.          if columns_tandem [1N 2N 0 0 0 0 5N 6N]
  4245.          if columns_antitandem [0S 2N 4S 0 0 3S 5N 7S]
  4246. /* *** can't do this yet!!!!
  4247.    setup 3x2 2x3
  4248.       preds "Must be in 2X3 quarter box setup."
  4249.              if columns_tandem [1N 3S 0 0 2S 4N]
  4250.          if columns_antitandem [0S 3S 0 0 2S 5S]
  4251. */
  4252.  
  4253. call "make magic" c1
  4254.    setup 4x2 2x4 restriction quarterbox_or_magic_col
  4255.       preds "*** Error in database ***."
  4256.          if columns_tandem [0N 5N 2N 3N 4N 5N 2N 7N]
  4257.          if columns_antitandem  [1N 5N 3N 3N 4N 4N 2N 6N]
  4258.  
  4259. call "open up the column" c4 tag openup
  4260.    setup 4x2 2x4 restriction forbidden wave_only
  4261.    array [0W 2W 3E 5W 2E 4W 5E 7E]
  4262.             alternate_definition [magic] c4
  4263.    setup 4x2 2x4
  4264.    array [7E 2W 5W 4W 3E 2E 5E 0W]
  4265.  
  4266. call "replace the column" c3x
  4267.    setup 4x2 2x4 restriction forbidden wave_only
  4268.       array [1E 6E 0E 7E 0W 7W 1W 6W]
  4269.             alternate_definition [cross] c3x
  4270.    setup 4x2 2x4 restriction forbidden wave_only
  4271.       array [6W 1W 7W 0W 7E 0E 6E 1E]
  4272.  
  4273. call "quick wrap" c3x
  4274.    setup 4x2 2x4 restriction wave_only
  4275.       array [L2W L1E R3E R4E L3W L4W R6W R5E]
  4276.             alternate_definition [magic] c3x
  4277.    setup 4x2 2x4 restriction magic_only
  4278.       array [R5E L1E L4W R4E L3W R3E R6W L2W]
  4279.  
  4280. call "dive thru" mainstream
  4281.    setup 4x2 2x4
  4282.       array [M1N 0 R4S 0 0 L3S 0 M6N]
  4283.  
  4284. call "pass to the center" mainstream
  4285.             rear_back_from_r_wave
  4286.    setup 4x2 2x4
  4287.       array [M1N 0 R4S 0 0 L3S 0 M6N]
  4288.  
  4289. call "square out" c4a
  4290.             rear_back_from_r_wave left_means_mirror
  4291.    setup 4x2 2x4
  4292.       array [4E 0 2W 0 0 5E 0 3W]
  4293.  
  4294. call "cross chain thru" c1
  4295.             rear_back_from_r_wave left_means_mirror
  4296.    setup 4x2 2x4
  4297.       array [5N 0 4S 0 0 3S 0 2N]
  4298.             alternate_definition [magic] c3
  4299.    setup 4x2 2x4
  4300.       array [2N 0 3S 0 0 4S 0 5N]
  4301.  
  4302. call "cross chain and roll" c1
  4303.             rear_back_from_r_wave left_means_mirror
  4304.    setup 4x2 2x4
  4305.       array [L5W 0 L4E 0 0 L3E 0 L2W]
  4306.             alternate_definition [magic] c3
  4307.    setup 4x2 2x4
  4308.       array [L2W 0 L3E 0 0 L4E 0 L5W]
  4309.  
  4310. call "checkover" c3a
  4311.    setup 4x2 2x4 restriction forbidden wave_only
  4312.    array [0W 1W 6W 7W 0E 1E 6E 7E]
  4313.  
  4314. call "turnover" c4
  4315.    setup 2x2 1x4 rotate restriction wave_only
  4316.       array [3S 3N 2N 2S]
  4317.  
  4318. call "turn by" c4
  4319.    setup 4x1 1x4
  4320.       array [M1N M3N R2S M2N]
  4321.  
  4322. call "turn by 1-1/2" c4
  4323.    setup 4x1 dmd
  4324.       array [M1N 0 0 R2E]
  4325.  
  4326. call "triple play" c3a
  4327.    setup 4x2 2x4 restriction forbidden wave_only
  4328.    array [1E 0W 2W 7W 0E 5E 7E 6W]
  4329.  
  4330. call "double play" c4
  4331.    setup 3x2 2x3 restriction forbidden wave_only
  4332.    array [0E 1W 5W 0E 4E 5W]
  4333.  
  4334. call "checkmate" a2
  4335.    setup 4x2 2x4 restriction wave_only
  4336.       array [M5E M4E R6W R7W L0E L1E M3W M2W]
  4337.    setup 2x2 2x2 restriction wave_only
  4338.       array [R2W L3E M0W M1E]
  4339.  
  4340. call "2X1 checkmate" c4
  4341.    setup 3x2 2x3 restriction wave_only
  4342.       array [M3E R4W R5W L0E L1E M2W]
  4343.  
  4344. call "1X2 checkmate" c4
  4345.    setup 3x2 2x3 restriction wave_only
  4346.       array [M4E M3E R5W L0E M2W M1W]
  4347.  
  4348. call "3X1 checkmate" c2
  4349.    setup 4x2 2x4 restriction wave_only
  4350.       array [M4E R5W R6W R7W L0E L1E L2E M3W]
  4351.  
  4352. call "1X3 checkmate" c2
  4353.    setup 4x2 2x4 restriction wave_only
  4354.       array [M6E M5E M4E R7W L0E M3W M2W M1W]
  4355.  
  4356. call "transfer" a1 tag transfer
  4357.    setup 4x2 2x4 restriction forbidden wave_only
  4358.       array [M0W M2W R5W R7W L0E L2E M5E M7E]
  4359.    setup 2x2 2x2 restriction forbidden wave_only
  4360.       array [R2W L3E M2E M3W]
  4361.             alternate_definition [magic] c1
  4362.    setup 4x2 2x4 restriction forbidden magic_only
  4363.       array [M7E M2W L3E R6W L1E R4W M5E M0W]
  4364.  
  4365. call "2X1 transfer" c4
  4366.    setup 3x2 2x3 restriction forbidden wave_only
  4367.       array [M1W R3W R5W L0E L2E M4E]
  4368.             alternate_definition [magic] c4
  4369.    setup 3x2 2x3 restriction forbidden magic_only
  4370.       array [M4E L2E R5W L0E R3W M1W]
  4371.  
  4372. call "1X2 transfer" c4
  4373.    setup 3x2 2x3 restriction forbidden wave_only
  4374.       array [M0W M2W R4W L1E M3E M5E]
  4375.             alternate_definition [magic] c4
  4376.    setup 3x2 2x3 restriction forbidden magic_only
  4377.       array [M0W M3E R4W L1E M2W M5E]
  4378.  
  4379. call "3X1 transfer" c2
  4380.    setup 4x2 2x4 restriction forbidden wave_only
  4381.       array [M1W R4W R6W R7W L0E L1E L3E M6E]
  4382.             alternate_definition [magic] c2
  4383.    setup 4x2 2x4 restriction forbidden magic_only
  4384.       array [M6E L3E L2E R7W L0E R5W R4W M1W]
  4385.  
  4386. call "1X3 transfer" c2
  4387.    setup 4x2 2x4 restriction forbidden wave_only
  4388.       array [M0W M1W M3W R6W L1E M4E M6E M7E]
  4389.             alternate_definition [magic] c2
  4390.    setup 4x2 2x4 restriction forbidden magic_only
  4391.       array [M7E M1W M3W R5W L2E M4E M6E M0W]
  4392.  
  4393. call "three square two and 1" c4
  4394.    setup 2x3 2x3
  4395.    array [0 0 0 1W 2E 0N]
  4396.  
  4397. call "push off" c4a
  4398.    setup 4x2 2x4
  4399.    array [5S 0N 3N 0 0 4S 7S 6S]
  4400.  
  4401. call "countershake" c4
  4402.             left_means_mirror
  4403.    setup 4x2 2x4
  4404.       array [0 0 1W 6W 7W 0W 0 0]
  4405.             alternate_definition [single] c4
  4406.    setup 4x1 2x2
  4407.       array [0 0 3W 0W]
  4408.  
  4409. call "triple scoot" plus
  4410.    setup 4x2 2x4 restriction forbidden wave_only
  4411.    array [7S 6S 5S 4S 3S 2S 1S 0S]
  4412.  
  4413. call "triple cross" c1 tag triplecross
  4414.    setup 4x2 2x4 restriction quarterbox_or_col
  4415.       preds "Don't know whether to cross."
  4416.          if columns_magic_tandem     [0N 5N 2N 3N 4N 5N 2N 7N]
  4417.          if columns_magic_antitandem [6N 5N 4N 3N 4N 3N 2N 1N]
  4418.  
  4419. call "scoot and fancy" c3a
  4420.    setup 4x2 2x4 restriction forbidden wave_only
  4421.    array [0N 7N 1N 6N 1N 6N 0N 7N]
  4422.  
  4423. call "@k tie" c4a
  4424.    setup 4x2 2x4
  4425.       preds "Tandems must be selected/deselected together."
  4426.          if select_near_select [L7W L6W L1E L0E R7W R6W R1E R0E]
  4427.          if unselect_near_unselect [M6E M7E M4E M5E M2W M3W M0W M1W]
  4428.             alternate_definition [cross] c4a
  4429.    setup 4x2 2x4
  4430.       preds "Tandems must be selected/deselected together."
  4431.          if select_near_select [R0E R1E R6W R7W L0E L1E L6W L7W]
  4432.          if unselect_near_unselect [M1W M0W M3W M2W M5E M4E M7E M6E]
  4433.  
  4434. call "now circle up 4" mainstream
  4435.    setup 4x2 2x4 rotate
  4436.       array [5W 0 3E 0 0 2E 0 4W]
  4437.  
  4438. call "expand the column" c3
  4439.    setup 4x2 2x4 rotate
  4440.       array [M1W L7E L0E M2E M1E R3E R4E M2W]
  4441.             alternate_definition [magic] c3
  4442.    setup 4x2 2x4 rotate
  4443.       array [M2W L7E L0E M1E M2E R3E R4E M1W]
  4444.  
  4445. call "file to a line" c2
  4446.    setup 4x2 2x4 rotate
  4447.    array [7W 1W 2E 0W 3W 1E 2W 4W]
  4448.  
  4449. call "walk out to a wave" c2
  4450.    setup 4x2 2x4 rotate restriction wave_only
  4451.       array [Z0W C1E C3E C2W A1W A0E A2E Z3W]
  4452.             alternate_definition [magic] c2
  4453.    setup 4x2 2x4 rotate restriction magic_only
  4454.       array [Z0W A2E A0E C2W A1W C3E C1E Z3W]
  4455.  
  4456. call "walk out to a column" c3x
  4457.    setup 2x4 2x4 rotate restriction wave_only
  4458.       array [6E 1E 5E 2E 0E 0W 7W 7E]
  4459.             alternate_definition [magic] c3x
  4460.    setup 2x4 2x4 rotate restriction wave_only
  4461.       array [6E 1E 5E 2E 7E 7W 0W 0E]
  4462.  
  4463. call "_disband/disperse part 1" dontshow tag disbp1
  4464.             dont_use_in_resolve
  4465.    /* By not putting a "conc_demand_columns" or "conc_demand_lines"
  4466.       on this, we allow the call to be done from either setup. */
  4467.    conc boxctrrot [] peel_and_nothing []
  4468.  
  4469. call "_disband part 2" dontshow tag disband2
  4470.             dont_use_in_resolve
  4471.    crossconc 23recycle [] uturnback [conc_force_lines]
  4472.  
  4473. call "_disperse part 2" dontshow tag disperse2
  4474.             dont_use_in_resolve
  4475.    crossconc 23recycle [] trade [conc_force_lines]
  4476.  
  4477. call "disband" c3x
  4478.    seq disbp1 []
  4479.    seq disband2 []
  4480.  
  4481. call "disperse" c4
  4482.    seq disbp1 []
  4483.    seq disperse2 []
  4484.  
  4485. call "wind the bobbin" c4a
  4486.    setup 4x2 2x4 rotate restriction forbidden wave_only
  4487.    array [5E 3W 6W 4W 7W 5W 0W 6E]
  4488.  
  4489. call "track 0" c3x
  4490.             left_means_mirror
  4491.    setup 4x2 2x4
  4492.       array [0 0 4S 5S 2S 3S 0 0]
  4493.  
  4494. call "track 1" c3x
  4495.             left_means_mirror
  4496.    setup 4x2 qtag rotate
  4497.       array [0 0 1E 2E 7E 0E 0 0]
  4498.  
  4499. call "track 2" plus
  4500.             left_means_mirror is_tag_call
  4501.    setup 4x2 2x4 rotate
  4502.       array [0 0 3E 4E 6E 1E 0 0]
  4503.  
  4504. call "track 3" c3x
  4505.             left_means_mirror
  4506.    setup 4x2 qtag rotate
  4507.       array [0 0 2E 4E 5E 7E 0 0]
  4508.  
  4509. call "track 4" c3x
  4510.             left_means_mirror
  4511.    setup 4x2 2x4
  4512.       array [0 0 6S 7S 0S 1S 0 0]
  4513.  
  4514. call "explosion" c4a
  4515.    setup 4x2 2x4 rotate restriction wave_only
  4516.    array [0W 5E 3E 2E 1E 0E 6E 3W]
  4517. call "explode the clover" c4
  4518.    setup 4x2 2x4 rotate
  4519.    array [0 5S 2S 0N 3S 1N 6N 0]
  4520. call "press for time" c4
  4521.    setup 4x2 2x4 rotate restriction wave_only
  4522.    array [7W 0W 5E 2E 1E 6E 3W 4W]
  4523.  
  4524. call "_horsehsoe centers" dontshow tag horsey
  4525.    setup 1x2 1x2           /* This is partner tag, of course. */
  4526.       array [M1E M0W]
  4527.             alternate_definition [cross] c3x
  4528.    setup 2x2 2x2
  4529.       array [2E 3W 0W 1E]
  4530.  
  4531. call "horseshoe turn" a1
  4532.             cross_is_inherited
  4533.    conc horsey [inherit_cross] clover [inherit_cross conc_demand_columns conc_force_columns]
  4534.  
  4535. call "with finesse" c4a
  4536.    setup 4x2 1x8
  4537.    array [0W 7E 1E 6W 6E 1W 7W 0E]
  4538.  
  4539. call "polly wally" c3a
  4540.             reverse_means_mirror
  4541.    setup 4x2 2x4 rotate
  4542.       array [5E 2W 7E 0E 1E 6E 3W 4E]
  4543.             alternate_definition [single] c3a
  4544.    setup 4x1 2x2
  4545.       array [R3S 2N L1S 0S]
  4546.             alternate_definition [grand single] c4
  4547.    setup 8x1 2x4
  4548.       array [7S 6N 5N 0S 3S 2S 1S 4N]
  4549.    setup 6x1 2x3
  4550.       array [5S 4N 0S 2S 1S 3N]
  4551.  
  4552. call "_sidetrack part 1" dontshow tag sidetrack1
  4553.             reverse_means_mirror
  4554.    /* We put this in to give the "unusual" warning if called from lines. */
  4555.    setup 2x4 2x4 restriction unusual alwaysfail
  4556.       array [R0E R1E R2E R3E L4W L5W L6W L7W]
  4557.    /* Having done that, we need this (without the warning) to
  4558.       keep things happy in a T-boned 2x4. */
  4559.    setup 4x2 2x4
  4560.       array [L0W R1E L2W R3E R4E L5W R6E L7W]
  4561.    setup 2x2 2x2        /* This is just zig zag, of course. */
  4562.       array [R0E R1E L2W L3W]
  4563.    setup 2x1 1x2        /* This is just zig zag, of course. */
  4564.       array [L0W R1E]
  4565.  
  4566. call "sidetrack" c3
  4567.             reverse_means_mirror visible_fractions
  4568.    seq sidetrack1 [inherit_reverse]
  4569.    seq ctr_rot []
  4570.    seq everyoneroll []
  4571.  
  4572. call "slim down" c3x tag slimdown
  4573.    setup 2x4 2x4 rotate
  4574.       array [M6W M7W M0W M1W M2W M3W M4W M5W]
  4575.    setup 4x2 2x4 rotate
  4576.       array [M6W M7W M0W M1W M2W M3W M4W M5W]
  4577.  
  4578. call "step and slide" a1
  4579.    setup 1x4 2x3 rotate
  4580.       array [4W 5W 1W 0W]
  4581.  
  4582. call "lickety split" c3
  4583.    simple_funny
  4584.    setup 2x4 2x4
  4585.       array [CR1S AL0W CR3E AL2S ZM3N CR2E AL1W ZM0N]
  4586.    setup 4x2 2x4
  4587.       array [ZM1N CR6E CR3E CR4S AL3S AL4W AL1W ZM6N]
  4588.  
  4589. call "circulate" mainstream tag circulate
  4590.             take_right_hands
  4591.    simple_funny
  4592.    setup 2x4 2x4
  4593.       array [CR3S CR2S AL1S AL0S ZM3N ZM2N ZM1N ZM0N]
  4594.    setup 4x2 2x4
  4595.       array [ZM1N ZM2N ZM3N CR4S AL3S ZM4N ZM5N ZM6N]
  4596.    setup 2x3 2x3
  4597.       array [CR2S 0 AL0S ZM2N ZM1N ZM0N]
  4598.    setup 3x2 2x3
  4599.       array [ZM1N ZM2N CR3S AL2S ZM3N ZM4N]
  4600.    setup 2x2 2x2
  4601.       array [CR1S AL0S ZM1N ZM0N]
  4602.    setup star star
  4603.       array [CR1E 0 AL1W 0]
  4604.    setup short6 short6
  4605.       array [CR1E 0 AL1W ZM2N 0 ZM0N]
  4606.    setup pshort6 short6
  4607.       preds "???"
  4608.          if next62spot_is_tboned [ZM1N CR2E CR3S AL2S AL3W ZM4N]
  4609.          if always [ZM1N ZM2N CR3S AL2S ZM3N ZM4N]
  4610.    setup spindle spindle
  4611.       array [0 0 0 AL2W 0 0 0 CR0E]
  4612.    setup pspindle spindle
  4613.       array [ZM1N ZM2N CR3E 0 AL3W ZM4N ZM5N 0]
  4614.             alternate_definition [magic] c1
  4615.    simple_funny
  4616.    setup 4x2 2x4
  4617.       array [ZM6N ZM2N ZM4N CR4S AL3S ZM3N ZM5N ZM1N]
  4618.    setup 3x2 2x3
  4619.       array [ZM4N ZM3N CR3S AL2S ZM2N ZM1N]
  4620.    setup pshort6 short6
  4621.       preds "???"
  4622.          if next_magic62spot_is_tboned [ZM4N ZM3N CR3S AL2S ZM2N ZM1N]
  4623.          if always [ZM4N ZM3N CR3S AL2S ZM2N ZM1N]
  4624.    setup spindle spindle
  4625.       array [0 0 0 AL2W 0 0 0 CR0E]
  4626.    setup pspindle spindle
  4627.       array [ZM5N ZM4N CR3E 0 AL3W ZM2N ZM1N 0]
  4628.             alternate_definition [12matrix] c3a
  4629.    simple_funny
  4630.    setup 3x4 3x4
  4631.       array [CR3S CR2S AL1S AL0S ZM3N ZM2N ZM4N ZM5N ZM11N ZM10N ZM0N ZM1N]
  4632.    setup 2x6 2x6
  4633.       array [CR5S CR4S CR3S CR2S CR1S CR0S ZM5N ZM4N ZM3N ZM2N ZM1N ZM0N]
  4634.    setup 6x2 2x6
  4635.       array [ZM1N ZM2N ZM3N ZM4N ZM5N CR6S AL5S ZM6N ZM7N ZM8N ZM9N ZM10N]
  4636.  
  4637. call "couples circulate" mainstream
  4638.    /* The "as couples" concept is illegal at mainstream, so we include this. */
  4639.    setup 2x4 2x4 restriction forbidden 2fl_only
  4640.       array [CR3S CR2S AL1S AL0S ZM3N ZM2N ZM1N ZM0N]
  4641.  
  4642. call "cross over circulate" a1
  4643.    setup 2x4 2x4
  4644.       array [CR2S CR3S AL0S AL1S ZM2N ZM3N ZM0N ZM1N]
  4645.    setup 4x2 2x4
  4646.       array [6N 5N 4N 0 0 3N 2N 1N]
  4647.             alternate_definition [12matrix] c3a
  4648.    setup 3x4 3x4
  4649.       array [CR2S CR3S AL0S AL1S ZM2N ZM3N ZM5N ZM4N ZM10N ZM11N ZM1N ZM0N]
  4650.  
  4651. call "column circulate" mainstream tag colcirc
  4652.             take_right_hands
  4653.    simple_funny
  4654.    setup 4x2 2x4
  4655.       array [ZM1N ZM2N ZM3N CR4S AL3S ZM4N ZM5N ZM6N]
  4656.    setup 3x2 2x3
  4657.       array [ZM1N ZM2N CR3S AL2S ZM3N ZM4N]
  4658.             alternate_definition [magic] c1
  4659.    simple_funny
  4660.    setup 4x2 2x4 restriction magic_only
  4661.       array [ZM6N ZM2N ZM4N CR4S AL3S ZM3N ZM5N ZM1N]
  4662.    setup 3x2 2x3
  4663.       array [ZM4N ZM3N CR3S AL2S ZM2N ZM1N]
  4664.             alternate_definition [12matrix] c3a
  4665.    simple_funny
  4666.    setup 6x2 2x6
  4667.       array [ZM1N ZM2N ZM3N ZM4N ZM5N CR6S AL5S ZM6N ZM7N ZM8N ZM9N ZM10N]
  4668.  
  4669. call "1/2 circulate" mainstream tag half_circ
  4670.             dont_use_in_resolve take_right_hands
  4671.    setup 2x4 crosswave rotate
  4672.       array [CR0N CR1N AL1S AL0S ZM2W ZM3W ZM7W ZM6W]
  4673.    setup 2x2 dmd rotate
  4674.       array [CR0N AL0S ZM1W ZM3W]
  4675.    setup 3x2 short6 rotate
  4676.       array [ZM5W ZM0W CR1N AL1S ZM2W ZM3W]
  4677.    setup 4x2 spindle
  4678.       array [ZM0N ZM1N ZM2N CR3E AL3W ZM4N ZM5N ZM6N]
  4679.  
  4680. call "tag circulate" c4
  4681.    setup 2x4 2x4 restriction 2fl_only
  4682.       array [R2S R3S R0N R1N M3N M2N M1N M0N]
  4683.  
  4684. call "pass in" a1
  4685.    setup 2x4 2x4
  4686.       array [0 0 0 0 L3W L2W R1E R0E]
  4687.    setup 2x2 2x2
  4688.       array [0 0 L1W R0E]
  4689.  
  4690. call "pass out" a1
  4691.    setup 2x4 2x4
  4692.       array [0 0 0 0 R3E R2E L1W L0W]
  4693.    setup 2x2 2x2
  4694.       array [0 0 R1E L0W]
  4695.  
  4696. call "quarter in" a1 tag quarterin
  4697.    setup 1x2 1x2
  4698.       array [R0E L1W]
  4699.  
  4700. call "quarter out" a1 tag quarterout
  4701.    setup 1x2 1x2
  4702.       array [L0W R1E]
  4703.  
  4704. call "box circulate" mainstream tag box_circ
  4705.             take_right_hands
  4706.    simple_funny
  4707.    setup 2x2 2x2
  4708.       array [CR1S AL0S ZM1N ZM0N]
  4709.  
  4710. call "1/2 box circulate" mainstream
  4711.             dont_use_in_resolve take_right_hands
  4712.    setup 2x2 dmd rotate
  4713.       array [CR0N AL0S ZM1W ZM3W]
  4714.  
  4715. call "1-1/2 box circulate" mainstream tag box_circ_15
  4716.             dont_use_in_resolve take_right_hands
  4717.    setup 2x2 dmd rotate
  4718.       array [ZM1E ZM3E AL0S CR0N]
  4719.  
  4720. call "_box circulate and trade" dontshow tag box_circ_and_trade
  4721.    setup 2x2 2x2
  4722.       array [CR0N AL1N AL0S CR1S]
  4723.  
  4724. call "swap the windmill" c4
  4725.             reverse_means_mirror
  4726.    setup 2x4 2x4 rotate
  4727.       array [0 0 0 0 5N 7S 6S 0S]
  4728.    setup 4x2 2x4 rotate
  4729.       array [1E 0 2W 0 0 7E 0 0E]
  4730.  
  4731. call "double down" c3x
  4732.    setup 2x4 2x4
  4733.       preds "Can't tell which way my adjacent end is facing."
  4734.          if inner_active_lines [0 7S 4S 0 2S 3S 0S 1S]
  4735.          if outer_active_lines [3S 2S 1S 0S 0 2N 1N 0]
  4736.    setup 4x2 2x4
  4737.       preds "Can't tell which way my adjacent end is facing."
  4738.          if column_double_down [6S 2N 3N 5S 2S 4N 5N 1S]
  4739.             alternate_definition [cross] c3x
  4740.    setup 2x4 2x4
  4741.       preds "Can't tell which way my adjacent end is facing."
  4742.          if inner_active_lines [0 7S 4S 0 2S 3S 0S 1S]
  4743.          if outer_active_lines [2S 3S 0S 1S 0 3N 0N 0]
  4744.    setup 4x2 2x4
  4745.       preds "Can't tell which way my adjacent end is facing."
  4746.          if column_double_down [6S 5N 4N 5S 2S 3N 2N 1S]
  4747.  
  4748. call "_finish clear out" dontshow tag finclearout
  4749.    setup 2x4 2x4
  4750.       array [R0S R2S L1S L3S M4N L2S R1S M7N]
  4751.    setup 4x2 2x4
  4752.       array [M0N R2S R5S R3S L4S L2S L5S M7N]
  4753.  
  4754. call "@1clear out" c4a
  4755.             visible_fractions
  4756.    seq circulate [or_anycall]
  4757.    seq finclearout [roll_transparent]
  4758.  
  4759. call "lift off" c3
  4760.             reverse_means_mirror
  4761.    setup 2x4 2x4 rotate
  4762.       array [0 3S 5S 0 0 0 0 0]
  4763.    setup 4x2 2x4 rotate
  4764.       array [0W 0 0 0 0 0 0 2E]
  4765.  
  4766. call "_start wave the whomever" dontshow tag startwave
  4767.    /* This is just a press ahead, but legal only in a "liftoff" setup. */
  4768.    setup 2x4 2x4 rotate
  4769.       array [0 7W 0W 0 0 0 0 0]
  4770.    setup 4x2 2x4 rotate
  4771.       array [6W 0 0 0 0 0 0 5W]
  4772.  
  4773. call "finish wave the @6" c3 tag finishwave
  4774.    /* Selector identities *do* get re-evaluated for the new centers and ends,
  4775.       which makes this work.  Compare patch the <anyone>. */
  4776.    conc starthopping [] designeeskick [conc_demand_columns conc_force_lines]
  4777.  
  4778. call "wave the @6" c3
  4779.    seq startwave []
  4780.    seq finishwave []
  4781.  
  4782. call "split grand chain 8" c2
  4783.             sequence_starter
  4784.    setup 2x4 2x4
  4785.       array [0 0 0 0 0 L3S L0S 0]
  4786.    setup 4x2 2x4
  4787.       array [L1E 0 0 0 0 0 0 L6W]
  4788.  
  4789. call "_spin the pulley but" dontshow tag spinpulleybut
  4790.    setup 2x4 2x4
  4791.       array [0 0 0 0 0 M1W M0W 0]
  4792.    setup 4x2 2x4
  4793.       array [M6N 0 0 0 0 0 0 M7N]
  4794.  
  4795. call "spin the pulley@7 but @8" c3a
  4796.             sequence_starter
  4797.    seq spinpulleybut []
  4798.    seq peeloff [or_anycall]
  4799.  
  4800. call "the pulley@7 but @8" c3a
  4801.    seq triplecross []
  4802.    seq peeloff [or_anycall]
  4803.  
  4804. call "curli-pass" c3
  4805.             sequence_starter
  4806.    setup 2x4 2x4
  4807.       preds "Must be facing opposite sex."
  4808.          if x22_boy_facing_girl [0 0 0 0 0 3E 1E 0]
  4809.          if x22_girl_facing_boy [0 0 0 0 0 3E 1E 0]
  4810.    setup 4x2 2x4
  4811.       array [0N 0 0 0 4N 0 0 6N]
  4812.  
  4813. call "_split mixed up and nothing" dontshow tag mixedup
  4814.             sequence_starter
  4815.    setup 2x4 2x4
  4816.    array [0 0 0 0 0 4S 7S 0]
  4817.    setup 4x2 2x4
  4818.    array [1E 0 0 0 0 0 0 6W]
  4819.  
  4820. call "_finish mixed" dontshow tag finmixedup
  4821.    conc nullcall [mandatory_anycall] nullcall []
  4822.  
  4823. call "split mixed up, new ctrs @0" c3x
  4824.             sequence_starter dont_use_in_resolve
  4825.    seq mixedup []
  4826.    seq finmixedup []
  4827.  
  4828. call "hocus pocus" c2
  4829.    conc trade [] box_circ [conc_force_otherway endscando]
  4830.  
  4831. call "_wheel and" dontshow tag wheel
  4832.             reverse_means_mirror
  4833.    setup 2x2 2x2
  4834.       array [L0E L3E 0 0]
  4835.  
  4836. call "_8by" dontshow tag 8by
  4837.             rear_back_from_r_wave left_means_mirror
  4838.    setup 2x2 2x2
  4839.    array [0 0 0E 1E]
  4840.  
  4841. call "wheel and @0" c1
  4842.             reverse_means_mirror dont_use_in_resolve
  4843.    conc nullcall [mandatory_anycall] wheel [inherit_reverse conc_demand_columns conc_force_columns]
  4844.  
  4845. call "buckle and @0" c4a
  4846.             dont_use_in_resolve
  4847.    conc nullcall [mandatory_anycall] coupleup [conc_demand_lines conc_force_columns]
  4848.  
  4849. call "cloverleaf" mainstream
  4850.    setup 4x2 2x4 rotate
  4851.       array [0 0 0N 1N 2S 3S 0 0]
  4852.             alternate_definition [cross] c1
  4853.    setup 4x2 2x4 rotate
  4854.       array [0 0 3S 2S 1N 0N 0 0]
  4855.  
  4856. call "cloverflow" c4
  4857.    setup 4x2 2x4 rotate
  4858.       array [0 0N 0 2N 1S 0 3S 0]
  4859.  
  4860. call "cloverleaf turn" c4
  4861.    setup 4x2 2x4 rotate
  4862.       array [0 7N 0 1S 2N 0 4S 0]
  4863.  
  4864. call "_clover and" dontshow tag clover
  4865.    setup 2x2 2x2
  4866.       array [0E 1W 0 0]
  4867.             alternate_definition [cross] a1
  4868.    setup 2x2 2x2
  4869.       array [1W 0E 0 0]
  4870.  
  4871. call "clover and @0" a1
  4872.             dont_use_in_resolve cross_is_inherited
  4873.    conc nullcall [mandatory_anycall] clover [inherit_cross conc_demand_columns conc_force_columns]
  4874.  
  4875. call "eight by @0" c3a
  4876.             dont_use_in_resolve left_means_mirror
  4877.    conc nullcall [mandatory_anycall] 8by [inherit_left conc_demand_lines conc_force_lines]
  4878.  
  4879. call "_fly away ctrs" dontshow tag flyback
  4880.    setup 2x2 2x2
  4881.       array [R3N R2N 0 0]
  4882.  
  4883. call "_fly away ends" dontshow tag flyend
  4884.    seq trade []
  4885.    seq nullcall [mandatory_anycall]
  4886.  
  4887. call "fly away, new centers @0" c3x
  4888.             dont_use_in_resolve
  4889.    crossconc flyend [conc_demand_lines] flyback [conc_demand_lines conc_force_columns]
  4890.  
  4891. call "_chain react part 2" dontshow tag chreact_2
  4892.             dont_use_in_resolve left_means_mirror
  4893.    ckpt_star nullcall [] hinge [inherit_left]
  4894.  
  4895. call "_ends detour" dontshow tag endsdetour
  4896.    setup 2x2 2x2 restriction forbidden peelable_box
  4897.       array [L3E R2W R1E L0W]
  4898.  
  4899. call "detour" c2 tag detour
  4900.    conc ctr_rot [] endsdetour [conc_demand_lines conc_force_columns endscando]
  4901.  
  4902. call "team up" c3a
  4903.    conc beaurun [] half_circ_and_hinge [conc_force_columns endscando]   /* the "force columns" makes the hingers stay together */
  4904.  
  4905. call "_tunnel part 1" dontshow tag tunnel1
  4906.    crossconc verticalhalftag [conc_demand_columns] partnertag [conc_demand_columns conc_force_columns]
  4907.  
  4908. call "_tunnel in part 2" dontshow tag tunnelin2
  4909.    conc quarterin [] trade []
  4910.  
  4911. call "_tunnel out part 2" dontshow tag tunnelout2
  4912.    conc quarterout [] trade []
  4913.  
  4914. call "tunnel in" c4a
  4915.    seq tunnel1 []
  4916.    seq tunnelin2 []
  4917.  
  4918. call "tunnel out" c4a
  4919.    seq tunnel1 []
  4920.    seq tunnelout2 []
  4921.  
  4922. call "_start zip" dontshow tag startzip
  4923.    setup 2x2 2x2
  4924.       array [R0E L1W R2W L3E]
  4925.  
  4926. call "_extend zip" dontshow tag extendzip
  4927.    setup 2x2 2x2
  4928.       array [R0E L1W M1N M0N]
  4929.  
  4930. call "_zipn" dontshow tag zipn
  4931.    seq startzip []
  4932.    seq extendzip [repeat_nm1]
  4933.  
  4934. call "zip code @9, new centers @0" c2
  4935.             dont_use_in_resolve neednumber
  4936.    crossconc nullcall [mandatory_anycall] zipn [conc_demand_columns conc_force_lines]
  4937.  
  4938. call "_finish hoop-de-do" dontshow tag hoopdedo
  4939.    seq startzip []
  4940.    seq slidethru []
  4941.  
  4942. call "hoop-de-do, new centers @0" c4
  4943.             dont_use_in_resolve
  4944.    crossconc nullcall [mandatory_anycall] hoopdedo [conc_demand_columns conc_force_columns]
  4945.  
  4946. call "acey deucey" a1
  4947.    setup 2x4 2x4
  4948.       array [R3S R2S L1S L0S M3N L6S R5S M0N]
  4949.    setup 4x2 2x4
  4950.       array [M1N R6S R5S R4S L3S L2S L1S M6N]
  4951.  
  4952. call "trade the deucey" c3a tag trade_duck
  4953.    setup 2x4 2x4
  4954.       array [R2S R3S L0S L1S M2N L7S R4S M1N]
  4955.    setup 4x2 2x4 rotate
  4956.       array [5W 4E 3E 0 0 0E 7E 6W]
  4957.  
  4958. call "_o-late" dontshow tag olate
  4959.             dont_use_in_resolve
  4960.    setup 2x4 2x4
  4961.    array [6S 0N 3N 5S 6N 4N 7N 5N]
  4962.  
  4963. call "@2swing@3-o-late" c3
  4964.    seq swingslip [or_anycall]
  4965.    seq olate []
  4966.  
  4967. call "snap the lock" c3a
  4968.    setup 2x4 2x4
  4969.    array [5S 7S 4S 6S 1N 3N 0N 2N]
  4970. call "spin tag the deucey" c4       /* Andy B. loves this call. */
  4971.    setup 2x4 2x4 restriction wave_only
  4972.    array [2N 4S 3S 1N 2S 0N 7N 1S]
  4973. call "rims trade back" c2
  4974.    setup 2x4 2x4
  4975.    array [6S 0S 3S 5S 6N 4S 7S 5N]
  4976. call "hubs trade back" c2
  4977.    setup 2x4 2x4
  4978.    array [1S 7S 4S 2S 5S 7N 4N 6S]
  4979. call "round off" c3x
  4980.    setup 2x4 2x4
  4981.    array [1E 0E 3W 2W 0 0 0 0]
  4982. call "round & cross" c3x
  4983.    setup 2x4 2x4
  4984.    array [6E 7E 4W 5W 0 0 0 0]
  4985. call "round the horn" c3x
  4986.    setup 2x4 2x4
  4987.    array [2E 7S 4S 1W 0 0 0 0]
  4988.  
  4989. call "spin chain thru" mainstream
  4990.             step_to_wave
  4991.    setup 2x4 2x4 restriction forbidden wave_only
  4992.    array [2N 0S 3S 1N 2S 4S 7S 1S]
  4993.  
  4994. call "swing chain thru" c3a
  4995.             step_to_wave
  4996.    setup 2x4 2x4 restriction wave_only
  4997.    array [6S 0S 3S 5S 6N 4S 7S 5N]
  4998.  
  4999. call "counter rotate" c1 tag ctr_rot
  5000.             parallel_conc_end       /* This makes it win if we tell the ends only to do it */
  5001.    simple_funny
  5002.    setup 2x4 2x4 rotate
  5003.       array [CR0N CR1N AL6S AL7S AL0S AL1S CR6N CR7N]
  5004.    setup 4x2 2x4 rotate
  5005.       array [CR0N CR1N CR2N CR3N AL0S AL1S AL2S AL3S]
  5006.    setup 2x3 2x3 rotate
  5007.       array [CR0N 0 AL5S AL0S 0 CR5N]
  5008.    setup 3x2 2x3 rotate
  5009.       array [CR0N CR1N CR2N AL0S AL1S AL2S]
  5010.    setup 2x2 2x2
  5011.       array [CR1E AL0W AL1W CR0E]
  5012.    setup 2x6 2x6 rotate
  5013.       array [CR0N CR1N CR2N AL9S AL10S AL11S AL0S AL1S AL2S CR9N CR10N CR11N]
  5014.    setup 6x2 2x6 rotate
  5015.       array [CR0N CR1N CR2N CR3N CR4N CR5N AL0S AL1S AL2S AL3S AL4S AL5S]
  5016.    setup 2x8 2x8 rotate
  5017.       array [CR0N CR1N CR2N CR3N AL12S AL13S AL14S AL15S AL0S AL1S AL2S AL3S CR12N CR13N CR14N CR15N]
  5018.    setup 8x2 2x8 rotate
  5019.       array [CR0N CR1N CR2N CR3N CR4N CR5N CR6N CR7N AL0S AL1S AL2S AL3S AL4S AL5S AL6S AL7S]
  5020.    setup 3x4 3x4 rotate
  5021.       array [CR0N CR1N AL8S AL9S AL10S AL11S AL0S AL1S CR8N CR9N CR10N CR11N]
  5022.    setup 4x3 3x4 rotate
  5023.       array [CR0N CR1N CR2N CR3N 0 0 AL0S AL1S AL2S AL3S 0 0]
  5024.    setup 4x4 4x4
  5025.       array [AL12W AL13W AL14W AL15W AL0W AL1W CR10E AL3W CR12E CR13E CR14E CR15E CR0E CR1E AL10W CR3E]
  5026.    setup c1phan c1phan
  5027.       array [CR4E CR5E CR6E CR7E AL0W AL1W AL2W AL3W AL4W AL5W AL6W AL7W CR0E CR1E CR2E CR3E]
  5028.    setup short6 short6 rotate
  5029.       array [CR0N 0 AL5S AL0N 0 CR5N]
  5030.    setup pshort6 short6 rotate
  5031.       array [CR0N CR1N CR2N AL0S AL1S AL2S]
  5032.    setup dmd dmd rotate
  5033.       array [CR0N 0 AL0S 0]
  5034.    setup pmd dmd rotate
  5035.       array [0 CR1N 0 AL1S]
  5036.    setup star star
  5037.       array [CR1E 0 AL1W 0]
  5038.    setup galaxy galaxy
  5039.       array [CR2E CR3E 0 AL1W AL2W AL3W 0 CR1E]
  5040.    setup hrglass hrglass rotate
  5041.       array [CR0N AL5S AL6S 0 AL0S CR5N CR6N 0]
  5042.    setup phrglass hrglass rotate
  5043.       array [CR0N CR1N 0 CR3N AL0S AL1S 0 AL3S]
  5044.    setup qtag qtag rotate
  5045.       array [CR0N AL5S AL6S AL7S AL0S CR5N CR6N CR7N]
  5046.    setup pqtag qtag rotate
  5047.       array [CR0N CR1N 0 0 AL0S AL1S 0 0]
  5048.    setup 1x2 1x2 rotate
  5049.       array [CR0N AL0S]
  5050.    setup 1x4 1x4 rotate
  5051.       array [CR0N CR1N AL0S AL1S]
  5052.    setup 1x6 1x6 rotate
  5053.       array [CR0N CR1N CR2N AL0S AL1S AL2S]
  5054.    setup 1x8 1x8 rotate
  5055.       array [CR0N CR1N CR2N CR3N AL0S AL1S AL2S AL3S]
  5056.    setup 1x10 1x10 rotate
  5057.       array [CR0N CR1N CR2N CR3N CR4N AL0S AL1S AL2S AL3S AL4S]
  5058.    setup 1x12 1x12 rotate
  5059.       array [CR0N CR1N CR2N CR3N CR4N CR5N AL0S AL1S AL2S AL3S AL4S AL5S]
  5060.    setup 1x14 1x14 rotate
  5061.       array [CR0N CR1N CR2N CR3N CR4N CR5N CR6N AL0S AL1S AL2S AL3S AL4S AL5S AL6S]
  5062.    setup 1x16 1x16 rotate
  5063.       array [CR0N CR1N CR2N CR3N CR4N CR5N CR6N CR7N AL0S AL1S AL2S AL3S AL4S AL5S AL6S AL7S]
  5064.    setup ptpd ptpd rotate
  5065.       array [CR0N CR1N CR2N CR3N AL0S AL1S AL2S AL3S]
  5066.    setup pptpd ptpd rotate
  5067.       array [0 CR1N 0 AL7S 0 AL1S 0 CR7N]
  5068.  
  5069. call "counteract" c3x
  5070.    setup 4x2 2x4 restriction forbidden wave_only
  5071.       array [R0W R2W R7W R5W L2E L0E L5E L7E]
  5072.  
  5073. call "fan relay the top" c3
  5074.             step_to_wave 12_matrix_is_inherited
  5075.    seq motivate2 [inherit_12_matrix]
  5076.    seq turnstar1_endstrade [inherit_12_matrix]
  5077.    seq finishnomod [inherit_12_matrix]      /* Can't allow the cast off 3/4 to be replaced, because there are two of them. */
  5078.  
  5079. call "relay the top" c1
  5080.             step_to_wave 12_matrix_is_inherited
  5081.    seq trade [inherit_12_matrix]
  5082.    seq motivate2 [inherit_12_matrix]
  5083.    seq turnstar1_endstrade [inherit_12_matrix]
  5084.    seq finishnomod [inherit_12_matrix]      /* Can't allow the cast off 3/4 to be replaced, because there are two of them. */
  5085.  
  5086. call "relay the yo-yo" c4
  5087.             step_to_wave 12_matrix_is_inherited
  5088.    seq armturn_34 [inherit_12_matrix]
  5089.    seq motivate2 [inherit_12_matrix]
  5090.    seq turnstar1_endstrade [inherit_12_matrix]
  5091.    seq finishnomod [inherit_12_matrix]      /* Can't allow the cast off 3/4 to be replaced, because there are three of them. */
  5092.  
  5093. call "@b cast and relay" c3
  5094.             step_to_wave neednumber 12_matrix_is_inherited
  5095.    seq armturnn_4 [inherit_12_matrix]
  5096.    seq motivate2 [inherit_12_matrix]
  5097.    seq turnstarn_endstrade [inherit_12_matrix]
  5098.    seq finishnomod [inherit_12_matrix]      /* Can't allow the cast off 3/4 to be replaced, because there are two of them. */
  5099.  
  5100. call "spin chain the gears" plus
  5101.             step_to_wave
  5102.    setup 2x4 2x4 restriction wave_only
  5103.    array [3S 6N 5N 0S 3N 6S 5S 0N]
  5104. call "spin chain and exchange the gears" plus
  5105.             step_to_wave
  5106.    setup 2x4 2x4 restriction wave_only
  5107.    array [4S 5S 6S 7S 4N 1S 2S 7N]
  5108. call "spin chain and circulate the gears" c3x
  5109.             step_to_wave
  5110.    setup 2x4 2x4 restriction wave_only
  5111.    array [4S 1N 2N 7S 0S 5N 6N 3S]
  5112.  
  5113. call "scoot back" mainstream tag scootback
  5114.             fudge_to_q_tag
  5115.    setup 2x2 2x2 restriction forbidden wave_only
  5116.       array [CR1S AL0S AM3S CM2S]
  5117.    setup pmd dmd qualifier miniwaves
  5118.       array [0S 3S 0 1S]
  5119.                alternate_definition [interlocked] c3a
  5120.    setup qtag qtag
  5121.       preds "Must be in quarter line setup."
  5122.          if q_line_front [0 0 7S 6S 4S 5S 3S 2S]
  5123.          if q_line_back [0 0 7S 6S 4S 5S 3S 2S]
  5124.  
  5125. /* This call requires the "left" modifier to be given if called from
  5126.    a left-handed setup.  The purpose is to avoid losing if we call
  5127.    "scoot and little" from a leftie.  The official rules require that
  5128.    people go left on the outside, even though we didn't say "left",
  5129.    since they observed the handedness of the setup during the scoot back.
  5130.    The way we address this problem is to forbid the call from a leftie
  5131.    unless the word "left" is explicitly used.  This way, both the dancers
  5132.    and the program know to go left on the outside. */
  5133. call "right scoot back" dontshow tag rtqtagscootback
  5134.             left_means_mirror fudge_to_q_tag
  5135.    setup pmd dmd qualifier miniwaves
  5136.       array [0S 3S 0 0]
  5137.                alternate_definition [interlocked] c3a
  5138.    setup qtag qtag
  5139.       preds "Must be in quarter line setup."
  5140.          if q_line_front [0 0 0 0 4S 5S 3S 2S]
  5141.          if q_line_back  [0 0 0 0 4S 5S 3S 2S]
  5142.  
  5143. call "scoot and dodge" a1
  5144.    setup 2x2 2x2 restriction forbidden wave_only
  5145.       array [Z1N Z0N A3S C2S]
  5146.  
  5147. call "scoot the diamond" c3a
  5148.             fudge_to_q_tag
  5149.    setup pmd dmd
  5150.       preds "???"
  5151.          if dmd_ctrs_rh [R1N R0W 0 0]
  5152.          if always [L3N 0 0 L0E]
  5153.  
  5154. call "scatter scoot" c1 tag scatscoot
  5155.    setup 2x4 2x4 restriction forbidden wave_only
  5156.       array [3S 2S 1S 0S 5S 4S 7S 6S]
  5157.  
  5158. call "scoot chain thru" a2 tag scootchainthru
  5159.    setup 2x4 2x4 restriction forbidden wave_only
  5160.       array [1S 0S 3S 2S 7S 2N 1N 4S]
  5161.    setup qtag qtag
  5162.       preds "Must be in quarter tag setup."
  5163.          if q_tag_front [0 0 6S 1N 3N 7N 2S 0N]
  5164.          if q_tag_back [0 0 6S 1N 5S 4S 2S 0N]
  5165.  
  5166. call "scatter scoot chain thru" c1 tag scatscootchainthru
  5167.    setup 2x4 2x4 restriction forbidden wave_only
  5168.    array [3S 2S 1S 0S 7S 2N 1N 4S]
  5169.  
  5170. call "quick change" c4
  5171.    setup 2x4 2x4
  5172.       array [CR3W CR2W AL1E AL0E AL3W AL6E CR5W CR0E]
  5173.  
  5174. call "deuces wild" c4
  5175.    setup 2x4 2x4
  5176.       array [AL7N CR2S AL1S CR4N ZM3N AL6S CR5S ZM0N]
  5177.  
  5178. call "nice and easy" c4
  5179.    setup 2x4 2x4
  5180.       array [AL7E CR2W AL1E CR4W AL3W AL6E CR5W CR0E]
  5181.  
  5182. call "drift apart" c3a
  5183.    setup 2x4 2x4
  5184.       array [M6S M4S M7S M5S L2S L0S R3S R1S]
  5185.    setup 4x2 2x4
  5186.       array [R6S M4N L3S M5S M2S R4S M3N L1S]
  5187.             alternate_definition [12matrix] c3a
  5188.    setup 3x4 3x4
  5189.       array [M11S M4S M10S M5S L2S L0S M3N M3N M0N M0N R1S R3S]
  5190.  
  5191. call "drift around" c4
  5192.             reverse_means_mirror
  5193.    setup 2x2 2x2
  5194.       array [CR1S CR2N 0 0]
  5195.  
  5196. call "change your image" c3
  5197.    setup 2x4 2x4 rotate
  5198.       array [M5E R0E L7E M2E L1E M0W M7W R6E]
  5199.    setup 4x2 2x4
  5200.       array [R6S M3N R4S M5S M2S L3S M4N L1S]
  5201.  
  5202. call "turntable" c4a
  5203.    setup 2x4 2x4
  5204.       array [5E 4W 7W 6E 1W 0W 3W 2W]
  5205.    setup 4x2 2x4
  5206.       array [5W 4W 7W 6E 1E 0W 3W 2W]
  5207.  
  5208. call "switch to an hourglass" a2
  5209.    setup 2x4 hrglass rotate
  5210.       array [R6N L5E R0E L6S M3W R1E L4E M7W]
  5211.  
  5212. call "hourglass circulate" a2
  5213.             fudge_to_q_tag
  5214.    simple_funny
  5215.    setup hrglass hrglass
  5216.       array [0 0 L1W 0 0 0 R0E 0]
  5217.    setup phrglass hrglass
  5218.       array [M3N R2E 0 M1N L2W M7N 0 M4N]
  5219.  
  5220. call "squeeze the hourglass" c1
  5221.    setup hrglass galaxy
  5222.       array [0 0 M4N 0 0 0 M0N 0]
  5223.    setup phrglass galaxy
  5224.       array [R7S R5S 0 R6S L3S L1S 0 L2S]
  5225.  
  5226. call "squeeze the galaxy" c1
  5227.    setup galaxy hyperglass
  5228.       preds "???"
  5229.          if next_galaxyspot_is_tboned [M0N R5S 0 L2S M6N L11S 0 R8S]
  5230.                             if always [R7S R5S 0 L2S L1S L11S 0 R8S]
  5231.  
  5232. call "flip the hourglass" a2
  5233.             fudge_to_q_tag take_right_hands
  5234.    setup hrglass 2x4 rotate
  5235.       array [0 0 L0S 0 0 0 R7N 0]
  5236.    setup phrglass 2x4 rotate
  5237.       array [R6E R1E 0 M0W L2E L5E 0 M3W]
  5238.  
  5239. call "cut the hourglass" a2
  5240.             fudge_to_q_tag take_right_hands
  5241.    setup hrglass 2x4 rotate
  5242.       array [0 0 L0S 0 0 0 R7N 0]
  5243.    setup phrglass 2x4 rotate
  5244.       array [R5E R2E 0 M0W L1E L6E 0 M3W]
  5245.  
  5246. call "galaxy circulate" c1
  5247.    simple_funny
  5248.    setup galaxy galaxy
  5249.       preds "???"
  5250.          if next_galaxyspot_is_tboned [R1E R2E 0 L2W L3W M4N 0 M0N]
  5251.          if always [M1N R2E 0 L2W M3N M4N 0 M0N]
  5252.  
  5253. call "reverse flip the galaxy" c2
  5254.    setup galaxy 2x4
  5255.       preds "???"
  5256.          if next_galaxyspot_is_tboned [R1E L0S 0 R3S L2W R4S 0 L7S]
  5257.          if always                    [M1N L0S 0 R3S M2N R4S 0 L7S]
  5258.  
  5259. call "reverse cut the galaxy" c2
  5260.    setup galaxy 2x4
  5261.       preds "???"
  5262.          if next_galaxyspot_is_tboned [R1E R3S 0 L0S L2W L7S 0 R4S]
  5263.          if always                    [M1N R3S 0 L0S M2N L7S 0 R4S]
  5264.  
  5265. call "_the K" dontshow tag the_k
  5266.    setup 1x4 1x4
  5267.       array [AL0S CR3S CR2S AL1S]
  5268.  
  5269. call "@2cross @3the K" c2
  5270.             visible_fractions
  5271.    seq crosstrail [or_anycall]
  5272.    seq the_k []
  5273.  
  5274. call "@hcounterpoint" c4a
  5275.             reverse_means_mirror single_is_inherited diamond_is_legal
  5276.    conc recycle [inherit_reverse inherit_single inherit_diamond] ctr_rot [conc_force_otherway]
  5277.  
  5278. call "@2turn @3the key" c3x
  5279.             visible_fractions
  5280.    seq trade [or_anycall]
  5281.    seq ctr_rot [allow_forced_mod]
  5282.    seq hinge [allow_forced_mod]
  5283.  
  5284. call "_clear the way ends to centers" dontshow tag clearwayec
  5285.    seq hinge []
  5286.    seq hinge []
  5287.    seq verticalhalftag []
  5288.    seq ctr_rot []
  5289.  
  5290. call "_clear the way centers to ends" dontshow tag clearwayce
  5291.    setup 1x4 2x2 restriction wave_only
  5292.       array [0W 2W 1E 3E]
  5293.             alternate_definition [cross] c3x
  5294.    setup 1x4 2x2 restriction wave_only
  5295.       array [3W 1W 2E 0E]
  5296.  
  5297. call "clear the way" c3x
  5298.             cross_is_inherited
  5299.    crossconc clearwayec [conc_demand_columns] clearwayce [conc_force_lines inherit_cross suppress_elongation_warnings]
  5300.  
  5301. call "create a column" c3x
  5302.    setup 4x4 2x4 rotate
  5303.       array [M6E L7E M0W L7E M1W M1W M6W M0W M6W M7W R0E M7W M1E M1E M6E R0E]
  5304.  
  5305. call "_twist part 1" dontshow tag twist1
  5306.    setup 2x4 2x4 rotate
  5307.       array [6N R0E L7E 1S 2S 0 0 5N]
  5308.  
  5309. call "_twist part 2" dontshow tag twist2
  5310.    conc slidethru [or_anycall] nullcall []
  5311.  
  5312. call "twist @4the line @5@7and @8@1" c1
  5313.    seq twist1 []
  5314.    seq twist2 []
  5315.  
  5316. call "_ctrs pass thru/ends slide thru" dontshow tag pass_thru_slide_thru
  5317.    conc passthru [] slidethru [conc_demand_lines conc_force_columns]
  5318.  
  5319. call "push open the gate" c4a
  5320.    seq centersin [allow_forced_mod]
  5321.    seq cast_off_34 [allow_forced_mod]
  5322.    seq endsbend []
  5323.    seq pass_thru_slide_thru []
  5324.  
  5325. call "centers thru and close the gate" c4
  5326.    seq centersin []
  5327.    seq twist1 []
  5328.    seq twist2 []
  5329.  
  5330. call "mini busy" c3
  5331.    setup 2x4 qtag
  5332.       array [R0S R1S L0S L1S L3S L6S R2S R7S]
  5333.  
  5334. call "2/3 mini busy" c3
  5335.    setup 2x4 hrglass
  5336.       array [R0E R1E L0W L1W M2N L3W R3E M6N]
  5337.  
  5338. call "_busy nothing" dontshow tag busy_nothing
  5339.             dont_use_in_resolve
  5340.    setup 2x4 normal_concentric restriction 2fl_only
  5341.             concendsetup 1x4 2x2 0
  5342.    array [6S 5S 4S 7S 2N 3N 1N 0N]
  5343.  
  5344. call "_busy_part_2" dontshow tag busy_part_2
  5345.             dont_use_in_resolve
  5346.    conc hngflpstpnfld [or_anycall] nullcall [suppress_elongation_warnings]
  5347.  
  5348. call "@4keep @5busy@1" c3a
  5349.    seq busy_nothing []
  5350.    seq busy_part_2 []
  5351.  
  5352. call "hinge/flip/stepnfold" dontshow tag hngflpstpnfld
  5353.             dont_use_in_resolve
  5354.    setup 1x4 2x2
  5355.    array [3S 2N 2S 3N]
  5356.  
  5357. call "_make a pass part 1" dontshow tag makepass_1
  5358.             dont_use_in_resolve
  5359.    setup qtag qtag
  5360.       preds "Must be in quarter tag setup."
  5361.          if q_tag_front  [0N 1N 2N 1N 4N 5N 6N 0N]
  5362.          if q_line_back  [0N 1N 2N 1N 4N 5N 6N 0N]
  5363.          if q_tag_back   [0N 1N 2N 1N 3N 7N 6N 0N]
  5364.          if q_line_front [0N 1N 2N 1N 3N 7N 6N 0N]
  5365.             alternate_definition [cross] c3x
  5366.    setup qtag qtag
  5367.       preds "Must be in quarter tag setup."
  5368.          if q_tag_front  [0N 1N 2N 0N 7N 3N 6N 1N]
  5369.          if q_line_back  [0N 1N 2N 0N 7N 3N 6N 1N]
  5370.          if q_tag_back   [0N 1N 2N 0N 4N 5N 6N 1N]
  5371.          if q_line_front [0N 1N 2N 0N 4N 5N 6N 1N]
  5372.  
  5373. call "_finish make a pass" dontshow tag finmakepass
  5374.             dont_use_in_resolve
  5375.    conc cast_off_34 [or_anycall] trade_and_roll [conc_force_lines]
  5376.  
  5377. call "make a pass@7 but @8" c4a
  5378.             cross_is_inherited
  5379.    seq makepass_1 [inherit_cross]
  5380.    seq finmakepass []
  5381.  
  5382. call "_chain react part 1" dontshow tag chreact_1
  5383.             dont_use_in_resolve
  5384.    setup qtag spindle rotate
  5385.       preds "Must be in quarter tag setup."
  5386.          if q_tag_front  [6W 0W 7S 0W 2W 4W 7N 6W]
  5387.          if q_tag_back   [6W 0W 7S 0W 1W 5W 7N 6W]
  5388.          if q_line_front [6W 0W 7S 0W 1W 5W 7N 6W]
  5389.          if q_line_back  [6W 0W 7S 0W 2W 4W 7N 6W]
  5390.             alternate_definition [cross] c3a
  5391.    setup qtag spindle rotate
  5392.       preds "Must be in quarter tag setup."
  5393.          if q_tag_front  [6W 0W 7S 6W 5W 1W 7N 0W]
  5394.          if q_tag_back   [6W 0W 7S 6W 2W 4W 7N 0W]
  5395.          if q_line_front [6W 0W 7S 6W 2W 4W 7N 0W]
  5396.          if q_line_back  [6W 0W 7S 6W 5W 1W 7N 0W]
  5397.  
  5398. call "_wave chain react part 1" dontshow tag wvchreact_1
  5399.             dont_use_in_resolve
  5400.    setup 2x4 spindle rotate
  5401.       array [7N 6W 0W 7S 1W 2W 4W 5W]
  5402.             alternate_definition [cross] c3a
  5403.    setup 2x4 spindle rotate
  5404.       array [7N 0W 6W 7S 2W 5W 1W 4W]
  5405.  
  5406. call "_fix spindle" dontshow tag spindlefudge
  5407.             dont_use_in_resolve
  5408.    setup spindle galaxy
  5409.       array [1N 2N 3N 4N 5N 6N 7N 0N]
  5410.    setup pspindle galaxy
  5411.       array [1N 2N 3N 4N 5N 6N 7N 0N]
  5412.  
  5413. call "_nuclear reaction part 2" dontshow tag nuclear_nucleus
  5414.             dont_use_in_resolve
  5415.    crossconc verticalhalftag [] cast_1_4_roll [conc_force_lines suppress_elongation_warnings]
  5416.  
  5417. call "_reactivate part 2" dontshow tag reactivate2
  5418.             dont_use_in_resolve take_right_hands
  5419.    setup galaxy 4x4
  5420.       preds "???"
  5421.          if next_galaxyspot_is_tboned [R13E R3S 0 L15S L14W L11S 0 R7S]
  5422.          if always                    [2S   R3S 0 L15S 9S   L11S 0 R7S]
  5423.  
  5424. call "_backemup" dontshow tag backemup
  5425.    setup 2x4 qtag restriction forbidden wave_only
  5426.       array [6N 7N 3N 2N 4N 4N 5N 5N]
  5427.  
  5428. call "chain reaction" a1
  5429.             left_means_mirror cross_is_inherited
  5430.    seq chreact_1 [inherit_cross]
  5431.    seq chreact_2 [inherit_left]
  5432.    seq turnstar1_endstrade []
  5433.    seq finish []
  5434.  
  5435. /* We don't put in "inherit_left" in the hinge of the chain reaction of these
  5436.    compound calls, because, in the case of tag reaction, left applies to the
  5437.    tag, and in the case of scoot reaction is it just too weird.  Also,
  5438.    we don't allow the final cast off 3/4 in scoot reaction to be replaced,
  5439.    because we might change it to a revert the tag reaction, which has another
  5440.    cast off 3/4. */
  5441.  
  5442. call "@iscoot @j cross @lreaction" c3
  5443.             cross_is_inherited
  5444.    seq scootback []
  5445.    seq wvchreact_1 [inherit_cross]
  5446.    seq chreact_2 []
  5447.    seq turnstar1_endstrade []
  5448.    seq finishnomod []
  5449.  
  5450. call "@iscatter scoot @j cross @lreaction" c3
  5451.             cross_is_inherited
  5452.    seq scatscoot []
  5453.    seq wvchreact_1 [inherit_cross]
  5454.    seq chreact_2 []
  5455.    seq turnstar1_endstrade []
  5456.    seq finishnomod []
  5457.  
  5458. call "@iscoot chain thru @j cross @lreaction" c3
  5459.             cross_is_inherited
  5460.    seq scootchainthru []
  5461.    seq wvchreact_1 [inherit_cross]
  5462.    seq chreact_2 []
  5463.    seq turnstar1_endstrade []
  5464.    seq finishnomod []
  5465.  
  5466. call "@iscatter scoot chain thru @j cross @lreaction" c3
  5467.             cross_is_inherited
  5468.    seq scatscootchainthru []
  5469.    seq wvchreact_1 [inherit_cross]
  5470.    seq chreact_2 []
  5471.    seq turnstar1_endstrade []
  5472.    seq finishnomod []
  5473.  
  5474. call "@i@2tag @3@j cross @lreaction" c3
  5475.             left_means_mirror cross_is_inherited first_part_visible
  5476.    seq halftag [or_anycall inherit_left must_be_tag_call]
  5477.    seq scootback []
  5478.    seq wvchreact_1 [inherit_cross]
  5479.    seq chreact_2 []
  5480.    seq turnstar1_endstrade []
  5481.    seq finishnomod []
  5482.  
  5483. call "@i@2tag @3and scatter @j cross @lreaction" c3
  5484.             left_means_mirror cross_is_inherited first_part_visible
  5485.    seq halftag [or_anycall inherit_left must_be_tag_call]
  5486.    seq scatscoot []
  5487.    seq wvchreact_1 [inherit_cross]
  5488.    seq chreact_2 []
  5489.    seq turnstar1_endstrade []
  5490.    seq finishnomod []
  5491.  
  5492. call "@i@2tag @3chain thru @j cross @lreaction" c3
  5493.             left_means_mirror cross_is_inherited first_part_visible
  5494.    seq halftag [or_anycall inherit_left must_be_tag_call]
  5495.    seq scootchainthru []
  5496.    seq wvchreact_1 [inherit_cross]
  5497.    seq chreact_2 []
  5498.    seq turnstar1_endstrade []
  5499.    seq finishnomod []
  5500.  
  5501. call "@i@2tag @3chain thru and scatter @j cross @lreaction" c3
  5502.             left_means_mirror cross_is_inherited first_part_visible
  5503.    seq halftag [or_anycall inherit_left must_be_tag_call]
  5504.    seq scatscootchainthru []
  5505.    seq wvchreact_1 [inherit_cross]
  5506.    seq chreact_2 []
  5507.    seq turnstar1_endstrade []
  5508.    seq finishnomod []
  5509.  
  5510. call "@itrans@j cross chain re@laction" c3x
  5511.             magic_is_inherited cross_is_inherited
  5512.    seq transfer [inherit_magic]
  5513.    seq wvchreact_1 [inherit_cross]
  5514.    seq chreact_2 []
  5515.    seq turnstar1_endstrade []
  5516.    seq finishnomod []
  5517.  
  5518. call "@iopen up @jcross chain @lreaction" c4
  5519.             magic_is_inherited cross_is_inherited
  5520.    seq openup [inherit_magic]
  5521.    seq wvchreact_1 [inherit_cross]
  5522.    seq chreact_2 []
  5523.    seq turnstar1_endstrade []
  5524.    seq finishnomod []
  5525.  
  5526. call "reactivate" c3
  5527.             cross_is_inherited
  5528.    seq chreact_1 [inherit_cross]
  5529.    seq spindlefudge []
  5530.    seq reactivate2 []
  5531.  
  5532. call "@iscoot @j cross @lreactivate" c3
  5533.             cross_is_inherited
  5534.    seq scootback []
  5535.    seq wvchreact_1 [inherit_cross]
  5536.    seq spindlefudge []
  5537.    seq reactivate2 []
  5538.  
  5539. call "@iscatter scoot @j cross @lreactivate" c3
  5540.             cross_is_inherited
  5541.    seq scatscoot []
  5542.    seq wvchreact_1 [inherit_cross]
  5543.    seq spindlefudge []
  5544.    seq reactivate2 []
  5545.  
  5546. call "@iscoot chain thru @j cross @lreactivate" c3
  5547.             cross_is_inherited
  5548.    seq scootchainthru []
  5549.    seq wvchreact_1 [inherit_cross]
  5550.    seq spindlefudge []
  5551.    seq reactivate2 []
  5552.  
  5553. call "@iscatter scoot chain thru @j cross @lreactivate" c3
  5554.             cross_is_inherited
  5555.    seq scatscootchainthru []
  5556.    seq wvchreact_1 [inherit_cross]
  5557.    seq spindlefudge []
  5558.    seq reactivate2 []
  5559.  
  5560. call "@i@2tag @3@j cross @lreactivate" c3
  5561.             left_means_mirror cross_is_inherited first_part_visible
  5562.    seq halftag [or_anycall inherit_left must_be_tag_call]
  5563.    seq scootback []
  5564.    seq wvchreact_1 [inherit_cross]
  5565.    seq spindlefudge []
  5566.    seq reactivate2 []
  5567.  
  5568. call "@i@2tag @3and scatter @j cross @lreactivate" c3
  5569.             left_means_mirror cross_is_inherited first_part_visible
  5570.    seq halftag [or_anycall inherit_left must_be_tag_call]
  5571.    seq scatscoot []
  5572.    seq wvchreact_1 [inherit_cross]
  5573.    seq spindlefudge []
  5574.    seq reactivate2 []
  5575.  
  5576. call "@i@2tag @3chain thru @j cross @lreactivate" c3
  5577.             left_means_mirror cross_is_inherited first_part_visible
  5578.    seq halftag [or_anycall inherit_left must_be_tag_call]
  5579.    seq scootchainthru []
  5580.    seq wvchreact_1 [inherit_cross]
  5581.    seq spindlefudge []
  5582.    seq reactivate2 []
  5583.  
  5584. call "@i@2tag @3chain thru and scatter @j cross @lreactivate" c3
  5585.             left_means_mirror cross_is_inherited first_part_visible
  5586.    seq halftag [or_anycall inherit_left must_be_tag_call]
  5587.    seq scatscootchainthru []
  5588.    seq wvchreact_1 [inherit_cross]
  5589.    seq spindlefudge []
  5590.    seq reactivate2 []
  5591.  
  5592. call "@itrans@j cross re@lactivate" c4
  5593.             magic_is_inherited cross_is_inherited
  5594.    seq transfer [inherit_magic]
  5595.    seq wvchreact_1 [inherit_cross]
  5596.    seq spindlefudge []
  5597.    seq reactivate2 []
  5598.  
  5599. call "@iopen up @jcross @lreactivate" c4
  5600.             magic_is_inherited cross_is_inherited
  5601.    seq openup [inherit_magic]
  5602.    seq wvchreact_1 [inherit_cross]
  5603.    seq spindlefudge []
  5604.    seq reactivate2 []
  5605.  
  5606. call "nuclear reaction" c3x
  5607.             cross_is_inherited
  5608.    seq makepass_1 [inherit_cross]
  5609.    seq nuclear_nucleus []
  5610.    seq ctr_rot []
  5611.  
  5612. call "@iscoot @j cross @lnuclear reaction" c3x
  5613.             cross_is_inherited
  5614.    seq scootback []
  5615.    seq backemup []
  5616.    seq makepass_1 [inherit_cross]
  5617.    seq nuclear_nucleus []
  5618.    seq ctr_rot []
  5619.  
  5620. call "@iscatter scoot @j cross @lnuclear reaction" c3x
  5621.             cross_is_inherited
  5622.    seq scatscoot []
  5623.    seq backemup []
  5624.    seq makepass_1 [inherit_cross]
  5625.    seq nuclear_nucleus []
  5626.    seq ctr_rot []
  5627.  
  5628. call "@iscoot chain thru @j cross @lnuclear reaction" c3x
  5629.             cross_is_inherited
  5630.    seq scootchainthru []
  5631.    seq backemup []
  5632.    seq makepass_1 [inherit_cross]
  5633.    seq nuclear_nucleus []
  5634.    seq ctr_rot []
  5635.  
  5636. call "@iscatter scoot chain thru @j cross @lnuclear reaction" c3x
  5637.             cross_is_inherited
  5638.    seq scatscootchainthru []
  5639.    seq backemup []
  5640.    seq makepass_1 [inherit_cross]
  5641.    seq nuclear_nucleus []
  5642.    seq ctr_rot []
  5643.  
  5644. call "@i@2tag @3@j cross @lnuclear reaction" c3x
  5645.             left_means_mirror cross_is_inherited first_part_visible
  5646.    seq halftag [or_anycall inherit_left must_be_tag_call]
  5647.    seq scootback []
  5648.    seq backemup []
  5649.    seq makepass_1 [inherit_cross]
  5650.    seq nuclear_nucleus []
  5651.    seq ctr_rot []
  5652.  
  5653. call "@i@2tag @3and scatter @j cross @lnuclear reaction" c3x
  5654.             left_means_mirror cross_is_inherited first_part_visible
  5655.    seq halftag [or_anycall inherit_left must_be_tag_call]
  5656.    seq scatscoot []
  5657.    seq backemup []
  5658.    seq makepass_1 [inherit_cross]
  5659.    seq nuclear_nucleus []
  5660.    seq ctr_rot []
  5661.  
  5662. call "@i@2tag @3chain thru @j cross @lnuclear reaction" c3x
  5663.             left_means_mirror cross_is_inherited first_part_visible
  5664.    seq halftag [or_anycall inherit_left must_be_tag_call]
  5665.    seq scootchainthru []
  5666.    seq backemup []
  5667.    seq makepass_1 [inherit_cross]
  5668.    seq nuclear_nucleus []
  5669.    seq ctr_rot []
  5670.  
  5671. call "@i@2tag @3chain thru and scatter @j cross @lnuclear reaction" c3x
  5672.             left_means_mirror cross_is_inherited first_part_visible
  5673.    seq halftag [or_anycall inherit_left must_be_tag_call]
  5674.    seq scatscootchainthru []
  5675.    seq backemup []
  5676.    seq makepass_1 [inherit_cross]
  5677.    seq nuclear_nucleus []
  5678.    seq ctr_rot []
  5679.  
  5680. call "@itrans @j cross @lnuclear reaction" c4a
  5681.             magic_is_inherited cross_is_inherited
  5682.    seq transfer [inherit_magic]
  5683.    seq backemup []
  5684.    seq makepass_1 [inherit_cross]
  5685.    seq nuclear_nucleus []
  5686.    seq ctr_rot []
  5687.  
  5688. call "@iopen up @jcross @lnuclear reaction" c4
  5689.             magic_is_inherited cross_is_inherited
  5690.    seq openup [inherit_magic]
  5691.    seq backemup []
  5692.    seq makepass_1 [inherit_cross]
  5693.    seq nuclear_nucleus []
  5694.    seq ctr_rot []
  5695.  
  5696. call "first @2choice@3" c4a
  5697.    seq first_nothing []
  5698.    seq first_part_2 []
  5699.  
  5700. call "_first nothing" dontshow tag first_nothing
  5701.             dont_use_in_resolve
  5702.    setup 2x4 normal_concentric restriction wave_only
  5703.             concendsetup 1x4 2x2 0
  5704.    array [5S 7S 6S 4S 2N 3N 1N 0N]
  5705.  
  5706. call "_first part 2" dontshow tag first_part_2
  5707.             dont_use_in_resolve
  5708.    conc lock_the_hinge [or_anycall] nullcall [suppress_elongation_warnings]
  5709.  
  5710. call "lock the hinge" c3a tag lock_the_hinge
  5711.             cross_is_inherited visible_fractions
  5712.                   /* We must not allow modifications, even forced ones, on this
  5713.                      part, because this is invoked under locker's choice, which
  5714.                      also has a modifiable lockit.  We can't allow the same base
  5715.                      call to be modified in two different places in the definition
  5716.                      of a compound call.  In any case, it doesn't make much sense
  5717.                      to say "lock the hinge, but replace the lockit with a ... " */
  5718.    seq lockit [inherit_cross]
  5719.    seq hinge []
  5720.  
  5721. call "hinge the lock" c3a tag hinge_the_lock
  5722.             visible_fractions
  5723.    seq hinge []
  5724.    seq lockit []
  5725.  
  5726. call "lock 'em up" c3x
  5727.    seq lockit []
  5728.    seq hinge []
  5729.    seq finlockemup []
  5730.  
  5731. call "_finish lock em up" dontshow tag finlockemup
  5732.             dont_use_in_resolve
  5733.    conc hinge_the_lock [] coupleup [conc_force_otherway]
  5734.  
  5735. call "3X1 flip the diamond" c3a
  5736.    setup 3x1dmd 1x8 rotate
  5737.       array [R0N R1N R3N 0 L0S L1S L3S 0]
  5738.    setup p3x1dmd 1x8 rotate
  5739.       array [0 0 0 R2E 0 0 0 L6E]
  5740.  
  5741. call "3X1 cut the diamond" c3a
  5742.    setup 3x1dmd 1x8 rotate
  5743.       array [R0N R1N R3N 0 L0S L1S L3S 0]
  5744.    setup p3x1dmd 1x8 rotate
  5745.       array [0 0 0 R6E 0 0 0 L2E]
  5746.  
  5747. call "@2split @3the difference" c4a
  5748.             visible_fractions
  5749.    seq box_circ [or_anycall]
  5750.    seq cast_off_34 []
  5751.    seq slip [allow_forced_mod]
  5752.    seq cast_off_34 []
  5753.  
  5754. call "_hinge/half circ" dontshow tag hinge_and_half_circ
  5755.             dont_use_in_resolve
  5756.    seq hinge []
  5757.    seq half_circ []
  5758.  
  5759. call "_half circ/hinge" dontshow tag half_circ_and_hinge
  5760.             dont_use_in_resolve
  5761.    seq half_circ []
  5762.    seq hinge []
  5763.  
  5764. call "_finish right on" dontshow tag finish_right_on
  5765.             dont_use_in_resolve
  5766.    setup 1x2 1x2 rotate
  5767.       array [R1W L1W]
  5768.  
  5769. call "_finish explode top" dontshow tag plodetop
  5770.             dont_use_in_resolve
  5771.    setup 2x4 2x4
  5772.    array [0 0 0 0 1S 7N 2S 0S]
  5773.  
  5774. call "explode the top" c3a
  5775.    seq explode []
  5776.    seq plodetop []
  5777.  
  5778. call "_centers 3/4 ends half circ" dontshow tag motivate2
  5779.             dont_use_in_resolve 12_matrix_is_inherited
  5780.    maybematrix_conc_star armturn_34 [] half_circ [conc_demand_lines]
  5781.  
  5782. call "central bits and pieces" c4a tag ctr_bits_pieces
  5783.    setup 2x2 2x2
  5784.       preds "Can't do this with phantoms or T-boned people."
  5785.          if x22_miniwave [L2N R3N R0N L1N]
  5786.          if x22_couple [R0N R3N R0N R3N]
  5787.  
  5788. call "bits and pieces" c4a
  5789.    conc ctr_bits_pieces [] box_circ_and_trade [conc_demand_lines conc_force_columns endscando]
  5790.  
  5791. call "_fascinate part 1" dontshow tag fascinate1
  5792.             dont_use_in_resolve
  5793.    conc nat34thru [] box_circ_15 [conc_demand_lines]
  5794.  
  5795. call "_fascinate part 2" dontshow tag fascinate2
  5796.             dont_use_in_resolve
  5797.    conc diamond_ends_isolate [] wheelanddeal [or_anycall conc_concentric_rules suppress_elongation_warnings]
  5798.  
  5799. call "_forcible fascinate part 2" dontshow tag forcefascinate2
  5800.             dont_use_in_resolve
  5801.    conc diamond_ends_isolate [] wheelanddeal [allow_forced_mod conc_concentric_rules suppress_elongation_warnings]
  5802.  
  5803. call "fascinat@4e@5@7ing@8" c2
  5804.    seq fascinate1 []
  5805.    seq fascinate2 []
  5806.  
  5807. call "_fan the gate part 1" dontshow tag fanthegate1
  5808.             dont_use_in_resolve
  5809.    conc nat34_34 [] box_circ_15 [conc_demand_lines]
  5810.  
  5811. call "_fan the gate part 2" dontshow tag fanthegate2
  5812.             dont_use_in_resolve
  5813.    conc nullcall [] bendtheline [or_anycall]
  5814.  
  5815. call "fan the gate" c4a
  5816.    seq fanthegate1 []
  5817.    seq fanthegate2 []
  5818.  
  5819. call "_do yellow brick stuff" dontshow tag do_yellow_brick
  5820.             dont_use_in_resolve
  5821.    setup 2x4 3x1dmd rotate restriction forbidden wave_only
  5822.       array [M2N M3E M7E M2S M5S L0S R0N M5N]
  5823.  
  5824. call "follow the yellow brick@7ing@8@4 road@5" c4
  5825.    seq neighbor []
  5826.    seq do_yellow_brick []
  5827.    seq fascinate2 []
  5828.  
  5829. /* Alas, we don't have a mechanism for allowing a call to be "naturally" modified
  5830.    in two or more ways.  So, if you want do do both modifications, the second one
  5831.    must be forced, which will make it come out looking like "revert cross flip the
  5832.    yellow brick road, but replace the wheel and deal with a bounce the belles". */
  5833.  
  5834. call "@2tag @3the yellow brick road" c4
  5835.             first_part_visible
  5836.    seq halftag [or_anycall must_be_tag_call]
  5837.    seq neighbor []
  5838.    seq do_yellow_brick []
  5839.    seq forcefascinate2 []
  5840.  
  5841. call "snap" c4 tag snap
  5842.    seq partnertag []
  5843.  
  5844. call "crackle" c4 tag crackle
  5845.    conc pass_ocean [] hinge []
  5846.  
  5847. call "pop" c4 tag pop
  5848.    seq explodeline []
  5849.  
  5850. call "snap, crackle, and pop" c4
  5851.             visible_fractions
  5852.    seq partnertag []
  5853.    seq crackle []
  5854.    seq explodeline []
  5855.  
  5856. call "single scoot and trade" c4a
  5857.             left_means_mirror
  5858.    setup pmd 1x4 rotate
  5859.       array [R0W R1W 0 0]
  5860.  
  5861. call "_slant touch and nothing" dontshow tag slant_touch_nothing1
  5862.             dont_use_in_resolve
  5863.    setup 2x4 1x8
  5864.    array [0N 1N 5N 4N 6N 3N 6N 3N]
  5865.  
  5866. call "_outers maybe wheel and deal" dontshow tag slant_touch_nothing2
  5867.             dont_use_in_resolve
  5868.    conc nullcall [] wheelanddeal [or_anycall]
  5869.  
  5870. call "slant touch and @2wheel@3" c3a
  5871.    seq slant_touch_nothing1 []
  5872.    seq slant_touch_nothing2 []
  5873.  
  5874. call "_slip and cast off 3/4" dontshow tag slip_cast_3
  5875.             dont_use_in_resolve
  5876.    seq slip [allow_forced_mod]
  5877.    seq cast_off_34 [allow_forced_mod]
  5878.  
  5879. call "_finish diamond chain thru" dontshow tag finishchainthru
  5880.             dont_use_in_resolve
  5881.    /* This call creates serious problems for the concentric call mechanism.
  5882.       If we are doing diamond chain thru in, say, split phantom diamonds
  5883.       with only the points as real people (that is, we physically have
  5884.       columns far apart), then the outsides will all be phantoms when
  5885.       the setup is concentrified.  The concentric call mechanism has a
  5886.       hard time figuring out the result setup in such a case.  Special
  5887.       code has been added to look for the case of outsides being phantoms
  5888.       and the call being "nullcall", in which case it make the outsides
  5889.       hold the setup that the phantoms were occupying, and forces the
  5890.       "conc_force_spots" flag to be obeyed. */
  5891.    conc slip_cast_3 [] nullcall []
  5892.  
  5893. call "_start sterling chain thru" dontshow tag startsterl
  5894.             dont_use_in_resolve
  5895.    setup 2x4 qtag rotate
  5896.    array [6N 1E 4E 6S 3S 1W 4W 3N]
  5897.  
  5898. call "@2diamond @3chain thru" a2
  5899.             intlk_is_inherited magic_is_inherited funny_is_inherited
  5900.    seq diamondcirc [or_anycall inherit_intlk inherit_magic inherit_funny]
  5901.    seq finishchainthru []
  5902.  
  5903. call "sterling chain thru" c3x
  5904.    seq startsterl []
  5905.    seq finishchainthru []
  5906.  
  5907. call "_double circulate" dontshow tag dblcirc
  5908.             dont_use_in_resolve
  5909.    seq circulate []
  5910.    seq circulate []
  5911.  
  5912. call "_start @b chain and circ in" dontshow tag startchcircin
  5913.             dont_use_in_resolve neednumber
  5914.    conc armturnn_4 [] dblcirc [conc_demand_lines]
  5915.  
  5916. call "_start 3/4 chain and circ in" dontshow tag start34chcircin
  5917.    /* It would be nice if there were an invocation modifier that would pass a number. */
  5918.             dont_use_in_resolve
  5919.    conc armturn_34 [] dblcirc [conc_demand_lines conc_force_lines]
  5920.  
  5921. call "@b chain and circulate in" c4
  5922.             neednumber
  5923.    seq startchcircin []
  5924.    seq finishchainthru []
  5925.    seq spread []
  5926.  
  5927. call "spin chain and circulate in" c4
  5928.             step_to_wave
  5929.    seq swing []
  5930.    seq start34chcircin []
  5931.    seq finishchainthru []
  5932.    seq spread []
  5933.  
  5934. call "scoot and weave" a2
  5935.    seq scootback []
  5936.    seq weave []
  5937.  
  5938. call "turn and weave" c3x
  5939.             step_to_wave left_means_mirror
  5940.    setup 2x2 1x4 rotate restriction forbidden wave_only
  5941.       array [L3N R3S L2N R2S]
  5942. /* ***** not right: need predicate so can do it from leftie. */
  5943.    setup pmd 1x4
  5944.       array [L3W R0W 0 0]
  5945.  
  5946. call "_ramble" dontshow tag ramble
  5947.             fudge_to_q_tag
  5948.    setup qtag 2x4
  5949.       preds "Unknown sex."
  5950.          if boyp [7W 4W 5W 5W 0 0 6W 6W]
  5951.          if girlp [7E 4E 5E 5E 0 0 6E 6E]
  5952.                alternate_definition [cross] c2
  5953.    setup qtag 2x4
  5954.       preds "Unknown sex."
  5955.          if boyp [4W 7W 6W 6W 0 0 5W 5W]
  5956.          if girlp [4E 7E 6E 6E 0 0 5E 5E]
  5957.                alternate_definition [interlocked] c3
  5958.    setup qtag 2x4
  5959.       preds "Unknown sex."
  5960.          if boyp [7W 4W 5W 6W 0 0 6W 5W]
  5961.          if girlp [7E 4E 5E 6E 0 0 6E 5E]
  5962.  
  5963. call "_counter" dontshow tag counter
  5964.             fudge_to_q_tag left_means_mirror
  5965.    setup qtag 2x4 restriction wave_only
  5966.       array [R0S M3N L2N R6N 0 0 R1N L5N]
  5967.                alternate_definition [cross] c3a
  5968.    setup qtag 2x4 restriction wave_only
  5969.       array [M3N R0S R2S L6S 0 0 L1S R5S]
  5970.  
  5971. call "_rally" dontshow tag rally
  5972.             fudge_to_q_tag left_means_mirror
  5973.    setup qtag 1x8
  5974.       preds "Must be in quarter tag setup."
  5975.          if q_tag_front [4S 5N 2N 7S 0 0 6N 3S]
  5976.          if q_tag_back [4S 5N 2N 7S 0 0 6N 3S]
  5977.                alternate_definition [interlocked] c3
  5978.    setup qtag 1x8
  5979.       preds "Must be in quarter line setup."
  5980.          if q_line_front [4S 5N 6N 7S 0 0 2N 3S]
  5981.          if q_line_back [4S 5N 6N 7S 0 0 2N 3S]
  5982.  
  5983. call "_little" dontshow tag little
  5984.             fudge_to_q_tag left_means_mirror
  5985.    setup qtag 2x4
  5986.       array [3S 4S 2S 2N 0 0 1S 1N]
  5987.             alternate_definition [interlocked] c3a
  5988.    setup qtag 2x4
  5989.       array [3S 4S 1S 2N 0 0 2S 1N]
  5990.  
  5991. call "_finish plenty" dontshow tag finishplenty
  5992.             dont_use_in_resolve
  5993.    setup 2x4 qtag
  5994.       array [1S 6S 2S 0S 1S 3N 7N 0S]
  5995.             alternate_definition [interlocked] c3a
  5996.    setup 2x4 qtag
  5997.       array [1S 6S 2S 0S 1S 3N 7N 0S]
  5998.  
  5999. call "plenty" c1 tag plenty
  6000.             left_means_mirror intlk_is_inherited
  6001.    seq little [inherit_left inherit_intlk]
  6002.    seq turnstar2 [allow_forced_mod]
  6003.    seq finishplenty []
  6004.  
  6005. call "@2scoot @3and little" c1
  6006.             left_means_mirror
  6007.             intlk_is_inherited
  6008.    seq rtqtagscootback [or_anycall inherit_left inherit_intlk]
  6009.    seq little [inherit_left inherit_intlk]
  6010.  
  6011. call "_centers circ" dontshow tag centers_circ
  6012.    conc circulate [] nullcall []
  6013.  
  6014. call "_little more" dontshow tag little_more
  6015.             fudge_to_q_tag left_means_mirror
  6016.             intlk_is_inherited
  6017.    seq little [inherit_left inherit_intlk]
  6018.    seq centers_circ []
  6019.  
  6020. call "@2scoot @3and little more" c2
  6021.             left_means_mirror intlk_is_inherited
  6022.    seq rtqtagscootback [or_anycall inherit_left inherit_intlk]
  6023.    seq little [inherit_left inherit_intlk]
  6024.    seq centers_circ []
  6025.  
  6026. call "scoot and plenty" c1
  6027.             left_means_mirror intlk_is_inherited
  6028.          /* *** This next line used to have "or_anycall", but we can't handle things that
  6029.             can be modified in two places.  Since "plenty" can be modified, the "scoot back" can't.
  6030.             For this reason, "plenty" is entered as a separate call. */
  6031.    seq rtqtagscootback [inherit_left inherit_intlk]
  6032.    seq plenty [inherit_left inherit_intlk]
  6033.  
  6034. call "_start good and plenty" dontshow tag start_good_and
  6035.             dont_use_in_resolve
  6036.    conc recoil [] dblcirc [conc_demand_lines conc_force_lines]
  6037.  
  6038. call "good and plenty" c3x
  6039.    seq start_good_and []
  6040.    seq turnstar2 [allow_forced_mod]
  6041.    seq finishplenty []
  6042.  
  6043. call "@i@2scoot @3and @jcross @lramble" c1
  6044.             intlk_is_inherited cross_is_inherited
  6045.    seq scootback [or_anycall inherit_intlk]
  6046.    seq ramble [inherit_intlk inherit_cross]
  6047.  
  6048. call "@i@2scoot @3and @jcross @lcounter" c2
  6049.             left_means_mirror cross_is_inherited
  6050.    seq rtqtagscootback [or_anycall inherit_left]
  6051.    seq counter [inherit_left inherit_cross]
  6052.  
  6053. call "@2scoot @3and rally" c3a
  6054.             left_means_mirror intlk_is_inherited
  6055.    seq rtqtagscootback [or_anycall inherit_left inherit_intlk]
  6056.    seq rally [inherit_left inherit_intlk]
  6057.  
  6058. call "LINES @0 THRU" c2
  6059.             dont_use_in_resolve
  6060.    conc nullcall [mandatory_anycall] circulate [conc_force_spots]
  6061.  
  6062. call "spin a wheel" c4
  6063.    seq hinge [cpls_unless_single]
  6064.    seq tripletrade []
  6065.    seq hinge [cpls_unless_single]
  6066.  
  6067. call "stack the wheel" c4a
  6068.             single_is_inherited
  6069.    seq hinge [cpls_unless_single]
  6070.    seq everyoneroll []
  6071.  
  6072. call "cross and wheel" c2
  6073.             single_is_inherited
  6074.    seq hinge [cpls_unless_single]
  6075.    seq stepnfold [cpls_unless_single]
  6076.  
  6077. call "_cross trade and wheel part 2" dontshow tag crosstradewheel2
  6078.    setup 1x8 1x8           /* very center 2 trade */
  6079.       array [M0N M1N R6S M3N M4N M5N L2S M7N]
  6080.             alternate_definition [single] c2
  6081.    setup 1x4 1x4           /* center 2 trade */
  6082.       array [M0N R3S M2N L1S]
  6083.             alternate_definition [grand] c2
  6084.    setup 1x8 1x8           /* center 6 trade */
  6085.       array [M0N R3S R6S L1S M4N L7S L2S R5S]
  6086.             alternate_definition [grand single] c2
  6087.    setup 1x8 1x8           /* center 6 trade */
  6088.       array [M0N R3S R6S L1S M4N L7S L2S R5S]
  6089.  
  6090. call "_cross trade and wheel part 3" dontshow tag crosstradewheel3
  6091.    setup 1x4 2x2
  6092.       array [R0S M0N L1S M1N]
  6093.             alternate_definition [single] c2
  6094.    setup 1x4 2x2           /* same */
  6095.       array [R0S M0N L1S M1N]
  6096.             alternate_definition [grand] c2
  6097.    setup 1x4 2x2           /* same */
  6098.       array [R0S M0N L1S M1N]
  6099.             alternate_definition [grand single] c2
  6100.    setup 1x8 2x4           /* 6 step; 2 fold */
  6101.       array [R0S M0N M1N M1N L3S M3N M2N M2N]
  6102.  
  6103. call "cross trade and wheel" c2
  6104.             grand_is_inherited single_is_inherited
  6105.    seq hinge [cpls_unless_single]
  6106.    seq crosstradewheel2 [inherit_grand inherit_single]
  6107.    seq crosstradewheel3 [cpls_unless_single inherit_grand inherit_single]
  6108.  
  6109. call "hinge and trade" c4
  6110.             single_is_inherited
  6111.    seq hinge [cpls_unless_single]
  6112.    seq slip [cpls_unless_single roll_transparent]
  6113.    seq roll [cpls_unless_single]
  6114.  
  6115. call "_hinge & circ L 2" dontshow tag hcl2
  6116.    setup 1x4 dmd rotate
  6117.       array [L0W L1N L0E L3N]
  6118.  
  6119. call "_hinge & circ R 2" dontshow tag hcr2
  6120.    setup 1x4 dmd rotate
  6121.       array [R0E R1S R0W R3S]
  6122.  
  6123. call "hinge and circulate left" c4
  6124.             single_is_inherited
  6125.    seq hinge [cpls_unless_single]
  6126.    seq hcl2 [cpls_unless_single]
  6127.  
  6128. call "hinge and circulate right" c4
  6129.             single_is_inherited
  6130.    seq hinge [cpls_unless_single]
  6131.    seq hcr2 [cpls_unless_single]
  6132.  
  6133. call "@1motivate" a2
  6134.             12_matrix_is_inherited first_part_visible
  6135.    seq circulate [inherit_12_matrix or_anycall]
  6136.    seq motivate2 [inherit_12_matrix]
  6137.    seq turnstar2_endstrade [inherit_12_matrix]
  6138.    seq finishnomod [inherit_12_matrix]   /* Can't allow the cast off 3/4 to be replaced, because there are two of them. */
  6139.  
  6140. call "_finish stimulate" dontshow tag finstim
  6141.             dont_use_in_resolve
  6142.    setup 4x2 2x4 rotate restriction forbidden wave_only
  6143.    array [6E 1E 3E 4E 7E 0E 2E 5E]
  6144.  
  6145. call "@1stimulate" c4a
  6146.             first_part_visible
  6147.    seq colcirc [or_anycall]
  6148.    seq finstim []
  6149.  
  6150. call "_finish coordinate" dontshow tag fincoord
  6151.             dont_use_in_resolve
  6152.    setup 4x2 2x4 rotate
  6153.    array [5E 4E 2E 3E 0E 1E 7E 6E]
  6154.  
  6155. call "@1coordinate" plus
  6156.             first_part_visible
  6157.    seq colcirc [or_anycall]
  6158.    seq fincoord []
  6159.  
  6160. call "_cooperate 2" dontshow tag coop2
  6161.             dont_use_in_resolve
  6162.    conc6_2 invert_2_3 [allow_forced_mod] nullcall []
  6163.  
  6164. call "_cooperate 3" dontshow tag coop3
  6165.             dont_use_in_resolve
  6166.    conc dropin [allow_forced_mod] nullcall []
  6167.  
  6168. call "@1cooperate" c4
  6169.             first_part_visible
  6170.    seq colcirc [or_anycall]
  6171.    seq half_circ []
  6172.    seq coop2 []
  6173.    seq coop3 []
  6174.  
  6175. call "_set your pace 2" dontshow tag pace2
  6176.             dont_use_in_resolve
  6177.    conc6_2 grandflwthru [] nullcall []
  6178.  
  6179. call "_set your pace 3" dontshow tag pace3
  6180.             dont_use_in_resolve
  6181.    conc cyclewheel [] cyclewheel []
  6182.  
  6183. call "@2set @3your pace" c4
  6184.    seq colcirc [or_anycall]
  6185.    seq half_circ []
  6186.    seq pace2 []
  6187.    seq pace3 []
  6188.  
  6189. call "_finish percolate" dontshow tag finpercolate
  6190.             dont_use_in_resolve
  6191.    setup 2x4 2x4 rotate restriction wave_only
  6192.    array [7S 7S 0N 0N 5S 1N 6S 2N]
  6193.  
  6194. call "@1percolate" c1
  6195.             first_part_visible
  6196.    seq circulate [or_anycall]
  6197.    seq finpercolate []
  6198.  
  6199. call "_finish perk up" dontshow tag finperk
  6200.             dont_use_in_resolve
  6201.    setup 2x4 2x4 rotate
  6202.    array [3S 3N 4S 4N 5N 1N 6S 2S]
  6203.  
  6204. call "@1perk up" c2
  6205.             first_part_visible
  6206.    seq circulate [or_anycall]
  6207.    seq finperk []
  6208.  
  6209. call "_finish cover up" dontshow tag fincover
  6210.             dont_use_in_resolve
  6211.    conc recycle [] explode [suppress_elongation_warnings]
  6212.  
  6213. call "@1cover up" c3x
  6214.             first_part_visible
  6215.    seq circulate [or_anycall]
  6216.    seq half_circ []
  6217.    seq fincover []
  6218.  
  6219. call "_choice" dontshow tag choice
  6220.             dont_use_in_resolve
  6221.    conc lock_the_hinge [allow_forced_mod] tradestpnfld [allow_forced_mod suppress_elongation_warnings]
  6222.  
  6223. call "@2lock@3er's choice" c3a
  6224.             cross_is_inherited
  6225.    seq lockit [inherit_cross or_anycall]
  6226.    seq choice []
  6227.  
  6228. call "cy-kick" c4a
  6229.       /* ***** make sure we do a "fudge to 3/4 tag" */
  6230.             cross_is_inherited
  6231.    conc 23recycle [inherit_cross] beaukick []
  6232.  
  6233. call "divvy up" c3x
  6234.       /* ***** make sure we do a "fudge to 3/4 tag" */
  6235.    conc single_wheel [] div_move_along [conc_demand_columns conc_force_lines]
  6236.  
  6237. call "6X2 acey deucey" a1
  6238.             fudge_to_q_tag
  6239.             magic_is_inherited funny_is_inherited
  6240.    conc2_6 trade [or_anycall] circulate [inherit_magic inherit_funny]
  6241.  
  6242. call "3X2 acey deucey" c1
  6243.             fudge_to_q_tag
  6244.             funny_is_inherited
  6245.    conc2_6 trade [] trngle_circ [or_anycall inherit_funny]
  6246.  
  6247. call "kick the habit" c4a
  6248.    conc leadkick [] ctr_rot [conc_force_otherway allow_forced_mod]
  6249.  
  6250. call "_shuttle part 2" dontshow tag shuttle2
  6251.             left_means_mirror
  6252.    /* **** Should change the way "singleconc" conc works so that, if the
  6253.       setup is a 2x4, it does a normal concentric.  That way, things
  6254.       like "shuttle rally" will be legal, with the outsides doing a
  6255.       four-person call instead of two-person.  Of course, Clark won't
  6256.       like it. */
  6257.    singleconc slidethru [] quarter_right [or_anycall inherit_left]
  6258.  
  6259. /* **** Really need a way to handle more general directions, for in/out.
  6260.    Perhaps the simplest way is something along the lines of changing the
  6261.    "quarter right" call to "quarter in" or whatever, with the print routine
  6262.    having some mechanism, somewhat along the lines of what it does now for
  6263.    star turns and tagging calls, to make the printed representation look
  6264.    nice.  That is, it would change "shuttle [quarter in]" to "shuttle in".
  6265.    This applies to calls like "tag and spin", "windmill", and "tunnel" also.
  6266.    **** But see comment below on "tag and spin". */
  6267.  
  6268. call "@gshuttle @eright@f" c3x
  6269.             left_means_mirror
  6270.    seq passthru []
  6271.    seq shuttle2 [inherit_left]
  6272.  
  6273. call "_tag and spin part 2" dontshow tag tagnspin2
  6274.             left_means_mirror
  6275.    singleconc armturn_34 [] quarter_right [or_anycall inherit_left]
  6276.  
  6277. call "@g@2tag @3and spin @eright@f" c4
  6278.             left_means_mirror first_part_visible
  6279.    /* **** We do not pass "left" to the tag, so we can't say "left vertical tag
  6280.       and spin right".  Sigh....  Maybe it really is hard, and we can't just
  6281.       get a free ride on the "left" mechanism. */
  6282.    seq halftag [or_anycall must_be_tag_call]
  6283.    seq extend []
  6284.    seq tagnspin2 [inherit_left]
  6285.  
  6286. call "turnstyle" c3
  6287.             left_means_mirror
  6288.    singleconc touch_3_4 [inherit_left] quarter_right [inherit_left conc_force_spots]
  6289.  
  6290. call "relocate the setup" c2
  6291.             fudge_to_q_tag
  6292.             funny_is_inherited
  6293.    conc fanthetop [] ctr_rot [inherit_funny]
  6294.  
  6295. call "_tally ho part 2" dontshow tag tally_ho_part_2
  6296.             dont_use_in_resolve
  6297.    conc hinge_and_half_circ [] trade []
  6298.  
  6299. call "tally ho" c1
  6300.    seq half_circ []
  6301.    seq tally_ho_part_2 []
  6302.    seq finishwithmod []
  6303.  
  6304. call "_start touchngo" dontshow tag starttouchngo
  6305.             dont_use_in_resolve
  6306.    setup 4x2 qtag restriction wave_only
  6307.       array [R6E R3E R4S M5S M0S L1S L3W L6W]
  6308.  
  6309. call "touch and go 1/4 X @b" c4
  6310.             neednumber
  6311.    seq starttouchngo []
  6312.    seq sglctrhinge [repeat_n roll_transparent]
  6313.  
  6314. call "_start action" dontshow tag startaction
  6315.             dont_use_in_resolve
  6316.    setup 4x2 normal_concentric rotate
  6317.             concendsetup dmd 1x4 0
  6318.       preds "Can't tell how to cast off 3/4."
  6319.          if columns_couple   [4W 1N 0 7W 6E 0 0W 5E]
  6320.          if columns_miniwave [4W 0  0 7W 7E 0 0  4E]
  6321.  
  6322. call "the action" c4
  6323.    seq startaction []
  6324.    seq finishwithmod []
  6325.  
  6326. call "_start breaker" dontshow tag startbreaker
  6327.             dont_use_in_resolve
  6328.    setup 4x2 normal_concentric rotate
  6329.             concendsetup dmd 1x4 0
  6330.       preds "Can't tell how to cast off 3/4."
  6331.          if columns_couple   [4W 0  0  7W 6E 0  0  5E]
  6332.          if columns_miniwave [4W 1N 2E 7W 7E 0E 1S 4E]
  6333.  
  6334. call "breaker @23@3" c3a
  6335.    seq startbreaker []
  6336.    seq finishwithmod []
  6337.  
  6338. call "_start linear action" dontshow tag startlinact
  6339.             dont_use_in_resolve
  6340.    setup qtag normal_concentric
  6341.             concendsetup dmd 1x4 1
  6342.       preds "Can't tell how to cast off 3/4."
  6343.          /* **** We are abusing these predicates.  Used from a qtag, they test coupleness. */
  6344.          if lines_couple   [5S 4N 0N 3W 7N 6S 2S 1E]
  6345.          if lines_miniwave [5S 5N 0S 3W 6N 6S 2S 3E]
  6346.  
  6347. call "linear action" c1
  6348.    seq startlinact []
  6349.    seq finishwithmod []
  6350.  
  6351. /* This one allows syntactically easy modify, for "tally ho but flip back" and "breaker flip back". */
  6352.  
  6353. call "_finish it with modify" dontshow tag finishwithmod
  6354.             dont_use_in_resolve 12_matrix_is_inherited
  6355.    conc_diamond_line cast_off_34 [or_anycall] spec_drop_in [inherit_12_matrix suppress_elongation_warnings]
  6356.  
  6357. /* This one allows difficult modify, for "chain reaction, replace cast off 3/4 with flip back". */
  6358.  
  6359. call "_finish it" dontshow tag finish
  6360.             dont_use_in_resolve 12_matrix_is_inherited
  6361.    conc_diamond_line cast_off_34 [allow_forced_mod] spec_drop_in [inherit_12_matrix suppress_elongation_warnings]
  6362.  
  6363. /* This one forbids modify, for relay the top and motivate.  There are two instances of cast off 3/4 in those calls. */
  6364.  
  6365. call "_finish it, no modify" dontshow tag finishnomod
  6366.             dont_use_in_resolve 12_matrix_is_inherited
  6367.    conc_diamond_line cast_off_34 [] spec_drop_in [inherit_12_matrix suppress_elongation_warnings]
  6368.  
  6369. call "good show" c3
  6370.    setup 2x4 2x4
  6371.       array [M1N L0S R3S M2N M3N R2S L1S M0N]
  6372.    setup 4x2 2x4
  6373.       array [M1N R6S R3S M4N M3N L4S L1S M6N]
  6374.             alternate_definition [magic] c3x
  6375.    setup 4x2 2x4
  6376.       array [6N 6S 4S 4N 3N 3S 1S 1N]
  6377.  
  6378. call "snag circulate" c4a
  6379.    conc half_circ [] circulate []
  6380.  
  6381. /* We are not permitted to turn on "visible_fractions" for a call that uses the
  6382.    "splitseq" schema.  Sorry, but we wouldn't know what to do on the call
  6383.    "turn on, but interrupt after half with a stimulate" from waves.  There
  6384.    are normally two ways we can find ourselves in waves after the first part
  6385.    of turn on:  if we started in a grand wave, and if we started in columns.
  6386.    The way we do the second part depends on which of these cases occurred,
  6387.    which is the whole point of the "splitseq" schema.  If we interrupted with
  6388.    a stimulate, it wouldn't be clear what kind of extend we should do.
  6389.    Of course, the really correct thing would be to say that the interruption
  6390.    must be a four person call. */
  6391. call "turn on" c4
  6392.    splitseq ctr_rot []
  6393.    seq extend []
  6394.  
  6395. call "tickle" c3x
  6396.             visible_fractions
  6397.    seq hinge []
  6398.    seq splitctrrot []
  6399.  
  6400. call "_central walk the clover" dontshow tag cwalkclv
  6401.    seq touch_1_4 []
  6402.    seq walkndodge []
  6403.  
  6404. /* **** Isn't this legal from waves -- they just step through and do it? */
  6405.  
  6406. call "walk the clover" c4
  6407.    conc cwalkclv [] clover [conc_demand_columns conc_force_columns]
  6408.  
  6409.