@cssints/apg-specs 0.0.0-stage → 0.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (260) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +65 -2
  3. package/dist/apg/accordion.bridge.d.mts +35 -0
  4. package/dist/apg/accordion.bridge.mjs +326 -0
  5. package/dist/apg/accordion.model.json +8397 -0
  6. package/dist/apg/alert.bridge.d.mts +22 -0
  7. package/dist/apg/alert.bridge.mjs +86 -0
  8. package/dist/apg/alert.model.json +871 -0
  9. package/dist/apg/alertdialog.bridge.d.mts +21 -0
  10. package/dist/apg/alertdialog.bridge.mjs +221 -0
  11. package/dist/apg/alertdialog.model.json +5232 -0
  12. package/dist/apg/breadcrumb.bridge.d.mts +26 -0
  13. package/dist/apg/breadcrumb.bridge.mjs +120 -0
  14. package/dist/apg/breadcrumb.model.json +574 -0
  15. package/dist/apg/button.bridge.d.mts +35 -0
  16. package/dist/apg/button.bridge.mjs +208 -0
  17. package/dist/apg/button.model.json +5814 -0
  18. package/dist/apg/carousel.bridge.d.mts +44 -0
  19. package/dist/apg/carousel.bridge.mjs +262 -0
  20. package/dist/apg/carousel.model.json +8963 -0
  21. package/dist/apg/checkbox-group.bridge.d.mts +25 -0
  22. package/dist/apg/checkbox-group.bridge.mjs +276 -0
  23. package/dist/apg/checkbox-group.model.json +3863 -0
  24. package/dist/apg/checkbox.bridge.d.mts +34 -0
  25. package/dist/apg/checkbox.bridge.mjs +253 -0
  26. package/dist/apg/checkbox.model.json +3158 -0
  27. package/dist/apg/combobox-autocomplete.bridge.d.mts +14 -0
  28. package/dist/apg/combobox-autocomplete.bridge.mjs +326 -0
  29. package/dist/apg/combobox-autocomplete.model.json +11586 -0
  30. package/dist/apg/combobox-dialog.bridge.d.mts +17 -0
  31. package/dist/apg/combobox-dialog.bridge.mjs +250 -0
  32. package/dist/apg/combobox-dialog.model.json +8981 -0
  33. package/dist/apg/combobox-grid.bridge.d.mts +17 -0
  34. package/dist/apg/combobox-grid.bridge.mjs +227 -0
  35. package/dist/apg/combobox-grid.model.json +8554 -0
  36. package/dist/apg/combobox-select-only.bridge.d.mts +24 -0
  37. package/dist/apg/combobox-select-only.bridge.mjs +304 -0
  38. package/dist/apg/combobox-select-only.model.json +7846 -0
  39. package/dist/apg/combobox-tree.bridge.d.mts +17 -0
  40. package/dist/apg/combobox-tree.bridge.mjs +211 -0
  41. package/dist/apg/combobox-tree.model.json +9345 -0
  42. package/dist/apg/dialog-modal.bridge.d.mts +35 -0
  43. package/dist/apg/dialog-modal.bridge.mjs +186 -0
  44. package/dist/apg/dialog-modal.model.json +7580 -0
  45. package/dist/apg/disclosure.bridge.d.mts +25 -0
  46. package/dist/apg/disclosure.bridge.mjs +202 -0
  47. package/dist/apg/disclosure.model.json +4703 -0
  48. package/dist/apg/feed.bridge.d.mts +31 -0
  49. package/dist/apg/feed.bridge.mjs +246 -0
  50. package/dist/apg/feed.model.json +4523 -0
  51. package/dist/apg/grid-selection.bridge.d.mts +13 -0
  52. package/dist/apg/grid-selection.bridge.mjs +160 -0
  53. package/dist/apg/grid-selection.model.json +6974 -0
  54. package/dist/apg/grid-sort.bridge.d.mts +12 -0
  55. package/dist/apg/grid-sort.bridge.mjs +138 -0
  56. package/dist/apg/grid-sort.model.json +3799 -0
  57. package/dist/apg/grid.bridge.d.mts +54 -0
  58. package/dist/apg/grid.bridge.mjs +441 -0
  59. package/dist/apg/grid.model.json +3802 -0
  60. package/dist/apg/link.bridge.d.mts +24 -0
  61. package/dist/apg/link.bridge.mjs +126 -0
  62. package/dist/apg/link.model.json +694 -0
  63. package/dist/apg/listbox-multi.bridge.d.mts +10 -0
  64. package/dist/apg/listbox-multi.bridge.mjs +261 -0
  65. package/dist/apg/listbox-multi.model.json +10893 -0
  66. package/dist/apg/listbox-rearrangeable.bridge.d.mts +20 -0
  67. package/dist/apg/listbox-rearrangeable.bridge.mjs +237 -0
  68. package/dist/apg/listbox-rearrangeable.model.json +17592 -0
  69. package/dist/apg/listbox-shared.d.mts +58 -0
  70. package/dist/apg/listbox-shared.mjs +171 -0
  71. package/dist/apg/listbox-single.bridge.d.mts +10 -0
  72. package/dist/apg/listbox-single.bridge.mjs +196 -0
  73. package/dist/apg/listbox-single.model.json +8024 -0
  74. package/dist/apg/listbox-typeahead.bridge.d.mts +10 -0
  75. package/dist/apg/listbox-typeahead.bridge.mjs +153 -0
  76. package/dist/apg/listbox-typeahead.model.json +5615 -0
  77. package/dist/apg/menu-button.bridge.d.mts +29 -0
  78. package/dist/apg/menu-button.bridge.mjs +259 -0
  79. package/dist/apg/menu-button.model.json +5706 -0
  80. package/dist/apg/menu-checkable.bridge.d.mts +25 -0
  81. package/dist/apg/menu-checkable.bridge.mjs +226 -0
  82. package/dist/apg/menu-checkable.model.json +4277 -0
  83. package/dist/apg/menu-menubar.bridge.d.mts +27 -0
  84. package/dist/apg/menu-menubar.bridge.mjs +273 -0
  85. package/dist/apg/menu-menubar.model.json +9540 -0
  86. package/dist/apg/meter.bridge.d.mts +28 -0
  87. package/dist/apg/meter.bridge.mjs +159 -0
  88. package/dist/apg/meter.model.json +1185 -0
  89. package/dist/apg/player.bridge.d.mts +24 -0
  90. package/dist/apg/player.bridge.mjs +342 -0
  91. package/dist/apg/player.model.json +11013 -0
  92. package/dist/apg/radio.bridge.d.mts +35 -0
  93. package/dist/apg/radio.bridge.mjs +371 -0
  94. package/dist/apg/radio.model.json +5011 -0
  95. package/dist/apg/slider-multithumb.bridge.d.mts +34 -0
  96. package/dist/apg/slider-multithumb.bridge.mjs +365 -0
  97. package/dist/apg/slider-multithumb.model.json +5774 -0
  98. package/dist/apg/slider.bridge.d.mts +54 -0
  99. package/dist/apg/slider.bridge.mjs +359 -0
  100. package/dist/apg/slider.model.json +4881 -0
  101. package/dist/apg/spinbutton.bridge.d.mts +41 -0
  102. package/dist/apg/spinbutton.bridge.mjs +327 -0
  103. package/dist/apg/spinbutton.model.json +7571 -0
  104. package/dist/apg/switch.bridge.d.mts +30 -0
  105. package/dist/apg/switch.bridge.mjs +243 -0
  106. package/dist/apg/switch.model.json +3159 -0
  107. package/dist/apg/tabs.bridge.d.mts +41 -0
  108. package/dist/apg/tabs.bridge.mjs +294 -0
  109. package/dist/apg/tabs.model.json +7659 -0
  110. package/dist/apg/timeline.bridge.d.mts +36 -0
  111. package/dist/apg/timeline.bridge.mjs +265 -0
  112. package/dist/apg/timeline.model.json +6189 -0
  113. package/dist/apg/toolbar.bridge.d.mts +25 -0
  114. package/dist/apg/toolbar.bridge.mjs +307 -0
  115. package/dist/apg/toolbar.model.json +6616 -0
  116. package/dist/apg/tooltip.bridge.d.mts +36 -0
  117. package/dist/apg/tooltip.bridge.mjs +208 -0
  118. package/dist/apg/tooltip.model.json +8295 -0
  119. package/dist/apg/treegrid.bridge.d.mts +28 -0
  120. package/dist/apg/treegrid.bridge.mjs +311 -0
  121. package/dist/apg/treegrid.model.json +17358 -0
  122. package/dist/apg/treeview.bridge.d.mts +26 -0
  123. package/dist/apg/treeview.bridge.mjs +396 -0
  124. package/dist/apg/treeview.model.json +13745 -0
  125. package/dist/apg/windowsplitter.bridge.d.mts +36 -0
  126. package/dist/apg/windowsplitter.bridge.mjs +242 -0
  127. package/dist/apg/windowsplitter.model.json +6253 -0
  128. package/dist/canvas/camera.model.json +6568 -0
  129. package/dist/canvas/canvas.bridge.d.mts +190 -0
  130. package/dist/canvas/canvas.bridge.mjs +729 -0
  131. package/dist/canvas/pointer.model.json +17095 -0
  132. package/dist/scenario.d.mts +233 -0
  133. package/dist/scenario.mjs +313 -0
  134. package/package.json +57 -4
  135. package/scenarios/apg/README.md +221 -0
  136. package/scenarios/apg/accordion.base-ui.json +1005 -0
  137. package/scenarios/apg/accordion.react-aria.json +929 -0
  138. package/scenarios/apg/alert.base-ui.json +81 -0
  139. package/scenarios/apg/alert.react-aria.json +98 -0
  140. package/scenarios/apg/alertdialog.base-ui.json +331 -0
  141. package/scenarios/apg/alertdialog.react-aria.json +225 -0
  142. package/scenarios/apg/breadcrumb.react-aria.json +312 -0
  143. package/scenarios/apg/button.ariakit.json +136 -0
  144. package/scenarios/apg/button.base-ui.json +747 -0
  145. package/scenarios/apg/button.react-aria.json +443 -0
  146. package/scenarios/apg/carousel.apg.json +909 -0
  147. package/scenarios/apg/checkbox.ariakit.json +299 -0
  148. package/scenarios/apg/checkbox.base-ui.json +1126 -0
  149. package/scenarios/apg/checkbox.react-aria.json +518 -0
  150. package/scenarios/apg/combobox.ariakit.json +945 -0
  151. package/scenarios/apg/combobox.base-ui.json +2444 -0
  152. package/scenarios/apg/combobox.react-aria.json +845 -0
  153. package/scenarios/apg/dialog-modal.ariakit.json +1102 -0
  154. package/scenarios/apg/dialog-modal.base-ui.json +775 -0
  155. package/scenarios/apg/dialog-modal.react-aria.json +638 -0
  156. package/scenarios/apg/disclosure.apg.json +349 -0
  157. package/scenarios/apg/disclosure.ariakit.json +163 -0
  158. package/scenarios/apg/disclosure.base-ui.json +451 -0
  159. package/scenarios/apg/disclosure.react-aria.json +643 -0
  160. package/scenarios/apg/feed.apg.json +442 -0
  161. package/scenarios/apg/grid.ariakit.json +197 -0
  162. package/scenarios/apg/grid.base-ui.json +720 -0
  163. package/scenarios/apg/grid.react-aria.json +969 -0
  164. package/scenarios/apg/landmarks.ariakit.json +93 -0
  165. package/scenarios/apg/landmarks.react-aria.json +330 -0
  166. package/scenarios/apg/link.ariakit.json +83 -0
  167. package/scenarios/apg/link.base-ui.json +88 -0
  168. package/scenarios/apg/link.react-aria.json +186 -0
  169. package/scenarios/apg/listbox.ariakit.json +78 -0
  170. package/scenarios/apg/listbox.base-ui.json +163 -0
  171. package/scenarios/apg/listbox.react-aria.json +1118 -0
  172. package/scenarios/apg/menu-button.ariakit.json +924 -0
  173. package/scenarios/apg/menu-button.base-ui.json +1155 -0
  174. package/scenarios/apg/menu-button.react-aria.json +1080 -0
  175. package/scenarios/apg/menubar.ariakit.json +758 -0
  176. package/scenarios/apg/menubar.base-ui.json +673 -0
  177. package/scenarios/apg/meter.base-ui.json +243 -0
  178. package/scenarios/apg/meter.react-aria.json +201 -0
  179. package/scenarios/apg/radio.ariakit.json +459 -0
  180. package/scenarios/apg/radio.base-ui.json +581 -0
  181. package/scenarios/apg/radio.react-aria.json +576 -0
  182. package/scenarios/apg/slider-multithumb.base-ui.json +316 -0
  183. package/scenarios/apg/slider-multithumb.react-aria.json +363 -0
  184. package/scenarios/apg/slider.base-ui.json +544 -0
  185. package/scenarios/apg/slider.react-aria.json +456 -0
  186. package/scenarios/apg/spinbutton.base-ui.json +1688 -0
  187. package/scenarios/apg/spinbutton.react-aria.json +426 -0
  188. package/scenarios/apg/switch.base-ui.json +456 -0
  189. package/scenarios/apg/switch.react-aria.json +303 -0
  190. package/scenarios/apg/table.ariakit.json +65 -0
  191. package/scenarios/apg/table.react-aria.json +221 -0
  192. package/scenarios/apg/tabs.ariakit.json +329 -0
  193. package/scenarios/apg/tabs.base-ui.json +875 -0
  194. package/scenarios/apg/tabs.react-aria.json +644 -0
  195. package/scenarios/apg/toolbar.ariakit.json +595 -0
  196. package/scenarios/apg/toolbar.base-ui.json +1189 -0
  197. package/scenarios/apg/toolbar.react-aria.json +383 -0
  198. package/scenarios/apg/tooltip.ariakit.json +441 -0
  199. package/scenarios/apg/tooltip.base-ui.json +411 -0
  200. package/scenarios/apg/tooltip.react-aria.json +454 -0
  201. package/scenarios/apg/treegrid.apg.json +2558 -0
  202. package/scenarios/apg/treegrid.react-aria.json +5094 -0
  203. package/scenarios/apg/treeview.apg.json +928 -0
  204. package/scenarios/apg/windowsplitter.apg.json +557 -0
  205. package/scenarios/canvas/README.md +69 -0
  206. package/scenarios/canvas/camera.contract.json +237 -0
  207. package/scenarios/canvas/camera.excalidraw.json +57 -0
  208. package/scenarios/canvas/marquee.excalidraw.json +122 -0
  209. package/scenarios/canvas/pan.excalidraw.json +46 -0
  210. package/scenarios/canvas/pointer.contract.json +528 -0
  211. package/scenarios/parts.json +291 -0
  212. package/shared/aria.qnt +186 -0
  213. package/shared/details-group.qnt +50 -0
  214. package/shared/focusgroup.qnt +152 -0
  215. package/shared/invokers.qnt +81 -0
  216. package/shared/popover.qnt +71 -0
  217. package/specs/apg/STATIC.md +103 -0
  218. package/specs/apg/accordion.qnt +578 -0
  219. package/specs/apg/alert.qnt +131 -0
  220. package/specs/apg/alertdialog.qnt +455 -0
  221. package/specs/apg/breadcrumb.qnt +88 -0
  222. package/specs/apg/button.qnt +445 -0
  223. package/specs/apg/carousel.qnt +732 -0
  224. package/specs/apg/checkbox-group.qnt +388 -0
  225. package/specs/apg/checkbox.qnt +394 -0
  226. package/specs/apg/combobox-autocomplete.qnt +764 -0
  227. package/specs/apg/combobox-dialog.qnt +627 -0
  228. package/specs/apg/combobox-grid.qnt +632 -0
  229. package/specs/apg/combobox-select-only.qnt +626 -0
  230. package/specs/apg/combobox-tree.qnt +633 -0
  231. package/specs/apg/dialog-modal.qnt +499 -0
  232. package/specs/apg/disclosure.qnt +309 -0
  233. package/specs/apg/feed.qnt +485 -0
  234. package/specs/apg/grid-selection.qnt +512 -0
  235. package/specs/apg/grid-sort.qnt +330 -0
  236. package/specs/apg/grid.qnt +360 -0
  237. package/specs/apg/link.qnt +119 -0
  238. package/specs/apg/listbox-multi.qnt +799 -0
  239. package/specs/apg/listbox-rearrangeable.qnt +801 -0
  240. package/specs/apg/listbox-single.qnt +511 -0
  241. package/specs/apg/listbox-typeahead.qnt +396 -0
  242. package/specs/apg/menu-button.qnt +363 -0
  243. package/specs/apg/menu-checkable.qnt +304 -0
  244. package/specs/apg/menu-menubar.qnt +531 -0
  245. package/specs/apg/meter.qnt +129 -0
  246. package/specs/apg/player.qnt +1081 -0
  247. package/specs/apg/radio.qnt +394 -0
  248. package/specs/apg/slider-multithumb.qnt +441 -0
  249. package/specs/apg/slider.qnt +396 -0
  250. package/specs/apg/spinbutton.qnt +494 -0
  251. package/specs/apg/switch.qnt +389 -0
  252. package/specs/apg/tabs.qnt +412 -0
  253. package/specs/apg/timeline.qnt +612 -0
  254. package/specs/apg/toolbar.qnt +364 -0
  255. package/specs/apg/tooltip.qnt +553 -0
  256. package/specs/apg/treegrid.qnt +983 -0
  257. package/specs/apg/treeview.qnt +1004 -0
  258. package/specs/apg/windowsplitter.qnt +487 -0
  259. package/specs/canvas/camera.qnt +407 -0
  260. package/specs/canvas/pointer.qnt +841 -0
