aurora-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From kevi...@apache.org
Subject git commit: Cron predictor conformance test.
Date Sat, 15 Feb 2014 00:21:53 GMT
Repository: incubator-aurora
Updated Branches:
  refs/heads/master 8c81e5104 -> 6aa025de6


Cron predictor conformance test.

Quartz doesn't support "standard" cron syntax (as described in
crontab(5)[1]) and deviates [2] in a lot of ways that would lock us into
it. Some of the ways it varies include:
  * '00' is not a valid minute
  * day-of-week is 1-indexed instead of 0-indexed
  * it supports a seconds field, which is an unrealistic constraint for aurora to deliver
  * the common "* * * * *" pattern is invalid

Rather than adopt Quartz's syntax I propose introducing a translation
layer that will allow users to write in the more familiar crontab
syntax. This change adds test data that can be used as a conformance
test - a valid CronPredictor implementation must both accept the same
syntax and make the same predictions as those referenced here. In a
future review I will introduce a Quartz cron subsystem that passes this
test.

[1] http://unixhelp.ed.ac.uk/CGI/man-cgi?crontab+5
[2] http://quartz-scheduler.org/documentation/quartz-2.2.x/tutorials/tutorial-lesson-06

Testing Done:
./gradlew build

Bugs closed: AURORA-132

Reviewed at https://reviews.apache.org/r/18149/


Project: http://git-wip-us.apache.org/repos/asf/incubator-aurora/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-aurora/commit/6aa025de
Tree: http://git-wip-us.apache.org/repos/asf/incubator-aurora/tree/6aa025de
Diff: http://git-wip-us.apache.org/repos/asf/incubator-aurora/diff/6aa025de

Branch: refs/heads/master
Commit: 6aa025de69815493cab95e75d1c2b1e59b771f2c
Parents: 8c81e51
Author: Kevin Sweeney <kevints@apache.org>
Authored: Fri Feb 14 16:19:07 2014 -0800
Committer: Kevin Sweeney <kevints@apache.org>
Committed: Fri Feb 14 16:19:07 2014 -0800

----------------------------------------------------------------------
 .../scheduler/cron/testing/AbstractCronIT.java  |   98 +-
 .../cron/testing/cron-schedule-predictions.json | 3332 ++++++++++++++++++
 2 files changed, 3403 insertions(+), 27 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-aurora/blob/6aa025de/src/main/java/org/apache/aurora/scheduler/cron/testing/AbstractCronIT.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/aurora/scheduler/cron/testing/AbstractCronIT.java b/src/main/java/org/apache/aurora/scheduler/cron/testing/AbstractCronIT.java
index d8c4022..61b01d2 100644
--- a/src/main/java/org/apache/aurora/scheduler/cron/testing/AbstractCronIT.java
+++ b/src/main/java/org/apache/aurora/scheduler/cron/testing/AbstractCronIT.java
@@ -15,50 +15,50 @@
  */
 package org.apache.aurora.scheduler.cron.testing;
 
-import java.util.Collection;
+import java.io.InputStreamReader;
+import java.util.Date;
+import java.util.List;
 import java.util.concurrent.CountDownLatch;
 
-import com.twitter.common.testing.easymock.EasyMockTest;
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.Lists;
+import com.google.gson.Gson;
+import com.google.gson.reflect.TypeToken;
+import com.twitter.common.util.Clock;
+import com.twitter.common.util.testing.FakeClock;
 
 import org.apache.aurora.scheduler.cron.CronPredictor;
 import org.apache.aurora.scheduler.cron.CronScheduler;
 import org.junit.Test;
 
+import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 
 /**
  * Abstract test to verify conformance with the {@link CronScheduler} interface.
  */
