AceTime  2.4.0
Date and time classes for Arduino that support timezones from the TZ Database.
zone_policies.cpp
1 // This file was generated by the following script:
2 //
3 // $ /home/brian/src/AceTimeTools/src/acetimetools/tzcompiler.py
4 // --input_dir /home/brian/src/AceTime/src/zonedb/tzfiles
5 // --output_dir /home/brian/src/AceTime/src/zonedb
6 // --tz_version 2024b
7 // --action zonedb
8 // --language arduino
9 // --scope basic
10 // --db_namespace zonedb
11 // --start_year 2000
12 // --until_year 2200
13 //
14 // using the TZ Database files
15 //
16 // africa
17 // antarctica
18 // asia
19 // australasia
20 // backward
21 // etcetera
22 // europe
23 // northamerica
24 // southamerica
25 //
26 // from https://github.com/eggert/tz/releases/tag/2024b
27 //
28 // Supported Zones: 447 (216 zones, 231 links)
29 // Unsupported Zones: 149 (123 zones, 26 links)
30 //
31 // Requested Years: [2000,2200]
32 // Accurate Years: [2000,32767]
33 //
34 // Original Years: [1844,2087]
35 // Generated Years: [1950,2023]
36 // Lower/Upper Truncated: [True,False]
37 //
38 // Estimator Years: [1950,2025]
39 // Max Buffer Size: 6
40 //
41 // Records:
42 // Infos: 447
43 // Eras: 228
44 // Policies: 64
45 // Rules: 363
46 //
47 // Memory (8-bits):
48 // Context: 16
49 // Rules: 3267
50 // Policies: 192
51 // Eras: 2508
52 // Zones: 2808
53 // Links: 3003
54 // Registry: 894
55 // Formats: 175
56 // Letters: 29
57 // Fragments: 116
58 // Names: 4152 (original: 6511)
59 // TOTAL: 17160
60 //
61 // Memory (32-bits):
62 // Context: 24
63 // Rules: 4356
64 // Policies: 512
65 // Eras: 3648
66 // Zones: 5184
67 // Links: 5544
68 // Registry: 1788
69 // Formats: 175
70 // Letters: 41
71 // Fragments: 138
72 // Names: 4152 (original: 6511)
73 // TOTAL: 25562
74 //
75 // DO NOT EDIT
76 
77 #include <zoneinfo/compat.h>
78 #include "zone_policies.h"
79 
80 namespace ace_time {
81 namespace zonedb {
82 
83 //---------------------------------------------------------------------------
84 // Policies: 64
85 // Rules: 363
86 //---------------------------------------------------------------------------
87 
88 //---------------------------------------------------------------------------
89 // Policy name: AN
90 // Rules: 10
91 //---------------------------------------------------------------------------
92 
93 static const basic::ZoneRule kZoneRulesAN[] ACE_TIME_PROGMEM = {
94  // Anchor: Rule AN 1990 1995 - Mar Sun>=1 2:00s 0 S
95  {
96  -127 /*fromYearTiny (-32767)*/,
97  -127 /*toYearTiny (-32767)*/,
98  1 /*inMonth*/,
99  0 /*onDayOfWeek*/,
100  1 /*onDayOfMonth*/,
101  0 /*atTimeCode*/,
102  0 /*atTimeModifier (kSuffixW + minute=0)*/,
103  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
104  4 /*letterIndex ("S")*/,
105  },
106  // Rule AN 1987 1999 - Oct lastSun 2:00s 1:00 D
107  {
108  -113 /*fromYearTiny (1987)*/,
109  -101 /*toYearTiny (1999)*/,
110  10 /*inMonth*/,
111  7 /*onDayOfWeek*/,
112  0 /*onDayOfMonth*/,
113  8 /*atTimeCode*/,
114  16 /*atTimeModifier (kSuffixS + minute=0)*/,
115  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
116  3 /*letterIndex ("D")*/,
117  },
118  // Rule AN 1990 1995 - Mar Sun>=1 2:00s 0 S
119  {
120  -110 /*fromYearTiny (1990)*/,
121  -105 /*toYearTiny (1995)*/,
122  3 /*inMonth*/,
123  7 /*onDayOfWeek*/,
124  1 /*onDayOfMonth*/,
125  8 /*atTimeCode*/,
126  16 /*atTimeModifier (kSuffixS + minute=0)*/,
127  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
128  4 /*letterIndex ("S")*/,
129  },
130  // Rule AN 1996 2005 - Mar lastSun 2:00s 0 S
131  {
132  -104 /*fromYearTiny (1996)*/,
133  -95 /*toYearTiny (2005)*/,
134  3 /*inMonth*/,
135  7 /*onDayOfWeek*/,
136  0 /*onDayOfMonth*/,
137  8 /*atTimeCode*/,
138  16 /*atTimeModifier (kSuffixS + minute=0)*/,
139  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
140  4 /*letterIndex ("S")*/,
141  },
142  // Rule AN 2000 only - Aug lastSun 2:00s 1:00 D
143  {
144  -100 /*fromYearTiny (2000)*/,
145  -100 /*toYearTiny (2000)*/,
146  8 /*inMonth*/,
147  7 /*onDayOfWeek*/,
148  0 /*onDayOfMonth*/,
149  8 /*atTimeCode*/,
150  16 /*atTimeModifier (kSuffixS + minute=0)*/,
151  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
152  3 /*letterIndex ("D")*/,
153  },
154  // Rule AN 2001 2007 - Oct lastSun 2:00s 1:00 D
155  {
156  -99 /*fromYearTiny (2001)*/,
157  -93 /*toYearTiny (2007)*/,
158  10 /*inMonth*/,
159  7 /*onDayOfWeek*/,
160  0 /*onDayOfMonth*/,
161  8 /*atTimeCode*/,
162  16 /*atTimeModifier (kSuffixS + minute=0)*/,
163  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
164  3 /*letterIndex ("D")*/,
165  },
166  // Rule AN 2006 only - Apr Sun>=1 2:00s 0 S
167  {
168  -94 /*fromYearTiny (2006)*/,
169  -94 /*toYearTiny (2006)*/,
170  4 /*inMonth*/,
171  7 /*onDayOfWeek*/,
172  1 /*onDayOfMonth*/,
173  8 /*atTimeCode*/,
174  16 /*atTimeModifier (kSuffixS + minute=0)*/,
175  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
176  4 /*letterIndex ("S")*/,
177  },
178  // Rule AN 2007 only - Mar lastSun 2:00s 0 S
179  {
180  -93 /*fromYearTiny (2007)*/,
181  -93 /*toYearTiny (2007)*/,
182  3 /*inMonth*/,
183  7 /*onDayOfWeek*/,
184  0 /*onDayOfMonth*/,
185  8 /*atTimeCode*/,
186  16 /*atTimeModifier (kSuffixS + minute=0)*/,
187  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
188  4 /*letterIndex ("S")*/,
189  },
190  // Rule AN 2008 max - Apr Sun>=1 2:00s 0 S
191  {
192  -92 /*fromYearTiny (2008)*/,
193  126 /*toYearTiny (32766)*/,
194  4 /*inMonth*/,
195  7 /*onDayOfWeek*/,
196  1 /*onDayOfMonth*/,
197  8 /*atTimeCode*/,
198  16 /*atTimeModifier (kSuffixS + minute=0)*/,
199  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
200  4 /*letterIndex ("S")*/,
201  },
202  // Rule AN 2008 max - Oct Sun>=1 2:00s 1:00 D
203  {
204  -92 /*fromYearTiny (2008)*/,
205  126 /*toYearTiny (32766)*/,
206  10 /*inMonth*/,
207  7 /*onDayOfWeek*/,
208  1 /*onDayOfMonth*/,
209  8 /*atTimeCode*/,
210  16 /*atTimeModifier (kSuffixS + minute=0)*/,
211  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
212  3 /*letterIndex ("D")*/,
213  },
214 
215 };
216 
217 const basic::ZonePolicy kZonePolicyAN ACE_TIME_PROGMEM = {
218  kZoneRulesAN /*rules*/,
219  10 /*numRules*/,
220 };
221 
222 //---------------------------------------------------------------------------
223 // Policy name: AQ
224 // Rules: 1
225 //---------------------------------------------------------------------------
226 
227 static const basic::ZoneRule kZoneRulesAQ[] ACE_TIME_PROGMEM = {
228  // Anchor: Rule AQ 1990 1992 - Mar Sun>=1 2:00s 0 S
229  {
230  -127 /*fromYearTiny (-32767)*/,
231  -127 /*toYearTiny (-32767)*/,
232  1 /*inMonth*/,
233  0 /*onDayOfWeek*/,
234  1 /*onDayOfMonth*/,
235  0 /*atTimeCode*/,
236  0 /*atTimeModifier (kSuffixW + minute=0)*/,
237  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
238  4 /*letterIndex ("S")*/,
239  },
240 
241 };
242 
243 const basic::ZonePolicy kZonePolicyAQ ACE_TIME_PROGMEM = {
244  kZoneRulesAQ /*rules*/,
245  1 /*numRules*/,
246 };
247 
248 //---------------------------------------------------------------------------
249 // Policy name: AS
250 // Rules: 8
251 //---------------------------------------------------------------------------
252 
253 static const basic::ZoneRule kZoneRulesAS[] ACE_TIME_PROGMEM = {
254  // Anchor: Rule AS 1994 only - Mar 20 2:00s 0 S
255  {
256  -127 /*fromYearTiny (-32767)*/,
257  -127 /*toYearTiny (-32767)*/,
258  1 /*inMonth*/,
259  0 /*onDayOfWeek*/,
260  1 /*onDayOfMonth*/,
261  0 /*atTimeCode*/,
262  0 /*atTimeModifier (kSuffixW + minute=0)*/,
263  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
264  4 /*letterIndex ("S")*/,
265  },
266  // Rule AS 1987 2007 - Oct lastSun 2:00s 1:00 D
267  {
268  -113 /*fromYearTiny (1987)*/,
269  -93 /*toYearTiny (2007)*/,
270  10 /*inMonth*/,
271  7 /*onDayOfWeek*/,
272  0 /*onDayOfMonth*/,
273  8 /*atTimeCode*/,
274  16 /*atTimeModifier (kSuffixS + minute=0)*/,
275  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
276  3 /*letterIndex ("D")*/,
277  },
278  // Rule AS 1994 only - Mar 20 2:00s 0 S
279  {
280  -106 /*fromYearTiny (1994)*/,
281  -106 /*toYearTiny (1994)*/,
282  3 /*inMonth*/,
283  0 /*onDayOfWeek*/,
284  20 /*onDayOfMonth*/,
285  8 /*atTimeCode*/,
286  16 /*atTimeModifier (kSuffixS + minute=0)*/,
287  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
288  4 /*letterIndex ("S")*/,
289  },
290  // Rule AS 1995 2005 - Mar lastSun 2:00s 0 S
291  {
292  -105 /*fromYearTiny (1995)*/,
293  -95 /*toYearTiny (2005)*/,
294  3 /*inMonth*/,
295  7 /*onDayOfWeek*/,
296  0 /*onDayOfMonth*/,
297  8 /*atTimeCode*/,
298  16 /*atTimeModifier (kSuffixS + minute=0)*/,
299  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
300  4 /*letterIndex ("S")*/,
301  },
302  // Rule AS 2006 only - Apr 2 2:00s 0 S
303  {
304  -94 /*fromYearTiny (2006)*/,
305  -94 /*toYearTiny (2006)*/,
306  4 /*inMonth*/,
307  0 /*onDayOfWeek*/,
308  2 /*onDayOfMonth*/,
309  8 /*atTimeCode*/,
310  16 /*atTimeModifier (kSuffixS + minute=0)*/,
311  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
312  4 /*letterIndex ("S")*/,
313  },
314  // Rule AS 2007 only - Mar lastSun 2:00s 0 S
315  {
316  -93 /*fromYearTiny (2007)*/,
317  -93 /*toYearTiny (2007)*/,
318  3 /*inMonth*/,
319  7 /*onDayOfWeek*/,
320  0 /*onDayOfMonth*/,
321  8 /*atTimeCode*/,
322  16 /*atTimeModifier (kSuffixS + minute=0)*/,
323  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
324  4 /*letterIndex ("S")*/,
325  },
326  // Rule AS 2008 max - Apr Sun>=1 2:00s 0 S
327  {
328  -92 /*fromYearTiny (2008)*/,
329  126 /*toYearTiny (32766)*/,
330  4 /*inMonth*/,
331  7 /*onDayOfWeek*/,
332  1 /*onDayOfMonth*/,
333  8 /*atTimeCode*/,
334  16 /*atTimeModifier (kSuffixS + minute=0)*/,
335  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
336  4 /*letterIndex ("S")*/,
337  },
338  // Rule AS 2008 max - Oct Sun>=1 2:00s 1:00 D
339  {
340  -92 /*fromYearTiny (2008)*/,
341  126 /*toYearTiny (32766)*/,
342  10 /*inMonth*/,
343  7 /*onDayOfWeek*/,
344  1 /*onDayOfMonth*/,
345  8 /*atTimeCode*/,
346  16 /*atTimeModifier (kSuffixS + minute=0)*/,
347  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
348  3 /*letterIndex ("D")*/,
349  },
350 
351 };
352 
353 const basic::ZonePolicy kZonePolicyAS ACE_TIME_PROGMEM = {
354  kZoneRulesAS /*rules*/,
355  8 /*numRules*/,
356 };
357 
358 //---------------------------------------------------------------------------
359 // Policy name: AT
360 // Rules: 9
361 //---------------------------------------------------------------------------
362 
363 static const basic::ZoneRule kZoneRulesAT[] ACE_TIME_PROGMEM = {
364  // Anchor: Rule AT 1991 2005 - Mar lastSun 2:00s 0 S
365  {
366  -127 /*fromYearTiny (-32767)*/,
367  -127 /*toYearTiny (-32767)*/,
368  1 /*inMonth*/,
369  0 /*onDayOfWeek*/,
370  1 /*onDayOfMonth*/,
371  0 /*atTimeCode*/,
372  0 /*atTimeModifier (kSuffixW + minute=0)*/,
373  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
374  4 /*letterIndex ("S")*/,
375  },
376  // Rule AT 1988 1990 - Oct lastSun 2:00s 1:00 D
377  {
378  -112 /*fromYearTiny (1988)*/,
379  -110 /*toYearTiny (1990)*/,
380  10 /*inMonth*/,
381  7 /*onDayOfWeek*/,
382  0 /*onDayOfMonth*/,
383  8 /*atTimeCode*/,
384  16 /*atTimeModifier (kSuffixS + minute=0)*/,
385  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
386  3 /*letterIndex ("D")*/,
387  },
388  // Rule AT 1991 1999 - Oct Sun>=1 2:00s 1:00 D
389  {
390  -109 /*fromYearTiny (1991)*/,
391  -101 /*toYearTiny (1999)*/,
392  10 /*inMonth*/,
393  7 /*onDayOfWeek*/,
394  1 /*onDayOfMonth*/,
395  8 /*atTimeCode*/,
396  16 /*atTimeModifier (kSuffixS + minute=0)*/,
397  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
398  3 /*letterIndex ("D")*/,
399  },
400  // Rule AT 1991 2005 - Mar lastSun 2:00s 0 S
401  {
402  -109 /*fromYearTiny (1991)*/,
403  -95 /*toYearTiny (2005)*/,
404  3 /*inMonth*/,
405  7 /*onDayOfWeek*/,
406  0 /*onDayOfMonth*/,
407  8 /*atTimeCode*/,
408  16 /*atTimeModifier (kSuffixS + minute=0)*/,
409  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
410  4 /*letterIndex ("S")*/,
411  },
412  // Rule AT 2000 only - Aug lastSun 2:00s 1:00 D
413  {
414  -100 /*fromYearTiny (2000)*/,
415  -100 /*toYearTiny (2000)*/,
416  8 /*inMonth*/,
417  7 /*onDayOfWeek*/,
418  0 /*onDayOfMonth*/,
419  8 /*atTimeCode*/,
420  16 /*atTimeModifier (kSuffixS + minute=0)*/,
421  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
422  3 /*letterIndex ("D")*/,
423  },
424  // Rule AT 2001 max - Oct Sun>=1 2:00s 1:00 D
425  {
426  -99 /*fromYearTiny (2001)*/,
427  126 /*toYearTiny (32766)*/,
428  10 /*inMonth*/,
429  7 /*onDayOfWeek*/,
430  1 /*onDayOfMonth*/,
431  8 /*atTimeCode*/,
432  16 /*atTimeModifier (kSuffixS + minute=0)*/,
433  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
434  3 /*letterIndex ("D")*/,
435  },
436  // Rule AT 2006 only - Apr Sun>=1 2:00s 0 S
437  {
438  -94 /*fromYearTiny (2006)*/,
439  -94 /*toYearTiny (2006)*/,
440  4 /*inMonth*/,
441  7 /*onDayOfWeek*/,
442  1 /*onDayOfMonth*/,
443  8 /*atTimeCode*/,
444  16 /*atTimeModifier (kSuffixS + minute=0)*/,
445  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
446  4 /*letterIndex ("S")*/,
447  },
448  // Rule AT 2007 only - Mar lastSun 2:00s 0 S
449  {
450  -93 /*fromYearTiny (2007)*/,
451  -93 /*toYearTiny (2007)*/,
452  3 /*inMonth*/,
453  7 /*onDayOfWeek*/,
454  0 /*onDayOfMonth*/,
455  8 /*atTimeCode*/,
456  16 /*atTimeModifier (kSuffixS + minute=0)*/,
457  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
458  4 /*letterIndex ("S")*/,
459  },
460  // Rule AT 2008 max - Apr Sun>=1 2:00s 0 S
461  {
462  -92 /*fromYearTiny (2008)*/,
463  126 /*toYearTiny (32766)*/,
464  4 /*inMonth*/,
465  7 /*onDayOfWeek*/,
466  1 /*onDayOfMonth*/,
467  8 /*atTimeCode*/,
468  16 /*atTimeModifier (kSuffixS + minute=0)*/,
469  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
470  4 /*letterIndex ("S")*/,
471  },
472 
473 };
474 
475 const basic::ZonePolicy kZonePolicyAT ACE_TIME_PROGMEM = {
476  kZoneRulesAT /*rules*/,
477  9 /*numRules*/,
478 };
479 
480 //---------------------------------------------------------------------------
481 // Policy name: AV
482 // Rules: 10
483 //---------------------------------------------------------------------------
484 
485 static const basic::ZoneRule kZoneRulesAV[] ACE_TIME_PROGMEM = {
486  // Anchor: Rule AV 1991 1994 - Mar Sun>=1 2:00s 0 S
487  {
488  -127 /*fromYearTiny (-32767)*/,
489  -127 /*toYearTiny (-32767)*/,
490  1 /*inMonth*/,
491  0 /*onDayOfWeek*/,
492  1 /*onDayOfMonth*/,
493  0 /*atTimeCode*/,
494  0 /*atTimeModifier (kSuffixW + minute=0)*/,
495  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
496  4 /*letterIndex ("S")*/,
497  },
498  // Rule AV 1988 1999 - Oct lastSun 2:00s 1:00 D
499  {
500  -112 /*fromYearTiny (1988)*/,
501  -101 /*toYearTiny (1999)*/,
502  10 /*inMonth*/,
503  7 /*onDayOfWeek*/,
504  0 /*onDayOfMonth*/,
505  8 /*atTimeCode*/,
506  16 /*atTimeModifier (kSuffixS + minute=0)*/,
507  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
508  3 /*letterIndex ("D")*/,
509  },
510  // Rule AV 1991 1994 - Mar Sun>=1 2:00s 0 S
511  {
512  -109 /*fromYearTiny (1991)*/,
513  -106 /*toYearTiny (1994)*/,
514  3 /*inMonth*/,
515  7 /*onDayOfWeek*/,
516  1 /*onDayOfMonth*/,
517  8 /*atTimeCode*/,
518  16 /*atTimeModifier (kSuffixS + minute=0)*/,
519  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
520  4 /*letterIndex ("S")*/,
521  },
522  // Rule AV 1995 2005 - Mar lastSun 2:00s 0 S
523  {
524  -105 /*fromYearTiny (1995)*/,
525  -95 /*toYearTiny (2005)*/,
526  3 /*inMonth*/,
527  7 /*onDayOfWeek*/,
528  0 /*onDayOfMonth*/,
529  8 /*atTimeCode*/,
530  16 /*atTimeModifier (kSuffixS + minute=0)*/,
531  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
532  4 /*letterIndex ("S")*/,
533  },
534  // Rule AV 2000 only - Aug lastSun 2:00s 1:00 D
535  {
536  -100 /*fromYearTiny (2000)*/,
537  -100 /*toYearTiny (2000)*/,
538  8 /*inMonth*/,
539  7 /*onDayOfWeek*/,
540  0 /*onDayOfMonth*/,
541  8 /*atTimeCode*/,
542  16 /*atTimeModifier (kSuffixS + minute=0)*/,
543  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
544  3 /*letterIndex ("D")*/,
545  },
546  // Rule AV 2001 2007 - Oct lastSun 2:00s 1:00 D
547  {
548  -99 /*fromYearTiny (2001)*/,
549  -93 /*toYearTiny (2007)*/,
550  10 /*inMonth*/,
551  7 /*onDayOfWeek*/,
552  0 /*onDayOfMonth*/,
553  8 /*atTimeCode*/,
554  16 /*atTimeModifier (kSuffixS + minute=0)*/,
555  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
556  3 /*letterIndex ("D")*/,
557  },
558  // Rule AV 2006 only - Apr Sun>=1 2:00s 0 S
559  {
560  -94 /*fromYearTiny (2006)*/,
561  -94 /*toYearTiny (2006)*/,
562  4 /*inMonth*/,
563  7 /*onDayOfWeek*/,
564  1 /*onDayOfMonth*/,
565  8 /*atTimeCode*/,
566  16 /*atTimeModifier (kSuffixS + minute=0)*/,
567  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
568  4 /*letterIndex ("S")*/,
569  },
570  // Rule AV 2007 only - Mar lastSun 2:00s 0 S
571  {
572  -93 /*fromYearTiny (2007)*/,
573  -93 /*toYearTiny (2007)*/,
574  3 /*inMonth*/,
575  7 /*onDayOfWeek*/,
576  0 /*onDayOfMonth*/,
577  8 /*atTimeCode*/,
578  16 /*atTimeModifier (kSuffixS + minute=0)*/,
579  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
580  4 /*letterIndex ("S")*/,
581  },
582  // Rule AV 2008 max - Apr Sun>=1 2:00s 0 S
583  {
584  -92 /*fromYearTiny (2008)*/,
585  126 /*toYearTiny (32766)*/,
586  4 /*inMonth*/,
587  7 /*onDayOfWeek*/,
588  1 /*onDayOfMonth*/,
589  8 /*atTimeCode*/,
590  16 /*atTimeModifier (kSuffixS + minute=0)*/,
591  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
592  4 /*letterIndex ("S")*/,
593  },
594  // Rule AV 2008 max - Oct Sun>=1 2:00s 1:00 D
595  {
596  -92 /*fromYearTiny (2008)*/,
597  126 /*toYearTiny (32766)*/,
598  10 /*inMonth*/,
599  7 /*onDayOfWeek*/,
600  1 /*onDayOfMonth*/,
601  8 /*atTimeCode*/,
602  16 /*atTimeModifier (kSuffixS + minute=0)*/,
603  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
604  3 /*letterIndex ("D")*/,
605  },
606 
607 };
608 
609 const basic::ZonePolicy kZonePolicyAV ACE_TIME_PROGMEM = {
610  kZoneRulesAV /*rules*/,
611  10 /*numRules*/,
612 };
613 
614 //---------------------------------------------------------------------------
615 // Policy name: AW
616 // Rules: 5
617 //---------------------------------------------------------------------------
618 
619 static const basic::ZoneRule kZoneRulesAW[] ACE_TIME_PROGMEM = {
620  // Anchor: Rule AW 1992 only - Mar Sun>=1 2:00s 0 S
621  {
622  -127 /*fromYearTiny (-32767)*/,
623  -127 /*toYearTiny (-32767)*/,
624  1 /*inMonth*/,
625  0 /*onDayOfWeek*/,
626  1 /*onDayOfMonth*/,
627  0 /*atTimeCode*/,
628  0 /*atTimeModifier (kSuffixW + minute=0)*/,
629  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
630  4 /*letterIndex ("S")*/,
631  },
632  // Rule AW 1992 only - Mar Sun>=1 2:00s 0 S
633  {
634  -108 /*fromYearTiny (1992)*/,
635  -108 /*toYearTiny (1992)*/,
636  3 /*inMonth*/,
637  7 /*onDayOfWeek*/,
638  1 /*onDayOfMonth*/,
639  8 /*atTimeCode*/,
640  16 /*atTimeModifier (kSuffixS + minute=0)*/,
641  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
642  4 /*letterIndex ("S")*/,
643  },
644  // Rule AW 2006 only - Dec 3 2:00s 1:00 D
645  {
646  -94 /*fromYearTiny (2006)*/,
647  -94 /*toYearTiny (2006)*/,
648  12 /*inMonth*/,
649  0 /*onDayOfWeek*/,
650  3 /*onDayOfMonth*/,
651  8 /*atTimeCode*/,
652  16 /*atTimeModifier (kSuffixS + minute=0)*/,
653  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
654  3 /*letterIndex ("D")*/,
655  },
656  // Rule AW 2007 2009 - Mar lastSun 2:00s 0 S
657  {
658  -93 /*fromYearTiny (2007)*/,
659  -91 /*toYearTiny (2009)*/,
660  3 /*inMonth*/,
661  7 /*onDayOfWeek*/,
662  0 /*onDayOfMonth*/,
663  8 /*atTimeCode*/,
664  16 /*atTimeModifier (kSuffixS + minute=0)*/,
665  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
666  4 /*letterIndex ("S")*/,
667  },
668  // Rule AW 2007 2008 - Oct lastSun 2:00s 1:00 D
669  {
670  -93 /*fromYearTiny (2007)*/,
671  -92 /*toYearTiny (2008)*/,
672  10 /*inMonth*/,
673  7 /*onDayOfWeek*/,
674  0 /*onDayOfMonth*/,
675  8 /*atTimeCode*/,
676  16 /*atTimeModifier (kSuffixS + minute=0)*/,
677  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
678  3 /*letterIndex ("D")*/,
679  },
680 
681 };
682 
683 const basic::ZonePolicy kZonePolicyAW ACE_TIME_PROGMEM = {
684  kZoneRulesAW /*rules*/,
685  5 /*numRules*/,
686 };
687 
688 //---------------------------------------------------------------------------
689 // Policy name: Armenia
690 // Rules: 3
691 //---------------------------------------------------------------------------
692 
693 static const basic::ZoneRule kZoneRulesArmenia[] ACE_TIME_PROGMEM = {
694  // Anchor: Rule Armenia 2011 only - Oct lastSun 2:00s 0 -
695  {
696  -127 /*fromYearTiny (-32767)*/,
697  -127 /*toYearTiny (-32767)*/,
698  1 /*inMonth*/,
699  0 /*onDayOfWeek*/,
700  1 /*onDayOfMonth*/,
701  0 /*atTimeCode*/,
702  0 /*atTimeModifier (kSuffixW + minute=0)*/,
703  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
704  0 /*letterIndex ("")*/,
705  },
706  // Rule Armenia 2011 only - Mar lastSun 2:00s 1:00 -
707  {
708  -89 /*fromYearTiny (2011)*/,
709  -89 /*toYearTiny (2011)*/,
710  3 /*inMonth*/,
711  7 /*onDayOfWeek*/,
712  0 /*onDayOfMonth*/,
713  8 /*atTimeCode*/,
714  16 /*atTimeModifier (kSuffixS + minute=0)*/,
715  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
716  0 /*letterIndex ("")*/,
717  },
718  // Rule Armenia 2011 only - Oct lastSun 2:00s 0 -
719  {
720  -89 /*fromYearTiny (2011)*/,
721  -89 /*toYearTiny (2011)*/,
722  10 /*inMonth*/,
723  7 /*onDayOfWeek*/,
724  0 /*onDayOfMonth*/,
725  8 /*atTimeCode*/,
726  16 /*atTimeModifier (kSuffixS + minute=0)*/,
727  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
728  0 /*letterIndex ("")*/,
729  },
730 
731 };
732 
733 const basic::ZonePolicy kZonePolicyArmenia ACE_TIME_PROGMEM = {
734  kZoneRulesArmenia /*rules*/,
735  3 /*numRules*/,
736 };
737 
738 //---------------------------------------------------------------------------
739 // Policy name: Aus
740 // Rules: 1
741 //---------------------------------------------------------------------------
742 
743 static const basic::ZoneRule kZoneRulesAus[] ACE_TIME_PROGMEM = {
744  // Anchor: Rule Aus 1943 1944 - Mar lastSun 2:00s 0 S
745  {
746  -127 /*fromYearTiny (-32767)*/,
747  -127 /*toYearTiny (-32767)*/,
748  1 /*inMonth*/,
749  0 /*onDayOfWeek*/,
750  1 /*onDayOfMonth*/,
751  0 /*atTimeCode*/,
752  0 /*atTimeModifier (kSuffixW + minute=0)*/,
753  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
754  4 /*letterIndex ("S")*/,
755  },
756 
757 };
758 
759 const basic::ZonePolicy kZonePolicyAus ACE_TIME_PROGMEM = {
760  kZoneRulesAus /*rules*/,
761  1 /*numRules*/,
762 };
763 
764 //---------------------------------------------------------------------------
765 // Policy name: Azer
766 // Rules: 3
767 //---------------------------------------------------------------------------
768 
769 static const basic::ZoneRule kZoneRulesAzer[] ACE_TIME_PROGMEM = {
770  // Anchor: Rule Azer 1997 2015 - Oct lastSun 5:00 0 -
771  {
772  -127 /*fromYearTiny (-32767)*/,
773  -127 /*toYearTiny (-32767)*/,
774  1 /*inMonth*/,
775  0 /*onDayOfWeek*/,
776  1 /*onDayOfMonth*/,
777  0 /*atTimeCode*/,
778  0 /*atTimeModifier (kSuffixW + minute=0)*/,
779  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
780  0 /*letterIndex ("")*/,
781  },
782  // Rule Azer 1997 2015 - Mar lastSun 4:00 1:00 -
783  {
784  -103 /*fromYearTiny (1997)*/,
785  -85 /*toYearTiny (2015)*/,
786  3 /*inMonth*/,
787  7 /*onDayOfWeek*/,
788  0 /*onDayOfMonth*/,
789  16 /*atTimeCode*/,
790  0 /*atTimeModifier (kSuffixW + minute=0)*/,
791  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
792  0 /*letterIndex ("")*/,
793  },
794  // Rule Azer 1997 2015 - Oct lastSun 5:00 0 -
795  {
796  -103 /*fromYearTiny (1997)*/,
797  -85 /*toYearTiny (2015)*/,
798  10 /*inMonth*/,
799  7 /*onDayOfWeek*/,
800  0 /*onDayOfMonth*/,
801  20 /*atTimeCode*/,
802  0 /*atTimeModifier (kSuffixW + minute=0)*/,
803  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
804  0 /*letterIndex ("")*/,
805  },
806 
807 };
808 
809 const basic::ZonePolicy kZonePolicyAzer ACE_TIME_PROGMEM = {
810  kZoneRulesAzer /*rules*/,
811  3 /*numRules*/,
812 };
813 
814 //---------------------------------------------------------------------------
815 // Policy name: Barb
816 // Rules: 1
817 //---------------------------------------------------------------------------
818 
819 static const basic::ZoneRule kZoneRulesBarb[] ACE_TIME_PROGMEM = {
820  // Anchor: Rule Barb 1980 only - Sep 25 2:00 0 S
821  {
822  -127 /*fromYearTiny (-32767)*/,
823  -127 /*toYearTiny (-32767)*/,
824  1 /*inMonth*/,
825  0 /*onDayOfWeek*/,
826  1 /*onDayOfMonth*/,
827  0 /*atTimeCode*/,
828  0 /*atTimeModifier (kSuffixW + minute=0)*/,
829  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
830  4 /*letterIndex ("S")*/,
831  },
832 
833 };
834 
835 const basic::ZonePolicy kZonePolicyBarb ACE_TIME_PROGMEM = {
836  kZoneRulesBarb /*rules*/,
837  1 /*numRules*/,
838 };
839 
840 //---------------------------------------------------------------------------
841 // Policy name: Belize
842 // Rules: 1
843 //---------------------------------------------------------------------------
844 
845 static const basic::ZoneRule kZoneRulesBelize[] ACE_TIME_PROGMEM = {
846  // Anchor: Rule Belize 1983 only - Feb 12 0:00 0 CST
847  {
848  -127 /*fromYearTiny (-32767)*/,
849  -127 /*toYearTiny (-32767)*/,
850  1 /*inMonth*/,
851  0 /*onDayOfWeek*/,
852  1 /*onDayOfMonth*/,
853  0 /*atTimeCode*/,
854  0 /*atTimeModifier (kSuffixW + minute=0)*/,
855  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
856  2 /*letterIndex ("CST")*/,
857  },
858 
859 };
860 
861 const basic::ZonePolicy kZonePolicyBelize ACE_TIME_PROGMEM = {
862  kZoneRulesBelize /*rules*/,
863  1 /*numRules*/,
864 };
865 
866 //---------------------------------------------------------------------------
867 // Policy name: Brazil
868 // Rules: 21
869 //---------------------------------------------------------------------------
870 
871 static const basic::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = {
872  // Anchor: Rule Brazil 1999 only - Feb 21 0:00 0 -
873  {
874  -127 /*fromYearTiny (-32767)*/,
875  -127 /*toYearTiny (-32767)*/,
876  1 /*inMonth*/,
877  0 /*onDayOfWeek*/,
878  1 /*onDayOfMonth*/,
879  0 /*atTimeCode*/,
880  0 /*atTimeModifier (kSuffixW + minute=0)*/,
881  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
882  0 /*letterIndex ("")*/,
883  },
884  // Rule Brazil 1998 only - Oct 11 0:00 1:00 -
885  {
886  -102 /*fromYearTiny (1998)*/,
887  -102 /*toYearTiny (1998)*/,
888  10 /*inMonth*/,
889  0 /*onDayOfWeek*/,
890  11 /*onDayOfMonth*/,
891  0 /*atTimeCode*/,
892  0 /*atTimeModifier (kSuffixW + minute=0)*/,
893  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
894  0 /*letterIndex ("")*/,
895  },
896  // Rule Brazil 1999 only - Feb 21 0:00 0 -
897  {
898  -101 /*fromYearTiny (1999)*/,
899  -101 /*toYearTiny (1999)*/,
900  2 /*inMonth*/,
901  0 /*onDayOfWeek*/,
902  21 /*onDayOfMonth*/,
903  0 /*atTimeCode*/,
904  0 /*atTimeModifier (kSuffixW + minute=0)*/,
905  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
906  0 /*letterIndex ("")*/,
907  },
908  // Rule Brazil 1999 only - Oct 3 0:00 1:00 -
909  {
910  -101 /*fromYearTiny (1999)*/,
911  -101 /*toYearTiny (1999)*/,
912  10 /*inMonth*/,
913  0 /*onDayOfWeek*/,
914  3 /*onDayOfMonth*/,
915  0 /*atTimeCode*/,
916  0 /*atTimeModifier (kSuffixW + minute=0)*/,
917  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
918  0 /*letterIndex ("")*/,
919  },
920  // Rule Brazil 2000 only - Feb 27 0:00 0 -
921  {
922  -100 /*fromYearTiny (2000)*/,
923  -100 /*toYearTiny (2000)*/,
924  2 /*inMonth*/,
925  0 /*onDayOfWeek*/,
926  27 /*onDayOfMonth*/,
927  0 /*atTimeCode*/,
928  0 /*atTimeModifier (kSuffixW + minute=0)*/,
929  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
930  0 /*letterIndex ("")*/,
931  },
932  // Rule Brazil 2000 2001 - Oct Sun>=8 0:00 1:00 -
933  {
934  -100 /*fromYearTiny (2000)*/,
935  -99 /*toYearTiny (2001)*/,
936  10 /*inMonth*/,
937  7 /*onDayOfWeek*/,
938  8 /*onDayOfMonth*/,
939  0 /*atTimeCode*/,
940  0 /*atTimeModifier (kSuffixW + minute=0)*/,
941  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
942  0 /*letterIndex ("")*/,
943  },
944  // Rule Brazil 2001 2006 - Feb Sun>=15 0:00 0 -
945  {
946  -99 /*fromYearTiny (2001)*/,
947  -94 /*toYearTiny (2006)*/,
948  2 /*inMonth*/,
949  7 /*onDayOfWeek*/,
950  15 /*onDayOfMonth*/,
951  0 /*atTimeCode*/,
952  0 /*atTimeModifier (kSuffixW + minute=0)*/,
953  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
954  0 /*letterIndex ("")*/,
955  },
956  // Rule Brazil 2002 only - Nov 3 0:00 1:00 -
957  {
958  -98 /*fromYearTiny (2002)*/,
959  -98 /*toYearTiny (2002)*/,
960  11 /*inMonth*/,
961  0 /*onDayOfWeek*/,
962  3 /*onDayOfMonth*/,
963  0 /*atTimeCode*/,
964  0 /*atTimeModifier (kSuffixW + minute=0)*/,
965  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
966  0 /*letterIndex ("")*/,
967  },
968  // Rule Brazil 2003 only - Oct 19 0:00 1:00 -
969  {
970  -97 /*fromYearTiny (2003)*/,
971  -97 /*toYearTiny (2003)*/,
972  10 /*inMonth*/,
973  0 /*onDayOfWeek*/,
974  19 /*onDayOfMonth*/,
975  0 /*atTimeCode*/,
976  0 /*atTimeModifier (kSuffixW + minute=0)*/,
977  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
978  0 /*letterIndex ("")*/,
979  },
980  // Rule Brazil 2004 only - Nov 2 0:00 1:00 -
981  {
982  -96 /*fromYearTiny (2004)*/,
983  -96 /*toYearTiny (2004)*/,
984  11 /*inMonth*/,
985  0 /*onDayOfWeek*/,
986  2 /*onDayOfMonth*/,
987  0 /*atTimeCode*/,
988  0 /*atTimeModifier (kSuffixW + minute=0)*/,
989  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
990  0 /*letterIndex ("")*/,
991  },
992  // Rule Brazil 2005 only - Oct 16 0:00 1:00 -
993  {
994  -95 /*fromYearTiny (2005)*/,
995  -95 /*toYearTiny (2005)*/,
996  10 /*inMonth*/,
997  0 /*onDayOfWeek*/,
998  16 /*onDayOfMonth*/,
999  0 /*atTimeCode*/,
1000  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1001  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1002  0 /*letterIndex ("")*/,
1003  },
1004  // Rule Brazil 2006 only - Nov 5 0:00 1:00 -
1005  {
1006  -94 /*fromYearTiny (2006)*/,
1007  -94 /*toYearTiny (2006)*/,
1008  11 /*inMonth*/,
1009  0 /*onDayOfWeek*/,
1010  5 /*onDayOfMonth*/,
1011  0 /*atTimeCode*/,
1012  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1013  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1014  0 /*letterIndex ("")*/,
1015  },
1016  // Rule Brazil 2007 only - Feb 25 0:00 0 -
1017  {
1018  -93 /*fromYearTiny (2007)*/,
1019  -93 /*toYearTiny (2007)*/,
1020  2 /*inMonth*/,
1021  0 /*onDayOfWeek*/,
1022  25 /*onDayOfMonth*/,
1023  0 /*atTimeCode*/,
1024  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1025  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1026  0 /*letterIndex ("")*/,
1027  },
1028  // Rule Brazil 2007 only - Oct Sun>=8 0:00 1:00 -
1029  {
1030  -93 /*fromYearTiny (2007)*/,
1031  -93 /*toYearTiny (2007)*/,
1032  10 /*inMonth*/,
1033  7 /*onDayOfWeek*/,
1034  8 /*onDayOfMonth*/,
1035  0 /*atTimeCode*/,
1036  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1037  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1038  0 /*letterIndex ("")*/,
1039  },
1040  // Rule Brazil 2008 2017 - Oct Sun>=15 0:00 1:00 -
1041  {
1042  -92 /*fromYearTiny (2008)*/,
1043  -83 /*toYearTiny (2017)*/,
1044  10 /*inMonth*/,
1045  7 /*onDayOfWeek*/,
1046  15 /*onDayOfMonth*/,
1047  0 /*atTimeCode*/,
1048  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1049  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1050  0 /*letterIndex ("")*/,
1051  },
1052  // Rule Brazil 2008 2011 - Feb Sun>=15 0:00 0 -
1053  {
1054  -92 /*fromYearTiny (2008)*/,
1055  -89 /*toYearTiny (2011)*/,
1056  2 /*inMonth*/,
1057  7 /*onDayOfWeek*/,
1058  15 /*onDayOfMonth*/,
1059  0 /*atTimeCode*/,
1060  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1061  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1062  0 /*letterIndex ("")*/,
1063  },
1064  // Rule Brazil 2012 only - Feb Sun>=22 0:00 0 -
1065  {
1066  -88 /*fromYearTiny (2012)*/,
1067  -88 /*toYearTiny (2012)*/,
1068  2 /*inMonth*/,
1069  7 /*onDayOfWeek*/,
1070  22 /*onDayOfMonth*/,
1071  0 /*atTimeCode*/,
1072  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1073  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1074  0 /*letterIndex ("")*/,
1075  },
1076  // Rule Brazil 2013 2014 - Feb Sun>=15 0:00 0 -
1077  {
1078  -87 /*fromYearTiny (2013)*/,
1079  -86 /*toYearTiny (2014)*/,
1080  2 /*inMonth*/,
1081  7 /*onDayOfWeek*/,
1082  15 /*onDayOfMonth*/,
1083  0 /*atTimeCode*/,
1084  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1085  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1086  0 /*letterIndex ("")*/,
1087  },
1088  // Rule Brazil 2015 only - Feb Sun>=22 0:00 0 -
1089  {
1090  -85 /*fromYearTiny (2015)*/,
1091  -85 /*toYearTiny (2015)*/,
1092  2 /*inMonth*/,
1093  7 /*onDayOfWeek*/,
1094  22 /*onDayOfMonth*/,
1095  0 /*atTimeCode*/,
1096  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1097  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1098  0 /*letterIndex ("")*/,
1099  },
1100  // Rule Brazil 2016 2019 - Feb Sun>=15 0:00 0 -
1101  {
1102  -84 /*fromYearTiny (2016)*/,
1103  -81 /*toYearTiny (2019)*/,
1104  2 /*inMonth*/,
1105  7 /*onDayOfWeek*/,
1106  15 /*onDayOfMonth*/,
1107  0 /*atTimeCode*/,
1108  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1109  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1110  0 /*letterIndex ("")*/,
1111  },
1112  // Rule Brazil 2018 only - Nov Sun>=1 0:00 1:00 -
1113  {
1114  -82 /*fromYearTiny (2018)*/,
1115  -82 /*toYearTiny (2018)*/,
1116  11 /*inMonth*/,
1117  7 /*onDayOfWeek*/,
1118  1 /*onDayOfMonth*/,
1119  0 /*atTimeCode*/,
1120  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1121  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1122  0 /*letterIndex ("")*/,
1123  },
1124 
1125 };
1126 
1127 const basic::ZonePolicy kZonePolicyBrazil ACE_TIME_PROGMEM = {
1128  kZoneRulesBrazil /*rules*/,
1129  21 /*numRules*/,
1130 };
1131 
1132 //---------------------------------------------------------------------------
1133 // Policy name: CO
1134 // Rules: 1
1135 //---------------------------------------------------------------------------
1136 
1137 static const basic::ZoneRule kZoneRulesCO[] ACE_TIME_PROGMEM = {
1138  // Anchor: Rule CO 1993 only - Feb 6 24:00 0 -
1139  {
1140  -127 /*fromYearTiny (-32767)*/,
1141  -127 /*toYearTiny (-32767)*/,
1142  1 /*inMonth*/,
1143  0 /*onDayOfWeek*/,
1144  1 /*onDayOfMonth*/,
1145  0 /*atTimeCode*/,
1146  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1147  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1148  0 /*letterIndex ("")*/,
1149  },
1150 
1151 };
1152 
1153 const basic::ZonePolicy kZonePolicyCO ACE_TIME_PROGMEM = {
1154  kZoneRulesCO /*rules*/,
1155  1 /*numRules*/,
1156 };
1157 
1158 //---------------------------------------------------------------------------
1159 // Policy name: CR
1160 // Rules: 1
1161 //---------------------------------------------------------------------------
1162 
1163 static const basic::ZoneRule kZoneRulesCR[] ACE_TIME_PROGMEM = {
1164  // Anchor: Rule CR 1992 only - Mar 15 0:00 0 S
1165  {
1166  -127 /*fromYearTiny (-32767)*/,
1167  -127 /*toYearTiny (-32767)*/,
1168  1 /*inMonth*/,
1169  0 /*onDayOfWeek*/,
1170  1 /*onDayOfMonth*/,
1171  0 /*atTimeCode*/,
1172  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1173  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1174  4 /*letterIndex ("S")*/,
1175  },
1176 
1177 };
1178 
1179 const basic::ZonePolicy kZonePolicyCR ACE_TIME_PROGMEM = {
1180  kZoneRulesCR /*rules*/,
1181  1 /*numRules*/,
1182 };
1183 
1184 //---------------------------------------------------------------------------
1185 // Policy name: Canada
1186 // Rules: 6
1187 //---------------------------------------------------------------------------
1188 
1189 static const basic::ZoneRule kZoneRulesCanada[] ACE_TIME_PROGMEM = {
1190  // Anchor: Rule Canada 1974 2006 - Oct lastSun 2:00 0 S
1191  {
1192  -127 /*fromYearTiny (-32767)*/,
1193  -127 /*toYearTiny (-32767)*/,
1194  1 /*inMonth*/,
1195  0 /*onDayOfWeek*/,
1196  1 /*onDayOfMonth*/,
1197  0 /*atTimeCode*/,
1198  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1199  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1200  4 /*letterIndex ("S")*/,
1201  },
1202  // Rule Canada 1974 1986 - Apr lastSun 2:00 1:00 D
1203  {
1204  -126 /*fromYearTiny (1974)*/,
1205  -114 /*toYearTiny (1986)*/,
1206  4 /*inMonth*/,
1207  7 /*onDayOfWeek*/,
1208  0 /*onDayOfMonth*/,
1209  8 /*atTimeCode*/,
1210  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1211  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1212  3 /*letterIndex ("D")*/,
1213  },
1214  // Rule Canada 1974 2006 - Oct lastSun 2:00 0 S
1215  {
1216  -126 /*fromYearTiny (1974)*/,
1217  -94 /*toYearTiny (2006)*/,
1218  10 /*inMonth*/,
1219  7 /*onDayOfWeek*/,
1220  0 /*onDayOfMonth*/,
1221  8 /*atTimeCode*/,
1222  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1223  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1224  4 /*letterIndex ("S")*/,
1225  },
1226  // Rule Canada 1987 2006 - Apr Sun>=1 2:00 1:00 D
1227  {
1228  -113 /*fromYearTiny (1987)*/,
1229  -94 /*toYearTiny (2006)*/,
1230  4 /*inMonth*/,
1231  7 /*onDayOfWeek*/,
1232  1 /*onDayOfMonth*/,
1233  8 /*atTimeCode*/,
1234  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1235  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1236  3 /*letterIndex ("D")*/,
1237  },
1238  // Rule Canada 2007 max - Mar Sun>=8 2:00 1:00 D
1239  {
1240  -93 /*fromYearTiny (2007)*/,
1241  126 /*toYearTiny (32766)*/,
1242  3 /*inMonth*/,
1243  7 /*onDayOfWeek*/,
1244  8 /*onDayOfMonth*/,
1245  8 /*atTimeCode*/,
1246  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1247  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1248  3 /*letterIndex ("D")*/,
1249  },
1250  // Rule Canada 2007 max - Nov Sun>=1 2:00 0 S
1251  {
1252  -93 /*fromYearTiny (2007)*/,
1253  126 /*toYearTiny (32766)*/,
1254  11 /*inMonth*/,
1255  7 /*onDayOfWeek*/,
1256  1 /*onDayOfMonth*/,
1257  8 /*atTimeCode*/,
1258  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1259  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1260  4 /*letterIndex ("S")*/,
1261  },
1262 
1263 };
1264 
1265 const basic::ZonePolicy kZonePolicyCanada ACE_TIME_PROGMEM = {
1266  kZoneRulesCanada /*rules*/,
1267  6 /*numRules*/,
1268 };
1269 
1270 //---------------------------------------------------------------------------
1271 // Policy name: Chatham
1272 // Rules: 6
1273 //---------------------------------------------------------------------------
1274 
1275 static const basic::ZoneRule kZoneRulesChatham[] ACE_TIME_PROGMEM = {
1276  // Anchor: Rule Chatham 1990 2007 - Mar Sun>=15 2:45s 0 -
1277  {
1278  -127 /*fromYearTiny (-32767)*/,
1279  -127 /*toYearTiny (-32767)*/,
1280  1 /*inMonth*/,
1281  0 /*onDayOfWeek*/,
1282  1 /*onDayOfMonth*/,
1283  0 /*atTimeCode*/,
1284  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1285  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1286  0 /*letterIndex ("")*/,
1287  },
1288  // Rule Chatham 1989 only - Oct Sun>=8 2:45s 1:00 -
1289  {
1290  -111 /*fromYearTiny (1989)*/,
1291  -111 /*toYearTiny (1989)*/,
1292  10 /*inMonth*/,
1293  7 /*onDayOfWeek*/,
1294  8 /*onDayOfMonth*/,
1295  11 /*atTimeCode*/,
1296  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1297  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1298  0 /*letterIndex ("")*/,
1299  },
1300  // Rule Chatham 1990 2006 - Oct Sun>=1 2:45s 1:00 -
1301  {
1302  -110 /*fromYearTiny (1990)*/,
1303  -94 /*toYearTiny (2006)*/,
1304  10 /*inMonth*/,
1305  7 /*onDayOfWeek*/,
1306  1 /*onDayOfMonth*/,
1307  11 /*atTimeCode*/,
1308  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1309  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1310  0 /*letterIndex ("")*/,
1311  },
1312  // Rule Chatham 1990 2007 - Mar Sun>=15 2:45s 0 -
1313  {
1314  -110 /*fromYearTiny (1990)*/,
1315  -93 /*toYearTiny (2007)*/,
1316  3 /*inMonth*/,
1317  7 /*onDayOfWeek*/,
1318  15 /*onDayOfMonth*/,
1319  11 /*atTimeCode*/,
1320  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1321  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1322  0 /*letterIndex ("")*/,
1323  },
1324  // Rule Chatham 2007 max - Sep lastSun 2:45s 1:00 -
1325  {
1326  -93 /*fromYearTiny (2007)*/,
1327  126 /*toYearTiny (32766)*/,
1328  9 /*inMonth*/,
1329  7 /*onDayOfWeek*/,
1330  0 /*onDayOfMonth*/,
1331  11 /*atTimeCode*/,
1332  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1333  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1334  0 /*letterIndex ("")*/,
1335  },
1336  // Rule Chatham 2008 max - Apr Sun>=1 2:45s 0 -
1337  {
1338  -92 /*fromYearTiny (2008)*/,
1339  126 /*toYearTiny (32766)*/,
1340  4 /*inMonth*/,
1341  7 /*onDayOfWeek*/,
1342  1 /*onDayOfMonth*/,
1343  11 /*atTimeCode*/,
1344  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1345  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1346  0 /*letterIndex ("")*/,
1347  },
1348 
1349 };
1350 
1351 const basic::ZonePolicy kZonePolicyChatham ACE_TIME_PROGMEM = {
1352  kZoneRulesChatham /*rules*/,
1353  6 /*numRules*/,
1354 };
1355 
1356 //---------------------------------------------------------------------------
1357 // Policy name: Chile
1358 // Rules: 18
1359 //---------------------------------------------------------------------------
1360 
1361 static const basic::ZoneRule kZoneRulesChile[] ACE_TIME_PROGMEM = {
1362  // Anchor: Rule Chile 1999 only - Apr 4 3:00u 0 -
1363  {
1364  -127 /*fromYearTiny (-32767)*/,
1365  -127 /*toYearTiny (-32767)*/,
1366  1 /*inMonth*/,
1367  0 /*onDayOfWeek*/,
1368  1 /*onDayOfMonth*/,
1369  0 /*atTimeCode*/,
1370  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1371  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1372  0 /*letterIndex ("")*/,
1373  },
1374  // Rule Chile 1998 only - Sep 27 4:00u 1:00 -
1375  {
1376  -102 /*fromYearTiny (1998)*/,
1377  -102 /*toYearTiny (1998)*/,
1378  9 /*inMonth*/,
1379  0 /*onDayOfWeek*/,
1380  27 /*onDayOfMonth*/,
1381  16 /*atTimeCode*/,
1382  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1383  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1384  0 /*letterIndex ("")*/,
1385  },
1386  // Rule Chile 1999 only - Apr 4 3:00u 0 -
1387  {
1388  -101 /*fromYearTiny (1999)*/,
1389  -101 /*toYearTiny (1999)*/,
1390  4 /*inMonth*/,
1391  0 /*onDayOfWeek*/,
1392  4 /*onDayOfMonth*/,
1393  12 /*atTimeCode*/,
1394  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1395  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1396  0 /*letterIndex ("")*/,
1397  },
1398  // Rule Chile 1999 2010 - Oct Sun>=9 4:00u 1:00 -
1399  {
1400  -101 /*fromYearTiny (1999)*/,
1401  -90 /*toYearTiny (2010)*/,
1402  10 /*inMonth*/,
1403  7 /*onDayOfWeek*/,
1404  9 /*onDayOfMonth*/,
1405  16 /*atTimeCode*/,
1406  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1407  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1408  0 /*letterIndex ("")*/,
1409  },
1410  // Rule Chile 2000 2007 - Mar Sun>=9 3:00u 0 -
1411  {
1412  -100 /*fromYearTiny (2000)*/,
1413  -93 /*toYearTiny (2007)*/,
1414  3 /*inMonth*/,
1415  7 /*onDayOfWeek*/,
1416  9 /*onDayOfMonth*/,
1417  12 /*atTimeCode*/,
1418  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1419  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1420  0 /*letterIndex ("")*/,
1421  },
1422  // Rule Chile 2008 only - Mar 30 3:00u 0 -
1423  {
1424  -92 /*fromYearTiny (2008)*/,
1425  -92 /*toYearTiny (2008)*/,
1426  3 /*inMonth*/,
1427  0 /*onDayOfWeek*/,
1428  30 /*onDayOfMonth*/,
1429  12 /*atTimeCode*/,
1430  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1431  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1432  0 /*letterIndex ("")*/,
1433  },
1434  // Rule Chile 2009 only - Mar Sun>=9 3:00u 0 -
1435  {
1436  -91 /*fromYearTiny (2009)*/,
1437  -91 /*toYearTiny (2009)*/,
1438  3 /*inMonth*/,
1439  7 /*onDayOfWeek*/,
1440  9 /*onDayOfMonth*/,
1441  12 /*atTimeCode*/,
1442  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1443  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1444  0 /*letterIndex ("")*/,
1445  },
1446  // Rule Chile 2010 only - Apr Sun>=1 3:00u 0 -
1447  {
1448  -90 /*fromYearTiny (2010)*/,
1449  -90 /*toYearTiny (2010)*/,
1450  4 /*inMonth*/,
1451  7 /*onDayOfWeek*/,
1452  1 /*onDayOfMonth*/,
1453  12 /*atTimeCode*/,
1454  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1455  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1456  0 /*letterIndex ("")*/,
1457  },
1458  // Rule Chile 2011 only - May Sun>=2 3:00u 0 -
1459  {
1460  -89 /*fromYearTiny (2011)*/,
1461  -89 /*toYearTiny (2011)*/,
1462  5 /*inMonth*/,
1463  7 /*onDayOfWeek*/,
1464  2 /*onDayOfMonth*/,
1465  12 /*atTimeCode*/,
1466  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1467  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1468  0 /*letterIndex ("")*/,
1469  },
1470  // Rule Chile 2011 only - Aug Sun>=16 4:00u 1:00 -
1471  {
1472  -89 /*fromYearTiny (2011)*/,
1473  -89 /*toYearTiny (2011)*/,
1474  8 /*inMonth*/,
1475  7 /*onDayOfWeek*/,
1476  16 /*onDayOfMonth*/,
1477  16 /*atTimeCode*/,
1478  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1479  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1480  0 /*letterIndex ("")*/,
1481  },
1482  // Rule Chile 2012 2014 - Apr Sun>=23 3:00u 0 -
1483  {
1484  -88 /*fromYearTiny (2012)*/,
1485  -86 /*toYearTiny (2014)*/,
1486  4 /*inMonth*/,
1487  7 /*onDayOfWeek*/,
1488  23 /*onDayOfMonth*/,
1489  12 /*atTimeCode*/,
1490  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1491  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1492  0 /*letterIndex ("")*/,
1493  },
1494  // Rule Chile 2012 2014 - Sep Sun>=2 4:00u 1:00 -
1495  {
1496  -88 /*fromYearTiny (2012)*/,
1497  -86 /*toYearTiny (2014)*/,
1498  9 /*inMonth*/,
1499  7 /*onDayOfWeek*/,
1500  2 /*onDayOfMonth*/,
1501  16 /*atTimeCode*/,
1502  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1503  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1504  0 /*letterIndex ("")*/,
1505  },
1506  // Rule Chile 2016 2018 - May Sun>=9 3:00u 0 -
1507  {
1508  -84 /*fromYearTiny (2016)*/,
1509  -82 /*toYearTiny (2018)*/,
1510  5 /*inMonth*/,
1511  7 /*onDayOfWeek*/,
1512  9 /*onDayOfMonth*/,
1513  12 /*atTimeCode*/,
1514  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1515  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1516  0 /*letterIndex ("")*/,
1517  },
1518  // Rule Chile 2016 2018 - Aug Sun>=9 4:00u 1:00 -
1519  {
1520  -84 /*fromYearTiny (2016)*/,
1521  -82 /*toYearTiny (2018)*/,
1522  8 /*inMonth*/,
1523  7 /*onDayOfWeek*/,
1524  9 /*onDayOfMonth*/,
1525  16 /*atTimeCode*/,
1526  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1527  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1528  0 /*letterIndex ("")*/,
1529  },
1530  // Rule Chile 2019 max - Apr Sun>=2 3:00u 0 -
1531  {
1532  -81 /*fromYearTiny (2019)*/,
1533  126 /*toYearTiny (32766)*/,
1534  4 /*inMonth*/,
1535  7 /*onDayOfWeek*/,
1536  2 /*onDayOfMonth*/,
1537  12 /*atTimeCode*/,
1538  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1539  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1540  0 /*letterIndex ("")*/,
1541  },
1542  // Rule Chile 2019 2021 - Sep Sun>=2 4:00u 1:00 -
1543  {
1544  -81 /*fromYearTiny (2019)*/,
1545  -79 /*toYearTiny (2021)*/,
1546  9 /*inMonth*/,
1547  7 /*onDayOfWeek*/,
1548  2 /*onDayOfMonth*/,
1549  16 /*atTimeCode*/,
1550  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1551  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1552  0 /*letterIndex ("")*/,
1553  },
1554  // Rule Chile 2022 only - Sep Sun>=9 4:00u 1:00 -
1555  {
1556  -78 /*fromYearTiny (2022)*/,
1557  -78 /*toYearTiny (2022)*/,
1558  9 /*inMonth*/,
1559  7 /*onDayOfWeek*/,
1560  9 /*onDayOfMonth*/,
1561  16 /*atTimeCode*/,
1562  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1563  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1564  0 /*letterIndex ("")*/,
1565  },
1566  // Rule Chile 2023 max - Sep Sun>=2 4:00u 1:00 -
1567  {
1568  -77 /*fromYearTiny (2023)*/,
1569  126 /*toYearTiny (32766)*/,
1570  9 /*inMonth*/,
1571  7 /*onDayOfWeek*/,
1572  2 /*onDayOfMonth*/,
1573  16 /*atTimeCode*/,
1574  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1575  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1576  0 /*letterIndex ("")*/,
1577  },
1578 
1579 };
1580 
1581 const basic::ZonePolicy kZonePolicyChile ACE_TIME_PROGMEM = {
1582  kZoneRulesChile /*rules*/,
1583  18 /*numRules*/,
1584 };
1585 
1586 //---------------------------------------------------------------------------
1587 // Policy name: Cook
1588 // Rules: 1
1589 //---------------------------------------------------------------------------
1590 
1591 static const basic::ZoneRule kZoneRulesCook[] ACE_TIME_PROGMEM = {
1592  // Anchor: Rule Cook 1979 1991 - Mar Sun>=1 0:00 0 -
1593  {
1594  -127 /*fromYearTiny (-32767)*/,
1595  -127 /*toYearTiny (-32767)*/,
1596  1 /*inMonth*/,
1597  0 /*onDayOfWeek*/,
1598  1 /*onDayOfMonth*/,
1599  0 /*atTimeCode*/,
1600  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1601  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1602  0 /*letterIndex ("")*/,
1603  },
1604 
1605 };
1606 
1607 const basic::ZonePolicy kZonePolicyCook ACE_TIME_PROGMEM = {
1608  kZoneRulesCook /*rules*/,
1609  1 /*numRules*/,
1610 };
1611 
1612 //---------------------------------------------------------------------------
1613 // Policy name: Cuba
1614 // Rules: 15
1615 //---------------------------------------------------------------------------
1616 
1617 static const basic::ZoneRule kZoneRulesCuba[] ACE_TIME_PROGMEM = {
1618  // Anchor: Rule Cuba 1997 only - Oct 12 0:00s 0 S
1619  {
1620  -127 /*fromYearTiny (-32767)*/,
1621  -127 /*toYearTiny (-32767)*/,
1622  1 /*inMonth*/,
1623  0 /*onDayOfWeek*/,
1624  1 /*onDayOfMonth*/,
1625  0 /*atTimeCode*/,
1626  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1627  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1628  4 /*letterIndex ("S")*/,
1629  },
1630  // Rule Cuba 1997 only - Oct 12 0:00s 0 S
1631  {
1632  -103 /*fromYearTiny (1997)*/,
1633  -103 /*toYearTiny (1997)*/,
1634  10 /*inMonth*/,
1635  0 /*onDayOfWeek*/,
1636  12 /*onDayOfMonth*/,
1637  0 /*atTimeCode*/,
1638  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1639  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1640  4 /*letterIndex ("S")*/,
1641  },
1642  // Rule Cuba 1998 1999 - Mar lastSun 0:00s 1:00 D
1643  {
1644  -102 /*fromYearTiny (1998)*/,
1645  -101 /*toYearTiny (1999)*/,
1646  3 /*inMonth*/,
1647  7 /*onDayOfWeek*/,
1648  0 /*onDayOfMonth*/,
1649  0 /*atTimeCode*/,
1650  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1651  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1652  3 /*letterIndex ("D")*/,
1653  },
1654  // Rule Cuba 1998 2003 - Oct lastSun 0:00s 0 S
1655  {
1656  -102 /*fromYearTiny (1998)*/,
1657  -97 /*toYearTiny (2003)*/,
1658  10 /*inMonth*/,
1659  7 /*onDayOfWeek*/,
1660  0 /*onDayOfMonth*/,
1661  0 /*atTimeCode*/,
1662  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1663  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1664  4 /*letterIndex ("S")*/,
1665  },
1666  // Rule Cuba 2000 2003 - Apr Sun>=1 0:00s 1:00 D
1667  {
1668  -100 /*fromYearTiny (2000)*/,
1669  -97 /*toYearTiny (2003)*/,
1670  4 /*inMonth*/,
1671  7 /*onDayOfWeek*/,
1672  1 /*onDayOfMonth*/,
1673  0 /*atTimeCode*/,
1674  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1675  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1676  3 /*letterIndex ("D")*/,
1677  },
1678  // Rule Cuba 2004 only - Mar lastSun 0:00s 1:00 D
1679  {
1680  -96 /*fromYearTiny (2004)*/,
1681  -96 /*toYearTiny (2004)*/,
1682  3 /*inMonth*/,
1683  7 /*onDayOfWeek*/,
1684  0 /*onDayOfMonth*/,
1685  0 /*atTimeCode*/,
1686  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1687  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1688  3 /*letterIndex ("D")*/,
1689  },
1690  // Rule Cuba 2006 2010 - Oct lastSun 0:00s 0 S
1691  {
1692  -94 /*fromYearTiny (2006)*/,
1693  -90 /*toYearTiny (2010)*/,
1694  10 /*inMonth*/,
1695  7 /*onDayOfWeek*/,
1696  0 /*onDayOfMonth*/,
1697  0 /*atTimeCode*/,
1698  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1699  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1700  4 /*letterIndex ("S")*/,
1701  },
1702  // Rule Cuba 2007 only - Mar Sun>=8 0:00s 1:00 D
1703  {
1704  -93 /*fromYearTiny (2007)*/,
1705  -93 /*toYearTiny (2007)*/,
1706  3 /*inMonth*/,
1707  7 /*onDayOfWeek*/,
1708  8 /*onDayOfMonth*/,
1709  0 /*atTimeCode*/,
1710  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1711  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1712  3 /*letterIndex ("D")*/,
1713  },
1714  // Rule Cuba 2008 only - Mar Sun>=15 0:00s 1:00 D
1715  {
1716  -92 /*fromYearTiny (2008)*/,
1717  -92 /*toYearTiny (2008)*/,
1718  3 /*inMonth*/,
1719  7 /*onDayOfWeek*/,
1720  15 /*onDayOfMonth*/,
1721  0 /*atTimeCode*/,
1722  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1723  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1724  3 /*letterIndex ("D")*/,
1725  },
1726  // Rule Cuba 2009 2010 - Mar Sun>=8 0:00s 1:00 D
1727  {
1728  -91 /*fromYearTiny (2009)*/,
1729  -90 /*toYearTiny (2010)*/,
1730  3 /*inMonth*/,
1731  7 /*onDayOfWeek*/,
1732  8 /*onDayOfMonth*/,
1733  0 /*atTimeCode*/,
1734  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1735  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1736  3 /*letterIndex ("D")*/,
1737  },
1738  // Rule Cuba 2011 only - Mar Sun>=15 0:00s 1:00 D
1739  {
1740  -89 /*fromYearTiny (2011)*/,
1741  -89 /*toYearTiny (2011)*/,
1742  3 /*inMonth*/,
1743  7 /*onDayOfWeek*/,
1744  15 /*onDayOfMonth*/,
1745  0 /*atTimeCode*/,
1746  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1747  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1748  3 /*letterIndex ("D")*/,
1749  },
1750  // Rule Cuba 2011 only - Nov 13 0:00s 0 S
1751  {
1752  -89 /*fromYearTiny (2011)*/,
1753  -89 /*toYearTiny (2011)*/,
1754  11 /*inMonth*/,
1755  0 /*onDayOfWeek*/,
1756  13 /*onDayOfMonth*/,
1757  0 /*atTimeCode*/,
1758  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1759  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1760  4 /*letterIndex ("S")*/,
1761  },
1762  // Rule Cuba 2012 only - Apr 1 0:00s 1:00 D
1763  {
1764  -88 /*fromYearTiny (2012)*/,
1765  -88 /*toYearTiny (2012)*/,
1766  4 /*inMonth*/,
1767  0 /*onDayOfWeek*/,
1768  1 /*onDayOfMonth*/,
1769  0 /*atTimeCode*/,
1770  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1771  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1772  3 /*letterIndex ("D")*/,
1773  },
1774  // Rule Cuba 2012 max - Nov Sun>=1 0:00s 0 S
1775  {
1776  -88 /*fromYearTiny (2012)*/,
1777  126 /*toYearTiny (32766)*/,
1778  11 /*inMonth*/,
1779  7 /*onDayOfWeek*/,
1780  1 /*onDayOfMonth*/,
1781  0 /*atTimeCode*/,
1782  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1783  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1784  4 /*letterIndex ("S")*/,
1785  },
1786  // Rule Cuba 2013 max - Mar Sun>=8 0:00s 1:00 D
1787  {
1788  -87 /*fromYearTiny (2013)*/,
1789  126 /*toYearTiny (32766)*/,
1790  3 /*inMonth*/,
1791  7 /*onDayOfWeek*/,
1792  8 /*onDayOfMonth*/,
1793  0 /*atTimeCode*/,
1794  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1795  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1796  3 /*letterIndex ("D")*/,
1797  },
1798 
1799 };
1800 
1801 const basic::ZonePolicy kZonePolicyCuba ACE_TIME_PROGMEM = {
1802  kZoneRulesCuba /*rules*/,
1803  15 /*numRules*/,
1804 };
1805 
1806 //---------------------------------------------------------------------------
1807 // Policy name: Dhaka
1808 // Rules: 3
1809 //---------------------------------------------------------------------------
1810 
1811 static const basic::ZoneRule kZoneRulesDhaka[] ACE_TIME_PROGMEM = {
1812  // Anchor: Rule Dhaka 2009 only - Dec 31 24:00 0 -
1813  {
1814  -127 /*fromYearTiny (-32767)*/,
1815  -127 /*toYearTiny (-32767)*/,
1816  1 /*inMonth*/,
1817  0 /*onDayOfWeek*/,
1818  1 /*onDayOfMonth*/,
1819  0 /*atTimeCode*/,
1820  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1821  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1822  0 /*letterIndex ("")*/,
1823  },
1824  // Rule Dhaka 2009 only - Jun 19 23:00 1:00 -
1825  {
1826  -91 /*fromYearTiny (2009)*/,
1827  -91 /*toYearTiny (2009)*/,
1828  6 /*inMonth*/,
1829  0 /*onDayOfWeek*/,
1830  19 /*onDayOfMonth*/,
1831  92 /*atTimeCode*/,
1832  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1833  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1834  0 /*letterIndex ("")*/,
1835  },
1836  // Rule Dhaka 2009 only - Dec 31 24:00 0 -
1837  {
1838  -91 /*fromYearTiny (2009)*/,
1839  -91 /*toYearTiny (2009)*/,
1840  12 /*inMonth*/,
1841  0 /*onDayOfWeek*/,
1842  31 /*onDayOfMonth*/,
1843  96 /*atTimeCode*/,
1844  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1845  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1846  0 /*letterIndex ("")*/,
1847  },
1848 
1849 };
1850 
1851 const basic::ZonePolicy kZonePolicyDhaka ACE_TIME_PROGMEM = {
1852  kZoneRulesDhaka /*rules*/,
1853  3 /*numRules*/,
1854 };
1855 
1856 //---------------------------------------------------------------------------
1857 // Policy name: EU
1858 // Rules: 4
1859 //---------------------------------------------------------------------------
1860 
1861 static const basic::ZoneRule kZoneRulesEU[] ACE_TIME_PROGMEM = {
1862  // Anchor: Rule EU 1979 1995 - Sep lastSun 1:00u 0 -
1863  {
1864  -127 /*fromYearTiny (-32767)*/,
1865  -127 /*toYearTiny (-32767)*/,
1866  1 /*inMonth*/,
1867  0 /*onDayOfWeek*/,
1868  1 /*onDayOfMonth*/,
1869  0 /*atTimeCode*/,
1870  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1871  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1872  0 /*letterIndex ("")*/,
1873  },
1874  // Rule EU 1979 1995 - Sep lastSun 1:00u 0 -
1875  {
1876  -121 /*fromYearTiny (1979)*/,
1877  -105 /*toYearTiny (1995)*/,
1878  9 /*inMonth*/,
1879  7 /*onDayOfWeek*/,
1880  0 /*onDayOfMonth*/,
1881  4 /*atTimeCode*/,
1882  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1883  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1884  0 /*letterIndex ("")*/,
1885  },
1886  // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S
1887  {
1888  -119 /*fromYearTiny (1981)*/,
1889  126 /*toYearTiny (32766)*/,
1890  3 /*inMonth*/,
1891  7 /*onDayOfWeek*/,
1892  0 /*onDayOfMonth*/,
1893  4 /*atTimeCode*/,
1894  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1895  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1896  4 /*letterIndex ("S")*/,
1897  },
1898  // Rule EU 1996 max - Oct lastSun 1:00u 0 -
1899  {
1900  -104 /*fromYearTiny (1996)*/,
1901  126 /*toYearTiny (32766)*/,
1902  10 /*inMonth*/,
1903  7 /*onDayOfWeek*/,
1904  0 /*onDayOfMonth*/,
1905  4 /*atTimeCode*/,
1906  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1907  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1908  0 /*letterIndex ("")*/,
1909  },
1910 
1911 };
1912 
1913 const basic::ZonePolicy kZonePolicyEU ACE_TIME_PROGMEM = {
1914  kZoneRulesEU /*rules*/,
1915  4 /*numRules*/,
1916 };
1917 
1918 //---------------------------------------------------------------------------
1919 // Policy name: EUAsia
1920 // Rules: 4
1921 //---------------------------------------------------------------------------
1922 
1923 static const basic::ZoneRule kZoneRulesEUAsia[] ACE_TIME_PROGMEM = {
1924  // Anchor: Rule EUAsia 1979 1995 - Sep lastSun 1:00u 0 -
1925  {
1926  -127 /*fromYearTiny (-32767)*/,
1927  -127 /*toYearTiny (-32767)*/,
1928  1 /*inMonth*/,
1929  0 /*onDayOfWeek*/,
1930  1 /*onDayOfMonth*/,
1931  0 /*atTimeCode*/,
1932  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1933  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1934  0 /*letterIndex ("")*/,
1935  },
1936  // Rule EUAsia 1981 max - Mar lastSun 1:00u 1:00 S
1937  {
1938  -119 /*fromYearTiny (1981)*/,
1939  126 /*toYearTiny (32766)*/,
1940  3 /*inMonth*/,
1941  7 /*onDayOfWeek*/,
1942  0 /*onDayOfMonth*/,
1943  4 /*atTimeCode*/,
1944  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1945  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1946  4 /*letterIndex ("S")*/,
1947  },
1948  // Rule EUAsia 1979 1995 - Sep lastSun 1:00u 0 -
1949  {
1950  -121 /*fromYearTiny (1979)*/,
1951  -105 /*toYearTiny (1995)*/,
1952  9 /*inMonth*/,
1953  7 /*onDayOfWeek*/,
1954  0 /*onDayOfMonth*/,
1955  4 /*atTimeCode*/,
1956  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1957  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1958  0 /*letterIndex ("")*/,
1959  },
1960  // Rule EUAsia 1996 max - Oct lastSun 1:00u 0 -
1961  {
1962  -104 /*fromYearTiny (1996)*/,
1963  126 /*toYearTiny (32766)*/,
1964  10 /*inMonth*/,
1965  7 /*onDayOfWeek*/,
1966  0 /*onDayOfMonth*/,
1967  4 /*atTimeCode*/,
1968  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1969  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1970  0 /*letterIndex ("")*/,
1971  },
1972 
1973 };
1974 
1975 const basic::ZonePolicy kZonePolicyEUAsia ACE_TIME_PROGMEM = {
1976  kZoneRulesEUAsia /*rules*/,
1977  4 /*numRules*/,
1978 };
1979 
1980 //---------------------------------------------------------------------------
1981 // Policy name: Ecuador
1982 // Rules: 1
1983 //---------------------------------------------------------------------------
1984 
1985 static const basic::ZoneRule kZoneRulesEcuador[] ACE_TIME_PROGMEM = {
1986  // Anchor: Rule Ecuador 1993 only - Feb 5 0:00 0 -
1987  {
1988  -127 /*fromYearTiny (-32767)*/,
1989  -127 /*toYearTiny (-32767)*/,
1990  1 /*inMonth*/,
1991  0 /*onDayOfWeek*/,
1992  1 /*onDayOfMonth*/,
1993  0 /*atTimeCode*/,
1994  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1995  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1996  0 /*letterIndex ("")*/,
1997  },
1998 
1999 };
2000 
2001 const basic::ZonePolicy kZonePolicyEcuador ACE_TIME_PROGMEM = {
2002  kZoneRulesEcuador /*rules*/,
2003  1 /*numRules*/,
2004 };
2005 
2006 //---------------------------------------------------------------------------
2007 // Policy name: Eire
2008 // Rules: 4
2009 //---------------------------------------------------------------------------
2010 
2011 static const basic::ZoneRule kZoneRulesEire[] ACE_TIME_PROGMEM = {
2012  // Anchor: Rule Eire 1981 max - Mar lastSun 1:00u 0 -
2013  {
2014  -127 /*fromYearTiny (-32767)*/,
2015  -127 /*toYearTiny (-32767)*/,
2016  1 /*inMonth*/,
2017  0 /*onDayOfWeek*/,
2018  1 /*onDayOfMonth*/,
2019  0 /*atTimeCode*/,
2020  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2021  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2022  0 /*letterIndex ("")*/,
2023  },
2024  // Rule Eire 1981 max - Mar lastSun 1:00u 0 -
2025  {
2026  -119 /*fromYearTiny (1981)*/,
2027  126 /*toYearTiny (32766)*/,
2028  3 /*inMonth*/,
2029  7 /*onDayOfWeek*/,
2030  0 /*onDayOfMonth*/,
2031  4 /*atTimeCode*/,
2032  32 /*atTimeModifier (kSuffixU + minute=0)*/,
2033  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2034  0 /*letterIndex ("")*/,
2035  },
2036  // Rule Eire 1990 1995 - Oct Sun>=22 1:00u -1:00 -
2037  {
2038  -110 /*fromYearTiny (1990)*/,
2039  -105 /*toYearTiny (1995)*/,
2040  10 /*inMonth*/,
2041  7 /*onDayOfWeek*/,
2042  22 /*onDayOfMonth*/,
2043  4 /*atTimeCode*/,
2044  32 /*atTimeModifier (kSuffixU + minute=0)*/,
2045  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
2046  0 /*letterIndex ("")*/,
2047  },
2048  // Rule Eire 1996 max - Oct lastSun 1:00u -1:00 -
2049  {
2050  -104 /*fromYearTiny (1996)*/,
2051  126 /*toYearTiny (32766)*/,
2052  10 /*inMonth*/,
2053  7 /*onDayOfWeek*/,
2054  0 /*onDayOfMonth*/,
2055  4 /*atTimeCode*/,
2056  32 /*atTimeModifier (kSuffixU + minute=0)*/,
2057  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
2058  0 /*letterIndex ("")*/,
2059  },
2060 
2061 };
2062 
2063 const basic::ZonePolicy kZonePolicyEire ACE_TIME_PROGMEM = {
2064  kZoneRulesEire /*rules*/,
2065  4 /*numRules*/,
2066 };
2067 
2068 //---------------------------------------------------------------------------
2069 // Policy name: Fiji
2070 // Rules: 13
2071 //---------------------------------------------------------------------------
2072 
2073 static const basic::ZoneRule kZoneRulesFiji[] ACE_TIME_PROGMEM = {
2074  // Anchor: Rule Fiji 1999 2000 - Feb lastSun 3:00 0 -
2075  {
2076  -127 /*fromYearTiny (-32767)*/,
2077  -127 /*toYearTiny (-32767)*/,
2078  1 /*inMonth*/,
2079  0 /*onDayOfWeek*/,
2080  1 /*onDayOfMonth*/,
2081  0 /*atTimeCode*/,
2082  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2083  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2084  0 /*letterIndex ("")*/,
2085  },
2086  // Rule Fiji 1998 1999 - Nov Sun>=1 2:00 1:00 -
2087  {
2088  -102 /*fromYearTiny (1998)*/,
2089  -101 /*toYearTiny (1999)*/,
2090  11 /*inMonth*/,
2091  7 /*onDayOfWeek*/,
2092  1 /*onDayOfMonth*/,
2093  8 /*atTimeCode*/,
2094  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2095  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2096  0 /*letterIndex ("")*/,
2097  },
2098  // Rule Fiji 1999 2000 - Feb lastSun 3:00 0 -
2099  {
2100  -101 /*fromYearTiny (1999)*/,
2101  -100 /*toYearTiny (2000)*/,
2102  2 /*inMonth*/,
2103  7 /*onDayOfWeek*/,
2104  0 /*onDayOfMonth*/,
2105  12 /*atTimeCode*/,
2106  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2107  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2108  0 /*letterIndex ("")*/,
2109  },
2110  // Rule Fiji 2009 only - Nov 29 2:00 1:00 -
2111  {
2112  -91 /*fromYearTiny (2009)*/,
2113  -91 /*toYearTiny (2009)*/,
2114  11 /*inMonth*/,
2115  0 /*onDayOfWeek*/,
2116  29 /*onDayOfMonth*/,
2117  8 /*atTimeCode*/,
2118  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2119  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2120  0 /*letterIndex ("")*/,
2121  },
2122  // Rule Fiji 2010 only - Mar lastSun 3:00 0 -
2123  {
2124  -90 /*fromYearTiny (2010)*/,
2125  -90 /*toYearTiny (2010)*/,
2126  3 /*inMonth*/,
2127  7 /*onDayOfWeek*/,
2128  0 /*onDayOfMonth*/,
2129  12 /*atTimeCode*/,
2130  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2131  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2132  0 /*letterIndex ("")*/,
2133  },
2134  // Rule Fiji 2010 2013 - Oct Sun>=21 2:00 1:00 -
2135  {
2136  -90 /*fromYearTiny (2010)*/,
2137  -87 /*toYearTiny (2013)*/,
2138  10 /*inMonth*/,
2139  7 /*onDayOfWeek*/,
2140  21 /*onDayOfMonth*/,
2141  8 /*atTimeCode*/,
2142  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2143  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2144  0 /*letterIndex ("")*/,
2145  },
2146  // Rule Fiji 2011 only - Mar Sun>=1 3:00 0 -
2147  {
2148  -89 /*fromYearTiny (2011)*/,
2149  -89 /*toYearTiny (2011)*/,
2150  3 /*inMonth*/,
2151  7 /*onDayOfWeek*/,
2152  1 /*onDayOfMonth*/,
2153  12 /*atTimeCode*/,
2154  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2155  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2156  0 /*letterIndex ("")*/,
2157  },
2158  // Rule Fiji 2012 2013 - Jan Sun>=18 3:00 0 -
2159  {
2160  -88 /*fromYearTiny (2012)*/,
2161  -87 /*toYearTiny (2013)*/,
2162  1 /*inMonth*/,
2163  7 /*onDayOfWeek*/,
2164  18 /*onDayOfMonth*/,
2165  12 /*atTimeCode*/,
2166  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2167  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2168  0 /*letterIndex ("")*/,
2169  },
2170  // Rule Fiji 2014 only - Jan Sun>=18 2:00 0 -
2171  {
2172  -86 /*fromYearTiny (2014)*/,
2173  -86 /*toYearTiny (2014)*/,
2174  1 /*inMonth*/,
2175  7 /*onDayOfWeek*/,
2176  18 /*onDayOfMonth*/,
2177  8 /*atTimeCode*/,
2178  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2179  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2180  0 /*letterIndex ("")*/,
2181  },
2182  // Rule Fiji 2014 2018 - Nov Sun>=1 2:00 1:00 -
2183  {
2184  -86 /*fromYearTiny (2014)*/,
2185  -82 /*toYearTiny (2018)*/,
2186  11 /*inMonth*/,
2187  7 /*onDayOfWeek*/,
2188  1 /*onDayOfMonth*/,
2189  8 /*atTimeCode*/,
2190  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2191  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2192  0 /*letterIndex ("")*/,
2193  },
2194  // Rule Fiji 2015 2021 - Jan Sun>=12 3:00 0 -
2195  {
2196  -85 /*fromYearTiny (2015)*/,
2197  -79 /*toYearTiny (2021)*/,
2198  1 /*inMonth*/,
2199  7 /*onDayOfWeek*/,
2200  12 /*onDayOfMonth*/,
2201  12 /*atTimeCode*/,
2202  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2203  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2204  0 /*letterIndex ("")*/,
2205  },
2206  // Rule Fiji 2019 only - Nov Sun>=8 2:00 1:00 -
2207  {
2208  -81 /*fromYearTiny (2019)*/,
2209  -81 /*toYearTiny (2019)*/,
2210  11 /*inMonth*/,
2211  7 /*onDayOfWeek*/,
2212  8 /*onDayOfMonth*/,
2213  8 /*atTimeCode*/,
2214  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2215  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2216  0 /*letterIndex ("")*/,
2217  },
2218  // Rule Fiji 2020 only - Dec 20 2:00 1:00 -
2219  {
2220  -80 /*fromYearTiny (2020)*/,
2221  -80 /*toYearTiny (2020)*/,
2222  12 /*inMonth*/,
2223  0 /*onDayOfWeek*/,
2224  20 /*onDayOfMonth*/,
2225  8 /*atTimeCode*/,
2226  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2227  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2228  0 /*letterIndex ("")*/,
2229  },
2230 
2231 };
2232 
2233 const basic::ZonePolicy kZonePolicyFiji ACE_TIME_PROGMEM = {
2234  kZoneRulesFiji /*rules*/,
2235  13 /*numRules*/,
2236 };
2237 
2238 //---------------------------------------------------------------------------
2239 // Policy name: Guat
2240 // Rules: 4
2241 //---------------------------------------------------------------------------
2242 
2243 static const basic::ZoneRule kZoneRulesGuat[] ACE_TIME_PROGMEM = {
2244  // Anchor: Rule Guat 1991 only - Sep 7 0:00 0 S
2245  {
2246  -127 /*fromYearTiny (-32767)*/,
2247  -127 /*toYearTiny (-32767)*/,
2248  1 /*inMonth*/,
2249  0 /*onDayOfWeek*/,
2250  1 /*onDayOfMonth*/,
2251  0 /*atTimeCode*/,
2252  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2253  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2254  4 /*letterIndex ("S")*/,
2255  },
2256  // Rule Guat 1991 only - Sep 7 0:00 0 S
2257  {
2258  -109 /*fromYearTiny (1991)*/,
2259  -109 /*toYearTiny (1991)*/,
2260  9 /*inMonth*/,
2261  0 /*onDayOfWeek*/,
2262  7 /*onDayOfMonth*/,
2263  0 /*atTimeCode*/,
2264  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2265  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2266  4 /*letterIndex ("S")*/,
2267  },
2268  // Rule Guat 2006 only - Apr 30 0:00 1:00 D
2269  {
2270  -94 /*fromYearTiny (2006)*/,
2271  -94 /*toYearTiny (2006)*/,
2272  4 /*inMonth*/,
2273  0 /*onDayOfWeek*/,
2274  30 /*onDayOfMonth*/,
2275  0 /*atTimeCode*/,
2276  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2277  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2278  3 /*letterIndex ("D")*/,
2279  },
2280  // Rule Guat 2006 only - Oct 1 0:00 0 S
2281  {
2282  -94 /*fromYearTiny (2006)*/,
2283  -94 /*toYearTiny (2006)*/,
2284  10 /*inMonth*/,
2285  0 /*onDayOfWeek*/,
2286  1 /*onDayOfMonth*/,
2287  0 /*atTimeCode*/,
2288  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2289  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2290  4 /*letterIndex ("S")*/,
2291  },
2292 
2293 };
2294 
2295 const basic::ZonePolicy kZonePolicyGuat ACE_TIME_PROGMEM = {
2296  kZoneRulesGuat /*rules*/,
2297  4 /*numRules*/,
2298 };
2299 
2300 //---------------------------------------------------------------------------
2301 // Policy name: HK
2302 // Rules: 1
2303 //---------------------------------------------------------------------------
2304 
2305 static const basic::ZoneRule kZoneRulesHK[] ACE_TIME_PROGMEM = {
2306  // Anchor: Rule HK 1979 only - Oct 21 3:30 0 -
2307  {
2308  -127 /*fromYearTiny (-32767)*/,
2309  -127 /*toYearTiny (-32767)*/,
2310  1 /*inMonth*/,
2311  0 /*onDayOfWeek*/,
2312  1 /*onDayOfMonth*/,
2313  0 /*atTimeCode*/,
2314  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2315  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2316  0 /*letterIndex ("")*/,
2317  },
2318 
2319 };
2320 
2321 const basic::ZonePolicy kZonePolicyHK ACE_TIME_PROGMEM = {
2322  kZoneRulesHK /*rules*/,
2323  1 /*numRules*/,
2324 };
2325 
2326 //---------------------------------------------------------------------------
2327 // Policy name: Haiti
2328 // Rules: 8
2329 //---------------------------------------------------------------------------
2330 
2331 static const basic::ZoneRule kZoneRulesHaiti[] ACE_TIME_PROGMEM = {
2332  // Anchor: Rule Haiti 1988 1997 - Oct lastSun 1:00s 0 S
2333  {
2334  -127 /*fromYearTiny (-32767)*/,
2335  -127 /*toYearTiny (-32767)*/,
2336  1 /*inMonth*/,
2337  0 /*onDayOfWeek*/,
2338  1 /*onDayOfMonth*/,
2339  0 /*atTimeCode*/,
2340  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2341  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2342  4 /*letterIndex ("S")*/,
2343  },
2344  // Rule Haiti 1988 1997 - Oct lastSun 1:00s 0 S
2345  {
2346  -112 /*fromYearTiny (1988)*/,
2347  -103 /*toYearTiny (1997)*/,
2348  10 /*inMonth*/,
2349  7 /*onDayOfWeek*/,
2350  0 /*onDayOfMonth*/,
2351  4 /*atTimeCode*/,
2352  16 /*atTimeModifier (kSuffixS + minute=0)*/,
2353  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2354  4 /*letterIndex ("S")*/,
2355  },
2356  // Rule Haiti 2005 2006 - Apr Sun>=1 0:00 1:00 D
2357  {
2358  -95 /*fromYearTiny (2005)*/,
2359  -94 /*toYearTiny (2006)*/,
2360  4 /*inMonth*/,
2361  7 /*onDayOfWeek*/,
2362  1 /*onDayOfMonth*/,
2363  0 /*atTimeCode*/,
2364  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2365  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2366  3 /*letterIndex ("D")*/,
2367  },
2368  // Rule Haiti 2005 2006 - Oct lastSun 0:00 0 S
2369  {
2370  -95 /*fromYearTiny (2005)*/,
2371  -94 /*toYearTiny (2006)*/,
2372  10 /*inMonth*/,
2373  7 /*onDayOfWeek*/,
2374  0 /*onDayOfMonth*/,
2375  0 /*atTimeCode*/,
2376  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2377  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2378  4 /*letterIndex ("S")*/,
2379  },
2380  // Rule Haiti 2012 2015 - Mar Sun>=8 2:00 1:00 D
2381  {
2382  -88 /*fromYearTiny (2012)*/,
2383  -85 /*toYearTiny (2015)*/,
2384  3 /*inMonth*/,
2385  7 /*onDayOfWeek*/,
2386  8 /*onDayOfMonth*/,
2387  8 /*atTimeCode*/,
2388  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2389  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2390  3 /*letterIndex ("D")*/,
2391  },
2392  // Rule Haiti 2012 2015 - Nov Sun>=1 2:00 0 S
2393  {
2394  -88 /*fromYearTiny (2012)*/,
2395  -85 /*toYearTiny (2015)*/,
2396  11 /*inMonth*/,
2397  7 /*onDayOfWeek*/,
2398  1 /*onDayOfMonth*/,
2399  8 /*atTimeCode*/,
2400  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2401  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2402  4 /*letterIndex ("S")*/,
2403  },
2404  // Rule Haiti 2017 max - Mar Sun>=8 2:00 1:00 D
2405  {
2406  -83 /*fromYearTiny (2017)*/,
2407  126 /*toYearTiny (32766)*/,
2408  3 /*inMonth*/,
2409  7 /*onDayOfWeek*/,
2410  8 /*onDayOfMonth*/,
2411  8 /*atTimeCode*/,
2412  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2413  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2414  3 /*letterIndex ("D")*/,
2415  },
2416  // Rule Haiti 2017 max - Nov Sun>=1 2:00 0 S
2417  {
2418  -83 /*fromYearTiny (2017)*/,
2419  126 /*toYearTiny (32766)*/,
2420  11 /*inMonth*/,
2421  7 /*onDayOfWeek*/,
2422  1 /*onDayOfMonth*/,
2423  8 /*atTimeCode*/,
2424  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2425  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2426  4 /*letterIndex ("S")*/,
2427  },
2428 
2429 };
2430 
2431 const basic::ZonePolicy kZonePolicyHaiti ACE_TIME_PROGMEM = {
2432  kZoneRulesHaiti /*rules*/,
2433  8 /*numRules*/,
2434 };
2435 
2436 //---------------------------------------------------------------------------
2437 // Policy name: Holiday
2438 // Rules: 1
2439 //---------------------------------------------------------------------------
2440 
2441 static const basic::ZoneRule kZoneRulesHoliday[] ACE_TIME_PROGMEM = {
2442  // Anchor: Rule Holiday 1993 1994 - Mar Sun>=1 2:00s 0 S
2443  {
2444  -127 /*fromYearTiny (-32767)*/,
2445  -127 /*toYearTiny (-32767)*/,
2446  1 /*inMonth*/,
2447  0 /*onDayOfWeek*/,
2448  1 /*onDayOfMonth*/,
2449  0 /*atTimeCode*/,
2450  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2451  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2452  4 /*letterIndex ("S")*/,
2453  },
2454 
2455 };
2456 
2457 const basic::ZonePolicy kZonePolicyHoliday ACE_TIME_PROGMEM = {
2458  kZoneRulesHoliday /*rules*/,
2459  1 /*numRules*/,
2460 };
2461 
2462 //---------------------------------------------------------------------------
2463 // Policy name: Hond
2464 // Rules: 4
2465 //---------------------------------------------------------------------------
2466 
2467 static const basic::ZoneRule kZoneRulesHond[] ACE_TIME_PROGMEM = {
2468  // Anchor: Rule Hond 1987 1988 - Sep lastSun 0:00 0 S
2469  {
2470  -127 /*fromYearTiny (-32767)*/,
2471  -127 /*toYearTiny (-32767)*/,
2472  1 /*inMonth*/,
2473  0 /*onDayOfWeek*/,
2474  1 /*onDayOfMonth*/,
2475  0 /*atTimeCode*/,
2476  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2477  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2478  4 /*letterIndex ("S")*/,
2479  },
2480  // Rule Hond 1987 1988 - Sep lastSun 0:00 0 S
2481  {
2482  -113 /*fromYearTiny (1987)*/,
2483  -112 /*toYearTiny (1988)*/,
2484  9 /*inMonth*/,
2485  7 /*onDayOfWeek*/,
2486  0 /*onDayOfMonth*/,
2487  0 /*atTimeCode*/,
2488  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2489  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2490  4 /*letterIndex ("S")*/,
2491  },
2492  // Rule Hond 2006 only - May Sun>=1 0:00 1:00 D
2493  {
2494  -94 /*fromYearTiny (2006)*/,
2495  -94 /*toYearTiny (2006)*/,
2496  5 /*inMonth*/,
2497  7 /*onDayOfWeek*/,
2498  1 /*onDayOfMonth*/,
2499  0 /*atTimeCode*/,
2500  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2501  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2502  3 /*letterIndex ("D")*/,
2503  },
2504  // Rule Hond 2006 only - Aug Mon>=1 0:00 0 S
2505  {
2506  -94 /*fromYearTiny (2006)*/,
2507  -94 /*toYearTiny (2006)*/,
2508  8 /*inMonth*/,
2509  1 /*onDayOfWeek*/,
2510  1 /*onDayOfMonth*/,
2511  0 /*atTimeCode*/,
2512  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2513  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2514  4 /*letterIndex ("S")*/,
2515  },
2516 
2517 };
2518 
2519 const basic::ZonePolicy kZonePolicyHond ACE_TIME_PROGMEM = {
2520  kZoneRulesHond /*rules*/,
2521  4 /*numRules*/,
2522 };
2523 
2524 //---------------------------------------------------------------------------
2525 // Policy name: Iran
2526 // Rules: 28
2527 //---------------------------------------------------------------------------
2528 
2529 static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = {
2530  // Anchor: Rule Iran 1996 only - Sep 20 24:00 0 -
2531  {
2532  -127 /*fromYearTiny (-32767)*/,
2533  -127 /*toYearTiny (-32767)*/,
2534  1 /*inMonth*/,
2535  0 /*onDayOfWeek*/,
2536  1 /*onDayOfMonth*/,
2537  0 /*atTimeCode*/,
2538  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2539  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2540  0 /*letterIndex ("")*/,
2541  },
2542  // Rule Iran 1996 only - Sep 20 24:00 0 -
2543  {
2544  -104 /*fromYearTiny (1996)*/,
2545  -104 /*toYearTiny (1996)*/,
2546  9 /*inMonth*/,
2547  0 /*onDayOfWeek*/,
2548  20 /*onDayOfMonth*/,
2549  96 /*atTimeCode*/,
2550  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2551  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2552  0 /*letterIndex ("")*/,
2553  },
2554  // Rule Iran 1997 1999 - Mar 21 24:00 1:00 -
2555  {
2556  -103 /*fromYearTiny (1997)*/,
2557  -101 /*toYearTiny (1999)*/,
2558  3 /*inMonth*/,
2559  0 /*onDayOfWeek*/,
2560  21 /*onDayOfMonth*/,
2561  96 /*atTimeCode*/,
2562  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2563  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2564  0 /*letterIndex ("")*/,
2565  },
2566  // Rule Iran 1997 1999 - Sep 21 24:00 0 -
2567  {
2568  -103 /*fromYearTiny (1997)*/,
2569  -101 /*toYearTiny (1999)*/,
2570  9 /*inMonth*/,
2571  0 /*onDayOfWeek*/,
2572  21 /*onDayOfMonth*/,
2573  96 /*atTimeCode*/,
2574  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2575  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2576  0 /*letterIndex ("")*/,
2577  },
2578  // Rule Iran 2000 only - Mar 20 24:00 1:00 -
2579  {
2580  -100 /*fromYearTiny (2000)*/,
2581  -100 /*toYearTiny (2000)*/,
2582  3 /*inMonth*/,
2583  0 /*onDayOfWeek*/,
2584  20 /*onDayOfMonth*/,
2585  96 /*atTimeCode*/,
2586  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2587  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2588  0 /*letterIndex ("")*/,
2589  },
2590  // Rule Iran 2000 only - Sep 20 24:00 0 -
2591  {
2592  -100 /*fromYearTiny (2000)*/,
2593  -100 /*toYearTiny (2000)*/,
2594  9 /*inMonth*/,
2595  0 /*onDayOfWeek*/,
2596  20 /*onDayOfMonth*/,
2597  96 /*atTimeCode*/,
2598  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2599  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2600  0 /*letterIndex ("")*/,
2601  },
2602  // Rule Iran 2001 2003 - Mar 21 24:00 1:00 -
2603  {
2604  -99 /*fromYearTiny (2001)*/,
2605  -97 /*toYearTiny (2003)*/,
2606  3 /*inMonth*/,
2607  0 /*onDayOfWeek*/,
2608  21 /*onDayOfMonth*/,
2609  96 /*atTimeCode*/,
2610  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2611  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2612  0 /*letterIndex ("")*/,
2613  },
2614  // Rule Iran 2001 2003 - Sep 21 24:00 0 -
2615  {
2616  -99 /*fromYearTiny (2001)*/,
2617  -97 /*toYearTiny (2003)*/,
2618  9 /*inMonth*/,
2619  0 /*onDayOfWeek*/,
2620  21 /*onDayOfMonth*/,
2621  96 /*atTimeCode*/,
2622  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2623  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2624  0 /*letterIndex ("")*/,
2625  },
2626  // Rule Iran 2004 only - Mar 20 24:00 1:00 -
2627  {
2628  -96 /*fromYearTiny (2004)*/,
2629  -96 /*toYearTiny (2004)*/,
2630  3 /*inMonth*/,
2631  0 /*onDayOfWeek*/,
2632  20 /*onDayOfMonth*/,
2633  96 /*atTimeCode*/,
2634  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2635  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2636  0 /*letterIndex ("")*/,
2637  },
2638  // Rule Iran 2004 only - Sep 20 24:00 0 -
2639  {
2640  -96 /*fromYearTiny (2004)*/,
2641  -96 /*toYearTiny (2004)*/,
2642  9 /*inMonth*/,
2643  0 /*onDayOfWeek*/,
2644  20 /*onDayOfMonth*/,
2645  96 /*atTimeCode*/,
2646  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2647  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2648  0 /*letterIndex ("")*/,
2649  },
2650  // Rule Iran 2005 only - Mar 21 24:00 1:00 -
2651  {
2652  -95 /*fromYearTiny (2005)*/,
2653  -95 /*toYearTiny (2005)*/,
2654  3 /*inMonth*/,
2655  0 /*onDayOfWeek*/,
2656  21 /*onDayOfMonth*/,
2657  96 /*atTimeCode*/,
2658  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2659  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2660  0 /*letterIndex ("")*/,
2661  },
2662  // Rule Iran 2005 only - Sep 21 24:00 0 -
2663  {
2664  -95 /*fromYearTiny (2005)*/,
2665  -95 /*toYearTiny (2005)*/,
2666  9 /*inMonth*/,
2667  0 /*onDayOfWeek*/,
2668  21 /*onDayOfMonth*/,
2669  96 /*atTimeCode*/,
2670  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2671  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2672  0 /*letterIndex ("")*/,
2673  },
2674  // Rule Iran 2008 only - Mar 20 24:00 1:00 -
2675  {
2676  -92 /*fromYearTiny (2008)*/,
2677  -92 /*toYearTiny (2008)*/,
2678  3 /*inMonth*/,
2679  0 /*onDayOfWeek*/,
2680  20 /*onDayOfMonth*/,
2681  96 /*atTimeCode*/,
2682  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2683  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2684  0 /*letterIndex ("")*/,
2685  },
2686  // Rule Iran 2008 only - Sep 20 24:00 0 -
2687  {
2688  -92 /*fromYearTiny (2008)*/,
2689  -92 /*toYearTiny (2008)*/,
2690  9 /*inMonth*/,
2691  0 /*onDayOfWeek*/,
2692  20 /*onDayOfMonth*/,
2693  96 /*atTimeCode*/,
2694  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2695  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2696  0 /*letterIndex ("")*/,
2697  },
2698  // Rule Iran 2009 2011 - Mar 21 24:00 1:00 -
2699  {
2700  -91 /*fromYearTiny (2009)*/,
2701  -89 /*toYearTiny (2011)*/,
2702  3 /*inMonth*/,
2703  0 /*onDayOfWeek*/,
2704  21 /*onDayOfMonth*/,
2705  96 /*atTimeCode*/,
2706  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2707  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2708  0 /*letterIndex ("")*/,
2709  },
2710  // Rule Iran 2009 2011 - Sep 21 24:00 0 -
2711  {
2712  -91 /*fromYearTiny (2009)*/,
2713  -89 /*toYearTiny (2011)*/,
2714  9 /*inMonth*/,
2715  0 /*onDayOfWeek*/,
2716  21 /*onDayOfMonth*/,
2717  96 /*atTimeCode*/,
2718  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2719  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2720  0 /*letterIndex ("")*/,
2721  },
2722  // Rule Iran 2012 only - Mar 20 24:00 1:00 -
2723  {
2724  -88 /*fromYearTiny (2012)*/,
2725  -88 /*toYearTiny (2012)*/,
2726  3 /*inMonth*/,
2727  0 /*onDayOfWeek*/,
2728  20 /*onDayOfMonth*/,
2729  96 /*atTimeCode*/,
2730  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2731  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2732  0 /*letterIndex ("")*/,
2733  },
2734  // Rule Iran 2012 only - Sep 20 24:00 0 -
2735  {
2736  -88 /*fromYearTiny (2012)*/,
2737  -88 /*toYearTiny (2012)*/,
2738  9 /*inMonth*/,
2739  0 /*onDayOfWeek*/,
2740  20 /*onDayOfMonth*/,
2741  96 /*atTimeCode*/,
2742  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2743  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2744  0 /*letterIndex ("")*/,
2745  },
2746  // Rule Iran 2013 2015 - Mar 21 24:00 1:00 -
2747  {
2748  -87 /*fromYearTiny (2013)*/,
2749  -85 /*toYearTiny (2015)*/,
2750  3 /*inMonth*/,
2751  0 /*onDayOfWeek*/,
2752  21 /*onDayOfMonth*/,
2753  96 /*atTimeCode*/,
2754  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2755  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2756  0 /*letterIndex ("")*/,
2757  },
2758  // Rule Iran 2013 2015 - Sep 21 24:00 0 -
2759  {
2760  -87 /*fromYearTiny (2013)*/,
2761  -85 /*toYearTiny (2015)*/,
2762  9 /*inMonth*/,
2763  0 /*onDayOfWeek*/,
2764  21 /*onDayOfMonth*/,
2765  96 /*atTimeCode*/,
2766  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2767  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2768  0 /*letterIndex ("")*/,
2769  },
2770  // Rule Iran 2016 only - Mar 20 24:00 1:00 -
2771  {
2772  -84 /*fromYearTiny (2016)*/,
2773  -84 /*toYearTiny (2016)*/,
2774  3 /*inMonth*/,
2775  0 /*onDayOfWeek*/,
2776  20 /*onDayOfMonth*/,
2777  96 /*atTimeCode*/,
2778  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2779  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2780  0 /*letterIndex ("")*/,
2781  },
2782  // Rule Iran 2016 only - Sep 20 24:00 0 -
2783  {
2784  -84 /*fromYearTiny (2016)*/,
2785  -84 /*toYearTiny (2016)*/,
2786  9 /*inMonth*/,
2787  0 /*onDayOfWeek*/,
2788  20 /*onDayOfMonth*/,
2789  96 /*atTimeCode*/,
2790  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2791  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2792  0 /*letterIndex ("")*/,
2793  },
2794  // Rule Iran 2017 2019 - Mar 21 24:00 1:00 -
2795  {
2796  -83 /*fromYearTiny (2017)*/,
2797  -81 /*toYearTiny (2019)*/,
2798  3 /*inMonth*/,
2799  0 /*onDayOfWeek*/,
2800  21 /*onDayOfMonth*/,
2801  96 /*atTimeCode*/,
2802  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2803  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2804  0 /*letterIndex ("")*/,
2805  },
2806  // Rule Iran 2017 2019 - Sep 21 24:00 0 -
2807  {
2808  -83 /*fromYearTiny (2017)*/,
2809  -81 /*toYearTiny (2019)*/,
2810  9 /*inMonth*/,
2811  0 /*onDayOfWeek*/,
2812  21 /*onDayOfMonth*/,
2813  96 /*atTimeCode*/,
2814  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2815  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2816  0 /*letterIndex ("")*/,
2817  },
2818  // Rule Iran 2020 only - Mar 20 24:00 1:00 -
2819  {
2820  -80 /*fromYearTiny (2020)*/,
2821  -80 /*toYearTiny (2020)*/,
2822  3 /*inMonth*/,
2823  0 /*onDayOfWeek*/,
2824  20 /*onDayOfMonth*/,
2825  96 /*atTimeCode*/,
2826  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2827  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2828  0 /*letterIndex ("")*/,
2829  },
2830  // Rule Iran 2020 only - Sep 20 24:00 0 -
2831  {
2832  -80 /*fromYearTiny (2020)*/,
2833  -80 /*toYearTiny (2020)*/,
2834  9 /*inMonth*/,
2835  0 /*onDayOfWeek*/,
2836  20 /*onDayOfMonth*/,
2837  96 /*atTimeCode*/,
2838  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2839  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2840  0 /*letterIndex ("")*/,
2841  },
2842  // Rule Iran 2021 2022 - Mar 21 24:00 1:00 -
2843  {
2844  -79 /*fromYearTiny (2021)*/,
2845  -78 /*toYearTiny (2022)*/,
2846  3 /*inMonth*/,
2847  0 /*onDayOfWeek*/,
2848  21 /*onDayOfMonth*/,
2849  96 /*atTimeCode*/,
2850  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2851  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2852  0 /*letterIndex ("")*/,
2853  },
2854  // Rule Iran 2021 2022 - Sep 21 24:00 0 -
2855  {
2856  -79 /*fromYearTiny (2021)*/,
2857  -78 /*toYearTiny (2022)*/,
2858  9 /*inMonth*/,
2859  0 /*onDayOfWeek*/,
2860  21 /*onDayOfMonth*/,
2861  96 /*atTimeCode*/,
2862  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2863  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2864  0 /*letterIndex ("")*/,
2865  },
2866 
2867 };
2868 
2869 const basic::ZonePolicy kZonePolicyIran ACE_TIME_PROGMEM = {
2870  kZoneRulesIran /*rules*/,
2871  28 /*numRules*/,
2872 };
2873 
2874 //---------------------------------------------------------------------------
2875 // Policy name: Iraq
2876 // Rules: 4
2877 //---------------------------------------------------------------------------
2878 
2879 static const basic::ZoneRule kZoneRulesIraq[] ACE_TIME_PROGMEM = {
2880  // Anchor: Rule Iraq 1985 1990 - Sep lastSun 1:00s 0 -
2881  {
2882  -127 /*fromYearTiny (-32767)*/,
2883  -127 /*toYearTiny (-32767)*/,
2884  1 /*inMonth*/,
2885  0 /*onDayOfWeek*/,
2886  1 /*onDayOfMonth*/,
2887  0 /*atTimeCode*/,
2888  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2889  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2890  0 /*letterIndex ("")*/,
2891  },
2892  // Rule Iraq 1985 1990 - Sep lastSun 1:00s 0 -
2893  {
2894  -115 /*fromYearTiny (1985)*/,
2895  -110 /*toYearTiny (1990)*/,
2896  9 /*inMonth*/,
2897  7 /*onDayOfWeek*/,
2898  0 /*onDayOfMonth*/,
2899  4 /*atTimeCode*/,
2900  16 /*atTimeModifier (kSuffixS + minute=0)*/,
2901  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2902  0 /*letterIndex ("")*/,
2903  },
2904  // Rule Iraq 1991 2007 - Apr 1 3:00s 1:00 -
2905  {
2906  -109 /*fromYearTiny (1991)*/,
2907  -93 /*toYearTiny (2007)*/,
2908  4 /*inMonth*/,
2909  0 /*onDayOfWeek*/,
2910  1 /*onDayOfMonth*/,
2911  12 /*atTimeCode*/,
2912  16 /*atTimeModifier (kSuffixS + minute=0)*/,
2913  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2914  0 /*letterIndex ("")*/,
2915  },
2916  // Rule Iraq 1991 2007 - Oct 1 3:00s 0 -
2917  {
2918  -109 /*fromYearTiny (1991)*/,
2919  -93 /*toYearTiny (2007)*/,
2920  10 /*inMonth*/,
2921  0 /*onDayOfWeek*/,
2922  1 /*onDayOfMonth*/,
2923  12 /*atTimeCode*/,
2924  16 /*atTimeModifier (kSuffixS + minute=0)*/,
2925  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2926  0 /*letterIndex ("")*/,
2927  },
2928 
2929 };
2930 
2931 const basic::ZonePolicy kZonePolicyIraq ACE_TIME_PROGMEM = {
2932  kZoneRulesIraq /*rules*/,
2933  4 /*numRules*/,
2934 };
2935 
2936 //---------------------------------------------------------------------------
2937 // Policy name: Japan
2938 // Rules: 1
2939 //---------------------------------------------------------------------------
2940 
2941 static const basic::ZoneRule kZoneRulesJapan[] ACE_TIME_PROGMEM = {
2942  // Anchor: Rule Japan 1948 1951 - Sep Sat>=8 25:00 0 S
2943  {
2944  -127 /*fromYearTiny (-32767)*/,
2945  -127 /*toYearTiny (-32767)*/,
2946  1 /*inMonth*/,
2947  0 /*onDayOfWeek*/,
2948  1 /*onDayOfMonth*/,
2949  0 /*atTimeCode*/,
2950  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2951  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2952  4 /*letterIndex ("S")*/,
2953  },
2954 
2955 };
2956 
2957 const basic::ZonePolicy kZonePolicyJapan ACE_TIME_PROGMEM = {
2958  kZoneRulesJapan /*rules*/,
2959  1 /*numRules*/,
2960 };
2961 
2962 //---------------------------------------------------------------------------
2963 // Policy name: Jordan
2964 // Rules: 14
2965 //---------------------------------------------------------------------------
2966 
2967 static const basic::ZoneRule kZoneRulesJordan[] ACE_TIME_PROGMEM = {
2968  // Anchor: Rule Jordan 1995 1998 - Sep Fri>=15 0:00s 0 -
2969  {
2970  -127 /*fromYearTiny (-32767)*/,
2971  -127 /*toYearTiny (-32767)*/,
2972  1 /*inMonth*/,
2973  0 /*onDayOfWeek*/,
2974  1 /*onDayOfMonth*/,
2975  0 /*atTimeCode*/,
2976  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2977  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2978  0 /*letterIndex ("")*/,
2979  },
2980  // Rule Jordan 1995 1998 - Sep Fri>=15 0:00s 0 -
2981  {
2982  -105 /*fromYearTiny (1995)*/,
2983  -102 /*toYearTiny (1998)*/,
2984  9 /*inMonth*/,
2985  5 /*onDayOfWeek*/,
2986  15 /*onDayOfMonth*/,
2987  0 /*atTimeCode*/,
2988  16 /*atTimeModifier (kSuffixS + minute=0)*/,
2989  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2990  0 /*letterIndex ("")*/,
2991  },
2992  // Rule Jordan 1999 only - Jul 1 0:00s 1:00 S
2993  {
2994  -101 /*fromYearTiny (1999)*/,
2995  -101 /*toYearTiny (1999)*/,
2996  7 /*inMonth*/,
2997  0 /*onDayOfWeek*/,
2998  1 /*onDayOfMonth*/,
2999  0 /*atTimeCode*/,
3000  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3001  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3002  4 /*letterIndex ("S")*/,
3003  },
3004  // Rule Jordan 1999 2002 - Sep lastFri 0:00s 0 -
3005  {
3006  -101 /*fromYearTiny (1999)*/,
3007  -98 /*toYearTiny (2002)*/,
3008  9 /*inMonth*/,
3009  5 /*onDayOfWeek*/,
3010  0 /*onDayOfMonth*/,
3011  0 /*atTimeCode*/,
3012  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3013  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3014  0 /*letterIndex ("")*/,
3015  },
3016  // Rule Jordan 2000 2001 - Mar lastThu 0:00s 1:00 S
3017  {
3018  -100 /*fromYearTiny (2000)*/,
3019  -99 /*toYearTiny (2001)*/,
3020  3 /*inMonth*/,
3021  4 /*onDayOfWeek*/,
3022  0 /*onDayOfMonth*/,
3023  0 /*atTimeCode*/,
3024  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3025  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3026  4 /*letterIndex ("S")*/,
3027  },
3028  // Rule Jordan 2002 2012 - Mar lastThu 24:00 1:00 S
3029  {
3030  -98 /*fromYearTiny (2002)*/,
3031  -88 /*toYearTiny (2012)*/,
3032  3 /*inMonth*/,
3033  4 /*onDayOfWeek*/,
3034  0 /*onDayOfMonth*/,
3035  96 /*atTimeCode*/,
3036  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3037  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3038  4 /*letterIndex ("S")*/,
3039  },
3040  // Rule Jordan 2003 only - Oct 24 0:00s 0 -
3041  {
3042  -97 /*fromYearTiny (2003)*/,
3043  -97 /*toYearTiny (2003)*/,
3044  10 /*inMonth*/,
3045  0 /*onDayOfWeek*/,
3046  24 /*onDayOfMonth*/,
3047  0 /*atTimeCode*/,
3048  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3049  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3050  0 /*letterIndex ("")*/,
3051  },
3052  // Rule Jordan 2004 only - Oct 15 0:00s 0 -
3053  {
3054  -96 /*fromYearTiny (2004)*/,
3055  -96 /*toYearTiny (2004)*/,
3056  10 /*inMonth*/,
3057  0 /*onDayOfWeek*/,
3058  15 /*onDayOfMonth*/,
3059  0 /*atTimeCode*/,
3060  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3061  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3062  0 /*letterIndex ("")*/,
3063  },
3064  // Rule Jordan 2005 only - Sep lastFri 0:00s 0 -
3065  {
3066  -95 /*fromYearTiny (2005)*/,
3067  -95 /*toYearTiny (2005)*/,
3068  9 /*inMonth*/,
3069  5 /*onDayOfWeek*/,
3070  0 /*onDayOfMonth*/,
3071  0 /*atTimeCode*/,
3072  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3073  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3074  0 /*letterIndex ("")*/,
3075  },
3076  // Rule Jordan 2006 2011 - Oct lastFri 0:00s 0 -
3077  {
3078  -94 /*fromYearTiny (2006)*/,
3079  -89 /*toYearTiny (2011)*/,
3080  10 /*inMonth*/,
3081  5 /*onDayOfWeek*/,
3082  0 /*onDayOfMonth*/,
3083  0 /*atTimeCode*/,
3084  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3085  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3086  0 /*letterIndex ("")*/,
3087  },
3088  // Rule Jordan 2013 only - Dec 20 0:00 0 -
3089  {
3090  -87 /*fromYearTiny (2013)*/,
3091  -87 /*toYearTiny (2013)*/,
3092  12 /*inMonth*/,
3093  0 /*onDayOfWeek*/,
3094  20 /*onDayOfMonth*/,
3095  0 /*atTimeCode*/,
3096  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3097  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3098  0 /*letterIndex ("")*/,
3099  },
3100  // Rule Jordan 2014 2021 - Mar lastThu 24:00 1:00 S
3101  {
3102  -86 /*fromYearTiny (2014)*/,
3103  -79 /*toYearTiny (2021)*/,
3104  3 /*inMonth*/,
3105  4 /*onDayOfWeek*/,
3106  0 /*onDayOfMonth*/,
3107  96 /*atTimeCode*/,
3108  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3109  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3110  4 /*letterIndex ("S")*/,
3111  },
3112  // Rule Jordan 2014 2022 - Oct lastFri 0:00s 0 -
3113  {
3114  -86 /*fromYearTiny (2014)*/,
3115  -78 /*toYearTiny (2022)*/,
3116  10 /*inMonth*/,
3117  5 /*onDayOfWeek*/,
3118  0 /*onDayOfMonth*/,
3119  0 /*atTimeCode*/,
3120  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3121  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3122  0 /*letterIndex ("")*/,
3123  },
3124  // Rule Jordan 2022 only - Feb lastThu 24:00 1:00 S
3125  {
3126  -78 /*fromYearTiny (2022)*/,
3127  -78 /*toYearTiny (2022)*/,
3128  2 /*inMonth*/,
3129  4 /*onDayOfWeek*/,
3130  0 /*onDayOfMonth*/,
3131  96 /*atTimeCode*/,
3132  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3133  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3134  4 /*letterIndex ("S")*/,
3135  },
3136 
3137 };
3138 
3139 const basic::ZonePolicy kZonePolicyJordan ACE_TIME_PROGMEM = {
3140  kZoneRulesJordan /*rules*/,
3141  14 /*numRules*/,
3142 };
3143 
3144 //---------------------------------------------------------------------------
3145 // Policy name: LH
3146 // Rules: 10
3147 //---------------------------------------------------------------------------
3148 
3149 static const basic::ZoneRule kZoneRulesLH[] ACE_TIME_PROGMEM = {
3150  // Anchor: Rule LH 1990 1995 - Mar Sun>=1 2:00 0 -
3151  {
3152  -127 /*fromYearTiny (-32767)*/,
3153  -127 /*toYearTiny (-32767)*/,
3154  1 /*inMonth*/,
3155  0 /*onDayOfWeek*/,
3156  1 /*onDayOfMonth*/,
3157  0 /*atTimeCode*/,
3158  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3159  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3160  0 /*letterIndex ("")*/,
3161  },
3162  // Rule LH 1987 1999 - Oct lastSun 2:00 0:30 -
3163  {
3164  -113 /*fromYearTiny (1987)*/,
3165  -101 /*toYearTiny (1999)*/,
3166  10 /*inMonth*/,
3167  7 /*onDayOfWeek*/,
3168  0 /*onDayOfMonth*/,
3169  8 /*atTimeCode*/,
3170  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3171  6 /*deltaCode ((deltaMinutes=30)/15 + 4)*/,
3172  0 /*letterIndex ("")*/,
3173  },
3174  // Rule LH 1990 1995 - Mar Sun>=1 2:00 0 -
3175  {
3176  -110 /*fromYearTiny (1990)*/,
3177  -105 /*toYearTiny (1995)*/,
3178  3 /*inMonth*/,
3179  7 /*onDayOfWeek*/,
3180  1 /*onDayOfMonth*/,
3181  8 /*atTimeCode*/,
3182  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3183  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3184  0 /*letterIndex ("")*/,
3185  },
3186  // Rule LH 1996 2005 - Mar lastSun 2:00 0 -
3187  {
3188  -104 /*fromYearTiny (1996)*/,
3189  -95 /*toYearTiny (2005)*/,
3190  3 /*inMonth*/,
3191  7 /*onDayOfWeek*/,
3192  0 /*onDayOfMonth*/,
3193  8 /*atTimeCode*/,
3194  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3195  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3196  0 /*letterIndex ("")*/,
3197  },
3198  // Rule LH 2000 only - Aug lastSun 2:00 0:30 -
3199  {
3200  -100 /*fromYearTiny (2000)*/,
3201  -100 /*toYearTiny (2000)*/,
3202  8 /*inMonth*/,
3203  7 /*onDayOfWeek*/,
3204  0 /*onDayOfMonth*/,
3205  8 /*atTimeCode*/,
3206  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3207  6 /*deltaCode ((deltaMinutes=30)/15 + 4)*/,
3208  0 /*letterIndex ("")*/,
3209  },
3210  // Rule LH 2001 2007 - Oct lastSun 2:00 0:30 -
3211  {
3212  -99 /*fromYearTiny (2001)*/,
3213  -93 /*toYearTiny (2007)*/,
3214  10 /*inMonth*/,
3215  7 /*onDayOfWeek*/,
3216  0 /*onDayOfMonth*/,
3217  8 /*atTimeCode*/,
3218  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3219  6 /*deltaCode ((deltaMinutes=30)/15 + 4)*/,
3220  0 /*letterIndex ("")*/,
3221  },
3222  // Rule LH 2006 only - Apr Sun>=1 2:00 0 -
3223  {
3224  -94 /*fromYearTiny (2006)*/,
3225  -94 /*toYearTiny (2006)*/,
3226  4 /*inMonth*/,
3227  7 /*onDayOfWeek*/,
3228  1 /*onDayOfMonth*/,
3229  8 /*atTimeCode*/,
3230  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3231  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3232  0 /*letterIndex ("")*/,
3233  },
3234  // Rule LH 2007 only - Mar lastSun 2:00 0 -
3235  {
3236  -93 /*fromYearTiny (2007)*/,
3237  -93 /*toYearTiny (2007)*/,
3238  3 /*inMonth*/,
3239  7 /*onDayOfWeek*/,
3240  0 /*onDayOfMonth*/,
3241  8 /*atTimeCode*/,
3242  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3243  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3244  0 /*letterIndex ("")*/,
3245  },
3246  // Rule LH 2008 max - Apr Sun>=1 2:00 0 -
3247  {
3248  -92 /*fromYearTiny (2008)*/,
3249  126 /*toYearTiny (32766)*/,
3250  4 /*inMonth*/,
3251  7 /*onDayOfWeek*/,
3252  1 /*onDayOfMonth*/,
3253  8 /*atTimeCode*/,
3254  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3255  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3256  0 /*letterIndex ("")*/,
3257  },
3258  // Rule LH 2008 max - Oct Sun>=1 2:00 0:30 -
3259  {
3260  -92 /*fromYearTiny (2008)*/,
3261  126 /*toYearTiny (32766)*/,
3262  10 /*inMonth*/,
3263  7 /*onDayOfWeek*/,
3264  1 /*onDayOfMonth*/,
3265  8 /*atTimeCode*/,
3266  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3267  6 /*deltaCode ((deltaMinutes=30)/15 + 4)*/,
3268  0 /*letterIndex ("")*/,
3269  },
3270 
3271 };
3272 
3273 const basic::ZonePolicy kZonePolicyLH ACE_TIME_PROGMEM = {
3274  kZoneRulesLH /*rules*/,
3275  10 /*numRules*/,
3276 };
3277 
3278 //---------------------------------------------------------------------------
3279 // Policy name: Lebanon
3280 // Rules: 4
3281 //---------------------------------------------------------------------------
3282 
3283 static const basic::ZoneRule kZoneRulesLebanon[] ACE_TIME_PROGMEM = {
3284  // Anchor: Rule Lebanon 1993 1998 - Sep lastSun 0:00 0 -
3285  {
3286  -127 /*fromYearTiny (-32767)*/,
3287  -127 /*toYearTiny (-32767)*/,
3288  1 /*inMonth*/,
3289  0 /*onDayOfWeek*/,
3290  1 /*onDayOfMonth*/,
3291  0 /*atTimeCode*/,
3292  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3293  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3294  0 /*letterIndex ("")*/,
3295  },
3296  // Rule Lebanon 1993 max - Mar lastSun 0:00 1:00 S
3297  {
3298  -107 /*fromYearTiny (1993)*/,
3299  126 /*toYearTiny (32766)*/,
3300  3 /*inMonth*/,
3301  7 /*onDayOfWeek*/,
3302  0 /*onDayOfMonth*/,
3303  0 /*atTimeCode*/,
3304  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3305  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3306  4 /*letterIndex ("S")*/,
3307  },
3308  // Rule Lebanon 1993 1998 - Sep lastSun 0:00 0 -
3309  {
3310  -107 /*fromYearTiny (1993)*/,
3311  -102 /*toYearTiny (1998)*/,
3312  9 /*inMonth*/,
3313  7 /*onDayOfWeek*/,
3314  0 /*onDayOfMonth*/,
3315  0 /*atTimeCode*/,
3316  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3317  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3318  0 /*letterIndex ("")*/,
3319  },
3320  // Rule Lebanon 1999 max - Oct lastSun 0:00 0 -
3321  {
3322  -101 /*fromYearTiny (1999)*/,
3323  126 /*toYearTiny (32766)*/,
3324  10 /*inMonth*/,
3325  7 /*onDayOfWeek*/,
3326  0 /*onDayOfMonth*/,
3327  0 /*atTimeCode*/,
3328  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3329  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3330  0 /*letterIndex ("")*/,
3331  },
3332 
3333 };
3334 
3335 const basic::ZonePolicy kZonePolicyLebanon ACE_TIME_PROGMEM = {
3336  kZoneRulesLebanon /*rules*/,
3337  4 /*numRules*/,
3338 };
3339 
3340 //---------------------------------------------------------------------------
3341 // Policy name: Macau
3342 // Rules: 1
3343 //---------------------------------------------------------------------------
3344 
3345 static const basic::ZoneRule kZoneRulesMacau[] ACE_TIME_PROGMEM = {
3346  // Anchor: Rule Macau 1979 only - Oct Sun>=16 03:30 0 S
3347  {
3348  -127 /*fromYearTiny (-32767)*/,
3349  -127 /*toYearTiny (-32767)*/,
3350  1 /*inMonth*/,
3351  0 /*onDayOfWeek*/,
3352  1 /*onDayOfMonth*/,
3353  0 /*atTimeCode*/,
3354  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3355  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3356  4 /*letterIndex ("S")*/,
3357  },
3358 
3359 };
3360 
3361 const basic::ZonePolicy kZonePolicyMacau ACE_TIME_PROGMEM = {
3362  kZoneRulesMacau /*rules*/,
3363  1 /*numRules*/,
3364 };
3365 
3366 //---------------------------------------------------------------------------
3367 // Policy name: Mauritius
3368 // Rules: 4
3369 //---------------------------------------------------------------------------
3370 
3371 static const basic::ZoneRule kZoneRulesMauritius[] ACE_TIME_PROGMEM = {
3372  // Anchor: Rule Mauritius 1983 only - Mar 21 0:00 0 -
3373  {
3374  -127 /*fromYearTiny (-32767)*/,
3375  -127 /*toYearTiny (-32767)*/,
3376  1 /*inMonth*/,
3377  0 /*onDayOfWeek*/,
3378  1 /*onDayOfMonth*/,
3379  0 /*atTimeCode*/,
3380  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3381  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3382  0 /*letterIndex ("")*/,
3383  },
3384  // Rule Mauritius 1983 only - Mar 21 0:00 0 -
3385  {
3386  -117 /*fromYearTiny (1983)*/,
3387  -117 /*toYearTiny (1983)*/,
3388  3 /*inMonth*/,
3389  0 /*onDayOfWeek*/,
3390  21 /*onDayOfMonth*/,
3391  0 /*atTimeCode*/,
3392  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3393  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3394  0 /*letterIndex ("")*/,
3395  },
3396  // Rule Mauritius 2008 only - Oct lastSun 2:00 1:00 -
3397  {
3398  -92 /*fromYearTiny (2008)*/,
3399  -92 /*toYearTiny (2008)*/,
3400  10 /*inMonth*/,
3401  7 /*onDayOfWeek*/,
3402  0 /*onDayOfMonth*/,
3403  8 /*atTimeCode*/,
3404  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3405  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3406  0 /*letterIndex ("")*/,
3407  },
3408  // Rule Mauritius 2009 only - Mar lastSun 2:00 0 -
3409  {
3410  -91 /*fromYearTiny (2009)*/,
3411  -91 /*toYearTiny (2009)*/,
3412  3 /*inMonth*/,
3413  7 /*onDayOfWeek*/,
3414  0 /*onDayOfMonth*/,
3415  8 /*atTimeCode*/,
3416  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3417  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3418  0 /*letterIndex ("")*/,
3419  },
3420 
3421 };
3422 
3423 const basic::ZonePolicy kZonePolicyMauritius ACE_TIME_PROGMEM = {
3424  kZoneRulesMauritius /*rules*/,
3425  4 /*numRules*/,
3426 };
3427 
3428 //---------------------------------------------------------------------------
3429 // Policy name: Mexico
3430 // Rules: 8
3431 //---------------------------------------------------------------------------
3432 
3433 static const basic::ZoneRule kZoneRulesMexico[] ACE_TIME_PROGMEM = {
3434  // Anchor: Rule Mexico 1950 only - Jul 30 0:00 0 S
3435  {
3436  -127 /*fromYearTiny (-32767)*/,
3437  -127 /*toYearTiny (-32767)*/,
3438  1 /*inMonth*/,
3439  0 /*onDayOfWeek*/,
3440  1 /*onDayOfMonth*/,
3441  0 /*atTimeCode*/,
3442  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3443  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3444  4 /*letterIndex ("S")*/,
3445  },
3446  // Rule Mexico 1950 only - Jul 30 0:00 0 S
3447  {
3448  -127 /*fromYearTiny (1950)*/,
3449  -127 /*toYearTiny (1950)*/,
3450  7 /*inMonth*/,
3451  0 /*onDayOfWeek*/,
3452  30 /*onDayOfMonth*/,
3453  0 /*atTimeCode*/,
3454  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3455  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3456  4 /*letterIndex ("S")*/,
3457  },
3458  // Rule Mexico 1996 2000 - Apr Sun>=1 2:00 1:00 D
3459  {
3460  -104 /*fromYearTiny (1996)*/,
3461  -100 /*toYearTiny (2000)*/,
3462  4 /*inMonth*/,
3463  7 /*onDayOfWeek*/,
3464  1 /*onDayOfMonth*/,
3465  8 /*atTimeCode*/,
3466  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3467  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3468  3 /*letterIndex ("D")*/,
3469  },
3470  // Rule Mexico 1996 2000 - Oct lastSun 2:00 0 S
3471  {
3472  -104 /*fromYearTiny (1996)*/,
3473  -100 /*toYearTiny (2000)*/,
3474  10 /*inMonth*/,
3475  7 /*onDayOfWeek*/,
3476  0 /*onDayOfMonth*/,
3477  8 /*atTimeCode*/,
3478  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3479  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3480  4 /*letterIndex ("S")*/,
3481  },
3482  // Rule Mexico 2001 only - May Sun>=1 2:00 1:00 D
3483  {
3484  -99 /*fromYearTiny (2001)*/,
3485  -99 /*toYearTiny (2001)*/,
3486  5 /*inMonth*/,
3487  7 /*onDayOfWeek*/,
3488  1 /*onDayOfMonth*/,
3489  8 /*atTimeCode*/,
3490  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3491  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3492  3 /*letterIndex ("D")*/,
3493  },
3494  // Rule Mexico 2001 only - Sep lastSun 2:00 0 S
3495  {
3496  -99 /*fromYearTiny (2001)*/,
3497  -99 /*toYearTiny (2001)*/,
3498  9 /*inMonth*/,
3499  7 /*onDayOfWeek*/,
3500  0 /*onDayOfMonth*/,
3501  8 /*atTimeCode*/,
3502  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3503  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3504  4 /*letterIndex ("S")*/,
3505  },
3506  // Rule Mexico 2002 2022 - Apr Sun>=1 2:00 1:00 D
3507  {
3508  -98 /*fromYearTiny (2002)*/,
3509  -78 /*toYearTiny (2022)*/,
3510  4 /*inMonth*/,
3511  7 /*onDayOfWeek*/,
3512  1 /*onDayOfMonth*/,
3513  8 /*atTimeCode*/,
3514  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3515  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3516  3 /*letterIndex ("D")*/,
3517  },
3518  // Rule Mexico 2002 2022 - Oct lastSun 2:00 0 S
3519  {
3520  -98 /*fromYearTiny (2002)*/,
3521  -78 /*toYearTiny (2022)*/,
3522  10 /*inMonth*/,
3523  7 /*onDayOfWeek*/,
3524  0 /*onDayOfMonth*/,
3525  8 /*atTimeCode*/,
3526  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3527  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3528  4 /*letterIndex ("S")*/,
3529  },
3530 
3531 };
3532 
3533 const basic::ZonePolicy kZonePolicyMexico ACE_TIME_PROGMEM = {
3534  kZoneRulesMexico /*rules*/,
3535  8 /*numRules*/,
3536 };
3537 
3538 //---------------------------------------------------------------------------
3539 // Policy name: Moldova
3540 // Rules: 3
3541 //---------------------------------------------------------------------------
3542 
3543 static const basic::ZoneRule kZoneRulesMoldova[] ACE_TIME_PROGMEM = {
3544  // Anchor: Rule Moldova 1997 max - Oct lastSun 3:00 0 -
3545  {
3546  -127 /*fromYearTiny (-32767)*/,
3547  -127 /*toYearTiny (-32767)*/,
3548  1 /*inMonth*/,
3549  0 /*onDayOfWeek*/,
3550  1 /*onDayOfMonth*/,
3551  0 /*atTimeCode*/,
3552  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3553  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3554  0 /*letterIndex ("")*/,
3555  },
3556  // Rule Moldova 1997 max - Mar lastSun 2:00 1:00 S
3557  {
3558  -103 /*fromYearTiny (1997)*/,
3559  126 /*toYearTiny (32766)*/,
3560  3 /*inMonth*/,
3561  7 /*onDayOfWeek*/,
3562  0 /*onDayOfMonth*/,
3563  8 /*atTimeCode*/,
3564  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3565  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3566  4 /*letterIndex ("S")*/,
3567  },
3568  // Rule Moldova 1997 max - Oct lastSun 3:00 0 -
3569  {
3570  -103 /*fromYearTiny (1997)*/,
3571  126 /*toYearTiny (32766)*/,
3572  10 /*inMonth*/,
3573  7 /*onDayOfWeek*/,
3574  0 /*onDayOfMonth*/,
3575  12 /*atTimeCode*/,
3576  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3577  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3578  0 /*letterIndex ("")*/,
3579  },
3580 
3581 };
3582 
3583 const basic::ZonePolicy kZonePolicyMoldova ACE_TIME_PROGMEM = {
3584  kZoneRulesMoldova /*rules*/,
3585  3 /*numRules*/,
3586 };
3587 
3588 //---------------------------------------------------------------------------
3589 // Policy name: Moncton
3590 // Rules: 4
3591 //---------------------------------------------------------------------------
3592 
3593 static const basic::ZoneRule kZoneRulesMoncton[] ACE_TIME_PROGMEM = {
3594  // Anchor: Rule Moncton 1957 1972 - Oct lastSun 2:00 0 S
3595  {
3596  -127 /*fromYearTiny (-32767)*/,
3597  -127 /*toYearTiny (-32767)*/,
3598  1 /*inMonth*/,
3599  0 /*onDayOfWeek*/,
3600  1 /*onDayOfMonth*/,
3601  0 /*atTimeCode*/,
3602  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3603  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3604  4 /*letterIndex ("S")*/,
3605  },
3606  // Rule Moncton 1957 1972 - Oct lastSun 2:00 0 S
3607  {
3608  -127 /*fromYearTiny (1957)*/,
3609  -127 /*toYearTiny (1972)*/,
3610  10 /*inMonth*/,
3611  7 /*onDayOfWeek*/,
3612  0 /*onDayOfMonth*/,
3613  8 /*atTimeCode*/,
3614  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3615  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3616  4 /*letterIndex ("S")*/,
3617  },
3618  // Rule Moncton 1993 2006 - Apr Sun>=1 0:01 1:00 D
3619  {
3620  -107 /*fromYearTiny (1993)*/,
3621  -94 /*toYearTiny (2006)*/,
3622  4 /*inMonth*/,
3623  7 /*onDayOfWeek*/,
3624  1 /*onDayOfMonth*/,
3625  0 /*atTimeCode*/,
3626  1 /*atTimeModifier (kSuffixW + minute=1)*/,
3627  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3628  3 /*letterIndex ("D")*/,
3629  },
3630  // Rule Moncton 1993 2006 - Oct lastSun 0:01 0 S
3631  {
3632  -107 /*fromYearTiny (1993)*/,
3633  -94 /*toYearTiny (2006)*/,
3634  10 /*inMonth*/,
3635  7 /*onDayOfWeek*/,
3636  0 /*onDayOfMonth*/,
3637  0 /*atTimeCode*/,
3638  1 /*atTimeModifier (kSuffixW + minute=1)*/,
3639  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3640  4 /*letterIndex ("S")*/,
3641  },
3642 
3643 };
3644 
3645 const basic::ZonePolicy kZonePolicyMoncton ACE_TIME_PROGMEM = {
3646  kZoneRulesMoncton /*rules*/,
3647  4 /*numRules*/,
3648 };
3649 
3650 //---------------------------------------------------------------------------
3651 // Policy name: Mongol
3652 // Rules: 7
3653 //---------------------------------------------------------------------------
3654 
3655 static const basic::ZoneRule kZoneRulesMongol[] ACE_TIME_PROGMEM = {
3656  // Anchor: Rule Mongol 1984 1998 - Sep lastSun 0:00 0 -
3657  {
3658  -127 /*fromYearTiny (-32767)*/,
3659  -127 /*toYearTiny (-32767)*/,
3660  1 /*inMonth*/,
3661  0 /*onDayOfWeek*/,
3662  1 /*onDayOfMonth*/,
3663  0 /*atTimeCode*/,
3664  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3665  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3666  0 /*letterIndex ("")*/,
3667  },
3668  // Rule Mongol 1984 1998 - Sep lastSun 0:00 0 -
3669  {
3670  -116 /*fromYearTiny (1984)*/,
3671  -102 /*toYearTiny (1998)*/,
3672  9 /*inMonth*/,
3673  7 /*onDayOfWeek*/,
3674  0 /*onDayOfMonth*/,
3675  0 /*atTimeCode*/,
3676  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3677  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3678  0 /*letterIndex ("")*/,
3679  },
3680  // Rule Mongol 2001 only - Apr lastSat 2:00 1:00 -
3681  {
3682  -99 /*fromYearTiny (2001)*/,
3683  -99 /*toYearTiny (2001)*/,
3684  4 /*inMonth*/,
3685  6 /*onDayOfWeek*/,
3686  0 /*onDayOfMonth*/,
3687  8 /*atTimeCode*/,
3688  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3689  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3690  0 /*letterIndex ("")*/,
3691  },
3692  // Rule Mongol 2001 2006 - Sep lastSat 2:00 0 -
3693  {
3694  -99 /*fromYearTiny (2001)*/,
3695  -94 /*toYearTiny (2006)*/,
3696  9 /*inMonth*/,
3697  6 /*onDayOfWeek*/,
3698  0 /*onDayOfMonth*/,
3699  8 /*atTimeCode*/,
3700  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3701  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3702  0 /*letterIndex ("")*/,
3703  },
3704  // Rule Mongol 2002 2006 - Mar lastSat 2:00 1:00 -
3705  {
3706  -98 /*fromYearTiny (2002)*/,
3707  -94 /*toYearTiny (2006)*/,
3708  3 /*inMonth*/,
3709  6 /*onDayOfWeek*/,
3710  0 /*onDayOfMonth*/,
3711  8 /*atTimeCode*/,
3712  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3713  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3714  0 /*letterIndex ("")*/,
3715  },
3716  // Rule Mongol 2015 2016 - Mar lastSat 2:00 1:00 -
3717  {
3718  -85 /*fromYearTiny (2015)*/,
3719  -84 /*toYearTiny (2016)*/,
3720  3 /*inMonth*/,
3721  6 /*onDayOfWeek*/,
3722  0 /*onDayOfMonth*/,
3723  8 /*atTimeCode*/,
3724  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3725  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3726  0 /*letterIndex ("")*/,
3727  },
3728  // Rule Mongol 2015 2016 - Sep lastSat 0:00 0 -
3729  {
3730  -85 /*fromYearTiny (2015)*/,
3731  -84 /*toYearTiny (2016)*/,
3732  9 /*inMonth*/,
3733  6 /*onDayOfWeek*/,
3734  0 /*onDayOfMonth*/,
3735  0 /*atTimeCode*/,
3736  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3737  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3738  0 /*letterIndex ("")*/,
3739  },
3740 
3741 };
3742 
3743 const basic::ZonePolicy kZonePolicyMongol ACE_TIME_PROGMEM = {
3744  kZoneRulesMongol /*rules*/,
3745  7 /*numRules*/,
3746 };
3747 
3748 //---------------------------------------------------------------------------
3749 // Policy name: NC
3750 // Rules: 1
3751 //---------------------------------------------------------------------------
3752 
3753 static const basic::ZoneRule kZoneRulesNC[] ACE_TIME_PROGMEM = {
3754  // Anchor: Rule NC 1997 only - Mar 2 2:00s 0 -
3755  {
3756  -127 /*fromYearTiny (-32767)*/,
3757  -127 /*toYearTiny (-32767)*/,
3758  1 /*inMonth*/,
3759  0 /*onDayOfWeek*/,
3760  1 /*onDayOfMonth*/,
3761  0 /*atTimeCode*/,
3762  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3763  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3764  0 /*letterIndex ("")*/,
3765  },
3766 
3767 };
3768 
3769 const basic::ZonePolicy kZonePolicyNC ACE_TIME_PROGMEM = {
3770  kZoneRulesNC /*rules*/,
3771  1 /*numRules*/,
3772 };
3773 
3774 //---------------------------------------------------------------------------
3775 // Policy name: NZ
3776 // Rules: 6
3777 //---------------------------------------------------------------------------
3778 
3779 static const basic::ZoneRule kZoneRulesNZ[] ACE_TIME_PROGMEM = {
3780  // Anchor: Rule NZ 1990 2007 - Mar Sun>=15 2:00s 0 S
3781  {
3782  -127 /*fromYearTiny (-32767)*/,
3783  -127 /*toYearTiny (-32767)*/,
3784  1 /*inMonth*/,
3785  0 /*onDayOfWeek*/,
3786  1 /*onDayOfMonth*/,
3787  0 /*atTimeCode*/,
3788  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3789  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3790  4 /*letterIndex ("S")*/,
3791  },
3792  // Rule NZ 1989 only - Oct Sun>=8 2:00s 1:00 D
3793  {
3794  -111 /*fromYearTiny (1989)*/,
3795  -111 /*toYearTiny (1989)*/,
3796  10 /*inMonth*/,
3797  7 /*onDayOfWeek*/,
3798  8 /*onDayOfMonth*/,
3799  8 /*atTimeCode*/,
3800  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3801  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3802  3 /*letterIndex ("D")*/,
3803  },
3804  // Rule NZ 1990 2006 - Oct Sun>=1 2:00s 1:00 D
3805  {
3806  -110 /*fromYearTiny (1990)*/,
3807  -94 /*toYearTiny (2006)*/,
3808  10 /*inMonth*/,
3809  7 /*onDayOfWeek*/,
3810  1 /*onDayOfMonth*/,
3811  8 /*atTimeCode*/,
3812  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3813  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3814  3 /*letterIndex ("D")*/,
3815  },
3816  // Rule NZ 1990 2007 - Mar Sun>=15 2:00s 0 S
3817  {
3818  -110 /*fromYearTiny (1990)*/,
3819  -93 /*toYearTiny (2007)*/,
3820  3 /*inMonth*/,
3821  7 /*onDayOfWeek*/,
3822  15 /*onDayOfMonth*/,
3823  8 /*atTimeCode*/,
3824  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3825  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3826  4 /*letterIndex ("S")*/,
3827  },
3828  // Rule NZ 2007 max - Sep lastSun 2:00s 1:00 D
3829  {
3830  -93 /*fromYearTiny (2007)*/,
3831  126 /*toYearTiny (32766)*/,
3832  9 /*inMonth*/,
3833  7 /*onDayOfWeek*/,
3834  0 /*onDayOfMonth*/,
3835  8 /*atTimeCode*/,
3836  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3837  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3838  3 /*letterIndex ("D")*/,
3839  },
3840  // Rule NZ 2008 max - Apr Sun>=1 2:00s 0 S
3841  {
3842  -92 /*fromYearTiny (2008)*/,
3843  126 /*toYearTiny (32766)*/,
3844  4 /*inMonth*/,
3845  7 /*onDayOfWeek*/,
3846  1 /*onDayOfMonth*/,
3847  8 /*atTimeCode*/,
3848  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3849  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3850  4 /*letterIndex ("S")*/,
3851  },
3852 
3853 };
3854 
3855 const basic::ZonePolicy kZonePolicyNZ ACE_TIME_PROGMEM = {
3856  kZoneRulesNZ /*rules*/,
3857  6 /*numRules*/,
3858 };
3859 
3860 //---------------------------------------------------------------------------
3861 // Policy name: Namibia
3862 // Rules: 4
3863 //---------------------------------------------------------------------------
3864 
3865 static const basic::ZoneRule kZoneRulesNamibia[] ACE_TIME_PROGMEM = {
3866  // Anchor: Rule Namibia 1994 2017 - Sep Sun>=1 2:00 0 CAT
3867  {
3868  -127 /*fromYearTiny (-32767)*/,
3869  -127 /*toYearTiny (-32767)*/,
3870  1 /*inMonth*/,
3871  0 /*onDayOfWeek*/,
3872  1 /*onDayOfMonth*/,
3873  0 /*atTimeCode*/,
3874  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3875  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3876  1 /*letterIndex ("CAT")*/,
3877  },
3878  // Rule Namibia 1994 only - Mar 21 0:00 -1:00 WAT
3879  {
3880  -106 /*fromYearTiny (1994)*/,
3881  -106 /*toYearTiny (1994)*/,
3882  3 /*inMonth*/,
3883  0 /*onDayOfWeek*/,
3884  21 /*onDayOfMonth*/,
3885  0 /*atTimeCode*/,
3886  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3887  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
3888  5 /*letterIndex ("WAT")*/,
3889  },
3890  // Rule Namibia 1994 2017 - Sep Sun>=1 2:00 0 CAT
3891  {
3892  -106 /*fromYearTiny (1994)*/,
3893  -83 /*toYearTiny (2017)*/,
3894  9 /*inMonth*/,
3895  7 /*onDayOfWeek*/,
3896  1 /*onDayOfMonth*/,
3897  8 /*atTimeCode*/,
3898  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3899  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3900  1 /*letterIndex ("CAT")*/,
3901  },
3902  // Rule Namibia 1995 2017 - Apr Sun>=1 2:00 -1:00 WAT
3903  {
3904  -105 /*fromYearTiny (1995)*/,
3905  -83 /*toYearTiny (2017)*/,
3906  4 /*inMonth*/,
3907  7 /*onDayOfWeek*/,
3908  1 /*onDayOfMonth*/,
3909  8 /*atTimeCode*/,
3910  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3911  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
3912  5 /*letterIndex ("WAT")*/,
3913  },
3914 
3915 };
3916 
3917 const basic::ZonePolicy kZonePolicyNamibia ACE_TIME_PROGMEM = {
3918  kZoneRulesNamibia /*rules*/,
3919  4 /*numRules*/,
3920 };
3921 
3922 //---------------------------------------------------------------------------
3923 // Policy name: Nic
3924 // Rules: 6
3925 //---------------------------------------------------------------------------
3926 
3927 static const basic::ZoneRule kZoneRulesNic[] ACE_TIME_PROGMEM = {
3928  // Anchor: Rule Nic 1979 1980 - Jun Mon>=23 0:00 0 S
3929  {
3930  -127 /*fromYearTiny (-32767)*/,
3931  -127 /*toYearTiny (-32767)*/,
3932  1 /*inMonth*/,
3933  0 /*onDayOfWeek*/,
3934  1 /*onDayOfMonth*/,
3935  0 /*atTimeCode*/,
3936  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3937  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3938  4 /*letterIndex ("S")*/,
3939  },
3940  // Rule Nic 1979 1980 - Jun Mon>=23 0:00 0 S
3941  {
3942  -121 /*fromYearTiny (1979)*/,
3943  -120 /*toYearTiny (1980)*/,
3944  6 /*inMonth*/,
3945  1 /*onDayOfWeek*/,
3946  23 /*onDayOfMonth*/,
3947  0 /*atTimeCode*/,
3948  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3949  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3950  4 /*letterIndex ("S")*/,
3951  },
3952  // Rule Nic 2005 only - Apr 10 0:00 1:00 D
3953  {
3954  -95 /*fromYearTiny (2005)*/,
3955  -95 /*toYearTiny (2005)*/,
3956  4 /*inMonth*/,
3957  0 /*onDayOfWeek*/,
3958  10 /*onDayOfMonth*/,
3959  0 /*atTimeCode*/,
3960  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3961  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3962  3 /*letterIndex ("D")*/,
3963  },
3964  // Rule Nic 2005 only - Oct Sun>=1 0:00 0 S
3965  {
3966  -95 /*fromYearTiny (2005)*/,
3967  -95 /*toYearTiny (2005)*/,
3968  10 /*inMonth*/,
3969  7 /*onDayOfWeek*/,
3970  1 /*onDayOfMonth*/,
3971  0 /*atTimeCode*/,
3972  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3973  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3974  4 /*letterIndex ("S")*/,
3975  },
3976  // Rule Nic 2006 only - Apr 30 2:00 1:00 D
3977  {
3978  -94 /*fromYearTiny (2006)*/,
3979  -94 /*toYearTiny (2006)*/,
3980  4 /*inMonth*/,
3981  0 /*onDayOfWeek*/,
3982  30 /*onDayOfMonth*/,
3983  8 /*atTimeCode*/,
3984  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3985  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3986  3 /*letterIndex ("D")*/,
3987  },
3988  // Rule Nic 2006 only - Oct Sun>=1 1:00 0 S
3989  {
3990  -94 /*fromYearTiny (2006)*/,
3991  -94 /*toYearTiny (2006)*/,
3992  10 /*inMonth*/,
3993  7 /*onDayOfWeek*/,
3994  1 /*onDayOfMonth*/,
3995  4 /*atTimeCode*/,
3996  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3997  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3998  4 /*letterIndex ("S")*/,
3999  },
4000 
4001 };
4002 
4003 const basic::ZonePolicy kZonePolicyNic ACE_TIME_PROGMEM = {
4004  kZoneRulesNic /*rules*/,
4005  6 /*numRules*/,
4006 };
4007 
4008 //---------------------------------------------------------------------------
4009 // Policy name: PRC
4010 // Rules: 1
4011 //---------------------------------------------------------------------------
4012 
4013 static const basic::ZoneRule kZoneRulesPRC[] ACE_TIME_PROGMEM = {
4014  // Anchor: Rule PRC 1986 1991 - Sep Sun>=11 2:00 0 S
4015  {
4016  -127 /*fromYearTiny (-32767)*/,
4017  -127 /*toYearTiny (-32767)*/,
4018  1 /*inMonth*/,
4019  0 /*onDayOfWeek*/,
4020  1 /*onDayOfMonth*/,
4021  0 /*atTimeCode*/,
4022  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4023  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4024  4 /*letterIndex ("S")*/,
4025  },
4026 
4027 };
4028 
4029 const basic::ZonePolicy kZonePolicyPRC ACE_TIME_PROGMEM = {
4030  kZoneRulesPRC /*rules*/,
4031  1 /*numRules*/,
4032 };
4033 
4034 //---------------------------------------------------------------------------
4035 // Policy name: Pakistan
4036 // Rules: 6
4037 //---------------------------------------------------------------------------
4038 
4039 static const basic::ZoneRule kZoneRulesPakistan[] ACE_TIME_PROGMEM = {
4040  // Anchor: Rule Pakistan 2002 only - Oct Sun>=2 0:00 0 -
4041  {
4042  -127 /*fromYearTiny (-32767)*/,
4043  -127 /*toYearTiny (-32767)*/,
4044  1 /*inMonth*/,
4045  0 /*onDayOfWeek*/,
4046  1 /*onDayOfMonth*/,
4047  0 /*atTimeCode*/,
4048  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4049  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4050  0 /*letterIndex ("")*/,
4051  },
4052  // Rule Pakistan 2002 only - Apr Sun>=2 0:00 1:00 S
4053  {
4054  -98 /*fromYearTiny (2002)*/,
4055  -98 /*toYearTiny (2002)*/,
4056  4 /*inMonth*/,
4057  7 /*onDayOfWeek*/,
4058  2 /*onDayOfMonth*/,
4059  0 /*atTimeCode*/,
4060  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4061  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4062  4 /*letterIndex ("S")*/,
4063  },
4064  // Rule Pakistan 2002 only - Oct Sun>=2 0:00 0 -
4065  {
4066  -98 /*fromYearTiny (2002)*/,
4067  -98 /*toYearTiny (2002)*/,
4068  10 /*inMonth*/,
4069  7 /*onDayOfWeek*/,
4070  2 /*onDayOfMonth*/,
4071  0 /*atTimeCode*/,
4072  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4073  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4074  0 /*letterIndex ("")*/,
4075  },
4076  // Rule Pakistan 2008 only - Jun 1 0:00 1:00 S
4077  {
4078  -92 /*fromYearTiny (2008)*/,
4079  -92 /*toYearTiny (2008)*/,
4080  6 /*inMonth*/,
4081  0 /*onDayOfWeek*/,
4082  1 /*onDayOfMonth*/,
4083  0 /*atTimeCode*/,
4084  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4085  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4086  4 /*letterIndex ("S")*/,
4087  },
4088  // Rule Pakistan 2008 2009 - Nov 1 0:00 0 -
4089  {
4090  -92 /*fromYearTiny (2008)*/,
4091  -91 /*toYearTiny (2009)*/,
4092  11 /*inMonth*/,
4093  0 /*onDayOfWeek*/,
4094  1 /*onDayOfMonth*/,
4095  0 /*atTimeCode*/,
4096  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4097  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4098  0 /*letterIndex ("")*/,
4099  },
4100  // Rule Pakistan 2009 only - Apr 15 0:00 1:00 S
4101  {
4102  -91 /*fromYearTiny (2009)*/,
4103  -91 /*toYearTiny (2009)*/,
4104  4 /*inMonth*/,
4105  0 /*onDayOfWeek*/,
4106  15 /*onDayOfMonth*/,
4107  0 /*atTimeCode*/,
4108  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4109  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4110  4 /*letterIndex ("S")*/,
4111  },
4112 
4113 };
4114 
4115 const basic::ZonePolicy kZonePolicyPakistan ACE_TIME_PROGMEM = {
4116  kZoneRulesPakistan /*rules*/,
4117  6 /*numRules*/,
4118 };
4119 
4120 //---------------------------------------------------------------------------
4121 // Policy name: Para
4122 // Rules: 11
4123 //---------------------------------------------------------------------------
4124 
4125 static const basic::ZoneRule kZoneRulesPara[] ACE_TIME_PROGMEM = {
4126  // Anchor: Rule Para 1997 only - Feb lastSun 0:00 0 -
4127  {
4128  -127 /*fromYearTiny (-32767)*/,
4129  -127 /*toYearTiny (-32767)*/,
4130  1 /*inMonth*/,
4131  0 /*onDayOfWeek*/,
4132  1 /*onDayOfMonth*/,
4133  0 /*atTimeCode*/,
4134  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4135  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4136  0 /*letterIndex ("")*/,
4137  },
4138  // Rule Para 1996 2001 - Oct Sun>=1 0:00 1:00 -
4139  {
4140  -104 /*fromYearTiny (1996)*/,
4141  -99 /*toYearTiny (2001)*/,
4142  10 /*inMonth*/,
4143  7 /*onDayOfWeek*/,
4144  1 /*onDayOfMonth*/,
4145  0 /*atTimeCode*/,
4146  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4147  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4148  0 /*letterIndex ("")*/,
4149  },
4150  // Rule Para 1997 only - Feb lastSun 0:00 0 -
4151  {
4152  -103 /*fromYearTiny (1997)*/,
4153  -103 /*toYearTiny (1997)*/,
4154  2 /*inMonth*/,
4155  7 /*onDayOfWeek*/,
4156  0 /*onDayOfMonth*/,
4157  0 /*atTimeCode*/,
4158  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4159  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4160  0 /*letterIndex ("")*/,
4161  },
4162  // Rule Para 1998 2001 - Mar Sun>=1 0:00 0 -
4163  {
4164  -102 /*fromYearTiny (1998)*/,
4165  -99 /*toYearTiny (2001)*/,
4166  3 /*inMonth*/,
4167  7 /*onDayOfWeek*/,
4168  1 /*onDayOfMonth*/,
4169  0 /*atTimeCode*/,
4170  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4171  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4172  0 /*letterIndex ("")*/,
4173  },
4174  // Rule Para 2002 2004 - Apr Sun>=1 0:00 0 -
4175  {
4176  -98 /*fromYearTiny (2002)*/,
4177  -96 /*toYearTiny (2004)*/,
4178  4 /*inMonth*/,
4179  7 /*onDayOfWeek*/,
4180  1 /*onDayOfMonth*/,
4181  0 /*atTimeCode*/,
4182  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4183  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4184  0 /*letterIndex ("")*/,
4185  },
4186  // Rule Para 2002 2003 - Sep Sun>=1 0:00 1:00 -
4187  {
4188  -98 /*fromYearTiny (2002)*/,
4189  -97 /*toYearTiny (2003)*/,
4190  9 /*inMonth*/,
4191  7 /*onDayOfWeek*/,
4192  1 /*onDayOfMonth*/,
4193  0 /*atTimeCode*/,
4194  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4195  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4196  0 /*letterIndex ("")*/,
4197  },
4198  // Rule Para 2004 2009 - Oct Sun>=15 0:00 1:00 -
4199  {
4200  -96 /*fromYearTiny (2004)*/,
4201  -91 /*toYearTiny (2009)*/,
4202  10 /*inMonth*/,
4203  7 /*onDayOfWeek*/,
4204  15 /*onDayOfMonth*/,
4205  0 /*atTimeCode*/,
4206  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4207  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4208  0 /*letterIndex ("")*/,
4209  },
4210  // Rule Para 2005 2009 - Mar Sun>=8 0:00 0 -
4211  {
4212  -95 /*fromYearTiny (2005)*/,
4213  -91 /*toYearTiny (2009)*/,
4214  3 /*inMonth*/,
4215  7 /*onDayOfWeek*/,
4216  8 /*onDayOfMonth*/,
4217  0 /*atTimeCode*/,
4218  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4219  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4220  0 /*letterIndex ("")*/,
4221  },
4222  // Rule Para 2010 max - Oct Sun>=1 0:00 1:00 -
4223  {
4224  -90 /*fromYearTiny (2010)*/,
4225  126 /*toYearTiny (32766)*/,
4226  10 /*inMonth*/,
4227  7 /*onDayOfWeek*/,
4228  1 /*onDayOfMonth*/,
4229  0 /*atTimeCode*/,
4230  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4231  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4232  0 /*letterIndex ("")*/,
4233  },
4234  // Rule Para 2010 2012 - Apr Sun>=8 0:00 0 -
4235  {
4236  -90 /*fromYearTiny (2010)*/,
4237  -88 /*toYearTiny (2012)*/,
4238  4 /*inMonth*/,
4239  7 /*onDayOfWeek*/,
4240  8 /*onDayOfMonth*/,
4241  0 /*atTimeCode*/,
4242  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4243  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4244  0 /*letterIndex ("")*/,
4245  },
4246  // Rule Para 2013 max - Mar Sun>=22 0:00 0 -
4247  {
4248  -87 /*fromYearTiny (2013)*/,
4249  126 /*toYearTiny (32766)*/,
4250  3 /*inMonth*/,
4251  7 /*onDayOfWeek*/,
4252  22 /*onDayOfMonth*/,
4253  0 /*atTimeCode*/,
4254  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4255  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4256  0 /*letterIndex ("")*/,
4257  },
4258 
4259 };
4260 
4261 const basic::ZonePolicy kZonePolicyPara ACE_TIME_PROGMEM = {
4262  kZoneRulesPara /*rules*/,
4263  11 /*numRules*/,
4264 };
4265 
4266 //---------------------------------------------------------------------------
4267 // Policy name: Peru
4268 // Rules: 1
4269 //---------------------------------------------------------------------------
4270 
4271 static const basic::ZoneRule kZoneRulesPeru[] ACE_TIME_PROGMEM = {
4272  // Anchor: Rule Peru 1994 only - Apr 1 0:00 0 -
4273  {
4274  -127 /*fromYearTiny (-32767)*/,
4275  -127 /*toYearTiny (-32767)*/,
4276  1 /*inMonth*/,
4277  0 /*onDayOfWeek*/,
4278  1 /*onDayOfMonth*/,
4279  0 /*atTimeCode*/,
4280  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4281  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4282  0 /*letterIndex ("")*/,
4283  },
4284 
4285 };
4286 
4287 const basic::ZonePolicy kZonePolicyPeru ACE_TIME_PROGMEM = {
4288  kZoneRulesPeru /*rules*/,
4289  1 /*numRules*/,
4290 };
4291 
4292 //---------------------------------------------------------------------------
4293 // Policy name: Phil
4294 // Rules: 1
4295 //---------------------------------------------------------------------------
4296 
4297 static const basic::ZoneRule kZoneRulesPhil[] ACE_TIME_PROGMEM = {
4298  // Anchor: Rule Phil 1978 only - Sep 21 0:00 0 S
4299  {
4300  -127 /*fromYearTiny (-32767)*/,
4301  -127 /*toYearTiny (-32767)*/,
4302  1 /*inMonth*/,
4303  0 /*onDayOfWeek*/,
4304  1 /*onDayOfMonth*/,
4305  0 /*atTimeCode*/,
4306  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4307  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4308  4 /*letterIndex ("S")*/,
4309  },
4310 
4311 };
4312 
4313 const basic::ZonePolicy kZonePolicyPhil ACE_TIME_PROGMEM = {
4314  kZoneRulesPhil /*rules*/,
4315  1 /*numRules*/,
4316 };
4317 
4318 //---------------------------------------------------------------------------
4319 // Policy name: ROK
4320 // Rules: 1
4321 //---------------------------------------------------------------------------
4322 
4323 static const basic::ZoneRule kZoneRulesROK[] ACE_TIME_PROGMEM = {
4324  // Anchor: Rule ROK 1987 1988 - Oct Sun>=8 3:00 0 S
4325  {
4326  -127 /*fromYearTiny (-32767)*/,
4327  -127 /*toYearTiny (-32767)*/,
4328  1 /*inMonth*/,
4329  0 /*onDayOfWeek*/,
4330  1 /*onDayOfMonth*/,
4331  0 /*atTimeCode*/,
4332  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4333  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4334  4 /*letterIndex ("S")*/,
4335  },
4336 
4337 };
4338 
4339 const basic::ZonePolicy kZonePolicyROK ACE_TIME_PROGMEM = {
4340  kZoneRulesROK /*rules*/,
4341  1 /*numRules*/,
4342 };
4343 
4344 //---------------------------------------------------------------------------
4345 // Policy name: RussiaAsia
4346 // Rules: 4
4347 //---------------------------------------------------------------------------
4348 
4349 static const basic::ZoneRule kZoneRulesRussiaAsia[] ACE_TIME_PROGMEM = {
4350  // Anchor: Rule RussiaAsia 1984 1995 - Sep lastSun 2:00s 0 -
4351  {
4352  -127 /*fromYearTiny (-32767)*/,
4353  -127 /*toYearTiny (-32767)*/,
4354  1 /*inMonth*/,
4355  0 /*onDayOfWeek*/,
4356  1 /*onDayOfMonth*/,
4357  0 /*atTimeCode*/,
4358  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4359  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4360  0 /*letterIndex ("")*/,
4361  },
4362  // Rule RussiaAsia 1984 1995 - Sep lastSun 2:00s 0 -
4363  {
4364  -116 /*fromYearTiny (1984)*/,
4365  -105 /*toYearTiny (1995)*/,
4366  9 /*inMonth*/,
4367  7 /*onDayOfWeek*/,
4368  0 /*onDayOfMonth*/,
4369  8 /*atTimeCode*/,
4370  16 /*atTimeModifier (kSuffixS + minute=0)*/,
4371  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4372  0 /*letterIndex ("")*/,
4373  },
4374  // Rule RussiaAsia 1985 2010 - Mar lastSun 2:00s 1:00 -
4375  {
4376  -115 /*fromYearTiny (1985)*/,
4377  -90 /*toYearTiny (2010)*/,
4378  3 /*inMonth*/,
4379  7 /*onDayOfWeek*/,
4380  0 /*onDayOfMonth*/,
4381  8 /*atTimeCode*/,
4382  16 /*atTimeModifier (kSuffixS + minute=0)*/,
4383  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4384  0 /*letterIndex ("")*/,
4385  },
4386  // Rule RussiaAsia 1996 2010 - Oct lastSun 2:00s 0 -
4387  {
4388  -104 /*fromYearTiny (1996)*/,
4389  -90 /*toYearTiny (2010)*/,
4390  10 /*inMonth*/,
4391  7 /*onDayOfWeek*/,
4392  0 /*onDayOfMonth*/,
4393  8 /*atTimeCode*/,
4394  16 /*atTimeModifier (kSuffixS + minute=0)*/,
4395  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4396  0 /*letterIndex ("")*/,
4397  },
4398 
4399 };
4400 
4401 const basic::ZonePolicy kZonePolicyRussiaAsia ACE_TIME_PROGMEM = {
4402  kZoneRulesRussiaAsia /*rules*/,
4403  4 /*numRules*/,
4404 };
4405 
4406 //---------------------------------------------------------------------------
4407 // Policy name: SA
4408 // Rules: 1
4409 //---------------------------------------------------------------------------
4410 
4411 static const basic::ZoneRule kZoneRulesSA[] ACE_TIME_PROGMEM = {
4412  // Anchor: Rule SA 1943 1944 - Mar Sun>=15 2:00 0 -
4413  {
4414  -127 /*fromYearTiny (-32767)*/,
4415  -127 /*toYearTiny (-32767)*/,
4416  1 /*inMonth*/,
4417  0 /*onDayOfWeek*/,
4418  1 /*onDayOfMonth*/,
4419  0 /*atTimeCode*/,
4420  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4421  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4422  0 /*letterIndex ("")*/,
4423  },
4424 
4425 };
4426 
4427 const basic::ZonePolicy kZonePolicySA ACE_TIME_PROGMEM = {
4428  kZoneRulesSA /*rules*/,
4429  1 /*numRules*/,
4430 };
4431 
4432 //---------------------------------------------------------------------------
4433 // Policy name: Salv
4434 // Rules: 1
4435 //---------------------------------------------------------------------------
4436 
4437 static const basic::ZoneRule kZoneRulesSalv[] ACE_TIME_PROGMEM = {
4438  // Anchor: Rule Salv 1987 1988 - Sep lastSun 0:00 0 S
4439  {
4440  -127 /*fromYearTiny (-32767)*/,
4441  -127 /*toYearTiny (-32767)*/,
4442  1 /*inMonth*/,
4443  0 /*onDayOfWeek*/,
4444  1 /*onDayOfMonth*/,
4445  0 /*atTimeCode*/,
4446  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4447  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4448  4 /*letterIndex ("S")*/,
4449  },
4450 
4451 };
4452 
4453 const basic::ZonePolicy kZonePolicySalv ACE_TIME_PROGMEM = {
4454  kZoneRulesSalv /*rules*/,
4455  1 /*numRules*/,
4456 };
4457 
4458 //---------------------------------------------------------------------------
4459 // Policy name: Taiwan
4460 // Rules: 1
4461 //---------------------------------------------------------------------------
4462 
4463 static const basic::ZoneRule kZoneRulesTaiwan[] ACE_TIME_PROGMEM = {
4464  // Anchor: Rule Taiwan 1979 only - Oct 1 0:00 0 S
4465  {
4466  -127 /*fromYearTiny (-32767)*/,
4467  -127 /*toYearTiny (-32767)*/,
4468  1 /*inMonth*/,
4469  0 /*onDayOfWeek*/,
4470  1 /*onDayOfMonth*/,
4471  0 /*atTimeCode*/,
4472  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4473  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4474  4 /*letterIndex ("S")*/,
4475  },
4476 
4477 };
4478 
4479 const basic::ZonePolicy kZonePolicyTaiwan ACE_TIME_PROGMEM = {
4480  kZoneRulesTaiwan /*rules*/,
4481  1 /*numRules*/,
4482 };
4483 
4484 //---------------------------------------------------------------------------
4485 // Policy name: Thule
4486 // Rules: 6
4487 //---------------------------------------------------------------------------
4488 
4489 static const basic::ZoneRule kZoneRulesThule[] ACE_TIME_PROGMEM = {
4490  // Anchor: Rule Thule 1991 1992 - Sep lastSun 2:00 0 S
4491  {
4492  -127 /*fromYearTiny (-32767)*/,
4493  -127 /*toYearTiny (-32767)*/,
4494  1 /*inMonth*/,
4495  0 /*onDayOfWeek*/,
4496  1 /*onDayOfMonth*/,
4497  0 /*atTimeCode*/,
4498  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4499  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4500  4 /*letterIndex ("S")*/,
4501  },
4502  // Rule Thule 1991 1992 - Sep lastSun 2:00 0 S
4503  {
4504  -109 /*fromYearTiny (1991)*/,
4505  -108 /*toYearTiny (1992)*/,
4506  9 /*inMonth*/,
4507  7 /*onDayOfWeek*/,
4508  0 /*onDayOfMonth*/,
4509  8 /*atTimeCode*/,
4510  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4511  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4512  4 /*letterIndex ("S")*/,
4513  },
4514  // Rule Thule 1993 2006 - Apr Sun>=1 2:00 1:00 D
4515  {
4516  -107 /*fromYearTiny (1993)*/,
4517  -94 /*toYearTiny (2006)*/,
4518  4 /*inMonth*/,
4519  7 /*onDayOfWeek*/,
4520  1 /*onDayOfMonth*/,
4521  8 /*atTimeCode*/,
4522  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4523  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4524  3 /*letterIndex ("D")*/,
4525  },
4526  // Rule Thule 1993 2006 - Oct lastSun 2:00 0 S
4527  {
4528  -107 /*fromYearTiny (1993)*/,
4529  -94 /*toYearTiny (2006)*/,
4530  10 /*inMonth*/,
4531  7 /*onDayOfWeek*/,
4532  0 /*onDayOfMonth*/,
4533  8 /*atTimeCode*/,
4534  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4535  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4536  4 /*letterIndex ("S")*/,
4537  },
4538  // Rule Thule 2007 max - Mar Sun>=8 2:00 1:00 D
4539  {
4540  -93 /*fromYearTiny (2007)*/,
4541  126 /*toYearTiny (32766)*/,
4542  3 /*inMonth*/,
4543  7 /*onDayOfWeek*/,
4544  8 /*onDayOfMonth*/,
4545  8 /*atTimeCode*/,
4546  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4547  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4548  3 /*letterIndex ("D")*/,
4549  },
4550  // Rule Thule 2007 max - Nov Sun>=1 2:00 0 S
4551  {
4552  -93 /*fromYearTiny (2007)*/,
4553  126 /*toYearTiny (32766)*/,
4554  11 /*inMonth*/,
4555  7 /*onDayOfWeek*/,
4556  1 /*onDayOfMonth*/,
4557  8 /*atTimeCode*/,
4558  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4559  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4560  4 /*letterIndex ("S")*/,
4561  },
4562 
4563 };
4564 
4565 const basic::ZonePolicy kZonePolicyThule ACE_TIME_PROGMEM = {
4566  kZoneRulesThule /*rules*/,
4567  6 /*numRules*/,
4568 };
4569 
4570 //---------------------------------------------------------------------------
4571 // Policy name: Tonga
4572 // Rules: 7
4573 //---------------------------------------------------------------------------
4574 
4575 static const basic::ZoneRule kZoneRulesTonga[] ACE_TIME_PROGMEM = {
4576  // Anchor: Rule Tonga 2000 only - Mar 19 2:00s 0 -
4577  {
4578  -127 /*fromYearTiny (-32767)*/,
4579  -127 /*toYearTiny (-32767)*/,
4580  1 /*inMonth*/,
4581  0 /*onDayOfWeek*/,
4582  1 /*onDayOfMonth*/,
4583  0 /*atTimeCode*/,
4584  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4585  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4586  0 /*letterIndex ("")*/,
4587  },
4588  // Rule Tonga 1999 only - Oct 7 2:00s 1:00 -
4589  {
4590  -101 /*fromYearTiny (1999)*/,
4591  -101 /*toYearTiny (1999)*/,
4592  10 /*inMonth*/,
4593  0 /*onDayOfWeek*/,
4594  7 /*onDayOfMonth*/,
4595  8 /*atTimeCode*/,
4596  16 /*atTimeModifier (kSuffixS + minute=0)*/,
4597  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4598  0 /*letterIndex ("")*/,
4599  },
4600  // Rule Tonga 2000 only - Mar 19 2:00s 0 -
4601  {
4602  -100 /*fromYearTiny (2000)*/,
4603  -100 /*toYearTiny (2000)*/,
4604  3 /*inMonth*/,
4605  0 /*onDayOfWeek*/,
4606  19 /*onDayOfMonth*/,
4607  8 /*atTimeCode*/,
4608  16 /*atTimeModifier (kSuffixS + minute=0)*/,
4609  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4610  0 /*letterIndex ("")*/,
4611  },
4612  // Rule Tonga 2000 2001 - Nov Sun>=1 2:00 1:00 -
4613  {
4614  -100 /*fromYearTiny (2000)*/,
4615  -99 /*toYearTiny (2001)*/,
4616  11 /*inMonth*/,
4617  7 /*onDayOfWeek*/,
4618  1 /*onDayOfMonth*/,
4619  8 /*atTimeCode*/,
4620  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4621  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4622  0 /*letterIndex ("")*/,
4623  },
4624  // Rule Tonga 2001 2002 - Jan lastSun 2:00 0 -
4625  {
4626  -99 /*fromYearTiny (2001)*/,
4627  -98 /*toYearTiny (2002)*/,
4628  1 /*inMonth*/,
4629  7 /*onDayOfWeek*/,
4630  0 /*onDayOfMonth*/,
4631  8 /*atTimeCode*/,
4632  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4633  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4634  0 /*letterIndex ("")*/,
4635  },
4636  // Rule Tonga 2016 only - Nov Sun>=1 2:00 1:00 -
4637  {
4638  -84 /*fromYearTiny (2016)*/,
4639  -84 /*toYearTiny (2016)*/,
4640  11 /*inMonth*/,
4641  7 /*onDayOfWeek*/,
4642  1 /*onDayOfMonth*/,
4643  8 /*atTimeCode*/,
4644  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4645  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4646  0 /*letterIndex ("")*/,
4647  },
4648  // Rule Tonga 2017 only - Jan Sun>=15 3:00 0 -
4649  {
4650  -83 /*fromYearTiny (2017)*/,
4651  -83 /*toYearTiny (2017)*/,
4652  1 /*inMonth*/,
4653  7 /*onDayOfWeek*/,
4654  15 /*onDayOfMonth*/,
4655  12 /*atTimeCode*/,
4656  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4657  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4658  0 /*letterIndex ("")*/,
4659  },
4660 
4661 };
4662 
4663 const basic::ZonePolicy kZonePolicyTonga ACE_TIME_PROGMEM = {
4664  kZoneRulesTonga /*rules*/,
4665  7 /*numRules*/,
4666 };
4667 
4668 //---------------------------------------------------------------------------
4669 // Policy name: Tunisia
4670 // Rules: 6
4671 //---------------------------------------------------------------------------
4672 
4673 static const basic::ZoneRule kZoneRulesTunisia[] ACE_TIME_PROGMEM = {
4674  // Anchor: Rule Tunisia 1988 1990 - Sep lastSun 0:00s 0 -
4675  {
4676  -127 /*fromYearTiny (-32767)*/,
4677  -127 /*toYearTiny (-32767)*/,
4678  1 /*inMonth*/,
4679  0 /*onDayOfWeek*/,
4680  1 /*onDayOfMonth*/,
4681  0 /*atTimeCode*/,
4682  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4683  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4684  0 /*letterIndex ("")*/,
4685  },
4686  // Rule Tunisia 1988 1990 - Sep lastSun 0:00s 0 -
4687  {
4688  -112 /*fromYearTiny (1988)*/,
4689  -110 /*toYearTiny (1990)*/,
4690  9 /*inMonth*/,
4691  7 /*onDayOfWeek*/,
4692  0 /*onDayOfMonth*/,
4693  0 /*atTimeCode*/,
4694  16 /*atTimeModifier (kSuffixS + minute=0)*/,
4695  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4696  0 /*letterIndex ("")*/,
4697  },
4698  // Rule Tunisia 2005 only - May 1 0:00s 1:00 S
4699  {
4700  -95 /*fromYearTiny (2005)*/,
4701  -95 /*toYearTiny (2005)*/,
4702  5 /*inMonth*/,
4703  0 /*onDayOfWeek*/,
4704  1 /*onDayOfMonth*/,
4705  0 /*atTimeCode*/,
4706  16 /*atTimeModifier (kSuffixS + minute=0)*/,
4707  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4708  4 /*letterIndex ("S")*/,
4709  },
4710  // Rule Tunisia 2005 only - Sep 30 1:00s 0 -
4711  {
4712  -95 /*fromYearTiny (2005)*/,
4713  -95 /*toYearTiny (2005)*/,
4714  9 /*inMonth*/,
4715  0 /*onDayOfWeek*/,
4716  30 /*onDayOfMonth*/,
4717  4 /*atTimeCode*/,
4718  16 /*atTimeModifier (kSuffixS + minute=0)*/,
4719  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4720  0 /*letterIndex ("")*/,
4721  },
4722  // Rule Tunisia 2006 2008 - Mar lastSun 2:00s 1:00 S
4723  {
4724  -94 /*fromYearTiny (2006)*/,
4725  -92 /*toYearTiny (2008)*/,
4726  3 /*inMonth*/,
4727  7 /*onDayOfWeek*/,
4728  0 /*onDayOfMonth*/,
4729  8 /*atTimeCode*/,
4730  16 /*atTimeModifier (kSuffixS + minute=0)*/,
4731  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4732  4 /*letterIndex ("S")*/,
4733  },
4734  // Rule Tunisia 2006 2008 - Oct lastSun 2:00s 0 -
4735  {
4736  -94 /*fromYearTiny (2006)*/,
4737  -92 /*toYearTiny (2008)*/,
4738  10 /*inMonth*/,
4739  7 /*onDayOfWeek*/,
4740  0 /*onDayOfMonth*/,
4741  8 /*atTimeCode*/,
4742  16 /*atTimeModifier (kSuffixS + minute=0)*/,
4743  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4744  0 /*letterIndex ("")*/,
4745  },
4746 
4747 };
4748 
4749 const basic::ZonePolicy kZonePolicyTunisia ACE_TIME_PROGMEM = {
4750  kZoneRulesTunisia /*rules*/,
4751  6 /*numRules*/,
4752 };
4753 
4754 //---------------------------------------------------------------------------
4755 // Policy name: US
4756 // Rules: 6
4757 //---------------------------------------------------------------------------
4758 
4759 static const basic::ZoneRule kZoneRulesUS[] ACE_TIME_PROGMEM = {
4760  // Anchor: Rule US 1967 2006 - Oct lastSun 2:00 0 S
4761  {
4762  -127 /*fromYearTiny (-32767)*/,
4763  -127 /*toYearTiny (-32767)*/,
4764  1 /*inMonth*/,
4765  0 /*onDayOfWeek*/,
4766  1 /*onDayOfMonth*/,
4767  0 /*atTimeCode*/,
4768  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4769  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4770  4 /*letterIndex ("S")*/,
4771  },
4772  // Rule US 1967 2006 - Oct lastSun 2:00 0 S
4773  {
4774  -127 /*fromYearTiny (1967)*/,
4775  -94 /*toYearTiny (2006)*/,
4776  10 /*inMonth*/,
4777  7 /*onDayOfWeek*/,
4778  0 /*onDayOfMonth*/,
4779  8 /*atTimeCode*/,
4780  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4781  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4782  4 /*letterIndex ("S")*/,
4783  },
4784  // Rule US 1976 1986 - Apr lastSun 2:00 1:00 D
4785  {
4786  -124 /*fromYearTiny (1976)*/,
4787  -114 /*toYearTiny (1986)*/,
4788  4 /*inMonth*/,
4789  7 /*onDayOfWeek*/,
4790  0 /*onDayOfMonth*/,
4791  8 /*atTimeCode*/,
4792  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4793  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4794  3 /*letterIndex ("D")*/,
4795  },
4796  // Rule US 1987 2006 - Apr Sun>=1 2:00 1:00 D
4797  {
4798  -113 /*fromYearTiny (1987)*/,
4799  -94 /*toYearTiny (2006)*/,
4800  4 /*inMonth*/,
4801  7 /*onDayOfWeek*/,
4802  1 /*onDayOfMonth*/,
4803  8 /*atTimeCode*/,
4804  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4805  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4806  3 /*letterIndex ("D")*/,
4807  },
4808  // Rule US 2007 max - Mar Sun>=8 2:00 1:00 D
4809  {
4810  -93 /*fromYearTiny (2007)*/,
4811  126 /*toYearTiny (32766)*/,
4812  3 /*inMonth*/,
4813  7 /*onDayOfWeek*/,
4814  8 /*onDayOfMonth*/,
4815  8 /*atTimeCode*/,
4816  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4817  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4818  3 /*letterIndex ("D")*/,
4819  },
4820  // Rule US 2007 max - Nov Sun>=1 2:00 0 S
4821  {
4822  -93 /*fromYearTiny (2007)*/,
4823  126 /*toYearTiny (32766)*/,
4824  11 /*inMonth*/,
4825  7 /*onDayOfWeek*/,
4826  1 /*onDayOfMonth*/,
4827  8 /*atTimeCode*/,
4828  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4829  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4830  4 /*letterIndex ("S")*/,
4831  },
4832 
4833 };
4834 
4835 const basic::ZonePolicy kZonePolicyUS ACE_TIME_PROGMEM = {
4836  kZoneRulesUS /*rules*/,
4837  6 /*numRules*/,
4838 };
4839 
4840 //---------------------------------------------------------------------------
4841 // Policy name: Uruguay
4842 // Rules: 7
4843 //---------------------------------------------------------------------------
4844 
4845 static const basic::ZoneRule kZoneRulesUruguay[] ACE_TIME_PROGMEM = {
4846  // Anchor: Rule Uruguay 1993 only - Feb 28 0:00 0 -
4847  {
4848  -127 /*fromYearTiny (-32767)*/,
4849  -127 /*toYearTiny (-32767)*/,
4850  1 /*inMonth*/,
4851  0 /*onDayOfWeek*/,
4852  1 /*onDayOfMonth*/,
4853  0 /*atTimeCode*/,
4854  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4855  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4856  0 /*letterIndex ("")*/,
4857  },
4858  // Rule Uruguay 1993 only - Feb 28 0:00 0 -
4859  {
4860  -107 /*fromYearTiny (1993)*/,
4861  -107 /*toYearTiny (1993)*/,
4862  2 /*inMonth*/,
4863  0 /*onDayOfWeek*/,
4864  28 /*onDayOfMonth*/,
4865  0 /*atTimeCode*/,
4866  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4867  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4868  0 /*letterIndex ("")*/,
4869  },
4870  // Rule Uruguay 2004 only - Sep 19 0:00 1:00 -
4871  {
4872  -96 /*fromYearTiny (2004)*/,
4873  -96 /*toYearTiny (2004)*/,
4874  9 /*inMonth*/,
4875  0 /*onDayOfWeek*/,
4876  19 /*onDayOfMonth*/,
4877  0 /*atTimeCode*/,
4878  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4879  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4880  0 /*letterIndex ("")*/,
4881  },
4882  // Rule Uruguay 2005 only - Mar 27 2:00 0 -
4883  {
4884  -95 /*fromYearTiny (2005)*/,
4885  -95 /*toYearTiny (2005)*/,
4886  3 /*inMonth*/,
4887  0 /*onDayOfWeek*/,
4888  27 /*onDayOfMonth*/,
4889  8 /*atTimeCode*/,
4890  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4891  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4892  0 /*letterIndex ("")*/,
4893  },
4894  // Rule Uruguay 2005 only - Oct 9 2:00 1:00 -
4895  {
4896  -95 /*fromYearTiny (2005)*/,
4897  -95 /*toYearTiny (2005)*/,
4898  10 /*inMonth*/,
4899  0 /*onDayOfWeek*/,
4900  9 /*onDayOfMonth*/,
4901  8 /*atTimeCode*/,
4902  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4903  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4904  0 /*letterIndex ("")*/,
4905  },
4906  // Rule Uruguay 2006 2015 - Mar Sun>=8 2:00 0 -
4907  {
4908  -94 /*fromYearTiny (2006)*/,
4909  -85 /*toYearTiny (2015)*/,
4910  3 /*inMonth*/,
4911  7 /*onDayOfWeek*/,
4912  8 /*onDayOfMonth*/,
4913  8 /*atTimeCode*/,
4914  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4915  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4916  0 /*letterIndex ("")*/,
4917  },
4918  // Rule Uruguay 2006 2014 - Oct Sun>=1 2:00 1:00 -
4919  {
4920  -94 /*fromYearTiny (2006)*/,
4921  -86 /*toYearTiny (2014)*/,
4922  10 /*inMonth*/,
4923  7 /*onDayOfWeek*/,
4924  1 /*onDayOfMonth*/,
4925  8 /*atTimeCode*/,
4926  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4927  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4928  0 /*letterIndex ("")*/,
4929  },
4930 
4931 };
4932 
4933 const basic::ZonePolicy kZonePolicyUruguay ACE_TIME_PROGMEM = {
4934  kZoneRulesUruguay /*rules*/,
4935  7 /*numRules*/,
4936 };
4937 
4938 //---------------------------------------------------------------------------
4939 // Policy name: Vanuatu
4940 // Rules: 1
4941 //---------------------------------------------------------------------------
4942 
4943 static const basic::ZoneRule kZoneRulesVanuatu[] ACE_TIME_PROGMEM = {
4944  // Anchor: Rule Vanuatu 1992 1993 - Jan Sat>=22 24:00 0 -
4945  {
4946  -127 /*fromYearTiny (-32767)*/,
4947  -127 /*toYearTiny (-32767)*/,
4948  1 /*inMonth*/,
4949  0 /*onDayOfWeek*/,
4950  1 /*onDayOfMonth*/,
4951  0 /*atTimeCode*/,
4952  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4953  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4954  0 /*letterIndex ("")*/,
4955  },
4956 
4957 };
4958 
4959 const basic::ZonePolicy kZonePolicyVanuatu ACE_TIME_PROGMEM = {
4960  kZoneRulesVanuatu /*rules*/,
4961  1 /*numRules*/,
4962 };
4963 
4964 //---------------------------------------------------------------------------
4965 // Policy name: Winn
4966 // Rules: 4
4967 //---------------------------------------------------------------------------
4968 
4969 static const basic::ZoneRule kZoneRulesWinn[] ACE_TIME_PROGMEM = {
4970  // Anchor: Rule Winn 1966 2005 - Oct lastSun 2:00s 0 S
4971  {
4972  -127 /*fromYearTiny (-32767)*/,
4973  -127 /*toYearTiny (-32767)*/,
4974  1 /*inMonth*/,
4975  0 /*onDayOfWeek*/,
4976  1 /*onDayOfMonth*/,
4977  0 /*atTimeCode*/,
4978  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4979  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4980  4 /*letterIndex ("S")*/,
4981  },
4982  // Rule Winn 1966 1986 - Apr lastSun 2:00s 1:00 D
4983  {
4984  -127 /*fromYearTiny (1966)*/,
4985  -114 /*toYearTiny (1986)*/,
4986  4 /*inMonth*/,
4987  7 /*onDayOfWeek*/,
4988  0 /*onDayOfMonth*/,
4989  8 /*atTimeCode*/,
4990  16 /*atTimeModifier (kSuffixS + minute=0)*/,
4991  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4992  3 /*letterIndex ("D")*/,
4993  },
4994  // Rule Winn 1966 2005 - Oct lastSun 2:00s 0 S
4995  {
4996  -127 /*fromYearTiny (1966)*/,
4997  -95 /*toYearTiny (2005)*/,
4998  10 /*inMonth*/,
4999  7 /*onDayOfWeek*/,
5000  0 /*onDayOfMonth*/,
5001  8 /*atTimeCode*/,
5002  16 /*atTimeModifier (kSuffixS + minute=0)*/,
5003  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5004  4 /*letterIndex ("S")*/,
5005  },
5006  // Rule Winn 1987 2005 - Apr Sun>=1 2:00s 1:00 D
5007  {
5008  -113 /*fromYearTiny (1987)*/,
5009  -95 /*toYearTiny (2005)*/,
5010  4 /*inMonth*/,
5011  7 /*onDayOfWeek*/,
5012  1 /*onDayOfMonth*/,
5013  8 /*atTimeCode*/,
5014  16 /*atTimeModifier (kSuffixS + minute=0)*/,
5015  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
5016  3 /*letterIndex ("D")*/,
5017  },
5018 
5019 };
5020 
5021 const basic::ZonePolicy kZonePolicyWinn ACE_TIME_PROGMEM = {
5022  kZoneRulesWinn /*rules*/,
5023  4 /*numRules*/,
5024 };
5025 
5026 //---------------------------------------------------------------------------
5027 // Policy name: Zion
5028 // Rules: 25
5029 //---------------------------------------------------------------------------
5030 
5031 static const basic::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = {
5032  // Anchor: Rule Zion 1998 only - Sep 6 0:00 0 S
5033  {
5034  -127 /*fromYearTiny (-32767)*/,
5035  -127 /*toYearTiny (-32767)*/,
5036  1 /*inMonth*/,
5037  0 /*onDayOfWeek*/,
5038  1 /*onDayOfMonth*/,
5039  0 /*atTimeCode*/,
5040  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5041  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5042  4 /*letterIndex ("S")*/,
5043  },
5044  // Rule Zion 1998 only - Sep 6 0:00 0 S
5045  {
5046  -102 /*fromYearTiny (1998)*/,
5047  -102 /*toYearTiny (1998)*/,
5048  9 /*inMonth*/,
5049  0 /*onDayOfWeek*/,
5050  6 /*onDayOfMonth*/,
5051  0 /*atTimeCode*/,
5052  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5053  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5054  4 /*letterIndex ("S")*/,
5055  },
5056  // Rule Zion 1999 only - Apr 2 2:00 1:00 D
5057  {
5058  -101 /*fromYearTiny (1999)*/,
5059  -101 /*toYearTiny (1999)*/,
5060  4 /*inMonth*/,
5061  0 /*onDayOfWeek*/,
5062  2 /*onDayOfMonth*/,
5063  8 /*atTimeCode*/,
5064  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5065  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
5066  3 /*letterIndex ("D")*/,
5067  },
5068  // Rule Zion 1999 only - Sep 3 2:00 0 S
5069  {
5070  -101 /*fromYearTiny (1999)*/,
5071  -101 /*toYearTiny (1999)*/,
5072  9 /*inMonth*/,
5073  0 /*onDayOfWeek*/,
5074  3 /*onDayOfMonth*/,
5075  8 /*atTimeCode*/,
5076  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5077  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5078  4 /*letterIndex ("S")*/,
5079  },
5080  // Rule Zion 2000 only - Apr 14 2:00 1:00 D
5081  {
5082  -100 /*fromYearTiny (2000)*/,
5083  -100 /*toYearTiny (2000)*/,
5084  4 /*inMonth*/,
5085  0 /*onDayOfWeek*/,
5086  14 /*onDayOfMonth*/,
5087  8 /*atTimeCode*/,
5088  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5089  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
5090  3 /*letterIndex ("D")*/,
5091  },
5092  // Rule Zion 2000 only - Oct 6 1:00 0 S
5093  {
5094  -100 /*fromYearTiny (2000)*/,
5095  -100 /*toYearTiny (2000)*/,
5096  10 /*inMonth*/,
5097  0 /*onDayOfWeek*/,
5098  6 /*onDayOfMonth*/,
5099  4 /*atTimeCode*/,
5100  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5101  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5102  4 /*letterIndex ("S")*/,
5103  },
5104  // Rule Zion 2001 only - Apr 9 1:00 1:00 D
5105  {
5106  -99 /*fromYearTiny (2001)*/,
5107  -99 /*toYearTiny (2001)*/,
5108  4 /*inMonth*/,
5109  0 /*onDayOfWeek*/,
5110  9 /*onDayOfMonth*/,
5111  4 /*atTimeCode*/,
5112  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5113  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
5114  3 /*letterIndex ("D")*/,
5115  },
5116  // Rule Zion 2001 only - Sep 24 1:00 0 S
5117  {
5118  -99 /*fromYearTiny (2001)*/,
5119  -99 /*toYearTiny (2001)*/,
5120  9 /*inMonth*/,
5121  0 /*onDayOfWeek*/,
5122  24 /*onDayOfMonth*/,
5123  4 /*atTimeCode*/,
5124  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5125  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5126  4 /*letterIndex ("S")*/,
5127  },
5128  // Rule Zion 2002 only - Mar 29 1:00 1:00 D
5129  {
5130  -98 /*fromYearTiny (2002)*/,
5131  -98 /*toYearTiny (2002)*/,
5132  3 /*inMonth*/,
5133  0 /*onDayOfWeek*/,
5134  29 /*onDayOfMonth*/,
5135  4 /*atTimeCode*/,
5136  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5137  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
5138  3 /*letterIndex ("D")*/,
5139  },
5140  // Rule Zion 2002 only - Oct 7 1:00 0 S
5141  {
5142  -98 /*fromYearTiny (2002)*/,
5143  -98 /*toYearTiny (2002)*/,
5144  10 /*inMonth*/,
5145  0 /*onDayOfWeek*/,
5146  7 /*onDayOfMonth*/,
5147  4 /*atTimeCode*/,
5148  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5149  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5150  4 /*letterIndex ("S")*/,
5151  },
5152  // Rule Zion 2003 only - Mar 28 1:00 1:00 D
5153  {
5154  -97 /*fromYearTiny (2003)*/,
5155  -97 /*toYearTiny (2003)*/,
5156  3 /*inMonth*/,
5157  0 /*onDayOfWeek*/,
5158  28 /*onDayOfMonth*/,
5159  4 /*atTimeCode*/,
5160  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5161  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
5162  3 /*letterIndex ("D")*/,
5163  },
5164  // Rule Zion 2003 only - Oct 3 1:00 0 S
5165  {
5166  -97 /*fromYearTiny (2003)*/,
5167  -97 /*toYearTiny (2003)*/,
5168  10 /*inMonth*/,
5169  0 /*onDayOfWeek*/,
5170  3 /*onDayOfMonth*/,
5171  4 /*atTimeCode*/,
5172  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5173  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5174  4 /*letterIndex ("S")*/,
5175  },
5176  // Rule Zion 2004 only - Apr 7 1:00 1:00 D
5177  {
5178  -96 /*fromYearTiny (2004)*/,
5179  -96 /*toYearTiny (2004)*/,
5180  4 /*inMonth*/,
5181  0 /*onDayOfWeek*/,
5182  7 /*onDayOfMonth*/,
5183  4 /*atTimeCode*/,
5184  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5185  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
5186  3 /*letterIndex ("D")*/,
5187  },
5188  // Rule Zion 2004 only - Sep 22 1:00 0 S
5189  {
5190  -96 /*fromYearTiny (2004)*/,
5191  -96 /*toYearTiny (2004)*/,
5192  9 /*inMonth*/,
5193  0 /*onDayOfWeek*/,
5194  22 /*onDayOfMonth*/,
5195  4 /*atTimeCode*/,
5196  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5197  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5198  4 /*letterIndex ("S")*/,
5199  },
5200  // Rule Zion 2005 2012 - Apr Fri<=1 2:00 1:00 D
5201  {
5202  -95 /*fromYearTiny (2005)*/,
5203  -88 /*toYearTiny (2012)*/,
5204  4 /*inMonth*/,
5205  5 /*onDayOfWeek*/,
5206  -1 /*onDayOfMonth*/,
5207  8 /*atTimeCode*/,
5208  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5209  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
5210  3 /*letterIndex ("D")*/,
5211  },
5212  // Rule Zion 2005 only - Oct 9 2:00 0 S
5213  {
5214  -95 /*fromYearTiny (2005)*/,
5215  -95 /*toYearTiny (2005)*/,
5216  10 /*inMonth*/,
5217  0 /*onDayOfWeek*/,
5218  9 /*onDayOfMonth*/,
5219  8 /*atTimeCode*/,
5220  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5221  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5222  4 /*letterIndex ("S")*/,
5223  },
5224  // Rule Zion 2006 only - Oct 1 2:00 0 S
5225  {
5226  -94 /*fromYearTiny (2006)*/,
5227  -94 /*toYearTiny (2006)*/,
5228  10 /*inMonth*/,
5229  0 /*onDayOfWeek*/,
5230  1 /*onDayOfMonth*/,
5231  8 /*atTimeCode*/,
5232  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5233  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5234  4 /*letterIndex ("S")*/,
5235  },
5236  // Rule Zion 2007 only - Sep 16 2:00 0 S
5237  {
5238  -93 /*fromYearTiny (2007)*/,
5239  -93 /*toYearTiny (2007)*/,
5240  9 /*inMonth*/,
5241  0 /*onDayOfWeek*/,
5242  16 /*onDayOfMonth*/,
5243  8 /*atTimeCode*/,
5244  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5245  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5246  4 /*letterIndex ("S")*/,
5247  },
5248  // Rule Zion 2008 only - Oct 5 2:00 0 S
5249  {
5250  -92 /*fromYearTiny (2008)*/,
5251  -92 /*toYearTiny (2008)*/,
5252  10 /*inMonth*/,
5253  0 /*onDayOfWeek*/,
5254  5 /*onDayOfMonth*/,
5255  8 /*atTimeCode*/,
5256  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5257  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5258  4 /*letterIndex ("S")*/,
5259  },
5260  // Rule Zion 2009 only - Sep 27 2:00 0 S
5261  {
5262  -91 /*fromYearTiny (2009)*/,
5263  -91 /*toYearTiny (2009)*/,
5264  9 /*inMonth*/,
5265  0 /*onDayOfWeek*/,
5266  27 /*onDayOfMonth*/,
5267  8 /*atTimeCode*/,
5268  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5269  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5270  4 /*letterIndex ("S")*/,
5271  },
5272  // Rule Zion 2010 only - Sep 12 2:00 0 S
5273  {
5274  -90 /*fromYearTiny (2010)*/,
5275  -90 /*toYearTiny (2010)*/,
5276  9 /*inMonth*/,
5277  0 /*onDayOfWeek*/,
5278  12 /*onDayOfMonth*/,
5279  8 /*atTimeCode*/,
5280  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5281  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5282  4 /*letterIndex ("S")*/,
5283  },
5284  // Rule Zion 2011 only - Oct 2 2:00 0 S
5285  {
5286  -89 /*fromYearTiny (2011)*/,
5287  -89 /*toYearTiny (2011)*/,
5288  10 /*inMonth*/,
5289  0 /*onDayOfWeek*/,
5290  2 /*onDayOfMonth*/,
5291  8 /*atTimeCode*/,
5292  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5293  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5294  4 /*letterIndex ("S")*/,
5295  },
5296  // Rule Zion 2012 only - Sep 23 2:00 0 S
5297  {
5298  -88 /*fromYearTiny (2012)*/,
5299  -88 /*toYearTiny (2012)*/,
5300  9 /*inMonth*/,
5301  0 /*onDayOfWeek*/,
5302  23 /*onDayOfMonth*/,
5303  8 /*atTimeCode*/,
5304  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5305  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5306  4 /*letterIndex ("S")*/,
5307  },
5308  // Rule Zion 2013 max - Mar Fri>=23 2:00 1:00 D
5309  {
5310  -87 /*fromYearTiny (2013)*/,
5311  126 /*toYearTiny (32766)*/,
5312  3 /*inMonth*/,
5313  5 /*onDayOfWeek*/,
5314  23 /*onDayOfMonth*/,
5315  8 /*atTimeCode*/,
5316  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5317  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
5318  3 /*letterIndex ("D")*/,
5319  },
5320  // Rule Zion 2013 max - Oct lastSun 2:00 0 S
5321  {
5322  -87 /*fromYearTiny (2013)*/,
5323  126 /*toYearTiny (32766)*/,
5324  10 /*inMonth*/,
5325  7 /*onDayOfWeek*/,
5326  0 /*onDayOfMonth*/,
5327  8 /*atTimeCode*/,
5328  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5329  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5330  4 /*letterIndex ("S")*/,
5331  },
5332 
5333 };
5334 
5335 const basic::ZonePolicy kZonePolicyZion ACE_TIME_PROGMEM = {
5336  kZoneRulesZion /*rules*/,
5337  25 /*numRules*/,
5338 };
5339 
5340 
5341 
5342 }
5343 }
Macros and definitions that provide a consistency layer among the various Arduino boards for compatib...