@@ -0,0 +1,3159 @@
1
+ {
2
+ "generatedFrom": "../../specs/apg/switch.qnt",
3
+ "specHash": "af9d14eb36f426f67ac3c3ea0cf6c462ff2b1eb210cc601a0c0d2a8298cd5060",
4
+ "module": "apg_switch",
5
+ "vars": [
6
+ {
7
+ "name": "focused",
8
+ "type": "bool"
9
+ },
10
+ {
11
+ "name": "disabled",
12
+ "type": "bool"
13
+ },
14
+ {
15
+ "name": "checked",
16
+ "type": "str"
17
+ },
18
+ {
19
+ "name": "enterToggles",
20
+ "type": "bool"
21
+ },
22
+ {
23
+ "name": "spaceArmed",
24
+ "type": "bool"
25
+ },
26
+ {
27
+ "name": "pointerArmed",
28
+ "type": "bool"
29
+ },
30
+ {
31
+ "name": "requests",
32
+ "type": "int"
33
+ },
34
+ {
35
+ "name": "controlled",
36
+ "type": "bool"
37
+ },
38
+ {
39
+ "name": "accepting",
40
+ "type": "bool"
41
+ },
42
+ {
43
+ "name": "valueProp",
44
+ "type": "str"
45
+ },
46
+ {
47
+ "name": "requested",
48
+ "type": "str"
49
+ },
50
+ {
51
+ "name": "outcome",
52
+ "type": "str"
53
+ },
54
+ {
55
+ "name": "base",
56
+ "type": "str"
57
+ }
58
+ ],
59
+ "defs": {
60
+ "flip": {
61
+ "kind": "function",
62
+ "params": [
63
+ "checked"
64
+ ],
65
+ "body": {
66
+ "kind": "app",
67
+ "opcode": "ite",
68
+ "args": [
69
+ {
70
+ "kind": "app",
71
+ "opcode": "eq",
72
+ "args": [
73
+ {
74
+ "kind": "name",
75
+ "name": "checked"
76
+ },
77
+ {
78
+ "kind": "str",
79
+ "value": "true"
80
+ }
81
+ ]
82
+ },
83
+ {
84
+ "kind": "str",
85
+ "value": "false"
86
+ },
87
+ {
88
+ "kind": "str",
89
+ "value": "true"
90
+ }
91
+ ]
92
+ }
93
+ },
94
+ "enterFires": {
95
+ "kind": "function",
96
+ "params": [
97
+ "focused",
98
+ "disabled",
99
+ "enterToggles",
100
+ "key"
101
+ ],
102
+ "body": {
103
+ "kind": "app",
104
+ "opcode": "and",
105
+ "args": [
106
+ {
107
+ "kind": "name",
108
+ "name": "focused"
109
+ },
110
+ {
111
+ "kind": "app",
112
+ "opcode": "not",
113
+ "args": [
114
+ {
115
+ "kind": "name",
116
+ "name": "disabled"
117
+ }
118
+ ]
119
+ },
120
+ {
121
+ "kind": "name",
122
+ "name": "enterToggles"
123
+ },
124
+ {
125
+ "kind": "app",
126
+ "opcode": "eq",
127
+ "args": [
128
+ {
129
+ "kind": "name",
130
+ "name": "key"
131
+ },
132
+ {
133
+ "kind": "str",
134
+ "value": "Enter"
135
+ }
136
+ ]
137
+ }
138
+ ]
139
+ }
140
+ },
141
+ "spaceArms": {
142
+ "kind": "function",
143
+ "params": [
144
+ "focused",
145
+ "disabled",
146
+ "key"
147
+ ],
148
+ "body": {
149
+ "kind": "app",
150
+ "opcode": "and",
151
+ "args": [
152
+ {
153
+ "kind": "name",
154
+ "name": "focused"
155
+ },
156
+ {
157
+ "kind": "app",
158
+ "opcode": "not",
159
+ "args": [
160
+ {
161
+ "kind": "name",
162
+ "name": "disabled"
163
+ }
164
+ ]
165
+ },
166
+ {
167
+ "kind": "app",
168
+ "opcode": "eq",
169
+ "args": [
170
+ {
171
+ "kind": "name",
172
+ "name": "key"
173
+ },
174
+ {
175
+ "kind": "str",
176
+ "value": "Space"
177
+ }
178
+ ]
179
+ }
180
+ ]
181
+ }
182
+ },
183
+ "spaceReleaseFires": {
184
+ "kind": "function",
185
+ "params": [
186
+ "armed",
187
+ "disabled",
188
+ "key"
189
+ ],
190
+ "body": {
191
+ "kind": "app",
192
+ "opcode": "and",
193
+ "args": [
194
+ {
195
+ "kind": "name",
196
+ "name": "armed"
197
+ },
198
+ {
199
+ "kind": "app",
200
+ "opcode": "not",
201
+ "args": [
202
+ {
203
+ "kind": "name",
204
+ "name": "disabled"
205
+ }
206
+ ]
207
+ },
208
+ {
209
+ "kind": "app",
210
+ "opcode": "eq",
211
+ "args": [
212
+ {
213
+ "kind": "name",
214
+ "name": "key"
215
+ },
216
+ {
217
+ "kind": "str",
218
+ "value": "Space"
219
+ }
220
+ ]
221
+ }
222
+ ]
223
+ }
224
+ },
225
+ "pointerReleaseFires": {
226
+ "kind": "function",
227
+ "params": [
228
+ "armed",
229
+ "disabled"
230
+ ],
231
+ "body": {
232
+ "kind": "app",
233
+ "opcode": "and",
234
+ "args": [
235
+ {
236
+ "kind": "name",
237
+ "name": "armed"
238
+ },
239
+ {
240
+ "kind": "app",
241
+ "opcode": "not",
242
+ "args": [
243
+ {
244
+ "kind": "name",
245
+ "name": "disabled"
246
+ }
247
+ ]
248
+ }
249
+ ]
250
+ }
251
+ },
252
+ "ariaChecked": {
253
+ "kind": "function",
254
+ "params": [
255
+ "checked"
256
+ ],
257
+ "body": {
258
+ "kind": "app",
259
+ "opcode": "ite",
260
+ "args": [
261
+ {
262
+ "kind": "app",
263
+ "opcode": "eq",
264
+ "args": [
265
+ {
266
+ "kind": "name",
267
+ "name": "checked"
268
+ },
269
+ {
270
+ "kind": "str",
271
+ "value": "true"
272
+ }
273
+ ]
274
+ },
275
+ {
276
+ "kind": "str",
277
+ "value": "true"
278
+ },
279
+ {
280
+ "kind": "str",
281
+ "value": "false"
282
+ }
283
+ ]
284
+ }
285
+ },
286
+ "holds": {
287
+ "kind": "function",
288
+ "params": [],
289
+ "body": {
290
+ "kind": "app",
291
+ "opcode": "and",
292
+ "args": [
293
+ {
294
+ "kind": "name",
295
+ "name": "controlled"
296
+ },
297
+ {
298
+ "kind": "app",
299
+ "opcode": "not",
300
+ "args": [
301
+ {
302
+ "kind": "name",
303
+ "name": "accepting"
304
+ }
305
+ ]
306
+ }
307
+ ]
308
+ }
309
+ },
310
+ "follows": {
311
+ "kind": "function",
312
+ "params": [],
313
+ "body": {
314
+ "kind": "app",
315
+ "opcode": "and",
316
+ "args": [
317
+ {
318
+ "kind": "name",
319
+ "name": "controlled"
320
+ },
321
+ {
322
+ "kind": "name",
323
+ "name": "accepting"
324
+ }
325
+ ]
326
+ }
327
+ },
328
+ "verdict": {
329
+ "kind": "function",
330
+ "params": [],
331
+ "body": {
332
+ "kind": "app",
333
+ "opcode": "ite",
334
+ "args": [
335
+ {
336
+ "kind": "name",
337
+ "name": "holds"
338
+ },
339
+ {
340
+ "kind": "str",
341
+ "value": "rejected"
342
+ },
343
+ {
344
+ "kind": "str",
345
+ "value": "accepted"
346
+ }
347
+ ]
348
+ }
349
+ },
350
+ "landed": {
351
+ "kind": "function",
352
+ "params": [
353
+ "h",
354
+ "c",
355
+ "want"
356
+ ],
357
+ "body": {
358
+ "kind": "app",
359
+ "opcode": "ite",
360
+ "args": [
361
+ {
362
+ "kind": "name",
363
+ "name": "h"
364
+ },
365
+ {
366
+ "kind": "name",
367
+ "name": "c"
368
+ },
369
+ {
370
+ "kind": "name",
371
+ "name": "want"
372
+ }
373
+ ]
374
+ }
375
+ },
376
+ "propAfter": {
377
+ "kind": "function",
378
+ "params": [
379
+ "f",
380
+ "p",
381
+ "want"
382
+ ],
383
+ "body": {
384
+ "kind": "app",
385
+ "opcode": "ite",
386
+ "args": [
387
+ {
388
+ "kind": "name",
389
+ "name": "f"
390
+ },
391
+ {
392
+ "kind": "name",
393
+ "name": "want"
394
+ },
395
+ {
396
+ "kind": "name",
397
+ "name": "p"
398
+ }
399
+ ]
400
+ }
401
+ },
402
+ "CheckedIsBinary": {
403
+ "kind": "invariant",
404
+ "params": [],
405
+ "body": {
406
+ "kind": "app",
407
+ "opcode": "or",
408
+ "args": [
409
+ {
410
+ "kind": "app",
411
+ "opcode": "eq",
412
+ "args": [
413
+ {
414
+ "kind": "name",
415
+ "name": "checked"
416
+ },
417
+ {
418
+ "kind": "str",
419
+ "value": "true"
420
+ }
421
+ ]
422
+ },
423
+ {
424
+ "kind": "app",
425
+ "opcode": "eq",
426
+ "args": [
427
+ {
428
+ "kind": "name",
429
+ "name": "checked"
430
+ },
431
+ {
432
+ "kind": "str",
433
+ "value": "false"
434
+ }
435
+ ]
436
+ }
437
+ ]
438
+ }
439
+ },
440
+ "AriaCheckedContract": {
441
+ "kind": "invariant",
442
+ "params": [],
443
+ "body": {
444
+ "kind": "app",
445
+ "opcode": "and",
446
+ "args": [
447
+ {
448
+ "kind": "app",
449
+ "opcode": "or",
450
+ "args": [
451
+ {
452
+ "kind": "app",
453
+ "opcode": "eq",
454
+ "args": [
455
+ {
456
+ "kind": "app",
457
+ "opcode": "ariaChecked",
458
+ "args": [
459
+ {
460
+ "kind": "name",
461
+ "name": "checked"
462
+ }
463
+ ]
464
+ },
465
+ {
466
+ "kind": "str",
467
+ "value": "true"
468
+ }
469
+ ]
470
+ },
471
+ {
472
+ "kind": "app",
473
+ "opcode": "eq",
474
+ "args": [
475
+ {
476
+ "kind": "app",
477
+ "opcode": "ariaChecked",
478
+ "args": [
479
+ {
480
+ "kind": "name",
481
+ "name": "checked"
482
+ }
483
+ ]
484
+ },
485
+ {
486
+ "kind": "str",
487
+ "value": "false"
488
+ }
489
+ ]
490
+ }
491
+ ]
492
+ },
493
+ {
494
+ "kind": "app",
495
+ "opcode": "eq",
496
+ "args": [
497
+ {
498
+ "kind": "app",
499
+ "opcode": "eq",
500
+ "args": [
501
+ {
502
+ "kind": "app",
503
+ "opcode": "ariaChecked",
504
+ "args": [
505
+ {
506
+ "kind": "name",
507
+ "name": "checked"
508
+ }
509
+ ]
510
+ },
511
+ {
512
+ "kind": "str",
513
+ "value": "true"
514
+ }
515
+ ]
516
+ },
517
+ {
518
+ "kind": "app",
519
+ "opcode": "eq",
520
+ "args": [
521
+ {
522
+ "kind": "name",
523
+ "name": "checked"
524
+ },
525
+ {
526
+ "kind": "str",
527
+ "value": "true"
528
+ }
529
+ ]
530
+ }
531
+ ]
532
+ }
533
+ ]
534
+ }
535
+ },
536
+ "SpaceArmedImpliesFocusedEnabled": {
537
+ "kind": "invariant",
538
+ "params": [],
539
+ "body": {
540
+ "kind": "app",
541
+ "opcode": "or",
542
+ "args": [
543
+ {
544
+ "kind": "app",
545
+ "opcode": "not",
546
+ "args": [
547
+ {
548
+ "kind": "name",
549
+ "name": "spaceArmed"
550
+ }
551
+ ]
552
+ },
553
+ {
554
+ "kind": "app",
555
+ "opcode": "and",
556
+ "args": [
557
+ {
558
+ "kind": "name",
559
+ "name": "focused"
560
+ },
561
+ {
562
+ "kind": "app",
563
+ "opcode": "not",
564
+ "args": [
565
+ {
566
+ "kind": "name",
567
+ "name": "disabled"
568
+ }
569
+ ]
570
+ }
571
+ ]
572
+ }
573
+ ]
574
+ }
575
+ },
576
+ "PointerArmedImpliesEnabled": {
577
+ "kind": "invariant",
578
+ "params": [],
579
+ "body": {
580
+ "kind": "app",
581
+ "opcode": "or",
582
+ "args": [
583
+ {
584
+ "kind": "app",
585
+ "opcode": "not",
586
+ "args": [
587
+ {
588
+ "kind": "name",
589
+ "name": "pointerArmed"
590
+ }
591
+ ]
592
+ },
593
+ {
594
+ "kind": "app",
595
+ "opcode": "not",
596
+ "args": [
597
+ {
598
+ "kind": "name",
599
+ "name": "disabled"
600
+ }
601
+ ]
602
+ }
603
+ ]
604
+ }
605
+ },
606
+ "ControlledFollowsProp": {
607
+ "kind": "invariant",
608
+ "params": [],
609
+ "body": {
610
+ "kind": "app",
611
+ "opcode": "or",
612
+ "args": [
613
+ {
614
+ "kind": "app",
615
+ "opcode": "not",
616
+ "args": [
617
+ {
618
+ "kind": "name",
619
+ "name": "controlled"
620
+ }
621
+ ]
622
+ },
623
+ {
624
+ "kind": "app",
625
+ "opcode": "eq",
626
+ "args": [
627
+ {
628
+ "kind": "name",
629
+ "name": "checked"
630
+ },
631
+ {
632
+ "kind": "name",
633
+ "name": "valueProp"
634
+ }
635
+ ]
636
+ }
637
+ ]
638
+ }
639
+ },
640
+ "RejectedRequestUntouched": {
641
+ "kind": "invariant",
642
+ "params": [],
643
+ "body": {
644
+ "kind": "app",
645
+ "opcode": "or",
646
+ "args": [
647
+ {
648
+ "kind": "app",
649
+ "opcode": "not",
650
+ "args": [
651
+ {
652
+ "kind": "app",
653
+ "opcode": "eq",
654
+ "args": [
655
+ {
656
+ "kind": "name",
657
+ "name": "outcome"
658
+ },
659
+ {
660
+ "kind": "str",
661
+ "value": "rejected"
662
+ }
663
+ ]
664
+ }
665
+ ]
666
+ },
667
+ {
668
+ "kind": "app",
669
+ "opcode": "eq",
670
+ "args": [
671
+ {
672
+ "kind": "name",
673
+ "name": "checked"
674
+ },
675
+ {
676
+ "kind": "name",
677
+ "name": "base"
678
+ }
679
+ ]
680
+ }
681
+ ]
682
+ }
683
+ },
684
+ "AcceptedRequestCommits": {
685
+ "kind": "invariant",
686
+ "params": [],
687
+ "body": {
688
+ "kind": "app",
689
+ "opcode": "or",
690
+ "args": [
691
+ {
692
+ "kind": "app",
693
+ "opcode": "not",
694
+ "args": [
695
+ {
696
+ "kind": "app",
697
+ "opcode": "eq",
698
+ "args": [
699
+ {
700
+ "kind": "name",
701
+ "name": "outcome"
702
+ },
703
+ {
704
+ "kind": "str",
705
+ "value": "accepted"
706
+ }
707
+ ]
708
+ }
709
+ ]
710
+ },
711
+ {
712
+ "kind": "app",
713
+ "opcode": "eq",
714
+ "args": [
715
+ {
716
+ "kind": "name",
717
+ "name": "checked"
718
+ },
719
+ {
720
+ "kind": "name",
721
+ "name": "requested"
722
+ }
723
+ ]
724
+ }
725
+ ]
726
+ }
727
+ }
728
+ },
729
+ "actions": [
730
+ {
731
+ "name": "init",
732
+ "assignments": [
733
+ {
734
+ "field": "focused",
735
+ "rhs": {
736
+ "kind": "bool",
737
+ "value": false
738
+ }
739
+ },
740
+ {
741
+ "field": "disabled",
742
+ "rhs": {
743
+ "kind": "bool",
744
+ "value": false
745
+ }
746
+ },
747
+ {
748
+ "field": "checked",
749
+ "rhs": {
750
+ "kind": "str",
751
+ "value": "false"
752
+ }
753
+ },
754
+ {
755
+ "field": "enterToggles",
756
+ "rhs": {
757
+ "kind": "bool",
758
+ "value": false
759
+ }
760
+ },
761
+ {
762
+ "field": "spaceArmed",
763
+ "rhs": {
764
+ "kind": "bool",
765
+ "value": false
766
+ }
767
+ },
768
+ {
769
+ "field": "pointerArmed",
770
+ "rhs": {
771
+ "kind": "bool",
772
+ "value": false
773
+ }
774
+ },
775
+ {
776
+ "field": "requests",
777
+ "rhs": {
778
+ "kind": "int",
779
+ "value": "0"
780
+ }
781
+ },
782
+ {
783
+ "field": "controlled",
784
+ "rhs": {
785
+ "kind": "bool",
786
+ "value": false
787
+ }
788
+ },
789
+ {
790
+ "field": "accepting",
791
+ "rhs": {
792
+ "kind": "bool",
793
+ "value": false
794
+ }
795
+ },
796
+ {
797
+ "field": "valueProp",
798
+ "rhs": {
799
+ "kind": "str",
800
+ "value": "false"
801
+ }
802
+ },
803
+ {
804
+ "field": "requested",
805
+ "rhs": {
806
+ "kind": "str",
807
+ "value": "false"
808
+ }
809
+ },
810
+ {
811
+ "field": "outcome",
812
+ "rhs": {
813
+ "kind": "str",
814
+ "value": "none"
815
+ }
816
+ },
817
+ {
818
+ "field": "base",
819
+ "rhs": {
820
+ "kind": "str",
821
+ "value": "false"
822
+ }
823
+ }
824
+ ]
825
+ },
826
+ {
827
+ "name": "focus",
828
+ "assignments": [
829
+ {
830
+ "field": "focused",
831
+ "rhs": {
832
+ "kind": "bool",
833
+ "value": true
834
+ }
835
+ },
836
+ {
837
+ "field": "disabled",
838
+ "rhs": {
839
+ "kind": "name",
840
+ "name": "disabled"
841
+ }
842
+ },
843
+ {
844
+ "field": "checked",
845
+ "rhs": {
846
+ "kind": "name",
847
+ "name": "checked"
848
+ }
849
+ },
850
+ {
851
+ "field": "enterToggles",
852
+ "rhs": {
853
+ "kind": "name",
854
+ "name": "enterToggles"
855
+ }
856
+ },
857
+ {
858
+ "field": "spaceArmed",
859
+ "rhs": {
860
+ "kind": "name",
861
+ "name": "spaceArmed"
862
+ }
863
+ },
864
+ {
865
+ "field": "pointerArmed",
866
+ "rhs": {
867
+ "kind": "name",
868
+ "name": "pointerArmed"
869
+ }
870
+ },
871
+ {
872
+ "field": "requests",
873
+ "rhs": {
874
+ "kind": "name",
875
+ "name": "requests"
876
+ }
877
+ },
878
+ {
879
+ "field": "controlled",
880
+ "rhs": {
881
+ "kind": "name",
882
+ "name": "controlled"
883
+ }
884
+ },
885
+ {
886
+ "field": "accepting",
887
+ "rhs": {
888
+ "kind": "name",
889
+ "name": "accepting"
890
+ }
891
+ },
892
+ {
893
+ "field": "valueProp",
894
+ "rhs": {
895
+ "kind": "name",
896
+ "name": "valueProp"
897
+ }
898
+ },
899
+ {
900
+ "field": "requested",
901
+ "rhs": {
902
+ "kind": "name",
903
+ "name": "requested"
904
+ }
905
+ },
906
+ {
907
+ "field": "outcome",
908
+ "rhs": {
909
+ "kind": "name",
910
+ "name": "outcome"
911
+ }
912
+ },
913
+ {
914
+ "field": "base",
915
+ "rhs": {
916
+ "kind": "name",
917
+ "name": "base"
918
+ }
919
+ }
920
+ ]
921
+ },
922
+ {
923
+ "name": "blur",
924
+ "assignments": [
925
+ {
926
+ "field": "focused",
927
+ "rhs": {
928
+ "kind": "bool",
929
+ "value": false
930
+ }
931
+ },
932
+ {
933
+ "field": "disabled",
934
+ "rhs": {
935
+ "kind": "name",
936
+ "name": "disabled"
937
+ }
938
+ },
939
+ {
940
+ "field": "checked",
941
+ "rhs": {
942
+ "kind": "name",
943
+ "name": "checked"
944
+ }
945
+ },
946
+ {
947
+ "field": "enterToggles",
948
+ "rhs": {
949
+ "kind": "name",
950
+ "name": "enterToggles"
951
+ }
952
+ },
953
+ {
954
+ "field": "spaceArmed",
955
+ "rhs": {
956
+ "kind": "bool",
957
+ "value": false
958
+ }
959
+ },
960
+ {
961
+ "field": "pointerArmed",
962
+ "rhs": {
963
+ "kind": "name",
964
+ "name": "pointerArmed"
965
+ }
966
+ },
967
+ {
968
+ "field": "requests",
969
+ "rhs": {
970
+ "kind": "name",
971
+ "name": "requests"
972
+ }
973
+ },
974
+ {
975
+ "field": "controlled",
976
+ "rhs": {
977
+ "kind": "name",
978
+ "name": "controlled"
979
+ }
980
+ },
981
+ {
982
+ "field": "accepting",
983
+ "rhs": {
984
+ "kind": "name",
985
+ "name": "accepting"
986
+ }
987
+ },
988
+ {
989
+ "field": "valueProp",
990
+ "rhs": {
991
+ "kind": "name",
992
+ "name": "valueProp"
993
+ }
994
+ },
995
+ {
996
+ "field": "requested",
997
+ "rhs": {
998
+ "kind": "name",
999
+ "name": "requested"
1000
+ }
1001
+ },
1002
+ {
1003
+ "field": "outcome",
1004
+ "rhs": {
1005
+ "kind": "name",
1006
+ "name": "outcome"
1007
+ }
1008
+ },
1009
+ {
1010
+ "field": "base",
1011
+ "rhs": {
1012
+ "kind": "name",
1013
+ "name": "base"
1014
+ }
1015
+ }
1016
+ ]
1017
+ },
1018
+ {
1019
+ "name": "key_down",
1020
+ "nondet": {
1021
+ "name": "key",
1022
+ "kind": "str",
1023
+ "pool": [
1024
+ "Space",
1025
+ "Enter",
1026
+ "Other"
1027
+ ]
1028
+ },
1029
+ "assignments": [
1030
+ {
1031
+ "field": "focused",
1032
+ "rhs": {
1033
+ "kind": "name",
1034
+ "name": "focused"
1035
+ }
1036
+ },
1037
+ {
1038
+ "field": "disabled",
1039
+ "rhs": {
1040
+ "kind": "name",
1041
+ "name": "disabled"
1042
+ }
1043
+ },
1044
+ {
1045
+ "field": "checked",
1046
+ "rhs": {
1047
+ "kind": "app",
1048
+ "opcode": "ite",
1049
+ "args": [
1050
+ {
1051
+ "kind": "app",
1052
+ "opcode": "enterFires",
1053
+ "args": [
1054
+ {
1055
+ "kind": "name",
1056
+ "name": "focused"
1057
+ },
1058
+ {
1059
+ "kind": "name",
1060
+ "name": "disabled"
1061
+ },
1062
+ {
1063
+ "kind": "name",
1064
+ "name": "enterToggles"
1065
+ },
1066
+ {
1067
+ "kind": "name",
1068
+ "name": "key"
1069
+ }
1070
+ ]
1071
+ },
1072
+ {
1073
+ "kind": "app",
1074
+ "opcode": "landed",
1075
+ "args": [
1076
+ {
1077
+ "kind": "name",
1078
+ "name": "holds"
1079
+ },
1080
+ {
1081
+ "kind": "name",
1082
+ "name": "checked"
1083
+ },
1084
+ {
1085
+ "kind": "app",
1086
+ "opcode": "flip",
1087
+ "args": [
1088
+ {
1089
+ "kind": "name",
1090
+ "name": "checked"
1091
+ }
1092
+ ]
1093
+ }
1094
+ ]
1095
+ },
1096
+ {
1097
+ "kind": "name",
1098
+ "name": "checked"
1099
+ }
1100
+ ]
1101
+ }
1102
+ },
1103
+ {
1104
+ "field": "enterToggles",
1105
+ "rhs": {
1106
+ "kind": "name",
1107
+ "name": "enterToggles"
1108
+ }
1109
+ },
1110
+ {
1111
+ "field": "spaceArmed",
1112
+ "rhs": {
1113
+ "kind": "app",
1114
+ "opcode": "ite",
1115
+ "args": [
1116
+ {
1117
+ "kind": "app",
1118
+ "opcode": "spaceArms",
1119
+ "args": [
1120
+ {
1121
+ "kind": "name",
1122
+ "name": "focused"
1123
+ },
1124
+ {
1125
+ "kind": "name",
1126
+ "name": "disabled"
1127
+ },
1128
+ {
1129
+ "kind": "name",
1130
+ "name": "key"
1131
+ }
1132
+ ]
1133
+ },
1134
+ {
1135
+ "kind": "bool",
1136
+ "value": true
1137
+ },
1138
+ {
1139
+ "kind": "name",
1140
+ "name": "spaceArmed"
1141
+ }
1142
+ ]
1143
+ }
1144
+ },
1145
+ {
1146
+ "field": "pointerArmed",
1147
+ "rhs": {
1148
+ "kind": "name",
1149
+ "name": "pointerArmed"
1150
+ }
1151
+ },
1152
+ {
1153
+ "field": "requests",
1154
+ "rhs": {
1155
+ "kind": "app",
1156
+ "opcode": "ite",
1157
+ "args": [
1158
+ {
1159
+ "kind": "app",
1160
+ "opcode": "enterFires",
1161
+ "args": [
1162
+ {
1163
+ "kind": "name",
1164
+ "name": "focused"
1165
+ },
1166
+ {
1167
+ "kind": "name",
1168
+ "name": "disabled"
1169
+ },
1170
+ {
1171
+ "kind": "name",
1172
+ "name": "enterToggles"
1173
+ },
1174
+ {
1175
+ "kind": "name",
1176
+ "name": "key"
1177
+ }
1178
+ ]
1179
+ },
1180
+ {
1181
+ "kind": "app",
1182
+ "opcode": "iadd",
1183
+ "args": [
1184
+ {
1185
+ "kind": "name",
1186
+ "name": "requests"
1187
+ },
1188
+ {
1189
+ "kind": "int",
1190
+ "value": "1"
1191
+ }
1192
+ ]
1193
+ },
1194
+ {
1195
+ "kind": "name",
1196
+ "name": "requests"
1197
+ }
1198
+ ]
1199
+ }
1200
+ },
1201
+ {
1202
+ "field": "controlled",
1203
+ "rhs": {
1204
+ "kind": "name",
1205
+ "name": "controlled"
1206
+ }
1207
+ },
1208
+ {
1209
+ "field": "accepting",
1210
+ "rhs": {
1211
+ "kind": "name",
1212
+ "name": "accepting"
1213
+ }
1214
+ },
1215
+ {
1216
+ "field": "valueProp",
1217
+ "rhs": {
1218
+ "kind": "app",
1219
+ "opcode": "ite",
1220
+ "args": [
1221
+ {
1222
+ "kind": "app",
1223
+ "opcode": "enterFires",
1224
+ "args": [
1225
+ {
1226
+ "kind": "name",
1227
+ "name": "focused"
1228
+ },
1229
+ {
1230
+ "kind": "name",
1231
+ "name": "disabled"
1232
+ },
1233
+ {
1234
+ "kind": "name",
1235
+ "name": "enterToggles"
1236
+ },
1237
+ {
1238
+ "kind": "name",
1239
+ "name": "key"
1240
+ }
1241
+ ]
1242
+ },
1243
+ {
1244
+ "kind": "app",
1245
+ "opcode": "propAfter",
1246
+ "args": [
1247
+ {
1248
+ "kind": "name",
1249
+ "name": "follows"
1250
+ },
1251
+ {
1252
+ "kind": "name",
1253
+ "name": "valueProp"
1254
+ },
1255
+ {
1256
+ "kind": "app",
1257
+ "opcode": "flip",
1258
+ "args": [
1259
+ {
1260
+ "kind": "name",
1261
+ "name": "checked"
1262
+ }
1263
+ ]
1264
+ }
1265
+ ]
1266
+ },
1267
+ {
1268
+ "kind": "name",
1269
+ "name": "valueProp"
1270
+ }
1271
+ ]
1272
+ }
1273
+ },
1274
+ {
1275
+ "field": "requested",
1276
+ "rhs": {
1277
+ "kind": "app",
1278
+ "opcode": "ite",
1279
+ "args": [
1280
+ {
1281
+ "kind": "app",
1282
+ "opcode": "enterFires",
1283
+ "args": [
1284
+ {
1285
+ "kind": "name",
1286
+ "name": "focused"
1287
+ },
1288
+ {
1289
+ "kind": "name",
1290
+ "name": "disabled"
1291
+ },
1292
+ {
1293
+ "kind": "name",
1294
+ "name": "enterToggles"
1295
+ },
1296
+ {
1297
+ "kind": "name",
1298
+ "name": "key"
1299
+ }
1300
+ ]
1301
+ },
1302
+ {
1303
+ "kind": "app",
1304
+ "opcode": "flip",
1305
+ "args": [
1306
+ {
1307
+ "kind": "name",
1308
+ "name": "checked"
1309
+ }
1310
+ ]
1311
+ },
1312
+ {
1313
+ "kind": "name",
1314
+ "name": "requested"
1315
+ }
1316
+ ]
1317
+ }
1318
+ },
1319
+ {
1320
+ "field": "outcome",
1321
+ "rhs": {
1322
+ "kind": "app",
1323
+ "opcode": "ite",
1324
+ "args": [
1325
+ {
1326
+ "kind": "app",
1327
+ "opcode": "enterFires",
1328
+ "args": [
1329
+ {
1330
+ "kind": "name",
1331
+ "name": "focused"
1332
+ },
1333
+ {
1334
+ "kind": "name",
1335
+ "name": "disabled"
1336
+ },
1337
+ {
1338
+ "kind": "name",
1339
+ "name": "enterToggles"
1340
+ },
1341
+ {
1342
+ "kind": "name",
1343
+ "name": "key"
1344
+ }
1345
+ ]
1346
+ },
1347
+ {
1348
+ "kind": "name",
1349
+ "name": "verdict"
1350
+ },
1351
+ {
1352
+ "kind": "name",
1353
+ "name": "outcome"
1354
+ }
1355
+ ]
1356
+ }
1357
+ },
1358
+ {
1359
+ "field": "base",
1360
+ "rhs": {
1361
+ "kind": "app",
1362
+ "opcode": "ite",
1363
+ "args": [
1364
+ {
1365
+ "kind": "app",
1366
+ "opcode": "enterFires",
1367
+ "args": [
1368
+ {
1369
+ "kind": "name",
1370
+ "name": "focused"
1371
+ },
1372
+ {
1373
+ "kind": "name",
1374
+ "name": "disabled"
1375
+ },
1376
+ {
1377
+ "kind": "name",
1378
+ "name": "enterToggles"
1379
+ },
1380
+ {
1381
+ "kind": "name",
1382
+ "name": "key"
1383
+ }
1384
+ ]
1385
+ },
1386
+ {
1387
+ "kind": "name",
1388
+ "name": "checked"
1389
+ },
1390
+ {
1391
+ "kind": "name",
1392
+ "name": "base"
1393
+ }
1394
+ ]
1395
+ }
1396
+ }
1397
+ ]
1398
+ },
1399
+ {
1400
+ "name": "key_up",
1401
+ "nondet": {
1402
+ "name": "key",
1403
+ "kind": "str",
1404
+ "pool": [
1405
+ "Space",
1406
+ "Enter",
1407
+ "Other"
1408
+ ]
1409
+ },
1410
+ "assignments": [
1411
+ {
1412
+ "field": "focused",
1413
+ "rhs": {
1414
+ "kind": "name",
1415
+ "name": "focused"
1416
+ }
1417
+ },
1418
+ {
1419
+ "field": "disabled",
1420
+ "rhs": {
1421
+ "kind": "name",
1422
+ "name": "disabled"
1423
+ }
1424
+ },
1425
+ {
1426
+ "field": "checked",
1427
+ "rhs": {
1428
+ "kind": "app",
1429
+ "opcode": "ite",
1430
+ "args": [
1431
+ {
1432
+ "kind": "app",
1433
+ "opcode": "spaceReleaseFires",
1434
+ "args": [
1435
+ {
1436
+ "kind": "name",
1437
+ "name": "spaceArmed"
1438
+ },
1439
+ {
1440
+ "kind": "name",
1441
+ "name": "disabled"
1442
+ },
1443
+ {
1444
+ "kind": "name",
1445
+ "name": "key"
1446
+ }
1447
+ ]
1448
+ },
1449
+ {
1450
+ "kind": "app",
1451
+ "opcode": "landed",
1452
+ "args": [
1453
+ {
1454
+ "kind": "name",
1455
+ "name": "holds"
1456
+ },
1457
+ {
1458
+ "kind": "name",
1459
+ "name": "checked"
1460
+ },
1461
+ {
1462
+ "kind": "app",
1463
+ "opcode": "flip",
1464
+ "args": [
1465
+ {
1466
+ "kind": "name",
1467
+ "name": "checked"
1468
+ }
1469
+ ]
1470
+ }
1471
+ ]
1472
+ },
1473
+ {
1474
+ "kind": "name",
1475
+ "name": "checked"
1476
+ }
1477
+ ]
1478
+ }
1479
+ },
1480
+ {
1481
+ "field": "enterToggles",
1482
+ "rhs": {
1483
+ "kind": "name",
1484
+ "name": "enterToggles"
1485
+ }
1486
+ },
1487
+ {
1488
+ "field": "spaceArmed",
1489
+ "rhs": {
1490
+ "kind": "app",
1491
+ "opcode": "ite",
1492
+ "args": [
1493
+ {
1494
+ "kind": "app",
1495
+ "opcode": "eq",
1496
+ "args": [
1497
+ {
1498
+ "kind": "name",
1499
+ "name": "key"
1500
+ },
1501
+ {
1502
+ "kind": "str",
1503
+ "value": "Space"
1504
+ }
1505
+ ]
1506
+ },
1507
+ {
1508
+ "kind": "bool",
1509
+ "value": false
1510
+ },
1511
+ {
1512
+ "kind": "name",
1513
+ "name": "spaceArmed"
1514
+ }
1515
+ ]
1516
+ }
1517
+ },
1518
+ {
1519
+ "field": "pointerArmed",
1520
+ "rhs": {
1521
+ "kind": "name",
1522
+ "name": "pointerArmed"
1523
+ }
1524
+ },
1525
+ {
1526
+ "field": "requests",
1527
+ "rhs": {
1528
+ "kind": "app",
1529
+ "opcode": "ite",
1530
+ "args": [
1531
+ {
1532
+ "kind": "app",
1533
+ "opcode": "spaceReleaseFires",
1534
+ "args": [
1535
+ {
1536
+ "kind": "name",
1537
+ "name": "spaceArmed"
1538
+ },
1539
+ {
1540
+ "kind": "name",
1541
+ "name": "disabled"
1542
+ },
1543
+ {
1544
+ "kind": "name",
1545
+ "name": "key"
1546
+ }
1547
+ ]
1548
+ },
1549
+ {
1550
+ "kind": "app",
1551
+ "opcode": "iadd",
1552
+ "args": [
1553
+ {
1554
+ "kind": "name",
1555
+ "name": "requests"
1556
+ },
1557
+ {
1558
+ "kind": "int",
1559
+ "value": "1"
1560
+ }
1561
+ ]
1562
+ },
1563
+ {
1564
+ "kind": "name",
1565
+ "name": "requests"
1566
+ }
1567
+ ]
1568
+ }
1569
+ },
1570
+ {
1571
+ "field": "controlled",
1572
+ "rhs": {
1573
+ "kind": "name",
1574
+ "name": "controlled"
1575
+ }
1576
+ },
1577
+ {
1578
+ "field": "accepting",
1579
+ "rhs": {
1580
+ "kind": "name",
1581
+ "name": "accepting"
1582
+ }
1583
+ },
1584
+ {
1585
+ "field": "valueProp",
1586
+ "rhs": {
1587
+ "kind": "app",
1588
+ "opcode": "ite",
1589
+ "args": [
1590
+ {
1591
+ "kind": "app",
1592
+ "opcode": "spaceReleaseFires",
1593
+ "args": [
1594
+ {
1595
+ "kind": "name",
1596
+ "name": "spaceArmed"
1597
+ },
1598
+ {
1599
+ "kind": "name",
1600
+ "name": "disabled"
1601
+ },
1602
+ {
1603
+ "kind": "name",
1604
+ "name": "key"
1605
+ }
1606
+ ]
1607
+ },
1608
+ {
1609
+ "kind": "app",
1610
+ "opcode": "propAfter",
1611
+ "args": [
1612
+ {
1613
+ "kind": "name",
1614
+ "name": "follows"
1615
+ },
1616
+ {
1617
+ "kind": "name",
1618
+ "name": "valueProp"
1619
+ },
1620
+ {
1621
+ "kind": "app",
1622
+ "opcode": "flip",
1623
+ "args": [
1624
+ {
1625
+ "kind": "name",
1626
+ "name": "checked"
1627
+ }
1628
+ ]
1629
+ }
1630
+ ]
1631
+ },
1632
+ {
1633
+ "kind": "name",
1634
+ "name": "valueProp"
1635
+ }
1636
+ ]
1637
+ }
1638
+ },
1639
+ {
1640
+ "field": "requested",
1641
+ "rhs": {
1642
+ "kind": "app",
1643
+ "opcode": "ite",
1644
+ "args": [
1645
+ {
1646
+ "kind": "app",
1647
+ "opcode": "spaceReleaseFires",
1648
+ "args": [
1649
+ {
1650
+ "kind": "name",
1651
+ "name": "spaceArmed"
1652
+ },
1653
+ {
1654
+ "kind": "name",
1655
+ "name": "disabled"
1656
+ },
1657
+ {
1658
+ "kind": "name",
1659
+ "name": "key"
1660
+ }
1661
+ ]
1662
+ },
1663
+ {
1664
+ "kind": "app",
1665
+ "opcode": "flip",
1666
+ "args": [
1667
+ {
1668
+ "kind": "name",
1669
+ "name": "checked"
1670
+ }
1671
+ ]
1672
+ },
1673
+ {
1674
+ "kind": "name",
1675
+ "name": "requested"
1676
+ }
1677
+ ]
1678
+ }
1679
+ },
1680
+ {
1681
+ "field": "outcome",
1682
+ "rhs": {
1683
+ "kind": "app",
1684
+ "opcode": "ite",
1685
+ "args": [
1686
+ {
1687
+ "kind": "app",
1688
+ "opcode": "spaceReleaseFires",
1689
+ "args": [
1690
+ {
1691
+ "kind": "name",
1692
+ "name": "spaceArmed"
1693
+ },
1694
+ {
1695
+ "kind": "name",
1696
+ "name": "disabled"
1697
+ },
1698
+ {
1699
+ "kind": "name",
1700
+ "name": "key"
1701
+ }
1702
+ ]
1703
+ },
1704
+ {
1705
+ "kind": "name",
1706
+ "name": "verdict"
1707
+ },
1708
+ {
1709
+ "kind": "name",
1710
+ "name": "outcome"
1711
+ }
1712
+ ]
1713
+ }
1714
+ },
1715
+ {
1716
+ "field": "base",
1717
+ "rhs": {
1718
+ "kind": "app",
1719
+ "opcode": "ite",
1720
+ "args": [
1721
+ {
1722
+ "kind": "app",
1723
+ "opcode": "spaceReleaseFires",
1724
+ "args": [
1725
+ {
1726
+ "kind": "name",
1727
+ "name": "spaceArmed"
1728
+ },
1729
+ {
1730
+ "kind": "name",
1731
+ "name": "disabled"
1732
+ },
1733
+ {
1734
+ "kind": "name",
1735
+ "name": "key"
1736
+ }
1737
+ ]
1738
+ },
1739
+ {
1740
+ "kind": "name",
1741
+ "name": "checked"
1742
+ },
1743
+ {
1744
+ "kind": "name",
1745
+ "name": "base"
1746
+ }
1747
+ ]
1748
+ }
1749
+ }
1750
+ ]
1751
+ },
1752
+ {
1753
+ "name": "pointer_down",
1754
+ "assignments": [
1755
+ {
1756
+ "field": "focused",
1757
+ "rhs": {
1758
+ "kind": "bool",
1759
+ "value": true
1760
+ }
1761
+ },
1762
+ {
1763
+ "field": "disabled",
1764
+ "rhs": {
1765
+ "kind": "name",
1766
+ "name": "disabled"
1767
+ }
1768
+ },
1769
+ {
1770
+ "field": "checked",
1771
+ "rhs": {
1772
+ "kind": "name",
1773
+ "name": "checked"
1774
+ }
1775
+ },
1776
+ {
1777
+ "field": "enterToggles",
1778
+ "rhs": {
1779
+ "kind": "name",
1780
+ "name": "enterToggles"
1781
+ }
1782
+ },
1783
+ {
1784
+ "field": "spaceArmed",
1785
+ "rhs": {
1786
+ "kind": "name",
1787
+ "name": "spaceArmed"
1788
+ }
1789
+ },
1790
+ {
1791
+ "field": "pointerArmed",
1792
+ "rhs": {
1793
+ "kind": "app",
1794
+ "opcode": "not",
1795
+ "args": [
1796
+ {
1797
+ "kind": "name",
1798
+ "name": "disabled"
1799
+ }
1800
+ ]
1801
+ }
1802
+ },
1803
+ {
1804
+ "field": "requests",
1805
+ "rhs": {
1806
+ "kind": "name",
1807
+ "name": "requests"
1808
+ }
1809
+ },
1810
+ {
1811
+ "field": "controlled",
1812
+ "rhs": {
1813
+ "kind": "name",
1814
+ "name": "controlled"
1815
+ }
1816
+ },
1817
+ {
1818
+ "field": "accepting",
1819
+ "rhs": {
1820
+ "kind": "name",
1821
+ "name": "accepting"
1822
+ }
1823
+ },
1824
+ {
1825
+ "field": "valueProp",
1826
+ "rhs": {
1827
+ "kind": "name",
1828
+ "name": "valueProp"
1829
+ }
1830
+ },
1831
+ {
1832
+ "field": "requested",
1833
+ "rhs": {
1834
+ "kind": "name",
1835
+ "name": "requested"
1836
+ }
1837
+ },
1838
+ {
1839
+ "field": "outcome",
1840
+ "rhs": {
1841
+ "kind": "name",
1842
+ "name": "outcome"
1843
+ }
1844
+ },
1845
+ {
1846
+ "field": "base",
1847
+ "rhs": {
1848
+ "kind": "name",
1849
+ "name": "base"
1850
+ }
1851
+ }
1852
+ ]
1853
+ },
1854
+ {
1855
+ "name": "pointer_up",
1856
+ "assignments": [
1857
+ {
1858
+ "field": "focused",
1859
+ "rhs": {
1860
+ "kind": "name",
1861
+ "name": "focused"
1862
+ }
1863
+ },
1864
+ {
1865
+ "field": "disabled",
1866
+ "rhs": {
1867
+ "kind": "name",
1868
+ "name": "disabled"
1869
+ }
1870
+ },
1871
+ {
1872
+ "field": "checked",
1873
+ "rhs": {
1874
+ "kind": "app",
1875
+ "opcode": "ite",
1876
+ "args": [
1877
+ {
1878
+ "kind": "app",
1879
+ "opcode": "pointerReleaseFires",
1880
+ "args": [
1881
+ {
1882
+ "kind": "name",
1883
+ "name": "pointerArmed"
1884
+ },
1885
+ {
1886
+ "kind": "name",
1887
+ "name": "disabled"
1888
+ }
1889
+ ]
1890
+ },
1891
+ {
1892
+ "kind": "app",
1893
+ "opcode": "landed",
1894
+ "args": [
1895
+ {
1896
+ "kind": "name",
1897
+ "name": "holds"
1898
+ },
1899
+ {
1900
+ "kind": "name",
1901
+ "name": "checked"
1902
+ },
1903
+ {
1904
+ "kind": "app",
1905
+ "opcode": "flip",
1906
+ "args": [
1907
+ {
1908
+ "kind": "name",
1909
+ "name": "checked"
1910
+ }
1911
+ ]
1912
+ }
1913
+ ]
1914
+ },
1915
+ {
1916
+ "kind": "name",
1917
+ "name": "checked"
1918
+ }
1919
+ ]
1920
+ }
1921
+ },
1922
+ {
1923
+ "field": "enterToggles",
1924
+ "rhs": {
1925
+ "kind": "name",
1926
+ "name": "enterToggles"
1927
+ }
1928
+ },
1929
+ {
1930
+ "field": "spaceArmed",
1931
+ "rhs": {
1932
+ "kind": "name",
1933
+ "name": "spaceArmed"
1934
+ }
1935
+ },
1936
+ {
1937
+ "field": "pointerArmed",
1938
+ "rhs": {
1939
+ "kind": "bool",
1940
+ "value": false
1941
+ }
1942
+ },
1943
+ {
1944
+ "field": "requests",
1945
+ "rhs": {
1946
+ "kind": "app",
1947
+ "opcode": "ite",
1948
+ "args": [
1949
+ {
1950
+ "kind": "app",
1951
+ "opcode": "pointerReleaseFires",
1952
+ "args": [
1953
+ {
1954
+ "kind": "name",
1955
+ "name": "pointerArmed"
1956
+ },
1957
+ {
1958
+ "kind": "name",
1959
+ "name": "disabled"
1960
+ }
1961
+ ]
1962
+ },
1963
+ {
1964
+ "kind": "app",
1965
+ "opcode": "iadd",
1966
+ "args": [
1967
+ {
1968
+ "kind": "name",
1969
+ "name": "requests"
1970
+ },
1971
+ {
1972
+ "kind": "int",
1973
+ "value": "1"
1974
+ }
1975
+ ]
1976
+ },
1977
+ {
1978
+ "kind": "name",
1979
+ "name": "requests"
1980
+ }
1981
+ ]
1982
+ }
1983
+ },
1984
+ {
1985
+ "field": "controlled",
1986
+ "rhs": {
1987
+ "kind": "name",
1988
+ "name": "controlled"
1989
+ }
1990
+ },
1991
+ {
1992
+ "field": "accepting",
1993
+ "rhs": {
1994
+ "kind": "name",
1995
+ "name": "accepting"
1996
+ }
1997
+ },
1998
+ {
1999
+ "field": "valueProp",
2000
+ "rhs": {
2001
+ "kind": "app",
2002
+ "opcode": "ite",
2003
+ "args": [
2004
+ {
2005
+ "kind": "app",
2006
+ "opcode": "pointerReleaseFires",
2007
+ "args": [
2008
+ {
2009
+ "kind": "name",
2010
+ "name": "pointerArmed"
2011
+ },
2012
+ {
2013
+ "kind": "name",
2014
+ "name": "disabled"
2015
+ }
2016
+ ]
2017
+ },
2018
+ {
2019
+ "kind": "app",
2020
+ "opcode": "propAfter",
2021
+ "args": [
2022
+ {
2023
+ "kind": "name",
2024
+ "name": "follows"
2025
+ },
2026
+ {
2027
+ "kind": "name",
2028
+ "name": "valueProp"
2029
+ },
2030
+ {
2031
+ "kind": "app",
2032
+ "opcode": "flip",
2033
+ "args": [
2034
+ {
2035
+ "kind": "name",
2036
+ "name": "checked"
2037
+ }
2038
+ ]
2039
+ }
2040
+ ]
2041
+ },
2042
+ {
2043
+ "kind": "name",
2044
+ "name": "valueProp"
2045
+ }
2046
+ ]
2047
+ }
2048
+ },
2049
+ {
2050
+ "field": "requested",
2051
+ "rhs": {
2052
+ "kind": "app",
2053
+ "opcode": "ite",
2054
+ "args": [
2055
+ {
2056
+ "kind": "app",
2057
+ "opcode": "pointerReleaseFires",
2058
+ "args": [
2059
+ {
2060
+ "kind": "name",
2061
+ "name": "pointerArmed"
2062
+ },
2063
+ {
2064
+ "kind": "name",
2065
+ "name": "disabled"
2066
+ }
2067
+ ]
2068
+ },
2069
+ {
2070
+ "kind": "app",
2071
+ "opcode": "flip",
2072
+ "args": [
2073
+ {
2074
+ "kind": "name",
2075
+ "name": "checked"
2076
+ }
2077
+ ]
2078
+ },
2079
+ {
2080
+ "kind": "name",
2081
+ "name": "requested"
2082
+ }
2083
+ ]
2084
+ }
2085
+ },
2086
+ {
2087
+ "field": "outcome",
2088
+ "rhs": {
2089
+ "kind": "app",
2090
+ "opcode": "ite",
2091
+ "args": [
2092
+ {
2093
+ "kind": "app",
2094
+ "opcode": "pointerReleaseFires",
2095
+ "args": [
2096
+ {
2097
+ "kind": "name",
2098
+ "name": "pointerArmed"
2099
+ },
2100
+ {
2101
+ "kind": "name",
2102
+ "name": "disabled"
2103
+ }
2104
+ ]
2105
+ },
2106
+ {
2107
+ "kind": "name",
2108
+ "name": "verdict"
2109
+ },
2110
+ {
2111
+ "kind": "name",
2112
+ "name": "outcome"
2113
+ }
2114
+ ]
2115
+ }
2116
+ },
2117
+ {
2118
+ "field": "base",
2119
+ "rhs": {
2120
+ "kind": "app",
2121
+ "opcode": "ite",
2122
+ "args": [
2123
+ {
2124
+ "kind": "app",
2125
+ "opcode": "pointerReleaseFires",
2126
+ "args": [
2127
+ {
2128
+ "kind": "name",
2129
+ "name": "pointerArmed"
2130
+ },
2131
+ {
2132
+ "kind": "name",
2133
+ "name": "disabled"
2134
+ }
2135
+ ]
2136
+ },
2137
+ {
2138
+ "kind": "name",
2139
+ "name": "checked"
2140
+ },
2141
+ {
2142
+ "kind": "name",
2143
+ "name": "base"
2144
+ }
2145
+ ]
2146
+ }
2147
+ }
2148
+ ]
2149
+ },
2150
+ {
2151
+ "name": "pointer_cancel",
2152
+ "assignments": [
2153
+ {
2154
+ "field": "focused",
2155
+ "rhs": {
2156
+ "kind": "name",
2157
+ "name": "focused"
2158
+ }
2159
+ },
2160
+ {
2161
+ "field": "disabled",
2162
+ "rhs": {
2163
+ "kind": "name",
2164
+ "name": "disabled"
2165
+ }
2166
+ },
2167
+ {
2168
+ "field": "checked",
2169
+ "rhs": {
2170
+ "kind": "name",
2171
+ "name": "checked"
2172
+ }
2173
+ },
2174
+ {
2175
+ "field": "enterToggles",
2176
+ "rhs": {
2177
+ "kind": "name",
2178
+ "name": "enterToggles"
2179
+ }
2180
+ },
2181
+ {
2182
+ "field": "spaceArmed",
2183
+ "rhs": {
2184
+ "kind": "name",
2185
+ "name": "spaceArmed"
2186
+ }
2187
+ },
2188
+ {
2189
+ "field": "pointerArmed",
2190
+ "rhs": {
2191
+ "kind": "bool",
2192
+ "value": false
2193
+ }
2194
+ },
2195
+ {
2196
+ "field": "requests",
2197
+ "rhs": {
2198
+ "kind": "name",
2199
+ "name": "requests"
2200
+ }
2201
+ },
2202
+ {
2203
+ "field": "controlled",
2204
+ "rhs": {
2205
+ "kind": "name",
2206
+ "name": "controlled"
2207
+ }
2208
+ },
2209
+ {
2210
+ "field": "accepting",
2211
+ "rhs": {
2212
+ "kind": "name",
2213
+ "name": "accepting"
2214
+ }
2215
+ },
2216
+ {
2217
+ "field": "valueProp",
2218
+ "rhs": {
2219
+ "kind": "name",
2220
+ "name": "valueProp"
2221
+ }
2222
+ },
2223
+ {
2224
+ "field": "requested",
2225
+ "rhs": {
2226
+ "kind": "name",
2227
+ "name": "requested"
2228
+ }
2229
+ },
2230
+ {
2231
+ "field": "outcome",
2232
+ "rhs": {
2233
+ "kind": "name",
2234
+ "name": "outcome"
2235
+ }
2236
+ },
2237
+ {
2238
+ "field": "base",
2239
+ "rhs": {
2240
+ "kind": "name",
2241
+ "name": "base"
2242
+ }
2243
+ }
2244
+ ]
2245
+ },
2246
+ {
2247
+ "name": "setValue",
2248
+ "nondet": {
2249
+ "name": "incoming",
2250
+ "kind": "str",
2251
+ "pool": [
2252
+ "true",
2253
+ "false",
2254
+ "mixed"
2255
+ ]
2256
+ },
2257
+ "assignments": [
2258
+ {
2259
+ "field": "focused",
2260
+ "rhs": {
2261
+ "kind": "name",
2262
+ "name": "focused"
2263
+ }
2264
+ },
2265
+ {
2266
+ "field": "disabled",
2267
+ "rhs": {
2268
+ "kind": "name",
2269
+ "name": "disabled"
2270
+ }
2271
+ },
2272
+ {
2273
+ "field": "checked",
2274
+ "rhs": {
2275
+ "kind": "app",
2276
+ "opcode": "ite",
2277
+ "args": [
2278
+ {
2279
+ "kind": "app",
2280
+ "opcode": "and",
2281
+ "args": [
2282
+ {
2283
+ "kind": "name",
2284
+ "name": "controlled"
2285
+ },
2286
+ {
2287
+ "kind": "app",
2288
+ "opcode": "not",
2289
+ "args": [
2290
+ {
2291
+ "kind": "app",
2292
+ "opcode": "eq",
2293
+ "args": [
2294
+ {
2295
+ "kind": "name",
2296
+ "name": "incoming"
2297
+ },
2298
+ {
2299
+ "kind": "str",
2300
+ "value": "mixed"
2301
+ }
2302
+ ]
2303
+ }
2304
+ ]
2305
+ }
2306
+ ]
2307
+ },
2308
+ {
2309
+ "kind": "name",
2310
+ "name": "incoming"
2311
+ },
2312
+ {
2313
+ "kind": "name",
2314
+ "name": "checked"
2315
+ }
2316
+ ]
2317
+ }
2318
+ },
2319
+ {
2320
+ "field": "enterToggles",
2321
+ "rhs": {
2322
+ "kind": "name",
2323
+ "name": "enterToggles"
2324
+ }
2325
+ },
2326
+ {
2327
+ "field": "spaceArmed",
2328
+ "rhs": {
2329
+ "kind": "name",
2330
+ "name": "spaceArmed"
2331
+ }
2332
+ },
2333
+ {
2334
+ "field": "pointerArmed",
2335
+ "rhs": {
2336
+ "kind": "name",
2337
+ "name": "pointerArmed"
2338
+ }
2339
+ },
2340
+ {
2341
+ "field": "requests",
2342
+ "rhs": {
2343
+ "kind": "name",
2344
+ "name": "requests"
2345
+ }
2346
+ },
2347
+ {
2348
+ "field": "controlled",
2349
+ "rhs": {
2350
+ "kind": "name",
2351
+ "name": "controlled"
2352
+ }
2353
+ },
2354
+ {
2355
+ "field": "accepting",
2356
+ "rhs": {
2357
+ "kind": "name",
2358
+ "name": "accepting"
2359
+ }
2360
+ },
2361
+ {
2362
+ "field": "valueProp",
2363
+ "rhs": {
2364
+ "kind": "app",
2365
+ "opcode": "ite",
2366
+ "args": [
2367
+ {
2368
+ "kind": "app",
2369
+ "opcode": "and",
2370
+ "args": [
2371
+ {
2372
+ "kind": "name",
2373
+ "name": "controlled"
2374
+ },
2375
+ {
2376
+ "kind": "app",
2377
+ "opcode": "not",
2378
+ "args": [
2379
+ {
2380
+ "kind": "app",
2381
+ "opcode": "eq",
2382
+ "args": [
2383
+ {
2384
+ "kind": "name",
2385
+ "name": "incoming"
2386
+ },
2387
+ {
2388
+ "kind": "str",
2389
+ "value": "mixed"
2390
+ }
2391
+ ]
2392
+ }
2393
+ ]
2394
+ }
2395
+ ]
2396
+ },
2397
+ {
2398
+ "kind": "name",
2399
+ "name": "incoming"
2400
+ },
2401
+ {
2402
+ "kind": "name",
2403
+ "name": "valueProp"
2404
+ }
2405
+ ]
2406
+ }
2407
+ },
2408
+ {
2409
+ "field": "requested",
2410
+ "rhs": {
2411
+ "kind": "name",
2412
+ "name": "requested"
2413
+ }
2414
+ },
2415
+ {
2416
+ "field": "outcome",
2417
+ "rhs": {
2418
+ "kind": "app",
2419
+ "opcode": "ite",
2420
+ "args": [
2421
+ {
2422
+ "kind": "name",
2423
+ "name": "controlled"
2424
+ },
2425
+ {
2426
+ "kind": "str",
2427
+ "value": "none"
2428
+ },
2429
+ {
2430
+ "kind": "name",
2431
+ "name": "outcome"
2432
+ }
2433
+ ]
2434
+ }
2435
+ },
2436
+ {
2437
+ "field": "base",
2438
+ "rhs": {
2439
+ "kind": "name",
2440
+ "name": "base"
2441
+ }
2442
+ }
2443
+ ]
2444
+ },
2445
+ {
2446
+ "name": "hostToggle",
2447
+ "assignments": [
2448
+ {
2449
+ "field": "focused",
2450
+ "rhs": {
2451
+ "kind": "name",
2452
+ "name": "focused"
2453
+ }
2454
+ },
2455
+ {
2456
+ "field": "disabled",
2457
+ "rhs": {
2458
+ "kind": "name",
2459
+ "name": "disabled"
2460
+ }
2461
+ },
2462
+ {
2463
+ "field": "checked",
2464
+ "rhs": {
2465
+ "kind": "app",
2466
+ "opcode": "ite",
2467
+ "args": [
2468
+ {
2469
+ "kind": "name",
2470
+ "name": "controlled"
2471
+ },
2472
+ {
2473
+ "kind": "app",
2474
+ "opcode": "flip",
2475
+ "args": [
2476
+ {
2477
+ "kind": "name",
2478
+ "name": "valueProp"
2479
+ }
2480
+ ]
2481
+ },
2482
+ {
2483
+ "kind": "name",
2484
+ "name": "checked"
2485
+ }
2486
+ ]
2487
+ }
2488
+ },
2489
+ {
2490
+ "field": "enterToggles",
2491
+ "rhs": {
2492
+ "kind": "name",
2493
+ "name": "enterToggles"
2494
+ }
2495
+ },
2496
+ {
2497
+ "field": "spaceArmed",
2498
+ "rhs": {
2499
+ "kind": "name",
2500
+ "name": "spaceArmed"
2501
+ }
2502
+ },
2503
+ {
2504
+ "field": "pointerArmed",
2505
+ "rhs": {
2506
+ "kind": "name",
2507
+ "name": "pointerArmed"
2508
+ }
2509
+ },
2510
+ {
2511
+ "field": "requests",
2512
+ "rhs": {
2513
+ "kind": "name",
2514
+ "name": "requests"
2515
+ }
2516
+ },
2517
+ {
2518
+ "field": "controlled",
2519
+ "rhs": {
2520
+ "kind": "name",
2521
+ "name": "controlled"
2522
+ }
2523
+ },
2524
+ {
2525
+ "field": "accepting",
2526
+ "rhs": {
2527
+ "kind": "name",
2528
+ "name": "accepting"
2529
+ }
2530
+ },
2531
+ {
2532
+ "field": "valueProp",
2533
+ "rhs": {
2534
+ "kind": "app",
2535
+ "opcode": "ite",
2536
+ "args": [
2537
+ {
2538
+ "kind": "name",
2539
+ "name": "controlled"
2540
+ },
2541
+ {
2542
+ "kind": "app",
2543
+ "opcode": "flip",
2544
+ "args": [
2545
+ {
2546
+ "kind": "name",
2547
+ "name": "valueProp"
2548
+ }
2549
+ ]
2550
+ },
2551
+ {
2552
+ "kind": "name",
2553
+ "name": "valueProp"
2554
+ }
2555
+ ]
2556
+ }
2557
+ },
2558
+ {
2559
+ "field": "requested",
2560
+ "rhs": {
2561
+ "kind": "name",
2562
+ "name": "requested"
2563
+ }
2564
+ },
2565
+ {
2566
+ "field": "outcome",
2567
+ "rhs": {
2568
+ "kind": "app",
2569
+ "opcode": "ite",
2570
+ "args": [
2571
+ {
2572
+ "kind": "name",
2573
+ "name": "controlled"
2574
+ },
2575
+ {
2576
+ "kind": "str",
2577
+ "value": "none"
2578
+ },
2579
+ {
2580
+ "kind": "name",
2581
+ "name": "outcome"
2582
+ }
2583
+ ]
2584
+ }
2585
+ },
2586
+ {
2587
+ "field": "base",
2588
+ "rhs": {
2589
+ "kind": "name",
2590
+ "name": "base"
2591
+ }
2592
+ }
2593
+ ]
2594
+ },
2595
+ {
2596
+ "name": "control",
2597
+ "assignments": [
2598
+ {
2599
+ "field": "focused",
2600
+ "rhs": {
2601
+ "kind": "name",
2602
+ "name": "focused"
2603
+ }
2604
+ },
2605
+ {
2606
+ "field": "disabled",
2607
+ "rhs": {
2608
+ "kind": "name",
2609
+ "name": "disabled"
2610
+ }
2611
+ },
2612
+ {
2613
+ "field": "checked",
2614
+ "rhs": {
2615
+ "kind": "name",
2616
+ "name": "checked"
2617
+ }
2618
+ },
2619
+ {
2620
+ "field": "enterToggles",
2621
+ "rhs": {
2622
+ "kind": "name",
2623
+ "name": "enterToggles"
2624
+ }
2625
+ },
2626
+ {
2627
+ "field": "spaceArmed",
2628
+ "rhs": {
2629
+ "kind": "name",
2630
+ "name": "spaceArmed"
2631
+ }
2632
+ },
2633
+ {
2634
+ "field": "pointerArmed",
2635
+ "rhs": {
2636
+ "kind": "name",
2637
+ "name": "pointerArmed"
2638
+ }
2639
+ },
2640
+ {
2641
+ "field": "requests",
2642
+ "rhs": {
2643
+ "kind": "name",
2644
+ "name": "requests"
2645
+ }
2646
+ },
2647
+ {
2648
+ "field": "controlled",
2649
+ "rhs": {
2650
+ "kind": "bool",
2651
+ "value": true
2652
+ }
2653
+ },
2654
+ {
2655
+ "field": "accepting",
2656
+ "rhs": {
2657
+ "kind": "name",
2658
+ "name": "accepting"
2659
+ }
2660
+ },
2661
+ {
2662
+ "field": "valueProp",
2663
+ "rhs": {
2664
+ "kind": "name",
2665
+ "name": "checked"
2666
+ }
2667
+ },
2668
+ {
2669
+ "field": "requested",
2670
+ "rhs": {
2671
+ "kind": "name",
2672
+ "name": "requested"
2673
+ }
2674
+ },
2675
+ {
2676
+ "field": "outcome",
2677
+ "rhs": {
2678
+ "kind": "name",
2679
+ "name": "outcome"
2680
+ }
2681
+ },
2682
+ {
2683
+ "field": "base",
2684
+ "rhs": {
2685
+ "kind": "name",
2686
+ "name": "base"
2687
+ }
2688
+ }
2689
+ ]
2690
+ },
2691
+ {
2692
+ "name": "acceptRequests",
2693
+ "assignments": [
2694
+ {
2695
+ "field": "focused",
2696
+ "rhs": {
2697
+ "kind": "name",
2698
+ "name": "focused"
2699
+ }
2700
+ },
2701
+ {
2702
+ "field": "disabled",
2703
+ "rhs": {
2704
+ "kind": "name",
2705
+ "name": "disabled"
2706
+ }
2707
+ },
2708
+ {
2709
+ "field": "checked",
2710
+ "rhs": {
2711
+ "kind": "name",
2712
+ "name": "checked"
2713
+ }
2714
+ },
2715
+ {
2716
+ "field": "enterToggles",
2717
+ "rhs": {
2718
+ "kind": "name",
2719
+ "name": "enterToggles"
2720
+ }
2721
+ },
2722
+ {
2723
+ "field": "spaceArmed",
2724
+ "rhs": {
2725
+ "kind": "name",
2726
+ "name": "spaceArmed"
2727
+ }
2728
+ },
2729
+ {
2730
+ "field": "pointerArmed",
2731
+ "rhs": {
2732
+ "kind": "name",
2733
+ "name": "pointerArmed"
2734
+ }
2735
+ },
2736
+ {
2737
+ "field": "requests",
2738
+ "rhs": {
2739
+ "kind": "name",
2740
+ "name": "requests"
2741
+ }
2742
+ },
2743
+ {
2744
+ "field": "controlled",
2745
+ "rhs": {
2746
+ "kind": "name",
2747
+ "name": "controlled"
2748
+ }
2749
+ },
2750
+ {
2751
+ "field": "accepting",
2752
+ "rhs": {
2753
+ "kind": "bool",
2754
+ "value": true
2755
+ }
2756
+ },
2757
+ {
2758
+ "field": "valueProp",
2759
+ "rhs": {
2760
+ "kind": "name",
2761
+ "name": "valueProp"
2762
+ }
2763
+ },
2764
+ {
2765
+ "field": "requested",
2766
+ "rhs": {
2767
+ "kind": "name",
2768
+ "name": "requested"
2769
+ }
2770
+ },
2771
+ {
2772
+ "field": "outcome",
2773
+ "rhs": {
2774
+ "kind": "name",
2775
+ "name": "outcome"
2776
+ }
2777
+ },
2778
+ {
2779
+ "field": "base",
2780
+ "rhs": {
2781
+ "kind": "name",
2782
+ "name": "base"
2783
+ }
2784
+ }
2785
+ ]
2786
+ },
2787
+ {
2788
+ "name": "seed",
2789
+ "nondet": {
2790
+ "name": "incoming",
2791
+ "kind": "str",
2792
+ "pool": [
2793
+ "true",
2794
+ "false"
2795
+ ]
2796
+ },
2797
+ "assignments": [
2798
+ {
2799
+ "field": "focused",
2800
+ "rhs": {
2801
+ "kind": "name",
2802
+ "name": "focused"
2803
+ }
2804
+ },
2805
+ {
2806
+ "field": "disabled",
2807
+ "rhs": {
2808
+ "kind": "name",
2809
+ "name": "disabled"
2810
+ }
2811
+ },
2812
+ {
2813
+ "field": "checked",
2814
+ "rhs": {
2815
+ "kind": "app",
2816
+ "opcode": "ite",
2817
+ "args": [
2818
+ {
2819
+ "kind": "name",
2820
+ "name": "controlled"
2821
+ },
2822
+ {
2823
+ "kind": "name",
2824
+ "name": "checked"
2825
+ },
2826
+ {
2827
+ "kind": "name",
2828
+ "name": "incoming"
2829
+ }
2830
+ ]
2831
+ }
2832
+ },
2833
+ {
2834
+ "field": "enterToggles",
2835
+ "rhs": {
2836
+ "kind": "name",
2837
+ "name": "enterToggles"
2838
+ }
2839
+ },
2840
+ {
2841
+ "field": "spaceArmed",
2842
+ "rhs": {
2843
+ "kind": "name",
2844
+ "name": "spaceArmed"
2845
+ }
2846
+ },
2847
+ {
2848
+ "field": "pointerArmed",
2849
+ "rhs": {
2850
+ "kind": "name",
2851
+ "name": "pointerArmed"
2852
+ }
2853
+ },
2854
+ {
2855
+ "field": "requests",
2856
+ "rhs": {
2857
+ "kind": "name",
2858
+ "name": "requests"
2859
+ }
2860
+ },
2861
+ {
2862
+ "field": "controlled",
2863
+ "rhs": {
2864
+ "kind": "name",
2865
+ "name": "controlled"
2866
+ }
2867
+ },
2868
+ {
2869
+ "field": "accepting",
2870
+ "rhs": {
2871
+ "kind": "name",
2872
+ "name": "accepting"
2873
+ }
2874
+ },
2875
+ {
2876
+ "field": "valueProp",
2877
+ "rhs": {
2878
+ "kind": "name",
2879
+ "name": "valueProp"
2880
+ }
2881
+ },
2882
+ {
2883
+ "field": "requested",
2884
+ "rhs": {
2885
+ "kind": "name",
2886
+ "name": "requested"
2887
+ }
2888
+ },
2889
+ {
2890
+ "field": "outcome",
2891
+ "rhs": {
2892
+ "kind": "str",
2893
+ "value": "none"
2894
+ }
2895
+ },
2896
+ {
2897
+ "field": "base",
2898
+ "rhs": {
2899
+ "kind": "name",
2900
+ "name": "base"
2901
+ }
2902
+ }
2903
+ ]
2904
+ },
2905
+ {
2906
+ "name": "set_disabled",
2907
+ "nondet": {
2908
+ "name": "value",
2909
+ "kind": "bool",
2910
+ "pool": [
2911
+ true,
2912
+ false
2913
+ ]
2914
+ },
2915
+ "assignments": [
2916
+ {
2917
+ "field": "focused",
2918
+ "rhs": {
2919
+ "kind": "name",
2920
+ "name": "focused"
2921
+ }
2922
+ },
2923
+ {
2924
+ "field": "disabled",
2925
+ "rhs": {
2926
+ "kind": "name",
2927
+ "name": "value"
2928
+ }
2929
+ },
2930
+ {
2931
+ "field": "checked",
2932
+ "rhs": {
2933
+ "kind": "name",
2934
+ "name": "checked"
2935
+ }
2936
+ },
2937
+ {
2938
+ "field": "enterToggles",
2939
+ "rhs": {
2940
+ "kind": "name",
2941
+ "name": "enterToggles"
2942
+ }
2943
+ },
2944
+ {
2945
+ "field": "spaceArmed",
2946
+ "rhs": {
2947
+ "kind": "app",
2948
+ "opcode": "ite",
2949
+ "args": [
2950
+ {
2951
+ "kind": "name",
2952
+ "name": "value"
2953
+ },
2954
+ {
2955
+ "kind": "bool",
2956
+ "value": false
2957
+ },
2958
+ {
2959
+ "kind": "name",
2960
+ "name": "spaceArmed"
2961
+ }
2962
+ ]
2963
+ }
2964
+ },
2965
+ {
2966
+ "field": "pointerArmed",
2967
+ "rhs": {
2968
+ "kind": "app",
2969
+ "opcode": "ite",
2970
+ "args": [
2971
+ {
2972
+ "kind": "name",
2973
+ "name": "value"
2974
+ },
2975
+ {
2976
+ "kind": "bool",
2977
+ "value": false
2978
+ },
2979
+ {
2980
+ "kind": "name",
2981
+ "name": "pointerArmed"
2982
+ }
2983
+ ]
2984
+ }
2985
+ },
2986
+ {
2987
+ "field": "requests",
2988
+ "rhs": {
2989
+ "kind": "name",
2990
+ "name": "requests"
2991
+ }
2992
+ },
2993
+ {
2994
+ "field": "controlled",
2995
+ "rhs": {
2996
+ "kind": "name",
2997
+ "name": "controlled"
2998
+ }
2999
+ },
3000
+ {
3001
+ "field": "accepting",
3002
+ "rhs": {
3003
+ "kind": "name",
3004
+ "name": "accepting"
3005
+ }
3006
+ },
3007
+ {
3008
+ "field": "valueProp",
3009
+ "rhs": {
3010
+ "kind": "name",
3011
+ "name": "valueProp"
3012
+ }
3013
+ },
3014
+ {
3015
+ "field": "requested",
3016
+ "rhs": {
3017
+ "kind": "name",
3018
+ "name": "requested"
3019
+ }
3020
+ },
3021
+ {
3022
+ "field": "outcome",
3023
+ "rhs": {
3024
+ "kind": "name",
3025
+ "name": "outcome"
3026
+ }
3027
+ },
3028
+ {
3029
+ "field": "base",
3030
+ "rhs": {
3031
+ "kind": "name",
3032
+ "name": "base"
3033
+ }
3034
+ }
3035
+ ]
3036
+ },
3037
+ {
3038
+ "name": "set_enter_toggles",
3039
+ "nondet": {
3040
+ "name": "value",
3041
+ "kind": "bool",
3042
+ "pool": [
3043
+ true,
3044
+ false
3045
+ ]
3046
+ },
3047
+ "assignments": [
3048
+ {
3049
+ "field": "focused",
3050
+ "rhs": {
3051
+ "kind": "name",
3052
+ "name": "focused"
3053
+ }
3054
+ },
3055
+ {
3056
+ "field": "disabled",
3057
+ "rhs": {
3058
+ "kind": "name",
3059
+ "name": "disabled"
3060
+ }
3061
+ },
3062
+ {
3063
+ "field": "checked",
3064
+ "rhs": {
3065
+ "kind": "name",
3066
+ "name": "checked"
3067
+ }
3068
+ },
3069
+ {
3070
+ "field": "enterToggles",
3071
+ "rhs": {
3072
+ "kind": "name",
3073
+ "name": "value"
3074
+ }
3075
+ },
3076
+ {
3077
+ "field": "spaceArmed",
3078
+ "rhs": {
3079
+ "kind": "name",
3080
+ "name": "spaceArmed"
3081
+ }
3082
+ },
3083
+ {
3084
+ "field": "pointerArmed",
3085
+ "rhs": {
3086
+ "kind": "name",
3087
+ "name": "pointerArmed"
3088
+ }
3089
+ },
3090
+ {
3091
+ "field": "requests",
3092
+ "rhs": {
3093
+ "kind": "name",
3094
+ "name": "requests"
3095
+ }
3096
+ },
3097
+ {
3098
+ "field": "controlled",
3099
+ "rhs": {
3100
+ "kind": "name",
3101
+ "name": "controlled"
3102
+ }
3103
+ },
3104
+ {
3105
+ "field": "accepting",
3106
+ "rhs": {
3107
+ "kind": "name",
3108
+ "name": "accepting"
3109
+ }
3110
+ },
3111
+ {
3112
+ "field": "valueProp",
3113
+ "rhs": {
3114
+ "kind": "name",
3115
+ "name": "valueProp"
3116
+ }
3117
+ },
3118
+ {
3119
+ "field": "requested",
3120
+ "rhs": {
3121
+ "kind": "name",
3122
+ "name": "requested"
3123
+ }
3124
+ },
3125
+ {
3126
+ "field": "outcome",
3127
+ "rhs": {
3128
+ "kind": "name",
3129
+ "name": "outcome"
3130
+ }
3131
+ },
3132
+ {
3133
+ "field": "base",
3134
+ "rhs": {
3135
+ "kind": "name",
3136
+ "name": "base"
3137
+ }
3138
+ }
3139
+ ]
3140
+ }
3141
+ ],
3142
+ "step": [
3143
+ "init",
3144
+ "focus",
3145
+ "blur",
3146
+ "key_down",
3147
+ "key_up",
3148
+ "pointer_down",
3149
+ "pointer_up",
3150
+ "pointer_cancel",
3151
+ "setValue",
3152
+ "hostToggle",
3153
+ "control",
3154
+ "acceptRequests",
3155
+ "seed",
3156
+ "set_disabled",
3157
+ "set_enter_toggles"
3158
+ ]
3159
+ }