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