-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.h
427 lines (403 loc) · 63 KB
/
main.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
#ifndef _EMACROARG_H_
#define _EMACROARG_H_
#pragma region macros
// Get nth argument.
// args: args.
#define EMA_GET0(V, ...) V
#define EMA_GET1(_0, V, ...) V
#define EMA_GET2(_0, _1, V, ...) V
#define EMA_GET3(_0, _1, _2, V, ...) V
#define EMA_GET4(_0, _1, _2, _3, V, ...) V
#define EMA_GET5(_0, _1, _2, _3, _4, V, ...) V
#define EMA_GET6(_0, _1, _2, _3, _4, _5, V, ...) V
#define EMA_GET7(_0, _1, _2, _3, _4, _5, _6, V, ...) V
#define EMA_GET8(_0, _1, _2, _3, _4, _5, _6, _7, V, ...) V
#define EMA_GET9(_0, _1, _2, _3, _4, _5, _6, _7, _8, V, ...) V
#define EMA_GET10(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, V, ...) V
#define EMA_GET11(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, V, ...) V
#define EMA_GET12(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, V, ...) V
#define EMA_GET13(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, V, ...) V
#define EMA_GET14(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, V, ...) V
#define EMA_GET15(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, V, ...) V
#define EMA_GET16(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, V, ...) V
#define EMA_GET17(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, V, ...) V
#define EMA_GET18(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, V, ...) V
#define EMA_GET19(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, V, ...) V
#define EMA_GET20(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, V, ...) V
#define EMA_GET21(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, V, ...) V
#define EMA_GET22(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, V, ...) V
#define EMA_GET23(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, V, ...) V
#define EMA_GET24(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, V, ...) V
#define EMA_GET25(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, V, ...) V
#define EMA_GET26(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, V, ...) V
#define EMA_GET27(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, V, ...) V
#define EMA_GET28(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, V, ...) V
#define EMA_GET29(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, V, ...) V
#define EMA_GET30(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, V, ...) V
#define EMA_GET31(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, V, ...) V
#define EMA_GET32(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, V, ...) V
// Count number of arguments.
// args: args.
#define EMA_COUNT(...) EMA_GET0(EMA_GET32(0, ##__VA_ARGS__, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0))
// Get even index arguments.
// args: args.
#define EMA_GETEVEN0(...)
#define EMA_GETEVEN1(_0, ...) _0
#define EMA_GETEVEN2(_0, _1, ...) _0
#define EMA_GETEVEN3(_0, _1, _2, ...) _0, _2
#define EMA_GETEVEN4(_0, _1, _2, _3, ...) _0, _2
#define EMA_GETEVEN5(_0, _1, _2, _3, _4, ...) _0, _2, _4
#define EMA_GETEVEN6(_0, _1, _2, _3, _4, _5, ...) _0, _2, _4
#define EMA_GETEVEN7(_0, _1, _2, _3, _4, _5, _6, ...) _0, _2, _4, _6
#define EMA_GETEVEN8(_0, _1, _2, _3, _4, _5, _6, _7, ...) _0, _2, _4, _6
#define EMA_GETEVEN9(_0, _1, _2, _3, _4, _5, _6, _7, _8, ...) _0, _2, _4, _6, _8
#define EMA_GETEVEN10(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, ...) _0, _2, _4, _6, _8
#define EMA_GETEVEN11(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, ...) _0, _2, _4, _6, _8, _10
#define EMA_GETEVEN12(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, ...) _0, _2, _4, _6, _8, _10
#define EMA_GETEVEN13(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, ...) _0, _2, _4, _6, _8, _10, _12
#define EMA_GETEVEN14(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, ...) _0, _2, _4, _6, _8, _10, _12
#define EMA_GETEVEN15(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, ...) _0, _2, _4, _6, _8, _10, _12, _14
#define EMA_GETEVEN16(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, ...) _0, _2, _4, _6, _8, _10, _12, _14
#define EMA_GETEVEN17(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, ...) _0, _2, _4, _6, _8, _10, _12, _14, _16
#define EMA_GETEVEN18(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, ...) _0, _2, _4, _6, _8, _10, _12, _14, _16
#define EMA_GETEVEN19(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, ...) _0, _2, _4, _6, _8, _10, _12, _14, _16, _18
#define EMA_GETEVEN20(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, ...) _0, _2, _4, _6, _8, _10, _12, _14, _16, _18
#define EMA_GETEVEN21(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, ...) _0, _2, _4, _6, _8, _10, _12, _14, _16, _18, _20
#define EMA_GETEVEN22(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, ...) _0, _2, _4, _6, _8, _10, _12, _14, _16, _18, _20
#define EMA_GETEVEN23(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, ...) _0, _2, _4, _6, _8, _10, _12, _14, _16, _18, _20, _22
#define EMA_GETEVEN24(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, ...) _0, _2, _4, _6, _8, _10, _12, _14, _16, _18, _20, _22
#define EMA_GETEVEN25(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, ...) _0, _2, _4, _6, _8, _10, _12, _14, _16, _18, _20, _22, _24
#define EMA_GETEVEN26(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, ...) _0, _2, _4, _6, _8, _10, _12, _14, _16, _18, _20, _22, _24
#define EMA_GETEVEN27(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, ...) _0, _2, _4, _6, _8, _10, _12, _14, _16, _18, _20, _22, _24, _26
#define EMA_GETEVEN28(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, ...) _0, _2, _4, _6, _8, _10, _12, _14, _16, _18, _20, _22, _24, _26
#define EMA_GETEVEN29(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, ...) _0, _2, _4, _6, _8, _10, _12, _14, _16, _18, _20, _22, _24, _26, _28
#define EMA_GETEVEN30(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, ...) _0, _2, _4, _6, _8, _10, _12, _14, _16, _18, _20, _22, _24, _26, _28
#define EMA_GETEVEN31(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, ...) _0, _2, _4, _6, _8, _10, _12, _14, _16, _18, _20, _22, _24, _26, _28, _30
#define EMA_GETEVEN(...) EMA_GET0(EMA_GET32(0, ##__VA_ARGS__, EMA_GETEVEN31, EMA_GETEVEN30, EMA_GETEVEN29, EMA_GETEVEN28, EMA_GETEVEN27, EMA_GETEVEN26, EMA_GETEVEN25, EMA_GETEVEN24, EMA_GETEVEN23, EMA_GETEVEN22, EMA_GETEVEN21, EMA_GETEVEN20, EMA_GETEVEN19, EMA_GETEVEN18, \
EMA_GETEVEN17, EMA_GETEVEN16, EMA_GETEVEN15, EMA_GETEVEN14, EMA_GETEVEN13, EMA_GETEVEN12, EMA_GETEVEN11, EMA_GETEVEN10, EMA_GETEVEN9, EMA_GETEVEN8, EMA_GETEVEN7, EMA_GETEVEN6, EMA_GETEVEN5, EMA_GETEVEN4, EMA_GETEVEN3, EMA_GETEVEN2, EMA_GETEVEN1, EMA_GETEVEN0)(__VA_ARGS__))
// Get odd index arguments.
// args: args.
#define EMA_GETODD0(...)
#define EMA_GETODD1(_0, ...)
#define EMA_GETODD2(_0, _1, ...) _1
#define EMA_GETODD3(_0, _1, _2, ...) _1
#define EMA_GETODD4(_0, _1, _2, _3, ...) _1, _3
#define EMA_GETODD5(_0, _1, _2, _3, _4, ...) _1, _3
#define EMA_GETODD6(_0, _1, _2, _3, _4, _5, ...) _1, _3, _5
#define EMA_GETODD7(_0, _1, _2, _3, _4, _5, _6, ...) _1, _3, _5
#define EMA_GETODD8(_0, _1, _2, _3, _4, _5, _6, _7, ...) _1, _3, _5, _7
#define EMA_GETODD9(_0, _1, _2, _3, _4, _5, _6, _7, _8, ...) _1, _3, _5, _7
#define EMA_GETODD10(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, ...) _1, _3, _5, _7, _9
#define EMA_GETODD11(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, ...) _1, _3, _5, _7, _9
#define EMA_GETODD12(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, ...) _1, _3, _5, _7, _9, _11
#define EMA_GETODD13(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, ...) _1, _3, _5, _7, _9, _11
#define EMA_GETODD14(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, ...) _1, _3, _5, _7, _9, _11, _13
#define EMA_GETODD15(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, ...) _1, _3, _5, _7, _9, _11, _13
#define EMA_GETODD16(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, ...) _1, _3, _5, _7, _9, _11, _13, _15
#define EMA_GETODD17(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, ...) _1, _3, _5, _7, _9, _11, _13, _15
#define EMA_GETODD18(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, ...) _1, _3, _5, _7, _9, _11, _13, _15, _17
#define EMA_GETODD19(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, ...) _1, _3, _5, _7, _9, _11, _13, _15, _17
#define EMA_GETODD20(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, ...) _1, _3, _5, _7, _9, _11, _13, _15, _17, _19
#define EMA_GETODD21(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, ...) _1, _3, _5, _7, _9, _11, _13, _15, _17, _19
#define EMA_GETODD22(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, ...) _1, _3, _5, _7, _9, _11, _13, _15, _17, _19, _21
#define EMA_GETODD23(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, ...) _1, _3, _5, _7, _9, _11, _13, _15, _17, _19, _21
#define EMA_GETODD24(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, ...) _1, _3, _5, _7, _9, _11, _13, _15, _17, _19, _21, _23
#define EMA_GETODD25(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, ...) _1, _3, _5, _7, _9, _11, _13, _15, _17, _19, _21, _23
#define EMA_GETODD26(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, ...) _1, _3, _5, _7, _9, _11, _13, _15, _17, _19, _21, _23, _25
#define EMA_GETODD27(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, ...) _1, _3, _5, _7, _9, _11, _13, _15, _17, _19, _21, _23, _25
#define EMA_GETODD28(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, ...) _1, _3, _5, _7, _9, _11, _13, _15, _17, _19, _21, _23, _25, _27
#define EMA_GETODD29(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, ...) _1, _3, _5, _7, _9, _11, _13, _15, _17, _19, _21, _23, _25, _27
#define EMA_GETODD30(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, ...) _1, _3, _5, _7, _9, _11, _13, _15, _17, _19, _21, _23, _25, _27, _29
#define EMA_GETODD31(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, ...) _1, _3, _5, _7, _9, _11, _13, _15, _17, _19, _21, _23, _25, _27, _29
#define EMA_GETODD(...) EMA_GET0(EMA_GET32(0, ##__VA_ARGS__, EMA_GETODD31, EMA_GETODD30, EMA_GETODD29, EMA_GETODD28, EMA_GETODD27, EMA_GETODD26, EMA_GETODD25, EMA_GETODD24, EMA_GETODD23, EMA_GETODD22, EMA_GETODD21, EMA_GETODD20, EMA_GETODD19, EMA_GETODD18, \
EMA_GETODD17, EMA_GETODD16, EMA_GETODD15, EMA_GETODD14, EMA_GETODD13, EMA_GETODD12, EMA_GETODD11, EMA_GETODD10, EMA_GETODD9, EMA_GETODD8, EMA_GETODD7, EMA_GETODD6, EMA_GETODD5, EMA_GETODD4, EMA_GETODD3, EMA_GETODD2, EMA_GETODD1, EMA_GETODD0)(__VA_ARGS__))
// Prefix all arguments with a value.
// args: value, args.
#define EMA_PREFIX0(V, ...)
#define EMA_PREFIX1(V, _0, ...) V##_0
#define EMA_PREFIX2(V, _0, _1, ...) V##_0, V##_1
#define EMA_PREFIX3(V, _0, _1, _2, ...) V##_0, V##_1, V##_2
#define EMA_PREFIX4(V, _0, _1, _2, _3, ...) V##_0, V##_1, V##_2, V##_3
#define EMA_PREFIX5(V, _0, _1, _2, _3, _4, ...) V##_0, V##_1, V##_2, V##_3, V##_4
#define EMA_PREFIX6(V, _0, _1, _2, _3, _4, _5, ...) V##_0, V##_1, V##_2, V##_3, V##_4, V##_5
#define EMA_PREFIX7(V, _0, _1, _2, _3, _4, _5, _6, ...) V##_0, V##_1, V##_2, V##_3, V##_4, V##_5, V##_6
#define EMA_PREFIX8(V, _0, _1, _2, _3, _4, _5, _6, _7, ...) V##_0, V##_1, V##_2, V##_3, V##_4, V##_5, V##_6, V##_7
#define EMA_PREFIX9(V, _0, _1, _2, _3, _4, _5, _6, _7, _8, ...) V##_0, V##_1, V##_2, V##_3, V##_4, V##_5, V##_6, V##_7, V##_8
#define EMA_PREFIX10(V, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, ...) V##_0, V##_1, V##_2, V##_3, V##_4, V##_5, V##_6, V##_7, V##_8, V##_9
#define EMA_PREFIX11(V, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, ...) V##_0, V##_1, V##_2, V##_3, V##_4, V##_5, V##_6, V##_7, V##_8, V##_9, V##_10
#define EMA_PREFIX12(V, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, ...) V##_0, V##_1, V##_2, V##_3, V##_4, V##_5, V##_6, V##_7, V##_8, V##_9, V##_10, V##_11
#define EMA_PREFIX13(V, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, ...) V##_0, V##_1, V##_2, V##_3, V##_4, V##_5, V##_6, V##_7, V##_8, V##_9, V##_10, V##_11, V##_12
#define EMA_PREFIX14(V, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, ...) V##_0, V##_1, V##_2, V##_3, V##_4, V##_5, V##_6, V##_7, V##_8, V##_9, V##_10, V##_11, V##_12, V##_13
#define EMA_PREFIX15(V, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, ...) V##_0, V##_1, V##_2, V##_3, V##_4, V##_5, V##_6, V##_7, V##_8, V##_9, V##_10, V##_11, V##_12, V##_13, V##_14
#define EMA_PREFIX16(V, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, ...) V##_0, V##_1, V##_2, V##_3, V##_4, V##_5, V##_6, V##_7, V##_8, V##_9, V##_10, V##_11, V##_12, V##_13, V##_14, V##_15
#define EMA_PREFIX17(V, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, ...) V##_0, V##_1, V##_2, V##_3, V##_4, V##_5, V##_6, V##_7, V##_8, V##_9, V##_10, V##_11, V##_12, V##_13, V##_14, V##_15, V##_16
#define EMA_PREFIX18(V, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, ...) V##_0, V##_1, V##_2, V##_3, V##_4, V##_5, V##_6, V##_7, V##_8, V##_9, V##_10, V##_11, V##_12, V##_13, V##_14, V##_15, V##_16, V##_17
#define EMA_PREFIX19(V, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, ...) V##_0, V##_1, V##_2, V##_3, V##_4, V##_5, V##_6, V##_7, V##_8, V##_9, V##_10, V##_11, V##_12, V##_13, V##_14, V##_15, V##_16, V##_17, V##_18
#define EMA_PREFIX20(V, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, ...) V##_0, V##_1, V##_2, V##_3, V##_4, V##_5, V##_6, V##_7, V##_8, V##_9, V##_10, V##_11, V##_12, V##_13, V##_14, V##_15, V##_16, V##_17, V##_18, V##_19
#define EMA_PREFIX21(V, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, ...) V##_0, V##_1, V##_2, V##_3, V##_4, V##_5, V##_6, V##_7, V##_8, V##_9, V##_10, V##_11, V##_12, V##_13, V##_14, V##_15, V##_16, V##_17, V##_18, V##_19, V##_20
#define EMA_PREFIX22(V, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, ...) V##_0, V##_1, V##_2, V##_3, V##_4, V##_5, V##_6, V##_7, V##_8, V##_9, V##_10, V##_11, V##_12, V##_13, V##_14, V##_15, V##_16, V##_17, V##_18, V##_19, V##_20, V##_21
#define EMA_PREFIX23(V, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, ...) V##_0, V##_1, V##_2, V##_3, V##_4, V##_5, V##_6, V##_7, V##_8, V##_9, V##_10, V##_11, V##_12, V##_13, V##_14, V##_15, V##_16, V##_17, V##_18, V##_19, V##_20, V##_21, V##_22
#define EMA_PREFIX24(V, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, ...) V##_0, V##_1, V##_2, V##_3, V##_4, V##_5, V##_6, V##_7, V##_8, V##_9, V##_10, V##_11, V##_12, V##_13, V##_14, V##_15, V##_16, V##_17, V##_18, V##_19, V##_20, V##_21, V##_22, V##_23
#define EMA_PREFIX25(V, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, ...) V##_0, V##_1, V##_2, V##_3, V##_4, V##_5, V##_6, V##_7, V##_8, V##_9, V##_10, V##_11, V##_12, V##_13, V##_14, V##_15, V##_16, V##_17, V##_18, V##_19, V##_20, V##_21, V##_22, V##_23, V##_24
#define EMA_PREFIX26(V, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, ...) V##_0, V##_1, V##_2, V##_3, V##_4, V##_5, V##_6, V##_7, V##_8, V##_9, V##_10, V##_11, V##_12, V##_13, V##_14, V##_15, V##_16, V##_17, V##_18, V##_19, V##_20, V##_21, V##_22, V##_23, V##_24, V##_25
#define EMA_PREFIX27(V, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, ...) V##_0, V##_1, V##_2, V##_3, V##_4, V##_5, V##_6, V##_7, V##_8, V##_9, V##_10, V##_11, V##_12, V##_13, V##_14, V##_15, V##_16, V##_17, V##_18, V##_19, V##_20, V##_21, V##_22, V##_23, V##_24, V##_25, V##_26
#define EMA_PREFIX28(V, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, ...) V##_0, V##_1, V##_2, V##_3, V##_4, V##_5, V##_6, V##_7, V##_8, V##_9, V##_10, V##_11, V##_12, V##_13, V##_14, V##_15, V##_16, V##_17, V##_18, V##_19, V##_20, V##_21, V##_22, V##_23, V##_24, V##_25, V##_26, V##_27
#define EMA_PREFIX29(V, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, ...) V##_0, V##_1, V##_2, V##_3, V##_4, V##_5, V##_6, V##_7, V##_8, V##_9, V##_10, V##_11, V##_12, V##_13, V##_14, V##_15, V##_16, V##_17, V##_18, V##_19, V##_20, V##_21, V##_22, V##_23, V##_24, V##_25, V##_26, V##_27, V##_28
#define EMA_PREFIX30(V, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, ...) V##_0, V##_1, V##_2, V##_3, V##_4, V##_5, V##_6, V##_7, V##_8, V##_9, V##_10, V##_11, V##_12, V##_13, V##_14, V##_15, V##_16, V##_17, V##_18, V##_19, V##_20, V##_21, V##_22, V##_23, V##_24, V##_25, V##_26, V##_27, V##_28, V##_29
#define EMA_PREFIX31(V, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, ...) V##_0, V##_1, V##_2, V##_3, V##_4, V##_5, V##_6, V##_7, V##_8, V##_9, V##_10, V##_11, V##_12, V##_13, V##_14, V##_15, V##_16, V##_17, V##_18, V##_19, V##_20, V##_21, V##_22, V##_23, V##_24, V##_25, V##_26, V##_27, V##_28, V##_29, V##_30
#define EMA_PREFIX(V, ...) EMA_GET0(EMA_GET32(0, ##__VA_ARGS__, EMA_PREFIX31, EMA_PREFIX30, EMA_PREFIX29, EMA_PREFIX28, EMA_PREFIX27, EMA_PREFIX26, EMA_PREFIX25, EMA_PREFIX24, EMA_PREFIX23, EMA_PREFIX22, EMA_PREFIX21, EMA_PREFIX20, EMA_PREFIX19, EMA_PREFIX18, \
EMA_PREFIX17, EMA_PREFIX16, EMA_PREFIX15, EMA_PREFIX14, EMA_PREFIX13, EMA_PREFIX12, EMA_PREFIX11, EMA_PREFIX10, EMA_PREFIX9, EMA_PREFIX8, EMA_PREFIX7, EMA_PREFIX6, EMA_PREFIX5, EMA_PREFIX4, EMA_PREFIX3, EMA_PREFIX2, EMA_PREFIX1, EMA_PREFIX0)(V, __VA_ARGS__))
// Postfix all arguments with a value.
// args: value, args.
#define EMA_POSTFIX0(V, ...)
#define EMA_POSTFIX1(V, _0, ...) _0##V
#define EMA_POSTFIX2(V, _0, _1, ...) _0##V, _1##V
#define EMA_POSTFIX3(V, _0, _1, _2, ...) _0##V, _1##V, _2##V
#define EMA_POSTFIX4(V, _0, _1, _2, _3, ...) _0##V, _1##V, _2##V, _3##V
#define EMA_POSTFIX5(V, _0, _1, _2, _3, _4, ...) _0##V, _1##V, _2##V, _3##V, _4##V
#define EMA_POSTFIX6(V, _0, _1, _2, _3, _4, _5, ...) _0##V, _1##V, _2##V, _3##V, _4##V, _5##V
#define EMA_POSTFIX7(V, _0, _1, _2, _3, _4, _5, _6, ...) _0##V, _1##V, _2##V, _3##V, _4##V, _5##V, _6##V
#define EMA_POSTFIX8(V, _0, _1, _2, _3, _4, _5, _6, _7, ...) _0##V, _1##V, _2##V, _3##V, _4##V, _5##V, _6##V, _7##V
#define EMA_POSTFIX9(V, _0, _1, _2, _3, _4, _5, _6, _7, _8, ...) _0##V, _1##V, _2##V, _3##V, _4##V, _5##V, _6##V, _7##V, _8##V
#define EMA_POSTFIX10(V, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, ...) _0##V, _1##V, _2##V, _3##V, _4##V, _5##V, _6##V, _7##V, _8##V, _9##V
#define EMA_POSTFIX11(V, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, ...) _0##V, _1##V, _2##V, _3##V, _4##V, _5##V, _6##V, _7##V, _8##V, _9##V, _10##V
#define EMA_POSTFIX12(V, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, ...) _0##V, _1##V, _2##V, _3##V, _4##V, _5##V, _6##V, _7##V, _8##V, _9##V, _10##V, _11##V
#define EMA_POSTFIX13(V, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, ...) _0##V, _1##V, _2##V, _3##V, _4##V, _5##V, _6##V, _7##V, _8##V, _9##V, _10##V, _11##V, _12##V
#define EMA_POSTFIX14(V, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, ...) _0##V, _1##V, _2##V, _3##V, _4##V, _5##V, _6##V, _7##V, _8##V, _9##V, _10##V, _11##V, _12##V, _13##V
#define EMA_POSTFIX15(V, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, ...) _0##V, _1##V, _2##V, _3##V, _4##V, _5##V, _6##V, _7##V, _8##V, _9##V, _10##V, _11##V, _12##V, _13##V, _14##V
#define EMA_POSTFIX16(V, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, ...) _0##V, _1##V, _2##V, _3##V, _4##V, _5##V, _6##V, _7##V, _8##V, _9##V, _10##V, _11##V, _12##V, _13##V, _14##V, _15##V
#define EMA_POSTFIX17(V, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, ...) _0##V, _1##V, _2##V, _3##V, _4##V, _5##V, _6##V, _7##V, _8##V, _9##V, _10##V, _11##V, _12##V, _13##V, _14##V, _15##V, _16##V
#define EMA_POSTFIX18(V, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, ...) _0##V, _1##V, _2##V, _3##V, _4##V, _5##V, _6##V, _7##V, _8##V, _9##V, _10##V, _11##V, _12##V, _13##V, _14##V, _15##V, _16##V, _17##V
#define EMA_POSTFIX19(V, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, ...) _0##V, _1##V, _2##V, _3##V, _4##V, _5##V, _6##V, _7##V, _8##V, _9##V, _10##V, _11##V, _12##V, _13##V, _14##V, _15##V, _16##V, _17##V, _18##V
#define EMA_POSTFIX20(V, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, ...) _0##V, _1##V, _2##V, _3##V, _4##V, _5##V, _6##V, _7##V, _8##V, _9##V, _10##V, _11##V, _12##V, _13##V, _14##V, _15##V, _16##V, _17##V, _18##V, _19##V
#define EMA_POSTFIX21(V, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, ...) _0##V, _1##V, _2##V, _3##V, _4##V, _5##V, _6##V, _7##V, _8##V, _9##V, _10##V, _11##V, _12##V, _13##V, _14##V, _15##V, _16##V, _17##V, _18##V, _19##V, _20##V
#define EMA_POSTFIX22(V, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, ...) _0##V, _1##V, _2##V, _3##V, _4##V, _5##V, _6##V, _7##V, _8##V, _9##V, _10##V, _11##V, _12##V, _13##V, _14##V, _15##V, _16##V, _17##V, _18##V, _19##V, _20##V, _21##V
#define EMA_POSTFIX23(V, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, ...) _0##V, _1##V, _2##V, _3##V, _4##V, _5##V, _6##V, _7##V, _8##V, _9##V, _10##V, _11##V, _12##V, _13##V, _14##V, _15##V, _16##V, _17##V, _18##V, _19##V, _20##V, _21##V, _22##V
#define EMA_POSTFIX24(V, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, ...) _0##V, _1##V, _2##V, _3##V, _4##V, _5##V, _6##V, _7##V, _8##V, _9##V, _10##V, _11##V, _12##V, _13##V, _14##V, _15##V, _16##V, _17##V, _18##V, _19##V, _20##V, _21##V, _22##V, _23##V
#define EMA_POSTFIX25(V, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, ...) _0##V, _1##V, _2##V, _3##V, _4##V, _5##V, _6##V, _7##V, _8##V, _9##V, _10##V, _11##V, _12##V, _13##V, _14##V, _15##V, _16##V, _17##V, _18##V, _19##V, _20##V, _21##V, _22##V, _23##V, _24##V
#define EMA_POSTFIX26(V, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, ...) _0##V, _1##V, _2##V, _3##V, _4##V, _5##V, _6##V, _7##V, _8##V, _9##V, _10##V, _11##V, _12##V, _13##V, _14##V, _15##V, _16##V, _17##V, _18##V, _19##V, _20##V, _21##V, _22##V, _23##V, _24##V, _25##V
#define EMA_POSTFIX27(V, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, ...) _0##V, _1##V, _2##V, _3##V, _4##V, _5##V, _6##V, _7##V, _8##V, _9##V, _10##V, _11##V, _12##V, _13##V, _14##V, _15##V, _16##V, _17##V, _18##V, _19##V, _20##V, _21##V, _22##V, _23##V, _24##V, _25##V, _26##V
#define EMA_POSTFIX28(V, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, ...) _0##V, _1##V, _2##V, _3##V, _4##V, _5##V, _6##V, _7##V, _8##V, _9##V, _10##V, _11##V, _12##V, _13##V, _14##V, _15##V, _16##V, _17##V, _18##V, _19##V, _20##V, _21##V, _22##V, _23##V, _24##V, _25##V, _26##V, _27##V
#define EMA_POSTFIX29(V, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, ...) _0##V, _1##V, _2##V, _3##V, _4##V, _5##V, _6##V, _7##V, _8##V, _9##V, _10##V, _11##V, _12##V, _13##V, _14##V, _15##V, _16##V, _17##V, _18##V, _19##V, _20##V, _21##V, _22##V, _23##V, _24##V, _25##V, _26##V, _27##V, _28##V
#define EMA_POSTFIX30(V, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, ...) _0##V, _1##V, _2##V, _3##V, _4##V, _5##V, _6##V, _7##V, _8##V, _9##V, _10##V, _11##V, _12##V, _13##V, _14##V, _15##V, _16##V, _17##V, _18##V, _19##V, _20##V, _21##V, _22##V, _23##V, _24##V, _25##V, _26##V, _27##V, _28##V, _29##V
#define EMA_POSTFIX31(V, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, ...) _0##V, _1##V, _2##V, _3##V, _4##V, _5##V, _6##V, _7##V, _8##V, _9##V, _10##V, _11##V, _12##V, _13##V, _14##V, _15##V, _16##V, _17##V, _18##V, _19##V, _20##V, _21##V, _22##V, _23##V, _24##V, _25##V, _26##V, _27##V, _28##V, _29##V, _30##V
#define EMA_POSTFIX(V, ...) EMA_GET0(EMA_GET32(0, ##__VA_ARGS__, EMA_POSTFIX31, EMA_POSTFIX30, EMA_POSTFIX29, EMA_POSTFIX28, EMA_POSTFIX27, EMA_POSTFIX26, EMA_POSTFIX25, EMA_POSTFIX24, EMA_POSTFIX23, EMA_POSTFIX22, EMA_POSTFIX21, EMA_POSTFIX20, EMA_POSTFIX19, EMA_POSTFIX18, \
EMA_POSTFIX17, EMA_POSTFIX16, EMA_POSTFIX15, EMA_POSTFIX14, EMA_POSTFIX13, EMA_POSTFIX12, EMA_POSTFIX11, EMA_POSTFIX10, EMA_POSTFIX9, EMA_POSTFIX8, EMA_POSTFIX7, EMA_POSTFIX6, EMA_POSTFIX5, EMA_POSTFIX4, EMA_POSTFIX3, EMA_POSTFIX2, EMA_POSTFIX1, EMA_POSTFIX0)(V, __VA_ARGS__))
// Merge all arguments.
// args: args.
#define EMA_MERGE0(...)
#define EMA_MERGE1(_0, ...) _0
#define EMA_MERGE2(_0, _1, ...) _0##_1
#define EMA_MERGE3(_0, _1, _2, ...) _0##_1##_2
#define EMA_MERGE4(_0, _1, _2, _3, ...) _0##_1##_2##_3
#define EMA_MERGE5(_0, _1, _2, _3, _4, ...) _0##_1##_2##_3##_4
#define EMA_MERGE6(_0, _1, _2, _3, _4, _5, ...) _0##_1##_2##_3##_4##_5
#define EMA_MERGE7(_0, _1, _2, _3, _4, _5, _6, ...) _0##_1##_2##_3##_4##_5##_6
#define EMA_MERGE8(_0, _1, _2, _3, _4, _5, _6, _7, ...) _0##_1##_2##_3##_4##_5##_6##_7
#define EMA_MERGE9(_0, _1, _2, _3, _4, _5, _6, _7, _8, ...) _0##_1##_2##_3##_4##_5##_6##_7##_8
#define EMA_MERGE10(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, ...) _0##_1##_2##_3##_4##_5##_6##_7##_8##_9
#define EMA_MERGE11(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, ...) _0##_1##_2##_3##_4##_5##_6##_7##_8##_9##_10
#define EMA_MERGE12(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, ...) _0##_1##_2##_3##_4##_5##_6##_7##_8##_9##_10##_11
#define EMA_MERGE13(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, ...) _0##_1##_2##_3##_4##_5##_6##_7##_8##_9##_10##_11##_12
#define EMA_MERGE14(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, ...) _0##_1##_2##_3##_4##_5##_6##_7##_8##_9##_10##_11##_12##_13
#define EMA_MERGE15(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, ...) _0##_1##_2##_3##_4##_5##_6##_7##_8##_9##_10##_11##_12##_13##_14
#define EMA_MERGE16(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, ...) _0##_1##_2##_3##_4##_5##_6##_7##_8##_9##_10##_11##_12##_13##_14##_15
#define EMA_MERGE17(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, ...) _0##_1##_2##_3##_4##_5##_6##_7##_8##_9##_10##_11##_12##_13##_14##_15##_16
#define EMA_MERGE18(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, ...) _0##_1##_2##_3##_4##_5##_6##_7##_8##_9##_10##_11##_12##_13##_14##_15##_16##_17
#define EMA_MERGE19(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, ...) _0##_1##_2##_3##_4##_5##_6##_7##_8##_9##_10##_11##_12##_13##_14##_15##_16##_17##_18
#define EMA_MERGE20(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, ...) _0##_1##_2##_3##_4##_5##_6##_7##_8##_9##_10##_11##_12##_13##_14##_15##_16##_17##_18##_19
#define EMA_MERGE21(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, ...) _0##_1##_2##_3##_4##_5##_6##_7##_8##_9##_10##_11##_12##_13##_14##_15##_16##_17##_18##_19##_20
#define EMA_MERGE22(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, ...) _0##_1##_2##_3##_4##_5##_6##_7##_8##_9##_10##_11##_12##_13##_14##_15##_16##_17##_18##_19##_20##_21
#define EMA_MERGE23(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, ...) _0##_1##_2##_3##_4##_5##_6##_7##_8##_9##_10##_11##_12##_13##_14##_15##_16##_17##_18##_19##_20##_21##_22
#define EMA_MERGE24(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, ...) _0##_1##_2##_3##_4##_5##_6##_7##_8##_9##_10##_11##_12##_13##_14##_15##_16##_17##_18##_19##_20##_21##_22##_23
#define EMA_MERGE25(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, ...) _0##_1##_2##_3##_4##_5##_6##_7##_8##_9##_10##_11##_12##_13##_14##_15##_16##_17##_18##_19##_20##_21##_22##_23##_24
#define EMA_MERGE26(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, ...) _0##_1##_2##_3##_4##_5##_6##_7##_8##_9##_10##_11##_12##_13##_14##_15##_16##_17##_18##_19##_20##_21##_22##_23##_24##_25
#define EMA_MERGE27(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, ...) _0##_1##_2##_3##_4##_5##_6##_7##_8##_9##_10##_11##_12##_13##_14##_15##_16##_17##_18##_19##_20##_21##_22##_23##_24##_25##_26
#define EMA_MERGE28(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, ...) _0##_1##_2##_3##_4##_5##_6##_7##_8##_9##_10##_11##_12##_13##_14##_15##_16##_17##_18##_19##_20##_21##_22##_23##_24##_25##_26##_27
#define EMA_MERGE29(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, ...) _0##_1##_2##_3##_4##_5##_6##_7##_8##_9##_10##_11##_12##_13##_14##_15##_16##_17##_18##_19##_20##_21##_22##_23##_24##_25##_26##_27##_28
#define EMA_MERGE30(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, ...) _0##_1##_2##_3##_4##_5##_6##_7##_8##_9##_10##_11##_12##_13##_14##_15##_16##_17##_18##_19##_20##_21##_22##_23##_24##_25##_26##_27##_28##_29
#define EMA_MERGE31(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, ...) _0##_1##_2##_3##_4##_5##_6##_7##_8##_9##_10##_11##_12##_13##_14##_15##_16##_17##_18##_19##_20##_21##_22##_23##_24##_25##_26##_27##_28##_29##_30
#define EMA_MERGE(...) EMA_GET0(EMA_GET32(0, ##__VA_ARGS__, EMA_MERGE31, EMA_MERGE30, EMA_MERGE29, EMA_MERGE28, EMA_MERGE27, EMA_MERGE26, EMA_MERGE25, EMA_MERGE24, EMA_MERGE23, EMA_MERGE22, EMA_MERGE21, EMA_MERGE20, EMA_MERGE19, EMA_MERGE18, \
EMA_MERGE17, EMA_MERGE16, EMA_MERGE15, EMA_MERGE14, EMA_MERGE13, EMA_MERGE12, EMA_MERGE11, EMA_MERGE10, EMA_MERGE9, EMA_MERGE8, EMA_MERGE7, EMA_MERGE6, EMA_MERGE5, EMA_MERGE4, EMA_MERGE3, EMA_MERGE2, EMA_MERGE1, EMA_MERGE0)(__VA_ARGS__))
// Merge all arguments pairs.
// args: args.
#define EMA_MERGEPAIR0(...)
#define EMA_MERGEPAIR1(_0, ...) _0
#define EMA_MERGEPAIR2(_0, _1, ...) _0##_1
#define EMA_MERGEPAIR3(_0, _1, _2, ...) _0##_1, _2
#define EMA_MERGEPAIR4(_0, _1, _2, _3, ...) _0##_1, _2##_3
#define EMA_MERGEPAIR5(_0, _1, _2, _3, _4, ...) _0##_1, _2##_3, _4
#define EMA_MERGEPAIR6(_0, _1, _2, _3, _4, _5, ...) _0##_1, _2##_3, _4##_5
#define EMA_MERGEPAIR7(_0, _1, _2, _3, _4, _5, _6, ...) _0##_1, _2##_3, _4##_5, _6
#define EMA_MERGEPAIR8(_0, _1, _2, _3, _4, _5, _6, _7, ...) _0##_1, _2##_3, _4##_5, _6##_7
#define EMA_MERGEPAIR9(_0, _1, _2, _3, _4, _5, _6, _7, _8, ...) _0##_1, _2##_3, _4##_5, _6##_7, _8
#define EMA_MERGEPAIR10(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, ...) _0##_1, _2##_3, _4##_5, _6##_7, _8##_9
#define EMA_MERGEPAIR11(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, ...) _0##_1, _2##_3, _4##_5, _6##_7, _8##_9, _10
#define EMA_MERGEPAIR12(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, ...) _0##_1, _2##_3, _4##_5, _6##_7, _8##_9, _10##_11
#define EMA_MERGEPAIR13(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, ...) _0##_1, _2##_3, _4##_5, _6##_7, _8##_9, _10##_11, _12
#define EMA_MERGEPAIR14(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, ...) _0##_1, _2##_3, _4##_5, _6##_7, _8##_9, _10##_11, _12##_13
#define EMA_MERGEPAIR15(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, ...) _0##_1, _2##_3, _4##_5, _6##_7, _8##_9, _10##_11, _12##_13, _14
#define EMA_MERGEPAIR16(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, ...) _0##_1, _2##_3, _4##_5, _6##_7, _8##_9, _10##_11, _12##_13, _14##_15
#define EMA_MERGEPAIR17(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, ...) _0##_1, _2##_3, _4##_5, _6##_7, _8##_9, _10##_11, _12##_13, _14##_15, _16
#define EMA_MERGEPAIR18(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, ...) _0##_1, _2##_3, _4##_5, _6##_7, _8##_9, _10##_11, _12##_13, _14##_15, _16##_17
#define EMA_MERGEPAIR19(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, ...) _0##_1, _2##_3, _4##_5, _6##_7, _8##_9, _10##_11, _12##_13, _14##_15, _16##_17, _18
#define EMA_MERGEPAIR20(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, ...) _0##_1, _2##_3, _4##_5, _6##_7, _8##_9, _10##_11, _12##_13, _14##_15, _16##_17, _18##_19
#define EMA_MERGEPAIR21(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, ...) _0##_1, _2##_3, _4##_5, _6##_7, _8##_9, _10##_11, _12##_13, _14##_15, _16##_17, _18##_19, _20
#define EMA_MERGEPAIR22(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, ...) _0##_1, _2##_3, _4##_5, _6##_7, _8##_9, _10##_11, _12##_13, _14##_15, _16##_17, _18##_19, _20##_21
#define EMA_MERGEPAIR23(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, ...) _0##_1, _2##_3, _4##_5, _6##_7, _8##_9, _10##_11, _12##_13, _14##_15, _16##_17, _18##_19, _20##_21, _22
#define EMA_MERGEPAIR24(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, ...) _0##_1, _2##_3, _4##_5, _6##_7, _8##_9, _10##_11, _12##_13, _14##_15, _16##_17, _18##_19, _20##_21, _22##_23
#define EMA_MERGEPAIR25(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, ...) _0##_1, _2##_3, _4##_5, _6##_7, _8##_9, _10##_11, _12##_13, _14##_15, _16##_17, _18##_19, _20##_21, _22##_23, _24
#define EMA_MERGEPAIR26(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, ...) _0##_1, _2##_3, _4##_5, _6##_7, _8##_9, _10##_11, _12##_13, _14##_15, _16##_17, _18##_19, _20##_21, _22##_23, _24##_25
#define EMA_MERGEPAIR27(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, ...) _0##_1, _2##_3, _4##_5, _6##_7, _8##_9, _10##_11, _12##_13, _14##_15, _16##_17, _18##_19, _20##_21, _22##_23, _24##_25, _26
#define EMA_MERGEPAIR28(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, ...) _0##_1, _2##_3, _4##_5, _6##_7, _8##_9, _10##_11, _12##_13, _14##_15, _16##_17, _18##_19, _20##_21, _22##_23, _24##_25, _26##_27
#define EMA_MERGEPAIR29(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, ...) _0##_1, _2##_3, _4##_5, _6##_7, _8##_9, _10##_11, _12##_13, _14##_15, _16##_17, _18##_19, _20##_21, _22##_23, _24##_25, _26##_27, _28
#define EMA_MERGEPAIR30(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, ...) _0##_1, _2##_3, _4##_5, _6##_7, _8##_9, _10##_11, _12##_13, _14##_15, _16##_17, _18##_19, _20##_21, _22##_23, _24##_25, _26##_27, _28##_29
#define EMA_MERGEPAIR31(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, ...) _0##_1, _2##_3, _4##_5, _6##_7, _8##_9, _10##_11, _12##_13, _14##_15, _16##_17, _18##_19, _20##_21, _22##_23, _24##_25, _26##_27, _28##_29, _30
#define EMA_MERGEPAIR(...) EMA_GET0(EMA_GET32(0, ##__VA_ARGS__, EMA_MERGEPAIR31, EMA_MERGEPAIR30, EMA_MERGEPAIR29, EMA_MERGEPAIR28, EMA_MERGEPAIR27, EMA_MERGEPAIR26, EMA_MERGEPAIR25, EMA_MERGEPAIR24, EMA_MERGEPAIR23, EMA_MERGEPAIR22, EMA_MERGEPAIR21, EMA_MERGEPAIR20, EMA_MERGEPAIR19, EMA_MERGEPAIR18, \
EMA_MERGEPAIR17, EMA_MERGEPAIR16, EMA_MERGEPAIR15, EMA_MERGEPAIR14, EMA_MERGEPAIR13, EMA_MERGEPAIR12, EMA_MERGEPAIR11, EMA_MERGEPAIR10, EMA_MERGEPAIR9, EMA_MERGEPAIR8, EMA_MERGEPAIR7, EMA_MERGEPAIR6, EMA_MERGEPAIR5, EMA_MERGEPAIR4, EMA_MERGEPAIR3, EMA_MERGEPAIR2, EMA_MERGEPAIR1, EMA_MERGEPAIR0)(__VA_ARGS__))
// Join all arguments, with separator.
// args: separator, args.
#define EMA_JOIN0(S, ...)
#define EMA_JOIN1(S, _0, ...) _0
#define EMA_JOIN2(S, _0, _1, ...) _0##S##_1
#define EMA_JOIN3(S, _0, _1, _2, ...) _0##S##_1##S##_2
#define EMA_JOIN4(S, _0, _1, _2, _3, ...) _0##S##_1##S##_2##S##_3
#define EMA_JOIN5(S, _0, _1, _2, _3, _4, ...) _0##S##_1##S##_2##S##_3##S##_4
#define EMA_JOIN6(S, _0, _1, _2, _3, _4, _5, ...) _0##S##_1##S##_2##S##_3##S##_4##S##_5
#define EMA_JOIN7(S, _0, _1, _2, _3, _4, _5, _6, ...) _0##S##_1##S##_2##S##_3##S##_4##S##_5##S##_6
#define EMA_JOIN8(S, _0, _1, _2, _3, _4, _5, _6, _7, ...) _0##S##_1##S##_2##S##_3##S##_4##S##_5##S##_6##S##_7
#define EMA_JOIN9(S, _0, _1, _2, _3, _4, _5, _6, _7, _8, ...) _0##S##_1##S##_2##S##_3##S##_4##S##_5##S##_6##S##_7##S##_8
#define EMA_JOIN10(S, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, ...) _0##S##_1##S##_2##S##_3##S##_4##S##_5##S##_6##S##_7##S##_8##S##_9
#define EMA_JOIN11(S, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, ...) _0##S##_1##S##_2##S##_3##S##_4##S##_5##S##_6##S##_7##S##_8##S##_9##S##_10
#define EMA_JOIN12(S, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, ...) _0##S##_1##S##_2##S##_3##S##_4##S##_5##S##_6##S##_7##S##_8##S##_9##S##_10##S##_11
#define EMA_JOIN13(S, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, ...) _0##S##_1##S##_2##S##_3##S##_4##S##_5##S##_6##S##_7##S##_8##S##_9##S##_10##S##_11##S##_12
#define EMA_JOIN14(S, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, ...) _0##S##_1##S##_2##S##_3##S##_4##S##_5##S##_6##S##_7##S##_8##S##_9##S##_10##S##_11##S##_12##S##_13
#define EMA_JOIN15(S, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, ...) _0##S##_1##S##_2##S##_3##S##_4##S##_5##S##_6##S##_7##S##_8##S##_9##S##_10##S##_11##S##_12##S##_13##S##_14
#define EMA_JOIN16(S, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, ...) _0##S##_1##S##_2##S##_3##S##_4##S##_5##S##_6##S##_7##S##_8##S##_9##S##_10##S##_11##S##_12##S##_13##S##_14##S##_15
#define EMA_JOIN17(S, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, ...) _0##S##_1##S##_2##S##_3##S##_4##S##_5##S##_6##S##_7##S##_8##S##_9##S##_10##S##_11##S##_12##S##_13##S##_14##S##_15##S##_16
#define EMA_JOIN18(S, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, ...) _0##S##_1##S##_2##S##_3##S##_4##S##_5##S##_6##S##_7##S##_8##S##_9##S##_10##S##_11##S##_12##S##_13##S##_14##S##_15##S##_16##S##_17
#define EMA_JOIN19(S, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, ...) _0##S##_1##S##_2##S##_3##S##_4##S##_5##S##_6##S##_7##S##_8##S##_9##S##_10##S##_11##S##_12##S##_13##S##_14##S##_15##S##_16##S##_17##S##_18
#define EMA_JOIN20(S, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, ...) _0##S##_1##S##_2##S##_3##S##_4##S##_5##S##_6##S##_7##S##_8##S##_9##S##_10##S##_11##S##_12##S##_13##S##_14##S##_15##S##_16##S##_17##S##_18##S##_19
#define EMA_JOIN21(S, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, ...) _0##S##_1##S##_2##S##_3##S##_4##S##_5##S##_6##S##_7##S##_8##S##_9##S##_10##S##_11##S##_12##S##_13##S##_14##S##_15##S##_16##S##_17##S##_18##S##_19##S##_20
#define EMA_JOIN22(S, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, ...) _0##S##_1##S##_2##S##_3##S##_4##S##_5##S##_6##S##_7##S##_8##S##_9##S##_10##S##_11##S##_12##S##_13##S##_14##S##_15##S##_16##S##_17##S##_18##S##_19##S##_20##S##_21
#define EMA_JOIN23(S, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, ...) _0##S##_1##S##_2##S##_3##S##_4##S##_5##S##_6##S##_7##S##_8##S##_9##S##_10##S##_11##S##_12##S##_13##S##_14##S##_15##S##_16##S##_17##S##_18##S##_19##S##_20##S##_21##S##_22
#define EMA_JOIN24(S, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, ...) _0##S##_1##S##_2##S##_3##S##_4##S##_5##S##_6##S##_7##S##_8##S##_9##S##_10##S##_11##S##_12##S##_13##S##_14##S##_15##S##_16##S##_17##S##_18##S##_19##S##_20##S##_21##S##_22##S##_23
#define EMA_JOIN25(S, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, ...) _0##S##_1##S##_2##S##_3##S##_4##S##_5##S##_6##S##_7##S##_8##S##_9##S##_10##S##_11##S##_12##S##_13##S##_14##S##_15##S##_16##S##_17##S##_18##S##_19##S##_20##S##_21##S##_22##S##_23##S##_24
#define EMA_JOIN26(S, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, ...) _0##S##_1##S##_2##S##_3##S##_4##S##_5##S##_6##S##_7##S##_8##S##_9##S##_10##S##_11##S##_12##S##_13##S##_14##S##_15##S##_16##S##_17##S##_18##S##_19##S##_20##S##_21##S##_22##S##_23##S##_24##S##_25
#define EMA_JOIN27(S, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, ...) _0##S##_1##S##_2##S##_3##S##_4##S##_5##S##_6##S##_7##S##_8##S##_9##S##_10##S##_11##S##_12##S##_13##S##_14##S##_15##S##_16##S##_17##S##_18##S##_19##S##_20##S##_21##S##_22##S##_23##S##_24##S##_25##S##_26
#define EMA_JOIN28(S, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, ...) _0##S##_1##S##_2##S##_3##S##_4##S##_5##S##_6##S##_7##S##_8##S##_9##S##_10##S##_11##S##_12##S##_13##S##_14##S##_15##S##_16##S##_17##S##_18##S##_19##S##_20##S##_21##S##_22##S##_23##S##_24##S##_25##S##_26##S##_27
#define EMA_JOIN29(S, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, ...) _0##S##_1##S##_2##S##_3##S##_4##S##_5##S##_6##S##_7##S##_8##S##_9##S##_10##S##_11##S##_12##S##_13##S##_14##S##_15##S##_16##S##_17##S##_18##S##_19##S##_20##S##_21##S##_22##S##_23##S##_24##S##_25##S##_26##S##_27##S##_28
#define EMA_JOIN30(S, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, ...) _0##S##_1##S##_2##S##_3##S##_4##S##_5##S##_6##S##_7##S##_8##S##_9##S##_10##S##_11##S##_12##S##_13##S##_14##S##_15##S##_16##S##_17##S##_18##S##_19##S##_20##S##_21##S##_22##S##_23##S##_24##S##_25##S##_26##S##_27##S##_28##S##_29
#define EMA_JOIN31(S, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, ...) _0##S##_1##S##_2##S##_3##S##_4##S##_5##S##_6##S##_7##S##_8##S##_9##S##_10##S##_11##S##_12##S##_13##S##_14##S##_15##S##_16##S##_17##S##_18##S##_19##S##_20##S##_21##S##_22##S##_23##S##_24##S##_25##S##_26##S##_27##S##_28##S##_29##S##_30
#define EMA_JOIN(S, ...) EMA_GET0(EMA_GET32(0, ##__VA_ARGS__, EMA_JOIN31, EMA_JOIN30, EMA_JOIN29, EMA_JOIN28, EMA_JOIN27, EMA_JOIN26, EMA_JOIN25, EMA_JOIN24, EMA_JOIN23, EMA_JOIN22, EMA_JOIN21, EMA_JOIN20, EMA_JOIN19, EMA_JOIN18, \
EMA_JOIN17, EMA_JOIN16, EMA_JOIN15, EMA_JOIN14, EMA_JOIN13, EMA_JOIN12, EMA_JOIN11, EMA_JOIN10, EMA_JOIN9, EMA_JOIN8, EMA_JOIN7, EMA_JOIN6, EMA_JOIN5, EMA_JOIN4, EMA_JOIN3, EMA_JOIN2, EMA_JOIN1, EMA_JOIN0)(S, __VA_ARGS__))
// Join all argument pairs, with separator.
// args: separator, args.
#define EMA_JOINPAIR0(S, ...)
#define EMA_JOINPAIR1(S, _0, ...) _0
#define EMA_JOINPAIR2(S, _0, _1, ...) _0##S##_1
#define EMA_JOINPAIR3(S, _0, _1, _2, ...) _0##S##_1, _2
#define EMA_JOINPAIR4(S, _0, _1, _2, _3, ...) _0##S##_1, _2##S##_3
#define EMA_JOINPAIR5(S, _0, _1, _2, _3, _4, ...) _0##S##_1, _2##S##_3, _4
#define EMA_JOINPAIR6(S, _0, _1, _2, _3, _4, _5, ...) _0##S##_1, _2##S##_3, _4##S##_5
#define EMA_JOINPAIR7(S, _0, _1, _2, _3, _4, _5, _6, ...) _0##S##_1, _2##S##_3, _4##S##_5, _6
#define EMA_JOINPAIR8(S, _0, _1, _2, _3, _4, _5, _6, _7, ...) _0##S##_1, _2##S##_3, _4##S##_5, _6##S##_7
#define EMA_JOINPAIR9(S, _0, _1, _2, _3, _4, _5, _6, _7, _8, ...) _0##S##_1, _2##S##_3, _4##S##_5, _6##S##_7, _8
#define EMA_JOINPAIR10(S, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, ...) _0##S##_1, _2##S##_3, _4##S##_5, _6##S##_7, _8##S##_9
#define EMA_JOINPAIR11(S, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, ...) _0##S##_1, _2##S##_3, _4##S##_5, _6##S##_7, _8##S##_9, _10
#define EMA_JOINPAIR12(S, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, ...) _0##S##_1, _2##S##_3, _4##S##_5, _6##S##_7, _8##S##_9, _10##S##_11
#define EMA_JOINPAIR13(S, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, ...) _0##S##_1, _2##S##_3, _4##S##_5, _6##S##_7, _8##S##_9, _10##S##_11, _12
#define EMA_JOINPAIR14(S, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, ...) _0##S##_1, _2##S##_3, _4##S##_5, _6##S##_7, _8##S##_9, _10##S##_11, _12##S##_13
#define EMA_JOINPAIR15(S, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, ...) _0##S##_1, _2##S##_3, _4##S##_5, _6##S##_7, _8##S##_9, _10##S##_11, _12##S##_13, _14
#define EMA_JOINPAIR16(S, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, ...) _0##S##_1, _2##S##_3, _4##S##_5, _6##S##_7, _8##S##_9, _10##S##_11, _12##S##_13, _14##S##_15
#define EMA_JOINPAIR17(S, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, ...) _0##S##_1, _2##S##_3, _4##S##_5, _6##S##_7, _8##S##_9, _10##S##_11, _12##S##_13, _14##S##_15, _16
#define EMA_JOINPAIR18(S, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, ...) _0##S##_1, _2##S##_3, _4##S##_5, _6##S##_7, _8##S##_9, _10##S##_11, _12##S##_13, _14##S##_15, _16##S##_17
#define EMA_JOINPAIR19(S, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, ...) _0##S##_1, _2##S##_3, _4##S##_5, _6##S##_7, _8##S##_9, _10##S##_11, _12##S##_13, _14##S##_15, _16##S##_17, _18
#define EMA_JOINPAIR20(S, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, ...) _0##S##_1, _2##S##_3, _4##S##_5, _6##S##_7, _8##S##_9, _10##S##_11, _12##S##_13, _14##S##_15, _16##S##_17, _18##S##_19
#define EMA_JOINPAIR21(S, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, ...) _0##S##_1, _2##S##_3, _4##S##_5, _6##S##_7, _8##S##_9, _10##S##_11, _12##S##_13, _14##S##_15, _16##S##_17, _18##S##_19, _20
#define EMA_JOINPAIR22(S, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, ...) _0##S##_1, _2##S##_3, _4##S##_5, _6##S##_7, _8##S##_9, _10##S##_11, _12##S##_13, _14##S##_15, _16##S##_17, _18##S##_19, _20##S##_21
#define EMA_JOINPAIR23(S, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, ...) _0##S##_1, _2##S##_3, _4##S##_5, _6##S##_7, _8##S##_9, _10##S##_11, _12##S##_13, _14##S##_15, _16##S##_17, _18##S##_19, _20##S##_21, _22
#define EMA_JOINPAIR24(S, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, ...) _0##S##_1, _2##S##_3, _4##S##_5, _6##S##_7, _8##S##_9, _10##S##_11, _12##S##_13, _14##S##_15, _16##S##_17, _18##S##_19, _20##S##_21, _22##S##_23
#define EMA_JOINPAIR25(S, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, ...) _0##S##_1, _2##S##_3, _4##S##_5, _6##S##_7, _8##S##_9, _10##S##_11, _12##S##_13, _14##S##_15, _16##S##_17, _18##S##_19, _20##S##_21, _22##S##_23, _24
#define EMA_JOINPAIR26(S, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, ...) _0##S##_1, _2##S##_3, _4##S##_5, _6##S##_7, _8##S##_9, _10##S##_11, _12##S##_13, _14##S##_15, _16##S##_17, _18##S##_19, _20##S##_21, _22##S##_23, _24##S##_25
#define EMA_JOINPAIR27(S, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, ...) _0##S##_1, _2##S##_3, _4##S##_5, _6##S##_7, _8##S##_9, _10##S##_11, _12##S##_13, _14##S##_15, _16##S##_17, _18##S##_19, _20##S##_21, _22##S##_23, _24##S##_25, _26
#define EMA_JOINPAIR28(S, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, ...) _0##S##_1, _2##S##_3, _4##S##_5, _6##S##_7, _8##S##_9, _10##S##_11, _12##S##_13, _14##S##_15, _16##S##_17, _18##S##_19, _20##S##_21, _22##S##_23, _24##S##_25, _26##S##_27
#define EMA_JOINPAIR29(S, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, ...) _0##S##_1, _2##S##_3, _4##S##_5, _6##S##_7, _8##S##_9, _10##S##_11, _12##S##_13, _14##S##_15, _16##S##_17, _18##S##_19, _20##S##_21, _22##S##_23, _24##S##_25, _26##S##_27, _28
#define EMA_JOINPAIR30(S, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, ...) _0##S##_1, _2##S##_3, _4##S##_5, _6##S##_7, _8##S##_9, _10##S##_11, _12##S##_13, _14##S##_15, _16##S##_17, _18##S##_19, _20##S##_21, _22##S##_23, _24##S##_25, _26##S##_27, _28##S##_29
#define EMA_JOINPAIR31(S, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, ...) _0##S##_1, _2##S##_3, _4##S##_5, _6##S##_7, _8##S##_9, _10##S##_11, _12##S##_13, _14##S##_15, _16##S##_17, _18##S##_19, _20##S##_21, _22##S##_23, _24##S##_25, _26##S##_27, _28##S##_29, _30
#define EMA_JOINPAIR(S, ...) EMA_GET0(EMA_GET32(0, ##__VA_ARGS__, EMA_JOINPAIR31, EMA_JOINPAIR30, EMA_JOINPAIR29, EMA_JOINPAIR28, EMA_JOINPAIR27, EMA_JOINPAIR26, EMA_JOINPAIR25, EMA_JOINPAIR24, EMA_JOINPAIR23, EMA_JOINPAIR22, EMA_JOINPAIR21, EMA_JOINPAIR20, EMA_JOINPAIR19, EMA_JOINPAIR18, \
EMA_JOINPAIR17, EMA_JOINPAIR16, EMA_JOINPAIR15, EMA_JOINPAIR14, EMA_JOINPAIR13, EMA_JOINPAIR12, EMA_JOINPAIR11, EMA_JOINPAIR10, EMA_JOINPAIR9, EMA_JOINPAIR8, EMA_JOINPAIR7, EMA_JOINPAIR6, EMA_JOINPAIR5, EMA_JOINPAIR4, EMA_JOINPAIR3, EMA_JOINPAIR2, EMA_JOINPAIR1, EMA_JOINPAIR0)(S, __VA_ARGS__))
// Space arguments, a character apart.
// args: args.
#define EMA_SPACE0(...)
#define EMA_SPACE1(_0, ...) _0
#define EMA_SPACE2(_0, _1, ...) _0 _1
#define EMA_SPACE3(_0, _1, _2, ...) _0 _1 _2
#define EMA_SPACE4(_0, _1, _2, _3, ...) _0 _1 _2 _3
#define EMA_SPACE5(_0, _1, _2, _3, _4, ...) _0 _1 _2 _3 _4
#define EMA_SPACE6(_0, _1, _2, _3, _4, _5, ...) _0 _1 _2 _3 _4 _5
#define EMA_SPACE7(_0, _1, _2, _3, _4, _5, _6, ...) _0 _1 _2 _3 _4 _5 _6
#define EMA_SPACE8(_0, _1, _2, _3, _4, _5, _6, _7, ...) _0 _1 _2 _3 _4 _5 _6 _7
#define EMA_SPACE9(_0, _1, _2, _3, _4, _5, _6, _7, _8, ...) _0 _1 _2 _3 _4 _5 _6 _7 _8
#define EMA_SPACE10(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, ...) _0 _1 _2 _3 _4 _5 _6 _7 _8 _9
#define EMA_SPACE11(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, ...) _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10
#define EMA_SPACE12(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, ...) _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11
#define EMA_SPACE13(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, ...) _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12
#define EMA_SPACE14(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, ...) _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13
#define EMA_SPACE15(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, ...) _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14
#define EMA_SPACE16(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, ...) _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 _15
#define EMA_SPACE17(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, ...) _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 _15 _16
#define EMA_SPACE18(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, ...) _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 _15 _16 _17
#define EMA_SPACE19(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, ...) _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 _15 _16 _17 _18
#define EMA_SPACE20(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, ...) _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 _15 _16 _17 _18 _19
#define EMA_SPACE21(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, ...) _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 _15 _16 _17 _18 _19 _20
#define EMA_SPACE22(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, ...) _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 _15 _16 _17 _18 _19 _20 _21
#define EMA_SPACE23(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, ...) _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 _15 _16 _17 _18 _19 _20 _21 _22
#define EMA_SPACE24(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, ...) _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 _15 _16 _17 _18 _19 _20 _21 _22 _23
#define EMA_SPACE25(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, ...) _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 _15 _16 _17 _18 _19 _20 _21 _22 _23 _24
#define EMA_SPACE26(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, ...) _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 _15 _16 _17 _18 _19 _20 _21 _22 _23 _24 _25
#define EMA_SPACE27(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, ...) _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 _15 _16 _17 _18 _19 _20 _21 _22 _23 _24 _25 _26
#define EMA_SPACE28(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, ...) _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 _15 _16 _17 _18 _19 _20 _21 _22 _23 _24 _25 _26 _27
#define EMA_SPACE29(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, ...) _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 _15 _16 _17 _18 _19 _20 _21 _22 _23 _24 _25 _26 _27 _28
#define EMA_SPACE30(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, ...) _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 _15 _16 _17 _18 _19 _20 _21 _22 _23 _24 _25 _26 _27 _28 _29
#define EMA_SPACE31(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, ...) _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 _15 _16 _17 _18 _19 _20 _21 _22 _23 _24 _25 _26 _27 _28 _29 _30
#define EMA_SPACE(...) EMA_GET0(EMA_GET32(0, ##__VA_ARGS__, EMA_SPACE31, EMA_SPACE30, EMA_SPACE29, EMA_SPACE28, EMA_SPACE27, EMA_SPACE26, EMA_SPACE25, EMA_SPACE24, EMA_SPACE23, EMA_SPACE22, EMA_SPACE21, EMA_SPACE20, EMA_SPACE19, EMA_SPACE18, \
EMA_SPACE17, EMA_SPACE16, EMA_SPACE15, EMA_SPACE14, EMA_SPACE13, EMA_SPACE12, EMA_SPACE11, EMA_SPACE10, EMA_SPACE9, EMA_SPACE8, EMA_SPACE7, EMA_SPACE6, EMA_SPACE5, EMA_SPACE4, EMA_SPACE3, EMA_SPACE2, EMA_SPACE1, EMA_SPACE0)(__VA_ARGS__))
// Space argument pairs, a character apart.
// args: args.
#define EMA_SPACEPAIR0(...)
#define EMA_SPACEPAIR1(_0, ...) _0
#define EMA_SPACEPAIR2(_0, _1, ...) _0 _1
#define EMA_SPACEPAIR3(_0, _1, _2, ...) _0 _1, _2
#define EMA_SPACEPAIR4(_0, _1, _2, _3, ...) _0 _1, _2 _3
#define EMA_SPACEPAIR5(_0, _1, _2, _3, _4, ...) _0 _1, _2 _3, _4
#define EMA_SPACEPAIR6(_0, _1, _2, _3, _4, _5, ...) _0 _1, _2 _3, _4 _5
#define EMA_SPACEPAIR7(_0, _1, _2, _3, _4, _5, _6, ...) _0 _1, _2 _3, _4 _5, _6
#define EMA_SPACEPAIR8(_0, _1, _2, _3, _4, _5, _6, _7, ...) _0 _1, _2 _3, _4 _5, _6 _7
#define EMA_SPACEPAIR9(_0, _1, _2, _3, _4, _5, _6, _7, _8, ...) _0 _1, _2 _3, _4 _5, _6 _7, _8
#define EMA_SPACEPAIR10(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, ...) _0 _1, _2 _3, _4 _5, _6 _7, _8 _9
#define EMA_SPACEPAIR11(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, ...) _0 _1, _2 _3, _4 _5, _6 _7, _8 _9, _10
#define EMA_SPACEPAIR12(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, ...) _0 _1, _2 _3, _4 _5, _6 _7, _8 _9, _10 _11
#define EMA_SPACEPAIR13(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, ...) _0 _1, _2 _3, _4 _5, _6 _7, _8 _9, _10 _11, _12
#define EMA_SPACEPAIR14(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, ...) _0 _1, _2 _3, _4 _5, _6 _7, _8 _9, _10 _11, _12 _13
#define EMA_SPACEPAIR15(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, ...) _0 _1, _2 _3, _4 _5, _6 _7, _8 _9, _10 _11, _12 _13, _14
#define EMA_SPACEPAIR16(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, ...) _0 _1, _2 _3, _4 _5, _6 _7, _8 _9, _10 _11, _12 _13, _14 _15
#define EMA_SPACEPAIR17(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, ...) _0 _1, _2 _3, _4 _5, _6 _7, _8 _9, _10 _11, _12 _13, _14 _15, _16
#define EMA_SPACEPAIR18(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, ...) _0 _1, _2 _3, _4 _5, _6 _7, _8 _9, _10 _11, _12 _13, _14 _15, _16 _17
#define EMA_SPACEPAIR19(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, ...) _0 _1, _2 _3, _4 _5, _6 _7, _8 _9, _10 _11, _12 _13, _14 _15, _16 _17, _18
#define EMA_SPACEPAIR20(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, ...) _0 _1, _2 _3, _4 _5, _6 _7, _8 _9, _10 _11, _12 _13, _14 _15, _16 _17, _18 _19
#define EMA_SPACEPAIR21(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, ...) _0 _1, _2 _3, _4 _5, _6 _7, _8 _9, _10 _11, _12 _13, _14 _15, _16 _17, _18 _19, _20
#define EMA_SPACEPAIR22(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, ...) _0 _1, _2 _3, _4 _5, _6 _7, _8 _9, _10 _11, _12 _13, _14 _15, _16 _17, _18 _19, _20 _21
#define EMA_SPACEPAIR23(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, ...) _0 _1, _2 _3, _4 _5, _6 _7, _8 _9, _10 _11, _12 _13, _14 _15, _16 _17, _18 _19, _20 _21, _22
#define EMA_SPACEPAIR24(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, ...) _0 _1, _2 _3, _4 _5, _6 _7, _8 _9, _10 _11, _12 _13, _14 _15, _16 _17, _18 _19, _20 _21, _22 _23
#define EMA_SPACEPAIR25(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, ...) _0 _1, _2 _3, _4 _5, _6 _7, _8 _9, _10 _11, _12 _13, _14 _15, _16 _17, _18 _19, _20 _21, _22 _23, _24
#define EMA_SPACEPAIR26(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, ...) _0 _1, _2 _3, _4 _5, _6 _7, _8 _9, _10 _11, _12 _13, _14 _15, _16 _17, _18 _19, _20 _21, _22 _23, _24 _25
#define EMA_SPACEPAIR27(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, ...) _0 _1, _2 _3, _4 _5, _6 _7, _8 _9, _10 _11, _12 _13, _14 _15, _16 _17, _18 _19, _20 _21, _22 _23, _24 _25, _26
#define EMA_SPACEPAIR28(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, ...) _0 _1, _2 _3, _4 _5, _6 _7, _8 _9, _10 _11, _12 _13, _14 _15, _16 _17, _18 _19, _20 _21, _22 _23, _24 _25, _26 _27
#define EMA_SPACEPAIR29(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, ...) _0 _1, _2 _3, _4 _5, _6 _7, _8 _9, _10 _11, _12 _13, _14 _15, _16 _17, _18 _19, _20 _21, _22 _23, _24 _25, _26 _27, _28
#define EMA_SPACEPAIR30(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, ...) _0 _1, _2 _3, _4 _5, _6 _7, _8 _9, _10 _11, _12 _13, _14 _15, _16 _17, _18 _19, _20 _21, _22 _23, _24 _25, _26 _27, _28 _29
#define EMA_SPACEPAIR31(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, ...) _0 _1, _2 _3, _4 _5, _6 _7, _8 _9, _10 _11, _12 _13, _14 _15, _16 _17, _18 _19, _20 _21, _22 _23, _24 _25, _26 _27, _28 _29, _30
#define EMA_SPACEPAIR(...) EMA_GET0(EMA_GET32(0, ##__VA_ARGS__, EMA_SPACEPAIR31, EMA_SPACEPAIR30, EMA_SPACEPAIR29, EMA_SPACEPAIR28, EMA_SPACEPAIR27, EMA_SPACEPAIR26, EMA_SPACEPAIR25, EMA_SPACEPAIR24, EMA_SPACEPAIR23, EMA_SPACEPAIR22, EMA_SPACEPAIR21, EMA_SPACEPAIR20, EMA_SPACEPAIR19, EMA_SPACEPAIR18, \
EMA_SPACEPAIR17, EMA_SPACEPAIR16, EMA_SPACEPAIR15, EMA_SPACEPAIR14, EMA_SPACEPAIR13, EMA_SPACEPAIR12, EMA_SPACEPAIR11, EMA_SPACEPAIR10, EMA_SPACEPAIR9, EMA_SPACEPAIR8, EMA_SPACEPAIR7, EMA_SPACEPAIR6, EMA_SPACEPAIR5, EMA_SPACEPAIR4, EMA_SPACEPAIR3, EMA_SPACEPAIR2, EMA_SPACEPAIR1, EMA_SPACEPAIR0)(__VA_ARGS__))
#pragma endregion
#endif // !_OMACROARG_H_