home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &n…he Search for Life DVD 2 / DVD-ROM.iso / install / jre1_3 / lib / rt.jar / java / util / GregorianCalendar.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  9.7 KB  |  933 lines

  1. package java.util;
  2.  
  3. public class GregorianCalendar extends Calendar {
  4.    // $FF: renamed from: BC int
  5.    public static final int field_0 = 0;
  6.    // $FF: renamed from: AD int
  7.    public static final int field_1 = 1;
  8.    private static final int JAN_1_1_JULIAN_DAY = 1721426;
  9.    private static final int EPOCH_JULIAN_DAY = 2440588;
  10.    private static final int EPOCH_YEAR = 1970;
  11.    private static final int[] NUM_DAYS = new int[]{0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334};
  12.    private static final int[] LEAP_NUM_DAYS = new int[]{0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335};
  13.    private static final int[] MONTH_LENGTH = new int[]{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
  14.    private static final int[] LEAP_MONTH_LENGTH = new int[]{31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
  15.    private static final int ONE_SECOND = 1000;
  16.    private static final int ONE_MINUTE = 60000;
  17.    private static final int ONE_HOUR = 3600000;
  18.    private static final long ONE_DAY = 86400000L;
  19.    private static final long ONE_WEEK = 604800000L;
  20.    private static final int[] MIN_VALUES = new int[]{0, 1, 0, 1, 0, 1, 1, 1, -1, 0, 0, 0, 0, 0, 0, -43200000, 0};
  21.    private static final int[] LEAST_MAX_VALUES = new int[]{1, 292269054, 11, 52, 4, 28, 365, 7, 4, 1, 11, 23, 59, 59, 999, 43200000, 3600000};
  22.    private static final int[] MAX_VALUES = new int[]{1, 292278994, 11, 53, 6, 31, 366, 7, 6, 1, 11, 23, 59, 59, 999, 43200000, 3600000};
  23.    private long gregorianCutover;
  24.    private transient long normalizedGregorianCutover;
  25.    private transient int gregorianCutoverYear;
  26.    static final long serialVersionUID = -8125100834729963327L;
  27.  
  28.    public GregorianCalendar() {
  29.       this(TimeZone.getDefault(), Locale.getDefault());
  30.    }
  31.  
  32.    public GregorianCalendar(TimeZone var1) {
  33.       this(var1, Locale.getDefault());
  34.    }
  35.  
  36.    public GregorianCalendar(Locale var1) {
  37.       this(TimeZone.getDefault(), var1);
  38.    }
  39.  
  40.    public GregorianCalendar(TimeZone var1, Locale var2) {
  41.       super(var1, var2);
  42.       this.gregorianCutover = -12219292800000L;
  43.       this.normalizedGregorianCutover = this.gregorianCutover;
  44.       this.gregorianCutoverYear = 1582;
  45.       ((Calendar)this).setTimeInMillis(System.currentTimeMillis());
  46.    }
  47.  
  48.    public GregorianCalendar(int var1, int var2, int var3) {
  49.       super(TimeZone.getDefault(), Locale.getDefault());
  50.       this.gregorianCutover = -12219292800000L;
  51.       this.normalizedGregorianCutover = this.gregorianCutover;
  52.       this.gregorianCutoverYear = 1582;
  53.       ((Calendar)this).set(0, 1);
  54.       ((Calendar)this).set(1, var1);
  55.       ((Calendar)this).set(2, var2);
  56.       ((Calendar)this).set(5, var3);
  57.    }
  58.  
  59.    public GregorianCalendar(int var1, int var2, int var3, int var4, int var5) {
  60.       super(TimeZone.getDefault(), Locale.getDefault());
  61.       this.gregorianCutover = -12219292800000L;
  62.       this.normalizedGregorianCutover = this.gregorianCutover;
  63.       this.gregorianCutoverYear = 1582;
  64.       ((Calendar)this).set(0, 1);
  65.       ((Calendar)this).set(1, var1);
  66.       ((Calendar)this).set(2, var2);
  67.       ((Calendar)this).set(5, var3);
  68.       ((Calendar)this).set(11, var4);
  69.       ((Calendar)this).set(12, var5);
  70.    }
  71.  
  72.    public GregorianCalendar(int var1, int var2, int var3, int var4, int var5, int var6) {
  73.       super(TimeZone.getDefault(), Locale.getDefault());
  74.       this.gregorianCutover = -12219292800000L;
  75.       this.normalizedGregorianCutover = this.gregorianCutover;
  76.       this.gregorianCutoverYear = 1582;
  77.       ((Calendar)this).set(0, 1);
  78.       ((Calendar)this).set(1, var1);
  79.       ((Calendar)this).set(2, var2);
  80.       ((Calendar)this).set(5, var3);
  81.       ((Calendar)this).set(11, var4);
  82.       ((Calendar)this).set(12, var5);
  83.       ((Calendar)this).set(13, var6);
  84.    }
  85.  
  86.    public void setGregorianChange(Date var1) {
  87.       this.gregorianCutover = var1.getTime();
  88.       long var2 = floorDivide(this.gregorianCutover, 86400000L);
  89.       this.normalizedGregorianCutover = var2 * 86400000L;
  90.       if (var2 < 0L && this.normalizedGregorianCutover > 0L) {
  91.          this.normalizedGregorianCutover = (var2 + 1L) * 86400000L;
  92.       }
  93.  
  94.       GregorianCalendar var4 = new GregorianCalendar(((Calendar)this).getTimeZone());
  95.       ((Calendar)var4).setTime(var1);
  96.       this.gregorianCutoverYear = ((Calendar)var4).get(1);
  97.       if (((Calendar)var4).get(0) == 0) {
  98.          this.gregorianCutoverYear = 1 - this.gregorianCutoverYear;
  99.       }
  100.  
  101.    }
  102.  
  103.    public final Date getGregorianChange() {
  104.       return new Date(this.gregorianCutover);
  105.    }
  106.  
  107.    public boolean isLeapYear(int var1) {
  108.       return var1 >= this.gregorianCutoverYear ? var1 % 4 == 0 && (var1 % 100 != 0 || var1 % 400 == 0) : var1 % 4 == 0;
  109.    }
  110.  
  111.    public boolean equals(Object var1) {
  112.       return super.equals(var1) && var1 instanceof GregorianCalendar && this.gregorianCutover == ((GregorianCalendar)var1).gregorianCutover;
  113.    }
  114.  
  115.    public int hashCode() {
  116.       return super.hashCode() ^ (int)this.gregorianCutover;
  117.    }
  118.  
  119.    public void add(int var1, int var2) {
  120.       if (var2 != 0) {
  121.          ((Calendar)this).complete();
  122.          if (var1 == 1) {
  123.             int var3 = ((Calendar)this).internalGet(1);
  124.             if (this.internalGetEra() == 1) {
  125.                var3 += var2;
  126.                if (var3 > 0) {
  127.                   ((Calendar)this).set(1, var3);
  128.                } else {
  129.                   ((Calendar)this).set(1, 1 - var3);
  130.                   ((Calendar)this).set(0, 0);
  131.                }
  132.             } else {
  133.                var3 -= var2;
  134.                if (var3 > 0) {
  135.                   ((Calendar)this).set(1, var3);
  136.                } else {
  137.                   ((Calendar)this).set(1, 1 - var3);
  138.                   ((Calendar)this).set(0, 1);
  139.                }
  140.             }
  141.  
  142.             this.pinDayOfMonth();
  143.          } else if (var1 == 2) {
  144.             int var10 = ((Calendar)this).internalGet(2) + var2;
  145.             if (var10 >= 0) {
  146.                ((Calendar)this).set(1, ((Calendar)this).internalGet(1) + var10 / 12);
  147.                ((Calendar)this).set(2, var10 % 12);
  148.             } else {
  149.                ((Calendar)this).set(1, ((Calendar)this).internalGet(1) + (var10 + 1) / 12 - 1);
  150.                var10 %= 12;
  151.                if (var10 < 0) {
  152.                   var10 += 12;
  153.                }
  154.  
  155.                ((Calendar)this).set(2, 0 + var10);
  156.             }
  157.  
  158.             this.pinDayOfMonth();
  159.          } else if (var1 == 0) {
  160.             int var12 = ((Calendar)this).internalGet(0) + var2;
  161.             if (var12 < 0) {
  162.                var12 = 0;
  163.             }
  164.  
  165.             if (var12 > 1) {
  166.                var12 = 1;
  167.             }
  168.  
  169.             ((Calendar)this).set(0, var12);
  170.          } else {
  171.             long var13 = (long)var2;
  172.             boolean var5 = true;
  173.             switch (var1) {
  174.                case 3:
  175.                case 4:
  176.                case 8:
  177.                   var13 *= 604800000L;
  178.                   break;
  179.                case 5:
  180.                case 6:
  181.                case 7:
  182.                   var13 *= 86400000L;
  183.                   break;
  184.                case 9:
  185.                   var13 *= 43200000L;
  186.                   break;
  187.                case 10:
  188.                case 11:
  189.                   var13 *= 3600000L;
  190.                   var5 = false;
  191.                   break;
  192.                case 12:
  193.                   var13 *= 60000L;
  194.                   var5 = false;
  195.                   break;
  196.                case 13:
  197.                   var13 *= 1000L;
  198.                   var5 = false;
  199.                   break;
  200.                case 14:
  201.                   var5 = false;
  202.                   break;
  203.                case 15:
  204.                case 16:
  205.                default:
  206.                   throw new IllegalArgumentException();
  207.             }
  208.  
  209.             long var6 = 0L;
  210.             if (var5) {
  211.                var6 = (long)((Calendar)this).internalGet(16);
  212.             }
  213.  
  214.             ((Calendar)this).setTimeInMillis(super.time + var13);
  215.             if (var5) {
  216.                var6 -= (long)((Calendar)this).internalGet(16);
  217.                if (var13 != 0L) {
  218.                   ((Calendar)this).setTimeInMillis(super.time + var6);
  219.                }
  220.             }
  221.          }
  222.  
  223.       }
  224.    }
  225.  
  226.    public void roll(int var1, boolean var2) {
  227.       this.roll(var1, var2 ? 1 : -1);
  228.    }
  229.  
  230.    public void roll(int var1, int var2) {
  231.       if (var2 != 0) {
  232.          int var3 = 0;
  233.          int var4 = 0;
  234.          if (var1 >= 0 && var1 < 17) {
  235.             ((Calendar)this).complete();
  236.             var3 = this.getMinimum(var1);
  237.             var4 = this.getMaximum(var1);
  238.          }
  239.  
  240.          switch (var1) {
  241.             case 2:
  242.                int var21 = (((Calendar)this).internalGet(2) + var2) % 12;
  243.                if (var21 < 0) {
  244.                   var21 += 12;
  245.                }
  246.  
  247.                ((Calendar)this).set(2, var21);
  248.                int var27 = this.monthLength(var21);
  249.                int var33 = ((Calendar)this).internalGet(5);
  250.                if (var33 > var27) {
  251.                   ((Calendar)this).set(5, var27);
  252.                }
  253.  
  254.                return;
  255.             case 3:
  256.                int var19 = ((Calendar)this).internalGet(3);
  257.                int var26 = ((Calendar)this).internalGet(1);
  258.                int var32 = ((Calendar)this).internalGet(6);
  259.                if (((Calendar)this).internalGet(2) == 0) {
  260.                   if (var19 >= 52) {
  261.                      --var26;
  262.                      var32 += this.yearLength(var26);
  263.                   }
  264.                } else if (var19 == 1) {
  265.                   var32 -= this.yearLength(var26);
  266.                   ++var26;
  267.                }
  268.  
  269.                var19 += var2;
  270.                if (var19 < 1 || var19 > 52) {
  271.                   int var36 = this.yearLength(var26);
  272.                   int var39 = (var36 - var32 + ((Calendar)this).internalGet(7) - ((Calendar)this).getFirstDayOfWeek()) % 7;
  273.                   if (var39 < 0) {
  274.                      var39 += 7;
  275.                   }
  276.  
  277.                   if (6 - var39 >= ((Calendar)this).getMinimalDaysInFirstWeek()) {
  278.                      var36 -= 7;
  279.                   }
  280.  
  281.                   int var40 = this.weekNumber(var36, var39 + 1);
  282.                   var19 = (var19 + var40 - 1) % var40 + 1;
  283.                }
  284.  
  285.                ((Calendar)this).set(3, var19);
  286.                ((Calendar)this).set(1, var26);
  287.                return;
  288.             case 4:
  289.                int var18 = ((Calendar)this).internalGet(7) - ((Calendar)this).getFirstDayOfWeek();
  290.                if (var18 < 0) {
  291.                   var18 += 7;
  292.                }
  293.  
  294.                int var25 = (var18 - ((Calendar)this).internalGet(5) + 1) % 7;
  295.                if (var25 < 0) {
  296.                   var25 += 7;
  297.                }
  298.  
  299.                int var31;
  300.                if (7 - var25 < ((Calendar)this).getMinimalDaysInFirstWeek()) {
  301.                   var31 = 8 - var25;
  302.                } else {
  303.                   var31 = 1 - var25;
  304.                }
  305.  
  306.                int var35 = this.monthLength(((Calendar)this).internalGet(2));
  307.                int var38 = (var35 - ((Calendar)this).internalGet(5) + var18) % 7;
  308.                int var11 = var35 + 7 - var38;
  309.                int var5 = var11 - var31;
  310.                int var41 = (((Calendar)this).internalGet(5) + var2 * 7 - var31) % var5;
  311.                if (var41 < 0) {
  312.                   var41 += var5;
  313.                }
  314.  
  315.                var41 += var31;
  316.                if (var41 < 1) {
  317.                   var41 = 1;
  318.                }
  319.  
  320.                if (var41 > var35) {
  321.                   var41 = var35;
  322.                }
  323.  
  324.                ((Calendar)this).set(5, var41);
  325.                return;
  326.             case 5:
  327.                var4 = this.monthLength(((Calendar)this).internalGet(2));
  328.             case 0:
  329.             case 1:
  330.             case 9:
  331.             case 12:
  332.             case 13:
  333.             case 14:
  334.                int var14 = var4 - var3 + 1;
  335.                int var22 = ((Calendar)this).internalGet(var1) + var2;
  336.                var22 = (var22 - var3) % var14;
  337.                if (var22 < 0) {
  338.                   var22 += var14;
  339.                }
  340.  
  341.                var22 += var3;
  342.                ((Calendar)this).set(var1, var22);
  343.                return;
  344.             case 6:
  345.                long var17 = (long)var2 * 86400000L;
  346.                long var30 = super.time - (long)(((Calendar)this).internalGet(6) - 1) * 86400000L;
  347.                int var37 = this.yearLength();
  348.                super.time = (super.time + var17 - var30) % ((long)var37 * 86400000L);
  349.                if (super.time < 0L) {
  350.                   super.time += (long)var37 * 86400000L;
  351.                }
  352.  
  353.                ((Calendar)this).setTimeInMillis(super.time + var30);
  354.                return;
  355.             case 7:
  356.                long var16 = (long)var2 * 86400000L;
  357.                int var29 = ((Calendar)this).internalGet(7) - ((Calendar)this).getFirstDayOfWeek();
  358.                if (var29 < 0) {
  359.                   var29 += 7;
  360.                }
  361.  
  362.                long var34 = super.time - (long)var29 * 86400000L;
  363.                super.time = (super.time + var16 - var34) % 604800000L;
  364.                if (super.time < 0L) {
  365.                   super.time += 604800000L;
  366.                }
  367.  
  368.                ((Calendar)this).setTimeInMillis(super.time + var34);
  369.                return;
  370.             case 8:
  371.                long var15 = (long)var2 * 604800000L;
  372.                int var28 = (((Calendar)this).internalGet(5) - 1) / 7;
  373.                int var9 = (this.monthLength(((Calendar)this).internalGet(2)) - ((Calendar)this).internalGet(5)) / 7;
  374.                long var10 = super.time - (long)var28 * 604800000L;
  375.                long var12 = 604800000L * (long)(var28 + var9 + 1);
  376.                super.time = (super.time + var15 - var10) % var12;
  377.                if (super.time < 0L) {
  378.                   super.time += var12;
  379.                }
  380.  
  381.                ((Calendar)this).setTimeInMillis(super.time + var10);
  382.                return;
  383.             case 10:
  384.             case 11:
  385.                Date var6 = ((Calendar)this).getTime();
  386.                int var7 = ((Calendar)this).internalGet(var1);
  387.                int var8 = (var7 + var2) % (var4 + 1);
  388.                if (var8 < 0) {
  389.                   var8 += var4 + 1;
  390.                }
  391.  
  392.                ((Calendar)this).setTime(new Date(var6.getTime() + (long)(3600000 * (var8 - var7))));
  393.                return;
  394.             case 15:
  395.             case 16:
  396.             default:
  397.                throw new IllegalArgumentException();
  398.          }
  399.       }
  400.    }
  401.  
  402.    public int getMinimum(int var1) {
  403.       return MIN_VALUES[var1];
  404.    }
  405.  
  406.    public int getMaximum(int var1) {
  407.       return MAX_VALUES[var1];
  408.    }
  409.  
  410.    public int getGreatestMinimum(int var1) {
  411.       return MIN_VALUES[var1];
  412.    }
  413.  
  414.    public int getLeastMaximum(int var1) {
  415.       return LEAST_MAX_VALUES[var1];
  416.    }
  417.  
  418.    public int getActualMinimum(int var1) {
  419.       return this.getMinimum(var1);
  420.    }
  421.  
  422.    public int getActualMaximum(int var1) {
  423.       switch (var1) {
  424.          case 1:
  425.             Calendar var2 = (Calendar)((Calendar)this).clone();
  426.             var2.setLenient(true);
  427.             int var3 = var2.get(0);
  428.             Date var4 = var2.getTime();
  429.             int var5 = LEAST_MAX_VALUES[1];
  430.             int var6 = MAX_VALUES[1] + 1;
  431.  
  432.             while(var5 + 1 < var6) {
  433.                int var7 = (var5 + var6) / 2;
  434.                var2.set(1, var7);
  435.                if (var2.get(1) == var7 && var2.get(0) == var3) {
  436.                   var5 = var7;
  437.                } else {
  438.                   var6 = var7;
  439.                   var2.setTime(var4);
  440.                }
  441.             }
  442.  
  443.             return var5;
  444.          case 2:
  445.          case 7:
  446.          default:
  447.             return this.getMaximum(var1);
  448.          case 3:
  449.          case 4:
  450.          case 8:
  451.             return super.getActualMaximum(var1);
  452.          case 5:
  453.             return this.monthLength(((Calendar)this).get(2));
  454.          case 6:
  455.             return this.yearLength();
  456.       }
  457.    }
  458.  
  459.    boolean inDaylightTime() {
  460.       if (!((Calendar)this).getTimeZone().useDaylightTime()) {
  461.          return false;
  462.       } else {
  463.          ((Calendar)this).complete();
  464.          return ((Calendar)this).internalGet(16) != 0;
  465.       }
  466.    }
  467.  
  468.    int getISOYear() {
  469.       ((Calendar)this).complete();
  470.       int var1 = ((Calendar)this).internalGet(3);
  471.       int var2 = ((Calendar)this).internalGet(1);
  472.       if (((Calendar)this).internalGet(2) == 0) {
  473.          if (var1 >= 52) {
  474.             --var2;
  475.          }
  476.       } else if (var1 == 1) {
  477.          ++var2;
  478.       }
  479.  
  480.       return var2;
  481.    }
  482.  
  483.    protected void computeFields() {
  484.       int var1 = ((Calendar)this).getTimeZone().getRawOffset();
  485.       long var2 = super.time + (long)var1;
  486.       if (super.time > 0L && var2 < 0L && var1 > 0) {
  487.          var2 = Long.MAX_VALUE;
  488.       } else if (super.time < 0L && var2 > 0L && var1 < 0) {
  489.          var2 = Long.MIN_VALUE;
  490.       }
  491.  
  492.       this.timeToFields(var2, false);
  493.       int var4 = this.internalGetEra();
  494.       int var5 = ((Calendar)this).internalGet(1);
  495.       int var6 = ((Calendar)this).internalGet(2);
  496.       int var7 = ((Calendar)this).internalGet(5);
  497.       int var8 = ((Calendar)this).internalGet(7);
  498.       long var9 = var2 / 86400000L;
  499.       int var11 = (int)(var2 - var9 * 86400000L);
  500.       if (var11 < 0) {
  501.          var11 = (int)((long)var11 + 86400000L);
  502.       }
  503.  
  504.       int var12 = ((Calendar)this).getTimeZone().getOffset(var4, var5, var6, var7, var8, var11, this.monthLength(var6), this.prevMonthLength(var6)) - var1;
  505.       var11 += var12;
  506.       if ((long)var11 >= 86400000L) {
  507.          long var13 = var2 + (long)var12;
  508.          var11 = (int)((long)var11 - 86400000L);
  509.          if (var2 > 0L && var13 < 0L && var12 > 0) {
  510.             var13 = Long.MAX_VALUE;
  511.          } else if (var2 < 0L && var13 > 0L && var12 < 0) {
  512.             var13 = Long.MIN_VALUE;
  513.          }
  514.  
  515.          this.timeToFields(var13, false);
  516.       }
  517.  
  518.       ((Calendar)this).internalSet(14, var11 % 1000);
  519.       var11 /= 1000;
  520.       ((Calendar)this).internalSet(13, var11 % 60);
  521.       var11 /= 60;
  522.       ((Calendar)this).internalSet(12, var11 % 60);
  523.       var11 /= 60;
  524.       ((Calendar)this).internalSet(11, var11);
  525.       ((Calendar)this).internalSet(9, var11 / 12);
  526.       ((Calendar)this).internalSet(10, var11 % 12);
  527.       ((Calendar)this).internalSet(15, var1);
  528.       ((Calendar)this).internalSet(16, var12);
  529.  
  530.       for(int var19 = 0; var19 < 17; ++var19) {
  531.          super.stamp[var19] = 1;
  532.          super.isSet[var19] = true;
  533.       }
  534.  
  535.    }
  536.  
  537.    private final void timeToFields(long var1, boolean var3) {
  538.       int var4;
  539.       int var8;
  540.       int var9;
  541.       boolean var12;
  542.       if (var1 >= this.normalizedGregorianCutover) {
  543.          long var13 = millisToJulianDay(var1) - 1721426L;
  544.          int[] var15 = new int[1];
  545.          int var16 = floorDivide(var13, 146097, var15);
  546.          int var17 = floorDivide(var15[0], 36524, var15);
  547.          int var18 = floorDivide(var15[0], 1461, var15);
  548.          int var19 = floorDivide(var15[0], 365, var15);
  549.          var4 = 400 * var16 + 100 * var17 + 4 * var18 + var19;
  550.          var9 = var15[0];
  551.          if (var17 != 4 && var19 != 4) {
  552.             ++var4;
  553.          } else {
  554.             var9 = 365;
  555.          }
  556.  
  557.          var12 = (var4 & 3) == 0 && (var4 % 100 != 0 || var4 % 400 == 0);
  558.          var8 = (int)((var13 + 1L) % 7L);
  559.       } else {
  560.          long var22 = millisToJulianDay(var1) - 1721424L;
  561.          var4 = (int)floorDivide(4L * var22 + 1464L, 1461L);
  562.          long var24 = (long)(365 * (var4 - 1) + floorDivide(var4 - 1, 4));
  563.          var9 = (int)(var22 - var24);
  564.          var12 = (var4 & 3) == 0;
  565.          var8 = (int)((var22 - 1L) % 7L);
  566.       }
  567.  
  568.       int var23 = 0;
  569.       int var14 = var12 ? 60 : 59;
  570.       if (var9 >= var14) {
  571.          var23 = var12 ? 1 : 2;
  572.       }
  573.  
  574.       int var6 = (12 * (var9 + var23) + 6) / 367;
  575.       int var7 = var9 - (var12 ? LEAP_NUM_DAYS[var6] : NUM_DAYS[var6]) + 1;
  576.       var8 += var8 < 0 ? 8 : 1;
  577.       byte var11 = 1;
  578.       int var5 = var4;
  579.       if (var4 < 1) {
  580.          var11 = 0;
  581.          var5 = 1 - var4;
  582.       }
  583.  
  584.       ((Calendar)this).internalSet(0, var11);
  585.       ((Calendar)this).internalSet(1, var5);
  586.       ((Calendar)this).internalSet(2, var6 + 0);
  587.       ((Calendar)this).internalSet(5, var7);
  588.       ((Calendar)this).internalSet(7, var8);
  589.       ++var9;
  590.       ((Calendar)this).internalSet(6, var9);
  591.       if (!var3) {
  592.          int var25 = (var8 + 7 - ((Calendar)this).getFirstDayOfWeek()) % 7;
  593.          int var26 = (var8 - var9 + 701 - ((Calendar)this).getFirstDayOfWeek()) % 7;
  594.          int var27 = (var9 - 1 + var26) / 7;
  595.          if (7 - var26 >= ((Calendar)this).getMinimalDaysInFirstWeek()) {
  596.             ++var27;
  597.          }
  598.  
  599.          if (var9 > 359) {
  600.             int var28 = this.yearLength();
  601.             int var30 = (var25 + var28 - var9) % 7;
  602.             if (var30 < 0) {
  603.                var30 += 7;
  604.             }
  605.  
  606.             if (6 - var30 >= ((Calendar)this).getMinimalDaysInFirstWeek() && var9 + 7 - var25 > var28) {
  607.                var27 = 1;
  608.             }
  609.          } else if (var27 == 0) {
  610.             int var29 = var9 + this.yearLength(var4 - 1);
  611.             var27 = this.weekNumber(var29, var8);
  612.          }
  613.  
  614.          ((Calendar)this).internalSet(3, var27);
  615.          ((Calendar)this).internalSet(4, this.weekNumber(var7, var8));
  616.          ((Calendar)this).internalSet(8, (var7 - 1) / 7 + 1);
  617.       }
  618.    }
  619.  
  620.    protected void computeTime() {
  621.       if (!((Calendar)this).isLenient() && !this.validateFields()) {
  622.          throw new IllegalArgumentException();
  623.       } else {
  624.          int var1 = super.stamp[1] != 0 ? ((Calendar)this).internalGet(1) : 1970;
  625.          int var2 = 1;
  626.          if (super.stamp[0] != 0) {
  627.             var2 = ((Calendar)this).internalGet(0);
  628.             if (var2 == 0) {
  629.                var1 = 1 - var1;
  630.             } else if (var2 != 1) {
  631.                throw new IllegalArgumentException("Invalid era");
  632.             }
  633.          }
  634.  
  635.          boolean var3 = var1 >= this.gregorianCutoverYear;
  636.          long var4 = this.computeJulianDay(var3, var1);
  637.          long var6 = julianDayToMillis(var4);
  638.          if (var3 != var6 >= this.normalizedGregorianCutover && var4 != -106749550580L) {
  639.             var4 = this.computeJulianDay(!var3, var1);
  640.             var6 = julianDayToMillis(var4);
  641.          }
  642.  
  643.          int var8 = 0;
  644.          int var9 = super.stamp[11];
  645.          int var10 = super.stamp[10];
  646.          int var11 = var10 > var9 ? var10 : var9;
  647.          if (var11 != 0) {
  648.             if (var11 == var9) {
  649.                var8 += ((Calendar)this).internalGet(11);
  650.             } else {
  651.                var8 += ((Calendar)this).internalGet(10);
  652.                var8 += 12 * ((Calendar)this).internalGet(9);
  653.             }
  654.          }
  655.  
  656.          var8 *= 60;
  657.          var8 += ((Calendar)this).internalGet(12);
  658.          var8 *= 60;
  659.          var8 += ((Calendar)this).internalGet(13);
  660.          var8 *= 1000;
  661.          var8 += ((Calendar)this).internalGet(14);
  662.          TimeZone var12 = ((Calendar)this).getTimeZone();
  663.          int var13 = super.stamp[15] >= 2 ? ((Calendar)this).internalGet(15) : var12.getRawOffset();
  664.          var6 += (long)var8;
  665.          int var14 = 0;
  666.          if (super.stamp[15] >= 2) {
  667.             var14 = ((Calendar)this).internalGet(16);
  668.          } else {
  669.             int[] var15 = new int[1];
  670.             floorDivide(var6, 86400000, var15);
  671.             int var16;
  672.             if (!((Calendar)this).isLenient() && super.stamp[2] != 0 && super.stamp[5] != 0 && var8 == var15[0]) {
  673.                var16 = julianDayToDayOfWeek(var4);
  674.             } else {
  675.                this.timeToFields(var6, true);
  676.                var16 = ((Calendar)this).internalGet(7);
  677.             }
  678.  
  679.             var14 = var12.getOffset(var2, ((Calendar)this).internalGet(1), ((Calendar)this).internalGet(2), ((Calendar)this).internalGet(5), var16, var15[0], this.monthLength(((Calendar)this).internalGet(2)), this.prevMonthLength(((Calendar)this).internalGet(2))) - var13;
  680.          }
  681.  
  682.          super.time = var6 - (long)var13 - (long)var14;
  683.       }
  684.    }
  685.  
  686.    private final long computeJulianDay(boolean var1, int var2) {
  687.       int var3 = 0;
  688.       int var4 = 0;
  689.       long var6 = 0L;
  690.       int var8 = super.stamp[7];
  691.       int var9 = super.stamp[2];
  692.       int var10 = super.stamp[5];
  693.       int var11 = aggregateStamp(super.stamp[4], var8);
  694.       int var12 = aggregateStamp(super.stamp[8], var8);
  695.       int var13 = super.stamp[6];
  696.       int var14 = aggregateStamp(super.stamp[3], var8);
  697.       int var15 = var10;
  698.       if (var11 > var10) {
  699.          var15 = var11;
  700.       }
  701.  
  702.       if (var12 > var15) {
  703.          var15 = var12;
  704.       }
  705.  
  706.       if (var13 > var15) {
  707.          var15 = var13;
  708.       }
  709.  
  710.       if (var14 > var15) {
  711.          var15 = var14;
  712.       }
  713.  
  714.       if (var15 == 0) {
  715.          var11 = super.stamp[4];
  716.          var12 = Math.max(super.stamp[8], var8);
  717.          var14 = super.stamp[3];
  718.          var15 = Math.max(Math.max(var11, var12), var14);
  719.          if (var15 == 0) {
  720.             var10 = var9;
  721.             var15 = var9;
  722.          }
  723.       }
  724.  
  725.       boolean var16 = false;
  726.       if (var15 == var10 || var15 == var11 || var15 == var12) {
  727.          var16 = true;
  728.          var3 = var9 != 0 ? ((Calendar)this).internalGet(2) - 0 : 0;
  729.          if (var3 < 0 || var3 > 11) {
  730.             int[] var17 = new int[1];
  731.             var2 += floorDivide(var3, 12, var17);
  732.             var3 = var17[0];
  733.          }
  734.       }
  735.  
  736.       boolean var27 = var2 % 4 == 0;
  737.       int var5 = var2 - 1;
  738.       long var18 = 365L * (long)var5 + (long)floorDivide(var5, 4) + 1721423L;
  739.       if (var1) {
  740.          var27 = var27 && (var2 % 100 != 0 || var2 % 400 == 0);
  741.          var18 += (long)(floorDivide(var5, 400) - floorDivide(var5, 100) + 2);
  742.       }
  743.  
  744.       if (var16) {
  745.          var18 += var27 ? (long)LEAP_NUM_DAYS[var3] : (long)NUM_DAYS[var3];
  746.          if (var15 == var10) {
  747.             var4 = super.stamp[5] != 0 ? ((Calendar)this).internalGet(5) : 1;
  748.          } else {
  749.             int var20 = julianDayToDayOfWeek(var18 + 1L) - ((Calendar)this).getFirstDayOfWeek();
  750.             if (var20 < 0) {
  751.                var20 += 7;
  752.             }
  753.  
  754.             var4 = 1 - var20 + (var8 != 0 ? ((Calendar)this).internalGet(7) - ((Calendar)this).getFirstDayOfWeek() : 0);
  755.             if (var15 == var11) {
  756.                if (7 - var20 < ((Calendar)this).getMinimalDaysInFirstWeek()) {
  757.                   var4 += 7;
  758.                }
  759.  
  760.                var4 += 7 * (((Calendar)this).internalGet(4) - 1);
  761.             } else {
  762.                if (var4 < 1) {
  763.                   var4 += 7;
  764.                }
  765.  
  766.                int var21 = super.stamp[8] != 0 ? ((Calendar)this).internalGet(8) : 1;
  767.                if (var21 >= 0) {
  768.                   var4 += 7 * (var21 - 1);
  769.                } else {
  770.                   var4 += ((this.monthLength(((Calendar)this).internalGet(2), var2) - var4) / 7 + var21 + 1) * 7;
  771.                }
  772.             }
  773.          }
  774.  
  775.          var18 += (long)var4;
  776.       } else if (var15 == var13) {
  777.          var18 += (long)((Calendar)this).internalGet(6);
  778.       } else {
  779.          int var30 = julianDayToDayOfWeek(var18 + 1L) - ((Calendar)this).getFirstDayOfWeek();
  780.          if (var30 < 0) {
  781.             var30 += 7;
  782.          }
  783.  
  784.          var4 = 1 - var30 + (var8 != 0 ? ((Calendar)this).internalGet(7) - ((Calendar)this).getFirstDayOfWeek() : 0);
  785.          if (7 - var30 < ((Calendar)this).getMinimalDaysInFirstWeek()) {
  786.             var4 += 7;
  787.          }
  788.  
  789.          var4 += 7 * (((Calendar)this).internalGet(3) - 1);
  790.          var18 += (long)var4;
  791.       }
  792.  
  793.       return var18;
  794.    }
  795.  
  796.    private static final long millisToJulianDay(long var0) {
  797.       return 2440588L + floorDivide(var0, 86400000L);
  798.    }
  799.  
  800.    private static final long julianDayToMillis(long var0) {
  801.       return (var0 - 2440588L) * 86400000L;
  802.    }
  803.  
  804.    private static final int julianDayToDayOfWeek(long var0) {
  805.       int var2 = (int)((var0 + 1L) % 7L);
  806.       return var2 + (var2 < 0 ? 8 : 1);
  807.    }
  808.  
  809.    private static final long floorDivide(long var0, long var2) {
  810.       return var0 >= 0L ? var0 / var2 : (var0 + 1L) / var2 - 1L;
  811.    }
  812.  
  813.    private static final int floorDivide(int var0, int var1) {
  814.       return var0 >= 0 ? var0 / var1 : (var0 + 1) / var1 - 1;
  815.    }
  816.  
  817.    private static final int floorDivide(int var0, int var1, int[] var2) {
  818.       if (var0 >= 0) {
  819.          var2[0] = var0 % var1;
  820.          return var0 / var1;
  821.       } else {
  822.          int var3 = (var0 + 1) / var1 - 1;
  823.          var2[0] = var0 - var3 * var1;
  824.          return var3;
  825.       }
  826.    }
  827.  
  828.    private static final int floorDivide(long var0, int var2, int[] var3) {
  829.       if (var0 >= 0L) {
  830.          var3[0] = (int)(var0 % (long)var2);
  831.          return (int)(var0 / (long)var2);
  832.       } else {
  833.          int var4 = (int)((var0 + 1L) / (long)var2 - 1L);
  834.          var3[0] = (int)(var0 - (long)(var4 * var2));
  835.          return var4;
  836.       }
  837.    }
  838.  
  839.    private static final int aggregateStamp(int var0, int var1) {
  840.       return var0 != 0 && var1 != 0 ? Math.max(var0, var1) : 0;
  841.    }
  842.  
  843.    private final int weekNumber(int var1, int var2) {
  844.       int var3 = (var2 - ((Calendar)this).getFirstDayOfWeek() - var1 + 1) % 7;
  845.       if (var3 < 0) {
  846.          var3 += 7;
  847.       }
  848.  
  849.       int var4 = (var1 + var3 - 1) / 7;
  850.       if (7 - var3 >= ((Calendar)this).getMinimalDaysInFirstWeek()) {
  851.          ++var4;
  852.       }
  853.  
  854.       return var4;
  855.    }
  856.  
  857.    private final int monthLength(int var1, int var2) {
  858.       return this.isLeapYear(var2) ? LEAP_MONTH_LENGTH[var1] : MONTH_LENGTH[var1];
  859.    }
  860.  
  861.    private final int monthLength(int var1) {
  862.       int var2 = ((Calendar)this).internalGet(1);
  863.       if (this.internalGetEra() == 0) {
  864.          var2 = 1 - var2;
  865.       }
  866.  
  867.       return this.monthLength(var1, var2);
  868.    }
  869.  
  870.    private final int prevMonthLength(int var1) {
  871.       return var1 > 1 ? this.monthLength(var1 - 1) : 31;
  872.    }
  873.  
  874.    private final int yearLength(int var1) {
  875.       return this.isLeapYear(var1) ? 366 : 365;
  876.    }
  877.  
  878.    private final int yearLength() {
  879.       return this.isLeapYear(((Calendar)this).internalGet(1)) ? 366 : 365;
  880.    }
  881.  
  882.    private final void pinDayOfMonth() {
  883.       int var1 = this.monthLength(((Calendar)this).internalGet(2));
  884.       int var2 = ((Calendar)this).internalGet(5);
  885.       if (var2 > var1) {
  886.          ((Calendar)this).set(5, var1);
  887.       }
  888.  
  889.    }
  890.  
  891.    private boolean validateFields() {
  892.       for(int var1 = 0; var1 < 17; ++var1) {
  893.          if (var1 != 5 && var1 != 6 && ((Calendar)this).isSet(var1) && !this.boundsCheck(((Calendar)this).internalGet(var1), var1)) {
  894.             return false;
  895.          }
  896.       }
  897.  
  898.       if (((Calendar)this).isSet(5)) {
  899.          int var2 = ((Calendar)this).internalGet(5);
  900.          if (var2 < this.getMinimum(5) || var2 > this.monthLength(((Calendar)this).internalGet(2))) {
  901.             return false;
  902.          }
  903.       }
  904.  
  905.       if (((Calendar)this).isSet(6)) {
  906.          int var3 = ((Calendar)this).internalGet(6);
  907.          if (var3 < 1 || var3 > this.yearLength()) {
  908.             return false;
  909.          }
  910.       }
  911.  
  912.       if (((Calendar)this).isSet(8) && 0 == ((Calendar)this).internalGet(8)) {
  913.          return false;
  914.       } else {
  915.          return true;
  916.       }
  917.    }
  918.  
  919.    private final boolean boundsCheck(int var1, int var2) {
  920.       return var1 >= this.getMinimum(var2) && var1 <= this.getMaximum(var2);
  921.    }
  922.  
  923.    private final long getEpochDay() {
  924.       ((Calendar)this).complete();
  925.       long var1 = super.time / 1000L + (long)((((Calendar)this).internalGet(15) + ((Calendar)this).internalGet(16)) / 1000);
  926.       return floorDivide(var1, 86400L);
  927.    }
  928.  
  929.    private final int internalGetEra() {
  930.       return ((Calendar)this).isSet(0) ? ((Calendar)this).internalGet(0) : 1;
  931.    }
  932. }
  933.