AceTime  0.5
Date and time classes for Arduino that support timezones from the TZ Database, and a system clock that can synchronize from an NTP server or an RTC chip.
zone_policies.cpp
1 // This file was generated by the following script:
2 //
3 // $ ../../../tools/tzcompiler.py --input_dir ../../../tools/../../tz --output_dir /home/brian/dev/AceTime/src/ace_time/zonedbx --tz_version 2019a --action zonedb --language arduino --scope extended --start_year 2000 --until_year 2050
4 //
5 // using the TZ Database files from
6 // https://github.com/eggert/tz/releases/tag/2019a
7 //
8 // Policies: 84
9 // Rules: 527
10 // Memory (8-bit): 5282
11 // Memory (32-bit): 5662
12 //
13 // DO NOT EDIT
14 
15 #include <ace_time/common/flash.h>
16 #include "zone_policies.h"
17 
18 namespace ace_time {
19 namespace zonedbx {
20 
21 //---------------------------------------------------------------------------
22 // Policy name: AN
23 // Rules: 9
24 // Memory (8-bit): 87
25 // Memory (32-bit): 91
26 //---------------------------------------------------------------------------
27 
28 static const extended::ZoneRule kZoneRulesAN[] ACE_TIME_PROGMEM = {
29  // Rule AN 1987 1999 - Oct lastSun 2:00s 1:00 D
30  {
31  -13 /*fromYearTiny*/,
32  -1 /*toYearTiny*/,
33  10 /*inMonth*/,
34  7 /*onDayOfWeek*/,
35  0 /*onDayOfMonth*/,
36  8 /*atTimeCode*/,
37  's' /*atTimeModifier*/,
38  4 /*deltaCode*/,
39  'D' /*letter*/,
40  },
41  // Rule AN 1990 1995 - Mar Sun>=1 2:00s 0 S
42  {
43  -10 /*fromYearTiny*/,
44  -5 /*toYearTiny*/,
45  3 /*inMonth*/,
46  7 /*onDayOfWeek*/,
47  1 /*onDayOfMonth*/,
48  8 /*atTimeCode*/,
49  's' /*atTimeModifier*/,
50  0 /*deltaCode*/,
51  'S' /*letter*/,
52  },
53  // Rule AN 1996 2005 - Mar lastSun 2:00s 0 S
54  {
55  -4 /*fromYearTiny*/,
56  5 /*toYearTiny*/,
57  3 /*inMonth*/,
58  7 /*onDayOfWeek*/,
59  0 /*onDayOfMonth*/,
60  8 /*atTimeCode*/,
61  's' /*atTimeModifier*/,
62  0 /*deltaCode*/,
63  'S' /*letter*/,
64  },
65  // Rule AN 2000 only - Aug lastSun 2:00s 1:00 D
66  {
67  0 /*fromYearTiny*/,
68  0 /*toYearTiny*/,
69  8 /*inMonth*/,
70  7 /*onDayOfWeek*/,
71  0 /*onDayOfMonth*/,
72  8 /*atTimeCode*/,
73  's' /*atTimeModifier*/,
74  4 /*deltaCode*/,
75  'D' /*letter*/,
76  },
77  // Rule AN 2001 2007 - Oct lastSun 2:00s 1:00 D
78  {
79  1 /*fromYearTiny*/,
80  7 /*toYearTiny*/,
81  10 /*inMonth*/,
82  7 /*onDayOfWeek*/,
83  0 /*onDayOfMonth*/,
84  8 /*atTimeCode*/,
85  's' /*atTimeModifier*/,
86  4 /*deltaCode*/,
87  'D' /*letter*/,
88  },
89  // Rule AN 2006 only - Apr Sun>=1 2:00s 0 S
90  {
91  6 /*fromYearTiny*/,
92  6 /*toYearTiny*/,
93  4 /*inMonth*/,
94  7 /*onDayOfWeek*/,
95  1 /*onDayOfMonth*/,
96  8 /*atTimeCode*/,
97  's' /*atTimeModifier*/,
98  0 /*deltaCode*/,
99  'S' /*letter*/,
100  },
101  // Rule AN 2007 only - Mar lastSun 2:00s 0 S
102  {
103  7 /*fromYearTiny*/,
104  7 /*toYearTiny*/,
105  3 /*inMonth*/,
106  7 /*onDayOfWeek*/,
107  0 /*onDayOfMonth*/,
108  8 /*atTimeCode*/,
109  's' /*atTimeModifier*/,
110  0 /*deltaCode*/,
111  'S' /*letter*/,
112  },
113  // Rule AN 2008 max - Apr Sun>=1 2:00s 0 S
114  {
115  8 /*fromYearTiny*/,
116  126 /*toYearTiny*/,
117  4 /*inMonth*/,
118  7 /*onDayOfWeek*/,
119  1 /*onDayOfMonth*/,
120  8 /*atTimeCode*/,
121  's' /*atTimeModifier*/,
122  0 /*deltaCode*/,
123  'S' /*letter*/,
124  },
125  // Rule AN 2008 max - Oct Sun>=1 2:00s 1:00 D
126  {
127  8 /*fromYearTiny*/,
128  126 /*toYearTiny*/,
129  10 /*inMonth*/,
130  7 /*onDayOfWeek*/,
131  1 /*onDayOfMonth*/,
132  8 /*atTimeCode*/,
133  's' /*atTimeModifier*/,
134  4 /*deltaCode*/,
135  'D' /*letter*/,
136  },
137 
138 };
139 
140 
141 
142 const extended::ZonePolicy kPolicyAN ACE_TIME_PROGMEM = {
143  9 /*numRules*/,
144  kZoneRulesAN /*rules*/,
145  0 /* numLetters */,
146  nullptr /* letters */,
147 };
148 
149 //---------------------------------------------------------------------------
150 // Policy name: AQ
151 // Rules: 1
152 // Memory (8-bit): 15
153 // Memory (32-bit): 19
154 //---------------------------------------------------------------------------
155 
156 static const extended::ZoneRule kZoneRulesAQ[] ACE_TIME_PROGMEM = {
157  // Rule AQ 1990 1992 - Mar Sun>=1 2:00s 0 S
158  {
159  -10 /*fromYearTiny*/,
160  -8 /*toYearTiny*/,
161  3 /*inMonth*/,
162  7 /*onDayOfWeek*/,
163  1 /*onDayOfMonth*/,
164  8 /*atTimeCode*/,
165  's' /*atTimeModifier*/,
166  0 /*deltaCode*/,
167  'S' /*letter*/,
168  },
169 
170 };
171 
172 
173 
174 const extended::ZonePolicy kPolicyAQ ACE_TIME_PROGMEM = {
175  1 /*numRules*/,
176  kZoneRulesAQ /*rules*/,
177  0 /* numLetters */,
178  nullptr /* letters */,
179 };
180 
181 //---------------------------------------------------------------------------
182 // Policy name: AS
183 // Rules: 7
184 // Memory (8-bit): 69
185 // Memory (32-bit): 73
186 //---------------------------------------------------------------------------
187 
188 static const extended::ZoneRule kZoneRulesAS[] ACE_TIME_PROGMEM = {
189  // Rule AS 1987 2007 - Oct lastSun 2:00s 1:00 D
190  {
191  -13 /*fromYearTiny*/,
192  7 /*toYearTiny*/,
193  10 /*inMonth*/,
194  7 /*onDayOfWeek*/,
195  0 /*onDayOfMonth*/,
196  8 /*atTimeCode*/,
197  's' /*atTimeModifier*/,
198  4 /*deltaCode*/,
199  'D' /*letter*/,
200  },
201  // Rule AS 1994 only - Mar 20 2:00s 0 S
202  {
203  -6 /*fromYearTiny*/,
204  -6 /*toYearTiny*/,
205  3 /*inMonth*/,
206  0 /*onDayOfWeek*/,
207  20 /*onDayOfMonth*/,
208  8 /*atTimeCode*/,
209  's' /*atTimeModifier*/,
210  0 /*deltaCode*/,
211  'S' /*letter*/,
212  },
213  // Rule AS 1995 2005 - Mar lastSun 2:00s 0 S
214  {
215  -5 /*fromYearTiny*/,
216  5 /*toYearTiny*/,
217  3 /*inMonth*/,
218  7 /*onDayOfWeek*/,
219  0 /*onDayOfMonth*/,
220  8 /*atTimeCode*/,
221  's' /*atTimeModifier*/,
222  0 /*deltaCode*/,
223  'S' /*letter*/,
224  },
225  // Rule AS 2006 only - Apr 2 2:00s 0 S
226  {
227  6 /*fromYearTiny*/,
228  6 /*toYearTiny*/,
229  4 /*inMonth*/,
230  0 /*onDayOfWeek*/,
231  2 /*onDayOfMonth*/,
232  8 /*atTimeCode*/,
233  's' /*atTimeModifier*/,
234  0 /*deltaCode*/,
235  'S' /*letter*/,
236  },
237  // Rule AS 2007 only - Mar lastSun 2:00s 0 S
238  {
239  7 /*fromYearTiny*/,
240  7 /*toYearTiny*/,
241  3 /*inMonth*/,
242  7 /*onDayOfWeek*/,
243  0 /*onDayOfMonth*/,
244  8 /*atTimeCode*/,
245  's' /*atTimeModifier*/,
246  0 /*deltaCode*/,
247  'S' /*letter*/,
248  },
249  // Rule AS 2008 max - Apr Sun>=1 2:00s 0 S
250  {
251  8 /*fromYearTiny*/,
252  126 /*toYearTiny*/,
253  4 /*inMonth*/,
254  7 /*onDayOfWeek*/,
255  1 /*onDayOfMonth*/,
256  8 /*atTimeCode*/,
257  's' /*atTimeModifier*/,
258  0 /*deltaCode*/,
259  'S' /*letter*/,
260  },
261  // Rule AS 2008 max - Oct Sun>=1 2:00s 1:00 D
262  {
263  8 /*fromYearTiny*/,
264  126 /*toYearTiny*/,
265  10 /*inMonth*/,
266  7 /*onDayOfWeek*/,
267  1 /*onDayOfMonth*/,
268  8 /*atTimeCode*/,
269  's' /*atTimeModifier*/,
270  4 /*deltaCode*/,
271  'D' /*letter*/,
272  },
273 
274 };
275 
276 
277 
278 const extended::ZonePolicy kPolicyAS ACE_TIME_PROGMEM = {
279  7 /*numRules*/,
280  kZoneRulesAS /*rules*/,
281  0 /* numLetters */,
282  nullptr /* letters */,
283 };
284 
285 //---------------------------------------------------------------------------
286 // Policy name: AT
287 // Rules: 8
288 // Memory (8-bit): 78
289 // Memory (32-bit): 82
290 //---------------------------------------------------------------------------
291 
292 static const extended::ZoneRule kZoneRulesAT[] ACE_TIME_PROGMEM = {
293  // Rule AT 1988 1990 - Oct lastSun 2:00s 1:00 D
294  {
295  -12 /*fromYearTiny*/,
296  -10 /*toYearTiny*/,
297  10 /*inMonth*/,
298  7 /*onDayOfWeek*/,
299  0 /*onDayOfMonth*/,
300  8 /*atTimeCode*/,
301  's' /*atTimeModifier*/,
302  4 /*deltaCode*/,
303  'D' /*letter*/,
304  },
305  // Rule AT 1991 1999 - Oct Sun>=1 2:00s 1:00 D
306  {
307  -9 /*fromYearTiny*/,
308  -1 /*toYearTiny*/,
309  10 /*inMonth*/,
310  7 /*onDayOfWeek*/,
311  1 /*onDayOfMonth*/,
312  8 /*atTimeCode*/,
313  's' /*atTimeModifier*/,
314  4 /*deltaCode*/,
315  'D' /*letter*/,
316  },
317  // Rule AT 1991 2005 - Mar lastSun 2:00s 0 S
318  {
319  -9 /*fromYearTiny*/,
320  5 /*toYearTiny*/,
321  3 /*inMonth*/,
322  7 /*onDayOfWeek*/,
323  0 /*onDayOfMonth*/,
324  8 /*atTimeCode*/,
325  's' /*atTimeModifier*/,
326  0 /*deltaCode*/,
327  'S' /*letter*/,
328  },
329  // Rule AT 2000 only - Aug lastSun 2:00s 1:00 D
330  {
331  0 /*fromYearTiny*/,
332  0 /*toYearTiny*/,
333  8 /*inMonth*/,
334  7 /*onDayOfWeek*/,
335  0 /*onDayOfMonth*/,
336  8 /*atTimeCode*/,
337  's' /*atTimeModifier*/,
338  4 /*deltaCode*/,
339  'D' /*letter*/,
340  },
341  // Rule AT 2001 max - Oct Sun>=1 2:00s 1:00 D
342  {
343  1 /*fromYearTiny*/,
344  126 /*toYearTiny*/,
345  10 /*inMonth*/,
346  7 /*onDayOfWeek*/,
347  1 /*onDayOfMonth*/,
348  8 /*atTimeCode*/,
349  's' /*atTimeModifier*/,
350  4 /*deltaCode*/,
351  'D' /*letter*/,
352  },
353  // Rule AT 2006 only - Apr Sun>=1 2:00s 0 S
354  {
355  6 /*fromYearTiny*/,
356  6 /*toYearTiny*/,
357  4 /*inMonth*/,
358  7 /*onDayOfWeek*/,
359  1 /*onDayOfMonth*/,
360  8 /*atTimeCode*/,
361  's' /*atTimeModifier*/,
362  0 /*deltaCode*/,
363  'S' /*letter*/,
364  },
365  // Rule AT 2007 only - Mar lastSun 2:00s 0 S
366  {
367  7 /*fromYearTiny*/,
368  7 /*toYearTiny*/,
369  3 /*inMonth*/,
370  7 /*onDayOfWeek*/,
371  0 /*onDayOfMonth*/,
372  8 /*atTimeCode*/,
373  's' /*atTimeModifier*/,
374  0 /*deltaCode*/,
375  'S' /*letter*/,
376  },
377  // Rule AT 2008 max - Apr Sun>=1 2:00s 0 S
378  {
379  8 /*fromYearTiny*/,
380  126 /*toYearTiny*/,
381  4 /*inMonth*/,
382  7 /*onDayOfWeek*/,
383  1 /*onDayOfMonth*/,
384  8 /*atTimeCode*/,
385  's' /*atTimeModifier*/,
386  0 /*deltaCode*/,
387  'S' /*letter*/,
388  },
389 
390 };
391 
392 
393 
394 const extended::ZonePolicy kPolicyAT ACE_TIME_PROGMEM = {
395  8 /*numRules*/,
396  kZoneRulesAT /*rules*/,
397  0 /* numLetters */,
398  nullptr /* letters */,
399 };
400 
401 //---------------------------------------------------------------------------
402 // Policy name: AV
403 // Rules: 9
404 // Memory (8-bit): 87
405 // Memory (32-bit): 91
406 //---------------------------------------------------------------------------
407 
408 static const extended::ZoneRule kZoneRulesAV[] ACE_TIME_PROGMEM = {
409  // Rule AV 1988 1999 - Oct lastSun 2:00s 1:00 D
410  {
411  -12 /*fromYearTiny*/,
412  -1 /*toYearTiny*/,
413  10 /*inMonth*/,
414  7 /*onDayOfWeek*/,
415  0 /*onDayOfMonth*/,
416  8 /*atTimeCode*/,
417  's' /*atTimeModifier*/,
418  4 /*deltaCode*/,
419  'D' /*letter*/,
420  },
421  // Rule AV 1991 1994 - Mar Sun>=1 2:00s 0 S
422  {
423  -9 /*fromYearTiny*/,
424  -6 /*toYearTiny*/,
425  3 /*inMonth*/,
426  7 /*onDayOfWeek*/,
427  1 /*onDayOfMonth*/,
428  8 /*atTimeCode*/,
429  's' /*atTimeModifier*/,
430  0 /*deltaCode*/,
431  'S' /*letter*/,
432  },
433  // Rule AV 1995 2005 - Mar lastSun 2:00s 0 S
434  {
435  -5 /*fromYearTiny*/,
436  5 /*toYearTiny*/,
437  3 /*inMonth*/,
438  7 /*onDayOfWeek*/,
439  0 /*onDayOfMonth*/,
440  8 /*atTimeCode*/,
441  's' /*atTimeModifier*/,
442  0 /*deltaCode*/,
443  'S' /*letter*/,
444  },
445  // Rule AV 2000 only - Aug lastSun 2:00s 1:00 D
446  {
447  0 /*fromYearTiny*/,
448  0 /*toYearTiny*/,
449  8 /*inMonth*/,
450  7 /*onDayOfWeek*/,
451  0 /*onDayOfMonth*/,
452  8 /*atTimeCode*/,
453  's' /*atTimeModifier*/,
454  4 /*deltaCode*/,
455  'D' /*letter*/,
456  },
457  // Rule AV 2001 2007 - Oct lastSun 2:00s 1:00 D
458  {
459  1 /*fromYearTiny*/,
460  7 /*toYearTiny*/,
461  10 /*inMonth*/,
462  7 /*onDayOfWeek*/,
463  0 /*onDayOfMonth*/,
464  8 /*atTimeCode*/,
465  's' /*atTimeModifier*/,
466  4 /*deltaCode*/,
467  'D' /*letter*/,
468  },
469  // Rule AV 2006 only - Apr Sun>=1 2:00s 0 S
470  {
471  6 /*fromYearTiny*/,
472  6 /*toYearTiny*/,
473  4 /*inMonth*/,
474  7 /*onDayOfWeek*/,
475  1 /*onDayOfMonth*/,
476  8 /*atTimeCode*/,
477  's' /*atTimeModifier*/,
478  0 /*deltaCode*/,
479  'S' /*letter*/,
480  },
481  // Rule AV 2007 only - Mar lastSun 2:00s 0 S
482  {
483  7 /*fromYearTiny*/,
484  7 /*toYearTiny*/,
485  3 /*inMonth*/,
486  7 /*onDayOfWeek*/,
487  0 /*onDayOfMonth*/,
488  8 /*atTimeCode*/,
489  's' /*atTimeModifier*/,
490  0 /*deltaCode*/,
491  'S' /*letter*/,
492  },
493  // Rule AV 2008 max - Apr Sun>=1 2:00s 0 S
494  {
495  8 /*fromYearTiny*/,
496  126 /*toYearTiny*/,
497  4 /*inMonth*/,
498  7 /*onDayOfWeek*/,
499  1 /*onDayOfMonth*/,
500  8 /*atTimeCode*/,
501  's' /*atTimeModifier*/,
502  0 /*deltaCode*/,
503  'S' /*letter*/,
504  },
505  // Rule AV 2008 max - Oct Sun>=1 2:00s 1:00 D
506  {
507  8 /*fromYearTiny*/,
508  126 /*toYearTiny*/,
509  10 /*inMonth*/,
510  7 /*onDayOfWeek*/,
511  1 /*onDayOfMonth*/,
512  8 /*atTimeCode*/,
513  's' /*atTimeModifier*/,
514  4 /*deltaCode*/,
515  'D' /*letter*/,
516  },
517 
518 };
519 
520 
521 
522 const extended::ZonePolicy kPolicyAV ACE_TIME_PROGMEM = {
523  9 /*numRules*/,
524  kZoneRulesAV /*rules*/,
525  0 /* numLetters */,
526  nullptr /* letters */,
527 };
528 
529 //---------------------------------------------------------------------------
530 // Policy name: AW
531 // Rules: 4
532 // Memory (8-bit): 42
533 // Memory (32-bit): 46
534 //---------------------------------------------------------------------------
535 
536 static const extended::ZoneRule kZoneRulesAW[] ACE_TIME_PROGMEM = {
537  // Rule AW 1992 only - Mar Sun>=1 2:00s 0 S
538  {
539  -8 /*fromYearTiny*/,
540  -8 /*toYearTiny*/,
541  3 /*inMonth*/,
542  7 /*onDayOfWeek*/,
543  1 /*onDayOfMonth*/,
544  8 /*atTimeCode*/,
545  's' /*atTimeModifier*/,
546  0 /*deltaCode*/,
547  'S' /*letter*/,
548  },
549  // Rule AW 2006 only - Dec 3 2:00s 1:00 D
550  {
551  6 /*fromYearTiny*/,
552  6 /*toYearTiny*/,
553  12 /*inMonth*/,
554  0 /*onDayOfWeek*/,
555  3 /*onDayOfMonth*/,
556  8 /*atTimeCode*/,
557  's' /*atTimeModifier*/,
558  4 /*deltaCode*/,
559  'D' /*letter*/,
560  },
561  // Rule AW 2007 2009 - Mar lastSun 2:00s 0 S
562  {
563  7 /*fromYearTiny*/,
564  9 /*toYearTiny*/,
565  3 /*inMonth*/,
566  7 /*onDayOfWeek*/,
567  0 /*onDayOfMonth*/,
568  8 /*atTimeCode*/,
569  's' /*atTimeModifier*/,
570  0 /*deltaCode*/,
571  'S' /*letter*/,
572  },
573  // Rule AW 2007 2008 - Oct lastSun 2:00s 1:00 D
574  {
575  7 /*fromYearTiny*/,
576  8 /*toYearTiny*/,
577  10 /*inMonth*/,
578  7 /*onDayOfWeek*/,
579  0 /*onDayOfMonth*/,
580  8 /*atTimeCode*/,
581  's' /*atTimeModifier*/,
582  4 /*deltaCode*/,
583  'D' /*letter*/,
584  },
585 
586 };
587 
588 
589 
590 const extended::ZonePolicy kPolicyAW ACE_TIME_PROGMEM = {
591  4 /*numRules*/,
592  kZoneRulesAW /*rules*/,
593  0 /* numLetters */,
594  nullptr /* letters */,
595 };
596 
597 //---------------------------------------------------------------------------
598 // Policy name: Arg
599 // Rules: 6
600 // Memory (8-bit): 60
601 // Memory (32-bit): 64
602 //---------------------------------------------------------------------------
603 
604 static const extended::ZoneRule kZoneRulesArg[] ACE_TIME_PROGMEM = {
605  // Rule Arg 1989 1993 - Mar Sun>=1 0:00 0 -
606  {
607  -11 /*fromYearTiny*/,
608  -7 /*toYearTiny*/,
609  3 /*inMonth*/,
610  7 /*onDayOfWeek*/,
611  1 /*onDayOfMonth*/,
612  0 /*atTimeCode*/,
613  'w' /*atTimeModifier*/,
614  0 /*deltaCode*/,
615  '-' /*letter*/,
616  },
617  // Rule Arg 1999 only - Oct Sun>=1 0:00 1:00 -
618  {
619  -1 /*fromYearTiny*/,
620  -1 /*toYearTiny*/,
621  10 /*inMonth*/,
622  7 /*onDayOfWeek*/,
623  1 /*onDayOfMonth*/,
624  0 /*atTimeCode*/,
625  'w' /*atTimeModifier*/,
626  4 /*deltaCode*/,
627  '-' /*letter*/,
628  },
629  // Rule Arg 2000 only - Mar 3 0:00 0 -
630  {
631  0 /*fromYearTiny*/,
632  0 /*toYearTiny*/,
633  3 /*inMonth*/,
634  0 /*onDayOfWeek*/,
635  3 /*onDayOfMonth*/,
636  0 /*atTimeCode*/,
637  'w' /*atTimeModifier*/,
638  0 /*deltaCode*/,
639  '-' /*letter*/,
640  },
641  // Rule Arg 2007 only - Dec 30 0:00 1:00 -
642  {
643  7 /*fromYearTiny*/,
644  7 /*toYearTiny*/,
645  12 /*inMonth*/,
646  0 /*onDayOfWeek*/,
647  30 /*onDayOfMonth*/,
648  0 /*atTimeCode*/,
649  'w' /*atTimeModifier*/,
650  4 /*deltaCode*/,
651  '-' /*letter*/,
652  },
653  // Rule Arg 2008 2009 - Mar Sun>=15 0:00 0 -
654  {
655  8 /*fromYearTiny*/,
656  9 /*toYearTiny*/,
657  3 /*inMonth*/,
658  7 /*onDayOfWeek*/,
659  15 /*onDayOfMonth*/,
660  0 /*atTimeCode*/,
661  'w' /*atTimeModifier*/,
662  0 /*deltaCode*/,
663  '-' /*letter*/,
664  },
665  // Rule Arg 2008 only - Oct Sun>=15 0:00 1:00 -
666  {
667  8 /*fromYearTiny*/,
668  8 /*toYearTiny*/,
669  10 /*inMonth*/,
670  7 /*onDayOfWeek*/,
671  15 /*onDayOfMonth*/,
672  0 /*atTimeCode*/,
673  'w' /*atTimeModifier*/,
674  4 /*deltaCode*/,
675  '-' /*letter*/,
676  },
677 
678 };
679 
680 
681 
682 const extended::ZonePolicy kPolicyArg ACE_TIME_PROGMEM = {
683  6 /*numRules*/,
684  kZoneRulesArg /*rules*/,
685  0 /* numLetters */,
686  nullptr /* letters */,
687 };
688 
689 //---------------------------------------------------------------------------
690 // Policy name: Armenia
691 // Rules: 3
692 // Memory (8-bit): 33
693 // Memory (32-bit): 37
694 //---------------------------------------------------------------------------
695 
696 static const extended::ZoneRule kZoneRulesArmenia[] ACE_TIME_PROGMEM = {
697  // Anchor: Rule Armenia 2011 only - Oct lastSun 2:00s 0 -
698  {
699  -127 /*fromYearTiny*/,
700  -127 /*toYearTiny*/,
701  1 /*inMonth*/,
702  0 /*onDayOfWeek*/,
703  1 /*onDayOfMonth*/,
704  0 /*atTimeCode*/,
705  'w' /*atTimeModifier*/,
706  0 /*deltaCode*/,
707  '-' /*letter*/,
708  },
709  // Rule Armenia 2011 only - Mar lastSun 2:00s 1:00 -
710  {
711  11 /*fromYearTiny*/,
712  11 /*toYearTiny*/,
713  3 /*inMonth*/,
714  7 /*onDayOfWeek*/,
715  0 /*onDayOfMonth*/,
716  8 /*atTimeCode*/,
717  's' /*atTimeModifier*/,
718  4 /*deltaCode*/,
719  '-' /*letter*/,
720  },
721  // Rule Armenia 2011 only - Oct lastSun 2:00s 0 -
722  {
723  11 /*fromYearTiny*/,
724  11 /*toYearTiny*/,
725  10 /*inMonth*/,
726  7 /*onDayOfWeek*/,
727  0 /*onDayOfMonth*/,
728  8 /*atTimeCode*/,
729  's' /*atTimeModifier*/,
730  0 /*deltaCode*/,
731  '-' /*letter*/,
732  },
733 
734 };
735 
736 
737 
738 const extended::ZonePolicy kPolicyArmenia ACE_TIME_PROGMEM = {
739  3 /*numRules*/,
740  kZoneRulesArmenia /*rules*/,
741  0 /* numLetters */,
742  nullptr /* letters */,
743 };
744 
745 //---------------------------------------------------------------------------
746 // Policy name: Aus
747 // Rules: 1
748 // Memory (8-bit): 15
749 // Memory (32-bit): 19
750 //---------------------------------------------------------------------------
751 
752 static const extended::ZoneRule kZoneRulesAus[] ACE_TIME_PROGMEM = {
753  // Rule Aus 1943 1944 - Mar lastSun 2:00 0 S
754  {
755  -57 /*fromYearTiny*/,
756  -56 /*toYearTiny*/,
757  3 /*inMonth*/,
758  7 /*onDayOfWeek*/,
759  0 /*onDayOfMonth*/,
760  8 /*atTimeCode*/,
761  'w' /*atTimeModifier*/,
762  0 /*deltaCode*/,
763  'S' /*letter*/,
764  },
765 
766 };
767 
768 
769 
770 const extended::ZonePolicy kPolicyAus ACE_TIME_PROGMEM = {
771  1 /*numRules*/,
772  kZoneRulesAus /*rules*/,
773  0 /* numLetters */,
774  nullptr /* letters */,
775 };
776 
777 //---------------------------------------------------------------------------
778 // Policy name: Azer
779 // Rules: 2
780 // Memory (8-bit): 24
781 // Memory (32-bit): 28
782 //---------------------------------------------------------------------------
783 
784 static const extended::ZoneRule kZoneRulesAzer[] ACE_TIME_PROGMEM = {
785  // Rule Azer 1997 2015 - Mar lastSun 4:00 1:00 -
786  {
787  -3 /*fromYearTiny*/,
788  15 /*toYearTiny*/,
789  3 /*inMonth*/,
790  7 /*onDayOfWeek*/,
791  0 /*onDayOfMonth*/,
792  16 /*atTimeCode*/,
793  'w' /*atTimeModifier*/,
794  4 /*deltaCode*/,
795  '-' /*letter*/,
796  },
797  // Rule Azer 1997 2015 - Oct lastSun 5:00 0 -
798  {
799  -3 /*fromYearTiny*/,
800  15 /*toYearTiny*/,
801  10 /*inMonth*/,
802  7 /*onDayOfWeek*/,
803  0 /*onDayOfMonth*/,
804  20 /*atTimeCode*/,
805  'w' /*atTimeModifier*/,
806  0 /*deltaCode*/,
807  '-' /*letter*/,
808  },
809 
810 };
811 
812 
813 
814 const extended::ZonePolicy kPolicyAzer ACE_TIME_PROGMEM = {
815  2 /*numRules*/,
816  kZoneRulesAzer /*rules*/,
817  0 /* numLetters */,
818  nullptr /* letters */,
819 };
820 
821 //---------------------------------------------------------------------------
822 // Policy name: Barb
823 // Rules: 1
824 // Memory (8-bit): 15
825 // Memory (32-bit): 19
826 //---------------------------------------------------------------------------
827 
828 static const extended::ZoneRule kZoneRulesBarb[] ACE_TIME_PROGMEM = {
829  // Rule Barb 1980 only - Sep 25 2:00 0 S
830  {
831  -20 /*fromYearTiny*/,
832  -20 /*toYearTiny*/,
833  9 /*inMonth*/,
834  0 /*onDayOfWeek*/,
835  25 /*onDayOfMonth*/,
836  8 /*atTimeCode*/,
837  'w' /*atTimeModifier*/,
838  0 /*deltaCode*/,
839  'S' /*letter*/,
840  },
841 
842 };
843 
844 
845 
846 const extended::ZonePolicy kPolicyBarb ACE_TIME_PROGMEM = {
847  1 /*numRules*/,
848  kZoneRulesBarb /*rules*/,
849  0 /* numLetters */,
850  nullptr /* letters */,
851 };
852 
853 //---------------------------------------------------------------------------
854 // Policy name: Belize
855 // Rules: 1
856 // Memory (8-bit): 21
857 // Memory (32-bit): 27
858 //---------------------------------------------------------------------------
859 
860 static const extended::ZoneRule kZoneRulesBelize[] ACE_TIME_PROGMEM = {
861  // Rule Belize 1983 only - Feb 12 0:00 0 CST
862  {
863  -17 /*fromYearTiny*/,
864  -17 /*toYearTiny*/,
865  2 /*inMonth*/,
866  0 /*onDayOfWeek*/,
867  12 /*onDayOfMonth*/,
868  0 /*atTimeCode*/,
869  'w' /*atTimeModifier*/,
870  0 /*deltaCode*/,
871  0 /*letter; "CST"*/,
872  },
873 
874 };
875 
876 static const char* const kLettersBelize[] ACE_TIME_PROGMEM = {
877  /*0*/ "CST",
878 
879 };
880 
881 
882 const extended::ZonePolicy kPolicyBelize ACE_TIME_PROGMEM = {
883  1 /*numRules*/,
884  kZoneRulesBelize /*rules*/,
885  1 /* numLetters */,
886  kLettersBelize /* letters */,
887 };
888 
889 //---------------------------------------------------------------------------
890 // Policy name: Brazil
891 // Rules: 28
892 // Memory (8-bit): 258
893 // Memory (32-bit): 262
894 //---------------------------------------------------------------------------
895 
896 static const extended::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = {
897  // Rule Brazil 1998 only - Oct 11 0:00 1:00 -
898  {
899  -2 /*fromYearTiny*/,
900  -2 /*toYearTiny*/,
901  10 /*inMonth*/,
902  0 /*onDayOfWeek*/,
903  11 /*onDayOfMonth*/,
904  0 /*atTimeCode*/,
905  'w' /*atTimeModifier*/,
906  4 /*deltaCode*/,
907  '-' /*letter*/,
908  },
909  // Rule Brazil 1999 only - Feb 21 0:00 0 -
910  {
911  -1 /*fromYearTiny*/,
912  -1 /*toYearTiny*/,
913  2 /*inMonth*/,
914  0 /*onDayOfWeek*/,
915  21 /*onDayOfMonth*/,
916  0 /*atTimeCode*/,
917  'w' /*atTimeModifier*/,
918  0 /*deltaCode*/,
919  '-' /*letter*/,
920  },
921  // Rule Brazil 1999 only - Oct 3 0:00 1:00 -
922  {
923  -1 /*fromYearTiny*/,
924  -1 /*toYearTiny*/,
925  10 /*inMonth*/,
926  0 /*onDayOfWeek*/,
927  3 /*onDayOfMonth*/,
928  0 /*atTimeCode*/,
929  'w' /*atTimeModifier*/,
930  4 /*deltaCode*/,
931  '-' /*letter*/,
932  },
933  // Rule Brazil 2000 only - Feb 27 0:00 0 -
934  {
935  0 /*fromYearTiny*/,
936  0 /*toYearTiny*/,
937  2 /*inMonth*/,
938  0 /*onDayOfWeek*/,
939  27 /*onDayOfMonth*/,
940  0 /*atTimeCode*/,
941  'w' /*atTimeModifier*/,
942  0 /*deltaCode*/,
943  '-' /*letter*/,
944  },
945  // Rule Brazil 2000 2001 - Oct Sun>=8 0:00 1:00 -
946  {
947  0 /*fromYearTiny*/,
948  1 /*toYearTiny*/,
949  10 /*inMonth*/,
950  7 /*onDayOfWeek*/,
951  8 /*onDayOfMonth*/,
952  0 /*atTimeCode*/,
953  'w' /*atTimeModifier*/,
954  4 /*deltaCode*/,
955  '-' /*letter*/,
956  },
957  // Rule Brazil 2001 2006 - Feb Sun>=15 0:00 0 -
958  {
959  1 /*fromYearTiny*/,
960  6 /*toYearTiny*/,
961  2 /*inMonth*/,
962  7 /*onDayOfWeek*/,
963  15 /*onDayOfMonth*/,
964  0 /*atTimeCode*/,
965  'w' /*atTimeModifier*/,
966  0 /*deltaCode*/,
967  '-' /*letter*/,
968  },
969  // Rule Brazil 2002 only - Nov 3 0:00 1:00 -
970  {
971  2 /*fromYearTiny*/,
972  2 /*toYearTiny*/,
973  11 /*inMonth*/,
974  0 /*onDayOfWeek*/,
975  3 /*onDayOfMonth*/,
976  0 /*atTimeCode*/,
977  'w' /*atTimeModifier*/,
978  4 /*deltaCode*/,
979  '-' /*letter*/,
980  },
981  // Rule Brazil 2003 only - Oct 19 0:00 1:00 -
982  {
983  3 /*fromYearTiny*/,
984  3 /*toYearTiny*/,
985  10 /*inMonth*/,
986  0 /*onDayOfWeek*/,
987  19 /*onDayOfMonth*/,
988  0 /*atTimeCode*/,
989  'w' /*atTimeModifier*/,
990  4 /*deltaCode*/,
991  '-' /*letter*/,
992  },
993  // Rule Brazil 2004 only - Nov 2 0:00 1:00 -
994  {
995  4 /*fromYearTiny*/,
996  4 /*toYearTiny*/,
997  11 /*inMonth*/,
998  0 /*onDayOfWeek*/,
999  2 /*onDayOfMonth*/,
1000  0 /*atTimeCode*/,
1001  'w' /*atTimeModifier*/,
1002  4 /*deltaCode*/,
1003  '-' /*letter*/,
1004  },
1005  // Rule Brazil 2005 only - Oct 16 0:00 1:00 -
1006  {
1007  5 /*fromYearTiny*/,
1008  5 /*toYearTiny*/,
1009  10 /*inMonth*/,
1010  0 /*onDayOfWeek*/,
1011  16 /*onDayOfMonth*/,
1012  0 /*atTimeCode*/,
1013  'w' /*atTimeModifier*/,
1014  4 /*deltaCode*/,
1015  '-' /*letter*/,
1016  },
1017  // Rule Brazil 2006 only - Nov 5 0:00 1:00 -
1018  {
1019  6 /*fromYearTiny*/,
1020  6 /*toYearTiny*/,
1021  11 /*inMonth*/,
1022  0 /*onDayOfWeek*/,
1023  5 /*onDayOfMonth*/,
1024  0 /*atTimeCode*/,
1025  'w' /*atTimeModifier*/,
1026  4 /*deltaCode*/,
1027  '-' /*letter*/,
1028  },
1029  // Rule Brazil 2007 only - Feb 25 0:00 0 -
1030  {
1031  7 /*fromYearTiny*/,
1032  7 /*toYearTiny*/,
1033  2 /*inMonth*/,
1034  0 /*onDayOfWeek*/,
1035  25 /*onDayOfMonth*/,
1036  0 /*atTimeCode*/,
1037  'w' /*atTimeModifier*/,
1038  0 /*deltaCode*/,
1039  '-' /*letter*/,
1040  },
1041  // Rule Brazil 2007 only - Oct Sun>=8 0:00 1:00 -
1042  {
1043  7 /*fromYearTiny*/,
1044  7 /*toYearTiny*/,
1045  10 /*inMonth*/,
1046  7 /*onDayOfWeek*/,
1047  8 /*onDayOfMonth*/,
1048  0 /*atTimeCode*/,
1049  'w' /*atTimeModifier*/,
1050  4 /*deltaCode*/,
1051  '-' /*letter*/,
1052  },
1053  // Rule Brazil 2008 2017 - Oct Sun>=15 0:00 1:00 -
1054  {
1055  8 /*fromYearTiny*/,
1056  17 /*toYearTiny*/,
1057  10 /*inMonth*/,
1058  7 /*onDayOfWeek*/,
1059  15 /*onDayOfMonth*/,
1060  0 /*atTimeCode*/,
1061  'w' /*atTimeModifier*/,
1062  4 /*deltaCode*/,
1063  '-' /*letter*/,
1064  },
1065  // Rule Brazil 2008 2011 - Feb Sun>=15 0:00 0 -
1066  {
1067  8 /*fromYearTiny*/,
1068  11 /*toYearTiny*/,
1069  2 /*inMonth*/,
1070  7 /*onDayOfWeek*/,
1071  15 /*onDayOfMonth*/,
1072  0 /*atTimeCode*/,
1073  'w' /*atTimeModifier*/,
1074  0 /*deltaCode*/,
1075  '-' /*letter*/,
1076  },
1077  // Rule Brazil 2012 only - Feb Sun>=22 0:00 0 -
1078  {
1079  12 /*fromYearTiny*/,
1080  12 /*toYearTiny*/,
1081  2 /*inMonth*/,
1082  7 /*onDayOfWeek*/,
1083  22 /*onDayOfMonth*/,
1084  0 /*atTimeCode*/,
1085  'w' /*atTimeModifier*/,
1086  0 /*deltaCode*/,
1087  '-' /*letter*/,
1088  },
1089  // Rule Brazil 2013 2014 - Feb Sun>=15 0:00 0 -
1090  {
1091  13 /*fromYearTiny*/,
1092  14 /*toYearTiny*/,
1093  2 /*inMonth*/,
1094  7 /*onDayOfWeek*/,
1095  15 /*onDayOfMonth*/,
1096  0 /*atTimeCode*/,
1097  'w' /*atTimeModifier*/,
1098  0 /*deltaCode*/,
1099  '-' /*letter*/,
1100  },
1101  // Rule Brazil 2015 only - Feb Sun>=22 0:00 0 -
1102  {
1103  15 /*fromYearTiny*/,
1104  15 /*toYearTiny*/,
1105  2 /*inMonth*/,
1106  7 /*onDayOfWeek*/,
1107  22 /*onDayOfMonth*/,
1108  0 /*atTimeCode*/,
1109  'w' /*atTimeModifier*/,
1110  0 /*deltaCode*/,
1111  '-' /*letter*/,
1112  },
1113  // Rule Brazil 2016 2022 - Feb Sun>=15 0:00 0 -
1114  {
1115  16 /*fromYearTiny*/,
1116  22 /*toYearTiny*/,
1117  2 /*inMonth*/,
1118  7 /*onDayOfWeek*/,
1119  15 /*onDayOfMonth*/,
1120  0 /*atTimeCode*/,
1121  'w' /*atTimeModifier*/,
1122  0 /*deltaCode*/,
1123  '-' /*letter*/,
1124  },
1125  // Rule Brazil 2018 max - Nov Sun>=1 0:00 1:00 -
1126  {
1127  18 /*fromYearTiny*/,
1128  126 /*toYearTiny*/,
1129  11 /*inMonth*/,
1130  7 /*onDayOfWeek*/,
1131  1 /*onDayOfMonth*/,
1132  0 /*atTimeCode*/,
1133  'w' /*atTimeModifier*/,
1134  4 /*deltaCode*/,
1135  '-' /*letter*/,
1136  },
1137  // Rule Brazil 2023 only - Feb Sun>=22 0:00 0 -
1138  {
1139  23 /*fromYearTiny*/,
1140  23 /*toYearTiny*/,
1141  2 /*inMonth*/,
1142  7 /*onDayOfWeek*/,
1143  22 /*onDayOfMonth*/,
1144  0 /*atTimeCode*/,
1145  'w' /*atTimeModifier*/,
1146  0 /*deltaCode*/,
1147  '-' /*letter*/,
1148  },
1149  // Rule Brazil 2024 2025 - Feb Sun>=15 0:00 0 -
1150  {
1151  24 /*fromYearTiny*/,
1152  25 /*toYearTiny*/,
1153  2 /*inMonth*/,
1154  7 /*onDayOfWeek*/,
1155  15 /*onDayOfMonth*/,
1156  0 /*atTimeCode*/,
1157  'w' /*atTimeModifier*/,
1158  0 /*deltaCode*/,
1159  '-' /*letter*/,
1160  },
1161  // Rule Brazil 2026 only - Feb Sun>=22 0:00 0 -
1162  {
1163  26 /*fromYearTiny*/,
1164  26 /*toYearTiny*/,
1165  2 /*inMonth*/,
1166  7 /*onDayOfWeek*/,
1167  22 /*onDayOfMonth*/,
1168  0 /*atTimeCode*/,
1169  'w' /*atTimeModifier*/,
1170  0 /*deltaCode*/,
1171  '-' /*letter*/,
1172  },
1173  // Rule Brazil 2027 2033 - Feb Sun>=15 0:00 0 -
1174  {
1175  27 /*fromYearTiny*/,
1176  33 /*toYearTiny*/,
1177  2 /*inMonth*/,
1178  7 /*onDayOfWeek*/,
1179  15 /*onDayOfMonth*/,
1180  0 /*atTimeCode*/,
1181  'w' /*atTimeModifier*/,
1182  0 /*deltaCode*/,
1183  '-' /*letter*/,
1184  },
1185  // Rule Brazil 2034 only - Feb Sun>=22 0:00 0 -
1186  {
1187  34 /*fromYearTiny*/,
1188  34 /*toYearTiny*/,
1189  2 /*inMonth*/,
1190  7 /*onDayOfWeek*/,
1191  22 /*onDayOfMonth*/,
1192  0 /*atTimeCode*/,
1193  'w' /*atTimeModifier*/,
1194  0 /*deltaCode*/,
1195  '-' /*letter*/,
1196  },
1197  // Rule Brazil 2035 2036 - Feb Sun>=15 0:00 0 -
1198  {
1199  35 /*fromYearTiny*/,
1200  36 /*toYearTiny*/,
1201  2 /*inMonth*/,
1202  7 /*onDayOfWeek*/,
1203  15 /*onDayOfMonth*/,
1204  0 /*atTimeCode*/,
1205  'w' /*atTimeModifier*/,
1206  0 /*deltaCode*/,
1207  '-' /*letter*/,
1208  },
1209  // Rule Brazil 2037 only - Feb Sun>=22 0:00 0 -
1210  {
1211  37 /*fromYearTiny*/,
1212  37 /*toYearTiny*/,
1213  2 /*inMonth*/,
1214  7 /*onDayOfWeek*/,
1215  22 /*onDayOfMonth*/,
1216  0 /*atTimeCode*/,
1217  'w' /*atTimeModifier*/,
1218  0 /*deltaCode*/,
1219  '-' /*letter*/,
1220  },
1221  // Rule Brazil 2038 max - Feb Sun>=15 0:00 0 -
1222  {
1223  38 /*fromYearTiny*/,
1224  126 /*toYearTiny*/,
1225  2 /*inMonth*/,
1226  7 /*onDayOfWeek*/,
1227  15 /*onDayOfMonth*/,
1228  0 /*atTimeCode*/,
1229  'w' /*atTimeModifier*/,
1230  0 /*deltaCode*/,
1231  '-' /*letter*/,
1232  },
1233 
1234 };
1235 
1236 
1237 
1238 const extended::ZonePolicy kPolicyBrazil ACE_TIME_PROGMEM = {
1239  28 /*numRules*/,
1240  kZoneRulesBrazil /*rules*/,
1241  0 /* numLetters */,
1242  nullptr /* letters */,
1243 };
1244 
1245 //---------------------------------------------------------------------------
1246 // Policy name: C_Eur
1247 // Rules: 3
1248 // Memory (8-bit): 33
1249 // Memory (32-bit): 37
1250 //---------------------------------------------------------------------------
1251 
1252 static const extended::ZoneRule kZoneRulesC_Eur[] ACE_TIME_PROGMEM = {
1253  // Rule C-Eur 1979 1995 - Sep lastSun 2:00s 0 -
1254  {
1255  -21 /*fromYearTiny*/,
1256  -5 /*toYearTiny*/,
1257  9 /*inMonth*/,
1258  7 /*onDayOfWeek*/,
1259  0 /*onDayOfMonth*/,
1260  8 /*atTimeCode*/,
1261  's' /*atTimeModifier*/,
1262  0 /*deltaCode*/,
1263  '-' /*letter*/,
1264  },
1265  // Rule C-Eur 1981 max - Mar lastSun 2:00s 1:00 S
1266  {
1267  -19 /*fromYearTiny*/,
1268  126 /*toYearTiny*/,
1269  3 /*inMonth*/,
1270  7 /*onDayOfWeek*/,
1271  0 /*onDayOfMonth*/,
1272  8 /*atTimeCode*/,
1273  's' /*atTimeModifier*/,
1274  4 /*deltaCode*/,
1275  'S' /*letter*/,
1276  },
1277  // Rule C-Eur 1996 max - Oct lastSun 2:00s 0 -
1278  {
1279  -4 /*fromYearTiny*/,
1280  126 /*toYearTiny*/,
1281  10 /*inMonth*/,
1282  7 /*onDayOfWeek*/,
1283  0 /*onDayOfMonth*/,
1284  8 /*atTimeCode*/,
1285  's' /*atTimeModifier*/,
1286  0 /*deltaCode*/,
1287  '-' /*letter*/,
1288  },
1289 
1290 };
1291 
1292 
1293 
1294 const extended::ZonePolicy kPolicyC_Eur ACE_TIME_PROGMEM = {
1295  3 /*numRules*/,
1296  kZoneRulesC_Eur /*rules*/,
1297  0 /* numLetters */,
1298  nullptr /* letters */,
1299 };
1300 
1301 //---------------------------------------------------------------------------
1302 // Policy name: CO
1303 // Rules: 1
1304 // Memory (8-bit): 15
1305 // Memory (32-bit): 19
1306 //---------------------------------------------------------------------------
1307 
1308 static const extended::ZoneRule kZoneRulesCO[] ACE_TIME_PROGMEM = {
1309  // Rule CO 1993 only - Apr 4 0:00 0 -
1310  {
1311  -7 /*fromYearTiny*/,
1312  -7 /*toYearTiny*/,
1313  4 /*inMonth*/,
1314  0 /*onDayOfWeek*/,
1315  4 /*onDayOfMonth*/,
1316  0 /*atTimeCode*/,
1317  'w' /*atTimeModifier*/,
1318  0 /*deltaCode*/,
1319  '-' /*letter*/,
1320  },
1321 
1322 };
1323 
1324 
1325 
1326 const extended::ZonePolicy kPolicyCO ACE_TIME_PROGMEM = {
1327  1 /*numRules*/,
1328  kZoneRulesCO /*rules*/,
1329  0 /* numLetters */,
1330  nullptr /* letters */,
1331 };
1332 
1333 //---------------------------------------------------------------------------
1334 // Policy name: CR
1335 // Rules: 1
1336 // Memory (8-bit): 15
1337 // Memory (32-bit): 19
1338 //---------------------------------------------------------------------------
1339 
1340 static const extended::ZoneRule kZoneRulesCR[] ACE_TIME_PROGMEM = {
1341  // Rule CR 1992 only - Mar 15 0:00 0 S
1342  {
1343  -8 /*fromYearTiny*/,
1344  -8 /*toYearTiny*/,
1345  3 /*inMonth*/,
1346  0 /*onDayOfWeek*/,
1347  15 /*onDayOfMonth*/,
1348  0 /*atTimeCode*/,
1349  'w' /*atTimeModifier*/,
1350  0 /*deltaCode*/,
1351  'S' /*letter*/,
1352  },
1353 
1354 };
1355 
1356 
1357 
1358 const extended::ZonePolicy kPolicyCR ACE_TIME_PROGMEM = {
1359  1 /*numRules*/,
1360  kZoneRulesCR /*rules*/,
1361  0 /* numLetters */,
1362  nullptr /* letters */,
1363 };
1364 
1365 //---------------------------------------------------------------------------
1366 // Policy name: Canada
1367 // Rules: 5
1368 // Memory (8-bit): 51
1369 // Memory (32-bit): 55
1370 //---------------------------------------------------------------------------
1371 
1372 static const extended::ZoneRule kZoneRulesCanada[] ACE_TIME_PROGMEM = {
1373  // Rule Canada 1974 1986 - Apr lastSun 2:00 1:00 D
1374  {
1375  -26 /*fromYearTiny*/,
1376  -14 /*toYearTiny*/,
1377  4 /*inMonth*/,
1378  7 /*onDayOfWeek*/,
1379  0 /*onDayOfMonth*/,
1380  8 /*atTimeCode*/,
1381  'w' /*atTimeModifier*/,
1382  4 /*deltaCode*/,
1383  'D' /*letter*/,
1384  },
1385  // Rule Canada 1974 2006 - Oct lastSun 2:00 0 S
1386  {
1387  -26 /*fromYearTiny*/,
1388  6 /*toYearTiny*/,
1389  10 /*inMonth*/,
1390  7 /*onDayOfWeek*/,
1391  0 /*onDayOfMonth*/,
1392  8 /*atTimeCode*/,
1393  'w' /*atTimeModifier*/,
1394  0 /*deltaCode*/,
1395  'S' /*letter*/,
1396  },
1397  // Rule Canada 1987 2006 - Apr Sun>=1 2:00 1:00 D
1398  {
1399  -13 /*fromYearTiny*/,
1400  6 /*toYearTiny*/,
1401  4 /*inMonth*/,
1402  7 /*onDayOfWeek*/,
1403  1 /*onDayOfMonth*/,
1404  8 /*atTimeCode*/,
1405  'w' /*atTimeModifier*/,
1406  4 /*deltaCode*/,
1407  'D' /*letter*/,
1408  },
1409  // Rule Canada 2007 max - Mar Sun>=8 2:00 1:00 D
1410  {
1411  7 /*fromYearTiny*/,
1412  126 /*toYearTiny*/,
1413  3 /*inMonth*/,
1414  7 /*onDayOfWeek*/,
1415  8 /*onDayOfMonth*/,
1416  8 /*atTimeCode*/,
1417  'w' /*atTimeModifier*/,
1418  4 /*deltaCode*/,
1419  'D' /*letter*/,
1420  },
1421  // Rule Canada 2007 max - Nov Sun>=1 2:00 0 S
1422  {
1423  7 /*fromYearTiny*/,
1424  126 /*toYearTiny*/,
1425  11 /*inMonth*/,
1426  7 /*onDayOfWeek*/,
1427  1 /*onDayOfMonth*/,
1428  8 /*atTimeCode*/,
1429  'w' /*atTimeModifier*/,
1430  0 /*deltaCode*/,
1431  'S' /*letter*/,
1432  },
1433 
1434 };
1435 
1436 
1437 
1438 const extended::ZonePolicy kPolicyCanada ACE_TIME_PROGMEM = {
1439  5 /*numRules*/,
1440  kZoneRulesCanada /*rules*/,
1441  0 /* numLetters */,
1442  nullptr /* letters */,
1443 };
1444 
1445 //---------------------------------------------------------------------------
1446 // Policy name: Chatham
1447 // Rules: 5
1448 // Memory (8-bit): 51
1449 // Memory (32-bit): 55
1450 //---------------------------------------------------------------------------
1451 
1452 static const extended::ZoneRule kZoneRulesChatham[] ACE_TIME_PROGMEM = {
1453  // Rule Chatham 1989 only - Oct Sun>=8 2:45s 1:00 -
1454  {
1455  -11 /*fromYearTiny*/,
1456  -11 /*toYearTiny*/,
1457  10 /*inMonth*/,
1458  7 /*onDayOfWeek*/,
1459  8 /*onDayOfMonth*/,
1460  11 /*atTimeCode*/,
1461  's' /*atTimeModifier*/,
1462  4 /*deltaCode*/,
1463  '-' /*letter*/,
1464  },
1465  // Rule Chatham 1990 2006 - Oct Sun>=1 2:45s 1:00 -
1466  {
1467  -10 /*fromYearTiny*/,
1468  6 /*toYearTiny*/,
1469  10 /*inMonth*/,
1470  7 /*onDayOfWeek*/,
1471  1 /*onDayOfMonth*/,
1472  11 /*atTimeCode*/,
1473  's' /*atTimeModifier*/,
1474  4 /*deltaCode*/,
1475  '-' /*letter*/,
1476  },
1477  // Rule Chatham 1990 2007 - Mar Sun>=15 2:45s 0 -
1478  {
1479  -10 /*fromYearTiny*/,
1480  7 /*toYearTiny*/,
1481  3 /*inMonth*/,
1482  7 /*onDayOfWeek*/,
1483  15 /*onDayOfMonth*/,
1484  11 /*atTimeCode*/,
1485  's' /*atTimeModifier*/,
1486  0 /*deltaCode*/,
1487  '-' /*letter*/,
1488  },
1489  // Rule Chatham 2007 max - Sep lastSun 2:45s 1:00 -
1490  {
1491  7 /*fromYearTiny*/,
1492  126 /*toYearTiny*/,
1493  9 /*inMonth*/,
1494  7 /*onDayOfWeek*/,
1495  0 /*onDayOfMonth*/,
1496  11 /*atTimeCode*/,
1497  's' /*atTimeModifier*/,
1498  4 /*deltaCode*/,
1499  '-' /*letter*/,
1500  },
1501  // Rule Chatham 2008 max - Apr Sun>=1 2:45s 0 -
1502  {
1503  8 /*fromYearTiny*/,
1504  126 /*toYearTiny*/,
1505  4 /*inMonth*/,
1506  7 /*onDayOfWeek*/,
1507  1 /*onDayOfMonth*/,
1508  11 /*atTimeCode*/,
1509  's' /*atTimeModifier*/,
1510  0 /*deltaCode*/,
1511  '-' /*letter*/,
1512  },
1513 
1514 };
1515 
1516 
1517 
1518 const extended::ZonePolicy kPolicyChatham ACE_TIME_PROGMEM = {
1519  5 /*numRules*/,
1520  kZoneRulesChatham /*rules*/,
1521  0 /* numLetters */,
1522  nullptr /* letters */,
1523 };
1524 
1525 //---------------------------------------------------------------------------
1526 // Policy name: Chile
1527 // Rules: 15
1528 // Memory (8-bit): 141
1529 // Memory (32-bit): 145
1530 //---------------------------------------------------------------------------
1531 
1532 static const extended::ZoneRule kZoneRulesChile[] ACE_TIME_PROGMEM = {
1533  // Rule Chile 1998 only - Sep 27 4:00u 1:00 -
1534  {
1535  -2 /*fromYearTiny*/,
1536  -2 /*toYearTiny*/,
1537  9 /*inMonth*/,
1538  0 /*onDayOfWeek*/,
1539  27 /*onDayOfMonth*/,
1540  16 /*atTimeCode*/,
1541  'u' /*atTimeModifier*/,
1542  4 /*deltaCode*/,
1543  '-' /*letter*/,
1544  },
1545  // Rule Chile 1999 only - Apr 4 3:00u 0 -
1546  {
1547  -1 /*fromYearTiny*/,
1548  -1 /*toYearTiny*/,
1549  4 /*inMonth*/,
1550  0 /*onDayOfWeek*/,
1551  4 /*onDayOfMonth*/,
1552  12 /*atTimeCode*/,
1553  'u' /*atTimeModifier*/,
1554  0 /*deltaCode*/,
1555  '-' /*letter*/,
1556  },
1557  // Rule Chile 1999 2010 - Oct Sun>=9 4:00u 1:00 -
1558  {
1559  -1 /*fromYearTiny*/,
1560  10 /*toYearTiny*/,
1561  10 /*inMonth*/,
1562  7 /*onDayOfWeek*/,
1563  9 /*onDayOfMonth*/,
1564  16 /*atTimeCode*/,
1565  'u' /*atTimeModifier*/,
1566  4 /*deltaCode*/,
1567  '-' /*letter*/,
1568  },
1569  // Rule Chile 2000 2007 - Mar Sun>=9 3:00u 0 -
1570  {
1571  0 /*fromYearTiny*/,
1572  7 /*toYearTiny*/,
1573  3 /*inMonth*/,
1574  7 /*onDayOfWeek*/,
1575  9 /*onDayOfMonth*/,
1576  12 /*atTimeCode*/,
1577  'u' /*atTimeModifier*/,
1578  0 /*deltaCode*/,
1579  '-' /*letter*/,
1580  },
1581  // Rule Chile 2008 only - Mar 30 3:00u 0 -
1582  {
1583  8 /*fromYearTiny*/,
1584  8 /*toYearTiny*/,
1585  3 /*inMonth*/,
1586  0 /*onDayOfWeek*/,
1587  30 /*onDayOfMonth*/,
1588  12 /*atTimeCode*/,
1589  'u' /*atTimeModifier*/,
1590  0 /*deltaCode*/,
1591  '-' /*letter*/,
1592  },
1593  // Rule Chile 2009 only - Mar Sun>=9 3:00u 0 -
1594  {
1595  9 /*fromYearTiny*/,
1596  9 /*toYearTiny*/,
1597  3 /*inMonth*/,
1598  7 /*onDayOfWeek*/,
1599  9 /*onDayOfMonth*/,
1600  12 /*atTimeCode*/,
1601  'u' /*atTimeModifier*/,
1602  0 /*deltaCode*/,
1603  '-' /*letter*/,
1604  },
1605  // Rule Chile 2010 only - Apr Sun>=1 3:00u 0 -
1606  {
1607  10 /*fromYearTiny*/,
1608  10 /*toYearTiny*/,
1609  4 /*inMonth*/,
1610  7 /*onDayOfWeek*/,
1611  1 /*onDayOfMonth*/,
1612  12 /*atTimeCode*/,
1613  'u' /*atTimeModifier*/,
1614  0 /*deltaCode*/,
1615  '-' /*letter*/,
1616  },
1617  // Rule Chile 2011 only - May Sun>=2 3:00u 0 -
1618  {
1619  11 /*fromYearTiny*/,
1620  11 /*toYearTiny*/,
1621  5 /*inMonth*/,
1622  7 /*onDayOfWeek*/,
1623  2 /*onDayOfMonth*/,
1624  12 /*atTimeCode*/,
1625  'u' /*atTimeModifier*/,
1626  0 /*deltaCode*/,
1627  '-' /*letter*/,
1628  },
1629  // Rule Chile 2011 only - Aug Sun>=16 4:00u 1:00 -
1630  {
1631  11 /*fromYearTiny*/,
1632  11 /*toYearTiny*/,
1633  8 /*inMonth*/,
1634  7 /*onDayOfWeek*/,
1635  16 /*onDayOfMonth*/,
1636  16 /*atTimeCode*/,
1637  'u' /*atTimeModifier*/,
1638  4 /*deltaCode*/,
1639  '-' /*letter*/,
1640  },
1641  // Rule Chile 2012 2014 - Apr Sun>=23 3:00u 0 -
1642  {
1643  12 /*fromYearTiny*/,
1644  14 /*toYearTiny*/,
1645  4 /*inMonth*/,
1646  7 /*onDayOfWeek*/,
1647  23 /*onDayOfMonth*/,
1648  12 /*atTimeCode*/,
1649  'u' /*atTimeModifier*/,
1650  0 /*deltaCode*/,
1651  '-' /*letter*/,
1652  },
1653  // Rule Chile 2012 2014 - Sep Sun>=2 4:00u 1:00 -
1654  {
1655  12 /*fromYearTiny*/,
1656  14 /*toYearTiny*/,
1657  9 /*inMonth*/,
1658  7 /*onDayOfWeek*/,
1659  2 /*onDayOfMonth*/,
1660  16 /*atTimeCode*/,
1661  'u' /*atTimeModifier*/,
1662  4 /*deltaCode*/,
1663  '-' /*letter*/,
1664  },
1665  // Rule Chile 2016 2018 - May Sun>=9 3:00u 0 -
1666  {
1667  16 /*fromYearTiny*/,
1668  18 /*toYearTiny*/,
1669  5 /*inMonth*/,
1670  7 /*onDayOfWeek*/,
1671  9 /*onDayOfMonth*/,
1672  12 /*atTimeCode*/,
1673  'u' /*atTimeModifier*/,
1674  0 /*deltaCode*/,
1675  '-' /*letter*/,
1676  },
1677  // Rule Chile 2016 2018 - Aug Sun>=9 4:00u 1:00 -
1678  {
1679  16 /*fromYearTiny*/,
1680  18 /*toYearTiny*/,
1681  8 /*inMonth*/,
1682  7 /*onDayOfWeek*/,
1683  9 /*onDayOfMonth*/,
1684  16 /*atTimeCode*/,
1685  'u' /*atTimeModifier*/,
1686  4 /*deltaCode*/,
1687  '-' /*letter*/,
1688  },
1689  // Rule Chile 2019 max - Apr Sun>=2 3:00u 0 -
1690  {
1691  19 /*fromYearTiny*/,
1692  126 /*toYearTiny*/,
1693  4 /*inMonth*/,
1694  7 /*onDayOfWeek*/,
1695  2 /*onDayOfMonth*/,
1696  12 /*atTimeCode*/,
1697  'u' /*atTimeModifier*/,
1698  0 /*deltaCode*/,
1699  '-' /*letter*/,
1700  },
1701  // Rule Chile 2019 max - Sep Sun>=2 4:00u 1:00 -
1702  {
1703  19 /*fromYearTiny*/,
1704  126 /*toYearTiny*/,
1705  9 /*inMonth*/,
1706  7 /*onDayOfWeek*/,
1707  2 /*onDayOfMonth*/,
1708  16 /*atTimeCode*/,
1709  'u' /*atTimeModifier*/,
1710  4 /*deltaCode*/,
1711  '-' /*letter*/,
1712  },
1713 
1714 };
1715 
1716 
1717 
1718 const extended::ZonePolicy kPolicyChile ACE_TIME_PROGMEM = {
1719  15 /*numRules*/,
1720  kZoneRulesChile /*rules*/,
1721  0 /* numLetters */,
1722  nullptr /* letters */,
1723 };
1724 
1725 //---------------------------------------------------------------------------
1726 // Policy name: Cook
1727 // Rules: 1
1728 // Memory (8-bit): 15
1729 // Memory (32-bit): 19
1730 //---------------------------------------------------------------------------
1731 
1732 static const extended::ZoneRule kZoneRulesCook[] ACE_TIME_PROGMEM = {
1733  // Rule Cook 1979 1991 - Mar Sun>=1 0:00 0 -
1734  {
1735  -21 /*fromYearTiny*/,
1736  -9 /*toYearTiny*/,
1737  3 /*inMonth*/,
1738  7 /*onDayOfWeek*/,
1739  1 /*onDayOfMonth*/,
1740  0 /*atTimeCode*/,
1741  'w' /*atTimeModifier*/,
1742  0 /*deltaCode*/,
1743  '-' /*letter*/,
1744  },
1745 
1746 };
1747 
1748 
1749 
1750 const extended::ZonePolicy kPolicyCook ACE_TIME_PROGMEM = {
1751  1 /*numRules*/,
1752  kZoneRulesCook /*rules*/,
1753  0 /* numLetters */,
1754  nullptr /* letters */,
1755 };
1756 
1757 //---------------------------------------------------------------------------
1758 // Policy name: Cuba
1759 // Rules: 14
1760 // Memory (8-bit): 132
1761 // Memory (32-bit): 136
1762 //---------------------------------------------------------------------------
1763 
1764 static const extended::ZoneRule kZoneRulesCuba[] ACE_TIME_PROGMEM = {
1765  // Rule Cuba 1997 only - Oct 12 0:00s 0 S
1766  {
1767  -3 /*fromYearTiny*/,
1768  -3 /*toYearTiny*/,
1769  10 /*inMonth*/,
1770  0 /*onDayOfWeek*/,
1771  12 /*onDayOfMonth*/,
1772  0 /*atTimeCode*/,
1773  's' /*atTimeModifier*/,
1774  0 /*deltaCode*/,
1775  'S' /*letter*/,
1776  },
1777  // Rule Cuba 1998 1999 - Mar lastSun 0:00s 1:00 D
1778  {
1779  -2 /*fromYearTiny*/,
1780  -1 /*toYearTiny*/,
1781  3 /*inMonth*/,
1782  7 /*onDayOfWeek*/,
1783  0 /*onDayOfMonth*/,
1784  0 /*atTimeCode*/,
1785  's' /*atTimeModifier*/,
1786  4 /*deltaCode*/,
1787  'D' /*letter*/,
1788  },
1789  // Rule Cuba 1998 2003 - Oct lastSun 0:00s 0 S
1790  {
1791  -2 /*fromYearTiny*/,
1792  3 /*toYearTiny*/,
1793  10 /*inMonth*/,
1794  7 /*onDayOfWeek*/,
1795  0 /*onDayOfMonth*/,
1796  0 /*atTimeCode*/,
1797  's' /*atTimeModifier*/,
1798  0 /*deltaCode*/,
1799  'S' /*letter*/,
1800  },
1801  // Rule Cuba 2000 2003 - Apr Sun>=1 0:00s 1:00 D
1802  {
1803  0 /*fromYearTiny*/,
1804  3 /*toYearTiny*/,
1805  4 /*inMonth*/,
1806  7 /*onDayOfWeek*/,
1807  1 /*onDayOfMonth*/,
1808  0 /*atTimeCode*/,
1809  's' /*atTimeModifier*/,
1810  4 /*deltaCode*/,
1811  'D' /*letter*/,
1812  },
1813  // Rule Cuba 2004 only - Mar lastSun 0:00s 1:00 D
1814  {
1815  4 /*fromYearTiny*/,
1816  4 /*toYearTiny*/,
1817  3 /*inMonth*/,
1818  7 /*onDayOfWeek*/,
1819  0 /*onDayOfMonth*/,
1820  0 /*atTimeCode*/,
1821  's' /*atTimeModifier*/,
1822  4 /*deltaCode*/,
1823  'D' /*letter*/,
1824  },
1825  // Rule Cuba 2006 2010 - Oct lastSun 0:00s 0 S
1826  {
1827  6 /*fromYearTiny*/,
1828  10 /*toYearTiny*/,
1829  10 /*inMonth*/,
1830  7 /*onDayOfWeek*/,
1831  0 /*onDayOfMonth*/,
1832  0 /*atTimeCode*/,
1833  's' /*atTimeModifier*/,
1834  0 /*deltaCode*/,
1835  'S' /*letter*/,
1836  },
1837  // Rule Cuba 2007 only - Mar Sun>=8 0:00s 1:00 D
1838  {
1839  7 /*fromYearTiny*/,
1840  7 /*toYearTiny*/,
1841  3 /*inMonth*/,
1842  7 /*onDayOfWeek*/,
1843  8 /*onDayOfMonth*/,
1844  0 /*atTimeCode*/,
1845  's' /*atTimeModifier*/,
1846  4 /*deltaCode*/,
1847  'D' /*letter*/,
1848  },
1849  // Rule Cuba 2008 only - Mar Sun>=15 0:00s 1:00 D
1850  {
1851  8 /*fromYearTiny*/,
1852  8 /*toYearTiny*/,
1853  3 /*inMonth*/,
1854  7 /*onDayOfWeek*/,
1855  15 /*onDayOfMonth*/,
1856  0 /*atTimeCode*/,
1857  's' /*atTimeModifier*/,
1858  4 /*deltaCode*/,
1859  'D' /*letter*/,
1860  },
1861  // Rule Cuba 2009 2010 - Mar Sun>=8 0:00s 1:00 D
1862  {
1863  9 /*fromYearTiny*/,
1864  10 /*toYearTiny*/,
1865  3 /*inMonth*/,
1866  7 /*onDayOfWeek*/,
1867  8 /*onDayOfMonth*/,
1868  0 /*atTimeCode*/,
1869  's' /*atTimeModifier*/,
1870  4 /*deltaCode*/,
1871  'D' /*letter*/,
1872  },
1873  // Rule Cuba 2011 only - Mar Sun>=15 0:00s 1:00 D
1874  {
1875  11 /*fromYearTiny*/,
1876  11 /*toYearTiny*/,
1877  3 /*inMonth*/,
1878  7 /*onDayOfWeek*/,
1879  15 /*onDayOfMonth*/,
1880  0 /*atTimeCode*/,
1881  's' /*atTimeModifier*/,
1882  4 /*deltaCode*/,
1883  'D' /*letter*/,
1884  },
1885  // Rule Cuba 2011 only - Nov 13 0:00s 0 S
1886  {
1887  11 /*fromYearTiny*/,
1888  11 /*toYearTiny*/,
1889  11 /*inMonth*/,
1890  0 /*onDayOfWeek*/,
1891  13 /*onDayOfMonth*/,
1892  0 /*atTimeCode*/,
1893  's' /*atTimeModifier*/,
1894  0 /*deltaCode*/,
1895  'S' /*letter*/,
1896  },
1897  // Rule Cuba 2012 only - Apr 1 0:00s 1:00 D
1898  {
1899  12 /*fromYearTiny*/,
1900  12 /*toYearTiny*/,
1901  4 /*inMonth*/,
1902  0 /*onDayOfWeek*/,
1903  1 /*onDayOfMonth*/,
1904  0 /*atTimeCode*/,
1905  's' /*atTimeModifier*/,
1906  4 /*deltaCode*/,
1907  'D' /*letter*/,
1908  },
1909  // Rule Cuba 2012 max - Nov Sun>=1 0:00s 0 S
1910  {
1911  12 /*fromYearTiny*/,
1912  126 /*toYearTiny*/,
1913  11 /*inMonth*/,
1914  7 /*onDayOfWeek*/,
1915  1 /*onDayOfMonth*/,
1916  0 /*atTimeCode*/,
1917  's' /*atTimeModifier*/,
1918  0 /*deltaCode*/,
1919  'S' /*letter*/,
1920  },
1921  // Rule Cuba 2013 max - Mar Sun>=8 0:00s 1:00 D
1922  {
1923  13 /*fromYearTiny*/,
1924  126 /*toYearTiny*/,
1925  3 /*inMonth*/,
1926  7 /*onDayOfWeek*/,
1927  8 /*onDayOfMonth*/,
1928  0 /*atTimeCode*/,
1929  's' /*atTimeModifier*/,
1930  4 /*deltaCode*/,
1931  'D' /*letter*/,
1932  },
1933 
1934 };
1935 
1936 
1937 
1938 const extended::ZonePolicy kPolicyCuba ACE_TIME_PROGMEM = {
1939  14 /*numRules*/,
1940  kZoneRulesCuba /*rules*/,
1941  0 /* numLetters */,
1942  nullptr /* letters */,
1943 };
1944 
1945 //---------------------------------------------------------------------------
1946 // Policy name: Dhaka
1947 // Rules: 3
1948 // Memory (8-bit): 33
1949 // Memory (32-bit): 37
1950 //---------------------------------------------------------------------------
1951 
1952 static const extended::ZoneRule kZoneRulesDhaka[] ACE_TIME_PROGMEM = {
1953  // Anchor: Rule Dhaka 2009 only - Dec 31 24:00 0 -
1954  {
1955  -127 /*fromYearTiny*/,
1956  -127 /*toYearTiny*/,
1957  1 /*inMonth*/,
1958  0 /*onDayOfWeek*/,
1959  1 /*onDayOfMonth*/,
1960  0 /*atTimeCode*/,
1961  'w' /*atTimeModifier*/,
1962  0 /*deltaCode*/,
1963  '-' /*letter*/,
1964  },
1965  // Rule Dhaka 2009 only - Jun 19 23:00 1:00 -
1966  {
1967  9 /*fromYearTiny*/,
1968  9 /*toYearTiny*/,
1969  6 /*inMonth*/,
1970  0 /*onDayOfWeek*/,
1971  19 /*onDayOfMonth*/,
1972  92 /*atTimeCode*/,
1973  'w' /*atTimeModifier*/,
1974  4 /*deltaCode*/,
1975  '-' /*letter*/,
1976  },
1977  // Rule Dhaka 2009 only - Dec 31 24:00 0 -
1978  {
1979  9 /*fromYearTiny*/,
1980  9 /*toYearTiny*/,
1981  12 /*inMonth*/,
1982  0 /*onDayOfWeek*/,
1983  31 /*onDayOfMonth*/,
1984  96 /*atTimeCode*/,
1985  'w' /*atTimeModifier*/,
1986  0 /*deltaCode*/,
1987  '-' /*letter*/,
1988  },
1989 
1990 };
1991 
1992 
1993 
1994 const extended::ZonePolicy kPolicyDhaka ACE_TIME_PROGMEM = {
1995  3 /*numRules*/,
1996  kZoneRulesDhaka /*rules*/,
1997  0 /* numLetters */,
1998  nullptr /* letters */,
1999 };
2000 
2001 //---------------------------------------------------------------------------
2002 // Policy name: E_EurAsia
2003 // Rules: 3
2004 // Memory (8-bit): 33
2005 // Memory (32-bit): 37
2006 //---------------------------------------------------------------------------
2007 
2008 static const extended::ZoneRule kZoneRulesE_EurAsia[] ACE_TIME_PROGMEM = {
2009  // Rule E-EurAsia 1981 max - Mar lastSun 0:00 1:00 -
2010  {
2011  -19 /*fromYearTiny*/,
2012  126 /*toYearTiny*/,
2013  3 /*inMonth*/,
2014  7 /*onDayOfWeek*/,
2015  0 /*onDayOfMonth*/,
2016  0 /*atTimeCode*/,
2017  'w' /*atTimeModifier*/,
2018  4 /*deltaCode*/,
2019  '-' /*letter*/,
2020  },
2021  // Rule E-EurAsia 1979 1995 - Sep lastSun 0:00 0 -
2022  {
2023  -21 /*fromYearTiny*/,
2024  -5 /*toYearTiny*/,
2025  9 /*inMonth*/,
2026  7 /*onDayOfWeek*/,
2027  0 /*onDayOfMonth*/,
2028  0 /*atTimeCode*/,
2029  'w' /*atTimeModifier*/,
2030  0 /*deltaCode*/,
2031  '-' /*letter*/,
2032  },
2033  // Rule E-EurAsia 1996 max - Oct lastSun 0:00 0 -
2034  {
2035  -4 /*fromYearTiny*/,
2036  126 /*toYearTiny*/,
2037  10 /*inMonth*/,
2038  7 /*onDayOfWeek*/,
2039  0 /*onDayOfMonth*/,
2040  0 /*atTimeCode*/,
2041  'w' /*atTimeModifier*/,
2042  0 /*deltaCode*/,
2043  '-' /*letter*/,
2044  },
2045 
2046 };
2047 
2048 
2049 
2050 const extended::ZonePolicy kPolicyE_EurAsia ACE_TIME_PROGMEM = {
2051  3 /*numRules*/,
2052  kZoneRulesE_EurAsia /*rules*/,
2053  0 /* numLetters */,
2054  nullptr /* letters */,
2055 };
2056 
2057 //---------------------------------------------------------------------------
2058 // Policy name: EU
2059 // Rules: 3
2060 // Memory (8-bit): 33
2061 // Memory (32-bit): 37
2062 //---------------------------------------------------------------------------
2063 
2064 static const extended::ZoneRule kZoneRulesEU[] ACE_TIME_PROGMEM = {
2065  // Rule EU 1979 1995 - Sep lastSun 1:00u 0 -
2066  {
2067  -21 /*fromYearTiny*/,
2068  -5 /*toYearTiny*/,
2069  9 /*inMonth*/,
2070  7 /*onDayOfWeek*/,
2071  0 /*onDayOfMonth*/,
2072  4 /*atTimeCode*/,
2073  'u' /*atTimeModifier*/,
2074  0 /*deltaCode*/,
2075  '-' /*letter*/,
2076  },
2077  // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S
2078  {
2079  -19 /*fromYearTiny*/,
2080  126 /*toYearTiny*/,
2081  3 /*inMonth*/,
2082  7 /*onDayOfWeek*/,
2083  0 /*onDayOfMonth*/,
2084  4 /*atTimeCode*/,
2085  'u' /*atTimeModifier*/,
2086  4 /*deltaCode*/,
2087  'S' /*letter*/,
2088  },
2089  // Rule EU 1996 max - Oct lastSun 1:00u 0 -
2090  {
2091  -4 /*fromYearTiny*/,
2092  126 /*toYearTiny*/,
2093  10 /*inMonth*/,
2094  7 /*onDayOfWeek*/,
2095  0 /*onDayOfMonth*/,
2096  4 /*atTimeCode*/,
2097  'u' /*atTimeModifier*/,
2098  0 /*deltaCode*/,
2099  '-' /*letter*/,
2100  },
2101 
2102 };
2103 
2104 
2105 
2106 const extended::ZonePolicy kPolicyEU ACE_TIME_PROGMEM = {
2107  3 /*numRules*/,
2108  kZoneRulesEU /*rules*/,
2109  0 /* numLetters */,
2110  nullptr /* letters */,
2111 };
2112 
2113 //---------------------------------------------------------------------------
2114 // Policy name: EUAsia
2115 // Rules: 3
2116 // Memory (8-bit): 33
2117 // Memory (32-bit): 37
2118 //---------------------------------------------------------------------------
2119 
2120 static const extended::ZoneRule kZoneRulesEUAsia[] ACE_TIME_PROGMEM = {
2121  // Rule EUAsia 1981 max - Mar lastSun 1:00u 1:00 S
2122  {
2123  -19 /*fromYearTiny*/,
2124  126 /*toYearTiny*/,
2125  3 /*inMonth*/,
2126  7 /*onDayOfWeek*/,
2127  0 /*onDayOfMonth*/,
2128  4 /*atTimeCode*/,
2129  'u' /*atTimeModifier*/,
2130  4 /*deltaCode*/,
2131  'S' /*letter*/,
2132  },
2133  // Rule EUAsia 1979 1995 - Sep lastSun 1:00u 0 -
2134  {
2135  -21 /*fromYearTiny*/,
2136  -5 /*toYearTiny*/,
2137  9 /*inMonth*/,
2138  7 /*onDayOfWeek*/,
2139  0 /*onDayOfMonth*/,
2140  4 /*atTimeCode*/,
2141  'u' /*atTimeModifier*/,
2142  0 /*deltaCode*/,
2143  '-' /*letter*/,
2144  },
2145  // Rule EUAsia 1996 max - Oct lastSun 1:00u 0 -
2146  {
2147  -4 /*fromYearTiny*/,
2148  126 /*toYearTiny*/,
2149  10 /*inMonth*/,
2150  7 /*onDayOfWeek*/,
2151  0 /*onDayOfMonth*/,
2152  4 /*atTimeCode*/,
2153  'u' /*atTimeModifier*/,
2154  0 /*deltaCode*/,
2155  '-' /*letter*/,
2156  },
2157 
2158 };
2159 
2160 
2161 
2162 const extended::ZonePolicy kPolicyEUAsia ACE_TIME_PROGMEM = {
2163  3 /*numRules*/,
2164  kZoneRulesEUAsia /*rules*/,
2165  0 /* numLetters */,
2166  nullptr /* letters */,
2167 };
2168 
2169 //---------------------------------------------------------------------------
2170 // Policy name: Ecuador
2171 // Rules: 1
2172 // Memory (8-bit): 15
2173 // Memory (32-bit): 19
2174 //---------------------------------------------------------------------------
2175 
2176 static const extended::ZoneRule kZoneRulesEcuador[] ACE_TIME_PROGMEM = {
2177  // Rule Ecuador 1993 only - Feb 5 0:00 0 -
2178  {
2179  -7 /*fromYearTiny*/,
2180  -7 /*toYearTiny*/,
2181  2 /*inMonth*/,
2182  0 /*onDayOfWeek*/,
2183  5 /*onDayOfMonth*/,
2184  0 /*atTimeCode*/,
2185  'w' /*atTimeModifier*/,
2186  0 /*deltaCode*/,
2187  '-' /*letter*/,
2188  },
2189 
2190 };
2191 
2192 
2193 
2194 const extended::ZonePolicy kPolicyEcuador ACE_TIME_PROGMEM = {
2195  1 /*numRules*/,
2196  kZoneRulesEcuador /*rules*/,
2197  0 /* numLetters */,
2198  nullptr /* letters */,
2199 };
2200 
2201 //---------------------------------------------------------------------------
2202 // Policy name: Egypt
2203 // Rules: 14
2204 // Memory (8-bit): 132
2205 // Memory (32-bit): 136
2206 //---------------------------------------------------------------------------
2207 
2208 static const extended::ZoneRule kZoneRulesEgypt[] ACE_TIME_PROGMEM = {
2209  // Rule Egypt 1966 1994 - Oct 1 3:00 0 -
2210  {
2211  -34 /*fromYearTiny*/,
2212  -6 /*toYearTiny*/,
2213  10 /*inMonth*/,
2214  0 /*onDayOfWeek*/,
2215  1 /*onDayOfMonth*/,
2216  12 /*atTimeCode*/,
2217  'w' /*atTimeModifier*/,
2218  0 /*deltaCode*/,
2219  '-' /*letter*/,
2220  },
2221  // Rule Egypt 1995 2010 - Apr lastFri 0:00s 1:00 S
2222  {
2223  -5 /*fromYearTiny*/,
2224  10 /*toYearTiny*/,
2225  4 /*inMonth*/,
2226  5 /*onDayOfWeek*/,
2227  0 /*onDayOfMonth*/,
2228  0 /*atTimeCode*/,
2229  's' /*atTimeModifier*/,
2230  4 /*deltaCode*/,
2231  'S' /*letter*/,
2232  },
2233  // Rule Egypt 1995 2005 - Sep lastThu 24:00 0 -
2234  {
2235  -5 /*fromYearTiny*/,
2236  5 /*toYearTiny*/,
2237  9 /*inMonth*/,
2238  4 /*onDayOfWeek*/,
2239  0 /*onDayOfMonth*/,
2240  96 /*atTimeCode*/,
2241  'w' /*atTimeModifier*/,
2242  0 /*deltaCode*/,
2243  '-' /*letter*/,
2244  },
2245  // Rule Egypt 2006 only - Sep 21 24:00 0 -
2246  {
2247  6 /*fromYearTiny*/,
2248  6 /*toYearTiny*/,
2249  9 /*inMonth*/,
2250  0 /*onDayOfWeek*/,
2251  21 /*onDayOfMonth*/,
2252  96 /*atTimeCode*/,
2253  'w' /*atTimeModifier*/,
2254  0 /*deltaCode*/,
2255  '-' /*letter*/,
2256  },
2257  // Rule Egypt 2007 only - Sep Thu>=1 24:00 0 -
2258  {
2259  7 /*fromYearTiny*/,
2260  7 /*toYearTiny*/,
2261  9 /*inMonth*/,
2262  4 /*onDayOfWeek*/,
2263  1 /*onDayOfMonth*/,
2264  96 /*atTimeCode*/,
2265  'w' /*atTimeModifier*/,
2266  0 /*deltaCode*/,
2267  '-' /*letter*/,
2268  },
2269  // Rule Egypt 2008 only - Aug lastThu 24:00 0 -
2270  {
2271  8 /*fromYearTiny*/,
2272  8 /*toYearTiny*/,
2273  8 /*inMonth*/,
2274  4 /*onDayOfWeek*/,
2275  0 /*onDayOfMonth*/,
2276  96 /*atTimeCode*/,
2277  'w' /*atTimeModifier*/,
2278  0 /*deltaCode*/,
2279  '-' /*letter*/,
2280  },
2281  // Rule Egypt 2009 only - Aug 20 24:00 0 -
2282  {
2283  9 /*fromYearTiny*/,
2284  9 /*toYearTiny*/,
2285  8 /*inMonth*/,
2286  0 /*onDayOfWeek*/,
2287  20 /*onDayOfMonth*/,
2288  96 /*atTimeCode*/,
2289  'w' /*atTimeModifier*/,
2290  0 /*deltaCode*/,
2291  '-' /*letter*/,
2292  },
2293  // Rule Egypt 2010 only - Aug 10 24:00 0 -
2294  {
2295  10 /*fromYearTiny*/,
2296  10 /*toYearTiny*/,
2297  8 /*inMonth*/,
2298  0 /*onDayOfWeek*/,
2299  10 /*onDayOfMonth*/,
2300  96 /*atTimeCode*/,
2301  'w' /*atTimeModifier*/,
2302  0 /*deltaCode*/,
2303  '-' /*letter*/,
2304  },
2305  // Rule Egypt 2010 only - Sep 9 24:00 1:00 S
2306  {
2307  10 /*fromYearTiny*/,
2308  10 /*toYearTiny*/,
2309  9 /*inMonth*/,
2310  0 /*onDayOfWeek*/,
2311  9 /*onDayOfMonth*/,
2312  96 /*atTimeCode*/,
2313  'w' /*atTimeModifier*/,
2314  4 /*deltaCode*/,
2315  'S' /*letter*/,
2316  },
2317  // Rule Egypt 2010 only - Sep lastThu 24:00 0 -
2318  {
2319  10 /*fromYearTiny*/,
2320  10 /*toYearTiny*/,
2321  9 /*inMonth*/,
2322  4 /*onDayOfWeek*/,
2323  0 /*onDayOfMonth*/,
2324  96 /*atTimeCode*/,
2325  'w' /*atTimeModifier*/,
2326  0 /*deltaCode*/,
2327  '-' /*letter*/,
2328  },
2329  // Rule Egypt 2014 only - May 15 24:00 1:00 S
2330  {
2331  14 /*fromYearTiny*/,
2332  14 /*toYearTiny*/,
2333  5 /*inMonth*/,
2334  0 /*onDayOfWeek*/,
2335  15 /*onDayOfMonth*/,
2336  96 /*atTimeCode*/,
2337  'w' /*atTimeModifier*/,
2338  4 /*deltaCode*/,
2339  'S' /*letter*/,
2340  },
2341  // Rule Egypt 2014 only - Jun 26 24:00 0 -
2342  {
2343  14 /*fromYearTiny*/,
2344  14 /*toYearTiny*/,
2345  6 /*inMonth*/,
2346  0 /*onDayOfWeek*/,
2347  26 /*onDayOfMonth*/,
2348  96 /*atTimeCode*/,
2349  'w' /*atTimeModifier*/,
2350  0 /*deltaCode*/,
2351  '-' /*letter*/,
2352  },
2353  // Rule Egypt 2014 only - Jul 31 24:00 1:00 S
2354  {
2355  14 /*fromYearTiny*/,
2356  14 /*toYearTiny*/,
2357  7 /*inMonth*/,
2358  0 /*onDayOfWeek*/,
2359  31 /*onDayOfMonth*/,
2360  96 /*atTimeCode*/,
2361  'w' /*atTimeModifier*/,
2362  4 /*deltaCode*/,
2363  'S' /*letter*/,
2364  },
2365  // Rule Egypt 2014 only - Sep lastThu 24:00 0 -
2366  {
2367  14 /*fromYearTiny*/,
2368  14 /*toYearTiny*/,
2369  9 /*inMonth*/,
2370  4 /*onDayOfWeek*/,
2371  0 /*onDayOfMonth*/,
2372  96 /*atTimeCode*/,
2373  'w' /*atTimeModifier*/,
2374  0 /*deltaCode*/,
2375  '-' /*letter*/,
2376  },
2377 
2378 };
2379 
2380 
2381 
2382 const extended::ZonePolicy kPolicyEgypt ACE_TIME_PROGMEM = {
2383  14 /*numRules*/,
2384  kZoneRulesEgypt /*rules*/,
2385  0 /* numLetters */,
2386  nullptr /* letters */,
2387 };
2388 
2389 //---------------------------------------------------------------------------
2390 // Policy name: Eire
2391 // Rules: 3
2392 // Memory (8-bit): 33
2393 // Memory (32-bit): 37
2394 //---------------------------------------------------------------------------
2395 
2396 static const extended::ZoneRule kZoneRulesEire[] ACE_TIME_PROGMEM = {
2397  // Rule Eire 1981 max - Mar lastSun 1:00u 0 -
2398  {
2399  -19 /*fromYearTiny*/,
2400  126 /*toYearTiny*/,
2401  3 /*inMonth*/,
2402  7 /*onDayOfWeek*/,
2403  0 /*onDayOfMonth*/,
2404  4 /*atTimeCode*/,
2405  'u' /*atTimeModifier*/,
2406  0 /*deltaCode*/,
2407  '-' /*letter*/,
2408  },
2409  // Rule Eire 1990 1995 - Oct Sun>=22 1:00u -1:00 -
2410  {
2411  -10 /*fromYearTiny*/,
2412  -5 /*toYearTiny*/,
2413  10 /*inMonth*/,
2414  7 /*onDayOfWeek*/,
2415  22 /*onDayOfMonth*/,
2416  4 /*atTimeCode*/,
2417  'u' /*atTimeModifier*/,
2418  -4 /*deltaCode*/,
2419  '-' /*letter*/,
2420  },
2421  // Rule Eire 1996 max - Oct lastSun 1:00u -1:00 -
2422  {
2423  -4 /*fromYearTiny*/,
2424  126 /*toYearTiny*/,
2425  10 /*inMonth*/,
2426  7 /*onDayOfWeek*/,
2427  0 /*onDayOfMonth*/,
2428  4 /*atTimeCode*/,
2429  'u' /*atTimeModifier*/,
2430  -4 /*deltaCode*/,
2431  '-' /*letter*/,
2432  },
2433 
2434 };
2435 
2436 
2437 
2438 const extended::ZonePolicy kPolicyEire ACE_TIME_PROGMEM = {
2439  3 /*numRules*/,
2440  kZoneRulesEire /*rules*/,
2441  0 /* numLetters */,
2442  nullptr /* letters */,
2443 };
2444 
2445 //---------------------------------------------------------------------------
2446 // Policy name: Falk
2447 // Rules: 5
2448 // Memory (8-bit): 51
2449 // Memory (32-bit): 55
2450 //---------------------------------------------------------------------------
2451 
2452 static const extended::ZoneRule kZoneRulesFalk[] ACE_TIME_PROGMEM = {
2453  // Rule Falk 1984 1985 - Apr lastSun 0:00 0 -
2454  {
2455  -16 /*fromYearTiny*/,
2456  -15 /*toYearTiny*/,
2457  4 /*inMonth*/,
2458  7 /*onDayOfWeek*/,
2459  0 /*onDayOfMonth*/,
2460  0 /*atTimeCode*/,
2461  'w' /*atTimeModifier*/,
2462  0 /*deltaCode*/,
2463  '-' /*letter*/,
2464  },
2465  // Rule Falk 1985 2000 - Sep Sun>=9 0:00 1:00 -
2466  {
2467  -15 /*fromYearTiny*/,
2468  0 /*toYearTiny*/,
2469  9 /*inMonth*/,
2470  7 /*onDayOfWeek*/,
2471  9 /*onDayOfMonth*/,
2472  0 /*atTimeCode*/,
2473  'w' /*atTimeModifier*/,
2474  4 /*deltaCode*/,
2475  '-' /*letter*/,
2476  },
2477  // Rule Falk 1986 2000 - Apr Sun>=16 0:00 0 -
2478  {
2479  -14 /*fromYearTiny*/,
2480  0 /*toYearTiny*/,
2481  4 /*inMonth*/,
2482  7 /*onDayOfWeek*/,
2483  16 /*onDayOfMonth*/,
2484  0 /*atTimeCode*/,
2485  'w' /*atTimeModifier*/,
2486  0 /*deltaCode*/,
2487  '-' /*letter*/,
2488  },
2489  // Rule Falk 2001 2010 - Apr Sun>=15 2:00 0 -
2490  {
2491  1 /*fromYearTiny*/,
2492  10 /*toYearTiny*/,
2493  4 /*inMonth*/,
2494  7 /*onDayOfWeek*/,
2495  15 /*onDayOfMonth*/,
2496  8 /*atTimeCode*/,
2497  'w' /*atTimeModifier*/,
2498  0 /*deltaCode*/,
2499  '-' /*letter*/,
2500  },
2501  // Rule Falk 2001 2010 - Sep Sun>=1 2:00 1:00 -
2502  {
2503  1 /*fromYearTiny*/,
2504  10 /*toYearTiny*/,
2505  9 /*inMonth*/,
2506  7 /*onDayOfWeek*/,
2507  1 /*onDayOfMonth*/,
2508  8 /*atTimeCode*/,
2509  'w' /*atTimeModifier*/,
2510  4 /*deltaCode*/,
2511  '-' /*letter*/,
2512  },
2513 
2514 };
2515 
2516 
2517 
2518 const extended::ZonePolicy kPolicyFalk ACE_TIME_PROGMEM = {
2519  5 /*numRules*/,
2520  kZoneRulesFalk /*rules*/,
2521  0 /* numLetters */,
2522  nullptr /* letters */,
2523 };
2524 
2525 //---------------------------------------------------------------------------
2526 // Policy name: Fiji
2527 // Rules: 10
2528 // Memory (8-bit): 96
2529 // Memory (32-bit): 100
2530 //---------------------------------------------------------------------------
2531 
2532 static const extended::ZoneRule kZoneRulesFiji[] ACE_TIME_PROGMEM = {
2533  // Rule Fiji 1998 1999 - Nov Sun>=1 2:00 1:00 -
2534  {
2535  -2 /*fromYearTiny*/,
2536  -1 /*toYearTiny*/,
2537  11 /*inMonth*/,
2538  7 /*onDayOfWeek*/,
2539  1 /*onDayOfMonth*/,
2540  8 /*atTimeCode*/,
2541  'w' /*atTimeModifier*/,
2542  4 /*deltaCode*/,
2543  '-' /*letter*/,
2544  },
2545  // Rule Fiji 1999 2000 - Feb lastSun 3:00 0 -
2546  {
2547  -1 /*fromYearTiny*/,
2548  0 /*toYearTiny*/,
2549  2 /*inMonth*/,
2550  7 /*onDayOfWeek*/,
2551  0 /*onDayOfMonth*/,
2552  12 /*atTimeCode*/,
2553  'w' /*atTimeModifier*/,
2554  0 /*deltaCode*/,
2555  '-' /*letter*/,
2556  },
2557  // Rule Fiji 2009 only - Nov 29 2:00 1:00 -
2558  {
2559  9 /*fromYearTiny*/,
2560  9 /*toYearTiny*/,
2561  11 /*inMonth*/,
2562  0 /*onDayOfWeek*/,
2563  29 /*onDayOfMonth*/,
2564  8 /*atTimeCode*/,
2565  'w' /*atTimeModifier*/,
2566  4 /*deltaCode*/,
2567  '-' /*letter*/,
2568  },
2569  // Rule Fiji 2010 only - Mar lastSun 3:00 0 -
2570  {
2571  10 /*fromYearTiny*/,
2572  10 /*toYearTiny*/,
2573  3 /*inMonth*/,
2574  7 /*onDayOfWeek*/,
2575  0 /*onDayOfMonth*/,
2576  12 /*atTimeCode*/,
2577  'w' /*atTimeModifier*/,
2578  0 /*deltaCode*/,
2579  '-' /*letter*/,
2580  },
2581  // Rule Fiji 2010 2013 - Oct Sun>=21 2:00 1:00 -
2582  {
2583  10 /*fromYearTiny*/,
2584  13 /*toYearTiny*/,
2585  10 /*inMonth*/,
2586  7 /*onDayOfWeek*/,
2587  21 /*onDayOfMonth*/,
2588  8 /*atTimeCode*/,
2589  'w' /*atTimeModifier*/,
2590  4 /*deltaCode*/,
2591  '-' /*letter*/,
2592  },
2593  // Rule Fiji 2011 only - Mar Sun>=1 3:00 0 -
2594  {
2595  11 /*fromYearTiny*/,
2596  11 /*toYearTiny*/,
2597  3 /*inMonth*/,
2598  7 /*onDayOfWeek*/,
2599  1 /*onDayOfMonth*/,
2600  12 /*atTimeCode*/,
2601  'w' /*atTimeModifier*/,
2602  0 /*deltaCode*/,
2603  '-' /*letter*/,
2604  },
2605  // Rule Fiji 2012 2013 - Jan Sun>=18 3:00 0 -
2606  {
2607  12 /*fromYearTiny*/,
2608  13 /*toYearTiny*/,
2609  1 /*inMonth*/,
2610  7 /*onDayOfWeek*/,
2611  18 /*onDayOfMonth*/,
2612  12 /*atTimeCode*/,
2613  'w' /*atTimeModifier*/,
2614  0 /*deltaCode*/,
2615  '-' /*letter*/,
2616  },
2617  // Rule Fiji 2014 only - Jan Sun>=18 2:00 0 -
2618  {
2619  14 /*fromYearTiny*/,
2620  14 /*toYearTiny*/,
2621  1 /*inMonth*/,
2622  7 /*onDayOfWeek*/,
2623  18 /*onDayOfMonth*/,
2624  8 /*atTimeCode*/,
2625  'w' /*atTimeModifier*/,
2626  0 /*deltaCode*/,
2627  '-' /*letter*/,
2628  },
2629  // Rule Fiji 2014 max - Nov Sun>=1 2:00 1:00 -
2630  {
2631  14 /*fromYearTiny*/,
2632  126 /*toYearTiny*/,
2633  11 /*inMonth*/,
2634  7 /*onDayOfWeek*/,
2635  1 /*onDayOfMonth*/,
2636  8 /*atTimeCode*/,
2637  'w' /*atTimeModifier*/,
2638  4 /*deltaCode*/,
2639  '-' /*letter*/,
2640  },
2641  // Rule Fiji 2015 max - Jan Sun>=13 3:00 0 -
2642  {
2643  15 /*fromYearTiny*/,
2644  126 /*toYearTiny*/,
2645  1 /*inMonth*/,
2646  7 /*onDayOfWeek*/,
2647  13 /*onDayOfMonth*/,
2648  12 /*atTimeCode*/,
2649  'w' /*atTimeModifier*/,
2650  0 /*deltaCode*/,
2651  '-' /*letter*/,
2652  },
2653 
2654 };
2655 
2656 
2657 
2658 const extended::ZonePolicy kPolicyFiji ACE_TIME_PROGMEM = {
2659  10 /*numRules*/,
2660  kZoneRulesFiji /*rules*/,
2661  0 /* numLetters */,
2662  nullptr /* letters */,
2663 };
2664 
2665 //---------------------------------------------------------------------------
2666 // Policy name: Ghana
2667 // Rules: 1
2668 // Memory (8-bit): 15
2669 // Memory (32-bit): 19
2670 //---------------------------------------------------------------------------
2671 
2672 static const extended::ZoneRule kZoneRulesGhana[] ACE_TIME_PROGMEM = {
2673  // Rule Ghana 1920 1942 - Dec 31 0:00 0 -
2674  {
2675  -80 /*fromYearTiny*/,
2676  -58 /*toYearTiny*/,
2677  12 /*inMonth*/,
2678  0 /*onDayOfWeek*/,
2679  31 /*onDayOfMonth*/,
2680  0 /*atTimeCode*/,
2681  'w' /*atTimeModifier*/,
2682  0 /*deltaCode*/,
2683  '-' /*letter*/,
2684  },
2685 
2686 };
2687 
2688 
2689 
2690 const extended::ZonePolicy kPolicyGhana ACE_TIME_PROGMEM = {
2691  1 /*numRules*/,
2692  kZoneRulesGhana /*rules*/,
2693  0 /* numLetters */,
2694  nullptr /* letters */,
2695 };
2696 
2697 //---------------------------------------------------------------------------
2698 // Policy name: Guam
2699 // Rules: 1
2700 // Memory (8-bit): 15
2701 // Memory (32-bit): 19
2702 //---------------------------------------------------------------------------
2703 
2704 static const extended::ZoneRule kZoneRulesGuam[] ACE_TIME_PROGMEM = {
2705  // Rule Guam 1977 only - Aug 28 2:00 0 S
2706  {
2707  -23 /*fromYearTiny*/,
2708  -23 /*toYearTiny*/,
2709  8 /*inMonth*/,
2710  0 /*onDayOfWeek*/,
2711  28 /*onDayOfMonth*/,
2712  8 /*atTimeCode*/,
2713  'w' /*atTimeModifier*/,
2714  0 /*deltaCode*/,
2715  'S' /*letter*/,
2716  },
2717 
2718 };
2719 
2720 
2721 
2722 const extended::ZonePolicy kPolicyGuam ACE_TIME_PROGMEM = {
2723  1 /*numRules*/,
2724  kZoneRulesGuam /*rules*/,
2725  0 /* numLetters */,
2726  nullptr /* letters */,
2727 };
2728 
2729 //---------------------------------------------------------------------------
2730 // Policy name: Guat
2731 // Rules: 3
2732 // Memory (8-bit): 33
2733 // Memory (32-bit): 37
2734 //---------------------------------------------------------------------------
2735 
2736 static const extended::ZoneRule kZoneRulesGuat[] ACE_TIME_PROGMEM = {
2737  // Rule Guat 1991 only - Sep 7 0:00 0 S
2738  {
2739  -9 /*fromYearTiny*/,
2740  -9 /*toYearTiny*/,
2741  9 /*inMonth*/,
2742  0 /*onDayOfWeek*/,
2743  7 /*onDayOfMonth*/,
2744  0 /*atTimeCode*/,
2745  'w' /*atTimeModifier*/,
2746  0 /*deltaCode*/,
2747  'S' /*letter*/,
2748  },
2749  // Rule Guat 2006 only - Apr 30 0:00 1:00 D
2750  {
2751  6 /*fromYearTiny*/,
2752  6 /*toYearTiny*/,
2753  4 /*inMonth*/,
2754  0 /*onDayOfWeek*/,
2755  30 /*onDayOfMonth*/,
2756  0 /*atTimeCode*/,
2757  'w' /*atTimeModifier*/,
2758  4 /*deltaCode*/,
2759  'D' /*letter*/,
2760  },
2761  // Rule Guat 2006 only - Oct 1 0:00 0 S
2762  {
2763  6 /*fromYearTiny*/,
2764  6 /*toYearTiny*/,
2765  10 /*inMonth*/,
2766  0 /*onDayOfWeek*/,
2767  1 /*onDayOfMonth*/,
2768  0 /*atTimeCode*/,
2769  'w' /*atTimeModifier*/,
2770  0 /*deltaCode*/,
2771  'S' /*letter*/,
2772  },
2773 
2774 };
2775 
2776 
2777 
2778 const extended::ZonePolicy kPolicyGuat ACE_TIME_PROGMEM = {
2779  3 /*numRules*/,
2780  kZoneRulesGuat /*rules*/,
2781  0 /* numLetters */,
2782  nullptr /* letters */,
2783 };
2784 
2785 //---------------------------------------------------------------------------
2786 // Policy name: HK
2787 // Rules: 1
2788 // Memory (8-bit): 15
2789 // Memory (32-bit): 19
2790 //---------------------------------------------------------------------------
2791 
2792 static const extended::ZoneRule kZoneRulesHK[] ACE_TIME_PROGMEM = {
2793  // Rule HK 1979 only - Oct Sun>=16 3:30 0 -
2794  {
2795  -21 /*fromYearTiny*/,
2796  -21 /*toYearTiny*/,
2797  10 /*inMonth*/,
2798  7 /*onDayOfWeek*/,
2799  16 /*onDayOfMonth*/,
2800  14 /*atTimeCode*/,
2801  'w' /*atTimeModifier*/,
2802  0 /*deltaCode*/,
2803  '-' /*letter*/,
2804  },
2805 
2806 };
2807 
2808 
2809 
2810 const extended::ZonePolicy kPolicyHK ACE_TIME_PROGMEM = {
2811  1 /*numRules*/,
2812  kZoneRulesHK /*rules*/,
2813  0 /* numLetters */,
2814  nullptr /* letters */,
2815 };
2816 
2817 //---------------------------------------------------------------------------
2818 // Policy name: Haiti
2819 // Rules: 7
2820 // Memory (8-bit): 69
2821 // Memory (32-bit): 73
2822 //---------------------------------------------------------------------------
2823 
2824 static const extended::ZoneRule kZoneRulesHaiti[] ACE_TIME_PROGMEM = {
2825  // Rule Haiti 1988 1997 - Oct lastSun 1:00s 0 S
2826  {
2827  -12 /*fromYearTiny*/,
2828  -3 /*toYearTiny*/,
2829  10 /*inMonth*/,
2830  7 /*onDayOfWeek*/,
2831  0 /*onDayOfMonth*/,
2832  4 /*atTimeCode*/,
2833  's' /*atTimeModifier*/,
2834  0 /*deltaCode*/,
2835  'S' /*letter*/,
2836  },
2837  // Rule Haiti 2005 2006 - Apr Sun>=1 0:00 1:00 D
2838  {
2839  5 /*fromYearTiny*/,
2840  6 /*toYearTiny*/,
2841  4 /*inMonth*/,
2842  7 /*onDayOfWeek*/,
2843  1 /*onDayOfMonth*/,
2844  0 /*atTimeCode*/,
2845  'w' /*atTimeModifier*/,
2846  4 /*deltaCode*/,
2847  'D' /*letter*/,
2848  },
2849  // Rule Haiti 2005 2006 - Oct lastSun 0:00 0 S
2850  {
2851  5 /*fromYearTiny*/,
2852  6 /*toYearTiny*/,
2853  10 /*inMonth*/,
2854  7 /*onDayOfWeek*/,
2855  0 /*onDayOfMonth*/,
2856  0 /*atTimeCode*/,
2857  'w' /*atTimeModifier*/,
2858  0 /*deltaCode*/,
2859  'S' /*letter*/,
2860  },
2861  // Rule Haiti 2012 2015 - Mar Sun>=8 2:00 1:00 D
2862  {
2863  12 /*fromYearTiny*/,
2864  15 /*toYearTiny*/,
2865  3 /*inMonth*/,
2866  7 /*onDayOfWeek*/,
2867  8 /*onDayOfMonth*/,
2868  8 /*atTimeCode*/,
2869  'w' /*atTimeModifier*/,
2870  4 /*deltaCode*/,
2871  'D' /*letter*/,
2872  },
2873  // Rule Haiti 2012 2015 - Nov Sun>=1 2:00 0 S
2874  {
2875  12 /*fromYearTiny*/,
2876  15 /*toYearTiny*/,
2877  11 /*inMonth*/,
2878  7 /*onDayOfWeek*/,
2879  1 /*onDayOfMonth*/,
2880  8 /*atTimeCode*/,
2881  'w' /*atTimeModifier*/,
2882  0 /*deltaCode*/,
2883  'S' /*letter*/,
2884  },
2885  // Rule Haiti 2017 max - Mar Sun>=8 2:00 1:00 D
2886  {
2887  17 /*fromYearTiny*/,
2888  126 /*toYearTiny*/,
2889  3 /*inMonth*/,
2890  7 /*onDayOfWeek*/,
2891  8 /*onDayOfMonth*/,
2892  8 /*atTimeCode*/,
2893  'w' /*atTimeModifier*/,
2894  4 /*deltaCode*/,
2895  'D' /*letter*/,
2896  },
2897  // Rule Haiti 2017 max - Nov Sun>=1 2:00 0 S
2898  {
2899  17 /*fromYearTiny*/,
2900  126 /*toYearTiny*/,
2901  11 /*inMonth*/,
2902  7 /*onDayOfWeek*/,
2903  1 /*onDayOfMonth*/,
2904  8 /*atTimeCode*/,
2905  'w' /*atTimeModifier*/,
2906  0 /*deltaCode*/,
2907  'S' /*letter*/,
2908  },
2909 
2910 };
2911 
2912 
2913 
2914 const extended::ZonePolicy kPolicyHaiti ACE_TIME_PROGMEM = {
2915  7 /*numRules*/,
2916  kZoneRulesHaiti /*rules*/,
2917  0 /* numLetters */,
2918  nullptr /* letters */,
2919 };
2920 
2921 //---------------------------------------------------------------------------
2922 // Policy name: Holiday
2923 // Rules: 1
2924 // Memory (8-bit): 15
2925 // Memory (32-bit): 19
2926 //---------------------------------------------------------------------------
2927 
2928 static const extended::ZoneRule kZoneRulesHoliday[] ACE_TIME_PROGMEM = {
2929  // Rule Holiday 1993 1994 - Mar Sun>=1 2:00s 0 S
2930  {
2931  -7 /*fromYearTiny*/,
2932  -6 /*toYearTiny*/,
2933  3 /*inMonth*/,
2934  7 /*onDayOfWeek*/,
2935  1 /*onDayOfMonth*/,
2936  8 /*atTimeCode*/,
2937  's' /*atTimeModifier*/,
2938  0 /*deltaCode*/,
2939  'S' /*letter*/,
2940  },
2941 
2942 };
2943 
2944 
2945 
2946 const extended::ZonePolicy kPolicyHoliday ACE_TIME_PROGMEM = {
2947  1 /*numRules*/,
2948  kZoneRulesHoliday /*rules*/,
2949  0 /* numLetters */,
2950  nullptr /* letters */,
2951 };
2952 
2953 //---------------------------------------------------------------------------
2954 // Policy name: Hond
2955 // Rules: 3
2956 // Memory (8-bit): 33
2957 // Memory (32-bit): 37
2958 //---------------------------------------------------------------------------
2959 
2960 static const extended::ZoneRule kZoneRulesHond[] ACE_TIME_PROGMEM = {
2961  // Rule Hond 1987 1988 - Sep lastSun 0:00 0 S
2962  {
2963  -13 /*fromYearTiny*/,
2964  -12 /*toYearTiny*/,
2965  9 /*inMonth*/,
2966  7 /*onDayOfWeek*/,
2967  0 /*onDayOfMonth*/,
2968  0 /*atTimeCode*/,
2969  'w' /*atTimeModifier*/,
2970  0 /*deltaCode*/,
2971  'S' /*letter*/,
2972  },
2973  // Rule Hond 2006 only - May Sun>=1 0:00 1:00 D
2974  {
2975  6 /*fromYearTiny*/,
2976  6 /*toYearTiny*/,
2977  5 /*inMonth*/,
2978  7 /*onDayOfWeek*/,
2979  1 /*onDayOfMonth*/,
2980  0 /*atTimeCode*/,
2981  'w' /*atTimeModifier*/,
2982  4 /*deltaCode*/,
2983  'D' /*letter*/,
2984  },
2985  // Rule Hond 2006 only - Aug Mon>=1 0:00 0 S
2986  {
2987  6 /*fromYearTiny*/,
2988  6 /*toYearTiny*/,
2989  8 /*inMonth*/,
2990  1 /*onDayOfWeek*/,
2991  1 /*onDayOfMonth*/,
2992  0 /*atTimeCode*/,
2993  'w' /*atTimeModifier*/,
2994  0 /*deltaCode*/,
2995  'S' /*letter*/,
2996  },
2997 
2998 };
2999 
3000 
3001 
3002 const extended::ZonePolicy kPolicyHond ACE_TIME_PROGMEM = {
3003  3 /*numRules*/,
3004  kZoneRulesHond /*rules*/,
3005  0 /* numLetters */,
3006  nullptr /* letters */,
3007 };
3008 
3009 //---------------------------------------------------------------------------
3010 // Policy name: Iran
3011 // Rules: 55
3012 // Memory (8-bit): 501
3013 // Memory (32-bit): 505
3014 //---------------------------------------------------------------------------
3015 
3016 static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = {
3017  // Rule Iran 1996 only - Sep 20 24:00 0 -
3018  {
3019  -4 /*fromYearTiny*/,
3020  -4 /*toYearTiny*/,
3021  9 /*inMonth*/,
3022  0 /*onDayOfWeek*/,
3023  20 /*onDayOfMonth*/,
3024  96 /*atTimeCode*/,
3025  'w' /*atTimeModifier*/,
3026  0 /*deltaCode*/,
3027  '-' /*letter*/,
3028  },
3029  // Rule Iran 1997 1999 - Mar 21 24:00 1:00 -
3030  {
3031  -3 /*fromYearTiny*/,
3032  -1 /*toYearTiny*/,
3033  3 /*inMonth*/,
3034  0 /*onDayOfWeek*/,
3035  21 /*onDayOfMonth*/,
3036  96 /*atTimeCode*/,
3037  'w' /*atTimeModifier*/,
3038  4 /*deltaCode*/,
3039  '-' /*letter*/,
3040  },
3041  // Rule Iran 1997 1999 - Sep 21 24:00 0 -
3042  {
3043  -3 /*fromYearTiny*/,
3044  -1 /*toYearTiny*/,
3045  9 /*inMonth*/,
3046  0 /*onDayOfWeek*/,
3047  21 /*onDayOfMonth*/,
3048  96 /*atTimeCode*/,
3049  'w' /*atTimeModifier*/,
3050  0 /*deltaCode*/,
3051  '-' /*letter*/,
3052  },
3053  // Rule Iran 2000 only - Mar 20 24:00 1:00 -
3054  {
3055  0 /*fromYearTiny*/,
3056  0 /*toYearTiny*/,
3057  3 /*inMonth*/,
3058  0 /*onDayOfWeek*/,
3059  20 /*onDayOfMonth*/,
3060  96 /*atTimeCode*/,
3061  'w' /*atTimeModifier*/,
3062  4 /*deltaCode*/,
3063  '-' /*letter*/,
3064  },
3065  // Rule Iran 2000 only - Sep 20 24:00 0 -
3066  {
3067  0 /*fromYearTiny*/,
3068  0 /*toYearTiny*/,
3069  9 /*inMonth*/,
3070  0 /*onDayOfWeek*/,
3071  20 /*onDayOfMonth*/,
3072  96 /*atTimeCode*/,
3073  'w' /*atTimeModifier*/,
3074  0 /*deltaCode*/,
3075  '-' /*letter*/,
3076  },
3077  // Rule Iran 2001 2003 - Mar 21 24:00 1:00 -
3078  {
3079  1 /*fromYearTiny*/,
3080  3 /*toYearTiny*/,
3081  3 /*inMonth*/,
3082  0 /*onDayOfWeek*/,
3083  21 /*onDayOfMonth*/,
3084  96 /*atTimeCode*/,
3085  'w' /*atTimeModifier*/,
3086  4 /*deltaCode*/,
3087  '-' /*letter*/,
3088  },
3089  // Rule Iran 2001 2003 - Sep 21 24:00 0 -
3090  {
3091  1 /*fromYearTiny*/,
3092  3 /*toYearTiny*/,
3093  9 /*inMonth*/,
3094  0 /*onDayOfWeek*/,
3095  21 /*onDayOfMonth*/,
3096  96 /*atTimeCode*/,
3097  'w' /*atTimeModifier*/,
3098  0 /*deltaCode*/,
3099  '-' /*letter*/,
3100  },
3101  // Rule Iran 2004 only - Mar 20 24:00 1:00 -
3102  {
3103  4 /*fromYearTiny*/,
3104  4 /*toYearTiny*/,
3105  3 /*inMonth*/,
3106  0 /*onDayOfWeek*/,
3107  20 /*onDayOfMonth*/,
3108  96 /*atTimeCode*/,
3109  'w' /*atTimeModifier*/,
3110  4 /*deltaCode*/,
3111  '-' /*letter*/,
3112  },
3113  // Rule Iran 2004 only - Sep 20 24:00 0 -
3114  {
3115  4 /*fromYearTiny*/,
3116  4 /*toYearTiny*/,
3117  9 /*inMonth*/,
3118  0 /*onDayOfWeek*/,
3119  20 /*onDayOfMonth*/,
3120  96 /*atTimeCode*/,
3121  'w' /*atTimeModifier*/,
3122  0 /*deltaCode*/,
3123  '-' /*letter*/,
3124  },
3125  // Rule Iran 2005 only - Mar 21 24:00 1:00 -
3126  {
3127  5 /*fromYearTiny*/,
3128  5 /*toYearTiny*/,
3129  3 /*inMonth*/,
3130  0 /*onDayOfWeek*/,
3131  21 /*onDayOfMonth*/,
3132  96 /*atTimeCode*/,
3133  'w' /*atTimeModifier*/,
3134  4 /*deltaCode*/,
3135  '-' /*letter*/,
3136  },
3137  // Rule Iran 2005 only - Sep 21 24:00 0 -
3138  {
3139  5 /*fromYearTiny*/,
3140  5 /*toYearTiny*/,
3141  9 /*inMonth*/,
3142  0 /*onDayOfWeek*/,
3143  21 /*onDayOfMonth*/,
3144  96 /*atTimeCode*/,
3145  'w' /*atTimeModifier*/,
3146  0 /*deltaCode*/,
3147  '-' /*letter*/,
3148  },
3149  // Rule Iran 2008 only - Mar 20 24:00 1:00 -
3150  {
3151  8 /*fromYearTiny*/,
3152  8 /*toYearTiny*/,
3153  3 /*inMonth*/,
3154  0 /*onDayOfWeek*/,
3155  20 /*onDayOfMonth*/,
3156  96 /*atTimeCode*/,
3157  'w' /*atTimeModifier*/,
3158  4 /*deltaCode*/,
3159  '-' /*letter*/,
3160  },
3161  // Rule Iran 2008 only - Sep 20 24:00 0 -
3162  {
3163  8 /*fromYearTiny*/,
3164  8 /*toYearTiny*/,
3165  9 /*inMonth*/,
3166  0 /*onDayOfWeek*/,
3167  20 /*onDayOfMonth*/,
3168  96 /*atTimeCode*/,
3169  'w' /*atTimeModifier*/,
3170  0 /*deltaCode*/,
3171  '-' /*letter*/,
3172  },
3173  // Rule Iran 2009 2011 - Mar 21 24:00 1:00 -
3174  {
3175  9 /*fromYearTiny*/,
3176  11 /*toYearTiny*/,
3177  3 /*inMonth*/,
3178  0 /*onDayOfWeek*/,
3179  21 /*onDayOfMonth*/,
3180  96 /*atTimeCode*/,
3181  'w' /*atTimeModifier*/,
3182  4 /*deltaCode*/,
3183  '-' /*letter*/,
3184  },
3185  // Rule Iran 2009 2011 - Sep 21 24:00 0 -
3186  {
3187  9 /*fromYearTiny*/,
3188  11 /*toYearTiny*/,
3189  9 /*inMonth*/,
3190  0 /*onDayOfWeek*/,
3191  21 /*onDayOfMonth*/,
3192  96 /*atTimeCode*/,
3193  'w' /*atTimeModifier*/,
3194  0 /*deltaCode*/,
3195  '-' /*letter*/,
3196  },
3197  // Rule Iran 2012 only - Mar 20 24:00 1:00 -
3198  {
3199  12 /*fromYearTiny*/,
3200  12 /*toYearTiny*/,
3201  3 /*inMonth*/,
3202  0 /*onDayOfWeek*/,
3203  20 /*onDayOfMonth*/,
3204  96 /*atTimeCode*/,
3205  'w' /*atTimeModifier*/,
3206  4 /*deltaCode*/,
3207  '-' /*letter*/,
3208  },
3209  // Rule Iran 2012 only - Sep 20 24:00 0 -
3210  {
3211  12 /*fromYearTiny*/,
3212  12 /*toYearTiny*/,
3213  9 /*inMonth*/,
3214  0 /*onDayOfWeek*/,
3215  20 /*onDayOfMonth*/,
3216  96 /*atTimeCode*/,
3217  'w' /*atTimeModifier*/,
3218  0 /*deltaCode*/,
3219  '-' /*letter*/,
3220  },
3221  // Rule Iran 2013 2015 - Mar 21 24:00 1:00 -
3222  {
3223  13 /*fromYearTiny*/,
3224  15 /*toYearTiny*/,
3225  3 /*inMonth*/,
3226  0 /*onDayOfWeek*/,
3227  21 /*onDayOfMonth*/,
3228  96 /*atTimeCode*/,
3229  'w' /*atTimeModifier*/,
3230  4 /*deltaCode*/,
3231  '-' /*letter*/,
3232  },
3233  // Rule Iran 2013 2015 - Sep 21 24:00 0 -
3234  {
3235  13 /*fromYearTiny*/,
3236  15 /*toYearTiny*/,
3237  9 /*inMonth*/,
3238  0 /*onDayOfWeek*/,
3239  21 /*onDayOfMonth*/,
3240  96 /*atTimeCode*/,
3241  'w' /*atTimeModifier*/,
3242  0 /*deltaCode*/,
3243  '-' /*letter*/,
3244  },
3245  // Rule Iran 2016 only - Mar 20 24:00 1:00 -
3246  {
3247  16 /*fromYearTiny*/,
3248  16 /*toYearTiny*/,
3249  3 /*inMonth*/,
3250  0 /*onDayOfWeek*/,
3251  20 /*onDayOfMonth*/,
3252  96 /*atTimeCode*/,
3253  'w' /*atTimeModifier*/,
3254  4 /*deltaCode*/,
3255  '-' /*letter*/,
3256  },
3257  // Rule Iran 2016 only - Sep 20 24:00 0 -
3258  {
3259  16 /*fromYearTiny*/,
3260  16 /*toYearTiny*/,
3261  9 /*inMonth*/,
3262  0 /*onDayOfWeek*/,
3263  20 /*onDayOfMonth*/,
3264  96 /*atTimeCode*/,
3265  'w' /*atTimeModifier*/,
3266  0 /*deltaCode*/,
3267  '-' /*letter*/,
3268  },
3269  // Rule Iran 2017 2019 - Mar 21 24:00 1:00 -
3270  {
3271  17 /*fromYearTiny*/,
3272  19 /*toYearTiny*/,
3273  3 /*inMonth*/,
3274  0 /*onDayOfWeek*/,
3275  21 /*onDayOfMonth*/,
3276  96 /*atTimeCode*/,
3277  'w' /*atTimeModifier*/,
3278  4 /*deltaCode*/,
3279  '-' /*letter*/,
3280  },
3281  // Rule Iran 2017 2019 - Sep 21 24:00 0 -
3282  {
3283  17 /*fromYearTiny*/,
3284  19 /*toYearTiny*/,
3285  9 /*inMonth*/,
3286  0 /*onDayOfWeek*/,
3287  21 /*onDayOfMonth*/,
3288  96 /*atTimeCode*/,
3289  'w' /*atTimeModifier*/,
3290  0 /*deltaCode*/,
3291  '-' /*letter*/,
3292  },
3293  // Rule Iran 2020 only - Mar 20 24:00 1:00 -
3294  {
3295  20 /*fromYearTiny*/,
3296  20 /*toYearTiny*/,
3297  3 /*inMonth*/,
3298  0 /*onDayOfWeek*/,
3299  20 /*onDayOfMonth*/,
3300  96 /*atTimeCode*/,
3301  'w' /*atTimeModifier*/,
3302  4 /*deltaCode*/,
3303  '-' /*letter*/,
3304  },
3305  // Rule Iran 2020 only - Sep 20 24:00 0 -
3306  {
3307  20 /*fromYearTiny*/,
3308  20 /*toYearTiny*/,
3309  9 /*inMonth*/,
3310  0 /*onDayOfWeek*/,
3311  20 /*onDayOfMonth*/,
3312  96 /*atTimeCode*/,
3313  'w' /*atTimeModifier*/,
3314  0 /*deltaCode*/,
3315  '-' /*letter*/,
3316  },
3317  // Rule Iran 2021 2023 - Mar 21 24:00 1:00 -
3318  {
3319  21 /*fromYearTiny*/,
3320  23 /*toYearTiny*/,
3321  3 /*inMonth*/,
3322  0 /*onDayOfWeek*/,
3323  21 /*onDayOfMonth*/,
3324  96 /*atTimeCode*/,
3325  'w' /*atTimeModifier*/,
3326  4 /*deltaCode*/,
3327  '-' /*letter*/,
3328  },
3329  // Rule Iran 2021 2023 - Sep 21 24:00 0 -
3330  {
3331  21 /*fromYearTiny*/,
3332  23 /*toYearTiny*/,
3333  9 /*inMonth*/,
3334  0 /*onDayOfWeek*/,
3335  21 /*onDayOfMonth*/,
3336  96 /*atTimeCode*/,
3337  'w' /*atTimeModifier*/,
3338  0 /*deltaCode*/,
3339  '-' /*letter*/,
3340  },
3341  // Rule Iran 2024 only - Mar 20 24:00 1:00 -
3342  {
3343  24 /*fromYearTiny*/,
3344  24 /*toYearTiny*/,
3345  3 /*inMonth*/,
3346  0 /*onDayOfWeek*/,
3347  20 /*onDayOfMonth*/,
3348  96 /*atTimeCode*/,
3349  'w' /*atTimeModifier*/,
3350  4 /*deltaCode*/,
3351  '-' /*letter*/,
3352  },
3353  // Rule Iran 2024 only - Sep 20 24:00 0 -
3354  {
3355  24 /*fromYearTiny*/,
3356  24 /*toYearTiny*/,
3357  9 /*inMonth*/,
3358  0 /*onDayOfWeek*/,
3359  20 /*onDayOfMonth*/,
3360  96 /*atTimeCode*/,
3361  'w' /*atTimeModifier*/,
3362  0 /*deltaCode*/,
3363  '-' /*letter*/,
3364  },
3365  // Rule Iran 2025 2027 - Mar 21 24:00 1:00 -
3366  {
3367  25 /*fromYearTiny*/,
3368  27 /*toYearTiny*/,
3369  3 /*inMonth*/,
3370  0 /*onDayOfWeek*/,
3371  21 /*onDayOfMonth*/,
3372  96 /*atTimeCode*/,
3373  'w' /*atTimeModifier*/,
3374  4 /*deltaCode*/,
3375  '-' /*letter*/,
3376  },
3377  // Rule Iran 2025 2027 - Sep 21 24:00 0 -
3378  {
3379  25 /*fromYearTiny*/,
3380  27 /*toYearTiny*/,
3381  9 /*inMonth*/,
3382  0 /*onDayOfWeek*/,
3383  21 /*onDayOfMonth*/,
3384  96 /*atTimeCode*/,
3385  'w' /*atTimeModifier*/,
3386  0 /*deltaCode*/,
3387  '-' /*letter*/,
3388  },
3389  // Rule Iran 2028 2029 - Mar 20 24:00 1:00 -
3390  {
3391  28 /*fromYearTiny*/,
3392  29 /*toYearTiny*/,
3393  3 /*inMonth*/,
3394  0 /*onDayOfWeek*/,
3395  20 /*onDayOfMonth*/,
3396  96 /*atTimeCode*/,
3397  'w' /*atTimeModifier*/,
3398  4 /*deltaCode*/,
3399  '-' /*letter*/,
3400  },
3401  // Rule Iran 2028 2029 - Sep 20 24:00 0 -
3402  {
3403  28 /*fromYearTiny*/,
3404  29 /*toYearTiny*/,
3405  9 /*inMonth*/,
3406  0 /*onDayOfWeek*/,
3407  20 /*onDayOfMonth*/,
3408  96 /*atTimeCode*/,
3409  'w' /*atTimeModifier*/,
3410  0 /*deltaCode*/,
3411  '-' /*letter*/,
3412  },
3413  // Rule Iran 2030 2031 - Mar 21 24:00 1:00 -
3414  {
3415  30 /*fromYearTiny*/,
3416  31 /*toYearTiny*/,
3417  3 /*inMonth*/,
3418  0 /*onDayOfWeek*/,
3419  21 /*onDayOfMonth*/,
3420  96 /*atTimeCode*/,
3421  'w' /*atTimeModifier*/,
3422  4 /*deltaCode*/,
3423  '-' /*letter*/,
3424  },
3425  // Rule Iran 2030 2031 - Sep 21 24:00 0 -
3426  {
3427  30 /*fromYearTiny*/,
3428  31 /*toYearTiny*/,
3429  9 /*inMonth*/,
3430  0 /*onDayOfWeek*/,
3431  21 /*onDayOfMonth*/,
3432  96 /*atTimeCode*/,
3433  'w' /*atTimeModifier*/,
3434  0 /*deltaCode*/,
3435  '-' /*letter*/,
3436  },
3437  // Rule Iran 2032 2033 - Mar 20 24:00 1:00 -
3438  {
3439  32 /*fromYearTiny*/,
3440  33 /*toYearTiny*/,
3441  3 /*inMonth*/,
3442  0 /*onDayOfWeek*/,
3443  20 /*onDayOfMonth*/,
3444  96 /*atTimeCode*/,
3445  'w' /*atTimeModifier*/,
3446  4 /*deltaCode*/,
3447  '-' /*letter*/,
3448  },
3449  // Rule Iran 2032 2033 - Sep 20 24:00 0 -
3450  {
3451  32 /*fromYearTiny*/,
3452  33 /*toYearTiny*/,
3453  9 /*inMonth*/,
3454  0 /*onDayOfWeek*/,
3455  20 /*onDayOfMonth*/,
3456  96 /*atTimeCode*/,
3457  'w' /*atTimeModifier*/,
3458  0 /*deltaCode*/,
3459  '-' /*letter*/,
3460  },
3461  // Rule Iran 2034 2035 - Mar 21 24:00 1:00 -
3462  {
3463  34 /*fromYearTiny*/,
3464  35 /*toYearTiny*/,
3465  3 /*inMonth*/,
3466  0 /*onDayOfWeek*/,
3467  21 /*onDayOfMonth*/,
3468  96 /*atTimeCode*/,
3469  'w' /*atTimeModifier*/,
3470  4 /*deltaCode*/,
3471  '-' /*letter*/,
3472  },
3473  // Rule Iran 2034 2035 - Sep 21 24:00 0 -
3474  {
3475  34 /*fromYearTiny*/,
3476  35 /*toYearTiny*/,
3477  9 /*inMonth*/,
3478  0 /*onDayOfWeek*/,
3479  21 /*onDayOfMonth*/,
3480  96 /*atTimeCode*/,
3481  'w' /*atTimeModifier*/,
3482  0 /*deltaCode*/,
3483  '-' /*letter*/,
3484  },
3485  // Rule Iran 2036 2037 - Mar 20 24:00 1:00 -
3486  {
3487  36 /*fromYearTiny*/,
3488  37 /*toYearTiny*/,
3489  3 /*inMonth*/,
3490  0 /*onDayOfWeek*/,
3491  20 /*onDayOfMonth*/,
3492  96 /*atTimeCode*/,
3493  'w' /*atTimeModifier*/,
3494  4 /*deltaCode*/,
3495  '-' /*letter*/,
3496  },
3497  // Rule Iran 2036 2037 - Sep 20 24:00 0 -
3498  {
3499  36 /*fromYearTiny*/,
3500  37 /*toYearTiny*/,
3501  9 /*inMonth*/,
3502  0 /*onDayOfWeek*/,
3503  20 /*onDayOfMonth*/,
3504  96 /*atTimeCode*/,
3505  'w' /*atTimeModifier*/,
3506  0 /*deltaCode*/,
3507  '-' /*letter*/,
3508  },
3509  // Rule Iran 2038 2039 - Mar 21 24:00 1:00 -
3510  {
3511  38 /*fromYearTiny*/,
3512  39 /*toYearTiny*/,
3513  3 /*inMonth*/,
3514  0 /*onDayOfWeek*/,
3515  21 /*onDayOfMonth*/,
3516  96 /*atTimeCode*/,
3517  'w' /*atTimeModifier*/,
3518  4 /*deltaCode*/,
3519  '-' /*letter*/,
3520  },
3521  // Rule Iran 2038 2039 - Sep 21 24:00 0 -
3522  {
3523  38 /*fromYearTiny*/,
3524  39 /*toYearTiny*/,
3525  9 /*inMonth*/,
3526  0 /*onDayOfWeek*/,
3527  21 /*onDayOfMonth*/,
3528  96 /*atTimeCode*/,
3529  'w' /*atTimeModifier*/,
3530  0 /*deltaCode*/,
3531  '-' /*letter*/,
3532  },
3533  // Rule Iran 2040 2041 - Mar 20 24:00 1:00 -
3534  {
3535  40 /*fromYearTiny*/,
3536  41 /*toYearTiny*/,
3537  3 /*inMonth*/,
3538  0 /*onDayOfWeek*/,
3539  20 /*onDayOfMonth*/,
3540  96 /*atTimeCode*/,
3541  'w' /*atTimeModifier*/,
3542  4 /*deltaCode*/,
3543  '-' /*letter*/,
3544  },
3545  // Rule Iran 2040 2041 - Sep 20 24:00 0 -
3546  {
3547  40 /*fromYearTiny*/,
3548  41 /*toYearTiny*/,
3549  9 /*inMonth*/,
3550  0 /*onDayOfWeek*/,
3551  20 /*onDayOfMonth*/,
3552  96 /*atTimeCode*/,
3553  'w' /*atTimeModifier*/,
3554  0 /*deltaCode*/,
3555  '-' /*letter*/,
3556  },
3557  // Rule Iran 2042 2043 - Mar 21 24:00 1:00 -
3558  {
3559  42 /*fromYearTiny*/,
3560  43 /*toYearTiny*/,
3561  3 /*inMonth*/,
3562  0 /*onDayOfWeek*/,
3563  21 /*onDayOfMonth*/,
3564  96 /*atTimeCode*/,
3565  'w' /*atTimeModifier*/,
3566  4 /*deltaCode*/,
3567  '-' /*letter*/,
3568  },
3569  // Rule Iran 2042 2043 - Sep 21 24:00 0 -
3570  {
3571  42 /*fromYearTiny*/,
3572  43 /*toYearTiny*/,
3573  9 /*inMonth*/,
3574  0 /*onDayOfWeek*/,
3575  21 /*onDayOfMonth*/,
3576  96 /*atTimeCode*/,
3577  'w' /*atTimeModifier*/,
3578  0 /*deltaCode*/,
3579  '-' /*letter*/,
3580  },
3581  // Rule Iran 2044 2045 - Mar 20 24:00 1:00 -
3582  {
3583  44 /*fromYearTiny*/,
3584  45 /*toYearTiny*/,
3585  3 /*inMonth*/,
3586  0 /*onDayOfWeek*/,
3587  20 /*onDayOfMonth*/,
3588  96 /*atTimeCode*/,
3589  'w' /*atTimeModifier*/,
3590  4 /*deltaCode*/,
3591  '-' /*letter*/,
3592  },
3593  // Rule Iran 2044 2045 - Sep 20 24:00 0 -
3594  {
3595  44 /*fromYearTiny*/,
3596  45 /*toYearTiny*/,
3597  9 /*inMonth*/,
3598  0 /*onDayOfWeek*/,
3599  20 /*onDayOfMonth*/,
3600  96 /*atTimeCode*/,
3601  'w' /*atTimeModifier*/,
3602  0 /*deltaCode*/,
3603  '-' /*letter*/,
3604  },
3605  // Rule Iran 2046 2047 - Mar 21 24:00 1:00 -
3606  {
3607  46 /*fromYearTiny*/,
3608  47 /*toYearTiny*/,
3609  3 /*inMonth*/,
3610  0 /*onDayOfWeek*/,
3611  21 /*onDayOfMonth*/,
3612  96 /*atTimeCode*/,
3613  'w' /*atTimeModifier*/,
3614  4 /*deltaCode*/,
3615  '-' /*letter*/,
3616  },
3617  // Rule Iran 2046 2047 - Sep 21 24:00 0 -
3618  {
3619  46 /*fromYearTiny*/,
3620  47 /*toYearTiny*/,
3621  9 /*inMonth*/,
3622  0 /*onDayOfWeek*/,
3623  21 /*onDayOfMonth*/,
3624  96 /*atTimeCode*/,
3625  'w' /*atTimeModifier*/,
3626  0 /*deltaCode*/,
3627  '-' /*letter*/,
3628  },
3629  // Rule Iran 2048 2049 - Mar 20 24:00 1:00 -
3630  {
3631  48 /*fromYearTiny*/,
3632  49 /*toYearTiny*/,
3633  3 /*inMonth*/,
3634  0 /*onDayOfWeek*/,
3635  20 /*onDayOfMonth*/,
3636  96 /*atTimeCode*/,
3637  'w' /*atTimeModifier*/,
3638  4 /*deltaCode*/,
3639  '-' /*letter*/,
3640  },
3641  // Rule Iran 2048 2049 - Sep 20 24:00 0 -
3642  {
3643  48 /*fromYearTiny*/,
3644  49 /*toYearTiny*/,
3645  9 /*inMonth*/,
3646  0 /*onDayOfWeek*/,
3647  20 /*onDayOfMonth*/,
3648  96 /*atTimeCode*/,
3649  'w' /*atTimeModifier*/,
3650  0 /*deltaCode*/,
3651  '-' /*letter*/,
3652  },
3653  // Rule Iran 2050 2051 - Mar 21 24:00 1:00 -
3654  {
3655  50 /*fromYearTiny*/,
3656  51 /*toYearTiny*/,
3657  3 /*inMonth*/,
3658  0 /*onDayOfWeek*/,
3659  21 /*onDayOfMonth*/,
3660  96 /*atTimeCode*/,
3661  'w' /*atTimeModifier*/,
3662  4 /*deltaCode*/,
3663  '-' /*letter*/,
3664  },
3665  // Rule Iran 2050 2051 - Sep 21 24:00 0 -
3666  {
3667  50 /*fromYearTiny*/,
3668  51 /*toYearTiny*/,
3669  9 /*inMonth*/,
3670  0 /*onDayOfWeek*/,
3671  21 /*onDayOfMonth*/,
3672  96 /*atTimeCode*/,
3673  'w' /*atTimeModifier*/,
3674  0 /*deltaCode*/,
3675  '-' /*letter*/,
3676  },
3677 
3678 };
3679 
3680 
3681 
3682 const extended::ZonePolicy kPolicyIran ACE_TIME_PROGMEM = {
3683  55 /*numRules*/,
3684  kZoneRulesIran /*rules*/,
3685  0 /* numLetters */,
3686  nullptr /* letters */,
3687 };
3688 
3689 //---------------------------------------------------------------------------
3690 // Policy name: Iraq
3691 // Rules: 3
3692 // Memory (8-bit): 33
3693 // Memory (32-bit): 37
3694 //---------------------------------------------------------------------------
3695 
3696 static const extended::ZoneRule kZoneRulesIraq[] ACE_TIME_PROGMEM = {
3697  // Rule Iraq 1985 1990 - Sep lastSun 1:00s 0 -
3698  {
3699  -15 /*fromYearTiny*/,
3700  -10 /*toYearTiny*/,
3701  9 /*inMonth*/,
3702  7 /*onDayOfWeek*/,
3703  0 /*onDayOfMonth*/,
3704  4 /*atTimeCode*/,
3705  's' /*atTimeModifier*/,
3706  0 /*deltaCode*/,
3707  '-' /*letter*/,
3708  },
3709  // Rule Iraq 1991 2007 - Apr 1 3:00s 1:00 -
3710  {
3711  -9 /*fromYearTiny*/,
3712  7 /*toYearTiny*/,
3713  4 /*inMonth*/,
3714  0 /*onDayOfWeek*/,
3715  1 /*onDayOfMonth*/,
3716  12 /*atTimeCode*/,
3717  's' /*atTimeModifier*/,
3718  4 /*deltaCode*/,
3719  '-' /*letter*/,
3720  },
3721  // Rule Iraq 1991 2007 - Oct 1 3:00s 0 -
3722  {
3723  -9 /*fromYearTiny*/,
3724  7 /*toYearTiny*/,
3725  10 /*inMonth*/,
3726  0 /*onDayOfWeek*/,
3727  1 /*onDayOfMonth*/,
3728  12 /*atTimeCode*/,
3729  's' /*atTimeModifier*/,
3730  0 /*deltaCode*/,
3731  '-' /*letter*/,
3732  },
3733 
3734 };
3735 
3736 
3737 
3738 const extended::ZonePolicy kPolicyIraq ACE_TIME_PROGMEM = {
3739  3 /*numRules*/,
3740  kZoneRulesIraq /*rules*/,
3741  0 /* numLetters */,
3742  nullptr /* letters */,
3743 };
3744 
3745 //---------------------------------------------------------------------------
3746 // Policy name: Japan
3747 // Rules: 1
3748 // Memory (8-bit): 15
3749 // Memory (32-bit): 19
3750 //---------------------------------------------------------------------------
3751 
3752 static const extended::ZoneRule kZoneRulesJapan[] ACE_TIME_PROGMEM = {
3753  // Rule Japan 1948 1951 - Sep Sat>=8 25:00 0 S
3754  {
3755  -52 /*fromYearTiny*/,
3756  -49 /*toYearTiny*/,
3757  9 /*inMonth*/,
3758  6 /*onDayOfWeek*/,
3759  8 /*onDayOfMonth*/,
3760  100 /*atTimeCode*/,
3761  'w' /*atTimeModifier*/,
3762  0 /*deltaCode*/,
3763  'S' /*letter*/,
3764  },
3765 
3766 };
3767 
3768 
3769 
3770 const extended::ZonePolicy kPolicyJapan ACE_TIME_PROGMEM = {
3771  1 /*numRules*/,
3772  kZoneRulesJapan /*rules*/,
3773  0 /* numLetters */,
3774  nullptr /* letters */,
3775 };
3776 
3777 //---------------------------------------------------------------------------
3778 // Policy name: Jordan
3779 // Rules: 12
3780 // Memory (8-bit): 114
3781 // Memory (32-bit): 118
3782 //---------------------------------------------------------------------------
3783 
3784 static const extended::ZoneRule kZoneRulesJordan[] ACE_TIME_PROGMEM = {
3785  // Rule Jordan 1995 1998 - Sep Fri>=15 0:00s 0 -
3786  {
3787  -5 /*fromYearTiny*/,
3788  -2 /*toYearTiny*/,
3789  9 /*inMonth*/,
3790  5 /*onDayOfWeek*/,
3791  15 /*onDayOfMonth*/,
3792  0 /*atTimeCode*/,
3793  's' /*atTimeModifier*/,
3794  0 /*deltaCode*/,
3795  '-' /*letter*/,
3796  },
3797  // Rule Jordan 1999 only - Jul 1 0:00s 1:00 S
3798  {
3799  -1 /*fromYearTiny*/,
3800  -1 /*toYearTiny*/,
3801  7 /*inMonth*/,
3802  0 /*onDayOfWeek*/,
3803  1 /*onDayOfMonth*/,
3804  0 /*atTimeCode*/,
3805  's' /*atTimeModifier*/,
3806  4 /*deltaCode*/,
3807  'S' /*letter*/,
3808  },
3809  // Rule Jordan 1999 2002 - Sep lastFri 0:00s 0 -
3810  {
3811  -1 /*fromYearTiny*/,
3812  2 /*toYearTiny*/,
3813  9 /*inMonth*/,
3814  5 /*onDayOfWeek*/,
3815  0 /*onDayOfMonth*/,
3816  0 /*atTimeCode*/,
3817  's' /*atTimeModifier*/,
3818  0 /*deltaCode*/,
3819  '-' /*letter*/,
3820  },
3821  // Rule Jordan 2000 2001 - Mar lastThu 0:00s 1:00 S
3822  {
3823  0 /*fromYearTiny*/,
3824  1 /*toYearTiny*/,
3825  3 /*inMonth*/,
3826  4 /*onDayOfWeek*/,
3827  0 /*onDayOfMonth*/,
3828  0 /*atTimeCode*/,
3829  's' /*atTimeModifier*/,
3830  4 /*deltaCode*/,
3831  'S' /*letter*/,
3832  },
3833  // Rule Jordan 2002 2012 - Mar lastThu 24:00 1:00 S
3834  {
3835  2 /*fromYearTiny*/,
3836  12 /*toYearTiny*/,
3837  3 /*inMonth*/,
3838  4 /*onDayOfWeek*/,
3839  0 /*onDayOfMonth*/,
3840  96 /*atTimeCode*/,
3841  'w' /*atTimeModifier*/,
3842  4 /*deltaCode*/,
3843  'S' /*letter*/,
3844  },
3845  // Rule Jordan 2003 only - Oct 24 0:00s 0 -
3846  {
3847  3 /*fromYearTiny*/,
3848  3 /*toYearTiny*/,
3849  10 /*inMonth*/,
3850  0 /*onDayOfWeek*/,
3851  24 /*onDayOfMonth*/,
3852  0 /*atTimeCode*/,
3853  's' /*atTimeModifier*/,
3854  0 /*deltaCode*/,
3855  '-' /*letter*/,
3856  },
3857  // Rule Jordan 2004 only - Oct 15 0:00s 0 -
3858  {
3859  4 /*fromYearTiny*/,
3860  4 /*toYearTiny*/,
3861  10 /*inMonth*/,
3862  0 /*onDayOfWeek*/,
3863  15 /*onDayOfMonth*/,
3864  0 /*atTimeCode*/,
3865  's' /*atTimeModifier*/,
3866  0 /*deltaCode*/,
3867  '-' /*letter*/,
3868  },
3869  // Rule Jordan 2005 only - Sep lastFri 0:00s 0 -
3870  {
3871  5 /*fromYearTiny*/,
3872  5 /*toYearTiny*/,
3873  9 /*inMonth*/,
3874  5 /*onDayOfWeek*/,
3875  0 /*onDayOfMonth*/,
3876  0 /*atTimeCode*/,
3877  's' /*atTimeModifier*/,
3878  0 /*deltaCode*/,
3879  '-' /*letter*/,
3880  },
3881  // Rule Jordan 2006 2011 - Oct lastFri 0:00s 0 -
3882  {
3883  6 /*fromYearTiny*/,
3884  11 /*toYearTiny*/,
3885  10 /*inMonth*/,
3886  5 /*onDayOfWeek*/,
3887  0 /*onDayOfMonth*/,
3888  0 /*atTimeCode*/,
3889  's' /*atTimeModifier*/,
3890  0 /*deltaCode*/,
3891  '-' /*letter*/,
3892  },
3893  // Rule Jordan 2013 only - Dec 20 0:00 0 -
3894  {
3895  13 /*fromYearTiny*/,
3896  13 /*toYearTiny*/,
3897  12 /*inMonth*/,
3898  0 /*onDayOfWeek*/,
3899  20 /*onDayOfMonth*/,
3900  0 /*atTimeCode*/,
3901  'w' /*atTimeModifier*/,
3902  0 /*deltaCode*/,
3903  '-' /*letter*/,
3904  },
3905  // Rule Jordan 2014 max - Mar lastThu 24:00 1:00 S
3906  {
3907  14 /*fromYearTiny*/,
3908  126 /*toYearTiny*/,
3909  3 /*inMonth*/,
3910  4 /*onDayOfWeek*/,
3911  0 /*onDayOfMonth*/,
3912  96 /*atTimeCode*/,
3913  'w' /*atTimeModifier*/,
3914  4 /*deltaCode*/,
3915  'S' /*letter*/,
3916  },
3917  // Rule Jordan 2014 max - Oct lastFri 0:00s 0 -
3918  {
3919  14 /*fromYearTiny*/,
3920  126 /*toYearTiny*/,
3921  10 /*inMonth*/,
3922  5 /*onDayOfWeek*/,
3923  0 /*onDayOfMonth*/,
3924  0 /*atTimeCode*/,
3925  's' /*atTimeModifier*/,
3926  0 /*deltaCode*/,
3927  '-' /*letter*/,
3928  },
3929 
3930 };
3931 
3932 
3933 
3934 const extended::ZonePolicy kPolicyJordan ACE_TIME_PROGMEM = {
3935  12 /*numRules*/,
3936  kZoneRulesJordan /*rules*/,
3937  0 /* numLetters */,
3938  nullptr /* letters */,
3939 };
3940 
3941 //---------------------------------------------------------------------------
3942 // Policy name: Kyrgyz
3943 // Rules: 3
3944 // Memory (8-bit): 33
3945 // Memory (32-bit): 37
3946 //---------------------------------------------------------------------------
3947 
3948 static const extended::ZoneRule kZoneRulesKyrgyz[] ACE_TIME_PROGMEM = {
3949  // Rule Kyrgyz 1992 1996 - Sep lastSun 0:00 0 -
3950  {
3951  -8 /*fromYearTiny*/,
3952  -4 /*toYearTiny*/,
3953  9 /*inMonth*/,
3954  7 /*onDayOfWeek*/,
3955  0 /*onDayOfMonth*/,
3956  0 /*atTimeCode*/,
3957  'w' /*atTimeModifier*/,
3958  0 /*deltaCode*/,
3959  '-' /*letter*/,
3960  },
3961  // Rule Kyrgyz 1997 2005 - Mar lastSun 2:30 1:00 -
3962  {
3963  -3 /*fromYearTiny*/,
3964  5 /*toYearTiny*/,
3965  3 /*inMonth*/,
3966  7 /*onDayOfWeek*/,
3967  0 /*onDayOfMonth*/,
3968  10 /*atTimeCode*/,
3969  'w' /*atTimeModifier*/,
3970  4 /*deltaCode*/,
3971  '-' /*letter*/,
3972  },
3973  // Rule Kyrgyz 1997 2004 - Oct lastSun 2:30 0 -
3974  {
3975  -3 /*fromYearTiny*/,
3976  4 /*toYearTiny*/,
3977  10 /*inMonth*/,
3978  7 /*onDayOfWeek*/,
3979  0 /*onDayOfMonth*/,
3980  10 /*atTimeCode*/,
3981  'w' /*atTimeModifier*/,
3982  0 /*deltaCode*/,
3983  '-' /*letter*/,
3984  },
3985 
3986 };
3987 
3988 
3989 
3990 const extended::ZonePolicy kPolicyKyrgyz ACE_TIME_PROGMEM = {
3991  3 /*numRules*/,
3992  kZoneRulesKyrgyz /*rules*/,
3993  0 /* numLetters */,
3994  nullptr /* letters */,
3995 };
3996 
3997 //---------------------------------------------------------------------------
3998 // Policy name: LH
3999 // Rules: 9
4000 // Memory (8-bit): 87
4001 // Memory (32-bit): 91
4002 //---------------------------------------------------------------------------
4003 
4004 static const extended::ZoneRule kZoneRulesLH[] ACE_TIME_PROGMEM = {
4005  // Rule LH 1987 1999 - Oct lastSun 2:00 0:30 -
4006  {
4007  -13 /*fromYearTiny*/,
4008  -1 /*toYearTiny*/,
4009  10 /*inMonth*/,
4010  7 /*onDayOfWeek*/,
4011  0 /*onDayOfMonth*/,
4012  8 /*atTimeCode*/,
4013  'w' /*atTimeModifier*/,
4014  2 /*deltaCode*/,
4015  '-' /*letter*/,
4016  },
4017  // Rule LH 1990 1995 - Mar Sun>=1 2:00 0 -
4018  {
4019  -10 /*fromYearTiny*/,
4020  -5 /*toYearTiny*/,
4021  3 /*inMonth*/,
4022  7 /*onDayOfWeek*/,
4023  1 /*onDayOfMonth*/,
4024  8 /*atTimeCode*/,
4025  'w' /*atTimeModifier*/,
4026  0 /*deltaCode*/,
4027  '-' /*letter*/,
4028  },
4029  // Rule LH 1996 2005 - Mar lastSun 2:00 0 -
4030  {
4031  -4 /*fromYearTiny*/,
4032  5 /*toYearTiny*/,
4033  3 /*inMonth*/,
4034  7 /*onDayOfWeek*/,
4035  0 /*onDayOfMonth*/,
4036  8 /*atTimeCode*/,
4037  'w' /*atTimeModifier*/,
4038  0 /*deltaCode*/,
4039  '-' /*letter*/,
4040  },
4041  // Rule LH 2000 only - Aug lastSun 2:00 0:30 -
4042  {
4043  0 /*fromYearTiny*/,
4044  0 /*toYearTiny*/,
4045  8 /*inMonth*/,
4046  7 /*onDayOfWeek*/,
4047  0 /*onDayOfMonth*/,
4048  8 /*atTimeCode*/,
4049  'w' /*atTimeModifier*/,
4050  2 /*deltaCode*/,
4051  '-' /*letter*/,
4052  },
4053  // Rule LH 2001 2007 - Oct lastSun 2:00 0:30 -
4054  {
4055  1 /*fromYearTiny*/,
4056  7 /*toYearTiny*/,
4057  10 /*inMonth*/,
4058  7 /*onDayOfWeek*/,
4059  0 /*onDayOfMonth*/,
4060  8 /*atTimeCode*/,
4061  'w' /*atTimeModifier*/,
4062  2 /*deltaCode*/,
4063  '-' /*letter*/,
4064  },
4065  // Rule LH 2006 only - Apr Sun>=1 2:00 0 -
4066  {
4067  6 /*fromYearTiny*/,
4068  6 /*toYearTiny*/,
4069  4 /*inMonth*/,
4070  7 /*onDayOfWeek*/,
4071  1 /*onDayOfMonth*/,
4072  8 /*atTimeCode*/,
4073  'w' /*atTimeModifier*/,
4074  0 /*deltaCode*/,
4075  '-' /*letter*/,
4076  },
4077  // Rule LH 2007 only - Mar lastSun 2:00 0 -
4078  {
4079  7 /*fromYearTiny*/,
4080  7 /*toYearTiny*/,
4081  3 /*inMonth*/,
4082  7 /*onDayOfWeek*/,
4083  0 /*onDayOfMonth*/,
4084  8 /*atTimeCode*/,
4085  'w' /*atTimeModifier*/,
4086  0 /*deltaCode*/,
4087  '-' /*letter*/,
4088  },
4089  // Rule LH 2008 max - Apr Sun>=1 2:00 0 -
4090  {
4091  8 /*fromYearTiny*/,
4092  126 /*toYearTiny*/,
4093  4 /*inMonth*/,
4094  7 /*onDayOfWeek*/,
4095  1 /*onDayOfMonth*/,
4096  8 /*atTimeCode*/,
4097  'w' /*atTimeModifier*/,
4098  0 /*deltaCode*/,
4099  '-' /*letter*/,
4100  },
4101  // Rule LH 2008 max - Oct Sun>=1 2:00 0:30 -
4102  {
4103  8 /*fromYearTiny*/,
4104  126 /*toYearTiny*/,
4105  10 /*inMonth*/,
4106  7 /*onDayOfWeek*/,
4107  1 /*onDayOfMonth*/,
4108  8 /*atTimeCode*/,
4109  'w' /*atTimeModifier*/,
4110  2 /*deltaCode*/,
4111  '-' /*letter*/,
4112  },
4113 
4114 };
4115 
4116 
4117 
4118 const extended::ZonePolicy kPolicyLH ACE_TIME_PROGMEM = {
4119  9 /*numRules*/,
4120  kZoneRulesLH /*rules*/,
4121  0 /* numLetters */,
4122  nullptr /* letters */,
4123 };
4124 
4125 //---------------------------------------------------------------------------
4126 // Policy name: Lebanon
4127 // Rules: 3
4128 // Memory (8-bit): 33
4129 // Memory (32-bit): 37
4130 //---------------------------------------------------------------------------
4131 
4132 static const extended::ZoneRule kZoneRulesLebanon[] ACE_TIME_PROGMEM = {
4133  // Rule Lebanon 1993 max - Mar lastSun 0:00 1:00 S
4134  {
4135  -7 /*fromYearTiny*/,
4136  126 /*toYearTiny*/,
4137  3 /*inMonth*/,
4138  7 /*onDayOfWeek*/,
4139  0 /*onDayOfMonth*/,
4140  0 /*atTimeCode*/,
4141  'w' /*atTimeModifier*/,
4142  4 /*deltaCode*/,
4143  'S' /*letter*/,
4144  },
4145  // Rule Lebanon 1993 1998 - Sep lastSun 0:00 0 -
4146  {
4147  -7 /*fromYearTiny*/,
4148  -2 /*toYearTiny*/,
4149  9 /*inMonth*/,
4150  7 /*onDayOfWeek*/,
4151  0 /*onDayOfMonth*/,
4152  0 /*atTimeCode*/,
4153  'w' /*atTimeModifier*/,
4154  0 /*deltaCode*/,
4155  '-' /*letter*/,
4156  },
4157  // Rule Lebanon 1999 max - Oct lastSun 0:00 0 -
4158  {
4159  -1 /*fromYearTiny*/,
4160  126 /*toYearTiny*/,
4161  10 /*inMonth*/,
4162  7 /*onDayOfWeek*/,
4163  0 /*onDayOfMonth*/,
4164  0 /*atTimeCode*/,
4165  'w' /*atTimeModifier*/,
4166  0 /*deltaCode*/,
4167  '-' /*letter*/,
4168  },
4169 
4170 };
4171 
4172 
4173 
4174 const extended::ZonePolicy kPolicyLebanon ACE_TIME_PROGMEM = {
4175  3 /*numRules*/,
4176  kZoneRulesLebanon /*rules*/,
4177  0 /* numLetters */,
4178  nullptr /* letters */,
4179 };
4180 
4181 //---------------------------------------------------------------------------
4182 // Policy name: Libya
4183 // Rules: 3
4184 // Memory (8-bit): 33
4185 // Memory (32-bit): 37
4186 //---------------------------------------------------------------------------
4187 
4188 static const extended::ZoneRule kZoneRulesLibya[] ACE_TIME_PROGMEM = {
4189  // Rule Libya 1997 only - Oct 4 0:00 0 -
4190  {
4191  -3 /*fromYearTiny*/,
4192  -3 /*toYearTiny*/,
4193  10 /*inMonth*/,
4194  0 /*onDayOfWeek*/,
4195  4 /*onDayOfMonth*/,
4196  0 /*atTimeCode*/,
4197  'w' /*atTimeModifier*/,
4198  0 /*deltaCode*/,
4199  '-' /*letter*/,
4200  },
4201  // Rule Libya 2013 only - Mar lastFri 1:00 1:00 S
4202  {
4203  13 /*fromYearTiny*/,
4204  13 /*toYearTiny*/,
4205  3 /*inMonth*/,
4206  5 /*onDayOfWeek*/,
4207  0 /*onDayOfMonth*/,
4208  4 /*atTimeCode*/,
4209  'w' /*atTimeModifier*/,
4210  4 /*deltaCode*/,
4211  'S' /*letter*/,
4212  },
4213  // Rule Libya 2013 only - Oct lastFri 2:00 0 -
4214  {
4215  13 /*fromYearTiny*/,
4216  13 /*toYearTiny*/,
4217  10 /*inMonth*/,
4218  5 /*onDayOfWeek*/,
4219  0 /*onDayOfMonth*/,
4220  8 /*atTimeCode*/,
4221  'w' /*atTimeModifier*/,
4222  0 /*deltaCode*/,
4223  '-' /*letter*/,
4224  },
4225 
4226 };
4227 
4228 
4229 
4230 const extended::ZonePolicy kPolicyLibya ACE_TIME_PROGMEM = {
4231  3 /*numRules*/,
4232  kZoneRulesLibya /*rules*/,
4233  0 /* numLetters */,
4234  nullptr /* letters */,
4235 };
4236 
4237 //---------------------------------------------------------------------------
4238 // Policy name: Macau
4239 // Rules: 1
4240 // Memory (8-bit): 15
4241 // Memory (32-bit): 19
4242 //---------------------------------------------------------------------------
4243 
4244 static const extended::ZoneRule kZoneRulesMacau[] ACE_TIME_PROGMEM = {
4245  // Rule Macau 1979 only - Oct Sun>=16 03:30 0 S
4246  {
4247  -21 /*fromYearTiny*/,
4248  -21 /*toYearTiny*/,
4249  10 /*inMonth*/,
4250  7 /*onDayOfWeek*/,
4251  16 /*onDayOfMonth*/,
4252  14 /*atTimeCode*/,
4253  'w' /*atTimeModifier*/,
4254  0 /*deltaCode*/,
4255  'S' /*letter*/,
4256  },
4257 
4258 };
4259 
4260 
4261 
4262 const extended::ZonePolicy kPolicyMacau ACE_TIME_PROGMEM = {
4263  1 /*numRules*/,
4264  kZoneRulesMacau /*rules*/,
4265  0 /* numLetters */,
4266  nullptr /* letters */,
4267 };
4268 
4269 //---------------------------------------------------------------------------
4270 // Policy name: Mauritius
4271 // Rules: 3
4272 // Memory (8-bit): 33
4273 // Memory (32-bit): 37
4274 //---------------------------------------------------------------------------
4275 
4276 static const extended::ZoneRule kZoneRulesMauritius[] ACE_TIME_PROGMEM = {
4277  // Rule Mauritius 1983 only - Mar 21 0:00 0 -
4278  {
4279  -17 /*fromYearTiny*/,
4280  -17 /*toYearTiny*/,
4281  3 /*inMonth*/,
4282  0 /*onDayOfWeek*/,
4283  21 /*onDayOfMonth*/,
4284  0 /*atTimeCode*/,
4285  'w' /*atTimeModifier*/,
4286  0 /*deltaCode*/,
4287  '-' /*letter*/,
4288  },
4289  // Rule Mauritius 2008 only - Oct lastSun 2:00 1:00 -
4290  {
4291  8 /*fromYearTiny*/,
4292  8 /*toYearTiny*/,
4293  10 /*inMonth*/,
4294  7 /*onDayOfWeek*/,
4295  0 /*onDayOfMonth*/,
4296  8 /*atTimeCode*/,
4297  'w' /*atTimeModifier*/,
4298  4 /*deltaCode*/,
4299  '-' /*letter*/,
4300  },
4301  // Rule Mauritius 2009 only - Mar lastSun 2:00 0 -
4302  {
4303  9 /*fromYearTiny*/,
4304  9 /*toYearTiny*/,
4305  3 /*inMonth*/,
4306  7 /*onDayOfWeek*/,
4307  0 /*onDayOfMonth*/,
4308  8 /*atTimeCode*/,
4309  'w' /*atTimeModifier*/,
4310  0 /*deltaCode*/,
4311  '-' /*letter*/,
4312  },
4313 
4314 };
4315 
4316 
4317 
4318 const extended::ZonePolicy kPolicyMauritius ACE_TIME_PROGMEM = {
4319  3 /*numRules*/,
4320  kZoneRulesMauritius /*rules*/,
4321  0 /* numLetters */,
4322  nullptr /* letters */,
4323 };
4324 
4325 //---------------------------------------------------------------------------
4326 // Policy name: Mexico
4327 // Rules: 7
4328 // Memory (8-bit): 69
4329 // Memory (32-bit): 73
4330 //---------------------------------------------------------------------------
4331 
4332 static const extended::ZoneRule kZoneRulesMexico[] ACE_TIME_PROGMEM = {
4333  // Rule Mexico 1950 only - Jul 30 0:00 0 S
4334  {
4335  -50 /*fromYearTiny*/,
4336  -50 /*toYearTiny*/,
4337  7 /*inMonth*/,
4338  0 /*onDayOfWeek*/,
4339  30 /*onDayOfMonth*/,
4340  0 /*atTimeCode*/,
4341  'w' /*atTimeModifier*/,
4342  0 /*deltaCode*/,
4343  'S' /*letter*/,
4344  },
4345  // Rule Mexico 1996 2000 - Apr Sun>=1 2:00 1:00 D
4346  {
4347  -4 /*fromYearTiny*/,
4348  0 /*toYearTiny*/,
4349  4 /*inMonth*/,
4350  7 /*onDayOfWeek*/,
4351  1 /*onDayOfMonth*/,
4352  8 /*atTimeCode*/,
4353  'w' /*atTimeModifier*/,
4354  4 /*deltaCode*/,
4355  'D' /*letter*/,
4356  },
4357  // Rule Mexico 1996 2000 - Oct lastSun 2:00 0 S
4358  {
4359  -4 /*fromYearTiny*/,
4360  0 /*toYearTiny*/,
4361  10 /*inMonth*/,
4362  7 /*onDayOfWeek*/,
4363  0 /*onDayOfMonth*/,
4364  8 /*atTimeCode*/,
4365  'w' /*atTimeModifier*/,
4366  0 /*deltaCode*/,
4367  'S' /*letter*/,
4368  },
4369  // Rule Mexico 2001 only - May Sun>=1 2:00 1:00 D
4370  {
4371  1 /*fromYearTiny*/,
4372  1 /*toYearTiny*/,
4373  5 /*inMonth*/,
4374  7 /*onDayOfWeek*/,
4375  1 /*onDayOfMonth*/,
4376  8 /*atTimeCode*/,
4377  'w' /*atTimeModifier*/,
4378  4 /*deltaCode*/,
4379  'D' /*letter*/,
4380  },
4381  // Rule Mexico 2001 only - Sep lastSun 2:00 0 S
4382  {
4383  1 /*fromYearTiny*/,
4384  1 /*toYearTiny*/,
4385  9 /*inMonth*/,
4386  7 /*onDayOfWeek*/,
4387  0 /*onDayOfMonth*/,
4388  8 /*atTimeCode*/,
4389  'w' /*atTimeModifier*/,
4390  0 /*deltaCode*/,
4391  'S' /*letter*/,
4392  },
4393  // Rule Mexico 2002 max - Apr Sun>=1 2:00 1:00 D
4394  {
4395  2 /*fromYearTiny*/,
4396  126 /*toYearTiny*/,
4397  4 /*inMonth*/,
4398  7 /*onDayOfWeek*/,
4399  1 /*onDayOfMonth*/,
4400  8 /*atTimeCode*/,
4401  'w' /*atTimeModifier*/,
4402  4 /*deltaCode*/,
4403  'D' /*letter*/,
4404  },
4405  // Rule Mexico 2002 max - Oct lastSun 2:00 0 S
4406  {
4407  2 /*fromYearTiny*/,
4408  126 /*toYearTiny*/,
4409  10 /*inMonth*/,
4410  7 /*onDayOfWeek*/,
4411  0 /*onDayOfMonth*/,
4412  8 /*atTimeCode*/,
4413  'w' /*atTimeModifier*/,
4414  0 /*deltaCode*/,
4415  'S' /*letter*/,
4416  },
4417 
4418 };
4419 
4420 
4421 
4422 const extended::ZonePolicy kPolicyMexico ACE_TIME_PROGMEM = {
4423  7 /*numRules*/,
4424  kZoneRulesMexico /*rules*/,
4425  0 /* numLetters */,
4426  nullptr /* letters */,
4427 };
4428 
4429 //---------------------------------------------------------------------------
4430 // Policy name: Moldova
4431 // Rules: 2
4432 // Memory (8-bit): 24
4433 // Memory (32-bit): 28
4434 //---------------------------------------------------------------------------
4435 
4436 static const extended::ZoneRule kZoneRulesMoldova[] ACE_TIME_PROGMEM = {
4437  // Rule Moldova 1997 max - Mar lastSun 2:00 1:00 S
4438  {
4439  -3 /*fromYearTiny*/,
4440  126 /*toYearTiny*/,
4441  3 /*inMonth*/,
4442  7 /*onDayOfWeek*/,
4443  0 /*onDayOfMonth*/,
4444  8 /*atTimeCode*/,
4445  'w' /*atTimeModifier*/,
4446  4 /*deltaCode*/,
4447  'S' /*letter*/,
4448  },
4449  // Rule Moldova 1997 max - Oct lastSun 3:00 0 -
4450  {
4451  -3 /*fromYearTiny*/,
4452  126 /*toYearTiny*/,
4453  10 /*inMonth*/,
4454  7 /*onDayOfWeek*/,
4455  0 /*onDayOfMonth*/,
4456  12 /*atTimeCode*/,
4457  'w' /*atTimeModifier*/,
4458  0 /*deltaCode*/,
4459  '-' /*letter*/,
4460  },
4461 
4462 };
4463 
4464 
4465 
4466 const extended::ZonePolicy kPolicyMoldova ACE_TIME_PROGMEM = {
4467  2 /*numRules*/,
4468  kZoneRulesMoldova /*rules*/,
4469  0 /* numLetters */,
4470  nullptr /* letters */,
4471 };
4472 
4473 //---------------------------------------------------------------------------
4474 // Policy name: Moncton
4475 // Rules: 3
4476 // Memory (8-bit): 33
4477 // Memory (32-bit): 37
4478 //---------------------------------------------------------------------------
4479 
4480 static const extended::ZoneRule kZoneRulesMoncton[] ACE_TIME_PROGMEM = {
4481  // Rule Moncton 1957 1972 - Oct lastSun 2:00 0 S
4482  {
4483  -43 /*fromYearTiny*/,
4484  -28 /*toYearTiny*/,
4485  10 /*inMonth*/,
4486  7 /*onDayOfWeek*/,
4487  0 /*onDayOfMonth*/,
4488  8 /*atTimeCode*/,
4489  'w' /*atTimeModifier*/,
4490  0 /*deltaCode*/,
4491  'S' /*letter*/,
4492  },
4493  // Rule Moncton 1993 2006 - Apr Sun>=1 0:01 1:00 D
4494  {
4495  -7 /*fromYearTiny*/,
4496  6 /*toYearTiny*/,
4497  4 /*inMonth*/,
4498  7 /*onDayOfWeek*/,
4499  1 /*onDayOfMonth*/,
4500  0 /*atTimeCode*/,
4501  'w' /*atTimeModifier*/,
4502  4 /*deltaCode*/,
4503  'D' /*letter*/,
4504  },
4505  // Rule Moncton 1993 2006 - Oct lastSun 0:01 0 S
4506  {
4507  -7 /*fromYearTiny*/,
4508  6 /*toYearTiny*/,
4509  10 /*inMonth*/,
4510  7 /*onDayOfWeek*/,
4511  0 /*onDayOfMonth*/,
4512  0 /*atTimeCode*/,
4513  'w' /*atTimeModifier*/,
4514  0 /*deltaCode*/,
4515  'S' /*letter*/,
4516  },
4517 
4518 };
4519 
4520 
4521 
4522 const extended::ZonePolicy kPolicyMoncton ACE_TIME_PROGMEM = {
4523  3 /*numRules*/,
4524  kZoneRulesMoncton /*rules*/,
4525  0 /* numLetters */,
4526  nullptr /* letters */,
4527 };
4528 
4529 //---------------------------------------------------------------------------
4530 // Policy name: Mongol
4531 // Rules: 6
4532 // Memory (8-bit): 60
4533 // Memory (32-bit): 64
4534 //---------------------------------------------------------------------------
4535 
4536 static const extended::ZoneRule kZoneRulesMongol[] ACE_TIME_PROGMEM = {
4537  // Rule Mongol 1984 1998 - Sep lastSun 0:00 0 -
4538  {
4539  -16 /*fromYearTiny*/,
4540  -2 /*toYearTiny*/,
4541  9 /*inMonth*/,
4542  7 /*onDayOfWeek*/,
4543  0 /*onDayOfMonth*/,
4544  0 /*atTimeCode*/,
4545  'w' /*atTimeModifier*/,
4546  0 /*deltaCode*/,
4547  '-' /*letter*/,
4548  },
4549  // Rule Mongol 2001 only - Apr lastSat 2:00 1:00 -
4550  {
4551  1 /*fromYearTiny*/,
4552  1 /*toYearTiny*/,
4553  4 /*inMonth*/,
4554  6 /*onDayOfWeek*/,
4555  0 /*onDayOfMonth*/,
4556  8 /*atTimeCode*/,
4557  'w' /*atTimeModifier*/,
4558  4 /*deltaCode*/,
4559  '-' /*letter*/,
4560  },
4561  // Rule Mongol 2001 2006 - Sep lastSat 2:00 0 -
4562  {
4563  1 /*fromYearTiny*/,
4564  6 /*toYearTiny*/,
4565  9 /*inMonth*/,
4566  6 /*onDayOfWeek*/,
4567  0 /*onDayOfMonth*/,
4568  8 /*atTimeCode*/,
4569  'w' /*atTimeModifier*/,
4570  0 /*deltaCode*/,
4571  '-' /*letter*/,
4572  },
4573  // Rule Mongol 2002 2006 - Mar lastSat 2:00 1:00 -
4574  {
4575  2 /*fromYearTiny*/,
4576  6 /*toYearTiny*/,
4577  3 /*inMonth*/,
4578  6 /*onDayOfWeek*/,
4579  0 /*onDayOfMonth*/,
4580  8 /*atTimeCode*/,
4581  'w' /*atTimeModifier*/,
4582  4 /*deltaCode*/,
4583  '-' /*letter*/,
4584  },
4585  // Rule Mongol 2015 2016 - Mar lastSat 2:00 1:00 -
4586  {
4587  15 /*fromYearTiny*/,
4588  16 /*toYearTiny*/,
4589  3 /*inMonth*/,
4590  6 /*onDayOfWeek*/,
4591  0 /*onDayOfMonth*/,
4592  8 /*atTimeCode*/,
4593  'w' /*atTimeModifier*/,
4594  4 /*deltaCode*/,
4595  '-' /*letter*/,
4596  },
4597  // Rule Mongol 2015 2016 - Sep lastSat 0:00 0 -
4598  {
4599  15 /*fromYearTiny*/,
4600  16 /*toYearTiny*/,
4601  9 /*inMonth*/,
4602  6 /*onDayOfWeek*/,
4603  0 /*onDayOfMonth*/,
4604  0 /*atTimeCode*/,
4605  'w' /*atTimeModifier*/,
4606  0 /*deltaCode*/,
4607  '-' /*letter*/,
4608  },
4609 
4610 };
4611 
4612 
4613 
4614 const extended::ZonePolicy kPolicyMongol ACE_TIME_PROGMEM = {
4615  6 /*numRules*/,
4616  kZoneRulesMongol /*rules*/,
4617  0 /* numLetters */,
4618  nullptr /* letters */,
4619 };
4620 
4621 //---------------------------------------------------------------------------
4622 // Policy name: Morocco
4623 // Rules: 67
4624 // Memory (8-bit): 609
4625 // Memory (32-bit): 613
4626 //---------------------------------------------------------------------------
4627 
4628 static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = {
4629  // Rule Morocco 1978 only - Aug 4 0:00 0 -
4630  {
4631  -22 /*fromYearTiny*/,
4632  -22 /*toYearTiny*/,
4633  8 /*inMonth*/,
4634  0 /*onDayOfWeek*/,
4635  4 /*onDayOfMonth*/,
4636  0 /*atTimeCode*/,
4637  'w' /*atTimeModifier*/,
4638  0 /*deltaCode*/,
4639  '-' /*letter*/,
4640  },
4641  // Rule Morocco 2008 only - Jun 1 0:00 1:00 -
4642  {
4643  8 /*fromYearTiny*/,
4644  8 /*toYearTiny*/,
4645  6 /*inMonth*/,
4646  0 /*onDayOfWeek*/,
4647  1 /*onDayOfMonth*/,
4648  0 /*atTimeCode*/,
4649  'w' /*atTimeModifier*/,
4650  4 /*deltaCode*/,
4651  '-' /*letter*/,
4652  },
4653  // Rule Morocco 2008 only - Sep 1 0:00 0 -
4654  {
4655  8 /*fromYearTiny*/,
4656  8 /*toYearTiny*/,
4657  9 /*inMonth*/,
4658  0 /*onDayOfWeek*/,
4659  1 /*onDayOfMonth*/,
4660  0 /*atTimeCode*/,
4661  'w' /*atTimeModifier*/,
4662  0 /*deltaCode*/,
4663  '-' /*letter*/,
4664  },
4665  // Rule Morocco 2009 only - Jun 1 0:00 1:00 -
4666  {
4667  9 /*fromYearTiny*/,
4668  9 /*toYearTiny*/,
4669  6 /*inMonth*/,
4670  0 /*onDayOfWeek*/,
4671  1 /*onDayOfMonth*/,
4672  0 /*atTimeCode*/,
4673  'w' /*atTimeModifier*/,
4674  4 /*deltaCode*/,
4675  '-' /*letter*/,
4676  },
4677  // Rule Morocco 2009 only - Aug 21 0:00 0 -
4678  {
4679  9 /*fromYearTiny*/,
4680  9 /*toYearTiny*/,
4681  8 /*inMonth*/,
4682  0 /*onDayOfWeek*/,
4683  21 /*onDayOfMonth*/,
4684  0 /*atTimeCode*/,
4685  'w' /*atTimeModifier*/,
4686  0 /*deltaCode*/,
4687  '-' /*letter*/,
4688  },
4689  // Rule Morocco 2010 only - May 2 0:00 1:00 -
4690  {
4691  10 /*fromYearTiny*/,
4692  10 /*toYearTiny*/,
4693  5 /*inMonth*/,
4694  0 /*onDayOfWeek*/,
4695  2 /*onDayOfMonth*/,
4696  0 /*atTimeCode*/,
4697  'w' /*atTimeModifier*/,
4698  4 /*deltaCode*/,
4699  '-' /*letter*/,
4700  },
4701  // Rule Morocco 2010 only - Aug 8 0:00 0 -
4702  {
4703  10 /*fromYearTiny*/,
4704  10 /*toYearTiny*/,
4705  8 /*inMonth*/,
4706  0 /*onDayOfWeek*/,
4707  8 /*onDayOfMonth*/,
4708  0 /*atTimeCode*/,
4709  'w' /*atTimeModifier*/,
4710  0 /*deltaCode*/,
4711  '-' /*letter*/,
4712  },
4713  // Rule Morocco 2011 only - Apr 3 0:00 1:00 -
4714  {
4715  11 /*fromYearTiny*/,
4716  11 /*toYearTiny*/,
4717  4 /*inMonth*/,
4718  0 /*onDayOfWeek*/,
4719  3 /*onDayOfMonth*/,
4720  0 /*atTimeCode*/,
4721  'w' /*atTimeModifier*/,
4722  4 /*deltaCode*/,
4723  '-' /*letter*/,
4724  },
4725  // Rule Morocco 2011 only - Jul 31 0:00 0 -
4726  {
4727  11 /*fromYearTiny*/,
4728  11 /*toYearTiny*/,
4729  7 /*inMonth*/,
4730  0 /*onDayOfWeek*/,
4731  31 /*onDayOfMonth*/,
4732  0 /*atTimeCode*/,
4733  'w' /*atTimeModifier*/,
4734  0 /*deltaCode*/,
4735  '-' /*letter*/,
4736  },
4737  // Rule Morocco 2012 2013 - Apr lastSun 2:00 1:00 -
4738  {
4739  12 /*fromYearTiny*/,
4740  13 /*toYearTiny*/,
4741  4 /*inMonth*/,
4742  7 /*onDayOfWeek*/,
4743  0 /*onDayOfMonth*/,
4744  8 /*atTimeCode*/,
4745  'w' /*atTimeModifier*/,
4746  4 /*deltaCode*/,
4747  '-' /*letter*/,
4748  },
4749  // Rule Morocco 2012 only - Jul 20 3:00 0 -
4750  {
4751  12 /*fromYearTiny*/,
4752  12 /*toYearTiny*/,
4753  7 /*inMonth*/,
4754  0 /*onDayOfWeek*/,
4755  20 /*onDayOfMonth*/,
4756  12 /*atTimeCode*/,
4757  'w' /*atTimeModifier*/,
4758  0 /*deltaCode*/,
4759  '-' /*letter*/,
4760  },
4761  // Rule Morocco 2012 only - Aug 20 2:00 1:00 -
4762  {
4763  12 /*fromYearTiny*/,
4764  12 /*toYearTiny*/,
4765  8 /*inMonth*/,
4766  0 /*onDayOfWeek*/,
4767  20 /*onDayOfMonth*/,
4768  8 /*atTimeCode*/,
4769  'w' /*atTimeModifier*/,
4770  4 /*deltaCode*/,
4771  '-' /*letter*/,
4772  },
4773  // Rule Morocco 2012 only - Sep 30 3:00 0 -
4774  {
4775  12 /*fromYearTiny*/,
4776  12 /*toYearTiny*/,
4777  9 /*inMonth*/,
4778  0 /*onDayOfWeek*/,
4779  30 /*onDayOfMonth*/,
4780  12 /*atTimeCode*/,
4781  'w' /*atTimeModifier*/,
4782  0 /*deltaCode*/,
4783  '-' /*letter*/,
4784  },
4785  // Rule Morocco 2013 only - Jul 7 3:00 0 -
4786  {
4787  13 /*fromYearTiny*/,
4788  13 /*toYearTiny*/,
4789  7 /*inMonth*/,
4790  0 /*onDayOfWeek*/,
4791  7 /*onDayOfMonth*/,
4792  12 /*atTimeCode*/,
4793  'w' /*atTimeModifier*/,
4794  0 /*deltaCode*/,
4795  '-' /*letter*/,
4796  },
4797  // Rule Morocco 2013 only - Aug 10 2:00 1:00 -
4798  {
4799  13 /*fromYearTiny*/,
4800  13 /*toYearTiny*/,
4801  8 /*inMonth*/,
4802  0 /*onDayOfWeek*/,
4803  10 /*onDayOfMonth*/,
4804  8 /*atTimeCode*/,
4805  'w' /*atTimeModifier*/,
4806  4 /*deltaCode*/,
4807  '-' /*letter*/,
4808  },
4809  // Rule Morocco 2013 2018 - Oct lastSun 3:00 0 -
4810  {
4811  13 /*fromYearTiny*/,
4812  18 /*toYearTiny*/,
4813  10 /*inMonth*/,
4814  7 /*onDayOfWeek*/,
4815  0 /*onDayOfMonth*/,
4816  12 /*atTimeCode*/,
4817  'w' /*atTimeModifier*/,
4818  0 /*deltaCode*/,
4819  '-' /*letter*/,
4820  },
4821  // Rule Morocco 2014 2018 - Mar lastSun 2:00 1:00 -
4822  {
4823  14 /*fromYearTiny*/,
4824  18 /*toYearTiny*/,
4825  3 /*inMonth*/,
4826  7 /*onDayOfWeek*/,
4827  0 /*onDayOfMonth*/,
4828  8 /*atTimeCode*/,
4829  'w' /*atTimeModifier*/,
4830  4 /*deltaCode*/,
4831  '-' /*letter*/,
4832  },
4833  // Rule Morocco 2014 only - Jun 28 3:00 0 -
4834  {
4835  14 /*fromYearTiny*/,
4836  14 /*toYearTiny*/,
4837  6 /*inMonth*/,
4838  0 /*onDayOfWeek*/,
4839  28 /*onDayOfMonth*/,
4840  12 /*atTimeCode*/,
4841  'w' /*atTimeModifier*/,
4842  0 /*deltaCode*/,
4843  '-' /*letter*/,
4844  },
4845  // Rule Morocco 2014 only - Aug 2 2:00 1:00 -
4846  {
4847  14 /*fromYearTiny*/,
4848  14 /*toYearTiny*/,
4849  8 /*inMonth*/,
4850  0 /*onDayOfWeek*/,
4851  2 /*onDayOfMonth*/,
4852  8 /*atTimeCode*/,
4853  'w' /*atTimeModifier*/,
4854  4 /*deltaCode*/,
4855  '-' /*letter*/,
4856  },
4857  // Rule Morocco 2015 only - Jun 14 3:00 0 -
4858  {
4859  15 /*fromYearTiny*/,
4860  15 /*toYearTiny*/,
4861  6 /*inMonth*/,
4862  0 /*onDayOfWeek*/,
4863  14 /*onDayOfMonth*/,
4864  12 /*atTimeCode*/,
4865  'w' /*atTimeModifier*/,
4866  0 /*deltaCode*/,
4867  '-' /*letter*/,
4868  },
4869  // Rule Morocco 2015 only - Jul 19 2:00 1:00 -
4870  {
4871  15 /*fromYearTiny*/,
4872  15 /*toYearTiny*/,
4873  7 /*inMonth*/,
4874  0 /*onDayOfWeek*/,
4875  19 /*onDayOfMonth*/,
4876  8 /*atTimeCode*/,
4877  'w' /*atTimeModifier*/,
4878  4 /*deltaCode*/,
4879  '-' /*letter*/,
4880  },
4881  // Rule Morocco 2016 only - Jun 5 3:00 0 -
4882  {
4883  16 /*fromYearTiny*/,
4884  16 /*toYearTiny*/,
4885  6 /*inMonth*/,
4886  0 /*onDayOfWeek*/,
4887  5 /*onDayOfMonth*/,
4888  12 /*atTimeCode*/,
4889  'w' /*atTimeModifier*/,
4890  0 /*deltaCode*/,
4891  '-' /*letter*/,
4892  },
4893  // Rule Morocco 2016 only - Jul 10 2:00 1:00 -
4894  {
4895  16 /*fromYearTiny*/,
4896  16 /*toYearTiny*/,
4897  7 /*inMonth*/,
4898  0 /*onDayOfWeek*/,
4899  10 /*onDayOfMonth*/,
4900  8 /*atTimeCode*/,
4901  'w' /*atTimeModifier*/,
4902  4 /*deltaCode*/,
4903  '-' /*letter*/,
4904  },
4905  // Rule Morocco 2017 only - May 21 3:00 0 -
4906  {
4907  17 /*fromYearTiny*/,
4908  17 /*toYearTiny*/,
4909  5 /*inMonth*/,
4910  0 /*onDayOfWeek*/,
4911  21 /*onDayOfMonth*/,
4912  12 /*atTimeCode*/,
4913  'w' /*atTimeModifier*/,
4914  0 /*deltaCode*/,
4915  '-' /*letter*/,
4916  },
4917  // Rule Morocco 2017 only - Jul 2 2:00 1:00 -
4918  {
4919  17 /*fromYearTiny*/,
4920  17 /*toYearTiny*/,
4921  7 /*inMonth*/,
4922  0 /*onDayOfWeek*/,
4923  2 /*onDayOfMonth*/,
4924  8 /*atTimeCode*/,
4925  'w' /*atTimeModifier*/,
4926  4 /*deltaCode*/,
4927  '-' /*letter*/,
4928  },
4929  // Rule Morocco 2018 only - May 13 3:00 0 -
4930  {
4931  18 /*fromYearTiny*/,
4932  18 /*toYearTiny*/,
4933  5 /*inMonth*/,
4934  0 /*onDayOfWeek*/,
4935  13 /*onDayOfMonth*/,
4936  12 /*atTimeCode*/,
4937  'w' /*atTimeModifier*/,
4938  0 /*deltaCode*/,
4939  '-' /*letter*/,
4940  },
4941  // Rule Morocco 2018 only - Jun 17 2:00 1:00 -
4942  {
4943  18 /*fromYearTiny*/,
4944  18 /*toYearTiny*/,
4945  6 /*inMonth*/,
4946  0 /*onDayOfWeek*/,
4947  17 /*onDayOfMonth*/,
4948  8 /*atTimeCode*/,
4949  'w' /*atTimeModifier*/,
4950  4 /*deltaCode*/,
4951  '-' /*letter*/,
4952  },
4953  // Rule Morocco 2019 only - May 5 3:00 -1:00 -
4954  {
4955  19 /*fromYearTiny*/,
4956  19 /*toYearTiny*/,
4957  5 /*inMonth*/,
4958  0 /*onDayOfWeek*/,
4959  5 /*onDayOfMonth*/,
4960  12 /*atTimeCode*/,
4961  'w' /*atTimeModifier*/,
4962  -4 /*deltaCode*/,
4963  '-' /*letter*/,
4964  },
4965  // Rule Morocco 2019 only - Jun 9 2:00 0 -
4966  {
4967  19 /*fromYearTiny*/,
4968  19 /*toYearTiny*/,
4969  6 /*inMonth*/,
4970  0 /*onDayOfWeek*/,
4971  9 /*onDayOfMonth*/,
4972  8 /*atTimeCode*/,
4973  'w' /*atTimeModifier*/,
4974  0 /*deltaCode*/,
4975  '-' /*letter*/,
4976  },
4977  // Rule Morocco 2020 only - Apr 19 3:00 -1:00 -
4978  {
4979  20 /*fromYearTiny*/,
4980  20 /*toYearTiny*/,
4981  4 /*inMonth*/,
4982  0 /*onDayOfWeek*/,
4983  19 /*onDayOfMonth*/,
4984  12 /*atTimeCode*/,
4985  'w' /*atTimeModifier*/,
4986  -4 /*deltaCode*/,
4987  '-' /*letter*/,
4988  },
4989  // Rule Morocco 2020 only - May 24 2:00 0 -
4990  {
4991  20 /*fromYearTiny*/,
4992  20 /*toYearTiny*/,
4993  5 /*inMonth*/,
4994  0 /*onDayOfWeek*/,
4995  24 /*onDayOfMonth*/,
4996  8 /*atTimeCode*/,
4997  'w' /*atTimeModifier*/,
4998  0 /*deltaCode*/,
4999  '-' /*letter*/,
5000  },
5001  // Rule Morocco 2021 only - Apr 11 3:00 -1:00 -
5002  {
5003  21 /*fromYearTiny*/,
5004  21 /*toYearTiny*/,
5005  4 /*inMonth*/,
5006  0 /*onDayOfWeek*/,
5007  11 /*onDayOfMonth*/,
5008  12 /*atTimeCode*/,
5009  'w' /*atTimeModifier*/,
5010  -4 /*deltaCode*/,
5011  '-' /*letter*/,
5012  },
5013  // Rule Morocco 2021 only - May 16 2:00 0 -
5014  {
5015  21 /*fromYearTiny*/,
5016  21 /*toYearTiny*/,
5017  5 /*inMonth*/,
5018  0 /*onDayOfWeek*/,
5019  16 /*onDayOfMonth*/,
5020  8 /*atTimeCode*/,
5021  'w' /*atTimeModifier*/,
5022  0 /*deltaCode*/,
5023  '-' /*letter*/,
5024  },
5025  // Rule Morocco 2022 only - Mar 27 3:00 -1:00 -
5026  {
5027  22 /*fromYearTiny*/,
5028  22 /*toYearTiny*/,
5029  3 /*inMonth*/,
5030  0 /*onDayOfWeek*/,
5031  27 /*onDayOfMonth*/,
5032  12 /*atTimeCode*/,
5033  'w' /*atTimeModifier*/,
5034  -4 /*deltaCode*/,
5035  '-' /*letter*/,
5036  },
5037  // Rule Morocco 2022 only - May 8 2:00 0 -
5038  {
5039  22 /*fromYearTiny*/,
5040  22 /*toYearTiny*/,
5041  5 /*inMonth*/,
5042  0 /*onDayOfWeek*/,
5043  8 /*onDayOfMonth*/,
5044  8 /*atTimeCode*/,
5045  'w' /*atTimeModifier*/,
5046  0 /*deltaCode*/,
5047  '-' /*letter*/,
5048  },
5049  // Rule Morocco 2023 only - Mar 19 3:00 -1:00 -
5050  {
5051  23 /*fromYearTiny*/,
5052  23 /*toYearTiny*/,
5053  3 /*inMonth*/,
5054  0 /*onDayOfWeek*/,
5055  19 /*onDayOfMonth*/,
5056  12 /*atTimeCode*/,
5057  'w' /*atTimeModifier*/,
5058  -4 /*deltaCode*/,
5059  '-' /*letter*/,
5060  },
5061  // Rule Morocco 2023 only - Apr 23 2:00 0 -
5062  {
5063  23 /*fromYearTiny*/,
5064  23 /*toYearTiny*/,
5065  4 /*inMonth*/,
5066  0 /*onDayOfWeek*/,
5067  23 /*onDayOfMonth*/,
5068  8 /*atTimeCode*/,
5069  'w' /*atTimeModifier*/,
5070  0 /*deltaCode*/,
5071  '-' /*letter*/,
5072  },
5073  // Rule Morocco 2024 only - Mar 10 3:00 -1:00 -
5074  {
5075  24 /*fromYearTiny*/,
5076  24 /*toYearTiny*/,
5077  3 /*inMonth*/,
5078  0 /*onDayOfWeek*/,
5079  10 /*onDayOfMonth*/,
5080  12 /*atTimeCode*/,
5081  'w' /*atTimeModifier*/,
5082  -4 /*deltaCode*/,
5083  '-' /*letter*/,
5084  },
5085  // Rule Morocco 2024 only - Apr 14 2:00 0 -
5086  {
5087  24 /*fromYearTiny*/,
5088  24 /*toYearTiny*/,
5089  4 /*inMonth*/,
5090  0 /*onDayOfWeek*/,
5091  14 /*onDayOfMonth*/,
5092  8 /*atTimeCode*/,
5093  'w' /*atTimeModifier*/,
5094  0 /*deltaCode*/,
5095  '-' /*letter*/,
5096  },
5097  // Rule Morocco 2025 only - Feb 23 3:00 -1:00 -
5098  {
5099  25 /*fromYearTiny*/,
5100  25 /*toYearTiny*/,
5101  2 /*inMonth*/,
5102  0 /*onDayOfWeek*/,
5103  23 /*onDayOfMonth*/,
5104  12 /*atTimeCode*/,
5105  'w' /*atTimeModifier*/,
5106  -4 /*deltaCode*/,
5107  '-' /*letter*/,
5108  },
5109  // Rule Morocco 2025 only - Apr 6 2:00 0 -
5110  {
5111  25 /*fromYearTiny*/,
5112  25 /*toYearTiny*/,
5113  4 /*inMonth*/,
5114  0 /*onDayOfWeek*/,
5115  6 /*onDayOfMonth*/,
5116  8 /*atTimeCode*/,
5117  'w' /*atTimeModifier*/,
5118  0 /*deltaCode*/,
5119  '-' /*letter*/,
5120  },
5121  // Rule Morocco 2026 only - Feb 15 3:00 -1:00 -
5122  {
5123  26 /*fromYearTiny*/,
5124  26 /*toYearTiny*/,
5125  2 /*inMonth*/,
5126  0 /*onDayOfWeek*/,
5127  15 /*onDayOfMonth*/,
5128  12 /*atTimeCode*/,
5129  'w' /*atTimeModifier*/,
5130  -4 /*deltaCode*/,
5131  '-' /*letter*/,
5132  },
5133  // Rule Morocco 2026 only - Mar 22 2:00 0 -
5134  {
5135  26 /*fromYearTiny*/,
5136  26 /*toYearTiny*/,
5137  3 /*inMonth*/,
5138  0 /*onDayOfWeek*/,
5139  22 /*onDayOfMonth*/,
5140  8 /*atTimeCode*/,
5141  'w' /*atTimeModifier*/,
5142  0 /*deltaCode*/,
5143  '-' /*letter*/,
5144  },
5145  // Rule Morocco 2027 only - Feb 7 3:00 -1:00 -
5146  {
5147  27 /*fromYearTiny*/,
5148  27 /*toYearTiny*/,
5149  2 /*inMonth*/,
5150  0 /*onDayOfWeek*/,
5151  7 /*onDayOfMonth*/,
5152  12 /*atTimeCode*/,
5153  'w' /*atTimeModifier*/,
5154  -4 /*deltaCode*/,
5155  '-' /*letter*/,
5156  },
5157  // Rule Morocco 2027 only - Mar 14 2:00 0 -
5158  {
5159  27 /*fromYearTiny*/,
5160  27 /*toYearTiny*/,
5161  3 /*inMonth*/,
5162  0 /*onDayOfWeek*/,
5163  14 /*onDayOfMonth*/,
5164  8 /*atTimeCode*/,
5165  'w' /*atTimeModifier*/,
5166  0 /*deltaCode*/,
5167  '-' /*letter*/,
5168  },
5169  // Rule Morocco 2028 only - Jan 23 3:00 -1:00 -
5170  {
5171  28 /*fromYearTiny*/,
5172  28 /*toYearTiny*/,
5173  1 /*inMonth*/,
5174  0 /*onDayOfWeek*/,
5175  23 /*onDayOfMonth*/,
5176  12 /*atTimeCode*/,
5177  'w' /*atTimeModifier*/,
5178  -4 /*deltaCode*/,
5179  '-' /*letter*/,
5180  },
5181  // Rule Morocco 2028 only - Feb 27 2:00 0 -
5182  {
5183  28 /*fromYearTiny*/,
5184  28 /*toYearTiny*/,
5185  2 /*inMonth*/,
5186  0 /*onDayOfWeek*/,
5187  27 /*onDayOfMonth*/,
5188  8 /*atTimeCode*/,
5189  'w' /*atTimeModifier*/,
5190  0 /*deltaCode*/,
5191  '-' /*letter*/,
5192  },
5193  // Rule Morocco 2029 only - Jan 14 3:00 -1:00 -
5194  {
5195  29 /*fromYearTiny*/,
5196  29 /*toYearTiny*/,
5197  1 /*inMonth*/,
5198  0 /*onDayOfWeek*/,
5199  14 /*onDayOfMonth*/,
5200  12 /*atTimeCode*/,
5201  'w' /*atTimeModifier*/,
5202  -4 /*deltaCode*/,
5203  '-' /*letter*/,
5204  },
5205  // Rule Morocco 2029 only - Feb 18 2:00 0 -
5206  {
5207  29 /*fromYearTiny*/,
5208  29 /*toYearTiny*/,
5209  2 /*inMonth*/,
5210  0 /*onDayOfWeek*/,
5211  18 /*onDayOfMonth*/,
5212  8 /*atTimeCode*/,
5213  'w' /*atTimeModifier*/,
5214  0 /*deltaCode*/,
5215  '-' /*letter*/,
5216  },
5217  // Rule Morocco 2029 only - Dec 30 3:00 -1:00 -
5218  {
5219  29 /*fromYearTiny*/,
5220  29 /*toYearTiny*/,
5221  12 /*inMonth*/,
5222  0 /*onDayOfWeek*/,
5223  30 /*onDayOfMonth*/,
5224  12 /*atTimeCode*/,
5225  'w' /*atTimeModifier*/,
5226  -4 /*deltaCode*/,
5227  '-' /*letter*/,
5228  },
5229  // Rule Morocco 2030 only - Feb 10 2:00 0 -
5230  {
5231  30 /*fromYearTiny*/,
5232  30 /*toYearTiny*/,
5233  2 /*inMonth*/,
5234  0 /*onDayOfWeek*/,
5235  10 /*onDayOfMonth*/,
5236  8 /*atTimeCode*/,
5237  'w' /*atTimeModifier*/,
5238  0 /*deltaCode*/,
5239  '-' /*letter*/,
5240  },
5241  // Rule Morocco 2030 only - Dec 22 3:00 -1:00 -
5242  {
5243  30 /*fromYearTiny*/,
5244  30 /*toYearTiny*/,
5245  12 /*inMonth*/,
5246  0 /*onDayOfWeek*/,
5247  22 /*onDayOfMonth*/,
5248  12 /*atTimeCode*/,
5249  'w' /*atTimeModifier*/,
5250  -4 /*deltaCode*/,
5251  '-' /*letter*/,
5252  },
5253  // Rule Morocco 2031 only - Jan 26 2:00 0 -
5254  {
5255  31 /*fromYearTiny*/,
5256  31 /*toYearTiny*/,
5257  1 /*inMonth*/,
5258  0 /*onDayOfWeek*/,
5259  26 /*onDayOfMonth*/,
5260  8 /*atTimeCode*/,
5261  'w' /*atTimeModifier*/,
5262  0 /*deltaCode*/,
5263  '-' /*letter*/,
5264  },
5265  // Rule Morocco 2031 only - Dec 14 3:00 -1:00 -
5266  {
5267  31 /*fromYearTiny*/,
5268  31 /*toYearTiny*/,
5269  12 /*inMonth*/,
5270  0 /*onDayOfWeek*/,
5271  14 /*onDayOfMonth*/,
5272  12 /*atTimeCode*/,
5273  'w' /*atTimeModifier*/,
5274  -4 /*deltaCode*/,
5275  '-' /*letter*/,
5276  },
5277  // Rule Morocco 2032 only - Jan 18 2:00 0 -
5278  {
5279  32 /*fromYearTiny*/,
5280  32 /*toYearTiny*/,
5281  1 /*inMonth*/,
5282  0 /*onDayOfWeek*/,
5283  18 /*onDayOfMonth*/,
5284  8 /*atTimeCode*/,
5285  'w' /*atTimeModifier*/,
5286  0 /*deltaCode*/,
5287  '-' /*letter*/,
5288  },
5289  // Rule Morocco 2032 only - Nov 28 3:00 -1:00 -
5290  {
5291  32 /*fromYearTiny*/,
5292  32 /*toYearTiny*/,
5293  11 /*inMonth*/,
5294  0 /*onDayOfWeek*/,
5295  28 /*onDayOfMonth*/,
5296  12 /*atTimeCode*/,
5297  'w' /*atTimeModifier*/,
5298  -4 /*deltaCode*/,
5299  '-' /*letter*/,
5300  },
5301  // Rule Morocco 2033 only - Jan 9 2:00 0 -
5302  {
5303  33 /*fromYearTiny*/,
5304  33 /*toYearTiny*/,
5305  1 /*inMonth*/,
5306  0 /*onDayOfWeek*/,
5307  9 /*onDayOfMonth*/,
5308  8 /*atTimeCode*/,
5309  'w' /*atTimeModifier*/,
5310  0 /*deltaCode*/,
5311  '-' /*letter*/,
5312  },
5313  // Rule Morocco 2033 only - Nov 20 3:00 -1:00 -
5314  {
5315  33 /*fromYearTiny*/,
5316  33 /*toYearTiny*/,
5317  11 /*inMonth*/,
5318  0 /*onDayOfWeek*/,
5319  20 /*onDayOfMonth*/,
5320  12 /*atTimeCode*/,
5321  'w' /*atTimeModifier*/,
5322  -4 /*deltaCode*/,
5323  '-' /*letter*/,
5324  },
5325  // Rule Morocco 2033 only - Dec 25 2:00 0 -
5326  {
5327  33 /*fromYearTiny*/,
5328  33 /*toYearTiny*/,
5329  12 /*inMonth*/,
5330  0 /*onDayOfWeek*/,
5331  25 /*onDayOfMonth*/,
5332  8 /*atTimeCode*/,
5333  'w' /*atTimeModifier*/,
5334  0 /*deltaCode*/,
5335  '-' /*letter*/,
5336  },
5337  // Rule Morocco 2034 only - Nov 5 3:00 -1:00 -
5338  {
5339  34 /*fromYearTiny*/,
5340  34 /*toYearTiny*/,
5341  11 /*inMonth*/,
5342  0 /*onDayOfWeek*/,
5343  5 /*onDayOfMonth*/,
5344  12 /*atTimeCode*/,
5345  'w' /*atTimeModifier*/,
5346  -4 /*deltaCode*/,
5347  '-' /*letter*/,
5348  },
5349  // Rule Morocco 2034 only - Dec 17 2:00 0 -
5350  {
5351  34 /*fromYearTiny*/,
5352  34 /*toYearTiny*/,
5353  12 /*inMonth*/,
5354  0 /*onDayOfWeek*/,
5355  17 /*onDayOfMonth*/,
5356  8 /*atTimeCode*/,
5357  'w' /*atTimeModifier*/,
5358  0 /*deltaCode*/,
5359  '-' /*letter*/,
5360  },
5361  // Rule Morocco 2035 only - Oct 28 3:00 -1:00 -
5362  {
5363  35 /*fromYearTiny*/,
5364  35 /*toYearTiny*/,
5365  10 /*inMonth*/,
5366  0 /*onDayOfWeek*/,
5367  28 /*onDayOfMonth*/,
5368  12 /*atTimeCode*/,
5369  'w' /*atTimeModifier*/,
5370  -4 /*deltaCode*/,
5371  '-' /*letter*/,
5372  },
5373  // Rule Morocco 2035 only - Dec 2 2:00 0 -
5374  {
5375  35 /*fromYearTiny*/,
5376  35 /*toYearTiny*/,
5377  12 /*inMonth*/,
5378  0 /*onDayOfWeek*/,
5379  2 /*onDayOfMonth*/,
5380  8 /*atTimeCode*/,
5381  'w' /*atTimeModifier*/,
5382  0 /*deltaCode*/,
5383  '-' /*letter*/,
5384  },
5385  // Rule Morocco 2036 only - Oct 19 3:00 -1:00 -
5386  {
5387  36 /*fromYearTiny*/,
5388  36 /*toYearTiny*/,
5389  10 /*inMonth*/,
5390  0 /*onDayOfWeek*/,
5391  19 /*onDayOfMonth*/,
5392  12 /*atTimeCode*/,
5393  'w' /*atTimeModifier*/,
5394  -4 /*deltaCode*/,
5395  '-' /*letter*/,
5396  },
5397  // Rule Morocco 2036 only - Nov 23 2:00 0 -
5398  {
5399  36 /*fromYearTiny*/,
5400  36 /*toYearTiny*/,
5401  11 /*inMonth*/,
5402  0 /*onDayOfWeek*/,
5403  23 /*onDayOfMonth*/,
5404  8 /*atTimeCode*/,
5405  'w' /*atTimeModifier*/,
5406  0 /*deltaCode*/,
5407  '-' /*letter*/,
5408  },
5409  // Rule Morocco 2037 only - Oct 4 3:00 -1:00 -
5410  {
5411  37 /*fromYearTiny*/,
5412  37 /*toYearTiny*/,
5413  10 /*inMonth*/,
5414  0 /*onDayOfWeek*/,
5415  4 /*onDayOfMonth*/,
5416  12 /*atTimeCode*/,
5417  'w' /*atTimeModifier*/,
5418  -4 /*deltaCode*/,
5419  '-' /*letter*/,
5420  },
5421  // Rule Morocco 2037 only - Nov 15 2:00 0 -
5422  {
5423  37 /*fromYearTiny*/,
5424  37 /*toYearTiny*/,
5425  11 /*inMonth*/,
5426  0 /*onDayOfWeek*/,
5427  15 /*onDayOfMonth*/,
5428  8 /*atTimeCode*/,
5429  'w' /*atTimeModifier*/,
5430  0 /*deltaCode*/,
5431  '-' /*letter*/,
5432  },
5433 
5434 };
5435 
5436 
5437 
5438 const extended::ZonePolicy kPolicyMorocco ACE_TIME_PROGMEM = {
5439  67 /*numRules*/,
5440  kZoneRulesMorocco /*rules*/,
5441  0 /* numLetters */,
5442  nullptr /* letters */,
5443 };
5444 
5445 //---------------------------------------------------------------------------
5446 // Policy name: NC
5447 // Rules: 1
5448 // Memory (8-bit): 15
5449 // Memory (32-bit): 19
5450 //---------------------------------------------------------------------------
5451 
5452 static const extended::ZoneRule kZoneRulesNC[] ACE_TIME_PROGMEM = {
5453  // Rule NC 1997 only - Mar 2 2:00s 0 -
5454  {
5455  -3 /*fromYearTiny*/,
5456  -3 /*toYearTiny*/,
5457  3 /*inMonth*/,
5458  0 /*onDayOfWeek*/,
5459  2 /*onDayOfMonth*/,
5460  8 /*atTimeCode*/,
5461  's' /*atTimeModifier*/,
5462  0 /*deltaCode*/,
5463  '-' /*letter*/,
5464  },
5465 
5466 };
5467 
5468 
5469 
5470 const extended::ZonePolicy kPolicyNC ACE_TIME_PROGMEM = {
5471  1 /*numRules*/,
5472  kZoneRulesNC /*rules*/,
5473  0 /* numLetters */,
5474  nullptr /* letters */,
5475 };
5476 
5477 //---------------------------------------------------------------------------
5478 // Policy name: NT_YK
5479 // Rules: 3
5480 // Memory (8-bit): 33
5481 // Memory (32-bit): 37
5482 //---------------------------------------------------------------------------
5483 
5484 static const extended::ZoneRule kZoneRulesNT_YK[] ACE_TIME_PROGMEM = {
5485  // Rule NT_YK 1980 1986 - Apr lastSun 2:00 1:00 D
5486  {
5487  -20 /*fromYearTiny*/,
5488  -14 /*toYearTiny*/,
5489  4 /*inMonth*/,
5490  7 /*onDayOfWeek*/,
5491  0 /*onDayOfMonth*/,
5492  8 /*atTimeCode*/,
5493  'w' /*atTimeModifier*/,
5494  4 /*deltaCode*/,
5495  'D' /*letter*/,
5496  },
5497  // Rule NT_YK 1980 2006 - Oct lastSun 2:00 0 S
5498  {
5499  -20 /*fromYearTiny*/,
5500  6 /*toYearTiny*/,
5501  10 /*inMonth*/,
5502  7 /*onDayOfWeek*/,
5503  0 /*onDayOfMonth*/,
5504  8 /*atTimeCode*/,
5505  'w' /*atTimeModifier*/,
5506  0 /*deltaCode*/,
5507  'S' /*letter*/,
5508  },
5509  // Rule NT_YK 1987 2006 - Apr Sun>=1 2:00 1:00 D
5510  {
5511  -13 /*fromYearTiny*/,
5512  6 /*toYearTiny*/,
5513  4 /*inMonth*/,
5514  7 /*onDayOfWeek*/,
5515  1 /*onDayOfMonth*/,
5516  8 /*atTimeCode*/,
5517  'w' /*atTimeModifier*/,
5518  4 /*deltaCode*/,
5519  'D' /*letter*/,
5520  },
5521 
5522 };
5523 
5524 
5525 
5526 const extended::ZonePolicy kPolicyNT_YK ACE_TIME_PROGMEM = {
5527  3 /*numRules*/,
5528  kZoneRulesNT_YK /*rules*/,
5529  0 /* numLetters */,
5530  nullptr /* letters */,
5531 };
5532 
5533 //---------------------------------------------------------------------------
5534 // Policy name: NZ
5535 // Rules: 5
5536 // Memory (8-bit): 51
5537 // Memory (32-bit): 55
5538 //---------------------------------------------------------------------------
5539 
5540 static const extended::ZoneRule kZoneRulesNZ[] ACE_TIME_PROGMEM = {
5541  // Rule NZ 1989 only - Oct Sun>=8 2:00s 1:00 D
5542  {
5543  -11 /*fromYearTiny*/,
5544  -11 /*toYearTiny*/,
5545  10 /*inMonth*/,
5546  7 /*onDayOfWeek*/,
5547  8 /*onDayOfMonth*/,
5548  8 /*atTimeCode*/,
5549  's' /*atTimeModifier*/,
5550  4 /*deltaCode*/,
5551  'D' /*letter*/,
5552  },
5553  // Rule NZ 1990 2006 - Oct Sun>=1 2:00s 1:00 D
5554  {
5555  -10 /*fromYearTiny*/,
5556  6 /*toYearTiny*/,
5557  10 /*inMonth*/,
5558  7 /*onDayOfWeek*/,
5559  1 /*onDayOfMonth*/,
5560  8 /*atTimeCode*/,
5561  's' /*atTimeModifier*/,
5562  4 /*deltaCode*/,
5563  'D' /*letter*/,
5564  },
5565  // Rule NZ 1990 2007 - Mar Sun>=15 2:00s 0 S
5566  {
5567  -10 /*fromYearTiny*/,
5568  7 /*toYearTiny*/,
5569  3 /*inMonth*/,
5570  7 /*onDayOfWeek*/,
5571  15 /*onDayOfMonth*/,
5572  8 /*atTimeCode*/,
5573  's' /*atTimeModifier*/,
5574  0 /*deltaCode*/,
5575  'S' /*letter*/,
5576  },
5577  // Rule NZ 2007 max - Sep lastSun 2:00s 1:00 D
5578  {
5579  7 /*fromYearTiny*/,
5580  126 /*toYearTiny*/,
5581  9 /*inMonth*/,
5582  7 /*onDayOfWeek*/,
5583  0 /*onDayOfMonth*/,
5584  8 /*atTimeCode*/,
5585  's' /*atTimeModifier*/,
5586  4 /*deltaCode*/,
5587  'D' /*letter*/,
5588  },
5589  // Rule NZ 2008 max - Apr Sun>=1 2:00s 0 S
5590  {
5591  8 /*fromYearTiny*/,
5592  126 /*toYearTiny*/,
5593  4 /*inMonth*/,
5594  7 /*onDayOfWeek*/,
5595  1 /*onDayOfMonth*/,
5596  8 /*atTimeCode*/,
5597  's' /*atTimeModifier*/,
5598  0 /*deltaCode*/,
5599  'S' /*letter*/,
5600  },
5601 
5602 };
5603 
5604 
5605 
5606 const extended::ZonePolicy kPolicyNZ ACE_TIME_PROGMEM = {
5607  5 /*numRules*/,
5608  kZoneRulesNZ /*rules*/,
5609  0 /* numLetters */,
5610  nullptr /* letters */,
5611 };
5612 
5613 //---------------------------------------------------------------------------
5614 // Policy name: Namibia
5615 // Rules: 3
5616 // Memory (8-bit): 45
5617 // Memory (32-bit): 53
5618 //---------------------------------------------------------------------------
5619 
5620 static const extended::ZoneRule kZoneRulesNamibia[] ACE_TIME_PROGMEM = {
5621  // Rule Namibia 1994 only - Mar 21 0:00 -1:00 WAT
5622  {
5623  -6 /*fromYearTiny*/,
5624  -6 /*toYearTiny*/,
5625  3 /*inMonth*/,
5626  0 /*onDayOfWeek*/,
5627  21 /*onDayOfMonth*/,
5628  0 /*atTimeCode*/,
5629  'w' /*atTimeModifier*/,
5630  -4 /*deltaCode*/,
5631  1 /*letter; "WAT"*/,
5632  },
5633  // Rule Namibia 1994 2017 - Sep Sun>=1 2:00 0 CAT
5634  {
5635  -6 /*fromYearTiny*/,
5636  17 /*toYearTiny*/,
5637  9 /*inMonth*/,
5638  7 /*onDayOfWeek*/,
5639  1 /*onDayOfMonth*/,
5640  8 /*atTimeCode*/,
5641  'w' /*atTimeModifier*/,
5642  0 /*deltaCode*/,
5643  0 /*letter; "CAT"*/,
5644  },
5645  // Rule Namibia 1995 2017 - Apr Sun>=1 2:00 -1:00 WAT
5646  {
5647  -5 /*fromYearTiny*/,
5648  17 /*toYearTiny*/,
5649  4 /*inMonth*/,
5650  7 /*onDayOfWeek*/,
5651  1 /*onDayOfMonth*/,
5652  8 /*atTimeCode*/,
5653  'w' /*atTimeModifier*/,
5654  -4 /*deltaCode*/,
5655  1 /*letter; "WAT"*/,
5656  },
5657 
5658 };
5659 
5660 static const char* const kLettersNamibia[] ACE_TIME_PROGMEM = {
5661  /*0*/ "CAT",
5662  /*1*/ "WAT",
5663 
5664 };
5665 
5666 
5667 const extended::ZonePolicy kPolicyNamibia ACE_TIME_PROGMEM = {
5668  3 /*numRules*/,
5669  kZoneRulesNamibia /*rules*/,
5670  2 /* numLetters */,
5671  kLettersNamibia /* letters */,
5672 };
5673 
5674 //---------------------------------------------------------------------------
5675 // Policy name: Nic
5676 // Rules: 5
5677 // Memory (8-bit): 51
5678 // Memory (32-bit): 55
5679 //---------------------------------------------------------------------------
5680 
5681 static const extended::ZoneRule kZoneRulesNic[] ACE_TIME_PROGMEM = {
5682  // Rule Nic 1979 1980 - Jun Mon>=23 0:00 0 S
5683  {
5684  -21 /*fromYearTiny*/,
5685  -20 /*toYearTiny*/,
5686  6 /*inMonth*/,
5687  1 /*onDayOfWeek*/,
5688  23 /*onDayOfMonth*/,
5689  0 /*atTimeCode*/,
5690  'w' /*atTimeModifier*/,
5691  0 /*deltaCode*/,
5692  'S' /*letter*/,
5693  },
5694  // Rule Nic 2005 only - Apr 10 0:00 1:00 D
5695  {
5696  5 /*fromYearTiny*/,
5697  5 /*toYearTiny*/,
5698  4 /*inMonth*/,
5699  0 /*onDayOfWeek*/,
5700  10 /*onDayOfMonth*/,
5701  0 /*atTimeCode*/,
5702  'w' /*atTimeModifier*/,
5703  4 /*deltaCode*/,
5704  'D' /*letter*/,
5705  },
5706  // Rule Nic 2005 only - Oct Sun>=1 0:00 0 S
5707  {
5708  5 /*fromYearTiny*/,
5709  5 /*toYearTiny*/,
5710  10 /*inMonth*/,
5711  7 /*onDayOfWeek*/,
5712  1 /*onDayOfMonth*/,
5713  0 /*atTimeCode*/,
5714  'w' /*atTimeModifier*/,
5715  0 /*deltaCode*/,
5716  'S' /*letter*/,
5717  },
5718  // Rule Nic 2006 only - Apr 30 2:00 1:00 D
5719  {
5720  6 /*fromYearTiny*/,
5721  6 /*toYearTiny*/,
5722  4 /*inMonth*/,
5723  0 /*onDayOfWeek*/,
5724  30 /*onDayOfMonth*/,
5725  8 /*atTimeCode*/,
5726  'w' /*atTimeModifier*/,
5727  4 /*deltaCode*/,
5728  'D' /*letter*/,
5729  },
5730  // Rule Nic 2006 only - Oct Sun>=1 1:00 0 S
5731  {
5732  6 /*fromYearTiny*/,
5733  6 /*toYearTiny*/,
5734  10 /*inMonth*/,
5735  7 /*onDayOfWeek*/,
5736  1 /*onDayOfMonth*/,
5737  4 /*atTimeCode*/,
5738  'w' /*atTimeModifier*/,
5739  0 /*deltaCode*/,
5740  'S' /*letter*/,
5741  },
5742 
5743 };
5744 
5745 
5746 
5747 const extended::ZonePolicy kPolicyNic ACE_TIME_PROGMEM = {
5748  5 /*numRules*/,
5749  kZoneRulesNic /*rules*/,
5750  0 /* numLetters */,
5751  nullptr /* letters */,
5752 };
5753 
5754 //---------------------------------------------------------------------------
5755 // Policy name: PRC
5756 // Rules: 1
5757 // Memory (8-bit): 15
5758 // Memory (32-bit): 19
5759 //---------------------------------------------------------------------------
5760 
5761 static const extended::ZoneRule kZoneRulesPRC[] ACE_TIME_PROGMEM = {
5762  // Rule PRC 1986 1991 - Sep Sun>=11 2:00 0 S
5763  {
5764  -14 /*fromYearTiny*/,
5765  -9 /*toYearTiny*/,
5766  9 /*inMonth*/,
5767  7 /*onDayOfWeek*/,
5768  11 /*onDayOfMonth*/,
5769  8 /*atTimeCode*/,
5770  'w' /*atTimeModifier*/,
5771  0 /*deltaCode*/,
5772  'S' /*letter*/,
5773  },
5774 
5775 };
5776 
5777 
5778 
5779 const extended::ZonePolicy kPolicyPRC ACE_TIME_PROGMEM = {
5780  1 /*numRules*/,
5781  kZoneRulesPRC /*rules*/,
5782  0 /* numLetters */,
5783  nullptr /* letters */,
5784 };
5785 
5786 //---------------------------------------------------------------------------
5787 // Policy name: Pakistan
5788 // Rules: 6
5789 // Memory (8-bit): 60
5790 // Memory (32-bit): 64
5791 //---------------------------------------------------------------------------
5792 
5793 static const extended::ZoneRule kZoneRulesPakistan[] ACE_TIME_PROGMEM = {
5794  // Anchor: Rule Pakistan 2002 only - Oct Sun>=2 0:00 0 -
5795  {
5796  -127 /*fromYearTiny*/,
5797  -127 /*toYearTiny*/,
5798  1 /*inMonth*/,
5799  0 /*onDayOfWeek*/,
5800  1 /*onDayOfMonth*/,
5801  0 /*atTimeCode*/,
5802  'w' /*atTimeModifier*/,
5803  0 /*deltaCode*/,
5804  '-' /*letter*/,
5805  },
5806  // Rule Pakistan 2002 only - Apr Sun>=2 0:00 1:00 S
5807  {
5808  2 /*fromYearTiny*/,
5809  2 /*toYearTiny*/,
5810  4 /*inMonth*/,
5811  7 /*onDayOfWeek*/,
5812  2 /*onDayOfMonth*/,
5813  0 /*atTimeCode*/,
5814  'w' /*atTimeModifier*/,
5815  4 /*deltaCode*/,
5816  'S' /*letter*/,
5817  },
5818  // Rule Pakistan 2002 only - Oct Sun>=2 0:00 0 -
5819  {
5820  2 /*fromYearTiny*/,
5821  2 /*toYearTiny*/,
5822  10 /*inMonth*/,
5823  7 /*onDayOfWeek*/,
5824  2 /*onDayOfMonth*/,
5825  0 /*atTimeCode*/,
5826  'w' /*atTimeModifier*/,
5827  0 /*deltaCode*/,
5828  '-' /*letter*/,
5829  },
5830  // Rule Pakistan 2008 only - Jun 1 0:00 1:00 S
5831  {
5832  8 /*fromYearTiny*/,
5833  8 /*toYearTiny*/,
5834  6 /*inMonth*/,
5835  0 /*onDayOfWeek*/,
5836  1 /*onDayOfMonth*/,
5837  0 /*atTimeCode*/,
5838  'w' /*atTimeModifier*/,
5839  4 /*deltaCode*/,
5840  'S' /*letter*/,
5841  },
5842  // Rule Pakistan 2008 2009 - Nov 1 0:00 0 -
5843  {
5844  8 /*fromYearTiny*/,
5845  9 /*toYearTiny*/,
5846  11 /*inMonth*/,
5847  0 /*onDayOfWeek*/,
5848  1 /*onDayOfMonth*/,
5849  0 /*atTimeCode*/,
5850  'w' /*atTimeModifier*/,
5851  0 /*deltaCode*/,
5852  '-' /*letter*/,
5853  },
5854  // Rule Pakistan 2009 only - Apr 15 0:00 1:00 S
5855  {
5856  9 /*fromYearTiny*/,
5857  9 /*toYearTiny*/,
5858  4 /*inMonth*/,
5859  0 /*onDayOfWeek*/,
5860  15 /*onDayOfMonth*/,
5861  0 /*atTimeCode*/,
5862  'w' /*atTimeModifier*/,
5863  4 /*deltaCode*/,
5864  'S' /*letter*/,
5865  },
5866 
5867 };
5868 
5869 
5870 
5871 const extended::ZonePolicy kPolicyPakistan ACE_TIME_PROGMEM = {
5872  6 /*numRules*/,
5873  kZoneRulesPakistan /*rules*/,
5874  0 /* numLetters */,
5875  nullptr /* letters */,
5876 };
5877 
5878 //---------------------------------------------------------------------------
5879 // Policy name: Palestine
5880 // Rules: 24
5881 // Memory (8-bit): 222
5882 // Memory (32-bit): 226
5883 //---------------------------------------------------------------------------
5884 
5885 static const extended::ZoneRule kZoneRulesPalestine[] ACE_TIME_PROGMEM = {
5886  // Anchor: Rule Palestine 1999 2003 - Oct Fri>=15 0:00 0 -
5887  {
5888  -127 /*fromYearTiny*/,
5889  -127 /*toYearTiny*/,
5890  1 /*inMonth*/,
5891  0 /*onDayOfWeek*/,
5892  1 /*onDayOfMonth*/,
5893  0 /*atTimeCode*/,
5894  'w' /*atTimeModifier*/,
5895  0 /*deltaCode*/,
5896  '-' /*letter*/,
5897  },
5898  // Rule Palestine 1999 2005 - Apr Fri>=15 0:00 1:00 S
5899  {
5900  -1 /*fromYearTiny*/,
5901  5 /*toYearTiny*/,
5902  4 /*inMonth*/,
5903  5 /*onDayOfWeek*/,
5904  15 /*onDayOfMonth*/,
5905  0 /*atTimeCode*/,
5906  'w' /*atTimeModifier*/,
5907  4 /*deltaCode*/,
5908  'S' /*letter*/,
5909  },
5910  // Rule Palestine 1999 2003 - Oct Fri>=15 0:00 0 -
5911  {
5912  -1 /*fromYearTiny*/,
5913  3 /*toYearTiny*/,
5914  10 /*inMonth*/,
5915  5 /*onDayOfWeek*/,
5916  15 /*onDayOfMonth*/,
5917  0 /*atTimeCode*/,
5918  'w' /*atTimeModifier*/,
5919  0 /*deltaCode*/,
5920  '-' /*letter*/,
5921  },
5922  // Rule Palestine 2004 only - Oct 1 1:00 0 -
5923  {
5924  4 /*fromYearTiny*/,
5925  4 /*toYearTiny*/,
5926  10 /*inMonth*/,
5927  0 /*onDayOfWeek*/,
5928  1 /*onDayOfMonth*/,
5929  4 /*atTimeCode*/,
5930  'w' /*atTimeModifier*/,
5931  0 /*deltaCode*/,
5932  '-' /*letter*/,
5933  },
5934  // Rule Palestine 2005 only - Oct 4 2:00 0 -
5935  {
5936  5 /*fromYearTiny*/,
5937  5 /*toYearTiny*/,
5938  10 /*inMonth*/,
5939  0 /*onDayOfWeek*/,
5940  4 /*onDayOfMonth*/,
5941  8 /*atTimeCode*/,
5942  'w' /*atTimeModifier*/,
5943  0 /*deltaCode*/,
5944  '-' /*letter*/,
5945  },
5946  // Rule Palestine 2006 2007 - Apr 1 0:00 1:00 S
5947  {
5948  6 /*fromYearTiny*/,
5949  7 /*toYearTiny*/,
5950  4 /*inMonth*/,
5951  0 /*onDayOfWeek*/,
5952  1 /*onDayOfMonth*/,
5953  0 /*atTimeCode*/,
5954  'w' /*atTimeModifier*/,
5955  4 /*deltaCode*/,
5956  'S' /*letter*/,
5957  },
5958  // Rule Palestine 2006 only - Sep 22 0:00 0 -
5959  {
5960  6 /*fromYearTiny*/,
5961  6 /*toYearTiny*/,
5962  9 /*inMonth*/,
5963  0 /*onDayOfWeek*/,
5964  22 /*onDayOfMonth*/,
5965  0 /*atTimeCode*/,
5966  'w' /*atTimeModifier*/,
5967  0 /*deltaCode*/,
5968  '-' /*letter*/,
5969  },
5970  // Rule Palestine 2007 only - Sep Thu>=8 2:00 0 -
5971  {
5972  7 /*fromYearTiny*/,
5973  7 /*toYearTiny*/,
5974  9 /*inMonth*/,
5975  4 /*onDayOfWeek*/,
5976  8 /*onDayOfMonth*/,
5977  8 /*atTimeCode*/,
5978  'w' /*atTimeModifier*/,
5979  0 /*deltaCode*/,
5980  '-' /*letter*/,
5981  },
5982  // Rule Palestine 2008 2009 - Mar lastFri 0:00 1:00 S
5983  {
5984  8 /*fromYearTiny*/,
5985  9 /*toYearTiny*/,
5986  3 /*inMonth*/,
5987  5 /*onDayOfWeek*/,
5988  0 /*onDayOfMonth*/,
5989  0 /*atTimeCode*/,
5990  'w' /*atTimeModifier*/,
5991  4 /*deltaCode*/,
5992  'S' /*letter*/,
5993  },
5994  // Rule Palestine 2008 only - Sep 1 0:00 0 -
5995  {
5996  8 /*fromYearTiny*/,
5997  8 /*toYearTiny*/,
5998  9 /*inMonth*/,
5999  0 /*onDayOfWeek*/,
6000  1 /*onDayOfMonth*/,
6001  0 /*atTimeCode*/,
6002  'w' /*atTimeModifier*/,
6003  0 /*deltaCode*/,
6004  '-' /*letter*/,
6005  },
6006  // Rule Palestine 2009 only - Sep Fri>=1 1:00 0 -
6007  {
6008  9 /*fromYearTiny*/,
6009  9 /*toYearTiny*/,
6010  9 /*inMonth*/,
6011  5 /*onDayOfWeek*/,
6012  1 /*onDayOfMonth*/,
6013  4 /*atTimeCode*/,
6014  'w' /*atTimeModifier*/,
6015  0 /*deltaCode*/,
6016  '-' /*letter*/,
6017  },
6018  // Rule Palestine 2010 only - Mar 26 0:00 1:00 S
6019  {
6020  10 /*fromYearTiny*/,
6021  10 /*toYearTiny*/,
6022  3 /*inMonth*/,
6023  0 /*onDayOfWeek*/,
6024  26 /*onDayOfMonth*/,
6025  0 /*atTimeCode*/,
6026  'w' /*atTimeModifier*/,
6027  4 /*deltaCode*/,
6028  'S' /*letter*/,
6029  },
6030  // Rule Palestine 2010 only - Aug 11 0:00 0 -
6031  {
6032  10 /*fromYearTiny*/,
6033  10 /*toYearTiny*/,
6034  8 /*inMonth*/,
6035  0 /*onDayOfWeek*/,
6036  11 /*onDayOfMonth*/,
6037  0 /*atTimeCode*/,
6038  'w' /*atTimeModifier*/,
6039  0 /*deltaCode*/,
6040  '-' /*letter*/,
6041  },
6042  // Rule Palestine 2011 only - Apr 1 0:01 1:00 S
6043  {
6044  11 /*fromYearTiny*/,
6045  11 /*toYearTiny*/,
6046  4 /*inMonth*/,
6047  0 /*onDayOfWeek*/,
6048  1 /*onDayOfMonth*/,
6049  0 /*atTimeCode*/,
6050  'w' /*atTimeModifier*/,
6051  4 /*deltaCode*/,
6052  'S' /*letter*/,
6053  },
6054  // Rule Palestine 2011 only - Aug 1 0:00 0 -
6055  {
6056  11 /*fromYearTiny*/,
6057  11 /*toYearTiny*/,
6058  8 /*inMonth*/,
6059  0 /*onDayOfWeek*/,
6060  1 /*onDayOfMonth*/,
6061  0 /*atTimeCode*/,
6062  'w' /*atTimeModifier*/,
6063  0 /*deltaCode*/,
6064  '-' /*letter*/,
6065  },
6066  // Rule Palestine 2011 only - Aug 30 0:00 1:00 S
6067  {
6068  11 /*fromYearTiny*/,
6069  11 /*toYearTiny*/,
6070  8 /*inMonth*/,
6071  0 /*onDayOfWeek*/,
6072  30 /*onDayOfMonth*/,
6073  0 /*atTimeCode*/,
6074  'w' /*atTimeModifier*/,
6075  4 /*deltaCode*/,
6076  'S' /*letter*/,
6077  },
6078  // Rule Palestine 2011 only - Sep 30 0:00 0 -
6079  {
6080  11 /*fromYearTiny*/,
6081  11 /*toYearTiny*/,
6082  9 /*inMonth*/,
6083  0 /*onDayOfWeek*/,
6084  30 /*onDayOfMonth*/,
6085  0 /*atTimeCode*/,
6086  'w' /*atTimeModifier*/,
6087  0 /*deltaCode*/,
6088  '-' /*letter*/,
6089  },
6090  // Rule Palestine 2012 2014 - Mar lastThu 24:00 1:00 S
6091  {
6092  12 /*fromYearTiny*/,
6093  14 /*toYearTiny*/,
6094  3 /*inMonth*/,
6095  4 /*onDayOfWeek*/,
6096  0 /*onDayOfMonth*/,
6097  96 /*atTimeCode*/,
6098  'w' /*atTimeModifier*/,
6099  4 /*deltaCode*/,
6100  'S' /*letter*/,
6101  },
6102  // Rule Palestine 2012 only - Sep 21 1:00 0 -
6103  {
6104  12 /*fromYearTiny*/,
6105  12 /*toYearTiny*/,
6106  9 /*inMonth*/,
6107  0 /*onDayOfWeek*/,
6108  21 /*onDayOfMonth*/,
6109  4 /*atTimeCode*/,
6110  'w' /*atTimeModifier*/,
6111  0 /*deltaCode*/,
6112  '-' /*letter*/,
6113  },
6114  // Rule Palestine 2013 only - Sep Fri>=21 0:00 0 -
6115  {
6116  13 /*fromYearTiny*/,
6117  13 /*toYearTiny*/,
6118  9 /*inMonth*/,
6119  5 /*onDayOfWeek*/,
6120  21 /*onDayOfMonth*/,
6121  0 /*atTimeCode*/,
6122  'w' /*atTimeModifier*/,
6123  0 /*deltaCode*/,
6124  '-' /*letter*/,
6125  },
6126  // Rule Palestine 2014 2015 - Oct Fri>=21 0:00 0 -
6127  {
6128  14 /*fromYearTiny*/,
6129  15 /*toYearTiny*/,
6130  10 /*inMonth*/,
6131  5 /*onDayOfWeek*/,
6132  21 /*onDayOfMonth*/,
6133  0 /*atTimeCode*/,
6134  'w' /*atTimeModifier*/,
6135  0 /*deltaCode*/,
6136  '-' /*letter*/,
6137  },
6138  // Rule Palestine 2015 only - Mar lastFri 24:00 1:00 S
6139  {
6140  15 /*fromYearTiny*/,
6141  15 /*toYearTiny*/,
6142  3 /*inMonth*/,
6143  5 /*onDayOfWeek*/,
6144  0 /*onDayOfMonth*/,
6145  96 /*atTimeCode*/,
6146  'w' /*atTimeModifier*/,
6147  4 /*deltaCode*/,
6148  'S' /*letter*/,
6149  },
6150  // Rule Palestine 2016 max - Mar Sat>=24 1:00 1:00 S
6151  {
6152  16 /*fromYearTiny*/,
6153  126 /*toYearTiny*/,
6154  3 /*inMonth*/,
6155  6 /*onDayOfWeek*/,
6156  24 /*onDayOfMonth*/,
6157  4 /*atTimeCode*/,
6158  'w' /*atTimeModifier*/,
6159  4 /*deltaCode*/,
6160  'S' /*letter*/,
6161  },
6162  // Rule Palestine 2016 max - Oct lastSat 1:00 0 -
6163  {
6164  16 /*fromYearTiny*/,
6165  126 /*toYearTiny*/,
6166  10 /*inMonth*/,
6167  6 /*onDayOfWeek*/,
6168  0 /*onDayOfMonth*/,
6169  4 /*atTimeCode*/,
6170  'w' /*atTimeModifier*/,
6171  0 /*deltaCode*/,
6172  '-' /*letter*/,
6173  },
6174 
6175 };
6176 
6177 
6178 
6179 const extended::ZonePolicy kPolicyPalestine ACE_TIME_PROGMEM = {
6180  24 /*numRules*/,
6181  kZoneRulesPalestine /*rules*/,
6182  0 /* numLetters */,
6183  nullptr /* letters */,
6184 };
6185 
6186 //---------------------------------------------------------------------------
6187 // Policy name: Para
6188 // Rules: 10
6189 // Memory (8-bit): 96
6190 // Memory (32-bit): 100
6191 //---------------------------------------------------------------------------
6192 
6193 static const extended::ZoneRule kZoneRulesPara[] ACE_TIME_PROGMEM = {
6194  // Rule Para 1996 2001 - Oct Sun>=1 0:00 1:00 -
6195  {
6196  -4 /*fromYearTiny*/,
6197  1 /*toYearTiny*/,
6198  10 /*inMonth*/,
6199  7 /*onDayOfWeek*/,
6200  1 /*onDayOfMonth*/,
6201  0 /*atTimeCode*/,
6202  'w' /*atTimeModifier*/,
6203  4 /*deltaCode*/,
6204  '-' /*letter*/,
6205  },
6206  // Rule Para 1997 only - Feb lastSun 0:00 0 -
6207  {
6208  -3 /*fromYearTiny*/,
6209  -3 /*toYearTiny*/,
6210  2 /*inMonth*/,
6211  7 /*onDayOfWeek*/,
6212  0 /*onDayOfMonth*/,
6213  0 /*atTimeCode*/,
6214  'w' /*atTimeModifier*/,
6215  0 /*deltaCode*/,
6216  '-' /*letter*/,
6217  },
6218  // Rule Para 1998 2001 - Mar Sun>=1 0:00 0 -
6219  {
6220  -2 /*fromYearTiny*/,
6221  1 /*toYearTiny*/,
6222  3 /*inMonth*/,
6223  7 /*onDayOfWeek*/,
6224  1 /*onDayOfMonth*/,
6225  0 /*atTimeCode*/,
6226  'w' /*atTimeModifier*/,
6227  0 /*deltaCode*/,
6228  '-' /*letter*/,
6229  },
6230  // Rule Para 2002 2004 - Apr Sun>=1 0:00 0 -
6231  {
6232  2 /*fromYearTiny*/,
6233  4 /*toYearTiny*/,
6234  4 /*inMonth*/,
6235  7 /*onDayOfWeek*/,
6236  1 /*onDayOfMonth*/,
6237  0 /*atTimeCode*/,
6238  'w' /*atTimeModifier*/,
6239  0 /*deltaCode*/,
6240  '-' /*letter*/,
6241  },
6242  // Rule Para 2002 2003 - Sep Sun>=1 0:00 1:00 -
6243  {
6244  2 /*fromYearTiny*/,
6245  3 /*toYearTiny*/,
6246  9 /*inMonth*/,
6247  7 /*onDayOfWeek*/,
6248  1 /*onDayOfMonth*/,
6249  0 /*atTimeCode*/,
6250  'w' /*atTimeModifier*/,
6251  4 /*deltaCode*/,
6252  '-' /*letter*/,
6253  },
6254  // Rule Para 2004 2009 - Oct Sun>=15 0:00 1:00 -
6255  {
6256  4 /*fromYearTiny*/,
6257  9 /*toYearTiny*/,
6258  10 /*inMonth*/,
6259  7 /*onDayOfWeek*/,
6260  15 /*onDayOfMonth*/,
6261  0 /*atTimeCode*/,
6262  'w' /*atTimeModifier*/,
6263  4 /*deltaCode*/,
6264  '-' /*letter*/,
6265  },
6266  // Rule Para 2005 2009 - Mar Sun>=8 0:00 0 -
6267  {
6268  5 /*fromYearTiny*/,
6269  9 /*toYearTiny*/,
6270  3 /*inMonth*/,
6271  7 /*onDayOfWeek*/,
6272  8 /*onDayOfMonth*/,
6273  0 /*atTimeCode*/,
6274  'w' /*atTimeModifier*/,
6275  0 /*deltaCode*/,
6276  '-' /*letter*/,
6277  },
6278  // Rule Para 2010 max - Oct Sun>=1 0:00 1:00 -
6279  {
6280  10 /*fromYearTiny*/,
6281  126 /*toYearTiny*/,
6282  10 /*inMonth*/,
6283  7 /*onDayOfWeek*/,
6284  1 /*onDayOfMonth*/,
6285  0 /*atTimeCode*/,
6286  'w' /*atTimeModifier*/,
6287  4 /*deltaCode*/,
6288  '-' /*letter*/,
6289  },
6290  // Rule Para 2010 2012 - Apr Sun>=8 0:00 0 -
6291  {
6292  10 /*fromYearTiny*/,
6293  12 /*toYearTiny*/,
6294  4 /*inMonth*/,
6295  7 /*onDayOfWeek*/,
6296  8 /*onDayOfMonth*/,
6297  0 /*atTimeCode*/,
6298  'w' /*atTimeModifier*/,
6299  0 /*deltaCode*/,
6300  '-' /*letter*/,
6301  },
6302  // Rule Para 2013 max - Mar Sun>=22 0:00 0 -
6303  {
6304  13 /*fromYearTiny*/,
6305  126 /*toYearTiny*/,
6306  3 /*inMonth*/,
6307  7 /*onDayOfWeek*/,
6308  22 /*onDayOfMonth*/,
6309  0 /*atTimeCode*/,
6310  'w' /*atTimeModifier*/,
6311  0 /*deltaCode*/,
6312  '-' /*letter*/,
6313  },
6314 
6315 };
6316 
6317 
6318 
6319 const extended::ZonePolicy kPolicyPara ACE_TIME_PROGMEM = {
6320  10 /*numRules*/,
6321  kZoneRulesPara /*rules*/,
6322  0 /* numLetters */,
6323  nullptr /* letters */,
6324 };
6325 
6326 //---------------------------------------------------------------------------
6327 // Policy name: Peru
6328 // Rules: 1
6329 // Memory (8-bit): 15
6330 // Memory (32-bit): 19
6331 //---------------------------------------------------------------------------
6332 
6333 static const extended::ZoneRule kZoneRulesPeru[] ACE_TIME_PROGMEM = {
6334  // Rule Peru 1994 only - Apr 1 0:00 0 -
6335  {
6336  -6 /*fromYearTiny*/,
6337  -6 /*toYearTiny*/,
6338  4 /*inMonth*/,
6339  0 /*onDayOfWeek*/,
6340  1 /*onDayOfMonth*/,
6341  0 /*atTimeCode*/,
6342  'w' /*atTimeModifier*/,
6343  0 /*deltaCode*/,
6344  '-' /*letter*/,
6345  },
6346 
6347 };
6348 
6349 
6350 
6351 const extended::ZonePolicy kPolicyPeru ACE_TIME_PROGMEM = {
6352  1 /*numRules*/,
6353  kZoneRulesPeru /*rules*/,
6354  0 /* numLetters */,
6355  nullptr /* letters */,
6356 };
6357 
6358 //---------------------------------------------------------------------------
6359 // Policy name: Phil
6360 // Rules: 1
6361 // Memory (8-bit): 15
6362 // Memory (32-bit): 19
6363 //---------------------------------------------------------------------------
6364 
6365 static const extended::ZoneRule kZoneRulesPhil[] ACE_TIME_PROGMEM = {
6366  // Rule Phil 1978 only - Sep 21 0:00 0 S
6367  {
6368  -22 /*fromYearTiny*/,
6369  -22 /*toYearTiny*/,
6370  9 /*inMonth*/,
6371  0 /*onDayOfWeek*/,
6372  21 /*onDayOfMonth*/,
6373  0 /*atTimeCode*/,
6374  'w' /*atTimeModifier*/,
6375  0 /*deltaCode*/,
6376  'S' /*letter*/,
6377  },
6378 
6379 };
6380 
6381 
6382 
6383 const extended::ZonePolicy kPolicyPhil ACE_TIME_PROGMEM = {
6384  1 /*numRules*/,
6385  kZoneRulesPhil /*rules*/,
6386  0 /* numLetters */,
6387  nullptr /* letters */,
6388 };
6389 
6390 //---------------------------------------------------------------------------
6391 // Policy name: ROK
6392 // Rules: 1
6393 // Memory (8-bit): 15
6394 // Memory (32-bit): 19
6395 //---------------------------------------------------------------------------
6396 
6397 static const extended::ZoneRule kZoneRulesROK[] ACE_TIME_PROGMEM = {
6398  // Rule ROK 1987 1988 - Oct Sun>=8 3:00 0 S
6399  {
6400  -13 /*fromYearTiny*/,
6401  -12 /*toYearTiny*/,
6402  10 /*inMonth*/,
6403  7 /*onDayOfWeek*/,
6404  8 /*onDayOfMonth*/,
6405  12 /*atTimeCode*/,
6406  'w' /*atTimeModifier*/,
6407  0 /*deltaCode*/,
6408  'S' /*letter*/,
6409  },
6410 
6411 };
6412 
6413 
6414 
6415 const extended::ZonePolicy kPolicyROK ACE_TIME_PROGMEM = {
6416  1 /*numRules*/,
6417  kZoneRulesROK /*rules*/,
6418  0 /* numLetters */,
6419  nullptr /* letters */,
6420 };
6421 
6422 //---------------------------------------------------------------------------
6423 // Policy name: Russia
6424 // Rules: 3
6425 // Memory (8-bit): 33
6426 // Memory (32-bit): 37
6427 //---------------------------------------------------------------------------
6428 
6429 static const extended::ZoneRule kZoneRulesRussia[] ACE_TIME_PROGMEM = {
6430  // Rule Russia 1984 1995 - Sep lastSun 2:00s 0 -
6431  {
6432  -16 /*fromYearTiny*/,
6433  -5 /*toYearTiny*/,
6434  9 /*inMonth*/,
6435  7 /*onDayOfWeek*/,
6436  0 /*onDayOfMonth*/,
6437  8 /*atTimeCode*/,
6438  's' /*atTimeModifier*/,
6439  0 /*deltaCode*/,
6440  '-' /*letter*/,
6441  },
6442  // Rule Russia 1985 2010 - Mar lastSun 2:00s 1:00 S
6443  {
6444  -15 /*fromYearTiny*/,
6445  10 /*toYearTiny*/,
6446  3 /*inMonth*/,
6447  7 /*onDayOfWeek*/,
6448  0 /*onDayOfMonth*/,
6449  8 /*atTimeCode*/,
6450  's' /*atTimeModifier*/,
6451  4 /*deltaCode*/,
6452  'S' /*letter*/,
6453  },
6454  // Rule Russia 1996 2010 - Oct lastSun 2:00s 0 -
6455  {
6456  -4 /*fromYearTiny*/,
6457  10 /*toYearTiny*/,
6458  10 /*inMonth*/,
6459  7 /*onDayOfWeek*/,
6460  0 /*onDayOfMonth*/,
6461  8 /*atTimeCode*/,
6462  's' /*atTimeModifier*/,
6463  0 /*deltaCode*/,
6464  '-' /*letter*/,
6465  },
6466 
6467 };
6468 
6469 
6470 
6471 const extended::ZonePolicy kPolicyRussia ACE_TIME_PROGMEM = {
6472  3 /*numRules*/,
6473  kZoneRulesRussia /*rules*/,
6474  0 /* numLetters */,
6475  nullptr /* letters */,
6476 };
6477 
6478 //---------------------------------------------------------------------------
6479 // Policy name: RussiaAsia
6480 // Rules: 3
6481 // Memory (8-bit): 33
6482 // Memory (32-bit): 37
6483 //---------------------------------------------------------------------------
6484 
6485 static const extended::ZoneRule kZoneRulesRussiaAsia[] ACE_TIME_PROGMEM = {
6486  // Rule RussiaAsia 1984 1995 - Sep lastSun 2:00s 0 -
6487  {
6488  -16 /*fromYearTiny*/,
6489  -5 /*toYearTiny*/,
6490  9 /*inMonth*/,
6491  7 /*onDayOfWeek*/,
6492  0 /*onDayOfMonth*/,
6493  8 /*atTimeCode*/,
6494  's' /*atTimeModifier*/,
6495  0 /*deltaCode*/,
6496  '-' /*letter*/,
6497  },
6498  // Rule RussiaAsia 1985 2010 - Mar lastSun 2:00s 1:00 -
6499  {
6500  -15 /*fromYearTiny*/,
6501  10 /*toYearTiny*/,
6502  3 /*inMonth*/,
6503  7 /*onDayOfWeek*/,
6504  0 /*onDayOfMonth*/,
6505  8 /*atTimeCode*/,
6506  's' /*atTimeModifier*/,
6507  4 /*deltaCode*/,
6508  '-' /*letter*/,
6509  },
6510  // Rule RussiaAsia 1996 2010 - Oct lastSun 2:00s 0 -
6511  {
6512  -4 /*fromYearTiny*/,
6513  10 /*toYearTiny*/,
6514  10 /*inMonth*/,
6515  7 /*onDayOfWeek*/,
6516  0 /*onDayOfMonth*/,
6517  8 /*atTimeCode*/,
6518  's' /*atTimeModifier*/,
6519  0 /*deltaCode*/,
6520  '-' /*letter*/,
6521  },
6522 
6523 };
6524 
6525 
6526 
6527 const extended::ZonePolicy kPolicyRussiaAsia ACE_TIME_PROGMEM = {
6528  3 /*numRules*/,
6529  kZoneRulesRussiaAsia /*rules*/,
6530  0 /* numLetters */,
6531  nullptr /* letters */,
6532 };
6533 
6534 //---------------------------------------------------------------------------
6535 // Policy name: SA
6536 // Rules: 1
6537 // Memory (8-bit): 15
6538 // Memory (32-bit): 19
6539 //---------------------------------------------------------------------------
6540 
6541 static const extended::ZoneRule kZoneRulesSA[] ACE_TIME_PROGMEM = {
6542  // Rule SA 1943 1944 - Mar Sun>=15 2:00 0 -
6543  {
6544  -57 /*fromYearTiny*/,
6545  -56 /*toYearTiny*/,
6546  3 /*inMonth*/,
6547  7 /*onDayOfWeek*/,
6548  15 /*onDayOfMonth*/,
6549  8 /*atTimeCode*/,
6550  'w' /*atTimeModifier*/,
6551  0 /*deltaCode*/,
6552  '-' /*letter*/,
6553  },
6554 
6555 };
6556 
6557 
6558 
6559 const extended::ZonePolicy kPolicySA ACE_TIME_PROGMEM = {
6560  1 /*numRules*/,
6561  kZoneRulesSA /*rules*/,
6562  0 /* numLetters */,
6563  nullptr /* letters */,
6564 };
6565 
6566 //---------------------------------------------------------------------------
6567 // Policy name: Salv
6568 // Rules: 1
6569 // Memory (8-bit): 15
6570 // Memory (32-bit): 19
6571 //---------------------------------------------------------------------------
6572 
6573 static const extended::ZoneRule kZoneRulesSalv[] ACE_TIME_PROGMEM = {
6574  // Rule Salv 1987 1988 - Sep lastSun 0:00 0 S
6575  {
6576  -13 /*fromYearTiny*/,
6577  -12 /*toYearTiny*/,
6578  9 /*inMonth*/,
6579  7 /*onDayOfWeek*/,
6580  0 /*onDayOfMonth*/,
6581  0 /*atTimeCode*/,
6582  'w' /*atTimeModifier*/,
6583  0 /*deltaCode*/,
6584  'S' /*letter*/,
6585  },
6586 
6587 };
6588 
6589 
6590 
6591 const extended::ZonePolicy kPolicySalv ACE_TIME_PROGMEM = {
6592  1 /*numRules*/,
6593  kZoneRulesSalv /*rules*/,
6594  0 /* numLetters */,
6595  nullptr /* letters */,
6596 };
6597 
6598 //---------------------------------------------------------------------------
6599 // Policy name: SanLuis
6600 // Rules: 3
6601 // Memory (8-bit): 33
6602 // Memory (32-bit): 37
6603 //---------------------------------------------------------------------------
6604 
6605 static const extended::ZoneRule kZoneRulesSanLuis[] ACE_TIME_PROGMEM = {
6606  // Anchor: Rule SanLuis 2008 2009 - Mar Sun>=8 0:00 0 -
6607  {
6608  -127 /*fromYearTiny*/,
6609  -127 /*toYearTiny*/,
6610  1 /*inMonth*/,
6611  0 /*onDayOfWeek*/,
6612  1 /*onDayOfMonth*/,
6613  0 /*atTimeCode*/,
6614  'w' /*atTimeModifier*/,
6615  0 /*deltaCode*/,
6616  '-' /*letter*/,
6617  },
6618  // Rule SanLuis 2008 2009 - Mar Sun>=8 0:00 0 -
6619  {
6620  8 /*fromYearTiny*/,
6621  9 /*toYearTiny*/,
6622  3 /*inMonth*/,
6623  7 /*onDayOfWeek*/,
6624  8 /*onDayOfMonth*/,
6625  0 /*atTimeCode*/,
6626  'w' /*atTimeModifier*/,
6627  0 /*deltaCode*/,
6628  '-' /*letter*/,
6629  },
6630  // Rule SanLuis 2007 2008 - Oct Sun>=8 0:00 1:00 -
6631  {
6632  7 /*fromYearTiny*/,
6633  8 /*toYearTiny*/,
6634  10 /*inMonth*/,
6635  7 /*onDayOfWeek*/,
6636  8 /*onDayOfMonth*/,
6637  0 /*atTimeCode*/,
6638  'w' /*atTimeModifier*/,
6639  4 /*deltaCode*/,
6640  '-' /*letter*/,
6641  },
6642 
6643 };
6644 
6645 
6646 
6647 const extended::ZonePolicy kPolicySanLuis ACE_TIME_PROGMEM = {
6648  3 /*numRules*/,
6649  kZoneRulesSanLuis /*rules*/,
6650  0 /* numLetters */,
6651  nullptr /* letters */,
6652 };
6653 
6654 //---------------------------------------------------------------------------
6655 // Policy name: StJohns
6656 // Rules: 5
6657 // Memory (8-bit): 56
6658 // Memory (32-bit): 62
6659 //---------------------------------------------------------------------------
6660 
6661 static const extended::ZoneRule kZoneRulesStJohns[] ACE_TIME_PROGMEM = {
6662  // Rule StJohns 1987 2006 - Oct lastSun 0:01 0 S
6663  {
6664  -13 /*fromYearTiny*/,
6665  6 /*toYearTiny*/,
6666  10 /*inMonth*/,
6667  7 /*onDayOfWeek*/,
6668  0 /*onDayOfMonth*/,
6669  0 /*atTimeCode*/,
6670  'w' /*atTimeModifier*/,
6671  0 /*deltaCode*/,
6672  'S' /*letter*/,
6673  },
6674  // Rule StJohns 1988 only - Apr Sun>=1 0:01 2:00 DD
6675  {
6676  -12 /*fromYearTiny*/,
6677  -12 /*toYearTiny*/,
6678  4 /*inMonth*/,
6679  7 /*onDayOfWeek*/,
6680  1 /*onDayOfMonth*/,
6681  0 /*atTimeCode*/,
6682  'w' /*atTimeModifier*/,
6683  8 /*deltaCode*/,
6684  0 /*letter; "DD"*/,
6685  },
6686  // Rule StJohns 1989 2006 - Apr Sun>=1 0:01 1:00 D
6687  {
6688  -11 /*fromYearTiny*/,
6689  6 /*toYearTiny*/,
6690  4 /*inMonth*/,
6691  7 /*onDayOfWeek*/,
6692  1 /*onDayOfMonth*/,
6693  0 /*atTimeCode*/,
6694  'w' /*atTimeModifier*/,
6695  4 /*deltaCode*/,
6696  'D' /*letter*/,
6697  },
6698  // Rule StJohns 2007 2011 - Mar Sun>=8 0:01 1:00 D
6699  {
6700  7 /*fromYearTiny*/,
6701  11 /*toYearTiny*/,
6702  3 /*inMonth*/,
6703  7 /*onDayOfWeek*/,
6704  8 /*onDayOfMonth*/,
6705  0 /*atTimeCode*/,
6706  'w' /*atTimeModifier*/,
6707  4 /*deltaCode*/,
6708  'D' /*letter*/,
6709  },
6710  // Rule StJohns 2007 2010 - Nov Sun>=1 0:01 0 S
6711  {
6712  7 /*fromYearTiny*/,
6713  10 /*toYearTiny*/,
6714  11 /*inMonth*/,
6715  7 /*onDayOfWeek*/,
6716  1 /*onDayOfMonth*/,
6717  0 /*atTimeCode*/,
6718  'w' /*atTimeModifier*/,
6719  0 /*deltaCode*/,
6720  'S' /*letter*/,
6721  },
6722 
6723 };
6724 
6725 static const char* const kLettersStJohns[] ACE_TIME_PROGMEM = {
6726  /*0*/ "DD",
6727 
6728 };
6729 
6730 
6731 const extended::ZonePolicy kPolicyStJohns ACE_TIME_PROGMEM = {
6732  5 /*numRules*/,
6733  kZoneRulesStJohns /*rules*/,
6734  1 /* numLetters */,
6735  kLettersStJohns /* letters */,
6736 };
6737 
6738 //---------------------------------------------------------------------------
6739 // Policy name: Sudan
6740 // Rules: 1
6741 // Memory (8-bit): 15
6742 // Memory (32-bit): 19
6743 //---------------------------------------------------------------------------
6744 
6745 static const extended::ZoneRule kZoneRulesSudan[] ACE_TIME_PROGMEM = {
6746  // Rule Sudan 1970 1985 - Oct 15 0:00 0 -
6747  {
6748  -30 /*fromYearTiny*/,
6749  -15 /*toYearTiny*/,
6750  10 /*inMonth*/,
6751  0 /*onDayOfWeek*/,
6752  15 /*onDayOfMonth*/,
6753  0 /*atTimeCode*/,
6754  'w' /*atTimeModifier*/,
6755  0 /*deltaCode*/,
6756  '-' /*letter*/,
6757  },
6758 
6759 };
6760 
6761 
6762 
6763 const extended::ZonePolicy kPolicySudan ACE_TIME_PROGMEM = {
6764  1 /*numRules*/,
6765  kZoneRulesSudan /*rules*/,
6766  0 /* numLetters */,
6767  nullptr /* letters */,
6768 };
6769 
6770 //---------------------------------------------------------------------------
6771 // Policy name: Syria
6772 // Rules: 12
6773 // Memory (8-bit): 114
6774 // Memory (32-bit): 118
6775 //---------------------------------------------------------------------------
6776 
6777 static const extended::ZoneRule kZoneRulesSyria[] ACE_TIME_PROGMEM = {
6778  // Rule Syria 1994 2005 - Oct 1 0:00 0 -
6779  {
6780  -6 /*fromYearTiny*/,
6781  5 /*toYearTiny*/,
6782  10 /*inMonth*/,
6783  0 /*onDayOfWeek*/,
6784  1 /*onDayOfMonth*/,
6785  0 /*atTimeCode*/,
6786  'w' /*atTimeModifier*/,
6787  0 /*deltaCode*/,
6788  '-' /*letter*/,
6789  },
6790  // Rule Syria 1997 1998 - Mar lastMon 0:00 1:00 S
6791  {
6792  -3 /*fromYearTiny*/,
6793  -2 /*toYearTiny*/,
6794  3 /*inMonth*/,
6795  1 /*onDayOfWeek*/,
6796  0 /*onDayOfMonth*/,
6797  0 /*atTimeCode*/,
6798  'w' /*atTimeModifier*/,
6799  4 /*deltaCode*/,
6800  'S' /*letter*/,
6801  },
6802  // Rule Syria 1999 2006 - Apr 1 0:00 1:00 S
6803  {
6804  -1 /*fromYearTiny*/,
6805  6 /*toYearTiny*/,
6806  4 /*inMonth*/,
6807  0 /*onDayOfWeek*/,
6808  1 /*onDayOfMonth*/,
6809  0 /*atTimeCode*/,
6810  'w' /*atTimeModifier*/,
6811  4 /*deltaCode*/,
6812  'S' /*letter*/,
6813  },
6814  // Rule Syria 2006 only - Sep 22 0:00 0 -
6815  {
6816  6 /*fromYearTiny*/,
6817  6 /*toYearTiny*/,
6818  9 /*inMonth*/,
6819  0 /*onDayOfWeek*/,
6820  22 /*onDayOfMonth*/,
6821  0 /*atTimeCode*/,
6822  'w' /*atTimeModifier*/,
6823  0 /*deltaCode*/,
6824  '-' /*letter*/,
6825  },
6826  // Rule Syria 2007 only - Mar lastFri 0:00 1:00 S
6827  {
6828  7 /*fromYearTiny*/,
6829  7 /*toYearTiny*/,
6830  3 /*inMonth*/,
6831  5 /*onDayOfWeek*/,
6832  0 /*onDayOfMonth*/,
6833  0 /*atTimeCode*/,
6834  'w' /*atTimeModifier*/,
6835  4 /*deltaCode*/,
6836  'S' /*letter*/,
6837  },
6838  // Rule Syria 2007 only - Nov Fri>=1 0:00 0 -
6839  {
6840  7 /*fromYearTiny*/,
6841  7 /*toYearTiny*/,
6842  11 /*inMonth*/,
6843  5 /*onDayOfWeek*/,
6844  1 /*onDayOfMonth*/,
6845  0 /*atTimeCode*/,
6846  'w' /*atTimeModifier*/,
6847  0 /*deltaCode*/,
6848  '-' /*letter*/,
6849  },
6850  // Rule Syria 2008 only - Apr Fri>=1 0:00 1:00 S
6851  {
6852  8 /*fromYearTiny*/,
6853  8 /*toYearTiny*/,
6854  4 /*inMonth*/,
6855  5 /*onDayOfWeek*/,
6856  1 /*onDayOfMonth*/,
6857  0 /*atTimeCode*/,
6858  'w' /*atTimeModifier*/,
6859  4 /*deltaCode*/,
6860  'S' /*letter*/,
6861  },
6862  // Rule Syria 2008 only - Nov 1 0:00 0 -
6863  {
6864  8 /*fromYearTiny*/,
6865  8 /*toYearTiny*/,
6866  11 /*inMonth*/,
6867  0 /*onDayOfWeek*/,
6868  1 /*onDayOfMonth*/,
6869  0 /*atTimeCode*/,
6870  'w' /*atTimeModifier*/,
6871  0 /*deltaCode*/,
6872  '-' /*letter*/,
6873  },
6874  // Rule Syria 2009 only - Mar lastFri 0:00 1:00 S
6875  {
6876  9 /*fromYearTiny*/,
6877  9 /*toYearTiny*/,
6878  3 /*inMonth*/,
6879  5 /*onDayOfWeek*/,
6880  0 /*onDayOfMonth*/,
6881  0 /*atTimeCode*/,
6882  'w' /*atTimeModifier*/,
6883  4 /*deltaCode*/,
6884  'S' /*letter*/,
6885  },
6886  // Rule Syria 2010 2011 - Apr Fri>=1 0:00 1:00 S
6887  {
6888  10 /*fromYearTiny*/,
6889  11 /*toYearTiny*/,
6890  4 /*inMonth*/,
6891  5 /*onDayOfWeek*/,
6892  1 /*onDayOfMonth*/,
6893  0 /*atTimeCode*/,
6894  'w' /*atTimeModifier*/,
6895  4 /*deltaCode*/,
6896  'S' /*letter*/,
6897  },
6898  // Rule Syria 2012 max - Mar lastFri 0:00 1:00 S
6899  {
6900  12 /*fromYearTiny*/,
6901  126 /*toYearTiny*/,
6902  3 /*inMonth*/,
6903  5 /*onDayOfWeek*/,
6904  0 /*onDayOfMonth*/,
6905  0 /*atTimeCode*/,
6906  'w' /*atTimeModifier*/,
6907  4 /*deltaCode*/,
6908  'S' /*letter*/,
6909  },
6910  // Rule Syria 2009 max - Oct lastFri 0:00 0 -
6911  {
6912  9 /*fromYearTiny*/,
6913  126 /*toYearTiny*/,
6914  10 /*inMonth*/,
6915  5 /*onDayOfWeek*/,
6916  0 /*onDayOfMonth*/,
6917  0 /*atTimeCode*/,
6918  'w' /*atTimeModifier*/,
6919  0 /*deltaCode*/,
6920  '-' /*letter*/,
6921  },
6922 
6923 };
6924 
6925 
6926 
6927 const extended::ZonePolicy kPolicySyria ACE_TIME_PROGMEM = {
6928  12 /*numRules*/,
6929  kZoneRulesSyria /*rules*/,
6930  0 /* numLetters */,
6931  nullptr /* letters */,
6932 };
6933 
6934 //---------------------------------------------------------------------------
6935 // Policy name: Taiwan
6936 // Rules: 1
6937 // Memory (8-bit): 15
6938 // Memory (32-bit): 19
6939 //---------------------------------------------------------------------------
6940 
6941 static const extended::ZoneRule kZoneRulesTaiwan[] ACE_TIME_PROGMEM = {
6942  // Rule Taiwan 1979 only - Oct 1 0:00 0 S
6943  {
6944  -21 /*fromYearTiny*/,
6945  -21 /*toYearTiny*/,
6946  10 /*inMonth*/,
6947  0 /*onDayOfWeek*/,
6948  1 /*onDayOfMonth*/,
6949  0 /*atTimeCode*/,
6950  'w' /*atTimeModifier*/,
6951  0 /*deltaCode*/,
6952  'S' /*letter*/,
6953  },
6954 
6955 };
6956 
6957 
6958 
6959 const extended::ZonePolicy kPolicyTaiwan ACE_TIME_PROGMEM = {
6960  1 /*numRules*/,
6961  kZoneRulesTaiwan /*rules*/,
6962  0 /* numLetters */,
6963  nullptr /* letters */,
6964 };
6965 
6966 //---------------------------------------------------------------------------
6967 // Policy name: Thule
6968 // Rules: 5
6969 // Memory (8-bit): 51
6970 // Memory (32-bit): 55
6971 //---------------------------------------------------------------------------
6972 
6973 static const extended::ZoneRule kZoneRulesThule[] ACE_TIME_PROGMEM = {
6974  // Rule Thule 1991 1992 - Sep lastSun 2:00 0 S
6975  {
6976  -9 /*fromYearTiny*/,
6977  -8 /*toYearTiny*/,
6978  9 /*inMonth*/,
6979  7 /*onDayOfWeek*/,
6980  0 /*onDayOfMonth*/,
6981  8 /*atTimeCode*/,
6982  'w' /*atTimeModifier*/,
6983  0 /*deltaCode*/,
6984  'S' /*letter*/,
6985  },
6986  // Rule Thule 1993 2006 - Apr Sun>=1 2:00 1:00 D
6987  {
6988  -7 /*fromYearTiny*/,
6989  6 /*toYearTiny*/,
6990  4 /*inMonth*/,
6991  7 /*onDayOfWeek*/,
6992  1 /*onDayOfMonth*/,
6993  8 /*atTimeCode*/,
6994  'w' /*atTimeModifier*/,
6995  4 /*deltaCode*/,
6996  'D' /*letter*/,
6997  },
6998  // Rule Thule 1993 2006 - Oct lastSun 2:00 0 S
6999  {
7000  -7 /*fromYearTiny*/,
7001  6 /*toYearTiny*/,
7002  10 /*inMonth*/,
7003  7 /*onDayOfWeek*/,
7004  0 /*onDayOfMonth*/,
7005  8 /*atTimeCode*/,
7006  'w' /*atTimeModifier*/,
7007  0 /*deltaCode*/,
7008  'S' /*letter*/,
7009  },
7010  // Rule Thule 2007 max - Mar Sun>=8 2:00 1:00 D
7011  {
7012  7 /*fromYearTiny*/,
7013  126 /*toYearTiny*/,
7014  3 /*inMonth*/,
7015  7 /*onDayOfWeek*/,
7016  8 /*onDayOfMonth*/,
7017  8 /*atTimeCode*/,
7018  'w' /*atTimeModifier*/,
7019  4 /*deltaCode*/,
7020  'D' /*letter*/,
7021  },
7022  // Rule Thule 2007 max - Nov Sun>=1 2:00 0 S
7023  {
7024  7 /*fromYearTiny*/,
7025  126 /*toYearTiny*/,
7026  11 /*inMonth*/,
7027  7 /*onDayOfWeek*/,
7028  1 /*onDayOfMonth*/,
7029  8 /*atTimeCode*/,
7030  'w' /*atTimeModifier*/,
7031  0 /*deltaCode*/,
7032  'S' /*letter*/,
7033  },
7034 
7035 };
7036 
7037 
7038 
7039 const extended::ZonePolicy kPolicyThule ACE_TIME_PROGMEM = {
7040  5 /*numRules*/,
7041  kZoneRulesThule /*rules*/,
7042  0 /* numLetters */,
7043  nullptr /* letters */,
7044 };
7045 
7046 //---------------------------------------------------------------------------
7047 // Policy name: Tonga
7048 // Rules: 7
7049 // Memory (8-bit): 69
7050 // Memory (32-bit): 73
7051 //---------------------------------------------------------------------------
7052 
7053 static const extended::ZoneRule kZoneRulesTonga[] ACE_TIME_PROGMEM = {
7054  // Anchor: Rule Tonga 2000 only - Mar 19 2:00s 0 -
7055  {
7056  -127 /*fromYearTiny*/,
7057  -127 /*toYearTiny*/,
7058  1 /*inMonth*/,
7059  0 /*onDayOfWeek*/,
7060  1 /*onDayOfMonth*/,
7061  0 /*atTimeCode*/,
7062  'w' /*atTimeModifier*/,
7063  0 /*deltaCode*/,
7064  '-' /*letter*/,
7065  },
7066  // Rule Tonga 1999 only - Oct 7 2:00s 1:00 -
7067  {
7068  -1 /*fromYearTiny*/,
7069  -1 /*toYearTiny*/,
7070  10 /*inMonth*/,
7071  0 /*onDayOfWeek*/,
7072  7 /*onDayOfMonth*/,
7073  8 /*atTimeCode*/,
7074  's' /*atTimeModifier*/,
7075  4 /*deltaCode*/,
7076  '-' /*letter*/,
7077  },
7078  // Rule Tonga 2000 only - Mar 19 2:00s 0 -
7079  {
7080  0 /*fromYearTiny*/,
7081  0 /*toYearTiny*/,
7082  3 /*inMonth*/,
7083  0 /*onDayOfWeek*/,
7084  19 /*onDayOfMonth*/,
7085  8 /*atTimeCode*/,
7086  's' /*atTimeModifier*/,
7087  0 /*deltaCode*/,
7088  '-' /*letter*/,
7089  },
7090  // Rule Tonga 2000 2001 - Nov Sun>=1 2:00 1:00 -
7091  {
7092  0 /*fromYearTiny*/,
7093  1 /*toYearTiny*/,
7094  11 /*inMonth*/,
7095  7 /*onDayOfWeek*/,
7096  1 /*onDayOfMonth*/,
7097  8 /*atTimeCode*/,
7098  'w' /*atTimeModifier*/,
7099  4 /*deltaCode*/,
7100  '-' /*letter*/,
7101  },
7102  // Rule Tonga 2001 2002 - Jan lastSun 2:00 0 -
7103  {
7104  1 /*fromYearTiny*/,
7105  2 /*toYearTiny*/,
7106  1 /*inMonth*/,
7107  7 /*onDayOfWeek*/,
7108  0 /*onDayOfMonth*/,
7109  8 /*atTimeCode*/,
7110  'w' /*atTimeModifier*/,
7111  0 /*deltaCode*/,
7112  '-' /*letter*/,
7113  },
7114  // Rule Tonga 2016 only - Nov Sun>=1 2:00 1:00 -
7115  {
7116  16 /*fromYearTiny*/,
7117  16 /*toYearTiny*/,
7118  11 /*inMonth*/,
7119  7 /*onDayOfWeek*/,
7120  1 /*onDayOfMonth*/,
7121  8 /*atTimeCode*/,
7122  'w' /*atTimeModifier*/,
7123  4 /*deltaCode*/,
7124  '-' /*letter*/,
7125  },
7126  // Rule Tonga 2017 only - Jan Sun>=15 3:00 0 -
7127  {
7128  17 /*fromYearTiny*/,
7129  17 /*toYearTiny*/,
7130  1 /*inMonth*/,
7131  7 /*onDayOfWeek*/,
7132  15 /*onDayOfMonth*/,
7133  12 /*atTimeCode*/,
7134  'w' /*atTimeModifier*/,
7135  0 /*deltaCode*/,
7136  '-' /*letter*/,
7137  },
7138 
7139 };
7140 
7141 
7142 
7143 const extended::ZonePolicy kPolicyTonga ACE_TIME_PROGMEM = {
7144  7 /*numRules*/,
7145  kZoneRulesTonga /*rules*/,
7146  0 /* numLetters */,
7147  nullptr /* letters */,
7148 };
7149 
7150 //---------------------------------------------------------------------------
7151 // Policy name: Troll
7152 // Rules: 3
7153 // Memory (8-bit): 45
7154 // Memory (32-bit): 53
7155 //---------------------------------------------------------------------------
7156 
7157 static const extended::ZoneRule kZoneRulesTroll[] ACE_TIME_PROGMEM = {
7158  // Anchor: Rule Troll 2004 max - Oct lastSun 1:00u 0:00 +00
7159  {
7160  -127 /*fromYearTiny*/,
7161  -127 /*toYearTiny*/,
7162  1 /*inMonth*/,
7163  0 /*onDayOfWeek*/,
7164  1 /*onDayOfMonth*/,
7165  0 /*atTimeCode*/,
7166  'w' /*atTimeModifier*/,
7167  0 /*deltaCode*/,
7168  0 /*letter; "+00"*/,
7169  },
7170  // Rule Troll 2005 max - Mar lastSun 1:00u 2:00 +02
7171  {
7172  5 /*fromYearTiny*/,
7173  126 /*toYearTiny*/,
7174  3 /*inMonth*/,
7175  7 /*onDayOfWeek*/,
7176  0 /*onDayOfMonth*/,
7177  4 /*atTimeCode*/,
7178  'u' /*atTimeModifier*/,
7179  8 /*deltaCode*/,
7180  1 /*letter; "+02"*/,
7181  },
7182  // Rule Troll 2004 max - Oct lastSun 1:00u 0:00 +00
7183  {
7184  4 /*fromYearTiny*/,
7185  126 /*toYearTiny*/,
7186  10 /*inMonth*/,
7187  7 /*onDayOfWeek*/,
7188  0 /*onDayOfMonth*/,
7189  4 /*atTimeCode*/,
7190  'u' /*atTimeModifier*/,
7191  0 /*deltaCode*/,
7192  0 /*letter; "+00"*/,
7193  },
7194 
7195 };
7196 
7197 static const char* const kLettersTroll[] ACE_TIME_PROGMEM = {
7198  /*0*/ "+00",
7199  /*1*/ "+02",
7200 
7201 };
7202 
7203 
7204 const extended::ZonePolicy kPolicyTroll ACE_TIME_PROGMEM = {
7205  3 /*numRules*/,
7206  kZoneRulesTroll /*rules*/,
7207  2 /* numLetters */,
7208  kLettersTroll /* letters */,
7209 };
7210 
7211 //---------------------------------------------------------------------------
7212 // Policy name: Tunisia
7213 // Rules: 5
7214 // Memory (8-bit): 51
7215 // Memory (32-bit): 55
7216 //---------------------------------------------------------------------------
7217 
7218 static const extended::ZoneRule kZoneRulesTunisia[] ACE_TIME_PROGMEM = {
7219  // Rule Tunisia 1988 1990 - Sep lastSun 0:00s 0 -
7220  {
7221  -12 /*fromYearTiny*/,
7222  -10 /*toYearTiny*/,
7223  9 /*inMonth*/,
7224  7 /*onDayOfWeek*/,
7225  0 /*onDayOfMonth*/,
7226  0 /*atTimeCode*/,
7227  's' /*atTimeModifier*/,
7228  0 /*deltaCode*/,
7229  '-' /*letter*/,
7230  },
7231  // Rule Tunisia 2005 only - May 1 0:00s 1:00 S
7232  {
7233  5 /*fromYearTiny*/,
7234  5 /*toYearTiny*/,
7235  5 /*inMonth*/,
7236  0 /*onDayOfWeek*/,
7237  1 /*onDayOfMonth*/,
7238  0 /*atTimeCode*/,
7239  's' /*atTimeModifier*/,
7240  4 /*deltaCode*/,
7241  'S' /*letter*/,
7242  },
7243  // Rule Tunisia 2005 only - Sep 30 1:00s 0 -
7244  {
7245  5 /*fromYearTiny*/,
7246  5 /*toYearTiny*/,
7247  9 /*inMonth*/,
7248  0 /*onDayOfWeek*/,
7249  30 /*onDayOfMonth*/,
7250  4 /*atTimeCode*/,
7251  's' /*atTimeModifier*/,
7252  0 /*deltaCode*/,
7253  '-' /*letter*/,
7254  },
7255  // Rule Tunisia 2006 2008 - Mar lastSun 2:00s 1:00 S
7256  {
7257  6 /*fromYearTiny*/,
7258  8 /*toYearTiny*/,
7259  3 /*inMonth*/,
7260  7 /*onDayOfWeek*/,
7261  0 /*onDayOfMonth*/,
7262  8 /*atTimeCode*/,
7263  's' /*atTimeModifier*/,
7264  4 /*deltaCode*/,
7265  'S' /*letter*/,
7266  },
7267  // Rule Tunisia 2006 2008 - Oct lastSun 2:00s 0 -
7268  {
7269  6 /*fromYearTiny*/,
7270  8 /*toYearTiny*/,
7271  10 /*inMonth*/,
7272  7 /*onDayOfWeek*/,
7273  0 /*onDayOfMonth*/,
7274  8 /*atTimeCode*/,
7275  's' /*atTimeModifier*/,
7276  0 /*deltaCode*/,
7277  '-' /*letter*/,
7278  },
7279 
7280 };
7281 
7282 
7283 
7284 const extended::ZonePolicy kPolicyTunisia ACE_TIME_PROGMEM = {
7285  5 /*numRules*/,
7286  kZoneRulesTunisia /*rules*/,
7287  0 /* numLetters */,
7288  nullptr /* letters */,
7289 };
7290 
7291 //---------------------------------------------------------------------------
7292 // Policy name: Turkey
7293 // Rules: 3
7294 // Memory (8-bit): 33
7295 // Memory (32-bit): 37
7296 //---------------------------------------------------------------------------
7297 
7298 static const extended::ZoneRule kZoneRulesTurkey[] ACE_TIME_PROGMEM = {
7299  // Rule Turkey 1986 1995 - Sep lastSun 1:00s 0 -
7300  {
7301  -14 /*fromYearTiny*/,
7302  -5 /*toYearTiny*/,
7303  9 /*inMonth*/,
7304  7 /*onDayOfWeek*/,
7305  0 /*onDayOfMonth*/,
7306  4 /*atTimeCode*/,
7307  's' /*atTimeModifier*/,
7308  0 /*deltaCode*/,
7309  '-' /*letter*/,
7310  },
7311  // Rule Turkey 1995 2006 - Mar lastSun 1:00s 1:00 S
7312  {
7313  -5 /*fromYearTiny*/,
7314  6 /*toYearTiny*/,
7315  3 /*inMonth*/,
7316  7 /*onDayOfWeek*/,
7317  0 /*onDayOfMonth*/,
7318  4 /*atTimeCode*/,
7319  's' /*atTimeModifier*/,
7320  4 /*deltaCode*/,
7321  'S' /*letter*/,
7322  },
7323  // Rule Turkey 1996 2006 - Oct lastSun 1:00s 0 -
7324  {
7325  -4 /*fromYearTiny*/,
7326  6 /*toYearTiny*/,
7327  10 /*inMonth*/,
7328  7 /*onDayOfWeek*/,
7329  0 /*onDayOfMonth*/,
7330  4 /*atTimeCode*/,
7331  's' /*atTimeModifier*/,
7332  0 /*deltaCode*/,
7333  '-' /*letter*/,
7334  },
7335 
7336 };
7337 
7338 
7339 
7340 const extended::ZonePolicy kPolicyTurkey ACE_TIME_PROGMEM = {
7341  3 /*numRules*/,
7342  kZoneRulesTurkey /*rules*/,
7343  0 /* numLetters */,
7344  nullptr /* letters */,
7345 };
7346 
7347 //---------------------------------------------------------------------------
7348 // Policy name: US
7349 // Rules: 5
7350 // Memory (8-bit): 51
7351 // Memory (32-bit): 55
7352 //---------------------------------------------------------------------------
7353 
7354 static const extended::ZoneRule kZoneRulesUS[] ACE_TIME_PROGMEM = {
7355  // Rule US 1967 2006 - Oct lastSun 2:00 0 S
7356  {
7357  -33 /*fromYearTiny*/,
7358  6 /*toYearTiny*/,
7359  10 /*inMonth*/,
7360  7 /*onDayOfWeek*/,
7361  0 /*onDayOfMonth*/,
7362  8 /*atTimeCode*/,
7363  'w' /*atTimeModifier*/,
7364  0 /*deltaCode*/,
7365  'S' /*letter*/,
7366  },
7367  // Rule US 1976 1986 - Apr lastSun 2:00 1:00 D
7368  {
7369  -24 /*fromYearTiny*/,
7370  -14 /*toYearTiny*/,
7371  4 /*inMonth*/,
7372  7 /*onDayOfWeek*/,
7373  0 /*onDayOfMonth*/,
7374  8 /*atTimeCode*/,
7375  'w' /*atTimeModifier*/,
7376  4 /*deltaCode*/,
7377  'D' /*letter*/,
7378  },
7379  // Rule US 1987 2006 - Apr Sun>=1 2:00 1:00 D
7380  {
7381  -13 /*fromYearTiny*/,
7382  6 /*toYearTiny*/,
7383  4 /*inMonth*/,
7384  7 /*onDayOfWeek*/,
7385  1 /*onDayOfMonth*/,
7386  8 /*atTimeCode*/,
7387  'w' /*atTimeModifier*/,
7388  4 /*deltaCode*/,
7389  'D' /*letter*/,
7390  },
7391  // Rule US 2007 max - Mar Sun>=8 2:00 1:00 D
7392  {
7393  7 /*fromYearTiny*/,
7394  126 /*toYearTiny*/,
7395  3 /*inMonth*/,
7396  7 /*onDayOfWeek*/,
7397  8 /*onDayOfMonth*/,
7398  8 /*atTimeCode*/,
7399  'w' /*atTimeModifier*/,
7400  4 /*deltaCode*/,
7401  'D' /*letter*/,
7402  },
7403  // Rule US 2007 max - Nov Sun>=1 2:00 0 S
7404  {
7405  7 /*fromYearTiny*/,
7406  126 /*toYearTiny*/,
7407  11 /*inMonth*/,
7408  7 /*onDayOfWeek*/,
7409  1 /*onDayOfMonth*/,
7410  8 /*atTimeCode*/,
7411  'w' /*atTimeModifier*/,
7412  0 /*deltaCode*/,
7413  'S' /*letter*/,
7414  },
7415 
7416 };
7417 
7418 
7419 
7420 const extended::ZonePolicy kPolicyUS ACE_TIME_PROGMEM = {
7421  5 /*numRules*/,
7422  kZoneRulesUS /*rules*/,
7423  0 /* numLetters */,
7424  nullptr /* letters */,
7425 };
7426 
7427 //---------------------------------------------------------------------------
7428 // Policy name: Uruguay
7429 // Rules: 6
7430 // Memory (8-bit): 60
7431 // Memory (32-bit): 64
7432 //---------------------------------------------------------------------------
7433 
7434 static const extended::ZoneRule kZoneRulesUruguay[] ACE_TIME_PROGMEM = {
7435  // Rule Uruguay 1993 only - Feb 28 0:00 0 -
7436  {
7437  -7 /*fromYearTiny*/,
7438  -7 /*toYearTiny*/,
7439  2 /*inMonth*/,
7440  0 /*onDayOfWeek*/,
7441  28 /*onDayOfMonth*/,
7442  0 /*atTimeCode*/,
7443  'w' /*atTimeModifier*/,
7444  0 /*deltaCode*/,
7445  '-' /*letter*/,
7446  },
7447  // Rule Uruguay 2004 only - Sep 19 0:00 1:00 -
7448  {
7449  4 /*fromYearTiny*/,
7450  4 /*toYearTiny*/,
7451  9 /*inMonth*/,
7452  0 /*onDayOfWeek*/,
7453  19 /*onDayOfMonth*/,
7454  0 /*atTimeCode*/,
7455  'w' /*atTimeModifier*/,
7456  4 /*deltaCode*/,
7457  '-' /*letter*/,
7458  },
7459  // Rule Uruguay 2005 only - Mar 27 2:00 0 -
7460  {
7461  5 /*fromYearTiny*/,
7462  5 /*toYearTiny*/,
7463  3 /*inMonth*/,
7464  0 /*onDayOfWeek*/,
7465  27 /*onDayOfMonth*/,
7466  8 /*atTimeCode*/,
7467  'w' /*atTimeModifier*/,
7468  0 /*deltaCode*/,
7469  '-' /*letter*/,
7470  },
7471  // Rule Uruguay 2005 only - Oct 9 2:00 1:00 -
7472  {
7473  5 /*fromYearTiny*/,
7474  5 /*toYearTiny*/,
7475  10 /*inMonth*/,
7476  0 /*onDayOfWeek*/,
7477  9 /*onDayOfMonth*/,
7478  8 /*atTimeCode*/,
7479  'w' /*atTimeModifier*/,
7480  4 /*deltaCode*/,
7481  '-' /*letter*/,
7482  },
7483  // Rule Uruguay 2006 2015 - Mar Sun>=8 2:00 0 -
7484  {
7485  6 /*fromYearTiny*/,
7486  15 /*toYearTiny*/,
7487  3 /*inMonth*/,
7488  7 /*onDayOfWeek*/,
7489  8 /*onDayOfMonth*/,
7490  8 /*atTimeCode*/,
7491  'w' /*atTimeModifier*/,
7492  0 /*deltaCode*/,
7493  '-' /*letter*/,
7494  },
7495  // Rule Uruguay 2006 2014 - Oct Sun>=1 2:00 1:00 -
7496  {
7497  6 /*fromYearTiny*/,
7498  14 /*toYearTiny*/,
7499  10 /*inMonth*/,
7500  7 /*onDayOfWeek*/,
7501  1 /*onDayOfMonth*/,
7502  8 /*atTimeCode*/,
7503  'w' /*atTimeModifier*/,
7504  4 /*deltaCode*/,
7505  '-' /*letter*/,
7506  },
7507 
7508 };
7509 
7510 
7511 
7512 const extended::ZonePolicy kPolicyUruguay ACE_TIME_PROGMEM = {
7513  6 /*numRules*/,
7514  kZoneRulesUruguay /*rules*/,
7515  0 /* numLetters */,
7516  nullptr /* letters */,
7517 };
7518 
7519 //---------------------------------------------------------------------------
7520 // Policy name: Vanuatu
7521 // Rules: 1
7522 // Memory (8-bit): 15
7523 // Memory (32-bit): 19
7524 //---------------------------------------------------------------------------
7525 
7526 static const extended::ZoneRule kZoneRulesVanuatu[] ACE_TIME_PROGMEM = {
7527  // Rule Vanuatu 1992 1993 - Jan Sun>=23 0:00 0 -
7528  {
7529  -8 /*fromYearTiny*/,
7530  -7 /*toYearTiny*/,
7531  1 /*inMonth*/,
7532  7 /*onDayOfWeek*/,
7533  23 /*onDayOfMonth*/,
7534  0 /*atTimeCode*/,
7535  'w' /*atTimeModifier*/,
7536  0 /*deltaCode*/,
7537  '-' /*letter*/,
7538  },
7539 
7540 };
7541 
7542 
7543 
7544 const extended::ZonePolicy kPolicyVanuatu ACE_TIME_PROGMEM = {
7545  1 /*numRules*/,
7546  kZoneRulesVanuatu /*rules*/,
7547  0 /* numLetters */,
7548  nullptr /* letters */,
7549 };
7550 
7551 //---------------------------------------------------------------------------
7552 // Policy name: WS
7553 // Rules: 6
7554 // Memory (8-bit): 60
7555 // Memory (32-bit): 64
7556 //---------------------------------------------------------------------------
7557 
7558 static const extended::ZoneRule kZoneRulesWS[] ACE_TIME_PROGMEM = {
7559  // Anchor: Rule WS 2011 only - Apr Sat>=1 4:00 0 -
7560  {
7561  -127 /*fromYearTiny*/,
7562  -127 /*toYearTiny*/,
7563  1 /*inMonth*/,
7564  0 /*onDayOfWeek*/,
7565  1 /*onDayOfMonth*/,
7566  0 /*atTimeCode*/,
7567  'w' /*atTimeModifier*/,
7568  0 /*deltaCode*/,
7569  '-' /*letter*/,
7570  },
7571  // Rule WS 2010 only - Sep lastSun 0:00 1 -
7572  {
7573  10 /*fromYearTiny*/,
7574  10 /*toYearTiny*/,
7575  9 /*inMonth*/,
7576  7 /*onDayOfWeek*/,
7577  0 /*onDayOfMonth*/,
7578  0 /*atTimeCode*/,
7579  'w' /*atTimeModifier*/,
7580  4 /*deltaCode*/,
7581  '-' /*letter*/,
7582  },
7583  // Rule WS 2011 only - Apr Sat>=1 4:00 0 -
7584  {
7585  11 /*fromYearTiny*/,
7586  11 /*toYearTiny*/,
7587  4 /*inMonth*/,
7588  6 /*onDayOfWeek*/,
7589  1 /*onDayOfMonth*/,
7590  16 /*atTimeCode*/,
7591  'w' /*atTimeModifier*/,
7592  0 /*deltaCode*/,
7593  '-' /*letter*/,
7594  },
7595  // Rule WS 2011 only - Sep lastSat 3:00 1 -
7596  {
7597  11 /*fromYearTiny*/,
7598  11 /*toYearTiny*/,
7599  9 /*inMonth*/,
7600  6 /*onDayOfWeek*/,
7601  0 /*onDayOfMonth*/,
7602  12 /*atTimeCode*/,
7603  'w' /*atTimeModifier*/,
7604  4 /*deltaCode*/,
7605  '-' /*letter*/,
7606  },
7607  // Rule WS 2012 max - Apr Sun>=1 4:00 0 -
7608  {
7609  12 /*fromYearTiny*/,
7610  126 /*toYearTiny*/,
7611  4 /*inMonth*/,
7612  7 /*onDayOfWeek*/,
7613  1 /*onDayOfMonth*/,
7614  16 /*atTimeCode*/,
7615  'w' /*atTimeModifier*/,
7616  0 /*deltaCode*/,
7617  '-' /*letter*/,
7618  },
7619  // Rule WS 2012 max - Sep lastSun 3:00 1 -
7620  {
7621  12 /*fromYearTiny*/,
7622  126 /*toYearTiny*/,
7623  9 /*inMonth*/,
7624  7 /*onDayOfWeek*/,
7625  0 /*onDayOfMonth*/,
7626  12 /*atTimeCode*/,
7627  'w' /*atTimeModifier*/,
7628  4 /*deltaCode*/,
7629  '-' /*letter*/,
7630  },
7631 
7632 };
7633 
7634 
7635 
7636 const extended::ZonePolicy kPolicyWS ACE_TIME_PROGMEM = {
7637  6 /*numRules*/,
7638  kZoneRulesWS /*rules*/,
7639  0 /* numLetters */,
7640  nullptr /* letters */,
7641 };
7642 
7643 //---------------------------------------------------------------------------
7644 // Policy name: Winn
7645 // Rules: 3
7646 // Memory (8-bit): 33
7647 // Memory (32-bit): 37
7648 //---------------------------------------------------------------------------
7649 
7650 static const extended::ZoneRule kZoneRulesWinn[] ACE_TIME_PROGMEM = {
7651  // Rule Winn 1966 1986 - Apr lastSun 2:00s 1:00 D
7652  {
7653  -34 /*fromYearTiny*/,
7654  -14 /*toYearTiny*/,
7655  4 /*inMonth*/,
7656  7 /*onDayOfWeek*/,
7657  0 /*onDayOfMonth*/,
7658  8 /*atTimeCode*/,
7659  's' /*atTimeModifier*/,
7660  4 /*deltaCode*/,
7661  'D' /*letter*/,
7662  },
7663  // Rule Winn 1966 2005 - Oct lastSun 2:00s 0 S
7664  {
7665  -34 /*fromYearTiny*/,
7666  5 /*toYearTiny*/,
7667  10 /*inMonth*/,
7668  7 /*onDayOfWeek*/,
7669  0 /*onDayOfMonth*/,
7670  8 /*atTimeCode*/,
7671  's' /*atTimeModifier*/,
7672  0 /*deltaCode*/,
7673  'S' /*letter*/,
7674  },
7675  // Rule Winn 1987 2005 - Apr Sun>=1 2:00s 1:00 D
7676  {
7677  -13 /*fromYearTiny*/,
7678  5 /*toYearTiny*/,
7679  4 /*inMonth*/,
7680  7 /*onDayOfWeek*/,
7681  1 /*onDayOfMonth*/,
7682  8 /*atTimeCode*/,
7683  's' /*atTimeModifier*/,
7684  4 /*deltaCode*/,
7685  'D' /*letter*/,
7686  },
7687 
7688 };
7689 
7690 
7691 
7692 const extended::ZonePolicy kPolicyWinn ACE_TIME_PROGMEM = {
7693  3 /*numRules*/,
7694  kZoneRulesWinn /*rules*/,
7695  0 /* numLetters */,
7696  nullptr /* letters */,
7697 };
7698 
7699 //---------------------------------------------------------------------------
7700 // Policy name: Zion
7701 // Rules: 27
7702 // Memory (8-bit): 249
7703 // Memory (32-bit): 253
7704 //---------------------------------------------------------------------------
7705 
7706 static const extended::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = {
7707  // Rule Zion 1998 only - Sep 6 0:00 0 S
7708  {
7709  -2 /*fromYearTiny*/,
7710  -2 /*toYearTiny*/,
7711  9 /*inMonth*/,
7712  0 /*onDayOfWeek*/,
7713  6 /*onDayOfMonth*/,
7714  0 /*atTimeCode*/,
7715  'w' /*atTimeModifier*/,
7716  0 /*deltaCode*/,
7717  'S' /*letter*/,
7718  },
7719  // Rule Zion 1999 only - Apr 2 2:00 1:00 D
7720  {
7721  -1 /*fromYearTiny*/,
7722  -1 /*toYearTiny*/,
7723  4 /*inMonth*/,
7724  0 /*onDayOfWeek*/,
7725  2 /*onDayOfMonth*/,
7726  8 /*atTimeCode*/,
7727  'w' /*atTimeModifier*/,
7728  4 /*deltaCode*/,
7729  'D' /*letter*/,
7730  },
7731  // Rule Zion 1999 only - Sep 3 2:00 0 S
7732  {
7733  -1 /*fromYearTiny*/,
7734  -1 /*toYearTiny*/,
7735  9 /*inMonth*/,
7736  0 /*onDayOfWeek*/,
7737  3 /*onDayOfMonth*/,
7738  8 /*atTimeCode*/,
7739  'w' /*atTimeModifier*/,
7740  0 /*deltaCode*/,
7741  'S' /*letter*/,
7742  },
7743  // Rule Zion 2000 only - Apr 14 2:00 1:00 D
7744  {
7745  0 /*fromYearTiny*/,
7746  0 /*toYearTiny*/,
7747  4 /*inMonth*/,
7748  0 /*onDayOfWeek*/,
7749  14 /*onDayOfMonth*/,
7750  8 /*atTimeCode*/,
7751  'w' /*atTimeModifier*/,
7752  4 /*deltaCode*/,
7753  'D' /*letter*/,
7754  },
7755  // Rule Zion 2000 only - Oct 6 1:00 0 S
7756  {
7757  0 /*fromYearTiny*/,
7758  0 /*toYearTiny*/,
7759  10 /*inMonth*/,
7760  0 /*onDayOfWeek*/,
7761  6 /*onDayOfMonth*/,
7762  4 /*atTimeCode*/,
7763  'w' /*atTimeModifier*/,
7764  0 /*deltaCode*/,
7765  'S' /*letter*/,
7766  },
7767  // Rule Zion 2001 only - Apr 9 1:00 1:00 D
7768  {
7769  1 /*fromYearTiny*/,
7770  1 /*toYearTiny*/,
7771  4 /*inMonth*/,
7772  0 /*onDayOfWeek*/,
7773  9 /*onDayOfMonth*/,
7774  4 /*atTimeCode*/,
7775  'w' /*atTimeModifier*/,
7776  4 /*deltaCode*/,
7777  'D' /*letter*/,
7778  },
7779  // Rule Zion 2001 only - Sep 24 1:00 0 S
7780  {
7781  1 /*fromYearTiny*/,
7782  1 /*toYearTiny*/,
7783  9 /*inMonth*/,
7784  0 /*onDayOfWeek*/,
7785  24 /*onDayOfMonth*/,
7786  4 /*atTimeCode*/,
7787  'w' /*atTimeModifier*/,
7788  0 /*deltaCode*/,
7789  'S' /*letter*/,
7790  },
7791  // Rule Zion 2002 only - Mar 29 1:00 1:00 D
7792  {
7793  2 /*fromYearTiny*/,
7794  2 /*toYearTiny*/,
7795  3 /*inMonth*/,
7796  0 /*onDayOfWeek*/,
7797  29 /*onDayOfMonth*/,
7798  4 /*atTimeCode*/,
7799  'w' /*atTimeModifier*/,
7800  4 /*deltaCode*/,
7801  'D' /*letter*/,
7802  },
7803  // Rule Zion 2002 only - Oct 7 1:00 0 S
7804  {
7805  2 /*fromYearTiny*/,
7806  2 /*toYearTiny*/,
7807  10 /*inMonth*/,
7808  0 /*onDayOfWeek*/,
7809  7 /*onDayOfMonth*/,
7810  4 /*atTimeCode*/,
7811  'w' /*atTimeModifier*/,
7812  0 /*deltaCode*/,
7813  'S' /*letter*/,
7814  },
7815  // Rule Zion 2003 only - Mar 28 1:00 1:00 D
7816  {
7817  3 /*fromYearTiny*/,
7818  3 /*toYearTiny*/,
7819  3 /*inMonth*/,
7820  0 /*onDayOfWeek*/,
7821  28 /*onDayOfMonth*/,
7822  4 /*atTimeCode*/,
7823  'w' /*atTimeModifier*/,
7824  4 /*deltaCode*/,
7825  'D' /*letter*/,
7826  },
7827  // Rule Zion 2003 only - Oct 3 1:00 0 S
7828  {
7829  3 /*fromYearTiny*/,
7830  3 /*toYearTiny*/,
7831  10 /*inMonth*/,
7832  0 /*onDayOfWeek*/,
7833  3 /*onDayOfMonth*/,
7834  4 /*atTimeCode*/,
7835  'w' /*atTimeModifier*/,
7836  0 /*deltaCode*/,
7837  'S' /*letter*/,
7838  },
7839  // Rule Zion 2004 only - Apr 7 1:00 1:00 D
7840  {
7841  4 /*fromYearTiny*/,
7842  4 /*toYearTiny*/,
7843  4 /*inMonth*/,
7844  0 /*onDayOfWeek*/,
7845  7 /*onDayOfMonth*/,
7846  4 /*atTimeCode*/,
7847  'w' /*atTimeModifier*/,
7848  4 /*deltaCode*/,
7849  'D' /*letter*/,
7850  },
7851  // Rule Zion 2004 only - Sep 22 1:00 0 S
7852  {
7853  4 /*fromYearTiny*/,
7854  4 /*toYearTiny*/,
7855  9 /*inMonth*/,
7856  0 /*onDayOfWeek*/,
7857  22 /*onDayOfMonth*/,
7858  4 /*atTimeCode*/,
7859  'w' /*atTimeModifier*/,
7860  0 /*deltaCode*/,
7861  'S' /*letter*/,
7862  },
7863  // Rule Zion 2005 only - Apr 1 2:00 1:00 D
7864  {
7865  5 /*fromYearTiny*/,
7866  5 /*toYearTiny*/,
7867  4 /*inMonth*/,
7868  0 /*onDayOfWeek*/,
7869  1 /*onDayOfMonth*/,
7870  8 /*atTimeCode*/,
7871  'w' /*atTimeModifier*/,
7872  4 /*deltaCode*/,
7873  'D' /*letter*/,
7874  },
7875  // Rule Zion 2005 only - Oct 9 2:00 0 S
7876  {
7877  5 /*fromYearTiny*/,
7878  5 /*toYearTiny*/,
7879  10 /*inMonth*/,
7880  0 /*onDayOfWeek*/,
7881  9 /*onDayOfMonth*/,
7882  8 /*atTimeCode*/,
7883  'w' /*atTimeModifier*/,
7884  0 /*deltaCode*/,
7885  'S' /*letter*/,
7886  },
7887  // Rule Zion 2006 2010 - Mar Fri>=26 2:00 1:00 D
7888  {
7889  6 /*fromYearTiny*/,
7890  10 /*toYearTiny*/,
7891  3 /*inMonth*/,
7892  5 /*onDayOfWeek*/,
7893  26 /*onDayOfMonth*/,
7894  8 /*atTimeCode*/,
7895  'w' /*atTimeModifier*/,
7896  4 /*deltaCode*/,
7897  'D' /*letter*/,
7898  },
7899  // Rule Zion 2006 only - Oct 1 2:00 0 S
7900  {
7901  6 /*fromYearTiny*/,
7902  6 /*toYearTiny*/,
7903  10 /*inMonth*/,
7904  0 /*onDayOfWeek*/,
7905  1 /*onDayOfMonth*/,
7906  8 /*atTimeCode*/,
7907  'w' /*atTimeModifier*/,
7908  0 /*deltaCode*/,
7909  'S' /*letter*/,
7910  },
7911  // Rule Zion 2007 only - Sep 16 2:00 0 S
7912  {
7913  7 /*fromYearTiny*/,
7914  7 /*toYearTiny*/,
7915  9 /*inMonth*/,
7916  0 /*onDayOfWeek*/,
7917  16 /*onDayOfMonth*/,
7918  8 /*atTimeCode*/,
7919  'w' /*atTimeModifier*/,
7920  0 /*deltaCode*/,
7921  'S' /*letter*/,
7922  },
7923  // Rule Zion 2008 only - Oct 5 2:00 0 S
7924  {
7925  8 /*fromYearTiny*/,
7926  8 /*toYearTiny*/,
7927  10 /*inMonth*/,
7928  0 /*onDayOfWeek*/,
7929  5 /*onDayOfMonth*/,
7930  8 /*atTimeCode*/,
7931  'w' /*atTimeModifier*/,
7932  0 /*deltaCode*/,
7933  'S' /*letter*/,
7934  },
7935  // Rule Zion 2009 only - Sep 27 2:00 0 S
7936  {
7937  9 /*fromYearTiny*/,
7938  9 /*toYearTiny*/,
7939  9 /*inMonth*/,
7940  0 /*onDayOfWeek*/,
7941  27 /*onDayOfMonth*/,
7942  8 /*atTimeCode*/,
7943  'w' /*atTimeModifier*/,
7944  0 /*deltaCode*/,
7945  'S' /*letter*/,
7946  },
7947  // Rule Zion 2010 only - Sep 12 2:00 0 S
7948  {
7949  10 /*fromYearTiny*/,
7950  10 /*toYearTiny*/,
7951  9 /*inMonth*/,
7952  0 /*onDayOfWeek*/,
7953  12 /*onDayOfMonth*/,
7954  8 /*atTimeCode*/,
7955  'w' /*atTimeModifier*/,
7956  0 /*deltaCode*/,
7957  'S' /*letter*/,
7958  },
7959  // Rule Zion 2011 only - Apr 1 2:00 1:00 D
7960  {
7961  11 /*fromYearTiny*/,
7962  11 /*toYearTiny*/,
7963  4 /*inMonth*/,
7964  0 /*onDayOfWeek*/,
7965  1 /*onDayOfMonth*/,
7966  8 /*atTimeCode*/,
7967  'w' /*atTimeModifier*/,
7968  4 /*deltaCode*/,
7969  'D' /*letter*/,
7970  },
7971  // Rule Zion 2011 only - Oct 2 2:00 0 S
7972  {
7973  11 /*fromYearTiny*/,
7974  11 /*toYearTiny*/,
7975  10 /*inMonth*/,
7976  0 /*onDayOfWeek*/,
7977  2 /*onDayOfMonth*/,
7978  8 /*atTimeCode*/,
7979  'w' /*atTimeModifier*/,
7980  0 /*deltaCode*/,
7981  'S' /*letter*/,
7982  },
7983  // Rule Zion 2012 only - Mar Fri>=26 2:00 1:00 D
7984  {
7985  12 /*fromYearTiny*/,
7986  12 /*toYearTiny*/,
7987  3 /*inMonth*/,
7988  5 /*onDayOfWeek*/,
7989  26 /*onDayOfMonth*/,
7990  8 /*atTimeCode*/,
7991  'w' /*atTimeModifier*/,
7992  4 /*deltaCode*/,
7993  'D' /*letter*/,
7994  },
7995  // Rule Zion 2012 only - Sep 23 2:00 0 S
7996  {
7997  12 /*fromYearTiny*/,
7998  12 /*toYearTiny*/,
7999  9 /*inMonth*/,
8000  0 /*onDayOfWeek*/,
8001  23 /*onDayOfMonth*/,
8002  8 /*atTimeCode*/,
8003  'w' /*atTimeModifier*/,
8004  0 /*deltaCode*/,
8005  'S' /*letter*/,
8006  },
8007  // Rule Zion 2013 max - Mar Fri>=23 2:00 1:00 D
8008  {
8009  13 /*fromYearTiny*/,
8010  126 /*toYearTiny*/,
8011  3 /*inMonth*/,
8012  5 /*onDayOfWeek*/,
8013  23 /*onDayOfMonth*/,
8014  8 /*atTimeCode*/,
8015  'w' /*atTimeModifier*/,
8016  4 /*deltaCode*/,
8017  'D' /*letter*/,
8018  },
8019  // Rule Zion 2013 max - Oct lastSun 2:00 0 S
8020  {
8021  13 /*fromYearTiny*/,
8022  126 /*toYearTiny*/,
8023  10 /*inMonth*/,
8024  7 /*onDayOfWeek*/,
8025  0 /*onDayOfMonth*/,
8026  8 /*atTimeCode*/,
8027  'w' /*atTimeModifier*/,
8028  0 /*deltaCode*/,
8029  'S' /*letter*/,
8030  },
8031 
8032 };
8033 
8034 
8035 
8036 const extended::ZonePolicy kPolicyZion ACE_TIME_PROGMEM = {
8037  27 /*numRules*/,
8038  kZoneRulesZion /*rules*/,
8039  0 /* numLetters */,
8040  nullptr /* letters */,
8041 };
8042 
8043 
8044 
8045 }
8046 }