-public abstract class AbstractCronIT extends EasyMockTest {
+public abstract class AbstractCronIT {
+  private static final String WILDCARD_SCHEDULE = "* * * * *";
+
   /**
    * Child should return an instance of the {@link CronScheduler} test under test here.
    */
   protected abstract CronScheduler makeCronScheduler() throws Exception;
 
   /**
-   * Child should return cron expressions that are expected to pass validation.
-   */
-  protected abstract Collection<String> getValidCronSchedules();
-
-  /**
-   * Child should return a "wildcard" cron expression that executes at every possible moment.
-   */
-  protected abstract String getWildcardCronSchedule();
-
-  /**
    * Child should return an instance of the {@link CronPredictor} under test here.
+   *
+   * @param clock The clock the predictor should use.
    */
-  protected abstract CronPredictor makeCronPredictor() throws Exception;
+  protected abstract CronPredictor makeCronPredictor(Clock clock) throws Exception;
 
   @Test
   public void testCronSchedulerLifecycle() throws Exception {
     CronScheduler scheduler = makeCronScheduler();
 
-    control.replay();
-
     scheduler.startAsync().awaitRunning();
     final CountDownLatch cronRan = new CountDownLatch(1);
-    scheduler.schedule(getWildcardCronSchedule(), new Runnable() {
+    scheduler.schedule(WILDCARD_SCHEDULE, new Runnable() {
       @Override public void run() {
         cronRan.countDown();
       }
@@ -68,12 +68,25 @@ public abstract class AbstractCronIT extends EasyMockTest {
   }
 
   @Test
-  public void testCronPredictorAcceptsValidSchedules() throws Exception {
-    control.replay();
-
-    CronPredictor cronPredictor = makeCronPredictor();
-    for (String schedule : getValidCronSchedules()) {
-      cronPredictor.predictNextRun(schedule);
+  public void testCronPredictorConforms() throws Exception {
+    FakeClock clock = new FakeClock();
+    CronPredictor cronPredictor = makeCronPredictor(clock);
+
+    for (TriggerPrediction triggerPrediction : getExpectedTriggerPredictions()) {
+      List<Long> results = Lists.newArrayList();
+      clock.setNowMillis(0);
+      for (int i = 0; i < triggerPrediction.getTriggerTimes().size(); i++) {
+        Date nextTriggerTime = cronPredictor.predictNextRun(triggerPrediction.getSchedule());
+        results.add(nextTriggerTime.getTime());
+        clock.setNowMillis(nextTriggerTime.getTime());
+      }
+      assertEquals("Cron schedule "
+          + triggerPrediction.getSchedule()
+          + " should have have predicted trigger times "
+          + triggerPrediction.getTriggerTimes()
+          + " but predicted "
+          + results
+          + " instead.", triggerPrediction.getTriggerTimes(), results);
     }
   }
 
@@ -81,11 +94,42 @@ public abstract class AbstractCronIT extends EasyMockTest {
   public void testCronScheduleValidatorAcceptsValidSchedules() throws Exception {
     CronScheduler cron = makeCronScheduler();
 
-    control.replay();
+    for (TriggerPrediction triggerPrediction : getExpectedTriggerPredictions()) {
+      assertTrue("Cron schedule " + triggerPrediction.getSchedule() + " should pass validation.",
+          cron.isValidSchedule(triggerPrediction.getSchedule()));
+    }
+  }
+
+  private static List<TriggerPrediction> getExpectedTriggerPredictions() {
+    return new Gson()
+        .fromJson(
+            new InputStreamReader(
+                AbstractCronIT.class.getResourceAsStream("cron-schedule-predictions.json")),
+            new TypeToken<List<TriggerPrediction>>() { }.getType());
+  }
+
+  /**
+   * A schedule and the expected iteratively-applied prediction results.
+   */
+  public static class TriggerPrediction {
+    private String schedule;
+    private List<Long> triggerTimes;
+
+    private TriggerPrediction() {
+      // GSON constructor.
+    }
+
+    public TriggerPrediction(String schedule, List<Long> triggerTimes) {
+      this.schedule = schedule;
+      this.triggerTimes = triggerTimes;
+    }
+
+    public String getSchedule() {
+      return schedule;
+    }
 
-    for (String schedule : getValidCronSchedules()) {
-      assertTrue(String.format("Cron schedule %s should validate.", schedule),
-          cron.isValidSchedule(schedule));
+    public List<Long> getTriggerTimes() {
+      return ImmutableList.copyOf(triggerTimes);
     }
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-aurora/blob/6aa025de/src/main/resources/org/apache/aurora/scheduler/cron/testing/cron-schedule-predictions.json
----------------------------------------------------------------------
diff --git a/src/main/resources/org/apache/aurora/scheduler/cron/testing/cron-schedule-predictions.json b/src/main/resources/org/apache/aurora/scheduler/cron/testing/cron-schedule-predictions.json
new file mode 100644
index 0000000..d4feb1b
--- /dev/null
+++ b/src/main/resources/org/apache/aurora/scheduler/cron/testing/cron-schedule-predictions.json
@@ -0,0 +1,3332 @@
+[
+    {
+        "schedule": "0 20 * * 1",
+        "triggerTimes": [
+            446400000,
+            1051200000,
+            1656000000,
+            2260800000,
+            2865600000,
+            3470400000,
+            4075200000,
+            4680000000,
+            5284800000,
+            5889600000
+        ]
+    },
+    {
+        "schedule": "11    *   *   *   *",
+        "triggerTimes": [
+            660000,
+            4260000,
+            7860000,
+            11460000,
+            15060000,
+            18660000,
+            22260000,
+            25860000,
+            29460000,
+            33060000
+        ]
+    },
+    {
+        "schedule": "04 02 * * *",
+        "triggerTimes": [
+            36240000,
+            122640000,
+            209040000,
+            295440000,
+            381840000,
+            468240000,
+            554640000,
+            641040000,
+            727440000,
+            813840000
+        ]
+    },
+    {
+        "schedule": "09 22 * * *",
+        "triggerTimes": [
+            22140000,
+            108540000,
+            194940000,
+            281340000,
+            367740000,
+            454140000,
+            540540000,
+            626940000,
+            713340000,
+            799740000
+        ]
+    },
+    {
+        "schedule": "1-56/5 * * * *",
+        "triggerTimes": [
+            60000,
+            360000,
+            660000,
+            960000,
+            1260000,
+            1560000,
+            1860000,
+            2160000,
+            2460000,
+            2760000
+        ]
+    },
+    {
+        "schedule": "05 02,08,12 * * *",
+        "triggerTimes": [
+            36300000,
+            57900000,
+            72300000,
+            122700000,
+            144300000,
+            158700000,
+            209100000,
+            230700000,
+            245100000,
+            295500000
+        ]
+    },
+    {
+        "schedule": "26 * * * *",
+        "triggerTimes": [
+            1560000,
+            5160000,
+            8760000,
+            12360000,
+            15960000,
+            19560000,
+            23160000,
+            26760000,
+            30360000,
+            33960000
+        ]
+    },
+    {
+        "schedule": "3,43 * * * *",
+        "triggerTimes": [
+            180000,
+            2580000,
+            3780000,
+            6180000,
+            7380000,
+            9780000,
+            10980000,
+            13380000,
+            14580000,
+            16980000
+        ]
+    },
+    {
+        "schedule": "0 17-23 * * 1-5",
+        "triggerTimes": [
+            3600000,
+            7200000,
+            10800000,
+            14400000,
+            18000000,
+            21600000,
+            25200000,
+            90000000,
+            93600000,
+            97200000
+        ]
+    },
+    {
+        "schedule": "0 0,12 * * *",
+        "triggerTimes": [
+            28800000,
+            72000000,
+            115200000,
+            158400000,
+            201600000,
+            244800000,
+            288000000,
+            331200000,
+            374400000,
+            417600000
+        ]
+    },
+    {
+        "schedule": "10 02,08,12 * * *",
+        "triggerTimes": [
+            36600000,
+            58200000,
+            72600000,
+            123000000,
+            144600000,
+            159000000,
+            209400000,
+            231000000,
+            245400000,
+            295800000
+        ]
+    },
+    {
+        "schedule": "50 */4 * * *",
+        "triggerTimes": [
+            3000000,
+            17400000,
+            31800000,
+            46200000,
+            60600000,
+            75000000,
+            89400000,
+            103800000,
+            118200000,
+            132600000
+        ]
+    },
+    {
+        "schedule": "10 02,08,14,20 * * *",
+        "triggerTimes": [
+            15000000,
+            36600000,
+            58200000,
+            79800000,
+            101400000,
+            123000000,
+            144600000,
+            166200000,
+            187800000,
+            209400000
+        ]
+    },
+    {
+        "schedule": "0 */6 * * *",
+        "triggerTimes": [
+            7200000,
+            28800000,
+            50400000,
+            72000000,
+            93600000,
+            115200000,
+            136800000,
+            158400000,
+            180000000,
+            201600000
+        ]
+    },
+    {
+        "schedule": "* * * * *",
+        "triggerTimes": [
+            60000,
+            120000,
+            180000,
+            240000,
+            300000,
+            360000,
+            420000,
+            480000,
+            540000,
+            600000
+        ]
+    },
+    {
+        "schedule": "30 15 * * *,",
+        "triggerTimes": [
+            84600000,
+            171000000,
+            257400000,
+            343800000,
+            430200000,
+            516600000,
+            603000000,
+            689400000,
+            775800000,
+            862200000
+        ]
+    },
+    {
+        "schedule": "00 11 * * *",
+        "triggerTimes": [
+            68400000,
+            154800000,
+            241200000,
+            327600000,
+            414000000,
+            500400000,
+            586800000,
+            673200000,
+            759600000,
+            846000000
+        ]
+    },
+    {
+        "schedule": "55 06 * * *",
+        "triggerTimes": [
+            53700000,
+            140100000,
+            226500000,
+            312900000,
+            399300000,
+            485700000,
+            572100000,
+            658500000,
+            744900000,
+            831300000
+        ]
+    },
+    {
+        "schedule": "0 4 * * *",
+        "triggerTimes": [
+            43200000,
+            129600000,
+            216000000,
+            302400000,
+            388800000,
+            475200000,
+            561600000,
+            648000000,
+            734400000,
+            820800000
+        ]
+    },
+    {
+        "schedule": "55 */1 * * *",
+        "triggerTimes": [
+            3300000,
+            6900000,
+            10500000,
+            14100000,
+            17700000,
+            21300000,
+            24900000,
+            28500000,
+            32100000,
+            35700000
+        ]
+    },
+    {
+        "schedule": "15 */3 * * *",
+        "triggerTimes": [
+            8100000,
+            18900000,
+            29700000,
+            40500000,
+            51300000,
+            62100000,
+            72900000,
+            83700000,
+            94500000,
+            105300000
+        ]
+    },
+    {
+        "schedule": "42 8,12,16 * * *",
+        "triggerTimes": [
+            2520000,
+            60120000,
+            74520000,
+            88920000,
+            146520000,
+            160920000,
+            175320000,
+            232920000,
+            247320000,
+            261720000
+        ]
+    },
+    {
+        "schedule": "23 * * * *",
+        "triggerTimes": [
+            1380000,
+            4980000,
+            8580000,
+            12180000,
+            15780000,
+            19380000,
+            22980000,
+            26580000,
+            30180000,
+            33780000
+        ]
+    },
+    {
+        "schedule": "10 16 * * *",
+        "triggerTimes": [
+            600000,
+            87000000,
+            173400000,
+            259800000,
+            346200000,
+            432600000,
+            519000000,
+            605400000,
+            691800000,
+            778200000
+        ]
+    },
+    {
+        "schedule": "*/30 * * * *",
+        "triggerTimes": [
+            1800000,
+            3600000,
+            5400000,
+            7200000,
+            9000000,
+            10800000,
+            12600000,
+            14400000,
+            16200000,
+            18000000
+        ]
+    },
+    {
+        "schedule": "20 */3 * * *",
+        "triggerTimes": [
+            8400000,
+            19200000,
+            30000000,
+            40800000,
+            51600000,
+            62400000,
+            73200000,
+            84000000,
+            94800000,
+            105600000
+        ]
+    },
+    {
+        "schedule": "8 6,12,18 * * *",
+        "triggerTimes": [
+            7680000,
+            50880000,
+            72480000,
+            94080000,
+            137280000,
+            158880000,
+            180480000,
+            223680000,
+            245280000,
+            266880000
+        ]
+    },
+    {
+        "schedule": "30 7,12,22 * * *",
+        "triggerTimes": [
+            23400000,
+            55800000,
+            73800000,
+            109800000,
+            142200000,
+            160200000,
+            196200000,
+            228600000,
+            246600000,
+            282600000
+        ]
+    },
+    {
+        "schedule": "0 0 12 * *",
+        "triggerTimes": [
+            979200000,
+            3657600000,
+            6076800000,
+            8755200000,
+            11343600000,
+            14022000000,
+            16614000000,
+            19292400000,
+            21970800000,
+            24562800000
+        ]
+    },
+    {
+        "schedule": "17 5,8,13,16,19 * * *",
+        "triggerTimes": [
+            1020000,
+            11820000,
+            47820000,
+            58620000,
+            76620000,
+            87420000,
+            98220000,
+            134220000,
+            145020000,
+            163020000
+        ]
+    },
+    {
+        "schedule": "27 8,20 * * *",
+        "triggerTimes": [
+            16020000,
+            59220000,
+            102420000,
+            145620000,
+            188820000,
+            232020000,
+            275220000,
+            318420000,
+            361620000,
+            404820000
+        ]
+    },
+    {
+        "schedule": "15 */6 * * *",
+        "triggerTimes": [
+            8100000,
+            29700000,
+            51300000,
+            72900000,
+            94500000,
+            116100000,
+            137700000,
+            159300000,
+            180900000,
+            202500000
+        ]
+    },
+    {
+        "schedule": "01 15 * * *",
+        "triggerTimes": [
+            82860000,
+            169260000,
+            255660000,
+            342060000,
+            428460000,
+            514860000,
+            601260000,
+            687660000,
+            774060000,
+            860460000
+        ]
+    },
+    {
+        "schedule": "0 18 * * *",
+        "triggerTimes": [
+            7200000,
+            93600000,
+            180000000,
+            266400000,
+            352800000,
+            439200000,
+            525600000,
+            612000000,
+            698400000,
+            784800000
+        ]
+    },
+    {
+        "schedule": "24 * * * *",
+        "triggerTimes": [
+            1440000,
+            5040000,
+            8640000,
+            12240000,
+            15840000,
+            19440000,
+            23040000,
+            26640000,
+            30240000,
+            33840000
+        ]
+    },
+    {
+        "schedule": "18 00 * * *",
+        "triggerTimes": [
+            29880000,
+            116280000,
+            202680000,
+            289080000,
+            375480000,
+            461880000,
+            548280000,
+            634680000,
+            721080000,
+            807480000
+        ]
+    },
+    {
+        "schedule": "0 16 * * *",
+        "triggerTimes": [
+            86400000,
+            172800000,
+            259200000,
+            345600000,
+            432000000,
+            518400000,
+            604800000,
+            691200000,
+            777600000,
+            864000000
+        ]
+    },
+    {
+        "schedule": "45 5 * * *",
+        "triggerTimes": [
+            49500000,
+            135900000,
+            222300000,
+            308700000,
+            395100000,
+            481500000,
+            567900000,
+            654300000,
+            740700000,
+            827100000
+        ]
+    },
+    {
+        "schedule": "0 18 * * 4",
+        "triggerTimes": [
+            93600000,
+            698400000,
+            1303200000,
+            1908000000,
+            2512800000,
+            3117600000,
+            3722400000,
+            4327200000,
+            4932000000,
+            5536800000
+        ]
+    },
+    {
+        "schedule": "30 19 * * *",
+        "triggerTimes": [
+            12600000,
+            99000000,
+            185400000,
+            271800000,
+            358200000,
+            444600000,
+            531000000,
+            617400000,
+            703800000,
+            790200000
+        ]
+    },
+    {
+        "schedule": "0 13 * * 2",
+        "triggerTimes": [
+            507600000,
+            1112400000,
+            1717200000,
+            2322000000,
+            2926800000,
+            3531600000,
+            4136400000,
+            4741200000,
+            5346000000,
+            5950800000
+        ]
+    },
+    {
+        "schedule": "25 17,20,21,23 * * *",
+        "triggerTimes": [
+            5100000,
+            15900000,
+            19500000,
+            26700000,
+            91500000,
+            102300000,
+            105900000,
+            113100000,
+            177900000,
+            188700000
+        ]
+    },
+    {
+        "schedule": "0 13 * * 3",
+        "triggerTimes": [
+            594000000,
+            1198800000,
+            1803600000,
+            2408400000,
+            3013200000,
+            3618000000,
+            4222800000,
+            4827600000,
+            5432400000,
+            6037200000
+        ]
+    },
+    {
+        "schedule": "58 */2 * * *",
+        "triggerTimes": [
+            3480000,
+            10680000,
+            17880000,
+            25080000,
+            32280000,
+            39480000,
+            46680000,
+            53880000,
+            61080000,
+            68280000
+        ]
+    },
+    {
+        "schedule": "0 9 4,18 * *",
+        "triggerTimes": [
+            320400000,
+            1530000000,
+            2998800000,
+            4208400000,
+            5418000000,
+            6627600000,
+            8096400000,
+            9306000000,
+            10684800000,
+            11894400000
+        ]
+    },
+    {
+        "schedule": "37    */6 *   *   *",
+        "triggerTimes": [
+            9420000,
+            31020000,
+            52620000,
+            74220000,
+            95820000,
+            117420000,
+            139020000,
+            160620000,
+            182220000,
+            203820000
+        ]
+    },
+    {
+        "schedule": "00 14 * * *",
+        "triggerTimes": [
+            79200000,
+            165600000,
+            252000000,
+            338400000,
+            424800000,
+            511200000,
+            597600000,
+            684000000,
+            770400000,
+            856800000
+        ]
+    },
+    {
+        "schedule": "0 * * * *",
+        "triggerTimes": [
+            3600000,
+            7200000,
+            10800000,
+            14400000,
+            18000000,
+            21600000,
+            25200000,
+            28800000,
+            32400000,
+            36000000
+        ]
+    },
+    {
+        "schedule": "29 9,16,22 * * *",
+        "triggerTimes": [
+            1740000,
+            23340000,
+            62940000,
+            88140000,
+            109740000,
+            149340000,
+            174540000,
+            196140000,
+            235740000,
+            260940000
+        ]
+    },
+    {
+        "schedule": "37 3 * * *",
+        "triggerTimes": [
+            41820000,
+            128220000,
+            214620000,
+            301020000,
+            387420000,
+            473820000,
+            560220000,
+            646620000,
+            733020000,
+            819420000
+        ]
+    },
+    {
+        "schedule": "*/5 * * * *",
+        "triggerTimes": [
+            300000,
+            600000,
+            900000,
+            1200000,
+            1500000,
+            1800000,
+            2100000,
+            2400000,
+            2700000,
+            3000000
+        ]
+    },
+    {
+        "schedule": "7 */2 * * *",
+        "triggerTimes": [
+            420000,
+            7620000,
+            14820000,
+            22020000,
+            29220000,
+            36420000,
+            43620000,
+            50820000,
+            58020000,
+            65220000
+        ]
+    },
+    {
+        "schedule": "55 07 * * *",
+        "triggerTimes": [
+            57300000,
+            143700000,
+            230100000,
+            316500000,
+            402900000,
+            489300000,
+            575700000,
+            662100000,
+            748500000,
+            834900000
+        ]
+    },
+    {
+        "schedule": "0 19 * * *",
+        "triggerTimes": [
+            10800000,
+            97200000,
+            183600000,
+            270000000,
+            356400000,
+            442800000,
+            529200000,
+            615600000,
+            702000000,
+            788400000
+        ]
+    },
+    {
+        "schedule": "15 */2 * * *",
+        "triggerTimes": [
+            900000,
+            8100000,
+            15300000,
+            22500000,
+            29700000,
+            36900000,
+            44100000,
+            51300000,
+            58500000,
+            65700000
+        ]
+    },
+    {
+        "schedule": "17 00 * * *",
+        "triggerTimes": [
+            29820000,
+            116220000,
+            202620000,
+            289020000,
+            375420000,
+            461820000,
+            548220000,
+            634620000,
+            721020000,
+            807420000
+        ]
+    },
+    {
+        "schedule": "0 0 * * 1",
+        "triggerTimes": [
+            374400000,
+            979200000,
+            1584000000,
+            2188800000,
+            2793600000,
+            3398400000,
+            4003200000,
+            4608000000,
+            5212800000,
+            5817600000
+        ]
+    },
+    {
+        "schedule": "29 */4 * * *",
+        "triggerTimes": [
+            1740000,
+            16140000,
+            30540000,
+            44940000,
+            59340000,
+            73740000,
+            88140000,
+            102540000,
+            116940000,
+            131340000
+        ]
+    },
+    {
+        "schedule": "0 23 * * *",
+        "triggerTimes": [
+            25200000,
+            111600000,
+            198000000,
+            284400000,
+            370800000,
+            457200000,
+            543600000,
+            630000000,
+            716400000,
+            802800000
+        ]
+    },
+    {
+        "schedule": "0 7 * * *",
+        "triggerTimes": [
+            54000000,
+            140400000,
+            226800000,
+            313200000,
+            399600000,
+            486000000,
+            572400000,
+            658800000,
+            745200000,
+            831600000
+        ]
+    },
+    {
+        "schedule": "12 * * * *",
+        "triggerTimes": [
+            720000,
+            4320000,
+            7920000,
+            11520000,
+            15120000,
+            18720000,
+            22320000,
+            25920000,
+            29520000,
+            33120000
+        ]
+    },
+    {
+        "schedule": "0 23 * * 3",
+        "triggerTimes": [
+            25200000,
+            630000000,
+            1234800000,
+            1839600000,
+            2444400000,
+            3049200000,
+            3654000000,
+            4258800000,
+            4863600000,
+            5468400000
+        ]
+    },
+    {
+        "schedule": "23 */4 * * *",
+        "triggerTimes": [
+            1380000,
+            15780000,
+            30180000,
+            44580000,
+            58980000,
+            73380000,
+            87780000,
+            102180000,
+            116580000,
+            130980000
+        ]
+    },
+    {
+        "schedule": "30 1-23/2 * * *",
+        "triggerTimes": [
+            5400000,
+            12600000,
+            19800000,
+            27000000,
+            34200000,
+            41400000,
+            48600000,
+            55800000,
+            63000000,
+            70200000
+        ]
+    },
+    {
+        "schedule": "5,15,25,35,45,55 * * * *",
+        "triggerTimes": [
+            300000,
+            900000,
+            1500000,
+            2100000,
+            2700000,
+            3300000,
+            3900000,
+            4500000,
+            5100000,
+            5700000
+        ]
+    },
+    {
+        "schedule": "23 1,11,21 * * *",
+        "triggerTimes": [
+            19380000,
+            33780000,
+            69780000,
+            105780000,
+            120180000,
+            156180000,
+            192180000,
+            206580000,
+            242580000,
+            278580000
+        ]
+    },
+    {
+        "schedule": "15 04,10,16,22 * * *",
+        "triggerTimes": [
+            900000,
+            22500000,
+            44100000,
+            65700000,
+            87300000,
+            108900000,
+            130500000,
+            152100000,
+            173700000,
+            195300000
+        ]
+    },
+    {
+        "schedule": "*/20  *   *   *   *",
+        "triggerTimes": [
+            1200000,
+            2400000,
+            3600000,
+            4800000,
+            6000000,
+            7200000,
+            8400000,
+            9600000,
+            10800000,
+            12000000
+        ]
+    },
+    {
+        "schedule": "12,42 * * * *",
+        "triggerTimes": [
+            720000,
+            2520000,
+            4320000,
+            6120000,
+            7920000,
+            9720000,
+            11520000,
+            13320000,
+            15120000,
+            16920000
+        ]
+    },
+    {
+        "schedule": "26 2,6,10,14,18,22 * * *",
+        "triggerTimes": [
+            8760000,
+            23160000,
+            37560000,
+            51960000,
+            66360000,
+            80760000,
+            95160000,
+            109560000,
+            123960000,
+            138360000
+        ]
+    },
+    {
+        "schedule": "0 3,6,9,12,15,18,21 * * *",
+        "triggerTimes": [
+            7200000,
+            18000000,
+            39600000,
+            50400000,
+            61200000,
+            72000000,
+            82800000,
+            93600000,
+            104400000,
+            126000000
+        ]
+    },
+    {
+        "schedule": "25 14 * * *",
+        "triggerTimes": [
+            80700000,
+            167100000,
+            253500000,
+            339900000,
+            426300000,
+            512700000,
+            599100000,
+            685500000,
+            771900000,
+            858300000
+        ]
+    },
+    {
+        "schedule": "0 5 * * *,",
+        "triggerTimes": [
+            46800000,
+            133200000,
+            219600000,
+            306000000,
+            392400000,
+            478800000,
+            565200000,
+            651600000,
+            738000000,
+            824400000
+        ]
+    },
+    {
+        "schedule": "43 * * * *",
+        "triggerTimes": [
+            2580000,
+            6180000,
+            9780000,
+            13380000,
+            16980000,
+            20580000,
+            24180000,
+            27780000,
+            31380000,
+            34980000
+        ]
+    },
+    {
+        "schedule": "39 6,12,16 * * *",
+        "triggerTimes": [
+            2340000,
+            52740000,
+            74340000,
+            88740000,
+            139140000,
+            160740000,
+            175140000,
+            225540000,
+            247140000,
+            261540000
+        ]
+    },
+    {
+        "schedule": "0 9 1 * *",
+        "triggerTimes": [
+            61200000,
+            2739600000,
+            5158800000,
+            7837200000,
+            10425600000,
+            13104000000,
+            15696000000,
+            18374400000,
+            21052800000,
+            23644800000
+        ]
+    },
+    {
+        "schedule": "14-59/30 * * * *",
+        "triggerTimes": [
+            840000,
+            2640000,
+            4440000,
+            6240000,
+            8040000,
+            9840000,
+            11640000,
+            13440000,
+            15240000,
+            17040000
+        ]
+    },
+    {
+        "schedule": "0 0 * * *",
+        "triggerTimes": [
+            28800000,
+            115200000,
+            201600000,
+            288000000,
+            374400000,
+            460800000,
+            547200000,
+            633600000,
+            720000000,
+            806400000
+        ]
+    },
+    {
+        "schedule": "0 */3 * * *",
+        "triggerTimes": [
+            7200000,
+            18000000,
+            28800000,
+            39600000,
+            50400000,
+            61200000,
+            72000000,
+            82800000,
+            93600000,
+            104400000
+        ]
+    },
+    {
+        "schedule": "16 5,13,21 * * *",
+        "triggerTimes": [
+            18960000,
+            47760000,
+            76560000,
+            105360000,
+            134160000,
+            162960000,
+            191760000,
+            220560000,
+            249360000,
+            278160000
+        ]
+    },
+    {
+        "schedule": "30 18,23 * * MON-FRI",
+        "triggerTimes": [
+            9000000,
+            27000000,
+            95400000,
+            113400000,
+            181800000,
+            199800000,
+            441000000,
+            459000000,
+            527400000,
+            545400000
+        ]
+    },
+    {
+        "schedule": "0,15,30,45 * * * *",
+        "triggerTimes": [
+            900000,
+            1800000,
+            2700000,
+            3600000,
+            4500000,
+            5400000,
+            6300000,
+            7200000,
+            8100000,
+            9000000
+        ]
+    },
+    {
+        "schedule": "42 8,20 * * *",
+        "triggerTimes": [
+            16920000,
+            60120000,
+            103320000,
+            146520000,
+            189720000,
+            232920000,
+            276120000,
+            319320000,
+            362520000,
+            405720000
+        ]
+    },
+    {
+        "schedule": "46 */6 * * *",
+        "triggerTimes": [
+            9960000,
+            31560000,
+            53160000,
+            74760000,
+            96360000,
+            117960000,
+            139560000,
+            161160000,
+            182760000,
+            204360000
+        ]
+    },
+    {
+        "schedule": "0 3 * * *",
+        "triggerTimes": [
+            39600000,
+            126000000,
+            212400000,
+            298800000,
+            385200000,
+            471600000,
+            558000000,
+            644400000,
+            730800000,
+            817200000
+        ]
+    },
+    {
+        "schedule": "16 9,16 * * *",
+        "triggerTimes": [
+            960000,
+            62160000,
+            87360000,
+            148560000,
+            173760000,
+            234960000,
+            260160000,
+            321360000,
+            346560000,
+            407760000
+        ]
+    },
+    {
+        "schedule": "15 0 * * *",
+        "triggerTimes": [
+            29700000,
+            116100000,
+            202500000,
+            288900000,
+            375300000,
+            461700000,
+            548100000,
+            634500000,
+            720900000,
+            807300000
+        ]
+    },
+    {
+        "schedule": "05 * * * *",
+        "triggerTimes": [
+            300000,
+            3900000,
+            7500000,
+            11100000,
+            14700000,
+            18300000,
+            21900000,
+            25500000,
+            29100000,
+            32700000
+        ]
+    },
+    {
+        "schedule": "30 * * * *",
+        "triggerTimes": [
+            1800000,
+            5400000,
+            9000000,
+            12600000,
+            16200000,
+            19800000,
+            23400000,
+            27000000,
+            30600000,
+            34200000
+        ]
+    },
+    {
+        "schedule": "0 2,14 * * *",
+        "triggerTimes": [
+            36000000,
+            79200000,
+            122400000,
+            165600000,
+            208800000,
+            252000000,
+            295200000,
+            338400000,
+            381600000,
+            424800000
+        ]
+    },
+    {
+        "schedule": "28 23 * * 3",
+        "triggerTimes": [
+            26880000,
+            631680000,
+            1236480000,
+            1841280000,
+            2446080000,
+            3050880000,
+            3655680000,
+            4260480000,
+            4865280000,
+            5470080000
+        ]
+    },
+    {
+        "schedule": "5 */4 * * *",
+        "triggerTimes": [
+            300000,
+            14700000,
+            29100000,
+            43500000,
+            57900000,
+            72300000,
+            86700000,
+            101100000,
+            115500000,
+            129900000
+        ]
+    },
+    {
+        "schedule": "0 18,22 * * MON-FRI",
+        "triggerTimes": [
+            7200000,
+            21600000,
+            93600000,
+            108000000,
+            180000000,
+            194400000,
+            439200000,
+            453600000,
+            525600000,
+            540000000
+        ]
+    },
+    {
+        "schedule": "01 21 * * *",
+        "triggerTimes": [
+            18060000,
+            104460000,
+            190860000,
+            277260000,
+            363660000,
+            450060000,
+            536460000,
+            622860000,
+            709260000,
+            795660000
+        ]
+    },
+    {
+        "schedule": "1 */6 * * *",
+        "triggerTimes": [
+            7260000,
+            28860000,
+            50460000,
+            72060000,
+            93660000,
+            115260000,
+            136860000,
+            158460000,
+            180060000,
+            201660000
+        ]
+    },
+    {
+        "schedule": "*/10 * * * *",
+        "triggerTimes": [
+            600000,
+            1200000,
+            1800000,
+            2400000,
+            3000000,
+            3600000,
+            4200000,
+            4800000,
+            5400000,
+            6000000
+        ]
+    },
+    {
+        "schedule": "44    */2 *   *   *",
+        "triggerTimes": [
+            2640000,
+            9840000,
+            17040000,
+            24240000,
+            31440000,
+            38640000,
+            45840000,
+            53040000,
+            60240000,
+            67440000
+        ]
+    },
+    {
+        "schedule": "30 2 * * *",
+        "triggerTimes": [
+            37800000,
+            124200000,
+            210600000,
+            297000000,
+            383400000,
+            469800000,
+            556200000,
+            642600000,
+            729000000,
+            815400000
+        ]
+    },
+    {
+        "schedule": "58 * * * *",
+        "triggerTimes": [
+            3480000,
+            7080000,
+            10680000,
+            14280000,
+            17880000,
+            21480000,
+            25080000,
+            28680000,
+            32280000,
+            35880000
+        ]
+    },
+    {
+        "schedule": "30 23 * * 6",
+        "triggerTimes": [
+            286200000,
+            891000000,
+            1495800000,
+            2100600000,
+            2705400000,
+            3310200000,
+            3915000000,
+            4519800000,
+            5124600000,
+            5729400000
+        ]
+    },
+    {
+        "schedule": "40 23 * * *",
+        "triggerTimes": [
+            27600000,
+            114000000,
+            200400000,
+            286800000,
+            373200000,
+            459600000,
+            546000000,
+            632400000,
+            718800000,
+            805200000
+        ]
+    },
+    {
+        "schedule": "0 5,10,15,20,1 * * *",
+        "triggerTimes": [
+            14400000,
+            32400000,
+            46800000,
+            64800000,
+            82800000,
+            100800000,
+            118800000,
+            133200000,
+            151200000,
+            169200000
+        ]
+    },
+    {
+        "schedule": "22 * * * *",
+        "triggerTimes": [
+            1320000,
+            4920000,
+            8520000,
+            12120000,
+            15720000,
+            19320000,
+            22920000,
+            26520000,
+            30120000,
+            33720000
+        ]
+    },
+    {
+        "schedule": "00 17 1-3,5-31 * *",
+        "triggerTimes": [
+            3600000,
+            90000000,
+            176400000,
+            262800000,
+            435600000,
+            522000000,
+            608400000,
+            694800000,
+            781200000,
+            867600000
+        ]
+    },
+    {
+        "schedule": "0 2 1 * *",
+        "triggerTimes": [
+            36000000,
+            2714400000,
+            5133600000,
+            7812000000,
+            10400400000,
+            13078800000,
+            15670800000,
+            18349200000,
+            21027600000,
+            23619600000
+        ]
+    },
+    {
+        "schedule": "20 20 * * *",
+        "triggerTimes": [
+            15600000,
+            102000000,
+            188400000,
+            274800000,
+            361200000,
+            447600000,
+            534000000,
+            620400000,
+            706800000,
+            793200000
+        ]
+    },
+    {
+        "schedule": "45 1 * * *",
+        "triggerTimes": [
+            35100000,
+            121500000,
+            207900000,
+            294300000,
+            380700000,
+            467100000,
+            553500000,
+            639900000,
+            726300000,
+            812700000
+        ]
+    },
+    {
+        "schedule": "3-59/5 * * * *",
+        "triggerTimes": [
+            180000,
+            480000,
+            780000,
+            1080000,
+            1380000,
+            1680000,
+            1980000,
+            2280000,
+            2580000,
+            2880000
+        ]
+    },
+    {
+        "schedule": "21    *   *   *   *",
+        "triggerTimes": [
+            1260000,
+            4860000,
+            8460000,
+            12060000,
+            15660000,
+            19260000,
+            22860000,
+            26460000,
+            30060000,
+            33660000
+        ]
+    },
+    {
+        "schedule": "37 */1 * * *",
+        "triggerTimes": [
+            2220000,
+            5820000,
+            9420000,
+            13020000,
+            16620000,
+            20220000,
+            23820000,
+            27420000,
+            31020000,
+            34620000
+        ]
+    },
+    {
+        "schedule": "12 3 * * 1,3,5",
+        "triggerTimes": [
+            126720000,
+            385920000,
+            558720000,
+            731520000,
+            990720000,
+            1163520000,
+            1336320000,
+            1595520000,
+            1768320000,
+            1941120000
+        ]
+    },
+    {
+        "schedule": "10 * * * *",
+        "triggerTimes": [
+            600000,
+            4200000,
+            7800000,
+            11400000,
+            15000000,
+            18600000,
+            22200000,
+            25800000,
+            29400000,
+            33000000
+        ]
+    },
+    {
+        "schedule": "*/4 * * * *",
+        "triggerTimes": [
+            240000,
+            480000,
+            720000,
+            960000,
+            1200000,
+            1440000,
+            1680000,
+            1920000,
+            2160000,
+            2400000
+        ]
+    },
+    {
+        "schedule": "36 * * * *",
+        "triggerTimes": [
+            2160000,
+            5760000,
+            9360000,
+            12960000,
+            16560000,
+            20160000,
+            23760000,
+            27360000,
+            30960000,
+            34560000
+        ]
+    },
+    {
+        "schedule": "10 7 * * *",
+        "triggerTimes": [
+            54600000,
+            141000000,
+            227400000,
+            313800000,
+            400200000,
+            486600000,
+            573000000,
+            659400000,
+            745800000,
+            832200000
+        ]
+    },
+    {
+        "schedule": "55 6 * * *",
+        "triggerTimes": [
+            53700000,
+            140100000,
+            226500000,
+            312900000,
+            399300000,
+            485700000,
+            572100000,
+            658500000,
+            744900000,
+            831300000
+        ]
+    },
+    {
+        "schedule": "0 */2 * * *",
+        "triggerTimes": [
+            7200000,
+            14400000,
+            21600000,
+            28800000,
+            36000000,
+            43200000,
+            50400000,
+            57600000,
+            64800000,
+            72000000
+        ]
+    },
+    {
+        "schedule": "0 5 * * *",
+        "triggerTimes": [
+            46800000,
+            133200000,
+            219600000,
+            306000000,
+            392400000,
+            478800000,
+            565200000,
+            651600000,
+            738000000,
+            824400000
+        ]
+    },
+    {
+        "schedule": "22 */4 * * *",
+        "triggerTimes": [
+            1320000,
+            15720000,
+            30120000,
+            44520000,
+            58920000,
+            73320000,
+            87720000,
+            102120000,
+            116520000,
+            130920000
+        ]
+    },
+    {
+        "schedule": "17 */2 * * *",
+        "triggerTimes": [
+            1020000,
+            8220000,
+            15420000,
+            22620000,
+            29820000,
+            37020000,
+            44220000,
+            51420000,
+            58620000,
+            65820000
+        ]
+    },
+    {
+        "schedule": "25    *   *   *   *",
+        "triggerTimes": [
+            1500000,
+            5100000,
+            8700000,
+            12300000,
+            15900000,
+            19500000,
+            23100000,
+            26700000,
+            30300000,
+            33900000
+        ]
+    },
+    {
+        "schedule": "*/6 * * * *",
+        "triggerTimes": [
+            360000,
+            720000,
+            1080000,
+            1440000,
+            1800000,
+            2160000,
+            2520000,
+            2880000,
+            3240000,
+            3600000
+        ]
+    },
+    {
+        "schedule": "5 * * * *",
+        "triggerTimes": [
+            300000,
+            3900000,
+            7500000,
+            11100000,
+            14700000,
+            18300000,
+            21900000,
+            25500000,
+            29100000,
+            32700000
+        ]
+    },
+    {
+        "schedule": "0 2 * * *",
+        "triggerTimes": [
+            36000000,
+            122400000,
+            208800000,
+            295200000,
+            381600000,
+            468000000,
+            554400000,
+            640800000,
+            727200000,
+            813600000
+        ]
+    },
+    {
+        "schedule": "0     *   *   *   *",
+        "triggerTimes": [
+            3600000,
+            7200000,
+            10800000,
+            14400000,
+            18000000,
+            21600000,
+            25200000,
+            28800000,
+            32400000,
+            36000000
+        ]
+    },
+    {
+        "schedule": "0 14 * * *,,",
+        "triggerTimes": [
+            79200000,
+            165600000,
+            252000000,
+            338400000,
+            424800000,
+            511200000,
+            597600000,
+            684000000,
+            770400000,
+            856800000
+        ]
+    },
+    {
+        "schedule": "30 02,08,12 * * *",
+        "triggerTimes": [
+            37800000,
+            59400000,
+            73800000,
+            124200000,
+            145800000,
+            160200000,
+            210600000,
+            232200000,
+            246600000,
+            297000000
+        ]
+    },
+    {
+        "schedule": "44 23 * * *",
+        "triggerTimes": [
+            27840000,
+            114240000,
+            200640000,
+            287040000,
+            373440000,
+            459840000,
+            546240000,
+            632640000,
+            719040000,
+            805440000
+        ]
+    },
+    {
+        "schedule": "0 */4 * * *",
+        "triggerTimes": [
+            14400000,
+            28800000,
+            43200000,
+            57600000,
+            72000000,
+            86400000,
+            100800000,
+            115200000,
+            129600000,
+            144000000
+        ]
+    },
+    {
+        "schedule": "0 12 * * *",
+        "triggerTimes": [
+            72000000,
+            158400000,
+            244800000,
+            331200000,
+            417600000,
+            504000000,
+            590400000,
+            676800000,
+            763200000,
+            849600000
+        ]
+    },
+    {
+        "schedule": "*/2   *   *   *   *",
+        "triggerTimes": [
+            120000,
+            240000,
+            360000,
+            480000,
+            600000,
+            720000,
+            840000,
+            960000,
+            1080000,
+            1200000
+        ]
+    },
+    {
+        "schedule": "22    1   *   *   *",
+        "triggerTimes": [
+            33720000,
+            120120000,
+            206520000,
+            292920000,
+            379320000,
+            465720000,
+            552120000,
+            638520000,
+            724920000,
+            811320000
+        ]
+    },
+    {
+        "schedule": "45 * * * *",
+        "triggerTimes": [
+            2700000,
+            6300000,
+            9900000,
+            13500000,
+            17100000,
+            20700000,
+            24300000,
+            27900000,
+            31500000,
+            35100000
+        ]
+    },
+    {
+        "schedule": "00 23 * * *",
+        "triggerTimes": [
+            25200000,
+            111600000,
+            198000000,
+            284400000,
+            370800000,
+            457200000,
+            543600000,
+            630000000,
+            716400000,
+            802800000
+        ]
+    },
+    {
+        "schedule": "3,6,9,12,18,21,24,27,33,36,39,42,48,51,54,57 * * * *",
+        "triggerTimes": [
+            180000,
+            360000,
+            540000,
+            720000,
+            1080000,
+            1260000,
+            1440000,
+            1620000,
+            1980000,
+            2160000
+        ]
+    },
+    {
+        "schedule": "32    1   *   *   *",
+        "triggerTimes": [
+            34320000,
+            120720000,
+            207120000,
+            293520000,
+            379920000,
+            466320000,
+            552720000,
+            639120000,
+            725520000,
+            811920000
+        ]
+    },
+    {
+        "schedule": "35 */2 * * *",
+        "triggerTimes": [
+            2100000,
+            9300000,
+            16500000,
+            23700000,
+            30900000,
+            38100000,
+            45300000,
+            52500000,
+            59700000,
+            66900000
+        ]
+    },
+    {
+        "schedule": "27    1   *   *   *",
+        "triggerTimes": [
+            34020000,
+            120420000,
+            206820000,
+            293220000,
+            379620000,
+            466020000,
+            552420000,
+            638820000,
+            725220000,
+            811620000
+        ]
+    },
+    {
+        "schedule": "0 21 * * 3",
+        "triggerTimes": [
+            18000000,
+            622800000,
+            1227600000,
+            1832400000,
+            2437200000,
+            3042000000,
+            3646800000,
+            4251600000,
+            4856400000,
+            5461200000
+        ]
+    },
+    {
+        "schedule": "55 03 * * *",
+        "triggerTimes": [
+            42900000,
+            129300000,
+            215700000,
+            302100000,
+            388500000,
+            474900000,
+            561300000,
+            647700000,
+            734100000,
+            820500000
+        ]
+    },
+    {
+        "schedule": "0 23 2-31 * *",
+        "triggerTimes": [
+            25200000,
+            198000000,
+            284400000,
+            370800000,
+            457200000,
+            543600000,
+            630000000,
+            716400000,
+            802800000,
+            889200000
+        ]
+    },
+    {
+        "schedule": "09 11 * * *",
+        "triggerTimes": [
+            68940000,
+            155340000,
+            241740000,
+            328140000,
+            414540000,
+            500940000,
+            587340000,
+            673740000,
+            760140000,
+            846540000
+        ]
+    },
+    {
+        "schedule": "0 14 * * *",
+        "triggerTimes": [
+            79200000,
+            165600000,
+            252000000,
+            338400000,
+            424800000,
+            511200000,
+            597600000,
+            684000000,
+            770400000,
+            856800000
+        ]
+    },
+    {
+        "schedule": "20 2,12,22 * * *",
+        "triggerTimes": [
+            22800000,
+            37200000,
+            73200000,
+            109200000,
+            123600000,
+            159600000,
+            195600000,
+            210000000,
+            246000000,
+            282000000
+        ]
+    },
+    {
+        "schedule": "2,6,10,14,18,22,26,30,34,38,42,46,50,54,58 * * * *",
+        "triggerTimes": [
+            120000,
+            360000,
+            600000,
+            840000,
+            1080000,
+            1320000,
+            1560000,
+            1800000,
+            2040000,
+            2280000
+        ]
+    },
+    {
+        "schedule": "1 16,18,20 * * *",
+        "triggerTimes": [
+            60000,
+            7260000,
+            14460000,
+            86460000,
+            93660000,
+            100860000,
+            172860000,
+            180060000,
+            187260000,
+            259260000
+        ]
+    },
+    {
+        "schedule": "30 */6 * * *",
+        "triggerTimes": [
+            9000000,
+            30600000,
+            52200000,
+            73800000,
+            95400000,
+            117000000,
+            138600000,
+            160200000,
+            181800000,
+            203400000
+        ]
+    },
+    {
+        "schedule": "00 06,15 * * *",
+        "triggerTimes": [
+            50400000,
+            82800000,
+            136800000,
+            169200000,
+            223200000,
+            255600000,
+            309600000,
+            342000000,
+            396000000,
+            428400000
+        ]
+    },
+    {
+        "schedule": "52 4,10,16,22 * * *",
+        "triggerTimes": [
+            3120000,
+            24720000,
+            46320000,
+            67920000,
+            89520000,
+            111120000,
+            132720000,
+            154320000,
+            175920000,
+            197520000
+        ]
+    },
+    {
+        "schedule": "37    1   *   *   *",
+        "triggerTimes": [
+            34620000,
+            121020000,
+            207420000,
+            293820000,
+            380220000,
+            466620000,
+            553020000,
+            639420000,
+            725820000,
+            812220000
+        ]
+    },
+    {
+        "schedule": "10 10,14 * * *",
+        "triggerTimes": [
+            65400000,
+            79800000,
+            151800000,
+            166200000,
+            238200000,
+            252600000,
+            324600000,
+            339000000,
+            411000000,
+            425400000
+        ]
+    },
+    {
+        "schedule": "2,7,12,17,22,27,32,37,42,47,52,57 * * * *",
+        "triggerTimes": [
+            120000,
+            420000,
+            720000,
+            1020000,
+            1320000,
+            1620000,
+            1920000,
+            2220000,
+            2520000,
+            2820000
+        ]
+    },
+    {
+        "schedule": "0 21 * * *",
+        "triggerTimes": [
+            18000000,
+            104400000,
+            190800000,
+            277200000,
+            363600000,
+            450000000,
+            536400000,
+            622800000,
+            709200000,
+            795600000
+        ]
+    },
+    {
+        "schedule": "25 * * * *",
+        "triggerTimes": [
+            1500000,
+            5100000,
+            8700000,
+            12300000,
+            15900000,
+            19500000,
+            23100000,
+            26700000,
+            30300000,
+            33900000
+        ]
+    },
+    {
+        "schedule": "0 15 * * *,,",
+        "triggerTimes": [
+            82800000,
+            169200000,
+            255600000,
+            342000000,
+            428400000,
+            514800000,
+            601200000,
+            687600000,
+            774000000,
+            860400000
+        ]
+    },
+    {
+        "schedule": "13 9,21 * * *",
+        "triggerTimes": [
+            18780000,
+            61980000,
+            105180000,
+            148380000,
+            191580000,
+            234780000,
+            277980000,
+            321180000,
+            364380000,
+            407580000
+        ]
+    },
+    {
+        "schedule": "10    *   *   *   *",
+        "triggerTimes": [
+            600000,
+            4200000,
+            7800000,
+            11400000,
+            15000000,
+            18600000,
+            22200000,
+            25800000,
+            29400000,
+            33000000
+        ]
+    },
+    {
+        "schedule": "12 18 * * 1,3,5",
+        "triggerTimes": [
+            7920000,
+            180720000,
+            439920000,
+            612720000,
+            785520000,
+            1044720000,
+            1217520000,
+            1390320000,
+            1649520000,
+            1822320000
+        ]
+    },
+    {
+        "schedule": "0 17-19 * * 1",
+        "triggerTimes": [
+            435600000,
+            439200000,
+            442800000,
+            1040400000,
+            1044000000,
+            1047600000,
+            1645200000,
+            1648800000,
+            1652400000,
+            2250000000
+        ]
+    },
+    {
+        "schedule": "0 10 * * *",
+        "triggerTimes": [
+            64800000,
+            151200000,
+            237600000,
+            324000000,
+            410400000,
+            496800000,
+            583200000,
+            669600000,
+            756000000,
+            842400000
+        ]
+    },
+    {
+        "schedule": "00 00 * * *",
+        "triggerTimes": [
+            28800000,
+            115200000,
+            201600000,
+            288000000,
+            374400000,
+            460800000,
+            547200000,
+            633600000,
+            720000000,
+            806400000
+        ]
+    },
+    {
+        "schedule": "25 16,17,18,22 * * *",
+        "triggerTimes": [
+            1500000,
+            5100000,
+            8700000,
+            23100000,
+            87900000,
+            91500000,
+            95100000,
+            109500000,
+            174300000,
+            177900000
+        ]
+    },
+    {
+        "schedule": "23 6,18 * * *",
+        "triggerTimes": [
+            8580000,
+            51780000,
+            94980000,
+            138180000,
+            181380000,
+            224580000,
+            267780000,
+            310980000,
+            354180000,
+            397380000
+        ]
+    },
+    {
+        "schedule": "17 1,9,17 * * 0",
+        "triggerTimes": [
+            292620000,
+            321420000,
+            350220000,
+            897420000,
+            926220000,
+            955020000,
+            1502220000,
+            1531020000,
+            1559820000,
+            2107020000
+        ]
+    },
+    {
+        "schedule": "00 16 * * *",
+        "triggerTimes": [
+            86400000,
+            172800000,
+            259200000,
+            345600000,
+            432000000,
+            518400000,
+            604800000,
+            691200000,
+            777600000,
+            864000000
+        ]
+    },
+    {
+        "schedule": "*/3 * * * *",
+        "triggerTimes": [
+            180000,
+            360000,
+            540000,
+            720000,
+            900000,
+            1080000,
+            1260000,
+            1440000,
+            1620000,
+            1800000
+        ]
+    },
+    {
+        "schedule": "19    *   *   *   *",
+        "triggerTimes": [
+            1140000,
+            4740000,
+            8340000,
+            11940000,
+            15540000,
+            19140000,
+            22740000,
+            26340000,
+            29940000,
+            33540000
+        ]
+    },
+    {
+        "schedule": "15 * * * *",
+        "triggerTimes": [
+            900000,
+            4500000,
+            8100000,
+            11700000,
+            15300000,
+            18900000,
+            22500000,
+            26100000,
+            29700000,
+            33300000
+        ]
+    },
+    {
+        "schedule": "*/15  *   *   *   *",
+        "triggerTimes": [
+            900000,
+            1800000,
+            2700000,
+            3600000,
+            4500000,
+            5400000,
+            6300000,
+            7200000,
+            8100000,
+            9000000
+        ]
+    },
+    {
+        "schedule": "0 22 * * 1",
+        "triggerTimes": [
+            453600000,
+            1058400000,
+            1663200000,
+            2268000000,
+            2872800000,
+            3477600000,
+            4082400000,
+            4687200000,
+            5292000000,
+            5896800000
+        ]
+    },
+    {
+        "schedule": "15    *   *   *   *",
+        "triggerTimes": [
+            900000,
+            4500000,
+            8100000,
+            11700000,
+            15300000,
+            18900000,
+            22500000,
+            26100000,
+            29700000,
+            33300000
+        ]
+    },
+    {
+        "schedule": "20 04 * * *",
+        "triggerTimes": [
+            44400000,
+            130800000,
+            217200000,
+            303600000,
+            390000000,
+            476400000,
+            562800000,
+            649200000,
+            735600000,
+            822000000
+        ]
+    },
+    {
+        "schedule": "30 0,12 * * *",
+        "triggerTimes": [
+            30600000,
+            73800000,
+            117000000,
+            160200000,
+            203400000,
+            246600000,
+            289800000,
+            333000000,
+            376200000,
+            419400000
+        ]
+    },
+    {
+        "schedule": "15 */4 * * *",
+        "triggerTimes": [
+            900000,
+            15300000,
+            29700000,
+            44100000,
+            58500000,
+            72900000,
+            87300000,
+            101700000,
+            116100000,
+            130500000
+        ]
+    },
+    {
+        "schedule": "29 16,17,18,22 * * *",
+        "triggerTimes": [
+            1740000,
+            5340000,
+            8940000,
+            23340000,
+            88140000,
+            91740000,
+            95340000,
+            109740000,
+            174540000,
+            178140000
+        ]
+    },
+    {
+        "schedule": "37 */3 * * *",
+        "triggerTimes": [
+            9420000,
+            20220000,
+            31020000,
+            41820000,
+            52620000,
+            63420000,
+            74220000,
+            85020000,
+            95820000,
+            106620000
+        ]
+    },
+    {
+        "schedule": "*/15 * * * *",
+        "triggerTimes": [
+            900000,
+            1800000,
+            2700000,
+            3600000,
+            4500000,
+            5400000,
+            6300000,
+            7200000,
+            8100000,
+            9000000
+        ]
+    },
+    {
+        "schedule": "35 23 * * *",
+        "triggerTimes": [
+            27300000,
+            113700000,
+            200100000,
+            286500000,
+            372900000,
+            459300000,
+            545700000,
+            632100000,
+            718500000,
+            804900000
+        ]
+    },
+    {
+        "schedule": "0 17 * * *",
+        "triggerTimes": [
+            3600000,
+            90000000,
+            176400000,
+            262800000,
+            349200000,
+            435600000,
+            522000000,
+            608400000,
+            694800000,
+            781200000
+        ]
+    },
+    {
+        "schedule": "0 22 * * *",
+        "triggerTimes": [
+            21600000,
+            108000000,
+            194400000,
+            280800000,
+            367200000,
+            453600000,
+            540000000,
+            626400000,
+            712800000,
+            799200000
+        ]
+    },
+    {
+        "schedule": "0 11 * * *",
+        "triggerTimes": [
+            68400000,
+            154800000,
+            241200000,
+            327600000,
+            414000000,
+            500400000,
+            586800000,
+            673200000,
+            759600000,
+            846000000
+        ]
+    },
+    {
+        "schedule": "30    *   *   *   *",
+        "triggerTimes": [
+            1800000,
+            5400000,
+            9000000,
+            12600000,
+            16200000,
+            19800000,
+            23400000,
+            27000000,
+            30600000,
+            34200000
+        ]
+    },
+    {
+        "schedule": "41 * * * *",
+        "triggerTimes": [
+            2460000,
+            6060000,
+            9660000,
+            13260000,
+            16860000,
+            20460000,
+            24060000,
+            27660000,
+            31260000,
+            34860000
+        ]
+    },
+    {
+        "schedule": "45 23 * * *",
+        "triggerTimes": [
+            27900000,
+            114300000,
+            200700000,
+            287100000,
+            373500000,
+            459900000,
+            546300000,
+            632700000,
+            719100000,
+            805500000
+        ]
+    },
+    {
+        "schedule": "*/2 * * * *",
+        "triggerTimes": [
+            120000,
+            240000,
+            360000,
+            480000,
+            600000,
+            720000,
+            840000,
+            960000,
+            1080000,
+            1200000
+        ]
+    },
+    {
+        "schedule": "0 0,3,6,9,12,15,18,21 * * *",
+        "triggerTimes": [
+            7200000,
+            18000000,
+            28800000,
+            39600000,
+            50400000,
+            61200000,
+            72000000,
+            82800000,
+            93600000,
+            104400000
+        ]
+    },
+    {
+        "schedule": "0,30 * * * *",
+        "triggerTimes": [
+            1800000,
+            3600000,
+            5400000,
+            7200000,
+            9000000,
+            10800000,
+            12600000,
+            14400000,
+            16200000,
+            18000000
+        ]
+    },
+    {
+        "schedule": "17    *   *   *   *",
+        "triggerTimes": [
+            1020000,
+            4620000,
+            8220000,
+            11820000,
+            15420000,
+            19020000,
+            22620000,
+            26220000,
+            29820000,
+            33420000
+        ]
+    },
+    {
+        "schedule": "30,45 18 * * 1",
+        "triggerTimes": [
+            441000000,
+            441900000,
+            1045800000,
+            1046700000,
+            1650600000,
+            1651500000,
+            2255400000,
+            2256300000,
+            2860200000,
+            2861100000
+        ]
+    },
+    {
+        "schedule": "13,43 * * * *",
+        "triggerTimes": [
+            780000,
+            2580000,
+            4380000,
+            6180000,
+            7980000,
+            9780000,
+            11580000,
+            13380000,
+            15180000,
+            16980000
+        ]
+    },
+    {
+        "schedule": "0 0 10 * *",
+        "triggerTimes": [
+            806400000,
+            3484800000,
+            5904000000,
+            8582400000,
+            11170800000,
+            13849200000,
+            16441200000,
+            19119600000,
+            21798000000,
+            24390000000
+        ]
+    },
+    {
+        "schedule": "13,28,43,58 * * * *",
+        "triggerTimes": [
+            780000,
+            1680000,
+            2580000,
+            3480000,
+            4380000,
+            5280000,
+            6180000,
+            7080000,
+            7980000,
+            8880000
+        ]
+    },
+    {
+        "schedule": "17 9,13,22 * * *",
+        "triggerTimes": [
+            22620000,
+            62220000,
+            76620000,
+            109020000,
+            148620000,
+            163020000,
+            195420000,
+            235020000,
+            249420000,
+            281820000
+        ]
+    },
+    {
+        "schedule": "10 8,12 * * *",
+        "triggerTimes": [
+            58200000,
+            72600000,
+            144600000,
+            159000000,
+            231000000,
+            245400000,
+            317400000,
+            331800000,
+            403800000,
+            418200000
+        ]
+    },
+    {
+        "schedule": "*/5   *   *   *   *",
+        "triggerTimes": [
+            300000,
+            600000,
+            900000,
+            1200000,
+            1500000,
+            1800000,
+            2100000,
+            2400000,
+            2700000,
+            3000000
+        ]
+    },
+    {
+        "schedule": "5,20,35,50 * * * *",
+        "triggerTimes": [
+            300000,
+            1200000,
+            2100000,
+            3000000,
+            3900000,
+            4800000,
+            5700000,
+            6600000,
+            7500000,
+            8400000
+        ]
+    },
+    {
+        "schedule": "00 */2 * * *",
+        "triggerTimes": [
+            7200000,
+            14400000,
+            21600000,
+            28800000,
+            36000000,
+            43200000,
+            50400000,
+            57600000,
+            64800000,
+            72000000
+        ]
+    },
+    {
+        "schedule": "23    *   *   *   *",
+        "triggerTimes": [
+            1380000,
+            4980000,
+            8580000,
+            12180000,
+            15780000,
+            19380000,
+            22980000,
+            26580000,
+            30180000,
+            33780000
+        ]
+    },
+    {
+        "schedule": "7 12 * * *",
+        "triggerTimes": [
+            72420000,
+            158820000,
+            245220000,
+            331620000,
+            418020000,
+            504420000,
+            590820000,
+            677220000,
+            763620000,
+            850020000
+        ]
+    },
+    {
+        "schedule": "*/1 * * * *",
+        "triggerTimes": [
+            60000,
+            120000,
+            180000,
+            240000,
+            300000,
+            360000,
+            420000,
+            480000,
+            540000,
+            600000
+        ]
+    },
+    {
+        "schedule": "0,10,20,30,40,50 * * * *",
+        "triggerTimes": [
+            600000,
+            1200000,
+            1800000,
+            2400000,
+            3000000,
+            3600000,
+            4200000,
+            4800000,
+            5400000,
+            6000000
+        ]
+    },
+    {
+        "schedule": "45 02,06,10,14,18,22 * * *",
+        "triggerTimes": [
+            9900000,
+            24300000,
+            38700000,
+            53100000,
+            67500000,
+            81900000,
+            96300000,
+            110700000,
+            125100000,
+            139500000
+        ]
+    },
+    {
+        "schedule": "39    1   *   *   *",
+        "triggerTimes": [
+            34740000,
+            121140000,
+            207540000,
+            293940000,
+            380340000,
+            466740000,
+            553140000,
+            639540000,
+            725940000,
+            812340000
+        ]
+    },
+    {
+        "schedule": "0 0-2 * * 2-6",
+        "triggerTimes": [
+            28800000,
+            32400000,
+            36000000,
+            115200000,
+            118800000,
+            122400000,
+            201600000,
+            205200000,
+            208800000,
+            460800000
+        ]
+    },
+    {
+        "schedule": "35,50 * * * *",
+        "triggerTimes": [
+            2100000,
+            3000000,
+            5700000,
+            6600000,
+            9300000,
+            10200000,
+            12900000,
+            13800000,
+            16500000,
+            17400000
+        ]
+    },
+    {
+        "schedule": "0 3 1 * *",
+        "triggerTimes": [
+            39600000,
+            2718000000,
+            5137200000,
+            7815600000,
+            10404000000,
+            13082400000,
+            15674400000,
+            18352800000,
+            21031200000,
+            23623200000
+        ]
+    },
+    {
+        "schedule": "5 5 * * *",
+        "triggerTimes": [
+            47100000,
+            133500000,
+            219900000,
+            306300000,
+            392700000,
+            479100000,
+            565500000,
+            651900000,
+            738300000,
+            824700000
+        ]
+    },
+    {
+        "schedule": "18    8   *   *   *",
+        "triggerTimes": [
+            58680000,
+            145080000,
+            231480000,
+            317880000,
+            404280000,
+            490680000,
+            577080000,
+            663480000,
+            749880000,
+            836280000
+        ]
+    },
+    {
+        "schedule": "0 9 * * *",
+        "triggerTimes": [
+            61200000,
+            147600000,
+            234000000,
+            320400000,
+            406800000,
+            493200000,
+            579600000,
+            666000000,
+            752400000,
+            838800000
+        ]
+    },
+    {
+        "schedule": "*/1   *   *   *   *",
+        "triggerTimes": [
+            60000,
+            120000,
+            180000,
+            240000,
+            300000,
+            360000,
+            420000,
+            480000,
+            540000,
+            600000
+        ]
+    },
+    {
+        "schedule": "50 8,12,21 * * *",
+        "triggerTimes": [
+            21000000,
+            60600000,
+            75000000,
+            107400000,
+            147000000,
+            161400000,
+            193800000,
+            233400000,
+            247800000,
+            280200000
+        ]
+    },
+    {
+        "schedule": "29 9,21 * * *",
+        "triggerTimes": [
+            19740000,
+            62940000,
+            106140000,
+            149340000,
+            192540000,
+            235740000,
+            278940000,
+            322140000,
+            365340000,
+            408540000
+        ]
+    },
+    {
+        "schedule": "40 * * * *",
+        "triggerTimes": [
+            2400000,
+            6000000,
+            9600000,
+            13200000,
+            16800000,
+            20400000,
+            24000000,
+            27600000,
+            31200000,
+            34800000
+        ]
+    },
+    {
+        "schedule": "8 21 * * *",
+        "triggerTimes": [
+            18480000,
+            104880000,
+            191280000,
+            277680000,
+            364080000,
+            450480000,
+            536880000,
+            623280000,
+            709680000,
+            796080000
+        ]
+    },
+    {
+        "schedule": "0 6 * * *",
+        "triggerTimes": [
+            50400000,
+            136800000,
+            223200000,
+            309600000,
+            396000000,
+            482400000,
+            568800000,
+            655200000,
+            741600000,
+            828000000
+        ]
+    },
+    {
+        "schedule": "30 0-23/2 * * *",
+        "triggerTimes": [
+            1800000,
+            9000000,
+            16200000,
+            23400000,
+            30600000,
+            37800000,
+            45000000,
+            52200000,
+            59400000,
+            66600000
+        ]
+    },
+    {
+        "schedule": "0 14,22 * * *",
+        "triggerTimes": [
+            21600000,
+            79200000,
+            108000000,
+            165600000,
+            194400000,
+            252000000,
+            280800000,
+            338400000,
+            367200000,
+            424800000
+        ]
+    },
+    {
+        "schedule": "0 */1 * * *",
+        "triggerTimes": [
+            3600000,
+            7200000,
+            10800000,
+            14400000,
+            18000000,
+            21600000,
+            25200000,
+            28800000,
+            32400000,
+            36000000
+        ]
+    },
+    {
+        "schedule": "0 1 * * 1",
+        "triggerTimes": [
+            378000000,
+            982800000,
+            1587600000,
+            2192400000,
+            2797200000,
+            3402000000,
+            4006800000,
+            4611600000,
+            5216400000,
+            5821200000
+        ]
+    },
+    {
+        "schedule": "0 8 * * *",
+        "triggerTimes": [
+            57600000,
+            144000000,
+            230400000,
+            316800000,
+            403200000,
+            489600000,
+            576000000,
+            662400000,
+            748800000,
+            835200000
+        ]
+    },
+    {
+        "schedule": "01 17 * * *",
+        "triggerTimes": [
+            3660000,
+            90060000,
+            176460000,
+            262860000,
+            349260000,
+            435660000,
+            522060000,
+            608460000,
+            694860000,
+            781260000
+        ]
+    },
+    {
+        "schedule": "13    *   *   *   *",
+        "triggerTimes": [
+            780000,
+            4380000,
+            7980000,
+            11580000,
+            15180000,
+            18780000,
+            22380000,
+            25980000,
+            29580000,
+            33180000
+        ]
+    }
+]


Mime
View raw message