[01;34mwith[m Ada[31m.[mCalendar[31m.[mFormatting[31m;[m
[01;34mwith[m Ada[31m.[mStrings[31m.[mFixed[31m;[m
[01;34muse[m Ada[31m.[mStrings[31m;[m
[01;34mpackage[m [01;34mbody[m Libsens[31m.[mUtil [01;34mis[m
   
   [01;34mfunction[m [01;30mInteger_Image[m [31m([mValue [31m:[m [01;34min[m [32mInteger[m[31m)[m [01;34mreturn[m [32mString[m [01;34mis[m
   [01;34mbegin[m
      [01;34mif[m Value [31m<[m [35m0[m [01;34mthen[m
	 [01;34mreturn[m 
	   [31m'-'[m [31m&[m [32mInteger[m[31m'Image(Value)(Fixed.Index_Non_Blank(Integer'[m[01;30mImage[m[31m([mValue[31m)([m[35m2[m[31m..[m[32mInteger[m[31m'Image(Value)'[mLast[31m))..[m[32mInteger[m[31m'Image(Value)'[mLast[31m);[m
      [01;34melse[m
	 [01;34mreturn[m 
	   [32mInteger[m[31m'Image(Value)(Fixed.Index_Non_Blank(Integer'[m[01;30mImage[m[31m([mValue[31m))..[m[32mInteger[m[31m'Image(Value)'[mLast[31m);[m
      [01;34mend[m [01;34mif[m[31m;[m
   [01;34mend[m Integer_Image[31m;[m
   
      [01;34mprocedure[m [01;30mDifference_In_Years[m[31m([mTop_Date [31m:[m [01;34min[m Time[31m;[m
                                 Bot_Date [31m:[m [01;34min[m Time[31m;[m
                                 Years    [31m:[m [01;34mout[m Natural[31m;[m
                                 Months   [31m:[m [01;34mout[m Natural[31m;[m
                                 Days     [31m:[m [01;34mout[m Natural[31m;[m
                                 Houres   [31m:[m [01;34mout[m Natural[31m;[m
                                 Minutes  [31m:[m [01;34mout[m Natural[31m;[m
                                 Second   [31m:[m [01;34mout[m Natural[31m;[m
                                 Rest     [31m:[m [01;34mout[m [32mDuration[m[31m)[m [01;34mis[m      
      
      [01;34mfunction[m [01;30mIs_Leap_Year[m [31m([mYear [31m:[m [32mInteger[m[31m)[m [01;34mreturn[m [32mBoolean[m [01;34mis[m
      [01;34mbegin[m
         [01;34mreturn[m [31m([mYear [01;34mrem[m [35m4[m [31m=[m [35m0[m[31m)[m [01;34mand[m [31m(([mYear [01;34mrem[m [35m100[m [31m/=[m [35m0[m[31m)[m [01;34mor[m [31m([mYear [01;34mrem[m [35m16[m [31m=[m [35m0[m[31m));[m
      [01;34mend[m Is_Leap_Year[31m;[m
      
      [01;34mpragma[m [01;30mInline[m [31m([mIs_Leap_Year[31m);[m
      
      Days_Months_Count [31m:[m [01;34mconstant[m [01;34marray[m [31m([mMonth_Number[31m)[m [01;34mof[m Day_Number [31m:=[m [31m([m[35m31[m[31m,[m [35m28[m[31m,[m [35m31[m[31m,[m [35m30[m[31m,[m [35m31[m[31m,[m [35m30[m[31m,[m [35m31[m[31m,[m [35m31[m[31m,[m [35m30[m[31m,[m [35m31[m[31m,[m [35m30[m[31m,[m [35m31[m[31m);[m
      
      
      [01;34mfunction[m [01;30mLast_Days[m[31m([mYears [31m,[m Months [31m:[m [01;34min[m Natural[31m)[m [01;34mreturn[m Natural [01;34mis[m         
      [01;34mbegin[m         
         [01;34mif[m Months [31m=[m [35m1[m [01;34mthen[m
            [01;34mreturn[m [01;30mDays_Months_Count[m[31m([m[35m12[m[31m);[m
         [01;34melsif[m Months [31m/=[m [35m3[m [01;34mthen[m
            [01;34mreturn[m [01;30mDays_Months_Count[m[31m([mMonths[31m-[m[35m1[m[31m);[m
	 [01;34melsif[m [01;30mIs_Leap_Year[m[31m([mYears[31m)[m [01;34mthen[m
            [01;34mreturn[m [01;30mDays_Months_Count[m[31m([m[35m2[m[31m)[m [31m+[m [35m1[m[31m;[m
         [01;34melse[m
            [01;34mreturn[m [01;30mDays_Months_Count[m[31m([m[35m2[m[31m);[m
         [01;34mend[m [01;34mif[m[31m;[m
      [01;34mend[m Last_Days[31m;[m

      
      Top_Seconds [31m:[m [01;34mconstant[m Day_Duration [31m:=[m [01;30mSeconds[m[31m([mTop_Date[31m);[m
      Bot_Seconds [31m:[m [01;34mconstant[m Day_Duration [31m:=[m [01;30mSeconds[m[31m([mBot_Date[31m);[m
      Top_Day     [31m:[m [01;34mconstant[m Day_Number [31m:=[m [01;30mDay[m[31m([mTop_Date[31m);[m
      Bot_Day     [31m:[m [01;34mconstant[m Day_Number [31m:=[m [01;30mDay[m[31m([mBot_Date[31m);[m
      Top_Year    [31m:[m [01;34mconstant[m Year_Number [31m:=[m [01;30mYear[m[31m([mTop_Date[31m);[m
      Bot_Year    [31m:[m [01;34mconstant[m Year_Number [31m:=[m [01;30mYear[m[31m([mBot_Date[31m);[m
      Top_Month   [31m:[m [01;34mconstant[m Month_Number [31m:=[m [01;30mMonth[m[31m([mTop_Date[31m);[m
      Bot_Month   [31m:[m [01;34mconstant[m Month_Number [31m:=[m [01;30mMonth[m[31m([mBot_Date[31m);[m
      
      Years_Number  [31m:[m [32mInteger[m [31m:=[m [35m0[m[31m;[m
      Months_Number [31m:[m [32mInteger[m [31m:=[m [35m0[m[31m;[m
      Days_Number   [31m:[m [32mInteger[m [31m:=[m [35m0[m[31m;[m            
      
      Total_Duration [31m:[m [32mDuration[m [31m:=[m Bot_Seconds [31m-[m Top_Seconds[31m;[m
   [01;34mbegin[m
      
      [01;34mif[m Top_Date [31m>[m Bot_Date [01;34mthen[m
         [01;34mraise[m Constraint_Error[31m;[m
      [01;34mend[m [01;34mif[m[31m;[m
      
      Years    [31m:=[m [35m0[m[31m;[m
      Months   [31m:=[m [35m0[m[31m;[m
      Days     [31m:=[m [35m0[m[31m;[m
      Houres   [31m:=[m [35m0[m[31m;[m
      Minutes  [31m:=[m [35m0[m[31m;[m
      Second   [31m:=[m [35m0[m[31m;[m
      Rest     [31m:=[m [35m0.0[m[31m;[m
      
      Years_Number [31m:=[m [31m([mBot_Year [31m-[m Top_Year [31m-[m [35m1[m[31m);[m
      
      Months_Number [31m:=[m Bot_Month[31m;[m
      
      [01;34mif[m [31m([mBot_Month [31m>[m Top_Month[31m)[m [01;34mor[m [31m(([mBot_Month [31m=[m Top_Month[31m)[m [01;34mand[m [31m([mBot_Day [31m>=[m Top_Day[31m))[m [01;34mthen[m         

         Years_Number [31m:=[m Years_Number [31m+[m [35m1[m[31m;[m
         
      [01;34melse[m         
         Months_Number [31m:=[m Bot_Month [31m+[m [35m12[m[31m;[m
      [01;34mend[m [01;34mif[m[31m;[m
      
      Months_Number [31m:=[m [31m([mMonths_Number [31m-[m Top_Month [31m-[m [35m1[m[31m);[m
      
      [01;34mif[m Bot_Day [31m>=[m Top_Day [01;34mthen[m

         Months_Number [31m:=[m Months_Number [31m+[m [35m1[m[31m;[m
         Days_Number [31m:=[m Bot_Day [31m-[m Top_Day[31m;[m
      [01;34melse[m
         Days_Number [31m:=[m [01;30mLast_Days[m [31m([mBot_Year[31m,[m Bot_Month[31m);[m
	 Days_Number [31m:=[m Days_Number [31m-[m Top_Day[31m;[m
	 Days_Number [31m:=[m Days_Number [31m+[m Bot_Day[31m;[m
      [01;34mend[m [01;34mif[m[31m;[m
      Days [31m:=[m Days_Number[31m;[m
      Months [31m:=[m Months_Number[31m;[m
      Years [31m:=[m Years_Number[31m;[m
      
      [01;34mif[m Bot_Seconds [31m>=[m Top_seconds [01;34mthen[m
         Total_Duration [31m:=[m [31m([mBot_Seconds [31m-[m Top_Seconds[31m);[m
      [01;34melse[m
         Total_Duration [31m:=[m [31m([m[35m86400.0[m [31m-[m Top_Seconds[31m)[m [31m+[m Bot_Seconds[31m;[m
         Days [31m:=[m Days [31m-[m [35m1[m[31m;[m
      [01;34mend[m [01;34mif[m[31m;[m
      Formatting[31m.[m[01;30mSplit[m[31m([mTotal_Duration[31m,[m Houres[31m,[m Minutes[31m,[m Second[31m,[m Rest[31m);[m         
   [01;34mend[m Difference_In_Years[31m;[m

[01;34mend[m Libsens[31m.[mUtil[31m;[m
