AceTime  2.3.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 2023c
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/2023c
27 //
28 // Supported Zones: 448 (228 zones, 220 links)
29 // Unsupported Zones: 148 (122 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: 448
43 // Eras: 240
44 // Policies: 65
45 // Rules: 367
46 //
47 // Memory (8-bits):
48 // Context: 16
49 // Rules: 3303
50 // Policies: 195
51 // Eras: 2640
52 // Zones: 2964
53 // Links: 2860
54 // Registry: 896
55 // Formats: 467
56 // Letters: 29
57 // Fragments: 116
58 // Names: 4162 (original: 6534)
59 // TOTAL: 17648
60 //
61 // Memory (32-bits):
62 // Context: 24
63 // Rules: 4404
64 // Policies: 520
65 // Eras: 3840
66 // Zones: 5472
67 // Links: 5280
68 // Registry: 1792
69 // Formats: 467
70 // Letters: 41
71 // Fragments: 138
72 // Names: 4162 (original: 6534)
73 // TOTAL: 26140
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: 65
85 // Rules: 367
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: C-Eur
1134 // Rules: 4
1135 //---------------------------------------------------------------------------
1136 
1137 static const basic::ZoneRule kZoneRulesC_Eur[] ACE_TIME_PROGMEM = {
1138  // Anchor: Rule C-Eur 1979 1995 - Sep lastSun 2:00s 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  // Rule C-Eur 1979 1995 - Sep lastSun 2:00s 0 -
1151  {
1152  -121 /*fromYearTiny (1979)*/,
1153  -105 /*toYearTiny (1995)*/,
1154  9 /*inMonth*/,
1155  7 /*onDayOfWeek*/,
1156  0 /*onDayOfMonth*/,
1157  8 /*atTimeCode*/,
1158  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1159  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1160  0 /*letterIndex ("")*/,
1161  },
1162  // Rule C-Eur 1981 max - Mar lastSun 2:00s 1:00 S
1163  {
1164  -119 /*fromYearTiny (1981)*/,
1165  126 /*toYearTiny (32766)*/,
1166  3 /*inMonth*/,
1167  7 /*onDayOfWeek*/,
1168  0 /*onDayOfMonth*/,
1169  8 /*atTimeCode*/,
1170  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1171  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1172  4 /*letterIndex ("S")*/,
1173  },
1174  // Rule C-Eur 1996 max - Oct lastSun 2:00s 0 -
1175  {
1176  -104 /*fromYearTiny (1996)*/,
1177  126 /*toYearTiny (32766)*/,
1178  10 /*inMonth*/,
1179  7 /*onDayOfWeek*/,
1180  0 /*onDayOfMonth*/,
1181  8 /*atTimeCode*/,
1182  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1183  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1184  0 /*letterIndex ("")*/,
1185  },
1186 
1187 };
1188 
1189 const basic::ZonePolicy kZonePolicyC_Eur ACE_TIME_PROGMEM = {
1190  kZoneRulesC_Eur /*rules*/,
1191  4 /*numRules*/,
1192 };
1193 
1194 //---------------------------------------------------------------------------
1195 // Policy name: CO
1196 // Rules: 1
1197 //---------------------------------------------------------------------------
1198 
1199 static const basic::ZoneRule kZoneRulesCO[] ACE_TIME_PROGMEM = {
1200  // Anchor: Rule CO 1993 only - Feb 6 24:00 0 -
1201  {
1202  -127 /*fromYearTiny (-32767)*/,
1203  -127 /*toYearTiny (-32767)*/,
1204  1 /*inMonth*/,
1205  0 /*onDayOfWeek*/,
1206  1 /*onDayOfMonth*/,
1207  0 /*atTimeCode*/,
1208  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1209  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1210  0 /*letterIndex ("")*/,
1211  },
1212 
1213 };
1214 
1215 const basic::ZonePolicy kZonePolicyCO ACE_TIME_PROGMEM = {
1216  kZoneRulesCO /*rules*/,
1217  1 /*numRules*/,
1218 };
1219 
1220 //---------------------------------------------------------------------------
1221 // Policy name: CR
1222 // Rules: 1
1223 //---------------------------------------------------------------------------
1224 
1225 static const basic::ZoneRule kZoneRulesCR[] ACE_TIME_PROGMEM = {
1226  // Anchor: Rule CR 1992 only - Mar 15 0:00 0 S
1227  {
1228  -127 /*fromYearTiny (-32767)*/,
1229  -127 /*toYearTiny (-32767)*/,
1230  1 /*inMonth*/,
1231  0 /*onDayOfWeek*/,
1232  1 /*onDayOfMonth*/,
1233  0 /*atTimeCode*/,
1234  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1235  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1236  4 /*letterIndex ("S")*/,
1237  },
1238 
1239 };
1240 
1241 const basic::ZonePolicy kZonePolicyCR ACE_TIME_PROGMEM = {
1242  kZoneRulesCR /*rules*/,
1243  1 /*numRules*/,
1244 };
1245 
1246 //---------------------------------------------------------------------------
1247 // Policy name: Canada
1248 // Rules: 6
1249 //---------------------------------------------------------------------------
1250 
1251 static const basic::ZoneRule kZoneRulesCanada[] ACE_TIME_PROGMEM = {
1252  // Anchor: Rule Canada 1974 2006 - Oct lastSun 2:00 0 S
1253  {
1254  -127 /*fromYearTiny (-32767)*/,
1255  -127 /*toYearTiny (-32767)*/,
1256  1 /*inMonth*/,
1257  0 /*onDayOfWeek*/,
1258  1 /*onDayOfMonth*/,
1259  0 /*atTimeCode*/,
1260  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1261  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1262  4 /*letterIndex ("S")*/,
1263  },
1264  // Rule Canada 1974 1986 - Apr lastSun 2:00 1:00 D
1265  {
1266  -126 /*fromYearTiny (1974)*/,
1267  -114 /*toYearTiny (1986)*/,
1268  4 /*inMonth*/,
1269  7 /*onDayOfWeek*/,
1270  0 /*onDayOfMonth*/,
1271  8 /*atTimeCode*/,
1272  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1273  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1274  3 /*letterIndex ("D")*/,
1275  },
1276  // Rule Canada 1974 2006 - Oct lastSun 2:00 0 S
1277  {
1278  -126 /*fromYearTiny (1974)*/,
1279  -94 /*toYearTiny (2006)*/,
1280  10 /*inMonth*/,
1281  7 /*onDayOfWeek*/,
1282  0 /*onDayOfMonth*/,
1283  8 /*atTimeCode*/,
1284  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1285  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1286  4 /*letterIndex ("S")*/,
1287  },
1288  // Rule Canada 1987 2006 - Apr Sun>=1 2:00 1:00 D
1289  {
1290  -113 /*fromYearTiny (1987)*/,
1291  -94 /*toYearTiny (2006)*/,
1292  4 /*inMonth*/,
1293  7 /*onDayOfWeek*/,
1294  1 /*onDayOfMonth*/,
1295  8 /*atTimeCode*/,
1296  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1297  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1298  3 /*letterIndex ("D")*/,
1299  },
1300  // Rule Canada 2007 max - Mar Sun>=8 2:00 1:00 D
1301  {
1302  -93 /*fromYearTiny (2007)*/,
1303  126 /*toYearTiny (32766)*/,
1304  3 /*inMonth*/,
1305  7 /*onDayOfWeek*/,
1306  8 /*onDayOfMonth*/,
1307  8 /*atTimeCode*/,
1308  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1309  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1310  3 /*letterIndex ("D")*/,
1311  },
1312  // Rule Canada 2007 max - Nov Sun>=1 2:00 0 S
1313  {
1314  -93 /*fromYearTiny (2007)*/,
1315  126 /*toYearTiny (32766)*/,
1316  11 /*inMonth*/,
1317  7 /*onDayOfWeek*/,
1318  1 /*onDayOfMonth*/,
1319  8 /*atTimeCode*/,
1320  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1321  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1322  4 /*letterIndex ("S")*/,
1323  },
1324 
1325 };
1326 
1327 const basic::ZonePolicy kZonePolicyCanada ACE_TIME_PROGMEM = {
1328  kZoneRulesCanada /*rules*/,
1329  6 /*numRules*/,
1330 };
1331 
1332 //---------------------------------------------------------------------------
1333 // Policy name: Chatham
1334 // Rules: 6
1335 //---------------------------------------------------------------------------
1336 
1337 static const basic::ZoneRule kZoneRulesChatham[] ACE_TIME_PROGMEM = {
1338  // Anchor: Rule Chatham 1990 2007 - Mar Sun>=15 2:45s 0 -
1339  {
1340  -127 /*fromYearTiny (-32767)*/,
1341  -127 /*toYearTiny (-32767)*/,
1342  1 /*inMonth*/,
1343  0 /*onDayOfWeek*/,
1344  1 /*onDayOfMonth*/,
1345  0 /*atTimeCode*/,
1346  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1347  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1348  0 /*letterIndex ("")*/,
1349  },
1350  // Rule Chatham 1989 only - Oct Sun>=8 2:45s 1:00 -
1351  {
1352  -111 /*fromYearTiny (1989)*/,
1353  -111 /*toYearTiny (1989)*/,
1354  10 /*inMonth*/,
1355  7 /*onDayOfWeek*/,
1356  8 /*onDayOfMonth*/,
1357  11 /*atTimeCode*/,
1358  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1359  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1360  0 /*letterIndex ("")*/,
1361  },
1362  // Rule Chatham 1990 2006 - Oct Sun>=1 2:45s 1:00 -
1363  {
1364  -110 /*fromYearTiny (1990)*/,
1365  -94 /*toYearTiny (2006)*/,
1366  10 /*inMonth*/,
1367  7 /*onDayOfWeek*/,
1368  1 /*onDayOfMonth*/,
1369  11 /*atTimeCode*/,
1370  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1371  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1372  0 /*letterIndex ("")*/,
1373  },
1374  // Rule Chatham 1990 2007 - Mar Sun>=15 2:45s 0 -
1375  {
1376  -110 /*fromYearTiny (1990)*/,
1377  -93 /*toYearTiny (2007)*/,
1378  3 /*inMonth*/,
1379  7 /*onDayOfWeek*/,
1380  15 /*onDayOfMonth*/,
1381  11 /*atTimeCode*/,
1382  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1383  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1384  0 /*letterIndex ("")*/,
1385  },
1386  // Rule Chatham 2007 max - Sep lastSun 2:45s 1:00 -
1387  {
1388  -93 /*fromYearTiny (2007)*/,
1389  126 /*toYearTiny (32766)*/,
1390  9 /*inMonth*/,
1391  7 /*onDayOfWeek*/,
1392  0 /*onDayOfMonth*/,
1393  11 /*atTimeCode*/,
1394  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1395  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1396  0 /*letterIndex ("")*/,
1397  },
1398  // Rule Chatham 2008 max - Apr Sun>=1 2:45s 0 -
1399  {
1400  -92 /*fromYearTiny (2008)*/,
1401  126 /*toYearTiny (32766)*/,
1402  4 /*inMonth*/,
1403  7 /*onDayOfWeek*/,
1404  1 /*onDayOfMonth*/,
1405  11 /*atTimeCode*/,
1406  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1407  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1408  0 /*letterIndex ("")*/,
1409  },
1410 
1411 };
1412 
1413 const basic::ZonePolicy kZonePolicyChatham ACE_TIME_PROGMEM = {
1414  kZoneRulesChatham /*rules*/,
1415  6 /*numRules*/,
1416 };
1417 
1418 //---------------------------------------------------------------------------
1419 // Policy name: Chile
1420 // Rules: 18
1421 //---------------------------------------------------------------------------
1422 
1423 static const basic::ZoneRule kZoneRulesChile[] ACE_TIME_PROGMEM = {
1424  // Anchor: Rule Chile 1999 only - Apr 4 3:00u 0 -
1425  {
1426  -127 /*fromYearTiny (-32767)*/,
1427  -127 /*toYearTiny (-32767)*/,
1428  1 /*inMonth*/,
1429  0 /*onDayOfWeek*/,
1430  1 /*onDayOfMonth*/,
1431  0 /*atTimeCode*/,
1432  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1433  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1434  0 /*letterIndex ("")*/,
1435  },
1436  // Rule Chile 1998 only - Sep 27 4:00u 1:00 -
1437  {
1438  -102 /*fromYearTiny (1998)*/,
1439  -102 /*toYearTiny (1998)*/,
1440  9 /*inMonth*/,
1441  0 /*onDayOfWeek*/,
1442  27 /*onDayOfMonth*/,
1443  16 /*atTimeCode*/,
1444  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1445  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1446  0 /*letterIndex ("")*/,
1447  },
1448  // Rule Chile 1999 only - Apr 4 3:00u 0 -
1449  {
1450  -101 /*fromYearTiny (1999)*/,
1451  -101 /*toYearTiny (1999)*/,
1452  4 /*inMonth*/,
1453  0 /*onDayOfWeek*/,
1454  4 /*onDayOfMonth*/,
1455  12 /*atTimeCode*/,
1456  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1457  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1458  0 /*letterIndex ("")*/,
1459  },
1460  // Rule Chile 1999 2010 - Oct Sun>=9 4:00u 1:00 -
1461  {
1462  -101 /*fromYearTiny (1999)*/,
1463  -90 /*toYearTiny (2010)*/,
1464  10 /*inMonth*/,
1465  7 /*onDayOfWeek*/,
1466  9 /*onDayOfMonth*/,
1467  16 /*atTimeCode*/,
1468  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1469  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1470  0 /*letterIndex ("")*/,
1471  },
1472  // Rule Chile 2000 2007 - Mar Sun>=9 3:00u 0 -
1473  {
1474  -100 /*fromYearTiny (2000)*/,
1475  -93 /*toYearTiny (2007)*/,
1476  3 /*inMonth*/,
1477  7 /*onDayOfWeek*/,
1478  9 /*onDayOfMonth*/,
1479  12 /*atTimeCode*/,
1480  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1481  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1482  0 /*letterIndex ("")*/,
1483  },
1484  // Rule Chile 2008 only - Mar 30 3:00u 0 -
1485  {
1486  -92 /*fromYearTiny (2008)*/,
1487  -92 /*toYearTiny (2008)*/,
1488  3 /*inMonth*/,
1489  0 /*onDayOfWeek*/,
1490  30 /*onDayOfMonth*/,
1491  12 /*atTimeCode*/,
1492  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1493  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1494  0 /*letterIndex ("")*/,
1495  },
1496  // Rule Chile 2009 only - Mar Sun>=9 3:00u 0 -
1497  {
1498  -91 /*fromYearTiny (2009)*/,
1499  -91 /*toYearTiny (2009)*/,
1500  3 /*inMonth*/,
1501  7 /*onDayOfWeek*/,
1502  9 /*onDayOfMonth*/,
1503  12 /*atTimeCode*/,
1504  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1505  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1506  0 /*letterIndex ("")*/,
1507  },
1508  // Rule Chile 2010 only - Apr Sun>=1 3:00u 0 -
1509  {
1510  -90 /*fromYearTiny (2010)*/,
1511  -90 /*toYearTiny (2010)*/,
1512  4 /*inMonth*/,
1513  7 /*onDayOfWeek*/,
1514  1 /*onDayOfMonth*/,
1515  12 /*atTimeCode*/,
1516  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1517  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1518  0 /*letterIndex ("")*/,
1519  },
1520  // Rule Chile 2011 only - May Sun>=2 3:00u 0 -
1521  {
1522  -89 /*fromYearTiny (2011)*/,
1523  -89 /*toYearTiny (2011)*/,
1524  5 /*inMonth*/,
1525  7 /*onDayOfWeek*/,
1526  2 /*onDayOfMonth*/,
1527  12 /*atTimeCode*/,
1528  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1529  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1530  0 /*letterIndex ("")*/,
1531  },
1532  // Rule Chile 2011 only - Aug Sun>=16 4:00u 1:00 -
1533  {
1534  -89 /*fromYearTiny (2011)*/,
1535  -89 /*toYearTiny (2011)*/,
1536  8 /*inMonth*/,
1537  7 /*onDayOfWeek*/,
1538  16 /*onDayOfMonth*/,
1539  16 /*atTimeCode*/,
1540  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1541  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1542  0 /*letterIndex ("")*/,
1543  },
1544  // Rule Chile 2012 2014 - Apr Sun>=23 3:00u 0 -
1545  {
1546  -88 /*fromYearTiny (2012)*/,
1547  -86 /*toYearTiny (2014)*/,
1548  4 /*inMonth*/,
1549  7 /*onDayOfWeek*/,
1550  23 /*onDayOfMonth*/,
1551  12 /*atTimeCode*/,
1552  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1553  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1554  0 /*letterIndex ("")*/,
1555  },
1556  // Rule Chile 2012 2014 - Sep Sun>=2 4:00u 1:00 -
1557  {
1558  -88 /*fromYearTiny (2012)*/,
1559  -86 /*toYearTiny (2014)*/,
1560  9 /*inMonth*/,
1561  7 /*onDayOfWeek*/,
1562  2 /*onDayOfMonth*/,
1563  16 /*atTimeCode*/,
1564  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1565  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1566  0 /*letterIndex ("")*/,
1567  },
1568  // Rule Chile 2016 2018 - May Sun>=9 3:00u 0 -
1569  {
1570  -84 /*fromYearTiny (2016)*/,
1571  -82 /*toYearTiny (2018)*/,
1572  5 /*inMonth*/,
1573  7 /*onDayOfWeek*/,
1574  9 /*onDayOfMonth*/,
1575  12 /*atTimeCode*/,
1576  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1577  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1578  0 /*letterIndex ("")*/,
1579  },
1580  // Rule Chile 2016 2018 - Aug Sun>=9 4:00u 1:00 -
1581  {
1582  -84 /*fromYearTiny (2016)*/,
1583  -82 /*toYearTiny (2018)*/,
1584  8 /*inMonth*/,
1585  7 /*onDayOfWeek*/,
1586  9 /*onDayOfMonth*/,
1587  16 /*atTimeCode*/,
1588  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1589  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1590  0 /*letterIndex ("")*/,
1591  },
1592  // Rule Chile 2019 max - Apr Sun>=2 3:00u 0 -
1593  {
1594  -81 /*fromYearTiny (2019)*/,
1595  126 /*toYearTiny (32766)*/,
1596  4 /*inMonth*/,
1597  7 /*onDayOfWeek*/,
1598  2 /*onDayOfMonth*/,
1599  12 /*atTimeCode*/,
1600  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1601  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1602  0 /*letterIndex ("")*/,
1603  },
1604  // Rule Chile 2019 2021 - Sep Sun>=2 4:00u 1:00 -
1605  {
1606  -81 /*fromYearTiny (2019)*/,
1607  -79 /*toYearTiny (2021)*/,
1608  9 /*inMonth*/,
1609  7 /*onDayOfWeek*/,
1610  2 /*onDayOfMonth*/,
1611  16 /*atTimeCode*/,
1612  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1613  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1614  0 /*letterIndex ("")*/,
1615  },
1616  // Rule Chile 2022 only - Sep Sun>=9 4:00u 1:00 -
1617  {
1618  -78 /*fromYearTiny (2022)*/,
1619  -78 /*toYearTiny (2022)*/,
1620  9 /*inMonth*/,
1621  7 /*onDayOfWeek*/,
1622  9 /*onDayOfMonth*/,
1623  16 /*atTimeCode*/,
1624  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1625  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1626  0 /*letterIndex ("")*/,
1627  },
1628  // Rule Chile 2023 max - Sep Sun>=2 4:00u 1:00 -
1629  {
1630  -77 /*fromYearTiny (2023)*/,
1631  126 /*toYearTiny (32766)*/,
1632  9 /*inMonth*/,
1633  7 /*onDayOfWeek*/,
1634  2 /*onDayOfMonth*/,
1635  16 /*atTimeCode*/,
1636  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1637  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1638  0 /*letterIndex ("")*/,
1639  },
1640 
1641 };
1642 
1643 const basic::ZonePolicy kZonePolicyChile ACE_TIME_PROGMEM = {
1644  kZoneRulesChile /*rules*/,
1645  18 /*numRules*/,
1646 };
1647 
1648 //---------------------------------------------------------------------------
1649 // Policy name: Cook
1650 // Rules: 1
1651 //---------------------------------------------------------------------------
1652 
1653 static const basic::ZoneRule kZoneRulesCook[] ACE_TIME_PROGMEM = {
1654  // Anchor: Rule Cook 1979 1991 - Mar Sun>=1 0:00 0 -
1655  {
1656  -127 /*fromYearTiny (-32767)*/,
1657  -127 /*toYearTiny (-32767)*/,
1658  1 /*inMonth*/,
1659  0 /*onDayOfWeek*/,
1660  1 /*onDayOfMonth*/,
1661  0 /*atTimeCode*/,
1662  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1663  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1664  0 /*letterIndex ("")*/,
1665  },
1666 
1667 };
1668 
1669 const basic::ZonePolicy kZonePolicyCook ACE_TIME_PROGMEM = {
1670  kZoneRulesCook /*rules*/,
1671  1 /*numRules*/,
1672 };
1673 
1674 //---------------------------------------------------------------------------
1675 // Policy name: Cuba
1676 // Rules: 15
1677 //---------------------------------------------------------------------------
1678 
1679 static const basic::ZoneRule kZoneRulesCuba[] ACE_TIME_PROGMEM = {
1680  // Anchor: Rule Cuba 1997 only - Oct 12 0:00s 0 S
1681  {
1682  -127 /*fromYearTiny (-32767)*/,
1683  -127 /*toYearTiny (-32767)*/,
1684  1 /*inMonth*/,
1685  0 /*onDayOfWeek*/,
1686  1 /*onDayOfMonth*/,
1687  0 /*atTimeCode*/,
1688  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1689  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1690  4 /*letterIndex ("S")*/,
1691  },
1692  // Rule Cuba 1997 only - Oct 12 0:00s 0 S
1693  {
1694  -103 /*fromYearTiny (1997)*/,
1695  -103 /*toYearTiny (1997)*/,
1696  10 /*inMonth*/,
1697  0 /*onDayOfWeek*/,
1698  12 /*onDayOfMonth*/,
1699  0 /*atTimeCode*/,
1700  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1701  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1702  4 /*letterIndex ("S")*/,
1703  },
1704  // Rule Cuba 1998 1999 - Mar lastSun 0:00s 1:00 D
1705  {
1706  -102 /*fromYearTiny (1998)*/,
1707  -101 /*toYearTiny (1999)*/,
1708  3 /*inMonth*/,
1709  7 /*onDayOfWeek*/,
1710  0 /*onDayOfMonth*/,
1711  0 /*atTimeCode*/,
1712  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1713  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1714  3 /*letterIndex ("D")*/,
1715  },
1716  // Rule Cuba 1998 2003 - Oct lastSun 0:00s 0 S
1717  {
1718  -102 /*fromYearTiny (1998)*/,
1719  -97 /*toYearTiny (2003)*/,
1720  10 /*inMonth*/,
1721  7 /*onDayOfWeek*/,
1722  0 /*onDayOfMonth*/,
1723  0 /*atTimeCode*/,
1724  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1725  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1726  4 /*letterIndex ("S")*/,
1727  },
1728  // Rule Cuba 2000 2003 - Apr Sun>=1 0:00s 1:00 D
1729  {
1730  -100 /*fromYearTiny (2000)*/,
1731  -97 /*toYearTiny (2003)*/,
1732  4 /*inMonth*/,
1733  7 /*onDayOfWeek*/,
1734  1 /*onDayOfMonth*/,
1735  0 /*atTimeCode*/,
1736  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1737  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1738  3 /*letterIndex ("D")*/,
1739  },
1740  // Rule Cuba 2004 only - Mar lastSun 0:00s 1:00 D
1741  {
1742  -96 /*fromYearTiny (2004)*/,
1743  -96 /*toYearTiny (2004)*/,
1744  3 /*inMonth*/,
1745  7 /*onDayOfWeek*/,
1746  0 /*onDayOfMonth*/,
1747  0 /*atTimeCode*/,
1748  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1749  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1750  3 /*letterIndex ("D")*/,
1751  },
1752  // Rule Cuba 2006 2010 - Oct lastSun 0:00s 0 S
1753  {
1754  -94 /*fromYearTiny (2006)*/,
1755  -90 /*toYearTiny (2010)*/,
1756  10 /*inMonth*/,
1757  7 /*onDayOfWeek*/,
1758  0 /*onDayOfMonth*/,
1759  0 /*atTimeCode*/,
1760  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1761  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1762  4 /*letterIndex ("S")*/,
1763  },
1764  // Rule Cuba 2007 only - Mar Sun>=8 0:00s 1:00 D
1765  {
1766  -93 /*fromYearTiny (2007)*/,
1767  -93 /*toYearTiny (2007)*/,
1768  3 /*inMonth*/,
1769  7 /*onDayOfWeek*/,
1770  8 /*onDayOfMonth*/,
1771  0 /*atTimeCode*/,
1772  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1773  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1774  3 /*letterIndex ("D")*/,
1775  },
1776  // Rule Cuba 2008 only - Mar Sun>=15 0:00s 1:00 D
1777  {
1778  -92 /*fromYearTiny (2008)*/,
1779  -92 /*toYearTiny (2008)*/,
1780  3 /*inMonth*/,
1781  7 /*onDayOfWeek*/,
1782  15 /*onDayOfMonth*/,
1783  0 /*atTimeCode*/,
1784  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1785  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1786  3 /*letterIndex ("D")*/,
1787  },
1788  // Rule Cuba 2009 2010 - Mar Sun>=8 0:00s 1:00 D
1789  {
1790  -91 /*fromYearTiny (2009)*/,
1791  -90 /*toYearTiny (2010)*/,
1792  3 /*inMonth*/,
1793  7 /*onDayOfWeek*/,
1794  8 /*onDayOfMonth*/,
1795  0 /*atTimeCode*/,
1796  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1797  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1798  3 /*letterIndex ("D")*/,
1799  },
1800  // Rule Cuba 2011 only - Mar Sun>=15 0:00s 1:00 D
1801  {
1802  -89 /*fromYearTiny (2011)*/,
1803  -89 /*toYearTiny (2011)*/,
1804  3 /*inMonth*/,
1805  7 /*onDayOfWeek*/,
1806  15 /*onDayOfMonth*/,
1807  0 /*atTimeCode*/,
1808  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1809  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1810  3 /*letterIndex ("D")*/,
1811  },
1812  // Rule Cuba 2011 only - Nov 13 0:00s 0 S
1813  {
1814  -89 /*fromYearTiny (2011)*/,
1815  -89 /*toYearTiny (2011)*/,
1816  11 /*inMonth*/,
1817  0 /*onDayOfWeek*/,
1818  13 /*onDayOfMonth*/,
1819  0 /*atTimeCode*/,
1820  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1821  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1822  4 /*letterIndex ("S")*/,
1823  },
1824  // Rule Cuba 2012 only - Apr 1 0:00s 1:00 D
1825  {
1826  -88 /*fromYearTiny (2012)*/,
1827  -88 /*toYearTiny (2012)*/,
1828  4 /*inMonth*/,
1829  0 /*onDayOfWeek*/,
1830  1 /*onDayOfMonth*/,
1831  0 /*atTimeCode*/,
1832  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1833  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1834  3 /*letterIndex ("D")*/,
1835  },
1836  // Rule Cuba 2012 max - Nov Sun>=1 0:00s 0 S
1837  {
1838  -88 /*fromYearTiny (2012)*/,
1839  126 /*toYearTiny (32766)*/,
1840  11 /*inMonth*/,
1841  7 /*onDayOfWeek*/,
1842  1 /*onDayOfMonth*/,
1843  0 /*atTimeCode*/,
1844  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1845  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1846  4 /*letterIndex ("S")*/,
1847  },
1848  // Rule Cuba 2013 max - Mar Sun>=8 0:00s 1:00 D
1849  {
1850  -87 /*fromYearTiny (2013)*/,
1851  126 /*toYearTiny (32766)*/,
1852  3 /*inMonth*/,
1853  7 /*onDayOfWeek*/,
1854  8 /*onDayOfMonth*/,
1855  0 /*atTimeCode*/,
1856  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1857  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1858  3 /*letterIndex ("D")*/,
1859  },
1860 
1861 };
1862 
1863 const basic::ZonePolicy kZonePolicyCuba ACE_TIME_PROGMEM = {
1864  kZoneRulesCuba /*rules*/,
1865  15 /*numRules*/,
1866 };
1867 
1868 //---------------------------------------------------------------------------
1869 // Policy name: Dhaka
1870 // Rules: 3
1871 //---------------------------------------------------------------------------
1872 
1873 static const basic::ZoneRule kZoneRulesDhaka[] ACE_TIME_PROGMEM = {
1874  // Anchor: Rule Dhaka 2009 only - Dec 31 24:00 0 -
1875  {
1876  -127 /*fromYearTiny (-32767)*/,
1877  -127 /*toYearTiny (-32767)*/,
1878  1 /*inMonth*/,
1879  0 /*onDayOfWeek*/,
1880  1 /*onDayOfMonth*/,
1881  0 /*atTimeCode*/,
1882  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1883  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1884  0 /*letterIndex ("")*/,
1885  },
1886  // Rule Dhaka 2009 only - Jun 19 23:00 1:00 -
1887  {
1888  -91 /*fromYearTiny (2009)*/,
1889  -91 /*toYearTiny (2009)*/,
1890  6 /*inMonth*/,
1891  0 /*onDayOfWeek*/,
1892  19 /*onDayOfMonth*/,
1893  92 /*atTimeCode*/,
1894  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1895  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1896  0 /*letterIndex ("")*/,
1897  },
1898  // Rule Dhaka 2009 only - Dec 31 24:00 0 -
1899  {
1900  -91 /*fromYearTiny (2009)*/,
1901  -91 /*toYearTiny (2009)*/,
1902  12 /*inMonth*/,
1903  0 /*onDayOfWeek*/,
1904  31 /*onDayOfMonth*/,
1905  96 /*atTimeCode*/,
1906  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1907  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1908  0 /*letterIndex ("")*/,
1909  },
1910 
1911 };
1912 
1913 const basic::ZonePolicy kZonePolicyDhaka ACE_TIME_PROGMEM = {
1914  kZoneRulesDhaka /*rules*/,
1915  3 /*numRules*/,
1916 };
1917 
1918 //---------------------------------------------------------------------------
1919 // Policy name: EU
1920 // Rules: 4
1921 //---------------------------------------------------------------------------
1922 
1923 static const basic::ZoneRule kZoneRulesEU[] ACE_TIME_PROGMEM = {
1924  // Anchor: Rule EU 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 EU 1979 1995 - Sep lastSun 1:00u 0 -
1937  {
1938  -121 /*fromYearTiny (1979)*/,
1939  -105 /*toYearTiny (1995)*/,
1940  9 /*inMonth*/,
1941  7 /*onDayOfWeek*/,
1942  0 /*onDayOfMonth*/,
1943  4 /*atTimeCode*/,
1944  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1945  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1946  0 /*letterIndex ("")*/,
1947  },
1948  // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S
1949  {
1950  -119 /*fromYearTiny (1981)*/,
1951  126 /*toYearTiny (32766)*/,
1952  3 /*inMonth*/,
1953  7 /*onDayOfWeek*/,
1954  0 /*onDayOfMonth*/,
1955  4 /*atTimeCode*/,
1956  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1957  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1958  4 /*letterIndex ("S")*/,
1959  },
1960  // Rule EU 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 kZonePolicyEU ACE_TIME_PROGMEM = {
1976  kZoneRulesEU /*rules*/,
1977  4 /*numRules*/,
1978 };
1979 
1980 //---------------------------------------------------------------------------
1981 // Policy name: EUAsia
1982 // Rules: 4
1983 //---------------------------------------------------------------------------
1984 
1985 static const basic::ZoneRule kZoneRulesEUAsia[] ACE_TIME_PROGMEM = {
1986  // Anchor: Rule EUAsia 1979 1995 - Sep lastSun 1:00u 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  // Rule EUAsia 1981 max - Mar lastSun 1:00u 1:00 S
1999  {
2000  -119 /*fromYearTiny (1981)*/,
2001  126 /*toYearTiny (32766)*/,
2002  3 /*inMonth*/,
2003  7 /*onDayOfWeek*/,
2004  0 /*onDayOfMonth*/,
2005  4 /*atTimeCode*/,
2006  32 /*atTimeModifier (kSuffixU + minute=0)*/,
2007  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2008  4 /*letterIndex ("S")*/,
2009  },
2010  // Rule EUAsia 1979 1995 - Sep lastSun 1:00u 0 -
2011  {
2012  -121 /*fromYearTiny (1979)*/,
2013  -105 /*toYearTiny (1995)*/,
2014  9 /*inMonth*/,
2015  7 /*onDayOfWeek*/,
2016  0 /*onDayOfMonth*/,
2017  4 /*atTimeCode*/,
2018  32 /*atTimeModifier (kSuffixU + minute=0)*/,
2019  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2020  0 /*letterIndex ("")*/,
2021  },
2022  // Rule EUAsia 1996 max - Oct lastSun 1:00u 0 -
2023  {
2024  -104 /*fromYearTiny (1996)*/,
2025  126 /*toYearTiny (32766)*/,
2026  10 /*inMonth*/,
2027  7 /*onDayOfWeek*/,
2028  0 /*onDayOfMonth*/,
2029  4 /*atTimeCode*/,
2030  32 /*atTimeModifier (kSuffixU + minute=0)*/,
2031  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2032  0 /*letterIndex ("")*/,
2033  },
2034 
2035 };
2036 
2037 const basic::ZonePolicy kZonePolicyEUAsia ACE_TIME_PROGMEM = {
2038  kZoneRulesEUAsia /*rules*/,
2039  4 /*numRules*/,
2040 };
2041 
2042 //---------------------------------------------------------------------------
2043 // Policy name: Ecuador
2044 // Rules: 1
2045 //---------------------------------------------------------------------------
2046 
2047 static const basic::ZoneRule kZoneRulesEcuador[] ACE_TIME_PROGMEM = {
2048  // Anchor: Rule Ecuador 1993 only - Feb 5 0:00 0 -
2049  {
2050  -127 /*fromYearTiny (-32767)*/,
2051  -127 /*toYearTiny (-32767)*/,
2052  1 /*inMonth*/,
2053  0 /*onDayOfWeek*/,
2054  1 /*onDayOfMonth*/,
2055  0 /*atTimeCode*/,
2056  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2057  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2058  0 /*letterIndex ("")*/,
2059  },
2060 
2061 };
2062 
2063 const basic::ZonePolicy kZonePolicyEcuador ACE_TIME_PROGMEM = {
2064  kZoneRulesEcuador /*rules*/,
2065  1 /*numRules*/,
2066 };
2067 
2068 //---------------------------------------------------------------------------
2069 // Policy name: Eire
2070 // Rules: 4
2071 //---------------------------------------------------------------------------
2072 
2073 static const basic::ZoneRule kZoneRulesEire[] ACE_TIME_PROGMEM = {
2074  // Anchor: Rule Eire 1981 max - Mar lastSun 1:00u 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 Eire 1981 max - Mar lastSun 1:00u 0 -
2087  {
2088  -119 /*fromYearTiny (1981)*/,
2089  126 /*toYearTiny (32766)*/,
2090  3 /*inMonth*/,
2091  7 /*onDayOfWeek*/,
2092  0 /*onDayOfMonth*/,
2093  4 /*atTimeCode*/,
2094  32 /*atTimeModifier (kSuffixU + minute=0)*/,
2095  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2096  0 /*letterIndex ("")*/,
2097  },
2098  // Rule Eire 1990 1995 - Oct Sun>=22 1:00u -1:00 -
2099  {
2100  -110 /*fromYearTiny (1990)*/,
2101  -105 /*toYearTiny (1995)*/,
2102  10 /*inMonth*/,
2103  7 /*onDayOfWeek*/,
2104  22 /*onDayOfMonth*/,
2105  4 /*atTimeCode*/,
2106  32 /*atTimeModifier (kSuffixU + minute=0)*/,
2107  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
2108  0 /*letterIndex ("")*/,
2109  },
2110  // Rule Eire 1996 max - Oct lastSun 1:00u -1:00 -
2111  {
2112  -104 /*fromYearTiny (1996)*/,
2113  126 /*toYearTiny (32766)*/,
2114  10 /*inMonth*/,
2115  7 /*onDayOfWeek*/,
2116  0 /*onDayOfMonth*/,
2117  4 /*atTimeCode*/,
2118  32 /*atTimeModifier (kSuffixU + minute=0)*/,
2119  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
2120  0 /*letterIndex ("")*/,
2121  },
2122 
2123 };
2124 
2125 const basic::ZonePolicy kZonePolicyEire ACE_TIME_PROGMEM = {
2126  kZoneRulesEire /*rules*/,
2127  4 /*numRules*/,
2128 };
2129 
2130 //---------------------------------------------------------------------------
2131 // Policy name: Fiji
2132 // Rules: 13
2133 //---------------------------------------------------------------------------
2134 
2135 static const basic::ZoneRule kZoneRulesFiji[] ACE_TIME_PROGMEM = {
2136  // Anchor: Rule Fiji 1999 2000 - Feb lastSun 3:00 0 -
2137  {
2138  -127 /*fromYearTiny (-32767)*/,
2139  -127 /*toYearTiny (-32767)*/,
2140  1 /*inMonth*/,
2141  0 /*onDayOfWeek*/,
2142  1 /*onDayOfMonth*/,
2143  0 /*atTimeCode*/,
2144  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2145  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2146  0 /*letterIndex ("")*/,
2147  },
2148  // Rule Fiji 1998 1999 - Nov Sun>=1 2:00 1:00 -
2149  {
2150  -102 /*fromYearTiny (1998)*/,
2151  -101 /*toYearTiny (1999)*/,
2152  11 /*inMonth*/,
2153  7 /*onDayOfWeek*/,
2154  1 /*onDayOfMonth*/,
2155  8 /*atTimeCode*/,
2156  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2157  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2158  0 /*letterIndex ("")*/,
2159  },
2160  // Rule Fiji 1999 2000 - Feb lastSun 3:00 0 -
2161  {
2162  -101 /*fromYearTiny (1999)*/,
2163  -100 /*toYearTiny (2000)*/,
2164  2 /*inMonth*/,
2165  7 /*onDayOfWeek*/,
2166  0 /*onDayOfMonth*/,
2167  12 /*atTimeCode*/,
2168  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2169  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2170  0 /*letterIndex ("")*/,
2171  },
2172  // Rule Fiji 2009 only - Nov 29 2:00 1:00 -
2173  {
2174  -91 /*fromYearTiny (2009)*/,
2175  -91 /*toYearTiny (2009)*/,
2176  11 /*inMonth*/,
2177  0 /*onDayOfWeek*/,
2178  29 /*onDayOfMonth*/,
2179  8 /*atTimeCode*/,
2180  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2181  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2182  0 /*letterIndex ("")*/,
2183  },
2184  // Rule Fiji 2010 only - Mar lastSun 3:00 0 -
2185  {
2186  -90 /*fromYearTiny (2010)*/,
2187  -90 /*toYearTiny (2010)*/,
2188  3 /*inMonth*/,
2189  7 /*onDayOfWeek*/,
2190  0 /*onDayOfMonth*/,
2191  12 /*atTimeCode*/,
2192  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2193  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2194  0 /*letterIndex ("")*/,
2195  },
2196  // Rule Fiji 2010 2013 - Oct Sun>=21 2:00 1:00 -
2197  {
2198  -90 /*fromYearTiny (2010)*/,
2199  -87 /*toYearTiny (2013)*/,
2200  10 /*inMonth*/,
2201  7 /*onDayOfWeek*/,
2202  21 /*onDayOfMonth*/,
2203  8 /*atTimeCode*/,
2204  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2205  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2206  0 /*letterIndex ("")*/,
2207  },
2208  // Rule Fiji 2011 only - Mar Sun>=1 3:00 0 -
2209  {
2210  -89 /*fromYearTiny (2011)*/,
2211  -89 /*toYearTiny (2011)*/,
2212  3 /*inMonth*/,
2213  7 /*onDayOfWeek*/,
2214  1 /*onDayOfMonth*/,
2215  12 /*atTimeCode*/,
2216  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2217  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2218  0 /*letterIndex ("")*/,
2219  },
2220  // Rule Fiji 2012 2013 - Jan Sun>=18 3:00 0 -
2221  {
2222  -88 /*fromYearTiny (2012)*/,
2223  -87 /*toYearTiny (2013)*/,
2224  1 /*inMonth*/,
2225  7 /*onDayOfWeek*/,
2226  18 /*onDayOfMonth*/,
2227  12 /*atTimeCode*/,
2228  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2229  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2230  0 /*letterIndex ("")*/,
2231  },
2232  // Rule Fiji 2014 only - Jan Sun>=18 2:00 0 -
2233  {
2234  -86 /*fromYearTiny (2014)*/,
2235  -86 /*toYearTiny (2014)*/,
2236  1 /*inMonth*/,
2237  7 /*onDayOfWeek*/,
2238  18 /*onDayOfMonth*/,
2239  8 /*atTimeCode*/,
2240  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2241  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2242  0 /*letterIndex ("")*/,
2243  },
2244  // Rule Fiji 2014 2018 - Nov Sun>=1 2:00 1:00 -
2245  {
2246  -86 /*fromYearTiny (2014)*/,
2247  -82 /*toYearTiny (2018)*/,
2248  11 /*inMonth*/,
2249  7 /*onDayOfWeek*/,
2250  1 /*onDayOfMonth*/,
2251  8 /*atTimeCode*/,
2252  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2253  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2254  0 /*letterIndex ("")*/,
2255  },
2256  // Rule Fiji 2015 2021 - Jan Sun>=12 3:00 0 -
2257  {
2258  -85 /*fromYearTiny (2015)*/,
2259  -79 /*toYearTiny (2021)*/,
2260  1 /*inMonth*/,
2261  7 /*onDayOfWeek*/,
2262  12 /*onDayOfMonth*/,
2263  12 /*atTimeCode*/,
2264  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2265  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2266  0 /*letterIndex ("")*/,
2267  },
2268  // Rule Fiji 2019 only - Nov Sun>=8 2:00 1:00 -
2269  {
2270  -81 /*fromYearTiny (2019)*/,
2271  -81 /*toYearTiny (2019)*/,
2272  11 /*inMonth*/,
2273  7 /*onDayOfWeek*/,
2274  8 /*onDayOfMonth*/,
2275  8 /*atTimeCode*/,
2276  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2277  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2278  0 /*letterIndex ("")*/,
2279  },
2280  // Rule Fiji 2020 only - Dec 20 2:00 1:00 -
2281  {
2282  -80 /*fromYearTiny (2020)*/,
2283  -80 /*toYearTiny (2020)*/,
2284  12 /*inMonth*/,
2285  0 /*onDayOfWeek*/,
2286  20 /*onDayOfMonth*/,
2287  8 /*atTimeCode*/,
2288  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2289  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2290  0 /*letterIndex ("")*/,
2291  },
2292 
2293 };
2294 
2295 const basic::ZonePolicy kZonePolicyFiji ACE_TIME_PROGMEM = {
2296  kZoneRulesFiji /*rules*/,
2297  13 /*numRules*/,
2298 };
2299 
2300 //---------------------------------------------------------------------------
2301 // Policy name: Guat
2302 // Rules: 4
2303 //---------------------------------------------------------------------------
2304 
2305 static const basic::ZoneRule kZoneRulesGuat[] ACE_TIME_PROGMEM = {
2306  // Anchor: Rule Guat 1991 only - Sep 7 0:00 0 S
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  4 /*letterIndex ("S")*/,
2317  },
2318  // Rule Guat 1991 only - Sep 7 0:00 0 S
2319  {
2320  -109 /*fromYearTiny (1991)*/,
2321  -109 /*toYearTiny (1991)*/,
2322  9 /*inMonth*/,
2323  0 /*onDayOfWeek*/,
2324  7 /*onDayOfMonth*/,
2325  0 /*atTimeCode*/,
2326  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2327  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2328  4 /*letterIndex ("S")*/,
2329  },
2330  // Rule Guat 2006 only - Apr 30 0:00 1:00 D
2331  {
2332  -94 /*fromYearTiny (2006)*/,
2333  -94 /*toYearTiny (2006)*/,
2334  4 /*inMonth*/,
2335  0 /*onDayOfWeek*/,
2336  30 /*onDayOfMonth*/,
2337  0 /*atTimeCode*/,
2338  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2339  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2340  3 /*letterIndex ("D")*/,
2341  },
2342  // Rule Guat 2006 only - Oct 1 0:00 0 S
2343  {
2344  -94 /*fromYearTiny (2006)*/,
2345  -94 /*toYearTiny (2006)*/,
2346  10 /*inMonth*/,
2347  0 /*onDayOfWeek*/,
2348  1 /*onDayOfMonth*/,
2349  0 /*atTimeCode*/,
2350  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2351  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2352  4 /*letterIndex ("S")*/,
2353  },
2354 
2355 };
2356 
2357 const basic::ZonePolicy kZonePolicyGuat ACE_TIME_PROGMEM = {
2358  kZoneRulesGuat /*rules*/,
2359  4 /*numRules*/,
2360 };
2361 
2362 //---------------------------------------------------------------------------
2363 // Policy name: HK
2364 // Rules: 1
2365 //---------------------------------------------------------------------------
2366 
2367 static const basic::ZoneRule kZoneRulesHK[] ACE_TIME_PROGMEM = {
2368  // Anchor: Rule HK 1979 only - Oct 21 3:30 0 -
2369  {
2370  -127 /*fromYearTiny (-32767)*/,
2371  -127 /*toYearTiny (-32767)*/,
2372  1 /*inMonth*/,
2373  0 /*onDayOfWeek*/,
2374  1 /*onDayOfMonth*/,
2375  0 /*atTimeCode*/,
2376  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2377  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2378  0 /*letterIndex ("")*/,
2379  },
2380 
2381 };
2382 
2383 const basic::ZonePolicy kZonePolicyHK ACE_TIME_PROGMEM = {
2384  kZoneRulesHK /*rules*/,
2385  1 /*numRules*/,
2386 };
2387 
2388 //---------------------------------------------------------------------------
2389 // Policy name: Haiti
2390 // Rules: 8
2391 //---------------------------------------------------------------------------
2392 
2393 static const basic::ZoneRule kZoneRulesHaiti[] ACE_TIME_PROGMEM = {
2394  // Anchor: Rule Haiti 1988 1997 - Oct lastSun 1:00s 0 S
2395  {
2396  -127 /*fromYearTiny (-32767)*/,
2397  -127 /*toYearTiny (-32767)*/,
2398  1 /*inMonth*/,
2399  0 /*onDayOfWeek*/,
2400  1 /*onDayOfMonth*/,
2401  0 /*atTimeCode*/,
2402  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2403  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2404  4 /*letterIndex ("S")*/,
2405  },
2406  // Rule Haiti 1988 1997 - Oct lastSun 1:00s 0 S
2407  {
2408  -112 /*fromYearTiny (1988)*/,
2409  -103 /*toYearTiny (1997)*/,
2410  10 /*inMonth*/,
2411  7 /*onDayOfWeek*/,
2412  0 /*onDayOfMonth*/,
2413  4 /*atTimeCode*/,
2414  16 /*atTimeModifier (kSuffixS + minute=0)*/,
2415  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2416  4 /*letterIndex ("S")*/,
2417  },
2418  // Rule Haiti 2005 2006 - Apr Sun>=1 0:00 1:00 D
2419  {
2420  -95 /*fromYearTiny (2005)*/,
2421  -94 /*toYearTiny (2006)*/,
2422  4 /*inMonth*/,
2423  7 /*onDayOfWeek*/,
2424  1 /*onDayOfMonth*/,
2425  0 /*atTimeCode*/,
2426  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2427  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2428  3 /*letterIndex ("D")*/,
2429  },
2430  // Rule Haiti 2005 2006 - Oct lastSun 0:00 0 S
2431  {
2432  -95 /*fromYearTiny (2005)*/,
2433  -94 /*toYearTiny (2006)*/,
2434  10 /*inMonth*/,
2435  7 /*onDayOfWeek*/,
2436  0 /*onDayOfMonth*/,
2437  0 /*atTimeCode*/,
2438  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2439  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2440  4 /*letterIndex ("S")*/,
2441  },
2442  // Rule Haiti 2012 2015 - Mar Sun>=8 2:00 1:00 D
2443  {
2444  -88 /*fromYearTiny (2012)*/,
2445  -85 /*toYearTiny (2015)*/,
2446  3 /*inMonth*/,
2447  7 /*onDayOfWeek*/,
2448  8 /*onDayOfMonth*/,
2449  8 /*atTimeCode*/,
2450  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2451  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2452  3 /*letterIndex ("D")*/,
2453  },
2454  // Rule Haiti 2012 2015 - Nov Sun>=1 2:00 0 S
2455  {
2456  -88 /*fromYearTiny (2012)*/,
2457  -85 /*toYearTiny (2015)*/,
2458  11 /*inMonth*/,
2459  7 /*onDayOfWeek*/,
2460  1 /*onDayOfMonth*/,
2461  8 /*atTimeCode*/,
2462  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2463  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2464  4 /*letterIndex ("S")*/,
2465  },
2466  // Rule Haiti 2017 max - Mar Sun>=8 2:00 1:00 D
2467  {
2468  -83 /*fromYearTiny (2017)*/,
2469  126 /*toYearTiny (32766)*/,
2470  3 /*inMonth*/,
2471  7 /*onDayOfWeek*/,
2472  8 /*onDayOfMonth*/,
2473  8 /*atTimeCode*/,
2474  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2475  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2476  3 /*letterIndex ("D")*/,
2477  },
2478  // Rule Haiti 2017 max - Nov Sun>=1 2:00 0 S
2479  {
2480  -83 /*fromYearTiny (2017)*/,
2481  126 /*toYearTiny (32766)*/,
2482  11 /*inMonth*/,
2483  7 /*onDayOfWeek*/,
2484  1 /*onDayOfMonth*/,
2485  8 /*atTimeCode*/,
2486  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2487  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2488  4 /*letterIndex ("S")*/,
2489  },
2490 
2491 };
2492 
2493 const basic::ZonePolicy kZonePolicyHaiti ACE_TIME_PROGMEM = {
2494  kZoneRulesHaiti /*rules*/,
2495  8 /*numRules*/,
2496 };
2497 
2498 //---------------------------------------------------------------------------
2499 // Policy name: Holiday
2500 // Rules: 1
2501 //---------------------------------------------------------------------------
2502 
2503 static const basic::ZoneRule kZoneRulesHoliday[] ACE_TIME_PROGMEM = {
2504  // Anchor: Rule Holiday 1993 1994 - Mar Sun>=1 2:00s 0 S
2505  {
2506  -127 /*fromYearTiny (-32767)*/,
2507  -127 /*toYearTiny (-32767)*/,
2508  1 /*inMonth*/,
2509  0 /*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 kZonePolicyHoliday ACE_TIME_PROGMEM = {
2520  kZoneRulesHoliday /*rules*/,
2521  1 /*numRules*/,
2522 };
2523 
2524 //---------------------------------------------------------------------------
2525 // Policy name: Hond
2526 // Rules: 4
2527 //---------------------------------------------------------------------------
2528 
2529 static const basic::ZoneRule kZoneRulesHond[] ACE_TIME_PROGMEM = {
2530  // Anchor: Rule Hond 1987 1988 - Sep lastSun 0:00 0 S
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  4 /*letterIndex ("S")*/,
2541  },
2542  // Rule Hond 1987 1988 - Sep lastSun 0:00 0 S
2543  {
2544  -113 /*fromYearTiny (1987)*/,
2545  -112 /*toYearTiny (1988)*/,
2546  9 /*inMonth*/,
2547  7 /*onDayOfWeek*/,
2548  0 /*onDayOfMonth*/,
2549  0 /*atTimeCode*/,
2550  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2551  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2552  4 /*letterIndex ("S")*/,
2553  },
2554  // Rule Hond 2006 only - May Sun>=1 0:00 1:00 D
2555  {
2556  -94 /*fromYearTiny (2006)*/,
2557  -94 /*toYearTiny (2006)*/,
2558  5 /*inMonth*/,
2559  7 /*onDayOfWeek*/,
2560  1 /*onDayOfMonth*/,
2561  0 /*atTimeCode*/,
2562  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2563  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2564  3 /*letterIndex ("D")*/,
2565  },
2566  // Rule Hond 2006 only - Aug Mon>=1 0:00 0 S
2567  {
2568  -94 /*fromYearTiny (2006)*/,
2569  -94 /*toYearTiny (2006)*/,
2570  8 /*inMonth*/,
2571  1 /*onDayOfWeek*/,
2572  1 /*onDayOfMonth*/,
2573  0 /*atTimeCode*/,
2574  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2575  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2576  4 /*letterIndex ("S")*/,
2577  },
2578 
2579 };
2580 
2581 const basic::ZonePolicy kZonePolicyHond ACE_TIME_PROGMEM = {
2582  kZoneRulesHond /*rules*/,
2583  4 /*numRules*/,
2584 };
2585 
2586 //---------------------------------------------------------------------------
2587 // Policy name: Iran
2588 // Rules: 28
2589 //---------------------------------------------------------------------------
2590 
2591 static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = {
2592  // Anchor: Rule Iran 1996 only - Sep 20 24:00 0 -
2593  {
2594  -127 /*fromYearTiny (-32767)*/,
2595  -127 /*toYearTiny (-32767)*/,
2596  1 /*inMonth*/,
2597  0 /*onDayOfWeek*/,
2598  1 /*onDayOfMonth*/,
2599  0 /*atTimeCode*/,
2600  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2601  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2602  0 /*letterIndex ("")*/,
2603  },
2604  // Rule Iran 1996 only - Sep 20 24:00 0 -
2605  {
2606  -104 /*fromYearTiny (1996)*/,
2607  -104 /*toYearTiny (1996)*/,
2608  9 /*inMonth*/,
2609  0 /*onDayOfWeek*/,
2610  20 /*onDayOfMonth*/,
2611  96 /*atTimeCode*/,
2612  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2613  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2614  0 /*letterIndex ("")*/,
2615  },
2616  // Rule Iran 1997 1999 - Mar 21 24:00 1:00 -
2617  {
2618  -103 /*fromYearTiny (1997)*/,
2619  -101 /*toYearTiny (1999)*/,
2620  3 /*inMonth*/,
2621  0 /*onDayOfWeek*/,
2622  21 /*onDayOfMonth*/,
2623  96 /*atTimeCode*/,
2624  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2625  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2626  0 /*letterIndex ("")*/,
2627  },
2628  // Rule Iran 1997 1999 - Sep 21 24:00 0 -
2629  {
2630  -103 /*fromYearTiny (1997)*/,
2631  -101 /*toYearTiny (1999)*/,
2632  9 /*inMonth*/,
2633  0 /*onDayOfWeek*/,
2634  21 /*onDayOfMonth*/,
2635  96 /*atTimeCode*/,
2636  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2637  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2638  0 /*letterIndex ("")*/,
2639  },
2640  // Rule Iran 2000 only - Mar 20 24:00 1:00 -
2641  {
2642  -100 /*fromYearTiny (2000)*/,
2643  -100 /*toYearTiny (2000)*/,
2644  3 /*inMonth*/,
2645  0 /*onDayOfWeek*/,
2646  20 /*onDayOfMonth*/,
2647  96 /*atTimeCode*/,
2648  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2649  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2650  0 /*letterIndex ("")*/,
2651  },
2652  // Rule Iran 2000 only - Sep 20 24:00 0 -
2653  {
2654  -100 /*fromYearTiny (2000)*/,
2655  -100 /*toYearTiny (2000)*/,
2656  9 /*inMonth*/,
2657  0 /*onDayOfWeek*/,
2658  20 /*onDayOfMonth*/,
2659  96 /*atTimeCode*/,
2660  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2661  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2662  0 /*letterIndex ("")*/,
2663  },
2664  // Rule Iran 2001 2003 - Mar 21 24:00 1:00 -
2665  {
2666  -99 /*fromYearTiny (2001)*/,
2667  -97 /*toYearTiny (2003)*/,
2668  3 /*inMonth*/,
2669  0 /*onDayOfWeek*/,
2670  21 /*onDayOfMonth*/,
2671  96 /*atTimeCode*/,
2672  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2673  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2674  0 /*letterIndex ("")*/,
2675  },
2676  // Rule Iran 2001 2003 - Sep 21 24:00 0 -
2677  {
2678  -99 /*fromYearTiny (2001)*/,
2679  -97 /*toYearTiny (2003)*/,
2680  9 /*inMonth*/,
2681  0 /*onDayOfWeek*/,
2682  21 /*onDayOfMonth*/,
2683  96 /*atTimeCode*/,
2684  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2685  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2686  0 /*letterIndex ("")*/,
2687  },
2688  // Rule Iran 2004 only - Mar 20 24:00 1:00 -
2689  {
2690  -96 /*fromYearTiny (2004)*/,
2691  -96 /*toYearTiny (2004)*/,
2692  3 /*inMonth*/,
2693  0 /*onDayOfWeek*/,
2694  20 /*onDayOfMonth*/,
2695  96 /*atTimeCode*/,
2696  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2697  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2698  0 /*letterIndex ("")*/,
2699  },
2700  // Rule Iran 2004 only - Sep 20 24:00 0 -
2701  {
2702  -96 /*fromYearTiny (2004)*/,
2703  -96 /*toYearTiny (2004)*/,
2704  9 /*inMonth*/,
2705  0 /*onDayOfWeek*/,
2706  20 /*onDayOfMonth*/,
2707  96 /*atTimeCode*/,
2708  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2709  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2710  0 /*letterIndex ("")*/,
2711  },
2712  // Rule Iran 2005 only - Mar 21 24:00 1:00 -
2713  {
2714  -95 /*fromYearTiny (2005)*/,
2715  -95 /*toYearTiny (2005)*/,
2716  3 /*inMonth*/,
2717  0 /*onDayOfWeek*/,
2718  21 /*onDayOfMonth*/,
2719  96 /*atTimeCode*/,
2720  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2721  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2722  0 /*letterIndex ("")*/,
2723  },
2724  // Rule Iran 2005 only - Sep 21 24:00 0 -
2725  {
2726  -95 /*fromYearTiny (2005)*/,
2727  -95 /*toYearTiny (2005)*/,
2728  9 /*inMonth*/,
2729  0 /*onDayOfWeek*/,
2730  21 /*onDayOfMonth*/,
2731  96 /*atTimeCode*/,
2732  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2733  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2734  0 /*letterIndex ("")*/,
2735  },
2736  // Rule Iran 2008 only - Mar 20 24:00 1:00 -
2737  {
2738  -92 /*fromYearTiny (2008)*/,
2739  -92 /*toYearTiny (2008)*/,
2740  3 /*inMonth*/,
2741  0 /*onDayOfWeek*/,
2742  20 /*onDayOfMonth*/,
2743  96 /*atTimeCode*/,
2744  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2745  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2746  0 /*letterIndex ("")*/,
2747  },
2748  // Rule Iran 2008 only - Sep 20 24:00 0 -
2749  {
2750  -92 /*fromYearTiny (2008)*/,
2751  -92 /*toYearTiny (2008)*/,
2752  9 /*inMonth*/,
2753  0 /*onDayOfWeek*/,
2754  20 /*onDayOfMonth*/,
2755  96 /*atTimeCode*/,
2756  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2757  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2758  0 /*letterIndex ("")*/,
2759  },
2760  // Rule Iran 2009 2011 - Mar 21 24:00 1:00 -
2761  {
2762  -91 /*fromYearTiny (2009)*/,
2763  -89 /*toYearTiny (2011)*/,
2764  3 /*inMonth*/,
2765  0 /*onDayOfWeek*/,
2766  21 /*onDayOfMonth*/,
2767  96 /*atTimeCode*/,
2768  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2769  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2770  0 /*letterIndex ("")*/,
2771  },
2772  // Rule Iran 2009 2011 - Sep 21 24:00 0 -
2773  {
2774  -91 /*fromYearTiny (2009)*/,
2775  -89 /*toYearTiny (2011)*/,
2776  9 /*inMonth*/,
2777  0 /*onDayOfWeek*/,
2778  21 /*onDayOfMonth*/,
2779  96 /*atTimeCode*/,
2780  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2781  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2782  0 /*letterIndex ("")*/,
2783  },
2784  // Rule Iran 2012 only - Mar 20 24:00 1:00 -
2785  {
2786  -88 /*fromYearTiny (2012)*/,
2787  -88 /*toYearTiny (2012)*/,
2788  3 /*inMonth*/,
2789  0 /*onDayOfWeek*/,
2790  20 /*onDayOfMonth*/,
2791  96 /*atTimeCode*/,
2792  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2793  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2794  0 /*letterIndex ("")*/,
2795  },
2796  // Rule Iran 2012 only - Sep 20 24:00 0 -
2797  {
2798  -88 /*fromYearTiny (2012)*/,
2799  -88 /*toYearTiny (2012)*/,
2800  9 /*inMonth*/,
2801  0 /*onDayOfWeek*/,
2802  20 /*onDayOfMonth*/,
2803  96 /*atTimeCode*/,
2804  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2805  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2806  0 /*letterIndex ("")*/,
2807  },
2808  // Rule Iran 2013 2015 - Mar 21 24:00 1:00 -
2809  {
2810  -87 /*fromYearTiny (2013)*/,
2811  -85 /*toYearTiny (2015)*/,
2812  3 /*inMonth*/,
2813  0 /*onDayOfWeek*/,
2814  21 /*onDayOfMonth*/,
2815  96 /*atTimeCode*/,
2816  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2817  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2818  0 /*letterIndex ("")*/,
2819  },
2820  // Rule Iran 2013 2015 - Sep 21 24:00 0 -
2821  {
2822  -87 /*fromYearTiny (2013)*/,
2823  -85 /*toYearTiny (2015)*/,
2824  9 /*inMonth*/,
2825  0 /*onDayOfWeek*/,
2826  21 /*onDayOfMonth*/,
2827  96 /*atTimeCode*/,
2828  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2829  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2830  0 /*letterIndex ("")*/,
2831  },
2832  // Rule Iran 2016 only - Mar 20 24:00 1:00 -
2833  {
2834  -84 /*fromYearTiny (2016)*/,
2835  -84 /*toYearTiny (2016)*/,
2836  3 /*inMonth*/,
2837  0 /*onDayOfWeek*/,
2838  20 /*onDayOfMonth*/,
2839  96 /*atTimeCode*/,
2840  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2841  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2842  0 /*letterIndex ("")*/,
2843  },
2844  // Rule Iran 2016 only - Sep 20 24:00 0 -
2845  {
2846  -84 /*fromYearTiny (2016)*/,
2847  -84 /*toYearTiny (2016)*/,
2848  9 /*inMonth*/,
2849  0 /*onDayOfWeek*/,
2850  20 /*onDayOfMonth*/,
2851  96 /*atTimeCode*/,
2852  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2853  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2854  0 /*letterIndex ("")*/,
2855  },
2856  // Rule Iran 2017 2019 - Mar 21 24:00 1:00 -
2857  {
2858  -83 /*fromYearTiny (2017)*/,
2859  -81 /*toYearTiny (2019)*/,
2860  3 /*inMonth*/,
2861  0 /*onDayOfWeek*/,
2862  21 /*onDayOfMonth*/,
2863  96 /*atTimeCode*/,
2864  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2865  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2866  0 /*letterIndex ("")*/,
2867  },
2868  // Rule Iran 2017 2019 - Sep 21 24:00 0 -
2869  {
2870  -83 /*fromYearTiny (2017)*/,
2871  -81 /*toYearTiny (2019)*/,
2872  9 /*inMonth*/,
2873  0 /*onDayOfWeek*/,
2874  21 /*onDayOfMonth*/,
2875  96 /*atTimeCode*/,
2876  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2877  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2878  0 /*letterIndex ("")*/,
2879  },
2880  // Rule Iran 2020 only - Mar 20 24:00 1:00 -
2881  {
2882  -80 /*fromYearTiny (2020)*/,
2883  -80 /*toYearTiny (2020)*/,
2884  3 /*inMonth*/,
2885  0 /*onDayOfWeek*/,
2886  20 /*onDayOfMonth*/,
2887  96 /*atTimeCode*/,
2888  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2889  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2890  0 /*letterIndex ("")*/,
2891  },
2892  // Rule Iran 2020 only - Sep 20 24:00 0 -
2893  {
2894  -80 /*fromYearTiny (2020)*/,
2895  -80 /*toYearTiny (2020)*/,
2896  9 /*inMonth*/,
2897  0 /*onDayOfWeek*/,
2898  20 /*onDayOfMonth*/,
2899  96 /*atTimeCode*/,
2900  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2901  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2902  0 /*letterIndex ("")*/,
2903  },
2904  // Rule Iran 2021 2022 - Mar 21 24:00 1:00 -
2905  {
2906  -79 /*fromYearTiny (2021)*/,
2907  -78 /*toYearTiny (2022)*/,
2908  3 /*inMonth*/,
2909  0 /*onDayOfWeek*/,
2910  21 /*onDayOfMonth*/,
2911  96 /*atTimeCode*/,
2912  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2913  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2914  0 /*letterIndex ("")*/,
2915  },
2916  // Rule Iran 2021 2022 - Sep 21 24:00 0 -
2917  {
2918  -79 /*fromYearTiny (2021)*/,
2919  -78 /*toYearTiny (2022)*/,
2920  9 /*inMonth*/,
2921  0 /*onDayOfWeek*/,
2922  21 /*onDayOfMonth*/,
2923  96 /*atTimeCode*/,
2924  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2925  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2926  0 /*letterIndex ("")*/,
2927  },
2928 
2929 };
2930 
2931 const basic::ZonePolicy kZonePolicyIran ACE_TIME_PROGMEM = {
2932  kZoneRulesIran /*rules*/,
2933  28 /*numRules*/,
2934 };
2935 
2936 //---------------------------------------------------------------------------
2937 // Policy name: Iraq
2938 // Rules: 4
2939 //---------------------------------------------------------------------------
2940 
2941 static const basic::ZoneRule kZoneRulesIraq[] ACE_TIME_PROGMEM = {
2942  // Anchor: Rule Iraq 1985 1990 - Sep lastSun 1:00s 0 -
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  0 /*letterIndex ("")*/,
2953  },
2954  // Rule Iraq 1985 1990 - Sep lastSun 1:00s 0 -
2955  {
2956  -115 /*fromYearTiny (1985)*/,
2957  -110 /*toYearTiny (1990)*/,
2958  9 /*inMonth*/,
2959  7 /*onDayOfWeek*/,
2960  0 /*onDayOfMonth*/,
2961  4 /*atTimeCode*/,
2962  16 /*atTimeModifier (kSuffixS + minute=0)*/,
2963  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2964  0 /*letterIndex ("")*/,
2965  },
2966  // Rule Iraq 1991 2007 - Apr 1 3:00s 1:00 -
2967  {
2968  -109 /*fromYearTiny (1991)*/,
2969  -93 /*toYearTiny (2007)*/,
2970  4 /*inMonth*/,
2971  0 /*onDayOfWeek*/,
2972  1 /*onDayOfMonth*/,
2973  12 /*atTimeCode*/,
2974  16 /*atTimeModifier (kSuffixS + minute=0)*/,
2975  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2976  0 /*letterIndex ("")*/,
2977  },
2978  // Rule Iraq 1991 2007 - Oct 1 3:00s 0 -
2979  {
2980  -109 /*fromYearTiny (1991)*/,
2981  -93 /*toYearTiny (2007)*/,
2982  10 /*inMonth*/,
2983  0 /*onDayOfWeek*/,
2984  1 /*onDayOfMonth*/,
2985  12 /*atTimeCode*/,
2986  16 /*atTimeModifier (kSuffixS + minute=0)*/,
2987  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2988  0 /*letterIndex ("")*/,
2989  },
2990 
2991 };
2992 
2993 const basic::ZonePolicy kZonePolicyIraq ACE_TIME_PROGMEM = {
2994  kZoneRulesIraq /*rules*/,
2995  4 /*numRules*/,
2996 };
2997 
2998 //---------------------------------------------------------------------------
2999 // Policy name: Japan
3000 // Rules: 1
3001 //---------------------------------------------------------------------------
3002 
3003 static const basic::ZoneRule kZoneRulesJapan[] ACE_TIME_PROGMEM = {
3004  // Anchor: Rule Japan 1948 1951 - Sep Sat>=8 25:00 0 S
3005  {
3006  -127 /*fromYearTiny (-32767)*/,
3007  -127 /*toYearTiny (-32767)*/,
3008  1 /*inMonth*/,
3009  0 /*onDayOfWeek*/,
3010  1 /*onDayOfMonth*/,
3011  0 /*atTimeCode*/,
3012  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3013  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3014  4 /*letterIndex ("S")*/,
3015  },
3016 
3017 };
3018 
3019 const basic::ZonePolicy kZonePolicyJapan ACE_TIME_PROGMEM = {
3020  kZoneRulesJapan /*rules*/,
3021  1 /*numRules*/,
3022 };
3023 
3024 //---------------------------------------------------------------------------
3025 // Policy name: Jordan
3026 // Rules: 14
3027 //---------------------------------------------------------------------------
3028 
3029 static const basic::ZoneRule kZoneRulesJordan[] ACE_TIME_PROGMEM = {
3030  // Anchor: Rule Jordan 1995 1998 - Sep Fri>=15 0:00s 0 -
3031  {
3032  -127 /*fromYearTiny (-32767)*/,
3033  -127 /*toYearTiny (-32767)*/,
3034  1 /*inMonth*/,
3035  0 /*onDayOfWeek*/,
3036  1 /*onDayOfMonth*/,
3037  0 /*atTimeCode*/,
3038  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3039  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3040  0 /*letterIndex ("")*/,
3041  },
3042  // Rule Jordan 1995 1998 - Sep Fri>=15 0:00s 0 -
3043  {
3044  -105 /*fromYearTiny (1995)*/,
3045  -102 /*toYearTiny (1998)*/,
3046  9 /*inMonth*/,
3047  5 /*onDayOfWeek*/,
3048  15 /*onDayOfMonth*/,
3049  0 /*atTimeCode*/,
3050  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3051  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3052  0 /*letterIndex ("")*/,
3053  },
3054  // Rule Jordan 1999 only - Jul 1 0:00s 1:00 S
3055  {
3056  -101 /*fromYearTiny (1999)*/,
3057  -101 /*toYearTiny (1999)*/,
3058  7 /*inMonth*/,
3059  0 /*onDayOfWeek*/,
3060  1 /*onDayOfMonth*/,
3061  0 /*atTimeCode*/,
3062  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3063  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3064  4 /*letterIndex ("S")*/,
3065  },
3066  // Rule Jordan 1999 2002 - Sep lastFri 0:00s 0 -
3067  {
3068  -101 /*fromYearTiny (1999)*/,
3069  -98 /*toYearTiny (2002)*/,
3070  9 /*inMonth*/,
3071  5 /*onDayOfWeek*/,
3072  0 /*onDayOfMonth*/,
3073  0 /*atTimeCode*/,
3074  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3075  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3076  0 /*letterIndex ("")*/,
3077  },
3078  // Rule Jordan 2000 2001 - Mar lastThu 0:00s 1:00 S
3079  {
3080  -100 /*fromYearTiny (2000)*/,
3081  -99 /*toYearTiny (2001)*/,
3082  3 /*inMonth*/,
3083  4 /*onDayOfWeek*/,
3084  0 /*onDayOfMonth*/,
3085  0 /*atTimeCode*/,
3086  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3087  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3088  4 /*letterIndex ("S")*/,
3089  },
3090  // Rule Jordan 2002 2012 - Mar lastThu 24:00 1:00 S
3091  {
3092  -98 /*fromYearTiny (2002)*/,
3093  -88 /*toYearTiny (2012)*/,
3094  3 /*inMonth*/,
3095  4 /*onDayOfWeek*/,
3096  0 /*onDayOfMonth*/,
3097  96 /*atTimeCode*/,
3098  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3099  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3100  4 /*letterIndex ("S")*/,
3101  },
3102  // Rule Jordan 2003 only - Oct 24 0:00s 0 -
3103  {
3104  -97 /*fromYearTiny (2003)*/,
3105  -97 /*toYearTiny (2003)*/,
3106  10 /*inMonth*/,
3107  0 /*onDayOfWeek*/,
3108  24 /*onDayOfMonth*/,
3109  0 /*atTimeCode*/,
3110  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3111  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3112  0 /*letterIndex ("")*/,
3113  },
3114  // Rule Jordan 2004 only - Oct 15 0:00s 0 -
3115  {
3116  -96 /*fromYearTiny (2004)*/,
3117  -96 /*toYearTiny (2004)*/,
3118  10 /*inMonth*/,
3119  0 /*onDayOfWeek*/,
3120  15 /*onDayOfMonth*/,
3121  0 /*atTimeCode*/,
3122  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3123  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3124  0 /*letterIndex ("")*/,
3125  },
3126  // Rule Jordan 2005 only - Sep lastFri 0:00s 0 -
3127  {
3128  -95 /*fromYearTiny (2005)*/,
3129  -95 /*toYearTiny (2005)*/,
3130  9 /*inMonth*/,
3131  5 /*onDayOfWeek*/,
3132  0 /*onDayOfMonth*/,
3133  0 /*atTimeCode*/,
3134  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3135  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3136  0 /*letterIndex ("")*/,
3137  },
3138  // Rule Jordan 2006 2011 - Oct lastFri 0:00s 0 -
3139  {
3140  -94 /*fromYearTiny (2006)*/,
3141  -89 /*toYearTiny (2011)*/,
3142  10 /*inMonth*/,
3143  5 /*onDayOfWeek*/,
3144  0 /*onDayOfMonth*/,
3145  0 /*atTimeCode*/,
3146  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3147  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3148  0 /*letterIndex ("")*/,
3149  },
3150  // Rule Jordan 2013 only - Dec 20 0:00 0 -
3151  {
3152  -87 /*fromYearTiny (2013)*/,
3153  -87 /*toYearTiny (2013)*/,
3154  12 /*inMonth*/,
3155  0 /*onDayOfWeek*/,
3156  20 /*onDayOfMonth*/,
3157  0 /*atTimeCode*/,
3158  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3159  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3160  0 /*letterIndex ("")*/,
3161  },
3162  // Rule Jordan 2014 2021 - Mar lastThu 24:00 1:00 S
3163  {
3164  -86 /*fromYearTiny (2014)*/,
3165  -79 /*toYearTiny (2021)*/,
3166  3 /*inMonth*/,
3167  4 /*onDayOfWeek*/,
3168  0 /*onDayOfMonth*/,
3169  96 /*atTimeCode*/,
3170  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3171  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3172  4 /*letterIndex ("S")*/,
3173  },
3174  // Rule Jordan 2014 2022 - Oct lastFri 0:00s 0 -
3175  {
3176  -86 /*fromYearTiny (2014)*/,
3177  -78 /*toYearTiny (2022)*/,
3178  10 /*inMonth*/,
3179  5 /*onDayOfWeek*/,
3180  0 /*onDayOfMonth*/,
3181  0 /*atTimeCode*/,
3182  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3183  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3184  0 /*letterIndex ("")*/,
3185  },
3186  // Rule Jordan 2022 only - Feb lastThu 24:00 1:00 S
3187  {
3188  -78 /*fromYearTiny (2022)*/,
3189  -78 /*toYearTiny (2022)*/,
3190  2 /*inMonth*/,
3191  4 /*onDayOfWeek*/,
3192  0 /*onDayOfMonth*/,
3193  96 /*atTimeCode*/,
3194  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3195  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3196  4 /*letterIndex ("S")*/,
3197  },
3198 
3199 };
3200 
3201 const basic::ZonePolicy kZonePolicyJordan ACE_TIME_PROGMEM = {
3202  kZoneRulesJordan /*rules*/,
3203  14 /*numRules*/,
3204 };
3205 
3206 //---------------------------------------------------------------------------
3207 // Policy name: LH
3208 // Rules: 10
3209 //---------------------------------------------------------------------------
3210 
3211 static const basic::ZoneRule kZoneRulesLH[] ACE_TIME_PROGMEM = {
3212  // Anchor: Rule LH 1990 1995 - Mar Sun>=1 2:00 0 -
3213  {
3214  -127 /*fromYearTiny (-32767)*/,
3215  -127 /*toYearTiny (-32767)*/,
3216  1 /*inMonth*/,
3217  0 /*onDayOfWeek*/,
3218  1 /*onDayOfMonth*/,
3219  0 /*atTimeCode*/,
3220  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3221  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3222  0 /*letterIndex ("")*/,
3223  },
3224  // Rule LH 1987 1999 - Oct lastSun 2:00 0:30 -
3225  {
3226  -113 /*fromYearTiny (1987)*/,
3227  -101 /*toYearTiny (1999)*/,
3228  10 /*inMonth*/,
3229  7 /*onDayOfWeek*/,
3230  0 /*onDayOfMonth*/,
3231  8 /*atTimeCode*/,
3232  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3233  6 /*deltaCode ((deltaMinutes=30)/15 + 4)*/,
3234  0 /*letterIndex ("")*/,
3235  },
3236  // Rule LH 1990 1995 - Mar Sun>=1 2:00 0 -
3237  {
3238  -110 /*fromYearTiny (1990)*/,
3239  -105 /*toYearTiny (1995)*/,
3240  3 /*inMonth*/,
3241  7 /*onDayOfWeek*/,
3242  1 /*onDayOfMonth*/,
3243  8 /*atTimeCode*/,
3244  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3245  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3246  0 /*letterIndex ("")*/,
3247  },
3248  // Rule LH 1996 2005 - Mar lastSun 2:00 0 -
3249  {
3250  -104 /*fromYearTiny (1996)*/,
3251  -95 /*toYearTiny (2005)*/,
3252  3 /*inMonth*/,
3253  7 /*onDayOfWeek*/,
3254  0 /*onDayOfMonth*/,
3255  8 /*atTimeCode*/,
3256  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3257  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3258  0 /*letterIndex ("")*/,
3259  },
3260  // Rule LH 2000 only - Aug lastSun 2:00 0:30 -
3261  {
3262  -100 /*fromYearTiny (2000)*/,
3263  -100 /*toYearTiny (2000)*/,
3264  8 /*inMonth*/,
3265  7 /*onDayOfWeek*/,
3266  0 /*onDayOfMonth*/,
3267  8 /*atTimeCode*/,
3268  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3269  6 /*deltaCode ((deltaMinutes=30)/15 + 4)*/,
3270  0 /*letterIndex ("")*/,
3271  },
3272  // Rule LH 2001 2007 - Oct lastSun 2:00 0:30 -
3273  {
3274  -99 /*fromYearTiny (2001)*/,
3275  -93 /*toYearTiny (2007)*/,
3276  10 /*inMonth*/,
3277  7 /*onDayOfWeek*/,
3278  0 /*onDayOfMonth*/,
3279  8 /*atTimeCode*/,
3280  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3281  6 /*deltaCode ((deltaMinutes=30)/15 + 4)*/,
3282  0 /*letterIndex ("")*/,
3283  },
3284  // Rule LH 2006 only - Apr Sun>=1 2:00 0 -
3285  {
3286  -94 /*fromYearTiny (2006)*/,
3287  -94 /*toYearTiny (2006)*/,
3288  4 /*inMonth*/,
3289  7 /*onDayOfWeek*/,
3290  1 /*onDayOfMonth*/,
3291  8 /*atTimeCode*/,
3292  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3293  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3294  0 /*letterIndex ("")*/,
3295  },
3296  // Rule LH 2007 only - Mar lastSun 2:00 0 -
3297  {
3298  -93 /*fromYearTiny (2007)*/,
3299  -93 /*toYearTiny (2007)*/,
3300  3 /*inMonth*/,
3301  7 /*onDayOfWeek*/,
3302  0 /*onDayOfMonth*/,
3303  8 /*atTimeCode*/,
3304  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3305  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3306  0 /*letterIndex ("")*/,
3307  },
3308  // Rule LH 2008 max - Apr Sun>=1 2:00 0 -
3309  {
3310  -92 /*fromYearTiny (2008)*/,
3311  126 /*toYearTiny (32766)*/,
3312  4 /*inMonth*/,
3313  7 /*onDayOfWeek*/,
3314  1 /*onDayOfMonth*/,
3315  8 /*atTimeCode*/,
3316  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3317  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3318  0 /*letterIndex ("")*/,
3319  },
3320  // Rule LH 2008 max - Oct Sun>=1 2:00 0:30 -
3321  {
3322  -92 /*fromYearTiny (2008)*/,
3323  126 /*toYearTiny (32766)*/,
3324  10 /*inMonth*/,
3325  7 /*onDayOfWeek*/,
3326  1 /*onDayOfMonth*/,
3327  8 /*atTimeCode*/,
3328  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3329  6 /*deltaCode ((deltaMinutes=30)/15 + 4)*/,
3330  0 /*letterIndex ("")*/,
3331  },
3332 
3333 };
3334 
3335 const basic::ZonePolicy kZonePolicyLH ACE_TIME_PROGMEM = {
3336  kZoneRulesLH /*rules*/,
3337  10 /*numRules*/,
3338 };
3339 
3340 //---------------------------------------------------------------------------
3341 // Policy name: Lebanon
3342 // Rules: 4
3343 //---------------------------------------------------------------------------
3344 
3345 static const basic::ZoneRule kZoneRulesLebanon[] ACE_TIME_PROGMEM = {
3346  // Anchor: Rule Lebanon 1993 1998 - Sep lastSun 0:00 0 -
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  0 /*letterIndex ("")*/,
3357  },
3358  // Rule Lebanon 1993 max - Mar lastSun 0:00 1:00 S
3359  {
3360  -107 /*fromYearTiny (1993)*/,
3361  126 /*toYearTiny (32766)*/,
3362  3 /*inMonth*/,
3363  7 /*onDayOfWeek*/,
3364  0 /*onDayOfMonth*/,
3365  0 /*atTimeCode*/,
3366  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3367  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3368  4 /*letterIndex ("S")*/,
3369  },
3370  // Rule Lebanon 1993 1998 - Sep lastSun 0:00 0 -
3371  {
3372  -107 /*fromYearTiny (1993)*/,
3373  -102 /*toYearTiny (1998)*/,
3374  9 /*inMonth*/,
3375  7 /*onDayOfWeek*/,
3376  0 /*onDayOfMonth*/,
3377  0 /*atTimeCode*/,
3378  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3379  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3380  0 /*letterIndex ("")*/,
3381  },
3382  // Rule Lebanon 1999 max - Oct lastSun 0:00 0 -
3383  {
3384  -101 /*fromYearTiny (1999)*/,
3385  126 /*toYearTiny (32766)*/,
3386  10 /*inMonth*/,
3387  7 /*onDayOfWeek*/,
3388  0 /*onDayOfMonth*/,
3389  0 /*atTimeCode*/,
3390  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3391  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3392  0 /*letterIndex ("")*/,
3393  },
3394 
3395 };
3396 
3397 const basic::ZonePolicy kZonePolicyLebanon ACE_TIME_PROGMEM = {
3398  kZoneRulesLebanon /*rules*/,
3399  4 /*numRules*/,
3400 };
3401 
3402 //---------------------------------------------------------------------------
3403 // Policy name: Macau
3404 // Rules: 1
3405 //---------------------------------------------------------------------------
3406 
3407 static const basic::ZoneRule kZoneRulesMacau[] ACE_TIME_PROGMEM = {
3408  // Anchor: Rule Macau 1979 only - Oct Sun>=16 03:30 0 S
3409  {
3410  -127 /*fromYearTiny (-32767)*/,
3411  -127 /*toYearTiny (-32767)*/,
3412  1 /*inMonth*/,
3413  0 /*onDayOfWeek*/,
3414  1 /*onDayOfMonth*/,
3415  0 /*atTimeCode*/,
3416  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3417  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3418  4 /*letterIndex ("S")*/,
3419  },
3420 
3421 };
3422 
3423 const basic::ZonePolicy kZonePolicyMacau ACE_TIME_PROGMEM = {
3424  kZoneRulesMacau /*rules*/,
3425  1 /*numRules*/,
3426 };
3427 
3428 //---------------------------------------------------------------------------
3429 // Policy name: Mauritius
3430 // Rules: 4
3431 //---------------------------------------------------------------------------
3432 
3433 static const basic::ZoneRule kZoneRulesMauritius[] ACE_TIME_PROGMEM = {
3434  // Anchor: Rule Mauritius 1983 only - Mar 21 0:00 0 -
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  0 /*letterIndex ("")*/,
3445  },
3446  // Rule Mauritius 1983 only - Mar 21 0:00 0 -
3447  {
3448  -117 /*fromYearTiny (1983)*/,
3449  -117 /*toYearTiny (1983)*/,
3450  3 /*inMonth*/,
3451  0 /*onDayOfWeek*/,
3452  21 /*onDayOfMonth*/,
3453  0 /*atTimeCode*/,
3454  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3455  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3456  0 /*letterIndex ("")*/,
3457  },
3458  // Rule Mauritius 2008 only - Oct lastSun 2:00 1:00 -
3459  {
3460  -92 /*fromYearTiny (2008)*/,
3461  -92 /*toYearTiny (2008)*/,
3462  10 /*inMonth*/,
3463  7 /*onDayOfWeek*/,
3464  0 /*onDayOfMonth*/,
3465  8 /*atTimeCode*/,
3466  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3467  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3468  0 /*letterIndex ("")*/,
3469  },
3470  // Rule Mauritius 2009 only - Mar lastSun 2:00 0 -
3471  {
3472  -91 /*fromYearTiny (2009)*/,
3473  -91 /*toYearTiny (2009)*/,
3474  3 /*inMonth*/,
3475  7 /*onDayOfWeek*/,
3476  0 /*onDayOfMonth*/,
3477  8 /*atTimeCode*/,
3478  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3479  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3480  0 /*letterIndex ("")*/,
3481  },
3482 
3483 };
3484 
3485 const basic::ZonePolicy kZonePolicyMauritius ACE_TIME_PROGMEM = {
3486  kZoneRulesMauritius /*rules*/,
3487  4 /*numRules*/,
3488 };
3489 
3490 //---------------------------------------------------------------------------
3491 // Policy name: Mexico
3492 // Rules: 8
3493 //---------------------------------------------------------------------------
3494 
3495 static const basic::ZoneRule kZoneRulesMexico[] ACE_TIME_PROGMEM = {
3496  // Anchor: Rule Mexico 1950 only - Jul 30 0:00 0 S
3497  {
3498  -127 /*fromYearTiny (-32767)*/,
3499  -127 /*toYearTiny (-32767)*/,
3500  1 /*inMonth*/,
3501  0 /*onDayOfWeek*/,
3502  1 /*onDayOfMonth*/,
3503  0 /*atTimeCode*/,
3504  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3505  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3506  4 /*letterIndex ("S")*/,
3507  },
3508  // Rule Mexico 1950 only - Jul 30 0:00 0 S
3509  {
3510  -127 /*fromYearTiny (1950)*/,
3511  -127 /*toYearTiny (1950)*/,
3512  7 /*inMonth*/,
3513  0 /*onDayOfWeek*/,
3514  30 /*onDayOfMonth*/,
3515  0 /*atTimeCode*/,
3516  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3517  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3518  4 /*letterIndex ("S")*/,
3519  },
3520  // Rule Mexico 1996 2000 - Apr Sun>=1 2:00 1:00 D
3521  {
3522  -104 /*fromYearTiny (1996)*/,
3523  -100 /*toYearTiny (2000)*/,
3524  4 /*inMonth*/,
3525  7 /*onDayOfWeek*/,
3526  1 /*onDayOfMonth*/,
3527  8 /*atTimeCode*/,
3528  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3529  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3530  3 /*letterIndex ("D")*/,
3531  },
3532  // Rule Mexico 1996 2000 - Oct lastSun 2:00 0 S
3533  {
3534  -104 /*fromYearTiny (1996)*/,
3535  -100 /*toYearTiny (2000)*/,
3536  10 /*inMonth*/,
3537  7 /*onDayOfWeek*/,
3538  0 /*onDayOfMonth*/,
3539  8 /*atTimeCode*/,
3540  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3541  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3542  4 /*letterIndex ("S")*/,
3543  },
3544  // Rule Mexico 2001 only - May Sun>=1 2:00 1:00 D
3545  {
3546  -99 /*fromYearTiny (2001)*/,
3547  -99 /*toYearTiny (2001)*/,
3548  5 /*inMonth*/,
3549  7 /*onDayOfWeek*/,
3550  1 /*onDayOfMonth*/,
3551  8 /*atTimeCode*/,
3552  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3553  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3554  3 /*letterIndex ("D")*/,
3555  },
3556  // Rule Mexico 2001 only - Sep lastSun 2:00 0 S
3557  {
3558  -99 /*fromYearTiny (2001)*/,
3559  -99 /*toYearTiny (2001)*/,
3560  9 /*inMonth*/,
3561  7 /*onDayOfWeek*/,
3562  0 /*onDayOfMonth*/,
3563  8 /*atTimeCode*/,
3564  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3565  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3566  4 /*letterIndex ("S")*/,
3567  },
3568  // Rule Mexico 2002 2022 - Apr Sun>=1 2:00 1:00 D
3569  {
3570  -98 /*fromYearTiny (2002)*/,
3571  -78 /*toYearTiny (2022)*/,
3572  4 /*inMonth*/,
3573  7 /*onDayOfWeek*/,
3574  1 /*onDayOfMonth*/,
3575  8 /*atTimeCode*/,
3576  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3577  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3578  3 /*letterIndex ("D")*/,
3579  },
3580  // Rule Mexico 2002 2022 - Oct lastSun 2:00 0 S
3581  {
3582  -98 /*fromYearTiny (2002)*/,
3583  -78 /*toYearTiny (2022)*/,
3584  10 /*inMonth*/,
3585  7 /*onDayOfWeek*/,
3586  0 /*onDayOfMonth*/,
3587  8 /*atTimeCode*/,
3588  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3589  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3590  4 /*letterIndex ("S")*/,
3591  },
3592 
3593 };
3594 
3595 const basic::ZonePolicy kZonePolicyMexico ACE_TIME_PROGMEM = {
3596  kZoneRulesMexico /*rules*/,
3597  8 /*numRules*/,
3598 };
3599 
3600 //---------------------------------------------------------------------------
3601 // Policy name: Moldova
3602 // Rules: 3
3603 //---------------------------------------------------------------------------
3604 
3605 static const basic::ZoneRule kZoneRulesMoldova[] ACE_TIME_PROGMEM = {
3606  // Anchor: Rule Moldova 1997 max - Oct lastSun 3:00 0 -
3607  {
3608  -127 /*fromYearTiny (-32767)*/,
3609  -127 /*toYearTiny (-32767)*/,
3610  1 /*inMonth*/,
3611  0 /*onDayOfWeek*/,
3612  1 /*onDayOfMonth*/,
3613  0 /*atTimeCode*/,
3614  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3615  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3616  0 /*letterIndex ("")*/,
3617  },
3618  // Rule Moldova 1997 max - Mar lastSun 2:00 1:00 S
3619  {
3620  -103 /*fromYearTiny (1997)*/,
3621  126 /*toYearTiny (32766)*/,
3622  3 /*inMonth*/,
3623  7 /*onDayOfWeek*/,
3624  0 /*onDayOfMonth*/,
3625  8 /*atTimeCode*/,
3626  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3627  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3628  4 /*letterIndex ("S")*/,
3629  },
3630  // Rule Moldova 1997 max - Oct lastSun 3:00 0 -
3631  {
3632  -103 /*fromYearTiny (1997)*/,
3633  126 /*toYearTiny (32766)*/,
3634  10 /*inMonth*/,
3635  7 /*onDayOfWeek*/,
3636  0 /*onDayOfMonth*/,
3637  12 /*atTimeCode*/,
3638  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3639  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3640  0 /*letterIndex ("")*/,
3641  },
3642 
3643 };
3644 
3645 const basic::ZonePolicy kZonePolicyMoldova ACE_TIME_PROGMEM = {
3646  kZoneRulesMoldova /*rules*/,
3647  3 /*numRules*/,
3648 };
3649 
3650 //---------------------------------------------------------------------------
3651 // Policy name: Moncton
3652 // Rules: 4
3653 //---------------------------------------------------------------------------
3654 
3655 static const basic::ZoneRule kZoneRulesMoncton[] ACE_TIME_PROGMEM = {
3656  // Anchor: Rule Moncton 1957 1972 - Oct lastSun 2:00 0 S
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  4 /*letterIndex ("S")*/,
3667  },
3668  // Rule Moncton 1957 1972 - Oct lastSun 2:00 0 S
3669  {
3670  -127 /*fromYearTiny (1957)*/,
3671  -127 /*toYearTiny (1972)*/,
3672  10 /*inMonth*/,
3673  7 /*onDayOfWeek*/,
3674  0 /*onDayOfMonth*/,
3675  8 /*atTimeCode*/,
3676  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3677  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3678  4 /*letterIndex ("S")*/,
3679  },
3680  // Rule Moncton 1993 2006 - Apr Sun>=1 0:01 1:00 D
3681  {
3682  -107 /*fromYearTiny (1993)*/,
3683  -94 /*toYearTiny (2006)*/,
3684  4 /*inMonth*/,
3685  7 /*onDayOfWeek*/,
3686  1 /*onDayOfMonth*/,
3687  0 /*atTimeCode*/,
3688  1 /*atTimeModifier (kSuffixW + minute=1)*/,
3689  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3690  3 /*letterIndex ("D")*/,
3691  },
3692  // Rule Moncton 1993 2006 - Oct lastSun 0:01 0 S
3693  {
3694  -107 /*fromYearTiny (1993)*/,
3695  -94 /*toYearTiny (2006)*/,
3696  10 /*inMonth*/,
3697  7 /*onDayOfWeek*/,
3698  0 /*onDayOfMonth*/,
3699  0 /*atTimeCode*/,
3700  1 /*atTimeModifier (kSuffixW + minute=1)*/,
3701  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3702  4 /*letterIndex ("S")*/,
3703  },
3704 
3705 };
3706 
3707 const basic::ZonePolicy kZonePolicyMoncton ACE_TIME_PROGMEM = {
3708  kZoneRulesMoncton /*rules*/,
3709  4 /*numRules*/,
3710 };
3711 
3712 //---------------------------------------------------------------------------
3713 // Policy name: Mongol
3714 // Rules: 7
3715 //---------------------------------------------------------------------------
3716 
3717 static const basic::ZoneRule kZoneRulesMongol[] ACE_TIME_PROGMEM = {
3718  // Anchor: Rule Mongol 1984 1998 - Sep lastSun 0:00 0 -
3719  {
3720  -127 /*fromYearTiny (-32767)*/,
3721  -127 /*toYearTiny (-32767)*/,
3722  1 /*inMonth*/,
3723  0 /*onDayOfWeek*/,
3724  1 /*onDayOfMonth*/,
3725  0 /*atTimeCode*/,
3726  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3727  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3728  0 /*letterIndex ("")*/,
3729  },
3730  // Rule Mongol 1984 1998 - Sep lastSun 0:00 0 -
3731  {
3732  -116 /*fromYearTiny (1984)*/,
3733  -102 /*toYearTiny (1998)*/,
3734  9 /*inMonth*/,
3735  7 /*onDayOfWeek*/,
3736  0 /*onDayOfMonth*/,
3737  0 /*atTimeCode*/,
3738  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3739  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3740  0 /*letterIndex ("")*/,
3741  },
3742  // Rule Mongol 2001 only - Apr lastSat 2:00 1:00 -
3743  {
3744  -99 /*fromYearTiny (2001)*/,
3745  -99 /*toYearTiny (2001)*/,
3746  4 /*inMonth*/,
3747  6 /*onDayOfWeek*/,
3748  0 /*onDayOfMonth*/,
3749  8 /*atTimeCode*/,
3750  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3751  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3752  0 /*letterIndex ("")*/,
3753  },
3754  // Rule Mongol 2001 2006 - Sep lastSat 2:00 0 -
3755  {
3756  -99 /*fromYearTiny (2001)*/,
3757  -94 /*toYearTiny (2006)*/,
3758  9 /*inMonth*/,
3759  6 /*onDayOfWeek*/,
3760  0 /*onDayOfMonth*/,
3761  8 /*atTimeCode*/,
3762  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3763  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3764  0 /*letterIndex ("")*/,
3765  },
3766  // Rule Mongol 2002 2006 - Mar lastSat 2:00 1:00 -
3767  {
3768  -98 /*fromYearTiny (2002)*/,
3769  -94 /*toYearTiny (2006)*/,
3770  3 /*inMonth*/,
3771  6 /*onDayOfWeek*/,
3772  0 /*onDayOfMonth*/,
3773  8 /*atTimeCode*/,
3774  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3775  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3776  0 /*letterIndex ("")*/,
3777  },
3778  // Rule Mongol 2015 2016 - Mar lastSat 2:00 1:00 -
3779  {
3780  -85 /*fromYearTiny (2015)*/,
3781  -84 /*toYearTiny (2016)*/,
3782  3 /*inMonth*/,
3783  6 /*onDayOfWeek*/,
3784  0 /*onDayOfMonth*/,
3785  8 /*atTimeCode*/,
3786  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3787  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3788  0 /*letterIndex ("")*/,
3789  },
3790  // Rule Mongol 2015 2016 - Sep lastSat 0:00 0 -
3791  {
3792  -85 /*fromYearTiny (2015)*/,
3793  -84 /*toYearTiny (2016)*/,
3794  9 /*inMonth*/,
3795  6 /*onDayOfWeek*/,
3796  0 /*onDayOfMonth*/,
3797  0 /*atTimeCode*/,
3798  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3799  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3800  0 /*letterIndex ("")*/,
3801  },
3802 
3803 };
3804 
3805 const basic::ZonePolicy kZonePolicyMongol ACE_TIME_PROGMEM = {
3806  kZoneRulesMongol /*rules*/,
3807  7 /*numRules*/,
3808 };
3809 
3810 //---------------------------------------------------------------------------
3811 // Policy name: NC
3812 // Rules: 1
3813 //---------------------------------------------------------------------------
3814 
3815 static const basic::ZoneRule kZoneRulesNC[] ACE_TIME_PROGMEM = {
3816  // Anchor: Rule NC 1997 only - Mar 2 2:00s 0 -
3817  {
3818  -127 /*fromYearTiny (-32767)*/,
3819  -127 /*toYearTiny (-32767)*/,
3820  1 /*inMonth*/,
3821  0 /*onDayOfWeek*/,
3822  1 /*onDayOfMonth*/,
3823  0 /*atTimeCode*/,
3824  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3825  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3826  0 /*letterIndex ("")*/,
3827  },
3828 
3829 };
3830 
3831 const basic::ZonePolicy kZonePolicyNC ACE_TIME_PROGMEM = {
3832  kZoneRulesNC /*rules*/,
3833  1 /*numRules*/,
3834 };
3835 
3836 //---------------------------------------------------------------------------
3837 // Policy name: NZ
3838 // Rules: 6
3839 //---------------------------------------------------------------------------
3840 
3841 static const basic::ZoneRule kZoneRulesNZ[] ACE_TIME_PROGMEM = {
3842  // Anchor: Rule NZ 1990 2007 - Mar Sun>=15 2:00s 0 S
3843  {
3844  -127 /*fromYearTiny (-32767)*/,
3845  -127 /*toYearTiny (-32767)*/,
3846  1 /*inMonth*/,
3847  0 /*onDayOfWeek*/,
3848  1 /*onDayOfMonth*/,
3849  0 /*atTimeCode*/,
3850  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3851  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3852  4 /*letterIndex ("S")*/,
3853  },
3854  // Rule NZ 1989 only - Oct Sun>=8 2:00s 1:00 D
3855  {
3856  -111 /*fromYearTiny (1989)*/,
3857  -111 /*toYearTiny (1989)*/,
3858  10 /*inMonth*/,
3859  7 /*onDayOfWeek*/,
3860  8 /*onDayOfMonth*/,
3861  8 /*atTimeCode*/,
3862  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3863  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3864  3 /*letterIndex ("D")*/,
3865  },
3866  // Rule NZ 1990 2006 - Oct Sun>=1 2:00s 1:00 D
3867  {
3868  -110 /*fromYearTiny (1990)*/,
3869  -94 /*toYearTiny (2006)*/,
3870  10 /*inMonth*/,
3871  7 /*onDayOfWeek*/,
3872  1 /*onDayOfMonth*/,
3873  8 /*atTimeCode*/,
3874  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3875  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3876  3 /*letterIndex ("D")*/,
3877  },
3878  // Rule NZ 1990 2007 - Mar Sun>=15 2:00s 0 S
3879  {
3880  -110 /*fromYearTiny (1990)*/,
3881  -93 /*toYearTiny (2007)*/,
3882  3 /*inMonth*/,
3883  7 /*onDayOfWeek*/,
3884  15 /*onDayOfMonth*/,
3885  8 /*atTimeCode*/,
3886  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3887  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3888  4 /*letterIndex ("S")*/,
3889  },
3890  // Rule NZ 2007 max - Sep lastSun 2:00s 1:00 D
3891  {
3892  -93 /*fromYearTiny (2007)*/,
3893  126 /*toYearTiny (32766)*/,
3894  9 /*inMonth*/,
3895  7 /*onDayOfWeek*/,
3896  0 /*onDayOfMonth*/,
3897  8 /*atTimeCode*/,
3898  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3899  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3900  3 /*letterIndex ("D")*/,
3901  },
3902  // Rule NZ 2008 max - Apr Sun>=1 2:00s 0 S
3903  {
3904  -92 /*fromYearTiny (2008)*/,
3905  126 /*toYearTiny (32766)*/,
3906  4 /*inMonth*/,
3907  7 /*onDayOfWeek*/,
3908  1 /*onDayOfMonth*/,
3909  8 /*atTimeCode*/,
3910  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3911  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3912  4 /*letterIndex ("S")*/,
3913  },
3914 
3915 };
3916 
3917 const basic::ZonePolicy kZonePolicyNZ ACE_TIME_PROGMEM = {
3918  kZoneRulesNZ /*rules*/,
3919  6 /*numRules*/,
3920 };
3921 
3922 //---------------------------------------------------------------------------
3923 // Policy name: Namibia
3924 // Rules: 4
3925 //---------------------------------------------------------------------------
3926 
3927 static const basic::ZoneRule kZoneRulesNamibia[] ACE_TIME_PROGMEM = {
3928  // Anchor: Rule Namibia 1994 2017 - Sep Sun>=1 2:00 0 CAT
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  1 /*letterIndex ("CAT")*/,
3939  },
3940  // Rule Namibia 1994 only - Mar 21 0:00 -1:00 WAT
3941  {
3942  -106 /*fromYearTiny (1994)*/,
3943  -106 /*toYearTiny (1994)*/,
3944  3 /*inMonth*/,
3945  0 /*onDayOfWeek*/,
3946  21 /*onDayOfMonth*/,
3947  0 /*atTimeCode*/,
3948  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3949  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
3950  5 /*letterIndex ("WAT")*/,
3951  },
3952  // Rule Namibia 1994 2017 - Sep Sun>=1 2:00 0 CAT
3953  {
3954  -106 /*fromYearTiny (1994)*/,
3955  -83 /*toYearTiny (2017)*/,
3956  9 /*inMonth*/,
3957  7 /*onDayOfWeek*/,
3958  1 /*onDayOfMonth*/,
3959  8 /*atTimeCode*/,
3960  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3961  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3962  1 /*letterIndex ("CAT")*/,
3963  },
3964  // Rule Namibia 1995 2017 - Apr Sun>=1 2:00 -1:00 WAT
3965  {
3966  -105 /*fromYearTiny (1995)*/,
3967  -83 /*toYearTiny (2017)*/,
3968  4 /*inMonth*/,
3969  7 /*onDayOfWeek*/,
3970  1 /*onDayOfMonth*/,
3971  8 /*atTimeCode*/,
3972  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3973  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
3974  5 /*letterIndex ("WAT")*/,
3975  },
3976 
3977 };
3978 
3979 const basic::ZonePolicy kZonePolicyNamibia ACE_TIME_PROGMEM = {
3980  kZoneRulesNamibia /*rules*/,
3981  4 /*numRules*/,
3982 };
3983 
3984 //---------------------------------------------------------------------------
3985 // Policy name: Nic
3986 // Rules: 6
3987 //---------------------------------------------------------------------------
3988 
3989 static const basic::ZoneRule kZoneRulesNic[] ACE_TIME_PROGMEM = {
3990  // Anchor: Rule Nic 1979 1980 - Jun Mon>=23 0:00 0 S
3991  {
3992  -127 /*fromYearTiny (-32767)*/,
3993  -127 /*toYearTiny (-32767)*/,
3994  1 /*inMonth*/,
3995  0 /*onDayOfWeek*/,
3996  1 /*onDayOfMonth*/,
3997  0 /*atTimeCode*/,
3998  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3999  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4000  4 /*letterIndex ("S")*/,
4001  },
4002  // Rule Nic 1979 1980 - Jun Mon>=23 0:00 0 S
4003  {
4004  -121 /*fromYearTiny (1979)*/,
4005  -120 /*toYearTiny (1980)*/,
4006  6 /*inMonth*/,
4007  1 /*onDayOfWeek*/,
4008  23 /*onDayOfMonth*/,
4009  0 /*atTimeCode*/,
4010  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4011  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4012  4 /*letterIndex ("S")*/,
4013  },
4014  // Rule Nic 2005 only - Apr 10 0:00 1:00 D
4015  {
4016  -95 /*fromYearTiny (2005)*/,
4017  -95 /*toYearTiny (2005)*/,
4018  4 /*inMonth*/,
4019  0 /*onDayOfWeek*/,
4020  10 /*onDayOfMonth*/,
4021  0 /*atTimeCode*/,
4022  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4023  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4024  3 /*letterIndex ("D")*/,
4025  },
4026  // Rule Nic 2005 only - Oct Sun>=1 0:00 0 S
4027  {
4028  -95 /*fromYearTiny (2005)*/,
4029  -95 /*toYearTiny (2005)*/,
4030  10 /*inMonth*/,
4031  7 /*onDayOfWeek*/,
4032  1 /*onDayOfMonth*/,
4033  0 /*atTimeCode*/,
4034  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4035  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4036  4 /*letterIndex ("S")*/,
4037  },
4038  // Rule Nic 2006 only - Apr 30 2:00 1:00 D
4039  {
4040  -94 /*fromYearTiny (2006)*/,
4041  -94 /*toYearTiny (2006)*/,
4042  4 /*inMonth*/,
4043  0 /*onDayOfWeek*/,
4044  30 /*onDayOfMonth*/,
4045  8 /*atTimeCode*/,
4046  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4047  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4048  3 /*letterIndex ("D")*/,
4049  },
4050  // Rule Nic 2006 only - Oct Sun>=1 1:00 0 S
4051  {
4052  -94 /*fromYearTiny (2006)*/,
4053  -94 /*toYearTiny (2006)*/,
4054  10 /*inMonth*/,
4055  7 /*onDayOfWeek*/,
4056  1 /*onDayOfMonth*/,
4057  4 /*atTimeCode*/,
4058  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4059  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4060  4 /*letterIndex ("S")*/,
4061  },
4062 
4063 };
4064 
4065 const basic::ZonePolicy kZonePolicyNic ACE_TIME_PROGMEM = {
4066  kZoneRulesNic /*rules*/,
4067  6 /*numRules*/,
4068 };
4069 
4070 //---------------------------------------------------------------------------
4071 // Policy name: PRC
4072 // Rules: 1
4073 //---------------------------------------------------------------------------
4074 
4075 static const basic::ZoneRule kZoneRulesPRC[] ACE_TIME_PROGMEM = {
4076  // Anchor: Rule PRC 1986 1991 - Sep Sun>=11 2:00 0 S
4077  {
4078  -127 /*fromYearTiny (-32767)*/,
4079  -127 /*toYearTiny (-32767)*/,
4080  1 /*inMonth*/,
4081  0 /*onDayOfWeek*/,
4082  1 /*onDayOfMonth*/,
4083  0 /*atTimeCode*/,
4084  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4085  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4086  4 /*letterIndex ("S")*/,
4087  },
4088 
4089 };
4090 
4091 const basic::ZonePolicy kZonePolicyPRC ACE_TIME_PROGMEM = {
4092  kZoneRulesPRC /*rules*/,
4093  1 /*numRules*/,
4094 };
4095 
4096 //---------------------------------------------------------------------------
4097 // Policy name: Pakistan
4098 // Rules: 6
4099 //---------------------------------------------------------------------------
4100 
4101 static const basic::ZoneRule kZoneRulesPakistan[] ACE_TIME_PROGMEM = {
4102  // Anchor: Rule Pakistan 2002 only - Oct Sun>=2 0:00 0 -
4103  {
4104  -127 /*fromYearTiny (-32767)*/,
4105  -127 /*toYearTiny (-32767)*/,
4106  1 /*inMonth*/,
4107  0 /*onDayOfWeek*/,
4108  1 /*onDayOfMonth*/,
4109  0 /*atTimeCode*/,
4110  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4111  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4112  0 /*letterIndex ("")*/,
4113  },
4114  // Rule Pakistan 2002 only - Apr Sun>=2 0:00 1:00 S
4115  {
4116  -98 /*fromYearTiny (2002)*/,
4117  -98 /*toYearTiny (2002)*/,
4118  4 /*inMonth*/,
4119  7 /*onDayOfWeek*/,
4120  2 /*onDayOfMonth*/,
4121  0 /*atTimeCode*/,
4122  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4123  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4124  4 /*letterIndex ("S")*/,
4125  },
4126  // Rule Pakistan 2002 only - Oct Sun>=2 0:00 0 -
4127  {
4128  -98 /*fromYearTiny (2002)*/,
4129  -98 /*toYearTiny (2002)*/,
4130  10 /*inMonth*/,
4131  7 /*onDayOfWeek*/,
4132  2 /*onDayOfMonth*/,
4133  0 /*atTimeCode*/,
4134  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4135  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4136  0 /*letterIndex ("")*/,
4137  },
4138  // Rule Pakistan 2008 only - Jun 1 0:00 1:00 S
4139  {
4140  -92 /*fromYearTiny (2008)*/,
4141  -92 /*toYearTiny (2008)*/,
4142  6 /*inMonth*/,
4143  0 /*onDayOfWeek*/,
4144  1 /*onDayOfMonth*/,
4145  0 /*atTimeCode*/,
4146  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4147  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4148  4 /*letterIndex ("S")*/,
4149  },
4150  // Rule Pakistan 2008 2009 - Nov 1 0:00 0 -
4151  {
4152  -92 /*fromYearTiny (2008)*/,
4153  -91 /*toYearTiny (2009)*/,
4154  11 /*inMonth*/,
4155  0 /*onDayOfWeek*/,
4156  1 /*onDayOfMonth*/,
4157  0 /*atTimeCode*/,
4158  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4159  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4160  0 /*letterIndex ("")*/,
4161  },
4162  // Rule Pakistan 2009 only - Apr 15 0:00 1:00 S
4163  {
4164  -91 /*fromYearTiny (2009)*/,
4165  -91 /*toYearTiny (2009)*/,
4166  4 /*inMonth*/,
4167  0 /*onDayOfWeek*/,
4168  15 /*onDayOfMonth*/,
4169  0 /*atTimeCode*/,
4170  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4171  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4172  4 /*letterIndex ("S")*/,
4173  },
4174 
4175 };
4176 
4177 const basic::ZonePolicy kZonePolicyPakistan ACE_TIME_PROGMEM = {
4178  kZoneRulesPakistan /*rules*/,
4179  6 /*numRules*/,
4180 };
4181 
4182 //---------------------------------------------------------------------------
4183 // Policy name: Para
4184 // Rules: 11
4185 //---------------------------------------------------------------------------
4186 
4187 static const basic::ZoneRule kZoneRulesPara[] ACE_TIME_PROGMEM = {
4188  // Anchor: Rule Para 1997 only - Feb lastSun 0:00 0 -
4189  {
4190  -127 /*fromYearTiny (-32767)*/,
4191  -127 /*toYearTiny (-32767)*/,
4192  1 /*inMonth*/,
4193  0 /*onDayOfWeek*/,
4194  1 /*onDayOfMonth*/,
4195  0 /*atTimeCode*/,
4196  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4197  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4198  0 /*letterIndex ("")*/,
4199  },
4200  // Rule Para 1996 2001 - Oct Sun>=1 0:00 1:00 -
4201  {
4202  -104 /*fromYearTiny (1996)*/,
4203  -99 /*toYearTiny (2001)*/,
4204  10 /*inMonth*/,
4205  7 /*onDayOfWeek*/,
4206  1 /*onDayOfMonth*/,
4207  0 /*atTimeCode*/,
4208  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4209  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4210  0 /*letterIndex ("")*/,
4211  },
4212  // Rule Para 1997 only - Feb lastSun 0:00 0 -
4213  {
4214  -103 /*fromYearTiny (1997)*/,
4215  -103 /*toYearTiny (1997)*/,
4216  2 /*inMonth*/,
4217  7 /*onDayOfWeek*/,
4218  0 /*onDayOfMonth*/,
4219  0 /*atTimeCode*/,
4220  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4221  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4222  0 /*letterIndex ("")*/,
4223  },
4224  // Rule Para 1998 2001 - Mar Sun>=1 0:00 0 -
4225  {
4226  -102 /*fromYearTiny (1998)*/,
4227  -99 /*toYearTiny (2001)*/,
4228  3 /*inMonth*/,
4229  7 /*onDayOfWeek*/,
4230  1 /*onDayOfMonth*/,
4231  0 /*atTimeCode*/,
4232  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4233  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4234  0 /*letterIndex ("")*/,
4235  },
4236  // Rule Para 2002 2004 - Apr Sun>=1 0:00 0 -
4237  {
4238  -98 /*fromYearTiny (2002)*/,
4239  -96 /*toYearTiny (2004)*/,
4240  4 /*inMonth*/,
4241  7 /*onDayOfWeek*/,
4242  1 /*onDayOfMonth*/,
4243  0 /*atTimeCode*/,
4244  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4245  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4246  0 /*letterIndex ("")*/,
4247  },
4248  // Rule Para 2002 2003 - Sep Sun>=1 0:00 1:00 -
4249  {
4250  -98 /*fromYearTiny (2002)*/,
4251  -97 /*toYearTiny (2003)*/,
4252  9 /*inMonth*/,
4253  7 /*onDayOfWeek*/,
4254  1 /*onDayOfMonth*/,
4255  0 /*atTimeCode*/,
4256  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4257  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4258  0 /*letterIndex ("")*/,
4259  },
4260  // Rule Para 2004 2009 - Oct Sun>=15 0:00 1:00 -
4261  {
4262  -96 /*fromYearTiny (2004)*/,
4263  -91 /*toYearTiny (2009)*/,
4264  10 /*inMonth*/,
4265  7 /*onDayOfWeek*/,
4266  15 /*onDayOfMonth*/,
4267  0 /*atTimeCode*/,
4268  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4269  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4270  0 /*letterIndex ("")*/,
4271  },
4272  // Rule Para 2005 2009 - Mar Sun>=8 0:00 0 -
4273  {
4274  -95 /*fromYearTiny (2005)*/,
4275  -91 /*toYearTiny (2009)*/,
4276  3 /*inMonth*/,
4277  7 /*onDayOfWeek*/,
4278  8 /*onDayOfMonth*/,
4279  0 /*atTimeCode*/,
4280  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4281  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4282  0 /*letterIndex ("")*/,
4283  },
4284  // Rule Para 2010 max - Oct Sun>=1 0:00 1:00 -
4285  {
4286  -90 /*fromYearTiny (2010)*/,
4287  126 /*toYearTiny (32766)*/,
4288  10 /*inMonth*/,
4289  7 /*onDayOfWeek*/,
4290  1 /*onDayOfMonth*/,
4291  0 /*atTimeCode*/,
4292  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4293  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4294  0 /*letterIndex ("")*/,
4295  },
4296  // Rule Para 2010 2012 - Apr Sun>=8 0:00 0 -
4297  {
4298  -90 /*fromYearTiny (2010)*/,
4299  -88 /*toYearTiny (2012)*/,
4300  4 /*inMonth*/,
4301  7 /*onDayOfWeek*/,
4302  8 /*onDayOfMonth*/,
4303  0 /*atTimeCode*/,
4304  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4305  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4306  0 /*letterIndex ("")*/,
4307  },
4308  // Rule Para 2013 max - Mar Sun>=22 0:00 0 -
4309  {
4310  -87 /*fromYearTiny (2013)*/,
4311  126 /*toYearTiny (32766)*/,
4312  3 /*inMonth*/,
4313  7 /*onDayOfWeek*/,
4314  22 /*onDayOfMonth*/,
4315  0 /*atTimeCode*/,
4316  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4317  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4318  0 /*letterIndex ("")*/,
4319  },
4320 
4321 };
4322 
4323 const basic::ZonePolicy kZonePolicyPara ACE_TIME_PROGMEM = {
4324  kZoneRulesPara /*rules*/,
4325  11 /*numRules*/,
4326 };
4327 
4328 //---------------------------------------------------------------------------
4329 // Policy name: Peru
4330 // Rules: 1
4331 //---------------------------------------------------------------------------
4332 
4333 static const basic::ZoneRule kZoneRulesPeru[] ACE_TIME_PROGMEM = {
4334  // Anchor: Rule Peru 1994 only - Apr 1 0:00 0 -
4335  {
4336  -127 /*fromYearTiny (-32767)*/,
4337  -127 /*toYearTiny (-32767)*/,
4338  1 /*inMonth*/,
4339  0 /*onDayOfWeek*/,
4340  1 /*onDayOfMonth*/,
4341  0 /*atTimeCode*/,
4342  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4343  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4344  0 /*letterIndex ("")*/,
4345  },
4346 
4347 };
4348 
4349 const basic::ZonePolicy kZonePolicyPeru ACE_TIME_PROGMEM = {
4350  kZoneRulesPeru /*rules*/,
4351  1 /*numRules*/,
4352 };
4353 
4354 //---------------------------------------------------------------------------
4355 // Policy name: Phil
4356 // Rules: 1
4357 //---------------------------------------------------------------------------
4358 
4359 static const basic::ZoneRule kZoneRulesPhil[] ACE_TIME_PROGMEM = {
4360  // Anchor: Rule Phil 1978 only - Sep 21 0:00 0 S
4361  {
4362  -127 /*fromYearTiny (-32767)*/,
4363  -127 /*toYearTiny (-32767)*/,
4364  1 /*inMonth*/,
4365  0 /*onDayOfWeek*/,
4366  1 /*onDayOfMonth*/,
4367  0 /*atTimeCode*/,
4368  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4369  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4370  4 /*letterIndex ("S")*/,
4371  },
4372 
4373 };
4374 
4375 const basic::ZonePolicy kZonePolicyPhil ACE_TIME_PROGMEM = {
4376  kZoneRulesPhil /*rules*/,
4377  1 /*numRules*/,
4378 };
4379 
4380 //---------------------------------------------------------------------------
4381 // Policy name: ROK
4382 // Rules: 1
4383 //---------------------------------------------------------------------------
4384 
4385 static const basic::ZoneRule kZoneRulesROK[] ACE_TIME_PROGMEM = {
4386  // Anchor: Rule ROK 1987 1988 - Oct Sun>=8 3:00 0 S
4387  {
4388  -127 /*fromYearTiny (-32767)*/,
4389  -127 /*toYearTiny (-32767)*/,
4390  1 /*inMonth*/,
4391  0 /*onDayOfWeek*/,
4392  1 /*onDayOfMonth*/,
4393  0 /*atTimeCode*/,
4394  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4395  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4396  4 /*letterIndex ("S")*/,
4397  },
4398 
4399 };
4400 
4401 const basic::ZonePolicy kZonePolicyROK ACE_TIME_PROGMEM = {
4402  kZoneRulesROK /*rules*/,
4403  1 /*numRules*/,
4404 };
4405 
4406 //---------------------------------------------------------------------------
4407 // Policy name: RussiaAsia
4408 // Rules: 4
4409 //---------------------------------------------------------------------------
4410 
4411 static const basic::ZoneRule kZoneRulesRussiaAsia[] ACE_TIME_PROGMEM = {
4412  // Anchor: Rule RussiaAsia 1984 1995 - Sep lastSun 2:00s 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  // Rule RussiaAsia 1984 1995 - Sep lastSun 2:00s 0 -
4425  {
4426  -116 /*fromYearTiny (1984)*/,
4427  -105 /*toYearTiny (1995)*/,
4428  9 /*inMonth*/,
4429  7 /*onDayOfWeek*/,
4430  0 /*onDayOfMonth*/,
4431  8 /*atTimeCode*/,
4432  16 /*atTimeModifier (kSuffixS + minute=0)*/,
4433  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4434  0 /*letterIndex ("")*/,
4435  },
4436  // Rule RussiaAsia 1985 2010 - Mar lastSun 2:00s 1:00 -
4437  {
4438  -115 /*fromYearTiny (1985)*/,
4439  -90 /*toYearTiny (2010)*/,
4440  3 /*inMonth*/,
4441  7 /*onDayOfWeek*/,
4442  0 /*onDayOfMonth*/,
4443  8 /*atTimeCode*/,
4444  16 /*atTimeModifier (kSuffixS + minute=0)*/,
4445  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4446  0 /*letterIndex ("")*/,
4447  },
4448  // Rule RussiaAsia 1996 2010 - Oct lastSun 2:00s 0 -
4449  {
4450  -104 /*fromYearTiny (1996)*/,
4451  -90 /*toYearTiny (2010)*/,
4452  10 /*inMonth*/,
4453  7 /*onDayOfWeek*/,
4454  0 /*onDayOfMonth*/,
4455  8 /*atTimeCode*/,
4456  16 /*atTimeModifier (kSuffixS + minute=0)*/,
4457  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4458  0 /*letterIndex ("")*/,
4459  },
4460 
4461 };
4462 
4463 const basic::ZonePolicy kZonePolicyRussiaAsia ACE_TIME_PROGMEM = {
4464  kZoneRulesRussiaAsia /*rules*/,
4465  4 /*numRules*/,
4466 };
4467 
4468 //---------------------------------------------------------------------------
4469 // Policy name: SA
4470 // Rules: 1
4471 //---------------------------------------------------------------------------
4472 
4473 static const basic::ZoneRule kZoneRulesSA[] ACE_TIME_PROGMEM = {
4474  // Anchor: Rule SA 1943 1944 - Mar Sun>=15 2:00 0 -
4475  {
4476  -127 /*fromYearTiny (-32767)*/,
4477  -127 /*toYearTiny (-32767)*/,
4478  1 /*inMonth*/,
4479  0 /*onDayOfWeek*/,
4480  1 /*onDayOfMonth*/,
4481  0 /*atTimeCode*/,
4482  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4483  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4484  0 /*letterIndex ("")*/,
4485  },
4486 
4487 };
4488 
4489 const basic::ZonePolicy kZonePolicySA ACE_TIME_PROGMEM = {
4490  kZoneRulesSA /*rules*/,
4491  1 /*numRules*/,
4492 };
4493 
4494 //---------------------------------------------------------------------------
4495 // Policy name: Salv
4496 // Rules: 1
4497 //---------------------------------------------------------------------------
4498 
4499 static const basic::ZoneRule kZoneRulesSalv[] ACE_TIME_PROGMEM = {
4500  // Anchor: Rule Salv 1987 1988 - Sep lastSun 0:00 0 S
4501  {
4502  -127 /*fromYearTiny (-32767)*/,
4503  -127 /*toYearTiny (-32767)*/,
4504  1 /*inMonth*/,
4505  0 /*onDayOfWeek*/,
4506  1 /*onDayOfMonth*/,
4507  0 /*atTimeCode*/,
4508  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4509  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4510  4 /*letterIndex ("S")*/,
4511  },
4512 
4513 };
4514 
4515 const basic::ZonePolicy kZonePolicySalv ACE_TIME_PROGMEM = {
4516  kZoneRulesSalv /*rules*/,
4517  1 /*numRules*/,
4518 };
4519 
4520 //---------------------------------------------------------------------------
4521 // Policy name: Taiwan
4522 // Rules: 1
4523 //---------------------------------------------------------------------------
4524 
4525 static const basic::ZoneRule kZoneRulesTaiwan[] ACE_TIME_PROGMEM = {
4526  // Anchor: Rule Taiwan 1979 only - Oct 1 0:00 0 S
4527  {
4528  -127 /*fromYearTiny (-32767)*/,
4529  -127 /*toYearTiny (-32767)*/,
4530  1 /*inMonth*/,
4531  0 /*onDayOfWeek*/,
4532  1 /*onDayOfMonth*/,
4533  0 /*atTimeCode*/,
4534  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4535  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4536  4 /*letterIndex ("S")*/,
4537  },
4538 
4539 };
4540 
4541 const basic::ZonePolicy kZonePolicyTaiwan ACE_TIME_PROGMEM = {
4542  kZoneRulesTaiwan /*rules*/,
4543  1 /*numRules*/,
4544 };
4545 
4546 //---------------------------------------------------------------------------
4547 // Policy name: Thule
4548 // Rules: 6
4549 //---------------------------------------------------------------------------
4550 
4551 static const basic::ZoneRule kZoneRulesThule[] ACE_TIME_PROGMEM = {
4552  // Anchor: Rule Thule 1991 1992 - Sep lastSun 2:00 0 S
4553  {
4554  -127 /*fromYearTiny (-32767)*/,
4555  -127 /*toYearTiny (-32767)*/,
4556  1 /*inMonth*/,
4557  0 /*onDayOfWeek*/,
4558  1 /*onDayOfMonth*/,
4559  0 /*atTimeCode*/,
4560  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4561  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4562  4 /*letterIndex ("S")*/,
4563  },
4564  // Rule Thule 1991 1992 - Sep lastSun 2:00 0 S
4565  {
4566  -109 /*fromYearTiny (1991)*/,
4567  -108 /*toYearTiny (1992)*/,
4568  9 /*inMonth*/,
4569  7 /*onDayOfWeek*/,
4570  0 /*onDayOfMonth*/,
4571  8 /*atTimeCode*/,
4572  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4573  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4574  4 /*letterIndex ("S")*/,
4575  },
4576  // Rule Thule 1993 2006 - Apr Sun>=1 2:00 1:00 D
4577  {
4578  -107 /*fromYearTiny (1993)*/,
4579  -94 /*toYearTiny (2006)*/,
4580  4 /*inMonth*/,
4581  7 /*onDayOfWeek*/,
4582  1 /*onDayOfMonth*/,
4583  8 /*atTimeCode*/,
4584  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4585  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4586  3 /*letterIndex ("D")*/,
4587  },
4588  // Rule Thule 1993 2006 - Oct lastSun 2:00 0 S
4589  {
4590  -107 /*fromYearTiny (1993)*/,
4591  -94 /*toYearTiny (2006)*/,
4592  10 /*inMonth*/,
4593  7 /*onDayOfWeek*/,
4594  0 /*onDayOfMonth*/,
4595  8 /*atTimeCode*/,
4596  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4597  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4598  4 /*letterIndex ("S")*/,
4599  },
4600  // Rule Thule 2007 max - Mar Sun>=8 2:00 1:00 D
4601  {
4602  -93 /*fromYearTiny (2007)*/,
4603  126 /*toYearTiny (32766)*/,
4604  3 /*inMonth*/,
4605  7 /*onDayOfWeek*/,
4606  8 /*onDayOfMonth*/,
4607  8 /*atTimeCode*/,
4608  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4609  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4610  3 /*letterIndex ("D")*/,
4611  },
4612  // Rule Thule 2007 max - Nov Sun>=1 2:00 0 S
4613  {
4614  -93 /*fromYearTiny (2007)*/,
4615  126 /*toYearTiny (32766)*/,
4616  11 /*inMonth*/,
4617  7 /*onDayOfWeek*/,
4618  1 /*onDayOfMonth*/,
4619  8 /*atTimeCode*/,
4620  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4621  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4622  4 /*letterIndex ("S")*/,
4623  },
4624 
4625 };
4626 
4627 const basic::ZonePolicy kZonePolicyThule ACE_TIME_PROGMEM = {
4628  kZoneRulesThule /*rules*/,
4629  6 /*numRules*/,
4630 };
4631 
4632 //---------------------------------------------------------------------------
4633 // Policy name: Tonga
4634 // Rules: 7
4635 //---------------------------------------------------------------------------
4636 
4637 static const basic::ZoneRule kZoneRulesTonga[] ACE_TIME_PROGMEM = {
4638  // Anchor: Rule Tonga 2000 only - Mar 19 2:00s 0 -
4639  {
4640  -127 /*fromYearTiny (-32767)*/,
4641  -127 /*toYearTiny (-32767)*/,
4642  1 /*inMonth*/,
4643  0 /*onDayOfWeek*/,
4644  1 /*onDayOfMonth*/,
4645  0 /*atTimeCode*/,
4646  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4647  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4648  0 /*letterIndex ("")*/,
4649  },
4650  // Rule Tonga 1999 only - Oct 7 2:00s 1:00 -
4651  {
4652  -101 /*fromYearTiny (1999)*/,
4653  -101 /*toYearTiny (1999)*/,
4654  10 /*inMonth*/,
4655  0 /*onDayOfWeek*/,
4656  7 /*onDayOfMonth*/,
4657  8 /*atTimeCode*/,
4658  16 /*atTimeModifier (kSuffixS + minute=0)*/,
4659  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4660  0 /*letterIndex ("")*/,
4661  },
4662  // Rule Tonga 2000 only - Mar 19 2:00s 0 -
4663  {
4664  -100 /*fromYearTiny (2000)*/,
4665  -100 /*toYearTiny (2000)*/,
4666  3 /*inMonth*/,
4667  0 /*onDayOfWeek*/,
4668  19 /*onDayOfMonth*/,
4669  8 /*atTimeCode*/,
4670  16 /*atTimeModifier (kSuffixS + minute=0)*/,
4671  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4672  0 /*letterIndex ("")*/,
4673  },
4674  // Rule Tonga 2000 2001 - Nov Sun>=1 2:00 1:00 -
4675  {
4676  -100 /*fromYearTiny (2000)*/,
4677  -99 /*toYearTiny (2001)*/,
4678  11 /*inMonth*/,
4679  7 /*onDayOfWeek*/,
4680  1 /*onDayOfMonth*/,
4681  8 /*atTimeCode*/,
4682  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4683  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4684  0 /*letterIndex ("")*/,
4685  },
4686  // Rule Tonga 2001 2002 - Jan lastSun 2:00 0 -
4687  {
4688  -99 /*fromYearTiny (2001)*/,
4689  -98 /*toYearTiny (2002)*/,
4690  1 /*inMonth*/,
4691  7 /*onDayOfWeek*/,
4692  0 /*onDayOfMonth*/,
4693  8 /*atTimeCode*/,
4694  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4695  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4696  0 /*letterIndex ("")*/,
4697  },
4698  // Rule Tonga 2016 only - Nov Sun>=1 2:00 1:00 -
4699  {
4700  -84 /*fromYearTiny (2016)*/,
4701  -84 /*toYearTiny (2016)*/,
4702  11 /*inMonth*/,
4703  7 /*onDayOfWeek*/,
4704  1 /*onDayOfMonth*/,
4705  8 /*atTimeCode*/,
4706  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4707  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4708  0 /*letterIndex ("")*/,
4709  },
4710  // Rule Tonga 2017 only - Jan Sun>=15 3:00 0 -
4711  {
4712  -83 /*fromYearTiny (2017)*/,
4713  -83 /*toYearTiny (2017)*/,
4714  1 /*inMonth*/,
4715  7 /*onDayOfWeek*/,
4716  15 /*onDayOfMonth*/,
4717  12 /*atTimeCode*/,
4718  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4719  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4720  0 /*letterIndex ("")*/,
4721  },
4722 
4723 };
4724 
4725 const basic::ZonePolicy kZonePolicyTonga ACE_TIME_PROGMEM = {
4726  kZoneRulesTonga /*rules*/,
4727  7 /*numRules*/,
4728 };
4729 
4730 //---------------------------------------------------------------------------
4731 // Policy name: Tunisia
4732 // Rules: 6
4733 //---------------------------------------------------------------------------
4734 
4735 static const basic::ZoneRule kZoneRulesTunisia[] ACE_TIME_PROGMEM = {
4736  // Anchor: Rule Tunisia 1988 1990 - Sep lastSun 0:00s 0 -
4737  {
4738  -127 /*fromYearTiny (-32767)*/,
4739  -127 /*toYearTiny (-32767)*/,
4740  1 /*inMonth*/,
4741  0 /*onDayOfWeek*/,
4742  1 /*onDayOfMonth*/,
4743  0 /*atTimeCode*/,
4744  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4745  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4746  0 /*letterIndex ("")*/,
4747  },
4748  // Rule Tunisia 1988 1990 - Sep lastSun 0:00s 0 -
4749  {
4750  -112 /*fromYearTiny (1988)*/,
4751  -110 /*toYearTiny (1990)*/,
4752  9 /*inMonth*/,
4753  7 /*onDayOfWeek*/,
4754  0 /*onDayOfMonth*/,
4755  0 /*atTimeCode*/,
4756  16 /*atTimeModifier (kSuffixS + minute=0)*/,
4757  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4758  0 /*letterIndex ("")*/,
4759  },
4760  // Rule Tunisia 2005 only - May 1 0:00s 1:00 S
4761  {
4762  -95 /*fromYearTiny (2005)*/,
4763  -95 /*toYearTiny (2005)*/,
4764  5 /*inMonth*/,
4765  0 /*onDayOfWeek*/,
4766  1 /*onDayOfMonth*/,
4767  0 /*atTimeCode*/,
4768  16 /*atTimeModifier (kSuffixS + minute=0)*/,
4769  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4770  4 /*letterIndex ("S")*/,
4771  },
4772  // Rule Tunisia 2005 only - Sep 30 1:00s 0 -
4773  {
4774  -95 /*fromYearTiny (2005)*/,
4775  -95 /*toYearTiny (2005)*/,
4776  9 /*inMonth*/,
4777  0 /*onDayOfWeek*/,
4778  30 /*onDayOfMonth*/,
4779  4 /*atTimeCode*/,
4780  16 /*atTimeModifier (kSuffixS + minute=0)*/,
4781  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4782  0 /*letterIndex ("")*/,
4783  },
4784  // Rule Tunisia 2006 2008 - Mar lastSun 2:00s 1:00 S
4785  {
4786  -94 /*fromYearTiny (2006)*/,
4787  -92 /*toYearTiny (2008)*/,
4788  3 /*inMonth*/,
4789  7 /*onDayOfWeek*/,
4790  0 /*onDayOfMonth*/,
4791  8 /*atTimeCode*/,
4792  16 /*atTimeModifier (kSuffixS + minute=0)*/,
4793  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4794  4 /*letterIndex ("S")*/,
4795  },
4796  // Rule Tunisia 2006 2008 - Oct lastSun 2:00s 0 -
4797  {
4798  -94 /*fromYearTiny (2006)*/,
4799  -92 /*toYearTiny (2008)*/,
4800  10 /*inMonth*/,
4801  7 /*onDayOfWeek*/,
4802  0 /*onDayOfMonth*/,
4803  8 /*atTimeCode*/,
4804  16 /*atTimeModifier (kSuffixS + minute=0)*/,
4805  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4806  0 /*letterIndex ("")*/,
4807  },
4808 
4809 };
4810 
4811 const basic::ZonePolicy kZonePolicyTunisia ACE_TIME_PROGMEM = {
4812  kZoneRulesTunisia /*rules*/,
4813  6 /*numRules*/,
4814 };
4815 
4816 //---------------------------------------------------------------------------
4817 // Policy name: US
4818 // Rules: 6
4819 //---------------------------------------------------------------------------
4820 
4821 static const basic::ZoneRule kZoneRulesUS[] ACE_TIME_PROGMEM = {
4822  // Anchor: Rule US 1967 2006 - Oct lastSun 2:00 0 S
4823  {
4824  -127 /*fromYearTiny (-32767)*/,
4825  -127 /*toYearTiny (-32767)*/,
4826  1 /*inMonth*/,
4827  0 /*onDayOfWeek*/,
4828  1 /*onDayOfMonth*/,
4829  0 /*atTimeCode*/,
4830  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4831  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4832  4 /*letterIndex ("S")*/,
4833  },
4834  // Rule US 1967 2006 - Oct lastSun 2:00 0 S
4835  {
4836  -127 /*fromYearTiny (1967)*/,
4837  -94 /*toYearTiny (2006)*/,
4838  10 /*inMonth*/,
4839  7 /*onDayOfWeek*/,
4840  0 /*onDayOfMonth*/,
4841  8 /*atTimeCode*/,
4842  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4843  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4844  4 /*letterIndex ("S")*/,
4845  },
4846  // Rule US 1976 1986 - Apr lastSun 2:00 1:00 D
4847  {
4848  -124 /*fromYearTiny (1976)*/,
4849  -114 /*toYearTiny (1986)*/,
4850  4 /*inMonth*/,
4851  7 /*onDayOfWeek*/,
4852  0 /*onDayOfMonth*/,
4853  8 /*atTimeCode*/,
4854  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4855  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4856  3 /*letterIndex ("D")*/,
4857  },
4858  // Rule US 1987 2006 - Apr Sun>=1 2:00 1:00 D
4859  {
4860  -113 /*fromYearTiny (1987)*/,
4861  -94 /*toYearTiny (2006)*/,
4862  4 /*inMonth*/,
4863  7 /*onDayOfWeek*/,
4864  1 /*onDayOfMonth*/,
4865  8 /*atTimeCode*/,
4866  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4867  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4868  3 /*letterIndex ("D")*/,
4869  },
4870  // Rule US 2007 max - Mar Sun>=8 2:00 1:00 D
4871  {
4872  -93 /*fromYearTiny (2007)*/,
4873  126 /*toYearTiny (32766)*/,
4874  3 /*inMonth*/,
4875  7 /*onDayOfWeek*/,
4876  8 /*onDayOfMonth*/,
4877  8 /*atTimeCode*/,
4878  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4879  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4880  3 /*letterIndex ("D")*/,
4881  },
4882  // Rule US 2007 max - Nov Sun>=1 2:00 0 S
4883  {
4884  -93 /*fromYearTiny (2007)*/,
4885  126 /*toYearTiny (32766)*/,
4886  11 /*inMonth*/,
4887  7 /*onDayOfWeek*/,
4888  1 /*onDayOfMonth*/,
4889  8 /*atTimeCode*/,
4890  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4891  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4892  4 /*letterIndex ("S")*/,
4893  },
4894 
4895 };
4896 
4897 const basic::ZonePolicy kZonePolicyUS ACE_TIME_PROGMEM = {
4898  kZoneRulesUS /*rules*/,
4899  6 /*numRules*/,
4900 };
4901 
4902 //---------------------------------------------------------------------------
4903 // Policy name: Uruguay
4904 // Rules: 7
4905 //---------------------------------------------------------------------------
4906 
4907 static const basic::ZoneRule kZoneRulesUruguay[] ACE_TIME_PROGMEM = {
4908  // Anchor: Rule Uruguay 1993 only - Feb 28 0:00 0 -
4909  {
4910  -127 /*fromYearTiny (-32767)*/,
4911  -127 /*toYearTiny (-32767)*/,
4912  1 /*inMonth*/,
4913  0 /*onDayOfWeek*/,
4914  1 /*onDayOfMonth*/,
4915  0 /*atTimeCode*/,
4916  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4917  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4918  0 /*letterIndex ("")*/,
4919  },
4920  // Rule Uruguay 1993 only - Feb 28 0:00 0 -
4921  {
4922  -107 /*fromYearTiny (1993)*/,
4923  -107 /*toYearTiny (1993)*/,
4924  2 /*inMonth*/,
4925  0 /*onDayOfWeek*/,
4926  28 /*onDayOfMonth*/,
4927  0 /*atTimeCode*/,
4928  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4929  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4930  0 /*letterIndex ("")*/,
4931  },
4932  // Rule Uruguay 2004 only - Sep 19 0:00 1:00 -
4933  {
4934  -96 /*fromYearTiny (2004)*/,
4935  -96 /*toYearTiny (2004)*/,
4936  9 /*inMonth*/,
4937  0 /*onDayOfWeek*/,
4938  19 /*onDayOfMonth*/,
4939  0 /*atTimeCode*/,
4940  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4941  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4942  0 /*letterIndex ("")*/,
4943  },
4944  // Rule Uruguay 2005 only - Mar 27 2:00 0 -
4945  {
4946  -95 /*fromYearTiny (2005)*/,
4947  -95 /*toYearTiny (2005)*/,
4948  3 /*inMonth*/,
4949  0 /*onDayOfWeek*/,
4950  27 /*onDayOfMonth*/,
4951  8 /*atTimeCode*/,
4952  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4953  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4954  0 /*letterIndex ("")*/,
4955  },
4956  // Rule Uruguay 2005 only - Oct 9 2:00 1:00 -
4957  {
4958  -95 /*fromYearTiny (2005)*/,
4959  -95 /*toYearTiny (2005)*/,
4960  10 /*inMonth*/,
4961  0 /*onDayOfWeek*/,
4962  9 /*onDayOfMonth*/,
4963  8 /*atTimeCode*/,
4964  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4965  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4966  0 /*letterIndex ("")*/,
4967  },
4968  // Rule Uruguay 2006 2015 - Mar Sun>=8 2:00 0 -
4969  {
4970  -94 /*fromYearTiny (2006)*/,
4971  -85 /*toYearTiny (2015)*/,
4972  3 /*inMonth*/,
4973  7 /*onDayOfWeek*/,
4974  8 /*onDayOfMonth*/,
4975  8 /*atTimeCode*/,
4976  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4977  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4978  0 /*letterIndex ("")*/,
4979  },
4980  // Rule Uruguay 2006 2014 - Oct Sun>=1 2:00 1:00 -
4981  {
4982  -94 /*fromYearTiny (2006)*/,
4983  -86 /*toYearTiny (2014)*/,
4984  10 /*inMonth*/,
4985  7 /*onDayOfWeek*/,
4986  1 /*onDayOfMonth*/,
4987  8 /*atTimeCode*/,
4988  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4989  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4990  0 /*letterIndex ("")*/,
4991  },
4992 
4993 };
4994 
4995 const basic::ZonePolicy kZonePolicyUruguay ACE_TIME_PROGMEM = {
4996  kZoneRulesUruguay /*rules*/,
4997  7 /*numRules*/,
4998 };
4999 
5000 //---------------------------------------------------------------------------
5001 // Policy name: Vanuatu
5002 // Rules: 1
5003 //---------------------------------------------------------------------------
5004 
5005 static const basic::ZoneRule kZoneRulesVanuatu[] ACE_TIME_PROGMEM = {
5006  // Anchor: Rule Vanuatu 1992 1993 - Jan Sat>=22 24:00 0 -
5007  {
5008  -127 /*fromYearTiny (-32767)*/,
5009  -127 /*toYearTiny (-32767)*/,
5010  1 /*inMonth*/,
5011  0 /*onDayOfWeek*/,
5012  1 /*onDayOfMonth*/,
5013  0 /*atTimeCode*/,
5014  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5015  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5016  0 /*letterIndex ("")*/,
5017  },
5018 
5019 };
5020 
5021 const basic::ZonePolicy kZonePolicyVanuatu ACE_TIME_PROGMEM = {
5022  kZoneRulesVanuatu /*rules*/,
5023  1 /*numRules*/,
5024 };
5025 
5026 //---------------------------------------------------------------------------
5027 // Policy name: Winn
5028 // Rules: 4
5029 //---------------------------------------------------------------------------
5030 
5031 static const basic::ZoneRule kZoneRulesWinn[] ACE_TIME_PROGMEM = {
5032  // Anchor: Rule Winn 1966 2005 - Oct lastSun 2:00s 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 Winn 1966 1986 - Apr lastSun 2:00s 1:00 D
5045  {
5046  -127 /*fromYearTiny (1966)*/,
5047  -114 /*toYearTiny (1986)*/,
5048  4 /*inMonth*/,
5049  7 /*onDayOfWeek*/,
5050  0 /*onDayOfMonth*/,
5051  8 /*atTimeCode*/,
5052  16 /*atTimeModifier (kSuffixS + minute=0)*/,
5053  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
5054  3 /*letterIndex ("D")*/,
5055  },
5056  // Rule Winn 1966 2005 - Oct lastSun 2:00s 0 S
5057  {
5058  -127 /*fromYearTiny (1966)*/,
5059  -95 /*toYearTiny (2005)*/,
5060  10 /*inMonth*/,
5061  7 /*onDayOfWeek*/,
5062  0 /*onDayOfMonth*/,
5063  8 /*atTimeCode*/,
5064  16 /*atTimeModifier (kSuffixS + minute=0)*/,
5065  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5066  4 /*letterIndex ("S")*/,
5067  },
5068  // Rule Winn 1987 2005 - Apr Sun>=1 2:00s 1:00 D
5069  {
5070  -113 /*fromYearTiny (1987)*/,
5071  -95 /*toYearTiny (2005)*/,
5072  4 /*inMonth*/,
5073  7 /*onDayOfWeek*/,
5074  1 /*onDayOfMonth*/,
5075  8 /*atTimeCode*/,
5076  16 /*atTimeModifier (kSuffixS + minute=0)*/,
5077  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
5078  3 /*letterIndex ("D")*/,
5079  },
5080 
5081 };
5082 
5083 const basic::ZonePolicy kZonePolicyWinn ACE_TIME_PROGMEM = {
5084  kZoneRulesWinn /*rules*/,
5085  4 /*numRules*/,
5086 };
5087 
5088 //---------------------------------------------------------------------------
5089 // Policy name: Zion
5090 // Rules: 25
5091 //---------------------------------------------------------------------------
5092 
5093 static const basic::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = {
5094  // Anchor: Rule Zion 1998 only - Sep 6 0:00 0 S
5095  {
5096  -127 /*fromYearTiny (-32767)*/,
5097  -127 /*toYearTiny (-32767)*/,
5098  1 /*inMonth*/,
5099  0 /*onDayOfWeek*/,
5100  1 /*onDayOfMonth*/,
5101  0 /*atTimeCode*/,
5102  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5103  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5104  4 /*letterIndex ("S")*/,
5105  },
5106  // Rule Zion 1998 only - Sep 6 0:00 0 S
5107  {
5108  -102 /*fromYearTiny (1998)*/,
5109  -102 /*toYearTiny (1998)*/,
5110  9 /*inMonth*/,
5111  0 /*onDayOfWeek*/,
5112  6 /*onDayOfMonth*/,
5113  0 /*atTimeCode*/,
5114  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5115  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5116  4 /*letterIndex ("S")*/,
5117  },
5118  // Rule Zion 1999 only - Apr 2 2:00 1:00 D
5119  {
5120  -101 /*fromYearTiny (1999)*/,
5121  -101 /*toYearTiny (1999)*/,
5122  4 /*inMonth*/,
5123  0 /*onDayOfWeek*/,
5124  2 /*onDayOfMonth*/,
5125  8 /*atTimeCode*/,
5126  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5127  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
5128  3 /*letterIndex ("D")*/,
5129  },
5130  // Rule Zion 1999 only - Sep 3 2:00 0 S
5131  {
5132  -101 /*fromYearTiny (1999)*/,
5133  -101 /*toYearTiny (1999)*/,
5134  9 /*inMonth*/,
5135  0 /*onDayOfWeek*/,
5136  3 /*onDayOfMonth*/,
5137  8 /*atTimeCode*/,
5138  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5139  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5140  4 /*letterIndex ("S")*/,
5141  },
5142  // Rule Zion 2000 only - Apr 14 2:00 1:00 D
5143  {
5144  -100 /*fromYearTiny (2000)*/,
5145  -100 /*toYearTiny (2000)*/,
5146  4 /*inMonth*/,
5147  0 /*onDayOfWeek*/,
5148  14 /*onDayOfMonth*/,
5149  8 /*atTimeCode*/,
5150  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5151  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
5152  3 /*letterIndex ("D")*/,
5153  },
5154  // Rule Zion 2000 only - Oct 6 1:00 0 S
5155  {
5156  -100 /*fromYearTiny (2000)*/,
5157  -100 /*toYearTiny (2000)*/,
5158  10 /*inMonth*/,
5159  0 /*onDayOfWeek*/,
5160  6 /*onDayOfMonth*/,
5161  4 /*atTimeCode*/,
5162  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5163  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5164  4 /*letterIndex ("S")*/,
5165  },
5166  // Rule Zion 2001 only - Apr 9 1:00 1:00 D
5167  {
5168  -99 /*fromYearTiny (2001)*/,
5169  -99 /*toYearTiny (2001)*/,
5170  4 /*inMonth*/,
5171  0 /*onDayOfWeek*/,
5172  9 /*onDayOfMonth*/,
5173  4 /*atTimeCode*/,
5174  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5175  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
5176  3 /*letterIndex ("D")*/,
5177  },
5178  // Rule Zion 2001 only - Sep 24 1:00 0 S
5179  {
5180  -99 /*fromYearTiny (2001)*/,
5181  -99 /*toYearTiny (2001)*/,
5182  9 /*inMonth*/,
5183  0 /*onDayOfWeek*/,
5184  24 /*onDayOfMonth*/,
5185  4 /*atTimeCode*/,
5186  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5187  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5188  4 /*letterIndex ("S")*/,
5189  },
5190  // Rule Zion 2002 only - Mar 29 1:00 1:00 D
5191  {
5192  -98 /*fromYearTiny (2002)*/,
5193  -98 /*toYearTiny (2002)*/,
5194  3 /*inMonth*/,
5195  0 /*onDayOfWeek*/,
5196  29 /*onDayOfMonth*/,
5197  4 /*atTimeCode*/,
5198  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5199  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
5200  3 /*letterIndex ("D")*/,
5201  },
5202  // Rule Zion 2002 only - Oct 7 1:00 0 S
5203  {
5204  -98 /*fromYearTiny (2002)*/,
5205  -98 /*toYearTiny (2002)*/,
5206  10 /*inMonth*/,
5207  0 /*onDayOfWeek*/,
5208  7 /*onDayOfMonth*/,
5209  4 /*atTimeCode*/,
5210  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5211  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5212  4 /*letterIndex ("S")*/,
5213  },
5214  // Rule Zion 2003 only - Mar 28 1:00 1:00 D
5215  {
5216  -97 /*fromYearTiny (2003)*/,
5217  -97 /*toYearTiny (2003)*/,
5218  3 /*inMonth*/,
5219  0 /*onDayOfWeek*/,
5220  28 /*onDayOfMonth*/,
5221  4 /*atTimeCode*/,
5222  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5223  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
5224  3 /*letterIndex ("D")*/,
5225  },
5226  // Rule Zion 2003 only - Oct 3 1:00 0 S
5227  {
5228  -97 /*fromYearTiny (2003)*/,
5229  -97 /*toYearTiny (2003)*/,
5230  10 /*inMonth*/,
5231  0 /*onDayOfWeek*/,
5232  3 /*onDayOfMonth*/,
5233  4 /*atTimeCode*/,
5234  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5235  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5236  4 /*letterIndex ("S")*/,
5237  },
5238  // Rule Zion 2004 only - Apr 7 1:00 1:00 D
5239  {
5240  -96 /*fromYearTiny (2004)*/,
5241  -96 /*toYearTiny (2004)*/,
5242  4 /*inMonth*/,
5243  0 /*onDayOfWeek*/,
5244  7 /*onDayOfMonth*/,
5245  4 /*atTimeCode*/,
5246  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5247  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
5248  3 /*letterIndex ("D")*/,
5249  },
5250  // Rule Zion 2004 only - Sep 22 1:00 0 S
5251  {
5252  -96 /*fromYearTiny (2004)*/,
5253  -96 /*toYearTiny (2004)*/,
5254  9 /*inMonth*/,
5255  0 /*onDayOfWeek*/,
5256  22 /*onDayOfMonth*/,
5257  4 /*atTimeCode*/,
5258  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5259  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5260  4 /*letterIndex ("S")*/,
5261  },
5262  // Rule Zion 2005 2012 - Apr Fri<=1 2:00 1:00 D
5263  {
5264  -95 /*fromYearTiny (2005)*/,
5265  -88 /*toYearTiny (2012)*/,
5266  4 /*inMonth*/,
5267  5 /*onDayOfWeek*/,
5268  -1 /*onDayOfMonth*/,
5269  8 /*atTimeCode*/,
5270  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5271  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
5272  3 /*letterIndex ("D")*/,
5273  },
5274  // Rule Zion 2005 only - Oct 9 2:00 0 S
5275  {
5276  -95 /*fromYearTiny (2005)*/,
5277  -95 /*toYearTiny (2005)*/,
5278  10 /*inMonth*/,
5279  0 /*onDayOfWeek*/,
5280  9 /*onDayOfMonth*/,
5281  8 /*atTimeCode*/,
5282  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5283  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5284  4 /*letterIndex ("S")*/,
5285  },
5286  // Rule Zion 2006 only - Oct 1 2:00 0 S
5287  {
5288  -94 /*fromYearTiny (2006)*/,
5289  -94 /*toYearTiny (2006)*/,
5290  10 /*inMonth*/,
5291  0 /*onDayOfWeek*/,
5292  1 /*onDayOfMonth*/,
5293  8 /*atTimeCode*/,
5294  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5295  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5296  4 /*letterIndex ("S")*/,
5297  },
5298  // Rule Zion 2007 only - Sep 16 2:00 0 S
5299  {
5300  -93 /*fromYearTiny (2007)*/,
5301  -93 /*toYearTiny (2007)*/,
5302  9 /*inMonth*/,
5303  0 /*onDayOfWeek*/,
5304  16 /*onDayOfMonth*/,
5305  8 /*atTimeCode*/,
5306  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5307  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5308  4 /*letterIndex ("S")*/,
5309  },
5310  // Rule Zion 2008 only - Oct 5 2:00 0 S
5311  {
5312  -92 /*fromYearTiny (2008)*/,
5313  -92 /*toYearTiny (2008)*/,
5314  10 /*inMonth*/,
5315  0 /*onDayOfWeek*/,
5316  5 /*onDayOfMonth*/,
5317  8 /*atTimeCode*/,
5318  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5319  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5320  4 /*letterIndex ("S")*/,
5321  },
5322  // Rule Zion 2009 only - Sep 27 2:00 0 S
5323  {
5324  -91 /*fromYearTiny (2009)*/,
5325  -91 /*toYearTiny (2009)*/,
5326  9 /*inMonth*/,
5327  0 /*onDayOfWeek*/,
5328  27 /*onDayOfMonth*/,
5329  8 /*atTimeCode*/,
5330  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5331  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5332  4 /*letterIndex ("S")*/,
5333  },
5334  // Rule Zion 2010 only - Sep 12 2:00 0 S
5335  {
5336  -90 /*fromYearTiny (2010)*/,
5337  -90 /*toYearTiny (2010)*/,
5338  9 /*inMonth*/,
5339  0 /*onDayOfWeek*/,
5340  12 /*onDayOfMonth*/,
5341  8 /*atTimeCode*/,
5342  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5343  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5344  4 /*letterIndex ("S")*/,
5345  },
5346  // Rule Zion 2011 only - Oct 2 2:00 0 S
5347  {
5348  -89 /*fromYearTiny (2011)*/,
5349  -89 /*toYearTiny (2011)*/,
5350  10 /*inMonth*/,
5351  0 /*onDayOfWeek*/,
5352  2 /*onDayOfMonth*/,
5353  8 /*atTimeCode*/,
5354  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5355  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5356  4 /*letterIndex ("S")*/,
5357  },
5358  // Rule Zion 2012 only - Sep 23 2:00 0 S
5359  {
5360  -88 /*fromYearTiny (2012)*/,
5361  -88 /*toYearTiny (2012)*/,
5362  9 /*inMonth*/,
5363  0 /*onDayOfWeek*/,
5364  23 /*onDayOfMonth*/,
5365  8 /*atTimeCode*/,
5366  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5367  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5368  4 /*letterIndex ("S")*/,
5369  },
5370  // Rule Zion 2013 max - Mar Fri>=23 2:00 1:00 D
5371  {
5372  -87 /*fromYearTiny (2013)*/,
5373  126 /*toYearTiny (32766)*/,
5374  3 /*inMonth*/,
5375  5 /*onDayOfWeek*/,
5376  23 /*onDayOfMonth*/,
5377  8 /*atTimeCode*/,
5378  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5379  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
5380  3 /*letterIndex ("D")*/,
5381  },
5382  // Rule Zion 2013 max - Oct lastSun 2:00 0 S
5383  {
5384  -87 /*fromYearTiny (2013)*/,
5385  126 /*toYearTiny (32766)*/,
5386  10 /*inMonth*/,
5387  7 /*onDayOfWeek*/,
5388  0 /*onDayOfMonth*/,
5389  8 /*atTimeCode*/,
5390  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5391  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5392  4 /*letterIndex ("S")*/,
5393  },
5394 
5395 };
5396 
5397 const basic::ZonePolicy kZonePolicyZion ACE_TIME_PROGMEM = {
5398  kZoneRulesZion /*rules*/,
5399  25 /*numRules*/,
5400 };
5401 
5402 
5403 
5404 }
5405 }
Macros and definitions that provide a consistency layer among the various Arduino boards for compatib...