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