Import initial revisions of existing project AndroidCaldavSyncAdapater, CALDAVSYNC_FORK

Tue, 10 Feb 2015 18:12:00 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Tue, 10 Feb 2015 18:12:00 +0100
changeset 0
fb9019fb1bf7
child 1
16922eb04d75

Import initial revisions of existing project AndroidCaldavSyncAdapater,
forked from upstream repository at 27e8a0f8495c92e0780d450bdf0c7cec77a03a55.

.classpath file | annotate | diff | comparison | revisions
.gitignore file | annotate | diff | comparison | revisions
.project file | annotate | diff | comparison | revisions
.settings/org.eclipse.jdt.core.prefs file | annotate | diff | comparison | revisions
AndroidManifest.xml file | annotate | diff | comparison | revisions
market/icon/icon.png file | annotate | diff | comparison | revisions
market/icon/icon.svg file | annotate | diff | comparison | revisions
market/screenshots/new_account.png file | annotate | diff | comparison | revisions
market/screenshots/new_account_7.png file | annotate | diff | comparison | revisions
market/screenshots/synchro.png file | annotate | diff | comparison | revisions
market/screenshots/synchro_7.png file | annotate | diff | comparison | revisions
proguard-project.txt file | annotate | diff | comparison | revisions
project.properties file | annotate | diff | comparison | revisions
res/drawable-hdpi/ic_launcher.png file | annotate | diff | comparison | revisions
res/drawable-ldpi/ic_launcher.png file | annotate | diff | comparison | revisions
res/drawable-mdpi/ic_launcher.png file | annotate | diff | comparison | revisions
res/drawable-xhdpi/ic_launcher.png file | annotate | diff | comparison | revisions
res/drawable/icon.png file | annotate | diff | comparison | revisions
res/layout/activity_authenticator.xml file | annotate | diff | comparison | revisions
res/menu/activity_authenticator.xml file | annotate | diff | comparison | revisions
res/values-de/strings_activity_authenticator.xml file | annotate | diff | comparison | revisions
res/values-large/styles.xml file | annotate | diff | comparison | revisions
res/values-v11/styles.xml file | annotate | diff | comparison | revisions
res/values-v14/styles.xml file | annotate | diff | comparison | revisions
res/values/strings.xml file | annotate | diff | comparison | revisions
res/values/strings_activity_authenticator.xml file | annotate | diff | comparison | revisions
res/values/styles.xml file | annotate | diff | comparison | revisions
res/xml/authenticator.xml file | annotate | diff | comparison | revisions
res/xml/syncadapter.xml file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/data/AbstractOutputter.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/data/CalendarBuilder.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/data/CalendarOutputter.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/data/CalendarParser.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/data/CalendarParserFactory.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/data/CalendarParserImpl.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/data/ContentHandler.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/data/DefaultCalendarParserFactory.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/data/FoldingWriter.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/data/HCalendarParser.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/data/HCalendarParserFactory.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/data/ParserException.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/data/UnfoldingReader.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/filter/AbstractDateRule.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/filter/ComponentRule.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/filter/DateInRangeRule.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/filter/Filter.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/filter/HasPropertyRule.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/filter/PeriodRule.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/filter/Rule.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/AbstractContentFactory.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/AddressList.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/Calendar.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/CalendarDateFormatFactory.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/CalendarException.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/Component.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/ComponentFactory.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/ComponentList.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/ConstraintViolationException.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/Content.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/Date.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/DateList.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/DateRange.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/DateTime.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/DefaultTimeZoneRegistryFactory.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/Dur.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/Escapable.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/IndexedComponentList.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/IndexedPropertyList.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/Iso8601.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/LocationTypeList.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/NumberList.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/Parameter.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/ParameterFactory.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/ParameterFactoryImpl.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/ParameterFactoryRegistry.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/ParameterList.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/Period.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/PeriodList.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/Property.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/PropertyFactory.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/PropertyFactoryImpl.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/PropertyFactoryRegistry.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/PropertyList.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/Recur.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/TextList.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/Time.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/TimeZone.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/TimeZoneRegistry.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/TimeZoneRegistryFactory.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/TimeZoneRegistryImpl.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/UtcOffset.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/ValidationException.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/Validator.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/WeekDay.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/WeekDayList.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/component/Available.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/component/CalendarComponent.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/component/Daylight.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/component/Observance.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/component/Standard.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/component/VAlarm.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/component/VAvailability.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/component/VEvent.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/component/VFreeBusy.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/component/VJournal.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/component/VTimeZone.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/component/VToDo.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/component/VVenue.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/component/XComponent.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/parameter/Abbrev.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/parameter/AltRep.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/parameter/Cn.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/parameter/CuType.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/parameter/DelegatedFrom.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/parameter/DelegatedTo.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/parameter/Dir.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/parameter/Encoding.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/parameter/FbType.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/parameter/FmtType.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/parameter/Language.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/parameter/Member.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/parameter/PartStat.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/parameter/Range.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/parameter/RelType.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/parameter/Related.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/parameter/Role.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/parameter/Rsvp.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/parameter/ScheduleAgent.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/parameter/ScheduleStatus.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/parameter/SentBy.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/parameter/Type.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/parameter/TzId.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/parameter/Value.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/parameter/Vvenue.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/parameter/XParameter.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/property/Action.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/property/Attach.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/property/Attendee.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/property/BusyType.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/property/CalScale.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/property/Categories.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/property/Clazz.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/property/Comment.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/property/Completed.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/property/Contact.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/property/Country.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/property/Created.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/property/DateListProperty.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/property/DateProperty.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/property/Description.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/property/DtEnd.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/property/DtStamp.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/property/DtStart.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/property/Due.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/property/Duration.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/property/ExDate.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/property/ExRule.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/property/ExtendedAddress.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/property/FreeBusy.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/property/Geo.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/property/LastModified.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/property/Locality.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/property/Location.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/property/LocationType.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/property/Method.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/property/Name.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/property/Organizer.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/property/PercentComplete.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/property/Postalcode.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/property/Priority.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/property/ProdId.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/property/RDate.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/property/RRule.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/property/RecurrenceId.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/property/Region.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/property/RelatedTo.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/property/Repeat.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/property/RequestStatus.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/property/Resources.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/property/Sequence.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/property/Status.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/property/StreetAddress.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/property/Summary.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/property/Tel.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/property/Transp.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/property/Trigger.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/property/TzId.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/property/TzName.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/property/TzOffsetFrom.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/property/TzOffsetTo.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/property/TzUrl.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/property/Uid.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/property/Url.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/property/UtcProperty.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/property/Version.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/property/XProperty.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/model/tz.alias file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/transform/PublishTransformer.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/transform/Transformer.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/util/Calendars.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/util/CompatibilityHints.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/util/ComponentValidator.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/util/Configurator.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/util/Constants.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/util/Dates.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/util/DecoderFactory.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/util/DefaultDecoderFactory.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/util/DefaultEncoderFactory.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/util/EncoderFactory.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/util/HostInfo.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/util/InetAddressHostInfo.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/util/Numbers.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/util/ParameterValidator.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/util/PropertyValidator.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/util/ResourceLoader.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/util/SimpleHostInfo.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/util/Strings.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/util/TimeZones.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/util/UidGenerator.java file | annotate | diff | comparison | revisions
src/net/fortuna/ical4j/util/Uris.java file | annotate | diff | comparison | revisions
src/org/gege/caldavsyncadapter/CalendarColors.java file | annotate | diff | comparison | revisions
src/org/gege/caldavsyncadapter/Event.java file | annotate | diff | comparison | revisions
src/org/gege/caldavsyncadapter/android/entities/AndroidEvent.java file | annotate | diff | comparison | revisions
src/org/gege/caldavsyncadapter/authenticator/AuthenticationService.java file | annotate | diff | comparison | revisions
src/org/gege/caldavsyncadapter/authenticator/Authenticator.java file | annotate | diff | comparison | revisions
src/org/gege/caldavsyncadapter/authenticator/AuthenticatorActivity.java file | annotate | diff | comparison | revisions
src/org/gege/caldavsyncadapter/caldav/CaldavFacade.java file | annotate | diff | comparison | revisions
src/org/gege/caldavsyncadapter/caldav/CaldavProtocolException.java file | annotate | diff | comparison | revisions
src/org/gege/caldavsyncadapter/caldav/CopyOfEasySSLSocketFactory.java file | annotate | diff | comparison | revisions
src/org/gege/caldavsyncadapter/caldav/EasySSLSocketFactory.java file | annotate | diff | comparison | revisions
src/org/gege/caldavsyncadapter/caldav/EasyX509TrustManager.java file | annotate | diff | comparison | revisions
src/org/gege/caldavsyncadapter/caldav/entities/CalendarEvent.java file | annotate | diff | comparison | revisions
src/org/gege/caldavsyncadapter/caldav/entities/CalendarList.java file | annotate | diff | comparison | revisions
src/org/gege/caldavsyncadapter/caldav/entities/DavCalendar.java file | annotate | diff | comparison | revisions
src/org/gege/caldavsyncadapter/caldav/http/HttpDelete.java file | annotate | diff | comparison | revisions
src/org/gege/caldavsyncadapter/caldav/http/HttpPropFind.java file | annotate | diff | comparison | revisions
src/org/gege/caldavsyncadapter/caldav/http/HttpPut.java file | annotate | diff | comparison | revisions
src/org/gege/caldavsyncadapter/caldav/http/HttpReport.java file | annotate | diff | comparison | revisions
src/org/gege/caldavsyncadapter/caldav/xml/CalendarHomeHandler.java file | annotate | diff | comparison | revisions
src/org/gege/caldavsyncadapter/caldav/xml/CalendarsHandler.java file | annotate | diff | comparison | revisions
src/org/gege/caldavsyncadapter/caldav/xml/MultiStatusHandler.java file | annotate | diff | comparison | revisions
src/org/gege/caldavsyncadapter/caldav/xml/ServerInfoHandler.java file | annotate | diff | comparison | revisions
src/org/gege/caldavsyncadapter/caldav/xml/sax/MultiStatus.java file | annotate | diff | comparison | revisions
src/org/gege/caldavsyncadapter/caldav/xml/sax/Prop.java file | annotate | diff | comparison | revisions
src/org/gege/caldavsyncadapter/caldav/xml/sax/PropStat.java file | annotate | diff | comparison | revisions
src/org/gege/caldavsyncadapter/caldav/xml/sax/Response.java file | annotate | diff | comparison | revisions
src/org/gege/caldavsyncadapter/syncadapter/SyncAdapter.java file | annotate | diff | comparison | revisions
src/org/gege/caldavsyncadapter/syncadapter/SyncService.java file | annotate | diff | comparison | revisions
src/org/gege/caldavsyncadapter/syncadapter/notifications/NotificationsHelper.java file | annotate | diff | comparison | revisions
src/zoneinfo-global/Africa/Abidjan.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Africa/Accra.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Africa/Addis_Ababa.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Africa/Algiers.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Africa/Asmara.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Africa/Bamako.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Africa/Bangui.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Africa/Banjul.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Africa/Bissau.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Africa/Blantyre.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Africa/Brazzaville.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Africa/Bujumbura.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Africa/Cairo.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Africa/Casablanca.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Africa/Ceuta.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Africa/Conakry.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Africa/Dakar.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Africa/Dar_es_Salaam.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Africa/Djibouti.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Africa/Douala.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Africa/El_Aaiun.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Africa/Freetown.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Africa/Gaborone.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Africa/Harare.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Africa/Johannesburg.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Africa/Juba.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Africa/Kampala.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Africa/Khartoum.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Africa/Kigali.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Africa/Kinshasa.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Africa/Lagos.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Africa/Libreville.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Africa/Lome.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Africa/Luanda.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Africa/Lubumbashi.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Africa/Lusaka.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Africa/Malabo.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Africa/Maputo.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Africa/Maseru.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Africa/Mbabane.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Africa/Mogadishu.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Africa/Monrovia.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Africa/Nairobi.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Africa/Ndjamena.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Africa/Niamey.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Africa/Nouakchott.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Africa/Ouagadougou.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Africa/Porto-Novo.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Africa/Sao_Tome.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Africa/Tripoli.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Africa/Tunis.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Africa/Windhoek.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Adak.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Anchorage.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Anguilla.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Antigua.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Araguaina.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Argentina/Buenos_Aires.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Argentina/Catamarca.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Argentina/Cordoba.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Argentina/Jujuy.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Argentina/La_Rioja.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Argentina/Mendoza.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Argentina/Rio_Gallegos.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Argentina/Salta.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Argentina/San_Juan.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Argentina/San_Luis.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Argentina/Tucuman.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Argentina/Ushuaia.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Aruba.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Asuncion.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Atikokan.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Bahia.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Bahia_Banderas.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Barbados.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Belem.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Belize.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Blanc-Sablon.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Boa_Vista.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Bogota.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Boise.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Cambridge_Bay.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Campo_Grande.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Cancun.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Caracas.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Cayenne.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Cayman.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Chicago.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Chihuahua.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Costa_Rica.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Cuiaba.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Curacao.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Danmarkshavn.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Dawson.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Dawson_Creek.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Denver.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Detroit.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Dominica.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Edmonton.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Eirunepe.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/El_Salvador.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Fortaleza.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Glace_Bay.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Godthab.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Goose_Bay.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Grand_Turk.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Grenada.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Guadeloupe.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Guatemala.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Guayaquil.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Guyana.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Halifax.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Havana.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Hermosillo.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Indiana/Indianapolis.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Indiana/Knox.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Indiana/Marengo.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Indiana/Petersburg.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Indiana/Tell_City.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Indiana/Vevay.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Indiana/Vincennes.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Indiana/Winamac.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Inuvik.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Iqaluit.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Jamaica.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Juneau.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Kentucky/Louisville.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Kentucky/Monticello.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Kralendijk.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/La_Paz.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Lima.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Los_Angeles.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Lower_Princes.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Maceio.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Managua.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Manaus.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Marigot.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Martinique.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Matamoros.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Mazatlan.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Menominee.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Merida.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Metlakatla.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Mexico_City.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Miquelon.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Moncton.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Monterrey.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Montevideo.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Montreal.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Montserrat.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Nassau.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/New_York.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Nipigon.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Nome.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Noronha.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/North_Dakota/Beulah.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/North_Dakota/Center.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/North_Dakota/New_Salem.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Ojinaga.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Panama.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Pangnirtung.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Paramaribo.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Phoenix.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Port-au-Prince.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Port_of_Spain.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Porto_Velho.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Puerto_Rico.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Rainy_River.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Rankin_Inlet.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Recife.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Regina.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Resolute.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Rio_Branco.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Santa_Isabel.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Santarem.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Santiago.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Santo_Domingo.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Sao_Paulo.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Scoresbysund.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Shiprock.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Sitka.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/St_Barthelemy.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/St_Johns.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/St_Kitts.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/St_Lucia.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/St_Thomas.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/St_Vincent.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Swift_Current.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Tegucigalpa.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Thule.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Thunder_Bay.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Tijuana.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Toronto.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Tortola.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Vancouver.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Whitehorse.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Winnipeg.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Yakutat.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/America/Yellowknife.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Antarctica/Casey.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Antarctica/Davis.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Antarctica/DumontDUrville.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Antarctica/Macquarie.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Antarctica/Mawson.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Antarctica/McMurdo.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Antarctica/Palmer.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Antarctica/Rothera.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Antarctica/South_Pole.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Antarctica/Syowa.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Antarctica/Vostok.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Arctic/Longyearbyen.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Aden.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Almaty.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Amman.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Anadyr.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Aqtau.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Aqtobe.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Ashgabat.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Baghdad.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Bahrain.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Baku.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Bangkok.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Beirut.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Bishkek.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Brunei.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Choibalsan.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Chongqing.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Colombo.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Damascus.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Dhaka.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Dili.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Dubai.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Dushanbe.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Gaza.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Harbin.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Hebron.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Ho_Chi_Minh.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Hong_Kong.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Hovd.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Irkutsk.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Istanbul.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Jakarta.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Jayapura.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Jerusalem.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Kabul.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Kamchatka.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Karachi.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Kashgar.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Kathmandu.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Kolkata.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Krasnoyarsk.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Kuala_Lumpur.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Kuching.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Kuwait.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Macau.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Magadan.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Makassar.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Manila.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Muscat.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Nicosia.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Novokuznetsk.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Novosibirsk.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Omsk.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Oral.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Phnom_Penh.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Pontianak.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Pyongyang.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Qatar.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Qyzylorda.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Rangoon.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Riyadh.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Sakhalin.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Samarkand.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Seoul.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Shanghai.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Singapore.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Taipei.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Tashkent.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Tbilisi.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Tehran.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Thimphu.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Tokyo.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Ulaanbaatar.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Urumqi.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Vientiane.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Vladivostok.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Yakutsk.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Yekaterinburg.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Asia/Yerevan.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Atlantic/Azores.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Atlantic/Bermuda.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Atlantic/Canary.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Atlantic/Cape_Verde.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Atlantic/Faroe.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Atlantic/Madeira.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Atlantic/Reykjavik.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Atlantic/South_Georgia.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Atlantic/St_Helena.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Atlantic/Stanley.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Australia/Adelaide.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Australia/Brisbane.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Australia/Broken_Hill.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Australia/Currie.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Australia/Darwin.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Australia/Eucla.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Australia/Hobart.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Australia/Lindeman.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Australia/Lord_Howe.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Australia/Melbourne.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Australia/Perth.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Australia/Sydney.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Europe/Amsterdam.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Europe/Andorra.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Europe/Athens.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Europe/Belgrade.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Europe/Berlin.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Europe/Bratislava.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Europe/Brussels.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Europe/Bucharest.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Europe/Budapest.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Europe/Chisinau.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Europe/Copenhagen.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Europe/Dublin.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Europe/Gibraltar.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Europe/Guernsey.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Europe/Helsinki.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Europe/Isle_of_Man.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Europe/Istanbul.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Europe/Jersey.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Europe/Kaliningrad.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Europe/Kiev.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Europe/Lisbon.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Europe/Ljubljana.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Europe/London.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Europe/Luxembourg.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Europe/Madrid.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Europe/Malta.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Europe/Mariehamn.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Europe/Minsk.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Europe/Monaco.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Europe/Moscow.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Europe/Nicosia.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Europe/Oslo.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Europe/Paris.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Europe/Podgorica.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Europe/Prague.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Europe/Riga.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Europe/Rome.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Europe/Samara.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Europe/San_Marino.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Europe/Sarajevo.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Europe/Simferopol.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Europe/Skopje.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Europe/Sofia.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Europe/Stockholm.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Europe/Tallinn.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Europe/Tirane.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Europe/Uzhgorod.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Europe/Vaduz.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Europe/Vatican.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Europe/Vienna.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Europe/Vilnius.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Europe/Volgograd.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Europe/Warsaw.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Europe/Zagreb.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Europe/Zaporozhye.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Europe/Zurich.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Indian/Antananarivo.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Indian/Chagos.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Indian/Christmas.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Indian/Cocos.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Indian/Comoro.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Indian/Kerguelen.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Indian/Mahe.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Indian/Maldives.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Indian/Mauritius.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Indian/Mayotte.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Indian/Reunion.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Pacific/Apia.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Pacific/Auckland.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Pacific/Chatham.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Pacific/Chuuk.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Pacific/Easter.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Pacific/Efate.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Pacific/Enderbury.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Pacific/Fakaofo.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Pacific/Fiji.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Pacific/Funafuti.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Pacific/Galapagos.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Pacific/Gambier.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Pacific/Guadalcanal.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Pacific/Guam.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Pacific/Honolulu.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Pacific/Johnston.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Pacific/Kiritimati.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Pacific/Kosrae.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Pacific/Kwajalein.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Pacific/Majuro.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Pacific/Marquesas.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Pacific/Midway.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Pacific/Nauru.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Pacific/Niue.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Pacific/Norfolk.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Pacific/Noumea.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Pacific/Pago_Pago.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Pacific/Palau.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Pacific/Pitcairn.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Pacific/Pohnpei.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Pacific/Port_Moresby.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Pacific/Rarotonga.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Pacific/Saipan.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Pacific/Tahiti.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Pacific/Tarawa.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Pacific/Tongatapu.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Pacific/Wake.ics file | annotate | diff | comparison | revisions
src/zoneinfo-global/Pacific/Wallis.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Africa/Abidjan.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Africa/Accra.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Africa/Addis_Ababa.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Africa/Algiers.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Africa/Asmara.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Africa/Bamako.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Africa/Bangui.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Africa/Banjul.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Africa/Bissau.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Africa/Blantyre.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Africa/Brazzaville.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Africa/Bujumbura.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Africa/Cairo.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Africa/Casablanca.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Africa/Ceuta.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Africa/Conakry.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Africa/Dakar.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Africa/Dar_es_Salaam.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Africa/Djibouti.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Africa/Douala.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Africa/El_Aaiun.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Africa/Freetown.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Africa/Gaborone.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Africa/Harare.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Africa/Johannesburg.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Africa/Juba.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Africa/Kampala.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Africa/Khartoum.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Africa/Kigali.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Africa/Kinshasa.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Africa/Lagos.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Africa/Libreville.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Africa/Lome.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Africa/Luanda.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Africa/Lubumbashi.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Africa/Lusaka.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Africa/Malabo.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Africa/Maputo.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Africa/Maseru.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Africa/Mbabane.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Africa/Mogadishu.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Africa/Monrovia.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Africa/Nairobi.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Africa/Ndjamena.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Africa/Niamey.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Africa/Nouakchott.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Africa/Ouagadougou.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Africa/Porto-Novo.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Africa/Sao_Tome.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Africa/Tripoli.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Africa/Tunis.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Africa/Windhoek.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Adak.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Anchorage.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Anguilla.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Antigua.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Araguaina.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Argentina/Buenos_Aires.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Argentina/Catamarca.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Argentina/Cordoba.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Argentina/Jujuy.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Argentina/La_Rioja.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Argentina/Mendoza.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Argentina/Rio_Gallegos.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Argentina/Salta.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Argentina/San_Juan.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Argentina/San_Luis.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Argentina/Tucuman.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Argentina/Ushuaia.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Aruba.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Asuncion.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Atikokan.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Bahia.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Bahia_Banderas.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Barbados.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Belem.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Belize.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Blanc-Sablon.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Boa_Vista.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Bogota.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Boise.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Cambridge_Bay.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Campo_Grande.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Cancun.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Caracas.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Cayenne.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Cayman.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Chicago.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Chihuahua.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Costa_Rica.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Cuiaba.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Curacao.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Danmarkshavn.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Dawson.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Dawson_Creek.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Denver.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Detroit.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Dominica.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Edmonton.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Eirunepe.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/El_Salvador.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Fortaleza.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Glace_Bay.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Godthab.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Goose_Bay.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Grand_Turk.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Grenada.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Guadeloupe.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Guatemala.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Guayaquil.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Guyana.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Halifax.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Havana.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Hermosillo.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Indiana/Indianapolis.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Indiana/Knox.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Indiana/Marengo.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Indiana/Petersburg.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Indiana/Tell_City.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Indiana/Vevay.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Indiana/Vincennes.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Indiana/Winamac.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Inuvik.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Iqaluit.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Jamaica.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Juneau.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Kentucky/Louisville.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Kentucky/Monticello.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Kralendijk.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/La_Paz.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Lima.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Los_Angeles.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Lower_Princes.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Maceio.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Managua.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Manaus.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Marigot.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Martinique.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Matamoros.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Mazatlan.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Menominee.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Merida.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Metlakatla.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Mexico_City.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Miquelon.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Moncton.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Monterrey.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Montevideo.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Montreal.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Montserrat.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Nassau.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/New_York.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Nipigon.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Nome.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Noronha.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/North_Dakota/Beulah.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/North_Dakota/Center.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/North_Dakota/New_Salem.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Ojinaga.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Panama.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Pangnirtung.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Paramaribo.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Phoenix.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Port-au-Prince.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Port_of_Spain.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Porto_Velho.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Puerto_Rico.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Rainy_River.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Rankin_Inlet.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Recife.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Regina.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Resolute.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Rio_Branco.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Santa_Isabel.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Santarem.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Santiago.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Santo_Domingo.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Sao_Paulo.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Scoresbysund.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Shiprock.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Sitka.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/St_Barthelemy.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/St_Johns.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/St_Kitts.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/St_Lucia.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/St_Thomas.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/St_Vincent.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Swift_Current.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Tegucigalpa.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Thule.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Thunder_Bay.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Tijuana.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Toronto.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Tortola.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Vancouver.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Whitehorse.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Winnipeg.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Yakutat.ics file | annotate | diff | comparison | revisions
src/zoneinfo/America/Yellowknife.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Antarctica/Casey.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Antarctica/Davis.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Antarctica/DumontDUrville.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Antarctica/Macquarie.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Antarctica/Mawson.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Antarctica/McMurdo.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Antarctica/Palmer.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Antarctica/Rothera.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Antarctica/South_Pole.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Antarctica/Syowa.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Antarctica/Vostok.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Arctic/Longyearbyen.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Aden.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Almaty.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Amman.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Anadyr.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Aqtau.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Aqtobe.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Ashgabat.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Baghdad.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Bahrain.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Baku.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Bangkok.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Beirut.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Bishkek.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Brunei.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Choibalsan.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Chongqing.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Colombo.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Damascus.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Dhaka.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Dili.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Dubai.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Dushanbe.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Gaza.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Harbin.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Hebron.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Ho_Chi_Minh.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Hong_Kong.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Hovd.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Irkutsk.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Istanbul.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Jakarta.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Jayapura.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Jerusalem.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Kabul.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Kamchatka.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Karachi.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Kashgar.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Kathmandu.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Kolkata.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Krasnoyarsk.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Kuala_Lumpur.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Kuching.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Kuwait.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Macau.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Magadan.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Makassar.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Manila.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Muscat.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Nicosia.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Novokuznetsk.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Novosibirsk.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Omsk.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Oral.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Phnom_Penh.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Pontianak.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Pyongyang.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Qatar.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Qyzylorda.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Rangoon.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Riyadh.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Sakhalin.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Samarkand.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Seoul.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Shanghai.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Singapore.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Taipei.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Tashkent.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Tbilisi.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Tehran.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Thimphu.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Tokyo.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Ulaanbaatar.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Urumqi.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Vientiane.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Vladivostok.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Yakutsk.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Yekaterinburg.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Asia/Yerevan.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Atlantic/Azores.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Atlantic/Bermuda.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Atlantic/Canary.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Atlantic/Cape_Verde.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Atlantic/Faroe.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Atlantic/Madeira.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Atlantic/Reykjavik.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Atlantic/South_Georgia.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Atlantic/St_Helena.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Atlantic/Stanley.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Australia/Adelaide.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Australia/Brisbane.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Australia/Broken_Hill.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Australia/Currie.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Australia/Darwin.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Australia/Eucla.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Australia/Hobart.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Australia/Lindeman.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Australia/Lord_Howe.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Australia/Melbourne.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Australia/Perth.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Australia/Sydney.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Europe/Amsterdam.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Europe/Andorra.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Europe/Athens.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Europe/Belgrade.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Europe/Berlin.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Europe/Bratislava.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Europe/Brussels.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Europe/Bucharest.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Europe/Budapest.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Europe/Chisinau.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Europe/Copenhagen.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Europe/Dublin.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Europe/Gibraltar.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Europe/Guernsey.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Europe/Helsinki.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Europe/Isle_of_Man.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Europe/Istanbul.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Europe/Jersey.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Europe/Kaliningrad.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Europe/Kiev.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Europe/Lisbon.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Europe/Ljubljana.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Europe/London.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Europe/Luxembourg.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Europe/Madrid.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Europe/Malta.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Europe/Mariehamn.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Europe/Minsk.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Europe/Monaco.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Europe/Moscow.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Europe/Nicosia.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Europe/Oslo.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Europe/Paris.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Europe/Podgorica.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Europe/Prague.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Europe/Riga.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Europe/Rome.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Europe/Samara.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Europe/San_Marino.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Europe/Sarajevo.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Europe/Simferopol.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Europe/Skopje.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Europe/Sofia.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Europe/Stockholm.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Europe/Tallinn.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Europe/Tirane.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Europe/Uzhgorod.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Europe/Vaduz.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Europe/Vatican.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Europe/Vienna.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Europe/Vilnius.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Europe/Volgograd.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Europe/Warsaw.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Europe/Zagreb.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Europe/Zaporozhye.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Europe/Zurich.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Indian/Antananarivo.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Indian/Chagos.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Indian/Christmas.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Indian/Cocos.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Indian/Comoro.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Indian/Kerguelen.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Indian/Mahe.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Indian/Maldives.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Indian/Mauritius.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Indian/Mayotte.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Indian/Reunion.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Pacific/Apia.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Pacific/Auckland.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Pacific/Chatham.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Pacific/Chuuk.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Pacific/Easter.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Pacific/Efate.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Pacific/Enderbury.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Pacific/Fakaofo.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Pacific/Fiji.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Pacific/Funafuti.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Pacific/Galapagos.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Pacific/Gambier.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Pacific/Guadalcanal.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Pacific/Guam.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Pacific/Honolulu.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Pacific/Johnston.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Pacific/Kiritimati.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Pacific/Kosrae.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Pacific/Kwajalein.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Pacific/Majuro.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Pacific/Marquesas.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Pacific/Midway.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Pacific/Nauru.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Pacific/Niue.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Pacific/Norfolk.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Pacific/Noumea.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Pacific/Pago_Pago.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Pacific/Palau.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Pacific/Pitcairn.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Pacific/Pohnpei.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Pacific/Port_Moresby.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Pacific/Rarotonga.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Pacific/Saipan.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Pacific/Tahiti.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Pacific/Tarawa.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Pacific/Tongatapu.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Pacific/Wake.ics file | annotate | diff | comparison | revisions
src/zoneinfo/Pacific/Wallis.ics file | annotate | diff | comparison | revisions
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/.classpath	Tue Feb 10 18:12:00 2015 +0100
     1.3 @@ -0,0 +1,9 @@
     1.4 +<?xml version="1.0" encoding="UTF-8"?>
     1.5 +<classpath>
     1.6 +	<classpathentry kind="src" path="src"/>
     1.7 +	<classpathentry kind="src" path="gen"/>
     1.8 +	<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
     1.9 +	<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
    1.10 +	<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
    1.11 +	<classpathentry kind="output" path="bin/classes"/>
    1.12 +</classpath>
     2.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.2 +++ b/.gitignore	Tue Feb 10 18:12:00 2015 +0100
     2.3 @@ -0,0 +1,11 @@
     2.4 +gen
     2.5 +proguard/
     2.6 +bin
     2.7 +local.properties
     2.8 +
     2.9 +# Ant
    2.10 +build.xml
    2.11 +
    2.12 +# Android Studio
    2.13 +.idea
    2.14 +CalDAVSyncAdapter.iml
     3.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.2 +++ b/.project	Tue Feb 10 18:12:00 2015 +0100
     3.3 @@ -0,0 +1,33 @@
     3.4 +<?xml version="1.0" encoding="UTF-8"?>
     3.5 +<projectDescription>
     3.6 +	<name>CalDAVSyncAdapter</name>
     3.7 +	<comment></comment>
     3.8 +	<projects>
     3.9 +	</projects>
    3.10 +	<buildSpec>
    3.11 +		<buildCommand>
    3.12 +			<name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name>
    3.13 +			<arguments>
    3.14 +			</arguments>
    3.15 +		</buildCommand>
    3.16 +		<buildCommand>
    3.17 +			<name>com.android.ide.eclipse.adt.PreCompilerBuilder</name>
    3.18 +			<arguments>
    3.19 +			</arguments>
    3.20 +		</buildCommand>
    3.21 +		<buildCommand>
    3.22 +			<name>org.eclipse.jdt.core.javabuilder</name>
    3.23 +			<arguments>
    3.24 +			</arguments>
    3.25 +		</buildCommand>
    3.26 +		<buildCommand>
    3.27 +			<name>com.android.ide.eclipse.adt.ApkBuilder</name>
    3.28 +			<arguments>
    3.29 +			</arguments>
    3.30 +		</buildCommand>
    3.31 +	</buildSpec>
    3.32 +	<natures>
    3.33 +		<nature>com.android.ide.eclipse.adt.AndroidNature</nature>
    3.34 +		<nature>org.eclipse.jdt.core.javanature</nature>
    3.35 +	</natures>
    3.36 +</projectDescription>
     4.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.2 +++ b/.settings/org.eclipse.jdt.core.prefs	Tue Feb 10 18:12:00 2015 +0100
     4.3 @@ -0,0 +1,4 @@
     4.4 +eclipse.preferences.version=1
     4.5 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
     4.6 +org.eclipse.jdt.core.compiler.compliance=1.6
     4.7 +org.eclipse.jdt.core.compiler.source=1.6
     5.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     5.2 +++ b/AndroidManifest.xml	Tue Feb 10 18:12:00 2015 +0100
     5.3 @@ -0,0 +1,55 @@
     5.4 +<?xml version="1.0" encoding="utf-8"?>
     5.5 +<manifest xmlns:android="http://schemas.android.com/apk/res/android"
     5.6 +    package="org.gege.caldavsyncadapter"
     5.7 +    android:versionCode="18"
     5.8 +    android:versionName="1.8.1" >
     5.9 +
    5.10 +    <uses-sdk
    5.11 +        android:minSdkVersion="14"
    5.12 +        android:targetSdkVersion="19" />
    5.13 +
    5.14 +    <uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />
    5.15 +    <uses-permission android:name="android.permission.READ_CALENDAR" />
    5.16 +    <uses-permission android:name="android.permission.WRITE_CALENDAR" />
    5.17 +    <uses-permission android:name="android.permission.INTERNET" />
    5.18 +
    5.19 +    <application
    5.20 +        android:allowBackup="true"
    5.21 +        android:icon="@drawable/ic_launcher"
    5.22 +        android:label="@string/app_name"
    5.23 +        android:theme="@style/AppTheme" >
    5.24 +        <service
    5.25 +            android:name="org.gege.caldavsyncadapter.syncadapter.SyncService"
    5.26 +            android:exported="true" >
    5.27 +            <intent-filter>
    5.28 +                <action android:name="android.content.SyncAdapter" />
    5.29 +            </intent-filter>
    5.30 +
    5.31 +            <meta-data
    5.32 +                android:name="android.content.SyncAdapter"
    5.33 +                android:resource="@xml/syncadapter" />
    5.34 +        </service>
    5.35 +        <service
    5.36 +            android:name="org.gege.caldavsyncadapter.authenticator.AuthenticationService"
    5.37 +            android:exported="true" >
    5.38 +            <intent-filter>
    5.39 +                <action android:name="android.accounts.AccountAuthenticator" />
    5.40 +            </intent-filter>
    5.41 +
    5.42 +            <meta-data
    5.43 +                android:name="android.accounts.AccountAuthenticator"
    5.44 +                android:resource="@xml/authenticator" />
    5.45 +        </service>
    5.46 +
    5.47 +        <activity
    5.48 +            android:name="org.gege.caldavsyncadapter.authenticator.AuthenticatorActivity"
    5.49 +            android:label="@string/title_activity_authenticator"
    5.50 +            android:windowSoftInputMode="adjustResize|stateVisible" >
    5.51 +        </activity>
    5.52 +        <activity
    5.53 +            android:name="org.gege.caldavsyncadapter.SyncStatusReportActivity"
    5.54 +            android:label="@string/title_activity_sync_status_report" >
    5.55 +        </activity>
    5.56 +    </application>
    5.57 +
    5.58 +</manifest>
    5.59 \ No newline at end of file
     6.1 Binary file market/icon/icon.png has changed
     7.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     7.2 +++ b/market/icon/icon.svg	Tue Feb 10 18:12:00 2015 +0100
     7.3 @@ -0,0 +1,262 @@
     7.4 +<?xml version="1.0" encoding="UTF-8" standalone="no"?>
     7.5 +<!-- Created with Inkscape (http://www.inkscape.org/) -->
     7.6 +
     7.7 +<svg
     7.8 +   xmlns:dc="http://purl.org/dc/elements/1.1/"
     7.9 +   xmlns:cc="http://creativecommons.org/ns#"
    7.10 +   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    7.11 +   xmlns:svg="http://www.w3.org/2000/svg"
    7.12 +   xmlns="http://www.w3.org/2000/svg"
    7.13 +   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
    7.14 +   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
    7.15 +   width="512"
    7.16 +   height="512"
    7.17 +   id="svg2"
    7.18 +   version="1.1"
    7.19 +   inkscape:version="0.48.3.1 r9886"
    7.20 +   sodipodi:docname="New document 1">
    7.21 +  <defs
    7.22 +     id="defs4">
    7.23 +    <marker
    7.24 +       inkscape:stockid="Arrow1Sstart"
    7.25 +       orient="auto"
    7.26 +       refY="0.0"
    7.27 +       refX="0.0"
    7.28 +       id="Arrow1Sstart"
    7.29 +       style="overflow:visible">
    7.30 +      <path
    7.31 +         id="path3973"
    7.32 +         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
    7.33 +         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
    7.34 +         transform="scale(0.2) translate(6,0)" />
    7.35 +    </marker>
    7.36 +    <marker
    7.37 +       inkscape:stockid="Arrow2Mstart"
    7.38 +       orient="auto"
    7.39 +       refY="0.0"
    7.40 +       refX="0.0"
    7.41 +       id="Arrow2Mstart"
    7.42 +       style="overflow:visible">
    7.43 +      <path
    7.44 +         id="path3985"
    7.45 +         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round"
    7.46 +         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
    7.47 +         transform="scale(0.6) translate(0,0)" />
    7.48 +    </marker>
    7.49 +  </defs>
    7.50 +  <sodipodi:namedview
    7.51 +     id="base"
    7.52 +     pagecolor="#ffffff"
    7.53 +     bordercolor="#666666"
    7.54 +     borderopacity="1.0"
    7.55 +     inkscape:pageopacity="0.0"
    7.56 +     inkscape:pageshadow="2"
    7.57 +     inkscape:zoom="1.0488281"
    7.58 +     inkscape:cx="342.03815"
    7.59 +     inkscape:cy="256.47672"
    7.60 +     inkscape:document-units="px"
    7.61 +     inkscape:current-layer="layer1"
    7.62 +     showgrid="false"
    7.63 +     inkscape:window-width="1366"
    7.64 +     inkscape:window-height="716"
    7.65 +     inkscape:window-x="-8"
    7.66 +     inkscape:window-y="-8"
    7.67 +     inkscape:window-maximized="1" />
    7.68 +  <metadata
    7.69 +     id="metadata7">
    7.70 +    <rdf:RDF>
    7.71 +      <cc:Work
    7.72 +         rdf:about="">
    7.73 +        <dc:format>image/svg+xml</dc:format>
    7.74 +        <dc:type
    7.75 +           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
    7.76 +        <dc:title></dc:title>
    7.77 +      </cc:Work>
    7.78 +    </rdf:RDF>
    7.79 +  </metadata>
    7.80 +  <g
    7.81 +     inkscape:label="Layer 1"
    7.82 +     inkscape:groupmode="layer"
    7.83 +     id="layer1"
    7.84 +     transform="translate(0,-540.36218)">
    7.85 +    <rect
    7.86 +       style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-opacity:1"
    7.87 +       id="rect2985"
    7.88 +       width="448.11917"
    7.89 +       height="372.79703"
    7.90 +       x="29.556799"
    7.91 +       y="611.87054" />
    7.92 +    <rect
    7.93 +       style="fill:#55d400;fill-opacity:1;stroke:#000000;stroke-width:0.45917881;stroke-opacity:1"
    7.94 +       id="rect2985-1"
    7.95 +       width="448.11917"
    7.96 +       height="78.602455"
    7.97 +       x="29.286386"
    7.98 +       y="609.487" />
    7.99 +    <g
   7.100 +       id="g5205"
   7.101 +       transform="translate(-2.8603352,-9.5344507)">
   7.102 +      <rect
   7.103 +         y="731.05121"
   7.104 +         x="149.90132"
   7.105 +         height="55.299812"
   7.106 +         width="55.299812"
   7.107 +         id="rect3773"
   7.108 +         style="fill:none;stroke:#55d400;stroke-width:10;stroke-miterlimit:4;stroke-opacity:0.61290325;stroke-dasharray:none" />
   7.109 +      <rect
   7.110 +         y="731.05121"
   7.111 +         x="69.601494"
   7.112 +         height="55.299812"
   7.113 +         width="55.299812"
   7.114 +         id="rect3773-4"
   7.115 +         style="fill:none;stroke:#55d400;stroke-width:10;stroke-miterlimit:4;stroke-opacity:0.61290325;stroke-dasharray:none" />
   7.116 +      <rect
   7.117 +         y="891.65082"
   7.118 +         x="390.80072"
   7.119 +         height="55.299812"
   7.120 +         width="55.299812"
   7.121 +         id="rect3773-4-9"
   7.122 +         style="fill:none;stroke:#55d400;stroke-width:10;stroke-miterlimit:4;stroke-opacity:0.61290325;stroke-dasharray:none" />
   7.123 +      <rect
   7.124 +         y="891.65082"
   7.125 +         x="310.50092"
   7.126 +         height="55.299812"
   7.127 +         width="55.299812"
   7.128 +         id="rect3773-4-4"
   7.129 +         style="fill:none;stroke:#55d400;stroke-width:10;stroke-miterlimit:4;stroke-opacity:0.61290325;stroke-dasharray:none" />
   7.130 +      <rect
   7.131 +         y="891.65082"
   7.132 +         x="230.20113"
   7.133 +         height="55.299812"
   7.134 +         width="55.299812"
   7.135 +         id="rect3773-4-8"
   7.136 +         style="fill:none;stroke:#55d400;stroke-width:10;stroke-miterlimit:4;stroke-opacity:0.61290325;stroke-dasharray:none" />
   7.137 +      <rect
   7.138 +         y="891.65082"
   7.139 +         x="149.90132"
   7.140 +         height="55.299812"
   7.141 +         width="55.299812"
   7.142 +         id="rect3773-4-82"
   7.143 +         style="fill:none;stroke:#55d400;stroke-width:10;stroke-miterlimit:4;stroke-opacity:0.61290325;stroke-dasharray:none" />
   7.144 +      <rect
   7.145 +         y="891.65082"
   7.146 +         x="69.601494"
   7.147 +         height="55.299812"
   7.148 +         width="55.299812"
   7.149 +         id="rect3773-4-45"
   7.150 +         style="fill:none;stroke:#55d400;stroke-width:10;stroke-miterlimit:4;stroke-opacity:0.61290325;stroke-dasharray:none" />
   7.151 +      <rect
   7.152 +         y="811.35101"
   7.153 +         x="390.80072"
   7.154 +         height="55.299812"
   7.155 +         width="55.299812"
   7.156 +         id="rect3773-4-1"
   7.157 +         style="fill:none;stroke:#55d400;stroke-width:10;stroke-miterlimit:4;stroke-opacity:0.61290325;stroke-dasharray:none" />
   7.158 +      <rect
   7.159 +         y="811.35101"
   7.160 +         x="310.50092"
   7.161 +         height="55.299812"
   7.162 +         width="55.299812"
   7.163 +         id="rect3773-4-7"
   7.164 +         style="fill:none;stroke:#55d400;stroke-width:10;stroke-miterlimit:4;stroke-opacity:0.61290325;stroke-dasharray:none" />
   7.165 +      <rect
   7.166 +         y="811.35101"
   7.167 +         x="230.20113"
   7.168 +         height="55.299812"
   7.169 +         width="55.299812"
   7.170 +         id="rect3773-4-11"
   7.171 +         style="fill:none;stroke:#55d400;stroke-width:10;stroke-miterlimit:4;stroke-opacity:0.61290325;stroke-dasharray:none" />
   7.172 +      <rect
   7.173 +         y="811.35101"
   7.174 +         x="149.90132"
   7.175 +         height="55.299812"
   7.176 +         width="55.299812"
   7.177 +         id="rect3773-4-52"
   7.178 +         style="fill:none;stroke:#55d400;stroke-width:10;stroke-miterlimit:4;stroke-opacity:0.61290325;stroke-dasharray:none" />
   7.179 +      <rect
   7.180 +         y="811.35101"
   7.181 +         x="69.601494"
   7.182 +         height="55.299812"
   7.183 +         width="55.299812"
   7.184 +         id="rect3773-4-76"
   7.185 +         style="fill:none;stroke:#55d400;stroke-width:10;stroke-miterlimit:4;stroke-opacity:0.61290325;stroke-dasharray:none" />
   7.186 +      <rect
   7.187 +         y="731.05121"
   7.188 +         x="390.80072"
   7.189 +         height="55.299812"
   7.190 +         width="55.299812"
   7.191 +         id="rect3773-4-2"
   7.192 +         style="fill:none;stroke:#55d400;stroke-width:10;stroke-miterlimit:4;stroke-opacity:0.61290325;stroke-dasharray:none" />
   7.193 +      <rect
   7.194 +         y="731.05121"
   7.195 +         x="310.50092"
   7.196 +         height="55.299812"
   7.197 +         width="55.299812"
   7.198 +         id="rect3773-4-3"
   7.199 +         style="fill:none;stroke:#55d400;stroke-width:10;stroke-miterlimit:4;stroke-opacity:0.61290325;stroke-dasharray:none" />
   7.200 +      <rect
   7.201 +         y="731.05121"
   7.202 +         x="230.20113"
   7.203 +         height="55.299812"
   7.204 +         width="55.299812"
   7.205 +         id="rect3773-4-22"
   7.206 +         style="fill:none;stroke:#55d400;stroke-width:10;stroke-miterlimit:4;stroke-opacity:0.61290325;stroke-dasharray:none" />
   7.207 +    </g>
   7.208 +    <text
   7.209 +       xml:space="preserve"
   7.210 +       style="font-size:40px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Bold"
   7.211 +       x="61.020481"
   7.212 +       y="660.49628"
   7.213 +       id="text3951"
   7.214 +       sodipodi:linespacing="125%"><tspan
   7.215 +         sodipodi:role="line"
   7.216 +         id="tspan3953"
   7.217 +         x="61.020481"
   7.218 +         y="660.49628">January</tspan></text>
   7.219 +    <g
   7.220 +       id="g5227"
   7.221 +       transform="translate(-304.14898,16.208566)">
   7.222 +      <g
   7.223 +         style="stroke-width:14.98063374;stroke-miterlimit:4;stroke-dasharray:none"
   7.224 +         transform="matrix(1.1680549,0,0,1.1680549,-100.08393,-126.11543)"
   7.225 +         id="g5141">
   7.226 +        <path
   7.227 +           sodipodi:type="arc"
   7.228 +           style="fill:none;stroke:#ff0b00;stroke-width:14.98063374;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:none"
   7.229 +           id="path3955"
   7.230 +           sodipodi:cx="643.09869"
   7.231 +           sodipodi:cy="268.39478"
   7.232 +           sodipodi:rx="69.124763"
   7.233 +           sodipodi:ry="69.124763"
   7.234 +           d="m 712.22346,268.39478 c 0,38.17655 -30.94821,69.12476 -69.12477,69.12476 -38.17655,0 -69.12476,-30.94821 -69.12476,-69.12476 0,-1e-5 0,-1e-5 0,-1e-5"
   7.235 +           transform="translate(0,540.36218)"
   7.236 +           sodipodi:start="0"
   7.237 +           sodipodi:end="3.1415927"
   7.238 +           sodipodi:open="true" />
   7.239 +      </g>
   7.240 +      <path
   7.241 +         inkscape:connector-curvature="0"
   7.242 +         id="path5139"
   7.243 +         d="m 736.45244,806.47724 -35.63764,28.95559 51.22911,14.47778 z"
   7.244 +         style="fill:#ff0b00;fill-opacity:1;stroke:none" />
   7.245 +      <path
   7.246 +         sodipodi:open="true"
   7.247 +         sodipodi:end="3.1415927"
   7.248 +         sodipodi:start="0"
   7.249 +         transform="matrix(-1.1680549,0,0,-1.1680549,1404.7908,1114.4448)"
   7.250 +         d="m 712.22346,268.39478 c 0,38.17655 -30.94821,69.12476 -69.12477,69.12476 -38.17655,0 -69.12476,-30.94821 -69.12476,-69.12476 0,-1e-5 0,-1e-5 0,-1e-5"
   7.251 +         sodipodi:ry="69.124763"
   7.252 +         sodipodi:rx="69.124763"
   7.253 +         sodipodi:cy="268.39478"
   7.254 +         sodipodi:cx="643.09869"
   7.255 +         id="path3955-8"
   7.256 +         style="fill:none;stroke:#ff0b00;stroke-width:14.98022366;stroke-linecap:butt;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:none"
   7.257 +         sodipodi:type="arc" />
   7.258 +      <path
   7.259 +         inkscape:connector-curvature="0"
   7.260 +         id="path5139-5"
   7.261 +         d="m 567.08552,810.68725 35.63764,-28.95559 -51.22911,-14.47779 z"
   7.262 +         style="fill:#ff0b00;fill-opacity:1;stroke:none" />
   7.263 +    </g>
   7.264 +  </g>
   7.265 +</svg>
     8.1 Binary file market/screenshots/new_account.png has changed
     9.1 Binary file market/screenshots/new_account_7.png has changed
    10.1 Binary file market/screenshots/synchro.png has changed
    11.1 Binary file market/screenshots/synchro_7.png has changed
    12.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    12.2 +++ b/proguard-project.txt	Tue Feb 10 18:12:00 2015 +0100
    12.3 @@ -0,0 +1,38 @@
    12.4 +# To enable ProGuard in your project, edit project.properties
    12.5 +# to define the proguard.config property as described in that file.
    12.6 +#
    12.7 +# Add project specific ProGuard rules here.
    12.8 +# By default, the flags in this file are appended to flags specified
    12.9 +# in ${sdk.dir}/tools/proguard/proguard-android.txt
   12.10 +# You can edit the include path and order by changing the ProGuard
   12.11 +# include property in project.properties.
   12.12 +#
   12.13 +# For more details, see
   12.14 +#   http://developer.android.com/guide/developing/tools/proguard.html
   12.15 +
   12.16 +# Add any project specific keep options here:
   12.17 +-verbose
   12.18 +
   12.19 +-dontobfuscate
   12.20 +
   12.21 +-assumenosideeffects class android.util.Log {
   12.22 +    public static *** d(...);
   12.23 +    public static *** v(...);
   12.24 +}
   12.25 +
   12.26 +-libraryjars libs/backport-util-concurrent-3.1.jar
   12.27 +-libraryjars libs/commons-codec-1.5.jar
   12.28 +-libraryjars libs/commons-lang-2.6.jar
   12.29 +-libraryjars libs/commons-logging-1.1.1.jar
   12.30 +
   12.31 +
   12.32 +-dontwarn org.apache.**
   12.33 +-dontwarn sun.**
   12.34 +
   12.35 +
   12.36 +# If your project uses WebView with JS, uncomment the following
   12.37 +# and specify the fully qualified class name to the JavaScript interface
   12.38 +# class:
   12.39 +#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
   12.40 +#   public *;
   12.41 +#}
    13.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    13.2 +++ b/project.properties	Tue Feb 10 18:12:00 2015 +0100
    13.3 @@ -0,0 +1,14 @@
    13.4 +# This file is automatically generated by Android Tools.
    13.5 +# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
    13.6 +#
    13.7 +# This file must be checked in Version Control Systems.
    13.8 +#
    13.9 +# To customize properties used by the Ant build system edit
   13.10 +# "ant.properties", and override values to adapt the script to your
   13.11 +# project structure.
   13.12 +#
   13.13 +# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
   13.14 +proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
   13.15 +
   13.16 +# Project target.
   13.17 +target=android-18
    14.1 Binary file res/drawable-hdpi/ic_launcher.png has changed
    15.1 Binary file res/drawable-ldpi/ic_launcher.png has changed
    16.1 Binary file res/drawable-mdpi/ic_launcher.png has changed
    17.1 Binary file res/drawable-xhdpi/ic_launcher.png has changed
    18.1 Binary file res/drawable/icon.png has changed
    19.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    19.2 +++ b/res/layout/activity_authenticator.xml	Tue Feb 10 18:12:00 2015 +0100
    19.3 @@ -0,0 +1,103 @@
    19.4 +<merge xmlns:android="http://schemas.android.com/apk/res/android"
    19.5 +    xmlns:tools="http://schemas.android.com/tools"
    19.6 +    tools:context=".AuthenticatorActivity" >
    19.7 +
    19.8 +    <!-- Login progress -->
    19.9 +
   19.10 +    <LinearLayout
   19.11 +        android:id="@+id/login_status"
   19.12 +        android:layout_width="wrap_content"
   19.13 +        android:layout_height="wrap_content"
   19.14 +        android:layout_gravity="center"
   19.15 +        android:gravity="center_horizontal"
   19.16 +        android:orientation="vertical"
   19.17 +        android:visibility="gone" >
   19.18 +
   19.19 +        <ProgressBar
   19.20 +            style="?android:attr/progressBarStyleLarge"
   19.21 +            android:layout_width="wrap_content"
   19.22 +            android:layout_height="wrap_content"
   19.23 +            android:layout_marginBottom="8dp" />
   19.24 +
   19.25 +        <TextView
   19.26 +            android:id="@+id/login_status_message"
   19.27 +            android:layout_width="wrap_content"
   19.28 +            android:layout_height="wrap_content"
   19.29 +            android:layout_marginBottom="16dp"
   19.30 +            android:fontFamily="sans-serif-light"
   19.31 +            android:text="@string/login_progress_signing_in"
   19.32 +            android:textAppearance="?android:attr/textAppearanceMedium" />
   19.33 +    </LinearLayout>
   19.34 +
   19.35 +    <!-- Login form -->
   19.36 +
   19.37 +    <ScrollView
   19.38 +        android:id="@+id/login_form"
   19.39 +        android:layout_width="match_parent"
   19.40 +        android:layout_height="match_parent" >
   19.41 +
   19.42 +        <LinearLayout
   19.43 +            style="@style/LoginFormContainer"
   19.44 +            android:orientation="vertical" >
   19.45 +
   19.46 +            <EditText
   19.47 +                android:id="@+id/user"
   19.48 +                android:layout_width="match_parent"
   19.49 +                android:layout_height="wrap_content"
   19.50 +                android:hint="@string/prompt_user"
   19.51 +                android:inputType="text"
   19.52 +                android:maxLines="1"
   19.53 +                android:singleLine="true" />
   19.54 +
   19.55 +            <EditText
   19.56 +                android:id="@+id/password"
   19.57 +                android:layout_width="match_parent"
   19.58 +                android:layout_height="wrap_content"
   19.59 +                android:hint="@string/prompt_password"
   19.60 +                android:imeActionId="@+id/login"
   19.61 +                android:imeActionLabel="@string/action_sign_in_short"
   19.62 +                android:imeOptions="actionUnspecified"
   19.63 +                android:inputType="textPassword"
   19.64 +                android:maxLines="1"
   19.65 +                android:singleLine="true" />
   19.66 +
   19.67 +            <EditText
   19.68 +                android:id="@+id/url"
   19.69 +                android:layout_width="match_parent"
   19.70 +                android:layout_height="wrap_content"
   19.71 +                android:ems="10"
   19.72 +                android:hint="@string/prompt_url"
   19.73 +                android:inputType="textUri" >
   19.74 +
   19.75 +                <requestFocus />
   19.76 +            </EditText>
   19.77 +
   19.78 +            <EditText
   19.79 +                android:id="@+id/accountname"
   19.80 +                android:layout_width="match_parent"
   19.81 +                android:layout_height="wrap_content"
   19.82 +                android:hint="@string/prompt_accountname"
   19.83 +                android:inputType="text"
   19.84 +                android:maxLines="1"
   19.85 +                android:singleLine="true" />
   19.86 +
   19.87 +            <Button
   19.88 +                android:id="@+id/sign_in_button"
   19.89 +                android:layout_width="wrap_content"
   19.90 +                android:layout_height="wrap_content"
   19.91 +                android:layout_gravity="right"
   19.92 +                android:layout_marginTop="16dp"
   19.93 +                android:paddingLeft="32dp"
   19.94 +                android:paddingRight="32dp"
   19.95 +                android:text="@string/action_sign_in_register" />
   19.96 +
   19.97 +            <TextView
   19.98 +                android:id="@+id/sign_in_note_accountname"
   19.99 +                android:layout_width="wrap_content"
  19.100 +                android:layout_height="wrap_content"
  19.101 +                android:text="@string/action_sign_in_note_accountname" />
  19.102 +
  19.103 +        </LinearLayout>
  19.104 +    </ScrollView>
  19.105 +
  19.106 +</merge>
  19.107 \ No newline at end of file
    20.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    20.2 +++ b/res/menu/activity_authenticator.xml	Tue Feb 10 18:12:00 2015 +0100
    20.3 @@ -0,0 +1,8 @@
    20.4 +<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    20.5 +
    20.6 +    <item
    20.7 +        android:id="@+id/menu_forgot_password"
    20.8 +        android:showAsAction="never"
    20.9 +        android:title="@string/menu_forgot_password"/>
   20.10 +
   20.11 +</menu>
   20.12 \ No newline at end of file
    21.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    21.2 +++ b/res/values-de/strings_activity_authenticator.xml	Tue Feb 10 18:12:00 2015 +0100
    21.3 @@ -0,0 +1,29 @@
    21.4 +<resources>
    21.5 +
    21.6 +    <string name="title_activity_authenticator">Anmelden</string>
    21.7 +
    21.8 +    <!-- Strings related to login -->
    21.9 +    <string name="prompt_user">Benutzer</string>
   21.10 +    <string name="prompt_password">Passwort</string>
   21.11 +    <string name="prompt_accountname">Accountname (optional)</string>
   21.12 +    <string name="action_sign_in_register"><b>Anmelden</b> oder registrieren</string>
   21.13 +    <string name="action_sign_in_short">Anmelden</string>
   21.14 +    <string name="action_sign_in_note_accountname">Hinweis: Der Accountname wird auch als Emailadresse des Organisators verwendet.</string>
   21.15 +    <string name="menu_forgot_password">Passwort wiederherstellen</string>
   21.16 +    <string name="login_progress_signing_in">Teste Verbindung…</string>
   21.17 +    <string name="error_invalid_email">Diese E-Mail Adresse ist ungültig</string>
   21.18 +    <string name="error_invalid_password">Das Passwort ist zu kurz</string>
   21.19 +    <string name="error_incorrect_password">Das Passwort ist falsch</string>
   21.20 +    <string name="error_field_required">Dieses Feld wird benötigt</string>
   21.21 +    <string name="prompt_url">URL</string>
   21.22 +    <string name="error_incorrect_url_format">Das Format des URL ist falsch</string>
   21.23 +    <string name="error_invalid_server_answer">Ungültige Server Antwort, URL überprufen</string>
   21.24 +    <string name="error_wrong_url">Falsche URL</string>
   21.25 +    <string name="error_connection_refused">Verbindungsaufbau verweigert</string>
   21.26 +    <string name="error_unkown_error">Unbekannter Fehler</string>
   21.27 +    <string name="error_account_already_in_use" >Account bereits in Verwendung</string>
   21.28 +    <string name="success_calendar">Verbindung erfolgreich (Kalender)</string>
   21.29 +    <string name="success_collection">Verbindung erfolgreich (mehrere Kalender)</string>
   21.30 +    
   21.31 +
   21.32 +</resources>
   21.33 \ No newline at end of file
    22.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    22.2 +++ b/res/values-large/styles.xml	Tue Feb 10 18:12:00 2015 +0100
    22.3 @@ -0,0 +1,10 @@
    22.4 +<resources>
    22.5 +
    22.6 +    <style name="LoginFormContainer">
    22.7 +        <item name="android:layout_width">400dp</item>
    22.8 +        <item name="android:layout_height">wrap_content</item>
    22.9 +        <item name="android:layout_gravity">center</item>
   22.10 +        <item name="android:padding">16dp</item>
   22.11 +    </style>
   22.12 +
   22.13 +</resources>
   22.14 \ No newline at end of file
    23.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    23.2 +++ b/res/values-v11/styles.xml	Tue Feb 10 18:12:00 2015 +0100
    23.3 @@ -0,0 +1,11 @@
    23.4 +<resources>
    23.5 +
    23.6 +    <!--
    23.7 +        Base application theme for API 11+. This theme completely replaces
    23.8 +        AppBaseTheme from res/values/styles.xml on API 11+ devices.
    23.9 +    -->
   23.10 +    <style name="AppBaseTheme" parent="android:Theme.Holo.Light">
   23.11 +        <!-- API 11 theme customizations can go here. -->
   23.12 +    </style>
   23.13 +
   23.14 +</resources>
   23.15 \ No newline at end of file
    24.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    24.2 +++ b/res/values-v14/styles.xml	Tue Feb 10 18:12:00 2015 +0100
    24.3 @@ -0,0 +1,12 @@
    24.4 +<resources>
    24.5 +
    24.6 +    <!--
    24.7 +        Base application theme for API 14+. This theme completely replaces
    24.8 +        AppBaseTheme from BOTH res/values/styles.xml and
    24.9 +        res/values-v11/styles.xml on API 14+ devices.
   24.10 +    -->
   24.11 +    <style name="AppBaseTheme" parent="android:Theme.Holo.Light.DarkActionBar">
   24.12 +        <!-- API 14 theme customizations can go here. -->
   24.13 +    </style>
   24.14 +
   24.15 +</resources>
   24.16 \ No newline at end of file
    25.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    25.2 +++ b/res/values/strings.xml	Tue Feb 10 18:12:00 2015 +0100
    25.3 @@ -0,0 +1,10 @@
    25.4 +<?xml version="1.0" encoding="utf-8"?>
    25.5 +<resources>
    25.6 +
    25.7 +    <string name="app_name">CalDAV Sync Adapter</string>
    25.8 +    <string name="label">CalDav Sync Adapter</string>
    25.9 +    <string name="hello_world">Hello world!</string>
   25.10 +    <string name="menu_settings">Settings</string>
   25.11 +    <string name="title_activity_sync_status_report">Caldav Sync Status</string>
   25.12 +
   25.13 +</resources>
   25.14 \ No newline at end of file
    26.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    26.2 +++ b/res/values/strings_activity_authenticator.xml	Tue Feb 10 18:12:00 2015 +0100
    26.3 @@ -0,0 +1,29 @@
    26.4 +<resources>
    26.5 +
    26.6 +    <string name="title_activity_authenticator">Sign in</string>
    26.7 +
    26.8 +    <!-- Strings related to login -->
    26.9 +    <string name="prompt_user">User</string>
   26.10 +    <string name="prompt_password">Password</string>
   26.11 +    <string name="prompt_accountname">Account name (optional)</string>
   26.12 +    <string name="action_sign_in_register"><b>Sign in</b> or register</string>
   26.13 +    <string name="action_sign_in_short">Login</string>
   26.14 +    <string name="action_sign_in_note_accountname">Note: The account name is also used as an email address of the organizer.</string>
   26.15 +    <string name="menu_forgot_password">Recover lost password</string>
   26.16 +    <string name="login_progress_signing_in">Testing connection…</string>
   26.17 +    <string name="error_invalid_email">This email address is invalid</string>
   26.18 +    <string name="error_invalid_password">This password is too short</string>
   26.19 +    <string name="error_incorrect_password">This password is incorrect</string>
   26.20 +    <string name="error_field_required">This field is required</string>
   26.21 +    <string name="prompt_url">URL</string>
   26.22 +    <string name="error_incorrect_url_format">The format of the URL is wrong</string>
   26.23 +    <string name="error_invalid_server_answer">Invalid server answer, check URL</string>
   26.24 +    <string name="error_wrong_url">Wrong URL</string>
   26.25 +    <string name="error_connection_refused">Connection refused</string>
   26.26 +    <string name="error_unkown_error">Unknown error</string>
   26.27 +    <string name="error_account_already_in_use">Account already added</string>
   26.28 +    <string name="success_calendar">Connection success (calendar)</string>
   26.29 +    <string name="success_collection">Connection success (multiple calendars)</string>
   26.30 +    
   26.31 +
   26.32 +</resources>
   26.33 \ No newline at end of file
    27.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    27.2 +++ b/res/values/styles.xml	Tue Feb 10 18:12:00 2015 +0100
    27.3 @@ -0,0 +1,27 @@
    27.4 +<?xml version="1.0" encoding="utf-8"?>
    27.5 +<resources>
    27.6 +
    27.7 +    <!--
    27.8 +        Base application theme, dependent on API level. This theme is replaced
    27.9 +        by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
   27.10 +    -->
   27.11 +    <style name="AppBaseTheme" parent="android:Theme.Light">
   27.12 +        <!--
   27.13 +            Theme customizations available in newer API levels can go in
   27.14 +            res/values-vXX/styles.xml, while customizations related to
   27.15 +            backward-compatibility can go here.
   27.16 +        -->
   27.17 +    </style>
   27.18 +
   27.19 +    <!-- Application theme. -->
   27.20 +    <style name="AppTheme" parent="AppBaseTheme">
   27.21 +        <!-- All customizations that are NOT specific to a particular API-level can go here. -->
   27.22 +    </style>
   27.23 +
   27.24 +    <style name="LoginFormContainer">
   27.25 +        <item name="android:layout_width">match_parent</item>
   27.26 +        <item name="android:layout_height">wrap_content</item>
   27.27 +        <item name="android:padding">16dp</item>
   27.28 +    </style>
   27.29 +
   27.30 +</resources>
   27.31 \ No newline at end of file
    28.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    28.2 +++ b/res/xml/authenticator.xml	Tue Feb 10 18:12:00 2015 +0100
    28.3 @@ -0,0 +1,28 @@
    28.4 +<?xml version="1.0" encoding="utf-8"?>
    28.5 +<!--
    28.6 +/**
    28.7 + * Copyright (c) 2010, The Android Open Source Project
    28.8 + *
    28.9 + * Licensed under the Apache License, Version 2.0 (the "License");
   28.10 + * you may not use this file except in compliance with the License.
   28.11 + * You may obtain a copy of the License at
   28.12 + *
   28.13 + *     http://www.apache.org/licenses/LICENSE-2.0
   28.14 + *
   28.15 + * Unless required by applicable law or agreed to in writing, software
   28.16 + * distributed under the License is distributed on an "AS IS" BASIS,
   28.17 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   28.18 + * See the License for the specific language governing permissions and
   28.19 + * limitations under the License.
   28.20 + */
   28.21 +-->
   28.22 +
   28.23 +<!-- The attributes in this XML file provide configuration information -->
   28.24 +<!-- for the Account Manager. -->
   28.25 +
   28.26 +<account-authenticator xmlns:android="http://schemas.android.com/apk/res/android"
   28.27 +    android:accountType="org.gege.caldavsyncadapter.account"
   28.28 +    android:icon="@drawable/icon"
   28.29 +    android:smallIcon="@drawable/icon"
   28.30 +    android:label="@string/label"
   28.31 +/>
    29.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    29.2 +++ b/res/xml/syncadapter.xml	Tue Feb 10 18:12:00 2015 +0100
    29.3 @@ -0,0 +1,11 @@
    29.4 +<?xml version="1.0" encoding="utf-8"?>
    29.5 + 
    29.6 +<sync-adapter xmlns:android="http://schemas.android.com/apk/res/android"
    29.7 +    android:contentAuthority="com.android.calendar"
    29.8 +    android:accountType="org.gege.caldavsyncadapter.account"
    29.9 +    android:userVisible="true"
   29.10 +    android:supportsUploading="true"
   29.11 +    android:allowParallelSyncs="true"
   29.12 +    android:isAlwaysSyncable="true"
   29.13 +   
   29.14 +/>
   29.15 \ No newline at end of file
    30.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    30.2 +++ b/src/net/fortuna/ical4j/data/AbstractOutputter.java	Tue Feb 10 18:12:00 2015 +0100
    30.3 @@ -0,0 +1,102 @@
    30.4 +/**
    30.5 + * Copyright (c) 2012, Ben Fortuna
    30.6 + * All rights reserved.
    30.7 + *
    30.8 + * Redistribution and use in source and binary forms, with or without
    30.9 + * modification, are permitted provided that the following conditions
   30.10 + * are met:
   30.11 + *
   30.12 + *  o Redistributions of source code must retain the above copyright
   30.13 + * notice, this list of conditions and the following disclaimer.
   30.14 + *
   30.15 + *  o Redistributions in binary form must reproduce the above copyright
   30.16 + * notice, this list of conditions and the following disclaimer in the
   30.17 + * documentation and/or other materials provided with the distribution.
   30.18 + *
   30.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
   30.20 + * may be used to endorse or promote products derived from this software
   30.21 + * without specific prior written permission.
   30.22 + *
   30.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   30.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   30.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   30.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
   30.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   30.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   30.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   30.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   30.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   30.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   30.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   30.34 + */
   30.35 +package net.fortuna.ical4j.data;
   30.36 +
   30.37 +import java.nio.charset.Charset;
   30.38 +
   30.39 +import net.fortuna.ical4j.util.CompatibilityHints;
   30.40 +
   30.41 +/**
   30.42 + * Base class for model outputters.
   30.43 + * 
   30.44 + * <pre>
   30.45 + * $Id$
   30.46 + *
   30.47 + * Created on 29/12/2008
   30.48 + * </pre>
   30.49 + * 
   30.50 + * @author Ben
   30.51 + *
   30.52 + */
   30.53 +public abstract class AbstractOutputter {
   30.54 +
   30.55 +    /**
   30.56 +     * The default character set used to generate output.
   30.57 +     */
   30.58 +    protected static final Charset DEFAULT_CHARSET = Charset.forName("UTF-8");
   30.59 +
   30.60 +    private boolean validating;
   30.61 +
   30.62 +    /**
   30.63 +     * The maximum line length allowed.
   30.64 +     */
   30.65 +    protected int foldLength;
   30.66 +
   30.67 +    /**
   30.68 +     * Default constructor.
   30.69 +     */
   30.70 +    public AbstractOutputter() {
   30.71 +        this(true);
   30.72 +    }
   30.73 +
   30.74 +    /**
   30.75 +     * @param validating indicates whether to validate calendar when outputting to stream
   30.76 +     */
   30.77 +    public AbstractOutputter(final boolean validating) {
   30.78 +        this(validating, CompatibilityHints.isHintEnabled(CompatibilityHints.KEY_OUTLOOK_COMPATIBILITY)
   30.79 +                ? FoldingWriter.MAX_FOLD_LENGTH
   30.80 +                        : FoldingWriter.REDUCED_FOLD_LENGTH);
   30.81 +    }
   30.82 +
   30.83 +    /**
   30.84 +     * @param validating indicates whether to validate calendar when outputting to stream
   30.85 +     * @param foldLength maximum number of characters before a line is folded
   30.86 +     */
   30.87 +    public AbstractOutputter(final boolean validating, final int foldLength) {
   30.88 +        this.validating = validating;
   30.89 +        this.foldLength = foldLength;
   30.90 +    }
   30.91 +
   30.92 +    /**
   30.93 +     * @return Returns the validating.
   30.94 +     */
   30.95 +    public final boolean isValidating() {
   30.96 +        return validating;
   30.97 +    }
   30.98 +
   30.99 +    /**
  30.100 +     * @param validating The validating to set.
  30.101 +     */
  30.102 +    public final void setValidating(final boolean validating) {
  30.103 +        this.validating = validating;
  30.104 +    }
  30.105 +}
    31.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    31.2 +++ b/src/net/fortuna/ical4j/data/CalendarBuilder.java	Tue Feb 10 18:12:00 2015 +0100
    31.3 @@ -0,0 +1,435 @@
    31.4 +/**
    31.5 + * Copyright (c) 2012, Ben Fortuna
    31.6 + * All rights reserved.
    31.7 + *
    31.8 + * Redistribution and use in source and binary forms, with or without
    31.9 + * modification, are permitted provided that the following conditions
   31.10 + * are met:
   31.11 + *
   31.12 + *  o Redistributions of source code must retain the above copyright
   31.13 + * notice, this list of conditions and the following disclaimer.
   31.14 + *
   31.15 + *  o Redistributions in binary form must reproduce the above copyright
   31.16 + * notice, this list of conditions and the following disclaimer in the
   31.17 + * documentation and/or other materials provided with the distribution.
   31.18 + *
   31.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
   31.20 + * may be used to endorse or promote products derived from this software
   31.21 + * without specific prior written permission.
   31.22 + *
   31.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   31.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   31.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   31.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
   31.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   31.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   31.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   31.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   31.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   31.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   31.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   31.34 + */
   31.35 +package net.fortuna.ical4j.data;
   31.36 +
   31.37 +import java.io.IOException;
   31.38 +import java.io.InputStream;
   31.39 +import java.io.InputStreamReader;
   31.40 +import java.io.Reader;
   31.41 +import java.net.URISyntaxException;
   31.42 +import java.nio.charset.Charset;
   31.43 +import java.text.ParseException;
   31.44 +import java.util.ArrayList;
   31.45 +import java.util.Iterator;
   31.46 +import java.util.List;
   31.47 +
   31.48 +import net.fortuna.ical4j.model.Calendar;
   31.49 +import net.fortuna.ical4j.model.CalendarException;
   31.50 +import net.fortuna.ical4j.model.Component;
   31.51 +import net.fortuna.ical4j.model.ComponentFactory;
   31.52 +import net.fortuna.ical4j.model.Escapable;
   31.53 +import net.fortuna.ical4j.model.Parameter;
   31.54 +import net.fortuna.ical4j.model.ParameterFactory;
   31.55 +import net.fortuna.ical4j.model.ParameterFactoryRegistry;
   31.56 +import net.fortuna.ical4j.model.Property;
   31.57 +import net.fortuna.ical4j.model.PropertyFactory;
   31.58 +import net.fortuna.ical4j.model.PropertyFactoryRegistry;
   31.59 +import net.fortuna.ical4j.model.TimeZone;
   31.60 +import net.fortuna.ical4j.model.TimeZoneRegistry;
   31.61 +import net.fortuna.ical4j.model.TimeZoneRegistryFactory;
   31.62 +import net.fortuna.ical4j.model.component.VAvailability;
   31.63 +import net.fortuna.ical4j.model.component.VEvent;
   31.64 +import net.fortuna.ical4j.model.component.VTimeZone;
   31.65 +import net.fortuna.ical4j.model.component.VToDo;
   31.66 +import net.fortuna.ical4j.model.parameter.TzId;
   31.67 +import net.fortuna.ical4j.model.property.DateListProperty;
   31.68 +import net.fortuna.ical4j.model.property.DateProperty;
   31.69 +import net.fortuna.ical4j.model.property.XProperty;
   31.70 +import net.fortuna.ical4j.util.CompatibilityHints;
   31.71 +import net.fortuna.ical4j.util.Constants;
   31.72 +import net.fortuna.ical4j.util.Strings;
   31.73 +
   31.74 +import org.apache.commons.logging.Log;
   31.75 +import org.apache.commons.logging.LogFactory;
   31.76 +
   31.77 +/**
   31.78 + * Parses and builds an iCalendar model from an input stream. Note that this class is not thread-safe.
   31.79 + * @version 2.0
   31.80 + * @author Ben Fortuna
   31.81 + * 
   31.82 + * <pre>
   31.83 + * $Id$
   31.84 + *
   31.85 + * Created: Apr 5, 2004
   31.86 + * </pre>
   31.87 + *
   31.88 + */
   31.89 +public class CalendarBuilder {
   31.90 +
   31.91 +    private static final Charset DEFAULT_CHARSET = Charset.forName("UTF-8");
   31.92 +
   31.93 +    private final CalendarParser parser;
   31.94 +    
   31.95 +    private final ContentHandler contentHandler;
   31.96 +
   31.97 +    private final TimeZoneRegistry tzRegistry;
   31.98 +    
   31.99 +    private List datesMissingTimezones;
  31.100 +
  31.101 +    /**
  31.102 +     * The calendar instance created by the builder.
  31.103 +     */
  31.104 +    protected Calendar calendar;
  31.105 +
  31.106 +    /**
  31.107 +     * The current component instance created by the builder.
  31.108 +     */
  31.109 +    protected Component component;
  31.110 +
  31.111 +    /**
  31.112 +     * The current sub-component instance created by the builder.
  31.113 +     */
  31.114 +    protected Component subComponent;
  31.115 +
  31.116 +    /**
  31.117 +     * The current property instance created by the builder.
  31.118 +     */
  31.119 +    protected Property property;
  31.120 +
  31.121 +    /**
  31.122 +     * Default constructor.
  31.123 +     */
  31.124 +    public CalendarBuilder() {
  31.125 +        this(CalendarParserFactory.getInstance().createParser(), new PropertyFactoryRegistry(),
  31.126 +                new ParameterFactoryRegistry(), TimeZoneRegistryFactory.getInstance().createRegistry());
  31.127 +    }
  31.128 +
  31.129 +    /**
  31.130 +     * Constructs a new calendar builder using the specified calendar parser.
  31.131 +     * @param parser a calendar parser used to parse calendar files
  31.132 +     */
  31.133 +    public CalendarBuilder(final CalendarParser parser) {
  31.134 +        this(parser, new PropertyFactoryRegistry(), new ParameterFactoryRegistry(),
  31.135 +                TimeZoneRegistryFactory.getInstance().createRegistry());
  31.136 +    }
  31.137 +
  31.138 +    /**
  31.139 +     * Constructs a new calendar builder using the specified timezone registry.
  31.140 +     * @param tzRegistry a timezone registry to populate with discovered timezones
  31.141 +     */
  31.142 +    public CalendarBuilder(final TimeZoneRegistry tzRegistry) {
  31.143 +        this(CalendarParserFactory.getInstance().createParser(), new PropertyFactoryRegistry(),
  31.144 +                new ParameterFactoryRegistry(), tzRegistry);
  31.145 +    }
  31.146 +
  31.147 +    /**
  31.148 +     * Constructs a new instance using the specified parser and registry.
  31.149 +     * @param parser a calendar parser used to construct the calendar
  31.150 +     * @param tzRegistry a timezone registry used to retrieve {@link TimeZone}s and
  31.151 +     *  register additional timezone information found
  31.152 +     * in the calendar
  31.153 +     */
  31.154 +    public CalendarBuilder(CalendarParser parser, TimeZoneRegistry tzRegistry) {
  31.155 +        this(parser, new PropertyFactoryRegistry(), new ParameterFactoryRegistry(), tzRegistry);
  31.156 +    }
  31.157 +    
  31.158 +    /**
  31.159 +     * @param parser a custom calendar parser
  31.160 +     * @param propertyFactoryRegistry registry for non-standard property factories
  31.161 +     * @param parameterFactoryRegistry registry for non-standard parameter factories
  31.162 +     * @param tzRegistry a custom timezone registry
  31.163 +     */
  31.164 +    public CalendarBuilder(CalendarParser parser, PropertyFactoryRegistry propertyFactoryRegistry,
  31.165 +            ParameterFactoryRegistry parameterFactoryRegistry, TimeZoneRegistry tzRegistry) {
  31.166 +
  31.167 +        this.parser = parser;
  31.168 +        this.tzRegistry = tzRegistry;
  31.169 +        this.contentHandler = new ContentHandlerImpl(ComponentFactory.getInstance(),
  31.170 +                propertyFactoryRegistry, parameterFactoryRegistry);
  31.171 +    }
  31.172 +
  31.173 +    /**
  31.174 +     * Builds an iCalendar model from the specified input stream.
  31.175 +     * @param in an input stream to read calendar data from
  31.176 +     * @return a calendar parsed from the specified input stream
  31.177 +     * @throws IOException where an error occurs reading data from the specified stream
  31.178 +     * @throws ParserException where an error occurs parsing data from the stream
  31.179 +     */
  31.180 +    public Calendar build(final InputStream in) throws IOException,
  31.181 +            ParserException {
  31.182 +        return build(new InputStreamReader(in, DEFAULT_CHARSET));
  31.183 +    }
  31.184 +
  31.185 +    /**
  31.186 +     * Builds an iCalendar model from the specified reader. An <code>UnfoldingReader</code> is applied to the
  31.187 +     * specified reader to ensure the data stream is correctly unfolded where appropriate.
  31.188 +     * @param in a reader to read calendar data from
  31.189 +     * @return a calendar parsed from the specified reader
  31.190 +     * @throws IOException where an error occurs reading data from the specified reader
  31.191 +     * @throws ParserException where an error occurs parsing data from the reader
  31.192 +     */
  31.193 +    public Calendar build(final Reader in) throws IOException, ParserException {
  31.194 +        return build(new UnfoldingReader(in));
  31.195 +    }
  31.196 +
  31.197 +    /**
  31.198 +     * Build an iCalendar model by parsing data from the specified reader.
  31.199 +     * @param uin an unfolding reader to read data from
  31.200 +     * @return a calendar parsed from the specified reader
  31.201 +     * @throws IOException where an error occurs reading data from the specified reader
  31.202 +     * @throws ParserException where an error occurs parsing data from the reader
  31.203 +     */
  31.204 +    public Calendar build(final UnfoldingReader uin) throws IOException,
  31.205 +            ParserException {
  31.206 +        // re-initialise..
  31.207 +        calendar = null;
  31.208 +        component = null;
  31.209 +        subComponent = null;
  31.210 +        property = null;
  31.211 +        datesMissingTimezones = new ArrayList();
  31.212 +
  31.213 +        parser.parse(uin, contentHandler);
  31.214 +
  31.215 +        if (datesMissingTimezones.size() > 0 && tzRegistry != null) {
  31.216 +            resolveTimezones();
  31.217 +        }
  31.218 +        
  31.219 +        return calendar;
  31.220 +    }
  31.221 +
  31.222 +    private class ContentHandlerImpl implements ContentHandler {
  31.223 +
  31.224 +        private final ComponentFactory componentFactory;
  31.225 +        
  31.226 +        private final PropertyFactory propertyFactory;
  31.227 +        
  31.228 +        private final ParameterFactory parameterFactory;
  31.229 +        
  31.230 +        public ContentHandlerImpl(ComponentFactory componentFactory, PropertyFactory propertyFactory,
  31.231 +                ParameterFactory parameterFactory) {
  31.232 +            
  31.233 +            this.componentFactory = componentFactory;
  31.234 +            this.propertyFactory = propertyFactory;
  31.235 +            this.parameterFactory = parameterFactory;
  31.236 +        }
  31.237 +        
  31.238 +        public void endCalendar() {
  31.239 +            // do nothing..
  31.240 +        }
  31.241 +
  31.242 +        public void endComponent(final String name) {
  31.243 +            assertComponent(component);
  31.244 +
  31.245 +            if (subComponent != null) {
  31.246 +                if (component instanceof VTimeZone) {
  31.247 +                    ((VTimeZone) component).getObservances().add(subComponent);
  31.248 +                }
  31.249 +                else if (component instanceof VEvent) {
  31.250 +                    ((VEvent) component).getAlarms().add(subComponent);
  31.251 +                }
  31.252 +                else if (component instanceof VToDo) {
  31.253 +                    ((VToDo) component).getAlarms().add(subComponent);
  31.254 +                }
  31.255 +                else if (component instanceof VAvailability) {
  31.256 +                    ((VAvailability) component).getAvailable().add(subComponent);
  31.257 +                }
  31.258 +                subComponent = null;
  31.259 +            }
  31.260 +            else {
  31.261 +                calendar.getComponents().add(component);
  31.262 +                if (component instanceof VTimeZone && tzRegistry != null) {
  31.263 +                    // register the timezone for use with iCalendar objects..
  31.264 +                    tzRegistry.register(new TimeZone((VTimeZone) component));
  31.265 +                }
  31.266 +                component = null;
  31.267 +            }
  31.268 +        }
  31.269 +
  31.270 +        public void endProperty(final String name) {
  31.271 +            assertProperty(property);
  31.272 +            
  31.273 +            // replace with a constant instance if applicable..
  31.274 +            property = Constants.forProperty(property);
  31.275 +            if (component != null) {
  31.276 +                if (subComponent != null) {
  31.277 +                    subComponent.getProperties().add(property);
  31.278 +                }
  31.279 +                else {
  31.280 +                    component.getProperties().add(property);
  31.281 +                }
  31.282 +            }
  31.283 +            else if (calendar != null) {
  31.284 +                calendar.getProperties().add(property);
  31.285 +            }
  31.286 +
  31.287 +            property = null;
  31.288 +        }
  31.289 +
  31.290 +        public void parameter(final String name, final String value) throws URISyntaxException {
  31.291 +            assertProperty(property);
  31.292 +
  31.293 +            // parameter names are case-insensitive, but convert to upper case to simplify further processing
  31.294 +            final Parameter param = parameterFactory.createParameter(name.toUpperCase(), Strings.escapeNewline(value));
  31.295 +            property.getParameters().add(param);
  31.296 +            if (param instanceof TzId && tzRegistry != null && !(property instanceof XProperty)) {
  31.297 +                final TimeZone timezone = tzRegistry.getTimeZone(param.getValue());
  31.298 +                if (timezone != null) {
  31.299 +                    updateTimeZone(property, timezone);
  31.300 +                } else {
  31.301 +                    // VTIMEZONE may be defined later, so so keep
  31.302 +                    // track of dates until all components have been
  31.303 +                    // parsed, and then try again later
  31.304 +                    datesMissingTimezones.add(property);
  31.305 +                }
  31.306 +            }
  31.307 +        }
  31.308 +        
  31.309 +        /**
  31.310 +         * {@inheritDoc}
  31.311 +         */
  31.312 +        public void propertyValue(final String value) throws URISyntaxException,
  31.313 +                ParseException, IOException {
  31.314 +            
  31.315 +            assertProperty(property);
  31.316 +
  31.317 +            if (property instanceof Escapable) {
  31.318 +                property.setValue(Strings.unescape(value));
  31.319 +            }
  31.320 +            else {
  31.321 +                property.setValue(value);
  31.322 +            }
  31.323 +        }
  31.324 +
  31.325 +        /**
  31.326 +         * {@inheritDoc}
  31.327 +         */
  31.328 +        public void startCalendar() {
  31.329 +            calendar = new Calendar();
  31.330 +        }
  31.331 +
  31.332 +        /**
  31.333 +         * {@inheritDoc}
  31.334 +         */
  31.335 +        public void startComponent(final String name) {
  31.336 +            if (component != null) {
  31.337 +                subComponent = componentFactory.createComponent(name);
  31.338 +            }
  31.339 +            else {
  31.340 +                component = componentFactory.createComponent(name);
  31.341 +            }
  31.342 +        }
  31.343 +
  31.344 +        /**
  31.345 +         * {@inheritDoc}
  31.346 +         */
  31.347 +        public void startProperty(final String name) {
  31.348 +            // property names are case-insensitive, but convert to upper case to simplify further processing
  31.349 +            property = propertyFactory.createProperty(name.toUpperCase());
  31.350 +        }
  31.351 +    }
  31.352 +    
  31.353 +    private void assertComponent(Component component) {
  31.354 +        if (component == null) {
  31.355 +            throw new CalendarException("Expected component not initialised");
  31.356 +        }
  31.357 +    }
  31.358 +    
  31.359 +    private void assertProperty(Property property) {
  31.360 +        if (property == null) {
  31.361 +            throw new CalendarException("Expected property not initialised");
  31.362 +        }
  31.363 +    }
  31.364 +
  31.365 +    /**
  31.366 +     * Returns the timezone registry used in the construction of calendars.
  31.367 +     * @return a timezone registry
  31.368 +     */
  31.369 +    public final TimeZoneRegistry getRegistry() {
  31.370 +        return tzRegistry;
  31.371 +    }
  31.372 +
  31.373 +    private void updateTimeZone(Property property, TimeZone timezone) {
  31.374 +        try {
  31.375 +            ((DateProperty) property).setTimeZone(timezone);
  31.376 +        }
  31.377 +        catch (ClassCastException e) {
  31.378 +            try {
  31.379 +                ((DateListProperty) property).setTimeZone(timezone);
  31.380 +            }
  31.381 +            catch (ClassCastException e2) {
  31.382 +                if (CompatibilityHints.isHintEnabled(CompatibilityHints.KEY_RELAXED_PARSING)) {
  31.383 +                    Log log = LogFactory.getLog(CalendarBuilder.class);
  31.384 +                    log.warn("Error setting timezone [" + timezone.getID()
  31.385 +                            + "] on property [" + property.getName()
  31.386 +                            + "]", e);
  31.387 +                }
  31.388 +                else {
  31.389 +                    throw e2;
  31.390 +                }
  31.391 +            }
  31.392 +        }
  31.393 +    }
  31.394 +    
  31.395 +    private void resolveTimezones() 
  31.396 +        throws IOException {
  31.397 +        
  31.398 +        // Go through each property and try to resolve the TZID.
  31.399 +        for (final Iterator it = datesMissingTimezones.iterator();it.hasNext();) {
  31.400 +            final Property property = (Property) it.next();
  31.401 +            final Parameter tzParam = property.getParameter(Parameter.TZID);
  31.402 +
  31.403 +            // tzParam might be null: 
  31.404 +            if (tzParam == null) {
  31.405 +                continue;
  31.406 +            }
  31.407 +            
  31.408 +            //lookup timezone
  31.409 +            final TimeZone timezone = tzRegistry.getTimeZone(tzParam.getValue());
  31.410 +            
  31.411 +            // If timezone found, then update date property
  31.412 +            if (timezone != null) {
  31.413 +                // Get the String representation of date(s) as
  31.414 +                // we will need this after changing the timezone
  31.415 +                final String strDate = property.getValue();
  31.416 +                
  31.417 +                // Change the timezone
  31.418 +                if(property instanceof DateProperty) {
  31.419 +                    ((DateProperty) property).setTimeZone(timezone);
  31.420 +                }
  31.421 +                else if(property instanceof DateListProperty) {
  31.422 +                    ((DateListProperty) property).setTimeZone(timezone);
  31.423 +                }
  31.424 +                    
  31.425 +                // Reset value
  31.426 +                try {
  31.427 +                    property.setValue(strDate);
  31.428 +                } catch (ParseException e) {
  31.429 +                    // shouldn't happen as its already been parsed
  31.430 +                    throw new CalendarException(e);
  31.431 +                } catch (URISyntaxException e) {
  31.432 +                    // shouldn't happen as its already been parsed
  31.433 +                    throw new CalendarException(e);
  31.434 +                }
  31.435 +            }
  31.436 +        }
  31.437 +    }
  31.438 +}
    32.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    32.2 +++ b/src/net/fortuna/ical4j/data/CalendarOutputter.java	Tue Feb 10 18:12:00 2015 +0100
    32.3 @@ -0,0 +1,107 @@
    32.4 +/**
    32.5 + * Copyright (c) 2012, Ben Fortuna
    32.6 + * All rights reserved.
    32.7 + *
    32.8 + * Redistribution and use in source and binary forms, with or without
    32.9 + * modification, are permitted provided that the following conditions
   32.10 + * are met:
   32.11 + *
   32.12 + *  o Redistributions of source code must retain the above copyright
   32.13 + * notice, this list of conditions and the following disclaimer.
   32.14 + *
   32.15 + *  o Redistributions in binary form must reproduce the above copyright
   32.16 + * notice, this list of conditions and the following disclaimer in the
   32.17 + * documentation and/or other materials provided with the distribution.
   32.18 + *
   32.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
   32.20 + * may be used to endorse or promote products derived from this software
   32.21 + * without specific prior written permission.
   32.22 + *
   32.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   32.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   32.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   32.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
   32.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   32.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   32.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   32.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   32.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   32.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   32.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   32.34 + */
   32.35 +package net.fortuna.ical4j.data;
   32.36 +
   32.37 +import java.io.IOException;
   32.38 +import java.io.OutputStream;
   32.39 +import java.io.OutputStreamWriter;
   32.40 +import java.io.Writer;
   32.41 +
   32.42 +import net.fortuna.ical4j.model.Calendar;
   32.43 +import net.fortuna.ical4j.model.ValidationException;
   32.44 +
   32.45 +/**
   32.46 + * <pre>
   32.47 + * $Id$ [Apr 5, 2004]
   32.48 + * </pre>
   32.49 + *
   32.50 + * Writes an iCalendar model to an output stream.
   32.51 + * @author Ben Fortuna
   32.52 + */
   32.53 +public class CalendarOutputter extends AbstractOutputter {
   32.54 +
   32.55 +    /**
   32.56 +     * Default constructor.
   32.57 +     */
   32.58 +    public CalendarOutputter() {
   32.59 +        super();
   32.60 +    }
   32.61 +
   32.62 +    /**
   32.63 +     * @param validating indicates whether to validate calendar when outputting to stream
   32.64 +     */
   32.65 +    public CalendarOutputter(final boolean validating) {
   32.66 +        super(validating);
   32.67 +    }
   32.68 +
   32.69 +    /**
   32.70 +     * @param validating indicates whether to validate calendar when outputting to stream
   32.71 +     * @param foldLength maximum number of characters before a line is folded
   32.72 +     */
   32.73 +    public CalendarOutputter(final boolean validating, final int foldLength) {
   32.74 +        super(validating, foldLength);
   32.75 +    }
   32.76 +
   32.77 +    /**
   32.78 +     * Outputs an iCalender string to the specified output stream.
   32.79 +     * @param calendar calendar to write to ouput stream
   32.80 +     * @param out an output stream
   32.81 +     * @throws IOException thrown when unable to write to output stream
   32.82 +     * @throws ValidationException where calendar validation fails
   32.83 +     */
   32.84 +    public final void output(final Calendar calendar, final OutputStream out)
   32.85 +            throws IOException, ValidationException {
   32.86 +        output(calendar, new OutputStreamWriter(out, DEFAULT_CHARSET));
   32.87 +    }
   32.88 +
   32.89 +    /**
   32.90 +     * Outputs an iCalender string to the specified writer.
   32.91 +     * @param calendar calendar to write to writer
   32.92 +     * @param out a writer
   32.93 +     * @throws IOException thrown when unable to write to writer
   32.94 +     * @throws ValidationException where calendar validation fails
   32.95 +     */
   32.96 +    public final void output(final Calendar calendar, final Writer out)
   32.97 +            throws IOException, ValidationException {
   32.98 +        if (isValidating()) {
   32.99 +            calendar.validate();
  32.100 +        }
  32.101 +
  32.102 +        final FoldingWriter writer = new FoldingWriter(out, foldLength);
  32.103 +        try {
  32.104 +            writer.write(calendar.toString());
  32.105 +        }
  32.106 +        finally {
  32.107 +            writer.close();
  32.108 +        }
  32.109 +    }
  32.110 +}
    33.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    33.2 +++ b/src/net/fortuna/ical4j/data/CalendarParser.java	Tue Feb 10 18:12:00 2015 +0100
    33.3 @@ -0,0 +1,69 @@
    33.4 +/**
    33.5 + * Copyright (c) 2012, Ben Fortuna
    33.6 + * All rights reserved.
    33.7 + *
    33.8 + * Redistribution and use in source and binary forms, with or without
    33.9 + * modification, are permitted provided that the following conditions
   33.10 + * are met:
   33.11 + *
   33.12 + *  o Redistributions of source code must retain the above copyright
   33.13 + * notice, this list of conditions and the following disclaimer.
   33.14 + *
   33.15 + *  o Redistributions in binary form must reproduce the above copyright
   33.16 + * notice, this list of conditions and the following disclaimer in the
   33.17 + * documentation and/or other materials provided with the distribution.
   33.18 + *
   33.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
   33.20 + * may be used to endorse or promote products derived from this software
   33.21 + * without specific prior written permission.
   33.22 + *
   33.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   33.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   33.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   33.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
   33.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   33.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   33.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   33.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   33.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   33.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   33.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   33.34 + */
   33.35 +package net.fortuna.ical4j.data;
   33.36 +
   33.37 +import java.io.InputStream;
   33.38 +import java.io.IOException;
   33.39 +import java.io.Reader;
   33.40 +
   33.41 +/**
   33.42 + * <pre>
   33.43 + * $Id$
   33.44 + * 
   33.45 + * Created [Nov 5, 2004]
   33.46 + * </pre>
   33.47 + *
   33.48 + * Implementors provide iCalendar parsing functionality.
   33.49 + * @author Ben Fortuna
   33.50 + */
   33.51 +public interface CalendarParser {
   33.52 +
   33.53 +    /**
   33.54 +     * Parse the iCalendar data from the specified input stream.
   33.55 +     * @param in an input stream from which to read iCalendar data
   33.56 +     * @param handler the content handler to notify during parsing
   33.57 +     * @throws IOException thrown when unable to read from the specified stream
   33.58 +     * @throws ParserException thrown if an error occurs during parsing
   33.59 +     */
   33.60 +    void parse(InputStream in, ContentHandler handler) throws IOException,
   33.61 +            ParserException;
   33.62 +
   33.63 +    /**
   33.64 +     * Parse the iCalendar data from the specified reader.
   33.65 +     * @param in a reader from which to read iCalendar data
   33.66 +     * @param handler the content handler to notify during parsing
   33.67 +     * @throws IOException thrown when unable to read from the specified reader
   33.68 +     * @throws ParserException thrown if an error occurs during parsing
   33.69 +     */
   33.70 +    void parse(Reader in, ContentHandler handler) throws IOException,
   33.71 +            ParserException;
   33.72 +}
    34.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    34.2 +++ b/src/net/fortuna/ical4j/data/CalendarParserFactory.java	Tue Feb 10 18:12:00 2015 +0100
    34.3 @@ -0,0 +1,84 @@
    34.4 +/**
    34.5 + * Copyright (c) 2012, Ben Fortuna
    34.6 + * All rights reserved.
    34.7 + *
    34.8 + * Redistribution and use in source and binary forms, with or without
    34.9 + * modification, are permitted provided that the following conditions
   34.10 + * are met:
   34.11 + *
   34.12 + *  o Redistributions of source code must retain the above copyright
   34.13 + * notice, this list of conditions and the following disclaimer.
   34.14 + *
   34.15 + *  o Redistributions in binary form must reproduce the above copyright
   34.16 + * notice, this list of conditions and the following disclaimer in the
   34.17 + * documentation and/or other materials provided with the distribution.
   34.18 + *
   34.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
   34.20 + * may be used to endorse or promote products derived from this software
   34.21 + * without specific prior written permission.
   34.22 + *
   34.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   34.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   34.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   34.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
   34.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   34.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   34.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   34.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   34.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   34.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   34.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   34.34 + */
   34.35 +package net.fortuna.ical4j.data;
   34.36 +
   34.37 +import net.fortuna.ical4j.util.Configurator;
   34.38 +
   34.39 +/**
   34.40 + * <pre>
   34.41 + * $Id$
   34.42 + *
   34.43 + * Created on 08/02/2007
   34.44 + * </pre>
   34.45 + *
   34.46 + * Provides access to the configured {@link CalendarParser} instance. Alternative factory implementations may be
   34.47 + * specified via the following system property:
   34.48 + * 
   34.49 + * <pre>
   34.50 + * net.fortuna.ical4j.parser=&lt;factory_class_name&gt;
   34.51 + * </pre>
   34.52 + * 
   34.53 + * @author Ben Fortuna
   34.54 + */
   34.55 +public abstract class CalendarParserFactory {
   34.56 +
   34.57 +    /**
   34.58 +     * The system property used to specify an alternate {@link CalendarParser} implementation.
   34.59 +     */
   34.60 +    public static final String KEY_FACTORY_CLASS = "net.fortuna.ical4j.parser";
   34.61 +
   34.62 +    private static CalendarParserFactory instance;
   34.63 +    static {
   34.64 +        try {
   34.65 +            final Class factoryClass = Class.forName(
   34.66 +                    Configurator.getProperty(KEY_FACTORY_CLASS));
   34.67 +            instance = (CalendarParserFactory) factoryClass.newInstance();
   34.68 +        }
   34.69 +        catch (Exception e) {
   34.70 +            instance = new DefaultCalendarParserFactory();
   34.71 +        }
   34.72 +    }
   34.73 +
   34.74 +    /**
   34.75 +     * @return a shared factory instance
   34.76 +     */
   34.77 +    public static CalendarParserFactory getInstance() {
   34.78 +        return instance;
   34.79 +    }
   34.80 +
   34.81 +    /**
   34.82 +     * Returns a new instance of the configured {@link CalendarParser}.
   34.83 +     * @return a calendar parser instance
   34.84 +     */
   34.85 +    public abstract CalendarParser createParser();
   34.86 +
   34.87 +}
    35.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    35.2 +++ b/src/net/fortuna/ical4j/data/CalendarParserImpl.java	Tue Feb 10 18:12:00 2015 +0100
    35.3 @@ -0,0 +1,521 @@
    35.4 +/**
    35.5 + * Copyright (c) 2012, Ben Fortuna
    35.6 + * All rights reserved.
    35.7 + *
    35.8 + * Redistribution and use in source and binary forms, with or without
    35.9 + * modification, are permitted provided that the following conditions
   35.10 + * are met:
   35.11 + *
   35.12 + *  o Redistributions of source code must retain the above copyright
   35.13 + * notice, this list of conditions and the following disclaimer.
   35.14 + *
   35.15 + *  o Redistributions in binary form must reproduce the above copyright
   35.16 + * notice, this list of conditions and the following disclaimer in the
   35.17 + * documentation and/or other materials provided with the distribution.
   35.18 + *
   35.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
   35.20 + * may be used to endorse or promote products derived from this software
   35.21 + * without specific prior written permission.
   35.22 + *
   35.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   35.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   35.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   35.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
   35.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   35.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   35.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   35.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   35.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   35.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   35.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   35.34 + */
   35.35 +package net.fortuna.ical4j.data;
   35.36 +
   35.37 +import java.io.IOException;
   35.38 +import java.io.InputStream;
   35.39 +import java.io.InputStreamReader;
   35.40 +import java.io.Reader;
   35.41 +import java.io.StreamTokenizer;
   35.42 +import java.net.URISyntaxException;
   35.43 +import java.text.MessageFormat;
   35.44 +import java.text.ParseException;
   35.45 +
   35.46 +import net.fortuna.ical4j.model.Calendar;
   35.47 +import net.fortuna.ical4j.model.Component;
   35.48 +
   35.49 +import org.apache.commons.logging.Log;
   35.50 +import org.apache.commons.logging.LogFactory;
   35.51 +
   35.52 +/**
   35.53 + * <pre>
   35.54 + * $Id$
   35.55 + * 
   35.56 + *  Created [Nov 5, 2004]
   35.57 + * </pre>
   35.58 + *
   35.59 + * The default implementation of a calendar parser.
   35.60 + * @author Ben Fortuna
   35.61 + */
   35.62 +public class CalendarParserImpl implements CalendarParser {
   35.63 +
   35.64 +    private static final int WORD_CHAR_START = 32;
   35.65 +
   35.66 +    private static final int WORD_CHAR_END = 255;
   35.67 +
   35.68 +    private static final int WHITESPACE_CHAR_START = 0;
   35.69 +
   35.70 +    private static final int WHITESPACE_CHAR_END = 20;
   35.71 +    
   35.72 +    private static final String UNEXPECTED_TOKEN_MESSAGE = "Expected [{0}], read [{1}]";
   35.73 +
   35.74 +    private Log log = LogFactory.getLog(CalendarParserImpl.class);
   35.75 +
   35.76 +    private final ComponentListParser componentListParser = new ComponentListParser();
   35.77 +
   35.78 +    private final ComponentParser componentParser = new ComponentParser();
   35.79 +
   35.80 +    private final PropertyListParser propertyListParser = new PropertyListParser();
   35.81 +
   35.82 +    private final PropertyParser propertyParser = new PropertyParser();
   35.83 +
   35.84 +    private final ParameterListParser paramListParser = new ParameterListParser();
   35.85 +
   35.86 +    private final ParameterParser paramParser = new ParameterParser();
   35.87 +    
   35.88 +    /**
   35.89 +     * {@inheritDoc}
   35.90 +     */
   35.91 +    public final void parse(final InputStream in, final ContentHandler handler)
   35.92 +            throws IOException, ParserException {
   35.93 +        parse(new InputStreamReader(in), handler);
   35.94 +    }
   35.95 +
   35.96 +    /**
   35.97 +     * {@inheritDoc}
   35.98 +     */
   35.99 +    public final void parse(final Reader in, final ContentHandler handler)
  35.100 +            throws IOException, ParserException {
  35.101 +
  35.102 +        final StreamTokenizer tokeniser = new StreamTokenizer(in);
  35.103 +        try {
  35.104 +            tokeniser.resetSyntax();
  35.105 +            tokeniser.wordChars(WORD_CHAR_START, WORD_CHAR_END);
  35.106 +            tokeniser.whitespaceChars(WHITESPACE_CHAR_START,
  35.107 +                    WHITESPACE_CHAR_END);
  35.108 +            tokeniser.ordinaryChar(':');
  35.109 +            tokeniser.ordinaryChar(';');
  35.110 +            tokeniser.ordinaryChar('=');
  35.111 +            tokeniser.ordinaryChar('\t');
  35.112 +            tokeniser.eolIsSignificant(true);
  35.113 +            tokeniser.whitespaceChars(0, 0);
  35.114 +            tokeniser.quoteChar('"');
  35.115 +
  35.116 +            // BEGIN:VCALENDAR
  35.117 +            assertToken(tokeniser, in, Calendar.BEGIN);
  35.118 +
  35.119 +            assertToken(tokeniser, in, ':');
  35.120 +
  35.121 +            assertToken(tokeniser, in, Calendar.VCALENDAR, true);
  35.122 +
  35.123 +            assertToken(tokeniser, in, StreamTokenizer.TT_EOL);
  35.124 +
  35.125 +            handler.startCalendar();
  35.126 +
  35.127 +            // parse calendar properties..
  35.128 +            propertyListParser.parse(tokeniser, in, handler);
  35.129 +
  35.130 +            // parse components..
  35.131 +            componentListParser.parse(tokeniser, in, handler);
  35.132 +
  35.133 +            // END:VCALENDAR
  35.134 +            // assertToken(tokeniser,Calendar.END);
  35.135 +
  35.136 +            assertToken(tokeniser, in, ':');
  35.137 +
  35.138 +            assertToken(tokeniser, in, Calendar.VCALENDAR, true);
  35.139 +
  35.140 +            handler.endCalendar();
  35.141 +        }
  35.142 +        catch (Exception e) {
  35.143 +
  35.144 +            if (e instanceof IOException) {
  35.145 +                throw (IOException) e;
  35.146 +            }
  35.147 +            if (e instanceof ParserException) {
  35.148 +                throw (ParserException) e;
  35.149 +            }
  35.150 +            else {
  35.151 +                throw new ParserException(e.getMessage(), getLineNumber(tokeniser, in), e);
  35.152 +            }
  35.153 +        }
  35.154 +    }
  35.155 +
  35.156 +    /**
  35.157 +     * Parses an iCalendar property list from the specified stream tokeniser.
  35.158 +     * @param tokeniser
  35.159 +     * @throws IOException
  35.160 +     * @throws ParseException
  35.161 +     * @throws URISyntaxException
  35.162 +     * @throws URISyntaxException
  35.163 +     * @throws ParserException
  35.164 +     */
  35.165 +    private class PropertyListParser {
  35.166 +        
  35.167 +        public void parse(final StreamTokenizer tokeniser, Reader in,
  35.168 +                final ContentHandler handler) throws IOException, ParseException,
  35.169 +                URISyntaxException, ParserException {
  35.170 +
  35.171 +            assertToken(tokeniser, in, StreamTokenizer.TT_WORD);
  35.172 +
  35.173 +            while (/*
  35.174 +                     * !Component.BEGIN.equals(tokeniser.sval) &&
  35.175 +                     */!Component.END.equals(tokeniser.sval)) {
  35.176 +                // check for timezones observances or vevent/vtodo alarms..
  35.177 +                if (Component.BEGIN.equals(tokeniser.sval)) {
  35.178 +                    componentParser.parse(tokeniser, in, handler);
  35.179 +                }
  35.180 +                else {
  35.181 +                    propertyParser.parse(tokeniser, in, handler);
  35.182 +                }
  35.183 +                absorbWhitespace(tokeniser);
  35.184 +                // assertToken(tokeniser, StreamTokenizer.TT_WORD);
  35.185 +            }
  35.186 +        }
  35.187 +    }
  35.188 +
  35.189 +    /**
  35.190 +     * Parses an iCalendar property from the specified stream tokeniser.
  35.191 +     * @param tokeniser
  35.192 +     * @throws IOException
  35.193 +     * @throws ParserException
  35.194 +     * @throws URISyntaxException
  35.195 +     * @throws ParseException
  35.196 +     */
  35.197 +    private class PropertyParser {
  35.198 +        
  35.199 +        private static final String PARSE_DEBUG_MESSAGE = "Property [{0}]";
  35.200 +        
  35.201 +        private static final String PARSE_EXCEPTION_MESSAGE = "Property [{0}]";
  35.202 +        
  35.203 +        private void parse(final StreamTokenizer tokeniser, Reader in,
  35.204 +                final ContentHandler handler) throws IOException, ParserException,
  35.205 +                URISyntaxException, ParseException {
  35.206 +
  35.207 +            final String name = tokeniser.sval;
  35.208 +
  35.209 +            // debugging..
  35.210 +            if (log.isDebugEnabled()) {
  35.211 +                log.debug(MessageFormat.format(PARSE_DEBUG_MESSAGE, new Object[] {name}));
  35.212 +            }
  35.213 +
  35.214 +            handler.startProperty(name);
  35.215 +
  35.216 +            paramListParser.parse(tokeniser, in, handler);
  35.217 +
  35.218 +            // it appears that control tokens (ie. ':') are allowed
  35.219 +            // after the first instance on a line is used.. as such
  35.220 +            // we must continue appending to value until EOL is
  35.221 +            // reached..
  35.222 +            // assertToken(tokeniser, StreamTokenizer.TT_WORD);
  35.223 +
  35.224 +            // String value = tokeniser.sval;
  35.225 +            final StringBuffer value = new StringBuffer();
  35.226 +
  35.227 +            // assertToken(tokeniser,StreamTokenizer.TT_EOL);
  35.228 +
  35.229 +            // DQUOTE is ordinary char for property value
  35.230 +            // From sec 4.3.11 of rfc-2445:
  35.231 +            // text       = *(TSAFE-CHAR / ":" / DQUOTE / ESCAPED-CHAR)
  35.232 +            //
  35.233 +            tokeniser.ordinaryChar('"');
  35.234 +            int nextToken = tokeniser.nextToken();
  35.235 +
  35.236 +            while (nextToken != StreamTokenizer.TT_EOL
  35.237 +                    && nextToken != StreamTokenizer.TT_EOF) {
  35.238 +
  35.239 +                if (tokeniser.ttype == StreamTokenizer.TT_WORD) {
  35.240 +                    value.append(tokeniser.sval);
  35.241 +                }
  35.242 +                else {
  35.243 +                    value.append((char) tokeniser.ttype);
  35.244 +                }
  35.245 +
  35.246 +                nextToken = tokeniser.nextToken();
  35.247 +            }
  35.248 +            
  35.249 +            // reset DQUOTE to be quote char
  35.250 +            tokeniser.quoteChar('"');
  35.251 +            
  35.252 +            if (nextToken == StreamTokenizer.TT_EOF) {
  35.253 +                throw new ParserException("Unexpected end of file",
  35.254 +                        getLineNumber(tokeniser, in));
  35.255 +            }
  35.256 +
  35.257 +            try {
  35.258 +                handler.propertyValue(value.toString());
  35.259 +            }
  35.260 +            catch (ParseException e) {
  35.261 +                final ParseException eNew = new ParseException("[" + name + "] "
  35.262 +                        + e.getMessage(), e.getErrorOffset());
  35.263 +                eNew.initCause(e);
  35.264 +                throw eNew;
  35.265 +            }
  35.266 +
  35.267 +            handler.endProperty(name);
  35.268 +
  35.269 +        }
  35.270 +    }
  35.271 +
  35.272 +    /**
  35.273 +     * Parses a list of iCalendar parameters by parsing the specified stream tokeniser.
  35.274 +     * @param tokeniser
  35.275 +     * @throws IOException
  35.276 +     * @throws ParserException
  35.277 +     * @throws URISyntaxException
  35.278 +     */
  35.279 +    private class ParameterListParser {
  35.280 +        
  35.281 +        public void parse(final StreamTokenizer tokeniser, Reader in,
  35.282 +                final ContentHandler handler) throws IOException, ParserException,
  35.283 +                URISyntaxException {
  35.284 +
  35.285 +            while (tokeniser.nextToken() == ';') {
  35.286 +                paramParser.parse(tokeniser, in, handler);
  35.287 +            }
  35.288 +        }
  35.289 +    }
  35.290 +
  35.291 +    /**
  35.292 +     * @param tokeniser
  35.293 +     * @param handler
  35.294 +     * @throws IOException
  35.295 +     * @throws ParserException
  35.296 +     * @throws URISyntaxException
  35.297 +     */
  35.298 +    private class ParameterParser {
  35.299 +        
  35.300 +        private void parse(final StreamTokenizer tokeniser, Reader in,
  35.301 +                final ContentHandler handler) throws IOException, ParserException,
  35.302 +                URISyntaxException {
  35.303 +
  35.304 +            assertToken(tokeniser, in, StreamTokenizer.TT_WORD);
  35.305 +
  35.306 +            final String paramName = tokeniser.sval;
  35.307 +
  35.308 +            // debugging..
  35.309 +            if (log.isDebugEnabled()) {
  35.310 +                log.debug("Parameter [" + paramName + "]");
  35.311 +            }
  35.312 +
  35.313 +            assertToken(tokeniser, in, '=');
  35.314 +
  35.315 +            final StringBuffer paramValue = new StringBuffer();
  35.316 +
  35.317 +            // preserve quote chars..
  35.318 +            if (tokeniser.nextToken() == '"') {
  35.319 +                paramValue.append('"');
  35.320 +                paramValue.append(tokeniser.sval);
  35.321 +                paramValue.append('"');
  35.322 +            }
  35.323 +            else if (tokeniser.sval != null) {
  35.324 +                paramValue.append(tokeniser.sval);
  35.325 +                // check for additional words to account for equals (=) in param-value
  35.326 +                int nextToken = tokeniser.nextToken();
  35.327 +
  35.328 +                while (nextToken != ';' && nextToken != ':' && nextToken != ',') {
  35.329 +
  35.330 +                    if (tokeniser.ttype == StreamTokenizer.TT_WORD) {
  35.331 +                        paramValue.append(tokeniser.sval);
  35.332 +                    }
  35.333 +                    else {
  35.334 +                    	paramValue.append((char) tokeniser.ttype);
  35.335 +                    }
  35.336 +
  35.337 +                    nextToken = tokeniser.nextToken();
  35.338 +                }
  35.339 +                tokeniser.pushBack();
  35.340 +            } else if(tokeniser.sval == null) { 
  35.341 +            	tokeniser.pushBack();
  35.342 +            }
  35.343 +
  35.344 +            try {
  35.345 +                handler.parameter(paramName, paramValue.toString());
  35.346 +            }
  35.347 +            catch (ClassCastException cce) {
  35.348 +                throw new ParserException("Error parsing parameter", getLineNumber(tokeniser, in), cce);
  35.349 +            }
  35.350 +        }
  35.351 +    }
  35.352 +
  35.353 +    /**
  35.354 +     * Parses an iCalendar component list from the specified stream tokeniser.
  35.355 +     * @param tokeniser
  35.356 +     * @throws IOException
  35.357 +     * @throws ParseException
  35.358 +     * @throws URISyntaxException
  35.359 +     * @throws ParserException
  35.360 +     */
  35.361 +    private class ComponentListParser {
  35.362 +        
  35.363 +        private void parse(final StreamTokenizer tokeniser, Reader in,
  35.364 +                final ContentHandler handler) throws IOException, ParseException,
  35.365 +                URISyntaxException, ParserException {
  35.366 +
  35.367 +            while (Component.BEGIN.equals(tokeniser.sval)) {
  35.368 +                componentParser.parse(tokeniser, in, handler);
  35.369 +                absorbWhitespace(tokeniser);
  35.370 +                // assertToken(tokeniser, StreamTokenizer.TT_WORD);
  35.371 +            }
  35.372 +        }
  35.373 +    }
  35.374 +
  35.375 +    /**
  35.376 +     * Parses an iCalendar component from the specified stream tokeniser.
  35.377 +     * @param tokeniser
  35.378 +     * @throws IOException
  35.379 +     * @throws ParseException
  35.380 +     * @throws URISyntaxException
  35.381 +     * @throws ParserException
  35.382 +     */
  35.383 +    private class ComponentParser {
  35.384 +        
  35.385 +        private void parse(final StreamTokenizer tokeniser, Reader in,
  35.386 +                final ContentHandler handler) throws IOException, ParseException,
  35.387 +                URISyntaxException, ParserException {
  35.388 +
  35.389 +            assertToken(tokeniser, in, ':');
  35.390 +
  35.391 +            assertToken(tokeniser, in, StreamTokenizer.TT_WORD);
  35.392 +
  35.393 +            final String name = tokeniser.sval;
  35.394 +
  35.395 +            handler.startComponent(name);
  35.396 +
  35.397 +            assertToken(tokeniser, in, StreamTokenizer.TT_EOL);
  35.398 +
  35.399 +            propertyListParser.parse(tokeniser, in, handler);
  35.400 +
  35.401 +            /*
  35.402 +             * // a special case for VTIMEZONE component which contains
  35.403 +             * // sub-components.. 
  35.404 +             * if (Component.VTIMEZONE.equals(name)) {
  35.405 +             *     parseComponentList(tokeniser, handler);
  35.406 +             * }
  35.407 +             * // VEVENT/VTODO components may optionally have embedded VALARM
  35.408 +             * // components.. 
  35.409 +             * else if ((Component.VEVENT.equals(name) || Component.VTODO.equals(name))
  35.410 +             *         &amp;&amp; Component.BEGIN.equals(tokeniser.sval)) {
  35.411 +             *     parseComponentList(tokeniser, handler);
  35.412 +             * }
  35.413 +             */
  35.414 +
  35.415 +            assertToken(tokeniser, in, ':');
  35.416 +
  35.417 +            assertToken(tokeniser, in, name);
  35.418 +
  35.419 +            assertToken(tokeniser, in, StreamTokenizer.TT_EOL);
  35.420 +
  35.421 +            handler.endComponent(name);
  35.422 +        }
  35.423 +    }
  35.424 +
  35.425 +    /**
  35.426 +     * Asserts that the next token in the stream matches the specified token.
  35.427 +     * @param tokeniser stream tokeniser to perform assertion on
  35.428 +     * @param token expected token
  35.429 +     * @throws IOException when unable to read from stream
  35.430 +     * @throws ParserException when next token in the stream does not match the expected token
  35.431 +     */
  35.432 +    private void assertToken(final StreamTokenizer tokeniser, Reader in, final int token)
  35.433 +            throws IOException, ParserException {
  35.434 +
  35.435 +        if (tokeniser.nextToken() != token) {
  35.436 +            throw new ParserException(MessageFormat.format(UNEXPECTED_TOKEN_MESSAGE, new Object[] {
  35.437 +                    new Integer(token), new Integer(tokeniser.ttype),
  35.438 +            }), getLineNumber(tokeniser, in));
  35.439 +        }
  35.440 +
  35.441 +        if (log.isDebugEnabled()) {
  35.442 +            log.debug("[" + token + "]");
  35.443 +        }
  35.444 +    }
  35.445 +
  35.446 +    /**
  35.447 +     * Asserts that the next token in the stream matches the specified token. This method is case-sensitive.
  35.448 +     * @param tokeniser
  35.449 +     * @param token
  35.450 +     * @throws IOException
  35.451 +     * @throws ParserException
  35.452 +     */
  35.453 +    private void assertToken(final StreamTokenizer tokeniser, Reader in, final String token)
  35.454 +            throws IOException, ParserException {
  35.455 +        assertToken(tokeniser, in, token, false);
  35.456 +    }
  35.457 +
  35.458 +    /**
  35.459 +     * Asserts that the next token in the stream matches the specified token.
  35.460 +     * @param tokeniser stream tokeniser to perform assertion on
  35.461 +     * @param token expected token
  35.462 +     * @throws IOException when unable to read from stream
  35.463 +     * @throws ParserException when next token in the stream does not match the expected token
  35.464 +     */
  35.465 +    private void assertToken(final StreamTokenizer tokeniser, Reader in,
  35.466 +            final String token, final boolean ignoreCase) throws IOException,
  35.467 +            ParserException {
  35.468 +
  35.469 +        // ensure next token is a word token..
  35.470 +        assertToken(tokeniser, in, StreamTokenizer.TT_WORD);
  35.471 +
  35.472 +        if (ignoreCase) {
  35.473 +            if (!token.equalsIgnoreCase(tokeniser.sval)) {
  35.474 +                throw new ParserException(MessageFormat.format(UNEXPECTED_TOKEN_MESSAGE, new Object[] {
  35.475 +                        token, tokeniser.sval,
  35.476 +                }), getLineNumber(tokeniser, in));
  35.477 +            }
  35.478 +        }
  35.479 +        else if (!token.equals(tokeniser.sval)) {
  35.480 +            throw new ParserException(MessageFormat.format(UNEXPECTED_TOKEN_MESSAGE, new Object[] {
  35.481 +                    token, tokeniser.sval,
  35.482 +            }), getLineNumber(tokeniser, in));
  35.483 +        }
  35.484 +
  35.485 +        if (log.isDebugEnabled()) {
  35.486 +            log.debug("[" + token + "]");
  35.487 +        }
  35.488 +    }
  35.489 +
  35.490 +    /**
  35.491 +     * Absorbs extraneous newlines.
  35.492 +     * @param tokeniser
  35.493 +     * @throws IOException
  35.494 +     */
  35.495 +    private void absorbWhitespace(final StreamTokenizer tokeniser) throws IOException {
  35.496 +        // HACK: absorb extraneous whitespace between components (KOrganizer)..
  35.497 +        while (tokeniser.nextToken() == StreamTokenizer.TT_EOL) {
  35.498 +            if (log.isTraceEnabled()) {
  35.499 +                log.trace("Absorbing extra whitespace..");
  35.500 +            }
  35.501 +        }
  35.502 +        if (log.isTraceEnabled()) {
  35.503 +            log.trace("Aborting: absorbing extra whitespace complete");
  35.504 +        }
  35.505 +    }
  35.506 +    
  35.507 +    /**
  35.508 +     * @param tokeniser
  35.509 +     * @param in
  35.510 +     * @return
  35.511 +     */
  35.512 +    private int getLineNumber(StreamTokenizer tokeniser, Reader in) {
  35.513 +        int line = tokeniser.lineno();
  35.514 +        if (tokeniser.ttype == StreamTokenizer.TT_EOL) {
  35.515 +            line -= 1;
  35.516 +        }
  35.517 +        if (in instanceof UnfoldingReader) {
  35.518 +            // need to take unfolded lines into account
  35.519 +            final int unfolded = ((UnfoldingReader) in).getLinesUnfolded();
  35.520 +            line += unfolded;
  35.521 +        }
  35.522 +        return line;
  35.523 +    }
  35.524 +}
    36.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    36.2 +++ b/src/net/fortuna/ical4j/data/ContentHandler.java	Tue Feb 10 18:12:00 2015 +0100
    36.3 @@ -0,0 +1,101 @@
    36.4 +/**
    36.5 + * Copyright (c) 2012, Ben Fortuna
    36.6 + * All rights reserved.
    36.7 + *
    36.8 + * Redistribution and use in source and binary forms, with or without
    36.9 + * modification, are permitted provided that the following conditions
   36.10 + * are met:
   36.11 + *
   36.12 + *  o Redistributions of source code must retain the above copyright
   36.13 + * notice, this list of conditions and the following disclaimer.
   36.14 + *
   36.15 + *  o Redistributions in binary form must reproduce the above copyright
   36.16 + * notice, this list of conditions and the following disclaimer in the
   36.17 + * documentation and/or other materials provided with the distribution.
   36.18 + *
   36.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
   36.20 + * may be used to endorse or promote products derived from this software
   36.21 + * without specific prior written permission.
   36.22 + *
   36.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   36.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   36.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   36.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
   36.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   36.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   36.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   36.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   36.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   36.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   36.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   36.34 + */
   36.35 +package net.fortuna.ical4j.data;
   36.36 +
   36.37 +import java.io.IOException;
   36.38 +import java.net.URISyntaxException;
   36.39 +import java.text.ParseException;
   36.40 +
   36.41 +/**
   36.42 + * <pre>
   36.43 + * $Id$ [Nov 5,
   36.44 + * 2004]
   36.45 + * </pre>
   36.46 + *
   36.47 + * Implementors provide functionality applicable during the parsing of an iCalendar data stream (e.g. building an object
   36.48 + * model).
   36.49 + * @author Ben Fortuna
   36.50 + */
   36.51 +public interface ContentHandler {
   36.52 +
   36.53 +    /**
   36.54 +     * Triggers the start of handling a calendar.
   36.55 +     */
   36.56 +    void startCalendar();
   36.57 +
   36.58 +    /**
   36.59 +     * Triggers the end of handling a calendar.
   36.60 +     */
   36.61 +    void endCalendar();
   36.62 +
   36.63 +    /**
   36.64 +     * Triggers the start of handling a component.
   36.65 +     * @param name a component name
   36.66 +     */
   36.67 +    void startComponent(String name);
   36.68 +
   36.69 +    /**
   36.70 +     * Triggers the end of handling a component.
   36.71 +     * @param name a component name
   36.72 +     */
   36.73 +    void endComponent(String name);
   36.74 +
   36.75 +    /**
   36.76 +     * Triggers the start of handling a property.
   36.77 +     * @param name a property name
   36.78 +     */
   36.79 +    void startProperty(String name);
   36.80 +
   36.81 +    /**
   36.82 +     * Triggers the handling of a property value.
   36.83 +     * @param value a property value
   36.84 +     * @throws URISyntaxException where the property value is not a valid URI for applicable properties
   36.85 +     * @throws ParseException where the date value cannot be parsed for applicable properties
   36.86 +     * @throws IOException where data cannot be read for applicable properties
   36.87 +     */
   36.88 +    void propertyValue(String value) throws URISyntaxException, ParseException,
   36.89 +            IOException;
   36.90 +
   36.91 +    /**
   36.92 +     * Triggers the end of handling a property.
   36.93 +     * @param name a property name
   36.94 +     */
   36.95 +    void endProperty(String name);
   36.96 +
   36.97 +    /**
   36.98 +     * Triggers the handling of a parameter.
   36.99 +     * @param name a parameter name
  36.100 +     * @param value a parameter value
  36.101 +     * @throws URISyntaxException where the parameter value is not a valid URI for applicable parameters
  36.102 +     */
  36.103 +    void parameter(String name, String value) throws URISyntaxException;
  36.104 +}
    37.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    37.2 +++ b/src/net/fortuna/ical4j/data/DefaultCalendarParserFactory.java	Tue Feb 10 18:12:00 2015 +0100
    37.3 @@ -0,0 +1,52 @@
    37.4 +/**
    37.5 + * Copyright (c) 2012, Ben Fortuna
    37.6 + * All rights reserved.
    37.7 + *
    37.8 + * Redistribution and use in source and binary forms, with or without
    37.9 + * modification, are permitted provided that the following conditions
   37.10 + * are met:
   37.11 + *
   37.12 + *  o Redistributions of source code must retain the above copyright
   37.13 + * notice, this list of conditions and the following disclaimer.
   37.14 + *
   37.15 + *  o Redistributions in binary form must reproduce the above copyright
   37.16 + * notice, this list of conditions and the following disclaimer in the
   37.17 + * documentation and/or other materials provided with the distribution.
   37.18 + *
   37.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
   37.20 + * may be used to endorse or promote products derived from this software
   37.21 + * without specific prior written permission.
   37.22 + *
   37.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   37.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   37.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   37.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
   37.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   37.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   37.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   37.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   37.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   37.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   37.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   37.34 + */
   37.35 +package net.fortuna.ical4j.data;
   37.36 +
   37.37 +/**
   37.38 + * <pre>
   37.39 + * $Id$
   37.40 + *
   37.41 + * Created on 08/02/2007
   37.42 + * </pre>
   37.43 + *
   37.44 + * Default factory implementation for calendar parsers.
   37.45 + * @author Ben Fortuna
   37.46 + */
   37.47 +public class DefaultCalendarParserFactory extends CalendarParserFactory {
   37.48 +
   37.49 +    /**
   37.50 +     * {@inheritDoc}
   37.51 +     */
   37.52 +    public CalendarParser createParser() {
   37.53 +        return new CalendarParserImpl();
   37.54 +    }
   37.55 +}
    38.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    38.2 +++ b/src/net/fortuna/ical4j/data/FoldingWriter.java	Tue Feb 10 18:12:00 2015 +0100
    38.3 @@ -0,0 +1,155 @@
    38.4 +/**
    38.5 + * Copyright (c) 2012, Ben Fortuna
    38.6 + * All rights reserved.
    38.7 + *
    38.8 + * Redistribution and use in source and binary forms, with or without
    38.9 + * modification, are permitted provided that the following conditions
   38.10 + * are met:
   38.11 + *
   38.12 + *  o Redistributions of source code must retain the above copyright
   38.13 + * notice, this list of conditions and the following disclaimer.
   38.14 + *
   38.15 + *  o Redistributions in binary form must reproduce the above copyright
   38.16 + * notice, this list of conditions and the following disclaimer in the
   38.17 + * documentation and/or other materials provided with the distribution.
   38.18 + *
   38.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
   38.20 + * may be used to endorse or promote products derived from this software
   38.21 + * without specific prior written permission.
   38.22 + *
   38.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   38.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   38.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   38.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
   38.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   38.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   38.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   38.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   38.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   38.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   38.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   38.34 + */
   38.35 +package net.fortuna.ical4j.data;
   38.36 +
   38.37 +import java.io.FilterWriter;
   38.38 +import java.io.IOException;
   38.39 +import java.io.Writer;
   38.40 +
   38.41 +import org.apache.commons.logging.Log;
   38.42 +import org.apache.commons.logging.LogFactory;
   38.43 +
   38.44 +/**
   38.45 + * <pre>
   38.46 + * $Id$ [Apr 6, 2004]
   38.47 + * </pre>
   38.48 + *
   38.49 + * A writer that performs iCalendar folding as it writes.
   38.50 + * @author Ben Fortuna
   38.51 + */
   38.52 +public class FoldingWriter extends FilterWriter {
   38.53 +
   38.54 +    /**
   38.55 +     * reduced to 73 to be consistent with Apple iCal..
   38.56 +     */
   38.57 +    public static final int REDUCED_FOLD_LENGTH = 73;
   38.58 +
   38.59 +    /**
   38.60 +     * Lines of text SHOULD NOT be longer than 75 octets, excluding the line break.
   38.61 +     */
   38.62 +    public static final int MAX_FOLD_LENGTH = 75;
   38.63 +
   38.64 +    private static final char[] FOLD_PATTERN = { '\r', '\n', ' ' };
   38.65 +
   38.66 +    private final Log log = LogFactory.getLog(FoldingWriter.class);
   38.67 +
   38.68 +    private int lineLength;
   38.69 +
   38.70 +    private final int foldLength;
   38.71 +
   38.72 +    /**
   38.73 +     * @param writer a writer to write output to
   38.74 +     * @param foldLength the maximum line length
   38.75 +     */
   38.76 +    public FoldingWriter(final Writer writer, final int foldLength) {
   38.77 +        super(writer);
   38.78 +        this.foldLength = Math.min(foldLength, MAX_FOLD_LENGTH);
   38.79 +    }
   38.80 +
   38.81 +    /**
   38.82 +     * @param writer a writer to write output to
   38.83 +     */
   38.84 +    public FoldingWriter(final Writer writer) {
   38.85 +        this(writer, REDUCED_FOLD_LENGTH);
   38.86 +    }
   38.87 +
   38.88 +    /**
   38.89 +     * {@inheritDoc}
   38.90 +     */
   38.91 +    public final void write(final int c) throws IOException {
   38.92 +
   38.93 +        /*
   38.94 +         * super.write(c); if (c == '\n') { lineLength = 0; } else { lineLength += 1; } if (lineLength >= FOLD_LENGTH) {
   38.95 +         * super.write(FOLD_PATTERN); }
   38.96 +         */
   38.97 +        write(new char[] { (char) c }, 0, 1);
   38.98 +    }
   38.99 +
  38.100 +    /**
  38.101 +     * {@inheritDoc}
  38.102 +     */
  38.103 +    public final void write(final char[] buffer, final int offset,
  38.104 +            final int length) throws IOException {
  38.105 +        final int maxIndex = offset + length - 1;
  38.106 +        for (int i = offset; i <= maxIndex; i++) {
  38.107 +
  38.108 +            // debugging..
  38.109 +            if (log.isTraceEnabled()) {
  38.110 +                log.trace("char [" + buffer[i] + "], line length ["
  38.111 +                        + lineLength + "]");
  38.112 +            }
  38.113 +
  38.114 +            // check for fold first so we don't unnecessarily fold after
  38.115 +            // no more data..
  38.116 +            if (lineLength >= foldLength) {
  38.117 +                super.write(FOLD_PATTERN, 0, FOLD_PATTERN.length);
  38.118 +
  38.119 +                // re-initialise to 1 to account for the space in fold pattern..
  38.120 +                lineLength = 1;
  38.121 +            }
  38.122 +
  38.123 +            super.write(buffer[i]);
  38.124 +
  38.125 +            if (buffer[i] == '\r' || buffer[i] == '\n') {
  38.126 +                lineLength = 0;
  38.127 +            }
  38.128 +            else {
  38.129 +                lineLength += 1;
  38.130 +            }
  38.131 +        }
  38.132 +    }
  38.133 +
  38.134 +    /**
  38.135 +     * {@inheritDoc}
  38.136 +     */
  38.137 +    public final void write(final String str, final int off, final int len)
  38.138 +            throws IOException {
  38.139 +        write(str.toCharArray(), off, len);
  38.140 +    }
  38.141 +
  38.142 +    /*
  38.143 +     * (non-Javadoc)
  38.144 +     * @see java.io.FilterWriter#write(java.lang.String, int, int) public void write(String arg0, int arg1, int arg2)
  38.145 +     * throws IOException { super.write(arg0, arg1, arg2); if (arg0.indexOf('\n') >= 0) { lineLength = 0; } else {
  38.146 +     * lineLength += 1; } fold(); }
  38.147 +     */
  38.148 +
  38.149 +    /*
  38.150 +     * (non-Javadoc)
  38.151 +     * @see java.io.Writer#write(java.lang.String) public void write(String arg0) throws IOException {
  38.152 +     *  /* if (lineLength +
  38.153 +     * arg0.length() >= FOLD_LENGTH) { super.write(arg0.substring(0,FOLD_LENGTH-lineLength-1));
  38.154 +     * super.write(FOLD_PATTERN); super.write(arg0.substring(FOLD_LENGTH-lineLength)); } else { super.write(arg0); } if
  38.155 +     * (arg0.indexOf('\n') >= 0) { lineLength = 0; } else { lineLength += 1; } fold(); char[] chars =
  38.156 +     * arg0.toCharArray(); for (int i=0; i <chars.length; i++) { write(chars[i]); } }
  38.157 +     */
  38.158 +}
    39.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    39.2 +++ b/src/net/fortuna/ical4j/data/HCalendarParser.java	Tue Feb 10 18:12:00 2015 +0100
    39.3 @@ -0,0 +1,558 @@
    39.4 +/**
    39.5 + * Copyright (c) 2012, Ben Fortuna
    39.6 + * All rights reserved.
    39.7 + *
    39.8 + * Redistribution and use in source and binary forms, with or without
    39.9 + * modification, are permitted provided that the following conditions
   39.10 + * are met:
   39.11 + *
   39.12 + *  o Redistributions of source code must retain the above copyright
   39.13 + * notice, this list of conditions and the following disclaimer.
   39.14 + *
   39.15 + *  o Redistributions in binary form must reproduce the above copyright
   39.16 + * notice, this list of conditions and the following disclaimer in the
   39.17 + * documentation and/or other materials provided with the distribution.
   39.18 + *
   39.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
   39.20 + * may be used to endorse or promote products derived from this software
   39.21 + * without specific prior written permission.
   39.22 + *
   39.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   39.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   39.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   39.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
   39.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   39.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   39.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   39.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   39.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   39.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   39.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   39.34 + */
   39.35 +package net.fortuna.ical4j.data;
   39.36 +
   39.37 +import java.io.IOException;
   39.38 +import java.io.InputStream;
   39.39 +import java.io.Reader;
   39.40 +import java.net.URISyntaxException;
   39.41 +import java.text.ParseException;
   39.42 +import java.text.SimpleDateFormat;
   39.43 +import java.util.ArrayList;
   39.44 +import java.util.Iterator;
   39.45 +import java.util.List;
   39.46 +
   39.47 +import javax.xml.XMLConstants;
   39.48 +import javax.xml.parsers.DocumentBuilderFactory;
   39.49 +import javax.xml.parsers.ParserConfigurationException;
   39.50 +import javax.xml.xpath.XPath;
   39.51 +import javax.xml.xpath.XPathConstants;
   39.52 +import javax.xml.xpath.XPathException;
   39.53 +import javax.xml.xpath.XPathExpression;
   39.54 +import javax.xml.xpath.XPathFactory;
   39.55 +
   39.56 +import net.fortuna.ical4j.model.CalendarException;
   39.57 +import net.fortuna.ical4j.model.Component;
   39.58 +import net.fortuna.ical4j.model.Date;
   39.59 +import net.fortuna.ical4j.model.DateTime;
   39.60 +import net.fortuna.ical4j.model.Parameter;
   39.61 +import net.fortuna.ical4j.model.Property;
   39.62 +import net.fortuna.ical4j.model.parameter.Value;
   39.63 +import net.fortuna.ical4j.model.property.Version;
   39.64 +
   39.65 +import org.apache.commons.lang.StringUtils;
   39.66 +import org.apache.commons.logging.Log;
   39.67 +import org.apache.commons.logging.LogFactory;
   39.68 +import org.w3c.dom.DOMException;
   39.69 +import org.w3c.dom.Document;
   39.70 +import org.w3c.dom.Element;
   39.71 +import org.w3c.dom.Node;
   39.72 +import org.w3c.dom.NodeList;
   39.73 +import org.xml.sax.InputSource;
   39.74 +import org.xml.sax.SAXException;
   39.75 +import org.xml.sax.SAXParseException;
   39.76 +
   39.77 +/**
   39.78 + * A {@link CalendarParser} that parses XHTML documents that include calendar data marked up with the hCalendar
   39.79 + * microformat.
   39.80 + * <p>
   39.81 + * The parser treats the entire document as a single "vcalendar" context, ignoring any <code>vcalendar</code> elements
   39.82 + * and adding all components in the document to a single generated calendar.
   39.83 + * </p>
   39.84 + * <p>
   39.85 + * Since hCalendar does not include product information, the <code>PRODID</code> property is omitted from the generated
   39.86 + * calendar. The hCalendar profile is supposed to define the iCalendar version that it represents, but it does not, so
   39.87 + * version 2.0 is assumed.
   39.88 + * </p>
   39.89 + * <h3>Supported Components</h3>
   39.90 + * <p>
   39.91 + * This parser recognizes only "vevent" components.
   39.92 + * </p>
   39.93 + * <h3>Supported Properties</h3>
   39.94 + * <p>
   39.95 + * This parser recognizes the following properties:
   39.96 + * </p>
   39.97 + * <ul>
   39.98 + * <li>"dtstart"</li>
   39.99 + * <li>"dtend"</li>
  39.100 + * <li>"duration"</li>
  39.101 + * <li>"summary"</li>
  39.102 + * <li>"uid"</li>
  39.103 + * <li>"dtstamp"</li>
  39.104 + * <li>"category"</li>
  39.105 + * <li>"location"</li>
  39.106 + * <li>"url"</li>
  39.107 + * <li>"description"</li>
  39.108 + * <li>"last-modified"</li>
  39.109 + * <li>"status"</li>
  39.110 + * <li>"class"</li>
  39.111 + * <li>"attendee"</li>
  39.112 + * <li>"contact"</li>
  39.113 + * <li>"organizer"</li>
  39.114 + * </ul>
  39.115 + * <p>
  39.116 + * hCalendar allows for some properties to be represented by nested microformat records, including hCard, adr and geo.
  39.117 + * This parser does not recognize these records. It simply accumulates the text content of any child elements of the
  39.118 + * property element and uses the resulting string as the property value.
  39.119 + * </p>
  39.120 + * <h4>Date and Date-Time Properties</h4>
  39.121 + * <p>
  39.122 + * hCalendar date-time values are formatted according to RFC 3339. There is no representation in this specification for
  39.123 + * time zone ids. All date-times are specified either in UTC or with an offset that can be used to convert the local
  39.124 + * time into UTC. Neither does hCal provide a reprsentation for floating date-times. Therefore, all date-time values
  39.125 + * produced by this parser are in UTC.
  39.126 + * </p>
  39.127 + * <p>
  39.128 + * Some examples in the wild provide date and date-time values in iCalendar format rather than RFC 3339 format. Although
  39.129 + * not technically legal according to spec, these values are accepted. In this case, floating date-times are produced by
  39.130 + * the parser.
  39.131 + * </p>
  39.132 + * <h3>Supported Parameters</h3>
  39.133 + * <p>
  39.134 + * hCalendar does not define attributes, nested elements or other information elements representing parameter data.
  39.135 + * Therefore, this parser does not set any property parameters except as implied by property value data (e.g.
  39.136 + * VALUE=DATE-TIME or VALUE=DATE for date-time properties).
  39.137 + * </p>
  39.138 + */
  39.139 +public class HCalendarParser implements CalendarParser {
  39.140 +    
  39.141 +    private static final Log LOG = LogFactory.getLog(HCalendarParser.class);
  39.142 +    
  39.143 +    private static final DocumentBuilderFactory BUILDER_FACTORY = DocumentBuilderFactory.newInstance();
  39.144 +    private static final XPath XPATH = XPathFactory.newInstance().newXPath();
  39.145 +    private static final XPathExpression XPATH_METHOD;
  39.146 +    private static final XPathExpression XPATH_VEVENTS;
  39.147 +    private static final XPathExpression XPATH_DTSTART;
  39.148 +    private static final XPathExpression XPATH_DTEND;
  39.149 +    private static final XPathExpression XPATH_DURATION;
  39.150 +    private static final XPathExpression XPATH_SUMMARY;
  39.151 +    private static final XPathExpression XPATH_UID;
  39.152 +    private static final XPathExpression XPATH_DTSTAMP;
  39.153 +    private static final XPathExpression XPATH_CATEGORY;
  39.154 +    private static final XPathExpression XPATH_LOCATION;
  39.155 +    private static final XPathExpression XPATH_URL;
  39.156 +    private static final XPathExpression XPATH_DESCRIPTION;
  39.157 +    private static final XPathExpression XPATH_LAST_MODIFIED;
  39.158 +    private static final XPathExpression XPATH_STATUS;
  39.159 +    private static final XPathExpression XPATH_CLASS;
  39.160 +    private static final XPathExpression XPATH_ATTENDEE;
  39.161 +    private static final XPathExpression XPATH_CONTACT;
  39.162 +    private static final XPathExpression XPATH_ORGANIZER;
  39.163 +    private static final XPathExpression XPATH_SEQUENCE;
  39.164 +    private static final XPathExpression XPATH_ATTACH;
  39.165 +    private static final String HCAL_DATE_PATTERN = "yyyy-MM-dd";
  39.166 +    private static final SimpleDateFormat HCAL_DATE_FORMAT = new SimpleDateFormat(HCAL_DATE_PATTERN);
  39.167 +    private static final String HCAL_DATE_TIME_PATTERN = "yyyy-MM-dd'T'HH:mm:ssz";
  39.168 +    private static final SimpleDateFormat HCAL_DATE_TIME_FORMAT = new SimpleDateFormat(HCAL_DATE_TIME_PATTERN);
  39.169 +
  39.170 +    static {
  39.171 +        BUILDER_FACTORY.setNamespaceAware(true);
  39.172 +        BUILDER_FACTORY.setIgnoringComments(true);
  39.173 +
  39.174 +        XPATH_METHOD = compileExpression("//*[contains(@class, 'method')]");
  39.175 +        XPATH_VEVENTS = compileExpression("//*[contains(@class, 'vevent')]");
  39.176 +        XPATH_DTSTART = compileExpression(".//*[contains(@class, 'dtstart')]");
  39.177 +        XPATH_DTEND = compileExpression(".//*[contains(@class, 'dtend')]");
  39.178 +        XPATH_DURATION = compileExpression(".//*[contains(@class, 'duration')]");
  39.179 +        XPATH_SUMMARY = compileExpression(".//*[contains(@class, 'summary')]");
  39.180 +        XPATH_UID = compileExpression(".//*[contains(@class, 'uid')]");
  39.181 +        XPATH_DTSTAMP = compileExpression(".//*[contains(@class, 'dtstamp')]");
  39.182 +        XPATH_CATEGORY = compileExpression(".//*[contains(@class, 'category')]");
  39.183 +        XPATH_LOCATION = compileExpression(".//*[contains(@class, 'location')]");
  39.184 +        XPATH_URL = compileExpression(".//*[contains(@class, 'url')]");
  39.185 +        XPATH_DESCRIPTION = compileExpression(".//*[contains(@class, 'description')]");
  39.186 +        XPATH_LAST_MODIFIED = compileExpression(".//*[contains(@class, 'last-modified')]");
  39.187 +        XPATH_STATUS = compileExpression(".//*[contains(@class, 'status')]");
  39.188 +        XPATH_CLASS = compileExpression(".//*[contains(@class, 'class')]");
  39.189 +        XPATH_ATTENDEE = compileExpression(".//*[contains(@class, 'attendee')]");
  39.190 +        XPATH_CONTACT = compileExpression(".//*[contains(@class, 'contact')]");
  39.191 +        XPATH_ORGANIZER = compileExpression(".//*[contains(@class, 'organizer')]");
  39.192 +        XPATH_SEQUENCE = compileExpression(".//*[contains(@class, 'sequence')]");
  39.193 +        XPATH_ATTACH = compileExpression(".//*[contains(@class, 'attach')]");
  39.194 +    }
  39.195 +
  39.196 +    private static XPathExpression compileExpression(String expr) {
  39.197 +        try {
  39.198 +            return XPATH.compile(expr);
  39.199 +        } catch (XPathException e) {
  39.200 +            throw new CalendarException(e);
  39.201 +        }
  39.202 +    }
  39.203 +
  39.204 +    /**
  39.205 +     * {@inheritDoc}
  39.206 +     */
  39.207 +    public void parse(InputStream in, ContentHandler handler) throws IOException, ParserException {
  39.208 +        parse(new InputSource(in), handler);
  39.209 +    }
  39.210 +
  39.211 +    /**
  39.212 +     * {@inheritDoc}
  39.213 +     */
  39.214 +    public void parse(Reader in, ContentHandler handler) throws IOException, ParserException {
  39.215 +        parse(new InputSource(in), handler);
  39.216 +    }
  39.217 +
  39.218 +    private void parse(InputSource in, ContentHandler handler) throws IOException, ParserException {
  39.219 +        try {
  39.220 +            Document d = BUILDER_FACTORY.newDocumentBuilder().parse(in);
  39.221 +            buildCalendar(d, handler);
  39.222 +        } catch (ParserConfigurationException e) {
  39.223 +            throw new CalendarException(e);
  39.224 +        } catch (SAXException e) {
  39.225 +            if (e instanceof SAXParseException) {
  39.226 +                SAXParseException pe = (SAXParseException) e;
  39.227 +                throw new ParserException("Could not parse XML", pe.getLineNumber(), e);
  39.228 +            }
  39.229 +            throw new ParserException(e.getMessage(), -1, e);
  39.230 +        }
  39.231 +    }
  39.232 +
  39.233 +    private static NodeList findNodes(XPathExpression expr, Object context) throws ParserException {
  39.234 +        try {
  39.235 +            return (NodeList) expr.evaluate(context, XPathConstants.NODESET);
  39.236 +        } catch (XPathException e) {
  39.237 +            throw new ParserException("Unable to find nodes", -1, e);
  39.238 +        }
  39.239 +    }
  39.240 +
  39.241 +    private static Node findNode(XPathExpression expr, Object context) throws ParserException {
  39.242 +        try {
  39.243 +            return (Node) expr.evaluate(context, XPathConstants.NODE);
  39.244 +        } catch (XPathException e) {
  39.245 +            throw new ParserException("Unable to find node", -1, e);
  39.246 +        }
  39.247 +    }
  39.248 +
  39.249 +    private static List findElements(XPathExpression expr, Object context) throws ParserException {
  39.250 +        NodeList nodes = findNodes(expr, context);
  39.251 +        ArrayList elements = new ArrayList();
  39.252 +        for (int i = 0; i < nodes.getLength(); i++) {
  39.253 +            Node n = nodes.item(i);
  39.254 +            if (n instanceof Element)
  39.255 +                elements.add((Element) n);
  39.256 +        }
  39.257 +        return elements;
  39.258 +    }
  39.259 +
  39.260 +    private static Element findElement(XPathExpression expr, Object context) throws ParserException {
  39.261 +        Node n = findNode(expr, context);
  39.262 +        if (n == null || (!(n instanceof Element)))
  39.263 +            return null;
  39.264 +        return (Element) n;
  39.265 +    }
  39.266 +
  39.267 +    private static String getTextContent(Element element) throws ParserException {
  39.268 +        try {
  39.269 +            String content = element.getFirstChild().getNodeValue();
  39.270 +            if (content != null) {
  39.271 +                return content.trim().replaceAll("\\s+", " ");
  39.272 +            }
  39.273 +            return content;
  39.274 +        } catch (DOMException e) {
  39.275 +            throw new ParserException("Unable to get text content for element " + element.getNodeName(), -1, e);
  39.276 +        }
  39.277 +    }
  39.278 +
  39.279 +    private void buildCalendar(Document d, ContentHandler handler) throws ParserException {
  39.280 +        // "The root class name for hCalendar is "vcalendar". An element with a
  39.281 +        // class name of "vcalendar" is itself called an hCalendar.
  39.282 +        //
  39.283 +        // The root class name for events is "vevent". An element with a class
  39.284 +        // name of "vevent" is itself called an hCalender event.
  39.285 +        //
  39.286 +        // For authoring convenience, both "vevent" and "vcalendar" are
  39.287 +        // treated as root class names for parsing purposes. If a document
  39.288 +        // contains elements with class name "vevent" but not "vcalendar", the
  39.289 +        // entire document has an implied "vcalendar" context."
  39.290 +
  39.291 +        // XXX: We assume that the entire document has a single vcalendar
  39.292 +        // context. It is possible that the document contains more than one
  39.293 +        // vcalendar element. In this case, we should probably only process
  39.294 +        // that element and log a warning about skipping the others.
  39.295 +
  39.296 +        if (LOG.isDebugEnabled())
  39.297 +            LOG.debug("Building calendar");
  39.298 +
  39.299 +        handler.startCalendar();
  39.300 +
  39.301 +        // no PRODID, as the using application should set that itself
  39.302 +
  39.303 +        handler.startProperty(Property.VERSION);
  39.304 +        try {
  39.305 +            handler.propertyValue(Version.VERSION_2_0.getValue());
  39.306 +        } catch (Exception e) {
  39.307 +        }
  39.308 +        ;
  39.309 +        handler.endProperty(Property.VERSION);
  39.310 +
  39.311 +        Element method = findElement(XPATH_METHOD, d);
  39.312 +        if (method != null) {
  39.313 +            buildProperty(method, Property.METHOD, handler);
  39.314 +        }
  39.315 +
  39.316 +        List vevents = findElements(XPATH_VEVENTS, d);
  39.317 +        for (Iterator i = vevents.iterator(); i.hasNext();) {
  39.318 +            Element vevent = (Element) i.next();
  39.319 +            buildEvent(vevent, handler);
  39.320 +        }
  39.321 +
  39.322 +        // XXX: support other "first class components": vjournal, vtodo,
  39.323 +        // vfreebusy, vavailability, vvenue
  39.324 +
  39.325 +        handler.endCalendar();
  39.326 +    }
  39.327 +
  39.328 +    private void buildEvent(Element element, ContentHandler handler) throws ParserException {
  39.329 +        if (LOG.isDebugEnabled())
  39.330 +            LOG.debug("Building event");
  39.331 +
  39.332 +        handler.startComponent(Component.VEVENT);
  39.333 +
  39.334 +        buildProperty(findElement(XPATH_DTSTART, element), Property.DTSTART, handler);
  39.335 +        buildProperty(findElement(XPATH_DTEND, element), Property.DTEND, handler);
  39.336 +        buildProperty(findElement(XPATH_DURATION, element), Property.DURATION, handler);
  39.337 +        buildProperty(findElement(XPATH_SUMMARY, element), Property.SUMMARY, handler);
  39.338 +        buildProperty(findElement(XPATH_UID, element), Property.UID, handler);
  39.339 +        buildProperty(findElement(XPATH_DTSTAMP, element), Property.DTSTAMP, handler);
  39.340 +        List categories = findElements(XPATH_CATEGORY, element);
  39.341 +        for (Iterator i = categories.iterator(); i.hasNext();) {
  39.342 +            Element category = (Element) i.next();
  39.343 +            buildProperty(category, Property.CATEGORIES, handler);
  39.344 +        }
  39.345 +        buildProperty(findElement(XPATH_LOCATION, element), Property.LOCATION, handler);
  39.346 +        buildProperty(findElement(XPATH_URL, element), Property.URL, handler);
  39.347 +        buildProperty(findElement(XPATH_DESCRIPTION, element), Property.DESCRIPTION, handler);
  39.348 +        buildProperty(findElement(XPATH_LAST_MODIFIED, element), Property.LAST_MODIFIED, handler);
  39.349 +        buildProperty(findElement(XPATH_STATUS, element), Property.STATUS, handler);
  39.350 +        buildProperty(findElement(XPATH_CLASS, element), Property.CLASS, handler);
  39.351 +        List attendees = findElements(XPATH_ATTENDEE, element);
  39.352 +        for (Iterator i = attendees.iterator(); i.hasNext();) {
  39.353 +            Element attendee = (Element) i.next();
  39.354 +            buildProperty(attendee, Property.ATTENDEE, handler);
  39.355 +        }
  39.356 +        buildProperty(findElement(XPATH_CONTACT, element), Property.CONTACT, handler);
  39.357 +        buildProperty(findElement(XPATH_ORGANIZER, element), Property.ORGANIZER, handler);
  39.358 +        buildProperty(findElement(XPATH_SEQUENCE, element), Property.SEQUENCE, handler);
  39.359 +        buildProperty(findElement(XPATH_ATTACH, element), Property.ATTACH, handler);
  39.360 +
  39.361 +        handler.endComponent(Component.VEVENT);
  39.362 +    }
  39.363 +
  39.364 +    private void buildProperty(Element element, String propName, ContentHandler handler) throws ParserException {
  39.365 +        if (element == null)
  39.366 +            return;
  39.367 +
  39.368 +        if (LOG.isDebugEnabled())
  39.369 +            LOG.debug("Building property " + propName);
  39.370 +
  39.371 +        String className = className(propName);
  39.372 +        String elementName = element.getLocalName().toLowerCase();
  39.373 +
  39.374 +        String value = null;
  39.375 +        if (elementName.equals("abbr")) {
  39.376 +            // "If an <abbr> element is used for a property, then the 'title'
  39.377 +            // attribute of the <abbr> element is the value of the property,
  39.378 +            // instead of the contents of the element, which instead provide a
  39.379 +            // human presentable version of the value."
  39.380 +            value = element.getAttribute("title");
  39.381 +            if (StringUtils.isBlank(value))
  39.382 +                throw new ParserException("Abbr element '" + className + "' requires a non-empty title", -1);
  39.383 +            if (LOG.isDebugEnabled())
  39.384 +                LOG.debug("Setting value '" + value + "' from title attribute");
  39.385 +        } else if (isHeaderElement(elementName)) {
  39.386 +            // try title first. if that's not set, fall back to text content.
  39.387 +            value = element.getAttribute("title");
  39.388 +            if (!StringUtils.isBlank(value)) {
  39.389 +                if (LOG.isDebugEnabled())
  39.390 +                    LOG.debug("Setting value '" + value + "' from title attribute");
  39.391 +            } else {
  39.392 +                value = getTextContent(element);
  39.393 +                if (LOG.isDebugEnabled())
  39.394 +                    LOG.debug("Setting value '" + value + "' from text content");
  39.395 +            }
  39.396 +        } else if (elementName.equals("a") && isUrlProperty(propName)) {
  39.397 +            value = element.getAttribute("href");
  39.398 +            if (StringUtils.isBlank(value))
  39.399 +                throw new ParserException("A element '" + className + "' requires a non-empty href", -1);
  39.400 +            if (LOG.isDebugEnabled())
  39.401 +                LOG.debug("Setting value '" + value + "' from href attribute");
  39.402 +        } else if (elementName.equals("img")) {
  39.403 +            if (isUrlProperty(propName)) {
  39.404 +                value = element.getAttribute("src");
  39.405 +                if (StringUtils.isBlank(value))
  39.406 +                    throw new ParserException("Img element '" + className + "' requires a non-empty src", -1);
  39.407 +                if (LOG.isDebugEnabled())
  39.408 +                    LOG.debug("Setting value '" + value + "' from src attribute");
  39.409 +            } else {
  39.410 +                value = element.getAttribute("alt");
  39.411 +                if (StringUtils.isBlank(value))
  39.412 +                    throw new ParserException("Img element '" + className + "' requires a non-empty alt", -1);
  39.413 +                if (LOG.isDebugEnabled())
  39.414 +                    LOG.debug("Setting value '" + value + "' from alt attribute");
  39.415 +            }
  39.416 +        } else {
  39.417 +            value = getTextContent(element);
  39.418 +            if (!StringUtils.isBlank(value)) {
  39.419 +                if (LOG.isDebugEnabled())
  39.420 +                    LOG.debug("Setting value '" + value + "' from text content");
  39.421 +            }
  39.422 +        }
  39.423 +
  39.424 +        if (StringUtils.isBlank(value)) {
  39.425 +            if (LOG.isDebugEnabled())
  39.426 +                LOG.debug("Skipping property with empty value");
  39.427 +            return;
  39.428 +        }
  39.429 +
  39.430 +        handler.startProperty(propName);
  39.431 +
  39.432 +        // if it's a date property, we have to convert from the
  39.433 +        // hCalendar-formatted date (RFC 3339) to an iCalendar-formatted date
  39.434 +        if (isDateProperty(propName)) {
  39.435 +            try {
  39.436 +                Date date = icalDate(value);
  39.437 +                value = date.toString();
  39.438 +
  39.439 +                if (!(date instanceof DateTime))
  39.440 +                    try {
  39.441 +                        handler.parameter(Parameter.VALUE, Value.DATE.getValue());
  39.442 +                    } catch (Exception e) {
  39.443 +                    }
  39.444 +            } catch (ParseException e) {
  39.445 +                throw new ParserException("Malformed date value for element '" + className + "'", -1, e);
  39.446 +            }
  39.447 +        }
  39.448 +
  39.449 +        if (isTextProperty(propName)) {
  39.450 +            String lang = element.getAttributeNS(XMLConstants.XML_NS_URI, "lang");
  39.451 +            if (!StringUtils.isBlank(lang))
  39.452 +                try {
  39.453 +                    handler.parameter(Parameter.LANGUAGE, lang);
  39.454 +                } catch (Exception e) {
  39.455 +                }
  39.456 +        }
  39.457 +
  39.458 +        // XXX: other parameters?
  39.459 +
  39.460 +        try {
  39.461 +            handler.propertyValue(value);
  39.462 +        } catch (URISyntaxException e) {
  39.463 +            throw new ParserException("Malformed URI value for element '" + className + "'", -1, e);
  39.464 +        } catch (ParseException e) {
  39.465 +            throw new ParserException("Malformed value for element '" + className + "'", -1, e);
  39.466 +        } catch (IOException e) {
  39.467 +            throw new CalendarException(e);
  39.468 +        }
  39.469 +
  39.470 +        handler.endProperty(propName);
  39.471 +    }
  39.472 +
  39.473 +    // "The basic format of hCalendar is to use iCalendar object/property
  39.474 +    // names in lower-case for class names ..."
  39.475 +    /*
  39.476 +     * private static String _icalName(Element element) { return element.getAttribute("class").toUpperCase(); }
  39.477 +     */
  39.478 +
  39.479 +    private static String className(String propName) {
  39.480 +        return propName.toLowerCase();
  39.481 +    }
  39.482 +
  39.483 +    private static boolean isHeaderElement(String name) {
  39.484 +        return (name.equals("h1") || name.equals("h2") || name.equals("h3")
  39.485 +                || name.equals("h4") || name.equals("h5") || name
  39.486 +                .equals("h6"));
  39.487 +    }
  39.488 +
  39.489 +    private static boolean isDateProperty(String name) {
  39.490 +        return (name.equals(Property.DTSTART) || name.equals(Property.DTEND) || name.equals(Property.DTSTAMP) || name
  39.491 +                .equals(Property.LAST_MODIFIED));
  39.492 +    }
  39.493 +
  39.494 +    private static boolean isUrlProperty(String name) {
  39.495 +        return (name.equals(Property.URL));
  39.496 +    }
  39.497 +
  39.498 +    private static boolean isTextProperty(String name) {
  39.499 +        return (name.equals(Property.SUMMARY) || name.equals(Property.LOCATION) || name.equals(Property.CATEGORIES)
  39.500 +                || name.equals(Property.DESCRIPTION) || name.equals(Property.ATTENDEE)
  39.501 +                || name.equals(Property.CONTACT) || name
  39.502 +                .equals(Property.ORGANIZER));
  39.503 +    }
  39.504 +
  39.505 +    private static Date icalDate(String original) throws ParseException {
  39.506 +        // in the real world, some generators use iCalendar formatted
  39.507 +        // dates and date-times, so try parsing those formats first before
  39.508 +        // going to RFC 3339 formats
  39.509 +
  39.510 +        if (original.indexOf('T') == -1) {
  39.511 +            // date-only
  39.512 +            try {
  39.513 +                // for some reason Date's pattern matches yyyy-MM-dd, so
  39.514 +                // don't check it if we find -
  39.515 +                if (original.indexOf('-') == -1)
  39.516 +                    return new Date(original);
  39.517 +            } catch (Exception e) {
  39.518 +            }
  39.519 +            return new Date(HCAL_DATE_FORMAT.parse(original));
  39.520 +        }
  39.521 +
  39.522 +        try {
  39.523 +            return new DateTime(original);
  39.524 +        } catch (Exception e) {
  39.525 +        }
  39.526 +
  39.527 +        // the date-time value can represent its time zone in a few different
  39.528 +        // ways. we have to normalize those to match our pattern.
  39.529 +
  39.530 +        String normalized = null;
  39.531 +
  39.532 +        if (LOG.isDebugEnabled())
  39.533 +            LOG.debug("normalizing date-time " + original);
  39.534 +
  39.535 +        // 2002-10-09T19:00:00Z
  39.536 +        if (original.charAt(original.length() - 1) == 'Z') {
  39.537 +            normalized = original.replaceAll("Z", "GMT-00:00");
  39.538 +        }
  39.539 +        // 2002-10-10T00:00:00+05:00
  39.540 +        else if (original.indexOf("GMT") == -1
  39.541 +                && (original.charAt(original.length() - 6) == '+' || original.charAt(original.length() - 6) == '-')) {
  39.542 +            String tzId = "GMT" + original.substring(original.length() - 6);
  39.543 +            normalized = original.substring(0, original.length() - 6) + tzId;
  39.544 +        } else {
  39.545 +            // 2002-10-10T00:00:00GMT+05:00
  39.546 +            normalized = original;
  39.547 +        }
  39.548 +
  39.549 +        DateTime dt = new DateTime(HCAL_DATE_TIME_FORMAT.parse(normalized));
  39.550 +
  39.551 +        // hCalendar does not specify a representation for timezone ids
  39.552 +        // or any other sort of timezone information. the best it does is
  39.553 +        // give us a timezone offset that we can use to convert the local
  39.554 +        // time to UTC. furthermore, it has no representation for floating
  39.555 +        // date-times. therefore, all dates are converted to UTC.
  39.556 +
  39.557 +        dt.setUtc(true);
  39.558 +
  39.559 +        return dt;
  39.560 +    }
  39.561 +}
    40.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    40.2 +++ b/src/net/fortuna/ical4j/data/HCalendarParserFactory.java	Tue Feb 10 18:12:00 2015 +0100
    40.3 @@ -0,0 +1,55 @@
    40.4 +/**
    40.5 + * Copyright (c) 2012, Ben Fortuna
    40.6 + * All rights reserved.
    40.7 + *
    40.8 + * Redistribution and use in source and binary forms, with or without
    40.9 + * modification, are permitted provided that the following conditions
   40.10 + * are met:
   40.11 + *
   40.12 + *  o Redistributions of source code must retain the above copyright
   40.13 + * notice, this list of conditions and the following disclaimer.
   40.14 + *
   40.15 + *  o Redistributions in binary form must reproduce the above copyright
   40.16 + * notice, this list of conditions and the following disclaimer in the
   40.17 + * documentation and/or other materials provided with the distribution.
   40.18 + *
   40.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
   40.20 + * may be used to endorse or promote products derived from this software
   40.21 + * without specific prior written permission.
   40.22 + *
   40.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   40.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   40.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   40.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
   40.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   40.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   40.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   40.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   40.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   40.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   40.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   40.34 + */
   40.35 +package net.fortuna.ical4j.data;
   40.36 +
   40.37 +/**
   40.38 + * A parser factory for the hCal microformat.
   40.39 + * 
   40.40 + * <pre>
   40.41 + * $Id$
   40.42 + *
   40.43 + * Created on 18/11/2007
   40.44 + * </pre>
   40.45 + *
   40.46 + * @author fortuna
   40.47 + *
   40.48 + */
   40.49 +public class HCalendarParserFactory extends CalendarParserFactory {
   40.50 +
   40.51 +    /**
   40.52 +     * {@inheritDoc}
   40.53 +     */
   40.54 +    public CalendarParser createParser() {
   40.55 +        return new HCalendarParser();
   40.56 +    }
   40.57 +
   40.58 +}
    41.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    41.2 +++ b/src/net/fortuna/ical4j/data/ParserException.java	Tue Feb 10 18:12:00 2015 +0100
    41.3 @@ -0,0 +1,88 @@
    41.4 +/**
    41.5 + * Copyright (c) 2012, Ben Fortuna
    41.6 + * All rights reserved.
    41.7 + *
    41.8 + * Redistribution and use in source and binary forms, with or without
    41.9 + * modification, are permitted provided that the following conditions
   41.10 + * are met:
   41.11 + *
   41.12 + *  o Redistributions of source code must retain the above copyright
   41.13 + * notice, this list of conditions and the following disclaimer.
   41.14 + *
   41.15 + *  o Redistributions in binary form must reproduce the above copyright
   41.16 + * notice, this list of conditions and the following disclaimer in the
   41.17 + * documentation and/or other materials provided with the distribution.
   41.18 + *
   41.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
   41.20 + * may be used to endorse or promote products derived from this software
   41.21 + * without specific prior written permission.
   41.22 + *
   41.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   41.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   41.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   41.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
   41.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   41.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   41.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   41.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   41.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   41.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   41.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   41.34 + */
   41.35 +package net.fortuna.ical4j.data;
   41.36 +
   41.37 +import java.text.MessageFormat;
   41.38 +
   41.39 +/**
   41.40 + * <pre>
   41.41 + * $Id$ [Apr 5, 2004]
   41.42 + * </pre>
   41.43 + *
   41.44 + * An exception thrown when an error occurs in parsing iCalendar data.
   41.45 + * @author Ben Fortuna
   41.46 + */
   41.47 +public class ParserException extends Exception {
   41.48 +
   41.49 +    private static final long serialVersionUID = 6116644246112002214L;
   41.50 +
   41.51 +    private static final String ERROR_MESSAGE_PATTERN = "Error at line {0}:";
   41.52 +
   41.53 +    private int lineNo;
   41.54 +
   41.55 +    /**
   41.56 +     * @param lineNo line number where parsing error ocurred
   41.57 +     */
   41.58 +    public ParserException(final int lineNo) {
   41.59 +        this.lineNo = lineNo;
   41.60 +    }
   41.61 +
   41.62 +    /**
   41.63 +     * Constructor with message.
   41.64 +     * @param message a descriptive message for the exception
   41.65 +     * @param lineNo line number where parsing error ocurred
   41.66 +     */
   41.67 +    public ParserException(final String message, final int lineNo) {
   41.68 +        super(MessageFormat.format(ERROR_MESSAGE_PATTERN, new Object[] { new Integer(lineNo)}) + message);
   41.69 +        this.lineNo = lineNo;
   41.70 +    }
   41.71 +
   41.72 +    /**
   41.73 +     * Constructor with message and cause.
   41.74 +     * @param message a descriptive message for the exception
   41.75 +     * @param lineNo line number where parsing error ocurred
   41.76 +     * @param cause a throwable that is the cause of this exception
   41.77 +     */
   41.78 +    public ParserException(final String message, final int lineNo,
   41.79 +            final Throwable cause) {
   41.80 +
   41.81 +        super(MessageFormat.format(ERROR_MESSAGE_PATTERN, new Object[] { new Integer(lineNo)}) + message, cause);
   41.82 +        this.lineNo = lineNo;
   41.83 +    }
   41.84 +
   41.85 +    /**
   41.86 +     * @return the lineNo
   41.87 +     */
   41.88 +    public final int getLineNo() {
   41.89 +        return lineNo;
   41.90 +    }
   41.91 +}
    42.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    42.2 +++ b/src/net/fortuna/ical4j/data/UnfoldingReader.java	Tue Feb 10 18:12:00 2015 +0100
    42.3 @@ -0,0 +1,239 @@
    42.4 +/**
    42.5 + * Copyright (c) 2012, Ben Fortuna
    42.6 + * All rights reserved.
    42.7 + *
    42.8 + * Redistribution and use in source and binary forms, with or without
    42.9 + * modification, are permitted provided that the following conditions
   42.10 + * are met:
   42.11 + *
   42.12 + *  o Redistributions of source code must retain the above copyright
   42.13 + * notice, this list of conditions and the following disclaimer.
   42.14 + *
   42.15 + *  o Redistributions in binary form must reproduce the above copyright
   42.16 + * notice, this list of conditions and the following disclaimer in the
   42.17 + * documentation and/or other materials provided with the distribution.
   42.18 + *
   42.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
   42.20 + * may be used to endorse or promote products derived from this software
   42.21 + * without specific prior written permission.
   42.22 + *
   42.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   42.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   42.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   42.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
   42.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   42.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   42.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   42.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   42.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   42.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   42.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   42.34 + */
   42.35 +package net.fortuna.ical4j.data;
   42.36 +
   42.37 +import java.io.IOException;
   42.38 +import java.io.PushbackReader;
   42.39 +import java.io.Reader;
   42.40 +import java.util.Arrays;
   42.41 +
   42.42 +import net.fortuna.ical4j.util.CompatibilityHints;
   42.43 +
   42.44 +import org.apache.commons.logging.Log;
   42.45 +import org.apache.commons.logging.LogFactory;
   42.46 +
   42.47 +/**
   42.48 + * <pre>
   42.49 + * $Id$ [06-Apr-2004]
   42.50 + * </pre>
   42.51 + *
   42.52 + * A reader which performs iCalendar unfolding as it reads. Note that unfolding rules may be "relaxed" to allow
   42.53 + * unfolding of non-conformant *.ics files. By specifying the system property "ical4j.unfolding.relaxed=true" iCalendar
   42.54 + * files created with Mozilla Calendar/Sunbird may be correctly unfolded.
   42.55 + * 
   42.56 + * To wrap this reader with a {@link java.io.BufferedReader} you must ensure you specify an identical buffer size
   42.57 + * to that used in the {@link java.io.BufferedReader}.
   42.58 + * 
   42.59 + * @author Ben Fortuna
   42.60 + */
   42.61 +public class UnfoldingReader extends PushbackReader {
   42.62 +
   42.63 +    private Log log = LogFactory.getLog(UnfoldingReader.class);
   42.64 +
   42.65 +    /**
   42.66 +     * The pattern used to identify a fold in an iCalendar data stream.
   42.67 +     */
   42.68 +    private static final char[] DEFAULT_FOLD_PATTERN_1 = { '\r', '\n', ' ' };
   42.69 +    
   42.70 +    /** 
   42.71 +     * The pattern used to identify a fold in Microsoft Outlook 2007. 
   42.72 +     */ 
   42.73 +    private static final char[] DEFAULT_FOLD_PATTERN_2 = { '\r', '\n', '\t' };
   42.74 +
   42.75 +    /**
   42.76 +     * The pattern used to identify a fold in Mozilla Calendar/Sunbird and KOrganizer.
   42.77 +     */
   42.78 +    private static final char[] RELAXED_FOLD_PATTERN_1 = { '\n', ' ' };
   42.79 +    
   42.80 +    /** 
   42.81 +     * The pattern used to identify a fold in Microsoft Outlook 2007. 
   42.82 +     */ 
   42.83 +    private static final char[] RELAXED_FOLD_PATTERN_2 = { '\n', '\t' };
   42.84 +    
   42.85 +    private char[][] patterns;
   42.86 +
   42.87 +    private char[][] buffers;
   42.88 +
   42.89 +    private int linesUnfolded;
   42.90 +    
   42.91 +    private int maxPatternLength = 0;
   42.92 +
   42.93 +    /**
   42.94 +     * Creates a new unfolding reader instance. Relaxed unfolding flag is read from system property.
   42.95 +     * @param in the reader to unfold from
   42.96 +     */
   42.97 +    public UnfoldingReader(final Reader in) {
   42.98 +        this(in, DEFAULT_FOLD_PATTERN_1.length, CompatibilityHints
   42.99 +                .isHintEnabled(CompatibilityHints.KEY_RELAXED_UNFOLDING));
  42.100 +    }
  42.101 +    
  42.102 +    /**
  42.103 +     * @param in reader source for data
  42.104 +     * @param size the buffer size
  42.105 +     */
  42.106 +    public UnfoldingReader(final Reader in, int size) {
  42.107 +        this(in, size, CompatibilityHints.isHintEnabled(CompatibilityHints.KEY_RELAXED_UNFOLDING));
  42.108 +    }
  42.109 +
  42.110 +    /**
  42.111 +     * @param in reader source for data
  42.112 +     * @param relaxed indicates whether relaxed unfolding is enabled
  42.113 +     */
  42.114 +    public UnfoldingReader(final Reader in, boolean relaxed) {
  42.115 +        this(in, DEFAULT_FOLD_PATTERN_1.length, relaxed); 
  42.116 +    }
  42.117 +
  42.118 +    /**
  42.119 +     * Creates a new unfolding reader instance.
  42.120 +     * @param in a reader to read from
  42.121 +     * @param size the buffer size
  42.122 +     * @param relaxed specifies whether unfolding is relaxed
  42.123 +     */
  42.124 +    public UnfoldingReader(final Reader in, int size, final boolean relaxed) {
  42.125 +        super(in, size);
  42.126 +        if (relaxed) {
  42.127 +            patterns = new char[4][];
  42.128 +            patterns[0] = DEFAULT_FOLD_PATTERN_1;
  42.129 +            patterns[1] = DEFAULT_FOLD_PATTERN_2;
  42.130 +            patterns[2] = RELAXED_FOLD_PATTERN_1;
  42.131 +            patterns[3] = RELAXED_FOLD_PATTERN_2;
  42.132 +        }
  42.133 +        else {
  42.134 +            patterns = new char[2][];
  42.135 +            patterns[0] = DEFAULT_FOLD_PATTERN_1;
  42.136 +            patterns[1] = DEFAULT_FOLD_PATTERN_2;
  42.137 +        }
  42.138 +        buffers = new char[patterns.length][];
  42.139 +        for (int i = 0; i < patterns.length; i++) {
  42.140 +            buffers[i] = new char[patterns[i].length];
  42.141 +            maxPatternLength = Math.max(maxPatternLength, patterns[i].length);
  42.142 +        }
  42.143 +    }
  42.144 +
  42.145 +    /**
  42.146 +     * @return number of lines unfolded so far while reading
  42.147 +     */
  42.148 +    public final int getLinesUnfolded() {
  42.149 +        return linesUnfolded;
  42.150 +    }
  42.151 +
  42.152 +    /**
  42.153 +     * {@inheritDoc}
  42.154 +     */
  42.155 +    public final int read() throws IOException {
  42.156 +        final int c = super.read();
  42.157 +        boolean doUnfold = false;
  42.158 +        for (int i = 0; i < patterns.length; i++) {
  42.159 +            if (c == patterns[i][0]) {
  42.160 +                doUnfold = true;
  42.161 +                break;
  42.162 +            }
  42.163 +        }
  42.164 +        if (!doUnfold) {
  42.165 +            return c;
  42.166 +        }
  42.167 +        else {
  42.168 +            unread(c);
  42.169 +        }
  42.170 +
  42.171 +        unfold();
  42.172 +
  42.173 +        return super.read();
  42.174 +    }
  42.175 +    
  42.176 +    /**
  42.177 +     * {@inheritDoc}
  42.178 +     */
  42.179 +    public int read(final char[] cbuf, final int off, final int len) throws IOException {
  42.180 +        final int read = super.read(cbuf, off, len);
  42.181 +        boolean doUnfold = false;
  42.182 +        for (int i = 0; i < patterns.length; i++) {
  42.183 +            if (read > 0 && cbuf[0] == patterns[i][0]) {
  42.184 +                doUnfold = true;
  42.185 +                break;
  42.186 +            }
  42.187 +            else {
  42.188 +                for (int j = 0; j < read; j++) {
  42.189 +                    if (cbuf[j] == patterns[i][0]) {
  42.190 +                        unread(cbuf, j, read - j);
  42.191 +                        return j;
  42.192 +                    }
  42.193 +                }
  42.194 +            }
  42.195 +        }
  42.196 +        if (!doUnfold) {
  42.197 +            return read;
  42.198 +        }
  42.199 +        else {
  42.200 +            unread(cbuf, off, read);
  42.201 +        }
  42.202 +
  42.203 +        unfold();
  42.204 +
  42.205 +        return super.read(cbuf, off, maxPatternLength);
  42.206 +    }
  42.207 +    
  42.208 +    private void unfold() throws IOException {
  42.209 +        // need to loop since one line fold might be directly followed by another
  42.210 +        boolean didUnfold;
  42.211 +        do {
  42.212 +            didUnfold = false;
  42.213 +
  42.214 +            for (int i = 0; i < buffers.length; i++) {
  42.215 +                int read = 0;             
  42.216 +                while (read < buffers[i].length) {
  42.217 +                    final int partialRead = super.read(buffers[i], read, buffers[i].length - read);
  42.218 +                    if (partialRead < 0) {
  42.219 +                        break;
  42.220 +                    }
  42.221 +                    read += partialRead;
  42.222 +                }
  42.223 +                if (read > 0) {
  42.224 +                    if (!Arrays.equals(patterns[i], buffers[i])) {
  42.225 +                        unread(buffers[i], 0, read);
  42.226 +                    }
  42.227 +                    else {
  42.228 +                        if (log.isTraceEnabled()) {
  42.229 +                            log.trace("Unfolding...");
  42.230 +                        }
  42.231 +                        linesUnfolded++;
  42.232 +                        didUnfold = true;
  42.233 +                    }
  42.234 +                }
  42.235 +//                else {
  42.236 +//                    return read;
  42.237 +//                }
  42.238 +            }
  42.239 +        }
  42.240 +        while (didUnfold);
  42.241 +    }
  42.242 +}
    43.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    43.2 +++ b/src/net/fortuna/ical4j/filter/AbstractDateRule.java	Tue Feb 10 18:12:00 2015 +0100
    43.3 @@ -0,0 +1,54 @@
    43.4 +/**
    43.5 + * Copyright (c) 2012, Ben Fortuna
    43.6 + * All rights reserved.
    43.7 + *
    43.8 + * Redistribution and use in source and binary forms, with or without
    43.9 + * modification, are permitted provided that the following conditions
   43.10 + * are met:
   43.11 + *
   43.12 + *  o Redistributions of source code must retain the above copyright
   43.13 + * notice, this list of conditions and the following disclaimer.
   43.14 + *
   43.15 + *  o Redistributions in binary form must reproduce the above copyright
   43.16 + * notice, this list of conditions and the following disclaimer in the
   43.17 + * documentation and/or other materials provided with the distribution.
   43.18 + *
   43.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
   43.20 + * may be used to endorse or promote products derived from this software
   43.21 + * without specific prior written permission.
   43.22 + *
   43.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   43.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   43.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   43.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
   43.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   43.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   43.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   43.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   43.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   43.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   43.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   43.34 + */
   43.35 +package net.fortuna.ical4j.filter;
   43.36 +
   43.37 +import java.util.Date;
   43.38 +
   43.39 +/**
   43.40 + * @author fortuna
   43.41 + *
   43.42 + */
   43.43 +public abstract class AbstractDateRule implements Rule {
   43.44 +
   43.45 +    /**
   43.46 +     * {@inheritDoc}
   43.47 +     */
   43.48 +    public boolean match(Object o) {
   43.49 +        return match((Date) o);
   43.50 +    }
   43.51 +
   43.52 +    /**
   43.53 +     * @param date the date to check
   43.54 +     * @return true if the date matches rule requirements, otherwise false
   43.55 +     */
   43.56 +    protected abstract boolean match(Date date);
   43.57 +}
    44.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    44.2 +++ b/src/net/fortuna/ical4j/filter/ComponentRule.java	Tue Feb 10 18:12:00 2015 +0100
    44.3 @@ -0,0 +1,58 @@
    44.4 +/**
    44.5 + * Copyright (c) 2012, Ben Fortuna
    44.6 + * All rights reserved.
    44.7 + *
    44.8 + * Redistribution and use in source and binary forms, with or without
    44.9 + * modification, are permitted provided that the following conditions
   44.10 + * are met:
   44.11 + *
   44.12 + *  o Redistributions of source code must retain the above copyright
   44.13 + * notice, this list of conditions and the following disclaimer.
   44.14 + *
   44.15 + *  o Redistributions in binary form must reproduce the above copyright
   44.16 + * notice, this list of conditions and the following disclaimer in the
   44.17 + * documentation and/or other materials provided with the distribution.
   44.18 + *
   44.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
   44.20 + * may be used to endorse or promote products derived from this software
   44.21 + * without specific prior written permission.
   44.22 + *
   44.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   44.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   44.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   44.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
   44.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   44.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   44.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   44.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   44.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   44.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   44.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   44.34 + */
   44.35 +package net.fortuna.ical4j.filter;
   44.36 +
   44.37 +import net.fortuna.ical4j.model.Component;
   44.38 +
   44.39 +/**
   44.40 + * $Id$
   44.41 + *
   44.42 + * Created on 2/02/2006
   44.43 + *
   44.44 + * An abstract rule implementation serving as the base class for component matching rule implementations.
   44.45 + * @author Ben Fortuna
   44.46 + */
   44.47 +public abstract class ComponentRule implements Rule {
   44.48 +
   44.49 +    /**
   44.50 +     * {@inheritDoc}
   44.51 +     */
   44.52 +    public final boolean match(final Object o) {
   44.53 +        return match((Component) o);
   44.54 +    }
   44.55 +
   44.56 +    /**
   44.57 +     * @param component a component to match on
   44.58 +     * @return true if the component matches the rule, otherwise false
   44.59 +     */
   44.60 +    public abstract boolean match(Component component);
   44.61 +}
    45.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    45.2 +++ b/src/net/fortuna/ical4j/filter/DateInRangeRule.java	Tue Feb 10 18:12:00 2015 +0100
    45.3 @@ -0,0 +1,64 @@
    45.4 +/**
    45.5 + * Copyright (c) 2012, Ben Fortuna
    45.6 + * All rights reserved.
    45.7 + *
    45.8 + * Redistribution and use in source and binary forms, with or without
    45.9 + * modification, are permitted provided that the following conditions
   45.10 + * are met:
   45.11 + *
   45.12 + *  o Redistributions of source code must retain the above copyright
   45.13 + * notice, this list of conditions and the following disclaimer.
   45.14 + *
   45.15 + *  o Redistributions in binary form must reproduce the above copyright
   45.16 + * notice, this list of conditions and the following disclaimer in the
   45.17 + * documentation and/or other materials provided with the distribution.
   45.18 + *
   45.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
   45.20 + * may be used to endorse or promote products derived from this software
   45.21 + * without specific prior written permission.
   45.22 + *
   45.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   45.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   45.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   45.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
   45.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   45.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   45.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   45.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   45.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   45.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   45.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   45.34 + */
   45.35 +package net.fortuna.ical4j.filter;
   45.36 +
   45.37 +import java.util.Date;
   45.38 +
   45.39 +import net.fortuna.ical4j.model.DateRange;
   45.40 +
   45.41 +/**
   45.42 + * @author fortuna
   45.43 + *
   45.44 + */
   45.45 +public class DateInRangeRule extends AbstractDateRule {
   45.46 +
   45.47 +    private final DateRange range;
   45.48 +    
   45.49 +    private final int inclusiveMask;
   45.50 +    
   45.51 +    /**
   45.52 +     * @param range the range to check
   45.53 +     * @param inclusiveMask indicates inclusiveness of start and end of the range
   45.54 +     */
   45.55 +    public DateInRangeRule(DateRange range, int inclusiveMask) {
   45.56 +        this.range = range;
   45.57 +        this.inclusiveMask = inclusiveMask;
   45.58 +    }
   45.59 +    
   45.60 +    /**
   45.61 +     * {@inheritDoc}
   45.62 +     */
   45.63 +    protected boolean match(Date date) {
   45.64 +        return range.includes(date, inclusiveMask);
   45.65 +    }
   45.66 +
   45.67 +}
    46.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    46.2 +++ b/src/net/fortuna/ical4j/filter/Filter.java	Tue Feb 10 18:12:00 2015 +0100
    46.3 @@ -0,0 +1,184 @@
    46.4 +/**
    46.5 + * Copyright (c) 2012, Ben Fortuna
    46.6 + * All rights reserved.
    46.7 + *
    46.8 + * Redistribution and use in source and binary forms, with or without
    46.9 + * modification, are permitted provided that the following conditions
   46.10 + * are met:
   46.11 + *
   46.12 + *  o Redistributions of source code must retain the above copyright
   46.13 + * notice, this list of conditions and the following disclaimer.
   46.14 + *
   46.15 + *  o Redistributions in binary form must reproduce the above copyright
   46.16 + * notice, this list of conditions and the following disclaimer in the
   46.17 + * documentation and/or other materials provided with the distribution.
   46.18 + *
   46.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
   46.20 + * may be used to endorse or promote products derived from this software
   46.21 + * without specific prior written permission.
   46.22 + *
   46.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   46.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   46.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   46.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
   46.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   46.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   46.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   46.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   46.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   46.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   46.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   46.34 + */
   46.35 +package net.fortuna.ical4j.filter;
   46.36 +
   46.37 +import java.lang.reflect.Array;
   46.38 +import java.util.ArrayList;
   46.39 +import java.util.Arrays;
   46.40 +import java.util.Collection;
   46.41 +import java.util.Iterator;
   46.42 +import java.util.List;
   46.43 +
   46.44 +import org.apache.commons.logging.Log;
   46.45 +import org.apache.commons.logging.LogFactory;
   46.46 +
   46.47 +/**
   46.48 + * $Id$
   46.49 + *
   46.50 + * Created: Feb 1, 2006
   46.51 + *
   46.52 + * Performs collection filtering based on a set of rules. A filter may dictate whether at least one rule or all rules
   46.53 + * are matched.
   46.54 + * 
   46.55 + * NOTE: Implementation of filter rules has changed in recent releases to fix behaviour. Please ensure you update
   46.56 + * your code to use explicit constructors.
   46.57 + * 
   46.58 + * @author Ben Fortuna
   46.59 + */
   46.60 +public class Filter {
   46.61 +
   46.62 +    /**
   46.63 +     * Indicates that any rule may be matched to include an object in the filtered collection.
   46.64 +     */
   46.65 +    public static final int MATCH_ANY = 1;
   46.66 +
   46.67 +    /**
   46.68 +     * Indicates that all rules must be matched to include an object in the filtered collection.
   46.69 +     */
   46.70 +    public static final int MATCH_ALL = 2;
   46.71 +
   46.72 +    private List rules;
   46.73 +
   46.74 +    private int type;
   46.75 +
   46.76 +    /**
   46.77 +     * Constructor.
   46.78 +     * @param rule a rule that defines this filter
   46.79 +     * @deprecated Prior implementations of this class did not work as advertised, so
   46.80 +     * to avoid confusion please use constructors that explicitly specify the desired behaviour
   46.81 +     */
   46.82 +    public Filter(final Rule rule) {
   46.83 +        this(new Rule[] { rule }, MATCH_ANY);
   46.84 +    }
   46.85 +
   46.86 +    /**
   46.87 +     * Constructor.
   46.88 +     * @param rules an array of rules that define this filter
   46.89 +     * @param type the type of matching to apply
   46.90 +     * @see Filter#MATCH_ALL
   46.91 +     * @see Filter#MATCH_ANY
   46.92 +     */
   46.93 +    public Filter(final Rule[] rules, final int type) {
   46.94 +        this.rules = Arrays.asList(rules);
   46.95 +        this.type = type;
   46.96 +    }
   46.97 +
   46.98 +    /**
   46.99 +     * Filter the given collection into a new collection.
  46.100 +     * @param c a collection to filter
  46.101 +     * @return a filtered collection
  46.102 +     */
  46.103 +    public final Collection filter(final Collection c) {
  46.104 +        if (getRules() != null && getRules().length > 0) {
  46.105 +            // attempt to use the same concrete collection type
  46.106 +            // as is passed in..
  46.107 +            Collection filtered;
  46.108 +            try {
  46.109 +                filtered = (Collection) c.getClass().newInstance();
  46.110 +            }
  46.111 +            catch (Exception e) {
  46.112 +                filtered = new ArrayList();
  46.113 +            }
  46.114 +
  46.115 +            if (type == MATCH_ALL) {
  46.116 +                filtered.addAll(matchAll(c));
  46.117 +            }
  46.118 +            else {
  46.119 +                filtered.addAll(matchAny(c));
  46.120 +            }
  46.121 +            return filtered;
  46.122 +        }
  46.123 +        return c;
  46.124 +    }
  46.125 +
  46.126 +    private List matchAll(Collection c) {
  46.127 +        List list = new ArrayList(c);
  46.128 +        List temp = new ArrayList();
  46.129 +        for (int n = 0; n < getRules().length; n++) {
  46.130 +            for (final Iterator i = list.iterator(); i.hasNext();) {
  46.131 +                final Object o = i.next();
  46.132 +                if (getRules()[n].match(o)) {
  46.133 +                    temp.add(o);
  46.134 +                }
  46.135 +            }
  46.136 +            list = temp;
  46.137 +            temp = new ArrayList();
  46.138 +        }
  46.139 +        return list;
  46.140 +    }
  46.141 +
  46.142 +    private List matchAny(Collection c) {
  46.143 +        final List matches = new ArrayList();
  46.144 +        for (Iterator i = c.iterator(); i.hasNext();) {
  46.145 +            final Object o = i.next();
  46.146 +            for (int n = 0; n < getRules().length; n++) {
  46.147 +                if (getRules()[n].match(o)) {
  46.148 +                    matches.add(o);
  46.149 +                    break;
  46.150 +                }
  46.151 +            }
  46.152 +        }
  46.153 +        return matches;
  46.154 +    }
  46.155 +    
  46.156 +    /**
  46.157 +     * Returns a filtered subset of the specified array.
  46.158 +     * @param objects an array to filter
  46.159 +     * @return a filtered array
  46.160 +     */
  46.161 +    public final Object[] filter(final Object[] objects) {
  46.162 +        final Collection filtered = filter(Arrays.asList(objects));
  46.163 +        try {
  46.164 +            return filtered.toArray((Object[]) Array.newInstance(objects
  46.165 +                    .getClass(), filtered.size()));
  46.166 +        }
  46.167 +        catch (ArrayStoreException ase) {
  46.168 +            Log log = LogFactory.getLog(Filter.class);
  46.169 +            log.warn("Error converting to array - using default approach", ase);
  46.170 +        }
  46.171 +        return filtered.toArray();
  46.172 +    }
  46.173 +
  46.174 +    /**
  46.175 +     * @return Returns the rules.
  46.176 +     */
  46.177 +    public final Rule[] getRules() {
  46.178 +        return (Rule[]) rules.toArray(new Rule[rules.size()]);
  46.179 +    }
  46.180 +
  46.181 +    /**
  46.182 +     * @param rules The rules to set.
  46.183 +     */
  46.184 +    public final void setRules(final Rule[] rules) {
  46.185 +        this.rules = Arrays.asList(rules);
  46.186 +    }
  46.187 +}
    47.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    47.2 +++ b/src/net/fortuna/ical4j/filter/HasPropertyRule.java	Tue Feb 10 18:12:00 2015 +0100
    47.3 @@ -0,0 +1,92 @@
    47.4 +/**
    47.5 + * Copyright (c) 2012, Ben Fortuna
    47.6 + * All rights reserved.
    47.7 + *
    47.8 + * Redistribution and use in source and binary forms, with or without
    47.9 + * modification, are permitted provided that the following conditions
   47.10 + * are met:
   47.11 + *
   47.12 + *  o Redistributions of source code must retain the above copyright
   47.13 + * notice, this list of conditions and the following disclaimer.
   47.14 + *
   47.15 + *  o Redistributions in binary form must reproduce the above copyright
   47.16 + * notice, this list of conditions and the following disclaimer in the
   47.17 + * documentation and/or other materials provided with the distribution.
   47.18 + *
   47.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
   47.20 + * may be used to endorse or promote products derived from this software
   47.21 + * without specific prior written permission.
   47.22 + *
   47.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   47.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   47.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   47.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
   47.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   47.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   47.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   47.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   47.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   47.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   47.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   47.34 + */
   47.35 +package net.fortuna.ical4j.filter;
   47.36 +
   47.37 +import java.util.Iterator;
   47.38 +
   47.39 +import net.fortuna.ical4j.model.Component;
   47.40 +import net.fortuna.ical4j.model.Property;
   47.41 +import net.fortuna.ical4j.model.PropertyList;
   47.42 +
   47.43 +/**
   47.44 + * $Id$
   47.45 + *
   47.46 + * Created on 5/02/2006
   47.47 + *
   47.48 + * A rule that matches any component containing the specified property. Note that this rule ignores any parameters
   47.49 + * matching only on the value of the property.
   47.50 + * @author Ben Fortuna
   47.51 + */
   47.52 +public class HasPropertyRule extends ComponentRule {
   47.53 +
   47.54 +    private Property property;
   47.55 +
   47.56 +    private boolean matchEquals;
   47.57 +
   47.58 +    /**
   47.59 +     * Constructs a new instance with the specified property. Ignores any parameters matching only on the value of the
   47.60 +     * property.
   47.61 +     * @param property a property instance to check for
   47.62 +     */
   47.63 +    public HasPropertyRule(final Property property) {
   47.64 +        this(property, false);
   47.65 +    }
   47.66 +
   47.67 +    /**
   47.68 +     * Constructs a new instance with the specified property.
   47.69 +     * @param property the property to match
   47.70 +     * @param matchEquals if true, matches must contain an identical property (as indicated by
   47.71 +     * <code>Property.equals()</code>
   47.72 +     */
   47.73 +    public HasPropertyRule(final Property property, final boolean matchEquals) {
   47.74 +        this.property = property;
   47.75 +        this.matchEquals = matchEquals;
   47.76 +    }
   47.77 +
   47.78 +    /**
   47.79 +     * {@inheritDoc}
   47.80 +     */
   47.81 +    public final boolean match(final Component component) {
   47.82 +        boolean match = false;
   47.83 +        final PropertyList properties = component.getProperties(property.getName());
   47.84 +        for (final Iterator i = properties.iterator(); i.hasNext();) {
   47.85 +            final Property p = (Property) i.next();
   47.86 +            if (matchEquals && property.equals(p)) {
   47.87 +                match = true;
   47.88 +            }
   47.89 +            else if (property.getValue().equals(p.getValue())) {
   47.90 +                match = true;
   47.91 +            }
   47.92 +        }
   47.93 +        return match;
   47.94 +    }
   47.95 +}
    48.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    48.2 +++ b/src/net/fortuna/ical4j/filter/PeriodRule.java	Tue Feb 10 18:12:00 2015 +0100
    48.3 @@ -0,0 +1,89 @@
    48.4 +/**
    48.5 + * Copyright (c) 2012, Ben Fortuna
    48.6 + * All rights reserved.
    48.7 + *
    48.8 + * Redistribution and use in source and binary forms, with or without
    48.9 + * modification, are permitted provided that the following conditions
   48.10 + * are met:
   48.11 + *
   48.12 + *  o Redistributions of source code must retain the above copyright
   48.13 + * notice, this list of conditions and the following disclaimer.
   48.14 + *
   48.15 + *  o Redistributions in binary form must reproduce the above copyright
   48.16 + * notice, this list of conditions and the following disclaimer in the
   48.17 + * documentation and/or other materials provided with the distribution.
   48.18 + *
   48.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
   48.20 + * may be used to endorse or promote products derived from this software
   48.21 + * without specific prior written permission.
   48.22 + *
   48.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   48.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   48.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   48.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
   48.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   48.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   48.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   48.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   48.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   48.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   48.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   48.34 + */
   48.35 +package net.fortuna.ical4j.filter;
   48.36 +
   48.37 +import net.fortuna.ical4j.model.Component;
   48.38 +import net.fortuna.ical4j.model.Period;
   48.39 +import net.fortuna.ical4j.model.PeriodList;
   48.40 +
   48.41 +/**
   48.42 + * $Id$
   48.43 + *
   48.44 + * Created on 2/02/2006
   48.45 + *
   48.46 + * A rule that matches any component that occurs in the specified time period.
   48.47 + * @author Ben Fortuna
   48.48 + */
   48.49 +public class PeriodRule extends ComponentRule {
   48.50 +
   48.51 +    private Period period;
   48.52 +
   48.53 +    /**
   48.54 +     * Constructs a new instance using the specified period.
   48.55 +     * @param period a period instance to match on
   48.56 +     */
   48.57 +    public PeriodRule(final Period period) {
   48.58 +        this.period = period;
   48.59 +    }
   48.60 +
   48.61 +    /**
   48.62 +     * {@inheritDoc}
   48.63 +     */
   48.64 +    public final boolean match(final Component component) {
   48.65 +
   48.66 +        /*
   48.67 +        DtStart start = (DtStart) component.getProperty(Property.DTSTART);
   48.68 +        DtEnd end = (DtEnd) component.getProperty(Property.DTEND);
   48.69 +        Duration duration = (Duration) component.getProperty(Property.DURATION);
   48.70 +        
   48.71 +        if (start == null) {
   48.72 +            return false;
   48.73 +        }
   48.74 +        
   48.75 +        // detect events that consume no time..
   48.76 +        if (end == null && duration == null) {
   48.77 +            if (period.includes(start.getDate(), Period.INCLUSIVE_START)) {
   48.78 +                return true;
   48.79 +            }
   48.80 +        }
   48.81 +        */
   48.82 +        
   48.83 +//        try {
   48.84 +        final PeriodList recurrenceSet = component.calculateRecurrenceSet(period);
   48.85 +        return (!recurrenceSet.isEmpty());
   48.86 +//        }
   48.87 +//        catch (ValidationException ve) {
   48.88 +//            log.error("Invalid component data", ve);
   48.89 +//            return false;
   48.90 +//        }
   48.91 +    }
   48.92 +}
    49.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    49.2 +++ b/src/net/fortuna/ical4j/filter/Rule.java	Tue Feb 10 18:12:00 2015 +0100
    49.3 @@ -0,0 +1,50 @@
    49.4 +/**
    49.5 + * Copyright (c) 2012, Ben Fortuna
    49.6 + * All rights reserved.
    49.7 + *
    49.8 + * Redistribution and use in source and binary forms, with or without
    49.9 + * modification, are permitted provided that the following conditions
   49.10 + * are met:
   49.11 + *
   49.12 + *  o Redistributions of source code must retain the above copyright
   49.13 + * notice, this list of conditions and the following disclaimer.
   49.14 + *
   49.15 + *  o Redistributions in binary form must reproduce the above copyright
   49.16 + * notice, this list of conditions and the following disclaimer in the
   49.17 + * documentation and/or other materials provided with the distribution.
   49.18 + *
   49.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
   49.20 + * may be used to endorse or promote products derived from this software
   49.21 + * without specific prior written permission.
   49.22 + *
   49.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   49.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   49.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   49.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
   49.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   49.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   49.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   49.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   49.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   49.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   49.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   49.34 + */
   49.35 +package net.fortuna.ical4j.filter;
   49.36 +
   49.37 +/**
   49.38 + * $Id$
   49.39 + *
   49.40 + * Created: Feb 1, 2006
   49.41 + *
   49.42 + * Implementors dictate whether a given object is classified as a "match" for the enclosing filter.
   49.43 + * @author Ben Fortuna
   49.44 + */
   49.45 +public interface Rule {
   49.46 +
   49.47 +    /**
   49.48 +     * Indicates whether the specified object passes the conditions required to match this rule.
   49.49 +     * @param o an object to match
   49.50 +     * @return boolean indicated if the specified object matches this rule
   49.51 +     */
   49.52 +    boolean match(Object o);
   49.53 +}
    50.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    50.2 +++ b/src/net/fortuna/ical4j/model/AbstractContentFactory.java	Tue Feb 10 18:12:00 2015 +0100
    50.3 @@ -0,0 +1,98 @@
    50.4 +/**
    50.5 + * Copyright (c) 2012, Ben Fortuna
    50.6 + * All rights reserved.
    50.7 + *
    50.8 + * Redistribution and use in source and binary forms, with or without
    50.9 + * modification, are permitted provided that the following conditions
   50.10 + * are met:
   50.11 + *
   50.12 + *  o Redistributions of source code must retain the above copyright
   50.13 + * notice, this list of conditions and the following disclaimer.
   50.14 + *
   50.15 + *  o Redistributions in binary form must reproduce the above copyright
   50.16 + * notice, this list of conditions and the following disclaimer in the
   50.17 + * documentation and/or other materials provided with the distribution.
   50.18 + *
   50.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
   50.20 + * may be used to endorse or promote products derived from this software
   50.21 + * without specific prior written permission.
   50.22 + *
   50.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   50.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   50.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   50.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
   50.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   50.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   50.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   50.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   50.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   50.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   50.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   50.34 + */
   50.35 +package net.fortuna.ical4j.model;
   50.36 +
   50.37 +import java.util.HashMap;
   50.38 +import java.util.Map;
   50.39 +
   50.40 +import net.fortuna.ical4j.util.CompatibilityHints;
   50.41 +
   50.42 +/**
   50.43 + * $Id$
   50.44 + *
   50.45 + * Created on 28/01/2007
   50.46 + *
   50.47 + * Abstract implementation of a content factory.
   50.48 + * @author Ben Fortuna
   50.49 + */
   50.50 +public abstract class AbstractContentFactory {
   50.51 +
   50.52 +    /**
   50.53 +     * Map of delegate factories.
   50.54 +     */
   50.55 +    private final Map defaultFactories;
   50.56 +
   50.57 +    private final Map extendedFactories;
   50.58 +
   50.59 +    /**
   50.60 +     * Default constructor.
   50.61 +     */
   50.62 +    public AbstractContentFactory() {
   50.63 +        defaultFactories = new HashMap();
   50.64 +        extendedFactories = new HashMap();
   50.65 +    }
   50.66 +
   50.67 +    /**
   50.68 +     * Register a standard content factory.
   50.69 +     */
   50.70 +    protected final void registerDefaultFactory(String key, Object factory) {
   50.71 +        defaultFactories.put(key, factory);
   50.72 +    }
   50.73 +
   50.74 +    /**
   50.75 +     * Register a non-standard content factory.
   50.76 +     */
   50.77 +    protected final void registerExtendedFactory(String key, Object factory) {
   50.78 +        extendedFactories.put(key, factory);
   50.79 +    }
   50.80 +
   50.81 +    /**
   50.82 +     * @param key a factory key
   50.83 +     * @return a factory associated with the specified key, giving preference to
   50.84 +     * standard factories
   50.85 +     */
   50.86 +    protected final Object getFactory(String key) {
   50.87 +        Object factory = defaultFactories.get(key);
   50.88 +        if (factory == null) {
   50.89 +            factory = extendedFactories.get(key);
   50.90 +        }
   50.91 +        return factory;
   50.92 +    }
   50.93 +    
   50.94 +    /**
   50.95 +     * @return true if non-standard names are allowed, otherwise false
   50.96 +     */
   50.97 +    protected boolean allowIllegalNames() {
   50.98 +        return CompatibilityHints
   50.99 +                .isHintEnabled(CompatibilityHints.KEY_RELAXED_PARSING);
  50.100 +    }
  50.101 +}
    51.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    51.2 +++ b/src/net/fortuna/ical4j/model/AddressList.java	Tue Feb 10 18:12:00 2015 +0100
    51.3 @@ -0,0 +1,147 @@
    51.4 +/**
    51.5 + * Copyright (c) 2012, Ben Fortuna
    51.6 + * All rights reserved.
    51.7 + *
    51.8 + * Redistribution and use in source and binary forms, with or without
    51.9 + * modification, are permitted provided that the following conditions
   51.10 + * are met:
   51.11 + *
   51.12 + *  o Redistributions of source code must retain the above copyright
   51.13 + * notice, this list of conditions and the following disclaimer.
   51.14 + *
   51.15 + *  o Redistributions in binary form must reproduce the above copyright
   51.16 + * notice, this list of conditions and the following disclaimer in the
   51.17 + * documentation and/or other materials provided with the distribution.
   51.18 + *
   51.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
   51.20 + * may be used to endorse or promote products derived from this software
   51.21 + * without specific prior written permission.
   51.22 + *
   51.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   51.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   51.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   51.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
   51.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   51.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   51.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   51.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   51.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   51.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   51.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   51.34 + */
   51.35 +package net.fortuna.ical4j.model;
   51.36 +
   51.37 +import java.io.Serializable;
   51.38 +import java.net.URI;
   51.39 +import java.net.URISyntaxException;
   51.40 +import java.util.Iterator;
   51.41 +import java.util.List;
   51.42 +import java.util.StringTokenizer;
   51.43 +
   51.44 +import net.fortuna.ical4j.util.CompatibilityHints;
   51.45 +import net.fortuna.ical4j.util.Strings;
   51.46 +import net.fortuna.ical4j.util.Uris;
   51.47 +import edu.emory.mathcs.backport.java.util.concurrent.CopyOnWriteArrayList;
   51.48 +
   51.49 +/**
   51.50 + * $Id$ [23-Apr-2004]
   51.51 + *
   51.52 + * Defines a list of iCalendar addresses.
   51.53 + * @author Ben Fortuna
   51.54 + */
   51.55 +public class AddressList implements Serializable {
   51.56 +
   51.57 +    private static final long serialVersionUID = 81383256078213569L;
   51.58 +
   51.59 +    private List addresses;
   51.60 +
   51.61 +    /**
   51.62 +     * Default constructor.
   51.63 +     */
   51.64 +    public AddressList() {
   51.65 +        addresses = new CopyOnWriteArrayList();
   51.66 +    }
   51.67 +
   51.68 +    /**
   51.69 +     * Parses the specified string representation to create a list of addresses.
   51.70 +     * @param aValue a string representation of a list of addresses
   51.71 +     * @throws URISyntaxException where the specified string is not a valid representation
   51.72 +     */
   51.73 +    public AddressList(final String aValue) throws URISyntaxException {
   51.74 +        addresses = new CopyOnWriteArrayList();
   51.75 +        final StringTokenizer t = new StringTokenizer(aValue, ",");
   51.76 +        while (t.hasMoreTokens()) {
   51.77 +
   51.78 +            try {
   51.79 +                addresses.add(new URI(Uris.encode(Strings
   51.80 +                        .unquote(t.nextToken()))));
   51.81 +            }
   51.82 +            catch (URISyntaxException use) {
   51.83 +                // ignore invalid addresses if relaxed parsing is enabled..
   51.84 +                if (!CompatibilityHints.isHintEnabled(
   51.85 +                        CompatibilityHints.KEY_RELAXED_PARSING)) {
   51.86 +
   51.87 +                    throw use;
   51.88 +                }
   51.89 +            }
   51.90 +        }
   51.91 +    }
   51.92 +
   51.93 +    /**
   51.94 +     * {@inheritDoc}
   51.95 +     */
   51.96 +    public final String toString() {
   51.97 +        final StringBuffer b = new StringBuffer();
   51.98 +        for (final Iterator i = addresses.iterator(); i.hasNext();) {
   51.99 +            b.append(Strings.quote(Uris.decode(Strings.valueOf(i.next()))));
  51.100 +            if (i.hasNext()) {
  51.101 +                b.append(',');
  51.102 +            }
  51.103 +        }
  51.104 +        return b.toString();
  51.105 +    }
  51.106 +
  51.107 +    /**
  51.108 +     * Add an address to the list.
  51.109 +     * @param address the address to add
  51.110 +     * @return true
  51.111 +     * @see List#add(java.lang.Object)
  51.112 +     */
  51.113 +    public final boolean add(final URI address) {
  51.114 +        return addresses.add(address);
  51.115 +    }
  51.116 +
  51.117 +    /**
  51.118 +     * @return boolean indicates if the list is empty
  51.119 +     * @see List#isEmpty()
  51.120 +     */
  51.121 +    public final boolean isEmpty() {
  51.122 +        return addresses.isEmpty();
  51.123 +    }
  51.124 +
  51.125 +    /**
  51.126 +     * @return an iterator
  51.127 +     * @see List#iterator()
  51.128 +     */
  51.129 +    public final Iterator iterator() {
  51.130 +        return addresses.iterator();
  51.131 +    }
  51.132 +
  51.133 +    /**
  51.134 +     * Remove an address from the list.
  51.135 +     * @param address the address to remove
  51.136 +     * @return true if the list contained the specified address
  51.137 +     * @see List#remove(java.lang.Object)
  51.138 +     */
  51.139 +    public final boolean remove(final URI address) {
  51.140 +        return addresses.remove(address);
  51.141 +    }
  51.142 +
  51.143 +    /**
  51.144 +     * @return the number of addresses in the list
  51.145 +     * @see List#size()
  51.146 +     */
  51.147 +    public final int size() {
  51.148 +        return addresses.size();
  51.149 +    }
  51.150 +}
    52.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    52.2 +++ b/src/net/fortuna/ical4j/model/Calendar.java	Tue Feb 10 18:12:00 2015 +0100
    52.3 @@ -0,0 +1,555 @@
    52.4 +/**
    52.5 + * Copyright (c) 2012, Ben Fortuna
    52.6 + * All rights reserved.
    52.7 + *
    52.8 + * Redistribution and use in source and binary forms, with or without
    52.9 + * modification, are permitted provided that the following conditions
   52.10 + * are met:
   52.11 + *
   52.12 + *  o Redistributions of source code must retain the above copyright
   52.13 + * notice, this list of conditions and the following disclaimer.
   52.14 + *
   52.15 + *  o Redistributions in binary form must reproduce the above copyright
   52.16 + * notice, this list of conditions and the following disclaimer in the
   52.17 + * documentation and/or other materials provided with the distribution.
   52.18 + *
   52.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
   52.20 + * may be used to endorse or promote products derived from this software
   52.21 + * without specific prior written permission.
   52.22 + *
   52.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   52.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   52.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   52.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
   52.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   52.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   52.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   52.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   52.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   52.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   52.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   52.34 + */
   52.35 +package net.fortuna.ical4j.model;
   52.36 +
   52.37 +import java.io.IOException;
   52.38 +import java.io.Serializable;
   52.39 +import java.net.URISyntaxException;
   52.40 +import java.text.ParseException;
   52.41 +import java.util.Iterator;
   52.42 +
   52.43 +import net.fortuna.ical4j.model.component.CalendarComponent;
   52.44 +import net.fortuna.ical4j.model.property.CalScale;
   52.45 +import net.fortuna.ical4j.model.property.Method;
   52.46 +import net.fortuna.ical4j.model.property.ProdId;
   52.47 +import net.fortuna.ical4j.model.property.Version;
   52.48 +import net.fortuna.ical4j.model.property.XProperty;
   52.49 +import net.fortuna.ical4j.util.CompatibilityHints;
   52.50 +import net.fortuna.ical4j.util.ComponentValidator;
   52.51 +import net.fortuna.ical4j.util.PropertyValidator;
   52.52 +import net.fortuna.ical4j.util.Strings;
   52.53 +
   52.54 +import org.apache.commons.lang.builder.EqualsBuilder;
   52.55 +import org.apache.commons.lang.builder.HashCodeBuilder;
   52.56 +
   52.57 +/**
   52.58 + * $Id$ [Apr 5, 2004]
   52.59 + *
   52.60 + * Defines an iCalendar calendar.
   52.61 + * 
   52.62 + * <pre>
   52.63 + *    4.6 Calendar Components
   52.64 + *    
   52.65 + *       The body of the iCalendar object consists of a sequence of calendar
   52.66 + *       properties and one or more calendar components. The calendar
   52.67 + *       properties are attributes that apply to the calendar as a whole. The
   52.68 + *       calendar components are collections of properties that express a
   52.69 + *       particular calendar semantic. For example, the calendar component can
   52.70 + *       specify an event, a to-do, a journal entry, time zone information, or
   52.71 + *       free/busy time information, or an alarm.
   52.72 + *    
   52.73 + *       The body of the iCalendar object is defined by the following
   52.74 + *       notation:
   52.75 + *    
   52.76 + *         icalbody   = calprops component
   52.77 + *    
   52.78 + *         calprops   = 2*(
   52.79 + *    
   52.80 + *                    ; 'prodid' and 'version' are both REQUIRED,
   52.81 + *                    ; but MUST NOT occur more than once
   52.82 + *    
   52.83 + *                    prodid /version /
   52.84 + *    
   52.85 + *                    ; 'calscale' and 'method' are optional,
   52.86 + *                    ; but MUST NOT occur more than once
   52.87 + *    
   52.88 + *                    calscale        /
   52.89 + *                    method          /
   52.90 + *    
   52.91 + *                    x-prop
   52.92 + *    
   52.93 + *                    )
   52.94 + *    
   52.95 + *         component  = 1*(eventc / todoc / journalc / freebusyc /
   52.96 + *                    / timezonec / iana-comp / x-comp)
   52.97 + *    
   52.98 + *         iana-comp  = &quot;BEGIN&quot; &quot;:&quot; iana-token CRLF
   52.99 + *    
  52.100 + *                      1*contentline
  52.101 + *    
  52.102 + *                      &quot;END&quot; &quot;:&quot; iana-token CRLF
  52.103 + *    
  52.104 + *         x-comp     = &quot;BEGIN&quot; &quot;:&quot; x-name CRLF
  52.105 + *    
  52.106 + *                      1*contentline
  52.107 + *    
  52.108 + *                      &quot;END&quot; &quot;:&quot; x-name CRLF
  52.109 + * </pre>
  52.110 + * 
  52.111 + * Example 1 - Creating a new calendar:
  52.112 + * 
  52.113 + * <pre><code>
  52.114 + * Calendar calendar = new Calendar();
  52.115 + * calendar.getProperties().add(new ProdId(&quot;-//Ben Fortuna//iCal4j 1.0//EN&quot;));
  52.116 + * calendar.getProperties().add(Version.VERSION_2_0);
  52.117 + * calendar.getProperties().add(CalScale.GREGORIAN);
  52.118 + * 
  52.119 + * // Add events, etc..
  52.120 + * </code></pre>
  52.121 + * 
  52.122 + * @author Ben Fortuna
  52.123 + */
  52.124 +public class Calendar implements Serializable {
  52.125 +
  52.126 +    private static final long serialVersionUID = -1654118204678581940L;
  52.127 +
  52.128 +    /**
  52.129 +     * Begin token.
  52.130 +     */
  52.131 +    public static final String BEGIN = "BEGIN";
  52.132 +
  52.133 +    /**
  52.134 +     * Calendar token.
  52.135 +     */
  52.136 +    public static final String VCALENDAR = "VCALENDAR";
  52.137 +
  52.138 +    /**
  52.139 +     * End token.
  52.140 +     */
  52.141 +    public static final String END = "END";
  52.142 +
  52.143 +    private PropertyList properties;
  52.144 +
  52.145 +    private ComponentList components;
  52.146 +
  52.147 +    /**
  52.148 +     * Default constructor.
  52.149 +     */
  52.150 +    public Calendar() {
  52.151 +        this(new PropertyList(), new ComponentList());
  52.152 +    }
  52.153 +
  52.154 +    /**
  52.155 +     * Constructs a new calendar with no properties and the specified components.
  52.156 +     * @param components a list of components to add to the calendar
  52.157 +     */
  52.158 +    public Calendar(final ComponentList components) {
  52.159 +        this(new PropertyList(), components);
  52.160 +    }
  52.161 +
  52.162 +    /**
  52.163 +     * Constructor.
  52.164 +     * @param p a list of properties
  52.165 +     * @param c a list of components
  52.166 +     */
  52.167 +    public Calendar(final PropertyList p, final ComponentList c) {
  52.168 +        this.properties = p;
  52.169 +        this.components = c;
  52.170 +    }
  52.171 +
  52.172 +    /**
  52.173 +     * Creates a deep copy of the specified calendar.
  52.174 +     * @param c the calendar to copy
  52.175 +     * @throws IOException where an error occurs reading calendar data
  52.176 +     * @throws ParseException where calendar parsing fails
  52.177 +     * @throws URISyntaxException where an invalid URI string is encountered
  52.178 +     */
  52.179 +    public Calendar(Calendar c) throws ParseException, IOException,
  52.180 +            URISyntaxException {
  52.181 +        
  52.182 +        this(new PropertyList(c.getProperties()), new ComponentList(c
  52.183 +                .getComponents()));
  52.184 +    }
  52.185 +
  52.186 +    /**
  52.187 +     * {@inheritDoc}
  52.188 +     */
  52.189 +    public final String toString() {
  52.190 +        final StringBuffer buffer = new StringBuffer();
  52.191 +        buffer.append(BEGIN);
  52.192 +        buffer.append(':');
  52.193 +        buffer.append(VCALENDAR);
  52.194 +        buffer.append(Strings.LINE_SEPARATOR);
  52.195 +        buffer.append(getProperties());
  52.196 +        buffer.append(getComponents());
  52.197 +        buffer.append(END);
  52.198 +        buffer.append(':');
  52.199 +        buffer.append(VCALENDAR);
  52.200 +        buffer.append(Strings.LINE_SEPARATOR);
  52.201 +
  52.202 +        return buffer.toString();
  52.203 +    }
  52.204 +
  52.205 +    /**
  52.206 +     * @return Returns the components.
  52.207 +     */
  52.208 +    public final ComponentList getComponents() {
  52.209 +        return components;
  52.210 +    }
  52.211 +
  52.212 +    /**
  52.213 +     * Convenience method for retrieving a list of named components.
  52.214 +     * @param name name of components to retrieve
  52.215 +     * @return a component list containing only components with the specified name
  52.216 +     */
  52.217 +    public final ComponentList getComponents(final String name) {
  52.218 +        return getComponents().getComponents(name);
  52.219 +    }
  52.220 +
  52.221 +    /**
  52.222 +     * Convenience method for retrieving a named component.
  52.223 +     * @param name name of the component to retrieve
  52.224 +     * @return the first matching component in the component list with the specified name
  52.225 +     */
  52.226 +    public final Component getComponent(final String name) {
  52.227 +        return getComponents().getComponent(name);
  52.228 +    }
  52.229 +
  52.230 +    /**
  52.231 +     * @return Returns the properties.
  52.232 +     */
  52.233 +    public final PropertyList getProperties() {
  52.234 +        return properties;
  52.235 +    }
  52.236 +
  52.237 +    /**
  52.238 +     * Convenience method for retrieving a list of named properties.
  52.239 +     * @param name name of properties to retrieve
  52.240 +     * @return a property list containing only properties with the specified name
  52.241 +     */
  52.242 +    public final PropertyList getProperties(final String name) {
  52.243 +        return getProperties().getProperties(name);
  52.244 +    }
  52.245 +
  52.246 +    /**
  52.247 +     * Convenience method for retrieving a named property.
  52.248 +     * @param name name of the property to retrieve
  52.249 +     * @return the first matching property in the property list with the specified name
  52.250 +     */
  52.251 +    public final Property getProperty(final String name) {
  52.252 +        return getProperties().getProperty(name);
  52.253 +    }
  52.254 +
  52.255 +    /**
  52.256 +     * Perform validation on the calendar, its properties and its components in its current state.
  52.257 +     * @throws ValidationException where the calendar is not in a valid state
  52.258 +     */
  52.259 +    public final void validate() throws ValidationException {
  52.260 +        validate(true);
  52.261 +    }
  52.262 +
  52.263 +    /**
  52.264 +     * Perform validation on the calendar in its current state.
  52.265 +     * @param recurse indicates whether to validate the calendar's properties and components
  52.266 +     * @throws ValidationException where the calendar is not in a valid state
  52.267 +     */
  52.268 +    public void validate(final boolean recurse) throws ValidationException {
  52.269 +        // 'prodid' and 'version' are both REQUIRED,
  52.270 +        // but MUST NOT occur more than once
  52.271 +        PropertyValidator.getInstance().assertOne(Property.PRODID, properties);
  52.272 +        PropertyValidator.getInstance().assertOne(Property.VERSION, properties);
  52.273 +
  52.274 +        if (!CompatibilityHints.isHintEnabled(CompatibilityHints.KEY_RELAXED_VALIDATION)) {
  52.275 +            // require VERSION:2.0 for RFC2445..
  52.276 +            if (!Version.VERSION_2_0.equals(getProperty(Property.VERSION))) {
  52.277 +                throw new ValidationException("Unsupported Version: " + getProperty(Property.VERSION).getValue());
  52.278 +            }
  52.279 +        }
  52.280 +        
  52.281 +        // 'calscale' and 'method' are optional,
  52.282 +        // but MUST NOT occur more than once
  52.283 +        PropertyValidator.getInstance().assertOneOrLess(Property.CALSCALE,
  52.284 +                properties);
  52.285 +        PropertyValidator.getInstance().assertOneOrLess(Property.METHOD,
  52.286 +                properties);
  52.287 +
  52.288 +        // must contain at least one component
  52.289 +        if (getComponents().isEmpty()) {
  52.290 +            throw new ValidationException(
  52.291 +                    "Calendar must contain at least one component");
  52.292 +        }
  52.293 +
  52.294 +        // validate properties..
  52.295 +        for (final Iterator i = getProperties().iterator(); i.hasNext();) {
  52.296 +            final Property property = (Property) i.next();
  52.297 +
  52.298 +            if (!(property instanceof XProperty)
  52.299 +                    && !property.isCalendarProperty()) {
  52.300 +                throw new ValidationException("Invalid property: "
  52.301 +                        + property.getName());
  52.302 +            }
  52.303 +        }
  52.304 +
  52.305 +        // validate components..
  52.306 +        for (final Iterator i = getComponents().iterator(); i.hasNext();) {
  52.307 +            final Component component = (Component) i.next();
  52.308 +            if (!(component instanceof CalendarComponent)) {
  52.309 +                throw new ValidationException("Not a valid calendar component: " + component.getName());
  52.310 +            }
  52.311 +        }
  52.312 +
  52.313 +//        if (!CompatibilityHints.isHintEnabled(CompatibilityHints.KEY_RELAXED_VALIDATION)) {
  52.314 +            // validate method..
  52.315 +            final Method method = (Method) getProperty(Property.METHOD);
  52.316 +            if (Method.PUBLISH.equals(method)) {
  52.317 +                if (getComponent(Component.VEVENT) != null) {
  52.318 +                    ComponentValidator.assertNone(Component.VFREEBUSY, getComponents());
  52.319 +                    ComponentValidator.assertNone(Component.VJOURNAL, getComponents());
  52.320 +                    
  52.321 +                    if (!CompatibilityHints.isHintEnabled(CompatibilityHints.KEY_RELAXED_VALIDATION)) {
  52.322 +                        ComponentValidator.assertNone(Component.VTODO, getComponents());
  52.323 +                    }
  52.324 +                }
  52.325 +                else if (getComponent(Component.VFREEBUSY) != null) {
  52.326 +                    ComponentValidator.assertNone(Component.VTODO, getComponents());
  52.327 +                    ComponentValidator.assertNone(Component.VJOURNAL, getComponents());
  52.328 +                    ComponentValidator.assertNone(Component.VTIMEZONE, getComponents());
  52.329 +                    ComponentValidator.assertNone(Component.VALARM, getComponents());
  52.330 +                }
  52.331 +                else if (getComponent(Component.VTODO) != null) {
  52.332 +//                    ComponentValidator.assertNone(Component.VFREEBUSY, getComponents());
  52.333 +//                    ComponentValidator.assertNone(Component.VEVENT, getComponents());
  52.334 +                    ComponentValidator.assertNone(Component.VJOURNAL, getComponents());
  52.335 +                }
  52.336 +                else if (getComponent(Component.VJOURNAL) != null) {
  52.337 +//                    ComponentValidator.assertNone(Component.VFREEBUSY, getComponents());
  52.338 +//                    ComponentValidator.assertNone(Component.VEVENT, getComponents());
  52.339 +//                    ComponentValidator.assertNone(Component.VTODO, getComponents());
  52.340 +                }
  52.341 +            }
  52.342 +            else if (Method.REQUEST.equals(getProperty(Property.METHOD))) {
  52.343 +                if (getComponent(Component.VEVENT) != null) {
  52.344 +                    ComponentValidator.assertNone(Component.VFREEBUSY, getComponents());
  52.345 +                    ComponentValidator.assertNone(Component.VJOURNAL, getComponents());
  52.346 +                    ComponentValidator.assertNone(Component.VTODO, getComponents());
  52.347 +                }
  52.348 +                else if (getComponent(Component.VFREEBUSY) != null) {
  52.349 +                    ComponentValidator.assertNone(Component.VTODO, getComponents());
  52.350 +                    ComponentValidator.assertNone(Component.VJOURNAL, getComponents());
  52.351 +                    ComponentValidator.assertNone(Component.VTIMEZONE, getComponents());
  52.352 +                    ComponentValidator.assertNone(Component.VALARM, getComponents());
  52.353 +                }
  52.354 +                else if (getComponent(Component.VTODO) != null) {
  52.355 +//                  ComponentValidator.assertNone(Component.VFREEBUSY, getComponents());
  52.356 +//                  ComponentValidator.assertNone(Component.VEVENT, getComponents());
  52.357 +                    ComponentValidator.assertNone(Component.VJOURNAL, getComponents());
  52.358 +                }
  52.359 +            }
  52.360 +            else if (Method.REPLY.equals(getProperty(Property.METHOD))) {
  52.361 +                if (getComponent(Component.VEVENT) != null) {
  52.362 +                    ComponentValidator.assertOneOrLess(Component.VTIMEZONE, getComponents());
  52.363 +                    
  52.364 +                    ComponentValidator.assertNone(Component.VALARM, getComponents());
  52.365 +                    ComponentValidator.assertNone(Component.VFREEBUSY, getComponents());
  52.366 +                    ComponentValidator.assertNone(Component.VJOURNAL, getComponents());
  52.367 +                    ComponentValidator.assertNone(Component.VTODO, getComponents());
  52.368 +                }
  52.369 +                else if (getComponent(Component.VFREEBUSY) != null) {
  52.370 +                    ComponentValidator.assertNone(Component.VTODO, getComponents());
  52.371 +                    ComponentValidator.assertNone(Component.VJOURNAL, getComponents());
  52.372 +                    ComponentValidator.assertNone(Component.VTIMEZONE, getComponents());
  52.373 +                    ComponentValidator.assertNone(Component.VALARM, getComponents());
  52.374 +                }
  52.375 +                else if (getComponent(Component.VTODO) != null) {
  52.376 +                    ComponentValidator.assertOneOrLess(Component.VTIMEZONE, getComponents());
  52.377 +                    
  52.378 +                    ComponentValidator.assertNone(Component.VALARM, getComponents());
  52.379 +//                  ComponentValidator.assertNone(Component.VFREEBUSY, getComponents());
  52.380 +//                  ComponentValidator.assertNone(Component.VEVENT, getComponents());
  52.381 +                    ComponentValidator.assertNone(Component.VJOURNAL, getComponents());
  52.382 +                }
  52.383 +            }
  52.384 +            else if (Method.ADD.equals(getProperty(Property.METHOD))) {
  52.385 +                if (getComponent(Component.VEVENT) != null) {
  52.386 +                    ComponentValidator.assertNone(Component.VFREEBUSY, getComponents());
  52.387 +                    ComponentValidator.assertNone(Component.VJOURNAL, getComponents());
  52.388 +                    ComponentValidator.assertNone(Component.VTODO, getComponents());
  52.389 +                }
  52.390 +                else if (getComponent(Component.VTODO) != null) {
  52.391 +                    ComponentValidator.assertNone(Component.VFREEBUSY, getComponents());
  52.392 +//                  ComponentValidator.assertNone(Component.VEVENT, getComponents());
  52.393 +                    ComponentValidator.assertNone(Component.VJOURNAL, getComponents());
  52.394 +                }
  52.395 +                else if (getComponent(Component.VJOURNAL) != null) {
  52.396 +                    ComponentValidator.assertOneOrLess(Component.VTIMEZONE, getComponents());
  52.397 +                    
  52.398 +                    ComponentValidator.assertNone(Component.VFREEBUSY, getComponents());
  52.399 +//                  ComponentValidator.assertNone(Component.VEVENT, getComponents());
  52.400 +//                  ComponentValidator.assertNone(Component.VTODO, getComponents());
  52.401 +                }
  52.402 +            }
  52.403 +            else if (Method.CANCEL.equals(getProperty(Property.METHOD))) {
  52.404 +                if (getComponent(Component.VEVENT) != null) {
  52.405 +                    ComponentValidator.assertNone(Component.VALARM, getComponents());
  52.406 +                    ComponentValidator.assertNone(Component.VFREEBUSY, getComponents());
  52.407 +                    ComponentValidator.assertNone(Component.VJOURNAL, getComponents());
  52.408 +                    ComponentValidator.assertNone(Component.VTODO, getComponents());
  52.409 +                }
  52.410 +                else if (getComponent(Component.VTODO) != null) {
  52.411 +                    ComponentValidator.assertOneOrLess(Component.VTIMEZONE, getComponents());
  52.412 +                    
  52.413 +                    ComponentValidator.assertNone(Component.VALARM, getComponents());
  52.414 +                    ComponentValidator.assertNone(Component.VFREEBUSY, getComponents());
  52.415 +//                  ComponentValidator.assertNone(Component.VEVENT, getComponents());
  52.416 +                    ComponentValidator.assertNone(Component.VJOURNAL, getComponents());
  52.417 +                }
  52.418 +                else if (getComponent(Component.VJOURNAL) != null) {
  52.419 +                    ComponentValidator.assertNone(Component.VALARM, getComponents());
  52.420 +                    ComponentValidator.assertNone(Component.VFREEBUSY, getComponents());
  52.421 +//                  ComponentValidator.assertNone(Component.VEVENT, getComponents());
  52.422 +//                  ComponentValidator.assertNone(Component.VTODO, getComponents());
  52.423 +                }
  52.424 +            }
  52.425 +            else if (Method.REFRESH.equals(getProperty(Property.METHOD))) {
  52.426 +                if (getComponent(Component.VEVENT) != null) {
  52.427 +                    ComponentValidator.assertNone(Component.VALARM, getComponents());
  52.428 +                    ComponentValidator.assertNone(Component.VFREEBUSY, getComponents());
  52.429 +                    ComponentValidator.assertNone(Component.VJOURNAL, getComponents());
  52.430 +                    ComponentValidator.assertNone(Component.VTODO, getComponents());
  52.431 +                }
  52.432 +                else if (getComponent(Component.VTODO) != null) {
  52.433 +                    ComponentValidator.assertNone(Component.VALARM, getComponents());
  52.434 +                    ComponentValidator.assertNone(Component.VFREEBUSY, getComponents());
  52.435 +//                  ComponentValidator.assertNone(Component.VEVENT, getComponents());
  52.436 +                    ComponentValidator.assertNone(Component.VJOURNAL, getComponents());
  52.437 +                    ComponentValidator.assertNone(Component.VTIMEZONE, getComponents());
  52.438 +                }
  52.439 +            }
  52.440 +            else if (Method.COUNTER.equals(getProperty(Property.METHOD))) {
  52.441 +                if (getComponent(Component.VEVENT) != null) {
  52.442 +                    ComponentValidator.assertNone(Component.VFREEBUSY, getComponents());
  52.443 +                    ComponentValidator.assertNone(Component.VJOURNAL, getComponents());
  52.444 +                    ComponentValidator.assertNone(Component.VTODO, getComponents());
  52.445 +                }
  52.446 +                else if (getComponent(Component.VTODO) != null) {
  52.447 +                    ComponentValidator.assertOneOrLess(Component.VTIMEZONE, getComponents());
  52.448 +                    
  52.449 +                    ComponentValidator.assertNone(Component.VFREEBUSY, getComponents());
  52.450 +//                  ComponentValidator.assertNone(Component.VEVENT, getComponents());
  52.451 +                    ComponentValidator.assertNone(Component.VJOURNAL, getComponents());
  52.452 +                }
  52.453 +            }
  52.454 +            else if (Method.DECLINE_COUNTER.equals(getProperty(Property.METHOD))) {
  52.455 +                if (getComponent(Component.VEVENT) != null) {
  52.456 +                    ComponentValidator.assertNone(Component.VFREEBUSY, getComponents());
  52.457 +                    ComponentValidator.assertNone(Component.VJOURNAL, getComponents());
  52.458 +                    ComponentValidator.assertNone(Component.VTODO, getComponents());
  52.459 +                    ComponentValidator.assertNone(Component.VTIMEZONE, getComponents());
  52.460 +                    ComponentValidator.assertNone(Component.VALARM, getComponents());
  52.461 +                }
  52.462 +                else if (getComponent(Component.VTODO) != null) {
  52.463 +                    ComponentValidator.assertNone(Component.VALARM, getComponents());
  52.464 +                    ComponentValidator.assertNone(Component.VFREEBUSY, getComponents());
  52.465 +//                  ComponentValidator.assertNone(Component.VEVENT, getComponents());
  52.466 +                    ComponentValidator.assertNone(Component.VJOURNAL, getComponents());
  52.467 +                }
  52.468 +            }
  52.469 +//        }
  52.470 +            
  52.471 +            // perform ITIP validation on components..
  52.472 +            if (method != null) {
  52.473 +                for (final Iterator i = getComponents().iterator(); i.hasNext();) {
  52.474 +                    final CalendarComponent component = (CalendarComponent) i.next();
  52.475 +                    component.validate(method);
  52.476 +                }
  52.477 +            }
  52.478 +        
  52.479 +        if (recurse) {
  52.480 +            validateProperties();
  52.481 +            validateComponents();
  52.482 +        }
  52.483 +    }
  52.484 +
  52.485 +    /**
  52.486 +     * Invoke validation on the calendar properties in its current state.
  52.487 +     * @throws ValidationException where any of the calendar properties is not in a valid state
  52.488 +     */
  52.489 +    private void validateProperties() throws ValidationException {
  52.490 +        for (final Iterator i = getProperties().iterator(); i.hasNext();) {
  52.491 +            final Property property = (Property) i.next();
  52.492 +            property.validate();
  52.493 +        }
  52.494 +    }
  52.495 +
  52.496 +    /**
  52.497 +     * Invoke validation on the calendar components in its current state.
  52.498 +     * @throws ValidationException where any of the calendar components is not in a valid state
  52.499 +     */
  52.500 +    private void validateComponents() throws ValidationException {
  52.501 +        for (final Iterator i = getComponents().iterator(); i.hasNext();) {
  52.502 +            final Component component = (Component) i.next();
  52.503 +            component.validate();
  52.504 +        }
  52.505 +    }
  52.506 +
  52.507 +    /**
  52.508 +     * Returns the mandatory prodid property.
  52.509 +     * @return the PRODID property, or null if property doesn't exist
  52.510 +     */
  52.511 +    public final ProdId getProductId() {
  52.512 +        return (ProdId) getProperty(Property.PRODID);
  52.513 +    }
  52.514 +
  52.515 +    /**
  52.516 +     * Returns the mandatory version property.
  52.517 +     * @return the VERSION property, or null if property doesn't exist
  52.518 +     */
  52.519 +    public final Version getVersion() {
  52.520 +        return (Version) getProperty(Property.VERSION);
  52.521 +    }
  52.522 +
  52.523 +    /**
  52.524 +     * Returns the optional calscale property.
  52.525 +     * @return the CALSCALE property, or null if property doesn't exist
  52.526 +     */
  52.527 +    public final CalScale getCalendarScale() {
  52.528 +        return (CalScale) getProperty(Property.CALSCALE);
  52.529 +    }
  52.530 +
  52.531 +    /**
  52.532 +     * Returns the optional method property.
  52.533 +     * @return the METHOD property, or null if property doesn't exist
  52.534 +     */
  52.535 +    public final Method getMethod() {
  52.536 +        return (Method) getProperty(Property.METHOD);
  52.537 +    }
  52.538 +
  52.539 +    /**
  52.540 +     * {@inheritDoc}
  52.541 +     */
  52.542 +    public final boolean equals(final Object arg0) {
  52.543 +        if (arg0 instanceof Calendar) {
  52.544 +            final Calendar calendar = (Calendar) arg0;
  52.545 +            return new EqualsBuilder().append(getProperties(), calendar.getProperties())
  52.546 +                .append(getComponents(), calendar.getComponents()).isEquals();
  52.547 +        }
  52.548 +        return super.equals(arg0);
  52.549 +    }
  52.550 +
  52.551 +    /**
  52.552 +     * {@inheritDoc}
  52.553 +     */
  52.554 +    public final int hashCode() {
  52.555 +        return new HashCodeBuilder().append(getProperties()).append(
  52.556 +                getComponents()).toHashCode();
  52.557 +    }
  52.558 +}
    53.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    53.2 +++ b/src/net/fortuna/ical4j/model/CalendarDateFormatFactory.java	Tue Feb 10 18:12:00 2015 +0100
    53.3 @@ -0,0 +1,420 @@
    53.4 +/**
    53.5 + * Copyright (c) 2012, Ben Fortuna
    53.6 + * All rights reserved.
    53.7 + *
    53.8 + * Redistribution and use in source and binary forms, with or without
    53.9 + * modification, are permitted provided that the following conditions
   53.10 + * are met:
   53.11 + *
   53.12 + *  o Redistributions of source code must retain the above copyright
   53.13 + * notice, this list of conditions and the following disclaimer.
   53.14 + *
   53.15 + *  o Redistributions in binary form must reproduce the above copyright
   53.16 + * notice, this list of conditions and the following disclaimer in the
   53.17 + * documentation and/or other materials provided with the distribution.
   53.18 + *
   53.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
   53.20 + * may be used to endorse or promote products derived from this software
   53.21 + * without specific prior written permission.
   53.22 + *
   53.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   53.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   53.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   53.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
   53.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   53.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   53.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   53.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   53.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   53.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   53.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   53.34 + */
   53.35 +package net.fortuna.ical4j.model;
   53.36 +
   53.37 +import java.text.FieldPosition;
   53.38 +import java.text.NumberFormat;
   53.39 +import java.text.ParsePosition;
   53.40 +import java.text.SimpleDateFormat;
   53.41 +import java.util.Date;
   53.42 +import java.util.GregorianCalendar;
   53.43 +import java.util.TimeZone;
   53.44 +
   53.45 +import org.apache.commons.logging.Log;
   53.46 +import org.apache.commons.logging.LogFactory;
   53.47 +
   53.48 +/**
   53.49 + * $Id$ [06-Apr-2004]
   53.50 + * 
   53.51 + * Creates DateFormat objects optimized for common iCalendar date patterns.
   53.52 + * 
   53.53 + * @author Dave Nault dnault@laszlosystems.com
   53.54 + * @see #getInstance(String)
   53.55 + */
   53.56 +public final class CalendarDateFormatFactory {
   53.57 +    private static final Log LOG = LogFactory.getLog(CalendarDateFormatFactory.class);
   53.58 +
   53.59 +    private static final String DATETIME_PATTERN = "yyyyMMdd'T'HHmmss";
   53.60 +    private static final String DATETIME_UTC_PATTERN = "yyyyMMdd'T'HHmmss'Z'";
   53.61 +    private static final String DATE_PATTERN = "yyyyMMdd";
   53.62 +    private static final String TIME_PATTERN = "HHmmss";
   53.63 +    private static final String TIME_UTC_PATTERN = "HHmmss'Z'";
   53.64 +
   53.65 +    /**
   53.66 +     * Constructor made private to enforce static nature.
   53.67 +     */
   53.68 +    private CalendarDateFormatFactory() {
   53.69 +    }
   53.70 +
   53.71 +    /**
   53.72 +     * Returns DateFormat objects optimized for common iCalendar date patterns. The DateFormats are *not* thread safe.
   53.73 +     * Attempts to get or set the Calendar or NumberFormat of an optimized DateFormat will result in an
   53.74 +     * UnsupportedOperation exception being thrown.
   53.75 +     * 
   53.76 +     * @param pattern
   53.77 +     *            a SimpleDateFormat-compatible pattern
   53.78 +     * @return an optimized DateFormat instance if possible, otherwise a normal SimpleDateFormat instance
   53.79 +     */
   53.80 +    public static java.text.DateFormat getInstance(String pattern) {
   53.81 +        java.text.DateFormat instance = null;
   53.82 +        
   53.83 +        // if (true) {
   53.84 +        // return new SimpleDateFormat(pattern);
   53.85 +        // }
   53.86 +
   53.87 +        if (pattern.equals(DATETIME_PATTERN) || pattern.equals(DATETIME_UTC_PATTERN)) {
   53.88 +            instance = new DateTimeFormat(pattern);
   53.89 +        }
   53.90 +        else if (pattern.equals(DATE_PATTERN)) {
   53.91 +            instance = new DateFormat(pattern);
   53.92 +        }
   53.93 +        else if (pattern.equals(TIME_PATTERN) || pattern.equals(TIME_UTC_PATTERN)) {
   53.94 +            instance = new TimeFormat(pattern);
   53.95 +        }
   53.96 +        else {
   53.97 +            if (LOG.isDebugEnabled()) {
   53.98 +                LOG.debug("unexpected date format pattern: " + pattern);
   53.99 +            }
  53.100 +
  53.101 +            instance = new SimpleDateFormat(pattern);
  53.102 +        }
  53.103 +        return instance;
  53.104 +    }
  53.105 +
  53.106 +    private abstract static class CalendarDateFormat extends java.text.DateFormat {
  53.107 +        /**
  53.108 +		 * 
  53.109 +		 */
  53.110 +        private static final long serialVersionUID = -4191402739860280205L;
  53.111 +
  53.112 +        private static final java.util.TimeZone DEFAULT_TIME_ZONE = TimeZone.getDefault();
  53.113 +
  53.114 +        private final String pattern;
  53.115 +
  53.116 +        private boolean lenient = true;
  53.117 +
  53.118 +        private java.util.TimeZone timeZone = DEFAULT_TIME_ZONE;
  53.119 +
  53.120 +        public CalendarDateFormat(String pattern) {
  53.121 +            this.pattern = pattern;
  53.122 +        }
  53.123 +
  53.124 +        public java.util.TimeZone getTimeZone() {
  53.125 +            return this.timeZone;
  53.126 +        }
  53.127 +
  53.128 +        public void setTimeZone(java.util.TimeZone tz) {
  53.129 +            this.timeZone = tz;
  53.130 +        }
  53.131 +
  53.132 +        public void setLenient(boolean lenient) {
  53.133 +            this.lenient = lenient;
  53.134 +        }
  53.135 +
  53.136 +        public boolean isLenient() {
  53.137 +            return lenient;
  53.138 +        }
  53.139 +
  53.140 +        public java.util.Calendar getCalendar() {
  53.141 +            throw new UnsupportedOperationException();
  53.142 +        }
  53.143 +
  53.144 +        public void setCalendar(java.util.Calendar c) {
  53.145 +            throw new UnsupportedOperationException();
  53.146 +        }
  53.147 +
  53.148 +        public NumberFormat getNumberFormat() {
  53.149 +            throw new UnsupportedOperationException();
  53.150 +        }
  53.151 +
  53.152 +        public void setNumberFormat(NumberFormat n) {
  53.153 +            throw new UnsupportedOperationException();
  53.154 +        }
  53.155 +
  53.156 +        public Object clone() {
  53.157 +            // don't call super.clone()
  53.158 +            final CalendarDateFormat f = (CalendarDateFormat) CalendarDateFormatFactory.getInstance(pattern);
  53.159 +            f.setTimeZone(getTimeZone());
  53.160 +            f.setLenient(isLenient());
  53.161 +            return f;
  53.162 +        }
  53.163 +
  53.164 +        public boolean equals(Object o) {
  53.165 +            if (this == o) {
  53.166 +                return true;
  53.167 +            }
  53.168 +            if (o == null || getClass() != o.getClass()) {
  53.169 +                return false;
  53.170 +            }
  53.171 +            if (!super.equals(o)) {
  53.172 +                return false;
  53.173 +            }
  53.174 +
  53.175 +            final CalendarDateFormat that = (CalendarDateFormat) o;
  53.176 +
  53.177 +            if (lenient != that.lenient) {
  53.178 +                return false;
  53.179 +            }
  53.180 +            if (!pattern.equals(that.pattern)) {
  53.181 +                return false;
  53.182 +            }
  53.183 +            if (!timeZone.equals(that.timeZone)) {
  53.184 +                return false;
  53.185 +            }
  53.186 +
  53.187 +            return true;
  53.188 +        }
  53.189 +
  53.190 +        public int hashCode() {
  53.191 +            int result = super.hashCode();
  53.192 +            result = 31 * result + pattern.hashCode();
  53.193 +            result = 31 * result + (lenient ? 1 : 0);
  53.194 +            result = 31 * result + timeZone.hashCode();
  53.195 +            return result;
  53.196 +        }
  53.197 +    }
  53.198 +
  53.199 +    /**
  53.200 +     * A custom date-time formatter.
  53.201 +     * Parses and formats these patterns:
  53.202 +     * 
  53.203 +     * <pre>
  53.204 +     * yyyyMMdd'T'HHmmss
  53.205 +     * yyyyMMdd'T'HHmmss'Z'
  53.206 +     * </pre>
  53.207 +     */
  53.208 +    private static class DateTimeFormat extends CalendarDateFormat {
  53.209 +
  53.210 +        /**
  53.211 +		 * 
  53.212 +		 */
  53.213 +        private static final long serialVersionUID = 3005824302269636122L;
  53.214 +
  53.215 +        final boolean patternEndsWithZ;
  53.216 +
  53.217 +        public DateTimeFormat(String pattern) {
  53.218 +            super(pattern);
  53.219 +            patternEndsWithZ = pattern.endsWith("'Z'");
  53.220 +        }
  53.221 +
  53.222 +        public StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition fieldPosition) {
  53.223 +            final java.util.Calendar cal = new GregorianCalendar(getTimeZone());
  53.224 +            cal.setTimeInMillis(date.getTime());
  53.225 +
  53.226 +            appendPadded(toAppendTo, cal.get(GregorianCalendar.YEAR), 4);
  53.227 +            appendPadded(toAppendTo, cal.get(GregorianCalendar.MONTH) + 1, 2);
  53.228 +            appendPadded(toAppendTo, cal.get(GregorianCalendar.DAY_OF_MONTH), 2);
  53.229 +            toAppendTo.append("T");
  53.230 +
  53.231 +            appendPadded(toAppendTo, cal.get(GregorianCalendar.HOUR_OF_DAY), 2);
  53.232 +            appendPadded(toAppendTo, cal.get(GregorianCalendar.MINUTE), 2);
  53.233 +            appendPadded(toAppendTo, cal.get(GregorianCalendar.SECOND), 2);
  53.234 +
  53.235 +            if (patternEndsWithZ) {
  53.236 +                toAppendTo.append("Z");
  53.237 +            }
  53.238 +
  53.239 +            return toAppendTo;
  53.240 +        }
  53.241 +
  53.242 +        public Date parse(String source, ParsePosition pos) {
  53.243 +            // if lenient ignore superfluous input..
  53.244 +            if (patternEndsWithZ) {
  53.245 +                if (source.length() > DATETIME_UTC_PATTERN.length() && !isLenient()) {
  53.246 +                    pos.setErrorIndex(DATETIME_UTC_PATTERN.length());
  53.247 +                    return null;
  53.248 +                }
  53.249 +            } else if (source.length() > DATETIME_PATTERN.length() && !isLenient()) {
  53.250 +                pos.setErrorIndex(DATETIME_PATTERN.length());
  53.251 +                return null;
  53.252 +            }
  53.253 +
  53.254 +            try {
  53.255 +                if (source.charAt(8) != 'T') {
  53.256 +                    pos.setErrorIndex(8);
  53.257 +                    return null;
  53.258 +                }
  53.259 +                if (patternEndsWithZ && source.charAt(15) != 'Z') {
  53.260 +                    pos.setErrorIndex(15);
  53.261 +                    return null;
  53.262 +                }
  53.263 +
  53.264 +                final int year = Integer.parseInt(source.substring(0, 4));
  53.265 +                final int month = Integer.parseInt(source.substring(4, 6)) - 1;
  53.266 +                final int day = Integer.parseInt(source.substring(6, 8));
  53.267 +                final int hour = Integer.parseInt(source.substring(9, 11));
  53.268 +                final int minute = Integer.parseInt(source.substring(11, 13));
  53.269 +                final int second = Integer.parseInt(source.substring(13, 15));
  53.270 +
  53.271 +                final Date d = makeCalendar(isLenient(), getTimeZone(),
  53.272 +                        year, month, day, hour, minute, second).getTime();
  53.273 +                pos.setIndex(15);
  53.274 +                return d;
  53.275 +            } catch (Exception e) {
  53.276 +                return null;
  53.277 +            }
  53.278 +        }
  53.279 +    }
  53.280 +
  53.281 +    /**
  53.282 +     * Custom date formatter.
  53.283 +     * Parses and formats this pattern:
  53.284 +     * 
  53.285 +     * <pre>
  53.286 +     * yyyyMMdd
  53.287 +     * </pre>
  53.288 +     */
  53.289 +    private static class DateFormat extends CalendarDateFormat {
  53.290 +
  53.291 +        /**
  53.292 +		 * 
  53.293 +		 */
  53.294 +        private static final long serialVersionUID = -7626077667268431779L;
  53.295 +
  53.296 +        public DateFormat(String pattern) {
  53.297 +            super(pattern);
  53.298 +        }
  53.299 +
  53.300 +        public StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition fieldPosition) {
  53.301 +            final java.util.Calendar cal = java.util.Calendar.getInstance(getTimeZone());
  53.302 +            cal.setTimeInMillis(date.getTime());
  53.303 +
  53.304 +            appendPadded(toAppendTo, cal.get(GregorianCalendar.YEAR), 4);
  53.305 +            appendPadded(toAppendTo, cal.get(GregorianCalendar.MONTH) + 1, 2);
  53.306 +            appendPadded(toAppendTo, cal.get(GregorianCalendar.DAY_OF_MONTH), 2);
  53.307 +
  53.308 +            return toAppendTo;
  53.309 +        }
  53.310 +
  53.311 +        public Date parse(String source, ParsePosition pos) {
  53.312 +            // if lenient ignore superfluous input..
  53.313 +            if (source.length() > DATE_PATTERN.length() && !isLenient()) {
  53.314 +                pos.setErrorIndex(DATE_PATTERN.length());
  53.315 +                return null;
  53.316 +            }
  53.317 +
  53.318 +            try {
  53.319 +                final int year = Integer.parseInt(source.substring(0, 4));
  53.320 +                final int month = Integer.parseInt(source.substring(4, 6)) - 1;
  53.321 +                final int day = Integer.parseInt(source.substring(6, 8));
  53.322 +
  53.323 +                final Date d = makeCalendar(isLenient(), getTimeZone(), year, month, day).getTime();
  53.324 +                pos.setIndex(8);
  53.325 +                return d;
  53.326 +            } catch (Exception e) {
  53.327 +                return null;
  53.328 +            }
  53.329 +        }
  53.330 +    }
  53.331 +
  53.332 +    /**
  53.333 +     * Custom time formatter.
  53.334 +     * Parses and formats these patterns:
  53.335 +     * 
  53.336 +     * <pre>
  53.337 +     * HHmmss
  53.338 +     * HHmmss'Z'
  53.339 +     * </pre>
  53.340 +     */
  53.341 +    private static class TimeFormat extends CalendarDateFormat {
  53.342 +
  53.343 +        /**
  53.344 +		 * 
  53.345 +		 */
  53.346 +        private static final long serialVersionUID = -1367114409994225425L;
  53.347 +
  53.348 +        final boolean patternEndsWithZ;
  53.349 +
  53.350 +        public TimeFormat(String pattern) {
  53.351 +            super(pattern);
  53.352 +            patternEndsWithZ = pattern.endsWith("'Z'");
  53.353 +        }
  53.354 +
  53.355 +        public StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition fieldPosition) {
  53.356 +            final java.util.Calendar cal = new GregorianCalendar(getTimeZone());
  53.357 +            cal.setTimeInMillis(date.getTime());
  53.358 +
  53.359 +            appendPadded(toAppendTo, cal.get(GregorianCalendar.HOUR_OF_DAY), 2);
  53.360 +            appendPadded(toAppendTo, cal.get(GregorianCalendar.MINUTE), 2);
  53.361 +            appendPadded(toAppendTo, cal.get(GregorianCalendar.SECOND), 2);
  53.362 +
  53.363 +            if (patternEndsWithZ) {
  53.364 +                toAppendTo.append("Z");
  53.365 +            }
  53.366 +
  53.367 +            return toAppendTo;
  53.368 +        }
  53.369 +
  53.370 +        public Date parse(String source, ParsePosition pos) {
  53.371 +            // if lenient ignore superfluous input..
  53.372 +            if (patternEndsWithZ) {
  53.373 +                if (source.length() > TIME_UTC_PATTERN.length() && !isLenient()) {
  53.374 +                    pos.setErrorIndex(TIME_UTC_PATTERN.length());
  53.375 +                    return null;
  53.376 +                }
  53.377 +            } else if (source.length() > TIME_PATTERN.length() && !isLenient()) {
  53.378 +                pos.setErrorIndex(TIME_PATTERN.length());
  53.379 +                return null;
  53.380 +            }
  53.381 +
  53.382 +            try {
  53.383 +                if (patternEndsWithZ && source.charAt(6) != 'Z') {
  53.384 +                    pos.setErrorIndex(6);
  53.385 +                    return null;
  53.386 +                }
  53.387 +
  53.388 +                final int hour = Integer.parseInt(source.substring(0, 2));
  53.389 +                final int minute = Integer.parseInt(source.substring(2, 4));
  53.390 +                final int second = Integer.parseInt(source.substring(4, 6));
  53.391 +
  53.392 +                final Date d = makeCalendar(isLenient(), getTimeZone(), 1970, 0, 1, hour, minute, second).getTime();
  53.393 +                pos.setIndex(6);
  53.394 +                return d;
  53.395 +            } catch (Exception e) {
  53.396 +                return null;
  53.397 +            }
  53.398 +        }
  53.399 +    }
  53.400 +
  53.401 +    private static java.util.Calendar makeCalendar(boolean lenient, java.util.TimeZone timeZone, int year,
  53.402 +            int zeroBasedMonth, int day, int hour, int minutes, int seconds) {
  53.403 +        final java.util.Calendar cal = new GregorianCalendar(timeZone);
  53.404 +        cal.setLenient(lenient);
  53.405 +        cal.set(year, zeroBasedMonth, day, hour, minutes, seconds);
  53.406 +        cal.set(java.util.Calendar.MILLISECOND, 0);
  53.407 +        return cal;
  53.408 +    }
  53.409 +
  53.410 +    private static java.util.Calendar makeCalendar(boolean lenient, TimeZone timeZone, int year, int month, int day) {
  53.411 +        return makeCalendar(lenient, timeZone, year, month, day, 0, 0, 0);
  53.412 +    }
  53.413 +
  53.414 +    private static void appendPadded(StringBuffer toAppendTo, int value, int fieldWidth) {
  53.415 +        final String s = Integer.toString(value);
  53.416 +        final int max = fieldWidth - s.length();
  53.417 +        for (int i = 0; i < max; i++) {
  53.418 +            toAppendTo.append("0");
  53.419 +        }
  53.420 +        toAppendTo.append(s);
  53.421 +    }
  53.422 +
  53.423 +}
    54.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    54.2 +++ b/src/net/fortuna/ical4j/model/CalendarException.java	Tue Feb 10 18:12:00 2015 +0100
    54.3 @@ -0,0 +1,55 @@
    54.4 +/**
    54.5 + * Copyright (c) 2012, Ben Fortuna
    54.6 + * All rights reserved.
    54.7 + *
    54.8 + * Redistribution and use in source and binary forms, with or without
    54.9 + * modification, are permitted provided that the following conditions
   54.10 + * are met:
   54.11 + *
   54.12 + *  o Redistributions of source code must retain the above copyright
   54.13 + * notice, this list of conditions and the following disclaimer.
   54.14 + *
   54.15 + *  o Redistributions in binary form must reproduce the above copyright
   54.16 + * notice, this list of conditions and the following disclaimer in the
   54.17 + * documentation and/or other materials provided with the distribution.
   54.18 + *
   54.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
   54.20 + * may be used to endorse or promote products derived from this software
   54.21 + * without specific prior written permission.
   54.22 + *
   54.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   54.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   54.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   54.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
   54.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   54.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   54.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   54.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   54.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   54.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   54.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   54.34 + */
   54.35 +package net.fortuna.ical4j.model;
   54.36 +
   54.37 +/**
   54.38 + * @author fortuna
   54.39 + *
   54.40 + */
   54.41 +public class CalendarException extends RuntimeException {
   54.42 +
   54.43 +    private static final long serialVersionUID = 3994967097251100771L;
   54.44 +
   54.45 +    /**
   54.46 +     * @param message an exception detail message
   54.47 +     */
   54.48 +    public CalendarException(String message) {
   54.49 +        super(message);
   54.50 +    }
   54.51 +    
   54.52 +    /**
   54.53 +     * @param cause the cause exception
   54.54 +     */
   54.55 +    public CalendarException(Throwable cause) {
   54.56 +        super(cause);
   54.57 +    }
   54.58 +}
    55.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    55.2 +++ b/src/net/fortuna/ical4j/model/Component.java	Tue Feb 10 18:12:00 2015 +0100
    55.3 @@ -0,0 +1,415 @@
    55.4 +/**
    55.5 + * Copyright (c) 2012, Ben Fortuna
    55.6 + * All rights reserved.
    55.7 + *
    55.8 + * Redistribution and use in source and binary forms, with or without
    55.9 + * modification, are permitted provided that the following conditions
   55.10 + * are met:
   55.11 + *
   55.12 + *  o Redistributions of source code must retain the above copyright
   55.13 + * notice, this list of conditions and the following disclaimer.
   55.14 + *
   55.15 + *  o Redistributions in binary form must reproduce the above copyright
   55.16 + * notice, this list of conditions and the following disclaimer in the
   55.17 + * documentation and/or other materials provided with the distribution.
   55.18 + *
   55.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
   55.20 + * may be used to endorse or promote products derived from this software
   55.21 + * without specific prior written permission.
   55.22 + *
   55.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   55.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   55.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   55.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
   55.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   55.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   55.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   55.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   55.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   55.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   55.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   55.34 + */
   55.35 +package net.fortuna.ical4j.model;
   55.36 +
   55.37 +import java.io.IOException;
   55.38 +import java.io.Serializable;
   55.39 +import java.net.URISyntaxException;
   55.40 +import java.text.ParseException;
   55.41 +import java.util.Iterator;
   55.42 +
   55.43 +import net.fortuna.ical4j.model.parameter.Value;
   55.44 +import net.fortuna.ical4j.model.property.DateProperty;
   55.45 +import net.fortuna.ical4j.model.property.DtStart;
   55.46 +import net.fortuna.ical4j.model.property.Duration;
   55.47 +import net.fortuna.ical4j.model.property.ExDate;
   55.48 +import net.fortuna.ical4j.model.property.ExRule;
   55.49 +import net.fortuna.ical4j.model.property.RDate;
   55.50 +import net.fortuna.ical4j.model.property.RRule;
   55.51 +import net.fortuna.ical4j.util.Strings;
   55.52 +
   55.53 +import org.apache.commons.lang.builder.EqualsBuilder;
   55.54 +import org.apache.commons.lang.builder.HashCodeBuilder;
   55.55 +
   55.56 +/**
   55.57 + * $Id$ [Apr 5, 2004]
   55.58 + *
   55.59 + * Defines an iCalendar component. Subclasses of this class provide additional validation and typed values for specific
   55.60 + * iCalendar components.
   55.61 + * @author Ben Fortuna
   55.62 + */
   55.63 +public abstract class Component implements Serializable {
   55.64 +
   55.65 +    private static final long serialVersionUID = 4943193483665822201L;
   55.66 +
   55.67 +    /**
   55.68 +     * Component start token.
   55.69 +     */
   55.70 +    public static final String BEGIN = "BEGIN";
   55.71 +
   55.72 +    /**
   55.73 +     * Component end token.
   55.74 +     */
   55.75 +    public static final String END = "END";
   55.76 +
   55.77 +    /**
   55.78 +     * Component token.
   55.79 +     */
   55.80 +    public static final String VEVENT = "VEVENT";
   55.81 +
   55.82 +    /**
   55.83 +     * Component token.
   55.84 +     */
   55.85 +    public static final String VTODO = "VTODO";
   55.86 +
   55.87 +    /**
   55.88 +     * Component token.
   55.89 +     */
   55.90 +    public static final String VJOURNAL = "VJOURNAL";
   55.91 +
   55.92 +    /**
   55.93 +     * Component token.
   55.94 +     */
   55.95 +    public static final String VFREEBUSY = "VFREEBUSY";
   55.96 +
   55.97 +    /**
   55.98 +     * Component token.
   55.99 +     */
  55.100 +    public static final String VTIMEZONE = "VTIMEZONE";
  55.101 +
  55.102 +    /**
  55.103 +     * Component token.
  55.104 +     */
  55.105 +    public static final String VALARM = "VALARM";
  55.106 +
  55.107 +    /**
  55.108 +     * Component token.
  55.109 +     */
  55.110 +    public static final String VAVAILABILITY = "VAVAILABILITY";
  55.111 +
  55.112 +    /**
  55.113 +     * Component token.
  55.114 +     */
  55.115 +    public static final String VVENUE = "VVENUE";
  55.116 +
  55.117 +    /**
  55.118 +     * Component token.
  55.119 +     */
  55.120 +    public static final String AVAILABLE = "AVAILABLE";
  55.121 +
  55.122 +    /**
  55.123 +     * Prefix for non-standard components.
  55.124 +     */
  55.125 +    public static final String EXPERIMENTAL_PREFIX = "X-";
  55.126 +
  55.127 +    private String name;
  55.128 +
  55.129 +    private PropertyList properties;
  55.130 +
  55.131 +    /**
  55.132 +     * Constructs a new component containing no properties.
  55.133 +     * @param s a component name
  55.134 +     */
  55.135 +    protected Component(final String s) {
  55.136 +        this(s, new PropertyList());
  55.137 +    }
  55.138 +
  55.139 +    /**
  55.140 +     * Constructor made protected to enforce the use of <code>ComponentFactory</code> for component instantiation.
  55.141 +     * @param s component name
  55.142 +     * @param p a list of properties
  55.143 +     */
  55.144 +    protected Component(final String s, final PropertyList p) {
  55.145 +        this.name = s;
  55.146 +        this.properties = p;
  55.147 +    }
  55.148 +
  55.149 +    /**
  55.150 +     * {@inheritDoc}
  55.151 +     */
  55.152 +    public String toString() {
  55.153 +        final StringBuffer buffer = new StringBuffer();
  55.154 +        buffer.append(BEGIN);
  55.155 +        buffer.append(':');
  55.156 +        buffer.append(getName());
  55.157 +        buffer.append(Strings.LINE_SEPARATOR);
  55.158 +        buffer.append(getProperties());
  55.159 +        buffer.append(END);
  55.160 +        buffer.append(':');
  55.161 +        buffer.append(getName());
  55.162 +        buffer.append(Strings.LINE_SEPARATOR);
  55.163 +
  55.164 +        return buffer.toString();
  55.165 +    }
  55.166 +
  55.167 +    /**
  55.168 +     * @return Returns the name.
  55.169 +     */
  55.170 +    public final String getName() {
  55.171 +        return name;
  55.172 +    }
  55.173 +
  55.174 +    /**
  55.175 +     * @return Returns the properties.
  55.176 +     */
  55.177 +    public final PropertyList getProperties() {
  55.178 +        return properties;
  55.179 +    }
  55.180 +
  55.181 +    /**
  55.182 +     * Convenience method for retrieving a list of named properties.
  55.183 +     * @param name name of properties to retrieve
  55.184 +     * @return a property list containing only properties with the specified name
  55.185 +     */
  55.186 +    public final PropertyList getProperties(final String name) {
  55.187 +        return getProperties().getProperties(name);
  55.188 +    }
  55.189 +
  55.190 +    /**
  55.191 +     * Convenience method for retrieving a named property.
  55.192 +     * @param name name of the property to retrieve
  55.193 +     * @return the first matching property in the property list with the specified name
  55.194 +     */
  55.195 +    public final Property getProperty(final String name) {
  55.196 +        return getProperties().getProperty(name);
  55.197 +    }
  55.198 +
  55.199 +    /**
  55.200 +     * Perform validation on a component and its properties.
  55.201 +     * @throws ValidationException where the component is not in a valid state
  55.202 +     */
  55.203 +    public final void validate() throws ValidationException {
  55.204 +        validate(true);
  55.205 +    }
  55.206 +
  55.207 +    /**
  55.208 +     * Perform validation on a component.
  55.209 +     * @param recurse indicates whether to validate the component's properties
  55.210 +     * @throws ValidationException where the component is not in a valid state
  55.211 +     */
  55.212 +    public abstract void validate(final boolean recurse)
  55.213 +            throws ValidationException;
  55.214 +
  55.215 +    /**
  55.216 +     * Invoke validation on the component properties in its current state.
  55.217 +     * @throws ValidationException where any of the component properties is not in a valid state
  55.218 +     */
  55.219 +    protected final void validateProperties() throws ValidationException {
  55.220 +        for (final Iterator i = getProperties().iterator(); i.hasNext();) {
  55.221 +            final Property property = (Property) i.next();
  55.222 +            property.validate();
  55.223 +        }
  55.224 +    }
  55.225 +
  55.226 +    /**
  55.227 +     * {@inheritDoc}
  55.228 +     */
  55.229 +    public boolean equals(final Object arg0) {
  55.230 +        if (arg0 instanceof Component) {
  55.231 +            final Component c = (Component) arg0;
  55.232 +            return new EqualsBuilder().append(getName(), c.getName())
  55.233 +                .append(getProperties(), c.getProperties()).isEquals();
  55.234 +        }
  55.235 +        return super.equals(arg0);
  55.236 +    }
  55.237 +
  55.238 +    /**
  55.239 +     * {@inheritDoc}
  55.240 +     */
  55.241 +    public int hashCode() {
  55.242 +        return new HashCodeBuilder().append(getName()).append(getProperties())
  55.243 +                .toHashCode();
  55.244 +    }
  55.245 +
  55.246 +    /**
  55.247 +     * Create a (deep) copy of this component.
  55.248 +     * @return the component copy
  55.249 +     * @throws IOException where an error occurs reading the component data
  55.250 +     * @throws ParseException where parsing component data fails
  55.251 +     * @throws URISyntaxException where component data contains an invalid URI
  55.252 +     */
  55.253 +    public Component copy() throws ParseException, IOException,
  55.254 +            URISyntaxException {
  55.255 +
  55.256 +        // Deep copy properties..
  55.257 +        final PropertyList newprops = new PropertyList(getProperties());
  55.258 +
  55.259 +        return ComponentFactory.getInstance().createComponent(getName(),
  55.260 +                newprops);
  55.261 +    }
  55.262 +    
  55.263 +    /**
  55.264 +     * Calculates the recurrence set for this component using the specified period.
  55.265 +     * The recurrence set is derived from a combination of the component start date,
  55.266 +     * recurrence rules and dates, and exception rules and dates. Note that component
  55.267 +     * transparency and anniversary-style dates do not affect the resulting
  55.268 +     * intersection.
  55.269 +     * <p>If an explicit DURATION is not specified, the effective duration of each
  55.270 +     *  returned period is derived from the DTSTART and DTEND or DUE properties.
  55.271 +     * If the component has no DURATION, DTEND or DUE, the effective duration is set
  55.272 +     *  to PT0S</p>
  55.273 +     * @param period a range to calculate recurrences for
  55.274 +     * @return a list of periods
  55.275 +     */
  55.276 +    public final PeriodList calculateRecurrenceSet(final Period period) {
  55.277 +        
  55.278 +//        validate();
  55.279 +        
  55.280 +        final PeriodList recurrenceSet = new PeriodList();
  55.281 +
  55.282 +        final DtStart start = (DtStart) getProperty(Property.DTSTART);
  55.283 +        DateProperty end = (DateProperty) getProperty(Property.DTEND);
  55.284 +        if (end == null) {
  55.285 +            end = (DateProperty) getProperty(Property.DUE);
  55.286 +        }
  55.287 +        Duration duration = (Duration) getProperty(Property.DURATION);
  55.288 +        
  55.289 +        // if no start date specified return empty list..
  55.290 +        if (start == null) {
  55.291 +            return recurrenceSet;
  55.292 +        }
  55.293 +
  55.294 +        final Value startValue = (Value) start.getParameter(Parameter.VALUE);
  55.295 +        
  55.296 +        // initialise timezone..
  55.297 +//        if (startValue == null || Value.DATE_TIME.equals(startValue)) {
  55.298 +        if (start.isUtc()) {
  55.299 +            recurrenceSet.setUtc(true);
  55.300 +        }
  55.301 +        else if (start.getDate() instanceof DateTime) {
  55.302 +            recurrenceSet.setTimeZone(((DateTime) start.getDate()).getTimeZone());
  55.303 +        }
  55.304 +        
  55.305 +        // if an explicit event duration is not specified, derive a value for recurring
  55.306 +        // periods from the end date..
  55.307 +        Dur rDuration;
  55.308 +        // if no end or duration specified, end date equals start date..
  55.309 +        if (end == null && duration == null) {
  55.310 +            rDuration = new Dur(start.getDate(), start.getDate());
  55.311 +        }
  55.312 +        else if (duration == null) {
  55.313 +            rDuration = new Dur(start.getDate(), end.getDate());
  55.314 +        }
  55.315 +        else {
  55.316 +            rDuration = duration.getDuration();
  55.317 +        }
  55.318 +        
  55.319 +        // add recurrence dates..
  55.320 +        for (final Iterator i = getProperties(Property.RDATE).iterator(); i.hasNext();) {
  55.321 +            final RDate rdate = (RDate) i.next();
  55.322 +            final Value rdateValue = (Value) rdate.getParameter(Parameter.VALUE);
  55.323 +            if (Value.PERIOD.equals(rdateValue)) {
  55.324 +                for (final Iterator j = rdate.getPeriods().iterator(); j.hasNext();) {
  55.325 +                    final Period rdatePeriod = (Period) j.next();
  55.326 +                    if (period.intersects(rdatePeriod)) {
  55.327 +                        recurrenceSet.add(rdatePeriod);
  55.328 +                    }
  55.329 +                }
  55.330 +            }
  55.331 +            else if (Value.DATE_TIME.equals(rdateValue)) {
  55.332 +                for (final Iterator j = rdate.getDates().iterator(); j.hasNext();) {
  55.333 +                    final DateTime rdateTime = (DateTime) j.next();
  55.334 +                    if (period.includes(rdateTime)) {
  55.335 +                        recurrenceSet.add(new Period(rdateTime, rDuration));
  55.336 +                    }
  55.337 +                }
  55.338 +            }
  55.339 +            else {
  55.340 +                for (final Iterator j = rdate.getDates().iterator(); j.hasNext();) {
  55.341 +                    final Date rdateDate = (Date) j.next();
  55.342 +                    if (period.includes(rdateDate)) {
  55.343 +                        recurrenceSet.add(new Period(new DateTime(rdateDate), rDuration));
  55.344 +                    }
  55.345 +                }
  55.346 +            }
  55.347 +        }
  55.348 +        
  55.349 +        // allow for recurrence rules that start prior to the specified period
  55.350 +        // but still intersect with it..
  55.351 +        final DateTime startMinusDuration = new DateTime(period.getStart());
  55.352 +        startMinusDuration.setTime(rDuration.negate().getTime(
  55.353 +                period.getStart()).getTime());
  55.354 +            
  55.355 +        // add recurrence rules..
  55.356 +        for (final Iterator i = getProperties(Property.RRULE).iterator(); i.hasNext();) {
  55.357 +            final RRule rrule = (RRule) i.next();
  55.358 +            final DateList rruleDates = rrule.getRecur().getDates(start.getDate(),
  55.359 +                    new Period(startMinusDuration, period.getEnd()), startValue);
  55.360 +            for (final Iterator j = rruleDates.iterator(); j.hasNext();) {
  55.361 +                final Date rruleDate = (Date) j.next();
  55.362 +                recurrenceSet.add(new Period(new DateTime(rruleDate), rDuration));
  55.363 +            }
  55.364 +        }
  55.365 +    
  55.366 +        // add initial instance if intersection with the specified period..
  55.367 +        Period startPeriod = null;
  55.368 +        if (end != null) {
  55.369 +            startPeriod = new Period(new DateTime(start.getDate()),
  55.370 +                    new DateTime(end.getDate()));
  55.371 +        }
  55.372 +        else {
  55.373 +            /*
  55.374 +             * PeS: Anniversary type has no DTEND nor DUR, define DUR 
  55.375 +             * locally, otherwise we get NPE
  55.376 +             */
  55.377 +            if (duration == null) {
  55.378 +                duration = new Duration(rDuration);
  55.379 +            }
  55.380 +
  55.381 +            startPeriod = new Period(new DateTime(start.getDate()),
  55.382 +                    duration.getDuration());
  55.383 +        }
  55.384 +        if (period.intersects(startPeriod)) {
  55.385 +            recurrenceSet.add(startPeriod);
  55.386 +        }
  55.387 +        
  55.388 +        // subtract exception dates..
  55.389 +        for (final Iterator i = getProperties(Property.EXDATE).iterator(); i.hasNext();) {
  55.390 +            final ExDate exdate = (ExDate) i.next();
  55.391 +            for (final Iterator j = recurrenceSet.iterator(); j.hasNext();) {
  55.392 +                final Period recurrence = (Period) j.next();
  55.393 +                // for DATE-TIME instances check for DATE-based exclusions also..
  55.394 +                if (exdate.getDates().contains(recurrence.getStart())
  55.395 +                        || exdate.getDates().contains(new Date(recurrence.getStart()))) {
  55.396 +                    j.remove();
  55.397 +                }
  55.398 +            }
  55.399 +        }
  55.400 +        
  55.401 +        // subtract exception rules..
  55.402 +        for (final Iterator i = getProperties(Property.EXRULE).iterator(); i.hasNext();) {
  55.403 +            final ExRule exrule = (ExRule) i.next();
  55.404 +            final DateList exruleDates = exrule.getRecur().getDates(start.getDate(),
  55.405 +                    period, startValue);
  55.406 +            for (final Iterator j = recurrenceSet.iterator(); j.hasNext();) {
  55.407 +                final Period recurrence = (Period) j.next();
  55.408 +                // for DATE-TIME instances check for DATE-based exclusions also..
  55.409 +                if (exruleDates.contains(recurrence.getStart())
  55.410 +                        || exruleDates.contains(new Date(recurrence.getStart()))) {
  55.411 +                    j.remove();
  55.412 +                }
  55.413 +            }
  55.414 +        }
  55.415 +
  55.416 +        return recurrenceSet;
  55.417 +    }
  55.418 +}
    56.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    56.2 +++ b/src/net/fortuna/ical4j/model/ComponentFactory.java	Tue Feb 10 18:12:00 2015 +0100
    56.3 @@ -0,0 +1,178 @@
    56.4 +/**
    56.5 + * Copyright (c) 2012, Ben Fortuna
    56.6 + * All rights reserved.
    56.7 + *
    56.8 + * Redistribution and use in source and binary forms, with or without
    56.9 + * modification, are permitted provided that the following conditions
   56.10 + * are met:
   56.11 + *
   56.12 + *  o Redistributions of source code must retain the above copyright
   56.13 + * notice, this list of conditions and the following disclaimer.
   56.14 + *
   56.15 + *  o Redistributions in binary form must reproduce the above copyright
   56.16 + * notice, this list of conditions and the following disclaimer in the
   56.17 + * documentation and/or other materials provided with the distribution.
   56.18 + *
   56.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
   56.20 + * may be used to endorse or promote products derived from this software
   56.21 + * without specific prior written permission.
   56.22 + *
   56.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   56.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   56.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   56.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
   56.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   56.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   56.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   56.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   56.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   56.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   56.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   56.34 + */
   56.35 +package net.fortuna.ical4j.model;
   56.36 +
   56.37 +import net.fortuna.ical4j.model.component.Available;
   56.38 +import net.fortuna.ical4j.model.component.Daylight;
   56.39 +import net.fortuna.ical4j.model.component.Observance;
   56.40 +import net.fortuna.ical4j.model.component.Standard;
   56.41 +import net.fortuna.ical4j.model.component.VAlarm;
   56.42 +import net.fortuna.ical4j.model.component.VAvailability;
   56.43 +import net.fortuna.ical4j.model.component.VEvent;
   56.44 +import net.fortuna.ical4j.model.component.VFreeBusy;
   56.45 +import net.fortuna.ical4j.model.component.VJournal;
   56.46 +import net.fortuna.ical4j.model.component.VTimeZone;
   56.47 +import net.fortuna.ical4j.model.component.VToDo;
   56.48 +import net.fortuna.ical4j.model.component.VVenue;
   56.49 +import net.fortuna.ical4j.model.component.XComponent;
   56.50 +import net.fortuna.ical4j.util.CompatibilityHints;
   56.51 +
   56.52 +/**
   56.53 + * $Id$ [05-Apr-2004]
   56.54 + *
   56.55 + * A factory for creating iCalendar components. Note that if relaxed parsing is enabled (via specifying the system
   56.56 + * property: icalj.parsing.relaxed=true) illegal component names are allowed.
   56.57 + * @author Ben Fortuna
   56.58 + */
   56.59 +public final class ComponentFactory {
   56.60 +
   56.61 +    private static ComponentFactory instance = new ComponentFactory();
   56.62 +
   56.63 +    /**
   56.64 +     * Constructor made private to prevent instantiation.
   56.65 +     */
   56.66 +    private ComponentFactory() {
   56.67 +    }
   56.68 +
   56.69 +    /**
   56.70 +     * @return Returns the instance.
   56.71 +     */
   56.72 +    public static ComponentFactory getInstance() {
   56.73 +        return instance;
   56.74 +    }
   56.75 +
   56.76 +    /**
   56.77 +     * @param name a component name
   56.78 +     * @return a new component instance of the specified type
   56.79 +     */
   56.80 +    public Component createComponent(final String name) {
   56.81 +        return createComponent(name, new PropertyList());
   56.82 +    }
   56.83 +
   56.84 +    /**
   56.85 +     * Creates a component.
   56.86 +     * @param name name of the component
   56.87 +     * @param properties a list of component properties
   56.88 +     * @return a component
   56.89 +     */
   56.90 +    public Component createComponent(final String name, final PropertyList properties) {
   56.91 +        Component component = null;
   56.92 +        if (Component.VALARM.equals(name)) {
   56.93 +            component = new VAlarm(properties);
   56.94 +        }
   56.95 +        else if (Component.VEVENT.equals(name)) {
   56.96 +            component = new VEvent(properties);
   56.97 +        }
   56.98 +        else if (Component.VFREEBUSY.equals(name)) {
   56.99 +            component = new VFreeBusy(properties);
  56.100 +        }
  56.101 +        else if (Component.VJOURNAL.equals(name)) {
  56.102 +            component = new VJournal(properties);
  56.103 +        }
  56.104 +        else if (Component.VTODO.equals(name)) {
  56.105 +            component = new VToDo(properties);
  56.106 +        }
  56.107 +        else if (Observance.STANDARD.equals(name)) {
  56.108 +            component = new Standard(properties);
  56.109 +        }
  56.110 +        else if (Observance.DAYLIGHT.equals(name)) {
  56.111 +            component = new Daylight(properties);
  56.112 +        }
  56.113 +        else if (Component.VTIMEZONE.equals(name)) {
  56.114 +            component = new VTimeZone(properties);
  56.115 +        }
  56.116 +        else if (Component.VVENUE.equals(name)) {
  56.117 +            component = new VVenue(properties);
  56.118 +        }
  56.119 +        else if (Component.VAVAILABILITY.equals(name)) {
  56.120 +            component = new VAvailability(properties);
  56.121 +        }
  56.122 +        else if (Component.AVAILABLE.equals(name)) {
  56.123 +            component = new Available(properties);
  56.124 +        }
  56.125 +        else if (isExperimentalName(name)) {
  56.126 +            component = new XComponent(name, properties);
  56.127 +        }
  56.128 +        else if (allowIllegalNames()) {
  56.129 +            component = new XComponent(name, properties);
  56.130 +        }
  56.131 +        else {
  56.132 +            throw new IllegalArgumentException("Illegal component [" + name
  56.133 +                    + "]");
  56.134 +        }
  56.135 +        return component;
  56.136 +    }
  56.137 +
  56.138 +    /**
  56.139 +     * Creates a component which contains sub-components. Currently the only such component is VTIMEZONE.
  56.140 +     * @param name name of the component
  56.141 +     * @param properties a list of component properties
  56.142 +     * @param components a list of sub-components (namely standard/daylight timezones)
  56.143 +     * @return a component
  56.144 +     */
  56.145 +    public Component createComponent(final String name, final PropertyList properties,
  56.146 +            final ComponentList components) {
  56.147 +        
  56.148 +        if (components != null) {
  56.149 +            Component component = null;
  56.150 +            if (Component.VTIMEZONE.equals(name)) {
  56.151 +                component = new VTimeZone(properties, components);
  56.152 +            }
  56.153 +            else if (Component.VEVENT.equals(name)) {
  56.154 +                component = new VEvent(properties, components);
  56.155 +            }
  56.156 +            else {
  56.157 +                throw new IllegalArgumentException("Illegal component [" + name
  56.158 +                        + "]");
  56.159 +            }
  56.160 +            return component;
  56.161 +        }
  56.162 +        return createComponent(name, properties);
  56.163 +    }
  56.164 +
  56.165 +    /**
  56.166 +     * @param name
  56.167 +     * @return
  56.168 +     */
  56.169 +    private boolean isExperimentalName(final String name) {
  56.170 +        return name.startsWith(Component.EXPERIMENTAL_PREFIX)
  56.171 +                && name.length() > Component.EXPERIMENTAL_PREFIX.length();
  56.172 +    }
  56.173 +
  56.174 +    /**
  56.175 +     * @return true if non-standard names are allowed, otherwise false
  56.176 +     */
  56.177 +    protected boolean allowIllegalNames() {
  56.178 +        return CompatibilityHints
  56.179 +                .isHintEnabled(CompatibilityHints.KEY_RELAXED_PARSING);
  56.180 +    }
  56.181 +}
    57.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    57.2 +++ b/src/net/fortuna/ical4j/model/ComponentList.java	Tue Feb 10 18:12:00 2015 +0100
    57.3 @@ -0,0 +1,186 @@
    57.4 +/**
    57.5 + * Copyright (c) 2012, Ben Fortuna
    57.6 + * All rights reserved.
    57.7 + *
    57.8 + * Redistribution and use in source and binary forms, with or without
    57.9 + * modification, are permitted provided that the following conditions
   57.10 + * are met:
   57.11 + *
   57.12 + *  o Redistributions of source code must retain the above copyright
   57.13 + * notice, this list of conditions and the following disclaimer.
   57.14 + *
   57.15 + *  o Redistributions in binary form must reproduce the above copyright
   57.16 + * notice, this list of conditions and the following disclaimer in the
   57.17 + * documentation and/or other materials provided with the distribution.
   57.18 + *
   57.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
   57.20 + * may be used to endorse or promote products derived from this software
   57.21 + * without specific prior written permission.
   57.22 + *
   57.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   57.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   57.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   57.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
   57.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   57.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   57.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   57.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   57.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   57.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   57.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   57.34 + */
   57.35 +package net.fortuna.ical4j.model;
   57.36 +
   57.37 +import java.io.IOException;
   57.38 +import java.io.Serializable;
   57.39 +import java.net.URISyntaxException;
   57.40 +import java.text.ParseException;
   57.41 +import java.util.ArrayList;
   57.42 +import java.util.Iterator;
   57.43 +
   57.44 +/**
   57.45 + * $Id$ [Apr 5, 2004]
   57.46 + *
   57.47 + * Defines a list of iCalendar components.
   57.48 + * @author Ben Fortuna
   57.49 + */
   57.50 +public class ComponentList extends ArrayList implements Serializable {
   57.51 +
   57.52 +    private static final long serialVersionUID = 7308557606558767449L;
   57.53 +
   57.54 +    /**
   57.55 +     * Default constructor.
   57.56 +     */
   57.57 +    public ComponentList() {
   57.58 +    }
   57.59 +
   57.60 +    /**
   57.61 +     * Creates a new instance with the specified initial capacity.
   57.62 +     * @param initialCapacity the initial capacity of the list
   57.63 +     */
   57.64 +    public ComponentList(final int initialCapacity) {
   57.65 +        super(initialCapacity);
   57.66 +    }
   57.67 +
   57.68 +    /**
   57.69 +     * Creates a deep copy of the specified component list.
   57.70 +     * @param components a component list to copy
   57.71 +     * @throws IOException where an error occurs reading component data
   57.72 +     * @throws ParseException where component data cannot be parsed
   57.73 +     * @throws URISyntaxException where component data contains an invalid URI
   57.74 +     */
   57.75 +    public ComponentList(ComponentList components) throws ParseException,
   57.76 +            IOException, URISyntaxException {
   57.77 +
   57.78 +        for (final Iterator i = components.iterator(); i.hasNext();) {
   57.79 +            final Component c = (Component) i.next();
   57.80 +            add(c.copy());
   57.81 +        }
   57.82 +    }
   57.83 +
   57.84 +    /**
   57.85 +     * {@inheritDoc}
   57.86 +     */
   57.87 +    public final String toString() {
   57.88 +        final StringBuffer buffer = new StringBuffer();
   57.89 +        for (final Iterator i = iterator(); i.hasNext();) {
   57.90 +            buffer.append(i.next().toString());
   57.91 +        }
   57.92 +        return buffer.toString();
   57.93 +    }
   57.94 +
   57.95 +    /**
   57.96 +     * Returns the first component of specified name.
   57.97 +     * @param aName name of component to return
   57.98 +     * @return a component or null if no matching component found
   57.99 +     */
  57.100 +    public final Component getComponent(final String aName) {
  57.101 +        for (final Iterator i = iterator(); i.hasNext();) {
  57.102 +            final Component c = (Component) i.next();
  57.103 +            if (c.getName().equals(aName)) {
  57.104 +                return c;
  57.105 +            }
  57.106 +        }
  57.107 +        return null;
  57.108 +    }
  57.109 +
  57.110 +    /**
  57.111 +     * Returns a list containing all components with specified name.
  57.112 +     * @param name name of components to return
  57.113 +     * @return a list of components with the matching name
  57.114 +     */
  57.115 +    public final ComponentList getComponents(final String name) {
  57.116 +        final ComponentList components = new ComponentList();
  57.117 +        for (final Iterator i = iterator(); i.hasNext();) {
  57.118 +            final Component c = (Component) i.next();
  57.119 +            if (c.getName().equals(name)) {
  57.120 +                components.add(c);
  57.121 +            }
  57.122 +        }
  57.123 +        return components;
  57.124 +    }
  57.125 +
  57.126 +    /**
  57.127 +     * Add a component to the list.
  57.128 +     * @param component the component to add
  57.129 +     * @return true
  57.130 +     * @see List#add(java.lang.Object)
  57.131 +     */
  57.132 +    public final boolean add(final Component component) {
  57.133 +        return add((Object) component);
  57.134 +    }
  57.135 +
  57.136 +    /**
  57.137 +     * Overrides superclass to throw an <code>IllegalArgumentException</code> where argument is not a
  57.138 +     * <code>net.fortuna.ical4j.model.Component</code>.
  57.139 +     * @param component a component to add
  57.140 +     * @return true if the object was added, otherwise false
  57.141 +     * @see List#add(E)
  57.142 +     */
  57.143 +    public final boolean add(final Object component) {
  57.144 +        if (!(component instanceof Component)) {
  57.145 +            throw new IllegalArgumentException("Argument not a "
  57.146 +                    + Component.class.getName());
  57.147 +        }
  57.148 +        return super.add(component);
  57.149 +    }
  57.150 +
  57.151 +    /**
  57.152 +     * @return boolean indicates if the list is empty
  57.153 +     * @see List#isEmpty()
  57.154 +     */
  57.155 +    // public final boolean isEmpty() {
  57.156 +    // return components.isEmpty();
  57.157 +    // }
  57.158 +    /**
  57.159 +     * @return an iterator
  57.160 +     * @see List#iterator()
  57.161 +     */
  57.162 +    // public final Iterator iterator() {
  57.163 +    // return components.iterator();
  57.164 +    // }
  57.165 +    /**
  57.166 +     * Remove a component from the list.
  57.167 +     * @param component the component to remove
  57.168 +     * @return true if the list contained the specified component
  57.169 +     * @see List#remove(java.lang.Object)
  57.170 +     */
  57.171 +    public final boolean remove(final Component component) {
  57.172 +        return remove((Object) component);
  57.173 +    }
  57.174 +
  57.175 +    /**
  57.176 +     * @return the number of components in the list
  57.177 +     * @see List#size()
  57.178 +     */
  57.179 +    // public final int size() {
  57.180 +    // return components.size();
  57.181 +    // }
  57.182 +    /**
  57.183 +     * Provides a list containing all components contained in this component list.
  57.184 +     * @return a list
  57.185 +     */
  57.186 +    // public final List toList() {
  57.187 +    // return new ArrayList(components);
  57.188 +    // }
  57.189 +}
    58.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    58.2 +++ b/src/net/fortuna/ical4j/model/ConstraintViolationException.java	Tue Feb 10 18:12:00 2015 +0100
    58.3 @@ -0,0 +1,59 @@
    58.4 +/**
    58.5 + * Copyright (c) 2012, Ben Fortuna
    58.6 + * All rights reserved.
    58.7 + *
    58.8 + * Redistribution and use in source and binary forms, with or without
    58.9 + * modification, are permitted provided that the following conditions
   58.10 + * are met:
   58.11 + *
   58.12 + *  o Redistributions of source code must retain the above copyright
   58.13 + * notice, this list of conditions and the following disclaimer.
   58.14 + *
   58.15 + *  o Redistributions in binary form must reproduce the above copyright
   58.16 + * notice, this list of conditions and the following disclaimer in the
   58.17 + * documentation and/or other materials provided with the distribution.
   58.18 + *
   58.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
   58.20 + * may be used to endorse or promote products derived from this software
   58.21 + * without specific prior written permission.
   58.22 + *
   58.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   58.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   58.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   58.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
   58.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   58.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   58.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   58.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   58.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   58.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   58.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   58.34 + */
   58.35 +package net.fortuna.ical4j.model;
   58.36 +
   58.37 +/**
   58.38 + * $Id$
   58.39 + *
   58.40 + * Created on 02/03/2008
   58.41 + *
   58.42 + * Indicates the violation of a constraint imposed by a relevant specification.
   58.43 + * @author Ben
   58.44 + *
   58.45 + */
   58.46 +public class ConstraintViolationException extends Exception {
   58.47 +
   58.48 +    private static final long serialVersionUID = 6728653187698888940L;
   58.49 +
   58.50 +    /**
   58.51 +     * Default constructor.
   58.52 +     */
   58.53 +    public ConstraintViolationException() {
   58.54 +    }
   58.55 +
   58.56 +    /**
   58.57 +     * @param message an error message
   58.58 +     */
   58.59 +    public ConstraintViolationException(String message) {
   58.60 +        super(message);
   58.61 +    }
   58.62 +}
    59.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    59.2 +++ b/src/net/fortuna/ical4j/model/Content.java	Tue Feb 10 18:12:00 2015 +0100
    59.3 @@ -0,0 +1,62 @@
    59.4 +/**
    59.5 + * Copyright (c) 2012, Ben Fortuna
    59.6 + * All rights reserved.
    59.7 + *
    59.8 + * Redistribution and use in source and binary forms, with or without
    59.9 + * modification, are permitted provided that the following conditions
   59.10 + * are met:
   59.11 + *
   59.12 + *  o Redistributions of source code must retain the above copyright
   59.13 + * notice, this list of conditions and the following disclaimer.
   59.14 + *
   59.15 + *  o Redistributions in binary form must reproduce the above copyright
   59.16 + * notice, this list of conditions and the following disclaimer in the
   59.17 + * documentation and/or other materials provided with the distribution.
   59.18 + *
   59.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
   59.20 + * may be used to endorse or promote products derived from this software
   59.21 + * without specific prior written permission.
   59.22 + *
   59.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   59.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   59.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   59.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
   59.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   59.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   59.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   59.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   59.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   59.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   59.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   59.34 + */
   59.35 +package net.fortuna.ical4j.model;
   59.36 +
   59.37 +import java.io.Serializable;
   59.38 +
   59.39 +/**
   59.40 + * $Id$
   59.41 + *
   59.42 + * Created: 12/10/2004
   59.43 + *
   59.44 + * Base class for calendar content in the form of
   59.45 + * properties and parameters.
   59.46 + * 
   59.47 + * @author Ben Fortuna
   59.48 + */
   59.49 +public abstract class Content implements Serializable {
   59.50 +
   59.51 +    /**
   59.52 +     * 
   59.53 +     */
   59.54 +    private static final long serialVersionUID = -2892694760294583989L;
   59.55 +
   59.56 +    /**
   59.57 +     * @return the cotent name
   59.58 +     */
   59.59 +    public abstract String getName();
   59.60 +
   59.61 +    /**
   59.62 +     * @return the content value
   59.63 +     */
   59.64 +    public abstract String getValue();
   59.65 +}
    60.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    60.2 +++ b/src/net/fortuna/ical4j/model/Date.java	Tue Feb 10 18:12:00 2015 +0100
    60.3 @@ -0,0 +1,158 @@
    60.4 +/**
    60.5 + * Copyright (c) 2012, Ben Fortuna
    60.6 + * All rights reserved.
    60.7 + *
    60.8 + * Redistribution and use in source and binary forms, with or without
    60.9 + * modification, are permitted provided that the following conditions
   60.10 + * are met:
   60.11 + *
   60.12 + *  o Redistributions of source code must retain the above copyright
   60.13 + * notice, this list of conditions and the following disclaimer.
   60.14 + *
   60.15 + *  o Redistributions in binary form must reproduce the above copyright
   60.16 + * notice, this list of conditions and the following disclaimer in the
   60.17 + * documentation and/or other materials provided with the distribution.
   60.18 + *
   60.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
   60.20 + * may be used to endorse or promote products derived from this software
   60.21 + * without specific prior written permission.
   60.22 + *
   60.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   60.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   60.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   60.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
   60.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   60.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   60.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   60.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   60.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   60.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   60.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   60.34 + */
   60.35 +package net.fortuna.ical4j.model;
   60.36 +
   60.37 +import java.text.ParseException;
   60.38 +import java.util.TimeZone;
   60.39 +
   60.40 +import net.fortuna.ical4j.util.Dates;
   60.41 +import net.fortuna.ical4j.util.TimeZones;
   60.42 +
   60.43 +
   60.44 +/**
   60.45 + * $Id$
   60.46 + *
   60.47 + * Created on 26/06/2005
   60.48 + *
   60.49 + * Base class for all representations of time values in RFC2445.
   60.50 + *
   60.51 + * <pre>
   60.52 + * 4.3.4 Date
   60.53 + * 
   60.54 + *    Value Name: DATE
   60.55 + * 
   60.56 + *    Purpose: This value type is used to identify values that contain a
   60.57 + *    calendar date.
   60.58 + * 
   60.59 + *    Formal Definition: The value type is defined by the following
   60.60 + *    notation:
   60.61 + * 
   60.62 + *      date               = date-value
   60.63 + * 
   60.64 + *      date-value         = date-fullyear date-month date-mday
   60.65 + *      date-fullyear      = 4DIGIT
   60.66 + *      date-month         = 2DIGIT        ;01-12
   60.67 + *      date-mday          = 2DIGIT        ;01-28, 01-29, 01-30, 01-31
   60.68 + *                                         ;based on month/year
   60.69 + * 
   60.70 + *    Description: If the property permits, multiple "date" values are
   60.71 + *    specified as a COMMA character (US-ASCII decimal 44) separated list
   60.72 + *    of values. The format for the value type is expressed as the [ISO
   60.73 + *    8601] complete representation, basic format for a calendar date. The
   60.74 + *    textual format specifies a four-digit year, two-digit month, and
   60.75 + *    two-digit day of the month. There are no separator characters between
   60.76 + *    the year, month and day component text.
   60.77 + * 
   60.78 + *    No additional content value encoding (i.e., BACKSLASH character
   60.79 + *    encoding) is defined for this value type.
   60.80 + * 
   60.81 + *    Example: The following represents July 14, 1997:
   60.82 + * 
   60.83 + *      19970714
   60.84 + * 
   60.85 + * </pre>
   60.86 + * 
   60.87 + * @author Ben Fortuna
   60.88 + */
   60.89 +public class Date extends Iso8601 {
   60.90 +
   60.91 +    private static final long serialVersionUID = 7136072363141363141L;
   60.92 +
   60.93 +    private static final String PATTERN = "yyyyMMdd";
   60.94 +
   60.95 +    /**
   60.96 +     * Default constructor.
   60.97 +     */
   60.98 +    public Date() {
   60.99 +        super(PATTERN, Dates.PRECISION_DAY, TimeZones.getDateTimeZone());
  60.100 +    }
  60.101 +    
  60.102 +    /**
  60.103 +     * Creates a new date instance with the specified precision. This
  60.104 +     * constructor is only intended for use by sub-classes.
  60.105 +     * @param precision the date precision
  60.106 +     * @param tz the timezone
  60.107 +     * @see Dates#PRECISION_DAY
  60.108 +     * @see Dates#PRECISION_SECOND
  60.109 +     */
  60.110 +    protected Date(final int precision, TimeZone tz) {
  60.111 +        super(PATTERN, precision, tz);
  60.112 +    }
  60.113 +
  60.114 +    /**
  60.115 +     * @param time a date value in milliseconds
  60.116 +     */
  60.117 +    public Date(final long time) {
  60.118 +        super(time, PATTERN, Dates.PRECISION_DAY, TimeZones.getDateTimeZone());
  60.119 +    }
  60.120 +    
  60.121 +    /**
  60.122 +     * Creates a new date instance with the specified precision. This
  60.123 +     * constructor is only intended for use by sub-classes.
  60.124 +     * @param time a date value in milliseconds
  60.125 +     * @param precision the date precision
  60.126 +     * @param tz the timezone
  60.127 +     * @see Dates#PRECISION_DAY
  60.128 +     * @see Dates#PRECISION_SECOND
  60.129 +     */
  60.130 +    protected Date(final long time, final int precision, TimeZone tz) {
  60.131 +        super(time, PATTERN, precision, tz);
  60.132 +    }
  60.133 +
  60.134 +    /**
  60.135 +     * @param date a date value
  60.136 +     */
  60.137 +    public Date(final java.util.Date date) {
  60.138 +//        this();
  60.139 +        this(date.getTime(), Dates.PRECISION_DAY, TimeZones.getDateTimeZone());
  60.140 +//        setTime(date.getTime());
  60.141 +    }
  60.142 +
  60.143 +    /**
  60.144 +     * @param value a string representation of a date
  60.145 +     * @throws ParseException where the specified string is not a valid date
  60.146 +     */
  60.147 +    public Date(final String value) throws ParseException {
  60.148 +        this();
  60.149 +        setTime(getFormat().parse(value).getTime());
  60.150 +    }
  60.151 +    
  60.152 +    /**
  60.153 +     * @param value a string representation of a date
  60.154 +     * @param pattern a date pattern to apply when parsing
  60.155 +     * @throws ParseException where the specified string is not a valid date
  60.156 +     */
  60.157 +    public Date(String value, String pattern) throws ParseException {
  60.158 +        super(pattern, Dates.PRECISION_DAY, TimeZones.getDateTimeZone());
  60.159 +        setTime(getFormat().parse(value).getTime());
  60.160 +    }
  60.161 +}
    61.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    61.2 +++ b/src/net/fortuna/ical4j/model/DateList.java	Tue Feb 10 18:12:00 2015 +0100
    61.3 @@ -0,0 +1,409 @@
    61.4 +/**
    61.5 + * Copyright (c) 2012, Ben Fortuna
    61.6 + * All rights reserved.
    61.7 + *
    61.8 + * Redistribution and use in source and binary forms, with or without
    61.9 + * modification, are permitted provided that the following conditions
   61.10 + * are met:
   61.11 + *
   61.12 + *  o Redistributions of source code must retain the above copyright
   61.13 + * notice, this list of conditions and the following disclaimer.
   61.14 + *
   61.15 + *  o Redistributions in binary form must reproduce the above copyright
   61.16 + * notice, this list of conditions and the following disclaimer in the
   61.17 + * documentation and/or other materials provided with the distribution.
   61.18 + *
   61.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
   61.20 + * may be used to endorse or promote products derived from this software
   61.21 + * without specific prior written permission.
   61.22 + *
   61.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   61.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   61.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   61.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
   61.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   61.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   61.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   61.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   61.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   61.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   61.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   61.34 + */
   61.35 +package net.fortuna.ical4j.model;
   61.36 +
   61.37 +import java.io.Serializable;
   61.38 +import java.text.ParseException;
   61.39 +import java.util.ArrayList;
   61.40 +import java.util.Collection;
   61.41 +import java.util.Collections;
   61.42 +import java.util.Iterator;
   61.43 +import java.util.List;
   61.44 +import java.util.ListIterator;
   61.45 +import java.util.StringTokenizer;
   61.46 +
   61.47 +import net.fortuna.ical4j.model.parameter.Value;
   61.48 +
   61.49 +import org.apache.commons.lang.builder.EqualsBuilder;
   61.50 +import org.apache.commons.lang.builder.HashCodeBuilder;
   61.51 +
   61.52 +/**
   61.53 + * $Id$ [23-Apr-2004]
   61.54 + *
   61.55 + * Defines a list of iCalendar dates. If no value type is specified a list
   61.56 + * defaults to DATE-TIME instances.
   61.57 + * @author Ben Fortuna
   61.58 + */
   61.59 +public class DateList implements List, Serializable {
   61.60 +
   61.61 +	private static final long serialVersionUID = -3700862452550012357L;
   61.62 +
   61.63 +	private final Value type;
   61.64 +    
   61.65 +    private final List dates;
   61.66 +
   61.67 +    private TimeZone timeZone;
   61.68 +    
   61.69 +    private boolean utc;
   61.70 +
   61.71 +    /**
   61.72 +     * Default constructor.
   61.73 +     */
   61.74 +    public DateList() {
   61.75 +    	this(false);
   61.76 +    }
   61.77 +
   61.78 +    public DateList(final boolean unmodifiable) {
   61.79 +    
   61.80 +        this.type = Value.DATE_TIME;
   61.81 +        if (unmodifiable) {
   61.82 +        	dates = Collections.EMPTY_LIST;
   61.83 +        }
   61.84 +        else {
   61.85 +            dates = new ArrayList();
   61.86 +        }
   61.87 +    }
   61.88 +
   61.89 +    /**
   61.90 +     * @param aType the type of dates contained by the instance
   61.91 +     */
   61.92 +    public DateList(final Value aType) {
   61.93 +        this(aType, null);
   61.94 +    }
   61.95 +    
   61.96 +    /**
   61.97 +     * Default constructor.
   61.98 +     * 
   61.99 +     * @param aType
  61.100 +     *            specifies the type of dates (either date or date-time)
  61.101 +     * @param timezone the timezone to apply to dates contained by the instance
  61.102 +     */
  61.103 +    public DateList(final Value aType, final TimeZone timezone) {
  61.104 +        if (aType == null) {
  61.105 +            this.type = Value.DATE_TIME;
  61.106 +        } else {
  61.107 +            this.type = aType;
  61.108 +        }
  61.109 +        this.timeZone = timezone;
  61.110 +        dates = new ArrayList();
  61.111 +    }
  61.112 +
  61.113 +    /**
  61.114 +     * @param aValue a string representation of a date list
  61.115 +     * @param aType the date types contained in the instance
  61.116 +     * @throws ParseException where the specified string is not a valid date list
  61.117 +     */
  61.118 +    public DateList(final String aValue, final Value aType) throws ParseException {
  61.119 +        this(aValue, aType, null);
  61.120 +    }
  61.121 +    
  61.122 +    /**
  61.123 +     * Parses the specified string representation to create a list of dates.
  61.124 +     * 
  61.125 +     * @param aValue
  61.126 +     *            a string representation of a list of dates
  61.127 +     * @param aType
  61.128 +     *            specifies the type of dates (either date or date-time)
  61.129 +     * @param timezone the timezone to apply to contained dates
  61.130 +     * @throws ParseException
  61.131 +     *             if an invalid date representation exists in the date list
  61.132 +     *             string
  61.133 +     */
  61.134 +    public DateList(final String aValue, final Value aType, final TimeZone timezone)
  61.135 +            throws ParseException {
  61.136 +    	
  61.137 +        this(aType, timezone);
  61.138 +        final StringTokenizer t = new StringTokenizer(aValue, ",");
  61.139 +        while (t.hasMoreTokens()) {
  61.140 +            if (Value.DATE.equals(type)) {
  61.141 +                add((Object) new Date(t.nextToken()));
  61.142 +            }
  61.143 +            else {
  61.144 +                add((Object) new DateTime(t.nextToken(), timezone));
  61.145 +            }
  61.146 +        }
  61.147 +    }
  61.148 +    
  61.149 +    /**
  61.150 +     * Constructs a new date list of the specified type containing
  61.151 +     * the dates in the specified list.
  61.152 +     * @param list a list of dates to include in the new list
  61.153 +     * @param type the type of the new list
  61.154 +     */
  61.155 +    public DateList(final DateList list, final Value type) {
  61.156 +        if (!Value.DATE.equals(type) && !Value.DATE_TIME.equals(type)) {
  61.157 +            throw new IllegalArgumentException(
  61.158 +                    "Type must be either DATE or DATE-TIME");
  61.159 +        }
  61.160 +        
  61.161 +        this.type = type;
  61.162 +        dates = new ArrayList();
  61.163 +        
  61.164 +        if (Value.DATE.equals(type)) {
  61.165 +            for (final Iterator i = list.iterator(); i.hasNext();) {
  61.166 +                add(new Date((Date) i.next()));
  61.167 +            }
  61.168 +        }
  61.169 +        else {
  61.170 +            for (final Iterator i = list.iterator(); i.hasNext();) {
  61.171 +                add(new DateTime((Date) i.next()));
  61.172 +            }
  61.173 +        }
  61.174 +    }
  61.175 +
  61.176 +    /**
  61.177 +     * {@inheritDoc}
  61.178 +     */
  61.179 +    public final String toString() {
  61.180 +        final StringBuffer b = new StringBuffer();
  61.181 +        for (final Iterator i = iterator(); i.hasNext();) {
  61.182 +            /*
  61.183 +             * if (type != null && Value.DATE.equals(type)) {
  61.184 +             * b.append(DateFormat.getInstance().format((Date) i.next())); }
  61.185 +             * else { b.append(DateTimeFormat.getInstance().format((Date)
  61.186 +             * i.next(), isUtc())); }
  61.187 +             */
  61.188 +            b.append(i.next());
  61.189 +            if (i.hasNext()) {
  61.190 +                b.append(',');
  61.191 +            }
  61.192 +        }
  61.193 +        return b.toString();
  61.194 +    }
  61.195 +
  61.196 +    /**
  61.197 +     * Add a date to the list. The date will be updated to reflect the
  61.198 +     * timezone of this list.
  61.199 +     * @param date the date to add
  61.200 +     * @return true
  61.201 +     * @see List#add(java.lang.Object)
  61.202 +     */
  61.203 +    public final boolean add(final Date date) {
  61.204 +        if (date instanceof DateTime) {
  61.205 +            if (isUtc()) {
  61.206 +                ((DateTime) date).setUtc(true);
  61.207 +            }
  61.208 +            else {
  61.209 +                ((DateTime) date).setTimeZone(getTimeZone());
  61.210 +            }
  61.211 +        }
  61.212 +        else if (!Value.DATE.equals(getType())) {
  61.213 +            final DateTime dateTime = new DateTime(date);
  61.214 +            dateTime.setTimeZone(getTimeZone());
  61.215 +            return add((Object) dateTime);
  61.216 +        }
  61.217 +        return add((Object) date);
  61.218 +    }
  61.219 +    
  61.220 +    /**
  61.221 +     * Overrides superclass to throw an <code>IllegalArgumentException</code>
  61.222 +     * Where argument is not a <code>net.fortuna.ical4j.model.Date</code>.
  61.223 +     * @param date the date to add
  61.224 +     * @return true if the object was added, otherwise false
  61.225 +     * @see List#add(E)
  61.226 +     */
  61.227 +    public final boolean add(final Object date) {
  61.228 +        if (!(date instanceof Date)) {
  61.229 +            throw new IllegalArgumentException("Argument not a " + Date.class.getName());
  61.230 +        }
  61.231 +        return dates.add(date);
  61.232 +    }
  61.233 +
  61.234 +    /**
  61.235 +     * Remove a date from the list.
  61.236 +     * 
  61.237 +     * @param date
  61.238 +     *            the date to remove
  61.239 +     * @return true if the list contained the specified date
  61.240 +     * @see List#remove(java.lang.Object)
  61.241 +     */
  61.242 +    public final boolean remove(final Date date) {
  61.243 +        return remove((Object) date);
  61.244 +    }
  61.245 +
  61.246 +    /**
  61.247 +     * Returns the VALUE parameter specifying the type of dates (ie. date or
  61.248 +     * date-time) stored in this date list.
  61.249 +     * 
  61.250 +     * @return Returns a Value parameter.
  61.251 +     */
  61.252 +    public final Value getType() {
  61.253 +        return type;
  61.254 +    }
  61.255 +
  61.256 +    /**
  61.257 +     * Indicates whether this list is in local or UTC format. This property will
  61.258 +     * have no affect if the type of the list is not DATE-TIME.
  61.259 +     * 
  61.260 +     * @return Returns true if in UTC format, otherwise false.
  61.261 +     */
  61.262 +    public final boolean isUtc() {
  61.263 +        return utc;
  61.264 +    }
  61.265 +
  61.266 +    /**
  61.267 +     * Sets whether this list is in UTC or local time format.
  61.268 +     * 
  61.269 +     * @param utc
  61.270 +     *            The utc to set.
  61.271 +     */
  61.272 +    public final void setUtc(final boolean utc) {
  61.273 +        if (!Value.DATE.equals(type)) {
  61.274 +            for (final Iterator i = iterator(); i.hasNext();) {
  61.275 +                ((DateTime) i.next()).setUtc(utc);
  61.276 +            }
  61.277 +        }
  61.278 +        this.timeZone = null;
  61.279 +        this.utc = utc;
  61.280 +    }
  61.281 +    
  61.282 +    /**
  61.283 +     * Applies the specified timezone to all dates in the list.
  61.284 +     * All dates added to this list will also have this timezone
  61.285 +     * applied.
  61.286 +     * @param timeZone a timezone to apply to contained dates
  61.287 +     */
  61.288 +    public final void setTimeZone(final TimeZone timeZone) {
  61.289 +        if (!Value.DATE.equals(type)) {
  61.290 +            for (final Iterator i = iterator(); i.hasNext();) {
  61.291 +                ((DateTime) i.next()).setTimeZone(timeZone);
  61.292 +            }
  61.293 +        }
  61.294 +        this.timeZone = timeZone;
  61.295 +        this.utc = false;
  61.296 +    }
  61.297 +
  61.298 +    /**
  61.299 +     * @return Returns the timeZone.
  61.300 +     */
  61.301 +    public final TimeZone getTimeZone() {
  61.302 +        return timeZone;
  61.303 +    }
  61.304 +
  61.305 +	public final void add(int arg0, Object arg1) {
  61.306 +		dates.add(arg0, arg1);
  61.307 +	}
  61.308 +
  61.309 +	public final boolean addAll(Collection arg0) {
  61.310 +		return dates.addAll(arg0);
  61.311 +	}
  61.312 +
  61.313 +	public final boolean addAll(int arg0, Collection arg1) {
  61.314 +		return dates.addAll(arg0, arg1);
  61.315 +	}
  61.316 +
  61.317 +	public final void clear() {
  61.318 +		dates.clear();
  61.319 +	}
  61.320 +
  61.321 +	public final boolean contains(Object o) {
  61.322 +		return dates.contains(o);
  61.323 +	}
  61.324 +
  61.325 +	public final boolean containsAll(Collection arg0) {
  61.326 +		return dates.containsAll(arg0);
  61.327 +	}
  61.328 +
  61.329 +	public final Object get(int index) {
  61.330 +		return dates.get(index);
  61.331 +	}
  61.332 +
  61.333 +	public final int indexOf(Object o) {
  61.334 +		return dates.indexOf(o);
  61.335 +	}
  61.336 +
  61.337 +	public final boolean isEmpty() {
  61.338 +		return dates.isEmpty();
  61.339 +	}
  61.340 +
  61.341 +	public final Iterator iterator() {
  61.342 +		return dates.iterator();
  61.343 +	}
  61.344 +
  61.345 +	public final int lastIndexOf(Object o) {
  61.346 +		return dates.lastIndexOf(o);
  61.347 +	}
  61.348 +
  61.349 +	public final ListIterator listIterator() {
  61.350 +		return dates.listIterator();
  61.351 +	}
  61.352 +
  61.353 +	public final ListIterator listIterator(int index) {
  61.354 +		return dates.listIterator(index);
  61.355 +	}
  61.356 +
  61.357 +	public final Object remove(int index) {
  61.358 +		return dates.remove(index);
  61.359 +	}
  61.360 +
  61.361 +	public final boolean remove(Object o) {
  61.362 +		return dates.remove(o);
  61.363 +	}
  61.364 +
  61.365 +	public final boolean removeAll(Collection arg0) {
  61.366 +		return dates.removeAll(arg0);
  61.367 +	}
  61.368 +
  61.369 +	public final boolean retainAll(Collection arg0) {
  61.370 +		return dates.retainAll(arg0);
  61.371 +	}
  61.372 +
  61.373 +	public final Object set(int arg0, Object arg1) {
  61.374 +		return dates.set(arg0, arg1);
  61.375 +	}
  61.376 +
  61.377 +	public final int size() {
  61.378 +		return dates.size();
  61.379 +	}
  61.380 +
  61.381 +	public final List subList(int fromIndex, int toIndex) {
  61.382 +		return dates.subList(fromIndex, toIndex);
  61.383 +	}
  61.384 +
  61.385 +	public final Object[] toArray() {
  61.386 +		return dates.toArray();
  61.387 +	}
  61.388 +
  61.389 +	public final Object[] toArray(Object[] arg0) {
  61.390 +		return dates.toArray(arg0);
  61.391 +	}
  61.392 +	
  61.393 +	public final boolean equals(Object obj) {
  61.394 +		if (!getClass().isAssignableFrom(obj.getClass())) {
  61.395 +			return false;
  61.396 +		}
  61.397 +		final DateList rhs = (DateList) obj;
  61.398 +		return new EqualsBuilder().append(dates, rhs.dates)
  61.399 +			.append(type, rhs.type)
  61.400 +			.append(timeZone, rhs.timeZone)
  61.401 +			.append(utc, utc)
  61.402 +			.isEquals();
  61.403 +	}
  61.404 +	
  61.405 +	public final int hashCode() {
  61.406 +		return new HashCodeBuilder().append(dates)
  61.407 +			.append(type)
  61.408 +			.append(timeZone)
  61.409 +			.append(utc)
  61.410 +			.toHashCode();
  61.411 +	}
  61.412 +}
    62.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    62.2 +++ b/src/net/fortuna/ical4j/model/DateRange.java	Tue Feb 10 18:12:00 2015 +0100
    62.3 @@ -0,0 +1,203 @@
    62.4 +/**
    62.5 + * Copyright (c) 2012, Ben Fortuna
    62.6 + * All rights reserved.
    62.7 + *
    62.8 + * Redistribution and use in source and binary forms, with or without
    62.9 + * modification, are permitted provided that the following conditions
   62.10 + * are met:
   62.11 + *
   62.12 + *  o Redistributions of source code must retain the above copyright
   62.13 + * notice, this list of conditions and the following disclaimer.
   62.14 + *
   62.15 + *  o Redistributions in binary form must reproduce the above copyright
   62.16 + * notice, this list of conditions and the following disclaimer in the
   62.17 + * documentation and/or other materials provided with the distribution.
   62.18 + *
   62.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
   62.20 + * may be used to endorse or promote products derived from this software
   62.21 + * without specific prior written permission.
   62.22 + *
   62.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   62.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   62.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   62.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
   62.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   62.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   62.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   62.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   62.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   62.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   62.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   62.34 + */
   62.35 +package net.fortuna.ical4j.model;
   62.36 +
   62.37 +import java.io.Serializable;
   62.38 +import java.util.Date;
   62.39 +
   62.40 +/**
   62.41 + * @author fortuna
   62.42 + *
   62.43 + */
   62.44 +public class DateRange implements Serializable {
   62.45 +
   62.46 +    private static final long serialVersionUID = -7303846680559287286L;
   62.47 +
   62.48 +    /**
   62.49 +     * A flag indicating whether to include the start of the period in test functions.
   62.50 +     */
   62.51 +    public static final int INCLUSIVE_START = 1;
   62.52 +
   62.53 +    /**
   62.54 +     * A flag indicating whether to include the end of the period in test functions.
   62.55 +     */
   62.56 +    public static final int INCLUSIVE_END = 2;
   62.57 +
   62.58 +    private final Date rangeStart;
   62.59 +    
   62.60 +    private final Date rangeEnd;
   62.61 +    
   62.62 +    /**
   62.63 +     * @param start the start of the range
   62.64 +     * @param end the end of the range
   62.65 +     */
   62.66 +    public DateRange(Date start, Date end) {
   62.67 +        if (start == null) {
   62.68 +            throw new IllegalArgumentException("Range start is null");
   62.69 +        }
   62.70 +        if (end == null) {
   62.71 +            throw new IllegalArgumentException("Range end is null");
   62.72 +        }
   62.73 +        if (end.before(start)) {
   62.74 +            throw new IllegalArgumentException("Range start must be before range end");
   62.75 +        }
   62.76 +        this.rangeStart = start;
   62.77 +        this.rangeEnd = end;
   62.78 +    }
   62.79 +
   62.80 +    /**
   62.81 +     * @return the rangeStart
   62.82 +     */
   62.83 +    public Date getRangeStart() {
   62.84 +        return rangeStart;
   62.85 +    }
   62.86 +
   62.87 +    /**
   62.88 +     * @return the rangeEnd
   62.89 +     */
   62.90 +    public Date getRangeEnd() {
   62.91 +        return rangeEnd;
   62.92 +    }
   62.93 +
   62.94 +    /**
   62.95 +     * Determines if the specified date occurs within this period (inclusive of
   62.96 +     * period start and end).
   62.97 +     * @param date a date to test for inclusion
   62.98 +     * @return true if the specified date occurs within the current period
   62.99 +     * 
  62.100 +     */
  62.101 +    public final boolean includes(final Date date) {
  62.102 +        return includes(date, INCLUSIVE_START | INCLUSIVE_END);
  62.103 +    }
  62.104 +
  62.105 +    /**
  62.106 +     * Decides whether a date falls within this period.
  62.107 +     * @param date the date to be tested
  62.108 +     * @param inclusiveMask specifies whether period start and end are included
  62.109 +     * in the calculation
  62.110 +     * @return true if the date is in the period, false otherwise
  62.111 +     * @see Period#INCLUSIVE_START
  62.112 +     * @see Period#INCLUSIVE_END
  62.113 +     */
  62.114 +    public final boolean includes(final Date date, final int inclusiveMask) {
  62.115 +        boolean includes = true;
  62.116 +        if ((inclusiveMask & INCLUSIVE_START) > 0) {
  62.117 +            includes = includes && !rangeStart.after(date);
  62.118 +        }
  62.119 +        else {
  62.120 +            includes = includes && rangeStart.before(date);
  62.121 +        }
  62.122 +        if ((inclusiveMask & INCLUSIVE_END) > 0) {
  62.123 +            includes = includes && !rangeEnd.before(date);
  62.124 +        }
  62.125 +        else {
  62.126 +            includes = includes && rangeEnd.after(date);
  62.127 +        }
  62.128 +        return includes;
  62.129 +    }
  62.130 +
  62.131 +    /**
  62.132 +     * Decides whether this period is completed before the given period starts.
  62.133 +     * 
  62.134 +     * @param range
  62.135 +     *            a period that may or may not start after this period ends
  62.136 +     * @return true if the specified period starts after this periods ends,
  62.137 +     *         otherwise false
  62.138 +     */
  62.139 +    public final boolean before(final DateRange range) {
  62.140 +        return (rangeEnd.before(range.getRangeStart()));
  62.141 +    }
  62.142 +
  62.143 +    /**
  62.144 +     * Decides whether this period starts after the given period ends.
  62.145 +     * 
  62.146 +     * @param range
  62.147 +     *            a period that may or may not end before this period starts
  62.148 +     * @return true if the specified period end before this periods starts,
  62.149 +     *         otherwise false
  62.150 +     */
  62.151 +    public final boolean after(final DateRange range) {
  62.152 +        return (rangeStart.after(range.getRangeEnd()));
  62.153 +    }
  62.154 +
  62.155 +    /**
  62.156 +     * Decides whether this period intersects with another one.
  62.157 +     * 
  62.158 +     * @param range
  62.159 +     *            a possible intersecting period
  62.160 +     * @return true if the specified period intersects this one, false
  62.161 +     *         otherwise.
  62.162 +     */
  62.163 +    public final boolean intersects(final DateRange range) {
  62.164 +        boolean intersects = false;
  62.165 +        // Test for our start date in period
  62.166 +        // (Exclude if it is the end date of test range)
  62.167 +        if (range.includes(rangeStart) && !range.getRangeEnd().equals(rangeStart)) {
  62.168 +            intersects = true;
  62.169 +        }
  62.170 +        // Test for test range's start date in our range
  62.171 +        // (Exclude if it is the end date of our range)
  62.172 +        else if (includes(range.getRangeStart())
  62.173 +                && !rangeEnd.equals(range.getRangeStart())) {
  62.174 +            intersects = true;
  62.175 +        }
  62.176 +        return intersects;
  62.177 +    }
  62.178 +
  62.179 +    /**
  62.180 +     * Decides whether these periods are serial without a gap.
  62.181 +     * @param range a period to test for adjacency
  62.182 +     * @return true if one period immediately follows the other, false otherwise
  62.183 +     */
  62.184 +    public final boolean adjacent(final DateRange range) {
  62.185 +        boolean adjacent = false;
  62.186 +        if (rangeStart.equals(range.getRangeEnd())) {
  62.187 +            adjacent = true;
  62.188 +        } else if (rangeEnd.equals(range.getRangeStart())) {
  62.189 +            adjacent = true;
  62.190 +        }
  62.191 +        return adjacent;
  62.192 +    }
  62.193 +
  62.194 +    /**
  62.195 +     * Decides whether the given period is completely contained within this one.
  62.196 +     * 
  62.197 +     * @param range
  62.198 +     *            the period that may be contained by this one
  62.199 +     * @return true if this period covers all the dates of the specified period,
  62.200 +     *         otherwise false
  62.201 +     */
  62.202 +    public final boolean contains(final DateRange range) {
  62.203 +        // Test for period's start and end dates in our range
  62.204 +        return (includes(range.getRangeStart()) && includes(range.getRangeEnd()));
  62.205 +    }
  62.206 +}
    63.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    63.2 +++ b/src/net/fortuna/ical4j/model/DateTime.java	Tue Feb 10 18:12:00 2015 +0100
    63.3 @@ -0,0 +1,509 @@
    63.4 +/**
    63.5 + * Copyright (c) 2012, Ben Fortuna
    63.6 + * All rights reserved.
    63.7 + *
    63.8 + * Redistribution and use in source and binary forms, with or without
    63.9 + * modification, are permitted provided that the following conditions
   63.10 + * are met:
   63.11 + *
   63.12 + *  o Redistributions of source code must retain the above copyright
   63.13 + * notice, this list of conditions and the following disclaimer.
   63.14 + *
   63.15 + *  o Redistributions in binary form must reproduce the above copyright
   63.16 + * notice, this list of conditions and the following disclaimer in the
   63.17 + * documentation and/or other materials provided with the distribution.
   63.18 + *
   63.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
   63.20 + * may be used to endorse or promote products derived from this software
   63.21 + * without specific prior written permission.
   63.22 + *
   63.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   63.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   63.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   63.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
   63.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   63.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   63.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   63.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   63.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   63.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   63.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   63.34 + */
   63.35 +package net.fortuna.ical4j.model;
   63.36 +
   63.37 +import java.text.DateFormat;
   63.38 +import java.text.ParseException;
   63.39 +import java.text.SimpleDateFormat;
   63.40 +import java.util.Map;
   63.41 +import java.util.WeakHashMap;
   63.42 +
   63.43 +import net.fortuna.ical4j.util.CompatibilityHints;
   63.44 +import net.fortuna.ical4j.util.Dates;
   63.45 +import net.fortuna.ical4j.util.TimeZones;
   63.46 +
   63.47 +import org.apache.commons.lang.builder.EqualsBuilder;
   63.48 +import org.apache.commons.lang.builder.HashCodeBuilder;
   63.49 +
   63.50 +/**
   63.51 + * $Id$
   63.52 + * 
   63.53 + * Created on 26/06/2005
   63.54 + * 
   63.55 + * Represents a time of day on a specific date.
   63.56 + * 
   63.57 + * <pre>
   63.58 + * 4.3.5   Date-Time
   63.59 + * 
   63.60 + *    Value Name: DATE-TIME
   63.61 + * 
   63.62 + *    Purpose: This value type is used to identify values that specify a
   63.63 + *    precise calendar date and time of day.
   63.64 + * 
   63.65 + *    Formal Definition: The value type is defined by the following
   63.66 + *    notation:
   63.67 + * 
   63.68 + *      date-time  = date "T" time ;As specified in the date and time
   63.69 + *                                 ;value definitions
   63.70 + * 
   63.71 + *    Description: If the property permits, multiple "date-time" values are
   63.72 + *    specified as a COMMA character (US-ASCII decimal 44) separated list
   63.73 + *    of values. No additional content value encoding (i.e., BACKSLASH
   63.74 + *    character encoding) is defined for this value type.
   63.75 + * 
   63.76 + *    The "DATE-TIME" data type is used to identify values that contain a
   63.77 + *    precise calendar date and time of day. The format is based on the
   63.78 + *    [ISO 8601] complete representation, basic format for a calendar date
   63.79 + *    and time of day. The text format is a concatenation of the "date",
   63.80 + *    followed by the LATIN CAPITAL LETTER T character (US-ASCII decimal
   63.81 + *    84) time designator, followed by the "time" format.
   63.82 + * 
   63.83 + *    The "DATE-TIME" data type expresses time values in three forms:
   63.84 + * 
   63.85 + *    The form of date and time with UTC offset MUST NOT be used. For
   63.86 + *    example, the following is not valid for a date-time value:
   63.87 + * 
   63.88 + *      DTSTART:19980119T230000-0800       ;Invalid time format
   63.89 + * 
   63.90 + *    FORM #1: DATE WITH LOCAL TIME
   63.91 + * 
   63.92 + *    The date with local time form is simply a date-time value that does
   63.93 + *    not contain the UTC designator nor does it reference a time zone. For
   63.94 + *    example, the following represents Janurary 18, 1998, at 11 PM:
   63.95 + * 
   63.96 + *      DTSTART:19980118T230000
   63.97 + * 
   63.98 + *    Date-time values of this type are said to be "floating" and are not
   63.99 + *    bound to any time zone in particular. They are used to represent the
  63.100 + *    same hour, minute, and second value regardless of which time zone is
  63.101 + *    currently being observed. For example, an event can be defined that
  63.102 + *    indicates that an individual will be busy from 11:00 AM to 1:00 PM
  63.103 + *    every day, no matter which time zone the person is in. In these
  63.104 + *    cases, a local time can be specified. The recipient of an iCalendar
  63.105 + *    object with a property value consisting of a local time, without any
  63.106 + *    relative time zone information, SHOULD interpret the value as being
  63.107 + *    fixed to whatever time zone the ATTENDEE is in at any given moment.
  63.108 + *    This means that two ATTENDEEs, in different time zones, receiving the
  63.109 + *    same event definition as a floating time, may be participating in the
  63.110 + *    event at different actual times. Floating time SHOULD only be used
  63.111 + *    where that is the reasonable behavior.
  63.112 + * 
  63.113 + *    In most cases, a fixed time is desired. To properly communicate a
  63.114 + *    fixed time in a property value, either UTC time or local time with
  63.115 + *    time zone reference MUST be specified.
  63.116 + * 
  63.117 + *    The use of local time in a DATE-TIME value without the TZID property
  63.118 + *    parameter is to be interpreted as floating time, regardless of the
  63.119 + *    existence of "VTIMEZONE" calendar components in the iCalendar object.
  63.120 + * 
  63.121 + *    FORM #2: DATE WITH UTC TIME
  63.122 + * 
  63.123 + *    The date with UTC time, or absolute time, is identified by a LATIN
  63.124 + *    CAPITAL LETTER Z suffix character (US-ASCII decimal 90), the UTC
  63.125 + *    designator, appended to the time value. For example, the following
  63.126 + *    represents January 19, 1998, at 0700 UTC:
  63.127 + * 
  63.128 + *      DTSTART:19980119T070000Z
  63.129 + * 
  63.130 + *    The TZID property parameter MUST NOT be applied to DATE-TIME
  63.131 + *    properties whose time values are specified in UTC.
  63.132 + * 
  63.133 + *    FORM #3: DATE WITH LOCAL TIME AND TIME ZONE REFERENCE
  63.134 + * 
  63.135 + *    The date and local time with reference to time zone information is
  63.136 + *    identified by the use the TZID property parameter to reference the
  63.137 + *    appropriate time zone definition. TZID is discussed in detail in the
  63.138 + *    section on Time Zone. For example, the following represents 2 AM in
  63.139 + *    New York on Janurary 19, 1998:
  63.140 + * 
  63.141 + *           DTSTART;TZID=US-Eastern:19980119T020000
  63.142 + * 
  63.143 + *    Example: The following represents July 14, 1997, at 1:30 PM in New
  63.144 + *    York City in each of the three time formats, using the "DTSTART"
  63.145 + *    property.
  63.146 + * 
  63.147 + *      DTSTART:19970714T133000            ;Local time
  63.148 + *      DTSTART:19970714T173000Z           ;UTC time
  63.149 + *      DTSTART;TZID=US-Eastern:19970714T133000    ;Local time and time
  63.150 + *                         ; zone reference
  63.151 + * 
  63.152 + *    A time value MUST ONLY specify 60 seconds when specifying the
  63.153 + *    periodic "leap second" in the time value. For example:
  63.154 + * 
  63.155 + *      COMPLETED:19970630T235960Z
  63.156 + * </pre>
  63.157 + * 
  63.158 + * @author Ben Fortuna
  63.159 + */
  63.160 +public class DateTime extends Date {
  63.161 +
  63.162 +	private static final long serialVersionUID = -6407231357919440387L;
  63.163 +
  63.164 +	private static final String DEFAULT_PATTERN = "yyyyMMdd'T'HHmmss";
  63.165 +
  63.166 +	private static final String UTC_PATTERN = "yyyyMMdd'T'HHmmss'Z'";
  63.167 +
  63.168 +	private static final String RELAXED_PATTERN = "yyyyMMdd";
  63.169 +
  63.170 +	/**
  63.171 +	 * Used for parsing times in a UTC date-time representation.
  63.172 +	 */
  63.173 +	private static final DateFormatCache UTC_FORMAT;
  63.174 +	static {
  63.175 +		final DateFormat format = new SimpleDateFormat(UTC_PATTERN);
  63.176 +		format.setTimeZone(TimeZones.getUtcTimeZone());
  63.177 +		format.setLenient(false);
  63.178 +
  63.179 +		UTC_FORMAT = new DateFormatCache(format);
  63.180 +	}
  63.181 +
  63.182 +	/**
  63.183 +	 * Used for parsing times in a local date-time representation.
  63.184 +	 */
  63.185 +	private static final DateFormatCache DEFAULT_FORMAT;
  63.186 +	static {
  63.187 +		final DateFormat format = new SimpleDateFormat(DEFAULT_PATTERN);
  63.188 +		format.setLenient(false);
  63.189 +		DEFAULT_FORMAT = new DateFormatCache(format);
  63.190 +	}
  63.191 +
  63.192 +	private static final DateFormatCache LENIENT_DEFAULT_FORMAT;
  63.193 +	static {
  63.194 +		final DateFormat format = new SimpleDateFormat(DEFAULT_PATTERN);
  63.195 +		LENIENT_DEFAULT_FORMAT = new DateFormatCache(format);
  63.196 +	}
  63.197 +
  63.198 +	private static final DateFormatCache RELAXED_FORMAT;
  63.199 +	static {
  63.200 +		final DateFormat format = new SimpleDateFormat(RELAXED_PATTERN);
  63.201 +		format.setLenient(false);
  63.202 +		RELAXED_FORMAT = new DateFormatCache(format);
  63.203 +	}
  63.204 +
  63.205 +	private Time time;
  63.206 +
  63.207 +	private TimeZone timezone;
  63.208 +
  63.209 +	/**
  63.210 +	 * Default constructor.
  63.211 +	 */
  63.212 +	public DateTime() {
  63.213 +		super(Dates.PRECISION_SECOND, java.util.TimeZone.getDefault());
  63.214 +		this.time = new Time(getTime(), getFormat().getTimeZone());
  63.215 +	}
  63.216 +
  63.217 +	/**
  63.218 +	 * @param utc
  63.219 +	 *            indicates if the date is in UTC time
  63.220 +	 */
  63.221 +	public DateTime(final boolean utc) {
  63.222 +		this();
  63.223 +		setUtc(utc);
  63.224 +	}
  63.225 +
  63.226 +	/**
  63.227 +	 * @param time
  63.228 +	 *            a date-time value in milliseconds
  63.229 +	 */
  63.230 +	public DateTime(final long time) {
  63.231 +		super(time, Dates.PRECISION_SECOND, java.util.TimeZone.getDefault());
  63.232 +		this.time = new Time(time, getFormat().getTimeZone());
  63.233 +	}
  63.234 +
  63.235 +	/**
  63.236 +	 * @param date
  63.237 +	 *            a date-time value
  63.238 +	 */
  63.239 +	public DateTime(final java.util.Date date) {
  63.240 +		super(date.getTime(), Dates.PRECISION_SECOND, java.util.TimeZone.getDefault());
  63.241 +		this.time = new Time(date.getTime(), getFormat().getTimeZone());
  63.242 +		// copy timezone information if applicable..
  63.243 +		if (date instanceof DateTime) {
  63.244 +			final DateTime dateTime = (DateTime) date;
  63.245 +			if (dateTime.isUtc()) {
  63.246 +				setUtc(true);
  63.247 +			} else {
  63.248 +				setTimeZone(dateTime.getTimeZone());
  63.249 +			}
  63.250 +		}
  63.251 +	}
  63.252 +
  63.253 +	/**
  63.254 +	 * Constructs a new DateTime instance from parsing the specified string
  63.255 +	 * representation in the default (local) timezone.
  63.256 +	 * 
  63.257 +	 * @param value
  63.258 +	 *            a string representation of a date-time
  63.259 +	 * @throws ParseException
  63.260 +	 *             where the specified string is not a valid date-time
  63.261 +	 */
  63.262 +	public DateTime(final String value) throws ParseException {
  63.263 +		this(value, null);
  63.264 +		/*
  63.265 +		 * long time = 0; try { synchronized (UTC_FORMAT) { time =
  63.266 +		 * UTC_FORMAT.parse(value).getTime(); } setUtc(true); } catch
  63.267 +		 * (ParseException pe) { synchronized (DEFAULT_FORMAT) {
  63.268 +		 * DEFAULT_FORMAT.setTimeZone(getFormat().getTimeZone()); time =
  63.269 +		 * DEFAULT_FORMAT.parse(value).getTime(); } this.time = new Time(time,
  63.270 +		 * getFormat().getTimeZone()); } setTime(time);
  63.271 +		 */
  63.272 +	}
  63.273 +
  63.274 +	/**
  63.275 +	 * Creates a new date-time instance from the specified value in the given
  63.276 +	 * timezone. If a timezone is not specified, the default timezone (as
  63.277 +	 * returned by {@link java.util.TimeZone#getDefault()}) is used.
  63.278 +	 * 
  63.279 +	 * @param value
  63.280 +	 *            a string representation of a date-time
  63.281 +	 * @param timezone
  63.282 +	 *            the timezone for the date-time instance
  63.283 +	 * @throws ParseException
  63.284 +	 *             where the specified string is not a valid date-time
  63.285 +	 */
  63.286 +	public DateTime(final String value, final TimeZone timezone)
  63.287 +			throws ParseException {
  63.288 +		// setting the time to 0 since we are going to reset it anyway
  63.289 +		super(0, Dates.PRECISION_SECOND, timezone != null ? timezone
  63.290 +				: java.util.TimeZone.getDefault());
  63.291 +		this.time = new Time(getTime(), getFormat().getTimeZone());
  63.292 +
  63.293 +        try {
  63.294 +            if (value.endsWith("Z")) {
  63.295 +                setTime(value, (DateFormat) UTC_FORMAT.get(), null);
  63.296 +                setUtc(true);
  63.297 +            } else {
  63.298 +                if (timezone != null) {
  63.299 +                    setTime(value, (DateFormat) DEFAULT_FORMAT.get(), timezone);
  63.300 +                } else {
  63.301 +                    // Use lenient parsing for floating times. This is to
  63.302 +                    // overcome
  63.303 +                    // the problem of parsing VTimeZone dates that specify dates
  63.304 +                    // that the strict parser does not accept.
  63.305 +                    setTime(value, (DateFormat) LENIENT_DEFAULT_FORMAT.get(),
  63.306 +                            getFormat().getTimeZone());
  63.307 +                }
  63.308 +                setTimeZone(timezone);
  63.309 +            }
  63.310 +        } catch (ParseException pe) {
  63.311 +            if (CompatibilityHints.isHintEnabled(CompatibilityHints.KEY_RELAXED_PARSING)) {
  63.312 +
  63.313 +                setTime(value, (DateFormat) RELAXED_FORMAT.get(), timezone);
  63.314 +                setTimeZone(timezone);
  63.315 +            } else {
  63.316 +                throw pe;
  63.317 +            }
  63.318 +        }
  63.319 +    }
  63.320 +
  63.321 +	/**
  63.322 +	 * @param value
  63.323 +	 *            a string representation of a date-time
  63.324 +	 * @param pattern
  63.325 +	 *            a pattern to apply when parsing the date-time value
  63.326 +	 * @param timezone
  63.327 +	 *            the timezone for the date-time instance
  63.328 +	 * @throws ParseException
  63.329 +	 *             where the specified string is not a valid date-time
  63.330 +	 */
  63.331 +	public DateTime(String value, String pattern, TimeZone timezone)
  63.332 +			throws ParseException {
  63.333 +		// setting the time to 0 since we are going to reset it anyway
  63.334 +		super(0, Dates.PRECISION_SECOND, timezone != null ? timezone
  63.335 +				: java.util.TimeZone.getDefault());
  63.336 +		this.time = new Time(getTime(), getFormat().getTimeZone());
  63.337 +
  63.338 +		final DateFormat format = CalendarDateFormatFactory
  63.339 +				.getInstance(pattern);
  63.340 +		setTime(value, format, timezone);
  63.341 +	}
  63.342 +
  63.343 +	/**
  63.344 +	 * @param value
  63.345 +	 *            a string representation of a date-time
  63.346 +	 * @param pattern
  63.347 +	 *            a pattern to apply when parsing the date-time value
  63.348 +	 * @param utc
  63.349 +	 *            indicates whether the date-time is in UTC time
  63.350 +	 * @throws ParseException
  63.351 +	 *             where the specified string is not a valid date-time
  63.352 +	 */
  63.353 +	public DateTime(String value, String pattern, boolean utc)
  63.354 +			throws ParseException {
  63.355 +                // setting the time to 0 since we are going to reset it anyway
  63.356 +		this(0);
  63.357 +		final DateFormat format = CalendarDateFormatFactory
  63.358 +				.getInstance(pattern);
  63.359 +		if (utc) {
  63.360 +			setTime(value, format,
  63.361 +					((DateFormat) UTC_FORMAT.get()).getTimeZone());
  63.362 +		} else {
  63.363 +			setTime(value, format, null);
  63.364 +		}
  63.365 +		setUtc(utc);
  63.366 +	}
  63.367 +
  63.368 +	/**
  63.369 +	 * Internal set of time by parsing value string.
  63.370 +	 * 
  63.371 +	 * @param value
  63.372 +	 * @param format
  63.373 +	 *            a {@code DateFormat}, protected by the use of a ThreadLocal.
  63.374 +	 * @param tz
  63.375 +	 * @throws ParseException
  63.376 +	 */
  63.377 +	private void setTime(final String value, final DateFormat format,
  63.378 +			final java.util.TimeZone tz) throws ParseException {
  63.379 +
  63.380 +		if (tz != null) {
  63.381 +			format.setTimeZone(tz);
  63.382 +		}
  63.383 +		setTime(format.parse(value).getTime());
  63.384 +	}
  63.385 +
  63.386 +	/**
  63.387 +	 * {@inheritDoc}
  63.388 +	 */
  63.389 +	public final void setTime(final long time) {
  63.390 +		super.setTime(time);
  63.391 +		// need to check for null time due to Android java.util.Date(long)
  63.392 +		// constructor
  63.393 +		// calling this method..
  63.394 +		if (this.time != null) {
  63.395 +			this.time.setTime(time);
  63.396 +		}
  63.397 +	}
  63.398 +
  63.399 +	/**
  63.400 +	 * @return Returns the utc.
  63.401 +	 */
  63.402 +	public final boolean isUtc() {
  63.403 +		return time.isUtc();
  63.404 +	}
  63.405 +
  63.406 +	/**
  63.407 +	 * Updates this date-time to display in UTC time if the argument is true.
  63.408 +	 * Otherwise, resets to the default timezone.
  63.409 +	 * 
  63.410 +	 * @param utc
  63.411 +	 *            The utc to set.
  63.412 +	 */
  63.413 +	public final void setUtc(final boolean utc) {
  63.414 +		// reset the timezone associated with this instance..
  63.415 +		this.timezone = null;
  63.416 +		if (utc) {
  63.417 +			getFormat().setTimeZone(TimeZones.getUtcTimeZone());
  63.418 +		} else {
  63.419 +			resetTimeZone();
  63.420 +		}
  63.421 +		time = new Time(time, getFormat().getTimeZone(), utc);
  63.422 +	}
  63.423 +
  63.424 +	/**
  63.425 +	 * Sets the timezone associated with this date-time instance. If the
  63.426 +	 * specified timezone is null, it will reset to the default timezone. If the
  63.427 +	 * date-time instance is utc, it will turn into either a floating (no
  63.428 +	 * timezone) date-time, or a date-time with a timezone.
  63.429 +	 * 
  63.430 +	 * @param timezone
  63.431 +	 *            a timezone to apply to the instance
  63.432 +	 */
  63.433 +	public final void setTimeZone(final TimeZone timezone) {
  63.434 +		this.timezone = timezone;
  63.435 +		if (timezone != null) {
  63.436 +			getFormat().setTimeZone(timezone);
  63.437 +		} else {
  63.438 +			resetTimeZone();
  63.439 +		}
  63.440 +		time = new Time(time, getFormat().getTimeZone(), false);
  63.441 +	}
  63.442 +
  63.443 +	/**
  63.444 +	 * Reset the timezone to default.
  63.445 +	 */
  63.446 +	private void resetTimeZone() {
  63.447 +		// use GMT timezone to avoid daylight savings rules affecting floating
  63.448 +		// time values..
  63.449 +		getFormat().setTimeZone(TimeZone.getDefault());
  63.450 +		// getFormat().setTimeZone(TimeZone.getTimeZone(TimeZones.GMT_ID));
  63.451 +	}
  63.452 +
  63.453 +	/**
  63.454 +	 * Returns the current timezone associated with this date-time value.
  63.455 +	 * 
  63.456 +	 * @return a Java timezone
  63.457 +	 */
  63.458 +	public final TimeZone getTimeZone() {
  63.459 +		return timezone;
  63.460 +	}
  63.461 +
  63.462 +	/**
  63.463 +	 * {@inheritDoc}
  63.464 +	 */
  63.465 +	public final String toString() {
  63.466 +		final StringBuffer b = new StringBuffer(super.toString());
  63.467 +		b.append('T');
  63.468 +		b.append(time.toString());
  63.469 +		return b.toString();
  63.470 +	}
  63.471 +
  63.472 +	/**
  63.473 +	 * {@inheritDoc}
  63.474 +	 */
  63.475 +	public boolean equals(final Object arg0) {
  63.476 +		// TODO: what about compareTo, before, after, etc.?
  63.477 +
  63.478 +		if (arg0 instanceof DateTime) {
  63.479 +			return new EqualsBuilder().append(time, ((DateTime) arg0).time)
  63.480 +					.isEquals();
  63.481 +		}
  63.482 +		return super.equals(arg0);
  63.483 +	}
  63.484 +
  63.485 +	/**
  63.486 +	 * {@inheritDoc}
  63.487 +	 */
  63.488 +	public int hashCode() {
  63.489 +		return super.hashCode();
  63.490 +	}
  63.491 +
  63.492 +	private static class DateFormatCache {
  63.493 +
  63.494 +		private final Map threadMap = new WeakHashMap();
  63.495 +
  63.496 +		private final DateFormat templateFormat;
  63.497 +
  63.498 +		private DateFormatCache(DateFormat dateFormat) {
  63.499 +			this.templateFormat = dateFormat;
  63.500 +		}
  63.501 +
  63.502 +		public DateFormat get() {
  63.503 +			DateFormat dateFormat = (DateFormat) threadMap.get(Thread
  63.504 +					.currentThread());
  63.505 +			if (dateFormat == null) {
  63.506 +				dateFormat = (DateFormat) templateFormat.clone();
  63.507 +				threadMap.put(Thread.currentThread(), dateFormat);
  63.508 +			}
  63.509 +			return dateFormat;
  63.510 +		}
  63.511 +	}
  63.512 +}
    64.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    64.2 +++ b/src/net/fortuna/ical4j/model/DefaultTimeZoneRegistryFactory.java	Tue Feb 10 18:12:00 2015 +0100
    64.3 @@ -0,0 +1,50 @@
    64.4 +/**
    64.5 + * Copyright (c) 2012, Ben Fortuna
    64.6 + * All rights reserved.
    64.7 + *
    64.8 + * Redistribution and use in source and binary forms, with or without
    64.9 + * modification, are permitted provided that the following conditions
   64.10 + * are met:
   64.11 + *
   64.12 + *  o Redistributions of source code must retain the above copyright
   64.13 + * notice, this list of conditions and the following disclaimer.
   64.14 + *
   64.15 + *  o Redistributions in binary form must reproduce the above copyright
   64.16 + * notice, this list of conditions and the following disclaimer in the
   64.17 + * documentation and/or other materials provided with the distribution.
   64.18 + *
   64.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
   64.20 + * may be used to endorse or promote products derived from this software
   64.21 + * without specific prior written permission.
   64.22 + *
   64.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   64.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   64.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   64.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
   64.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   64.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   64.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   64.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   64.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   64.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   64.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   64.34 + */
   64.35 +package net.fortuna.ical4j.model;
   64.36 +
   64.37 +/**
   64.38 + * $Id$
   64.39 + *
   64.40 + * Created on 18/09/2005
   64.41 + *
   64.42 + * Default factory implementation for timezone registries.
   64.43 + * @author Ben Fortuna
   64.44 + */
   64.45 +public class DefaultTimeZoneRegistryFactory extends TimeZoneRegistryFactory {
   64.46 +
   64.47 +    /**
   64.48 +     * {@inheritDoc}
   64.49 +     */
   64.50 +    public TimeZoneRegistry createRegistry() {
   64.51 +        return new TimeZoneRegistryImpl();
   64.52 +    }
   64.53 +}
    65.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    65.2 +++ b/src/net/fortuna/ical4j/model/Dur.java	Tue Feb 10 18:12:00 2015 +0100
    65.3 @@ -0,0 +1,528 @@
    65.4 +/**
    65.5 + * Copyright (c) 2012, Ben Fortuna
    65.6 + * All rights reserved.
    65.7 + *
    65.8 + * Redistribution and use in source and binary forms, with or without
    65.9 + * modification, are permitted provided that the following conditions
   65.10 + * are met:
   65.11 + *
   65.12 + *  o Redistributions of source code must retain the above copyright
   65.13 + * notice, this list of conditions and the following disclaimer.
   65.14 + *
   65.15 + *  o Redistributions in binary form must reproduce the above copyright
   65.16 + * notice, this list of conditions and the following disclaimer in the
   65.17 + * documentation and/or other materials provided with the distribution.
   65.18 + *
   65.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
   65.20 + * may be used to endorse or promote products derived from this software
   65.21 + * without specific prior written permission.
   65.22 + *
   65.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   65.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   65.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   65.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
   65.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   65.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   65.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   65.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   65.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   65.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   65.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   65.34 + */
   65.35 +package net.fortuna.ical4j.model;
   65.36 +
   65.37 +import java.io.IOException;
   65.38 +import java.io.Serializable;
   65.39 +import java.util.Calendar;
   65.40 +import java.util.Date;
   65.41 +import java.util.StringTokenizer;
   65.42 +import net.fortuna.ical4j.util.Dates;
   65.43 +
   65.44 +import org.apache.commons.lang.builder.HashCodeBuilder;
   65.45 +
   65.46 +/**
   65.47 + * $Id$
   65.48 + *
   65.49 + * Created on 20/06/2005
   65.50 + *
   65.51 + * Represents a duration of time in iCalendar. Note that according to RFC2445 durations represented in weeks are
   65.52 + * mutually exclusive of other duration fields.
   65.53 + * 
   65.54 + * <pre>
   65.55 + *  4.3.6   Duration
   65.56 + *  
   65.57 + *     Value Name: DURATION
   65.58 + *  
   65.59 + *     Purpose: This value type is used to identify properties that contain
   65.60 + *     a duration of time.
   65.61 + *  
   65.62 + *     Formal Definition: The value type is defined by the following
   65.63 + *     notation:
   65.64 + *  
   65.65 + *       dur-value  = ([&quot;+&quot;] / &quot;-&quot;) &quot;P&quot; (dur-date / dur-time / dur-week)
   65.66 + *  
   65.67 + *       dur-date   = dur-day [dur-time]
   65.68 + *       dur-time   = &quot;T&quot; (dur-hour / dur-minute / dur-second)
   65.69 + *       dur-week   = 1*DIGIT &quot;W&quot;
   65.70 + *       dur-hour   = 1*DIGIT &quot;H&quot; [dur-minute]
   65.71 + *       dur-minute = 1*DIGIT &quot;M&quot; [dur-second]
   65.72 + *       dur-second = 1*DIGIT &quot;S&quot;
   65.73 + *       dur-day    = 1*DIGIT &quot;D&quot;
   65.74 + * </pre>
   65.75 + * 
   65.76 + * @author Ben Fortuna
   65.77 + */
   65.78 +public class Dur implements Comparable, Serializable {
   65.79 +
   65.80 +    private static final long serialVersionUID = 5013232281547134583L;
   65.81 +
   65.82 +    private static final int DAYS_PER_WEEK = 7;
   65.83 +
   65.84 +    private static final int SECONDS_PER_MINUTE = 60;
   65.85 +
   65.86 +    private static final int MINUTES_PER_HOUR = 60;
   65.87 +
   65.88 +    private static final int HOURS_PER_DAY = 24;
   65.89 +
   65.90 +    private static final int DAYS_PER_YEAR = 365;
   65.91 +
   65.92 +    private boolean negative;
   65.93 +
   65.94 +    private int weeks;
   65.95 +
   65.96 +    private int days;
   65.97 +
   65.98 +    private int hours;
   65.99 +
  65.100 +    private int minutes;
  65.101 +
  65.102 +    private int seconds;
  65.103 +
  65.104 +    /**
  65.105 +     * Constructs a new duration instance from a string representation.
  65.106 +     * @param value a string representation of a duration
  65.107 +     */
  65.108 +    public Dur(final String value) {
  65.109 +        negative = false;
  65.110 +        weeks = 0;
  65.111 +        days = 0;
  65.112 +        hours = 0;
  65.113 +        minutes = 0;
  65.114 +        seconds = 0;
  65.115 +
  65.116 +        String token = null;
  65.117 +        String prevToken = null;
  65.118 +
  65.119 +        final StringTokenizer t = new StringTokenizer(value, "+-PWDTHMS", true);
  65.120 +        while (t.hasMoreTokens()) {
  65.121 +            prevToken = token;
  65.122 +            token = t.nextToken();
  65.123 +
  65.124 +            if ("+".equals(token)) {
  65.125 +                negative = false;
  65.126 +            }
  65.127 +            else if ("-".equals(token)) {
  65.128 +                negative = true;
  65.129 +            }
  65.130 +            else if ("P".equals(token)) {
  65.131 +                // does nothing..
  65.132 +            }
  65.133 +            else if ("W".equals(token)) {
  65.134 +                weeks = Integer.parseInt(prevToken);
  65.135 +            }
  65.136 +            else if ("D".equals(token)) {
  65.137 +                days = Integer.parseInt(prevToken);
  65.138 +            }
  65.139 +            else if ("T".equals(token)) {
  65.140 +                // does nothing..
  65.141 +            }
  65.142 +            else if ("H".equals(token)) {
  65.143 +                hours = Integer.parseInt(prevToken);
  65.144 +            }
  65.145 +            else if ("M".equals(token)) {
  65.146 +                minutes = Integer.parseInt(prevToken);
  65.147 +            }
  65.148 +            else if ("S".equals(token)) {
  65.149 +                seconds = Integer.parseInt(prevToken);
  65.150 +            }
  65.151 +        }
  65.152 +    }
  65.153 +
  65.154 +    /**
  65.155 +     * Constructs a new duration from the specified weeks.
  65.156 +     * @param weeks a duration in weeks.
  65.157 +     */
  65.158 +    public Dur(final int weeks) {
  65.159 +        this.weeks = Math.abs(weeks);
  65.160 +        this.days = 0;
  65.161 +        this.hours = 0;
  65.162 +        this.minutes = 0;
  65.163 +        this.seconds = 0;
  65.164 +        this.negative = weeks < 0;
  65.165 +    }
  65.166 +
  65.167 +    /**
  65.168 +     * Constructs a new duration from the specified arguments.
  65.169 +     * @param days duration in days
  65.170 +     * @param hours duration in hours
  65.171 +     * @param minutes duration in minutes
  65.172 +     * @param seconds duration in seconds
  65.173 +     */
  65.174 +    public Dur(final int days, final int hours, final int minutes,
  65.175 +            final int seconds) {
  65.176 +
  65.177 +        if (!(days >= 0 && hours >= 0 && minutes >= 0 && seconds >= 0)
  65.178 +                && !(days <= 0 && hours <= 0 && minutes <= 0 && seconds <= 0)) {
  65.179 +            
  65.180 +            throw new IllegalArgumentException("Invalid duration representation");
  65.181 +        }
  65.182 +        
  65.183 +        this.weeks = 0;
  65.184 +        this.days = Math.abs(days);
  65.185 +        this.hours = Math.abs(hours);
  65.186 +        this.minutes = Math.abs(minutes);
  65.187 +        this.seconds = Math.abs(seconds);
  65.188 +        
  65.189 +        this.negative = days < 0 || hours < 0 || minutes < 0 || seconds < 0;
  65.190 +    }
  65.191 +
  65.192 +    /**
  65.193 +     * Constructs a new duration representing the time between the two specified dates. The end date may precede the
  65.194 +     * start date in order to represent a negative duration.
  65.195 +     * @param date1 the first date of the duration
  65.196 +     * @param date2 the second date of the duration
  65.197 +     */
  65.198 +    public Dur(final Date date1, final Date date2) {
  65.199 +        
  65.200 +        Date start = null;
  65.201 +        Date end = null;
  65.202 +        
  65.203 +        // Negative range? (start occurs after end)
  65.204 +        negative = date1.compareTo(date2) > 0;
  65.205 +        if (negative) {
  65.206 +            // Swap the dates (which eliminates the need to bother with
  65.207 +            // negative after this!)
  65.208 +            start = date2;
  65.209 +            end = date1;
  65.210 +        }
  65.211 +        else {
  65.212 +            start = date1;
  65.213 +            end = date2;
  65.214 +        }
  65.215 +
  65.216 +        final Calendar startCal;
  65.217 +        if (start instanceof net.fortuna.ical4j.model.Date) {
  65.218 +            startCal = Dates.getCalendarInstance((net.fortuna.ical4j.model.Date)start);
  65.219 +        } else {
  65.220 +            startCal = Calendar.getInstance();
  65.221 +        }
  65.222 +        startCal.setTime(start);
  65.223 +        final Calendar endCal = Calendar.getInstance(startCal.getTimeZone());
  65.224 +        endCal.setTime(end);
  65.225 +
  65.226 +        // Init our duration interval (which is in units that evolve as we
  65.227 +        // compute, below)
  65.228 +        int dur = 0;
  65.229 +
  65.230 +        // Count days to get to the right year (loop in the very rare chance
  65.231 +        // that a leap year causes us to come up short)
  65.232 +        int nYears = endCal.get(Calendar.YEAR) - startCal.get(Calendar.YEAR);
  65.233 +        while (nYears > 0) {
  65.234 +            startCal.add(Calendar.DATE, DAYS_PER_YEAR * nYears);
  65.235 +            dur += DAYS_PER_YEAR * nYears;
  65.236 +            nYears = endCal.get(Calendar.YEAR) - startCal.get(Calendar.YEAR);
  65.237 +        }
  65.238 +
  65.239 +        // Count days to get to the right day
  65.240 +        dur += endCal.get(Calendar.DAY_OF_YEAR)
  65.241 +                - startCal.get(Calendar.DAY_OF_YEAR);
  65.242 +
  65.243 +        // Count hours to get to right hour
  65.244 +        dur *= HOURS_PER_DAY; // days -> hours
  65.245 +        dur += endCal.get(Calendar.HOUR_OF_DAY)
  65.246 +                - startCal.get(Calendar.HOUR_OF_DAY);
  65.247 +
  65.248 +        // ... to the right minute
  65.249 +        dur *= MINUTES_PER_HOUR; // hours -> minutes
  65.250 +        dur += endCal.get(Calendar.MINUTE) - startCal.get(Calendar.MINUTE);
  65.251 +
  65.252 +        // ... and second
  65.253 +        dur *= SECONDS_PER_MINUTE; // minutes -> seconds
  65.254 +        dur += endCal.get(Calendar.SECOND) - startCal.get(Calendar.SECOND);
  65.255 +
  65.256 +        // Now unwind our units
  65.257 +        seconds = dur % SECONDS_PER_MINUTE;
  65.258 +        dur = dur / SECONDS_PER_MINUTE; // seconds -> minutes (drop remainder seconds)
  65.259 +        minutes = dur % MINUTES_PER_HOUR;
  65.260 +        dur /= MINUTES_PER_HOUR; // minutes -> hours (drop remainder minutes)
  65.261 +        hours = dur % HOURS_PER_DAY;
  65.262 +        dur /= HOURS_PER_DAY; // hours -> days (drop remainder hours)
  65.263 +        days = dur;
  65.264 +        weeks = 0;
  65.265 +
  65.266 +        // Special case for week-only representation
  65.267 +        if (seconds == 0 && minutes == 0 && hours == 0
  65.268 +                && (days % DAYS_PER_WEEK) == 0) {
  65.269 +            weeks = days / DAYS_PER_WEEK;
  65.270 +            days = 0;
  65.271 +        }
  65.272 +    }
  65.273 +
  65.274 +    /**
  65.275 +     * Returns a date representing the end of this duration from the specified start date.
  65.276 +     * @param start the date to start the duration
  65.277 +     * @return the end of the duration as a date
  65.278 +     */
  65.279 +    public final Date getTime(final Date start) {
  65.280 +        final Calendar cal;
  65.281 +        if (start instanceof net.fortuna.ical4j.model.Date) {
  65.282 +            cal = Dates.getCalendarInstance((net.fortuna.ical4j.model.Date)start);
  65.283 +        } else {
  65.284 +            cal = Calendar.getInstance();
  65.285 +        }
  65.286 +
  65.287 +        cal.setTime(start);
  65.288 +        if (isNegative()) {
  65.289 +            cal.add(Calendar.WEEK_OF_YEAR, -weeks);
  65.290 +            cal.add(Calendar.DAY_OF_WEEK, -days);
  65.291 +            cal.add(Calendar.HOUR_OF_DAY, -hours);
  65.292 +            cal.add(Calendar.MINUTE, -minutes);
  65.293 +            cal.add(Calendar.SECOND, -seconds);
  65.294 +        }
  65.295 +        else {
  65.296 +            cal.add(Calendar.WEEK_OF_YEAR, weeks);
  65.297 +            cal.add(Calendar.DAY_OF_WEEK, days);
  65.298 +            cal.add(Calendar.HOUR_OF_DAY, hours);
  65.299 +            cal.add(Calendar.MINUTE, minutes);
  65.300 +            cal.add(Calendar.SECOND, seconds);
  65.301 +        }
  65.302 +        return cal.getTime();
  65.303 +    }
  65.304 +
  65.305 +    /**
  65.306 +     * Provides a negation of this instance.
  65.307 +     * @return a Dur instance that represents a negation of this instance
  65.308 +     */
  65.309 +    public final Dur negate() {
  65.310 +        final Dur negated = new Dur(days, hours, minutes, seconds);
  65.311 +        negated.weeks = weeks;
  65.312 +        negated.negative = !negative;
  65.313 +        return negated;
  65.314 +    }
  65.315 +    
  65.316 +    /**
  65.317 +     * Add two durations. Durations may only be added if they are both positive
  65.318 +     * or both negative durations.
  65.319 +     * @param duration the duration to add to this duration
  65.320 +     * @return a new instance representing the sum of the two durations.
  65.321 +     */
  65.322 +    public final Dur add(final Dur duration) {
  65.323 +        if ((!isNegative() && duration.isNegative())
  65.324 +                || (isNegative() && !duration.isNegative())) {
  65.325 +            
  65.326 +            throw new IllegalArgumentException(
  65.327 +                    "Cannot add a negative and a positive duration");
  65.328 +        }
  65.329 +        
  65.330 +        Dur sum = null;
  65.331 +        if (weeks > 0 && duration.weeks > 0) {
  65.332 +            sum = new Dur(weeks + duration.weeks);
  65.333 +        }
  65.334 +        else {
  65.335 +            int daySum = (weeks > 0) ? weeks * DAYS_PER_WEEK + days : days;
  65.336 +            int hourSum = hours;
  65.337 +            int minuteSum = minutes;
  65.338 +            int secondSum = seconds;
  65.339 +            
  65.340 +            if ((secondSum + duration.seconds) / SECONDS_PER_MINUTE > 0) {
  65.341 +                minuteSum += (secondSum + duration.seconds) / SECONDS_PER_MINUTE;
  65.342 +                secondSum = (secondSum + duration.seconds) % SECONDS_PER_MINUTE;
  65.343 +            }
  65.344 +            else {
  65.345 +                secondSum += duration.seconds;
  65.346 +            }
  65.347 +            
  65.348 +            if ((minuteSum + duration.minutes) / MINUTES_PER_HOUR > 0) {
  65.349 +                hourSum += (minuteSum + duration.minutes) / MINUTES_PER_HOUR;
  65.350 +                minuteSum = (minuteSum + duration.minutes) % MINUTES_PER_HOUR;
  65.351 +            }
  65.352 +            else {
  65.353 +                minuteSum += duration.minutes;
  65.354 +            }
  65.355 +            
  65.356 +            if ((hourSum + duration.hours) / HOURS_PER_DAY > 0) {
  65.357 +                daySum += (hourSum + duration.hours) / HOURS_PER_DAY;
  65.358 +                hourSum = (hourSum + duration.hours) % HOURS_PER_DAY;
  65.359 +            }
  65.360 +            else {
  65.361 +                hourSum += duration.hours;
  65.362 +            }
  65.363 +            
  65.364 +            daySum += (duration.weeks > 0) ? duration.weeks * DAYS_PER_WEEK
  65.365 +                    + duration.days : duration.days;
  65.366 +            
  65.367 +            sum = new Dur(daySum, hourSum, minuteSum, secondSum);
  65.368 +        }
  65.369 +        sum.negative = negative;
  65.370 +        return sum;
  65.371 +    }
  65.372 +    
  65.373 +    /**
  65.374 +     * {@inheritDoc}
  65.375 +     */
  65.376 +    public final String toString() {
  65.377 +        final StringBuffer b = new StringBuffer();
  65.378 +        if (negative) {
  65.379 +            b.append('-');
  65.380 +        }
  65.381 +        b.append('P');
  65.382 +        if (weeks > 0) {
  65.383 +            b.append(weeks);
  65.384 +            b.append('W');
  65.385 +        }
  65.386 +        else {
  65.387 +            if (days > 0) {
  65.388 +                b.append(days);
  65.389 +                b.append('D');
  65.390 +            }
  65.391 +            if (hours > 0 || minutes > 0 || seconds > 0) {
  65.392 +                b.append('T');
  65.393 +                if (hours > 0) {
  65.394 +                    b.append(hours);
  65.395 +                    b.append('H');
  65.396 +                }
  65.397 +                if (minutes > 0) {
  65.398 +                    b.append(minutes);
  65.399 +                    b.append('M');
  65.400 +                }
  65.401 +                if (seconds > 0) {
  65.402 +                    b.append(seconds);
  65.403 +                    b.append('S');
  65.404 +                }
  65.405 +            }
  65.406 +            // handle case of zero length duration
  65.407 +            if ((hours + minutes + seconds + days + weeks) == 0) {
  65.408 +                b.append("T0S");
  65.409 +            }
  65.410 +        }
  65.411 +        return b.toString();
  65.412 +    }
  65.413 +
  65.414 +    /**
  65.415 +     * {@inheritDoc}
  65.416 +     */
  65.417 +    public final int compareTo(final Object arg0) {
  65.418 +        return compareTo((Dur) arg0);
  65.419 +    }
  65.420 +
  65.421 +    /**
  65.422 +     * Compares this duration with another, acording to their length.
  65.423 +     * @param arg0 another duration instance
  65.424 +     * @return a postive value if this duration is longer, zero if the duration
  65.425 +     * lengths are equal, otherwise a negative value
  65.426 +     */
  65.427 +    public final int compareTo(final Dur arg0) {
  65.428 +        int result;
  65.429 +        if (isNegative() != arg0.isNegative()) {
  65.430 +            // return Boolean.valueOf(isNegative()).compareTo(Boolean.valueOf(arg0.isNegative()));
  65.431 +            // for pre-java 1.5 compatibility..
  65.432 +            if (isNegative()) {
  65.433 +                return Integer.MIN_VALUE;
  65.434 +            }
  65.435 +            else {
  65.436 +                return Integer.MAX_VALUE;
  65.437 +            }
  65.438 +        }
  65.439 +        else if (getWeeks() != arg0.getWeeks()) {
  65.440 +            result = getWeeks() - arg0.getWeeks();
  65.441 +        }
  65.442 +        else if (getDays() != arg0.getDays()) {
  65.443 +            result = getDays() - arg0.getDays();
  65.444 +        }
  65.445 +        else if (getHours() != arg0.getHours()) {
  65.446 +            result = getHours() - arg0.getHours();
  65.447 +        }
  65.448 +        else if (getMinutes() != arg0.getMinutes()) {
  65.449 +            result = getMinutes() - arg0.getMinutes();
  65.450 +        }
  65.451 +        else {
  65.452 +            result = getSeconds() - arg0.getSeconds();
  65.453 +        }
  65.454 +        // invert sense of all tests if both durations are negative
  65.455 +        if (isNegative()) {
  65.456 +            return -result;
  65.457 +        }
  65.458 +        else {
  65.459 +            return result;
  65.460 +        }
  65.461 +    }
  65.462 +
  65.463 +    /**
  65.464 +     * {@inheritDoc}
  65.465 +     */
  65.466 +    public boolean equals(final Object obj) {
  65.467 +        if (obj instanceof Dur) {
  65.468 +            return ((Dur) obj).compareTo(this) == 0;
  65.469 +        }
  65.470 +        return super.equals(obj);
  65.471 +    }
  65.472 +    
  65.473 +    /**
  65.474 +     * {@inheritDoc}
  65.475 +     */
  65.476 +    public int hashCode() {
  65.477 +        return new HashCodeBuilder().append(weeks).append(days).append(
  65.478 +                hours).append(minutes).append(seconds).append(negative).toHashCode();
  65.479 +    }
  65.480 +    
  65.481 +    /**
  65.482 +     * @return Returns the days.
  65.483 +     */
  65.484 +    public final int getDays() {
  65.485 +        return days;
  65.486 +    }
  65.487 +
  65.488 +    /**
  65.489 +     * @return Returns the hours.
  65.490 +     */
  65.491 +    public final int getHours() {
  65.492 +        return hours;
  65.493 +    }
  65.494 +
  65.495 +    /**
  65.496 +     * @return Returns the minutes.
  65.497 +     */
  65.498 +    public final int getMinutes() {
  65.499 +        return minutes;
  65.500 +    }
  65.501 +
  65.502 +    /**
  65.503 +     * @return Returns the negative.
  65.504 +     */
  65.505 +    public final boolean isNegative() {
  65.506 +        return negative;
  65.507 +    }
  65.508 +
  65.509 +    /**
  65.510 +     * @return Returns the seconds.
  65.511 +     */
  65.512 +    public final int getSeconds() {
  65.513 +        return seconds;
  65.514 +    }
  65.515 +
  65.516 +    /**
  65.517 +     * @return Returns the weeks.
  65.518 +     */
  65.519 +    public final int getWeeks() {
  65.520 +        return weeks;
  65.521 +    }
  65.522 +
  65.523 +    /**
  65.524 +     * @param stream
  65.525 +     * @throws IOException
  65.526 +     * @throws ClassNotFoundException
  65.527 +     */
  65.528 +    private void readObject(final java.io.ObjectInputStream stream) throws IOException, ClassNotFoundException {
  65.529 +        stream.defaultReadObject();
  65.530 +    }
  65.531 +}
    66.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    66.2 +++ b/src/net/fortuna/ical4j/model/Escapable.java	Tue Feb 10 18:12:00 2015 +0100
    66.3 @@ -0,0 +1,45 @@
    66.4 +/**
    66.5 + * Copyright (c) 2012, Ben Fortuna
    66.6 + * All rights reserved.
    66.7 + *
    66.8 + * Redistribution and use in source and binary forms, with or without
    66.9 + * modification, are permitted provided that the following conditions
   66.10 + * are met:
   66.11 + *
   66.12 + *  o Redistributions of source code must retain the above copyright
   66.13 + * notice, this list of conditions and the following disclaimer.
   66.14 + *
   66.15 + *  o Redistributions in binary form must reproduce the above copyright
   66.16 + * notice, this list of conditions and the following disclaimer in the
   66.17 + * documentation and/or other materials provided with the distribution.
   66.18 + *
   66.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
   66.20 + * may be used to endorse or promote products derived from this software
   66.21 + * without specific prior written permission.
   66.22 + *
   66.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   66.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   66.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   66.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
   66.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   66.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   66.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   66.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   66.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   66.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   66.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   66.34 + */
   66.35 +package net.fortuna.ical4j.model;
   66.36 +
   66.37 +/**
   66.38 + * $Id$
   66.39 + *
   66.40 + * Created on 26/06/2005
   66.41 + *
   66.42 + * Implementors by definition require their string value to be converted to/from an escaped form when converting to/from
   66.43 + * and iCalendar representation.
   66.44 + * @author Ben Fortuna
   66.45 + */
   66.46 +public interface Escapable {
   66.47 +
   66.48 +}
    67.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    67.2 +++ b/src/net/fortuna/ical4j/model/IndexedComponentList.java	Tue Feb 10 18:12:00 2015 +0100
    67.3 @@ -0,0 +1,105 @@
    67.4 +/**
    67.5 + * Copyright (c) 2012, Ben Fortuna
    67.6 + * All rights reserved.
    67.7 + *
    67.8 + * Redistribution and use in source and binary forms, with or without
    67.9 + * modification, are permitted provided that the following conditions
   67.10 + * are met:
   67.11 + *
   67.12 + *  o Redistributions of source code must retain the above copyright
   67.13 + * notice, this list of conditions and the following disclaimer.
   67.14 + *
   67.15 + *  o Redistributions in binary form must reproduce the above copyright
   67.16 + * notice, this list of conditions and the following disclaimer in the
   67.17 + * documentation and/or other materials provided with the distribution.
   67.18 + *
   67.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
   67.20 + * may be used to endorse or promote products derived from this software
   67.21 + * without specific prior written permission.
   67.22 + *
   67.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   67.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   67.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   67.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
   67.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   67.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   67.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   67.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   67.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   67.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   67.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   67.34 + */
   67.35 +package net.fortuna.ical4j.model;
   67.36 +
   67.37 +import java.util.Collections;
   67.38 +import java.util.HashMap;
   67.39 +import java.util.Iterator;
   67.40 +import java.util.Map;
   67.41 +
   67.42 +/**
   67.43 + * $Id$
   67.44 + *
   67.45 + * Created on 4/02/2006
   67.46 + *
   67.47 + * Provides indexing of components on a specific property.
   67.48 + * @author Ben Fortuna
   67.49 + */
   67.50 +public class IndexedComponentList {
   67.51 +
   67.52 +    private static final ComponentList EMPTY_LIST = new ComponentList();
   67.53 +    
   67.54 +    private Map index;
   67.55 +    
   67.56 +    /**
   67.57 +     * Creates a new instance indexed on properties with the specified name.
   67.58 +     * @param list a list of components
   67.59 +     * @param propertyName the name of the properties to index on
   67.60 +     */
   67.61 +    public IndexedComponentList(final ComponentList list, final String propertyName) {
   67.62 +        final Map indexedComponents = new HashMap();
   67.63 +        for (final Iterator i = list.iterator(); i.hasNext();) {
   67.64 +            final Component component = (Component) i.next();
   67.65 +            for (final Iterator j = component.getProperties(propertyName).iterator(); j.hasNext();) {
   67.66 +                final Property property = (Property) j.next();
   67.67 +                ComponentList components = (ComponentList) indexedComponents.get(property.getValue());
   67.68 +                if (components == null) {
   67.69 +                    components = new ComponentList();
   67.70 +                    indexedComponents.put(property.getValue(), components);
   67.71 +                }
   67.72 +                components.add(component);
   67.73 +            }
   67.74 +        }
   67.75 +        this.index = Collections.unmodifiableMap(indexedComponents);
   67.76 +    }
   67.77 +    
   67.78 +    /**
   67.79 +     * Returns a list of components containing a property with the
   67.80 +     * specified value.
   67.81 +     * @param propertyValue the value of the property contained in the
   67.82 +     * returned components
   67.83 +     * @return a component list
   67.84 +     */
   67.85 +    public ComponentList getComponents(final String propertyValue) {
   67.86 +        ComponentList components = (ComponentList) index.get(propertyValue);
   67.87 +        if (components == null) {
   67.88 +            components = EMPTY_LIST;
   67.89 +        }
   67.90 +        return components;
   67.91 +    }
   67.92 +    
   67.93 +    /**
   67.94 +     * Returns the first component containing a property with the specified
   67.95 +     * value.
   67.96 +     * @param propertyValue the value of the property identified in the returned
   67.97 +     * component
   67.98 +     * @return a component or null if no component is found containing a property
   67.99 +     * with the specified value
  67.100 +     */
  67.101 +    public Component getComponent(final String propertyValue) {
  67.102 +        final ComponentList components = getComponents(propertyValue);
  67.103 +        if (!components.isEmpty()) {
  67.104 +            return (Component) components.iterator().next();
  67.105 +        }
  67.106 +        return null;
  67.107 +    }
  67.108 +}
    68.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    68.2 +++ b/src/net/fortuna/ical4j/model/IndexedPropertyList.java	Tue Feb 10 18:12:00 2015 +0100
    68.3 @@ -0,0 +1,105 @@
    68.4 +/**
    68.5 + * Copyright (c) 2012, Ben Fortuna
    68.6 + * All rights reserved.
    68.7 + *
    68.8 + * Redistribution and use in source and binary forms, with or without
    68.9 + * modification, are permitted provided that the following conditions
   68.10 + * are met:
   68.11 + *
   68.12 + *  o Redistributions of source code must retain the above copyright
   68.13 + * notice, this list of conditions and the following disclaimer.
   68.14 + *
   68.15 + *  o Redistributions in binary form must reproduce the above copyright
   68.16 + * notice, this list of conditions and the following disclaimer in the
   68.17 + * documentation and/or other materials provided with the distribution.
   68.18 + *
   68.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
   68.20 + * may be used to endorse or promote products derived from this software
   68.21 + * without specific prior written permission.
   68.22 + *
   68.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   68.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   68.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   68.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
   68.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   68.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   68.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   68.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   68.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   68.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   68.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   68.34 + */
   68.35 +package net.fortuna.ical4j.model;
   68.36 +
   68.37 +import java.util.Collections;
   68.38 +import java.util.HashMap;
   68.39 +import java.util.Iterator;
   68.40 +import java.util.Map;
   68.41 +
   68.42 +/**
   68.43 + * $Id$
   68.44 + *
   68.45 + * Created on 4/02/2006
   68.46 + *
   68.47 + * Provides indexing of properties on a specific parameter.
   68.48 + * @author Ben Fortuna
   68.49 + */
   68.50 +public class IndexedPropertyList {
   68.51 +
   68.52 +    private static final PropertyList EMPTY_LIST = new PropertyList();
   68.53 +    
   68.54 +    private Map index;
   68.55 +    
   68.56 +    /**
   68.57 +     * Creates a new instance indexed on the parameters with the specified name.
   68.58 +     * @param list a list of properties
   68.59 +     * @param parameterName the name of parameters on which to index
   68.60 +     */
   68.61 +    public IndexedPropertyList(final PropertyList list, final String parameterName) {
   68.62 +        final Map indexedProperties = new HashMap();
   68.63 +        for (final Iterator i = list.iterator(); i.hasNext();) {
   68.64 +            final Property property = (Property) i.next();
   68.65 +            for (final Iterator j = property.getParameters(parameterName).iterator(); j.hasNext();) {
   68.66 +                final Parameter parameter = (Parameter) j.next();
   68.67 +                PropertyList properties = (PropertyList) indexedProperties.get(parameter.getValue());
   68.68 +                if (properties == null) {
   68.69 +                    properties = new PropertyList();
   68.70 +                    indexedProperties.put(parameter.getValue(), properties);
   68.71 +                }
   68.72 +                properties.add(property);
   68.73 +            }
   68.74 +        }
   68.75 +        this.index = Collections.unmodifiableMap(indexedProperties);
   68.76 +    }
   68.77 +    
   68.78 +    /**
   68.79 +     * Returns a list of properties containing a parameter with the
   68.80 +     * specified value.
   68.81 +     * @param paramValue the value of the parameter contained in the
   68.82 +     * returned properties
   68.83 +     * @return a property list
   68.84 +     */
   68.85 +    public PropertyList getProperties(final String paramValue) {
   68.86 +        PropertyList properties = (PropertyList) index.get(paramValue);
   68.87 +        if (properties == null) {
   68.88 +            properties = EMPTY_LIST;
   68.89 +        }
   68.90 +        return properties;
   68.91 +    }
   68.92 +    
   68.93 +    /**
   68.94 +     * Returns the first property containing a parameter with the specified
   68.95 +     * value.
   68.96 +     * @param paramValue the value of the parameter identified in the returned
   68.97 +     * property
   68.98 +     * @return a property or null if no property is found containing a parameter
   68.99 +     * with the specified value
  68.100 +     */
  68.101 +    public Property getProperty(final String paramValue) {
  68.102 +        final PropertyList properties = getProperties(paramValue);
  68.103 +        if (!properties.isEmpty()) {
  68.104 +            return (Property) properties.iterator().next();
  68.105 +        }
  68.106 +        return null;
  68.107 +    }
  68.108 +}
    69.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    69.2 +++ b/src/net/fortuna/ical4j/model/Iso8601.java	Tue Feb 10 18:12:00 2015 +0100
    69.3 @@ -0,0 +1,155 @@
    69.4 +/**
    69.5 + * Copyright (c) 2012, Ben Fortuna
    69.6 + * All rights reserved.
    69.7 + *
    69.8 + * Redistribution and use in source and binary forms, with or without
    69.9 + * modification, are permitted provided that the following conditions
   69.10 + * are met:
   69.11 + *
   69.12 + *  o Redistributions of source code must retain the above copyright
   69.13 + * notice, this list of conditions and the following disclaimer.
   69.14 + *
   69.15 + *  o Redistributions in binary form must reproduce the above copyright
   69.16 + * notice, this list of conditions and the following disclaimer in the
   69.17 + * documentation and/or other materials provided with the distribution.
   69.18 + *
   69.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
   69.20 + * may be used to endorse or promote products derived from this software
   69.21 + * without specific prior written permission.
   69.22 + *
   69.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   69.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   69.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   69.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
   69.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   69.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   69.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   69.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   69.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   69.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   69.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   69.34 + */
   69.35 +package net.fortuna.ical4j.model;
   69.36 +
   69.37 +import java.text.DateFormat;
   69.38 +import java.util.Date;
   69.39 +
   69.40 +import net.fortuna.ical4j.util.CompatibilityHints;
   69.41 +import net.fortuna.ical4j.util.Dates;
   69.42 +import net.fortuna.ical4j.util.TimeZones;
   69.43 +
   69.44 +/**
   69.45 + * $Id$
   69.46 + *
   69.47 + * Created on 30/06/2005
   69.48 + *
   69.49 + * Base class for date and time representations as defined
   69.50 + * by the ISO 8601 standard. Sub-classes must ensure that either the correct
   69.51 + * precision is used in constructor arguments, or that <code>Object.equals()</code>
   69.52 + * is overridden to ensure equality checking is consistent with the type.
   69.53 + * @author Ben Fortuna
   69.54 + */
   69.55 +public abstract class Iso8601 extends Date {
   69.56 +    
   69.57 +    /**
   69.58 +     * 
   69.59 +     */
   69.60 +    private static final long serialVersionUID = -4290728005713946811L;
   69.61 +
   69.62 +    private DateFormat format;
   69.63 +    
   69.64 +    private DateFormat gmtFormat;
   69.65 +    
   69.66 +    private int precision;
   69.67 +
   69.68 +    /**
   69.69 +     * @param time a time value in milliseconds
   69.70 +     * @param pattern the formatting pattern to apply
   69.71 +     * @param precision the precision to apply
   69.72 +     * @param tz the timezone for the instance
   69.73 +     * @see Dates#PRECISION_DAY
   69.74 +     * @see Dates#PRECISION_SECOND
   69.75 +     */
   69.76 +    public Iso8601(final long time, final String pattern, final int precision, java.util.TimeZone tz) {
   69.77 +        super(Dates.round(time, precision, tz)); //, TimeZone.getTimeZone(TimeZones.GMT_ID)));
   69.78 +//        format = new SimpleDateFormat(pattern);
   69.79 +        format = CalendarDateFormatFactory.getInstance(pattern);
   69.80 +        format.setTimeZone(tz);
   69.81 +        format.setLenient(CompatibilityHints.isHintEnabled(CompatibilityHints.KEY_RELAXED_PARSING));
   69.82 +        // use GMT timezone to avoid daylight savings rules affecting floating
   69.83 +        // time values..
   69.84 +//        gmtFormat = new SimpleDateFormat(pattern);
   69.85 +//        gmtFormat.setTimeZone(TimeZone.getTimeZone(TimeZones.GMT_ID));
   69.86 +        this.precision = precision;
   69.87 +    }
   69.88 +    
   69.89 +    /**
   69.90 +     * @param pattern the formatting pattern to apply
   69.91 +     * @param precision the precision to apply
   69.92 +     * @param tz the timezone for the instance
   69.93 +     * @see Dates#PRECISION_DAY
   69.94 +     * @see Dates#PRECISION_SECOND
   69.95 +     */
   69.96 +    public Iso8601(final String pattern, final int precision, java.util.TimeZone tz) {
   69.97 +        this(Dates.getCurrentTimeRounded(), pattern, precision, tz);
   69.98 +    }
   69.99 +
  69.100 +    /**
  69.101 +     * @param time a time value as a date
  69.102 +     * @param pattern the formatting pattern to apply
  69.103 +     * @param precision the precision to apply
  69.104 +     * @param tz the timezone for the instance
  69.105 +     * @see Dates#PRECISION_DAY
  69.106 +     * @see Dates#PRECISION_SECOND
  69.107 +     */
  69.108 +    public Iso8601(final Date time, final String pattern, final int precision, java.util.TimeZone tz) {
  69.109 +        this(time.getTime(), pattern, precision, tz);
  69.110 +    }
  69.111 +    
  69.112 +    /**
  69.113 +     * {@inheritDoc}
  69.114 +     */
  69.115 +    public String toString() {
  69.116 +        // if time is floating avoid daylight saving rules when generating
  69.117 +        // string representation of date..
  69.118 +        if (!(format.getTimeZone() instanceof TimeZone)) {
  69.119 +            if (gmtFormat == null) {
  69.120 +                gmtFormat = (DateFormat) format.clone();
  69.121 +                gmtFormat.setTimeZone(TimeZone.getTimeZone(TimeZones.GMT_ID));
  69.122 +            }
  69.123 +            if (format.getTimeZone().inDaylightTime(this)
  69.124 +                    && format.getTimeZone().inDaylightTime(new Date(getTime() - 1))) {
  69.125 +                
  69.126 +                return gmtFormat.format(new Date(getTime()
  69.127 +                        + format.getTimeZone().getRawOffset()
  69.128 +                        + format.getTimeZone().getDSTSavings()));
  69.129 +//                return format.format(new Date(getTime() - format.getTimeZone().getDSTSavings()));
  69.130 +            }
  69.131 +//            return gmtFormat.format(new Date(getTime() + format.getTimeZone().getOffset(getTime())));
  69.132 +            return gmtFormat.format(new Date(getTime() + format.getTimeZone().getRawOffset()));
  69.133 +        }
  69.134 +        return format.format(this);
  69.135 +    }
  69.136 +
  69.137 +    /**
  69.138 +     * @return Returns the format.
  69.139 +     */
  69.140 +    protected final DateFormat getFormat() {
  69.141 +        return format;
  69.142 +    }
  69.143 +    
  69.144 +    /**
  69.145 +     * {@inheritDoc}
  69.146 +     */
  69.147 +    public void setTime(final long time) {
  69.148 +        // need to check for null format due to Android java.util.Date(long) constructor
  69.149 +        // calling this method..
  69.150 +        if (format != null) {
  69.151 +            super.setTime(Dates.round(time, precision, format.getTimeZone()));
  69.152 +        }
  69.153 +        else {
  69.154 +            // XXX: what do we do here??
  69.155 +            super.setTime(time);
  69.156 +        }
  69.157 +    }
  69.158 +}
    70.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    70.2 +++ b/src/net/fortuna/ical4j/model/LocationTypeList.java	Tue Feb 10 18:12:00 2015 +0100
    70.3 @@ -0,0 +1,135 @@
    70.4 +/**
    70.5 + * Copyright (c) 2012, Ben Fortuna
    70.6 + * All rights reserved.
    70.7 + *
    70.8 + * Redistribution and use in source and binary forms, with or without
    70.9 + * modification, are permitted provided that the following conditions
   70.10 + * are met:
   70.11 + *
   70.12 + *  o Redistributions of source code must retain the above copyright
   70.13 + * notice, this list of conditions and the following disclaimer.
   70.14 + *
   70.15 + *  o Redistributions in binary form must reproduce the above copyright
   70.16 + * notice, this list of conditions and the following disclaimer in the
   70.17 + * documentation and/or other materials provided with the distribution.
   70.18 + *
   70.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
   70.20 + * may be used to endorse or promote products derived from this software
   70.21 + * without specific prior written permission.
   70.22 + *
   70.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   70.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   70.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   70.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
   70.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   70.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   70.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   70.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   70.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   70.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   70.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   70.34 + */
   70.35 +package net.fortuna.ical4j.model;
   70.36 +
   70.37 +import java.io.Serializable;
   70.38 +import java.util.Iterator;
   70.39 +import java.util.List;
   70.40 +import java.util.StringTokenizer;
   70.41 +
   70.42 +import edu.emory.mathcs.backport.java.util.concurrent.CopyOnWriteArrayList;
   70.43 +
   70.44 +/**
   70.45 + * $Id LocationTypeList.java $ [23-Apr-2004]
   70.46 + * 
   70.47 + * Defines a list of iCalendar location types.
   70.48 + * 
   70.49 + * @author Ben Fortuna
   70.50 + */
   70.51 +public class LocationTypeList implements Serializable {
   70.52 +
   70.53 +    private static final long serialVersionUID = -9181735547604179160L;
   70.54 +
   70.55 +    private List locationTypes;
   70.56 +
   70.57 +    /**
   70.58 +     * Default constructor.
   70.59 +     */
   70.60 +    public LocationTypeList() {
   70.61 +        locationTypes = new CopyOnWriteArrayList();
   70.62 +    }
   70.63 +
   70.64 +    /**
   70.65 +     * Parses the specified string representation to create a list of categories.
   70.66 +     * 
   70.67 +     * @param aValue
   70.68 +     *            a string representation of a list of categories
   70.69 +     */
   70.70 +    public LocationTypeList(final String aValue) {
   70.71 +        locationTypes = new CopyOnWriteArrayList();
   70.72 +
   70.73 +        final StringTokenizer t = new StringTokenizer(aValue, ",");
   70.74 +        while (t.hasMoreTokens()) {
   70.75 +            locationTypes.add(t.nextToken());
   70.76 +        }
   70.77 +    }
   70.78 +
   70.79 +    /**
   70.80 +     * {@inheritDoc}
   70.81 +     */
   70.82 +    public final String toString() {
   70.83 +        final StringBuffer b = new StringBuffer();
   70.84 +        for (final Iterator i = locationTypes.iterator(); i.hasNext();) {
   70.85 +            b.append(i.next());
   70.86 +            if (i.hasNext()) {
   70.87 +                b.append(',');
   70.88 +            }
   70.89 +        }
   70.90 +        return b.toString();
   70.91 +    }
   70.92 +
   70.93 +    /**
   70.94 +     * Add a location type to the list.
   70.95 +     * 
   70.96 +     * @param locationType the location type to add
   70.97 +     * @return true if the object is added successfully
   70.98 +     * @see List#add(java.lang.Object)
   70.99 +     */
  70.100 +    public final boolean add(final String locationType) {
  70.101 +        return locationTypes.add(locationType);
  70.102 +    }
  70.103 +
  70.104 +    /**
  70.105 +     * @return boolean indicates if the list is empty
  70.106 +     * @see List#isEmpty()
  70.107 +     */
  70.108 +    public final boolean isEmpty() {
  70.109 +        return locationTypes.isEmpty();
  70.110 +    }
  70.111 +
  70.112 +    /**
  70.113 +     * @return an iterator
  70.114 +     * @see List#iterator()
  70.115 +     */
  70.116 +    public final Iterator iterator() {
  70.117 +        return locationTypes.iterator();
  70.118 +    }
  70.119 +
  70.120 +    /**
  70.121 +     * Remove a locationType from the list.
  70.122 +     * 
  70.123 +     * @param locationType the location type to remove
  70.124 +     * @return true if the list contained the specified category
  70.125 +     * @see List#remove(java.lang.Object)
  70.126 +     */
  70.127 +    public final boolean remove(final String locationType) {
  70.128 +        return locationTypes.remove(locationType);
  70.129 +    }
  70.130 +
  70.131 +    /**
  70.132 +     * @return the number of categories in the list
  70.133 +     * @see List#size()
  70.134 +     */
  70.135 +    public final int size() {
  70.136 +        return locationTypes.size();
  70.137 +    }
  70.138 +}
    71.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    71.2 +++ b/src/net/fortuna/ical4j/model/NumberList.java	Tue Feb 10 18:12:00 2015 +0100
    71.3 @@ -0,0 +1,154 @@
    71.4 +/**
    71.5 + * Copyright (c) 2012, Ben Fortuna
    71.6 + * All rights reserved.
    71.7 + *
    71.8 + * Redistribution and use in source and binary forms, with or without
    71.9 + * modification, are permitted provided that the following conditions
   71.10 + * are met:
   71.11 + *
   71.12 + *  o Redistributions of source code must retain the above copyright
   71.13 + * notice, this list of conditions and the following disclaimer.
   71.14 + *
   71.15 + *  o Redistributions in binary form must reproduce the above copyright
   71.16 + * notice, this list of conditions and the following disclaimer in the
   71.17 + * documentation and/or other materials provided with the distribution.
   71.18 + *
   71.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
   71.20 + * may be used to endorse or promote products derived from this software
   71.21 + * without specific prior written permission.
   71.22 + *
   71.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   71.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   71.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   71.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
   71.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   71.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   71.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   71.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   71.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   71.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   71.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   71.34 + */
   71.35 +package net.fortuna.ical4j.model;
   71.36 +
   71.37 +import java.io.Serializable;
   71.38 +import java.util.ArrayList;
   71.39 +import java.util.Iterator;
   71.40 +import java.util.StringTokenizer;
   71.41 +
   71.42 +import net.fortuna.ical4j.util.Numbers;
   71.43 +
   71.44 +/**
   71.45 + * $Id$ [29-May-2004]
   71.46 + *
   71.47 + * Defines a list of numbers.
   71.48 + * 
   71.49 + * @author Ben Fortuna
   71.50 + */
   71.51 +public class NumberList extends ArrayList implements Serializable {
   71.52 +    
   71.53 +    private static final long serialVersionUID = -1667481795613729889L;
   71.54 +
   71.55 +    private final int minValue;
   71.56 +    
   71.57 +    private final int maxValue;
   71.58 +
   71.59 +    private final boolean allowsNegativeValues;
   71.60 +    
   71.61 +    /**
   71.62 +     * Default constructor.
   71.63 +     */
   71.64 +    public NumberList() {
   71.65 +    	this(Integer.MIN_VALUE, Integer.MAX_VALUE, true);
   71.66 +    }
   71.67 +
   71.68 +    /**
   71.69 +     * Constructor with limits.
   71.70 +     * @param minValue the minimum allowable value
   71.71 +     * @param maxValue the maximum allowable value
   71.72 +     * @param allowsNegativeValues indicates whether negative values are allowed
   71.73 +     */
   71.74 +    public NumberList(int minValue, int maxValue, boolean allowsNegativeValues) {
   71.75 +    	this.minValue = minValue;
   71.76 +    	this.maxValue = maxValue;
   71.77 +        this.allowsNegativeValues = allowsNegativeValues;
   71.78 +    }
   71.79 +
   71.80 +    /**
   71.81 +     * Constructor.
   71.82 +     * @param aString a string representation of a number list
   71.83 +     */
   71.84 +    public NumberList(final String aString) {
   71.85 +    	this(aString, Integer.MIN_VALUE, Integer.MAX_VALUE, true);
   71.86 +    }
   71.87 +    
   71.88 +    /**
   71.89 +     * @param aString a string representation of a number list
   71.90 +     * @param minValue the minimum allowable value
   71.91 +     * @param maxValue the maximum allowable value
   71.92 +     * @param allowsNegativeValues indicates whether negative values are allowed
   71.93 +     */
   71.94 +    public NumberList(final String aString, int minValue, int maxValue, boolean allowsNegativeValues) {
   71.95 +    	this(minValue, maxValue, allowsNegativeValues);
   71.96 +        final StringTokenizer t = new StringTokenizer(aString, ",");
   71.97 +        while (t.hasMoreTokens()) {
   71.98 +        	final int value = Numbers.parseInt(t.nextToken());
   71.99 +            add(new Integer(value));
  71.100 +        }
  71.101 +    }
  71.102 +
  71.103 +    /**
  71.104 +     * @param aNumber a number to add to the list
  71.105 +     * @return true if the number was added, otherwise false
  71.106 +     */
  71.107 +    public final boolean add(final Integer aNumber) {
  71.108 +        int abs = aNumber.intValue();
  71.109 +        if ((abs >> 31 | -abs >>> 31) < 0) {
  71.110 +            if (!allowsNegativeValues) {
  71.111 +                throw new IllegalArgumentException("Negative value not allowed: " + aNumber);
  71.112 +            }
  71.113 +            abs = Math.abs(abs);
  71.114 +        }
  71.115 +    	if (abs < minValue || abs > maxValue) {
  71.116 +    		throw new IllegalArgumentException(
  71.117 +    		        "Value not in range [" + minValue + ".." + maxValue + "]: " + aNumber);
  71.118 +    	}
  71.119 +        return add((Object) aNumber);
  71.120 +    }
  71.121 +    
  71.122 +    /**
  71.123 +     * Overrides superclass to throw an <code>IllegalArgumentException</code>
  71.124 +     * where argument is not a <code>java.lang.Integer</code>.
  71.125 +     * @param arg0 an object to add
  71.126 +     * @return true if the object was added, otherwise false
  71.127 +     * @see List#add(E)
  71.128 +     */
  71.129 +    public final boolean add(final Object arg0) {
  71.130 +        if (!(arg0 instanceof Integer)) {
  71.131 +            throw new IllegalArgumentException("Argument not a " + Integer.class.getName());
  71.132 +        }
  71.133 +        return super.add(arg0);
  71.134 +    }
  71.135 +
  71.136 +    /**
  71.137 +     * @param aNumber a number to remove from the list
  71.138 +     * @return true if the number was removed, otherwise false
  71.139 +     */
  71.140 +    public final boolean remove(final Integer aNumber) {
  71.141 +        return remove((Object) aNumber);
  71.142 +    }
  71.143 +
  71.144 +    /**
  71.145 +     * {@inheritDoc}
  71.146 +     */
  71.147 +    public final String toString() {
  71.148 +        final StringBuffer b = new StringBuffer();
  71.149 +        for (final Iterator i = iterator(); i.hasNext();) {
  71.150 +            b.append(i.next());
  71.151 +            if (i.hasNext()) {
  71.152 +                b.append(',');
  71.153 +            }
  71.154 +        }
  71.155 +        return b.toString();
  71.156 +    }
  71.157 +}
    72.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    72.2 +++ b/src/net/fortuna/ical4j/model/Parameter.java	Tue Feb 10 18:12:00 2015 +0100
    72.3 @@ -0,0 +1,264 @@
    72.4 +/**
    72.5 + * Copyright (c) 2012, Ben Fortuna
    72.6 + * All rights reserved.
    72.7 + *
    72.8 + * Redistribution and use in source and binary forms, with or without
    72.9 + * modification, are permitted provided that the following conditions
   72.10 + * are met:
   72.11 + *
   72.12 + *  o Redistributions of source code must retain the above copyright
   72.13 + * notice, this list of conditions and the following disclaimer.
   72.14 + *
   72.15 + *  o Redistributions in binary form must reproduce the above copyright
   72.16 + * notice, this list of conditions and the following disclaimer in the
   72.17 + * documentation and/or other materials provided with the distribution.
   72.18 + *
   72.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
   72.20 + * may be used to endorse or promote products derived from this software
   72.21 + * without specific prior written permission.
   72.22 + *
   72.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   72.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   72.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   72.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
   72.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   72.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   72.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   72.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   72.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   72.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   72.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   72.34 + */
   72.35 +package net.fortuna.ical4j.model;
   72.36 +
   72.37 +import java.net.URISyntaxException;
   72.38 +
   72.39 +import net.fortuna.ical4j.util.Strings;
   72.40 +
   72.41 +import org.apache.commons.lang.builder.EqualsBuilder;
   72.42 +import org.apache.commons.lang.builder.HashCodeBuilder;
   72.43 +
   72.44 +/**
   72.45 + * Defines an iCalendar parameter. Subclasses of this class provide additional validation and typed values for specific
   72.46 + * iCalendar parameters.
   72.47 + * 
   72.48 + * Note that subclasses must provide a reference to the factory used to create the
   72.49 + * parameter to support parameter cloning (copy). If no factory is specified an
   72.50 + * {@link UnsupportedOperationException} will be thrown by the {@link #copy()} method.
   72.51 + * 
   72.52 + * @author Ben Fortuna
   72.53 + * 
   72.54 + * $Id$ [Apr 5, 2004]
   72.55 + */
   72.56 +public abstract class Parameter extends Content {
   72.57 +
   72.58 +    private static final long serialVersionUID = -2058497904769713528L;
   72.59 +
   72.60 +    /**
   72.61 +     * Region abbreviation.
   72.62 +     */
   72.63 +    public static final String ABBREV = "ABBREV";
   72.64 +
   72.65 +    /**
   72.66 +     * Alternate text representation.
   72.67 +     */
   72.68 +    public static final String ALTREP = "ALTREP";
   72.69 +
   72.70 +    /**
   72.71 +     * Common name.
   72.72 +     */
   72.73 +    public static final String CN = "CN";
   72.74 +
   72.75 +    /**
   72.76 +     * Calendar user type.
   72.77 +     */
   72.78 +    public static final String CUTYPE = "CUTYPE";
   72.79 +
   72.80 +    /**
   72.81 +     * Delegator.
   72.82 +     */
   72.83 +    public static final String DELEGATED_FROM = "DELEGATED-FROM";
   72.84 +
   72.85 +    /**
   72.86 +     * Delegatee.
   72.87 +     */
   72.88 +    public static final String DELEGATED_TO = "DELEGATED-TO";
   72.89 +
   72.90 +    /**
   72.91 +     * Directory entry.
   72.92 +     */
   72.93 +    public static final String DIR = "DIR";
   72.94 +
   72.95 +    /**
   72.96 +     * Inline encoding.
   72.97 +     */
   72.98 +    public static final String ENCODING = "ENCODING";
   72.99 +
  72.100 +    /**
  72.101 +     * Format type.
  72.102 +     */
  72.103 +    public static final String FMTTYPE = "FMTTYPE";
  72.104 +
  72.105 +    /**
  72.106 +     * Free/busy time type.
  72.107 +     */
  72.108 +    public static final String FBTYPE = "FBTYPE";
  72.109 +
  72.110 +    /**
  72.111 +     * Language for text.
  72.112 +     */
  72.113 +    public static final String LANGUAGE = "LANGUAGE";
  72.114 +
  72.115 +    /**
  72.116 +     * Group or list membership.
  72.117 +     */
  72.118 +    public static final String MEMBER = "MEMBER";
  72.119 +
  72.120 +    /**
  72.121 +     * Participation status.
  72.122 +     */
  72.123 +    public static final String PARTSTAT = "PARTSTAT";
  72.124 +
  72.125 +    /**
  72.126 +     * Recurrence identifier range.
  72.127 +     */
  72.128 +    public static final String RANGE = "RANGE";
  72.129 +
  72.130 +    /**
  72.131 +     * Alarm trigger relationship.
  72.132 +     */
  72.133 +    public static final String RELATED = "RELATED";
  72.134 +
  72.135 +    /**
  72.136 +     * Relationship type.
  72.137 +     */
  72.138 +    public static final String RELTYPE = "RELTYPE";
  72.139 +
  72.140 +    /**
  72.141 +     * Participation role.
  72.142 +     */
  72.143 +    public static final String ROLE = "ROLE";
  72.144 +
  72.145 +    /**
  72.146 +     * RSVP expectation.
  72.147 +     */
  72.148 +    public static final String RSVP = "RSVP";
  72.149 +
  72.150 +    /**
  72.151 +     * Schedule agent.
  72.152 +     */
  72.153 +    public static final String SCHEDULE_AGENT = "SCHEDULE-AGENT";
  72.154 +
  72.155 +    /**
  72.156 +     * Schedule status.
  72.157 +     */
  72.158 +    public static final String SCHEDULE_STATUS = "SCHEDULE-STATUS";
  72.159 +
  72.160 +    /**
  72.161 +     * Sent by.
  72.162 +     */
  72.163 +    public static final String SENT_BY = "SENT-BY";
  72.164 +
  72.165 +    /**
  72.166 +     * Type.
  72.167 +     */
  72.168 +    public static final String TYPE = "TYPE";
  72.169 +
  72.170 +    /**
  72.171 +     * Reference to time zone object.
  72.172 +     */
  72.173 +    public static final String TZID = "TZID";
  72.174 +
  72.175 +    /**
  72.176 +     * Property value data type.
  72.177 +     */
  72.178 +    public static final String VALUE = "VALUE";
  72.179 +
  72.180 +    /**
  72.181 +     * Reference to vvenue component.
  72.182 +     */
  72.183 +    public static final String VVENUE = "VVENUE";
  72.184 +
  72.185 +    /**
  72.186 +     * Prefix to all experimental parameters.
  72.187 +     */
  72.188 +    public static final String EXPERIMENTAL_PREFIX = "X-";
  72.189 +
  72.190 +    private String name;
  72.191 +
  72.192 +    private final ParameterFactory factory;
  72.193 +
  72.194 +    /**
  72.195 +     * @param aName the parameter identifier
  72.196 +     * @param factory the factory used to create the parameter
  72.197 +     */
  72.198 +    public Parameter(final String aName, ParameterFactory factory) {
  72.199 +        this.name = aName;
  72.200 +        this.factory = factory;
  72.201 +    }
  72.202 +    
  72.203 +    /**
  72.204 +     * {@inheritDoc}
  72.205 +     */
  72.206 +    public final String toString() {
  72.207 +        final StringBuffer b = new StringBuffer();
  72.208 +        b.append(getName());
  72.209 +        b.append('=');
  72.210 +        if (isQuotable()) {
  72.211 +            b.append(Strings.quote(Strings.valueOf(getValue())));
  72.212 +        }
  72.213 +        else {
  72.214 +            b.append(Strings.valueOf(getValue()));
  72.215 +        }
  72.216 +        return b.toString();
  72.217 +    }
  72.218 +
  72.219 +    /**
  72.220 +     * Indicates whether the current parameter value should be quoted.
  72.221 +     * @return true if the value should be quoted, otherwise false
  72.222 +     */
  72.223 +    protected boolean isQuotable() {
  72.224 +        return Strings.PARAM_QUOTE_PATTERN.matcher(Strings.valueOf(getValue()))
  72.225 +                .find();
  72.226 +    }
  72.227 +
  72.228 +    /**
  72.229 +     * @return Returns the name.
  72.230 +     */
  72.231 +    public final String getName() {
  72.232 +        return name;
  72.233 +    }
  72.234 +
  72.235 +    /**
  72.236 +     * {@inheritDoc}
  72.237 +     */
  72.238 +    public final boolean equals(final Object arg0) {
  72.239 +        if (arg0 instanceof Parameter) {
  72.240 +            final Parameter p = (Parameter) arg0;
  72.241 +            return new EqualsBuilder().append(getName(), p.getName())
  72.242 +                .append(getValue(), p.getValue()).isEquals();
  72.243 +        }
  72.244 +        return super.equals(arg0);
  72.245 +    }
  72.246 +
  72.247 +    /**
  72.248 +     * {@inheritDoc}
  72.249 +     */
  72.250 +    public final int hashCode() {
  72.251 +        // as parameter name is case-insensitive generate hash for uppercase..
  72.252 +        return new HashCodeBuilder().append(getName().toUpperCase()).append(
  72.253 +                getValue()).toHashCode();
  72.254 +    }
  72.255 +
  72.256 +    /**
  72.257 +     * Deep copy of parameter.
  72.258 +     * @return new parameter
  72.259 +     * @throws URISyntaxException where an invalid URI is encountered
  72.260 +     */
  72.261 +    public Parameter copy() throws URISyntaxException {
  72.262 +        if (factory == null) {
  72.263 +            throw new UnsupportedOperationException("No factory specified");
  72.264 +        }
  72.265 +        return factory.createParameter(getName(), getValue());
  72.266 +    }
  72.267 +}
    73.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    73.2 +++ b/src/net/fortuna/ical4j/model/ParameterFactory.java	Tue Feb 10 18:12:00 2015 +0100
    73.3 @@ -0,0 +1,66 @@
    73.4 +/**
    73.5 + * Copyright (c) 2012, Ben Fortuna
    73.6 + * All rights reserved.
    73.7 + *
    73.8 + * Redistribution and use in source and binary forms, with or without
    73.9 + * modification, are permitted provided that the following conditions
   73.10 + * are met:
   73.11 + *
   73.12 + *  o Redistributions of source code must retain the above copyright
   73.13 + * notice, this list of conditions and the following disclaimer.
   73.14 + *
   73.15 + *  o Redistributions in binary form must reproduce the above copyright
   73.16 + * notice, this list of conditions and the following disclaimer in the
   73.17 + * documentation and/or other materials provided with the distribution.
   73.18 + *
   73.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
   73.20 + * may be used to endorse or promote products derived from this software
   73.21 + * without specific prior written permission.
   73.22 + *
   73.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   73.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   73.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   73.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
   73.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   73.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   73.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   73.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   73.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   73.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   73.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   73.34 + */
   73.35 +/*
   73.36 + * TODO To change the template for this generated file go to
   73.37 + * Window - Preferences - Java - Code Style - Code Templates
   73.38 + */
   73.39 +package net.fortuna.ical4j.model;
   73.40 +
   73.41 +import java.io.Serializable;
   73.42 +import java.net.URISyntaxException;
   73.43 +
   73.44 +
   73.45 +/**
   73.46 + * Implementors provide parameter creation services.
   73.47 + * 
   73.48 + * Note that implementations must be {@link Serializable} to support referencing
   73.49 + * from {@link Parameter} instances.
   73.50 + * 
   73.51 + * @author Ben Fortuna
   73.52 + * 
   73.53 + * $Id$ [05-Apr-2004]
   73.54 + * 
   73.55 + * Created on 14/06/2005
   73.56 + *
   73.57 + */
   73.58 +public interface ParameterFactory extends Serializable {
   73.59 +
   73.60 +    /**
   73.61 +     * Returns a parameter instance of the appropriate type with the specified value.
   73.62 +     * @param name a parameter names that identifies the parameter type
   73.63 +     * @param value a value to assign to the returned parameter
   73.64 +     * @return a parameter instance, or null if this factory is unable to create an
   73.65 +     * appropriate parameter
   73.66 +     * @throws URISyntaxException where an invalid URI is encountered
   73.67 +     */
   73.68 +    Parameter createParameter(String name, String value) throws URISyntaxException;
   73.69 +}
    74.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    74.2 +++ b/src/net/fortuna/ical4j/model/ParameterFactoryImpl.java	Tue Feb 10 18:12:00 2015 +0100
    74.3 @@ -0,0 +1,524 @@
    74.4 +/**
    74.5 + * Copyright (c) 2012, Ben Fortuna
    74.6 + * All rights reserved.
    74.7 + *
    74.8 + * Redistribution and use in source and binary forms, with or without
    74.9 + * modification, are permitted provided that the following conditions
   74.10 + * are met:
   74.11 + *
   74.12 + *  o Redistributions of source code must retain the above copyright
   74.13 + * notice, this list of conditions and the following disclaimer.
   74.14 + *
   74.15 + *  o Redistributions in binary form must reproduce the above copyright
   74.16 + * notice, this list of conditions and the following disclaimer in the
   74.17 + * documentation and/or other materials provided with the distribution.
   74.18 + *
   74.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
   74.20 + * may be used to endorse or promote products derived from this software
   74.21 + * without specific prior written permission.
   74.22 + *
   74.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   74.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   74.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   74.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
   74.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   74.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   74.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   74.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   74.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   74.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   74.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   74.34 + */
   74.35 +package net.fortuna.ical4j.model;
   74.36 +
   74.37 +import java.net.URISyntaxException;
   74.38 +
   74.39 +import net.fortuna.ical4j.model.parameter.Abbrev;
   74.40 +import net.fortuna.ical4j.model.parameter.AltRep;
   74.41 +import net.fortuna.ical4j.model.parameter.Cn;
   74.42 +import net.fortuna.ical4j.model.parameter.CuType;
   74.43 +import net.fortuna.ical4j.model.parameter.DelegatedFrom;
   74.44 +import net.fortuna.ical4j.model.parameter.DelegatedTo;
   74.45 +import net.fortuna.ical4j.model.parameter.Dir;
   74.46 +import net.fortuna.ical4j.model.parameter.Encoding;
   74.47 +import net.fortuna.ical4j.model.parameter.FbType;
   74.48 +import net.fortuna.ical4j.model.parameter.FmtType;
   74.49 +import net.fortuna.ical4j.model.parameter.Language;
   74.50 +import net.fortuna.ical4j.model.parameter.Member;
   74.51 +import net.fortuna.ical4j.model.parameter.PartStat;
   74.52 +import net.fortuna.ical4j.model.parameter.Range;
   74.53 +import net.fortuna.ical4j.model.parameter.RelType;
   74.54 +import net.fortuna.ical4j.model.parameter.Related;
   74.55 +import net.fortuna.ical4j.model.parameter.Role;
   74.56 +import net.fortuna.ical4j.model.parameter.Rsvp;
   74.57 +import net.fortuna.ical4j.model.parameter.ScheduleAgent;
   74.58 +import net.fortuna.ical4j.model.parameter.ScheduleStatus;
   74.59 +import net.fortuna.ical4j.model.parameter.SentBy;
   74.60 +import net.fortuna.ical4j.model.parameter.Type;
   74.61 +import net.fortuna.ical4j.model.parameter.TzId;
   74.62 +import net.fortuna.ical4j.model.parameter.Value;
   74.63 +import net.fortuna.ical4j.model.parameter.Vvenue;
   74.64 +import net.fortuna.ical4j.model.parameter.XParameter;
   74.65 +import net.fortuna.ical4j.util.Strings;
   74.66 +
   74.67 +/**
   74.68 + * A factory for creating iCalendar parameters.
   74.69 + * 
   74.70 + * $Id $
   74.71 + *
   74.72 + * [05-Apr-2004]
   74.73 + *
   74.74 + * @author Ben Fortuna
   74.75 + */
   74.76 +public class ParameterFactoryImpl extends AbstractContentFactory implements ParameterFactory {
   74.77 +
   74.78 +    private static final long serialVersionUID = -4034423507432249165L;
   74.79 +    
   74.80 +    private static ParameterFactoryImpl instance = new ParameterFactoryImpl();
   74.81 +
   74.82 +    protected ParameterFactoryImpl() {
   74.83 +        registerDefaultFactory(Parameter.ABBREV, new AbbrevFactory());
   74.84 +        registerDefaultFactory(Parameter.ALTREP, new AltRepFactory());
   74.85 +        registerDefaultFactory(Parameter.CN, new CnFactory());
   74.86 +        registerDefaultFactory(Parameter.CUTYPE, new CuTypeFactory());
   74.87 +        registerDefaultFactory(Parameter.DELEGATED_FROM, new DelegatedFromFactory());
   74.88 +        registerDefaultFactory(Parameter.DELEGATED_TO, new DelegatedToFactory());
   74.89 +        registerDefaultFactory(Parameter.DIR, new DirFactory());
   74.90 +        registerDefaultFactory(Parameter.ENCODING, new EncodingFactory());
   74.91 +        registerDefaultFactory(Parameter.FMTTYPE, new FmtTypeFactory());
   74.92 +        registerDefaultFactory(Parameter.FBTYPE, new FbTypeFactory());
   74.93 +        registerDefaultFactory(Parameter.LANGUAGE, new LanguageFactory());
   74.94 +        registerDefaultFactory(Parameter.MEMBER, new MemberFactory());
   74.95 +        registerDefaultFactory(Parameter.PARTSTAT, new PartStatFactory());
   74.96 +        registerDefaultFactory(Parameter.RANGE, new RangeFactory());
   74.97 +        registerDefaultFactory(Parameter.RELATED, new RelatedFactory());
   74.98 +        registerDefaultFactory(Parameter.RELTYPE, new RelTypeFactory());
   74.99 +        registerDefaultFactory(Parameter.ROLE, new RoleFactory());
  74.100 +        registerDefaultFactory(Parameter.RSVP, new RsvpFactory());
  74.101 +        registerDefaultFactory(Parameter.SCHEDULE_AGENT, new ScheduleAgentFactory());
  74.102 +        registerDefaultFactory(Parameter.SCHEDULE_STATUS, new ScheduleStatusFactory());
  74.103 +        registerDefaultFactory(Parameter.SENT_BY, new SentByFactory());
  74.104 +        registerDefaultFactory(Parameter.TYPE, new TypeFactory());
  74.105 +        registerDefaultFactory(Parameter.TZID, new TzIdFactory());
  74.106 +        registerDefaultFactory(Parameter.VALUE, new ValueFactory());
  74.107 +        registerDefaultFactory(Parameter.VVENUE, new VvenueFactory());
  74.108 +    }
  74.109 +
  74.110 +    /**
  74.111 +     * @return Returns the instance.
  74.112 +     */
  74.113 +    public static ParameterFactoryImpl getInstance() {
  74.114 +        return instance;
  74.115 +    }
  74.116 +
  74.117 +    /**
  74.118 +     * Creates a parameter.
  74.119 +     * @param name name of the parameter
  74.120 +     * @param value a parameter value
  74.121 +     * @return a component
  74.122 +     * @throws URISyntaxException thrown when the specified string is not a valid representation of a URI for selected
  74.123 +     * parameters
  74.124 +     */
  74.125 +    public Parameter createParameter(final String name, final String value)
  74.126 +            throws URISyntaxException {
  74.127 +        final ParameterFactory factory = (ParameterFactory) getFactory(name);
  74.128 +        Parameter parameter = null;
  74.129 +        if (factory != null) {
  74.130 +            parameter = factory.createParameter(name, value);
  74.131 +        }
  74.132 +        else if (isExperimentalName(name)) {
  74.133 +            parameter = new XParameter(name, value);
  74.134 +        }
  74.135 +        else if (allowIllegalNames()) {
  74.136 +            parameter = new XParameter(name, value);
  74.137 +        }
  74.138 +        else {
  74.139 +            throw new IllegalArgumentException("Invalid parameter name: "
  74.140 +                    + name);
  74.141 +        }
  74.142 +        return parameter;
  74.143 +    }
  74.144 +
  74.145 +    /**
  74.146 +     * @param name
  74.147 +     * @return
  74.148 +     */
  74.149 +    private boolean isExperimentalName(final String name) {
  74.150 +        return name.startsWith(Parameter.EXPERIMENTAL_PREFIX)
  74.151 +                && name.length() > Parameter.EXPERIMENTAL_PREFIX.length();
  74.152 +    }
  74.153 +    
  74.154 +    private static class AbbrevFactory implements ParameterFactory {
  74.155 +        private static final long serialVersionUID = 1L;
  74.156 +
  74.157 +        public Parameter createParameter(final String name, final String value) throws URISyntaxException {
  74.158 +            return new Abbrev(value);
  74.159 +        }
  74.160 +    }
  74.161 +    
  74.162 +    private static class AltRepFactory implements ParameterFactory {
  74.163 +        private static final long serialVersionUID = 1L;
  74.164 +
  74.165 +        public Parameter createParameter(final String name, final String value) throws URISyntaxException {
  74.166 +            return new AltRep(value);
  74.167 +        }
  74.168 +    }
  74.169 +    
  74.170 +    private static class CnFactory implements ParameterFactory {
  74.171 +        private static final long serialVersionUID = 1L;
  74.172 +
  74.173 +        public Parameter createParameter(final String name,
  74.174 +                final String value) throws URISyntaxException {
  74.175 +            return new Cn(value);
  74.176 +        }
  74.177 +    }
  74.178 +    
  74.179 +    private static class CuTypeFactory implements ParameterFactory {
  74.180 +        private static final long serialVersionUID = 1L;
  74.181 +
  74.182 +        public Parameter createParameter(final String name, final String value) throws URISyntaxException {
  74.183 +            CuType parameter = new CuType(value);
  74.184 +            if (CuType.INDIVIDUAL.equals(parameter)) {
  74.185 +                parameter = CuType.INDIVIDUAL;
  74.186 +            }
  74.187 +            else if (CuType.GROUP.equals(parameter)) {
  74.188 +                parameter = CuType.GROUP;
  74.189 +            }
  74.190 +            else if (CuType.RESOURCE.equals(parameter)) {
  74.191 +                parameter = CuType.RESOURCE;
  74.192 +            }
  74.193 +            else if (CuType.ROOM.equals(parameter)) {
  74.194 +                parameter = CuType.ROOM;
  74.195 +            }
  74.196 +            else if (CuType.UNKNOWN.equals(parameter)) {
  74.197 +                parameter = CuType.UNKNOWN;
  74.198 +            }
  74.199 +            return parameter;
  74.200 +        }
  74.201 +    }
  74.202 +    
  74.203 +    private static class DelegatedFromFactory implements ParameterFactory {
  74.204 +        private static final long serialVersionUID = 1L;
  74.205 +
  74.206 +        public Parameter createParameter(final String name,
  74.207 +                final String value) throws URISyntaxException {
  74.208 +            return new DelegatedFrom(value);
  74.209 +        }
  74.210 +    }
  74.211 +    
  74.212 +    private static class DelegatedToFactory implements ParameterFactory {
  74.213 +        private static final long serialVersionUID = 1L;
  74.214 +
  74.215 +        public Parameter createParameter(final String name,
  74.216 +                final String value) throws URISyntaxException {
  74.217 +            return new DelegatedTo(value);
  74.218 +        }
  74.219 +    }
  74.220 +    
  74.221 +    private static class DirFactory implements ParameterFactory {
  74.222 +        private static final long serialVersionUID = 1L;
  74.223 +
  74.224 +        public Parameter createParameter(final String name,
  74.225 +                final String value) throws URISyntaxException {
  74.226 +            return new Dir(value);
  74.227 +        }
  74.228 +    }
  74.229 +    
  74.230 +    private static class EncodingFactory implements ParameterFactory {
  74.231 +        private static final long serialVersionUID = 1L;
  74.232 +
  74.233 +        public Parameter createParameter(final String name,
  74.234 +                final String value) throws URISyntaxException {
  74.235 +            Encoding parameter = new Encoding(value);
  74.236 +            if (Encoding.EIGHT_BIT.equals(parameter)) {
  74.237 +                parameter = Encoding.EIGHT_BIT;
  74.238 +            }
  74.239 +            else if (Encoding.BASE64.equals(parameter)) {
  74.240 +                parameter = Encoding.BASE64;
  74.241 +            }
  74.242 +            return parameter;
  74.243 +        }
  74.244 +    }
  74.245 +    
  74.246 +    private static class FmtTypeFactory implements ParameterFactory {
  74.247 +        private static final long serialVersionUID = 1L;
  74.248 +
  74.249 +        public Parameter createParameter(final String name,
  74.250 +                final String value) throws URISyntaxException {
  74.251 +            return new FmtType(value);
  74.252 +        }
  74.253 +    }
  74.254 +    
  74.255 +    private static class FbTypeFactory implements ParameterFactory {
  74.256 +        private static final long serialVersionUID = 1L;
  74.257 +
  74.258 +        public Parameter createParameter(final String name,
  74.259 +                final String value) throws URISyntaxException {
  74.260 +            FbType parameter = new FbType(value);
  74.261 +            if (FbType.FREE.equals(parameter)) {
  74.262 +                parameter = FbType.FREE;
  74.263 +            }
  74.264 +            else if (FbType.BUSY.equals(parameter)) {
  74.265 +                parameter = FbType.BUSY;
  74.266 +            }
  74.267 +            else if (FbType.BUSY_TENTATIVE.equals(parameter)) {
  74.268 +                parameter = FbType.BUSY_TENTATIVE;
  74.269 +            }
  74.270 +            else if (FbType.BUSY_UNAVAILABLE.equals(parameter)) {
  74.271 +                parameter = FbType.BUSY_UNAVAILABLE;
  74.272 +            }
  74.273 +            return parameter;
  74.274 +        }
  74.275 +    }
  74.276 +    
  74.277 +    private static class LanguageFactory implements ParameterFactory {
  74.278 +        private static final long serialVersionUID = 1L;
  74.279 +
  74.280 +        public Parameter createParameter(final String name,
  74.281 +                final String value) throws URISyntaxException {
  74.282 +            return new Language(value);
  74.283 +        }
  74.284 +    }
  74.285 +    
  74.286 +    private static class MemberFactory implements ParameterFactory {
  74.287 +        private static final long serialVersionUID = 1L;
  74.288 +
  74.289 +        public Parameter createParameter(final String name,
  74.290 +                final String value) throws URISyntaxException {
  74.291 +            return new Member(value);
  74.292 +        }
  74.293 +    }
  74.294 +    
  74.295 +    private static class PartStatFactory implements ParameterFactory {
  74.296 +        private static final long serialVersionUID = 1L;
  74.297 +
  74.298 +        public Parameter createParameter(final String name,
  74.299 +                final String value) throws URISyntaxException {
  74.300 +            PartStat parameter = new PartStat(value);
  74.301 +            if (PartStat.NEEDS_ACTION.equals(parameter)) {
  74.302 +                parameter = PartStat.NEEDS_ACTION;
  74.303 +            }
  74.304 +            else if (PartStat.ACCEPTED.equals(parameter)) {
  74.305 +                parameter = PartStat.ACCEPTED;
  74.306 +            }
  74.307 +            else if (PartStat.DECLINED.equals(parameter)) {
  74.308 +                parameter = PartStat.DECLINED;
  74.309 +            }
  74.310 +            else if (PartStat.TENTATIVE.equals(parameter)) {
  74.311 +                parameter = PartStat.TENTATIVE;
  74.312 +            }
  74.313 +            else if (PartStat.DELEGATED.equals(parameter)) {
  74.314 +                parameter = PartStat.DELEGATED;
  74.315 +            }
  74.316 +            else if (PartStat.COMPLETED.equals(parameter)) {
  74.317 +                parameter = PartStat.COMPLETED;
  74.318 +            }
  74.319 +            else if (PartStat.IN_PROCESS.equals(parameter)) {
  74.320 +                parameter = PartStat.IN_PROCESS;
  74.321 +            }
  74.322 +            return parameter;
  74.323 +        }
  74.324 +    }
  74.325 +    
  74.326 +    private static class RangeFactory implements ParameterFactory {
  74.327 +        private static final long serialVersionUID = 1L;
  74.328 +
  74.329 +        public Parameter createParameter(final String name,
  74.330 +                final String value) throws URISyntaxException {
  74.331 +            Range parameter = new Range(value);
  74.332 +            if (Range.THISANDFUTURE.equals(parameter)) {
  74.333 +                parameter = Range.THISANDFUTURE;
  74.334 +            }
  74.335 +            else if (Range.THISANDPRIOR.equals(parameter)) {
  74.336 +                parameter = Range.THISANDPRIOR;
  74.337 +            }
  74.338 +            return parameter;
  74.339 +        }
  74.340 +    }
  74.341 +    
  74.342 +    private static class RelatedFactory implements ParameterFactory {
  74.343 +        private static final long serialVersionUID = 1L;
  74.344 +
  74.345 +        public Parameter createParameter(final String name,
  74.346 +                final String value) throws URISyntaxException {
  74.347 +            Related parameter = new Related(value);
  74.348 +            if (Related.START.equals(parameter)) {
  74.349 +                parameter = Related.START;
  74.350 +            }
  74.351 +            else if (Related.END.equals(parameter)) {
  74.352 +                parameter = Related.END;
  74.353 +            }
  74.354 +            return parameter;
  74.355 +        }
  74.356 +    }
  74.357 +    
  74.358 +    private static class RelTypeFactory implements ParameterFactory {
  74.359 +        private static final long serialVersionUID = 1L;
  74.360 +
  74.361 +        public Parameter createParameter(final String name,
  74.362 +                final String value) throws URISyntaxException {
  74.363 +            RelType parameter = new RelType(value);
  74.364 +            if (RelType.PARENT.equals(parameter)) {
  74.365 +                parameter = RelType.PARENT;
  74.366 +            }
  74.367 +            else if (RelType.CHILD.equals(parameter)) {
  74.368 +                parameter = RelType.CHILD;
  74.369 +            }
  74.370 +            if (RelType.SIBLING.equals(parameter)) {
  74.371 +                parameter = RelType.SIBLING;
  74.372 +            }
  74.373 +            return parameter;
  74.374 +        }
  74.375 +    }
  74.376 +    
  74.377 +    private static class RoleFactory implements ParameterFactory {
  74.378 +        private static final long serialVersionUID = 1L;
  74.379 +
  74.380 +        public Parameter createParameter(final String name,
  74.381 +                final String value) throws URISyntaxException {
  74.382 +            Role parameter = new Role(value);
  74.383 +            if (Role.CHAIR.equals(parameter)) {
  74.384 +                parameter = Role.CHAIR;
  74.385 +            }
  74.386 +            else if (Role.REQ_PARTICIPANT.equals(parameter)) {
  74.387 +                parameter = Role.REQ_PARTICIPANT;
  74.388 +            }
  74.389 +            else if (Role.OPT_PARTICIPANT.equals(parameter)) {
  74.390 +                parameter = Role.OPT_PARTICIPANT;
  74.391 +            }
  74.392 +            else if (Role.NON_PARTICIPANT.equals(parameter)) {
  74.393 +                parameter = Role.NON_PARTICIPANT;
  74.394 +            }
  74.395 +            return parameter;
  74.396 +        }
  74.397 +    }
  74.398 +    
  74.399 +    private static class RsvpFactory implements ParameterFactory {
  74.400 +        private static final long serialVersionUID = 1L;
  74.401 +
  74.402 +        public Parameter createParameter(final String name,
  74.403 +                final String value) throws URISyntaxException {
  74.404 +            Rsvp parameter = new Rsvp(value);
  74.405 +            if (Rsvp.TRUE.equals(parameter)) {
  74.406 +                parameter = Rsvp.TRUE;
  74.407 +            }
  74.408 +            else if (Rsvp.FALSE.equals(parameter)) {
  74.409 +                parameter = Rsvp.FALSE;
  74.410 +            }
  74.411 +            return parameter;
  74.412 +        }
  74.413 +    }
  74.414 +
  74.415 +    private static class ScheduleAgentFactory implements ParameterFactory {
  74.416 +        public Parameter createParameter(final String name,
  74.417 +                final String value) throws URISyntaxException {
  74.418 +            final ScheduleAgent parameter = new ScheduleAgent(value);
  74.419 +            if (ScheduleAgent.SERVER.equals(parameter)) {
  74.420 +                return ScheduleAgent.SERVER;
  74.421 +            }
  74.422 +            else if (ScheduleAgent.CLIENT.equals(parameter)) {
  74.423 +                return ScheduleAgent.CLIENT;
  74.424 +            }
  74.425 +            else if (ScheduleAgent.NONE.equals(parameter)) {
  74.426 +                return ScheduleAgent.NONE;
  74.427 +            }
  74.428 +            return parameter;
  74.429 +        }
  74.430 +    }
  74.431 +
  74.432 +    private static class ScheduleStatusFactory implements ParameterFactory {
  74.433 +        public Parameter createParameter(final String name, 
  74.434 +        		final String value) throws URISyntaxException {
  74.435 +            return new ScheduleStatus(value);
  74.436 +        }
  74.437 +    }
  74.438 +    
  74.439 +    private static class SentByFactory implements ParameterFactory {
  74.440 +        private static final long serialVersionUID = 1L;
  74.441 +
  74.442 +        public Parameter createParameter(final String name,
  74.443 +                final String value) throws URISyntaxException {
  74.444 +            return new SentBy(value);
  74.445 +        }
  74.446 +    }
  74.447 +    
  74.448 +    private static class VvenueFactory implements ParameterFactory {
  74.449 +        private static final long serialVersionUID = 1L;
  74.450 +
  74.451 +        public Parameter createParameter(final String name, final String value)
  74.452 +                throws URISyntaxException {
  74.453 +            return new Vvenue(value);
  74.454 +        }
  74.455 +    }
  74.456 +    
  74.457 +    private static class TypeFactory implements ParameterFactory {
  74.458 +        private static final long serialVersionUID = 1L;
  74.459 +
  74.460 +        public Parameter createParameter(final String name,
  74.461 +                final String value) throws URISyntaxException {
  74.462 +            return new Type(value);
  74.463 +        }
  74.464 +    }
  74.465 +    
  74.466 +    private static class TzIdFactory implements ParameterFactory {
  74.467 +        private static final long serialVersionUID = 1L;
  74.468 +
  74.469 +        public Parameter createParameter(final String name,
  74.470 +                final String value) throws URISyntaxException {
  74.471 +            return new TzId(Strings.unescape(value));
  74.472 +        }
  74.473 +    }
  74.474 +    
  74.475 +    private static class ValueFactory implements ParameterFactory {
  74.476 +        private static final long serialVersionUID = 1L;
  74.477 +
  74.478 +        public Parameter createParameter(final String name,
  74.479 +                final String value) throws URISyntaxException {
  74.480 +            Value parameter = new Value(value);
  74.481 +            if (Value.BINARY.equals(parameter)) {
  74.482 +                parameter = Value.BINARY;
  74.483 +            }
  74.484 +            else if (Value.BOOLEAN.equals(parameter)) {
  74.485 +                parameter = Value.BOOLEAN;
  74.486 +            }
  74.487 +            else if (Value.CAL_ADDRESS.equals(parameter)) {
  74.488 +                parameter = Value.CAL_ADDRESS;
  74.489 +            }
  74.490 +            else if (Value.DATE.equals(parameter)) {
  74.491 +                parameter = Value.DATE;
  74.492 +            }
  74.493 +            else if (Value.DATE_TIME.equals(parameter)) {
  74.494 +                parameter = Value.DATE_TIME;
  74.495 +            }
  74.496 +            else if (Value.DURATION.equals(parameter)) {
  74.497 +                parameter = Value.DURATION;
  74.498 +            }
  74.499 +            else if (Value.FLOAT.equals(parameter)) {
  74.500 +                parameter = Value.FLOAT;
  74.501 +            }
  74.502 +            else if (Value.INTEGER.equals(parameter)) {
  74.503 +                parameter = Value.INTEGER;
  74.504 +            }
  74.505 +            else if (Value.PERIOD.equals(parameter)) {
  74.506 +                parameter = Value.PERIOD;
  74.507 +            }
  74.508 +            else if (Value.RECUR.equals(parameter)) {
  74.509 +                parameter = Value.RECUR;
  74.510 +            }
  74.511 +            else if (Value.TEXT.equals(parameter)) {
  74.512 +                parameter = Value.TEXT;
  74.513 +            }
  74.514 +            else if (Value.TIME.equals(parameter)) {
  74.515 +                parameter = Value.TIME;
  74.516 +            }
  74.517 +            else if (Value.URI.equals(parameter)) {
  74.518 +                parameter = Value.URI;
  74.519 +            }
  74.520 +            else if (Value.UTC_OFFSET.equals(parameter)) {
  74.521 +                parameter = Value.UTC_OFFSET;
  74.522 +            }
  74.523 +            return parameter;
  74.524 +        }
  74.525 +    }
  74.526 +    
  74.527 +}
    75.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    75.2 +++ b/src/net/fortuna/ical4j/model/ParameterFactoryRegistry.java	Tue Feb 10 18:12:00 2015 +0100
    75.3 @@ -0,0 +1,49 @@
    75.4 +/**
    75.5 + * Copyright (c) 2012, Ben Fortuna
    75.6 + * All rights reserved.
    75.7 + *
    75.8 + * Redistribution and use in source and binary forms, with or without
    75.9 + * modification, are permitted provided that the following conditions
   75.10 + * are met:
   75.11 + *
   75.12 + *  o Redistributions of source code must retain the above copyright
   75.13 + * notice, this list of conditions and the following disclaimer.
   75.14 + *
   75.15 + *  o Redistributions in binary form must reproduce the above copyright
   75.16 + * notice, this list of conditions and the following disclaimer in the
   75.17 + * documentation and/or other materials provided with the distribution.
   75.18 + *
   75.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
   75.20 + * may be used to endorse or promote products derived from this software
   75.21 + * without specific prior written permission.
   75.22 + *
   75.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   75.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   75.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   75.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
   75.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   75.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   75.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   75.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   75.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   75.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   75.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   75.34 + */
   75.35 +package net.fortuna.ical4j.model;
   75.36 +
   75.37 +/**
   75.38 + * @author fortuna
   75.39 + *
   75.40 + */
   75.41 +public final class ParameterFactoryRegistry extends ParameterFactoryImpl {
   75.42 +
   75.43 +    private static final long serialVersionUID = -3372324894953715583L;
   75.44 +
   75.45 +    /**
   75.46 +     * @param name a non-standard parameter name
   75.47 +     * @param factory a factory for the non-standard parameter
   75.48 +     */
   75.49 +    public void register(String name, ParameterFactory factory) {
   75.50 +        registerExtendedFactory(name, factory);
   75.51 +    }
   75.52 +}
    76.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    76.2 +++ b/src/net/fortuna/ical4j/model/ParameterList.java	Tue Feb 10 18:12:00 2015 +0100
    76.3 @@ -0,0 +1,232 @@
    76.4 +/**
    76.5 + * Copyright (c) 2012, Ben Fortuna
    76.6 + * All rights reserved.
    76.7 + *
    76.8 + * Redistribution and use in source and binary forms, with or without
    76.9 + * modification, are permitted provided that the following conditions
   76.10 + * are met:
   76.11 + *
   76.12 + *  o Redistributions of source code must retain the above copyright
   76.13 + * notice, this list of conditions and the following disclaimer.
   76.14 + *
   76.15 + *  o Redistributions in binary form must reproduce the above copyright
   76.16 + * notice, this list of conditions and the following disclaimer in the
   76.17 + * documentation and/or other materials provided with the distribution.
   76.18 + *
   76.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
   76.20 + * may be used to endorse or promote products derived from this software
   76.21 + * without specific prior written permission.
   76.22 + *
   76.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   76.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   76.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   76.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
   76.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   76.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   76.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   76.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   76.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   76.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   76.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   76.34 + */
   76.35 +package net.fortuna.ical4j.model;
   76.36 +
   76.37 +import java.io.Serializable;
   76.38 +import java.net.URISyntaxException;
   76.39 +import java.util.ArrayList;
   76.40 +import java.util.Collections;
   76.41 +import java.util.Iterator;
   76.42 +import java.util.List;
   76.43 +
   76.44 +import org.apache.commons.lang.ObjectUtils;
   76.45 +import org.apache.commons.lang.builder.HashCodeBuilder;
   76.46 +
   76.47 +import edu.emory.mathcs.backport.java.util.concurrent.CopyOnWriteArrayList;
   76.48 +
   76.49 +/**
   76.50 + * $Id$ [Apr 5, 2004]
   76.51 + *
   76.52 + * Defines a list of iCalendar parameters. A parameter list may be specified as unmodifiable at instantiation - useful
   76.53 + * for constant properties that you don't want modified.
   76.54 + * @author Ben Fortuna
   76.55 + */
   76.56 +public class ParameterList implements Serializable {
   76.57 +
   76.58 +    private static final long serialVersionUID = -1913059830016450169L;
   76.59 +
   76.60 +    private final List parameters;
   76.61 +
   76.62 +    /**
   76.63 +     * Default constructor. Creates a modifiable parameter list.
   76.64 +     */
   76.65 +    public ParameterList() {
   76.66 +        this(false);
   76.67 +    }
   76.68 +
   76.69 +    /**
   76.70 +     * Constructor.
   76.71 +     * @param unmodifiable indicates whether the list should be mutable
   76.72 +     */
   76.73 +    public ParameterList(final boolean unmodifiable) {
   76.74 +        if (unmodifiable) {
   76.75 +            parameters = Collections.unmodifiableList(new ArrayList());
   76.76 +        }
   76.77 +        else {
   76.78 +            parameters = new CopyOnWriteArrayList();
   76.79 +        }
   76.80 +    }
   76.81 +
   76.82 +    /**
   76.83 +     * Creates a deep copy of the specified parameter list. That is, copies of all parameters in the specified list are
   76.84 +     * added to this list.
   76.85 +     * @param list a parameter list to copy parameters from
   76.86 +     * @param unmodifiable indicates whether the list should be mutable
   76.87 +     * @throws URISyntaxException where a parameter in the list specifies an invalid URI value
   76.88 +     */
   76.89 +    public ParameterList(final ParameterList list, final boolean unmodifiable)
   76.90 +            throws URISyntaxException {
   76.91 +    	
   76.92 +        final List parameterList = new CopyOnWriteArrayList();
   76.93 +        for (final Iterator i = list.iterator(); i.hasNext();) {
   76.94 +            final Parameter parameter = (Parameter) i.next();
   76.95 +            parameterList.add(parameter.copy());
   76.96 +        }
   76.97 +        if (unmodifiable) {
   76.98 +            parameters = Collections.unmodifiableList(parameterList);
   76.99 +        }
  76.100 +        else {
  76.101 +        	parameters = parameterList;
  76.102 +        }
  76.103 +    }
  76.104 +
  76.105 +    /**
  76.106 +     * {@inheritDoc}
  76.107 +     */
  76.108 +    public final String toString() {
  76.109 +        final StringBuffer buffer = new StringBuffer();
  76.110 +        for (final Iterator i = parameters.iterator(); i.hasNext();) {
  76.111 +            buffer.append(';');
  76.112 +            buffer.append(i.next().toString());
  76.113 +        }
  76.114 +        return buffer.toString();
  76.115 +    }
  76.116 +
  76.117 +    /**
  76.118 +     * Returns the first parameter with the specified name.
  76.119 +     * @param aName name of the parameter
  76.120 +     * @return the first matching parameter or null if no matching parameters
  76.121 +     */
  76.122 +    public final Parameter getParameter(final String aName) {
  76.123 +        for (final Iterator i = parameters.iterator(); i.hasNext();) {
  76.124 +            final Parameter p = (Parameter) i.next();
  76.125 +            if (aName.equalsIgnoreCase(p.getName())) {
  76.126 +                return p;
  76.127 +            }
  76.128 +        }
  76.129 +        return null;
  76.130 +    }
  76.131 +
  76.132 +    /**
  76.133 +     * Returns a list of parameters with the specified name.
  76.134 +     * @param name name of parameters to return
  76.135 +     * @return a parameter list
  76.136 +     */
  76.137 +    public final ParameterList getParameters(final String name) {
  76.138 +        final ParameterList list = new ParameterList();
  76.139 +        for (final Iterator i = parameters.iterator(); i.hasNext();) {
  76.140 +            final Parameter p = (Parameter) i.next();
  76.141 +            if (p.getName().equalsIgnoreCase(name)) {
  76.142 +                list.add(p);
  76.143 +            }
  76.144 +        }
  76.145 +        return list;
  76.146 +    }
  76.147 +
  76.148 +    /**
  76.149 +     * Add a parameter to the list. Note that this method will not remove existing parameters of the same type. To
  76.150 +     * achieve this use {
  76.151 +     * @link ParameterList#replace(Parameter) }
  76.152 +     * @param parameter the parameter to add
  76.153 +     * @return true
  76.154 +     * @see List#add(java.lang.Object)
  76.155 +     */
  76.156 +    public final boolean add(final Parameter parameter) {
  76.157 +        if (parameter == null) {
  76.158 +            throw new IllegalArgumentException("Trying to add null Parameter");
  76.159 +        }
  76.160 +        return parameters.add(parameter);
  76.161 +    }
  76.162 +
  76.163 +    /**
  76.164 +     * Replace any parameters of the same type with the one specified.
  76.165 +     * @param parameter parameter to add to this list in place of all others with the same name
  76.166 +     * @return true if successfully added to this list
  76.167 +     */
  76.168 +    public final boolean replace(final Parameter parameter) {
  76.169 +        for (final Iterator i = getParameters(parameter.getName()).iterator(); i.hasNext();) {
  76.170 +            remove((Parameter) i.next());
  76.171 +        }
  76.172 +        return add(parameter);
  76.173 +    }
  76.174 +
  76.175 +    /**
  76.176 +     * @return boolean indicates if the list is empty
  76.177 +     * @see List#isEmpty()
  76.178 +     */
  76.179 +    public final boolean isEmpty() {
  76.180 +        return parameters.isEmpty();
  76.181 +    }
  76.182 +
  76.183 +    /**
  76.184 +     * @return an iterator
  76.185 +     * @see List#iterator()
  76.186 +     */
  76.187 +    public final Iterator iterator() {
  76.188 +        return parameters.iterator();
  76.189 +    }
  76.190 +
  76.191 +    /**
  76.192 +     * Remove a parameter from the list.
  76.193 +     * @param parameter the parameter to remove
  76.194 +     * @return true if the list contained the specified parameter
  76.195 +     * @see List#remove(java.lang.Object)
  76.196 +     */
  76.197 +    public final boolean remove(final Parameter parameter) {
  76.198 +        return parameters.remove(parameter);
  76.199 +    }
  76.200 +
  76.201 +    /**
  76.202 +     * Remove all parameters with the specified name.
  76.203 +     * @param paramName the name of parameters to remove
  76.204 +     */
  76.205 +    public final void removeAll(final String paramName) {
  76.206 +        final ParameterList params = getParameters(paramName);
  76.207 +        parameters.removeAll(params.parameters);
  76.208 +    }
  76.209 +    
  76.210 +    /**
  76.211 +     * @return the number of parameters in the list
  76.212 +     * @see List#size()
  76.213 +     */
  76.214 +    public final int size() {
  76.215 +        return parameters.size();
  76.216 +    }
  76.217 +
  76.218 +    /**
  76.219 +     * {@inheritDoc}
  76.220 +     */
  76.221 +    public final boolean equals(final Object arg0) {
  76.222 +        if (arg0 instanceof ParameterList) {
  76.223 +            final ParameterList p = (ParameterList) arg0;
  76.224 +            return ObjectUtils.equals(parameters, p.parameters);
  76.225 +        }
  76.226 +        return super.equals(arg0);
  76.227 +    }
  76.228 +
  76.229 +    /**
  76.230 +     * {@inheritDoc}
  76.231 +     */
  76.232 +    public final int hashCode() {
  76.233 +        return new HashCodeBuilder().append(parameters).toHashCode();
  76.234 +    }
  76.235 +}
    77.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    77.2 +++ b/src/net/fortuna/ical4j/model/Period.java	Tue Feb 10 18:12:00 2015 +0100
    77.3 @@ -0,0 +1,371 @@
    77.4 +/**
    77.5 + * Copyright (c) 2012, Ben Fortuna
    77.6 + * All rights reserved.
    77.7 + *
    77.8 + * Redistribution and use in source and binary forms, with or without
    77.9 + * modification, are permitted provided that the following conditions
   77.10 + * are met:
   77.11 + *
   77.12 + *  o Redistributions of source code must retain the above copyright
   77.13 + * notice, this list of conditions and the following disclaimer.
   77.14 + *
   77.15 + *  o Redistributions in binary form must reproduce the above copyright
   77.16 + * notice, this list of conditions and the following disclaimer in the
   77.17 + * documentation and/or other materials provided with the distribution.
   77.18 + *
   77.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
   77.20 + * may be used to endorse or promote products derived from this software
   77.21 + * without specific prior written permission.
   77.22 + *
   77.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   77.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   77.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   77.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
   77.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   77.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   77.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   77.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   77.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   77.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   77.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   77.34 + */
   77.35 +package net.fortuna.ical4j.model;
   77.36 +
   77.37 +import java.text.ParseException;
   77.38 +import java.util.Date;
   77.39 +
   77.40 +import org.apache.commons.lang.builder.EqualsBuilder;
   77.41 +import org.apache.commons.lang.builder.HashCodeBuilder;
   77.42 +
   77.43 +/**
   77.44 + * $Id$ [Apr 14, 2004]
   77.45 + *
   77.46 + * Defines a period of time. A period may be specified as either a start date
   77.47 + * and end date, or a start date and duration. NOTE: End dates and durations are
   77.48 + * implicitly derived when not explicitly specified. This means that you cannot
   77.49 + * rely on the returned values from the getters to deduce whether a period has
   77.50 + * an explicit end date or duration.
   77.51 + * 
   77.52 + * @author Ben Fortuna
   77.53 + */
   77.54 +public class Period extends DateRange implements Comparable {
   77.55 +    
   77.56 +    private static final long serialVersionUID = 7321090422911676490L;
   77.57 +
   77.58 +    private Dur duration;
   77.59 +
   77.60 +    /**
   77.61 +     * Constructor.
   77.62 +     * 
   77.63 +     * @param aValue
   77.64 +     *            a string representation of a period
   77.65 +     * @throws ParseException
   77.66 +     *             where the specified string is not a valid representation
   77.67 +     */
   77.68 +    public Period(final String aValue) throws ParseException {
   77.69 +        super(parseStartDate(aValue), parseEndDate(aValue, true));
   77.70 +
   77.71 +        // period may end in either a date-time or a duration..
   77.72 +        try {
   77.73 +            parseEndDate(aValue, false);
   77.74 +        }
   77.75 +        catch (ParseException pe) {
   77.76 +            // duration = DurationFormat.getInstance().parse(aValue);
   77.77 +            duration = parseDuration(aValue);
   77.78 +        }
   77.79 +        normalise();
   77.80 +    }
   77.81 +
   77.82 +    /**
   77.83 +     * Constructs a new period with the specied start and end date.
   77.84 +     * 
   77.85 +     * @param start
   77.86 +     *            the start date of the period
   77.87 +     * @param end
   77.88 +     *            the end date of the period
   77.89 +     */
   77.90 +    public Period(final DateTime start, final DateTime end) {
   77.91 +        super(start, end);
   77.92 +        normalise();
   77.93 +    }
   77.94 +
   77.95 +    /**
   77.96 +     * Constructs a new period with the specified start date and duration.
   77.97 +     * 
   77.98 +     * @param start
   77.99 +     *            the start date of the period
  77.100 +     * @param duration
  77.101 +     *            the duration of the period
  77.102 +     */
  77.103 +    public Period(final DateTime start, final Dur duration) {
  77.104 +        super(start, new DateTime(duration.getTime(start)));
  77.105 +        this.duration = duration;
  77.106 +        normalise();
  77.107 +    }
  77.108 +
  77.109 +    private static DateTime parseStartDate(String value) throws ParseException {
  77.110 +        return new DateTime(value.substring(0, value.indexOf('/')));
  77.111 +    }
  77.112 +    
  77.113 +    private static DateTime parseEndDate(String value, boolean resolve) throws ParseException {
  77.114 +        DateTime end = null;
  77.115 +        try {
  77.116 +            end = new DateTime(value.substring(value.indexOf('/') + 1));
  77.117 +        }
  77.118 +        catch (ParseException e) {
  77.119 +            if (resolve) {
  77.120 +                final Dur duration = parseDuration(value);
  77.121 +                end = new DateTime(duration.getTime(parseStartDate(value)));
  77.122 +            }
  77.123 +            else {
  77.124 +                throw e;
  77.125 +            }
  77.126 +        }
  77.127 +        return end;
  77.128 +    }
  77.129 +    
  77.130 +    private static Dur parseDuration(String value) {
  77.131 +        return new Dur(value.substring(value.indexOf('/') + 1));
  77.132 +    }
  77.133 +    
  77.134 +    private void normalise() {
  77.135 +        // ensure the end timezone is the same as the start..
  77.136 +        if (getStart().isUtc()) {
  77.137 +            getEnd().setUtc(true);
  77.138 +        }
  77.139 +        else {
  77.140 +            getEnd().setTimeZone(getStart().getTimeZone());
  77.141 +        }
  77.142 +    }
  77.143 +    
  77.144 +    /**
  77.145 +     * Returns the duration of this period. If an explicit duration is not
  77.146 +     * specified, the duration is derived from the end date.
  77.147 +     * 
  77.148 +     * @return the duration of this period in milliseconds.
  77.149 +     */
  77.150 +    public final Dur getDuration() {
  77.151 +        if (duration == null) {
  77.152 +            return new Dur(getStart(), getEnd());
  77.153 +        }
  77.154 +        return duration;
  77.155 +    }
  77.156 +
  77.157 +    /**
  77.158 +     * Returns the end date of this period. If an explicit end date is not
  77.159 +     * specified, the end date is derived from the duration.
  77.160 +     * 
  77.161 +     * @return the end date of this period.
  77.162 +     */
  77.163 +    public final DateTime getEnd() {
  77.164 +        return (DateTime) getRangeEnd();
  77.165 +    }
  77.166 +
  77.167 +    /**
  77.168 +     * @return Returns the start.
  77.169 +     */
  77.170 +    public final DateTime getStart() {
  77.171 +        return (DateTime) getRangeStart();
  77.172 +    }
  77.173 +
  77.174 +    /**
  77.175 +     * @param date a date to test for inclusion
  77.176 +     * @param inclusive indicates if the start and end of the period are included in the test
  77.177 +     * @return true if the specified date occurs within the current period
  77.178 +     * @deprecated use {@link Period#includes(Date, int)} instead.
  77.179 +     */
  77.180 +    public final boolean includes(final Date date, final boolean inclusive) {
  77.181 +        if (inclusive) {
  77.182 +            return includes(date, INCLUSIVE_START | INCLUSIVE_END);
  77.183 +        }
  77.184 +        else {
  77.185 +            return includes(date, 0);
  77.186 +        }
  77.187 +    }
  77.188 +
  77.189 +    /**
  77.190 +     * Creates a period that encompasses both this period and another one. If
  77.191 +     * the other period is null, return a copy of this period. NOTE: Resulting
  77.192 +     * periods are specified by explicitly setting a start date and end date
  77.193 +     * (i.e. durations are implied).
  77.194 +     * 
  77.195 +     * @param period
  77.196 +     *            the period to add to this one
  77.197 +     * @return a period
  77.198 +     */
  77.199 +    public final Period add(final Period period) {
  77.200 +        DateTime newPeriodStart = null;
  77.201 +        DateTime newPeriodEnd = null;
  77.202 +
  77.203 +        if (period == null) {
  77.204 +            newPeriodStart = getStart();
  77.205 +            newPeriodEnd = getEnd();
  77.206 +        }
  77.207 +        else {
  77.208 +            if (getStart().before(period.getStart())) {
  77.209 +                newPeriodStart = getStart();
  77.210 +            }
  77.211 +            else {
  77.212 +                newPeriodStart = period.getStart();
  77.213 +            }
  77.214 +            if (getEnd().after(period.getEnd())) {
  77.215 +                newPeriodEnd = getEnd();
  77.216 +            }
  77.217 +            else {
  77.218 +                newPeriodEnd = period.getEnd();
  77.219 +            }
  77.220 +        }
  77.221 +
  77.222 +        return new Period(newPeriodStart, newPeriodEnd);
  77.223 +    }
  77.224 +    
  77.225 +    /**
  77.226 +     * Creates a set of periods resulting from the subtraction of the specified
  77.227 +     * period from this one. If the specified period is completely contained
  77.228 +     * in this period, the resulting list will contain two periods. Otherwise
  77.229 +     * it will contain one. If the specified period does not interest this period
  77.230 +     * a list containing this period is returned. If this period is completely
  77.231 +     * contained within the specified period an empty period list is returned.
  77.232 +     * @param period a period to subtract from this one
  77.233 +     * @return a list containing zero, one or two periods.
  77.234 +     */
  77.235 +    public final PeriodList subtract(final Period period) {
  77.236 +        final PeriodList result = new PeriodList();
  77.237 +        
  77.238 +        if (period.contains(this)) {
  77.239 +            return result;
  77.240 +        }
  77.241 +        else if (!period.intersects(this)) {
  77.242 +            result.add(this);
  77.243 +            return result;
  77.244 +        }
  77.245 +        
  77.246 +        DateTime newPeriodStart;
  77.247 +        DateTime newPeriodEnd;
  77.248 +        if (!period.getStart().after(getStart())) {
  77.249 +            newPeriodStart = period.getEnd();
  77.250 +            newPeriodEnd = getEnd();
  77.251 +        }
  77.252 +        else if (!period.getEnd().before(getEnd())) {
  77.253 +            newPeriodStart = getStart();
  77.254 +            newPeriodEnd = period.getStart();
  77.255 +        }
  77.256 +        else {
  77.257 +            // subtraction consumed by this period..
  77.258 +            // initialise and add head period..
  77.259 +            newPeriodStart = getStart();
  77.260 +            newPeriodEnd = period.getStart();
  77.261 +            result.add(new Period(newPeriodStart, newPeriodEnd));
  77.262 +            // initialise tail period..
  77.263 +            newPeriodStart = period.getEnd();
  77.264 +            newPeriodEnd = getEnd();
  77.265 +        }
  77.266 +        result.add(new Period(newPeriodStart, newPeriodEnd));
  77.267 +        return result;
  77.268 +    }
  77.269 +    
  77.270 +    /**
  77.271 +     * An empty period is one that consumes no time.
  77.272 +     * @return true if this period consumes no time, otherwise false
  77.273 +     */
  77.274 +    public final boolean isEmpty() {
  77.275 +        return getStart().equals(getEnd());
  77.276 +    }
  77.277 +    
  77.278 +    /**
  77.279 +     * Updates the start and (possible) end times of this period to reflect
  77.280 +     * the specified UTC timezone status.
  77.281 +     * @param utc indicates whether the period is in UTC time
  77.282 +     */
  77.283 +    public void setUtc(final boolean utc) {
  77.284 +        getStart().setUtc(utc);
  77.285 +        getEnd().setUtc(utc);
  77.286 +    }
  77.287 +    
  77.288 +    /**
  77.289 +     * Updates the start and (possible) end times of this period to reflect
  77.290 +     * the specified timezone status.
  77.291 +     * @param timezone a timezone for the period
  77.292 +     */
  77.293 +    public final void setTimeZone(final TimeZone timezone) {
  77.294 +        getStart().setUtc(false);
  77.295 +        getStart().setTimeZone(timezone);
  77.296 +        getEnd().setUtc(false);
  77.297 +        getEnd().setTimeZone(timezone);
  77.298 +    }
  77.299 +    
  77.300 +    /**
  77.301 +     * {@inheritDoc}
  77.302 +     */
  77.303 +    public final String toString() {
  77.304 +        final StringBuffer b = new StringBuffer();
  77.305 +        b.append(getStart());
  77.306 +        b.append('/');
  77.307 +        if (duration == null) {
  77.308 +            b.append(getEnd());
  77.309 +        }
  77.310 +        else {
  77.311 +            // b.append(DurationFormat.getInstance().format(duration));
  77.312 +            b.append(duration);
  77.313 +        }
  77.314 +        return b.toString();
  77.315 +    }
  77.316 +
  77.317 +    /**
  77.318 +     * {@inheritDoc}
  77.319 +     */
  77.320 +    public final int compareTo(final Object arg0) {
  77.321 +        return compareTo((Period) arg0);
  77.322 +    }
  77.323 +
  77.324 +    /**
  77.325 +     * Compares the specified period with this period.
  77.326 +     * 
  77.327 +     * @param arg0 a period to compare with this one
  77.328 +     * @return a postive value if this period is greater, negative if the other is
  77.329 +     * greater, or zero if they are equal
  77.330 +     */
  77.331 +    public final int compareTo(final Period arg0) {
  77.332 +        // Throws documented exception if type is wrong or parameter is null
  77.333 +        if (arg0 == null) {
  77.334 +            throw new ClassCastException("Cannot compare this object to null");
  77.335 +        }
  77.336 +        final int startCompare = getStart().compareTo(arg0.getStart());
  77.337 +        if (startCompare != 0) {
  77.338 +            return startCompare;
  77.339 +        }
  77.340 +        // start dates are equal, compare end dates..
  77.341 +        else if (duration == null) {
  77.342 +            final int endCompare = getEnd().compareTo(arg0.getEnd());
  77.343 +            if (endCompare != 0) {
  77.344 +                return endCompare;
  77.345 +            }
  77.346 +        }
  77.347 +        // ..or durations
  77.348 +        return getDuration().compareTo(arg0.getDuration());
  77.349 +    }
  77.350 +
  77.351 +    /**
  77.352 +     * {@inheritDoc}
  77.353 +     */
  77.354 +    public final boolean equals(final Object o) {
  77.355 +        if (this == o) {
  77.356 +            return true;
  77.357 +        }
  77.358 +        if (!(o instanceof Period)) {
  77.359 +            return false;
  77.360 +        }
  77.361 +
  77.362 +        final Period period = (Period) o;
  77.363 +        return new EqualsBuilder().append(getStart(), period.getStart())
  77.364 +            .append(getEnd(), period.getEnd()).isEquals();
  77.365 +    }
  77.366 +
  77.367 +    /**
  77.368 +     * {@inheritDoc}
  77.369 +     */
  77.370 +    public final int hashCode() {
  77.371 +        return new HashCodeBuilder().append(getStart())
  77.372 +            .append((duration == null) ? (Object) getEnd() : duration).toHashCode();
  77.373 +    }
  77.374 +}
    78.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    78.2 +++ b/src/net/fortuna/ical4j/model/PeriodList.java	Tue Feb 10 18:12:00 2015 +0100
    78.3 @@ -0,0 +1,436 @@
    78.4 +/**
    78.5 + * Copyright (c) 2012, Ben Fortuna
    78.6 + * All rights reserved.
    78.7 + *
    78.8 + * Redistribution and use in source and binary forms, with or without
    78.9 + * modification, are permitted provided that the following conditions
   78.10 + * are met:
   78.11 + *
   78.12 + *  o Redistributions of source code must retain the above copyright
   78.13 + * notice, this list of conditions and the following disclaimer.
   78.14 + *
   78.15 + *  o Redistributions in binary form must reproduce the above copyright
   78.16 + * notice, this list of conditions and the following disclaimer in the
   78.17 + * documentation and/or other materials provided with the distribution.
   78.18 + *
   78.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
   78.20 + * may be used to endorse or promote products derived from this software
   78.21 + * without specific prior written permission.
   78.22 + *
   78.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   78.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   78.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   78.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
   78.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   78.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   78.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   78.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   78.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   78.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   78.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   78.34 + */
   78.35 +package net.fortuna.ical4j.model;
   78.36 +
   78.37 +import java.io.Serializable;
   78.38 +import java.text.ParseException;
   78.39 +import java.util.Collection;
   78.40 +import java.util.Collections;
   78.41 +import java.util.Iterator;
   78.42 +import java.util.Set;
   78.43 +import java.util.StringTokenizer;
   78.44 +import java.util.TreeSet;
   78.45 +
   78.46 +import org.apache.commons.lang.builder.EqualsBuilder;
   78.47 +import org.apache.commons.lang.builder.HashCodeBuilder;
   78.48 +
   78.49 +/**
   78.50 + * $Id$ [23-Apr-2004]
   78.51 + *
   78.52 + * Defines a list of iCalendar periods. NOTE: By implementing the
   78.53 + * <code>java.util.SortedSet</code> interface period lists will always be
   78.54 + * sorted according to natural ordering.
   78.55 + * 
   78.56 + * @author Ben Fortuna
   78.57 + */
   78.58 +public class PeriodList implements Set, Serializable {
   78.59 +
   78.60 +	private static final long serialVersionUID = -2317587285790834492L;
   78.61 +
   78.62 +	private final Set periods;
   78.63 +    
   78.64 +    private TimeZone timezone;
   78.65 +    
   78.66 +    private boolean utc;
   78.67 +
   78.68 +    private final boolean unmodifiable;
   78.69 +
   78.70 +    /**
   78.71 +     * Default constructor.
   78.72 +     */
   78.73 +    public PeriodList() {
   78.74 +        this(true);
   78.75 +    }
   78.76 +
   78.77 +    /**
   78.78 +     * @param utc indicates whether the period list is in UTC time
   78.79 +     */
   78.80 +    public PeriodList(boolean utc) {
   78.81 +    	this(utc, false);
   78.82 +    }
   78.83 +
   78.84 +    /**
   78.85 +     * @param utc indicates whether the period list is in UTC time
   78.86 +     */
   78.87 +    public PeriodList(boolean utc, final boolean unmodifiable) {
   78.88 +        this.utc = utc;
   78.89 +        this.unmodifiable = unmodifiable;
   78.90 +        if (unmodifiable) {
   78.91 +        	periods = Collections.EMPTY_SET;
   78.92 +        }
   78.93 +        else {
   78.94 +        	periods = new TreeSet();
   78.95 +        }
   78.96 +    }
   78.97 +    
   78.98 +    /**
   78.99 +     * Parses the specified string representation to create a list of periods.
  78.100 +     * 
  78.101 +     * @param aValue
  78.102 +     *            a string representation of a list of periods
  78.103 +     * @throws ParseException
  78.104 +     *             thrown when an invalid string representation of a period list
  78.105 +     *             is specified
  78.106 +     */
  78.107 +    public PeriodList(final String aValue) throws ParseException {
  78.108 +        this();
  78.109 +        final StringTokenizer t = new StringTokenizer(aValue, ",");
  78.110 +        while (t.hasMoreTokens()) {
  78.111 +            add((Object) new Period(t.nextToken()));
  78.112 +        }
  78.113 +    }
  78.114 +
  78.115 +    /**
  78.116 +     * {@inheritDoc}
  78.117 +     */
  78.118 +    public final String toString() {
  78.119 +        final StringBuffer b = new StringBuffer();
  78.120 +        for (final Iterator i = iterator(); i.hasNext();) {
  78.121 +            b.append(i.next().toString());
  78.122 +            if (i.hasNext()) {
  78.123 +                b.append(',');
  78.124 +            }
  78.125 +        }
  78.126 +        return b.toString();
  78.127 +    }
  78.128 +
  78.129 +    /**
  78.130 +     * Add a period to the list.
  78.131 +     * 
  78.132 +     * @param period
  78.133 +     *            the period to add
  78.134 +     * @return true
  78.135 +     * @see java.util.List#add(java.lang.Object)
  78.136 +     */
  78.137 +    public final boolean add(final Period period) {
  78.138 +        if (isUtc()) {
  78.139 +            period.setUtc(true);
  78.140 +        }
  78.141 +        else {
  78.142 +            period.setTimeZone(timezone);
  78.143 +        }
  78.144 +        return add((Object) period);
  78.145 +    }
  78.146 +
  78.147 +    /**
  78.148 +     * Overrides superclass to throw an <code>IllegalArgumentException</code>
  78.149 +     * where argument is not a <code>net.fortuna.ical4j.model.Period</code>.
  78.150 +     * @param period a period to add to the list
  78.151 +     * @return true if the period was added, otherwise false
  78.152 +     * @see java.util.List#add(E)
  78.153 +     */
  78.154 +    public final boolean add(final Object period) {
  78.155 +        if (!(period instanceof Period)) {
  78.156 +            throw new IllegalArgumentException("Argument not a "
  78.157 +                    + Period.class.getName());
  78.158 +        }
  78.159 +        return periods.add(period);
  78.160 +    }
  78.161 +
  78.162 +    /**
  78.163 +     * Remove a period from the list.
  78.164 +     * 
  78.165 +     * @param period
  78.166 +     *            the period to remove
  78.167 +     * @return true if the list contained the specified period
  78.168 +     * @see java.util.List#remove(java.lang.Object)
  78.169 +     */
  78.170 +    public final boolean remove(final Period period) {
  78.171 +        return remove((Object) period);
  78.172 +    }
  78.173 +
  78.174 +    /**
  78.175 +     * Returns a normalised version of this period list. Normalisation includes
  78.176 +     * combining overlapping periods, removing periods contained by other
  78.177 +     * periods, combining adjacent periods, and removing periods that consume
  78.178 +     * no time. NOTE: If the period list is
  78.179 +     * already normalised then this period list is returned.
  78.180 +     * 
  78.181 +     * @return a period list
  78.182 +     */
  78.183 +    public final PeriodList normalise() {
  78.184 +        Period prevPeriod = null;
  78.185 +        Period period = null;
  78.186 +        final PeriodList newList = new PeriodList(isUtc());
  78.187 +        if (timezone != null) {
  78.188 +            newList.setTimeZone(timezone);
  78.189 +        }
  78.190 +        boolean normalised = false;
  78.191 +        for (final Iterator i = iterator(); i.hasNext();) {
  78.192 +            period = (Period) i.next();
  78.193 +            if (period.isEmpty()) {
  78.194 +                period = prevPeriod;
  78.195 +                normalised = true;
  78.196 +            }
  78.197 +            else if (prevPeriod != null) {
  78.198 +                // ignore periods contained by other periods..
  78.199 +                if (prevPeriod.contains(period)) {
  78.200 +                    period = prevPeriod;
  78.201 +                    normalised = true;
  78.202 +                }
  78.203 +                // combine intersecting periods..
  78.204 +                else if (prevPeriod.intersects(period)) {
  78.205 +                    period = prevPeriod.add(period);
  78.206 +                    normalised = true;
  78.207 +                }
  78.208 +                // combine adjacent periods..
  78.209 +                else if (prevPeriod.adjacent(period)) {
  78.210 +                    period = prevPeriod.add(period);
  78.211 +                    normalised = true;
  78.212 +                }
  78.213 +                else {
  78.214 +                    // if current period is recognised as distinct
  78.215 +                    // from previous period, add the previous period
  78.216 +                    // to the list..
  78.217 +                    newList.add(prevPeriod);
  78.218 +                }
  78.219 +            }
  78.220 +            prevPeriod = period;
  78.221 +        }
  78.222 +        // remember to add the last period to the list..
  78.223 +        if (prevPeriod != null) {
  78.224 +            newList.add(prevPeriod);
  78.225 +        }
  78.226 +        // only return new list if normalisation
  78.227 +        // has ocurred..
  78.228 +        if (normalised) {
  78.229 +            return newList;
  78.230 +        }
  78.231 +        else {
  78.232 +            return this;
  78.233 +	}
  78.234 +    }
  78.235 +
  78.236 +    /**
  78.237 +     * A convenience method that combines all the periods in the specified list to
  78.238 +     * this list. The result returned is a new PeriodList instance, except where
  78.239 +     * no periods are specified in the arguments. In such cases this instance is returned.
  78.240 +     * 
  78.241 +     * Normalisation is also performed automatically after all periods have been added.
  78.242 +     * 
  78.243 +     * @param periods a list of periods to add
  78.244 +     * @return a period list instance
  78.245 +     */
  78.246 +    public final PeriodList add(final PeriodList periods) {
  78.247 +        if (periods != null) {
  78.248 +            final PeriodList newList = new PeriodList();
  78.249 +            newList.addAll(this);
  78.250 +            for (final Iterator i = periods.iterator(); i.hasNext();) {
  78.251 +                newList.add((Period) i.next());
  78.252 +            }
  78.253 +            return newList.normalise();
  78.254 +        }
  78.255 +        return this;
  78.256 +    }
  78.257 +
  78.258 +    /**
  78.259 +     * Subtracts the intersection of this list with the specified list of
  78.260 +     * periods from this list and returns the results as a new period list. If
  78.261 +     * no intersection is identified this list is returned.
  78.262 +     * 
  78.263 +     * @param subtractions
  78.264 +     *            a list of periods to subtract from this list
  78.265 +     * @return a period list
  78.266 +     */
  78.267 +    public final PeriodList subtract(final PeriodList subtractions) {
  78.268 +        if (subtractions == null || subtractions.isEmpty()) {
  78.269 +            return this;
  78.270 +        }
  78.271 +        
  78.272 +        PeriodList result = this;
  78.273 +        PeriodList tmpResult = new PeriodList();
  78.274 +
  78.275 +        for (final Iterator i = subtractions.iterator(); i.hasNext();) {
  78.276 +            final Period subtraction = (Period) i.next();
  78.277 +            for (final Iterator j = result.iterator(); j.hasNext();) {
  78.278 +                final Period period = (Period) j.next();
  78.279 +                tmpResult.addAll(period.subtract(subtraction));
  78.280 +            }
  78.281 +            result = tmpResult;
  78.282 +            tmpResult = new PeriodList();
  78.283 +        }
  78.284 +
  78.285 +        return result;
  78.286 +    }
  78.287 +
  78.288 +    public final boolean isUnmodifiable() {
  78.289 +        return unmodifiable;
  78.290 +    }
  78.291 +
  78.292 +    /**
  78.293 +     * Indicates whether this list is in local or UTC format.
  78.294 +     * @return Returns true if in UTC format, otherwise false.
  78.295 +     */
  78.296 +    public final boolean isUtc() {
  78.297 +        return utc;
  78.298 +    }
  78.299 +
  78.300 +    /**
  78.301 +     * Sets whether this list is in UTC or local time format.
  78.302 +     * @param utc The utc to set.
  78.303 +     */
  78.304 +    public final void setUtc(final boolean utc) {
  78.305 +        for (final Iterator i = iterator(); i.hasNext();) {
  78.306 +            final Period period = (Period) i.next();
  78.307 +            period.setUtc(utc);
  78.308 +        }
  78.309 +        this.timezone = null;
  78.310 +        this.utc = utc;
  78.311 +    }
  78.312 +    
  78.313 +    /**
  78.314 +     * Applies the specified timezone to all dates in the list.
  78.315 +     * All dates added to this list will also have this timezone
  78.316 +     * applied.
  78.317 +     * @param timeZone the timezone for the period list
  78.318 +     */
  78.319 +    public final void setTimeZone(final TimeZone timeZone) {
  78.320 +        for (final Iterator i = iterator(); i.hasNext();) {
  78.321 +            final Period period = (Period) i.next();
  78.322 +            period.setTimeZone(timeZone);
  78.323 +        }
  78.324 +        this.timezone = timeZone;
  78.325 +        this.utc = false;
  78.326 +    }
  78.327 +
  78.328 +    /**
  78.329 +     * @return Returns the timeZone.
  78.330 +     */
  78.331 +    public final TimeZone getTimeZone() {
  78.332 +        return timezone;
  78.333 +    }
  78.334 +
  78.335 +	/**
  78.336 +	 * {@inheritDoc}
  78.337 +	 */
  78.338 +	public final boolean addAll(Collection arg0) {
  78.339 +		for (Iterator i = arg0.iterator(); i.hasNext();) {
  78.340 +			add(i.next());
  78.341 +		}
  78.342 +		return true;
  78.343 +	}
  78.344 +
  78.345 +	/**
  78.346 +	 * {@inheritDoc}
  78.347 +	 */
  78.348 +	public final void clear() {
  78.349 +		periods.clear();
  78.350 +	}
  78.351 +
  78.352 +	/**
  78.353 +	 * {@inheritDoc}
  78.354 +	 */
  78.355 +	public final boolean contains(Object o) {
  78.356 +		return periods.contains(o);
  78.357 +	}
  78.358 +
  78.359 +	/**
  78.360 +	 * {@inheritDoc}
  78.361 +	 */
  78.362 +	public final boolean containsAll(Collection arg0) {
  78.363 +		return periods.containsAll(arg0);
  78.364 +	}
  78.365 +
  78.366 +	/**
  78.367 +	 * {@inheritDoc}
  78.368 +	 */
  78.369 +	public final boolean isEmpty() {
  78.370 +		return periods.isEmpty();
  78.371 +	}
  78.372 +
  78.373 +	/**
  78.374 +	 * {@inheritDoc}
  78.375 +	 */
  78.376 +	public final Iterator iterator() {
  78.377 +		return periods.iterator();
  78.378 +	}
  78.379 +
  78.380 +	/**
  78.381 +	 * {@inheritDoc}
  78.382 +	 */
  78.383 +	public final boolean remove(Object o) {
  78.384 +		return periods.remove(o);
  78.385 +	}
  78.386 +
  78.387 +	/**
  78.388 +	 * {@inheritDoc}
  78.389 +	 */
  78.390 +	public final boolean removeAll(Collection arg0) {
  78.391 +		return periods.removeAll(arg0);
  78.392 +	}
  78.393 +
  78.394 +	/**
  78.395 +	 * {@inheritDoc}
  78.396 +	 */
  78.397 +	public final boolean retainAll(Collection arg0) {
  78.398 +		return periods.retainAll(arg0);
  78.399 +	}
  78.400 +
  78.401 +	/**
  78.402 +	 * {@inheritDoc}
  78.403 +	 */
  78.404 +	public final int size() {
  78.405 +		return periods.size();
  78.406 +	}
  78.407 +
  78.408 +	/**
  78.409 +	 * {@inheritDoc}
  78.410 +	 */
  78.411 +	public final Object[] toArray() {
  78.412 +		return periods.toArray();
  78.413 +	}
  78.414 +
  78.415 +	/**
  78.416 +	 * {@inheritDoc}
  78.417 +	 */
  78.418 +	public final Object[] toArray(Object[] arg0) {
  78.419 +		return periods.toArray(arg0);
  78.420 +	}
  78.421 +	
  78.422 +	public final boolean equals(Object obj) {
  78.423 +		if (!getClass().isAssignableFrom(obj.getClass())) {
  78.424 +			return false;
  78.425 +		}
  78.426 +		final PeriodList rhs = (PeriodList) obj;
  78.427 +		return new EqualsBuilder().append(periods, rhs.periods)
  78.428 +			.append(timezone, rhs.timezone)
  78.429 +			.append(utc, utc)
  78.430 +			.isEquals();
  78.431 +	}
  78.432 +	
  78.433 +	public final int hashCode() {
  78.434 +		return new HashCodeBuilder().append(periods)
  78.435 +			.append(timezone)
  78.436 +			.append(utc)
  78.437 +			.toHashCode();
  78.438 +	}
  78.439 +}
    79.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    79.2 +++ b/src/net/fortuna/ical4j/model/Property.java	Tue Feb 10 18:12:00 2015 +0100
    79.3 @@ -0,0 +1,537 @@
    79.4 +/**
    79.5 + * Copyright (c) 2012, Ben Fortuna
    79.6 + * All rights reserved.
    79.7 + *
    79.8 + * Redistribution and use in source and binary forms, with or without
    79.9 + * modification, are permitted provided that the following conditions
   79.10 + * are met:
   79.11 + *
   79.12 + *  o Redistributions of source code must retain the above copyright
   79.13 + * notice, this list of conditions and the following disclaimer.
   79.14 + *
   79.15 + *  o Redistributions in binary form must reproduce the above copyright
   79.16 + * notice, this list of conditions and the following disclaimer in the
   79.17 + * documentation and/or other materials provided with the distribution.
   79.18 + *
   79.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
   79.20 + * may be used to endorse or promote products derived from this software
   79.21 + * without specific prior written permission.
   79.22 + *
   79.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   79.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   79.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   79.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
   79.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   79.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   79.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   79.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   79.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   79.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   79.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   79.34 + */
   79.35 +package net.fortuna.ical4j.model;
   79.36 +
   79.37 +import java.io.IOException;
   79.38 +import java.net.URISyntaxException;
   79.39 +import java.text.ParseException;
   79.40 +import net.fortuna.ical4j.model.parameter.Value;
   79.41 +import net.fortuna.ical4j.model.property.XProperty;
   79.42 +
   79.43 +import net.fortuna.ical4j.util.Strings;
   79.44 +
   79.45 +import org.apache.commons.lang.builder.EqualsBuilder;
   79.46 +import org.apache.commons.lang.builder.HashCodeBuilder;
   79.47 +
   79.48 +/**
   79.49 + * Defines an iCalendar property. Subclasses of this class provide additional validation and typed values for specific
   79.50 + * iCalendar properties.
   79.51 + * 
   79.52 + * Note that subclasses must provide a reference to the factory used to create the
   79.53 + * property to support property cloning (copy). If no factory is specified an
   79.54 + * {@link UnsupportedOperationException} will be thrown by the {@link #copy()} method.
   79.55 + * 
   79.56 + * @author Ben Fortuna
   79.57 + * 
   79.58 + * $Id$ [Apr 5, 2004]
   79.59 + */
   79.60 +public abstract class Property extends Content {
   79.61 +
   79.62 +    private static final long serialVersionUID = 7048785558435608687L;
   79.63 +
   79.64 +    // iCalendar properties..
   79.65 +
   79.66 +    /**
   79.67 +     * Product identifier property name.
   79.68 +     */
   79.69 +    public static final String PRODID = "PRODID";
   79.70 +
   79.71 +    /**
   79.72 +     * iCalendar version property name.
   79.73 +     */
   79.74 +    public static final String VERSION = "VERSION";
   79.75 +
   79.76 +    /**
   79.77 +     * Calendar scale property name.
   79.78 +     */
   79.79 +    public static final String CALSCALE = "CALSCALE";
   79.80 +
   79.81 +    /**
   79.82 +     * iTIP method property name.
   79.83 +     */
   79.84 +    public static final String METHOD = "METHOD";
   79.85 +
   79.86 +    // Component properties..
   79.87 +
   79.88 +    /**
   79.89 +     * Busy type property name.
   79.90 +     */
   79.91 +    public static final String BUSYTYPE = "BUSYTYPE";
   79.92 +
   79.93 +    /**
   79.94 +     * Classifier property name.
   79.95 +     */
   79.96 +    public static final String CLASS = "CLASS";
   79.97 +
   79.98 +    /**
   79.99 +     * Creation date property name.
  79.100 +     */
  79.101 +    public static final String CREATED = "CREATED";
  79.102 +
  79.103 +    /**
  79.104 +     * Description property name.
  79.105 +     */
  79.106 +    public static final String DESCRIPTION = "DESCRIPTION";
  79.107 +
  79.108 +    /**
  79.109 +     * Start date property name.
  79.110 +     */
  79.111 +    public static final String DTSTART = "DTSTART";
  79.112 +
  79.113 +    /**
  79.114 +     * Geographic location property name.
  79.115 +     */
  79.116 +    public static final String GEO = "GEO";
  79.117 +
  79.118 +    /**
  79.119 +     * Last modified date property name.
  79.120 +     */
  79.121 +    public static final String LAST_MODIFIED = "LAST-MODIFIED";
  79.122 +
  79.123 +    /**
  79.124 +     * Location property name.
  79.125 +     */
  79.126 +    public static final String LOCATION = "LOCATION";
  79.127 +
  79.128 +    /**
  79.129 +     * Organiser property name.
  79.130 +     */
  79.131 +    public static final String ORGANIZER = "ORGANIZER";
  79.132 +
  79.133 +    /**
  79.134 +     * Percentage complete property name.
  79.135 +     */
  79.136 +    public static final String PERCENT_COMPLETE = "PERCENT-COMPLETE";
  79.137 +
  79.138 +    /**
  79.139 +     * Prority property name.
  79.140 +     */
  79.141 +    public static final String PRIORITY = "PRIORITY";
  79.142 +
  79.143 +    /**
  79.144 +     * Date-stamp property name.
  79.145 +     */
  79.146 +    public static final String DTSTAMP = "DTSTAMP";
  79.147 +
  79.148 +    /**
  79.149 +     * Sequence property name.
  79.150 +     */
  79.151 +    public static final String SEQUENCE = "SEQUENCE";
  79.152 +
  79.153 +    /**
  79.154 +     * Status property name.
  79.155 +     */
  79.156 +    public static final String STATUS = "STATUS";
  79.157 +
  79.158 +    /**
  79.159 +     * Summary property name.
  79.160 +     */
  79.161 +    public static final String SUMMARY = "SUMMARY";
  79.162 +
  79.163 +    /**
  79.164 +     * Transparency property name.
  79.165 +     */
  79.166 +    public static final String TRANSP = "TRANSP";
  79.167 +
  79.168 +    /**
  79.169 +     * Unique identifier property name.
  79.170 +     */
  79.171 +    public static final String UID = "UID";
  79.172 +
  79.173 +    /**
  79.174 +     * Uniform resource locator property name.
  79.175 +     */
  79.176 +    public static final String URL = "URL";
  79.177 +
  79.178 +    /**
  79.179 +     * Recurrence identifier property name.
  79.180 +     */
  79.181 +    public static final String RECURRENCE_ID = "RECURRENCE-ID";
  79.182 +
  79.183 +    /**
  79.184 +     * Completed date property name.
  79.185 +     */
  79.186 +    public static final String COMPLETED = "COMPLETED";
  79.187 +
  79.188 +    /**
  79.189 +     * Due date property name.
  79.190 +     */
  79.191 +    public static final String DUE = "DUE";
  79.192 +
  79.193 +    /**
  79.194 +     * Free/busy property name.
  79.195 +     */
  79.196 +    public static final String FREEBUSY = "FREEBUSY";
  79.197 +
  79.198 +    /**
  79.199 +     * Timezone identifier property name.
  79.200 +     */
  79.201 +    public static final String TZID = "TZID";
  79.202 +
  79.203 +    /**
  79.204 +     * Timezone name property name.
  79.205 +     */
  79.206 +    public static final String TZNAME = "TZNAME";
  79.207 +
  79.208 +    /**
  79.209 +     * Prior timezone offset property name.
  79.210 +     */
  79.211 +    public static final String TZOFFSETFROM = "TZOFFSETFROM";
  79.212 +
  79.213 +    /**
  79.214 +     * New timezone offset property name.
  79.215 +     */
  79.216 +    public static final String TZOFFSETTO = "TZOFFSETTO";
  79.217 +
  79.218 +    /**
  79.219 +     * URL for timezone definition property name.
  79.220 +     */
  79.221 +    public static final String TZURL = "TZURL";
  79.222 +
  79.223 +    /**
  79.224 +     * Alarm action property name.
  79.225 +     */
  79.226 +    public static final String ACTION = "ACTION";
  79.227 +
  79.228 +    /**
  79.229 +     * Repeat rule property name.
  79.230 +     */
  79.231 +    public static final String REPEAT = "REPEAT";
  79.232 +
  79.233 +    /**
  79.234 +     * Alarm trigger property name.
  79.235 +     */
  79.236 +    public static final String TRIGGER = "TRIGGER";
  79.237 +
  79.238 +    /**
  79.239 +     * Request status property name.
  79.240 +     */
  79.241 +    public static final String REQUEST_STATUS = "REQUEST-STATUS";
  79.242 +
  79.243 +    /**
  79.244 +     * End date property name.
  79.245 +     */
  79.246 +    public static final String DTEND = "DTEND";
  79.247 +
  79.248 +    /**
  79.249 +     * Duration property name.
  79.250 +     */
  79.251 +    public static final String DURATION = "DURATION";
  79.252 +
  79.253 +    /**
  79.254 +     * Attachment property name.
  79.255 +     */
  79.256 +    public static final String ATTACH = "ATTACH";
  79.257 +
  79.258 +    /**
  79.259 +     * Attendee property name.
  79.260 +     */
  79.261 +    public static final String ATTENDEE = "ATTENDEE";
  79.262 +
  79.263 +    /**
  79.264 +     * Categories property name.
  79.265 +     */
  79.266 +    public static final String CATEGORIES = "CATEGORIES";
  79.267 +
  79.268 +    /**
  79.269 +     * Comment property name.
  79.270 +     */
  79.271 +    public static final String COMMENT = "COMMENT";
  79.272 +
  79.273 +    /**
  79.274 +     * Contact property name.
  79.275 +     */
  79.276 +    public static final String CONTACT = "CONTACT";
  79.277 +
  79.278 +    /**
  79.279 +     * Exclusion date property name.
  79.280 +     */
  79.281 +    public static final String EXDATE = "EXDATE";
  79.282 +
  79.283 +    /**
  79.284 +     * Exclusion rule property name.
  79.285 +     */
  79.286 +    public static final String EXRULE = "EXRULE";
  79.287 +
  79.288 +    /**
  79.289 +     * Relationship property name.
  79.290 +     */
  79.291 +    public static final String RELATED_TO = "RELATED-TO";
  79.292 +
  79.293 +    /**
  79.294 +     * Resources property name.
  79.295 +     */
  79.296 +    public static final String RESOURCES = "RESOURCES";
  79.297 +
  79.298 +    /**
  79.299 +     * Recurrence date property name.
  79.300 +     */
  79.301 +    public static final String RDATE = "RDATE";
  79.302 +
  79.303 +    /**
  79.304 +     * Recurrence rule property name.
  79.305 +     */
  79.306 +    public static final String RRULE = "RRULE";
  79.307 +
  79.308 +    /**
  79.309 +     * Prefix for non-standard properties.
  79.310 +     */
  79.311 +    public static final String EXPERIMENTAL_PREFIX = "X-";
  79.312 +
  79.313 +    /**
  79.314 +     * VVENUE country property name.
  79.315 +     */
  79.316 +    public static final String COUNTRY = "COUNTRY";
  79.317 +
  79.318 +    /**
  79.319 +     * VVENUE extended address property name.
  79.320 +     */
  79.321 +    public static final String EXTENDED_ADDRESS = "EXTENDED-ADDRESS";
  79.322 +
  79.323 +    /**
  79.324 +     * VVENUE locality property name.
  79.325 +     */
  79.326 +    public static final String LOCALITY = "LOCALITY";
  79.327 +
  79.328 +    /**
  79.329 +     * VVENUE location type property name.
  79.330 +     */
  79.331 +    public static final String LOCATION_TYPE = "LOCATION-TYPE";
  79.332 +
  79.333 +    /**
  79.334 +     * VVENUE name property name.
  79.335 +     */
  79.336 +    public static final String NAME = "NAME";
  79.337 +
  79.338 +    /**
  79.339 +     * VVENUE postal code property name.
  79.340 +     */
  79.341 +    public static final String POSTALCODE = "POSTAL-CODE";
  79.342 +
  79.343 +    /**
  79.344 +     * VVENUE region property name.
  79.345 +     */
  79.346 +    public static final String REGION = "REGION";
  79.347 +
  79.348 +    /**
  79.349 +     * VVENUE street address property name.
  79.350 +     */
  79.351 +    public static final String STREET_ADDRESS = "STREET-ADDRESS";
  79.352 +
  79.353 +    /**
  79.354 +     * VVENUE telephone property name.
  79.355 +     */
  79.356 +    public static final String TEL = "TEL";
  79.357 +
  79.358 +    private String name;
  79.359 +
  79.360 +    private ParameterList parameters;
  79.361 +
  79.362 +    private final PropertyFactory factory;
  79.363 +    
  79.364 +    /**
  79.365 +     * Constructor.
  79.366 +     * @param aName property name
  79.367 +     * @param factory the factory used to create the property instance
  79.368 +     */
  79.369 +    protected Property(final String aName, PropertyFactory factory) {
  79.370 +        this(aName, new ParameterList(), factory);
  79.371 +    }
  79.372 +
  79.373 +    /**
  79.374 +     * Constructor made protected to enforce the use of <code>PropertyFactory</code> for property instantiation.
  79.375 +     * @param aName property name
  79.376 +     * @param aList a list of parameters
  79.377 +     */
  79.378 +//    protected Property(final String aName, final ParameterList aList) {
  79.379 +//        this(aName, aList, PropertyFactoryImpl.getInstance());
  79.380 +//    }
  79.381 +
  79.382 +    /**
  79.383 +     * @param aName a property identifier
  79.384 +     * @param aList a list of initial parameters
  79.385 +     * @param factory the factory used to create the property instance
  79.386 +     */
  79.387 +    protected Property(final String aName, final ParameterList aList, PropertyFactory factory) {
  79.388 +        this.name = aName;
  79.389 +        this.parameters = aList;
  79.390 +        this.factory = factory;
  79.391 +    }
  79.392 +    
  79.393 +    /**
  79.394 +     * Creates a deep copy of the specified property. That is, the name, parameter list, and value are duplicated from
  79.395 +     * the specified property. This constructor should only be called from sub-classes to ensure type integrity is
  79.396 +     * maintained.
  79.397 +     * @param property a property to copy
  79.398 +     * @throws URISyntaxException where the specified property contains an invalid URI value
  79.399 +     * @throws ParseException where the specified property has invalid data
  79.400 +     * @throws IOException where an error occurs reading data from the specified property
  79.401 +     * @deprecated Use {@link #copy()} instead
  79.402 +     */
  79.403 +    protected Property(final Property property) throws IOException,
  79.404 +            URISyntaxException, ParseException {
  79.405 +        this(property.getName(), new ParameterList(property.getParameters(), false),
  79.406 +                property.factory);
  79.407 +        setValue(property.getValue());
  79.408 +    }
  79.409 +
  79.410 +    /**
  79.411 +     * {@inheritDoc}
  79.412 +     */
  79.413 +    public final String toString() {
  79.414 +        final StringBuffer buffer = new StringBuffer();
  79.415 +        buffer.append(getName());
  79.416 +        if (getParameters() != null) {
  79.417 +            buffer.append(getParameters());
  79.418 +        }
  79.419 +        buffer.append(':');
  79.420 +        boolean needsEscape = false;
  79.421 +        if (this instanceof XProperty) {
  79.422 +            Value valParam = (Value)getParameter(Parameter.VALUE);
  79.423 +            if (valParam == null || valParam.equals(Value.TEXT)) {
  79.424 +                needsEscape = true;
  79.425 +            }
  79.426 +        } else if (this instanceof Escapable) {
  79.427 +            needsEscape = true;
  79.428 +        }
  79.429 +        if (needsEscape) {
  79.430 +            buffer.append(Strings.escape(Strings.valueOf(getValue())));
  79.431 +        }
  79.432 +        else {
  79.433 +            buffer.append(Strings.valueOf(getValue()));
  79.434 +        }
  79.435 +        buffer.append(Strings.LINE_SEPARATOR);
  79.436 +
  79.437 +        return buffer.toString();
  79.438 +    }
  79.439 +
  79.440 +    /**
  79.441 +     * Indicates whether this property is a calendar property.
  79.442 +     * @return boolean
  79.443 +     */
  79.444 +    public boolean isCalendarProperty() {
  79.445 +
  79.446 +        return PRODID.equalsIgnoreCase(getName())
  79.447 +                || VERSION.equalsIgnoreCase(getName())
  79.448 +                || CALSCALE.equalsIgnoreCase(getName())
  79.449 +                || METHOD.equalsIgnoreCase(getName());
  79.450 +    }
  79.451 +
  79.452 +    /**
  79.453 +     * @return Returns the name.
  79.454 +     */
  79.455 +    public final String getName() {
  79.456 +        return name;
  79.457 +    }
  79.458 +
  79.459 +    /**
  79.460 +     * @return Returns the parameters.
  79.461 +     */
  79.462 +    public final ParameterList getParameters() {
  79.463 +        return parameters;
  79.464 +    }
  79.465 +
  79.466 +    /**
  79.467 +     * Convenience method for retrieving a list of named parameters.
  79.468 +     * @param name name of parameters to retrieve
  79.469 +     * @return a parameter list containing only parameters with the specified name
  79.470 +     */
  79.471 +    public final ParameterList getParameters(final String name) {
  79.472 +        return getParameters().getParameters(name);
  79.473 +    }
  79.474 +
  79.475 +    /**
  79.476 +     * Convenience method for retrieving a single parameter.
  79.477 +     * @param name name of the parameter to retrieve
  79.478 +     * @return the first parameter from the parameter list with the specified name
  79.479 +     */
  79.480 +    public final Parameter getParameter(final String name) {
  79.481 +        return getParameters().getParameter(name);
  79.482 +    }
  79.483 +
  79.484 +    /**
  79.485 +     * Sets the current value of the property.
  79.486 +     * @param aValue a string representation of the property value
  79.487 +     * @throws IOException possibly thrown by setting the value of certain properties
  79.488 +     * @throws URISyntaxException possibly thrown by setting the value of certain properties
  79.489 +     * @throws ParseException possibly thrown by setting the value of certain properties
  79.490 +     */
  79.491 +    public abstract void setValue(String aValue) throws IOException,
  79.492 +            URISyntaxException, ParseException;
  79.493 +
  79.494 +    /**
  79.495 +     * Perform validation on a property.
  79.496 +     * @throws ValidationException where the property is not in a valid state
  79.497 +     */
  79.498 +    public abstract void validate() throws ValidationException;
  79.499 +
  79.500 +    /**
  79.501 +     * {@inheritDoc}
  79.502 +     */
  79.503 +    public final boolean equals(final Object arg0) {
  79.504 +        if (arg0 instanceof Property) {
  79.505 +            final Property p = (Property) arg0;
  79.506 +            if (getName().equals(p.getName())) {
  79.507 +                return new EqualsBuilder().append(getValue(), p.getValue())
  79.508 +                    .append(getParameters(), p.getParameters()).isEquals();
  79.509 +            } else {
  79.510 +                return false;
  79.511 +            }
  79.512 +        }
  79.513 +        return super.equals(arg0);
  79.514 +    }
  79.515 +
  79.516 +    /**
  79.517 +     * {@inheritDoc}
  79.518 +     */
  79.519 +    public int hashCode() {
  79.520 +        // as property name is case-insensitive generate hash for uppercase..
  79.521 +        return new HashCodeBuilder().append(getName().toUpperCase()).append(
  79.522 +                getValue()).append(getParameters()).toHashCode();
  79.523 +    }
  79.524 +
  79.525 +    /**
  79.526 +     * Create a (deep) copy of this property.
  79.527 +     * @return the copy of the property
  79.528 +     * @throws IOException where an error occurs reading property data
  79.529 +     * @throws URISyntaxException where the property contains an invalid URI value
  79.530 +     * @throws ParseException where the property contains an invalid date value
  79.531 +     */
  79.532 +    public Property copy() throws IOException, URISyntaxException, ParseException {
  79.533 +        if (factory == null) {
  79.534 +            throw new UnsupportedOperationException("No factory specified");
  79.535 +        }
  79.536 +        // Deep copy parameter list..
  79.537 +        final ParameterList params = new ParameterList(getParameters(), false);
  79.538 +        return factory.createProperty(getName(), params, getValue());
  79.539 +    }
  79.540 +}
    80.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    80.2 +++ b/src/net/fortuna/ical4j/model/PropertyFactory.java	Tue Feb 10 18:12:00 2015 +0100
    80.3 @@ -0,0 +1,70 @@
    80.4 +/**
    80.5 + * Copyright (c) 2012, Ben Fortuna
    80.6 + * All rights reserved.
    80.7 + *
    80.8 + * Redistribution and use in source and binary forms, with or without
    80.9 + * modification, are permitted provided that the following conditions
   80.10 + * are met:
   80.11 + *
   80.12 + *  o Redistributions of source code must retain the above copyright
   80.13 + * notice, this list of conditions and the following disclaimer.
   80.14 + *
   80.15 + *  o Redistributions in binary form must reproduce the above copyright
   80.16 + * notice, this list of conditions and the following disclaimer in the
   80.17 + * documentation and/or other materials provided with the distribution.
   80.18 + *
   80.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
   80.20 + * may be used to endorse or promote products derived from this software
   80.21 + * without specific prior written permission.
   80.22 + *
   80.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   80.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   80.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   80.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
   80.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   80.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   80.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   80.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   80.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   80.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   80.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   80.34 + */
   80.35 +package net.fortuna.ical4j.model;
   80.36 +
   80.37 +import java.io.IOException;
   80.38 +import java.io.Serializable;
   80.39 +import java.net.URISyntaxException;
   80.40 +import java.text.ParseException;
   80.41 +
   80.42 +/**
   80.43 + * A factory for creating iCalendar properties.
   80.44 + * 
   80.45 + * @author Ben Fortuna
   80.46 + * 
   80.47 + * Note that implementations must be {@link Serializable} to support referencing
   80.48 + * from {@link Property} instances.
   80.49 + * 
   80.50 + * $Id$
   80.51 + *
   80.52 + * Created on 16/06/2005
   80.53 + */
   80.54 +public interface PropertyFactory extends Serializable {
   80.55 +
   80.56 +    /**
   80.57 +     * @param name a property name
   80.58 +     * @return a new instance of the specified property
   80.59 +     */
   80.60 +    Property createProperty(String name);
   80.61 +    
   80.62 +    /**
   80.63 +     * @param name a property name
   80.64 +     * @param parameters a list of property parameters
   80.65 +     * @param value a property value
   80.66 +     * @return a new instance of the specified property
   80.67 +     * @throws IOException where an unexpected error occurs reading data
   80.68 +     * @throws URISyntaxException where data contains an invalid URI
   80.69 +     * @throws ParseException where data is unable to be parsed correctly
   80.70 +     */
   80.71 +    Property createProperty(String name, ParameterList parameters, String value) throws IOException,
   80.72 +        URISyntaxException, ParseException;
   80.73 +}
    81.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    81.2 +++ b/src/net/fortuna/ical4j/model/PropertyFactoryImpl.java	Tue Feb 10 18:12:00 2015 +0100
    81.3 @@ -0,0 +1,1017 @@
    81.4 +/**
    81.5 + * Copyright (c) 2012, Ben Fortuna
    81.6 + * All rights reserved.
    81.7 + *
    81.8 + * Redistribution and use in source and binary forms, with or without
    81.9 + * modification, are permitted provided that the following conditions
   81.10 + * are met:
   81.11 + *
   81.12 + *  o Redistributions of source code must retain the above copyright
   81.13 + * notice, this list of conditions and the following disclaimer.
   81.14 + *
   81.15 + *  o Redistributions in binary form must reproduce the above copyright
   81.16 + * notice, this list of conditions and the following disclaimer in the
   81.17 + * documentation and/or other materials provided with the distribution.
   81.18 + *
   81.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
   81.20 + * may be used to endorse or promote products derived from this software
   81.21 + * without specific prior written permission.
   81.22 + *
   81.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   81.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   81.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   81.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
   81.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   81.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   81.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   81.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   81.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   81.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   81.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   81.34 + */
   81.35 +package net.fortuna.ical4j.model;
   81.36 +
   81.37 +import java.io.IOException;
   81.38 +import java.net.URISyntaxException;
   81.39 +import java.text.ParseException;
   81.40 +
   81.41 +import net.fortuna.ical4j.model.property.Action;
   81.42 +import net.fortuna.ical4j.model.property.Attach;
   81.43 +import net.fortuna.ical4j.model.property.Attendee;
   81.44 +import net.fortuna.ical4j.model.property.CalScale;
   81.45 +import net.fortuna.ical4j.model.property.Categories;
   81.46 +import net.fortuna.ical4j.model.property.Clazz;
   81.47 +import net.fortuna.ical4j.model.property.Comment;
   81.48 +import net.fortuna.ical4j.model.property.Completed;
   81.49 +import net.fortuna.ical4j.model.property.Contact;
   81.50 +import net.fortuna.ical4j.model.property.Country;
   81.51 +import net.fortuna.ical4j.model.property.Created;
   81.52 +import net.fortuna.ical4j.model.property.Description;
   81.53 +import net.fortuna.ical4j.model.property.DtEnd;
   81.54 +import net.fortuna.ical4j.model.property.DtStamp;
   81.55 +import net.fortuna.ical4j.model.property.DtStart;
   81.56 +import net.fortuna.ical4j.model.property.Due;
   81.57 +import net.fortuna.ical4j.model.property.Duration;
   81.58 +import net.fortuna.ical4j.model.property.ExDate;
   81.59 +import net.fortuna.ical4j.model.property.ExRule;
   81.60 +import net.fortuna.ical4j.model.property.ExtendedAddress;
   81.61 +import net.fortuna.ical4j.model.property.FreeBusy;
   81.62 +import net.fortuna.ical4j.model.property.Geo;
   81.63 +import net.fortuna.ical4j.model.property.LastModified;
   81.64 +import net.fortuna.ical4j.model.property.Locality;
   81.65 +import net.fortuna.ical4j.model.property.Location;
   81.66 +import net.fortuna.ical4j.model.property.LocationType;
   81.67 +import net.fortuna.ical4j.model.property.Method;
   81.68 +import net.fortuna.ical4j.model.property.Name;
   81.69 +import net.fortuna.ical4j.model.property.Organizer;
   81.70 +import net.fortuna.ical4j.model.property.PercentComplete;
   81.71 +import net.fortuna.ical4j.model.property.Postalcode;
   81.72 +import net.fortuna.ical4j.model.property.Priority;
   81.73 +import net.fortuna.ical4j.model.property.ProdId;
   81.74 +import net.fortuna.ical4j.model.property.RDate;
   81.75 +import net.fortuna.ical4j.model.property.RRule;
   81.76 +import net.fortuna.ical4j.model.property.RecurrenceId;
   81.77 +import net.fortuna.ical4j.model.property.Region;
   81.78 +import net.fortuna.ical4j.model.property.RelatedTo;
   81.79 +import net.fortuna.ical4j.model.property.Repeat;
   81.80 +import net.fortuna.ical4j.model.property.RequestStatus;
   81.81 +import net.fortuna.ical4j.model.property.Resources;
   81.82 +import net.fortuna.ical4j.model.property.Sequence;
   81.83 +import net.fortuna.ical4j.model.property.Status;
   81.84 +import net.fortuna.ical4j.model.property.StreetAddress;
   81.85 +import net.fortuna.ical4j.model.property.Summary;
   81.86 +import net.fortuna.ical4j.model.property.Tel;
   81.87 +import net.fortuna.ical4j.model.property.Transp;
   81.88 +import net.fortuna.ical4j.model.property.Trigger;
   81.89 +import net.fortuna.ical4j.model.property.TzId;
   81.90 +import net.fortuna.ical4j.model.property.TzName;
   81.91 +import net.fortuna.ical4j.model.property.TzOffsetFrom;
   81.92 +import net.fortuna.ical4j.model.property.TzOffsetTo;
   81.93 +import net.fortuna.ical4j.model.property.TzUrl;
   81.94 +import net.fortuna.ical4j.model.property.Uid;
   81.95 +import net.fortuna.ical4j.model.property.Url;
   81.96 +import net.fortuna.ical4j.model.property.Version;
   81.97 +import net.fortuna.ical4j.model.property.XProperty;
   81.98 +
   81.99 +/**
  81.100 + * A factory for creating iCalendar properties. Note that if relaxed parsing is enabled (via specifying the system
  81.101 + * property: icalj.parsing.relaxed=true) illegal property names are allowed.
  81.102 + * 
  81.103 + * @author Ben Fortuna
  81.104 + * 
  81.105 + * $Id$ [05-Apr-2004]
  81.106 + */
  81.107 +public class PropertyFactoryImpl extends AbstractContentFactory implements PropertyFactory {
  81.108 +
  81.109 +    private static final long serialVersionUID = -7174232004486979641L;
  81.110 +    
  81.111 +    private static PropertyFactoryImpl instance = new PropertyFactoryImpl();
  81.112 +
  81.113 +    /**
  81.114 +     * Constructor made private to prevent instantiation.
  81.115 +     */
  81.116 +    protected PropertyFactoryImpl() {
  81.117 +        registerDefaultFactory(Property.ACTION, new ActionFactory());
  81.118 +        registerDefaultFactory(Property.ATTACH, new AttachFactory());
  81.119 +        registerDefaultFactory(Property.ATTENDEE, new AttendeeFactory());
  81.120 +        registerDefaultFactory(Property.CALSCALE, new CalScaleFactory());
  81.121 +        registerDefaultFactory(Property.CATEGORIES, new CategoriesFactory());
  81.122 +        registerDefaultFactory(Property.CLASS, new ClazzFactory());
  81.123 +        registerDefaultFactory(Property.COMMENT, new CommentFactory());
  81.124 +        registerDefaultFactory(Property.COMPLETED, new CompletedFactory());
  81.125 +        registerDefaultFactory(Property.CONTACT, new ContactFactory());
  81.126 +        registerDefaultFactory(Property.COUNTRY, new CountryFactory());
  81.127 +        registerDefaultFactory(Property.CREATED, new CreatedFactory());
  81.128 +        registerDefaultFactory(Property.DESCRIPTION, new DescriptionFactory());
  81.129 +        registerDefaultFactory(Property.DTEND, new DtEndFactory());
  81.130 +        registerDefaultFactory(Property.DTSTAMP, new DtStampFactory());
  81.131 +        registerDefaultFactory(Property.DTSTART, new DtStartFactory());
  81.132 +        registerDefaultFactory(Property.DUE, new DueFactory());
  81.133 +        registerDefaultFactory(Property.DURATION, new DurationFactory());
  81.134 +        registerDefaultFactory(Property.EXDATE, new ExDateFactory());
  81.135 +        registerDefaultFactory(Property.EXRULE, new ExRuleFactory());
  81.136 +        registerDefaultFactory(Property.EXTENDED_ADDRESS, new ExtendedAddressFactory());
  81.137 +        registerDefaultFactory(Property.FREEBUSY, new FreeBusyFactory());
  81.138 +        registerDefaultFactory(Property.GEO, new GeoFactory());
  81.139 +        registerDefaultFactory(Property.LAST_MODIFIED, new LastModifiedFactory());
  81.140 +        registerDefaultFactory(Property.LOCALITY, new LocalityFactory());
  81.141 +        registerDefaultFactory(Property.LOCATION, new LocationFactory());
  81.142 +        registerDefaultFactory(Property.LOCATION_TYPE, new LocationTypeFactory());
  81.143 +        registerDefaultFactory(Property.METHOD, new MethodFactory());
  81.144 +        registerDefaultFactory(Property.NAME, new NameFactory());
  81.145 +        registerDefaultFactory(Property.ORGANIZER, new OrganizerFactory());
  81.146 +        registerDefaultFactory(Property.PERCENT_COMPLETE, new PercentCompleteFactory());
  81.147 +        registerDefaultFactory(Property.POSTALCODE, new PostalcodeFactory());
  81.148 +        registerDefaultFactory(Property.PRIORITY, new PriorityFactory());
  81.149 +        registerDefaultFactory(Property.PRODID, new ProdIdFactory());
  81.150 +        registerDefaultFactory(Property.RDATE, new RDateFactory());
  81.151 +        registerDefaultFactory(Property.RECURRENCE_ID, new RecurrenceIdFactory());
  81.152 +        registerDefaultFactory(Property.REGION, new RegionFactory());
  81.153 +        registerDefaultFactory(Property.RELATED_TO, new RelatedToFactory());
  81.154 +        registerDefaultFactory(Property.REPEAT, new RepeatFactory());
  81.155 +        registerDefaultFactory(Property.REQUEST_STATUS, new RequestStatusFactory());
  81.156 +        registerDefaultFactory(Property.RESOURCES, new ResourcesFactory());
  81.157 +        registerDefaultFactory(Property.RRULE, new RRuleFactory());
  81.158 +        registerDefaultFactory(Property.SEQUENCE, new SequenceFactory());
  81.159 +        registerDefaultFactory(Property.STATUS, new StatusFactory());
  81.160 +        registerDefaultFactory(Property.STREET_ADDRESS, new StreetAddressFactory());
  81.161 +        registerDefaultFactory(Property.SUMMARY, new SummaryFactory());
  81.162 +        registerDefaultFactory(Property.TEL, new TelFactory());
  81.163 +        registerDefaultFactory(Property.TRANSP, new TranspFactory());
  81.164 +        registerDefaultFactory(Property.TRIGGER, new TriggerFactory());
  81.165 +        registerDefaultFactory(Property.TZID, new TzIdFactory());
  81.166 +        registerDefaultFactory(Property.TZNAME, new TzNameFactory());
  81.167 +        registerDefaultFactory(Property.TZOFFSETFROM, new TzOffsetFromFactory());
  81.168 +        registerDefaultFactory(Property.TZOFFSETTO, new TzOffsetToFactory());
  81.169 +        registerDefaultFactory(Property.TZURL, new TzUrlFactory());
  81.170 +        registerDefaultFactory(Property.UID, new UidFactory());
  81.171 +        registerDefaultFactory(Property.URL, new UrlFactory());
  81.172 +        registerDefaultFactory(Property.VERSION, new VersionFactory());
  81.173 +    }
  81.174 +
  81.175 +    private static class ActionFactory implements PropertyFactory {
  81.176 +        private static final long serialVersionUID = 1L;
  81.177 +
  81.178 +        public Property createProperty(final String name,
  81.179 +                final ParameterList parameters, final String value)
  81.180 +                throws IOException, URISyntaxException, ParseException {
  81.181 +            return new Action(parameters, value);
  81.182 +        }
  81.183 +
  81.184 +        public Property createProperty(final String name) {
  81.185 +            return new Action();
  81.186 +        }
  81.187 +    }
  81.188 +
  81.189 +    private static class AttachFactory implements PropertyFactory {
  81.190 +        private static final long serialVersionUID = 1L;
  81.191 +
  81.192 +        public Property createProperty(final String name,
  81.193 +                final ParameterList parameters, final String value)
  81.194 +                throws IOException, URISyntaxException, ParseException {
  81.195 +            return new Attach(parameters, value);
  81.196 +        }
  81.197 +
  81.198 +        public Property createProperty(final String name) {
  81.199 +            return new Attach();
  81.200 +        }
  81.201 +    }
  81.202 +
  81.203 +    private static class AttendeeFactory implements PropertyFactory {
  81.204 +        private static final long serialVersionUID = 1L;
  81.205 +
  81.206 +        public Property createProperty(final String name,
  81.207 +                final ParameterList parameters, final String value)
  81.208 +                throws IOException, URISyntaxException, ParseException {
  81.209 +            return new Attendee(parameters, value);
  81.210 +        }
  81.211 +
  81.212 +        public Property createProperty(final String name) {
  81.213 +            return new Attendee();
  81.214 +        }
  81.215 +    }
  81.216 +
  81.217 +    private static class CalScaleFactory implements PropertyFactory {
  81.218 +        private static final long serialVersionUID = 1L;
  81.219 +
  81.220 +        public Property createProperty(final String name,
  81.221 +                final ParameterList parameters, final String value)
  81.222 +                throws IOException, URISyntaxException, ParseException {
  81.223 +            return new CalScale(parameters, value);
  81.224 +        }
  81.225 +
  81.226 +        public Property createProperty(final String name) {
  81.227 +            return new CalScale();
  81.228 +        }
  81.229 +    }
  81.230 +
  81.231 +    private static class CategoriesFactory implements PropertyFactory {
  81.232 +        private static final long serialVersionUID = 1L;
  81.233 +
  81.234 +        public Property createProperty(final String name,
  81.235 +                final ParameterList parameters, final String value)
  81.236 +                throws IOException, URISyntaxException, ParseException {
  81.237 +            return new Categories(parameters, value);
  81.238 +        }
  81.239 +
  81.240 +        public Property createProperty(final String name) {
  81.241 +            return new Categories();
  81.242 +        }
  81.243 +    }
  81.244 +
  81.245 +    private static class ClazzFactory implements PropertyFactory {
  81.246 +        private static final long serialVersionUID = 1L;
  81.247 +
  81.248 +        public Property createProperty(final String name,
  81.249 +                final ParameterList parameters, final String value)
  81.250 +                throws IOException, URISyntaxException, ParseException {
  81.251 +            return new Clazz(parameters, value);
  81.252 +        }
  81.253 +
  81.254 +        public Property createProperty(final String name) {
  81.255 +            return new Clazz();
  81.256 +        }
  81.257 +    }
  81.258 +
  81.259 +    private static class CommentFactory implements PropertyFactory {
  81.260 +        private static final long serialVersionUID = 1L;
  81.261 +
  81.262 +        public Property createProperty(final String name,
  81.263 +                final ParameterList parameters, final String value)
  81.264 +                throws IOException, URISyntaxException, ParseException {
  81.265 +            return new Comment(parameters, value);
  81.266 +        }
  81.267 +
  81.268 +        public Property createProperty(final String name) {
  81.269 +            return new Comment();
  81.270 +        }
  81.271 +    }
  81.272 +
  81.273 +    private static class CompletedFactory implements PropertyFactory {
  81.274 +        private static final long serialVersionUID = 1L;
  81.275 +
  81.276 +        public Property createProperty(final String name,
  81.277 +                final ParameterList parameters, final String value)
  81.278 +                throws IOException, URISyntaxException, ParseException {
  81.279 +            return new Completed(parameters, value);
  81.280 +        }
  81.281 +
  81.282 +        public Property createProperty(final String name) {
  81.283 +            return new Completed();
  81.284 +        }
  81.285 +    }
  81.286 +
  81.287 +    private static class ContactFactory implements PropertyFactory {
  81.288 +        private static final long serialVersionUID = 1L;
  81.289 +
  81.290 +        public Property createProperty(final String name,
  81.291 +                final ParameterList parameters, final String value)
  81.292 +                throws IOException, URISyntaxException, ParseException {
  81.293 +            return new Contact(parameters, value);
  81.294 +        }
  81.295 +
  81.296 +        public Property createProperty(final String name) {
  81.297 +            return new Contact();
  81.298 +        }
  81.299 +    }
  81.300 +
  81.301 +    private static class CountryFactory implements PropertyFactory {
  81.302 +        private static final long serialVersionUID = 1L;
  81.303 +
  81.304 +        public Property createProperty(final String name,
  81.305 +                final ParameterList parameters, final String value)
  81.306 +                throws IOException, URISyntaxException, ParseException {
  81.307 +            return new Country(parameters, value);
  81.308 +        }
  81.309 +
  81.310 +        public Property createProperty(final String name) {
  81.311 +            return new Country();
  81.312 +        }
  81.313 +    }
  81.314 +
  81.315 +    private static class CreatedFactory implements PropertyFactory {
  81.316 +        private static final long serialVersionUID = 1L;
  81.317 +
  81.318 +        public Property createProperty(final String name,
  81.319 +                final ParameterList parameters, final String value)
  81.320 +                throws IOException, URISyntaxException, ParseException {
  81.321 +            return new Created(parameters, value);
  81.322 +        }
  81.323 +
  81.324 +        public Property createProperty(final String name) {
  81.325 +            return new Created();
  81.326 +        }
  81.327 +    }
  81.328 +
  81.329 +    private static class DescriptionFactory implements PropertyFactory {
  81.330 +        private static final long serialVersionUID = 1L;
  81.331 +
  81.332 +        public Property createProperty(final String name,
  81.333 +                final ParameterList parameters, final String value)
  81.334 +                throws IOException, URISyntaxException, ParseException {
  81.335 +            return new Description(parameters, value);
  81.336 +        }
  81.337 +
  81.338 +        public Property createProperty(final String name) {
  81.339 +            return new Description();
  81.340 +        }
  81.341 +    }
  81.342 +
  81.343 +    private static class DtEndFactory implements PropertyFactory {
  81.344 +        private static final long serialVersionUID = 1L;
  81.345 +
  81.346 +        public Property createProperty(final String name,
  81.347 +                final ParameterList parameters, final String value)
  81.348 +                throws IOException, URISyntaxException, ParseException {
  81.349 +            return new DtEnd(parameters, value);
  81.350 +        }
  81.351 +
  81.352 +        public Property createProperty(final String name) {
  81.353 +            return new DtEnd();
  81.354 +        }
  81.355 +    }
  81.356 +
  81.357 +    private static class DtStampFactory implements PropertyFactory {
  81.358 +        private static final long serialVersionUID = 1L;
  81.359 +
  81.360 +        public Property createProperty(final String name,
  81.361 +                final ParameterList parameters, final String value)
  81.362 +                throws IOException, URISyntaxException, ParseException {
  81.363 +            return new DtStamp(parameters, value);
  81.364 +        }
  81.365 +
  81.366 +        public Property createProperty(final String name) {
  81.367 +            return new DtStamp();
  81.368 +        }
  81.369 +    }
  81.370 +
  81.371 +    /**
  81.372 +     * @return
  81.373 +     */
  81.374 +    private static class DtStartFactory implements PropertyFactory {
  81.375 +        private static final long serialVersionUID = 1L;
  81.376 +
  81.377 +        public Property createProperty(final String name,
  81.378 +                final ParameterList parameters, final String value)
  81.379 +                throws IOException, URISyntaxException, ParseException {
  81.380 +            return new DtStart(parameters, value);
  81.381 +        }
  81.382 +
  81.383 +        public Property createProperty(final String name) {
  81.384 +            return new DtStart();
  81.385 +        }
  81.386 +    }
  81.387 +
  81.388 +    private static class DueFactory implements PropertyFactory {
  81.389 +        private static final long serialVersionUID = 1L;
  81.390 +
  81.391 +        public Property createProperty(final String name,
  81.392 +                final ParameterList parameters, final String value)
  81.393 +                throws IOException, URISyntaxException, ParseException {
  81.394 +            return new Due(parameters, value);
  81.395 +        }
  81.396 +
  81.397 +        public Property createProperty(final String name) {
  81.398 +            return new Due();
  81.399 +        }
  81.400 +    }
  81.401 +
  81.402 +    private static class DurationFactory implements PropertyFactory {
  81.403 +        private static final long serialVersionUID = 1L;
  81.404 +
  81.405 +        public Property createProperty(final String name,
  81.406 +                final ParameterList parameters, final String value)
  81.407 +                throws IOException, URISyntaxException, ParseException {
  81.408 +            return new Duration(parameters, value);
  81.409 +        }
  81.410 +
  81.411 +        public Property createProperty(final String name) {
  81.412 +            return new Duration();
  81.413 +        }
  81.414 +    }
  81.415 +
  81.416 +    private static class ExDateFactory implements PropertyFactory {
  81.417 +        private static final long serialVersionUID = 1L;
  81.418 +
  81.419 +        public Property createProperty(final String name,
  81.420 +               final ParameterList parameters, final String value)
  81.421 +                throws IOException, URISyntaxException, ParseException {
  81.422 +            return new ExDate(parameters, value);
  81.423 +        }
  81.424 +
  81.425 +        public Property createProperty(final String name) {
  81.426 +            return new ExDate();
  81.427 +        }
  81.428 +    }
  81.429 +
  81.430 +    private static class ExRuleFactory implements PropertyFactory {
  81.431 +        private static final long serialVersionUID = 1L;
  81.432 +
  81.433 +        public Property createProperty(final String name,
  81.434 +                final ParameterList parameters, final String value)
  81.435 +                throws IOException, URISyntaxException, ParseException {
  81.436 +            return new ExRule(parameters, value);
  81.437 +        }
  81.438 +
  81.439 +        public Property createProperty(final String name) {
  81.440 +            return new ExRule();
  81.441 +        }
  81.442 +    }
  81.443 +
  81.444 +    private static class ExtendedAddressFactory implements PropertyFactory {
  81.445 +        private static final long serialVersionUID = 1L;
  81.446 +
  81.447 +        public Property createProperty(final String name,
  81.448 +                final ParameterList parameters, final String value)
  81.449 +                throws IOException, URISyntaxException, ParseException {
  81.450 +            return new ExtendedAddress(parameters, value);
  81.451 +        }
  81.452 +
  81.453 +        public Property createProperty(final String name) {
  81.454 +            return new ExtendedAddress();
  81.455 +        }
  81.456 +    }
  81.457 +
  81.458 +    private static class FreeBusyFactory implements PropertyFactory {
  81.459 +        private static final long serialVersionUID = 1L;
  81.460 +
  81.461 +        public Property createProperty(final String name,
  81.462 +                final ParameterList parameters, final String value)
  81.463 +                throws IOException, URISyntaxException, ParseException {
  81.464 +            return new FreeBusy(parameters, value);
  81.465 +        }
  81.466 +
  81.467 +        public Property createProperty(final String name) {
  81.468 +            return new FreeBusy();
  81.469 +        }
  81.470 +    }
  81.471 +
  81.472 +    private static class GeoFactory implements PropertyFactory {
  81.473 +        private static final long serialVersionUID = 1L;
  81.474 +
  81.475 +        public Property createProperty(final String name,
  81.476 +                final ParameterList parameters, final String value)
  81.477 +                throws IOException, URISyntaxException, ParseException {
  81.478 +            return new Geo(parameters, value);
  81.479 +        }
  81.480 +
  81.481 +        public Property createProperty(final String name) {
  81.482 +            return new Geo();
  81.483 +        }
  81.484 +    }
  81.485 +
  81.486 +    private static class LastModifiedFactory implements PropertyFactory {
  81.487 +        private static final long serialVersionUID = 1L;
  81.488 +
  81.489 +        public Property createProperty(final String name,
  81.490 +                final ParameterList parameters, final String value)
  81.491 +                throws IOException, URISyntaxException, ParseException {
  81.492 +            return new LastModified(parameters, value);
  81.493 +        }
  81.494 +
  81.495 +        public Property createProperty(final String name) {
  81.496 +            return new LastModified();
  81.497 +        }
  81.498 +    }
  81.499 +
  81.500 +    private static class LocalityFactory implements PropertyFactory {
  81.501 +        private static final long serialVersionUID = 1L;
  81.502 +
  81.503 +        public Property createProperty(final String name,
  81.504 +                final ParameterList parameters, final String value)
  81.505 +                throws IOException, URISyntaxException, ParseException {
  81.506 +            return new Locality(parameters, value);
  81.507 +        }
  81.508 +
  81.509 +        public Property createProperty(final String name) {
  81.510 +            return new Locality();
  81.511 +        }
  81.512 +    }
  81.513 +
  81.514 +    private static class LocationFactory implements PropertyFactory {
  81.515 +        private static final long serialVersionUID = 1L;
  81.516 +
  81.517 +        public Property createProperty(final String name,
  81.518 +                final ParameterList parameters, final String value)
  81.519 +                throws IOException, URISyntaxException, ParseException {
  81.520 +            return new Location(parameters, value);
  81.521 +        }
  81.522 +
  81.523 +        public Property createProperty(final String name) {
  81.524 +            return new Location();
  81.525 +        }
  81.526 +    }
  81.527 +
  81.528 +    private static class LocationTypeFactory implements PropertyFactory {
  81.529 +        private static final long serialVersionUID = 1L;
  81.530 +
  81.531 +        public Property createProperty(final String name,
  81.532 +                final ParameterList parameters, final String value)
  81.533 +                throws IOException, URISyntaxException, ParseException {
  81.534 +            return new LocationType(parameters, value);
  81.535 +        }
  81.536 +
  81.537 +        public Property createProperty(final String name) {
  81.538 +            return new LocationType();
  81.539 +        }
  81.540 +    }
  81.541 +
  81.542 +    private static class MethodFactory implements PropertyFactory {
  81.543 +        private static final long serialVersionUID = 1L;
  81.544 +
  81.545 +        public Property createProperty(final String name,
  81.546 +                final ParameterList parameters, final String value)
  81.547 +                throws IOException, URISyntaxException, ParseException {
  81.548 +            return new Method(parameters, value);
  81.549 +        }
  81.550 +
  81.551 +        public Property createProperty(final String name) {
  81.552 +            return new Method();
  81.553 +        }
  81.554 +    }
  81.555 +
  81.556 +    private static class NameFactory implements PropertyFactory {
  81.557 +        private static final long serialVersionUID = 1L;
  81.558 +
  81.559 +        public Property createProperty(final String name,
  81.560 +                final ParameterList parameters, final String value)
  81.561 +                throws IOException, URISyntaxException, ParseException {
  81.562 +            return new Name(parameters, value);
  81.563 +        }
  81.564 +
  81.565 +        public Property createProperty(final String name) {
  81.566 +            return new Name();
  81.567 +        }
  81.568 +    }
  81.569 +
  81.570 +    private static class OrganizerFactory implements PropertyFactory {
  81.571 +        private static final long serialVersionUID = 1L;
  81.572 +
  81.573 +        public Property createProperty(final String name,
  81.574 +                final ParameterList parameters, final String value)
  81.575 +                throws IOException, URISyntaxException, ParseException {
  81.576 +            return new Organizer(parameters, value);
  81.577 +        }
  81.578 +
  81.579 +        public Property createProperty(final String name) {
  81.580 +            return new Organizer();
  81.581 +        }
  81.582 +    }
  81.583 +
  81.584 +    private static class PercentCompleteFactory implements PropertyFactory {
  81.585 +        private static final long serialVersionUID = 1L;
  81.586 +
  81.587 +        public Property createProperty(final String name,
  81.588 +                final ParameterList parameters, final String value)
  81.589 +                throws IOException, URISyntaxException, ParseException {
  81.590 +            return new PercentComplete(parameters, value);
  81.591 +        }
  81.592 +
  81.593 +        public Property createProperty(final String name) {
  81.594 +            return new PercentComplete();
  81.595 +        }
  81.596 +    }
  81.597 +
  81.598 +    private static class PostalcodeFactory implements PropertyFactory {
  81.599 +        private static final long serialVersionUID = 1L;
  81.600 +
  81.601 +        public Property createProperty(final String name,
  81.602 +                final ParameterList parameters, final String value)
  81.603 +                throws IOException, URISyntaxException, ParseException {
  81.604 +            return new Postalcode(parameters, value);
  81.605 +        }
  81.606 +
  81.607 +        public Property createProperty(final String name) {
  81.608 +            return new Postalcode();
  81.609 +        }
  81.610 +    }
  81.611 +
  81.612 +    private static class PriorityFactory implements PropertyFactory {
  81.613 +        private static final long serialVersionUID = 1L;
  81.614 +
  81.615 +        public Property createProperty(final String name,
  81.616 +                final ParameterList parameters, final String value)
  81.617 +                throws IOException, URISyntaxException, ParseException {
  81.618 +            return new Priority(parameters, value);
  81.619 +        }
  81.620 +
  81.621 +        public Property createProperty(final String name) {
  81.622 +            return new Priority();
  81.623 +        }
  81.624 +    }
  81.625 +
  81.626 +    private static class ProdIdFactory implements PropertyFactory {
  81.627 +        private static final long serialVersionUID = 1L;
  81.628 +
  81.629 +        public Property createProperty(final String name,
  81.630 +                final ParameterList parameters, final String value)
  81.631 +                throws IOException, URISyntaxException, ParseException {
  81.632 +            return new ProdId(parameters, value);
  81.633 +        }
  81.634 +
  81.635 +        public Property createProperty(final String name) {
  81.636 +            return new ProdId();
  81.637 +        }
  81.638 +    }
  81.639 +
  81.640 +    private static class RDateFactory implements PropertyFactory {
  81.641 +        private static final long serialVersionUID = 1L;
  81.642 +
  81.643 +        public Property createProperty(final String name,
  81.644 +                final ParameterList parameters, final String value)
  81.645 +                throws IOException, URISyntaxException, ParseException {
  81.646 +            return new RDate(parameters, value);
  81.647 +        }
  81.648 +
  81.649 +        public Property createProperty(final String name) {
  81.650 +            return new RDate();
  81.651 +        }
  81.652 +    }
  81.653 +
  81.654 +    private static class RecurrenceIdFactory implements PropertyFactory {
  81.655 +        private static final long serialVersionUID = 1L;
  81.656 +
  81.657 +        public Property createProperty(final String name,
  81.658 +                final ParameterList parameters, final String value)
  81.659 +                throws IOException, URISyntaxException, ParseException {
  81.660 +            return new RecurrenceId(parameters, value);
  81.661 +        }
  81.662 +
  81.663 +        public Property createProperty(final String name) {
  81.664 +            return new RecurrenceId();
  81.665 +        }
  81.666 +    }
  81.667 +
  81.668 +    private static class RegionFactory implements PropertyFactory {
  81.669 +        private static final long serialVersionUID = 1L;
  81.670 +
  81.671 +        public Property createProperty(final String name,
  81.672 +                final ParameterList parameters, final String value)
  81.673 +                throws IOException, URISyntaxException, ParseException {
  81.674 +            return new Region(parameters, value);
  81.675 +        }
  81.676 +
  81.677 +        public Property createProperty(final String name) {
  81.678 +            return new Region();
  81.679 +        }
  81.680 +    }
  81.681 +
  81.682 +    private static class RelatedToFactory implements PropertyFactory {
  81.683 +        private static final long serialVersionUID = 1L;
  81.684 +
  81.685 +        public Property createProperty(final String name,
  81.686 +                final ParameterList parameters, final String value)
  81.687 +                throws IOException, URISyntaxException, ParseException {
  81.688 +            return new RelatedTo(parameters, value);
  81.689 +        }
  81.690 +
  81.691 +        public Property createProperty(final String name) {
  81.692 +            return new RelatedTo();
  81.693 +        }
  81.694 +    }
  81.695 +
  81.696 +    private static class RepeatFactory implements PropertyFactory {
  81.697 +        private static final long serialVersionUID = 1L;
  81.698 +
  81.699 +        public Property createProperty(final String name,
  81.700 +                final ParameterList parameters, final String value)
  81.701 +                throws IOException, URISyntaxException, ParseException {
  81.702 +            return new Repeat(parameters, value);
  81.703 +        }
  81.704 +
  81.705 +        public Property createProperty(final String name) {
  81.706 +            return new Repeat();
  81.707 +        }
  81.708 +    }
  81.709 +
  81.710 +    private static class RequestStatusFactory implements PropertyFactory {
  81.711 +        private static final long serialVersionUID = 1L;
  81.712 +
  81.713 +        public Property createProperty(final String name,
  81.714 +                final ParameterList parameters, final String value)
  81.715 +                throws IOException, URISyntaxException, ParseException {
  81.716 +            return new RequestStatus(parameters, value);
  81.717 +        }
  81.718 +
  81.719 +        public Property createProperty(final String name) {
  81.720 +            return new RequestStatus();
  81.721 +        }
  81.722 +    }
  81.723 +
  81.724 +    private static class ResourcesFactory implements PropertyFactory {
  81.725 +        private static final long serialVersionUID = 1L;
  81.726 +
  81.727 +        public Property createProperty(final String name,
  81.728 +                final ParameterList parameters, final String value)
  81.729 +                throws IOException, URISyntaxException, ParseException {
  81.730 +            return new Resources(parameters, value);
  81.731 +        }
  81.732 +
  81.733 +        public Property createProperty(final String name) {
  81.734 +            return new Resources();
  81.735 +        }
  81.736 +    }
  81.737 +
  81.738 +    private static class RRuleFactory implements PropertyFactory {
  81.739 +        private static final long serialVersionUID = 1L;
  81.740 +
  81.741 +        public Property createProperty(final String name,
  81.742 +                final ParameterList parameters, final String value)
  81.743 +                throws IOException, URISyntaxException, ParseException {
  81.744 +            return new RRule(parameters, value);
  81.745 +        }
  81.746 +
  81.747 +        public Property createProperty(final String name) {
  81.748 +            return new RRule();
  81.749 +        }
  81.750 +    }
  81.751 +
  81.752 +    private static class SequenceFactory implements PropertyFactory {
  81.753 +        private static final long serialVersionUID = 1L;
  81.754 +
  81.755 +        public Property createProperty(final String name,
  81.756 +                final ParameterList parameters, final String value)
  81.757 +                throws IOException, URISyntaxException, ParseException {
  81.758 +            return new Sequence(parameters, value);
  81.759 +        }
  81.760 +
  81.761 +        public Property createProperty(final String name) {
  81.762 +            return new Sequence();
  81.763 +        }
  81.764 +    }
  81.765 +
  81.766 +    private static class StatusFactory implements PropertyFactory {
  81.767 +        private static final long serialVersionUID = 1L;
  81.768 +
  81.769 +        public Property createProperty(final String name,
  81.770 +                final ParameterList parameters, final String value)
  81.771 +                throws IOException, URISyntaxException, ParseException {
  81.772 +            return new Status(parameters, value);
  81.773 +        }
  81.774 +
  81.775 +        public Property createProperty(final String name) {
  81.776 +            return new Status();
  81.777 +        }
  81.778 +    }
  81.779 +
  81.780 +    private static class StreetAddressFactory implements PropertyFactory {
  81.781 +        private static final long serialVersionUID = 1L;
  81.782 +
  81.783 +        public Property createProperty(final String name,
  81.784 +                final ParameterList parameters, final String value)
  81.785 +                throws IOException, URISyntaxException, ParseException {
  81.786 +            return new StreetAddress(parameters, value);
  81.787 +        }
  81.788 +
  81.789 +        public Property createProperty(final String name) {
  81.790 +            return new StreetAddress();
  81.791 +        }
  81.792 +    }
  81.793 +
  81.794 +    private static class SummaryFactory implements PropertyFactory {
  81.795 +        private static final long serialVersionUID = 1L;
  81.796 +
  81.797 +        public Property createProperty(final String name,
  81.798 +                final ParameterList parameters, final String value)
  81.799 +                throws IOException, URISyntaxException, ParseException {
  81.800 +            return new Summary(parameters, value);
  81.801 +        }
  81.802 +
  81.803 +        public Property createProperty(final String name) {
  81.804 +            return new Summary();
  81.805 +        }
  81.806 +    }
  81.807 +
  81.808 +    private static class TelFactory implements PropertyFactory {
  81.809 +        private static final long serialVersionUID = 1L;
  81.810 +
  81.811 +        public Property createProperty(final String name,
  81.812 +                final ParameterList parameters, final String value)
  81.813 +                throws IOException, URISyntaxException, ParseException {
  81.814 +            return new Tel(parameters, value);
  81.815 +        }
  81.816 +
  81.817 +        public Property createProperty(final String name) {
  81.818 +            return new Tel();
  81.819 +        }
  81.820 +    }
  81.821 +
  81.822 +    private static class TranspFactory implements PropertyFactory {
  81.823 +        private static final long serialVersionUID = 1L;
  81.824 +
  81.825 +        public Property createProperty(final String name,
  81.826 +                final ParameterList parameters, final String value)
  81.827 +                throws IOException, URISyntaxException, ParseException {
  81.828 +            return new Transp(parameters, value);
  81.829 +        }
  81.830 +
  81.831 +        public Property createProperty(final String name) {
  81.832 +            return new Transp();
  81.833 +        }
  81.834 +    }
  81.835 +
  81.836 +    private static class TriggerFactory implements PropertyFactory {
  81.837 +        private static final long serialVersionUID = 1L;
  81.838 +
  81.839 +        public Property createProperty(final String name,
  81.840 +                final ParameterList parameters, final String value)
  81.841 +                throws IOException, URISyntaxException, ParseException {
  81.842 +            return new Trigger(parameters, value);
  81.843 +        }
  81.844 +
  81.845 +        public Property createProperty(final String name) {
  81.846 +            return new Trigger();
  81.847 +        }
  81.848 +    }
  81.849 +
  81.850 +    private static class TzIdFactory implements PropertyFactory {
  81.851 +        private static final long serialVersionUID = 1L;
  81.852 +
  81.853 +        public Property createProperty(final String name,
  81.854 +                final ParameterList parameters, final String value)
  81.855 +                throws IOException, URISyntaxException, ParseException {
  81.856 +            return new TzId(parameters, value);
  81.857 +        }
  81.858 +
  81.859 +        public Property createProperty(final String name) {
  81.860 +            return new TzId();
  81.861 +        }
  81.862 +    }
  81.863 +
  81.864 +    private static class TzNameFactory implements PropertyFactory {
  81.865 +        private static final long serialVersionUID = 1L;
  81.866 +
  81.867 +        public Property createProperty(final String name,
  81.868 +                final ParameterList parameters, final String value)
  81.869 +                throws IOException, URISyntaxException, ParseException {
  81.870 +            return new TzName(parameters, value);
  81.871 +        }
  81.872 +
  81.873 +        public Property createProperty(final String name) {
  81.874 +            return new TzName();
  81.875 +        }
  81.876 +    }
  81.877 +
  81.878 +    private static class TzOffsetFromFactory implements PropertyFactory {
  81.879 +        private static final long serialVersionUID = 1L;
  81.880 +
  81.881 +        public Property createProperty(final String name,
  81.882 +                final ParameterList parameters, final String value)
  81.883 +                throws IOException, URISyntaxException, ParseException {
  81.884 +            return new TzOffsetFrom(parameters, value);
  81.885 +        }
  81.886 +
  81.887 +        public Property createProperty(final String name) {
  81.888 +            return new TzOffsetFrom();
  81.889 +        }
  81.890 +    }
  81.891 +
  81.892 +    private static class TzOffsetToFactory implements PropertyFactory {
  81.893 +        private static final long serialVersionUID = 1L;
  81.894 +
  81.895 +        public Property createProperty(final String name,
  81.896 +                final ParameterList parameters, final String value)
  81.897 +                throws IOException, URISyntaxException, ParseException {
  81.898 +            return new TzOffsetTo(parameters, value);
  81.899 +        }
  81.900 +
  81.901 +        public Property createProperty(final String name) {
  81.902 +            return new TzOffsetTo();
  81.903 +        }
  81.904 +    }
  81.905 +
  81.906 +    private static class TzUrlFactory implements PropertyFactory {
  81.907 +        private static final long serialVersionUID = 1L;
  81.908 +
  81.909 +        public Property createProperty(final String name,
  81.910 +                final ParameterList parameters, final String value)
  81.911 +                throws IOException, URISyntaxException, ParseException {
  81.912 +            return new TzUrl(parameters, value);
  81.913 +        }
  81.914 +
  81.915 +        public Property createProperty(final String name) {
  81.916 +            return new TzUrl();
  81.917 +        }
  81.918 +    }
  81.919 +
  81.920 +    private static class UidFactory implements PropertyFactory {
  81.921 +        private static final long serialVersionUID = 1L;
  81.922 +
  81.923 +        public Property createProperty(final String name,
  81.924 +                final ParameterList parameters, final String value)
  81.925 +                throws IOException, URISyntaxException, ParseException {
  81.926 +            return new Uid(parameters, value);
  81.927 +        }
  81.928 +
  81.929 +        public Property createProperty(final String name) {
  81.930 +            return new Uid();
  81.931 +        }
  81.932 +    }
  81.933 +
  81.934 +    private static class UrlFactory implements PropertyFactory {
  81.935 +        private static final long serialVersionUID = 1L;
  81.936 +
  81.937 +        public Property createProperty(final String name,
  81.938 +                final ParameterList parameters, final String value)
  81.939 +                throws IOException, URISyntaxException, ParseException {
  81.940 +            return new Url(parameters, value);
  81.941 +        }
  81.942 +
  81.943 +        public Property createProperty(final String name) {
  81.944 +            return new Url();
  81.945 +        }
  81.946 +    }
  81.947 +
  81.948 +    private static class VersionFactory implements PropertyFactory {
  81.949 +        private static final long serialVersionUID = 1L;
  81.950 +
  81.951 +        public Property createProperty(final String name,
  81.952 +                final ParameterList parameters, final String value)
  81.953 +                throws IOException, URISyntaxException, ParseException {
  81.954 +            return new Version(parameters, value);
  81.955 +        }
  81.956 +
  81.957 +        public Property createProperty(final String name) {
  81.958 +            return new Version();
  81.959 +        }
  81.960 +    }
  81.961 +
  81.962 +    /**
  81.963 +     * @return Returns the instance.
  81.964 +     */
  81.965 +    public static PropertyFactoryImpl getInstance() {
  81.966 +        return instance;
  81.967 +    }
  81.968 +
  81.969 +    /**
  81.970 +     * {@inheritDoc}
  81.971 +     */
  81.972 +    public Property createProperty(final String name) {
  81.973 +        final PropertyFactory factory = (PropertyFactory) getFactory(name);
  81.974 +        if (factory != null) {
  81.975 +            return factory.createProperty(name);
  81.976 +        }
  81.977 +        else if (isExperimentalName(name)) {
  81.978 +            return new XProperty(name);
  81.979 +        }
  81.980 +        else if (allowIllegalNames()) {
  81.981 +            return new XProperty(name);
  81.982 +        }
  81.983 +        else {
  81.984 +            throw new IllegalArgumentException("Illegal property [" + name
  81.985 +                    + "]");
  81.986 +        }
  81.987 +    }
  81.988 +
  81.989 +    /**
  81.990 +     * {@inheritDoc}
  81.991 +     */
  81.992 +    public Property createProperty(final String name,
  81.993 +            final ParameterList parameters, final String value)
  81.994 +            throws IOException, URISyntaxException, ParseException {
  81.995 +
  81.996 +        final PropertyFactory factory = (PropertyFactory) getFactory(name);
  81.997 +        if (factory != null) {
  81.998 +            return factory.createProperty(name, parameters, value);
  81.999 +        }
 81.1000 +        else if (isExperimentalName(name)) {
 81.1001 +            return new XProperty(name, parameters, value);
 81.1002 +        }
 81.1003 +        else if (allowIllegalNames()) {
 81.1004 +            return new XProperty(name, parameters, value);
 81.1005 +        }
 81.1006 +        else {
 81.1007 +            throw new IllegalArgumentException("Illegal property [" + name
 81.1008 +                    + "]");
 81.1009 +        }
 81.1010 +    }
 81.1011 +
 81.1012 +    /**
 81.1013 +     * @param name
 81.1014 +     * @return
 81.1015 +     */
 81.1016 +    private boolean isExperimentalName(final String name) {
 81.1017 +        return name.startsWith(Property.EXPERIMENTAL_PREFIX)
 81.1018 +                && name.length() > Property.EXPERIMENTAL_PREFIX.length();
 81.1019 +    }
 81.1020 +}
    82.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    82.2 +++ b/src/net/fortuna/ical4j/model/PropertyFactoryRegistry.java	Tue Feb 10 18:12:00 2015 +0100
    82.3 @@ -0,0 +1,49 @@
    82.4 +/**
    82.5 + * Copyright (c) 2012, Ben Fortuna
    82.6 + * All rights reserved.
    82.7 + *
    82.8 + * Redistribution and use in source and binary forms, with or without
    82.9 + * modification, are permitted provided that the following conditions
   82.10 + * are met:
   82.11 + *
   82.12 + *  o Redistributions of source code must retain the above copyright
   82.13 + * notice, this list of conditions and the following disclaimer.
   82.14 + *
   82.15 + *  o Redistributions in binary form must reproduce the above copyright
   82.16 + * notice, this list of conditions and the following disclaimer in the
   82.17 + * documentation and/or other materials provided with the distribution.
   82.18 + *
   82.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
   82.20 + * may be used to endorse or promote products derived from this software
   82.21 + * without specific prior written permission.
   82.22 + *
   82.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   82.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   82.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   82.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
   82.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   82.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   82.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   82.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   82.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   82.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   82.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   82.34 + */
   82.35 +package net.fortuna.ical4j.model;
   82.36 +
   82.37 +/**
   82.38 + * @author fortuna
   82.39 + *
   82.40 + */
   82.41 +public final class PropertyFactoryRegistry extends PropertyFactoryImpl {
   82.42 +
   82.43 +    private static final long serialVersionUID = 3924903719847189199L;
   82.44 +
   82.45 +    /**
   82.46 +     * @param name a non-standard property name
   82.47 +     * @param factory a factory for the non-standard property
   82.48 +     */
   82.49 +    public void register(String name, PropertyFactory factory) {
   82.50 +        registerExtendedFactory(name, factory);
   82.51 +    }
   82.52 +}
    83.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    83.2 +++ b/src/net/fortuna/ical4j/model/PropertyList.java	Tue Feb 10 18:12:00 2015 +0100
    83.3 @@ -0,0 +1,156 @@
    83.4 +/**
    83.5 + * Copyright (c) 2012, Ben Fortuna
    83.6 + * All rights reserved.
    83.7 + *
    83.8 + * Redistribution and use in source and binary forms, with or without
    83.9 + * modification, are permitted provided that the following conditions
   83.10 + * are met:
   83.11 + *
   83.12 + *  o Redistributions of source code must retain the above copyright
   83.13 + * notice, this list of conditions and the following disclaimer.
   83.14 + *
   83.15 + *  o Redistributions in binary form must reproduce the above copyright
   83.16 + * notice, this list of conditions and the following disclaimer in the
   83.17 + * documentation and/or other materials provided with the distribution.
   83.18 + *
   83.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
   83.20 + * may be used to endorse or promote products derived from this software
   83.21 + * without specific prior written permission.
   83.22 + *
   83.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   83.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   83.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   83.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
   83.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   83.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   83.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   83.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   83.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   83.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   83.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   83.34 + */
   83.35 +package net.fortuna.ical4j.model;
   83.36 +
   83.37 +import java.io.IOException;
   83.38 +import java.io.Serializable;
   83.39 +import java.net.URISyntaxException;
   83.40 +import java.text.ParseException;
   83.41 +import java.util.ArrayList;
   83.42 +import java.util.Iterator;
   83.43 +
   83.44 +/**
   83.45 + * $Id$ [Apr 5, 2004]
   83.46 + *
   83.47 + * Defines a list of iCalendar properties.
   83.48 + * @author Ben Fortuna
   83.49 + */
   83.50 +public class PropertyList extends ArrayList implements Serializable {
   83.51 +
   83.52 +    private static final long serialVersionUID = -8875923766224921031L;
   83.53 +
   83.54 +    /**
   83.55 +     * Default constructor.
   83.56 +     */
   83.57 +    public PropertyList() {
   83.58 +    }
   83.59 +
   83.60 +    /**
   83.61 +     * Creates a new instance with the specified initial capacity.
   83.62 +     * @param initialCapacity the initial capacity of the list
   83.63 +     */
   83.64 +    public PropertyList(final int initialCapacity) {
   83.65 +        super(initialCapacity);
   83.66 +    }
   83.67 +
   83.68 +    /**
   83.69 +     * Creates a deep copy of the specified property list.
   83.70 +     * @param properties a property list
   83.71 +     * @throws ParseException where property data cannot be parsed
   83.72 +     * @throws IOException where property data cannot be read
   83.73 +     * @throws URISyntaxException where a property contains an invalid URI
   83.74 +     */
   83.75 +    public PropertyList(PropertyList properties) throws ParseException, IOException, URISyntaxException {
   83.76 +        super();
   83.77 +        for (final Iterator i = properties.iterator(); i.hasNext();) {
   83.78 +            final Property p = (Property) i.next();
   83.79 +            add(p.copy());
   83.80 +        }
   83.81 +    }
   83.82 +
   83.83 +    /**
   83.84 +     * {@inheritDoc}
   83.85 +     */
   83.86 +    public final String toString() {
   83.87 +        final StringBuffer buffer = new StringBuffer();
   83.88 +        for (final Iterator i = iterator(); i.hasNext();) {
   83.89 +            buffer.append(i.next().toString());
   83.90 +        }
   83.91 +        return buffer.toString();
   83.92 +    }
   83.93 +
   83.94 +    /**
   83.95 +     * Returns the first property of specified name.
   83.96 +     * @param aName name of property to return
   83.97 +     * @return a property or null if no matching property found
   83.98 +     */
   83.99 +    public final Property getProperty(final String aName) {
  83.100 +        for (final Iterator i = iterator(); i.hasNext();) {
  83.101 +            final Property p = (Property) i.next();
  83.102 +            if (p.getName().equalsIgnoreCase(aName)) {
  83.103 +                return p;
  83.104 +            }
  83.105 +        }
  83.106 +        return null;
  83.107 +    }
  83.108 +
  83.109 +    /**
  83.110 +     * Returns a list of properties with the specified name.
  83.111 +     * @param name name of properties to return
  83.112 +     * @return a property list
  83.113 +     */
  83.114 +    public final PropertyList getProperties(final String name) {
  83.115 +        final PropertyList list = new PropertyList();
  83.116 +        for (final Iterator i = iterator(); i.hasNext();) {
  83.117 +            final Property p = (Property) i.next();
  83.118 +            if (p.getName().equalsIgnoreCase(name)) {
  83.119 +                list.add(p);
  83.120 +            }
  83.121 +        }
  83.122 +        return list;
  83.123 +    }
  83.124 +
  83.125 +    /**
  83.126 +     * Add a property to the list.
  83.127 +     * @param property the property to add
  83.128 +     * @return true
  83.129 +     * @see java.util.List#add(java.lang.Object)
  83.130 +     */
  83.131 +    public final boolean add(final Property property) {
  83.132 +        return add((Object) property);
  83.133 +    }
  83.134 +
  83.135 +    /**
  83.136 +     * Overrides superclass to throw an <code>IllegalArgumentException</code> where argument is not a
  83.137 +     * <code>net.fortuna.ical4j.model.Property</code>.
  83.138 +     * @param property a property to add
  83.139 +     * @return true if the property is added, otherwise false
  83.140 +     * @see java.util.List#add(E)
  83.141 +     */
  83.142 +    public final boolean add(final Object property) {
  83.143 +        if (!(property instanceof Property)) {
  83.144 +            throw new IllegalArgumentException("Argument not a "
  83.145 +                    + Property.class.getName());
  83.146 +        }
  83.147 +        return super.add(property);
  83.148 +    }
  83.149 +
  83.150 +    /**
  83.151 +     * Remove a property from the list.
  83.152 +     * @param property the property to remove
  83.153 +     * @return true if the list contained the specified property
  83.154 +     * @see java.util.List#remove(java.lang.Object)
  83.155 +     */
  83.156 +    public final boolean remove(final Property property) {
  83.157 +        return remove((Object) property);
  83.158 +    }
  83.159 +}
    84.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    84.2 +++ b/src/net/fortuna/ical4j/model/Recur.java	Tue Feb 10 18:12:00 2015 +0100
    84.3 @@ -0,0 +1,1246 @@
    84.4 +/**
    84.5 + * Copyright (c) 2012, Ben Fortuna
    84.6 + * All rights reserved.
    84.7 + *
    84.8 + * Redistribution and use in source and binary forms, with or without
    84.9 + * modification, are permitted provided that the following conditions
   84.10 + * are met:
   84.11 + *
   84.12 + *  o Redistributions of source code must retain the above copyright
   84.13 + * notice, this list of conditions and the following disclaimer.
   84.14 + *
   84.15 + *  o Redistributions in binary form must reproduce the above copyright
   84.16 + * notice, this list of conditions and the following disclaimer in the
   84.17 + * documentation and/or other materials provided with the distribution.
   84.18 + *
   84.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
   84.20 + * may be used to endorse or promote products derived from this software
   84.21 + * without specific prior written permission.
   84.22 + *
   84.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   84.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   84.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   84.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
   84.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   84.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   84.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   84.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   84.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   84.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   84.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   84.34 + */
   84.35 +package net.fortuna.ical4j.model;
   84.36 +
   84.37 +import java.io.IOException;
   84.38 +import java.io.Serializable;
   84.39 +import java.text.ParseException;
   84.40 +import java.util.Calendar;
   84.41 +import java.util.Collections;
   84.42 +import java.util.HashMap;
   84.43 +import java.util.Iterator;
   84.44 +import java.util.List;
   84.45 +import java.util.Map;
   84.46 +import java.util.NoSuchElementException;
   84.47 +import java.util.StringTokenizer;
   84.48 +
   84.49 +import net.fortuna.ical4j.model.parameter.Value;
   84.50 +import net.fortuna.ical4j.util.Configurator;
   84.51 +import net.fortuna.ical4j.util.Dates;
   84.52 +
   84.53 +import org.apache.commons.logging.Log;
   84.54 +import org.apache.commons.logging.LogFactory;
   84.55 +
   84.56 +/**
   84.57 + * $Id$ [18-Apr-2004]
   84.58 + *
   84.59 + * Defines a recurrence.
   84.60 + * @version 2.0
   84.61 + * @author Ben Fortuna
   84.62 + */
   84.63 +public class Recur implements Serializable {
   84.64 +
   84.65 +    private static final long serialVersionUID = -7333226591784095142L;
   84.66 +
   84.67 +    private static final String FREQ = "FREQ";
   84.68 +
   84.69 +    private static final String UNTIL = "UNTIL";
   84.70 +
   84.71 +    private static final String COUNT = "COUNT";
   84.72 +
   84.73 +    private static final String INTERVAL = "INTERVAL";
   84.74 +
   84.75 +    private static final String BYSECOND = "BYSECOND";
   84.76 +
   84.77 +    private static final String BYMINUTE = "BYMINUTE";
   84.78 +
   84.79 +    private static final String BYHOUR = "BYHOUR";
   84.80 +
   84.81 +    private static final String BYDAY = "BYDAY";
   84.82 +
   84.83 +    private static final String BYMONTHDAY = "BYMONTHDAY";
   84.84 +
   84.85 +    private static final String BYYEARDAY = "BYYEARDAY";
   84.86 +
   84.87 +    private static final String BYWEEKNO = "BYWEEKNO";
   84.88 +
   84.89 +    private static final String BYMONTH = "BYMONTH";
   84.90 +
   84.91 +    private static final String BYSETPOS = "BYSETPOS";
   84.92 +
   84.93 +    private static final String WKST = "WKST";
   84.94 +
   84.95 +    /**
   84.96 +     * Second frequency resolution.
   84.97 +     */
   84.98 +    public static final String SECONDLY = "SECONDLY";
   84.99 +
  84.100 +    /**
  84.101 +     * Minute frequency resolution.
  84.102 +     */
  84.103 +    public static final String MINUTELY = "MINUTELY";
  84.104 +
  84.105 +    /**
  84.106 +     * Hour frequency resolution.
  84.107 +     */
  84.108 +    public static final String HOURLY = "HOURLY";
  84.109 +
  84.110 +    /**
  84.111 +     * Day frequency resolution.
  84.112 +     */
  84.113 +    public static final String DAILY = "DAILY";
  84.114 +
  84.115 +    /**
  84.116 +     * Week frequency resolution.
  84.117 +     */
  84.118 +    public static final String WEEKLY = "WEEKLY";
  84.119 +
  84.120 +    /**
  84.121 +     * Month frequency resolution.
  84.122 +     */
  84.123 +    public static final String MONTHLY = "MONTHLY";
  84.124 +
  84.125 +    /**
  84.126 +     * Year frequency resolution.
  84.127 +     */
  84.128 +    public static final String YEARLY = "YEARLY";
  84.129 +
  84.130 +    /**
  84.131 +     * When calculating dates matching this recur ({@code getDates()} or {@code getNextDate}),
  84.132 +     *  this property defines the maximum number of attempt to find a matching date by
  84.133 +     * incrementing the seed.
  84.134 +     * <p>The default value is 1000. A value of -1 corresponds to no maximum.</p>
  84.135 +     */
  84.136 +    public static final String KEY_MAX_INCREMENT_COUNT = "net.fortuna.ical4j.recur.maxincrementcount";
  84.137 +
  84.138 +    private static int maxIncrementCount;
  84.139 +    static {
  84.140 +        final String value = Configurator.getProperty(KEY_MAX_INCREMENT_COUNT);
  84.141 +        if (value != null && value.length() > 0) {
  84.142 +            maxIncrementCount = Integer.parseInt(value);
  84.143 +        } else {
  84.144 +            maxIncrementCount = 1000;
  84.145 +        }
  84.146 +    }
  84.147 +
  84.148 +    private transient Log log = LogFactory.getLog(Recur.class);
  84.149 +
  84.150 +    private String frequency;
  84.151 +
  84.152 +    private Date until;
  84.153 +
  84.154 +    private int count = -1;
  84.155 +
  84.156 +    private int interval = -1;
  84.157 +
  84.158 +    private NumberList secondList;
  84.159 +
  84.160 +    private NumberList minuteList;
  84.161 +
  84.162 +    private NumberList hourList;
  84.163 +
  84.164 +    private WeekDayList dayList;
  84.165 +
  84.166 +    private NumberList monthDayList;
  84.167 +
  84.168 +    private NumberList yearDayList;
  84.169 +
  84.170 +    private NumberList weekNoList;
  84.171 +
  84.172 +    private NumberList monthList;
  84.173 +
  84.174 +    private NumberList setPosList;
  84.175 +
  84.176 +    private String weekStartDay;
  84.177 +
  84.178 +    private Map experimentalValues = new HashMap();
  84.179 +
  84.180 +    // Calendar field we increment based on frequency.
  84.181 +    private int calIncField;
  84.182 +
  84.183 +    /**
  84.184 +     * Default constructor.
  84.185 +     */
  84.186 +    public Recur() {
  84.187 +    }
  84.188 +    
  84.189 +    /**
  84.190 +     * Constructs a new instance from the specified string value.
  84.191 +     * @param aValue a string representation of a recurrence.
  84.192 +     * @throws ParseException thrown when the specified string contains an invalid representation of an UNTIL date value
  84.193 +     */
  84.194 +    public Recur(final String aValue) throws ParseException {
  84.195 +        final StringTokenizer t = new StringTokenizer(aValue, ";=");
  84.196 +        while (t.hasMoreTokens()) {
  84.197 +            final String token = t.nextToken();
  84.198 +            if (FREQ.equals(token)) {
  84.199 +                frequency = nextToken(t, token);
  84.200 +            }
  84.201 +            else if (UNTIL.equals(token)) {
  84.202 +                final String untilString = nextToken(t, token);
  84.203 +                if (untilString != null && untilString.indexOf("T") >= 0) {
  84.204 +                    until = new DateTime(untilString);
  84.205 +                    // UNTIL must be specified in UTC time..
  84.206 +                    ((DateTime) until).setUtc(true);
  84.207 +                }
  84.208 +                else {
  84.209 +                    until = new Date(untilString);
  84.210 +                }
  84.211 +            }
  84.212 +            else if (COUNT.equals(token)) {
  84.213 +                count = Integer.parseInt(nextToken(t, token));
  84.214 +            }
  84.215 +            else if (INTERVAL.equals(token)) {
  84.216 +                interval = Integer.parseInt(nextToken(t, token));
  84.217 +            }
  84.218 +            else if (BYSECOND.equals(token)) {
  84.219 +                secondList = new NumberList(nextToken(t, token), 0, 59, false);
  84.220 +            }
  84.221 +            else if (BYMINUTE.equals(token)) {
  84.222 +                minuteList = new NumberList(nextToken(t, token), 0, 59, false);
  84.223 +            }
  84.224 +            else if (BYHOUR.equals(token)) {
  84.225 +                hourList = new NumberList(nextToken(t, token), 0, 23, false);
  84.226 +            }
  84.227 +            else if (BYDAY.equals(token)) {
  84.228 +                dayList = new WeekDayList(nextToken(t, token));
  84.229 +            }
  84.230 +            else if (BYMONTHDAY.equals(token)) {
  84.231 +                monthDayList = new NumberList(nextToken(t, token), 1, 31, true);
  84.232 +            }
  84.233 +            else if (BYYEARDAY.equals(token)) {
  84.234 +                yearDayList = new NumberList(nextToken(t, token), 1, 366, true);
  84.235 +            }
  84.236 +            else if (BYWEEKNO.equals(token)) {
  84.237 +                weekNoList = new NumberList(nextToken(t, token), 1, 53, true);
  84.238 +            }
  84.239 +            else if (BYMONTH.equals(token)) {
  84.240 +                monthList = new NumberList(nextToken(t, token), 1, 12, false);
  84.241 +            }
  84.242 +            else if (BYSETPOS.equals(token)) {
  84.243 +                setPosList = new NumberList(nextToken(t, token), 1, 366, true);
  84.244 +            }
  84.245 +            else if (WKST.equals(token)) {
  84.246 +                weekStartDay = nextToken(t, token);
  84.247 +            }
  84.248 +            // assume experimental value..
  84.249 +            else {
  84.250 +                experimentalValues.put(token, nextToken(t, token));
  84.251 +            }
  84.252 +        }
  84.253 +        validateFrequency();
  84.254 +    }
  84.255 +
  84.256 +    private String nextToken(StringTokenizer t, String lastToken) {
  84.257 +        try {
  84.258 +            return t.nextToken();
  84.259 +        }
  84.260 +        catch (NoSuchElementException e) {
  84.261 +            throw new IllegalArgumentException("Missing expected token, last token: " + lastToken);
  84.262 +        }
  84.263 +    }
  84.264 +    
  84.265 +    /**
  84.266 +     * @param frequency a recurrence frequency string
  84.267 +     * @param until maximum recurrence date
  84.268 +     */
  84.269 +    public Recur(final String frequency, final Date until) {
  84.270 +        this.frequency = frequency;
  84.271 +        this.until = until;
  84.272 +        validateFrequency();
  84.273 +    }
  84.274 +
  84.275 +    /**
  84.276 +     * @param frequency a recurrence frequency string
  84.277 +     * @param count maximum recurrence count
  84.278 +     */
  84.279 +    public Recur(final String frequency, final int count) {
  84.280 +        this.frequency = frequency;
  84.281 +        this.count = count;
  84.282 +        validateFrequency();
  84.283 +    }
  84.284 +
  84.285 +    /**
  84.286 +     * @return Returns the dayList.
  84.287 +     */
  84.288 +    public final WeekDayList getDayList() {
  84.289 +        if (dayList == null) {
  84.290 +            dayList = new WeekDayList();
  84.291 +        }
  84.292 +        return dayList;
  84.293 +    }
  84.294 +
  84.295 +    /**
  84.296 +     * @return Returns the hourList.
  84.297 +     */
  84.298 +    public final NumberList getHourList() {
  84.299 +        if (hourList == null) {
  84.300 +            hourList = new NumberList(0, 23, false);
  84.301 +        }
  84.302 +        return hourList;
  84.303 +    }
  84.304 +
  84.305 +    /**
  84.306 +     * @return Returns the minuteList.
  84.307 +     */
  84.308 +    public final NumberList getMinuteList() {
  84.309 +        if (minuteList == null) {
  84.310 +            minuteList = new NumberList(0, 59, false);
  84.311 +        }
  84.312 +        return minuteList;
  84.313 +    }
  84.314 +
  84.315 +    /**
  84.316 +     * @return Returns the monthDayList.
  84.317 +     */
  84.318 +    public final NumberList getMonthDayList() {
  84.319 +        if (monthDayList == null) {
  84.320 +            monthDayList = new NumberList(1, 31, true);
  84.321 +        }
  84.322 +        return monthDayList;
  84.323 +    }
  84.324 +
  84.325 +    /**
  84.326 +     * @return Returns the monthList.
  84.327 +     */
  84.328 +    public final NumberList getMonthList() {
  84.329 +        if (monthList == null) {
  84.330 +            monthList = new NumberList(1, 12, false);
  84.331 +        }
  84.332 +        return monthList;
  84.333 +    }
  84.334 +
  84.335 +    /**
  84.336 +     * @return Returns the secondList.
  84.337 +     */
  84.338 +    public final NumberList getSecondList() {
  84.339 +        if (secondList == null) {
  84.340 +            secondList = new NumberList(0, 59, false);
  84.341 +        }
  84.342 +        return secondList;
  84.343 +    }
  84.344 +
  84.345 +    /**
  84.346 +     * @return Returns the setPosList.
  84.347 +     */
  84.348 +    public final NumberList getSetPosList() {
  84.349 +        if (setPosList == null) {
  84.350 +            setPosList = new NumberList(1, 366, true);
  84.351 +        }
  84.352 +        return setPosList;
  84.353 +    }
  84.354 +
  84.355 +    /**
  84.356 +     * @return Returns the weekNoList.
  84.357 +     */
  84.358 +    public final NumberList getWeekNoList() {
  84.359 +        if (weekNoList == null) {
  84.360 +            weekNoList = new NumberList(1, 53, true);
  84.361 +        }
  84.362 +        return weekNoList;
  84.363 +    }
  84.364 +
  84.365 +    /**
  84.366 +     * @return Returns the yearDayList.
  84.367 +     */
  84.368 +    public final NumberList getYearDayList() {
  84.369 +        if (yearDayList == null) {
  84.370 +            yearDayList = new NumberList(1, 366, true);
  84.371 +        }
  84.372 +        return yearDayList;
  84.373 +    }
  84.374 +
  84.375 +    /**
  84.376 +     * @return Returns the count or -1 if the rule does not have a count.
  84.377 +     */
  84.378 +    public final int getCount() {
  84.379 +        return count;
  84.380 +    }
  84.381 +
  84.382 +    /**
  84.383 +     * @return Returns the experimentalValues.
  84.384 +     */
  84.385 +    public final Map getExperimentalValues() {
  84.386 +        return experimentalValues;
  84.387 +    }
  84.388 +
  84.389 +    /**
  84.390 +     * @return Returns the frequency.
  84.391 +     */
  84.392 +    public final String getFrequency() {
  84.393 +        return frequency;
  84.394 +    }
  84.395 +
  84.396 +    /**
  84.397 +     * @return Returns the interval or -1 if the rule does not have an interval defined.
  84.398 +     */
  84.399 +    public final int getInterval() {
  84.400 +        return interval;
  84.401 +    }
  84.402 +
  84.403 +    /**
  84.404 +     * @return Returns the until or null if there is none.
  84.405 +     */
  84.406 +    public final Date getUntil() {
  84.407 +        return until;
  84.408 +    }
  84.409 +
  84.410 +    /**
  84.411 +     * @return Returns the weekStartDay or null if there is none.
  84.412 +     */
  84.413 +    public final String getWeekStartDay() {
  84.414 +        return weekStartDay;
  84.415 +    }
  84.416 +
  84.417 +    /**
  84.418 +     * @param weekStartDay The weekStartDay to set.
  84.419 +     */
  84.420 +    public final void setWeekStartDay(final String weekStartDay) {
  84.421 +        this.weekStartDay = weekStartDay;
  84.422 +    }
  84.423 +
  84.424 +    /**
  84.425 +     * {@inheritDoc}
  84.426 +     */
  84.427 +    public final String toString() {
  84.428 +        final StringBuffer b = new StringBuffer();
  84.429 +        b.append(FREQ);
  84.430 +        b.append('=');
  84.431 +        b.append(frequency);
  84.432 +        if (weekStartDay != null) {
  84.433 +            b.append(';');
  84.434 +            b.append(WKST);
  84.435 +            b.append('=');
  84.436 +            b.append(weekStartDay);
  84.437 +        }
  84.438 +        if (until != null) {
  84.439 +            b.append(';');
  84.440 +            b.append(UNTIL);
  84.441 +            b.append('=');
  84.442 +            // Note: date-time representations should always be in UTC time.
  84.443 +            b.append(until);
  84.444 +        }
  84.445 +        if (count >= 1) {
  84.446 +            b.append(';');
  84.447 +            b.append(COUNT);
  84.448 +            b.append('=');
  84.449 +            b.append(count);
  84.450 +        }
  84.451 +        if (interval >= 1) {
  84.452 +            b.append(';');
  84.453 +            b.append(INTERVAL);
  84.454 +            b.append('=');
  84.455 +            b.append(interval);
  84.456 +        }
  84.457 +        if (!getMonthList().isEmpty()) {
  84.458 +            b.append(';');
  84.459 +            b.append(BYMONTH);
  84.460 +            b.append('=');
  84.461 +            b.append(monthList);
  84.462 +        }
  84.463 +        if (!getWeekNoList().isEmpty()) {
  84.464 +            b.append(';');
  84.465 +            b.append(BYWEEKNO);
  84.466 +            b.append('=');
  84.467 +            b.append(weekNoList);
  84.468 +        }
  84.469 +        if (!getYearDayList().isEmpty()) {
  84.470 +            b.append(';');
  84.471 +            b.append(BYYEARDAY);
  84.472 +            b.append('=');
  84.473 +            b.append(yearDayList);
  84.474 +        }
  84.475 +        if (!getMonthDayList().isEmpty()) {
  84.476 +            b.append(';');
  84.477 +            b.append(BYMONTHDAY);
  84.478 +            b.append('=');
  84.479 +            b.append(monthDayList);
  84.480 +        }
  84.481 +        if (!getDayList().isEmpty()) {
  84.482 +            b.append(';');
  84.483 +            b.append(BYDAY);
  84.484 +            b.append('=');
  84.485 +            b.append(dayList);
  84.486 +        }
  84.487 +        if (!getHourList().isEmpty()) {
  84.488 +            b.append(';');
  84.489 +            b.append(BYHOUR);
  84.490 +            b.append('=');
  84.491 +            b.append(hourList);
  84.492 +        }
  84.493 +        if (!getMinuteList().isEmpty()) {
  84.494 +            b.append(';');
  84.495 +            b.append(BYMINUTE);
  84.496 +            b.append('=');
  84.497 +            b.append(minuteList);
  84.498 +        }
  84.499 +        if (!getSecondList().isEmpty()) {
  84.500 +            b.append(';');
  84.501 +            b.append(BYSECOND);
  84.502 +            b.append('=');
  84.503 +            b.append(secondList);
  84.504 +        }
  84.505 +        if (!getSetPosList().isEmpty()) {
  84.506 +            b.append(';');
  84.507 +            b.append(BYSETPOS);
  84.508 +            b.append('=');
  84.509 +            b.append(setPosList);
  84.510 +        }
  84.511 +        return b.toString();
  84.512 +    }
  84.513 +
  84.514 +    /**
  84.515 +     * Returns a list of start dates in the specified period represented by this recur. Any date fields not specified by
  84.516 +     * this recur are retained from the period start, and as such you should ensure the period start is initialised
  84.517 +     * correctly.
  84.518 +     * @param periodStart the start of the period
  84.519 +     * @param periodEnd the end of the period
  84.520 +     * @param value the type of dates to generate (i.e. date/date-time)
  84.521 +     * @return a list of dates
  84.522 +     */
  84.523 +    public final DateList getDates(final Date periodStart,
  84.524 +            final Date periodEnd, final Value value) {
  84.525 +        return getDates(periodStart, periodStart, periodEnd, value, -1);
  84.526 +    }
  84.527 +
  84.528 +    /**
  84.529 +     * Convenience method for retrieving recurrences in a specified period.
  84.530 +     * @param seed a seed date for generating recurrence instances
  84.531 +     * @param period the period of returned recurrence dates
  84.532 +     * @param value type of dates to generate
  84.533 +     * @return a list of dates
  84.534 +     */
  84.535 +    public final DateList getDates(final Date seed, final Period period,
  84.536 +            final Value value) {
  84.537 +        return getDates(seed, period.getStart(), period.getEnd(), value, -1);
  84.538 +    }
  84.539 +
  84.540 +    /**
  84.541 +     * Returns a list of start dates in the specified period represented by this recur. This method includes a base date
  84.542 +     * argument, which indicates the start of the fist occurrence of this recurrence. The base date is used to inject
  84.543 +     * default values to return a set of dates in the correct format. For example, if the search start date (start) is
  84.544 +     * Wed, Mar 23, 12:19PM, but the recurrence is Mon - Fri, 9:00AM - 5:00PM, the start dates returned should all be at
  84.545 +     * 9:00AM, and not 12:19PM.
  84.546 +     * @return a list of dates represented by this recur instance
  84.547 +     * @param seed the start date of this Recurrence's first instance
  84.548 +     * @param periodStart the start of the period
  84.549 +     * @param periodEnd the end of the period
  84.550 +     * @param value the type of dates to generate (i.e. date/date-time)
  84.551 +     */
  84.552 +    public final DateList getDates(final Date seed, final Date periodStart,
  84.553 +            final Date periodEnd, final Value value) {
  84.554 +         return getDates(seed, periodStart, periodEnd, value, -1);
  84.555 +    }
  84.556 +
  84.557 +    /**
  84.558 +     * Returns a list of start dates in the specified period represented by this recur. This method includes a base date
  84.559 +     * argument, which indicates the start of the fist occurrence of this recurrence. The base date is used to inject
  84.560 +     * default values to return a set of dates in the correct format. For example, if the search start date (start) is
  84.561 +     * Wed, Mar 23, 12:19PM, but the recurrence is Mon - Fri, 9:00AM - 5:00PM, the start dates returned should all be at
  84.562 +     * 9:00AM, and not 12:19PM.
  84.563 +     * @return a list of dates represented by this recur instance
  84.564 +     * @param seed the start date of this Recurrence's first instance
  84.565 +     * @param periodStart the start of the period
  84.566 +     * @param periodEnd the end of the period
  84.567 +     * @param value the type of dates to generate (i.e. date/date-time)
  84.568 +     * @param maxCount limits the number of instances returned. Up to one years
  84.569 +     *       worth extra may be returned. Less than 0 means no limit
  84.570 +     */
  84.571 +    public final DateList getDates(final Date seed, final Date periodStart,
  84.572 +                                   final Date periodEnd, final Value value,
  84.573 +                                   final int maxCount) {
  84.574 +
  84.575 +        final DateList dates = new DateList(value);
  84.576 +        if (seed instanceof DateTime) {
  84.577 +            if (((DateTime) seed).isUtc()) {
  84.578 +                dates.setUtc(true);
  84.579 +            }
  84.580 +            else {
  84.581 +                dates.setTimeZone(((DateTime) seed).getTimeZone());
  84.582 +            }
  84.583 +        }
  84.584 +        final Calendar cal = Dates.getCalendarInstance(seed);
  84.585 +        cal.setTime(seed);
  84.586 +
  84.587 +        // optimize the start time for selecting candidates
  84.588 +        // (only applicable where a COUNT is not specified)
  84.589 +        if (getCount() < 1) {
  84.590 +            final Calendar seededCal = (Calendar) cal.clone();
  84.591 +            while (seededCal.getTime().before(periodStart)) {
  84.592 +                cal.setTime(seededCal.getTime());
  84.593 +                increment(seededCal);
  84.594 +            }
  84.595 +        }
  84.596 +
  84.597 +        int invalidCandidateCount = 0;
  84.598 +        int noCandidateIncrementCount = 0;
  84.599 +        Date candidate = null;
  84.600 +        while ((maxCount < 0) || (dates.size() < maxCount)) {
  84.601 +            final Date candidateSeed = Dates.getInstance(cal.getTime(), value);
  84.602 +
  84.603 +            if (getUntil() != null && candidate != null
  84.604 +                    && candidate.after(getUntil())) {
  84.605 +
  84.606 +                break;
  84.607 +            }
  84.608 +            if (periodEnd != null && candidate != null
  84.609 +                    && candidate.after(periodEnd)) {
  84.610 +
  84.611 +                break;
  84.612 +            }
  84.613 +            if (getCount() >= 1
  84.614 +                    && (dates.size() + invalidCandidateCount) >= getCount()) {
  84.615 +
  84.616 +                break;
  84.617 +            }
  84.618 +
  84.619 +//            if (Value.DATE_TIME.equals(value)) {
  84.620 +            if (candidateSeed instanceof DateTime) {
  84.621 +                if (dates.isUtc()) {
  84.622 +                    ((DateTime) candidateSeed).setUtc(true);
  84.623 +                }
  84.624 +                else {
  84.625 +                    ((DateTime) candidateSeed).setTimeZone(dates.getTimeZone());
  84.626 +                }
  84.627 +            }
  84.628 +
  84.629 +            final DateList candidates = getCandidates(candidateSeed, value);
  84.630 +            if (!candidates.isEmpty()) {
  84.631 +                noCandidateIncrementCount = 0;
  84.632 +                // sort candidates for identifying when UNTIL date is exceeded..
  84.633 +                Collections.sort(candidates);
  84.634 +                for (final Iterator i = candidates.iterator(); i.hasNext();) {
  84.635 +                    candidate = (Date) i.next();
  84.636 +                    // don't count candidates that occur before the seed date..
  84.637 +                    if (!candidate.before(seed)) {
  84.638 +                        // candidates exclusive of periodEnd..
  84.639 +                        if (candidate.before(periodStart)
  84.640 +                                || !candidate.before(periodEnd)) {
  84.641 +                            invalidCandidateCount++;
  84.642 +                        } else if (getCount() >= 1
  84.643 +                                && (dates.size() + invalidCandidateCount) >= getCount()) {
  84.644 +                            break;
  84.645 +                        } else if (!(getUntil() != null
  84.646 +                                && candidate.after(getUntil()))) {
  84.647 +                            dates.add(candidate);
  84.648 +                        }
  84.649 +                    }
  84.650 +                }
  84.651 +            } else {
  84.652 +                noCandidateIncrementCount++;
  84.653 +                if ((maxIncrementCount > 0) && (noCandidateIncrementCount > maxIncrementCount)) {
  84.654 +                    break;
  84.655 +                }
  84.656 +            }
  84.657 +            increment(cal);
  84.658 +        }
  84.659 +        // sort final list..
  84.660 +        Collections.sort(dates);
  84.661 +        return dates;
  84.662 +    }
  84.663 +    
  84.664 +    /**
  84.665 +     * Returns the the next date of this recurrence given a seed date
  84.666 +     * and start date.  The seed date indicates the start of the fist 
  84.667 +     * occurrence of this recurrence. The start date is the
  84.668 +     * starting date to search for the next recurrence.  Return null
  84.669 +     * if there is no occurrence date after start date.
  84.670 +     * @return the next date in the recurrence series after startDate
  84.671 +     * @param seed the start date of this Recurrence's first instance
  84.672 +     * @param startDate the date to start the search
  84.673 +     */
  84.674 +    public final Date getNextDate(final Date seed, final Date startDate) {
  84.675 +
  84.676 +        final Calendar cal = Dates.getCalendarInstance(seed);
  84.677 +        cal.setTime(seed);
  84.678 +
  84.679 +        // optimize the start time for selecting candidates
  84.680 +        // (only applicable where a COUNT is not specified)
  84.681 +        if (getCount() < 1) {
  84.682 +            final Calendar seededCal = (Calendar) cal.clone();
  84.683 +            while (seededCal.getTime().before(startDate)) {
  84.684 +                cal.setTime(seededCal.getTime());
  84.685 +                increment(seededCal);
  84.686 +            }
  84.687 +        }
  84.688 +
  84.689 +        int invalidCandidateCount = 0;
  84.690 +        int noCandidateIncrementCount = 0;
  84.691 +        Date candidate = null;
  84.692 +        final Value value = seed instanceof DateTime ? Value.DATE_TIME : Value.DATE;
  84.693 +        
  84.694 +        while (true) {
  84.695 +            final Date candidateSeed = Dates.getInstance(cal.getTime(), value);
  84.696 +
  84.697 +            if (getUntil() != null && candidate != null && candidate.after(getUntil())) {
  84.698 +                break;
  84.699 +            }
  84.700 +            
  84.701 +            if (getCount() > 0 && invalidCandidateCount >= getCount()) {
  84.702 +                break;
  84.703 +            }
  84.704 +
  84.705 +            if (Value.DATE_TIME.equals(value)) {
  84.706 +                if (((DateTime) seed).isUtc()) {
  84.707 +                    ((DateTime) candidateSeed).setUtc(true);
  84.708 +                }
  84.709 +                else {
  84.710 +                    ((DateTime) candidateSeed).setTimeZone(((DateTime) seed).getTimeZone());
  84.711 +                }
  84.712 +            }
  84.713 +
  84.714 +            final DateList candidates = getCandidates(candidateSeed, value);
  84.715 +            if (!candidates.isEmpty()) {
  84.716 +                noCandidateIncrementCount = 0;
  84.717 +                // sort candidates for identifying when UNTIL date is exceeded..
  84.718 +                Collections.sort(candidates);
  84.719 +
  84.720 +                for (final Iterator i = candidates.iterator(); i.hasNext();) {
  84.721 +                    candidate = (Date) i.next();
  84.722 +                    // don't count candidates that occur before the seed date..
  84.723 +                    if (!candidate.before(seed)) {
  84.724 +                        // Candidate must be after startDate because
  84.725 +                        // we want the NEXT occurrence
  84.726 +                        if (!candidate.after(startDate)) {
  84.727 +                            invalidCandidateCount++;
  84.728 +                        } else if (getCount() > 0
  84.729 +                                && invalidCandidateCount >= getCount()) {
  84.730 +                            break;
  84.731 +                        } else if (!(getUntil() != null
  84.732 +                                && candidate.after(getUntil()))) {
  84.733 +                            return candidate;
  84.734 +                        }
  84.735 +                    }
  84.736 +                }
  84.737 +            } else {
  84.738 +                noCandidateIncrementCount++;
  84.739 +                if ((maxIncrementCount > 0) && (noCandidateIncrementCount > maxIncrementCount)) {
  84.740 +                    break;
  84.741 +                }
  84.742 +            }
  84.743 +            increment(cal);
  84.744 +        }
  84.745 +        return null;
  84.746 +    }
  84.747 +
  84.748 +    /**
  84.749 +     * Increments the specified calendar according to the frequency and interval specified in this recurrence rule.
  84.750 +     * @param cal a java.util.Calendar to increment
  84.751 +     */
  84.752 +    private void increment(final Calendar cal) {
  84.753 +        // initialise interval..
  84.754 +        final int calInterval = (getInterval() >= 1) ? getInterval() : 1;
  84.755 +        cal.add(calIncField, calInterval);
  84.756 +    }
  84.757 +
  84.758 +    /**
  84.759 +     * Returns a list of possible dates generated from the applicable BY* rules, using the specified date as a seed.
  84.760 +     * @param date the seed date
  84.761 +     * @param value the type of date list to return
  84.762 +     * @return a DateList
  84.763 +     */
  84.764 +    private DateList getCandidates(final Date date, final Value value) {
  84.765 +        DateList dates = new DateList(value);
  84.766 +        if (date instanceof DateTime) {
  84.767 +            if (((DateTime) date).isUtc()) {
  84.768 +                dates.setUtc(true);
  84.769 +            }
  84.770 +            else {
  84.771 +                dates.setTimeZone(((DateTime) date).getTimeZone());
  84.772 +            }
  84.773 +        }
  84.774 +        dates.add(date);
  84.775 +        dates = getMonthVariants(dates);
  84.776 +        // debugging..
  84.777 +        if (log.isDebugEnabled()) {
  84.778 +            log.debug("Dates after BYMONTH processing: " + dates);
  84.779 +        }
  84.780 +        dates = getWeekNoVariants(dates);
  84.781 +        // debugging..
  84.782 +        if (log.isDebugEnabled()) {
  84.783 +            log.debug("Dates after BYWEEKNO processing: " + dates);
  84.784 +        }
  84.785 +        dates = getYearDayVariants(dates);
  84.786 +        // debugging..
  84.787 +        if (log.isDebugEnabled()) {
  84.788 +            log.debug("Dates after BYYEARDAY processing: " + dates);
  84.789 +        }
  84.790 +        dates = getMonthDayVariants(dates);
  84.791 +        // debugging..
  84.792 +        if (log.isDebugEnabled()) {
  84.793 +            log.debug("Dates after BYMONTHDAY processing: " + dates);
  84.794 +        }
  84.795 +        dates = getDayVariants(dates);
  84.796 +        // debugging..
  84.797 +        if (log.isDebugEnabled()) {
  84.798 +            log.debug("Dates after BYDAY processing: " + dates);
  84.799 +        }
  84.800 +        dates = getHourVariants(dates);
  84.801 +        // debugging..
  84.802 +        if (log.isDebugEnabled()) {
  84.803 +            log.debug("Dates after BYHOUR processing: " + dates);
  84.804 +        }
  84.805 +        dates = getMinuteVariants(dates);
  84.806 +        // debugging..
  84.807 +        if (log.isDebugEnabled()) {
  84.808 +            log.debug("Dates after BYMINUTE processing: " + dates);
  84.809 +        }
  84.810 +        dates = getSecondVariants(dates);
  84.811 +        // debugging..
  84.812 +        if (log.isDebugEnabled()) {
  84.813 +            log.debug("Dates after BYSECOND processing: " + dates);
  84.814 +        }
  84.815 +        dates = applySetPosRules(dates);
  84.816 +        // debugging..
  84.817 +        if (log.isDebugEnabled()) {
  84.818 +            log.debug("Dates after SETPOS processing: " + dates);
  84.819 +        }
  84.820 +        return dates;
  84.821 +    }
  84.822 +
  84.823 +    /**
  84.824 +     * Applies BYSETPOS rules to <code>dates</code>. Valid positions are from 1 to the size of the date list. Invalid
  84.825 +     * positions are ignored.
  84.826 +     * @param dates
  84.827 +     */
  84.828 +    private DateList applySetPosRules(final DateList dates) {
  84.829 +        // return if no SETPOS rules specified..
  84.830 +        if (getSetPosList().isEmpty()) {
  84.831 +            return dates;
  84.832 +        }
  84.833 +        // sort the list before processing..
  84.834 +        Collections.sort(dates);
  84.835 +        final DateList setPosDates = getDateListInstance(dates);
  84.836 +        final int size = dates.size();
  84.837 +        for (final Iterator i = getSetPosList().iterator(); i.hasNext();) {
  84.838 +            final Integer setPos = (Integer) i.next();
  84.839 +            final int pos = setPos.intValue();
  84.840 +            if (pos > 0 && pos <= size) {
  84.841 +                setPosDates.add(dates.get(pos - 1));
  84.842 +            }
  84.843 +            else if (pos < 0 && pos >= -size) {
  84.844 +                setPosDates.add(dates.get(size + pos));
  84.845 +            }
  84.846 +        }
  84.847 +        return setPosDates;
  84.848 +    }
  84.849 +
  84.850 +    /**
  84.851 +     * Applies BYMONTH rules specified in this Recur instance to the specified date list. If no BYMONTH rules are
  84.852 +     * specified the date list is returned unmodified.
  84.853 +     * @param dates
  84.854 +     * @return
  84.855 +     */
  84.856 +    private DateList getMonthVariants(final DateList dates) {
  84.857 +        if (getMonthList().isEmpty()) {
  84.858 +            return dates;
  84.859 +        }
  84.860 +        final DateList monthlyDates = getDateListInstance(dates);
  84.861 +        for (final Iterator i = dates.iterator(); i.hasNext();) {
  84.862 +            final Date date = (Date) i.next();
  84.863 +            final Calendar cal = Dates.getCalendarInstance(date);
  84.864 +            cal.setTime(date);
  84.865 +            for (final Iterator j = getMonthList().iterator(); j.hasNext();) {
  84.866 +                final Integer month = (Integer) j.next();
  84.867 +                // Java months are zero-based..
  84.868 +//                cal.set(Calendar.MONTH, month.intValue() - 1);
  84.869 +                cal.roll(Calendar.MONTH, (month.intValue() - 1) - cal.get(Calendar.MONTH));
  84.870 +                monthlyDates.add(Dates.getInstance(cal.getTime(), monthlyDates.getType()));
  84.871 +            }
  84.872 +        }
  84.873 +        return monthlyDates;
  84.874 +    }
  84.875 +
  84.876 +    /**
  84.877 +     * Applies BYWEEKNO rules specified in this Recur instance to the specified date list. If no BYWEEKNO rules are
  84.878 +     * specified the date list is returned unmodified.
  84.879 +     * @param dates
  84.880 +     * @return
  84.881 +     */
  84.882 +    private DateList getWeekNoVariants(final DateList dates) {
  84.883 +        if (getWeekNoList().isEmpty()) {
  84.884 +            return dates;
  84.885 +        }
  84.886 +        final DateList weekNoDates = getDateListInstance(dates);
  84.887 +        for (final Iterator i = dates.iterator(); i.hasNext();) {
  84.888 +            final Date date = (Date) i.next();
  84.889 +            final Calendar cal = Dates.getCalendarInstance(date);
  84.890 +            cal.setTime(date);
  84.891 +            for (final Iterator j = getWeekNoList().iterator(); j.hasNext();) {
  84.892 +                final Integer weekNo = (Integer) j.next();
  84.893 +                cal.set(Calendar.WEEK_OF_YEAR, Dates.getAbsWeekNo(cal.getTime(), weekNo.intValue()));
  84.894 +                weekNoDates.add(Dates.getInstance(cal.getTime(), weekNoDates.getType()));
  84.895 +            }
  84.896 +        }
  84.897 +        return weekNoDates;
  84.898 +    }
  84.899 +
  84.900 +    /**
  84.901 +     * Applies BYYEARDAY rules specified in this Recur instance to the specified date list. If no BYYEARDAY rules are
  84.902 +     * specified the date list is returned unmodified.
  84.903 +     * @param dates
  84.904 +     * @return
  84.905 +     */
  84.906 +    private DateList getYearDayVariants(final DateList dates) {
  84.907 +        if (getYearDayList().isEmpty()) {
  84.908 +            return dates;
  84.909 +        }
  84.910 +        final DateList yearDayDates = getDateListInstance(dates);
  84.911 +        for (final Iterator i = dates.iterator(); i.hasNext();) {
  84.912 +            final Date date = (Date) i.next();
  84.913 +            final Calendar cal = Dates.getCalendarInstance(date);
  84.914 +            cal.setTime(date);
  84.915 +            for (final Iterator j = getYearDayList().iterator(); j.hasNext();) {
  84.916 +                final Integer yearDay = (Integer) j.next();
  84.917 +                cal.set(Calendar.DAY_OF_YEAR, Dates.getAbsYearDay(cal.getTime(), yearDay.intValue()));
  84.918 +                yearDayDates.add(Dates.getInstance(cal.getTime(), yearDayDates.getType()));
  84.919 +            }
  84.920 +        }
  84.921 +        return yearDayDates;
  84.922 +    }
  84.923 +
  84.924 +    /**
  84.925 +     * Applies BYMONTHDAY rules specified in this Recur instance to the specified date list. If no BYMONTHDAY rules are
  84.926 +     * specified the date list is returned unmodified.
  84.927 +     * @param dates
  84.928 +     * @return
  84.929 +     */
  84.930 +    private DateList getMonthDayVariants(final DateList dates) {
  84.931 +        if (getMonthDayList().isEmpty()) {
  84.932 +            return dates;
  84.933 +        }
  84.934 +        final DateList monthDayDates = getDateListInstance(dates);
  84.935 +        for (final Iterator i = dates.iterator(); i.hasNext();) {
  84.936 +            final Date date = (Date) i.next();
  84.937 +            final Calendar cal = Dates.getCalendarInstance(date);
  84.938 +            cal.setLenient(false);
  84.939 +            cal.setTime(date);
  84.940 +            for (final Iterator j = getMonthDayList().iterator(); j.hasNext();) {
  84.941 +                final Integer monthDay = (Integer) j.next();
  84.942 +                try {
  84.943 +                    cal.set(Calendar.DAY_OF_MONTH, Dates.getAbsMonthDay(cal.getTime(), monthDay.intValue()));
  84.944 +                    monthDayDates.add(Dates.getInstance(cal.getTime(), monthDayDates.getType()));
  84.945 +                }
  84.946 +                catch (IllegalArgumentException iae) {
  84.947 +                    if (log.isTraceEnabled()) {
  84.948 +                        log.trace("Invalid day of month: " + Dates.getAbsMonthDay(cal
  84.949 +                                .getTime(), monthDay.intValue()));
  84.950 +                    }
  84.951 +                }
  84.952 +            }
  84.953 +        }
  84.954 +        return monthDayDates;
  84.955 +    }
  84.956 +
  84.957 +    /**
  84.958 +     * Applies BYDAY rules specified in this Recur instance to the specified date list. If no BYDAY rules are specified
  84.959 +     * the date list is returned unmodified.
  84.960 +     * @param dates
  84.961 +     * @return
  84.962 +     */
  84.963 +    private DateList getDayVariants(final DateList dates) {
  84.964 +        if (getDayList().isEmpty()) {
  84.965 +            return dates;
  84.966 +        }
  84.967 +        final DateList weekDayDates = getDateListInstance(dates);
  84.968 +        for (final Iterator i = dates.iterator(); i.hasNext();) {
  84.969 +            final Date date = (Date) i.next();
  84.970 +            for (final Iterator j = getDayList().iterator(); j.hasNext();) {
  84.971 +                final WeekDay weekDay = (WeekDay) j.next();
  84.972 +                // if BYYEARDAY or BYMONTHDAY is specified filter existing
  84.973 +                // list..
  84.974 +                if (!getYearDayList().isEmpty() || !getMonthDayList().isEmpty()) {
  84.975 +                    final Calendar cal = Dates.getCalendarInstance(date);
  84.976 +                    cal.setTime(date);
  84.977 +                    if (weekDay.equals(WeekDay.getWeekDay(cal))) {
  84.978 +                        weekDayDates.add(date);
  84.979 +                    }
  84.980 +                }
  84.981 +                else {
  84.982 +                    weekDayDates.addAll(getAbsWeekDays(date, dates.getType(), weekDay));
  84.983 +                }
  84.984 +            }
  84.985 +        }
  84.986 +        return weekDayDates;
  84.987 +    }
  84.988 +
  84.989 +    /**
  84.990 +     * Returns a list of applicable dates corresponding to the specified week day in accordance with the frequency
  84.991 +     * specified by this recurrence rule.
  84.992 +     * @param date
  84.993 +     * @param weekDay
  84.994 +     * @return
  84.995 +     */
  84.996 +    private List getAbsWeekDays(final Date date, final Value type, final WeekDay weekDay) {
  84.997 +        final Calendar cal = Dates.getCalendarInstance(date);
  84.998 +        // default week start is Monday per RFC5545
  84.999 +        int calendarWeekStartDay = Calendar.MONDAY;
 84.1000 +        if (weekStartDay != null) {
 84.1001 +        	calendarWeekStartDay = WeekDay.getCalendarDay(new WeekDay(weekStartDay));
 84.1002 +        }
 84.1003 +        cal.setFirstDayOfWeek(calendarWeekStartDay);
 84.1004 +        cal.setTime(date);
 84.1005 +        
 84.1006 +        final DateList days = new DateList(type);
 84.1007 +        if (date instanceof DateTime) {
 84.1008 +            if (((DateTime) date).isUtc()) {
 84.1009 +                days.setUtc(true);
 84.1010 +            }
 84.1011 +            else {
 84.1012 +                days.setTimeZone(((DateTime) date).getTimeZone());
 84.1013 +            }
 84.1014 +        }
 84.1015 +        final int calDay = WeekDay.getCalendarDay(weekDay);
 84.1016 +        if (calDay == -1) {
 84.1017 +            // a matching weekday cannot be identified..
 84.1018 +            return days;
 84.1019 +        }
 84.1020 +        if (DAILY.equals(getFrequency())) {
 84.1021 +            if (cal.get(Calendar.DAY_OF_WEEK) == calDay) {
 84.1022 +                days.add(Dates.getInstance(cal.getTime(), type));
 84.1023 +            }
 84.1024 +        }
 84.1025 +        else if (WEEKLY.equals(getFrequency()) || !getWeekNoList().isEmpty()) {
 84.1026 +            final int weekNo = cal.get(Calendar.WEEK_OF_YEAR);
 84.1027 +            // construct a list of possible week days..
 84.1028 +            cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek());
 84.1029 +            while (cal.get(Calendar.DAY_OF_WEEK) != calDay) {
 84.1030 +                cal.add(Calendar.DAY_OF_WEEK, 1);
 84.1031 +            }
 84.1032 +//            final int weekNo = cal.get(Calendar.WEEK_OF_YEAR);
 84.1033 +            if (cal.get(Calendar.WEEK_OF_YEAR) == weekNo) {
 84.1034 +                days.add(Dates.getInstance(cal.getTime(), type));
 84.1035 +//                cal.add(Calendar.DAY_OF_WEEK, Dates.DAYS_PER_WEEK);
 84.1036 +            }
 84.1037 +        }
 84.1038 +        else if (MONTHLY.equals(getFrequency()) || !getMonthList().isEmpty()) {
 84.1039 +            final int month = cal.get(Calendar.MONTH);
 84.1040 +            // construct a list of possible month days..
 84.1041 +            cal.set(Calendar.DAY_OF_MONTH, 1);
 84.1042 +            while (cal.get(Calendar.DAY_OF_WEEK) != calDay) {
 84.1043 +                cal.add(Calendar.DAY_OF_MONTH, 1);
 84.1044 +            }
 84.1045 +            while (cal.get(Calendar.MONTH) == month) {
 84.1046 +                days.add(Dates.getInstance(cal.getTime(), type));
 84.1047 +                cal.add(Calendar.DAY_OF_MONTH, Dates.DAYS_PER_WEEK);
 84.1048 +            }
 84.1049 +        }
 84.1050 +        else if (YEARLY.equals(getFrequency())) {
 84.1051 +            final int year = cal.get(Calendar.YEAR);
 84.1052 +            // construct a list of possible year days..
 84.1053 +            cal.set(Calendar.DAY_OF_YEAR, 1);
 84.1054 +            while (cal.get(Calendar.DAY_OF_WEEK) != calDay) {
 84.1055 +                cal.add(Calendar.DAY_OF_YEAR, 1);
 84.1056 +            }
 84.1057 +            while (cal.get(Calendar.YEAR) == year) {
 84.1058 +                days.add(Dates.getInstance(cal.getTime(), type));
 84.1059 +                cal.add(Calendar.DAY_OF_YEAR, Dates.DAYS_PER_WEEK);
 84.1060 +            }
 84.1061 +        }
 84.1062 +        return getOffsetDates(days, weekDay.getOffset());
 84.1063 +    }
 84.1064 +
 84.1065 +    /**
 84.1066 +     * Returns a single-element sublist containing the element of <code>list</code> at <code>offset</code>. Valid
 84.1067 +     * offsets are from 1 to the size of the list. If an invalid offset is supplied, all elements from <code>list</code>
 84.1068 +     * are added to <code>sublist</code>.
 84.1069 +     * @param list
 84.1070 +     * @param offset
 84.1071 +     * @param sublist
 84.1072 +     */
 84.1073 +    private List getOffsetDates(final DateList dates, final int offset) {
 84.1074 +        if (offset == 0) {
 84.1075 +            return dates;
 84.1076 +        }
 84.1077 +        final List offsetDates = getDateListInstance(dates);
 84.1078 +        final int size = dates.size();
 84.1079 +        if (offset < 0 && offset >= -size) {
 84.1080 +            offsetDates.add(dates.get(size + offset));
 84.1081 +        }
 84.1082 +        else if (offset > 0 && offset <= size) {
 84.1083 +            offsetDates.add(dates.get(offset - 1));
 84.1084 +        }
 84.1085 +        return offsetDates;
 84.1086 +    }
 84.1087 +
 84.1088 +    /**
 84.1089 +     * Applies BYHOUR rules specified in this Recur instance to the specified date list. If no BYHOUR rules are
 84.1090 +     * specified the date list is returned unmodified.
 84.1091 +     * @param dates
 84.1092 +     * @return
 84.1093 +     */
 84.1094 +    private DateList getHourVariants(final DateList dates) {
 84.1095 +        if (getHourList().isEmpty()) {
 84.1096 +            return dates;
 84.1097 +        }
 84.1098 +        final DateList hourlyDates = getDateListInstance(dates);
 84.1099 +        for (final Iterator i = dates.iterator(); i.hasNext();) {
 84.1100 +            final Date date = (Date) i.next();
 84.1101 +            final Calendar cal = Dates.getCalendarInstance(date);
 84.1102 +            cal.setTime(date);
 84.1103 +            for (final Iterator j = getHourList().iterator(); j.hasNext();) {
 84.1104 +                final Integer hour = (Integer) j.next();
 84.1105 +                cal.set(Calendar.HOUR_OF_DAY, hour.intValue());
 84.1106 +                hourlyDates.add(Dates.getInstance(cal.getTime(), hourlyDates.getType()));
 84.1107 +            }
 84.1108 +        }
 84.1109 +        return hourlyDates;
 84.1110 +    }
 84.1111 +
 84.1112 +    /**
 84.1113 +     * Applies BYMINUTE rules specified in this Recur instance to the specified date list. If no BYMINUTE rules are
 84.1114 +     * specified the date list is returned unmodified.
 84.1115 +     * @param dates
 84.1116 +     * @return
 84.1117 +     */
 84.1118 +    private DateList getMinuteVariants(final DateList dates) {
 84.1119 +        if (getMinuteList().isEmpty()) {
 84.1120 +            return dates;
 84.1121 +        }
 84.1122 +        final DateList minutelyDates = getDateListInstance(dates);
 84.1123 +        for (final Iterator i = dates.iterator(); i.hasNext();) {
 84.1124 +            final Date date = (Date) i.next();
 84.1125 +            final Calendar cal = Dates.getCalendarInstance(date);
 84.1126 +            cal.setTime(date);
 84.1127 +            for (final Iterator j = getMinuteList().iterator(); j.hasNext();) {
 84.1128 +                final Integer minute = (Integer) j.next();
 84.1129 +                cal.set(Calendar.MINUTE, minute.intValue());
 84.1130 +                minutelyDates.add(Dates.getInstance(cal.getTime(), minutelyDates.getType()));
 84.1131 +            }
 84.1132 +        }
 84.1133 +        return minutelyDates;
 84.1134 +    }
 84.1135 +
 84.1136 +    /**
 84.1137 +     * Applies BYSECOND rules specified in this Recur instance to the specified date list. If no BYSECOND rules are
 84.1138 +     * specified the date list is returned unmodified.
 84.1139 +     * @param dates
 84.1140 +     * @return
 84.1141 +     */
 84.1142 +    private DateList getSecondVariants(final DateList dates) {
 84.1143 +        if (getSecondList().isEmpty()) {
 84.1144 +            return dates;
 84.1145 +        }
 84.1146 +        final DateList secondlyDates = getDateListInstance(dates);
 84.1147 +        for (final Iterator i = dates.iterator(); i.hasNext();) {
 84.1148 +            final Date date = (Date) i.next();
 84.1149 +            final Calendar cal = Dates.getCalendarInstance(date);
 84.1150 +            cal.setTime(date);
 84.1151 +            for (final Iterator j = getSecondList().iterator(); j.hasNext();) {
 84.1152 +                final Integer second = (Integer) j.next();
 84.1153 +                cal.set(Calendar.SECOND, second.intValue());
 84.1154 +                secondlyDates.add(Dates.getInstance(cal.getTime(), secondlyDates.getType()));
 84.1155 +            }
 84.1156 +        }
 84.1157 +        return secondlyDates;
 84.1158 +    }
 84.1159 +
 84.1160 +    private void validateFrequency() {
 84.1161 +        if (frequency == null) {
 84.1162 +            throw new IllegalArgumentException(
 84.1163 +                    "A recurrence rule MUST contain a FREQ rule part.");
 84.1164 +        }
 84.1165 +        if (SECONDLY.equals(getFrequency())) {
 84.1166 +            calIncField = Calendar.SECOND;
 84.1167 +        }
 84.1168 +        else if (MINUTELY.equals(getFrequency())) {
 84.1169 +            calIncField = Calendar.MINUTE;
 84.1170 +        }
 84.1171 +        else if (HOURLY.equals(getFrequency())) {
 84.1172 +            calIncField = Calendar.HOUR_OF_DAY;
 84.1173 +        }
 84.1174 +        else if (DAILY.equals(getFrequency())) {
 84.1175 +            calIncField = Calendar.DAY_OF_YEAR;
 84.1176 +        }
 84.1177 +        else if (WEEKLY.equals(getFrequency())) {
 84.1178 +            calIncField = Calendar.WEEK_OF_YEAR;
 84.1179 +        }
 84.1180 +        else if (MONTHLY.equals(getFrequency())) {
 84.1181 +            calIncField = Calendar.MONTH;
 84.1182 +        }
 84.1183 +        else if (YEARLY.equals(getFrequency())) {
 84.1184 +            calIncField = Calendar.YEAR;
 84.1185 +        }
 84.1186 +        else {
 84.1187 +            throw new IllegalArgumentException("Invalid FREQ rule part '"
 84.1188 +                    + frequency + "' in recurrence rule");
 84.1189 +        }
 84.1190 +    }
 84.1191 +
 84.1192 +    /**
 84.1193 +     * @param count The count to set.
 84.1194 +     */
 84.1195 +    public final void setCount(final int count) {
 84.1196 +        this.count = count;
 84.1197 +        this.until = null;
 84.1198 +    }
 84.1199 +
 84.1200 +    /**
 84.1201 +     * @param frequency The frequency to set.
 84.1202 +     */
 84.1203 +    public final void setFrequency(final String frequency) {
 84.1204 +        this.frequency = frequency;
 84.1205 +        validateFrequency();
 84.1206 +    }
 84.1207 +
 84.1208 +    /**
 84.1209 +     * @param interval The interval to set.
 84.1210 +     */
 84.1211 +    public final void setInterval(final int interval) {
 84.1212 +        this.interval = interval;
 84.1213 +    }
 84.1214 +
 84.1215 +    /**
 84.1216 +     * @param until The until to set.
 84.1217 +     */
 84.1218 +    public final void setUntil(final Date until) {
 84.1219 +        this.until = until;
 84.1220 +        this.count = -1;
 84.1221 +    }
 84.1222 +    
 84.1223 +    /**
 84.1224 +     * @param stream
 84.1225 +     * @throws IOException
 84.1226 +     * @throws ClassNotFoundException
 84.1227 +     */
 84.1228 +    private void readObject(final java.io.ObjectInputStream stream) throws IOException, ClassNotFoundException {
 84.1229 +        stream.defaultReadObject();
 84.1230 +        log = LogFactory.getLog(Recur.class);
 84.1231 +    }
 84.1232 +    
 84.1233 +    /**
 84.1234 +     * Instantiate a new datelist with the same type, timezone and utc settings
 84.1235 +     *  as the origList.
 84.1236 +     * @param origList
 84.1237 +     * @return a new empty list.
 84.1238 +     */
 84.1239 +    private static final DateList getDateListInstance(final DateList origList) {
 84.1240 +        final DateList list = new DateList(origList.getType());
 84.1241 +        if (origList.isUtc()) {
 84.1242 +            list.setUtc(true);
 84.1243 +        } else {
 84.1244 +            list.setTimeZone(origList.getTimeZone());
 84.1245 +        }
 84.1246 +        return list;
 84.1247 +    }
 84.1248 +
 84.1249 +}
    85.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    85.2 +++ b/src/net/fortuna/ical4j/model/TextList.java	Tue Feb 10 18:12:00 2015 +0100
    85.3 @@ -0,0 +1,155 @@
    85.4 +/**
    85.5 + * Copyright (c) 2012, Ben Fortuna
    85.6 + * All rights reserved.
    85.7 + *
    85.8 + * Redistribution and use in source and binary forms, with or without
    85.9 + * modification, are permitted provided that the following conditions
   85.10 + * are met:
   85.11 + *
   85.12 + *  o Redistributions of source code must retain the above copyright
   85.13 + * notice, this list of conditions and the following disclaimer.
   85.14 + *
   85.15 + *  o Redistributions in binary form must reproduce the above copyright
   85.16 + * notice, this list of conditions and the following disclaimer in the
   85.17 + * documentation and/or other materials provided with the distribution.
   85.18 + *
   85.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
   85.20 + * may be used to endorse or promote products derived from this software
   85.21 + * without specific prior written permission.
   85.22 + *
   85.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   85.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   85.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   85.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
   85.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   85.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   85.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   85.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   85.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   85.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   85.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   85.34 + */
   85.35 +package net.fortuna.ical4j.model;
   85.36 +
   85.37 +import java.io.Serializable;
   85.38 +import java.util.Arrays;
   85.39 +import java.util.Iterator;
   85.40 +import java.util.List;
   85.41 +import java.util.regex.Matcher;
   85.42 +import java.util.regex.Pattern;
   85.43 +
   85.44 +import edu.emory.mathcs.backport.java.util.concurrent.CopyOnWriteArrayList;
   85.45 +
   85.46 +import net.fortuna.ical4j.util.Strings;
   85.47 +
   85.48 +/**
   85.49 + * $Id$ [23-Apr-2004]
   85.50 + *
   85.51 + * Defines a list of iCalendar text elements.
   85.52 + * @author Ben Fortuna
   85.53 + */
   85.54 +public class TextList implements Serializable {
   85.55 +
   85.56 +	private static final long serialVersionUID = -417427815871330636L;
   85.57 +	
   85.58 +	private List texts;
   85.59 +
   85.60 +    /**
   85.61 +     * Default constructor.
   85.62 +     */
   85.63 +    public TextList() {
   85.64 +        texts = new CopyOnWriteArrayList();
   85.65 +    }
   85.66 +
   85.67 +    /**
   85.68 +     * Parses the specified string representation to create a list of categories.
   85.69 +     * @param aValue a string representation of a list of categories
   85.70 +     */
   85.71 +    public TextList(final String aValue) {
   85.72 +        texts = new CopyOnWriteArrayList();
   85.73 +
   85.74 +        // match commas preceded by even number of backslashes..
   85.75 +        final Pattern pattern = Pattern.compile("([^\\\\](?:\\\\{2})),|([^\\\\]),");
   85.76 +        
   85.77 +        final Matcher matcher = pattern.matcher(aValue);
   85.78 +        String[] textValues = null;
   85.79 +
   85.80 +        if (matcher.find()) {
   85.81 +        	// HACK: add a marker (&quot;) for easy string splitting..
   85.82 +            textValues = matcher.replaceAll("$1$2&quot;").split("&quot;");
   85.83 +        }
   85.84 +        else {
   85.85 +        	// no special cases, split on commas not preceded by backslash..
   85.86 +            textValues = aValue.split("(?<!\\\\),");
   85.87 +        }
   85.88 +
   85.89 +        for (int i = 0; i < textValues.length; i++) {
   85.90 +            texts.add(Strings.unescape(textValues[i]));
   85.91 +        }
   85.92 +    }
   85.93 +
   85.94 +    /**
   85.95 +     * @param textValues an array of text values
   85.96 +     */
   85.97 +    public TextList(String[] textValues) {
   85.98 +        texts = Arrays.asList(textValues);
   85.99 +    }
  85.100 +    
  85.101 +    /**
  85.102 +     * {@inheritDoc}
  85.103 +     */
  85.104 +    public final String toString() {
  85.105 +        final StringBuffer b = new StringBuffer();
  85.106 +        for (final Iterator i = texts.iterator(); i.hasNext();) {
  85.107 +            b.append(Strings.escape((String) i.next()));
  85.108 +            if (i.hasNext()) {
  85.109 +                b.append(',');
  85.110 +            }
  85.111 +        }
  85.112 +        return b.toString();
  85.113 +    }
  85.114 +
  85.115 +    /**
  85.116 +     * Add an address to the list.
  85.117 +     * @param text the category to add
  85.118 +     * @return true
  85.119 +     * @see List#add(java.lang.Object)
  85.120 +     */
  85.121 +    public final boolean add(final String text) {
  85.122 +        return texts.add(text);
  85.123 +    }
  85.124 +
  85.125 +    /**
  85.126 +     * @return boolean indicates if the list is empty
  85.127 +     * @see List#isEmpty()
  85.128 +     */
  85.129 +    public final boolean isEmpty() {
  85.130 +        return texts.isEmpty();
  85.131 +    }
  85.132 +
  85.133 +    /**
  85.134 +     * @return an iterator
  85.135 +     * @see List#iterator()
  85.136 +     */
  85.137 +    public final Iterator iterator() {
  85.138 +        return texts.iterator();
  85.139 +    }
  85.140 +
  85.141 +    /**
  85.142 +     * Remove a text from the list.
  85.143 +     * @param text the text element to remove
  85.144 +     * @return true if the list contained the specified text element
  85.145 +     * @see List#remove(java.lang.Object)
  85.146 +     */
  85.147 +    public final boolean remove(final String text) {
  85.148 +        return texts.remove(text);
  85.149 +    }
  85.150 +
  85.151 +    /**
  85.152 +     * @return the number of text elements in the list
  85.153 +     * @see List#size()
  85.154 +     */
  85.155 +    public final int size() {
  85.156 +        return texts.size();
  85.157 +    }
  85.158 +}
    86.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    86.2 +++ b/src/net/fortuna/ical4j/model/Time.java	Tue Feb 10 18:12:00 2015 +0100
    86.3 @@ -0,0 +1,159 @@
    86.4 +/**
    86.5 + * Copyright (c) 2012, Ben Fortuna
    86.6 + * All rights reserved.
    86.7 + *
    86.8 + * Redistribution and use in source and binary forms, with or without
    86.9 + * modification, are permitted provided that the following conditions
   86.10 + * are met:
   86.11 + *
   86.12 + *  o Redistributions of source code must retain the above copyright
   86.13 + * notice, this list of conditions and the following disclaimer.
   86.14 + *
   86.15 + *  o Redistributions in binary form must reproduce the above copyright
   86.16 + * notice, this list of conditions and the following disclaimer in the
   86.17 + * documentation and/or other materials provided with the distribution.
   86.18 + *
   86.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
   86.20 + * may be used to endorse or promote products derived from this software
   86.21 + * without specific prior written permission.
   86.22 + *
   86.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   86.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   86.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   86.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
   86.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   86.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   86.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   86.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   86.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   86.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   86.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   86.34 + */
   86.35 +package net.fortuna.ical4j.model;
   86.36 +
   86.37 +import java.text.DateFormat;
   86.38 +import java.text.ParseException;
   86.39 +import java.text.SimpleDateFormat;
   86.40 +import java.util.TimeZone;
   86.41 +
   86.42 +import net.fortuna.ical4j.util.Dates;
   86.43 +import net.fortuna.ical4j.util.TimeZones;
   86.44 +
   86.45 +/**
   86.46 + * $Id$
   86.47 + *
   86.48 + * Created on 30/06/2005
   86.49 + *
   86.50 + * A type used to represent iCalendar time values.
   86.51 + * @author Ben Fortuna
   86.52 + */
   86.53 +public class Time extends Iso8601 {
   86.54 +    
   86.55 +    private static final long serialVersionUID = -8401010870773304348L;
   86.56 +    
   86.57 +    private boolean utc = false;
   86.58 +    
   86.59 +    /**
   86.60 +     * FORM #1: LOCAL TIME.
   86.61 +     */
   86.62 +    private static final String DEFAULT_PATTERN = "HHmmss";
   86.63 +    
   86.64 +    /**
   86.65 +     * FORM #2: UTC TIME.
   86.66 +     */
   86.67 +    private static final String UTC_PATTERN = "HHmmss'Z'";
   86.68 +
   86.69 +    /**
   86.70 +     * @param timezone a timezone for the instance
   86.71 +     */
   86.72 +    public Time(final TimeZone timezone) {
   86.73 +        this(timezone, TimeZones.isUtc(timezone));
   86.74 +    }
   86.75 +    
   86.76 +    /**
   86.77 +     * @param timezone a timezone for the instance
   86.78 +     * @param utc indicates if the time is in UTC
   86.79 +     */
   86.80 +    public Time(final TimeZone timezone, boolean utc) {
   86.81 +        super(utc ? UTC_PATTERN : DEFAULT_PATTERN, Dates.PRECISION_SECOND, timezone);
   86.82 +        getFormat().setTimeZone(timezone);
   86.83 +        this.utc = utc;
   86.84 +    }
   86.85 +
   86.86 +    /**
   86.87 +     * @param time a time value in milliseconds from the epoch
   86.88 +     * @param timezone a timezone for the instance
   86.89 +     */
   86.90 +    public Time(final long time, final TimeZone timezone) {
   86.91 +        this(time, timezone, TimeZones.isUtc(timezone));
   86.92 +    }
   86.93 +    
   86.94 +    /**
   86.95 +     * @param time a time value in milliseconds from the epoch
   86.96 +     * @param timezone a timezone for the instance
   86.97 +     * @param utc indicates if the time is in UTC
   86.98 +     */
   86.99 +    public Time(final long time, final TimeZone timezone, boolean utc) {
  86.100 +        super(time, (utc ? UTC_PATTERN : DEFAULT_PATTERN), Dates.PRECISION_SECOND, timezone);
  86.101 +        getFormat().setTimeZone(timezone);
  86.102 +        this.utc = utc;
  86.103 +    }
  86.104 +
  86.105 +    /**
  86.106 +     * @param time a time value in milliseconds from the epoch
  86.107 +     * @param timezone a timezone for the instance
  86.108 +     */
  86.109 +    public Time(final java.util.Date time, final TimeZone timezone) {
  86.110 +        this(time, timezone, TimeZones.isUtc(timezone));
  86.111 +    }
  86.112 +    
  86.113 +    /**
  86.114 +     * @param time a time value as a Java date instance
  86.115 +     * @param timezone a timezone for the instance
  86.116 +     * @param utc indicates if the time is in UTC
  86.117 +     */
  86.118 +    public Time(final java.util.Date time, final TimeZone timezone, boolean utc) {
  86.119 +        super(time.getTime(), (utc ? UTC_PATTERN : DEFAULT_PATTERN), Dates.PRECISION_SECOND, timezone);
  86.120 +        getFormat().setTimeZone(timezone);
  86.121 +        this.utc = utc;
  86.122 +    }
  86.123 +    
  86.124 +    /**
  86.125 +     * @param value
  86.126 +     * @param timezone
  86.127 +     * @throws ParseException where the specified value is not a valid time string
  86.128 +     */
  86.129 +    public Time(String value, TimeZone timezone) throws ParseException {
  86.130 +        this(value, timezone, TimeZones.isUtc(timezone));
  86.131 +    }
  86.132 +    
  86.133 +    /**
  86.134 +     * @param value
  86.135 +     * @param timezone
  86.136 +     * @param utc
  86.137 +     * @throws ParseException where the specified value is not a valid time string
  86.138 +     */
  86.139 +    public Time(String value, TimeZone timezone, boolean utc) throws ParseException {
  86.140 +        this(parseDate(value, timezone), timezone, utc);
  86.141 +    }
  86.142 +    
  86.143 +    private static java.util.Date parseDate(String value, TimeZone timezone) throws ParseException {
  86.144 +        DateFormat df = new SimpleDateFormat(DEFAULT_PATTERN);
  86.145 +        df.setTimeZone(timezone);
  86.146 +        try {
  86.147 +            return df.parse(value);
  86.148 +        }
  86.149 +        catch (ParseException e) {
  86.150 +            df = new SimpleDateFormat(UTC_PATTERN);
  86.151 +            df.setTimeZone(timezone);
  86.152 +        }
  86.153 +        return df.parse(value);
  86.154 +    }
  86.155 +    
  86.156 +    /**
  86.157 +     * @return true if time is utc
  86.158 +     */
  86.159 +    public final boolean isUtc() {
  86.160 +        return utc;
  86.161 +    }
  86.162 +}
    87.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    87.2 +++ b/src/net/fortuna/ical4j/model/TimeZone.java	Tue Feb 10 18:12:00 2015 +0100
    87.3 @@ -0,0 +1,177 @@
    87.4 +/**
    87.5 + * Copyright (c) 2012, Ben Fortuna
    87.6 + * All rights reserved.
    87.7 + *
    87.8 + * Redistribution and use in source and binary forms, with or without
    87.9 + * modification, are permitted provided that the following conditions
   87.10 + * are met:
   87.11 + *
   87.12 + *  o Redistributions of source code must retain the above copyright
   87.13 + * notice, this list of conditions and the following disclaimer.
   87.14 + *
   87.15 + *  o Redistributions in binary form must reproduce the above copyright
   87.16 + * notice, this list of conditions and the following disclaimer in the
   87.17 + * documentation and/or other materials provided with the distribution.
   87.18 + *
   87.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
   87.20 + * may be used to endorse or promote products derived from this software
   87.21 + * without specific prior written permission.
   87.22 + *
   87.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   87.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   87.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   87.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
   87.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   87.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   87.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   87.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   87.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   87.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   87.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   87.34 + */
   87.35 +package net.fortuna.ical4j.model;
   87.36 +
   87.37 +import java.util.Calendar;
   87.38 +import java.util.Collections;
   87.39 +import java.util.Date;
   87.40 +import java.util.List;
   87.41 +
   87.42 +import net.fortuna.ical4j.model.component.Daylight;
   87.43 +import net.fortuna.ical4j.model.component.Observance;
   87.44 +import net.fortuna.ical4j.model.component.VTimeZone;
   87.45 +import net.fortuna.ical4j.model.property.TzId;
   87.46 +import net.fortuna.ical4j.model.property.TzOffsetTo;
   87.47 +
   87.48 +/**
   87.49 + * $Id$
   87.50 + *
   87.51 + * Created on 13/09/2005
   87.52 + *
   87.53 + * A Java timezone implementation based on an underlying VTimeZone
   87.54 + * definition.
   87.55 + * @author Ben Fortuna
   87.56 + */
   87.57 +public class TimeZone extends java.util.TimeZone {
   87.58 +    
   87.59 +    private static final long serialVersionUID = -5620979316746547234L;
   87.60 +    
   87.61 +    private final VTimeZone vTimeZone;
   87.62 +    private final int rawOffset;
   87.63 +    
   87.64 +    /**
   87.65 +     * Constructs a new instance based on the specified VTimeZone.
   87.66 +     * @param vTimeZone a VTIMEZONE object instance
   87.67 +     */
   87.68 +    public TimeZone(final VTimeZone vTimeZone) {
   87.69 +        this.vTimeZone = vTimeZone;
   87.70 +        final TzId tzId = (TzId) vTimeZone.getProperty(Property.TZID);
   87.71 +        setID(tzId.getValue());
   87.72 +        this.rawOffset = getRawOffset(vTimeZone);
   87.73 +    }
   87.74 +
   87.75 +    /**
   87.76 +     * {@inheritDoc}
   87.77 +     */
   87.78 +    public final int getOffset(final int era, final int year, final int month, final int day,
   87.79 +            final int dayOfWeek, final int milliseconds) {
   87.80 +        
   87.81 +        final Calendar cal = Calendar.getInstance();
   87.82 +        cal.set(Calendar.ERA, era);
   87.83 +        cal.set(Calendar.YEAR, year);
   87.84 +        cal.set(Calendar.MONTH, month);
   87.85 +        cal.set(Calendar.DAY_OF_YEAR, day);
   87.86 +        cal.set(Calendar.DAY_OF_WEEK, dayOfWeek);
   87.87 +        cal.set(Calendar.MILLISECOND, milliseconds);
   87.88 +        final Observance observance = vTimeZone.getApplicableObservance(new DateTime(cal.getTime()));
   87.89 +        if (observance != null) {
   87.90 +            final TzOffsetTo offset = (TzOffsetTo) observance.getProperty(Property.TZOFFSETTO);
   87.91 +            return (int) offset.getOffset().getOffset();
   87.92 +        }
   87.93 +        return 0;
   87.94 +    }
   87.95 +
   87.96 +    /**
   87.97 +     * {@inheritDoc}
   87.98 +     */
   87.99 +    public int getOffset(long date) {
  87.100 +        final Observance observance = vTimeZone.getApplicableObservance(new DateTime(date));
  87.101 +        if (observance != null) {
  87.102 +            final TzOffsetTo offset = (TzOffsetTo) observance.getProperty(Property.TZOFFSETTO);
  87.103 +            return (int) offset.getOffset().getOffset();
  87.104 +        }
  87.105 +        return 0;
  87.106 +    }
  87.107 +
  87.108 +    /**
  87.109 +     * {@inheritDoc}
  87.110 +     */
  87.111 +    public final int getRawOffset() {
  87.112 +        return rawOffset;
  87.113 +    }
  87.114 +
  87.115 +    /**
  87.116 +     * Determines if the specified date is in daylight time according to
  87.117 +     * this timezone. This is done by finding the latest supporting
  87.118 +     * observance for the specified date and identifying whether it is
  87.119 +     * daylight time.
  87.120 +     * @param date a date instance
  87.121 +     * @return true if the specified date is in daylight time, otherwise false
  87.122 +     */
  87.123 +    public final boolean inDaylightTime(final Date date) {
  87.124 +        final Observance observance = vTimeZone.getApplicableObservance(new DateTime(date));
  87.125 +        return (observance != null && observance instanceof Daylight);
  87.126 +    }
  87.127 +
  87.128 +    /**
  87.129 +     * {@inheritDoc}
  87.130 +     */
  87.131 +    public final void setRawOffset(final int offsetMillis) {
  87.132 +        throw new UnsupportedOperationException("Updates to the VTIMEZONE object must be performed directly");
  87.133 +    }
  87.134 +
  87.135 +    /**
  87.136 +     * {@inheritDoc}
  87.137 +     */
  87.138 +    public final boolean useDaylightTime() {
  87.139 +        final ComponentList daylights = vTimeZone.getObservances().getComponents(Observance.DAYLIGHT);
  87.140 +        return (!daylights.isEmpty());
  87.141 +    }
  87.142 +
  87.143 +    /**
  87.144 +     * @return Returns the VTimeZone backing this instance.
  87.145 +     */
  87.146 +    public final VTimeZone getVTimeZone() {
  87.147 +        return vTimeZone;
  87.148 +    }
  87.149 +
  87.150 +    private static final int getRawOffset(VTimeZone vt) {
  87.151 +        // per spec, rawoffset is the raw offset at the current date
  87.152 +        final DateTime now = new DateTime();
  87.153 +        
  87.154 +        List seasonalTimes = vt.getObservances().getComponents(Observance.STANDARD);
  87.155 +        // if no standard time use daylight time..
  87.156 +        if (seasonalTimes.size() == 0) {
  87.157 +            seasonalTimes = vt.getObservances().getComponents(Observance.DAYLIGHT);
  87.158 +        }
  87.159 +        Observance latestSeasonalTime = null;
  87.160 +        Date latestOnset = null;
  87.161 +        for (int i = 0; i < seasonalTimes.size(); i++) {
  87.162 +            Observance seasonalTime = (Observance) seasonalTimes.get(i);
  87.163 +            Date onset = seasonalTime.getLatestOnset(now);
  87.164 +            if (onset == null) {
  87.165 +                continue;
  87.166 +            }
  87.167 +            if (latestOnset == null || onset.after(latestOnset)) {
  87.168 +                latestOnset = onset;
  87.169 +                latestSeasonalTime = seasonalTime;
  87.170 +            }
  87.171 +        }
  87.172 +        if (latestSeasonalTime != null) {
  87.173 +            final TzOffsetTo offsetTo = (TzOffsetTo) latestSeasonalTime.getProperty(Property.TZOFFSETTO);
  87.174 +            if (offsetTo != null) {
  87.175 +                return (int) offsetTo.getOffset().getOffset();
  87.176 +            }
  87.177 +        }
  87.178 +        return 0;
  87.179 +    }
  87.180 +}
    88.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    88.2 +++ b/src/net/fortuna/ical4j/model/TimeZoneRegistry.java	Tue Feb 10 18:12:00 2015 +0100
    88.3 @@ -0,0 +1,77 @@
    88.4 +/**
    88.5 + * Copyright (c) 2012, Ben Fortuna
    88.6 + * All rights reserved.
    88.7 + *
    88.8 + * Redistribution and use in source and binary forms, with or without
    88.9 + * modification, are permitted provided that the following conditions
   88.10 + * are met:
   88.11 + *
   88.12 + *  o Redistributions of source code must retain the above copyright
   88.13 + * notice, this list of conditions and the following disclaimer.
   88.14 + *
   88.15 + *  o Redistributions in binary form must reproduce the above copyright
   88.16 + * notice, this list of conditions and the following disclaimer in the
   88.17 + * documentation and/or other materials provided with the distribution.
   88.18 + *
   88.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
   88.20 + * may be used to endorse or promote products derived from this software
   88.21 + * without specific prior written permission.
   88.22 + *
   88.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   88.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   88.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   88.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
   88.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   88.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   88.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   88.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   88.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   88.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   88.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   88.34 + */
   88.35 +package net.fortuna.ical4j.model;
   88.36 +
   88.37 +/**
   88.38 + * $Id$
   88.39 + *
   88.40 + * Created on 18/09/2005
   88.41 + *
   88.42 + * Implementors provide a list of timezone definitions applicable for use
   88.43 + * with iCalendar objects.
   88.44 + * @author Ben Fortuna
   88.45 + */
   88.46 +public interface TimeZoneRegistry {
   88.47 +
   88.48 +    /**
   88.49 +     * Registers a new timezone for use with iCalendar objects. If a timezone
   88.50 +     * with the same identifier is already registered this timezone will take
   88.51 +     * precedence.
   88.52 +     * @param timezone a timezone to be registered for use with iCalendar
   88.53 +     * objects
   88.54 +     */
   88.55 +    void register(final TimeZone timezone);
   88.56 +    
   88.57 +    /**
   88.58 +     * Registers a new timezone for use with iCalendar objects. If a timezone
   88.59 +     * with the same identifier is already registered this timezone will take
   88.60 +     * precedence.
   88.61 +     * @param timezone a timezone to be registered for use with iCalendar
   88.62 +     * objects
   88.63 +     * @param update attempt to update the definition from any specified TZURL
   88.64 +     * property if true
   88.65 +     */
   88.66 +    void register(final TimeZone timezone, boolean update);
   88.67 +    
   88.68 +    /**
   88.69 +     * Clears all registered timezones.
   88.70 +     */
   88.71 +    void clear();
   88.72 +    
   88.73 +    /**
   88.74 +     * Returns a timezone with the specified identifier.
   88.75 +     * @param id a timezone identifier
   88.76 +     * @return a timezone matching the specified identifier. If no timezone
   88.77 +     * is registered with the specified identifier null is returned.
   88.78 +     */
   88.79 +    TimeZone getTimeZone(final String id);
   88.80 +}
    89.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    89.2 +++ b/src/net/fortuna/ical4j/model/TimeZoneRegistryFactory.java	Tue Feb 10 18:12:00 2015 +0100
    89.3 @@ -0,0 +1,78 @@
    89.4 +/**
    89.5 + * Copyright (c) 2012, Ben Fortuna
    89.6 + * All rights reserved.
    89.7 + *
    89.8 + * Redistribution and use in source and binary forms, with or without
    89.9 + * modification, are permitted provided that the following conditions
   89.10 + * are met:
   89.11 + *
   89.12 + *  o Redistributions of source code must retain the above copyright
   89.13 + * notice, this list of conditions and the following disclaimer.
   89.14 + *
   89.15 + *  o Redistributions in binary form must reproduce the above copyright
   89.16 + * notice, this list of conditions and the following disclaimer in the
   89.17 + * documentation and/or other materials provided with the distribution.
   89.18 + *
   89.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
   89.20 + * may be used to endorse or promote products derived from this software
   89.21 + * without specific prior written permission.
   89.22 + *
   89.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   89.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   89.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   89.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
   89.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   89.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   89.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   89.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   89.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   89.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   89.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   89.34 + */
   89.35 +package net.fortuna.ical4j.model;
   89.36 +
   89.37 +import net.fortuna.ical4j.util.Configurator;
   89.38 +
   89.39 +/**
   89.40 + * $Id$
   89.41 + *
   89.42 + * Created on 18/09/2005
   89.43 + *
   89.44 + * Provides access to the configured <code>TimeZoneRegistry</code> instance.
   89.45 + * Alternative factory implementations may be specified via the following
   89.46 + * system property:
   89.47 + * <pre>net.fortuna.ical4j.timezone.registry=&lt;factory_class_name&gt;</pre>
   89.48 + * @author Ben Fortuna
   89.49 + */
   89.50 +public abstract class TimeZoneRegistryFactory {
   89.51 +    
   89.52 +    /**
   89.53 +     * The system property used to specify an alternate
   89.54 +     * <code>TimeZoneRegistryFactory</code> implementation.
   89.55 +     */
   89.56 +    public static final String KEY_FACTORY_CLASS = "net.fortuna.ical4j.timezone.registry";
   89.57 +
   89.58 +    private static TimeZoneRegistryFactory instance;
   89.59 +    static {
   89.60 +        try {
   89.61 +            final Class factoryClass = Class.forName(Configurator.getProperty(KEY_FACTORY_CLASS));
   89.62 +            instance = (TimeZoneRegistryFactory) factoryClass.newInstance();
   89.63 +        }
   89.64 +        catch (Exception e) {
   89.65 +            instance = new DefaultTimeZoneRegistryFactory();
   89.66 +        }
   89.67 +    }
   89.68 +    
   89.69 +    /**
   89.70 +     * @return a shared factory instance
   89.71 +     */
   89.72 +    public static TimeZoneRegistryFactory getInstance() {
   89.73 +        return instance;
   89.74 +    }
   89.75 +    
   89.76 +    /**
   89.77 +     * Returns a new instance of the configured <code>TimeZoneRegistry</code>.
   89.78 +     * @return a timezone registry instance
   89.79 +     */
   89.80 +    public abstract TimeZoneRegistry createRegistry();
   89.81 +}
    90.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    90.2 +++ b/src/net/fortuna/ical4j/model/TimeZoneRegistryImpl.java	Tue Feb 10 18:12:00 2015 +0100
    90.3 @@ -0,0 +1,220 @@
    90.4 +/**
    90.5 + * Copyright (c) 2012, Ben Fortuna
    90.6 + * All rights reserved.
    90.7 + *
    90.8 + * Redistribution and use in source and binary forms, with or without
    90.9 + * modification, are permitted provided that the following conditions
   90.10 + * are met:
   90.11 + *
   90.12 + *  o Redistributions of source code must retain the above copyright
   90.13 + * notice, this list of conditions and the following disclaimer.
   90.14 + *
   90.15 + *  o Redistributions in binary form must reproduce the above copyright
   90.16 + * notice, this list of conditions and the following disclaimer in the
   90.17 + * documentation and/or other materials provided with the distribution.
   90.18 + *
   90.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
   90.20 + * may be used to endorse or promote products derived from this software
   90.21 + * without specific prior written permission.
   90.22 + *
   90.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   90.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   90.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   90.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
   90.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   90.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   90.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   90.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   90.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   90.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   90.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   90.34 + */
   90.35 +package net.fortuna.ical4j.model;
   90.36 +
   90.37 +import java.io.IOException;
   90.38 +import java.net.URL;
   90.39 +import java.util.Map;
   90.40 +import java.util.Properties;
   90.41 +import java.util.regex.Matcher;
   90.42 +import java.util.regex.Pattern;
   90.43 +
   90.44 +import net.fortuna.ical4j.data.CalendarBuilder;
   90.45 +import net.fortuna.ical4j.data.ParserException;
   90.46 +import net.fortuna.ical4j.model.component.VTimeZone;
   90.47 +import net.fortuna.ical4j.model.property.TzUrl;
   90.48 +import net.fortuna.ical4j.util.CompatibilityHints;
   90.49 +import net.fortuna.ical4j.util.Configurator;
   90.50 +import net.fortuna.ical4j.util.ResourceLoader;
   90.51 +
   90.52 +import org.apache.commons.logging.Log;
   90.53 +import org.apache.commons.logging.LogFactory;
   90.54 +
   90.55 +import edu.emory.mathcs.backport.java.util.concurrent.ConcurrentHashMap;
   90.56 +
   90.57 +/**
   90.58 + * $Id$
   90.59 + *
   90.60 + * Created on 18/09/2005
   90.61 + *
   90.62 + * The default implementation of a <code>TimeZoneRegistry</code>. This implementation will search the classpath for
   90.63 + * applicable VTimeZone definitions used to back the provided TimeZone instances.
   90.64 + * @author Ben Fortuna
   90.65 + */
   90.66 +public class TimeZoneRegistryImpl implements TimeZoneRegistry {
   90.67 +
   90.68 +    private static final String DEFAULT_RESOURCE_PREFIX = "zoneinfo/";
   90.69 +
   90.70 +    private static final Pattern TZ_ID_SUFFIX = Pattern.compile("(?<=/)[^/]*/[^/]*$");
   90.71 +    
   90.72 +    private static final String UPDATE_ENABLED = "net.fortuna.ical4j.timezone.update.enabled";
   90.73 +
   90.74 +    private static final Map DEFAULT_TIMEZONES = new ConcurrentHashMap();
   90.75 +
   90.76 +    private static final Properties ALIASES = new Properties();
   90.77 +    static {
   90.78 +        try {
   90.79 +        	//ALIASES.load(ResourceLoader.getResourceAsStream("net/fortuna/ical4j/model/tz.alias"));
   90.80 +        	ALIASES.load(TimeZoneRegistryImpl.class.getResourceAsStream("tz.alias"));
   90.81 +             }
   90.82 +        catch (IOException ioe) {
   90.83 +            LogFactory.getLog(TimeZoneRegistryImpl.class).warn(
   90.84 +                    "Error loading timezone aliases: " + ioe.getMessage());
   90.85 +        }
   90.86 +    }
   90.87 +
   90.88 +    private Map timezones;
   90.89 +
   90.90 +    private String resourcePrefix;
   90.91 +
   90.92 +    /**
   90.93 +     * Default constructor.
   90.94 +     */
   90.95 +    public TimeZoneRegistryImpl() {
   90.96 +        this(DEFAULT_RESOURCE_PREFIX);
   90.97 +    }
   90.98 +
   90.99 +    /**
  90.100 +     * Creates a new instance using the specified resource prefix.
  90.101 +     * @param resourcePrefix a prefix prepended to classpath resource lookups for default timezones
  90.102 +     */
  90.103 +    public TimeZoneRegistryImpl(final String resourcePrefix) {
  90.104 +        this.resourcePrefix = resourcePrefix;
  90.105 +        timezones = new ConcurrentHashMap();
  90.106 +    }
  90.107 +
  90.108 +    /**
  90.109 +     * {@inheritDoc}
  90.110 +     */
  90.111 +    public final void register(final TimeZone timezone) {
  90.112 +    	// for now we only apply updates to included definitions by default..
  90.113 +    	register(timezone, false);
  90.114 +    }
  90.115 +    
  90.116 +    /**
  90.117 +     * {@inheritDoc}
  90.118 +     */
  90.119 +    public final void register(final TimeZone timezone, boolean update) {
  90.120 +    	if (update) {
  90.121 +            // load any available updates for the timezone..
  90.122 +            timezones.put(timezone.getID(), new TimeZone(updateDefinition(timezone.getVTimeZone())));
  90.123 +    	}
  90.124 +    	else {
  90.125 +            timezones.put(timezone.getID(), timezone);
  90.126 +    	}
  90.127 +    }
  90.128 +
  90.129 +    /**
  90.130 +     * {@inheritDoc}
  90.131 +     */
  90.132 +    public final void clear() {
  90.133 +        timezones.clear();
  90.134 +    }
  90.135 +
  90.136 +    /**
  90.137 +     * {@inheritDoc}
  90.138 +     */
  90.139 +    public final TimeZone getTimeZone(final String id) {
  90.140 +        TimeZone timezone = (TimeZone) timezones.get(id);
  90.141 +        if (timezone == null) {
  90.142 +            timezone = (TimeZone) DEFAULT_TIMEZONES.get(id);
  90.143 +            if (timezone == null) {
  90.144 +                // if timezone not found with identifier, try loading an alias..
  90.145 +                final String alias = ALIASES.getProperty(id);
  90.146 +                if (alias != null) {
  90.147 +                    return getTimeZone(alias);
  90.148 +                }
  90.149 +                else {
  90.150 +                    synchronized (DEFAULT_TIMEZONES) {
  90.151 +                    	// check again as it may be loaded now..
  90.152 +                    	timezone = (TimeZone) DEFAULT_TIMEZONES.get(id);
  90.153 +                    	if (timezone == null) {
  90.154 +                            try {
  90.155 +                                final VTimeZone vTimeZone = loadVTimeZone(id);
  90.156 +                                if (vTimeZone != null) {
  90.157 +                                    // XXX: temporary kludge..
  90.158 +                                    // ((TzId) vTimeZone.getProperties().getProperty(Property.TZID)).setValue(id);
  90.159 +                                    timezone = new TimeZone(vTimeZone);
  90.160 +                                    DEFAULT_TIMEZONES.put(timezone.getID(), timezone);
  90.161 +                                }
  90.162 +                                else if (CompatibilityHints.isHintEnabled(CompatibilityHints.KEY_RELAXED_PARSING)) {
  90.163 +                                    // strip global part of id and match on default tz..
  90.164 +                                    Matcher matcher = TZ_ID_SUFFIX.matcher(id);
  90.165 +                                    if (matcher.find()) {
  90.166 +                                        return getTimeZone(matcher.group());
  90.167 +                                    }
  90.168 +                                }
  90.169 +                            }
  90.170 +                            catch (Exception e) {
  90.171 +                                Log log = LogFactory.getLog(TimeZoneRegistryImpl.class);
  90.172 +                                log.warn("Error occurred loading VTimeZone", e);
  90.173 +                            }
  90.174 +                    	}
  90.175 +                    }
  90.176 +                }
  90.177 +            }
  90.178 +        }
  90.179 +        return timezone;
  90.180 +    }
  90.181 +
  90.182 +    /**
  90.183 +     * Loads an existing VTimeZone from the classpath corresponding to the specified Java timezone.
  90.184 +     */
  90.185 +    private VTimeZone loadVTimeZone(final String id) throws IOException, ParserException {
  90.186 +        //final URL resource = ResourceLoader.getResource(resourcePrefix + id + ".ics");
  90.187 +        final URL resource = TimeZoneRegistryImpl.class.getClassLoader().getResource(resourcePrefix + id + ".ics");
  90.188 +        if (resource != null) {
  90.189 +            final CalendarBuilder builder = new CalendarBuilder();
  90.190 +            final Calendar calendar = builder.build(resource.openStream());
  90.191 +            final VTimeZone vTimeZone = (VTimeZone) calendar.getComponent(Component.VTIMEZONE);
  90.192 +            // load any available updates for the timezone.. can be explicility disabled via configuration
  90.193 +            if (!"false".equals(Configurator.getProperty(UPDATE_ENABLED))) {
  90.194 +                return updateDefinition(vTimeZone);
  90.195 +            }
  90.196 +            return vTimeZone;
  90.197 +        }
  90.198 +        return null;
  90.199 +    }
  90.200 +    
  90.201 +    /**
  90.202 +     * @param vTimeZone
  90.203 +     * @return
  90.204 +     */
  90.205 +    private VTimeZone updateDefinition(VTimeZone vTimeZone) {
  90.206 +        final TzUrl tzUrl = vTimeZone.getTimeZoneUrl();
  90.207 +        if (tzUrl != null) {
  90.208 +            try {
  90.209 +                final CalendarBuilder builder = new CalendarBuilder();
  90.210 +                final Calendar calendar = builder.build(tzUrl.getUri().toURL().openStream());
  90.211 +                final VTimeZone updatedVTimeZone = (VTimeZone) calendar.getComponent(Component.VTIMEZONE);
  90.212 +                if (updatedVTimeZone != null) {
  90.213 +                    return updatedVTimeZone;
  90.214 +                }
  90.215 +            }
  90.216 +            catch (Exception e) {
  90.217 +                Log log = LogFactory.getLog(TimeZoneRegistryImpl.class);
  90.218 +                log.warn("Unable to retrieve updates for timezone: " + vTimeZone.getTimeZoneId().getValue(), e);
  90.219 +            }
  90.220 +        }
  90.221 +        return vTimeZone;
  90.222 +    }
  90.223 +}
    91.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    91.2 +++ b/src/net/fortuna/ical4j/model/UtcOffset.java	Tue Feb 10 18:12:00 2015 +0100
    91.3 @@ -0,0 +1,166 @@
    91.4 +/**
    91.5 + * Copyright (c) 2012, Ben Fortuna
    91.6 + * All rights reserved.
    91.7 + *
    91.8 + * Redistribution and use in source and binary forms, with or without
    91.9 + * modification, are permitted provided that the following conditions
   91.10 + * are met:
   91.11 + *
   91.12 + *  o Redistributions of source code must retain the above copyright
   91.13 + * notice, this list of conditions and the following disclaimer.
   91.14 + *
   91.15 + *  o Redistributions in binary form must reproduce the above copyright
   91.16 + * notice, this list of conditions and the following disclaimer in the
   91.17 + * documentation and/or other materials provided with the distribution.
   91.18 + *
   91.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
   91.20 + * may be used to endorse or promote products derived from this software
   91.21 + * without specific prior written permission.
   91.22 + *
   91.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   91.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   91.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   91.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
   91.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   91.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   91.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   91.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   91.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   91.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   91.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   91.34 + */
   91.35 +package net.fortuna.ical4j.model;
   91.36 +
   91.37 +import java.io.IOException;
   91.38 +import java.io.Serializable;
   91.39 +import java.text.DecimalFormat;
   91.40 +import java.text.NumberFormat;
   91.41 +
   91.42 +import net.fortuna.ical4j.util.Dates;
   91.43 +
   91.44 +import org.apache.commons.lang.builder.HashCodeBuilder;
   91.45 +import org.apache.commons.logging.Log;
   91.46 +import org.apache.commons.logging.LogFactory;
   91.47 +
   91.48 +/**
   91.49 + * $Id$
   91.50 + *
   91.51 + * Created on 26/06/2005
   91.52 + *
   91.53 + * Represents a timezone offset from UTC time.
   91.54 + *
   91.55 + * @author Ben Fortuna
   91.56 + */
   91.57 +public class UtcOffset implements Serializable {
   91.58 +
   91.59 +    private static final long serialVersionUID = 5883111996721531728L;
   91.60 +    
   91.61 +    private static final int HOUR_START_INDEX = 1;
   91.62 +
   91.63 +    private static final int HOUR_END_INDEX = 3;
   91.64 +
   91.65 +    private static final int MINUTE_START_INDEX = 3;
   91.66 +
   91.67 +    private static final int MINUTE_END_INDEX = 5;
   91.68 +
   91.69 +    private static final int SECOND_START_INDEX = 5;
   91.70 +
   91.71 +    private static final int SECOND_END_INDEX = 7;
   91.72 +
   91.73 +    private static final NumberFormat HOUR_FORMAT = new DecimalFormat("00");
   91.74 +
   91.75 +    private static final NumberFormat MINUTE_FORMAT = new DecimalFormat("00");
   91.76 +
   91.77 +    private static final NumberFormat SECOND_FORMAT = new DecimalFormat("00");
   91.78 +
   91.79 +    private long offset;
   91.80 +
   91.81 +    /**
   91.82 +     * @param value a string representation of an offset
   91.83 +     */
   91.84 +    public UtcOffset(final String value) {
   91.85 +
   91.86 +        if (value.length() < MINUTE_END_INDEX) {
   91.87 +            throw new IllegalArgumentException("Invalid UTC offset [" + value
   91.88 +                    + "] - must be of the form: (+/-)HHMM[SS]");
   91.89 +        }
   91.90 +        
   91.91 +        final boolean negative = value.charAt(0) == '-';
   91.92 +
   91.93 +        if (!negative && !(value.charAt(0) == '+')) {
   91.94 +            throw new IllegalArgumentException("UTC offset value must be signed");
   91.95 +        }
   91.96 +        
   91.97 +        offset = 0;
   91.98 +        offset += Integer.parseInt(value.substring(HOUR_START_INDEX,
   91.99 +                HOUR_END_INDEX))
  91.100 +                * Dates.MILLIS_PER_HOUR;
  91.101 +        offset += Integer.parseInt(value.substring(MINUTE_START_INDEX,
  91.102 +                MINUTE_END_INDEX))
  91.103 +                * Dates.MILLIS_PER_MINUTE;
  91.104 +        if (value.length() == SECOND_END_INDEX) {
  91.105 +            offset += Integer.parseInt(value.substring(SECOND_START_INDEX,
  91.106 +                    SECOND_END_INDEX))
  91.107 +                    * Dates.MILLIS_PER_SECOND;
  91.108 +        }
  91.109 +        if (negative) {
  91.110 +            offset = -offset;
  91.111 +        }
  91.112 +    }
  91.113 +
  91.114 +    /**
  91.115 +     * @param offset an offset value in milliseconds
  91.116 +     */
  91.117 +    public UtcOffset(final long offset) {
  91.118 +        this.offset = (long) Math.floor(offset / (double) Dates.MILLIS_PER_SECOND) * Dates.MILLIS_PER_SECOND;
  91.119 +    }
  91.120 +
  91.121 +    /**
  91.122 +     * {@inheritDoc}
  91.123 +     */
  91.124 +    public final String toString() {
  91.125 +        final StringBuffer b = new StringBuffer();
  91.126 +        long remainder = Math.abs(offset);
  91.127 +
  91.128 +        if (offset < 0) {
  91.129 +            b.append('-');
  91.130 +        }
  91.131 +        else {
  91.132 +            b.append('+');
  91.133 +        }
  91.134 +        b.append(HOUR_FORMAT.format(remainder / Dates.MILLIS_PER_HOUR));
  91.135 +
  91.136 +        remainder = remainder % Dates.MILLIS_PER_HOUR;
  91.137 +        b.append(MINUTE_FORMAT.format(remainder / Dates.MILLIS_PER_MINUTE));
  91.138 +
  91.139 +        remainder = remainder % Dates.MILLIS_PER_MINUTE;
  91.140 +        if (remainder > 0) {
  91.141 +            b.append(SECOND_FORMAT.format(remainder / Dates.MILLIS_PER_SECOND));
  91.142 +        }
  91.143 +        return b.toString();
  91.144 +    }
  91.145 +
  91.146 +    /**
  91.147 +     * @return Returns the offset.
  91.148 +     */
  91.149 +    public final long getOffset() {
  91.150 +        return offset;
  91.151 +    }
  91.152 +
  91.153 +    /**
  91.154 +     * {@inheritDoc}
  91.155 +     */
  91.156 +    public final boolean equals(final Object arg0) {
  91.157 +        if (arg0 instanceof UtcOffset) {
  91.158 +            return getOffset() == ((UtcOffset) arg0).getOffset();
  91.159 +        }
  91.160 +        return super.equals(arg0);
  91.161 +    }
  91.162 +
  91.163 +    /**
  91.164 +     * {@inheritDoc}
  91.165 +     */
  91.166 +    public final int hashCode() {
  91.167 +        return new HashCodeBuilder().append(getOffset()).toHashCode();
  91.168 +    }
  91.169 +}
    92.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    92.2 +++ b/src/net/fortuna/ical4j/model/ValidationException.java	Tue Feb 10 18:12:00 2015 +0100
    92.3 @@ -0,0 +1,70 @@
    92.4 +/**
    92.5 + * Copyright (c) 2012, Ben Fortuna
    92.6 + * All rights reserved.
    92.7 + *
    92.8 + * Redistribution and use in source and binary forms, with or without
    92.9 + * modification, are permitted provided that the following conditions
   92.10 + * are met:
   92.11 + *
   92.12 + *  o Redistributions of source code must retain the above copyright
   92.13 + * notice, this list of conditions and the following disclaimer.
   92.14 + *
   92.15 + *  o Redistributions in binary form must reproduce the above copyright
   92.16 + * notice, this list of conditions and the following disclaimer in the
   92.17 + * documentation and/or other materials provided with the distribution.
   92.18 + *
   92.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
   92.20 + * may be used to endorse or promote products derived from this software
   92.21 + * without specific prior written permission.
   92.22 + *
   92.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   92.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   92.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   92.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
   92.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   92.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   92.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   92.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   92.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   92.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   92.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   92.34 + */
   92.35 +package net.fortuna.ical4j.model;
   92.36 +
   92.37 +import java.text.MessageFormat;
   92.38 +
   92.39 +/**
   92.40 + * $Id$ [23-Apr-2004]
   92.41 + *
   92.42 + * An exception thrown during validation.
   92.43 + * 
   92.44 + * @author Ben Fortuna
   92.45 + */
   92.46 +public class ValidationException extends Exception {
   92.47 +    
   92.48 +    private static final long serialVersionUID = 309245291364742896L;
   92.49 +
   92.50 +    /**
   92.51 +     * Default constructor.
   92.52 +     */
   92.53 +    public ValidationException() {
   92.54 +        super();
   92.55 +    }
   92.56 +
   92.57 +    /**
   92.58 +     * Constructor with message.
   92.59 +     * @param message a message
   92.60 +     */
   92.61 +    public ValidationException(final String message) {
   92.62 +        super(message);
   92.63 +    }
   92.64 +
   92.65 +    /**
   92.66 +     * Constructor with message pattern and arguments.
   92.67 +     * @param message a message pattern
   92.68 +     * @param args message arguments
   92.69 +     */
   92.70 +    public ValidationException(final String message, Object[] args) {
   92.71 +        super(MessageFormat.format(message, args));
   92.72 +    }
   92.73 +}
    93.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    93.2 +++ b/src/net/fortuna/ical4j/model/Validator.java	Tue Feb 10 18:12:00 2015 +0100
    93.3 @@ -0,0 +1,47 @@
    93.4 +/**
    93.5 + * Copyright (c) 2012, Ben Fortuna
    93.6 + * All rights reserved.
    93.7 + *
    93.8 + * Redistribution and use in source and binary forms, with or without
    93.9 + * modification, are permitted provided that the following conditions
   93.10 + * are met:
   93.11 + *
   93.12 + *  o Redistributions of source code must retain the above copyright
   93.13 + * notice, this list of conditions and the following disclaimer.
   93.14 + *
   93.15 + *  o Redistributions in binary form must reproduce the above copyright
   93.16 + * notice, this list of conditions and the following disclaimer in the
   93.17 + * documentation and/or other materials provided with the distribution.
   93.18 + *
   93.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
   93.20 + * may be used to endorse or promote products derived from this software
   93.21 + * without specific prior written permission.
   93.22 + *
   93.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   93.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   93.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   93.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
   93.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   93.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   93.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   93.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   93.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   93.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   93.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   93.34 + */
   93.35 +package net.fortuna.ical4j.model;
   93.36 +
   93.37 +import java.io.Serializable;
   93.38 +
   93.39 +/**
   93.40 + * @author fortuna
   93.41 + *
   93.42 + */
   93.43 +public interface Validator extends Serializable {
   93.44 +
   93.45 +    /**
   93.46 +     * Validates the associated model against an applicable standard.
   93.47 +     * @throws ValidationException where the model does not confirm to the applicable standard
   93.48 +     */
   93.49 +    void validate() throws ValidationException;
   93.50 +}
    94.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    94.2 +++ b/src/net/fortuna/ical4j/model/WeekDay.java	Tue Feb 10 18:12:00 2015 +0100
    94.3 @@ -0,0 +1,284 @@
    94.4 +/**
    94.5 + * Copyright (c) 2012, Ben Fortuna
    94.6 + * All rights reserved.
    94.7 + *
    94.8 + * Redistribution and use in source and binary forms, with or without
    94.9 + * modification, are permitted provided that the following conditions
   94.10 + * are met:
   94.11 + *
   94.12 + *  o Redistributions of source code must retain the above copyright
   94.13 + * notice, this list of conditions and the following disclaimer.
   94.14 + *
   94.15 + *  o Redistributions in binary form must reproduce the above copyright
   94.16 + * notice, this list of conditions and the following disclaimer in the
   94.17 + * documentation and/or other materials provided with the distribution.
   94.18 + *
   94.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
   94.20 + * may be used to endorse or promote products derived from this software
   94.21 + * without specific prior written permission.
   94.22 + *
   94.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   94.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   94.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   94.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
   94.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   94.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   94.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   94.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   94.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   94.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   94.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   94.34 + */
   94.35 +package net.fortuna.ical4j.model;
   94.36 +
   94.37 +import java.io.Serializable;
   94.38 +import java.util.Calendar;
   94.39 +
   94.40 +import net.fortuna.ical4j.util.Numbers;
   94.41 +
   94.42 +import org.apache.commons.lang.ObjectUtils;
   94.43 +import org.apache.commons.lang.builder.HashCodeBuilder;
   94.44 +
   94.45 +/**
   94.46 + * $Id$
   94.47 + * 
   94.48 + * Created: 19/12/2004
   94.49 + *
   94.50 + * Defines a day of the week with a possible offset related to
   94.51 + * a MONTHLY or YEARLY occurrence.
   94.52 + * 
   94.53 + * @author Ben Fortuna
   94.54 + */
   94.55 +public class WeekDay implements Serializable {
   94.56 +    
   94.57 +    private static final long serialVersionUID = -4412000990022011469L;
   94.58 +
   94.59 +    /**
   94.60 +     * Sunday.
   94.61 +     */
   94.62 +    public static final WeekDay SU = new WeekDay("SU", 0);
   94.63 +
   94.64 +    /**
   94.65 +     * Monday.
   94.66 +     */
   94.67 +    public static final WeekDay MO = new WeekDay("MO", 0);
   94.68 +
   94.69 +    /**
   94.70 +     * Tuesday.
   94.71 +     */
   94.72 +    public static final WeekDay TU = new WeekDay("TU", 0);
   94.73 +
   94.74 +    /**
   94.75 +     * Wednesday.
   94.76 +     */
   94.77 +    public static final WeekDay WE = new WeekDay("WE", 0);
   94.78 +
   94.79 +    /**
   94.80 +     * Thursday.
   94.81 +     */
   94.82 +    public static final WeekDay TH = new WeekDay("TH", 0);
   94.83 +
   94.84 +    /**
   94.85 +     * Friday.
   94.86 +     */
   94.87 +    public static final WeekDay FR = new WeekDay("FR", 0);
   94.88 +
   94.89 +    /**
   94.90 +     * Saturday.
   94.91 +     */
   94.92 +    public static final WeekDay SA = new WeekDay("SA", 0);
   94.93 +
   94.94 +    private String day;
   94.95 +    
   94.96 +    private int offset;
   94.97 +    
   94.98 +    /**
   94.99 +     * @param value a string representation of a week day
  94.100 +     */
  94.101 +    public WeekDay(final String value) {
  94.102 +        if (value.length() > 2) {
  94.103 +            offset = Numbers.parseInt(value.substring(0, value.length() - 2));
  94.104 +        }
  94.105 +        else {
  94.106 +            offset = 0;
  94.107 +        }
  94.108 +        day = value.substring(value.length() - 2);
  94.109 +        validateDay();
  94.110 +    }
  94.111 +    
  94.112 +    /**
  94.113 +     * @param day a string representation of a week day
  94.114 +     * @param offset a month offset value
  94.115 +     */
  94.116 +    private WeekDay(final String day, final int offset) {
  94.117 +        this.day = day;
  94.118 +        this.offset = offset;
  94.119 +    }
  94.120 +    
  94.121 +    /**
  94.122 +     * Constructs a new weekday instance based on the specified
  94.123 +     * instance and offset.
  94.124 +     * @param weekDay a week day template for the instance
  94.125 +     * @param offset a month offset value
  94.126 +     */
  94.127 +    public WeekDay(final WeekDay weekDay, final int offset) {
  94.128 +        this.day = weekDay.getDay();
  94.129 +        this.offset = offset;
  94.130 +    }
  94.131 +    
  94.132 +    private void validateDay() {
  94.133 +        if (!SU.day.equals(day)
  94.134 +            && !MO.day.equals(day)
  94.135 +            && !TU.day.equals(day)
  94.136 +            && !WE.day.equals(day)
  94.137 +            && !TH.day.equals(day)
  94.138 +            && !FR.day.equals(day)
  94.139 +            && !SA.day.equals(day)) {
  94.140 +            throw new IllegalArgumentException("Invalid day: " + day);
  94.141 +        }
  94.142 +    }
  94.143 +    /**
  94.144 +     * @return Returns the day.
  94.145 +     */
  94.146 +    public final String getDay() {
  94.147 +        return day;
  94.148 +    }
  94.149 +    
  94.150 +    /**
  94.151 +     * @return Returns the offset.
  94.152 +     */
  94.153 +    public final int getOffset() {
  94.154 +        return offset;
  94.155 +    }
  94.156 +        
  94.157 +    /**
  94.158 +     * {@inheritDoc}
  94.159 +     */
  94.160 +    public final String toString() {
  94.161 +        final StringBuffer b = new StringBuffer();
  94.162 +        if (getOffset() != 0) {
  94.163 +            b.append(getOffset());
  94.164 +        }
  94.165 +        b.append(getDay());
  94.166 +        return b.toString();
  94.167 +    }
  94.168 +    
  94.169 +    /**
  94.170 +     * Returns a weekday representation of the specified calendar.
  94.171 +     * @param cal a calendar (java.util)
  94.172 +     * @return a weekday instance representing the specified calendar
  94.173 +     */
  94.174 +    public static final WeekDay getWeekDay(final Calendar cal) {
  94.175 +        return new WeekDay(getDay(cal.get(Calendar.DAY_OF_WEEK)), 0);
  94.176 +    }
  94.177 +    
  94.178 +    /**
  94.179 +     * Returns a weekday/offset representation of the specified calendar.
  94.180 +     * @param cal a calendar (java.util)
  94.181 +     * @return a weekday instance representing the specified calendar
  94.182 +     */
  94.183 +    public static final WeekDay getMonthlyOffset(final Calendar cal) {
  94.184 +        return new WeekDay(getDay(cal.get(Calendar.DAY_OF_WEEK)), cal.get(Calendar.DAY_OF_WEEK_IN_MONTH));
  94.185 +    }
  94.186 +    
  94.187 +    /**
  94.188 +     * Returns a weekday/negative offset representation of the specified calendar.
  94.189 +     * @param cal a calendar (java.util)
  94.190 +     * @return a weekday instance representing the specified calendar
  94.191 +     */
  94.192 +    public static final WeekDay getNegativeMonthlyOffset(final Calendar cal) {
  94.193 +        return new WeekDay(getDay(cal.get(Calendar.DAY_OF_WEEK)), cal.get(Calendar.DAY_OF_WEEK_IN_MONTH) - 6);
  94.194 +    }
  94.195 +    
  94.196 +    /**
  94.197 +     * Returns the corresponding day constant to the specified
  94.198 +     * java.util.Calendar.DAY_OF_WEEK property.
  94.199 +     * @param calDay a property value of java.util.Calendar.DAY_OF_WEEK
  94.200 +     * @return a string, or null if an invalid DAY_OF_WEEK property is
  94.201 +     * specified
  94.202 +     */
  94.203 +    public static WeekDay getDay(final int calDay) {
  94.204 +        WeekDay day = null;
  94.205 +        switch (calDay) {
  94.206 +            case Calendar.SUNDAY:
  94.207 +                day = SU;
  94.208 +                break;
  94.209 +            case Calendar.MONDAY:
  94.210 +                day = MO;
  94.211 +                break;
  94.212 +            case Calendar.TUESDAY:
  94.213 +                day = TU;
  94.214 +                break;
  94.215 +            case Calendar.WEDNESDAY:
  94.216 +                day = WE;
  94.217 +                break;
  94.218 +            case Calendar.THURSDAY:
  94.219 +                day = TH;
  94.220 +                break;
  94.221 +            case Calendar.FRIDAY:
  94.222 +                day = FR;
  94.223 +                break;
  94.224 +            case Calendar.SATURDAY:
  94.225 +                day = SA;
  94.226 +                break;
  94.227 +            default:
  94.228 +                break;
  94.229 +        }
  94.230 +        return day;
  94.231 +    }
  94.232 +    
  94.233 +    /**
  94.234 +     * Returns the corresponding <code>java.util.Calendar.DAY_OF_WEEK</code>
  94.235 +     * constant for the specified <code>WeekDay</code>.
  94.236 +     * @param weekday a week day instance
  94.237 +     * @return the corresponding <code>java.util.Calendar</code> day
  94.238 +     */
  94.239 +    public static int getCalendarDay(final WeekDay weekday) {
  94.240 +        int calendarDay = -1;
  94.241 +        if (SU.getDay().equals(weekday.getDay())) {
  94.242 +            calendarDay = Calendar.SUNDAY;
  94.243 +        }
  94.244 +        else if (MO.getDay().equals(weekday.getDay())) {
  94.245 +            calendarDay = Calendar.MONDAY;
  94.246 +        }
  94.247 +        else if (TU.getDay().equals(weekday.getDay())) {
  94.248 +            calendarDay = Calendar.TUESDAY;
  94.249 +        }
  94.250 +        else if (WE.getDay().equals(weekday.getDay())) {
  94.251 +            calendarDay = Calendar.WEDNESDAY;
  94.252 +        }
  94.253 +        else if (TH.getDay().equals(weekday.getDay())) {
  94.254 +            calendarDay = Calendar.THURSDAY;
  94.255 +        }
  94.256 +        else if (FR.getDay().equals(weekday.getDay())) {
  94.257 +            calendarDay = Calendar.FRIDAY;
  94.258 +        }
  94.259 +        else if (SA.getDay().equals(weekday.getDay())) {
  94.260 +            calendarDay = Calendar.SATURDAY;
  94.261 +        }
  94.262 +        return calendarDay;
  94.263 +    }
  94.264 +    
  94.265 +    /**
  94.266 +     * {@inheritDoc}
  94.267 +     */
  94.268 +    public final boolean equals(final Object arg0) {
  94.269 +        if (arg0 == null) {
  94.270 +            return false;
  94.271 +        }
  94.272 +        if (!(arg0 instanceof WeekDay)) {
  94.273 +            return false;
  94.274 +        }
  94.275 +        final WeekDay wd = (WeekDay) arg0;
  94.276 +        return ObjectUtils.equals(wd.getDay(), getDay())
  94.277 +            && wd.getOffset() == getOffset();
  94.278 +    }
  94.279 +    
  94.280 +    /**
  94.281 +     * {@inheritDoc}
  94.282 +     */
  94.283 +    public final int hashCode() {
  94.284 +        return new HashCodeBuilder().append(getDay())
  94.285 +            .append(getOffset()).toHashCode();
  94.286 +    }
  94.287 +}
    95.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    95.2 +++ b/src/net/fortuna/ical4j/model/WeekDayList.java	Tue Feb 10 18:12:00 2015 +0100
    95.3 @@ -0,0 +1,128 @@
    95.4 +/**
    95.5 + * Copyright (c) 2012, Ben Fortuna
    95.6 + * All rights reserved.
    95.7 + *
    95.8 + * Redistribution and use in source and binary forms, with or without
    95.9 + * modification, are permitted provided that the following conditions
   95.10 + * are met:
   95.11 + *
   95.12 + *  o Redistributions of source code must retain the above copyright
   95.13 + * notice, this list of conditions and the following disclaimer.
   95.14 + *
   95.15 + *  o Redistributions in binary form must reproduce the above copyright
   95.16 + * notice, this list of conditions and the following disclaimer in the
   95.17 + * documentation and/or other materials provided with the distribution.
   95.18 + *
   95.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
   95.20 + * may be used to endorse or promote products derived from this software
   95.21 + * without specific prior written permission.
   95.22 + *
   95.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   95.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   95.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   95.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
   95.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   95.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   95.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   95.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   95.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   95.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   95.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   95.34 + */
   95.35 +package net.fortuna.ical4j.model;
   95.36 +
   95.37 +import java.io.Serializable;
   95.38 +import java.util.ArrayList;
   95.39 +import java.util.Iterator;
   95.40 +import java.util.StringTokenizer;
   95.41 +
   95.42 +import net.fortuna.ical4j.util.CompatibilityHints;
   95.43 +
   95.44 +/**
   95.45 + * $Id$ [29-May-2004]
   95.46 + *
   95.47 + * Defines a list of days.
   95.48 + * 
   95.49 + * @author Ben Fortuna
   95.50 + */
   95.51 +public class WeekDayList extends ArrayList implements Serializable {
   95.52 +    
   95.53 +    private static final long serialVersionUID = 1243262497035300445L;
   95.54 +
   95.55 +    /**
   95.56 +     * Default constructor.
   95.57 +     */
   95.58 +    public WeekDayList() {
   95.59 +    }
   95.60 +
   95.61 +    /**
   95.62 +     * Creates a new instance with the specified initial capacity.
   95.63 +     * @param initialCapacity the initial capacity of the list
   95.64 +     */
   95.65 +    public WeekDayList(final int initialCapacity) {
   95.66 +        super(initialCapacity);
   95.67 +    }
   95.68 +
   95.69 +    /**
   95.70 +     * Constructor.
   95.71 +     * @param aString a string representation of a day list
   95.72 +     */
   95.73 +    public WeekDayList(final String aString) {
   95.74 +        final boolean outlookCompatibility =
   95.75 +            CompatibilityHints.isHintEnabled(CompatibilityHints.KEY_OUTLOOK_COMPATIBILITY);
   95.76 +        
   95.77 +        final StringTokenizer t = new StringTokenizer(aString, ",");
   95.78 +        while (t.hasMoreTokens()) {
   95.79 +            if (outlookCompatibility) {
   95.80 +                add(new WeekDay(t.nextToken().replaceAll(" ", "")));
   95.81 +            }
   95.82 +            else {
   95.83 +                add(new WeekDay(t.nextToken()));
   95.84 +            }
   95.85 +        }
   95.86 +    }
   95.87 +
   95.88 +    /**
   95.89 +     * @param weekDay a day to add to the list
   95.90 +     * @return true if the week day is added, otherwise false
   95.91 +     */
   95.92 +    public final boolean add(final WeekDay weekDay) {
   95.93 +        return add((Object) weekDay);
   95.94 +    }
   95.95 +    
   95.96 +    /**
   95.97 +     * Overrides superclass to throw an <code>IllegalArgumentException</code>
   95.98 +     * where argument is not a <code>net.fortuna.ical4j.model.WeekDay</code>.
   95.99 +     * @param weekday a week day to add
  95.100 +     * @return true if the week day is added, otherwise false
  95.101 +     * @see List#add(E)
  95.102 +     */
  95.103 +    public final boolean add(final Object weekday) {
  95.104 +        if (!(weekday instanceof WeekDay)) {
  95.105 +            throw new IllegalArgumentException("Argument not a " + WeekDay.class.getName());
  95.106 +        }
  95.107 +        return super.add(weekday);
  95.108 +    }
  95.109 +
  95.110 +    /**
  95.111 +     * @param weekDay a day to remove from the list
  95.112 +     * @return true if the week day is removed, otherwise false
  95.113 +     */
  95.114 +    public final boolean remove(final WeekDay weekDay) {
  95.115 +        return remove((Object) weekDay);
  95.116 +    }
  95.117 +
  95.118 +    /**
  95.119 +     * {@inheritDoc}
  95.120 +     */
  95.121 +    public final String toString() {
  95.122 +        final StringBuffer b = new StringBuffer();
  95.123 +        for (final Iterator i = iterator(); i.hasNext();) {
  95.124 +            b.append(i.next());
  95.125 +            if (i.hasNext()) {
  95.126 +                b.append(',');
  95.127 +            }
  95.128 +        }
  95.129 +        return b.toString();
  95.130 +    }
  95.131 +}
    96.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    96.2 +++ b/src/net/fortuna/ical4j/model/component/Available.java	Tue Feb 10 18:12:00 2015 +0100
    96.3 @@ -0,0 +1,185 @@
    96.4 +/**
    96.5 + * Copyright (c) 2012, Ben Fortuna
    96.6 + * All rights reserved.
    96.7 + *
    96.8 + * Redistribution and use in source and binary forms, with or without
    96.9 + * modification, are permitted provided that the following conditions
   96.10 + * are met:
   96.11 + *
   96.12 + *  o Redistributions of source code must retain the above copyright
   96.13 + * notice, this list of conditions and the following disclaimer.
   96.14 + *
   96.15 + *  o Redistributions in binary form must reproduce the above copyright
   96.16 + * notice, this list of conditions and the following disclaimer in the
   96.17 + * documentation and/or other materials provided with the distribution.
   96.18 + *
   96.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
   96.20 + * may be used to endorse or promote products derived from this software
   96.21 + * without specific prior written permission.
   96.22 + *
   96.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   96.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   96.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   96.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
   96.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   96.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   96.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   96.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   96.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   96.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   96.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   96.34 + */
   96.35 +package net.fortuna.ical4j.model.component;
   96.36 +
   96.37 +import net.fortuna.ical4j.model.Component;
   96.38 +import net.fortuna.ical4j.model.Parameter;
   96.39 +import net.fortuna.ical4j.model.Property;
   96.40 +import net.fortuna.ical4j.model.PropertyList;
   96.41 +import net.fortuna.ical4j.model.ValidationException;
   96.42 +import net.fortuna.ical4j.model.parameter.Value;
   96.43 +import net.fortuna.ical4j.model.property.DtEnd;
   96.44 +import net.fortuna.ical4j.model.property.DtStart;
   96.45 +import net.fortuna.ical4j.util.PropertyValidator;
   96.46 +
   96.47 +/**
   96.48 + * $Id$ [05-Apr-2004]
   96.49 + *
   96.50 + * Defines an iCalendar Available component.
   96.51 + *
   96.52 + * <pre>
   96.53 + *
   96.54 + *       availablec  = &quot;BEGIN&quot; &quot;:&quot; &quot;AVAILABLE&quot; CRLF
   96.55 + *
   96.56 + *                    availableprop
   96.57 + *
   96.58 + *                    &quot;END&quot; &quot;:&quot; &quot;AVAILABLE&quot; CRLF
   96.59 + *
   96.60 +          availableprop  = *(
   96.61 +
   96.62 +                         ; the following are REQUIRED,
   96.63 +                         ; but MUST NOT occur more than once
   96.64 +
   96.65 +                         dtstamp / dtstart / uid /
   96.66 +
   96.67 +                         ; either a 'dtend' or a 'duration' is required
   96.68 +                         ; in a 'availableprop', but 'dtend' and
   96.69 +                         ; 'duration' MUST NOT occur in the same
   96.70 +                         ; 'availableprop', and each MUST NOT occur more
   96.71 +                         ; than once
   96.72 +
   96.73 +                         dtend / duration /
   96.74 +
   96.75 +                         ; the following are OPTIONAL,
   96.76 +                         ; but MUST NOT occur more than once
   96.77 +
   96.78 +                         created / last-mod / recurid / rrule /
   96.79 +                         summary /
   96.80 +
   96.81 +                         ; the following are OPTIONAL,
   96.82 +                         ; and MAY occur more than once
   96.83 +
   96.84 +                         categories / comment / contact / exdate /
   96.85 +                         rdate / x-prop
   96.86 +
   96.87 +                         )
   96.88 + * </pre>
   96.89 + *
   96.90 + * @author Ben Fortuna
   96.91 + * @author Mike Douglass
   96.92 + */
   96.93 +public class Available extends Component {
   96.94 +
   96.95 +    private static final long serialVersionUID = -2494710612002978763L;
   96.96 +
   96.97 +    /**
   96.98 +     * Default constructor.
   96.99 +     */
  96.100 +    public Available() {
  96.101 +        super(AVAILABLE);
  96.102 +    }
  96.103 +
  96.104 +    /**
  96.105 +     * Constructor.
  96.106 +     * @param properties a list of properties
  96.107 +     */
  96.108 +    public Available(final PropertyList properties) {
  96.109 +        super(AVAILABLE, properties);
  96.110 +    }
  96.111 +
  96.112 +    /**
  96.113 +     * {@inheritDoc}
  96.114 +     */
  96.115 +    public final void validate(final boolean recurse)
  96.116 +            throws ValidationException {
  96.117 +
  96.118 +        /*
  96.119 +         * ; dtstamp / dtstart / uid are required, but MUST NOT occur more than once /
  96.120 +         */
  96.121 +        PropertyValidator.getInstance().assertOne(Property.DTSTART,
  96.122 +                getProperties());
  96.123 +        PropertyValidator.getInstance().assertOne(Property.DTSTAMP,
  96.124 +                getProperties());
  96.125 +        PropertyValidator.getInstance().assertOne(Property.UID,
  96.126 +                getProperties());
  96.127 +
  96.128 +        /*       If specified, the "DTSTART" and "DTEND" properties in
  96.129 +         *      "VAVAILABILITY" components and "AVAILABLE" sub-components MUST be
  96.130 +         *      "DATE-TIME" values specified as either date with UTC time or date
  96.131 +         *      with local time and a time zone reference.
  96.132 +         */
  96.133 +        final DtStart start = (DtStart) getProperty(Property.DTSTART);
  96.134 +        if (Value.DATE.equals(start.getParameter(Parameter.VALUE))) {
  96.135 +            throw new ValidationException("Property [" + Property.DTSTART
  96.136 +                    + "] must be a " + Value.DATE_TIME);
  96.137 +        }
  96.138 +
  96.139 +        /*
  96.140 +         *                ; the following are optional,
  96.141 +         *                ; but MUST NOT occur more than once
  96.142 +         *
  96.143 +         *               created / last-mod / recurid / rrule /
  96.144 +         *               summary /
  96.145 +         */
  96.146 +        PropertyValidator.getInstance().assertOneOrLess(Property.CREATED,
  96.147 +                getProperties());
  96.148 +        PropertyValidator.getInstance().assertOneOrLess(Property.LAST_MODIFIED,
  96.149 +                getProperties());
  96.150 +        PropertyValidator.getInstance().assertOneOrLess(Property.RECURRENCE_ID,
  96.151 +                getProperties());
  96.152 +        PropertyValidator.getInstance().assertOneOrLess(Property.RRULE,
  96.153 +                getProperties());
  96.154 +        PropertyValidator.getInstance().assertOneOrLess(Property.SUMMARY,
  96.155 +                getProperties());
  96.156 +
  96.157 +        /*
  96.158 +         ; either a 'dtend' or a 'duration' is required
  96.159 +         ; in a 'availableprop', but 'dtend' and
  96.160 +         ; 'duration' MUST NOT occur in the same
  96.161 +         ; 'availableprop', and each MUST NOT occur more
  96.162 +         ; than once
  96.163 +         */
  96.164 +        if (getProperty(Property.DTEND) != null) {
  96.165 +            PropertyValidator.getInstance().assertOne(Property.DTEND,
  96.166 +                    getProperties());
  96.167 +            /* Must be DATE_TIME */
  96.168 +            final DtEnd end = (DtEnd) getProperty(Property.DTEND);
  96.169 +            if (Value.DATE.equals(end.getParameter(Parameter.VALUE))) {
  96.170 +                throw new ValidationException("Property [" + Property.DTEND
  96.171 +                        + "] must be a " + Value.DATE_TIME);
  96.172 +            }
  96.173 +        } else {
  96.174 +            PropertyValidator.getInstance().assertOne(Property.DURATION,
  96.175 +                    getProperties());
  96.176 +        }
  96.177 +
  96.178 +        /*
  96.179 +         * ; the following are optional, ; and MAY occur more than once
  96.180 +         *               categories / comment / contact / exdate /
  96.181 +         *               rdate / x-prop
  96.182 +         */
  96.183 +
  96.184 +        if (recurse) {
  96.185 +            validateProperties();
  96.186 +        }
  96.187 +    }
  96.188 +}
    97.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    97.2 +++ b/src/net/fortuna/ical4j/model/component/CalendarComponent.java	Tue Feb 10 18:12:00 2015 +0100
    97.3 @@ -0,0 +1,177 @@
    97.4 +/**
    97.5 + * Copyright (c) 2012, Ben Fortuna
    97.6 + * All rights reserved.
    97.7 + *
    97.8 + * Redistribution and use in source and binary forms, with or without
    97.9 + * modification, are permitted provided that the following conditions
   97.10 + * are met:
   97.11 + *
   97.12 + *  o Redistributions of source code must retain the above copyright
   97.13 + * notice, this list of conditions and the following disclaimer.
   97.14 + *
   97.15 + *  o Redistributions in binary form must reproduce the above copyright
   97.16 + * notice, this list of conditions and the following disclaimer in the
   97.17 + * documentation and/or other materials provided with the distribution.
   97.18 + *
   97.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
   97.20 + * may be used to endorse or promote products derived from this software
   97.21 + * without specific prior written permission.
   97.22 + *
   97.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   97.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   97.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   97.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
   97.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   97.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   97.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   97.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   97.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   97.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   97.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   97.34 + */
   97.35 +package net.fortuna.ical4j.model.component;
   97.36 +
   97.37 +import net.fortuna.ical4j.model.Component;
   97.38 +import net.fortuna.ical4j.model.PropertyList;
   97.39 +import net.fortuna.ical4j.model.ValidationException;
   97.40 +import net.fortuna.ical4j.model.Validator;
   97.41 +import net.fortuna.ical4j.model.property.Method;
   97.42 +
   97.43 +/**
   97.44 + * $Id$
   97.45 + *
   97.46 + * Created on 26/02/2006
   97.47 + *
   97.48 + * Base class for components that may be added to a calendar.
   97.49 + * @author Ben Fortuna
   97.50 + */
   97.51 +public abstract class CalendarComponent extends Component {
   97.52 +
   97.53 +    /**
   97.54 +     * 
   97.55 +     */
   97.56 +    private static final long serialVersionUID = -5832972592377720592L;
   97.57 +    
   97.58 +    /**
   97.59 +     * Validator instance that does nothing.
   97.60 +     */
   97.61 +    protected static final Validator EMPTY_VALIDATOR = new EmptyValidator();
   97.62 +    
   97.63 +    /**
   97.64 +     * @param name component name
   97.65 +     */
   97.66 +    public CalendarComponent(final String name) {
   97.67 +        super(name);
   97.68 +    }
   97.69 +
   97.70 +    /**
   97.71 +     * @param name component name
   97.72 +     * @param properties component properties
   97.73 +     */
   97.74 +    public CalendarComponent(final String name, final PropertyList properties) {
   97.75 +        super(name, properties);
   97.76 +    }
   97.77 +
   97.78 +    /**
   97.79 +     * Performs method-specific ITIP validation.
   97.80 +     * @param method the applicable method
   97.81 +     * @throws ValidationException where the component does not comply with RFC2446
   97.82 +     */
   97.83 +    public final void validate(Method method) throws ValidationException {
   97.84 +        final Validator validator = getValidator(method);
   97.85 +        if (validator != null) {
   97.86 +            validator.validate();
   97.87 +        }
   97.88 +        else {
   97.89 +            throw new ValidationException("Unsupported method: " + method);
   97.90 +        }
   97.91 +    }
   97.92 +
   97.93 +    /**
   97.94 +     * @param method a method to validate on
   97.95 +     * @return a validator for the specified method or null if the method is not supported
   97.96 +     */
   97.97 +    protected abstract Validator getValidator(Method method);
   97.98 +    
   97.99 +    /**
  97.100 +     * Apply validation for METHOD=PUBLISH.
  97.101 +     * @throws ValidationException where the component does not comply with RFC2446
  97.102 +     * @deprecated
  97.103 +     */
  97.104 +    public final void validatePublish() throws ValidationException {
  97.105 +        validate(Method.PUBLISH);
  97.106 +    }
  97.107 +
  97.108 +    /**
  97.109 +     * Apply validation for METHOD=REQUEST.
  97.110 +     * @throws ValidationException where the component does not comply with RFC2446
  97.111 +     * @deprecated
  97.112 +     */
  97.113 +    public final void validateRequest() throws ValidationException {
  97.114 +        validate(Method.REQUEST);
  97.115 +    }
  97.116 +
  97.117 +    /**
  97.118 +     * Apply validation for METHOD=REPLY.
  97.119 +     * @throws ValidationException where the component does not comply with RFC2446
  97.120 +     * @deprecated
  97.121 +     */
  97.122 +    public final void validateReply() throws ValidationException {
  97.123 +        validate(Method.REPLY);
  97.124 +    }
  97.125 +
  97.126 +    /**
  97.127 +     * Apply validation for METHOD=ADD.
  97.128 +     * @throws ValidationException where the component does not comply with RFC2446
  97.129 +     * @deprecated
  97.130 +     */
  97.131 +    public final void validateAdd() throws ValidationException {
  97.132 +        validate(Method.ADD);
  97.133 +    }
  97.134 +
  97.135 +    /**
  97.136 +     * Apply validation for METHOD=CANCEL.
  97.137 +     * @throws ValidationException where the component does not comply with RFC2446
  97.138 +     * @deprecated
  97.139 +     */
  97.140 +    public final void validateCancel() throws ValidationException {
  97.141 +        validate(Method.CANCEL);
  97.142 +    }
  97.143 +
  97.144 +    /**
  97.145 +     * Apply validation for METHOD=REFRESH.
  97.146 +     * @throws ValidationException where the component does not comply with RFC2446
  97.147 +     * @deprecated
  97.148 +     */
  97.149 +    public final void validateRefresh() throws ValidationException {
  97.150 +        validate(Method.REFRESH);
  97.151 +    }
  97.152 +
  97.153 +    /**
  97.154 +     * Apply validation for METHOD=COUNTER.
  97.155 +     * @throws ValidationException where the component does not comply with RFC2446
  97.156 +     * @deprecated
  97.157 +     */
  97.158 +    public final void validateCounter() throws ValidationException {
  97.159 +        validate(Method.COUNTER);
  97.160 +    }
  97.161 +
  97.162 +    /**
  97.163 +     * Apply validation for METHOD=DECLINE-COUNTER.
  97.164 +     * @throws ValidationException where the component does not comply with RFC2446
  97.165 +     * @deprecated
  97.166 +     */
  97.167 +    public final void validateDeclineCounter() throws ValidationException {
  97.168 +        validate(Method.DECLINE_COUNTER);
  97.169 +    }
  97.170 +    
  97.171 +    private static class EmptyValidator implements Validator {
  97.172 +        
  97.173 +		private static final long serialVersionUID = 1L;
  97.174 +
  97.175 +        public void validate() throws ValidationException {
  97.176 +            // TODO Auto-generated method stub
  97.177 +            
  97.178 +        }
  97.179 +    }
  97.180 +}
    98.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    98.2 +++ b/src/net/fortuna/ical4j/model/component/Daylight.java	Tue Feb 10 18:12:00 2015 +0100
    98.3 @@ -0,0 +1,84 @@
    98.4 +/**
    98.5 + * Copyright (c) 2012, Ben Fortuna
    98.6 + * All rights reserved.
    98.7 + *
    98.8 + * Redistribution and use in source and binary forms, with or without
    98.9 + * modification, are permitted provided that the following conditions
   98.10 + * are met:
   98.11 + *
   98.12 + *  o Redistributions of source code must retain the above copyright
   98.13 + * notice, this list of conditions and the following disclaimer.
   98.14 + *
   98.15 + *  o Redistributions in binary form must reproduce the above copyright
   98.16 + * notice, this list of conditions and the following disclaimer in the
   98.17 + * documentation and/or other materials provided with the distribution.
   98.18 + *
   98.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
   98.20 + * may be used to endorse or promote products derived from this software
   98.21 + * without specific prior written permission.
   98.22 + *
   98.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   98.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   98.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   98.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
   98.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   98.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   98.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   98.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   98.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   98.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   98.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   98.34 + */
   98.35 +package net.fortuna.ical4j.model.component;
   98.36 +
   98.37 +import net.fortuna.ical4j.model.PropertyList;
   98.38 +
   98.39 +/**
   98.40 + * $Id$ [05-Apr-2004]
   98.41 + *
   98.42 + * Defines an iCalendar daylight savings timezone observance component.
   98.43 + *
   98.44 + * <pre>
   98.45 + *
   98.46 + *       daylightc  = &quot;BEGIN&quot; &quot;:&quot; &quot;DAYLIGHT&quot; CRLF
   98.47 + *
   98.48 + *                    tzprop
   98.49 + *
   98.50 + *                    &quot;END&quot; &quot;:&quot; &quot;DAYLIGHT&quot; CRLF
   98.51 + *
   98.52 + *       tzprop     = 3*(
   98.53 + *
   98.54 + *                  ; the following are each REQUIRED,
   98.55 + *                  ; but MUST NOT occur more than once
   98.56 + *
   98.57 + *                  dtstart / tzoffsetto / tzoffsetfrom /
   98.58 + *
   98.59 + *                  ; the following are optional,
   98.60 + *                  ; and MAY occur more than once
   98.61 + *
   98.62 + *                  comment / rdate / rrule / tzname / x-prop
   98.63 + *
   98.64 + *                  )
   98.65 + * </pre>
   98.66 + *
   98.67 + * @author Ben Fortuna
   98.68 + */
   98.69 +public class Daylight extends Observance {
   98.70 +
   98.71 +    private static final long serialVersionUID = -2494710612002978763L;
   98.72 +
   98.73 +    /**
   98.74 +     * Default constructor.
   98.75 +     */
   98.76 +    public Daylight() {
   98.77 +        super(DAYLIGHT);
   98.78 +    }
   98.79 +
   98.80 +    /**
   98.81 +     * Constructor.
   98.82 +     * @param properties a list of properties
   98.83 +     */
   98.84 +    public Daylight(final PropertyList properties) {
   98.85 +        super(DAYLIGHT, properties);
   98.86 +    }
   98.87 +}
    99.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    99.2 +++ b/src/net/fortuna/ical4j/model/component/Observance.java	Tue Feb 10 18:12:00 2015 +0100
    99.3 @@ -0,0 +1,334 @@
    99.4 +/**
    99.5 + * Copyright (c) 2012, Ben Fortuna
    99.6 + * All rights reserved.
    99.7 + *
    99.8 + * Redistribution and use in source and binary forms, with or without
    99.9 + * modification, are permitted provided that the following conditions
   99.10 + * are met:
   99.11 + *
   99.12 + *  o Redistributions of source code must retain the above copyright
   99.13 + * notice, this list of conditions and the following disclaimer.
   99.14 + *
   99.15 + *  o Redistributions in binary form must reproduce the above copyright
   99.16 + * notice, this list of conditions and the following disclaimer in the
   99.17 + * documentation and/or other materials provided with the distribution.
   99.18 + *
   99.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
   99.20 + * may be used to endorse or promote products derived from this software
   99.21 + * without specific prior written permission.
   99.22 + *
   99.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   99.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   99.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   99.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
   99.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   99.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   99.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   99.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   99.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   99.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   99.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   99.34 + */
   99.35 +package net.fortuna.ical4j.model.component;
   99.36 +
   99.37 +import java.io.IOException;
   99.38 +import java.text.DateFormat;
   99.39 +import java.text.ParseException;
   99.40 +import java.text.SimpleDateFormat;
   99.41 +import java.util.Arrays;
   99.42 +import java.util.Calendar;
   99.43 +import java.util.Collections;
   99.44 +import java.util.Iterator;
   99.45 +import java.util.Map;
   99.46 +import java.util.TreeMap;
   99.47 +
   99.48 +import net.fortuna.ical4j.model.Component;
   99.49 +import net.fortuna.ical4j.model.Date;
   99.50 +import net.fortuna.ical4j.model.DateList;
   99.51 +import net.fortuna.ical4j.model.DateTime;
   99.52 +import net.fortuna.ical4j.model.Property;
   99.53 +import net.fortuna.ical4j.model.PropertyList;
   99.54 +import net.fortuna.ical4j.model.ValidationException;
   99.55 +import net.fortuna.ical4j.model.parameter.Value;
   99.56 +import net.fortuna.ical4j.model.property.DtStart;
   99.57 +import net.fortuna.ical4j.model.property.RDate;
   99.58 +import net.fortuna.ical4j.model.property.RRule;
   99.59 +import net.fortuna.ical4j.model.property.TzOffsetFrom;
   99.60 +import net.fortuna.ical4j.model.property.TzOffsetTo;
   99.61 +import net.fortuna.ical4j.util.Dates;
   99.62 +import net.fortuna.ical4j.util.PropertyValidator;
   99.63 +import net.fortuna.ical4j.util.TimeZones;
   99.64 +
   99.65 +import org.apache.commons.logging.Log;
   99.66 +import org.apache.commons.logging.LogFactory;
   99.67 +
   99.68 +/**
   99.69 + * $Id$ [05-Apr-2004]
   99.70 + *
   99.71 + * Defines an iCalendar sub-component representing a timezone observance. Class made abstract such that only Standard
   99.72 + * and Daylight instances are valid.
   99.73 + * @author Ben Fortuna
   99.74 + */
   99.75 +public abstract class Observance extends Component {
   99.76 +
   99.77 +    /**
   99.78 +     * 
   99.79 +     */
   99.80 +    private static final long serialVersionUID = 2523330383042085994L;
   99.81 +
   99.82 +    /**
   99.83 +     * one of 'standardc' or 'daylightc' MUST occur and each MAY occur more than once.
   99.84 +     */
   99.85 +    public static final String STANDARD = "STANDARD";
   99.86 +
   99.87 +    /**
   99.88 +     * Token for daylight observance.
   99.89 +     */
   99.90 +    public static final String DAYLIGHT = "DAYLIGHT";
   99.91 +
   99.92 +    // TODO: clear cache when observance definition changes (??)
   99.93 +    private long[] onsetsMillisec;
   99.94 +    private DateTime[] onsetsDates;
   99.95 +    private Map onsets = new TreeMap();
   99.96 +    private Date initialOnset = null;
   99.97 +    
   99.98 +    /**
   99.99 +     * Used for parsing times in a UTC date-time representation.
  99.100 +     */
  99.101 +    private static final String UTC_PATTERN = "yyyyMMdd'T'HHmmss";
  99.102 +    private static final DateFormat UTC_FORMAT = new SimpleDateFormat(
  99.103 +            UTC_PATTERN);
  99.104 +    
  99.105 +    static {
  99.106 +        UTC_FORMAT.setTimeZone(TimeZones.getUtcTimeZone());
  99.107 +        UTC_FORMAT.setLenient(false);
  99.108 +    }
  99.109 +
  99.110 +    /* If this is set we have rrules. If we get a date after this rebuild onsets */
  99.111 +    private Date onsetLimit;
  99.112 +
  99.113 +    /**
  99.114 +     * Constructs a timezone observance with the specified name and no properties.
  99.115 +     * @param name the name of this observance component
  99.116 +     */
  99.117 +    protected Observance(final String name) {
  99.118 +        super(name);
  99.119 +    }
  99.120 +
  99.121 +    /**
  99.122 +     * Constructor protected to enforce use of sub-classes from this library.
  99.123 +     * @param name the name of the time type
  99.124 +     * @param properties a list of properties
  99.125 +     */
  99.126 +    protected Observance(final String name, final PropertyList properties) {
  99.127 +        super(name, properties);
  99.128 +    }
  99.129 +
  99.130 +    /**
  99.131 +     * {@inheritDoc}
  99.132 +     */
  99.133 +    public final void validate(final boolean recurse) throws ValidationException {
  99.134 +
  99.135 +        // From "4.8.3.3 Time Zone Offset From":
  99.136 +        // Conformance: This property MUST be specified in a "VTIMEZONE"
  99.137 +        // calendar component.
  99.138 +        PropertyValidator.getInstance().assertOne(Property.TZOFFSETFROM,
  99.139 +                getProperties());
  99.140 +
  99.141 +        // From "4.8.3.4 Time Zone Offset To":
  99.142 +        // Conformance: This property MUST be specified in a "VTIMEZONE"
  99.143 +        // calendar component.
  99.144 +        PropertyValidator.getInstance().assertOne(Property.TZOFFSETTO,
  99.145 +                getProperties());
  99.146 +
  99.147 +        /*
  99.148 +         * ; the following are each REQUIRED, ; but MUST NOT occur more than once dtstart / tzoffsetto / tzoffsetfrom /
  99.149 +         */
  99.150 +        PropertyValidator.getInstance().assertOne(Property.DTSTART,
  99.151 +                getProperties());
  99.152 +
  99.153 +        /*
  99.154 +         * ; the following are optional, ; and MAY occur more than once comment / rdate / rrule / tzname / x-prop
  99.155 +         */
  99.156 +
  99.157 +        if (recurse) {
  99.158 +            validateProperties();
  99.159 +        }
  99.160 +    }
  99.161 +
  99.162 +    /**
  99.163 +     * Returns the latest applicable onset of this observance for the specified date.
  99.164 +     * @param date the latest date that an observance onset may occur
  99.165 +     * @return the latest applicable observance date or null if there is no applicable observance onset for the
  99.166 +     * specified date
  99.167 +     */
  99.168 +    public final Date getLatestOnset(final Date date) {
  99.169 +        
  99.170 +        if (initialOnset == null) {
  99.171 +            try {
  99.172 +                initialOnset = applyOffsetFrom(calculateOnset(((DtStart) getProperty(Property.DTSTART)).getDate()));
  99.173 +            } catch (ParseException e) {
  99.174 +                Log log = LogFactory.getLog(Observance.class);
  99.175 +                log.error("Unexpected error calculating initial onset", e);
  99.176 +                // XXX: is this correct?
  99.177 +                return null;
  99.178 +            }
  99.179 +        }
  99.180 +        
  99.181 +        // observance not applicable if date is before the effective date of this observance..
  99.182 +        if (date.before(initialOnset)) {
  99.183 +            return null;
  99.184 +        }
  99.185 +
  99.186 +        if ((onsetsMillisec != null) && (onsetLimit == null || date.before(onsetLimit))) {
  99.187 +            return getCachedOnset(date);
  99.188 +        }
  99.189 +
  99.190 +        Date onset = initialOnset;
  99.191 +        Date initialOnsetUTC;
  99.192 +        // get first onset without adding TZFROM as this may lead to a day boundary
  99.193 +        // change which would be incompatible with BYDAY RRULES
  99.194 +        // we will have to add the offset to all cacheable onsets
  99.195 +        try {
  99.196 +            initialOnsetUTC = calculateOnset(((DtStart) getProperty(Property.DTSTART)).getDate());
  99.197 +        } catch (ParseException e) {
  99.198 +            Log log = LogFactory.getLog(Observance.class);
  99.199 +            log.error("Unexpected error calculating initial onset", e);
  99.200 +            // XXX: is this correct?
  99.201 +            return null;
  99.202 +        }
  99.203 +        // collect all onsets for the purposes of caching..
  99.204 +        final DateList cacheableOnsets = new DateList();
  99.205 +        cacheableOnsets.setUtc(true);
  99.206 +        cacheableOnsets.add(initialOnset);
  99.207 +
  99.208 +        // check rdates for latest applicable onset..
  99.209 +        final PropertyList rdates = getProperties(Property.RDATE);
  99.210 +        for (final Iterator i = rdates.iterator(); i.hasNext();) {
  99.211 +            final RDate rdate = (RDate) i.next();
  99.212 +            for (final Iterator j = rdate.getDates().iterator(); j.hasNext();) {
  99.213 +                try {
  99.214 +                    final DateTime rdateOnset = applyOffsetFrom(calculateOnset((Date) j.next()));
  99.215 +                    if (!rdateOnset.after(date) && rdateOnset.after(onset)) {
  99.216 +                        onset = rdateOnset;
  99.217 +                    }
  99.218 +                    /*
  99.219 +                     * else if (rdateOnset.after(date) && rdateOnset.after(onset) && (nextOnset == null ||
  99.220 +                     * rdateOnset.before(nextOnset))) { nextOnset = rdateOnset; }
  99.221 +                     */
  99.222 +                    cacheableOnsets.add(rdateOnset);
  99.223 +                } catch (ParseException e) {
  99.224 +                    Log log = LogFactory.getLog(Observance.class);
  99.225 +                    log.error("Unexpected error calculating onset", e);
  99.226 +                }
  99.227 +            }
  99.228 +        }
  99.229 +
  99.230 +        // check recurrence rules for latest applicable onset..
  99.231 +        final PropertyList rrules = getProperties(Property.RRULE);
  99.232 +        for (final Iterator i = rrules.iterator(); i.hasNext();) {
  99.233 +            final RRule rrule = (RRule) i.next();
  99.234 +            // include future onsets to determine onset period..
  99.235 +            final Calendar cal = Dates.getCalendarInstance(date);
  99.236 +            cal.setTime(date);
  99.237 +            cal.add(Calendar.YEAR, 10);
  99.238 +            onsetLimit = Dates.getInstance(cal.getTime(), Value.DATE_TIME);
  99.239 +            final DateList recurrenceDates = rrule.getRecur().getDates(initialOnsetUTC,
  99.240 +                    onsetLimit, Value.DATE_TIME);
  99.241 +            for (final Iterator j = recurrenceDates.iterator(); j.hasNext();) {
  99.242 +                final DateTime rruleOnset = applyOffsetFrom((DateTime) j.next());
  99.243 +                if (!rruleOnset.after(date) && rruleOnset.after(onset)) {
  99.244 +                    onset = rruleOnset;
  99.245 +                }
  99.246 +                /*
  99.247 +                 * else if (rruleOnset.after(date) && rruleOnset.after(onset) && (nextOnset == null ||
  99.248 +                 * rruleOnset.before(nextOnset))) { nextOnset = rruleOnset; }
  99.249 +                 */
  99.250 +                cacheableOnsets.add(rruleOnset);
  99.251 +            }
  99.252 +        }
  99.253 +
  99.254 +        // cache onsets..
  99.255 +        Collections.sort(cacheableOnsets);
  99.256 +        DateTime cacheableOnset = null;
  99.257 +        this.onsetsMillisec = new long[cacheableOnsets.size()];
  99.258 +        this.onsetsDates = new DateTime[onsetsMillisec.length];
  99.259 +
  99.260 +        for (int i = 0; i < onsetsMillisec.length; i++) {
  99.261 +            cacheableOnset = (DateTime)cacheableOnsets.get(i);
  99.262 +            onsetsMillisec[i] = cacheableOnset.getTime();
  99.263 +            onsetsDates[i] = cacheableOnset;
  99.264 +        }
  99.265 +
  99.266 +        return onset;
  99.267 +    }
  99.268 +
  99.269 +    /**
  99.270 +     * Returns a cached onset for the specified date.
  99.271 +     * @param date
  99.272 +     * @return a cached onset date or null if no cached onset is applicable for the specified date
  99.273 +     */
  99.274 +    private DateTime getCachedOnset(final Date date) {
  99.275 +        int index = Arrays.binarySearch(onsetsMillisec, date.getTime());
  99.276 +        if (index >= 0) {
  99.277 +            return onsetsDates[index];
  99.278 +        } else {
  99.279 +            int insertionIndex = -index -1;
  99.280 +            return onsetsDates[insertionIndex -1];
  99.281 +        }
  99.282 +    }
  99.283 +
  99.284 +    /**
  99.285 +     * Returns the mandatory dtstart property.
  99.286 +     * @return the DTSTART property or null if not specified
  99.287 +     */
  99.288 +    public final DtStart getStartDate() {
  99.289 +        return (DtStart) getProperty(Property.DTSTART);
  99.290 +    }
  99.291 +
  99.292 +    /**
  99.293 +     * Returns the mandatory tzoffsetfrom property.
  99.294 +     * @return the TZOFFSETFROM property or null if not specified
  99.295 +     */
  99.296 +    public final TzOffsetFrom getOffsetFrom() {
  99.297 +        return (TzOffsetFrom) getProperty(Property.TZOFFSETFROM);
  99.298 +    }
  99.299 +
  99.300 +    /**
  99.301 +     * Returns the mandatory tzoffsetto property.
  99.302 +     * @return the TZOFFSETTO property or null if not specified
  99.303 +     */
  99.304 +    public final TzOffsetTo getOffsetTo() {
  99.305 +        return (TzOffsetTo) getProperty(Property.TZOFFSETTO);
  99.306 +    }
  99.307 +    
  99.308 +//    private Date calculateOnset(DateProperty dateProperty) {
  99.309 +//        return calculateOnset(dateProperty.getValue());
  99.310 +//    }
  99.311 +//    
  99.312 +    private DateTime calculateOnset(Date date) throws ParseException {
  99.313 +        return calculateOnset(date.toString());
  99.314 +    }
  99.315 +    
  99.316 +    private DateTime calculateOnset(String dateStr) throws ParseException {
  99.317 +        
  99.318 +        // Translate local onset into UTC time by parsing local time 
  99.319 +        // as GMT and adjusting by TZOFFSETFROM if required
  99.320 +        long utcOnset;
  99.321 +       
  99.322 +        synchronized (UTC_FORMAT) {
  99.323 +            utcOnset = UTC_FORMAT.parse(dateStr).getTime();
  99.324 +        }
  99.325 +
  99.326 +        // return a UTC
  99.327 +        DateTime onset = new DateTime(true);
  99.328 +        onset.setTime(utcOnset);
  99.329 +        return onset;
  99.330 +    }
  99.331 +
  99.332 +    private DateTime applyOffsetFrom(DateTime orig) {
  99.333 +        DateTime withOffset = new DateTime(true);
  99.334 +        withOffset.setTime(orig.getTime() - getOffsetFrom().getOffset().getOffset());
  99.335 +        return withOffset;
  99.336 +    }
  99.337 +}
  99.338 \ No newline at end of file
   100.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   100.2 +++ b/src/net/fortuna/ical4j/model/component/Standard.java	Tue Feb 10 18:12:00 2015 +0100
   100.3 @@ -0,0 +1,84 @@
   100.4 +/**
   100.5 + * Copyright (c) 2012, Ben Fortuna
   100.6 + * All rights reserved.
   100.7 + *
   100.8 + * Redistribution and use in source and binary forms, with or without
   100.9 + * modification, are permitted provided that the following conditions
  100.10 + * are met:
  100.11 + *
  100.12 + *  o Redistributions of source code must retain the above copyright
  100.13 + * notice, this list of conditions and the following disclaimer.
  100.14 + *
  100.15 + *  o Redistributions in binary form must reproduce the above copyright
  100.16 + * notice, this list of conditions and the following disclaimer in the
  100.17 + * documentation and/or other materials provided with the distribution.
  100.18 + *
  100.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  100.20 + * may be used to endorse or promote products derived from this software
  100.21 + * without specific prior written permission.
  100.22 + *
  100.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  100.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  100.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  100.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  100.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  100.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  100.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  100.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  100.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  100.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  100.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  100.34 + */
  100.35 +package net.fortuna.ical4j.model.component;
  100.36 +
  100.37 +import net.fortuna.ical4j.model.PropertyList;
  100.38 +
  100.39 +/**
  100.40 + * $Id$ [05-Apr-2004]
  100.41 + *
  100.42 + * Defines an iCalendar standard timezone observance component.
  100.43 + *
  100.44 + * <pre>
  100.45 + *
  100.46 + *       standardc  = &quot;BEGIN&quot; &quot;:&quot; &quot;STANDARD&quot; CRLF
  100.47 + *
  100.48 + *                    tzprop
  100.49 + *
  100.50 + *                    &quot;END&quot; &quot;:&quot; &quot;STANDARD&quot; CRLF
  100.51 + *
  100.52 + *       tzprop     = 3*(
  100.53 + *
  100.54 + *                  ; the following are each REQUIRED,
  100.55 + *                  ; but MUST NOT occur more than once
  100.56 + *
  100.57 + *                  dtstart / tzoffsetto / tzoffsetfrom /
  100.58 + *
  100.59 + *                  ; the following are optional,
  100.60 + *                  ; and MAY occur more than once
  100.61 + *
  100.62 + *                  comment / rdate / rrule / tzname / x-prop
  100.63 + *
  100.64 + *                  )
  100.65 + * </pre>
  100.66 + *
  100.67 + * @author Ben Fortuna
  100.68 + */
  100.69 +public class Standard extends Observance {
  100.70 +
  100.71 +    private static final long serialVersionUID = -4750910013406451159L;
  100.72 +
  100.73 +    /**
  100.74 +     * Default constructor.
  100.75 +     */
  100.76 +    public Standard() {
  100.77 +        super(STANDARD);
  100.78 +    }
  100.79 +
  100.80 +    /**
  100.81 +     * Constructor.
  100.82 +     * @param properties a list of properties
  100.83 +     */
  100.84 +    public Standard(final PropertyList properties) {
  100.85 +        super(STANDARD, properties);
  100.86 +    }
  100.87 +}
   101.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   101.2 +++ b/src/net/fortuna/ical4j/model/component/VAlarm.java	Tue Feb 10 18:12:00 2015 +0100
   101.3 @@ -0,0 +1,468 @@
   101.4 +/**
   101.5 + * Copyright (c) 2012, Ben Fortuna
   101.6 + * All rights reserved.
   101.7 + *
   101.8 + * Redistribution and use in source and binary forms, with or without
   101.9 + * modification, are permitted provided that the following conditions
  101.10 + * are met:
  101.11 + *
  101.12 + *  o Redistributions of source code must retain the above copyright
  101.13 + * notice, this list of conditions and the following disclaimer.
  101.14 + *
  101.15 + *  o Redistributions in binary form must reproduce the above copyright
  101.16 + * notice, this list of conditions and the following disclaimer in the
  101.17 + * documentation and/or other materials provided with the distribution.
  101.18 + *
  101.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  101.20 + * may be used to endorse or promote products derived from this software
  101.21 + * without specific prior written permission.
  101.22 + *
  101.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  101.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  101.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  101.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  101.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  101.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  101.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  101.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  101.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  101.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  101.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  101.34 + */
  101.35 +package net.fortuna.ical4j.model.component;
  101.36 +
  101.37 +import java.util.HashMap;
  101.38 +import java.util.Map;
  101.39 +
  101.40 +import net.fortuna.ical4j.model.DateTime;
  101.41 +import net.fortuna.ical4j.model.Dur;
  101.42 +import net.fortuna.ical4j.model.Property;
  101.43 +import net.fortuna.ical4j.model.PropertyList;
  101.44 +import net.fortuna.ical4j.model.ValidationException;
  101.45 +import net.fortuna.ical4j.model.Validator;
  101.46 +import net.fortuna.ical4j.model.property.Action;
  101.47 +import net.fortuna.ical4j.model.property.Attach;
  101.48 +import net.fortuna.ical4j.model.property.Description;
  101.49 +import net.fortuna.ical4j.model.property.Duration;
  101.50 +import net.fortuna.ical4j.model.property.Method;
  101.51 +import net.fortuna.ical4j.model.property.Repeat;
  101.52 +import net.fortuna.ical4j.model.property.Summary;
  101.53 +import net.fortuna.ical4j.model.property.Trigger;
  101.54 +import net.fortuna.ical4j.util.PropertyValidator;
  101.55 +
  101.56 +/**
  101.57 + * $Id$ [Apr 5, 2004]
  101.58 + *
  101.59 + * Defines an iCalendar VALARM component.
  101.60 + *
  101.61 + * <pre>
  101.62 + *    4.6.6 Alarm Component
  101.63 + *
  101.64 + *       Component Name: VALARM
  101.65 + *
  101.66 + *       Purpose: Provide a grouping of component properties that define an
  101.67 + *       alarm.
  101.68 + *
  101.69 + *       Formal Definition: A &quot;VALARM&quot; calendar component is defined by the
  101.70 + *       following notation:
  101.71 + *
  101.72 + *              alarmc     = &quot;BEGIN&quot; &quot;:&quot; &quot;VALARM&quot; CRLF
  101.73 + *                           (audioprop / dispprop / emailprop / procprop)
  101.74 + *                           &quot;END&quot; &quot;:&quot; &quot;VALARM&quot; CRLF
  101.75 + *
  101.76 + *         audioprop  = 2*(
  101.77 + *
  101.78 + *                    ; 'action' and 'trigger' are both REQUIRED,
  101.79 + *                    ; but MUST NOT occur more than once
  101.80 + *
  101.81 + *                    action / trigger /
  101.82 + *
  101.83 + *                    ; 'duration' and 'repeat' are both optional,
  101.84 + *                    ; and MUST NOT occur more than once each,
  101.85 + *                    ; but if one occurs, so MUST the other
  101.86 + *
  101.87 + *                    duration / repeat /
  101.88 + *
  101.89 + *                    ; the following is optional,
  101.90 + *                    ; but MUST NOT occur more than once
  101.91 + *
  101.92 + *                    attach /
  101.93 + *
  101.94 + *                    ; the following is optional,
  101.95 + *                    ; and MAY occur more than once
  101.96 + *
  101.97 + *                    x-prop
  101.98 + *
  101.99 + *                    )
 101.100 + *
 101.101 + *
 101.102 + *
 101.103 + *         dispprop   = 3*(
 101.104 + *
 101.105 + *                    ; the following are all REQUIRED,
 101.106 + *                    ; but MUST NOT occur more than once
 101.107 + *
 101.108 + *                    action / description / trigger /
 101.109 + *
 101.110 + *                    ; 'duration' and 'repeat' are both optional,
 101.111 + *                    ; and MUST NOT occur more than once each,
 101.112 + *                    ; but if one occurs, so MUST the other
 101.113 + *
 101.114 + *                    duration / repeat /
 101.115 + *
 101.116 + *                    ; the following is optional,
 101.117 + *                    ; and MAY occur more than once
 101.118 + *
 101.119 + *                    *x-prop
 101.120 + *
 101.121 + *                    )
 101.122 + *
 101.123 + *
 101.124 + *
 101.125 + *         emailprop  = 5*(
 101.126 + *
 101.127 + *                    ; the following are all REQUIRED,
 101.128 + *                    ; but MUST NOT occur more than once
 101.129 + *
 101.130 + *                    action / description / trigger / summary
 101.131 + *
 101.132 + *                    ; the following is REQUIRED,
 101.133 + *                    ; and MAY occur more than once
 101.134 + *
 101.135 + *                    attendee /
 101.136 + *
 101.137 + *                    ; 'duration' and 'repeat' are both optional,
 101.138 + *                    ; and MUST NOT occur more than once each,
 101.139 + *                    ; but if one occurs, so MUST the other
 101.140 + *
 101.141 + *                    duration / repeat /
 101.142 + *
 101.143 + *                    ; the following are optional,
 101.144 + *                    ; and MAY occur more than once
 101.145 + *
 101.146 + *                    attach / x-prop
 101.147 + *
 101.148 + *                    )
 101.149 + *
 101.150 + *
 101.151 + *
 101.152 + *         procprop   = 3*(
 101.153 + *
 101.154 + *                    ; the following are all REQUIRED,
 101.155 + *                    ; but MUST NOT occur more than once
 101.156 + *
 101.157 + *                    action / attach / trigger /
 101.158 + *
 101.159 + *                    ; 'duration' and 'repeat' are both optional,
 101.160 + *                    ; and MUST NOT occur more than once each,
 101.161 + *                    ; but if one occurs, so MUST the other
 101.162 + *
 101.163 + *                    duration / repeat /
 101.164 + *
 101.165 + *                    ; 'description' is optional,
 101.166 + *                    ; and MUST NOT occur more than once
 101.167 + *
 101.168 + *                    description /
 101.169 + *
 101.170 + *                    ; the following is optional,
 101.171 + *                    ; and MAY occur more than once
 101.172 + *
 101.173 + *                    x-prop
 101.174 + *
 101.175 + *                    )
 101.176 + * </pre>
 101.177 + *
 101.178 + * Example 1 - Creating an alarm to trigger at a specific time:
 101.179 + *
 101.180 + * <pre><code>
 101.181 + * java.util.Calendar cal = java.util.Calendar.getInstance();
 101.182 + * cal.set(java.util.Calendar.MONTH, java.util.Calendar.DECEMBER);
 101.183 + * cal.set(java.util.Calendar.DAY_OF_MONTH, 25);
 101.184 + *
 101.185 + * VAlarm christmas = new VAlarm(cal.getTime());
 101.186 + * </code></pre>
 101.187 + *
 101.188 + * Example 2 - Creating an alarm to trigger one (1) hour before the scheduled start of the parent event/the parent todo
 101.189 + * is due:
 101.190 + *
 101.191 + * <pre><code>
 101.192 + * VAlarm reminder = new VAlarm(new Dur(0, -1, 0, 0));
 101.193 + *
 101.194 + * // repeat reminder four (4) more times every fifteen (15) minutes..
 101.195 + * reminder.getProperties().add(new Repeat(4));
 101.196 + * reminder.getProperties().add(new Duration(new Dur(0, 0, 15, 0)));
 101.197 + *
 101.198 + * // display a message..
 101.199 + * reminder.getProperties().add(Action.DISPLAY);
 101.200 + * reminder.getProperties().add(new Description(&quot;Progress Meeting at 9:30am&quot;));
 101.201 + * </code></pre>
 101.202 + *
 101.203 + * @author Ben Fortuna
 101.204 + */
 101.205 +public class VAlarm extends CalendarComponent {
 101.206 +
 101.207 +    private static final long serialVersionUID = -8193965477414653802L;
 101.208 +
 101.209 +    private final Map actionValidators = new HashMap();
 101.210 +    {
 101.211 +        actionValidators.put(Action.AUDIO, new AudioValidator());
 101.212 +        actionValidators.put(Action.DISPLAY, new DisplayValidator());
 101.213 +        actionValidators.put(Action.EMAIL, new EmailValidator());
 101.214 +        actionValidators.put(Action.PROCEDURE, new ProcedureValidator());
 101.215 +    }
 101.216 +    
 101.217 +    private final Validator itipValidator = new ITIPValidator();
 101.218 +    
 101.219 +    /**
 101.220 +     * Default constructor.
 101.221 +     */
 101.222 +    public VAlarm() {
 101.223 +        super(VALARM);
 101.224 +    }
 101.225 +
 101.226 +    /**
 101.227 +     * Constructor.
 101.228 +     * @param properties a list of properties
 101.229 +     */
 101.230 +    public VAlarm(final PropertyList properties) {
 101.231 +        super(VALARM, properties);
 101.232 +    }
 101.233 +
 101.234 +    /**
 101.235 +     * Constructs a new VALARM instance that will trigger at the specified time.
 101.236 +     * @param trigger the time the alarm will trigger
 101.237 +     */
 101.238 +    public VAlarm(final DateTime trigger) {
 101.239 +        this();
 101.240 +        getProperties().add(new Trigger(trigger));
 101.241 +    }
 101.242 +
 101.243 +    /**
 101.244 +     * Constructs a new VALARM instance that will trigger at the specified time relative to the event/todo component.
 101.245 +     * @param trigger a duration of time relative to the parent component that the alarm will trigger at
 101.246 +     */
 101.247 +    public VAlarm(final Dur trigger) {
 101.248 +        this();
 101.249 +        getProperties().add(new Trigger(trigger));
 101.250 +    }
 101.251 +
 101.252 +    /**
 101.253 +     * {@inheritDoc}
 101.254 +     */
 101.255 +    public final void validate(final boolean recurse)
 101.256 +            throws ValidationException {
 101.257 +
 101.258 +        /*
 101.259 +         * ; 'action' and 'trigger' are both REQUIRED, ; but MUST NOT occur more than once action / trigger /
 101.260 +         */
 101.261 +        PropertyValidator.getInstance().assertOne(Property.ACTION, getProperties());
 101.262 +        PropertyValidator.getInstance().assertOne(Property.TRIGGER, getProperties());
 101.263 +
 101.264 +        /*
 101.265 +         * ; 'duration' and 'repeat' are both optional, ; and MUST NOT occur more than once each, ; but if one occurs,
 101.266 +         * so MUST the other duration / repeat /
 101.267 +         */
 101.268 +        PropertyValidator.getInstance().assertOneOrLess(Property.DURATION, getProperties());
 101.269 +        PropertyValidator.getInstance().assertOneOrLess(Property.REPEAT, getProperties());
 101.270 +
 101.271 +        try {
 101.272 +            PropertyValidator.getInstance().assertNone(Property.DURATION, getProperties());
 101.273 +            PropertyValidator.getInstance().assertNone(Property.REPEAT, getProperties());
 101.274 +        }
 101.275 +        catch (ValidationException ve) {
 101.276 +            PropertyValidator.getInstance().assertOne(Property.DURATION, getProperties());
 101.277 +            PropertyValidator.getInstance().assertOne(Property.REPEAT, getProperties());
 101.278 +        }
 101.279 +        
 101.280 +        /*
 101.281 +         * ; the following is optional, ; and MAY occur more than once x-prop
 101.282 +         */
 101.283 +        
 101.284 +        final Validator actionValidator = (Validator) actionValidators.get(getAction());
 101.285 +        if (actionValidator != null) {
 101.286 +            actionValidator.validate();
 101.287 +        }
 101.288 +        
 101.289 +        if (recurse) {
 101.290 +            validateProperties();
 101.291 +        }
 101.292 +    }
 101.293 +    
 101.294 +    /**
 101.295 +     * {@inheritDoc}
 101.296 +     */
 101.297 +    protected Validator getValidator(Method method) {
 101.298 +        return itipValidator;
 101.299 +    }
 101.300 +    
 101.301 +    private class AudioValidator implements Validator {
 101.302 +        
 101.303 +		private static final long serialVersionUID = 1L;
 101.304 +
 101.305 +        /**
 101.306 +         * {@inheritDoc}
 101.307 +         */
 101.308 +        public void validate() throws ValidationException {
 101.309 +            /*
 101.310 +             * ; the following is optional, ; but MUST NOT occur more than once attach /
 101.311 +             */
 101.312 +            PropertyValidator.getInstance().assertOneOrLess(Property.ATTACH, getProperties());
 101.313 +        }
 101.314 +    }
 101.315 +
 101.316 +    private class DisplayValidator implements Validator {
 101.317 +        
 101.318 +		private static final long serialVersionUID = 1L;
 101.319 +
 101.320 +        /**
 101.321 +         * {@inheritDoc}
 101.322 +         */
 101.323 +        public void validate() throws ValidationException {
 101.324 +            /*
 101.325 +             * ; the following are all REQUIRED, ; but MUST NOT occur more than once action / description / trigger /
 101.326 +             */
 101.327 +            PropertyValidator.getInstance().assertOne(Property.DESCRIPTION, getProperties());
 101.328 +        }
 101.329 +    }
 101.330 +
 101.331 +    private class EmailValidator implements Validator {
 101.332 +        
 101.333 +		private static final long serialVersionUID = 1L;
 101.334 +
 101.335 +        /**
 101.336 +         * {@inheritDoc}
 101.337 +         */
 101.338 +        public void validate() throws ValidationException {
 101.339 +            /*
 101.340 +             * ; the following are all REQUIRED, 
 101.341 +             * ; but MUST NOT occur more than once action / description / trigger / summary 
 101.342 +             * ; the following is REQUIRED, 
 101.343 +             * ; and MAY occur more than once attendee / 
 101.344 +             * ; 'duration' and 'repeat' are both optional, 
 101.345 +             * ; and MUST NOT occur more than once each, 
 101.346 +             * ; but if one occurs, so MUST the other duration / repeat / 
 101.347 +             * ; the following are optional, 
 101.348 +             * ; and MAY occur more than once attach / x-prop
 101.349 +             */
 101.350 +            PropertyValidator.getInstance().assertOne(Property.DESCRIPTION, getProperties());
 101.351 +            PropertyValidator.getInstance().assertOne(Property.SUMMARY, getProperties());
 101.352 +
 101.353 +            PropertyValidator.getInstance().assertOneOrMore(Property.ATTENDEE, getProperties());
 101.354 +        }
 101.355 +    }
 101.356 +
 101.357 +    private class ProcedureValidator implements Validator {
 101.358 +        
 101.359 +		private static final long serialVersionUID = 1L;
 101.360 +
 101.361 +        /**
 101.362 +         * {@inheritDoc}
 101.363 +         */
 101.364 +        public void validate() throws ValidationException {
 101.365 +            /*
 101.366 +             * ; the following are all REQUIRED, 
 101.367 +             * ; but MUST NOT occur more than once action / attach / trigger / 
 101.368 +             * ; 'duration' and 'repeat' are both optional, 
 101.369 +             * ; and MUST NOT occur more than once each, 
 101.370 +             * ; but if one occurs, so MUST the other duration / repeat / 
 101.371 +             * ; 'description' is optional, 
 101.372 +             * ; and MUST NOT occur more than once description / 
 101.373 +             * ; the following is optional, ; and MAY occur more than once x-prop
 101.374 +             */
 101.375 +            PropertyValidator.getInstance().assertOne(Property.ATTACH, getProperties());
 101.376 +
 101.377 +            PropertyValidator.getInstance().assertOneOrLess(Property.DESCRIPTION, getProperties());
 101.378 +        }
 101.379 +    }
 101.380 +
 101.381 +    /**
 101.382 +     * Common validation for all iTIP methods.
 101.383 +     * 
 101.384 +     * <pre>
 101.385 +     * Component/Property  Presence
 101.386 +     * ------------------- ----------------------------------------------
 101.387 +     * VALARM              0+
 101.388 +     *     ACTION          1
 101.389 +     *     ATTACH          0+
 101.390 +     *     DESCRIPTION     0 or 1
 101.391 +     *     DURATION        0 or 1  if present REPEAT MUST be present
 101.392 +     *     REPEAT          0 or 1  if present DURATION MUST be present
 101.393 +     *     SUMMARY         0 or 1
 101.394 +     *     TRIGGER         1
 101.395 +     *     X-PROPERTY      0+
 101.396 +     * </pre>
 101.397 +     */
 101.398 +    private class ITIPValidator implements Validator {
 101.399 +        
 101.400 +		private static final long serialVersionUID = 1L;
 101.401 +
 101.402 +        /**
 101.403 +         * {@inheritDoc}
 101.404 +         */
 101.405 +        public void validate() throws ValidationException {
 101.406 +            PropertyValidator.getInstance().assertOne(Property.ACTION, getProperties());
 101.407 +            PropertyValidator.getInstance().assertOne(Property.TRIGGER, getProperties());
 101.408 +            
 101.409 +            PropertyValidator.getInstance().assertOneOrLess(Property.DESCRIPTION, getProperties());
 101.410 +            PropertyValidator.getInstance().assertOneOrLess(Property.DURATION, getProperties());
 101.411 +            PropertyValidator.getInstance().assertOneOrLess(Property.REPEAT, getProperties());
 101.412 +            PropertyValidator.getInstance().assertOneOrLess(Property.SUMMARY, getProperties());
 101.413 +        }
 101.414 +    }
 101.415 +    
 101.416 +    /**
 101.417 +     * Returns the mandatory action property.
 101.418 +     * @return the ACTION property or null if not specified
 101.419 +     */
 101.420 +    public final Action getAction() {
 101.421 +        return (Action) getProperty(Property.ACTION);
 101.422 +    }
 101.423 +
 101.424 +    /**
 101.425 +     * Returns the mandatory trigger property.
 101.426 +     * @return the TRIGGER property or null if not specified
 101.427 +     */
 101.428 +    public final Trigger getTrigger() {
 101.429 +        return (Trigger) getProperty(Property.TRIGGER);
 101.430 +    }
 101.431 +
 101.432 +    /**
 101.433 +     * Returns the optional duration property.
 101.434 +     * @return the DURATION property or null if not specified
 101.435 +     */
 101.436 +    public final Duration getDuration() {
 101.437 +        return (Duration) getProperty(Property.DURATION);
 101.438 +    }
 101.439 +
 101.440 +    /**
 101.441 +     * Returns the optional repeat property.
 101.442 +     * @return the REPEAT property or null if not specified
 101.443 +     */
 101.444 +    public final Repeat getRepeat() {
 101.445 +        return (Repeat) getProperty(Property.REPEAT);
 101.446 +    }
 101.447 +
 101.448 +    /**
 101.449 +     * Returns the optional attachment property.
 101.450 +     * @return the ATTACH property or null if not specified
 101.451 +     */
 101.452 +    public final Attach getAttachment() {
 101.453 +        return (Attach) getProperty(Property.ATTACH);
 101.454 +    }
 101.455 +
 101.456 +    /**
 101.457 +     * Returns the optional description property.
 101.458 +     * @return the DESCRIPTION property or null if not specified
 101.459 +     */
 101.460 +    public final Description getDescription() {
 101.461 +        return (Description) getProperty(Property.DESCRIPTION);
 101.462 +    }
 101.463 +
 101.464 +    /**
 101.465 +     * Returns the optional summary property.
 101.466 +     * @return the SUMMARY property or null if not specified
 101.467 +     */
 101.468 +    public final Summary getSummary() {
 101.469 +        return (Summary) getProperty(Property.SUMMARY);
 101.470 +    }
 101.471 +}
   102.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   102.2 +++ b/src/net/fortuna/ical4j/model/component/VAvailability.java	Tue Feb 10 18:12:00 2015 +0100
   102.3 @@ -0,0 +1,260 @@
   102.4 +/**
   102.5 + * Copyright (c) 2012, Ben Fortuna
   102.6 + * All rights reserved.
   102.7 + *
   102.8 + * Redistribution and use in source and binary forms, with or without
   102.9 + * modification, are permitted provided that the following conditions
  102.10 + * are met:
  102.11 + *
  102.12 + *  o Redistributions of source code must retain the above copyright
  102.13 + * notice, this list of conditions and the following disclaimer.
  102.14 + *
  102.15 + *  o Redistributions in binary form must reproduce the above copyright
  102.16 + * notice, this list of conditions and the following disclaimer in the
  102.17 + * documentation and/or other materials provided with the distribution.
  102.18 + *
  102.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  102.20 + * may be used to endorse or promote products derived from this software
  102.21 + * without specific prior written permission.
  102.22 + *
  102.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  102.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  102.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  102.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  102.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  102.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  102.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  102.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  102.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  102.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  102.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  102.34 + */
  102.35 +package net.fortuna.ical4j.model.component;
  102.36 +
  102.37 +import java.util.Iterator;
  102.38 +
  102.39 +import net.fortuna.ical4j.model.Component;
  102.40 +import net.fortuna.ical4j.model.ComponentList;
  102.41 +import net.fortuna.ical4j.model.Parameter;
  102.42 +import net.fortuna.ical4j.model.Property;
  102.43 +import net.fortuna.ical4j.model.PropertyList;
  102.44 +import net.fortuna.ical4j.model.ValidationException;
  102.45 +import net.fortuna.ical4j.model.Validator;
  102.46 +import net.fortuna.ical4j.model.parameter.Value;
  102.47 +import net.fortuna.ical4j.model.property.DtEnd;
  102.48 +import net.fortuna.ical4j.model.property.DtStamp;
  102.49 +import net.fortuna.ical4j.model.property.DtStart;
  102.50 +import net.fortuna.ical4j.model.property.Method;
  102.51 +import net.fortuna.ical4j.util.PropertyValidator;
  102.52 +import net.fortuna.ical4j.util.Strings;
  102.53 +
  102.54 +/**
  102.55 + * $Id$ [Apr 5, 2004]
  102.56 + *
  102.57 + * Defines an iCalendar VAVAILABILITY component.
  102.58 + *
  102.59 + * <pre>
  102.60 +   Component Name:  VAVAILABILITY
  102.61 +
  102.62 +   Purpose:  Provide a grouping of component properties that describe
  102.63 +      the availability associated with a calendar user.
  102.64 +
  102.65 +   Format Definition:  A "VAVAILABILITY" calendar component is defined
  102.66 +      by the following notation:
  102.67 +
  102.68 +          availabilityc  = "BEGIN" ":" "VAVAILABILITY" CRLF
  102.69 +                           availabilityprop *availablec
  102.70 +                           "END" ":" "VAVAILABILITY" CRLF
  102.71 +
  102.72 +          availabilityprop  = *(
  102.73 +
  102.74 +                            ; the following are REQUIRED,
  102.75 +                            ; but MUST NOT occur more than once
  102.76 +
  102.77 +                            dtstamp / dtstart / uid
  102.78 +
  102.79 +                            ; the following are OPTIONAL,
  102.80 +                            ; but MUST NOT occur more than once
  102.81 +
  102.82 +                            busytype / created / last-mod /
  102.83 +                            organizer / seq / summary / url /
  102.84 +
  102.85 +                            ; either 'dtend' or 'duration' may appear
  102.86 +                            ; in a 'availabilityprop', but 'dtend' and
  102.87 +                            ; 'duration' MUST NOT occur in the same
  102.88 +                            ; 'availabilityprop'
  102.89 +
  102.90 +                            dtend / duration /
  102.91 +
  102.92 +                            ; the following are OPTIONAL,
  102.93 +                            ; and MAY occur more than once
  102.94 +
  102.95 +                            categories / comment / contact / x-prop
  102.96 +
  102.97 +                            )
  102.98 +
  102.99 + *
 102.100 + * </pre>
 102.101 + *
 102.102 + * @author Ben Fortuna
 102.103 + * @author Mike Douglass
 102.104 + */
 102.105 +public class VAvailability extends CalendarComponent {
 102.106 +
 102.107 +	private static final long serialVersionUID = -3001603309266267258L;
 102.108 +	
 102.109 +	private ComponentList available;
 102.110 +
 102.111 +    /**
 102.112 +     * Default constructor.
 102.113 +     */
 102.114 +    public VAvailability() {
 102.115 +        super(VAVAILABILITY);
 102.116 +        this.available = new ComponentList();
 102.117 +        getProperties().add(new DtStamp());
 102.118 +    }
 102.119 +
 102.120 +    /**
 102.121 +     * Constructs a new instance containing the specified properties.
 102.122 +     * @param properties a list of properties
 102.123 +     */
 102.124 +    public VAvailability(final PropertyList properties) {
 102.125 +        super(VAVAILABILITY, properties);
 102.126 +        this.available = new ComponentList();
 102.127 +    }
 102.128 +
 102.129 +    /**
 102.130 +     * Constructor.
 102.131 +     * @param properties a list of properties
 102.132 +     * @param available a list of available components
 102.133 +     */
 102.134 +    public VAvailability(final PropertyList properties, final ComponentList available) {
 102.135 +        super(VEVENT, properties);
 102.136 +        this.available = available;
 102.137 +    }
 102.138 +
 102.139 +    /**
 102.140 +     * Returns the list of available times.
 102.141 +     * @return a component list
 102.142 +     */
 102.143 +    public final ComponentList getAvailable() {
 102.144 +        return available;
 102.145 +    }
 102.146 +
 102.147 +    /**
 102.148 +     * {@inheritDoc}
 102.149 +     */
 102.150 +    public final String toString() {
 102.151 +        final StringBuffer b = new StringBuffer();
 102.152 +        b.append(BEGIN);
 102.153 +        b.append(':');
 102.154 +        b.append(getName());
 102.155 +        b.append(Strings.LINE_SEPARATOR);
 102.156 +        b.append(getProperties());
 102.157 +        b.append(getAvailable());
 102.158 +        b.append(END);
 102.159 +        b.append(':');
 102.160 +        b.append(getName());
 102.161 +        b.append(Strings.LINE_SEPARATOR);
 102.162 +        return b.toString();
 102.163 +    }
 102.164 +
 102.165 +    /**
 102.166 +     * {@inheritDoc}
 102.167 +     */
 102.168 +    public final void validate(final boolean recurse)
 102.169 +            throws ValidationException {
 102.170 +
 102.171 +        // validate that getAvailable() only contains Available components
 102.172 +        final Iterator iterator = getAvailable().iterator();
 102.173 +        while (iterator.hasNext()) {
 102.174 +            final Component component = (Component) iterator.next();
 102.175 +
 102.176 +            if (!(component instanceof Available)) {
 102.177 +                throw new ValidationException("Component ["
 102.178 +                        + component.getName() + "] may not occur in VAVAILABILITY");
 102.179 +            }
 102.180 +        }
 102.181 +
 102.182 +        /*
 102.183 +         * ; dtstamp / dtstart / uid are required, but MUST NOT occur more than once /
 102.184 +         */
 102.185 +        PropertyValidator.getInstance().assertOne(Property.DTSTART,
 102.186 +                getProperties());
 102.187 +        PropertyValidator.getInstance().assertOne(Property.DTSTAMP,
 102.188 +                getProperties());
 102.189 +        PropertyValidator.getInstance().assertOne(Property.UID,
 102.190 +                getProperties());
 102.191 +
 102.192 +        /*       If specified, the "DTSTART" and "DTEND" properties in
 102.193 +         *      "VAVAILABILITY" components and "AVAILABLE" sub-components MUST be
 102.194 +         *      "DATE-TIME" values specified as either date with UTC time or date
 102.195 +         *      with local time and a time zone reference.
 102.196 +         */
 102.197 +        final DtStart start = (DtStart) getProperty(Property.DTSTART);
 102.198 +        if (Value.DATE.equals(start.getParameter(Parameter.VALUE))) {
 102.199 +            throw new ValidationException("Property [" + Property.DTSTART
 102.200 +                    + "] must be a " + Value.DATE_TIME);
 102.201 +        }
 102.202 +
 102.203 +        /*
 102.204 +         * ; either 'dtend' or 'duration' may appear in ; a 'eventprop', but 'dtend' and 'duration' ; MUST NOT occur in
 102.205 +         * the same 'eventprop' dtend / duration /
 102.206 +         */
 102.207 +        if (getProperty(Property.DTEND) != null) {
 102.208 +            PropertyValidator.getInstance().assertOne(Property.DTEND,
 102.209 +                    getProperties());
 102.210 +            /* Must be DATE_TIME */
 102.211 +            final DtEnd end = (DtEnd) getProperty(Property.DTEND);
 102.212 +            if (Value.DATE.equals(end.getParameter(Parameter.VALUE))) {
 102.213 +                throw new ValidationException("Property [" + Property.DTEND
 102.214 +                        + "] must be a " + Value.DATE_TIME);
 102.215 +            }
 102.216 +
 102.217 +            if (getProperty(Property.DURATION) != null) {
 102.218 +                throw new ValidationException("Only one of Property [" + Property.DTEND
 102.219 +                        + "] or [" + Property.DURATION +
 102.220 +                        " must appear a VAVAILABILITY");
 102.221 +            }
 102.222 +        }
 102.223 +
 102.224 +        /*
 102.225 +         *                ; the following are optional,
 102.226 +         *                ; but MUST NOT occur more than once
 102.227 +         *
 102.228 +         *                  busytype / created / last-mod /
 102.229 +         *                  organizer / seq / summary / url /
 102.230 +         */
 102.231 +        PropertyValidator.getInstance().assertOneOrLess(Property.BUSYTYPE,
 102.232 +                getProperties());
 102.233 +        PropertyValidator.getInstance().assertOneOrLess(Property.CREATED,
 102.234 +                getProperties());
 102.235 +        PropertyValidator.getInstance().assertOneOrLess(Property.LAST_MODIFIED,
 102.236 +                getProperties());
 102.237 +        PropertyValidator.getInstance().assertOneOrLess(Property.ORGANIZER,
 102.238 +                getProperties());
 102.239 +        PropertyValidator.getInstance().assertOneOrLess(Property.SEQUENCE,
 102.240 +                getProperties());
 102.241 +        PropertyValidator.getInstance().assertOneOrLess(Property.SUMMARY,
 102.242 +                getProperties());
 102.243 +        PropertyValidator.getInstance().assertOneOrLess(Property.URL,
 102.244 +                getProperties());
 102.245 +
 102.246 +        /*
 102.247 +         * ; the following are optional, ; and MAY occur more than once
 102.248 +         *                 categories / comment / contact / x-prop
 102.249 +         */
 102.250 +
 102.251 +        if (recurse) {
 102.252 +            validateProperties();
 102.253 +        }
 102.254 +    }
 102.255 +
 102.256 +    /**
 102.257 +     * {@inheritDoc}
 102.258 +     */
 102.259 +    protected Validator getValidator(Method method) {
 102.260 +        // TODO Auto-generated method stub
 102.261 +        return null;
 102.262 +    }
 102.263 +}
   103.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   103.2 +++ b/src/net/fortuna/ical4j/model/component/VEvent.java	Tue Feb 10 18:12:00 2015 +0100
   103.3 @@ -0,0 +1,1520 @@
   103.4 +/**
   103.5 + * Copyright (c) 2012, Ben Fortuna
   103.6 + * All rights reserved.
   103.7 + *
   103.8 + * Redistribution and use in source and binary forms, with or without
   103.9 + * modification, are permitted provided that the following conditions
  103.10 + * are met:
  103.11 + *
  103.12 + *  o Redistributions of source code must retain the above copyright
  103.13 + * notice, this list of conditions and the following disclaimer.
  103.14 + *
  103.15 + *  o Redistributions in binary form must reproduce the above copyright
  103.16 + * notice, this list of conditions and the following disclaimer in the
  103.17 + * documentation and/or other materials provided with the distribution.
  103.18 + *
  103.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  103.20 + * may be used to endorse or promote products derived from this software
  103.21 + * without specific prior written permission.
  103.22 + *
  103.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  103.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  103.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  103.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  103.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  103.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  103.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  103.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  103.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  103.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  103.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  103.34 + */
  103.35 +package net.fortuna.ical4j.model.component;
  103.36 +
  103.37 +import java.io.IOException;
  103.38 +import java.net.URISyntaxException;
  103.39 +import java.text.ParseException;
  103.40 +import java.util.HashMap;
  103.41 +import java.util.Iterator;
  103.42 +import java.util.Map;
  103.43 +
  103.44 +import net.fortuna.ical4j.model.Component;
  103.45 +import net.fortuna.ical4j.model.ComponentList;
  103.46 +import net.fortuna.ical4j.model.Date;
  103.47 +import net.fortuna.ical4j.model.DateTime;
  103.48 +import net.fortuna.ical4j.model.Dur;
  103.49 +import net.fortuna.ical4j.model.Parameter;
  103.50 +import net.fortuna.ical4j.model.Period;
  103.51 +import net.fortuna.ical4j.model.PeriodList;
  103.52 +import net.fortuna.ical4j.model.Property;
  103.53 +import net.fortuna.ical4j.model.PropertyList;
  103.54 +import net.fortuna.ical4j.model.ValidationException;
  103.55 +import net.fortuna.ical4j.model.Validator;
  103.56 +import net.fortuna.ical4j.model.parameter.Value;
  103.57 +import net.fortuna.ical4j.model.property.Clazz;
  103.58 +import net.fortuna.ical4j.model.property.Created;
  103.59 +import net.fortuna.ical4j.model.property.Description;
  103.60 +import net.fortuna.ical4j.model.property.DtEnd;
  103.61 +import net.fortuna.ical4j.model.property.DtStamp;
  103.62 +import net.fortuna.ical4j.model.property.DtStart;
  103.63 +import net.fortuna.ical4j.model.property.Duration;
  103.64 +import net.fortuna.ical4j.model.property.Geo;
  103.65 +import net.fortuna.ical4j.model.property.LastModified;
  103.66 +import net.fortuna.ical4j.model.property.Location;
  103.67 +import net.fortuna.ical4j.model.property.Method;
  103.68 +import net.fortuna.ical4j.model.property.Organizer;
  103.69 +import net.fortuna.ical4j.model.property.Priority;
  103.70 +import net.fortuna.ical4j.model.property.RecurrenceId;
  103.71 +import net.fortuna.ical4j.model.property.Sequence;
  103.72 +import net.fortuna.ical4j.model.property.Status;
  103.73 +import net.fortuna.ical4j.model.property.Summary;
  103.74 +import net.fortuna.ical4j.model.property.Transp;
  103.75 +import net.fortuna.ical4j.model.property.Uid;
  103.76 +import net.fortuna.ical4j.model.property.Url;
  103.77 +import net.fortuna.ical4j.util.CompatibilityHints;
  103.78 +import net.fortuna.ical4j.util.ComponentValidator;
  103.79 +import net.fortuna.ical4j.util.Dates;
  103.80 +import net.fortuna.ical4j.util.PropertyValidator;
  103.81 +import net.fortuna.ical4j.util.Strings;
  103.82 +
  103.83 +import org.apache.commons.lang.ObjectUtils;
  103.84 +import org.apache.commons.lang.builder.HashCodeBuilder;
  103.85 +
  103.86 +/**
  103.87 + * $Id$ [Apr 5, 2004]
  103.88 + *
  103.89 + * Defines an iCalendar VEVENT component.
  103.90 + * 
  103.91 + * <pre>
  103.92 + *       4.6.1 Event Component
  103.93 + *   
  103.94 + *          Component Name: &quot;VEVENT&quot;
  103.95 + *   
  103.96 + *          Purpose: Provide a grouping of component properties that describe an
  103.97 + *          event.
  103.98 + *   
  103.99 + *          Format Definition: A &quot;VEVENT&quot; calendar component is defined by the
 103.100 + *          following notation:
 103.101 + *   
 103.102 + *            eventc     = &quot;BEGIN&quot; &quot;:&quot; &quot;VEVENT&quot; CRLF
 103.103 + *                         eventprop *alarmc
 103.104 + *                         &quot;END&quot; &quot;:&quot; &quot;VEVENT&quot; CRLF
 103.105 + *   
 103.106 + *            eventprop  = *(
 103.107 + *   
 103.108 + *                       ; the following are optional,
 103.109 + *                       ; but MUST NOT occur more than once
 103.110 + *   
 103.111 + *                       class / created / description / dtstart / geo /
 103.112 + *                       last-mod / location / organizer / priority /
 103.113 + *                       dtstamp / seq / status / summary / transp /
 103.114 + *                       uid / url / recurid /
 103.115 + *   
 103.116 + *                       ; either 'dtend' or 'duration' may appear in
 103.117 + *                       ; a 'eventprop', but 'dtend' and 'duration'
 103.118 + *                       ; MUST NOT occur in the same 'eventprop'
 103.119 + *   
 103.120 + *                       dtend / duration /
 103.121 + *   
 103.122 + *                       ; the following are optional,
 103.123 + *                       ; and MAY occur more than once
 103.124 + *   
 103.125 + *                       attach / attendee / categories / comment /
 103.126 + *                       contact / exdate / exrule / rstatus / related /
 103.127 + *                       resources / rdate / rrule / x-prop
 103.128 + *   
 103.129 + *                       )
 103.130 + * </pre>
 103.131 + * 
 103.132 + * Example 1 - Creating a new all-day event:
 103.133 + * 
 103.134 + * <pre><code>
 103.135 + * java.util.Calendar cal = java.util.Calendar.getInstance();
 103.136 + * cal.set(java.util.Calendar.MONTH, java.util.Calendar.DECEMBER);
 103.137 + * cal.set(java.util.Calendar.DAY_OF_MONTH, 25);
 103.138 + * 
 103.139 + * VEvent christmas = new VEvent(cal.getTime(), &quot;Christmas Day&quot;);
 103.140 + * 
 103.141 + * // initialise as an all-day event..
 103.142 + * christmas.getProperties().getProperty(Property.DTSTART).getParameters().add(
 103.143 + *         Value.DATE);
 103.144 + * 
 103.145 + * // add timezone information..
 103.146 + * VTimeZone tz = VTimeZone.getDefault();
 103.147 + * TzId tzParam = new TzId(tz.getProperties().getProperty(Property.TZID)
 103.148 + *         .getValue());
 103.149 + * christmas.getProperties().getProperty(Property.DTSTART).getParameters().add(
 103.150 + *         tzParam);
 103.151 + * </code></pre>
 103.152 + * 
 103.153 + * Example 2 - Creating an event of one (1) hour duration:
 103.154 + * 
 103.155 + * <pre><code>
 103.156 + * java.util.Calendar cal = java.util.Calendar.getInstance();
 103.157 + * // tomorrow..
 103.158 + * cal.add(java.util.Calendar.DAY_OF_MONTH, 1);
 103.159 + * cal.set(java.util.Calendar.HOUR_OF_DAY, 9);
 103.160 + * cal.set(java.util.Calendar.MINUTE, 30);
 103.161 + * 
 103.162 + * VEvent meeting = new VEvent(cal.getTime(), 1000 * 60 * 60, &quot;Progress Meeting&quot;);
 103.163 + * 
 103.164 + * // add timezone information..
 103.165 + * VTimeZone tz = VTimeZone.getDefault();
 103.166 + * TzId tzParam = new TzId(tz.getProperties().getProperty(Property.TZID)
 103.167 + *         .getValue());
 103.168 + * meeting.getProperties().getProperty(Property.DTSTART).getParameters().add(
 103.169 + *         tzParam);
 103.170 + * </code></pre>
 103.171 + * 
 103.172 + * Example 3 - Retrieve a list of periods representing a recurring event in a specified range:
 103.173 + * 
 103.174 + * <pre><code>
 103.175 + * Calendar weekday9AM = Calendar.getInstance();
 103.176 + * weekday9AM.set(2005, Calendar.MARCH, 7, 9, 0, 0);
 103.177 + * weekday9AM.set(Calendar.MILLISECOND, 0);
 103.178 + * 
 103.179 + * Calendar weekday5PM = Calendar.getInstance();
 103.180 + * weekday5PM.set(2005, Calendar.MARCH, 7, 17, 0, 0);
 103.181 + * weekday5PM.set(Calendar.MILLISECOND, 0);
 103.182 + * 
 103.183 + * // Do the recurrence until December 31st.
 103.184 + * Calendar untilCal = Calendar.getInstance();
 103.185 + * untilCal.set(2005, Calendar.DECEMBER, 31);
 103.186 + * untilCal.set(Calendar.MILLISECOND, 0);
 103.187 + * 
 103.188 + * // 9:00AM to 5:00PM Rule
 103.189 + * Recur recur = new Recur(Recur.WEEKLY, untilCal.getTime());
 103.190 + * recur.getDayList().add(WeekDay.MO);
 103.191 + * recur.getDayList().add(WeekDay.TU);
 103.192 + * recur.getDayList().add(WeekDay.WE);
 103.193 + * recur.getDayList().add(WeekDay.TH);
 103.194 + * recur.getDayList().add(WeekDay.FR);
 103.195 + * recur.setInterval(3);
 103.196 + * recur.setWeekStartDay(WeekDay.MO.getDay());
 103.197 + * RRule rrule = new RRule(recur);
 103.198 + * 
 103.199 + * Summary summary = new Summary(&quot;TEST EVENTS THAT HAPPEN 9-5 MON-FRI&quot;);
 103.200 + * 
 103.201 + * weekdayNineToFiveEvents = new VEvent();
 103.202 + * weekdayNineToFiveEvents.getProperties().add(rrule);
 103.203 + * weekdayNineToFiveEvents.getProperties().add(summary);
 103.204 + * weekdayNineToFiveEvents.getProperties().add(new DtStart(weekday9AM.getTime()));
 103.205 + * weekdayNineToFiveEvents.getProperties().add(new DtEnd(weekday5PM.getTime()));
 103.206 + * 
 103.207 + * // Test Start 04/01/2005, End One month later.
 103.208 + * // Query Calendar Start and End Dates.
 103.209 + * Calendar queryStartDate = Calendar.getInstance();
 103.210 + * queryStartDate.set(2005, Calendar.APRIL, 1, 14, 47, 0);
 103.211 + * queryStartDate.set(Calendar.MILLISECOND, 0);
 103.212 + * Calendar queryEndDate = Calendar.getInstance();
 103.213 + * queryEndDate.set(2005, Calendar.MAY, 1, 11, 15, 0);
 103.214 + * queryEndDate.set(Calendar.MILLISECOND, 0);
 103.215 + * 
 103.216 + * // This range is monday to friday every three weeks, starting from
 103.217 + * // March 7th 2005, which means for our query dates we need
 103.218 + * // April 18th through to the 22nd.
 103.219 + * PeriodList periods = weekdayNineToFiveEvents.getPeriods(queryStartDate
 103.220 + *         .getTime(), queryEndDate.getTime());
 103.221 + * </code></pre>
 103.222 + * 
 103.223 + * @author Ben Fortuna
 103.224 + */
 103.225 +public class VEvent extends CalendarComponent {
 103.226 +
 103.227 +    private static final long serialVersionUID = 2547948989200697335L;
 103.228 +
 103.229 +    private final Map methodValidators = new HashMap();
 103.230 +    {
 103.231 +        methodValidators.put(Method.ADD, new AddValidator());
 103.232 +        methodValidators.put(Method.CANCEL, new CancelValidator());
 103.233 +        methodValidators.put(Method.COUNTER, new CounterValidator());
 103.234 +        methodValidators.put(Method.DECLINE_COUNTER, new DeclineCounterValidator());
 103.235 +        methodValidators.put(Method.PUBLISH, new PublishValidator());
 103.236 +        methodValidators.put(Method.REFRESH, new RefreshValidator());
 103.237 +        methodValidators.put(Method.REPLY, new ReplyValidator());
 103.238 +        methodValidators.put(Method.REQUEST, new RequestValidator());
 103.239 +    }
 103.240 +    
 103.241 +    private ComponentList alarms;
 103.242 +
 103.243 +    /**
 103.244 +     * Default constructor.
 103.245 +     */
 103.246 +    public VEvent() {
 103.247 +        super(VEVENT);
 103.248 +        this.alarms = new ComponentList();
 103.249 +        getProperties().add(new DtStamp());
 103.250 +    }
 103.251 +
 103.252 +    /**
 103.253 +     * Constructor.
 103.254 +     * @param properties a list of properties
 103.255 +     */
 103.256 +    public VEvent(final PropertyList properties) {
 103.257 +        super(VEVENT, properties);
 103.258 +        this.alarms = new ComponentList();
 103.259 +    }
 103.260 +
 103.261 +    /**
 103.262 +     * Constructor.
 103.263 +     * @param properties a list of properties
 103.264 +     * @param alarms a list of alarms
 103.265 +     */
 103.266 +    public VEvent(final PropertyList properties, final ComponentList alarms) {
 103.267 +        super(VEVENT, properties);
 103.268 +        this.alarms = alarms;
 103.269 +    }
 103.270 +
 103.271 +    /**
 103.272 +     * Constructs a new VEVENT instance starting at the specified time with the specified summary.
 103.273 +     * @param start the start date of the new event
 103.274 +     * @param summary the event summary
 103.275 +     */
 103.276 +    public VEvent(final Date start, final String summary) {
 103.277 +        this();
 103.278 +        getProperties().add(new DtStart(start));
 103.279 +        getProperties().add(new Summary(summary));
 103.280 +    }
 103.281 +
 103.282 +    /**
 103.283 +     * Constructs a new VEVENT instance starting and ending at the specified times with the specified summary.
 103.284 +     * @param start the start date of the new event
 103.285 +     * @param end the end date of the new event
 103.286 +     * @param summary the event summary
 103.287 +     */
 103.288 +    public VEvent(final Date start, final Date end, final String summary) {
 103.289 +        this();
 103.290 +        getProperties().add(new DtStart(start));
 103.291 +        getProperties().add(new DtEnd(end));
 103.292 +        getProperties().add(new Summary(summary));
 103.293 +    }
 103.294 +
 103.295 +    /**
 103.296 +     * Constructs a new VEVENT instance starting at the specified times, for the specified duration, with the specified
 103.297 +     * summary.
 103.298 +     * @param start the start date of the new event
 103.299 +     * @param duration the duration of the new event
 103.300 +     * @param summary the event summary
 103.301 +     */
 103.302 +    public VEvent(final Date start, final Dur duration, final String summary) {
 103.303 +        this();
 103.304 +        getProperties().add(new DtStart(start));
 103.305 +        getProperties().add(new Duration(duration));
 103.306 +        getProperties().add(new Summary(summary));
 103.307 +    }
 103.308 +
 103.309 +    /**
 103.310 +     * Returns the list of alarms for this event.
 103.311 +     * @return a component list
 103.312 +     */
 103.313 +    public final ComponentList getAlarms() {
 103.314 +        return alarms;
 103.315 +    }
 103.316 +
 103.317 +    /**
 103.318 +     * {@inheritDoc}
 103.319 +     */
 103.320 +    public final String toString() {
 103.321 +        final StringBuffer b = new StringBuffer();
 103.322 +        b.append(BEGIN);
 103.323 +        b.append(':');
 103.324 +        b.append(getName());
 103.325 +        b.append(Strings.LINE_SEPARATOR);
 103.326 +        b.append(getProperties());
 103.327 +        b.append(getAlarms());
 103.328 +        b.append(END);
 103.329 +        b.append(':');
 103.330 +        b.append(getName());
 103.331 +        b.append(Strings.LINE_SEPARATOR);
 103.332 +        return b.toString();
 103.333 +    }
 103.334 +
 103.335 +    /**
 103.336 +     * {@inheritDoc}
 103.337 +     */
 103.338 +    public final void validate(final boolean recurse) throws ValidationException {
 103.339 +
 103.340 +        // validate that getAlarms() only contains VAlarm components
 103.341 +        final Iterator iterator = getAlarms().iterator();
 103.342 +        while (iterator.hasNext()) {
 103.343 +            final Component component = (Component) iterator.next();
 103.344 +
 103.345 +            if (!(component instanceof VAlarm)) {
 103.346 +                throw new ValidationException("Component ["
 103.347 +                        + component.getName() + "] may not occur in VEVENT");
 103.348 +            }
 103.349 +            
 103.350 +            ((VAlarm) component).validate(recurse);
 103.351 +        }
 103.352 +
 103.353 +        if (!CompatibilityHints
 103.354 +                .isHintEnabled(CompatibilityHints.KEY_RELAXED_VALIDATION)) {
 103.355 +
 103.356 +            // From "4.8.4.7 Unique Identifier":
 103.357 +            // Conformance: The property MUST be specified in the "VEVENT", "VTODO",
 103.358 +            // "VJOURNAL" or "VFREEBUSY" calendar components.
 103.359 +            PropertyValidator.getInstance().assertOne(Property.UID,
 103.360 +                    getProperties());
 103.361 +
 103.362 +            // From "4.8.7.2 Date/Time Stamp":
 103.363 +            // Conformance: This property MUST be included in the "VEVENT", "VTODO",
 103.364 +            // "VJOURNAL" or "VFREEBUSY" calendar components.
 103.365 +            PropertyValidator.getInstance().assertOne(Property.DTSTAMP,
 103.366 +                    getProperties());
 103.367 +        }
 103.368 +
 103.369 +        /*
 103.370 +         * ; the following are optional, ; but MUST NOT occur more than once class / created / description / dtstart /
 103.371 +         * geo / last-mod / location / organizer / priority / dtstamp / seq / status / summary / transp / uid / url /
 103.372 +         * recurid /
 103.373 +         */
 103.374 +        PropertyValidator.getInstance().assertOneOrLess(Property.CLASS,
 103.375 +                getProperties());
 103.376 +        PropertyValidator.getInstance().assertOneOrLess(Property.CREATED,
 103.377 +                getProperties());
 103.378 +        PropertyValidator.getInstance().assertOneOrLess(Property.DESCRIPTION,
 103.379 +                getProperties());
 103.380 +        PropertyValidator.getInstance().assertOneOrLess(Property.DTSTART,
 103.381 +                getProperties());
 103.382 +        PropertyValidator.getInstance().assertOneOrLess(Property.GEO,
 103.383 +                getProperties());
 103.384 +        PropertyValidator.getInstance().assertOneOrLess(Property.LAST_MODIFIED,
 103.385 +                getProperties());
 103.386 +        PropertyValidator.getInstance().assertOneOrLess(Property.LOCATION,
 103.387 +                getProperties());
 103.388 +        PropertyValidator.getInstance().assertOneOrLess(Property.ORGANIZER,
 103.389 +                getProperties());
 103.390 +        PropertyValidator.getInstance().assertOneOrLess(Property.PRIORITY,
 103.391 +                getProperties());
 103.392 +        PropertyValidator.getInstance().assertOneOrLess(Property.DTSTAMP,
 103.393 +                getProperties());
 103.394 +        PropertyValidator.getInstance().assertOneOrLess(Property.SEQUENCE,
 103.395 +                getProperties());
 103.396 +        PropertyValidator.getInstance().assertOneOrLess(Property.STATUS,
 103.397 +                getProperties());
 103.398 +        PropertyValidator.getInstance().assertOneOrLess(Property.SUMMARY,
 103.399 +                getProperties());
 103.400 +        PropertyValidator.getInstance().assertOneOrLess(Property.TRANSP,
 103.401 +                getProperties());
 103.402 +        PropertyValidator.getInstance().assertOneOrLess(Property.UID,
 103.403 +                getProperties());
 103.404 +        PropertyValidator.getInstance().assertOneOrLess(Property.URL,
 103.405 +                getProperties());
 103.406 +        PropertyValidator.getInstance().assertOneOrLess(Property.RECURRENCE_ID,
 103.407 +                getProperties());
 103.408 +
 103.409 +        final Status status = (Status) getProperty(Property.STATUS);
 103.410 +        if (status != null && !Status.VEVENT_TENTATIVE.getValue().equals(status.getValue())
 103.411 +                && !Status.VEVENT_CONFIRMED.getValue().equals(status.getValue())
 103.412 +                && !Status.VEVENT_CANCELLED.getValue().equals(status.getValue())) {
 103.413 +            throw new ValidationException("Status property ["
 103.414 +                    + status.toString() + "] is not applicable for VEVENT");
 103.415 +        }
 103.416 +
 103.417 +        /*
 103.418 +         * ; either 'dtend' or 'duration' may appear in ; a 'eventprop', but 'dtend' and 'duration' ; MUST NOT occur in
 103.419 +         * the same 'eventprop' dtend / duration /
 103.420 +         */
 103.421 +        try {
 103.422 +            PropertyValidator.getInstance().assertNone(Property.DTEND,
 103.423 +                    getProperties());
 103.424 +        }
 103.425 +        catch (ValidationException ve) {
 103.426 +            PropertyValidator.getInstance().assertNone(Property.DURATION,
 103.427 +                    getProperties());
 103.428 +        }
 103.429 +
 103.430 +        if (getProperty(Property.DTEND) != null) {
 103.431 +
 103.432 +            /*
 103.433 +             * The "VEVENT" is also the calendar component used to specify an anniversary or daily reminder within a
 103.434 +             * calendar. These events have a DATE value type for the "DTSTART" property instead of the default data type
 103.435 +             * of DATE-TIME. If such a "VEVENT" has a "DTEND" property, it MUST be specified as a DATE value also. The
 103.436 +             * anniversary type of "VEVENT" can span more than one date (i.e, "DTEND" property value is set to a
 103.437 +             * calendar date after the "DTSTART" property value).
 103.438 +             */
 103.439 +            final DtStart start = (DtStart) getProperty(Property.DTSTART);
 103.440 +            final DtEnd end = (DtEnd) getProperty(Property.DTEND);
 103.441 +
 103.442 +            if (start != null) {
 103.443 +                final Parameter startValue = start.getParameter(Parameter.VALUE);
 103.444 +                final Parameter endValue = end.getParameter(Parameter.VALUE);
 103.445 +                
 103.446 +                boolean startEndValueMismatch = false;
 103.447 +                if (endValue != null) {
 103.448 +                    if (startValue != null && !endValue.equals(startValue)) {
 103.449 +                        // invalid..
 103.450 +                        startEndValueMismatch = true;
 103.451 +                    }
 103.452 +                    else if (startValue == null && !Value.DATE_TIME.equals(endValue)) {
 103.453 +                        // invalid..
 103.454 +                        startEndValueMismatch = true;
 103.455 +                    }
 103.456 +                }
 103.457 +                else if (startValue != null && !Value.DATE_TIME.equals(startValue)) {
 103.458 +                    //invalid..
 103.459 +                    startEndValueMismatch = true;
 103.460 +                }
 103.461 +                if (startEndValueMismatch) {
 103.462 +                    throw new ValidationException("Property [" + Property.DTEND
 103.463 +                            + "] must have the same [" + Parameter.VALUE
 103.464 +                            + "] as [" + Property.DTSTART + "]");
 103.465 +                }
 103.466 +            }
 103.467 +        }
 103.468 +
 103.469 +        /*
 103.470 +         * ; the following are optional, ; and MAY occur more than once attach / attendee / categories / comment /
 103.471 +         * contact / exdate / exrule / rstatus / related / resources / rdate / rrule / x-prop
 103.472 +         */
 103.473 +        
 103.474 +        if (recurse) {
 103.475 +            validateProperties();
 103.476 +        }
 103.477 +    }
 103.478 +    
 103.479 +    /**
 103.480 +     * {@inheritDoc}
 103.481 +     */
 103.482 +    protected Validator getValidator(Method method) {
 103.483 +        return (Validator) methodValidators.get(method);
 103.484 +    }
 103.485 +    
 103.486 +    /**
 103.487 +     * METHOD:ADD Validator.
 103.488 +     * 
 103.489 +     * <pre>
 103.490 +     * Component/Property  Presence
 103.491 +     * ------------------- ----------------------------------------------
 103.492 +     * METHOD              1      MUST be "ADD"
 103.493 +     * VEVENT              1
 103.494 +     *     DTSTAMP         1
 103.495 +     *     DTSTART         1
 103.496 +     *     ORGANIZER       1
 103.497 +     *     SEQUENCE        1      MUST be greater than 0
 103.498 +     *     SUMMARY         1      Can be null
 103.499 +     *     UID             1      MUST match that of the original event
 103.500 +     * 
 103.501 +     *     ATTACH          0+
 103.502 +     *     ATTENDEE        0+
 103.503 +     *     CATEGORIES      0 or 1 This property MAY contain a list of values
 103.504 +     *     CLASS           0 or 1
 103.505 +     *     COMMENT         0 or 1
 103.506 +     *     CONTACT         0+
 103.507 +     *     CREATED         0 or 1
 103.508 +     *     DESCRIPTION     0 or 1  Can be null
 103.509 +     *     DTEND           0 or 1  if present DURATION MUST NOT be present
 103.510 +     *     DURATION        0 or 1  if present DTEND MUST NOT be present
 103.511 +     *     EXDATE          0+
 103.512 +     *     EXRULE          0+
 103.513 +     *     GEO             0 or 1
 103.514 +     *     LAST-MODIFIED   0 or 1
 103.515 +     *     LOCATION        0 or 1
 103.516 +     *     PRIORITY        0 or 1
 103.517 +     *     RDATE           0+
 103.518 +     *     RELATED-TO      0+
 103.519 +     *     RESOURCES       0 or 1  This property MAY contain a list of values
 103.520 +     *     RRULE           0+
 103.521 +     *     STATUS          0 or 1  MAY be one of TENTATIVE/CONFIRMED
 103.522 +     *     TRANSP          0 or 1
 103.523 +     *     URL             0 or 1
 103.524 +     *     X-PROPERTY      0+
 103.525 +     * 
 103.526 +     *     RECURRENCE-ID   0
 103.527 +     *     REQUEST-STATUS  0
 103.528 +     * 
 103.529 +     * VALARM              0+
 103.530 +     * VTIMEZONE           0+     MUST be present if any date/time refers to
 103.531 +     *                            a timezone
 103.532 +     * X-COMPONENT         0+
 103.533 +     * 
 103.534 +     * VFREEBUSY           0
 103.535 +     * VTODO               0
 103.536 +     * VJOURNAL            0
 103.537 +     * </pre>
 103.538 +     * 
 103.539 +     */
 103.540 +    private class AddValidator implements Validator {
 103.541 +        
 103.542 +		private static final long serialVersionUID = 1L;
 103.543 +
 103.544 +		public void validate() throws ValidationException {
 103.545 +            PropertyValidator.getInstance().assertOne(Property.DTSTAMP, getProperties());
 103.546 +            PropertyValidator.getInstance().assertOne(Property.DTSTART, getProperties());
 103.547 +            PropertyValidator.getInstance().assertOne(Property.ORGANIZER, getProperties());
 103.548 +            PropertyValidator.getInstance().assertOne(Property.SEQUENCE, getProperties());
 103.549 +            PropertyValidator.getInstance().assertOne(Property.SUMMARY, getProperties());
 103.550 +            PropertyValidator.getInstance().assertOne(Property.UID, getProperties());
 103.551 +            
 103.552 +            PropertyValidator.getInstance().assertOneOrLess(Property.CATEGORIES, getProperties());
 103.553 +            PropertyValidator.getInstance().assertOneOrLess(Property.CLASS, getProperties());
 103.554 +            PropertyValidator.getInstance().assertOneOrLess(Property.COMMENT, getProperties());
 103.555 +            PropertyValidator.getInstance().assertOneOrLess(Property.CREATED, getProperties());
 103.556 +            PropertyValidator.getInstance().assertOneOrLess(Property.DESCRIPTION, getProperties());
 103.557 +            PropertyValidator.getInstance().assertOneOrLess(Property.DTEND, getProperties());
 103.558 +            PropertyValidator.getInstance().assertOneOrLess(Property.DURATION, getProperties());
 103.559 +            PropertyValidator.getInstance().assertOneOrLess(Property.GEO, getProperties());
 103.560 +            PropertyValidator.getInstance().assertOneOrLess(Property.LAST_MODIFIED, getProperties());
 103.561 +            PropertyValidator.getInstance().assertOneOrLess(Property.LOCATION, getProperties());
 103.562 +            PropertyValidator.getInstance().assertOneOrLess(Property.PRIORITY, getProperties());
 103.563 +            PropertyValidator.getInstance().assertOneOrLess(Property.RESOURCES, getProperties());
 103.564 +            PropertyValidator.getInstance().assertOneOrLess(Property.STATUS, getProperties());
 103.565 +            PropertyValidator.getInstance().assertOneOrLess(Property.TRANSP, getProperties());
 103.566 +            PropertyValidator.getInstance().assertOneOrLess(Property.URL, getProperties());
 103.567 +            
 103.568 +            PropertyValidator.getInstance().assertNone(Property.RECURRENCE_ID, getProperties());
 103.569 +            PropertyValidator.getInstance().assertNone(Property.REQUEST_STATUS, getProperties());
 103.570 +            
 103.571 +            for (final Iterator i = getAlarms().iterator(); i.hasNext();) {
 103.572 +                final VAlarm alarm = (VAlarm) i.next();
 103.573 +                alarm.validate(Method.ADD);
 103.574 +            }
 103.575 +        }
 103.576 +    }
 103.577 +    
 103.578 +    /**
 103.579 +     * METHOD:CANCEL Validator.
 103.580 +     * 
 103.581 +     * <pre>
 103.582 +     * Component/Property  Presence
 103.583 +     * ------------------- ----------------------------------------------
 103.584 +     * METHOD              1      MUST be "CANCEL"
 103.585 +     * 
 103.586 +     * VEVENT              1+     All must have the same UID
 103.587 +     *     ATTENDEE        0+     MUST include all "Attendees" being removed
 103.588 +     *                            the event. MUST include all "Attendees" if
 103.589 +     *                            the entire event is cancelled.
 103.590 +     *     DTSTAMP         1
 103.591 +     *     ORGANIZER       1
 103.592 +     *     SEQUENCE        1
 103.593 +     *     UID             1       MUST be the UID of the original REQUEST
 103.594 +     * 
 103.595 +     *     COMMENT         0 or 1
 103.596 +     *     ATTACH          0+
 103.597 +     *     CATEGORIES      0 or 1  This property may contain a list of values
 103.598 +     *     CLASS           0 or 1
 103.599 +     *     CONTACT         0+
 103.600 +     *     CREATED         0 or 1
 103.601 +     *     DESCRIPTION     0 or 1
 103.602 +     *     DTEND           0 or 1 if present DURATION MUST NOT be present
 103.603 +     *     DTSTART         0 or 1
 103.604 +     *     DURATION        0 or 1 if present DTEND MUST NOT be present
 103.605 +     *     EXDATE          0+
 103.606 +     *     EXRULE          0+
 103.607 +     *     GEO             0 or 1
 103.608 +     *     LAST-MODIFIED   0 or 1
 103.609 +     *     LOCATION        0 or 1
 103.610 +     *     PRIORITY        0 or 1
 103.611 +     *     RDATE           0+
 103.612 +     *     RECURRENCE-ID   0 or 1  MUST be present if referring to one or
 103.613 +     *                             more or more recurring instances.
 103.614 +     *                             Otherwise it MUST NOT be present
 103.615 +     *     RELATED-TO      0+
 103.616 +     *     RESOURCES       0 or 1
 103.617 +     *     RRULE           0+
 103.618 +     *     STATUS          0 or 1  MUST be set to CANCELLED. If uninviting
 103.619 +     *                             specific "Attendees" then MUST NOT be
 103.620 +     *                             included.
 103.621 +     *     SUMMARY         0 or 1
 103.622 +     *     TRANSP          0 or 1
 103.623 +     *     URL             0 or 1
 103.624 +     *     X-PROPERTY      0+
 103.625 +     *     REQUEST-STATUS  0
 103.626 +     * 
 103.627 +     * VTIMEZONE           0+     MUST be present if any date/time refers to
 103.628 +     *                            a timezone
 103.629 +     * X-COMPONENT         0+
 103.630 +     * 
 103.631 +     * VTODO               0
 103.632 +     * VJOURNAL            0
 103.633 +     * VFREEBUSY           0
 103.634 +     * VALARM              0
 103.635 +     * </pre>
 103.636 +     * 
 103.637 +     */
 103.638 +    private class CancelValidator implements Validator {
 103.639 +        
 103.640 +		private static final long serialVersionUID = 1L;
 103.641 +
 103.642 +        public final void validate() throws ValidationException {
 103.643 +            PropertyValidator.getInstance().assertOne(Property.DTSTAMP, getProperties());
 103.644 +            PropertyValidator.getInstance().assertOne(Property.DTSTART, getProperties());
 103.645 +            PropertyValidator.getInstance().assertOne(Property.ORGANIZER, getProperties());
 103.646 +            PropertyValidator.getInstance().assertOne(Property.SEQUENCE, getProperties());
 103.647 +            PropertyValidator.getInstance().assertOne(Property.UID, getProperties());
 103.648 +            
 103.649 +            PropertyValidator.getInstance().assertOneOrLess(Property.COMMENT, getProperties());
 103.650 +            PropertyValidator.getInstance().assertOneOrLess(Property.CATEGORIES, getProperties());
 103.651 +            PropertyValidator.getInstance().assertOneOrLess(Property.CLASS, getProperties());
 103.652 +            PropertyValidator.getInstance().assertOneOrLess(Property.CREATED, getProperties());
 103.653 +            PropertyValidator.getInstance().assertOneOrLess(Property.DESCRIPTION, getProperties());
 103.654 +            PropertyValidator.getInstance().assertOneOrLess(Property.DTEND, getProperties());
 103.655 +            PropertyValidator.getInstance().assertOneOrLess(Property.DTSTART, getProperties());
 103.656 +            PropertyValidator.getInstance().assertOneOrLess(Property.DURATION, getProperties());
 103.657 +            PropertyValidator.getInstance().assertOneOrLess(Property.GEO, getProperties());
 103.658 +            PropertyValidator.getInstance().assertOneOrLess(Property.LAST_MODIFIED, getProperties());
 103.659 +            PropertyValidator.getInstance().assertOneOrLess(Property.LOCATION, getProperties());
 103.660 +            PropertyValidator.getInstance().assertOneOrLess(Property.PRIORITY, getProperties());
 103.661 +            PropertyValidator.getInstance().assertOneOrLess(Property.RECURRENCE_ID, getProperties());
 103.662 +            PropertyValidator.getInstance().assertOneOrLess(Property.RESOURCES, getProperties());
 103.663 +            PropertyValidator.getInstance().assertOneOrLess(Property.STATUS, getProperties());
 103.664 +            PropertyValidator.getInstance().assertOneOrLess(Property.SUMMARY, getProperties());
 103.665 +            PropertyValidator.getInstance().assertOneOrLess(Property.TRANSP, getProperties());
 103.666 +            PropertyValidator.getInstance().assertOneOrLess(Property.URL, getProperties());
 103.667 +            
 103.668 +            PropertyValidator.getInstance().assertNone(Property.REQUEST_STATUS, getProperties());
 103.669 +            
 103.670 +            ComponentValidator.assertNone(Component.VALARM, getAlarms());
 103.671 +        }
 103.672 +    }
 103.673 +    
 103.674 +    /**
 103.675 +     * METHOD:COUNTER Validator.
 103.676 +     * 
 103.677 +     * <pre>
 103.678 +     * Component/Property  Presence
 103.679 +     * ------------------- ----------------------------------------------
 103.680 +     * METHOD              1      MUST be "COUNTER"
 103.681 +     * 
 103.682 +     * VEVENT              1
 103.683 +     *     DTSTAMP         1
 103.684 +     *     DTSTART         1
 103.685 +     *     ORGANIZER       1       MUST be the "Organizer" of the original
 103.686 +     *                             event
 103.687 +     *     SEQUENCE        1       MUST be present if value is greater than 0,
 103.688 +     *                             MAY be present if 0
 103.689 +     *     SUMMARY         1       Can be null
 103.690 +     *     UID             1       MUST be the UID associated with the REQUEST
 103.691 +     *                             being countered
 103.692 +     * 
 103.693 +     *     ATTACH          0+
 103.694 +     *     ATTENDEE        0+      Can also  be used to propose other
 103.695 +     *                             "Attendees"
 103.696 +     *     CATEGORIES      0 or 1  This property may contain a list of values
 103.697 +     *     CLASS           0 or 1
 103.698 +     *     COMMENT         0 or 1
 103.699 +     *     CONTACT         0+
 103.700 +     *     CREATED         0 or 1
 103.701 +     *     DESCRIPTION     0 or 1
 103.702 +     *     DTEND           0 or 1  if present DURATION MUST NOT be present
 103.703 +     *     DURATION        0 or 1  if present DTEND MUST NOT be present
 103.704 +     *     EXDATE          0+
 103.705 +     *     EXRULE          0+
 103.706 +     *     GEO             0 or 1
 103.707 +     *     LAST-MODIFIED   0 or 1
 103.708 +     *     LOCATION        0 or 1
 103.709 +     *     PRIORITY        0 or 1
 103.710 +     *     RDATE           0+
 103.711 +     *     RECURRENCE-ID   0 or 1  MUST only if referring to an instance of a
 103.712 +     *                             recurring calendar component.  Otherwise it
 103.713 +     *                             MUST NOT be present.
 103.714 +     *     RELATED-TO      0+
 103.715 +     *     REQUEST-STATUS  0+
 103.716 +     *     RESOURCES       0 or 1  This property may contain a list of values
 103.717 +     *     RRULE           0+
 103.718 +     *     STATUS          0 or 1  Value must be one of CONFIRMED/TENATIVE/
 103.719 +     *                             CANCELLED
 103.720 +     *     TRANSP          0 or 1
 103.721 +     *     URL             0 or 1
 103.722 +     *     X-PROPERTY      0+
 103.723 +     * 
 103.724 +     * VALARM              0+
 103.725 +     * VTIMEZONE           0+      MUST be present if any date/time refers to
 103.726 +     *                             a timezone
 103.727 +     * X-COMPONENT         0+
 103.728 +     * 
 103.729 +     * VTODO               0
 103.730 +     * VJOURNAL            0
 103.731 +     * VFREEBUSY           0
 103.732 +     * </pre>
 103.733 +     * 
 103.734 +     */
 103.735 +    private class CounterValidator implements Validator {
 103.736 +        
 103.737 +		private static final long serialVersionUID = 1L;
 103.738 +
 103.739 +        public void validate() throws ValidationException {
 103.740 +            PropertyValidator.getInstance().assertOne(Property.DTSTAMP, getProperties());
 103.741 +            PropertyValidator.getInstance().assertOne(Property.DTSTART, getProperties());
 103.742 +            
 103.743 +            if (!CompatibilityHints.isHintEnabled(CompatibilityHints.KEY_RELAXED_VALIDATION)) {
 103.744 +                PropertyValidator.getInstance().assertOne(Property.ORGANIZER, getProperties());
 103.745 +            }
 103.746 +            
 103.747 +            PropertyValidator.getInstance().assertOne(Property.SEQUENCE, getProperties());
 103.748 +            PropertyValidator.getInstance().assertOne(Property.SUMMARY, getProperties());
 103.749 +            PropertyValidator.getInstance().assertOne(Property.UID, getProperties());
 103.750 +            
 103.751 +            PropertyValidator.getInstance().assertOneOrLess(Property.CATEGORIES, getProperties());
 103.752 +            PropertyValidator.getInstance().assertOneOrLess(Property.CLASS, getProperties());
 103.753 +            PropertyValidator.getInstance().assertOneOrLess(Property.COMMENT, getProperties());
 103.754 +            PropertyValidator.getInstance().assertOneOrLess(Property.CREATED, getProperties());
 103.755 +            PropertyValidator.getInstance().assertOneOrLess(Property.DESCRIPTION, getProperties());
 103.756 +            PropertyValidator.getInstance().assertOneOrLess(Property.DTEND, getProperties());
 103.757 +            PropertyValidator.getInstance().assertOneOrLess(Property.DURATION, getProperties());
 103.758 +            PropertyValidator.getInstance().assertOneOrLess(Property.GEO, getProperties());
 103.759 +            PropertyValidator.getInstance().assertOneOrLess(Property.LAST_MODIFIED, getProperties());
 103.760 +            PropertyValidator.getInstance().assertOneOrLess(Property.LOCATION, getProperties());
 103.761 +            PropertyValidator.getInstance().assertOneOrLess(Property.PRIORITY, getProperties());
 103.762 +            PropertyValidator.getInstance().assertOneOrLess(Property.RECURRENCE_ID, getProperties());
 103.763 +            PropertyValidator.getInstance().assertOneOrLess(Property.RESOURCES, getProperties());
 103.764 +            PropertyValidator.getInstance().assertOneOrLess(Property.STATUS, getProperties());
 103.765 +            PropertyValidator.getInstance().assertOneOrLess(Property.TRANSP, getProperties());
 103.766 +            PropertyValidator.getInstance().assertOneOrLess(Property.URL, getProperties());
 103.767 +            
 103.768 +            for (final Iterator i = getAlarms().iterator(); i.hasNext();) {
 103.769 +                final VAlarm alarm = (VAlarm) i.next();
 103.770 +                alarm.validate(Method.COUNTER);
 103.771 +            }
 103.772 +        }
 103.773 +    }
 103.774 +    
 103.775 +    /**
 103.776 +     * METHOD:DECLINECOUNTER Validator.
 103.777 +     * 
 103.778 +     * <pre>
 103.779 +     * Component/Property  Presence
 103.780 +     * ------------------- ----------------------------------------------
 103.781 +     * METHOD              1      MUST be "DECLINECOUNTER"
 103.782 +     * 
 103.783 +     * VEVENT              1
 103.784 +     *     DTSTAMP         1
 103.785 +     *     ORGANIZER       1
 103.786 +     *     UID             1       MUST, same UID specified in original
 103.787 +     *                             REQUEST and subsequent COUNTER
 103.788 +     *     COMMENT         0 or 1
 103.789 +     *     RECURRENCE-ID   0 or 1  MUST only if referring to an instance of a
 103.790 +     *                             recurring calendar component.  Otherwise it
 103.791 +     *                             MUST NOT be present.
 103.792 +     *     REQUEST-STATUS  0+
 103.793 +     *     SEQUENCE        0 OR 1  MUST be present if value is greater than 0,
 103.794 +     *                             MAY be present if 0
 103.795 +     *     X-PROPERTY      0+
 103.796 +     *     ATTACH          0
 103.797 +     *     ATTENDEE        0
 103.798 +     *     CATEGORIES      0
 103.799 +     *     CLASS           0
 103.800 +     *     CONTACT         0
 103.801 +     *     CREATED         0
 103.802 +     *     DESCRIPTION     0
 103.803 +     *     DTEND           0
 103.804 +     *     DTSTART         0
 103.805 +     *     DURATION        0
 103.806 +     *     EXDATE          0
 103.807 +     *     EXRULE          0
 103.808 +     *     GEO             0
 103.809 +     *     LAST-MODIFIED   0
 103.810 +     *     LOCATION        0
 103.811 +     *     PRIORITY        0
 103.812 +     *     RDATE           0
 103.813 +     *     RELATED-TO      0
 103.814 +     *     RESOURCES       0
 103.815 +     *     RRULE           0
 103.816 +     *     STATUS          0
 103.817 +     *     SUMMARY         0
 103.818 +     *     TRANSP          0
 103.819 +     *     URL             0
 103.820 +     * 
 103.821 +     * X-COMPONENT         0+
 103.822 +     * VTODO               0
 103.823 +     * VJOURNAL            0
 103.824 +     * VFREEBUSY           0
 103.825 +     * VTIMEZONE           0
 103.826 +     * VALARM              0
 103.827 +     * </pre>
 103.828 +     * 
 103.829 +     */
 103.830 +    private class DeclineCounterValidator implements Validator {
 103.831 +        
 103.832 +		private static final long serialVersionUID = 1L;
 103.833 +
 103.834 +        public void validate() throws ValidationException {
 103.835 +            PropertyValidator.getInstance().assertOne(Property.DTSTAMP, getProperties());
 103.836 +            PropertyValidator.getInstance().assertOne(Property.ORGANIZER, getProperties());
 103.837 +            PropertyValidator.getInstance().assertOne(Property.UID, getProperties());
 103.838 +            
 103.839 +            PropertyValidator.getInstance().assertOneOrLess(Property.COMMENT, getProperties());
 103.840 +            PropertyValidator.getInstance().assertOneOrLess(Property.RECURRENCE_ID, getProperties());
 103.841 +            PropertyValidator.getInstance().assertOneOrLess(Property.SEQUENCE, getProperties());
 103.842 +            
 103.843 +            PropertyValidator.getInstance().assertNone(Property.ATTACH, getProperties());
 103.844 +            PropertyValidator.getInstance().assertNone(Property.ATTENDEE, getProperties());
 103.845 +            PropertyValidator.getInstance().assertNone(Property.CATEGORIES, getProperties());
 103.846 +            PropertyValidator.getInstance().assertNone(Property.CLASS, getProperties());
 103.847 +            PropertyValidator.getInstance().assertNone(Property.CONTACT, getProperties());
 103.848 +            PropertyValidator.getInstance().assertNone(Property.CREATED, getProperties());
 103.849 +            PropertyValidator.getInstance().assertNone(Property.DESCRIPTION, getProperties());
 103.850 +            PropertyValidator.getInstance().assertNone(Property.DTEND, getProperties());
 103.851 +            PropertyValidator.getInstance().assertNone(Property.DTSTART, getProperties());
 103.852 +            PropertyValidator.getInstance().assertNone(Property.DURATION, getProperties());
 103.853 +            PropertyValidator.getInstance().assertNone(Property.EXDATE, getProperties());
 103.854 +            PropertyValidator.getInstance().assertNone(Property.EXRULE, getProperties());
 103.855 +            PropertyValidator.getInstance().assertNone(Property.GEO, getProperties());
 103.856 +            PropertyValidator.getInstance().assertNone(Property.LAST_MODIFIED, getProperties());
 103.857 +            PropertyValidator.getInstance().assertNone(Property.LOCATION, getProperties());
 103.858 +            PropertyValidator.getInstance().assertNone(Property.PRIORITY, getProperties());
 103.859 +            PropertyValidator.getInstance().assertNone(Property.RDATE, getProperties());
 103.860 +            PropertyValidator.getInstance().assertNone(Property.RELATED_TO, getProperties());
 103.861 +            PropertyValidator.getInstance().assertNone(Property.RESOURCES, getProperties());
 103.862 +            PropertyValidator.getInstance().assertNone(Property.RRULE, getProperties());
 103.863 +            PropertyValidator.getInstance().assertNone(Property.STATUS, getProperties());
 103.864 +            PropertyValidator.getInstance().assertNone(Property.SUMMARY, getProperties());
 103.865 +            PropertyValidator.getInstance().assertNone(Property.TRANSP, getProperties());
 103.866 +            PropertyValidator.getInstance().assertNone(Property.URL, getProperties());
 103.867 +            
 103.868 +            ComponentValidator.assertNone(Component.VALARM, getAlarms());
 103.869 +        }
 103.870 +    }
 103.871 +    
 103.872 +    /**
 103.873 +     * METHOD:PUBLISH Validator.
 103.874 +     * 
 103.875 +     * <pre>
 103.876 +     * Component/Property  Presence
 103.877 +     * ------------------- ----------------------------------------------
 103.878 +     * METHOD              1       MUST equal "PUBLISH"
 103.879 +     * VEVENT              1+
 103.880 +     *      DTSTAMP        1
 103.881 +     *      DTSTART        1
 103.882 +     *      ORGANIZER      1
 103.883 +     *      SUMMARY        1       Can be null.
 103.884 +     *      UID            1
 103.885 +     *      RECURRENCE-ID  0 or 1  only if referring to an instance of a
 103.886 +     *                             recurring calendar component.  Otherwise
 103.887 +     *                             it MUST NOT be present.
 103.888 +     *      SEQUENCE       0 or 1  MUST be present if value is greater than
 103.889 +     *                             0, MAY be present if 0
 103.890 +     *      ATTACH         0+
 103.891 +     *      CATEGORIES     0 or 1  This property may contain a list of
 103.892 +     *                             values
 103.893 +     *      CLASS          0 or 1
 103.894 +     *      COMMENT        0 or 1
 103.895 +     *      CONTACT        0+
 103.896 +     *      CREATED        0 or 1
 103.897 +     *      DESCRIPTION    0 or 1  Can be null
 103.898 +     *      DTEND          0 or 1  if present DURATION MUST NOT be present
 103.899 +     *      DURATION       0 or 1  if present DTEND MUST NOT be present
 103.900 +     *      EXDATE         0+
 103.901 +     *      EXRULE         0+
 103.902 +     *      GEO            0 or 1
 103.903 +     *      LAST-MODIFIED  0 or 1
 103.904 +     *      LOCATION       0 or 1
 103.905 +     *      PRIORITY       0 or 1
 103.906 +     *      RDATE          0+
 103.907 +     *      RELATED-TO     0+
 103.908 +     *      RESOURCES      0 or 1 This property MAY contain a list of values
 103.909 +     *      RRULE          0+
 103.910 +     *      STATUS         0 or 1 MAY be one of TENTATIVE/CONFIRMED/CANCELLED
 103.911 +     *      TRANSP         0 or 1
 103.912 +     *      URL            0 or 1
 103.913 +     *      X-PROPERTY     0+
 103.914 +     * 
 103.915 +     *      ATTENDEE       0
 103.916 +     *      REQUEST-STATUS 0
 103.917 +     * 
 103.918 +     * VALARM              0+
 103.919 +     * VFREEBUSY           0
 103.920 +     * VJOURNAL            0
 103.921 +     * VTODO               0
 103.922 +     * VTIMEZONE           0+    MUST be present if any date/time refers to
 103.923 +     *                           a timezone
 103.924 +     * X-COMPONENT         0+
 103.925 +     * </pre>
 103.926 +     * 
 103.927 +     */
 103.928 +    private class PublishValidator implements Validator {
 103.929 +        
 103.930 +		private static final long serialVersionUID = 1L;
 103.931 +
 103.932 +        public void validate() throws ValidationException {
 103.933 +            PropertyValidator.getInstance().assertOne(Property.DTSTAMP, getProperties());
 103.934 +            PropertyValidator.getInstance().assertOne(Property.DTSTART, getProperties());
 103.935 +            
 103.936 +            if (!CompatibilityHints.isHintEnabled(CompatibilityHints.KEY_RELAXED_VALIDATION)) {
 103.937 +                PropertyValidator.getInstance().assertOne(Property.ORGANIZER, getProperties());
 103.938 +                PropertyValidator.getInstance().assertOne(Property.SUMMARY, getProperties());
 103.939 +            }
 103.940 +            
 103.941 +            PropertyValidator.getInstance().assertOne(Property.UID, getProperties());
 103.942 +            
 103.943 +            PropertyValidator.getInstance().assertOneOrLess(Property.RECURRENCE_ID, getProperties());
 103.944 +            PropertyValidator.getInstance().assertOneOrLess(Property.SEQUENCE, getProperties());
 103.945 +            PropertyValidator.getInstance().assertOneOrLess(Property.CATEGORIES, getProperties());
 103.946 +            PropertyValidator.getInstance().assertOneOrLess(Property.CLASS, getProperties());
 103.947 +            PropertyValidator.getInstance().assertOneOrLess(Property.COMMENT, getProperties());
 103.948 +            PropertyValidator.getInstance().assertOneOrLess(Property.CREATED, getProperties());
 103.949 +            PropertyValidator.getInstance().assertOneOrLess(Property.DESCRIPTION, getProperties());
 103.950 +            PropertyValidator.getInstance().assertOneOrLess(Property.DTEND, getProperties());
 103.951 +            PropertyValidator.getInstance().assertOneOrLess(Property.DURATION, getProperties());
 103.952 +            PropertyValidator.getInstance().assertOneOrLess(Property.GEO, getProperties());
 103.953 +            PropertyValidator.getInstance().assertOneOrLess(Property.LAST_MODIFIED, getProperties());
 103.954 +            PropertyValidator.getInstance().assertOneOrLess(Property.LOCATION, getProperties());
 103.955 +            PropertyValidator.getInstance().assertOneOrLess(Property.PRIORITY, getProperties());
 103.956 +            PropertyValidator.getInstance().assertOneOrLess(Property.RESOURCES, getProperties());
 103.957 +            PropertyValidator.getInstance().assertOneOrLess(Property.STATUS, getProperties());
 103.958 +            PropertyValidator.getInstance().assertOneOrLess(Property.TRANSP, getProperties());
 103.959 +            PropertyValidator.getInstance().assertOneOrLess(Property.URL, getProperties());
 103.960 +            
 103.961 +            if (!CompatibilityHints.isHintEnabled(CompatibilityHints.KEY_RELAXED_VALIDATION)) {
 103.962 +                PropertyValidator.getInstance().assertNone(Property.ATTENDEE, getProperties());
 103.963 +            }
 103.964 +            
 103.965 +            PropertyValidator.getInstance().assertNone(Property.REQUEST_STATUS, getProperties());
 103.966 +            
 103.967 +            for (final Iterator i = getAlarms().iterator(); i.hasNext();) {
 103.968 +                final VAlarm alarm = (VAlarm) i.next();
 103.969 +                alarm.validate(Method.PUBLISH);
 103.970 +            }
 103.971 +        }
 103.972 +    }
 103.973 +    
 103.974 +    /**
 103.975 +     * METHOD:REFRESH Validator.
 103.976 +     * 
 103.977 +     * <pre>
 103.978 +     * Component/Property  Presence
 103.979 +     * ------------------- ----------------------------------------------
 103.980 +     * METHOD              1      MUST be "REFRESH"
 103.981 +     * 
 103.982 +     * VEVENT              1
 103.983 +     *     ATTENDEE        1      MUST be the address of requestor
 103.984 +     *     DTSTAMP         1
 103.985 +     *     ORGANIZER       1
 103.986 +     *     UID             1      MUST be the UID associated with original
 103.987 +     *                            REQUEST
 103.988 +     *     COMMENT         0 or 1
 103.989 +     *     RECURRENCE-ID   0 or 1 MUST only if referring to an instance of a
 103.990 +     *                            recurring calendar component.  Otherwise
 103.991 +     *                            it must NOT be present.
 103.992 +     *     X-PROPERTY      0+
 103.993 +     * 
 103.994 +     *     ATTACH          0
 103.995 +     *     CATEGORIES      0
 103.996 +     *     CLASS           0
 103.997 +     *     CONTACT         0
 103.998 +     *     CREATED         0
 103.999 +     *     DESCRIPTION     0
103.1000 +     *     DTEND           0
103.1001 +     *     DTSTART         0
103.1002 +     *     DURATION        0
103.1003 +     *     EXDATE          0
103.1004 +     *     EXRULE          0
103.1005 +     *     GEO             0
103.1006 +     *     LAST-MODIFIED   0
103.1007 +     *     LOCATION        0
103.1008 +     *     PRIORITY        0
103.1009 +     *     RDATE           0
103.1010 +     *     RELATED-TO      0
103.1011 +     *     REQUEST-STATUS  0
103.1012 +     *     RESOURCES       0
103.1013 +     *     RRULE           0
103.1014 +     *     SEQUENCE        0
103.1015 +     *     STATUS          0
103.1016 +     *     SUMMARY         0
103.1017 +     *     TRANSP          0
103.1018 +     *     URL             0
103.1019 +     * 
103.1020 +     * X-COMPONENT         0+
103.1021 +     * 
103.1022 +     * VTODO               0
103.1023 +     * VJOURNAL            0
103.1024 +     * VFREEBUSY           0
103.1025 +     * VTIMEZONE           0
103.1026 +     * VALARM              0
103.1027 +     * </pre>
103.1028 +     * 
103.1029 +     */
103.1030 +    private class RefreshValidator implements Validator {
103.1031 +        
103.1032 +		private static final long serialVersionUID = 1L;
103.1033 +
103.1034 +        public void validate() throws ValidationException {
103.1035 +            PropertyValidator.getInstance().assertOne(Property.ATTENDEE, getProperties());
103.1036 +            PropertyValidator.getInstance().assertOne(Property.DTSTAMP, getProperties());
103.1037 +            PropertyValidator.getInstance().assertOne(Property.ORGANIZER, getProperties());
103.1038 +            PropertyValidator.getInstance().assertOne(Property.UID, getProperties());
103.1039 +            
103.1040 +            PropertyValidator.getInstance().assertOneOrLess(Property.COMMENT, getProperties());
103.1041 +            PropertyValidator.getInstance().assertOneOrLess(Property.RECURRENCE_ID, getProperties());
103.1042 +            
103.1043 +            PropertyValidator.getInstance().assertNone(Property.ATTACH, getProperties());
103.1044 +            PropertyValidator.getInstance().assertNone(Property.CATEGORIES, getProperties());
103.1045 +            PropertyValidator.getInstance().assertNone(Property.CLASS, getProperties());
103.1046 +            PropertyValidator.getInstance().assertNone(Property.CONTACT, getProperties());
103.1047 +            PropertyValidator.getInstance().assertNone(Property.CREATED, getProperties());
103.1048 +            PropertyValidator.getInstance().assertNone(Property.DESCRIPTION, getProperties());
103.1049 +            PropertyValidator.getInstance().assertNone(Property.DTEND, getProperties());
103.1050 +            PropertyValidator.getInstance().assertNone(Property.DTSTART, getProperties());
103.1051 +            PropertyValidator.getInstance().assertNone(Property.DURATION, getProperties());
103.1052 +            PropertyValidator.getInstance().assertNone(Property.EXDATE, getProperties());
103.1053 +            PropertyValidator.getInstance().assertNone(Property.EXRULE, getProperties());
103.1054 +            PropertyValidator.getInstance().assertNone(Property.GEO, getProperties());
103.1055 +            PropertyValidator.getInstance().assertNone(Property.LAST_MODIFIED, getProperties());
103.1056 +            PropertyValidator.getInstance().assertNone(Property.LOCATION, getProperties());
103.1057 +            PropertyValidator.getInstance().assertNone(Property.PRIORITY, getProperties());
103.1058 +            PropertyValidator.getInstance().assertNone(Property.RDATE, getProperties());
103.1059 +            PropertyValidator.getInstance().assertNone(Property.RELATED_TO, getProperties());
103.1060 +            PropertyValidator.getInstance().assertNone(Property.REQUEST_STATUS, getProperties());
103.1061 +            PropertyValidator.getInstance().assertNone(Property.RESOURCES, getProperties());
103.1062 +            PropertyValidator.getInstance().assertNone(Property.RRULE, getProperties());
103.1063 +            PropertyValidator.getInstance().assertNone(Property.SEQUENCE, getProperties());
103.1064 +            PropertyValidator.getInstance().assertNone(Property.STATUS, getProperties());
103.1065 +            PropertyValidator.getInstance().assertNone(Property.SUMMARY, getProperties());
103.1066 +            PropertyValidator.getInstance().assertNone(Property.TRANSP, getProperties());
103.1067 +            PropertyValidator.getInstance().assertNone(Property.URL, getProperties());
103.1068 +            
103.1069 +            ComponentValidator.assertNone(Component.VALARM, getAlarms());
103.1070 +        }
103.1071 +    }
103.1072 +    
103.1073 +    /**
103.1074 +     * METHOD:REPLY Validator.
103.1075 +     * 
103.1076 +     * <pre>
103.1077 +     * Component/Property  Presence
103.1078 +     * ------------------- ----------------------------------------------
103.1079 +     * METHOD              1       MUST be "REPLY"
103.1080 +     * VEVENT              1+      All components MUST have the same UID
103.1081 +     *     ATTENDEE        1       MUST be the address of the Attendee
103.1082 +     *                             replying.
103.1083 +     *     DTSTAMP         1
103.1084 +     *     ORGANIZER       1
103.1085 +     *     RECURRENCE-ID   0 or 1  only if referring to an instance of a
103.1086 +     *                             recurring calendar component.  Otherwise
103.1087 +     *                             it must NOT be present.
103.1088 +     *     UID             1       MUST be the UID of the original REQUEST
103.1089 +     *     
103.1090 +     *     SEQUENCE        0 or 1  MUST if non-zero, MUST be the sequence
103.1091 +     *                             number of the original REQUEST. MAY be
103.1092 +     *                             present if 0.
103.1093 +     *     
103.1094 +     *     ATTACH          0+
103.1095 +     *     CATEGORIES      0 or 1  This property may contain a list of values
103.1096 +     *     CLASS           0 or 1
103.1097 +     *     COMMENT         0 or 1
103.1098 +     *     CONTACT         0+
103.1099 +     *     CREATED         0 or 1
103.1100 +     *     DESCRIPTION     0 or 1
103.1101 +     *     DTEND           0 or 1  if present DURATION MUST NOT be present
103.1102 +     *     DTSTART         0 or 1
103.1103 +     *     DURATION        0 or 1  if present DTEND MUST NOT be present
103.1104 +     *     EXDATE          0+
103.1105 +     *     EXRULE          0+
103.1106 +     *     GEO             0 or 1
103.1107 +     *     LAST-MODIFIED   0 or 1
103.1108 +     *     LOCATION        0 or 1
103.1109 +     *     PRIORITY        0 or 1
103.1110 +     *     RDATE           0+
103.1111 +     *     RELATED-TO      0+
103.1112 +     *     RESOURCES       0 or 1  This property MAY contain a list of values
103.1113 +     *     REQUEST-STATUS  0+
103.1114 +     *     RRULE           0+
103.1115 +     *     STATUS          0 or 1
103.1116 +     *     SUMMARY         0 or 1
103.1117 +     *     TRANSP          0 or 1
103.1118 +     *     URL             0 or 1
103.1119 +     *     X-PROPERTY      0+
103.1120 +     *     
103.1121 +     * VTIMEZONE           0 or 1 MUST be present if any date/time refers
103.1122 +     *                            to a timezone
103.1123 +     * X-COMPONENT         0+
103.1124 +     * 
103.1125 +     * VALARM              0
103.1126 +     * VFREEBUSY           0
103.1127 +     * VJOURNAL            0
103.1128 +     * VTODO               0
103.1129 +     * </pre>
103.1130 +     * 
103.1131 +     */
103.1132 +    private class ReplyValidator implements Validator {
103.1133 +        
103.1134 +		private static final long serialVersionUID = 1L;
103.1135 +
103.1136 +        public void validate() throws ValidationException {
103.1137 +            PropertyValidator.getInstance().assertOne(Property.ATTENDEE, getProperties());
103.1138 +            PropertyValidator.getInstance().assertOne(Property.DTSTAMP, getProperties());
103.1139 +            PropertyValidator.getInstance().assertOne(Property.ORGANIZER, getProperties());
103.1140 +            PropertyValidator.getInstance().assertOne(Property.UID, getProperties());
103.1141 +            
103.1142 +            PropertyValidator.getInstance().assertOneOrLess(Property.RECURRENCE_ID, getProperties());
103.1143 +            PropertyValidator.getInstance().assertOneOrLess(Property.SEQUENCE, getProperties());
103.1144 +            PropertyValidator.getInstance().assertOneOrLess(Property.CATEGORIES, getProperties());
103.1145 +            PropertyValidator.getInstance().assertOneOrLess(Property.CLASS, getProperties());
103.1146 +            PropertyValidator.getInstance().assertOneOrLess(Property.COMMENT, getProperties());
103.1147 +            PropertyValidator.getInstance().assertOneOrLess(Property.CREATED, getProperties());
103.1148 +            PropertyValidator.getInstance().assertOneOrLess(Property.DESCRIPTION, getProperties());
103.1149 +            PropertyValidator.getInstance().assertOneOrLess(Property.DTEND, getProperties());
103.1150 +            PropertyValidator.getInstance().assertOneOrLess(Property.DTSTART, getProperties());
103.1151 +            PropertyValidator.getInstance().assertOneOrLess(Property.DURATION, getProperties());
103.1152 +            PropertyValidator.getInstance().assertOneOrLess(Property.GEO, getProperties());
103.1153 +            PropertyValidator.getInstance().assertOneOrLess(Property.LAST_MODIFIED, getProperties());
103.1154 +            PropertyValidator.getInstance().assertOneOrLess(Property.LOCATION, getProperties());
103.1155 +            PropertyValidator.getInstance().assertOneOrLess(Property.PRIORITY, getProperties());
103.1156 +            PropertyValidator.getInstance().assertOneOrLess(Property.RESOURCES, getProperties());
103.1157 +            PropertyValidator.getInstance().assertOneOrLess(Property.STATUS, getProperties());
103.1158 +            PropertyValidator.getInstance().assertOneOrLess(Property.SUMMARY, getProperties());
103.1159 +            PropertyValidator.getInstance().assertOneOrLess(Property.TRANSP, getProperties());
103.1160 +            PropertyValidator.getInstance().assertOneOrLess(Property.URL, getProperties());
103.1161 +            
103.1162 +            ComponentValidator.assertNone(Component.VALARM, getAlarms());
103.1163 +        }
103.1164 +    }
103.1165 +    
103.1166 +    /**
103.1167 +     * METHOD:REQUEST Validator.
103.1168 +     * 
103.1169 +     * <pre>
103.1170 +     * Component/Property  Presence
103.1171 +     * -----------------------------------------------------------------
103.1172 +     * METHOD              1       MUST be "REQUEST"
103.1173 +     * VEVENT              1+      All components MUST have the same UID
103.1174 +     *     ATTENDEE        1+
103.1175 +     *     DTSTAMP         1
103.1176 +     *     DTSTART         1
103.1177 +     *     ORGANIZER       1
103.1178 +     *     SEQUENCE        0 or 1  MUST be present if value is greater than 0,
103.1179 +     *                             MAY be present if 0
103.1180 +     *     SUMMARY         1       Can be null
103.1181 +     *     UID             1
103.1182 +     *     
103.1183 +     *     ATTACH          0+
103.1184 +     *     CATEGORIES      0 or 1  This property may contain a list of values
103.1185 +     *     CLASS           0 or 1
103.1186 +     *     COMMENT         0 or 1
103.1187 +     *     CONTACT         0+
103.1188 +     *     CREATED         0 or 1
103.1189 +     *     DESCRIPTION     0 or 1  Can be null
103.1190 +     *     DTEND           0 or 1  if present DURATION MUST NOT be present
103.1191 +     *     DURATION        0 or 1  if present DTEND MUST NOT be present
103.1192 +     *     EXDATE          0+
103.1193 +     *     EXRULE          0+
103.1194 +     *     GEO             0 or 1
103.1195 +     *     LAST-MODIFIED   0 or 1
103.1196 +     *     LOCATION        0 or 1
103.1197 +     *     PRIORITY        0 or 1
103.1198 +     *     RDATE           0+
103.1199 +     *     RECURRENCE-ID   0 or 1  only if referring to an instance of a
103.1200 +     *                             recurring calendar component.  Otherwise it
103.1201 +     *                             MUST NOT be present.
103.1202 +     *     RELATED-TO      0+
103.1203 +     *     REQUEST-STATUS  0+
103.1204 +     *     RESOURCES       0 or 1  This property MAY contain a list of values
103.1205 +     *     RRULE           0+
103.1206 +     *     STATUS          0 or 1  MAY be one of TENTATIVE/CONFIRMED
103.1207 +     *     TRANSP          0 or 1
103.1208 +     *     URL             0 or 1
103.1209 +     *     X-PROPERTY      0+
103.1210 +     *     
103.1211 +     * VALARM              0+
103.1212 +     * VTIMEZONE           0+      MUST be present if any date/time refers to
103.1213 +     *                             a timezone
103.1214 +     * X-COMPONENT         0+
103.1215 +     * VFREEBUSY           0
103.1216 +     * VJOURNAL            0
103.1217 +     * VTODO               0
103.1218 +     * </pre>
103.1219 +     * 
103.1220 +     */
103.1221 +    private class RequestValidator implements Validator {
103.1222 +        
103.1223 +		private static final long serialVersionUID = 1L;
103.1224 +
103.1225 +        public void validate() throws ValidationException {
103.1226 +            if (!CompatibilityHints.isHintEnabled(CompatibilityHints.KEY_RELAXED_VALIDATION)) {
103.1227 +                PropertyValidator.getInstance().assertOneOrMore(Property.ATTENDEE, getProperties());
103.1228 +            }
103.1229 +            
103.1230 +            PropertyValidator.getInstance().assertOne(Property.DTSTAMP, getProperties());
103.1231 +            PropertyValidator.getInstance().assertOne(Property.DTSTART, getProperties());
103.1232 +            PropertyValidator.getInstance().assertOne(Property.ORGANIZER, getProperties());
103.1233 +            PropertyValidator.getInstance().assertOne(Property.SUMMARY, getProperties());
103.1234 +            PropertyValidator.getInstance().assertOne(Property.UID, getProperties());
103.1235 +            
103.1236 +            PropertyValidator.getInstance().assertOneOrLess(Property.SEQUENCE, getProperties());
103.1237 +            PropertyValidator.getInstance().assertOneOrLess(Property.CATEGORIES, getProperties());
103.1238 +            PropertyValidator.getInstance().assertOneOrLess(Property.CLASS, getProperties());
103.1239 +            PropertyValidator.getInstance().assertOneOrLess(Property.COMMENT, getProperties());
103.1240 +            PropertyValidator.getInstance().assertOneOrLess(Property.CREATED, getProperties());
103.1241 +            PropertyValidator.getInstance().assertOneOrLess(Property.DESCRIPTION, getProperties());
103.1242 +            PropertyValidator.getInstance().assertOneOrLess(Property.DTEND, getProperties());
103.1243 +            PropertyValidator.getInstance().assertOneOrLess(Property.DURATION, getProperties());
103.1244 +            PropertyValidator.getInstance().assertOneOrLess(Property.GEO, getProperties());
103.1245 +            PropertyValidator.getInstance().assertOneOrLess(Property.LAST_MODIFIED, getProperties());
103.1246 +            PropertyValidator.getInstance().assertOneOrLess(Property.LOCATION, getProperties());
103.1247 +            PropertyValidator.getInstance().assertOneOrLess(Property.PRIORITY, getProperties());
103.1248 +            PropertyValidator.getInstance().assertOneOrLess(Property.RECURRENCE_ID, getProperties());
103.1249 +            PropertyValidator.getInstance().assertOneOrLess(Property.RESOURCES, getProperties());
103.1250 +            PropertyValidator.getInstance().assertOneOrLess(Property.STATUS, getProperties());
103.1251 +            PropertyValidator.getInstance().assertOneOrLess(Property.TRANSP, getProperties());
103.1252 +            PropertyValidator.getInstance().assertOneOrLess(Property.URL, getProperties());
103.1253 +            
103.1254 +            for (final Iterator i = getAlarms().iterator(); i.hasNext();) {
103.1255 +                final VAlarm alarm = (VAlarm) i.next();
103.1256 +                alarm.validate(Method.REQUEST);
103.1257 +            }
103.1258 +        }
103.1259 +    }
103.1260 +    /**
103.1261 +     * Returns a normalised list of periods representing the consumed time for this event.
103.1262 +     * @param rangeStart the start of a range
103.1263 +     * @param rangeEnd the end of a range
103.1264 +     * @return a normalised list of periods representing consumed time for this event
103.1265 +     * @see VEvent#getConsumedTime(Date, Date, boolean)
103.1266 +     */
103.1267 +    public final PeriodList getConsumedTime(final Date rangeStart,
103.1268 +            final Date rangeEnd) {
103.1269 +        return getConsumedTime(rangeStart, rangeEnd, true);
103.1270 +    }
103.1271 +
103.1272 +    /**
103.1273 +     * Returns a list of periods representing the consumed time for this event in the specified range. Note that the
103.1274 +     * returned list may contain a single period for non-recurring components or multiple periods for recurring
103.1275 +     * components. If no time is consumed by this event an empty list is returned.
103.1276 +     * @param rangeStart the start of the range to check for consumed time
103.1277 +     * @param rangeEnd the end of the range to check for consumed time
103.1278 +     * @param normalise indicate whether the returned list of periods should be normalised
103.1279 +     * @return a list of periods representing consumed time for this event
103.1280 +     */
103.1281 +    public final PeriodList getConsumedTime(final Date rangeStart,
103.1282 +            final Date rangeEnd, final boolean normalise) {
103.1283 +        PeriodList periods = new PeriodList();
103.1284 +        // if component is transparent return empty list..
103.1285 +        if (!Transp.TRANSPARENT.equals(getProperty(Property.TRANSP))) {
103.1286 +
103.1287 +//          try {
103.1288 +          periods = calculateRecurrenceSet(new Period(new DateTime(rangeStart),
103.1289 +                  new DateTime(rangeEnd)));
103.1290 +//          }
103.1291 +//          catch (ValidationException ve) {
103.1292 +//              log.error("Invalid event data", ve);
103.1293 +//              return periods;
103.1294 +//          }
103.1295 +
103.1296 +          // if periods already specified through recurrence, return..
103.1297 +          // ..also normalise before returning.
103.1298 +          if (!periods.isEmpty() && normalise) {
103.1299 +              periods = periods.normalise();
103.1300 +          }
103.1301 +        }
103.1302 +
103.1303 +        return periods;
103.1304 +    }
103.1305 +
103.1306 +    /**
103.1307 +     * Returns a single occurrence of a recurring event.
103.1308 +     * @param date a date on which the occurence should occur
103.1309 +     * @return a single non-recurring event instance for the specified date, or null if the event doesn't
103.1310 +     * occur on the specified date
103.1311 +     * @throws IOException where an error occurs reading data
103.1312 +     * @throws URISyntaxException where an invalid URI is encountered
103.1313 +     * @throws ParseException where an error occurs parsing data
103.1314 +     */
103.1315 +    public final VEvent getOccurrence(final Date date) throws IOException,
103.1316 +        URISyntaxException, ParseException {
103.1317 +        
103.1318 +        final PeriodList consumedTime = getConsumedTime(date, date);
103.1319 +        for (final Iterator i = consumedTime.iterator(); i.hasNext();) {
103.1320 +            final Period p = (Period) i.next();
103.1321 +            if (p.getStart().equals(date)) {
103.1322 +                final VEvent occurrence = (VEvent) this.copy();
103.1323 +                occurrence.getProperties().add(new RecurrenceId(date));
103.1324 +                return occurrence;
103.1325 +            }
103.1326 +        }
103.1327 +        return null;
103.1328 +    }
103.1329 +    
103.1330 +    /**
103.1331 +     * @return the optional access classification property for an event
103.1332 +     */
103.1333 +    public final Clazz getClassification() {
103.1334 +        return (Clazz) getProperty(Property.CLASS);
103.1335 +    }
103.1336 +
103.1337 +    /**
103.1338 +     * @return the optional creation-time property for an event
103.1339 +     */
103.1340 +    public final Created getCreated() {
103.1341 +        return (Created) getProperty(Property.CREATED);
103.1342 +    }
103.1343 +
103.1344 +    /**
103.1345 +     * @return the optional description property for an event
103.1346 +     */
103.1347 +    public final Description getDescription() {
103.1348 +        return (Description) getProperty(Property.DESCRIPTION);
103.1349 +    }
103.1350 +
103.1351 +    /**
103.1352 +     * Convenience method to pull the DTSTART out of the property list.
103.1353 +     * @return The DtStart object representation of the start Date
103.1354 +     */
103.1355 +    public final DtStart getStartDate() {
103.1356 +        return (DtStart) getProperty(Property.DTSTART);
103.1357 +    }
103.1358 +
103.1359 +    /**
103.1360 +     * @return the optional geographic position property for an event
103.1361 +     */
103.1362 +    public final Geo getGeographicPos() {
103.1363 +        return (Geo) getProperty(Property.GEO);
103.1364 +    }
103.1365 +
103.1366 +    /**
103.1367 +     * @return the optional last-modified property for an event
103.1368 +     */
103.1369 +    public final LastModified getLastModified() {
103.1370 +        return (LastModified) getProperty(Property.LAST_MODIFIED);
103.1371 +    }
103.1372 +
103.1373 +    /**
103.1374 +     * @return the optional location property for an event
103.1375 +     */
103.1376 +    public final Location getLocation() {
103.1377 +        return (Location) getProperty(Property.LOCATION);
103.1378 +    }
103.1379 +
103.1380 +    /**
103.1381 +     * @return the optional organizer property for an event
103.1382 +     */
103.1383 +    public final Organizer getOrganizer() {
103.1384 +        return (Organizer) getProperty(Property.ORGANIZER);
103.1385 +    }
103.1386 +
103.1387 +    /**
103.1388 +     * @return the optional priority property for an event
103.1389 +     */
103.1390 +    public final Priority getPriority() {
103.1391 +        return (Priority) getProperty(Property.PRIORITY);
103.1392 +    }
103.1393 +
103.1394 +    /**
103.1395 +     * @return the optional date-stamp property
103.1396 +     */
103.1397 +    public final DtStamp getDateStamp() {
103.1398 +        return (DtStamp) getProperty(Property.DTSTAMP);
103.1399 +    }
103.1400 +
103.1401 +    /**
103.1402 +     * @return the optional sequence number property for an event
103.1403 +     */
103.1404 +    public final Sequence getSequence() {
103.1405 +        return (Sequence) getProperty(Property.SEQUENCE);
103.1406 +    }
103.1407 +
103.1408 +    /**
103.1409 +     * @return the optional status property for an event
103.1410 +     */
103.1411 +    public final Status getStatus() {
103.1412 +        return (Status) getProperty(Property.STATUS);
103.1413 +    }
103.1414 +
103.1415 +    /**
103.1416 +     * @return the optional summary property for an event
103.1417 +     */
103.1418 +    public final Summary getSummary() {
103.1419 +        return (Summary) getProperty(Property.SUMMARY);
103.1420 +    }
103.1421 +
103.1422 +    /**
103.1423 +     * @return the optional time transparency property for an event
103.1424 +     */
103.1425 +    public final Transp getTransparency() {
103.1426 +        return (Transp) getProperty(Property.TRANSP);
103.1427 +    }
103.1428 +
103.1429 +    /**
103.1430 +     * @return the optional URL property for an event
103.1431 +     */
103.1432 +    public final Url getUrl() {
103.1433 +        return (Url) getProperty(Property.URL);
103.1434 +    }
103.1435 +
103.1436 +    /**
103.1437 +     * @return the optional recurrence identifier property for an event
103.1438 +     */
103.1439 +    public final RecurrenceId getRecurrenceId() {
103.1440 +        return (RecurrenceId) getProperty(Property.RECURRENCE_ID);
103.1441 +    }
103.1442 +
103.1443 +    /**
103.1444 +     * Returns the end date of this event. Where an end date is not available it will be derived from the event
103.1445 +     * duration.
103.1446 +     * @return a DtEnd instance, or null if one cannot be derived
103.1447 +     */
103.1448 +    public final DtEnd getEndDate() {
103.1449 +        return getEndDate(true);
103.1450 +    }
103.1451 +
103.1452 +    /**
103.1453 +     * Convenience method to pull the DTEND out of the property list. If DTEND was not specified, use the DTSTART +
103.1454 +     * DURATION to calculate it.
103.1455 +     * @param deriveFromDuration specifies whether to derive an end date from the event duration where an end date is
103.1456 +     * not found
103.1457 +     * @return The end for this VEVENT.
103.1458 +     */
103.1459 +    public final DtEnd getEndDate(final boolean deriveFromDuration) {
103.1460 +        DtEnd dtEnd = (DtEnd) getProperty(Property.DTEND);
103.1461 +        // No DTEND? No problem, we'll use the DURATION.
103.1462 +        if (dtEnd == null && deriveFromDuration && getDuration() != null) {
103.1463 +            final DtStart dtStart = getStartDate();
103.1464 +            final Duration vEventDuration = getDuration();
103.1465 +            dtEnd = new DtEnd(Dates.getInstance(vEventDuration.getDuration()
103.1466 +                    .getTime(dtStart.getDate()), (Value) dtStart
103.1467 +                    .getParameter(Parameter.VALUE)));
103.1468 +            if (dtStart.isUtc()) {
103.1469 +                dtEnd.setUtc(true);
103.1470 +            }
103.1471 +        }
103.1472 +        return dtEnd;
103.1473 +    }
103.1474 +
103.1475 +    /**
103.1476 +     * @return the optional Duration property
103.1477 +     */
103.1478 +    public final Duration getDuration() {
103.1479 +        return (Duration) getProperty(Property.DURATION);
103.1480 +    }
103.1481 +
103.1482 +    /**
103.1483 +     * Returns the UID property of this component if available.
103.1484 +     * @return a Uid instance, or null if no UID property exists
103.1485 +     */
103.1486 +    public final Uid getUid() {
103.1487 +        return (Uid) getProperty(Property.UID);
103.1488 +    }
103.1489 +
103.1490 +    /**
103.1491 +     * {@inheritDoc}
103.1492 +     */
103.1493 +    public boolean equals(final Object arg0) {
103.1494 +        if (arg0 instanceof VEvent) {
103.1495 +            return super.equals(arg0)
103.1496 +                    && ObjectUtils.equals(alarms, ((VEvent) arg0).getAlarms());
103.1497 +        }
103.1498 +        return super.equals(arg0);
103.1499 +    }
103.1500 +
103.1501 +    /**
103.1502 +     * {@inheritDoc}
103.1503 +     */
103.1504 +    public int hashCode() {
103.1505 +        return new HashCodeBuilder().append(getName()).append(getProperties())
103.1506 +                .append(getAlarms()).toHashCode();
103.1507 +    }
103.1508 +
103.1509 +    /**
103.1510 +     * Overrides default copy method to add support for copying alarm sub-components.
103.1511 +     * @return a copy of the instance
103.1512 +     * @throws ParseException where values in the instance cannot be parsed
103.1513 +     * @throws IOException where values in the instance cannot be read
103.1514 +     * @throws URISyntaxException where an invalid URI value is encountered in the instance
103.1515 +     * @see net.fortuna.ical4j.model.Component#copy()
103.1516 +     */
103.1517 +    public Component copy() throws ParseException, IOException,
103.1518 +            URISyntaxException {
103.1519 +        final VEvent copy = (VEvent) super.copy();
103.1520 +        copy.alarms = new ComponentList(alarms);
103.1521 +        return copy;
103.1522 +    }
103.1523 +}
   104.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   104.2 +++ b/src/net/fortuna/ical4j/model/component/VFreeBusy.java	Tue Feb 10 18:12:00 2015 +0100
   104.3 @@ -0,0 +1,809 @@
   104.4 +/**
   104.5 + * Copyright (c) 2012, Ben Fortuna
   104.6 + * All rights reserved.
   104.7 + *
   104.8 + * Redistribution and use in source and binary forms, with or without
   104.9 + * modification, are permitted provided that the following conditions
  104.10 + * are met:
  104.11 + *
  104.12 + *  o Redistributions of source code must retain the above copyright
  104.13 + * notice, this list of conditions and the following disclaimer.
  104.14 + *
  104.15 + *  o Redistributions in binary form must reproduce the above copyright
  104.16 + * notice, this list of conditions and the following disclaimer in the
  104.17 + * documentation and/or other materials provided with the distribution.
  104.18 + *
  104.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  104.20 + * may be used to endorse or promote products derived from this software
  104.21 + * without specific prior written permission.
  104.22 + *
  104.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  104.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  104.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  104.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  104.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  104.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  104.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  104.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  104.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  104.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  104.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  104.34 + */
  104.35 +package net.fortuna.ical4j.model.component;
  104.36 +
  104.37 +import java.util.HashMap;
  104.38 +import java.util.Iterator;
  104.39 +import java.util.Map;
  104.40 +
  104.41 +import net.fortuna.ical4j.model.Component;
  104.42 +import net.fortuna.ical4j.model.ComponentList;
  104.43 +import net.fortuna.ical4j.model.DateRange;
  104.44 +import net.fortuna.ical4j.model.DateTime;
  104.45 +import net.fortuna.ical4j.model.Dur;
  104.46 +import net.fortuna.ical4j.model.Period;
  104.47 +import net.fortuna.ical4j.model.PeriodList;
  104.48 +import net.fortuna.ical4j.model.Property;
  104.49 +import net.fortuna.ical4j.model.PropertyList;
  104.50 +import net.fortuna.ical4j.model.ValidationException;
  104.51 +import net.fortuna.ical4j.model.Validator;
  104.52 +import net.fortuna.ical4j.model.parameter.FbType;
  104.53 +import net.fortuna.ical4j.model.property.Contact;
  104.54 +import net.fortuna.ical4j.model.property.DtEnd;
  104.55 +import net.fortuna.ical4j.model.property.DtStamp;
  104.56 +import net.fortuna.ical4j.model.property.DtStart;
  104.57 +import net.fortuna.ical4j.model.property.Duration;
  104.58 +import net.fortuna.ical4j.model.property.FreeBusy;
  104.59 +import net.fortuna.ical4j.model.property.Method;
  104.60 +import net.fortuna.ical4j.model.property.Organizer;
  104.61 +import net.fortuna.ical4j.model.property.Uid;
  104.62 +import net.fortuna.ical4j.model.property.Url;
  104.63 +import net.fortuna.ical4j.util.CompatibilityHints;
  104.64 +import net.fortuna.ical4j.util.PropertyValidator;
  104.65 +
  104.66 +/**
  104.67 + * $Id$ [Apr 5, 2004]
  104.68 + *
  104.69 + * Defines an iCalendar VFREEBUSY component.
  104.70 + *
  104.71 + * <pre>
  104.72 + *  4.6.4 Free/Busy Component
  104.73 + *
  104.74 + *     Component Name: VFREEBUSY
  104.75 + *
  104.76 + *     Purpose: Provide a grouping of component properties that describe
  104.77 + *     either a request for free/busy time, describe a response to a request
  104.78 + *     for free/busy time or describe a published set of busy time.
  104.79 + *
  104.80 + *     Formal Definition: A &quot;VFREEBUSY&quot; calendar component is defined by the
  104.81 + *     following notation:
  104.82 + *
  104.83 + *       freebusyc  = &quot;BEGIN&quot; &quot;:&quot; &quot;VFREEBUSY&quot; CRLF
  104.84 + *                    fbprop
  104.85 + *                    &quot;END&quot; &quot;:&quot; &quot;VFREEBUSY&quot; CRLF
  104.86 + *
  104.87 + *       fbprop     = *(
  104.88 + *
  104.89 + *                  ; the following are optional,
  104.90 + *                  ; but MUST NOT occur more than once
  104.91 + *
  104.92 + *                  contact / dtstart / dtend / duration / dtstamp /
  104.93 + *                  organizer / uid / url /
  104.94 + *
  104.95 + *                  ; the following are optional,
  104.96 + *                  ; and MAY occur more than once
  104.97 + *
  104.98 + *                  attendee / comment / freebusy / rstatus / x-prop
  104.99 + *
 104.100 + *                  )
 104.101 + *
 104.102 + *     Description: A &quot;VFREEBUSY&quot; calendar component is a grouping of
 104.103 + *     component properties that represents either a request for, a reply to
 104.104 + *     a request for free or busy time information or a published set of
 104.105 + *     busy time information.
 104.106 + *
 104.107 + *     When used to request free/busy time information, the &quot;ATTENDEE&quot;
 104.108 + *     property specifies the calendar users whose free/busy time is being
 104.109 + *     requested; the &quot;ORGANIZER&quot; property specifies the calendar user who
 104.110 + *     is requesting the free/busy time; the &quot;DTSTART&quot; and &quot;DTEND&quot;
 104.111 + *     properties specify the window of time for which the free/busy time is
 104.112 + *     being requested; the &quot;UID&quot; and &quot;DTSTAMP&quot; properties are specified to
 104.113 + *     assist in proper sequencing of multiple free/busy time requests.
 104.114 + *
 104.115 + *     When used to reply to a request for free/busy time, the &quot;ATTENDEE&quot;
 104.116 + *     property specifies the calendar user responding to the free/busy time
 104.117 + *     request; the &quot;ORGANIZER&quot; property specifies the calendar user that
 104.118 + *     originally requested the free/busy time; the &quot;FREEBUSY&quot; property
 104.119 + *     specifies the free/busy time information (if it exists); and the
 104.120 + *     &quot;UID&quot; and &quot;DTSTAMP&quot; properties are specified to assist in proper
 104.121 + *     sequencing of multiple free/busy time replies.
 104.122 + *
 104.123 + *     When used to publish busy time, the &quot;ORGANIZER&quot; property specifies
 104.124 + *     the calendar user associated with the published busy time; the
 104.125 + *     &quot;DTSTART&quot; and &quot;DTEND&quot; properties specify an inclusive time window
 104.126 + *     that surrounds the busy time information; the &quot;FREEBUSY&quot; property
 104.127 + *     specifies the published busy time information; and the &quot;DTSTAMP&quot;
 104.128 + *     property specifies the date/time that iCalendar object was created.
 104.129 + *
 104.130 + *     The &quot;VFREEBUSY&quot; calendar component cannot be nested within another
 104.131 + *     calendar component. Multiple &quot;VFREEBUSY&quot; calendar components can be
 104.132 + *     specified within an iCalendar object. This permits the grouping of
 104.133 + *     Free/Busy information into logical collections, such as monthly
 104.134 + *     groups of busy time information.
 104.135 + *
 104.136 + *     The &quot;VFREEBUSY&quot; calendar component is intended for use in iCalendar
 104.137 + *     object methods involving requests for free time, requests for busy
 104.138 + *     time, requests for both free and busy, and the associated replies.
 104.139 + *
 104.140 + *     Free/Busy information is represented with the &quot;FREEBUSY&quot; property.
 104.141 + *     This property provides a terse representation of time periods. One or
 104.142 + *     more &quot;FREEBUSY&quot; properties can be specified in the &quot;VFREEBUSY&quot;
 104.143 + *     calendar component.
 104.144 + *
 104.145 + *     When present in a &quot;VFREEBUSY&quot; calendar component, the &quot;DTSTART&quot; and
 104.146 + *     &quot;DTEND&quot; properties SHOULD be specified prior to any &quot;FREEBUSY&quot;
 104.147 + *     properties. In a free time request, these properties can be used in
 104.148 + *     combination with the &quot;DURATION&quot; property to represent a request for a
 104.149 + *     duration of free time within a specified window of time.
 104.150 + *
 104.151 + *     The recurrence properties (&quot;RRULE&quot;, &quot;EXRULE&quot;, &quot;RDATE&quot;, &quot;EXDATE&quot;) are
 104.152 + *     not permitted within a &quot;VFREEBUSY&quot; calendar component. Any recurring
 104.153 + *     events are resolved into their individual busy time periods using the
 104.154 + *     &quot;FREEBUSY&quot; property.
 104.155 + *
 104.156 + *     Example: The following is an example of a &quot;VFREEBUSY&quot; calendar
 104.157 + *     component used to request free or busy time information:
 104.158 + *
 104.159 + *       BEGIN:VFREEBUSY
 104.160 + *       ORGANIZER:MAILTO:jane_doe@host1.com
 104.161 + *       ATTENDEE:MAILTO:john_public@host2.com
 104.162 + *       DTSTART:19971015T050000Z
 104.163 + *       DTEND:19971016T050000Z
 104.164 + *       DTSTAMP:19970901T083000Z
 104.165 + *       END:VFREEBUSY
 104.166 + *
 104.167 + *     The following is an example of a &quot;VFREEBUSY&quot; calendar component used
 104.168 + *     to reply to the request with busy time information:
 104.169 + *
 104.170 + *       BEGIN:VFREEBUSY
 104.171 + *       ORGANIZER:MAILTO:jane_doe@host1.com
 104.172 + *       ATTENDEE:MAILTO:john_public@host2.com
 104.173 + *       DTSTAMP:19970901T100000Z
 104.174 + *       FREEBUSY;VALUE=PERIOD:19971015T050000Z/PT8H30M,
 104.175 + *        19971015T160000Z/PT5H30M,19971015T223000Z/PT6H30M
 104.176 + *       URL:http://host2.com/pub/busy/jpublic-01.ifb
 104.177 + *       COMMENT:This iCalendar file contains busy time information for
 104.178 + *         the next three months.
 104.179 + *       END:VFREEBUSY
 104.180 + *
 104.181 + *     The following is an example of a &quot;VFREEBUSY&quot; calendar component used
 104.182 + *     to publish busy time information.
 104.183 + *
 104.184 + *       BEGIN:VFREEBUSY
 104.185 + *       ORGANIZER:jsmith@host.com
 104.186 + *       DTSTART:19980313T141711Z
 104.187 + *       DTEND:19980410T141711Z
 104.188 + *       FREEBUSY:19980314T233000Z/19980315T003000Z
 104.189 + *       FREEBUSY:19980316T153000Z/19980316T163000Z
 104.190 + *       FREEBUSY:19980318T030000Z/19980318T040000Z
 104.191 + *       URL:http://www.host.com/calendar/busytime/jsmith.ifb
 104.192 + *       END:VFREEBUSY
 104.193 + * </pre>
 104.194 + *
 104.195 + * Example 1 - Requesting all busy time slots for a given period:
 104.196 + *
 104.197 + * <pre><code>
 104.198 + * // request all busy times between today and 1 week from now..
 104.199 + * DateTime start = new DateTime();
 104.200 + * DateTime end = new DateTime(start.getTime() + 1000 * 60 * 60 * 24 * 7);
 104.201 + *
 104.202 + * VFreeBusy request = new VFreeBusy(start, end);
 104.203 + *
 104.204 + * VFreeBusy reply = new VFreeBusy(request, calendar.getComponents());
 104.205 + * </code></pre>
 104.206 + *
 104.207 + * Example 2 - Requesting all free time slots for a given period of at least the specified duration:
 104.208 + *
 104.209 + * <pre><code>
 104.210 + * // request all free time between today and 1 week from now of
 104.211 + * // duration 2 hours or more..
 104.212 + * DateTime start = new DateTime();
 104.213 + * DateTime end = new DateTime(start.getTime() + 1000 * 60 * 60 * 24 * 7);
 104.214 + *
 104.215 + * VFreeBusy request = new VFreeBusy(start, end, new Dur(0, 2, 0, 0));
 104.216 + *
 104.217 + * VFreeBusy response = new VFreeBusy(request, myCalendar.getComponents());
 104.218 + * </code></pre>
 104.219 + *
 104.220 + * @author Ben Fortuna
 104.221 + */
 104.222 +public class VFreeBusy extends CalendarComponent {
 104.223 +
 104.224 +    private static final long serialVersionUID = 1046534053331139832L;
 104.225 +
 104.226 +    private final Map methodValidators = new HashMap();
 104.227 +    {
 104.228 +        methodValidators.put(Method.PUBLISH, new PublishValidator());
 104.229 +        methodValidators.put(Method.REPLY, new ReplyValidator());
 104.230 +        methodValidators.put(Method.REQUEST, new RequestValidator());
 104.231 +    }
 104.232 +    
 104.233 +    /**
 104.234 +     * Default constructor.
 104.235 +     */
 104.236 +    public VFreeBusy() {
 104.237 +        super(VFREEBUSY);
 104.238 +        getProperties().add(new DtStamp());
 104.239 +    }
 104.240 +
 104.241 +    /**
 104.242 +     * Constructor.
 104.243 +     * @param properties a list of properties
 104.244 +     */
 104.245 +    public VFreeBusy(final PropertyList properties) {
 104.246 +        super(VFREEBUSY, properties);
 104.247 +    }
 104.248 +
 104.249 +    /**
 104.250 +     * Constructs a new VFreeBusy instance with the specified start and end boundaries. This constructor should be used
 104.251 +     * for requesting busy time for a specified period.
 104.252 +     * @param start the starting boundary for the VFreeBusy
 104.253 +     * @param end the ending boundary for the VFreeBusy
 104.254 +     */
 104.255 +    public VFreeBusy(final DateTime start, final DateTime end) {
 104.256 +        this();
 104.257 +        
 104.258 +        // 4.8.2.4 Date/Time Start:
 104.259 +        //
 104.260 +        //    Within the "VFREEBUSY" calendar component, this property defines the
 104.261 +        //    start date and time for the free or busy time information. The time
 104.262 +        //    MUST be specified in UTC time.
 104.263 +        getProperties().add(new DtStart(start, true));
 104.264 +        
 104.265 +        // 4.8.2.2 Date/Time End
 104.266 +        //
 104.267 +        //    Within the "VFREEBUSY" calendar component, this property defines the
 104.268 +        //    end date and time for the free or busy time information. The time
 104.269 +        //    MUST be specified in the UTC time format. The value MUST be later in
 104.270 +        //    time than the value of the "DTSTART" property.
 104.271 +        getProperties().add(new DtEnd(end, true));
 104.272 +    }
 104.273 +
 104.274 +    /**
 104.275 +     * Constructs a new VFreeBusy instance with the specified start and end boundaries. This constructor should be used
 104.276 +     * for requesting free time for a specified duration in given period defined by the start date and end date.
 104.277 +     * @param start the starting boundary for the VFreeBusy
 104.278 +     * @param end the ending boundary for the VFreeBusy
 104.279 +     * @param duration the length of the period being requested
 104.280 +     */
 104.281 +    public VFreeBusy(final DateTime start, final DateTime end, final Dur duration) {
 104.282 +        this();
 104.283 +        
 104.284 +        // 4.8.2.4 Date/Time Start:
 104.285 +        //
 104.286 +        //    Within the "VFREEBUSY" calendar component, this property defines the
 104.287 +        //    start date and time for the free or busy time information. The time
 104.288 +        //    MUST be specified in UTC time.
 104.289 +        getProperties().add(new DtStart(start, true));
 104.290 +        
 104.291 +        // 4.8.2.2 Date/Time End
 104.292 +        //
 104.293 +        //    Within the "VFREEBUSY" calendar component, this property defines the
 104.294 +        //    end date and time for the free or busy time information. The time
 104.295 +        //    MUST be specified in the UTC time format. The value MUST be later in
 104.296 +        //    time than the value of the "DTSTART" property.
 104.297 +        getProperties().add(new DtEnd(end, true));
 104.298 +
 104.299 +        getProperties().add(new Duration(duration));
 104.300 +    }
 104.301 +
 104.302 +    /**
 104.303 +     * Constructs a new VFreeBusy instance representing a reply to the specified VFREEBUSY request according to the
 104.304 +     * specified list of components.
 104.305 +     * If the request argument has its duration set, then the result
 104.306 +     * represents a list of <em>free</em> times (that is, parameter FBTYPE
 104.307 +     * is set to FbType.FREE).
 104.308 +     * If the request argument does not have its duration set, then the result
 104.309 +     * represents a list of <em>busy</em> times.
 104.310 +     * @param request a VFREEBUSY request
 104.311 +     * @param components a component list used to initialise busy time
 104.312 +     * @throws ValidationException 
 104.313 +     */
 104.314 +    public VFreeBusy(final VFreeBusy request, final ComponentList components) {
 104.315 +        this();
 104.316 +        
 104.317 +        final DtStart start = (DtStart) request.getProperty(Property.DTSTART);
 104.318 +        
 104.319 +        final DtEnd end = (DtEnd) request.getProperty(Property.DTEND);
 104.320 +        
 104.321 +        final Duration duration = (Duration) request.getProperty(Property.DURATION);
 104.322 +        
 104.323 +        // 4.8.2.4 Date/Time Start:
 104.324 +        //
 104.325 +        //    Within the "VFREEBUSY" calendar component, this property defines the
 104.326 +        //    start date and time for the free or busy time information. The time
 104.327 +        //    MUST be specified in UTC time.
 104.328 +        getProperties().add(new DtStart(start.getDate(), true));
 104.329 +        
 104.330 +        // 4.8.2.2 Date/Time End
 104.331 +        //
 104.332 +        //    Within the "VFREEBUSY" calendar component, this property defines the
 104.333 +        //    end date and time for the free or busy time information. The time
 104.334 +        //    MUST be specified in the UTC time format. The value MUST be later in
 104.335 +        //    time than the value of the "DTSTART" property.
 104.336 +        getProperties().add(new DtEnd(end.getDate(), true));
 104.337 +        
 104.338 +        if (duration != null) {
 104.339 +            getProperties().add(new Duration(duration.getDuration()));
 104.340 +            // Initialise with all free time of at least the specified duration..
 104.341 +            final DateTime freeStart = new DateTime(start.getDate());
 104.342 +            final DateTime freeEnd = new DateTime(end.getDate());
 104.343 +            final FreeBusy fb = new FreeTimeBuilder().start(freeStart)
 104.344 +                .end(freeEnd)
 104.345 +                .duration(duration.getDuration())
 104.346 +                .components(components)
 104.347 +                .build();
 104.348 +            if (fb != null && !fb.getPeriods().isEmpty()) {
 104.349 +                getProperties().add(fb);
 104.350 +            }
 104.351 +        }
 104.352 +        else {
 104.353 +            // initialise with all busy time for the specified period..
 104.354 +            final DateTime busyStart = new DateTime(start.getDate());
 104.355 +            final DateTime busyEnd = new DateTime(end.getDate());
 104.356 +            final FreeBusy fb = new BusyTimeBuilder().start(busyStart)
 104.357 +                .end(busyEnd)
 104.358 +                .components(components)
 104.359 +                .build();
 104.360 +            if (fb != null && !fb.getPeriods().isEmpty()) {
 104.361 +                getProperties().add(fb);
 104.362 +            }
 104.363 +        }
 104.364 +    }
 104.365 +
 104.366 +    /**
 104.367 +     * Create a FREEBUSY property representing the busy time for the specified component list. If the component is not
 104.368 +     * applicable to FREEBUSY time, or if the component is outside the bounds of the start and end dates, null is
 104.369 +     * returned. If no valid busy periods are identified in the component an empty FREEBUSY property is returned (i.e.
 104.370 +     * empty period list).
 104.371 +     */
 104.372 +    private class BusyTimeBuilder {
 104.373 +        
 104.374 +        private DateTime start;
 104.375 +        
 104.376 +        private DateTime end;
 104.377 +        
 104.378 +        private ComponentList components;
 104.379 +        
 104.380 +        public BusyTimeBuilder start(DateTime start) {
 104.381 +            this.start = start;
 104.382 +            return this;
 104.383 +        }
 104.384 +        
 104.385 +        public BusyTimeBuilder end(DateTime end) {
 104.386 +            this.end = end;
 104.387 +            return this;
 104.388 +        }
 104.389 +        
 104.390 +        public BusyTimeBuilder components(ComponentList components) {
 104.391 +            this.components = components;
 104.392 +            return this;
 104.393 +        }
 104.394 +        
 104.395 +        public FreeBusy build() {
 104.396 +            final PeriodList periods = getConsumedTime(components, start, end);
 104.397 +            final DateRange range = new DateRange(start, end);
 104.398 +            // periods must be in UTC time for freebusy..
 104.399 +            periods.setUtc(true);
 104.400 +            for (final Iterator i = periods.iterator(); i.hasNext();) {
 104.401 +                final Period period = (Period) i.next();
 104.402 +                // check if period outside bounds..
 104.403 +                if (!range.intersects(period)) {
 104.404 +                    periods.remove(period);
 104.405 +                }
 104.406 +            }
 104.407 +            return new FreeBusy(periods);
 104.408 +        }
 104.409 +    }
 104.410 +
 104.411 +    /**
 104.412 +     * Create a FREEBUSY property representing the free time available of the specified duration for the given list of
 104.413 +     * components. component. If the component is not applicable to FREEBUSY time, or if the component is outside the
 104.414 +     * bounds of the start and end dates, null is returned. If no valid busy periods are identified in the component an
 104.415 +     * empty FREEBUSY property is returned (i.e. empty period list).
 104.416 +     */
 104.417 +    private class FreeTimeBuilder {
 104.418 +        
 104.419 +        private DateTime start;
 104.420 +        
 104.421 +        private DateTime end;
 104.422 +        
 104.423 +        private Dur duration;
 104.424 +        
 104.425 +        private ComponentList components;
 104.426 +        
 104.427 +        public FreeTimeBuilder start(DateTime start) {
 104.428 +            this.start = start;
 104.429 +            return this;
 104.430 +        }
 104.431 +        
 104.432 +        public FreeTimeBuilder end(DateTime end) {
 104.433 +            this.end = end;
 104.434 +            return this;
 104.435 +        }
 104.436 +        
 104.437 +        private FreeTimeBuilder duration(Dur duration) {
 104.438 +            this.duration = duration;
 104.439 +            return this;
 104.440 +        }
 104.441 +        
 104.442 +        public FreeTimeBuilder components(ComponentList components) {
 104.443 +            this.components = components;
 104.444 +            return this;
 104.445 +        }
 104.446 +        
 104.447 +        public FreeBusy build() {
 104.448 +            final FreeBusy fb = new FreeBusy();
 104.449 +            fb.getParameters().add(FbType.FREE);
 104.450 +            final PeriodList periods = getConsumedTime(components, start, end);
 104.451 +            final DateRange range = new DateRange(start, end);
 104.452 +            // Add final consumed time to avoid special-case end-of-list processing
 104.453 +            periods.add(new Period(end, end));
 104.454 +            DateTime lastPeriodEnd = new DateTime(start);
 104.455 +            // where no time is consumed set the last period end as the range start..
 104.456 +            for (final Iterator i = periods.iterator(); i.hasNext();) {
 104.457 +                final Period period = (Period) i.next();
 104.458 +                
 104.459 +                // check if period outside bounds.. or period intersects with the end of the range..
 104.460 +                if (range.contains(period) || 
 104.461 +                		(range.intersects(period) && period.getStart().after(range.getRangeStart()))) {
 104.462 +                    
 104.463 +                    // calculate duration between this period start and last period end..
 104.464 +                    final Duration freeDuration = new Duration(lastPeriodEnd, period.getStart());
 104.465 +                    if (freeDuration.getDuration().compareTo(duration) >= 0) {
 104.466 +                        fb.getPeriods().add(new Period(lastPeriodEnd, freeDuration.getDuration()));
 104.467 +                    }
 104.468 +                }
 104.469 +                
 104.470 +                if (period.getEnd().after(lastPeriodEnd)) {
 104.471 +                    lastPeriodEnd = period.getEnd();
 104.472 +                }
 104.473 +            }
 104.474 +            return fb;
 104.475 +        }
 104.476 +    }
 104.477 +
 104.478 +    /**
 104.479 +     * Creates a list of periods representing the time consumed by the specified list of components.
 104.480 +     * @param components
 104.481 +     * @return
 104.482 +     */
 104.483 +    private PeriodList getConsumedTime(final ComponentList components, final DateTime rangeStart,
 104.484 +            final DateTime rangeEnd) {
 104.485 +        
 104.486 +        final PeriodList periods = new PeriodList();
 104.487 +        // only events consume time..
 104.488 +        for (final Iterator i = components.getComponents(Component.VEVENT).iterator(); i.hasNext();) {
 104.489 +            final Component component = (Component) i.next();
 104.490 +            periods.addAll(((VEvent) component).getConsumedTime(rangeStart, rangeEnd, false));
 104.491 +        }
 104.492 +        return periods.normalise();
 104.493 +    }
 104.494 +
 104.495 +    /**
 104.496 +     * {@inheritDoc}
 104.497 +     */
 104.498 +    public final void validate(final boolean recurse) throws ValidationException {
 104.499 +
 104.500 +        if (!CompatibilityHints.isHintEnabled(CompatibilityHints.KEY_RELAXED_VALIDATION)) {
 104.501 +
 104.502 +            // From "4.8.4.7 Unique Identifier":
 104.503 +            // Conformance: The property MUST be specified in the "VEVENT", "VTODO",
 104.504 +            // "VJOURNAL" or "VFREEBUSY" calendar components.
 104.505 +            PropertyValidator.getInstance().assertOne(Property.UID,
 104.506 +                    getProperties());
 104.507 +
 104.508 +            // From "4.8.7.2 Date/Time Stamp":
 104.509 +            // Conformance: This property MUST be included in the "VEVENT", "VTODO",
 104.510 +            // "VJOURNAL" or "VFREEBUSY" calendar components.
 104.511 +            PropertyValidator.getInstance().assertOne(Property.DTSTAMP,
 104.512 +                    getProperties());
 104.513 +        }
 104.514 +
 104.515 +        final PropertyValidator validator = PropertyValidator.getInstance();
 104.516 +
 104.517 +        /*
 104.518 +         * ; the following are optional, ; but MUST NOT occur more than once contact / dtstart / dtend / duration /
 104.519 +         * dtstamp / organizer / uid / url /
 104.520 +         */
 104.521 +        validator.assertOneOrLess(Property.CONTACT, getProperties());
 104.522 +        validator.assertOneOrLess(Property.DTSTART, getProperties());
 104.523 +        validator.assertOneOrLess(Property.DTEND, getProperties());
 104.524 +        validator.assertOneOrLess(Property.DURATION, getProperties());
 104.525 +        validator.assertOneOrLess(Property.DTSTAMP, getProperties());
 104.526 +        validator.assertOneOrLess(Property.ORGANIZER, getProperties());
 104.527 +        validator.assertOneOrLess(Property.UID, getProperties());
 104.528 +        validator.assertOneOrLess(Property.URL, getProperties());
 104.529 +
 104.530 +        /*
 104.531 +         * ; the following are optional, ; and MAY occur more than once attendee / comment / freebusy / rstatus / x-prop
 104.532 +         */
 104.533 +
 104.534 +        /*
 104.535 +         * The recurrence properties ("RRULE", "EXRULE", "RDATE", "EXDATE") are not permitted within a "VFREEBUSY"
 104.536 +         * calendar component. Any recurring events are resolved into their individual busy time periods using the
 104.537 +         * "FREEBUSY" property.
 104.538 +         */
 104.539 +        validator.assertNone(Property.RRULE, getProperties());
 104.540 +        validator.assertNone(Property.EXRULE, getProperties());
 104.541 +        validator.assertNone(Property.RDATE, getProperties());
 104.542 +        validator.assertNone(Property.EXDATE, getProperties());
 104.543 +
 104.544 +        // DtEnd value must be later in time that DtStart..
 104.545 +        final DtStart dtStart = (DtStart) getProperty(Property.DTSTART);
 104.546 +        
 104.547 +        // 4.8.2.4 Date/Time Start:
 104.548 +        //
 104.549 +        //    Within the "VFREEBUSY" calendar component, this property defines the
 104.550 +        //    start date and time for the free or busy time information. The time
 104.551 +        //    MUST be specified in UTC time.
 104.552 +        if (dtStart != null && !dtStart.isUtc()) {
 104.553 +            throw new ValidationException("DTSTART must be specified in UTC time");
 104.554 +        }
 104.555 +        
 104.556 +        final DtEnd dtEnd = (DtEnd) getProperty(Property.DTEND);
 104.557 +        
 104.558 +        // 4.8.2.2 Date/Time End
 104.559 +        //
 104.560 +        //    Within the "VFREEBUSY" calendar component, this property defines the
 104.561 +        //    end date and time for the free or busy time information. The time
 104.562 +        //    MUST be specified in the UTC time format. The value MUST be later in
 104.563 +        //    time than the value of the "DTSTART" property.
 104.564 +        if (dtEnd != null && !dtEnd.isUtc()) {
 104.565 +            throw new ValidationException("DTEND must be specified in UTC time");
 104.566 +        }
 104.567 +        
 104.568 +        if (dtStart != null && dtEnd != null
 104.569 +                && !dtStart.getDate().before(dtEnd.getDate())) {
 104.570 +            throw new ValidationException("Property [" + Property.DTEND
 104.571 +                    + "] must be later in time than [" + Property.DTSTART + "]");
 104.572 +        }
 104.573 +
 104.574 +        if (recurse) {
 104.575 +            validateProperties();
 104.576 +        }
 104.577 +    }
 104.578 +
 104.579 +    /**
 104.580 +     * {@inheritDoc}
 104.581 +     */
 104.582 +    protected Validator getValidator(Method method) {
 104.583 +        return (Validator) methodValidators.get(method);
 104.584 +    }
 104.585 +
 104.586 +    /**
 104.587 +     * <pre>
 104.588 +     * Component/Property  Presence
 104.589 +     * ------------------- ----------------------------------------------
 104.590 +     * METHOD              1       MUST be "PUBLISH"
 104.591 +     * 
 104.592 +     * VFREEBUSY           1+
 104.593 +     *     DTSTAMP         1
 104.594 +     *     DTSTART         1       DateTime values must be in UTC
 104.595 +     *     DTEND           1       DateTime values must be in UTC
 104.596 +     *     FREEBUSY        1+      MUST be BUSYTIME. Multiple instances are
 104.597 +     *                             allowed. Multiple instances must be sorted
 104.598 +     *                             in ascending order
 104.599 +     *     ORGANIZER       1       MUST contain the address of originator of
 104.600 +     *                             busy time data.
 104.601 +     *     UID             1
 104.602 +     *     COMMENT         0 or 1
 104.603 +     *     CONTACT         0+
 104.604 +     *     X-PROPERTY      0+
 104.605 +     *     URL             0 or 1  Specifies busy time URL
 104.606 +     * 
 104.607 +     *     ATTENDEE        0
 104.608 +     *     DURATION        0
 104.609 +     *     REQUEST-STATUS  0
 104.610 +     * 
 104.611 +     * X-COMPONENT         0+
 104.612 +     * 
 104.613 +     * VEVENT              0
 104.614 +     * VTODO               0
 104.615 +     * VJOURNAL            0
 104.616 +     * VTIMEZONE           0
 104.617 +     * VALARM              0
 104.618 +     * </pre>
 104.619 +     * 
 104.620 +     */
 104.621 +    private class PublishValidator implements Validator {
 104.622 +        
 104.623 +		private static final long serialVersionUID = 1L;
 104.624 + 
 104.625 +        public void validate() throws ValidationException {
 104.626 +            PropertyValidator.getInstance().assertOneOrMore(Property.FREEBUSY, getProperties());
 104.627 +            
 104.628 +            PropertyValidator.getInstance().assertOne(Property.DTSTAMP, getProperties());
 104.629 +            PropertyValidator.getInstance().assertOne(Property.DTSTART, getProperties());
 104.630 +            PropertyValidator.getInstance().assertOne(Property.DTEND, getProperties());
 104.631 +            PropertyValidator.getInstance().assertOne(Property.ORGANIZER, getProperties());
 104.632 +            PropertyValidator.getInstance().assertOne(Property.UID, getProperties());
 104.633 +            
 104.634 +            PropertyValidator.getInstance().assertOneOrLess(Property.COMMENT, getProperties());
 104.635 +            PropertyValidator.getInstance().assertOneOrLess(Property.URL, getProperties());
 104.636 +            
 104.637 +            PropertyValidator.getInstance().assertNone(Property.ATTENDEE, getProperties());
 104.638 +            PropertyValidator.getInstance().assertNone(Property.DURATION, getProperties());
 104.639 +            PropertyValidator.getInstance().assertNone(Property.REQUEST_STATUS, getProperties());
 104.640 +        }
 104.641 +    }
 104.642 +    
 104.643 +    /**
 104.644 +     * <pre>
 104.645 +     * Component/Property  Presence
 104.646 +     * ------------------- ----------------------------------------------
 104.647 +     * METHOD              1      MUST be "REPLY"
 104.648 +     * 
 104.649 +     * VFREEBUSY           1
 104.650 +     *     ATTENDEE        1      (address of recipient replying)
 104.651 +     *     DTSTAMP         1
 104.652 +     *     DTEND           1      DateTime values must be in UTC
 104.653 +     *     DTSTART         1      DateTime values must be in UTC
 104.654 +     *     FREEBUSY        0+      (values MUST all be of the same data
 104.655 +     *                             type. Multiple instances are allowed.
 104.656 +     *                             Multiple instances MUST be sorted in
 104.657 +     *                             ascending order. Values MAY NOT overlap)
 104.658 +     *     ORGANIZER       1       MUST be the request originator's address
 104.659 +     *     UID             1
 104.660 +     * 
 104.661 +     *     COMMENT         0 or 1
 104.662 +     *     CONTACT         0+
 104.663 +     *     REQUEST-STATUS  0+
 104.664 +     *     URL             0 or 1  (specifies busy time URL)
 104.665 +     *     X-PROPERTY      0+
 104.666 +     *     DURATION        0
 104.667 +     *     SEQUENCE        0
 104.668 +     * 
 104.669 +     * X-COMPONENT         0+
 104.670 +     * VALARM              0
 104.671 +     * VEVENT              0
 104.672 +     * VTODO               0
 104.673 +     * VJOURNAL            0
 104.674 +     * VTIMEZONE           0
 104.675 +     * </pre>
 104.676 +     * 
 104.677 +     */
 104.678 +    private class ReplyValidator implements Validator {
 104.679 +        
 104.680 +		private static final long serialVersionUID = 1L;
 104.681 +
 104.682 +        public void validate() throws ValidationException {
 104.683 +
 104.684 +            // FREEBUSY is 1+ in RFC2446 but 0+ in Calsify
 104.685 +            
 104.686 +            PropertyValidator.getInstance().assertOne(Property.ATTENDEE, getProperties());
 104.687 +            PropertyValidator.getInstance().assertOne(Property.DTSTAMP, getProperties());
 104.688 +            PropertyValidator.getInstance().assertOne(Property.DTEND, getProperties());
 104.689 +            PropertyValidator.getInstance().assertOne(Property.DTSTART, getProperties());
 104.690 +            PropertyValidator.getInstance().assertOne(Property.ORGANIZER, getProperties());
 104.691 +            PropertyValidator.getInstance().assertOne(Property.UID, getProperties());
 104.692 +            
 104.693 +            PropertyValidator.getInstance().assertOneOrLess(Property.COMMENT, getProperties());
 104.694 +            PropertyValidator.getInstance().assertOneOrLess(Property.URL, getProperties());
 104.695 +            
 104.696 +            PropertyValidator.getInstance().assertNone(Property.DURATION, getProperties());
 104.697 +            PropertyValidator.getInstance().assertNone(Property.SEQUENCE, getProperties());
 104.698 +        }
 104.699 +    }
 104.700 +    
 104.701 +    /**
 104.702 +     * METHOD:REQUEST Validator.
 104.703 +     * 
 104.704 +     * <pre>
 104.705 +     * Component/Property  Presence
 104.706 +     * ------------------- ----------------------------------------------
 104.707 +     * METHOD              1      MUST be "REQUEST"
 104.708 +     * 
 104.709 +     * VFREEBUSY           1
 104.710 +     *     ATTENDEE        1+     contain the address of the calendar store
 104.711 +     *     DTEND           1      DateTime values must be in UTC
 104.712 +     *     DTSTAMP         1
 104.713 +     *     DTSTART         1      DateTime values must be in UTC
 104.714 +     *     ORGANIZER       1      MUST be the request originator's address
 104.715 +     *     UID             1
 104.716 +     *     COMMENT         0 or 1
 104.717 +     *     CONTACT         0+
 104.718 +     *     X-PROPERTY      0+
 104.719 +     * 
 104.720 +     *     FREEBUSY        0
 104.721 +     *     DURATION        0
 104.722 +     *     REQUEST-STATUS  0
 104.723 +     *     URL             0
 104.724 +     * 
 104.725 +     * X-COMPONENT         0+
 104.726 +     * VALARM              0
 104.727 +     * VEVENT              0
 104.728 +     * VTODO               0
 104.729 +     * VJOURNAL            0
 104.730 +     * VTIMEZONE           0
 104.731 +     * </pre>
 104.732 +     * 
 104.733 +     */
 104.734 +    private class RequestValidator implements Validator {
 104.735 +        
 104.736 +		private static final long serialVersionUID = 1L;
 104.737 +
 104.738 +        public void validate() throws ValidationException {
 104.739 +            PropertyValidator.getInstance().assertOneOrMore(Property.ATTENDEE, getProperties());
 104.740 +            
 104.741 +            PropertyValidator.getInstance().assertOne(Property.DTEND, getProperties());
 104.742 +            PropertyValidator.getInstance().assertOne(Property.DTSTAMP, getProperties());
 104.743 +            PropertyValidator.getInstance().assertOne(Property.DTSTART, getProperties());
 104.744 +            PropertyValidator.getInstance().assertOne(Property.ORGANIZER, getProperties());
 104.745 +            PropertyValidator.getInstance().assertOne(Property.UID, getProperties());
 104.746 +            
 104.747 +            PropertyValidator.getInstance().assertOneOrLess(Property.COMMENT, getProperties());
 104.748 +            
 104.749 +            PropertyValidator.getInstance().assertNone(Property.FREEBUSY, getProperties());
 104.750 +            PropertyValidator.getInstance().assertNone(Property.DURATION, getProperties());
 104.751 +            PropertyValidator.getInstance().assertNone(Property.REQUEST_STATUS, getProperties());
 104.752 +            PropertyValidator.getInstance().assertNone(Property.URL, getProperties());
 104.753 +        }
 104.754 +    }
 104.755 +    
 104.756 +    /**
 104.757 +     * @return the CONTACT property or null if not specified
 104.758 +     */
 104.759 +    public final Contact getContact() {
 104.760 +        return (Contact) getProperty(Property.CONTACT);
 104.761 +    }
 104.762 +
 104.763 +    /**
 104.764 +     * @return the DTSTART propery or null if not specified
 104.765 +     */
 104.766 +    public final DtStart getStartDate() {
 104.767 +        return (DtStart) getProperty(Property.DTSTART);
 104.768 +    }
 104.769 +
 104.770 +    /**
 104.771 +     * @return the DTEND property or null if not specified
 104.772 +     */
 104.773 +    public final DtEnd getEndDate() {
 104.774 +        return (DtEnd) getProperty(Property.DTEND);
 104.775 +    }
 104.776 +
 104.777 +    /**
 104.778 +     * @return the DURATION property or null if not specified
 104.779 +     */
 104.780 +    public final Duration getDuration() {
 104.781 +        return (Duration) getProperty(Property.DURATION);
 104.782 +    }
 104.783 +
 104.784 +    /**
 104.785 +     * @return the DTSTAMP property or null if not specified
 104.786 +     */
 104.787 +    public final DtStamp getDateStamp() {
 104.788 +        return (DtStamp) getProperty(Property.DTSTAMP);
 104.789 +    }
 104.790 +
 104.791 +    /**
 104.792 +     * @return the ORGANIZER property or null if not specified
 104.793 +     */
 104.794 +    public final Organizer getOrganizer() {
 104.795 +        return (Organizer) getProperty(Property.ORGANIZER);
 104.796 +    }
 104.797 +
 104.798 +    /**
 104.799 +     * @return the URL property or null if not specified
 104.800 +     */
 104.801 +    public final Url getUrl() {
 104.802 +        return (Url) getProperty(Property.URL);
 104.803 +    }
 104.804 +
 104.805 +    /**
 104.806 +     * Returns the UID property of this component if available.
 104.807 +     * @return a Uid instance, or null if no UID property exists
 104.808 +     */
 104.809 +    public final Uid getUid() {
 104.810 +        return (Uid) getProperty(Property.UID);
 104.811 +    }
 104.812 +}
   105.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   105.2 +++ b/src/net/fortuna/ical4j/model/component/VJournal.java	Tue Feb 10 18:12:00 2015 +0100
   105.3 @@ -0,0 +1,543 @@
   105.4 +/**
   105.5 + * Copyright (c) 2012, Ben Fortuna
   105.6 + * All rights reserved.
   105.7 + *
   105.8 + * Redistribution and use in source and binary forms, with or without
   105.9 + * modification, are permitted provided that the following conditions
  105.10 + * are met:
  105.11 + *
  105.12 + *  o Redistributions of source code must retain the above copyright
  105.13 + * notice, this list of conditions and the following disclaimer.
  105.14 + *
  105.15 + *  o Redistributions in binary form must reproduce the above copyright
  105.16 + * notice, this list of conditions and the following disclaimer in the
  105.17 + * documentation and/or other materials provided with the distribution.
  105.18 + *
  105.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  105.20 + * may be used to endorse or promote products derived from this software
  105.21 + * without specific prior written permission.
  105.22 + *
  105.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  105.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  105.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  105.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  105.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  105.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  105.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  105.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  105.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  105.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  105.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  105.34 + */
  105.35 +package net.fortuna.ical4j.model.component;
  105.36 +
  105.37 +import java.util.HashMap;
  105.38 +import java.util.Map;
  105.39 +
  105.40 +import net.fortuna.ical4j.model.Date;
  105.41 +import net.fortuna.ical4j.model.Property;
  105.42 +import net.fortuna.ical4j.model.PropertyList;
  105.43 +import net.fortuna.ical4j.model.ValidationException;
  105.44 +import net.fortuna.ical4j.model.Validator;
  105.45 +import net.fortuna.ical4j.model.property.Clazz;
  105.46 +import net.fortuna.ical4j.model.property.Created;
  105.47 +import net.fortuna.ical4j.model.property.Description;
  105.48 +import net.fortuna.ical4j.model.property.DtStamp;
  105.49 +import net.fortuna.ical4j.model.property.DtStart;
  105.50 +import net.fortuna.ical4j.model.property.LastModified;
  105.51 +import net.fortuna.ical4j.model.property.Method;
  105.52 +import net.fortuna.ical4j.model.property.Organizer;
  105.53 +import net.fortuna.ical4j.model.property.RecurrenceId;
  105.54 +import net.fortuna.ical4j.model.property.Sequence;
  105.55 +import net.fortuna.ical4j.model.property.Status;
  105.56 +import net.fortuna.ical4j.model.property.Summary;
  105.57 +import net.fortuna.ical4j.model.property.Uid;
  105.58 +import net.fortuna.ical4j.model.property.Url;
  105.59 +import net.fortuna.ical4j.util.CompatibilityHints;
  105.60 +import net.fortuna.ical4j.util.PropertyValidator;
  105.61 +
  105.62 +/**
  105.63 + * $Id$ [Apr 5, 2004]
  105.64 + *
  105.65 + * Defines an iCalendar VJOURNAL component.
  105.66 + *
  105.67 + * <pre>
  105.68 + *    4.6.3 Journal Component
  105.69 + *
  105.70 + *       Component Name: VJOURNAL
  105.71 + *
  105.72 + *       Purpose: Provide a grouping of component properties that describe a
  105.73 + *       journal entry.
  105.74 + *
  105.75 + *       Formal Definition: A &quot;VJOURNAL&quot; calendar component is defined by the
  105.76 + *       following notation:
  105.77 + *
  105.78 + *         journalc   = &quot;BEGIN&quot; &quot;:&quot; &quot;VJOURNAL&quot; CRLF
  105.79 + *                      jourprop
  105.80 + *                      &quot;END&quot; &quot;:&quot; &quot;VJOURNAL&quot; CRLF
  105.81 + *
  105.82 + *         jourprop   = *(
  105.83 + *
  105.84 + *                    ; the following are optional,
  105.85 + *                    ; but MUST NOT occur more than once
  105.86 + *
  105.87 + *                    class / created / description / dtstart / dtstamp /
  105.88 + *                    last-mod / organizer / recurid / seq / status /
  105.89 + *                    summary / uid / url /
  105.90 + *
  105.91 + *                    ; the following are optional,
  105.92 + *                    ; and MAY occur more than once
  105.93 + *
  105.94 + *                    attach / attendee / categories / comment /
  105.95 + *                    contact / exdate / exrule / related / rdate /
  105.96 + *                    rrule / rstatus / x-prop
  105.97 + *
  105.98 + *                    )
  105.99 + * </pre>
 105.100 + *
 105.101 + * Example 1 - Creating a journal associated with an event:
 105.102 + *
 105.103 + * <pre><code>
 105.104 + * DtStart meetingDate = (DtStart) meeting.getProperties().getProperty(
 105.105 + *         Property.DTSTART);
 105.106 + *
 105.107 + * VJournal minutes = new VJournal(meetingDate.getTime(),
 105.108 + *         &quot;Progress Meeting - Minutes&quot;);
 105.109 + *
 105.110 + * // add timezone information..
 105.111 + * TzId tzParam = meetingDate.getParameters().getParmaeter(Parameter.TZID);
 105.112 + * minutes.getProperties().getProperty(Property.DTSTART).getParameters().add(
 105.113 + *         tzParam);
 105.114 + *
 105.115 + * // add description..
 105.116 + * minutes.getProperties().add(new Description(&quot;1. Agenda.., 2. Action Items..&quot;));
 105.117 + * </code></pre>
 105.118 + *
 105.119 + * @author Ben Fortuna
 105.120 + */
 105.121 +public class VJournal extends CalendarComponent {
 105.122 +
 105.123 +    private static final long serialVersionUID = -7635140949183238830L;
 105.124 +
 105.125 +    private final Map methodValidators = new HashMap();
 105.126 +    {
 105.127 +        methodValidators.put(Method.ADD, new AddValidator());
 105.128 +        methodValidators.put(Method.CANCEL, new CancelValidator());
 105.129 +        methodValidators.put(Method.PUBLISH, new PublishValidator());
 105.130 +    }
 105.131 +    
 105.132 +    /**
 105.133 +     * Default constructor.
 105.134 +     */
 105.135 +    public VJournal() {
 105.136 +        super(VJOURNAL);
 105.137 +        getProperties().add(new DtStamp());
 105.138 +    }
 105.139 +
 105.140 +    /**
 105.141 +     * Constructor.
 105.142 +     * @param properties a list of properties
 105.143 +     */
 105.144 +    public VJournal(final PropertyList properties) {
 105.145 +        super(VJOURNAL, properties);
 105.146 +    }
 105.147 +
 105.148 +    /**
 105.149 +     * Constructs a new VJOURNAL instance associated with the specified time with the specified summary.
 105.150 +     * @param start the date the journal entry is associated with
 105.151 +     * @param summary the journal summary
 105.152 +     */
 105.153 +    public VJournal(final Date start, final String summary) {
 105.154 +        this();
 105.155 +        getProperties().add(new DtStart(start));
 105.156 +        getProperties().add(new Summary(summary));
 105.157 +    }
 105.158 +
 105.159 +    /**
 105.160 +     * {@inheritDoc}
 105.161 +     */
 105.162 +    public final void validate(final boolean recurse)
 105.163 +            throws ValidationException {
 105.164 +
 105.165 +        if (!CompatibilityHints
 105.166 +                .isHintEnabled(CompatibilityHints.KEY_RELAXED_VALIDATION)) {
 105.167 +
 105.168 +            // From "4.8.4.7 Unique Identifier":
 105.169 +            // Conformance: The property MUST be specified in the "VEVENT", "VTODO",
 105.170 +            // "VJOURNAL" or "VFREEBUSY" calendar components.
 105.171 +            PropertyValidator.getInstance().assertOne(Property.UID,
 105.172 +                    getProperties());
 105.173 +
 105.174 +            // From "4.8.7.2 Date/Time Stamp":
 105.175 +            // Conformance: This property MUST be included in the "VEVENT", "VTODO",
 105.176 +            // "VJOURNAL" or "VFREEBUSY" calendar components.
 105.177 +            PropertyValidator.getInstance().assertOne(Property.DTSTAMP,
 105.178 +                    getProperties());
 105.179 +        }
 105.180 +
 105.181 +        /*
 105.182 +         * ; the following are optional, ; but MUST NOT occur more than once class / created / description / dtstart /
 105.183 +         * dtstamp / last-mod / organizer / recurid / seq / status / summary / uid / url /
 105.184 +         */
 105.185 +        PropertyValidator.getInstance().assertOneOrLess(Property.CLASS,
 105.186 +                getProperties());
 105.187 +        PropertyValidator.getInstance().assertOneOrLess(Property.CREATED,
 105.188 +                getProperties());
 105.189 +        PropertyValidator.getInstance().assertOneOrLess(Property.DESCRIPTION,
 105.190 +                getProperties());
 105.191 +        PropertyValidator.getInstance().assertOneOrLess(Property.DTSTART,
 105.192 +                getProperties());
 105.193 +        PropertyValidator.getInstance().assertOneOrLess(Property.DTSTAMP,
 105.194 +                getProperties());
 105.195 +        PropertyValidator.getInstance().assertOneOrLess(Property.LAST_MODIFIED,
 105.196 +                getProperties());
 105.197 +        PropertyValidator.getInstance().assertOneOrLess(Property.ORGANIZER,
 105.198 +                getProperties());
 105.199 +        PropertyValidator.getInstance().assertOneOrLess(Property.RECURRENCE_ID,
 105.200 +                getProperties());
 105.201 +        PropertyValidator.getInstance().assertOneOrLess(Property.SEQUENCE,
 105.202 +                getProperties());
 105.203 +        PropertyValidator.getInstance().assertOneOrLess(Property.STATUS,
 105.204 +                getProperties());
 105.205 +        PropertyValidator.getInstance().assertOneOrLess(Property.SUMMARY,
 105.206 +                getProperties());
 105.207 +        PropertyValidator.getInstance().assertOneOrLess(Property.UID,
 105.208 +                getProperties());
 105.209 +        PropertyValidator.getInstance().assertOneOrLess(Property.URL,
 105.210 +                getProperties());
 105.211 +
 105.212 +        final Status status = (Status) getProperty(Property.STATUS);
 105.213 +        if (status != null && !Status.VJOURNAL_DRAFT.getValue().equals(status.getValue())
 105.214 +                && !Status.VJOURNAL_FINAL.getValue().equals(status.getValue())
 105.215 +                && !Status.VJOURNAL_CANCELLED.getValue().equals(status.getValue())) {
 105.216 +            throw new ValidationException("Status property ["
 105.217 +                    + status.toString() + "] may not occur in VJOURNAL");
 105.218 +        }
 105.219 +
 105.220 +        /*
 105.221 +         * ; the following are optional, ; and MAY occur more than once attach / attendee / categories / comment /
 105.222 +         * contact / exdate / exrule / related / rdate / rrule / rstatus / x-prop
 105.223 +         */
 105.224 +
 105.225 +        if (recurse) {
 105.226 +            validateProperties();
 105.227 +        }
 105.228 +    }
 105.229 +
 105.230 +    /**
 105.231 +     * {@inheritDoc}
 105.232 +     */
 105.233 +    protected Validator getValidator(Method method) {
 105.234 +        return (Validator) methodValidators.get(method);
 105.235 +    }
 105.236 +
 105.237 +    /**
 105.238 +     * <pre>
 105.239 +     * Component/Property  Presence
 105.240 +     * ------------------- ----------------------------------------------
 105.241 +     * METHOD               1      MUST be "ADD"
 105.242 +     * VJOURNAL             1
 105.243 +     *     DESCRIPTION      1      Can be null.
 105.244 +     *     DTSTAMP          1
 105.245 +     *     DTSTART          1
 105.246 +     *     ORGANIZER        1
 105.247 +     *     SEQUENCE         1      MUST be greater than 0
 105.248 +     *     UID              1      MUST match that of the original journal
 105.249 +     * 
 105.250 +     *     ATTACH           0+
 105.251 +     *     CATEGORIES       0 or 1 This property MAY contain a list of values
 105.252 +     *     CLASS            0 or 1
 105.253 +     *     COMMENT          0 or 1
 105.254 +     *     CONTACT          0+
 105.255 +     *     CREATED          0 or 1
 105.256 +     *     EXDATE           0+
 105.257 +     *     EXRULE           0+
 105.258 +     *     LAST-MODIFIED    0 or 1
 105.259 +     *     RDATE            0+
 105.260 +     *     RELATED-TO       0+
 105.261 +     *     RRULE            0+
 105.262 +     *     STATUS           0 or 1  MAY be one of DRAFT/FINAL/CANCELLED
 105.263 +     *     SUMMARY          0 or 1  Can be null
 105.264 +     *     URL              0 or 1
 105.265 +     *     X-PROPERTY       0+
 105.266 +     * 
 105.267 +     *     ATTENDEE         0
 105.268 +     *     RECURRENCE-ID    0
 105.269 +     * 
 105.270 +     * VALARM               0+
 105.271 +     * VTIMEZONE            0 or 1 MUST be present if any date/time refers to
 105.272 +     *                             a timezone
 105.273 +     * X-COMPONENT          0+
 105.274 +     * 
 105.275 +     * VEVENT               0
 105.276 +     * VFREEBUSY            0
 105.277 +     * VTODO                0
 105.278 +     * </pre>
 105.279 +     * 
 105.280 +     */
 105.281 +    private class AddValidator implements Validator {
 105.282 +        
 105.283 +		private static final long serialVersionUID = 1L;
 105.284 +        
 105.285 +        public void validate() throws ValidationException {
 105.286 +            PropertyValidator.getInstance().assertOne(Property.DESCRIPTION, getProperties());
 105.287 +            PropertyValidator.getInstance().assertOne(Property.DTSTAMP, getProperties());
 105.288 +            PropertyValidator.getInstance().assertOne(Property.DTSTART, getProperties());
 105.289 +            PropertyValidator.getInstance().assertOne(Property.ORGANIZER, getProperties());
 105.290 +            PropertyValidator.getInstance().assertOne(Property.SEQUENCE, getProperties());
 105.291 +            PropertyValidator.getInstance().assertOne(Property.UID, getProperties());
 105.292 +            
 105.293 +            PropertyValidator.getInstance().assertOneOrLess(Property.CATEGORIES, getProperties());
 105.294 +            PropertyValidator.getInstance().assertOneOrLess(Property.CLASS, getProperties());
 105.295 +            PropertyValidator.getInstance().assertOneOrLess(Property.COMMENT, getProperties());
 105.296 +            PropertyValidator.getInstance().assertOneOrLess(Property.CREATED, getProperties());
 105.297 +            PropertyValidator.getInstance().assertOneOrLess(Property.LAST_MODIFIED, getProperties());
 105.298 +            PropertyValidator.getInstance().assertOneOrLess(Property.STATUS, getProperties());
 105.299 +            PropertyValidator.getInstance().assertOneOrLess(Property.SUMMARY, getProperties());
 105.300 +            PropertyValidator.getInstance().assertOneOrLess(Property.URL, getProperties());
 105.301 +            
 105.302 +            PropertyValidator.getInstance().assertNone(Property.ATTENDEE, getProperties());
 105.303 +            PropertyValidator.getInstance().assertNone(Property.RECURRENCE_ID, getProperties());
 105.304 +        }
 105.305 +    }
 105.306 +    
 105.307 +    /**
 105.308 +     * <pre>
 105.309 +     * Component/Property   Presence
 105.310 +     * -------------------  ---------------------------------------------
 105.311 +     * METHOD               1       MUST be "CANCEL"
 105.312 +     * VJOURNAL             1+      All MUST have the same UID
 105.313 +     *     DTSTAMP          1
 105.314 +     *     ORGANIZER        1
 105.315 +     *     SEQUENCE         1
 105.316 +     *     UID              1       MUST be the UID of the original REQUEST
 105.317 +     * 
 105.318 +     *     ATTACH           0+
 105.319 +     *     ATTENDEE         0+
 105.320 +     *     CATEGORIES       0 or 1  This property MAY contain a list of values
 105.321 +     *     CLASS            0 or 1
 105.322 +     *     COMMENT          0 or 1
 105.323 +     *     CONTACT          0+
 105.324 +     *     CREATED          0 or 1
 105.325 +     *     DESCRIPTION      0 or 1
 105.326 +     *     DTSTART          0 or 1
 105.327 +     *     EXDATE           0+
 105.328 +     *     EXRULE           0+
 105.329 +     *     LAST-MODIFIED    0 or 1
 105.330 +     *     RDATE            0+
 105.331 +     *     RECURRENCE-ID    0 or 1  only if referring to an instance of a
 105.332 +     *                              recurring calendar component.  Otherwise
 105.333 +     *                              it MUST NOT be present.
 105.334 +     *     RELATED-TO       0+
 105.335 +     *     RRULE            0+
 105.336 +     *     STATUS           0 or 1  MAY be present, must be "CANCELLED" if
 105.337 +     *                              present
 105.338 +     *     SUMMARY          0 or 1
 105.339 +     *     URL              0 or 1
 105.340 +     *     X-PROPERTY       0+
 105.341 +     * 
 105.342 +     *     REQUEST-STATUS   0
 105.343 +     * 
 105.344 +     * VTIMEZONE            0+      MUST be present if any date/time refers to
 105.345 +     *                              a timezone
 105.346 +     * X-COMPONENT          0+
 105.347 +     * VALARM               0
 105.348 +     * VEVENT               0
 105.349 +     * VFREEBUSY            0
 105.350 +     * VTODO                0
 105.351 +     * </pre>
 105.352 +     * 
 105.353 +     */
 105.354 +    private class CancelValidator implements Validator {
 105.355 +        
 105.356 +		private static final long serialVersionUID = 1L;
 105.357 +
 105.358 +        public void validate() throws ValidationException {
 105.359 +            PropertyValidator.getInstance().assertOne(Property.DTSTAMP, getProperties());
 105.360 +            PropertyValidator.getInstance().assertOne(Property.ORGANIZER, getProperties());
 105.361 +            PropertyValidator.getInstance().assertOne(Property.SEQUENCE, getProperties());
 105.362 +            PropertyValidator.getInstance().assertOne(Property.UID, getProperties());
 105.363 +            
 105.364 +            PropertyValidator.getInstance().assertOneOrLess(Property.CATEGORIES, getProperties());
 105.365 +            PropertyValidator.getInstance().assertOneOrLess(Property.CLASS, getProperties());
 105.366 +            PropertyValidator.getInstance().assertOneOrLess(Property.COMMENT, getProperties());
 105.367 +            PropertyValidator.getInstance().assertOneOrLess(Property.CREATED, getProperties());
 105.368 +            PropertyValidator.getInstance().assertOneOrLess(Property.DESCRIPTION, getProperties());
 105.369 +            PropertyValidator.getInstance().assertOneOrLess(Property.DTSTART, getProperties());
 105.370 +            PropertyValidator.getInstance().assertOneOrLess(Property.LAST_MODIFIED, getProperties());
 105.371 +            PropertyValidator.getInstance().assertOneOrLess(Property.RECURRENCE_ID, getProperties());
 105.372 +            PropertyValidator.getInstance().assertOneOrLess(Property.STATUS, getProperties());
 105.373 +            PropertyValidator.getInstance().assertOneOrLess(Property.SUMMARY, getProperties());
 105.374 +            PropertyValidator.getInstance().assertOneOrLess(Property.URL, getProperties());
 105.375 +            
 105.376 +            PropertyValidator.getInstance().assertNone(Property.REQUEST_STATUS, getProperties());
 105.377 +        }
 105.378 +    }
 105.379 +    
 105.380 +    /**
 105.381 +     * <pre>
 105.382 +     * Component/Property  Presence
 105.383 +     * ------------------- ----------------------------------------------
 105.384 +     * METHOD               1       MUST be "PUBLISH"
 105.385 +     * VJOURNAL             1+
 105.386 +     *     DESCRIPTION      1       Can be null.
 105.387 +     *     DTSTAMP          1
 105.388 +     *     DTSTART          1
 105.389 +     *     ORGANIZER        1
 105.390 +     *     UID              1
 105.391 +     * 
 105.392 +     *     ATTACH           0+
 105.393 +     *     CATEGORIES       0 or 1  This property MAY contain a list of values
 105.394 +     *     CLASS            0 or 1
 105.395 +     *     COMMENT          0 or 1
 105.396 +     *     CONTACT          0+
 105.397 +     *     CREATED          0 or 1
 105.398 +     *     EXDATE           0+
 105.399 +     *     EXRULE           0+
 105.400 +     *     LAST-MODIFIED    0 or 1
 105.401 +     *     RDATE            0+
 105.402 +     *     RECURRENCE-ID    0 or 1  MUST only if referring to an instance of a
 105.403 +     *                              recurring calendar component.  Otherwise
 105.404 +     *                              it MUST NOT be present.
 105.405 +     *     RELATED-TO       0+
 105.406 +     *     RRULE            0+
 105.407 +     *     SEQUENCE         0 or 1  MUST echo the original SEQUENCE number.
 105.408 +     *                              MUST be present if non-zero. MAY be
 105.409 +     *                              present if zero.
 105.410 +     *     STATUS           0 or 1  MAY be one of DRAFT/FINAL/CANCELLED
 105.411 +     *     SUMMARY          0 or 1  Can be null
 105.412 +     *     URL              0 or 1
 105.413 +     *     X-PROPERTY       0+
 105.414 +     * 
 105.415 +     *     ATTENDEE         0
 105.416 +     * 
 105.417 +     * VALARM               0+
 105.418 +     * VTIMEZONE            0+      MUST be present if any date/time refers to
 105.419 +     *                              a timezone
 105.420 +     * X-COMPONENT          0+
 105.421 +     * 
 105.422 +     * VEVENT               0
 105.423 +     * VFREEBUSY            0
 105.424 +     * VTODO                0
 105.425 +     * </pre>
 105.426 +     * 
 105.427 +     */
 105.428 +    private class PublishValidator implements Validator {
 105.429 +        
 105.430 +		private static final long serialVersionUID = 1L;
 105.431 +
 105.432 +        public void validate() throws ValidationException {
 105.433 +            PropertyValidator.getInstance().assertOne(Property.DESCRIPTION, getProperties());
 105.434 +            PropertyValidator.getInstance().assertOne(Property.DTSTAMP, getProperties());
 105.435 +            PropertyValidator.getInstance().assertOne(Property.DTSTART, getProperties());
 105.436 +            PropertyValidator.getInstance().assertOne(Property.ORGANIZER, getProperties());
 105.437 +            PropertyValidator.getInstance().assertOne(Property.UID, getProperties());
 105.438 +            
 105.439 +            PropertyValidator.getInstance().assertOneOrLess(Property.CATEGORIES, getProperties());
 105.440 +            PropertyValidator.getInstance().assertOneOrLess(Property.CLASS, getProperties());
 105.441 +            PropertyValidator.getInstance().assertOneOrLess(Property.COMMENT, getProperties());
 105.442 +            PropertyValidator.getInstance().assertOneOrLess(Property.CREATED, getProperties());
 105.443 +            PropertyValidator.getInstance().assertOneOrLess(Property.LAST_MODIFIED, getProperties());
 105.444 +            PropertyValidator.getInstance().assertOneOrLess(Property.RECURRENCE_ID, getProperties());
 105.445 +            PropertyValidator.getInstance().assertOneOrLess(Property.SEQUENCE, getProperties());
 105.446 +            PropertyValidator.getInstance().assertOneOrLess(Property.STATUS, getProperties());
 105.447 +            PropertyValidator.getInstance().assertOneOrLess(Property.SUMMARY, getProperties());
 105.448 +            PropertyValidator.getInstance().assertOneOrLess(Property.URL, getProperties());
 105.449 +            
 105.450 +            PropertyValidator.getInstance().assertNone(Property.ATTENDEE, getProperties());
 105.451 +        }
 105.452 +    }
 105.453 +    
 105.454 +    /**
 105.455 +     * @return the optional access classification property for a journal entry
 105.456 +     */
 105.457 +    public final Clazz getClassification() {
 105.458 +        return (Clazz) getProperty(Property.CLASS);
 105.459 +    }
 105.460 +
 105.461 +    /**
 105.462 +     * @return the optional creation-time property for a journal entry
 105.463 +     */
 105.464 +    public final Created getCreated() {
 105.465 +        return (Created) getProperty(Property.CREATED);
 105.466 +    }
 105.467 +
 105.468 +    /**
 105.469 +     * @return the optional description property for a journal entry
 105.470 +     */
 105.471 +    public final Description getDescription() {
 105.472 +        return (Description) getProperty(Property.DESCRIPTION);
 105.473 +    }
 105.474 +
 105.475 +    /**
 105.476 +     * Convenience method to pull the DTSTART out of the property list.
 105.477 +     * @return The DtStart object representation of the start Date
 105.478 +     */
 105.479 +    public final DtStart getStartDate() {
 105.480 +        return (DtStart) getProperty(Property.DTSTART);
 105.481 +    }
 105.482 +
 105.483 +    /**
 105.484 +     * @return the optional last-modified property for a journal entry
 105.485 +     */
 105.486 +    public final LastModified getLastModified() {
 105.487 +        return (LastModified) getProperty(Property.LAST_MODIFIED);
 105.488 +    }
 105.489 +
 105.490 +    /**
 105.491 +     * @return the optional organizer property for a journal entry
 105.492 +     */
 105.493 +    public final Organizer getOrganizer() {
 105.494 +        return (Organizer) getProperty(Property.ORGANIZER);
 105.495 +    }
 105.496 +
 105.497 +    /**
 105.498 +     * @return the optional date-stamp property
 105.499 +     */
 105.500 +    public final DtStamp getDateStamp() {
 105.501 +        return (DtStamp) getProperty(Property.DTSTAMP);
 105.502 +    }
 105.503 +
 105.504 +    /**
 105.505 +     * @return the optional sequence number property for a journal entry
 105.506 +     */
 105.507 +    public final Sequence getSequence() {
 105.508 +        return (Sequence) getProperty(Property.SEQUENCE);
 105.509 +    }
 105.510 +
 105.511 +    /**
 105.512 +     * @return the optional status property for a journal entry
 105.513 +     */
 105.514 +    public final Status getStatus() {
 105.515 +        return (Status) getProperty(Property.STATUS);
 105.516 +    }
 105.517 +
 105.518 +    /**
 105.519 +     * @return the optional summary property for a journal entry
 105.520 +     */
 105.521 +    public final Summary getSummary() {
 105.522 +        return (Summary) getProperty(Property.SUMMARY);
 105.523 +    }
 105.524 +
 105.525 +    /**
 105.526 +     * @return the optional URL property for a journal entry
 105.527 +     */
 105.528 +    public final Url getUrl() {
 105.529 +        return (Url) getProperty(Property.URL);
 105.530 +    }
 105.531 +
 105.532 +    /**
 105.533 +     * @return the optional recurrence identifier property for a journal entry
 105.534 +     */
 105.535 +    public final RecurrenceId getRecurrenceId() {
 105.536 +        return (RecurrenceId) getProperty(Property.RECURRENCE_ID);
 105.537 +    }
 105.538 +
 105.539 +    /**
 105.540 +     * Returns the UID property of this component if available.
 105.541 +     * @return a Uid instance, or null if no UID property exists
 105.542 +     */
 105.543 +    public final Uid getUid() {
 105.544 +        return (Uid) getProperty(Property.UID);
 105.545 +    }
 105.546 +}
   106.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   106.2 +++ b/src/net/fortuna/ical4j/model/component/VTimeZone.java	Tue Feb 10 18:12:00 2015 +0100
   106.3 @@ -0,0 +1,379 @@
   106.4 +/**
   106.5 + * Copyright (c) 2012, Ben Fortuna
   106.6 + * All rights reserved.
   106.7 + *
   106.8 + * Redistribution and use in source and binary forms, with or without
   106.9 + * modification, are permitted provided that the following conditions
  106.10 + * are met:
  106.11 + *
  106.12 + *  o Redistributions of source code must retain the above copyright
  106.13 + * notice, this list of conditions and the following disclaimer.
  106.14 + *
  106.15 + *  o Redistributions in binary form must reproduce the above copyright
  106.16 + * notice, this list of conditions and the following disclaimer in the
  106.17 + * documentation and/or other materials provided with the distribution.
  106.18 + *
  106.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  106.20 + * may be used to endorse or promote products derived from this software
  106.21 + * without specific prior written permission.
  106.22 + *
  106.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  106.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  106.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  106.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  106.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  106.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  106.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  106.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  106.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  106.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  106.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  106.34 + */
  106.35 +package net.fortuna.ical4j.model.component;
  106.36 +
  106.37 +import java.io.IOException;
  106.38 +import java.net.URISyntaxException;
  106.39 +import java.text.ParseException;
  106.40 +import java.util.Iterator;
  106.41 +
  106.42 +import net.fortuna.ical4j.model.Component;
  106.43 +import net.fortuna.ical4j.model.ComponentList;
  106.44 +import net.fortuna.ical4j.model.Date;
  106.45 +import net.fortuna.ical4j.model.Property;
  106.46 +import net.fortuna.ical4j.model.PropertyList;
  106.47 +import net.fortuna.ical4j.model.ValidationException;
  106.48 +import net.fortuna.ical4j.model.Validator;
  106.49 +import net.fortuna.ical4j.model.property.LastModified;
  106.50 +import net.fortuna.ical4j.model.property.Method;
  106.51 +import net.fortuna.ical4j.model.property.TzId;
  106.52 +import net.fortuna.ical4j.model.property.TzUrl;
  106.53 +import net.fortuna.ical4j.util.PropertyValidator;
  106.54 +import net.fortuna.ical4j.util.Strings;
  106.55 +
  106.56 +import org.apache.commons.lang.ObjectUtils;
  106.57 +import org.apache.commons.lang.builder.HashCodeBuilder;
  106.58 +
  106.59 +/**
  106.60 + * $Id$ [Apr 5, 2004]
  106.61 + *
  106.62 + * Defines an iCalendar VTIMEZONE component.
  106.63 + * 
  106.64 + * <pre>
  106.65 + *       4.6.5 Time Zone Component
  106.66 + *  
  106.67 + *          Component Name: VTIMEZONE
  106.68 + *  
  106.69 + *          Purpose: Provide a grouping of component properties that defines a
  106.70 + *          time zone.
  106.71 + *  
  106.72 + *          Formal Definition: A &quot;VTIMEZONE&quot; calendar component is defined by the
  106.73 + *          following notation:
  106.74 + *  
  106.75 + *            timezonec  = &quot;BEGIN&quot; &quot;:&quot; &quot;VTIMEZONE&quot; CRLF
  106.76 + *  
  106.77 + *                         2*(
  106.78 + *  
  106.79 + *                         ; 'tzid' is required, but MUST NOT occur more
  106.80 + *                         ; than once
  106.81 + *  
  106.82 + *                       tzid /
  106.83 + *  
  106.84 + *                         ; 'last-mod' and 'tzurl' are optional,
  106.85 + *                       but MUST NOT occur more than once
  106.86 + *  
  106.87 + *                       last-mod / tzurl /
  106.88 + *  
  106.89 + *                         ; one of 'standardc' or 'daylightc' MUST occur
  106.90 + *                       ..; and each MAY occur more than once.
  106.91 + *  
  106.92 + *                       standardc / daylightc /
  106.93 + *  
  106.94 + *                       ; the following is optional,
  106.95 + *                       ; and MAY occur more than once
  106.96 + *  
  106.97 + *                         x-prop
  106.98 + *  
  106.99 + *                         )
 106.100 + *  
 106.101 + *                         &quot;END&quot; &quot;:&quot; &quot;VTIMEZONE&quot; CRLF
 106.102 + *  
 106.103 + *            standardc  = &quot;BEGIN&quot; &quot;:&quot; &quot;STANDARD&quot; CRLF
 106.104 + *  
 106.105 + *                         tzprop
 106.106 + *  
 106.107 + *                         &quot;END&quot; &quot;:&quot; &quot;STANDARD&quot; CRLF
 106.108 + *  
 106.109 + *            daylightc  = &quot;BEGIN&quot; &quot;:&quot; &quot;DAYLIGHT&quot; CRLF
 106.110 + *  
 106.111 + *                         tzprop
 106.112 + *  
 106.113 + *                         &quot;END&quot; &quot;:&quot; &quot;DAYLIGHT&quot; CRLF
 106.114 + *  
 106.115 + *            tzprop     = 3*(
 106.116 + *  
 106.117 + *                       ; the following are each REQUIRED,
 106.118 + *                       ; but MUST NOT occur more than once
 106.119 + *  
 106.120 + *                       dtstart / tzoffsetto / tzoffsetfrom /
 106.121 + *  
 106.122 + *                       ; the following are optional,
 106.123 + *                       ; and MAY occur more than once
 106.124 + *  
 106.125 + *                       comment / rdate / rrule / tzname / x-prop
 106.126 + *  
 106.127 + *                       )
 106.128 + * </pre>
 106.129 + * 
 106.130 + * @author Ben Fortuna
 106.131 + */
 106.132 +public class VTimeZone extends CalendarComponent {
 106.133 +
 106.134 +    private static final long serialVersionUID = 5629679741050917815L;
 106.135 +
 106.136 +    private final Validator itipValidator = new ITIPValidator();
 106.137 +    
 106.138 +    private ComponentList observances;
 106.139 +
 106.140 +    /**
 106.141 +     * Default constructor.
 106.142 +     */
 106.143 +    public VTimeZone() {
 106.144 +        super(VTIMEZONE);
 106.145 +        this.observances = new ComponentList();
 106.146 +    }
 106.147 +
 106.148 +    /**
 106.149 +     * Constructs a new instance containing the specified properties.
 106.150 +     * @param properties a list of properties
 106.151 +     */
 106.152 +    public VTimeZone(final PropertyList properties) {
 106.153 +        super(VTIMEZONE, properties);
 106.154 +        this.observances = new ComponentList();
 106.155 +    }
 106.156 +
 106.157 +    /**
 106.158 +     * Constructs a new vtimezone component with no properties and the specified list of type components.
 106.159 +     * @param observances a list of type components
 106.160 +     */
 106.161 +    public VTimeZone(final ComponentList observances) {
 106.162 +        super(VTIMEZONE);
 106.163 +        this.observances = observances;
 106.164 +    }
 106.165 +
 106.166 +    /**
 106.167 +     * Constructor.
 106.168 +     * @param properties a list of properties
 106.169 +     * @param observances a list of timezone types
 106.170 +     */
 106.171 +    public VTimeZone(final PropertyList properties,
 106.172 +            final ComponentList observances) {
 106.173 +        super(VTIMEZONE, properties);
 106.174 +        this.observances = observances;
 106.175 +    }
 106.176 +
 106.177 +    /**
 106.178 +     * {@inheritDoc}
 106.179 +     */
 106.180 +    public final String toString() {
 106.181 +        final StringBuffer b = new StringBuffer();
 106.182 +        b.append(BEGIN);
 106.183 +        b.append(':');
 106.184 +        b.append(getName());
 106.185 +        b.append(Strings.LINE_SEPARATOR);
 106.186 +        b.append(getProperties());
 106.187 +        b.append(observances);
 106.188 +        b.append(END);
 106.189 +        b.append(':');
 106.190 +        b.append(getName());
 106.191 +        b.append(Strings.LINE_SEPARATOR);
 106.192 +        return b.toString();
 106.193 +    }
 106.194 +
 106.195 +    /**
 106.196 +     * {@inheritDoc}
 106.197 +     */
 106.198 +    public final void validate(final boolean recurse)
 106.199 +            throws ValidationException {
 106.200 +
 106.201 +        /*
 106.202 +         * ; 'tzid' is required, but MUST NOT occur more ; than once tzid /
 106.203 +         */
 106.204 +        PropertyValidator.getInstance().assertOne(Property.TZID,
 106.205 +                getProperties());
 106.206 +
 106.207 +        /*
 106.208 +         * ; 'last-mod' and 'tzurl' are optional, but MUST NOT occur more than once last-mod / tzurl /
 106.209 +         */
 106.210 +        PropertyValidator.getInstance().assertOneOrLess(Property.LAST_MODIFIED,
 106.211 +                getProperties());
 106.212 +        PropertyValidator.getInstance().assertOneOrLess(Property.TZURL,
 106.213 +                getProperties());
 106.214 +
 106.215 +        /*
 106.216 +         * ; one of 'standardc' or 'daylightc' MUST occur ..; and each MAY occur more than once. standardc / daylightc /
 106.217 +         */
 106.218 +        if (getObservances().getComponent(Observance.STANDARD) == null
 106.219 +                && getObservances().getComponent(Observance.DAYLIGHT) == null) {
 106.220 +            throw new ValidationException("Sub-components ["
 106.221 +                    + Observance.STANDARD + "," + Observance.DAYLIGHT
 106.222 +                    + "] must be specified at least once");
 106.223 +        }
 106.224 +
 106.225 +        for (final Iterator i = getObservances().iterator(); i.hasNext();) {
 106.226 +            ((Component) i.next()).validate(recurse);
 106.227 +        }
 106.228 +        
 106.229 +        /*
 106.230 +         * ; the following is optional, ; and MAY occur more than once x-prop
 106.231 +         */
 106.232 +
 106.233 +        if (recurse) {
 106.234 +            validateProperties();
 106.235 +        }
 106.236 +    }
 106.237 +
 106.238 +    /**
 106.239 +     * {@inheritDoc}
 106.240 +     */
 106.241 +    protected Validator getValidator(Method method) {
 106.242 +        return itipValidator;
 106.243 +    }
 106.244 +
 106.245 +    /**
 106.246 +     * Common validation for all iTIP methods.
 106.247 +     * 
 106.248 +     * <pre>
 106.249 +     *    Component/Property  Presence
 106.250 +     *    ------------------- ----------------------------------------------
 106.251 +     *    VTIMEZONE           0+      MUST be present if any date/time refers
 106.252 +     *                                to timezone
 106.253 +     *        DAYLIGHT        0+      MUST be one or more of either STANDARD or
 106.254 +     *                                DAYLIGHT
 106.255 +     *           COMMENT      0 or 1
 106.256 +     *           DTSTART      1       MUST be local time format
 106.257 +     *           RDATE        0+      if present RRULE MUST NOT be present
 106.258 +     *           RRULE        0+      if present RDATE MUST NOT be present
 106.259 +     *           TZNAME       0 or 1
 106.260 +     *           TZOFFSET     1
 106.261 +     *           TZOFFSETFROM 1
 106.262 +     *           TZOFFSETTO   1
 106.263 +     *           X-PROPERTY   0+
 106.264 +     *        LAST-MODIFIED   0 or 1
 106.265 +     *        STANDARD        0+      MUST be one or more of either STANDARD or
 106.266 +     *                                DAYLIGHT
 106.267 +     *           COMMENT      0 or 1
 106.268 +     *           DTSTART      1       MUST be local time format
 106.269 +     *           RDATE        0+      if present RRULE MUST NOT be present
 106.270 +     *           RRULE        0+      if present RDATE MUST NOT be present
 106.271 +     *           TZNAME       0 or 1
 106.272 +     *           TZOFFSETFROM 1
 106.273 +     *           TZOFFSETTO   1
 106.274 +     *           X-PROPERTY   0+
 106.275 +     *        TZID            1
 106.276 +     *        TZURL           0 or 1
 106.277 +     *        X-PROPERTY      0+
 106.278 +     * </pre>
 106.279 +     */
 106.280 +    private class ITIPValidator implements Validator {
 106.281 +        
 106.282 +		private static final long serialVersionUID = 1L;
 106.283 +
 106.284 +        /**
 106.285 +         * {@inheritDoc}
 106.286 +         */
 106.287 +        public void validate() throws ValidationException {
 106.288 +            for (final Iterator i = getObservances().iterator(); i.hasNext();) {
 106.289 +                final Observance observance = (Observance) i.next();
 106.290 +                PropertyValidator.getInstance().assertOne(Property.DTSTART, observance.getProperties());
 106.291 +                PropertyValidator.getInstance().assertOne(Property.TZOFFSETFROM, observance.getProperties());
 106.292 +                PropertyValidator.getInstance().assertOne(Property.TZOFFSETTO, observance.getProperties());
 106.293 +                
 106.294 +                PropertyValidator.getInstance().assertOneOrLess(Property.COMMENT, observance.getProperties());
 106.295 +                PropertyValidator.getInstance().assertOneOrLess(Property.TZNAME, observance.getProperties());
 106.296 +            }
 106.297 +        }
 106.298 +    }
 106.299 +    
 106.300 +    /**
 106.301 +     * @return Returns the types.
 106.302 +     */
 106.303 +    public final ComponentList getObservances() {
 106.304 +        return observances;
 106.305 +    }
 106.306 +
 106.307 +    /**
 106.308 +     * Returns the latest applicable timezone observance for the specified date.
 106.309 +     * @param date the latest possible date for a timezone observance onset
 106.310 +     * @return the latest applicable timezone observance for the specified date or null if there are no applicable
 106.311 +     * observances
 106.312 +     */
 106.313 +    public final Observance getApplicableObservance(final Date date) {
 106.314 +        Observance latestObservance = null;
 106.315 +        Date latestOnset = null;
 106.316 +        for (final Iterator i = getObservances().iterator(); i.hasNext();) {
 106.317 +            final Observance observance = (Observance) i.next();
 106.318 +            final Date onset = observance.getLatestOnset(date);
 106.319 +            if (latestOnset == null
 106.320 +                    || (onset != null && onset.after(latestOnset))) {
 106.321 +                latestOnset = onset;
 106.322 +                latestObservance = observance;
 106.323 +            }
 106.324 +        }
 106.325 +        return latestObservance;
 106.326 +    }
 106.327 +
 106.328 +    /**
 106.329 +     * @return the mandatory timezone identifier property
 106.330 +     */
 106.331 +    public final TzId getTimeZoneId() {
 106.332 +        return (TzId) getProperty(Property.TZID);
 106.333 +    }
 106.334 +
 106.335 +    /**
 106.336 +     * @return the optional last-modified property
 106.337 +     */
 106.338 +    public final LastModified getLastModified() {
 106.339 +        return (LastModified) getProperty(Property.LAST_MODIFIED);
 106.340 +    }
 106.341 +
 106.342 +    /**
 106.343 +     * @return the optional timezone url property
 106.344 +     */
 106.345 +    public final TzUrl getTimeZoneUrl() {
 106.346 +        return (TzUrl) getProperty(Property.TZURL);
 106.347 +    }
 106.348 +
 106.349 +    /**
 106.350 +     * {@inheritDoc}
 106.351 +     */
 106.352 +    public boolean equals(final Object arg0) {
 106.353 +        if (arg0 instanceof VTimeZone) {
 106.354 +            return super.equals(arg0)
 106.355 +                    && ObjectUtils.equals(observances, ((VTimeZone) arg0)
 106.356 +                            .getObservances());
 106.357 +        }
 106.358 +        return super.equals(arg0);
 106.359 +    }
 106.360 +
 106.361 +    /**
 106.362 +     * {@inheritDoc}
 106.363 +     */
 106.364 +    public int hashCode() {
 106.365 +        return new HashCodeBuilder().append(getName()).append(getProperties())
 106.366 +                .append(getObservances()).toHashCode();
 106.367 +    }
 106.368 +
 106.369 +    /**
 106.370 +     * Overrides default copy method to add support for copying observance sub-components.
 106.371 +     * @return a copy of the instance
 106.372 +     * @throws ParseException where an error occurs parsing data
 106.373 +     * @throws IOException where an error occurs reading data
 106.374 +     * @throws URISyntaxException where an invalid URI is encountered
 106.375 +     * @see net.fortuna.ical4j.model.Component#copy()
 106.376 +     */
 106.377 +    public Component copy() throws ParseException, IOException, URISyntaxException {
 106.378 +        final VTimeZone copy = (VTimeZone) super.copy();
 106.379 +        copy.observances = new ComponentList(observances);
 106.380 +        return copy;
 106.381 +    }
 106.382 +}
   107.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   107.2 +++ b/src/net/fortuna/ical4j/model/component/VToDo.java	Tue Feb 10 18:12:00 2015 +0100
   107.3 @@ -0,0 +1,1279 @@
   107.4 +/**
   107.5 + * Copyright (c) 2012, Ben Fortuna
   107.6 + * All rights reserved.
   107.7 + *
   107.8 + * Redistribution and use in source and binary forms, with or without
   107.9 + * modification, are permitted provided that the following conditions
  107.10 + * are met:
  107.11 + *
  107.12 + *  o Redistributions of source code must retain the above copyright
  107.13 + * notice, this list of conditions and the following disclaimer.
  107.14 + *
  107.15 + *  o Redistributions in binary form must reproduce the above copyright
  107.16 + * notice, this list of conditions and the following disclaimer in the
  107.17 + * documentation and/or other materials provided with the distribution.
  107.18 + *
  107.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  107.20 + * may be used to endorse or promote products derived from this software
  107.21 + * without specific prior written permission.
  107.22 + *
  107.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  107.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  107.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  107.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  107.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  107.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  107.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  107.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  107.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  107.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  107.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  107.34 + */
  107.35 +package net.fortuna.ical4j.model.component;
  107.36 +
  107.37 +import java.io.IOException;
  107.38 +import java.net.URISyntaxException;
  107.39 +import java.text.ParseException;
  107.40 +import java.util.HashMap;
  107.41 +import java.util.Iterator;
  107.42 +import java.util.Map;
  107.43 +
  107.44 +import net.fortuna.ical4j.model.Component;
  107.45 +import net.fortuna.ical4j.model.ComponentList;
  107.46 +import net.fortuna.ical4j.model.Date;
  107.47 +import net.fortuna.ical4j.model.Dur;
  107.48 +import net.fortuna.ical4j.model.Property;
  107.49 +import net.fortuna.ical4j.model.PropertyList;
  107.50 +import net.fortuna.ical4j.model.ValidationException;
  107.51 +import net.fortuna.ical4j.model.Validator;
  107.52 +import net.fortuna.ical4j.model.property.Clazz;
  107.53 +import net.fortuna.ical4j.model.property.Completed;
  107.54 +import net.fortuna.ical4j.model.property.Created;
  107.55 +import net.fortuna.ical4j.model.property.Description;
  107.56 +import net.fortuna.ical4j.model.property.DtStamp;
  107.57 +import net.fortuna.ical4j.model.property.DtStart;
  107.58 +import net.fortuna.ical4j.model.property.Due;
  107.59 +import net.fortuna.ical4j.model.property.Duration;
  107.60 +import net.fortuna.ical4j.model.property.Geo;
  107.61 +import net.fortuna.ical4j.model.property.LastModified;
  107.62 +import net.fortuna.ical4j.model.property.Location;
  107.63 +import net.fortuna.ical4j.model.property.Method;
  107.64 +import net.fortuna.ical4j.model.property.Organizer;
  107.65 +import net.fortuna.ical4j.model.property.PercentComplete;
  107.66 +import net.fortuna.ical4j.model.property.Priority;
  107.67 +import net.fortuna.ical4j.model.property.RecurrenceId;
  107.68 +import net.fortuna.ical4j.model.property.Sequence;
  107.69 +import net.fortuna.ical4j.model.property.Status;
  107.70 +import net.fortuna.ical4j.model.property.Summary;
  107.71 +import net.fortuna.ical4j.model.property.Uid;
  107.72 +import net.fortuna.ical4j.model.property.Url;
  107.73 +import net.fortuna.ical4j.util.CompatibilityHints;
  107.74 +import net.fortuna.ical4j.util.ComponentValidator;
  107.75 +import net.fortuna.ical4j.util.PropertyValidator;
  107.76 +import net.fortuna.ical4j.util.Strings;
  107.77 +
  107.78 +import org.apache.commons.lang.ObjectUtils;
  107.79 +import org.apache.commons.lang.builder.HashCodeBuilder;
  107.80 +
  107.81 +/**
  107.82 + * $Id$ [Apr 5, 2004]
  107.83 + *
  107.84 + * Defines an iCalendar VTODO component.
  107.85 + * 
  107.86 + * <pre>
  107.87 + *       4.6.2 To-do Component
  107.88 + *  
  107.89 + *          Component Name: VTODO
  107.90 + *  
  107.91 + *          Purpose: Provide a grouping of calendar properties that describe a
  107.92 + *          to-do.
  107.93 + *  
  107.94 + *          Formal Definition: A &quot;VTODO&quot; calendar component is defined by the
  107.95 + *          following notation:
  107.96 + *  
  107.97 + *            todoc      = &quot;BEGIN&quot; &quot;:&quot; &quot;VTODO&quot; CRLF
  107.98 + *                         todoprop *alarmc
  107.99 + *                         &quot;END&quot; &quot;:&quot; &quot;VTODO&quot; CRLF
 107.100 + *  
 107.101 + *            todoprop   = *(
 107.102 + *  
 107.103 + *                       ; the following are optional,
 107.104 + *                       ; but MUST NOT occur more than once
 107.105 + *  
 107.106 + *                       class / completed / created / description / dtstamp /
 107.107 + *                       dtstart / geo / last-mod / location / organizer /
 107.108 + *                       percent / priority / recurid / seq / status /
 107.109 + *                       summary / uid / url /
 107.110 + *  
 107.111 + *                       ; either 'due' or 'duration' may appear in
 107.112 + *                       ; a 'todoprop', but 'due' and 'duration'
 107.113 + *                       ; MUST NOT occur in the same 'todoprop'
 107.114 + *  
 107.115 + *                       due / duration /
 107.116 + *  
 107.117 + *                       ; the following are optional,
 107.118 + *                       ; and MAY occur more than once
 107.119 + *                       attach / attendee / categories / comment / contact /
 107.120 + *                       exdate / exrule / rstatus / related / resources /
 107.121 + *                       rdate / rrule / x-prop
 107.122 + *  
 107.123 + *                       )
 107.124 + * </pre>
 107.125 + * 
 107.126 + * Example 1 - Creating a todo of two (2) hour duration starting tomorrow:
 107.127 + * 
 107.128 + * <pre><code>
 107.129 + * java.util.Calendar cal = java.util.Calendar.getInstance();
 107.130 + * // tomorrow..
 107.131 + * cal.add(java.util.Calendar.DAY_OF_MONTH, 1);
 107.132 + * cal.set(java.util.Calendar.HOUR_OF_DAY, 11);
 107.133 + * cal.set(java.util.Calendar.MINUTE, 00);
 107.134 + * 
 107.135 + * VToDo documentation = new VEvent(cal.getTime(), 1000 * 60 * 60 * 2,
 107.136 + *         &quot;Document calendar component usage&quot;);
 107.137 + * 
 107.138 + * // add timezone information..
 107.139 + * VTimeZone tz = VTimeZone.getDefault();
 107.140 + * TzId tzParam = new TzId(tz.getProperties().getProperty(Property.TZID)
 107.141 + *         .getValue());
 107.142 + * documentation.getProperties().getProperty(Property.DTSTART).getParameters()
 107.143 + *         .add(tzParam);
 107.144 + * </code></pre>
 107.145 + * 
 107.146 + * @author Ben Fortuna
 107.147 + */
 107.148 +public class VToDo extends CalendarComponent {
 107.149 +
 107.150 +    private static final long serialVersionUID = -269658210065896668L;
 107.151 +
 107.152 +    private final Map methodValidators = new HashMap();
 107.153 +    {
 107.154 +        methodValidators.put(Method.ADD, new AddValidator());
 107.155 +        methodValidators.put(Method.CANCEL, new CancelValidator());
 107.156 +        methodValidators.put(Method.COUNTER, new CounterValidator());
 107.157 +        methodValidators.put(Method.DECLINE_COUNTER, new DeclineCounterValidator());
 107.158 +        methodValidators.put(Method.PUBLISH, new PublishValidator());
 107.159 +        methodValidators.put(Method.REFRESH, new RefreshValidator());
 107.160 +        methodValidators.put(Method.REPLY, new ReplyValidator());
 107.161 +        methodValidators.put(Method.REQUEST, new RequestValidator());
 107.162 +    }
 107.163 +    
 107.164 +    private ComponentList alarms = new ComponentList();
 107.165 +
 107.166 +    /**
 107.167 +     * Default constructor.
 107.168 +     */
 107.169 +    public VToDo() {
 107.170 +        super(VTODO);
 107.171 +        getProperties().add(new DtStamp());
 107.172 +    }
 107.173 +
 107.174 +    /**
 107.175 +     * Constructor.
 107.176 +     * @param properties a list of properties
 107.177 +     */
 107.178 +    public VToDo(final PropertyList properties) {
 107.179 +        super(VTODO, properties);
 107.180 +    }
 107.181 +
 107.182 +    /**
 107.183 +     * Constructs a new VTODO instance starting at the specified time with the specified summary.
 107.184 +     * @param start the start date of the new todo
 107.185 +     * @param summary the todo summary
 107.186 +     */
 107.187 +    public VToDo(final Date start, final String summary) {
 107.188 +        this();
 107.189 +        getProperties().add(new DtStart(start));
 107.190 +        getProperties().add(new Summary(summary));
 107.191 +    }
 107.192 +
 107.193 +    /**
 107.194 +     * Constructs a new VTODO instance starting and ending at the specified times with the specified summary.
 107.195 +     * @param start the start date of the new todo
 107.196 +     * @param due the due date of the new todo
 107.197 +     * @param summary the todo summary
 107.198 +     */
 107.199 +    public VToDo(final Date start, final Date due, final String summary) {
 107.200 +        this();
 107.201 +        getProperties().add(new DtStart(start));
 107.202 +        getProperties().add(new Due(due));
 107.203 +        getProperties().add(new Summary(summary));
 107.204 +    }
 107.205 +
 107.206 +    /**
 107.207 +     * Constructs a new VTODO instance starting at the specified times, for the specified duration, with the specified
 107.208 +     * summary.
 107.209 +     * @param start the start date of the new todo
 107.210 +     * @param duration the duration of the new todo
 107.211 +     * @param summary the todo summary
 107.212 +     */
 107.213 +    public VToDo(final Date start, final Dur duration, final String summary) {
 107.214 +        this();
 107.215 +        getProperties().add(new DtStart(start));
 107.216 +        getProperties().add(new Duration(duration));
 107.217 +        getProperties().add(new Summary(summary));
 107.218 +    }
 107.219 +
 107.220 +    /**
 107.221 +     * Returns the list of alarms for this todo.
 107.222 +     * @return a component list
 107.223 +     */
 107.224 +    public final ComponentList getAlarms() {
 107.225 +        return alarms;
 107.226 +    }
 107.227 +
 107.228 +    /**
 107.229 +     * {@inheritDoc}
 107.230 +     */
 107.231 +    public final String toString() {
 107.232 +        final StringBuffer buffer = new StringBuffer();
 107.233 +        buffer.append(BEGIN);
 107.234 +        buffer.append(':');
 107.235 +        buffer.append(getName());
 107.236 +        buffer.append(Strings.LINE_SEPARATOR);
 107.237 +        buffer.append(getProperties());
 107.238 +        buffer.append(getAlarms());
 107.239 +        buffer.append(END);
 107.240 +        buffer.append(':');
 107.241 +        buffer.append(getName());
 107.242 +        buffer.append(Strings.LINE_SEPARATOR);
 107.243 +        return buffer.toString();
 107.244 +    }
 107.245 +
 107.246 +    /**
 107.247 +     * {@inheritDoc}
 107.248 +     */
 107.249 +    public final void validate(final boolean recurse)
 107.250 +            throws ValidationException {
 107.251 +
 107.252 +        // validate that getAlarms() only contains VAlarm components
 107.253 +        final Iterator iterator = getAlarms().iterator();
 107.254 +        while (iterator.hasNext()) {
 107.255 +            final Component component = (Component) iterator.next();
 107.256 +            if (!(component instanceof VAlarm)) {
 107.257 +                throw new ValidationException("Component ["
 107.258 +                        + component.getName() + "] may not occur in VTODO");
 107.259 +            }
 107.260 +            ((VAlarm) component).validate(recurse);
 107.261 +        }
 107.262 +
 107.263 +        if (!CompatibilityHints
 107.264 +                .isHintEnabled(CompatibilityHints.KEY_RELAXED_VALIDATION)) {
 107.265 +
 107.266 +            // From "4.8.4.7 Unique Identifier":
 107.267 +            // Conformance: The property MUST be specified in the "VEVENT", "VTODO",
 107.268 +            // "VJOURNAL" or "VFREEBUSY" calendar components.
 107.269 +            PropertyValidator.getInstance().assertOne(Property.UID,
 107.270 +                    getProperties());
 107.271 +
 107.272 +            // From "4.8.7.2 Date/Time Stamp":
 107.273 +            // Conformance: This property MUST be included in the "VEVENT", "VTODO",
 107.274 +            // "VJOURNAL" or "VFREEBUSY" calendar components.
 107.275 +            PropertyValidator.getInstance().assertOne(Property.DTSTAMP,
 107.276 +                    getProperties());
 107.277 +        }
 107.278 +
 107.279 +        /*
 107.280 +         * ; the following are optional, ; but MUST NOT occur more than once class / completed / created / description /
 107.281 +         * dtstamp / dtstart / geo / last-mod / location / organizer / percent / priority / recurid / seq / status /
 107.282 +         * summary / uid / url /
 107.283 +         */
 107.284 +        PropertyValidator.getInstance().assertOneOrLess(Property.CLASS,
 107.285 +                getProperties());
 107.286 +        PropertyValidator.getInstance().assertOneOrLess(Property.COMPLETED,
 107.287 +                getProperties());
 107.288 +        PropertyValidator.getInstance().assertOneOrLess(Property.CREATED,
 107.289 +                getProperties());
 107.290 +        PropertyValidator.getInstance().assertOneOrLess(Property.DESCRIPTION,
 107.291 +                getProperties());
 107.292 +        PropertyValidator.getInstance().assertOneOrLess(Property.DTSTAMP,
 107.293 +                getProperties());
 107.294 +        PropertyValidator.getInstance().assertOneOrLess(Property.DTSTART,
 107.295 +                getProperties());
 107.296 +        PropertyValidator.getInstance().assertOneOrLess(Property.GEO,
 107.297 +                getProperties());
 107.298 +        PropertyValidator.getInstance().assertOneOrLess(Property.LAST_MODIFIED,
 107.299 +                getProperties());
 107.300 +        PropertyValidator.getInstance().assertOneOrLess(Property.LOCATION,
 107.301 +                getProperties());
 107.302 +        PropertyValidator.getInstance().assertOneOrLess(Property.ORGANIZER,
 107.303 +                getProperties());
 107.304 +        PropertyValidator.getInstance().assertOneOrLess(
 107.305 +                Property.PERCENT_COMPLETE, getProperties());
 107.306 +        PropertyValidator.getInstance().assertOneOrLess(Property.PRIORITY,
 107.307 +                getProperties());
 107.308 +        PropertyValidator.getInstance().assertOneOrLess(Property.RECURRENCE_ID,
 107.309 +                getProperties());
 107.310 +        PropertyValidator.getInstance().assertOneOrLess(Property.SEQUENCE,
 107.311 +                getProperties());
 107.312 +        PropertyValidator.getInstance().assertOneOrLess(Property.STATUS,
 107.313 +                getProperties());
 107.314 +        PropertyValidator.getInstance().assertOneOrLess(Property.SUMMARY,
 107.315 +                getProperties());
 107.316 +        PropertyValidator.getInstance().assertOneOrLess(Property.UID,
 107.317 +                getProperties());
 107.318 +        PropertyValidator.getInstance().assertOneOrLess(Property.URL,
 107.319 +                getProperties());
 107.320 +
 107.321 +        final Status status = (Status) getProperty(Property.STATUS);
 107.322 +        if (status != null && !Status.VTODO_NEEDS_ACTION.getValue().equals(status.getValue())
 107.323 +                && !Status.VTODO_COMPLETED.getValue().equals(status.getValue())
 107.324 +                && !Status.VTODO_IN_PROCESS.getValue().equals(status.getValue())
 107.325 +                && !Status.VTODO_CANCELLED.getValue().equals(status.getValue())) {
 107.326 +            throw new ValidationException("Status property ["
 107.327 +                    + status.toString() + "] may not occur in VTODO");
 107.328 +        }
 107.329 +
 107.330 +        /*
 107.331 +         * ; either 'due' or 'duration' may appear in ; a 'todoprop', but 'due' and 'duration' ; MUST NOT occur in the
 107.332 +         * same 'todoprop' due / duration /
 107.333 +         */
 107.334 +        try {
 107.335 +            PropertyValidator.getInstance().assertNone(Property.DUE,
 107.336 +                    getProperties());
 107.337 +        }
 107.338 +        catch (ValidationException ve) {
 107.339 +            PropertyValidator.getInstance().assertNone(Property.DURATION,
 107.340 +                    getProperties());
 107.341 +        }
 107.342 +
 107.343 +        /*
 107.344 +         * ; the following are optional, ; and MAY occur more than once attach / attendee / categories / comment /
 107.345 +         * contact / exdate / exrule / rstatus / related / resources / rdate / rrule / x-prop
 107.346 +         */
 107.347 +
 107.348 +        if (recurse) {
 107.349 +            validateProperties();
 107.350 +        }
 107.351 +    }
 107.352 +
 107.353 +    /**
 107.354 +     * {@inheritDoc}
 107.355 +     */
 107.356 +    protected Validator getValidator(Method method) {
 107.357 +        return (Validator) methodValidators.get(method);
 107.358 +    }
 107.359 +
 107.360 +    /**
 107.361 +     * <pre>
 107.362 +     * Component/Property  Presence
 107.363 +     * ------------------- ----------------------------------------------
 107.364 +     * METHOD                1       MUST be "ADD"
 107.365 +     * VTODO                 1
 107.366 +     *     DTSTAMP           1
 107.367 +     *     ORGANIZER         1
 107.368 +     *     PRIORITY          1
 107.369 +     *     SEQUENCE          1       MUST be greater than 0
 107.370 +     *     SUMMARY           1       Can be null.
 107.371 +     *     UID               1       MUST match that of the original to-do
 107.372 +     * 
 107.373 +     *     ATTACH            0+
 107.374 +     *     ATTENDEE          0+
 107.375 +     *     CATEGORIES        0 or 1  This property may contain a list of
 107.376 +     *                               values
 107.377 +     *     CLASS             0 or 1
 107.378 +     *     COMMENT           0 or 1
 107.379 +     *     CONTACT           0+
 107.380 +     *     CREATED           0 or 1
 107.381 +     *     DESCRIPTION       0 or 1  Can be null
 107.382 +     *     DTSTART           0 or 1
 107.383 +     *     DUE               0 or 1  If present DURATION MUST NOT be present
 107.384 +     *     DURATION          0 or 1  If present DUE MUST NOT be present
 107.385 +     *     EXDATE            0+
 107.386 +     *     EXRULE            0+
 107.387 +     *     GEO               0 or 1
 107.388 +     *     LAST-MODIFIED     0 or 1
 107.389 +     *     LOCATION          0 or 1
 107.390 +     *     PERCENT-COMPLETE  0 or 1
 107.391 +     *     RDATE             0+
 107.392 +     *     RELATED-TO        0+
 107.393 +     *     RESOURCES         0 or 1  This property may contain a list of
 107.394 +     *                               values
 107.395 +     *     RRULE             0+
 107.396 +     *     STATUS            0 or 1  MAY be one of COMPLETED/NEEDS ACTION/IN-
 107.397 +     *                               PROCESS
 107.398 +     *     URL               0 or 1
 107.399 +     *     X-PROPERTY        0+
 107.400 +     * 
 107.401 +     *     RECURRENCE-ID     0
 107.402 +     *     REQUEST-STATUS    0
 107.403 +     * 
 107.404 +     * VALARM                0+
 107.405 +     * VTIMEZONE             0+      MUST be present if any date/time refers
 107.406 +     *                               to a timezone
 107.407 +     * X-COMPONENT           0+
 107.408 +     * 
 107.409 +     * VEVENT                0
 107.410 +     * VJOURNAL              0
 107.411 +     * VFREEBUSY             0
 107.412 +     * </pre>
 107.413 +     * 
 107.414 +     */
 107.415 +    private class AddValidator implements Validator {
 107.416 +        
 107.417 +		private static final long serialVersionUID = 1L;
 107.418 +
 107.419 +        public void validate() throws ValidationException {
 107.420 +            PropertyValidator.getInstance().assertOne(Property.DTSTAMP, getProperties());
 107.421 +            PropertyValidator.getInstance().assertOne(Property.ORGANIZER, getProperties());
 107.422 +            PropertyValidator.getInstance().assertOne(Property.PRIORITY, getProperties());
 107.423 +            PropertyValidator.getInstance().assertOne(Property.SEQUENCE, getProperties());
 107.424 +            PropertyValidator.getInstance().assertOne(Property.SUMMARY, getProperties());
 107.425 +            PropertyValidator.getInstance().assertOne(Property.UID, getProperties());
 107.426 +            
 107.427 +            PropertyValidator.getInstance().assertOneOrLess(Property.CATEGORIES, getProperties());
 107.428 +            PropertyValidator.getInstance().assertOneOrLess(Property.CLASS, getProperties());
 107.429 +            PropertyValidator.getInstance().assertOneOrLess(Property.COMMENT, getProperties());
 107.430 +            PropertyValidator.getInstance().assertOneOrLess(Property.CREATED, getProperties());
 107.431 +            PropertyValidator.getInstance().assertOneOrLess(Property.DESCRIPTION, getProperties());
 107.432 +            PropertyValidator.getInstance().assertOneOrLess(Property.DTSTART, getProperties());
 107.433 +            PropertyValidator.getInstance().assertOneOrLess(Property.DUE, getProperties());
 107.434 +            PropertyValidator.getInstance().assertOneOrLess(Property.DURATION, getProperties());
 107.435 +            PropertyValidator.getInstance().assertOneOrLess(Property.GEO, getProperties());
 107.436 +            PropertyValidator.getInstance().assertOneOrLess(Property.LAST_MODIFIED, getProperties());
 107.437 +            PropertyValidator.getInstance().assertOneOrLess(Property.LOCATION, getProperties());
 107.438 +            PropertyValidator.getInstance().assertOneOrLess(Property.PERCENT_COMPLETE, getProperties());
 107.439 +            PropertyValidator.getInstance().assertOneOrLess(Property.RESOURCES, getProperties());
 107.440 +            PropertyValidator.getInstance().assertOneOrLess(Property.STATUS, getProperties());
 107.441 +            PropertyValidator.getInstance().assertOneOrLess(Property.URL, getProperties());
 107.442 +            
 107.443 +            PropertyValidator.getInstance().assertNone(Property.RECURRENCE_ID, getProperties());
 107.444 +            PropertyValidator.getInstance().assertNone(Property.REQUEST_STATUS, getProperties());
 107.445 +            
 107.446 +            for (final Iterator i = getAlarms().iterator(); i.hasNext();) {
 107.447 +                final VAlarm alarm = (VAlarm) i.next();
 107.448 +                alarm.validate(Method.ADD);
 107.449 +            }
 107.450 +        }
 107.451 +    }
 107.452 +    
 107.453 +    /**
 107.454 +     * <pre>
 107.455 +     * Component/Property   Presence
 107.456 +     * -------------------  ---------------------------------------------
 107.457 +     * METHOD               1     MUST be "CANCEL"
 107.458 +     * VTODO                1
 107.459 +     *     ATTENDEE         0+    include all "Attendees" being removed from
 107.460 +     *                            the todo. MUST include all "Attendees" if
 107.461 +     *                            the entire todo is cancelled.
 107.462 +     *     UID              1     MUST echo original UID
 107.463 +     *     DTSTAMP          1
 107.464 +     *     ORGANIZER        1
 107.465 +     *     SEQUENCE         1
 107.466 +     * 
 107.467 +     *     ATTACH           0+
 107.468 +     *     CATEGORIES       0 or 1 This property MAY contain a list of values
 107.469 +     *     CLASS            0 or 1
 107.470 +     *     COMMENT          0 or 1
 107.471 +     *     CONTACT          0+
 107.472 +     *     CREATED          0 or 1
 107.473 +     *     DESCRIPTION      0 or 1
 107.474 +     *     DTSTART          0 or 1
 107.475 +     *     DUE              0 or 1  If present DURATION MUST NOT be present
 107.476 +     *     DURATION         0 or 1  If present DUE MUST NOT be present
 107.477 +     *     EXDATE           0+
 107.478 +     *     EXRULE           0+
 107.479 +     *     GEO              0 or 1
 107.480 +     *     LAST-MODIFIED    0 or 1
 107.481 +     *     LOCATION         0 or 1
 107.482 +     *     PERCENT-COMPLETE 0 or 1
 107.483 +     *     RDATE            0+
 107.484 +     *     RECURRENCE-ID    0 or 1 MUST only if referring to one or more
 107.485 +     *                             instances of a recurring calendar
 107.486 +     *                             component. Otherwise it MUST NOT be
 107.487 +     *                             present.
 107.488 +     *     RELATED-TO       0+
 107.489 +     *     RESOURCES        0 or 1 This property MAY contain a list of values
 107.490 +     *     RRULE            0+
 107.491 +     *     PRIORITY         0 or 1
 107.492 +     *     STATUS           0 or 1  If present it MUST be set to "CANCELLED".
 107.493 +     *                              MUST NOT be used if purpose is to remove
 107.494 +     *                              "ATTENDEES" rather than cancel the entire
 107.495 +     *                              VTODO.
 107.496 +     *     URL              0 or 1
 107.497 +     *     X-PROPERTY       0+
 107.498 +     * 
 107.499 +     *     REQUEST-STATUS   0
 107.500 +     * 
 107.501 +     * VTIMEZONE            0 or 1  MUST be present if any date/time refers to
 107.502 +     *                              a timezone
 107.503 +     * X-COMPONENT          0+
 107.504 +     * 
 107.505 +     * VALARM               0
 107.506 +     * VEVENT               0
 107.507 +     * VFREEBUSY            0
 107.508 +     * </pre>
 107.509 +     * 
 107.510 +     */
 107.511 +    private class CancelValidator implements Validator {
 107.512 +        
 107.513 +		private static final long serialVersionUID = 1L;
 107.514 +
 107.515 +        public void validate() throws ValidationException {
 107.516 +            PropertyValidator.getInstance().assertOne(Property.UID, getProperties());
 107.517 +            PropertyValidator.getInstance().assertOne(Property.DTSTAMP, getProperties());
 107.518 +            PropertyValidator.getInstance().assertOne(Property.ORGANIZER, getProperties());
 107.519 +            PropertyValidator.getInstance().assertOne(Property.SEQUENCE, getProperties());
 107.520 +            
 107.521 +            PropertyValidator.getInstance().assertOneOrLess(Property.CATEGORIES, getProperties());
 107.522 +            PropertyValidator.getInstance().assertOneOrLess(Property.CLASS, getProperties());
 107.523 +            PropertyValidator.getInstance().assertOneOrLess(Property.COMMENT, getProperties());
 107.524 +            PropertyValidator.getInstance().assertOneOrLess(Property.CREATED, getProperties());
 107.525 +            PropertyValidator.getInstance().assertOneOrLess(Property.DESCRIPTION, getProperties());
 107.526 +            PropertyValidator.getInstance().assertOneOrLess(Property.DTSTART, getProperties());
 107.527 +            PropertyValidator.getInstance().assertOneOrLess(Property.DUE, getProperties());
 107.528 +            PropertyValidator.getInstance().assertOneOrLess(Property.DURATION, getProperties());
 107.529 +            PropertyValidator.getInstance().assertOneOrLess(Property.GEO, getProperties());
 107.530 +            PropertyValidator.getInstance().assertOneOrLess(Property.LAST_MODIFIED, getProperties());
 107.531 +            PropertyValidator.getInstance().assertOneOrLess(Property.LOCATION, getProperties());
 107.532 +            PropertyValidator.getInstance().assertOneOrLess(Property.PERCENT_COMPLETE, getProperties());
 107.533 +            PropertyValidator.getInstance().assertOneOrLess(Property.RECURRENCE_ID, getProperties());
 107.534 +            PropertyValidator.getInstance().assertOneOrLess(Property.RESOURCES, getProperties());
 107.535 +            PropertyValidator.getInstance().assertOneOrLess(Property.PRIORITY, getProperties());
 107.536 +            PropertyValidator.getInstance().assertOneOrLess(Property.STATUS, getProperties());
 107.537 +            PropertyValidator.getInstance().assertOneOrLess(Property.URL, getProperties());
 107.538 +            
 107.539 +            PropertyValidator.getInstance().assertNone(Property.REQUEST_STATUS, getProperties());
 107.540 +            
 107.541 +            ComponentValidator.assertNone(Component.VALARM, getAlarms());
 107.542 +        }
 107.543 +    }
 107.544 +    
 107.545 +    /**
 107.546 +     * <pre>
 107.547 +     * Component/Property  Presence
 107.548 +     * ------------------- ----------------------------------------------
 107.549 +     * METHOD               1      MUST be "COUNTER"
 107.550 +     * VTODO                1
 107.551 +     *     ATTENDEE         1+
 107.552 +     *     DTSTAMP          1
 107.553 +     *     ORGANIZER        1
 107.554 +     *     PRIORITY         1
 107.555 +     *     SUMMARY          1      Can be null
 107.556 +     *     UID              1
 107.557 +     * 
 107.558 +     *     ATTACH           0+
 107.559 +     *     CATEGORIES       0 or 1 This property MAY contain a list of values
 107.560 +     *     CLASS            0 or 1
 107.561 +     *     COMMENT          0 or 1
 107.562 +     *     CONTACT          0+
 107.563 +     *     CREATED          0 or 1
 107.564 +     *     DESCRIPTION      0 or 1 Can be null
 107.565 +     *     DTSTART          0 or 1
 107.566 +     *     DUE              0 or 1  If present DURATION MUST NOT be present
 107.567 +     *     DURATION         0 or 1  If present DUE MUST NOT be present
 107.568 +     *     EXDATE           0+
 107.569 +     *     EXRULE           0+
 107.570 +     *     GEO              0 or 1
 107.571 +     *     LAST-MODIFIED    0 or 1
 107.572 +     *     LOCATION         0 or 1
 107.573 +     *     PERCENT-COMPLETE 0 or 1
 107.574 +     *     RDATE            0+
 107.575 +     *     RECURRENCE-ID    0 or 1 MUST only 3.5if referring to an instance of a
 107.576 +     *                             recurring calendar component.  Otherwise it
 107.577 +     *                             MUST NOT be present.
 107.578 +     *     RELATED-TO       0+
 107.579 +     *     REQUEST-STATUS   0+
 107.580 +     *     RESOURCES        0 or 1 This property MAY contain a list of values
 107.581 +     *     RRULE            0 or 1
 107.582 +     *     SEQUENCE         0 or 1 MUST echo the original SEQUENCE number.
 107.583 +     *                             MUST be present if non-zero. MAY be present
 107.584 +     *                             if zero.
 107.585 +     *     STATUS           0 or 1 MAY be one of COMPLETED/NEEDS ACTION/IN-
 107.586 +     *                             PROCESS/CANCELLED
 107.587 +     *     URL              0 or 1
 107.588 +     *     X-PROPERTY       0+
 107.589 +     * 
 107.590 +     * 
 107.591 +     * VALARM               0+
 107.592 +     * VTIMEZONE            0 or 1  MUST be present if any date/time refers to
 107.593 +     *                              a timezone
 107.594 +     * X-COMPONENT          0+
 107.595 +     * 
 107.596 +     * VEVENT               0
 107.597 +     * VFREEBUSY            0
 107.598 +     * </pre>
 107.599 +     * 
 107.600 +     */
 107.601 +    private class CounterValidator implements Validator {
 107.602 +        
 107.603 +		private static final long serialVersionUID = 1L;
 107.604 +
 107.605 +        public void validate() throws ValidationException {
 107.606 +            PropertyValidator.getInstance().assertOneOrMore(Property.ATTENDEE, getProperties());
 107.607 +            
 107.608 +            PropertyValidator.getInstance().assertOne(Property.DTSTAMP, getProperties());
 107.609 +            PropertyValidator.getInstance().assertOne(Property.ORGANIZER, getProperties());
 107.610 +            PropertyValidator.getInstance().assertOne(Property.PRIORITY, getProperties());
 107.611 +            PropertyValidator.getInstance().assertOne(Property.SUMMARY, getProperties());
 107.612 +            PropertyValidator.getInstance().assertOne(Property.UID, getProperties());
 107.613 +            
 107.614 +            PropertyValidator.getInstance().assertOneOrLess(Property.CATEGORIES, getProperties());
 107.615 +            PropertyValidator.getInstance().assertOneOrLess(Property.CLASS, getProperties());
 107.616 +            PropertyValidator.getInstance().assertOneOrLess(Property.COMMENT, getProperties());
 107.617 +            PropertyValidator.getInstance().assertOneOrLess(Property.CREATED, getProperties());
 107.618 +            PropertyValidator.getInstance().assertOneOrLess(Property.DESCRIPTION, getProperties());
 107.619 +            PropertyValidator.getInstance().assertOneOrLess(Property.DTSTART, getProperties());
 107.620 +            PropertyValidator.getInstance().assertOneOrLess(Property.DUE, getProperties());
 107.621 +            PropertyValidator.getInstance().assertOneOrLess(Property.DURATION, getProperties());
 107.622 +            PropertyValidator.getInstance().assertOneOrLess(Property.GEO, getProperties());
 107.623 +            PropertyValidator.getInstance().assertOneOrLess(Property.LAST_MODIFIED, getProperties());
 107.624 +            PropertyValidator.getInstance().assertOneOrLess(Property.LOCATION, getProperties());
 107.625 +            PropertyValidator.getInstance().assertOneOrLess(Property.PERCENT_COMPLETE, getProperties());
 107.626 +            PropertyValidator.getInstance().assertOneOrLess(Property.RECURRENCE_ID, getProperties());
 107.627 +            PropertyValidator.getInstance().assertOneOrLess(Property.RESOURCES, getProperties());
 107.628 +            PropertyValidator.getInstance().assertOneOrLess(Property.RRULE, getProperties());
 107.629 +            PropertyValidator.getInstance().assertOneOrLess(Property.SEQUENCE, getProperties());
 107.630 +            PropertyValidator.getInstance().assertOneOrLess(Property.STATUS, getProperties());
 107.631 +            PropertyValidator.getInstance().assertOneOrLess(Property.URL, getProperties());
 107.632 +            
 107.633 +            for (final Iterator i = getAlarms().iterator(); i.hasNext();) {
 107.634 +                final VAlarm alarm = (VAlarm) i.next();
 107.635 +                alarm.validate(Method.COUNTER);
 107.636 +            }
 107.637 +        }
 107.638 +    }
 107.639 +    
 107.640 +    /**
 107.641 +     * <pre>
 107.642 +     * Component/Property   Presence
 107.643 +     * -------------------  ---------------------------------------------
 107.644 +     * METHOD               1       MUST be "DECLINECOUNTER"
 107.645 +     * 
 107.646 +     * VTODO                1
 107.647 +     *     ATTENDEE         1+      MUST for all attendees
 107.648 +     *     DTSTAMP          1
 107.649 +     *     ORGANIZER        1
 107.650 +     *     SEQUENCE         1       MUST echo the original SEQUENCE number
 107.651 +     *     UID              1       MUST echo original UID
 107.652 +     *     ATTACH           0+
 107.653 +     *     CATEGORIES       0 or 1  This property may contain a list of values
 107.654 +     *     CLASS            0 or 1
 107.655 +     *     COMMENT          0 or 1
 107.656 +     *     CONTACT          0+
 107.657 +     *     CREATED          0 or 1
 107.658 +     *     DESCRIPTION      0 or 1
 107.659 +     *     DTSTART          0 or 1
 107.660 +     *     DUE              0 or 1  If present DURATION MUST NOT be present
 107.661 +     *     DURATION         0 or 1  If present DUE MUST NOT be present
 107.662 +     *     EXDATE           0+
 107.663 +     *     EXRULE           0+
 107.664 +     *     GEO              0 or 1
 107.665 +     *     LAST-MODIFIED    0 or 1
 107.666 +     *     LOCATION         0 or 1
 107.667 +     *     PERCENT-COMPLETE 0 or 1
 107.668 +     *     PRIORITY         0 or 1
 107.669 +     *     RDATE            0+
 107.670 +     *     RECURRENCE-ID    0 or 1  MUST only if referring to an instance of a
 107.671 +     *                              recurring calendar component.  Otherwise
 107.672 +     *                              it MUST NOT be present.
 107.673 +     *     RELATED-TO       0+
 107.674 +     *     REQUEST-STATUS   0+
 107.675 +     *     RESOURCES        0 or 1  This property MAY contain a list of values
 107.676 +     *     RRULE            0+
 107.677 +     *     STATUS           0 or 1  MAY be one of COMPLETED/NEEDS ACTION/IN-
 107.678 +     *                              PROCESS
 107.679 +     *     URL              0 or 1
 107.680 +     *     X-PROPERTY       0+
 107.681 +     * 
 107.682 +     * VTIMEZONE            0+  MUST be present if any date/time refers to
 107.683 +     *                          a timezone
 107.684 +     * X-COMPONENT          0+
 107.685 +     * 
 107.686 +     * VALARM               0
 107.687 +     * VEVENT               0
 107.688 +     * VFREEBUSY            0
 107.689 +     * </pre>
 107.690 +     * 
 107.691 +     */
 107.692 +    private class DeclineCounterValidator implements Validator {
 107.693 +        
 107.694 +		private static final long serialVersionUID = 1L;
 107.695 +
 107.696 +        public void validate() throws ValidationException {
 107.697 +            PropertyValidator.getInstance().assertOneOrMore(Property.ATTENDEE, getProperties());
 107.698 +            
 107.699 +            PropertyValidator.getInstance().assertOne(Property.DTSTAMP, getProperties());
 107.700 +            PropertyValidator.getInstance().assertOne(Property.ORGANIZER, getProperties());
 107.701 +            PropertyValidator.getInstance().assertOne(Property.SEQUENCE, getProperties());
 107.702 +            PropertyValidator.getInstance().assertOne(Property.UID, getProperties());
 107.703 +            
 107.704 +            PropertyValidator.getInstance().assertOneOrLess(Property.CATEGORIES, getProperties());
 107.705 +            PropertyValidator.getInstance().assertOneOrLess(Property.CLASS, getProperties());
 107.706 +            PropertyValidator.getInstance().assertOneOrLess(Property.COMMENT, getProperties());
 107.707 +            PropertyValidator.getInstance().assertOneOrLess(Property.CREATED, getProperties());
 107.708 +            PropertyValidator.getInstance().assertOneOrLess(Property.DESCRIPTION, getProperties());
 107.709 +            PropertyValidator.getInstance().assertOneOrLess(Property.DTSTART, getProperties());
 107.710 +            PropertyValidator.getInstance().assertOneOrLess(Property.DUE, getProperties());
 107.711 +            PropertyValidator.getInstance().assertOneOrLess(Property.DURATION, getProperties());
 107.712 +            PropertyValidator.getInstance().assertOneOrLess(Property.GEO, getProperties());
 107.713 +            PropertyValidator.getInstance().assertOneOrLess(Property.LAST_MODIFIED, getProperties());
 107.714 +            PropertyValidator.getInstance().assertOneOrLess(Property.LOCATION, getProperties());
 107.715 +            PropertyValidator.getInstance().assertOneOrLess(Property.PERCENT_COMPLETE, getProperties());
 107.716 +            PropertyValidator.getInstance().assertOneOrLess(Property.PRIORITY, getProperties());
 107.717 +            PropertyValidator.getInstance().assertOneOrLess(Property.RECURRENCE_ID, getProperties());
 107.718 +            PropertyValidator.getInstance().assertOneOrLess(Property.RESOURCES, getProperties());
 107.719 +            PropertyValidator.getInstance().assertOneOrLess(Property.STATUS, getProperties());
 107.720 +            PropertyValidator.getInstance().assertOneOrLess(Property.URL, getProperties());
 107.721 +            
 107.722 +            ComponentValidator.assertNone(Component.VALARM, getAlarms());
 107.723 +        }
 107.724 +    }
 107.725 +    
 107.726 +    /**
 107.727 +     * <pre>
 107.728 +     * Component/Property  Presence
 107.729 +     * ------------------- ----------------------------------------------
 107.730 +     * METHOD               1       MUST be "PUBLISH"
 107.731 +     * VTODO                1+
 107.732 +     *     DTSTAMP          1
 107.733 +     *     DTSTART          1
 107.734 +     *     ORGANIZER        1
 107.735 +     *     PRIORITY         1
 107.736 +     *     SEQUENCE         0 or 1  MUST be present if value is greater than
 107.737 +     *                              0, MAY be present if 0
 107.738 +     *     SUMMARY          1       Can be null.
 107.739 +     *     UID              1
 107.740 +     * 
 107.741 +     *     ATTACH           0+
 107.742 +     *     CATEGORIES       0 or 1  This property may contain a list of values
 107.743 +     *     CLASS            0 or 1
 107.744 +     *     COMMENT          0 or 1
 107.745 +     *     CONTACT          0+
 107.746 +     *     CREATED          0 or 1
 107.747 +     *     DESCRIPTION      0 or 1  Can be null
 107.748 +     *     DUE              0 or 1  If present DURATION MUST NOT be present
 107.749 +     *     DURATION         0 or 1  If present DUE MUST NOT be present
 107.750 +     *     EXDATE           0+
 107.751 +     *     EXRULE           0+
 107.752 +     *     GEO              0 or 1
 107.753 +     *     LAST-MODIFIED    0 or 1
 107.754 +     *     LOCATION         0 or 1
 107.755 +     *     PERCENT-COMPLETE 0 or 1
 107.756 +     *     RDATE            0+
 107.757 +     *     RECURRENCE-ID    0 or 1  MUST only if referring to an instance of a
 107.758 +     *                              recurring calendar component.  Otherwise
 107.759 +     *                              it MUST NOT be present.
 107.760 +     * 
 107.761 +     *     RELATED-TO       0+
 107.762 +     *     RESOURCES        0 or 1  This property may contain a list of values
 107.763 +     *     RRULE            0+
 107.764 +     *     STATUS           0 or 1  MAY be one of COMPLETED/NEEDS ACTION/IN-
 107.765 +     *                              PROCESS/CANCELLED
 107.766 +     *     URL              0 or 1
 107.767 +     *     X-PROPERTY       0+
 107.768 +     * 
 107.769 +     *     ATTENDEE         0
 107.770 +     *     REQUEST-STATUS   0
 107.771 +     * 
 107.772 +     * VTIMEZONE            0+    MUST be present if any date/time refers to
 107.773 +     *                            a timezone
 107.774 +     * VALARM               0+
 107.775 +     * X-COMPONENT          0+
 107.776 +     * 
 107.777 +     * VFREEBUSY            0
 107.778 +     * VEVENT               0
 107.779 +     * VJOURNAL             0
 107.780 +     * </pre>
 107.781 +     * 
 107.782 +     */
 107.783 +    private class PublishValidator implements Validator {
 107.784 +        
 107.785 +		private static final long serialVersionUID = 1L;
 107.786 +
 107.787 +        public void validate() throws ValidationException {
 107.788 +            PropertyValidator.getInstance().assertOne(Property.DTSTAMP, getProperties());
 107.789 +            
 107.790 +            if (!CompatibilityHints.isHintEnabled(CompatibilityHints.KEY_RELAXED_VALIDATION)) {
 107.791 +                PropertyValidator.getInstance().assertOne(Property.ORGANIZER, getProperties());
 107.792 +                PropertyValidator.getInstance().assertOne(Property.PRIORITY, getProperties());
 107.793 +            }
 107.794 +            
 107.795 +            PropertyValidator.getInstance().assertOne(Property.SUMMARY, getProperties());
 107.796 +            PropertyValidator.getInstance().assertOne(Property.UID, getProperties());
 107.797 +            
 107.798 +            // DTSTART: RFC2446 conflicts with RCF2445..
 107.799 +            PropertyValidator.getInstance().assertOneOrLess(Property.DTSTART, getProperties());
 107.800 +            PropertyValidator.getInstance().assertOneOrLess(Property.SEQUENCE, getProperties());
 107.801 +            PropertyValidator.getInstance().assertOneOrLess(Property.CATEGORIES, getProperties());
 107.802 +            PropertyValidator.getInstance().assertOneOrLess(Property.CLASS, getProperties());
 107.803 +            PropertyValidator.getInstance().assertOneOrLess(Property.COMMENT, getProperties());
 107.804 +            PropertyValidator.getInstance().assertOneOrLess(Property.CREATED, getProperties());
 107.805 +            PropertyValidator.getInstance().assertOneOrLess(Property.DESCRIPTION, getProperties());
 107.806 +            PropertyValidator.getInstance().assertOneOrLess(Property.DUE, getProperties());
 107.807 +            PropertyValidator.getInstance().assertOneOrLess(Property.DURATION, getProperties());
 107.808 +            PropertyValidator.getInstance().assertOneOrLess(Property.GEO, getProperties());
 107.809 +            PropertyValidator.getInstance().assertOneOrLess(Property.LAST_MODIFIED, getProperties());
 107.810 +            PropertyValidator.getInstance().assertOneOrLess(Property.LOCATION, getProperties());
 107.811 +            PropertyValidator.getInstance().assertOneOrLess(Property.PERCENT_COMPLETE, getProperties());
 107.812 +            PropertyValidator.getInstance().assertOneOrLess(Property.RECURRENCE_ID, getProperties());
 107.813 +            PropertyValidator.getInstance().assertOneOrLess(Property.RESOURCES, getProperties());
 107.814 +            PropertyValidator.getInstance().assertOneOrLess(Property.STATUS, getProperties());
 107.815 +            PropertyValidator.getInstance().assertOneOrLess(Property.URL, getProperties());
 107.816 +            
 107.817 +            PropertyValidator.getInstance().assertNone(Property.ATTENDEE, getProperties());
 107.818 +            PropertyValidator.getInstance().assertNone(Property.REQUEST_STATUS, getProperties());
 107.819 +            
 107.820 +            for (final Iterator i = getAlarms().iterator(); i.hasNext();) {
 107.821 +                final VAlarm alarm = (VAlarm) i.next();
 107.822 +                alarm.validate(Method.PUBLISH);
 107.823 +            }
 107.824 +        }
 107.825 +    }
 107.826 +    
 107.827 +    /**
 107.828 +     * <pre>
 107.829 +     * Component/Property   Presence
 107.830 +     * -------------------  ---------------------------------------------
 107.831 +     * METHOD               1      MUST be "REFRESH"
 107.832 +     * VTODO                1
 107.833 +     *     ATTENDEE         1
 107.834 +     *     DTSTAMP          1
 107.835 +     *     UID              1       MUST echo original UID
 107.836 +     * 
 107.837 +     *     RECURRENCE-ID    0 or 1  MUST only if referring to an instance of a
 107.838 +     *                              Recurring calendar component. Otherwise it
 107.839 +     *                              MUST NOT be present
 107.840 +     *     X-PROPERTY       0+
 107.841 +     * 
 107.842 +     *     ATTACH           0
 107.843 +     *     CATEGORIES       0
 107.844 +     *     CLASS            0
 107.845 +     *     COMMENT          0
 107.846 +     *     CONTACT          0
 107.847 +     *     CREATED          0
 107.848 +     *     DESCRIPTION      0
 107.849 +     *     DTSTART          0
 107.850 +     *     DUE              0
 107.851 +     *     DURATION         0
 107.852 +     *     EXDATE           0
 107.853 +     *     EXRULE           0
 107.854 +     *     GEO              0
 107.855 +     *     LAST-MODIFIED    0
 107.856 +     *     LOCATION         0
 107.857 +     *     ORGANIZER        0
 107.858 +     *     PERCENT-COMPLETE 0
 107.859 +     *     PRIORITY         0
 107.860 +     *     RDATE            0
 107.861 +     *     RELATED-TO       0
 107.862 +     *     REQUEST-STATUS   0
 107.863 +     *     RESOURCES        0
 107.864 +     *     RRULE            0
 107.865 +     *     SEQUENCE         0
 107.866 +     *     STATUS           0
 107.867 +     *     URL              0
 107.868 +     * 
 107.869 +     * X-COMPONENT          0+
 107.870 +     * 
 107.871 +     * VALARM               0
 107.872 +     * VEVENT               0
 107.873 +     * VFREEBUSY            0
 107.874 +     * VTIMEZONE            0
 107.875 +     * </pre>
 107.876 +     * 
 107.877 +     */
 107.878 +    private class RefreshValidator implements Validator {
 107.879 +        
 107.880 +		private static final long serialVersionUID = 1L;
 107.881 +
 107.882 +        public void validate() throws ValidationException {
 107.883 +            PropertyValidator.getInstance().assertOne(Property.ATTENDEE, getProperties());
 107.884 +            PropertyValidator.getInstance().assertOne(Property.DTSTAMP, getProperties());
 107.885 +            PropertyValidator.getInstance().assertOne(Property.UID, getProperties());
 107.886 +            
 107.887 +            PropertyValidator.getInstance().assertOneOrLess(Property.RECURRENCE_ID, getProperties());
 107.888 +            
 107.889 +            PropertyValidator.getInstance().assertNone(Property.ATTACH, getProperties());
 107.890 +            PropertyValidator.getInstance().assertNone(Property.CATEGORIES, getProperties());
 107.891 +            PropertyValidator.getInstance().assertNone(Property.CLASS, getProperties());
 107.892 +            PropertyValidator.getInstance().assertNone(Property.COMMENT, getProperties());
 107.893 +            PropertyValidator.getInstance().assertNone(Property.CONTACT, getProperties());
 107.894 +            PropertyValidator.getInstance().assertNone(Property.CREATED, getProperties());
 107.895 +            PropertyValidator.getInstance().assertNone(Property.DESCRIPTION, getProperties());
 107.896 +            PropertyValidator.getInstance().assertNone(Property.DTSTART, getProperties());
 107.897 +            PropertyValidator.getInstance().assertNone(Property.DUE, getProperties());
 107.898 +            PropertyValidator.getInstance().assertNone(Property.DURATION, getProperties());
 107.899 +            PropertyValidator.getInstance().assertNone(Property.EXDATE, getProperties());
 107.900 +            PropertyValidator.getInstance().assertNone(Property.EXRULE, getProperties());
 107.901 +            PropertyValidator.getInstance().assertNone(Property.GEO, getProperties());
 107.902 +            PropertyValidator.getInstance().assertNone(Property.LAST_MODIFIED, getProperties());
 107.903 +            PropertyValidator.getInstance().assertNone(Property.LOCATION, getProperties());
 107.904 +            PropertyValidator.getInstance().assertNone(Property.ORGANIZER, getProperties());
 107.905 +            PropertyValidator.getInstance().assertNone(Property.PERCENT_COMPLETE, getProperties());
 107.906 +            PropertyValidator.getInstance().assertNone(Property.PRIORITY, getProperties());
 107.907 +            PropertyValidator.getInstance().assertNone(Property.RDATE, getProperties());
 107.908 +            PropertyValidator.getInstance().assertNone(Property.RELATED_TO, getProperties());
 107.909 +            PropertyValidator.getInstance().assertNone(Property.REQUEST_STATUS, getProperties());
 107.910 +            PropertyValidator.getInstance().assertNone(Property.RESOURCES, getProperties());
 107.911 +            PropertyValidator.getInstance().assertNone(Property.RRULE, getProperties());
 107.912 +            PropertyValidator.getInstance().assertNone(Property.SEQUENCE, getProperties());
 107.913 +            PropertyValidator.getInstance().assertNone(Property.STATUS, getProperties());
 107.914 +            PropertyValidator.getInstance().assertNone(Property.URL, getProperties());
 107.915 +            
 107.916 +            ComponentValidator.assertNone(Component.VALARM, getAlarms());
 107.917 +        }
 107.918 +    }
 107.919 +    
 107.920 +    /**
 107.921 +     * <pre>
 107.922 +     * Component/Property   Presence
 107.923 +     * -------------------  ---------------------------------------------
 107.924 +     * METHOD               1      MUST be "REPLY"
 107.925 +     * VTODO                1+     All component MUST have the same UID
 107.926 +     *     ATTENDEE         1+
 107.927 +     *     DTSTAMP          1
 107.928 +     *     ORGANIZER        1
 107.929 +     *     UID              1      MUST must be the address of the replying
 107.930 +     *                             attendee
 107.931 +     *     REQUEST-STATUS   0+
 107.932 +     *     ATTACH           0+
 107.933 +     *     CATEGORIES       0 or 1 This property may contain a list of values
 107.934 +     *     CLASS            0 or 1
 107.935 +     *     COMMENT          0 or 1
 107.936 +     *     CONTACT          0+
 107.937 +     *     CREATED          0 or 1
 107.938 +     *     DESCRIPTION      0 or 1
 107.939 +     *     DTSTART          0 or 1
 107.940 +     *     DUE              0 or 1  If present DURATION MUST NOT be present
 107.941 +     *     DURATION         0 or 1  If present DUE MUST NOT be present
 107.942 +     *     EXDATE           0+
 107.943 +     *     EXRULE           0+
 107.944 +     *     GEO              0 or 1
 107.945 +     *     LAST-MODIFIED    0 or 1
 107.946 +     *     LOCATION         0 or 1
 107.947 +     *     PERCENT-COMPLETE 0 or 1
 107.948 +     *     PRIORITY         0 or 1
 107.949 +     *     RDATE            0+
 107.950 +     *     RELATED-TO       0+
 107.951 +     *     RESOURCES        0 or 1  This property may contain a list of values
 107.952 +     *     RRULE            0+
 107.953 +     *     RECURRENCE-ID    0 or 1  MUST only if referring to an instance of a
 107.954 +     *                              Recurring calendar component. Otherwise it
 107.955 +     *                              MUST NOT be present
 107.956 +     *     SEQUENCE         0 or 1  MUST be the sequence number of
 107.957 +     *                              the original REQUEST if greater than 0.
 107.958 +     *                              MAY be present if 0.
 107.959 +     *     STATUS           0 or 1
 107.960 +     *     SUMMARY          0 or 1  Can be null
 107.961 +     *     URL              0 or 1
 107.962 +     *     X-PROPERTY       0+
 107.963 +     * 
 107.964 +     * VTIMEZONE            0 or 1  MUST be present if any date/time refers to
 107.965 +     *                              a timezone
 107.966 +     * X-COMPONENT          0+
 107.967 +     * 
 107.968 +     * VALARM               0
 107.969 +     * VEVENT               0
 107.970 +     * VFREEBUSY            0
 107.971 +     * </pre>
 107.972 +     * 
 107.973 +     */
 107.974 +    private class ReplyValidator implements Validator {
 107.975 +        
 107.976 +		private static final long serialVersionUID = 1L;
 107.977 +
 107.978 +        public void validate() throws ValidationException {
 107.979 +            PropertyValidator.getInstance().assertOneOrMore(Property.ATTENDEE, getProperties());
 107.980 +            
 107.981 +            PropertyValidator.getInstance().assertOne(Property.DTSTAMP, getProperties());
 107.982 +            PropertyValidator.getInstance().assertOne(Property.ORGANIZER, getProperties());
 107.983 +            PropertyValidator.getInstance().assertOne(Property.UID, getProperties());
 107.984 +
 107.985 +            PropertyValidator.getInstance().assertOneOrLess(Property.CATEGORIES, getProperties());
 107.986 +            PropertyValidator.getInstance().assertOneOrLess(Property.CLASS, getProperties());
 107.987 +            PropertyValidator.getInstance().assertOneOrLess(Property.COMMENT, getProperties());
 107.988 +            PropertyValidator.getInstance().assertOneOrLess(Property.CREATED, getProperties());
 107.989 +            PropertyValidator.getInstance().assertOneOrLess(Property.DESCRIPTION, getProperties());
 107.990 +            PropertyValidator.getInstance().assertOneOrLess(Property.DTSTART, getProperties());
 107.991 +            PropertyValidator.getInstance().assertOneOrLess(Property.DUE, getProperties());
 107.992 +            PropertyValidator.getInstance().assertOneOrLess(Property.DURATION, getProperties());
 107.993 +            PropertyValidator.getInstance().assertOneOrLess(Property.GEO, getProperties());
 107.994 +            PropertyValidator.getInstance().assertOneOrLess(Property.LAST_MODIFIED, getProperties());
 107.995 +            PropertyValidator.getInstance().assertOneOrLess(Property.LOCATION, getProperties());
 107.996 +            PropertyValidator.getInstance().assertOneOrLess(Property.PERCENT_COMPLETE, getProperties());
 107.997 +            PropertyValidator.getInstance().assertOneOrLess(Property.PRIORITY, getProperties());
 107.998 +            PropertyValidator.getInstance().assertOneOrLess(Property.RESOURCES, getProperties());
 107.999 +            PropertyValidator.getInstance().assertOneOrLess(Property.RECURRENCE_ID, getProperties());
107.1000 +            PropertyValidator.getInstance().assertOneOrLess(Property.SEQUENCE, getProperties());
107.1001 +            PropertyValidator.getInstance().assertOneOrLess(Property.STATUS, getProperties());
107.1002 +            PropertyValidator.getInstance().assertOneOrLess(Property.SUMMARY, getProperties());
107.1003 +            PropertyValidator.getInstance().assertOneOrLess(Property.URL, getProperties());
107.1004 +            
107.1005 +            ComponentValidator.assertNone(Component.VALARM, getAlarms());
107.1006 +        }
107.1007 +    }
107.1008 +    
107.1009 +    /**
107.1010 +     * <pre>
107.1011 +     * Component/Property  Presence
107.1012 +     * ------------------- ----------------------------------------------
107.1013 +     * METHOD                1       MUST be "REQUEST"
107.1014 +     * VTODO                 1+      All components must have the same UID
107.1015 +     *     ATTENDEE          1+
107.1016 +     *     DTSTAMP           1
107.1017 +     *     DTSTART           1
107.1018 +     *     ORGANIZER         1
107.1019 +     *     PRIORITY          1
107.1020 +     *     SEQUENCE          0 or 1  MUST be present if value is greater than
107.1021 +     *                               0, MAY be present if 0
107.1022 +     *     SUMMARY           1       Can be null.
107.1023 +     *     UID               1
107.1024 +     * 
107.1025 +     *     ATTACH            0+
107.1026 +     *     CATEGORIES        0 or 1   This property may contain a list of
107.1027 +     *                                values
107.1028 +     *     CLASS             0 or 1
107.1029 +     *     COMMENT           0 or 1
107.1030 +     *     CONTACT           0+
107.1031 +     *     CREATED           0 or 1
107.1032 +     *     DESCRIPTION       0 or 1  Can be null
107.1033 +     *     DUE               0 or 1  If present DURATION MUST NOT be present
107.1034 +     *     DURATION          0 or 1  If present DUE MUST NOT be present
107.1035 +     *     EXDATE            0+
107.1036 +     *     EXRULE            0+
107.1037 +     *     GEO               0 or 1
107.1038 +     *     LAST-MODIFIED     0 or 1
107.1039 +     *     LOCATION          0 or 1
107.1040 +     *     PERCENT-COMPLETE  0 or 1
107.1041 +     *     RDATE             0+
107.1042 +     *     RECURRENCE-ID     0 or 1  present if referring to an instance of a
107.1043 +     *                               recurring calendar component.  Otherwise
107.1044 +     *                               it MUST NOT be present.
107.1045 +     *     RELATED-TO        0+
107.1046 +     *     RESOURCES         0 or 1  This property may contain a list of
107.1047 +     *                               values
107.1048 +     *     RRULE             0+
107.1049 +     *     STATUS            0 or 1  MAY be one of COMPLETED/NEEDS ACTION/IN-
107.1050 +     *                               PROCESS
107.1051 +     *     URL               0 or 1
107.1052 +     *     X-PROPERTY        0+
107.1053 +     * 
107.1054 +     *     REQUEST-STATUS    0
107.1055 +     * 
107.1056 +     * VALARM                0+
107.1057 +     * 
107.1058 +     * VTIMEZONE             0+  MUST be present if any date/time refers
107.1059 +     *                           to a timezone
107.1060 +     * X-COMPONENT           0+
107.1061 +     * 
107.1062 +     * VEVENT                0
107.1063 +     * VFREEBUSY             0
107.1064 +     * VJOURNAL              0
107.1065 +     * </pre>
107.1066 +     * 
107.1067 +     */
107.1068 +    private class RequestValidator implements Validator {
107.1069 +        
107.1070 +		private static final long serialVersionUID = 1L;
107.1071 +
107.1072 +        public void validate() throws ValidationException {
107.1073 +            PropertyValidator.getInstance().assertOneOrMore(Property.ATTENDEE, getProperties());
107.1074 +            
107.1075 +            PropertyValidator.getInstance().assertOne(Property.DTSTAMP, getProperties());
107.1076 +            PropertyValidator.getInstance().assertOne(Property.DTSTART, getProperties());
107.1077 +            PropertyValidator.getInstance().assertOne(Property.ORGANIZER, getProperties());
107.1078 +            PropertyValidator.getInstance().assertOne(Property.PRIORITY, getProperties());
107.1079 +            PropertyValidator.getInstance().assertOne(Property.SUMMARY, getProperties());
107.1080 +            PropertyValidator.getInstance().assertOne(Property.UID, getProperties());
107.1081 +            
107.1082 +            PropertyValidator.getInstance().assertOneOrLess(Property.SEQUENCE, getProperties());
107.1083 +            PropertyValidator.getInstance().assertOneOrLess(Property.CATEGORIES, getProperties());
107.1084 +            PropertyValidator.getInstance().assertOneOrLess(Property.CLASS, getProperties());
107.1085 +            PropertyValidator.getInstance().assertOneOrLess(Property.COMMENT, getProperties());
107.1086 +            PropertyValidator.getInstance().assertOneOrLess(Property.CREATED, getProperties());
107.1087 +            PropertyValidator.getInstance().assertOneOrLess(Property.DESCRIPTION, getProperties());
107.1088 +            PropertyValidator.getInstance().assertOneOrLess(Property.DUE, getProperties());
107.1089 +            PropertyValidator.getInstance().assertOneOrLess(Property.DURATION, getProperties());
107.1090 +            PropertyValidator.getInstance().assertOneOrLess(Property.GEO, getProperties());
107.1091 +            PropertyValidator.getInstance().assertOneOrLess(Property.LAST_MODIFIED, getProperties());
107.1092 +            PropertyValidator.getInstance().assertOneOrLess(Property.LOCATION, getProperties());
107.1093 +            PropertyValidator.getInstance().assertOneOrLess(Property.PERCENT_COMPLETE, getProperties());
107.1094 +            PropertyValidator.getInstance().assertOneOrLess(Property.RECURRENCE_ID, getProperties());
107.1095 +            PropertyValidator.getInstance().assertOneOrLess(Property.RESOURCES, getProperties());
107.1096 +            PropertyValidator.getInstance().assertOneOrLess(Property.STATUS, getProperties());
107.1097 +            PropertyValidator.getInstance().assertOneOrLess(Property.URL, getProperties());
107.1098 +            
107.1099 +            PropertyValidator.getInstance().assertNone(Property.REQUEST_STATUS, getProperties());
107.1100 +            
107.1101 +            for (final Iterator i = getAlarms().iterator(); i.hasNext();) {
107.1102 +                final VAlarm alarm = (VAlarm) i.next();
107.1103 +                alarm.validate(Method.REQUEST);
107.1104 +            }
107.1105 +        }
107.1106 +    }
107.1107 +    
107.1108 +    /**
107.1109 +     * @return the optional access classification property
107.1110 +     */
107.1111 +    public final Clazz getClassification() {
107.1112 +        return (Clazz) getProperty(Property.CLASS);
107.1113 +    }
107.1114 +
107.1115 +    /**
107.1116 +     * @return the optional date completed property
107.1117 +     */
107.1118 +    public final Completed getDateCompleted() {
107.1119 +        return (Completed) getProperty(Property.COMPLETED);
107.1120 +    }
107.1121 +
107.1122 +    /**
107.1123 +     * @return the optional creation-time property
107.1124 +     */
107.1125 +    public final Created getCreated() {
107.1126 +        return (Created) getProperty(Property.CREATED);
107.1127 +    }
107.1128 +
107.1129 +    /**
107.1130 +     * @return the optional description property
107.1131 +     */
107.1132 +    public final Description getDescription() {
107.1133 +        return (Description) getProperty(Property.DESCRIPTION);
107.1134 +    }
107.1135 +
107.1136 +    /**
107.1137 +     * Convenience method to pull the DTSTART out of the property list.
107.1138 +     * @return The DtStart object representation of the start Date
107.1139 +     */
107.1140 +    public final DtStart getStartDate() {
107.1141 +        return (DtStart) getProperty(Property.DTSTART);
107.1142 +    }
107.1143 +
107.1144 +    /**
107.1145 +     * @return the optional geographic position property
107.1146 +     */
107.1147 +    public final Geo getGeographicPos() {
107.1148 +        return (Geo) getProperty(Property.GEO);
107.1149 +    }
107.1150 +
107.1151 +    /**
107.1152 +     * @return the optional last-modified property
107.1153 +     */
107.1154 +    public final LastModified getLastModified() {
107.1155 +        return (LastModified) getProperty(Property.LAST_MODIFIED);
107.1156 +    }
107.1157 +
107.1158 +    /**
107.1159 +     * @return the optional location property
107.1160 +     */
107.1161 +    public final Location getLocation() {
107.1162 +        return (Location) getProperty(Property.LOCATION);
107.1163 +    }
107.1164 +
107.1165 +    /**
107.1166 +     * @return the optional organizer property
107.1167 +     */
107.1168 +    public final Organizer getOrganizer() {
107.1169 +        return (Organizer) getProperty(Property.ORGANIZER);
107.1170 +    }
107.1171 +
107.1172 +    /**
107.1173 +     * @return the optional percentage complete property
107.1174 +     */
107.1175 +    public final PercentComplete getPercentComplete() {
107.1176 +        return (PercentComplete) getProperty(Property.PERCENT_COMPLETE);
107.1177 +    }
107.1178 +
107.1179 +    /**
107.1180 +     * @return the optional priority property
107.1181 +     */
107.1182 +    public final Priority getPriority() {
107.1183 +        return (Priority) getProperty(Property.PRIORITY);
107.1184 +    }
107.1185 +
107.1186 +    /**
107.1187 +     * @return the optional date-stamp property
107.1188 +     */
107.1189 +    public final DtStamp getDateStamp() {
107.1190 +        return (DtStamp) getProperty(Property.DTSTAMP);
107.1191 +    }
107.1192 +
107.1193 +    /**
107.1194 +     * @return the optional sequence number property
107.1195 +     */
107.1196 +    public final Sequence getSequence() {
107.1197 +        return (Sequence) getProperty(Property.SEQUENCE);
107.1198 +    }
107.1199 +
107.1200 +    /**
107.1201 +     * @return the optional status property
107.1202 +     */
107.1203 +    public final Status getStatus() {
107.1204 +        return (Status) getProperty(Property.STATUS);
107.1205 +    }
107.1206 +
107.1207 +    /**
107.1208 +     * @return the optional summary property
107.1209 +     */
107.1210 +    public final Summary getSummary() {
107.1211 +        return (Summary) getProperty(Property.SUMMARY);
107.1212 +    }
107.1213 +
107.1214 +    /**
107.1215 +     * @return the optional URL property
107.1216 +     */
107.1217 +    public final Url getUrl() {
107.1218 +        return (Url) getProperty(Property.URL);
107.1219 +    }
107.1220 +
107.1221 +    /**
107.1222 +     * @return the optional recurrence identifier property
107.1223 +     */
107.1224 +    public final RecurrenceId getRecurrenceId() {
107.1225 +        return (RecurrenceId) getProperty(Property.RECURRENCE_ID);
107.1226 +    }
107.1227 +
107.1228 +    /**
107.1229 +     * @return the optional Duration property
107.1230 +     */
107.1231 +    public final Duration getDuration() {
107.1232 +        return (Duration) getProperty(Property.DURATION);
107.1233 +    }
107.1234 +
107.1235 +    /**
107.1236 +     * @return the optional due property
107.1237 +     */
107.1238 +    public final Due getDue() {
107.1239 +        return (Due) getProperty(Property.DUE);
107.1240 +    }
107.1241 +
107.1242 +    /**
107.1243 +     * Returns the UID property of this component if available.
107.1244 +     * @return a Uid instance, or null if no UID property exists
107.1245 +     */
107.1246 +    public final Uid getUid() {
107.1247 +        return (Uid) getProperty(Property.UID);
107.1248 +    }
107.1249 +
107.1250 +    /**
107.1251 +     * {@inheritDoc}
107.1252 +     */
107.1253 +    public boolean equals(final Object arg0) {
107.1254 +        if (arg0 instanceof VToDo) {
107.1255 +            return super.equals(arg0)
107.1256 +                    && ObjectUtils.equals(alarms, ((VToDo) arg0).getAlarms());
107.1257 +        }
107.1258 +        return super.equals(arg0);
107.1259 +    }
107.1260 +
107.1261 +    /**
107.1262 +     * {@inheritDoc}
107.1263 +     */
107.1264 +    public int hashCode() {
107.1265 +        return new HashCodeBuilder().append(getName()).append(getProperties())
107.1266 +                .append(getAlarms()).toHashCode();
107.1267 +    }
107.1268 +
107.1269 +    /**
107.1270 +     * Overrides default copy method to add support for copying alarm sub-components.
107.1271 +     * @return a copy of the instance
107.1272 +     * @throws ParseException where an error occurs parsing data
107.1273 +     * @throws IOException where an error occurs reading data
107.1274 +     * @throws URISyntaxException where an invalid URI is encountered
107.1275 +     * @see net.fortuna.ical4j.model.Component#copy()
107.1276 +     */
107.1277 +    public Component copy() throws ParseException, IOException, URISyntaxException {
107.1278 +        final VToDo copy = (VToDo) super.copy();
107.1279 +        copy.alarms = new ComponentList(alarms);
107.1280 +        return copy;
107.1281 +    }
107.1282 +}
   108.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   108.2 +++ b/src/net/fortuna/ical4j/model/component/VVenue.java	Tue Feb 10 18:12:00 2015 +0100
   108.3 @@ -0,0 +1,196 @@
   108.4 +/**
   108.5 + * Copyright (c) 2012, Ben Fortuna
   108.6 + * All rights reserved.
   108.7 + *
   108.8 + * Redistribution and use in source and binary forms, with or without
   108.9 + * modification, are permitted provided that the following conditions
  108.10 + * are met:
  108.11 + *
  108.12 + *  o Redistributions of source code must retain the above copyright
  108.13 + * notice, this list of conditions and the following disclaimer.
  108.14 + *
  108.15 + *  o Redistributions in binary form must reproduce the above copyright
  108.16 + * notice, this list of conditions and the following disclaimer in the
  108.17 + * documentation and/or other materials provided with the distribution.
  108.18 + *
  108.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  108.20 + * may be used to endorse or promote products derived from this software
  108.21 + * without specific prior written permission.
  108.22 + *
  108.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  108.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  108.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  108.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  108.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  108.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  108.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  108.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  108.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  108.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  108.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  108.34 + */
  108.35 +package net.fortuna.ical4j.model.component;
  108.36 +
  108.37 +import net.fortuna.ical4j.model.Property;
  108.38 +import net.fortuna.ical4j.model.PropertyList;
  108.39 +import net.fortuna.ical4j.model.ValidationException;
  108.40 +import net.fortuna.ical4j.model.Validator;
  108.41 +import net.fortuna.ical4j.model.property.Method;
  108.42 +import net.fortuna.ical4j.util.PropertyValidator;
  108.43 +import net.fortuna.ical4j.util.Strings;
  108.44 +
  108.45 +/**
  108.46 + * $Id $ [Apr 5, 2004]
  108.47 + *
  108.48 + * Defines an iCalendar VVENUE component.
  108.49 + *
  108.50 + * <pre>
  108.51 + * 4.  Venue Component
  108.52 + *
  108.53 + *    Component Name: "VVENUE"
  108.54 + *
  108.55 + *    Purpose: Provide a grouping of component properties that describe an
  108.56 + *    event venue.
  108.57 + *
  108.58 + *    Format Definition: A "VVENUE" calendar component is defined by the
  108.59 + *    following notation:
  108.60 + *      venuec  = "BEGIN" ":" "VVENUE" CRLF
  108.61 + *              venueprop
  108.62 + *              "END" ":" "VVENUE" CRLF
  108.63 + *
  108.64 + *      venueprop  = *(
  108.65 + *
  108.66 + *                ; the following are all REQUIRED,
  108.67 + *                ; but MUST NOT occur more than once
  108.68 + *
  108.69 + *                uid
  108.70 + *
  108.71 + *                ; the following are optional,
  108.72 + *                ; but MUST NOT occur more than once
  108.73 + *
  108.74 + *                name / description / street-address / extended-address /
  108.75 + *                locality / region / country / postal-code / tzid / geo /
  108.76 + *                location-type / categories
  108.77 + *
  108.78 + *                ; the following are optional,
  108.79 + *                ; and MAY occur more than once
  108.80 + *
  108.81 + *                tel / url
  108.82 + *              )
  108.83 + *
  108.84 + *    Description: A "VVENUE" calendar component is a grouping of component
  108.85 + *    properties that represent a venue where an event occurs.  This
  108.86 + *    extends the "LOCATION" property of "VEVENT" and "TODO" components,
  108.87 + *    providing the ability to specify detailed information about the event
  108.88 + *    venue.
  108.89 + *
  108.90 + * </pre>
  108.91 + *
  108.92 + * @author Ben Fortuna
  108.93 + * @author Mike Douglass
  108.94 + */
  108.95 +public class VVenue extends CalendarComponent {
  108.96 +
  108.97 +	private static final long serialVersionUID = 4502423035501438515L;
  108.98 +
  108.99 +	/**
 108.100 +     * Default constructor.
 108.101 +     */
 108.102 +    public VVenue() {
 108.103 +        super(VVENUE);
 108.104 +    }
 108.105 +
 108.106 +    /**
 108.107 +     * Constructs a new instance containing the specified properties.
 108.108 +     * @param properties a list of properties
 108.109 +     */
 108.110 +    public VVenue(final PropertyList properties) {
 108.111 +        super(VVENUE, properties);
 108.112 +    }
 108.113 +
 108.114 +    /**
 108.115 +     * {@inheritDoc}
 108.116 +     */
 108.117 +    public final String toString() {
 108.118 +        final StringBuffer b = new StringBuffer();
 108.119 +        b.append(BEGIN);
 108.120 +        b.append(':');
 108.121 +        b.append(getName());
 108.122 +        b.append(Strings.LINE_SEPARATOR);
 108.123 +        b.append(getProperties());
 108.124 +        b.append(END);
 108.125 +        b.append(':');
 108.126 +        b.append(getName());
 108.127 +        b.append(Strings.LINE_SEPARATOR);
 108.128 +        return b.toString();
 108.129 +    }
 108.130 +
 108.131 +    /**
 108.132 +     * {@inheritDoc}
 108.133 +     */
 108.134 +    public final void validate(final boolean recurse)
 108.135 +            throws ValidationException {
 108.136 +
 108.137 +        /*
 108.138 +         * ; 'uiid' is required, but MUST NOT occur more ; than once uiid /
 108.139 +         */
 108.140 +        PropertyValidator.getInstance().assertOne(Property.UID,
 108.141 +                getProperties());
 108.142 +
 108.143 +        /*
 108.144 +         *                ; the following are optional,
 108.145 +         *                ; but MUST NOT occur more than once
 108.146 +         *
 108.147 +         *                name / description / street-address / extended-address /
 108.148 +         *                locality / region / country / postal-code / tzid / geo /
 108.149 +         *                location-type / categories /
 108.150 +         *                dtstamp / created / last-modified
 108.151 +         */
 108.152 +        PropertyValidator.getInstance().assertOneOrLess(Property.NAME,
 108.153 +                getProperties());
 108.154 +        PropertyValidator.getInstance().assertOneOrLess(Property.DESCRIPTION,
 108.155 +                getProperties());
 108.156 +        PropertyValidator.getInstance().assertOneOrLess(Property.STREET_ADDRESS,
 108.157 +                getProperties());
 108.158 +        PropertyValidator.getInstance().assertOneOrLess(Property.EXTENDED_ADDRESS,
 108.159 +                getProperties());
 108.160 +        PropertyValidator.getInstance().assertOneOrLess(Property.LOCALITY,
 108.161 +                getProperties());
 108.162 +        PropertyValidator.getInstance().assertOneOrLess(Property.REGION,
 108.163 +                getProperties());
 108.164 +        PropertyValidator.getInstance().assertOneOrLess(Property.COUNTRY,
 108.165 +                getProperties());
 108.166 +        PropertyValidator.getInstance().assertOneOrLess(Property.POSTALCODE,
 108.167 +                getProperties());
 108.168 +        PropertyValidator.getInstance().assertOneOrLess(Property.TZID,
 108.169 +                getProperties());
 108.170 +        PropertyValidator.getInstance().assertOneOrLess(Property.GEO,
 108.171 +                getProperties());
 108.172 +        PropertyValidator.getInstance().assertOneOrLess(Property.LOCATION_TYPE,
 108.173 +                getProperties());
 108.174 +        PropertyValidator.getInstance().assertOneOrLess(Property.CATEGORIES,
 108.175 +                getProperties());
 108.176 +        PropertyValidator.getInstance().assertOneOrLess(Property.DTSTAMP,
 108.177 +                getProperties());
 108.178 +        PropertyValidator.getInstance().assertOneOrLess(Property.CREATED,
 108.179 +                getProperties());
 108.180 +        PropertyValidator.getInstance().assertOneOrLess(Property.LAST_MODIFIED,
 108.181 +                getProperties());
 108.182 +
 108.183 +        /*
 108.184 +         * ; the following is optional, ; and MAY occur more than once tel / url / x-prop
 108.185 +         */
 108.186 +
 108.187 +        if (recurse) {
 108.188 +            validateProperties();
 108.189 +        }
 108.190 +    }
 108.191 +
 108.192 +    /**
 108.193 +     * {@inheritDoc}
 108.194 +     */
 108.195 +    protected Validator getValidator(Method method) {
 108.196 +        // No method validation required.. 
 108.197 +        return EMPTY_VALIDATOR;
 108.198 +    }
 108.199 +}
   109.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   109.2 +++ b/src/net/fortuna/ical4j/model/component/XComponent.java	Tue Feb 10 18:12:00 2015 +0100
   109.3 @@ -0,0 +1,95 @@
   109.4 +/**
   109.5 + * Copyright (c) 2012, Ben Fortuna
   109.6 + * All rights reserved.
   109.7 + *
   109.8 + * Redistribution and use in source and binary forms, with or without
   109.9 + * modification, are permitted provided that the following conditions
  109.10 + * are met:
  109.11 + *
  109.12 + *  o Redistributions of source code must retain the above copyright
  109.13 + * notice, this list of conditions and the following disclaimer.
  109.14 + *
  109.15 + *  o Redistributions in binary form must reproduce the above copyright
  109.16 + * notice, this list of conditions and the following disclaimer in the
  109.17 + * documentation and/or other materials provided with the distribution.
  109.18 + *
  109.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  109.20 + * may be used to endorse or promote products derived from this software
  109.21 + * without specific prior written permission.
  109.22 + *
  109.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  109.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  109.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  109.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  109.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  109.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  109.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  109.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  109.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  109.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  109.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  109.34 + */
  109.35 +package net.fortuna.ical4j.model.component;
  109.36 +
  109.37 +import net.fortuna.ical4j.model.PropertyList;
  109.38 +import net.fortuna.ical4j.model.ValidationException;
  109.39 +import net.fortuna.ical4j.model.Validator;
  109.40 +import net.fortuna.ical4j.model.property.Method;
  109.41 +import net.fortuna.ical4j.util.CompatibilityHints;
  109.42 +
  109.43 +/**
  109.44 + * $Id$
  109.45 + *
  109.46 + * Created on 3/11/2005
  109.47 + *
  109.48 + * Implementation of an experimental component as defined in RFC2445.
  109.49 + * @author Ben Fortuna
  109.50 + */
  109.51 +public class XComponent extends CalendarComponent {
  109.52 +
  109.53 +    private static final long serialVersionUID = -3622674849097714927L;
  109.54 +
  109.55 +    /**
  109.56 +     * Creates a new experimental component with the specified name.
  109.57 +     * @param name the name of the experimental component
  109.58 +     */
  109.59 +    public XComponent(final String name) {
  109.60 +        super(name);
  109.61 +    }
  109.62 +
  109.63 +    /**
  109.64 +     * Creates a new experimental component with the specified name and properties.
  109.65 +     * @param name the name of the experimental component
  109.66 +     * @param properties a list of properties
  109.67 +     */
  109.68 +    public XComponent(final String name, final PropertyList properties) {
  109.69 +        super(name, properties);
  109.70 +    }
  109.71 +
  109.72 +    /**
  109.73 +     * {@inheritDoc}
  109.74 +     */
  109.75 +    public final void validate(final boolean recurse)
  109.76 +            throws ValidationException {
  109.77 +        
  109.78 +        if (!CompatibilityHints.isHintEnabled(CompatibilityHints.KEY_RELAXED_VALIDATION)
  109.79 +                && !getName().startsWith(EXPERIMENTAL_PREFIX)) {
  109.80 +            
  109.81 +            throw new ValidationException(
  109.82 +                    "Experimental components must have the following prefix: "
  109.83 +                            + EXPERIMENTAL_PREFIX);
  109.84 +        }
  109.85 +        
  109.86 +        if (recurse) {
  109.87 +            validateProperties();
  109.88 +        }
  109.89 +    }
  109.90 +    
  109.91 +    /**
  109.92 +     * {@inheritDoc}
  109.93 +     */
  109.94 +    protected Validator getValidator(Method method) {
  109.95 +        // No method validation required.. 
  109.96 +        return EMPTY_VALIDATOR;
  109.97 +    }
  109.98 +}
   110.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   110.2 +++ b/src/net/fortuna/ical4j/model/parameter/Abbrev.java	Tue Feb 10 18:12:00 2015 +0100
   110.3 @@ -0,0 +1,67 @@
   110.4 +/**
   110.5 + * Copyright (c) 2012, Ben Fortuna
   110.6 + * All rights reserved.
   110.7 + *
   110.8 + * Redistribution and use in source and binary forms, with or without
   110.9 + * modification, are permitted provided that the following conditions
  110.10 + * are met:
  110.11 + *
  110.12 + *  o Redistributions of source code must retain the above copyright
  110.13 + * notice, this list of conditions and the following disclaimer.
  110.14 + *
  110.15 + *  o Redistributions in binary form must reproduce the above copyright
  110.16 + * notice, this list of conditions and the following disclaimer in the
  110.17 + * documentation and/or other materials provided with the distribution.
  110.18 + *
  110.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  110.20 + * may be used to endorse or promote products derived from this software
  110.21 + * without specific prior written permission.
  110.22 + *
  110.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  110.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  110.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  110.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  110.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  110.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  110.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  110.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  110.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  110.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  110.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  110.34 + */
  110.35 +package net.fortuna.ical4j.model.parameter;
  110.36 +
  110.37 +import net.fortuna.ical4j.model.Parameter;
  110.38 +import net.fortuna.ical4j.model.ParameterFactoryImpl;
  110.39 +import net.fortuna.ical4j.util.Strings;
  110.40 +
  110.41 +/**
  110.42 + * $Id$ [18-Apr-2004]
  110.43 + * 
  110.44 + * Defines an Abbreviation parameter.
  110.45 + * 
  110.46 + * @author benfortuna
  110.47 + * @author Mike Douglass
  110.48 + */
  110.49 +public class Abbrev extends Parameter {
  110.50 +
  110.51 +    private static final long serialVersionUID = -8650841407406422738L;
  110.52 +
  110.53 +    private String value;
  110.54 +
  110.55 +    /**
  110.56 +     * @param aValue
  110.57 +     *            a string abbreviation
  110.58 +     */
  110.59 +    public Abbrev(final String aValue) {
  110.60 +        super(ABBREV, ParameterFactoryImpl.getInstance());
  110.61 +        this.value = Strings.unquote(aValue);
  110.62 +    }
  110.63 +
  110.64 +    /**
  110.65 +     * {@inheritDoc}
  110.66 +     */
  110.67 +    public final String getValue() {
  110.68 +        return value;
  110.69 +    }
  110.70 +}
   111.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   111.2 +++ b/src/net/fortuna/ical4j/model/parameter/AltRep.java	Tue Feb 10 18:12:00 2015 +0100
   111.3 @@ -0,0 +1,83 @@
   111.4 +/**
   111.5 + * Copyright (c) 2012, Ben Fortuna
   111.6 + * All rights reserved.
   111.7 + *
   111.8 + * Redistribution and use in source and binary forms, with or without
   111.9 + * modification, are permitted provided that the following conditions
  111.10 + * are met:
  111.11 + *
  111.12 + *  o Redistributions of source code must retain the above copyright
  111.13 + * notice, this list of conditions and the following disclaimer.
  111.14 + *
  111.15 + *  o Redistributions in binary form must reproduce the above copyright
  111.16 + * notice, this list of conditions and the following disclaimer in the
  111.17 + * documentation and/or other materials provided with the distribution.
  111.18 + *
  111.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  111.20 + * may be used to endorse or promote products derived from this software
  111.21 + * without specific prior written permission.
  111.22 + *
  111.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  111.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  111.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  111.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  111.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  111.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  111.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  111.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  111.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  111.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  111.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  111.34 + */
  111.35 +package net.fortuna.ical4j.model.parameter;
  111.36 +
  111.37 +import java.net.URI;
  111.38 +import java.net.URISyntaxException;
  111.39 +
  111.40 +import net.fortuna.ical4j.model.Parameter;
  111.41 +import net.fortuna.ical4j.model.ParameterFactoryImpl;
  111.42 +import net.fortuna.ical4j.util.Strings;
  111.43 +import net.fortuna.ical4j.util.Uris;
  111.44 +
  111.45 +/**
  111.46 + * $Id$ [18-Apr-2004]
  111.47 + *
  111.48 + * Defines an Alternate Text Representation parameter.
  111.49 + * @author benfortuna
  111.50 + */
  111.51 +public class AltRep extends Parameter {
  111.52 +
  111.53 +    private static final long serialVersionUID = -2445932592596993470L;
  111.54 +
  111.55 +    private URI uri;
  111.56 +
  111.57 +    /**
  111.58 +     * @param aValue a string representation of an alternate text represenation
  111.59 +     * @throws URISyntaxException when the specified string is not a value (quoted) uri
  111.60 +     */
  111.61 +    public AltRep(final String aValue) throws URISyntaxException {
  111.62 +        this(Uris.create(Strings.unquote(aValue)));
  111.63 +    }
  111.64 +
  111.65 +    /**
  111.66 +     * @param aUri a URI representing an alternate text representation
  111.67 +     */
  111.68 +    public AltRep(final URI aUri) {
  111.69 +        super(ALTREP, ParameterFactoryImpl.getInstance());
  111.70 +        this.uri = aUri;
  111.71 +    }
  111.72 +
  111.73 +    /**
  111.74 +     * @return Returns the uri.
  111.75 +     */
  111.76 +    public final URI getUri() {
  111.77 +        return uri;
  111.78 +    }
  111.79 +
  111.80 +    /**
  111.81 +     * {@inheritDoc}
  111.82 +     */
  111.83 +    public final String getValue() {
  111.84 +        return Uris.decode(Strings.valueOf(getUri()));
  111.85 +    }
  111.86 +}
   112.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   112.2 +++ b/src/net/fortuna/ical4j/model/parameter/Cn.java	Tue Feb 10 18:12:00 2015 +0100
   112.3 @@ -0,0 +1,64 @@
   112.4 +/**
   112.5 + * Copyright (c) 2012, Ben Fortuna
   112.6 + * All rights reserved.
   112.7 + *
   112.8 + * Redistribution and use in source and binary forms, with or without
   112.9 + * modification, are permitted provided that the following conditions
  112.10 + * are met:
  112.11 + *
  112.12 + *  o Redistributions of source code must retain the above copyright
  112.13 + * notice, this list of conditions and the following disclaimer.
  112.14 + *
  112.15 + *  o Redistributions in binary form must reproduce the above copyright
  112.16 + * notice, this list of conditions and the following disclaimer in the
  112.17 + * documentation and/or other materials provided with the distribution.
  112.18 + *
  112.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  112.20 + * may be used to endorse or promote products derived from this software
  112.21 + * without specific prior written permission.
  112.22 + *
  112.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  112.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  112.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  112.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  112.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  112.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  112.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  112.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  112.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  112.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  112.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  112.34 + */
  112.35 +package net.fortuna.ical4j.model.parameter;
  112.36 +
  112.37 +import net.fortuna.ical4j.model.Parameter;
  112.38 +import net.fortuna.ical4j.model.ParameterFactoryImpl;
  112.39 +import net.fortuna.ical4j.util.Strings;
  112.40 +
  112.41 +/**
  112.42 + * $Id$ [18-Apr-2004]
  112.43 + *
  112.44 + * Defines a Common Name parameter.
  112.45 + * @author benfortuna
  112.46 + */
  112.47 +public class Cn extends Parameter {
  112.48 +
  112.49 +    private static final long serialVersionUID = -8087119055007093293L;
  112.50 +
  112.51 +    private String value;
  112.52 +
  112.53 +    /**
  112.54 +     * @param aValue a string representation of a Common Name
  112.55 +     */
  112.56 +    public Cn(final String aValue) {
  112.57 +        super(CN, ParameterFactoryImpl.getInstance());
  112.58 +        this.value = Strings.unquote(aValue);
  112.59 +    }
  112.60 +
  112.61 +    /**
  112.62 +     * {@inheritDoc}
  112.63 +     */
  112.64 +    public final String getValue() {
  112.65 +        return value;
  112.66 +    }
  112.67 +}
   113.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   113.2 +++ b/src/net/fortuna/ical4j/model/parameter/CuType.java	Tue Feb 10 18:12:00 2015 +0100
   113.3 @@ -0,0 +1,99 @@
   113.4 +/**
   113.5 + * Copyright (c) 2012, Ben Fortuna
   113.6 + * All rights reserved.
   113.7 + *
   113.8 + * Redistribution and use in source and binary forms, with or without
   113.9 + * modification, are permitted provided that the following conditions
  113.10 + * are met:
  113.11 + *
  113.12 + *  o Redistributions of source code must retain the above copyright
  113.13 + * notice, this list of conditions and the following disclaimer.
  113.14 + *
  113.15 + *  o Redistributions in binary form must reproduce the above copyright
  113.16 + * notice, this list of conditions and the following disclaimer in the
  113.17 + * documentation and/or other materials provided with the distribution.
  113.18 + *
  113.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  113.20 + * may be used to endorse or promote products derived from this software
  113.21 + * without specific prior written permission.
  113.22 + *
  113.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  113.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  113.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  113.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  113.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  113.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  113.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  113.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  113.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  113.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  113.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  113.34 + */
  113.35 +package net.fortuna.ical4j.model.parameter;
  113.36 +
  113.37 +import net.fortuna.ical4j.model.Parameter;
  113.38 +import net.fortuna.ical4j.model.ParameterFactoryImpl;
  113.39 +import net.fortuna.ical4j.util.Strings;
  113.40 +
  113.41 +/**
  113.42 + * $Id$ [18-Apr-2004]
  113.43 + *
  113.44 + * Defines a Calendar User Type.
  113.45 + * @author benfortuna
  113.46 + */
  113.47 +public class CuType extends Parameter {
  113.48 +
  113.49 +    private static final long serialVersionUID = -3134064324693983052L;
  113.50 +
  113.51 +    private static final String VALUE_INDIVIDUAL = "INDIVIDUAL";
  113.52 +
  113.53 +    private static final String VALUE_GROUP = "GROUP";
  113.54 +
  113.55 +    private static final String VALUE_RESOURCE = "RESOURCE";
  113.56 +
  113.57 +    private static final String VALUE_ROOM = "ROOM";
  113.58 +
  113.59 +    private static final String VALUE_UNKNOWN = "UNKNOWN";
  113.60 +
  113.61 +    /**
  113.62 +     * Individual.
  113.63 +     */
  113.64 +    public static final CuType INDIVIDUAL = new CuType(VALUE_INDIVIDUAL);
  113.65 +
  113.66 +    /**
  113.67 +     * Group.
  113.68 +     */
  113.69 +    public static final CuType GROUP = new CuType(VALUE_GROUP);
  113.70 +
  113.71 +    /**
  113.72 +     * Resource.
  113.73 +     */
  113.74 +    public static final CuType RESOURCE = new CuType(VALUE_RESOURCE);
  113.75 +
  113.76 +    /**
  113.77 +     * Room.
  113.78 +     */
  113.79 +    public static final CuType ROOM = new CuType(VALUE_ROOM);
  113.80 +
  113.81 +    /**
  113.82 +     * Unknown.
  113.83 +     */
  113.84 +    public static final CuType UNKNOWN = new CuType(VALUE_UNKNOWN);
  113.85 +
  113.86 +    private String value;
  113.87 +
  113.88 +    /**
  113.89 +     * @param aValue a string representation of a Calendar User Type
  113.90 +     */
  113.91 +    public CuType(final String aValue) {
  113.92 +        super(CUTYPE, ParameterFactoryImpl.getInstance());
  113.93 +        this.value = Strings.unquote(aValue);
  113.94 +    }
  113.95 +
  113.96 +    /**
  113.97 +     * {@inheritDoc}
  113.98 +     */
  113.99 +    public final String getValue() {
 113.100 +        return value;
 113.101 +    }
 113.102 +}
   114.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   114.2 +++ b/src/net/fortuna/ical4j/model/parameter/DelegatedFrom.java	Tue Feb 10 18:12:00 2015 +0100
   114.3 @@ -0,0 +1,90 @@
   114.4 +/**
   114.5 + * Copyright (c) 2012, Ben Fortuna
   114.6 + * All rights reserved.
   114.7 + *
   114.8 + * Redistribution and use in source and binary forms, with or without
   114.9 + * modification, are permitted provided that the following conditions
  114.10 + * are met:
  114.11 + *
  114.12 + *  o Redistributions of source code must retain the above copyright
  114.13 + * notice, this list of conditions and the following disclaimer.
  114.14 + *
  114.15 + *  o Redistributions in binary form must reproduce the above copyright
  114.16 + * notice, this list of conditions and the following disclaimer in the
  114.17 + * documentation and/or other materials provided with the distribution.
  114.18 + *
  114.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  114.20 + * may be used to endorse or promote products derived from this software
  114.21 + * without specific prior written permission.
  114.22 + *
  114.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  114.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  114.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  114.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  114.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  114.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  114.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  114.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  114.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  114.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  114.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  114.34 + */
  114.35 +package net.fortuna.ical4j.model.parameter;
  114.36 +
  114.37 +import java.net.URISyntaxException;
  114.38 +
  114.39 +import net.fortuna.ical4j.model.AddressList;
  114.40 +import net.fortuna.ical4j.model.Parameter;
  114.41 +import net.fortuna.ical4j.model.ParameterFactoryImpl;
  114.42 +import net.fortuna.ical4j.util.Strings;
  114.43 +
  114.44 +/**
  114.45 + * $Id$ [18-Apr-2004]
  114.46 + *
  114.47 + * Defines a Delegators parameter.
  114.48 + * @author benfortuna
  114.49 + */
  114.50 +public class DelegatedFrom extends Parameter {
  114.51 +
  114.52 +    private static final long serialVersionUID = -795956139235258568L;
  114.53 +
  114.54 +    private AddressList delegators;
  114.55 +
  114.56 +    /**
  114.57 +     * @param aValue a string representation of Delegators
  114.58 +     * @throws URISyntaxException when the specified string is not a valid list of cal-addresses
  114.59 +     */
  114.60 +    public DelegatedFrom(final String aValue) throws URISyntaxException {
  114.61 +        this(new AddressList(Strings.unquote(aValue)));
  114.62 +    }
  114.63 +
  114.64 +    /**
  114.65 +     * @param aList a list of addresses
  114.66 +     */
  114.67 +    public DelegatedFrom(final AddressList aList) {
  114.68 +        super(DELEGATED_FROM, ParameterFactoryImpl.getInstance());
  114.69 +        delegators = aList;
  114.70 +    }
  114.71 +
  114.72 +    /**
  114.73 +     * @return Returns the delegators addresses.
  114.74 +     */
  114.75 +    public final AddressList getDelegators() {
  114.76 +        return delegators;
  114.77 +    }
  114.78 +
  114.79 +    /**
  114.80 +     * {@inheritDoc}
  114.81 +     */
  114.82 +    public final String getValue() {
  114.83 +        return getDelegators().toString();
  114.84 +    }
  114.85 +    
  114.86 +    /**
  114.87 +     * {@inheritDoc}
  114.88 +     */
  114.89 +    protected boolean isQuotable() {
  114.90 +        // override default behaviour as quoting is handled by the implementation..
  114.91 +        return false;
  114.92 +    }
  114.93 +}
   115.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   115.2 +++ b/src/net/fortuna/ical4j/model/parameter/DelegatedTo.java	Tue Feb 10 18:12:00 2015 +0100
   115.3 @@ -0,0 +1,90 @@
   115.4 +/**
   115.5 + * Copyright (c) 2012, Ben Fortuna
   115.6 + * All rights reserved.
   115.7 + *
   115.8 + * Redistribution and use in source and binary forms, with or without
   115.9 + * modification, are permitted provided that the following conditions
  115.10 + * are met:
  115.11 + *
  115.12 + *  o Redistributions of source code must retain the above copyright
  115.13 + * notice, this list of conditions and the following disclaimer.
  115.14 + *
  115.15 + *  o Redistributions in binary form must reproduce the above copyright
  115.16 + * notice, this list of conditions and the following disclaimer in the
  115.17 + * documentation and/or other materials provided with the distribution.
  115.18 + *
  115.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  115.20 + * may be used to endorse or promote products derived from this software
  115.21 + * without specific prior written permission.
  115.22 + *
  115.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  115.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  115.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  115.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  115.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  115.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  115.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  115.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  115.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  115.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  115.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  115.34 + */
  115.35 +package net.fortuna.ical4j.model.parameter;
  115.36 +
  115.37 +import java.net.URISyntaxException;
  115.38 +
  115.39 +import net.fortuna.ical4j.model.AddressList;
  115.40 +import net.fortuna.ical4j.model.Parameter;
  115.41 +import net.fortuna.ical4j.model.ParameterFactoryImpl;
  115.42 +import net.fortuna.ical4j.util.Strings;
  115.43 +
  115.44 +/**
  115.45 + * $Id$ [18-Apr-2004]
  115.46 + *
  115.47 + * Defines a Delegatees parameter.
  115.48 + * @author benfortuna
  115.49 + */
  115.50 +public class DelegatedTo extends Parameter {
  115.51 +
  115.52 +    private static final long serialVersionUID = 567577003350648021L;
  115.53 +
  115.54 +    private AddressList delegatees;
  115.55 +
  115.56 +    /**
  115.57 +     * @param aValue a string representation of Delegatees
  115.58 +     * @throws URISyntaxException when the specified string is not a valid list of cal-addresses
  115.59 +     */
  115.60 +    public DelegatedTo(final String aValue) throws URISyntaxException {
  115.61 +        this(new AddressList(Strings.unquote(aValue)));
  115.62 +    }
  115.63 +
  115.64 +    /**
  115.65 +     * @param aList a list of addresses
  115.66 +     */
  115.67 +    public DelegatedTo(final AddressList aList) {
  115.68 +        super(DELEGATED_TO, ParameterFactoryImpl.getInstance());
  115.69 +        delegatees = aList;
  115.70 +    }
  115.71 +
  115.72 +    /**
  115.73 +     * @return Returns the delegatees addresses.
  115.74 +     */
  115.75 +    public final AddressList getDelegatees() {
  115.76 +        return delegatees;
  115.77 +    }
  115.78 +
  115.79 +    /**
  115.80 +     * {@inheritDoc}
  115.81 +     */
  115.82 +    public final String getValue() {
  115.83 +        return getDelegatees().toString();
  115.84 +    }
  115.85 +    
  115.86 +    /**
  115.87 +     * {@inheritDoc}
  115.88 +     */
  115.89 +    protected boolean isQuotable() {
  115.90 +        // override default behaviour as quoting is handled by the implementation..
  115.91 +        return false;
  115.92 +    }
  115.93 +}
   116.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   116.2 +++ b/src/net/fortuna/ical4j/model/parameter/Dir.java	Tue Feb 10 18:12:00 2015 +0100
   116.3 @@ -0,0 +1,83 @@
   116.4 +/**
   116.5 + * Copyright (c) 2012, Ben Fortuna
   116.6 + * All rights reserved.
   116.7 + *
   116.8 + * Redistribution and use in source and binary forms, with or without
   116.9 + * modification, are permitted provided that the following conditions
  116.10 + * are met:
  116.11 + *
  116.12 + *  o Redistributions of source code must retain the above copyright
  116.13 + * notice, this list of conditions and the following disclaimer.
  116.14 + *
  116.15 + *  o Redistributions in binary form must reproduce the above copyright
  116.16 + * notice, this list of conditions and the following disclaimer in the
  116.17 + * documentation and/or other materials provided with the distribution.
  116.18 + *
  116.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  116.20 + * may be used to endorse or promote products derived from this software
  116.21 + * without specific prior written permission.
  116.22 + *
  116.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  116.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  116.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  116.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  116.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  116.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  116.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  116.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  116.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  116.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  116.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  116.34 + */
  116.35 +package net.fortuna.ical4j.model.parameter;
  116.36 +
  116.37 +import java.net.URI;
  116.38 +import java.net.URISyntaxException;
  116.39 +
  116.40 +import net.fortuna.ical4j.model.Parameter;
  116.41 +import net.fortuna.ical4j.model.ParameterFactoryImpl;
  116.42 +import net.fortuna.ical4j.util.Strings;
  116.43 +import net.fortuna.ical4j.util.Uris;
  116.44 +
  116.45 +/**
  116.46 + * $Id$ [18-Apr-2004]
  116.47 + *
  116.48 + * Defines a Directory Entry Reference parameter.
  116.49 + * @author benfortuna
  116.50 + */
  116.51 +public class Dir extends Parameter {
  116.52 +
  116.53 +    private static final long serialVersionUID = -8581904779721020689L;
  116.54 +
  116.55 +    private URI uri;
  116.56 +
  116.57 +    /**
  116.58 +     * @param aValue a string representation of a directory entry reference
  116.59 +     * @throws URISyntaxException when the specified string is not a valid (quoted) uri
  116.60 +     */
  116.61 +    public Dir(final String aValue) throws URISyntaxException {
  116.62 +        this(Uris.create(Strings.unquote(aValue)));
  116.63 +    }
  116.64 +
  116.65 +    /**
  116.66 +     * @param aUri a URI representing a directory entry reference
  116.67 +     */
  116.68 +    public Dir(final URI aUri) {
  116.69 +        super(DIR, ParameterFactoryImpl.getInstance());
  116.70 +        this.uri = aUri;
  116.71 +    }
  116.72 +
  116.73 +    /**
  116.74 +     * @return Returns the uri.
  116.75 +     */
  116.76 +    public final URI getUri() {
  116.77 +        return uri;
  116.78 +    }
  116.79 +
  116.80 +    /**
  116.81 +     * {@inheritDoc}
  116.82 +     */
  116.83 +    public final String getValue() {
  116.84 +        return Uris.decode(Strings.valueOf(getUri()));
  116.85 +    }
  116.86 +}
   117.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   117.2 +++ b/src/net/fortuna/ical4j/model/parameter/Encoding.java	Tue Feb 10 18:12:00 2015 +0100
   117.3 @@ -0,0 +1,141 @@
   117.4 +/**
   117.5 + * Copyright (c) 2012, Ben Fortuna
   117.6 + * All rights reserved.
   117.7 + *
   117.8 + * Redistribution and use in source and binary forms, with or without
   117.9 + * modification, are permitted provided that the following conditions
  117.10 + * are met:
  117.11 + *
  117.12 + *  o Redistributions of source code must retain the above copyright
  117.13 + * notice, this list of conditions and the following disclaimer.
  117.14 + *
  117.15 + *  o Redistributions in binary form must reproduce the above copyright
  117.16 + * notice, this list of conditions and the following disclaimer in the
  117.17 + * documentation and/or other materials provided with the distribution.
  117.18 + *
  117.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  117.20 + * may be used to endorse or promote products derived from this software
  117.21 + * without specific prior written permission.
  117.22 + *
  117.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  117.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  117.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  117.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  117.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  117.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  117.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  117.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  117.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  117.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  117.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  117.34 + */
  117.35 +package net.fortuna.ical4j.model.parameter;
  117.36 +
  117.37 +import net.fortuna.ical4j.model.Parameter;
  117.38 +import net.fortuna.ical4j.model.ParameterFactoryImpl;
  117.39 +import net.fortuna.ical4j.util.Strings;
  117.40 +
  117.41 +/**
  117.42 + * $Id$ [18-Apr-2004]
  117.43 + *
  117.44 + * Defines an Inline Encoding parameter. Constants are provided for all encodings specified in <a
  117.45 + * href="http://www.ietf.org/rfc/rfc2045.txt">RFC2045</a>.
  117.46 + *
  117.47 + * <pre>
  117.48 + *  4.2.7 Inline Encoding
  117.49 + *
  117.50 + *     Parameter Name: ENCODING
  117.51 + *
  117.52 + *     Purpose: To specify an alternate inline encoding for the property
  117.53 + *     value.
  117.54 + *
  117.55 + *     Format Definition: The property parameter is defined by the following
  117.56 + *     notation:
  117.57 + *
  117.58 + *       encodingparam      = &quot;ENCODING&quot; &quot;=&quot;
  117.59 + *                            (&quot;8BIT&quot;
  117.60 + *          ; &quot;8bit&quot; text encoding is defined in [RFC 2045]
  117.61 + *                          / &quot;BASE64&quot;
  117.62 + *          ; &quot;BASE64&quot; binary encoding format is defined in [RFC 2045]
  117.63 + *                          / iana-token
  117.64 + *          ; Some other IANA registered iCalendar encoding type
  117.65 + *                          / x-name)
  117.66 + *          ; A non-standard, experimental encoding type
  117.67 + *
  117.68 + *     Description: The property parameter identifies the inline encoding
  117.69 + *     used in a property value. The default encoding is &quot;8BIT&quot;,
  117.70 + *     corresponding to a property value consisting of text. The &quot;BASE64&quot;
  117.71 + *     encoding type corresponds to a property value encoded using the
  117.72 + *     &quot;BASE64&quot; encoding defined in [RFC 2045].
  117.73 + *
  117.74 + *     If the value type parameter is &quot;;VALUE=BINARY&quot;, then the inline
  117.75 + *     encoding parameter MUST be specified with the value
  117.76 + *     &quot;;ENCODING=BASE64&quot;.
  117.77 + *
  117.78 + *     Example:
  117.79 + *
  117.80 + *       ATTACH;FMTYPE=IMAGE/JPEG;ENCODING=BASE64;VALUE=BINARY:MIICajC
  117.81 + *        CAdOgAwIBAgICBEUwDQYJKoZIhvcNAQEEBQAwdzELMAkGA1UEBhMCVVMxLDA
  117.82 + *        qBgNVBAoTI05ldHNjYXBlIENvbW11bmljYXRpb25zIENvcnBvcmF0aW9uMRw
  117.83 + *        &lt;...remainder of &quot;BASE64&quot; encoded binary data...&gt;
  117.84 + * </pre>
  117.85 + *
  117.86 + * @author Ben Fortuna
  117.87 + */
  117.88 +public class Encoding extends Parameter {
  117.89 +
  117.90 +    private static final long serialVersionUID = 7536336461076399077L;
  117.91 +
  117.92 +    private static final String VALUE_SEVEN_BIT = "7BIT";
  117.93 +
  117.94 +    private static final String VALUE_EIGHT_BIT = "8BIT";
  117.95 +
  117.96 +    private static final String VALUE_BINARY = "BINARY";
  117.97 +
  117.98 +    private static final String VALUE_QUOTED_PRINTABLE = "QUOTED-PRINTABLE";
  117.99 +
 117.100 +    private static final String VALUE_BASE64 = "BASE64";
 117.101 +
 117.102 +    /**
 117.103 +     * 7 bit encoding.
 117.104 +     */
 117.105 +    public static final Encoding SEVEN_BIT = new Encoding(VALUE_SEVEN_BIT);
 117.106 +
 117.107 +    /**
 117.108 +     * 8 bit encoding.
 117.109 +     */
 117.110 +    public static final Encoding EIGHT_BIT = new Encoding(VALUE_EIGHT_BIT);
 117.111 +
 117.112 +    /**
 117.113 +     * Binary encoding.
 117.114 +     */
 117.115 +    public static final Encoding BINARY = new Encoding(VALUE_BINARY);
 117.116 +
 117.117 +    /**
 117.118 +     * Quoted printable encoding.
 117.119 +     */
 117.120 +    public static final Encoding QUOTED_PRINTABLE = new Encoding(
 117.121 +            VALUE_QUOTED_PRINTABLE);
 117.122 +
 117.123 +    /**
 117.124 +     * Base64 encoding.
 117.125 +     */
 117.126 +    public static final Encoding BASE64 = new Encoding(VALUE_BASE64);
 117.127 +
 117.128 +    private String value;
 117.129 +
 117.130 +    /**
 117.131 +     * @param aValue a string representation of an Inline Encoding
 117.132 +     */
 117.133 +    public Encoding(final String aValue) {
 117.134 +        super(ENCODING, ParameterFactoryImpl.getInstance());
 117.135 +        this.value = Strings.unquote(aValue);
 117.136 +    }
 117.137 +
 117.138 +    /**
 117.139 +     * {@inheritDoc}
 117.140 +     */
 117.141 +    public final String getValue() {
 117.142 +        return value;
 117.143 +    }
 117.144 +}
   118.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   118.2 +++ b/src/net/fortuna/ical4j/model/parameter/FbType.java	Tue Feb 10 18:12:00 2015 +0100
   118.3 @@ -0,0 +1,94 @@
   118.4 +/**
   118.5 + * Copyright (c) 2012, Ben Fortuna
   118.6 + * All rights reserved.
   118.7 + *
   118.8 + * Redistribution and use in source and binary forms, with or without
   118.9 + * modification, are permitted provided that the following conditions
  118.10 + * are met:
  118.11 + *
  118.12 + *  o Redistributions of source code must retain the above copyright
  118.13 + * notice, this list of conditions and the following disclaimer.
  118.14 + *
  118.15 + *  o Redistributions in binary form must reproduce the above copyright
  118.16 + * notice, this list of conditions and the following disclaimer in the
  118.17 + * documentation and/or other materials provided with the distribution.
  118.18 + *
  118.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  118.20 + * may be used to endorse or promote products derived from this software
  118.21 + * without specific prior written permission.
  118.22 + *
  118.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  118.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  118.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  118.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  118.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  118.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  118.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  118.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  118.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  118.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  118.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  118.34 + */
  118.35 +package net.fortuna.ical4j.model.parameter;
  118.36 +
  118.37 +import net.fortuna.ical4j.model.Parameter;
  118.38 +import net.fortuna.ical4j.model.ParameterFactoryImpl;
  118.39 +import net.fortuna.ical4j.util.Strings;
  118.40 +
  118.41 +/**
  118.42 + * $Id$ [18-Apr-2004]
  118.43 + *
  118.44 + * Defines a Free/Busy Time Type parameter.
  118.45 + * @author benfortuna
  118.46 + */
  118.47 +public class FbType extends Parameter {
  118.48 +
  118.49 +    private static final long serialVersionUID = -2217689716824679375L;
  118.50 +
  118.51 +    private static final String VALUE_FREE = "FREE";
  118.52 +
  118.53 +    private static final String VALUE_BUSY = "BUSY";
  118.54 +
  118.55 +    private static final String VALUE_BUSY_UNAVAILABLE = "BUSY-UNAVAILABLE";
  118.56 +
  118.57 +    private static final String VALUE_BUSY_TENTATIVE = "BUSY-TENTATIVE";
  118.58 +
  118.59 +    /**
  118.60 +     * Free time.
  118.61 +     */
  118.62 +    public static final FbType FREE = new FbType(VALUE_FREE);
  118.63 +
  118.64 +    /**
  118.65 +     * Busy time.
  118.66 +     */
  118.67 +    public static final FbType BUSY = new FbType(VALUE_BUSY);
  118.68 +
  118.69 +    /**
  118.70 +     * Busy (unavailable) time.
  118.71 +     */
  118.72 +    public static final FbType BUSY_UNAVAILABLE = new FbType(
  118.73 +            VALUE_BUSY_UNAVAILABLE);
  118.74 +
  118.75 +    /**
  118.76 +     * Busy (tentative) time.
  118.77 +     */
  118.78 +    public static final FbType BUSY_TENTATIVE = new FbType(VALUE_BUSY_TENTATIVE);
  118.79 +
  118.80 +    private String value;
  118.81 +
  118.82 +    /**
  118.83 +     * @param aValue a string representation of a format type
  118.84 +     */
  118.85 +    public FbType(final String aValue) {
  118.86 +        super(FBTYPE, ParameterFactoryImpl.getInstance());
  118.87 +
  118.88 +        this.value = Strings.unquote(aValue);
  118.89 +    }
  118.90 +
  118.91 +    /**
  118.92 +     * {@inheritDoc}
  118.93 +     */
  118.94 +    public final String getValue() {
  118.95 +        return value;
  118.96 +    }
  118.97 +}
   119.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   119.2 +++ b/src/net/fortuna/ical4j/model/parameter/FmtType.java	Tue Feb 10 18:12:00 2015 +0100
   119.3 @@ -0,0 +1,64 @@
   119.4 +/**
   119.5 + * Copyright (c) 2012, Ben Fortuna
   119.6 + * All rights reserved.
   119.7 + *
   119.8 + * Redistribution and use in source and binary forms, with or without
   119.9 + * modification, are permitted provided that the following conditions
  119.10 + * are met:
  119.11 + *
  119.12 + *  o Redistributions of source code must retain the above copyright
  119.13 + * notice, this list of conditions and the following disclaimer.
  119.14 + *
  119.15 + *  o Redistributions in binary form must reproduce the above copyright
  119.16 + * notice, this list of conditions and the following disclaimer in the
  119.17 + * documentation and/or other materials provided with the distribution.
  119.18 + *
  119.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  119.20 + * may be used to endorse or promote products derived from this software
  119.21 + * without specific prior written permission.
  119.22 + *
  119.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  119.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  119.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  119.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  119.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  119.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  119.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  119.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  119.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  119.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  119.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  119.34 + */
  119.35 +package net.fortuna.ical4j.model.parameter;
  119.36 +
  119.37 +import net.fortuna.ical4j.model.Parameter;
  119.38 +import net.fortuna.ical4j.model.ParameterFactoryImpl;
  119.39 +import net.fortuna.ical4j.util.Strings;
  119.40 +
  119.41 +/**
  119.42 + * $Id$ [18-Apr-2004]
  119.43 + *
  119.44 + * Defines a Format Type parameter.
  119.45 + * @author benfortuna
  119.46 + */
  119.47 +public class FmtType extends Parameter {
  119.48 +
  119.49 +    private static final long serialVersionUID = -8764966004966855480L;
  119.50 +
  119.51 +    private String value;
  119.52 +
  119.53 +    /**
  119.54 +     * @param aValue a string representation of a format type
  119.55 +     */
  119.56 +    public FmtType(final String aValue) {
  119.57 +        super(FMTTYPE, ParameterFactoryImpl.getInstance());
  119.58 +        this.value = Strings.unquote(aValue);
  119.59 +    }
  119.60 +
  119.61 +    /**
  119.62 +     * {@inheritDoc}
  119.63 +     */
  119.64 +    public final String getValue() {
  119.65 +        return value;
  119.66 +    }
  119.67 +}
   120.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   120.2 +++ b/src/net/fortuna/ical4j/model/parameter/Language.java	Tue Feb 10 18:12:00 2015 +0100
   120.3 @@ -0,0 +1,64 @@
   120.4 +/**
   120.5 + * Copyright (c) 2012, Ben Fortuna
   120.6 + * All rights reserved.
   120.7 + *
   120.8 + * Redistribution and use in source and binary forms, with or without
   120.9 + * modification, are permitted provided that the following conditions
  120.10 + * are met:
  120.11 + *
  120.12 + *  o Redistributions of source code must retain the above copyright
  120.13 + * notice, this list of conditions and the following disclaimer.
  120.14 + *
  120.15 + *  o Redistributions in binary form must reproduce the above copyright
  120.16 + * notice, this list of conditions and the following disclaimer in the
  120.17 + * documentation and/or other materials provided with the distribution.
  120.18 + *
  120.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  120.20 + * may be used to endorse or promote products derived from this software
  120.21 + * without specific prior written permission.
  120.22 + *
  120.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  120.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  120.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  120.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  120.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  120.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  120.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  120.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  120.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  120.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  120.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  120.34 + */
  120.35 +package net.fortuna.ical4j.model.parameter;
  120.36 +
  120.37 +import net.fortuna.ical4j.model.Parameter;
  120.38 +import net.fortuna.ical4j.model.ParameterFactoryImpl;
  120.39 +import net.fortuna.ical4j.util.Strings;
  120.40 +
  120.41 +/**
  120.42 + * $Id$ [18-Apr-2004]
  120.43 + *
  120.44 + * Defines a Language parameter.
  120.45 + * @author benfortuna
  120.46 + */
  120.47 +public class Language extends Parameter {
  120.48 +
  120.49 +    private static final long serialVersionUID = 4864176270266226608L;
  120.50 +
  120.51 +    private String value;
  120.52 +
  120.53 +    /**
  120.54 +     * @param aValue a string representation of a Language
  120.55 +     */
  120.56 +    public Language(final String aValue) {
  120.57 +        super(LANGUAGE, ParameterFactoryImpl.getInstance());
  120.58 +        this.value = Strings.unquote(aValue);
  120.59 +    }
  120.60 +
  120.61 +    /**
  120.62 +     * {@inheritDoc}
  120.63 +     */
  120.64 +    public final String getValue() {
  120.65 +        return value;
  120.66 +    }
  120.67 +}
   121.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   121.2 +++ b/src/net/fortuna/ical4j/model/parameter/Member.java	Tue Feb 10 18:12:00 2015 +0100
   121.3 @@ -0,0 +1,90 @@
   121.4 +/**
   121.5 + * Copyright (c) 2012, Ben Fortuna
   121.6 + * All rights reserved.
   121.7 + *
   121.8 + * Redistribution and use in source and binary forms, with or without
   121.9 + * modification, are permitted provided that the following conditions
  121.10 + * are met:
  121.11 + *
  121.12 + *  o Redistributions of source code must retain the above copyright
  121.13 + * notice, this list of conditions and the following disclaimer.
  121.14 + *
  121.15 + *  o Redistributions in binary form must reproduce the above copyright
  121.16 + * notice, this list of conditions and the following disclaimer in the
  121.17 + * documentation and/or other materials provided with the distribution.
  121.18 + *
  121.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  121.20 + * may be used to endorse or promote products derived from this software
  121.21 + * without specific prior written permission.
  121.22 + *
  121.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  121.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  121.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  121.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  121.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  121.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  121.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  121.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  121.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  121.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  121.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  121.34 + */
  121.35 +package net.fortuna.ical4j.model.parameter;
  121.36 +
  121.37 +import java.net.URISyntaxException;
  121.38 +
  121.39 +import net.fortuna.ical4j.model.AddressList;
  121.40 +import net.fortuna.ical4j.model.Parameter;
  121.41 +import net.fortuna.ical4j.model.ParameterFactoryImpl;
  121.42 +import net.fortuna.ical4j.util.Strings;
  121.43 +
  121.44 +/**
  121.45 + * $Id$ [18-Apr-2004]
  121.46 + *
  121.47 + * Defines a Group or List Membership parameter.
  121.48 + * @author benfortuna
  121.49 + */
  121.50 +public class Member extends Parameter {
  121.51 +
  121.52 +    private static final long serialVersionUID = 287348849443687499L;
  121.53 +
  121.54 +    private AddressList groups;
  121.55 +
  121.56 +    /**
  121.57 +     * @param aValue a string representation of a group or list membership
  121.58 +     * @throws URISyntaxException when the specified string is not a valid list of (quoted) cal-addresses
  121.59 +     */
  121.60 +    public Member(final String aValue) throws URISyntaxException {
  121.61 +        this(new AddressList(Strings.unquote(aValue)));
  121.62 +    }
  121.63 +
  121.64 +    /**
  121.65 +     * @param aList a list of groups
  121.66 +     */
  121.67 +    public Member(final AddressList aList) {
  121.68 +        super(MEMBER, ParameterFactoryImpl.getInstance());
  121.69 +        groups = aList;
  121.70 +    }
  121.71 +
  121.72 +    /**
  121.73 +     * @return Returns the group addresses.
  121.74 +     */
  121.75 +    public final AddressList getGroups() {
  121.76 +        return groups;
  121.77 +    }
  121.78 +
  121.79 +    /**
  121.80 +     * {@inheritDoc}
  121.81 +     */
  121.82 +    public final String getValue() {
  121.83 +        return getGroups().toString();
  121.84 +    }
  121.85 +    
  121.86 +    /**
  121.87 +     * {@inheritDoc}
  121.88 +     */
  121.89 +    protected boolean isQuotable() {
  121.90 +        // override default behaviour as quoting is handled by the implementation..
  121.91 +        return false;
  121.92 +    }
  121.93 +}
   122.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   122.2 +++ b/src/net/fortuna/ical4j/model/parameter/PartStat.java	Tue Feb 10 18:12:00 2015 +0100
   122.3 @@ -0,0 +1,113 @@
   122.4 +/**
   122.5 + * Copyright (c) 2012, Ben Fortuna
   122.6 + * All rights reserved.
   122.7 + *
   122.8 + * Redistribution and use in source and binary forms, with or without
   122.9 + * modification, are permitted provided that the following conditions
  122.10 + * are met:
  122.11 + *
  122.12 + *  o Redistributions of source code must retain the above copyright
  122.13 + * notice, this list of conditions and the following disclaimer.
  122.14 + *
  122.15 + *  o Redistributions in binary form must reproduce the above copyright
  122.16 + * notice, this list of conditions and the following disclaimer in the
  122.17 + * documentation and/or other materials provided with the distribution.
  122.18 + *
  122.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  122.20 + * may be used to endorse or promote products derived from this software
  122.21 + * without specific prior written permission.
  122.22 + *
  122.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  122.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  122.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  122.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  122.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  122.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  122.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  122.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  122.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  122.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  122.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  122.34 + */
  122.35 +package net.fortuna.ical4j.model.parameter;
  122.36 +
  122.37 +import net.fortuna.ical4j.model.Parameter;
  122.38 +import net.fortuna.ical4j.model.ParameterFactoryImpl;
  122.39 +import net.fortuna.ical4j.util.Strings;
  122.40 +
  122.41 +/**
  122.42 + * $Id$ [18-Apr-2004]
  122.43 + *
  122.44 + * Defines a Participation Status parameter.
  122.45 + * @author benfortuna
  122.46 + */
  122.47 +public class PartStat extends Parameter {
  122.48 +
  122.49 +    private static final long serialVersionUID = -7856347127343842441L;
  122.50 +
  122.51 +    private static final String VALUE_NEEDS_ACTION = "NEEDS-ACTION";
  122.52 +
  122.53 +    private static final String VALUE_ACCEPTED = "ACCEPTED";
  122.54 +
  122.55 +    private static final String VALUE_DECLINED = "DECLINED";
  122.56 +
  122.57 +    private static final String VALUE_TENTATIVE = "TENTATIVE";
  122.58 +
  122.59 +    private static final String VALUE_DELEGATED = "DELEGATED";
  122.60 +
  122.61 +    private static final String VALUE_COMPLETED = "COMPLETED";
  122.62 +
  122.63 +    private static final String VALUE_IN_PROCESS = "IN-PROCESS";
  122.64 +
  122.65 +    /**
  122.66 +     * Needs action.
  122.67 +     */
  122.68 +    public static final PartStat NEEDS_ACTION = new PartStat(VALUE_NEEDS_ACTION);
  122.69 +
  122.70 +    /**
  122.71 +     * Accepted.
  122.72 +     */
  122.73 +    public static final PartStat ACCEPTED = new PartStat(VALUE_ACCEPTED);
  122.74 +
  122.75 +    /**
  122.76 +     * Declined.
  122.77 +     */
  122.78 +    public static final PartStat DECLINED = new PartStat(VALUE_DECLINED);
  122.79 +
  122.80 +    /**
  122.81 +     * Tentative.
  122.82 +     */
  122.83 +    public static final PartStat TENTATIVE = new PartStat(VALUE_TENTATIVE);
  122.84 +
  122.85 +    /**
  122.86 +     * Delegated.
  122.87 +     */
  122.88 +    public static final PartStat DELEGATED = new PartStat(VALUE_DELEGATED);
  122.89 +
  122.90 +    /**
  122.91 +     * Completed.
  122.92 +     */
  122.93 +    public static final PartStat COMPLETED = new PartStat(VALUE_COMPLETED);
  122.94 +
  122.95 +    /**
  122.96 +     * In-process.
  122.97 +     */
  122.98 +    public static final PartStat IN_PROCESS = new PartStat(VALUE_IN_PROCESS);
  122.99 +
 122.100 +    private String value;
 122.101 +
 122.102 +    /**
 122.103 +     * @param aValue a string representation of a participation status
 122.104 +     */
 122.105 +    public PartStat(final String aValue) {
 122.106 +        super(PARTSTAT, ParameterFactoryImpl.getInstance());
 122.107 +        this.value = Strings.unquote(aValue);
 122.108 +    }
 122.109 +
 122.110 +    /**
 122.111 +     * {@inheritDoc}
 122.112 +     */
 122.113 +    public final String getValue() {
 122.114 +        return value;
 122.115 +    }
 122.116 +}
   123.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   123.2 +++ b/src/net/fortuna/ical4j/model/parameter/Range.java	Tue Feb 10 18:12:00 2015 +0100
   123.3 @@ -0,0 +1,90 @@
   123.4 +/**
   123.5 + * Copyright (c) 2012, Ben Fortuna
   123.6 + * All rights reserved.
   123.7 + *
   123.8 + * Redistribution and use in source and binary forms, with or without
   123.9 + * modification, are permitted provided that the following conditions
  123.10 + * are met:
  123.11 + *
  123.12 + *  o Redistributions of source code must retain the above copyright
  123.13 + * notice, this list of conditions and the following disclaimer.
  123.14 + *
  123.15 + *  o Redistributions in binary form must reproduce the above copyright
  123.16 + * notice, this list of conditions and the following disclaimer in the
  123.17 + * documentation and/or other materials provided with the distribution.
  123.18 + *
  123.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  123.20 + * may be used to endorse or promote products derived from this software
  123.21 + * without specific prior written permission.
  123.22 + *
  123.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  123.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  123.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  123.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  123.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  123.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  123.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  123.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  123.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  123.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  123.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  123.34 + */
  123.35 +package net.fortuna.ical4j.model.parameter;
  123.36 +
  123.37 +import net.fortuna.ical4j.model.Parameter;
  123.38 +import net.fortuna.ical4j.model.ParameterFactoryImpl;
  123.39 +import net.fortuna.ical4j.util.CompatibilityHints;
  123.40 +import net.fortuna.ical4j.util.Strings;
  123.41 +
  123.42 +/**
  123.43 + * $Id$ [18-Apr-2004]
  123.44 + *
  123.45 + * Defines a Recurrence Identifier Range parameter.
  123.46 + * @author benfortuna
  123.47 + */
  123.48 +public class Range extends Parameter {
  123.49 +
  123.50 +    private static final long serialVersionUID = -3057531444558393776L;
  123.51 +
  123.52 +    private static final String VALUE_THISANDPRIOR = "THISANDPRIOR";
  123.53 +
  123.54 +    private static final String VALUE_THISANDFUTURE = "THISANDFUTURE";
  123.55 +
  123.56 +    /**
  123.57 +     * This and prior.
  123.58 +     */
  123.59 +    public static final Range THISANDPRIOR = new Range(VALUE_THISANDPRIOR);
  123.60 +
  123.61 +    /**
  123.62 +     * This and future.
  123.63 +     */
  123.64 +    public static final Range THISANDFUTURE = new Range(VALUE_THISANDFUTURE);
  123.65 +
  123.66 +    private String value;
  123.67 +
  123.68 +    /**
  123.69 +     * @param aValue a string representation of a recurrence identifier range
  123.70 +     */
  123.71 +    public Range(final String aValue) {
  123.72 +        super(RANGE, ParameterFactoryImpl.getInstance());
  123.73 +        this.value = Strings.unquote(aValue);
  123.74 +
  123.75 +        // allow arbitrary ranges for Lotus Notes..
  123.76 +        // eg. X-LOTUS-RECURID;RANGE=ALL:20101006T203000Z
  123.77 +        
  123.78 +        if (!CompatibilityHints.isHintEnabled(CompatibilityHints.KEY_NOTES_COMPATIBILITY)) {
  123.79 +            // value must be one of finite list..
  123.80 +            if (!VALUE_THISANDPRIOR.equals(value)
  123.81 +                    && !VALUE_THISANDFUTURE.equals(value)) {
  123.82 +                throw new IllegalArgumentException("Invalid value [" + value + "]");
  123.83 +            }
  123.84 +        }
  123.85 +    }
  123.86 +
  123.87 +    /**
  123.88 +     * {@inheritDoc}
  123.89 +     */
  123.90 +    public final String getValue() {
  123.91 +        return value;
  123.92 +    }
  123.93 +}
   124.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   124.2 +++ b/src/net/fortuna/ical4j/model/parameter/RelType.java	Tue Feb 10 18:12:00 2015 +0100
   124.3 @@ -0,0 +1,85 @@
   124.4 +/**
   124.5 + * Copyright (c) 2012, Ben Fortuna
   124.6 + * All rights reserved.
   124.7 + *
   124.8 + * Redistribution and use in source and binary forms, with or without
   124.9 + * modification, are permitted provided that the following conditions
  124.10 + * are met:
  124.11 + *
  124.12 + *  o Redistributions of source code must retain the above copyright
  124.13 + * notice, this list of conditions and the following disclaimer.
  124.14 + *
  124.15 + *  o Redistributions in binary form must reproduce the above copyright
  124.16 + * notice, this list of conditions and the following disclaimer in the
  124.17 + * documentation and/or other materials provided with the distribution.
  124.18 + *
  124.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  124.20 + * may be used to endorse or promote products derived from this software
  124.21 + * without specific prior written permission.
  124.22 + *
  124.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  124.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  124.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  124.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  124.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  124.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  124.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  124.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  124.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  124.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  124.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  124.34 + */
  124.35 +package net.fortuna.ical4j.model.parameter;
  124.36 +
  124.37 +import net.fortuna.ical4j.model.Parameter;
  124.38 +import net.fortuna.ical4j.model.ParameterFactoryImpl;
  124.39 +import net.fortuna.ical4j.util.Strings;
  124.40 +
  124.41 +/**
  124.42 + * $Id$ [18-Apr-2004]
  124.43 + *
  124.44 + * Defines a Relationship Type parameter.
  124.45 + * @author benfortuna
  124.46 + */
  124.47 +public class RelType extends Parameter {
  124.48 +
  124.49 +    private static final long serialVersionUID = 5346030888832899016L;
  124.50 +
  124.51 +    private static final String VALUE_PARENT = "PARENT";
  124.52 +
  124.53 +    private static final String VALUE_CHILD = "CHILD";
  124.54 +
  124.55 +    private static final String VALUE_SIBLING = "SIBLING";
  124.56 +
  124.57 +    /**
  124.58 +     * Parent.
  124.59 +     */
  124.60 +    public static final RelType PARENT = new RelType(VALUE_PARENT);
  124.61 +
  124.62 +    /**
  124.63 +     * Child.
  124.64 +     */
  124.65 +    public static final RelType CHILD = new RelType(VALUE_CHILD);
  124.66 +
  124.67 +    /**
  124.68 +     * Sibling.
  124.69 +     */
  124.70 +    public static final RelType SIBLING = new RelType(VALUE_SIBLING);
  124.71 +
  124.72 +    private String value;
  124.73 +
  124.74 +    /**
  124.75 +     * @param aValue a string representation of a relationship type
  124.76 +     */
  124.77 +    public RelType(final String aValue) {
  124.78 +        super(RELTYPE, ParameterFactoryImpl.getInstance());
  124.79 +        this.value = Strings.unquote(aValue);
  124.80 +    }
  124.81 +
  124.82 +    /**
  124.83 +     * {@inheritDoc}
  124.84 +     */
  124.85 +    public final String getValue() {
  124.86 +        return value;
  124.87 +    }
  124.88 +}
   125.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   125.2 +++ b/src/net/fortuna/ical4j/model/parameter/Related.java	Tue Feb 10 18:12:00 2015 +0100
   125.3 @@ -0,0 +1,83 @@
   125.4 +/**
   125.5 + * Copyright (c) 2012, Ben Fortuna
   125.6 + * All rights reserved.
   125.7 + *
   125.8 + * Redistribution and use in source and binary forms, with or without
   125.9 + * modification, are permitted provided that the following conditions
  125.10 + * are met:
  125.11 + *
  125.12 + *  o Redistributions of source code must retain the above copyright
  125.13 + * notice, this list of conditions and the following disclaimer.
  125.14 + *
  125.15 + *  o Redistributions in binary form must reproduce the above copyright
  125.16 + * notice, this list of conditions and the following disclaimer in the
  125.17 + * documentation and/or other materials provided with the distribution.
  125.18 + *
  125.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  125.20 + * may be used to endorse or promote products derived from this software
  125.21 + * without specific prior written permission.
  125.22 + *
  125.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  125.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  125.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  125.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  125.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  125.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  125.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  125.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  125.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  125.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  125.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  125.34 + */
  125.35 +package net.fortuna.ical4j.model.parameter;
  125.36 +
  125.37 +import net.fortuna.ical4j.model.Parameter;
  125.38 +import net.fortuna.ical4j.model.ParameterFactoryImpl;
  125.39 +import net.fortuna.ical4j.util.Strings;
  125.40 +
  125.41 +/**
  125.42 + * $Id$ [18-Apr-2004]
  125.43 + *
  125.44 + * Defines an Alarm Trigger Relationship parameter.
  125.45 + * @author benfortuna
  125.46 + */
  125.47 +public class Related extends Parameter {
  125.48 +
  125.49 +    private static final long serialVersionUID = 1570525804115869565L;
  125.50 +
  125.51 +    private static final String VALUE_START = "START";
  125.52 +
  125.53 +    private static final String VALUE_END = "END";
  125.54 +
  125.55 +    /**
  125.56 +     * Trigger start.
  125.57 +     */
  125.58 +    public static final Related START = new Related(VALUE_START);
  125.59 +
  125.60 +    /**
  125.61 +     * Trigger end.
  125.62 +     */
  125.63 +    public static final Related END = new Related(VALUE_END);
  125.64 +
  125.65 +    private String value;
  125.66 +
  125.67 +    /**
  125.68 +     * @param aValue a string representation of an alarm trigger relationship
  125.69 +     */
  125.70 +    public Related(final String aValue) {
  125.71 +        super(RELATED, ParameterFactoryImpl.getInstance());
  125.72 +        this.value = Strings.unquote(aValue);
  125.73 +
  125.74 +        // value must be one of finite list..
  125.75 +        if (!VALUE_START.equals(value) && !VALUE_END.equals(value)) {
  125.76 +            throw new IllegalArgumentException("Invalid value [" + value + "]");
  125.77 +        }
  125.78 +    }
  125.79 +
  125.80 +    /**
  125.81 +     * {@inheritDoc}
  125.82 +     */
  125.83 +    public final String getValue() {
  125.84 +        return value;
  125.85 +    }
  125.86 +}
   126.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   126.2 +++ b/src/net/fortuna/ical4j/model/parameter/Role.java	Tue Feb 10 18:12:00 2015 +0100
   126.3 @@ -0,0 +1,92 @@
   126.4 +/**
   126.5 + * Copyright (c) 2012, Ben Fortuna
   126.6 + * All rights reserved.
   126.7 + *
   126.8 + * Redistribution and use in source and binary forms, with or without
   126.9 + * modification, are permitted provided that the following conditions
  126.10 + * are met:
  126.11 + *
  126.12 + *  o Redistributions of source code must retain the above copyright
  126.13 + * notice, this list of conditions and the following disclaimer.
  126.14 + *
  126.15 + *  o Redistributions in binary form must reproduce the above copyright
  126.16 + * notice, this list of conditions and the following disclaimer in the
  126.17 + * documentation and/or other materials provided with the distribution.
  126.18 + *
  126.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  126.20 + * may be used to endorse or promote products derived from this software
  126.21 + * without specific prior written permission.
  126.22 + *
  126.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  126.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  126.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  126.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  126.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  126.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  126.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  126.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  126.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  126.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  126.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  126.34 + */
  126.35 +package net.fortuna.ical4j.model.parameter;
  126.36 +
  126.37 +import net.fortuna.ical4j.model.Parameter;
  126.38 +import net.fortuna.ical4j.model.ParameterFactoryImpl;
  126.39 +import net.fortuna.ical4j.util.Strings;
  126.40 +
  126.41 +/**
  126.42 + * $Id$ [18-Apr-2004]
  126.43 + *
  126.44 + * Defines a Participation Role parameter.
  126.45 + * @author benfortuna
  126.46 + */
  126.47 +public class Role extends Parameter {
  126.48 +
  126.49 +    private static final long serialVersionUID = 1438225631470825963L;
  126.50 +
  126.51 +    private static final String VALUE_CHAIR = "CHAIR";
  126.52 +
  126.53 +    private static final String VALUE_REQ_PARTICIPANT = "REQ-PARTICIPANT";
  126.54 +
  126.55 +    private static final String VALUE_OPT_PARTICIPANT = "OPT-PARTICIPANT";
  126.56 +
  126.57 +    private static final String VALUE_NON_PARTICIPANT = "NON-PARTICIPANT";
  126.58 +
  126.59 +    /**
  126.60 +     * Chair.
  126.61 +     */
  126.62 +    public static final Role CHAIR = new Role(VALUE_CHAIR);
  126.63 +
  126.64 +    /**
  126.65 +     * Required participant.
  126.66 +     */
  126.67 +    public static final Role REQ_PARTICIPANT = new Role(VALUE_REQ_PARTICIPANT);
  126.68 +
  126.69 +    /**
  126.70 +     * Optional participant.
  126.71 +     */
  126.72 +    public static final Role OPT_PARTICIPANT = new Role(VALUE_OPT_PARTICIPANT);
  126.73 +
  126.74 +    /**
  126.75 +     * Non-participant.
  126.76 +     */
  126.77 +    public static final Role NON_PARTICIPANT = new Role(VALUE_NON_PARTICIPANT);
  126.78 +
  126.79 +    private String value;
  126.80 +
  126.81 +    /**
  126.82 +     * @param aValue a string representation of a participation role
  126.83 +     */
  126.84 +    public Role(final String aValue) {
  126.85 +        super(ROLE, ParameterFactoryImpl.getInstance());
  126.86 +        this.value = Strings.unquote(aValue);
  126.87 +    }
  126.88 +
  126.89 +    /**
  126.90 +     * {@inheritDoc}
  126.91 +     */
  126.92 +    public final String getValue() {
  126.93 +        return value;
  126.94 +    }
  126.95 +}
   127.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   127.2 +++ b/src/net/fortuna/ical4j/model/parameter/Rsvp.java	Tue Feb 10 18:12:00 2015 +0100
   127.3 @@ -0,0 +1,106 @@
   127.4 +/**
   127.5 + * Copyright (c) 2012, Ben Fortuna
   127.6 + * All rights reserved.
   127.7 + *
   127.8 + * Redistribution and use in source and binary forms, with or without
   127.9 + * modification, are permitted provided that the following conditions
  127.10 + * are met:
  127.11 + *
  127.12 + *  o Redistributions of source code must retain the above copyright
  127.13 + * notice, this list of conditions and the following disclaimer.
  127.14 + *
  127.15 + *  o Redistributions in binary form must reproduce the above copyright
  127.16 + * notice, this list of conditions and the following disclaimer in the
  127.17 + * documentation and/or other materials provided with the distribution.
  127.18 + *
  127.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  127.20 + * may be used to endorse or promote products derived from this software
  127.21 + * without specific prior written permission.
  127.22 + *
  127.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  127.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  127.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  127.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  127.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  127.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  127.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  127.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  127.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  127.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  127.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  127.34 + */
  127.35 +package net.fortuna.ical4j.model.parameter;
  127.36 +
  127.37 +import net.fortuna.ical4j.model.Parameter;
  127.38 +import net.fortuna.ical4j.model.ParameterFactoryImpl;
  127.39 +
  127.40 +/**
  127.41 + * $Id$ [18-Apr-2004]
  127.42 + *
  127.43 + * Defines an RSVP parameter.
  127.44 + * @author benfortuna
  127.45 + */
  127.46 +public class Rsvp extends Parameter {
  127.47 +
  127.48 +    private static final long serialVersionUID = -5381653882942018012L;
  127.49 +
  127.50 +    private static final String VALUE_TRUE = "TRUE";
  127.51 +
  127.52 +    private static final String VALUE_FALSE = "FALSE";
  127.53 +
  127.54 +    /**
  127.55 +     * RSVP is required.
  127.56 +     */
  127.57 +    public static final Rsvp TRUE = new Rsvp(VALUE_TRUE);
  127.58 +
  127.59 +    /**
  127.60 +     * RSVP not required.
  127.61 +     */
  127.62 +    public static final Rsvp FALSE = new Rsvp(VALUE_FALSE);
  127.63 +
  127.64 +    private Boolean rsvp;
  127.65 +
  127.66 +    /**
  127.67 +     * @param aValue a string representation of an RSVP
  127.68 +     */
  127.69 +    public Rsvp(final String aValue) {
  127.70 +        this(Boolean.valueOf(aValue));
  127.71 +    }
  127.72 +
  127.73 +    /**
  127.74 +     * @param aValue a boolean value
  127.75 +     */
  127.76 +    public Rsvp(final Boolean aValue) {
  127.77 +        super(RSVP, ParameterFactoryImpl.getInstance());
  127.78 +        this.rsvp = aValue;
  127.79 +    }
  127.80 +
  127.81 +    /**
  127.82 +     * @return Returns the rsvp.
  127.83 +     */
  127.84 +    public final Boolean getRsvp() {
  127.85 +        return rsvp;
  127.86 +    }
  127.87 +
  127.88 +    /**
  127.89 +     * {@inheritDoc}
  127.90 +     */
  127.91 +    public final String getValue() {
  127.92 +        if (rsvp.booleanValue()) {
  127.93 +            return VALUE_TRUE;
  127.94 +        } else {
  127.95 +            return VALUE_FALSE;
  127.96 +        }
  127.97 +    }
  127.98 +    
  127.99 +    /**
 127.100 +     * {@inheritDoc}
 127.101 +     */
 127.102 +    public final Parameter copy() {
 127.103 +        if (rsvp.booleanValue()) {
 127.104 +            return TRUE;
 127.105 +        } else {
 127.106 +            return FALSE;
 127.107 +        }
 127.108 +    }
 127.109 +}
   128.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   128.2 +++ b/src/net/fortuna/ical4j/model/parameter/ScheduleAgent.java	Tue Feb 10 18:12:00 2015 +0100
   128.3 @@ -0,0 +1,75 @@
   128.4 +/**
   128.5 + * Copyright (c) 2012, Ben Fortuna
   128.6 + * All rights reserved.
   128.7 + *
   128.8 + * Redistribution and use in source and binary forms, with or without
   128.9 + * modification, are permitted provided that the following conditions
  128.10 + * are met:
  128.11 + *
  128.12 + *  o Redistributions of source code must retain the above copyright
  128.13 + * notice, this list of conditions and the following disclaimer.
  128.14 + *
  128.15 + *  o Redistributions in binary form must reproduce the above copyright
  128.16 + * notice, this list of conditions and the following disclaimer in the
  128.17 + * documentation and/or other materials provided with the distribution.
  128.18 + *
  128.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  128.20 + * may be used to endorse or promote products derived from this software
  128.21 + * without specific prior written permission.
  128.22 + *
  128.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  128.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  128.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  128.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  128.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  128.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  128.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  128.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  128.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  128.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  128.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  128.34 + */
  128.35 +package net.fortuna.ical4j.model.parameter;
  128.36 +
  128.37 +import net.fortuna.ical4j.model.Parameter;
  128.38 +import net.fortuna.ical4j.model.ParameterFactoryImpl;
  128.39 +import net.fortuna.ical4j.util.Strings;
  128.40 +
  128.41 +/**
  128.42 + * Defines the scheduling agent for CalDAV scheduling.
  128.43 + * @author Mike Douglass
  128.44 + */
  128.45 +public class ScheduleAgent extends Parameter {
  128.46 +
  128.47 +    //private static final long serialVersionUID = -3134064324693983052L;
  128.48 +
  128.49 +    private static final String VALUE_SERVER = "SERVER";
  128.50 +
  128.51 +    private static final String VALUE_CLIENT = "CLIENT";
  128.52 +
  128.53 +    private static final String VALUE_NONE = "NONE";
  128.54 +
  128.55 +    public static final ScheduleAgent SERVER = new ScheduleAgent(VALUE_SERVER);
  128.56 +
  128.57 +    public static final ScheduleAgent CLIENT = new ScheduleAgent(VALUE_CLIENT);
  128.58 +
  128.59 +    public static final ScheduleAgent NONE = new ScheduleAgent(VALUE_NONE);
  128.60 +
  128.61 +    private String value;
  128.62 +
  128.63 +    /**
  128.64 +     * @param aValue a string representation of a scheduling agent
  128.65 +     */
  128.66 +    public ScheduleAgent(final String aValue) {
  128.67 +        super(SCHEDULE_AGENT, ParameterFactoryImpl.getInstance());
  128.68 +        this.value = Strings.unquote(aValue);
  128.69 +    }
  128.70 +
  128.71 +    /*
  128.72 +     * (non-Javadoc)
  128.73 +     * @see net.fortuna.ical4j.model.Parameter#getValue()
  128.74 +     */
  128.75 +    public final String getValue() {
  128.76 +        return value;
  128.77 +    }
  128.78 +}
   129.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   129.2 +++ b/src/net/fortuna/ical4j/model/parameter/ScheduleStatus.java	Tue Feb 10 18:12:00 2015 +0100
   129.3 @@ -0,0 +1,62 @@
   129.4 +/**
   129.5 + * Copyright (c) 2012, Ben Fortuna
   129.6 + * All rights reserved.
   129.7 + *
   129.8 + * Redistribution and use in source and binary forms, with or without
   129.9 + * modification, are permitted provided that the following conditions
  129.10 + * are met:
  129.11 + *
  129.12 + *  o Redistributions of source code must retain the above copyright
  129.13 + * notice, this list of conditions and the following disclaimer.
  129.14 + *
  129.15 + *  o Redistributions in binary form must reproduce the above copyright
  129.16 + * notice, this list of conditions and the following disclaimer in the
  129.17 + * documentation and/or other materials provided with the distribution.
  129.18 + *
  129.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  129.20 + * may be used to endorse or promote products derived from this software
  129.21 + * without specific prior written permission.
  129.22 + *
  129.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  129.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  129.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  129.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  129.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  129.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  129.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  129.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  129.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  129.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  129.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  129.34 + */
  129.35 +package net.fortuna.ical4j.model.parameter;
  129.36 +
  129.37 +import net.fortuna.ical4j.model.Parameter;
  129.38 +import net.fortuna.ical4j.model.ParameterFactoryImpl;
  129.39 +import net.fortuna.ical4j.util.Strings;
  129.40 +
  129.41 +/**
  129.42 + * Defines the scheduling status for CalDAV scheduling.
  129.43 + * @author Mike Douglass
  129.44 + */
  129.45 +public class ScheduleStatus extends Parameter {
  129.46 +    private static final long serialVersionUID = -96936874776850075L;
  129.47 +
  129.48 +    private String value;
  129.49 +
  129.50 +    /**
  129.51 +     * @param aValue a string scheduling status
  129.52 +     */
  129.53 +    public ScheduleStatus(final String aValue) {
  129.54 +        super(SCHEDULE_STATUS, ParameterFactoryImpl.getInstance());
  129.55 +        this.value = Strings.unquote(aValue);
  129.56 +    }
  129.57 +
  129.58 +    /*
  129.59 +     * (non-Javadoc)
  129.60 +     * @see net.fortuna.ical4j.model.Parameter#getValue()
  129.61 +     */
  129.62 +    public final String getValue() {
  129.63 +        return value;
  129.64 +    }
  129.65 +}
   130.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   130.2 +++ b/src/net/fortuna/ical4j/model/parameter/SentBy.java	Tue Feb 10 18:12:00 2015 +0100
   130.3 @@ -0,0 +1,83 @@
   130.4 +/**
   130.5 + * Copyright (c) 2012, Ben Fortuna
   130.6 + * All rights reserved.
   130.7 + *
   130.8 + * Redistribution and use in source and binary forms, with or without
   130.9 + * modification, are permitted provided that the following conditions
  130.10 + * are met:
  130.11 + *
  130.12 + *  o Redistributions of source code must retain the above copyright
  130.13 + * notice, this list of conditions and the following disclaimer.
  130.14 + *
  130.15 + *  o Redistributions in binary form must reproduce the above copyright
  130.16 + * notice, this list of conditions and the following disclaimer in the
  130.17 + * documentation and/or other materials provided with the distribution.
  130.18 + *
  130.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  130.20 + * may be used to endorse or promote products derived from this software
  130.21 + * without specific prior written permission.
  130.22 + *
  130.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  130.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  130.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  130.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  130.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  130.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  130.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  130.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  130.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  130.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  130.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  130.34 + */
  130.35 +package net.fortuna.ical4j.model.parameter;
  130.36 +
  130.37 +import java.net.URI;
  130.38 +import java.net.URISyntaxException;
  130.39 +
  130.40 +import net.fortuna.ical4j.model.Parameter;
  130.41 +import net.fortuna.ical4j.model.ParameterFactoryImpl;
  130.42 +import net.fortuna.ical4j.util.Strings;
  130.43 +import net.fortuna.ical4j.util.Uris;
  130.44 +
  130.45 +/**
  130.46 + * $Id$ [18-Apr-2004]
  130.47 + *
  130.48 + * Defines a Sent By parameter.
  130.49 + * @author benfortuna
  130.50 + */
  130.51 +public class SentBy extends Parameter {
  130.52 +
  130.53 +    private static final long serialVersionUID = -1169413145174029391L;
  130.54 +
  130.55 +    private URI address;
  130.56 +
  130.57 +    /**
  130.58 +     * @param aValue a string representation of a sent by
  130.59 +     * @throws URISyntaxException when the specified string is not a valid (quoted) uri
  130.60 +     */
  130.61 +    public SentBy(final String aValue) throws URISyntaxException {
  130.62 +        this(Uris.create(Strings.unquote(aValue)));
  130.63 +    }
  130.64 +
  130.65 +    /**
  130.66 +     * @param aUri a URI representing a sent by
  130.67 +     */
  130.68 +    public SentBy(final URI aUri) {
  130.69 +        super(SENT_BY, ParameterFactoryImpl.getInstance());
  130.70 +        this.address = aUri;
  130.71 +    }
  130.72 +
  130.73 +    /**
  130.74 +     * @return Returns the address.
  130.75 +     */
  130.76 +    public final URI getAddress() {
  130.77 +        return address;
  130.78 +    }
  130.79 +
  130.80 +    /**
  130.81 +     * {@inheritDoc}
  130.82 +     */
  130.83 +    public final String getValue() {
  130.84 +        return Uris.decode(Strings.valueOf(getAddress()));
  130.85 +    }
  130.86 +}
   131.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   131.2 +++ b/src/net/fortuna/ical4j/model/parameter/Type.java	Tue Feb 10 18:12:00 2015 +0100
   131.3 @@ -0,0 +1,65 @@
   131.4 +/**
   131.5 + * Copyright (c) 2012, Ben Fortuna
   131.6 + * All rights reserved.
   131.7 + *
   131.8 + * Redistribution and use in source and binary forms, with or without
   131.9 + * modification, are permitted provided that the following conditions
  131.10 + * are met:
  131.11 + *
  131.12 + *  o Redistributions of source code must retain the above copyright
  131.13 + * notice, this list of conditions and the following disclaimer.
  131.14 + *
  131.15 + *  o Redistributions in binary form must reproduce the above copyright
  131.16 + * notice, this list of conditions and the following disclaimer in the
  131.17 + * documentation and/or other materials provided with the distribution.
  131.18 + *
  131.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  131.20 + * may be used to endorse or promote products derived from this software
  131.21 + * without specific prior written permission.
  131.22 + *
  131.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  131.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  131.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  131.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  131.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  131.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  131.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  131.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  131.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  131.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  131.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  131.34 + */
  131.35 +package net.fortuna.ical4j.model.parameter;
  131.36 +
  131.37 +import net.fortuna.ical4j.model.Parameter;
  131.38 +import net.fortuna.ical4j.model.ParameterFactoryImpl;
  131.39 +import net.fortuna.ical4j.util.Strings;
  131.40 +
  131.41 +/**
  131.42 + * $Id$ [18-Apr-2004]
  131.43 + *
  131.44 + * Defines a Type parameter.
  131.45 + * @author benfortuna
  131.46 + * @author Mike Douglass
  131.47 + */
  131.48 +public class Type extends Parameter {
  131.49 +
  131.50 +	private static final long serialVersionUID = -1153398789161059941L;
  131.51 +
  131.52 +	private String value;
  131.53 +
  131.54 +    /**
  131.55 +     * @param aValue a string abbreviation
  131.56 +     */
  131.57 +    public Type(final String aValue) {
  131.58 +        super(TYPE, ParameterFactoryImpl.getInstance());
  131.59 +        this.value = Strings.unquote(aValue);
  131.60 +    }
  131.61 +
  131.62 +    /**
  131.63 +     * {@inheritDoc}
  131.64 +     */
  131.65 +    public final String getValue() {
  131.66 +        return value;
  131.67 +    }
  131.68 +}
   132.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   132.2 +++ b/src/net/fortuna/ical4j/model/parameter/TzId.java	Tue Feb 10 18:12:00 2015 +0100
   132.3 @@ -0,0 +1,72 @@
   132.4 +/**
   132.5 + * Copyright (c) 2012, Ben Fortuna
   132.6 + * All rights reserved.
   132.7 + *
   132.8 + * Redistribution and use in source and binary forms, with or without
   132.9 + * modification, are permitted provided that the following conditions
  132.10 + * are met:
  132.11 + *
  132.12 + *  o Redistributions of source code must retain the above copyright
  132.13 + * notice, this list of conditions and the following disclaimer.
  132.14 + *
  132.15 + *  o Redistributions in binary form must reproduce the above copyright
  132.16 + * notice, this list of conditions and the following disclaimer in the
  132.17 + * documentation and/or other materials provided with the distribution.
  132.18 + *
  132.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  132.20 + * may be used to endorse or promote products derived from this software
  132.21 + * without specific prior written permission.
  132.22 + *
  132.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  132.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  132.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  132.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  132.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  132.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  132.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  132.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  132.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  132.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  132.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  132.34 + */
  132.35 +package net.fortuna.ical4j.model.parameter;
  132.36 +
  132.37 +import net.fortuna.ical4j.model.Escapable;
  132.38 +import net.fortuna.ical4j.model.Parameter;
  132.39 +import net.fortuna.ical4j.model.ParameterFactoryImpl;
  132.40 +import net.fortuna.ical4j.util.Strings;
  132.41 +
  132.42 +/**
  132.43 + * $Id$ [18-Apr-2004]
  132.44 + *
  132.45 + * Defines a Time Zone Identifier parameter.
  132.46 + * @author benfortuna
  132.47 + */
  132.48 +public class TzId extends Parameter implements Escapable {
  132.49 +
  132.50 +    private static final long serialVersionUID = 2366516258055857879L;
  132.51 +
  132.52 +    /**
  132.53 +     * Timezone identifier prefix.
  132.54 +     */
  132.55 +    public static final String PREFIX = "/";
  132.56 +
  132.57 +    private String value;
  132.58 +
  132.59 +    /**
  132.60 +     * @param aValue a string representation of a time zone identifier
  132.61 +     */
  132.62 +    public TzId(final String aValue) {
  132.63 +        super(TZID, ParameterFactoryImpl.getInstance());
  132.64 +        // parameter values may be quoted if they contain characters in the
  132.65 +        // set [:;,]..
  132.66 +        this.value = Strings.unquote(aValue);
  132.67 +    }
  132.68 +
  132.69 +    /**
  132.70 +     * {@inheritDoc}
  132.71 +     */
  132.72 +    public final String getValue() {
  132.73 +        return value;
  132.74 +    }
  132.75 +}
   133.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   133.2 +++ b/src/net/fortuna/ical4j/model/parameter/Value.java	Tue Feb 10 18:12:00 2015 +0100
   133.3 @@ -0,0 +1,162 @@
   133.4 +/**
   133.5 + * Copyright (c) 2012, Ben Fortuna
   133.6 + * All rights reserved.
   133.7 + *
   133.8 + * Redistribution and use in source and binary forms, with or without
   133.9 + * modification, are permitted provided that the following conditions
  133.10 + * are met:
  133.11 + *
  133.12 + *  o Redistributions of source code must retain the above copyright
  133.13 + * notice, this list of conditions and the following disclaimer.
  133.14 + *
  133.15 + *  o Redistributions in binary form must reproduce the above copyright
  133.16 + * notice, this list of conditions and the following disclaimer in the
  133.17 + * documentation and/or other materials provided with the distribution.
  133.18 + *
  133.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  133.20 + * may be used to endorse or promote products derived from this software
  133.21 + * without specific prior written permission.
  133.22 + *
  133.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  133.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  133.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  133.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  133.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  133.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  133.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  133.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  133.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  133.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  133.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  133.34 + */
  133.35 +package net.fortuna.ical4j.model.parameter;
  133.36 +
  133.37 +import net.fortuna.ical4j.model.Parameter;
  133.38 +import net.fortuna.ical4j.model.ParameterFactoryImpl;
  133.39 +import net.fortuna.ical4j.util.Strings;
  133.40 +
  133.41 +/**
  133.42 + * $Id$ [18-Apr-2004]
  133.43 + *
  133.44 + * Defines a Value Data Type parameter.
  133.45 + * @author Ben Fortuna
  133.46 + */
  133.47 +public class Value extends Parameter {
  133.48 +
  133.49 +    private static final long serialVersionUID = -7238642734500301768L;
  133.50 +
  133.51 +    private static final String VALUE_BINARY = "BINARY";
  133.52 +
  133.53 +    private static final String VALUE_BOOLEAN = "BOOLEAN";
  133.54 +
  133.55 +    private static final String VALUE_CAL_ADDRESS = "CAL-ADDRESS";
  133.56 +
  133.57 +    private static final String VALUE_DATE = "DATE";
  133.58 +
  133.59 +    private static final String VALUE_DATE_TIME = "DATE-TIME";
  133.60 +
  133.61 +    private static final String VALUE_DURATION = "DURATION";
  133.62 +
  133.63 +    private static final String VALUE_FLOAT = "FLOAT";
  133.64 +
  133.65 +    private static final String VALUE_INTEGER = "INTEGER";
  133.66 +
  133.67 +    private static final String VALUE_PERIOD = "PERIOD";
  133.68 +
  133.69 +    private static final String VALUE_RECUR = "RECUR";
  133.70 +
  133.71 +    private static final String VALUE_TEXT = "TEXT";
  133.72 +
  133.73 +    private static final String VALUE_TIME = "TIME";
  133.74 +
  133.75 +    private static final String VALUE_URI = "URI";
  133.76 +
  133.77 +    private static final String VALUE_UTC_OFFSET = "UTC-OFFSET";
  133.78 +
  133.79 +    /**
  133.80 +     * Binary value type.
  133.81 +     */
  133.82 +    public static final Value BINARY = new Value(VALUE_BINARY);
  133.83 +
  133.84 +    /**
  133.85 +     * Boolean value type.
  133.86 +     */
  133.87 +    public static final Value BOOLEAN = new Value(VALUE_BOOLEAN);
  133.88 +
  133.89 +    /**
  133.90 +     * Calendar address value type.
  133.91 +     */
  133.92 +    public static final Value CAL_ADDRESS = new Value(VALUE_CAL_ADDRESS);
  133.93 +
  133.94 +    /**
  133.95 +     * Date value type.
  133.96 +     */
  133.97 +    public static final Value DATE = new Value(VALUE_DATE);
  133.98 +
  133.99 +    /**
 133.100 +     * Date-time value type.
 133.101 +     */
 133.102 +    public static final Value DATE_TIME = new Value(VALUE_DATE_TIME);
 133.103 +
 133.104 +    /**
 133.105 +     * Duration value type.
 133.106 +     */
 133.107 +    public static final Value DURATION = new Value(VALUE_DURATION);
 133.108 +
 133.109 +    /**
 133.110 +     * Float value type.
 133.111 +     */
 133.112 +    public static final Value FLOAT = new Value(VALUE_FLOAT);
 133.113 +
 133.114 +    /**
 133.115 +     * Integer value type.
 133.116 +     */
 133.117 +    public static final Value INTEGER = new Value(VALUE_INTEGER);
 133.118 +
 133.119 +    /**
 133.120 +     * Period value type.
 133.121 +     */
 133.122 +    public static final Value PERIOD = new Value(VALUE_PERIOD);
 133.123 +
 133.124 +    /**
 133.125 +     * Recurrence value type.
 133.126 +     */
 133.127 +    public static final Value RECUR = new Value(VALUE_RECUR);
 133.128 +
 133.129 +    /**
 133.130 +     * Text value type.
 133.131 +     */
 133.132 +    public static final Value TEXT = new Value(VALUE_TEXT);
 133.133 +
 133.134 +    /**
 133.135 +     * Time value type.
 133.136 +     */
 133.137 +    public static final Value TIME = new Value(VALUE_TIME);
 133.138 +
 133.139 +    /**
 133.140 +     * URI value type.
 133.141 +     */
 133.142 +    public static final Value URI = new Value(VALUE_URI);
 133.143 +
 133.144 +    /**
 133.145 +     * UTC offset value type.
 133.146 +     */
 133.147 +    public static final Value UTC_OFFSET = new Value(VALUE_UTC_OFFSET);
 133.148 +
 133.149 +    private String value;
 133.150 +
 133.151 +    /**
 133.152 +     * @param aValue a string representation of a value data type
 133.153 +     */
 133.154 +    public Value(final String aValue) {
 133.155 +        super(VALUE, ParameterFactoryImpl.getInstance());
 133.156 +        this.value = Strings.unquote(aValue);
 133.157 +    }
 133.158 +
 133.159 +    /**
 133.160 +     * {@inheritDoc}
 133.161 +     */
 133.162 +    public final String getValue() {
 133.163 +        return value;
 133.164 +    }
 133.165 +}
   134.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   134.2 +++ b/src/net/fortuna/ical4j/model/parameter/Vvenue.java	Tue Feb 10 18:12:00 2015 +0100
   134.3 @@ -0,0 +1,65 @@
   134.4 +/**
   134.5 + * Copyright (c) 2012, Ben Fortuna
   134.6 + * All rights reserved.
   134.7 + *
   134.8 + * Redistribution and use in source and binary forms, with or without
   134.9 + * modification, are permitted provided that the following conditions
  134.10 + * are met:
  134.11 + *
  134.12 + *  o Redistributions of source code must retain the above copyright
  134.13 + * notice, this list of conditions and the following disclaimer.
  134.14 + *
  134.15 + *  o Redistributions in binary form must reproduce the above copyright
  134.16 + * notice, this list of conditions and the following disclaimer in the
  134.17 + * documentation and/or other materials provided with the distribution.
  134.18 + *
  134.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  134.20 + * may be used to endorse or promote products derived from this software
  134.21 + * without specific prior written permission.
  134.22 + *
  134.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  134.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  134.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  134.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  134.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  134.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  134.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  134.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  134.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  134.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  134.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  134.34 + */
  134.35 +package net.fortuna.ical4j.model.parameter;
  134.36 +
  134.37 +import net.fortuna.ical4j.model.Parameter;
  134.38 +import net.fortuna.ical4j.model.ParameterFactoryImpl;
  134.39 +import net.fortuna.ical4j.util.Strings;
  134.40 +
  134.41 +/**
  134.42 + * $Id$ [18-Apr-2004]
  134.43 + *
  134.44 + * Defines a Vvenue parameter.
  134.45 + * @author benfortuna
  134.46 + * @author Mike Douglass
  134.47 + */
  134.48 +public class Vvenue extends Parameter {
  134.49 +
  134.50 +	private static final long serialVersionUID = -8381878834513491869L;
  134.51 +	
  134.52 +	private String value;
  134.53 +
  134.54 +    /**
  134.55 +     * @param aValue a string abbreviation
  134.56 +     */
  134.57 +    public Vvenue(final String aValue) {
  134.58 +        super(VVENUE, ParameterFactoryImpl.getInstance());
  134.59 +        this.value = Strings.unquote(aValue);
  134.60 +    }
  134.61 +
  134.62 +    /**
  134.63 +     * {@inheritDoc}
  134.64 +     */
  134.65 +    public final String getValue() {
  134.66 +        return value;
  134.67 +    }
  134.68 +}
   135.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   135.2 +++ b/src/net/fortuna/ical4j/model/parameter/XParameter.java	Tue Feb 10 18:12:00 2015 +0100
   135.3 @@ -0,0 +1,65 @@
   135.4 +/**
   135.5 + * Copyright (c) 2012, Ben Fortuna
   135.6 + * All rights reserved.
   135.7 + *
   135.8 + * Redistribution and use in source and binary forms, with or without
   135.9 + * modification, are permitted provided that the following conditions
  135.10 + * are met:
  135.11 + *
  135.12 + *  o Redistributions of source code must retain the above copyright
  135.13 + * notice, this list of conditions and the following disclaimer.
  135.14 + *
  135.15 + *  o Redistributions in binary form must reproduce the above copyright
  135.16 + * notice, this list of conditions and the following disclaimer in the
  135.17 + * documentation and/or other materials provided with the distribution.
  135.18 + *
  135.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  135.20 + * may be used to endorse or promote products derived from this software
  135.21 + * without specific prior written permission.
  135.22 + *
  135.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  135.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  135.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  135.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  135.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  135.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  135.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  135.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  135.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  135.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  135.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  135.34 + */
  135.35 +package net.fortuna.ical4j.model.parameter;
  135.36 +
  135.37 +import net.fortuna.ical4j.model.Parameter;
  135.38 +import net.fortuna.ical4j.model.ParameterFactoryImpl;
  135.39 +import net.fortuna.ical4j.util.Strings;
  135.40 +
  135.41 +/**
  135.42 + * $Id$ [15/06/2004]
  135.43 + *
  135.44 + * Defines an extension parameter.
  135.45 + * @author benfortuna
  135.46 + */
  135.47 +public class XParameter extends Parameter {
  135.48 +
  135.49 +    private static final long serialVersionUID = -3372153616695145903L;
  135.50 +
  135.51 +    private String value;
  135.52 +
  135.53 +    /**
  135.54 +     * @param aName parameter name
  135.55 +     * @param aValue parameter value
  135.56 +     */
  135.57 +    public XParameter(final String aName, final String aValue) {
  135.58 +        super(aName, ParameterFactoryImpl.getInstance());
  135.59 +        this.value = Strings.unquote(aValue);
  135.60 +    }
  135.61 +
  135.62 +    /**
  135.63 +     * {@inheritDoc}
  135.64 +     */
  135.65 +    public final String getValue() {
  135.66 +        return value;
  135.67 +    }
  135.68 +}
   136.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   136.2 +++ b/src/net/fortuna/ical4j/model/property/Action.java	Tue Feb 10 18:12:00 2015 +0100
   136.3 @@ -0,0 +1,140 @@
   136.4 +/**
   136.5 + * Copyright (c) 2012, Ben Fortuna
   136.6 + * All rights reserved.
   136.7 + *
   136.8 + * Redistribution and use in source and binary forms, with or without
   136.9 + * modification, are permitted provided that the following conditions
  136.10 + * are met:
  136.11 + *
  136.12 + *  o Redistributions of source code must retain the above copyright
  136.13 + * notice, this list of conditions and the following disclaimer.
  136.14 + *
  136.15 + *  o Redistributions in binary form must reproduce the above copyright
  136.16 + * notice, this list of conditions and the following disclaimer in the
  136.17 + * documentation and/or other materials provided with the distribution.
  136.18 + *
  136.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  136.20 + * may be used to endorse or promote products derived from this software
  136.21 + * without specific prior written permission.
  136.22 + *
  136.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  136.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  136.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  136.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  136.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  136.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  136.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  136.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  136.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  136.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  136.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  136.34 + */
  136.35 +package net.fortuna.ical4j.model.property;
  136.36 +
  136.37 +import net.fortuna.ical4j.model.ParameterList;
  136.38 +import net.fortuna.ical4j.model.Property;
  136.39 +import net.fortuna.ical4j.model.PropertyFactoryImpl;
  136.40 +import net.fortuna.ical4j.model.ValidationException;
  136.41 +
  136.42 +/**
  136.43 + * $Id$
  136.44 + *
  136.45 + * Created: [Apr 6, 2004]
  136.46 + *
  136.47 + * Defines an ACTION iCalendar component property.
  136.48 + * @author benf
  136.49 + */
  136.50 +public class Action extends Property {
  136.51 +
  136.52 +    private static final long serialVersionUID = -2353353838411753712L;
  136.53 +
  136.54 +    /**
  136.55 +     * Constant action for playing an audible sound.
  136.56 +     */
  136.57 +    public static final Action AUDIO = new ImmutableAction("AUDIO");
  136.58 +
  136.59 +    /**
  136.60 +     * Constant action for displaying a visible notification.
  136.61 +     */
  136.62 +    public static final Action DISPLAY = new ImmutableAction("DISPLAY");
  136.63 +
  136.64 +    /**
  136.65 +     * Constant action for sending an email.
  136.66 +     */
  136.67 +    public static final Action EMAIL = new ImmutableAction("EMAIL");
  136.68 +
  136.69 +    /**
  136.70 +     * Constant action for a procedure.
  136.71 +     */
  136.72 +    public static final Action PROCEDURE = new ImmutableAction("PROCEDURE");
  136.73 +
  136.74 +    /**
  136.75 +     * @author Ben Fortuna An immutable instance of Action.
  136.76 +     */
  136.77 +    private static final class ImmutableAction extends Action {
  136.78 +
  136.79 +        private static final long serialVersionUID = -2752235951243969905L;
  136.80 +
  136.81 +        /**
  136.82 +         * @param value
  136.83 +         */
  136.84 +        private ImmutableAction(final String value) {
  136.85 +            super(new ParameterList(true), value);
  136.86 +        }
  136.87 +
  136.88 +        /**
  136.89 +         * {@inheritDoc}
  136.90 +         */
  136.91 +        public void setValue(final String aValue) {
  136.92 +            throw new UnsupportedOperationException(
  136.93 +                    "Cannot modify constant instances");
  136.94 +        }
  136.95 +    }
  136.96 +
  136.97 +    private String value;
  136.98 +
  136.99 +    /**
 136.100 +     * Default constructor.
 136.101 +     */
 136.102 +    public Action() {
 136.103 +        super(ACTION, PropertyFactoryImpl.getInstance());
 136.104 +    }
 136.105 +
 136.106 +    /**
 136.107 +     * @param aValue a value string for this component
 136.108 +     */
 136.109 +    public Action(final String aValue) {
 136.110 +        super(ACTION, PropertyFactoryImpl.getInstance());
 136.111 +        this.value = aValue;
 136.112 +    }
 136.113 +
 136.114 +    /**
 136.115 +     * @param aList a list of parameters for this component
 136.116 +     * @param aValue a value string for this component
 136.117 +     */
 136.118 +    public Action(final ParameterList aList, final String aValue) {
 136.119 +        super(ACTION, aList, PropertyFactoryImpl.getInstance());
 136.120 +        this.value = aValue;
 136.121 +    }
 136.122 +
 136.123 +    /**
 136.124 +     * {@inheritDoc}
 136.125 +     */
 136.126 +    public void setValue(final String aValue) {
 136.127 +        this.value = aValue;
 136.128 +    }
 136.129 +
 136.130 +    /**
 136.131 +     * {@inheritDoc}
 136.132 +     */
 136.133 +    public final String getValue() {
 136.134 +        return value;
 136.135 +    }
 136.136 +
 136.137 +    /**
 136.138 +     * {@inheritDoc}
 136.139 +     */
 136.140 +    public final void validate() throws ValidationException {
 136.141 +        // TODO: Auto-generated method stub
 136.142 +    }
 136.143 +}
   137.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   137.2 +++ b/src/net/fortuna/ical4j/model/property/Attach.java	Tue Feb 10 18:12:00 2015 +0100
   137.3 @@ -0,0 +1,303 @@
   137.4 +/**
   137.5 + * Copyright (c) 2012, Ben Fortuna
   137.6 + * All rights reserved.
   137.7 + *
   137.8 + * Redistribution and use in source and binary forms, with or without
   137.9 + * modification, are permitted provided that the following conditions
  137.10 + * are met:
  137.11 + *
  137.12 + *  o Redistributions of source code must retain the above copyright
  137.13 + * notice, this list of conditions and the following disclaimer.
  137.14 + *
  137.15 + *  o Redistributions in binary form must reproduce the above copyright
  137.16 + * notice, this list of conditions and the following disclaimer in the
  137.17 + * documentation and/or other materials provided with the distribution.
  137.18 + *
  137.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  137.20 + * may be used to endorse or promote products derived from this software
  137.21 + * without specific prior written permission.
  137.22 + *
  137.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  137.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  137.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  137.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  137.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  137.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  137.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  137.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  137.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  137.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  137.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  137.34 + */
  137.35 +package net.fortuna.ical4j.model.property;
  137.36 +
  137.37 +import java.io.IOException;
  137.38 +import java.io.UnsupportedEncodingException;
  137.39 +import java.net.URI;
  137.40 +import java.net.URISyntaxException;
  137.41 +
  137.42 +import net.fortuna.ical4j.model.Parameter;
  137.43 +import net.fortuna.ical4j.model.ParameterList;
  137.44 +import net.fortuna.ical4j.model.Property;
  137.45 +import net.fortuna.ical4j.model.PropertyFactoryImpl;
  137.46 +import net.fortuna.ical4j.model.ValidationException;
  137.47 +import net.fortuna.ical4j.model.parameter.Encoding;
  137.48 +import net.fortuna.ical4j.model.parameter.Value;
  137.49 +import net.fortuna.ical4j.util.DecoderFactory;
  137.50 +import net.fortuna.ical4j.util.EncoderFactory;
  137.51 +import net.fortuna.ical4j.util.ParameterValidator;
  137.52 +import net.fortuna.ical4j.util.Strings;
  137.53 +import net.fortuna.ical4j.util.Uris;
  137.54 +
  137.55 +import org.apache.commons.codec.BinaryDecoder;
  137.56 +import org.apache.commons.codec.BinaryEncoder;
  137.57 +import org.apache.commons.codec.DecoderException;
  137.58 +import org.apache.commons.codec.EncoderException;
  137.59 +import org.apache.commons.logging.Log;
  137.60 +import org.apache.commons.logging.LogFactory;
  137.61 +
  137.62 +/**
  137.63 + * $Id$
  137.64 + *
  137.65 + * Created: [Apr 6, 2004]
  137.66 + *
  137.67 + * Defines an ATTACH iCalendar component property.
  137.68 + * 
  137.69 + * <pre>
  137.70 + *       4.8.1.1 Attachment
  137.71 + *       
  137.72 + *          Property Name: ATTACH
  137.73 + *       
  137.74 + *          Purpose: The property provides the capability to associate a document
  137.75 + *          object with a calendar component.
  137.76 + *       
  137.77 + *          Value Type: The default value type for this property is URI. The
  137.78 + *          value type can also be set to BINARY to indicate inline binary
  137.79 + *          encoded content information.
  137.80 + *       
  137.81 + *          Property Parameters: Non-standard, inline encoding, format type and
  137.82 + *          value data type property parameters can be specified on this
  137.83 + *          property.
  137.84 + *        
  137.85 + *          Conformance: The property can be specified in a &quot;VEVENT&quot;, &quot;VTODO&quot;,
  137.86 + *          &quot;VJOURNAL&quot; or &quot;VALARM&quot; calendar components.
  137.87 + *       
  137.88 + *          Description: The property can be specified within &quot;VEVENT&quot;, &quot;VTODO&quot;,
  137.89 + *          &quot;VJOURNAL&quot;, or &quot;VALARM&quot; calendar components. This property can be
  137.90 + *          specified multiple times within an iCalendar object.
  137.91 + *       
  137.92 + *          Format Definition: The property is defined by the following notation:
  137.93 + *       
  137.94 + *            attach     = &quot;ATTACH&quot; attparam &quot;:&quot; uri  CRLF
  137.95 + *       
  137.96 + *        attach     =/ &quot;ATTACH&quot; attparam &quot;;&quot; &quot;ENCODING&quot; &quot;=&quot; &quot;BASE64&quot;
  137.97 + *                          &quot;;&quot; &quot;VALUE&quot; &quot;=&quot; &quot;BINARY&quot; &quot;:&quot; binary
  137.98 + *       
  137.99 + *            attparam   = *(
 137.100 + *       
 137.101 + *                       ; the following is optional,
 137.102 + *                       ; but MUST NOT occur more than once
 137.103 + *       
 137.104 + *                       (&quot;;&quot; fmttypeparam) /
 137.105 + *       
 137.106 + *                       ; the following is optional,
 137.107 + *                       ; and MAY occur more than once
 137.108 + *       
 137.109 + *                       (&quot;;&quot; xparam)
 137.110 + *       
 137.111 + *                       )
 137.112 + * </pre>
 137.113 + * 
 137.114 + * @author benf
 137.115 + */
 137.116 +public class Attach extends Property {
 137.117 +
 137.118 +    private static final long serialVersionUID = 4439949507756383452L;
 137.119 +
 137.120 +    private URI uri;
 137.121 +
 137.122 +    private byte[] binary;
 137.123 +
 137.124 +    /**
 137.125 +     * Default constructor.
 137.126 +     */
 137.127 +    public Attach() {
 137.128 +        super(ATTACH, PropertyFactoryImpl.getInstance());
 137.129 +    }
 137.130 +
 137.131 +    /**
 137.132 +     * @param aList a list of parameters for this component
 137.133 +     * @param aValue a value string for this component
 137.134 +     * @throws IOException when there is an error reading the binary stream
 137.135 +     * @throws URISyntaxException where the specified string is not a valid uri
 137.136 +     */
 137.137 +    public Attach(final ParameterList aList, final String aValue)
 137.138 +            throws IOException, URISyntaxException {
 137.139 +        super(ATTACH, aList, PropertyFactoryImpl.getInstance());
 137.140 +        setValue(aValue);
 137.141 +    }
 137.142 +
 137.143 +    /**
 137.144 +     * @param data binary data
 137.145 +     */
 137.146 +    public Attach(final byte[] data) {
 137.147 +        super(ATTACH, PropertyFactoryImpl.getInstance());
 137.148 +        // add required parameters..
 137.149 +        getParameters().add(Encoding.BASE64);
 137.150 +        getParameters().add(Value.BINARY);
 137.151 +        this.binary = data;
 137.152 +    }
 137.153 +
 137.154 +    /**
 137.155 +     * @param aList a list of parameters for this component
 137.156 +     * @param data binary data
 137.157 +     */
 137.158 +    public Attach(final ParameterList aList, final byte[] data) {
 137.159 +        super(ATTACH, aList, PropertyFactoryImpl.getInstance());
 137.160 +        this.binary = data;
 137.161 +    }
 137.162 +
 137.163 +    /**
 137.164 +     * @param aUri a URI
 137.165 +     */
 137.166 +    public Attach(final URI aUri) {
 137.167 +        super(ATTACH, PropertyFactoryImpl.getInstance());
 137.168 +        this.uri = aUri;
 137.169 +    }
 137.170 +
 137.171 +    /**
 137.172 +     * @param aList a list of parameters for this component
 137.173 +     * @param aUri a URI
 137.174 +     */
 137.175 +    public Attach(final ParameterList aList, final URI aUri) {
 137.176 +        super(ATTACH, aList, PropertyFactoryImpl.getInstance());
 137.177 +        this.uri = aUri;
 137.178 +    }
 137.179 +
 137.180 +    /**
 137.181 +     * {@inheritDoc}
 137.182 +     */
 137.183 +    public final void validate() throws ValidationException {
 137.184 +
 137.185 +        /*
 137.186 +         * ; the following is optional, ; but MUST NOT occur more than once (";" fmttypeparam) /
 137.187 +         */
 137.188 +        ParameterValidator.getInstance().assertOneOrLess(Parameter.FMTTYPE,
 137.189 +                getParameters());
 137.190 +
 137.191 +        /*
 137.192 +         * ; the following is optional, ; and MAY occur more than once (";" xparam)
 137.193 +         */
 137.194 +
 137.195 +        /*
 137.196 +         * If the value type parameter is ";VALUE=BINARY", then the inline encoding parameter MUST be specified with the
 137.197 +         * value ";ENCODING=BASE64".
 137.198 +         */
 137.199 +        if (Value.BINARY.equals(getParameter(Parameter.VALUE))) {
 137.200 +            ParameterValidator.getInstance().assertOne(Parameter.ENCODING,
 137.201 +                    getParameters());
 137.202 +            if (!Encoding.BASE64.equals(getParameter(Parameter.ENCODING))) {
 137.203 +                throw new ValidationException(
 137.204 +                        "If the value type parameter is [BINARY], the inline"
 137.205 +                                + "encoding parameter MUST be specified with the value [BASE64]");
 137.206 +            }
 137.207 +        }
 137.208 +    }
 137.209 +
 137.210 +    /**
 137.211 +     * @return Returns the binary.
 137.212 +     */
 137.213 +    public final byte[] getBinary() {
 137.214 +        return binary;
 137.215 +    }
 137.216 +
 137.217 +    /**
 137.218 +     * @return Returns the uri.
 137.219 +     */
 137.220 +    public final URI getUri() {
 137.221 +        return uri;
 137.222 +    }
 137.223 +
 137.224 +    /**
 137.225 +     * Sets the current value of the Attach instance. If the specified
 137.226 +     * value is encoded binary data, the value is decoded and stored in
 137.227 +     * the binary field. Otherwise the value is assumed to be a URI
 137.228 +     * location to binary data and is stored as such.
 137.229 +     * 
 137.230 +     * @param aValue a string encoded binary or URI value
 137.231 +     * @throws IOException where binary data cannot be decoded
 137.232 +     * @throws URISyntaxException where the specified value is not a valid URI
 137.233 +     */
 137.234 +    public final void setValue(final String aValue) throws IOException,
 137.235 +            URISyntaxException {
 137.236 +        
 137.237 +        // determine if ATTACH is a URI or an embedded
 137.238 +        // binary..
 137.239 +        if (getParameter(Parameter.ENCODING) != null) {
 137.240 +            // binary = Base64.decode(aValue);
 137.241 +            try {
 137.242 +                final BinaryDecoder decoder = DecoderFactory.getInstance()
 137.243 +                        .createBinaryDecoder(
 137.244 +                                (Encoding) getParameter(Parameter.ENCODING));
 137.245 +                binary = decoder.decode(aValue.getBytes());
 137.246 +            }
 137.247 +            catch (UnsupportedEncodingException uee) {
 137.248 +                Log log = LogFactory.getLog(Attach.class);
 137.249 +                log.error("Error encoding binary data", uee);
 137.250 +            }
 137.251 +            catch (DecoderException de) {
 137.252 +                Log log = LogFactory.getLog(Attach.class);
 137.253 +                log.error("Error decoding binary data", de);
 137.254 +            }
 137.255 +        }
 137.256 +        // assume URI..
 137.257 +        else {
 137.258 +            uri = Uris.create(aValue);
 137.259 +        }
 137.260 +    }
 137.261 +
 137.262 +    /**
 137.263 +     * {@inheritDoc}
 137.264 +     */
 137.265 +    public final String getValue() {
 137.266 +        if (getUri() != null) {
 137.267 +            return Uris.decode(Strings.valueOf(getUri()));
 137.268 +        }
 137.269 +        else if (getBinary() != null) {
 137.270 +            // return Base64.encodeBytes(getBinary(), Base64.DONT_BREAK_LINES);
 137.271 +            try {
 137.272 +                final BinaryEncoder encoder = EncoderFactory.getInstance()
 137.273 +                        .createBinaryEncoder(
 137.274 +                                (Encoding) getParameter(Parameter.ENCODING));
 137.275 +                return new String(encoder.encode(getBinary()));
 137.276 +            }
 137.277 +            catch (UnsupportedEncodingException uee) {
 137.278 +                Log log = LogFactory.getLog(Attach.class);
 137.279 +                log.error("Error encoding binary data", uee);
 137.280 +            }
 137.281 +            catch (EncoderException ee) {
 137.282 +                Log log = LogFactory.getLog(Attach.class);
 137.283 +                log.error("Error encoding binary data", ee);
 137.284 +            }
 137.285 +        }
 137.286 +        return null;
 137.287 +    }
 137.288 +
 137.289 +    /**
 137.290 +     * @param binary The binary to set.
 137.291 +     */
 137.292 +    public final void setBinary(final byte[] binary) {
 137.293 +        this.binary = binary;
 137.294 +        // unset uri..
 137.295 +        this.uri = null;
 137.296 +    }
 137.297 +
 137.298 +    /**
 137.299 +     * @param uri The uri to set.
 137.300 +     */
 137.301 +    public final void setUri(final URI uri) {
 137.302 +        this.uri = uri;
 137.303 +        // unset binary..
 137.304 +        this.binary = null;
 137.305 +    }
 137.306 +}
   138.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   138.2 +++ b/src/net/fortuna/ical4j/model/property/Attendee.java	Tue Feb 10 18:12:00 2015 +0100
   138.3 @@ -0,0 +1,185 @@
   138.4 +/**
   138.5 + * Copyright (c) 2012, Ben Fortuna
   138.6 + * All rights reserved.
   138.7 + *
   138.8 + * Redistribution and use in source and binary forms, with or without
   138.9 + * modification, are permitted provided that the following conditions
  138.10 + * are met:
  138.11 + *
  138.12 + *  o Redistributions of source code must retain the above copyright
  138.13 + * notice, this list of conditions and the following disclaimer.
  138.14 + *
  138.15 + *  o Redistributions in binary form must reproduce the above copyright
  138.16 + * notice, this list of conditions and the following disclaimer in the
  138.17 + * documentation and/or other materials provided with the distribution.
  138.18 + *
  138.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  138.20 + * may be used to endorse or promote products derived from this software
  138.21 + * without specific prior written permission.
  138.22 + *
  138.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  138.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  138.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  138.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  138.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  138.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  138.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  138.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  138.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  138.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  138.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  138.34 + */
  138.35 +package net.fortuna.ical4j.model.property;
  138.36 +
  138.37 +import java.io.IOException;
  138.38 +import java.net.URI;
  138.39 +import java.net.URISyntaxException;
  138.40 +import java.text.ParseException;
  138.41 +
  138.42 +import net.fortuna.ical4j.model.Parameter;
  138.43 +import net.fortuna.ical4j.model.ParameterList;
  138.44 +import net.fortuna.ical4j.model.Property;
  138.45 +import net.fortuna.ical4j.model.PropertyFactoryImpl;
  138.46 +import net.fortuna.ical4j.model.ValidationException;
  138.47 +import net.fortuna.ical4j.util.ParameterValidator;
  138.48 +import net.fortuna.ical4j.util.Strings;
  138.49 +import net.fortuna.ical4j.util.Uris;
  138.50 +
  138.51 +/**
  138.52 + * $Id$
  138.53 + * 
  138.54 + * Created: [Apr 6, 2004]
  138.55 + *
  138.56 + * Defines an ATTENDEE iCalendar component property.
  138.57 + * @author benf
  138.58 + */
  138.59 +public class Attendee extends Property {
  138.60 +
  138.61 +    private static final long serialVersionUID = 8430929418723298803L;
  138.62 +
  138.63 +    private URI calAddress;
  138.64 +
  138.65 +    /**
  138.66 +     * Default constructor.
  138.67 +     */
  138.68 +    public Attendee() {
  138.69 +        super(ATTENDEE, PropertyFactoryImpl.getInstance());
  138.70 +    }
  138.71 +
  138.72 +    /**
  138.73 +     * @param aValue a value string for this component
  138.74 +     * @throws URISyntaxException where the specified value string is not a valid uri
  138.75 +     */
  138.76 +    public Attendee(final String aValue) throws URISyntaxException {
  138.77 +        super(ATTENDEE, PropertyFactoryImpl.getInstance());
  138.78 +        setValue(aValue);
  138.79 +    }
  138.80 +
  138.81 +    /**
  138.82 +     * @param aList a list of parameters for this component
  138.83 +     * @param aValue a value string for this component
  138.84 +     * @throws URISyntaxException where the specified value string is not a valid uri
  138.85 +     */
  138.86 +    public Attendee(final ParameterList aList, final String aValue)
  138.87 +            throws URISyntaxException {
  138.88 +        super(ATTENDEE, aList, PropertyFactoryImpl.getInstance());
  138.89 +        setValue(aValue);
  138.90 +    }
  138.91 +
  138.92 +    /**
  138.93 +     * @param aUri a URI
  138.94 +     */
  138.95 +    public Attendee(final URI aUri) {
  138.96 +        super(ATTENDEE, PropertyFactoryImpl.getInstance());
  138.97 +        calAddress = aUri;
  138.98 +    }
  138.99 +
 138.100 +    /**
 138.101 +     * @param aList a list of parameters for this component
 138.102 +     * @param aUri a URI
 138.103 +     */
 138.104 +    public Attendee(final ParameterList aList, final URI aUri) {
 138.105 +        super(ATTENDEE, aList, PropertyFactoryImpl.getInstance());
 138.106 +        calAddress = aUri;
 138.107 +    }
 138.108 +
 138.109 +    /**
 138.110 +     * {@inheritDoc}
 138.111 +     */
 138.112 +    public final void setValue(final String aValue) throws URISyntaxException {
 138.113 +        calAddress = Uris.create(aValue);
 138.114 +    }
 138.115 +
 138.116 +    /**
 138.117 +     * {@inheritDoc}
 138.118 +     */
 138.119 +    public final void validate() throws ValidationException {
 138.120 +
 138.121 +        /*
 138.122 +         * ; the following are optional, ; but MUST NOT occur more than once (";" cutypeparam) / (";"memberparam) / (";"
 138.123 +         * roleparam) / (";" partstatparam) / (";" rsvpparam) / (";" deltoparam) / (";" delfromparam) / (";"
 138.124 +         * sentbyparam) / (";"cnparam) / (";" dirparam) / (";" languageparam) /
 138.125 +         */
 138.126 +        ParameterValidator.getInstance().assertOneOrLess(Parameter.CUTYPE,
 138.127 +                getParameters());
 138.128 +        ParameterValidator.getInstance().assertOneOrLess(Parameter.MEMBER,
 138.129 +                getParameters());
 138.130 +        ParameterValidator.getInstance().assertOneOrLess(Parameter.ROLE,
 138.131 +                getParameters());
 138.132 +        ParameterValidator.getInstance().assertOneOrLess(Parameter.PARTSTAT,
 138.133 +                getParameters());
 138.134 +        ParameterValidator.getInstance().assertOneOrLess(Parameter.RSVP,
 138.135 +                getParameters());
 138.136 +        ParameterValidator.getInstance().assertOneOrLess(
 138.137 +                Parameter.DELEGATED_TO, getParameters());
 138.138 +        ParameterValidator.getInstance().assertOneOrLess(
 138.139 +                Parameter.DELEGATED_FROM, getParameters());
 138.140 +        ParameterValidator.getInstance().assertOneOrLess(Parameter.SENT_BY,
 138.141 +                getParameters());
 138.142 +        ParameterValidator.getInstance().assertOneOrLess(Parameter.CN,
 138.143 +                getParameters());
 138.144 +        ParameterValidator.getInstance().assertOneOrLess(Parameter.DIR,
 138.145 +                getParameters());
 138.146 +        ParameterValidator.getInstance().assertOneOrLess(Parameter.LANGUAGE,
 138.147 +                getParameters());
 138.148 +
 138.149 +        /* scheduleagent and schedulestatus added for CalDAV scheduling
 138.150 +         */
 138.151 +        ParameterValidator.getInstance().assertOneOrLess(Parameter.SCHEDULE_AGENT,
 138.152 +                                                         getParameters());
 138.153 +        ParameterValidator.getInstance().assertOneOrLess(Parameter.SCHEDULE_STATUS,
 138.154 +                                                         getParameters());
 138.155 +        /*
 138.156 +         * ; the following is optional, ; and MAY occur more than once (";" xparam)
 138.157 +         */
 138.158 +    }
 138.159 +
 138.160 +    /**
 138.161 +     * @return Returns the calAddress.
 138.162 +     */
 138.163 +    public final URI getCalAddress() {
 138.164 +        return calAddress;
 138.165 +    }
 138.166 +
 138.167 +    /**
 138.168 +     * {@inheritDoc}
 138.169 +     */
 138.170 +    public final String getValue() {
 138.171 +        return Uris.decode(Strings.valueOf(getCalAddress()));
 138.172 +    }
 138.173 +
 138.174 +    /**
 138.175 +     * @param calAddress The calAddress to set.
 138.176 +     */
 138.177 +    public final void setCalAddress(final URI calAddress) {
 138.178 +        this.calAddress = calAddress;
 138.179 +    }
 138.180 +    
 138.181 +    /**
 138.182 +     * {@inheritDoc}
 138.183 +     */
 138.184 +    public final Property copy() throws IOException, URISyntaxException, ParseException {
 138.185 +        // URI are immutable
 138.186 +        return new Attendee(new ParameterList(getParameters(), false), calAddress);  
 138.187 +    }
 138.188 +}
   139.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   139.2 +++ b/src/net/fortuna/ical4j/model/property/BusyType.java	Tue Feb 10 18:12:00 2015 +0100
   139.3 @@ -0,0 +1,150 @@
   139.4 +/**
   139.5 + * Copyright (c) 2012, Ben Fortuna
   139.6 + * All rights reserved.
   139.7 + *
   139.8 + * Redistribution and use in source and binary forms, with or without
   139.9 + * modification, are permitted provided that the following conditions
  139.10 + * are met:
  139.11 + *
  139.12 + *  o Redistributions of source code must retain the above copyright
  139.13 + * notice, this list of conditions and the following disclaimer.
  139.14 + *
  139.15 + *  o Redistributions in binary form must reproduce the above copyright
  139.16 + * notice, this list of conditions and the following disclaimer in the
  139.17 + * documentation and/or other materials provided with the distribution.
  139.18 + *
  139.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  139.20 + * may be used to endorse or promote products derived from this software
  139.21 + * without specific prior written permission.
  139.22 + *
  139.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  139.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  139.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  139.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  139.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  139.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  139.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  139.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  139.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  139.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  139.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  139.34 + */
  139.35 +package net.fortuna.ical4j.model.property;
  139.36 +
  139.37 +import net.fortuna.ical4j.model.ParameterList;
  139.38 +import net.fortuna.ical4j.model.Property;
  139.39 +import net.fortuna.ical4j.model.PropertyFactoryImpl;
  139.40 +import net.fortuna.ical4j.model.ValidationException;
  139.41 +
  139.42 +/**
  139.43 + * $Id$
  139.44 + *
  139.45 + * Created: [Apr 6, 2004]
  139.46 + *
  139.47 + * Defines a BUSYTYPE iCalendar component property.
  139.48 + *
  139.49 + *    Format Definition:  This property is defined by the following
  139.50 + *    notation:
  139.51 + *
  139.52 + *      busytype      = "BUSYTYPE" busytypeparam ":" busytypevalue CRLF
  139.53 + *
  139.54 + *      busytypeparam = *(";" xparam)
  139.55 + *
  139.56 + *      busytypevalue = "BUSY" / "BUSY-UNAVAILABLE" /
  139.57 + *                      "BUSY-TENTATIVE" / iana-token / x-name
  139.58 + *                      ; Default is "BUSY-UNAVAILABLE"
  139.59 + *
  139.60 + * @author Ben Fortuna
  139.61 + * @author Mike Douglass
  139.62 + */
  139.63 +public class BusyType extends Property {
  139.64 +
  139.65 +	private static final long serialVersionUID = -5140360270562621159L;
  139.66 +
  139.67 +	/**
  139.68 +	 * Constant for busy time.
  139.69 +	 */
  139.70 +	public static final BusyType BUSY = new ImmutableBusyType("BUSY");
  139.71 +
  139.72 +    /**
  139.73 +     * Constant for busy unavailable time.
  139.74 +     */
  139.75 +    public static final BusyType BUSY_UNAVAILABLE = new ImmutableBusyType("BUSY-UNAVAILABLE");
  139.76 +
  139.77 +    /**
  139.78 +     * Constant for tentatively busy time.
  139.79 +     */
  139.80 +    public static final BusyType BUSY_TENTATIVE = new ImmutableBusyType("BUSY-TENTATIVE");
  139.81 +
  139.82 +    /** An immutable instance of BusyType.
  139.83 +     *
  139.84 +     * @author Ben Fortuna
  139.85 +     * @author Mike Douglass
  139.86 +     */
  139.87 +    private static final class ImmutableBusyType extends BusyType {
  139.88 +
  139.89 +		private static final long serialVersionUID = -2454749569982470433L;
  139.90 +
  139.91 +		/**
  139.92 +         * @param value
  139.93 +         */
  139.94 +        private ImmutableBusyType(final String value) {
  139.95 +            super(new ParameterList(true), value);
  139.96 +        }
  139.97 +
  139.98 +        /**
  139.99 +         * {@inheritDoc}
 139.100 +         */
 139.101 +        public void setValue(final String aValue) {
 139.102 +            throw new UnsupportedOperationException(
 139.103 +                    "Cannot modify constant instances");
 139.104 +        }
 139.105 +    }
 139.106 +
 139.107 +    private String value;
 139.108 +
 139.109 +    /**
 139.110 +     * Default constructor.
 139.111 +     */
 139.112 +    public BusyType() {
 139.113 +        super(BUSYTYPE, PropertyFactoryImpl.getInstance());
 139.114 +    }
 139.115 +
 139.116 +    /**
 139.117 +     * @param aValue a value string for this component
 139.118 +     */
 139.119 +    public BusyType(final String aValue) {
 139.120 +        super(BUSYTYPE, PropertyFactoryImpl.getInstance());
 139.121 +        this.value = aValue;
 139.122 +    }
 139.123 +
 139.124 +    /**
 139.125 +     * @param aList a list of parameters for this component
 139.126 +     * @param aValue a value string for this component
 139.127 +     */
 139.128 +    public BusyType(final ParameterList aList, final String aValue) {
 139.129 +        super(BUSYTYPE, aList, PropertyFactoryImpl.getInstance());
 139.130 +        this.value = aValue;
 139.131 +    }
 139.132 +
 139.133 +    /**
 139.134 +     * {@inheritDoc}
 139.135 +     */
 139.136 +    public void setValue(final String aValue) {
 139.137 +        this.value = aValue;
 139.138 +    }
 139.139 +
 139.140 +    /**
 139.141 +     * {@inheritDoc}
 139.142 +     */
 139.143 +    public final String getValue() {
 139.144 +        return value;
 139.145 +    }
 139.146 +
 139.147 +    /**
 139.148 +     * {@inheritDoc}
 139.149 +     */
 139.150 +    public final void validate() throws ValidationException {
 139.151 +        // TODO: Auto-generated method stub
 139.152 +    }
 139.153 +}
   140.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   140.2 +++ b/src/net/fortuna/ical4j/model/property/CalScale.java	Tue Feb 10 18:12:00 2015 +0100
   140.3 @@ -0,0 +1,135 @@
   140.4 +/**
   140.5 + * Copyright (c) 2012, Ben Fortuna
   140.6 + * All rights reserved.
   140.7 + *
   140.8 + * Redistribution and use in source and binary forms, with or without
   140.9 + * modification, are permitted provided that the following conditions
  140.10 + * are met:
  140.11 + *
  140.12 + *  o Redistributions of source code must retain the above copyright
  140.13 + * notice, this list of conditions and the following disclaimer.
  140.14 + *
  140.15 + *  o Redistributions in binary form must reproduce the above copyright
  140.16 + * notice, this list of conditions and the following disclaimer in the
  140.17 + * documentation and/or other materials provided with the distribution.
  140.18 + *
  140.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  140.20 + * may be used to endorse or promote products derived from this software
  140.21 + * without specific prior written permission.
  140.22 + *
  140.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  140.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  140.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  140.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  140.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  140.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  140.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  140.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  140.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  140.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  140.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  140.34 + */
  140.35 +package net.fortuna.ical4j.model.property;
  140.36 +
  140.37 +import net.fortuna.ical4j.model.ParameterList;
  140.38 +import net.fortuna.ical4j.model.Property;
  140.39 +import net.fortuna.ical4j.model.PropertyFactoryImpl;
  140.40 +import net.fortuna.ical4j.model.ValidationException;
  140.41 +import net.fortuna.ical4j.util.CompatibilityHints;
  140.42 +
  140.43 +/**
  140.44 + * $Id$
  140.45 + * 
  140.46 + * Created: [Apr 6, 2004]
  140.47 + *
  140.48 + * Defines a CALSCALE iCalendar property.
  140.49 + * @author benf
  140.50 + */
  140.51 +public class CalScale extends Property {
  140.52 +
  140.53 +    private static final long serialVersionUID = 7446184786984981423L;
  140.54 +
  140.55 +    /**
  140.56 +     * Constant for Gregorian calendar representation.
  140.57 +     */
  140.58 +    public static final CalScale GREGORIAN = new ImmutableCalScale("GREGORIAN");
  140.59 +
  140.60 +    /**
  140.61 +     * @author Ben Fortuna An immutable instance of CalScale.
  140.62 +     */
  140.63 +    private static final class ImmutableCalScale extends CalScale {
  140.64 +
  140.65 +        private static final long serialVersionUID = 1750949550694413878L;
  140.66 +
  140.67 +        /**
  140.68 +         * @param value
  140.69 +         */
  140.70 +        private ImmutableCalScale(final String value) {
  140.71 +            super(new ParameterList(true), value);
  140.72 +        }
  140.73 +
  140.74 +        /**
  140.75 +         * {@inheritDoc}
  140.76 +         */
  140.77 +        public void setValue(final String aValue) {
  140.78 +            throw new UnsupportedOperationException(
  140.79 +                    "Cannot modify constant instances");
  140.80 +        }
  140.81 +    }
  140.82 +
  140.83 +    private String value;
  140.84 +
  140.85 +    /**
  140.86 +     * Default constructor.
  140.87 +     */
  140.88 +    public CalScale() {
  140.89 +        super(CALSCALE, PropertyFactoryImpl.getInstance());
  140.90 +    }
  140.91 +
  140.92 +    /**
  140.93 +     * @param aValue a value string for this component
  140.94 +     */
  140.95 +    public CalScale(final String aValue) {
  140.96 +        super(CALSCALE, PropertyFactoryImpl.getInstance());
  140.97 +        this.value = aValue;
  140.98 +    }
  140.99 +
 140.100 +    /**
 140.101 +     * @param aList a list of parameters for this component
 140.102 +     * @param aValue a value string for this component
 140.103 +     */
 140.104 +    public CalScale(final ParameterList aList, final String aValue) {
 140.105 +        super(CALSCALE, aList, PropertyFactoryImpl.getInstance());
 140.106 +        this.value = aValue;
 140.107 +    }
 140.108 +
 140.109 +    /**
 140.110 +     * {@inheritDoc}
 140.111 +     */
 140.112 +    public void setValue(final String aValue) {
 140.113 +        this.value = aValue;
 140.114 +    }
 140.115 +
 140.116 +    /**
 140.117 +     * {@inheritDoc}
 140.118 +     */
 140.119 +    public final String getValue() {
 140.120 +        return value;
 140.121 +    }
 140.122 +
 140.123 +    /**
 140.124 +     * {@inheritDoc}
 140.125 +     */
 140.126 +    public final void validate() throws ValidationException {
 140.127 +    	if (CompatibilityHints.isHintEnabled(CompatibilityHints.KEY_RELAXED_VALIDATION)) {
 140.128 +            if (!GREGORIAN.getValue().equalsIgnoreCase(value)) {
 140.129 +                throw new ValidationException("Invalid value [" + value + "]");
 140.130 +            }
 140.131 +    	}
 140.132 +    	else {
 140.133 +            if (!GREGORIAN.getValue().equals(value)) {
 140.134 +                throw new ValidationException("Invalid value [" + value + "]");
 140.135 +            }
 140.136 +    	}
 140.137 +    }
 140.138 +}
   141.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   141.2 +++ b/src/net/fortuna/ical4j/model/property/Categories.java	Tue Feb 10 18:12:00 2015 +0100
   141.3 @@ -0,0 +1,176 @@
   141.4 +/**
   141.5 + * Copyright (c) 2012, Ben Fortuna
   141.6 + * All rights reserved.
   141.7 + *
   141.8 + * Redistribution and use in source and binary forms, with or without
   141.9 + * modification, are permitted provided that the following conditions
  141.10 + * are met:
  141.11 + *
  141.12 + *  o Redistributions of source code must retain the above copyright
  141.13 + * notice, this list of conditions and the following disclaimer.
  141.14 + *
  141.15 + *  o Redistributions in binary form must reproduce the above copyright
  141.16 + * notice, this list of conditions and the following disclaimer in the
  141.17 + * documentation and/or other materials provided with the distribution.
  141.18 + *
  141.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  141.20 + * may be used to endorse or promote products derived from this software
  141.21 + * without specific prior written permission.
  141.22 + *
  141.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  141.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  141.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  141.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  141.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  141.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  141.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  141.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  141.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  141.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  141.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  141.34 + */
  141.35 +package net.fortuna.ical4j.model.property;
  141.36 +
  141.37 +import net.fortuna.ical4j.model.TextList;
  141.38 +import net.fortuna.ical4j.model.Parameter;
  141.39 +import net.fortuna.ical4j.model.ParameterList;
  141.40 +import net.fortuna.ical4j.model.Property;
  141.41 +import net.fortuna.ical4j.model.PropertyFactoryImpl;
  141.42 +import net.fortuna.ical4j.model.ValidationException;
  141.43 +import net.fortuna.ical4j.util.ParameterValidator;
  141.44 +
  141.45 +/**
  141.46 + * $Id$
  141.47 + * 
  141.48 + * Created: [Apr 6, 2004]
  141.49 + *
  141.50 + * Defines a CATEGORIES iCalendar component property.
  141.51 + * <pre>
  141.52 + *     4.8.1.2 Categories
  141.53 + *     
  141.54 + *        Property Name: CATEGORIES
  141.55 + *     
  141.56 + *        Purpose: This property defines the categories for a calendar
  141.57 + *        component.
  141.58 + *     
  141.59 + *        Value Type: TEXT
  141.60 + *     
  141.61 + *        Property Parameters: Non-standard and language property parameters
  141.62 + *        can be specified on this property.
  141.63 + *     
  141.64 + *        Conformance: The property can be specified within "VEVENT", "VTODO"
  141.65 + *        or "VJOURNAL" calendar components.
  141.66 + *     
  141.67 + *        Description: This property is used to specify categories or subtypes
  141.68 + *        of the calendar component. The categories are useful in searching for
  141.69 + *        a calendar component of a particular type and category. Within the
  141.70 + *        "VEVENT", "VTODO" or "VJOURNAL" calendar components, more than one
  141.71 + *        category can be specified as a list of categories separated by the
  141.72 + *        COMMA character (US-ASCII decimal 44).
  141.73 + *     
  141.74 + *        Format Definition: The property is defined by the following notation:
  141.75 + *     
  141.76 + *          categories = "CATEGORIES" catparam ":" text *("," text)
  141.77 + *                       CRLF
  141.78 + *     
  141.79 + *          catparam   = *(
  141.80 + *     
  141.81 + *                     ; the following is optional,
  141.82 + *                     ; but MUST NOT occur more than once
  141.83 + *     
  141.84 + *                     (";" languageparam ) /
  141.85 + *     
  141.86 + *                     ; the following is optional,
  141.87 + *                     ; and MAY occur more than once
  141.88 + *     
  141.89 + *                     (";" xparam)
  141.90 + *     
  141.91 + *                     )
  141.92 + * </pre>
  141.93 + * @author benf
  141.94 + */
  141.95 +public class Categories extends Property {
  141.96 +
  141.97 +    private static final long serialVersionUID = -7769987073466681634L;
  141.98 +
  141.99 +    private TextList categories;
 141.100 +
 141.101 +    /**
 141.102 +     * Default constructor.
 141.103 +     */
 141.104 +    public Categories() {
 141.105 +        super(CATEGORIES, PropertyFactoryImpl.getInstance());
 141.106 +        categories = new TextList();
 141.107 +    }
 141.108 +
 141.109 +    /**
 141.110 +     * @param aValue a value string for this component
 141.111 +     */
 141.112 +    public Categories(final String aValue) {
 141.113 +        super(CATEGORIES, PropertyFactoryImpl.getInstance());
 141.114 +        setValue(aValue);
 141.115 +    }
 141.116 +
 141.117 +    /**
 141.118 +     * @param aList a list of parameters for this component
 141.119 +     * @param aValue a value string for this component
 141.120 +     */
 141.121 +    public Categories(final ParameterList aList, final String aValue) {
 141.122 +        super(CATEGORIES, aList, PropertyFactoryImpl.getInstance());
 141.123 +        setValue(aValue);
 141.124 +    }
 141.125 +
 141.126 +    /**
 141.127 +     * @param cList a list of categories
 141.128 +     */
 141.129 +    public Categories(final TextList cList) {
 141.130 +        super(CATEGORIES, PropertyFactoryImpl.getInstance());
 141.131 +        categories = cList;
 141.132 +    }
 141.133 +
 141.134 +    /**
 141.135 +     * @param aList a list of parameters for this component
 141.136 +     * @param cList a list of categories
 141.137 +     */
 141.138 +    public Categories(final ParameterList aList, final TextList cList) {
 141.139 +        super(CATEGORIES, aList, PropertyFactoryImpl.getInstance());
 141.140 +        categories = cList;
 141.141 +    }
 141.142 +
 141.143 +    /**
 141.144 +     * {@inheritDoc}
 141.145 +     */
 141.146 +    public final void setValue(final String aValue) {
 141.147 +        categories = new TextList(aValue);
 141.148 +    }
 141.149 +
 141.150 +    /**
 141.151 +     * {@inheritDoc}
 141.152 +     */
 141.153 +    public final void validate() throws ValidationException {
 141.154 +
 141.155 +        /*
 141.156 +         * ; the following is optional, ; but MUST NOT occur more than once (";" languageparam ) /
 141.157 +         */
 141.158 +        ParameterValidator.getInstance().assertOneOrLess(Parameter.LANGUAGE,
 141.159 +                getParameters());
 141.160 +
 141.161 +        /*
 141.162 +         * ; the following is optional, ; and MAY occur more than once (";" xparam)
 141.163 +         */
 141.164 +    }
 141.165 +
 141.166 +    /**
 141.167 +     * @return Returns the categories.
 141.168 +     */
 141.169 +    public final TextList getCategories() {
 141.170 +        return categories;
 141.171 +    }
 141.172 +
 141.173 +    /**
 141.174 +     * {@inheritDoc}
 141.175 +     */
 141.176 +    public final String getValue() {
 141.177 +        return getCategories().toString();
 141.178 +    }
 141.179 +}
   142.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   142.2 +++ b/src/net/fortuna/ical4j/model/property/Clazz.java	Tue Feb 10 18:12:00 2015 +0100
   142.3 @@ -0,0 +1,182 @@
   142.4 +/**
   142.5 + * Copyright (c) 2012, Ben Fortuna
   142.6 + * All rights reserved.
   142.7 + *
   142.8 + * Redistribution and use in source and binary forms, with or without
   142.9 + * modification, are permitted provided that the following conditions
  142.10 + * are met:
  142.11 + *
  142.12 + *  o Redistributions of source code must retain the above copyright
  142.13 + * notice, this list of conditions and the following disclaimer.
  142.14 + *
  142.15 + *  o Redistributions in binary form must reproduce the above copyright
  142.16 + * notice, this list of conditions and the following disclaimer in the
  142.17 + * documentation and/or other materials provided with the distribution.
  142.18 + *
  142.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  142.20 + * may be used to endorse or promote products derived from this software
  142.21 + * without specific prior written permission.
  142.22 + *
  142.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  142.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  142.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  142.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  142.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  142.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  142.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  142.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  142.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  142.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  142.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  142.34 + */
  142.35 +package net.fortuna.ical4j.model.property;
  142.36 +
  142.37 +import net.fortuna.ical4j.model.ParameterList;
  142.38 +import net.fortuna.ical4j.model.Property;
  142.39 +import net.fortuna.ical4j.model.PropertyFactoryImpl;
  142.40 +import net.fortuna.ical4j.model.ValidationException;
  142.41 +
  142.42 +/**
  142.43 + * $Id$
  142.44 + * 
  142.45 + * Created: [Apr 6, 2004]
  142.46 + *
  142.47 + * Defines a CLASS iCalendar property.
  142.48 + * 
  142.49 + * <pre>
  142.50 + *     4.8.1.3 Classification
  142.51 + *     
  142.52 + *        Property Name: CLASS
  142.53 + *     
  142.54 + *        Purpose: This property defines the access classification for a
  142.55 + *        calendar component.
  142.56 + *     
  142.57 + *        Value Type: TEXT
  142.58 + *     
  142.59 + *        Property Parameters: Non-standard property parameters can be
  142.60 + *        specified on this property.
  142.61 + *     
  142.62 + *        Conformance: The property can be specified once in a &quot;VEVENT&quot;,
  142.63 + *        &quot;VTODO&quot; or &quot;VJOURNAL&quot; calendar components.
  142.64 + *     
  142.65 + *        Description: An access classification is only one component of the
  142.66 + *        general security system within a calendar application. It provides a
  142.67 + *        method of capturing the scope of the access the calendar owner
  142.68 + *        intends for information within an individual calendar entry. The
  142.69 + *        access classification of an individual iCalendar component is useful
  142.70 + *        when measured along with the other security components of a calendar
  142.71 + *        system (e.g., calendar user authentication, authorization, access
  142.72 + *        rights, access role, etc.). Hence, the semantics of the individual
  142.73 + *        access classifications cannot be completely defined by this memo
  142.74 + *        alone. Additionally, due to the &quot;blind&quot; nature of most exchange
  142.75 + *        processes using this memo, these access classifications cannot serve
  142.76 + *        as an enforcement statement for a system receiving an iCalendar
  142.77 + *        object. Rather, they provide a method for capturing the intention of
  142.78 + *        the calendar owner for the access to the calendar component.
  142.79 + *     
  142.80 + *        Format Definition: The property is defined by the following notation:
  142.81 + *     
  142.82 + *          class      = &quot;CLASS&quot; classparam &quot;:&quot; classvalue CRLF
  142.83 + *     
  142.84 + *          classparam = *(&quot;;&quot; xparam)
  142.85 + *     
  142.86 + *          classvalue = &quot;PUBLIC&quot; / &quot;PRIVATE&quot; / &quot;CONFIDENTIAL&quot; / iana-token
  142.87 + *                     / x-name
  142.88 + *          ;Default is PUBLIC
  142.89 + *     
  142.90 + *        Example: The following is an example of this property:
  142.91 + *     
  142.92 + *          CLASS:PUBLIC
  142.93 + * </pre>
  142.94 + * 
  142.95 + * @author Ben Fortuna
  142.96 + */
  142.97 +public class Clazz extends Property {
  142.98 +
  142.99 +    private static final long serialVersionUID = 4939943639175551481L;
 142.100 +
 142.101 +    /**
 142.102 +     * Constant for public classification.
 142.103 +     */
 142.104 +    public static final Clazz PUBLIC = new ImmutableClazz("PUBLIC");
 142.105 +
 142.106 +    /**
 142.107 +     * Constant for private classification.
 142.108 +     */
 142.109 +    public static final Clazz PRIVATE = new ImmutableClazz("PRIVATE");
 142.110 +
 142.111 +    /**
 142.112 +     * Constant for confidential classification.
 142.113 +     */
 142.114 +    public static final Clazz CONFIDENTIAL = new ImmutableClazz("CONFIDENTIAL");
 142.115 +
 142.116 +    /**
 142.117 +     * @author Ben Fortuna An immutable instance of Clazz.
 142.118 +     */
 142.119 +    private static final class ImmutableClazz extends Clazz {
 142.120 +
 142.121 +        private static final long serialVersionUID = 5978394762293365042L;
 142.122 +
 142.123 +        /**
 142.124 +         * @param value
 142.125 +         */
 142.126 +        private ImmutableClazz(final String value) {
 142.127 +            super(new ParameterList(true), value);
 142.128 +        }
 142.129 +
 142.130 +        /**
 142.131 +         * {@inheritDoc}
 142.132 +         */
 142.133 +        public void setValue(final String aValue) {
 142.134 +            throw new UnsupportedOperationException(
 142.135 +                    "Cannot modify constant instances");
 142.136 +        }
 142.137 +    }
 142.138 +
 142.139 +    private String value;
 142.140 +
 142.141 +    /**
 142.142 +     * Default constructor.
 142.143 +     */
 142.144 +    public Clazz() {
 142.145 +        super(CLASS, PropertyFactoryImpl.getInstance());
 142.146 +    }
 142.147 +
 142.148 +    /**
 142.149 +     * @param aValue a value string for this component
 142.150 +     */
 142.151 +    public Clazz(final String aValue) {
 142.152 +        super(CLASS, PropertyFactoryImpl.getInstance());
 142.153 +        this.value = aValue;
 142.154 +    }
 142.155 +
 142.156 +    /**
 142.157 +     * @param aList a list of parameters for this component
 142.158 +     * @param aValue a value string for this component
 142.159 +     */
 142.160 +    public Clazz(final ParameterList aList, final String aValue) {
 142.161 +        super(CLASS, aList, PropertyFactoryImpl.getInstance());
 142.162 +        this.value = aValue;
 142.163 +    }
 142.164 +
 142.165 +    /**
 142.166 +     * {@inheritDoc}
 142.167 +     */
 142.168 +    public void setValue(final String aValue) {
 142.169 +        this.value = aValue;
 142.170 +    }
 142.171 +
 142.172 +    /**
 142.173 +     * {@inheritDoc}
 142.174 +     */
 142.175 +    public final String getValue() {
 142.176 +        return value;
 142.177 +    }
 142.178 +
 142.179 +    /**
 142.180 +     * {@inheritDoc}
 142.181 +     */
 142.182 +    public final void validate() throws ValidationException {
 142.183 +        // TODO: Auto-generated method stub
 142.184 +    }
 142.185 +}
   143.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   143.2 +++ b/src/net/fortuna/ical4j/model/property/Comment.java	Tue Feb 10 18:12:00 2015 +0100
   143.3 @@ -0,0 +1,111 @@
   143.4 +/**
   143.5 + * Copyright (c) 2012, Ben Fortuna
   143.6 + * All rights reserved.
   143.7 + *
   143.8 + * Redistribution and use in source and binary forms, with or without
   143.9 + * modification, are permitted provided that the following conditions
  143.10 + * are met:
  143.11 + *
  143.12 + *  o Redistributions of source code must retain the above copyright
  143.13 + * notice, this list of conditions and the following disclaimer.
  143.14 + *
  143.15 + *  o Redistributions in binary form must reproduce the above copyright
  143.16 + * notice, this list of conditions and the following disclaimer in the
  143.17 + * documentation and/or other materials provided with the distribution.
  143.18 + *
  143.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  143.20 + * may be used to endorse or promote products derived from this software
  143.21 + * without specific prior written permission.
  143.22 + *
  143.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  143.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  143.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  143.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  143.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  143.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  143.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  143.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  143.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  143.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  143.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  143.34 + */
  143.35 +package net.fortuna.ical4j.model.property;
  143.36 +
  143.37 +import net.fortuna.ical4j.model.Escapable;
  143.38 +import net.fortuna.ical4j.model.Parameter;
  143.39 +import net.fortuna.ical4j.model.ParameterList;
  143.40 +import net.fortuna.ical4j.model.Property;
  143.41 +import net.fortuna.ical4j.model.PropertyFactoryImpl;
  143.42 +import net.fortuna.ical4j.model.ValidationException;
  143.43 +import net.fortuna.ical4j.util.ParameterValidator;
  143.44 +
  143.45 +/**
  143.46 + * $Id$
  143.47 + * 
  143.48 + * Created: [Apr 6, 2004]
  143.49 + *
  143.50 + * Defines a COMMENT iCalendar component property.
  143.51 + * @author benf
  143.52 + */
  143.53 +public class Comment extends Property implements Escapable {
  143.54 +
  143.55 +    private static final long serialVersionUID = 7519125697719626308L;
  143.56 +
  143.57 +    private String value;
  143.58 +
  143.59 +    /**
  143.60 +     * Default constructor.
  143.61 +     */
  143.62 +    public Comment() {
  143.63 +        super(COMMENT, PropertyFactoryImpl.getInstance());
  143.64 +    }
  143.65 +
  143.66 +    /**
  143.67 +     * @param aValue a value string for this component
  143.68 +     */
  143.69 +    public Comment(final String aValue) {
  143.70 +        super(COMMENT, PropertyFactoryImpl.getInstance());
  143.71 +        setValue(aValue);
  143.72 +    }
  143.73 +
  143.74 +    /**
  143.75 +     * @param aList a list of parameters for this component
  143.76 +     * @param aValue a value string for this component
  143.77 +     */
  143.78 +    public Comment(final ParameterList aList, final String aValue) {
  143.79 +        super(COMMENT, aList, PropertyFactoryImpl.getInstance());
  143.80 +        setValue(aValue);
  143.81 +    }
  143.82 +
  143.83 +    /**
  143.84 +     * {@inheritDoc}
  143.85 +     */
  143.86 +    public final void validate() throws ValidationException {
  143.87 +
  143.88 +        /*
  143.89 +         * ; the following are optional, ; but MUST NOT occur more than once (";" altrepparam) / (";" languageparam) /
  143.90 +         */
  143.91 +        ParameterValidator.getInstance().assertOneOrLess(Parameter.ALTREP,
  143.92 +                getParameters());
  143.93 +        ParameterValidator.getInstance().assertOneOrLess(Parameter.LANGUAGE,
  143.94 +                getParameters());
  143.95 +
  143.96 +        /*
  143.97 +         * ; the following is optional, ; and MAY occur more than once (";" xparam)
  143.98 +         */
  143.99 +    }
 143.100 +
 143.101 +    /**
 143.102 +     * {@inheritDoc}
 143.103 +     */
 143.104 +    public final void setValue(final String aValue) {
 143.105 +        this.value = aValue;
 143.106 +    }
 143.107 +
 143.108 +    /**
 143.109 +     * {@inheritDoc}
 143.110 +     */
 143.111 +    public final String getValue() {
 143.112 +        return value;
 143.113 +    }
 143.114 +}
   144.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   144.2 +++ b/src/net/fortuna/ical4j/model/property/Completed.java	Tue Feb 10 18:12:00 2015 +0100
   144.3 @@ -0,0 +1,125 @@
   144.4 +/**
   144.5 + * Copyright (c) 2012, Ben Fortuna
   144.6 + * All rights reserved.
   144.7 + *
   144.8 + * Redistribution and use in source and binary forms, with or without
   144.9 + * modification, are permitted provided that the following conditions
  144.10 + * are met:
  144.11 + *
  144.12 + *  o Redistributions of source code must retain the above copyright
  144.13 + * notice, this list of conditions and the following disclaimer.
  144.14 + *
  144.15 + *  o Redistributions in binary form must reproduce the above copyright
  144.16 + * notice, this list of conditions and the following disclaimer in the
  144.17 + * documentation and/or other materials provided with the distribution.
  144.18 + *
  144.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  144.20 + * may be used to endorse or promote products derived from this software
  144.21 + * without specific prior written permission.
  144.22 + *
  144.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  144.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  144.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  144.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  144.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  144.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  144.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  144.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  144.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  144.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  144.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  144.34 + */
  144.35 +package net.fortuna.ical4j.model.property;
  144.36 +
  144.37 +import java.text.ParseException;
  144.38 +
  144.39 +import net.fortuna.ical4j.model.DateTime;
  144.40 +import net.fortuna.ical4j.model.ParameterList;
  144.41 +import net.fortuna.ical4j.model.PropertyFactoryImpl;
  144.42 +
  144.43 +/**
  144.44 + * $Id$
  144.45 + * 
  144.46 + * Created: [Apr 6, 2004]
  144.47 + *
  144.48 + * Defines a COMPLETED iCalendar component property.
  144.49 + * 
  144.50 + * <pre>
  144.51 + *     4.8.2.1 Date/Time Completed
  144.52 + *     
  144.53 + *        Property Name: COMPLETED
  144.54 + *     
  144.55 + *        Purpose: This property defines the date and time that a to-do was
  144.56 + *        actually completed.
  144.57 + *     
  144.58 + *        Value Type: DATE-TIME
  144.59 + *     
  144.60 + *        Property Parameters: Non-standard property parameters can be
  144.61 + *        specified on this property.
  144.62 + *     
  144.63 + *        Conformance: The property can be specified in a &quot;VTODO&quot; calendar
  144.64 + *        component.
  144.65 + *     
  144.66 + *        Description: The date and time MUST be in a UTC format.
  144.67 + *     
  144.68 + *        Format Definition: The property is defined by the following notation:
  144.69 + *     
  144.70 + *          completed  = &quot;COMPLETED&quot; compparam &quot;:&quot; date-time CRLF
  144.71 + *     
  144.72 + *          compparam  = *(&quot;;&quot; xparam)
  144.73 + * </pre>
  144.74 + * 
  144.75 + * @author Ben Fortuna
  144.76 + */
  144.77 +public class Completed extends UtcProperty {
  144.78 +
  144.79 +    private static final long serialVersionUID = 6824213281785639181L;
  144.80 +
  144.81 +    /**
  144.82 +     * Default constructor.
  144.83 +     */
  144.84 +    public Completed() {
  144.85 +        super(COMPLETED, PropertyFactoryImpl.getInstance());
  144.86 +    }
  144.87 +
  144.88 +    /**
  144.89 +     * @param aValue a value string for this component
  144.90 +     * @throws ParseException when the specified string is not a valid date-time represenation
  144.91 +     */
  144.92 +    public Completed(final String aValue) throws ParseException {
  144.93 +        super(COMPLETED, PropertyFactoryImpl.getInstance());
  144.94 +        setValue(aValue);
  144.95 +    }
  144.96 +
  144.97 +    /**
  144.98 +     * @param aList a list of parameters for this component
  144.99 +     * @param aValue a value string for this component
 144.100 +     * @throws ParseException when the specified string is not a valid date-time represenation
 144.101 +     */
 144.102 +    public Completed(final ParameterList aList, final String aValue)
 144.103 +            throws ParseException {
 144.104 +        super(COMPLETED, aList, PropertyFactoryImpl.getInstance());
 144.105 +        setValue(aValue);
 144.106 +    }
 144.107 +
 144.108 +    /**
 144.109 +     * @param aDate a date
 144.110 +     */
 144.111 +    public Completed(final DateTime aDate) {
 144.112 +        super(COMPLETED, PropertyFactoryImpl.getInstance());
 144.113 +        // time must be in UTC..
 144.114 +        aDate.setUtc(true);
 144.115 +        setDate(aDate);
 144.116 +    }
 144.117 +
 144.118 +    /**
 144.119 +     * @param aList a list of parameters for this component
 144.120 +     * @param aDate a date
 144.121 +     */
 144.122 +    public Completed(final ParameterList aList, final DateTime aDate) {
 144.123 +        super(COMPLETED, aList, PropertyFactoryImpl.getInstance());
 144.124 +        // time must be in UTC..
 144.125 +        aDate.setUtc(true);
 144.126 +        setDate(aDate);
 144.127 +    }
 144.128 +}
   145.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   145.2 +++ b/src/net/fortuna/ical4j/model/property/Contact.java	Tue Feb 10 18:12:00 2015 +0100
   145.3 @@ -0,0 +1,111 @@
   145.4 +/**
   145.5 + * Copyright (c) 2012, Ben Fortuna
   145.6 + * All rights reserved.
   145.7 + *
   145.8 + * Redistribution and use in source and binary forms, with or without
   145.9 + * modification, are permitted provided that the following conditions
  145.10 + * are met:
  145.11 + *
  145.12 + *  o Redistributions of source code must retain the above copyright
  145.13 + * notice, this list of conditions and the following disclaimer.
  145.14 + *
  145.15 + *  o Redistributions in binary form must reproduce the above copyright
  145.16 + * notice, this list of conditions and the following disclaimer in the
  145.17 + * documentation and/or other materials provided with the distribution.
  145.18 + *
  145.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  145.20 + * may be used to endorse or promote products derived from this software
  145.21 + * without specific prior written permission.
  145.22 + *
  145.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  145.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  145.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  145.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  145.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  145.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  145.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  145.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  145.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  145.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  145.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  145.34 + */
  145.35 +package net.fortuna.ical4j.model.property;
  145.36 +
  145.37 +import net.fortuna.ical4j.model.Escapable;
  145.38 +import net.fortuna.ical4j.model.Parameter;
  145.39 +import net.fortuna.ical4j.model.ParameterList;
  145.40 +import net.fortuna.ical4j.model.Property;
  145.41 +import net.fortuna.ical4j.model.PropertyFactoryImpl;
  145.42 +import net.fortuna.ical4j.model.ValidationException;
  145.43 +import net.fortuna.ical4j.util.ParameterValidator;
  145.44 +
  145.45 +/**
  145.46 + * $Id$
  145.47 + * 
  145.48 + * Created: [Apr 6, 2004]
  145.49 + *
  145.50 + * Defines a CONTACT iCalendar component property.
  145.51 + * @author benf
  145.52 + */
  145.53 +public class Contact extends Property implements Escapable {
  145.54 +
  145.55 +    private static final long serialVersionUID = -4776654229643771385L;
  145.56 +
  145.57 +    private String value;
  145.58 +
  145.59 +    /**
  145.60 +     * Default constructor.
  145.61 +     */
  145.62 +    public Contact() {
  145.63 +        super(CONTACT, PropertyFactoryImpl.getInstance());
  145.64 +    }
  145.65 +
  145.66 +    /**
  145.67 +     * @param aValue a value string for this component
  145.68 +     */
  145.69 +    public Contact(final String aValue) {
  145.70 +        super(CONTACT, PropertyFactoryImpl.getInstance());
  145.71 +        setValue(aValue);
  145.72 +    }
  145.73 +
  145.74 +    /**
  145.75 +     * @param aList a list of parameters for this component
  145.76 +     * @param aValue a value string for this component
  145.77 +     */
  145.78 +    public Contact(final ParameterList aList, final String aValue) {
  145.79 +        super(CONTACT, aList, PropertyFactoryImpl.getInstance());
  145.80 +        setValue(aValue);
  145.81 +    }
  145.82 +
  145.83 +    /**
  145.84 +     * {@inheritDoc}
  145.85 +     */
  145.86 +    public final void validate() throws ValidationException {
  145.87 +
  145.88 +        /*
  145.89 +         * ; the following are optional, ; but MUST NOT occur more than once (";" altrepparam) / (";" languageparam) /
  145.90 +         */
  145.91 +        ParameterValidator.getInstance().assertOneOrLess(Parameter.ALTREP,
  145.92 +                getParameters());
  145.93 +        ParameterValidator.getInstance().assertOneOrLess(Parameter.LANGUAGE,
  145.94 +                getParameters());
  145.95 +
  145.96 +        /*
  145.97 +         * ; the following is optional, ; and MAY occur more than once (";" xparam)
  145.98 +         */
  145.99 +    }
 145.100 +
 145.101 +    /**
 145.102 +     * {@inheritDoc}
 145.103 +     */
 145.104 +    public final void setValue(final String aValue) {
 145.105 +        this.value = aValue;
 145.106 +    }
 145.107 +
 145.108 +    /**
 145.109 +     * {@inheritDoc}
 145.110 +     */
 145.111 +    public final String getValue() {
 145.112 +        return value;
 145.113 +    }
 145.114 +}
   146.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   146.2 +++ b/src/net/fortuna/ical4j/model/property/Country.java	Tue Feb 10 18:12:00 2015 +0100
   146.3 @@ -0,0 +1,110 @@
   146.4 +/**
   146.5 + * Copyright (c) 2012, Ben Fortuna
   146.6 + * All rights reserved.
   146.7 + *
   146.8 + * Redistribution and use in source and binary forms, with or without
   146.9 + * modification, are permitted provided that the following conditions
  146.10 + * are met:
  146.11 + *
  146.12 + *  o Redistributions of source code must retain the above copyright
  146.13 + * notice, this list of conditions and the following disclaimer.
  146.14 + *
  146.15 + *  o Redistributions in binary form must reproduce the above copyright
  146.16 + * notice, this list of conditions and the following disclaimer in the
  146.17 + * documentation and/or other materials provided with the distribution.
  146.18 + *
  146.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  146.20 + * may be used to endorse or promote products derived from this software
  146.21 + * without specific prior written permission.
  146.22 + *
  146.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  146.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  146.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  146.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  146.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  146.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  146.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  146.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  146.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  146.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  146.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  146.34 + */
  146.35 +package net.fortuna.ical4j.model.property;
  146.36 +
  146.37 +import net.fortuna.ical4j.model.Escapable;
  146.38 +import net.fortuna.ical4j.model.Parameter;
  146.39 +import net.fortuna.ical4j.model.ParameterList;
  146.40 +import net.fortuna.ical4j.model.Property;
  146.41 +import net.fortuna.ical4j.model.PropertyFactoryImpl;
  146.42 +import net.fortuna.ical4j.model.ValidationException;
  146.43 +import net.fortuna.ical4j.util.ParameterValidator;
  146.44 +
  146.45 +/**
  146.46 + * $Id$
  146.47 + *
  146.48 + * Created: [Apr 6, 2004]
  146.49 + *
  146.50 + * Defines a REGION iCalendar component property.
  146.51 + * @author benf
  146.52 + * @author Mike Douglass
  146.53 + */
  146.54 +public class Country extends Property implements Escapable {
  146.55 +
  146.56 +	private static final long serialVersionUID = -8091183292558005452L;
  146.57 +	
  146.58 +	private String value;
  146.59 +
  146.60 +    /**
  146.61 +     * Default constructor.
  146.62 +     */
  146.63 +    public Country() {
  146.64 +        super(COUNTRY, PropertyFactoryImpl.getInstance());
  146.65 +    }
  146.66 +
  146.67 +    /**
  146.68 +     * @param aValue a value string for this component
  146.69 +     */
  146.70 +    public Country(final String aValue) {
  146.71 +        super(COUNTRY, PropertyFactoryImpl.getInstance());
  146.72 +        setValue(aValue);
  146.73 +    }
  146.74 +
  146.75 +    /**
  146.76 +     * @param aList a list of parameters for this component
  146.77 +     * @param aValue a value string for this component
  146.78 +     */
  146.79 +    public Country(final ParameterList aList, final String aValue) {
  146.80 +        super(COUNTRY, aList, PropertyFactoryImpl.getInstance());
  146.81 +        setValue(aValue);
  146.82 +    }
  146.83 +
  146.84 +    /**
  146.85 +     * {@inheritDoc}
  146.86 +     */
  146.87 +    public final void validate() throws ValidationException {
  146.88 +
  146.89 +        /*
  146.90 +         * ; the following are optional, ; but MUST NOT occur more than once (";" abbrev
  146.91 +         */
  146.92 +        ParameterValidator.getInstance().assertOneOrLess(Parameter.ABBREV,
  146.93 +                getParameters());
  146.94 +
  146.95 +        /*
  146.96 +         * ; the following is optional, ; and MAY occur more than once (";" xparam)
  146.97 +         */
  146.98 +    }
  146.99 +
 146.100 +    /**
 146.101 +     * {@inheritDoc}
 146.102 +     */
 146.103 +    public final void setValue(final String aValue) {
 146.104 +        this.value = aValue;
 146.105 +    }
 146.106 +
 146.107 +    /**
 146.108 +     * {@inheritDoc}
 146.109 +     */
 146.110 +    public final String getValue() {
 146.111 +        return value;
 146.112 +    }
 146.113 +}
   147.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   147.2 +++ b/src/net/fortuna/ical4j/model/property/Created.java	Tue Feb 10 18:12:00 2015 +0100
   147.3 @@ -0,0 +1,129 @@
   147.4 +/**
   147.5 + * Copyright (c) 2012, Ben Fortuna
   147.6 + * All rights reserved.
   147.7 + *
   147.8 + * Redistribution and use in source and binary forms, with or without
   147.9 + * modification, are permitted provided that the following conditions
  147.10 + * are met:
  147.11 + *
  147.12 + *  o Redistributions of source code must retain the above copyright
  147.13 + * notice, this list of conditions and the following disclaimer.
  147.14 + *
  147.15 + *  o Redistributions in binary form must reproduce the above copyright
  147.16 + * notice, this list of conditions and the following disclaimer in the
  147.17 + * documentation and/or other materials provided with the distribution.
  147.18 + *
  147.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  147.20 + * may be used to endorse or promote products derived from this software
  147.21 + * without specific prior written permission.
  147.22 + *
  147.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  147.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  147.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  147.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  147.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  147.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  147.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  147.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  147.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  147.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  147.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  147.34 + */
  147.35 +package net.fortuna.ical4j.model.property;
  147.36 +
  147.37 +import java.text.ParseException;
  147.38 +
  147.39 +import net.fortuna.ical4j.model.DateTime;
  147.40 +import net.fortuna.ical4j.model.ParameterList;
  147.41 +import net.fortuna.ical4j.model.PropertyFactoryImpl;
  147.42 +
  147.43 +/**
  147.44 + * $Id$
  147.45 + * 
  147.46 + * Created: [Apr 6, 2004]
  147.47 + *
  147.48 + * Defines a CREATED iCalendar component property.
  147.49 + * 
  147.50 + * <pre>
  147.51 + *     4.8.7.1 Date/Time Created
  147.52 + *     
  147.53 + *        Property Name: CREATED
  147.54 + *     
  147.55 + *        Purpose: This property specifies the date and time that the calendar
  147.56 + *        information was created by the calendar user agent in the calendar
  147.57 + *        store.
  147.58 + *     
  147.59 + *             Note: This is analogous to the creation date and time for a file
  147.60 + *             in the file system.
  147.61 + *     
  147.62 + *        Value Type: DATE-TIME
  147.63 + *     
  147.64 + *        Property Parameters: Non-standard property parameters can be
  147.65 + *        specified on this property.
  147.66 + *     
  147.67 + *        Conformance: The property can be specified once in &quot;VEVENT&quot;, &quot;VTODO&quot;
  147.68 + *        or &quot;VJOURNAL&quot; calendar components.
  147.69 + *     
  147.70 + *        Description: The date and time is a UTC value.
  147.71 + *     
  147.72 + *        Format Definition: The property is defined by the following notation:
  147.73 + *     
  147.74 + *          created    = &quot;CREATED&quot; creaparam &quot;:&quot; date-time CRLF
  147.75 + *     
  147.76 + *          creaparam  = *(&quot;;&quot; xparam)
  147.77 + * </pre>
  147.78 + * 
  147.79 + * @author Ben Fortuna
  147.80 + */
  147.81 +public class Created extends UtcProperty {
  147.82 +
  147.83 +    private static final long serialVersionUID = -8658935097721652961L;
  147.84 +
  147.85 +    /**
  147.86 +     * Default constructor.
  147.87 +     */
  147.88 +    public Created() {
  147.89 +        super(CREATED, PropertyFactoryImpl.getInstance());
  147.90 +    }
  147.91 +
  147.92 +    /**
  147.93 +     * @param aValue a value string for this component
  147.94 +     * @throws ParseException where the specified value string is not a valid date-time/date representation
  147.95 +     */
  147.96 +    public Created(final String aValue) throws ParseException {
  147.97 +        super(CREATED, PropertyFactoryImpl.getInstance());
  147.98 +        setValue(aValue);
  147.99 +    }
 147.100 +
 147.101 +    /**
 147.102 +     * @param aList a list of parameters for this component
 147.103 +     * @param aValue a value string for this component
 147.104 +     * @throws ParseException where the specified value string is not a valid date-time/date representation
 147.105 +     */
 147.106 +    public Created(final ParameterList aList, final String aValue)
 147.107 +            throws ParseException {
 147.108 +        super(CREATED, aList, PropertyFactoryImpl.getInstance());
 147.109 +        setValue(aValue);
 147.110 +    }
 147.111 +
 147.112 +    /**
 147.113 +     * @param aDate a date
 147.114 +     */
 147.115 +    public Created(final DateTime aDate) {
 147.116 +        super(CREATED, PropertyFactoryImpl.getInstance());
 147.117 +        // time must be in UTC..
 147.118 +        aDate.setUtc(true);
 147.119 +        setDate(aDate);
 147.120 +    }
 147.121 +
 147.122 +    /**
 147.123 +     * @param aList a list of parameters for this component
 147.124 +     * @param aDate a date
 147.125 +     */
 147.126 +    public Created(final ParameterList aList, final DateTime aDate) {
 147.127 +        super(CREATED, aList, PropertyFactoryImpl.getInstance());
 147.128 +        // time must be in UTC..
 147.129 +        aDate.setUtc(true);
 147.130 +        setDate(aDate);
 147.131 +    }
 147.132 +}
   148.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   148.2 +++ b/src/net/fortuna/ical4j/model/property/DateListProperty.java	Tue Feb 10 18:12:00 2015 +0100
   148.3 @@ -0,0 +1,185 @@
   148.4 +/**
   148.5 + * Copyright (c) 2012, Ben Fortuna
   148.6 + * All rights reserved.
   148.7 + *
   148.8 + * Redistribution and use in source and binary forms, with or without
   148.9 + * modification, are permitted provided that the following conditions
  148.10 + * are met:
  148.11 + *
  148.12 + *  o Redistributions of source code must retain the above copyright
  148.13 + * notice, this list of conditions and the following disclaimer.
  148.14 + *
  148.15 + *  o Redistributions in binary form must reproduce the above copyright
  148.16 + * notice, this list of conditions and the following disclaimer in the
  148.17 + * documentation and/or other materials provided with the distribution.
  148.18 + *
  148.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  148.20 + * may be used to endorse or promote products derived from this software
  148.21 + * without specific prior written permission.
  148.22 + *
  148.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  148.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  148.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  148.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  148.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  148.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  148.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  148.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  148.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  148.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  148.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  148.34 + */
  148.35 +package net.fortuna.ical4j.model.property;
  148.36 +
  148.37 +import java.io.IOException;
  148.38 +import java.net.URISyntaxException;
  148.39 +import java.text.ParseException;
  148.40 +
  148.41 +import net.fortuna.ical4j.model.DateList;
  148.42 +import net.fortuna.ical4j.model.Parameter;
  148.43 +import net.fortuna.ical4j.model.ParameterList;
  148.44 +import net.fortuna.ical4j.model.Property;
  148.45 +import net.fortuna.ical4j.model.PropertyFactory;
  148.46 +import net.fortuna.ical4j.model.TimeZone;
  148.47 +import net.fortuna.ical4j.model.parameter.TzId;
  148.48 +import net.fortuna.ical4j.model.parameter.Value;
  148.49 +import net.fortuna.ical4j.util.Strings;
  148.50 +
  148.51 +/**
  148.52 + * $Id$
  148.53 + *
  148.54 + * Created on 11/08/2005
  148.55 + *
  148.56 + * Base class for properties with a list of dates as a value.
  148.57 + * @author Ben Fortuna
  148.58 + */
  148.59 +public abstract class DateListProperty extends Property {
  148.60 +
  148.61 +    /**
  148.62 +     * 
  148.63 +     */
  148.64 +    private static final long serialVersionUID = 5233773091972759919L;
  148.65 +
  148.66 +    private DateList dates;
  148.67 +
  148.68 +    private TimeZone timeZone;
  148.69 +
  148.70 +    /**
  148.71 +     * @param name the property name
  148.72 +     */
  148.73 +    public DateListProperty(final String name, PropertyFactory factory) {
  148.74 +        this(name, new DateList(Value.DATE_TIME), factory);
  148.75 +    }
  148.76 +
  148.77 +    /**
  148.78 +     * @param name the property name
  148.79 +     * @param parameters property parameters
  148.80 +     */
  148.81 +    public DateListProperty(final String name, final ParameterList parameters, PropertyFactory factory) {
  148.82 +        super(name, parameters, factory);
  148.83 +    }
  148.84 +
  148.85 +    /**
  148.86 +     * @param name the property name
  148.87 +     * @param dates a list of initial dates for the property
  148.88 +     */
  148.89 +    public DateListProperty(final String name, final DateList dates, PropertyFactory factory) {
  148.90 +        this(name, new ParameterList(), dates, factory);
  148.91 +    }
  148.92 +
  148.93 +    /**
  148.94 +     * @param name the property name
  148.95 +     * @param parameters property parameters
  148.96 +     * @param dates a list of initial dates for the property
  148.97 +     */
  148.98 +    public DateListProperty(final String name, final ParameterList parameters, final DateList dates,
  148.99 +            PropertyFactory factory) {
 148.100 +        super(name, parameters, factory);
 148.101 +        this.dates = dates;
 148.102 +        if (dates != null && !Value.DATE_TIME.equals(dates.getType())) {
 148.103 +            getParameters().replace(dates.getType());
 148.104 +        }
 148.105 +    }
 148.106 +
 148.107 +    /**
 148.108 +     * @return Returns the dates.
 148.109 +     */
 148.110 +    public final DateList getDates() {
 148.111 +        return dates;
 148.112 +    }
 148.113 +
 148.114 +    /**
 148.115 +     * {@inheritDoc}
 148.116 +     */
 148.117 +    public void setValue(final String aValue) throws ParseException {
 148.118 +        dates = new DateList(aValue, (Value) getParameter(Parameter.VALUE),
 148.119 +                timeZone);
 148.120 +    }
 148.121 +
 148.122 +    /**
 148.123 +     * {@inheritDoc}
 148.124 +     */
 148.125 +    public String getValue() {
 148.126 +        return Strings.valueOf(dates);
 148.127 +    }
 148.128 +
 148.129 +    /**
 148.130 +     * Sets the timezone associated with this property.
 148.131 +     * @param timezone a timezone to associate with this property
 148.132 +     */
 148.133 +    public void setTimeZone(final TimeZone timezone) {
 148.134 +        if (dates == null) {
 148.135 +            throw new UnsupportedOperationException(
 148.136 +                    "TimeZone is not applicable to current value");
 148.137 +        }
 148.138 +        this.timeZone = timezone;
 148.139 +        if (timezone != null) {
 148.140 +            if (!Value.DATE_TIME.equals(getDates().getType())) {
 148.141 +                throw new UnsupportedOperationException(
 148.142 +                        "TimeZone is not applicable to current value");
 148.143 +            }
 148.144 +            dates.setTimeZone(timezone);
 148.145 +            getParameters().remove(getParameter(Parameter.TZID));
 148.146 +            final TzId tzId = new TzId(timezone.getID());
 148.147 +            getParameters().replace(tzId);
 148.148 +        }
 148.149 +        else {
 148.150 +            // use setUtc() to reset timezone..
 148.151 +            setUtc(false);
 148.152 +        }
 148.153 +    }
 148.154 +
 148.155 +    /**
 148.156 +     * @return the timezone
 148.157 +     */
 148.158 +    public final TimeZone getTimeZone() {
 148.159 +        return timeZone;
 148.160 +    }
 148.161 +
 148.162 +    /**
 148.163 +     * Resets the timezone associated with the property. If utc is true, any TZID parameters are removed and the Java
 148.164 +     * timezone is updated to UTC time. If utc is false, TZID parameters are removed and the Java timezone is set to the
 148.165 +     * default timezone (i.e. represents a "floating" local time)
 148.166 +     * @param utc the UTC value
 148.167 +     */
 148.168 +    public final void setUtc(final boolean utc) {
 148.169 +        if (dates == null || !Value.DATE_TIME.equals(dates.getType())) {
 148.170 +            throw new UnsupportedOperationException(
 148.171 +                    "TimeZone is not applicable to current value");
 148.172 +        }
 148.173 +        dates.setUtc(utc);
 148.174 +        getParameters().remove(getParameter(Parameter.TZID));
 148.175 +    }
 148.176 +
 148.177 +    /**
 148.178 +     * {@inheritDoc}
 148.179 +     */
 148.180 +    public final Property copy() throws IOException, URISyntaxException, ParseException {
 148.181 +        final Property copy = super.copy();
 148.182 +        
 148.183 +       ((DateListProperty) copy).timeZone = timeZone;
 148.184 +       ((DateListProperty) copy).setValue(getValue());
 148.185 +
 148.186 +        return copy;
 148.187 +    }
 148.188 +}
   149.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   149.2 +++ b/src/net/fortuna/ical4j/model/property/DateProperty.java	Tue Feb 10 18:12:00 2015 +0100
   149.3 @@ -0,0 +1,288 @@
   149.4 +/**
   149.5 + * Copyright (c) 2012, Ben Fortuna
   149.6 + * All rights reserved.
   149.7 + *
   149.8 + * Redistribution and use in source and binary forms, with or without
   149.9 + * modification, are permitted provided that the following conditions
  149.10 + * are met:
  149.11 + *
  149.12 + *  o Redistributions of source code must retain the above copyright
  149.13 + * notice, this list of conditions and the following disclaimer.
  149.14 + *
  149.15 + *  o Redistributions in binary form must reproduce the above copyright
  149.16 + * notice, this list of conditions and the following disclaimer in the
  149.17 + * documentation and/or other materials provided with the distribution.
  149.18 + *
  149.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  149.20 + * may be used to endorse or promote products derived from this software
  149.21 + * without specific prior written permission.
  149.22 + *
  149.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  149.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  149.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  149.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  149.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  149.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  149.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  149.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  149.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  149.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  149.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  149.34 + */
  149.35 +package net.fortuna.ical4j.model.property;
  149.36 +
  149.37 +import java.io.IOException;
  149.38 +import java.net.URISyntaxException;
  149.39 +import java.text.ParseException;
  149.40 +
  149.41 +import net.fortuna.ical4j.model.Date;
  149.42 +import net.fortuna.ical4j.model.DateTime;
  149.43 +import net.fortuna.ical4j.model.Parameter;
  149.44 +import net.fortuna.ical4j.model.ParameterList;
  149.45 +import net.fortuna.ical4j.model.Property;
  149.46 +import net.fortuna.ical4j.model.PropertyFactory;
  149.47 +import net.fortuna.ical4j.model.TimeZone;
  149.48 +import net.fortuna.ical4j.model.ValidationException;
  149.49 +import net.fortuna.ical4j.model.parameter.TzId;
  149.50 +import net.fortuna.ical4j.model.parameter.Value;
  149.51 +import net.fortuna.ical4j.util.ParameterValidator;
  149.52 +import net.fortuna.ical4j.util.Strings;
  149.53 +
  149.54 +/**
  149.55 + * $Id$
  149.56 + *
  149.57 + * Created on 9/07/2005
  149.58 + *
  149.59 + * Base class for properties with a DATE or DATE-TIME value. Note that some sub-classes may only allow either a DATE or
  149.60 + * a DATE-TIME value, for which additional rules/validation should be specified.
  149.61 + * @author Ben Fortuna
  149.62 + */
  149.63 +public abstract class DateProperty extends Property {
  149.64 +
  149.65 +    private static final long serialVersionUID = 3160883132732961321L;
  149.66 +    
  149.67 +    private Date date;
  149.68 +
  149.69 +    private TimeZone timeZone;
  149.70 +
  149.71 +    /**
  149.72 +     * @param name the property name
  149.73 +     * @param parameters a list of initial parameters
  149.74 +     */
  149.75 +    public DateProperty(final String name, final ParameterList parameters, PropertyFactory factory) {
  149.76 +        super(name, parameters, factory);
  149.77 +    }
  149.78 +
  149.79 +    /**
  149.80 +     * @param name the property name
  149.81 +     */
  149.82 +    public DateProperty(final String name, PropertyFactory factory) {
  149.83 +        super(name, factory);
  149.84 +    }
  149.85 +
  149.86 +    /**
  149.87 +     * Creates a new instance of the named property with an initial timezone.
  149.88 +     * @param name property name
  149.89 +     * @param timezone initial timezone
  149.90 +     */
  149.91 +    public DateProperty(final String name, TimeZone timezone, PropertyFactory factory) {
  149.92 +        super(name, factory);
  149.93 +        updateTimeZone(timezone);
  149.94 +    }
  149.95 +
  149.96 +    /**
  149.97 +     * @return Returns the date.
  149.98 +     */
  149.99 +    public final Date getDate() {
 149.100 +        return date;
 149.101 +    }
 149.102 +
 149.103 +    /**
 149.104 +     * Sets the date value of this property. The timezone and value of this
 149.105 +     * instance will also be updated accordingly.
 149.106 +     * @param date The date to set.
 149.107 +     */
 149.108 +    public final void setDate(final Date date) {
 149.109 +        this.date = date;
 149.110 +        if (date instanceof DateTime) {
 149.111 +            if (Value.DATE.equals(getParameter(Parameter.VALUE))) {
 149.112 +                getParameters().replace(Value.DATE_TIME);
 149.113 +            }
 149.114 +            updateTimeZone(((DateTime) date).getTimeZone());
 149.115 +        }
 149.116 +        else {
 149.117 +            if (date != null) {
 149.118 +                getParameters().replace(Value.DATE);
 149.119 +            }
 149.120 +            /*
 149.121 +            else {
 149.122 +                getParameters().removeAll(Parameter.VALUE);
 149.123 +            }
 149.124 +            */
 149.125 +            // ensure timezone is null for VALUE=DATE or null properties..
 149.126 +            updateTimeZone(null);
 149.127 +        }
 149.128 +    }
 149.129 +
 149.130 +    /**
 149.131 +     * Default setValue() implementation. Allows for either DATE or DATE-TIME values.
 149.132 +     * 
 149.133 +     * @param value a string representation of a DATE or DATE-TIME value
 149.134 +     * @throws ParseException where the specified value is not a valid DATE or DATE-TIME
 149.135 +     * representation
 149.136 +     */
 149.137 +    public void setValue(final String value) throws ParseException {
 149.138 +        // value can be either a date-time or a date..
 149.139 +        if (Value.DATE.equals(getParameter(Parameter.VALUE))) {
 149.140 +            // ensure timezone is null for VALUE=DATE properties..
 149.141 +            updateTimeZone(null);
 149.142 +            this.date = new Date(value);
 149.143 +        }
 149.144 +        else {
 149.145 +            this.date = new DateTime(value, timeZone);
 149.146 +        }
 149.147 +    }
 149.148 +
 149.149 +    /**
 149.150 +     * {@inheritDoc}
 149.151 +     */
 149.152 +    public String getValue() {
 149.153 +        return Strings.valueOf(getDate());
 149.154 +    }
 149.155 +
 149.156 +    /**
 149.157 +     * Publically available method to update the current timezone.
 149.158 +     * @param timezone a timezone instance
 149.159 +     */
 149.160 +    public void setTimeZone(final TimeZone timezone) {
 149.161 +        updateTimeZone(timezone);
 149.162 +    }
 149.163 +    
 149.164 +    /**
 149.165 +     * @return the timezone
 149.166 +     */
 149.167 +    public final TimeZone getTimeZone() {
 149.168 +        return timeZone;
 149.169 +    }
 149.170 +    
 149.171 +    /**
 149.172 +     * {@inheritDoc}
 149.173 +     */
 149.174 +    public int hashCode() {
 149.175 +        return getDate().hashCode();
 149.176 +    }
 149.177 +
 149.178 +    /**
 149.179 +     * Updates the timezone associated with the property's value. If the specified timezone is equivalent to UTC any
 149.180 +     * existing TZID parameters will be removed. Note that this method is only applicable where the current date is an
 149.181 +     * instance of <code>DateTime</code>. For all other cases an <code>UnsupportedOperationException</code> will be
 149.182 +     * thrown.
 149.183 +     * @param vTimeZone
 149.184 +     */
 149.185 +    private void updateTimeZone(final TimeZone timezone) {
 149.186 +        this.timeZone = timezone;
 149.187 +        if (timezone != null) {
 149.188 +            if (getDate() != null && !(getDate() instanceof DateTime)) {
 149.189 +                throw new UnsupportedOperationException(
 149.190 +                        "TimeZone is not applicable to current value");
 149.191 +            }
 149.192 +            if (getDate() != null) {
 149.193 +                ((DateTime) getDate()).setTimeZone(timezone);
 149.194 +            }
 149.195 +
 149.196 +            getParameters().replace(new TzId(timezone.getID()));
 149.197 +        }
 149.198 +        else {
 149.199 +            // use setUtc() to reset timezone..
 149.200 +            setUtc(isUtc());
 149.201 +        }
 149.202 +    }
 149.203 +
 149.204 +    /**
 149.205 +     * Resets the VTIMEZONE associated with the property. If utc is true, any TZID parameters are removed and the Java
 149.206 +     * timezone is updated to UTC time. If utc is false, TZID parameters are removed and the Java timezone is set to the
 149.207 +     * default timezone (i.e. represents a "floating" local time)
 149.208 +     * @param utc a UTC value
 149.209 +     */
 149.210 +    public final void setUtc(final boolean utc) {
 149.211 +        if (getDate() != null && (getDate() instanceof DateTime)) {
 149.212 +            ((DateTime) getDate()).setUtc(utc);
 149.213 +        }
 149.214 +        getParameters().remove(getParameter(Parameter.TZID));
 149.215 +    }
 149.216 +
 149.217 +    /**
 149.218 +     * Indicates whether the current date value is specified in UTC time.
 149.219 +     * @return true if the property is in UTC time, otherwise false
 149.220 +     */
 149.221 +    public final boolean isUtc() {
 149.222 +        if (getDate() instanceof DateTime) {
 149.223 +            return ((DateTime) getDate()).isUtc();
 149.224 +        }
 149.225 +        return false;
 149.226 +    }
 149.227 +
 149.228 +    /**
 149.229 +     * {@inheritDoc}
 149.230 +     */
 149.231 +    public void validate() throws ValidationException {
 149.232 +
 149.233 +        ParameterValidator.getInstance().assertOneOrLess(Parameter.VALUE,
 149.234 +                getParameters());
 149.235 +
 149.236 +        if (isUtc()) {
 149.237 +            ParameterValidator.getInstance().assertNone(Parameter.TZID,
 149.238 +                    getParameters());
 149.239 +        }
 149.240 +        else {
 149.241 +            ParameterValidator.getInstance().assertOneOrLess(Parameter.TZID,
 149.242 +                    getParameters());
 149.243 +        }
 149.244 +
 149.245 +        final Value value = (Value) getParameter(Parameter.VALUE);
 149.246 +
 149.247 +        if (getDate() instanceof DateTime) {
 149.248 +
 149.249 +            if (value != null && !Value.DATE_TIME.equals(value)) {
 149.250 +                throw new ValidationException("VALUE parameter [" + value
 149.251 +                        + "] is invalid for DATE-TIME instance");
 149.252 +            }
 149.253 +
 149.254 +            final DateTime dateTime = (DateTime) date;
 149.255 +
 149.256 +            // ensure tzid matches date-time timezone..
 149.257 +            final Parameter tzId = getParameter(Parameter.TZID);
 149.258 +            if (dateTime.getTimeZone() != null
 149.259 +                    && (tzId == null || !tzId.getValue().equals(
 149.260 +                            dateTime.getTimeZone().getID()))) {
 149.261 +
 149.262 +                throw new ValidationException("TZID parameter [" + tzId
 149.263 +                        + "] does not match the timezone ["
 149.264 +                        + dateTime.getTimeZone().getID() + "]");
 149.265 +            }
 149.266 +        }
 149.267 +        else if (getDate() != null) {
 149.268 +
 149.269 +            if (value == null) {
 149.270 +                throw new ValidationException("VALUE parameter [" + Value.DATE
 149.271 +                        + "] must be specified for DATE instance");
 149.272 +            }
 149.273 +            else if (!Value.DATE.equals(value)) {
 149.274 +                throw new ValidationException("VALUE parameter [" + value
 149.275 +                        + "] is invalid for DATE instance");
 149.276 +            }
 149.277 +        }
 149.278 +    }
 149.279 +    
 149.280 +    /**
 149.281 +     * {@inheritDoc}
 149.282 +     */
 149.283 +    public Property copy() throws IOException, URISyntaxException, ParseException {
 149.284 +        final Property copy = super.copy();
 149.285 +        
 149.286 +       ((DateProperty) copy).timeZone = timeZone;
 149.287 +       ((DateProperty) copy).setValue(getValue());
 149.288 +       
 149.289 +        return copy;
 149.290 +    }
 149.291 +}
   150.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   150.2 +++ b/src/net/fortuna/ical4j/model/property/Description.java	Tue Feb 10 18:12:00 2015 +0100
   150.3 @@ -0,0 +1,111 @@
   150.4 +/**
   150.5 + * Copyright (c) 2012, Ben Fortuna
   150.6 + * All rights reserved.
   150.7 + *
   150.8 + * Redistribution and use in source and binary forms, with or without
   150.9 + * modification, are permitted provided that the following conditions
  150.10 + * are met:
  150.11 + *
  150.12 + *  o Redistributions of source code must retain the above copyright
  150.13 + * notice, this list of conditions and the following disclaimer.
  150.14 + *
  150.15 + *  o Redistributions in binary form must reproduce the above copyright
  150.16 + * notice, this list of conditions and the following disclaimer in the
  150.17 + * documentation and/or other materials provided with the distribution.
  150.18 + *
  150.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  150.20 + * may be used to endorse or promote products derived from this software
  150.21 + * without specific prior written permission.
  150.22 + *
  150.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  150.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  150.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  150.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  150.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  150.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  150.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  150.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  150.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  150.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  150.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  150.34 + */
  150.35 +package net.fortuna.ical4j.model.property;
  150.36 +
  150.37 +import net.fortuna.ical4j.model.Escapable;
  150.38 +import net.fortuna.ical4j.model.Parameter;
  150.39 +import net.fortuna.ical4j.model.ParameterList;
  150.40 +import net.fortuna.ical4j.model.Property;
  150.41 +import net.fortuna.ical4j.model.PropertyFactoryImpl;
  150.42 +import net.fortuna.ical4j.model.ValidationException;
  150.43 +import net.fortuna.ical4j.util.ParameterValidator;
  150.44 +
  150.45 +/**
  150.46 + * $Id$
  150.47 + * 
  150.48 + * Created: [Apr 6, 2004]
  150.49 + *
  150.50 + * Defines a DESCRIPTION iCalendar component property.
  150.51 + * @author benf
  150.52 + */
  150.53 +public class Description extends Property implements Escapable {
  150.54 +
  150.55 +    private static final long serialVersionUID = 7287564228220558361L;
  150.56 +
  150.57 +    private String value;
  150.58 +
  150.59 +    /**
  150.60 +     * Default constructor.
  150.61 +     */
  150.62 +    public Description() {
  150.63 +        super(DESCRIPTION, PropertyFactoryImpl.getInstance());
  150.64 +    }
  150.65 +
  150.66 +    /**
  150.67 +     * @param aValue a value string for this component
  150.68 +     */
  150.69 +    public Description(final String aValue) {
  150.70 +        super(DESCRIPTION, PropertyFactoryImpl.getInstance());
  150.71 +        setValue(aValue);
  150.72 +    }
  150.73 +
  150.74 +    /**
  150.75 +     * @param aList a list of parameters for this component
  150.76 +     * @param aValue a value string for this component
  150.77 +     */
  150.78 +    public Description(final ParameterList aList, final String aValue) {
  150.79 +        super(DESCRIPTION, aList, PropertyFactoryImpl.getInstance());
  150.80 +        setValue(aValue);
  150.81 +    }
  150.82 +
  150.83 +    /**
  150.84 +     * {@inheritDoc}
  150.85 +     */
  150.86 +    public final void validate() throws ValidationException {
  150.87 +
  150.88 +        /*
  150.89 +         * ; the following are optional, ; but MUST NOT occur more than once (";" altrepparam) / (";" languageparam) /
  150.90 +         */
  150.91 +        ParameterValidator.getInstance().assertOneOrLess(Parameter.ALTREP,
  150.92 +                getParameters());
  150.93 +        ParameterValidator.getInstance().assertOneOrLess(Parameter.LANGUAGE,
  150.94 +                getParameters());
  150.95 +
  150.96 +        /*
  150.97 +         * ; the following is optional, ; and MAY occur more than once (";" xparam)
  150.98 +         */
  150.99 +    }
 150.100 +
 150.101 +    /**
 150.102 +     * {@inheritDoc}
 150.103 +     */
 150.104 +    public final void setValue(final String aValue) {
 150.105 +        this.value = aValue;
 150.106 +    }
 150.107 +
 150.108 +    /**
 150.109 +     * {@inheritDoc}
 150.110 +     */
 150.111 +    public final String getValue() {
 150.112 +        return value;
 150.113 +    }
 150.114 +}
   151.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   151.2 +++ b/src/net/fortuna/ical4j/model/property/DtEnd.java	Tue Feb 10 18:12:00 2015 +0100
   151.3 @@ -0,0 +1,208 @@
   151.4 +/**
   151.5 + * Copyright (c) 2012, Ben Fortuna
   151.6 + * All rights reserved.
   151.7 + *
   151.8 + * Redistribution and use in source and binary forms, with or without
   151.9 + * modification, are permitted provided that the following conditions
  151.10 + * are met:
  151.11 + *
  151.12 + *  o Redistributions of source code must retain the above copyright
  151.13 + * notice, this list of conditions and the following disclaimer.
  151.14 + *
  151.15 + *  o Redistributions in binary form must reproduce the above copyright
  151.16 + * notice, this list of conditions and the following disclaimer in the
  151.17 + * documentation and/or other materials provided with the distribution.
  151.18 + *
  151.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  151.20 + * may be used to endorse or promote products derived from this software
  151.21 + * without specific prior written permission.
  151.22 + *
  151.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  151.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  151.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  151.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  151.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  151.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  151.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  151.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  151.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  151.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  151.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  151.34 + */
  151.35 +package net.fortuna.ical4j.model.property;
  151.36 +
  151.37 +import java.text.ParseException;
  151.38 +
  151.39 +import net.fortuna.ical4j.model.Date;
  151.40 +import net.fortuna.ical4j.model.ParameterList;
  151.41 +import net.fortuna.ical4j.model.PropertyFactoryImpl;
  151.42 +import net.fortuna.ical4j.model.TimeZone;
  151.43 +import net.fortuna.ical4j.model.ValidationException;
  151.44 +
  151.45 +/**
  151.46 + * $Id$
  151.47 + * 
  151.48 + * Created: [Apr 6, 2004]
  151.49 + *
  151.50 + * Defines a DTEND iCalendar component property.
  151.51 + * 
  151.52 + * <pre>
  151.53 + *     4.8.2.2 Date/Time End
  151.54 + *     
  151.55 + *        Property Name: DTEND
  151.56 + *     
  151.57 + *        Purpose: This property specifies the date and time that a calendar
  151.58 + *        component ends.
  151.59 + *     
  151.60 + *        Value Type: The default value type is DATE-TIME. The value type can
  151.61 + *        be set to a DATE value type.
  151.62 + *     
  151.63 + *        Property Parameters: Non-standard, value data type, time zone
  151.64 + *        identifier property parameters can be specified on this property.
  151.65 + *     
  151.66 + *        Conformance: This property can be specified in &quot;VEVENT&quot; or
  151.67 + *        &quot;VFREEBUSY&quot; calendar components.
  151.68 + *     
  151.69 + *        Description: Within the &quot;VEVENT&quot; calendar component, this property
  151.70 + *        defines the date and time by which the event ends. The value MUST be
  151.71 + *        later in time than the value of the &quot;DTSTART&quot; property.
  151.72 + *     
  151.73 + *        Within the &quot;VFREEBUSY&quot; calendar component, this property defines the
  151.74 + *        end date and time for the free or busy time information. The time
  151.75 + *        MUST be specified in the UTC time format. The value MUST be later in
  151.76 + *        time than the value of the &quot;DTSTART&quot; property.
  151.77 + *     
  151.78 + *        Format Definition: The property is defined by the following notation:
  151.79 + *     
  151.80 + *          dtend      = &quot;DTEND&quot; dtendparam&quot;:&quot; dtendval CRLF
  151.81 + *     
  151.82 + *          dtendparam = *(
  151.83 + *     
  151.84 + *                     ; the following are optional,
  151.85 + *                     ; but MUST NOT occur more than once
  151.86 + *     
  151.87 + *                     (&quot;;&quot; &quot;VALUE&quot; &quot;=&quot; (&quot;DATE-TIME&quot; / &quot;DATE&quot;)) /
  151.88 + *                     (&quot;;&quot; tzidparam) /
  151.89 + *     
  151.90 + *                     ; the following is optional,
  151.91 + *                     ; and MAY occur more than once
  151.92 + *     
  151.93 + *                     (&quot;;&quot; xparam)
  151.94 + *     
  151.95 + *                     )
  151.96 + *     
  151.97 + *     
  151.98 + *     
  151.99 + *          dtendval   = date-time / date
 151.100 + *          ;Value MUST match value type
 151.101 + * </pre>
 151.102 + * 
 151.103 + * Examples:
 151.104 + * 
 151.105 + * <pre>
 151.106 + *      // construct an end date from a start date and a duration..
 151.107 + *      DtStart start = ...
 151.108 + *      Dur oneWeek = new Dur(&quot;1W&quot;);
 151.109 + *      DtEnd end = new DtEnd(oneWeek.getTime(start.getDate());
 151.110 + * </pre>
 151.111 + * 
 151.112 + * @author Ben Fortuna
 151.113 + */
 151.114 +public class DtEnd extends DateProperty {
 151.115 +
 151.116 +    private static final long serialVersionUID = 8107416684717228297L;
 151.117 +
 151.118 +    /**
 151.119 +     * Default constructor. The time value is initialised to the time of instantiation.
 151.120 +     */
 151.121 +    public DtEnd() {
 151.122 +        super(DTEND, PropertyFactoryImpl.getInstance());
 151.123 +    }
 151.124 +
 151.125 +    /**
 151.126 +     * Creates a new DTEND property initialised with the specified timezone.
 151.127 +     * @param timezone initial timezone
 151.128 +     */
 151.129 +    public DtEnd(TimeZone timezone) {
 151.130 +        super(DTEND, timezone, PropertyFactoryImpl.getInstance());
 151.131 +    }
 151.132 +
 151.133 +    /**
 151.134 +     * Creates a new instance initialised with the parsed value.
 151.135 +     * @param value the DTEND value string to parse
 151.136 +     * @throws ParseException where the specified string is not a valid DTEND value representation
 151.137 +     */
 151.138 +    public DtEnd(final String value) throws ParseException {
 151.139 +        super(DTEND, PropertyFactoryImpl.getInstance());
 151.140 +        setValue(value);
 151.141 +    }
 151.142 +
 151.143 +    /**
 151.144 +     * Creates a new DTEND property initialised with the specified timezone and value.
 151.145 +     * @param value a string representation of a DTEND value
 151.146 +     * @param timezone initial timezone
 151.147 +     * @throws ParseException where the specified value is not a valid string
 151.148 +     * representation
 151.149 +     */
 151.150 +    public DtEnd(String value, TimeZone timezone) throws ParseException {
 151.151 +        super(DTEND, timezone, PropertyFactoryImpl.getInstance());
 151.152 +        setValue(value);
 151.153 +    }
 151.154 +
 151.155 +    /**
 151.156 +     * @param aList a list of parameters for this component
 151.157 +     * @param aValue a value string for this component
 151.158 +     * @throws ParseException when the specified string is not a valid date/date-time representation
 151.159 +     */
 151.160 +    public DtEnd(final ParameterList aList, final String aValue)
 151.161 +            throws ParseException {
 151.162 +        super(DTEND, aList, PropertyFactoryImpl.getInstance());
 151.163 +        setValue(aValue);
 151.164 +    }
 151.165 +
 151.166 +    /**
 151.167 +     * Constructor. Date or Date-Time format is determined based on the presence of a VALUE parameter.
 151.168 +     * @param aDate a date
 151.169 +     */
 151.170 +    public DtEnd(final Date aDate) {
 151.171 +        super(DTEND, PropertyFactoryImpl.getInstance());
 151.172 +        setDate(aDate);
 151.173 +    }
 151.174 +
 151.175 +    /**
 151.176 +     * Constructs a new DtEnd with the specified time.
 151.177 +     * @param time the time of the DtEnd
 151.178 +     * @param utc specifies whether time is UTC
 151.179 +     */
 151.180 +    public DtEnd(final Date time, final boolean utc) {
 151.181 +        super(DTEND, PropertyFactoryImpl.getInstance());
 151.182 +        setDate(time);
 151.183 +        setUtc(utc);
 151.184 +    }
 151.185 +
 151.186 +    /**
 151.187 +     * Constructor. Date or Date-Time format is determined based on the presence of a VALUE parameter.
 151.188 +     * @param aList a list of parameters for this component
 151.189 +     * @param aDate a date
 151.190 +     */
 151.191 +    public DtEnd(final ParameterList aList, final Date aDate) {
 151.192 +        super(DTEND, aList, PropertyFactoryImpl.getInstance());
 151.193 +        setDate(aDate);
 151.194 +    }
 151.195 +
 151.196 +    /**
 151.197 +     * {@inheritDoc}
 151.198 +     */
 151.199 +    public final void validate() throws ValidationException {
 151.200 +        super.validate();
 151.201 +
 151.202 +        /*
 151.203 +         * ; the following are optional, ; but MUST NOT occur more than once (";" "VALUE" "=" ("DATE-TIME" / "DATE")) /
 151.204 +         * (";" tzidparam) /
 151.205 +         */
 151.206 +
 151.207 +        /*
 151.208 +         * ; the following is optional, ; and MAY occur more than once (";" xparam)
 151.209 +         */
 151.210 +    }
 151.211 +}
   152.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   152.2 +++ b/src/net/fortuna/ical4j/model/property/DtStamp.java	Tue Feb 10 18:12:00 2015 +0100
   152.3 @@ -0,0 +1,136 @@
   152.4 +/**
   152.5 + * Copyright (c) 2012, Ben Fortuna
   152.6 + * All rights reserved.
   152.7 + *
   152.8 + * Redistribution and use in source and binary forms, with or without
   152.9 + * modification, are permitted provided that the following conditions
  152.10 + * are met:
  152.11 + *
  152.12 + *  o Redistributions of source code must retain the above copyright
  152.13 + * notice, this list of conditions and the following disclaimer.
  152.14 + *
  152.15 + *  o Redistributions in binary form must reproduce the above copyright
  152.16 + * notice, this list of conditions and the following disclaimer in the
  152.17 + * documentation and/or other materials provided with the distribution.
  152.18 + *
  152.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  152.20 + * may be used to endorse or promote products derived from this software
  152.21 + * without specific prior written permission.
  152.22 + *
  152.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  152.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  152.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  152.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  152.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  152.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  152.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  152.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  152.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  152.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  152.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  152.34 + */
  152.35 +package net.fortuna.ical4j.model.property;
  152.36 +
  152.37 +import java.text.ParseException;
  152.38 +
  152.39 +import net.fortuna.ical4j.model.DateTime;
  152.40 +import net.fortuna.ical4j.model.ParameterList;
  152.41 +import net.fortuna.ical4j.model.PropertyFactoryImpl;
  152.42 +
  152.43 +/**
  152.44 + * $Id$
  152.45 + * 
  152.46 + * Created: [Apr 6, 2004]
  152.47 + *
  152.48 + * Defines a DTSTAMP iCalendar component property.
  152.49 + * 
  152.50 + * <pre>
  152.51 + *     4.8.7.2 Date/Time Stamp
  152.52 + *     
  152.53 + *        Property Name: DTSTAMP
  152.54 + *     
  152.55 + *        Purpose: The property indicates the date/time that the instance of
  152.56 + *        the iCalendar object was created.
  152.57 + *     
  152.58 + *        Value Type: DATE-TIME
  152.59 + *     
  152.60 + *        Property Parameters: Non-standard property parameters can be
  152.61 + *        specified on this property.
  152.62 + *     
  152.63 + *        Conformance: This property MUST be included in the &quot;VEVENT&quot;, &quot;VTODO&quot;,
  152.64 + *        &quot;VJOURNAL&quot; or &quot;VFREEBUSY&quot; calendar components.
  152.65 + *     
  152.66 + *        Description: The value MUST be specified in the UTC time format.
  152.67 + *     
  152.68 + *        This property is also useful to protocols such as [IMIP] that have
  152.69 + *        inherent latency issues with the delivery of content. This property
  152.70 + *        will assist in the proper sequencing of messages containing iCalendar
  152.71 + *        objects.
  152.72 + *     
  152.73 + *        This property is different than the &quot;CREATED&quot; and &quot;LAST-MODIFIED&quot;
  152.74 + *        properties. These two properties are used to specify when the
  152.75 + *        particular calendar data in the calendar store was created and last
  152.76 + *        modified. This is different than when the iCalendar object
  152.77 + *        representation of the calendar service information was created or
  152.78 + *        last modified.
  152.79 + *     
  152.80 + *        Format Definition: The property is defined by the following notation:
  152.81 + *     
  152.82 + *          dtstamp    = &quot;DTSTAMP&quot; stmparam &quot;:&quot; date-time CRLF
  152.83 + *     
  152.84 + *          stmparam   = *(&quot;;&quot; xparam)
  152.85 + * </pre>
  152.86 + * 
  152.87 + * @author Ben Fortuna
  152.88 + */
  152.89 +public class DtStamp extends UtcProperty {
  152.90 +
  152.91 +    private static final long serialVersionUID = 7581197869433744070L;
  152.92 +
  152.93 +    /**
  152.94 +     * Default constructor. Initialises the dateTime value to the time of instantiation.
  152.95 +     */
  152.96 +    public DtStamp() {
  152.97 +        super(DTSTAMP, PropertyFactoryImpl.getInstance());
  152.98 +    }
  152.99 +
 152.100 +    /**
 152.101 +     * @param aValue a string representation of a DTSTAMP value
 152.102 +     * @throws ParseException if the specified value is not a valid representation
 152.103 +     */
 152.104 +    public DtStamp(final String aValue) throws ParseException {
 152.105 +    	this(new ParameterList(), aValue);
 152.106 +    }
 152.107 +    
 152.108 +    /**
 152.109 +     * @param aList a list of parameters for this component
 152.110 +     * @param aValue a value string for this component
 152.111 +     * @throws ParseException where the specified value string is not a valid date-time/date representation
 152.112 +     */
 152.113 +    public DtStamp(final ParameterList aList, final String aValue)
 152.114 +            throws ParseException {
 152.115 +        super(DTSTAMP, aList, PropertyFactoryImpl.getInstance());
 152.116 +        setValue(aValue);
 152.117 +    }
 152.118 +
 152.119 +    /**
 152.120 +     * @param aDate a date representing a date-time 
 152.121 +     */
 152.122 +    public DtStamp(final DateTime aDate) {
 152.123 +        super(DTSTAMP, PropertyFactoryImpl.getInstance());
 152.124 +        // time must be in UTC..
 152.125 +        aDate.setUtc(true);
 152.126 +        setDate(aDate);
 152.127 +    }
 152.128 +
 152.129 +    /**
 152.130 +     * @param aList a list of parameters for this component
 152.131 +     * @param aDate a date representing a date-time
 152.132 +     */
 152.133 +    public DtStamp(final ParameterList aList, final DateTime aDate) {
 152.134 +        super(DTSTAMP, aList, PropertyFactoryImpl.getInstance());
 152.135 +        // time must be in UTC..
 152.136 +        aDate.setUtc(true);
 152.137 +        setDate(aDate);
 152.138 +    }
 152.139 +}
   153.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   153.2 +++ b/src/net/fortuna/ical4j/model/property/DtStart.java	Tue Feb 10 18:12:00 2015 +0100
   153.3 @@ -0,0 +1,205 @@
   153.4 +/**
   153.5 + * Copyright (c) 2012, Ben Fortuna
   153.6 + * All rights reserved.
   153.7 + *
   153.8 + * Redistribution and use in source and binary forms, with or without
   153.9 + * modification, are permitted provided that the following conditions
  153.10 + * are met:
  153.11 + *
  153.12 + *  o Redistributions of source code must retain the above copyright
  153.13 + * notice, this list of conditions and the following disclaimer.
  153.14 + *
  153.15 + *  o Redistributions in binary form must reproduce the above copyright
  153.16 + * notice, this list of conditions and the following disclaimer in the
  153.17 + * documentation and/or other materials provided with the distribution.
  153.18 + *
  153.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  153.20 + * may be used to endorse or promote products derived from this software
  153.21 + * without specific prior written permission.
  153.22 + *
  153.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  153.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  153.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  153.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  153.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  153.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  153.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  153.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  153.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  153.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  153.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  153.34 + */
  153.35 +package net.fortuna.ical4j.model.property;
  153.36 +
  153.37 +import java.text.ParseException;
  153.38 +
  153.39 +import net.fortuna.ical4j.model.Date;
  153.40 +import net.fortuna.ical4j.model.ParameterList;
  153.41 +import net.fortuna.ical4j.model.PropertyFactoryImpl;
  153.42 +import net.fortuna.ical4j.model.TimeZone;
  153.43 +import net.fortuna.ical4j.model.ValidationException;
  153.44 +
  153.45 +/**
  153.46 + * $Id$
  153.47 + * 
  153.48 + * Created: [Apr 6, 2004]
  153.49 + *
  153.50 + * Defines a DTSTART iCalendar component property.
  153.51 + * 
  153.52 + * <pre>
  153.53 + *     4.8.2.4 Date/Time Start
  153.54 + *     
  153.55 + *        Property Name: DTSTART
  153.56 + *     
  153.57 + *        Purpose: This property specifies when the calendar component begins.
  153.58 + *     
  153.59 + *        Value Type: The default value type is DATE-TIME. The time value MUST
  153.60 + *        be one of the forms defined for the DATE-TIME value type. The value
  153.61 + *        type can be set to a DATE value type.
  153.62 + *     
  153.63 + *        Property Parameters: Non-standard, value data type, time zone
  153.64 + *        identifier property parameters can be specified on this property.
  153.65 + *     
  153.66 + *        Conformance: This property can be specified in the &quot;VEVENT&quot;, &quot;VTODO&quot;,
  153.67 + *        &quot;VFREEBUSY&quot;, or &quot;VTIMEZONE&quot; calendar components.
  153.68 + *     
  153.69 + *        Description: Within the &quot;VEVENT&quot; calendar component, this property
  153.70 + *        defines the start date and time for the event. The property is
  153.71 + *        REQUIRED in &quot;VEVENT&quot; calendar components. Events can have a start
  153.72 + *        date/time but no end date/time. In that case, the event does not take
  153.73 + *        up any time.
  153.74 + *     
  153.75 + *        Within the &quot;VFREEBUSY&quot; calendar component, this property defines the
  153.76 + *        start date and time for the free or busy time information. The time
  153.77 + *        MUST be specified in UTC time.
  153.78 + *     
  153.79 + *        Within the &quot;VTIMEZONE&quot; calendar component, this property defines the
  153.80 + *        effective start date and time for a time zone specification. This
  153.81 + *        property is REQUIRED within each STANDARD and DAYLIGHT part included
  153.82 + *        in &quot;VTIMEZONE&quot; calendar components and MUST be specified as a local
  153.83 + *        DATE-TIME without the &quot;TZID&quot; property parameter.
  153.84 + *     
  153.85 + *        Format Definition: The property is defined by the following notation:
  153.86 + *     
  153.87 + *          dtstart    = &quot;DTSTART&quot; dtstparam &quot;:&quot; dtstval CRLF
  153.88 + *     
  153.89 + *          dtstparam  = *(
  153.90 + *     
  153.91 + *                     ; the following are optional,
  153.92 + *                     ; but MUST NOT occur more than once
  153.93 + *     
  153.94 + *                     (&quot;;&quot; &quot;VALUE&quot; &quot;=&quot; (&quot;DATE-TIME&quot; / &quot;DATE&quot;)) /
  153.95 + *                     (&quot;;&quot; tzidparam) /
  153.96 + *     
  153.97 + *                     ; the following is optional,
  153.98 + *                     ; and MAY occur more than once
  153.99 + *     
 153.100 + *                       *(&quot;;&quot; xparam)
 153.101 + *     
 153.102 + *                     )
 153.103 + *     
 153.104 + *     
 153.105 + *     
 153.106 + *          dtstval    = date-time / date
 153.107 + *          ;Value MUST match value type
 153.108 + * </pre>
 153.109 + * 
 153.110 + * @author Ben Fortuna
 153.111 + */
 153.112 +public class DtStart extends DateProperty {
 153.113 +
 153.114 +    private static final long serialVersionUID = -5707097476081111815L;
 153.115 +
 153.116 +    /**
 153.117 +     * Default constructor. The time value is initialised to the time of instantiation.
 153.118 +     */
 153.119 +    public DtStart() {
 153.120 +        super(DTSTART, PropertyFactoryImpl.getInstance());
 153.121 +    }
 153.122 +
 153.123 +    /**
 153.124 +     * Creates a new DTSTART property initialised with the specified timezone.
 153.125 +     * @param timezone initial timezone
 153.126 +     */
 153.127 +    public DtStart(TimeZone timezone) {
 153.128 +        super(DTSTART, timezone, PropertyFactoryImpl.getInstance());
 153.129 +    }
 153.130 +
 153.131 +    /**
 153.132 +     * @param aValue a value string for this component
 153.133 +     * @throws ParseException where the specified value string is not a valid date-time/date representation
 153.134 +     */
 153.135 +    public DtStart(final String aValue) throws ParseException {
 153.136 +        super(DTSTART, PropertyFactoryImpl.getInstance());
 153.137 +        setValue(aValue);
 153.138 +    }
 153.139 +
 153.140 +    /**
 153.141 +     * Creates a new DTSTART property initialised with the specified timezone and value.
 153.142 +     * @param value a string representation of a DTSTART value
 153.143 +     * @param timezone initial timezone
 153.144 +     * @throws ParseException where the specified value is not a valid string
 153.145 +     * representation
 153.146 +     */
 153.147 +    public DtStart(String value, TimeZone timezone) throws ParseException {
 153.148 +        super(DTSTART, timezone, PropertyFactoryImpl.getInstance());
 153.149 +        setValue(value);
 153.150 +    }
 153.151 +
 153.152 +    /**
 153.153 +     * @param aList a list of parameters for this component
 153.154 +     * @param aValue a value string for this component
 153.155 +     * @throws ParseException where the specified value string is not a valid date-time/date representation
 153.156 +     */
 153.157 +    public DtStart(final ParameterList aList, final String aValue)
 153.158 +            throws ParseException {
 153.159 +        super(DTSTART, aList, PropertyFactoryImpl.getInstance());
 153.160 +        setValue(aValue);
 153.161 +    }
 153.162 +
 153.163 +    /**
 153.164 +     * Constructor. Date or Date-Time format is determined based on the presence of a VALUE parameter.
 153.165 +     * @param aDate a date
 153.166 +     */
 153.167 +    public DtStart(final Date aDate) {
 153.168 +        super(DTSTART, PropertyFactoryImpl.getInstance());
 153.169 +        setDate(aDate);
 153.170 +    }
 153.171 +
 153.172 +    /**
 153.173 +     * Constructs a new DtStart with the specified time.
 153.174 +     * @param time the time of the DtStart
 153.175 +     * @param utc specifies whether time is UTC
 153.176 +     */
 153.177 +    public DtStart(final Date time, final boolean utc) {
 153.178 +        super(DTSTART, PropertyFactoryImpl.getInstance());
 153.179 +        setDate(time);
 153.180 +        setUtc(utc);
 153.181 +    }
 153.182 +
 153.183 +    /**
 153.184 +     * Constructor. Date or Date-Time format is determined based on the presence of a VALUE parameter.
 153.185 +     * @param aList a list of parameters for this component
 153.186 +     * @param aDate a date
 153.187 +     */
 153.188 +    public DtStart(final ParameterList aList, final Date aDate) {
 153.189 +        super(DTSTART, aList, PropertyFactoryImpl.getInstance());
 153.190 +        setDate(aDate);
 153.191 +    }
 153.192 +
 153.193 +    /**
 153.194 +     * {@inheritDoc}
 153.195 +     */
 153.196 +    public final void validate() throws ValidationException {
 153.197 +        super.validate();
 153.198 +
 153.199 +        /*
 153.200 +         * ; the following are optional, ; but MUST NOT occur more than once (";" "VALUE" "=" ("DATE-TIME" / "DATE")) /
 153.201 +         * (";" tzidparam) /
 153.202 +         */
 153.203 +
 153.204 +        /*
 153.205 +         * ; the following is optional, ; and MAY occur more than once (";" xparam)
 153.206 +         */
 153.207 +    }
 153.208 +}
   154.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   154.2 +++ b/src/net/fortuna/ical4j/model/property/Due.java	Tue Feb 10 18:12:00 2015 +0100
   154.3 @@ -0,0 +1,184 @@
   154.4 +/**
   154.5 + * Copyright (c) 2012, Ben Fortuna
   154.6 + * All rights reserved.
   154.7 + *
   154.8 + * Redistribution and use in source and binary forms, with or without
   154.9 + * modification, are permitted provided that the following conditions
  154.10 + * are met:
  154.11 + *
  154.12 + *  o Redistributions of source code must retain the above copyright
  154.13 + * notice, this list of conditions and the following disclaimer.
  154.14 + *
  154.15 + *  o Redistributions in binary form must reproduce the above copyright
  154.16 + * notice, this list of conditions and the following disclaimer in the
  154.17 + * documentation and/or other materials provided with the distribution.
  154.18 + *
  154.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  154.20 + * may be used to endorse or promote products derived from this software
  154.21 + * without specific prior written permission.
  154.22 + *
  154.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  154.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  154.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  154.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  154.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  154.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  154.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  154.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  154.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  154.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  154.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  154.34 + */
  154.35 +package net.fortuna.ical4j.model.property;
  154.36 +
  154.37 +import java.text.ParseException;
  154.38 +
  154.39 +import net.fortuna.ical4j.model.Date;
  154.40 +import net.fortuna.ical4j.model.DateTime;
  154.41 +import net.fortuna.ical4j.model.ParameterList;
  154.42 +import net.fortuna.ical4j.model.PropertyFactoryImpl;
  154.43 +import net.fortuna.ical4j.model.TimeZone;
  154.44 +import net.fortuna.ical4j.model.ValidationException;
  154.45 +
  154.46 +/**
  154.47 + * $Id$
  154.48 + * 
  154.49 + * Created: [Apr 6, 2004]
  154.50 + *
  154.51 + * Defines a DUE iCalendar component property.
  154.52 + * 
  154.53 + * <pre>
  154.54 + *     4.8.2.3 Date/Time Due
  154.55 + *     
  154.56 + *        Property Name: DUE
  154.57 + *     
  154.58 + *        Purpose: This property defines the date and time that a to-do is
  154.59 + *        expected to be completed.
  154.60 + *     
  154.61 + *        Value Type: The default value type is DATE-TIME. The value type can
  154.62 + *        be set to a DATE value type.
  154.63 + *     
  154.64 + *        Property Parameters: Non-standard, value data type, time zone
  154.65 + *        identifier property parameters can be specified on this property.
  154.66 + *     
  154.67 + *        Conformance: The property can be specified once in a &quot;VTODO&quot; calendar
  154.68 + *        component.
  154.69 + *     
  154.70 + *        Description: The value MUST be a date/time equal to or after the
  154.71 + *        DTSTART value, if specified.
  154.72 + *     
  154.73 + *        Format Definition: The property is defined by the following notation:
  154.74 + *     
  154.75 + *          due        = &quot;DUE&quot; dueparam&quot;:&quot; dueval CRLF
  154.76 + *     
  154.77 + *          dueparam   = *(
  154.78 + *                     ; the following are optional,
  154.79 + *                     ; but MUST NOT occur more than once
  154.80 + *     
  154.81 + *                     (&quot;;&quot; &quot;VALUE&quot; &quot;=&quot; (&quot;DATE-TIME&quot; / &quot;DATE&quot;)) /
  154.82 + *                     (&quot;;&quot; tzidparam) /
  154.83 + *     
  154.84 + *                     ; the following is optional,
  154.85 + *                     ; and MAY occur more than once
  154.86 + *     
  154.87 + *                       *(&quot;;&quot; xparam)
  154.88 + *     
  154.89 + *                     )
  154.90 + *     
  154.91 + *     
  154.92 + *     
  154.93 + *          dueval     = date-time / date
  154.94 + *          ;Value MUST match value type
  154.95 + * </pre>
  154.96 + * 
  154.97 + * @author Ben Fortuna
  154.98 + */
  154.99 +public class Due extends DateProperty {
 154.100 +
 154.101 +    private static final long serialVersionUID = -2965312347832730406L;
 154.102 +
 154.103 +    /**
 154.104 +     * Default constructor. The time value is initialised to the time of instantiation.
 154.105 +     */
 154.106 +    public Due() {
 154.107 +        super(DUE, PropertyFactoryImpl.getInstance());
 154.108 +        // defaults to UTC time..
 154.109 +        setDate(new DateTime(true));
 154.110 +    }
 154.111 +
 154.112 +    /**
 154.113 +     * Creates a new DUE property initialised with the specified timezone.
 154.114 +     * @param timezone initial timezone
 154.115 +     */
 154.116 +    public Due(TimeZone timezone) {
 154.117 +        super(DUE, timezone, PropertyFactoryImpl.getInstance());
 154.118 +    }
 154.119 +
 154.120 +    /**
 154.121 +     * Creates a new instance initialised with the parsed value.
 154.122 +     * @param value the DUE value string to parse
 154.123 +     * @throws ParseException where the specified string is not a valid DUE value representation
 154.124 +     */
 154.125 +    public Due(final String value) throws ParseException {
 154.126 +        super(DUE, PropertyFactoryImpl.getInstance());
 154.127 +        setValue(value);
 154.128 +    }
 154.129 +
 154.130 +    /**
 154.131 +     * Creates a new DUE property initialised with the specified timezone and value.
 154.132 +     * @param value a string representation of a DUE value
 154.133 +     * @param timezone initial timezone
 154.134 +     * @throws ParseException where the specified value is not a valid string
 154.135 +     * representation
 154.136 +     */
 154.137 +    public Due(String value, TimeZone timezone) throws ParseException {
 154.138 +        super(DUE, timezone, PropertyFactoryImpl.getInstance());
 154.139 +        setValue(value);
 154.140 +    }
 154.141 +
 154.142 +    /**
 154.143 +     * @param aList a list of parameters for this component
 154.144 +     * @param aValue a value string for this component
 154.145 +     * @throws ParseException when the specified string is not a valid date/date-time representation
 154.146 +     */
 154.147 +    public Due(final ParameterList aList, final String aValue)
 154.148 +            throws ParseException {
 154.149 +        super(DUE, aList, PropertyFactoryImpl.getInstance());
 154.150 +        setValue(aValue);
 154.151 +    }
 154.152 +
 154.153 +    /**
 154.154 +     * Constructor. Date or Date-Time format is determined based on the presence of a VALUE parameter.
 154.155 +     * @param aDate a date
 154.156 +     */
 154.157 +    public Due(final Date aDate) {
 154.158 +        super(DUE, PropertyFactoryImpl.getInstance());
 154.159 +        setDate(aDate);
 154.160 +    }
 154.161 +
 154.162 +    /**
 154.163 +     * Constructor. Date or Date-Time format is determined based on the presence of a VALUE parameter.
 154.164 +     * @param aList a list of parameters for this component
 154.165 +     * @param aDate a date
 154.166 +     */
 154.167 +    public Due(final ParameterList aList, final Date aDate) {
 154.168 +        super(DUE, aList, PropertyFactoryImpl.getInstance());
 154.169 +        setDate(aDate);
 154.170 +    }
 154.171 +
 154.172 +    /**
 154.173 +     * {@inheritDoc}
 154.174 +     */
 154.175 +    public final void validate() throws ValidationException {
 154.176 +        super.validate();
 154.177 +
 154.178 +        /*
 154.179 +         * ; the following are optional, ; but MUST NOT occur more than once (";" "VALUE" "=" ("DATE-TIME" / "DATE")) /
 154.180 +         * (";" tzidparam) /
 154.181 +         */
 154.182 +
 154.183 +        /*
 154.184 +         * ; the following is optional, ; and MAY occur more than once (";" xparam)
 154.185 +         */
 154.186 +    }
 154.187 +}
   155.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   155.2 +++ b/src/net/fortuna/ical4j/model/property/Duration.java	Tue Feb 10 18:12:00 2015 +0100
   155.3 @@ -0,0 +1,175 @@
   155.4 +/**
   155.5 + * Copyright (c) 2012, Ben Fortuna
   155.6 + * All rights reserved.
   155.7 + *
   155.8 + * Redistribution and use in source and binary forms, with or without
   155.9 + * modification, are permitted provided that the following conditions
  155.10 + * are met:
  155.11 + *
  155.12 + *  o Redistributions of source code must retain the above copyright
  155.13 + * notice, this list of conditions and the following disclaimer.
  155.14 + *
  155.15 + *  o Redistributions in binary form must reproduce the above copyright
  155.16 + * notice, this list of conditions and the following disclaimer in the
  155.17 + * documentation and/or other materials provided with the distribution.
  155.18 + *
  155.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  155.20 + * may be used to endorse or promote products derived from this software
  155.21 + * without specific prior written permission.
  155.22 + *
  155.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  155.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  155.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  155.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  155.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  155.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  155.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  155.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  155.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  155.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  155.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  155.34 + */
  155.35 +package net.fortuna.ical4j.model.property;
  155.36 +
  155.37 +import java.util.Date;
  155.38 +
  155.39 +import net.fortuna.ical4j.model.Dur;
  155.40 +import net.fortuna.ical4j.model.ParameterList;
  155.41 +import net.fortuna.ical4j.model.Property;
  155.42 +import net.fortuna.ical4j.model.PropertyFactoryImpl;
  155.43 +import net.fortuna.ical4j.model.ValidationException;
  155.44 +
  155.45 +/**
  155.46 + * $Id$
  155.47 + * 
  155.48 + * Created: [Apr 6, 2004]
  155.49 + *
  155.50 + * Defines a DURATION iCalendar component property.
  155.51 + * 
  155.52 + * <pre>
  155.53 + *     4.3.6   Duration
  155.54 + *     
  155.55 + *        Value Name: DURATION
  155.56 + *     
  155.57 + *        Purpose: This value type is used to identify properties that contain
  155.58 + *        a duration of time.
  155.59 + *     
  155.60 + *        Formal Definition: The value type is defined by the following
  155.61 + *        notation:
  155.62 + *     
  155.63 + *          dur-value  = ([&quot;+&quot;] / &quot;-&quot;) &quot;P&quot; (dur-date / dur-time / dur-week)
  155.64 + *     
  155.65 + *          dur-date   = dur-day [dur-time]
  155.66 + *          dur-time   = &quot;T&quot; (dur-hour / dur-minute / dur-second)
  155.67 + *          dur-week   = 1*DIGIT &quot;W&quot;
  155.68 + *          dur-hour   = 1*DIGIT &quot;H&quot; [dur-minute]
  155.69 + *          dur-minute = 1*DIGIT &quot;M&quot; [dur-second]
  155.70 + *          dur-second = 1*DIGIT &quot;S&quot;
  155.71 + *          dur-day    = 1*DIGIT &quot;D&quot;
  155.72 + *     
  155.73 + *        Description: If the property permits, multiple &quot;duration&quot; values are
  155.74 + *        specified by a COMMA character (US-ASCII decimal 44) separated list
  155.75 + *        of values. The format is expressed as the [ISO 8601] basic format for
  155.76 + *        the duration of time. The format can represent durations in terms of
  155.77 + *        weeks, days, hours, minutes, and seconds.
  155.78 + *     
  155.79 + *        No additional content value encoding (i.e., BACKSLASH character
  155.80 + *        encoding) are defined for this value type.
  155.81 + *     
  155.82 + *        Example: A duration of 15 days, 5 hours and 20 seconds would be:
  155.83 + *     
  155.84 + *          P15DT5H0M20S
  155.85 + *     
  155.86 + *        A duration of 7 weeks would be:
  155.87 + *     
  155.88 + *          P7W
  155.89 + * </pre>
  155.90 + * 
  155.91 + * @author Ben Fortuna
  155.92 + */
  155.93 +public class Duration extends Property {
  155.94 +
  155.95 +    private static final long serialVersionUID = 9144969653829796798L;
  155.96 +
  155.97 +    private Dur duration;
  155.98 +
  155.99 +    /**
 155.100 +     * Default constructor.
 155.101 +     */
 155.102 +    public Duration() {
 155.103 +        super(DURATION, PropertyFactoryImpl.getInstance());
 155.104 +    }
 155.105 +
 155.106 +    /**
 155.107 +     * @param aList a list of parameters for this component
 155.108 +     * @param aValue a value string for this component
 155.109 +     */
 155.110 +    public Duration(final ParameterList aList, final String aValue) {
 155.111 +        super(DURATION, aList, PropertyFactoryImpl.getInstance());
 155.112 +        setValue(aValue);
 155.113 +    }
 155.114 +
 155.115 +    /**
 155.116 +     * @param duration a duration  value
 155.117 +     */
 155.118 +    public Duration(final Dur duration) {
 155.119 +        super(DURATION, PropertyFactoryImpl.getInstance());
 155.120 +        this.duration = duration;
 155.121 +    }
 155.122 +
 155.123 +    /**
 155.124 +     * @param aList a list of parameters for this component
 155.125 +     * @param duration a duration value
 155.126 +     */
 155.127 +    public Duration(final ParameterList aList, final Dur duration) {
 155.128 +        super(DURATION, aList, PropertyFactoryImpl.getInstance());
 155.129 +        setDuration(duration);
 155.130 +    }
 155.131 +
 155.132 +    /**
 155.133 +     * Constructs a new duration representing the time between the specified start date and end date.
 155.134 +     * @param start the starting time for the duration
 155.135 +     * @param end the end time for the duration
 155.136 +     */
 155.137 +    public Duration(final Date start, final Date end) {
 155.138 +        super(DURATION, PropertyFactoryImpl.getInstance());
 155.139 +        setDuration(new Dur(start, end));
 155.140 +    }
 155.141 +
 155.142 +    /**
 155.143 +     * @return Returns the duration.
 155.144 +     */
 155.145 +    public final Dur getDuration() {
 155.146 +        return duration;
 155.147 +    }
 155.148 +
 155.149 +    /**
 155.150 +     * {@inheritDoc}
 155.151 +     */
 155.152 +    public final void setValue(final String aValue) {
 155.153 +        // duration = DurationFormat.getInstance().parse(aValue);
 155.154 +        duration = new Dur(aValue);
 155.155 +    }
 155.156 +
 155.157 +    /**
 155.158 +     * {@inheritDoc}
 155.159 +     */
 155.160 +    public final String getValue() {
 155.161 +        // return DurationFormat.getInstance().format(getDuration());
 155.162 +        return duration.toString();
 155.163 +    }
 155.164 +
 155.165 +    /**
 155.166 +     * @param duration The duration to set.
 155.167 +     */
 155.168 +    public final void setDuration(final Dur duration) {
 155.169 +        this.duration = duration;
 155.170 +    }
 155.171 +
 155.172 +    /**
 155.173 +     * {@inheritDoc}
 155.174 +     */
 155.175 +    public final void validate() throws ValidationException {
 155.176 +        // TODO: Auto-generated method stub
 155.177 +    }
 155.178 +}
   156.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   156.2 +++ b/src/net/fortuna/ical4j/model/property/ExDate.java	Tue Feb 10 18:12:00 2015 +0100
   156.3 @@ -0,0 +1,116 @@
   156.4 +/**
   156.5 + * Copyright (c) 2012, Ben Fortuna
   156.6 + * All rights reserved.
   156.7 + *
   156.8 + * Redistribution and use in source and binary forms, with or without
   156.9 + * modification, are permitted provided that the following conditions
  156.10 + * are met:
  156.11 + *
  156.12 + *  o Redistributions of source code must retain the above copyright
  156.13 + * notice, this list of conditions and the following disclaimer.
  156.14 + *
  156.15 + *  o Redistributions in binary form must reproduce the above copyright
  156.16 + * notice, this list of conditions and the following disclaimer in the
  156.17 + * documentation and/or other materials provided with the distribution.
  156.18 + *
  156.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  156.20 + * may be used to endorse or promote products derived from this software
  156.21 + * without specific prior written permission.
  156.22 + *
  156.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  156.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  156.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  156.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  156.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  156.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  156.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  156.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  156.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  156.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  156.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  156.34 + */
  156.35 +package net.fortuna.ical4j.model.property;
  156.36 +
  156.37 +import java.text.ParseException;
  156.38 +
  156.39 +import net.fortuna.ical4j.model.DateList;
  156.40 +import net.fortuna.ical4j.model.Parameter;
  156.41 +import net.fortuna.ical4j.model.ParameterList;
  156.42 +import net.fortuna.ical4j.model.PropertyFactoryImpl;
  156.43 +import net.fortuna.ical4j.model.ValidationException;
  156.44 +import net.fortuna.ical4j.model.parameter.Value;
  156.45 +import net.fortuna.ical4j.util.ParameterValidator;
  156.46 +
  156.47 +/**
  156.48 + * $Id$
  156.49 + * 
  156.50 + * Created: [Apr 6, 2004]
  156.51 + *
  156.52 + * Defines a EXDATE iCalendar component property.
  156.53 + * @author benf
  156.54 + */
  156.55 +public class ExDate extends DateListProperty {
  156.56 +
  156.57 +    private static final long serialVersionUID = 2635730172243974463L;
  156.58 +
  156.59 +    /**
  156.60 +     * Default constructor.
  156.61 +     */
  156.62 +    public ExDate() {
  156.63 +        super(EXDATE, PropertyFactoryImpl.getInstance());
  156.64 +    }
  156.65 +
  156.66 +    /**
  156.67 +     * @param aList a list of parameters for this component
  156.68 +     * @param aValue a value string for this component
  156.69 +     * @throws ParseException where the specified value string is not a valid date-time/date representation
  156.70 +     */
  156.71 +    public ExDate(final ParameterList aList, final String aValue)
  156.72 +            throws ParseException {
  156.73 +        super(EXDATE, aList, PropertyFactoryImpl.getInstance());
  156.74 +        setValue(aValue);
  156.75 +    }
  156.76 +
  156.77 +    /**
  156.78 +     * @param dList a list of dates
  156.79 +     */
  156.80 +    public ExDate(final DateList dList) {
  156.81 +        super(EXDATE, dList, PropertyFactoryImpl.getInstance());
  156.82 +    }
  156.83 +
  156.84 +    /**
  156.85 +     * @param aList a list of parameters for this component
  156.86 +     * @param dList a list of dates
  156.87 +     */
  156.88 +    public ExDate(final ParameterList aList, final DateList dList) {
  156.89 +        super(EXDATE, aList, dList, PropertyFactoryImpl.getInstance());
  156.90 +    }
  156.91 +
  156.92 +    /**
  156.93 +     * {@inheritDoc}
  156.94 +     */
  156.95 +    public final void validate() throws ValidationException {
  156.96 +
  156.97 +        /*
  156.98 +         * ; the following are optional, ; but MUST NOT occur more than once (";" "VALUE" "=" ("DATE-TIME" / "DATE")) /
  156.99 +         * (";" tzidparam) /
 156.100 +         */
 156.101 +        ParameterValidator.getInstance().assertOneOrLess(Parameter.VALUE,
 156.102 +                getParameters());
 156.103 +
 156.104 +        final Parameter valueParam = getParameter(Parameter.VALUE);
 156.105 +
 156.106 +        if (valueParam != null && !Value.DATE_TIME.equals(valueParam)
 156.107 +                && !Value.DATE.equals(valueParam)) {
 156.108 +            throw new ValidationException("Parameter [" + Parameter.VALUE
 156.109 +                    + "] is invalid");
 156.110 +        }
 156.111 +
 156.112 +        ParameterValidator.getInstance().assertOneOrLess(Parameter.TZID,
 156.113 +                getParameters());
 156.114 +
 156.115 +        /*
 156.116 +         * ; the following is optional, ; and MAY occur more than once (";" xparam)
 156.117 +         */
 156.118 +    }
 156.119 +}
   157.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   157.2 +++ b/src/net/fortuna/ical4j/model/property/ExRule.java	Tue Feb 10 18:12:00 2015 +0100
   157.3 @@ -0,0 +1,127 @@
   157.4 +/**
   157.5 + * Copyright (c) 2012, Ben Fortuna
   157.6 + * All rights reserved.
   157.7 + *
   157.8 + * Redistribution and use in source and binary forms, with or without
   157.9 + * modification, are permitted provided that the following conditions
  157.10 + * are met:
  157.11 + *
  157.12 + *  o Redistributions of source code must retain the above copyright
  157.13 + * notice, this list of conditions and the following disclaimer.
  157.14 + *
  157.15 + *  o Redistributions in binary form must reproduce the above copyright
  157.16 + * notice, this list of conditions and the following disclaimer in the
  157.17 + * documentation and/or other materials provided with the distribution.
  157.18 + *
  157.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  157.20 + * may be used to endorse or promote products derived from this software
  157.21 + * without specific prior written permission.
  157.22 + *
  157.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  157.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  157.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  157.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  157.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  157.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  157.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  157.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  157.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  157.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  157.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  157.34 + */
  157.35 +package net.fortuna.ical4j.model.property;
  157.36 +
  157.37 +import java.text.ParseException;
  157.38 +
  157.39 +import net.fortuna.ical4j.model.ParameterList;
  157.40 +import net.fortuna.ical4j.model.Property;
  157.41 +import net.fortuna.ical4j.model.PropertyFactoryImpl;
  157.42 +import net.fortuna.ical4j.model.Recur;
  157.43 +import net.fortuna.ical4j.model.ValidationException;
  157.44 +
  157.45 +/**
  157.46 + * $Id$
  157.47 + * 
  157.48 + * Created: [Apr 6, 2004]
  157.49 + *
  157.50 + * Defines a EXRULE iCalendar component property.
  157.51 + * @author benf
  157.52 + */
  157.53 +public class ExRule extends Property {
  157.54 +
  157.55 +    private static final long serialVersionUID = -9171193801247139294L;
  157.56 +
  157.57 +    private Recur recur;
  157.58 +
  157.59 +    /**
  157.60 +     * Default constructor.
  157.61 +     */
  157.62 +    public ExRule() {
  157.63 +        super(EXRULE, PropertyFactoryImpl.getInstance());
  157.64 +        recur = new Recur(Recur.DAILY, 1);
  157.65 +    }
  157.66 +
  157.67 +    /**
  157.68 +     * @param aList a list of parameters for this component
  157.69 +     * @param aValue a value string for this component
  157.70 +     * @throws ParseException thrown when the specified string is not a valid representaton of a recurrence
  157.71 +     * @see Recur#Recur(String)
  157.72 +     */
  157.73 +    public ExRule(final ParameterList aList, final String aValue)
  157.74 +            throws ParseException {
  157.75 +        super(EXRULE, aList, PropertyFactoryImpl.getInstance());
  157.76 +        setValue(aValue);
  157.77 +    }
  157.78 +
  157.79 +    /**
  157.80 +     * @param aRecur a recurrence
  157.81 +     */
  157.82 +    public ExRule(final Recur aRecur) {
  157.83 +        super(EXRULE, PropertyFactoryImpl.getInstance());
  157.84 +        recur = aRecur;
  157.85 +    }
  157.86 +
  157.87 +    /**
  157.88 +     * @param aList a list of parameters for this component
  157.89 +     * @param aRecur a recurrence
  157.90 +     */
  157.91 +    public ExRule(final ParameterList aList, final Recur aRecur) {
  157.92 +        super(EXRULE, aList, PropertyFactoryImpl.getInstance());
  157.93 +        recur = aRecur;
  157.94 +    }
  157.95 +
  157.96 +    /**
  157.97 +     * @return Returns the recur.
  157.98 +     */
  157.99 +    public final Recur getRecur() {
 157.100 +        return recur;
 157.101 +    }
 157.102 +
 157.103 +    /**
 157.104 +     * {@inheritDoc}
 157.105 +     */
 157.106 +    public final void setValue(final String aValue) throws ParseException {
 157.107 +        recur = new Recur(aValue);
 157.108 +    }
 157.109 +
 157.110 +    /**
 157.111 +     * {@inheritDoc}
 157.112 +     */
 157.113 +    public final String getValue() {
 157.114 +        return getRecur().toString();
 157.115 +    }
 157.116 +
 157.117 +    /**
 157.118 +     * @param recur The recur to set.
 157.119 +     */
 157.120 +    public final void setRecur(final Recur recur) {
 157.121 +        this.recur = recur;
 157.122 +    }
 157.123 +
 157.124 +    /**
 157.125 +     * {@inheritDoc}
 157.126 +     */
 157.127 +    public final void validate() throws ValidationException {
 157.128 +        // TODO: Auto-generated method stub
 157.129 +    }
 157.130 +}
   158.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   158.2 +++ b/src/net/fortuna/ical4j/model/property/ExtendedAddress.java	Tue Feb 10 18:12:00 2015 +0100
   158.3 @@ -0,0 +1,102 @@
   158.4 +/**
   158.5 + * Copyright (c) 2012, Ben Fortuna
   158.6 + * All rights reserved.
   158.7 + *
   158.8 + * Redistribution and use in source and binary forms, with or without
   158.9 + * modification, are permitted provided that the following conditions
  158.10 + * are met:
  158.11 + *
  158.12 + *  o Redistributions of source code must retain the above copyright
  158.13 + * notice, this list of conditions and the following disclaimer.
  158.14 + *
  158.15 + *  o Redistributions in binary form must reproduce the above copyright
  158.16 + * notice, this list of conditions and the following disclaimer in the
  158.17 + * documentation and/or other materials provided with the distribution.
  158.18 + *
  158.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  158.20 + * may be used to endorse or promote products derived from this software
  158.21 + * without specific prior written permission.
  158.22 + *
  158.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  158.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  158.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  158.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  158.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  158.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  158.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  158.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  158.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  158.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  158.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  158.34 + */
  158.35 +package net.fortuna.ical4j.model.property;
  158.36 +
  158.37 +import net.fortuna.ical4j.model.Escapable;
  158.38 +import net.fortuna.ical4j.model.ParameterList;
  158.39 +import net.fortuna.ical4j.model.Property;
  158.40 +import net.fortuna.ical4j.model.PropertyFactoryImpl;
  158.41 +import net.fortuna.ical4j.model.ValidationException;
  158.42 +
  158.43 +/**
  158.44 + * $Id$
  158.45 + *
  158.46 + * Created: [Apr 6, 2004]
  158.47 + *
  158.48 + * Defines a EXTENDED_ADDRESS iCalendar component property.
  158.49 + * @author benf
  158.50 + * @author Mike Douglass
  158.51 + */
  158.52 +public class ExtendedAddress extends Property implements Escapable {
  158.53 +	
  158.54 +	private static final long serialVersionUID = 6506776332370144983L;
  158.55 +	
  158.56 +	private String value;
  158.57 +
  158.58 +    /**
  158.59 +     * Default constructor.
  158.60 +     */
  158.61 +    public ExtendedAddress() {
  158.62 +        super(EXTENDED_ADDRESS, PropertyFactoryImpl.getInstance());
  158.63 +    }
  158.64 +
  158.65 +    /**
  158.66 +     * @param aValue a value string for this component
  158.67 +     */
  158.68 +    public ExtendedAddress(final String aValue) {
  158.69 +        super(EXTENDED_ADDRESS, PropertyFactoryImpl.getInstance());
  158.70 +        setValue(aValue);
  158.71 +    }
  158.72 +
  158.73 +    /**
  158.74 +     * @param aList a list of parameters for this component
  158.75 +     * @param aValue a value string for this component
  158.76 +     */
  158.77 +    public ExtendedAddress(final ParameterList aList, final String aValue) {
  158.78 +        super(EXTENDED_ADDRESS, aList, PropertyFactoryImpl.getInstance());
  158.79 +        setValue(aValue);
  158.80 +    }
  158.81 +
  158.82 +    /**
  158.83 +     * {@inheritDoc}
  158.84 +     */
  158.85 +    public final void validate() throws ValidationException {
  158.86 +
  158.87 +        /*
  158.88 +         * ; the following is optional, ; and MAY occur more than once (";" xparam)
  158.89 +         */
  158.90 +    }
  158.91 +
  158.92 +    /**
  158.93 +     * {@inheritDoc}
  158.94 +     */
  158.95 +    public final void setValue(final String aValue) {
  158.96 +        this.value = aValue;
  158.97 +    }
  158.98 +
  158.99 +    /**
 158.100 +     * {@inheritDoc}
 158.101 +     */
 158.102 +    public final String getValue() {
 158.103 +        return value;
 158.104 +    }
 158.105 +}
   159.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   159.2 +++ b/src/net/fortuna/ical4j/model/property/FreeBusy.java	Tue Feb 10 18:12:00 2015 +0100
   159.3 @@ -0,0 +1,206 @@
   159.4 +/**
   159.5 + * Copyright (c) 2012, Ben Fortuna
   159.6 + * All rights reserved.
   159.7 + *
   159.8 + * Redistribution and use in source and binary forms, with or without
   159.9 + * modification, are permitted provided that the following conditions
  159.10 + * are met:
  159.11 + *
  159.12 + *  o Redistributions of source code must retain the above copyright
  159.13 + * notice, this list of conditions and the following disclaimer.
  159.14 + *
  159.15 + *  o Redistributions in binary form must reproduce the above copyright
  159.16 + * notice, this list of conditions and the following disclaimer in the
  159.17 + * documentation and/or other materials provided with the distribution.
  159.18 + *
  159.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  159.20 + * may be used to endorse or promote products derived from this software
  159.21 + * without specific prior written permission.
  159.22 + *
  159.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  159.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  159.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  159.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  159.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  159.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  159.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  159.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  159.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  159.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  159.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  159.34 + */
  159.35 +package net.fortuna.ical4j.model.property;
  159.36 +
  159.37 +import java.text.ParseException;
  159.38 +
  159.39 +import net.fortuna.ical4j.model.Parameter;
  159.40 +import net.fortuna.ical4j.model.ParameterList;
  159.41 +import net.fortuna.ical4j.model.PeriodList;
  159.42 +import net.fortuna.ical4j.model.Property;
  159.43 +import net.fortuna.ical4j.model.PropertyFactoryImpl;
  159.44 +import net.fortuna.ical4j.model.ValidationException;
  159.45 +import net.fortuna.ical4j.util.ParameterValidator;
  159.46 +
  159.47 +/**
  159.48 + * $Id$
  159.49 + * 
  159.50 + * Created: [Apr 14, 2004]
  159.51 + *
  159.52 + * Defines a FREEBUSY iCalendar component property.
  159.53 + * 
  159.54 + * <pre>
  159.55 + *     4.8.2.6 Free/Busy Time
  159.56 + *     
  159.57 + *        Property Name: FREEBUSY
  159.58 + *     
  159.59 + *        Purpose: The property defines one or more free or busy time
  159.60 + *        intervals.
  159.61 + *     
  159.62 + *        Value Type: PERIOD. The date and time values MUST be in an UTC time
  159.63 + *        format.
  159.64 + *     
  159.65 + *        Property Parameters: Non-standard or free/busy time type property
  159.66 + *        parameters can be specified on this property.
  159.67 + *     
  159.68 + *        Conformance: The property can be specified in a &quot;VFREEBUSY&quot; calendar
  159.69 + *        component.
  159.70 + *     
  159.71 + *        Property Parameter: &quot;FBTYPE&quot; and non-standard parameters can be
  159.72 + *        specified on this property.
  159.73 + *     
  159.74 + *        Description: These time periods can be specified as either a start
  159.75 + *        and end date-time or a start date-time and duration. The date and
  159.76 + *        time MUST be a UTC time format.
  159.77 + *     
  159.78 + *        &quot;FREEBUSY&quot; properties within the &quot;VFREEBUSY&quot; calendar component
  159.79 + *        SHOULD be sorted in ascending order, based on start time and then end
  159.80 + *        time, with the earliest periods first.
  159.81 + *     
  159.82 + *        The &quot;FREEBUSY&quot; property can specify more than one value, separated by
  159.83 + *        the COMMA character (US-ASCII decimal 44). In such cases, the
  159.84 + *        &quot;FREEBUSY&quot; property values SHOULD all be of the same &quot;FBTYPE&quot;
  159.85 + *        property parameter type (e.g., all values of a particular &quot;FBTYPE&quot;
  159.86 + *        listed together in a single property).
  159.87 + *     
  159.88 + *        Format Definition: The property is defined by the following notation:
  159.89 + *     
  159.90 + *          freebusy   = &quot;FREEBUSY&quot; fbparam &quot;:&quot; fbvalue
  159.91 + *                       CRLF
  159.92 + *     
  159.93 + *          fbparam    = *(
  159.94 + *                     ; the following is optional,
  159.95 + *                     ; but MUST NOT occur more than once
  159.96 + *     
  159.97 + *                     (&quot;;&quot; fbtypeparam) /
  159.98 + *     
  159.99 + *                     ; the following is optional,
 159.100 + *                     ; and MAY occur more than once
 159.101 + *     
 159.102 + *                     (&quot;;&quot; xparam)
 159.103 + *     
 159.104 + *                     )
 159.105 + *     
 159.106 + *          fbvalue    = period *[&quot;,&quot; period]
 159.107 + *          ;Time value MUST be in the UTC time format.
 159.108 + * </pre>
 159.109 + * 
 159.110 + * @author Ben Fortuna
 159.111 + */
 159.112 +public class FreeBusy extends Property {
 159.113 +
 159.114 +    private static final long serialVersionUID = -6415954847619338567L;
 159.115 +
 159.116 +    private PeriodList periods;
 159.117 +
 159.118 +    /**
 159.119 +     * Default constructor.
 159.120 +     */
 159.121 +    public FreeBusy() {
 159.122 +        super(FREEBUSY, PropertyFactoryImpl.getInstance());
 159.123 +        periods = new PeriodList();
 159.124 +    }
 159.125 +
 159.126 +    /**
 159.127 +     * @param aValue a freebusy value
 159.128 +     * @throws ParseException where the specified string is not a valid freebusy value
 159.129 +     */
 159.130 +    public FreeBusy(final String aValue) throws ParseException {
 159.131 +        super(FREEBUSY, PropertyFactoryImpl.getInstance());
 159.132 +        setValue(aValue);
 159.133 +    }
 159.134 +    
 159.135 +    /**
 159.136 +     * @param aList a list of parameters for this component
 159.137 +     * @param aValue a value string for this component
 159.138 +     * @throws ParseException when the specified string is not a valid list of periods
 159.139 +     */
 159.140 +    public FreeBusy(final ParameterList aList, final String aValue)
 159.141 +            throws ParseException {
 159.142 +        super(FREEBUSY, aList, PropertyFactoryImpl.getInstance());
 159.143 +        setValue(aValue);
 159.144 +    }
 159.145 +
 159.146 +    /**
 159.147 +     * @param pList a list of periods
 159.148 +     */
 159.149 +    public FreeBusy(final PeriodList pList) {
 159.150 +        super(FREEBUSY, PropertyFactoryImpl.getInstance());
 159.151 +        if (!pList.isUtc()) {
 159.152 +            throw new IllegalArgumentException("Periods must be in UTC format");
 159.153 +        }
 159.154 +        periods = pList;
 159.155 +    }
 159.156 +
 159.157 +    /**
 159.158 +     * @param aList a list of parameters for this component
 159.159 +     * @param pList a list of periods
 159.160 +     */
 159.161 +    public FreeBusy(final ParameterList aList, final PeriodList pList) {
 159.162 +        super(FREEBUSY, aList, PropertyFactoryImpl.getInstance());
 159.163 +        if (!pList.isUtc()) {
 159.164 +            throw new IllegalArgumentException("Periods must be in UTC format");
 159.165 +        }
 159.166 +        periods = pList;
 159.167 +    }
 159.168 +
 159.169 +    /**
 159.170 +     * {@inheritDoc}
 159.171 +     */
 159.172 +    public final void validate() throws ValidationException {
 159.173 +
 159.174 +        /*
 159.175 +         * ; the following is optional, ; but MUST NOT occur more than once (";" fbtypeparam) /
 159.176 +         */
 159.177 +        ParameterValidator.getInstance().assertOneOrLess(Parameter.FBTYPE,
 159.178 +                getParameters());
 159.179 +
 159.180 +        /*
 159.181 +         * ; the following is optional, ; and MAY occur more than once (";" xparam)
 159.182 +         */
 159.183 +        
 159.184 +        if (!periods.isUtc()) {
 159.185 +            throw new ValidationException("Periods must be in UTC format");
 159.186 +        }
 159.187 +    }
 159.188 +
 159.189 +    /**
 159.190 +     * @return Returns the periods.
 159.191 +     */
 159.192 +    public final PeriodList getPeriods() {
 159.193 +        return periods;
 159.194 +    }
 159.195 +
 159.196 +    /**
 159.197 +     * {@inheritDoc}
 159.198 +     */
 159.199 +    public final void setValue(final String aValue) throws ParseException {
 159.200 +        periods = new PeriodList(aValue);
 159.201 +    }
 159.202 +
 159.203 +    /**
 159.204 +     * {@inheritDoc}
 159.205 +     */
 159.206 +    public final String getValue() {
 159.207 +        return getPeriods().toString();
 159.208 +    }
 159.209 +}
   160.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   160.2 +++ b/src/net/fortuna/ical4j/model/property/Geo.java	Tue Feb 10 18:12:00 2015 +0100
   160.3 @@ -0,0 +1,253 @@
   160.4 +/**
   160.5 + * Copyright (c) 2012, Ben Fortuna
   160.6 + * All rights reserved.
   160.7 + *
   160.8 + * Redistribution and use in source and binary forms, with or without
   160.9 + * modification, are permitted provided that the following conditions
  160.10 + * are met:
  160.11 + *
  160.12 + *  o Redistributions of source code must retain the above copyright
  160.13 + * notice, this list of conditions and the following disclaimer.
  160.14 + *
  160.15 + *  o Redistributions in binary form must reproduce the above copyright
  160.16 + * notice, this list of conditions and the following disclaimer in the
  160.17 + * documentation and/or other materials provided with the distribution.
  160.18 + *
  160.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  160.20 + * may be used to endorse or promote products derived from this software
  160.21 + * without specific prior written permission.
  160.22 + *
  160.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  160.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  160.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  160.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  160.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  160.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  160.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  160.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  160.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  160.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  160.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  160.34 + */
  160.35 +package net.fortuna.ical4j.model.property;
  160.36 +
  160.37 +import java.math.BigDecimal;
  160.38 +
  160.39 +import org.apache.commons.lang.StringUtils;
  160.40 +
  160.41 +import net.fortuna.ical4j.model.ParameterList;
  160.42 +import net.fortuna.ical4j.model.Property;
  160.43 +import net.fortuna.ical4j.model.PropertyFactoryImpl;
  160.44 +import net.fortuna.ical4j.model.ValidationException;
  160.45 +
  160.46 +/**
  160.47 + * $Id$
  160.48 + *
  160.49 + * Created: [Apr 6, 2004]
  160.50 + *
  160.51 + * Defines a GEO iCalendar component property.
  160.52 + * 
  160.53 + * <pre>
  160.54 + *      4.8.1.6 Geographic Position
  160.55 + *      
  160.56 + *         Property Name: GEO
  160.57 + *      
  160.58 + *         Purpose: This property specifies information related to the global
  160.59 + *         position for the activity specified by a calendar component.
  160.60 + *      
  160.61 + *         Value Type: FLOAT. The value MUST be two SEMICOLON separated FLOAT
  160.62 + *         values.
  160.63 + *      
  160.64 + *         Property Parameters: Non-standard property parameters can be
  160.65 + *         specified on this property.
  160.66 + *      
  160.67 + *         Conformance: This property can be specified in  &quot;VEVENT&quot; or &quot;VTODO&quot;
  160.68 + *         calendar components.
  160.69 + *      
  160.70 + *         Description: The property value specifies latitude and longitude, in
  160.71 + *         that order (i.e., &quot;LAT LON&quot; ordering). The longitude represents the
  160.72 + *         location east or west of the prime meridian as a positive or negative
  160.73 + *         real number, respectively. The longitude and latitude values MAY be
  160.74 + *         specified up to six decimal places, which will allow for accuracy to
  160.75 + *         within one meter of geographical position. Receiving applications
  160.76 + *         MUST accept values of this precision and MAY truncate values of
  160.77 + *         greater precision.
  160.78 + *      
  160.79 + *         Values for latitude and longitude shall be expressed as decimal
  160.80 + *         fractions of degrees. Whole degrees of latitude shall be represented
  160.81 + *         by a two-digit decimal number ranging from 0 through 90. Whole
  160.82 + *         degrees of longitude shall be represented by a decimal number ranging
  160.83 + *         from 0 through 180. When a decimal fraction of a degree is specified,
  160.84 + *         it shall be separated from the whole number of degrees by a decimal
  160.85 + *         point.
  160.86 + *      
  160.87 + *         Latitudes north of the equator shall be specified by a plus sign (+),
  160.88 + *         or by the absence of a minus sign (-), preceding the digits
  160.89 + *         designating degrees. Latitudes south of the Equator shall be
  160.90 + *         designated by a minus sign (-) preceding the digits designating
  160.91 + *         degrees. A point on the Equator shall be assigned to the Northern
  160.92 + *         Hemisphere.
  160.93 + *      
  160.94 + *         Longitudes east of the prime meridian shall be specified by a plus
  160.95 + *         sign (+), or by the absence of a minus sign (-), preceding the digits
  160.96 + *         designating degrees. Longitudes west of the meridian shall be
  160.97 + *         designated by minus sign (-) preceding the digits designating
  160.98 + *         degrees. A point on the prime meridian shall be assigned to the
  160.99 + *         Eastern Hemisphere. A point on the 180th meridian shall be assigned
 160.100 + *         to the Western Hemisphere. One exception to this last convention is
 160.101 + *         permitted. For the special condition of describing a band of latitude
 160.102 + *         around the earth, the East Bounding Coordinate data element shall be
 160.103 + *         assigned the value +180 (180) degrees.
 160.104 + *      
 160.105 + *         Any spatial address with a latitude of +90 (90) or -90 degrees will
 160.106 + *         specify the position at the North or South Pole, respectively. The
 160.107 + *         component for longitude may have any legal value.
 160.108 + *      
 160.109 + *         With the exception of the special condition described above, this
 160.110 + *         form is specified in Department of Commerce, 1986, Representation of
 160.111 + *         geographic point locations for information interchange (Federal
 160.112 + *         Information Processing Standard 70-1):  Washington,  Department of
 160.113 + *         Commerce, National Institute of Standards and Technology.
 160.114 + *      
 160.115 + *         The simple formula for converting degrees-minutes-seconds into
 160.116 + *         decimal degrees is:
 160.117 + *      
 160.118 + *           decimal = degrees + minutes/60 + seconds/3600.
 160.119 + *      
 160.120 + *         Format Definition: The property is defined by the following notation:
 160.121 + *      
 160.122 + *           geo        = &quot;GEO&quot; geoparam &quot;:&quot; geovalue CRLF
 160.123 + *      
 160.124 + *           geoparam   = *(&quot;;&quot; xparam)
 160.125 + *      
 160.126 + *           geovalue   = float &quot;;&quot; float
 160.127 + *           ;Latitude and Longitude components
 160.128 + *      
 160.129 + *         Example: The following is an example of this property:
 160.130 + *      
 160.131 + *           GEO:37.386013;-122.082932
 160.132 + * </pre>
 160.133 + * 
 160.134 + * @author Ben Fortuna
 160.135 + */
 160.136 +public class Geo extends Property {
 160.137 +
 160.138 +    private static final long serialVersionUID = -902100715801867636L;
 160.139 +
 160.140 +    private BigDecimal latitude;
 160.141 +
 160.142 +    private BigDecimal longitude;
 160.143 +
 160.144 +    /**
 160.145 +     * Default constructor.
 160.146 +     */
 160.147 +    public Geo() {
 160.148 +        super(GEO, PropertyFactoryImpl.getInstance());
 160.149 +        latitude = BigDecimal.valueOf(0);
 160.150 +        longitude = BigDecimal.valueOf(0);
 160.151 +    }
 160.152 +
 160.153 +    /**
 160.154 +     * Creates a new instance by parsing the specified string representation.
 160.155 +     * @param value a geo value
 160.156 +     */
 160.157 +    public Geo(final String value) {
 160.158 +        super(GEO, PropertyFactoryImpl.getInstance());
 160.159 +        setValue(value);
 160.160 +    }
 160.161 +
 160.162 +    /**
 160.163 +     * @param aList a list of parameters for this component
 160.164 +     * @param aValue a value string for this component
 160.165 +     */
 160.166 +    public Geo(final ParameterList aList, final String aValue) {
 160.167 +        super(GEO, aList, PropertyFactoryImpl.getInstance());
 160.168 +        setValue(aValue);
 160.169 +    }
 160.170 +
 160.171 +    /**
 160.172 +     * @param latitude a latitudinal value
 160.173 +     * @param longitude a longitudinal value
 160.174 +     */
 160.175 +    public Geo(final BigDecimal latitude, final BigDecimal longitude) {
 160.176 +        super(GEO, PropertyFactoryImpl.getInstance());
 160.177 +        this.latitude = latitude;
 160.178 +        this.longitude = longitude;
 160.179 +    }
 160.180 +
 160.181 +    /**
 160.182 +     * @param aList a list of parameters for this component
 160.183 +     * @param latitude a latitudinal value
 160.184 +     * @param longitude a longitudinal value
 160.185 +     */
 160.186 +    public Geo(final ParameterList aList, final BigDecimal latitude,
 160.187 +            final BigDecimal longitude) {
 160.188 +        super(GEO, aList, PropertyFactoryImpl.getInstance());
 160.189 +        this.latitude = latitude;
 160.190 +        this.longitude = longitude;
 160.191 +    }
 160.192 +
 160.193 +    /**
 160.194 +     * @return Returns the latitude.
 160.195 +     */
 160.196 +    public final BigDecimal getLatitude() {
 160.197 +        return latitude;
 160.198 +    }
 160.199 +
 160.200 +    /**
 160.201 +     * @return Returns the longitude.
 160.202 +     */
 160.203 +    public final BigDecimal getLongitude() {
 160.204 +        return longitude;
 160.205 +    }
 160.206 +
 160.207 +    /**
 160.208 +     * {@inheritDoc}
 160.209 +     */
 160.210 +    public final void setValue(final String aValue) {
 160.211 +        final String latitudeString = aValue.substring(0, aValue.indexOf(';'));
 160.212 +        if (StringUtils.isNotBlank(latitudeString)) {
 160.213 +            latitude = new BigDecimal(latitudeString);
 160.214 +        }
 160.215 +        else {
 160.216 +            latitude = BigDecimal.valueOf(0);
 160.217 +        }
 160.218 +        
 160.219 +        final String longitudeString = aValue.substring(aValue.indexOf(';') + 1);
 160.220 +        if (StringUtils.isNotBlank(longitudeString)) {
 160.221 +            longitude = new BigDecimal(longitudeString);
 160.222 +        }
 160.223 +        else {
 160.224 +            longitude = BigDecimal.valueOf(0);
 160.225 +        }
 160.226 +    }
 160.227 +
 160.228 +    /**
 160.229 +     * {@inheritDoc}
 160.230 +     */
 160.231 +    public final String getValue() {
 160.232 +        return String.valueOf(getLatitude()) + ";"
 160.233 +                + String.valueOf(getLongitude());
 160.234 +    }
 160.235 +
 160.236 +    /**
 160.237 +     * @param latitude The latitude to set.
 160.238 +     */
 160.239 +    public final void setLatitude(final BigDecimal latitude) {
 160.240 +        this.latitude = latitude;
 160.241 +    }
 160.242 +
 160.243 +    /**
 160.244 +     * @param longitude The longitude to set.
 160.245 +     */
 160.246 +    public final void setLongitude(final BigDecimal longitude) {
 160.247 +        this.longitude = longitude;
 160.248 +    }
 160.249 +
 160.250 +    /**
 160.251 +     * {@inheritDoc}
 160.252 +     */
 160.253 +    public final void validate() throws ValidationException {
 160.254 +        // TODO: Auto-generated method stub
 160.255 +    }
 160.256 +}
   161.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   161.2 +++ b/src/net/fortuna/ical4j/model/property/LastModified.java	Tue Feb 10 18:12:00 2015 +0100
   161.3 @@ -0,0 +1,129 @@
   161.4 +/**
   161.5 + * Copyright (c) 2012, Ben Fortuna
   161.6 + * All rights reserved.
   161.7 + *
   161.8 + * Redistribution and use in source and binary forms, with or without
   161.9 + * modification, are permitted provided that the following conditions
  161.10 + * are met:
  161.11 + *
  161.12 + *  o Redistributions of source code must retain the above copyright
  161.13 + * notice, this list of conditions and the following disclaimer.
  161.14 + *
  161.15 + *  o Redistributions in binary form must reproduce the above copyright
  161.16 + * notice, this list of conditions and the following disclaimer in the
  161.17 + * documentation and/or other materials provided with the distribution.
  161.18 + *
  161.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  161.20 + * may be used to endorse or promote products derived from this software
  161.21 + * without specific prior written permission.
  161.22 + *
  161.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  161.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  161.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  161.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  161.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  161.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  161.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  161.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  161.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  161.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  161.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  161.34 + */
  161.35 +package net.fortuna.ical4j.model.property;
  161.36 +
  161.37 +import java.text.ParseException;
  161.38 +
  161.39 +import net.fortuna.ical4j.model.DateTime;
  161.40 +import net.fortuna.ical4j.model.ParameterList;
  161.41 +import net.fortuna.ical4j.model.PropertyFactoryImpl;
  161.42 +
  161.43 +/**
  161.44 + * $Id$
  161.45 + * 
  161.46 + * Created: [Apr 6, 2004]
  161.47 + *
  161.48 + * Defines a LAST-MODIFIED iCalendar component property.
  161.49 + * 
  161.50 + * <pre>
  161.51 + *     4.8.7.3 Last Modified
  161.52 + *     
  161.53 + *        Property Name: LAST-MODIFIED
  161.54 + *     
  161.55 + *        Purpose: The property specifies the date and time that the
  161.56 + *        information associated with the calendar component was last revised
  161.57 + *        in the calendar store.
  161.58 + *     
  161.59 + *             Note: This is analogous to the modification date and time for a
  161.60 + *             file in the file system.
  161.61 + *     
  161.62 + *        Value Type: DATE-TIME
  161.63 + *     
  161.64 + *        Property Parameters: Non-standard property parameters can be
  161.65 + *        specified on this property.
  161.66 + *     
  161.67 + *        Conformance: This property can be specified in the &quot;EVENT&quot;, &quot;VTODO&quot;,
  161.68 + *        &quot;VJOURNAL&quot; or &quot;VTIMEZONE&quot; calendar components.
  161.69 + *     
  161.70 + *        Description: The property value MUST be specified in the UTC time
  161.71 + *        format.
  161.72 + *     
  161.73 + *        Format Definition: The property is defined by the following notation:
  161.74 + *     
  161.75 + *          last-mod   = &quot;LAST-MODIFIED&quot; lstparam &quot;:&quot; date-time CRLF
  161.76 + *     
  161.77 + *          lstparam   = *(&quot;;&quot; xparam)
  161.78 + * </pre>
  161.79 + * 
  161.80 + * @author benf
  161.81 + */
  161.82 +public class LastModified extends UtcProperty {
  161.83 +
  161.84 +    private static final long serialVersionUID = 5288572652052836062L;
  161.85 +
  161.86 +    /**
  161.87 +     * Default constructor.
  161.88 +     */
  161.89 +    public LastModified() {
  161.90 +        super(LAST_MODIFIED, PropertyFactoryImpl.getInstance());
  161.91 +    }
  161.92 +
  161.93 +    /**
  161.94 +     * @param aValue a date-time value
  161.95 +     * @throws ParseException where the specified string is not a valid date-time
  161.96 +     */
  161.97 +    public LastModified(final String aValue) throws ParseException {
  161.98 +    	this(new ParameterList(), aValue);
  161.99 +    }
 161.100 +    
 161.101 +    /**
 161.102 +     * @param aList a list of parameters for this component
 161.103 +     * @param aValue a value string for this component
 161.104 +     * @throws ParseException where the specified value string is not a valid date-time/date representation
 161.105 +     */
 161.106 +    public LastModified(final ParameterList aList, final String aValue)
 161.107 +            throws ParseException {
 161.108 +        super(LAST_MODIFIED, aList, PropertyFactoryImpl.getInstance());
 161.109 +        setValue(aValue);
 161.110 +    }
 161.111 +
 161.112 +    /**
 161.113 +     * @param aDate a date representation of a date-time value
 161.114 +     */
 161.115 +    public LastModified(final DateTime aDate) {
 161.116 +        super(LAST_MODIFIED, PropertyFactoryImpl.getInstance());
 161.117 +        // time must be in UTC..
 161.118 +        aDate.setUtc(true);
 161.119 +        setDate(aDate);
 161.120 +    }
 161.121 +
 161.122 +    /**
 161.123 +     * @param aList a list of parameters for this component
 161.124 +     * @param aDate a date representation of a date-time value
 161.125 +     */
 161.126 +    public LastModified(final ParameterList aList, final DateTime aDate) {
 161.127 +        super(LAST_MODIFIED, aList, PropertyFactoryImpl.getInstance());
 161.128 +        // time must be in UTC..
 161.129 +        aDate.setUtc(true);
 161.130 +        setDate(aDate);
 161.131 +    }
 161.132 +}
   162.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   162.2 +++ b/src/net/fortuna/ical4j/model/property/Locality.java	Tue Feb 10 18:12:00 2015 +0100
   162.3 @@ -0,0 +1,102 @@
   162.4 +/**
   162.5 + * Copyright (c) 2012, Ben Fortuna
   162.6 + * All rights reserved.
   162.7 + *
   162.8 + * Redistribution and use in source and binary forms, with or without
   162.9 + * modification, are permitted provided that the following conditions
  162.10 + * are met:
  162.11 + *
  162.12 + *  o Redistributions of source code must retain the above copyright
  162.13 + * notice, this list of conditions and the following disclaimer.
  162.14 + *
  162.15 + *  o Redistributions in binary form must reproduce the above copyright
  162.16 + * notice, this list of conditions and the following disclaimer in the
  162.17 + * documentation and/or other materials provided with the distribution.
  162.18 + *
  162.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  162.20 + * may be used to endorse or promote products derived from this software
  162.21 + * without specific prior written permission.
  162.22 + *
  162.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  162.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  162.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  162.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  162.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  162.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  162.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  162.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  162.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  162.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  162.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  162.34 + */
  162.35 +package net.fortuna.ical4j.model.property;
  162.36 +
  162.37 +import net.fortuna.ical4j.model.Escapable;
  162.38 +import net.fortuna.ical4j.model.ParameterList;
  162.39 +import net.fortuna.ical4j.model.Property;
  162.40 +import net.fortuna.ical4j.model.PropertyFactoryImpl;
  162.41 +import net.fortuna.ical4j.model.ValidationException;
  162.42 +
  162.43 +/**
  162.44 + * $Id$
  162.45 + *
  162.46 + * Created: [Apr 6, 2004]
  162.47 + *
  162.48 + * Defines a LOCALITY iCalendar component property.
  162.49 + * @author benf
  162.50 + * @author Mike Douglass
  162.51 + */
  162.52 +public class Locality extends Property implements Escapable {
  162.53 +
  162.54 +	private static final long serialVersionUID = -2324296161017475527L;
  162.55 +	
  162.56 +	private String value;
  162.57 +
  162.58 +    /**
  162.59 +     * Default constructor.
  162.60 +     */
  162.61 +    public Locality() {
  162.62 +        super(LOCALITY, PropertyFactoryImpl.getInstance());
  162.63 +    }
  162.64 +
  162.65 +    /**
  162.66 +     * @param aValue a value string for this component
  162.67 +     */
  162.68 +    public Locality(final String aValue) {
  162.69 +        super(LOCALITY, PropertyFactoryImpl.getInstance());
  162.70 +        setValue(aValue);
  162.71 +    }
  162.72 +
  162.73 +    /**
  162.74 +     * @param aList a list of parameters for this component
  162.75 +     * @param aValue a value string for this component
  162.76 +     */
  162.77 +    public Locality(final ParameterList aList, final String aValue) {
  162.78 +        super(LOCALITY, aList, PropertyFactoryImpl.getInstance());
  162.79 +        setValue(aValue);
  162.80 +    }
  162.81 +
  162.82 +    /**
  162.83 +     * {@inheritDoc}
  162.84 +     */
  162.85 +    public final void validate() throws ValidationException {
  162.86 +
  162.87 +        /*
  162.88 +         * ; the following is optional, ; and MAY occur more than once (";" xparam)
  162.89 +         */
  162.90 +    }
  162.91 +
  162.92 +    /**
  162.93 +     * {@inheritDoc}
  162.94 +     */
  162.95 +    public final void setValue(final String aValue) {
  162.96 +        this.value = aValue;
  162.97 +    }
  162.98 +
  162.99 +    /**
 162.100 +     * {@inheritDoc}
 162.101 +     */
 162.102 +    public final String getValue() {
 162.103 +        return value;
 162.104 +    }
 162.105 +}
   163.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   163.2 +++ b/src/net/fortuna/ical4j/model/property/Location.java	Tue Feb 10 18:12:00 2015 +0100
   163.3 @@ -0,0 +1,165 @@
   163.4 +/**
   163.5 + * Copyright (c) 2012, Ben Fortuna
   163.6 + * All rights reserved.
   163.7 + *
   163.8 + * Redistribution and use in source and binary forms, with or without
   163.9 + * modification, are permitted provided that the following conditions
  163.10 + * are met:
  163.11 + *
  163.12 + *  o Redistributions of source code must retain the above copyright
  163.13 + * notice, this list of conditions and the following disclaimer.
  163.14 + *
  163.15 + *  o Redistributions in binary form must reproduce the above copyright
  163.16 + * notice, this list of conditions and the following disclaimer in the
  163.17 + * documentation and/or other materials provided with the distribution.
  163.18 + *
  163.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  163.20 + * may be used to endorse or promote products derived from this software
  163.21 + * without specific prior written permission.
  163.22 + *
  163.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  163.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  163.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  163.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  163.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  163.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  163.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  163.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  163.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  163.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  163.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  163.34 + */
  163.35 +package net.fortuna.ical4j.model.property;
  163.36 +
  163.37 +import net.fortuna.ical4j.model.Escapable;
  163.38 +import net.fortuna.ical4j.model.Parameter;
  163.39 +import net.fortuna.ical4j.model.ParameterList;
  163.40 +import net.fortuna.ical4j.model.Property;
  163.41 +import net.fortuna.ical4j.model.PropertyFactoryImpl;
  163.42 +import net.fortuna.ical4j.model.ValidationException;
  163.43 +import net.fortuna.ical4j.util.ParameterValidator;
  163.44 +
  163.45 +/**
  163.46 + * $Id$
  163.47 + * 
  163.48 + * Created: [Apr 6, 2004]
  163.49 + *
  163.50 + * Defines a LOCATION iCalendar component property.
  163.51 + * 
  163.52 + * <pre>
  163.53 + *     4.8.1.7 Location
  163.54 + *     
  163.55 + *        Property Name: LOCATION
  163.56 + *     
  163.57 + *        Purpose: The property defines the intended venue for the activity
  163.58 + *        defined by a calendar component.
  163.59 + *     
  163.60 + *        Value Type: TEXT
  163.61 + *     
  163.62 + *        Property Parameters: Non-standard, alternate text representation and
  163.63 + *        language property parameters can be specified on this property.
  163.64 + *     
  163.65 + *        Conformance: This property can be specified in &quot;VEVENT&quot; or &quot;VTODO&quot;
  163.66 + *        calendar component.
  163.67 + *     
  163.68 + *        Description: Specific venues such as conference or meeting rooms may
  163.69 + *        be explicitly specified using this property. An alternate
  163.70 + *        representation may be specified that is a URI that points to
  163.71 + *        directory information with more structured specification of the
  163.72 + *        location. For example, the alternate representation may specify
  163.73 + *        either an LDAP URI pointing to an LDAP server entry or a CID URI
  163.74 + *        pointing to a MIME body part containing a vCard [RFC 2426] for the
  163.75 + *        location.
  163.76 + *     
  163.77 + *        Format Definition: The property is defined by the following notation:
  163.78 + *     
  163.79 + *          location   = &quot;LOCATION locparam &quot;:&quot; text CRLF
  163.80 + *     
  163.81 + *          locparam   = *(
  163.82 + *     
  163.83 + *                     ; the following are optional,
  163.84 + *                     ; but MUST NOT occur more than once
  163.85 + *     
  163.86 + *                     (&quot;;&quot; altrepparam) / (&quot;;&quot; languageparam) /
  163.87 + *     
  163.88 + *                     ; the following is optional,
  163.89 + *                     ; and MAY occur more than once
  163.90 + *     
  163.91 + *                     (&quot;;&quot; xparam)
  163.92 + *     
  163.93 + *                     )
  163.94 + *     
  163.95 + *        Example: The following are some examples of this property:
  163.96 + *     
  163.97 + *          LOCATION:Conference Room - F123, Bldg. 002
  163.98 + *     
  163.99 + *          LOCATION;ALTREP=&quot;http://xyzcorp.com/conf-rooms/f123.vcf&quot;:
 163.100 + *           Conference Room - F123, Bldg. 002
 163.101 + * </pre>
 163.102 + * 
 163.103 + * @author Ben Fortuna
 163.104 + */
 163.105 +public class Location extends Property implements Escapable {
 163.106 +
 163.107 +    private static final long serialVersionUID = 8651881536125682401L;
 163.108 +
 163.109 +    private String value;
 163.110 +
 163.111 +    /**
 163.112 +     * Default constructor.
 163.113 +     */
 163.114 +    public Location() {
 163.115 +        super(LOCATION, PropertyFactoryImpl.getInstance());
 163.116 +    }
 163.117 +
 163.118 +    /**
 163.119 +     * @param aValue a value string for this component
 163.120 +     */
 163.121 +    public Location(final String aValue) {
 163.122 +        super(LOCATION, PropertyFactoryImpl.getInstance());
 163.123 +        setValue(aValue);
 163.124 +    }
 163.125 +
 163.126 +    /**
 163.127 +     * @param aList a list of parameters for this component
 163.128 +     * @param aValue a value string for this component
 163.129 +     */
 163.130 +    public Location(final ParameterList aList, final String aValue) {
 163.131 +        super(LOCATION, aList, PropertyFactoryImpl.getInstance());
 163.132 +        setValue(aValue);
 163.133 +    }
 163.134 +
 163.135 +    /**
 163.136 +     * {@inheritDoc}
 163.137 +     */
 163.138 +    public final void validate() throws ValidationException {
 163.139 +
 163.140 +        /*
 163.141 +         * ; the following are optional, ; but MUST NOT occur more than once (";" altrepparam) / (";" languageparam) /
 163.142 +         */
 163.143 +        ParameterValidator.getInstance().assertOneOrLess(Parameter.ALTREP,
 163.144 +                getParameters());
 163.145 +        ParameterValidator.getInstance().assertOneOrLess(Parameter.LANGUAGE,
 163.146 +                getParameters());
 163.147 +        ParameterValidator.getInstance().assertOneOrLess(Parameter.VVENUE,
 163.148 +                getParameters());
 163.149 +
 163.150 +        /*
 163.151 +         * ; the following is optional, ; and MAY occur more than once (";" xparam)
 163.152 +         */
 163.153 +    }
 163.154 +
 163.155 +    /**
 163.156 +     * {@inheritDoc}
 163.157 +     */
 163.158 +    public final void setValue(final String aValue) {
 163.159 +        this.value = aValue;
 163.160 +    }
 163.161 +
 163.162 +    /**
 163.163 +     * {@inheritDoc}
 163.164 +     */
 163.165 +    public final String getValue() {
 163.166 +        return value;
 163.167 +    }
 163.168 +}
   164.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   164.2 +++ b/src/net/fortuna/ical4j/model/property/LocationType.java	Tue Feb 10 18:12:00 2015 +0100
   164.3 @@ -0,0 +1,134 @@
   164.4 +/**
   164.5 + * Copyright (c) 2012, Ben Fortuna
   164.6 + * All rights reserved.
   164.7 + *
   164.8 + * Redistribution and use in source and binary forms, with or without
   164.9 + * modification, are permitted provided that the following conditions
  164.10 + * are met:
  164.11 + *
  164.12 + *  o Redistributions of source code must retain the above copyright
  164.13 + * notice, this list of conditions and the following disclaimer.
  164.14 + *
  164.15 + *  o Redistributions in binary form must reproduce the above copyright
  164.16 + * notice, this list of conditions and the following disclaimer in the
  164.17 + * documentation and/or other materials provided with the distribution.
  164.18 + *
  164.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  164.20 + * may be used to endorse or promote products derived from this software
  164.21 + * without specific prior written permission.
  164.22 + *
  164.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  164.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  164.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  164.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  164.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  164.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  164.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  164.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  164.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  164.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  164.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  164.34 + */
  164.35 +package net.fortuna.ical4j.model.property;
  164.36 +
  164.37 +import net.fortuna.ical4j.model.LocationTypeList;
  164.38 +import net.fortuna.ical4j.model.Parameter;
  164.39 +import net.fortuna.ical4j.model.ParameterList;
  164.40 +import net.fortuna.ical4j.model.Property;
  164.41 +import net.fortuna.ical4j.model.PropertyFactoryImpl;
  164.42 +import net.fortuna.ical4j.model.ValidationException;
  164.43 +import net.fortuna.ical4j.util.ParameterValidator;
  164.44 +
  164.45 +/**
  164.46 + * $Id$
  164.47 + *
  164.48 + * Created: [Apr 6, 2004]
  164.49 + *
  164.50 + * Defines a LOCATION_TYPE iCalendar component property.
  164.51 + * @author benf
  164.52 + */
  164.53 +public class LocationType extends Property {
  164.54 +
  164.55 +	private static final long serialVersionUID = -3541686430899510312L;
  164.56 +
  164.57 +	private LocationTypeList locationTypes;
  164.58 +
  164.59 +    /**
  164.60 +     * Default constructor.
  164.61 +     */
  164.62 +    public LocationType() {
  164.63 +        super(LOCATION_TYPE, PropertyFactoryImpl.getInstance());
  164.64 +        locationTypes = new LocationTypeList();
  164.65 +    }
  164.66 +
  164.67 +    /**
  164.68 +     * @param aValue a value string for this component
  164.69 +     */
  164.70 +    public LocationType(final String aValue) {
  164.71 +        super(LOCATION_TYPE, PropertyFactoryImpl.getInstance());
  164.72 +        setValue(aValue);
  164.73 +    }
  164.74 +
  164.75 +    /**
  164.76 +     * @param aList a list of parameters for this component
  164.77 +     * @param aValue a value string for this component
  164.78 +     */
  164.79 +    public LocationType(final ParameterList aList, final String aValue) {
  164.80 +        super(LOCATION_TYPE, aList, PropertyFactoryImpl.getInstance());
  164.81 +        setValue(aValue);
  164.82 +    }
  164.83 +
  164.84 +    /**
  164.85 +     * @param cList a list of locationTypes
  164.86 +     */
  164.87 +    public LocationType(final LocationTypeList cList) {
  164.88 +        super(LOCATION_TYPE, PropertyFactoryImpl.getInstance());
  164.89 +        locationTypes = cList;
  164.90 +    }
  164.91 +
  164.92 +    /**
  164.93 +     * @param aList a list of parameters for this component
  164.94 +     * @param cList a list of locationTypes
  164.95 +     */
  164.96 +    public LocationType(final ParameterList aList, final LocationTypeList cList) {
  164.97 +        super(LOCATION_TYPE, aList, PropertyFactoryImpl.getInstance());
  164.98 +        locationTypes = cList;
  164.99 +    }
 164.100 +
 164.101 +    /**
 164.102 +     * {@inheritDoc}
 164.103 +     */
 164.104 +    public final void setValue(final String aValue) {
 164.105 +        locationTypes = new LocationTypeList(aValue);
 164.106 +    }
 164.107 +
 164.108 +    /**
 164.109 +     * {@inheritDoc}
 164.110 +     */
 164.111 +    public final void validate() throws ValidationException {
 164.112 +
 164.113 +        /*
 164.114 +         * ; the following is optional, ; but MUST NOT occur more than once (";" languageparam ) /
 164.115 +         */
 164.116 +        ParameterValidator.getInstance().assertOneOrLess(Parameter.LANGUAGE,
 164.117 +                getParameters());
 164.118 +
 164.119 +        /*
 164.120 +         * ; the following is optional, ; and MAY occur more than once (";" xparam)
 164.121 +         */
 164.122 +    }
 164.123 +
 164.124 +    /**
 164.125 +     * @return Returns the locationTypes.
 164.126 +     */
 164.127 +    public final LocationTypeList getLocationTypes() {
 164.128 +        return locationTypes;
 164.129 +    }
 164.130 +
 164.131 +    /**
 164.132 +     * {@inheritDoc}
 164.133 +     */
 164.134 +    public final String getValue() {
 164.135 +        return getLocationTypes().toString();
 164.136 +    }
 164.137 +}
   165.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   165.2 +++ b/src/net/fortuna/ical4j/model/property/Method.java	Tue Feb 10 18:12:00 2015 +0100
   165.3 @@ -0,0 +1,162 @@
   165.4 +/**
   165.5 + * Copyright (c) 2012, Ben Fortuna
   165.6 + * All rights reserved.
   165.7 + *
   165.8 + * Redistribution and use in source and binary forms, with or without
   165.9 + * modification, are permitted provided that the following conditions
  165.10 + * are met:
  165.11 + *
  165.12 + *  o Redistributions of source code must retain the above copyright
  165.13 + * notice, this list of conditions and the following disclaimer.
  165.14 + *
  165.15 + *  o Redistributions in binary form must reproduce the above copyright
  165.16 + * notice, this list of conditions and the following disclaimer in the
  165.17 + * documentation and/or other materials provided with the distribution.
  165.18 + *
  165.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  165.20 + * may be used to endorse or promote products derived from this software
  165.21 + * without specific prior written permission.
  165.22 + *
  165.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  165.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  165.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  165.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  165.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  165.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  165.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  165.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  165.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  165.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  165.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  165.34 + */
  165.35 +package net.fortuna.ical4j.model.property;
  165.36 +
  165.37 +import net.fortuna.ical4j.model.ParameterList;
  165.38 +import net.fortuna.ical4j.model.Property;
  165.39 +import net.fortuna.ical4j.model.PropertyFactoryImpl;
  165.40 +import net.fortuna.ical4j.model.ValidationException;
  165.41 +
  165.42 +/**
  165.43 + * $Id$
  165.44 + * 
  165.45 + * Created: [Apr 6, 2004]
  165.46 + *
  165.47 + * Defines a METHOD iCalendar property.
  165.48 + * @author benf
  165.49 + */
  165.50 +public class Method extends Property {
  165.51 +
  165.52 +    private static final long serialVersionUID = 7220956532685378719L;
  165.53 +
  165.54 +    /**
  165.55 +     * Used to publish a calendar entry to one or more Calendar Users. There is no interactivity between the publisher
  165.56 +     * and any other calendar user. An example might include a baseball team publishing its schedule to the public. [RFC
  165.57 +     * 2446]
  165.58 +     */
  165.59 +    public static final Method PUBLISH = new ImmutableMethod("PUBLISH");
  165.60 +
  165.61 +    /**
  165.62 +     * Used to schedule a calendar entry with other Calendar Users. Requests are interactive in that they require the
  165.63 +     * receiver to respond using the Reply methods. Meeting Requests, Busy Time requests and the assignment of VTODOs to
  165.64 +     * other Calendar Users are all examples. Requests are also used by the "Organizer" to update the status of a
  165.65 +     * calendar entry. [RFC 2446]
  165.66 +     */
  165.67 +    public static final Method REQUEST = new ImmutableMethod("REQUEST");
  165.68 +
  165.69 +    /**
  165.70 +     * A Reply is used in response to a Request to convey "Attendee" status to the "Organizer". Replies are commonly
  165.71 +     * used to respond to meeting and task requests. [RFC2446]
  165.72 +     */
  165.73 +    public static final Method REPLY = new ImmutableMethod("REPLY");
  165.74 +
  165.75 +    /**
  165.76 +     * Add one or more instances to an existing VEVENT, VTODO, or VJOURNAL. [RFC 2446]
  165.77 +     */
  165.78 +    public static final Method ADD = new ImmutableMethod("ADD");
  165.79 +
  165.80 +    /**
  165.81 +     * Cancel one or more instances of an existing VEVENT, VTODO, or VJOURNAL. [RFC 2446]
  165.82 +     */
  165.83 +    public static final Method CANCEL = new ImmutableMethod("CANCEL");
  165.84 +
  165.85 +    /**
  165.86 +     * The Refresh method is used by an "Attendee" to request the latest version of a calendar entry. [RFC 2446]
  165.87 +     */
  165.88 +    public static final Method REFRESH = new ImmutableMethod("REFRESH");
  165.89 +
  165.90 +    /**
  165.91 +     * The Counter method is used by an "Attendee" to negotiate a change in the calendar entry. Examples include the
  165.92 +     * request to change a proposed Event time or change the due date for a VTODO. [RFC 2446]
  165.93 +     */
  165.94 +    public static final Method COUNTER = new ImmutableMethod("COUNTER");
  165.95 +
  165.96 +    /**
  165.97 +     * Used by the "Organizer" to decline the proposed counter-proprosal. [RFC 2446]
  165.98 +     */
  165.99 +    public static final Method DECLINE_COUNTER = new ImmutableMethod(
 165.100 +            "DECLINE-COUNTER");
 165.101 +
 165.102 +    /**
 165.103 +     * @author Ben Fortuna An immutable instance of Method.
 165.104 +     */
 165.105 +    private static final class ImmutableMethod extends Method {
 165.106 +
 165.107 +        private static final long serialVersionUID = 5332607957381969713L;
 165.108 +
 165.109 +        private ImmutableMethod(final String value) {
 165.110 +            super(new ParameterList(true), value);
 165.111 +        }
 165.112 +
 165.113 +        public void setValue(final String aValue) {
 165.114 +            throw new UnsupportedOperationException(
 165.115 +                    "Cannot modify constant instances");
 165.116 +        }
 165.117 +    }
 165.118 +
 165.119 +    private String value;
 165.120 +
 165.121 +    /**
 165.122 +     * Default constructor.
 165.123 +     */
 165.124 +    public Method() {
 165.125 +        super(METHOD, PropertyFactoryImpl.getInstance());
 165.126 +    }
 165.127 +
 165.128 +    /**
 165.129 +     * @param aValue a value string for this component
 165.130 +     */
 165.131 +    public Method(final String aValue) {
 165.132 +        super(METHOD, PropertyFactoryImpl.getInstance());
 165.133 +        this.value = aValue;
 165.134 +    }
 165.135 +
 165.136 +    /**
 165.137 +     * @param aList a list of parameters for this component
 165.138 +     * @param aValue a value string for this component
 165.139 +     */
 165.140 +    public Method(final ParameterList aList, final String aValue) {
 165.141 +        super(METHOD, aList, PropertyFactoryImpl.getInstance());
 165.142 +        this.value = aValue;
 165.143 +    }
 165.144 +
 165.145 +    /**
 165.146 +     * {@inheritDoc}
 165.147 +     */
 165.148 +    public void setValue(final String aValue) {
 165.149 +        this.value = aValue;
 165.150 +    }
 165.151 +
 165.152 +    /**
 165.153 +     * {@inheritDoc}
 165.154 +     */
 165.155 +    public final String getValue() {
 165.156 +        return value;
 165.157 +    }
 165.158 +
 165.159 +    /**
 165.160 +     * {@inheritDoc}
 165.161 +     */
 165.162 +    public final void validate() throws ValidationException {
 165.163 +        // TODO: Auto-generated method stub
 165.164 +    }
 165.165 +}
   166.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   166.2 +++ b/src/net/fortuna/ical4j/model/property/Name.java	Tue Feb 10 18:12:00 2015 +0100
   166.3 @@ -0,0 +1,102 @@
   166.4 +/**
   166.5 + * Copyright (c) 2012, Ben Fortuna
   166.6 + * All rights reserved.
   166.7 + *
   166.8 + * Redistribution and use in source and binary forms, with or without
   166.9 + * modification, are permitted provided that the following conditions
  166.10 + * are met:
  166.11 + *
  166.12 + *  o Redistributions of source code must retain the above copyright
  166.13 + * notice, this list of conditions and the following disclaimer.
  166.14 + *
  166.15 + *  o Redistributions in binary form must reproduce the above copyright
  166.16 + * notice, this list of conditions and the following disclaimer in the
  166.17 + * documentation and/or other materials provided with the distribution.
  166.18 + *
  166.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  166.20 + * may be used to endorse or promote products derived from this software
  166.21 + * without specific prior written permission.
  166.22 + *
  166.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  166.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  166.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  166.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  166.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  166.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  166.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  166.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  166.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  166.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  166.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  166.34 + */
  166.35 +package net.fortuna.ical4j.model.property;
  166.36 +
  166.37 +import net.fortuna.ical4j.model.Escapable;
  166.38 +import net.fortuna.ical4j.model.ParameterList;
  166.39 +import net.fortuna.ical4j.model.Property;
  166.40 +import net.fortuna.ical4j.model.PropertyFactoryImpl;
  166.41 +import net.fortuna.ical4j.model.ValidationException;
  166.42 +
  166.43 +/**
  166.44 + * $Id$
  166.45 + *
  166.46 + * Created: [Apr 6, 2004]
  166.47 + *
  166.48 + * Defines a NAME iCalendar component property.
  166.49 + * @author benf
  166.50 + * @author Mike Douglass
  166.51 + */
  166.52 +public class Name extends Property implements Escapable {
  166.53 +
  166.54 +    private static final long serialVersionUID = -6930099834219160086L;
  166.55 +
  166.56 +    private String value;
  166.57 +
  166.58 +    /**
  166.59 +     * Default constructor.
  166.60 +     */
  166.61 +    public Name() {
  166.62 +        super(NAME, PropertyFactoryImpl.getInstance());
  166.63 +    }
  166.64 +
  166.65 +    /**
  166.66 +     * @param aValue a value string for this component
  166.67 +     */
  166.68 +    public Name(final String aValue) {
  166.69 +        super(NAME, PropertyFactoryImpl.getInstance());
  166.70 +        setValue(aValue);
  166.71 +    }
  166.72 +
  166.73 +    /**
  166.74 +     * @param aList a list of parameters for this component
  166.75 +     * @param aValue a value string for this component
  166.76 +     */
  166.77 +    public Name(final ParameterList aList, final String aValue) {
  166.78 +        super(NAME, aList, PropertyFactoryImpl.getInstance());
  166.79 +        setValue(aValue);
  166.80 +    }
  166.81 +
  166.82 +    /**
  166.83 +     * {@inheritDoc}
  166.84 +     */
  166.85 +    public final void validate() throws ValidationException {
  166.86 +
  166.87 +        /*
  166.88 +         * ; the following is optional, ; and MAY occur more than once (";" xparam)
  166.89 +         */
  166.90 +    }
  166.91 +
  166.92 +    /**
  166.93 +     * {@inheritDoc}
  166.94 +     */
  166.95 +    public final void setValue(final String aValue) {
  166.96 +        this.value = aValue;
  166.97 +    }
  166.98 +
  166.99 +    /**
 166.100 +     * {@inheritDoc}
 166.101 +     */
 166.102 +    public final String getValue() {
 166.103 +        return value;
 166.104 +    }
 166.105 +}
   167.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   167.2 +++ b/src/net/fortuna/ical4j/model/property/Organizer.java	Tue Feb 10 18:12:00 2015 +0100
   167.3 @@ -0,0 +1,238 @@
   167.4 +/**
   167.5 + * Copyright (c) 2012, Ben Fortuna
   167.6 + * All rights reserved.
   167.7 + *
   167.8 + * Redistribution and use in source and binary forms, with or without
   167.9 + * modification, are permitted provided that the following conditions
  167.10 + * are met:
  167.11 + *
  167.12 + *  o Redistributions of source code must retain the above copyright
  167.13 + * notice, this list of conditions and the following disclaimer.
  167.14 + *
  167.15 + *  o Redistributions in binary form must reproduce the above copyright
  167.16 + * notice, this list of conditions and the following disclaimer in the
  167.17 + * documentation and/or other materials provided with the distribution.
  167.18 + *
  167.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  167.20 + * may be used to endorse or promote products derived from this software
  167.21 + * without specific prior written permission.
  167.22 + *
  167.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  167.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  167.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  167.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  167.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  167.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  167.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  167.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  167.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  167.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  167.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  167.34 + */
  167.35 +package net.fortuna.ical4j.model.property;
  167.36 +
  167.37 +import java.net.URI;
  167.38 +import java.net.URISyntaxException;
  167.39 +
  167.40 +import net.fortuna.ical4j.model.Parameter;
  167.41 +import net.fortuna.ical4j.model.ParameterList;
  167.42 +import net.fortuna.ical4j.model.Property;
  167.43 +import net.fortuna.ical4j.model.PropertyFactoryImpl;
  167.44 +import net.fortuna.ical4j.model.ValidationException;
  167.45 +import net.fortuna.ical4j.util.ParameterValidator;
  167.46 +import net.fortuna.ical4j.util.Strings;
  167.47 +import net.fortuna.ical4j.util.Uris;
  167.48 +
  167.49 +/**
  167.50 + * $Id$
  167.51 + * 
  167.52 + * Created: [Apr 6, 2004]
  167.53 + *
  167.54 + * Defines an ORGANIZER iCalendar component property.
  167.55 + * 
  167.56 + * <pre>
  167.57 + *     4.8.4.3 Organizer
  167.58 + *     
  167.59 + *        Property Name: ORGANIZER
  167.60 + *     
  167.61 + *        Purpose: The property defines the organizer for a calendar component.
  167.62 + *     
  167.63 + *        Value Type: CAL-ADDRESS
  167.64 + *     
  167.65 + *        Property Parameters: Non-standard, language, common name, directory
  167.66 + *        entry reference, sent by property parameters can be specified on this
  167.67 + *        property.
  167.68 + *     
  167.69 + *        Conformance: This property MUST be specified in an iCalendar object
  167.70 + *        that specifies a group scheduled calendar entity. This property MUST
  167.71 + *        be specified in an iCalendar object that specifies the publication of
  167.72 + *        a calendar user's busy time. This property MUST NOT be specified in
  167.73 + *        an iCalendar object that specifies only a time zone definition or
  167.74 + *        that defines calendar entities that are not group scheduled entities,
  167.75 + *        but are entities only on a single user's calendar.
  167.76 + *     
  167.77 + *        Description: The property is specified within the &quot;VEVENT&quot;, &quot;VTODO&quot;,
  167.78 + *        &quot;VJOURNAL calendar components to specify the organizer of a group
  167.79 + *        scheduled calendar entity. The property is specified within the
  167.80 + *        &quot;VFREEBUSY&quot; calendar component to specify the calendar user
  167.81 + *        requesting the free or busy time. When publishing a &quot;VFREEBUSY&quot;
  167.82 + *        calendar component, the property is used to specify the calendar that
  167.83 + *        the published busy time came from.
  167.84 + *     
  167.85 + *        The property has the property parameters CN, for specifying the
  167.86 + *        common or display name associated with the &quot;Organizer&quot;, DIR, for
  167.87 + *        specifying a pointer to the directory information associated with the
  167.88 + *        &quot;Organizer&quot;, SENT-BY, for specifying another calendar user that is
  167.89 + *        acting on behalf of the &quot;Organizer&quot;. The non-standard parameters may
  167.90 + *        also be specified on this property. If the LANGUAGE property
  167.91 + *        parameter is specified, the identified language applies to the CN
  167.92 + *        parameter value.
  167.93 + *     
  167.94 + *        Format Definition: The property is defined by the following notation:
  167.95 + *     
  167.96 + *          organizer  = &quot;ORGANIZER&quot; orgparam &quot;:&quot;
  167.97 + *                       cal-address CRLF
  167.98 + *     
  167.99 + *          orgparam   = *(
 167.100 + *     
 167.101 + *                     ; the following are optional,
 167.102 + *                     ; but MUST NOT occur more than once
 167.103 + *     
 167.104 + *                     (&quot;;&quot; cnparam) / (&quot;;&quot; dirparam) / (&quot;;&quot; sentbyparam) /
 167.105 + *                     (&quot;;&quot; languageparam) /
 167.106 + *     
 167.107 + *                     ; the following is optional,
 167.108 + *                     ; and MAY occur more than once
 167.109 + *     
 167.110 + *                     (&quot;;&quot; xparam)
 167.111 + *     
 167.112 + *                     )
 167.113 + *     
 167.114 + *        Example: The following is an example of this property:
 167.115 + *     
 167.116 + *          ORGANIZER;CN=John Smith:MAILTO:jsmith@host1.com
 167.117 + *     
 167.118 + *        The following is an example of this property with a pointer to the
 167.119 + *        directory information associated with the organizer:
 167.120 + *     
 167.121 + *          ORGANIZER;CN=JohnSmith;DIR=&quot;ldap://host.com:6666/o=3DDC%20Associ
 167.122 + *           ates,c=3DUS??(cn=3DJohn%20Smith)&quot;:MAILTO:jsmith@host1.com
 167.123 + *     
 167.124 + *        The following is an example of this property used by another calendar
 167.125 + *        user who is acting on behalf of the organizer, with responses
 167.126 + *        intended to be sent back to the organizer, not the other calendar
 167.127 + *        user:
 167.128 + *     
 167.129 + *          ORGANIZER;SENT-BY=&quot;MAILTO:jane_doe@host.com&quot;:
 167.130 + *           MAILTO:jsmith@host1.com
 167.131 + * </pre>
 167.132 + * 
 167.133 + * @author Ben Fortuna
 167.134 + */
 167.135 +public class Organizer extends Property {
 167.136 +
 167.137 +    private static final long serialVersionUID = -5216965653165090725L;
 167.138 +
 167.139 +    private URI calAddress;
 167.140 +
 167.141 +    /**
 167.142 +     * Default constructor.
 167.143 +     */
 167.144 +    public Organizer() {
 167.145 +        super(ORGANIZER, PropertyFactoryImpl.getInstance());
 167.146 +    }
 167.147 +
 167.148 +    /**
 167.149 +     * Constructs a new instance with the specified value.
 167.150 +     * @param value an organizer URI
 167.151 +     * @throws URISyntaxException where the specified value is not a valid URI
 167.152 +     */
 167.153 +    public Organizer(String value) throws URISyntaxException {
 167.154 +        super(ORGANIZER, PropertyFactoryImpl.getInstance());
 167.155 +        setValue(value);
 167.156 +    }
 167.157 +    
 167.158 +    /**
 167.159 +     * @param aList a list of parameters for this component
 167.160 +     * @param aValue a value string for this component
 167.161 +     * @throws URISyntaxException where the specified value string is not a valid uri
 167.162 +     */
 167.163 +    public Organizer(final ParameterList aList, final String aValue)
 167.164 +            throws URISyntaxException {
 167.165 +        super(ORGANIZER, aList, PropertyFactoryImpl.getInstance());
 167.166 +        setValue(aValue);
 167.167 +    }
 167.168 +
 167.169 +    /**
 167.170 +     * @param aUri a URI representation of a calendar address
 167.171 +     */
 167.172 +    public Organizer(final URI aUri) {
 167.173 +        super(ORGANIZER, PropertyFactoryImpl.getInstance());
 167.174 +        calAddress = aUri;
 167.175 +    }
 167.176 +
 167.177 +    /**
 167.178 +     * @param aList a list of parameters for this component
 167.179 +     * @param aUri a URI representation of a calendar address
 167.180 +     */
 167.181 +    public Organizer(final ParameterList aList, final URI aUri) {
 167.182 +        super(ORGANIZER, aList, PropertyFactoryImpl.getInstance());
 167.183 +        calAddress = aUri;
 167.184 +    }
 167.185 +
 167.186 +    /**
 167.187 +     * {@inheritDoc}
 167.188 +     */
 167.189 +    public final void validate() throws ValidationException {
 167.190 +
 167.191 +        /*
 167.192 +         * ; the following are optional, ; but MUST NOT occur more than once (";" cnparam) / (";" dirparam) / (";"
 167.193 +         * sentbyparam) / (";" languageparam) /
 167.194 +         */
 167.195 +        ParameterValidator.getInstance().assertOneOrLess(Parameter.CN,
 167.196 +                getParameters());
 167.197 +        ParameterValidator.getInstance().assertOneOrLess(Parameter.DIR,
 167.198 +                getParameters());
 167.199 +        ParameterValidator.getInstance().assertOneOrLess(Parameter.SENT_BY,
 167.200 +                getParameters());
 167.201 +        ParameterValidator.getInstance().assertOneOrLess(Parameter.LANGUAGE,
 167.202 +                getParameters());
 167.203 +
 167.204 +        /* schedulestatus added for CalDAV scheduling
 167.205 +         */
 167.206 +        ParameterValidator.getInstance().assertOneOrLess(Parameter.SCHEDULE_STATUS,
 167.207 +                                                         getParameters());
 167.208 +
 167.209 +        /*
 167.210 +         * ; the following is optional, ; and MAY occur more than once (";" xparam)
 167.211 +         */
 167.212 +    }
 167.213 +
 167.214 +    /**
 167.215 +     * @return Returns the calAddress.
 167.216 +     */
 167.217 +    public final URI getCalAddress() {
 167.218 +        return calAddress;
 167.219 +    }
 167.220 +
 167.221 +    /**
 167.222 +     * {@inheritDoc}
 167.223 +     */
 167.224 +    public final void setValue(final String aValue) throws URISyntaxException {
 167.225 +        calAddress = Uris.create(aValue);
 167.226 +    }
 167.227 +
 167.228 +    /**
 167.229 +     * {@inheritDoc}
 167.230 +     */
 167.231 +    public final String getValue() {
 167.232 +        return Uris.decode(Strings.valueOf(getCalAddress()));
 167.233 +    }
 167.234 +
 167.235 +    /**
 167.236 +     * @param calAddress The calAddress to set.
 167.237 +     */
 167.238 +    public final void setCalAddress(final URI calAddress) {
 167.239 +        this.calAddress = calAddress;
 167.240 +    }
 167.241 +}
   168.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   168.2 +++ b/src/net/fortuna/ical4j/model/property/PercentComplete.java	Tue Feb 10 18:12:00 2015 +0100
   168.3 @@ -0,0 +1,122 @@
   168.4 +/**
   168.5 + * Copyright (c) 2012, Ben Fortuna
   168.6 + * All rights reserved.
   168.7 + *
   168.8 + * Redistribution and use in source and binary forms, with or without
   168.9 + * modification, are permitted provided that the following conditions
  168.10 + * are met:
  168.11 + *
  168.12 + *  o Redistributions of source code must retain the above copyright
  168.13 + * notice, this list of conditions and the following disclaimer.
  168.14 + *
  168.15 + *  o Redistributions in binary form must reproduce the above copyright
  168.16 + * notice, this list of conditions and the following disclaimer in the
  168.17 + * documentation and/or other materials provided with the distribution.
  168.18 + *
  168.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  168.20 + * may be used to endorse or promote products derived from this software
  168.21 + * without specific prior written permission.
  168.22 + *
  168.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  168.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  168.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  168.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  168.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  168.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  168.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  168.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  168.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  168.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  168.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  168.34 + */
  168.35 +package net.fortuna.ical4j.model.property;
  168.36 +
  168.37 +import net.fortuna.ical4j.model.ParameterList;
  168.38 +import net.fortuna.ical4j.model.Property;
  168.39 +import net.fortuna.ical4j.model.PropertyFactoryImpl;
  168.40 +import net.fortuna.ical4j.model.ValidationException;
  168.41 +
  168.42 +/**
  168.43 + * $Id$
  168.44 + * 
  168.45 + * Created: [Apr 6, 2004]
  168.46 + *
  168.47 + * Defines a PERCENT-COMPLETE iCalendar component property.
  168.48 + * @author benf
  168.49 + */
  168.50 +public class PercentComplete extends Property {
  168.51 +
  168.52 +    private static final long serialVersionUID = 7788138484983240112L;
  168.53 +
  168.54 +    private int percentage;
  168.55 +
  168.56 +    /**
  168.57 +     * Default constructor.
  168.58 +     */
  168.59 +    public PercentComplete() {
  168.60 +        super(PERCENT_COMPLETE, PropertyFactoryImpl.getInstance());
  168.61 +    }
  168.62 +
  168.63 +    /**
  168.64 +     * @param aList a list of parameters for this component
  168.65 +     * @param aValue a value string for this component
  168.66 +     */
  168.67 +    public PercentComplete(final ParameterList aList, final String aValue) {
  168.68 +        super(PERCENT_COMPLETE, aList, PropertyFactoryImpl.getInstance());
  168.69 +        setValue(aValue);
  168.70 +    }
  168.71 +
  168.72 +    /**
  168.73 +     * @param aPercentage an int representation of a percentage
  168.74 +     */
  168.75 +    public PercentComplete(final int aPercentage) {
  168.76 +        super(PERCENT_COMPLETE, PropertyFactoryImpl.getInstance());
  168.77 +        percentage = aPercentage;
  168.78 +    }
  168.79 +
  168.80 +    /**
  168.81 +     * @param aList a list of parameters for this component
  168.82 +     * @param aPercentage an int representation of a percentage
  168.83 +     */
  168.84 +    public PercentComplete(final ParameterList aList, final int aPercentage) {
  168.85 +        super(PERCENT_COMPLETE, aList, PropertyFactoryImpl.getInstance());
  168.86 +        percentage = aPercentage;
  168.87 +    }
  168.88 +
  168.89 +    /**
  168.90 +     * @return Returns the percentage.
  168.91 +     */
  168.92 +    public final int getPercentage() {
  168.93 +        return percentage;
  168.94 +    }
  168.95 +
  168.96 +    /**
  168.97 +     * {@inheritDoc}
  168.98 +     */
  168.99 +    public final void setValue(final String aValue) {
 168.100 +        percentage = Integer.parseInt(aValue);
 168.101 +    }
 168.102 +
 168.103 +    /**
 168.104 +     * {@inheritDoc}
 168.105 +     */
 168.106 +    public final String getValue() {
 168.107 +        return String.valueOf(getPercentage());
 168.108 +    }
 168.109 +
 168.110 +    /**
 168.111 +     * @param percentage The percentage to set.
 168.112 +     */
 168.113 +    public final void setPercentage(final int percentage) {
 168.114 +        this.percentage = percentage;
 168.115 +    }
 168.116 +
 168.117 +    /**
 168.118 +     * {@inheritDoc}
 168.119 +     */
 168.120 +    public final void validate() throws ValidationException {
 168.121 +        if (percentage < 0 || percentage > 100) {
 168.122 +            throw new ValidationException(getName() + " with invalid value: " + percentage);
 168.123 +        }
 168.124 +    }
 168.125 +}
   169.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   169.2 +++ b/src/net/fortuna/ical4j/model/property/Postalcode.java	Tue Feb 10 18:12:00 2015 +0100
   169.3 @@ -0,0 +1,102 @@
   169.4 +/**
   169.5 + * Copyright (c) 2012, Ben Fortuna
   169.6 + * All rights reserved.
   169.7 + *
   169.8 + * Redistribution and use in source and binary forms, with or without
   169.9 + * modification, are permitted provided that the following conditions
  169.10 + * are met:
  169.11 + *
  169.12 + *  o Redistributions of source code must retain the above copyright
  169.13 + * notice, this list of conditions and the following disclaimer.
  169.14 + *
  169.15 + *  o Redistributions in binary form must reproduce the above copyright
  169.16 + * notice, this list of conditions and the following disclaimer in the
  169.17 + * documentation and/or other materials provided with the distribution.
  169.18 + *
  169.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  169.20 + * may be used to endorse or promote products derived from this software
  169.21 + * without specific prior written permission.
  169.22 + *
  169.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  169.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  169.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  169.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  169.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  169.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  169.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  169.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  169.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  169.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  169.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  169.34 + */
  169.35 +package net.fortuna.ical4j.model.property;
  169.36 +
  169.37 +import net.fortuna.ical4j.model.Escapable;
  169.38 +import net.fortuna.ical4j.model.ParameterList;
  169.39 +import net.fortuna.ical4j.model.Property;
  169.40 +import net.fortuna.ical4j.model.PropertyFactoryImpl;
  169.41 +import net.fortuna.ical4j.model.ValidationException;
  169.42 +
  169.43 +/**
  169.44 + * $Id$
  169.45 + *
  169.46 + * Created: [Apr 6, 2004]
  169.47 + *
  169.48 + * Defines a POSTALCODE iCalendar component property.
  169.49 + * @author benf
  169.50 + * @author Mike Douglass
  169.51 + */
  169.52 +public class Postalcode extends Property implements Escapable {
  169.53 +
  169.54 +	private static final long serialVersionUID = 1983456638722378724L;
  169.55 +	
  169.56 +	private String value;
  169.57 +
  169.58 +    /**
  169.59 +     * Default constructor.
  169.60 +     */
  169.61 +    public Postalcode() {
  169.62 +        super(POSTALCODE, PropertyFactoryImpl.getInstance());
  169.63 +    }
  169.64 +
  169.65 +    /**
  169.66 +     * @param aValue a value string for this component
  169.67 +     */
  169.68 +    public Postalcode(final String aValue) {
  169.69 +        super(POSTALCODE, PropertyFactoryImpl.getInstance());
  169.70 +        setValue(aValue);
  169.71 +    }
  169.72 +
  169.73 +    /**
  169.74 +     * @param aList a list of parameters for this component
  169.75 +     * @param aValue a value string for this component
  169.76 +     */
  169.77 +    public Postalcode(final ParameterList aList, final String aValue) {
  169.78 +        super(POSTALCODE, aList, PropertyFactoryImpl.getInstance());
  169.79 +        setValue(aValue);
  169.80 +    }
  169.81 +
  169.82 +    /**
  169.83 +     * {@inheritDoc}
  169.84 +     */
  169.85 +    public final void validate() throws ValidationException {
  169.86 +
  169.87 +        /*
  169.88 +         * ; the following is optional, ; and MAY occur more than once (";" xparam)
  169.89 +         */
  169.90 +    }
  169.91 +
  169.92 +    /**
  169.93 +     * {@inheritDoc}
  169.94 +     */
  169.95 +    public final void setValue(final String aValue) {
  169.96 +        this.value = aValue;
  169.97 +    }
  169.98 +
  169.99 +    /**
 169.100 +     * {@inheritDoc}
 169.101 +     */
 169.102 +    public final String getValue() {
 169.103 +        return value;
 169.104 +    }
 169.105 +}
   170.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   170.2 +++ b/src/net/fortuna/ical4j/model/property/Priority.java	Tue Feb 10 18:12:00 2015 +0100
   170.3 @@ -0,0 +1,239 @@
   170.4 +/**
   170.5 + * Copyright (c) 2012, Ben Fortuna
   170.6 + * All rights reserved.
   170.7 + *
   170.8 + * Redistribution and use in source and binary forms, with or without
   170.9 + * modification, are permitted provided that the following conditions
  170.10 + * are met:
  170.11 + *
  170.12 + *  o Redistributions of source code must retain the above copyright
  170.13 + * notice, this list of conditions and the following disclaimer.
  170.14 + *
  170.15 + *  o Redistributions in binary form must reproduce the above copyright
  170.16 + * notice, this list of conditions and the following disclaimer in the
  170.17 + * documentation and/or other materials provided with the distribution.
  170.18 + *
  170.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  170.20 + * may be used to endorse or promote products derived from this software
  170.21 + * without specific prior written permission.
  170.22 + *
  170.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  170.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  170.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  170.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  170.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  170.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  170.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  170.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  170.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  170.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  170.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  170.34 + */
  170.35 +package net.fortuna.ical4j.model.property;
  170.36 +
  170.37 +import net.fortuna.ical4j.model.ParameterList;
  170.38 +import net.fortuna.ical4j.model.Property;
  170.39 +import net.fortuna.ical4j.model.PropertyFactoryImpl;
  170.40 +import net.fortuna.ical4j.model.ValidationException;
  170.41 +
  170.42 +/**
  170.43 + * $Id$
  170.44 + * 
  170.45 + * Created: [Apr 6, 2004]
  170.46 + *
  170.47 + * Defines a PRIORITY iCalendar component property.
  170.48 + * 
  170.49 + * <pre>
  170.50 + *     4.8.1.9 Priority
  170.51 + *     
  170.52 + *        Property Name: PRIORITY
  170.53 + *     
  170.54 + *        Purpose: The property defines the relative priority for a calendar
  170.55 + *        component.
  170.56 + *     
  170.57 + *        Value Type: INTEGER
  170.58 + *     
  170.59 + *        Property Parameters: Non-standard property parameters can be
  170.60 + *        specified on this property.
  170.61 + *     
  170.62 + *        Conformance: The property can be specified in a &quot;VEVENT&quot; or &quot;VTODO&quot;
  170.63 + *        calendar component.
  170.64 + *     
  170.65 + *        Description: The priority is specified as an integer in the range
  170.66 + *        zero to nine. A value of zero (US-ASCII decimal 48) specifies an
  170.67 + *        undefined priority. A value of one (US-ASCII decimal 49) is the
  170.68 + *        highest priority. A value of two (US-ASCII decimal 50) is the second
  170.69 + *        highest priority. Subsequent numbers specify a decreasing ordinal
  170.70 + *        priority. A value of nine (US-ASCII decimal 58) is the lowest
  170.71 + *        priority.
  170.72 + *     
  170.73 + *        A CUA with a three-level priority scheme of &quot;HIGH&quot;, &quot;MEDIUM&quot; and
  170.74 + *        &quot;LOW&quot; is mapped into this property such that a property value in the
  170.75 + *        range of one (US-ASCII decimal 49) to four (US-ASCII decimal 52)
  170.76 + *        specifies &quot;HIGH&quot; priority. A value of five (US-ASCII decimal 53) is
  170.77 + *        the normal or &quot;MEDIUM&quot; priority. A value in the range of six (US-
  170.78 + *        ASCII decimal 54) to nine (US-ASCII decimal 58) is &quot;LOW&quot; priority.
  170.79 + *     
  170.80 + *        A CUA with a priority schema of &quot;A1&quot;, &quot;A2&quot;, &quot;A3&quot;,
  170.81 + *         &quot;B1&quot;, &quot;B2&quot;, ...,
  170.82 + *        &quot;C3&quot; is mapped into this property such that a property value of one
  170.83 + *        (US-ASCII decimal 49) specifies &quot;A1&quot;, a property value of two (US-
  170.84 + *        ASCII decimal 50) specifies &quot;A2&quot;, a property value of three (US-ASCII
  170.85 + *        decimal 51) specifies &quot;A3&quot;, and so forth up to a property value of 9
  170.86 + *        (US-ASCII decimal 58) specifies &quot;C3&quot;.
  170.87 + *     
  170.88 + *        Other integer values are reserved for future use.
  170.89 + *     
  170.90 + *        Within a &quot;VEVENT&quot; calendar component, this property specifies a
  170.91 + *        priority for the event. This property may be useful when more than
  170.92 + *        one event is scheduled for a given time period.
  170.93 + *     
  170.94 + *        Within a &quot;VTODO&quot; calendar component, this property specified a
  170.95 + *        priority for the to-do. This property is useful in prioritizing
  170.96 + *        multiple action items for a given time period.
  170.97 + *     
  170.98 + *        Format Definition: The property is specified by the following
  170.99 + *        notation:
 170.100 + *     
 170.101 + *          priority   = &quot;PRIORITY&quot; prioparam &quot;:&quot; privalue CRLF
 170.102 + *          ;Default is zero
 170.103 + *     
 170.104 + *          prioparam  = *(&quot;;&quot; xparam)
 170.105 + *     
 170.106 + *          privalue   = integer       ;Must be in the range [0..9]
 170.107 + *             ; All other values are reserved for future use
 170.108 + *     
 170.109 + *        The following is an example of a property with the highest priority:
 170.110 + *     
 170.111 + *          PRIORITY:1
 170.112 + *     
 170.113 + *        The following is an example of a property with a next highest
 170.114 + *        priority:
 170.115 + *     
 170.116 + *          PRIORITY:2
 170.117 + *     
 170.118 + *        Example: The following is an example of a property with no priority.
 170.119 + *        This is equivalent to not specifying the &quot;PRIORITY&quot; property:
 170.120 + *     
 170.121 + *          PRIORITY:0
 170.122 + * </pre>
 170.123 + * 
 170.124 + * @author Ben Fortuna
 170.125 + */
 170.126 +public class Priority extends Property {
 170.127 +
 170.128 +    private static final long serialVersionUID = -5654367843953827397L;
 170.129 +
 170.130 +    /**
 170.131 +     * Undefined priority.
 170.132 +     */
 170.133 +    public static final Priority UNDEFINED = new ImmutablePriority(0);
 170.134 +
 170.135 +    /**
 170.136 +     * High priority.
 170.137 +     */
 170.138 +    public static final Priority HIGH = new ImmutablePriority(1);
 170.139 +
 170.140 +    /**
 170.141 +     * Medium priority.
 170.142 +     */
 170.143 +    public static final Priority MEDIUM = new ImmutablePriority(5);
 170.144 +
 170.145 +    /**
 170.146 +     * Low priority.
 170.147 +     */
 170.148 +    public static final Priority LOW = new ImmutablePriority(9);
 170.149 +
 170.150 +    /**
 170.151 +     * @author Ben Fortuna An immutable instance of Priority.
 170.152 +     */
 170.153 +    private static final class ImmutablePriority extends Priority {
 170.154 +
 170.155 +        private static final long serialVersionUID = 5884973714694108418L;
 170.156 +
 170.157 +        private ImmutablePriority(final int level) {
 170.158 +            super(new ParameterList(true), level);
 170.159 +        }
 170.160 +
 170.161 +        public void setValue(final String aValue) {
 170.162 +            throw new UnsupportedOperationException(
 170.163 +                    "Cannot modify constant instances");
 170.164 +        }
 170.165 +
 170.166 +        public void setLevel(final int level) {
 170.167 +            throw new UnsupportedOperationException(
 170.168 +                    "Cannot modify constant instances");
 170.169 +        }
 170.170 +    }
 170.171 +
 170.172 +    private int level;
 170.173 +
 170.174 +    /**
 170.175 +     * Default constructor.
 170.176 +     */
 170.177 +    public Priority() {
 170.178 +        super(PRIORITY, PropertyFactoryImpl.getInstance());
 170.179 +        level = UNDEFINED.getLevel();
 170.180 +    }
 170.181 +
 170.182 +    /**
 170.183 +     * @param aList a list of parameters for this component
 170.184 +     * @param aValue a value string for this component
 170.185 +     */
 170.186 +    public Priority(final ParameterList aList, final String aValue) {
 170.187 +        super(PRIORITY, aList, PropertyFactoryImpl.getInstance());
 170.188 +        level = Integer.parseInt(aValue);
 170.189 +    }
 170.190 +
 170.191 +    /**
 170.192 +     * @param aLevel an int representation of a priority level
 170.193 +     */
 170.194 +    public Priority(final int aLevel) {
 170.195 +        super(PRIORITY, PropertyFactoryImpl.getInstance());
 170.196 +        level = aLevel;
 170.197 +    }
 170.198 +
 170.199 +    /**
 170.200 +     * @param aList a list of parameters for this component
 170.201 +     * @param aLevel an int representation of a priority level
 170.202 +     */
 170.203 +    public Priority(final ParameterList aList, final int aLevel) {
 170.204 +        super(PRIORITY, aList, PropertyFactoryImpl.getInstance());
 170.205 +        level = aLevel;
 170.206 +    }
 170.207 +
 170.208 +    /**
 170.209 +     * @return Returns the level.
 170.210 +     */
 170.211 +    public final int getLevel() {
 170.212 +        return level;
 170.213 +    }
 170.214 +
 170.215 +    /**
 170.216 +     * {@inheritDoc}
 170.217 +     */
 170.218 +    public void setValue(final String aValue) {
 170.219 +        level = Integer.parseInt(aValue);
 170.220 +    }
 170.221 +
 170.222 +    /**
 170.223 +     * {@inheritDoc}
 170.224 +     */
 170.225 +    public final String getValue() {
 170.226 +        return String.valueOf(getLevel());
 170.227 +    }
 170.228 +
 170.229 +    /**
 170.230 +     * @param level The level to set.
 170.231 +     */
 170.232 +    public void setLevel(final int level) {
 170.233 +        this.level = level;
 170.234 +    }
 170.235 +
 170.236 +    /**
 170.237 +     * {@inheritDoc}
 170.238 +     */
 170.239 +    public final void validate() throws ValidationException {
 170.240 +        // TODO: Auto-generated method stub
 170.241 +    }
 170.242 +}
   171.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   171.2 +++ b/src/net/fortuna/ical4j/model/property/ProdId.java	Tue Feb 10 18:12:00 2015 +0100
   171.3 @@ -0,0 +1,98 @@
   171.4 +/**
   171.5 + * Copyright (c) 2012, Ben Fortuna
   171.6 + * All rights reserved.
   171.7 + *
   171.8 + * Redistribution and use in source and binary forms, with or without
   171.9 + * modification, are permitted provided that the following conditions
  171.10 + * are met:
  171.11 + *
  171.12 + *  o Redistributions of source code must retain the above copyright
  171.13 + * notice, this list of conditions and the following disclaimer.
  171.14 + *
  171.15 + *  o Redistributions in binary form must reproduce the above copyright
  171.16 + * notice, this list of conditions and the following disclaimer in the
  171.17 + * documentation and/or other materials provided with the distribution.
  171.18 + *
  171.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  171.20 + * may be used to endorse or promote products derived from this software
  171.21 + * without specific prior written permission.
  171.22 + *
  171.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  171.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  171.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  171.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  171.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  171.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  171.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  171.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  171.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  171.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  171.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  171.34 + */
  171.35 +package net.fortuna.ical4j.model.property;
  171.36 +
  171.37 +import net.fortuna.ical4j.model.Escapable;
  171.38 +import net.fortuna.ical4j.model.ParameterList;
  171.39 +import net.fortuna.ical4j.model.Property;
  171.40 +import net.fortuna.ical4j.model.PropertyFactoryImpl;
  171.41 +import net.fortuna.ical4j.model.ValidationException;
  171.42 +
  171.43 +/**
  171.44 + * $Id$
  171.45 + * 
  171.46 + * Created: [Apr 6, 2004]
  171.47 + *
  171.48 + * Defines a PRODID iCalendar property.
  171.49 + * @author benf
  171.50 + */
  171.51 +public class ProdId extends Property implements Escapable {
  171.52 +
  171.53 +    private static final long serialVersionUID = -2433059917714523286L;
  171.54 +
  171.55 +    private String value;
  171.56 +
  171.57 +    /**
  171.58 +     * Default constructor.
  171.59 +     */
  171.60 +    public ProdId() {
  171.61 +        super(PRODID, PropertyFactoryImpl.getInstance());
  171.62 +    }
  171.63 +
  171.64 +    /**
  171.65 +     * @param aValue a value string for this component
  171.66 +     */
  171.67 +    public ProdId(final String aValue) {
  171.68 +        super(PRODID, PropertyFactoryImpl.getInstance());
  171.69 +        setValue(aValue);
  171.70 +    }
  171.71 +
  171.72 +    /**
  171.73 +     * @param aList a list of parameters for this component
  171.74 +     * @param aValue a value string for this component
  171.75 +     */
  171.76 +    public ProdId(final ParameterList aList, final String aValue) {
  171.77 +        super(PRODID, aList, PropertyFactoryImpl.getInstance());
  171.78 +        setValue(aValue);
  171.79 +    }
  171.80 +
  171.81 +    /**
  171.82 +     * {@inheritDoc}
  171.83 +     */
  171.84 +    public final void setValue(final String aValue) {
  171.85 +        this.value = aValue;
  171.86 +    }
  171.87 +
  171.88 +    /**
  171.89 +     * {@inheritDoc}
  171.90 +     */
  171.91 +    public final String getValue() {
  171.92 +        return value;
  171.93 +    }
  171.94 +
  171.95 +    /**
  171.96 +     * {@inheritDoc}
  171.97 +     */
  171.98 +    public final void validate() throws ValidationException {
  171.99 +        // TODO: Auto-generated method stub
 171.100 +    }
 171.101 +}
   172.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   172.2 +++ b/src/net/fortuna/ical4j/model/property/RDate.java	Tue Feb 10 18:12:00 2015 +0100
   172.3 @@ -0,0 +1,266 @@
   172.4 +/**
   172.5 + * Copyright (c) 2012, Ben Fortuna
   172.6 + * All rights reserved.
   172.7 + *
   172.8 + * Redistribution and use in source and binary forms, with or without
   172.9 + * modification, are permitted provided that the following conditions
  172.10 + * are met:
  172.11 + *
  172.12 + *  o Redistributions of source code must retain the above copyright
  172.13 + * notice, this list of conditions and the following disclaimer.
  172.14 + *
  172.15 + *  o Redistributions in binary form must reproduce the above copyright
  172.16 + * notice, this list of conditions and the following disclaimer in the
  172.17 + * documentation and/or other materials provided with the distribution.
  172.18 + *
  172.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  172.20 + * may be used to endorse or promote products derived from this software
  172.21 + * without specific prior written permission.
  172.22 + *
  172.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  172.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  172.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  172.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  172.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  172.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  172.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  172.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  172.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  172.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  172.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  172.34 + */
  172.35 +package net.fortuna.ical4j.model.property;
  172.36 +
  172.37 +import java.text.ParseException;
  172.38 +
  172.39 +import net.fortuna.ical4j.model.DateList;
  172.40 +import net.fortuna.ical4j.model.Parameter;
  172.41 +import net.fortuna.ical4j.model.ParameterList;
  172.42 +import net.fortuna.ical4j.model.PeriodList;
  172.43 +import net.fortuna.ical4j.model.PropertyFactoryImpl;
  172.44 +import net.fortuna.ical4j.model.TimeZone;
  172.45 +import net.fortuna.ical4j.model.ValidationException;
  172.46 +import net.fortuna.ical4j.model.parameter.Value;
  172.47 +import net.fortuna.ical4j.util.ParameterValidator;
  172.48 +import net.fortuna.ical4j.util.Strings;
  172.49 +
  172.50 +/**
  172.51 + * $Id$
  172.52 + * 
  172.53 + * Created: [Apr 6, 2004]
  172.54 + *
  172.55 + * Defines an RDATE iCalendar component property.
  172.56 + * 
  172.57 + * <pre>
  172.58 + *     4.8.5.3 Recurrence Date/Times
  172.59 + *     
  172.60 + *        Property Name: RDATE
  172.61 + *     
  172.62 + *        Purpose: This property defines the list of date/times for a
  172.63 + *        recurrence set.
  172.64 + *     
  172.65 + *        Value Type: The default value type for this property is DATE-TIME.
  172.66 + *        The value type can be set to DATE or PERIOD.
  172.67 + *     
  172.68 + *        Property Parameters: Non-standard, value data type and time zone
  172.69 + *        identifier property parameters can be specified on this property.
  172.70 + *     
  172.71 + *        Conformance: The property can be specified in &quot;VEVENT&quot;, &quot;VTODO&quot;,
  172.72 + *        &quot;VJOURNAL&quot; or &quot;VTIMEZONE&quot; calendar components.
  172.73 + *     
  172.74 + *        Description: This property can appear along with the &quot;RRULE&quot; property
  172.75 + *        to define an aggregate set of repeating occurrences. When they both
  172.76 + *        appear in an iCalendar object, the recurring events are defined by
  172.77 + *        the union of occurrences defined by both the &quot;RDATE&quot; and &quot;RRULE&quot;.
  172.78 + *     
  172.79 + *        The recurrence dates, if specified, are used in computing the
  172.80 + *        recurrence set. The recurrence set is the complete set of recurrence
  172.81 + *        instances for a calendar component. The recurrence set is generated
  172.82 + *        by considering the initial &quot;DTSTART&quot; property along with the &quot;RRULE&quot;,
  172.83 + *        &quot;RDATE&quot;, &quot;EXDATE&quot; and &quot;EXRULE&quot; properties contained within the
  172.84 + *        iCalendar object. The &quot;DTSTART&quot; property defines the first instance
  172.85 + *        in the recurrence set. Multiple instances of the &quot;RRULE&quot; and &quot;EXRULE&quot;
  172.86 + *        properties can also be specified to define more sophisticated
  172.87 + *        recurrence sets. The final recurrence set is generated by gathering
  172.88 + *        all of the start date/times generated by any of the specified &quot;RRULE&quot;
  172.89 + *        and &quot;RDATE&quot; properties, and excluding any start date/times which fall
  172.90 + *        within the union of start date/times generated by any specified
  172.91 + *        &quot;EXRULE&quot; and &quot;EXDATE&quot; properties. This implies that start date/times
  172.92 + *        within exclusion related properties (i.e., &quot;EXDATE&quot; and &quot;EXRULE&quot;)
  172.93 + *        take precedence over those specified by inclusion properties (i.e.,
  172.94 + *        &quot;RDATE&quot; and &quot;RRULE&quot;). Where duplicate instances are generated by the
  172.95 + *        &quot;RRULE&quot; and &quot;RDATE&quot; properties, only one recurrence is considered.
  172.96 + *        Duplicate instances are ignored.
  172.97 + *     
  172.98 + *        Format Definition: The property is defined by the following notation:
  172.99 + *     
 172.100 + *          rdate      = &quot;RDATE&quot; rdtparam &quot;:&quot; rdtval *(&quot;,&quot; rdtval) CRLF
 172.101 + *     
 172.102 + *          rdtparam   = *(
 172.103 + *     
 172.104 + *                     ; the following are optional,
 172.105 + *                     ; but MUST NOT occur more than once
 172.106 + *     
 172.107 + *                     (&quot;;&quot; &quot;VALUE&quot; &quot;=&quot; (&quot;DATE-TIME&quot;
 172.108 + *                      / &quot;DATE&quot; / &quot;PERIOD&quot;)) /
 172.109 + *                     (&quot;;&quot; tzidparam) /
 172.110 + *     
 172.111 + *                     ; the following is optional,
 172.112 + *                     ; and MAY occur more than once
 172.113 + *     
 172.114 + *                     (&quot;;&quot; xparam)
 172.115 + *     
 172.116 + *                     )
 172.117 + *     
 172.118 + *          rdtval     = date-time / date / period
 172.119 + *          ;Value MUST match value type
 172.120 + *     
 172.121 + *        Example: The following are examples of this property:
 172.122 + *     
 172.123 + *          RDATE:19970714T123000Z
 172.124 + *     
 172.125 + *          RDATE;TZID=US-EASTERN:19970714T083000
 172.126 + *     
 172.127 + *          RDATE;VALUE=PERIOD:19960403T020000Z/19960403T040000Z,
 172.128 + *           19960404T010000Z/PT3H
 172.129 + *     
 172.130 + *          RDATE;VALUE=DATE:19970101,19970120,19970217,19970421
 172.131 + *           19970526,19970704,19970901,19971014,19971128,19971129,19971225
 172.132 + * </pre>
 172.133 + * 
 172.134 + * @author Ben Fortuna
 172.135 + */
 172.136 +public class RDate extends DateListProperty {
 172.137 +
 172.138 +    private static final long serialVersionUID = -3320381650013860193L;
 172.139 +
 172.140 +    private PeriodList periods;
 172.141 +
 172.142 +    /**
 172.143 +     * Default constructor.
 172.144 +     */
 172.145 +    public RDate() {
 172.146 +        super(RDATE, PropertyFactoryImpl.getInstance());
 172.147 +        periods = new PeriodList(false, true);
 172.148 +    }
 172.149 +
 172.150 +    /**
 172.151 +     * @param aList a list of parameters for this component
 172.152 +     * @param aValue a value string for this component
 172.153 +     * @throws ParseException where the specified value string is not a valid date-time/date representation
 172.154 +     */
 172.155 +    public RDate(final ParameterList aList, final String aValue)
 172.156 +            throws ParseException {
 172.157 +        super(RDATE, aList, PropertyFactoryImpl.getInstance());
 172.158 +        periods = new PeriodList(false, true);
 172.159 +        setValue(aValue);
 172.160 +    }
 172.161 +
 172.162 +    /**
 172.163 +     * Constructor. Date or Date-Time format is determined based on the presence of a VALUE parameter.
 172.164 +     * @param dates a list of dates
 172.165 +     */
 172.166 +    public RDate(final DateList dates) {
 172.167 +        super(RDATE, dates, PropertyFactoryImpl.getInstance());
 172.168 +        periods = new PeriodList(false, true);
 172.169 +    }
 172.170 +
 172.171 +    /**
 172.172 +     * Constructor. Date or Date-Time format is determined based on the presence of a VALUE parameter.
 172.173 +     * @param aList a list of parameters for this component
 172.174 +     * @param dates a list of dates
 172.175 +     */
 172.176 +    public RDate(final ParameterList aList, final DateList dates) {
 172.177 +        super(RDATE, aList, dates, PropertyFactoryImpl.getInstance());
 172.178 +        periods = new PeriodList(false, true);
 172.179 +    }
 172.180 +
 172.181 +    /**
 172.182 +     * Constructor.
 172.183 +     * @param periods a list of periods
 172.184 +     */
 172.185 +    public RDate(final PeriodList periods) {
 172.186 +        super(RDATE, new DateList(true), PropertyFactoryImpl.getInstance());
 172.187 +        this.periods = periods;
 172.188 +    }
 172.189 +
 172.190 +    /**
 172.191 +     * Constructor.
 172.192 +     * @param aList a list of parameters for this component
 172.193 +     * @param periods a list of periods
 172.194 +     */
 172.195 +    public RDate(final ParameterList aList, final PeriodList periods) {
 172.196 +        super(RDATE, aList, new DateList(true), PropertyFactoryImpl.getInstance());
 172.197 +        this.periods = periods;
 172.198 +    }
 172.199 +
 172.200 +    /**
 172.201 +     * {@inheritDoc}
 172.202 +     */
 172.203 +    public final void validate() throws ValidationException {
 172.204 +
 172.205 +        /*
 172.206 +         * ; the following are optional, ; but MUST NOT occur more than once (";" "VALUE" "=" ("DATE-TIME" / "DATE" /
 172.207 +         * "PERIOD")) / (";" tzidparam) /
 172.208 +         */
 172.209 +        ParameterValidator.getInstance().assertOneOrLess(Parameter.VALUE,
 172.210 +                getParameters());
 172.211 +
 172.212 +        final Parameter valueParam = getParameter(Parameter.VALUE);
 172.213 +
 172.214 +        if (valueParam != null && !Value.DATE_TIME.equals(valueParam)
 172.215 +                && !Value.DATE.equals(valueParam)
 172.216 +                && !Value.PERIOD.equals(valueParam)) {
 172.217 +            throw new ValidationException("Parameter [" + Parameter.VALUE
 172.218 +                    + "] is invalid");
 172.219 +        }
 172.220 +
 172.221 +        ParameterValidator.getInstance().assertOneOrLess(Parameter.TZID,
 172.222 +                getParameters());
 172.223 +
 172.224 +        /*
 172.225 +         * ; the following is optional, ; and MAY occur more than once (";" xparam)
 172.226 +         */
 172.227 +    }
 172.228 +
 172.229 +    /**
 172.230 +     * @return Returns the period list.
 172.231 +     */
 172.232 +    public final PeriodList getPeriods() {
 172.233 +        return periods;
 172.234 +    }
 172.235 +
 172.236 +    /**
 172.237 +     * {@inheritDoc}
 172.238 +     */
 172.239 +    public final void setValue(final String aValue) throws ParseException {
 172.240 +        if (Value.PERIOD.equals(getParameter(Parameter.VALUE))) {
 172.241 +            periods = new PeriodList(aValue);
 172.242 +        }
 172.243 +        else {
 172.244 +            super.setValue(aValue);
 172.245 +        }
 172.246 +    }
 172.247 +
 172.248 +    /**
 172.249 +     * {@inheritDoc}
 172.250 +     */
 172.251 +    public final String getValue() {
 172.252 +        if (periods != null && !(periods.isEmpty() && periods.isUnmodifiable())) {
 172.253 +            return Strings.valueOf(getPeriods());
 172.254 +        }
 172.255 +        return super.getValue();
 172.256 +    }
 172.257 +    
 172.258 +    /**
 172.259 +     * {@inheritDoc}
 172.260 +     */
 172.261 +    public final void setTimeZone(TimeZone timezone) {
 172.262 +        if (periods != null && !(periods.isEmpty() && periods.isUnmodifiable())) {
 172.263 +            periods.setTimeZone(timezone);
 172.264 +        }
 172.265 +        else {
 172.266 +            super.setTimeZone(timezone);
 172.267 +        }
 172.268 +    }
 172.269 +}
   173.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   173.2 +++ b/src/net/fortuna/ical4j/model/property/RRule.java	Tue Feb 10 18:12:00 2015 +0100
   173.3 @@ -0,0 +1,129 @@
   173.4 +/**
   173.5 + * Copyright (c) 2012, Ben Fortuna
   173.6 + * All rights reserved.
   173.7 + *
   173.8 + * Redistribution and use in source and binary forms, with or without
   173.9 + * modification, are permitted provided that the following conditions
  173.10 + * are met:
  173.11 + *
  173.12 + *  o Redistributions of source code must retain the above copyright
  173.13 + * notice, this list of conditions and the following disclaimer.
  173.14 + *
  173.15 + *  o Redistributions in binary form must reproduce the above copyright
  173.16 + * notice, this list of conditions and the following disclaimer in the
  173.17 + * documentation and/or other materials provided with the distribution.
  173.18 + *
  173.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  173.20 + * may be used to endorse or promote products derived from this software
  173.21 + * without specific prior written permission.
  173.22 + *
  173.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  173.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  173.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  173.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  173.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  173.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  173.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  173.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  173.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  173.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  173.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  173.34 + */
  173.35 +package net.fortuna.ical4j.model.property;
  173.36 +
  173.37 +import java.text.ParseException;
  173.38 +
  173.39 +import net.fortuna.ical4j.model.ParameterList;
  173.40 +import net.fortuna.ical4j.model.Property;
  173.41 +import net.fortuna.ical4j.model.PropertyFactoryImpl;
  173.42 +import net.fortuna.ical4j.model.Recur;
  173.43 +import net.fortuna.ical4j.model.ValidationException;
  173.44 +
  173.45 +/**
  173.46 + * $Id$
  173.47 + * 
  173.48 + * Created: [Apr 6, 2004]
  173.49 + *
  173.50 + * Defines an RRULE iCalendar component property.
  173.51 + * @author benf
  173.52 + */
  173.53 +public class RRule extends Property {
  173.54 +
  173.55 +    private static final long serialVersionUID = -9188265089143001164L;
  173.56 +
  173.57 +    private Recur recur;
  173.58 +
  173.59 +    /**
  173.60 +     * Default constructor.
  173.61 +     */
  173.62 +    public RRule() {
  173.63 +        super(RRULE, PropertyFactoryImpl.getInstance());
  173.64 +        recur = new Recur(Recur.DAILY, 1);
  173.65 +    }
  173.66 +
  173.67 +    /**
  173.68 +     * @param value a rule string
  173.69 +     * @throws ParseException where the specified string is not a valid rule
  173.70 +     */
  173.71 +    public RRule(String value) throws ParseException {
  173.72 +        super(RRULE, PropertyFactoryImpl.getInstance());
  173.73 +        setValue(value);
  173.74 +    }
  173.75 +    
  173.76 +    /**
  173.77 +     * @param aList a list of parameters for this component
  173.78 +     * @param aValue a value string for this component
  173.79 +     * @throws ParseException thrown when the specified string is not a valid representaton of a recurrence
  173.80 +     * @see Recur#Recur(String)
  173.81 +     */
  173.82 +    public RRule(final ParameterList aList, final String aValue)
  173.83 +            throws ParseException {
  173.84 +        super(RRULE, aList, PropertyFactoryImpl.getInstance());
  173.85 +        setValue(aValue);
  173.86 +    }
  173.87 +
  173.88 +    /**
  173.89 +     * @param aRecur a recurrence value
  173.90 +     */
  173.91 +    public RRule(final Recur aRecur) {
  173.92 +        super(RRULE, PropertyFactoryImpl.getInstance());
  173.93 +        recur = aRecur;
  173.94 +    }
  173.95 +
  173.96 +    /**
  173.97 +     * @param aList a list of parameters for this component
  173.98 +     * @param aRecur a recurrence value
  173.99 +     */
 173.100 +    public RRule(final ParameterList aList, final Recur aRecur) {
 173.101 +        super(RRULE, aList, PropertyFactoryImpl.getInstance());
 173.102 +        recur = aRecur;
 173.103 +    }
 173.104 +
 173.105 +    /**
 173.106 +     * @return Returns the recur.
 173.107 +     */
 173.108 +    public final Recur getRecur() {
 173.109 +        return recur;
 173.110 +    }
 173.111 +
 173.112 +    /**
 173.113 +     * {@inheritDoc}
 173.114 +     */
 173.115 +    public final void setValue(final String aValue) throws ParseException {
 173.116 +        recur = new Recur(aValue);
 173.117 +    }
 173.118 +
 173.119 +    /**
 173.120 +     * {@inheritDoc}
 173.121 +     */
 173.122 +    public final String getValue() {
 173.123 +        return getRecur().toString();
 173.124 +    }
 173.125 +
 173.126 +    /**
 173.127 +     * {@inheritDoc}
 173.128 +     */
 173.129 +    public final void validate() throws ValidationException {
 173.130 +        // TODO: Auto-generated method stub
 173.131 +    }
 173.132 +}
   174.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   174.2 +++ b/src/net/fortuna/ical4j/model/property/RecurrenceId.java	Tue Feb 10 18:12:00 2015 +0100
   174.3 @@ -0,0 +1,221 @@
   174.4 +/**
   174.5 + * Copyright (c) 2012, Ben Fortuna
   174.6 + * All rights reserved.
   174.7 + *
   174.8 + * Redistribution and use in source and binary forms, with or without
   174.9 + * modification, are permitted provided that the following conditions
  174.10 + * are met:
  174.11 + *
  174.12 + *  o Redistributions of source code must retain the above copyright
  174.13 + * notice, this list of conditions and the following disclaimer.
  174.14 + *
  174.15 + *  o Redistributions in binary form must reproduce the above copyright
  174.16 + * notice, this list of conditions and the following disclaimer in the
  174.17 + * documentation and/or other materials provided with the distribution.
  174.18 + *
  174.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  174.20 + * may be used to endorse or promote products derived from this software
  174.21 + * without specific prior written permission.
  174.22 + *
  174.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  174.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  174.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  174.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  174.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  174.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  174.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  174.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  174.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  174.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  174.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  174.34 + */
  174.35 +package net.fortuna.ical4j.model.property;
  174.36 +
  174.37 +import java.text.ParseException;
  174.38 +
  174.39 +import net.fortuna.ical4j.model.Date;
  174.40 +import net.fortuna.ical4j.model.DateTime;
  174.41 +import net.fortuna.ical4j.model.Parameter;
  174.42 +import net.fortuna.ical4j.model.ParameterList;
  174.43 +import net.fortuna.ical4j.model.PropertyFactoryImpl;
  174.44 +import net.fortuna.ical4j.model.TimeZone;
  174.45 +import net.fortuna.ical4j.model.ValidationException;
  174.46 +import net.fortuna.ical4j.util.ParameterValidator;
  174.47 +
  174.48 +/**
  174.49 + * $Id$
  174.50 + * 
  174.51 + * Created: [Apr 6, 2004]
  174.52 + *
  174.53 + * Defines a RECURRENCE-ID iCalendar component property.
  174.54 + * 
  174.55 + * <pre>
  174.56 + *     4.8.4.4 Recurrence ID
  174.57 + *     
  174.58 + *        Property Name: RECURRENCE-ID
  174.59 + *     
  174.60 + *        Purpose: This property is used in conjunction with the &quot;UID&quot; and
  174.61 + *        &quot;SEQUENCE&quot; property to identify a specific instance of a recurring
  174.62 + *        &quot;VEVENT&quot;, &quot;VTODO&quot; or &quot;VJOURNAL&quot; calendar component. The property
  174.63 + *        value is the effective value of the &quot;DTSTART&quot; property of the
  174.64 + *        recurrence instance.
  174.65 + *     
  174.66 + *        Value Type: The default value type for this property is DATE-TIME.
  174.67 + *        The time format can be any of the valid forms defined for a DATE-TIME
  174.68 + *        value type. See DATE-TIME value type definition for specific
  174.69 + *        interpretations of the various forms. The value type can be set to
  174.70 + *        DATE.
  174.71 + *     
  174.72 + *        Property Parameters: Non-standard property, value data type, time
  174.73 + *        zone identifier and recurrence identifier range parameters can be
  174.74 + *        specified on this property.
  174.75 + *     
  174.76 + *        Conformance: This property can be specified in an iCalendar object
  174.77 + *        containing a recurring calendar component.
  174.78 + *     
  174.79 + *        Description: The full range of calendar components specified by a
  174.80 + *        recurrence set is referenced by referring to just the &quot;UID&quot; property
  174.81 + *        value corresponding to the calendar component. The &quot;RECURRENCE-ID&quot;
  174.82 + *        property allows the reference to an individual instance within the
  174.83 + *        recurrence set.
  174.84 + *     
  174.85 + *        If the value of the &quot;DTSTART&quot; property is a DATE type value, then the
  174.86 + *        value MUST be the calendar date for the recurrence instance.
  174.87 + *     
  174.88 + *        The date/time value is set to the time when the original recurrence
  174.89 + *        instance would occur; meaning that if the intent is to change a
  174.90 + *        Friday meeting to Thursday, the date/time is still set to the
  174.91 + *        original Friday meeting.
  174.92 + *     
  174.93 + *        The &quot;RECURRENCE-ID&quot; property is used in conjunction with the &quot;UID&quot;
  174.94 + *        and &quot;SEQUENCE&quot; property to identify a particular instance of a
  174.95 + *        recurring event, to-do or journal. For a given pair of &quot;UID&quot; and
  174.96 + *        &quot;SEQUENCE&quot; property values, the &quot;RECURRENCE-ID&quot; value for a
  174.97 + *        recurrence instance is fixed. When the definition of the recurrence
  174.98 + *        set for a calendar component changes, and hence the &quot;SEQUENCE&quot;
  174.99 + *        property value changes, the &quot;RECURRENCE-ID&quot; for a given recurrence
 174.100 + *        instance might also change.The &quot;RANGE&quot; parameter is used to specify
 174.101 + *        the effective range of recurrence instances from the instance
 174.102 + *        specified by the &quot;RECURRENCE-ID&quot; property value. The default value
 174.103 + *        for the range parameter is the single recurrence instance only. The
 174.104 + *        value can also be &quot;THISANDPRIOR&quot; to indicate a range defined by the
 174.105 + *        given recurrence instance and all prior instances or the value can be
 174.106 + *        &quot;THISANDFUTURE&quot; to indicate a range defined by the given recurrence
 174.107 + *        instance and all subsequent instances.
 174.108 + *     
 174.109 + *        Format Definition: The property is defined by the following notation:
 174.110 + *     
 174.111 + *          recurid    = &quot;RECURRENCE-ID&quot; ridparam &quot;:&quot; ridval CRLF
 174.112 + *     
 174.113 + *          ridparam   = *(
 174.114 + *     
 174.115 + *                     ; the following are optional,
 174.116 + *                     ; but MUST NOT occur more than once
 174.117 + *     
 174.118 + *                     (&quot;;&quot; &quot;VALUE&quot; &quot;=&quot; (&quot;DATE-TIME&quot; / &quot;DATE)) /
 174.119 + *                     (&quot;;&quot; tzidparam) / (&quot;;&quot; rangeparam) /
 174.120 + *     
 174.121 + *                     ; the following is optional,
 174.122 + *                     ; and MAY occur more than once
 174.123 + *     
 174.124 + *                     (&quot;;&quot; xparam)
 174.125 + *     
 174.126 + *                     )
 174.127 + *     
 174.128 + *          ridval     = date-time / date
 174.129 + *          ;Value MUST match value type
 174.130 + * </pre>
 174.131 + * 
 174.132 + * @author Ben Fortuna
 174.133 + */
 174.134 +public class RecurrenceId extends DateProperty {
 174.135 +
 174.136 +    private static final long serialVersionUID = 4456883817126011006L;
 174.137 +
 174.138 +    /**
 174.139 +     * Default constructor.
 174.140 +     */
 174.141 +    public RecurrenceId() {
 174.142 +        super(RECURRENCE_ID, PropertyFactoryImpl.getInstance());
 174.143 +        setDate(new DateTime());
 174.144 +    }
 174.145 +
 174.146 +    /**
 174.147 +     * Creates a new RECURRENCE_ID property initialised with the specified timezone.
 174.148 +     * @param timezone initial timezone
 174.149 +     */
 174.150 +    public RecurrenceId(TimeZone timezone) {
 174.151 +        super(RECURRENCE_ID, timezone, PropertyFactoryImpl.getInstance());
 174.152 +    }
 174.153 +
 174.154 +    /**
 174.155 +     * Creates a new instance initialised with the parsed value.
 174.156 +     * @param value the RECURRENCE_ID value string to parse
 174.157 +     * @throws ParseException where the specified string is not a valid RECURRENCE_ID value representation
 174.158 +     */
 174.159 +    public RecurrenceId(final String value) throws ParseException {
 174.160 +        super(RECURRENCE_ID, PropertyFactoryImpl.getInstance());
 174.161 +        setValue(value);
 174.162 +    }
 174.163 +
 174.164 +    /**
 174.165 +     * Creates a new RECURRENCE_ID property initialised with the specified timezone and value.
 174.166 +     * @param value a string representation of a RECURRENCE_ID value
 174.167 +     * @param timezone initial timezone
 174.168 +     * @throws ParseException where the specified value is not a valid string
 174.169 +     * representation
 174.170 +     */
 174.171 +    public RecurrenceId(String value, TimeZone timezone) throws ParseException {
 174.172 +        super(RECURRENCE_ID, timezone, PropertyFactoryImpl.getInstance());
 174.173 +        setValue(value);
 174.174 +    }
 174.175 +
 174.176 +    /**
 174.177 +     * @param aList a list of parameters for this component
 174.178 +     * @param aValue a value string for this component
 174.179 +     * @throws ParseException where the specified value string is not a valid date-time/date representation
 174.180 +     */
 174.181 +    public RecurrenceId(final ParameterList aList, final String aValue)
 174.182 +            throws ParseException {
 174.183 +        super(RECURRENCE_ID, aList, PropertyFactoryImpl.getInstance());
 174.184 +        setValue(aValue);
 174.185 +    }
 174.186 +
 174.187 +    /**
 174.188 +     * Constructor. Date or Date-Time format is determined based on the presence of a VALUE parameter.
 174.189 +     * @param aDate a date representation of a date or date-time
 174.190 +     */
 174.191 +    public RecurrenceId(final Date aDate) {
 174.192 +        super(RECURRENCE_ID, PropertyFactoryImpl.getInstance());
 174.193 +        setDate(aDate);
 174.194 +    }
 174.195 +
 174.196 +    /**
 174.197 +     * Constructor. Date or Date-Time format is determined based on the presence of a VALUE parameter.
 174.198 +     * @param aList a list of parameters for this component
 174.199 +     * @param aDate a date representation of a date or date-time
 174.200 +     */
 174.201 +    public RecurrenceId(final ParameterList aList, final Date aDate) {
 174.202 +        super(RECURRENCE_ID, aList, PropertyFactoryImpl.getInstance());
 174.203 +        setDate(aDate);
 174.204 +    }
 174.205 +
 174.206 +    /**
 174.207 +     * {@inheritDoc}
 174.208 +     */
 174.209 +    public final void validate() throws ValidationException {
 174.210 +        super.validate();
 174.211 +
 174.212 +        /*
 174.213 +         * ; the following are optional, ; but MUST NOT occur more than once (";" "VALUE" "=" ("DATE-TIME" / "DATE)) /
 174.214 +         * (";" tzidparam) / (";" rangeparam) /
 174.215 +         */
 174.216 +
 174.217 +        ParameterValidator.getInstance().assertOneOrLess(Parameter.RANGE,
 174.218 +                getParameters());
 174.219 +
 174.220 +        /*
 174.221 +         * ; the following is optional, ; and MAY occur more than once (";" xparam)
 174.222 +         */
 174.223 +    }
 174.224 +}
   175.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   175.2 +++ b/src/net/fortuna/ical4j/model/property/Region.java	Tue Feb 10 18:12:00 2015 +0100
   175.3 @@ -0,0 +1,110 @@
   175.4 +/**
   175.5 + * Copyright (c) 2012, Ben Fortuna
   175.6 + * All rights reserved.
   175.7 + *
   175.8 + * Redistribution and use in source and binary forms, with or without
   175.9 + * modification, are permitted provided that the following conditions
  175.10 + * are met:
  175.11 + *
  175.12 + *  o Redistributions of source code must retain the above copyright
  175.13 + * notice, this list of conditions and the following disclaimer.
  175.14 + *
  175.15 + *  o Redistributions in binary form must reproduce the above copyright
  175.16 + * notice, this list of conditions and the following disclaimer in the
  175.17 + * documentation and/or other materials provided with the distribution.
  175.18 + *
  175.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  175.20 + * may be used to endorse or promote products derived from this software
  175.21 + * without specific prior written permission.
  175.22 + *
  175.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  175.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  175.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  175.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  175.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  175.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  175.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  175.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  175.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  175.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  175.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  175.34 + */
  175.35 +package net.fortuna.ical4j.model.property;
  175.36 +
  175.37 +import net.fortuna.ical4j.model.Escapable;
  175.38 +import net.fortuna.ical4j.model.Parameter;
  175.39 +import net.fortuna.ical4j.model.ParameterList;
  175.40 +import net.fortuna.ical4j.model.Property;
  175.41 +import net.fortuna.ical4j.model.PropertyFactoryImpl;
  175.42 +import net.fortuna.ical4j.model.ValidationException;
  175.43 +import net.fortuna.ical4j.util.ParameterValidator;
  175.44 +
  175.45 +/**
  175.46 + * $Id$
  175.47 + *
  175.48 + * Created: [Apr 6, 2004]
  175.49 + *
  175.50 + * Defines a REGION iCalendar component property.
  175.51 + * @author benf
  175.52 + * @author Mike Douglass
  175.53 + */
  175.54 +public class Region extends Property implements Escapable {
  175.55 +
  175.56 +	private static final long serialVersionUID = 7753849118575885600L;
  175.57 +	
  175.58 +	private String value;
  175.59 +
  175.60 +    /**
  175.61 +     * Default constructor.
  175.62 +     */
  175.63 +    public Region() {
  175.64 +        super(REGION, PropertyFactoryImpl.getInstance());
  175.65 +    }
  175.66 +
  175.67 +    /**
  175.68 +     * @param aValue a value string for this component
  175.69 +     */
  175.70 +    public Region(final String aValue) {
  175.71 +        super(REGION, PropertyFactoryImpl.getInstance());
  175.72 +        setValue(aValue);
  175.73 +    }
  175.74 +
  175.75 +    /**
  175.76 +     * @param aList a list of parameters for this component
  175.77 +     * @param aValue a value string for this component
  175.78 +     */
  175.79 +    public Region(final ParameterList aList, final String aValue) {
  175.80 +        super(REGION, aList, PropertyFactoryImpl.getInstance());
  175.81 +        setValue(aValue);
  175.82 +    }
  175.83 +
  175.84 +    /**
  175.85 +     * {@inheritDoc}
  175.86 +     */
  175.87 +    public final void validate() throws ValidationException {
  175.88 +
  175.89 +        /*
  175.90 +         * ; the following are optional, ; but MUST NOT occur more than once (";" abbrev
  175.91 +         */
  175.92 +        ParameterValidator.getInstance().assertOneOrLess(Parameter.ABBREV,
  175.93 +                getParameters());
  175.94 +
  175.95 +        /*
  175.96 +         * ; the following is optional, ; and MAY occur more than once (";" xparam)
  175.97 +         */
  175.98 +    }
  175.99 +
 175.100 +    /**
 175.101 +     * {@inheritDoc}
 175.102 +     */
 175.103 +    public final void setValue(final String aValue) {
 175.104 +        this.value = aValue;
 175.105 +    }
 175.106 +
 175.107 +    /**
 175.108 +     * {@inheritDoc}
 175.109 +     */
 175.110 +    public final String getValue() {
 175.111 +        return value;
 175.112 +    }
 175.113 +}
   176.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   176.2 +++ b/src/net/fortuna/ical4j/model/property/RelatedTo.java	Tue Feb 10 18:12:00 2015 +0100
   176.3 @@ -0,0 +1,109 @@
   176.4 +/**
   176.5 + * Copyright (c) 2012, Ben Fortuna
   176.6 + * All rights reserved.
   176.7 + *
   176.8 + * Redistribution and use in source and binary forms, with or without
   176.9 + * modification, are permitted provided that the following conditions
  176.10 + * are met:
  176.11 + *
  176.12 + *  o Redistributions of source code must retain the above copyright
  176.13 + * notice, this list of conditions and the following disclaimer.
  176.14 + *
  176.15 + *  o Redistributions in binary form must reproduce the above copyright
  176.16 + * notice, this list of conditions and the following disclaimer in the
  176.17 + * documentation and/or other materials provided with the distribution.
  176.18 + *
  176.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  176.20 + * may be used to endorse or promote products derived from this software
  176.21 + * without specific prior written permission.
  176.22 + *
  176.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  176.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  176.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  176.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  176.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  176.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  176.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  176.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  176.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  176.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  176.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  176.34 + */
  176.35 +package net.fortuna.ical4j.model.property;
  176.36 +
  176.37 +import net.fortuna.ical4j.model.Escapable;
  176.38 +import net.fortuna.ical4j.model.Parameter;
  176.39 +import net.fortuna.ical4j.model.ParameterList;
  176.40 +import net.fortuna.ical4j.model.Property;
  176.41 +import net.fortuna.ical4j.model.PropertyFactoryImpl;
  176.42 +import net.fortuna.ical4j.model.ValidationException;
  176.43 +import net.fortuna.ical4j.util.ParameterValidator;
  176.44 +
  176.45 +/**
  176.46 + * $Id$
  176.47 + * 
  176.48 + * Created: [Apr 6, 2004]
  176.49 + *
  176.50 + * Defines a RELATED-TO iCalendar component property.
  176.51 + * @author benf
  176.52 + */
  176.53 +public class RelatedTo extends Property implements Escapable {
  176.54 +
  176.55 +    private static final long serialVersionUID = -109375299147319752L;
  176.56 +
  176.57 +    private String value;
  176.58 +
  176.59 +    /**
  176.60 +     * Default constructor.
  176.61 +     */
  176.62 +    public RelatedTo() {
  176.63 +        super(RELATED_TO, PropertyFactoryImpl.getInstance());
  176.64 +    }
  176.65 +
  176.66 +    /**
  176.67 +     * @param aValue a value string for this component
  176.68 +     */
  176.69 +    public RelatedTo(final String aValue) {
  176.70 +        super(RELATED_TO, PropertyFactoryImpl.getInstance());
  176.71 +        setValue(aValue);
  176.72 +    }
  176.73 +
  176.74 +    /**
  176.75 +     * @param aList a list of parameters for this component
  176.76 +     * @param aValue a value string for this component
  176.77 +     */
  176.78 +    public RelatedTo(final ParameterList aList, final String aValue) {
  176.79 +        super(RELATED_TO, aList, PropertyFactoryImpl.getInstance());
  176.80 +        setValue(aValue);
  176.81 +    }
  176.82 +
  176.83 +    /**
  176.84 +     * {@inheritDoc}
  176.85 +     */
  176.86 +    public final void validate() throws ValidationException {
  176.87 +
  176.88 +        /*
  176.89 +         * ; the following is optional, ; but MUST NOT occur more than once (";" reltypeparam) /
  176.90 +         */
  176.91 +        ParameterValidator.getInstance().assertOneOrLess(Parameter.RELTYPE,
  176.92 +                getParameters());
  176.93 +
  176.94 +        /*
  176.95 +         * ; the following is optional, ; and MAY occur more than once (";" xparm)
  176.96 +         */
  176.97 +    }
  176.98 +
  176.99 +    /**
 176.100 +     * {@inheritDoc}
 176.101 +     */
 176.102 +    public final void setValue(final String aValue) {
 176.103 +        this.value = aValue;
 176.104 +    }
 176.105 +
 176.106 +    /**
 176.107 +     * {@inheritDoc}
 176.108 +     */
 176.109 +    public final String getValue() {
 176.110 +        return value;
 176.111 +    }
 176.112 +}
   177.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   177.2 +++ b/src/net/fortuna/ical4j/model/property/Repeat.java	Tue Feb 10 18:12:00 2015 +0100
   177.3 @@ -0,0 +1,120 @@
   177.4 +/**
   177.5 + * Copyright (c) 2012, Ben Fortuna
   177.6 + * All rights reserved.
   177.7 + *
   177.8 + * Redistribution and use in source and binary forms, with or without
   177.9 + * modification, are permitted provided that the following conditions
  177.10 + * are met:
  177.11 + *
  177.12 + *  o Redistributions of source code must retain the above copyright
  177.13 + * notice, this list of conditions and the following disclaimer.
  177.14 + *
  177.15 + *  o Redistributions in binary form must reproduce the above copyright
  177.16 + * notice, this list of conditions and the following disclaimer in the
  177.17 + * documentation and/or other materials provided with the distribution.
  177.18 + *
  177.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  177.20 + * may be used to endorse or promote products derived from this software
  177.21 + * without specific prior written permission.
  177.22 + *
  177.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  177.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  177.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  177.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  177.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  177.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  177.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  177.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  177.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  177.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  177.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  177.34 + */
  177.35 +package net.fortuna.ical4j.model.property;
  177.36 +
  177.37 +import net.fortuna.ical4j.model.ParameterList;
  177.38 +import net.fortuna.ical4j.model.Property;
  177.39 +import net.fortuna.ical4j.model.PropertyFactoryImpl;
  177.40 +import net.fortuna.ical4j.model.ValidationException;
  177.41 +
  177.42 +/**
  177.43 + * $Id$
  177.44 + * 
  177.45 + * Created: [Apr 6, 2004]
  177.46 + *
  177.47 + * Defines a REPEAT iCalendar component property.
  177.48 + * @author benf
  177.49 + */
  177.50 +public class Repeat extends Property {
  177.51 +
  177.52 +    private static final long serialVersionUID = -1765522613173314831L;
  177.53 +
  177.54 +    private int count;
  177.55 +
  177.56 +    /**
  177.57 +     * Default constructor.
  177.58 +     */
  177.59 +    public Repeat() {
  177.60 +        super(REPEAT, PropertyFactoryImpl.getInstance());
  177.61 +    }
  177.62 +
  177.63 +    /**
  177.64 +     * @param aList a list of parameters for this component
  177.65 +     * @param aValue a value string for this component
  177.66 +     */
  177.67 +    public Repeat(final ParameterList aList, final String aValue) {
  177.68 +        super(REPEAT, aList, PropertyFactoryImpl.getInstance());
  177.69 +        setValue(aValue);
  177.70 +    }
  177.71 +
  177.72 +    /**
  177.73 +     * @param aCount a repetition count
  177.74 +     */
  177.75 +    public Repeat(final int aCount) {
  177.76 +        super(REPEAT, PropertyFactoryImpl.getInstance());
  177.77 +        count = aCount;
  177.78 +    }
  177.79 +
  177.80 +    /**
  177.81 +     * @param aList a list of parameters for this component
  177.82 +     * @param aCount a repetition count
  177.83 +     */
  177.84 +    public Repeat(final ParameterList aList, final int aCount) {
  177.85 +        super(REPEAT, aList, PropertyFactoryImpl.getInstance());
  177.86 +        count = aCount;
  177.87 +    }
  177.88 +
  177.89 +    /**
  177.90 +     * @return Returns the count.
  177.91 +     */
  177.92 +    public final int getCount() {
  177.93 +        return count;
  177.94 +    }
  177.95 +
  177.96 +    /**
  177.97 +     * {@inheritDoc}
  177.98 +     */
  177.99 +    public final void setValue(final String aValue) {
 177.100 +        count = Integer.parseInt(aValue);
 177.101 +    }
 177.102 +
 177.103 +    /**
 177.104 +     * {@inheritDoc}
 177.105 +     */
 177.106 +    public final String getValue() {
 177.107 +        return String.valueOf(getCount());
 177.108 +    }
 177.109 +
 177.110 +    /**
 177.111 +     * @param count The count to set.
 177.112 +     */
 177.113 +    public final void setCount(final int count) {
 177.114 +        this.count = count;
 177.115 +    }
 177.116 +
 177.117 +    /**
 177.118 +     * {@inheritDoc}
 177.119 +     */
 177.120 +    public final void validate() throws ValidationException {
 177.121 +        // TODO: Auto-generated method stub
 177.122 +    }
 177.123 +}
   178.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   178.2 +++ b/src/net/fortuna/ical4j/model/property/RequestStatus.java	Tue Feb 10 18:12:00 2015 +0100
   178.3 @@ -0,0 +1,223 @@
   178.4 +/**
   178.5 + * Copyright (c) 2012, Ben Fortuna
   178.6 + * All rights reserved.
   178.7 + *
   178.8 + * Redistribution and use in source and binary forms, with or without
   178.9 + * modification, are permitted provided that the following conditions
  178.10 + * are met:
  178.11 + *
  178.12 + *  o Redistributions of source code must retain the above copyright
  178.13 + * notice, this list of conditions and the following disclaimer.
  178.14 + *
  178.15 + *  o Redistributions in binary form must reproduce the above copyright
  178.16 + * notice, this list of conditions and the following disclaimer in the
  178.17 + * documentation and/or other materials provided with the distribution.
  178.18 + *
  178.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  178.20 + * may be used to endorse or promote products derived from this software
  178.21 + * without specific prior written permission.
  178.22 + *
  178.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  178.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  178.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  178.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  178.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  178.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  178.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  178.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  178.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  178.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  178.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  178.34 + */
  178.35 +package net.fortuna.ical4j.model.property;
  178.36 +
  178.37 +import java.util.StringTokenizer;
  178.38 +
  178.39 +import net.fortuna.ical4j.model.Parameter;
  178.40 +import net.fortuna.ical4j.model.ParameterList;
  178.41 +import net.fortuna.ical4j.model.Property;
  178.42 +import net.fortuna.ical4j.model.PropertyFactoryImpl;
  178.43 +import net.fortuna.ical4j.model.ValidationException;
  178.44 +import net.fortuna.ical4j.util.ParameterValidator;
  178.45 +
  178.46 +/**
  178.47 + * $Id$
  178.48 + * 
  178.49 + * Created: [Apr 6, 2004]
  178.50 + *
  178.51 + * Defines a REQUEST-STATUS iCalendar component property.
  178.52 + * @author benf
  178.53 + */
  178.54 +public class RequestStatus extends Property {
  178.55 +
  178.56 +    private static final long serialVersionUID = -3273944031884755345L;
  178.57 +
  178.58 +    /**
  178.59 +     * Preliminary success status.
  178.60 +     */
  178.61 +    public static final String PRELIM_SUCCESS = "1";
  178.62 +
  178.63 +    /**
  178.64 +     * Success status.
  178.65 +     */
  178.66 +    public static final String SUCCESS = "2";
  178.67 +
  178.68 +    /**
  178.69 +     * Client error status.
  178.70 +     */
  178.71 +    public static final String CLIENT_ERROR = "3";
  178.72 +
  178.73 +    /**
  178.74 +     * Scheduling error status.
  178.75 +     */
  178.76 +    public static final String SCHEDULING_ERROR = "4";
  178.77 +
  178.78 +    private String statusCode;
  178.79 +
  178.80 +    private String description;
  178.81 +
  178.82 +    private String exData;
  178.83 +
  178.84 +    /**
  178.85 +     * Default constructor.
  178.86 +     */
  178.87 +    public RequestStatus() {
  178.88 +        super(REQUEST_STATUS, PropertyFactoryImpl.getInstance());
  178.89 +    }
  178.90 +
  178.91 +    /**
  178.92 +     * @param aList a list of parameters for this component
  178.93 +     * @param aValue a value string for this component
  178.94 +     */
  178.95 +    public RequestStatus(final ParameterList aList, final String aValue) {
  178.96 +        super(REQUEST_STATUS, aList, PropertyFactoryImpl.getInstance());
  178.97 +        setValue(aValue);
  178.98 +    }
  178.99 +
 178.100 +    /**
 178.101 +     * @param aStatusCode a string representation of a status code
 178.102 +     * @param aDescription a description
 178.103 +     * @param data a string representation of extension data
 178.104 +     */
 178.105 +    public RequestStatus(final String aStatusCode, final String aDescription,
 178.106 +            final String data) {
 178.107 +        super(REQUEST_STATUS, PropertyFactoryImpl.getInstance());
 178.108 +        statusCode = aStatusCode;
 178.109 +        description = aDescription;
 178.110 +        exData = data;
 178.111 +    }
 178.112 +
 178.113 +    /**
 178.114 +     * @param aList a list of parameters for this component
 178.115 +     * @param aStatusCode a string representation of a status code
 178.116 +     * @param aDescription a description
 178.117 +     * @param data a string representation of extension data
 178.118 +     */
 178.119 +    public RequestStatus(final ParameterList aList, final String aStatusCode,
 178.120 +            final String aDescription, final String data) {
 178.121 +        super(REQUEST_STATUS, aList, PropertyFactoryImpl.getInstance());
 178.122 +        statusCode = aStatusCode;
 178.123 +        description = aDescription;
 178.124 +        exData = data;
 178.125 +    }
 178.126 +
 178.127 +    /**
 178.128 +     * {@inheritDoc}
 178.129 +     */
 178.130 +    public final void validate() throws ValidationException {
 178.131 +
 178.132 +        /*
 178.133 +         * ; the following is optional, ; but MUST NOT occur more than once (";" languageparm) /
 178.134 +         */
 178.135 +        ParameterValidator.getInstance().assertOneOrLess(Parameter.LANGUAGE,
 178.136 +                getParameters());
 178.137 +
 178.138 +        /*
 178.139 +         * ; the following is optional, ; and MAY occur more than once (";" xparam)
 178.140 +         */
 178.141 +    }
 178.142 +
 178.143 +    /**
 178.144 +     * @return Returns the description.
 178.145 +     */
 178.146 +    public final String getDescription() {
 178.147 +        return description;
 178.148 +    }
 178.149 +
 178.150 +    /**
 178.151 +     * @return Returns the exData.
 178.152 +     */
 178.153 +    public final String getExData() {
 178.154 +        return exData;
 178.155 +    }
 178.156 +
 178.157 +    /**
 178.158 +     * @return Returns the statusCode.
 178.159 +     */
 178.160 +    public final String getStatusCode() {
 178.161 +        return statusCode;
 178.162 +    }
 178.163 +
 178.164 +    /**
 178.165 +     * {@inheritDoc}
 178.166 +     */
 178.167 +    public final void setValue(final String aValue) {
 178.168 +        final StringTokenizer t = new StringTokenizer(aValue, ";");
 178.169 +
 178.170 +        if (t.hasMoreTokens()) {
 178.171 +            statusCode = t.nextToken();
 178.172 +        }
 178.173 +
 178.174 +        if (t.hasMoreTokens()) {
 178.175 +            description = t.nextToken();
 178.176 +        }
 178.177 +
 178.178 +        if (t.hasMoreTokens()) {
 178.179 +            exData = t.nextToken();
 178.180 +        }
 178.181 +    }
 178.182 +
 178.183 +    /**
 178.184 +     * {@inheritDoc}
 178.185 +     */
 178.186 +    public final String getValue() {
 178.187 +        final StringBuffer b = new StringBuffer();
 178.188 +
 178.189 +        if ((getStatusCode() != null)) {
 178.190 +            b.append(getStatusCode());
 178.191 +        }
 178.192 +
 178.193 +        if ((getDescription() != null)) {
 178.194 +            b.append(';');
 178.195 +            b.append(getDescription());
 178.196 +        }
 178.197 +
 178.198 +        if ((getExData() != null)) {
 178.199 +            b.append(';');
 178.200 +            b.append(getExData());
 178.201 +        }
 178.202 +
 178.203 +        return b.toString();
 178.204 +    }
 178.205 +
 178.206 +    /**
 178.207 +     * @param description The description to set.
 178.208 +     */
 178.209 +    public final void setDescription(final String description) {
 178.210 +        this.description = description;
 178.211 +    }
 178.212 +
 178.213 +    /**
 178.214 +     * @param exData The exData to set.
 178.215 +     */
 178.216 +    public final void setExData(final String exData) {
 178.217 +        this.exData = exData;
 178.218 +    }
 178.219 +
 178.220 +    /**
 178.221 +     * @param statusCode The statusCode to set.
 178.222 +     */
 178.223 +    public final void setStatusCode(final String statusCode) {
 178.224 +        this.statusCode = statusCode;
 178.225 +    }
 178.226 +}
   179.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   179.2 +++ b/src/net/fortuna/ical4j/model/property/Resources.java	Tue Feb 10 18:12:00 2015 +0100
   179.3 @@ -0,0 +1,128 @@
   179.4 +/**
   179.5 + * Copyright (c) 2012, Ben Fortuna
   179.6 + * All rights reserved.
   179.7 + *
   179.8 + * Redistribution and use in source and binary forms, with or without
   179.9 + * modification, are permitted provided that the following conditions
  179.10 + * are met:
  179.11 + *
  179.12 + *  o Redistributions of source code must retain the above copyright
  179.13 + * notice, this list of conditions and the following disclaimer.
  179.14 + *
  179.15 + *  o Redistributions in binary form must reproduce the above copyright
  179.16 + * notice, this list of conditions and the following disclaimer in the
  179.17 + * documentation and/or other materials provided with the distribution.
  179.18 + *
  179.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  179.20 + * may be used to endorse or promote products derived from this software
  179.21 + * without specific prior written permission.
  179.22 + *
  179.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  179.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  179.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  179.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  179.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  179.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  179.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  179.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  179.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  179.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  179.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  179.34 + */
  179.35 +package net.fortuna.ical4j.model.property;
  179.36 +
  179.37 +import net.fortuna.ical4j.model.Parameter;
  179.38 +import net.fortuna.ical4j.model.ParameterList;
  179.39 +import net.fortuna.ical4j.model.Property;
  179.40 +import net.fortuna.ical4j.model.PropertyFactoryImpl;
  179.41 +import net.fortuna.ical4j.model.TextList;
  179.42 +import net.fortuna.ical4j.model.ValidationException;
  179.43 +import net.fortuna.ical4j.util.ParameterValidator;
  179.44 +
  179.45 +/**
  179.46 + * $Id$
  179.47 + * 
  179.48 + * Created: [Apr 6, 2004]
  179.49 + *
  179.50 + * Defines a RESOURCES iCalendar component property.
  179.51 + * @author benf
  179.52 + */
  179.53 +public class Resources extends Property {
  179.54 +
  179.55 +    private static final long serialVersionUID = -848562477226746807L;
  179.56 +
  179.57 +    private TextList resources;
  179.58 +
  179.59 +    /**
  179.60 +     * Default constructor.
  179.61 +     */
  179.62 +    public Resources() {
  179.63 +        super(RESOURCES, PropertyFactoryImpl.getInstance());
  179.64 +        resources = new TextList();
  179.65 +    }
  179.66 +
  179.67 +    /**
  179.68 +     * @param aList a list of parameters for this component
  179.69 +     * @param aValue a value string for this component
  179.70 +     */
  179.71 +    public Resources(final ParameterList aList, final String aValue) {
  179.72 +        super(RESOURCES, aList, PropertyFactoryImpl.getInstance());
  179.73 +        setValue(aValue);
  179.74 +    }
  179.75 +
  179.76 +    /**
  179.77 +     * @param rList a list of resources
  179.78 +     */
  179.79 +    public Resources(final TextList rList) {
  179.80 +        super(RESOURCES, PropertyFactoryImpl.getInstance());
  179.81 +        resources = rList;
  179.82 +    }
  179.83 +
  179.84 +    /**
  179.85 +     * @param aList a list of parameters for this component
  179.86 +     * @param rList a list of resources
  179.87 +     */
  179.88 +    public Resources(final ParameterList aList, final TextList rList) {
  179.89 +        super(RESOURCES, aList, PropertyFactoryImpl.getInstance());
  179.90 +        resources = rList;
  179.91 +    }
  179.92 +
  179.93 +    /**
  179.94 +     * {@inheritDoc}
  179.95 +     */
  179.96 +    public final void validate() throws ValidationException {
  179.97 +
  179.98 +        /*
  179.99 +         * ; the following are optional, ; but MUST NOT occur more than once (";" altrepparam) / (";" languageparam) /
 179.100 +         */
 179.101 +        ParameterValidator.getInstance().assertOneOrLess(Parameter.ALTREP,
 179.102 +                getParameters());
 179.103 +        ParameterValidator.getInstance().assertOneOrLess(Parameter.LANGUAGE,
 179.104 +                getParameters());
 179.105 +
 179.106 +        /*
 179.107 +         * ; the following is optional, ; and MAY occur more than once (";" xparam)
 179.108 +         */
 179.109 +    }
 179.110 +
 179.111 +    /**
 179.112 +     * @return Returns the resources.
 179.113 +     */
 179.114 +    public final TextList getResources() {
 179.115 +        return resources;
 179.116 +    }
 179.117 +
 179.118 +    /**
 179.119 +     * {@inheritDoc}
 179.120 +     */
 179.121 +    public final void setValue(final String aValue) {
 179.122 +        resources = new TextList(aValue);
 179.123 +    }
 179.124 +
 179.125 +    /**
 179.126 +     * {@inheritDoc}
 179.127 +     */
 179.128 +    public final String getValue() {
 179.129 +        return getResources().toString();
 179.130 +    }
 179.131 +}
   180.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   180.2 +++ b/src/net/fortuna/ical4j/model/property/Sequence.java	Tue Feb 10 18:12:00 2015 +0100
   180.3 @@ -0,0 +1,204 @@
   180.4 +/**
   180.5 + * Copyright (c) 2012, Ben Fortuna
   180.6 + * All rights reserved.
   180.7 + *
   180.8 + * Redistribution and use in source and binary forms, with or without
   180.9 + * modification, are permitted provided that the following conditions
  180.10 + * are met:
  180.11 + *
  180.12 + *  o Redistributions of source code must retain the above copyright
  180.13 + * notice, this list of conditions and the following disclaimer.
  180.14 + *
  180.15 + *  o Redistributions in binary form must reproduce the above copyright
  180.16 + * notice, this list of conditions and the following disclaimer in the
  180.17 + * documentation and/or other materials provided with the distribution.
  180.18 + *
  180.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  180.20 + * may be used to endorse or promote products derived from this software
  180.21 + * without specific prior written permission.
  180.22 + *
  180.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  180.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  180.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  180.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  180.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  180.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  180.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  180.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  180.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  180.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  180.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  180.34 + */
  180.35 +package net.fortuna.ical4j.model.property;
  180.36 +
  180.37 +import net.fortuna.ical4j.model.ParameterList;
  180.38 +import net.fortuna.ical4j.model.Property;
  180.39 +import net.fortuna.ical4j.model.PropertyFactoryImpl;
  180.40 +import net.fortuna.ical4j.model.ValidationException;
  180.41 +
  180.42 +/**
  180.43 + * $Id$
  180.44 + * 
  180.45 + * Created: [Apr 6, 2004]
  180.46 + *
  180.47 + * Defines a SEQUENCE iCalendar component property.
  180.48 + * 
  180.49 + * <pre>
  180.50 + *     4.8.7.4 Sequence Number
  180.51 + *     
  180.52 + *        Property Name: SEQUENCE
  180.53 + *     
  180.54 + *        Purpose: This property defines the revision sequence number of the
  180.55 + *        calendar component within a sequence of revisions.
  180.56 + *     
  180.57 + *        Value Type: integer
  180.58 + *     
  180.59 + *        Property Parameters: Non-standard property parameters can be
  180.60 + *        specified on this property.
  180.61 + *     
  180.62 + *        Conformance: The property can be specified in &quot;VEVENT&quot;, &quot;VTODO&quot; or
  180.63 + *        &quot;VJOURNAL&quot; calendar component.
  180.64 + *     
  180.65 + *        Description: When a calendar component is created, its sequence
  180.66 + *        number is zero (US-ASCII decimal 48). It is monotonically incremented
  180.67 + *        by the &quot;Organizer's&quot; CUA each time the &quot;Organizer&quot; makes a
  180.68 + *        significant revision to the calendar component. When the &quot;Organizer&quot;
  180.69 + *        makes changes to one of the following properties, the sequence number
  180.70 + *        MUST be incremented:
  180.71 + *     
  180.72 + *          .  &quot;DTSTART&quot;
  180.73 + *     
  180.74 + *          .  &quot;DTEND&quot;
  180.75 + *     
  180.76 + *          .  &quot;DUE&quot;
  180.77 + *     
  180.78 + *          .  &quot;RDATE&quot;
  180.79 + *     
  180.80 + *          .  &quot;RRULE&quot;
  180.81 + *     
  180.82 + *          .  &quot;EXDATE&quot;
  180.83 + *     
  180.84 + *          .  &quot;EXRULE&quot;
  180.85 + *     
  180.86 + *          .  &quot;STATUS&quot;
  180.87 + *     
  180.88 + *        In addition, changes made by the &quot;Organizer&quot; to other properties can
  180.89 + *        also force the sequence number to be incremented. The &quot;Organizer&quot; CUA
  180.90 + *        MUST increment the sequence number when ever it makes changes to
  180.91 + *        properties in the calendar component that the &quot;Organizer&quot; deems will
  180.92 + *        jeopardize the validity of the participation status of the
  180.93 + *        &quot;Attendees&quot;. For example, changing the location of a meeting from one
  180.94 + *        locale to another distant locale could effectively impact the
  180.95 + *        participation status of the &quot;Attendees&quot;.
  180.96 + *     
  180.97 + *        The &quot;Organizer&quot; includes this property in an iCalendar object that it
  180.98 + *        sends to an &quot;Attendee&quot; to specify the current version of the calendar
  180.99 + *        component.
 180.100 + *     
 180.101 + *        The &quot;Attendee&quot; includes this property in an iCalendar object that it
 180.102 + *        sends to the &quot;Organizer&quot; to specify the version of the calendar
 180.103 + *        component that the &quot;Attendee&quot; is referring to.
 180.104 + *     
 180.105 + *        A change to the sequence number is not the mechanism that an
 180.106 + *        &quot;Organizer&quot; uses to request a response from the &quot;Attendees&quot;. The
 180.107 + *        &quot;RSVP&quot; parameter on the &quot;ATTENDEE&quot; property is used by the
 180.108 + *        &quot;Organizer&quot; to indicate that a response from the &quot;Attendees&quot; is
 180.109 + *        requested.
 180.110 + *     
 180.111 + *        Format Definition: This property is defined by the following
 180.112 + *        notation:
 180.113 + *     
 180.114 + *          seq = &quot;SEQUENCE&quot; seqparam &quot;:&quot; integer CRLF
 180.115 + *          ; Default is &quot;0&quot;
 180.116 + *     
 180.117 + *          seqparam   = *(&quot;;&quot; xparam)
 180.118 + *     
 180.119 + *        Example: The following is an example of this property for a calendar
 180.120 + *        component that was just created by the &quot;Organizer&quot;.
 180.121 + *     
 180.122 + *          SEQUENCE:0
 180.123 + *     
 180.124 + *        The following is an example of this property for a calendar component
 180.125 + *        that has been revised two different times by the &quot;Organizer&quot;.
 180.126 + *     
 180.127 + *          SEQUENCE:2
 180.128 + * </pre>
 180.129 + * 
 180.130 + * @author Ben Fortuna
 180.131 + */
 180.132 +public class Sequence extends Property {
 180.133 +
 180.134 +    private static final long serialVersionUID = -1606972893204822853L;
 180.135 +
 180.136 +    private int sequenceNo;
 180.137 +
 180.138 +    /**
 180.139 +     * Default constructor.
 180.140 +     */
 180.141 +    public Sequence() {
 180.142 +        super(SEQUENCE, PropertyFactoryImpl.getInstance());
 180.143 +        sequenceNo = 0;
 180.144 +    }
 180.145 +
 180.146 +    /**
 180.147 +     * @param aValue a value string for this component
 180.148 +     */
 180.149 +    public Sequence(final String aValue) {
 180.150 +        super(SEQUENCE, PropertyFactoryImpl.getInstance());
 180.151 +        setValue(aValue);
 180.152 +    }
 180.153 +
 180.154 +    /**
 180.155 +     * @param aList a list of parameters for this component
 180.156 +     * @param aValue a value string for this component
 180.157 +     */
 180.158 +    public Sequence(final ParameterList aList, final String aValue) {
 180.159 +        super(SEQUENCE, aList, PropertyFactoryImpl.getInstance());
 180.160 +        setValue(aValue);
 180.161 +    }
 180.162 +
 180.163 +    /**
 180.164 +     * @param aSequenceNo a sequence number
 180.165 +     */
 180.166 +    public Sequence(final int aSequenceNo) {
 180.167 +        super(SEQUENCE, PropertyFactoryImpl.getInstance());
 180.168 +        sequenceNo = aSequenceNo;
 180.169 +    }
 180.170 +
 180.171 +    /**
 180.172 +     * @param aList a list of parameters for this component
 180.173 +     * @param aSequenceNo a sequence number
 180.174 +     */
 180.175 +    public Sequence(final ParameterList aList, final int aSequenceNo) {
 180.176 +        super(SEQUENCE, aList, PropertyFactoryImpl.getInstance());
 180.177 +        sequenceNo = aSequenceNo;
 180.178 +    }
 180.179 +
 180.180 +    /**
 180.181 +     * @return Returns the sequenceNo.
 180.182 +     */
 180.183 +    public final int getSequenceNo() {
 180.184 +        return sequenceNo;
 180.185 +    }
 180.186 +
 180.187 +    /**
 180.188 +     * {@inheritDoc}
 180.189 +     */
 180.190 +    public final void setValue(final String aValue) {
 180.191 +        sequenceNo = Integer.parseInt(aValue);
 180.192 +    }
 180.193 +
 180.194 +    /**
 180.195 +     * {@inheritDoc}
 180.196 +     */
 180.197 +    public final String getValue() {
 180.198 +        return String.valueOf(getSequenceNo());
 180.199 +    }
 180.200 +
 180.201 +    /**
 180.202 +     * {@inheritDoc}
 180.203 +     */
 180.204 +    public final void validate() throws ValidationException {
 180.205 +        // TODO: Auto-generated method stub
 180.206 +    }
 180.207 +}
   181.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   181.2 +++ b/src/net/fortuna/ical4j/model/property/Status.java	Tue Feb 10 18:12:00 2015 +0100
   181.3 @@ -0,0 +1,243 @@
   181.4 +/**
   181.5 + * Copyright (c) 2012, Ben Fortuna
   181.6 + * All rights reserved.
   181.7 + *
   181.8 + * Redistribution and use in source and binary forms, with or without
   181.9 + * modification, are permitted provided that the following conditions
  181.10 + * are met:
  181.11 + *
  181.12 + *  o Redistributions of source code must retain the above copyright
  181.13 + * notice, this list of conditions and the following disclaimer.
  181.14 + *
  181.15 + *  o Redistributions in binary form must reproduce the above copyright
  181.16 + * notice, this list of conditions and the following disclaimer in the
  181.17 + * documentation and/or other materials provided with the distribution.
  181.18 + *
  181.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  181.20 + * may be used to endorse or promote products derived from this software
  181.21 + * without specific prior written permission.
  181.22 + *
  181.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  181.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  181.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  181.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  181.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  181.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  181.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  181.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  181.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  181.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  181.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  181.34 + */
  181.35 +package net.fortuna.ical4j.model.property;
  181.36 +
  181.37 +import net.fortuna.ical4j.model.ParameterList;
  181.38 +import net.fortuna.ical4j.model.Property;
  181.39 +import net.fortuna.ical4j.model.PropertyFactoryImpl;
  181.40 +import net.fortuna.ical4j.model.ValidationException;
  181.41 +
  181.42 +/**
  181.43 + * $Id$
  181.44 + * 
  181.45 + * Created: [Apr 6, 2004]
  181.46 + *
  181.47 + * Defines a STATUS iCalendar component property.
  181.48 + * 
  181.49 + * <pre>
  181.50 + *     4.8.1.11 Status
  181.51 + *     
  181.52 + *        Property Name: STATUS
  181.53 + *     
  181.54 + *        Purpose: This property defines the overall status or confirmation for
  181.55 + *        the calendar component.
  181.56 + *     
  181.57 + *        Value Type: TEXT
  181.58 + *     
  181.59 + *        Property Parameters: Non-standard property parameters can be
  181.60 + *        specified on this property.
  181.61 + *     
  181.62 + *        Conformance: This property can be specified in &quot;VEVENT&quot;, &quot;VTODO&quot; or
  181.63 + *        &quot;VJOURNAL&quot; calendar components.
  181.64 + *     
  181.65 + *        Description: In a group scheduled calendar component, the property is
  181.66 + *        used by the &quot;Organizer&quot; to provide a confirmation of the event to the
  181.67 + *        &quot;Attendees&quot;. For example in a &quot;VEVENT&quot; calendar component, the
  181.68 + *        &quot;Organizer&quot; can indicate that a meeting is tentative, confirmed or
  181.69 + *        cancelled. In a &quot;VTODO&quot; calendar component, the &quot;Organizer&quot; can
  181.70 + *        indicate that an action item needs action, is completed, is in
  181.71 + *        process or being worked on, or has been cancelled. In a &quot;VJOURNAL&quot;
  181.72 + *        calendar component, the &quot;Organizer&quot; can indicate that a journal entry
  181.73 + *        is draft, final or has been cancelled or removed.
  181.74 + *     
  181.75 + *        Format Definition: The property is defined by the following notation:
  181.76 + *     
  181.77 + *          status     = &quot;STATUS&quot; statparam] &quot;:&quot; statvalue CRLF
  181.78 + *     
  181.79 + *          statparam  = *(&quot;;&quot; xparam)
  181.80 + *     
  181.81 + *          statvalue  = &quot;TENTATIVE&quot;           ;Indicates event is
  181.82 + *                                             ;tentative.
  181.83 + *                     / &quot;CONFIRMED&quot;           ;Indicates event is
  181.84 + *                                             ;definite.
  181.85 + *                     / &quot;CANCELLED&quot;           ;Indicates event was
  181.86 + *                                             ;cancelled.
  181.87 + *             ;Status values for a &quot;VEVENT&quot;
  181.88 + *     
  181.89 + *          statvalue  =/ &quot;NEEDS-ACTION&quot;       ;Indicates to-do needs action.
  181.90 + *                     / &quot;COMPLETED&quot;           ;Indicates to-do completed.
  181.91 + *                     / &quot;IN-PROCESS&quot;          ;Indicates to-do in process of
  181.92 + *                     / &quot;CANCELLED&quot;           ;Indicates to-do was cancelled.
  181.93 + *             ;Status values for &quot;VTODO&quot;.
  181.94 + *     
  181.95 + *          statvalue  =/ &quot;DRAFT&quot;              ;Indicates journal is draft.
  181.96 + *                     / &quot;FINAL&quot;               ;Indicates journal is final.
  181.97 + *                     / &quot;CANCELLED&quot;           ;Indicates journal is removed.
  181.98 + *             ;Status values for &quot;VJOURNAL&quot;.
  181.99 + *     
 181.100 + *        Example: The following is an example of this property for a &quot;VEVENT&quot;
 181.101 + *        calendar component:
 181.102 + *     
 181.103 + *          STATUS:TENTATIVE
 181.104 + *     
 181.105 + *        The following is an example of this property for a &quot;VTODO&quot; calendar
 181.106 + *        component:
 181.107 + *     
 181.108 + *          STATUS:NEEDS-ACTION
 181.109 + *     
 181.110 + *        The following is an example of this property for a &quot;VJOURNAL&quot;
 181.111 + *        calendar component:
 181.112 + *     
 181.113 + *          STATUS:DRAFT
 181.114 + * </pre>
 181.115 + * 
 181.116 + * @author Ben Fortuna
 181.117 + */
 181.118 +public class Status extends Property {
 181.119 +
 181.120 +    private static final long serialVersionUID = 7401102230299289898L;
 181.121 +
 181.122 +    // Status values for a "VEVENT"
 181.123 +    /**
 181.124 +     * Tentative VEVENT status.
 181.125 +     */
 181.126 +    public static final Status VEVENT_TENTATIVE = new ImmutableStatus(
 181.127 +            "TENTATIVE");
 181.128 +
 181.129 +    /**
 181.130 +     * Confirmed VEVENT status.
 181.131 +     */
 181.132 +    public static final Status VEVENT_CONFIRMED = new ImmutableStatus(
 181.133 +            "CONFIRMED");
 181.134 +
 181.135 +    /**
 181.136 +     * Cancelled VEVENT status.
 181.137 +     */
 181.138 +    public static final Status VEVENT_CANCELLED = new ImmutableStatus(
 181.139 +            "CANCELLED");
 181.140 +
 181.141 +    // Status values for "VTODO"
 181.142 +    /**
 181.143 +     * Tentative VTODO status.
 181.144 +     */
 181.145 +    public static final Status VTODO_NEEDS_ACTION = new ImmutableStatus(
 181.146 +            "NEEDS-ACTION");
 181.147 +
 181.148 +    /**
 181.149 +     * Completed VTODO status.
 181.150 +     */
 181.151 +    public static final Status VTODO_COMPLETED = new ImmutableStatus(
 181.152 +            "COMPLETED");
 181.153 +
 181.154 +    /**
 181.155 +     * In-process VTODO status.
 181.156 +     */
 181.157 +    public static final Status VTODO_IN_PROCESS = new ImmutableStatus(
 181.158 +            "IN-PROCESS");
 181.159 +
 181.160 +    /**
 181.161 +     * Cancelled VTODO status.
 181.162 +     */
 181.163 +    public static final Status VTODO_CANCELLED = new ImmutableStatus(
 181.164 +            "CANCELLED");
 181.165 +
 181.166 +    // Status values for "VJOURNAL"
 181.167 +    /**
 181.168 +     * Draft VJOURNAL status.
 181.169 +     */
 181.170 +    public static final Status VJOURNAL_DRAFT = new ImmutableStatus("DRAFT");
 181.171 +
 181.172 +    /**
 181.173 +     * Final VJOURNAL status.
 181.174 +     */
 181.175 +    public static final Status VJOURNAL_FINAL = new ImmutableStatus("FINAL");
 181.176 +
 181.177 +    /**
 181.178 +     * Cancelled VJOURNAL status.
 181.179 +     */
 181.180 +    public static final Status VJOURNAL_CANCELLED = new ImmutableStatus(
 181.181 +            "CANCELLED");
 181.182 +
 181.183 +    /**
 181.184 +     * @author Ben Fortuna An immutable instance of Status.
 181.185 +     */
 181.186 +    private static final class ImmutableStatus extends Status {
 181.187 +
 181.188 +        private static final long serialVersionUID = 7771868877237685612L;
 181.189 +
 181.190 +        private ImmutableStatus(final String value) {
 181.191 +            super(new ParameterList(true), value);
 181.192 +        }
 181.193 +
 181.194 +        public void setValue(final String aValue) {
 181.195 +            throw new UnsupportedOperationException(
 181.196 +                    "Cannot modify constant instances");
 181.197 +        }
 181.198 +    }
 181.199 +
 181.200 +    private String value;
 181.201 +
 181.202 +    /**
 181.203 +     * Default constructor.
 181.204 +     */
 181.205 +    public Status() {
 181.206 +        super(STATUS, PropertyFactoryImpl.getInstance());
 181.207 +    }
 181.208 +
 181.209 +    /**
 181.210 +     * @param aValue a value string for this component
 181.211 +     */
 181.212 +    public Status(final String aValue) {
 181.213 +        super(STATUS, PropertyFactoryImpl.getInstance());
 181.214 +        this.value = aValue;
 181.215 +    }
 181.216 +
 181.217 +    /**
 181.218 +     * @param aList a list of parameters for this component
 181.219 +     * @param aValue a value string for this component
 181.220 +     */
 181.221 +    public Status(final ParameterList aList, final String aValue) {
 181.222 +        super(STATUS, aList, PropertyFactoryImpl.getInstance());
 181.223 +        this.value = aValue;
 181.224 +    }
 181.225 +
 181.226 +    /**
 181.227 +     * {@inheritDoc}
 181.228 +     */
 181.229 +    public void setValue(final String aValue) {
 181.230 +        this.value = aValue;
 181.231 +    }
 181.232 +
 181.233 +    /**
 181.234 +     * {@inheritDoc}
 181.235 +     */
 181.236 +    public final String getValue() {
 181.237 +        return value;
 181.238 +    }
 181.239 +
 181.240 +    /**
 181.241 +     * {@inheritDoc}
 181.242 +     */
 181.243 +    public final void validate() throws ValidationException {
 181.244 +        // TODO: Auto-generated method stub
 181.245 +    }
 181.246 +}
   182.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   182.2 +++ b/src/net/fortuna/ical4j/model/property/StreetAddress.java	Tue Feb 10 18:12:00 2015 +0100
   182.3 @@ -0,0 +1,102 @@
   182.4 +/**
   182.5 + * Copyright (c) 2012, Ben Fortuna
   182.6 + * All rights reserved.
   182.7 + *
   182.8 + * Redistribution and use in source and binary forms, with or without
   182.9 + * modification, are permitted provided that the following conditions
  182.10 + * are met:
  182.11 + *
  182.12 + *  o Redistributions of source code must retain the above copyright
  182.13 + * notice, this list of conditions and the following disclaimer.
  182.14 + *
  182.15 + *  o Redistributions in binary form must reproduce the above copyright
  182.16 + * notice, this list of conditions and the following disclaimer in the
  182.17 + * documentation and/or other materials provided with the distribution.
  182.18 + *
  182.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  182.20 + * may be used to endorse or promote products derived from this software
  182.21 + * without specific prior written permission.
  182.22 + *
  182.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  182.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  182.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  182.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  182.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  182.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  182.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  182.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  182.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  182.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  182.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  182.34 + */
  182.35 +package net.fortuna.ical4j.model.property;
  182.36 +
  182.37 +import net.fortuna.ical4j.model.Escapable;
  182.38 +import net.fortuna.ical4j.model.ParameterList;
  182.39 +import net.fortuna.ical4j.model.Property;
  182.40 +import net.fortuna.ical4j.model.PropertyFactoryImpl;
  182.41 +import net.fortuna.ical4j.model.ValidationException;
  182.42 +
  182.43 +/**
  182.44 + * $Id$
  182.45 + *
  182.46 + * Created: [Apr 6, 2004]
  182.47 + *
  182.48 + * Defines a STREET_ADDRESS iCalendar component property.
  182.49 + * @author benf
  182.50 + * @author Mike Douglass
  182.51 + */
  182.52 +public class StreetAddress extends Property implements Escapable {
  182.53 +
  182.54 +	private static final long serialVersionUID = 6352997029056626656L;
  182.55 +	
  182.56 +	private String value;
  182.57 +
  182.58 +    /**
  182.59 +     * Default constructor.
  182.60 +     */
  182.61 +    public StreetAddress() {
  182.62 +        super(STREET_ADDRESS, PropertyFactoryImpl.getInstance());
  182.63 +    }
  182.64 +
  182.65 +    /**
  182.66 +     * @param aValue a value string for this component
  182.67 +     */
  182.68 +    public StreetAddress(final String aValue) {
  182.69 +        super(STREET_ADDRESS, PropertyFactoryImpl.getInstance());
  182.70 +        setValue(aValue);
  182.71 +    }
  182.72 +
  182.73 +    /**
  182.74 +     * @param aList a list of parameters for this component
  182.75 +     * @param aValue a value string for this component
  182.76 +     */
  182.77 +    public StreetAddress(final ParameterList aList, final String aValue) {
  182.78 +        super(STREET_ADDRESS, aList, PropertyFactoryImpl.getInstance());
  182.79 +        setValue(aValue);
  182.80 +    }
  182.81 +
  182.82 +    /**
  182.83 +     * {@inheritDoc}
  182.84 +     */
  182.85 +    public final void validate() throws ValidationException {
  182.86 +
  182.87 +        /*
  182.88 +         * ; the following is optional, ; and MAY occur more than once (";" xparam)
  182.89 +         */
  182.90 +    }
  182.91 +
  182.92 +    /**
  182.93 +     * {@inheritDoc}
  182.94 +     */
  182.95 +    public final void setValue(final String aValue) {
  182.96 +        this.value = aValue;
  182.97 +    }
  182.98 +
  182.99 +    /**
 182.100 +     * {@inheritDoc}
 182.101 +     */
 182.102 +    public final String getValue() {
 182.103 +        return value;
 182.104 +    }
 182.105 +}
   183.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   183.2 +++ b/src/net/fortuna/ical4j/model/property/Summary.java	Tue Feb 10 18:12:00 2015 +0100
   183.3 @@ -0,0 +1,158 @@
   183.4 +/**
   183.5 + * Copyright (c) 2012, Ben Fortuna
   183.6 + * All rights reserved.
   183.7 + *
   183.8 + * Redistribution and use in source and binary forms, with or without
   183.9 + * modification, are permitted provided that the following conditions
  183.10 + * are met:
  183.11 + *
  183.12 + *  o Redistributions of source code must retain the above copyright
  183.13 + * notice, this list of conditions and the following disclaimer.
  183.14 + *
  183.15 + *  o Redistributions in binary form must reproduce the above copyright
  183.16 + * notice, this list of conditions and the following disclaimer in the
  183.17 + * documentation and/or other materials provided with the distribution.
  183.18 + *
  183.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  183.20 + * may be used to endorse or promote products derived from this software
  183.21 + * without specific prior written permission.
  183.22 + *
  183.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  183.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  183.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  183.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  183.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  183.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  183.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  183.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  183.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  183.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  183.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  183.34 + */
  183.35 +package net.fortuna.ical4j.model.property;
  183.36 +
  183.37 +import net.fortuna.ical4j.model.Escapable;
  183.38 +import net.fortuna.ical4j.model.Parameter;
  183.39 +import net.fortuna.ical4j.model.ParameterList;
  183.40 +import net.fortuna.ical4j.model.Property;
  183.41 +import net.fortuna.ical4j.model.PropertyFactoryImpl;
  183.42 +import net.fortuna.ical4j.model.ValidationException;
  183.43 +import net.fortuna.ical4j.util.ParameterValidator;
  183.44 +
  183.45 +/**
  183.46 + * $Id$
  183.47 + * 
  183.48 + * Created: [Apr 6, 2004]
  183.49 + *
  183.50 + * Defines a SUMMARY iCalendar component property.
  183.51 + * 
  183.52 + * <pre>
  183.53 + *     4.8.1.12 Summary
  183.54 + *     
  183.55 + *        Property Name: SUMMARY
  183.56 + *     
  183.57 + *        Purpose: This property defines a short summary or subject for the
  183.58 + *        calendar component.
  183.59 + *     
  183.60 + *        Value Type: TEXT
  183.61 + *     
  183.62 + *        Property Parameters: Non-standard, alternate text representation and
  183.63 + *        language property parameters can be specified on this property.
  183.64 + *     
  183.65 + *        Conformance: The property can be specified in &quot;VEVENT&quot;, &quot;VTODO&quot;,
  183.66 + *        &quot;VJOURNAL&quot; or &quot;VALARM&quot; calendar components.
  183.67 + *     
  183.68 + *        Description: This property is used in the &quot;VEVENT&quot;, &quot;VTODO&quot; and
  183.69 + *        &quot;VJOURNAL&quot; calendar components to capture a short, one line summary
  183.70 + *        about the activity or journal entry.
  183.71 + *     
  183.72 + *        This property is used in the &quot;VALARM&quot; calendar component to capture
  183.73 + *        the subject of an EMAIL category of alarm.
  183.74 + *     
  183.75 + *        Format Definition: The property is defined by the following notation:
  183.76 + *     
  183.77 + *          summary    = &quot;SUMMARY&quot; summparam &quot;:&quot; text CRLF
  183.78 + *     
  183.79 + *          summparam  = *(
  183.80 + *     
  183.81 + *                     ; the following are optional,
  183.82 + *                     ; but MUST NOT occur more than once
  183.83 + *     
  183.84 + *                     (&quot;;&quot; altrepparam) / (&quot;;&quot; languageparam) /
  183.85 + *     
  183.86 + *                     ; the following is optional,
  183.87 + *                     ; and MAY occur more than once
  183.88 + *     
  183.89 + *                     (&quot;;&quot; xparam)
  183.90 + *     
  183.91 + *                     )
  183.92 + *     
  183.93 + *        Example: The following is an example of this property:
  183.94 + *     
  183.95 + *          SUMMARY:Department Party
  183.96 + * </pre>
  183.97 + * 
  183.98 + * @author Ben Fortuna
  183.99 + */
 183.100 +public class Summary extends Property implements Escapable {
 183.101 +
 183.102 +    private static final long serialVersionUID = 7709437653910363024L;
 183.103 +
 183.104 +    private String value;
 183.105 +
 183.106 +    /**
 183.107 +     * Default constructor.
 183.108 +     */
 183.109 +    public Summary() {
 183.110 +        super(SUMMARY, PropertyFactoryImpl.getInstance());
 183.111 +    }
 183.112 +
 183.113 +    /**
 183.114 +     * @param aValue a value string for this component
 183.115 +     */
 183.116 +    public Summary(final String aValue) {
 183.117 +        super(SUMMARY, PropertyFactoryImpl.getInstance());
 183.118 +        setValue(aValue);
 183.119 +    }
 183.120 +
 183.121 +    /**
 183.122 +     * @param aList a list of parameters for this component
 183.123 +     * @param aValue a value string for this component
 183.124 +     */
 183.125 +    public Summary(final ParameterList aList, final String aValue) {
 183.126 +        super(SUMMARY, aList, PropertyFactoryImpl.getInstance());
 183.127 +        setValue(aValue);
 183.128 +    }
 183.129 +
 183.130 +    /**
 183.131 +     * {@inheritDoc}
 183.132 +     */
 183.133 +    public final void validate() throws ValidationException {
 183.134 +
 183.135 +        /*
 183.136 +         * ; the following are optional, ; but MUST NOT occur more than once (";" altrepparam) / (";" languageparam) /
 183.137 +         */
 183.138 +        ParameterValidator.getInstance().assertOneOrLess(Parameter.ALTREP,
 183.139 +                getParameters());
 183.140 +        ParameterValidator.getInstance().assertOneOrLess(Parameter.LANGUAGE,
 183.141 +                getParameters());
 183.142 +
 183.143 +        /*
 183.144 +         * ; the following is optional, ; and MAY occur more than once (";" xparam)
 183.145 +         */
 183.146 +    }
 183.147 +
 183.148 +    /**
 183.149 +     * {@inheritDoc}
 183.150 +     */
 183.151 +    public final void setValue(final String aValue) {
 183.152 +        this.value = aValue;
 183.153 +    }
 183.154 +
 183.155 +    /**
 183.156 +     * {@inheritDoc}
 183.157 +     */
 183.158 +    public final String getValue() {
 183.159 +        return value;
 183.160 +    }
 183.161 +}
   184.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   184.2 +++ b/src/net/fortuna/ical4j/model/property/Tel.java	Tue Feb 10 18:12:00 2015 +0100
   184.3 @@ -0,0 +1,110 @@
   184.4 +/**
   184.5 + * Copyright (c) 2012, Ben Fortuna
   184.6 + * All rights reserved.
   184.7 + *
   184.8 + * Redistribution and use in source and binary forms, with or without
   184.9 + * modification, are permitted provided that the following conditions
  184.10 + * are met:
  184.11 + *
  184.12 + *  o Redistributions of source code must retain the above copyright
  184.13 + * notice, this list of conditions and the following disclaimer.
  184.14 + *
  184.15 + *  o Redistributions in binary form must reproduce the above copyright
  184.16 + * notice, this list of conditions and the following disclaimer in the
  184.17 + * documentation and/or other materials provided with the distribution.
  184.18 + *
  184.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  184.20 + * may be used to endorse or promote products derived from this software
  184.21 + * without specific prior written permission.
  184.22 + *
  184.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  184.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  184.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  184.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  184.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  184.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  184.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  184.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  184.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  184.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  184.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  184.34 + */
  184.35 +package net.fortuna.ical4j.model.property;
  184.36 +
  184.37 +import net.fortuna.ical4j.model.Escapable;
  184.38 +import net.fortuna.ical4j.model.Parameter;
  184.39 +import net.fortuna.ical4j.model.ParameterList;
  184.40 +import net.fortuna.ical4j.model.Property;
  184.41 +import net.fortuna.ical4j.model.PropertyFactoryImpl;
  184.42 +import net.fortuna.ical4j.model.ValidationException;
  184.43 +import net.fortuna.ical4j.util.ParameterValidator;
  184.44 +
  184.45 +/**
  184.46 + * $Id$
  184.47 + *
  184.48 + * Created: [Apr 6, 2004]
  184.49 + *
  184.50 + * Defines a TEL iCalendar component property.
  184.51 + * @author benf
  184.52 + * @author Mike Douglass
  184.53 + */
  184.54 +public class Tel extends Property implements Escapable {
  184.55 +
  184.56 +	private static final long serialVersionUID = 3159826142152932485L;
  184.57 +	
  184.58 +	private String value;
  184.59 +
  184.60 +    /**
  184.61 +     * Default constructor.
  184.62 +     */
  184.63 +    public Tel() {
  184.64 +        super(TEL, PropertyFactoryImpl.getInstance());
  184.65 +    }
  184.66 +
  184.67 +    /**
  184.68 +     * @param aValue a value string for this component
  184.69 +     */
  184.70 +    public Tel(final String aValue) {
  184.71 +        super(TEL, PropertyFactoryImpl.getInstance());
  184.72 +        setValue(aValue);
  184.73 +    }
  184.74 +
  184.75 +    /**
  184.76 +     * @param aList a list of parameters for this component
  184.77 +     * @param aValue a value string for this component
  184.78 +     */
  184.79 +    public Tel(final ParameterList aList, final String aValue) {
  184.80 +        super(TEL, aList, PropertyFactoryImpl.getInstance());
  184.81 +        setValue(aValue);
  184.82 +    }
  184.83 +
  184.84 +    /**
  184.85 +     * {@inheritDoc}
  184.86 +     */
  184.87 +    public final void validate() throws ValidationException {
  184.88 +
  184.89 +        /*
  184.90 +         * ; the following are optional, ; but MUST NOT occur more than once (";" abbrev
  184.91 +         */
  184.92 +        ParameterValidator.getInstance().assertOneOrLess(Parameter.TYPE,
  184.93 +                getParameters());
  184.94 +
  184.95 +        /*
  184.96 +         * ; the following is optional, ; and MAY occur more than once (";" xparam)
  184.97 +         */
  184.98 +    }
  184.99 +
 184.100 +    /**
 184.101 +     * {@inheritDoc}
 184.102 +     */
 184.103 +    public final void setValue(final String aValue) {
 184.104 +        this.value = aValue;
 184.105 +    }
 184.106 +
 184.107 +    /**
 184.108 +     * {@inheritDoc}
 184.109 +     */
 184.110 +    public final String getValue() {
 184.111 +        return value;
 184.112 +    }
 184.113 +}
   185.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   185.2 +++ b/src/net/fortuna/ical4j/model/property/Transp.java	Tue Feb 10 18:12:00 2015 +0100
   185.3 @@ -0,0 +1,171 @@
   185.4 +/**
   185.5 + * Copyright (c) 2012, Ben Fortuna
   185.6 + * All rights reserved.
   185.7 + *
   185.8 + * Redistribution and use in source and binary forms, with or without
   185.9 + * modification, are permitted provided that the following conditions
  185.10 + * are met:
  185.11 + *
  185.12 + *  o Redistributions of source code must retain the above copyright
  185.13 + * notice, this list of conditions and the following disclaimer.
  185.14 + *
  185.15 + *  o Redistributions in binary form must reproduce the above copyright
  185.16 + * notice, this list of conditions and the following disclaimer in the
  185.17 + * documentation and/or other materials provided with the distribution.
  185.18 + *
  185.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  185.20 + * may be used to endorse or promote products derived from this software
  185.21 + * without specific prior written permission.
  185.22 + *
  185.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  185.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  185.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  185.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  185.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  185.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  185.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  185.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  185.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  185.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  185.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  185.34 + */
  185.35 +package net.fortuna.ical4j.model.property;
  185.36 +
  185.37 +import net.fortuna.ical4j.model.ParameterList;
  185.38 +import net.fortuna.ical4j.model.Property;
  185.39 +import net.fortuna.ical4j.model.PropertyFactoryImpl;
  185.40 +import net.fortuna.ical4j.model.ValidationException;
  185.41 +
  185.42 +/**
  185.43 + * $Id$
  185.44 + * 
  185.45 + * Created: [Apr 6, 2004]
  185.46 + *
  185.47 + * Defines a TRANSP iCalendar component property.
  185.48 + * 
  185.49 + * <pre>
  185.50 + *     4.8.2.7 Time Transparency
  185.51 + *     
  185.52 + *        Property Name: TRANSP
  185.53 + *     
  185.54 + *        Purpose: This property defines whether an event is transparent or not
  185.55 + *        to busy time searches.
  185.56 + *     
  185.57 + *        Value Type: TEXT
  185.58 + *     
  185.59 + *        Property Parameters: Non-standard property parameters can be
  185.60 + *        specified on this property.
  185.61 + *     
  185.62 + *        Conformance: This property can be specified once in a &quot;VEVENT&quot;
  185.63 + *        calendar component.
  185.64 + *     
  185.65 + *        Description: Time Transparency is the characteristic of an event that
  185.66 + *        determines whether it appears to consume time on a calendar. Events
  185.67 + *        that consume actual time for the individual or resource associated
  185.68 + *        with the calendar SHOULD be recorded as OPAQUE, allowing them to be
  185.69 + *        detected by free-busy time searches. Other events, which do not take
  185.70 + *        up the individual's (or resource's) time SHOULD be recorded as
  185.71 + *        TRANSPARENT, making them invisible to free-busy time searches.
  185.72 + *     
  185.73 + *        Format Definition: The property is specified by the following
  185.74 + *        notation:
  185.75 + *     
  185.76 + *          transp     = &quot;TRANSP&quot; tranparam &quot;:&quot; transvalue CRLF
  185.77 + *     
  185.78 + *          tranparam  = *(&quot;;&quot; xparam)
  185.79 + *     
  185.80 + *          transvalue = &quot;OPAQUE&quot;      ;Blocks or opaque on busy time searches.
  185.81 + *                     / &quot;TRANSPARENT&quot; ;Transparent on busy time searches.
  185.82 + *             ;Default value is OPAQUE
  185.83 + *     
  185.84 + *        Example: The following is an example of this property for an event
  185.85 + *        that is transparent or does not block on free/busy time searches:
  185.86 + *     
  185.87 + *          TRANSP:TRANSPARENT
  185.88 + *     
  185.89 + *        The following is an example of this property for an event that is
  185.90 + *        opaque or blocks on free/busy time searches:
  185.91 + *     
  185.92 + *          TRANSP:OPAQUE
  185.93 + * </pre>
  185.94 + * 
  185.95 + * @author Ben Fortuna
  185.96 + */
  185.97 +public class Transp extends Property {
  185.98 +
  185.99 +    private static final long serialVersionUID = 3801479657311785518L;
 185.100 +
 185.101 +    /**
 185.102 +     * Opaque.
 185.103 +     */
 185.104 +    public static final Transp OPAQUE = new ImmutableTransp("OPAQUE");
 185.105 +
 185.106 +    /**
 185.107 +     * Transparent.
 185.108 +     */
 185.109 +    public static final Transp TRANSPARENT = new ImmutableTransp("TRANSPARENT");
 185.110 +
 185.111 +    /**
 185.112 +     * @author Ben Fortuna An immutable instance of Transp.
 185.113 +     */
 185.114 +    private static final class ImmutableTransp extends Transp {
 185.115 +
 185.116 +        private static final long serialVersionUID = -6595830107310111996L;
 185.117 +
 185.118 +        private ImmutableTransp(final String value) {
 185.119 +            super(new ParameterList(true), value);
 185.120 +        }
 185.121 +
 185.122 +        public void setValue(final String aValue) {
 185.123 +            throw new UnsupportedOperationException(
 185.124 +                    "Cannot modify constant instances");
 185.125 +        }
 185.126 +    }
 185.127 +
 185.128 +    private String value;
 185.129 +
 185.130 +    /**
 185.131 +     * Default constructor.
 185.132 +     */
 185.133 +    public Transp() {
 185.134 +        super(TRANSP, PropertyFactoryImpl.getInstance());
 185.135 +    }
 185.136 +
 185.137 +    /**
 185.138 +     * @param aValue a value string for this component
 185.139 +     */
 185.140 +    public Transp(final String aValue) {
 185.141 +        super(TRANSP, PropertyFactoryImpl.getInstance());
 185.142 +        this.value = aValue;
 185.143 +    }
 185.144 +
 185.145 +    /**
 185.146 +     * @param aList a list of parameters for this component
 185.147 +     * @param aValue a value string for this component
 185.148 +     */
 185.149 +    public Transp(final ParameterList aList, final String aValue) {
 185.150 +        super(TRANSP, aList, PropertyFactoryImpl.getInstance());
 185.151 +        this.value = aValue;
 185.152 +    }
 185.153 +
 185.154 +    /**
 185.155 +     * {@inheritDoc}
 185.156 +     */
 185.157 +    public void setValue(final String aValue) {
 185.158 +        this.value = aValue;
 185.159 +    }
 185.160 +
 185.161 +    /**
 185.162 +     * {@inheritDoc}
 185.163 +     */
 185.164 +    public final String getValue() {
 185.165 +        return value;
 185.166 +    }
 185.167 +
 185.168 +    /**
 185.169 +     * {@inheritDoc}
 185.170 +     */
 185.171 +    public final void validate() throws ValidationException {
 185.172 +        // TODO: Auto-generated method stub
 185.173 +    }
 185.174 +}
   186.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   186.2 +++ b/src/net/fortuna/ical4j/model/property/Trigger.java	Tue Feb 10 18:12:00 2015 +0100
   186.3 @@ -0,0 +1,288 @@
   186.4 +/**
   186.5 + * Copyright (c) 2012, Ben Fortuna
   186.6 + * All rights reserved.
   186.7 + *
   186.8 + * Redistribution and use in source and binary forms, with or without
   186.9 + * modification, are permitted provided that the following conditions
  186.10 + * are met:
  186.11 + *
  186.12 + *  o Redistributions of source code must retain the above copyright
  186.13 + * notice, this list of conditions and the following disclaimer.
  186.14 + *
  186.15 + *  o Redistributions in binary form must reproduce the above copyright
  186.16 + * notice, this list of conditions and the following disclaimer in the
  186.17 + * documentation and/or other materials provided with the distribution.
  186.18 + *
  186.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  186.20 + * may be used to endorse or promote products derived from this software
  186.21 + * without specific prior written permission.
  186.22 + *
  186.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  186.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  186.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  186.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  186.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  186.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  186.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  186.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  186.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  186.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  186.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  186.34 + */
  186.35 +package net.fortuna.ical4j.model.property;
  186.36 +
  186.37 +import java.text.ParseException;
  186.38 +
  186.39 +import net.fortuna.ical4j.model.DateTime;
  186.40 +import net.fortuna.ical4j.model.Dur;
  186.41 +import net.fortuna.ical4j.model.Parameter;
  186.42 +import net.fortuna.ical4j.model.ParameterList;
  186.43 +import net.fortuna.ical4j.model.PropertyFactoryImpl;
  186.44 +import net.fortuna.ical4j.model.ValidationException;
  186.45 +import net.fortuna.ical4j.model.parameter.Value;
  186.46 +import net.fortuna.ical4j.util.ParameterValidator;
  186.47 +
  186.48 +/**
  186.49 + * $Id$
  186.50 + * 
  186.51 + * Created: [Apr 6, 2004]
  186.52 + *
  186.53 + * Defines a TRIGGER iCalendar component property.
  186.54 + * 
  186.55 + * <pre>
  186.56 + *     4.8.6.3 Trigger
  186.57 + *     
  186.58 + *        Property Name: TRIGGER
  186.59 + *     
  186.60 + *        Purpose: This property specifies when an alarm will trigger.
  186.61 + *     
  186.62 + *        Value Type: The default value type is DURATION. The value type can be
  186.63 + *        set to a DATE-TIME value type, in which case the value MUST specify a
  186.64 + *        UTC formatted DATE-TIME value.
  186.65 + *     
  186.66 + *        Property Parameters: Non-standard, value data type, time zone
  186.67 + *        identifier or trigger relationship property parameters can be
  186.68 + *        specified on this property. The trigger relationship property
  186.69 + *        parameter MUST only be specified when the value type is DURATION.
  186.70 + *     
  186.71 + *        Conformance: This property MUST be specified in the &quot;VALARM&quot; calendar
  186.72 + *        component.
  186.73 + *     
  186.74 + *        Description: Within the &quot;VALARM&quot; calendar component, this property
  186.75 + *        defines when the alarm will trigger. The default value type is
  186.76 + *        DURATION, specifying a relative time for the trigger of the alarm.
  186.77 + *        The default duration is relative to the start of an event or to-do
  186.78 + *        that the alarm is associated with. The duration can be explicitly set
  186.79 + *     
  186.80 + *        to trigger from either the end or the start of the associated event
  186.81 + *        or to-do with the &quot;RELATED&quot; parameter. A value of START will set the
  186.82 + *        alarm to trigger off the start of the associated event or to-do. A
  186.83 + *        value of END will set the alarm to trigger off the end of the
  186.84 + *        associated event or to-do.
  186.85 + *     
  186.86 + *        Either a positive or negative duration may be specified for the
  186.87 + *        &quot;TRIGGER&quot; property. An alarm with a positive duration is triggered
  186.88 + *        after the associated start or end of the event or to-do. An alarm
  186.89 + *        with a negative duration is triggered before the associated start or
  186.90 + *        end of the event or to-do.
  186.91 + *     
  186.92 + *        The &quot;RELATED&quot; property parameter is not valid if the value type of
  186.93 + *        the property is set to DATE-TIME (i.e., for an absolute date and time
  186.94 + *        alarm trigger). If a value type of DATE-TIME is specified, then the
  186.95 + *        property value MUST be specified in the UTC time format. If an
  186.96 + *        absolute trigger is specified on an alarm for a recurring event or
  186.97 + *        to-do, then the alarm will only trigger for the specified absolute
  186.98 + *        date/time, along with any specified repeating instances.
  186.99 + *     
 186.100 + *        If the trigger is set relative to START, then the &quot;DTSTART&quot; property
 186.101 + *        MUST be present in the associated &quot;VEVENT&quot; or &quot;VTODO&quot; calendar
 186.102 + *        component. If an alarm is specified for an event with the trigger set
 186.103 + *        relative to the END, then the &quot;DTEND&quot; property or the &quot;DSTART&quot; and
 186.104 + *        &quot;DURATION' properties MUST be present in the associated &quot;VEVENT&quot;
 186.105 + *        calendar component. If the alarm is specified for a to-do with a
 186.106 + *        trigger set relative to the END, then either the &quot;DUE&quot; property or
 186.107 + *        the &quot;DSTART&quot; and &quot;DURATION' properties MUST be present in the
 186.108 + *        associated &quot;VTODO&quot; calendar component.
 186.109 + *     
 186.110 + *        Alarms specified in an event or to-do which is defined in terms of a
 186.111 + *        DATE value type will be triggered relative to 00:00:00 UTC on the
 186.112 + *        specified date. For example, if &quot;DTSTART:19980205, then the duration
 186.113 + *        trigger will be relative to19980205T000000Z.
 186.114 + *     
 186.115 + *        Format Definition: The property is defined by the following notation:
 186.116 + *     
 186.117 + *          trigger    = &quot;TRIGGER&quot; (trigrel / trigabs)
 186.118 + *     
 186.119 + *          trigrel    = *(
 186.120 + *     
 186.121 + *                     ; the following are optional,
 186.122 + *                     ; but MUST NOT occur more than once
 186.123 + *     
 186.124 + *                       (&quot;;&quot; &quot;VALUE&quot; &quot;=&quot; &quot;DURATION&quot;) /
 186.125 + *                       (&quot;;&quot; trigrelparam) /
 186.126 + *     
 186.127 + *                     ; the following is optional,
 186.128 + *                     ; and MAY occur more than once
 186.129 + *     
 186.130 + *                       (&quot;;&quot; xparam)
 186.131 + *                       ) &quot;:&quot;  dur-value
 186.132 + *     
 186.133 + *          trigabs    = 1*(
 186.134 + *     
 186.135 + *                     ; the following is REQUIRED,
 186.136 + *                     ; but MUST NOT occur more than once
 186.137 + *     
 186.138 + *                       (&quot;;&quot; &quot;VALUE&quot; &quot;=&quot; &quot;DATE-TIME&quot;) /
 186.139 + *     
 186.140 + *                     ; the following is optional,
 186.141 + *                     ; and MAY occur more than once
 186.142 + *     
 186.143 + *                       (&quot;;&quot; xparam)
 186.144 + *     
 186.145 + *                       ) &quot;:&quot; date-time
 186.146 + * </pre>
 186.147 + * 
 186.148 + * @author Ben Fortuna
 186.149 + */
 186.150 +public class Trigger extends UtcProperty {
 186.151 +
 186.152 +    private static final long serialVersionUID = 5049421499261722194L;
 186.153 +
 186.154 +    private Dur duration;
 186.155 +
 186.156 +    /**
 186.157 +     * Default constructor.
 186.158 +     */
 186.159 +    public Trigger() {
 186.160 +        super(TRIGGER, PropertyFactoryImpl.getInstance());
 186.161 +    }
 186.162 +
 186.163 +    /**
 186.164 +     * @param aList a list of parameters for this component
 186.165 +     * @param aValue a value string for this component
 186.166 +     */
 186.167 +    public Trigger(final ParameterList aList, final String aValue) {
 186.168 +        super(TRIGGER, aList, PropertyFactoryImpl.getInstance());
 186.169 +        setValue(aValue);
 186.170 +    }
 186.171 +
 186.172 +    /**
 186.173 +     * @param duration a duration in milliseconds
 186.174 +     */
 186.175 +    public Trigger(final Dur duration) {
 186.176 +        super(TRIGGER, PropertyFactoryImpl.getInstance());
 186.177 +        setDuration(duration);
 186.178 +    }
 186.179 +
 186.180 +    /**
 186.181 +     * @param aList a list of parameters for this component
 186.182 +     * @param duration a duration in milliseconds
 186.183 +     */
 186.184 +    public Trigger(final ParameterList aList, final Dur duration) {
 186.185 +        super(TRIGGER, aList, PropertyFactoryImpl.getInstance());
 186.186 +        setDuration(duration);
 186.187 +    }
 186.188 +
 186.189 +    /**
 186.190 +     * @param dateTime a date representation of a date-time
 186.191 +     */
 186.192 +    public Trigger(final DateTime dateTime) {
 186.193 +        super(TRIGGER, PropertyFactoryImpl.getInstance());
 186.194 +        setDateTime(dateTime);
 186.195 +    }
 186.196 +
 186.197 +    /**
 186.198 +     * @param aList a list of parameters for this component
 186.199 +     * @param dateTime a date representation of a date-time
 186.200 +     */
 186.201 +    public Trigger(final ParameterList aList, final DateTime dateTime) {
 186.202 +        super(TRIGGER, aList, PropertyFactoryImpl.getInstance());
 186.203 +        setDateTime(dateTime);
 186.204 +    }
 186.205 +
 186.206 +    /**
 186.207 +     * {@inheritDoc}
 186.208 +     */
 186.209 +    public final void validate() throws ValidationException {
 186.210 +        super.validate();
 186.211 +
 186.212 +        final Parameter relParam = getParameter(Parameter.RELATED);
 186.213 +        final Parameter valueParam = getParameter(Parameter.VALUE);
 186.214 +
 186.215 +        if (relParam != null || !Value.DATE_TIME.equals(valueParam)) {
 186.216 +
 186.217 +            ParameterValidator.getInstance().assertOneOrLess(Parameter.RELATED,
 186.218 +                    getParameters());
 186.219 +            
 186.220 +            ParameterValidator.getInstance().assertNullOrEqual(Value.DURATION,
 186.221 +                    getParameters());
 186.222 +
 186.223 +            if (getDuration() == null) {
 186.224 +                throw new ValidationException("Duration value not specified");
 186.225 +            }
 186.226 +        }
 186.227 +        else {
 186.228 +            ParameterValidator.getInstance().assertOne(Parameter.VALUE,
 186.229 +                    getParameters());
 186.230 +            
 186.231 +            ParameterValidator.getInstance().assertNullOrEqual(Value.DATE_TIME,
 186.232 +                    getParameters());
 186.233 +
 186.234 +            if (getDateTime() == null) {
 186.235 +                throw new ValidationException("DATE-TIME value not specified");
 186.236 +            }
 186.237 +        }
 186.238 +    }
 186.239 +
 186.240 +    /**
 186.241 +     * @return Returns the duration.
 186.242 +     */
 186.243 +    public final Dur getDuration() {
 186.244 +        return duration;
 186.245 +    }
 186.246 +
 186.247 +    /**
 186.248 +     * {@inheritDoc}
 186.249 +     */
 186.250 +    public final void setValue(final String aValue) {
 186.251 +        try {
 186.252 +            super.setValue(aValue);
 186.253 +            duration = null;
 186.254 +        }
 186.255 +        catch (ParseException pe) {
 186.256 +            duration = new Dur(aValue);
 186.257 +            super.setDateTime(null);
 186.258 +        }
 186.259 +    }
 186.260 +
 186.261 +    /**
 186.262 +     * {@inheritDoc}
 186.263 +     */
 186.264 +    public final String getValue() {
 186.265 +        if (duration != null) {
 186.266 +            return duration.toString();
 186.267 +        }
 186.268 +        return super.getValue();
 186.269 +    }
 186.270 +
 186.271 +    /**
 186.272 +     * @param dateTime The dateTime to set.
 186.273 +     */
 186.274 +    public final void setDateTime(final DateTime dateTime) {
 186.275 +        super.setDateTime(dateTime);
 186.276 +        duration = null;
 186.277 +        getParameters().replace(Value.DATE_TIME);
 186.278 +    }
 186.279 +
 186.280 +    /**
 186.281 +     * @param duration The duration to set.
 186.282 +     */
 186.283 +    public final void setDuration(final Dur duration) {
 186.284 +        this.duration = duration;
 186.285 +        super.setDateTime(null);
 186.286 +        // duration is the default value type for Trigger..
 186.287 +        if (getParameter(Parameter.VALUE) != null) {
 186.288 +            getParameters().replace(Value.DURATION);
 186.289 +        }
 186.290 +    }
 186.291 +}
   187.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   187.2 +++ b/src/net/fortuna/ical4j/model/property/TzId.java	Tue Feb 10 18:12:00 2015 +0100
   187.3 @@ -0,0 +1,158 @@
   187.4 +/**
   187.5 + * Copyright (c) 2012, Ben Fortuna
   187.6 + * All rights reserved.
   187.7 + *
   187.8 + * Redistribution and use in source and binary forms, with or without
   187.9 + * modification, are permitted provided that the following conditions
  187.10 + * are met:
  187.11 + *
  187.12 + *  o Redistributions of source code must retain the above copyright
  187.13 + * notice, this list of conditions and the following disclaimer.
  187.14 + *
  187.15 + *  o Redistributions in binary form must reproduce the above copyright
  187.16 + * notice, this list of conditions and the following disclaimer in the
  187.17 + * documentation and/or other materials provided with the distribution.
  187.18 + *
  187.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  187.20 + * may be used to endorse or promote products derived from this software
  187.21 + * without specific prior written permission.
  187.22 + *
  187.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  187.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  187.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  187.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  187.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  187.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  187.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  187.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  187.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  187.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  187.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  187.34 + */
  187.35 +package net.fortuna.ical4j.model.property;
  187.36 +
  187.37 +import net.fortuna.ical4j.model.Escapable;
  187.38 +import net.fortuna.ical4j.model.ParameterList;
  187.39 +import net.fortuna.ical4j.model.Property;
  187.40 +import net.fortuna.ical4j.model.PropertyFactoryImpl;
  187.41 +import net.fortuna.ical4j.model.ValidationException;
  187.42 +
  187.43 +/**
  187.44 + * $Id$
  187.45 + * 
  187.46 + * Created: [Apr 6, 2004]
  187.47 + *
  187.48 + * Defines a TZID iCalendar component property.
  187.49 + * 
  187.50 + * <pre>
  187.51 + *     4.8.3.1 Time Zone Identifier
  187.52 + *     
  187.53 + *        Property Name: TZID
  187.54 + *     
  187.55 + *        Purpose: This property specifies the text value that uniquely
  187.56 + *        identifies the &quot;VTIMEZONE&quot; calendar component.
  187.57 + *     
  187.58 + *        Value Type: TEXT
  187.59 + *     
  187.60 + *        Property Parameters: Non-standard property parameters can be
  187.61 + *        specified on this property.
  187.62 + *     
  187.63 + *        Conformance: This property MUST be specified in a &quot;VTIMEZONE&quot;
  187.64 + *        calendar component.
  187.65 + *     
  187.66 + *        Description: This is the label by which a time zone calendar
  187.67 + *        component is referenced by any iCalendar properties whose data type
  187.68 + *        is either DATE-TIME or TIME and not intended to specify a UTC or a
  187.69 + *        &quot;floating&quot; time. The presence of the SOLIDUS character (US-ASCII
  187.70 + *        decimal 47) as a prefix, indicates that this TZID represents an
  187.71 + *        unique ID in a globally defined time zone registry (when such
  187.72 + *        registry is defined).
  187.73 + *     
  187.74 + *             Note: This document does not define a naming convention for time
  187.75 + *             zone identifiers. Implementers may want to use the naming
  187.76 + *             conventions defined in existing time zone specifications such as
  187.77 + *             the public-domain Olson database [TZ]. The specification of
  187.78 + *             globally unique time zone identifiers is not addressed by this
  187.79 + *             document and is left for future study.
  187.80 + *     
  187.81 + *        Format Definition: This property is defined by the following
  187.82 + *        notation:
  187.83 + *     
  187.84 + *          tzid       = &quot;TZID&quot; tzidpropparam &quot;:&quot; [tzidprefix] text CRLF
  187.85 + *     
  187.86 + *          tzidpropparam      = *(&quot;;&quot; xparam)
  187.87 + *     
  187.88 + *          ;tzidprefix        = &quot;/&quot;
  187.89 + *          ; Defined previously. Just listed here for reader convenience.
  187.90 + *     
  187.91 + *        Example: The following are examples of non-globally unique time zone
  187.92 + *        identifiers:
  187.93 + *     
  187.94 + *          TZID:US-Eastern
  187.95 + *     
  187.96 + *          TZID:California-Los_Angeles
  187.97 + *     
  187.98 + *        The following is an example of a fictitious globally unique time zone
  187.99 + *        identifier:
 187.100 + *     
 187.101 + *          TZID:/US-New_York-New_York
 187.102 + * </pre>
 187.103 + * 
 187.104 + * @author Ben Fortuna
 187.105 + */
 187.106 +public class TzId extends Property implements Escapable {
 187.107 +
 187.108 +    private static final long serialVersionUID = -522764921502407137L;
 187.109 +
 187.110 +    /**
 187.111 +     * Timezone identifier prefix.
 187.112 +     */
 187.113 +    public static final String PREFIX = "/";
 187.114 +
 187.115 +    private String value;
 187.116 +
 187.117 +    /**
 187.118 +     * Default constructor.
 187.119 +     */
 187.120 +    public TzId() {
 187.121 +        super(TZID, PropertyFactoryImpl.getInstance());
 187.122 +    }
 187.123 +
 187.124 +    /**
 187.125 +     * @param aValue a value string for this component
 187.126 +     */
 187.127 +    public TzId(final String aValue) {
 187.128 +        super(TZID, PropertyFactoryImpl.getInstance());
 187.129 +        setValue(aValue);
 187.130 +    }
 187.131 +
 187.132 +    /**
 187.133 +     * @param aList a list of parameters for this component
 187.134 +     * @param aValue a value string for this component
 187.135 +     */
 187.136 +    public TzId(final ParameterList aList, final String aValue) {
 187.137 +        super(TZID, aList, PropertyFactoryImpl.getInstance());
 187.138 +        setValue(aValue);
 187.139 +    }
 187.140 +
 187.141 +    /**
 187.142 +     * {@inheritDoc}
 187.143 +     */
 187.144 +    public final void setValue(final String aValue) {
 187.145 +        this.value = aValue;
 187.146 +    }
 187.147 +
 187.148 +    /**
 187.149 +     * {@inheritDoc}
 187.150 +     */
 187.151 +    public final String getValue() {
 187.152 +        return value;
 187.153 +    }
 187.154 +
 187.155 +    /**
 187.156 +     * {@inheritDoc}
 187.157 +     */
 187.158 +    public final void validate() throws ValidationException {
 187.159 +        // TODO: Auto-generated method stub
 187.160 +    }
 187.161 +}
   188.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   188.2 +++ b/src/net/fortuna/ical4j/model/property/TzName.java	Tue Feb 10 18:12:00 2015 +0100
   188.3 @@ -0,0 +1,109 @@
   188.4 +/**
   188.5 + * Copyright (c) 2012, Ben Fortuna
   188.6 + * All rights reserved.
   188.7 + *
   188.8 + * Redistribution and use in source and binary forms, with or without
   188.9 + * modification, are permitted provided that the following conditions
  188.10 + * are met:
  188.11 + *
  188.12 + *  o Redistributions of source code must retain the above copyright
  188.13 + * notice, this list of conditions and the following disclaimer.
  188.14 + *
  188.15 + *  o Redistributions in binary form must reproduce the above copyright
  188.16 + * notice, this list of conditions and the following disclaimer in the
  188.17 + * documentation and/or other materials provided with the distribution.
  188.18 + *
  188.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  188.20 + * may be used to endorse or promote products derived from this software
  188.21 + * without specific prior written permission.
  188.22 + *
  188.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  188.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  188.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  188.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  188.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  188.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  188.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  188.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  188.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  188.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  188.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  188.34 + */
  188.35 +package net.fortuna.ical4j.model.property;
  188.36 +
  188.37 +import net.fortuna.ical4j.model.Escapable;
  188.38 +import net.fortuna.ical4j.model.Parameter;
  188.39 +import net.fortuna.ical4j.model.ParameterList;
  188.40 +import net.fortuna.ical4j.model.Property;
  188.41 +import net.fortuna.ical4j.model.PropertyFactoryImpl;
  188.42 +import net.fortuna.ical4j.model.ValidationException;
  188.43 +import net.fortuna.ical4j.util.ParameterValidator;
  188.44 +
  188.45 +/**
  188.46 + * $Id$
  188.47 + * 
  188.48 + * Created: [Apr 6, 2004]
  188.49 + *
  188.50 + * Defines a TZNAME iCalendar component property.
  188.51 + * @author benf
  188.52 + */
  188.53 +public class TzName extends Property implements Escapable {
  188.54 +
  188.55 +    private static final long serialVersionUID = -6930099834219160086L;
  188.56 +
  188.57 +    private String value;
  188.58 +
  188.59 +    /**
  188.60 +     * Default constructor.
  188.61 +     */
  188.62 +    public TzName() {
  188.63 +        super(TZNAME, PropertyFactoryImpl.getInstance());
  188.64 +    }
  188.65 +
  188.66 +    /**
  188.67 +     * @param aValue a value string for this component
  188.68 +     */
  188.69 +    public TzName(final String aValue) {
  188.70 +        super(TZNAME, PropertyFactoryImpl.getInstance());
  188.71 +        setValue(aValue);
  188.72 +    }
  188.73 +
  188.74 +    /**
  188.75 +     * @param aList a list of parameters for this component
  188.76 +     * @param aValue a value string for this component
  188.77 +     */
  188.78 +    public TzName(final ParameterList aList, final String aValue) {
  188.79 +        super(TZNAME, aList, PropertyFactoryImpl.getInstance());
  188.80 +        setValue(aValue);
  188.81 +    }
  188.82 +
  188.83 +    /**
  188.84 +     * {@inheritDoc}
  188.85 +     */
  188.86 +    public final void validate() throws ValidationException {
  188.87 +
  188.88 +        /*
  188.89 +         * ; the following is optional, ; but MUST NOT occur more than once (";" languageparam) /
  188.90 +         */
  188.91 +        ParameterValidator.getInstance().assertOneOrLess(Parameter.LANGUAGE,
  188.92 +                getParameters());
  188.93 +
  188.94 +        /*
  188.95 +         * ; the following is optional, ; and MAY occur more than once (";" xparam)
  188.96 +         */
  188.97 +    }
  188.98 +
  188.99 +    /**
 188.100 +     * {@inheritDoc}
 188.101 +     */
 188.102 +    public final void setValue(final String aValue) {
 188.103 +        this.value = aValue;
 188.104 +    }
 188.105 +
 188.106 +    /**
 188.107 +     * {@inheritDoc}
 188.108 +     */
 188.109 +    public final String getValue() {
 188.110 +        return value;
 188.111 +    }
 188.112 +}
   189.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   189.2 +++ b/src/net/fortuna/ical4j/model/property/TzOffsetFrom.java	Tue Feb 10 18:12:00 2015 +0100
   189.3 @@ -0,0 +1,132 @@
   189.4 +/**
   189.5 + * Copyright (c) 2012, Ben Fortuna
   189.6 + * All rights reserved.
   189.7 + *
   189.8 + * Redistribution and use in source and binary forms, with or without
   189.9 + * modification, are permitted provided that the following conditions
  189.10 + * are met:
  189.11 + *
  189.12 + *  o Redistributions of source code must retain the above copyright
  189.13 + * notice, this list of conditions and the following disclaimer.
  189.14 + *
  189.15 + *  o Redistributions in binary form must reproduce the above copyright
  189.16 + * notice, this list of conditions and the following disclaimer in the
  189.17 + * documentation and/or other materials provided with the distribution.
  189.18 + *
  189.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  189.20 + * may be used to endorse or promote products derived from this software
  189.21 + * without specific prior written permission.
  189.22 + *
  189.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  189.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  189.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  189.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  189.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  189.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  189.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  189.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  189.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  189.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  189.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  189.34 + */
  189.35 +package net.fortuna.ical4j.model.property;
  189.36 +
  189.37 +import net.fortuna.ical4j.model.ParameterList;
  189.38 +import net.fortuna.ical4j.model.Property;
  189.39 +import net.fortuna.ical4j.model.PropertyFactoryImpl;
  189.40 +import net.fortuna.ical4j.model.UtcOffset;
  189.41 +import net.fortuna.ical4j.model.ValidationException;
  189.42 +
  189.43 +/**
  189.44 + * $Id$
  189.45 + * 
  189.46 + * Created: [Apr 6, 2004]
  189.47 + *
  189.48 + * Defines a TZOFFSETFROM iCalendar component property.
  189.49 + * @author benf
  189.50 + */
  189.51 +public class TzOffsetFrom extends Property {
  189.52 +
  189.53 +    private static final long serialVersionUID = 450274263165493502L;
  189.54 +
  189.55 +    private UtcOffset offset;
  189.56 +
  189.57 +    /**
  189.58 +     * Default constructor.
  189.59 +     */
  189.60 +    public TzOffsetFrom() {
  189.61 +        super(TZOFFSETFROM, PropertyFactoryImpl.getInstance());
  189.62 +    }
  189.63 +
  189.64 +    /**
  189.65 +     * @param aValue a value string for this component
  189.66 +     */
  189.67 +    public TzOffsetFrom(final String aValue) {
  189.68 +        super(TZOFFSETFROM, PropertyFactoryImpl.getInstance());
  189.69 +        setValue(aValue);
  189.70 +    }
  189.71 +
  189.72 +    /**
  189.73 +     * @param aList a list of parameters for this component
  189.74 +     * @param aValue a value string for this component
  189.75 +     */
  189.76 +    public TzOffsetFrom(final ParameterList aList, final String aValue) {
  189.77 +        super(TZOFFSETFROM, aList, PropertyFactoryImpl.getInstance());
  189.78 +        setValue(aValue);
  189.79 +    }
  189.80 +
  189.81 +    /**
  189.82 +     * @param anOffset a timezone offset in milliseconds
  189.83 +     */
  189.84 +    public TzOffsetFrom(final UtcOffset anOffset) {
  189.85 +        super(TZOFFSETFROM, PropertyFactoryImpl.getInstance());
  189.86 +        offset = anOffset;
  189.87 +    }
  189.88 +
  189.89 +    /**
  189.90 +     * @param aList a list of parameters for this component
  189.91 +     * @param anOffset a timezone offset in milliseconds
  189.92 +     */
  189.93 +    public TzOffsetFrom(final ParameterList aList, final UtcOffset anOffset) {
  189.94 +        super(TZOFFSETFROM, aList, PropertyFactoryImpl.getInstance());
  189.95 +        offset = anOffset;
  189.96 +    }
  189.97 +
  189.98 +    /**
  189.99 +     * @return Returns the offset.
 189.100 +     */
 189.101 +    public final UtcOffset getOffset() {
 189.102 +        return offset;
 189.103 +    }
 189.104 +
 189.105 +    /**
 189.106 +     * {@inheritDoc}
 189.107 +     */
 189.108 +    public final void setValue(final String aValue) {
 189.109 +        offset = new UtcOffset(aValue);
 189.110 +    }
 189.111 +
 189.112 +    /**
 189.113 +     * {@inheritDoc}
 189.114 +     */
 189.115 +    public final String getValue() {
 189.116 +        if (offset != null) {
 189.117 +            return offset.toString();
 189.118 +        }
 189.119 +        return "";
 189.120 +    }
 189.121 +
 189.122 +    /**
 189.123 +     * @param offset The offset to set.
 189.124 +     */
 189.125 +    public final void setOffset(final UtcOffset offset) {
 189.126 +        this.offset = offset;
 189.127 +    }
 189.128 +
 189.129 +    /**
 189.130 +     * {@inheritDoc}
 189.131 +     */
 189.132 +    public final void validate() throws ValidationException {
 189.133 +        // TODO: Auto-generated method stub
 189.134 +    }
 189.135 +}
   190.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   190.2 +++ b/src/net/fortuna/ical4j/model/property/TzOffsetTo.java	Tue Feb 10 18:12:00 2015 +0100
   190.3 @@ -0,0 +1,132 @@
   190.4 +/**
   190.5 + * Copyright (c) 2012, Ben Fortuna
   190.6 + * All rights reserved.
   190.7 + *
   190.8 + * Redistribution and use in source and binary forms, with or without
   190.9 + * modification, are permitted provided that the following conditions
  190.10 + * are met:
  190.11 + *
  190.12 + *  o Redistributions of source code must retain the above copyright
  190.13 + * notice, this list of conditions and the following disclaimer.
  190.14 + *
  190.15 + *  o Redistributions in binary form must reproduce the above copyright
  190.16 + * notice, this list of conditions and the following disclaimer in the
  190.17 + * documentation and/or other materials provided with the distribution.
  190.18 + *
  190.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  190.20 + * may be used to endorse or promote products derived from this software
  190.21 + * without specific prior written permission.
  190.22 + *
  190.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  190.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  190.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  190.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  190.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  190.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  190.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  190.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  190.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  190.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  190.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  190.34 + */
  190.35 +package net.fortuna.ical4j.model.property;
  190.36 +
  190.37 +import net.fortuna.ical4j.model.ParameterList;
  190.38 +import net.fortuna.ical4j.model.Property;
  190.39 +import net.fortuna.ical4j.model.PropertyFactoryImpl;
  190.40 +import net.fortuna.ical4j.model.UtcOffset;
  190.41 +import net.fortuna.ical4j.model.ValidationException;
  190.42 +
  190.43 +/**
  190.44 + * $Id$
  190.45 + * 
  190.46 + * Created: [Apr 6, 2004]
  190.47 + *
  190.48 + * Defines a TZOFFSETTO iCalendar component property.
  190.49 + * @author benf
  190.50 + */
  190.51 +public class TzOffsetTo extends Property {
  190.52 +
  190.53 +    private static final long serialVersionUID = 8213874575051177732L;
  190.54 +
  190.55 +    private UtcOffset offset;
  190.56 +
  190.57 +    /**
  190.58 +     * Default constructor.
  190.59 +     */
  190.60 +    public TzOffsetTo() {
  190.61 +        super(TZOFFSETTO, PropertyFactoryImpl.getInstance());
  190.62 +    }
  190.63 +
  190.64 +    /**
  190.65 +     * @param value an offset value
  190.66 +     */
  190.67 +    public TzOffsetTo(String value) {
  190.68 +        super(TZOFFSETTO, PropertyFactoryImpl.getInstance());
  190.69 +        setValue(value);
  190.70 +    }
  190.71 +    
  190.72 +    /**
  190.73 +     * @param aList a list of parameters for this component
  190.74 +     * @param aValue a value string for this component
  190.75 +     */
  190.76 +    public TzOffsetTo(final ParameterList aList, final String aValue) {
  190.77 +        super(TZOFFSETTO, aList, PropertyFactoryImpl.getInstance());
  190.78 +        setValue(aValue);
  190.79 +    }
  190.80 +
  190.81 +    /**
  190.82 +     * @param anOffset a timezone offset in milliseconds
  190.83 +     */
  190.84 +    public TzOffsetTo(final UtcOffset anOffset) {
  190.85 +        super(TZOFFSETTO, PropertyFactoryImpl.getInstance());
  190.86 +        offset = anOffset;
  190.87 +    }
  190.88 +
  190.89 +    /**
  190.90 +     * @param aList a list of parameters for this component
  190.91 +     * @param anOffset a timezone offset in milliseconds
  190.92 +     */
  190.93 +    public TzOffsetTo(final ParameterList aList, final UtcOffset anOffset) {
  190.94 +        super(TZOFFSETTO, aList, PropertyFactoryImpl.getInstance());
  190.95 +        offset = anOffset;
  190.96 +    }
  190.97 +
  190.98 +    /**
  190.99 +     * @return Returns the offset.
 190.100 +     */
 190.101 +    public final UtcOffset getOffset() {
 190.102 +        return offset;
 190.103 +    }
 190.104 +
 190.105 +    /**
 190.106 +     * {@inheritDoc}
 190.107 +     */
 190.108 +    public final void setValue(final String aValue) {
 190.109 +        offset = new UtcOffset(aValue);
 190.110 +    }
 190.111 +
 190.112 +    /**
 190.113 +     * {@inheritDoc}
 190.114 +     */
 190.115 +    public final String getValue() {
 190.116 +        if (offset != null) {
 190.117 +            return offset.toString();
 190.118 +        }
 190.119 +        return "";
 190.120 +    }
 190.121 +
 190.122 +    /**
 190.123 +     * @param offset The offset to set.
 190.124 +     */
 190.125 +    public final void setOffset(final UtcOffset offset) {
 190.126 +        this.offset = offset;
 190.127 +    }
 190.128 +
 190.129 +    /**
 190.130 +     * {@inheritDoc}
 190.131 +     */
 190.132 +    public final void validate() throws ValidationException {
 190.133 +        // TODO: Auto-generated method stub
 190.134 +    }
 190.135 +}
   191.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   191.2 +++ b/src/net/fortuna/ical4j/model/property/TzUrl.java	Tue Feb 10 18:12:00 2015 +0100
   191.3 @@ -0,0 +1,163 @@
   191.4 +/**
   191.5 + * Copyright (c) 2012, Ben Fortuna
   191.6 + * All rights reserved.
   191.7 + *
   191.8 + * Redistribution and use in source and binary forms, with or without
   191.9 + * modification, are permitted provided that the following conditions
  191.10 + * are met:
  191.11 + *
  191.12 + *  o Redistributions of source code must retain the above copyright
  191.13 + * notice, this list of conditions and the following disclaimer.
  191.14 + *
  191.15 + *  o Redistributions in binary form must reproduce the above copyright
  191.16 + * notice, this list of conditions and the following disclaimer in the
  191.17 + * documentation and/or other materials provided with the distribution.
  191.18 + *
  191.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  191.20 + * may be used to endorse or promote products derived from this software
  191.21 + * without specific prior written permission.
  191.22 + *
  191.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  191.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  191.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  191.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  191.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  191.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  191.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  191.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  191.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  191.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  191.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  191.34 + */
  191.35 +package net.fortuna.ical4j.model.property;
  191.36 +
  191.37 +import java.net.URI;
  191.38 +import java.net.URISyntaxException;
  191.39 +
  191.40 +import net.fortuna.ical4j.model.ParameterList;
  191.41 +import net.fortuna.ical4j.model.Property;
  191.42 +import net.fortuna.ical4j.model.PropertyFactoryImpl;
  191.43 +import net.fortuna.ical4j.model.ValidationException;
  191.44 +import net.fortuna.ical4j.util.Strings;
  191.45 +import net.fortuna.ical4j.util.Uris;
  191.46 +
  191.47 +/**
  191.48 + * $Id$
  191.49 + * 
  191.50 + * Created: [Apr 6, 2004]
  191.51 + *
  191.52 + * Defines a TZURL iCalendar component property.
  191.53 + * 
  191.54 + * <pre>
  191.55 + *     4.8.3.5 Time Zone URL
  191.56 + *     
  191.57 + *        Property Name: TZURL
  191.58 + *     
  191.59 + *        Purpose: The TZURL provides a means for a VTIMEZONE component to
  191.60 + *        point to a network location that can be used to retrieve an up-to-
  191.61 + *        date version of itself.
  191.62 + *     
  191.63 + *        Value Type: URI
  191.64 + *     
  191.65 + *        Property Parameters: Non-standard property parameters can be
  191.66 + *        specified on this property.
  191.67 + *     
  191.68 + *        Conformance: This property can be specified in a &quot;VTIMEZONE&quot; calendar
  191.69 + *        component.
  191.70 + *     
  191.71 + *        Description: The TZURL provides a means for a VTIMEZONE component to
  191.72 + *        point to a network location that can be used to retrieve an up-to-
  191.73 + *        date version of itself. This provides a hook to handle changes
  191.74 + *        government bodies impose upon time zone definitions. Retrieval of
  191.75 + *        this resource results in an iCalendar object containing a single
  191.76 + *        VTIMEZONE component and a METHOD property set to PUBLISH.
  191.77 + *     
  191.78 + *        Format Definition: The property is defined by the following notation:
  191.79 + *     
  191.80 + *          tzurl      = &quot;TZURL&quot; tzurlparam &quot;:&quot; uri CRLF
  191.81 + *     
  191.82 + *          tzurlparam = *(&quot;;&quot; xparam)
  191.83 + *     
  191.84 + *        Example: The following is an example of this property:
  191.85 + *     
  191.86 + *          TZURL:http://timezones.r.us.net/tz/US-California-Los_Angeles
  191.87 + * </pre>
  191.88 + * 
  191.89 + * @author Ben Fortuna
  191.90 + */
  191.91 +public class TzUrl extends Property {
  191.92 +
  191.93 +    private static final long serialVersionUID = 9106100107954797406L;
  191.94 +
  191.95 +    private URI uri;
  191.96 +
  191.97 +    /**
  191.98 +     * Default constructor.
  191.99 +     */
 191.100 +    public TzUrl() {
 191.101 +        super(TZURL, PropertyFactoryImpl.getInstance());
 191.102 +    }
 191.103 +
 191.104 +    /**
 191.105 +     * @param aList a list of parameters for this component
 191.106 +     * @param aValue a value string for this component
 191.107 +     * @throws URISyntaxException where the specified value string is not a valid uri
 191.108 +     */
 191.109 +    public TzUrl(final ParameterList aList, final String aValue)
 191.110 +            throws URISyntaxException {
 191.111 +        super(TZURL, aList, PropertyFactoryImpl.getInstance());
 191.112 +        setValue(aValue);
 191.113 +    }
 191.114 +
 191.115 +    /**
 191.116 +     * @param aUri a URI
 191.117 +     */
 191.118 +    public TzUrl(final URI aUri) {
 191.119 +        super(TZURL, PropertyFactoryImpl.getInstance());
 191.120 +        uri = aUri;
 191.121 +    }
 191.122 +
 191.123 +    /**
 191.124 +     * @param aList a list of parameters for this component
 191.125 +     * @param aUri a URI
 191.126 +     */
 191.127 +    public TzUrl(final ParameterList aList, final URI aUri) {
 191.128 +        super(TZURL, aList, PropertyFactoryImpl.getInstance());
 191.129 +        uri = aUri;
 191.130 +    }
 191.131 +
 191.132 +    /**
 191.133 +     * @return Returns the uri.
 191.134 +     */
 191.135 +    public final URI getUri() {
 191.136 +        return uri;
 191.137 +    }
 191.138 +
 191.139 +    /**
 191.140 +     * {@inheritDoc}
 191.141 +     */
 191.142 +    public final void setValue(final String aValue) throws URISyntaxException {
 191.143 +        uri = Uris.create(aValue);
 191.144 +    }
 191.145 +
 191.146 +    /**
 191.147 +     * {@inheritDoc}
 191.148 +     */
 191.149 +    public final String getValue() {
 191.150 +        return Uris.decode(Strings.valueOf(getUri()));
 191.151 +    }
 191.152 +
 191.153 +    /**
 191.154 +     * @param uri The uri to set.
 191.155 +     */
 191.156 +    public final void setUri(final URI uri) {
 191.157 +        this.uri = uri;
 191.158 +    }
 191.159 +
 191.160 +    /**
 191.161 +     * {@inheritDoc}
 191.162 +     */
 191.163 +    public final void validate() throws ValidationException {
 191.164 +        // TODO: Auto-generated method stub
 191.165 +    }
 191.166 +}
   192.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   192.2 +++ b/src/net/fortuna/ical4j/model/property/Uid.java	Tue Feb 10 18:12:00 2015 +0100
   192.3 @@ -0,0 +1,166 @@
   192.4 +/**
   192.5 + * Copyright (c) 2012, Ben Fortuna
   192.6 + * All rights reserved.
   192.7 + *
   192.8 + * Redistribution and use in source and binary forms, with or without
   192.9 + * modification, are permitted provided that the following conditions
  192.10 + * are met:
  192.11 + *
  192.12 + *  o Redistributions of source code must retain the above copyright
  192.13 + * notice, this list of conditions and the following disclaimer.
  192.14 + *
  192.15 + *  o Redistributions in binary form must reproduce the above copyright
  192.16 + * notice, this list of conditions and the following disclaimer in the
  192.17 + * documentation and/or other materials provided with the distribution.
  192.18 + *
  192.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  192.20 + * may be used to endorse or promote products derived from this software
  192.21 + * without specific prior written permission.
  192.22 + *
  192.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  192.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  192.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  192.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  192.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  192.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  192.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  192.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  192.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  192.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  192.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  192.34 + */
  192.35 +package net.fortuna.ical4j.model.property;
  192.36 +
  192.37 +import net.fortuna.ical4j.model.Escapable;
  192.38 +import net.fortuna.ical4j.model.ParameterList;
  192.39 +import net.fortuna.ical4j.model.Property;
  192.40 +import net.fortuna.ical4j.model.PropertyFactoryImpl;
  192.41 +import net.fortuna.ical4j.model.ValidationException;
  192.42 +
  192.43 +/**
  192.44 + * $Id$
  192.45 + * 
  192.46 + * Created: [Apr 6, 2004]
  192.47 + *
  192.48 + * Defines a UID iCalendar component property.
  192.49 + * 
  192.50 + * <pre>
  192.51 + *     4.8.4.7 Unique Identifier
  192.52 + *     
  192.53 + *        Property Name: UID
  192.54 + *     
  192.55 + *        Purpose: This property defines the persistent, globally unique
  192.56 + *        identifier for the calendar component.
  192.57 + *     
  192.58 + *        Value Type: TEXT
  192.59 + *     
  192.60 + *        Property Parameters: Non-standard property parameters can be
  192.61 + *        specified on this property.
  192.62 + *     
  192.63 + *        Conformance: The property MUST be specified in the &quot;VEVENT&quot;, &quot;VTODO&quot;,
  192.64 + *        &quot;VJOURNAL&quot; or &quot;VFREEBUSY&quot; calendar components.
  192.65 + *     
  192.66 + *        Description: The UID itself MUST be a globally unique identifier. The
  192.67 + *        generator of the identifier MUST guarantee that the identifier is
  192.68 + *        unique. There are several algorithms that can be used to accomplish
  192.69 + *        this. The identifier is RECOMMENDED to be the identical syntax to the
  192.70 + *        [RFC 822] addr-spec. A good method to assure uniqueness is to put the
  192.71 + *        domain name or a domain literal IP address of the host on which the
  192.72 + *        identifier was created on the right hand side of the &quot;@&quot;, and on the
  192.73 + *        left hand side, put a combination of the current calendar date and
  192.74 + *        time of day (i.e., formatted in as a DATE-TIME value) along with some
  192.75 + *        other currently unique (perhaps sequential) identifier available on
  192.76 + *        the system (for example, a process id number). Using a date/time
  192.77 + *        value on the left hand side and a domain name or domain literal on
  192.78 + *        the right hand side makes it possible to guarantee uniqueness since
  192.79 + *        no two hosts should be using the same domain name or IP address at
  192.80 + *        the same time. Though other algorithms will work, it is RECOMMENDED
  192.81 + *        that the right hand side contain some domain identifier (either of
  192.82 + *        the host itself or otherwise) such that the generator of the message
  192.83 + *        identifier can guarantee the uniqueness of the left hand side within
  192.84 + *        the scope of that domain.
  192.85 + *     
  192.86 + *        This is the method for correlating scheduling messages with the
  192.87 + *        referenced &quot;VEVENT&quot;, &quot;VTODO&quot;, or &quot;VJOURNAL&quot; calendar component.
  192.88 + *     
  192.89 + *        The full range of calendar components specified by a recurrence set
  192.90 + *        is referenced by referring to just the &quot;UID&quot; property value
  192.91 + *        corresponding to the calendar component. The &quot;RECURRENCE-ID&quot; property
  192.92 + *        allows the reference to an individual instance within the recurrence
  192.93 + *        set.
  192.94 + *     
  192.95 + *        This property is an important method for group scheduling
  192.96 + *        applications to match requests with later replies, modifications or
  192.97 + *        deletion requests. Calendaring and scheduling applications MUST
  192.98 + *        generate this property in &quot;VEVENT&quot;, &quot;VTODO&quot; and &quot;VJOURNAL&quot; calendar
  192.99 + *        components to assure interoperability with other group scheduling
 192.100 + *        applications. This identifier is created by the calendar system that
 192.101 + *        generates an iCalendar object.
 192.102 + *     
 192.103 + *        Implementations MUST be able to receive and persist values of at
 192.104 + *        least 255 characters for this property.
 192.105 + *     
 192.106 + *        Format Definition: The property is defined by the following notation:
 192.107 + *     
 192.108 + *          uid        = &quot;UID&quot; uidparam &quot;:&quot; text CRLF
 192.109 + *     
 192.110 + *          uidparam   = *(&quot;;&quot; xparam)
 192.111 + *     
 192.112 + *        Example: The following is an example of this property:
 192.113 + *     
 192.114 + *          UID:19960401T080045Z-4000F192713-0052@host1.com
 192.115 + * </pre>
 192.116 + * 
 192.117 + * @author Ben Fortuna
 192.118 + */
 192.119 +public class Uid extends Property implements Escapable {
 192.120 +
 192.121 +    private static final long serialVersionUID = -7139407612536588584L;
 192.122 +
 192.123 +    private String value;
 192.124 +
 192.125 +    /**
 192.126 +     * Default constructor.
 192.127 +     */
 192.128 +    public Uid() {
 192.129 +        super(UID, PropertyFactoryImpl.getInstance());
 192.130 +    }
 192.131 +
 192.132 +    /**
 192.133 +     * @param aValue a value string for this component
 192.134 +     */
 192.135 +    public Uid(final String aValue) {
 192.136 +        super(UID, PropertyFactoryImpl.getInstance());
 192.137 +        setValue(aValue);
 192.138 +    }
 192.139 +
 192.140 +    /**
 192.141 +     * @param aList a list of parameters for this component
 192.142 +     * @param aValue a value string for this component
 192.143 +     */
 192.144 +    public Uid(final ParameterList aList, final String aValue) {
 192.145 +        super(UID, aList, PropertyFactoryImpl.getInstance());
 192.146 +        setValue(aValue);
 192.147 +    }
 192.148 +
 192.149 +    /**
 192.150 +     * {@inheritDoc}
 192.151 +     */
 192.152 +    public final void setValue(final String aValue) {
 192.153 +        this.value = aValue;
 192.154 +    }
 192.155 +
 192.156 +    /**
 192.157 +     * {@inheritDoc}
 192.158 +     */
 192.159 +    public final String getValue() {
 192.160 +        return value;
 192.161 +    }
 192.162 +
 192.163 +    /**
 192.164 +     * {@inheritDoc}
 192.165 +     */
 192.166 +    public final void validate() throws ValidationException {
 192.167 +        // TODO: Auto-generated method stub
 192.168 +    }
 192.169 +}
   193.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   193.2 +++ b/src/net/fortuna/ical4j/model/property/Url.java	Tue Feb 10 18:12:00 2015 +0100
   193.3 @@ -0,0 +1,163 @@
   193.4 +/**
   193.5 + * Copyright (c) 2012, Ben Fortuna
   193.6 + * All rights reserved.
   193.7 + *
   193.8 + * Redistribution and use in source and binary forms, with or without
   193.9 + * modification, are permitted provided that the following conditions
  193.10 + * are met:
  193.11 + *
  193.12 + *  o Redistributions of source code must retain the above copyright
  193.13 + * notice, this list of conditions and the following disclaimer.
  193.14 + *
  193.15 + *  o Redistributions in binary form must reproduce the above copyright
  193.16 + * notice, this list of conditions and the following disclaimer in the
  193.17 + * documentation and/or other materials provided with the distribution.
  193.18 + *
  193.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  193.20 + * may be used to endorse or promote products derived from this software
  193.21 + * without specific prior written permission.
  193.22 + *
  193.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  193.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  193.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  193.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  193.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  193.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  193.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  193.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  193.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  193.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  193.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  193.34 + */
  193.35 +package net.fortuna.ical4j.model.property;
  193.36 +
  193.37 +import java.net.URI;
  193.38 +import java.net.URISyntaxException;
  193.39 +
  193.40 +import net.fortuna.ical4j.model.ParameterList;
  193.41 +import net.fortuna.ical4j.model.Property;
  193.42 +import net.fortuna.ical4j.model.PropertyFactoryImpl;
  193.43 +import net.fortuna.ical4j.model.ValidationException;
  193.44 +import net.fortuna.ical4j.util.Strings;
  193.45 +import net.fortuna.ical4j.util.Uris;
  193.46 +
  193.47 +/**
  193.48 + * $Id$
  193.49 + * 
  193.50 + * Created: [Apr 6, 2004]
  193.51 + *
  193.52 + * Defines a URL iCalendar component property.
  193.53 + * 
  193.54 + * <pre>
  193.55 + *     4.8.4.6 Uniform Resource Locator
  193.56 + *     
  193.57 + *        Property Name: URL
  193.58 + *     
  193.59 + *        Purpose: This property defines a Uniform Resource Locator (URL)
  193.60 + *        associated with the iCalendar object.
  193.61 + *     
  193.62 + *        Value Type: URI
  193.63 + *     
  193.64 + *        Property Parameters: Non-standard property parameters can be
  193.65 + *        specified on this property.
  193.66 + *     
  193.67 + *        Conformance: This property can be specified once in the &quot;VEVENT&quot;,
  193.68 + *        &quot;VTODO&quot;, &quot;VJOURNAL&quot; or &quot;VFREEBUSY&quot; calendar components.
  193.69 + *     
  193.70 + *        Description: This property may be used in a calendar component to
  193.71 + *        convey a location where a more dynamic rendition of the calendar
  193.72 + *        information associated with the calendar component can be found. This
  193.73 + *        memo does not attempt to standardize the form of the URI, nor the
  193.74 + *        format of the resource pointed to by the property value. If the URL
  193.75 + *        property and Content-Location MIME header are both specified, they
  193.76 + *        MUST point to the same resource.
  193.77 + *     
  193.78 + *        Format Definition: The property is defined by the following notation:
  193.79 + *     
  193.80 + *          url        = &quot;URL&quot; urlparam &quot;:&quot; uri CRLF
  193.81 + *     
  193.82 + *          urlparam   = *(&quot;;&quot; xparam)
  193.83 + *     
  193.84 + *        Example: The following is an example of this property:
  193.85 + *     
  193.86 + *          URL:http://abc.com/pub/calendars/jsmith/mytime.ics
  193.87 + * </pre>
  193.88 + * 
  193.89 + * @author Ben Fortuna
  193.90 + */
  193.91 +public class Url extends Property {
  193.92 +
  193.93 +    private static final long serialVersionUID = 1092576402256525737L;
  193.94 +
  193.95 +    private URI uri;
  193.96 +
  193.97 +    /**
  193.98 +     * Default constructor.
  193.99 +     */
 193.100 +    public Url() {
 193.101 +        super(URL, PropertyFactoryImpl.getInstance());
 193.102 +    }
 193.103 +
 193.104 +    /**
 193.105 +     * @param aList a list of parameters for this component
 193.106 +     * @param aValue a value string for this component
 193.107 +     * @throws URISyntaxException where the specified value string is not a valid uri
 193.108 +     */
 193.109 +    public Url(final ParameterList aList, final String aValue)
 193.110 +            throws URISyntaxException {
 193.111 +        super(URL, aList, PropertyFactoryImpl.getInstance());
 193.112 +        setValue(aValue);
 193.113 +    }
 193.114 +
 193.115 +    /**
 193.116 +     * @param aUri a URI
 193.117 +     */
 193.118 +    public Url(final URI aUri) {
 193.119 +        super(URL, PropertyFactoryImpl.getInstance());
 193.120 +        uri = aUri;
 193.121 +    }
 193.122 +
 193.123 +    /**
 193.124 +     * @param aList a list of parameters for this component
 193.125 +     * @param aUri a URI
 193.126 +     */
 193.127 +    public Url(final ParameterList aList, final URI aUri) {
 193.128 +        super(URL, aList, PropertyFactoryImpl.getInstance());
 193.129 +        uri = aUri;
 193.130 +    }
 193.131 +
 193.132 +    /**
 193.133 +     * @return Returns the uri.
 193.134 +     */
 193.135 +    public final URI getUri() {
 193.136 +        return uri;
 193.137 +    }
 193.138 +
 193.139 +    /**
 193.140 +     * {@inheritDoc}
 193.141 +     */
 193.142 +    public final void setValue(final String aValue) throws URISyntaxException {
 193.143 +        uri = Uris.create(aValue);
 193.144 +    }
 193.145 +
 193.146 +    /**
 193.147 +     * {@inheritDoc}
 193.148 +     */
 193.149 +    public final String getValue() {
 193.150 +        return Uris.decode(Strings.valueOf(getUri()));
 193.151 +    }
 193.152 +
 193.153 +    /**
 193.154 +     * @param uri The uri to set.
 193.155 +     */
 193.156 +    public final void setUri(final URI uri) {
 193.157 +        this.uri = uri;
 193.158 +    }
 193.159 +
 193.160 +    /**
 193.161 +     * {@inheritDoc}
 193.162 +     */
 193.163 +    public final void validate() throws ValidationException {
 193.164 +        // TODO: Auto-generated method stub
 193.165 +    }
 193.166 +}
   194.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   194.2 +++ b/src/net/fortuna/ical4j/model/property/UtcProperty.java	Tue Feb 10 18:12:00 2015 +0100
   194.3 @@ -0,0 +1,119 @@
   194.4 +/**
   194.5 + * Copyright (c) 2012, Ben Fortuna
   194.6 + * All rights reserved.
   194.7 + *
   194.8 + * Redistribution and use in source and binary forms, with or without
   194.9 + * modification, are permitted provided that the following conditions
  194.10 + * are met:
  194.11 + *
  194.12 + *  o Redistributions of source code must retain the above copyright
  194.13 + * notice, this list of conditions and the following disclaimer.
  194.14 + *
  194.15 + *  o Redistributions in binary form must reproduce the above copyright
  194.16 + * notice, this list of conditions and the following disclaimer in the
  194.17 + * documentation and/or other materials provided with the distribution.
  194.18 + *
  194.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  194.20 + * may be used to endorse or promote products derived from this software
  194.21 + * without specific prior written permission.
  194.22 + *
  194.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  194.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  194.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  194.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  194.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  194.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  194.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  194.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  194.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  194.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  194.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  194.34 + */
  194.35 +package net.fortuna.ical4j.model.property;
  194.36 +
  194.37 +import net.fortuna.ical4j.model.DateTime;
  194.38 +import net.fortuna.ical4j.model.ParameterList;
  194.39 +import net.fortuna.ical4j.model.PropertyFactory;
  194.40 +import net.fortuna.ical4j.model.TimeZone;
  194.41 +import net.fortuna.ical4j.model.ValidationException;
  194.42 +
  194.43 +/**
  194.44 + * $Id$
  194.45 + *
  194.46 + * Created on 8/08/2005
  194.47 + *
  194.48 + * Superclass for all properties with date-time values that must be specified in UTC time.
  194.49 + * @author Ben Fortuna
  194.50 + */
  194.51 +public abstract class UtcProperty extends DateProperty {
  194.52 +
  194.53 +    /**
  194.54 +     * 
  194.55 +     */
  194.56 +    private static final long serialVersionUID = 4850079486497487938L;
  194.57 +
  194.58 +    /**
  194.59 +     * @param name a property name
  194.60 +     * @param parameters list of parameters
  194.61 +     */
  194.62 +    public UtcProperty(final String name, final ParameterList parameters, PropertyFactory factory) {
  194.63 +        super(name, parameters, factory);
  194.64 +        setDate(new DateTime(true));
  194.65 +    }
  194.66 +
  194.67 +    /**
  194.68 +     * @param name a property name
  194.69 +     */
  194.70 +    public UtcProperty(final String name, PropertyFactory factory) {
  194.71 +        super(name, factory);
  194.72 +        setDate(new DateTime(true));
  194.73 +    }
  194.74 +
  194.75 +    /**
  194.76 +     * @return Returns the date-time.
  194.77 +     */
  194.78 +    public final DateTime getDateTime() {
  194.79 +        return (DateTime) getDate();
  194.80 +    }
  194.81 +
  194.82 +    /**
  194.83 +     * @param dateTime The dateTime to set.
  194.84 +     */
  194.85 +    public void setDateTime(final DateTime dateTime) {
  194.86 +        // time must be in UTC..
  194.87 +        if (dateTime != null) {
  194.88 +        	final DateTime utcDateTime = new DateTime(dateTime);
  194.89 +            utcDateTime.setUtc(true);
  194.90 +            setDate(utcDateTime);
  194.91 +        }
  194.92 +        else {
  194.93 +            setDate(dateTime);
  194.94 +        }
  194.95 +    }
  194.96 +
  194.97 +    /**
  194.98 +     * {@inheritDoc}
  194.99 +     */
 194.100 +    public void setTimeZone(TimeZone timezone) {
 194.101 +        throw new UnsupportedOperationException("Cannot set timezone for UTC properties");
 194.102 +    }
 194.103 +    
 194.104 +    /**
 194.105 +     * {@inheritDoc}
 194.106 +     */
 194.107 +    public void validate() throws ValidationException {
 194.108 +        super.validate();
 194.109 +
 194.110 +        if (getDate() != null && !(getDate() instanceof DateTime)) {
 194.111 +            throw new ValidationException(
 194.112 +                    "Property must have a DATE-TIME value");
 194.113 +        }
 194.114 +
 194.115 +        final DateTime dateTime = (DateTime) getDate();
 194.116 +
 194.117 +        if (dateTime != null && !dateTime.isUtc()) {
 194.118 +            throw new ValidationException(getName() + 
 194.119 +                    ": DATE-TIME value must be specified in UTC time");
 194.120 +        }
 194.121 +    }
 194.122 +}
   195.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   195.2 +++ b/src/net/fortuna/ical4j/model/property/Version.java	Tue Feb 10 18:12:00 2015 +0100
   195.3 @@ -0,0 +1,198 @@
   195.4 +/**
   195.5 + * Copyright (c) 2012, Ben Fortuna
   195.6 + * All rights reserved.
   195.7 + *
   195.8 + * Redistribution and use in source and binary forms, with or without
   195.9 + * modification, are permitted provided that the following conditions
  195.10 + * are met:
  195.11 + *
  195.12 + *  o Redistributions of source code must retain the above copyright
  195.13 + * notice, this list of conditions and the following disclaimer.
  195.14 + *
  195.15 + *  o Redistributions in binary form must reproduce the above copyright
  195.16 + * notice, this list of conditions and the following disclaimer in the
  195.17 + * documentation and/or other materials provided with the distribution.
  195.18 + *
  195.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  195.20 + * may be used to endorse or promote products derived from this software
  195.21 + * without specific prior written permission.
  195.22 + *
  195.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  195.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  195.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  195.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  195.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  195.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  195.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  195.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  195.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  195.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  195.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  195.34 + */
  195.35 +package net.fortuna.ical4j.model.property;
  195.36 +
  195.37 +import net.fortuna.ical4j.model.ParameterList;
  195.38 +import net.fortuna.ical4j.model.Property;
  195.39 +import net.fortuna.ical4j.model.PropertyFactoryImpl;
  195.40 +import net.fortuna.ical4j.model.ValidationException;
  195.41 +
  195.42 +/**
  195.43 + * $Id$
  195.44 + *
  195.45 + * Created: [Apr 6, 2004]
  195.46 + *
  195.47 + * Defines a VERSION iCalendar property. When creating a new calendar you should always add a version property with
  195.48 + * value "2.0". There is actually a constant defined in the Version class for this. e.g:
  195.49 + * <code>    Calendar calendar = new Calendar();</code>
  195.50 + * <code>    calendar.getProperties().add(Version.VERSION_2_0);</code>
  195.51 + * @author Ben Fortuna
  195.52 + */
  195.53 +public class Version extends Property {
  195.54 +
  195.55 +    private static final long serialVersionUID = 8872508067309087704L;
  195.56 +
  195.57 +    /**
  195.58 +     * iCalendar version 2.0.
  195.59 +     */
  195.60 +    public static final Version VERSION_2_0 = new ImmutableVersion("2.0");
  195.61 +
  195.62 +    /**
  195.63 +     * @author Ben Fortuna An immutable instance of Version.
  195.64 +     */
  195.65 +    private static final class ImmutableVersion extends Version {
  195.66 +
  195.67 +        private static final long serialVersionUID = -5040679357859594835L;
  195.68 +
  195.69 +        private ImmutableVersion(final String value) {
  195.70 +            super(new ParameterList(true), value);
  195.71 +        }
  195.72 +
  195.73 +        public void setValue(final String aValue) {
  195.74 +            throw new UnsupportedOperationException(
  195.75 +                    "Cannot modify constant instances");
  195.76 +        }
  195.77 +
  195.78 +        public void setMaxVersion(final String maxVersion) {
  195.79 +            throw new UnsupportedOperationException(
  195.80 +                    "Cannot modify constant instances");
  195.81 +        }
  195.82 +
  195.83 +        public void setMinVersion(final String minVersion) {
  195.84 +            throw new UnsupportedOperationException(
  195.85 +                    "Cannot modify constant instances");
  195.86 +        }
  195.87 +    }
  195.88 +
  195.89 +    private String minVersion;
  195.90 +
  195.91 +    private String maxVersion;
  195.92 +
  195.93 +    /**
  195.94 +     * Default constructor.
  195.95 +     */
  195.96 +    public Version() {
  195.97 +        super(VERSION, PropertyFactoryImpl.getInstance());
  195.98 +    }
  195.99 +
 195.100 +    /**
 195.101 +     * @param aList a list of parameters for this component
 195.102 +     * @param aValue a value string for this component
 195.103 +     */
 195.104 +    public Version(final ParameterList aList, final String aValue) {
 195.105 +        super(VERSION, aList, PropertyFactoryImpl.getInstance());
 195.106 +        if (aValue.indexOf(';') >= 0) {
 195.107 +            this.minVersion = aValue.substring(0, aValue.indexOf(';') - 1);
 195.108 +            this.maxVersion = aValue.substring(aValue.indexOf(';'));
 195.109 +        }
 195.110 +        else {
 195.111 +            this.maxVersion = aValue;
 195.112 +        }
 195.113 +    }
 195.114 +
 195.115 +    /**
 195.116 +     * @param minVersion a string representation of the minimum version
 195.117 +     * @param maxVersion a string representation of the maximum version
 195.118 +     */
 195.119 +    public Version(final String minVersion, final String maxVersion) {
 195.120 +        super(VERSION, PropertyFactoryImpl.getInstance());
 195.121 +        this.minVersion = minVersion;
 195.122 +        this.maxVersion = maxVersion;
 195.123 +    }
 195.124 +
 195.125 +    /**
 195.126 +     * @param aList a list of parameters for this component
 195.127 +     * @param aVersion1 a string representation of the minimum version
 195.128 +     * @param aVersion2 a string representation of the maximum version
 195.129 +     */
 195.130 +    public Version(final ParameterList aList, final String aVersion1,
 195.131 +            final String aVersion2) {
 195.132 +        super(VERSION, aList, PropertyFactoryImpl.getInstance());
 195.133 +        minVersion = aVersion1;
 195.134 +        maxVersion = aVersion2;
 195.135 +    }
 195.136 +
 195.137 +    /**
 195.138 +     * @return Returns the maxVersion.
 195.139 +     */
 195.140 +    public final String getMaxVersion() {
 195.141 +        return maxVersion;
 195.142 +    }
 195.143 +
 195.144 +    /**
 195.145 +     * @return Returns the minVersion.
 195.146 +     */
 195.147 +    public final String getMinVersion() {
 195.148 +        return minVersion;
 195.149 +    }
 195.150 +
 195.151 +    /**
 195.152 +     * {@inheritDoc}
 195.153 +     */
 195.154 +    public void setValue(final String aValue) {
 195.155 +        if (aValue.indexOf(';') >= 0) {
 195.156 +            this.minVersion = aValue.substring(0, aValue.indexOf(';') - 1);
 195.157 +            this.maxVersion = aValue.substring(aValue.indexOf(';'));
 195.158 +        }
 195.159 +        else {
 195.160 +            this.maxVersion = aValue;
 195.161 +        }
 195.162 +    }
 195.163 +
 195.164 +    /**
 195.165 +     * {@inheritDoc}
 195.166 +     */
 195.167 +    public final String getValue() {
 195.168 +        final StringBuffer b = new StringBuffer();
 195.169 +        if (getMinVersion() != null) {
 195.170 +            b.append(getMinVersion());
 195.171 +            if (getMaxVersion() != null) {
 195.172 +                b.append(';');
 195.173 +            }
 195.174 +        }
 195.175 +        if (getMaxVersion() != null) {
 195.176 +            b.append(getMaxVersion());
 195.177 +        }
 195.178 +        return b.toString();
 195.179 +    }
 195.180 +
 195.181 +    /**
 195.182 +     * @param maxVersion The maxVersion to set.
 195.183 +     */
 195.184 +    public void setMaxVersion(final String maxVersion) {
 195.185 +        this.maxVersion = maxVersion;
 195.186 +    }
 195.187 +
 195.188 +    /**
 195.189 +     * @param minVersion The minVersion to set.
 195.190 +     */
 195.191 +    public void setMinVersion(final String minVersion) {
 195.192 +        this.minVersion = minVersion;
 195.193 +    }
 195.194 +
 195.195 +    /**
 195.196 +     * {@inheritDoc}
 195.197 +     */
 195.198 +    public final void validate() throws ValidationException {
 195.199 +        // TODO: Auto-generated method stub
 195.200 +    }
 195.201 +}
   196.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   196.2 +++ b/src/net/fortuna/ical4j/model/property/XProperty.java	Tue Feb 10 18:12:00 2015 +0100
   196.3 @@ -0,0 +1,112 @@
   196.4 +/**
   196.5 + * Copyright (c) 2012, Ben Fortuna
   196.6 + * All rights reserved.
   196.7 + *
   196.8 + * Redistribution and use in source and binary forms, with or without
   196.9 + * modification, are permitted provided that the following conditions
  196.10 + * are met:
  196.11 + *
  196.12 + *  o Redistributions of source code must retain the above copyright
  196.13 + * notice, this list of conditions and the following disclaimer.
  196.14 + *
  196.15 + *  o Redistributions in binary form must reproduce the above copyright
  196.16 + * notice, this list of conditions and the following disclaimer in the
  196.17 + * documentation and/or other materials provided with the distribution.
  196.18 + *
  196.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  196.20 + * may be used to endorse or promote products derived from this software
  196.21 + * without specific prior written permission.
  196.22 + *
  196.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  196.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  196.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  196.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  196.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  196.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  196.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  196.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  196.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  196.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  196.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  196.34 + */
  196.35 +package net.fortuna.ical4j.model.property;
  196.36 +
  196.37 +import net.fortuna.ical4j.model.Escapable;
  196.38 +import net.fortuna.ical4j.model.ParameterList;
  196.39 +import net.fortuna.ical4j.model.Property;
  196.40 +import net.fortuna.ical4j.model.PropertyFactoryImpl;
  196.41 +import net.fortuna.ical4j.model.ValidationException;
  196.42 +import net.fortuna.ical4j.util.CompatibilityHints;
  196.43 +
  196.44 +/**
  196.45 + * $Id$
  196.46 + * 
  196.47 + * Created: [15/06/2004]
  196.48 + *
  196.49 + * Defines an extension property.
  196.50 + * @author benfortuna
  196.51 + */
  196.52 +public class XProperty extends Property implements Escapable {
  196.53 +
  196.54 +    private static final long serialVersionUID = 2331763266954894541L;
  196.55 +
  196.56 +    private String value;
  196.57 +
  196.58 +    /**
  196.59 +     * Constructs an uninitialised non-standard property.
  196.60 +     * @param name a non-standard property name
  196.61 +     */
  196.62 +    public XProperty(final String name) {
  196.63 +        super(name, PropertyFactoryImpl.getInstance());
  196.64 +    }
  196.65 +
  196.66 +    /**
  196.67 +     * @param aName a non-standard property name
  196.68 +     * @param aValue a property value
  196.69 +     */
  196.70 +    public XProperty(final String aName, final String aValue) {
  196.71 +        super(aName, PropertyFactoryImpl.getInstance());
  196.72 +        setValue(aValue);
  196.73 +    }
  196.74 +
  196.75 +    /**
  196.76 +     * @param aName a non-standard property name
  196.77 +     * @param aList a list of parameters
  196.78 +     * @param aValue a property value
  196.79 +     */
  196.80 +    public XProperty(final String aName, final ParameterList aList,
  196.81 +            final String aValue) {
  196.82 +        super(aName, aList, PropertyFactoryImpl.getInstance());
  196.83 +        setValue(aValue);
  196.84 +    }
  196.85 +
  196.86 +    /**
  196.87 +     * {@inheritDoc}
  196.88 +     */
  196.89 +    public final void setValue(final String aValue) {
  196.90 +        this.value = aValue;
  196.91 +    }
  196.92 +
  196.93 +    /**
  196.94 +     * {@inheritDoc}
  196.95 +     */
  196.96 +    public final String getValue() {
  196.97 +        return value;
  196.98 +    }
  196.99 +
 196.100 +    /**
 196.101 +     * {@inheritDoc}
 196.102 +     */
 196.103 +    public final void validate() throws ValidationException {
 196.104 +        
 196.105 +        if (!CompatibilityHints.isHintEnabled(CompatibilityHints.KEY_RELAXED_VALIDATION)
 196.106 +                && !getName().startsWith(EXPERIMENTAL_PREFIX)) {
 196.107 +            
 196.108 +            throw new ValidationException(
 196.109 +                    "Invalid name ["
 196.110 +                            + getName()
 196.111 +                            + "]. Experimental properties must have the following prefix: "
 196.112 +                            + EXPERIMENTAL_PREFIX);
 196.113 +        }
 196.114 +    }
 196.115 +}
   197.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   197.2 +++ b/src/net/fortuna/ical4j/model/tz.alias	Tue Feb 10 18:12:00 2015 +0100
   197.3 @@ -0,0 +1,131 @@
   197.4 +## Unsupported timezone identifiers..
   197.5 +Etc/GMT+0=Etc/GMT
   197.6 +Etc/GMT-0=Etc/GMT
   197.7 +Etc/GMT0=Etc/GMT
   197.8 +GMT=Etc/GMT
   197.9 +
  197.10 +### Temporary hack to support above timezones..
  197.11 +Etc/GMT=Europe/London
  197.12 +Etc/Greenwich=Etc/GMT
  197.13 +Etc/UCT=Europe/London
  197.14 +Etc/UTC=Europe/London
  197.15 +Etc/Universal=Etc/UTC
  197.16 +
  197.17 +Etc/Zulu=Etc/UTC
  197.18 +
  197.19 +## Non-Oslon aliases:
  197.20 +#
  197.21 +US/Pacific-New=America/Los_Angeles
  197.22 +
  197.23 +## Update Olson backward compatibility here:
  197.24 +#
  197.25 +Africa/Asmera = Africa/Asmara
  197.26 +Africa/Timbuktu = Africa/Bamako
  197.27 +America/Argentina/ComodRivadavia = America/Argentina/Catamarca
  197.28 +America/Atka = America/Adak
  197.29 +America/Buenos_Aires = America/Argentina/Buenos_Aires
  197.30 +America/Catamarca = America/Argentina/Catamarca
  197.31 +America/Coral_Harbour = America/Atikokan
  197.32 +America/Cordoba = America/Argentina/Cordoba
  197.33 +America/Ensenada = America/Tijuana
  197.34 +America/Fort_Wayne = America/Indiana/Indianapolis
  197.35 +America/Indianapolis = America/Indiana/Indianapolis
  197.36 +America/Jujuy = America/Argentina/Jujuy
  197.37 +America/Knox_IN = America/Indiana/Knox
  197.38 +America/Louisville = America/Kentucky/Louisville
  197.39 +America/Mendoza = America/Argentina/Mendoza
  197.40 +America/Porto_Acre = America/Rio_Branco
  197.41 +America/Rosario = America/Argentina/Cordoba
  197.42 +America/Virgin = America/St_Thomas
  197.43 +Asia/Ashkhabad = Asia/Ashgabat
  197.44 +Asia/Chungking = Asia/Chongqing
  197.45 +Asia/Dacca = Asia/Dhaka
  197.46 +Asia/Katmandu = Asia/Kathmandu
  197.47 +Asia/Calcutta = Asia/Kolkata
  197.48 +Asia/Macao = Asia/Macau
  197.49 +Asia/Tel_Aviv = Asia/Jerusalem
  197.50 +Asia/Saigon = Asia/Ho_Chi_Minh
  197.51 +Asia/Thimbu = Asia/Thimphu
  197.52 +Asia/Ujung_Pandang = Asia/Makassar
  197.53 +Asia/Ulan_Bator = Asia/Ulaanbaatar
  197.54 +Atlantic/Faeroe = Atlantic/Faroe
  197.55 +Atlantic/Jan_Mayen = Europe/Oslo
  197.56 +Australia/ACT = Australia/Sydney
  197.57 +Australia/Canberra = Australia/Sydney
  197.58 +Australia/LHI = Australia/Lord_Howe
  197.59 +Australia/NSW = Australia/Sydney
  197.60 +Australia/North = Australia/Darwin
  197.61 +Australia/Queensland = Australia/Brisbane
  197.62 +Australia/South = Australia/Adelaide
  197.63 +Australia/Tasmania = Australia/Hobart
  197.64 +Australia/Victoria = Australia/Melbourne
  197.65 +Australia/West = Australia/Perth
  197.66 +Australia/Yancowinna = Australia/Broken_Hill
  197.67 +Brazil/Acre = America/Rio_Branco
  197.68 +Brazil/DeNoronha = America/Noronha
  197.69 +Brazil/East = America/Sao_Paulo
  197.70 +Brazil/West = America/Manaus
  197.71 +Canada/Atlantic = America/Halifax
  197.72 +Canada/Central = America/Winnipeg
  197.73 +Canada/East-Saskatchewan = America/Regina
  197.74 +Canada/Eastern = America/Toronto
  197.75 +Canada/Mountain = America/Edmonton
  197.76 +Canada/Newfoundland = America/St_Johns
  197.77 +Canada/Pacific = America/Vancouver
  197.78 +Canada/Saskatchewan = America/Regina
  197.79 +Canada/Yukon = America/Whitehorse
  197.80 +Chile/Continental = America/Santiago
  197.81 +Chile/EasterIsland = Pacific/Easter
  197.82 +Cuba = America/Havana
  197.83 +Egypt = Africa/Cairo
  197.84 +Eire = Europe/Dublin
  197.85 +Europe/Belfast = Europe/London
  197.86 +Europe/Tiraspol = Europe/Chisinau
  197.87 +GB = Europe/London
  197.88 +GB-Eire = Europe/London
  197.89 +GMT+0 = Etc/GMT
  197.90 +GMT-0 = Etc/GMT
  197.91 +GMT0 = Etc/GMT
  197.92 +Greenwich = Etc/GMT
  197.93 +Hongkong = Asia/Hong_Kong
  197.94 +Iceland = Atlantic/Reykjavik
  197.95 +Iran = Asia/Tehran
  197.96 +Israel = Asia/Jerusalem
  197.97 +Jamaica = America/Jamaica
  197.98 +Japan = Asia/Tokyo
  197.99 +Kwajalein = Pacific/Kwajalein
 197.100 +Libya = Africa/Tripoli
 197.101 +Mexico/BajaNorte = America/Tijuana
 197.102 +Mexico/BajaSur = America/Mazatlan
 197.103 +Mexico/General = America/Mexico_City
 197.104 +NZ = Pacific/Auckland
 197.105 +NZ-CHAT = Pacific/Chatham
 197.106 +Navajo = America/Denver
 197.107 +PRC = Asia/Shanghai
 197.108 +Pacific/Samoa = Pacific/Pago_Pago
 197.109 +Pacific/Yap = Pacific/Chuuk
 197.110 +Pacific/Truk = Pacific/Chuuk
 197.111 +Pacific/Ponape = Pacific/Pohnpei
 197.112 +Poland = Europe/Warsaw
 197.113 +Portugal = Europe/Lisbon
 197.114 +ROC = Asia/Taipei
 197.115 +ROK = Asia/Seoul
 197.116 +Singapore = Asia/Singapore
 197.117 +Turkey = Europe/Istanbul
 197.118 +UCT = Etc/UCT
 197.119 +US/Alaska = America/Anchorage
 197.120 +US/Aleutian = America/Adak
 197.121 +US/Arizona = America/Phoenix
 197.122 +US/Central = America/Chicago
 197.123 +US/East-Indiana = America/Indiana/Indianapolis
 197.124 +US/Eastern = America/New_York
 197.125 +US/Hawaii = Pacific/Honolulu
 197.126 +US/Indiana-Starke = America/Indiana/Knox
 197.127 +US/Michigan = America/Detroit
 197.128 +US/Mountain = America/Denver
 197.129 +US/Pacific = America/Los_Angeles
 197.130 +US/Samoa = Pacific/Pago_Pago
 197.131 +UTC = Etc/UTC
 197.132 +Universal = Etc/UTC
 197.133 +W-SU = Europe/Moscow
 197.134 +Zulu = Etc/UTC
   198.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   198.2 +++ b/src/net/fortuna/ical4j/transform/PublishTransformer.java	Tue Feb 10 18:12:00 2015 +0100
   198.3 @@ -0,0 +1,88 @@
   198.4 +/**
   198.5 + * Copyright (c) 2012, Ben Fortuna
   198.6 + * All rights reserved.
   198.7 + *
   198.8 + * Redistribution and use in source and binary forms, with or without
   198.9 + * modification, are permitted provided that the following conditions
  198.10 + * are met:
  198.11 + *
  198.12 + *  o Redistributions of source code must retain the above copyright
  198.13 + * notice, this list of conditions and the following disclaimer.
  198.14 + *
  198.15 + *  o Redistributions in binary form must reproduce the above copyright
  198.16 + * notice, this list of conditions and the following disclaimer in the
  198.17 + * documentation and/or other materials provided with the distribution.
  198.18 + *
  198.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  198.20 + * may be used to endorse or promote products derived from this software
  198.21 + * without specific prior written permission.
  198.22 + *
  198.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  198.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  198.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  198.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  198.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  198.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  198.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  198.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  198.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  198.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  198.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  198.34 + */
  198.35 +package net.fortuna.ical4j.transform;
  198.36 +
  198.37 +import java.util.Iterator;
  198.38 +import net.fortuna.ical4j.model.Calendar;
  198.39 +import net.fortuna.ical4j.model.Component;
  198.40 +import net.fortuna.ical4j.model.Property;
  198.41 +import net.fortuna.ical4j.model.PropertyList;
  198.42 +import net.fortuna.ical4j.model.property.Method;
  198.43 +import net.fortuna.ical4j.model.property.Sequence;
  198.44 +
  198.45 +/**
  198.46 + * $Id$
  198.47 + *
  198.48 + * Created: 26/09/2004
  198.49 + *
  198.50 + * Transforms a calendar for publishing.
  198.51 + * @author benfortuna
  198.52 + */
  198.53 +public class PublishTransformer extends Transformer {
  198.54 +
  198.55 +    /**
  198.56 +     * {@inheritDoc}
  198.57 +     */
  198.58 +    public final Calendar transform(final Calendar calendar) {
  198.59 +        PropertyList calProps = calendar.getProperties();
  198.60 +
  198.61 +        Property method = calProps.getProperty(Property.METHOD);
  198.62 +
  198.63 +        if (method != null) {
  198.64 +            calProps.remove(method);
  198.65 +        }
  198.66 +
  198.67 +        calProps.add(Method.PUBLISH);
  198.68 +
  198.69 +        // if a calendar component has already been published previously
  198.70 +        // update the sequence number..
  198.71 +        for (Iterator i = calendar.getComponents().iterator(); i.hasNext();) {
  198.72 +            Component component = (Component) i.next();
  198.73 +
  198.74 +            PropertyList compProps = component.getProperties();
  198.75 +
  198.76 +            Sequence sequence = (Sequence) compProps
  198.77 +                    .getProperty(Property.SEQUENCE);
  198.78 +
  198.79 +            if (sequence == null) {
  198.80 +                compProps.add(new Sequence(0));
  198.81 +            }
  198.82 +            else {
  198.83 +                compProps.remove(sequence);
  198.84 +                compProps.add(new Sequence(sequence.getSequenceNo() + 1));
  198.85 +            }
  198.86 +        }
  198.87 +
  198.88 +        return calendar;
  198.89 +    }
  198.90 +
  198.91 +}
   199.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   199.2 +++ b/src/net/fortuna/ical4j/transform/Transformer.java	Tue Feb 10 18:12:00 2015 +0100
   199.3 @@ -0,0 +1,64 @@
   199.4 +/**
   199.5 + * Copyright (c) 2012, Ben Fortuna
   199.6 + * All rights reserved.
   199.7 + *
   199.8 + * Redistribution and use in source and binary forms, with or without
   199.9 + * modification, are permitted provided that the following conditions
  199.10 + * are met:
  199.11 + *
  199.12 + *  o Redistributions of source code must retain the above copyright
  199.13 + * notice, this list of conditions and the following disclaimer.
  199.14 + *
  199.15 + *  o Redistributions in binary form must reproduce the above copyright
  199.16 + * notice, this list of conditions and the following disclaimer in the
  199.17 + * documentation and/or other materials provided with the distribution.
  199.18 + *
  199.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  199.20 + * may be used to endorse or promote products derived from this software
  199.21 + * without specific prior written permission.
  199.22 + *
  199.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  199.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  199.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  199.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  199.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  199.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  199.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  199.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  199.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  199.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  199.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  199.34 + */
  199.35 +package net.fortuna.ical4j.transform;
  199.36 +
  199.37 +import net.fortuna.ical4j.model.Calendar;
  199.38 +import net.fortuna.ical4j.model.Component;
  199.39 +import net.fortuna.ical4j.util.Calendars;
  199.40 +
  199.41 +/**
  199.42 + * $Id$
  199.43 + *
  199.44 + * Created: 23/09/2004
  199.45 + *
  199.46 + * Base class of calendar transformations.
  199.47 + * @author benfortuna
  199.48 + */
  199.49 +public abstract class Transformer {
  199.50 +
  199.51 +    /**
  199.52 +     * Transforms the specified calendar according to the implementation of this method. By definition this method will
  199.53 +     * modify the existing calendar instance and return it for convenience.
  199.54 +     * @param calendar a calendar to transform
  199.55 +     * @return a transformed calendar
  199.56 +     */
  199.57 +    public abstract Calendar transform(final Calendar calendar);
  199.58 +
  199.59 +    /**
  199.60 +     * Transforms the specified component according to the transformer implementation.
  199.61 +     * @param component a component to transform
  199.62 +     * @return a calendar containing the transformed component
  199.63 +     */
  199.64 +    public final Calendar transform(final Component component) {
  199.65 +        return transform(Calendars.wrap(component));
  199.66 +    }
  199.67 +}
   200.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   200.2 +++ b/src/net/fortuna/ical4j/util/Calendars.java	Tue Feb 10 18:12:00 2015 +0100
   200.3 @@ -0,0 +1,231 @@
   200.4 +/**
   200.5 + * Copyright (c) 2012, Ben Fortuna
   200.6 + * All rights reserved.
   200.7 + *
   200.8 + * Redistribution and use in source and binary forms, with or without
   200.9 + * modification, are permitted provided that the following conditions
  200.10 + * are met:
  200.11 + *
  200.12 + *  o Redistributions of source code must retain the above copyright
  200.13 + * notice, this list of conditions and the following disclaimer.
  200.14 + *
  200.15 + *  o Redistributions in binary form must reproduce the above copyright
  200.16 + * notice, this list of conditions and the following disclaimer in the
  200.17 + * documentation and/or other materials provided with the distribution.
  200.18 + *
  200.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  200.20 + * may be used to endorse or promote products derived from this software
  200.21 + * without specific prior written permission.
  200.22 + *
  200.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  200.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  200.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  200.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  200.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  200.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  200.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  200.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  200.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  200.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  200.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  200.34 + */
  200.35 +package net.fortuna.ical4j.util;
  200.36 +
  200.37 +import java.io.FileInputStream;
  200.38 +import java.io.IOException;
  200.39 +import java.net.URL;
  200.40 +import java.nio.charset.Charset;
  200.41 +import java.util.HashMap;
  200.42 +import java.util.Iterator;
  200.43 +import java.util.Map;
  200.44 +
  200.45 +import net.fortuna.ical4j.data.CalendarBuilder;
  200.46 +import net.fortuna.ical4j.data.ParserException;
  200.47 +import net.fortuna.ical4j.model.Calendar;
  200.48 +import net.fortuna.ical4j.model.Component;
  200.49 +import net.fortuna.ical4j.model.ComponentList;
  200.50 +import net.fortuna.ical4j.model.ConstraintViolationException;
  200.51 +import net.fortuna.ical4j.model.IndexedComponentList;
  200.52 +import net.fortuna.ical4j.model.Parameter;
  200.53 +import net.fortuna.ical4j.model.Property;
  200.54 +import net.fortuna.ical4j.model.component.VTimeZone;
  200.55 +import net.fortuna.ical4j.model.parameter.TzId;
  200.56 +import net.fortuna.ical4j.model.property.Method;
  200.57 +import net.fortuna.ical4j.model.property.Uid;
  200.58 +
  200.59 +/**
  200.60 + * $Id$
  200.61 + *
  200.62 + * Created on 10/11/2006
  200.63 + *
  200.64 + * Utility method for working with {@link Calendar}s.
  200.65 + * @author Ben Fortuna
  200.66 + */
  200.67 +public final class Calendars {
  200.68 +
  200.69 +    /**
  200.70 +     * Constructor made private to enforce static nature.
  200.71 +     */
  200.72 +    private Calendars() {
  200.73 +    }
  200.74 +
  200.75 +    /**
  200.76 +     * Loads a calendar from the specified file.
  200.77 +     * @param filename the name of the file from which to load calendar data
  200.78 +     * @return returns a new calendar instance initialised from the specified file
  200.79 +     * @throws IOException occurs when there is an error reading the specified file
  200.80 +     * @throws ParserException occurs when the data in the specified file is invalid
  200.81 +     */
  200.82 +    public static Calendar load(final String filename) throws IOException, ParserException {
  200.83 +        final FileInputStream fin = new FileInputStream(filename);
  200.84 +        final CalendarBuilder builder = new CalendarBuilder();
  200.85 +        return builder.build(fin);
  200.86 +    }
  200.87 +
  200.88 +    /**
  200.89 +     * Loads a calendar from the specified URL.
  200.90 +     * @param url the URL from which to load calendar data
  200.91 +     * @return returns a new calendar instance initialised from the specified URL
  200.92 +     * @throws IOException occurs when there is an error reading from the specified URL
  200.93 +     * @throws ParserException occurs when the data in the specified URL is invalid
  200.94 +     */
  200.95 +    public static Calendar load(final URL url) throws IOException, ParserException {
  200.96 +        final CalendarBuilder builder = new CalendarBuilder();
  200.97 +        return builder.build(url.openStream());
  200.98 +    }
  200.99 +
 200.100 +    /**
 200.101 +     * Merge all properties and components from two specified calendars into one instance.
 200.102 +     * Note that the merge process is not very sophisticated, and may result in invalid calendar
 200.103 +     * data (e.g. multiple properties of a type that should only be specified once).
 200.104 +     * @param c1 the first calendar to merge
 200.105 +     * @param c2 the second calendar to merge
 200.106 +     * @return a Calendar instance containing all properties and components from both of the specified calendars
 200.107 +     */
 200.108 +    public static Calendar merge(final Calendar c1, final Calendar c2) {
 200.109 +        final Calendar result = new Calendar();
 200.110 +        result.getProperties().addAll(c1.getProperties());
 200.111 +        for (final Iterator i = c2.getProperties().iterator(); i.hasNext();) {
 200.112 +            final Property p = (Property) i.next();
 200.113 +            if (!result.getProperties().contains(p)) {
 200.114 +                result.getProperties().add(p);
 200.115 +            }
 200.116 +        }
 200.117 +        result.getComponents().addAll(c1.getComponents());
 200.118 +        for (final Iterator i = c2.getComponents().iterator(); i.hasNext();) {
 200.119 +            final Component c = (Component) i.next();
 200.120 +            if (!result.getComponents().contains(c)) {
 200.121 +                result.getComponents().add(c);
 200.122 +            }
 200.123 +        }
 200.124 +        return result;
 200.125 +    }
 200.126 +
 200.127 +    /**
 200.128 +     * Wraps a component in a calendar.
 200.129 +     * @param component the component to wrap with a calendar
 200.130 +     * @return a calendar containing the specified component
 200.131 +     */
 200.132 +    public static Calendar wrap(final Component component) {
 200.133 +        final ComponentList components = new ComponentList();
 200.134 +        components.add(component);
 200.135 +        return new Calendar(components);
 200.136 +    }
 200.137 +    
 200.138 +    /**
 200.139 +     * Splits a calendar object into distinct calendar objects for unique
 200.140 +     * identifers (UID).
 200.141 +     * @param calendar a calendar instance
 200.142 +     * @return an array of calendar objects
 200.143 +     */
 200.144 +    public static Calendar[] split(final Calendar calendar) {
 200.145 +        // if calendar contains one component or less, or is composed entirely of timezone
 200.146 +        // definitions, return the original calendar unmodified..
 200.147 +        if (calendar.getComponents().size() <= 1
 200.148 +                || calendar.getComponents(Component.VTIMEZONE).size() == calendar.getComponents().size()) {
 200.149 +            return new Calendar[] {calendar};
 200.150 +        }
 200.151 +        
 200.152 +        final IndexedComponentList timezones = new IndexedComponentList(calendar.getComponents(Component.VTIMEZONE),
 200.153 +                Property.TZID);
 200.154 +        
 200.155 +        final Map calendars = new HashMap();
 200.156 +        for (final Iterator i = calendar.getComponents().iterator(); i.hasNext();) {
 200.157 +            final Component c = (Component) i.next();
 200.158 +            if (c instanceof VTimeZone) {
 200.159 +                continue;
 200.160 +            }
 200.161 +            
 200.162 +            final Uid uid = (Uid) c.getProperty(Property.UID);
 200.163 +            
 200.164 +            Calendar uidCal = (Calendar) calendars.get(uid);
 200.165 +            if (uidCal == null) {
 200.166 +                uidCal = new Calendar(calendar.getProperties(), new ComponentList());
 200.167 +                // remove METHOD property for split calendars..
 200.168 +                for (final Iterator mp = uidCal.getProperties(Property.METHOD).iterator(); mp.hasNext();) {
 200.169 +                    uidCal.getProperties().remove(mp.next());
 200.170 +                }
 200.171 +                calendars.put(uid, uidCal);
 200.172 +            }
 200.173 +            
 200.174 +            for (final Iterator j = c.getProperties().iterator(); j.hasNext();) {
 200.175 +                final Property p = (Property) j.next();
 200.176 +                final TzId tzid = (TzId) p.getParameter(Parameter.TZID);
 200.177 +                if (tzid != null) {
 200.178 +                    final VTimeZone timezone = (VTimeZone) timezones.getComponent(tzid.getValue());
 200.179 +                    if (!uidCal.getComponents().contains(timezone)) {
 200.180 +                        uidCal.getComponents().add(timezone);
 200.181 +                    }
 200.182 +                }
 200.183 +            }
 200.184 +            uidCal.getComponents().add(c);
 200.185 +        }
 200.186 +        return (Calendar[]) calendars.values().toArray(new Calendar[calendars.values().size()]);
 200.187 +    }
 200.188 +    
 200.189 +    /**
 200.190 +     * Returns a unique identifier as specified by components in the provided calendar.
 200.191 +     * @param calendar a calendar instance
 200.192 +     * @return the UID property
 200.193 +     * @throws ConstraintViolationException if zero or more than one unique identifer is found in the specified calendar
 200.194 +     */
 200.195 +    public static Uid getUid(final Calendar calendar) throws ConstraintViolationException {
 200.196 +        Uid uid = null;
 200.197 +        for (final Iterator i = calendar.getComponents().iterator(); i.hasNext();) {
 200.198 +            final Component c = (Component) i.next();
 200.199 +            for (final Iterator j = c.getProperties(Property.UID).iterator(); j.hasNext();) {
 200.200 +                final Uid foundUid = (Uid) j.next();
 200.201 +                if (uid != null && !uid.equals(foundUid)) {
 200.202 +                    throw new ConstraintViolationException("More than one UID found in calendar");
 200.203 +                }
 200.204 +                uid = foundUid;
 200.205 +            }
 200.206 +        }
 200.207 +        if (uid == null) {
 200.208 +            throw new ConstraintViolationException("Calendar must specify a single unique identifier (UID)");
 200.209 +        }
 200.210 +        return uid;
 200.211 +    }
 200.212 +    
 200.213 +    /**
 200.214 +     * Returns an appropriate MIME Content-Type for the specified calendar object.
 200.215 +     * @param calendar a calendar instance
 200.216 +     * @param charset an optional encoding
 200.217 +     * @return a content type string
 200.218 +     */
 200.219 +    public static String getContentType(Calendar calendar, Charset charset) {
 200.220 +        final StringBuffer b = new StringBuffer("text/calendar");
 200.221 +        
 200.222 +        final Method method = (Method) calendar.getProperty(Property.METHOD);
 200.223 +        if (method != null) {
 200.224 +            b.append("; method=");
 200.225 +            b.append(method.getValue());
 200.226 +        }
 200.227 +        
 200.228 +        if (charset != null) {
 200.229 +            b.append("; charset=");
 200.230 +            b.append(charset);
 200.231 +        }
 200.232 +        return b.toString();
 200.233 +    }
 200.234 +}
   201.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   201.2 +++ b/src/net/fortuna/ical4j/util/CompatibilityHints.java	Tue Feb 10 18:12:00 2015 +0100
   201.3 @@ -0,0 +1,125 @@
   201.4 +/**
   201.5 + * Copyright (c) 2012, Ben Fortuna
   201.6 + * All rights reserved.
   201.7 + *
   201.8 + * Redistribution and use in source and binary forms, with or without
   201.9 + * modification, are permitted provided that the following conditions
  201.10 + * are met:
  201.11 + *
  201.12 + *  o Redistributions of source code must retain the above copyright
  201.13 + * notice, this list of conditions and the following disclaimer.
  201.14 + *
  201.15 + *  o Redistributions in binary form must reproduce the above copyright
  201.16 + * notice, this list of conditions and the following disclaimer in the
  201.17 + * documentation and/or other materials provided with the distribution.
  201.18 + *
  201.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  201.20 + * may be used to endorse or promote products derived from this software
  201.21 + * without specific prior written permission.
  201.22 + *
  201.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  201.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  201.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  201.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  201.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  201.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  201.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  201.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  201.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  201.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  201.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  201.34 + */
  201.35 +package net.fortuna.ical4j.util;
  201.36 +
  201.37 +import java.util.Map;
  201.38 +
  201.39 +import edu.emory.mathcs.backport.java.util.concurrent.ConcurrentHashMap;
  201.40 +
  201.41 +/**
  201.42 + * $Id$
  201.43 + * 
  201.44 + * Created on 9/03/2006
  201.45 + * 
  201.46 + * A set of keys used to enable compatibility features.
  201.47 + * 
  201.48 + * @author Ben Fortuna
  201.49 + */
  201.50 +public final class CompatibilityHints {
  201.51 +
  201.52 +    /**
  201.53 +     * A system property key to enable relaxed unfolding. Relaxed unfolding is enabled by setting this system property
  201.54 +     * to "true".
  201.55 +     */
  201.56 +    public static final String KEY_RELAXED_UNFOLDING = "ical4j.unfolding.relaxed";
  201.57 +
  201.58 +    /**
  201.59 +     * A system property key to enable relaxed parsing. Relaxed parsing is enabled by setting this system property to
  201.60 +     * "true".
  201.61 +     */
  201.62 +    public static final String KEY_RELAXED_PARSING = "ical4j.parsing.relaxed";
  201.63 +
  201.64 +    /**
  201.65 +     * A system property key to enable relaxed validation. Relaxed validation disables validation of certain conformance
  201.66 +     * rules that many iCalendar implementations do not conform to. Relaxed validation is enabled by setting this system
  201.67 +     * property to "true".
  201.68 +     */
  201.69 +    public static final String KEY_RELAXED_VALIDATION = "ical4j.validation.relaxed";
  201.70 +
  201.71 +    /**
  201.72 +     * A system property key used to enable compatibility with Outlook/Exchange-generated iCalendar files. Outlook
  201.73 +     * compatibility is enabled by setting this system property to "true".
  201.74 +     */
  201.75 +    public static final String KEY_OUTLOOK_COMPATIBILITY = "ical4j.compatibility.outlook";
  201.76 +
  201.77 +    /**
  201.78 +     * A system property key used to enable compatibility with Lotus Notes-generated iCalendar files. Notes
  201.79 +     * compatibility is enabled by setting this system property to "true".
  201.80 +     */
  201.81 +    public static final String KEY_NOTES_COMPATIBILITY = "ical4j.compatibility.notes";
  201.82 +
  201.83 +    private static final Map HINTS = new ConcurrentHashMap();
  201.84 +    // preload known hints from the configurator
  201.85 +    static {
  201.86 +        setHintEnabled(KEY_RELAXED_UNFOLDING, "true".equals(Configurator.getProperty(KEY_RELAXED_UNFOLDING)));
  201.87 +        setHintEnabled(KEY_RELAXED_PARSING, "true".equals(Configurator.getProperty(KEY_RELAXED_PARSING)));
  201.88 +        setHintEnabled(KEY_RELAXED_VALIDATION, "true".equals(Configurator.getProperty(KEY_RELAXED_VALIDATION)));
  201.89 +        setHintEnabled(KEY_OUTLOOK_COMPATIBILITY, "true".equals(Configurator.getProperty(KEY_OUTLOOK_COMPATIBILITY)));
  201.90 +        setHintEnabled(KEY_NOTES_COMPATIBILITY, "true".equals(Configurator.getProperty(KEY_NOTES_COMPATIBILITY)));
  201.91 +    }
  201.92 +
  201.93 +    /**
  201.94 +     * Constructor made private to enforce static nature.
  201.95 +     */
  201.96 +    private CompatibilityHints() {
  201.97 +    }
  201.98 +
  201.99 +    /**
 201.100 +     * @param key
 201.101 +     *            a compatibility hint key
 201.102 +     * @param enabled
 201.103 +     *            indicates whether to enable or disable the compatibility hint
 201.104 +     */
 201.105 +    public static void setHintEnabled(final String key, final boolean enabled) {
 201.106 +        HINTS.put(key, Boolean.valueOf(enabled));
 201.107 +    }
 201.108 +
 201.109 +    /**
 201.110 +     * @param key
 201.111 +     *            a compatibility hint key
 201.112 +     */
 201.113 +    public static void clearHintEnabled(final String key) {
 201.114 +        HINTS.remove(key);
 201.115 +    }
 201.116 +
 201.117 +    /**
 201.118 +     * @param key
 201.119 +     *            a compatibility hint key
 201.120 +     * @return true if the specified compatibility hint is enabled, otherwise false
 201.121 +     */
 201.122 +    public static boolean isHintEnabled(final String key) {
 201.123 +        if (HINTS.get(key) != null) {
 201.124 +            return ((Boolean) HINTS.get(key)).booleanValue();
 201.125 +        }
 201.126 +        return "true".equals(Configurator.getProperty(key));
 201.127 +    }
 201.128 +}
   202.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   202.2 +++ b/src/net/fortuna/ical4j/util/ComponentValidator.java	Tue Feb 10 18:12:00 2015 +0100
   202.3 @@ -0,0 +1,74 @@
   202.4 +/**
   202.5 + * Copyright (c) 2012, Ben Fortuna
   202.6 + * All rights reserved.
   202.7 + *
   202.8 + * Redistribution and use in source and binary forms, with or without
   202.9 + * modification, are permitted provided that the following conditions
  202.10 + * are met:
  202.11 + *
  202.12 + *  o Redistributions of source code must retain the above copyright
  202.13 + * notice, this list of conditions and the following disclaimer.
  202.14 + *
  202.15 + *  o Redistributions in binary form must reproduce the above copyright
  202.16 + * notice, this list of conditions and the following disclaimer in the
  202.17 + * documentation and/or other materials provided with the distribution.
  202.18 + *
  202.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  202.20 + * may be used to endorse or promote products derived from this software
  202.21 + * without specific prior written permission.
  202.22 + *
  202.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  202.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  202.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  202.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  202.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  202.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  202.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  202.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  202.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  202.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  202.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  202.34 + */
  202.35 +package net.fortuna.ical4j.util;
  202.36 +
  202.37 +import net.fortuna.ical4j.model.ComponentList;
  202.38 +import net.fortuna.ical4j.model.ValidationException;
  202.39 +
  202.40 +/**
  202.41 + * @author Ben
  202.42 + *
  202.43 + */
  202.44 +public final class ComponentValidator {
  202.45 +
  202.46 +    private static final String ASSERT_NONE_MESSAGE = "Component [{0}] is not applicable";
  202.47 +
  202.48 +    private static final String ASSERT_ONE_OR_LESS_MESSAGE = "Component [{0}] must only be specified once";
  202.49 +    
  202.50 +    /**
  202.51 +     * Constructor made private to enforce static nature.
  202.52 +     */
  202.53 +    private ComponentValidator() {
  202.54 +    }
  202.55 +    
  202.56 +    /**
  202.57 +     * @param componentName a component name used in the assertion
  202.58 +     * @param components a list of components
  202.59 +     * @throws ValidationException where the assertion fails
  202.60 +     */
  202.61 +    public static void assertNone(String componentName, ComponentList components) throws ValidationException {
  202.62 +        if (components.getComponent(componentName) != null) {
  202.63 +            throw new ValidationException(ASSERT_NONE_MESSAGE, new Object[] {componentName});
  202.64 +        }
  202.65 +    }
  202.66 +    
  202.67 +    /**
  202.68 +     * @param componentName a component name used in the assertion
  202.69 +     * @param components a list of components
  202.70 +     * @throws ValidationException where the assertion fails
  202.71 +     */
  202.72 +    public static void assertOneOrLess(String componentName, ComponentList components) throws ValidationException {
  202.73 +        if (components.getComponents(componentName).size() > 1) {
  202.74 +            throw new ValidationException(ASSERT_ONE_OR_LESS_MESSAGE, new Object[] {componentName});
  202.75 +        }
  202.76 +    }
  202.77 +}
   203.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   203.2 +++ b/src/net/fortuna/ical4j/util/Configurator.java	Tue Feb 10 18:12:00 2015 +0100
   203.3 @@ -0,0 +1,81 @@
   203.4 +/**
   203.5 + * Copyright (c) 2012, Ben Fortuna
   203.6 + * All rights reserved.
   203.7 + *
   203.8 + * Redistribution and use in source and binary forms, with or without
   203.9 + * modification, are permitted provided that the following conditions
  203.10 + * are met:
  203.11 + *
  203.12 + *  o Redistributions of source code must retain the above copyright
  203.13 + * notice, this list of conditions and the following disclaimer.
  203.14 + *
  203.15 + *  o Redistributions in binary form must reproduce the above copyright
  203.16 + * notice, this list of conditions and the following disclaimer in the
  203.17 + * documentation and/or other materials provided with the distribution.
  203.18 + *
  203.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  203.20 + * may be used to endorse or promote products derived from this software
  203.21 + * without specific prior written permission.
  203.22 + *
  203.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  203.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  203.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  203.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  203.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  203.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  203.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  203.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  203.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  203.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  203.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  203.34 + */
  203.35 +package net.fortuna.ical4j.util;
  203.36 +
  203.37 +import java.util.Properties;
  203.38 +
  203.39 +import org.apache.commons.logging.Log;
  203.40 +import org.apache.commons.logging.LogFactory;
  203.41 +
  203.42 +/**
  203.43 + * $Id$
  203.44 + *
  203.45 + * Created on 06/02/2008
  203.46 + *
  203.47 + * Provides configuration properties specified either as system properties
  203.48 + * or in an ical4j.properties configuration file.
  203.49 + * @author Ben
  203.50 + *
  203.51 + */
  203.52 +public final class Configurator {
  203.53 +
  203.54 +    private static final Log LOG = LogFactory.getLog(Configurator.class);
  203.55 +    
  203.56 +    private static final Properties CONFIG = new Properties();
  203.57 +    
  203.58 +    static {
  203.59 +        try {
  203.60 +            CONFIG.load(ResourceLoader.getResourceAsStream("ical4j.properties"));
  203.61 +        }
  203.62 +        catch (Exception e) {
  203.63 +            LOG.info("ical4j.properties not found.");
  203.64 +        }
  203.65 +    }
  203.66 +    
  203.67 +    /**
  203.68 +     * Constructor made private to enforce static nature.
  203.69 +     */
  203.70 +    private Configurator() {
  203.71 +    }
  203.72 +    
  203.73 +    /**
  203.74 +     * @param key a compatibility hint key
  203.75 +     * @return true if the specified compatibility hint is enabled, otherwise false
  203.76 +     */
  203.77 +    public static String getProperty(final String key) {
  203.78 +        String property = CONFIG.getProperty(key);
  203.79 +        if (property == null) {
  203.80 +            property = System.getProperty(key);
  203.81 +        }
  203.82 +        return property;
  203.83 +    }
  203.84 +}
   204.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   204.2 +++ b/src/net/fortuna/ical4j/util/Constants.java	Tue Feb 10 18:12:00 2015 +0100
   204.3 @@ -0,0 +1,172 @@
   204.4 +/**
   204.5 + * Copyright (c) 2012, Ben Fortuna
   204.6 + * All rights reserved.
   204.7 + *
   204.8 + * Redistribution and use in source and binary forms, with or without
   204.9 + * modification, are permitted provided that the following conditions
  204.10 + * are met:
  204.11 + *
  204.12 + *  o Redistributions of source code must retain the above copyright
  204.13 + * notice, this list of conditions and the following disclaimer.
  204.14 + *
  204.15 + *  o Redistributions in binary form must reproduce the above copyright
  204.16 + * notice, this list of conditions and the following disclaimer in the
  204.17 + * documentation and/or other materials provided with the distribution.
  204.18 + *
  204.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  204.20 + * may be used to endorse or promote products derived from this software
  204.21 + * without specific prior written permission.
  204.22 + *
  204.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  204.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  204.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  204.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  204.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  204.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  204.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  204.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  204.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  204.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  204.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  204.34 + */
  204.35 +package net.fortuna.ical4j.util;
  204.36 +
  204.37 +import net.fortuna.ical4j.model.Property;
  204.38 +import net.fortuna.ical4j.model.property.Action;
  204.39 +import net.fortuna.ical4j.model.property.CalScale;
  204.40 +import net.fortuna.ical4j.model.property.Clazz;
  204.41 +import net.fortuna.ical4j.model.property.Method;
  204.42 +import net.fortuna.ical4j.model.property.Priority;
  204.43 +import net.fortuna.ical4j.model.property.Status;
  204.44 +import net.fortuna.ical4j.model.property.Transp;
  204.45 +import net.fortuna.ical4j.model.property.Version;
  204.46 +
  204.47 +/**
  204.48 + * $Id$
  204.49 + *
  204.50 + * Created on 5/07/2005
  204.51 + *
  204.52 + * Provides some convenience methods for working with constant
  204.53 + * parameters and properties.
  204.54 + * @author Ben Fortuna
  204.55 + */
  204.56 +public final class Constants {
  204.57 +
  204.58 +    /**
  204.59 +     * Constructor made private to enforce static nature.
  204.60 +     */
  204.61 +    private Constants() {
  204.62 +    }
  204.63 +    
  204.64 +    /**
  204.65 +     * Returns a constant equivalent to the specified property
  204.66 +     * if one is applicable. Otherwise will return the specified
  204.67 +     * property.
  204.68 +     * @param property a property instance
  204.69 +     * @return an equivalent constant property, or the specified property if no equivalent
  204.70 +     * constant exists
  204.71 +     */
  204.72 +    public static Property forProperty(final Property property) {
  204.73 +        Property retVal = property;
  204.74 +        if (Action.AUDIO.equals(property)) {
  204.75 +            retVal = Action.AUDIO;
  204.76 +        }
  204.77 +        else if (Action.DISPLAY.equals(property)) {
  204.78 +            retVal = Action.DISPLAY;
  204.79 +        }
  204.80 +        else if (Action.EMAIL.equals(property)) {
  204.81 +            retVal = Action.EMAIL;
  204.82 +        }
  204.83 +        else if (Action.PROCEDURE.equals(property)) {
  204.84 +            retVal = Action.PROCEDURE;
  204.85 +        }
  204.86 +        else if (CalScale.GREGORIAN.equals(property)) {
  204.87 +            retVal = CalScale.GREGORIAN;
  204.88 +        }
  204.89 +        else if (Clazz.CONFIDENTIAL.equals(property)) {
  204.90 +            retVal = Clazz.CONFIDENTIAL;
  204.91 +        }
  204.92 +        else if (Clazz.PRIVATE.equals(property)) {
  204.93 +            retVal = Clazz.PRIVATE;
  204.94 +        }
  204.95 +        else if (Clazz.PUBLIC.equals(property)) {
  204.96 +            retVal = Clazz.PUBLIC;
  204.97 +        }
  204.98 +        else if (Method.ADD.equals(property)) {
  204.99 +            retVal = Method.ADD;
 204.100 +        }
 204.101 +        else if (Method.CANCEL.equals(property)) {
 204.102 +            retVal = Method.CANCEL;
 204.103 +        }
 204.104 +        else if (Method.COUNTER.equals(property)) {
 204.105 +            retVal = Method.COUNTER;
 204.106 +        }
 204.107 +        else if (Method.DECLINE_COUNTER.equals(property)) {
 204.108 +            retVal = Method.DECLINE_COUNTER;
 204.109 +        }
 204.110 +        else if (Method.PUBLISH.equals(property)) {
 204.111 +            retVal = Method.PUBLISH;
 204.112 +        }
 204.113 +        else if (Method.REFRESH.equals(property)) {
 204.114 +            retVal = Method.REFRESH;
 204.115 +        }
 204.116 +        else if (Method.REPLY.equals(property)) {
 204.117 +            retVal = Method.REPLY;
 204.118 +        }
 204.119 +        else if (Method.REQUEST.equals(property)) {
 204.120 +            retVal = Method.REQUEST;
 204.121 +        }
 204.122 +        else if (Priority.HIGH.equals(property)) {
 204.123 +            retVal = Priority.HIGH;
 204.124 +        }
 204.125 +        else if (Priority.LOW.equals(property)) {
 204.126 +            retVal = Priority.LOW;
 204.127 +        }
 204.128 +        else if (Priority.MEDIUM.equals(property)) {
 204.129 +            retVal = Priority.MEDIUM;
 204.130 +        }
 204.131 +        else if (Priority.UNDEFINED.equals(property)) {
 204.132 +            retVal = Priority.UNDEFINED;
 204.133 +        }
 204.134 +        else if (Status.VEVENT_CANCELLED.equals(property)) {
 204.135 +            retVal = Status.VEVENT_CANCELLED;
 204.136 +        }
 204.137 +        else if (Status.VEVENT_CONFIRMED.equals(property)) {
 204.138 +            retVal = Status.VEVENT_CONFIRMED;
 204.139 +        }
 204.140 +        else if (Status.VEVENT_TENTATIVE.equals(property)) {
 204.141 +            retVal = Status.VEVENT_TENTATIVE;
 204.142 +        }
 204.143 +        else if (Status.VJOURNAL_CANCELLED.equals(property)) {
 204.144 +            retVal = Status.VJOURNAL_CANCELLED;
 204.145 +        }
 204.146 +        else if (Status.VJOURNAL_DRAFT.equals(property)) {
 204.147 +            retVal = Status.VJOURNAL_DRAFT;
 204.148 +        }
 204.149 +        else if (Status.VJOURNAL_FINAL.equals(property)) {
 204.150 +            retVal = Status.VJOURNAL_FINAL;
 204.151 +        }
 204.152 +        else if (Status.VTODO_CANCELLED.equals(property)) {
 204.153 +            retVal = Status.VTODO_CANCELLED;
 204.154 +        }
 204.155 +        else if (Status.VTODO_COMPLETED.equals(property)) {
 204.156 +            retVal = Status.VTODO_COMPLETED;
 204.157 +        }
 204.158 +        else if (Status.VTODO_IN_PROCESS.equals(property)) {
 204.159 +            retVal = Status.VTODO_IN_PROCESS;
 204.160 +        }
 204.161 +        else if (Status.VTODO_NEEDS_ACTION.equals(property)) {
 204.162 +            retVal = Status.VTODO_NEEDS_ACTION;
 204.163 +        }
 204.164 +        else if (Transp.OPAQUE.equals(property)) {
 204.165 +            retVal = Transp.OPAQUE;
 204.166 +        }
 204.167 +        else if (Transp.TRANSPARENT.equals(property)) {
 204.168 +            retVal = Transp.TRANSPARENT;
 204.169 +        }
 204.170 +        else if (Version.VERSION_2_0.equals(property)) {
 204.171 +            retVal = Version.VERSION_2_0;
 204.172 +        }
 204.173 +        return retVal;
 204.174 +    }
 204.175 +}
   205.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   205.2 +++ b/src/net/fortuna/ical4j/util/Dates.java	Tue Feb 10 18:12:00 2015 +0100
   205.3 @@ -0,0 +1,315 @@
   205.4 +/**
   205.5 + * Copyright (c) 2012, Ben Fortuna
   205.6 + * All rights reserved.
   205.7 + *
   205.8 + * Redistribution and use in source and binary forms, with or without
   205.9 + * modification, are permitted provided that the following conditions
  205.10 + * are met:
  205.11 + *
  205.12 + *  o Redistributions of source code must retain the above copyright
  205.13 + * notice, this list of conditions and the following disclaimer.
  205.14 + *
  205.15 + *  o Redistributions in binary form must reproduce the above copyright
  205.16 + * notice, this list of conditions and the following disclaimer in the
  205.17 + * documentation and/or other materials provided with the distribution.
  205.18 + *
  205.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  205.20 + * may be used to endorse or promote products derived from this software
  205.21 + * without specific prior written permission.
  205.22 + *
  205.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  205.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  205.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  205.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  205.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  205.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  205.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  205.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  205.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  205.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  205.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  205.34 + */
  205.35 +package net.fortuna.ical4j.util;
  205.36 +
  205.37 +import java.text.MessageFormat;
  205.38 +import java.util.ArrayList;
  205.39 +import java.util.Calendar;
  205.40 +import java.util.List;
  205.41 +import java.util.TimeZone;
  205.42 +
  205.43 +import net.fortuna.ical4j.model.Date;
  205.44 +import net.fortuna.ical4j.model.DateTime;
  205.45 +import net.fortuna.ical4j.model.parameter.Value;
  205.46 +
  205.47 +/**
  205.48 + * $Id$
  205.49 + *
  205.50 + * Created on 26/06/2005
  205.51 + *
  205.52 + * Implements a collection of utility methods relevant to date processing.
  205.53 + * 
  205.54 + * @author Ben Fortuna
  205.55 + */
  205.56 +public final class Dates {
  205.57 +
  205.58 +    /**
  205.59 +     * Number of milliseconds in one second.
  205.60 +     */
  205.61 +    public static final long MILLIS_PER_SECOND = 1000;
  205.62 +
  205.63 +    /**
  205.64 +     * Number of milliseconds in one minute.
  205.65 +     */
  205.66 +    public static final long MILLIS_PER_MINUTE = 60000;
  205.67 +
  205.68 +    /**
  205.69 +     * Number of milliseconds in one hour.
  205.70 +     */
  205.71 +    public static final long MILLIS_PER_HOUR = 3600000;
  205.72 +
  205.73 +    /**
  205.74 +     * Number of milliseconds in one day.
  205.75 +     */
  205.76 +    public static final long MILLIS_PER_DAY = 86400000;
  205.77 +
  205.78 +    /**
  205.79 +     * Number of milliseconds in one week.
  205.80 +     */
  205.81 +    public static final long MILLIS_PER_WEEK = 604800000;
  205.82 +    
  205.83 +    /**
  205.84 +     * Number of days in one week.
  205.85 +     */
  205.86 +    public static final int DAYS_PER_WEEK = 7;
  205.87 +
  205.88 +    /**
  205.89 +     * Constant indicating precision to the second.
  205.90 +     */
  205.91 +    public static final int PRECISION_SECOND = 0;
  205.92 +
  205.93 +    /**
  205.94 +     * Constant indicating precision to the day.
  205.95 +     */
  205.96 +    public static final int PRECISION_DAY = 1;
  205.97 +
  205.98 +    /**
  205.99 +     * Maximum number of weeks per year.
 205.100 +     */
 205.101 +    public static final int MAX_WEEKS_PER_YEAR = 53;
 205.102 +
 205.103 +    /**
 205.104 +     * Maximum number of days per year.
 205.105 +     */
 205.106 +    public static final int MAX_DAYS_PER_YEAR = 366;
 205.107 +
 205.108 +    /**
 205.109 +     * Maximum number of days per month.
 205.110 +     */
 205.111 +    public static final int MAX_DAYS_PER_MONTH = 31;
 205.112 +
 205.113 +    private static final String INVALID_WEEK_MESSAGE = "Invalid week number [{0}]";
 205.114 +    
 205.115 +    private static final String INVALID_YEAR_DAY_MESSAGE = "Invalid year day [{0}]";
 205.116 +    
 205.117 +    private static final String INVALID_MONTH_DAY_MESSAGE = "Invalid month day [{0}]";
 205.118 +    
 205.119 +    /**
 205.120 +     * Constructor made private to prevent instantiation.
 205.121 +     */
 205.122 +    private Dates() {
 205.123 +    }
 205.124 +
 205.125 +    /**
 205.126 +     * Returns the absolute week number for the year specified by the
 205.127 +     * supplied date. Note that a value of zero (0) is invalid for the
 205.128 +     * weekNo parameter and an <code>IllegalArgumentException</code>
 205.129 +     * will be thrown.
 205.130 +     * @param date a date instance representing a week of the year
 205.131 +     * @param weekNo a week number offset
 205.132 +     * @return the absolute week of the year for the specified offset
 205.133 +     */
 205.134 +    public static int getAbsWeekNo(final java.util.Date date, final int weekNo) {
 205.135 +        if (weekNo == 0 || weekNo < -MAX_WEEKS_PER_YEAR || weekNo > MAX_WEEKS_PER_YEAR) {
 205.136 +            throw new IllegalArgumentException(MessageFormat.format(INVALID_WEEK_MESSAGE,
 205.137 +                    new Object[] {new Integer(weekNo)}));
 205.138 +        }
 205.139 +        if (weekNo > 0) {
 205.140 +            return weekNo;
 205.141 +        }
 205.142 +        final Calendar cal = Calendar.getInstance();
 205.143 +        cal.setTime(date);
 205.144 +        final int year = cal.get(Calendar.YEAR);
 205.145 +        // construct a list of possible week numbers..
 205.146 +        final List weeks = new ArrayList();
 205.147 +        cal.set(Calendar.WEEK_OF_YEAR, 1);
 205.148 +        while (cal.get(Calendar.YEAR) == year) {
 205.149 +            weeks.add(new Integer(cal.get(Calendar.WEEK_OF_YEAR)));
 205.150 +            cal.add(Calendar.WEEK_OF_YEAR, 1);
 205.151 +        }
 205.152 +        return ((Integer) weeks.get(weeks.size() + weekNo)).intValue();
 205.153 +    }
 205.154 +
 205.155 +    /**
 205.156 +     * Returns the absolute year day for the year specified by the
 205.157 +     * supplied date. Note that a value of zero (0) is invalid for the
 205.158 +     * yearDay parameter and an <code>IllegalArgumentException</code>
 205.159 +     * will be thrown.
 205.160 +     * @param date a date instance representing a day of the year
 205.161 +     * @param yearDay a day of year offset
 205.162 +     * @return the absolute day of month for the specified offset
 205.163 +     */
 205.164 +    public static int getAbsYearDay(final java.util.Date date, final int yearDay) {
 205.165 +        if (yearDay == 0 || yearDay < -MAX_DAYS_PER_YEAR || yearDay > MAX_DAYS_PER_YEAR) {
 205.166 +            throw new IllegalArgumentException(MessageFormat.format(INVALID_YEAR_DAY_MESSAGE,
 205.167 +                    new Object[] {new Integer(yearDay)}));
 205.168 +        }
 205.169 +        if (yearDay > 0) {
 205.170 +            return yearDay;
 205.171 +        }
 205.172 +        final Calendar cal = Calendar.getInstance();
 205.173 +        cal.setTime(date);
 205.174 +        final int year = cal.get(Calendar.YEAR);
 205.175 +        // construct a list of possible year days..
 205.176 +        final List days = new ArrayList();
 205.177 +        cal.set(Calendar.DAY_OF_YEAR, 1);
 205.178 +        while (cal.get(Calendar.YEAR) == year) {
 205.179 +            days.add(new Integer(cal.get(Calendar.DAY_OF_YEAR)));
 205.180 +            cal.add(Calendar.DAY_OF_YEAR, 1);
 205.181 +        }
 205.182 +        return ((Integer) days.get(days.size() + yearDay)).intValue();
 205.183 +    }
 205.184 +
 205.185 +    /**
 205.186 +     * Returns the absolute month day for the month specified by the
 205.187 +     * supplied date. Note that a value of zero (0) is invalid for the
 205.188 +     * monthDay parameter and an <code>IllegalArgumentException</code>
 205.189 +     * will be thrown.
 205.190 +     * @param date a date instance representing a day of the month
 205.191 +     * @param monthDay a day of month offset
 205.192 +     * @return the absolute day of month for the specified offset
 205.193 +     */
 205.194 +    public static int getAbsMonthDay(final java.util.Date date, final int monthDay) {
 205.195 +        if (monthDay == 0 || monthDay < -MAX_DAYS_PER_MONTH || monthDay > MAX_DAYS_PER_MONTH) {
 205.196 +            throw new IllegalArgumentException(MessageFormat.format(INVALID_MONTH_DAY_MESSAGE,
 205.197 +                    new Object[] {new Integer(monthDay)}));
 205.198 +        }
 205.199 +        if (monthDay > 0) {
 205.200 +            return monthDay;
 205.201 +        }
 205.202 +        final Calendar cal = Calendar.getInstance();
 205.203 +        cal.setTime(date);
 205.204 +        final int month = cal.get(Calendar.MONTH);
 205.205 +        // construct a list of possible month days..
 205.206 +        final List days = new ArrayList();
 205.207 +        cal.set(Calendar.DAY_OF_MONTH, 1);
 205.208 +        while (cal.get(Calendar.MONTH) == month) {
 205.209 +            days.add(new Integer(cal.get(Calendar.DAY_OF_MONTH)));
 205.210 +            cal.add(Calendar.DAY_OF_MONTH, 1);
 205.211 +        }
 205.212 +        return ((Integer) days.get(days.size() + monthDay)).intValue();
 205.213 +    }
 205.214 +    
 205.215 +    /**
 205.216 +     * Returns a new date instance of the specified type. If no type is
 205.217 +     * specified a DateTime instance is returned.
 205.218 +     * @param date a seed Java date instance
 205.219 +     * @param type the type of date instance
 205.220 +     * @return an instance of <code>net.fortuna.ical4j.model.Date</code>
 205.221 +     */
 205.222 +    public static Date getInstance(final java.util.Date date, final Value type) {
 205.223 +        if (Value.DATE.equals(type)) {
 205.224 +            return new Date(date);
 205.225 +        }
 205.226 +        return new DateTime(date);
 205.227 +    }
 205.228 +    
 205.229 +    /**
 205.230 +     * Returns an instance of <code>java.util.Calendar</code> that is suitably
 205.231 +     * initialised for working with the specified date.
 205.232 +     * @param date a date instance
 205.233 +     * @return a <code>java.util.Calendar</code>
 205.234 +     */
 205.235 +    public static Calendar getCalendarInstance(final Date date) {
 205.236 +        Calendar instance = null;
 205.237 +        if (date instanceof DateTime) {
 205.238 +            final DateTime dateTime = (DateTime) date;
 205.239 +            if (dateTime.getTimeZone() != null) {
 205.240 +                instance = Calendar.getInstance(dateTime.getTimeZone());
 205.241 +            }
 205.242 +            else if (dateTime.isUtc()) {
 205.243 +                instance = Calendar.getInstance(TimeZones.getUtcTimeZone());
 205.244 +            }
 205.245 +            else {
 205.246 +            	// a date-time without a timezone but not UTC is floating
 205.247 +                instance = Calendar.getInstance();
 205.248 +            }
 205.249 +        }
 205.250 +        else {
 205.251 +            instance = Calendar.getInstance(TimeZones.getDateTimeZone());
 205.252 +        }
 205.253 +        return instance;
 205.254 +    }
 205.255 +    
 205.256 +    /**
 205.257 +     * @param time the time value to round
 205.258 +     * @param precision the rounding precision
 205.259 +     * @return a round time value
 205.260 +     * @deprecated It is not all that useful to perform rounding without specifying an
 205.261 +     * explicit timezone.
 205.262 +     */
 205.263 +    public static long round(final long time, final int precision) {
 205.264 +        return round(time, precision, TimeZone.getDefault());
 205.265 +//        return round(time, precision, TimeZone.getTimeZone(TimeZones.UTC_ID));
 205.266 +        /*
 205.267 +        long newTime = time;
 205.268 +        if (precision == PRECISION_DAY) {
 205.269 +            long remainder = newTime%(1000*60*60); // get the mod remainder using milliseconds*seconds*min
 205.270 +            newTime = newTime-remainder;
 205.271 +              // remove the remainder from the time to clear the milliseconds, seconds and minutes
 205.272 +        }
 205.273 +        else if (precision == PRECISION_SECOND) {
 205.274 +            long remainder = newTime%(1000); // get the mod remainder using milliseconds
 205.275 +            newTime = newTime-remainder;  // remove the remainder from the time to clear the milliseconds
 205.276 +        }
 205.277 +        return newTime;
 205.278 +	*/
 205.279 +    }
 205.280 +    
 205.281 +    /**
 205.282 +     * Rounds a time value to remove any precision smaller than specified.
 205.283 +     * @param time the time value to round
 205.284 +     * @param precision the rounding precision
 205.285 +     * @param tz the timezone of the rounded value
 205.286 +     * @return a round time value
 205.287 +     */
 205.288 +    public static long round(final long time, final int precision, final TimeZone tz) {
 205.289 +        if ((precision == PRECISION_SECOND) && ((time % Dates.MILLIS_PER_SECOND) == 0)) {
 205.290 +            return time;
 205.291 +        }
 205.292 +        final Calendar cal = Calendar.getInstance(tz);
 205.293 +        cal.setTimeInMillis(time);
 205.294 +        if (precision == PRECISION_DAY) {
 205.295 +//            return (long) Math.floor(time / (double) Dates.MILLIS_PER_DAY) * Dates.MILLIS_PER_DAY;
 205.296 +            cal.set(Calendar.HOUR_OF_DAY, 0);
 205.297 +            cal.clear(Calendar.MINUTE);
 205.298 +            cal.clear(Calendar.SECOND);
 205.299 +            cal.clear(Calendar.MILLISECOND);
 205.300 +        }
 205.301 +        else if (precision == PRECISION_SECOND) {
 205.302 +//            return (long) Math.floor(time / (double) Dates.MILLIS_PER_SECOND) * Dates.MILLIS_PER_SECOND;
 205.303 +            cal.clear(Calendar.MILLISECOND);
 205.304 +        }
 205.305 +        // unrecognised precision..
 205.306 +        return cal.getTimeInMillis();
 205.307 +    }
 205.308 +
 205.309 +    /**
 205.310 +     * Returns the {@code System.currentTimeMillis()}, rounded to the second.
 205.311 +     * <p>By doing a rough rounding here, we avoid an expensive java.util.Calendar based
 205.312 +     *  rounding later on.</p>
 205.313 +     * @return the current time in millisec.
 205.314 +     */
 205.315 +    public static long getCurrentTimeRounded() {
 205.316 +        return (long) Math.floor(System.currentTimeMillis() / (double) Dates.MILLIS_PER_SECOND) * Dates.MILLIS_PER_SECOND;
 205.317 +    }
 205.318 +}
   206.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   206.2 +++ b/src/net/fortuna/ical4j/util/DecoderFactory.java	Tue Feb 10 18:12:00 2015 +0100
   206.3 @@ -0,0 +1,95 @@
   206.4 +/**
   206.5 + * Copyright (c) 2012, Ben Fortuna
   206.6 + * All rights reserved.
   206.7 + *
   206.8 + * Redistribution and use in source and binary forms, with or without
   206.9 + * modification, are permitted provided that the following conditions
  206.10 + * are met:
  206.11 + *
  206.12 + *  o Redistributions of source code must retain the above copyright
  206.13 + * notice, this list of conditions and the following disclaimer.
  206.14 + *
  206.15 + *  o Redistributions in binary form must reproduce the above copyright
  206.16 + * notice, this list of conditions and the following disclaimer in the
  206.17 + * documentation and/or other materials provided with the distribution.
  206.18 + *
  206.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  206.20 + * may be used to endorse or promote products derived from this software
  206.21 + * without specific prior written permission.
  206.22 + *
  206.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  206.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  206.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  206.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  206.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  206.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  206.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  206.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  206.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  206.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  206.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  206.34 + */
  206.35 +package net.fortuna.ical4j.util;
  206.36 +
  206.37 +import java.io.UnsupportedEncodingException;
  206.38 +
  206.39 +import net.fortuna.ical4j.model.parameter.Encoding;
  206.40 +
  206.41 +import org.apache.commons.codec.BinaryDecoder;
  206.42 +import org.apache.commons.codec.StringDecoder;
  206.43 +
  206.44 +/**
  206.45 + * Abstract base class for decoder factory implementations.
  206.46 + * 
  206.47 + * $Id$
  206.48 + *
  206.49 + * Created on 13/05/2006
  206.50 + *
  206.51 + * @author Ben Fortuna
  206.52 + */
  206.53 +public abstract class DecoderFactory {
  206.54 +    
  206.55 +    /**
  206.56 +     * The system property used to specify an alternate
  206.57 +     * <code>DecoderFactory</code> implementation.
  206.58 +     */
  206.59 +    public static final String KEY_FACTORY_CLASS = "net.fortuna.ical4j.factory.decoder";
  206.60 +
  206.61 +    private static DecoderFactory instance;
  206.62 +    static {
  206.63 +        try {
  206.64 +            final Class factoryClass = Class.forName(Configurator.getProperty(KEY_FACTORY_CLASS));
  206.65 +            instance = (DecoderFactory) factoryClass.newInstance();
  206.66 +        }
  206.67 +        catch (Exception e) {
  206.68 +            instance = new DefaultDecoderFactory();
  206.69 +        }
  206.70 +    }
  206.71 +    
  206.72 +    /**
  206.73 +     * @return Returns the instance.
  206.74 +     */
  206.75 +    public static final DecoderFactory getInstance() {
  206.76 +        return instance;
  206.77 +    }
  206.78 +
  206.79 +    /**
  206.80 +     * Returns a new {@link BinaryDecoder} for the specified encoding.
  206.81 +     * @param encoding an encoding type
  206.82 +     * @return a {@link BinaryDecoder} instance
  206.83 +     * @throws UnsupportedEncodingException where an encoder supporting the
  206.84 +     * specified encoding is not available.
  206.85 +     */
  206.86 +    public abstract BinaryDecoder createBinaryDecoder(Encoding encoding)
  206.87 +        throws UnsupportedEncodingException;
  206.88 +    
  206.89 +    /**
  206.90 +     * Returns a new {@link StringDecoder} for the specified encoding.
  206.91 +     * @param encoding an encoding type
  206.92 +     * @return a {@link StringDecoder} instance
  206.93 +     * @throws UnsupportedEncodingException where an encoder supporting the
  206.94 +     * specified encoding is not available.
  206.95 +     */
  206.96 +    public abstract StringDecoder createStringDecoder(Encoding encoding)
  206.97 +        throws UnsupportedEncodingException;
  206.98 +}
   207.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   207.2 +++ b/src/net/fortuna/ical4j/util/DefaultDecoderFactory.java	Tue Feb 10 18:12:00 2015 +0100
   207.3 @@ -0,0 +1,85 @@
   207.4 +/**
   207.5 + * Copyright (c) 2012, Ben Fortuna
   207.6 + * All rights reserved.
   207.7 + *
   207.8 + * Redistribution and use in source and binary forms, with or without
   207.9 + * modification, are permitted provided that the following conditions
  207.10 + * are met:
  207.11 + *
  207.12 + *  o Redistributions of source code must retain the above copyright
  207.13 + * notice, this list of conditions and the following disclaimer.
  207.14 + *
  207.15 + *  o Redistributions in binary form must reproduce the above copyright
  207.16 + * notice, this list of conditions and the following disclaimer in the
  207.17 + * documentation and/or other materials provided with the distribution.
  207.18 + *
  207.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  207.20 + * may be used to endorse or promote products derived from this software
  207.21 + * without specific prior written permission.
  207.22 + *
  207.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  207.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  207.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  207.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  207.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  207.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  207.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  207.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  207.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  207.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  207.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  207.34 + */
  207.35 +package net.fortuna.ical4j.util;
  207.36 +
  207.37 +import java.io.UnsupportedEncodingException;
  207.38 +import java.text.MessageFormat;
  207.39 +
  207.40 +import net.fortuna.ical4j.model.parameter.Encoding;
  207.41 +
  207.42 +import org.apache.commons.codec.BinaryDecoder;
  207.43 +import org.apache.commons.codec.StringDecoder;
  207.44 +import org.apache.commons.codec.binary.Base64;
  207.45 +import org.apache.commons.codec.net.QuotedPrintableCodec;
  207.46 +
  207.47 +/**
  207.48 + * Default decoder factory implementation.
  207.49 + * 
  207.50 + * $Id$
  207.51 + *
  207.52 + * Created on 13/05/2006
  207.53 + *
  207.54 + * @author Ben Fortuna
  207.55 + */
  207.56 +public class DefaultDecoderFactory extends DecoderFactory {
  207.57 +
  207.58 +    private static final String UNSUPPORTED_ENCODING_MESSAGE = "Decoder not available for encoding [{0}]";
  207.59 +
  207.60 +    /**
  207.61 +     * {@inheritDoc}
  207.62 +     */
  207.63 +    public BinaryDecoder createBinaryDecoder(final Encoding encoding)
  207.64 +            throws UnsupportedEncodingException {
  207.65 +
  207.66 +        if (Encoding.QUOTED_PRINTABLE.equals(encoding)) {
  207.67 +            return new QuotedPrintableCodec();
  207.68 +        }
  207.69 +        else if (Encoding.BASE64.equals(encoding)) {
  207.70 +            return new Base64();
  207.71 +        }
  207.72 +        throw new UnsupportedEncodingException(MessageFormat.format(UNSUPPORTED_ENCODING_MESSAGE,
  207.73 +                new Object[] {encoding}));
  207.74 +    }
  207.75 +
  207.76 +    /**
  207.77 +     * {@inheritDoc}
  207.78 +     */
  207.79 +    public StringDecoder createStringDecoder(final Encoding encoding)
  207.80 +            throws UnsupportedEncodingException {
  207.81 +
  207.82 +        if (Encoding.QUOTED_PRINTABLE.equals(encoding)) {
  207.83 +            return new QuotedPrintableCodec();
  207.84 +        }
  207.85 +        throw new UnsupportedEncodingException(MessageFormat.format(UNSUPPORTED_ENCODING_MESSAGE,
  207.86 +                new Object[] {encoding}));
  207.87 +    }
  207.88 +}
   208.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   208.2 +++ b/src/net/fortuna/ical4j/util/DefaultEncoderFactory.java	Tue Feb 10 18:12:00 2015 +0100
   208.3 @@ -0,0 +1,85 @@
   208.4 +/**
   208.5 + * Copyright (c) 2012, Ben Fortuna
   208.6 + * All rights reserved.
   208.7 + *
   208.8 + * Redistribution and use in source and binary forms, with or without
   208.9 + * modification, are permitted provided that the following conditions
  208.10 + * are met:
  208.11 + *
  208.12 + *  o Redistributions of source code must retain the above copyright
  208.13 + * notice, this list of conditions and the following disclaimer.
  208.14 + *
  208.15 + *  o Redistributions in binary form must reproduce the above copyright
  208.16 + * notice, this list of conditions and the following disclaimer in the
  208.17 + * documentation and/or other materials provided with the distribution.
  208.18 + *
  208.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  208.20 + * may be used to endorse or promote products derived from this software
  208.21 + * without specific prior written permission.
  208.22 + *
  208.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  208.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  208.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  208.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  208.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  208.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  208.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  208.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  208.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  208.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  208.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  208.34 + */
  208.35 +package net.fortuna.ical4j.util;
  208.36 +
  208.37 +import java.io.UnsupportedEncodingException;
  208.38 +import java.text.MessageFormat;
  208.39 +
  208.40 +import net.fortuna.ical4j.model.parameter.Encoding;
  208.41 +
  208.42 +import org.apache.commons.codec.BinaryEncoder;
  208.43 +import org.apache.commons.codec.StringEncoder;
  208.44 +import org.apache.commons.codec.binary.Base64;
  208.45 +import org.apache.commons.codec.net.QuotedPrintableCodec;
  208.46 +
  208.47 +/**
  208.48 + * Default encoder factory implementation.
  208.49 + * 
  208.50 + * $Id$
  208.51 + *
  208.52 + * Created on 13/05/2006
  208.53 + *
  208.54 + * @author Ben Fortuna
  208.55 + */
  208.56 +public class DefaultEncoderFactory extends EncoderFactory {
  208.57 +
  208.58 +    private static final String UNSUPPORTED_ENCODING_MESSAGE = "Encoder not available for encoding [{0}]";
  208.59 +    
  208.60 +    /**
  208.61 +     * {@inheritDoc}
  208.62 +     */
  208.63 +    public BinaryEncoder createBinaryEncoder(final Encoding encoding)
  208.64 +            throws UnsupportedEncodingException {
  208.65 +
  208.66 +        if (Encoding.QUOTED_PRINTABLE.equals(encoding)) {
  208.67 +            return new QuotedPrintableCodec();
  208.68 +        }
  208.69 +        else if (Encoding.BASE64.equals(encoding)) {
  208.70 +            return new Base64();
  208.71 +        }
  208.72 +        throw new UnsupportedEncodingException(MessageFormat.format(UNSUPPORTED_ENCODING_MESSAGE,
  208.73 +                new Object[] {encoding}));
  208.74 +    }
  208.75 +
  208.76 +    /**
  208.77 +     * {@inheritDoc}
  208.78 +     */
  208.79 +    public StringEncoder createStringEncoder(final Encoding encoding)
  208.80 +            throws UnsupportedEncodingException {
  208.81 +
  208.82 +        if (Encoding.QUOTED_PRINTABLE.equals(encoding)) {
  208.83 +            return new QuotedPrintableCodec();
  208.84 +        }
  208.85 +        throw new UnsupportedEncodingException(MessageFormat.format(UNSUPPORTED_ENCODING_MESSAGE,
  208.86 +                new Object[] {encoding}));
  208.87 +    }
  208.88 +}
   209.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   209.2 +++ b/src/net/fortuna/ical4j/util/EncoderFactory.java	Tue Feb 10 18:12:00 2015 +0100
   209.3 @@ -0,0 +1,95 @@
   209.4 +/**
   209.5 + * Copyright (c) 2012, Ben Fortuna
   209.6 + * All rights reserved.
   209.7 + *
   209.8 + * Redistribution and use in source and binary forms, with or without
   209.9 + * modification, are permitted provided that the following conditions
  209.10 + * are met:
  209.11 + *
  209.12 + *  o Redistributions of source code must retain the above copyright
  209.13 + * notice, this list of conditions and the following disclaimer.
  209.14 + *
  209.15 + *  o Redistributions in binary form must reproduce the above copyright
  209.16 + * notice, this list of conditions and the following disclaimer in the
  209.17 + * documentation and/or other materials provided with the distribution.
  209.18 + *
  209.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  209.20 + * may be used to endorse or promote products derived from this software
  209.21 + * without specific prior written permission.
  209.22 + *
  209.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  209.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  209.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  209.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  209.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  209.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  209.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  209.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  209.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  209.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  209.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  209.34 + */
  209.35 +package net.fortuna.ical4j.util;
  209.36 +
  209.37 +import java.io.UnsupportedEncodingException;
  209.38 +
  209.39 +import net.fortuna.ical4j.model.parameter.Encoding;
  209.40 +
  209.41 +import org.apache.commons.codec.BinaryEncoder;
  209.42 +import org.apache.commons.codec.StringEncoder;
  209.43 +
  209.44 +/**
  209.45 + * Abstract base class for encoder factory implementations.
  209.46 + * 
  209.47 + * $Id$
  209.48 + *
  209.49 + * Created on 13/05/2006
  209.50 + *
  209.51 + * @author Ben Fortuna
  209.52 + */
  209.53 +public abstract class EncoderFactory {
  209.54 +    
  209.55 +    /**
  209.56 +     * The system property used to specify an alternate
  209.57 +     * <code>EncoderFactory</code> implementation.
  209.58 +     */
  209.59 +    public static final String KEY_FACTORY_CLASS = "net.fortuna.ical4j.factory.encoder";
  209.60 +
  209.61 +    private static EncoderFactory instance;
  209.62 +    static {
  209.63 +        try {
  209.64 +            final Class factoryClass = Class.forName(Configurator.getProperty(KEY_FACTORY_CLASS));
  209.65 +            instance = (EncoderFactory) factoryClass.newInstance();
  209.66 +        }
  209.67 +        catch (Exception e) {
  209.68 +            instance = new DefaultEncoderFactory();
  209.69 +        }
  209.70 +    }
  209.71 +    
  209.72 +    /**
  209.73 +     * @return Returns the instance.
  209.74 +     */
  209.75 +    public static final EncoderFactory getInstance() {
  209.76 +        return instance;
  209.77 +    }
  209.78 +
  209.79 +    /**
  209.80 +     * Returns a new {@link BinaryEncoder} for the specified encoding.
  209.81 +     * @param encoding an encoding type
  209.82 +     * @return a {@link BinaryEncoder} instance
  209.83 +     * @throws UnsupportedEncodingException where an encoder supporting the
  209.84 +     * specified encoding is not available.
  209.85 +     */
  209.86 +    public abstract BinaryEncoder createBinaryEncoder(Encoding encoding)
  209.87 +        throws UnsupportedEncodingException;
  209.88 +    
  209.89 +    /**
  209.90 +     * Returns a new {@link StringEncoder} for the specified encoding.
  209.91 +     * @param encoding an encoding type
  209.92 +     * @return a {@link StringEncoder} instance
  209.93 +     * @throws UnsupportedEncodingException where an encoder supporting the
  209.94 +     * specified encoding is not available.
  209.95 +     */
  209.96 +    public abstract StringEncoder createStringEncoder(Encoding encoding)
  209.97 +        throws UnsupportedEncodingException;
  209.98 +}
   210.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   210.2 +++ b/src/net/fortuna/ical4j/util/HostInfo.java	Tue Feb 10 18:12:00 2015 +0100
   210.3 @@ -0,0 +1,46 @@
   210.4 +/**
   210.5 + * Copyright (c) 2012, Ben Fortuna
   210.6 + * All rights reserved.
   210.7 + *
   210.8 + * Redistribution and use in source and binary forms, with or without
   210.9 + * modification, are permitted provided that the following conditions
  210.10 + * are met:
  210.11 + *
  210.12 + *  o Redistributions of source code must retain the above copyright
  210.13 + * notice, this list of conditions and the following disclaimer.
  210.14 + *
  210.15 + *  o Redistributions in binary form must reproduce the above copyright
  210.16 + * notice, this list of conditions and the following disclaimer in the
  210.17 + * documentation and/or other materials provided with the distribution.
  210.18 + *
  210.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  210.20 + * may be used to endorse or promote products derived from this software
  210.21 + * without specific prior written permission.
  210.22 + *
  210.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  210.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  210.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  210.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  210.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  210.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  210.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  210.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  210.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  210.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  210.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  210.34 + */
  210.35 +package net.fortuna.ical4j.util;
  210.36 +
  210.37 +/**
  210.38 + * Provides platform-independent host information.
  210.39 + * 
  210.40 + * @author fortuna
  210.41 + *
  210.42 + */
  210.43 +public interface HostInfo {
  210.44 +
  210.45 +    /**
  210.46 +     * @return a name for the host machine
  210.47 +     */
  210.48 +    String getHostName();
  210.49 +}
   211.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   211.2 +++ b/src/net/fortuna/ical4j/util/InetAddressHostInfo.java	Tue Feb 10 18:12:00 2015 +0100
   211.3 @@ -0,0 +1,90 @@
   211.4 +/**
   211.5 + * Copyright (c) 2012, Ben Fortuna
   211.6 + * All rights reserved.
   211.7 + *
   211.8 + * Redistribution and use in source and binary forms, with or without
   211.9 + * modification, are permitted provided that the following conditions
  211.10 + * are met:
  211.11 + *
  211.12 + *  o Redistributions of source code must retain the above copyright
  211.13 + * notice, this list of conditions and the following disclaimer.
  211.14 + *
  211.15 + *  o Redistributions in binary form must reproduce the above copyright
  211.16 + * notice, this list of conditions and the following disclaimer in the
  211.17 + * documentation and/or other materials provided with the distribution.
  211.18 + *
  211.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  211.20 + * may be used to endorse or promote products derived from this software
  211.21 + * without specific prior written permission.
  211.22 + *
  211.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  211.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  211.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  211.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  211.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  211.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  211.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  211.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  211.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  211.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  211.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  211.34 + */
  211.35 +package net.fortuna.ical4j.util;
  211.36 +
  211.37 +import java.net.InetAddress;
  211.38 +import java.net.NetworkInterface;
  211.39 +import java.net.SocketException;
  211.40 +import java.util.Enumeration;
  211.41 +
  211.42 +/**
  211.43 + * @author fortuna
  211.44 + *
  211.45 + */
  211.46 +public class InetAddressHostInfo implements HostInfo {
  211.47 +
  211.48 +    private final InetAddress hostAddress;
  211.49 +    
  211.50 +    /**
  211.51 +     * @throws SocketException where an error occurs identifying the host address
  211.52 +     */
  211.53 +    public InetAddressHostInfo() throws SocketException {
  211.54 +        this(findNonLoopbackAddress());
  211.55 +    }
  211.56 +    
  211.57 +    /**
  211.58 +     * @param address a host address
  211.59 +     */
  211.60 +    public InetAddressHostInfo(InetAddress address) {
  211.61 +        this.hostAddress = address;
  211.62 +    }
  211.63 +    
  211.64 +    /**
  211.65 +     * {@inheritDoc}
  211.66 +     */
  211.67 +    public String getHostName() {
  211.68 +        return hostAddress.getHostName();
  211.69 +    }
  211.70 +
  211.71 +    /**
  211.72 +     * Find a non loopback address for this machine on which to start the server.
  211.73 +     * @return a non loopback address
  211.74 +     * @throws SocketException if a socket error occurs
  211.75 +     */
  211.76 +    private static InetAddress findNonLoopbackAddress() throws SocketException {
  211.77 +        final Enumeration enumInterfaceAddress = NetworkInterface.getNetworkInterfaces();
  211.78 +        while (enumInterfaceAddress.hasMoreElements()) {
  211.79 +            final NetworkInterface netIf = (NetworkInterface) enumInterfaceAddress.nextElement();
  211.80 +
  211.81 +            // Iterate over inet address
  211.82 +            final Enumeration enumInetAdress = netIf.getInetAddresses();
  211.83 +            while (enumInetAdress.hasMoreElements()) {
  211.84 +                final InetAddress address = (InetAddress) enumInetAdress.nextElement();
  211.85 +                if (!address.isLoopbackAddress()) {
  211.86 +                    return address;
  211.87 +                }
  211.88 +            }
  211.89 +        }
  211.90 +        return null;
  211.91 +    }
  211.92 +
  211.93 +}
   212.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   212.2 +++ b/src/net/fortuna/ical4j/util/Numbers.java	Tue Feb 10 18:12:00 2015 +0100
   212.3 @@ -0,0 +1,62 @@
   212.4 +/**
   212.5 + * Copyright (c) 2012, Ben Fortuna
   212.6 + * All rights reserved.
   212.7 + *
   212.8 + * Redistribution and use in source and binary forms, with or without
   212.9 + * modification, are permitted provided that the following conditions
  212.10 + * are met:
  212.11 + *
  212.12 + *  o Redistributions of source code must retain the above copyright
  212.13 + * notice, this list of conditions and the following disclaimer.
  212.14 + *
  212.15 + *  o Redistributions in binary form must reproduce the above copyright
  212.16 + * notice, this list of conditions and the following disclaimer in the
  212.17 + * documentation and/or other materials provided with the distribution.
  212.18 + *
  212.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  212.20 + * may be used to endorse or promote products derived from this software
  212.21 + * without specific prior written permission.
  212.22 + *
  212.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  212.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  212.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  212.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  212.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  212.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  212.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  212.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  212.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  212.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  212.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  212.34 + */
  212.35 +package net.fortuna.ical4j.util;
  212.36 +
  212.37 +/**
  212.38 + * $Id$
  212.39 + *
  212.40 + * Created on 6/08/2005
  212.41 + *
  212.42 + * A utility class for number processing.
  212.43 + * @author Ben Fortuna
  212.44 + */
  212.45 +public final class Numbers {
  212.46 +
  212.47 +    /**
  212.48 +     * Constructor made private to enforce static nature.
  212.49 +     */
  212.50 +    private Numbers() {
  212.51 +    }
  212.52 +    
  212.53 +    /**
  212.54 +     * Wraps <code>java.lang.Integer.parseInt()</code> to accept values with
  212.55 +     * a PLUS character (i.e. "+2").
  212.56 +     * @param value an integer string
  212.57 +     * @return a parsed integer value
  212.58 +     */
  212.59 +    public static int parseInt(final String value) {
  212.60 +        if (value != null && value.charAt(0) == '+') {
  212.61 +            return Integer.parseInt(value.substring(1));
  212.62 +        }
  212.63 +        return Integer.parseInt(value);
  212.64 +    }
  212.65 +}
   213.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   213.2 +++ b/src/net/fortuna/ical4j/util/ParameterValidator.java	Tue Feb 10 18:12:00 2015 +0100
   213.3 @@ -0,0 +1,131 @@
   213.4 +/**
   213.5 + * Copyright (c) 2012, Ben Fortuna
   213.6 + * All rights reserved.
   213.7 + *
   213.8 + * Redistribution and use in source and binary forms, with or without
   213.9 + * modification, are permitted provided that the following conditions
  213.10 + * are met:
  213.11 + *
  213.12 + *  o Redistributions of source code must retain the above copyright
  213.13 + * notice, this list of conditions and the following disclaimer.
  213.14 + *
  213.15 + *  o Redistributions in binary form must reproduce the above copyright
  213.16 + * notice, this list of conditions and the following disclaimer in the
  213.17 + * documentation and/or other materials provided with the distribution.
  213.18 + *
  213.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  213.20 + * may be used to endorse or promote products derived from this software
  213.21 + * without specific prior written permission.
  213.22 + *
  213.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  213.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  213.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  213.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  213.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  213.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  213.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  213.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  213.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  213.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  213.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  213.34 + */
  213.35 +package net.fortuna.ical4j.util;
  213.36 +
  213.37 +import net.fortuna.ical4j.model.Parameter;
  213.38 +import net.fortuna.ical4j.model.ParameterList;
  213.39 +import net.fortuna.ical4j.model.ValidationException;
  213.40 +
  213.41 +/**
  213.42 + * $Id$ [15-May-2004]
  213.43 + *
  213.44 + * Defines methods for validating parameters and parameter
  213.45 + * lists.
  213.46 + * 
  213.47 + * @author Ben Fortuna
  213.48 + */
  213.49 +public final class ParameterValidator {
  213.50 +
  213.51 +    private static final String ASSERT_NONE_MESSAGE = "Parameter [{0}] is not applicable";
  213.52 +
  213.53 +    private static final String ASSERT_ONE_OR_LESS_MESSAGE = "Parameter [{0}] must only be specified once";
  213.54 +
  213.55 +    private static final String ASSERT_ONE_MESSAGE = "Parameter [{0}] must be specified once";
  213.56 +
  213.57 +    private static final String ASSERT_NULL_OR_EQUAL_MESSAGE = "Parameter [{0}] is invalid";
  213.58 +
  213.59 +    private static ParameterValidator instance = new ParameterValidator();
  213.60 +
  213.61 +    /**
  213.62 +     * Constructor made private to enforce singleton.
  213.63 +     */
  213.64 +    private ParameterValidator() {
  213.65 +    }
  213.66 +
  213.67 +    /**
  213.68 +     * Ensure a parameter occurs no more than once.
  213.69 +     *
  213.70 +     * @param paramName
  213.71 +     *            the parameter name
  213.72 +     * @param parameters
  213.73 +     *            a list of parameters to query
  213.74 +     * @throws ValidationException
  213.75 +     *             when the specified parameter occurs more than once
  213.76 +     */
  213.77 +    public void assertOneOrLess(final String paramName,
  213.78 +            final ParameterList parameters) throws ValidationException {
  213.79 +
  213.80 +        if (parameters.getParameters(paramName).size() > 1) {
  213.81 +            throw new ValidationException(ASSERT_ONE_OR_LESS_MESSAGE, new Object[] {paramName});
  213.82 +        }
  213.83 +    }
  213.84 +
  213.85 +    /**
  213.86 +     * Ensure a parameter occurs once.
  213.87 +     *
  213.88 +     * @param paramName
  213.89 +     *            the parameter name
  213.90 +     * @param parameters
  213.91 +     *            a list of parameters to query
  213.92 +     * @throws ValidationException
  213.93 +     *             when the specified parameter does not occur once
  213.94 +     */
  213.95 +    public void assertOne(final String paramName,
  213.96 +            final ParameterList parameters) throws ValidationException {
  213.97 +
  213.98 +        if (parameters.getParameters(paramName).size() != 1) {
  213.99 +            throw new ValidationException(ASSERT_ONE_MESSAGE, new Object[] {paramName});
 213.100 +        }
 213.101 +    }
 213.102 +    
 213.103 +    /**
 213.104 +     * Ensure a parameter doesn't occur in the specified list.
 213.105 +     * @param paramName the name of a parameter
 213.106 +     * @param parameters a list of parameters
 213.107 +     * @throws ValidationException thrown when the specified property
 213.108 +     * is found in the list of properties
 213.109 +     */
 213.110 +    public void assertNone(final String paramName, final ParameterList parameters) throws ValidationException {
 213.111 +        if (parameters.getParameter(paramName) != null) {
 213.112 +            throw new ValidationException(ASSERT_NONE_MESSAGE, new Object[] {paramName});
 213.113 +        }
 213.114 +    }
 213.115 +
 213.116 +    /**
 213.117 +     * @param param a parameter instance
 213.118 +     * @param parameters a list of parameters
 213.119 +     * @throws ValidationException where the assertion fails
 213.120 +     */
 213.121 +    public void assertNullOrEqual(final Parameter param, final ParameterList parameters) throws ValidationException {
 213.122 +        final Parameter p = parameters.getParameter(param.getName());
 213.123 +        if (p != null && !param.equals(p)) {
 213.124 +            throw new ValidationException(ASSERT_NULL_OR_EQUAL_MESSAGE, new Object[] {p});
 213.125 +        }
 213.126 +    }
 213.127 +    
 213.128 +    /**
 213.129 +     * @return Returns the instance.
 213.130 +     */
 213.131 +    public static ParameterValidator getInstance() {
 213.132 +        return instance;
 213.133 +    }
 213.134 +}
   214.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   214.2 +++ b/src/net/fortuna/ical4j/util/PropertyValidator.java	Tue Feb 10 18:12:00 2015 +0100
   214.3 @@ -0,0 +1,135 @@
   214.4 +/**
   214.5 + * Copyright (c) 2012, Ben Fortuna
   214.6 + * All rights reserved.
   214.7 + *
   214.8 + * Redistribution and use in source and binary forms, with or without
   214.9 + * modification, are permitted provided that the following conditions
  214.10 + * are met:
  214.11 + *
  214.12 + *  o Redistributions of source code must retain the above copyright
  214.13 + * notice, this list of conditions and the following disclaimer.
  214.14 + *
  214.15 + *  o Redistributions in binary form must reproduce the above copyright
  214.16 + * notice, this list of conditions and the following disclaimer in the
  214.17 + * documentation and/or other materials provided with the distribution.
  214.18 + *
  214.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  214.20 + * may be used to endorse or promote products derived from this software
  214.21 + * without specific prior written permission.
  214.22 + *
  214.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  214.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  214.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  214.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  214.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  214.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  214.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  214.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  214.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  214.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  214.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  214.34 + */
  214.35 +package net.fortuna.ical4j.util;
  214.36 +
  214.37 +import net.fortuna.ical4j.model.PropertyList;
  214.38 +import net.fortuna.ical4j.model.ValidationException;
  214.39 +
  214.40 +/**
  214.41 + * $Id$ [15-May-2004]
  214.42 + *
  214.43 + * Defines methods for validating properties and property lists.
  214.44 + *
  214.45 + * @author Ben Fortuna
  214.46 + */
  214.47 +public final class PropertyValidator {
  214.48 +
  214.49 +    private static final String ASSERT_NONE_MESSAGE = "Property [{0}] is not applicable";
  214.50 +
  214.51 +    private static final String ASSERT_ONE_OR_LESS_MESSAGE = "Property [{0}] must only be specified once";
  214.52 +
  214.53 +    private static final String ASSERT_ONE_MESSAGE = "Property [{0}] must be specified once";
  214.54 +
  214.55 +    private static final String ASSERT_ONE_OR_MORE_MESSAGE = "Property [{0}] must be specified at least once";
  214.56 +
  214.57 +    private static PropertyValidator instance = new PropertyValidator();
  214.58 +
  214.59 +    /**
  214.60 +     * Constructor made private to enforce singleton.
  214.61 +     */
  214.62 +    private PropertyValidator() {
  214.63 +    }
  214.64 +
  214.65 +    /**
  214.66 +     * Ensure a property occurs no more than once.
  214.67 +     *
  214.68 +     * @param propertyName
  214.69 +     *            the property name
  214.70 +     * @param properties
  214.71 +     *            a list of properties to query
  214.72 +     * @throws ValidationException
  214.73 +     *             when the specified property occurs more than once
  214.74 +     */
  214.75 +    public void assertOneOrLess(final String propertyName,
  214.76 +            final PropertyList properties) throws ValidationException {
  214.77 +
  214.78 +        if (properties.getProperties(propertyName).size() > 1) {
  214.79 +            throw new ValidationException(ASSERT_ONE_OR_LESS_MESSAGE, new Object[] {propertyName});
  214.80 +        }
  214.81 +    }
  214.82 +
  214.83 +    /**
  214.84 +     * Ensure a property occurs at least once.
  214.85 +     *
  214.86 +     * @param propertyName
  214.87 +     *            the property name
  214.88 +     * @param properties
  214.89 +     *            a list of properties to query
  214.90 +     * @throws ValidationException
  214.91 +     *             when the specified property occurs more than once
  214.92 +     */
  214.93 +    public void assertOneOrMore(final String propertyName,
  214.94 +            final PropertyList properties) throws ValidationException {
  214.95 +
  214.96 +        if (properties.getProperties(propertyName).size() < 1) {
  214.97 +            throw new ValidationException(ASSERT_ONE_OR_MORE_MESSAGE, new Object[] {propertyName});
  214.98 +        }
  214.99 +    }
 214.100 +
 214.101 +    /**
 214.102 +     * Ensure a property occurs once.
 214.103 +     *
 214.104 +     * @param propertyName
 214.105 +     *            the property name
 214.106 +     * @param properties
 214.107 +     *            a list of properties to query
 214.108 +     * @throws ValidationException
 214.109 +     *             when the specified property does not occur once
 214.110 +     */
 214.111 +    public void assertOne(final String propertyName,
 214.112 +            final PropertyList properties) throws ValidationException {
 214.113 +
 214.114 +        if (properties.getProperties(propertyName).size() != 1) {
 214.115 +            throw new ValidationException(ASSERT_ONE_MESSAGE, new Object[] {propertyName});
 214.116 +        }
 214.117 +    }
 214.118 +    
 214.119 +    /**
 214.120 +     * Ensure a property doesn't occur in the specified list.
 214.121 +     * @param propertyName the name of a property
 214.122 +     * @param properties a list of properties
 214.123 +     * @throws ValidationException thrown when the specified property
 214.124 +     * is found in the list of properties
 214.125 +     */
 214.126 +    public void assertNone(final String propertyName, final PropertyList properties) throws ValidationException {
 214.127 +        if (properties.getProperty(propertyName) != null) {
 214.128 +            throw new ValidationException(ASSERT_NONE_MESSAGE, new Object[] {propertyName});
 214.129 +        }
 214.130 +    }
 214.131 +
 214.132 +    /**
 214.133 +     * @return Returns the instance.
 214.134 +     */
 214.135 +    public static PropertyValidator getInstance() {
 214.136 +        return instance;
 214.137 +    }
 214.138 +}
   215.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   215.2 +++ b/src/net/fortuna/ical4j/util/ResourceLoader.java	Tue Feb 10 18:12:00 2015 +0100
   215.3 @@ -0,0 +1,87 @@
   215.4 +/**
   215.5 + * Copyright (c) 2012, Ben Fortuna
   215.6 + * All rights reserved.
   215.7 + *
   215.8 + * Redistribution and use in source and binary forms, with or without
   215.9 + * modification, are permitted provided that the following conditions
  215.10 + * are met:
  215.11 + *
  215.12 + *  o Redistributions of source code must retain the above copyright
  215.13 + * notice, this list of conditions and the following disclaimer.
  215.14 + *
  215.15 + *  o Redistributions in binary form must reproduce the above copyright
  215.16 + * notice, this list of conditions and the following disclaimer in the
  215.17 + * documentation and/or other materials provided with the distribution.
  215.18 + *
  215.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  215.20 + * may be used to endorse or promote products derived from this software
  215.21 + * without specific prior written permission.
  215.22 + *
  215.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  215.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  215.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  215.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  215.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  215.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  215.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  215.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  215.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  215.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  215.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  215.34 + */
  215.35 +package net.fortuna.ical4j.util;
  215.36 +
  215.37 +import java.io.InputStream;
  215.38 +import java.net.URL;
  215.39 +
  215.40 +import org.apache.commons.logging.Log;
  215.41 +import org.apache.commons.logging.LogFactory;
  215.42 +
  215.43 +/**
  215.44 + * @author fortuna
  215.45 + *
  215.46 + */
  215.47 +public class ResourceLoader {
  215.48 +
  215.49 +	private static final Log LOG = LogFactory.getLog(ResourceLoader.class);
  215.50 +	
  215.51 +	/**
  215.52 +	 * Load a resource via the thread context classloader. If security permissions don't allow
  215.53 +	 * this fallback to loading via current classloader.
  215.54 +	 * @param name a resource name
  215.55 +	 * @return a {@link URL} or null if resource is not found
  215.56 +	 */
  215.57 +	public static URL getResource(String name) {
  215.58 +		URL resource = null;
  215.59 +		try {
  215.60 +			resource = Thread.currentThread().getContextClassLoader().getResource(name);
  215.61 +		}
  215.62 +		catch (SecurityException e) {
  215.63 +			LOG.info("Unable to access context classloader, using default. " + e.getMessage());
  215.64 +		}
  215.65 +		if (resource == null) {
  215.66 +			resource = ResourceLoader.class.getResource("/" + name);
  215.67 +		}
  215.68 +		return resource;
  215.69 +	}
  215.70 +
  215.71 +	/**
  215.72 +	 * Load a resource via the thread context classloader. If security permissions don't allow
  215.73 +	 * this fallback to loading via current classloader.
  215.74 +	 * @param name a resource name
  215.75 +	 * @return an {@link InputStream} or null if resource is not found
  215.76 +	 */
  215.77 +	public static InputStream getResourceAsStream(String name) {
  215.78 +		InputStream stream = null;
  215.79 +		try {
  215.80 +			stream = Thread.currentThread().getContextClassLoader().getResourceAsStream(name);
  215.81 +		}
  215.82 +		catch (SecurityException e) {
  215.83 +			LOG.info("Unable to access context classloader, using default. " + e.getMessage());
  215.84 +		}
  215.85 +		if (stream == null) {
  215.86 +			stream = ResourceLoader.class.getResourceAsStream("/" + name);
  215.87 +		}
  215.88 +		return stream;
  215.89 +	}
  215.90 +}
   216.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   216.2 +++ b/src/net/fortuna/ical4j/util/SimpleHostInfo.java	Tue Feb 10 18:12:00 2015 +0100
   216.3 @@ -0,0 +1,56 @@
   216.4 +/**
   216.5 + * Copyright (c) 2012, Ben Fortuna
   216.6 + * All rights reserved.
   216.7 + *
   216.8 + * Redistribution and use in source and binary forms, with or without
   216.9 + * modification, are permitted provided that the following conditions
  216.10 + * are met:
  216.11 + *
  216.12 + *  o Redistributions of source code must retain the above copyright
  216.13 + * notice, this list of conditions and the following disclaimer.
  216.14 + *
  216.15 + *  o Redistributions in binary form must reproduce the above copyright
  216.16 + * notice, this list of conditions and the following disclaimer in the
  216.17 + * documentation and/or other materials provided with the distribution.
  216.18 + *
  216.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  216.20 + * may be used to endorse or promote products derived from this software
  216.21 + * without specific prior written permission.
  216.22 + *
  216.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  216.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  216.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  216.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  216.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  216.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  216.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  216.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  216.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  216.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  216.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  216.34 + */
  216.35 +package net.fortuna.ical4j.util;
  216.36 +
  216.37 +/**
  216.38 + * @author fortuna
  216.39 + *
  216.40 + */
  216.41 +public class SimpleHostInfo implements HostInfo {
  216.42 +
  216.43 +    private final String hostName;
  216.44 +    
  216.45 +    /**
  216.46 +     * @param hostName the hostname returned by {@link HostInfo#getHostName()}
  216.47 +     */
  216.48 +    public SimpleHostInfo(String hostName) {
  216.49 +        this.hostName = hostName;
  216.50 +    }
  216.51 +    
  216.52 +    /**
  216.53 +     * {@inheritDoc}
  216.54 +     */
  216.55 +    public String getHostName() {
  216.56 +        return hostName;
  216.57 +    }
  216.58 +
  216.59 +}
   217.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   217.2 +++ b/src/net/fortuna/ical4j/util/Strings.java	Tue Feb 10 18:12:00 2015 +0100
   217.3 @@ -0,0 +1,238 @@
   217.4 +/**
   217.5 + * Copyright (c) 2012, Ben Fortuna
   217.6 + * All rights reserved.
   217.7 + *
   217.8 + * Redistribution and use in source and binary forms, with or without
   217.9 + * modification, are permitted provided that the following conditions
  217.10 + * are met:
  217.11 + *
  217.12 + *  o Redistributions of source code must retain the above copyright
  217.13 + * notice, this list of conditions and the following disclaimer.
  217.14 + *
  217.15 + *  o Redistributions in binary form must reproduce the above copyright
  217.16 + * notice, this list of conditions and the following disclaimer in the
  217.17 + * documentation and/or other materials provided with the distribution.
  217.18 + *
  217.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  217.20 + * may be used to endorse or promote products derived from this software
  217.21 + * without specific prior written permission.
  217.22 + *
  217.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  217.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  217.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  217.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  217.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  217.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  217.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  217.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  217.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  217.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  217.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  217.34 + */
  217.35 +package net.fortuna.ical4j.util;
  217.36 +
  217.37 +import java.util.regex.Pattern;
  217.38 +
  217.39 +/**
  217.40 + * $Id$ [23-Apr-2004]
  217.41 + *
  217.42 + * Utility methods for working with parameters.
  217.43 + * @author Ben Fortuna
  217.44 + * <pre>
  217.45 + * 4.3.11 Text
  217.46 + * 
  217.47 + *    Value Name: TEXT
  217.48 + * 
  217.49 + *    Purpose This value type is used to identify values that contain human
  217.50 + *    readable text.
  217.51 + * 
  217.52 + *    Formal Definition: The character sets supported by this revision of
  217.53 + *    iCalendar are UTF-8 and US ASCII thereof. The applicability to other
  217.54 + *    character sets is for future work. The value type is defined by the
  217.55 + *    following notation.
  217.56 + * 
  217.57 + *      text       = *(TSAFE-CHAR / ":" / DQUOTE / ESCAPED-CHAR)
  217.58 + *      ; Folded according to description above
  217.59 + * 
  217.60 + *      ESCAPED-CHAR = "\\" / "\;" / "\," / "\N" / "\n")
  217.61 + *         ; \\ encodes \, \N or \n encodes newline
  217.62 + *         ; \; encodes ;, \, encodes ,
  217.63 + * 
  217.64 + *      TSAFE-CHAR = %x20-21 / %x23-2B / %x2D-39 / %x3C-5B
  217.65 + *                   %x5D-7E / NON-US-ASCII
  217.66 + *         ; Any character except CTLs not needed by the current
  217.67 + *         ; character set, DQUOTE, ";", ":", "\", ","
  217.68 + * 
  217.69 + *      Note: Certain other character sets may require modification of the
  217.70 + *      above definitions, but this is beyond the scope of this document.
  217.71 + * 
  217.72 + *    Description: If the property permits, multiple "text" values are
  217.73 + *    specified by a COMMA character (US-ASCII decimal 44) separated list
  217.74 + *    of values.
  217.75 + * 
  217.76 + *    The language in which the text is represented can be controlled by
  217.77 + *    the "LANGUAGE" property parameter.
  217.78 + * 
  217.79 + *    An intentional formatted text line break MUST only be included in a
  217.80 + *    "TEXT" property value by representing the line break with the
  217.81 + *    character sequence of BACKSLASH (US-ASCII decimal 92), followed by a
  217.82 + *    LATIN SMALL LETTER N (US-ASCII decimal 110) or a LATIN CAPITAL LETTER
  217.83 + *    N (US-ASCII decimal 78), that is "\n" or "\N".
  217.84 + * 
  217.85 + *    The "TEXT" property values may also contain special characters that
  217.86 + *    are used to signify delimiters, such as a COMMA character for lists
  217.87 + *    of values or a SEMICOLON character for structured values. In order to
  217.88 + *    support the inclusion of these special characters in "TEXT" property
  217.89 + *    values, they MUST be escaped with a BACKSLASH character. A BACKSLASH
  217.90 + *    character (US-ASCII decimal 92) in a "TEXT" property value MUST be
  217.91 + *    escaped with another BACKSLASH character. A COMMA character in a
  217.92 + *    "TEXT" property value MUST be escaped with a BACKSLASH character
  217.93 + *    (US-ASCII decimal 92). A SEMICOLON character in a "TEXT" property
  217.94 + *    value MUST be escaped with a BACKSLASH character (US-ASCII decimal
  217.95 + *    92).  However, a COLON character in a "TEXT" property value SHALL NOT
  217.96 + *    be escaped with a BACKSLASH character.Example: A multiple line value
  217.97 + *    of:
  217.98 + * 
  217.99 + *      Project XYZ Final Review
 217.100 + *      Conference Room - 3B
 217.101 + *      Come Prepared.
 217.102 + * 
 217.103 + *    would be represented as:
 217.104 + * 
 217.105 + *      Project XYZ Final Review\nConference Room - 3B\nCome Prepared.
 217.106 + * </pre>
 217.107 + */
 217.108 +public final class Strings {
 217.109 +
 217.110 +    /**
 217.111 +     * Defines a regular expression representing all parameter strings that
 217.112 +     * should be quoted.
 217.113 +     */
 217.114 +    public static final Pattern PARAM_QUOTE_PATTERN = Pattern.compile("[:;,]|[^\\p{ASCII}]");
 217.115 +    
 217.116 +    private static final Pattern ESCAPE_PUNCTUATION_PATTERN = Pattern.compile("([,;])");
 217.117 +    private static final Pattern UNESCAPE_PUNCTUATION_PATTERN = Pattern.compile("\\\\([,;\"])");
 217.118 +    
 217.119 +    private static final Pattern ESCAPE_NEWLINE_PATTERN = Pattern.compile("\r?\n");
 217.120 +    private static final Pattern UNESCAPE_NEWLINE_PATTERN = Pattern.compile("(?<!\\\\)\\\\n");
 217.121 +    
 217.122 +    private static final Pattern ESCAPE_BACKSLASH_PATTERN = Pattern.compile("\\\\");
 217.123 +    private static final Pattern UNESCAPE_BACKSLASH_PATTERN = Pattern.compile("\\\\\\\\");
 217.124 +    
 217.125 +    
 217.126 +    
 217.127 +    /**
 217.128 +     * A string used to denote the start (and end) of iCalendar content lines.
 217.129 +     */
 217.130 +    public static final String LINE_SEPARATOR = "\r\n";
 217.131 +
 217.132 +    /**
 217.133 +     * Constructor made private to prevent instantiation.
 217.134 +     */
 217.135 +    private Strings() {
 217.136 +    }
 217.137 +
 217.138 +    /**
 217.139 +     * Convenience method for adding quotes. The specified
 217.140 +     * object is converted to a string representation by
 217.141 +     * calling its <code>toString()</code> method.
 217.142 +     * @param aValue an object to quote
 217.143 +     * @return a quoted string
 217.144 +     */
 217.145 +    public static String quote(final Object aValue) {
 217.146 +        if (aValue != null) {
 217.147 +            return "\"" + aValue + "\"";
 217.148 +        }
 217.149 +        return "\"\"";
 217.150 +    }
 217.151 +
 217.152 +    /**
 217.153 +     * Convenience method for removing surrounding quotes
 217.154 +     * from a string value.
 217.155 +     * @param aValue a string to remove quotes from
 217.156 +     * @return an un-quoted string
 217.157 +     */
 217.158 +    public static String unquote(final String aValue) {
 217.159 +        if (aValue != null && aValue.startsWith("\"") && aValue.endsWith("\"")) {
 217.160 +            return aValue.substring(0, aValue.length() - 1).substring(1);
 217.161 +        }
 217.162 +        return aValue;
 217.163 +    }
 217.164 +
 217.165 +    /**
 217.166 +     * Convenience method for escaping special characters.
 217.167 +     * @param aValue a string value to escape
 217.168 +     * @return an escaped representation of the specified
 217.169 +     * string
 217.170 +     */
 217.171 +    public static String escape(final String aValue) {
 217.172 +        return escapePunctuation(escapeNewline(escapeBackslash(aValue)));
 217.173 +    }
 217.174 +    
 217.175 +    /**
 217.176 +     * Convenience method for replacing escaped special characters
 217.177 +     * with their original form.
 217.178 +     * @param aValue a string value to unescape
 217.179 +     * @return a string representation of the specified
 217.180 +     * string with escaped characters replaced with their
 217.181 +     * original form
 217.182 +     */
 217.183 +    public static String unescape(final String aValue) {
 217.184 +        return unescapeBackslash(unescapeNewline(unescapePunctuation(aValue)));
 217.185 +    }
 217.186 +
 217.187 +    private static String escapePunctuation(String value) {
 217.188 +        if (value != null) {
 217.189 +            return ESCAPE_PUNCTUATION_PATTERN.matcher(value).replaceAll("\\\\$1");
 217.190 +        }
 217.191 +        return value;
 217.192 +    }
 217.193 +
 217.194 +    private static String unescapePunctuation(String value) {
 217.195 +        if (value != null) {
 217.196 +            return UNESCAPE_PUNCTUATION_PATTERN.matcher(value).replaceAll("$1");
 217.197 +        }
 217.198 +        return value;
 217.199 +    }
 217.200 +
 217.201 +    public static String escapeNewline(String value) {
 217.202 +        if (value != null) {
 217.203 +            return ESCAPE_NEWLINE_PATTERN.matcher(value).replaceAll("\\\\n");
 217.204 +        }
 217.205 +        return value;
 217.206 +    }
 217.207 +
 217.208 +    private static String unescapeNewline(String value) {
 217.209 +        if (value != null) {
 217.210 +            return UNESCAPE_NEWLINE_PATTERN.matcher(value).replaceAll("\n");
 217.211 +        }
 217.212 +        return value;
 217.213 +    }
 217.214 +
 217.215 +    private static String escapeBackslash(String value) {
 217.216 +        if (value != null) {
 217.217 +            return ESCAPE_BACKSLASH_PATTERN.matcher(value).replaceAll("\\\\\\\\");
 217.218 +        }
 217.219 +        return value;
 217.220 +    }
 217.221 +
 217.222 +    private static String unescapeBackslash(String value) {
 217.223 +        if (value != null) {
 217.224 +            return UNESCAPE_BACKSLASH_PATTERN.matcher(value).replaceAll("\\\\");
 217.225 +        }
 217.226 +        return value;
 217.227 +    }
 217.228 +    
 217.229 +    /**
 217.230 +     * Wraps <code>java.lang.String.valueOf()</code> to return an empty string
 217.231 +     * where the specified object is null.
 217.232 +     * @param object an object instance
 217.233 +     * @return a string representation of the object
 217.234 +     */
 217.235 +    public static String valueOf(final Object object) {
 217.236 +        if (object == null) {
 217.237 +            return "";
 217.238 +        }
 217.239 +        return object.toString();
 217.240 +    }
 217.241 +}
   218.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   218.2 +++ b/src/net/fortuna/ical4j/util/TimeZones.java	Tue Feb 10 18:12:00 2015 +0100
   218.3 @@ -0,0 +1,109 @@
   218.4 +/**
   218.5 + * Copyright (c) 2012, Ben Fortuna
   218.6 + * All rights reserved.
   218.7 + *
   218.8 + * Redistribution and use in source and binary forms, with or without
   218.9 + * modification, are permitted provided that the following conditions
  218.10 + * are met:
  218.11 + *
  218.12 + *  o Redistributions of source code must retain the above copyright
  218.13 + * notice, this list of conditions and the following disclaimer.
  218.14 + *
  218.15 + *  o Redistributions in binary form must reproduce the above copyright
  218.16 + * notice, this list of conditions and the following disclaimer in the
  218.17 + * documentation and/or other materials provided with the distribution.
  218.18 + *
  218.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  218.20 + * may be used to endorse or promote products derived from this software
  218.21 + * without specific prior written permission.
  218.22 + *
  218.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  218.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  218.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  218.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  218.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  218.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  218.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  218.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  218.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  218.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  218.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  218.34 + */
  218.35 +package net.fortuna.ical4j.util;
  218.36 +
  218.37 +import java.util.TimeZone;
  218.38 +
  218.39 +/**
  218.40 + * $Id$ [5/07/2004]
  218.41 + *
  218.42 + * Utility methods relevant to Java timezones.
  218.43 + *
  218.44 + * @author Ben Fortuna
  218.45 + */
  218.46 +public final class TimeZones {
  218.47 +    
  218.48 +    /**
  218.49 +     * The timezone identifier for UTC time.
  218.50 +     */
  218.51 +    public static final String UTC_ID = "Etc/UTC";
  218.52 +    
  218.53 +    /**
  218.54 +     * The timezone identifier for UTC time in the IBM JVM.
  218.55 +     */
  218.56 +    public static final String IBM_UTC_ID = "GMT";
  218.57 +    
  218.58 +    /**
  218.59 +     * The timezone identifier for GMT time.
  218.60 +     */
  218.61 +    public static final String GMT_ID = "Etc/GMT";
  218.62 +
  218.63 +    private static final TimeZone UTC_TIMEZONE;
  218.64 +    static {
  218.65 +        UTC_TIMEZONE = TimeZone.getTimeZone(UTC_ID);
  218.66 +    }
  218.67 +
  218.68 +    /**
  218.69 +     * Constructor made private to enforce static nature.
  218.70 +     */
  218.71 +    private TimeZones() {
  218.72 +    }
  218.73 +    
  218.74 +    /**
  218.75 +     * Indicates whether the specified timezone is equivalent to
  218.76 +     * UTC time.
  218.77 +     * @param timezone a timezone instance
  218.78 +     * @return true if the timezone is UTC time, otherwise false
  218.79 +     */
  218.80 +    public static boolean isUtc(final TimeZone timezone) {
  218.81 +//        return timezone.hasSameRules(TimeZone.getTimeZone(UTC_ID));
  218.82 +//        return timezone.getRawOffset() == 0;
  218.83 +        return UTC_ID.equals(timezone.getID())
  218.84 +            || IBM_UTC_ID.equals(timezone.getID());
  218.85 +    }
  218.86 +    
  218.87 +    /**
  218.88 +     * Although timezones are not really applicable to DATE instances in iCalendar, the implementation
  218.89 +     * in iCal4j requires the use of a timezone. Dates in iCal4j may be either "floating", in that they
  218.90 +     * use the default Java timezone, or alternatively will use UTC (this is the default).
  218.91 +     * 
  218.92 +     * The use of floating dates may be configured by specifying the following as a system property or in
  218.93 +     * a file called "ical4j.properties" in the classpath:
  218.94 +     * 
  218.95 +     * <pre>net.fortuna.ical4j.timezone.date.floating=true</pre>
  218.96 +     * 
  218.97 +     * @return the timezone used for date instances
  218.98 +     */
  218.99 +    public static TimeZone getDateTimeZone() {
 218.100 +    	if ("true".equals(Configurator.getProperty("net.fortuna.ical4j.timezone.date.floating"))) {
 218.101 +    		return TimeZone.getDefault();
 218.102 +    	}
 218.103 +    	return getUtcTimeZone();
 218.104 +    }
 218.105 +
 218.106 +    /**
 218.107 +     * Get the UTC Timezone.
 218.108 +     */
 218.109 +    public static TimeZone getUtcTimeZone() {
 218.110 +        return UTC_TIMEZONE;
 218.111 +    }
 218.112 +}
   219.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   219.2 +++ b/src/net/fortuna/ical4j/util/UidGenerator.java	Tue Feb 10 18:12:00 2015 +0100
   219.3 @@ -0,0 +1,109 @@
   219.4 +/**
   219.5 + * Copyright (c) 2012, Ben Fortuna
   219.6 + * All rights reserved.
   219.7 + *
   219.8 + * Redistribution and use in source and binary forms, with or without
   219.9 + * modification, are permitted provided that the following conditions
  219.10 + * are met:
  219.11 + *
  219.12 + *  o Redistributions of source code must retain the above copyright
  219.13 + * notice, this list of conditions and the following disclaimer.
  219.14 + *
  219.15 + *  o Redistributions in binary form must reproduce the above copyright
  219.16 + * notice, this list of conditions and the following disclaimer in the
  219.17 + * documentation and/or other materials provided with the distribution.
  219.18 + *
  219.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  219.20 + * may be used to endorse or promote products derived from this software
  219.21 + * without specific prior written permission.
  219.22 + *
  219.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  219.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  219.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  219.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  219.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  219.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  219.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  219.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  219.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  219.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  219.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  219.34 + */
  219.35 +package net.fortuna.ical4j.util;
  219.36 +
  219.37 +import java.net.SocketException;
  219.38 +
  219.39 +import net.fortuna.ical4j.model.DateTime;
  219.40 +import net.fortuna.ical4j.model.property.Uid;
  219.41 +
  219.42 +/**
  219.43 + * $Id$
  219.44 + *
  219.45 + * Created on 11/03/2007
  219.46 + *
  219.47 + * Generates {@link Uid} properties in a similar fashion to that recommended in section 4.8.4.7 of the specification.
  219.48 + * @author Ben Fortuna
  219.49 + */
  219.50 +public class UidGenerator {
  219.51 +
  219.52 +    private final String pid;
  219.53 +
  219.54 +    private final HostInfo hostInfo;
  219.55 +
  219.56 +    private static long lastMillis;
  219.57 +
  219.58 +    /**
  219.59 +     * @param pid a unique process identifier for the host machine
  219.60 +     * @throws SocketException where host information cannot be retrieved
  219.61 +     */
  219.62 +    public UidGenerator(String pid) throws SocketException {
  219.63 +        this(new InetAddressHostInfo(), pid);
  219.64 +    }
  219.65 +
  219.66 +    /**
  219.67 +     * @param hostInfo custom host information
  219.68 +     * @param pid a unique process identifier for the host machine
  219.69 +     */
  219.70 +    public UidGenerator(HostInfo hostInfo, String pid) {
  219.71 +        this.hostInfo = hostInfo;
  219.72 +        this.pid = pid;
  219.73 +    }
  219.74 +
  219.75 +    /**
  219.76 +     * @return a unique component identifier
  219.77 +     */
  219.78 +    public Uid generateUid() {
  219.79 +        final StringBuffer b = new StringBuffer();
  219.80 +        b.append(uniqueTimestamp());
  219.81 +        b.append('-');
  219.82 +        b.append(pid);
  219.83 +        if (hostInfo != null) {
  219.84 +            b.append('@');
  219.85 +            b.append(hostInfo.getHostName());
  219.86 +        }
  219.87 +        return new Uid(b.toString());
  219.88 +    }
  219.89 +
  219.90 +    /**
  219.91 +     * Generates a timestamp guaranteed to be unique for the current JVM instance.
  219.92 +     * @return a {@link DateTime} instance representing a unique timestamp
  219.93 +     */
  219.94 +    private static DateTime uniqueTimestamp() {
  219.95 +        long currentMillis;
  219.96 +        synchronized (UidGenerator.class) {
  219.97 +            currentMillis = System.currentTimeMillis();
  219.98 +            // guarantee uniqueness by ensuring timestamp is always greater
  219.99 +            // than the previous..
 219.100 +            if (currentMillis < lastMillis) {
 219.101 +                currentMillis = lastMillis;
 219.102 +            }
 219.103 +            if (currentMillis - lastMillis < Dates.MILLIS_PER_SECOND) {
 219.104 +                currentMillis += Dates.MILLIS_PER_SECOND;
 219.105 +            }
 219.106 +            lastMillis = currentMillis;
 219.107 +        }
 219.108 +        final DateTime timestamp = new DateTime(currentMillis);
 219.109 +        timestamp.setUtc(true);
 219.110 +        return timestamp;
 219.111 +    }
 219.112 +}
   220.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   220.2 +++ b/src/net/fortuna/ical4j/util/Uris.java	Tue Feb 10 18:12:00 2015 +0100
   220.3 @@ -0,0 +1,144 @@
   220.4 +/**
   220.5 + * Copyright (c) 2012, Ben Fortuna
   220.6 + * All rights reserved.
   220.7 + *
   220.8 + * Redistribution and use in source and binary forms, with or without
   220.9 + * modification, are permitted provided that the following conditions
  220.10 + * are met:
  220.11 + *
  220.12 + *  o Redistributions of source code must retain the above copyright
  220.13 + * notice, this list of conditions and the following disclaimer.
  220.14 + *
  220.15 + *  o Redistributions in binary form must reproduce the above copyright
  220.16 + * notice, this list of conditions and the following disclaimer in the
  220.17 + * documentation and/or other materials provided with the distribution.
  220.18 + *
  220.19 + *  o Neither the name of Ben Fortuna nor the names of any other contributors
  220.20 + * may be used to endorse or promote products derived from this software
  220.21 + * without specific prior written permission.
  220.22 + *
  220.23 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  220.24 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  220.25 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  220.26 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  220.27 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  220.28 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  220.29 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  220.30 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  220.31 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  220.32 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  220.33 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  220.34 + */
  220.35 +package net.fortuna.ical4j.util;
  220.36 +
  220.37 +import java.net.URI;
  220.38 +import java.net.URISyntaxException;
  220.39 +import java.util.regex.Pattern;
  220.40 +
  220.41 +/**
  220.42 + * $Id$
  220.43 + *
  220.44 + * Created on 11/09/2005
  220.45 + *
  220.46 + * Utility methods for working with URIs.
  220.47 + * @author Ben Fortuna
  220.48 + */
  220.49 +public final class Uris {
  220.50 +
  220.51 +    /**
  220.52 +     * URI Scheme used when relaxed parsing is enabled and the given input stream lead to an invalid URI.
  220.53 +     */
  220.54 +    public static final String INVALID_SCHEME = "net.fortunal.ical4j.invalid";
  220.55 +    
  220.56 +    private static final Pattern CID_PATTERN = Pattern.compile("(?i)^cid:.*");
  220.57 +    private static final Pattern NOTES_CID_REPLACEMENT_PATTERN = Pattern.compile("[<>]");
  220.58 +
  220.59 +    /**
  220.60 +     * Constructor made private to enforce static nature.
  220.61 +     */
  220.62 +    private Uris() {
  220.63 +    }
  220.64 +
  220.65 +    /**
  220.66 +     * Encodes the specified URI string using the UTF-8 charset. In the event that an exception is thrown, the specifed
  220.67 +     * URI string is returned unmodified.
  220.68 +     * @param s a URI string
  220.69 +     * @return an encoded URI string
  220.70 +     */
  220.71 +    public static String encode(final String s) {
  220.72 +        /*
  220.73 +         * try { return URLEncoder.encode(s, ENCODING_CHARSET); } catch (UnsupportedEncodingException use) {
  220.74 +         * log.error("Error ocurred encoding URI [" + s + "]", use); }
  220.75 +         */
  220.76 +
  220.77 +        /*
  220.78 +         * Lotus Notes does not correctly strip angle brackets from cid uris. From RFC2392: A "cid" URL is converted to
  220.79 +         * the corresponding Content-ID message header [MIME] by removing the "cid:" prefix, converting the % encoded
  220.80 +         * character to their equivalent US-ASCII characters, and enclosing the remaining parts with an angle bracket
  220.81 +         * pair, "<" and ">". For example, "cid:foo4%25foo1@bar.net" corresponds to Content-ID: <foo4%25foo1@bar.net>
  220.82 +         * Reversing the process and converting URL special characters to their % encodings produces the original cid. A
  220.83 +         * "mid" URL is converted to a Message-ID or Message-ID/Content-ID pair in a similar fashion.
  220.84 +         */
  220.85 +        if (CompatibilityHints.isHintEnabled(CompatibilityHints.KEY_NOTES_COMPATIBILITY)
  220.86 +        		&& CID_PATTERN.matcher(s).matches()) {
  220.87 +        	
  220.88 +            return NOTES_CID_REPLACEMENT_PATTERN.matcher(s).replaceAll("");
  220.89 +        }
  220.90 +        return s;
  220.91 +    }
  220.92 +
  220.93 +    /**
  220.94 +     * Decodes the specified URI string using the UTF-8 charset. In the event that an exception is thrown, the specifed
  220.95 +     * URI string is returned unmodified.
  220.96 +     * @param s a URI string
  220.97 +     * @return an encoded URI string
  220.98 +     */
  220.99 +    public static String decode(final String s) {
 220.100 +        /*
 220.101 +         * try { return URLDecoder.decode(s, ENCODING_CHARSET); } catch (UnsupportedEncodingException use) {
 220.102 +         * log.error("Error ocurred decoding URI [" + s + "]", use); }
 220.103 +         */
 220.104 +        return s;
 220.105 +    }
 220.106 +
 220.107 +    /**
 220.108 +     * Attempts to create a URI instance and will optionally swallow any resulting URISyntaxException depending on
 220.109 +     * configured {@link CompatibilityHints}. Will also automatically attempt encoding of the string representation for
 220.110 +     * greater compatibility.
 220.111 +     * <p>When relaxed parsing is enabled and if the string representation is not valid, a second URI creation attempt is made
 220.112 +     *  by extracting the scheme from the scheme specific part and URI encoding that later part. For example,
 220.113 +     *  "mailto: joe smith@example.com" becomes "mailto:joe%20smith@example.com".<p>
 220.114 +     * <p>If the second attempts also leads to a {@code URISyntaxException}, an opaque URI is constructed with a scheme
 220.115 +     *  of {@code Uris.INVALID_SCHEME} and a value corresponding to the initial representation.</p>
 220.116 +     * 
 220.117 +     * @param s a string representation of a URI.
 220.118 +     * @return a URI instance, which may not correspond to the URI string if a valid
 220.119 +     *  URI string is not specified and relaxed parsing is enabled.
 220.120 +     * @throws URISyntaxException if a valid URI string is not specified and relaxed parsing is disabled
 220.121 +     */
 220.122 +    public static URI create(final String s) throws URISyntaxException {
 220.123 +        try {
 220.124 +            return new URI(encode(s));
 220.125 +        }
 220.126 +        catch (URISyntaxException use) {
 220.127 +            if (CompatibilityHints
 220.128 +                    .isHintEnabled(CompatibilityHints.KEY_RELAXED_PARSING)) {
 220.129 +                String encoded = encode(s);
 220.130 +                int index = encoded.indexOf(':');
 220.131 +                if (index != -1 && index < encoded.length() -1) {
 220.132 +                    try {
 220.133 +                        return new URI(encoded.substring(0, index), encoded.substring(index + 1), null);
 220.134 +                    } catch (URISyntaxException use2) {
 220.135 +                    }
 220.136 +                }
 220.137 +                try {
 220.138 +                    return new URI(INVALID_SCHEME, s, null);
 220.139 +                } catch (URISyntaxException use2) {
 220.140 +                    // should not happen as we are building an opaque URI
 220.141 +                    throw new IllegalArgumentException("Could not build URI from " + s);
 220.142 +                }
 220.143 +            }
 220.144 +            throw use;
 220.145 +        }
 220.146 +    }
 220.147 +}
   221.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   221.2 +++ b/src/org/gege/caldavsyncadapter/CalendarColors.java	Tue Feb 10 18:12:00 2015 +0100
   221.3 @@ -0,0 +1,39 @@
   221.4 +package org.gege.caldavsyncadapter;
   221.5 +
   221.6 +public class CalendarColors {
   221.7 +
   221.8 +	
   221.9 +// Colors come from Solarized, (c) ETHAN SCHOONOVER
  221.10 +// http://ethanschoonover.com/solarized	
  221.11 +	
  221.12 +//	SOLARIZED HEX     16/8 TERMCOL  XTERM/HEX   L*A*B      RGB         HSB
  221.13 +//	--------- ------- ---- -------  ----------- ---------- ----------- -----------
  221.14 +//	base03    #002b36  8/4 brblack  234 #1c1c1c 15 -12 -12   0  43  54 193 100  21
  221.15 +//	base02    #073642  0/4 black    235 #262626 20 -12 -12   7  54  66 192  90  26
  221.16 +//	base01    #586e75 10/7 brgreen  240 #585858 45 -07 -07  88 110 117 194  25  46
  221.17 +//	base00    #657b83 11/7 bryellow 241 #626262 50 -07 -07 101 123 131 195  23  51
  221.18 +//	base0     #839496 12/6 brblue   244 #808080 60 -06 -03 131 148 150 186  13  59
  221.19 +//	base1     #93a1a1 14/4 brcyan   245 #8a8a8a 65 -05 -02 147 161 161 180   9  63
  221.20 +//	base2     #eee8d5  7/7 white    254 #e4e4e4 92 -00  10 238 232 213  44  11  93
  221.21 +//	base3     #fdf6e3 15/7 brwhite  230 #ffffd7 97  00  10 253 246 227  44  10  99
  221.22 +//	yellow    #b58900  3/3 yellow   136 #af8700 60  10  65 181 137   0  45 100  71
  221.23 +//	orange    #cb4b16  9/3 brred    166 #d75f00 50  50  55 203  75  22  18  89  80
  221.24 +//	red       #dc322f  1/1 red      160 #d70000 50  65  45 220  50  47   1  79  86
  221.25 +//	magenta   #d33682  5/5 magenta  125 #af005f 50  65 -05 211  54 130 331  74  83
  221.26 +//	violet    #6c71c4 13/5 brmagenta 61 #5f5faf 50  15 -45 108 113 196 237  45  77
  221.27 +//	blue      #268bd2  4/4 blue      33 #0087ff 55 -10 -45  38 139 210 205  82  82
  221.28 +//	cyan      #2aa198  6/6 cyan      37 #00afaf 60 -35 -05  42 161 152 175  74  63
  221.29 +//	green     #859900  2/2 green     64 #5f8700 60 -20  65 133 153   0  68 100  60
  221.30 +	
  221.31 +	public static long colors[] = {
  221.32 +		0xffb58900, // yellow
  221.33 +		0xffcb4b16, // orange
  221.34 +		0xffdc322f, // red
  221.35 +		0xffd33682, // magenta
  221.36 +		0xff6c71c4, // violet
  221.37 +		0xff268bd2, // blue
  221.38 +		0xff2aa198, // cyan
  221.39 +		0xff859900 // green
  221.40 +	};
  221.41 +	
  221.42 +}
   222.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   222.2 +++ b/src/org/gege/caldavsyncadapter/Event.java	Tue Feb 10 18:12:00 2015 +0100
   222.3 @@ -0,0 +1,184 @@
   222.4 +/**
   222.5 + * Copyright (c) 2012-2013, Gerald Garcia, Timo Berger
   222.6 + * 
   222.7 + * This file is part of Andoid Caldav Sync Adapter Free.
   222.8 + *
   222.9 + * Andoid Caldav Sync Adapter Free is free software: you can redistribute 
  222.10 + * it and/or modify it under the terms of the GNU General Public License 
  222.11 + * as published by the Free Software Foundation, either version 3 of the 
  222.12 + * License, or at your option any later version.
  222.13 + *
  222.14 + * Andoid Caldav Sync Adapter Free is distributed in the hope that 
  222.15 + * it will be useful, but WITHOUT ANY WARRANTY; without even the implied 
  222.16 + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  222.17 + * GNU General Public License for more details.
  222.18 + *
  222.19 + * You should have received a copy of the GNU General Public License
  222.20 + * along with Andoid Caldav Sync Adapter Free.  
  222.21 + * If not, see <http://www.gnu.org/licenses/>.
  222.22 + * 
  222.23 + */
  222.24 +package org.gege.caldavsyncadapter;
  222.25 +
  222.26 +import android.content.ContentValues;
  222.27 +import android.provider.CalendarContract.Events;
  222.28 +import android.util.Log;
  222.29 +
  222.30 +/**
  222.31 + * abstract class for Calendar and Android events 
  222.32 + */
  222.33 +abstract public class Event {
  222.34 +	private static final String TAG = "Event";
  222.35 +	
  222.36 +	/**
  222.37 +	 * stores the ETAG of an event
  222.38 +	 */
  222.39 +	public static String ETAG = Events.SYNC_DATA1;
  222.40 +
  222.41 +	/**
  222.42 +	 * internal Tag used to identify deleted events 
  222.43 +	 */
  222.44 +	public static String INTERNALTAG = Events.SYNC_DATA2;
  222.45 +
  222.46 +	/**
  222.47 +	 * store the whole VEVENT in here
  222.48 +	 * missing TAGs they might be missing for google update
  222.49 +	 * 
  222.50 +	 * CREATED:20130906T102857Z
  222.51 +	 * DTSTAMP:20130906T102857Z
  222.52 +	 * LAST-MODIFIED:20130906T102857Z
  222.53 +	 * SEQUENCE:0
  222.54 +	 */
  222.55 +	public static String RAWDATA = Events.SYNC_DATA3;
  222.56 +
  222.57 +	/**
  222.58 +	 * stores the UID of an Event
  222.59 +	 * example: UID:e6be67c6-eff0-44f8-a1a0-6c2cb1029944-caldavsyncadapter
  222.60 +	 */
  222.61 +	public static String UID = Events.SYNC_DATA4;
  222.62 +	
  222.63 +	/**
  222.64 +	 * the event transformed into ContentValues
  222.65 +	 */
  222.66 +	public ContentValues ContentValues = new ContentValues();
  222.67 +	
  222.68 +	abstract public String getETag();
  222.69 +	abstract public void setETag(String ETag);
  222.70 +
  222.71 +	/**
  222.72 +	 * returns a list of all items that are comparable with this sync adapter
  222.73 +	 * @return a list of all items that are comparable with this sync adapter
  222.74 +	 */
  222.75 +	public static java.util.ArrayList<String> getComparableItems() {
  222.76 +		java.util.ArrayList<String> Result = new java.util.ArrayList<String>();
  222.77 +		Result.add(Events.DTSTART);
  222.78 +		Result.add(Events.DTEND);
  222.79 +		Result.add(Events.EVENT_TIMEZONE);
  222.80 +		Result.add(Events.EVENT_END_TIMEZONE);
  222.81 +		Result.add(Events.ALL_DAY);
  222.82 +		Result.add(Events.DURATION);
  222.83 +		Result.add(Events.TITLE);
  222.84 +		Result.add(Events.CALENDAR_ID);
  222.85 +		Result.add(Events._SYNC_ID);
  222.86 +		//Result.add(Events.SYNC_DATA1);
  222.87 +		Result.add(ETAG);
  222.88 +		Result.add(Events.DESCRIPTION);
  222.89 +		Result.add(Events.EVENT_LOCATION);
  222.90 +		Result.add(Events.ACCESS_LEVEL);
  222.91 +		Result.add(Events.STATUS);
  222.92 +		Result.add(Events.RDATE);
  222.93 +		Result.add(Events.RRULE);
  222.94 +		Result.add(Events.EXRULE);
  222.95 +		Result.add(Events.EXDATE);
  222.96 +		Result.add(UID);
  222.97 +		
  222.98 +		return Result;
  222.99 +	}
 222.100 +	
 222.101 +	/**
 222.102 +	 * sets the AndroidCalendarId for this event
 222.103 +	 * @param ID the AndroidCalendarId for this event
 222.104 +	 */
 222.105 +	public void setAndroidCalendarId(long ID) {
 222.106 +		if (this.ContentValues.containsKey(Events.CALENDAR_ID))
 222.107 +			this.ContentValues.remove(Events.CALENDAR_ID);
 222.108 +		
 222.109 +		this.ContentValues.put(Events.CALENDAR_ID, ID);
 222.110 +	}
 222.111 +
 222.112 +	/**
 222.113 +	 * returns the AndroidCalendarId for this event.
 222.114 +	 * @return the AndroidCalendarId for this event
 222.115 +	 */
 222.116 +	public long getAndroidCalendarId() {
 222.117 +		long Result = -1;
 222.118 +		if (this.ContentValues.containsKey(Events.CALENDAR_ID))
 222.119 +			Result = this.ContentValues.getAsLong(Events.CALENDAR_ID);
 222.120 +		return Result;
 222.121 +	}
 222.122 +
 222.123 +	/**
 222.124 +	 * returns the UID for this event. you can also check, whether the UID was stored from server. the V1.7 release and before didn't save them.
 222.125 +	 * example: UID:e6be67c6-eff0-44f8-a1a0-6c2cb1029944-caldavsyncadapter
 222.126 +	 * @return the UID for this event
 222.127 +	 */
 222.128 +	public String getUID() {
 222.129 +		String Result = "";
 222.130 +		if (this.ContentValues.containsKey(UID))
 222.131 +			Result = this.ContentValues.getAsString(UID);
 222.132 +		
 222.133 +		return Result;
 222.134 +	}
 222.135 +	
 222.136 +	/**
 222.137 +	 * compares the given ContentValues with the current ones for differences
 222.138 +	 * @param calendarEventValues the contentValues of the calendar event
 222.139 +	 * @return if the events are different
 222.140 +	 */
 222.141 +	public boolean checkEventValuesChanged(ContentValues calendarEventValues) {
 222.142 +		boolean Result = false;
 222.143 +		Object ValueAndroid = null;
 222.144 +		Object ValueCalendar = null;
 222.145 +		java.util.ArrayList<String> CompareItems = Event.getComparableItems();
 222.146 +		
 222.147 +		for (String Key: CompareItems) {
 222.148 +
 222.149 +			if (this.ContentValues.containsKey(Key)) 
 222.150 +				ValueAndroid = this.ContentValues.get(Key);
 222.151 +			else
 222.152 +				ValueAndroid = null;
 222.153 +
 222.154 +			if (calendarEventValues.containsKey(Key))
 222.155 +				ValueCalendar = calendarEventValues.get(Key);
 222.156 +			else
 222.157 +				ValueCalendar = null;
 222.158 +
 222.159 +			/*
 222.160 +			 * TODO: Sync is designed to "Server always wins", should be a general option for this adapter
 222.161 +			 */
 222.162 +			if (ValueAndroid != null) {
 222.163 +				if (ValueCalendar != null) {
 222.164 +					if (!ValueAndroid.toString().equals(ValueCalendar.toString())) {
 222.165 +						Log.d(TAG, "difference in " + Key.toString() + ":" + ValueAndroid.toString() + " <> " + ValueCalendar.toString());
 222.166 +						this.ContentValues.put(Key,ValueCalendar.toString());
 222.167 +						Result = true;
 222.168 +					}
 222.169 +				} else {
 222.170 +					Log.d(TAG, "difference in " + Key.toString() + ":" + ValueAndroid.toString() + " <> null");
 222.171 +					this.ContentValues.putNull(Key);
 222.172 +					Result = true;
 222.173 +				}
 222.174 +			} else {
 222.175 +				if (ValueCalendar != null) {
 222.176 +					Log.d(TAG, "difference in " + Key.toString() + ":null <> " + ValueCalendar.toString());
 222.177 +					this.ContentValues.put(Key, ValueCalendar.toString());
 222.178 +					Result = true;
 222.179 +				} else {
 222.180 +					// both null -> this is ok
 222.181 +				}
 222.182 +			}
 222.183 +		}
 222.184 +		
 222.185 +		return Result;
 222.186 +	}
 222.187 +}
   223.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   223.2 +++ b/src/org/gege/caldavsyncadapter/android/entities/AndroidEvent.java	Tue Feb 10 18:12:00 2015 +0100
   223.3 @@ -0,0 +1,582 @@
   223.4 +/**
   223.5 + * Copyright (c) 2012-2013, Gerald Garcia, Timo Berger
   223.6 + * 
   223.7 + * This file is part of Andoid Caldav Sync Adapter Free.
   223.8 + *
   223.9 + * Andoid Caldav Sync Adapter Free is free software: you can redistribute 
  223.10 + * it and/or modify it under the terms of the GNU General Public License 
  223.11 + * as published by the Free Software Foundation, either version 3 of the 
  223.12 + * License, or at your option any later version.
  223.13 + *
  223.14 + * Andoid Caldav Sync Adapter Free is distributed in the hope that 
  223.15 + * it will be useful, but WITHOUT ANY WARRANTY; without even the implied 
  223.16 + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  223.17 + * GNU General Public License for more details.
  223.18 + *
  223.19 + * You should have received a copy of the GNU General Public License
  223.20 + * along with Andoid Caldav Sync Adapter Free.  
  223.21 + * If not, see <http://www.gnu.org/licenses/>.
  223.22 + * 
  223.23 + */
  223.24 +
  223.25 +package org.gege.caldavsyncadapter.android.entities;
  223.26 +
  223.27 +import java.net.URISyntaxException;
  223.28 +import java.text.ParseException;
  223.29 +import net.fortuna.ical4j.model.Calendar;
  223.30 +import net.fortuna.ical4j.model.Component;
  223.31 +import net.fortuna.ical4j.model.ComponentList;
  223.32 +import net.fortuna.ical4j.model.Date;
  223.33 +import net.fortuna.ical4j.model.DateTime;
  223.34 +import net.fortuna.ical4j.model.Dur;
  223.35 +import net.fortuna.ical4j.model.ParameterList;
  223.36 +import net.fortuna.ical4j.model.Property;
  223.37 +import net.fortuna.ical4j.model.PropertyList;
  223.38 +import net.fortuna.ical4j.model.TimeZone;
  223.39 +import net.fortuna.ical4j.model.TimeZoneRegistry;
  223.40 +import net.fortuna.ical4j.model.TimeZoneRegistryFactory;
  223.41 +import net.fortuna.ical4j.model.component.VAlarm;
  223.42 +import net.fortuna.ical4j.model.component.VEvent;
  223.43 +import net.fortuna.ical4j.model.parameter.Cn;
  223.44 +import net.fortuna.ical4j.model.parameter.PartStat;
  223.45 +import net.fortuna.ical4j.model.parameter.Role;
  223.46 +import net.fortuna.ical4j.model.parameter.Rsvp;
  223.47 +import net.fortuna.ical4j.model.parameter.Value;
  223.48 +import net.fortuna.ical4j.model.property.Action;
  223.49 +import net.fortuna.ical4j.model.property.Attendee;
  223.50 +import net.fortuna.ical4j.model.property.CalScale;
  223.51 +import net.fortuna.ical4j.model.property.Clazz;
  223.52 +import net.fortuna.ical4j.model.property.Description;
  223.53 +import net.fortuna.ical4j.model.property.DtEnd;
  223.54 +import net.fortuna.ical4j.model.property.DtStart;
  223.55 +import net.fortuna.ical4j.model.property.Duration;
  223.56 +import net.fortuna.ical4j.model.property.ExDate;
  223.57 +import net.fortuna.ical4j.model.property.ExRule;
  223.58 +import net.fortuna.ical4j.model.property.Location;
  223.59 +import net.fortuna.ical4j.model.property.Organizer;
  223.60 +import net.fortuna.ical4j.model.property.ProdId;
  223.61 +import net.fortuna.ical4j.model.property.RDate;
  223.62 +import net.fortuna.ical4j.model.property.RRule;
  223.63 +import net.fortuna.ical4j.model.property.Status;
  223.64 +import net.fortuna.ical4j.model.property.Summary;
  223.65 +import net.fortuna.ical4j.model.property.Trigger;
  223.66 +import net.fortuna.ical4j.model.property.Uid;
  223.67 +import net.fortuna.ical4j.model.property.Version;
  223.68 +//import android.accounts.Account;
  223.69 +//import android.content.ContentProviderClient;
  223.70 +//import android.content.ContentValues;
  223.71 +//import android.content.SyncStats;
  223.72 +import android.database.Cursor;
  223.73 +import android.net.Uri;
  223.74 +//import android.os.RemoteException;
  223.75 +import android.provider.CalendarContract.Attendees;
  223.76 +//import android.provider.CalendarContract.Calendars;
  223.77 +import android.provider.CalendarContract.Events;
  223.78 +import android.provider.CalendarContract.Reminders;
  223.79 +
  223.80 +//import org.gege.caldavsyncadapter.Event;
  223.81 +//import org.gege.caldavsyncadapter.caldav.CaldavFacade;
  223.82 +import org.gege.caldavsyncadapter.caldav.entities.CalendarEvent;
  223.83 +//import org.gege.caldavsyncadapter.caldav.entities.DavCalendar;
  223.84 +//import org.gege.caldavsyncadapter.syncadapter.SyncAdapter;
  223.85 +
  223.86 +public class AndroidEvent extends org.gege.caldavsyncadapter.Event {
  223.87 +
  223.88 +	private Uri muri;
  223.89 +	
  223.90 +	private Uri mAndroidCalendarUri;
  223.91 +	
  223.92 +	/**
  223.93 +	 * the list of attendees
  223.94 +	 */
  223.95 +	private PropertyList mAttendees = new PropertyList();
  223.96 +	
  223.97 +	/**
  223.98 +	 * the list of reminders 
  223.99 +	 */
 223.100 +	private ComponentList mReminders = new ComponentList();
 223.101 +
 223.102 +	private Calendar mCalendar = null;
 223.103 +
 223.104 +/*	private Account mAccount = null;
 223.105 +	private ContentProviderClient mProvider = null;*/
 223.106 +	
 223.107 +	//public AndroidEvent(Account account, ContentProviderClient provider, Uri uri, Uri calendarUri) {
 223.108 +	public AndroidEvent(Uri uri, Uri calendarUri) {
 223.109 +		super();
 223.110 +		this.setUri(uri);
 223.111 +/*		this.mAccount = account;
 223.112 +		this.mProvider = provider;*/
 223.113 +		//this.setCounterpartUri(calendarUri);
 223.114 +		mAndroidCalendarUri = calendarUri;
 223.115 +	}
 223.116 +	
 223.117 +	public Calendar getIcsEvent() {
 223.118 +		return mCalendar;
 223.119 +	}
 223.120 +	
 223.121 +	public String getETag() {
 223.122 +		String Result = "";
 223.123 +		if (this.ContentValues.containsKey(ETAG))
 223.124 +			Result = this.ContentValues.getAsString(ETAG);
 223.125 +		return Result;
 223.126 +	}
 223.127 +
 223.128 +	public void setETag(String eTag) {
 223.129 +		this.ContentValues.put(ETAG, eTag);
 223.130 +	}
 223.131 +	
 223.132 +	public Uri getUri() {
 223.133 +		return muri;
 223.134 +	}
 223.135 +
 223.136 +	public void setUri(Uri uri) {
 223.137 +		this.muri = uri;
 223.138 +	}
 223.139 +	
 223.140 +	public Uri getAndroidCalendarUri() {
 223.141 +		return mAndroidCalendarUri;
 223.142 +	}
 223.143 +	
 223.144 +	@Override
 223.145 +	public String toString() {
 223.146 +		return this.getUri().toString();
 223.147 +	}
 223.148 +	
 223.149 +	/**
 223.150 +	 * reads an android event from a given cursor into {@link AndroidEvent#ContentValues}
 223.151 +	 * @param cur the cursor with the event
 223.152 +	 * @return success of this funtion
 223.153 +	 * @see AndroidEvent#ContentValues
 223.154 +	 */
 223.155 +	public boolean readContentValues(Cursor cur) {
 223.156 +		this.setETag(cur.getString(cur.getColumnIndex(ETAG)));
 223.157 +
 223.158 +		this.ContentValues.put(Events.EVENT_TIMEZONE, cur.getString(cur.getColumnIndex(Events.EVENT_TIMEZONE)));
 223.159 +		this.ContentValues.put(Events.EVENT_END_TIMEZONE, cur.getString(cur.getColumnIndex(Events.EVENT_END_TIMEZONE)));
 223.160 +		this.ContentValues.put(Events.DTSTART, cur.getLong(cur.getColumnIndex(Events.DTSTART)));
 223.161 +		this.ContentValues.put(Events.DTEND, cur.getLong(cur.getColumnIndex(Events.DTEND)));
 223.162 +		this.ContentValues.put(Events.ALL_DAY, cur.getLong(cur.getColumnIndex(Events.ALL_DAY)));
 223.163 +		this.ContentValues.put(Events.TITLE, cur.getString(cur.getColumnIndex(Events.TITLE)));
 223.164 +		this.ContentValues.put(Events.CALENDAR_ID, cur.getString(cur.getColumnIndex(Events.CALENDAR_ID)));
 223.165 +		this.ContentValues.put(Events._SYNC_ID, cur.getString(cur.getColumnIndex(Events._SYNC_ID)));
 223.166 +		//this.ContentValues.put(Events.SYNC_DATA1, cur.getString(cur.getColumnIndex(Events.SYNC_DATA1))); //not needed here, eTag has already been read
 223.167 +		this.ContentValues.put(Events.DESCRIPTION, cur.getString(cur.getColumnIndex(Events.DESCRIPTION)));
 223.168 +		this.ContentValues.put(Events.EVENT_LOCATION, cur.getString(cur.getColumnIndex(Events.EVENT_LOCATION)));
 223.169 +		this.ContentValues.put(Events.ACCESS_LEVEL, cur.getInt(cur.getColumnIndex(Events.ACCESS_LEVEL)));
 223.170 +		
 223.171 +		this.ContentValues.put(Events.STATUS, cur.getInt(cur.getColumnIndex(Events.STATUS)));
 223.172 +		
 223.173 +		this.ContentValues.put(Events.LAST_DATE, cur.getInt(cur.getColumnIndex(Events.LAST_DATE)));
 223.174 +		this.ContentValues.put(Events.DURATION, cur.getString(cur.getColumnIndex(Events.DURATION)));
 223.175 +
 223.176 +		this.ContentValues.put(Events.RDATE, cur.getString(cur.getColumnIndex(Events.RDATE)));
 223.177 +		this.ContentValues.put(Events.RRULE, cur.getString(cur.getColumnIndex(Events.RRULE)));
 223.178 +		this.ContentValues.put(Events.EXRULE, cur.getString(cur.getColumnIndex(Events.EXRULE)));
 223.179 +		this.ContentValues.put(Events.EXDATE, cur.getString(cur.getColumnIndex(Events.EXDATE)));		
 223.180 +		this.ContentValues.put(Events.DIRTY, cur.getInt(cur.getColumnIndex(Events.DIRTY)));
 223.181 +		this.ContentValues.put(UID, cur.getString(cur.getColumnIndex(UID)));
 223.182 +		this.ContentValues.put(RAWDATA, cur.getString(cur.getColumnIndex(RAWDATA)));
 223.183 +		
 223.184 +		return true;
 223.185 +	}
 223.186 +	
 223.187 +	/**
 223.188 +	 * reads the attendees from a given cursor
 223.189 +	 * @param cur the cursor with the attendees
 223.190 +	 * @return success of this function
 223.191 +	 * @see AndroidEvent#mAttendees
 223.192 +	 */
 223.193 +	public boolean readAttendees(Cursor cur) {
 223.194 +		Attendee attendee = null;
 223.195 +		Organizer organizer = null;
 223.196 +		ParameterList paraList = null;
 223.197 +
 223.198 +		String Name = "";
 223.199 +		Cn cn = null;
 223.200 +
 223.201 +		String Email = "";
 223.202 +
 223.203 +		int Relationship = 0;
 223.204 +		
 223.205 +		
 223.206 +		int Status = 0;
 223.207 +		PartStat partstat = null;
 223.208 +
 223.209 +		int Type = 0;
 223.210 +		Role role = null;
 223.211 +		
 223.212 +		try {
 223.213 +			while (cur.moveToNext()) {
 223.214 +				Name         = cur.getString(cur.getColumnIndex(Attendees.ATTENDEE_NAME));
 223.215 +				Email        = cur.getString(cur.getColumnIndex(Attendees.ATTENDEE_EMAIL));
 223.216 +				Relationship = cur.getInt(cur.getColumnIndex(Attendees.ATTENDEE_RELATIONSHIP));
 223.217 +				Type         = cur.getInt(cur.getColumnIndex(Attendees.ATTENDEE_TYPE));
 223.218 +				Status       = cur.getInt(cur.getColumnIndex(Attendees.ATTENDEE_STATUS));
 223.219 +				
 223.220 +				if (Relationship == Attendees.RELATIONSHIP_ORGANIZER) {
 223.221 +					organizer = new Organizer();
 223.222 +					organizer.setValue("mailto:" + Email);
 223.223 +					paraList = organizer.getParameters();
 223.224 +					mAttendees.add(organizer);
 223.225 +				} else {
 223.226 +					attendee = new Attendee();
 223.227 +					attendee.setValue("mailto:" + Email);
 223.228 +					paraList = attendee.getParameters();
 223.229 +					mAttendees.add(attendee);
 223.230 +				}
 223.231 +				
 223.232 +				Rsvp rsvp = new Rsvp(true);
 223.233 +				paraList.add(rsvp);
 223.234 +
 223.235 +				cn = new Cn(Name);
 223.236 +				paraList.add(cn);
 223.237 +				
 223.238 +				if (Status == Attendees.ATTENDEE_STATUS_INVITED)
 223.239 +					partstat = new PartStat(PartStat.NEEDS_ACTION.getValue());
 223.240 +				else if (Status == Attendees.ATTENDEE_STATUS_ACCEPTED)
 223.241 +					partstat = new PartStat(PartStat.ACCEPTED.getValue());
 223.242 +				else if (Status == Attendees.ATTENDEE_STATUS_DECLINED)
 223.243 +					partstat = new PartStat(PartStat.DECLINED.getValue());
 223.244 +				else if (Status == Attendees.ATTENDEE_STATUS_NONE)
 223.245 +					partstat = new PartStat(PartStat.COMPLETED.getValue());
 223.246 +				else if (Status == Attendees.ATTENDEE_STATUS_TENTATIVE)
 223.247 +					partstat = new PartStat(PartStat.TENTATIVE.getValue());
 223.248 +				else 
 223.249 +					partstat = new PartStat(PartStat.NEEDS_ACTION.getValue());
 223.250 +				paraList.add(partstat);
 223.251 +
 223.252 +				if (Type == Attendees.TYPE_OPTIONAL)
 223.253 +					role = new Role(Role.OPT_PARTICIPANT.getValue());
 223.254 +				else if (Type == Attendees.TYPE_NONE)
 223.255 +					role = new Role(Role.NON_PARTICIPANT.getValue()); //regular participants in android are non required?
 223.256 +				else if (Type == Attendees.TYPE_REQUIRED)
 223.257 +					role = new Role(Role.REQ_PARTICIPANT.getValue());
 223.258 +				else
 223.259 +					role = new Role(Role.NON_PARTICIPANT.getValue());
 223.260 +				paraList.add(role);
 223.261 +			}
 223.262 +
 223.263 +		} catch (URISyntaxException e) {
 223.264 +			e.printStackTrace();
 223.265 +		}
 223.266 +		return true;
 223.267 +	}
 223.268 +	
 223.269 +	/**
 223.270 +	 * reads the reminders from a given cursor
 223.271 +	 * @param cur the cursor with the reminders
 223.272 +	 * @return success of this function
 223.273 +	 */
 223.274 +	public boolean readReminder(Cursor cur) {
 223.275 +		int Method;
 223.276 +		int Minutes;
 223.277 +		VAlarm reminder;
 223.278 +		while (cur.moveToNext()) {
 223.279 +			reminder = new VAlarm();
 223.280 +			Method = cur.getInt(cur.getColumnIndex(Reminders.METHOD));
 223.281 +			Minutes = cur.getInt(cur.getColumnIndex(Reminders.MINUTES)) * -1;
 223.282 +			
 223.283 +			
 223.284 +			Dur dur = new Dur(0, 0, Minutes, 0);
 223.285 +			Trigger tri = new Trigger(dur);
 223.286 +			Value val = new Value(Duration.DURATION);
 223.287 +			tri.getParameters().add(val);
 223.288 +			reminder.getProperties().add(tri);
 223.289 +
 223.290 +			Description desc = new Description();
 223.291 +			desc.setValue("caldavsyncadapter standard description");
 223.292 +			reminder.getProperties().add(desc);
 223.293 +
 223.294 +
 223.295 +			if (Method == Reminders.METHOD_EMAIL)
 223.296 +				reminder.getProperties().add(Action.EMAIL);
 223.297 +			else
 223.298 +				reminder.getProperties().add(Action.DISPLAY);
 223.299 +			
 223.300 +			this.mReminders.add(reminder);
 223.301 +		}
 223.302 +		return true;
 223.303 +	}
 223.304 +	
 223.305 +	/**
 223.306 +	 * generates a new ics-file.
 223.307 +	 * uses {@link AndroidEvent#ContentValues} as source.
 223.308 +	 * this should only be used when a new event has been generated within android.
 223.309 +	 * @param strUid the UID for this event. example: UID:e6be67c6-eff0-44f8-a1a0-6c2cb1029944-caldavsyncadapter
 223.310 +	 * @return success of the function
 223.311 +	 * @see CalendarEvent#fetchBody()
 223.312 +	 */
 223.313 +	public boolean createIcs(String strUid) {
 223.314 +		boolean Result = false;
 223.315 +		TimeZone timezone = null;
 223.316 +		TimeZoneRegistry registry = TimeZoneRegistryFactory.getInstance().createRegistry();
 223.317 +//TODO: do not simply create the ics-file new. take into account the RAWDATA if available
 223.318 +		/* 
 223.319 +		 * dtstart=1365598800000
 223.320 +		 * dtend=1365602400000
 223.321 +		 * eventTimezone=Europe/Berlin
 223.322 +		 * eventEndTimezone=null
 223.323 +		 * duration=null
 223.324 +		 * allDay=0
 223.325 +		 * rrule=null
 223.326 +		 * rdate=null
 223.327 +		 * exrule=null
 223.328 +		 * exdate=null
 223.329 +		 * title=Einurlner Termin
 223.330 +		 * description=null
 223.331 +		 * eventLocation=null
 223.332 +		 * accessLevel=0
 223.333 +		 * eventStatus=0
 223.334 +		 * 
 223.335 +		 * calendar_id=4
 223.336 +		 * lastDate=-197200128
 223.337 +		 * sync_data1=null
 223.338 +		 * _sync_id=null
 223.339 +		 * dirty=1
 223.340 +		 */
 223.341 +		
 223.342 +		try {
 223.343 +			mCalendar = new Calendar();
 223.344 +			PropertyList propCalendar = mCalendar.getProperties();
 223.345 +			propCalendar.add(new ProdId("-//Ben Fortuna//iCal4j 1.0//EN"));
 223.346 +			propCalendar.add(Version.VERSION_2_0);
 223.347 +			propCalendar.add(CalScale.GREGORIAN);
 223.348 +			
 223.349 +			VEvent event = new VEvent();
 223.350 +			mCalendar.getComponents().add(event);
 223.351 +			PropertyList propEvent = event.getProperties();
 223.352 +
 223.353 +			// DTSTAMP -> is created by new VEvent() automatical
 223.354 +			//na 
 223.355 +			
 223.356 +			// CREATED
 223.357 +			//na
 223.358 +			
 223.359 +			// LAST-MODIFIED
 223.360 +			//na
 223.361 +			
 223.362 +			// SEQUENCE
 223.363 +			//na
 223.364 +			
 223.365 +			// DTSTART
 223.366 +			long lngStart = this.ContentValues.getAsLong(Events.DTSTART);
 223.367 +			String strTZStart = this.ContentValues.getAsString(Events.EVENT_TIMEZONE);
 223.368 +			boolean allDay = this.ContentValues.getAsBoolean(Events.ALL_DAY);
 223.369 +			if (lngStart > 0) {
 223.370 +				DtStart dtStart = new DtStart();
 223.371 +				if (allDay) {
 223.372 +					Date dateStart = new Date();
 223.373 +					dateStart.setTime(lngStart);
 223.374 +					dtStart.setDate(dateStart);
 223.375 +				} else {
 223.376 +					DateTime datetimeStart = new DateTime();
 223.377 +					datetimeStart.setTime(lngStart);
 223.378 +					dtStart.setDate(datetimeStart);
 223.379 +
 223.380 +					timezone = registry.getTimeZone(strTZStart);
 223.381 +					dtStart.setTimeZone(timezone);
 223.382 +					
 223.383 +					// no timezone information for allDay events
 223.384 +					mCalendar.getComponents().add(timezone.getVTimeZone());
 223.385 +				}
 223.386 +				propEvent.add(dtStart);
 223.387 +			}
 223.388 +			
 223.389 +			// DTEND
 223.390 +			long lngEnd       = this.ContentValues.getAsLong(Events.DTEND);
 223.391 +			String strTZEnd   = this.ContentValues.getAsString(Events.EVENT_END_TIMEZONE);
 223.392 +			if (strTZEnd == null)
 223.393 +				strTZEnd = strTZStart;
 223.394 +			if (lngEnd > 0) {
 223.395 +				DtEnd dtEnd = new DtEnd();
 223.396 +				if (allDay) {
 223.397 +					Date dateEnd = new Date();
 223.398 +					dateEnd.setTime(lngEnd);
 223.399 +					dtEnd.setDate(dateEnd);
 223.400 +				} else {
 223.401 +					DateTime datetimeEnd = new DateTime();
 223.402 +					datetimeEnd.setTime(lngEnd);
 223.403 +					dtEnd.setDate(datetimeEnd);
 223.404 +					if (strTZEnd != null)
 223.405 +						timezone = registry.getTimeZone(strTZEnd);
 223.406 +					dtEnd.setTimeZone(timezone);
 223.407 +				}
 223.408 +				propEvent.add(dtEnd);
 223.409 +			}
 223.410 +			
 223.411 +			// DURATION
 223.412 +			if (this.ContentValues.containsKey(Events.DURATION)) {
 223.413 +				String strDuration = this.ContentValues.getAsString(Events.DURATION);
 223.414 +				if (strDuration != null) {
 223.415 +					Duration duration = new Duration();
 223.416 +					duration.setValue(strDuration);
 223.417 +					
 223.418 +					propEvent.add(duration);
 223.419 +				}
 223.420 +			}
 223.421 +
 223.422 +			//RRULE
 223.423 +			if (this.ContentValues.containsKey(Events.RRULE)) {
 223.424 +				String strRrule = this.ContentValues.getAsString(Events.RRULE);
 223.425 +				if (strRrule != null) {
 223.426 +					if (!strRrule.equals("")) {
 223.427 +						RRule rrule = new RRule();
 223.428 +						rrule.setValue(strRrule);
 223.429 +						propEvent.add(rrule);
 223.430 +					}
 223.431 +				}
 223.432 +			}
 223.433 +			
 223.434 +			//RDATE
 223.435 +			if (this.ContentValues.containsKey(Events.RDATE)) {
 223.436 +				String strRdate = this.ContentValues.getAsString(Events.RDATE);
 223.437 +				if (strRdate != null) {
 223.438 +					if (!strRdate.equals("")) {
 223.439 +						RDate rdate = new RDate();
 223.440 +						rdate.setValue(strRdate);
 223.441 +						propEvent.add(rdate);
 223.442 +					}
 223.443 +				}
 223.444 +			}
 223.445 +			
 223.446 +			//EXRULE
 223.447 +			if (this.ContentValues.containsKey(Events.EXRULE)) {
 223.448 +				String strExrule = this.ContentValues.getAsString(Events.EXRULE);
 223.449 +				if (strExrule != null) {
 223.450 +					if (!strExrule.equals("")) {
 223.451 +						ExRule exrule = new ExRule();
 223.452 +						exrule.setValue(strExrule);
 223.453 +						propEvent.add(exrule);
 223.454 +					}
 223.455 +				}
 223.456 +			}
 223.457 +			
 223.458 +			//EXDATE
 223.459 +			if (this.ContentValues.containsKey(Events.EXDATE)) {
 223.460 +				String strExdate = this.ContentValues.getAsString(Events.EXDATE);
 223.461 +				if (strExdate != null) {
 223.462 +					if (!strExdate.equals("")) {
 223.463 +						ExDate exdate = new ExDate();
 223.464 +						exdate.setValue(strExdate);
 223.465 +						propEvent.add(exdate);
 223.466 +					}
 223.467 +				}
 223.468 +			}
 223.469 +			
 223.470 +			//SUMMARY
 223.471 +			if (this.ContentValues.containsKey(Events.TITLE)) {
 223.472 +				String strTitle = this.ContentValues.getAsString(Events.TITLE);
 223.473 +				if (strTitle != null) {
 223.474 +					Summary summary = new Summary(strTitle);
 223.475 +					propEvent.add(summary);
 223.476 +				}
 223.477 +			}
 223.478 +			
 223.479 +			//DESCIPTION
 223.480 +			if (this.ContentValues.containsKey(Events.DESCRIPTION)) {
 223.481 +				String strDescription = this.ContentValues.getAsString(Events.DESCRIPTION);
 223.482 +				if (strDescription != null) {
 223.483 +					if (!strDescription.equals("")) {
 223.484 +						Description description = new Description(strDescription);
 223.485 +						propEvent.add(description);
 223.486 +					}
 223.487 +				}
 223.488 +			}
 223.489 +			
 223.490 +			//LOCATION
 223.491 +			if (this.ContentValues.containsKey(Events.EVENT_LOCATION)) {
 223.492 +				String strLocation = this.ContentValues.getAsString(Events.EVENT_LOCATION);
 223.493 +				if (strLocation != null) {
 223.494 +					if (!strLocation.equals("")) { 
 223.495 +						Location location = new Location(strLocation);
 223.496 +						propEvent.add(location);
 223.497 +					}
 223.498 +				}
 223.499 +			}
 223.500 +			
 223.501 +			//CLASS / ACCESS_LEVEL
 223.502 +			if (this.ContentValues.containsKey(Events.ACCESS_LEVEL)) {
 223.503 +				int accessLevel = this.ContentValues.getAsInteger(Events.ACCESS_LEVEL);
 223.504 +				Clazz clazz = new Clazz();
 223.505 +				if (accessLevel == Events.ACCESS_PUBLIC)
 223.506 +					clazz.setValue(Clazz.PUBLIC.getValue());
 223.507 +				else if (accessLevel == Events.ACCESS_PRIVATE)
 223.508 +					clazz.setValue(Clazz.PRIVATE.getValue());
 223.509 +				else if (accessLevel == Events.ACCESS_CONFIDENTIAL)
 223.510 +					clazz.setValue(Clazz.CONFIDENTIAL.getValue());
 223.511 +				else 
 223.512 +					clazz.setValue(Clazz.PUBLIC.getValue());
 223.513 +				
 223.514 +				propEvent.add(clazz);
 223.515 +			}
 223.516 +			
 223.517 +			//STATUS
 223.518 +			if (this.ContentValues.containsKey(Events.STATUS)) {
 223.519 +				int intStatus = this.ContentValues.getAsInteger(Events.STATUS);
 223.520 +				if (intStatus > -1) {
 223.521 +					Status status = new Status();
 223.522 +					if (intStatus == Events.STATUS_CANCELED) 
 223.523 +						status.setValue(Status.VEVENT_CANCELLED.getValue());
 223.524 +					else if (intStatus == Events.STATUS_CONFIRMED)
 223.525 +						status.setValue(Status.VEVENT_CONFIRMED.getValue());
 223.526 +					else if (intStatus == Events.STATUS_TENTATIVE)
 223.527 +						status.setValue(Status.VEVENT_TENTATIVE.getValue());
 223.528 +					
 223.529 +					propEvent.add(status);
 223.530 +				}
 223.531 +			}
 223.532 +
 223.533 +			//UID
 223.534 +			Uid uid = new Uid(strUid);
 223.535 +			propEvent.add(uid);
 223.536 +
 223.537 +			// Attendees
 223.538 +			if (mAttendees.size() > 0) {
 223.539 +				for (Object objProp: mAttendees) {
 223.540 +					Property prop = (Property) objProp;
 223.541 +					propEvent.add(prop);
 223.542 +				}
 223.543 +			}
 223.544 +			
 223.545 +			// Reminders
 223.546 +			if (mReminders.size() > 0) {
 223.547 +				for (Object objComp: mReminders) {
 223.548 +					Component com = (Component) objComp;
 223.549 +					event.getAlarms().add(com);
 223.550 +				}
 223.551 +			}
 223.552 +			
 223.553 +		} catch (ParseException e) {
 223.554 +			e.printStackTrace();
 223.555 +		}
 223.556 +		
 223.557 +		return Result;
 223.558 +	}
 223.559 +	
 223.560 +	/**
 223.561 +	 * marks the android event as already handled
 223.562 +	 * @return
 223.563 +	 * @see AndroidEvent#cInternalTag
 223.564 +	 * @see SyncAdapter#synchroniseEvents(CaldavFacade, Account, ContentProviderClient, Uri, DavCalendar, SyncStats)
 223.565 +	 * @throws RemoteException
 223.566 +	 */
 223.567 +/*	public boolean tagAndroidEvent() throws RemoteException {
 223.568 +		
 223.569 +		ContentValues values = new ContentValues();
 223.570 +		values.put(Event.INTERNALTAG, 1);
 223.571 +		
 223.572 +		int RowCount = this.mProvider.update(asSyncAdapter(this.getUri(), this.mAccount.name, this.mAccount.type), values, null, null);
 223.573 +		//Log.e(TAG,"Rows updated: " + RowCount.toString());
 223.574 +		
 223.575 +		return (RowCount == 1);
 223.576 +	}*/ 
 223.577 +	
 223.578 +/*	private static Uri asSyncAdapter(Uri uri, String account, String accountType) {
 223.579 +	    return uri.buildUpon()
 223.580 +	        .appendQueryParameter(android.provider.CalendarContract.CALLER_IS_SYNCADAPTER,"true")
 223.581 +	        .appendQueryParameter(Calendars.ACCOUNT_NAME, account)
 223.582 +	        .appendQueryParameter(Calendars.ACCOUNT_TYPE, accountType).build();
 223.583 +	 }*/
 223.584 +}
 223.585 +
   224.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   224.2 +++ b/src/org/gege/caldavsyncadapter/authenticator/AuthenticationService.java	Tue Feb 10 18:12:00 2015 +0100
   224.3 @@ -0,0 +1,59 @@
   224.4 +/**
   224.5 + * Copyright (c) 2012-2013, Gerald Garcia
   224.6 + * 
   224.7 + * This file is part of Andoid Caldav Sync Adapter Free.
   224.8 + *
   224.9 + * Andoid Caldav Sync Adapter Free is free software: you can redistribute 
  224.10 + * it and/or modify it under the terms of the GNU General Public License 
  224.11 + * as published by the Free Software Foundation, either version 3 of the 
  224.12 + * License, or at your option any later version.
  224.13 + *
  224.14 + * Andoid Caldav Sync Adapter Free is distributed in the hope that 
  224.15 + * it will be useful, but WITHOUT ANY WARRANTY; without even the implied 
  224.16 + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  224.17 + * GNU General Public License for more details.
  224.18 + *
  224.19 + * You should have received a copy of the GNU General Public License
  224.20 + * along with Andoid Caldav Sync Adapter Free.  
  224.21 + * If not, see <http://www.gnu.org/licenses/>.
  224.22 + * 
  224.23 + */
  224.24 +
  224.25 +package org.gege.caldavsyncadapter.authenticator;
  224.26 +
  224.27 +import android.app.Service;
  224.28 +import android.content.Intent;
  224.29 +import android.os.IBinder;
  224.30 +import android.util.Log;
  224.31 +
  224.32 +
  224.33 +public class AuthenticationService  extends Service {
  224.34 +
  224.35 +    private static final String TAG = "AuthenticationService";
  224.36 +
  224.37 +    private Authenticator mAuthenticator;
  224.38 +
  224.39 +    @Override
  224.40 +    public void onCreate() {
  224.41 +        if (Log.isLoggable(TAG, Log.VERBOSE)) {
  224.42 +            Log.v(TAG, "SampleSyncAdapter Authentication Service started.");
  224.43 +        }
  224.44 +        mAuthenticator = new Authenticator(this);
  224.45 +    }
  224.46 +
  224.47 +    @Override
  224.48 +    public void onDestroy() {
  224.49 +        if (Log.isLoggable(TAG, Log.VERBOSE)) {
  224.50 +            Log.v(TAG, "SampleSyncAdapter Authentication Service stopped.");
  224.51 +        }
  224.52 +    }
  224.53 +
  224.54 +    @Override
  224.55 +    public IBinder onBind(Intent intent) {
  224.56 +        if (Log.isLoggable(TAG, Log.VERBOSE)) {
  224.57 +            Log.v(TAG, "getBinder()...  returning the AccountAuthenticator binder for intent "
  224.58 +                    + intent);
  224.59 +        }
  224.60 +        return mAuthenticator.getIBinder();
  224.61 +    }
  224.62 +}
  224.63 \ No newline at end of file
   225.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   225.2 +++ b/src/org/gege/caldavsyncadapter/authenticator/Authenticator.java	Tue Feb 10 18:12:00 2015 +0100
   225.3 @@ -0,0 +1,107 @@
   225.4 +/**
   225.5 + * Copyright (c) 2012-2013, Gerald Garcia
   225.6 + * 
   225.7 + * This file is part of Andoid Caldav Sync Adapter Free.
   225.8 + *
   225.9 + * Andoid Caldav Sync Adapter Free is free software: you can redistribute 
  225.10 + * it and/or modify it under the terms of the GNU General Public License 
  225.11 + * as published by the Free Software Foundation, either version 3 of the 
  225.12 + * License, or at your option any later version.
  225.13 + *
  225.14 + * Andoid Caldav Sync Adapter Free is distributed in the hope that 
  225.15 + * it will be useful, but WITHOUT ANY WARRANTY; without even the implied 
  225.16 + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  225.17 + * GNU General Public License for more details.
  225.18 + *
  225.19 + * You should have received a copy of the GNU General Public License
  225.20 + * along with Andoid Caldav Sync Adapter Free.  
  225.21 + * If not, see <http://www.gnu.org/licenses/>.
  225.22 + * 
  225.23 + */
  225.24 +
  225.25 +package org.gege.caldavsyncadapter.authenticator;
  225.26 +
  225.27 +
  225.28 +
  225.29 +import android.accounts.AbstractAccountAuthenticator;
  225.30 +import android.accounts.Account;
  225.31 +import android.accounts.AccountAuthenticatorResponse;
  225.32 +import android.accounts.AccountManager;
  225.33 +import android.accounts.NetworkErrorException;
  225.34 +import android.content.Context;
  225.35 +import android.content.Intent;
  225.36 +import android.os.Bundle;
  225.37 +import android.util.Log;
  225.38 +
  225.39 +public class Authenticator  extends AbstractAccountAuthenticator {
  225.40 +
  225.41 +	private static final String TAG = "Authenticator";
  225.42 +	private Context mContext;
  225.43 +	
  225.44 +	public Authenticator(Context context) {
  225.45 +		super(context);
  225.46 +	
  225.47 +		mContext = context;
  225.48 +	}
  225.49 + 
  225.50 +	@Override
  225.51 +	public Bundle addAccount(AccountAuthenticatorResponse response,
  225.52 +			String accountType, String authTokenType,
  225.53 +			String[] requiredFeatures, Bundle options)
  225.54 +			throws NetworkErrorException {
  225.55 +		
  225.56 +	
  225.57 +		Log.v(TAG, "addAccount()");
  225.58 +		
  225.59 +        final Intent intent = new Intent(mContext, AuthenticatorActivity.class);
  225.60 +        intent.putExtra(AccountManager.KEY_ACCOUNT_AUTHENTICATOR_RESPONSE, response);
  225.61 +        final Bundle bundle = new Bundle();
  225.62 +        bundle.putParcelable(AccountManager.KEY_INTENT, intent);
  225.63 +        return bundle;
  225.64 +
  225.65 +	}
  225.66 +
  225.67 +	@Override
  225.68 +	public Bundle confirmCredentials(AccountAuthenticatorResponse response,
  225.69 +			Account account, Bundle options) throws NetworkErrorException {
  225.70 +		// TODO Auto-generated method stub
  225.71 +		return null;
  225.72 +	}
  225.73 +
  225.74 +	@Override
  225.75 +	public Bundle editProperties(AccountAuthenticatorResponse response,
  225.76 +			String accountType) {
  225.77 +		// TODO Auto-generated method stub
  225.78 +		return null;
  225.79 +	}
  225.80 +
  225.81 +	@Override
  225.82 +	public Bundle getAuthToken(AccountAuthenticatorResponse response,
  225.83 +			Account account, String authTokenType, Bundle options)
  225.84 +			throws NetworkErrorException {
  225.85 +		// TODO Auto-generated method stub
  225.86 +		return null;
  225.87 +	}
  225.88 +
  225.89 +	@Override
  225.90 +	public String getAuthTokenLabel(String authTokenType) {
  225.91 +		// TODO Auto-generated method stub
  225.92 +		return null;
  225.93 +	}
  225.94 +
  225.95 +	@Override
  225.96 +	public Bundle hasFeatures(AccountAuthenticatorResponse response,
  225.97 +			Account account, String[] features) throws NetworkErrorException {
  225.98 +		// TODO Auto-generated method stub
  225.99 +		return null;
 225.100 +	}
 225.101 +
 225.102 +	@Override
 225.103 +	public Bundle updateCredentials(AccountAuthenticatorResponse response,
 225.104 +			Account account, String authTokenType, Bundle options)
 225.105 +			throws NetworkErrorException {
 225.106 +		// TODO Auto-generated method stub
 225.107 +		return null;
 225.108 +	}
 225.109 +
 225.110 +}
   226.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   226.2 +++ b/src/org/gege/caldavsyncadapter/authenticator/AuthenticatorActivity.java	Tue Feb 10 18:12:00 2015 +0100
   226.3 @@ -0,0 +1,474 @@
   226.4 +/**
   226.5 + * Copyright (c) 2012-2013, Gerald Garcia
   226.6 + * 
   226.7 + * This file is part of Andoid Caldav Sync Adapter Free.
   226.8 + *
   226.9 + * Andoid Caldav Sync Adapter Free is free software: you can redistribute 
  226.10 + * it and/or modify it under the terms of the GNU General Public License 
  226.11 + * as published by the Free Software Foundation, either version 3 of the 
  226.12 + * License, or at your option any later version.
  226.13 + *
  226.14 + * Andoid Caldav Sync Adapter Free is distributed in the hope that 
  226.15 + * it will be useful, but WITHOUT ANY WARRANTY; without even the implied 
  226.16 + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  226.17 + * GNU General Public License for more details.
  226.18 + *
  226.19 + * You should have received a copy of the GNU General Public License
  226.20 + * along with Andoid Caldav Sync Adapter Free.  
  226.21 + * If not, see <http://www.gnu.org/licenses/>.
  226.22 + * 
  226.23 + */
  226.24 +
  226.25 +package org.gege.caldavsyncadapter.authenticator;
  226.26 +
  226.27 +import java.io.IOException;
  226.28 +import java.io.UnsupportedEncodingException;
  226.29 +import java.net.MalformedURLException;
  226.30 +import java.net.URISyntaxException;
  226.31 +
  226.32 +import javax.xml.parsers.ParserConfigurationException;
  226.33 +
  226.34 +import org.apache.http.conn.HttpHostConnectException;
  226.35 +import org.gege.caldavsyncadapter.R;
  226.36 +import org.gege.caldavsyncadapter.caldav.CaldavFacade;
  226.37 +import org.gege.caldavsyncadapter.caldav.CaldavFacade.TestConnectionResult;
  226.38 +import org.xml.sax.SAXException;
  226.39 +
  226.40 +import android.accounts.Account;
  226.41 +import android.accounts.AccountManager;
  226.42 +import android.animation.Animator;
  226.43 +import android.animation.AnimatorListenerAdapter;
  226.44 +import android.annotation.TargetApi;
  226.45 +import android.app.Activity;
  226.46 +import android.content.Context;
  226.47 +import android.content.pm.PackageManager.NameNotFoundException;
  226.48 +import android.os.AsyncTask;
  226.49 +import android.os.Build;
  226.50 +import android.os.Bundle;
  226.51 +import android.text.TextUtils;
  226.52 +import android.util.Log;
  226.53 +import android.view.KeyEvent;
  226.54 +import android.view.Menu;
  226.55 +import android.view.View;
  226.56 +import android.view.inputmethod.EditorInfo;
  226.57 +import android.widget.EditText;
  226.58 +import android.widget.TextView;
  226.59 +import android.widget.Toast;
  226.60 +
  226.61 +/**
  226.62 + * Activity which displays a login screen to the user, offering registration as
  226.63 + * well.
  226.64 + */
  226.65 +public class AuthenticatorActivity extends Activity {
  226.66 +	
  226.67 +	private static final String TAG = "AuthenticatorActivity";
  226.68 +
  226.69 +	private static final String ACCOUNT_TYPE = "org.gege.caldavsyncadapter.account";
  226.70 +
  226.71 +	public static final String USER_DATA_URL_KEY = "USER_DATA_URL_KEY";
  226.72 +	public static final String USER_DATA_USERNAME = "USER_DATA_USERNAME";
  226.73 +	public static final String USER_DATA_VERSION = "USER_DATA_VERSION";
  226.74 +	public static final String CURRENT_USER_DATA_VERSION = "1";
  226.75 +	
  226.76 +	public static final String ACCOUNT_NAME_SPLITTER = "@";
  226.77 +	
  226.78 +	/**
  226.79 +	 * The default email to populate the email field with.
  226.80 +	 */
  226.81 +	public static final String EXTRA_EMAIL = "com.example.android.authenticatordemo.extra.EMAIL";
  226.82 +
  226.83 +	/**
  226.84 +	 * Keep track of the login task to ensure we can cancel it if requested.
  226.85 +	 */
  226.86 +	private UserLoginTask mAuthTask = null;
  226.87 +
  226.88 +	// Values for email and password at the time of the login attempt.
  226.89 +	private String mUser;
  226.90 +	private String mPassword;
  226.91 +	private Context mContext;
  226.92 +
  226.93 +	// UI references.
  226.94 +	private EditText mUserView;
  226.95 +	private EditText mPasswordView;
  226.96 +	private View mLoginFormView;
  226.97 +	private View mLoginStatusView;
  226.98 +	private TextView mLoginStatusMessageView;
  226.99 +
 226.100 +	private AccountManager mAccountManager;
 226.101 +
 226.102 +	private String mURL;
 226.103 +	private EditText mURLView;
 226.104 +	
 226.105 +	private String mAccountname;
 226.106 +	private EditText mAccountnameView;
 226.107 +	
 226.108 +	public AuthenticatorActivity() {
 226.109 +		super();
 226.110 +		
 226.111 +	}
 226.112 +	
 226.113 +	@Override
 226.114 +	protected void onCreate(Bundle savedInstanceState) {
 226.115 +		super.onCreate(savedInstanceState);
 226.116 +		
 226.117 +		mAccountManager = AccountManager.get(this);
 226.118 +
 226.119 +		setContentView(R.layout.activity_authenticator);
 226.120 +
 226.121 +		// Set up the login form.
 226.122 +		mUser = getIntent().getStringExtra(EXTRA_EMAIL);
 226.123 +		mUserView = (EditText) findViewById(R.id.user);
 226.124 +		mUserView.setText(mUser);
 226.125 +		
 226.126 +		mContext = getBaseContext();
 226.127 +
 226.128 +		mPasswordView = (EditText) findViewById(R.id.password);
 226.129 +		mPasswordView
 226.130 +				.setOnEditorActionListener(new TextView.OnEditorActionListener() {
 226.131 +					@Override
 226.132 +					public boolean onEditorAction(TextView textView, int id,
 226.133 +							KeyEvent keyEvent) {
 226.134 +						if (id == R.id.login || id == EditorInfo.IME_NULL) {
 226.135 +							attemptLogin();
 226.136 +							return true;
 226.137 +						}
 226.138 +						return false;
 226.139 +					}
 226.140 +				});
 226.141 +
 226.142 +		
 226.143 +		mURLView = (EditText) findViewById(R.id.url);
 226.144 +		
 226.145 +		mAccountnameView = (EditText) findViewById(R.id.accountname);
 226.146 +		
 226.147 +		mLoginFormView = findViewById(R.id.login_form);
 226.148 +		mLoginStatusView = findViewById(R.id.login_status);
 226.149 +		mLoginStatusMessageView = (TextView) findViewById(R.id.login_status_message);
 226.150 +
 226.151 +		findViewById(R.id.sign_in_button).setOnClickListener(
 226.152 +				new View.OnClickListener() {
 226.153 +					@Override
 226.154 +					public void onClick(View view) {
 226.155 +						attemptLogin();
 226.156 +					}
 226.157 +				});
 226.158 +		
 226.159 +		
 226.160 +	}
 226.161 +
 226.162 +	@Override
 226.163 +	public boolean onCreateOptionsMenu(Menu menu) {
 226.164 +		super.onCreateOptionsMenu(menu);
 226.165 +		getMenuInflater().inflate(R.menu.activity_authenticator, menu);
 226.166 +		return true;
 226.167 +	}
 226.168 +
 226.169 +	/**
 226.170 +	 * Attempts to sign in or register the account specified by the login form.
 226.171 +	 * If there are form errors (invalid email, missing fields, etc.), the
 226.172 +	 * errors are presented and no actual login attempt is made.
 226.173 +	 */
 226.174 +	public void attemptLogin() {
 226.175 +		if (mAuthTask != null) {
 226.176 +			return;
 226.177 +		}
 226.178 +
 226.179 +		// Reset errors.
 226.180 +		mUserView.setError(null);
 226.181 +		mPasswordView.setError(null);
 226.182 +
 226.183 +		// Store values at the time of the login attempt.
 226.184 +		mUser = mUserView.getText().toString();
 226.185 +		mPassword = mPasswordView.getText().toString();
 226.186 +		mURL = mURLView.getText().toString();
 226.187 +		mAccountname = mAccountnameView.getText().toString();
 226.188 +
 226.189 +		boolean cancel = false;
 226.190 +		View focusView = null;
 226.191 +		
 226.192 +		if (!mAccountname.equals("")) {
 226.193 +			Account TestAccount = new Account(mAccountname, ACCOUNT_TYPE);
 226.194 +			String TestUrl = mAccountManager.getUserData(TestAccount, AuthenticatorActivity.USER_DATA_URL_KEY);
 226.195 +			if (TestUrl != null) {
 226.196 +				mAccountnameView.setError(getString(R.string.error_account_already_in_use));
 226.197 +				focusView = mAccountnameView;
 226.198 +				cancel = true;
 226.199 +			}
 226.200 +		}
 226.201 +
 226.202 +		// Check for a valid password.
 226.203 +		if (TextUtils.isEmpty(mPassword)) {
 226.204 +			mPasswordView.setError(getString(R.string.error_field_required));
 226.205 +			focusView = mPasswordView;
 226.206 +			cancel = true;
 226.207 +		} else if (mPassword.length() < 4) {
 226.208 +			mPasswordView.setError(getString(R.string.error_invalid_password));
 226.209 +			focusView = mPasswordView;
 226.210 +			cancel = true;
 226.211 +		}
 226.212 +
 226.213 +		// Check for a valid email address.
 226.214 +		if (TextUtils.isEmpty(mUser)) {
 226.215 +			mUserView.setError(getString(R.string.error_field_required));
 226.216 +			focusView = mUserView;
 226.217 +			cancel = true;
 226.218 +		} 
 226.219 +		//else if (!mUser.contains("@")) {
 226.220 +		//	mUserView.setError(getString(R.string.error_invalid_email));
 226.221 +		//	focusView = mUserView;
 226.222 +		//	cancel = true;
 226.223 +		//}
 226.224 +
 226.225 +		if (cancel) {
 226.226 +			// There was an error; don't attempt login and focus the first
 226.227 +			// form field with an error.
 226.228 +			focusView.requestFocus();
 226.229 +		} else {
 226.230 +			// Show a progress spinner, and kick off a background task to
 226.231 +			// perform the user login attempt.
 226.232 +			mLoginStatusMessageView.setText(R.string.login_progress_signing_in);
 226.233 +			showProgress(true);
 226.234 +			mAuthTask = new UserLoginTask();
 226.235 +			mAuthTask.execute((Void) null);
 226.236 +		}
 226.237 +	}
 226.238 +
 226.239 +	/**
 226.240 +	 * Shows the progress UI and hides the login form.
 226.241 +	 */
 226.242 +	@TargetApi(Build.VERSION_CODES.HONEYCOMB_MR2)
 226.243 +	private void showProgress(final boolean show) {
 226.244 +		// On Honeycomb MR2 we have the ViewPropertyAnimator APIs, which allow
 226.245 +		// for very easy animations. If available, use these APIs to fade-in
 226.246 +		// the progress spinner.
 226.247 +		if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2) {
 226.248 +			int shortAnimTime = getResources().getInteger(
 226.249 +					android.R.integer.config_shortAnimTime);
 226.250 +
 226.251 +			mLoginStatusView.setVisibility(View.VISIBLE);
 226.252 +			mLoginStatusView.animate().setDuration(shortAnimTime)
 226.253 +					.alpha(show ? 1 : 0)
 226.254 +					.setListener(new AnimatorListenerAdapter() {
 226.255 +						@Override
 226.256 +						public void onAnimationEnd(Animator animation) {
 226.257 +							mLoginStatusView.setVisibility(show ? View.VISIBLE
 226.258 +									: View.GONE);
 226.259 +						}
 226.260 +					});
 226.261 +
 226.262 +			mLoginFormView.setVisibility(View.VISIBLE);
 226.263 +			mLoginFormView.animate().setDuration(shortAnimTime)
 226.264 +					.alpha(show ? 0 : 1)
 226.265 +					.setListener(new AnimatorListenerAdapter() {
 226.266 +						@Override
 226.267 +						public void onAnimationEnd(Animator animation) {
 226.268 +							mLoginFormView.setVisibility(show ? View.GONE
 226.269 +									: View.VISIBLE);
 226.270 +						}
 226.271 +					});
 226.272 +		} else {
 226.273 +			// The ViewPropertyAnimator APIs are not available, so simply show
 226.274 +			// and hide the relevant UI components.
 226.275 +			mLoginStatusView.setVisibility(show ? View.VISIBLE : View.GONE);
 226.276 +			mLoginFormView.setVisibility(show ? View.GONE : View.VISIBLE);
 226.277 +		}
 226.278 +	}
 226.279 +
 226.280 +	
 226.281 +	protected enum LoginResult {
 226.282 +		 MalformedURLException, 
 226.283 +		 GeneralSecurityException, 
 226.284 +		 UnkonwnException, 
 226.285 +		 WrongCredentials, 
 226.286 +		 InvalidResponse, 
 226.287 +		 WrongUrl, 
 226.288 +		 ConnectionRefused, 
 226.289 +		 Success_Calendar, 
 226.290 +		 Success_Collection, 
 226.291 +		 Account_Already_In_Use
 226.292 +	}
 226.293 +	
 226.294 +	
 226.295 +	/**
 226.296 +	 * Represents an asynchronous login/registration task used to authenticate
 226.297 +	 * the user.
 226.298 +	 */
 226.299 +	public class UserLoginTask extends AsyncTask<Void, Void, LoginResult> {
 226.300 +
 226.301 +		@Override
 226.302 +		protected LoginResult doInBackground(Void... params) {
 226.303 +
 226.304 +			TestConnectionResult result = null;
 226.305 +			
 226.306 +			try {
 226.307 +				CaldavFacade facade = new CaldavFacade(mUser, mPassword, mURL);
 226.308 +				String version = "";
 226.309 +				try {
 226.310 +					version = mContext.getPackageManager().getPackageInfo(mContext.getPackageName(), 0).versionName;
 226.311 +				} catch (NameNotFoundException e) {
 226.312 +					version = "unknown";
 226.313 +					e.printStackTrace();
 226.314 +				}
 226.315 +				facade.setVersion(version);
 226.316 +				result = facade.testConnection();
 226.317 +				Log.i(TAG, "testConnection status="+result);
 226.318 +			} catch (HttpHostConnectException e) {
 226.319 +				Log.w(TAG,"testConnection", e);
 226.320 +				return LoginResult.ConnectionRefused;
 226.321 +			} catch (MalformedURLException e) {				
 226.322 +				Log.w(TAG,"testConnection", e);
 226.323 +				return LoginResult.MalformedURLException;
 226.324 +			} catch (UnsupportedEncodingException e) {
 226.325 +				Log.w(TAG,"testConnection", e);
 226.326 +				return LoginResult.UnkonwnException;
 226.327 +			} catch (ParserConfigurationException e) {
 226.328 +				Log.w(TAG,"testConnection", e);
 226.329 +				return LoginResult.UnkonwnException;
 226.330 +			} catch (SAXException e) {
 226.331 +				Log.w(TAG,"testConnection", e);
 226.332 +				return LoginResult.InvalidResponse;
 226.333 +			} catch (IOException e) {
 226.334 +				Log.w(TAG,"testConnection", e);
 226.335 +				return LoginResult.UnkonwnException;
 226.336 +			} catch (URISyntaxException e) {
 226.337 +				Log.w(TAG,"testConnection", e);
 226.338 +				return LoginResult.MalformedURLException;
 226.339 +			}
 226.340 +
 226.341 +			if (result == null) {
 226.342 +				return LoginResult.UnkonwnException;
 226.343 +			}
 226.344 +			
 226.345 +			switch (result) {
 226.346 +			
 226.347 +			case SUCCESS:
 226.348 +				boolean OldAccount = false;
 226.349 +				LoginResult Result = LoginResult.Success_Calendar; 
 226.350 +
 226.351 +				if (OldAccount) {
 226.352 +					final Account account = new Account(mUser, ACCOUNT_TYPE);			
 226.353 +					if (mAccountManager.addAccountExplicitly(account, mPassword, null)) {
 226.354 +						Log.v(TAG,"new account created");
 226.355 +						mAccountManager.setUserData(account, USER_DATA_URL_KEY, mURL);
 226.356 +					} else {
 226.357 +						Log.v(TAG,"no new account created");
 226.358 +						Result = LoginResult.Account_Already_In_Use;
 226.359 +					}
 226.360 +				} else {
 226.361 +					final Account account; 
 226.362 +					if (mAccountname.equals("")) {
 226.363 +						account = new Account(mUser + ACCOUNT_NAME_SPLITTER + mURL, ACCOUNT_TYPE);
 226.364 +					} else {
 226.365 +						account = new Account(mAccountname, ACCOUNT_TYPE);
 226.366 +					}
 226.367 +					if (mAccountManager.addAccountExplicitly(account, mPassword, null)) {
 226.368 +						Log.v(TAG,"new account created");
 226.369 +						mAccountManager.setUserData(account, USER_DATA_URL_KEY, mURL);
 226.370 +						mAccountManager.setUserData(account, USER_DATA_USERNAME, mUser);
 226.371 +						mAccountManager.setUserData(account, USER_DATA_VERSION, CURRENT_USER_DATA_VERSION);
 226.372 +					} else {
 226.373 +						Log.v(TAG,"no new account created");
 226.374 +						Result = LoginResult.Account_Already_In_Use;
 226.375 +					}
 226.376 +				}
 226.377 +			
 226.378 +				return Result;
 226.379 +
 226.380 +			case WRONG_CREDENTIAL:
 226.381 +				return LoginResult.WrongCredentials;
 226.382 +				
 226.383 +			case WRONG_SERVER_STATUS:
 226.384 +				return LoginResult.InvalidResponse;
 226.385 +				
 226.386 +			case WRONG_URL:
 226.387 +				return LoginResult.WrongUrl;
 226.388 +				
 226.389 +			case WRONG_ANSWER:
 226.390 +				return LoginResult.InvalidResponse;
 226.391 +				
 226.392 +			default:
 226.393 +				return LoginResult.UnkonwnException;
 226.394 +				
 226.395 +			}
 226.396 +			
 226.397 +		}
 226.398 +		
 226.399 +
 226.400 +		@Override
 226.401 +		protected void onPostExecute(final LoginResult result) {
 226.402 +			mAuthTask = null;
 226.403 +			showProgress(false);
 226.404 +
 226.405 +			int duration = Toast.LENGTH_SHORT;
 226.406 +			Toast toast = null;
 226.407 +			
 226.408 +			switch (result) {
 226.409 +				case Success_Calendar:
 226.410 +					toast = Toast.makeText(getApplicationContext(), R.string.success_calendar, duration);
 226.411 +					toast.show();
 226.412 +					finish();
 226.413 +					break;
 226.414 +					
 226.415 +				case Success_Collection:
 226.416 +					toast = Toast.makeText(getApplicationContext(), R.string.success_collection, duration);
 226.417 +					toast.show();
 226.418 +					finish();
 226.419 +					break;
 226.420 +					
 226.421 +				case MalformedURLException:
 226.422 +					
 226.423 +					toast = Toast.makeText(getApplicationContext(), R.string.error_incorrect_url_format, duration);
 226.424 +					toast.show();
 226.425 +					mURLView.setError(getString(R.string.error_incorrect_url_format));
 226.426 +					mURLView.requestFocus();
 226.427 +					break;
 226.428 +				case InvalidResponse:
 226.429 +					toast =  Toast.makeText(getApplicationContext(), R.string.error_invalid_server_answer, duration);
 226.430 +					toast.show();
 226.431 +					mURLView.setError(getString(R.string.error_invalid_server_answer));
 226.432 +					mURLView.requestFocus();
 226.433 +					break;
 226.434 +				case WrongUrl:
 226.435 +					toast =  Toast.makeText(getApplicationContext(), R.string.error_wrong_url, duration);
 226.436 +					toast.show();
 226.437 +					mURLView.setError(getString(R.string.error_wrong_url));
 226.438 +					mURLView.requestFocus();
 226.439 +					break;
 226.440 +					
 226.441 +				case WrongCredentials:
 226.442 +					mPasswordView.setError(getString(R.string.error_incorrect_password));
 226.443 +					mPasswordView.requestFocus();
 226.444 +					break;
 226.445 +					
 226.446 +				case ConnectionRefused:
 226.447 +					toast =  Toast.makeText(getApplicationContext(), R.string.error_connection_refused, duration);
 226.448 +					toast.show();
 226.449 +					mURLView.setError(getString(R.string.error_connection_refused));
 226.450 +					mURLView.requestFocus();
 226.451 +					break;
 226.452 +				case Account_Already_In_Use:
 226.453 +					toast =  Toast.makeText(getApplicationContext(), R.string.error_account_already_in_use, duration);
 226.454 +					toast.show();
 226.455 +					mURLView.setError(getString(R.string.error_account_already_in_use));
 226.456 +					mURLView.requestFocus();
 226.457 +					break;
 226.458 +				default:
 226.459 +					toast =  Toast.makeText(getApplicationContext(), R.string.error_unkown_error, duration);
 226.460 +					toast.show();
 226.461 +					mURLView.setError(getString(R.string.error_unkown_error));
 226.462 +					mURLView.requestFocus();
 226.463 +					break;
 226.464 +				}
 226.465 +				
 226.466 +				
 226.467 +				
 226.468 +			
 226.469 +		}
 226.470 +
 226.471 +		@Override
 226.472 +		protected void onCancelled() {
 226.473 +			mAuthTask = null;
 226.474 +			showProgress(false);
 226.475 +		}
 226.476 +	}
 226.477 +}
   227.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   227.2 +++ b/src/org/gege/caldavsyncadapter/caldav/CaldavFacade.java	Tue Feb 10 18:12:00 2015 +0100
   227.3 @@ -0,0 +1,866 @@
   227.4 +/**
   227.5 + * Copyright (c) 2012-2013, Gerald Garcia, David Wiesner, Timo Berger
   227.6 + * 
   227.7 + * This file is part of Andoid Caldav Sync Adapter Free.
   227.8 + *
   227.9 + * Andoid Caldav Sync Adapter Free is free software: you can redistribute 
  227.10 + * it and/or modify it under the terms of the GNU General Public License 
  227.11 + * as published by the Free Software Foundation, either version 3 of the 
  227.12 + * License, or at your option any later version.
  227.13 + *
  227.14 + * Andoid Caldav Sync Adapter Free is distributed in the hope that 
  227.15 + * it will be useful, but WITHOUT ANY WARRANTY; without even the implied 
  227.16 + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  227.17 + * GNU General Public License for more details.
  227.18 + *
  227.19 + * You should have received a copy of the GNU General Public License
  227.20 + * along with Andoid Caldav Sync Adapter Free.  
  227.21 + * If not, see <http://www.gnu.org/licenses/>.
  227.22 + * 
  227.23 + */
  227.24 +
  227.25 +package org.gege.caldavsyncadapter.caldav;
  227.26 +
  227.27 +import java.io.BufferedReader;
  227.28 +import java.io.ByteArrayInputStream;
  227.29 +import java.io.FileNotFoundException;
  227.30 +import java.io.IOException;
  227.31 +import java.io.InputStream;
  227.32 +import java.io.InputStreamReader;
  227.33 +import java.io.UnsupportedEncodingException;
  227.34 +import java.net.MalformedURLException;
  227.35 +import java.net.SocketException;
  227.36 +import java.net.URI;
  227.37 +import java.net.URISyntaxException;
  227.38 +import java.net.URL;
  227.39 +import java.util.ArrayList;
  227.40 +import java.util.List;
  227.41 +
  227.42 +import javax.xml.parsers.DocumentBuilder;
  227.43 +import javax.xml.parsers.DocumentBuilderFactory;
  227.44 +import javax.xml.parsers.ParserConfigurationException;
  227.45 +import javax.xml.parsers.SAXParser;
  227.46 +import javax.xml.parsers.SAXParserFactory;
  227.47 +
  227.48 +import org.apache.http.HttpException;
  227.49 +import org.apache.http.HttpHost;
  227.50 +import org.apache.http.HttpRequest;
  227.51 +import org.apache.http.HttpRequestInterceptor;
  227.52 +import org.apache.http.HttpResponse;
  227.53 +import org.apache.http.HttpVersion;
  227.54 +import org.apache.http.auth.AuthScope;
  227.55 +import org.apache.http.auth.AuthState;
  227.56 +import org.apache.http.auth.AuthenticationException;
  227.57 +import org.apache.http.auth.UsernamePasswordCredentials;
  227.58 +import org.apache.http.client.ClientProtocolException;
  227.59 +import org.apache.http.client.CredentialsProvider;
  227.60 +import org.apache.http.client.HttpClient;
  227.61 +import org.apache.http.client.methods.HttpDelete;
  227.62 +import org.apache.http.client.methods.HttpGet;
  227.63 +import org.apache.http.client.methods.HttpPut;
  227.64 +import org.apache.http.client.protocol.ClientContext;
  227.65 +import org.apache.http.conn.HttpHostConnectException;
  227.66 +import org.apache.http.conn.params.ConnManagerPNames;
  227.67 +import org.apache.http.conn.params.ConnPerRouteBean;
  227.68 +import org.apache.http.conn.scheme.PlainSocketFactory;
  227.69 +import org.apache.http.conn.scheme.Scheme;
  227.70 +import org.apache.http.conn.scheme.SchemeRegistry;
  227.71 +import org.apache.http.conn.ssl.SSLSocketFactory;
  227.72 +import org.apache.http.entity.StringEntity;
  227.73 +import org.apache.http.impl.client.AbstractHttpClient;
  227.74 +import org.apache.http.impl.client.DefaultHttpClient;
  227.75 +import org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager;
  227.76 +import org.apache.http.params.BasicHttpParams;
  227.77 +import org.apache.http.params.CoreProtocolPNames;
  227.78 +import org.apache.http.params.HttpParams;
  227.79 +import org.apache.http.params.HttpProtocolParams;
  227.80 +import org.apache.http.protocol.BasicHttpContext;
  227.81 +import org.apache.http.protocol.HttpContext;
  227.82 +import org.gege.caldavsyncadapter.BuildConfig;
  227.83 +import org.gege.caldavsyncadapter.caldav.entities.DavCalendar;
  227.84 +import org.gege.caldavsyncadapter.caldav.entities.DavCalendar.CalendarSource;
  227.85 +import org.gege.caldavsyncadapter.caldav.entities.CalendarEvent;
  227.86 +import org.gege.caldavsyncadapter.caldav.entities.CalendarList;
  227.87 +import org.gege.caldavsyncadapter.caldav.http.HttpPropFind;
  227.88 +import org.gege.caldavsyncadapter.caldav.http.HttpReport;
  227.89 +import org.gege.caldavsyncadapter.caldav.xml.CalendarHomeHandler;
  227.90 +import org.gege.caldavsyncadapter.caldav.xml.CalendarsHandler;
  227.91 +import org.gege.caldavsyncadapter.caldav.xml.ServerInfoHandler;
  227.92 +import org.gege.caldavsyncadapter.syncadapter.notifications.NotificationsHelper;
  227.93 +import org.w3c.dom.Document;
  227.94 +import org.w3c.dom.Element;
  227.95 +import org.w3c.dom.Node;
  227.96 +import org.w3c.dom.NodeList;
  227.97 +import org.xml.sax.ContentHandler;
  227.98 +import org.xml.sax.InputSource;
  227.99 +import org.xml.sax.SAXException;
 227.100 +import org.xml.sax.XMLReader;
 227.101 +
 227.102 +import android.accounts.Account;
 227.103 +import android.content.ContentProviderClient;
 227.104 +import android.content.Context;
 227.105 +import android.util.Log;
 227.106 +
 227.107 +public class CaldavFacade {
 227.108 +	private static final String TAG = "CaldavFacade";
 227.109 +
 227.110 +	private final static String XML_VERSION = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
 227.111 +
 227.112 +	private String USER_AGENT = "CalDAV Sync Adapter (Android) https://github.com/gggard/AndroidCaldavSyncAdapater";
 227.113 +	private String VERSION = ""; 
 227.114 +
 227.115 +	private static HttpClient httpClient;
 227.116 +	private HttpContext mContext = null;
 227.117 +	private AuthState mLastAuthState = null;
 227.118 +	private AuthScope mLastAuthScope = null;
 227.119 +	
 227.120 +	private boolean trustAll = true;
 227.121 +
 227.122 +	private URL url;
 227.123 +
 227.124 +	private static HttpHost targetHost;
 227.125 +	
 227.126 +	private int lastStatusCode;
 227.127 +	private String lastETag;
 227.128 +	private String lastDav;
 227.129 +
 227.130 +	private String mstrcHeaderIfMatch = "If-Match";
 227.131 +	private String mstrcHeaderIfNoneMatch = "If-None-Match";
 227.132 +	
 227.133 +	private Account mAccount = null;
 227.134 +	private ContentProviderClient mProvider;
 227.135 +	
 227.136 +	protected HttpClient getHttpClient() {
 227.137 +
 227.138 +		HttpParams params = new BasicHttpParams();
 227.139 +		params.setParameter(ConnManagerPNames.MAX_TOTAL_CONNECTIONS, 30);
 227.140 +		params.setParameter(ConnManagerPNames.MAX_CONNECTIONS_PER_ROUTE, new ConnPerRouteBean(30));
 227.141 +		params.setParameter(HttpProtocolParams.USE_EXPECT_CONTINUE, false);
 227.142 +		HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
 227.143 +
 227.144 +		SchemeRegistry registry = new SchemeRegistry();
 227.145 +		registry.register(new Scheme("http", new PlainSocketFactory(), 80));
 227.146 +		registry.register(new Scheme("https", (trustAll ? EasySSLSocketFactory.getSocketFactory() : SSLSocketFactory.getSocketFactory()), 443));
 227.147 +		DefaultHttpClient client = new DefaultHttpClient(new ThreadSafeClientConnManager(params, registry), params);
 227.148 +		
 227.149 +		return client;
 227.150 +	}
 227.151 +
 227.152 +	public CaldavFacade(String mUser, String mPassword, String mURL) throws MalformedURLException {
 227.153 +		url = new URL(mURL);
 227.154 +
 227.155 +		httpClient = getHttpClient();
 227.156 +		UsernamePasswordCredentials upc = new UsernamePasswordCredentials(mUser, mPassword);
 227.157 +
 227.158 +		AuthScope as = null;
 227.159 +		as = new AuthScope(url.getHost(), -1);
 227.160 +		((AbstractHttpClient) httpClient).getCredentialsProvider().setCredentials(as, upc);
 227.161 +		
 227.162 +		mContext = new BasicHttpContext();
 227.163 +		CredentialsProvider credProvider = ((AbstractHttpClient) httpClient).getCredentialsProvider();
 227.164 +		mContext.setAttribute(ClientContext.CREDS_PROVIDER, credProvider);
 227.165 +				
 227.166 +		//http://dlinsin.blogspot.de/2009/08/http-basic-authentication-with-android.html
 227.167 +		((AbstractHttpClient) httpClient).addRequestInterceptor(preemptiveAuth, 0);
 227.168 +
 227.169 +		String proto = "http";
 227.170 +		int port = 80;
 227.171 +
 227.172 +		if (url.getProtocol().equalsIgnoreCase("https")) {
 227.173 +			proto = "https";
 227.174 +			if (url.getPort() == -1)
 227.175 +				port = 443;
 227.176 +			else
 227.177 +				port = url.getPort();
 227.178 +		}
 227.179 +
 227.180 +		if (url.getProtocol().equalsIgnoreCase("http")) {
 227.181 +			proto = "http";
 227.182 +			if (url.getPort() == -1)
 227.183 +				port = 80;
 227.184 +			else
 227.185 +				port = url.getPort();
 227.186 +		}
 227.187 +		targetHost = new HttpHost(url.getHost(), port, proto);
 227.188 +	}
 227.189 +	
 227.190 +	//http://dlinsin.blogspot.de/2009/08/http-basic-authentication-with-android.html
 227.191 +	HttpRequestInterceptor preemptiveAuth = new HttpRequestInterceptor() {
 227.192 +		@Override
 227.193 +	    public void process(final HttpRequest request, final HttpContext context) throws HttpException, IOException {
 227.194 +	        AuthState authState = (AuthState) context.getAttribute(ClientContext.TARGET_AUTH_STATE);
 227.195 +
 227.196 +	        if (authState.getAuthScheme() == null) {
 227.197 +	        	if (mLastAuthState != null) {
 227.198 +	        		Log.d(TAG, "LastAuthState: restored with user " + mLastAuthState.getCredentials().getUserPrincipal().getName());
 227.199 +	        		authState.setAuthScheme(mLastAuthState.getAuthScheme());
 227.200 +	        		authState.setCredentials(mLastAuthState.getCredentials());
 227.201 +	        	} else {
 227.202 +	        		Log.d(TAG, "LastAuthState: nothing to do");
 227.203 +	        	}
 227.204 +	        	if (mLastAuthScope != null) {
 227.205 +	        		authState.setAuthScope(mLastAuthScope);
 227.206 +	        		Log.d(TAG, "LastAuthScope: restored");
 227.207 +	        	} else {
 227.208 +	        		Log.d(TAG, "LastAuthScope: nothing to do");
 227.209 +	        	}
 227.210 +	        } else {
 227.211 +	        	//AuthState and AuthScope have to be saved separate because of the AuthScope within AuthState gets lost, so we save it in a separate var.
 227.212 +	        	mLastAuthState = authState;
 227.213 +	        	Log.d(TAG, "LastAuthState: new with user " + mLastAuthState.getCredentials().getUserPrincipal().getName());
 227.214 +	        	if (authState.getAuthScope() != null) {
 227.215 +	        		mLastAuthScope = authState.getAuthScope();
 227.216 +	        		Log.d(TAG, "LastAuthScope: new");
 227.217 +	        	}
 227.218 +	        }
 227.219 +	    }
 227.220 +	};
 227.221 +
 227.222 +	public enum TestConnectionResult {
 227.223 +		WRONG_CREDENTIAL, 
 227.224 +		WRONG_URL, 
 227.225 +		WRONG_SERVER_STATUS, 
 227.226 +		WRONG_ANSWER, 
 227.227 +		SUCCESS
 227.228 +	}
 227.229 +
 227.230 +	/**
 227.231 +	 * TODO: testConnection should return only an instance of
 227.232 +	 * TestConnectionResult without throwing an exception or only throw checked
 227.233 +	 * exceptions so you don't have to check the result of this function AND
 227.234 +	 * handle the exceptions
 227.235 +	 * @param context 
 227.236 +	 * 
 227.237 +	 * @return {@link TestConnectionResult}
 227.238 +	 * @throws HttpHostConnectException
 227.239 +	 * @throws IOException
 227.240 +	 * @throws URISyntaxException
 227.241 +	 * @throws ParserConfigurationException
 227.242 +	 * @throws SAXException
 227.243 +	 */
 227.244 +	public TestConnectionResult testConnection() throws HttpHostConnectException, IOException, URISyntaxException, ParserConfigurationException, SAXException {
 227.245 +		Log.d(TAG, "start testConnection ");
 227.246 +		try {
 227.247 +			List<DavCalendar> calendars = new ArrayList<DavCalendar>();
 227.248 +			calendars = forceGetCalendarsFromUri(null, url.toURI());
 227.249 +			if (calendars.size() != 0) {
 227.250 +				return TestConnectionResult.SUCCESS;
 227.251 +			}
 227.252 +
 227.253 +			URI userPrincipal = getUserPrincipal();
 227.254 +			List<URI> calendarSets = getCalendarHomes(userPrincipal);
 227.255 +			for (URI calendarSet : calendarSets) {
 227.256 +				List<DavCalendar> calendarSetCalendars = getCalendarsFromSet(calendarSet);
 227.257 +				calendars.addAll(calendarSetCalendars);
 227.258 +			}
 227.259 +			if (calendarSets.size() == 0) {
 227.260 +				return TestConnectionResult.WRONG_ANSWER;
 227.261 +			}
 227.262 +		} catch (FileNotFoundException e) {
 227.263 +			return TestConnectionResult.WRONG_URL;
 227.264 +		} catch (SocketException e) {
 227.265 +			return TestConnectionResult.WRONG_URL;
 227.266 +		} catch (AuthenticationException e) {
 227.267 +			return TestConnectionResult.WRONG_CREDENTIAL;
 227.268 +		} catch (ClientProtocolException e) {
 227.269 +			return TestConnectionResult.WRONG_SERVER_STATUS;
 227.270 +		} catch (CaldavProtocolException e) {
 227.271 +			return TestConnectionResult.WRONG_ANSWER;
 227.272 +		}
 227.273 +		return TestConnectionResult.SUCCESS;
 227.274 +	}
 227.275 +
 227.276 +	/**
 227.277 +	 * @param context May be null if no notification is needed
 227.278 +	 * @param uri
 227.279 +	 * @return
 227.280 +	 * @throws AuthenticationException
 227.281 +	 * @throws FileNotFoundException
 227.282 +	 */
 227.283 +	private List<DavCalendar> forceGetCalendarsFromUri(Context context, URI uri) throws AuthenticationException, FileNotFoundException {
 227.284 +		List<DavCalendar> calendars = new ArrayList<DavCalendar>();
 227.285 +		Exception exception = null;
 227.286 +		try {
 227.287 +			calendars = getCalendarsFromSet(uri);
 227.288 +		} catch (ClientProtocolException e) {
 227.289 +			if (context != null) {
 227.290 +				NotificationsHelper.signalSyncErrors(context, "Caldav sync problem", e.getMessage());
 227.291 +				//NotificationsHelper.getCurrentSyncLog().addException(e);
 227.292 +			}
 227.293 +			exception = e;
 227.294 +		} catch (FileNotFoundException e) {
 227.295 +			if (context != null) {
 227.296 +				NotificationsHelper.signalSyncErrors(context, "Caldav sync problem", e.getMessage());
 227.297 +				//NotificationsHelper.getCurrentSyncLog().addException(e);
 227.298 +			}
 227.299 +			throw e;
 227.300 +		} catch (IOException e) {
 227.301 +			if (context != null) {
 227.302 +				NotificationsHelper.signalSyncErrors(context, "Caldav sync problem", e.getMessage());
 227.303 +				//NotificationsHelper.getCurrentSyncLog().addException(e);
 227.304 +			}
 227.305 +			exception = e;
 227.306 +		} catch (CaldavProtocolException e) {
 227.307 +
 227.308 +			if (context != null) {
 227.309 +				NotificationsHelper.signalSyncErrors(context, "Caldav sync problem", e.getMessage());
 227.310 +				//NotificationsHelper.getCurrentSyncLog().addException(e);
 227.311 +			}
 227.312 +			exception = e;
 227.313 +		}
 227.314 +		if (exception != null && BuildConfig.DEBUG) {
 227.315 +			Log.e(TAG, "Force get calendars from '" + uri.toString()
 227.316 +					+ "' failed " + exception.getClass().getCanonicalName()
 227.317 +					+ ": " + exception.getMessage());
 227.318 +		}
 227.319 +		return calendars;
 227.320 +	}
 227.321 +
 227.322 +	private final static String PROPFIND_USER_PRINCIPAL = XML_VERSION +
 227.323 +			"<d:propfind xmlns:d=\"DAV:\">" +
 227.324 +				"<d:prop>" +
 227.325 +					"<d:current-user-principal />" +
 227.326 +					"<d:principal-URL />" +
 227.327 +				"</d:prop>" +
 227.328 +			"</d:propfind>";
 227.329 +	
 227.330 +	private URI getUserPrincipal() throws SocketException,
 227.331 +			ClientProtocolException, AuthenticationException,
 227.332 +			FileNotFoundException, IOException, CaldavProtocolException,
 227.333 +			URISyntaxException {
 227.334 +		URI uri = this.url.toURI();
 227.335 +		HttpPropFind request = createPropFindRequest(uri,
 227.336 +				PROPFIND_USER_PRINCIPAL, 0);
 227.337 +		HttpResponse response = httpClient.execute(targetHost, request, mContext);
 227.338 +		checkStatus(response);
 227.339 +		ServerInfoHandler serverInfoHandler = new ServerInfoHandler();
 227.340 +		parseXML(response, serverInfoHandler);
 227.341 +		String userPrincipal = null;
 227.342 +		if (serverInfoHandler.currentUserPrincipal != null) {
 227.343 +			userPrincipal = serverInfoHandler.currentUserPrincipal;
 227.344 +		} else if (serverInfoHandler.principalUrl != null) {
 227.345 +			userPrincipal = serverInfoHandler.principalUrl;
 227.346 +		} else {
 227.347 +			throw new CaldavProtocolException("no principal url found");
 227.348 +		}
 227.349 +		try {
 227.350 +			URI userPrincipalUri = new URI(userPrincipal);
 227.351 +			userPrincipalUri = uri.resolve(userPrincipalUri);
 227.352 +			if (BuildConfig.DEBUG) {
 227.353 +				Log.d(TAG,
 227.354 +						"Found userPrincipal: " + userPrincipalUri.toString());
 227.355 +			}
 227.356 +			return userPrincipalUri;
 227.357 +		} catch (URISyntaxException e) {
 227.358 +			throw new CaldavProtocolException("principal url '" + userPrincipal
 227.359 +					+ "' malformed");
 227.360 +		}
 227.361 +	}
 227.362 +
 227.363 +	private final static String PROPFIND_CALENDAR_HOME_SET = XML_VERSION
 227.364 +			+ "<d:propfind xmlns:d=\"DAV:\" xmlns:c=\"urn:ietf:params:xml:ns:caldav\"><d:prop><c:calendar-home-set/></d:prop></d:propfind>";
 227.365 +
 227.366 +	private List<URI> getCalendarHomes(URI userPrincipal)
 227.367 +			throws ClientProtocolException, IOException,
 227.368 +			AuthenticationException, FileNotFoundException,
 227.369 +			CaldavProtocolException {
 227.370 +		HttpPropFind request = createPropFindRequest(userPrincipal,
 227.371 +				PROPFIND_CALENDAR_HOME_SET, 0);
 227.372 +		HttpResponse response = httpClient.execute(targetHost, request, mContext);
 227.373 +		checkStatus(response);
 227.374 +		CalendarHomeHandler calendarHomeHandler = new CalendarHomeHandler(
 227.375 +				userPrincipal);
 227.376 +		parseXML(response, calendarHomeHandler);
 227.377 +		List<URI> result = calendarHomeHandler.calendarHomeSet;
 227.378 +		if (BuildConfig.DEBUG) {
 227.379 +			Log.d(TAG, result.size() + " calendar-home-set found in "
 227.380 +					+ userPrincipal.toString());
 227.381 +		}
 227.382 +		return result;
 227.383 +	}
 227.384 +
 227.385 +	private final static String PROPFIND_CALENDER_LIST = XML_VERSION
 227.386 +			+ "<d:propfind xmlns:d=\"DAV:\" xmlns:c=\"urn:ietf:params:xml:ns:caldav\" xmlns:cs=\"http://calendarserver.org/ns/\" xmlns:ic=\"http://apple.com/ns/ical/\">"
 227.387 +			+ "<d:prop><d:displayname /><d:resourcetype />"
 227.388 +			// +
 227.389 +			// "<d:supported-method-set /><d:supported-report-set /><c:supported-calendar-component-set />"
 227.390 +			// +
 227.391 +			// "<c:calendar-description /><c:calendar-timezone /><c:calendar-free-busy-set />
 227.392 +			+ "<ic:calendar-color />"
 227.393 +			//<ic:calendar-order />"
 227.394 +			+ "<cs:getctag /></d:prop></d:propfind>";
 227.395 +
 227.396 +	
 227.397 +	private List<DavCalendar> getCalendarsFromSet(URI calendarSet)
 227.398 +			throws ClientProtocolException, IOException,
 227.399 +			CaldavProtocolException, AuthenticationException,
 227.400 +			FileNotFoundException {
 227.401 +		HttpPropFind request = createPropFindRequest(calendarSet, PROPFIND_CALENDER_LIST, 1);
 227.402 +		HttpResponse response = httpClient.execute(targetHost, request, mContext);
 227.403 +		checkStatus(response);
 227.404 +		CalendarsHandler calendarsHandler = new CalendarsHandler(calendarSet);
 227.405 +		parseXML(response, calendarsHandler);
 227.406 +		List<DavCalendar> result = calendarsHandler.calendars;
 227.407 +		if (BuildConfig.DEBUG) {
 227.408 +			Log.i(TAG,
 227.409 +					result.size() + " calendars found in set "
 227.410 +							+ calendarSet.toString());
 227.411 +		}
 227.412 +		return result;
 227.413 +	}
 227.414 +	
 227.415 +	/**
 227.416 +	 * Discover CalDAV Calendars Mentioned in
 227.417 +	 * http://tools.ietf.org/html/draft-daboo-srv-caldav-10#section-6 and
 227.418 +	 * http://code.google.com/p/sabredav/wiki/BuildingACalDAVClient#Discovery
 227.419 +	 * <ol>
 227.420 +	 * <li>PROPFIND calendar-home-set on url
 227.421 +	 * <li>PROPFIND DAV:current-user-principal or principal-URL on url
 227.422 +	 * <li>PROPFIND calendar-home-set on current-user-principal or principal-URL
 227.423 +	 * <li>PROPFIND displayname, resourcetype, getctag on CalendarHomeSets
 227.424 +	 * </ol>
 227.425 +	 * @param context 
 227.426 +	 * 
 227.427 +	 * @return List of {@link DavCalendar}
 227.428 +	 * @throws ClientProtocolException
 227.429 +	 *             http protocol error
 227.430 +	 * @throws IOException
 227.431 +	 *             Connection lost
 227.432 +	 * @throws URISyntaxException
 227.433 +	 *             url in Constructor malformed
 227.434 +	 * @throws CaldavProtocolException
 227.435 +	 *             caldav protocol error
 227.436 +	 */
 227.437 +	//public Iterable<Calendar> getCalendarList(Context context) throws ClientProtocolException,
 227.438 +	public CalendarList getCalendarList(Context context) throws ClientProtocolException,
 227.439 +			IOException, URISyntaxException, ParserConfigurationException,
 227.440 +			CaldavProtocolException {
 227.441 +		try {
 227.442 +			CalendarList Result = new CalendarList(this.mAccount, this.mProvider, CalendarSource.CalDAV, this.url.toString());
 227.443 +			List<DavCalendar> calendars = new ArrayList<DavCalendar>();
 227.444 +			
 227.445 +			calendars = forceGetCalendarsFromUri(context, this.url.toURI());
 227.446 +			
 227.447 +			if (calendars.size() == 0) {
 227.448 +				// no calendars found, try the home-set
 227.449 +				URI userPrincipal = getUserPrincipal();
 227.450 +				List<URI> calendarSets = getCalendarHomes(userPrincipal);
 227.451 +				for (URI calendarSet : calendarSets) {
 227.452 +					List<DavCalendar> calendarSetCalendars = getCalendarsFromSet(calendarSet);
 227.453 +					calendars.addAll(calendarSetCalendars);
 227.454 +				}
 227.455 +			}
 227.456 +			for (DavCalendar cal : calendars) {
 227.457 +				Result.addCalendar(cal);
 227.458 +			}
 227.459 +			
 227.460 +			//return calendars;
 227.461 +			return Result;
 227.462 +		} catch (AuthenticationException e) {
 227.463 +			throw new IOException(e);
 227.464 +		}
 227.465 +	}
 227.466 +
 227.467 +	//public Iterable<CalendarEvent> getCalendarEvents(DavCalendar calendar)
 227.468 +	public ArrayList<CalendarEvent> getCalendarEvents(DavCalendar calendar)
 227.469 +			throws URISyntaxException, ClientProtocolException, IOException,
 227.470 +			ParserConfigurationException, SAXException {
 227.471 +
 227.472 +		ArrayList<CalendarEvent> calendarEventList = new ArrayList<CalendarEvent>();
 227.473 +
 227.474 +		String requestBody = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
 227.475 +				+ "<D:propfind xmlns:D=\"DAV:\">" + "<D:prop>" + "<D:getetag/>"
 227.476 +				+ "</D:prop>" + "</D:propfind>";
 227.477 +
 227.478 +		HttpPropFind request = null;
 227.479 +		
 227.480 +		String EventUri;
 227.481 +
 227.482 +		/*request = new HttpPropFind();
 227.483 +		request.setURI(calendar.getURI());
 227.484 +		request.setHeader("Host", targetHost.getHostName());
 227.485 +		request.setHeader("Depth", "1");
 227.486 +		request.setHeader("Content-Type", "application/xml;charset=\"UTF-8\"");
 227.487 +		
 227.488 +		try {
 227.489 +			request.setEntity(new StringEntity(requestBody, "UTF-8"));
 227.490 +		} catch (UnsupportedEncodingException e) {
 227.491 +			throw new AssertionError("UTF-8 is unknown");
 227.492 +		}*/
 227.493 +		request = this.createPropFindRequest(calendar.getURI(), requestBody, 1);
 227.494 +		
 227.495 +		Log.d(TAG, "Getting eTag by PROPFIND at " + request.getURI());
 227.496 +
 227.497 +		HttpResponse response = httpClient.execute(targetHost, request, mContext);
 227.498 +
 227.499 +		BufferedReader reader = new BufferedReader(new InputStreamReader(
 227.500 +				response.getEntity().getContent(), "UTF-8"));
 227.501 +
 227.502 +		String line;
 227.503 +		String body = "";
 227.504 +		do {
 227.505 +			line = reader.readLine();
 227.506 +			if (line != null)
 227.507 +				body += line;
 227.508 +		} while (line != null);
 227.509 +
 227.510 +		Log.d(TAG, "HttpResponse status=" + response.getStatusLine()
 227.511 +				+ " body= " + body);
 227.512 +
 227.513 +		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
 227.514 +		factory.setNamespaceAware(true);
 227.515 +		DocumentBuilder builder = factory.newDocumentBuilder();
 227.516 +		Document dom = builder.parse(new InputSource(new ByteArrayInputStream(
 227.517 +				body.getBytes("utf-8"))));
 227.518 +		Element root = dom.getDocumentElement();
 227.519 +		NodeList items = root.getElementsByTagNameNS("*", "getetag");
 227.520 +
 227.521 +		for (int i = 0; i < items.getLength(); i++) {
 227.522 +			CalendarEvent calendarEvent = new CalendarEvent(this.mAccount, this.mProvider);
 227.523 +
 227.524 +			Node node = items.item(i);
 227.525 +
 227.526 +			if (node.getTextContent().trim().length() == 0)
 227.527 +				continue; // not an event
 227.528 +
 227.529 +			calendarEvent.setETag(node.getTextContent().trim());
 227.530 +			//calendarEvent.calendarURL = this.url;
 227.531 +			calendarEvent.calendarURL = calendar.getURI().toURL();
 227.532 +
 227.533 +			node = node.getParentNode(); // prop
 227.534 +			node = node.getParentNode(); // propstat
 227.535 +			node = node.getParentNode(); // response
 227.536 +
 227.537 +			NodeList children = node.getChildNodes();
 227.538 +			for (int j = 0; j < children.getLength(); j++) {
 227.539 +				Node childNode = children.item(j);
 227.540 +				if ((childNode.getLocalName()!=null) && (childNode.getLocalName().equalsIgnoreCase("href"))) {
 227.541 +					EventUri = childNode.getTextContent().trim();
 227.542 +					//HINT: bugfix for zimbra calendar: replace("@", "%40")
 227.543 +					EventUri = EventUri.replace("@", "%40");
 227.544 +					calendarEvent.setUri(new URI(EventUri));
 227.545 +				}
 227.546 +			}
 227.547 +
 227.548 +			calendarEventList.add(calendarEvent);
 227.549 +
 227.550 +		}
 227.551 +
 227.552 +		return calendarEventList;
 227.553 +	}
 227.554 +
 227.555 +	private void parseXML(HttpResponse response, ContentHandler contentHandler)
 227.556 +			throws IOException, CaldavProtocolException {
 227.557 +		InputStream is = response.getEntity().getContent();
 227.558 +		/*BufferedReader bReader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
 227.559 +		String Content = "";
 227.560 +		String Line = bReader.readLine();
 227.561 +
 227.562 +		while (Line != null) {
 227.563 +			Content += Line;
 227.564 +			Line = bReader.readLine();
 227.565 +		}*/
 227.566 +		
 227.567 +		SAXParserFactory factory = SAXParserFactory.newInstance();
 227.568 +		try {
 227.569 +			SAXParser parser = factory.newSAXParser();
 227.570 +			XMLReader reader = parser.getXMLReader();
 227.571 +			reader.setContentHandler(contentHandler);
 227.572 +			reader.parse(new InputSource(is));
 227.573 +		} catch (ParserConfigurationException e) {
 227.574 +			throw new AssertionError("ParserConfigurationException "
 227.575 +					+ e.getMessage());
 227.576 +		} catch (IllegalStateException e) {
 227.577 +			throw new CaldavProtocolException(e.getMessage());
 227.578 +		} catch (SAXException e) {
 227.579 +			throw new CaldavProtocolException(e.getMessage());
 227.580 +		}
 227.581 +	}
 227.582 +
 227.583 +	private void checkStatus(HttpResponse response)
 227.584 +			throws AuthenticationException, FileNotFoundException,
 227.585 +			ClientProtocolException {
 227.586 +		final int statusCode = response.getStatusLine().getStatusCode();
 227.587 +		lastStatusCode = statusCode;
 227.588 +		if (response.containsHeader("ETag"))
 227.589 +			lastETag = response.getFirstHeader("ETag").getValue();
 227.590 +		else
 227.591 +			lastETag = "";
 227.592 +		if (response.containsHeader("DAV"))
 227.593 +			lastDav = response.getFirstHeader("DAV").getValue();
 227.594 +		else
 227.595 +			lastDav = "";
 227.596 +		
 227.597 +		switch (statusCode) {
 227.598 +		case 401:
 227.599 +			throw new AuthenticationException();
 227.600 +		case 404:
 227.601 +			throw new FileNotFoundException();
 227.602 +		case 409: //Conflict
 227.603 +		case 412:
 227.604 +		case 200:
 227.605 +		case 201:
 227.606 +		case 204:
 227.607 +		case 207:
 227.608 +			return;
 227.609 +		default:
 227.610 +			throw new ClientProtocolException("StatusCode: " + statusCode);
 227.611 +		}
 227.612 +	}
 227.613 +
 227.614 +	private HttpPropFind createPropFindRequest(URI uri, String data, int depth) {
 227.615 +		HttpPropFind request = new HttpPropFind();
 227.616 +
 227.617 +		request.setURI(uri);
 227.618 +		//request.setHeader("Host", targetHost.getHostName());
 227.619 +		request.setHeader("Host", targetHost.getHostName() + ":" + String.valueOf(targetHost.getPort()));
 227.620 +		request.setHeader("Depth", Integer.toString(depth));
 227.621 +		request.setHeader("Content-Type", "application/xml;charset=\"UTF-8\"");
 227.622 +		try {
 227.623 +			request.setEntity(new StringEntity(data, "UTF-8"));
 227.624 +		} catch (UnsupportedEncodingException e) {
 227.625 +			throw new AssertionError("UTF-8 is unknown");
 227.626 +		}
 227.627 +		return request;
 227.628 +	}
 227.629 +	
 227.630 +	private HttpDelete createDeleteRequest(URI uri) {
 227.631 +		HttpDelete request = new HttpDelete();
 227.632 +		request.setURI(uri);
 227.633 +		//request.setHeader("Host", targetHost.getHostName());
 227.634 +		request.setHeader("Host", targetHost.getHostName() + ":" + String.valueOf(targetHost.getPort()));
 227.635 +		request.setHeader("Content-Type", "application/xml;charset=\"UTF-8\"");
 227.636 +		return request;
 227.637 +	}
 227.638 +
 227.639 +	private HttpPut createPutRequest(URI uri, String data, int depth) {
 227.640 +		HttpPut request = new HttpPut();
 227.641 +		request.setURI(uri);
 227.642 +		//request.setHeader("Host", targetHost.getHostName());
 227.643 +		request.setHeader("Host", targetHost.getHostName() + ":" + String.valueOf(targetHost.getPort()));
 227.644 +		//request.setHeader("Content-Type", "application/xml;charset=\"UTF-8\"");
 227.645 +		request.setHeader("Content-Type", "text/calendar; charset=UTF-8");
 227.646 +		try {
 227.647 +			request.setEntity(new StringEntity(data, "UTF-8"));
 227.648 +			//request.setEntity(new StringEntity(data));
 227.649 +		} catch (UnsupportedEncodingException e) {
 227.650 +			throw new AssertionError("UTF-8 is unknown");
 227.651 +		}
 227.652 +		return request;
 227.653 +	}
 227.654 +	
 227.655 +	private static HttpReport createReportRequest(URI uri, String data, int depth) {
 227.656 +		HttpReport request = new HttpReport();
 227.657 +		request.setURI(uri);
 227.658 +		//request.setHeader("Host", targetHost.getHostName());
 227.659 +		request.setHeader("Host", targetHost.getHostName() + ":" + String.valueOf(targetHost.getPort()));
 227.660 +		request.setHeader("Depth", Integer.toString(depth));
 227.661 +		request.setHeader("Content-Type", "application/xml;charset=\"UTF-8\"");
 227.662 +		//request.setHeader("Content-Type", "text/xml;charset=\"UTF-8\"");
 227.663 +		try {
 227.664 +			request.setEntity(new StringEntity(data));
 227.665 +		} catch (UnsupportedEncodingException e) {
 227.666 +			throw new AssertionError("UTF-8 is unknown");
 227.667 +		}
 227.668 +		return request;
 227.669 +	}
 227.670 +	
 227.671 +	public static void fetchEvent_old(CalendarEvent calendarEvent)
 227.672 +			throws ClientProtocolException, IOException {
 227.673 +		HttpGet request = null;
 227.674 +
 227.675 +		request = new HttpGet();
 227.676 +		request.setURI(calendarEvent.getUri());
 227.677 +		request.setHeader("Host", targetHost.getHostName());
 227.678 +		request.setHeader("Content-Type", "application/xml;charset=\"UTF-8\"");
 227.679 +
 227.680 +		HttpResponse response = httpClient.execute(targetHost, request);
 227.681 +
 227.682 +		BufferedReader reader = new BufferedReader(new InputStreamReader(
 227.683 +				response.getEntity().getContent(), "UTF-8"));
 227.684 +
 227.685 +		String line;
 227.686 +		String body = "";
 227.687 +		do {
 227.688 +			line = reader.readLine();
 227.689 +			if (line != null)
 227.690 +				body += line + "\n";
 227.691 +		} while (line != null);
 227.692 +
 227.693 +		calendarEvent.setICSasString(body);
 227.694 +
 227.695 +		Log.d(TAG, "HttpResponse GET event status=" + response.getStatusLine()
 227.696 +				+ " body= " + body);
 227.697 +	}
 227.698 +	
 227.699 +	public static boolean getEvent(CalendarEvent calendarEvent) throws ClientProtocolException, IOException {
 227.700 +		boolean Result = false;
 227.701 +		HttpReport request = null;
 227.702 +
 227.703 +		//HINT: bugfix for google calendar: replace("@", "%40")
 227.704 +		String data = XML_VERSION +
 227.705 +				"<C:calendar-multiget xmlns:D=\"DAV:\" xmlns:C=\"urn:ietf:params:xml:ns:caldav\">" +
 227.706 +					"<D:prop>" +
 227.707 +						"<D:getetag />" +
 227.708 +						"<C:calendar-data />" +
 227.709 +					"</D:prop>" +
 227.710 +					"<D:href>" + calendarEvent.getUri().getRawPath().replace("@", "%40") + "</D:href>" +
 227.711 +				"</C:calendar-multiget>";
 227.712 +
 227.713 +		URI calendarURI = null;
 227.714 +		try {
 227.715 +			calendarURI = calendarEvent.calendarURL.toURI();
 227.716 +		} catch (URISyntaxException e) {
 227.717 +			e.printStackTrace();
 227.718 +		}
 227.719 +		//request = createReportRequest(calendarEvent.getUri(), data, 1);
 227.720 +		request = createReportRequest(calendarURI, data, 1);
 227.721 +
 227.722 +		HttpResponse response = httpClient.execute(targetHost, request);
 227.723 +
 227.724 +		BufferedReader reader = new BufferedReader(new InputStreamReader(
 227.725 +				response.getEntity().getContent(), "UTF-8"));
 227.726 +
 227.727 +		String line;
 227.728 +		String body = "";
 227.729 +		do {
 227.730 +			line = reader.readLine();
 227.731 +			if (line != null)
 227.732 +				body += line + "\n";
 227.733 +		} while (line != null);
 227.734 +
 227.735 +		if (calendarEvent.setICSasMultiStatus(body))
 227.736 +			Result = true;
 227.737 +
 227.738 +		return Result;
 227.739 +	}
 227.740 +	
 227.741 +		
 227.742 +	/**
 227.743 +	 * sends a update event request to the server 
 227.744 +	 * @param uri the full URI of the event on server side. example: http://caldav.example.com/principal/user/calendar/e6be67c6-eff0-44f8-a1a0-6c2cb1029944-caldavsyncadapter.ics
 227.745 +	 * @param data the full ical-data for the event
 227.746 +	 * @param ETag the ETAG of this event is send within the "If-Match" Parameter to tell the server only to update this version
 227.747 +	 * @return
 227.748 +	 */
 227.749 +	public boolean updateEvent(URI uri, String data, String ETag) {
 227.750 +		boolean Result = false;
 227.751 +		
 227.752 +		try {
 227.753 +			HttpPut request = createPutRequest(uri, data, 1);
 227.754 +			request.addHeader(mstrcHeaderIfMatch, ETag);
 227.755 +			HttpResponse response = httpClient.execute(targetHost, request, mContext);
 227.756 +			checkStatus(response);
 227.757 +			if ((lastStatusCode == 200) || (lastStatusCode == 201) || (lastStatusCode == 204)) {
 227.758 +				Result = true;
 227.759 +			} else if (lastStatusCode == 412) {
 227.760 +				//Precondition failed
 227.761 +				Result = false;
 227.762 +			} else if (lastStatusCode == 409) {
 227.763 +				//Conflict
 227.764 +				Result = false;
 227.765 +			} else {
 227.766 +				Log.w(TAG, "Unkown StatusCode during creation of an event");
 227.767 +			}
 227.768 +		} catch (ClientProtocolException e) {
 227.769 +			e.printStackTrace();
 227.770 +		} catch (IOException e) {
 227.771 +			e.printStackTrace();
 227.772 +		} catch (AuthenticationException e) {
 227.773 +			e.printStackTrace();
 227.774 +		}
 227.775 +		return Result;
 227.776 +	}
 227.777 +	
 227.778 +	/**
 227.779 +	 * sends a create event request to server
 227.780 +	 * @param uri the full URI of the new event on server side. example: http://caldav.example.com/principal/user/calendar/e6be67c6-eff0-44f8-a1a0-6c2cb1029944-caldavsyncadapter.ics
 227.781 +	 * @param data the full ical-data for the new event
 227.782 +	 * @return success of this function
 227.783 +	 */
 227.784 +	public boolean createEvent(URI uri, String data) {
 227.785 +		boolean Result = false;
 227.786 +		
 227.787 +		try {
 227.788 +			HttpPut request = createPutRequest(uri, data, 1);
 227.789 +			request.addHeader(mstrcHeaderIfNoneMatch, "*");
 227.790 +			HttpResponse response = httpClient.execute(targetHost, request, mContext);
 227.791 +			checkStatus(response);
 227.792 +			if (lastStatusCode == 201) {
 227.793 +				Result = true;
 227.794 +			} else {
 227.795 +				Log.w(TAG, "Unkown StatusCode during creation of an event");
 227.796 +			}
 227.797 +		} catch (ClientProtocolException e) {
 227.798 +			e.printStackTrace();
 227.799 +		} catch (IOException e) {
 227.800 +			e.printStackTrace();
 227.801 +		} catch (AuthenticationException e) {
 227.802 +			e.printStackTrace();
 227.803 +		}
 227.804 +		return Result;
 227.805 +	}
 227.806 +	
 227.807 +	/**
 227.808 +	 * sends a delete event request to the server
 227.809 +	 * @param calendarEventUri  the full URI of the event on server side. example: http://caldav.example.com/principal/user/calendar/e6be67c6-eff0-44f8-a1a0-6c2cb1029944-caldavsyncadapter.ics
 227.810 +	 * @param ETag the ETAG of this event is send within the "If-Match" Parameter to tell the server only to delete this version
 227.811 +	 * @return success of this function
 227.812 +	 */
 227.813 +	public boolean deleteEvent(URI calendarEventUri, String ETag) {
 227.814 +		boolean Result = false;
 227.815 +		
 227.816 +		try {
 227.817 +			HttpDelete request = createDeleteRequest(calendarEventUri);
 227.818 +			request.addHeader(mstrcHeaderIfMatch, ETag);
 227.819 +			HttpResponse response = httpClient.execute(targetHost, request, mContext);
 227.820 +			checkStatus(response);
 227.821 +			if ((lastStatusCode == 204) || (lastStatusCode == 200)) {
 227.822 +				Result = true;
 227.823 +			} else {
 227.824 +				Log.w(TAG, "Unkown StatusCode during deletion of an event");
 227.825 +			}
 227.826 +		} catch (ClientProtocolException e) {
 227.827 +			e.printStackTrace();
 227.828 +		} catch (IOException e) {
 227.829 +			if (lastStatusCode == 404) {
 227.830 +				//the event has already been deleted on server side. no action needed
 227.831 +				Result = true;
 227.832 +			} else {
 227.833 +				e.printStackTrace();
 227.834 +			}
 227.835 +		} catch (AuthenticationException e) {
 227.836 +			e.printStackTrace();
 227.837 +		}
 227.838 +		
 227.839 +		return Result;
 227.840 +	}
 227.841 +	
 227.842 +	/**
 227.843 +	 * returns the ETAG send by the last server response.
 227.844 +	 * @return the ETAG
 227.845 +	 */
 227.846 +	public String getLastETag() {
 227.847 +		return lastETag;
 227.848 +	}
 227.849 +	
 227.850 +	/**
 227.851 +	 * returns the DAV-Options send by the last server response.
 227.852 +	 * @return the DAV-Options
 227.853 +	 */
 227.854 +	public String getLastDav() {
 227.855 +		return lastDav;
 227.856 +	}
 227.857 +	
 227.858 +	public void setVersion(String version) {
 227.859 +		VERSION = version;
 227.860 +		((AbstractHttpClient) httpClient).getParams().setParameter(CoreProtocolPNames.USER_AGENT, this.USER_AGENT + " Version:" + VERSION);
 227.861 +	}
 227.862 +	
 227.863 +	public void setAccount(Account account) {
 227.864 +		this.mAccount = account;
 227.865 +	}
 227.866 +	public void setProvider(ContentProviderClient provider) {
 227.867 +		this.mProvider = provider;
 227.868 +	}
 227.869 +}
 227.870 \ No newline at end of file
   228.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   228.2 +++ b/src/org/gege/caldavsyncadapter/caldav/CaldavProtocolException.java	Tue Feb 10 18:12:00 2015 +0100
   228.3 @@ -0,0 +1,35 @@
   228.4 +/**
   228.5 + * Copyright (c) 2012-2013, Gerald Garcia
   228.6 + * 
   228.7 + * This file is part of Andoid Caldav Sync Adapter Free.
   228.8 + *
   228.9 + * Andoid Caldav Sync Adapter Free is free software: you can redistribute 
  228.10 + * it and/or modify it under the terms of the GNU General Public License 
  228.11 + * as published by the Free Software Foundation, either version 3 of the 
  228.12 + * License, or at your option any later version.
  228.13 + *
  228.14 + * Andoid Caldav Sync Adapter Free is distributed in the hope that 
  228.15 + * it will be useful, but WITHOUT ANY WARRANTY; without even the implied 
  228.16 + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  228.17 + * GNU General Public License for more details.
  228.18 + *
  228.19 + * You should have received a copy of the GNU General Public License
  228.20 + * along with Andoid Caldav Sync Adapter Free.  
  228.21 + * If not, see <http://www.gnu.org/licenses/>.
  228.22 + * 
  228.23 + */
  228.24 +
  228.25 +package org.gege.caldavsyncadapter.caldav;
  228.26 +
  228.27 +public class CaldavProtocolException extends Exception {
  228.28 +
  228.29 +	/**
  228.30 +	 * 
  228.31 +	 */
  228.32 +	private static final long serialVersionUID = -8237099919427898671L;
  228.33 +
  228.34 +	public CaldavProtocolException(String string) {
  228.35 +		super(string);
  228.36 +	}
  228.37 +
  228.38 +}
   229.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   229.2 +++ b/src/org/gege/caldavsyncadapter/caldav/CopyOfEasySSLSocketFactory.java	Tue Feb 10 18:12:00 2015 +0100
   229.3 @@ -0,0 +1,159 @@
   229.4 +/**
   229.5 + * Copyright (c) 2012-2013, Gerald Garcia
   229.6 + * 
   229.7 + * This file is part of Andoid Caldav Sync Adapter Free.
   229.8 + *
   229.9 + * Andoid Caldav Sync Adapter Free is free software: you can redistribute 
  229.10 + * it and/or modify it under the terms of the GNU General Public License 
  229.11 + * as published by the Free Software Foundation, either version 3 of the 
  229.12 + * License, or at your option any later version.
  229.13 + *
  229.14 + * Andoid Caldav Sync Adapter Free is distributed in the hope that 
  229.15 + * it will be useful, but WITHOUT ANY WARRANTY; without even the implied 
  229.16 + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  229.17 + * GNU General Public License for more details.
  229.18 + *
  229.19 + * You should have received a copy of the GNU General Public License
  229.20 + * along with Andoid Caldav Sync Adapter Free.  
  229.21 + * If not, see <http://www.gnu.org/licenses/>.
  229.22 + * 
  229.23 + */
  229.24 +
  229.25 +package org.gege.caldavsyncadapter.caldav;
  229.26 +
  229.27 +/*
  229.28 + * Licensed to the Apache Software Foundation (ASF) under one
  229.29 + * or more contributor license agreements.  See the NOTICE file
  229.30 + * distributed with this work for additional information
  229.31 + * regarding copyright ownership.  The ASF licenses this file
  229.32 + * to you under the Apache License, Version 2.0 (the
  229.33 + * "License"); you may not use this file except in compliance
  229.34 + * with the License.  You may obtain a copy of the License at
  229.35 + *
  229.36 + *   http://www.apache.org/licenses/LICENSE-2.0
  229.37 + *
  229.38 + * Unless required by applicable law or agreed to in writing,
  229.39 + * software distributed under the License is distributed on an
  229.40 + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  229.41 + * KIND, either express or implied.  See the License for the
  229.42 + * specific language governing permissions and limitations
  229.43 + * under the License.
  229.44 + */
  229.45 +
  229.46 +import java.io.IOException;
  229.47 +import java.net.InetAddress;
  229.48 +import java.net.InetSocketAddress;
  229.49 +import java.net.Socket;
  229.50 +import java.net.UnknownHostException;
  229.51 +
  229.52 +import javax.net.ssl.SSLContext;
  229.53 +import javax.net.ssl.SSLSocket;
  229.54 +import javax.net.ssl.TrustManager;
  229.55 +
  229.56 +import org.apache.http.conn.ConnectTimeoutException;
  229.57 +import org.apache.http.conn.scheme.LayeredSocketFactory;
  229.58 +import org.apache.http.conn.scheme.SocketFactory;
  229.59 +import org.apache.http.params.HttpConnectionParams;
  229.60 +import org.apache.http.params.HttpParams;
  229.61 +
  229.62 +/**
  229.63 + * This socket factory will create ssl socket that accepts self signed
  229.64 + * certificate
  229.65 + * 
  229.66 + * @author olamy
  229.67 + * @version $Id: EasySSLSocketFactory.java 765355 2009-04-15 20:59:07Z evenisse
  229.68 + *          $
  229.69 + * @since 1.2.3
  229.70 + */
  229.71 +public class CopyOfEasySSLSocketFactory implements SocketFactory,
  229.72 +		LayeredSocketFactory {
  229.73 +
  229.74 +	private SSLContext sslcontext = null;
  229.75 +
  229.76 +	private static SSLContext createEasySSLContext() throws IOException {
  229.77 +		try {
  229.78 +			SSLContext context = SSLContext.getInstance("TLS");
  229.79 +			context.init(null, new TrustManager[] { new EasyX509TrustManager(
  229.80 +					null) }, null);
  229.81 +			return context;
  229.82 +		} catch (Exception e) {
  229.83 +			throw new IOException(e.getMessage());
  229.84 +		}
  229.85 +	}
  229.86 +
  229.87 +	private SSLContext getSSLContext() throws IOException {
  229.88 +		if (this.sslcontext == null) {
  229.89 +			this.sslcontext = createEasySSLContext();
  229.90 +		}
  229.91 +		return this.sslcontext;
  229.92 +	}
  229.93 +
  229.94 +	/**
  229.95 +	 * @see org.apache.http.conn.scheme.SocketFactory#connectSocket(java.net.Socket,
  229.96 +	 *      java.lang.String, int, java.net.InetAddress, int,
  229.97 +	 *      org.apache.http.params.HttpParams)
  229.98 +	 */
  229.99 +	public Socket connectSocket(Socket sock, String host, int port,
 229.100 +			InetAddress localAddress, int localPort, HttpParams params)
 229.101 +			throws IOException, UnknownHostException, ConnectTimeoutException {
 229.102 +		int connTimeout = HttpConnectionParams.getConnectionTimeout(params);
 229.103 +		int soTimeout = HttpConnectionParams.getSoTimeout(params);
 229.104 +
 229.105 +		InetSocketAddress remoteAddress = new InetSocketAddress(host, port);
 229.106 +		SSLSocket sslsock = (SSLSocket) ((sock != null) ? sock : createSocket());
 229.107 +
 229.108 +		if ((localAddress != null) || (localPort > 0)) {
 229.109 +			// we need to bind explicitly
 229.110 +			if (localPort < 0) {
 229.111 +				localPort = 0; // indicates "any"
 229.112 +			}
 229.113 +			InetSocketAddress isa = new InetSocketAddress(localAddress,
 229.114 +					localPort);
 229.115 +			sslsock.bind(isa);
 229.116 +		}
 229.117 +
 229.118 +		sslsock.connect(remoteAddress, connTimeout);
 229.119 +		sslsock.setSoTimeout(soTimeout);
 229.120 +		return sslsock;
 229.121 +
 229.122 +	}
 229.123 +
 229.124 +	/**
 229.125 +	 * @see org.apache.http.conn.scheme.SocketFactory#createSocket()
 229.126 +	 */
 229.127 +	public Socket createSocket() throws IOException {
 229.128 +		return getSSLContext().getSocketFactory().createSocket();
 229.129 +	}
 229.130 +
 229.131 +	/**
 229.132 +	 * @see org.apache.http.conn.scheme.SocketFactory#isSecure(java.net.Socket)
 229.133 +	 */
 229.134 +	public boolean isSecure(Socket socket) throws IllegalArgumentException {
 229.135 +		return true;
 229.136 +	}
 229.137 +
 229.138 +	/**
 229.139 +	 * @see org.apache.http.conn.scheme.LayeredSocketFactory#createSocket(java.net.Socket,
 229.140 +	 *      java.lang.String, int, boolean)
 229.141 +	 */
 229.142 +	public Socket createSocket(Socket socket, String host, int port,
 229.143 +			boolean autoClose) throws IOException, UnknownHostException {
 229.144 +		return getSSLContext().getSocketFactory().createSocket();
 229.145 +	}
 229.146 +
 229.147 +	// -------------------------------------------------------------------
 229.148 +	// javadoc in org.apache.http.conn.scheme.SocketFactory says :
 229.149 +	// Both Object.equals() and Object.hashCode() must be overridden
 229.150 +	// for the correct operation of some connection managers
 229.151 +	// -------------------------------------------------------------------
 229.152 +
 229.153 +	public boolean equals(Object obj) {
 229.154 +		return ((obj != null) && obj.getClass().equals(
 229.155 +				CopyOfEasySSLSocketFactory.class));
 229.156 +	}
 229.157 +
 229.158 +	public int hashCode() {
 229.159 +		return CopyOfEasySSLSocketFactory.class.hashCode();
 229.160 +	}
 229.161 +
 229.162 +}
 229.163 \ No newline at end of file
   230.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   230.2 +++ b/src/org/gege/caldavsyncadapter/caldav/EasySSLSocketFactory.java	Tue Feb 10 18:12:00 2015 +0100
   230.3 @@ -0,0 +1,159 @@
   230.4 +/**
   230.5 + * Copyright (c) 2012-2013, Gerald Garcia
   230.6 + * 
   230.7 + * This file is part of Andoid Caldav Sync Adapter Free.
   230.8 + *
   230.9 + * Andoid Caldav Sync Adapter Free is free software: you can redistribute 
  230.10 + * it and/or modify it under the terms of the GNU General Public License 
  230.11 + * as published by the Free Software Foundation, either version 3 of the 
  230.12 + * License, or at your option any later version.
  230.13 + *
  230.14 + * Andoid Caldav Sync Adapter Free is distributed in the hope that 
  230.15 + * it will be useful, but WITHOUT ANY WARRANTY; without even the implied 
  230.16 + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  230.17 + * GNU General Public License for more details.
  230.18 + *
  230.19 + * You should have received a copy of the GNU General Public License
  230.20 + * along with Andoid Caldav Sync Adapter Free.  
  230.21 + * If not, see <http://www.gnu.org/licenses/>.
  230.22 + * 
  230.23 + */
  230.24 +
  230.25 +package org.gege.caldavsyncadapter.caldav;
  230.26 +
  230.27 +import java.io.IOException;
  230.28 +import java.net.InetAddress;
  230.29 +import java.net.InetSocketAddress;
  230.30 +import java.net.Socket;
  230.31 +import java.net.UnknownHostException;
  230.32 +import java.security.KeyManagementException;
  230.33 +import java.security.NoSuchAlgorithmException;
  230.34 +import java.security.SecureRandom;
  230.35 +import java.security.cert.CertificateException;
  230.36 +import java.security.cert.X509Certificate;
  230.37 +
  230.38 +import javax.net.ssl.SSLContext;
  230.39 +import javax.net.ssl.SSLSocket;
  230.40 +import javax.net.ssl.TrustManager;
  230.41 +import javax.net.ssl.X509TrustManager;
  230.42 +
  230.43 +import org.apache.http.conn.ConnectTimeoutException;
  230.44 +import org.apache.http.conn.scheme.LayeredSocketFactory;
  230.45 +import org.apache.http.conn.ssl.SSLSocketFactory;
  230.46 +import org.apache.http.params.HttpConnectionParams;
  230.47 +import org.apache.http.params.HttpParams;
  230.48 +
  230.49 +import android.util.Log;
  230.50 +
  230.51 +
  230.52 +
  230.53 +public final class EasySSLSocketFactory implements
  230.54 +    LayeredSocketFactory {
  230.55 +
  230.56 +	private static final String TAG = "TrustAllSSLSocketFactory";
  230.57 +	
  230.58 +    private static final EasySSLSocketFactory DEFAULT_FACTORY = new EasySSLSocketFactory();
  230.59 +
  230.60 +    public static EasySSLSocketFactory getSocketFactory() {
  230.61 +        return DEFAULT_FACTORY;
  230.62 +    }
  230.63 +
  230.64 +    private SSLContext sslcontext;
  230.65 +    private javax.net.ssl.SSLSocketFactory socketfactory;
  230.66 +
  230.67 +    private EasySSLSocketFactory() {
  230.68 +        super();
  230.69 +        TrustManager[] tm = new TrustManager[] { new X509TrustManager() {
  230.70 +
  230.71 +            @Override
  230.72 +            public void checkClientTrusted(X509Certificate[] chain,
  230.73 +                String authType) throws CertificateException {
  230.74 +                // do nothing
  230.75 +            }
  230.76 +
  230.77 +            @Override
  230.78 +            public void checkServerTrusted(X509Certificate[] chain,
  230.79 +                String authType) throws CertificateException {
  230.80 +                // do nothing
  230.81 +            }
  230.82 +
  230.83 +            @Override
  230.84 +            public X509Certificate[] getAcceptedIssuers() {
  230.85 +                return new X509Certificate[0];
  230.86 +            }
  230.87 +
  230.88 +        } };
  230.89 +        try {
  230.90 +            this.sslcontext = SSLContext.getInstance(SSLSocketFactory.TLS);
  230.91 +            this.sslcontext.init(null, tm, new SecureRandom());
  230.92 +            this.socketfactory = this.sslcontext.getSocketFactory();
  230.93 +        } catch ( NoSuchAlgorithmException e ) {
  230.94 +            Log.e(TAG,
  230.95 +                "Faild to instantiate TrustAllSSLSocketFactory!", e);
  230.96 +        } catch ( KeyManagementException e ) {
  230.97 +            Log.e(TAG,
  230.98 +                "Failed to instantiate TrustAllSSLSocketFactory!", e);
  230.99 +        }
 230.100 +    }
 230.101 +
 230.102 +    @Override
 230.103 +    public Socket createSocket(Socket socket, String host, int port,
 230.104 +        boolean autoClose) throws IOException, UnknownHostException {
 230.105 +        SSLSocket sslSocket = (SSLSocket) this.socketfactory.createSocket(
 230.106 +            socket, host, port, autoClose);
 230.107 +        return sslSocket;
 230.108 +    }
 230.109 +
 230.110 +    @Override
 230.111 +    public Socket connectSocket(Socket sock, String host, int port,
 230.112 +        InetAddress localAddress, int localPort, HttpParams params)
 230.113 +        throws IOException, UnknownHostException, ConnectTimeoutException {
 230.114 +        if ( host == null ) {
 230.115 +            throw new IllegalArgumentException(
 230.116 +                "Target host may not be null.");
 230.117 +        }
 230.118 +        if ( params == null ) {
 230.119 +            throw new IllegalArgumentException(
 230.120 +                "Parameters may not be null.");
 230.121 +        }
 230.122 +
 230.123 +        SSLSocket sslsock = (SSLSocket) ( ( sock != null ) ? sock
 230.124 +            : createSocket() );
 230.125 +
 230.126 +        if ( ( localAddress != null ) || ( localPort > 0 ) ) {
 230.127 +
 230.128 +            // we need to bind explicitly
 230.129 +            if ( localPort < 0 ) {
 230.130 +                localPort = 0; // indicates "any"
 230.131 +            }
 230.132 +
 230.133 +            InetSocketAddress isa = new InetSocketAddress(localAddress,
 230.134 +                localPort);
 230.135 +            sslsock.bind(isa);
 230.136 +        }
 230.137 +
 230.138 +        int connTimeout = HttpConnectionParams.getConnectionTimeout(params);
 230.139 +        int soTimeout = HttpConnectionParams.getSoTimeout(params);
 230.140 +
 230.141 +        InetSocketAddress remoteAddress;
 230.142 +        remoteAddress = new InetSocketAddress(host, port);
 230.143 +
 230.144 +        sslsock.connect(remoteAddress, connTimeout);
 230.145 +
 230.146 +        sslsock.setSoTimeout(soTimeout);
 230.147 +
 230.148 +        return sslsock;
 230.149 +    }
 230.150 +
 230.151 +    @Override
 230.152 +    public Socket createSocket() throws IOException {
 230.153 +        // the cast makes sure that the factory is working as expected
 230.154 +        return (SSLSocket) this.socketfactory.createSocket();
 230.155 +    }
 230.156 +
 230.157 +    @Override
 230.158 +    public boolean isSecure(Socket sock) throws IllegalArgumentException {
 230.159 +        return true;
 230.160 +    }
 230.161 +
 230.162 +}
 230.163 \ No newline at end of file
   231.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   231.2 +++ b/src/org/gege/caldavsyncadapter/caldav/EasyX509TrustManager.java	Tue Feb 10 18:12:00 2015 +0100
   231.3 @@ -0,0 +1,114 @@
   231.4 +/**
   231.5 + * Copyright (c) 2012-2013, Gerald Garcia
   231.6 + * 
   231.7 + * This file is part of Andoid Caldav Sync Adapter Free.
   231.8 + *
   231.9 + * Andoid Caldav Sync Adapter Free is free software: you can redistribute 
  231.10 + * it and/or modify it under the terms of the GNU General Public License 
  231.11 + * as published by the Free Software Foundation, either version 3 of the 
  231.12 + * License, or at your option any later version.
  231.13 + *
  231.14 + * Andoid Caldav Sync Adapter Free is distributed in the hope that 
  231.15 + * it will be useful, but WITHOUT ANY WARRANTY; without even the implied 
  231.16 + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  231.17 + * GNU General Public License for more details.
  231.18 + *
  231.19 + * You should have received a copy of the GNU General Public License
  231.20 + * along with Andoid Caldav Sync Adapter Free.  
  231.21 + * If not, see <http://www.gnu.org/licenses/>.
  231.22 + * 
  231.23 + */
  231.24 +
  231.25 +package org.gege.caldavsyncadapter.caldav;
  231.26 +
  231.27 +/*
  231.28 + * Licensed to the Apache Software Foundation (ASF) under one
  231.29 + * or more contributor license agreements.  See the NOTICE file
  231.30 + * distributed with this work for additional information
  231.31 + * regarding copyright ownership.  The ASF licenses this file
  231.32 + * to you under the Apache License, Version 2.0 (the
  231.33 + * "License"); you may not use this file except in compliance
  231.34 + * with the License.  You may obtain a copy of the License at
  231.35 + *
  231.36 + *   http://www.apache.org/licenses/LICENSE-2.0
  231.37 + *
  231.38 + * Unless required by applicable law or agreed to in writing,
  231.39 + * software distributed under the License is distributed on an
  231.40 + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  231.41 + * KIND, either express or implied.  See the License for the
  231.42 + * specific language governing permissions and limitations
  231.43 + * under the License.
  231.44 + */
  231.45 +
  231.46 +import java.security.KeyStore;
  231.47 +import java.security.KeyStoreException;
  231.48 +import java.security.NoSuchAlgorithmException;
  231.49 +import java.security.cert.CertificateException;
  231.50 +import java.security.cert.X509Certificate;
  231.51 +
  231.52 +import javax.net.ssl.TrustManager;
  231.53 +import javax.net.ssl.TrustManagerFactory;
  231.54 +import javax.net.ssl.X509TrustManager;
  231.55 +
  231.56 +/**
  231.57 + * @author olamy
  231.58 + * @version $Id: EasyX509TrustManager.java 765355 2009-04-15 20:59:07Z evenisse $
  231.59 + * @since 1.2.3
  231.60 + */
  231.61 +public class EasyX509TrustManager
  231.62 +    implements X509TrustManager
  231.63 +{
  231.64 +
  231.65 +    private X509TrustManager standardTrustManager = null;
  231.66 +
  231.67 +    /**
  231.68 +     * Constructor for EasyX509TrustManager.
  231.69 +     */
  231.70 +    public EasyX509TrustManager( KeyStore keystore )
  231.71 +        throws NoSuchAlgorithmException, KeyStoreException
  231.72 +    {
  231.73 +        super();
  231.74 +        TrustManagerFactory factory = TrustManagerFactory.getInstance( TrustManagerFactory.getDefaultAlgorithm() );
  231.75 +        factory.init( keystore );
  231.76 +        TrustManager[] trustmanagers = factory.getTrustManagers();
  231.77 +        if ( trustmanagers.length == 0 )
  231.78 +        {
  231.79 +            throw new NoSuchAlgorithmException( "no trust manager found" );
  231.80 +        }
  231.81 +        this.standardTrustManager = (X509TrustManager) trustmanagers[0];
  231.82 +    }
  231.83 +
  231.84 +    /**
  231.85 +     * @see javax.net.ssl.X509TrustManager#checkClientTrusted(X509Certificate[],String authType)
  231.86 +     */
  231.87 +    public void checkClientTrusted( X509Certificate[] certificates, String authType )
  231.88 +        throws CertificateException
  231.89 +    {
  231.90 +        standardTrustManager.checkClientTrusted( certificates, authType );
  231.91 +    }
  231.92 +
  231.93 +    /**
  231.94 +     * @see javax.net.ssl.X509TrustManager#checkServerTrusted(X509Certificate[],String authType)
  231.95 +     */
  231.96 +    public void checkServerTrusted( X509Certificate[] certificates, String authType )
  231.97 +        throws CertificateException
  231.98 +    {
  231.99 +        if ( ( certificates != null ) && ( certificates.length == 1 ) )
 231.100 +        {
 231.101 +            certificates[0].checkValidity();
 231.102 +        }
 231.103 +        else
 231.104 +        {
 231.105 +            standardTrustManager.checkServerTrusted( certificates, authType );
 231.106 +        }
 231.107 +    }
 231.108 +
 231.109 +    /**
 231.110 +     * @see javax.net.ssl.X509TrustManager#getAcceptedIssuers()
 231.111 +     */
 231.112 +    public X509Certificate[] getAcceptedIssuers()
 231.113 +    {
 231.114 +        return this.standardTrustManager.getAcceptedIssuers();
 231.115 +    }
 231.116 +
 231.117 +}
 231.118 \ No newline at end of file
   232.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   232.2 +++ b/src/org/gege/caldavsyncadapter/caldav/entities/CalendarEvent.java	Tue Feb 10 18:12:00 2015 +0100
   232.3 @@ -0,0 +1,1068 @@
   232.4 +/**
   232.5 + * Copyright (c) 2012-2013, Gerald Garcia, Timo Berger
   232.6 + * 
   232.7 + * This file is part of Andoid Caldav Sync Adapter Free.
   232.8 + *
   232.9 + * Andoid Caldav Sync Adapter Free is free software: you can redistribute 
  232.10 + * it and/or modify it under the terms of the GNU General Public License 
  232.11 + * as published by the Free Software Foundation, either version 3 of the 
  232.12 + * License, or at your option any later version.
  232.13 + *
  232.14 + * Andoid Caldav Sync Adapter Free is distributed in the hope that 
  232.15 + * it will be useful, but WITHOUT ANY WARRANTY; without even the implied 
  232.16 + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  232.17 + * GNU General Public License for more details.
  232.18 + *
  232.19 + * You should have received a copy of the GNU General Public License
  232.20 + * along with Andoid Caldav Sync Adapter Free.  
  232.21 + * If not, see <http://www.gnu.org/licenses/>.
  232.22 + * 
  232.23 + */
  232.24 +
  232.25 +package org.gege.caldavsyncadapter.caldav.entities;
  232.26 +
  232.27 +import java.io.IOException;
  232.28 +import java.io.StringReader;
  232.29 +import java.io.UnsupportedEncodingException;
  232.30 +import java.net.URI;
  232.31 +import java.net.URL;
  232.32 +import java.net.URLDecoder;
  232.33 +import java.text.ParseException;
  232.34 +import java.util.ArrayList;
  232.35 +
  232.36 +import javax.xml.parsers.ParserConfigurationException;
  232.37 +import javax.xml.parsers.SAXParser;
  232.38 +import javax.xml.parsers.SAXParserFactory;
  232.39 +
  232.40 +import net.fortuna.ical4j.data.CalendarBuilder;
  232.41 +import net.fortuna.ical4j.data.ParserException;
  232.42 +import net.fortuna.ical4j.model.Calendar;
  232.43 +import net.fortuna.ical4j.model.Component;
  232.44 +import net.fortuna.ical4j.model.ComponentList;
  232.45 +import net.fortuna.ical4j.model.DateTime;
  232.46 +import net.fortuna.ical4j.model.Dur;
  232.47 +import net.fortuna.ical4j.model.Parameter;
  232.48 +import net.fortuna.ical4j.model.ParameterList;
  232.49 +import net.fortuna.ical4j.model.Property;
  232.50 +import net.fortuna.ical4j.model.PropertyList;
  232.51 +import net.fortuna.ical4j.model.TimeZone;
  232.52 +import net.fortuna.ical4j.model.component.VEvent;
  232.53 +import net.fortuna.ical4j.model.component.VTimeZone;
  232.54 +import net.fortuna.ical4j.model.parameter.Cn;
  232.55 +import net.fortuna.ical4j.model.parameter.CuType;
  232.56 +import net.fortuna.ical4j.model.parameter.PartStat;
  232.57 +import net.fortuna.ical4j.model.parameter.Role;
  232.58 +import net.fortuna.ical4j.model.property.Clazz;
  232.59 +import net.fortuna.ical4j.model.property.Status;
  232.60 +import net.fortuna.ical4j.util.CompatibilityHints;
  232.61 +
  232.62 +import org.apache.http.client.ClientProtocolException;
  232.63 +import org.gege.caldavsyncadapter.Event;
  232.64 +import org.gege.caldavsyncadapter.android.entities.AndroidEvent;
  232.65 +import org.gege.caldavsyncadapter.caldav.CaldavFacade;
  232.66 +import org.gege.caldavsyncadapter.caldav.CaldavProtocolException;
  232.67 +import org.gege.caldavsyncadapter.caldav.xml.MultiStatusHandler;
  232.68 +import org.gege.caldavsyncadapter.caldav.xml.sax.MultiStatus;
  232.69 +import org.gege.caldavsyncadapter.caldav.xml.sax.Prop;
  232.70 +import org.gege.caldavsyncadapter.caldav.xml.sax.PropStat;
  232.71 +import org.gege.caldavsyncadapter.caldav.xml.sax.Response;
  232.72 +import org.gege.caldavsyncadapter.syncadapter.SyncAdapter;
  232.73 +import org.xml.sax.InputSource;
  232.74 +import org.xml.sax.SAXException;
  232.75 +import org.xml.sax.XMLReader;
  232.76 +
  232.77 +import android.accounts.Account;
  232.78 +import android.content.ContentProviderClient;
  232.79 +import android.content.ContentUris;
  232.80 +import android.content.ContentValues;
  232.81 +import android.content.SyncStats;
  232.82 +import android.database.Cursor;
  232.83 +import android.net.Uri;
  232.84 +import android.os.RemoteException;
  232.85 +import android.provider.CalendarContract.Attendees;
  232.86 +import android.provider.CalendarContract.Calendars;
  232.87 +import android.provider.CalendarContract.Events;
  232.88 +import android.provider.CalendarContract.Reminders;
  232.89 +import android.util.Log;
  232.90 +
  232.91 +
  232.92 +
  232.93 +public class CalendarEvent extends org.gege.caldavsyncadapter.Event {
  232.94 +	private static final String TAG = "CalendarEvent";
  232.95 +	
  232.96 +	private String stringIcs;
  232.97 +	
  232.98 +	private Calendar calendar;
  232.99 +
 232.100 +	private Component calendarComponent;
 232.101 +	
 232.102 +	private String eTag;
 232.103 +	private URI muri;
 232.104 +	private Uri mAndroidEventUri;
 232.105 +	public URL calendarURL;
 232.106 +	
 232.107 +	private boolean mAllDay = false;
 232.108 +	private VTimeZone mVTimeZone = null; 
 232.109 +	private TimeZone mTimeZone = null; 
 232.110 +	
 232.111 +	private String mstrTimeZoneStart = "";
 232.112 +	private String mstrTimeZoneEnd = "";
 232.113 +
 232.114 +	private Account mAccount = null;
 232.115 +	private ContentProviderClient mProvider = null;
 232.116 +	
 232.117 +	public CalendarEvent(Account account, ContentProviderClient provider) {
 232.118 +		this.mAccount = account;
 232.119 +		this.mProvider = provider;
 232.120 +	}
 232.121 +	
 232.122 +	public String getETag() {
 232.123 +		return eTag;
 232.124 +	}
 232.125 +
 232.126 +	public void setETag(String eTag) {
 232.127 +		this.eTag = eTag;
 232.128 +	}
 232.129 +	
 232.130 +	public URI getUri() {
 232.131 +		return muri;
 232.132 +	}
 232.133 +
 232.134 +	public void setUri(URI uri) {
 232.135 +		this.muri = uri;
 232.136 +	}
 232.137 +
 232.138 +	public void setICSasString(String ics) {
 232.139 +		this.stringIcs = ics;
 232.140 +	}
 232.141 +	
 232.142 +	public boolean setICSasMultiStatus(String stringMultiStatus) {
 232.143 +		boolean Result = false;
 232.144 +		String ics = "";
 232.145 +		MultiStatus multistatus;
 232.146 +		ArrayList<Response> responselist;
 232.147 +		Response response;
 232.148 +		PropStat propstat;
 232.149 +		Prop prop;
 232.150 +		try {
 232.151 +			SAXParserFactory factory = SAXParserFactory.newInstance();
 232.152 +			SAXParser parser = factory.newSAXParser();
 232.153 +			XMLReader reader = parser.getXMLReader();
 232.154 +			MultiStatusHandler contentHandler = new MultiStatusHandler(); 
 232.155 +			reader.setContentHandler(contentHandler);
 232.156 +			reader.parse(new InputSource(new StringReader(stringMultiStatus)));
 232.157 +			
 232.158 +			multistatus = contentHandler.mMultiStatus;
 232.159 +			if (multistatus != null) {
 232.160 +				responselist = multistatus.ResponseList;
 232.161 +				if (responselist.size() == 1) {
 232.162 +					response = responselist.get(0);
 232.163 +					//HINT: bugfix for google calendar, zimbra replace("@", "%40")
 232.164 +					if (response.href.replace("@", "%40").equals(this.getUri().getRawPath().replace("@", "%40"))) {
 232.165 +						propstat = response.propstat;
 232.166 +						if (propstat != null) {
 232.167 +							if (propstat.status.contains("200 OK")) {
 232.168 +								prop = propstat.prop;
 232.169 +								ics = prop.calendardata;
 232.170 +								this.setETag(prop.getetag);
 232.171 +								Result = true;
 232.172 +							}
 232.173 +						}
 232.174 +					}
 232.175 +				}
 232.176 +			}
 232.177 +		} catch (ParserConfigurationException e1) {
 232.178 +			e1.printStackTrace();
 232.179 +		} catch (SAXException e1) {
 232.180 +			e1.printStackTrace();
 232.181 +		} catch (IOException e) {
 232.182 +			e.printStackTrace();
 232.183 +		}
 232.184 +		
 232.185 +		this.stringIcs = ics;
 232.186 +		return Result;
 232.187 +	}
 232.188 +	
 232.189 +	/**
 232.190 +	 * sets the Uri of the android event
 232.191 +	 * @param uri
 232.192 +	 * @see org.gege.caldavsyncadapter.syncadapter.SyncAdapter#createAndroidEvent(ContentProviderClient provider, Account account, Uri calendarUri, CalendarEvent calendarEvent)
 232.193 +	 * @see org.gege.caldavsyncadapter.syncadapter.SyncAdapter#updateAndroidEvent(ContentProviderClient provider, Account account, AndroidEvent androidEvent, CalendarEvent calendarEvent)
 232.194 +	 */
 232.195 +	public void setAndroidEventUri(Uri uri) {
 232.196 +		mAndroidEventUri = uri;
 232.197 +	}
 232.198 +	
 232.199 +	/**
 232.200 +	 * gets the Uri of the android event
 232.201 +	 * @return
 232.202 +	 */
 232.203 +	public Uri getAndroidEventUri() {
 232.204 +		return mAndroidEventUri;
 232.205 +	}
 232.206 +	
 232.207 +	
 232.208 +	/**
 232.209 +	 * reads all ContentValues from the caldav source
 232.210 +	 * @param calendarUri
 232.211 +	 * @return
 232.212 +	 * @see org.gege.caldavsyncadapter.syncadapter.SyncAdapter#createAndroidEvent(ContentProviderClient provider, Account account, Uri calendarUri, CalendarEvent calendarEvent)
 232.213 +	 * @see org.gege.caldavsyncadapter.syncadapter.SyncAdapter#updateAndroidEvent(ContentProviderClient provider, Account account, AndroidEvent androidEvent, CalendarEvent calendarEvent)
 232.214 +	 */
 232.215 +	public boolean readContentValues() {
 232.216 +		this.ContentValues.put(Events.DTSTART, this.getStartTime());
 232.217 +		this.ContentValues.put(Events.EVENT_TIMEZONE, this.getTimeZoneStart());
 232.218 +
 232.219 +		//if (this.getRRule().isEmpty() && this.getRDate().isEmpty()) {
 232.220 +		if (this.getRRule() == null && this.getRDate() == null) {
 232.221 +			//if (AllDay.equals(1)) //{
 232.222 +			//	values.put(Events.ALL_DAY, AllDay);
 232.223 +			//} else {
 232.224 +			this.ContentValues.put(Events.DTEND, this.getEndTime());
 232.225 +			this.ContentValues.put(Events.EVENT_END_TIMEZONE, this.getTimeZoneEnd());
 232.226 +			//}
 232.227 +		} else {
 232.228 +			//if (AllDay.equals(1))
 232.229 +			//	values.put(Events.ALL_DAY, AllDay);
 232.230 +			this.ContentValues.put(Events.DURATION, this.getDuration());
 232.231 +		}
 232.232 +		int AllDay = this.getAllDay();
 232.233 +		this.ContentValues.put(Events.ALL_DAY, AllDay);
 232.234 +		
 232.235 +		this.ContentValues.put(Events.TITLE, this.getTitle());
 232.236 +		//this.ContentValues.put(Events.CALENDAR_ID, ContentUris.parseId(calendarUri));
 232.237 +		this.ContentValues.put(Events._SYNC_ID, this.getUri().toString());
 232.238 +		this.ContentValues.put(ETAG, this.getETag());
 232.239 +		this.ContentValues.put(Events.DESCRIPTION, this.getDescription());
 232.240 +		this.ContentValues.put(Events.EVENT_LOCATION, this.getLocation());
 232.241 +		this.ContentValues.put(Events.ACCESS_LEVEL, this.getAccessLevel());
 232.242 +		this.ContentValues.put(Events.STATUS, this.getStatus());
 232.243 +		this.ContentValues.put(Events.RDATE, this.getRDate());
 232.244 +		this.ContentValues.put(Events.RRULE, this.getRRule());
 232.245 +		this.ContentValues.put(Events.EXRULE, this.getExRule());
 232.246 +		this.ContentValues.put(Events.EXDATE, this.getExDate());
 232.247 +		this.ContentValues.put(UID, this.getUid());
 232.248 +		this.ContentValues.put(RAWDATA, this.stringIcs);
 232.249 +		
 232.250 +		return true;
 232.251 +	}
 232.252 +
 232.253 +	/**
 232.254 +	 * receives a single event and parses its content
 232.255 +	 * @return success of this function
 232.256 +	 * @see CalendarEvent#parseIcs()
 232.257 +	 * @throws ClientProtocolException
 232.258 +	 * @throws IOException
 232.259 +	 * @throws CaldavProtocolException
 232.260 +	 * @throws ParserException
 232.261 +	 */
 232.262 +	public boolean fetchBody() throws ClientProtocolException, IOException, CaldavProtocolException, ParserException {
 232.263 +		boolean Error = false;
 232.264 +		
 232.265 +		//replaced fetchEvent() with getEvent()
 232.266 +		//CaldavFacade.fetchEvent(this);
 232.267 +		CaldavFacade.getEvent(this);
 232.268 +		
 232.269 +		boolean Parse = this.parseIcs();
 232.270 +		if (!Parse)
 232.271 +			Error = true;
 232.272 +		
 232.273 +		return !Error;
 232.274 +	}
 232.275 +	
 232.276 +	public java.util.ArrayList<ContentValues> getReminders() {
 232.277 +		java.util.ArrayList<ContentValues> Result = new java.util.ArrayList<ContentValues>();
 232.278 +		ContentValues Reminder;
 232.279 +		
 232.280 +		/*
 232.281 +		 * http://sourceforge.net/tracker/?func=detail&aid=3021704&group_id=107024&atid=646395
 232.282 +		 */
 232.283 +
 232.284 +		net.fortuna.ical4j.model.component.VEvent event = (VEvent) this.calendarComponent;
 232.285 +
 232.286 +		//ComponentList ComList = this.calendar.getComponents(Component.VALARM);
 232.287 +		ComponentList ComList = event.getAlarms();
 232.288 +
 232.289 +		if (ComList != null) {
 232.290 +			for (Object objCom : ComList) {
 232.291 +				Component Com = (Component) objCom;
 232.292 +				Reminder = new ContentValues();
 232.293 +				
 232.294 +				//Property ACTION = Com.getProperty("ACTION");
 232.295 +				Property TRIGGER = Com.getProperty("TRIGGER");
 232.296 +				if (TRIGGER != null) {
 232.297 +					Dur Duration = new Dur(TRIGGER.getValue());
 232.298 +					//if (ACTION.getValue().equals("DISPLAY"))
 232.299 +					
 232.300 +					int intDuration = Duration.getMinutes() + Duration.getHours() * 60 + Duration.getDays() * 60 * 24;
 232.301 +					
 232.302 +					Reminder.put(Reminders.EVENT_ID, ContentUris.parseId(mAndroidEventUri));
 232.303 +					Reminder.put(Reminders.METHOD, Reminders.METHOD_ALERT);
 232.304 +					Reminder.put(Reminders.MINUTES, intDuration);
 232.305 +					
 232.306 +					Result.add(Reminder);
 232.307 +				}
 232.308 +			}
 232.309 +		}
 232.310 +		return Result;
 232.311 +	}
 232.312 +	
 232.313 +	public java.util.ArrayList<ContentValues> getAttandees() {
 232.314 +		java.util.ArrayList<ContentValues> Result = new java.util.ArrayList<ContentValues>();
 232.315 +		ContentValues Attendee;
 232.316 +		PropertyList Propertys = calendarComponent.getProperties(Property.ATTENDEE);
 232.317 +		if (Propertys != null) {
 232.318 +			for (Object objProperty : Propertys){
 232.319 +				Property property = (Property) objProperty;
 232.320 +				Attendee = ReadAttendeeProperties(property,Property.ATTENDEE);
 232.321 +				if (Attendee != null)
 232.322 +					Result.add(Attendee);
 232.323 +			}
 232.324 +		}
 232.325 +		Propertys = calendarComponent.getProperties(Property.ORGANIZER);
 232.326 +		if (Propertys != null) {
 232.327 +			for (Object objProperty : Propertys){
 232.328 +				Property property = (Property) objProperty;
 232.329 +				Attendee = ReadAttendeeProperties(property,Property.ORGANIZER);
 232.330 +				if (Attendee != null)
 232.331 +					Result.add(Attendee);
 232.332 +			}
 232.333 +		}
 232.334 +		
 232.335 +		
 232.336 +		return Result;
 232.337 +	}
 232.338 +	
 232.339 +	private String mstrcIcalPropertyError = "net.fortunal.ical4j.invalid:";
 232.340 +	private ContentValues ReadAttendeeProperties(Property property, String Type) {
 232.341 +		ContentValues Attendee = null;
 232.342 +		
 232.343 +		ParameterList Parameters = property.getParameters();
 232.344 +		Parameter CN       = Parameters.getParameter(Cn.CN);
 232.345 +		Parameter ROLE     = Parameters.getParameter(Role.ROLE);
 232.346 +		Parameter CUTYPE   = Parameters.getParameter(CuType.CUTYPE);
 232.347 +		//Parameter RSVP     = Parameters.getParameter("RSVP");
 232.348 +		Parameter PARTSTAT = Parameters.getParameter(PartStat.PARTSTAT);
 232.349 +
 232.350 +		String strCN = "";
 232.351 +		String strROLE = "";
 232.352 +		String strCUTYPE = "";
 232.353 +		String strValue = property.getValue().replace("mailto:", "");
 232.354 +		String strPARTSTAT = "";
 232.355 +		
 232.356 +		if (strValue.startsWith(mstrcIcalPropertyError)) {
 232.357 +			strValue = strValue.replace(mstrcIcalPropertyError, "");
 232.358 +			try {
 232.359 +				strValue = URLDecoder.decode(strValue, "UTF-8");
 232.360 +			} catch (UnsupportedEncodingException e) {
 232.361 +				e.printStackTrace();
 232.362 +			}
 232.363 +		}
 232.364 +		
 232.365 +		if (CN != null)
 232.366 +			strCN = CN.getValue();
 232.367 +		if (ROLE != null)
 232.368 +			strROLE = ROLE.getValue();
 232.369 +		if (CUTYPE != null)
 232.370 +			strCUTYPE = CUTYPE.getValue();
 232.371 +		if (PARTSTAT != null)
 232.372 +			strPARTSTAT = PARTSTAT.getValue();
 232.373 +		
 232.374 +		if (strCN.equals("")) {
 232.375 +			if (!strValue.equals("")) {
 232.376 +				strCN = strValue;
 232.377 +			}
 232.378 +		}
 232.379 +
 232.380 +		if (!strCN.equals("")) {
 232.381 +			if (strCUTYPE.equals("") || strCUTYPE.equals("INDIVIDUAL")) {
 232.382 +				Attendee = new ContentValues();
 232.383 +				
 232.384 +				Attendee.put(Attendees.EVENT_ID, ContentUris.parseId(mAndroidEventUri));
 232.385 +
 232.386 +				Attendee.put(Attendees.ATTENDEE_NAME, strCN);
 232.387 +				Attendee.put(Attendees.ATTENDEE_EMAIL, strValue);
 232.388 +
 232.389 +				if (strROLE.equals("OPT-PARTICIPANT"))
 232.390 +					Attendee.put(Attendees.ATTENDEE_TYPE, Attendees.TYPE_OPTIONAL);
 232.391 +				else if (strROLE.equals("NON-PARTICIPANT"))
 232.392 +					Attendee.put(Attendees.ATTENDEE_TYPE, Attendees.TYPE_NONE);
 232.393 +				else if (strROLE.equals("REQ-PARTICIPANT"))
 232.394 +					Attendee.put(Attendees.ATTENDEE_TYPE, Attendees.TYPE_REQUIRED);
 232.395 +				else if (strROLE.equals("CHAIR"))
 232.396 +					Attendee.put(Attendees.ATTENDEE_TYPE, Attendees.TYPE_REQUIRED);
 232.397 +				else 
 232.398 +					Attendee.put(Attendees.ATTENDEE_TYPE, Attendees.TYPE_NONE);
 232.399 +				
 232.400 +				if (Type.equals(Property.ATTENDEE))
 232.401 +					Attendee.put(Attendees.ATTENDEE_RELATIONSHIP, Attendees.RELATIONSHIP_ATTENDEE);
 232.402 +				else if (Type.equals(Property.ORGANIZER))
 232.403 +					Attendee.put(Attendees.ATTENDEE_RELATIONSHIP, Attendees.RELATIONSHIP_ORGANIZER);
 232.404 +				else
 232.405 +					Attendee.put(Attendees.ATTENDEE_RELATIONSHIP, Attendees.RELATIONSHIP_NONE);
 232.406 +
 232.407 +				if (strPARTSTAT.equals(PartStat.NEEDS_ACTION.getValue()))
 232.408 +					Attendee.put(Attendees.ATTENDEE_STATUS, Attendees.ATTENDEE_STATUS_INVITED);
 232.409 +				else if (strPARTSTAT.equals(PartStat.ACCEPTED.getValue()))
 232.410 +					Attendee.put(Attendees.ATTENDEE_STATUS, Attendees.ATTENDEE_STATUS_ACCEPTED);
 232.411 +				else if (strPARTSTAT.equals(PartStat.DECLINED.getValue()))
 232.412 +					Attendee.put(Attendees.ATTENDEE_STATUS, Attendees.ATTENDEE_STATUS_DECLINED);
 232.413 +				else if (strPARTSTAT.equals(PartStat.COMPLETED.getValue()))
 232.414 +					Attendee.put(Attendees.ATTENDEE_STATUS, Attendees.ATTENDEE_STATUS_NONE);
 232.415 +				else if (strPARTSTAT.equals(PartStat.TENTATIVE.getValue()))
 232.416 +					Attendee.put(Attendees.ATTENDEE_STATUS, Attendees.ATTENDEE_STATUS_TENTATIVE);
 232.417 +				else
 232.418 +					Attendee.put(Attendees.ATTENDEE_STATUS, Attendees.ATTENDEE_STATUS_INVITED);
 232.419 +
 232.420 +			}
 232.421 +		}
 232.422 +		
 232.423 +		return Attendee;
 232.424 +	}
 232.425 +	
 232.426 +	private long getAccessLevel() {
 232.427 +		long Result = Events.ACCESS_DEFAULT;
 232.428 +		String Value = "";
 232.429 +		Property property = calendarComponent.getProperty(Property.CLASS);
 232.430 +		if (property != null) {
 232.431 +			Value = property.getValue();
 232.432 +			if (Value.equals(Clazz.PUBLIC))
 232.433 +				Result = Events.ACCESS_PUBLIC;
 232.434 +			else if (Value.equals(Clazz.PRIVATE))
 232.435 +				Result = Events.ACCESS_PRIVATE;
 232.436 +			else if (Value.equals(Clazz.CONFIDENTIAL))
 232.437 +				Result = Events.ACCESS_PRIVATE; // should be ACCESS_CONFIDENTIAL, but is not implemented within Android
 232.438 +		}
 232.439 +		
 232.440 +		return Result;
 232.441 +	}
 232.442 +	
 232.443 +	private int getStatus() {
 232.444 +		int Result = -1;
 232.445 +		String Value = "";
 232.446 +		Property property = calendarComponent.getProperty(Property.STATUS);
 232.447 +		if (property != null) {
 232.448 +			Value = property.getValue();
 232.449 +			if (Value.equals(Status.VEVENT_CONFIRMED.getValue()))
 232.450 +				Result = Events.STATUS_CONFIRMED;
 232.451 +			else if (Value.equals(Status.VEVENT_CANCELLED.getValue()))
 232.452 +				Result = Events.STATUS_CANCELED;
 232.453 +			else if (Value.equals(Status.VEVENT_TENTATIVE.getValue()))
 232.454 +				Result = Events.STATUS_TENTATIVE;
 232.455 +		}
 232.456 +		
 232.457 +		return Result;
 232.458 +	}
 232.459 +	
 232.460 +	private String getDescription() {
 232.461 +		String Result = null;
 232.462 +		Property property = calendarComponent.getProperty(Property.DESCRIPTION);
 232.463 +		if (property != null)
 232.464 +			Result = property.getValue();
 232.465 +		
 232.466 +		return Result;
 232.467 +	}
 232.468 +	
 232.469 +	private String getLocation() {
 232.470 +		String Result = null;
 232.471 +		Property property = calendarComponent.getProperty(Property.LOCATION);
 232.472 +		if (property != null) 
 232.473 +			Result = property.getValue();
 232.474 +		
 232.475 +		return Result;
 232.476 +	}
 232.477 +
 232.478 +	private String getTitle() {
 232.479 +		Property property = calendarComponent.getProperty(Property.SUMMARY);
 232.480 +		if (property != null)
 232.481 +			return property.getValue();
 232.482 +		else
 232.483 +			return "**unkonwn**";
 232.484 +	}
 232.485 +	
 232.486 +	private String getRRule() {
 232.487 +		String Result = null;
 232.488 +		Property property = calendarComponent.getProperty(Property.RRULE);
 232.489 +		if (property != null)
 232.490 +			Result = property.getValue();
 232.491 +
 232.492 +		return Result;
 232.493 +	}
 232.494 +
 232.495 +	private String getExRule() {
 232.496 +		String Result = null;
 232.497 +		Property property = calendarComponent.getProperty(Property.EXRULE);
 232.498 +		if (property != null)
 232.499 +			Result = property.getValue();
 232.500 +
 232.501 +		return Result;
 232.502 +	}
 232.503 +	
 232.504 +	private String getRDate() {
 232.505 +		String Result = null;
 232.506 +		
 232.507 +		java.util.ArrayList<String> ExDates = this.getRDates();
 232.508 +		for (String Value: ExDates) {
 232.509 +			if (Result == null)
 232.510 +				Result = "";
 232.511 +			if (!Result.isEmpty())
 232.512 +				Result += ",";
 232.513 +			Result += Value;
 232.514 +		}
 232.515 +		
 232.516 +		return Result;
 232.517 +	}
 232.518 +	
 232.519 +	private java.util.ArrayList<String> getRDates() {
 232.520 +		java.util.ArrayList<String> Result = new java.util.ArrayList<String>();
 232.521 +		PropertyList Propertys = calendarComponent.getProperties(Property.RDATE);
 232.522 +		if (Propertys != null) {
 232.523 +			Property property;
 232.524 +			for (Object objProperty : Propertys){
 232.525 +				property = (Property) objProperty;
 232.526 +				Result.add(property.getValue());
 232.527 +			}
 232.528 +		}
 232.529 +
 232.530 +		return Result;
 232.531 +	}
 232.532 +	
 232.533 +	private String getExDate() {
 232.534 +		String Result = null;
 232.535 +		
 232.536 +		java.util.ArrayList<String> ExDates = this.getExDates();
 232.537 +		for (String Value: ExDates) {
 232.538 +			if (Result == null)
 232.539 +				Result = "";
 232.540 +			if (!Result.isEmpty())
 232.541 +				Result += ",";
 232.542 +			Result += Value;
 232.543 +		}
 232.544 +		
 232.545 +		return Result;
 232.546 +	}
 232.547 +	
 232.548 +	private java.util.ArrayList<String> getExDates() {
 232.549 +		java.util.ArrayList<String> Result = new java.util.ArrayList<String>();
 232.550 +		PropertyList Propertys = calendarComponent.getProperties(Property.EXDATE);
 232.551 +		if (Propertys != null) {
 232.552 +			Property property;
 232.553 +			for (Object objProperty : Propertys){
 232.554 +				property = (Property) objProperty;
 232.555 +				Result.add(property.getValue());
 232.556 +			}
 232.557 +		}
 232.558 +
 232.559 +		return Result;
 232.560 +	}
 232.561 +	
 232.562 +	private String getUid() {
 232.563 +		String Result = "";
 232.564 +		Property prop = calendarComponent.getProperty(Property.UID);
 232.565 +		if (prop != null) {
 232.566 +			Result = prop.getValue();
 232.567 +		}
 232.568 +		
 232.569 +		return Result;
 232.570 +	}
 232.571 +	
 232.572 +	private Long getTimestamp(Property prop) {
 232.573 +		Long Result = null;
 232.574 +		String strTimeZone = "";
 232.575 +		//TimeZone timeZone = null;
 232.576 +		
 232.577 +		try {
 232.578 +			String strDate = prop.getValue();
 232.579 +			
 232.580 +			Parameter parAllDay = prop.getParameter("VALUE");
 232.581 +			if (parAllDay != null) {
 232.582 +				if (parAllDay.getValue().equals("DATE")) {
 232.583 +					mAllDay = true;
 232.584 +					strDate += "T000000Z";
 232.585 +				}
 232.586 +			}
 232.587 +			
 232.588 +			Parameter propTZ = prop.getParameter(Property.TZID);
 232.589 +			if (propTZ != null)
 232.590 +				strTimeZone = propTZ.getValue();
 232.591 +			
 232.592 +			//TimeZoneRegistry registry = TimeZoneRegistryFactory.getInstance().createRegistry();
 232.593 +			//if (!strTimeZone.equals(""))
 232.594 +			//	timeZone = registry.getTimeZone(strTimeZone);
 232.595 +
 232.596 +			//if (timeZone != null) {
 232.597 +			if (!strTimeZone.equals("")) {
 232.598 +				//Result = new DateTime(strDate, timeZone);
 232.599 +				//Result1 = Result.getTime();
 232.600 +				
 232.601 +				//20130331T120000
 232.602 +				int Year = Integer.parseInt(strDate.substring(0, 4));
 232.603 +				int Month = Integer.parseInt(strDate.substring(4, 6)) - 1;
 232.604 +				int Day = Integer.parseInt(strDate.substring(6, 8));
 232.605 +				int Hour = Integer.parseInt(strDate.substring(9, 11));
 232.606 +				int Minute = Integer.parseInt(strDate.substring(11, 13));
 232.607 +				int Second = Integer.parseInt(strDate.substring(13, 15));
 232.608 +
 232.609 +				// time in UTC
 232.610 +				java.util.TimeZone jtz = java.util.TimeZone.getTimeZone("UTC");
 232.611 +				java.util.Calendar cal = java.util.GregorianCalendar.getInstance(jtz);
 232.612 +				cal.set(Year, Month, Day, Hour, Minute, Second);
 232.613 +				cal.set(java.util.Calendar.MILLISECOND, 0);
 232.614 +				Result = cal.getTimeInMillis();
 232.615 +				
 232.616 +				// get the timezone
 232.617 +				String[] IDs = java.util.TimeZone.getAvailableIDs();
 232.618 +				Boolean Found = false;
 232.619 +				for (int i = 0; i < IDs.length; i++) {
 232.620 +					Found = Found || IDs[i].equals(strTimeZone);
 232.621 +				}
 232.622 +				if (Found) {
 232.623 +					jtz = java.util.TimeZone.getTimeZone(strTimeZone);
 232.624 +					
 232.625 +					// subtract the offset
 232.626 +					Result -= jtz.getRawOffset();
 232.627 +					
 232.628 +					// remove dst
 232.629 +					if (jtz.inDaylightTime(new java.util.Date(Result)))
 232.630 +						Result -= jtz.getDSTSavings();
 232.631 +
 232.632 +				} else {
 232.633 +					if (mTimeZone != null) {
 232.634 +						// subtract the offset
 232.635 +						Result -= mTimeZone.getRawOffset();
 232.636 +					
 232.637 +						// remove dst
 232.638 +						if (mTimeZone.inDaylightTime(new java.util.Date(Result)))
 232.639 +							Result -= mTimeZone.getDSTSavings();
 232.640 +					} else {
 232.641 +						// unknown Time?
 232.642 +						// treat as local time, should not happen too often :)
 232.643 +						Result = new DateTime(strDate).getTime();
 232.644 +					}
 232.645 +				}
 232.646 +			} else {
 232.647 +				if (strDate.endsWith("Z")) {
 232.648 +					// GMT or UTC
 232.649 +					Result = new DateTime(strDate).getTime();
 232.650 +				} else {
 232.651 +					// unknown Time?
 232.652 +					// treat as local time, should not happen too often :)
 232.653 +					Result = new DateTime(strDate).getTime();
 232.654 +				}
 232.655 +			}
 232.656 +
 232.657 +		} catch (ParseException e) {
 232.658 +			e.printStackTrace();
 232.659 +		}
 232.660 +		
 232.661 +		return Result;
 232.662 +	}
 232.663 +	
 232.664 +	private long getStartTime() {
 232.665 +		long Result = 0;
 232.666 +		Property prop;
 232.667 +		/*
 232.668 +		 * DTSTART;TZID=Europe/Berlin:20120425T080000
 232.669 +		 * DTSTART;TZID=(GMT+01.00) Sarajevo/Warsaw/Zagreb:20120305T104500
 232.670 +		 * DTSTART:20120308T093000Z
 232.671 +		 * DTSTART;VALUE=DATE:20120709
 232.672 +		 * DTSTART;TZID=Europe/Berlin:20130330T100000
 232.673 +		 */
 232.674 +
 232.675 +		prop = calendarComponent.getProperty(Property.DTSTART);
 232.676 +		if (prop != null) {
 232.677 +			Parameter propTZ = prop.getParameter(Property.TZID);
 232.678 +			if (propTZ != null)
 232.679 +				mstrTimeZoneStart = propTZ.getValue();
 232.680 +			Result = getTimestamp(prop);
 232.681 +		}
 232.682 +		
 232.683 +		return Result;
 232.684 +	}
 232.685 +
 232.686 +	private long getEndTime() {
 232.687 +		long Result = 0;
 232.688 +		Property propDtEnd;
 232.689 +		Property propDuration;
 232.690 +		
 232.691 +		propDtEnd = calendarComponent.getProperty(Property.DTEND);
 232.692 +		propDuration = calendarComponent.getProperty(Property.DURATION);
 232.693 +		if (propDtEnd != null) {
 232.694 +			Parameter propTZ = propDtEnd.getParameter(Property.TZID);
 232.695 +			if (propTZ != null)
 232.696 +				mstrTimeZoneEnd = propTZ.getValue();
 232.697 +			Result = getTimestamp(propDtEnd);
 232.698 +
 232.699 +		} else if (propDuration != null) {
 232.700 +			Result = 0;
 232.701 +			long Start = this.getStartTime();
 232.702 +			String strDuration = propDuration.getValue();
 232.703 +			Dur dur = new Dur(strDuration);
 232.704 +			Result = Start 
 232.705 +					+ dur.getSeconds() 	* 1000 
 232.706 +					+ dur.getMinutes() 	* 60 * 1000 
 232.707 +					+ dur.getHours() 	* 60 * 60 * 1000 
 232.708 +					+ dur.getDays() 	* 60 * 60 * 24 * 1000;
 232.709 +			
 232.710 +			mstrTimeZoneEnd = mstrTimeZoneStart;
 232.711 +		}
 232.712 +
 232.713 +		
 232.714 +		return Result;
 232.715 +	}
 232.716 +	
 232.717 +	private String getTimeZoneStart() {
 232.718 +		String Result = "GMT";
 232.719 +		
 232.720 +		if (!mstrTimeZoneStart.equals("")) {
 232.721 +			Result = mstrTimeZoneStart;
 232.722 +		}
 232.723 +		
 232.724 +		return Result;
 232.725 +	}
 232.726 +
 232.727 +	private String getTimeZoneEnd() {
 232.728 +		String Result = "GMT";
 232.729 +		
 232.730 +		if (!mstrTimeZoneEnd.equals("")) {
 232.731 +			Result = mstrTimeZoneEnd;
 232.732 +		}
 232.733 +		
 232.734 +		return Result;
 232.735 +	}
 232.736 +
 232.737 +	
 232.738 +	private String getDuration() {
 232.739 +		String Result = "";
 232.740 +		Property prop = calendarComponent.getProperty("DURATION");
 232.741 +		
 232.742 +		if (prop != null) {
 232.743 +			//DURATION:PT1H
 232.744 +			Result = prop.getValue();
 232.745 +		} else {
 232.746 +			// no DURATION given by this event. we have to calculate it by ourself
 232.747 +			Result = "P";
 232.748 +			long Start = this.getStartTime();
 232.749 +			long End   = this.getEndTime();
 232.750 +			long Duration = 0;
 232.751 +			if (End != 0)
 232.752 +				Duration = (End - Start) / 1000; // get rid of the milliseconds, they cann't be described with RFC2445-Duration
 232.753 +			
 232.754 +			if (Duration < 0) {
 232.755 +				Duration = 0;
 232.756 +			}
 232.757 +			int Days = (int) Math.ceil(Duration / 24 / 60 / 60);
 232.758 +			int Hours = (int) Math.ceil((Duration - (Days * 24 * 60 * 60)) / 60 / 60);
 232.759 +			int Minutes = (int) Math.ceil((Duration - (Days * 24 * 60 * 60) - (Hours * 60 * 60)) / 60);
 232.760 +			int Seconds = (int) (Duration - (Days * 24 * 60 * 60) - (Hours * 60 * 60) - (Minutes * 60));
 232.761 +		
 232.762 +			if (Days > 0)
 232.763 +				Result += String.valueOf(Days) + "D";
 232.764 +			
 232.765 +			if (!mAllDay) {
 232.766 +				//if a ALL_DAY event occurs, there is no need for hours, minutes and seconds (Android doesn't understand them)
 232.767 +				Result += "T";
 232.768 +				Result += String.valueOf(Hours) + "H";
 232.769 +				Result += String.valueOf(Minutes) + "M";
 232.770 +				Result += String.valueOf(Seconds) + "S";
 232.771 +			}
 232.772 +		}
 232.773 +		
 232.774 +		return Result;
 232.775 +	}
 232.776 +	
 232.777 +	private int getAllDay() {
 232.778 +		int Result = 0;
 232.779 +
 232.780 +		if (mAllDay)
 232.781 +			Result = 1;
 232.782 +		
 232.783 +		return Result;
 232.784 +	}
 232.785 +
 232.786 +	/**
 232.787 +	 * opens the first items of the event
 232.788 +	 * @return success of this function
 232.789 +	 * @see AndroidEvent#createIcs()
 232.790 +	 * @see CalendarEvent#fetchBody()
 232.791 +	 * @throws CaldavProtocolException
 232.792 +	 * @throws IOException
 232.793 +	 * @throws ParserException
 232.794 +	 */
 232.795 +	private boolean parseIcs() throws CaldavProtocolException, IOException, ParserException {
 232.796 +		boolean Error = false;
 232.797 +		
 232.798 +		CalendarBuilder builder = new CalendarBuilder();
 232.799 +		CompatibilityHints.setHintEnabled(CompatibilityHints.KEY_RELAXED_UNFOLDING, true);
 232.800 +		CompatibilityHints.setHintEnabled(CompatibilityHints.KEY_RELAXED_PARSING, true);
 232.801 +		CompatibilityHints.setHintEnabled(CompatibilityHints.KEY_RELAXED_VALIDATION, true);
 232.802 +		CompatibilityHints.setHintEnabled(CompatibilityHints.KEY_OUTLOOK_COMPATIBILITY, true);
 232.803 +
 232.804 +		StringReader reader = new StringReader(this.stringIcs);
 232.805 +		try {
 232.806 +			this.calendar = builder.build(reader);
 232.807 +		} catch (ParserException ex) {
 232.808 +			// ical4j fails with this: "Cannot set timezone for UTC properties"
 232.809 +			// CREATED;TZID=America/New_York:20130129T140250
 232.810 +			Error = true;
 232.811 +		}
 232.812 +		
 232.813 +		if (!Error) {
 232.814 +			ComponentList components = null;
 232.815 +			components = this.calendar.getComponents(Component.VEVENT);
 232.816 +			if (components.size() == 0) {
 232.817 +				components = this.calendar.getComponents(Component.VTODO);
 232.818 +				if (components.size() == 0) {
 232.819 +					throw new CaldavProtocolException("unknown events in ICS");
 232.820 +				} else {
 232.821 +					Log.e(TAG, "unsupported event TODO in ICS");
 232.822 +					Error = true;
 232.823 +				}
 232.824 +			} else if (components.size() > 1) {
 232.825 +				Log.e(TAG, "Several events in ICS -> only first will be processed");
 232.826 +			}
 232.827 +	
 232.828 +			// get the TimeZone information
 232.829 +			Component mCom = this.calendar.getComponent(Component.VTIMEZONE);
 232.830 +			if (mCom != null)
 232.831 +				mVTimeZone = (VTimeZone) this.calendar.getComponent(Component.VTIMEZONE);
 232.832 +			if (mVTimeZone != null)
 232.833 +				mTimeZone = new TimeZone(mVTimeZone);
 232.834 +	
 232.835 +			if (!Error)
 232.836 +				calendarComponent = (Component) components.get(0);
 232.837 +		}
 232.838 +			 
 232.839 +		return !Error;
 232.840 +	}
 232.841 +
 232.842 +	/**
 232.843 +	 * searches for an android event
 232.844 +	 * @param androidCalendar
 232.845 +	 * @return the android event
 232.846 +	 * @throws RemoteException
 232.847 +	 */
 232.848 +	public AndroidEvent getAndroidEvent(DavCalendar androidCalendar) throws RemoteException {
 232.849 +		boolean Error = false;
 232.850 +		Uri uriEvents = Events.CONTENT_URI;
 232.851 +		Uri uriAttendee = Attendees.CONTENT_URI;
 232.852 +		Uri uriReminder = Reminders.CONTENT_URI;
 232.853 +		AndroidEvent androidEvent = null;
 232.854 +		
 232.855 +		String selection = "(" + Events._SYNC_ID + " = ?)";
 232.856 +		String[] selectionArgs = new String[] {this.getUri().toString()}; 
 232.857 +		Cursor curEvent = this.mProvider.query(uriEvents, null, selection, selectionArgs, null);
 232.858 +		
 232.859 +		Cursor curAttendee = null;
 232.860 +		Cursor curReminder = null;
 232.861 +		
 232.862 +		if (curEvent == null) {
 232.863 +			Error = true;
 232.864 +		}
 232.865 +		if (!Error) {
 232.866 +			if (curEvent.getCount() == 0) {
 232.867 +				Error = true;
 232.868 +			}
 232.869 +		}
 232.870 +		if (!Error) {
 232.871 +			curEvent.moveToNext();
 232.872 +		
 232.873 +			long EventID = curEvent.getLong(curEvent.getColumnIndex(Events._ID));
 232.874 +			Uri returnedUri = ContentUris.withAppendedId(uriEvents, EventID);
 232.875 +			
 232.876 +			//androidEvent = new AndroidEvent(this.mAccount, this.mProvider, returnedUri, androidCalendar.getAndroidCalendarUri());
 232.877 +			androidEvent = new AndroidEvent(returnedUri, androidCalendar.getAndroidCalendarUri());
 232.878 +			androidEvent.readContentValues(curEvent);
 232.879 +			
 232.880 +			selection = "(" + Attendees.EVENT_ID + " = ?)";
 232.881 +			selectionArgs = new String[] {String.valueOf(EventID)}; 
 232.882 +			curAttendee = this.mProvider.query(uriAttendee, null, selection, selectionArgs, null);
 232.883 +			selection = "(" + Reminders.EVENT_ID + " = ?)";
 232.884 +			selectionArgs = new String[] {String.valueOf(EventID)}; 
 232.885 +			curReminder = this.mProvider.query(uriReminder, null, selection, selectionArgs, null);
 232.886 +			androidEvent.readAttendees(curAttendee);
 232.887 +			androidEvent.readReminder(curReminder);
 232.888 +			curAttendee.close();
 232.889 +			curReminder.close();
 232.890 +		}
 232.891 +		curEvent.close();
 232.892 +		
 232.893 +		return androidEvent;
 232.894 +	}
 232.895 +	
 232.896 +	/**
 232.897 +	 * creates a new androidEvent from a given calendarEvent
 232.898 +	 * @param androidCalendar
 232.899 +	 * @return
 232.900 +	 * @throws ClientProtocolException
 232.901 +	 * @throws IOException
 232.902 +	 * @throws CaldavProtocolException
 232.903 +	 * @throws RemoteException
 232.904 +	 * @throws ParserException
 232.905 +	 * @see {@link SyncAdapter#synchroniseEvents(CaldavFacade, Account, ContentProviderClient, Uri, DavCalendar, SyncStats)}
 232.906 +	 */
 232.907 +	public boolean createAndroidEvent(DavCalendar androidCalendar) throws ClientProtocolException, IOException, CaldavProtocolException, RemoteException, ParserException {
 232.908 +		boolean Result = false;
 232.909 +		boolean BodyFetched = this.fetchBody();
 232.910 +		int CountAttendees = 0;
 232.911 +		int CountReminders = 0;
 232.912 +		
 232.913 +		if (BodyFetched) {
 232.914 +			//calendarEvent.readContentValues(calendarUri);
 232.915 +			this.readContentValues();
 232.916 +			this.setAndroidCalendarId(ContentUris.parseId(androidCalendar.getAndroidCalendarUri()));
 232.917 +		
 232.918 +			Uri uri = this.mProvider.insert(asSyncAdapter(Events.CONTENT_URI, this.mAccount.name, this.mAccount.type), this.ContentValues);
 232.919 +			this.setAndroidEventUri(uri);
 232.920 +		
 232.921 +			Log.d(TAG, "Creating calendar event for " + uri.toString());
 232.922 +			
 232.923 +			//check the attendees
 232.924 +			java.util.ArrayList<ContentValues> AttendeeList = this.getAttandees();
 232.925 +			for (ContentValues Attendee : AttendeeList) {
 232.926 +				this.mProvider.insert(Attendees.CONTENT_URI, Attendee);
 232.927 +				CountAttendees += 1;
 232.928 +			}
 232.929 +			
 232.930 +			//check the reminders
 232.931 +			java.util.ArrayList<ContentValues> ReminderList = this.getReminders();
 232.932 +			for (ContentValues Reminder : ReminderList) {
 232.933 +				this.mProvider.insert(Reminders.CONTENT_URI, Reminder);
 232.934 +				CountReminders += 1;
 232.935 +			}
 232.936 +			
 232.937 +			if ((CountAttendees > 0) || (CountReminders > 0)) {
 232.938 +				//the events gets dirty when attendees or reminders were added
 232.939 +				AndroidEvent androidEvent = this.getAndroidEvent(androidCalendar);
 232.940 +				
 232.941 +				androidEvent.ContentValues.put(Events.DIRTY, 0);
 232.942 +				int RowCount = this.mProvider.update(asSyncAdapter(androidEvent.getUri(), this.mAccount.name, this.mAccount.type), androidEvent.ContentValues, null, null);
 232.943 +				Result = (RowCount == 1);
 232.944 +			} else {
 232.945 +				Result = true;
 232.946 +			}
 232.947 +			
 232.948 +			
 232.949 +		}
 232.950 +		return Result;
 232.951 +	}
 232.952 +	
 232.953 +	/**
 232.954 +	 * the android event is getting updated
 232.955 +	 * @param provider
 232.956 +	 * @param account
 232.957 +	 * @param androidEvent
 232.958 +	 * @param calendarEvent
 232.959 +	 * @return
 232.960 +	 * @throws ClientProtocolException
 232.961 +	 * @throws IOException
 232.962 +	 * @throws CaldavProtocolException
 232.963 +	 * @throws RemoteException
 232.964 +	 * @throws ParserException
 232.965 +	 * @see {@link SyncAdapter#synchroniseEvents(CaldavFacade, Account, ContentProviderClient, Uri, Calendar, SyncStats)}
 232.966 +	 */
 232.967 +	public boolean updateAndroidEvent(AndroidEvent androidEvent) throws ClientProtocolException, IOException, CaldavProtocolException, RemoteException, ParserException {
 232.968 +		boolean BodyFetched = this.fetchBody();
 232.969 +		int Rows = 0;
 232.970 +		
 232.971 +		if (BodyFetched) {
 232.972 +			this.readContentValues();
 232.973 +			this.setAndroidCalendarId(androidEvent.getAndroidCalendarId());
 232.974 +			this.setAndroidEventUri(androidEvent.getUri());
 232.975 +		
 232.976 +			Log.d(TAG, "AndroidEvent is dirty: " + androidEvent.ContentValues.getAsString(Events.DIRTY));
 232.977 +			
 232.978 +			if (androidEvent.checkEventValuesChanged(this.ContentValues)) {
 232.979 +				// just set the raw data from server event into android event
 232.980 +				if (androidEvent.ContentValues.containsKey(Event.RAWDATA))
 232.981 +					androidEvent.ContentValues.remove(Event.RAWDATA);
 232.982 +				androidEvent.ContentValues.put(Event.RAWDATA, this.ContentValues.getAsString(Event.RAWDATA));
 232.983 +				
 232.984 +				//update the attendees and reminders
 232.985 +				this.updateAndroidAttendees();
 232.986 +				this.updateAndroidReminder();
 232.987 +
 232.988 +				androidEvent.ContentValues.put(Events.DIRTY, 0); // the event is now in sync
 232.989 +				Log.d(TAG, "Update calendar event: for "+androidEvent.getUri());
 232.990 +				
 232.991 +				Rows = mProvider.update(asSyncAdapter(androidEvent.getUri(), mAccount.name, mAccount.type), androidEvent.ContentValues, null, null);
 232.992 +				//Log.i(TAG, "Updated calendar event: rows effected " + Rows.toString());
 232.993 +			} else {
 232.994 +				Log.d(TAG, "Update calendar event not needed: for "+androidEvent.getUri());
 232.995 +			}
 232.996 +		}
 232.997 +		return (Rows == 1);
 232.998 +	}
 232.999 +	
232.1000 +	/**
232.1001 +	 * updates the attendees from a calendarEvent to its androidEvent.
232.1002 +	 * the calendarEvent has to know its androidEvent via {@link CalendarEvent#setAndroidEventUri(Uri)}
232.1003 +	 * @param provider
232.1004 +	 * @return
232.1005 +	 * @see SyncAdapter#updateAndroidEvent(ContentProviderClient, Account, AndroidEvent, CalendarEvent)
232.1006 +	 */
232.1007 +	private boolean updateAndroidAttendees() {
232.1008 +		boolean Result = false;
232.1009 +		
232.1010 +		try {
232.1011 +			String mSelectionClause = "(" + Attendees.EVENT_ID + " = ?)";
232.1012 +			String[] mSelectionArgs = {Long.toString(ContentUris.parseId(this.getAndroidEventUri())) };
232.1013 +			int RowDelete;
232.1014 +			RowDelete = this.mProvider.delete(Attendees.CONTENT_URI, mSelectionClause, mSelectionArgs);
232.1015 +			Log.d(TAG, "Attendees Deleted:" + String.valueOf(RowDelete));
232.1016 +			
232.1017 +			java.util.ArrayList<ContentValues> AttendeeList = this.getAttandees();
232.1018 +			for (ContentValues Attendee : AttendeeList) {
232.1019 +				this.mProvider.insert(Attendees.CONTENT_URI, Attendee);
232.1020 +			}
232.1021 +			Log.d(TAG, "Attendees Inserted:" + String.valueOf(AttendeeList.size()));
232.1022 +			Result = true;
232.1023 +		} catch (RemoteException e) {
232.1024 +			e.printStackTrace();
232.1025 +		}
232.1026 +		
232.1027 +		return Result;
232.1028 +	}
232.1029 +	
232.1030 +	/**
232.1031 +	 * update the reminders from a calendarEvent to its androidEvent.
232.1032 +	 * the calendarEvent has to know its androidEvent via {@link CalendarEvent#setAndroidEventUri(Uri)}
232.1033 +	 * @param provider
232.1034 +	 * @return
232.1035 +	 * @see SyncAdapter#updateAndroidEvent(ContentProviderClient, Account, AndroidEvent, CalendarEvent)
232.1036 +	 */
232.1037 +	private boolean updateAndroidReminder() {
232.1038 +		boolean Result = false;
232.1039 +		
232.1040 +		try {
232.1041 +			String mSelectionClause = "(" + Reminders.EVENT_ID + " = ?)";
232.1042 +			String[] mSelectionArgs = {Long.toString(ContentUris.parseId(this.getAndroidEventUri())) };
232.1043 +			int RowDelete;
232.1044 +			RowDelete = this.mProvider.delete(Reminders.CONTENT_URI, mSelectionClause, mSelectionArgs);
232.1045 +			Log.d(TAG, "Reminders Deleted:" + String.valueOf(RowDelete));
232.1046 +			
232.1047 +			
232.1048 +			Uri ReminderUri;
232.1049 +			java.util.ArrayList<ContentValues> ReminderList = this.getReminders();
232.1050 +			for (ContentValues Reminder : ReminderList) {
232.1051 +				ReminderUri = this.mProvider.insert(Reminders.CONTENT_URI, Reminder);
232.1052 +				System.out.println(ReminderUri);
232.1053 +			}
232.1054 +			Log.d(TAG, "Reminders Inserted:" + String.valueOf(ReminderList.size()));
232.1055 +			
232.1056 +			Result = true;
232.1057 +		} catch (RemoteException e) {
232.1058 +			e.printStackTrace();
232.1059 +		}
232.1060 +		
232.1061 +		return Result;
232.1062 +	}
232.1063 +	
232.1064 +	private static Uri asSyncAdapter(Uri uri, String account, String accountType) {
232.1065 +	    return uri.buildUpon()
232.1066 +	        .appendQueryParameter(android.provider.CalendarContract.CALLER_IS_SYNCADAPTER,"true")
232.1067 +	        .appendQueryParameter(Calendars.ACCOUNT_NAME, account)
232.1068 +	        .appendQueryParameter(Calendars.ACCOUNT_TYPE, accountType).build();
232.1069 +	 }
232.1070 +}
232.1071 +
   233.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   233.2 +++ b/src/org/gege/caldavsyncadapter/caldav/entities/CalendarList.java	Tue Feb 10 18:12:00 2015 +0100
   233.3 @@ -0,0 +1,155 @@
   233.4 +package org.gege.caldavsyncadapter.caldav.entities;
   233.5 +
   233.6 +import java.net.URI;
   233.7 +import java.util.ArrayList;
   233.8 +
   233.9 +//import org.gege.caldavsyncadapter.CalendarColors;
  233.10 +import org.gege.caldavsyncadapter.caldav.entities.DavCalendar.CalendarSource;
  233.11 +import org.gege.caldavsyncadapter.syncadapter.notifications.NotificationsHelper;
  233.12 +
  233.13 +import android.accounts.Account;
  233.14 +import android.content.ContentProviderClient;
  233.15 +//import android.content.ContentUris;
  233.16 +//import android.content.ContentValues;
  233.17 +import android.database.Cursor;
  233.18 +import android.net.Uri;
  233.19 +import android.os.RemoteException;
  233.20 +import android.provider.CalendarContract.Calendars;
  233.21 +//import android.util.Log;
  233.22 +
  233.23 +public class CalendarList {
  233.24 +//	private static final String TAG = "CalendarList";
  233.25 +	
  233.26 +	private java.util.ArrayList<DavCalendar> mList = new java.util.ArrayList<DavCalendar>();
  233.27 +	
  233.28 +	private Account mAccount = null;
  233.29 +	private ContentProviderClient mProvider = null;
  233.30 +	
  233.31 +	public CalendarSource Source = CalendarSource.undefined;
  233.32 +	
  233.33 +	public String ServerUrl = "";
  233.34 +	
  233.35 +	public CalendarList(Account account, ContentProviderClient provider, CalendarSource source, String serverUrl) {
  233.36 +		this.mAccount = account;
  233.37 +		this.mProvider = provider;
  233.38 +		this.Source = source;
  233.39 +		this.ServerUrl = serverUrl;
  233.40 +	}
  233.41 +	
  233.42 +/*	public Calendar getCalendarByAndroidCalendarId(int calendarId) {
  233.43 +		Calendar Result = null;
  233.44 +		
  233.45 +		for (Calendar Item : mList) {
  233.46 +			if (Item.getAndroidCalendarId() == calendarId)
  233.47 +				Result = Item;
  233.48 +		}
  233.49 +		
  233.50 +		return Result;
  233.51 +	}*/
  233.52 +	
  233.53 +	public DavCalendar getCalendarByURI(URI calendarURI) {
  233.54 +		DavCalendar Result = null;
  233.55 +		
  233.56 +		for (DavCalendar Item : mList) {
  233.57 +			if (Item.getURI().equals(calendarURI))
  233.58 +				Result = Item;
  233.59 +		}
  233.60 +		
  233.61 +		return Result;
  233.62 +	}
  233.63 +	
  233.64 +	public DavCalendar getCalendarByAndroidUri(Uri androidCalendarUri) {
  233.65 +		DavCalendar Result = null;
  233.66 +		
  233.67 +		for (DavCalendar Item : mList) {
  233.68 +			if (Item.getAndroidCalendarUri().equals(androidCalendarUri))
  233.69 +				Result = Item;
  233.70 +		}
  233.71 +		
  233.72 +		return Result;
  233.73 +	}
  233.74 +	
  233.75 +	/**
  233.76 +	 * function to get all calendars from client side android
  233.77 +	 * @return
  233.78 +	 */
  233.79 +	public boolean readCalendarFromClient() {
  233.80 +		boolean Result = false;
  233.81 +		Cursor cur = null;
  233.82 +		
  233.83 +		Uri uri = Calendars.CONTENT_URI;
  233.84 +		
  233.85 +		/* COMPAT: in the past, the serverurl was not stored within a calendar. (see #98)
  233.86 +		 * so there was no chance to see which calendars belongs to a named account.
  233.87 +		 * username + serverurl have to be unique
  233.88 +		 * ((DavCalendar.SERVERURL = ?) OR (DavCalendar.SERVERURL IS NULL))
  233.89 +		 */
  233.90 +		String selection = "(" + "(" + Calendars.ACCOUNT_NAME +  " = ?) AND " + 
  233.91 +		                         "(" + Calendars.ACCOUNT_TYPE +  " = ?) AND " +
  233.92 +		                         "((" + DavCalendar.SERVERURL +   " = ?) OR " +
  233.93 +		                         "(" + DavCalendar.SERVERURL +   " IS NULL)) AND " +
  233.94 +		                         "(" + Calendars.OWNER_ACCOUNT + " = ?)" +
  233.95 +		                   ")";
  233.96 +		String[] selectionArgs = new String[] {	mAccount.name, 
  233.97 +												mAccount.type,
  233.98 +												this.ServerUrl,
  233.99 +												mAccount.name
 233.100 +											}; 
 233.101 +
 233.102 +		// Submit the query and get a Cursor object back. 
 233.103 +		try {
 233.104 +			cur = mProvider.query(uri, null, selection, selectionArgs, null);
 233.105 +		} catch (RemoteException e) {
 233.106 +			e.printStackTrace();
 233.107 +		}
 233.108 +		
 233.109 +		if (cur != null) {
 233.110 +			while (cur.moveToNext()) {
 233.111 +				mList.add(new DavCalendar(mAccount, mProvider, cur, this.Source, this.ServerUrl));
 233.112 +			}
 233.113 +			cur.close();
 233.114 +			Result = true;
 233.115 +		}
 233.116 +		
 233.117 +		return Result;
 233.118 +	}
 233.119 +	
 233.120 +	public boolean deleteCalendarOnClientSideOnly(android.content.Context context) {
 233.121 +		boolean Result = false;
 233.122 +		
 233.123 +		for (DavCalendar androidCalendar : this.mList) {
 233.124 +			if (!androidCalendar.foundServerSide) {
 233.125 +				NotificationsHelper.signalSyncErrors(context, "CalDAV Sync Adapter", "calendar deleted: " + androidCalendar.getCalendarDisplayName());
 233.126 +				androidCalendar.deleteAndroidCalendar();
 233.127 +			}
 233.128 +		}
 233.129 +		
 233.130 +		return Result;
 233.131 +	}
 233.132 +	
 233.133 +	public void addCalendar(DavCalendar item) {
 233.134 +		item.setAccount(this.mAccount);
 233.135 +		item.setProvider(this.mProvider);
 233.136 +		item.ServerUrl = this.ServerUrl;
 233.137 +		this.mList.add(item);
 233.138 +	}
 233.139 +	public java.util.ArrayList<DavCalendar> getCalendarList() {
 233.140 +		return this.mList;
 233.141 +	}
 233.142 +	
 233.143 +	public void setAccount(Account account) {
 233.144 +		this.mAccount = account;
 233.145 +	}
 233.146 +	public void setProvider(ContentProviderClient provider) {
 233.147 +		this.mProvider = provider;
 233.148 +	}
 233.149 +	public ArrayList<Uri> getNotifyList() {
 233.150 +		ArrayList<Uri> Result = new ArrayList<Uri>();
 233.151 +		
 233.152 +		for (DavCalendar cal : this.mList) {
 233.153 +			Result.addAll(cal.getNotifyList());
 233.154 +		}
 233.155 +		
 233.156 +		return Result;
 233.157 +	}
 233.158 +}
   234.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   234.2 +++ b/src/org/gege/caldavsyncadapter/caldav/entities/DavCalendar.java	Tue Feb 10 18:12:00 2015 +0100
   234.3 @@ -0,0 +1,666 @@
   234.4 +/**
   234.5 + * Copyright (c) 2012-2013, Gerald Garcia, Timo Berger
   234.6 + * 
   234.7 + * This file is part of Andoid Caldav Sync Adapter Free.
   234.8 + *
   234.9 + * Andoid Caldav Sync Adapter Free is free software: you can redistribute 
  234.10 + * it and/or modify it under the terms of the GNU General Public License 
  234.11 + * as published by the Free Software Foundation, either version 3 of the 
  234.12 + * License, or at your option any later version.
  234.13 + *
  234.14 + * Andoid Caldav Sync Adapter Free is distributed in the hope that 
  234.15 + * it will be useful, but WITHOUT ANY WARRANTY; without even the implied 
  234.16 + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  234.17 + * GNU General Public License for more details.
  234.18 + *
  234.19 + * You should have received a copy of the GNU General Public License
  234.20 + * along with Andoid Caldav Sync Adapter Free.  
  234.21 + * If not, see <http://www.gnu.org/licenses/>.
  234.22 + * 
  234.23 + */
  234.24 +
  234.25 +package org.gege.caldavsyncadapter.caldav.entities;
  234.26 +
  234.27 +import java.io.IOException;
  234.28 +import java.net.URI;
  234.29 +import java.net.URISyntaxException;
  234.30 +import java.util.ArrayList;
  234.31 +
  234.32 +import javax.xml.parsers.ParserConfigurationException;
  234.33 +
  234.34 +import org.apache.http.client.ClientProtocolException;
  234.35 +import org.gege.caldavsyncadapter.CalendarColors;
  234.36 +import org.gege.caldavsyncadapter.Event;
  234.37 +import org.gege.caldavsyncadapter.android.entities.AndroidEvent;
  234.38 +import org.gege.caldavsyncadapter.caldav.CaldavFacade;
  234.39 +import org.gege.caldavsyncadapter.syncadapter.SyncAdapter;
  234.40 +import org.gege.caldavsyncadapter.syncadapter.notifications.NotificationsHelper;
  234.41 +import org.xml.sax.SAXException;
  234.42 +
  234.43 +import android.accounts.Account;
  234.44 +import android.content.ContentProviderClient;
  234.45 +import android.content.ContentUris;
  234.46 +import android.content.ContentValues;
  234.47 +import android.content.SyncStats;
  234.48 +import android.database.Cursor;
  234.49 +import android.net.Uri;
  234.50 +import android.os.RemoteException;
  234.51 +import android.provider.CalendarContract.Calendars;
  234.52 +import android.provider.CalendarContract.Events;
  234.53 +import android.util.Log;
  234.54 +
  234.55 +public class DavCalendar {
  234.56 +	public enum CalendarSource {
  234.57 +		undefined, Android, CalDAV
  234.58 +	}
  234.59 +		
  234.60 +	private static final String TAG = "Calendar";
  234.61 +		
  234.62 +	/**
  234.63 +	 * stores the CTAG of a calendar
  234.64 +	 */
  234.65 +	public static String CTAG = Calendars.CAL_SYNC1;
  234.66 +	
  234.67 +	/**
  234.68 +	 * stores the URI of a calendar
  234.69 +	 * example: http://caldav.example.com/calendarserver.php/calendars/username/calendarname
  234.70 +	 */
  234.71 +	public static String URI = Calendars._SYNC_ID;
  234.72 +	
  234.73 +	public static String SERVERURL = Calendars.CAL_SYNC2;
  234.74 +	
  234.75 +	private String strCalendarColor = "";
  234.76 +	
  234.77 +	private ArrayList<Uri> mNotifyList = new ArrayList<Uri>(); 
  234.78 +
  234.79 +	/**
  234.80 +	 * the event transformed into ContentValues
  234.81 +	 */
  234.82 +	public ContentValues ContentValues = new ContentValues();
  234.83 +	
  234.84 +	private Account mAccount = null;
  234.85 +	private ContentProviderClient mProvider = null;
  234.86 +	
  234.87 +	public boolean foundServerSide = false;
  234.88 +	public boolean foundClientSide = false;
  234.89 +	public CalendarSource Source = CalendarSource.undefined;
  234.90 +	
  234.91 +	public String ServerUrl = "";
  234.92 +	
  234.93 +	private ArrayList<CalendarEvent> mCalendarEvents = new ArrayList<CalendarEvent>();
  234.94 +	
  234.95 +	private int mTagCounter = 1;
  234.96 +	
  234.97 +	/**
  234.98 +	 * example: http://caldav.example.com/calendarserver.php/calendars/username/calendarname
  234.99 +	 */
 234.100 +	public URI getURI() {
 234.101 +		String strUri = this.getContentValueAsString(DavCalendar.URI);
 234.102 +		URI result = null;
 234.103 +		try {
 234.104 +			result = new URI(strUri);
 234.105 +		} catch (URISyntaxException e) {
 234.106 +			e.printStackTrace();
 234.107 +		}
 234.108 +		return result;
 234.109 +	}
 234.110 +
 234.111 +	/**
 234.112 +	 * example: http://caldav.example.com/calendarserver.php/calendars/username/calendarname
 234.113 +	 */
 234.114 +	public void setURI(URI uri) {
 234.115 +		this.setContentValueAsString(DavCalendar.URI, uri.toString());
 234.116 +	}
 234.117 +
 234.118 +	/**
 234.119 +	 * example: Cleartext Display Name 
 234.120 +	 */
 234.121 +	public String getCalendarDisplayName() {
 234.122 +		return this.getContentValueAsString(Calendars.CALENDAR_DISPLAY_NAME);
 234.123 +	}
 234.124 +
 234.125 +	/**
 234.126 +	 * example: Cleartext Display Name 
 234.127 +	 */
 234.128 +	public void setCalendarDisplayName(String displayName) {
 234.129 +		this.setContentValueAsString(Calendars.CALENDAR_DISPLAY_NAME, displayName);
 234.130 +	}
 234.131 +	
 234.132 +
 234.133 +	/**
 234.134 +	 * example: 1143
 234.135 +	 */
 234.136 +	public void setCTag(String cTag, boolean Update) {
 234.137 +		this.setContentValueAsString(DavCalendar.CTAG, cTag);
 234.138 +		if (Update) {
 234.139 +			//serverCalendar.updateAndroidCalendar(androidCalendarUri, Calendar.CTAG, serverCalendar.getcTag());
 234.140 +			try {
 234.141 +				this.updateAndroidCalendar(this.getAndroidCalendarUri(), CTAG, cTag);
 234.142 +			} catch (RemoteException e) {
 234.143 +				e.printStackTrace();
 234.144 +			}
 234.145 +		}
 234.146 +	}
 234.147 +	
 234.148 +	/**
 234.149 +	 * example: 1143
 234.150 +	 */
 234.151 +	public String getcTag() {
 234.152 +		return this.getContentValueAsString(DavCalendar.CTAG);
 234.153 +	}
 234.154 +	
 234.155 +	/**
 234.156 +	 * example: #FFCCAA 
 234.157 +	 */
 234.158 +	public void setCalendarColorAsString(String color) {
 234.159 +		int maxlen = 6;
 234.160 +		
 234.161 +		this.strCalendarColor = color;
 234.162 +		if (!color.equals("")) {
 234.163 +			String strColor = color.replace("#", "");
 234.164 +			if (strColor.length() > maxlen)
 234.165 +				strColor = strColor.substring(0, maxlen);
 234.166 +			int intColor = Integer.parseInt(strColor, 16);
 234.167 +			this.setContentValueAsInt(Calendars.CALENDAR_COLOR, intColor);
 234.168 +		}
 234.169 +	}
 234.170 +
 234.171 +	/**
 234.172 +	 * example: #FFCCAA 
 234.173 +	 */
 234.174 +	public String getCalendarColorAsString() {
 234.175 +		return this.strCalendarColor;
 234.176 +	}
 234.177 +
 234.178 +	/**
 234.179 +	 * example 12345 
 234.180 +	 */
 234.181 +	public int getCalendarColor() {
 234.182 +		return this.getContentValueAsInt(Calendars.CALENDAR_COLOR);
 234.183 +	}
 234.184 +	
 234.185 +	/**
 234.186 +	 * example 12345 
 234.187 +	 */
 234.188 +	public void setCalendarColor(int color) {
 234.189 +		this.setContentValueAsInt(Calendars.CALENDAR_COLOR, color);
 234.190 +	}
 234.191 +
 234.192 +	/**
 234.193 +	 * example: 
 234.194 +	 * 		should be: calendarname
 234.195 +	 * 		but is:    http://caldav.example.com/calendarserver.php/calendars/username/calendarname/
 234.196 +	 */
 234.197 +	public String getCalendarName() {
 234.198 +		return this.getContentValueAsString(Calendars.NAME);
 234.199 +	}
 234.200 +
 234.201 +	/**
 234.202 +	 * example: 
 234.203 +	 * 		should be: calendarname
 234.204 +	 * 		but is:    http://caldav.example.com/calendarserver.php/calendars/username/calendarname/
 234.205 +	 */
 234.206 +	public void setCalendarName(String calendarName) {
 234.207 +		this.setContentValueAsString(Calendars.NAME, calendarName);
 234.208 +	}
 234.209 +
 234.210 +	/**
 234.211 +	 * example: 8
 234.212 +	 */
 234.213 +	public int getAndroidCalendarId() {
 234.214 +		return this.getContentValueAsInt(Calendars._ID);
 234.215 +	}
 234.216 +
 234.217 +	/**
 234.218 +	 * example: 8
 234.219 +	 */
 234.220 +	public void setAndroidCalendarId(int androidCalendarId) {
 234.221 +		this.setContentValueAsInt(Calendars._ID, androidCalendarId);
 234.222 +	}
 234.223 +
 234.224 +	/**
 234.225 +	 * example: content://com.android.calendar/calendars/8
 234.226 +	 */
 234.227 +	public Uri getAndroidCalendarUri() {
 234.228 +		return ContentUris.withAppendedId(Calendars.CONTENT_URI, this.getAndroidCalendarId());
 234.229 +	}
 234.230 +	
 234.231 +	/**
 234.232 +	 * empty constructor
 234.233 +	 */
 234.234 +	public DavCalendar(CalendarSource source) {
 234.235 +		this.Source = source;
 234.236 +	}
 234.237 +	
 234.238 +	/**
 234.239 +	 * creates an new instance from a cursor
 234.240 +	 * @param cur must be a cursor from "ContentProviderClient" with Uri Calendars.CONTENT_URI
 234.241 +	 */
 234.242 +	public DavCalendar(Account account, ContentProviderClient provider, Cursor cur, CalendarSource source, String serverUrl) {
 234.243 +		this.mAccount = account;
 234.244 +		this.mProvider = provider;
 234.245 +		this.foundClientSide = true;
 234.246 +		this.Source = source;
 234.247 +		this.ServerUrl = serverUrl;
 234.248 +
 234.249 +		String strSyncID = cur.getString(cur.getColumnIndex(Calendars._SYNC_ID));
 234.250 +		String strName = cur.getString(cur.getColumnIndex(Calendars.NAME));
 234.251 +		String strDisplayName = cur.getString(cur.getColumnIndex(Calendars.CALENDAR_DISPLAY_NAME));
 234.252 +		String strCTAG = cur.getString(cur.getColumnIndex(DavCalendar.CTAG));
 234.253 +		String strServerUrl = cur.getString(cur.getColumnIndex(DavCalendar.SERVERURL));
 234.254 +		int intAndroidCalendarId = cur.getInt(cur.getColumnIndex(Calendars._ID));
 234.255 +
 234.256 +		this.setCalendarName(strName);
 234.257 +		this.setCalendarDisplayName(strDisplayName);
 234.258 +		this.setCTag(strCTAG, false);
 234.259 +		this.setAndroidCalendarId(intAndroidCalendarId);
 234.260 +		
 234.261 +		if (strSyncID == null) {
 234.262 +			this.correctSyncID(strName);
 234.263 +			strSyncID = strName;
 234.264 +		}
 234.265 +		if (strServerUrl == null) {
 234.266 +			this.correctServerUrl(serverUrl);
 234.267 +		}
 234.268 +		URI uri = null;
 234.269 +		try {
 234.270 +			uri = new URI(strSyncID);
 234.271 +		} catch (URISyntaxException e) {
 234.272 +			e.printStackTrace();
 234.273 +		}
 234.274 +		this.setURI(uri);
 234.275 +	}
 234.276 +	
 234.277 +	/**
 234.278 +	 * checks a given list of android calendars for a specific android calendar.
 234.279 +	 * this calendar should be a server calendar as it is searched for.
 234.280 +	 * if the calendar is not found, it will be created.
 234.281 +	 * @param androidCalList the list of android calendars
 234.282 +	 * @param context
 234.283 +	 * @return the found android calendar or null of fails
 234.284 +	 * @throws RemoteException
 234.285 +	 */
 234.286 +	public Uri checkAndroidCalendarList(CalendarList androidCalList, android.content.Context context) throws RemoteException {
 234.287 +		Uri androidCalendarUri = null;
 234.288 +		boolean isCalendarExist = false;
 234.289 +		
 234.290 +		DavCalendar androidCalendar = androidCalList.getCalendarByURI(this.getURI());
 234.291 +		if (androidCalendar != null) {
 234.292 +			isCalendarExist = true;
 234.293 +			androidCalendar.foundServerSide = true;
 234.294 +		}
 234.295 +		
 234.296 +
 234.297 +		if (!isCalendarExist) {
 234.298 +			DavCalendar newCal = this.createNewAndroidCalendar(this, androidCalList.getCalendarList().size(), context);
 234.299 +			if (newCal != null) {
 234.300 +				androidCalList.addCalendar(newCal);
 234.301 +				androidCalendarUri = newCal.getAndroidCalendarUri();
 234.302 +			}
 234.303 +		} else {
 234.304 +			androidCalendarUri = androidCalendar.getAndroidCalendarUri();
 234.305 +			if (!this.getCalendarColorAsString().equals("")) {
 234.306 +				//serverCalendar.updateCalendarColor(returnedCalendarUri, serverCalendar);
 234.307 +				this.updateAndroidCalendar(androidCalendarUri, Calendars.CALENDAR_COLOR, this.getCalendarColor());
 234.308 +			}
 234.309 +			if ((this.ContentValues.containsKey(Calendars.CALENDAR_DISPLAY_NAME)) && 
 234.310 +				(androidCalendar.ContentValues.containsKey(Calendars.CALENDAR_DISPLAY_NAME))) {
 234.311 +				String serverDisplayName = this.ContentValues.getAsString(Calendars.CALENDAR_DISPLAY_NAME);
 234.312 +				String clientDisplayName = androidCalendar.ContentValues.getAsString(Calendars.CALENDAR_DISPLAY_NAME);
 234.313 +				if (!serverDisplayName.equals(clientDisplayName))
 234.314 +					this.updateAndroidCalendar(androidCalendarUri, Calendars.CALENDAR_DISPLAY_NAME, serverDisplayName);
 234.315 +			}
 234.316 +		}
 234.317 +		
 234.318 +		return androidCalendarUri;
 234.319 +	}
 234.320 +	
 234.321 +	/**
 234.322 +	 * COMPAT: the calendar Uri was stored as calendar Name. this function updates the URI (_SYNC_ID)
 234.323 +	 * @param calendarUri the real calendarUri
 234.324 +	 * @return success of this function
 234.325 +	 */
 234.326 +	private boolean correctSyncID(String calendarUri) {
 234.327 +		boolean Result = false;
 234.328 +		Log.v(TAG, "correcting SyncID for calendar:" + this.getContentValueAsString(Calendars.CALENDAR_DISPLAY_NAME));
 234.329 +			
 234.330 +		ContentValues mUpdateValues = new ContentValues();
 234.331 +		mUpdateValues.put(DavCalendar.URI, calendarUri);
 234.332 +		
 234.333 +		try {
 234.334 +			mProvider.update(this.SyncAdapterCalendar(), mUpdateValues, null, null);
 234.335 +			Result = true;
 234.336 +		} catch (RemoteException e) {
 234.337 +			e.printStackTrace();
 234.338 +		}
 234.339 +		
 234.340 +		return Result;
 234.341 +	}
 234.342 +	
 234.343 +	/**
 234.344 +	 * COMPAT: the serverurl (CAL_SYNC2) was not sored within a calendar. this fixes it. (see #98)
 234.345 +	 * @param serverUrl the current serverurl
 234.346 +	 * @return success of this function
 234.347 +	 */
 234.348 +	private boolean correctServerUrl(String serverUrl) {
 234.349 +		boolean Result = false;
 234.350 +		Log.v(TAG, "correcting ServerUrl for calendar:" + this.getContentValueAsString(Calendars.CALENDAR_DISPLAY_NAME));
 234.351 +			
 234.352 +		ContentValues mUpdateValues = new ContentValues();
 234.353 +		mUpdateValues.put(DavCalendar.SERVERURL, serverUrl);
 234.354 +		
 234.355 +		try {
 234.356 +			mProvider.update(this.SyncAdapterCalendar(), mUpdateValues, null, null);
 234.357 +			Result = true;
 234.358 +		} catch (RemoteException e) {
 234.359 +			e.printStackTrace();
 234.360 +		}
 234.361 +		
 234.362 +		return Result;
 234.363 +	}
 234.364 +	
 234.365 +	/**
 234.366 +	 * creates a new androidCalendar
 234.367 +	 * @param serverCalendar
 234.368 +	 * @param index
 234.369 +	 * @param context
 234.370 +	 * @return the new androidCalendar or null if fails
 234.371 +	 */
 234.372 +	private DavCalendar createNewAndroidCalendar(DavCalendar serverCalendar, int index, android.content.Context context) {
 234.373 +		Uri newUri = null;
 234.374 +		DavCalendar Result = null;
 234.375 +		
 234.376 +		final ContentValues contentValues = new ContentValues();
 234.377 +		contentValues.put(DavCalendar.URI, serverCalendar.getURI().toString());
 234.378 +		contentValues.put(DavCalendar.SERVERURL, this.ServerUrl);
 234.379 +
 234.380 +		contentValues.put(Calendars.VISIBLE, 1);
 234.381 +		contentValues.put(Calendars.CALENDAR_DISPLAY_NAME, serverCalendar.getCalendarDisplayName());
 234.382 +		contentValues.put(Calendars.ACCOUNT_NAME, mAccount.name);
 234.383 +		contentValues.put(Calendars.ACCOUNT_TYPE, mAccount.type);
 234.384 +		contentValues.put(Calendars.OWNER_ACCOUNT, mAccount.name);
 234.385 +		contentValues.put(Calendars.SYNC_EVENTS, 1);
 234.386 +		contentValues.put(Calendars.CALENDAR_ACCESS_LEVEL, Calendars.CAL_ACCESS_OWNER);
 234.387 +		
 234.388 +		if (!serverCalendar.getCalendarColorAsString().equals("")) {
 234.389 +			contentValues.put(Calendars.CALENDAR_COLOR, serverCalendar.getCalendarColor());
 234.390 +		} else {
 234.391 +			// find a color
 234.392 +			//int index = mList.size();
 234.393 +			index = index % CalendarColors.colors.length;
 234.394 +			contentValues.put(Calendars.CALENDAR_COLOR, CalendarColors.colors[index]);
 234.395 +		}
 234.396 +
 234.397 +		try {
 234.398 +			newUri = mProvider.insert(asSyncAdapter(Calendars.CONTENT_URI, mAccount.name, mAccount.type), contentValues);
 234.399 +		} catch (RemoteException e) {
 234.400 +			e.printStackTrace();
 234.401 +		}
 234.402 +
 234.403 +		// it is possible that this calendar already exists but the provider failed to find it within isCalendarExist()
 234.404 +		// the adapter would try to create a new calendar but the provider fails again to create a new calendar.
 234.405 +		if (newUri != null) {
 234.406 +			long newCalendarId = ContentUris.parseId(newUri);
 234.407 +
 234.408 +			Cursor cur = null;
 234.409 +			Uri uri = Calendars.CONTENT_URI;   
 234.410 +			String selection = "(" + Calendars._ID +  " = ?)";
 234.411 +			String[] selectionArgs = new String[] {String.valueOf(newCalendarId)}; 
 234.412 +
 234.413 +			// Submit the query and get a Cursor object back. 
 234.414 +			try {
 234.415 +				cur = mProvider.query(uri, null, selection, selectionArgs, null);
 234.416 +			} catch (RemoteException e) {
 234.417 +				e.printStackTrace();
 234.418 +			}
 234.419 +			
 234.420 +			if (cur != null) {
 234.421 +				while (cur.moveToNext()) {
 234.422 +					Result = new DavCalendar(mAccount, mProvider, cur, this.Source, this.ServerUrl);
 234.423 +					Result.foundServerSide = true;
 234.424 +				}
 234.425 +				cur.close();
 234.426 +				//if (Result != null)
 234.427 +				//	this.mList.add(Result);
 234.428 +			}
 234.429 +			Log.i(TAG, "New calendar created : URI=" + Result.getAndroidCalendarUri());
 234.430 +			NotificationsHelper.signalSyncErrors(context, "CalDAV Sync Adapter", "new calendar found: " + Result.getCalendarDisplayName());
 234.431 +			mNotifyList.add(Result.getAndroidCalendarUri());
 234.432 +		}
 234.433 +		
 234.434 +		return Result;
 234.435 +	}
 234.436 +	
 234.437 +	/**
 234.438 +	 * there is no corresponding calendar on server side. time to delete this calendar on android side.
 234.439 +	 * @return 
 234.440 +	 */
 234.441 +	public boolean deleteAndroidCalendar() {
 234.442 +		boolean Result = false;
 234.443 +		
 234.444 +		String mSelectionClause = "(" + Calendars._ID + " = ?)";
 234.445 +		int calendarId  = this.getAndroidCalendarId();
 234.446 +		String[] mSelectionArgs = {Long.toString(calendarId)};
 234.447 +		
 234.448 +		int CountDeleted = 0;
 234.449 +		try {
 234.450 +			CountDeleted = mProvider.delete(this.SyncAdapter(), mSelectionClause, mSelectionArgs);
 234.451 +			Log.i(TAG,"Calendar deleted: " + String.valueOf(calendarId));
 234.452 +			this.mNotifyList.add(this.getAndroidCalendarUri());
 234.453 +			Result = true;
 234.454 +		} catch (RemoteException e) {
 234.455 +			e.printStackTrace();
 234.456 +		}	
 234.457 +		Log.d(TAG, "Android Calendars deleted: " + Integer.toString(CountDeleted));
 234.458 +		
 234.459 +		return Result;
 234.460 +	}
 234.461 +
 234.462 +	/**
 234.463 +	 * updates the android calendar
 234.464 +	 * @param calendarUri the uri of the androidCalendar
 234.465 +	 * @param target must be from android.provider.CalendarContract.Calendars
 234.466 +	 * @param value the new value for the target
 234.467 +	 * @throws RemoteException
 234.468 +	 */
 234.469 +	private void updateAndroidCalendar(Uri calendarUri, String target, int value) throws RemoteException {
 234.470 +		ContentValues mUpdateValues = new ContentValues();
 234.471 +		mUpdateValues.put(target, value);
 234.472 +		
 234.473 +		mProvider.update(asSyncAdapter(calendarUri, mAccount.name, mAccount.type), mUpdateValues, null, null);
 234.474 +	}
 234.475 +
 234.476 +	/**
 234.477 +	 * updates the android calendar
 234.478 +	 * @param calendarUri the uri of the androidCalendar
 234.479 +	 * @param target must be from android.provider.CalendarContract.Calendars
 234.480 +	 * @param value the new value for the target
 234.481 +	 * @throws RemoteException
 234.482 +	 */
 234.483 +	private void updateAndroidCalendar(Uri calendarUri, String target, String value) throws RemoteException {
 234.484 +		ContentValues mUpdateValues = new ContentValues();
 234.485 +		mUpdateValues.put(target, value);
 234.486 +		
 234.487 +		mProvider.update(asSyncAdapter(calendarUri, mAccount.name, mAccount.type), mUpdateValues, null, null);
 234.488 +	}
 234.489 +	
 234.490 +	/**
 234.491 +	 * marks the android event as already handled
 234.492 +	 * @return
 234.493 +	 * @see AndroidEvent#cInternalTag
 234.494 +	 * @see SyncAdapter#synchroniseEvents(CaldavFacade, Account, ContentProviderClient, Uri, DavCalendar, SyncStats)
 234.495 +	 * @throws RemoteException
 234.496 +	 */
 234.497 +	public boolean tagAndroidEvent(AndroidEvent androidEvent) throws RemoteException {
 234.498 +		boolean Result = false;
 234.499 +		
 234.500 +		ContentValues values = new ContentValues();
 234.501 +		//values.put(Event.INTERNALTAG, 1);
 234.502 +		values.put(Event.INTERNALTAG, mTagCounter);
 234.503 +		//values.put(Event.INTERNALTAG, String.valueOf(mTagCounter));
 234.504 +		
 234.505 +		int RowCount = this.mProvider.update(asSyncAdapter(androidEvent.getUri(), this.mAccount.name, this.mAccount.type), values, null, null);
 234.506 +		//Log.v(TAG,"event tag nr: " + String.valueOf(mTagCounter));
 234.507 +		//Log.v(TAG,"Rows updated: " + String.valueOf(RowCount));
 234.508 +		
 234.509 +		if (RowCount == 1) {
 234.510 +			Result = true;
 234.511 +			mTagCounter += 1;
 234.512 +		} else {
 234.513 +			Log.v(TAG,"EVENT NOT TAGGED!");
 234.514 +		}
 234.515 +		
 234.516 +		return Result;
 234.517 +	} 
 234.518 +	
 234.519 +	/**
 234.520 +	 * removes the tag of all android events
 234.521 +	 * @return
 234.522 +	 * @see AndroidEvent#cInternalTag
 234.523 +	 * @see SyncAdapter#synchroniseEvents(CaldavFacade, Account, ContentProviderClient, Uri, DavCalendar, SyncStats)
 234.524 +	 * @throws RemoteException
 234.525 +	 */
 234.526 +	public int untagAndroidEvents() throws RemoteException {
 234.527 +		int RowCount = 0;
 234.528 +		int Steps = 100;
 234.529 +		ContentValues values = new ContentValues();
 234.530 +		values.put(Event.INTERNALTAG, 0);
 234.531 +
 234.532 +		for (int i=1; i < this.mTagCounter; i = i + Steps) {
 234.533 +			String mSelectionClause = "(CAST(" + Event.INTERNALTAG +  " AS INT) >= ?) AND (CAST(" + Event.INTERNALTAG +  " AS INT) < ?) AND (" + Events.CALENDAR_ID + " = ?)";
 234.534 +			String[] mSelectionArgs = {String.valueOf(i), String.valueOf(i + Steps), Long.toString(ContentUris.parseId(this.getAndroidCalendarUri()))};
 234.535 +			RowCount += this.mProvider.update(asSyncAdapter(Events.CONTENT_URI, this.mAccount.name, this.mAccount.type), values, mSelectionClause, mSelectionArgs);
 234.536 +		}
 234.537 +		/*String mSelectionClause = "(" + Event.INTERNALTAG +  " > ?) AND (" + Events.CALENDAR_ID + " = ?)";
 234.538 +		String[] mSelectionArgs = {"0", Long.toString(ContentUris.parseId(this.getAndroidCalendarUri()))};
 234.539 +		RowCount += this.mProvider.update(asSyncAdapter(Events.CONTENT_URI, this.mAccount.name, this.mAccount.type), values, mSelectionClause, mSelectionArgs);*/
 234.540 +		
 234.541 +		//Log.d(TAG, "Rows reseted: " + RowCount.toString());
 234.542 +		return RowCount;
 234.543 +	}
 234.544 +	/**
 234.545 +	 * Events not being tagged are for deletion 
 234.546 +	 * @return
 234.547 +	 * @see AndroidEvent#cInternalTag
 234.548 +	 * @see SyncAdapter#synchroniseEvents(CaldavFacade, Account, ContentProviderClient, Uri, DavCalendar, SyncStats)
 234.549 +	 * @throws RemoteException
 234.550 +	 */
 234.551 +	public int deleteUntaggedEvents() throws RemoteException {
 234.552 +		String mSelectionClause = "(" + Event.INTERNALTAG +  " < ?) AND (" + Events.CALENDAR_ID + " = ?)";
 234.553 +		String[] mSelectionArgs = {"1", Long.toString(ContentUris.parseId(this.getAndroidCalendarUri()))};
 234.554 +		
 234.555 +		int CountDeleted = this.mProvider.delete(asSyncAdapter(Events.CONTENT_URI, this.mAccount.name, this.mAccount.type), mSelectionClause, mSelectionArgs);	
 234.556 +		//Log.d(TAG, "Rows deleted: " + CountDeleted.toString());
 234.557 +		return CountDeleted;
 234.558 +	}
 234.559 +	
 234.560 +	private Uri SyncAdapterCalendar() {
 234.561 +		return asSyncAdapter(this.getAndroidCalendarUri(), mAccount.name, mAccount.type);
 234.562 +	}
 234.563 +	private Uri SyncAdapter() {
 234.564 +		return asSyncAdapter(Calendars.CONTENT_URI, mAccount.name, mAccount.type);
 234.565 +	}
 234.566 +	private static Uri asSyncAdapter(Uri uri, String account, String accountType) {
 234.567 +	    return uri.buildUpon()
 234.568 +	        .appendQueryParameter(android.provider.CalendarContract.CALLER_IS_SYNCADAPTER,"true")
 234.569 +	        .appendQueryParameter(Calendars.ACCOUNT_NAME, account)
 234.570 +	        .appendQueryParameter(Calendars.ACCOUNT_TYPE, accountType).build();
 234.571 +	}
 234.572 +	
 234.573 +	public void setAccount(Account account) {
 234.574 +		this.mAccount = account;
 234.575 +	}
 234.576 +	public void setProvider(ContentProviderClient provider) {
 234.577 +		this.mProvider = provider;
 234.578 +	}
 234.579 +	
 234.580 +	/**
 234.581 +	 * general access function to ContentValues
 234.582 +	 * @param Item the item name from Calendars.*
 234.583 +	 * @return the value for the item
 234.584 +	 */
 234.585 +	private String getContentValueAsString(String Item) {
 234.586 +		String Result = "";
 234.587 +		if (this.ContentValues.containsKey(Item))
 234.588 +			Result = this.ContentValues.getAsString(Item);
 234.589 +		return Result;
 234.590 +	}
 234.591 +	/**
 234.592 +	 * general access function to ContentValues
 234.593 +	 * @param Item the item name from Calendars.*
 234.594 +	 * @return the value for the item
 234.595 +	 */
 234.596 +	private int getContentValueAsInt(String Item) {
 234.597 +		int Result = 0;
 234.598 +		if (this.ContentValues.containsKey(Item))
 234.599 +			Result = this.ContentValues.getAsInteger(Item);
 234.600 +		return Result;
 234.601 +	}
 234.602 +	
 234.603 +	/**
 234.604 +	 * general access function to ContentValues
 234.605 +	 * @param Item the item name from Calendars.*
 234.606 +	 * @param Value the value for the item
 234.607 +	 * @return success of this function
 234.608 +	 */
 234.609 +	private boolean setContentValueAsString(String Item, String Value) {
 234.610 +		boolean Result = false;
 234.611 +		
 234.612 +		if (this.ContentValues.containsKey(Item))
 234.613 +			this.ContentValues.remove(Item);
 234.614 +		this.ContentValues.put(Item, Value);
 234.615 +		
 234.616 +		return Result;
 234.617 +	}
 234.618 +	
 234.619 +	/**
 234.620 +	 * general access function to ContentValues
 234.621 +	 * @param Item the item name from Calendars.*
 234.622 +	 * @param Value the value for the item
 234.623 +	 * @return success of this function
 234.624 +	 */
 234.625 +	private boolean setContentValueAsInt(String Item, int Value) {
 234.626 +		boolean Result = false;
 234.627 +		
 234.628 +		if (this.ContentValues.containsKey(Item))
 234.629 +			this.ContentValues.remove(Item);
 234.630 +		this.ContentValues.put(Item, Value);
 234.631 +		
 234.632 +		return Result;
 234.633 +	}
 234.634 +	
 234.635 +	public ArrayList<Uri> getNotifyList() {
 234.636 +		return this.mNotifyList;
 234.637 +	}
 234.638 +
 234.639 +	public ArrayList<CalendarEvent> getCalendarEvents() {
 234.640 +		return this.mCalendarEvents;
 234.641 +	}
 234.642 +	
 234.643 +	public boolean readCalendarEvents(CaldavFacade facade) {
 234.644 +		boolean Result = false;
 234.645 +		
 234.646 +		try {
 234.647 +			this.mCalendarEvents = facade.getCalendarEvents(this);
 234.648 +			Result = true;
 234.649 +		} catch (ClientProtocolException e) {
 234.650 +			e.printStackTrace();
 234.651 +			Result = false;
 234.652 +		} catch (URISyntaxException e) {
 234.653 +			e.printStackTrace();
 234.654 +			Result = false;
 234.655 +		} catch (IOException e) {
 234.656 +			e.printStackTrace();
 234.657 +			Result = false;
 234.658 +		} catch (ParserConfigurationException e) {
 234.659 +			e.printStackTrace();
 234.660 +			Result = false;
 234.661 +		} catch (SAXException e) {
 234.662 +			e.printStackTrace();
 234.663 +			Result = false;
 234.664 +		}
 234.665 +		
 234.666 +		return Result;
 234.667 +	}
 234.668 +	
 234.669 +}
   235.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   235.2 +++ b/src/org/gege/caldavsyncadapter/caldav/http/HttpDelete.java	Tue Feb 10 18:12:00 2015 +0100
   235.3 @@ -0,0 +1,11 @@
   235.4 +package org.gege.caldavsyncadapter.caldav.http;
   235.5 +
   235.6 +import org.apache.http.client.methods.HttpEntityEnclosingRequestBase;
   235.7 +import org.apache.http.client.methods.HttpUriRequest;
   235.8 +
   235.9 +public class HttpDelete extends HttpEntityEnclosingRequestBase implements HttpUriRequest {
  235.10 +	@Override
  235.11 +	public String getMethod() {
  235.12 +		return "DELETE";
  235.13 +	}
  235.14 +}
   236.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   236.2 +++ b/src/org/gege/caldavsyncadapter/caldav/http/HttpPropFind.java	Tue Feb 10 18:12:00 2015 +0100
   236.3 @@ -0,0 +1,36 @@
   236.4 +/**
   236.5 + * Copyright (c) 2012-2013, Gerald Garcia
   236.6 + * 
   236.7 + * This file is part of Andoid Caldav Sync Adapter Free.
   236.8 + *
   236.9 + * Andoid Caldav Sync Adapter Free is free software: you can redistribute 
  236.10 + * it and/or modify it under the terms of the GNU General Public License 
  236.11 + * as published by the Free Software Foundation, either version 3 of the 
  236.12 + * License, or at your option any later version.
  236.13 + *
  236.14 + * Andoid Caldav Sync Adapter Free is distributed in the hope that 
  236.15 + * it will be useful, but WITHOUT ANY WARRANTY; without even the implied 
  236.16 + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  236.17 + * GNU General Public License for more details.
  236.18 + *
  236.19 + * You should have received a copy of the GNU General Public License
  236.20 + * along with Andoid Caldav Sync Adapter Free.  
  236.21 + * If not, see <http://www.gnu.org/licenses/>.
  236.22 + * 
  236.23 + */
  236.24 +
  236.25 +package org.gege.caldavsyncadapter.caldav.http;
  236.26 +
  236.27 +import org.apache.http.client.methods.HttpEntityEnclosingRequestBase;
  236.28 +import org.apache.http.client.methods.HttpUriRequest;
  236.29 +
  236.30 +public class HttpPropFind extends HttpEntityEnclosingRequestBase implements HttpUriRequest {
  236.31 +
  236.32 +	@Override
  236.33 +	public String getMethod() {
  236.34 +		return "PROPFIND";
  236.35 +	}
  236.36 +
  236.37 +
  236.38 +
  236.39 +}
   237.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   237.2 +++ b/src/org/gege/caldavsyncadapter/caldav/http/HttpPut.java	Tue Feb 10 18:12:00 2015 +0100
   237.3 @@ -0,0 +1,11 @@
   237.4 +package org.gege.caldavsyncadapter.caldav.http;
   237.5 +
   237.6 +import org.apache.http.client.methods.HttpEntityEnclosingRequestBase;
   237.7 +import org.apache.http.client.methods.HttpUriRequest;
   237.8 +
   237.9 +public class HttpPut extends HttpEntityEnclosingRequestBase implements HttpUriRequest {
  237.10 +	@Override
  237.11 +	public String getMethod() {
  237.12 +		return "PUT";
  237.13 +	}
  237.14 +}
   238.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   238.2 +++ b/src/org/gege/caldavsyncadapter/caldav/http/HttpReport.java	Tue Feb 10 18:12:00 2015 +0100
   238.3 @@ -0,0 +1,34 @@
   238.4 +/**
   238.5 + * Copyright (c) 2012-2013, Gerald Garcia
   238.6 + * 
   238.7 + * This file is part of Andoid Caldav Sync Adapter Free.
   238.8 + *
   238.9 + * Andoid Caldav Sync Adapter Free is free software: you can redistribute 
  238.10 + * it and/or modify it under the terms of the GNU General Public License 
  238.11 + * as published by the Free Software Foundation, either version 3 of the 
  238.12 + * License, or at your option any later version.
  238.13 + *
  238.14 + * Andoid Caldav Sync Adapter Free is distributed in the hope that 
  238.15 + * it will be useful, but WITHOUT ANY WARRANTY; without even the implied 
  238.16 + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  238.17 + * GNU General Public License for more details.
  238.18 + *
  238.19 + * You should have received a copy of the GNU General Public License
  238.20 + * along with Andoid Caldav Sync Adapter Free.  
  238.21 + * If not, see <http://www.gnu.org/licenses/>.
  238.22 + * 
  238.23 + */
  238.24 +
  238.25 +package org.gege.caldavsyncadapter.caldav.http;
  238.26 +
  238.27 +import org.apache.http.client.methods.HttpEntityEnclosingRequestBase;
  238.28 +import org.apache.http.client.methods.HttpUriRequest;
  238.29 +
  238.30 +public class HttpReport extends HttpEntityEnclosingRequestBase implements HttpUriRequest {
  238.31 +
  238.32 +	@Override
  238.33 +	public String getMethod() {
  238.34 +		return "REPORT";
  238.35 +	}
  238.36 +
  238.37 +}
   239.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   239.2 +++ b/src/org/gege/caldavsyncadapter/caldav/xml/CalendarHomeHandler.java	Tue Feb 10 18:12:00 2015 +0100
   239.3 @@ -0,0 +1,94 @@
   239.4 +/**
   239.5 + * Copyright (c) 2012-2013, David Wiesner
   239.6 + * 
   239.7 + * This file is part of Andoid Caldav Sync Adapter Free.
   239.8 + *
   239.9 + * Andoid Caldav Sync Adapter Free is free software: you can redistribute 
  239.10 + * it and/or modify it under the terms of the GNU General Public License 
  239.11 + * as published by the Free Software Foundation, either version 3 of the 
  239.12 + * License, or at your option any later version.
  239.13 + *
  239.14 + * Andoid Caldav Sync Adapter Free is distributed in the hope that 
  239.15 + * it will be useful, but WITHOUT ANY WARRANTY; without even the implied 
  239.16 + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  239.17 + * GNU General Public License for more details.
  239.18 + *
  239.19 + * You should have received a copy of the GNU General Public License
  239.20 + * along with Andoid Caldav Sync Adapter Free.  
  239.21 + * If not, see <http://www.gnu.org/licenses/>.
  239.22 + * 
  239.23 + */
  239.24 +
  239.25 +package org.gege.caldavsyncadapter.caldav.xml;
  239.26 +
  239.27 +import java.net.URI;
  239.28 +import java.net.URISyntaxException;
  239.29 +import java.util.ArrayList;
  239.30 +import java.util.List;
  239.31 +
  239.32 +import org.gege.caldavsyncadapter.BuildConfig;
  239.33 +import org.xml.sax.Attributes;
  239.34 +import org.xml.sax.SAXException;
  239.35 +import org.xml.sax.helpers.DefaultHandler;
  239.36 +
  239.37 +import android.util.Log;
  239.38 +
  239.39 +public class CalendarHomeHandler extends DefaultHandler {
  239.40 +
  239.41 +	private static final String HREF = "href";
  239.42 +	private static final String CALENDAR_HOME_SET = "calendar-home-set";
  239.43 +	private boolean isInCalendarHomeSet = false;
  239.44 +	private StringBuilder stringBuilder = new StringBuilder();
  239.45 +	private String currentElement;
  239.46 +	private URI principalURI;
  239.47 +	
  239.48 +	public List<URI> calendarHomeSet = new ArrayList<URI>();
  239.49 +
  239.50 +	public CalendarHomeHandler(URI principalURI) {
  239.51 +		this.principalURI = principalURI;
  239.52 +	}
  239.53 +
  239.54 +	@Override
  239.55 +	public void startElement(String uri, String localName, String qName,
  239.56 +			Attributes attributes) throws SAXException {
  239.57 +		if (CALENDAR_HOME_SET.equals(localName)) {
  239.58 +			isInCalendarHomeSet = true;
  239.59 +		}
  239.60 +		currentElement = localName;
  239.61 +		stringBuilder.setLength(0);
  239.62 +	}
  239.63 +
  239.64 +	@Override
  239.65 +	public void characters(char[] ch, int start, int length)
  239.66 +			throws SAXException {
  239.67 +		if (HREF.equals(currentElement) && isInCalendarHomeSet) {
  239.68 +			stringBuilder.append(ch, start, length);
  239.69 +		}
  239.70 +	}
  239.71 +
  239.72 +	@Override
  239.73 +	public void endElement(String uri, String localName, String qName)
  239.74 +			throws SAXException {
  239.75 +		if (HREF.equals(localName) && isInCalendarHomeSet) {
  239.76 +			String calendarHomeSet = stringBuilder.toString();
  239.77 +			try {
  239.78 +				URI calendarHomeSetURI = new URI(calendarHomeSet);
  239.79 +				calendarHomeSetURI = principalURI.resolve(calendarHomeSetURI);
  239.80 +				this.calendarHomeSet.add(calendarHomeSetURI);
  239.81 +			} catch (URISyntaxException e) {
  239.82 +				if (BuildConfig.DEBUG) {
  239.83 +					Log.e(CalendarHomeHandler.class.getSimpleName(),
  239.84 +							"uri malformed: " + calendarHomeSet);
  239.85 +				} else {
  239.86 +					Log.e(CalendarHomeHandler.class.getSimpleName(),
  239.87 +							"uri malformed in calendar-home-set/href");
  239.88 +				}
  239.89 +			}
  239.90 +			//stringBuilder.setLength(0);
  239.91 +		}
  239.92 +		if (CALENDAR_HOME_SET.equals(localName)) {
  239.93 +			isInCalendarHomeSet = false;
  239.94 +		}
  239.95 +		currentElement=null;
  239.96 +	}
  239.97 +}
   240.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   240.2 +++ b/src/org/gege/caldavsyncadapter/caldav/xml/CalendarsHandler.java	Tue Feb 10 18:12:00 2015 +0100
   240.3 @@ -0,0 +1,130 @@
   240.4 +/**
   240.5 + * Copyright (c) 2012-2013, David Wiesner
   240.6 + * 
   240.7 + * This file is part of Andoid Caldav Sync Adapter Free.
   240.8 + *
   240.9 + * Andoid Caldav Sync Adapter Free is free software: you can redistribute 
  240.10 + * it and/or modify it under the terms of the GNU General Public License 
  240.11 + * as published by the Free Software Foundation, either version 3 of the 
  240.12 + * License, or at your option any later version.
  240.13 + *
  240.14 + * Andoid Caldav Sync Adapter Free is distributed in the hope that 
  240.15 + * it will be useful, but WITHOUT ANY WARRANTY; without even the implied 
  240.16 + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  240.17 + * GNU General Public License for more details.
  240.18 + *
  240.19 + * You should have received a copy of the GNU General Public License
  240.20 + * along with Andoid Caldav Sync Adapter Free.  
  240.21 + * If not, see <http://www.gnu.org/licenses/>.
  240.22 + * 
  240.23 + */
  240.24 +
  240.25 +package org.gege.caldavsyncadapter.caldav.xml;
  240.26 +
  240.27 +import java.net.URI;
  240.28 +import java.net.URISyntaxException;
  240.29 +import java.util.ArrayList;
  240.30 +import java.util.Arrays;
  240.31 +import java.util.List;
  240.32 +
  240.33 +import org.gege.caldavsyncadapter.BuildConfig;
  240.34 +import org.gege.caldavsyncadapter.caldav.entities.DavCalendar;
  240.35 +import org.gege.caldavsyncadapter.caldav.entities.DavCalendar.CalendarSource;
  240.36 +import org.xml.sax.Attributes;
  240.37 +import org.xml.sax.SAXException;
  240.38 +import org.xml.sax.helpers.DefaultHandler;
  240.39 +
  240.40 +import android.util.Log;
  240.41 +
  240.42 +public class CalendarsHandler extends DefaultHandler {
  240.43 +
  240.44 +	private static final String CALENDAR = "calendar";
  240.45 +	private static final String RESOURCETYPE = "resourcetype";
  240.46 +	private static final String CALENDAR_COLOR = "calendar-color";
  240.47 +	private static final String GETCTAG = "getctag";
  240.48 +	private static final String DISPLAYNAME = "displayname";
  240.49 +	private URI homeURI;
  240.50 +
  240.51 +	public CalendarsHandler(URI homeURI) {
  240.52 +		this.homeURI = homeURI;
  240.53 +	}
  240.54 +
  240.55 +	private static final String RESPONSE = "response";
  240.56 +	private static final String HREF = "href";
  240.57 +
  240.58 +	private StringBuilder stringBuilder = new StringBuilder();
  240.59 +	private String currentElement;
  240.60 +	private DavCalendar calendar;
  240.61 +	public List<DavCalendar> calendars = new ArrayList<DavCalendar>();
  240.62 +	private boolean isInResourceType = false;
  240.63 +	private boolean isCalendarResource;
  240.64 +
  240.65 +	public final static List<String> TAGS = Arrays.asList(HREF, RESOURCETYPE,
  240.66 +			DISPLAYNAME, GETCTAG, CALENDAR_COLOR);
  240.67 +
  240.68 +	@Override
  240.69 +	public void startElement(String uri, String localName, String qName,
  240.70 +			Attributes attributes) throws SAXException {
  240.71 +		if (RESPONSE.equals(localName)) {
  240.72 +			calendar = new DavCalendar(CalendarSource.CalDAV);
  240.73 +			isCalendarResource = false;
  240.74 +		} else if (RESOURCETYPE.equals(localName)) {
  240.75 +			isInResourceType = true;
  240.76 +		} else if (isInResourceType && CALENDAR.equals(localName)) {
  240.77 +			isCalendarResource = true;
  240.78 +		}
  240.79 +		currentElement = localName;
  240.80 +		stringBuilder.setLength(0);
  240.81 +	}
  240.82 +
  240.83 +	@Override
  240.84 +	public void characters(char[] ch, int start, int length)
  240.85 +			throws SAXException {
  240.86 +		if (TAGS.contains(currentElement)) {
  240.87 +			stringBuilder.append(ch, start, length);
  240.88 +		}
  240.89 +	}
  240.90 +
  240.91 +	@Override
  240.92 +	public void endElement(String uri, String localName, String qName)
  240.93 +			throws SAXException {
  240.94 +		if (TAGS.contains(localName)) {
  240.95 +			if (calendar != null) {
  240.96 +				if (HREF.equals(localName)) {
  240.97 +					String calendarUrl = stringBuilder.toString();
  240.98 +					calendarUrl = calendarUrl.trim();
  240.99 +					try {
 240.100 +						URI calendarURI = new URI(calendarUrl);
 240.101 +						calendar.setURI(homeURI.resolve(calendarURI));
 240.102 +					} catch (URISyntaxException e) {
 240.103 +						if (BuildConfig.DEBUG) {
 240.104 +							Log.e(CalendarsHandler.class.getSimpleName(),
 240.105 +									"calendar-uri malformed: " + calendarUrl);
 240.106 +						} else {
 240.107 +							Log.e(CalendarsHandler.class.getSimpleName(),
 240.108 +									"uri malformed in href");
 240.109 +						}
 240.110 +					}
 240.111 +				} else if (DISPLAYNAME.equals(localName)) {
 240.112 +					calendar.setCalendarDisplayName(stringBuilder.toString());
 240.113 +				} else if (GETCTAG.equals(localName)) {
 240.114 +					calendar.setCTag(stringBuilder.toString(), false);
 240.115 +				} else if (CALENDAR_COLOR.equals(localName)) {
 240.116 +					calendar.setCalendarColorAsString(stringBuilder.toString());
 240.117 +				}
 240.118 +			}
 240.119 +			//stringBuilder.setLength(0);
 240.120 +		} else if (RESPONSE.equals(localName)) {
 240.121 +			if (isCalendarResource && isValidCalendar(calendar)) {
 240.122 +				calendars.add(calendar);
 240.123 +			}
 240.124 +		}
 240.125 +		currentElement=null;
 240.126 +	}
 240.127 +
 240.128 +	private boolean isValidCalendar(DavCalendar calendar) {
 240.129 +		return calendar != null && calendar.getURI() != null
 240.130 +				&& calendar.getcTag() != null
 240.131 +				&& calendar.getCalendarDisplayName() != null;
 240.132 +	}
 240.133 +}
   241.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   241.2 +++ b/src/org/gege/caldavsyncadapter/caldav/xml/MultiStatusHandler.java	Tue Feb 10 18:12:00 2015 +0100
   241.3 @@ -0,0 +1,64 @@
   241.4 +package org.gege.caldavsyncadapter.caldav.xml;
   241.5 +
   241.6 +import org.gege.caldavsyncadapter.caldav.xml.sax.MultiStatus;
   241.7 +import org.gege.caldavsyncadapter.caldav.xml.sax.Prop;
   241.8 +import org.gege.caldavsyncadapter.caldav.xml.sax.PropStat;
   241.9 +import org.gege.caldavsyncadapter.caldav.xml.sax.Response;
  241.10 +import org.xml.sax.Attributes;
  241.11 +import org.xml.sax.SAXException;
  241.12 +import org.xml.sax.helpers.DefaultHandler;
  241.13 +
  241.14 +
  241.15 +public class MultiStatusHandler extends DefaultHandler {
  241.16 +	public MultiStatus mMultiStatus;
  241.17 +	private Response mResponse;
  241.18 +	private PropStat mPropStat;
  241.19 +	private Prop mProp;
  241.20 +	private String mCurrentValue;
  241.21 +	
  241.22 +	private String RESPONSE = "response";
  241.23 +	private String HREF = "href";
  241.24 +	private String PROPSTAT = "propstat";
  241.25 +	private String PROP = "prop";
  241.26 +	private String STATUS = "status";
  241.27 +	private String CALENDARDATA = "calendar-data";
  241.28 +	private String GETETAG = "getetag";
  241.29 +	
  241.30 +	public MultiStatusHandler() {
  241.31 +		mMultiStatus = new MultiStatus();
  241.32 +	}
  241.33 +	
  241.34 +	@Override
  241.35 +	public void characters(char[] ch, int start, int length) throws SAXException {
  241.36 +		mCurrentValue += new String(ch, start, length);
  241.37 +	}
  241.38 +
  241.39 +	@Override
  241.40 +	public void startElement(String uri, String localName, String qName, Attributes atts) throws SAXException {
  241.41 +		mCurrentValue = "";
  241.42 +		if (localName.equals(RESPONSE)) {
  241.43 +			mResponse = new Response();
  241.44 +			mMultiStatus.ResponseList.add(mResponse);
  241.45 +		} else if (localName.equals(PROPSTAT)) {
  241.46 +			mPropStat = new PropStat();
  241.47 +			mResponse.propstat = mPropStat;
  241.48 +		} else if (localName.equals(PROP)) {
  241.49 +			mProp = new Prop();
  241.50 +			mPropStat.prop = mProp;
  241.51 +		}
  241.52 +	}
  241.53 +
  241.54 +	@Override
  241.55 +	public void endElement(String uri, String localName, String qName) throws SAXException {
  241.56 +		if (localName.equals(HREF)) {
  241.57 +			mResponse.href = mCurrentValue;
  241.58 +		} else if (localName.equals(STATUS)) {
  241.59 +			if (mPropStat != null)
  241.60 +				mPropStat.status = mCurrentValue;
  241.61 +		} else if (localName.equals(CALENDARDATA)) {
  241.62 +			mProp.calendardata = mCurrentValue;
  241.63 +		} else if (localName.equals(GETETAG)) {
  241.64 +			mProp.getetag = mCurrentValue;
  241.65 +		}
  241.66 +	}
  241.67 +}
   242.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   242.2 +++ b/src/org/gege/caldavsyncadapter/caldav/xml/ServerInfoHandler.java	Tue Feb 10 18:12:00 2015 +0100
   242.3 @@ -0,0 +1,81 @@
   242.4 +/**
   242.5 + * Copyright (c) 2012-2013, David Wiesner
   242.6 + * 
   242.7 + * This file is part of Andoid Caldav Sync Adapter Free.
   242.8 + *
   242.9 + * Andoid Caldav Sync Adapter Free is free software: you can redistribute 
  242.10 + * it and/or modify it under the terms of the GNU General Public License 
  242.11 + * as published by the Free Software Foundation, either version 3 of the 
  242.12 + * License, or at your option any later version.
  242.13 + *
  242.14 + * Andoid Caldav Sync Adapter Free is distributed in the hope that 
  242.15 + * it will be useful, but WITHOUT ANY WARRANTY; without even the implied 
  242.16 + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  242.17 + * GNU General Public License for more details.
  242.18 + *
  242.19 + * You should have received a copy of the GNU General Public License
  242.20 + * along with Andoid Caldav Sync Adapter Free.  
  242.21 + * If not, see <http://www.gnu.org/licenses/>.
  242.22 + * 
  242.23 + */
  242.24 +
  242.25 +package org.gege.caldavsyncadapter.caldav.xml;
  242.26 +
  242.27 +import java.util.Arrays;
  242.28 +import java.util.List;
  242.29 +
  242.30 +import org.xml.sax.Attributes;
  242.31 +import org.xml.sax.SAXException;
  242.32 +import org.xml.sax.helpers.DefaultHandler;
  242.33 +
  242.34 +public class ServerInfoHandler extends DefaultHandler {
  242.35 +
  242.36 +	private static final String HREF = "href";
  242.37 +	private static final String PRINCIPAL_URL = "principal-URL";
  242.38 +	private static final String CURRENT_USER_PRINCIPAL = "current-user-principal";
  242.39 +	private final static List<String> TAGS = Arrays.asList(
  242.40 +			CURRENT_USER_PRINCIPAL, PRINCIPAL_URL);
  242.41 +	private StringBuilder stringBuilder = new StringBuilder();
  242.42 +	private String inParentElement;
  242.43 +	private String currentElement;
  242.44 +
  242.45 +	public String currentUserPrincipal = null;
  242.46 +	public String principalUrl = null;
  242.47 +
  242.48 +	@Override
  242.49 +	public void startElement(String uri, String localName, String qName,
  242.50 +			Attributes attributes) throws SAXException {
  242.51 +		if (TAGS.contains(localName)) {
  242.52 +			inParentElement = localName;
  242.53 +		}
  242.54 +		currentElement = localName;
  242.55 +		stringBuilder.setLength(0);
  242.56 +	}
  242.57 +
  242.58 +	@Override
  242.59 +	public void characters(char[] ch, int start, int length)
  242.60 +			throws SAXException {
  242.61 +		if (HREF.equals(currentElement) && TAGS.contains(inParentElement)) {
  242.62 +			stringBuilder.append(ch, start, length);
  242.63 +		}
  242.64 +	}
  242.65 +
  242.66 +	@Override
  242.67 +	public void endElement(String uri, String localName, String qName)
  242.68 +			throws SAXException {
  242.69 +		//if (TAGS.contains(inParentElement)) {
  242.70 +		if (HREF.equals(currentElement) && TAGS.contains(inParentElement)) {
  242.71 +			if (CURRENT_USER_PRINCIPAL.equals(inParentElement)) {
  242.72 +				currentUserPrincipal = stringBuilder.toString();
  242.73 +			} else {
  242.74 +				principalUrl = stringBuilder.toString();
  242.75 +			}
  242.76 +		}
  242.77 +		 if(TAGS.contains(localName)){
  242.78 +			inParentElement = null;
  242.79 +			//stringBuilder.setLength(0);
  242.80 +		}
  242.81 +		 currentElement=null;
  242.82 +	
  242.83 +	}
  242.84 +}
   243.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   243.2 +++ b/src/org/gege/caldavsyncadapter/caldav/xml/sax/MultiStatus.java	Tue Feb 10 18:12:00 2015 +0100
   243.3 @@ -0,0 +1,7 @@
   243.4 +package org.gege.caldavsyncadapter.caldav.xml.sax;
   243.5 +
   243.6 +import java.util.ArrayList;
   243.7 +
   243.8 +public class MultiStatus {
   243.9 +	public ArrayList<Response> ResponseList = new ArrayList<Response>();
  243.10 +}
   244.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   244.2 +++ b/src/org/gege/caldavsyncadapter/caldav/xml/sax/Prop.java	Tue Feb 10 18:12:00 2015 +0100
   244.3 @@ -0,0 +1,6 @@
   244.4 +package org.gege.caldavsyncadapter.caldav.xml.sax;
   244.5 +
   244.6 +public class Prop {
   244.7 +	public String calendardata = "";
   244.8 +	public String getetag = "";
   244.9 +}
   245.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   245.2 +++ b/src/org/gege/caldavsyncadapter/caldav/xml/sax/PropStat.java	Tue Feb 10 18:12:00 2015 +0100
   245.3 @@ -0,0 +1,6 @@
   245.4 +package org.gege.caldavsyncadapter.caldav.xml.sax;
   245.5 +
   245.6 +public class PropStat {
   245.7 +	public Prop prop;
   245.8 +	public String status = "";
   245.9 +}
   246.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   246.2 +++ b/src/org/gege/caldavsyncadapter/caldav/xml/sax/Response.java	Tue Feb 10 18:12:00 2015 +0100
   246.3 @@ -0,0 +1,6 @@
   246.4 +package org.gege.caldavsyncadapter.caldav.xml.sax;
   246.5 +
   246.6 +public class Response {
   246.7 +	public String href = "";
   246.8 +	public PropStat propstat;
   246.9 +}
   247.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   247.2 +++ b/src/org/gege/caldavsyncadapter/syncadapter/SyncAdapter.java	Tue Feb 10 18:12:00 2015 +0100
   247.3 @@ -0,0 +1,636 @@
   247.4 +/**
   247.5 + * Copyright (c) 2012-2013, Gerald Garcia, David Wiesner, Timo Berger
   247.6 + * 
   247.7 + * This file is part of Andoid Caldav Sync Adapter Free.
   247.8 + *
   247.9 + * Andoid Caldav Sync Adapter Free is free software: you can redistribute 
  247.10 + * it and/or modify it under the terms of the GNU General Public License 
  247.11 + * as published by the Free Software Foundation, either version 3 of the 
  247.12 + * License, or at your option any later version.
  247.13 + *
  247.14 + * Andoid Caldav Sync Adapter Free is distributed in the hope that 
  247.15 + * it will be useful, but WITHOUT ANY WARRANTY; without even the implied 
  247.16 + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  247.17 + * GNU General Public License for more details.
  247.18 + *
  247.19 + * You should have received a copy of the GNU General Public License
  247.20 + * along with Andoid Caldav Sync Adapter Free.  
  247.21 + * If not, see <http://www.gnu.org/licenses/>.
  247.22 + * 
  247.23 + */
  247.24 +
  247.25 +package org.gege.caldavsyncadapter.syncadapter;
  247.26 +
  247.27 +import java.io.IOException;
  247.28 +import java.net.URI;
  247.29 +//import java.net.MalformedURLException;
  247.30 +import java.net.URISyntaxException;
  247.31 +import java.util.ArrayList;
  247.32 +//import java.security.GeneralSecurityException;
  247.33 +
  247.34 +import javax.xml.parsers.ParserConfigurationException;
  247.35 +
  247.36 +import net.fortuna.ical4j.data.ParserException;
  247.37 +
  247.38 +import org.apache.http.ParseException;
  247.39 +import org.apache.http.client.ClientProtocolException;
  247.40 +import org.gege.caldavsyncadapter.Event;
  247.41 +import org.gege.caldavsyncadapter.android.entities.AndroidEvent;
  247.42 +import org.gege.caldavsyncadapter.authenticator.AuthenticatorActivity;
  247.43 +import org.gege.caldavsyncadapter.caldav.CaldavFacade;
  247.44 +import org.gege.caldavsyncadapter.caldav.CaldavProtocolException;
  247.45 +import org.gege.caldavsyncadapter.caldav.entities.DavCalendar;
  247.46 +import org.gege.caldavsyncadapter.caldav.entities.CalendarEvent;
  247.47 +import org.gege.caldavsyncadapter.caldav.entities.CalendarList;
  247.48 +import org.gege.caldavsyncadapter.caldav.entities.DavCalendar.CalendarSource;
  247.49 +import org.gege.caldavsyncadapter.syncadapter.notifications.NotificationsHelper;
  247.50 +import org.xml.sax.SAXException;
  247.51 +
  247.52 +import android.accounts.Account;
  247.53 +import android.accounts.AccountManager;
  247.54 +import android.content.AbstractThreadedSyncAdapter;
  247.55 +import android.content.ContentProviderClient;
  247.56 +import android.content.ContentUris;
  247.57 +import android.content.ContentValues;
  247.58 +import android.content.Context;
  247.59 +import android.content.SyncResult;
  247.60 +import android.content.SyncStats;
  247.61 +import android.content.pm.PackageManager.NameNotFoundException;
  247.62 +import android.database.Cursor;
  247.63 +import android.net.Uri;
  247.64 +import android.os.Bundle;
  247.65 +import android.os.RemoteException;
  247.66 +import android.provider.CalendarContract.Attendees;
  247.67 +import android.provider.CalendarContract.Calendars;
  247.68 +import android.provider.CalendarContract.Events;
  247.69 +import android.provider.CalendarContract.Reminders;
  247.70 +import android.util.Log;
  247.71 +
  247.72 +public class SyncAdapter extends AbstractThreadedSyncAdapter {
  247.73 +
  247.74 +	private static final String TAG = "SyncAdapter";
  247.75 +	private AccountManager mAccountManager;
  247.76 +	private String mVersion = "";
  247.77 +	private int mCountPerformSync = 0;
  247.78 +	private int mCountSyncCanceled = 0;
  247.79 +	private int mCountProviderFailed = 0;
  247.80 +	
  247.81 +	private int mCountProviderFailedMax = 3;
  247.82 +//	private Context mContext;
  247.83 +	
  247.84 +	
  247.85 +/*	private static final String[] CALENDAR_PROJECTION = new String[] {
  247.86 +	    Calendars._ID,                           // 0
  247.87 +	    Calendars.ACCOUNT_NAME,                  // 1
  247.88 +	    Calendars.CALENDAR_DISPLAY_NAME,         // 2
  247.89 +	    Calendars.OWNER_ACCOUNT,                 // 3
  247.90 +	    Calendar.CTAG                            // 4
  247.91 +	};*/
  247.92 +	  
  247.93 +/*	// The indices for the projection array above.
  247.94 +	private static final int PROJECTION_ID_INDEX = 0;
  247.95 +	private static final int PROJECTION_ACCOUNT_NAME_INDEX = 1;
  247.96 +	private static final int PROJECTION_DISPLAY_NAME_INDEX = 2;
  247.97 +	private static final int PROJECTION_OWNER_ACCOUNT_INDEX = 3;
  247.98 +*/
  247.99 +	
 247.100 +/*
 247.101 +	private static final String[] EVENT_PROJECTION = new String[] {
 247.102 +		Events._ID,
 247.103 +		Events._SYNC_ID,
 247.104 +		Events.SYNC_DATA1,
 247.105 +		Events.CALENDAR_ID
 247.106 +	};
 247.107 +*/
 247.108 +	
 247.109 +	// ignore same CTag
 247.110 +	//private static final boolean FORCE_SYNCHRONIZE = false;
 247.111 +	// drop all calendar before synchro
 247.112 +	//private static final boolean DROP_CALENDAR_EVENTS = false;
 247.113 +	
 247.114 +	public SyncAdapter(Context context, boolean autoInitialize) {
 247.115 +		super(context, autoInitialize);
 247.116 +		//android.os.Debug.waitForDebugger();
 247.117 +		mAccountManager = AccountManager.get(context);
 247.118 +		try {
 247.119 +			mVersion = context.getPackageManager().getPackageInfo(context.getPackageName(), 0).versionName;
 247.120 +		} catch (NameNotFoundException e) {
 247.121 +			e.printStackTrace();
 247.122 +		}
 247.123 +//		mContext = context;
 247.124 +	}
 247.125 +
 247.126 +	@Override
 247.127 +	public void onPerformSync(Account account, Bundle extras, String authority,
 247.128 +			ContentProviderClient provider, SyncResult syncResult) {
 247.129 +		boolean bolError = false;
 247.130 +		
 247.131 +		String url = mAccountManager.getUserData(account, AuthenticatorActivity.USER_DATA_URL_KEY);
 247.132 +		this.mCountPerformSync += 1;
 247.133 +		Log.v(TAG, "onPerformSync() count:" + String.valueOf(this.mCountPerformSync) + " on " + account.name + " with URL " + url);
 247.134 +
 247.135 +		CalendarList serverCalList;
 247.136 +		
 247.137 +		CalendarList androidCalList = new CalendarList(account, provider, CalendarSource.Android, url);
 247.138 +		androidCalList.readCalendarFromClient();
 247.139 +		ArrayList<Uri> notifyList = new ArrayList<Uri>();
 247.140 +
 247.141 +		try {
 247.142 + 			String Username = "";
 247.143 +			String UserDataVersion = mAccountManager.getUserData(account, AuthenticatorActivity.USER_DATA_VERSION);
 247.144 +			if (UserDataVersion == null) {
 247.145 +				Username = account.name;
 247.146 +			} else {
 247.147 +				Username = mAccountManager.getUserData(account, AuthenticatorActivity.USER_DATA_USERNAME);
 247.148 +			}
 247.149 +
 247.150 +			CaldavFacade facade = new CaldavFacade(Username, mAccountManager.getPassword(account), url);
 247.151 +			facade.setAccount(account);
 247.152 +			facade.setProvider(provider);
 247.153 +			facade.setVersion(mVersion);
 247.154 +			serverCalList = facade.getCalendarList(this.getContext());
 247.155 +			//String davProperties = facade.getLastDav();
 247.156 +			Log.i(TAG, String.valueOf(androidCalList.getCalendarList().size()) + " calendars found at android");
 247.157 +			
 247.158 +			for (DavCalendar serverCalendar : serverCalList.getCalendarList()) {
 247.159 +				Log.i(TAG, "Detected calendar name=" + serverCalendar.getCalendarDisplayName() + " URI=" + serverCalendar.getURI());
 247.160 +
 247.161 +				Uri androidCalendarUri = serverCalendar.checkAndroidCalendarList(androidCalList, this.getContext());
 247.162 +
 247.163 +				// check if the adapter was able to get an existing calendar or create a new one
 247.164 +				if (androidCalendarUri != null) {
 247.165 +					// the provider seems to work correct, reset the counter
 247.166 +					mCountProviderFailed = 0;
 247.167 +					DavCalendar androidCalendar = androidCalList.getCalendarByAndroidUri(androidCalendarUri);
 247.168 +					
 247.169 +					//if ((FORCE_SYNCHRONIZE) || (androidCalendar.getcTag() == null) || (!androidCalendar.getcTag().equals(serverCalendar.getcTag()))) {
 247.170 +					if ((androidCalendar.getcTag() == null) || (!androidCalendar.getcTag().equals(serverCalendar.getcTag()))) {
 247.171 +							Log.d(TAG, "CTag has changed, something to synchronise");
 247.172 +							if (serverCalendar.readCalendarEvents(facade)) {
 247.173 +								this.synchroniseEvents(androidCalendar, serverCalendar, syncResult.stats, notifyList);
 247.174 +
 247.175 +								Log.d(TAG, "Updating stored CTag");
 247.176 +								//serverCalendar.updateAndroidCalendar(androidCalendarUri, Calendar.CTAG, serverCalendar.getcTag());
 247.177 +								androidCalendar.setCTag(serverCalendar.getcTag(), true);
 247.178 +							} else {
 247.179 +								Log.d(TAG, "unable to read events from server calendar");
 247.180 +							}
 247.181 +					} else {
 247.182 +						Log.d(TAG, "CTag has not changed, nothing to do");
 247.183 +	
 247.184 +						/* this is unnecessary. "SkippedEntries" are:
 247.185 +						 * Counter for tracking how many entries, either from the server or the local store, 
 247.186 +						 * were ignored during the sync operation. This could happen if the SyncAdapter detected 
 247.187 +						 * some unparsable data but decided to skip it and move on rather than failing immediately. 
 247.188 +						 */
 247.189 +						
 247.190 +						/*long CalendarID = ContentUris.parseId(androidCalendarUri);
 247.191 +						String selection = "(" + Events.CALENDAR_ID + " = ?)";
 247.192 +						String[] selectionArgs = new String[] {String.valueOf(CalendarID)}; 
 247.193 +						Cursor countCursor = provider.query(Events.CONTENT_URI, new String[] {"count(*) AS count"},
 247.194 +					                selection,
 247.195 +					                selectionArgs,
 247.196 +					                null);
 247.197 +	
 247.198 +				        countCursor.moveToFirst();
 247.199 +				        int count = countCursor.getInt(0);
 247.200 +				        syncResult.stats.numSkippedEntries += count;
 247.201 +				        countCursor.close();*/
 247.202 +						
 247.203 +					}
 247.204 +					
 247.205 +					this.checkDirtyAndroidEvents(provider, account, androidCalendarUri, facade, serverCalendar.getURI(), syncResult.stats, notifyList);
 247.206 +				} else {
 247.207 +					// this happens if the data provider failes to get an existing or create a new calendar
 247.208 +					mCountProviderFailed += 1;
 247.209 +					Log.e(TAG, "failed to get an existing or create a new calendar");
 247.210 +					syncResult.stats.numIoExceptions += 1;
 247.211 +					if (mCountProviderFailed >= mCountProviderFailedMax) {
 247.212 +						// see issue #96
 247.213 +						NotificationsHelper.signalSyncErrors(this.getContext(), "Caldav sync error (provider failed)", "are you using CyanogenMod in Incognito Mode?");
 247.214 +					} else {
 247.215 +						NotificationsHelper.signalSyncErrors(this.getContext(), "Caldav sync error (provider failed)", "the provider failed to get an existing or create a new calendar");
 247.216 +					}
 247.217 +					bolError = true;
 247.218 +				}
 247.219 +			}
 247.220 +			
 247.221 +			if (!bolError) {
 247.222 +				// check whether a calendar is not synced -> delete it at android
 247.223 +				androidCalList.deleteCalendarOnClientSideOnly(this.getContext());
 247.224 +			}
 247.225 +			
 247.226 +			// notify the ContentResolver
 247.227 +			for (Uri uri : androidCalList.getNotifyList()) {
 247.228 +				this.getContext().getContentResolver().notifyChange(uri, null);
 247.229 +			}
 247.230 +			for (Uri uri : serverCalList.getNotifyList()) {
 247.231 +				this.getContext().getContentResolver().notifyChange(uri, null);
 247.232 +			}
 247.233 +			for (Uri uri : notifyList) {
 247.234 +				this.getContext().getContentResolver().notifyChange(uri, null);
 247.235 +			}
 247.236 +			
 247.237 +			//Log.i(TAG,"Statistiks for Calendar: " + serverCalendar.getURI().toString());
 247.238 +			//Log.i(TAG,"Statistiks for AndroidCalendar: " + androidCalendar.getAndroidCalendarUri().toString());
 247.239 +			Log.i(TAG,"Entries:                       " + String.valueOf(syncResult.stats.numEntries));
 247.240 +			Log.i(TAG,"Rows inserted:                 " + String.valueOf(syncResult.stats.numInserts));
 247.241 +			Log.i(TAG,"Rows updated:                  " + String.valueOf(syncResult.stats.numUpdates));
 247.242 +			Log.i(TAG,"Rows deleted:                  " + String.valueOf(syncResult.stats.numDeletes));
 247.243 +			Log.i(TAG,"Rows skipped:                  " + String.valueOf(syncResult.stats.numSkippedEntries));
 247.244 +			Log.i(TAG,"Io Exceptions:                 " + String.valueOf(syncResult.stats.numIoExceptions));
 247.245 +			Log.i(TAG,"Parse Exceptions:              " + String.valueOf(syncResult.stats.numParseExceptions));
 247.246 +			Log.i(TAG,"Auth Exceptions:               " + String.valueOf(syncResult.stats.numAuthExceptions));
 247.247 +			Log.i(TAG,"Conflict Detected Exceptions:  " + String.valueOf(syncResult.stats.numConflictDetectedExceptions));
 247.248 +
 247.249 +		/*} catch (final AuthenticatorException e) {
 247.250 +            syncResult.stats.numParseExceptions++;
 247.251 +            Log.e(TAG, "AuthenticatorException", e);*/
 247.252 +        /*} catch (final OperationCanceledException e) {
 247.253 +            Log.e(TAG, "OperationCanceledExcetpion", e);*/
 247.254 +        } catch (final IOException e) {
 247.255 +            Log.e(TAG, "IOException", e);
 247.256 +            syncResult.stats.numIoExceptions++;
 247.257 +            NotificationsHelper.signalSyncErrors(this.getContext(), "Caldav sync error (IO)", e.getMessage());
 247.258 +            //NotificationsHelper.getCurrentSyncLog().addException(e);
 247.259 +            /*} catch (final AuthenticationException e) {
 247.260 +            //mAccountManager.invalidateAuthToken(Constants.ACCOUNT_TYPE, authtoken);
 247.261 +            syncResult.stats.numAuthExceptions++;
 247.262 +            Log.e(TAG, "AuthenticationException", e);*/
 247.263 +        } catch (final ParseException e) {
 247.264 +            syncResult.stats.numParseExceptions++;
 247.265 +            Log.e(TAG, "ParseException", e);
 247.266 +            NotificationsHelper.signalSyncErrors(this.getContext(), "Caldav sync error (parsing)", e.getMessage());
 247.267 +            //NotificationsHelper.getCurrentSyncLog().addException(e);
 247.268 +        /*} catch (final JSONException e) {
 247.269 +            syncResult.stats.numParseExceptions++;
 247.270 +            Log.e(TAG, "JSONException", e);*/
 247.271 +		} catch (Exception e) {
 247.272 +			Log.e(TAG, "Updating calendar exception " + e.getClass().getName(), e);
 247.273 +            syncResult.stats.numParseExceptions++;
 247.274 +            NotificationsHelper.signalSyncErrors(this.getContext(), "Caldav sync error (general)", e.getMessage());
 247.275 +            //NotificationsHelper.getCurrentSyncLog().addException(e);
 247.276 +			//throw new RuntimeException(e);
 247.277 +		}
 247.278 +	}
 247.279 +
 247.280 +	public void onSyncCanceled () {
 247.281 +		//TODO: implement SyncCanceled
 247.282 +		this.mCountSyncCanceled += 1;
 247.283 +		Log.v(TAG, "onSyncCanceled() count:" + String.valueOf(this.mCountSyncCanceled));
 247.284 +	}
 247.285 +
 247.286 +	
 247.287 +	/**
 247.288 +	 * both calender event and android event have been found.
 247.289 +	 * server wins always at the moment.
 247.290 +	 * @param androidCalendar
 247.291 +	 * @param serverCalendar
 247.292 +	 * @param stats
 247.293 +	 * @param notifyList
 247.294 +	 * @throws ClientProtocolException
 247.295 +	 * @throws URISyntaxException
 247.296 +	 * @throws IOException
 247.297 +	 * @throws ParserConfigurationException
 247.298 +	 * @throws SAXException
 247.299 +	 * @throws RemoteException
 247.300 +	 * @throws CaldavProtocolException
 247.301 +	 * @throws ParserException
 247.302 +	 * @see SyncAdapter#updateAndroidEvent(ContentProviderClient, Account, AndroidEvent, CalendarEvent)
 247.303 +	 * @see SyncAdapter#tagAndroidEvent(ContentProviderClient, Account, AndroidEvent)
 247.304 +	 * @see SyncAdapter#untagAndroidEvents(ContentProviderClient, Account, Uri)
 247.305 +	 * @see SyncAdapter#deleteUntaggedEvents(ContentProviderClient, Account, Uri)
 247.306 +	 */
 247.307 +	private void synchroniseEvents(
 247.308 +				DavCalendar androidCalendar, 
 247.309 +				DavCalendar serverCalendar, 
 247.310 +				SyncStats stats, 
 247.311 +				ArrayList<Uri> notifyList
 247.312 +			) throws ClientProtocolException, URISyntaxException, IOException, ParserConfigurationException, SAXException, RemoteException, CaldavProtocolException, ParserException {
 247.313 +		
 247.314 +		/*if (DROP_CALENDAR_EVENTS) {
 247.315 +			dropAllEvents(account, provider, androidCalendar.getAndroidCalendarUri());
 247.316 +		}*/
 247.317 +		
 247.318 +		int rowInsert = 0;
 247.319 +		int rowUpdate = 0;
 247.320 +		int rowTag = 0;
 247.321 +		int rowDelete = 0;
 247.322 +		int rowUntag = 0;
 247.323 +		int rowSkip = 0;
 247.324 +		
 247.325 +		for (CalendarEvent calendarEvent : serverCalendar.getCalendarEvents()) {
 247.326 +			try {
 247.327 +				AndroidEvent androidEvent = calendarEvent.getAndroidEvent(androidCalendar);
 247.328 +				
 247.329 +				Log.i(TAG, "Event " + calendarEvent.getUri().toString()+ " androidUri="+androidEvent);
 247.330 +				
 247.331 +				if (androidEvent == null) {
 247.332 +					/* new android event */
 247.333 +					if (calendarEvent.createAndroidEvent(androidCalendar)) {
 247.334 +						rowInsert += 1;
 247.335 +						androidEvent = calendarEvent.getAndroidEvent(androidCalendar);
 247.336 +						notifyList.add(androidEvent.getUri());
 247.337 +					} else {
 247.338 +						rowSkip += 1;
 247.339 +					}
 247.340 +				} else {
 247.341 +					/* the android exists */
 247.342 +					String androidETag = androidEvent.getETag();
 247.343 +					if (androidETag == null)
 247.344 +						androidETag = "";
 247.345 +					Log.d(TAG, "Event compare: " + androidETag + " <> " + calendarEvent.getETag().toString());
 247.346 +					if ((androidEvent.getETag() == null) || (!androidETag.equals(calendarEvent.getETag()))) {
 247.347 +						/* the android event is getting updated */
 247.348 +						if (calendarEvent.updateAndroidEvent(androidEvent)) {
 247.349 +							rowUpdate += 1;
 247.350 +							notifyList.add(androidEvent.getUri());
 247.351 +						} else {
 247.352 +							rowSkip += 1;
 247.353 +						}
 247.354 +					}
 247.355 +				}
 247.356 +				if (androidEvent != null)
 247.357 +					//if (androidEvent.tagAndroidEvent())
 247.358 +					if (androidCalendar.tagAndroidEvent(androidEvent))
 247.359 +						rowTag += 1;
 247.360 +				
 247.361 +				
 247.362 +			} catch (ParserException ex) {
 247.363 +				Log.e(TAG, "Parser exception", ex);
 247.364 +				stats.numParseExceptions++;
 247.365 +
 247.366 +	            NotificationsHelper.signalSyncErrors(getContext(), "Caldav sync error (parsing)", ex.getMessage());
 247.367 +	            //NotificationsHelper.getCurrentSyncLog().addException(ex);
 247.368 +			} catch (CaldavProtocolException ex) {
 247.369 +				Log.e(TAG, "Caldav exception", ex);
 247.370 +				stats.numParseExceptions++;
 247.371 +
 247.372 +	            NotificationsHelper.signalSyncErrors(getContext(), "Caldav sync error (caldav)", ex.getMessage());
 247.373 +	            //NotificationsHelper.getCurrentSyncLog().addException(ex);
 247.374 +			}
 247.375 +		}
 247.376 +		
 247.377 +		rowDelete = androidCalendar.deleteUntaggedEvents();
 247.378 +		rowUntag = androidCalendar.untagAndroidEvents();
 247.379 +
 247.380 +		/*Log.i(TAG,"Statistiks for Calendar: " + serverCalendar.getURI().toString());
 247.381 +		Log.i(TAG,"Statistiks for AndroidCalendar: " + androidCalendar.getAndroidCalendarUri().toString());
 247.382 +		Log.i(TAG,"Rows inserted: " + String.valueOf(rowInsert));
 247.383 +		Log.i(TAG,"Rows updated:  " + String.valueOf(rowUpdate));
 247.384 +		Log.i(TAG,"Rows deleted:  " + String.valueOf(rowDelete));
 247.385 +		Log.i(TAG,"Rows skipped:  " + String.valueOf(rowSkip));*/
 247.386 +		Log.i(TAG,"Rows tagged:   " + String.valueOf(rowTag));
 247.387 +		Log.i(TAG,"Rows untagged: " + String.valueOf(rowUntag));
 247.388 +		
 247.389 +		stats.numInserts += rowInsert;
 247.390 +		stats.numUpdates += rowUpdate;
 247.391 +		stats.numDeletes += rowDelete;
 247.392 +		stats.numSkippedEntries += rowSkip;
 247.393 +		stats.numEntries += rowInsert + rowUpdate + rowDelete;
 247.394 +
 247.395 +	}
 247.396 +	
 247.397 +	/**
 247.398 +	 * checks the android events for the dirty flag.
 247.399 +	 * the flag is set by android when the event has been changed. 
 247.400 +	 * the dirty flag is removed when an android event has been updated from calendar event
 247.401 +	 * @param provider
 247.402 +	 * @param account
 247.403 +	 * @param calendarUri
 247.404 +	 * @param facade
 247.405 +	 * @param caldavCalendarUri
 247.406 +	 * @param stats
 247.407 +	 * @param notifyList
 247.408 +	 * @return count of dirty events
 247.409 +	 */
 247.410 +	private int checkDirtyAndroidEvents(
 247.411 +				ContentProviderClient provider, 
 247.412 +				Account account, 
 247.413 +				Uri calendarUri, 
 247.414 +				CaldavFacade facade, 
 247.415 +				URI caldavCalendarUri, 
 247.416 +				SyncStats stats, 
 247.417 +				ArrayList<Uri> notifyList
 247.418 +			) {
 247.419 +		Cursor curEvent = null;
 247.420 +		Cursor curAttendee = null;
 247.421 +		Cursor curReminder = null;
 247.422 +		Long EventID;
 247.423 +		Long CalendarID;
 247.424 +		AndroidEvent androidEvent = null;
 247.425 +		int rowDirty = 0;
 247.426 +		int rowInsert = 0;
 247.427 +		int rowUpdate = 0;
 247.428 +		int rowDelete = 0;
 247.429 +		
 247.430 +		try {
 247.431 +			CalendarID = ContentUris.parseId(calendarUri);
 247.432 +			String selection = "(" + Events.DIRTY + " = ?) AND (" + Events.CALENDAR_ID + " = ?)";
 247.433 +			String[] selectionArgs = new String[] {"1", CalendarID.toString()}; 
 247.434 +			curEvent = provider.query(Events.CONTENT_URI, null, selection, selectionArgs, null);
 247.435 +			
 247.436 +			while (curEvent.moveToNext()) {
 247.437 +				EventID = curEvent.getLong(curEvent.getColumnIndex(Events._ID));
 247.438 +				Uri returnedUri = ContentUris.withAppendedId(Events.CONTENT_URI, EventID);
 247.439 +				
 247.440 +				//androidEvent = new AndroidEvent(account, provider, returnedUri, calendarUri);
 247.441 +				androidEvent = new AndroidEvent(returnedUri, calendarUri);
 247.442 +				androidEvent.readContentValues(curEvent);
 247.443 +				
 247.444 +				selection = "(" + Attendees.EVENT_ID + " = ?)";
 247.445 +				selectionArgs = new String[] {String.valueOf(EventID)};
 247.446 +				curAttendee = provider.query(Attendees.CONTENT_URI, null, selection, selectionArgs, null);
 247.447 +				selection = "(" + Reminders.EVENT_ID + " = ?)";
 247.448 +				selectionArgs = new String[] {String.valueOf(EventID)};
 247.449 +				curReminder = provider.query(Reminders.CONTENT_URI, null, selection, selectionArgs, null);
 247.450 +				androidEvent.readAttendees(curAttendee);
 247.451 +				androidEvent.readReminder(curReminder);
 247.452 +				curAttendee.close();
 247.453 +				curReminder.close();
 247.454 +				
 247.455 +				String SyncID = androidEvent.ContentValues.getAsString(Events._SYNC_ID);
 247.456 +				
 247.457 +				boolean Deleted = false;
 247.458 +				int intDeleted = 0;
 247.459 +				intDeleted = curEvent.getInt(curEvent.getColumnIndex(Events.DELETED));
 247.460 +				Deleted = (intDeleted == 1);
 247.461 +
 247.462 +				if (SyncID == null) {
 247.463 +					// new Android event
 247.464 +					String newGUID = java.util.UUID.randomUUID().toString() + "-caldavsyncadapter";
 247.465 +					String calendarPath = caldavCalendarUri.getPath();
 247.466 +					if (!calendarPath.endsWith("/"))
 247.467 +						calendarPath += "/";
 247.468 +
 247.469 +					SyncID = calendarPath + newGUID + ".ics";
 247.470 +					
 247.471 +					androidEvent.createIcs(newGUID);
 247.472 +					
 247.473 +					if (facade.createEvent(URI.create(SyncID), androidEvent.getIcsEvent().toString())) {
 247.474 +						//HINT: bugfix for google calendar replace("@", "%40")
 247.475 +						if (SyncID.contains("@"))
 247.476 +							SyncID = SyncID.replace("@", "%40");
 247.477 +						ContentValues values = new ContentValues();
 247.478 +						values.put(Events._SYNC_ID, SyncID);
 247.479 +
 247.480 +						//google doesn't send the etag after creation
 247.481 +						//HINT: my SabreDAV send always the same etag after putting a new event
 247.482 +						//String LastETag = facade.getLastETag();
 247.483 +						//if (!LastETag.equals("")) {
 247.484 +						//	values.put(Event.ETAG, LastETag);
 247.485 +						//} else {
 247.486 +							//so get the etag with a new REPORT
 247.487 +							CalendarEvent calendarEvent = new CalendarEvent(account, provider);
 247.488 +							calendarEvent.calendarURL = caldavCalendarUri.toURL();
 247.489 +							URI SyncURI = new URI(SyncID);
 247.490 +							calendarEvent.setUri(SyncURI);
 247.491 +							CaldavFacade.getEvent(calendarEvent);
 247.492 +							values.put(Event.ETAG, calendarEvent.getETag());
 247.493 +						//}
 247.494 +						values.put(Event.UID, newGUID);
 247.495 +						values.put(Events.DIRTY, 0);
 247.496 +						values.put(Event.RAWDATA, androidEvent.getIcsEvent().toString());
 247.497 +						
 247.498 +						int rowCount = provider.update(asSyncAdapter(androidEvent.getUri(), account.name, account.type), values, null, null);
 247.499 +						if (rowCount == 1) {
 247.500 +							rowInsert += 1;
 247.501 +							notifyList.add(androidEvent.getUri());
 247.502 +						}
 247.503 +					}
 247.504 +				} else if (Deleted) {
 247.505 +					// deleted Android event
 247.506 +					if (facade.deleteEvent(URI.create(SyncID), androidEvent.getETag())) {
 247.507 +						String mSelectionClause = "(" + Events._ID +  "= ?)";
 247.508 +						String[] mSelectionArgs = {String.valueOf(EventID)};
 247.509 +						
 247.510 +						int countDeleted = provider.delete(asSyncAdapter(Events.CONTENT_URI, account.name, account.type), mSelectionClause, mSelectionArgs);	
 247.511 +						
 247.512 +						if (countDeleted == 1) {
 247.513 +							rowDelete += 1;
 247.514 +							notifyList.add(androidEvent.getUri());
 247.515 +						}
 247.516 +					}
 247.517 +				} else {
 247.518 +					//update the android event to the server
 247.519 +					String uid = androidEvent.getUID();
 247.520 +					if ((uid == null) || (uid.equals(""))) {
 247.521 +						//COMPAT: this is needed because in the past, the UID was not stored in the android event
 247.522 +						CalendarEvent calendarEvent = new CalendarEvent(account, provider);
 247.523 +						URI syncURI = new URI(SyncID);
 247.524 +						calendarEvent.setUri(syncURI);
 247.525 +						calendarEvent.calendarURL = caldavCalendarUri.toURL();
 247.526 +						if (calendarEvent.fetchBody()) {
 247.527 +							calendarEvent.readContentValues();
 247.528 +							uid = calendarEvent.getUID();
 247.529 +						}
 247.530 +					}
 247.531 +					if (uid != null) {
 247.532 +						androidEvent.createIcs(uid);
 247.533 +							
 247.534 +						if (facade.updateEvent(URI.create(SyncID), androidEvent.getIcsEvent().toString(), androidEvent.getETag())) {
 247.535 +							selection = "(" + Events._ID + "= ?)";
 247.536 +							selectionArgs = new String[] {EventID.toString()};
 247.537 +							androidEvent.ContentValues.put(Events.DIRTY, 0);
 247.538 +
 247.539 +							//google doesn't send the etag after update
 247.540 +							String LastETag = facade.getLastETag();
 247.541 +							if (!LastETag.equals("")) {
 247.542 +								androidEvent.ContentValues.put(Event.ETAG, LastETag);
 247.543 +							} else {
 247.544 +								//so get the etag with a new REPORT
 247.545 +								CalendarEvent calendarEvent = new CalendarEvent(account, provider);
 247.546 +								calendarEvent.calendarURL = caldavCalendarUri.toURL();
 247.547 +								URI SyncURI = new URI(SyncID);
 247.548 +								calendarEvent.setUri(SyncURI);
 247.549 +								CaldavFacade.getEvent(calendarEvent);
 247.550 +								androidEvent.ContentValues.put(Event.ETAG, calendarEvent.getETag());
 247.551 +							}
 247.552 +							androidEvent.ContentValues.put(Event.RAWDATA, androidEvent.getIcsEvent().toString());
 247.553 +							int RowCount = provider.update(asSyncAdapter(androidEvent.getUri(), account.name, account.type), androidEvent.ContentValues, null, null);
 247.554 +			
 247.555 +							if (RowCount == 1) {
 247.556 +								rowUpdate += 1;
 247.557 +								notifyList.add(androidEvent.getUri());
 247.558 +							}
 247.559 +						} else {
 247.560 +							rowDirty += 1;
 247.561 +						}
 247.562 +					} else {
 247.563 +						rowDirty += 1;
 247.564 +					}
 247.565 +				}
 247.566 +			}
 247.567 +			curEvent.close();
 247.568 +
 247.569 +			/*if ((rowInsert > 0) || (rowUpdate > 0) || (rowDelete > 0) || (rowDirty > 0)) {
 247.570 +				Log.i(TAG,"Android Rows inserted: " + String.valueOf(rowInsert));
 247.571 +				Log.i(TAG,"Android Rows updated:  " + String.valueOf(rowUpdate));
 247.572 +				Log.i(TAG,"Android Rows deleted:  " + String.valueOf(rowDelete));
 247.573 +				Log.i(TAG,"Android Rows dirty:    " + String.valueOf(rowDirty));
 247.574 +			}*/
 247.575 +			
 247.576 +			stats.numInserts += rowInsert;
 247.577 +			stats.numUpdates += rowUpdate;
 247.578 +			stats.numDeletes += rowDelete;
 247.579 +			stats.numSkippedEntries += rowDirty;
 247.580 +			stats.numEntries += rowInsert + rowUpdate + rowDelete;
 247.581 +		} catch (RemoteException e) {
 247.582 +			e.printStackTrace();
 247.583 +		} catch (URISyntaxException e) {
 247.584 +			// TODO Automatisch generierter Erfassungsblock
 247.585 +			e.printStackTrace();
 247.586 +		} catch (ClientProtocolException e) {
 247.587 +			// TODO Automatisch generierter Erfassungsblock
 247.588 +			e.printStackTrace();
 247.589 +		} catch (IOException e) {
 247.590 +			// TODO Automatisch generierter Erfassungsblock
 247.591 +			e.printStackTrace();
 247.592 +		} catch (CaldavProtocolException e) {
 247.593 +			// TODO Automatisch generierter Erfassungsblock
 247.594 +			e.printStackTrace();
 247.595 +		} catch (ParserException e) {
 247.596 +			// TODO Automatisch generierter Erfassungsblock
 247.597 +			e.printStackTrace();
 247.598 +		}
 247.599 +		
 247.600 +		return rowDirty;
 247.601 +	}
 247.602 +	
 247.603 +/*	private Account UpgradeAccount(Account OldAccount) {
 247.604 +		String Username = OldAccount.name;
 247.605 +		String Type = OldAccount.type;
 247.606 +		String Password = this.mAccountManager.getPassword(OldAccount);
 247.607 +		String Url = this.mAccountManager.getUserData(OldAccount, AuthenticatorActivity.USER_DATA_URL_KEY);
 247.608 +
 247.609 +		Account NewAccount = new Account(Username + AuthenticatorActivity.ACCOUNT_NAME_SPLITTER + Url, Type);
 247.610 +		if (this.mAccountManager.addAccountExplicitly(NewAccount, Password, null)) {
 247.611 +			this.mAccountManager.setUserData(NewAccount, AuthenticatorActivity.USER_DATA_URL_KEY, Url);
 247.612 +			this.mAccountManager.setUserData(NewAccount, AuthenticatorActivity.USER_DATA_USERNAME, Username);
 247.613 +		}
 247.614 +		this.mAccountManager.removeAccount(OldAccount, null, null);
 247.615 +		
 247.616 +		return NewAccount;
 247.617 +	}*/
 247.618 +	
 247.619 +/*	private void dropAllEvents(Account account, ContentProviderClient provider,	Uri calendarUri) throws RemoteException {
 247.620 +		
 247.621 +		Log.i(TAG, "Deleting all calendar events for "+calendarUri);
 247.622 +		
 247.623 +		String selection = "(" + Events.CALENDAR_ID + " = ?)";
 247.624 +		String[] selectionArgs = new String[] {Long.toString(ContentUris.parseId(calendarUri))}; 
 247.625 +		
 247.626 +		provider.delete(asSyncAdapter(Events.CONTENT_URI, account.name, account.type), 
 247.627 +				        selection, selectionArgs);
 247.628 +		
 247.629 +	}*/
 247.630 +	
 247.631 +	private static Uri asSyncAdapter(Uri uri, String account, String accountType) {
 247.632 +	    return uri.buildUpon()
 247.633 +	        .appendQueryParameter(android.provider.CalendarContract.CALLER_IS_SYNCADAPTER,"true")
 247.634 +	        .appendQueryParameter(Calendars.ACCOUNT_NAME, account)
 247.635 +	        .appendQueryParameter(Calendars.ACCOUNT_TYPE, accountType).build();
 247.636 +	 }
 247.637 +
 247.638 +}
 247.639 +
   248.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   248.2 +++ b/src/org/gege/caldavsyncadapter/syncadapter/SyncService.java	Tue Feb 10 18:12:00 2015 +0100
   248.3 @@ -0,0 +1,46 @@
   248.4 +/**
   248.5 + * Copyright (c) 2012-2013, David Wiesner
   248.6 + * 
   248.7 + * This file is part of Andoid Caldav Sync Adapter Free.
   248.8 + *
   248.9 + * Andoid Caldav Sync Adapter Free is free software: you can redistribute 
  248.10 + * it and/or modify it under the terms of the GNU General Public License 
  248.11 + * as published by the Free Software Foundation, either version 3 of the 
  248.12 + * License, or at your option any later version.
  248.13 + *
  248.14 + * Andoid Caldav Sync Adapter Free is distributed in the hope that 
  248.15 + * it will be useful, but WITHOUT ANY WARRANTY; without even the implied 
  248.16 + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  248.17 + * GNU General Public License for more details.
  248.18 + *
  248.19 + * You should have received a copy of the GNU General Public License
  248.20 + * along with Andoid Caldav Sync Adapter Free.  
  248.21 + * If not, see <http://www.gnu.org/licenses/>.
  248.22 + * 
  248.23 + */
  248.24 +
  248.25 +package org.gege.caldavsyncadapter.syncadapter;
  248.26 +
  248.27 +import android.app.Service;
  248.28 +import android.content.Intent;
  248.29 +import android.os.IBinder;
  248.30 +
  248.31 +public class SyncService extends Service {
  248.32 +    private static final Object sSyncAdapterLock = new Object();
  248.33 +
  248.34 +    private static SyncAdapter sSyncAdapter = null;
  248.35 +
  248.36 +    @Override
  248.37 +    public void onCreate() {
  248.38 +        synchronized (sSyncAdapterLock) {
  248.39 +            if (sSyncAdapter == null) {
  248.40 +                sSyncAdapter = new SyncAdapter(getApplicationContext(), true);
  248.41 +            }
  248.42 +        }
  248.43 +    }
  248.44 +
  248.45 +    @Override
  248.46 +    public IBinder onBind(Intent intent) {
  248.47 +        return sSyncAdapter.getSyncAdapterBinder();
  248.48 +    }
  248.49 +}
   249.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   249.2 +++ b/src/org/gege/caldavsyncadapter/syncadapter/notifications/NotificationsHelper.java	Tue Feb 10 18:12:00 2015 +0100
   249.3 @@ -0,0 +1,56 @@
   249.4 +package org.gege.caldavsyncadapter.syncadapter.notifications;
   249.5 +
   249.6 +import org.gege.caldavsyncadapter.R;
   249.7 +
   249.8 +import android.app.NotificationManager;
   249.9 +//import android.app.PendingIntent;
  249.10 +import android.content.Context;
  249.11 +//import android.content.Intent;
  249.12 +import android.support.v4.app.NotificationCompat;
  249.13 +//import android.support.v4.app.TaskStackBuilder;
  249.14 +
  249.15 +public class NotificationsHelper {
  249.16 +
  249.17 +	/*static SyncLog currentSyncLog = new SyncLog();
  249.18 +	 doesn't exist */
  249.19 +	
  249.20 +	public static void signalSyncErrors(Context context, String title, String text) {
  249.21 +		NotificationCompat.Builder mBuilder =
  249.22 +		        new NotificationCompat.Builder(context)
  249.23 +		        .setSmallIcon(R.drawable.icon)
  249.24 +		        .setContentTitle(title)
  249.25 +		        .setContentText(text);
  249.26 +		
  249.27 +		// Creates an explicit intent for an Activity in your app
  249.28 +/*		Intent resultIntent = new Intent(context, SyncStatusReportActivity.class);
  249.29 +
  249.30 +		// The stack builder object will contain an artificial back stack for the
  249.31 +		// started Activity.
  249.32 +		// This ensures that navigating backward from the Activity leads out of
  249.33 +		// your application to the Home screen.
  249.34 +		TaskStackBuilder stackBuilder = TaskStackBuilder.create(context);
  249.35 +		// Adds the back stack for the Intent (but not the Intent itself)
  249.36 +		stackBuilder.addParentStack(SyncStatusReportActivity.class);
  249.37 +		// Adds the Intent that starts the Activity to the top of the stack
  249.38 +		stackBuilder.addNextIntent(resultIntent);
  249.39 +		PendingIntent resultPendingIntent =
  249.40 +		        stackBuilder.getPendingIntent(
  249.41 +		            0,
  249.42 +		            PendingIntent.FLAG_UPDATE_CURRENT
  249.43 +		        );
  249.44 +		mBuilder.setContentIntent(resultPendingIntent);
  249.45 +*/		
  249.46 +		
  249.47 +		NotificationManager mNotificationManager =
  249.48 +			    (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
  249.49 +			
  249.50 +			// mId allows you to update the notification later on.
  249.51 +		int mId = 0;
  249.52 +		mNotificationManager.notify(mId, mBuilder.build());
  249.53 +	}
  249.54 +
  249.55 +	/*public static SyncLog getCurrentSyncLog() {
  249.56 +		return currentSyncLog;
  249.57 +	}*/
  249.58 +	
  249.59 +}
   250.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   250.2 +++ b/src/zoneinfo-global/Africa/Abidjan.ics	Tue Feb 10 18:12:00 2015 +0100
   250.3 @@ -0,0 +1,16 @@
   250.4 +BEGIN:VCALENDAR
   250.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   250.6 +VERSION:2.0
   250.7 +BEGIN:VTIMEZONE
   250.8 +TZID:Africa/Abidjan
   250.9 +TZURL:http://tzurl.org/zoneinfo-global/Africa/Abidjan
  250.10 +X-LIC-LOCATION:Africa/Abidjan
  250.11 +BEGIN:STANDARD
  250.12 +TZOFFSETFROM:-001608
  250.13 +TZOFFSETTO:+0000
  250.14 +TZNAME:GMT
  250.15 +DTSTART:19120101T000000
  250.16 +RDATE:19120101T000000
  250.17 +END:STANDARD
  250.18 +END:VTIMEZONE
  250.19 +END:VCALENDAR
   251.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   251.2 +++ b/src/zoneinfo-global/Africa/Accra.ics	Tue Feb 10 18:12:00 2015 +0100
   251.3 @@ -0,0 +1,42 @@
   251.4 +BEGIN:VCALENDAR
   251.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   251.6 +VERSION:2.0
   251.7 +BEGIN:VTIMEZONE
   251.8 +TZID:Africa/Accra
   251.9 +TZURL:http://tzurl.org/zoneinfo-global/Africa/Accra
  251.10 +X-LIC-LOCATION:Africa/Accra
  251.11 +BEGIN:STANDARD
  251.12 +TZOFFSETFROM:-000052
  251.13 +TZOFFSETTO:+0000
  251.14 +TZNAME:GMT
  251.15 +DTSTART:19180101T000000
  251.16 +RDATE:19180101T000000
  251.17 +END:STANDARD
  251.18 +BEGIN:DAYLIGHT
  251.19 +TZOFFSETFROM:+0000
  251.20 +TZOFFSETTO:+0020
  251.21 +TZNAME:GHST
  251.22 +DTSTART:19360901T000000
  251.23 +RDATE:19360901T000000
  251.24 +RDATE:19370901T000000
  251.25 +RDATE:19380901T000000
  251.26 +RDATE:19390901T000000
  251.27 +RDATE:19400901T000000
  251.28 +RDATE:19410901T000000
  251.29 +RDATE:19420901T000000
  251.30 +END:DAYLIGHT
  251.31 +BEGIN:STANDARD
  251.32 +TZOFFSETFROM:+0020
  251.33 +TZOFFSETTO:+0000
  251.34 +TZNAME:GMT
  251.35 +DTSTART:19361231T000000
  251.36 +RDATE:19361231T000000
  251.37 +RDATE:19371231T000000
  251.38 +RDATE:19381231T000000
  251.39 +RDATE:19391231T000000
  251.40 +RDATE:19401231T000000
  251.41 +RDATE:19411231T000000
  251.42 +RDATE:19421231T000000
  251.43 +END:STANDARD
  251.44 +END:VTIMEZONE
  251.45 +END:VCALENDAR
   252.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   252.2 +++ b/src/zoneinfo-global/Africa/Addis_Ababa.ics	Tue Feb 10 18:12:00 2015 +0100
   252.3 @@ -0,0 +1,23 @@
   252.4 +BEGIN:VCALENDAR
   252.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   252.6 +VERSION:2.0
   252.7 +BEGIN:VTIMEZONE
   252.8 +TZID:Africa/Addis_Ababa
   252.9 +TZURL:http://tzurl.org/zoneinfo-global/Africa/Addis_Ababa
  252.10 +X-LIC-LOCATION:Africa/Addis_Ababa
  252.11 +BEGIN:STANDARD
  252.12 +TZOFFSETFROM:+023448
  252.13 +TZOFFSETTO:+023520
  252.14 +TZNAME:ADMT
  252.15 +DTSTART:18700101T000000
  252.16 +RDATE:18700101T000000
  252.17 +END:STANDARD
  252.18 +BEGIN:STANDARD
  252.19 +TZOFFSETFROM:+023520
  252.20 +TZOFFSETTO:+0300
  252.21 +TZNAME:EAT
  252.22 +DTSTART:19360505T000000
  252.23 +RDATE:19360505T000000
  252.24 +END:STANDARD
  252.25 +END:VTIMEZONE
  252.26 +END:VCALENDAR
   253.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   253.2 +++ b/src/zoneinfo-global/Africa/Algiers.ics	Tue Feb 10 18:12:00 2015 +0100
   253.3 @@ -0,0 +1,91 @@
   253.4 +BEGIN:VCALENDAR
   253.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   253.6 +VERSION:2.0
   253.7 +BEGIN:VTIMEZONE
   253.8 +TZID:Africa/Algiers
   253.9 +TZURL:http://tzurl.org/zoneinfo-global/Africa/Algiers
  253.10 +X-LIC-LOCATION:Africa/Algiers
  253.11 +BEGIN:STANDARD
  253.12 +TZOFFSETFROM:+001212
  253.13 +TZOFFSETTO:+000921
  253.14 +TZNAME:PMT
  253.15 +DTSTART:18910315T000100
  253.16 +RDATE:18910315T000100
  253.17 +END:STANDARD
  253.18 +BEGIN:STANDARD
  253.19 +TZOFFSETFROM:+000921
  253.20 +TZOFFSETTO:+0000
  253.21 +TZNAME:WET
  253.22 +DTSTART:19110311T000000
  253.23 +RDATE:19110311T000000
  253.24 +END:STANDARD
  253.25 +BEGIN:DAYLIGHT
  253.26 +TZOFFSETFROM:+0000
  253.27 +TZOFFSETTO:+0100
  253.28 +TZNAME:WEST
  253.29 +DTSTART:19160614T230000
  253.30 +RDATE:19160614T230000
  253.31 +RDATE:19170324T230000
  253.32 +RDATE:19180309T230000
  253.33 +RDATE:19190301T230000
  253.34 +RDATE:19200214T230000
  253.35 +RDATE:19210314T230000
  253.36 +RDATE:19390911T230000
  253.37 +RDATE:19710425T230000
  253.38 +RDATE:19770506T000000
  253.39 +RDATE:19800425T000000
  253.40 +END:DAYLIGHT
  253.41 +BEGIN:STANDARD
  253.42 +TZOFFSETFROM:+0100
  253.43 +TZOFFSETTO:+0000
  253.44 +TZNAME:WET
  253.45 +DTSTART:19161002T000000
  253.46 +RDATE:19161002T000000
  253.47 +RDATE:19171008T000000
  253.48 +RDATE:19181007T000000
  253.49 +RDATE:19191006T000000
  253.50 +RDATE:19201024T000000
  253.51 +RDATE:19210622T000000
  253.52 +RDATE:19391119T010000
  253.53 +RDATE:19461007T000000
  253.54 +RDATE:19630414T000000
  253.55 +RDATE:19710927T000000
  253.56 +RDATE:19791026T000000
  253.57 +RDATE:19801031T020000
  253.58 +END:STANDARD
  253.59 +BEGIN:STANDARD
  253.60 +TZOFFSETFROM:+0000
  253.61 +TZOFFSETTO:+0100
  253.62 +TZNAME:CET
  253.63 +DTSTART:19400225T020000
  253.64 +RDATE:19400225T020000
  253.65 +RDATE:19560129T000000
  253.66 +RDATE:19810501T000000
  253.67 +END:STANDARD
  253.68 +BEGIN:DAYLIGHT
  253.69 +TZOFFSETFROM:+0100
  253.70 +TZOFFSETTO:+0200
  253.71 +TZNAME:CEST
  253.72 +DTSTART:19440403T020000
  253.73 +RDATE:19440403T020000
  253.74 +RDATE:19450402T020000
  253.75 +RDATE:19780324T010000
  253.76 +END:DAYLIGHT
  253.77 +BEGIN:STANDARD
  253.78 +TZOFFSETFROM:+0200
  253.79 +TZOFFSETTO:+0100
  253.80 +TZNAME:CET
  253.81 +DTSTART:19441008T020000
  253.82 +RDATE:19441008T020000
  253.83 +RDATE:19450916T010000
  253.84 +RDATE:19780922T030000
  253.85 +END:STANDARD
  253.86 +BEGIN:STANDARD
  253.87 +TZOFFSETFROM:+0100
  253.88 +TZOFFSETTO:+0100
  253.89 +TZNAME:CET
  253.90 +DTSTART:19771021T000000
  253.91 +RDATE:19771021T000000
  253.92 +END:STANDARD
  253.93 +END:VTIMEZONE
  253.94 +END:VCALENDAR
   254.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   254.2 +++ b/src/zoneinfo-global/Africa/Asmara.ics	Tue Feb 10 18:12:00 2015 +0100
   254.3 @@ -0,0 +1,30 @@
   254.4 +BEGIN:VCALENDAR
   254.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   254.6 +VERSION:2.0
   254.7 +BEGIN:VTIMEZONE
   254.8 +TZID:Africa/Asmara
   254.9 +TZURL:http://tzurl.org/zoneinfo-global/Africa/Asmara
  254.10 +X-LIC-LOCATION:Africa/Asmara
  254.11 +BEGIN:STANDARD
  254.12 +TZOFFSETFROM:+023532
  254.13 +TZOFFSETTO:+023532
  254.14 +TZNAME:AMT
  254.15 +DTSTART:18700101T000000
  254.16 +RDATE:18700101T000000
  254.17 +END:STANDARD
  254.18 +BEGIN:STANDARD
  254.19 +TZOFFSETFROM:+023532
  254.20 +TZOFFSETTO:+023520
  254.21 +TZNAME:ADMT
  254.22 +DTSTART:18900101T000000
  254.23 +RDATE:18900101T000000
  254.24 +END:STANDARD
  254.25 +BEGIN:STANDARD
  254.26 +TZOFFSETFROM:+023520
  254.27 +TZOFFSETTO:+0300
  254.28 +TZNAME:EAT
  254.29 +DTSTART:19360505T000000
  254.30 +RDATE:19360505T000000
  254.31 +END:STANDARD
  254.32 +END:VTIMEZONE
  254.33 +END:VCALENDAR
   255.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   255.2 +++ b/src/zoneinfo-global/Africa/Bamako.ics	Tue Feb 10 18:12:00 2015 +0100
   255.3 @@ -0,0 +1,30 @@
   255.4 +BEGIN:VCALENDAR
   255.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   255.6 +VERSION:2.0
   255.7 +BEGIN:VTIMEZONE
   255.8 +TZID:Africa/Bamako
   255.9 +TZURL:http://tzurl.org/zoneinfo-global/Africa/Bamako
  255.10 +X-LIC-LOCATION:Africa/Bamako
  255.11 +BEGIN:STANDARD
  255.12 +TZOFFSETFROM:-0032
  255.13 +TZOFFSETTO:+0000
  255.14 +TZNAME:GMT
  255.15 +DTSTART:19120101T000000
  255.16 +RDATE:19120101T000000
  255.17 +END:STANDARD
  255.18 +BEGIN:STANDARD
  255.19 +TZOFFSETFROM:+0000
  255.20 +TZOFFSETTO:-0100
  255.21 +TZNAME:WAT
  255.22 +DTSTART:19340226T000000
  255.23 +RDATE:19340226T000000
  255.24 +END:STANDARD
  255.25 +BEGIN:STANDARD
  255.26 +TZOFFSETFROM:-0100
  255.27 +TZOFFSETTO:+0000
  255.28 +TZNAME:GMT
  255.29 +DTSTART:19600620T000000
  255.30 +RDATE:19600620T000000
  255.31 +END:STANDARD
  255.32 +END:VTIMEZONE
  255.33 +END:VCALENDAR
   256.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   256.2 +++ b/src/zoneinfo-global/Africa/Bangui.ics	Tue Feb 10 18:12:00 2015 +0100
   256.3 @@ -0,0 +1,16 @@
   256.4 +BEGIN:VCALENDAR
   256.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   256.6 +VERSION:2.0
   256.7 +BEGIN:VTIMEZONE
   256.8 +TZID:Africa/Bangui
   256.9 +TZURL:http://tzurl.org/zoneinfo-global/Africa/Bangui
  256.10 +X-LIC-LOCATION:Africa/Bangui
  256.11 +BEGIN:STANDARD
  256.12 +TZOFFSETFROM:+011420
  256.13 +TZOFFSETTO:+0100
  256.14 +TZNAME:WAT
  256.15 +DTSTART:19120101T000000
  256.16 +RDATE:19120101T000000
  256.17 +END:STANDARD
  256.18 +END:VTIMEZONE
  256.19 +END:VCALENDAR
   257.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   257.2 +++ b/src/zoneinfo-global/Africa/Banjul.ics	Tue Feb 10 18:12:00 2015 +0100
   257.3 @@ -0,0 +1,30 @@
   257.4 +BEGIN:VCALENDAR
   257.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   257.6 +VERSION:2.0
   257.7 +BEGIN:VTIMEZONE
   257.8 +TZID:Africa/Banjul
   257.9 +TZURL:http://tzurl.org/zoneinfo-global/Africa/Banjul
  257.10 +X-LIC-LOCATION:Africa/Banjul
  257.11 +BEGIN:STANDARD
  257.12 +TZOFFSETFROM:-010636
  257.13 +TZOFFSETTO:-010636
  257.14 +TZNAME:BMT
  257.15 +DTSTART:19120101T000000
  257.16 +RDATE:19120101T000000
  257.17 +END:STANDARD
  257.18 +BEGIN:STANDARD
  257.19 +TZOFFSETFROM:-010636
  257.20 +TZOFFSETTO:-0100
  257.21 +TZNAME:WAT
  257.22 +DTSTART:19350101T000000
  257.23 +RDATE:19350101T000000
  257.24 +END:STANDARD
  257.25 +BEGIN:STANDARD
  257.26 +TZOFFSETFROM:-0100
  257.27 +TZOFFSETTO:+0000
  257.28 +TZNAME:GMT
  257.29 +DTSTART:19640101T000000
  257.30 +RDATE:19640101T000000
  257.31 +END:STANDARD
  257.32 +END:VTIMEZONE
  257.33 +END:VCALENDAR
   258.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   258.2 +++ b/src/zoneinfo-global/Africa/Bissau.ics	Tue Feb 10 18:12:00 2015 +0100
   258.3 @@ -0,0 +1,23 @@
   258.4 +BEGIN:VCALENDAR
   258.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   258.6 +VERSION:2.0
   258.7 +BEGIN:VTIMEZONE
   258.8 +TZID:Africa/Bissau
   258.9 +TZURL:http://tzurl.org/zoneinfo-global/Africa/Bissau
  258.10 +X-LIC-LOCATION:Africa/Bissau
  258.11 +BEGIN:STANDARD
  258.12 +TZOFFSETFROM:-010220
  258.13 +TZOFFSETTO:-0100
  258.14 +TZNAME:WAT
  258.15 +DTSTART:19110526T000000
  258.16 +RDATE:19110526T000000
  258.17 +END:STANDARD
  258.18 +BEGIN:STANDARD
  258.19 +TZOFFSETFROM:-0100
  258.20 +TZOFFSETTO:+0000
  258.21 +TZNAME:GMT
  258.22 +DTSTART:19750101T000000
  258.23 +RDATE:19750101T000000
  258.24 +END:STANDARD
  258.25 +END:VTIMEZONE
  258.26 +END:VCALENDAR
   259.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   259.2 +++ b/src/zoneinfo-global/Africa/Blantyre.ics	Tue Feb 10 18:12:00 2015 +0100
   259.3 @@ -0,0 +1,16 @@
   259.4 +BEGIN:VCALENDAR
   259.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   259.6 +VERSION:2.0
   259.7 +BEGIN:VTIMEZONE
   259.8 +TZID:Africa/Blantyre
   259.9 +TZURL:http://tzurl.org/zoneinfo-global/Africa/Blantyre
  259.10 +X-LIC-LOCATION:Africa/Blantyre
  259.11 +BEGIN:STANDARD
  259.12 +TZOFFSETFROM:+0220
  259.13 +TZOFFSETTO:+0200
  259.14 +TZNAME:CAT
  259.15 +DTSTART:19030301T000000
  259.16 +RDATE:19030301T000000
  259.17 +END:STANDARD
  259.18 +END:VTIMEZONE
  259.19 +END:VCALENDAR
   260.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   260.2 +++ b/src/zoneinfo-global/Africa/Brazzaville.ics	Tue Feb 10 18:12:00 2015 +0100
   260.3 @@ -0,0 +1,16 @@
   260.4 +BEGIN:VCALENDAR
   260.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   260.6 +VERSION:2.0
   260.7 +BEGIN:VTIMEZONE
   260.8 +TZID:Africa/Brazzaville
   260.9 +TZURL:http://tzurl.org/zoneinfo-global/Africa/Brazzaville
  260.10 +X-LIC-LOCATION:Africa/Brazzaville
  260.11 +BEGIN:STANDARD
  260.12 +TZOFFSETFROM:+010108
  260.13 +TZOFFSETTO:+0100
  260.14 +TZNAME:WAT
  260.15 +DTSTART:19120101T000000
  260.16 +RDATE:19120101T000000
  260.17 +END:STANDARD
  260.18 +END:VTIMEZONE
  260.19 +END:VCALENDAR
   261.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   261.2 +++ b/src/zoneinfo-global/Africa/Bujumbura.ics	Tue Feb 10 18:12:00 2015 +0100
   261.3 @@ -0,0 +1,16 @@
   261.4 +BEGIN:VCALENDAR
   261.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   261.6 +VERSION:2.0
   261.7 +BEGIN:VTIMEZONE
   261.8 +TZID:Africa/Bujumbura
   261.9 +TZURL:http://tzurl.org/zoneinfo-global/Africa/Bujumbura
  261.10 +X-LIC-LOCATION:Africa/Bujumbura
  261.11 +BEGIN:STANDARD
  261.12 +TZOFFSETFROM:+015728
  261.13 +TZOFFSETTO:+0200
  261.14 +TZNAME:CAT
  261.15 +DTSTART:18900101T000000
  261.16 +RDATE:18900101T000000
  261.17 +END:STANDARD
  261.18 +END:VTIMEZONE
  261.19 +END:VCALENDAR
   262.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   262.2 +++ b/src/zoneinfo-global/Africa/Cairo.ics	Tue Feb 10 18:12:00 2015 +0100
   262.3 @@ -0,0 +1,150 @@
   262.4 +BEGIN:VCALENDAR
   262.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   262.6 +VERSION:2.0
   262.7 +BEGIN:VTIMEZONE
   262.8 +TZID:Africa/Cairo
   262.9 +TZURL:http://tzurl.org/zoneinfo-global/Africa/Cairo
  262.10 +X-LIC-LOCATION:Africa/Cairo
  262.11 +BEGIN:STANDARD
  262.12 +TZOFFSETFROM:+0205
  262.13 +TZOFFSETTO:+0200
  262.14 +TZNAME:EET
  262.15 +DTSTART:19001001T000000
  262.16 +RDATE:19001001T000000
  262.17 +END:STANDARD
  262.18 +BEGIN:DAYLIGHT
  262.19 +TZOFFSETFROM:+0200
  262.20 +TZOFFSETTO:+0300
  262.21 +TZNAME:EEST
  262.22 +DTSTART:19400715T000000
  262.23 +RDATE:19400715T000000
  262.24 +RDATE:19410415T000000
  262.25 +RDATE:19420401T000000
  262.26 +RDATE:19430401T000000
  262.27 +RDATE:19440401T000000
  262.28 +RDATE:19450416T000000
  262.29 +RDATE:19570510T000000
  262.30 +RDATE:19580501T000000
  262.31 +RDATE:19590501T010000
  262.32 +RDATE:19600501T010000
  262.33 +RDATE:19610501T010000
  262.34 +RDATE:19620501T010000
  262.35 +RDATE:19630501T010000
  262.36 +RDATE:19640501T010000
  262.37 +RDATE:19650501T010000
  262.38 +RDATE:19660501T010000
  262.39 +RDATE:19670501T010000
  262.40 +RDATE:19680501T010000
  262.41 +RDATE:19690501T010000
  262.42 +RDATE:19700501T010000
  262.43 +RDATE:19710501T010000
  262.44 +RDATE:19720501T010000
  262.45 +RDATE:19730501T010000
  262.46 +RDATE:19740501T010000
  262.47 +RDATE:19750501T010000
  262.48 +RDATE:19760501T010000
  262.49 +RDATE:19770501T010000
  262.50 +RDATE:19780501T010000
  262.51 +RDATE:19790501T010000
  262.52 +RDATE:19800501T010000
  262.53 +RDATE:19810501T010000
  262.54 +RDATE:19820725T010000
  262.55 +RDATE:19830712T010000
  262.56 +RDATE:19840501T010000
  262.57 +RDATE:19850501T010000
  262.58 +RDATE:19860501T010000
  262.59 +RDATE:19870501T010000
  262.60 +RDATE:19880501T010000
  262.61 +RDATE:19890506T010000
  262.62 +RDATE:19900501T010000
  262.63 +RDATE:19910501T010000
  262.64 +RDATE:19920501T010000
  262.65 +RDATE:19930501T010000
  262.66 +RDATE:19940501T010000
  262.67 +RDATE:19950428T000000
  262.68 +RDATE:19960426T000000
  262.69 +RDATE:19970425T000000
  262.70 +RDATE:19980424T000000
  262.71 +RDATE:19990430T000000
  262.72 +RDATE:20000428T000000
  262.73 +RDATE:20010427T000000
  262.74 +RDATE:20020426T000000
  262.75 +RDATE:20030425T000000
  262.76 +RDATE:20040430T000000
  262.77 +RDATE:20050429T000000
  262.78 +RDATE:20060428T000000
  262.79 +RDATE:20070427T000000
  262.80 +RDATE:20080425T000000
  262.81 +RDATE:20090424T000000
  262.82 +RDATE:20100430T000000
  262.83 +RDATE:20100910T000000
  262.84 +END:DAYLIGHT
  262.85 +BEGIN:STANDARD
  262.86 +TZOFFSETFROM:+0300
  262.87 +TZOFFSETTO:+0200
  262.88 +TZNAME:EET
  262.89 +DTSTART:19401001T000000
  262.90 +RDATE:19401001T000000
  262.91 +RDATE:19410916T000000
  262.92 +RDATE:19421027T000000
  262.93 +RDATE:19431101T000000
  262.94 +RDATE:19441101T000000
  262.95 +RDATE:19451101T000000
  262.96 +RDATE:19571001T000000
  262.97 +RDATE:19581001T000000
  262.98 +RDATE:19590930T030000
  262.99 +RDATE:19600930T030000
 262.100 +RDATE:19610930T030000
 262.101 +RDATE:19620930T030000
 262.102 +RDATE:19630930T030000
 262.103 +RDATE:19640930T030000
 262.104 +RDATE:19650930T030000
 262.105 +RDATE:19661001T030000
 262.106 +RDATE:19671001T030000
 262.107 +RDATE:19681001T030000
 262.108 +RDATE:19691001T030000
 262.109 +RDATE:19701001T030000
 262.110 +RDATE:19711001T030000
 262.111 +RDATE:19721001T030000
 262.112 +RDATE:19731001T030000
 262.113 +RDATE:19741001T030000
 262.114 +RDATE:19751001T030000
 262.115 +RDATE:19761001T030000
 262.116 +RDATE:19771001T030000
 262.117 +RDATE:19781001T030000
 262.118 +RDATE:19791001T030000
 262.119 +RDATE:19801001T030000
 262.120 +RDATE:19811001T030000
 262.121 +RDATE:19821001T030000
 262.122 +RDATE:19831001T030000
 262.123 +RDATE:19841001T030000
 262.124 +RDATE:19851001T030000
 262.125 +RDATE:19861001T030000
 262.126 +RDATE:19871001T030000
 262.127 +RDATE:19881001T030000
 262.128 +RDATE:19891001T030000
 262.129 +RDATE:19901001T030000
 262.130 +RDATE:19911001T030000
 262.131 +RDATE:19921001T030000
 262.132 +RDATE:19931001T030000
 262.133 +RDATE:19941001T030000
 262.134 +RDATE:19950929T000000
 262.135 +RDATE:19960927T000000
 262.136 +RDATE:19970926T000000
 262.137 +RDATE:19980925T000000
 262.138 +RDATE:19991001T000000
 262.139 +RDATE:20000929T000000
 262.140 +RDATE:20010928T000000
 262.141 +RDATE:20020927T000000
 262.142 +RDATE:20030926T000000
 262.143 +RDATE:20041001T000000
 262.144 +RDATE:20050930T000000
 262.145 +RDATE:20060922T000000
 262.146 +RDATE:20070907T000000
 262.147 +RDATE:20080829T000000
 262.148 +RDATE:20090821T000000
 262.149 +RDATE:20100811T000000
 262.150 +RDATE:20101001T000000
 262.151 +END:STANDARD
 262.152 +END:VTIMEZONE
 262.153 +END:VCALENDAR
   263.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   263.2 +++ b/src/zoneinfo-global/Africa/Casablanca.ics	Tue Feb 10 18:12:00 2015 +0100
   263.3 @@ -0,0 +1,60 @@
   263.4 +BEGIN:VCALENDAR
   263.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   263.6 +VERSION:2.0
   263.7 +BEGIN:VTIMEZONE
   263.8 +TZID:Africa/Casablanca
   263.9 +TZURL:http://tzurl.org/zoneinfo-global/Africa/Casablanca
  263.10 +X-LIC-LOCATION:Africa/Casablanca
  263.11 +BEGIN:STANDARD
  263.12 +TZOFFSETFROM:-003020
  263.13 +TZOFFSETTO:+0000
  263.14 +TZNAME:WET
  263.15 +DTSTART:19131026T000000
  263.16 +RDATE:19131026T000000
  263.17 +END:STANDARD
  263.18 +BEGIN:DAYLIGHT
  263.19 +TZOFFSETFROM:+0000
  263.20 +TZOFFSETTO:+0100
  263.21 +TZNAME:WEST
  263.22 +DTSTART:19390912T000000
  263.23 +RDATE:19390912T000000
  263.24 +RDATE:19400225T000000
  263.25 +RDATE:19500611T000000
  263.26 +RDATE:19670603T120000
  263.27 +RDATE:19740624T000000
  263.28 +RDATE:19760501T000000
  263.29 +RDATE:19770501T000000
  263.30 +RDATE:19780601T000000
  263.31 +RDATE:20080601T000000
  263.32 +RDATE:20090601T000000
  263.33 +RDATE:20100502T000000
  263.34 +RDATE:20110403T000000
  263.35 +END:DAYLIGHT
  263.36 +BEGIN:STANDARD
  263.37 +TZOFFSETFROM:+0100
  263.38 +TZOFFSETTO:+0000
  263.39 +TZNAME:WET
  263.40 +DTSTART:19391119T000000
  263.41 +RDATE:19391119T000000
  263.42 +RDATE:19451118T000000
  263.43 +RDATE:19501029T000000
  263.44 +RDATE:19671001T000000
  263.45 +RDATE:19740901T000000
  263.46 +RDATE:19760801T000000
  263.47 +RDATE:19770928T000000
  263.48 +RDATE:19780804T000000
  263.49 +RDATE:19860101T000000
  263.50 +RDATE:20080901T000000
  263.51 +RDATE:20090821T000000
  263.52 +RDATE:20100808T000000
  263.53 +RDATE:20110731T000000
  263.54 +END:STANDARD
  263.55 +BEGIN:STANDARD
  263.56 +TZOFFSETFROM:+0000
  263.57 +TZOFFSETTO:+0100
  263.58 +TZNAME:CET
  263.59 +DTSTART:19840316T000000
  263.60 +RDATE:19840316T000000
  263.61 +END:STANDARD
  263.62 +END:VTIMEZONE
  263.63 +END:VCALENDAR
   264.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   264.2 +++ b/src/zoneinfo-global/Africa/Ceuta.ics	Tue Feb 10 18:12:00 2015 +0100
   264.3 @@ -0,0 +1,100 @@
   264.4 +BEGIN:VCALENDAR
   264.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   264.6 +VERSION:2.0
   264.7 +BEGIN:VTIMEZONE
   264.8 +TZID:Africa/Ceuta
   264.9 +TZURL:http://tzurl.org/zoneinfo-global/Africa/Ceuta
  264.10 +X-LIC-LOCATION:Africa/Ceuta
  264.11 +BEGIN:DAYLIGHT
  264.12 +TZOFFSETFROM:+0100
  264.13 +TZOFFSETTO:+0200
  264.14 +TZNAME:CEST
  264.15 +DTSTART:19860330T020000
  264.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  264.17 +END:DAYLIGHT
  264.18 +BEGIN:STANDARD
  264.19 +TZOFFSETFROM:+0200
  264.20 +TZOFFSETTO:+0100
  264.21 +TZNAME:CET
  264.22 +DTSTART:19961027T030000
  264.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  264.24 +END:STANDARD
  264.25 +BEGIN:STANDARD
  264.26 +TZOFFSETFROM:-002116
  264.27 +TZOFFSETTO:+0000
  264.28 +TZNAME:WET
  264.29 +DTSTART:19010101T000000
  264.30 +RDATE:19010101T000000
  264.31 +END:STANDARD
  264.32 +BEGIN:DAYLIGHT
  264.33 +TZOFFSETFROM:+0000
  264.34 +TZOFFSETTO:+0100
  264.35 +TZNAME:WEST
  264.36 +DTSTART:19180506T230000
  264.37 +RDATE:19180506T230000
  264.38 +RDATE:19240416T230000
  264.39 +RDATE:19260417T230000
  264.40 +RDATE:19270409T230000
  264.41 +RDATE:19280414T230000
  264.42 +RDATE:19670603T120000
  264.43 +RDATE:19740624T000000
  264.44 +RDATE:19760501T000000
  264.45 +RDATE:19770501T000000
  264.46 +RDATE:19780601T000000
  264.47 +END:DAYLIGHT
  264.48 +BEGIN:STANDARD
  264.49 +TZOFFSETFROM:+0100
  264.50 +TZOFFSETTO:+0000
  264.51 +TZNAME:WET
  264.52 +DTSTART:19181007T230000
  264.53 +RDATE:19181007T230000
  264.54 +RDATE:19241005T000000
  264.55 +RDATE:19261003T000000
  264.56 +RDATE:19271002T000000
  264.57 +RDATE:19281007T000000
  264.58 +RDATE:19671001T000000
  264.59 +RDATE:19740901T000000
  264.60 +RDATE:19760801T000000
  264.61 +RDATE:19770928T000000
  264.62 +RDATE:19780804T000000
  264.63 +END:STANDARD
  264.64 +BEGIN:STANDARD
  264.65 +TZOFFSETFROM:+0000
  264.66 +TZOFFSETTO:+0000
  264.67 +TZNAME:WET
  264.68 +DTSTART:19240101T000000
  264.69 +RDATE:19240101T000000
  264.70 +RDATE:19290101T000000
  264.71 +END:STANDARD
  264.72 +BEGIN:STANDARD
  264.73 +TZOFFSETFROM:+0000
  264.74 +TZOFFSETTO:+0100
  264.75 +TZNAME:CET
  264.76 +DTSTART:19840316T000000
  264.77 +RDATE:19840316T000000
  264.78 +END:STANDARD
  264.79 +BEGIN:STANDARD
  264.80 +TZOFFSETFROM:+0100
  264.81 +TZOFFSETTO:+0100
  264.82 +TZNAME:CET
  264.83 +DTSTART:19860101T000000
  264.84 +RDATE:19860101T000000
  264.85 +END:STANDARD
  264.86 +BEGIN:STANDARD
  264.87 +TZOFFSETFROM:+0200
  264.88 +TZOFFSETTO:+0100
  264.89 +TZNAME:CET
  264.90 +DTSTART:19860928T030000
  264.91 +RDATE:19860928T030000
  264.92 +RDATE:19870927T030000
  264.93 +RDATE:19880925T030000
  264.94 +RDATE:19890924T030000
  264.95 +RDATE:19900930T030000
  264.96 +RDATE:19910929T030000
  264.97 +RDATE:19920927T030000
  264.98 +RDATE:19930926T030000
  264.99 +RDATE:19940925T030000
 264.100 +RDATE:19950924T030000
 264.101 +END:STANDARD
 264.102 +END:VTIMEZONE
 264.103 +END:VCALENDAR
   265.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   265.2 +++ b/src/zoneinfo-global/Africa/Conakry.ics	Tue Feb 10 18:12:00 2015 +0100
   265.3 @@ -0,0 +1,30 @@
   265.4 +BEGIN:VCALENDAR
   265.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   265.6 +VERSION:2.0
   265.7 +BEGIN:VTIMEZONE
   265.8 +TZID:Africa/Conakry
   265.9 +TZURL:http://tzurl.org/zoneinfo-global/Africa/Conakry
  265.10 +X-LIC-LOCATION:Africa/Conakry
  265.11 +BEGIN:STANDARD
  265.12 +TZOFFSETFROM:-005452
  265.13 +TZOFFSETTO:+0000
  265.14 +TZNAME:GMT
  265.15 +DTSTART:19120101T000000
  265.16 +RDATE:19120101T000000
  265.17 +END:STANDARD
  265.18 +BEGIN:STANDARD
  265.19 +TZOFFSETFROM:+0000
  265.20 +TZOFFSETTO:-0100
  265.21 +TZNAME:WAT
  265.22 +DTSTART:19340226T000000
  265.23 +RDATE:19340226T000000
  265.24 +END:STANDARD
  265.25 +BEGIN:STANDARD
  265.26 +TZOFFSETFROM:-0100
  265.27 +TZOFFSETTO:+0000
  265.28 +TZNAME:GMT
  265.29 +DTSTART:19600101T000000
  265.30 +RDATE:19600101T000000
  265.31 +END:STANDARD
  265.32 +END:VTIMEZONE
  265.33 +END:VCALENDAR
   266.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   266.2 +++ b/src/zoneinfo-global/Africa/Dakar.ics	Tue Feb 10 18:12:00 2015 +0100
   266.3 @@ -0,0 +1,23 @@
   266.4 +BEGIN:VCALENDAR
   266.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   266.6 +VERSION:2.0
   266.7 +BEGIN:VTIMEZONE
   266.8 +TZID:Africa/Dakar
   266.9 +TZURL:http://tzurl.org/zoneinfo-global/Africa/Dakar
  266.10 +X-LIC-LOCATION:Africa/Dakar
  266.11 +BEGIN:STANDARD
  266.12 +TZOFFSETFROM:-010944
  266.13 +TZOFFSETTO:-0100
  266.14 +TZNAME:WAT
  266.15 +DTSTART:19120101T000000
  266.16 +RDATE:19120101T000000
  266.17 +END:STANDARD
  266.18 +BEGIN:STANDARD
  266.19 +TZOFFSETFROM:-0100
  266.20 +TZOFFSETTO:+0000
  266.21 +TZNAME:GMT
  266.22 +DTSTART:19410601T000000
  266.23 +RDATE:19410601T000000
  266.24 +END:STANDARD
  266.25 +END:VTIMEZONE
  266.26 +END:VCALENDAR
   267.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   267.2 +++ b/src/zoneinfo-global/Africa/Dar_es_Salaam.ics	Tue Feb 10 18:12:00 2015 +0100
   267.3 @@ -0,0 +1,30 @@
   267.4 +BEGIN:VCALENDAR
   267.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   267.6 +VERSION:2.0
   267.7 +BEGIN:VTIMEZONE
   267.8 +TZID:Africa/Dar_es_Salaam
   267.9 +TZURL:http://tzurl.org/zoneinfo-global/Africa/Dar_es_Salaam
  267.10 +X-LIC-LOCATION:Africa/Dar_es_Salaam
  267.11 +BEGIN:STANDARD
  267.12 +TZOFFSETFROM:+023708
  267.13 +TZOFFSETTO:+0300
  267.14 +TZNAME:EAT
  267.15 +DTSTART:19310101T000000
  267.16 +RDATE:19310101T000000
  267.17 +END:STANDARD
  267.18 +BEGIN:STANDARD
  267.19 +TZOFFSETFROM:+0300
  267.20 +TZOFFSETTO:+0245
  267.21 +TZNAME:BEAUT
  267.22 +DTSTART:19480101T000000
  267.23 +RDATE:19480101T000000
  267.24 +END:STANDARD
  267.25 +BEGIN:STANDARD
  267.26 +TZOFFSETFROM:+0245
  267.27 +TZOFFSETTO:+0300
  267.28 +TZNAME:EAT
  267.29 +DTSTART:19610101T000000
  267.30 +RDATE:19610101T000000
  267.31 +END:STANDARD
  267.32 +END:VTIMEZONE
  267.33 +END:VCALENDAR
   268.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   268.2 +++ b/src/zoneinfo-global/Africa/Djibouti.ics	Tue Feb 10 18:12:00 2015 +0100
   268.3 @@ -0,0 +1,16 @@
   268.4 +BEGIN:VCALENDAR
   268.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   268.6 +VERSION:2.0
   268.7 +BEGIN:VTIMEZONE
   268.8 +TZID:Africa/Djibouti
   268.9 +TZURL:http://tzurl.org/zoneinfo-global/Africa/Djibouti
  268.10 +X-LIC-LOCATION:Africa/Djibouti
  268.11 +BEGIN:STANDARD
  268.12 +TZOFFSETFROM:+025236
  268.13 +TZOFFSETTO:+0300
  268.14 +TZNAME:EAT
  268.15 +DTSTART:19110701T000000
  268.16 +RDATE:19110701T000000
  268.17 +END:STANDARD
  268.18 +END:VTIMEZONE
  268.19 +END:VCALENDAR
   269.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   269.2 +++ b/src/zoneinfo-global/Africa/Douala.ics	Tue Feb 10 18:12:00 2015 +0100
   269.3 @@ -0,0 +1,16 @@
   269.4 +BEGIN:VCALENDAR
   269.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   269.6 +VERSION:2.0
   269.7 +BEGIN:VTIMEZONE
   269.8 +TZID:Africa/Douala
   269.9 +TZURL:http://tzurl.org/zoneinfo-global/Africa/Douala
  269.10 +X-LIC-LOCATION:Africa/Douala
  269.11 +BEGIN:STANDARD
  269.12 +TZOFFSETFROM:+003848
  269.13 +TZOFFSETTO:+0100
  269.14 +TZNAME:WAT
  269.15 +DTSTART:19120101T000000
  269.16 +RDATE:19120101T000000
  269.17 +END:STANDARD
  269.18 +END:VTIMEZONE
  269.19 +END:VCALENDAR
   270.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   270.2 +++ b/src/zoneinfo-global/Africa/El_Aaiun.ics	Tue Feb 10 18:12:00 2015 +0100
   270.3 @@ -0,0 +1,23 @@
   270.4 +BEGIN:VCALENDAR
   270.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   270.6 +VERSION:2.0
   270.7 +BEGIN:VTIMEZONE
   270.8 +TZID:Africa/El_Aaiun
   270.9 +TZURL:http://tzurl.org/zoneinfo-global/Africa/El_Aaiun
  270.10 +X-LIC-LOCATION:Africa/El_Aaiun
  270.11 +BEGIN:STANDARD
  270.12 +TZOFFSETFROM:-005248
  270.13 +TZOFFSETTO:-0100
  270.14 +TZNAME:WAT
  270.15 +DTSTART:19340101T000000
  270.16 +RDATE:19340101T000000
  270.17 +END:STANDARD
  270.18 +BEGIN:STANDARD
  270.19 +TZOFFSETFROM:-0100
  270.20 +TZOFFSETTO:+0000
  270.21 +TZNAME:WET
  270.22 +DTSTART:19760414T000000
  270.23 +RDATE:19760414T000000
  270.24 +END:STANDARD
  270.25 +END:VTIMEZONE
  270.26 +END:VCALENDAR
   271.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   271.2 +++ b/src/zoneinfo-global/Africa/Freetown.ics	Tue Feb 10 18:12:00 2015 +0100
   271.3 @@ -0,0 +1,82 @@
   271.4 +BEGIN:VCALENDAR
   271.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   271.6 +VERSION:2.0
   271.7 +BEGIN:VTIMEZONE
   271.8 +TZID:Africa/Freetown
   271.9 +TZURL:http://tzurl.org/zoneinfo-global/Africa/Freetown
  271.10 +X-LIC-LOCATION:Africa/Freetown
  271.11 +BEGIN:STANDARD
  271.12 +TZOFFSETFROM:-0053
  271.13 +TZOFFSETTO:-0053
  271.14 +TZNAME:FMT
  271.15 +DTSTART:18820101T000000
  271.16 +RDATE:18820101T000000
  271.17 +END:STANDARD
  271.18 +BEGIN:STANDARD
  271.19 +TZOFFSETFROM:-0053
  271.20 +TZOFFSETTO:-0100
  271.21 +TZNAME:WAT
  271.22 +DTSTART:19130601T000000
  271.23 +RDATE:19130601T000000
  271.24 +END:STANDARD
  271.25 +BEGIN:DAYLIGHT
  271.26 +TZOFFSETFROM:-0100
  271.27 +TZOFFSETTO:-0020
  271.28 +TZNAME:SLST
  271.29 +DTSTART:19350601T000000
  271.30 +RDATE:19350601T000000
  271.31 +RDATE:19360601T000000
  271.32 +RDATE:19370601T000000
  271.33 +RDATE:19380601T000000
  271.34 +RDATE:19390601T000000
  271.35 +RDATE:19400601T000000
  271.36 +RDATE:19410601T000000
  271.37 +RDATE:19420601T000000
  271.38 +END:DAYLIGHT
  271.39 +BEGIN:STANDARD
  271.40 +TZOFFSETFROM:-0020
  271.41 +TZOFFSETTO:-0100
  271.42 +TZNAME:WAT
  271.43 +DTSTART:19351001T000000
  271.44 +RDATE:19351001T000000
  271.45 +RDATE:19361001T000000
  271.46 +RDATE:19371001T000000
  271.47 +RDATE:19381001T000000
  271.48 +RDATE:19391001T000000
  271.49 +RDATE:19401001T000000
  271.50 +RDATE:19411001T000000
  271.51 +RDATE:19421001T000000
  271.52 +END:STANDARD
  271.53 +BEGIN:STANDARD
  271.54 +TZOFFSETFROM:-0100
  271.55 +TZOFFSETTO:+0000
  271.56 +TZNAME:GMT
  271.57 +DTSTART:19570101T000000
  271.58 +RDATE:19570101T000000
  271.59 +END:STANDARD
  271.60 +BEGIN:DAYLIGHT
  271.61 +TZOFFSETFROM:+0000
  271.62 +TZOFFSETTO:+0100
  271.63 +TZNAME:SLST
  271.64 +DTSTART:19570601T000000
  271.65 +RDATE:19570601T000000
  271.66 +RDATE:19580601T000000
  271.67 +RDATE:19590601T000000
  271.68 +RDATE:19600601T000000
  271.69 +RDATE:19610601T000000
  271.70 +RDATE:19620601T000000
  271.71 +END:DAYLIGHT
  271.72 +BEGIN:STANDARD
  271.73 +TZOFFSETFROM:+0100
  271.74 +TZOFFSETTO:+0000
  271.75 +TZNAME:GMT
  271.76 +DTSTART:19570901T000000
  271.77 +RDATE:19570901T000000
  271.78 +RDATE:19580901T000000
  271.79 +RDATE:19590901T000000
  271.80 +RDATE:19600901T000000
  271.81 +RDATE:19610901T000000
  271.82 +RDATE:19620901T000000
  271.83 +END:STANDARD
  271.84 +END:VTIMEZONE
  271.85 +END:VCALENDAR
   272.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   272.2 +++ b/src/zoneinfo-global/Africa/Gaborone.ics	Tue Feb 10 18:12:00 2015 +0100
   272.3 @@ -0,0 +1,30 @@
   272.4 +BEGIN:VCALENDAR
   272.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   272.6 +VERSION:2.0
   272.7 +BEGIN:VTIMEZONE
   272.8 +TZID:Africa/Gaborone
   272.9 +TZURL:http://tzurl.org/zoneinfo-global/Africa/Gaborone
  272.10 +X-LIC-LOCATION:Africa/Gaborone
  272.11 +BEGIN:STANDARD
  272.12 +TZOFFSETFROM:+014340
  272.13 +TZOFFSETTO:+0200
  272.14 +TZNAME:CAT
  272.15 +DTSTART:18850101T000000
  272.16 +RDATE:18850101T000000
  272.17 +END:STANDARD
  272.18 +BEGIN:DAYLIGHT
  272.19 +TZOFFSETFROM:+0200
  272.20 +TZOFFSETTO:+0300
  272.21 +TZNAME:CAST
  272.22 +DTSTART:19430919T020000
  272.23 +RDATE:19430919T020000
  272.24 +END:DAYLIGHT
  272.25 +BEGIN:STANDARD
  272.26 +TZOFFSETFROM:+0300
  272.27 +TZOFFSETTO:+0200
  272.28 +TZNAME:CAT
  272.29 +DTSTART:19440319T020000
  272.30 +RDATE:19440319T020000
  272.31 +END:STANDARD
  272.32 +END:VTIMEZONE
  272.33 +END:VCALENDAR
   273.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   273.2 +++ b/src/zoneinfo-global/Africa/Harare.ics	Tue Feb 10 18:12:00 2015 +0100
   273.3 @@ -0,0 +1,16 @@
   273.4 +BEGIN:VCALENDAR
   273.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   273.6 +VERSION:2.0
   273.7 +BEGIN:VTIMEZONE
   273.8 +TZID:Africa/Harare
   273.9 +TZURL:http://tzurl.org/zoneinfo-global/Africa/Harare
  273.10 +X-LIC-LOCATION:Africa/Harare
  273.11 +BEGIN:STANDARD
  273.12 +TZOFFSETFROM:+020412
  273.13 +TZOFFSETTO:+0200
  273.14 +TZNAME:CAT
  273.15 +DTSTART:19030301T000000
  273.16 +RDATE:19030301T000000
  273.17 +END:STANDARD
  273.18 +END:VTIMEZONE
  273.19 +END:VCALENDAR
   274.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   274.2 +++ b/src/zoneinfo-global/Africa/Johannesburg.ics	Tue Feb 10 18:12:00 2015 +0100
   274.3 @@ -0,0 +1,39 @@
   274.4 +BEGIN:VCALENDAR
   274.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   274.6 +VERSION:2.0
   274.7 +BEGIN:VTIMEZONE
   274.8 +TZID:Africa/Johannesburg
   274.9 +TZURL:http://tzurl.org/zoneinfo-global/Africa/Johannesburg
  274.10 +X-LIC-LOCATION:Africa/Johannesburg
  274.11 +BEGIN:STANDARD
  274.12 +TZOFFSETFROM:+0152
  274.13 +TZOFFSETTO:+0130
  274.14 +TZNAME:SAST
  274.15 +DTSTART:18920208T000000
  274.16 +RDATE:18920208T000000
  274.17 +END:STANDARD
  274.18 +BEGIN:STANDARD
  274.19 +TZOFFSETFROM:+0130
  274.20 +TZOFFSETTO:+0200
  274.21 +TZNAME:SAST
  274.22 +DTSTART:19030301T000000
  274.23 +RDATE:19030301T000000
  274.24 +END:STANDARD
  274.25 +BEGIN:DAYLIGHT
  274.26 +TZOFFSETFROM:+0200
  274.27 +TZOFFSETTO:+0300
  274.28 +TZNAME:SAST
  274.29 +DTSTART:19420920T020000
  274.30 +RDATE:19420920T020000
  274.31 +RDATE:19430919T020000
  274.32 +END:DAYLIGHT
  274.33 +BEGIN:STANDARD
  274.34 +TZOFFSETFROM:+0300
  274.35 +TZOFFSETTO:+0200
  274.36 +TZNAME:SAST
  274.37 +DTSTART:19430321T020000
  274.38 +RDATE:19430321T020000
  274.39 +RDATE:19440319T020000
  274.40 +END:STANDARD
  274.41 +END:VTIMEZONE
  274.42 +END:VCALENDAR
   275.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   275.2 +++ b/src/zoneinfo-global/Africa/Juba.ics	Tue Feb 10 18:12:00 2015 +0100
   275.3 @@ -0,0 +1,67 @@
   275.4 +BEGIN:VCALENDAR
   275.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   275.6 +VERSION:2.0
   275.7 +BEGIN:VTIMEZONE
   275.8 +TZID:Africa/Juba
   275.9 +TZURL:http://tzurl.org/zoneinfo-global/Africa/Juba
  275.10 +X-LIC-LOCATION:Africa/Juba
  275.11 +BEGIN:STANDARD
  275.12 +TZOFFSETFROM:+020624
  275.13 +TZOFFSETTO:+0200
  275.14 +TZNAME:CAT
  275.15 +DTSTART:19310101T000000
  275.16 +RDATE:19310101T000000
  275.17 +END:STANDARD
  275.18 +BEGIN:DAYLIGHT
  275.19 +TZOFFSETFROM:+0200
  275.20 +TZOFFSETTO:+0300
  275.21 +TZNAME:CAST
  275.22 +DTSTART:19700501T000000
  275.23 +RDATE:19700501T000000
  275.24 +RDATE:19710430T000000
  275.25 +RDATE:19720430T000000
  275.26 +RDATE:19730429T000000
  275.27 +RDATE:19740428T000000
  275.28 +RDATE:19750427T000000
  275.29 +RDATE:19760425T000000
  275.30 +RDATE:19770424T000000
  275.31 +RDATE:19780430T000000
  275.32 +RDATE:19790429T000000
  275.33 +RDATE:19800427T000000
  275.34 +RDATE:19810426T000000
  275.35 +RDATE:19820425T000000
  275.36 +RDATE:19830424T000000
  275.37 +RDATE:19840429T000000
  275.38 +RDATE:19850428T000000
  275.39 +END:DAYLIGHT
  275.40 +BEGIN:STANDARD
  275.41 +TZOFFSETFROM:+0300
  275.42 +TZOFFSETTO:+0200
  275.43 +TZNAME:CAT
  275.44 +DTSTART:19701015T000000
  275.45 +RDATE:19701015T000000
  275.46 +RDATE:19711015T000000
  275.47 +RDATE:19721015T000000
  275.48 +RDATE:19731015T000000
  275.49 +RDATE:19741015T000000
  275.50 +RDATE:19751015T000000
  275.51 +RDATE:19761015T000000
  275.52 +RDATE:19771015T000000
  275.53 +RDATE:19781015T000000
  275.54 +RDATE:19791015T000000
  275.55 +RDATE:19801015T000000
  275.56 +RDATE:19811015T000000
  275.57 +RDATE:19821015T000000
  275.58 +RDATE:19831015T000000
  275.59 +RDATE:19841015T000000
  275.60 +RDATE:19851015T000000
  275.61 +END:STANDARD
  275.62 +BEGIN:STANDARD
  275.63 +TZOFFSETFROM:+0200
  275.64 +TZOFFSETTO:+0300
  275.65 +TZNAME:EAT
  275.66 +DTSTART:20000115T120000
  275.67 +RDATE:20000115T120000
  275.68 +END:STANDARD
  275.69 +END:VTIMEZONE
  275.70 +END:VCALENDAR
   276.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   276.2 +++ b/src/zoneinfo-global/Africa/Kampala.ics	Tue Feb 10 18:12:00 2015 +0100
   276.3 @@ -0,0 +1,37 @@
   276.4 +BEGIN:VCALENDAR
   276.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   276.6 +VERSION:2.0
   276.7 +BEGIN:VTIMEZONE
   276.8 +TZID:Africa/Kampala
   276.9 +TZURL:http://tzurl.org/zoneinfo-global/Africa/Kampala
  276.10 +X-LIC-LOCATION:Africa/Kampala
  276.11 +BEGIN:STANDARD
  276.12 +TZOFFSETFROM:+020940
  276.13 +TZOFFSETTO:+0300
  276.14 +TZNAME:EAT
  276.15 +DTSTART:19280701T000000
  276.16 +RDATE:19280701T000000
  276.17 +END:STANDARD
  276.18 +BEGIN:STANDARD
  276.19 +TZOFFSETFROM:+0300
  276.20 +TZOFFSETTO:+0230
  276.21 +TZNAME:BEAT
  276.22 +DTSTART:19300101T000000
  276.23 +RDATE:19300101T000000
  276.24 +END:STANDARD
  276.25 +BEGIN:STANDARD
  276.26 +TZOFFSETFROM:+0230
  276.27 +TZOFFSETTO:+0245
  276.28 +TZNAME:BEAUT
  276.29 +DTSTART:19480101T000000
  276.30 +RDATE:19480101T000000
  276.31 +END:STANDARD
  276.32 +BEGIN:STANDARD
  276.33 +TZOFFSETFROM:+0245
  276.34 +TZOFFSETTO:+0300
  276.35 +TZNAME:EAT
  276.36 +DTSTART:19570101T000000
  276.37 +RDATE:19570101T000000
  276.38 +END:STANDARD
  276.39 +END:VTIMEZONE
  276.40 +END:VCALENDAR
   277.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   277.2 +++ b/src/zoneinfo-global/Africa/Khartoum.ics	Tue Feb 10 18:12:00 2015 +0100
   277.3 @@ -0,0 +1,67 @@
   277.4 +BEGIN:VCALENDAR
   277.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   277.6 +VERSION:2.0
   277.7 +BEGIN:VTIMEZONE
   277.8 +TZID:Africa/Khartoum
   277.9 +TZURL:http://tzurl.org/zoneinfo-global/Africa/Khartoum
  277.10 +X-LIC-LOCATION:Africa/Khartoum
  277.11 +BEGIN:STANDARD
  277.12 +TZOFFSETFROM:+021008
  277.13 +TZOFFSETTO:+0200
  277.14 +TZNAME:CAT
  277.15 +DTSTART:19310101T000000
  277.16 +RDATE:19310101T000000
  277.17 +END:STANDARD
  277.18 +BEGIN:DAYLIGHT
  277.19 +TZOFFSETFROM:+0200
  277.20 +TZOFFSETTO:+0300
  277.21 +TZNAME:CAST
  277.22 +DTSTART:19700501T000000
  277.23 +RDATE:19700501T000000
  277.24 +RDATE:19710430T000000
  277.25 +RDATE:19720430T000000
  277.26 +RDATE:19730429T000000
  277.27 +RDATE:19740428T000000
  277.28 +RDATE:19750427T000000
  277.29 +RDATE:19760425T000000
  277.30 +RDATE:19770424T000000
  277.31 +RDATE:19780430T000000
  277.32 +RDATE:19790429T000000
  277.33 +RDATE:19800427T000000
  277.34 +RDATE:19810426T000000
  277.35 +RDATE:19820425T000000
  277.36 +RDATE:19830424T000000
  277.37 +RDATE:19840429T000000
  277.38 +RDATE:19850428T000000
  277.39 +END:DAYLIGHT
  277.40 +BEGIN:STANDARD
  277.41 +TZOFFSETFROM:+0300
  277.42 +TZOFFSETTO:+0200
  277.43 +TZNAME:CAT
  277.44 +DTSTART:19701015T000000
  277.45 +RDATE:19701015T000000
  277.46 +RDATE:19711015T000000
  277.47 +RDATE:19721015T000000
  277.48 +RDATE:19731015T000000
  277.49 +RDATE:19741015T000000
  277.50 +RDATE:19751015T000000
  277.51 +RDATE:19761015T000000
  277.52 +RDATE:19771015T000000
  277.53 +RDATE:19781015T000000
  277.54 +RDATE:19791015T000000
  277.55 +RDATE:19801015T000000
  277.56 +RDATE:19811015T000000
  277.57 +RDATE:19821015T000000
  277.58 +RDATE:19831015T000000
  277.59 +RDATE:19841015T000000
  277.60 +RDATE:19851015T000000
  277.61 +END:STANDARD
  277.62 +BEGIN:STANDARD
  277.63 +TZOFFSETFROM:+0200
  277.64 +TZOFFSETTO:+0300
  277.65 +TZNAME:EAT
  277.66 +DTSTART:20000115T120000
  277.67 +RDATE:20000115T120000
  277.68 +END:STANDARD
  277.69 +END:VTIMEZONE
  277.70 +END:VCALENDAR
   278.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   278.2 +++ b/src/zoneinfo-global/Africa/Kigali.ics	Tue Feb 10 18:12:00 2015 +0100
   278.3 @@ -0,0 +1,16 @@
   278.4 +BEGIN:VCALENDAR
   278.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   278.6 +VERSION:2.0
   278.7 +BEGIN:VTIMEZONE
   278.8 +TZID:Africa/Kigali
   278.9 +TZURL:http://tzurl.org/zoneinfo-global/Africa/Kigali
  278.10 +X-LIC-LOCATION:Africa/Kigali
  278.11 +BEGIN:STANDARD
  278.12 +TZOFFSETFROM:+020016
  278.13 +TZOFFSETTO:+0200
  278.14 +TZNAME:CAT
  278.15 +DTSTART:19350601T000000
  278.16 +RDATE:19350601T000000
  278.17 +END:STANDARD
  278.18 +END:VTIMEZONE
  278.19 +END:VCALENDAR
   279.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   279.2 +++ b/src/zoneinfo-global/Africa/Kinshasa.ics	Tue Feb 10 18:12:00 2015 +0100
   279.3 @@ -0,0 +1,16 @@
   279.4 +BEGIN:VCALENDAR
   279.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   279.6 +VERSION:2.0
   279.7 +BEGIN:VTIMEZONE
   279.8 +TZID:Africa/Kinshasa
   279.9 +TZURL:http://tzurl.org/zoneinfo-global/Africa/Kinshasa
  279.10 +X-LIC-LOCATION:Africa/Kinshasa
  279.11 +BEGIN:STANDARD
  279.12 +TZOFFSETFROM:+010112
  279.13 +TZOFFSETTO:+0100
  279.14 +TZNAME:WAT
  279.15 +DTSTART:18971109T000000
  279.16 +RDATE:18971109T000000
  279.17 +END:STANDARD
  279.18 +END:VTIMEZONE
  279.19 +END:VCALENDAR
   280.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   280.2 +++ b/src/zoneinfo-global/Africa/Lagos.ics	Tue Feb 10 18:12:00 2015 +0100
   280.3 @@ -0,0 +1,16 @@
   280.4 +BEGIN:VCALENDAR
   280.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   280.6 +VERSION:2.0
   280.7 +BEGIN:VTIMEZONE
   280.8 +TZID:Africa/Lagos
   280.9 +TZURL:http://tzurl.org/zoneinfo-global/Africa/Lagos
  280.10 +X-LIC-LOCATION:Africa/Lagos
  280.11 +BEGIN:STANDARD
  280.12 +TZOFFSETFROM:+001336
  280.13 +TZOFFSETTO:+0100
  280.14 +TZNAME:WAT
  280.15 +DTSTART:19190901T000000
  280.16 +RDATE:19190901T000000
  280.17 +END:STANDARD
  280.18 +END:VTIMEZONE
  280.19 +END:VCALENDAR
   281.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   281.2 +++ b/src/zoneinfo-global/Africa/Libreville.ics	Tue Feb 10 18:12:00 2015 +0100
   281.3 @@ -0,0 +1,16 @@
   281.4 +BEGIN:VCALENDAR
   281.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   281.6 +VERSION:2.0
   281.7 +BEGIN:VTIMEZONE
   281.8 +TZID:Africa/Libreville
   281.9 +TZURL:http://tzurl.org/zoneinfo-global/Africa/Libreville
  281.10 +X-LIC-LOCATION:Africa/Libreville
  281.11 +BEGIN:STANDARD
  281.12 +TZOFFSETFROM:+003748
  281.13 +TZOFFSETTO:+0100
  281.14 +TZNAME:WAT
  281.15 +DTSTART:19120101T000000
  281.16 +RDATE:19120101T000000
  281.17 +END:STANDARD
  281.18 +END:VTIMEZONE
  281.19 +END:VCALENDAR
   282.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   282.2 +++ b/src/zoneinfo-global/Africa/Lome.ics	Tue Feb 10 18:12:00 2015 +0100
   282.3 @@ -0,0 +1,16 @@
   282.4 +BEGIN:VCALENDAR
   282.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   282.6 +VERSION:2.0
   282.7 +BEGIN:VTIMEZONE
   282.8 +TZID:Africa/Lome
   282.9 +TZURL:http://tzurl.org/zoneinfo-global/Africa/Lome
  282.10 +X-LIC-LOCATION:Africa/Lome
  282.11 +BEGIN:STANDARD
  282.12 +TZOFFSETFROM:+000452
  282.13 +TZOFFSETTO:+0000
  282.14 +TZNAME:GMT
  282.15 +DTSTART:18930101T000000
  282.16 +RDATE:18930101T000000
  282.17 +END:STANDARD
  282.18 +END:VTIMEZONE
  282.19 +END:VCALENDAR
   283.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   283.2 +++ b/src/zoneinfo-global/Africa/Luanda.ics	Tue Feb 10 18:12:00 2015 +0100
   283.3 @@ -0,0 +1,23 @@
   283.4 +BEGIN:VCALENDAR
   283.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   283.6 +VERSION:2.0
   283.7 +BEGIN:VTIMEZONE
   283.8 +TZID:Africa/Luanda
   283.9 +TZURL:http://tzurl.org/zoneinfo-global/Africa/Luanda
  283.10 +X-LIC-LOCATION:Africa/Luanda
  283.11 +BEGIN:STANDARD
  283.12 +TZOFFSETFROM:+005256
  283.13 +TZOFFSETTO:+005204
  283.14 +TZNAME:AOT
  283.15 +DTSTART:18920101T000000
  283.16 +RDATE:18920101T000000
  283.17 +END:STANDARD
  283.18 +BEGIN:STANDARD
  283.19 +TZOFFSETFROM:+005204
  283.20 +TZOFFSETTO:+0100
  283.21 +TZNAME:WAT
  283.22 +DTSTART:19110526T000000
  283.23 +RDATE:19110526T000000
  283.24 +END:STANDARD
  283.25 +END:VTIMEZONE
  283.26 +END:VCALENDAR
   284.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   284.2 +++ b/src/zoneinfo-global/Africa/Lubumbashi.ics	Tue Feb 10 18:12:00 2015 +0100
   284.3 @@ -0,0 +1,16 @@
   284.4 +BEGIN:VCALENDAR
   284.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   284.6 +VERSION:2.0
   284.7 +BEGIN:VTIMEZONE
   284.8 +TZID:Africa/Lubumbashi
   284.9 +TZURL:http://tzurl.org/zoneinfo-global/Africa/Lubumbashi
  284.10 +X-LIC-LOCATION:Africa/Lubumbashi
  284.11 +BEGIN:STANDARD
  284.12 +TZOFFSETFROM:+014952
  284.13 +TZOFFSETTO:+0200
  284.14 +TZNAME:CAT
  284.15 +DTSTART:18971109T000000
  284.16 +RDATE:18971109T000000
  284.17 +END:STANDARD
  284.18 +END:VTIMEZONE
  284.19 +END:VCALENDAR
   285.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   285.2 +++ b/src/zoneinfo-global/Africa/Lusaka.ics	Tue Feb 10 18:12:00 2015 +0100
   285.3 @@ -0,0 +1,16 @@
   285.4 +BEGIN:VCALENDAR
   285.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   285.6 +VERSION:2.0
   285.7 +BEGIN:VTIMEZONE
   285.8 +TZID:Africa/Lusaka
   285.9 +TZURL:http://tzurl.org/zoneinfo-global/Africa/Lusaka
  285.10 +X-LIC-LOCATION:Africa/Lusaka
  285.11 +BEGIN:STANDARD
  285.12 +TZOFFSETFROM:+015308
  285.13 +TZOFFSETTO:+0200
  285.14 +TZNAME:CAT
  285.15 +DTSTART:19030301T000000
  285.16 +RDATE:19030301T000000
  285.17 +END:STANDARD
  285.18 +END:VTIMEZONE
  285.19 +END:VCALENDAR
   286.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   286.2 +++ b/src/zoneinfo-global/Africa/Malabo.ics	Tue Feb 10 18:12:00 2015 +0100
   286.3 @@ -0,0 +1,23 @@
   286.4 +BEGIN:VCALENDAR
   286.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   286.6 +VERSION:2.0
   286.7 +BEGIN:VTIMEZONE
   286.8 +TZID:Africa/Malabo
   286.9 +TZURL:http://tzurl.org/zoneinfo-global/Africa/Malabo
  286.10 +X-LIC-LOCATION:Africa/Malabo
  286.11 +BEGIN:STANDARD
  286.12 +TZOFFSETFROM:+003508
  286.13 +TZOFFSETTO:+0000
  286.14 +TZNAME:GMT
  286.15 +DTSTART:19120101T000000
  286.16 +RDATE:19120101T000000
  286.17 +END:STANDARD
  286.18 +BEGIN:STANDARD
  286.19 +TZOFFSETFROM:+0000
  286.20 +TZOFFSETTO:+0100
  286.21 +TZNAME:WAT
  286.22 +DTSTART:19631215T000000
  286.23 +RDATE:19631215T000000
  286.24 +END:STANDARD
  286.25 +END:VTIMEZONE
  286.26 +END:VCALENDAR
   287.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   287.2 +++ b/src/zoneinfo-global/Africa/Maputo.ics	Tue Feb 10 18:12:00 2015 +0100
   287.3 @@ -0,0 +1,16 @@
   287.4 +BEGIN:VCALENDAR
   287.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   287.6 +VERSION:2.0
   287.7 +BEGIN:VTIMEZONE
   287.8 +TZID:Africa/Maputo
   287.9 +TZURL:http://tzurl.org/zoneinfo-global/Africa/Maputo
  287.10 +X-LIC-LOCATION:Africa/Maputo
  287.11 +BEGIN:STANDARD
  287.12 +TZOFFSETFROM:+021020
  287.13 +TZOFFSETTO:+0200
  287.14 +TZNAME:CAT
  287.15 +DTSTART:19030301T000000
  287.16 +RDATE:19030301T000000
  287.17 +END:STANDARD
  287.18 +END:VTIMEZONE
  287.19 +END:VCALENDAR
   288.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   288.2 +++ b/src/zoneinfo-global/Africa/Maseru.ics	Tue Feb 10 18:12:00 2015 +0100
   288.3 @@ -0,0 +1,30 @@
   288.4 +BEGIN:VCALENDAR
   288.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   288.6 +VERSION:2.0
   288.7 +BEGIN:VTIMEZONE
   288.8 +TZID:Africa/Maseru
   288.9 +TZURL:http://tzurl.org/zoneinfo-global/Africa/Maseru
  288.10 +X-LIC-LOCATION:Africa/Maseru
  288.11 +BEGIN:STANDARD
  288.12 +TZOFFSETFROM:+0150
  288.13 +TZOFFSETTO:+0200
  288.14 +TZNAME:SAST
  288.15 +DTSTART:19030301T000000
  288.16 +RDATE:19030301T000000
  288.17 +END:STANDARD
  288.18 +BEGIN:DAYLIGHT
  288.19 +TZOFFSETFROM:+0200
  288.20 +TZOFFSETTO:+0300
  288.21 +TZNAME:SAST
  288.22 +DTSTART:19430919T020000
  288.23 +RDATE:19430919T020000
  288.24 +END:DAYLIGHT
  288.25 +BEGIN:STANDARD
  288.26 +TZOFFSETFROM:+0300
  288.27 +TZOFFSETTO:+0200
  288.28 +TZNAME:SAST
  288.29 +DTSTART:19440319T020000
  288.30 +RDATE:19440319T020000
  288.31 +END:STANDARD
  288.32 +END:VTIMEZONE
  288.33 +END:VCALENDAR
   289.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   289.2 +++ b/src/zoneinfo-global/Africa/Mbabane.ics	Tue Feb 10 18:12:00 2015 +0100
   289.3 @@ -0,0 +1,16 @@
   289.4 +BEGIN:VCALENDAR
   289.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   289.6 +VERSION:2.0
   289.7 +BEGIN:VTIMEZONE
   289.8 +TZID:Africa/Mbabane
   289.9 +TZURL:http://tzurl.org/zoneinfo-global/Africa/Mbabane
  289.10 +X-LIC-LOCATION:Africa/Mbabane
  289.11 +BEGIN:STANDARD
  289.12 +TZOFFSETFROM:+020424
  289.13 +TZOFFSETTO:+0200
  289.14 +TZNAME:SAST
  289.15 +DTSTART:19030301T000000
  289.16 +RDATE:19030301T000000
  289.17 +END:STANDARD
  289.18 +END:VTIMEZONE
  289.19 +END:VCALENDAR
   290.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   290.2 +++ b/src/zoneinfo-global/Africa/Mogadishu.ics	Tue Feb 10 18:12:00 2015 +0100
   290.3 @@ -0,0 +1,30 @@
   290.4 +BEGIN:VCALENDAR
   290.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   290.6 +VERSION:2.0
   290.7 +BEGIN:VTIMEZONE
   290.8 +TZID:Africa/Mogadishu
   290.9 +TZURL:http://tzurl.org/zoneinfo-global/Africa/Mogadishu
  290.10 +X-LIC-LOCATION:Africa/Mogadishu
  290.11 +BEGIN:STANDARD
  290.12 +TZOFFSETFROM:+030128
  290.13 +TZOFFSETTO:+0300
  290.14 +TZNAME:EAT
  290.15 +DTSTART:18931101T000000
  290.16 +RDATE:18931101T000000
  290.17 +END:STANDARD
  290.18 +BEGIN:STANDARD
  290.19 +TZOFFSETFROM:+0300
  290.20 +TZOFFSETTO:+0230
  290.21 +TZNAME:BEAT
  290.22 +DTSTART:19310101T000000
  290.23 +RDATE:19310101T000000
  290.24 +END:STANDARD
  290.25 +BEGIN:STANDARD
  290.26 +TZOFFSETFROM:+0230
  290.27 +TZOFFSETTO:+0300
  290.28 +TZNAME:EAT
  290.29 +DTSTART:19570101T000000
  290.30 +RDATE:19570101T000000
  290.31 +END:STANDARD
  290.32 +END:VTIMEZONE
  290.33 +END:VCALENDAR
   291.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   291.2 +++ b/src/zoneinfo-global/Africa/Monrovia.ics	Tue Feb 10 18:12:00 2015 +0100
   291.3 @@ -0,0 +1,30 @@
   291.4 +BEGIN:VCALENDAR
   291.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   291.6 +VERSION:2.0
   291.7 +BEGIN:VTIMEZONE
   291.8 +TZID:Africa/Monrovia
   291.9 +TZURL:http://tzurl.org/zoneinfo-global/Africa/Monrovia
  291.10 +X-LIC-LOCATION:Africa/Monrovia
  291.11 +BEGIN:STANDARD
  291.12 +TZOFFSETFROM:-004308
  291.13 +TZOFFSETTO:-004308
  291.14 +TZNAME:MMT
  291.15 +DTSTART:18820101T000000
  291.16 +RDATE:18820101T000000
  291.17 +END:STANDARD
  291.18 +BEGIN:STANDARD
  291.19 +TZOFFSETFROM:-004308
  291.20 +TZOFFSETTO:-004430
  291.21 +TZNAME:LRT
  291.22 +DTSTART:19190301T000000
  291.23 +RDATE:19190301T000000
  291.24 +END:STANDARD
  291.25 +BEGIN:STANDARD
  291.26 +TZOFFSETFROM:-004430
  291.27 +TZOFFSETTO:+0000
  291.28 +TZNAME:GMT
  291.29 +DTSTART:19720501T000000
  291.30 +RDATE:19720501T000000
  291.31 +END:STANDARD
  291.32 +END:VTIMEZONE
  291.33 +END:VCALENDAR
   292.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   292.2 +++ b/src/zoneinfo-global/Africa/Nairobi.ics	Tue Feb 10 18:12:00 2015 +0100
   292.3 @@ -0,0 +1,37 @@
   292.4 +BEGIN:VCALENDAR
   292.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   292.6 +VERSION:2.0
   292.7 +BEGIN:VTIMEZONE
   292.8 +TZID:Africa/Nairobi
   292.9 +TZURL:http://tzurl.org/zoneinfo-global/Africa/Nairobi
  292.10 +X-LIC-LOCATION:Africa/Nairobi
  292.11 +BEGIN:STANDARD
  292.12 +TZOFFSETFROM:+022716
  292.13 +TZOFFSETTO:+0300
  292.14 +TZNAME:EAT
  292.15 +DTSTART:19280701T000000
  292.16 +RDATE:19280701T000000
  292.17 +END:STANDARD
  292.18 +BEGIN:STANDARD
  292.19 +TZOFFSETFROM:+0300
  292.20 +TZOFFSETTO:+0230
  292.21 +TZNAME:BEAT
  292.22 +DTSTART:19300101T000000
  292.23 +RDATE:19300101T000000
  292.24 +END:STANDARD
  292.25 +BEGIN:STANDARD
  292.26 +TZOFFSETFROM:+0230
  292.27 +TZOFFSETTO:+0245
  292.28 +TZNAME:BEAUT
  292.29 +DTSTART:19400101T000000
  292.30 +RDATE:19400101T000000
  292.31 +END:STANDARD
  292.32 +BEGIN:STANDARD
  292.33 +TZOFFSETFROM:+0245
  292.34 +TZOFFSETTO:+0300
  292.35 +TZNAME:EAT
  292.36 +DTSTART:19600101T000000
  292.37 +RDATE:19600101T000000
  292.38 +END:STANDARD
  292.39 +END:VTIMEZONE
  292.40 +END:VCALENDAR
   293.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   293.2 +++ b/src/zoneinfo-global/Africa/Ndjamena.ics	Tue Feb 10 18:12:00 2015 +0100
   293.3 @@ -0,0 +1,30 @@
   293.4 +BEGIN:VCALENDAR
   293.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   293.6 +VERSION:2.0
   293.7 +BEGIN:VTIMEZONE
   293.8 +TZID:Africa/Ndjamena
   293.9 +TZURL:http://tzurl.org/zoneinfo-global/Africa/Ndjamena
  293.10 +X-LIC-LOCATION:Africa/Ndjamena
  293.11 +BEGIN:STANDARD
  293.12 +TZOFFSETFROM:+010012
  293.13 +TZOFFSETTO:+0100
  293.14 +TZNAME:WAT
  293.15 +DTSTART:19120101T000000
  293.16 +RDATE:19120101T000000
  293.17 +END:STANDARD
  293.18 +BEGIN:DAYLIGHT
  293.19 +TZOFFSETFROM:+0100
  293.20 +TZOFFSETTO:+0200
  293.21 +TZNAME:WAST
  293.22 +DTSTART:19791014T000000
  293.23 +RDATE:19791014T000000
  293.24 +END:DAYLIGHT
  293.25 +BEGIN:STANDARD
  293.26 +TZOFFSETFROM:+0200
  293.27 +TZOFFSETTO:+0100
  293.28 +TZNAME:WAT
  293.29 +DTSTART:19800308T000000
  293.30 +RDATE:19800308T000000
  293.31 +END:STANDARD
  293.32 +END:VTIMEZONE
  293.33 +END:VCALENDAR
   294.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   294.2 +++ b/src/zoneinfo-global/Africa/Niamey.ics	Tue Feb 10 18:12:00 2015 +0100
   294.3 @@ -0,0 +1,30 @@
   294.4 +BEGIN:VCALENDAR
   294.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   294.6 +VERSION:2.0
   294.7 +BEGIN:VTIMEZONE
   294.8 +TZID:Africa/Niamey
   294.9 +TZURL:http://tzurl.org/zoneinfo-global/Africa/Niamey
  294.10 +X-LIC-LOCATION:Africa/Niamey
  294.11 +BEGIN:STANDARD
  294.12 +TZOFFSETFROM:+000828
  294.13 +TZOFFSETTO:-0100
  294.14 +TZNAME:WAT
  294.15 +DTSTART:19120101T000000
  294.16 +RDATE:19120101T000000
  294.17 +END:STANDARD
  294.18 +BEGIN:STANDARD
  294.19 +TZOFFSETFROM:-0100
  294.20 +TZOFFSETTO:+0000
  294.21 +TZNAME:GMT
  294.22 +DTSTART:19340226T000000
  294.23 +RDATE:19340226T000000
  294.24 +END:STANDARD
  294.25 +BEGIN:STANDARD
  294.26 +TZOFFSETFROM:+0000
  294.27 +TZOFFSETTO:+0100
  294.28 +TZNAME:WAT
  294.29 +DTSTART:19600101T000000
  294.30 +RDATE:19600101T000000
  294.31 +END:STANDARD
  294.32 +END:VTIMEZONE
  294.33 +END:VCALENDAR
   295.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   295.2 +++ b/src/zoneinfo-global/Africa/Nouakchott.ics	Tue Feb 10 18:12:00 2015 +0100
   295.3 @@ -0,0 +1,30 @@
   295.4 +BEGIN:VCALENDAR
   295.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   295.6 +VERSION:2.0
   295.7 +BEGIN:VTIMEZONE
   295.8 +TZID:Africa/Nouakchott
   295.9 +TZURL:http://tzurl.org/zoneinfo-global/Africa/Nouakchott
  295.10 +X-LIC-LOCATION:Africa/Nouakchott
  295.11 +BEGIN:STANDARD
  295.12 +TZOFFSETFROM:-010348
  295.13 +TZOFFSETTO:+0000
  295.14 +TZNAME:GMT
  295.15 +DTSTART:19120101T000000
  295.16 +RDATE:19120101T000000
  295.17 +END:STANDARD
  295.18 +BEGIN:STANDARD
  295.19 +TZOFFSETFROM:+0000
  295.20 +TZOFFSETTO:-0100
  295.21 +TZNAME:WAT
  295.22 +DTSTART:19340226T000000
  295.23 +RDATE:19340226T000000
  295.24 +END:STANDARD
  295.25 +BEGIN:STANDARD
  295.26 +TZOFFSETFROM:-0100
  295.27 +TZOFFSETTO:+0000
  295.28 +TZNAME:GMT
  295.29 +DTSTART:19601128T000000
  295.30 +RDATE:19601128T000000
  295.31 +END:STANDARD
  295.32 +END:VTIMEZONE
  295.33 +END:VCALENDAR
   296.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   296.2 +++ b/src/zoneinfo-global/Africa/Ouagadougou.ics	Tue Feb 10 18:12:00 2015 +0100
   296.3 @@ -0,0 +1,16 @@
   296.4 +BEGIN:VCALENDAR
   296.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   296.6 +VERSION:2.0
   296.7 +BEGIN:VTIMEZONE
   296.8 +TZID:Africa/Ouagadougou
   296.9 +TZURL:http://tzurl.org/zoneinfo-global/Africa/Ouagadougou
  296.10 +X-LIC-LOCATION:Africa/Ouagadougou
  296.11 +BEGIN:STANDARD
  296.12 +TZOFFSETFROM:-000604
  296.13 +TZOFFSETTO:+0000
  296.14 +TZNAME:GMT
  296.15 +DTSTART:19120101T000000
  296.16 +RDATE:19120101T000000
  296.17 +END:STANDARD
  296.18 +END:VTIMEZONE
  296.19 +END:VCALENDAR
   297.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   297.2 +++ b/src/zoneinfo-global/Africa/Porto-Novo.ics	Tue Feb 10 18:12:00 2015 +0100
   297.3 @@ -0,0 +1,23 @@
   297.4 +BEGIN:VCALENDAR
   297.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   297.6 +VERSION:2.0
   297.7 +BEGIN:VTIMEZONE
   297.8 +TZID:Africa/Porto-Novo
   297.9 +TZURL:http://tzurl.org/zoneinfo-global/Africa/Porto-Novo
  297.10 +X-LIC-LOCATION:Africa/Porto-Novo
  297.11 +BEGIN:STANDARD
  297.12 +TZOFFSETFROM:+001028
  297.13 +TZOFFSETTO:+0000
  297.14 +TZNAME:GMT
  297.15 +DTSTART:19120101T000000
  297.16 +RDATE:19120101T000000
  297.17 +END:STANDARD
  297.18 +BEGIN:STANDARD
  297.19 +TZOFFSETFROM:+0000
  297.20 +TZOFFSETTO:+0100
  297.21 +TZNAME:WAT
  297.22 +DTSTART:19340226T000000
  297.23 +RDATE:19340226T000000
  297.24 +END:STANDARD
  297.25 +END:VTIMEZONE
  297.26 +END:VCALENDAR
   298.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   298.2 +++ b/src/zoneinfo-global/Africa/Sao_Tome.ics	Tue Feb 10 18:12:00 2015 +0100
   298.3 @@ -0,0 +1,23 @@
   298.4 +BEGIN:VCALENDAR
   298.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   298.6 +VERSION:2.0
   298.7 +BEGIN:VTIMEZONE
   298.8 +TZID:Africa/Sao_Tome
   298.9 +TZURL:http://tzurl.org/zoneinfo-global/Africa/Sao_Tome
  298.10 +X-LIC-LOCATION:Africa/Sao_Tome
  298.11 +BEGIN:STANDARD
  298.12 +TZOFFSETFROM:+002656
  298.13 +TZOFFSETTO:-003632
  298.14 +TZNAME:LMT
  298.15 +DTSTART:18840101T000000
  298.16 +RDATE:18840101T000000
  298.17 +END:STANDARD
  298.18 +BEGIN:STANDARD
  298.19 +TZOFFSETFROM:-003632
  298.20 +TZOFFSETTO:+0000
  298.21 +TZNAME:GMT
  298.22 +DTSTART:19120101T000000
  298.23 +RDATE:19120101T000000
  298.24 +END:STANDARD
  298.25 +END:VTIMEZONE
  298.26 +END:VCALENDAR
   299.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   299.2 +++ b/src/zoneinfo-global/Africa/Tripoli.ics	Tue Feb 10 18:12:00 2015 +0100
   299.3 @@ -0,0 +1,68 @@
   299.4 +BEGIN:VCALENDAR
   299.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   299.6 +VERSION:2.0
   299.7 +BEGIN:VTIMEZONE
   299.8 +TZID:Africa/Tripoli
   299.9 +TZURL:http://tzurl.org/zoneinfo-global/Africa/Tripoli
  299.10 +X-LIC-LOCATION:Africa/Tripoli
  299.11 +BEGIN:STANDARD
  299.12 +TZOFFSETFROM:+005244
  299.13 +TZOFFSETTO:+0100
  299.14 +TZNAME:CET
  299.15 +DTSTART:19200101T000000
  299.16 +RDATE:19200101T000000
  299.17 +END:STANDARD
  299.18 +BEGIN:DAYLIGHT
  299.19 +TZOFFSETFROM:+0100
  299.20 +TZOFFSETTO:+0200
  299.21 +TZNAME:CEST
  299.22 +DTSTART:19511014T020000
  299.23 +RDATE:19511014T020000
  299.24 +RDATE:19531009T020000
  299.25 +RDATE:19550930T000000
  299.26 +RDATE:19820401T000000
  299.27 +RDATE:19830401T000000
  299.28 +RDATE:19840401T000000
  299.29 +RDATE:19850406T000000
  299.30 +RDATE:19860404T000000
  299.31 +RDATE:19870401T000000
  299.32 +RDATE:19880401T000000
  299.33 +RDATE:19890401T000000
  299.34 +RDATE:19970404T000000
  299.35 +END:DAYLIGHT
  299.36 +BEGIN:STANDARD
  299.37 +TZOFFSETFROM:+0200
  299.38 +TZOFFSETTO:+0100
  299.39 +TZNAME:CET
  299.40 +DTSTART:19520101T000000
  299.41 +RDATE:19520101T000000
  299.42 +RDATE:19540101T000000
  299.43 +RDATE:19560101T000000
  299.44 +RDATE:19820101T000000
  299.45 +RDATE:19821001T000000
  299.46 +RDATE:19831001T000000
  299.47 +RDATE:19841001T000000
  299.48 +RDATE:19851001T000000
  299.49 +RDATE:19861003T000000
  299.50 +RDATE:19871001T000000
  299.51 +RDATE:19881001T000000
  299.52 +RDATE:19891001T000000
  299.53 +RDATE:19960930T000000
  299.54 +END:STANDARD
  299.55 +BEGIN:STANDARD
  299.56 +TZOFFSETFROM:+0100
  299.57 +TZOFFSETTO:+0200
  299.58 +TZNAME:EET
  299.59 +DTSTART:19590101T000000
  299.60 +RDATE:19590101T000000
  299.61 +RDATE:19900504T000000
  299.62 +END:STANDARD
  299.63 +BEGIN:STANDARD
  299.64 +TZOFFSETFROM:+0200
  299.65 +TZOFFSETTO:+0200
  299.66 +TZNAME:EET
  299.67 +DTSTART:19971004T000000
  299.68 +RDATE:19971004T000000
  299.69 +END:STANDARD
  299.70 +END:VTIMEZONE
  299.71 +END:VCALENDAR
   300.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   300.2 +++ b/src/zoneinfo-global/Africa/Tunis.ics	Tue Feb 10 18:12:00 2015 +0100
   300.3 @@ -0,0 +1,67 @@
   300.4 +BEGIN:VCALENDAR
   300.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   300.6 +VERSION:2.0
   300.7 +BEGIN:VTIMEZONE
   300.8 +TZID:Africa/Tunis
   300.9 +TZURL:http://tzurl.org/zoneinfo-global/Africa/Tunis
  300.10 +X-LIC-LOCATION:Africa/Tunis
  300.11 +BEGIN:STANDARD
  300.12 +TZOFFSETFROM:+004044
  300.13 +TZOFFSETTO:+000921
  300.14 +TZNAME:PMT
  300.15 +DTSTART:18810512T000000
  300.16 +RDATE:18810512T000000
  300.17 +END:STANDARD
  300.18 +BEGIN:STANDARD
  300.19 +TZOFFSETFROM:+000921
  300.20 +TZOFFSETTO:+0100
  300.21 +TZNAME:CET
  300.22 +DTSTART:19110311T000000
  300.23 +RDATE:19110311T000000
  300.24 +END:STANDARD
  300.25 +BEGIN:DAYLIGHT
  300.26 +TZOFFSETFROM:+0100
  300.27 +TZOFFSETTO:+0200
  300.28 +TZNAME:CEST
  300.29 +DTSTART:19390415T230000
  300.30 +RDATE:19390415T230000
  300.31 +RDATE:19400225T230000
  300.32 +RDATE:19420309T000000
  300.33 +RDATE:19430329T020000
  300.34 +RDATE:19430425T020000
  300.35 +RDATE:19440403T020000
  300.36 +RDATE:19450402T020000
  300.37 +RDATE:19770430T000000
  300.38 +RDATE:19780501T000000
  300.39 +RDATE:19880601T000000
  300.40 +RDATE:19890326T000000
  300.41 +RDATE:19900501T000000
  300.42 +RDATE:20050501T000000
  300.43 +RDATE:20060326T020000
  300.44 +RDATE:20070325T020000
  300.45 +RDATE:20080330T020000
  300.46 +END:DAYLIGHT
  300.47 +BEGIN:STANDARD
  300.48 +TZOFFSETFROM:+0200
  300.49 +TZOFFSETTO:+0100
  300.50 +TZNAME:CET
  300.51 +DTSTART:19391119T000000
  300.52 +RDATE:19391119T000000
  300.53 +RDATE:19411006T000000
  300.54 +RDATE:19421102T030000
  300.55 +RDATE:19430417T020000
  300.56 +RDATE:19431004T020000
  300.57 +RDATE:19441008T000000
  300.58 +RDATE:19450916T000000
  300.59 +RDATE:19770924T010000
  300.60 +RDATE:19781001T010000
  300.61 +RDATE:19880925T010000
  300.62 +RDATE:19890924T010000
  300.63 +RDATE:19900930T010000
  300.64 +RDATE:20050930T020000
  300.65 +RDATE:20061029T030000
  300.66 +RDATE:20071028T030000
  300.67 +RDATE:20081026T030000
  300.68 +END:STANDARD
  300.69 +END:VTIMEZONE
  300.70 +END:VCALENDAR
   301.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   301.2 +++ b/src/zoneinfo-global/Africa/Windhoek.ics	Tue Feb 10 18:12:00 2015 +0100
   301.3 @@ -0,0 +1,65 @@
   301.4 +BEGIN:VCALENDAR
   301.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   301.6 +VERSION:2.0
   301.7 +BEGIN:VTIMEZONE
   301.8 +TZID:Africa/Windhoek
   301.9 +TZURL:http://tzurl.org/zoneinfo-global/Africa/Windhoek
  301.10 +X-LIC-LOCATION:Africa/Windhoek
  301.11 +BEGIN:DAYLIGHT
  301.12 +TZOFFSETFROM:+0100
  301.13 +TZOFFSETTO:+0200
  301.14 +TZNAME:WAST
  301.15 +DTSTART:19940904T020000
  301.16 +RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=1SU
  301.17 +END:DAYLIGHT
  301.18 +BEGIN:STANDARD
  301.19 +TZOFFSETFROM:+0200
  301.20 +TZOFFSETTO:+0100
  301.21 +TZNAME:WAT
  301.22 +DTSTART:19950402T020000
  301.23 +RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU
  301.24 +END:STANDARD
  301.25 +BEGIN:STANDARD
  301.26 +TZOFFSETFROM:+010824
  301.27 +TZOFFSETTO:+0130
  301.28 +TZNAME:SWAT
  301.29 +DTSTART:18920208T000000
  301.30 +RDATE:18920208T000000
  301.31 +END:STANDARD
  301.32 +BEGIN:STANDARD
  301.33 +TZOFFSETFROM:+0130
  301.34 +TZOFFSETTO:+0200
  301.35 +TZNAME:SAST
  301.36 +DTSTART:19030301T000000
  301.37 +RDATE:19030301T000000
  301.38 +END:STANDARD
  301.39 +BEGIN:DAYLIGHT
  301.40 +TZOFFSETFROM:+0200
  301.41 +TZOFFSETTO:+0300
  301.42 +TZNAME:SAST
  301.43 +DTSTART:19420920T020000
  301.44 +RDATE:19420920T020000
  301.45 +END:DAYLIGHT
  301.46 +BEGIN:STANDARD
  301.47 +TZOFFSETFROM:+0300
  301.48 +TZOFFSETTO:+0200
  301.49 +TZNAME:SAST
  301.50 +DTSTART:19430321T020000
  301.51 +RDATE:19430321T020000
  301.52 +END:STANDARD
  301.53 +BEGIN:STANDARD
  301.54 +TZOFFSETFROM:+0200
  301.55 +TZOFFSETTO:+0200
  301.56 +TZNAME:CAT
  301.57 +DTSTART:19900321T000000
  301.58 +RDATE:19900321T000000
  301.59 +END:STANDARD
  301.60 +BEGIN:STANDARD
  301.61 +TZOFFSETFROM:+0200
  301.62 +TZOFFSETTO:+0100
  301.63 +TZNAME:WAT
  301.64 +DTSTART:19940403T000000
  301.65 +RDATE:19940403T000000
  301.66 +END:STANDARD
  301.67 +END:VTIMEZONE
  301.68 +END:VCALENDAR
   302.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   302.2 +++ b/src/zoneinfo-global/America/Adak.ics	Tue Feb 10 18:12:00 2015 +0100
   302.3 @@ -0,0 +1,187 @@
   302.4 +BEGIN:VCALENDAR
   302.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   302.6 +VERSION:2.0
   302.7 +BEGIN:VTIMEZONE
   302.8 +TZID:America/Adak
   302.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Adak
  302.10 +X-LIC-LOCATION:America/Adak
  302.11 +BEGIN:DAYLIGHT
  302.12 +TZOFFSETFROM:-1000
  302.13 +TZOFFSETTO:-0900
  302.14 +TZNAME:HADT
  302.15 +DTSTART:20070311T020000
  302.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  302.17 +END:DAYLIGHT
  302.18 +BEGIN:STANDARD
  302.19 +TZOFFSETFROM:-0900
  302.20 +TZOFFSETTO:-1000
  302.21 +TZNAME:HAST
  302.22 +DTSTART:20071104T020000
  302.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  302.24 +END:STANDARD
  302.25 +BEGIN:STANDARD
  302.26 +TZOFFSETFROM:+121321
  302.27 +TZOFFSETTO:-114638
  302.28 +TZNAME:LMT
  302.29 +DTSTART:18671018T000000
  302.30 +RDATE:18671018T000000
  302.31 +END:STANDARD
  302.32 +BEGIN:STANDARD
  302.33 +TZOFFSETFROM:-114638
  302.34 +TZOFFSETTO:-1100
  302.35 +TZNAME:NST
  302.36 +DTSTART:19000820T120000
  302.37 +RDATE:19000820T120000
  302.38 +END:STANDARD
  302.39 +BEGIN:STANDARD
  302.40 +TZOFFSETFROM:-1100
  302.41 +TZOFFSETTO:-1100
  302.42 +TZNAME:NST
  302.43 +DTSTART:19420101T000000
  302.44 +RDATE:19420101T000000
  302.45 +RDATE:19460101T000000
  302.46 +END:STANDARD
  302.47 +BEGIN:DAYLIGHT
  302.48 +TZOFFSETFROM:-1100
  302.49 +TZOFFSETTO:-1000
  302.50 +TZNAME:NWT
  302.51 +DTSTART:19420209T020000
  302.52 +RDATE:19420209T020000
  302.53 +END:DAYLIGHT
  302.54 +BEGIN:DAYLIGHT
  302.55 +TZOFFSETFROM:-1000
  302.56 +TZOFFSETTO:-1000
  302.57 +TZNAME:NPT
  302.58 +DTSTART:19450814T130000
  302.59 +RDATE:19450814T130000
  302.60 +END:DAYLIGHT
  302.61 +BEGIN:STANDARD
  302.62 +TZOFFSETFROM:-1000
  302.63 +TZOFFSETTO:-1100
  302.64 +TZNAME:NST
  302.65 +DTSTART:19450930T020000
  302.66 +RDATE:19450930T020000
  302.67 +END:STANDARD
  302.68 +BEGIN:STANDARD
  302.69 +TZOFFSETFROM:-1100
  302.70 +TZOFFSETTO:-1100
  302.71 +TZNAME:BST
  302.72 +DTSTART:19670401T000000
  302.73 +RDATE:19670401T000000
  302.74 +RDATE:19690101T000000
  302.75 +END:STANDARD
  302.76 +BEGIN:DAYLIGHT
  302.77 +TZOFFSETFROM:-1100
  302.78 +TZOFFSETTO:-1000
  302.79 +TZNAME:BDT
  302.80 +DTSTART:19690427T020000
  302.81 +RDATE:19690427T020000
  302.82 +RDATE:19700426T020000
  302.83 +RDATE:19710425T020000
  302.84 +RDATE:19720430T020000
  302.85 +RDATE:19730429T020000
  302.86 +RDATE:19740106T020000
  302.87 +RDATE:19750223T020000
  302.88 +RDATE:19760425T020000
  302.89 +RDATE:19770424T020000
  302.90 +RDATE:19780430T020000
  302.91 +RDATE:19790429T020000
  302.92 +RDATE:19800427T020000
  302.93 +RDATE:19810426T020000
  302.94 +RDATE:19820425T020000
  302.95 +RDATE:19830424T020000
  302.96 +END:DAYLIGHT
  302.97 +BEGIN:STANDARD
  302.98 +TZOFFSETFROM:-1000
  302.99 +TZOFFSETTO:-1100
 302.100 +TZNAME:BST
 302.101 +DTSTART:19691026T020000
 302.102 +RDATE:19691026T020000
 302.103 +RDATE:19701025T020000
 302.104 +RDATE:19711031T020000
 302.105 +RDATE:19721029T020000
 302.106 +RDATE:19731028T020000
 302.107 +RDATE:19741027T020000
 302.108 +RDATE:19751026T020000
 302.109 +RDATE:19761031T020000
 302.110 +RDATE:19771030T020000
 302.111 +RDATE:19781029T020000
 302.112 +RDATE:19791028T020000
 302.113 +RDATE:19801026T020000
 302.114 +RDATE:19811025T020000
 302.115 +RDATE:19821031T020000
 302.116 +END:STANDARD
 302.117 +BEGIN:STANDARD
 302.118 +TZOFFSETFROM:-1000
 302.119 +TZOFFSETTO:-1000
 302.120 +TZNAME:AHST
 302.121 +DTSTART:19831030T020000
 302.122 +RDATE:19831030T020000
 302.123 +END:STANDARD
 302.124 +BEGIN:STANDARD
 302.125 +TZOFFSETFROM:-1000
 302.126 +TZOFFSETTO:-1000
 302.127 +TZNAME:HAST
 302.128 +DTSTART:19831130T000000
 302.129 +RDATE:19831130T000000
 302.130 +END:STANDARD
 302.131 +BEGIN:DAYLIGHT
 302.132 +TZOFFSETFROM:-1000
 302.133 +TZOFFSETTO:-0900
 302.134 +TZNAME:HADT
 302.135 +DTSTART:19840429T020000
 302.136 +RDATE:19840429T020000
 302.137 +RDATE:19850428T020000
 302.138 +RDATE:19860427T020000
 302.139 +RDATE:19870405T020000
 302.140 +RDATE:19880403T020000
 302.141 +RDATE:19890402T020000
 302.142 +RDATE:19900401T020000
 302.143 +RDATE:19910407T020000
 302.144 +RDATE:19920405T020000
 302.145 +RDATE:19930404T020000
 302.146 +RDATE:19940403T020000
 302.147 +RDATE:19950402T020000
 302.148 +RDATE:19960407T020000
 302.149 +RDATE:19970406T020000
 302.150 +RDATE:19980405T020000
 302.151 +RDATE:19990404T020000
 302.152 +RDATE:20000402T020000
 302.153 +RDATE:20010401T020000
 302.154 +RDATE:20020407T020000
 302.155 +RDATE:20030406T020000
 302.156 +RDATE:20040404T020000
 302.157 +RDATE:20050403T020000
 302.158 +RDATE:20060402T020000
 302.159 +END:DAYLIGHT
 302.160 +BEGIN:STANDARD
 302.161 +TZOFFSETFROM:-0900
 302.162 +TZOFFSETTO:-1000
 302.163 +TZNAME:HAST
 302.164 +DTSTART:19841028T020000
 302.165 +RDATE:19841028T020000
 302.166 +RDATE:19851027T020000
 302.167 +RDATE:19861026T020000
 302.168 +RDATE:19871025T020000
 302.169 +RDATE:19881030T020000
 302.170 +RDATE:19891029T020000
 302.171 +RDATE:19901028T020000
 302.172 +RDATE:19911027T020000
 302.173 +RDATE:19921025T020000
 302.174 +RDATE:19931031T020000
 302.175 +RDATE:19941030T020000
 302.176 +RDATE:19951029T020000
 302.177 +RDATE:19961027T020000
 302.178 +RDATE:19971026T020000
 302.179 +RDATE:19981025T020000
 302.180 +RDATE:19991031T020000
 302.181 +RDATE:20001029T020000
 302.182 +RDATE:20011028T020000
 302.183 +RDATE:20021027T020000
 302.184 +RDATE:20031026T020000
 302.185 +RDATE:20041031T020000
 302.186 +RDATE:20051030T020000
 302.187 +RDATE:20061029T020000
 302.188 +END:STANDARD
 302.189 +END:VTIMEZONE
 302.190 +END:VCALENDAR
   303.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   303.2 +++ b/src/zoneinfo-global/America/Anchorage.ics	Tue Feb 10 18:12:00 2015 +0100
   303.3 @@ -0,0 +1,187 @@
   303.4 +BEGIN:VCALENDAR
   303.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   303.6 +VERSION:2.0
   303.7 +BEGIN:VTIMEZONE
   303.8 +TZID:America/Anchorage
   303.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Anchorage
  303.10 +X-LIC-LOCATION:America/Anchorage
  303.11 +BEGIN:DAYLIGHT
  303.12 +TZOFFSETFROM:-0900
  303.13 +TZOFFSETTO:-0800
  303.14 +TZNAME:AKDT
  303.15 +DTSTART:20070311T020000
  303.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  303.17 +END:DAYLIGHT
  303.18 +BEGIN:STANDARD
  303.19 +TZOFFSETFROM:-0800
  303.20 +TZOFFSETTO:-0900
  303.21 +TZNAME:AKST
  303.22 +DTSTART:20071104T020000
  303.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  303.24 +END:STANDARD
  303.25 +BEGIN:STANDARD
  303.26 +TZOFFSETFROM:+140024
  303.27 +TZOFFSETTO:-095936
  303.28 +TZNAME:LMT
  303.29 +DTSTART:18671018T000000
  303.30 +RDATE:18671018T000000
  303.31 +END:STANDARD
  303.32 +BEGIN:STANDARD
  303.33 +TZOFFSETFROM:-095936
  303.34 +TZOFFSETTO:-1000
  303.35 +TZNAME:CAT
  303.36 +DTSTART:19000820T120000
  303.37 +RDATE:19000820T120000
  303.38 +END:STANDARD
  303.39 +BEGIN:STANDARD
  303.40 +TZOFFSETFROM:-1000
  303.41 +TZOFFSETTO:-1000
  303.42 +TZNAME:CAT
  303.43 +DTSTART:19420101T000000
  303.44 +RDATE:19420101T000000
  303.45 +RDATE:19460101T000000
  303.46 +END:STANDARD
  303.47 +BEGIN:DAYLIGHT
  303.48 +TZOFFSETFROM:-1000
  303.49 +TZOFFSETTO:-0900
  303.50 +TZNAME:CAWT
  303.51 +DTSTART:19420209T020000
  303.52 +RDATE:19420209T020000
  303.53 +END:DAYLIGHT
  303.54 +BEGIN:DAYLIGHT
  303.55 +TZOFFSETFROM:-0900
  303.56 +TZOFFSETTO:-0900
  303.57 +TZNAME:CAPT
  303.58 +DTSTART:19450814T140000
  303.59 +RDATE:19450814T140000
  303.60 +END:DAYLIGHT
  303.61 +BEGIN:STANDARD
  303.62 +TZOFFSETFROM:-0900
  303.63 +TZOFFSETTO:-1000
  303.64 +TZNAME:CAT
  303.65 +DTSTART:19450930T020000
  303.66 +RDATE:19450930T020000
  303.67 +END:STANDARD
  303.68 +BEGIN:STANDARD
  303.69 +TZOFFSETFROM:-1000
  303.70 +TZOFFSETTO:-1000
  303.71 +TZNAME:AHST
  303.72 +DTSTART:19670401T000000
  303.73 +RDATE:19670401T000000
  303.74 +RDATE:19690101T000000
  303.75 +END:STANDARD
  303.76 +BEGIN:DAYLIGHT
  303.77 +TZOFFSETFROM:-1000
  303.78 +TZOFFSETTO:-0900
  303.79 +TZNAME:AHDT
  303.80 +DTSTART:19690427T020000
  303.81 +RDATE:19690427T020000
  303.82 +RDATE:19700426T020000
  303.83 +RDATE:19710425T020000
  303.84 +RDATE:19720430T020000
  303.85 +RDATE:19730429T020000
  303.86 +RDATE:19740106T020000
  303.87 +RDATE:19750223T020000
  303.88 +RDATE:19760425T020000
  303.89 +RDATE:19770424T020000
  303.90 +RDATE:19780430T020000
  303.91 +RDATE:19790429T020000
  303.92 +RDATE:19800427T020000
  303.93 +RDATE:19810426T020000
  303.94 +RDATE:19820425T020000
  303.95 +RDATE:19830424T020000
  303.96 +END:DAYLIGHT
  303.97 +BEGIN:STANDARD
  303.98 +TZOFFSETFROM:-0900
  303.99 +TZOFFSETTO:-1000
 303.100 +TZNAME:AHST
 303.101 +DTSTART:19691026T020000
 303.102 +RDATE:19691026T020000
 303.103 +RDATE:19701025T020000
 303.104 +RDATE:19711031T020000
 303.105 +RDATE:19721029T020000
 303.106 +RDATE:19731028T020000
 303.107 +RDATE:19741027T020000
 303.108 +RDATE:19751026T020000
 303.109 +RDATE:19761031T020000
 303.110 +RDATE:19771030T020000
 303.111 +RDATE:19781029T020000
 303.112 +RDATE:19791028T020000
 303.113 +RDATE:19801026T020000
 303.114 +RDATE:19811025T020000
 303.115 +RDATE:19821031T020000
 303.116 +END:STANDARD
 303.117 +BEGIN:STANDARD
 303.118 +TZOFFSETFROM:-0900
 303.119 +TZOFFSETTO:-0900
 303.120 +TZNAME:YST
 303.121 +DTSTART:19831030T020000
 303.122 +RDATE:19831030T020000
 303.123 +END:STANDARD
 303.124 +BEGIN:STANDARD
 303.125 +TZOFFSETFROM:-0900
 303.126 +TZOFFSETTO:-0900
 303.127 +TZNAME:AKST
 303.128 +DTSTART:19831130T000000
 303.129 +RDATE:19831130T000000
 303.130 +END:STANDARD
 303.131 +BEGIN:DAYLIGHT
 303.132 +TZOFFSETFROM:-0900
 303.133 +TZOFFSETTO:-0800
 303.134 +TZNAME:AKDT
 303.135 +DTSTART:19840429T020000
 303.136 +RDATE:19840429T020000
 303.137 +RDATE:19850428T020000
 303.138 +RDATE:19860427T020000
 303.139 +RDATE:19870405T020000
 303.140 +RDATE:19880403T020000
 303.141 +RDATE:19890402T020000
 303.142 +RDATE:19900401T020000
 303.143 +RDATE:19910407T020000
 303.144 +RDATE:19920405T020000
 303.145 +RDATE:19930404T020000
 303.146 +RDATE:19940403T020000
 303.147 +RDATE:19950402T020000
 303.148 +RDATE:19960407T020000
 303.149 +RDATE:19970406T020000
 303.150 +RDATE:19980405T020000
 303.151 +RDATE:19990404T020000
 303.152 +RDATE:20000402T020000
 303.153 +RDATE:20010401T020000
 303.154 +RDATE:20020407T020000
 303.155 +RDATE:20030406T020000
 303.156 +RDATE:20040404T020000
 303.157 +RDATE:20050403T020000
 303.158 +RDATE:20060402T020000
 303.159 +END:DAYLIGHT
 303.160 +BEGIN:STANDARD
 303.161 +TZOFFSETFROM:-0800
 303.162 +TZOFFSETTO:-0900
 303.163 +TZNAME:AKST
 303.164 +DTSTART:19841028T020000
 303.165 +RDATE:19841028T020000
 303.166 +RDATE:19851027T020000
 303.167 +RDATE:19861026T020000
 303.168 +RDATE:19871025T020000
 303.169 +RDATE:19881030T020000
 303.170 +RDATE:19891029T020000
 303.171 +RDATE:19901028T020000
 303.172 +RDATE:19911027T020000
 303.173 +RDATE:19921025T020000
 303.174 +RDATE:19931031T020000
 303.175 +RDATE:19941030T020000
 303.176 +RDATE:19951029T020000
 303.177 +RDATE:19961027T020000
 303.178 +RDATE:19971026T020000
 303.179 +RDATE:19981025T020000
 303.180 +RDATE:19991031T020000
 303.181 +RDATE:20001029T020000
 303.182 +RDATE:20011028T020000
 303.183 +RDATE:20021027T020000
 303.184 +RDATE:20031026T020000
 303.185 +RDATE:20041031T020000
 303.186 +RDATE:20051030T020000
 303.187 +RDATE:20061029T020000
 303.188 +END:STANDARD
 303.189 +END:VTIMEZONE
 303.190 +END:VCALENDAR
   304.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   304.2 +++ b/src/zoneinfo-global/America/Anguilla.ics	Tue Feb 10 18:12:00 2015 +0100
   304.3 @@ -0,0 +1,16 @@
   304.4 +BEGIN:VCALENDAR
   304.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   304.6 +VERSION:2.0
   304.7 +BEGIN:VTIMEZONE
   304.8 +TZID:America/Anguilla
   304.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Anguilla
  304.10 +X-LIC-LOCATION:America/Anguilla
  304.11 +BEGIN:STANDARD
  304.12 +TZOFFSETFROM:-041216
  304.13 +TZOFFSETTO:-0400
  304.14 +TZNAME:AST
  304.15 +DTSTART:19120302T000000
  304.16 +RDATE:19120302T000000
  304.17 +END:STANDARD
  304.18 +END:VTIMEZONE
  304.19 +END:VCALENDAR
   305.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   305.2 +++ b/src/zoneinfo-global/America/Antigua.ics	Tue Feb 10 18:12:00 2015 +0100
   305.3 @@ -0,0 +1,23 @@
   305.4 +BEGIN:VCALENDAR
   305.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   305.6 +VERSION:2.0
   305.7 +BEGIN:VTIMEZONE
   305.8 +TZID:America/Antigua
   305.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Antigua
  305.10 +X-LIC-LOCATION:America/Antigua
  305.11 +BEGIN:STANDARD
  305.12 +TZOFFSETFROM:-040712
  305.13 +TZOFFSETTO:-0500
  305.14 +TZNAME:EST
  305.15 +DTSTART:19120302T000000
  305.16 +RDATE:19120302T000000
  305.17 +END:STANDARD
  305.18 +BEGIN:STANDARD
  305.19 +TZOFFSETFROM:-0500
  305.20 +TZOFFSETTO:-0400
  305.21 +TZNAME:AST
  305.22 +DTSTART:19510101T000000
  305.23 +RDATE:19510101T000000
  305.24 +END:STANDARD
  305.25 +END:VTIMEZONE
  305.26 +END:VCALENDAR
   306.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   306.2 +++ b/src/zoneinfo-global/America/Araguaina.ics	Tue Feb 10 18:12:00 2015 +0100
   306.3 @@ -0,0 +1,85 @@
   306.4 +BEGIN:VCALENDAR
   306.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   306.6 +VERSION:2.0
   306.7 +BEGIN:VTIMEZONE
   306.8 +TZID:America/Araguaina
   306.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Araguaina
  306.10 +X-LIC-LOCATION:America/Araguaina
  306.11 +BEGIN:STANDARD
  306.12 +TZOFFSETFROM:-031248
  306.13 +TZOFFSETTO:-0300
  306.14 +TZNAME:BRT
  306.15 +DTSTART:19140101T000000
  306.16 +RDATE:19140101T000000
  306.17 +END:STANDARD
  306.18 +BEGIN:DAYLIGHT
  306.19 +TZOFFSETFROM:-0300
  306.20 +TZOFFSETTO:-0200
  306.21 +TZNAME:BRST
  306.22 +DTSTART:19311003T110000
  306.23 +RDATE:19311003T110000
  306.24 +RDATE:19321003T000000
  306.25 +RDATE:19491201T000000
  306.26 +RDATE:19501201T000000
  306.27 +RDATE:19511201T000000
  306.28 +RDATE:19521201T000000
  306.29 +RDATE:19631209T000000
  306.30 +RDATE:19650131T000000
  306.31 +RDATE:19651201T000000
  306.32 +RDATE:19661101T000000
  306.33 +RDATE:19671101T000000
  306.34 +RDATE:19851102T000000
  306.35 +RDATE:19861025T000000
  306.36 +RDATE:19871025T000000
  306.37 +RDATE:19881016T000000
  306.38 +RDATE:19891015T000000
  306.39 +RDATE:19951015T000000
  306.40 +RDATE:19961006T000000
  306.41 +RDATE:19971006T000000
  306.42 +RDATE:19981011T000000
  306.43 +RDATE:19991003T000000
  306.44 +RDATE:20001008T000000
  306.45 +RDATE:20011014T000000
  306.46 +RDATE:20021103T000000
  306.47 +END:DAYLIGHT
  306.48 +BEGIN:STANDARD
  306.49 +TZOFFSETFROM:-0200
  306.50 +TZOFFSETTO:-0300
  306.51 +TZNAME:BRT
  306.52 +DTSTART:19320401T000000
  306.53 +RDATE:19320401T000000
  306.54 +RDATE:19330401T000000
  306.55 +RDATE:19500416T010000
  306.56 +RDATE:19510401T000000
  306.57 +RDATE:19520401T000000
  306.58 +RDATE:19530301T000000
  306.59 +RDATE:19640301T000000
  306.60 +RDATE:19650331T000000
  306.61 +RDATE:19660301T000000
  306.62 +RDATE:19670301T000000
  306.63 +RDATE:19680301T000000
  306.64 +RDATE:19860315T000000
  306.65 +RDATE:19870214T000000
  306.66 +RDATE:19880207T000000
  306.67 +RDATE:19890129T000000
  306.68 +RDATE:19900211T000000
  306.69 +RDATE:19960211T000000
  306.70 +RDATE:19970216T000000
  306.71 +RDATE:19980301T000000
  306.72 +RDATE:19990221T000000
  306.73 +RDATE:20000227T000000
  306.74 +RDATE:20010218T000000
  306.75 +RDATE:20020217T000000
  306.76 +RDATE:20030216T000000
  306.77 +END:STANDARD
  306.78 +BEGIN:STANDARD
  306.79 +TZOFFSETFROM:-0300
  306.80 +TZOFFSETTO:-0300
  306.81 +TZNAME:BRT
  306.82 +DTSTART:19900917T000000
  306.83 +RDATE:19900917T000000
  306.84 +RDATE:19950914T000000
  306.85 +RDATE:20030924T000000
  306.86 +END:STANDARD
  306.87 +END:VTIMEZONE
  306.88 +END:VCALENDAR
   307.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   307.2 +++ b/src/zoneinfo-global/America/Argentina/Buenos_Aires.ics	Tue Feb 10 18:12:00 2015 +0100
   307.3 @@ -0,0 +1,124 @@
   307.4 +BEGIN:VCALENDAR
   307.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   307.6 +VERSION:2.0
   307.7 +BEGIN:VTIMEZONE
   307.8 +TZID:America/Argentina/Buenos_Aires
   307.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Argentina/Buenos_Aires
  307.10 +X-LIC-LOCATION:America/Argentina/Buenos_Aires
  307.11 +BEGIN:STANDARD
  307.12 +TZOFFSETFROM:-035348
  307.13 +TZOFFSETTO:-041648
  307.14 +TZNAME:CMT
  307.15 +DTSTART:18941031T000000
  307.16 +RDATE:18941031T000000
  307.17 +END:STANDARD
  307.18 +BEGIN:STANDARD
  307.19 +TZOFFSETFROM:-041648
  307.20 +TZOFFSETTO:-0400
  307.21 +TZNAME:ART
  307.22 +DTSTART:19200501T000000
  307.23 +RDATE:19200501T000000
  307.24 +END:STANDARD
  307.25 +BEGIN:DAYLIGHT
  307.26 +TZOFFSETFROM:-0400
  307.27 +TZOFFSETTO:-0300
  307.28 +TZNAME:ARST
  307.29 +DTSTART:19301201T000000
  307.30 +RDATE:19301201T000000
  307.31 +RDATE:19311015T000000
  307.32 +RDATE:19321101T000000
  307.33 +RDATE:19331101T000000
  307.34 +RDATE:19341101T000000
  307.35 +RDATE:19351101T000000
  307.36 +RDATE:19361101T000000
  307.37 +RDATE:19371101T000000
  307.38 +RDATE:19381101T000000
  307.39 +RDATE:19391101T000000
  307.40 +RDATE:19400701T000000
  307.41 +RDATE:19411015T000000
  307.42 +RDATE:19431015T000000
  307.43 +RDATE:19461001T000000
  307.44 +RDATE:19631215T000000
  307.45 +RDATE:19641015T000000
  307.46 +RDATE:19651015T000000
  307.47 +RDATE:19661015T000000
  307.48 +RDATE:19671001T000000
  307.49 +RDATE:19681006T000000
  307.50 +END:DAYLIGHT
  307.51 +BEGIN:STANDARD
  307.52 +TZOFFSETFROM:-0300
  307.53 +TZOFFSETTO:-0400
  307.54 +TZNAME:ART
  307.55 +DTSTART:19310401T000000
  307.56 +RDATE:19310401T000000
  307.57 +RDATE:19320301T000000
  307.58 +RDATE:19330301T000000
  307.59 +RDATE:19340301T000000
  307.60 +RDATE:19350301T000000
  307.61 +RDATE:19360301T000000
  307.62 +RDATE:19370301T000000
  307.63 +RDATE:19380301T000000
  307.64 +RDATE:19390301T000000
  307.65 +RDATE:19400301T000000
  307.66 +RDATE:19410615T000000
  307.67 +RDATE:19430801T000000
  307.68 +RDATE:19460301T000000
  307.69 +RDATE:19631001T000000
  307.70 +RDATE:19640301T000000
  307.71 +RDATE:19650301T000000
  307.72 +RDATE:19660301T000000
  307.73 +RDATE:19670402T000000
  307.74 +RDATE:19680407T000000
  307.75 +RDATE:19690406T000000
  307.76 +END:STANDARD
  307.77 +BEGIN:STANDARD
  307.78 +TZOFFSETFROM:-0400
  307.79 +TZOFFSETTO:-0300
  307.80 +TZNAME:ART
  307.81 +DTSTART:19691005T000000
  307.82 +RDATE:19691005T000000
  307.83 +END:STANDARD
  307.84 +BEGIN:DAYLIGHT
  307.85 +TZOFFSETFROM:-0300
  307.86 +TZOFFSETTO:-0200
  307.87 +TZNAME:ARST
  307.88 +DTSTART:19740123T000000
  307.89 +RDATE:19740123T000000
  307.90 +RDATE:19881201T000000
  307.91 +RDATE:19891015T000000
  307.92 +RDATE:19901021T000000
  307.93 +RDATE:19911020T000000
  307.94 +RDATE:19921018T000000
  307.95 +RDATE:20071230T000000
  307.96 +RDATE:20081019T000000
  307.97 +END:DAYLIGHT
  307.98 +BEGIN:STANDARD
  307.99 +TZOFFSETFROM:-0200
 307.100 +TZOFFSETTO:-0300
 307.101 +TZNAME:ART
 307.102 +DTSTART:19740501T000000
 307.103 +RDATE:19740501T000000
 307.104 +RDATE:19890305T000000
 307.105 +RDATE:19900304T000000
 307.106 +RDATE:19910303T000000
 307.107 +RDATE:19920301T000000
 307.108 +RDATE:19930307T000000
 307.109 +RDATE:20080316T000000
 307.110 +RDATE:20090315T000000
 307.111 +END:STANDARD
 307.112 +BEGIN:DAYLIGHT
 307.113 +TZOFFSETFROM:-0300
 307.114 +TZOFFSETTO:-0300
 307.115 +TZNAME:ARST
 307.116 +DTSTART:19991003T000000
 307.117 +RDATE:19991003T000000
 307.118 +END:DAYLIGHT
 307.119 +BEGIN:STANDARD
 307.120 +TZOFFSETFROM:-0300
 307.121 +TZOFFSETTO:-0300
 307.122 +TZNAME:ART
 307.123 +DTSTART:20000303T000000
 307.124 +RDATE:20000303T000000
 307.125 +END:STANDARD
 307.126 +END:VTIMEZONE
 307.127 +END:VCALENDAR
   308.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   308.2 +++ b/src/zoneinfo-global/America/Argentina/Catamarca.ics	Tue Feb 10 18:12:00 2015 +0100
   308.3 @@ -0,0 +1,143 @@
   308.4 +BEGIN:VCALENDAR
   308.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   308.6 +VERSION:2.0
   308.7 +BEGIN:VTIMEZONE
   308.8 +TZID:America/Argentina/Catamarca
   308.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Argentina/Catamarca
  308.10 +X-LIC-LOCATION:America/Argentina/Catamarca
  308.11 +BEGIN:STANDARD
  308.12 +TZOFFSETFROM:-042308
  308.13 +TZOFFSETTO:-041648
  308.14 +TZNAME:CMT
  308.15 +DTSTART:18941031T000000
  308.16 +RDATE:18941031T000000
  308.17 +END:STANDARD
  308.18 +BEGIN:STANDARD
  308.19 +TZOFFSETFROM:-041648
  308.20 +TZOFFSETTO:-0400
  308.21 +TZNAME:ART
  308.22 +DTSTART:19200501T000000
  308.23 +RDATE:19200501T000000
  308.24 +END:STANDARD
  308.25 +BEGIN:DAYLIGHT
  308.26 +TZOFFSETFROM:-0400
  308.27 +TZOFFSETTO:-0300
  308.28 +TZNAME:ARST
  308.29 +DTSTART:19301201T000000
  308.30 +RDATE:19301201T000000
  308.31 +RDATE:19311015T000000
  308.32 +RDATE:19321101T000000
  308.33 +RDATE:19331101T000000
  308.34 +RDATE:19341101T000000
  308.35 +RDATE:19351101T000000
  308.36 +RDATE:19361101T000000
  308.37 +RDATE:19371101T000000
  308.38 +RDATE:19381101T000000
  308.39 +RDATE:19391101T000000
  308.40 +RDATE:19400701T000000
  308.41 +RDATE:19411015T000000
  308.42 +RDATE:19431015T000000
  308.43 +RDATE:19461001T000000
  308.44 +RDATE:19631215T000000
  308.45 +RDATE:19641015T000000
  308.46 +RDATE:19651015T000000
  308.47 +RDATE:19661015T000000
  308.48 +RDATE:19671001T000000
  308.49 +RDATE:19681006T000000
  308.50 +END:DAYLIGHT
  308.51 +BEGIN:STANDARD
  308.52 +TZOFFSETFROM:-0300
  308.53 +TZOFFSETTO:-0400
  308.54 +TZNAME:ART
  308.55 +DTSTART:19310401T000000
  308.56 +RDATE:19310401T000000
  308.57 +RDATE:19320301T000000
  308.58 +RDATE:19330301T000000
  308.59 +RDATE:19340301T000000
  308.60 +RDATE:19350301T000000
  308.61 +RDATE:19360301T000000
  308.62 +RDATE:19370301T000000
  308.63 +RDATE:19380301T000000
  308.64 +RDATE:19390301T000000
  308.65 +RDATE:19400301T000000
  308.66 +RDATE:19410615T000000
  308.67 +RDATE:19430801T000000
  308.68 +RDATE:19460301T000000
  308.69 +RDATE:19631001T000000
  308.70 +RDATE:19640301T000000
  308.71 +RDATE:19650301T000000
  308.72 +RDATE:19660301T000000
  308.73 +RDATE:19670402T000000
  308.74 +RDATE:19680407T000000
  308.75 +RDATE:19690406T000000
  308.76 +END:STANDARD
  308.77 +BEGIN:STANDARD
  308.78 +TZOFFSETFROM:-0400
  308.79 +TZOFFSETTO:-0300
  308.80 +TZNAME:ART
  308.81 +DTSTART:19691005T000000
  308.82 +RDATE:19691005T000000
  308.83 +RDATE:20040620T000000
  308.84 +END:STANDARD
  308.85 +BEGIN:DAYLIGHT
  308.86 +TZOFFSETFROM:-0300
  308.87 +TZOFFSETTO:-0200
  308.88 +TZNAME:ARST
  308.89 +DTSTART:19740123T000000
  308.90 +RDATE:19740123T000000
  308.91 +RDATE:19881201T000000
  308.92 +RDATE:19891015T000000
  308.93 +RDATE:19901021T000000
  308.94 +RDATE:19921018T000000
  308.95 +RDATE:20071230T000000
  308.96 +END:DAYLIGHT
  308.97 +BEGIN:STANDARD
  308.98 +TZOFFSETFROM:-0200
  308.99 +TZOFFSETTO:-0300
 308.100 +TZNAME:ART
 308.101 +DTSTART:19740501T000000
 308.102 +RDATE:19740501T000000
 308.103 +RDATE:19890305T000000
 308.104 +RDATE:19900304T000000
 308.105 +RDATE:19920301T000000
 308.106 +RDATE:19930307T000000
 308.107 +RDATE:20080316T000000
 308.108 +END:STANDARD
 308.109 +BEGIN:STANDARD
 308.110 +TZOFFSETFROM:-0200
 308.111 +TZOFFSETTO:-0400
 308.112 +TZNAME:WART
 308.113 +DTSTART:19910303T000000
 308.114 +RDATE:19910303T000000
 308.115 +END:STANDARD
 308.116 +BEGIN:DAYLIGHT
 308.117 +TZOFFSETFROM:-0400
 308.118 +TZOFFSETTO:-0200
 308.119 +TZNAME:ARST
 308.120 +DTSTART:19911020T000000
 308.121 +RDATE:19911020T000000
 308.122 +END:DAYLIGHT
 308.123 +BEGIN:DAYLIGHT
 308.124 +TZOFFSETFROM:-0300
 308.125 +TZOFFSETTO:-0300
 308.126 +TZNAME:ARST
 308.127 +DTSTART:19991003T000000
 308.128 +RDATE:19991003T000000
 308.129 +END:DAYLIGHT
 308.130 +BEGIN:STANDARD
 308.131 +TZOFFSETFROM:-0300
 308.132 +TZOFFSETTO:-0300
 308.133 +TZNAME:ART
 308.134 +DTSTART:20000303T000000
 308.135 +RDATE:20000303T000000
 308.136 +RDATE:20081018T000000
 308.137 +END:STANDARD
 308.138 +BEGIN:STANDARD
 308.139 +TZOFFSETFROM:-0300
 308.140 +TZOFFSETTO:-0400
 308.141 +TZNAME:WART
 308.142 +DTSTART:20040601T000000
 308.143 +RDATE:20040601T000000
 308.144 +END:STANDARD
 308.145 +END:VTIMEZONE
 308.146 +END:VCALENDAR
   309.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   309.2 +++ b/src/zoneinfo-global/America/Argentina/Cordoba.ics	Tue Feb 10 18:12:00 2015 +0100
   309.3 @@ -0,0 +1,136 @@
   309.4 +BEGIN:VCALENDAR
   309.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   309.6 +VERSION:2.0
   309.7 +BEGIN:VTIMEZONE
   309.8 +TZID:America/Argentina/Cordoba
   309.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Argentina/Cordoba
  309.10 +X-LIC-LOCATION:America/Argentina/Cordoba
  309.11 +BEGIN:STANDARD
  309.12 +TZOFFSETFROM:-041648
  309.13 +TZOFFSETTO:-041648
  309.14 +TZNAME:CMT
  309.15 +DTSTART:18941031T000000
  309.16 +RDATE:18941031T000000
  309.17 +END:STANDARD
  309.18 +BEGIN:STANDARD
  309.19 +TZOFFSETFROM:-041648
  309.20 +TZOFFSETTO:-0400
  309.21 +TZNAME:ART
  309.22 +DTSTART:19200501T000000
  309.23 +RDATE:19200501T000000
  309.24 +END:STANDARD
  309.25 +BEGIN:DAYLIGHT
  309.26 +TZOFFSETFROM:-0400
  309.27 +TZOFFSETTO:-0300
  309.28 +TZNAME:ARST
  309.29 +DTSTART:19301201T000000
  309.30 +RDATE:19301201T000000
  309.31 +RDATE:19311015T000000
  309.32 +RDATE:19321101T000000
  309.33 +RDATE:19331101T000000
  309.34 +RDATE:19341101T000000
  309.35 +RDATE:19351101T000000
  309.36 +RDATE:19361101T000000
  309.37 +RDATE:19371101T000000
  309.38 +RDATE:19381101T000000
  309.39 +RDATE:19391101T000000
  309.40 +RDATE:19400701T000000
  309.41 +RDATE:19411015T000000
  309.42 +RDATE:19431015T000000
  309.43 +RDATE:19461001T000000
  309.44 +RDATE:19631215T000000
  309.45 +RDATE:19641015T000000
  309.46 +RDATE:19651015T000000
  309.47 +RDATE:19661015T000000
  309.48 +RDATE:19671001T000000
  309.49 +RDATE:19681006T000000
  309.50 +END:DAYLIGHT
  309.51 +BEGIN:STANDARD
  309.52 +TZOFFSETFROM:-0300
  309.53 +TZOFFSETTO:-0400
  309.54 +TZNAME:ART
  309.55 +DTSTART:19310401T000000
  309.56 +RDATE:19310401T000000
  309.57 +RDATE:19320301T000000
  309.58 +RDATE:19330301T000000
  309.59 +RDATE:19340301T000000
  309.60 +RDATE:19350301T000000
  309.61 +RDATE:19360301T000000
  309.62 +RDATE:19370301T000000
  309.63 +RDATE:19380301T000000
  309.64 +RDATE:19390301T000000
  309.65 +RDATE:19400301T000000
  309.66 +RDATE:19410615T000000
  309.67 +RDATE:19430801T000000
  309.68 +RDATE:19460301T000000
  309.69 +RDATE:19631001T000000
  309.70 +RDATE:19640301T000000
  309.71 +RDATE:19650301T000000
  309.72 +RDATE:19660301T000000
  309.73 +RDATE:19670402T000000
  309.74 +RDATE:19680407T000000
  309.75 +RDATE:19690406T000000
  309.76 +END:STANDARD
  309.77 +BEGIN:STANDARD
  309.78 +TZOFFSETFROM:-0400
  309.79 +TZOFFSETTO:-0300
  309.80 +TZNAME:ART
  309.81 +DTSTART:19691005T000000
  309.82 +RDATE:19691005T000000
  309.83 +END:STANDARD
  309.84 +BEGIN:DAYLIGHT
  309.85 +TZOFFSETFROM:-0300
  309.86 +TZOFFSETTO:-0200
  309.87 +TZNAME:ARST
  309.88 +DTSTART:19740123T000000
  309.89 +RDATE:19740123T000000
  309.90 +RDATE:19881201T000000
  309.91 +RDATE:19891015T000000
  309.92 +RDATE:19901021T000000
  309.93 +RDATE:19921018T000000
  309.94 +RDATE:20071230T000000
  309.95 +RDATE:20081019T000000
  309.96 +END:DAYLIGHT
  309.97 +BEGIN:STANDARD
  309.98 +TZOFFSETFROM:-0200
  309.99 +TZOFFSETTO:-0300
 309.100 +TZNAME:ART
 309.101 +DTSTART:19740501T000000
 309.102 +RDATE:19740501T000000
 309.103 +RDATE:19890305T000000
 309.104 +RDATE:19900304T000000
 309.105 +RDATE:19920301T000000
 309.106 +RDATE:19930307T000000
 309.107 +RDATE:20080316T000000
 309.108 +RDATE:20090315T000000
 309.109 +END:STANDARD
 309.110 +BEGIN:STANDARD
 309.111 +TZOFFSETFROM:-0200
 309.112 +TZOFFSETTO:-0400
 309.113 +TZNAME:WART
 309.114 +DTSTART:19910303T000000
 309.115 +RDATE:19910303T000000
 309.116 +END:STANDARD
 309.117 +BEGIN:DAYLIGHT
 309.118 +TZOFFSETFROM:-0400
 309.119 +TZOFFSETTO:-0200
 309.120 +TZNAME:ARST
 309.121 +DTSTART:19911020T000000
 309.122 +RDATE:19911020T000000
 309.123 +END:DAYLIGHT
 309.124 +BEGIN:DAYLIGHT
 309.125 +TZOFFSETFROM:-0300
 309.126 +TZOFFSETTO:-0300
 309.127 +TZNAME:ARST
 309.128 +DTSTART:19991003T000000
 309.129 +RDATE:19991003T000000
 309.130 +END:DAYLIGHT
 309.131 +BEGIN:STANDARD
 309.132 +TZOFFSETFROM:-0300
 309.133 +TZOFFSETTO:-0300
 309.134 +TZNAME:ART
 309.135 +DTSTART:20000303T000000
 309.136 +RDATE:20000303T000000
 309.137 +END:STANDARD
 309.138 +END:VTIMEZONE
 309.139 +END:VCALENDAR
   310.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   310.2 +++ b/src/zoneinfo-global/America/Argentina/Jujuy.ics	Tue Feb 10 18:12:00 2015 +0100
   310.3 @@ -0,0 +1,154 @@
   310.4 +BEGIN:VCALENDAR
   310.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   310.6 +VERSION:2.0
   310.7 +BEGIN:VTIMEZONE
   310.8 +TZID:America/Argentina/Jujuy
   310.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Argentina/Jujuy
  310.10 +X-LIC-LOCATION:America/Argentina/Jujuy
  310.11 +BEGIN:STANDARD
  310.12 +TZOFFSETFROM:-042112
  310.13 +TZOFFSETTO:-041648
  310.14 +TZNAME:CMT
  310.15 +DTSTART:18941031T000000
  310.16 +RDATE:18941031T000000
  310.17 +END:STANDARD
  310.18 +BEGIN:STANDARD
  310.19 +TZOFFSETFROM:-041648
  310.20 +TZOFFSETTO:-0400
  310.21 +TZNAME:ART
  310.22 +DTSTART:19200501T000000
  310.23 +RDATE:19200501T000000
  310.24 +END:STANDARD
  310.25 +BEGIN:DAYLIGHT
  310.26 +TZOFFSETFROM:-0400
  310.27 +TZOFFSETTO:-0300
  310.28 +TZNAME:ARST
  310.29 +DTSTART:19301201T000000
  310.30 +RDATE:19301201T000000
  310.31 +RDATE:19311015T000000
  310.32 +RDATE:19321101T000000
  310.33 +RDATE:19331101T000000
  310.34 +RDATE:19341101T000000
  310.35 +RDATE:19351101T000000
  310.36 +RDATE:19361101T000000
  310.37 +RDATE:19371101T000000
  310.38 +RDATE:19381101T000000
  310.39 +RDATE:19391101T000000
  310.40 +RDATE:19400701T000000
  310.41 +RDATE:19411015T000000
  310.42 +RDATE:19431015T000000
  310.43 +RDATE:19461001T000000
  310.44 +RDATE:19631215T000000
  310.45 +RDATE:19641015T000000
  310.46 +RDATE:19651015T000000
  310.47 +RDATE:19661015T000000
  310.48 +RDATE:19671001T000000
  310.49 +RDATE:19681006T000000
  310.50 +END:DAYLIGHT
  310.51 +BEGIN:STANDARD
  310.52 +TZOFFSETFROM:-0300
  310.53 +TZOFFSETTO:-0400
  310.54 +TZNAME:ART
  310.55 +DTSTART:19310401T000000
  310.56 +RDATE:19310401T000000
  310.57 +RDATE:19320301T000000
  310.58 +RDATE:19330301T000000
  310.59 +RDATE:19340301T000000
  310.60 +RDATE:19350301T000000
  310.61 +RDATE:19360301T000000
  310.62 +RDATE:19370301T000000
  310.63 +RDATE:19380301T000000
  310.64 +RDATE:19390301T000000
  310.65 +RDATE:19400301T000000
  310.66 +RDATE:19410615T000000
  310.67 +RDATE:19430801T000000
  310.68 +RDATE:19460301T000000
  310.69 +RDATE:19631001T000000
  310.70 +RDATE:19640301T000000
  310.71 +RDATE:19650301T000000
  310.72 +RDATE:19660301T000000
  310.73 +RDATE:19670402T000000
  310.74 +RDATE:19680407T000000
  310.75 +RDATE:19690406T000000
  310.76 +END:STANDARD
  310.77 +BEGIN:STANDARD
  310.78 +TZOFFSETFROM:-0400
  310.79 +TZOFFSETTO:-0300
  310.80 +TZNAME:ART
  310.81 +DTSTART:19691005T000000
  310.82 +RDATE:19691005T000000
  310.83 +END:STANDARD
  310.84 +BEGIN:DAYLIGHT
  310.85 +TZOFFSETFROM:-0300
  310.86 +TZOFFSETTO:-0200
  310.87 +TZNAME:ARST
  310.88 +DTSTART:19740123T000000
  310.89 +RDATE:19740123T000000
  310.90 +RDATE:19881201T000000
  310.91 +RDATE:19891015T000000
  310.92 +RDATE:19921018T000000
  310.93 +RDATE:20071230T000000
  310.94 +END:DAYLIGHT
  310.95 +BEGIN:STANDARD
  310.96 +TZOFFSETFROM:-0200
  310.97 +TZOFFSETTO:-0300
  310.98 +TZNAME:ART
  310.99 +DTSTART:19740501T000000
 310.100 +RDATE:19740501T000000
 310.101 +RDATE:19890305T000000
 310.102 +RDATE:19920301T000000
 310.103 +RDATE:19930307T000000
 310.104 +RDATE:20080316T000000
 310.105 +END:STANDARD
 310.106 +BEGIN:STANDARD
 310.107 +TZOFFSETFROM:-0200
 310.108 +TZOFFSETTO:-0400
 310.109 +TZNAME:WART
 310.110 +DTSTART:19900304T000000
 310.111 +RDATE:19900304T000000
 310.112 +END:STANDARD
 310.113 +BEGIN:DAYLIGHT
 310.114 +TZOFFSETFROM:-0400
 310.115 +TZOFFSETTO:-0300
 310.116 +TZNAME:WARST
 310.117 +DTSTART:19901028T000000
 310.118 +RDATE:19901028T000000
 310.119 +END:DAYLIGHT
 310.120 +BEGIN:STANDARD
 310.121 +TZOFFSETFROM:-0300
 310.122 +TZOFFSETTO:-0400
 310.123 +TZNAME:WART
 310.124 +DTSTART:19910317T000000
 310.125 +RDATE:19910317T000000
 310.126 +END:STANDARD
 310.127 +BEGIN:DAYLIGHT
 310.128 +TZOFFSETFROM:-0400
 310.129 +TZOFFSETTO:-0200
 310.130 +TZNAME:ARST
 310.131 +DTSTART:19911006T000000
 310.132 +RDATE:19911006T000000
 310.133 +END:DAYLIGHT
 310.134 +BEGIN:DAYLIGHT
 310.135 +TZOFFSETFROM:-0200
 310.136 +TZOFFSETTO:-0200
 310.137 +TZNAME:ARST
 310.138 +DTSTART:19920101T000000
 310.139 +RDATE:19920101T000000
 310.140 +END:DAYLIGHT
 310.141 +BEGIN:DAYLIGHT
 310.142 +TZOFFSETFROM:-0300
 310.143 +TZOFFSETTO:-0300
 310.144 +TZNAME:ARST
 310.145 +DTSTART:19991003T000000
 310.146 +RDATE:19991003T000000
 310.147 +END:DAYLIGHT
 310.148 +BEGIN:STANDARD
 310.149 +TZOFFSETFROM:-0300
 310.150 +TZOFFSETTO:-0300
 310.151 +TZNAME:ART
 310.152 +DTSTART:20000303T000000
 310.153 +RDATE:20000303T000000
 310.154 +RDATE:20081018T000000
 310.155 +END:STANDARD
 310.156 +END:VTIMEZONE
 310.157 +END:VCALENDAR
   311.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   311.2 +++ b/src/zoneinfo-global/America/Argentina/La_Rioja.ics	Tue Feb 10 18:12:00 2015 +0100
   311.3 @@ -0,0 +1,138 @@
   311.4 +BEGIN:VCALENDAR
   311.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   311.6 +VERSION:2.0
   311.7 +BEGIN:VTIMEZONE
   311.8 +TZID:America/Argentina/La_Rioja
   311.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Argentina/La_Rioja
  311.10 +X-LIC-LOCATION:America/Argentina/La_Rioja
  311.11 +BEGIN:STANDARD
  311.12 +TZOFFSETFROM:-042724
  311.13 +TZOFFSETTO:-041648
  311.14 +TZNAME:CMT
  311.15 +DTSTART:18941031T000000
  311.16 +RDATE:18941031T000000
  311.17 +END:STANDARD
  311.18 +BEGIN:STANDARD
  311.19 +TZOFFSETFROM:-041648
  311.20 +TZOFFSETTO:-0400
  311.21 +TZNAME:ART
  311.22 +DTSTART:19200501T000000
  311.23 +RDATE:19200501T000000
  311.24 +END:STANDARD
  311.25 +BEGIN:DAYLIGHT
  311.26 +TZOFFSETFROM:-0400
  311.27 +TZOFFSETTO:-0300
  311.28 +TZNAME:ARST
  311.29 +DTSTART:19301201T000000
  311.30 +RDATE:19301201T000000
  311.31 +RDATE:19311015T000000
  311.32 +RDATE:19321101T000000
  311.33 +RDATE:19331101T000000
  311.34 +RDATE:19341101T000000
  311.35 +RDATE:19351101T000000
  311.36 +RDATE:19361101T000000
  311.37 +RDATE:19371101T000000
  311.38 +RDATE:19381101T000000
  311.39 +RDATE:19391101T000000
  311.40 +RDATE:19400701T000000
  311.41 +RDATE:19411015T000000
  311.42 +RDATE:19431015T000000
  311.43 +RDATE:19461001T000000
  311.44 +RDATE:19631215T000000
  311.45 +RDATE:19641015T000000
  311.46 +RDATE:19651015T000000
  311.47 +RDATE:19661015T000000
  311.48 +RDATE:19671001T000000
  311.49 +RDATE:19681006T000000
  311.50 +END:DAYLIGHT
  311.51 +BEGIN:STANDARD
  311.52 +TZOFFSETFROM:-0300
  311.53 +TZOFFSETTO:-0400
  311.54 +TZNAME:ART
  311.55 +DTSTART:19310401T000000
  311.56 +RDATE:19310401T000000
  311.57 +RDATE:19320301T000000
  311.58 +RDATE:19330301T000000
  311.59 +RDATE:19340301T000000
  311.60 +RDATE:19350301T000000
  311.61 +RDATE:19360301T000000
  311.62 +RDATE:19370301T000000
  311.63 +RDATE:19380301T000000
  311.64 +RDATE:19390301T000000
  311.65 +RDATE:19400301T000000
  311.66 +RDATE:19410615T000000
  311.67 +RDATE:19430801T000000
  311.68 +RDATE:19460301T000000
  311.69 +RDATE:19631001T000000
  311.70 +RDATE:19640301T000000
  311.71 +RDATE:19650301T000000
  311.72 +RDATE:19660301T000000
  311.73 +RDATE:19670402T000000
  311.74 +RDATE:19680407T000000
  311.75 +RDATE:19690406T000000
  311.76 +END:STANDARD
  311.77 +BEGIN:STANDARD
  311.78 +TZOFFSETFROM:-0400
  311.79 +TZOFFSETTO:-0300
  311.80 +TZNAME:ART
  311.81 +DTSTART:19691005T000000
  311.82 +RDATE:19691005T000000
  311.83 +RDATE:19910507T000000
  311.84 +RDATE:20040620T000000
  311.85 +END:STANDARD
  311.86 +BEGIN:DAYLIGHT
  311.87 +TZOFFSETFROM:-0300
  311.88 +TZOFFSETTO:-0200
  311.89 +TZNAME:ARST
  311.90 +DTSTART:19740123T000000
  311.91 +RDATE:19740123T000000
  311.92 +RDATE:19881201T000000
  311.93 +RDATE:19891015T000000
  311.94 +RDATE:19901021T000000
  311.95 +RDATE:19911020T000000
  311.96 +RDATE:19921018T000000
  311.97 +RDATE:20071230T000000
  311.98 +END:DAYLIGHT
  311.99 +BEGIN:STANDARD
 311.100 +TZOFFSETFROM:-0200
 311.101 +TZOFFSETTO:-0300
 311.102 +TZNAME:ART
 311.103 +DTSTART:19740501T000000
 311.104 +RDATE:19740501T000000
 311.105 +RDATE:19890305T000000
 311.106 +RDATE:19900304T000000
 311.107 +RDATE:19920301T000000
 311.108 +RDATE:19930307T000000
 311.109 +RDATE:20080316T000000
 311.110 +END:STANDARD
 311.111 +BEGIN:STANDARD
 311.112 +TZOFFSETFROM:-0200
 311.113 +TZOFFSETTO:-0400
 311.114 +TZNAME:WART
 311.115 +DTSTART:19910301T000000
 311.116 +RDATE:19910301T000000
 311.117 +END:STANDARD
 311.118 +BEGIN:DAYLIGHT
 311.119 +TZOFFSETFROM:-0300
 311.120 +TZOFFSETTO:-0300
 311.121 +TZNAME:ARST
 311.122 +DTSTART:19991003T000000
 311.123 +RDATE:19991003T000000
 311.124 +END:DAYLIGHT
 311.125 +BEGIN:STANDARD
 311.126 +TZOFFSETFROM:-0300
 311.127 +TZOFFSETTO:-0300
 311.128 +TZNAME:ART
 311.129 +DTSTART:20000303T000000
 311.130 +RDATE:20000303T000000
 311.131 +RDATE:20081018T000000
 311.132 +END:STANDARD
 311.133 +BEGIN:STANDARD
 311.134 +TZOFFSETFROM:-0300
 311.135 +TZOFFSETTO:-0400
 311.136 +TZNAME:WART
 311.137 +DTSTART:20040601T000000
 311.138 +RDATE:20040601T000000
 311.139 +END:STANDARD
 311.140 +END:VTIMEZONE
 311.141 +END:VCALENDAR
   312.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   312.2 +++ b/src/zoneinfo-global/America/Argentina/Mendoza.ics	Tue Feb 10 18:12:00 2015 +0100
   312.3 @@ -0,0 +1,149 @@
   312.4 +BEGIN:VCALENDAR
   312.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   312.6 +VERSION:2.0
   312.7 +BEGIN:VTIMEZONE
   312.8 +TZID:America/Argentina/Mendoza
   312.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Argentina/Mendoza
  312.10 +X-LIC-LOCATION:America/Argentina/Mendoza
  312.11 +BEGIN:STANDARD
  312.12 +TZOFFSETFROM:-043516
  312.13 +TZOFFSETTO:-041648
  312.14 +TZNAME:CMT
  312.15 +DTSTART:18941031T000000
  312.16 +RDATE:18941031T000000
  312.17 +END:STANDARD
  312.18 +BEGIN:STANDARD
  312.19 +TZOFFSETFROM:-041648
  312.20 +TZOFFSETTO:-0400
  312.21 +TZNAME:ART
  312.22 +DTSTART:19200501T000000
  312.23 +RDATE:19200501T000000
  312.24 +END:STANDARD
  312.25 +BEGIN:DAYLIGHT
  312.26 +TZOFFSETFROM:-0400
  312.27 +TZOFFSETTO:-0300
  312.28 +TZNAME:ARST
  312.29 +DTSTART:19301201T000000
  312.30 +RDATE:19301201T000000
  312.31 +RDATE:19311015T000000
  312.32 +RDATE:19321101T000000
  312.33 +RDATE:19331101T000000
  312.34 +RDATE:19341101T000000
  312.35 +RDATE:19351101T000000
  312.36 +RDATE:19361101T000000
  312.37 +RDATE:19371101T000000
  312.38 +RDATE:19381101T000000
  312.39 +RDATE:19391101T000000
  312.40 +RDATE:19400701T000000
  312.41 +RDATE:19411015T000000
  312.42 +RDATE:19431015T000000
  312.43 +RDATE:19461001T000000
  312.44 +RDATE:19631215T000000
  312.45 +RDATE:19641015T000000
  312.46 +RDATE:19651015T000000
  312.47 +RDATE:19661015T000000
  312.48 +RDATE:19671001T000000
  312.49 +RDATE:19681006T000000
  312.50 +END:DAYLIGHT
  312.51 +BEGIN:STANDARD
  312.52 +TZOFFSETFROM:-0300
  312.53 +TZOFFSETTO:-0400
  312.54 +TZNAME:ART
  312.55 +DTSTART:19310401T000000
  312.56 +RDATE:19310401T000000
  312.57 +RDATE:19320301T000000
  312.58 +RDATE:19330301T000000
  312.59 +RDATE:19340301T000000
  312.60 +RDATE:19350301T000000
  312.61 +RDATE:19360301T000000
  312.62 +RDATE:19370301T000000
  312.63 +RDATE:19380301T000000
  312.64 +RDATE:19390301T000000
  312.65 +RDATE:19400301T000000
  312.66 +RDATE:19410615T000000
  312.67 +RDATE:19430801T000000
  312.68 +RDATE:19460301T000000
  312.69 +RDATE:19631001T000000
  312.70 +RDATE:19640301T000000
  312.71 +RDATE:19650301T000000
  312.72 +RDATE:19660301T000000
  312.73 +RDATE:19670402T000000
  312.74 +RDATE:19680407T000000
  312.75 +RDATE:19690406T000000
  312.76 +END:STANDARD
  312.77 +BEGIN:STANDARD
  312.78 +TZOFFSETFROM:-0400
  312.79 +TZOFFSETTO:-0300
  312.80 +TZNAME:ART
  312.81 +DTSTART:19691005T000000
  312.82 +RDATE:19691005T000000
  312.83 +RDATE:20040926T000000
  312.84 +END:STANDARD
  312.85 +BEGIN:DAYLIGHT
  312.86 +TZOFFSETFROM:-0300
  312.87 +TZOFFSETTO:-0200
  312.88 +TZNAME:ARST
  312.89 +DTSTART:19740123T000000
  312.90 +RDATE:19740123T000000
  312.91 +RDATE:19881201T000000
  312.92 +RDATE:19891015T000000
  312.93 +RDATE:20071230T000000
  312.94 +END:DAYLIGHT
  312.95 +BEGIN:STANDARD
  312.96 +TZOFFSETFROM:-0200
  312.97 +TZOFFSETTO:-0300
  312.98 +TZNAME:ART
  312.99 +DTSTART:19740501T000000
 312.100 +RDATE:19740501T000000
 312.101 +RDATE:19890305T000000
 312.102 +RDATE:19930307T000000
 312.103 +RDATE:20080316T000000
 312.104 +END:STANDARD
 312.105 +BEGIN:STANDARD
 312.106 +TZOFFSETFROM:-0200
 312.107 +TZOFFSETTO:-0400
 312.108 +TZNAME:WART
 312.109 +DTSTART:19900304T000000
 312.110 +RDATE:19900304T000000
 312.111 +END:STANDARD
 312.112 +BEGIN:DAYLIGHT
 312.113 +TZOFFSETFROM:-0400
 312.114 +TZOFFSETTO:-0300
 312.115 +TZNAME:WARST
 312.116 +DTSTART:19901015T000000
 312.117 +RDATE:19901015T000000
 312.118 +RDATE:19911015T000000
 312.119 +END:DAYLIGHT
 312.120 +BEGIN:STANDARD
 312.121 +TZOFFSETFROM:-0300
 312.122 +TZOFFSETTO:-0400
 312.123 +TZNAME:WART
 312.124 +DTSTART:19910301T000000
 312.125 +RDATE:19910301T000000
 312.126 +RDATE:19920301T000000
 312.127 +RDATE:20040523T000000
 312.128 +END:STANDARD
 312.129 +BEGIN:DAYLIGHT
 312.130 +TZOFFSETFROM:-0400
 312.131 +TZOFFSETTO:-0200
 312.132 +TZNAME:ARST
 312.133 +DTSTART:19921018T000000
 312.134 +RDATE:19921018T000000
 312.135 +END:DAYLIGHT
 312.136 +BEGIN:DAYLIGHT
 312.137 +TZOFFSETFROM:-0300
 312.138 +TZOFFSETTO:-0300
 312.139 +TZNAME:ARST
 312.140 +DTSTART:19991003T000000
 312.141 +RDATE:19991003T000000
 312.142 +END:DAYLIGHT
 312.143 +BEGIN:STANDARD
 312.144 +TZOFFSETFROM:-0300
 312.145 +TZOFFSETTO:-0300
 312.146 +TZNAME:ART
 312.147 +DTSTART:20000303T000000
 312.148 +RDATE:20000303T000000
 312.149 +RDATE:20081018T000000
 312.150 +END:STANDARD
 312.151 +END:VTIMEZONE
 312.152 +END:VCALENDAR
   313.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   313.2 +++ b/src/zoneinfo-global/America/Argentina/Rio_Gallegos.ics	Tue Feb 10 18:12:00 2015 +0100
   313.3 @@ -0,0 +1,131 @@
   313.4 +BEGIN:VCALENDAR
   313.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   313.6 +VERSION:2.0
   313.7 +BEGIN:VTIMEZONE
   313.8 +TZID:America/Argentina/Rio_Gallegos
   313.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Argentina/Rio_Gallegos
  313.10 +X-LIC-LOCATION:America/Argentina/Rio_Gallegos
  313.11 +BEGIN:STANDARD
  313.12 +TZOFFSETFROM:-043652
  313.13 +TZOFFSETTO:-041648
  313.14 +TZNAME:CMT
  313.15 +DTSTART:18941031T000000
  313.16 +RDATE:18941031T000000
  313.17 +END:STANDARD
  313.18 +BEGIN:STANDARD
  313.19 +TZOFFSETFROM:-041648
  313.20 +TZOFFSETTO:-0400
  313.21 +TZNAME:ART
  313.22 +DTSTART:19200501T000000
  313.23 +RDATE:19200501T000000
  313.24 +END:STANDARD
  313.25 +BEGIN:DAYLIGHT
  313.26 +TZOFFSETFROM:-0400
  313.27 +TZOFFSETTO:-0300
  313.28 +TZNAME:ARST
  313.29 +DTSTART:19301201T000000
  313.30 +RDATE:19301201T000000
  313.31 +RDATE:19311015T000000
  313.32 +RDATE:19321101T000000
  313.33 +RDATE:19331101T000000
  313.34 +RDATE:19341101T000000
  313.35 +RDATE:19351101T000000
  313.36 +RDATE:19361101T000000
  313.37 +RDATE:19371101T000000
  313.38 +RDATE:19381101T000000
  313.39 +RDATE:19391101T000000
  313.40 +RDATE:19400701T000000
  313.41 +RDATE:19411015T000000
  313.42 +RDATE:19431015T000000
  313.43 +RDATE:19461001T000000
  313.44 +RDATE:19631215T000000
  313.45 +RDATE:19641015T000000
  313.46 +RDATE:19651015T000000
  313.47 +RDATE:19661015T000000
  313.48 +RDATE:19671001T000000
  313.49 +RDATE:19681006T000000
  313.50 +END:DAYLIGHT
  313.51 +BEGIN:STANDARD
  313.52 +TZOFFSETFROM:-0300
  313.53 +TZOFFSETTO:-0400
  313.54 +TZNAME:ART
  313.55 +DTSTART:19310401T000000
  313.56 +RDATE:19310401T000000
  313.57 +RDATE:19320301T000000
  313.58 +RDATE:19330301T000000
  313.59 +RDATE:19340301T000000
  313.60 +RDATE:19350301T000000
  313.61 +RDATE:19360301T000000
  313.62 +RDATE:19370301T000000
  313.63 +RDATE:19380301T000000
  313.64 +RDATE:19390301T000000
  313.65 +RDATE:19400301T000000
  313.66 +RDATE:19410615T000000
  313.67 +RDATE:19430801T000000
  313.68 +RDATE:19460301T000000
  313.69 +RDATE:19631001T000000
  313.70 +RDATE:19640301T000000
  313.71 +RDATE:19650301T000000
  313.72 +RDATE:19660301T000000
  313.73 +RDATE:19670402T000000
  313.74 +RDATE:19680407T000000
  313.75 +RDATE:19690406T000000
  313.76 +END:STANDARD
  313.77 +BEGIN:STANDARD
  313.78 +TZOFFSETFROM:-0400
  313.79 +TZOFFSETTO:-0300
  313.80 +TZNAME:ART
  313.81 +DTSTART:19691005T000000
  313.82 +RDATE:19691005T000000
  313.83 +RDATE:20040620T000000
  313.84 +END:STANDARD
  313.85 +BEGIN:DAYLIGHT
  313.86 +TZOFFSETFROM:-0300
  313.87 +TZOFFSETTO:-0200
  313.88 +TZNAME:ARST
  313.89 +DTSTART:19740123T000000
  313.90 +RDATE:19740123T000000
  313.91 +RDATE:19881201T000000
  313.92 +RDATE:19891015T000000
  313.93 +RDATE:19901021T000000
  313.94 +RDATE:19911020T000000
  313.95 +RDATE:19921018T000000
  313.96 +RDATE:20071230T000000
  313.97 +END:DAYLIGHT
  313.98 +BEGIN:STANDARD
  313.99 +TZOFFSETFROM:-0200
 313.100 +TZOFFSETTO:-0300
 313.101 +TZNAME:ART
 313.102 +DTSTART:19740501T000000
 313.103 +RDATE:19740501T000000
 313.104 +RDATE:19890305T000000
 313.105 +RDATE:19900304T000000
 313.106 +RDATE:19910303T000000
 313.107 +RDATE:19920301T000000
 313.108 +RDATE:19930307T000000
 313.109 +RDATE:20080316T000000
 313.110 +END:STANDARD
 313.111 +BEGIN:DAYLIGHT
 313.112 +TZOFFSETFROM:-0300
 313.113 +TZOFFSETTO:-0300
 313.114 +TZNAME:ARST
 313.115 +DTSTART:19991003T000000
 313.116 +RDATE:19991003T000000
 313.117 +END:DAYLIGHT
 313.118 +BEGIN:STANDARD
 313.119 +TZOFFSETFROM:-0300
 313.120 +TZOFFSETTO:-0300
 313.121 +TZNAME:ART
 313.122 +DTSTART:20000303T000000
 313.123 +RDATE:20000303T000000
 313.124 +RDATE:20081018T000000
 313.125 +END:STANDARD
 313.126 +BEGIN:STANDARD
 313.127 +TZOFFSETFROM:-0300
 313.128 +TZOFFSETTO:-0400
 313.129 +TZNAME:WART
 313.130 +DTSTART:20040601T000000
 313.131 +RDATE:20040601T000000
 313.132 +END:STANDARD
 313.133 +END:VTIMEZONE
 313.134 +END:VCALENDAR
   314.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   314.2 +++ b/src/zoneinfo-global/America/Argentina/Salta.ics	Tue Feb 10 18:12:00 2015 +0100
   314.3 @@ -0,0 +1,135 @@
   314.4 +BEGIN:VCALENDAR
   314.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   314.6 +VERSION:2.0
   314.7 +BEGIN:VTIMEZONE
   314.8 +TZID:America/Argentina/Salta
   314.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Argentina/Salta
  314.10 +X-LIC-LOCATION:America/Argentina/Salta
  314.11 +BEGIN:STANDARD
  314.12 +TZOFFSETFROM:-042140
  314.13 +TZOFFSETTO:-041648
  314.14 +TZNAME:CMT
  314.15 +DTSTART:18941031T000000
  314.16 +RDATE:18941031T000000
  314.17 +END:STANDARD
  314.18 +BEGIN:STANDARD
  314.19 +TZOFFSETFROM:-041648
  314.20 +TZOFFSETTO:-0400
  314.21 +TZNAME:ART
  314.22 +DTSTART:19200501T000000
  314.23 +RDATE:19200501T000000
  314.24 +END:STANDARD
  314.25 +BEGIN:DAYLIGHT
  314.26 +TZOFFSETFROM:-0400
  314.27 +TZOFFSETTO:-0300
  314.28 +TZNAME:ARST
  314.29 +DTSTART:19301201T000000
  314.30 +RDATE:19301201T000000
  314.31 +RDATE:19311015T000000
  314.32 +RDATE:19321101T000000
  314.33 +RDATE:19331101T000000
  314.34 +RDATE:19341101T000000
  314.35 +RDATE:19351101T000000
  314.36 +RDATE:19361101T000000
  314.37 +RDATE:19371101T000000
  314.38 +RDATE:19381101T000000
  314.39 +RDATE:19391101T000000
  314.40 +RDATE:19400701T000000
  314.41 +RDATE:19411015T000000
  314.42 +RDATE:19431015T000000
  314.43 +RDATE:19461001T000000
  314.44 +RDATE:19631215T000000
  314.45 +RDATE:19641015T000000
  314.46 +RDATE:19651015T000000
  314.47 +RDATE:19661015T000000
  314.48 +RDATE:19671001T000000
  314.49 +RDATE:19681006T000000
  314.50 +END:DAYLIGHT
  314.51 +BEGIN:STANDARD
  314.52 +TZOFFSETFROM:-0300
  314.53 +TZOFFSETTO:-0400
  314.54 +TZNAME:ART
  314.55 +DTSTART:19310401T000000
  314.56 +RDATE:19310401T000000
  314.57 +RDATE:19320301T000000
  314.58 +RDATE:19330301T000000
  314.59 +RDATE:19340301T000000
  314.60 +RDATE:19350301T000000
  314.61 +RDATE:19360301T000000
  314.62 +RDATE:19370301T000000
  314.63 +RDATE:19380301T000000
  314.64 +RDATE:19390301T000000
  314.65 +RDATE:19400301T000000
  314.66 +RDATE:19410615T000000
  314.67 +RDATE:19430801T000000
  314.68 +RDATE:19460301T000000
  314.69 +RDATE:19631001T000000
  314.70 +RDATE:19640301T000000
  314.71 +RDATE:19650301T000000
  314.72 +RDATE:19660301T000000
  314.73 +RDATE:19670402T000000
  314.74 +RDATE:19680407T000000
  314.75 +RDATE:19690406T000000
  314.76 +END:STANDARD
  314.77 +BEGIN:STANDARD
  314.78 +TZOFFSETFROM:-0400
  314.79 +TZOFFSETTO:-0300
  314.80 +TZNAME:ART
  314.81 +DTSTART:19691005T000000
  314.82 +RDATE:19691005T000000
  314.83 +END:STANDARD
  314.84 +BEGIN:DAYLIGHT
  314.85 +TZOFFSETFROM:-0300
  314.86 +TZOFFSETTO:-0200
  314.87 +TZNAME:ARST
  314.88 +DTSTART:19740123T000000
  314.89 +RDATE:19740123T000000
  314.90 +RDATE:19881201T000000
  314.91 +RDATE:19891015T000000
  314.92 +RDATE:19901021T000000
  314.93 +RDATE:19921018T000000
  314.94 +RDATE:20071230T000000
  314.95 +END:DAYLIGHT
  314.96 +BEGIN:STANDARD
  314.97 +TZOFFSETFROM:-0200
  314.98 +TZOFFSETTO:-0300
  314.99 +TZNAME:ART
 314.100 +DTSTART:19740501T000000
 314.101 +RDATE:19740501T000000
 314.102 +RDATE:19890305T000000
 314.103 +RDATE:19900304T000000
 314.104 +RDATE:19920301T000000
 314.105 +RDATE:19930307T000000
 314.106 +RDATE:20080316T000000
 314.107 +END:STANDARD
 314.108 +BEGIN:STANDARD
 314.109 +TZOFFSETFROM:-0200
 314.110 +TZOFFSETTO:-0400
 314.111 +TZNAME:WART
 314.112 +DTSTART:19910303T000000
 314.113 +RDATE:19910303T000000
 314.114 +END:STANDARD
 314.115 +BEGIN:DAYLIGHT
 314.116 +TZOFFSETFROM:-0400
 314.117 +TZOFFSETTO:-0200
 314.118 +TZNAME:ARST
 314.119 +DTSTART:19911020T000000
 314.120 +RDATE:19911020T000000
 314.121 +END:DAYLIGHT
 314.122 +BEGIN:DAYLIGHT
 314.123 +TZOFFSETFROM:-0300
 314.124 +TZOFFSETTO:-0300
 314.125 +TZNAME:ARST
 314.126 +DTSTART:19991003T000000
 314.127 +RDATE:19991003T000000
 314.128 +END:DAYLIGHT
 314.129 +BEGIN:STANDARD
 314.130 +TZOFFSETFROM:-0300
 314.131 +TZOFFSETTO:-0300
 314.132 +TZNAME:ART
 314.133 +DTSTART:20000303T000000
 314.134 +RDATE:20000303T000000
 314.135 +RDATE:20081018T000000
 314.136 +END:STANDARD
 314.137 +END:VTIMEZONE
 314.138 +END:VCALENDAR
   315.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   315.2 +++ b/src/zoneinfo-global/America/Argentina/San_Juan.ics	Tue Feb 10 18:12:00 2015 +0100
   315.3 @@ -0,0 +1,138 @@
   315.4 +BEGIN:VCALENDAR
   315.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   315.6 +VERSION:2.0
   315.7 +BEGIN:VTIMEZONE
   315.8 +TZID:America/Argentina/San_Juan
   315.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Argentina/San_Juan
  315.10 +X-LIC-LOCATION:America/Argentina/San_Juan
  315.11 +BEGIN:STANDARD
  315.12 +TZOFFSETFROM:-043404
  315.13 +TZOFFSETTO:-041648
  315.14 +TZNAME:CMT
  315.15 +DTSTART:18941031T000000
  315.16 +RDATE:18941031T000000
  315.17 +END:STANDARD
  315.18 +BEGIN:STANDARD
  315.19 +TZOFFSETFROM:-041648
  315.20 +TZOFFSETTO:-0400
  315.21 +TZNAME:ART
  315.22 +DTSTART:19200501T000000
  315.23 +RDATE:19200501T000000
  315.24 +END:STANDARD
  315.25 +BEGIN:DAYLIGHT
  315.26 +TZOFFSETFROM:-0400
  315.27 +TZOFFSETTO:-0300
  315.28 +TZNAME:ARST
  315.29 +DTSTART:19301201T000000
  315.30 +RDATE:19301201T000000
  315.31 +RDATE:19311015T000000
  315.32 +RDATE:19321101T000000
  315.33 +RDATE:19331101T000000
  315.34 +RDATE:19341101T000000
  315.35 +RDATE:19351101T000000
  315.36 +RDATE:19361101T000000
  315.37 +RDATE:19371101T000000
  315.38 +RDATE:19381101T000000
  315.39 +RDATE:19391101T000000
  315.40 +RDATE:19400701T000000
  315.41 +RDATE:19411015T000000
  315.42 +RDATE:19431015T000000
  315.43 +RDATE:19461001T000000
  315.44 +RDATE:19631215T000000
  315.45 +RDATE:19641015T000000
  315.46 +RDATE:19651015T000000
  315.47 +RDATE:19661015T000000
  315.48 +RDATE:19671001T000000
  315.49 +RDATE:19681006T000000
  315.50 +END:DAYLIGHT
  315.51 +BEGIN:STANDARD
  315.52 +TZOFFSETFROM:-0300
  315.53 +TZOFFSETTO:-0400
  315.54 +TZNAME:ART
  315.55 +DTSTART:19310401T000000
  315.56 +RDATE:19310401T000000
  315.57 +RDATE:19320301T000000
  315.58 +RDATE:19330301T000000
  315.59 +RDATE:19340301T000000
  315.60 +RDATE:19350301T000000
  315.61 +RDATE:19360301T000000
  315.62 +RDATE:19370301T000000
  315.63 +RDATE:19380301T000000
  315.64 +RDATE:19390301T000000
  315.65 +RDATE:19400301T000000
  315.66 +RDATE:19410615T000000
  315.67 +RDATE:19430801T000000
  315.68 +RDATE:19460301T000000
  315.69 +RDATE:19631001T000000
  315.70 +RDATE:19640301T000000
  315.71 +RDATE:19650301T000000
  315.72 +RDATE:19660301T000000
  315.73 +RDATE:19670402T000000
  315.74 +RDATE:19680407T000000
  315.75 +RDATE:19690406T000000
  315.76 +END:STANDARD
  315.77 +BEGIN:STANDARD
  315.78 +TZOFFSETFROM:-0400
  315.79 +TZOFFSETTO:-0300
  315.80 +TZNAME:ART
  315.81 +DTSTART:19691005T000000
  315.82 +RDATE:19691005T000000
  315.83 +RDATE:19910507T000000
  315.84 +RDATE:20040725T000000
  315.85 +END:STANDARD
  315.86 +BEGIN:DAYLIGHT
  315.87 +TZOFFSETFROM:-0300
  315.88 +TZOFFSETTO:-0200
  315.89 +TZNAME:ARST
  315.90 +DTSTART:19740123T000000
  315.91 +RDATE:19740123T000000
  315.92 +RDATE:19881201T000000
  315.93 +RDATE:19891015T000000
  315.94 +RDATE:19901021T000000
  315.95 +RDATE:19911020T000000
  315.96 +RDATE:19921018T000000
  315.97 +RDATE:20071230T000000
  315.98 +END:DAYLIGHT
  315.99 +BEGIN:STANDARD
 315.100 +TZOFFSETFROM:-0200
 315.101 +TZOFFSETTO:-0300
 315.102 +TZNAME:ART
 315.103 +DTSTART:19740501T000000
 315.104 +RDATE:19740501T000000
 315.105 +RDATE:19890305T000000
 315.106 +RDATE:19900304T000000
 315.107 +RDATE:19920301T000000
 315.108 +RDATE:19930307T000000
 315.109 +RDATE:20080316T000000
 315.110 +END:STANDARD
 315.111 +BEGIN:STANDARD
 315.112 +TZOFFSETFROM:-0200
 315.113 +TZOFFSETTO:-0400
 315.114 +TZNAME:WART
 315.115 +DTSTART:19910301T000000
 315.116 +RDATE:19910301T000000
 315.117 +END:STANDARD
 315.118 +BEGIN:DAYLIGHT
 315.119 +TZOFFSETFROM:-0300
 315.120 +TZOFFSETTO:-0300
 315.121 +TZNAME:ARST
 315.122 +DTSTART:19991003T000000
 315.123 +RDATE:19991003T000000
 315.124 +END:DAYLIGHT
 315.125 +BEGIN:STANDARD
 315.126 +TZOFFSETFROM:-0300
 315.127 +TZOFFSETTO:-0300
 315.128 +TZNAME:ART
 315.129 +DTSTART:20000303T000000
 315.130 +RDATE:20000303T000000
 315.131 +RDATE:20081018T000000
 315.132 +END:STANDARD
 315.133 +BEGIN:STANDARD
 315.134 +TZOFFSETFROM:-0300
 315.135 +TZOFFSETTO:-0400
 315.136 +TZNAME:WART
 315.137 +DTSTART:20040531T000000
 315.138 +RDATE:20040531T000000
 315.139 +END:STANDARD
 315.140 +END:VTIMEZONE
 315.141 +END:VCALENDAR
   316.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   316.2 +++ b/src/zoneinfo-global/America/Argentina/San_Luis.ics	Tue Feb 10 18:12:00 2015 +0100
   316.3 @@ -0,0 +1,161 @@
   316.4 +BEGIN:VCALENDAR
   316.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   316.6 +VERSION:2.0
   316.7 +BEGIN:VTIMEZONE
   316.8 +TZID:America/Argentina/San_Luis
   316.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Argentina/San_Luis
  316.10 +X-LIC-LOCATION:America/Argentina/San_Luis
  316.11 +BEGIN:STANDARD
  316.12 +TZOFFSETFROM:-042524
  316.13 +TZOFFSETTO:-041648
  316.14 +TZNAME:CMT
  316.15 +DTSTART:18941031T000000
  316.16 +RDATE:18941031T000000
  316.17 +END:STANDARD
  316.18 +BEGIN:STANDARD
  316.19 +TZOFFSETFROM:-041648
  316.20 +TZOFFSETTO:-0400
  316.21 +TZNAME:ART
  316.22 +DTSTART:19200501T000000
  316.23 +RDATE:19200501T000000
  316.24 +END:STANDARD
  316.25 +BEGIN:DAYLIGHT
  316.26 +TZOFFSETFROM:-0400
  316.27 +TZOFFSETTO:-0300
  316.28 +TZNAME:ARST
  316.29 +DTSTART:19301201T000000
  316.30 +RDATE:19301201T000000
  316.31 +RDATE:19311015T000000
  316.32 +RDATE:19321101T000000
  316.33 +RDATE:19331101T000000
  316.34 +RDATE:19341101T000000
  316.35 +RDATE:19351101T000000
  316.36 +RDATE:19361101T000000
  316.37 +RDATE:19371101T000000
  316.38 +RDATE:19381101T000000
  316.39 +RDATE:19391101T000000
  316.40 +RDATE:19400701T000000
  316.41 +RDATE:19411015T000000
  316.42 +RDATE:19431015T000000
  316.43 +RDATE:19461001T000000
  316.44 +RDATE:19631215T000000
  316.45 +RDATE:19641015T000000
  316.46 +RDATE:19651015T000000
  316.47 +RDATE:19661015T000000
  316.48 +RDATE:19671001T000000
  316.49 +RDATE:19681006T000000
  316.50 +END:DAYLIGHT
  316.51 +BEGIN:STANDARD
  316.52 +TZOFFSETFROM:-0300
  316.53 +TZOFFSETTO:-0400
  316.54 +TZNAME:ART
  316.55 +DTSTART:19310401T000000
  316.56 +RDATE:19310401T000000
  316.57 +RDATE:19320301T000000
  316.58 +RDATE:19330301T000000
  316.59 +RDATE:19340301T000000
  316.60 +RDATE:19350301T000000
  316.61 +RDATE:19360301T000000
  316.62 +RDATE:19370301T000000
  316.63 +RDATE:19380301T000000
  316.64 +RDATE:19390301T000000
  316.65 +RDATE:19400301T000000
  316.66 +RDATE:19410615T000000
  316.67 +RDATE:19430801T000000
  316.68 +RDATE:19460301T000000
  316.69 +RDATE:19631001T000000
  316.70 +RDATE:19640301T000000
  316.71 +RDATE:19650301T000000
  316.72 +RDATE:19660301T000000
  316.73 +RDATE:19670402T000000
  316.74 +RDATE:19680407T000000
  316.75 +RDATE:19690406T000000
  316.76 +END:STANDARD
  316.77 +BEGIN:STANDARD
  316.78 +TZOFFSETFROM:-0400
  316.79 +TZOFFSETTO:-0300
  316.80 +TZNAME:ART
  316.81 +DTSTART:19691005T000000
  316.82 +RDATE:19691005T000000
  316.83 +RDATE:19910601T000000
  316.84 +END:STANDARD
  316.85 +BEGIN:DAYLIGHT
  316.86 +TZOFFSETFROM:-0300
  316.87 +TZOFFSETTO:-0200
  316.88 +TZNAME:ARST
  316.89 +DTSTART:19740123T000000
  316.90 +RDATE:19740123T000000
  316.91 +RDATE:19881201T000000
  316.92 +RDATE:19891015T000000
  316.93 +RDATE:20071230T000000
  316.94 +END:DAYLIGHT
  316.95 +BEGIN:STANDARD
  316.96 +TZOFFSETFROM:-0200
  316.97 +TZOFFSETTO:-0300
  316.98 +TZNAME:ART
  316.99 +DTSTART:19740501T000000
 316.100 +RDATE:19740501T000000
 316.101 +RDATE:19890305T000000
 316.102 +END:STANDARD
 316.103 +BEGIN:DAYLIGHT
 316.104 +TZOFFSETFROM:-0200
 316.105 +TZOFFSETTO:-0200
 316.106 +TZNAME:ARST
 316.107 +DTSTART:19900101T000000
 316.108 +RDATE:19900101T000000
 316.109 +END:DAYLIGHT
 316.110 +BEGIN:STANDARD
 316.111 +TZOFFSETFROM:-0200
 316.112 +TZOFFSETTO:-0400
 316.113 +TZNAME:WART
 316.114 +DTSTART:19900314T000000
 316.115 +RDATE:19900314T000000
 316.116 +END:STANDARD
 316.117 +BEGIN:DAYLIGHT
 316.118 +TZOFFSETFROM:-0400
 316.119 +TZOFFSETTO:-0300
 316.120 +TZNAME:WARST
 316.121 +DTSTART:19901015T000000
 316.122 +RDATE:19901015T000000
 316.123 +RDATE:20081012T000000
 316.124 +RDATE:20091011T000000
 316.125 +END:DAYLIGHT
 316.126 +BEGIN:STANDARD
 316.127 +TZOFFSETFROM:-0300
 316.128 +TZOFFSETTO:-0400
 316.129 +TZNAME:WART
 316.130 +DTSTART:19910301T000000
 316.131 +RDATE:19910301T000000
 316.132 +RDATE:20040531T000000
 316.133 +RDATE:20080309T000000
 316.134 +RDATE:20090308T000000
 316.135 +END:STANDARD
 316.136 +BEGIN:DAYLIGHT
 316.137 +TZOFFSETFROM:-0300
 316.138 +TZOFFSETTO:-0300
 316.139 +TZNAME:WARST
 316.140 +DTSTART:19991003T000000
 316.141 +RDATE:19991003T000000
 316.142 +END:DAYLIGHT
 316.143 +BEGIN:STANDARD
 316.144 +TZOFFSETFROM:-0300
 316.145 +TZOFFSETTO:-0300
 316.146 +TZNAME:ART
 316.147 +DTSTART:20000303T000000
 316.148 +RDATE:20000303T000000
 316.149 +END:STANDARD
 316.150 +BEGIN:STANDARD
 316.151 +TZOFFSETFROM:-0400
 316.152 +TZOFFSETTO:-0300
 316.153 +DTSTART:20040725T000000
 316.154 +RDATE:20040725T000000
 316.155 +END:STANDARD
 316.156 +BEGIN:DAYLIGHT
 316.157 +TZOFFSETFROM:-0200
 316.158 +TZOFFSETTO:-0300
 316.159 +TZNAME:WARST
 316.160 +DTSTART:20080121T000000
 316.161 +RDATE:20080121T000000
 316.162 +END:DAYLIGHT
 316.163 +END:VTIMEZONE
 316.164 +END:VCALENDAR
   317.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   317.2 +++ b/src/zoneinfo-global/America/Argentina/Tucuman.ics	Tue Feb 10 18:12:00 2015 +0100
   317.3 @@ -0,0 +1,144 @@
   317.4 +BEGIN:VCALENDAR
   317.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   317.6 +VERSION:2.0
   317.7 +BEGIN:VTIMEZONE
   317.8 +TZID:America/Argentina/Tucuman
   317.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Argentina/Tucuman
  317.10 +X-LIC-LOCATION:America/Argentina/Tucuman
  317.11 +BEGIN:STANDARD
  317.12 +TZOFFSETFROM:-042052
  317.13 +TZOFFSETTO:-041648
  317.14 +TZNAME:CMT
  317.15 +DTSTART:18941031T000000
  317.16 +RDATE:18941031T000000
  317.17 +END:STANDARD
  317.18 +BEGIN:STANDARD
  317.19 +TZOFFSETFROM:-041648
  317.20 +TZOFFSETTO:-0400
  317.21 +TZNAME:ART
  317.22 +DTSTART:19200501T000000
  317.23 +RDATE:19200501T000000
  317.24 +END:STANDARD
  317.25 +BEGIN:DAYLIGHT
  317.26 +TZOFFSETFROM:-0400
  317.27 +TZOFFSETTO:-0300
  317.28 +TZNAME:ARST
  317.29 +DTSTART:19301201T000000
  317.30 +RDATE:19301201T000000
  317.31 +RDATE:19311015T000000
  317.32 +RDATE:19321101T000000
  317.33 +RDATE:19331101T000000
  317.34 +RDATE:19341101T000000
  317.35 +RDATE:19351101T000000
  317.36 +RDATE:19361101T000000
  317.37 +RDATE:19371101T000000
  317.38 +RDATE:19381101T000000
  317.39 +RDATE:19391101T000000
  317.40 +RDATE:19400701T000000
  317.41 +RDATE:19411015T000000
  317.42 +RDATE:19431015T000000
  317.43 +RDATE:19461001T000000
  317.44 +RDATE:19631215T000000
  317.45 +RDATE:19641015T000000
  317.46 +RDATE:19651015T000000
  317.47 +RDATE:19661015T000000
  317.48 +RDATE:19671001T000000
  317.49 +RDATE:19681006T000000
  317.50 +END:DAYLIGHT
  317.51 +BEGIN:STANDARD
  317.52 +TZOFFSETFROM:-0300
  317.53 +TZOFFSETTO:-0400
  317.54 +TZNAME:ART
  317.55 +DTSTART:19310401T000000
  317.56 +RDATE:19310401T000000
  317.57 +RDATE:19320301T000000
  317.58 +RDATE:19330301T000000
  317.59 +RDATE:19340301T000000
  317.60 +RDATE:19350301T000000
  317.61 +RDATE:19360301T000000
  317.62 +RDATE:19370301T000000
  317.63 +RDATE:19380301T000000
  317.64 +RDATE:19390301T000000
  317.65 +RDATE:19400301T000000
  317.66 +RDATE:19410615T000000
  317.67 +RDATE:19430801T000000
  317.68 +RDATE:19460301T000000
  317.69 +RDATE:19631001T000000
  317.70 +RDATE:19640301T000000
  317.71 +RDATE:19650301T000000
  317.72 +RDATE:19660301T000000
  317.73 +RDATE:19670402T000000
  317.74 +RDATE:19680407T000000
  317.75 +RDATE:19690406T000000
  317.76 +END:STANDARD
  317.77 +BEGIN:STANDARD
  317.78 +TZOFFSETFROM:-0400
  317.79 +TZOFFSETTO:-0300
  317.80 +TZNAME:ART
  317.81 +DTSTART:19691005T000000
  317.82 +RDATE:19691005T000000
  317.83 +RDATE:20040613T000000
  317.84 +END:STANDARD
  317.85 +BEGIN:DAYLIGHT
  317.86 +TZOFFSETFROM:-0300
  317.87 +TZOFFSETTO:-0200
  317.88 +TZNAME:ARST
  317.89 +DTSTART:19740123T000000
  317.90 +RDATE:19740123T000000
  317.91 +RDATE:19881201T000000
  317.92 +RDATE:19891015T000000
  317.93 +RDATE:19901021T000000
  317.94 +RDATE:19921018T000000
  317.95 +RDATE:20071230T000000
  317.96 +RDATE:20081019T000000
  317.97 +END:DAYLIGHT
  317.98 +BEGIN:STANDARD
  317.99 +TZOFFSETFROM:-0200
 317.100 +TZOFFSETTO:-0300
 317.101 +TZNAME:ART
 317.102 +DTSTART:19740501T000000
 317.103 +RDATE:19740501T000000
 317.104 +RDATE:19890305T000000
 317.105 +RDATE:19900304T000000
 317.106 +RDATE:19920301T000000
 317.107 +RDATE:19930307T000000
 317.108 +RDATE:20080316T000000
 317.109 +RDATE:20090315T000000
 317.110 +END:STANDARD
 317.111 +BEGIN:STANDARD
 317.112 +TZOFFSETFROM:-0200
 317.113 +TZOFFSETTO:-0400
 317.114 +TZNAME:WART
 317.115 +DTSTART:19910303T000000
 317.116 +RDATE:19910303T000000
 317.117 +END:STANDARD
 317.118 +BEGIN:DAYLIGHT
 317.119 +TZOFFSETFROM:-0400
 317.120 +TZOFFSETTO:-0200
 317.121 +TZNAME:ARST
 317.122 +DTSTART:19911020T000000
 317.123 +RDATE:19911020T000000
 317.124 +END:DAYLIGHT
 317.125 +BEGIN:DAYLIGHT
 317.126 +TZOFFSETFROM:-0300
 317.127 +TZOFFSETTO:-0300
 317.128 +TZNAME:ARST
 317.129 +DTSTART:19991003T000000
 317.130 +RDATE:19991003T000000
 317.131 +END:DAYLIGHT
 317.132 +BEGIN:STANDARD
 317.133 +TZOFFSETFROM:-0300
 317.134 +TZOFFSETTO:-0300
 317.135 +TZNAME:ART
 317.136 +DTSTART:20000303T000000
 317.137 +RDATE:20000303T000000
 317.138 +END:STANDARD
 317.139 +BEGIN:STANDARD
 317.140 +TZOFFSETFROM:-0300
 317.141 +TZOFFSETTO:-0400
 317.142 +TZNAME:WART
 317.143 +DTSTART:20040601T000000
 317.144 +RDATE:20040601T000000
 317.145 +END:STANDARD
 317.146 +END:VTIMEZONE
 317.147 +END:VCALENDAR
   318.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   318.2 +++ b/src/zoneinfo-global/America/Argentina/Ushuaia.ics	Tue Feb 10 18:12:00 2015 +0100
   318.3 @@ -0,0 +1,131 @@
   318.4 +BEGIN:VCALENDAR
   318.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   318.6 +VERSION:2.0
   318.7 +BEGIN:VTIMEZONE
   318.8 +TZID:America/Argentina/Ushuaia
   318.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Argentina/Ushuaia
  318.10 +X-LIC-LOCATION:America/Argentina/Ushuaia
  318.11 +BEGIN:STANDARD
  318.12 +TZOFFSETFROM:-043312
  318.13 +TZOFFSETTO:-041648
  318.14 +TZNAME:CMT
  318.15 +DTSTART:18941031T000000
  318.16 +RDATE:18941031T000000
  318.17 +END:STANDARD
  318.18 +BEGIN:STANDARD
  318.19 +TZOFFSETFROM:-041648
  318.20 +TZOFFSETTO:-0400
  318.21 +TZNAME:ART
  318.22 +DTSTART:19200501T000000
  318.23 +RDATE:19200501T000000
  318.24 +END:STANDARD
  318.25 +BEGIN:DAYLIGHT
  318.26 +TZOFFSETFROM:-0400
  318.27 +TZOFFSETTO:-0300
  318.28 +TZNAME:ARST
  318.29 +DTSTART:19301201T000000
  318.30 +RDATE:19301201T000000
  318.31 +RDATE:19311015T000000
  318.32 +RDATE:19321101T000000
  318.33 +RDATE:19331101T000000
  318.34 +RDATE:19341101T000000
  318.35 +RDATE:19351101T000000
  318.36 +RDATE:19361101T000000
  318.37 +RDATE:19371101T000000
  318.38 +RDATE:19381101T000000
  318.39 +RDATE:19391101T000000
  318.40 +RDATE:19400701T000000
  318.41 +RDATE:19411015T000000
  318.42 +RDATE:19431015T000000
  318.43 +RDATE:19461001T000000
  318.44 +RDATE:19631215T000000
  318.45 +RDATE:19641015T000000
  318.46 +RDATE:19651015T000000
  318.47 +RDATE:19661015T000000
  318.48 +RDATE:19671001T000000
  318.49 +RDATE:19681006T000000
  318.50 +END:DAYLIGHT
  318.51 +BEGIN:STANDARD
  318.52 +TZOFFSETFROM:-0300
  318.53 +TZOFFSETTO:-0400
  318.54 +TZNAME:ART
  318.55 +DTSTART:19310401T000000
  318.56 +RDATE:19310401T000000
  318.57 +RDATE:19320301T000000
  318.58 +RDATE:19330301T000000
  318.59 +RDATE:19340301T000000
  318.60 +RDATE:19350301T000000
  318.61 +RDATE:19360301T000000
  318.62 +RDATE:19370301T000000
  318.63 +RDATE:19380301T000000
  318.64 +RDATE:19390301T000000
  318.65 +RDATE:19400301T000000
  318.66 +RDATE:19410615T000000
  318.67 +RDATE:19430801T000000
  318.68 +RDATE:19460301T000000
  318.69 +RDATE:19631001T000000
  318.70 +RDATE:19640301T000000
  318.71 +RDATE:19650301T000000
  318.72 +RDATE:19660301T000000
  318.73 +RDATE:19670402T000000
  318.74 +RDATE:19680407T000000
  318.75 +RDATE:19690406T000000
  318.76 +END:STANDARD
  318.77 +BEGIN:STANDARD
  318.78 +TZOFFSETFROM:-0400
  318.79 +TZOFFSETTO:-0300
  318.80 +TZNAME:ART
  318.81 +DTSTART:19691005T000000
  318.82 +RDATE:19691005T000000
  318.83 +RDATE:20040620T000000
  318.84 +END:STANDARD
  318.85 +BEGIN:DAYLIGHT
  318.86 +TZOFFSETFROM:-0300
  318.87 +TZOFFSETTO:-0200
  318.88 +TZNAME:ARST
  318.89 +DTSTART:19740123T000000
  318.90 +RDATE:19740123T000000
  318.91 +RDATE:19881201T000000
  318.92 +RDATE:19891015T000000
  318.93 +RDATE:19901021T000000
  318.94 +RDATE:19911020T000000
  318.95 +RDATE:19921018T000000
  318.96 +RDATE:20071230T000000
  318.97 +END:DAYLIGHT
  318.98 +BEGIN:STANDARD
  318.99 +TZOFFSETFROM:-0200
 318.100 +TZOFFSETTO:-0300
 318.101 +TZNAME:ART
 318.102 +DTSTART:19740501T000000
 318.103 +RDATE:19740501T000000
 318.104 +RDATE:19890305T000000
 318.105 +RDATE:19900304T000000
 318.106 +RDATE:19910303T000000
 318.107 +RDATE:19920301T000000
 318.108 +RDATE:19930307T000000
 318.109 +RDATE:20080316T000000
 318.110 +END:STANDARD
 318.111 +BEGIN:DAYLIGHT
 318.112 +TZOFFSETFROM:-0300
 318.113 +TZOFFSETTO:-0300
 318.114 +TZNAME:ARST
 318.115 +DTSTART:19991003T000000
 318.116 +RDATE:19991003T000000
 318.117 +END:DAYLIGHT
 318.118 +BEGIN:STANDARD
 318.119 +TZOFFSETFROM:-0300
 318.120 +TZOFFSETTO:-0300
 318.121 +TZNAME:ART
 318.122 +DTSTART:20000303T000000
 318.123 +RDATE:20000303T000000
 318.124 +RDATE:20081018T000000
 318.125 +END:STANDARD
 318.126 +BEGIN:STANDARD
 318.127 +TZOFFSETFROM:-0300
 318.128 +TZOFFSETTO:-0400
 318.129 +TZNAME:WART
 318.130 +DTSTART:20040530T000000
 318.131 +RDATE:20040530T000000
 318.132 +END:STANDARD
 318.133 +END:VTIMEZONE
 318.134 +END:VCALENDAR
   319.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   319.2 +++ b/src/zoneinfo-global/America/Aruba.ics	Tue Feb 10 18:12:00 2015 +0100
   319.3 @@ -0,0 +1,23 @@
   319.4 +BEGIN:VCALENDAR
   319.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   319.6 +VERSION:2.0
   319.7 +BEGIN:VTIMEZONE
   319.8 +TZID:America/Aruba
   319.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Aruba
  319.10 +X-LIC-LOCATION:America/Aruba
  319.11 +BEGIN:STANDARD
  319.12 +TZOFFSETFROM:-044024
  319.13 +TZOFFSETTO:-0430
  319.14 +TZNAME:ANT
  319.15 +DTSTART:19120212T000000
  319.16 +RDATE:19120212T000000
  319.17 +END:STANDARD
  319.18 +BEGIN:STANDARD
  319.19 +TZOFFSETFROM:-0430
  319.20 +TZOFFSETTO:-0400
  319.21 +TZNAME:AST
  319.22 +DTSTART:19650101T000000
  319.23 +RDATE:19650101T000000
  319.24 +END:STANDARD
  319.25 +END:VTIMEZONE
  319.26 +END:VCALENDAR
   320.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   320.2 +++ b/src/zoneinfo-global/America/Asuncion.ics	Tue Feb 10 18:12:00 2015 +0100
   320.3 @@ -0,0 +1,133 @@
   320.4 +BEGIN:VCALENDAR
   320.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   320.6 +VERSION:2.0
   320.7 +BEGIN:VTIMEZONE
   320.8 +TZID:America/Asuncion
   320.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Asuncion
  320.10 +X-LIC-LOCATION:America/Asuncion
  320.11 +BEGIN:STANDARD
  320.12 +TZOFFSETFROM:-0300
  320.13 +TZOFFSETTO:-0400
  320.14 +TZNAME:PYT
  320.15 +DTSTART:20100411T000000
  320.16 +RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=2SU
  320.17 +END:STANDARD
  320.18 +BEGIN:DAYLIGHT
  320.19 +TZOFFSETFROM:-0400
  320.20 +TZOFFSETTO:-0300
  320.21 +TZNAME:PYST
  320.22 +DTSTART:20101003T000000
  320.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU
  320.24 +END:DAYLIGHT
  320.25 +BEGIN:STANDARD
  320.26 +TZOFFSETFROM:-035040
  320.27 +TZOFFSETTO:-035040
  320.28 +TZNAME:AMT
  320.29 +DTSTART:18900101T000000
  320.30 +RDATE:18900101T000000
  320.31 +END:STANDARD
  320.32 +BEGIN:STANDARD
  320.33 +TZOFFSETFROM:-035040
  320.34 +TZOFFSETTO:-0400
  320.35 +TZNAME:PYT
  320.36 +DTSTART:19311010T000000
  320.37 +RDATE:19311010T000000
  320.38 +END:STANDARD
  320.39 +BEGIN:STANDARD
  320.40 +TZOFFSETFROM:-0400
  320.41 +TZOFFSETTO:-0300
  320.42 +TZNAME:PYT
  320.43 +DTSTART:19721001T000000
  320.44 +RDATE:19721001T000000
  320.45 +END:STANDARD
  320.46 +BEGIN:STANDARD
  320.47 +TZOFFSETFROM:-0300
  320.48 +TZOFFSETTO:-0400
  320.49 +TZNAME:PYT
  320.50 +DTSTART:19740401T000000
  320.51 +RDATE:19740401T000000
  320.52 +RDATE:19760301T000000
  320.53 +RDATE:19770301T000000
  320.54 +RDATE:19780301T000000
  320.55 +RDATE:19790401T000000
  320.56 +RDATE:19800401T000000
  320.57 +RDATE:19810401T000000
  320.58 +RDATE:19820401T000000
  320.59 +RDATE:19830401T000000
  320.60 +RDATE:19840401T000000
  320.61 +RDATE:19850401T000000
  320.62 +RDATE:19860401T000000
  320.63 +RDATE:19870401T000000
  320.64 +RDATE:19880401T000000
  320.65 +RDATE:19890401T000000
  320.66 +RDATE:19900401T000000
  320.67 +RDATE:19910401T000000
  320.68 +RDATE:19920301T000000
  320.69 +RDATE:19930331T000000
  320.70 +RDATE:19940227T000000
  320.71 +RDATE:19950226T000000
  320.72 +RDATE:19960301T000000
  320.73 +RDATE:19970223T000000
  320.74 +RDATE:19980301T000000
  320.75 +RDATE:19990307T000000
  320.76 +RDATE:20000305T000000
  320.77 +RDATE:20010304T000000
  320.78 +RDATE:20020407T000000
  320.79 +RDATE:20030406T000000
  320.80 +RDATE:20040404T000000
  320.81 +RDATE:20050313T000000
  320.82 +RDATE:20060312T000000
  320.83 +RDATE:20070311T000000
  320.84 +RDATE:20080309T000000
  320.85 +RDATE:20090308T000000
  320.86 +END:STANDARD
  320.87 +BEGIN:STANDARD
  320.88 +TZOFFSETFROM:-0400
  320.89 +TZOFFSETTO:-0400
  320.90 +TZNAME:PYT
  320.91 +DTSTART:19750301T000000
  320.92 +RDATE:19750301T000000
  320.93 +END:STANDARD
  320.94 +BEGIN:DAYLIGHT
  320.95 +TZOFFSETFROM:-0400
  320.96 +TZOFFSETTO:-0300
  320.97 +TZNAME:PYST
  320.98 +DTSTART:19751001T000000
  320.99 +RDATE:19751001T000000
 320.100 +RDATE:19761001T000000
 320.101 +RDATE:19771001T000000
 320.102 +RDATE:19781001T000000
 320.103 +RDATE:19791001T000000
 320.104 +RDATE:19801001T000000
 320.105 +RDATE:19811001T000000
 320.106 +RDATE:19821001T000000
 320.107 +RDATE:19831001T000000
 320.108 +RDATE:19841001T000000
 320.109 +RDATE:19851001T000000
 320.110 +RDATE:19861001T000000
 320.111 +RDATE:19871001T000000
 320.112 +RDATE:19881001T000000
 320.113 +RDATE:19891022T000000
 320.114 +RDATE:19901001T000000
 320.115 +RDATE:19911006T000000
 320.116 +RDATE:19921005T000000
 320.117 +RDATE:19931001T000000
 320.118 +RDATE:19941001T000000
 320.119 +RDATE:19951001T000000
 320.120 +RDATE:19961006T000000
 320.121 +RDATE:19971005T000000
 320.122 +RDATE:19981004T000000
 320.123 +RDATE:19991003T000000
 320.124 +RDATE:20001001T000000
 320.125 +RDATE:20011007T000000
 320.126 +RDATE:20020901T000000
 320.127 +RDATE:20030907T000000
 320.128 +RDATE:20041017T000000
 320.129 +RDATE:20051016T000000
 320.130 +RDATE:20061015T000000
 320.131 +RDATE:20071021T000000
 320.132 +RDATE:20081019T000000
 320.133 +RDATE:20091018T000000
 320.134 +END:DAYLIGHT
 320.135 +END:VTIMEZONE
 320.136 +END:VCALENDAR
   321.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   321.2 +++ b/src/zoneinfo-global/America/Atikokan.ics	Tue Feb 10 18:12:00 2015 +0100
   321.3 @@ -0,0 +1,52 @@
   321.4 +BEGIN:VCALENDAR
   321.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   321.6 +VERSION:2.0
   321.7 +BEGIN:VTIMEZONE
   321.8 +TZID:America/Atikokan
   321.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Atikokan
  321.10 +X-LIC-LOCATION:America/Atikokan
  321.11 +BEGIN:STANDARD
  321.12 +TZOFFSETFROM:-060628
  321.13 +TZOFFSETTO:-0600
  321.14 +TZNAME:CST
  321.15 +DTSTART:18950101T000000
  321.16 +RDATE:18950101T000000
  321.17 +END:STANDARD
  321.18 +BEGIN:DAYLIGHT
  321.19 +TZOFFSETFROM:-0600
  321.20 +TZOFFSETTO:-0500
  321.21 +TZNAME:CDT
  321.22 +DTSTART:19180414T020000
  321.23 +RDATE:19180414T020000
  321.24 +RDATE:19400929T000000
  321.25 +END:DAYLIGHT
  321.26 +BEGIN:STANDARD
  321.27 +TZOFFSETFROM:-0500
  321.28 +TZOFFSETTO:-0600
  321.29 +TZNAME:CST
  321.30 +DTSTART:19181031T020000
  321.31 +RDATE:19181031T020000
  321.32 +END:STANDARD
  321.33 +BEGIN:DAYLIGHT
  321.34 +TZOFFSETFROM:-0500
  321.35 +TZOFFSETTO:-0500
  321.36 +TZNAME:CWT
  321.37 +DTSTART:19420209T020000
  321.38 +RDATE:19420209T020000
  321.39 +END:DAYLIGHT
  321.40 +BEGIN:DAYLIGHT
  321.41 +TZOFFSETFROM:-0500
  321.42 +TZOFFSETTO:-0500
  321.43 +TZNAME:CPT
  321.44 +DTSTART:19450814T180000
  321.45 +RDATE:19450814T180000
  321.46 +END:DAYLIGHT
  321.47 +BEGIN:STANDARD
  321.48 +TZOFFSETFROM:-0500
  321.49 +TZOFFSETTO:-0500
  321.50 +TZNAME:EST
  321.51 +DTSTART:19450930T020000
  321.52 +RDATE:19450930T020000
  321.53 +END:STANDARD
  321.54 +END:VTIMEZONE
  321.55 +END:VCALENDAR
   322.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   322.2 +++ b/src/zoneinfo-global/America/Bahia.ics	Tue Feb 10 18:12:00 2015 +0100
   322.3 @@ -0,0 +1,133 @@
   322.4 +BEGIN:VCALENDAR
   322.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   322.6 +VERSION:2.0
   322.7 +BEGIN:VTIMEZONE
   322.8 +TZID:America/Bahia
   322.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Bahia
  322.10 +X-LIC-LOCATION:America/Bahia
  322.11 +BEGIN:DAYLIGHT
  322.12 +TZOFFSETFROM:-0300
  322.13 +TZOFFSETTO:-0200
  322.14 +TZNAME:BRST
  322.15 +DTSTART:20111016T000000
  322.16 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=3SU
  322.17 +END:DAYLIGHT
  322.18 +BEGIN:STANDARD
  322.19 +TZOFFSETFROM:-0300
  322.20 +TZOFFSETTO:-0300
  322.21 +TZNAME:BRT
  322.22 +DTSTART:20380221T000000
  322.23 +RRULE:FREQ=YEARLY;BYMONTH=2;BYDAY=3SU
  322.24 +END:STANDARD
  322.25 +BEGIN:STANDARD
  322.26 +TZOFFSETFROM:-023404
  322.27 +TZOFFSETTO:-0300
  322.28 +TZNAME:BRT
  322.29 +DTSTART:19140101T000000
  322.30 +RDATE:19140101T000000
  322.31 +END:STANDARD
  322.32 +BEGIN:DAYLIGHT
  322.33 +TZOFFSETFROM:-0300
  322.34 +TZOFFSETTO:-0200
  322.35 +TZNAME:BRST
  322.36 +DTSTART:19311003T110000
  322.37 +RDATE:19311003T110000
  322.38 +RDATE:19321003T000000
  322.39 +RDATE:19491201T000000
  322.40 +RDATE:19501201T000000
  322.41 +RDATE:19511201T000000
  322.42 +RDATE:19521201T000000
  322.43 +RDATE:19631209T000000
  322.44 +RDATE:19650131T000000
  322.45 +RDATE:19651201T000000
  322.46 +RDATE:19661101T000000
  322.47 +RDATE:19671101T000000
  322.48 +RDATE:19851102T000000
  322.49 +RDATE:19861025T000000
  322.50 +RDATE:19871025T000000
  322.51 +RDATE:19881016T000000
  322.52 +RDATE:19891015T000000
  322.53 +RDATE:19901021T000000
  322.54 +RDATE:19911020T000000
  322.55 +RDATE:19921025T000000
  322.56 +RDATE:19931017T000000
  322.57 +RDATE:19941016T000000
  322.58 +RDATE:19951015T000000
  322.59 +RDATE:19961006T000000
  322.60 +RDATE:19971006T000000
  322.61 +RDATE:19981011T000000
  322.62 +RDATE:19991003T000000
  322.63 +RDATE:20001008T000000
  322.64 +RDATE:20011014T000000
  322.65 +RDATE:20021103T000000
  322.66 +END:DAYLIGHT
  322.67 +BEGIN:STANDARD
  322.68 +TZOFFSETFROM:-0200
  322.69 +TZOFFSETTO:-0300
  322.70 +TZNAME:BRT
  322.71 +DTSTART:19320401T000000
  322.72 +RDATE:19320401T000000
  322.73 +RDATE:19330401T000000
  322.74 +RDATE:19500416T010000
  322.75 +RDATE:19510401T000000
  322.76 +RDATE:19520401T000000
  322.77 +RDATE:19530301T000000
  322.78 +RDATE:19640301T000000
  322.79 +RDATE:19650331T000000
  322.80 +RDATE:19660301T000000
  322.81 +RDATE:19670301T000000
  322.82 +RDATE:19680301T000000
  322.83 +RDATE:19860315T000000
  322.84 +RDATE:19870214T000000
  322.85 +RDATE:19880207T000000
  322.86 +RDATE:19890129T000000
  322.87 +RDATE:19900211T000000
  322.88 +RDATE:19910217T000000
  322.89 +RDATE:19920209T000000
  322.90 +RDATE:19930131T000000
  322.91 +RDATE:19940220T000000
  322.92 +RDATE:19950219T000000
  322.93 +RDATE:19960211T000000
  322.94 +RDATE:19970216T000000
  322.95 +RDATE:19980301T000000
  322.96 +RDATE:19990221T000000
  322.97 +RDATE:20000227T000000
  322.98 +RDATE:20010218T000000
  322.99 +RDATE:20020217T000000
 322.100 +RDATE:20030216T000000
 322.101 +RDATE:20120226T000000
 322.102 +RDATE:20130217T000000
 322.103 +RDATE:20140216T000000
 322.104 +END:STANDARD
 322.105 +BEGIN:STANDARD
 322.106 +TZOFFSETFROM:-0300
 322.107 +TZOFFSETTO:-0300
 322.108 +TZNAME:BRT
 322.109 +DTSTART:20030924T000000
 322.110 +RDATE:20030924T000000
 322.111 +RDATE:20150222T000000
 322.112 +RDATE:20160221T000000
 322.113 +RDATE:20170219T000000
 322.114 +RDATE:20180218T000000
 322.115 +RDATE:20190217T000000
 322.116 +RDATE:20200216T000000
 322.117 +RDATE:20210221T000000
 322.118 +RDATE:20220220T000000
 322.119 +RDATE:20230226T000000
 322.120 +RDATE:20240218T000000
 322.121 +RDATE:20250216T000000
 322.122 +RDATE:20260222T000000
 322.123 +RDATE:20270221T000000
 322.124 +RDATE:20280220T000000
 322.125 +RDATE:20290218T000000
 322.126 +RDATE:20300217T000000
 322.127 +RDATE:20310216T000000
 322.128 +RDATE:20320215T000000
 322.129 +RDATE:20330220T000000
 322.130 +RDATE:20340226T000000
 322.131 +RDATE:20350218T000000
 322.132 +RDATE:20360217T000000
 322.133 +RDATE:20370222T000000
 322.134 +END:STANDARD
 322.135 +END:VTIMEZONE
 322.136 +END:VCALENDAR
   323.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   323.2 +++ b/src/zoneinfo-global/America/Bahia_Banderas.ics	Tue Feb 10 18:12:00 2015 +0100
   323.3 @@ -0,0 +1,103 @@
   323.4 +BEGIN:VCALENDAR
   323.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   323.6 +VERSION:2.0
   323.7 +BEGIN:VTIMEZONE
   323.8 +TZID:America/Bahia_Banderas
   323.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Bahia_Banderas
  323.10 +X-LIC-LOCATION:America/Bahia_Banderas
  323.11 +BEGIN:STANDARD
  323.12 +TZOFFSETFROM:-0500
  323.13 +TZOFFSETTO:-0600
  323.14 +TZNAME:CST
  323.15 +DTSTART:20101031T020000
  323.16 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  323.17 +END:STANDARD
  323.18 +BEGIN:DAYLIGHT
  323.19 +TZOFFSETFROM:-0600
  323.20 +TZOFFSETTO:-0500
  323.21 +TZNAME:CDT
  323.22 +DTSTART:20110403T020000
  323.23 +RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU
  323.24 +END:DAYLIGHT
  323.25 +BEGIN:STANDARD
  323.26 +TZOFFSETFROM:-0701
  323.27 +TZOFFSETTO:-0700
  323.28 +TZNAME:MST
  323.29 +DTSTART:19211231T235900
  323.30 +RDATE:19211231T235900
  323.31 +END:STANDARD
  323.32 +BEGIN:STANDARD
  323.33 +TZOFFSETFROM:-0700
  323.34 +TZOFFSETTO:-0600
  323.35 +TZNAME:CST
  323.36 +DTSTART:19270610T230000
  323.37 +RDATE:19270610T230000
  323.38 +RDATE:19310501T230000
  323.39 +RDATE:19320401T000000
  323.40 +END:STANDARD
  323.41 +BEGIN:STANDARD
  323.42 +TZOFFSETFROM:-0600
  323.43 +TZOFFSETTO:-0700
  323.44 +TZNAME:MST
  323.45 +DTSTART:19301115T000000
  323.46 +RDATE:19301115T000000
  323.47 +RDATE:19311001T000000
  323.48 +RDATE:19420424T000000
  323.49 +RDATE:19961027T020000
  323.50 +RDATE:19971026T020000
  323.51 +RDATE:19981025T020000
  323.52 +RDATE:19991031T020000
  323.53 +RDATE:20001029T020000
  323.54 +RDATE:20010930T020000
  323.55 +RDATE:20021027T020000
  323.56 +RDATE:20031026T020000
  323.57 +RDATE:20041031T020000
  323.58 +RDATE:20051030T020000
  323.59 +RDATE:20061029T020000
  323.60 +RDATE:20071028T020000
  323.61 +RDATE:20081026T020000
  323.62 +RDATE:20091025T020000
  323.63 +END:STANDARD
  323.64 +BEGIN:STANDARD
  323.65 +TZOFFSETFROM:-0700
  323.66 +TZOFFSETTO:-0800
  323.67 +TZNAME:PST
  323.68 +DTSTART:19490114T000000
  323.69 +RDATE:19490114T000000
  323.70 +END:STANDARD
  323.71 +BEGIN:STANDARD
  323.72 +TZOFFSETFROM:-0800
  323.73 +TZOFFSETTO:-0700
  323.74 +TZNAME:MST
  323.75 +DTSTART:19700101T000000
  323.76 +RDATE:19700101T000000
  323.77 +END:STANDARD
  323.78 +BEGIN:DAYLIGHT
  323.79 +TZOFFSETFROM:-0700
  323.80 +TZOFFSETTO:-0600
  323.81 +TZNAME:MDT
  323.82 +DTSTART:19960407T020000
  323.83 +RDATE:19960407T020000
  323.84 +RDATE:19970406T020000
  323.85 +RDATE:19980405T020000
  323.86 +RDATE:19990404T020000
  323.87 +RDATE:20000402T020000
  323.88 +RDATE:20010506T020000
  323.89 +RDATE:20020407T020000
  323.90 +RDATE:20030406T020000
  323.91 +RDATE:20040404T020000
  323.92 +RDATE:20050403T020000
  323.93 +RDATE:20060402T020000
  323.94 +RDATE:20070401T020000
  323.95 +RDATE:20080406T020000
  323.96 +RDATE:20090405T020000
  323.97 +END:DAYLIGHT
  323.98 +BEGIN:DAYLIGHT
  323.99 +TZOFFSETFROM:-0700
 323.100 +TZOFFSETTO:-0500
 323.101 +TZNAME:CDT
 323.102 +DTSTART:20100404T020000
 323.103 +RDATE:20100404T020000
 323.104 +END:DAYLIGHT
 323.105 +END:VTIMEZONE
 323.106 +END:VCALENDAR
   324.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   324.2 +++ b/src/zoneinfo-global/America/Barbados.ics	Tue Feb 10 18:12:00 2015 +0100
   324.3 @@ -0,0 +1,43 @@
   324.4 +BEGIN:VCALENDAR
   324.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   324.6 +VERSION:2.0
   324.7 +BEGIN:VTIMEZONE
   324.8 +TZID:America/Barbados
   324.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Barbados
  324.10 +X-LIC-LOCATION:America/Barbados
  324.11 +BEGIN:STANDARD
  324.12 +TZOFFSETFROM:-035828
  324.13 +TZOFFSETTO:-035828
  324.14 +TZNAME:BMT
  324.15 +DTSTART:19240101T000000
  324.16 +RDATE:19240101T000000
  324.17 +END:STANDARD
  324.18 +BEGIN:STANDARD
  324.19 +TZOFFSETFROM:-035828
  324.20 +TZOFFSETTO:-0400
  324.21 +TZNAME:AST
  324.22 +DTSTART:19320101T000000
  324.23 +RDATE:19320101T000000
  324.24 +END:STANDARD
  324.25 +BEGIN:DAYLIGHT
  324.26 +TZOFFSETFROM:-0400
  324.27 +TZOFFSETTO:-0300
  324.28 +TZNAME:ADT
  324.29 +DTSTART:19770612T020000
  324.30 +RDATE:19770612T020000
  324.31 +RDATE:19780416T020000
  324.32 +RDATE:19790415T020000
  324.33 +RDATE:19800420T020000
  324.34 +END:DAYLIGHT
  324.35 +BEGIN:STANDARD
  324.36 +TZOFFSETFROM:-0300
  324.37 +TZOFFSETTO:-0400
  324.38 +TZNAME:AST
  324.39 +DTSTART:19771002T020000
  324.40 +RDATE:19771002T020000
  324.41 +RDATE:19781001T020000
  324.42 +RDATE:19790930T020000
  324.43 +RDATE:19800925T020000
  324.44 +END:STANDARD
  324.45 +END:VTIMEZONE
  324.46 +END:VCALENDAR
   325.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   325.2 +++ b/src/zoneinfo-global/America/Belem.ics	Tue Feb 10 18:12:00 2015 +0100
   325.3 @@ -0,0 +1,63 @@
   325.4 +BEGIN:VCALENDAR
   325.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   325.6 +VERSION:2.0
   325.7 +BEGIN:VTIMEZONE
   325.8 +TZID:America/Belem
   325.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Belem
  325.10 +X-LIC-LOCATION:America/Belem
  325.11 +BEGIN:STANDARD
  325.12 +TZOFFSETFROM:-031356
  325.13 +TZOFFSETTO:-0300
  325.14 +TZNAME:BRT
  325.15 +DTSTART:19140101T000000
  325.16 +RDATE:19140101T000000
  325.17 +END:STANDARD
  325.18 +BEGIN:DAYLIGHT
  325.19 +TZOFFSETFROM:-0300
  325.20 +TZOFFSETTO:-0200
  325.21 +TZNAME:BRST
  325.22 +DTSTART:19311003T110000
  325.23 +RDATE:19311003T110000
  325.24 +RDATE:19321003T000000
  325.25 +RDATE:19491201T000000
  325.26 +RDATE:19501201T000000
  325.27 +RDATE:19511201T000000
  325.28 +RDATE:19521201T000000
  325.29 +RDATE:19631209T000000
  325.30 +RDATE:19650131T000000
  325.31 +RDATE:19651201T000000
  325.32 +RDATE:19661101T000000
  325.33 +RDATE:19671101T000000
  325.34 +RDATE:19851102T000000
  325.35 +RDATE:19861025T000000
  325.36 +RDATE:19871025T000000
  325.37 +END:DAYLIGHT
  325.38 +BEGIN:STANDARD
  325.39 +TZOFFSETFROM:-0200
  325.40 +TZOFFSETTO:-0300
  325.41 +TZNAME:BRT
  325.42 +DTSTART:19320401T000000
  325.43 +RDATE:19320401T000000
  325.44 +RDATE:19330401T000000
  325.45 +RDATE:19500416T010000
  325.46 +RDATE:19510401T000000
  325.47 +RDATE:19520401T000000
  325.48 +RDATE:19530301T000000
  325.49 +RDATE:19640301T000000
  325.50 +RDATE:19650331T000000
  325.51 +RDATE:19660301T000000
  325.52 +RDATE:19670301T000000
  325.53 +RDATE:19680301T000000
  325.54 +RDATE:19860315T000000
  325.55 +RDATE:19870214T000000
  325.56 +RDATE:19880207T000000
  325.57 +END:STANDARD
  325.58 +BEGIN:STANDARD
  325.59 +TZOFFSETFROM:-0300
  325.60 +TZOFFSETTO:-0300
  325.61 +TZNAME:BRT
  325.62 +DTSTART:19880912T000000
  325.63 +RDATE:19880912T000000
  325.64 +END:STANDARD
  325.65 +END:VTIMEZONE
  325.66 +END:VCALENDAR
   326.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   326.2 +++ b/src/zoneinfo-global/America/Belize.ics	Tue Feb 10 18:12:00 2015 +0100
   326.3 @@ -0,0 +1,94 @@
   326.4 +BEGIN:VCALENDAR
   326.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   326.6 +VERSION:2.0
   326.7 +BEGIN:VTIMEZONE
   326.8 +TZID:America/Belize
   326.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Belize
  326.10 +X-LIC-LOCATION:America/Belize
  326.11 +BEGIN:STANDARD
  326.12 +TZOFFSETFROM:-055248
  326.13 +TZOFFSETTO:-0600
  326.14 +TZNAME:CST
  326.15 +DTSTART:19120401T000000
  326.16 +RDATE:19120401T000000
  326.17 +END:STANDARD
  326.18 +BEGIN:DAYLIGHT
  326.19 +TZOFFSETFROM:-0600
  326.20 +TZOFFSETTO:-0530
  326.21 +TZNAME:CHDT
  326.22 +DTSTART:19181006T000000
  326.23 +RDATE:19181006T000000
  326.24 +RDATE:19191005T000000
  326.25 +RDATE:19201003T000000
  326.26 +RDATE:19211002T000000
  326.27 +RDATE:19221008T000000
  326.28 +RDATE:19231007T000000
  326.29 +RDATE:19241005T000000
  326.30 +RDATE:19251004T000000
  326.31 +RDATE:19261003T000000
  326.32 +RDATE:19271002T000000
  326.33 +RDATE:19281007T000000
  326.34 +RDATE:19291006T000000
  326.35 +RDATE:19301005T000000
  326.36 +RDATE:19311004T000000
  326.37 +RDATE:19321002T000000
  326.38 +RDATE:19331008T000000
  326.39 +RDATE:19341007T000000
  326.40 +RDATE:19351006T000000
  326.41 +RDATE:19361004T000000
  326.42 +RDATE:19371003T000000
  326.43 +RDATE:19381002T000000
  326.44 +RDATE:19391008T000000
  326.45 +RDATE:19401006T000000
  326.46 +RDATE:19411005T000000
  326.47 +RDATE:19421004T000000
  326.48 +END:DAYLIGHT
  326.49 +BEGIN:STANDARD
  326.50 +TZOFFSETFROM:-0530
  326.51 +TZOFFSETTO:-0600
  326.52 +TZNAME:CST
  326.53 +DTSTART:19190209T000000
  326.54 +RDATE:19190209T000000
  326.55 +RDATE:19200215T000000
  326.56 +RDATE:19210213T000000
  326.57 +RDATE:19220212T000000
  326.58 +RDATE:19230211T000000
  326.59 +RDATE:19240210T000000
  326.60 +RDATE:19250215T000000
  326.61 +RDATE:19260214T000000
  326.62 +RDATE:19270213T000000
  326.63 +RDATE:19280212T000000
  326.64 +RDATE:19290210T000000
  326.65 +RDATE:19300209T000000
  326.66 +RDATE:19310215T000000
  326.67 +RDATE:19320214T000000
  326.68 +RDATE:19330212T000000
  326.69 +RDATE:19340211T000000
  326.70 +RDATE:19350210T000000
  326.71 +RDATE:19360209T000000
  326.72 +RDATE:19370214T000000
  326.73 +RDATE:19380213T000000
  326.74 +RDATE:19390212T000000
  326.75 +RDATE:19400211T000000
  326.76 +RDATE:19410209T000000
  326.77 +RDATE:19420215T000000
  326.78 +RDATE:19430214T000000
  326.79 +END:STANDARD
  326.80 +BEGIN:DAYLIGHT
  326.81 +TZOFFSETFROM:-0600
  326.82 +TZOFFSETTO:-0500
  326.83 +TZNAME:CDT
  326.84 +DTSTART:19731205T000000
  326.85 +RDATE:19731205T000000
  326.86 +RDATE:19821218T000000
  326.87 +END:DAYLIGHT
  326.88 +BEGIN:STANDARD
  326.89 +TZOFFSETFROM:-0500
  326.90 +TZOFFSETTO:-0600
  326.91 +TZNAME:CST
  326.92 +DTSTART:19740209T000000
  326.93 +RDATE:19740209T000000
  326.94 +RDATE:19830212T000000
  326.95 +END:STANDARD
  326.96 +END:VTIMEZONE
  326.97 +END:VCALENDAR
   327.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   327.2 +++ b/src/zoneinfo-global/America/Blanc-Sablon.ics	Tue Feb 10 18:12:00 2015 +0100
   327.3 @@ -0,0 +1,52 @@
   327.4 +BEGIN:VCALENDAR
   327.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   327.6 +VERSION:2.0
   327.7 +BEGIN:VTIMEZONE
   327.8 +TZID:America/Blanc-Sablon
   327.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Blanc-Sablon
  327.10 +X-LIC-LOCATION:America/Blanc-Sablon
  327.11 +BEGIN:STANDARD
  327.12 +TZOFFSETFROM:-034828
  327.13 +TZOFFSETTO:-0400
  327.14 +TZNAME:AST
  327.15 +DTSTART:18840101T000000
  327.16 +RDATE:18840101T000000
  327.17 +END:STANDARD
  327.18 +BEGIN:DAYLIGHT
  327.19 +TZOFFSETFROM:-0400
  327.20 +TZOFFSETTO:-0300
  327.21 +TZNAME:ADT
  327.22 +DTSTART:19180414T020000
  327.23 +RDATE:19180414T020000
  327.24 +END:DAYLIGHT
  327.25 +BEGIN:STANDARD
  327.26 +TZOFFSETFROM:-0300
  327.27 +TZOFFSETTO:-0400
  327.28 +TZNAME:AST
  327.29 +DTSTART:19181031T020000
  327.30 +RDATE:19181031T020000
  327.31 +RDATE:19450930T020000
  327.32 +END:STANDARD
  327.33 +BEGIN:DAYLIGHT
  327.34 +TZOFFSETFROM:-0400
  327.35 +TZOFFSETTO:-0300
  327.36 +TZNAME:AWT
  327.37 +DTSTART:19420209T020000
  327.38 +RDATE:19420209T020000
  327.39 +END:DAYLIGHT
  327.40 +BEGIN:DAYLIGHT
  327.41 +TZOFFSETFROM:-0300
  327.42 +TZOFFSETTO:-0300
  327.43 +TZNAME:APT
  327.44 +DTSTART:19450814T200000
  327.45 +RDATE:19450814T200000
  327.46 +END:DAYLIGHT
  327.47 +BEGIN:STANDARD
  327.48 +TZOFFSETFROM:-0400
  327.49 +TZOFFSETTO:-0400
  327.50 +TZNAME:AST
  327.51 +DTSTART:19700101T000000
  327.52 +RDATE:19700101T000000
  327.53 +END:STANDARD
  327.54 +END:VTIMEZONE
  327.55 +END:VCALENDAR
   328.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   328.2 +++ b/src/zoneinfo-global/America/Boa_Vista.ics	Tue Feb 10 18:12:00 2015 +0100
   328.3 @@ -0,0 +1,68 @@
   328.4 +BEGIN:VCALENDAR
   328.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   328.6 +VERSION:2.0
   328.7 +BEGIN:VTIMEZONE
   328.8 +TZID:America/Boa_Vista
   328.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Boa_Vista
  328.10 +X-LIC-LOCATION:America/Boa_Vista
  328.11 +BEGIN:STANDARD
  328.12 +TZOFFSETFROM:-040240
  328.13 +TZOFFSETTO:-0400
  328.14 +TZNAME:AMT
  328.15 +DTSTART:19140101T000000
  328.16 +RDATE:19140101T000000
  328.17 +END:STANDARD
  328.18 +BEGIN:DAYLIGHT
  328.19 +TZOFFSETFROM:-0400
  328.20 +TZOFFSETTO:-0300
  328.21 +TZNAME:AMST
  328.22 +DTSTART:19311003T110000
  328.23 +RDATE:19311003T110000
  328.24 +RDATE:19321003T000000
  328.25 +RDATE:19491201T000000
  328.26 +RDATE:19501201T000000
  328.27 +RDATE:19511201T000000
  328.28 +RDATE:19521201T000000
  328.29 +RDATE:19631209T000000
  328.30 +RDATE:19650131T000000
  328.31 +RDATE:19651201T000000
  328.32 +RDATE:19661101T000000
  328.33 +RDATE:19671101T000000
  328.34 +RDATE:19851102T000000
  328.35 +RDATE:19861025T000000
  328.36 +RDATE:19871025T000000
  328.37 +RDATE:19991003T000000
  328.38 +RDATE:20001008T000000
  328.39 +END:DAYLIGHT
  328.40 +BEGIN:STANDARD
  328.41 +TZOFFSETFROM:-0300
  328.42 +TZOFFSETTO:-0400
  328.43 +TZNAME:AMT
  328.44 +DTSTART:19320401T000000
  328.45 +RDATE:19320401T000000
  328.46 +RDATE:19330401T000000
  328.47 +RDATE:19500416T010000
  328.48 +RDATE:19510401T000000
  328.49 +RDATE:19520401T000000
  328.50 +RDATE:19530301T000000
  328.51 +RDATE:19640301T000000
  328.52 +RDATE:19650331T000000
  328.53 +RDATE:19660301T000000
  328.54 +RDATE:19670301T000000
  328.55 +RDATE:19680301T000000
  328.56 +RDATE:19860315T000000
  328.57 +RDATE:19870214T000000
  328.58 +RDATE:19880207T000000
  328.59 +RDATE:20000227T000000
  328.60 +RDATE:20001015T000000
  328.61 +END:STANDARD
  328.62 +BEGIN:STANDARD
  328.63 +TZOFFSETFROM:-0400
  328.64 +TZOFFSETTO:-0400
  328.65 +TZNAME:AMT
  328.66 +DTSTART:19880912T000000
  328.67 +RDATE:19880912T000000
  328.68 +RDATE:19990930T000000
  328.69 +END:STANDARD
  328.70 +END:VTIMEZONE
  328.71 +END:VCALENDAR
   329.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   329.2 +++ b/src/zoneinfo-global/America/Bogota.ics	Tue Feb 10 18:12:00 2015 +0100
   329.3 @@ -0,0 +1,37 @@
   329.4 +BEGIN:VCALENDAR
   329.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   329.6 +VERSION:2.0
   329.7 +BEGIN:VTIMEZONE
   329.8 +TZID:America/Bogota
   329.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Bogota
  329.10 +X-LIC-LOCATION:America/Bogota
  329.11 +BEGIN:STANDARD
  329.12 +TZOFFSETFROM:-045620
  329.13 +TZOFFSETTO:-045620
  329.14 +TZNAME:BMT
  329.15 +DTSTART:18840313T000000
  329.16 +RDATE:18840313T000000
  329.17 +END:STANDARD
  329.18 +BEGIN:STANDARD
  329.19 +TZOFFSETFROM:-045620
  329.20 +TZOFFSETTO:-0500
  329.21 +TZNAME:COT
  329.22 +DTSTART:19141123T000000
  329.23 +RDATE:19141123T000000
  329.24 +END:STANDARD
  329.25 +BEGIN:DAYLIGHT
  329.26 +TZOFFSETFROM:-0500
  329.27 +TZOFFSETTO:-0400
  329.28 +TZNAME:COST
  329.29 +DTSTART:19920503T000000
  329.30 +RDATE:19920503T000000
  329.31 +END:DAYLIGHT
  329.32 +BEGIN:STANDARD
  329.33 +TZOFFSETFROM:-0400
  329.34 +TZOFFSETTO:-0500
  329.35 +TZNAME:COT
  329.36 +DTSTART:19930404T000000
  329.37 +RDATE:19930404T000000
  329.38 +END:STANDARD
  329.39 +END:VTIMEZONE
  329.40 +END:VCALENDAR
   330.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   330.2 +++ b/src/zoneinfo-global/America/Boise.ics	Tue Feb 10 18:12:00 2015 +0100
   330.3 @@ -0,0 +1,167 @@
   330.4 +BEGIN:VCALENDAR
   330.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   330.6 +VERSION:2.0
   330.7 +BEGIN:VTIMEZONE
   330.8 +TZID:America/Boise
   330.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Boise
  330.10 +X-LIC-LOCATION:America/Boise
  330.11 +BEGIN:DAYLIGHT
  330.12 +TZOFFSETFROM:-0700
  330.13 +TZOFFSETTO:-0600
  330.14 +TZNAME:MDT
  330.15 +DTSTART:20070311T020000
  330.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  330.17 +END:DAYLIGHT
  330.18 +BEGIN:STANDARD
  330.19 +TZOFFSETFROM:-0600
  330.20 +TZOFFSETTO:-0700
  330.21 +TZNAME:MST
  330.22 +DTSTART:20071104T020000
  330.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  330.24 +END:STANDARD
  330.25 +BEGIN:STANDARD
  330.26 +TZOFFSETFROM:-074449
  330.27 +TZOFFSETTO:-0800
  330.28 +TZNAME:PST
  330.29 +DTSTART:18831118T121511
  330.30 +RDATE:18831118T121511
  330.31 +END:STANDARD
  330.32 +BEGIN:DAYLIGHT
  330.33 +TZOFFSETFROM:-0800
  330.34 +TZOFFSETTO:-0700
  330.35 +TZNAME:PDT
  330.36 +DTSTART:19180331T020000
  330.37 +RDATE:19180331T020000
  330.38 +RDATE:19190330T020000
  330.39 +END:DAYLIGHT
  330.40 +BEGIN:STANDARD
  330.41 +TZOFFSETFROM:-0700
  330.42 +TZOFFSETTO:-0800
  330.43 +TZNAME:PST
  330.44 +DTSTART:19181027T020000
  330.45 +RDATE:19181027T020000
  330.46 +RDATE:19191026T020000
  330.47 +END:STANDARD
  330.48 +BEGIN:STANDARD
  330.49 +TZOFFSETFROM:-0800
  330.50 +TZOFFSETTO:-0700
  330.51 +TZNAME:MST
  330.52 +DTSTART:19230513T020000
  330.53 +RDATE:19230513T020000
  330.54 +END:STANDARD
  330.55 +BEGIN:DAYLIGHT
  330.56 +TZOFFSETFROM:-0700
  330.57 +TZOFFSETTO:-0600
  330.58 +TZNAME:MWT
  330.59 +DTSTART:19420209T020000
  330.60 +RDATE:19420209T020000
  330.61 +END:DAYLIGHT
  330.62 +BEGIN:DAYLIGHT
  330.63 +TZOFFSETFROM:-0600
  330.64 +TZOFFSETTO:-0600
  330.65 +TZNAME:MPT
  330.66 +DTSTART:19450814T170000
  330.67 +RDATE:19450814T170000
  330.68 +END:DAYLIGHT
  330.69 +BEGIN:STANDARD
  330.70 +TZOFFSETFROM:-0600
  330.71 +TZOFFSETTO:-0700
  330.72 +TZNAME:MST
  330.73 +DTSTART:19450930T020000
  330.74 +RDATE:19450930T020000
  330.75 +RDATE:19671029T020000
  330.76 +RDATE:19681027T020000
  330.77 +RDATE:19691026T020000
  330.78 +RDATE:19701025T020000
  330.79 +RDATE:19711031T020000
  330.80 +RDATE:19721029T020000
  330.81 +RDATE:19731028T020000
  330.82 +RDATE:19741027T020000
  330.83 +RDATE:19751026T020000
  330.84 +RDATE:19761031T020000
  330.85 +RDATE:19771030T020000
  330.86 +RDATE:19781029T020000
  330.87 +RDATE:19791028T020000
  330.88 +RDATE:19801026T020000
  330.89 +RDATE:19811025T020000
  330.90 +RDATE:19821031T020000
  330.91 +RDATE:19831030T020000
  330.92 +RDATE:19841028T020000
  330.93 +RDATE:19851027T020000
  330.94 +RDATE:19861026T020000
  330.95 +RDATE:19871025T020000
  330.96 +RDATE:19881030T020000
  330.97 +RDATE:19891029T020000
  330.98 +RDATE:19901028T020000
  330.99 +RDATE:19911027T020000
 330.100 +RDATE:19921025T020000
 330.101 +RDATE:19931031T020000
 330.102 +RDATE:19941030T020000
 330.103 +RDATE:19951029T020000
 330.104 +RDATE:19961027T020000
 330.105 +RDATE:19971026T020000
 330.106 +RDATE:19981025T020000
 330.107 +RDATE:19991031T020000
 330.108 +RDATE:20001029T020000
 330.109 +RDATE:20011028T020000
 330.110 +RDATE:20021027T020000
 330.111 +RDATE:20031026T020000
 330.112 +RDATE:20041031T020000
 330.113 +RDATE:20051030T020000
 330.114 +RDATE:20061029T020000
 330.115 +END:STANDARD
 330.116 +BEGIN:DAYLIGHT
 330.117 +TZOFFSETFROM:-0700
 330.118 +TZOFFSETTO:-0600
 330.119 +TZNAME:MDT
 330.120 +DTSTART:19670430T020000
 330.121 +RDATE:19670430T020000
 330.122 +RDATE:19680428T020000
 330.123 +RDATE:19690427T020000
 330.124 +RDATE:19700426T020000
 330.125 +RDATE:19710425T020000
 330.126 +RDATE:19720430T020000
 330.127 +RDATE:19730429T020000
 330.128 +RDATE:19740203T020000
 330.129 +RDATE:19750223T020000
 330.130 +RDATE:19760425T020000
 330.131 +RDATE:19770424T020000
 330.132 +RDATE:19780430T020000
 330.133 +RDATE:19790429T020000
 330.134 +RDATE:19800427T020000
 330.135 +RDATE:19810426T020000
 330.136 +RDATE:19820425T020000
 330.137 +RDATE:19830424T020000
 330.138 +RDATE:19840429T020000
 330.139 +RDATE:19850428T020000
 330.140 +RDATE:19860427T020000
 330.141 +RDATE:19870405T020000
 330.142 +RDATE:19880403T020000
 330.143 +RDATE:19890402T020000
 330.144 +RDATE:19900401T020000
 330.145 +RDATE:19910407T020000
 330.146 +RDATE:19920405T020000
 330.147 +RDATE:19930404T020000
 330.148 +RDATE:19940403T020000
 330.149 +RDATE:19950402T020000
 330.150 +RDATE:19960407T020000
 330.151 +RDATE:19970406T020000
 330.152 +RDATE:19980405T020000
 330.153 +RDATE:19990404T020000
 330.154 +RDATE:20000402T020000
 330.155 +RDATE:20010401T020000
 330.156 +RDATE:20020407T020000
 330.157 +RDATE:20030406T020000
 330.158 +RDATE:20040404T020000
 330.159 +RDATE:20050403T020000
 330.160 +RDATE:20060402T020000
 330.161 +END:DAYLIGHT
 330.162 +BEGIN:STANDARD
 330.163 +TZOFFSETFROM:-0700
 330.164 +TZOFFSETTO:-0700
 330.165 +TZNAME:MST
 330.166 +DTSTART:19740101T000000
 330.167 +RDATE:19740101T000000
 330.168 +END:STANDARD
 330.169 +END:VTIMEZONE
 330.170 +END:VCALENDAR
   331.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   331.2 +++ b/src/zoneinfo-global/America/Cambridge_Bay.ics	Tue Feb 10 18:12:00 2015 +0100
   331.3 @@ -0,0 +1,156 @@
   331.4 +BEGIN:VCALENDAR
   331.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   331.6 +VERSION:2.0
   331.7 +BEGIN:VTIMEZONE
   331.8 +TZID:America/Cambridge_Bay
   331.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Cambridge_Bay
  331.10 +X-LIC-LOCATION:America/Cambridge_Bay
  331.11 +BEGIN:DAYLIGHT
  331.12 +TZOFFSETFROM:-0700
  331.13 +TZOFFSETTO:-0600
  331.14 +TZNAME:MDT
  331.15 +DTSTART:20070311T020000
  331.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  331.17 +END:DAYLIGHT
  331.18 +BEGIN:STANDARD
  331.19 +TZOFFSETFROM:-0600
  331.20 +TZOFFSETTO:-0700
  331.21 +TZNAME:MST
  331.22 +DTSTART:20071104T020000
  331.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  331.24 +END:STANDARD
  331.25 +BEGIN:STANDARD
  331.26 +TZOFFSETFROM:+0000
  331.27 +TZOFFSETTO:-0700
  331.28 +TZNAME:MST
  331.29 +DTSTART:19200101T000000
  331.30 +RDATE:19200101T000000
  331.31 +END:STANDARD
  331.32 +BEGIN:DAYLIGHT
  331.33 +TZOFFSETFROM:-0700
  331.34 +TZOFFSETTO:-0600
  331.35 +TZNAME:MWT
  331.36 +DTSTART:19420209T020000
  331.37 +RDATE:19420209T020000
  331.38 +END:DAYLIGHT
  331.39 +BEGIN:DAYLIGHT
  331.40 +TZOFFSETFROM:-0600
  331.41 +TZOFFSETTO:-0600
  331.42 +TZNAME:MPT
  331.43 +DTSTART:19450814T170000
  331.44 +RDATE:19450814T170000
  331.45 +END:DAYLIGHT
  331.46 +BEGIN:STANDARD
  331.47 +TZOFFSETFROM:-0600
  331.48 +TZOFFSETTO:-0700
  331.49 +TZNAME:MST
  331.50 +DTSTART:19450930T020000
  331.51 +RDATE:19450930T020000
  331.52 +RDATE:19801026T020000
  331.53 +RDATE:19811025T020000
  331.54 +RDATE:19821031T020000
  331.55 +RDATE:19831030T020000
  331.56 +RDATE:19841028T020000
  331.57 +RDATE:19851027T020000
  331.58 +RDATE:19861026T020000
  331.59 +RDATE:19871025T020000
  331.60 +RDATE:19881030T020000
  331.61 +RDATE:19891029T020000
  331.62 +RDATE:19901028T020000
  331.63 +RDATE:19911027T020000
  331.64 +RDATE:19921025T020000
  331.65 +RDATE:19931031T020000
  331.66 +RDATE:19941030T020000
  331.67 +RDATE:19951029T020000
  331.68 +RDATE:19961027T020000
  331.69 +RDATE:19971026T020000
  331.70 +RDATE:19981025T020000
  331.71 +RDATE:20011028T020000
  331.72 +RDATE:20021027T020000
  331.73 +RDATE:20031026T020000
  331.74 +RDATE:20041031T020000
  331.75 +RDATE:20051030T020000
  331.76 +RDATE:20061029T020000
  331.77 +END:STANDARD
  331.78 +BEGIN:DAYLIGHT
  331.79 +TZOFFSETFROM:-0700
  331.80 +TZOFFSETTO:-0500
  331.81 +TZNAME:MDDT
  331.82 +DTSTART:19650425T000000
  331.83 +RDATE:19650425T000000
  331.84 +END:DAYLIGHT
  331.85 +BEGIN:STANDARD
  331.86 +TZOFFSETFROM:-0500
  331.87 +TZOFFSETTO:-0700
  331.88 +TZNAME:MST
  331.89 +DTSTART:19651031T020000
  331.90 +RDATE:19651031T020000
  331.91 +END:STANDARD
  331.92 +BEGIN:DAYLIGHT
  331.93 +TZOFFSETFROM:-0700
  331.94 +TZOFFSETTO:-0600
  331.95 +TZNAME:MDT
  331.96 +DTSTART:19800427T020000
  331.97 +RDATE:19800427T020000
  331.98 +RDATE:19810426T020000
  331.99 +RDATE:19820425T020000
 331.100 +RDATE:19830424T020000
 331.101 +RDATE:19840429T020000
 331.102 +RDATE:19850428T020000
 331.103 +RDATE:19860427T020000
 331.104 +RDATE:19870405T020000
 331.105 +RDATE:19880403T020000
 331.106 +RDATE:19890402T020000
 331.107 +RDATE:19900401T020000
 331.108 +RDATE:19910407T020000
 331.109 +RDATE:19920405T020000
 331.110 +RDATE:19930404T020000
 331.111 +RDATE:19940403T020000
 331.112 +RDATE:19950402T020000
 331.113 +RDATE:19960407T020000
 331.114 +RDATE:19970406T020000
 331.115 +RDATE:19980405T020000
 331.116 +RDATE:19990404T020000
 331.117 +RDATE:20020407T020000
 331.118 +RDATE:20030406T020000
 331.119 +RDATE:20040404T020000
 331.120 +RDATE:20050403T020000
 331.121 +RDATE:20060402T020000
 331.122 +END:DAYLIGHT
 331.123 +BEGIN:STANDARD
 331.124 +TZOFFSETFROM:-0600
 331.125 +TZOFFSETTO:-0600
 331.126 +TZNAME:CST
 331.127 +DTSTART:19991031T020000
 331.128 +RDATE:19991031T020000
 331.129 +END:STANDARD
 331.130 +BEGIN:DAYLIGHT
 331.131 +TZOFFSETFROM:-0600
 331.132 +TZOFFSETTO:-0500
 331.133 +TZNAME:CDT
 331.134 +DTSTART:20000402T020000
 331.135 +RDATE:20000402T020000
 331.136 +END:DAYLIGHT
 331.137 +BEGIN:STANDARD
 331.138 +TZOFFSETFROM:-0500
 331.139 +TZOFFSETTO:-0500
 331.140 +TZNAME:EST
 331.141 +DTSTART:20001029T020000
 331.142 +RDATE:20001029T020000
 331.143 +END:STANDARD
 331.144 +BEGIN:STANDARD
 331.145 +TZOFFSETFROM:-0500
 331.146 +TZOFFSETTO:-0600
 331.147 +TZNAME:CST
 331.148 +DTSTART:20001105T000000
 331.149 +RDATE:20001105T000000
 331.150 +END:STANDARD
 331.151 +BEGIN:DAYLIGHT
 331.152 +TZOFFSETFROM:-0600
 331.153 +TZOFFSETTO:-0600
 331.154 +TZNAME:MDT
 331.155 +DTSTART:20010401T020000
 331.156 +RDATE:20010401T020000
 331.157 +END:DAYLIGHT
 331.158 +END:VTIMEZONE
 331.159 +END:VCALENDAR
   332.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   332.2 +++ b/src/zoneinfo-global/America/Campo_Grande.ics	Tue Feb 10 18:12:00 2015 +0100
   332.3 @@ -0,0 +1,145 @@
   332.4 +BEGIN:VCALENDAR
   332.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   332.6 +VERSION:2.0
   332.7 +BEGIN:VTIMEZONE
   332.8 +TZID:America/Campo_Grande
   332.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Campo_Grande
  332.10 +X-LIC-LOCATION:America/Campo_Grande
  332.11 +BEGIN:DAYLIGHT
  332.12 +TZOFFSETFROM:-0400
  332.13 +TZOFFSETTO:-0300
  332.14 +TZNAME:AMST
  332.15 +DTSTART:20081019T000000
  332.16 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=3SU
  332.17 +END:DAYLIGHT
  332.18 +BEGIN:STANDARD
  332.19 +TZOFFSETFROM:-0400
  332.20 +TZOFFSETTO:-0400
  332.21 +TZNAME:AMT
  332.22 +DTSTART:20380221T000000
  332.23 +RRULE:FREQ=YEARLY;BYMONTH=2;BYDAY=3SU
  332.24 +END:STANDARD
  332.25 +BEGIN:STANDARD
  332.26 +TZOFFSETFROM:-033828
  332.27 +TZOFFSETTO:-0400
  332.28 +TZNAME:AMT
  332.29 +DTSTART:19140101T000000
  332.30 +RDATE:19140101T000000
  332.31 +END:STANDARD
  332.32 +BEGIN:DAYLIGHT
  332.33 +TZOFFSETFROM:-0400
  332.34 +TZOFFSETTO:-0300
  332.35 +TZNAME:AMST
  332.36 +DTSTART:19311003T110000
  332.37 +RDATE:19311003T110000
  332.38 +RDATE:19321003T000000
  332.39 +RDATE:19491201T000000
  332.40 +RDATE:19501201T000000
  332.41 +RDATE:19511201T000000
  332.42 +RDATE:19521201T000000
  332.43 +RDATE:19631209T000000
  332.44 +RDATE:19650131T000000
  332.45 +RDATE:19651201T000000
  332.46 +RDATE:19661101T000000
  332.47 +RDATE:19671101T000000
  332.48 +RDATE:19851102T000000
  332.49 +RDATE:19861025T000000
  332.50 +RDATE:19871025T000000
  332.51 +RDATE:19881016T000000
  332.52 +RDATE:19891015T000000
  332.53 +RDATE:19901021T000000
  332.54 +RDATE:19911020T000000
  332.55 +RDATE:19921025T000000
  332.56 +RDATE:19931017T000000
  332.57 +RDATE:19941016T000000
  332.58 +RDATE:19951015T000000
  332.59 +RDATE:19961006T000000
  332.60 +RDATE:19971006T000000
  332.61 +RDATE:19981011T000000
  332.62 +RDATE:19991003T000000
  332.63 +RDATE:20001008T000000
  332.64 +RDATE:20011014T000000
  332.65 +RDATE:20021103T000000
  332.66 +RDATE:20031019T000000
  332.67 +RDATE:20041102T000000
  332.68 +RDATE:20051016T000000
  332.69 +RDATE:20061105T000000
  332.70 +RDATE:20071014T000000
  332.71 +END:DAYLIGHT
  332.72 +BEGIN:STANDARD
  332.73 +TZOFFSETFROM:-0300
  332.74 +TZOFFSETTO:-0400
  332.75 +TZNAME:AMT
  332.76 +DTSTART:19320401T000000
  332.77 +RDATE:19320401T000000
  332.78 +RDATE:19330401T000000
  332.79 +RDATE:19500416T010000
  332.80 +RDATE:19510401T000000
  332.81 +RDATE:19520401T000000
  332.82 +RDATE:19530301T000000
  332.83 +RDATE:19640301T000000
  332.84 +RDATE:19650331T000000
  332.85 +RDATE:19660301T000000
  332.86 +RDATE:19670301T000000
  332.87 +RDATE:19680301T000000
  332.88 +RDATE:19860315T000000
  332.89 +RDATE:19870214T000000
  332.90 +RDATE:19880207T000000
  332.91 +RDATE:19890129T000000
  332.92 +RDATE:19900211T000000
  332.93 +RDATE:19910217T000000
  332.94 +RDATE:19920209T000000
  332.95 +RDATE:19930131T000000
  332.96 +RDATE:19940220T000000
  332.97 +RDATE:19950219T000000
  332.98 +RDATE:19960211T000000
  332.99 +RDATE:19970216T000000
 332.100 +RDATE:19980301T000000
 332.101 +RDATE:19990221T000000
 332.102 +RDATE:20000227T000000
 332.103 +RDATE:20010218T000000
 332.104 +RDATE:20020217T000000
 332.105 +RDATE:20030216T000000
 332.106 +RDATE:20040215T000000
 332.107 +RDATE:20050220T000000
 332.108 +RDATE:20060219T000000
 332.109 +RDATE:20070225T000000
 332.110 +RDATE:20080217T000000
 332.111 +RDATE:20090215T000000
 332.112 +RDATE:20100221T000000
 332.113 +RDATE:20110220T000000
 332.114 +RDATE:20120226T000000
 332.115 +RDATE:20130217T000000
 332.116 +RDATE:20140216T000000
 332.117 +END:STANDARD
 332.118 +BEGIN:STANDARD
 332.119 +TZOFFSETFROM:-0400
 332.120 +TZOFFSETTO:-0400
 332.121 +TZNAME:AMT
 332.122 +DTSTART:20150222T000000
 332.123 +RDATE:20150222T000000
 332.124 +RDATE:20160221T000000
 332.125 +RDATE:20170219T000000
 332.126 +RDATE:20180218T000000
 332.127 +RDATE:20190217T000000
 332.128 +RDATE:20200216T000000
 332.129 +RDATE:20210221T000000
 332.130 +RDATE:20220220T000000
 332.131 +RDATE:20230226T000000
 332.132 +RDATE:20240218T000000
 332.133 +RDATE:20250216T000000
 332.134 +RDATE:20260222T000000
 332.135 +RDATE:20270221T000000
 332.136 +RDATE:20280220T000000
 332.137 +RDATE:20290218T000000
 332.138 +RDATE:20300217T000000
 332.139 +RDATE:20310216T000000
 332.140 +RDATE:20320215T000000
 332.141 +RDATE:20330220T000000
 332.142 +RDATE:20340226T000000
 332.143 +RDATE:20350218T000000
 332.144 +RDATE:20360217T000000
 332.145 +RDATE:20370222T000000
 332.146 +END:STANDARD
 332.147 +END:VTIMEZONE
 332.148 +END:VCALENDAR
   333.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   333.2 +++ b/src/zoneinfo-global/America/Cancun.ics	Tue Feb 10 18:12:00 2015 +0100
   333.3 @@ -0,0 +1,80 @@
   333.4 +BEGIN:VCALENDAR
   333.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   333.6 +VERSION:2.0
   333.7 +BEGIN:VTIMEZONE
   333.8 +TZID:America/Cancun
   333.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Cancun
  333.10 +X-LIC-LOCATION:America/Cancun
  333.11 +BEGIN:DAYLIGHT
  333.12 +TZOFFSETFROM:-0600
  333.13 +TZOFFSETTO:-0500
  333.14 +TZNAME:CDT
  333.15 +DTSTART:20020407T020000
  333.16 +RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU
  333.17 +END:DAYLIGHT
  333.18 +BEGIN:STANDARD
  333.19 +TZOFFSETFROM:-0500
  333.20 +TZOFFSETTO:-0600
  333.21 +TZNAME:CST
  333.22 +DTSTART:20021027T020000
  333.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  333.24 +END:STANDARD
  333.25 +BEGIN:STANDARD
  333.26 +TZOFFSETFROM:-054704
  333.27 +TZOFFSETTO:-0600
  333.28 +TZNAME:CST
  333.29 +DTSTART:19220101T001256
  333.30 +RDATE:19220101T001256
  333.31 +END:STANDARD
  333.32 +BEGIN:STANDARD
  333.33 +TZOFFSETFROM:-0600
  333.34 +TZOFFSETTO:-0500
  333.35 +TZNAME:EST
  333.36 +DTSTART:19811223T000000
  333.37 +RDATE:19811223T000000
  333.38 +END:STANDARD
  333.39 +BEGIN:DAYLIGHT
  333.40 +TZOFFSETFROM:-0500
  333.41 +TZOFFSETTO:-0400
  333.42 +TZNAME:EDT
  333.43 +DTSTART:19960407T020000
  333.44 +RDATE:19960407T020000
  333.45 +RDATE:19970406T020000
  333.46 +RDATE:19980405T020000
  333.47 +END:DAYLIGHT
  333.48 +BEGIN:STANDARD
  333.49 +TZOFFSETFROM:-0400
  333.50 +TZOFFSETTO:-0500
  333.51 +TZNAME:EST
  333.52 +DTSTART:19961027T020000
  333.53 +RDATE:19961027T020000
  333.54 +RDATE:19971026T020000
  333.55 +END:STANDARD
  333.56 +BEGIN:DAYLIGHT
  333.57 +TZOFFSETFROM:-0400
  333.58 +TZOFFSETTO:-0500
  333.59 +TZNAME:CDT
  333.60 +DTSTART:19980802T020000
  333.61 +RDATE:19980802T020000
  333.62 +END:DAYLIGHT
  333.63 +BEGIN:STANDARD
  333.64 +TZOFFSETFROM:-0500
  333.65 +TZOFFSETTO:-0600
  333.66 +TZNAME:CST
  333.67 +DTSTART:19981025T020000
  333.68 +RDATE:19981025T020000
  333.69 +RDATE:19991031T020000
  333.70 +RDATE:20001029T020000
  333.71 +RDATE:20010930T020000
  333.72 +END:STANDARD
  333.73 +BEGIN:DAYLIGHT
  333.74 +TZOFFSETFROM:-0600
  333.75 +TZOFFSETTO:-0500
  333.76 +TZNAME:CDT
  333.77 +DTSTART:19990404T020000
  333.78 +RDATE:19990404T020000
  333.79 +RDATE:20000402T020000
  333.80 +RDATE:20010506T020000
  333.81 +END:DAYLIGHT
  333.82 +END:VTIMEZONE
  333.83 +END:VCALENDAR
   334.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   334.2 +++ b/src/zoneinfo-global/America/Caracas.ics	Tue Feb 10 18:12:00 2015 +0100
   334.3 @@ -0,0 +1,37 @@
   334.4 +BEGIN:VCALENDAR
   334.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   334.6 +VERSION:2.0
   334.7 +BEGIN:VTIMEZONE
   334.8 +TZID:America/Caracas
   334.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Caracas
  334.10 +X-LIC-LOCATION:America/Caracas
  334.11 +BEGIN:STANDARD
  334.12 +TZOFFSETFROM:-042744
  334.13 +TZOFFSETTO:-042740
  334.14 +TZNAME:CMT
  334.15 +DTSTART:18900101T000000
  334.16 +RDATE:18900101T000000
  334.17 +END:STANDARD
  334.18 +BEGIN:STANDARD
  334.19 +TZOFFSETFROM:-042740
  334.20 +TZOFFSETTO:-0430
  334.21 +TZNAME:VET
  334.22 +DTSTART:19120212T000000
  334.23 +RDATE:19120212T000000
  334.24 +END:STANDARD
  334.25 +BEGIN:STANDARD
  334.26 +TZOFFSETFROM:-0430
  334.27 +TZOFFSETTO:-0400
  334.28 +TZNAME:VET
  334.29 +DTSTART:19650101T000000
  334.30 +RDATE:19650101T000000
  334.31 +END:STANDARD
  334.32 +BEGIN:STANDARD
  334.33 +TZOFFSETFROM:-0400
  334.34 +TZOFFSETTO:-0430
  334.35 +TZNAME:VET
  334.36 +DTSTART:20071209T030000
  334.37 +RDATE:20071209T030000
  334.38 +END:STANDARD
  334.39 +END:VTIMEZONE
  334.40 +END:VCALENDAR
   335.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   335.2 +++ b/src/zoneinfo-global/America/Cayenne.ics	Tue Feb 10 18:12:00 2015 +0100
   335.3 @@ -0,0 +1,23 @@
   335.4 +BEGIN:VCALENDAR
   335.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   335.6 +VERSION:2.0
   335.7 +BEGIN:VTIMEZONE
   335.8 +TZID:America/Cayenne
   335.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Cayenne
  335.10 +X-LIC-LOCATION:America/Cayenne
  335.11 +BEGIN:STANDARD
  335.12 +TZOFFSETFROM:-032920
  335.13 +TZOFFSETTO:-0400
  335.14 +TZNAME:GFT
  335.15 +DTSTART:19110701T000000
  335.16 +RDATE:19110701T000000
  335.17 +END:STANDARD
  335.18 +BEGIN:STANDARD
  335.19 +TZOFFSETFROM:-0400
  335.20 +TZOFFSETTO:-0300
  335.21 +TZNAME:GFT
  335.22 +DTSTART:19671001T000000
  335.23 +RDATE:19671001T000000
  335.24 +END:STANDARD
  335.25 +END:VTIMEZONE
  335.26 +END:VCALENDAR
   336.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   336.2 +++ b/src/zoneinfo-global/America/Cayman.ics	Tue Feb 10 18:12:00 2015 +0100
   336.3 @@ -0,0 +1,23 @@
   336.4 +BEGIN:VCALENDAR
   336.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   336.6 +VERSION:2.0
   336.7 +BEGIN:VTIMEZONE
   336.8 +TZID:America/Cayman
   336.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Cayman
  336.10 +X-LIC-LOCATION:America/Cayman
  336.11 +BEGIN:STANDARD
  336.12 +TZOFFSETFROM:-052532
  336.13 +TZOFFSETTO:-050712
  336.14 +TZNAME:KMT
  336.15 +DTSTART:18900101T000000
  336.16 +RDATE:18900101T000000
  336.17 +END:STANDARD
  336.18 +BEGIN:STANDARD
  336.19 +TZOFFSETFROM:-050712
  336.20 +TZOFFSETTO:-0500
  336.21 +TZNAME:EST
  336.22 +DTSTART:19120201T000000
  336.23 +RDATE:19120201T000000
  336.24 +END:STANDARD
  336.25 +END:VTIMEZONE
  336.26 +END:VCALENDAR
   337.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   337.2 +++ b/src/zoneinfo-global/America/Chicago.ics	Tue Feb 10 18:12:00 2015 +0100
   337.3 @@ -0,0 +1,243 @@
   337.4 +BEGIN:VCALENDAR
   337.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   337.6 +VERSION:2.0
   337.7 +BEGIN:VTIMEZONE
   337.8 +TZID:America/Chicago
   337.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Chicago
  337.10 +X-LIC-LOCATION:America/Chicago
  337.11 +BEGIN:DAYLIGHT
  337.12 +TZOFFSETFROM:-0600
  337.13 +TZOFFSETTO:-0500
  337.14 +TZNAME:CDT
  337.15 +DTSTART:20070311T020000
  337.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  337.17 +END:DAYLIGHT
  337.18 +BEGIN:STANDARD
  337.19 +TZOFFSETFROM:-0500
  337.20 +TZOFFSETTO:-0600
  337.21 +TZNAME:CST
  337.22 +DTSTART:20071104T020000
  337.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  337.24 +END:STANDARD
  337.25 +BEGIN:STANDARD
  337.26 +TZOFFSETFROM:-055036
  337.27 +TZOFFSETTO:-0600
  337.28 +TZNAME:CST
  337.29 +DTSTART:18831118T120924
  337.30 +RDATE:18831118T120924
  337.31 +END:STANDARD
  337.32 +BEGIN:DAYLIGHT
  337.33 +TZOFFSETFROM:-0600
  337.34 +TZOFFSETTO:-0500
  337.35 +TZNAME:CDT
  337.36 +DTSTART:19180331T020000
  337.37 +RDATE:19180331T020000
  337.38 +RDATE:19190330T020000
  337.39 +RDATE:19200613T020000
  337.40 +RDATE:19210327T020000
  337.41 +RDATE:19220430T020000
  337.42 +RDATE:19230429T020000
  337.43 +RDATE:19240427T020000
  337.44 +RDATE:19250426T020000
  337.45 +RDATE:19260425T020000
  337.46 +RDATE:19270424T020000
  337.47 +RDATE:19280429T020000
  337.48 +RDATE:19290428T020000
  337.49 +RDATE:19300427T020000
  337.50 +RDATE:19310426T020000
  337.51 +RDATE:19320424T020000
  337.52 +RDATE:19330430T020000
  337.53 +RDATE:19340429T020000
  337.54 +RDATE:19350428T020000
  337.55 +RDATE:19370425T020000
  337.56 +RDATE:19380424T020000
  337.57 +RDATE:19390430T020000
  337.58 +RDATE:19400428T020000
  337.59 +RDATE:19410427T020000
  337.60 +RDATE:19460428T020000
  337.61 +RDATE:19470427T020000
  337.62 +RDATE:19480425T020000
  337.63 +RDATE:19490424T020000
  337.64 +RDATE:19500430T020000
  337.65 +RDATE:19510429T020000
  337.66 +RDATE:19520427T020000
  337.67 +RDATE:19530426T020000
  337.68 +RDATE:19540425T020000
  337.69 +RDATE:19550424T020000
  337.70 +RDATE:19560429T020000
  337.71 +RDATE:19570428T020000
  337.72 +RDATE:19580427T020000
  337.73 +RDATE:19590426T020000
  337.74 +RDATE:19600424T020000
  337.75 +RDATE:19610430T020000
  337.76 +RDATE:19620429T020000
  337.77 +RDATE:19630428T020000
  337.78 +RDATE:19640426T020000
  337.79 +RDATE:19650425T020000
  337.80 +RDATE:19660424T020000
  337.81 +RDATE:19670430T020000
  337.82 +RDATE:19680428T020000
  337.83 +RDATE:19690427T020000
  337.84 +RDATE:19700426T020000
  337.85 +RDATE:19710425T020000
  337.86 +RDATE:19720430T020000
  337.87 +RDATE:19730429T020000
  337.88 +RDATE:19740106T020000
  337.89 +RDATE:19750223T020000
  337.90 +RDATE:19760425T020000
  337.91 +RDATE:19770424T020000
  337.92 +RDATE:19780430T020000
  337.93 +RDATE:19790429T020000
  337.94 +RDATE:19800427T020000
  337.95 +RDATE:19810426T020000
  337.96 +RDATE:19820425T020000
  337.97 +RDATE:19830424T020000
  337.98 +RDATE:19840429T020000
  337.99 +RDATE:19850428T020000
 337.100 +RDATE:19860427T020000
 337.101 +RDATE:19870405T020000
 337.102 +RDATE:19880403T020000
 337.103 +RDATE:19890402T020000
 337.104 +RDATE:19900401T020000
 337.105 +RDATE:19910407T020000
 337.106 +RDATE:19920405T020000
 337.107 +RDATE:19930404T020000
 337.108 +RDATE:19940403T020000
 337.109 +RDATE:19950402T020000
 337.110 +RDATE:19960407T020000
 337.111 +RDATE:19970406T020000
 337.112 +RDATE:19980405T020000
 337.113 +RDATE:19990404T020000
 337.114 +RDATE:20000402T020000
 337.115 +RDATE:20010401T020000
 337.116 +RDATE:20020407T020000
 337.117 +RDATE:20030406T020000
 337.118 +RDATE:20040404T020000
 337.119 +RDATE:20050403T020000
 337.120 +RDATE:20060402T020000
 337.121 +END:DAYLIGHT
 337.122 +BEGIN:STANDARD
 337.123 +TZOFFSETFROM:-0500
 337.124 +TZOFFSETTO:-0600
 337.125 +TZNAME:CST
 337.126 +DTSTART:19181027T020000
 337.127 +RDATE:19181027T020000
 337.128 +RDATE:19191026T020000
 337.129 +RDATE:19201031T020000
 337.130 +RDATE:19211030T020000
 337.131 +RDATE:19220924T020000
 337.132 +RDATE:19230930T020000
 337.133 +RDATE:19240928T020000
 337.134 +RDATE:19250927T020000
 337.135 +RDATE:19260926T020000
 337.136 +RDATE:19270925T020000
 337.137 +RDATE:19280930T020000
 337.138 +RDATE:19290929T020000
 337.139 +RDATE:19300928T020000
 337.140 +RDATE:19310927T020000
 337.141 +RDATE:19320925T020000
 337.142 +RDATE:19330924T020000
 337.143 +RDATE:19340930T020000
 337.144 +RDATE:19350929T020000
 337.145 +RDATE:19361115T020000
 337.146 +RDATE:19370926T020000
 337.147 +RDATE:19380925T020000
 337.148 +RDATE:19390924T020000
 337.149 +RDATE:19400929T020000
 337.150 +RDATE:19410928T020000
 337.151 +RDATE:19450930T020000
 337.152 +RDATE:19460929T020000
 337.153 +RDATE:19470928T020000
 337.154 +RDATE:19480926T020000
 337.155 +RDATE:19490925T020000
 337.156 +RDATE:19500924T020000
 337.157 +RDATE:19510930T020000
 337.158 +RDATE:19520928T020000
 337.159 +RDATE:19530927T020000
 337.160 +RDATE:19540926T020000
 337.161 +RDATE:19551030T020000
 337.162 +RDATE:19561028T020000
 337.163 +RDATE:19571027T020000
 337.164 +RDATE:19581026T020000
 337.165 +RDATE:19591025T020000
 337.166 +RDATE:19601030T020000
 337.167 +RDATE:19611029T020000
 337.168 +RDATE:19621028T020000
 337.169 +RDATE:19631027T020000
 337.170 +RDATE:19641025T020000
 337.171 +RDATE:19651031T020000
 337.172 +RDATE:19661030T020000
 337.173 +RDATE:19671029T020000
 337.174 +RDATE:19681027T020000
 337.175 +RDATE:19691026T020000
 337.176 +RDATE:19701025T020000
 337.177 +RDATE:19711031T020000
 337.178 +RDATE:19721029T020000
 337.179 +RDATE:19731028T020000
 337.180 +RDATE:19741027T020000
 337.181 +RDATE:19751026T020000
 337.182 +RDATE:19761031T020000
 337.183 +RDATE:19771030T020000
 337.184 +RDATE:19781029T020000
 337.185 +RDATE:19791028T020000
 337.186 +RDATE:19801026T020000
 337.187 +RDATE:19811025T020000
 337.188 +RDATE:19821031T020000
 337.189 +RDATE:19831030T020000
 337.190 +RDATE:19841028T020000
 337.191 +RDATE:19851027T020000
 337.192 +RDATE:19861026T020000
 337.193 +RDATE:19871025T020000
 337.194 +RDATE:19881030T020000
 337.195 +RDATE:19891029T020000
 337.196 +RDATE:19901028T020000
 337.197 +RDATE:19911027T020000
 337.198 +RDATE:19921025T020000
 337.199 +RDATE:19931031T020000
 337.200 +RDATE:19941030T020000
 337.201 +RDATE:19951029T020000
 337.202 +RDATE:19961027T020000
 337.203 +RDATE:19971026T020000
 337.204 +RDATE:19981025T020000
 337.205 +RDATE:19991031T020000
 337.206 +RDATE:20001029T020000
 337.207 +RDATE:20011028T020000
 337.208 +RDATE:20021027T020000
 337.209 +RDATE:20031026T020000
 337.210 +RDATE:20041031T020000
 337.211 +RDATE:20051030T020000
 337.212 +RDATE:20061029T020000
 337.213 +END:STANDARD
 337.214 +BEGIN:STANDARD
 337.215 +TZOFFSETFROM:-0600
 337.216 +TZOFFSETTO:-0600
 337.217 +TZNAME:CST
 337.218 +DTSTART:19200101T000000
 337.219 +RDATE:19200101T000000
 337.220 +RDATE:19420101T000000
 337.221 +RDATE:19460101T000000
 337.222 +RDATE:19670101T000000
 337.223 +END:STANDARD
 337.224 +BEGIN:STANDARD
 337.225 +TZOFFSETFROM:-0600
 337.226 +TZOFFSETTO:-0500
 337.227 +TZNAME:EST
 337.228 +DTSTART:19360301T020000
 337.229 +RDATE:19360301T020000
 337.230 +END:STANDARD
 337.231 +BEGIN:DAYLIGHT
 337.232 +TZOFFSETFROM:-0600
 337.233 +TZOFFSETTO:-0500
 337.234 +TZNAME:CWT
 337.235 +DTSTART:19420209T020000
 337.236 +RDATE:19420209T020000
 337.237 +END:DAYLIGHT
 337.238 +BEGIN:DAYLIGHT
 337.239 +TZOFFSETFROM:-0500
 337.240 +TZOFFSETTO:-0500
 337.241 +TZNAME:CPT
 337.242 +DTSTART:19450814T180000
 337.243 +RDATE:19450814T180000
 337.244 +END:DAYLIGHT
 337.245 +END:VTIMEZONE
 337.246 +END:VCALENDAR
   338.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   338.2 +++ b/src/zoneinfo-global/America/Chihuahua.ics	Tue Feb 10 18:12:00 2015 +0100
   338.3 @@ -0,0 +1,91 @@
   338.4 +BEGIN:VCALENDAR
   338.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   338.6 +VERSION:2.0
   338.7 +BEGIN:VTIMEZONE
   338.8 +TZID:America/Chihuahua
   338.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Chihuahua
  338.10 +X-LIC-LOCATION:America/Chihuahua
  338.11 +BEGIN:DAYLIGHT
  338.12 +TZOFFSETFROM:-0700
  338.13 +TZOFFSETTO:-0600
  338.14 +TZNAME:MDT
  338.15 +DTSTART:20020407T020000
  338.16 +RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU
  338.17 +END:DAYLIGHT
  338.18 +BEGIN:STANDARD
  338.19 +TZOFFSETFROM:-0600
  338.20 +TZOFFSETTO:-0700
  338.21 +TZNAME:MST
  338.22 +DTSTART:20021027T020000
  338.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  338.24 +END:STANDARD
  338.25 +BEGIN:STANDARD
  338.26 +TZOFFSETFROM:-070420
  338.27 +TZOFFSETTO:-0700
  338.28 +TZNAME:MST
  338.29 +DTSTART:19211231T235540
  338.30 +RDATE:19211231T235540
  338.31 +END:STANDARD
  338.32 +BEGIN:STANDARD
  338.33 +TZOFFSETFROM:-0700
  338.34 +TZOFFSETTO:-0600
  338.35 +TZNAME:CST
  338.36 +DTSTART:19270610T230000
  338.37 +RDATE:19270610T230000
  338.38 +RDATE:19310501T230000
  338.39 +RDATE:19320401T000000
  338.40 +END:STANDARD
  338.41 +BEGIN:STANDARD
  338.42 +TZOFFSETFROM:-0600
  338.43 +TZOFFSETTO:-0700
  338.44 +TZNAME:MST
  338.45 +DTSTART:19301115T000000
  338.46 +RDATE:19301115T000000
  338.47 +RDATE:19311001T000000
  338.48 +RDATE:19981025T020000
  338.49 +RDATE:19991031T020000
  338.50 +RDATE:20001029T020000
  338.51 +RDATE:20010930T020000
  338.52 +END:STANDARD
  338.53 +BEGIN:STANDARD
  338.54 +TZOFFSETFROM:-0600
  338.55 +TZOFFSETTO:-0600
  338.56 +TZNAME:CST
  338.57 +DTSTART:19960101T000000
  338.58 +RDATE:19960101T000000
  338.59 +RDATE:19980101T000000
  338.60 +END:STANDARD
  338.61 +BEGIN:DAYLIGHT
  338.62 +TZOFFSETFROM:-0600
  338.63 +TZOFFSETTO:-0500
  338.64 +TZNAME:CDT
  338.65 +DTSTART:19960407T020000
  338.66 +RDATE:19960407T020000
  338.67 +RDATE:19970406T020000
  338.68 +END:DAYLIGHT
  338.69 +BEGIN:STANDARD
  338.70 +TZOFFSETFROM:-0500
  338.71 +TZOFFSETTO:-0600
  338.72 +TZNAME:CST
  338.73 +DTSTART:19961027T020000
  338.74 +RDATE:19961027T020000
  338.75 +RDATE:19971026T020000
  338.76 +END:STANDARD
  338.77 +BEGIN:DAYLIGHT
  338.78 +TZOFFSETFROM:-0600
  338.79 +TZOFFSETTO:-0600
  338.80 +TZNAME:MDT
  338.81 +DTSTART:19980405T020000
  338.82 +RDATE:19980405T020000
  338.83 +END:DAYLIGHT
  338.84 +BEGIN:DAYLIGHT
  338.85 +TZOFFSETFROM:-0700
  338.86 +TZOFFSETTO:-0600
  338.87 +TZNAME:MDT
  338.88 +DTSTART:19990404T020000
  338.89 +RDATE:19990404T020000
  338.90 +RDATE:20000402T020000
  338.91 +RDATE:20010506T020000
  338.92 +END:DAYLIGHT
  338.93 +END:VTIMEZONE
  338.94 +END:VCALENDAR
   339.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   339.2 +++ b/src/zoneinfo-global/America/Costa_Rica.ics	Tue Feb 10 18:12:00 2015 +0100
   339.3 @@ -0,0 +1,43 @@
   339.4 +BEGIN:VCALENDAR
   339.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   339.6 +VERSION:2.0
   339.7 +BEGIN:VTIMEZONE
   339.8 +TZID:America/Costa_Rica
   339.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Costa_Rica
  339.10 +X-LIC-LOCATION:America/Costa_Rica
  339.11 +BEGIN:STANDARD
  339.12 +TZOFFSETFROM:-053620
  339.13 +TZOFFSETTO:-053620
  339.14 +TZNAME:SJMT
  339.15 +DTSTART:18900101T000000
  339.16 +RDATE:18900101T000000
  339.17 +END:STANDARD
  339.18 +BEGIN:STANDARD
  339.19 +TZOFFSETFROM:-053620
  339.20 +TZOFFSETTO:-0600
  339.21 +TZNAME:CST
  339.22 +DTSTART:19210115T000000
  339.23 +RDATE:19210115T000000
  339.24 +END:STANDARD
  339.25 +BEGIN:DAYLIGHT
  339.26 +TZOFFSETFROM:-0600
  339.27 +TZOFFSETTO:-0500
  339.28 +TZNAME:CDT
  339.29 +DTSTART:19790225T000000
  339.30 +RDATE:19790225T000000
  339.31 +RDATE:19800224T000000
  339.32 +RDATE:19910119T000000
  339.33 +RDATE:19920118T000000
  339.34 +END:DAYLIGHT
  339.35 +BEGIN:STANDARD
  339.36 +TZOFFSETFROM:-0500
  339.37 +TZOFFSETTO:-0600
  339.38 +TZNAME:CST
  339.39 +DTSTART:19790603T000000
  339.40 +RDATE:19790603T000000
  339.41 +RDATE:19800601T000000
  339.42 +RDATE:19910701T000000
  339.43 +RDATE:19920315T000000
  339.44 +END:STANDARD
  339.45 +END:VTIMEZONE
  339.46 +END:VCALENDAR
   340.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   340.2 +++ b/src/zoneinfo-global/America/Cuiaba.ics	Tue Feb 10 18:12:00 2015 +0100
   340.3 @@ -0,0 +1,145 @@
   340.4 +BEGIN:VCALENDAR
   340.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   340.6 +VERSION:2.0
   340.7 +BEGIN:VTIMEZONE
   340.8 +TZID:America/Cuiaba
   340.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Cuiaba
  340.10 +X-LIC-LOCATION:America/Cuiaba
  340.11 +BEGIN:DAYLIGHT
  340.12 +TZOFFSETFROM:-0400
  340.13 +TZOFFSETTO:-0300
  340.14 +TZNAME:AMST
  340.15 +DTSTART:20081019T000000
  340.16 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=3SU
  340.17 +END:DAYLIGHT
  340.18 +BEGIN:STANDARD
  340.19 +TZOFFSETFROM:-0400
  340.20 +TZOFFSETTO:-0400
  340.21 +TZNAME:AMT
  340.22 +DTSTART:20380221T000000
  340.23 +RRULE:FREQ=YEARLY;BYMONTH=2;BYDAY=3SU
  340.24 +END:STANDARD
  340.25 +BEGIN:STANDARD
  340.26 +TZOFFSETFROM:-034420
  340.27 +TZOFFSETTO:-0400
  340.28 +TZNAME:AMT
  340.29 +DTSTART:19140101T000000
  340.30 +RDATE:19140101T000000
  340.31 +END:STANDARD
  340.32 +BEGIN:DAYLIGHT
  340.33 +TZOFFSETFROM:-0400
  340.34 +TZOFFSETTO:-0300
  340.35 +TZNAME:AMST
  340.36 +DTSTART:19311003T110000
  340.37 +RDATE:19311003T110000
  340.38 +RDATE:19321003T000000
  340.39 +RDATE:19491201T000000
  340.40 +RDATE:19501201T000000
  340.41 +RDATE:19511201T000000
  340.42 +RDATE:19521201T000000
  340.43 +RDATE:19631209T000000
  340.44 +RDATE:19650131T000000
  340.45 +RDATE:19651201T000000
  340.46 +RDATE:19661101T000000
  340.47 +RDATE:19671101T000000
  340.48 +RDATE:19851102T000000
  340.49 +RDATE:19861025T000000
  340.50 +RDATE:19871025T000000
  340.51 +RDATE:19881016T000000
  340.52 +RDATE:19891015T000000
  340.53 +RDATE:19901021T000000
  340.54 +RDATE:19911020T000000
  340.55 +RDATE:19921025T000000
  340.56 +RDATE:19931017T000000
  340.57 +RDATE:19941016T000000
  340.58 +RDATE:19951015T000000
  340.59 +RDATE:19961006T000000
  340.60 +RDATE:19971006T000000
  340.61 +RDATE:19981011T000000
  340.62 +RDATE:19991003T000000
  340.63 +RDATE:20001008T000000
  340.64 +RDATE:20011014T000000
  340.65 +RDATE:20021103T000000
  340.66 +RDATE:20041102T000000
  340.67 +RDATE:20051016T000000
  340.68 +RDATE:20061105T000000
  340.69 +RDATE:20071014T000000
  340.70 +END:DAYLIGHT
  340.71 +BEGIN:STANDARD
  340.72 +TZOFFSETFROM:-0300
  340.73 +TZOFFSETTO:-0400
  340.74 +TZNAME:AMT
  340.75 +DTSTART:19320401T000000
  340.76 +RDATE:19320401T000000
  340.77 +RDATE:19330401T000000
  340.78 +RDATE:19500416T010000
  340.79 +RDATE:19510401T000000
  340.80 +RDATE:19520401T000000
  340.81 +RDATE:19530301T000000
  340.82 +RDATE:19640301T000000
  340.83 +RDATE:19650331T000000
  340.84 +RDATE:19660301T000000
  340.85 +RDATE:19670301T000000
  340.86 +RDATE:19680301T000000
  340.87 +RDATE:19860315T000000
  340.88 +RDATE:19870214T000000
  340.89 +RDATE:19880207T000000
  340.90 +RDATE:19890129T000000
  340.91 +RDATE:19900211T000000
  340.92 +RDATE:19910217T000000
  340.93 +RDATE:19920209T000000
  340.94 +RDATE:19930131T000000
  340.95 +RDATE:19940220T000000
  340.96 +RDATE:19950219T000000
  340.97 +RDATE:19960211T000000
  340.98 +RDATE:19970216T000000
  340.99 +RDATE:19980301T000000
 340.100 +RDATE:19990221T000000
 340.101 +RDATE:20000227T000000
 340.102 +RDATE:20010218T000000
 340.103 +RDATE:20020217T000000
 340.104 +RDATE:20030216T000000
 340.105 +RDATE:20050220T000000
 340.106 +RDATE:20060219T000000
 340.107 +RDATE:20070225T000000
 340.108 +RDATE:20080217T000000
 340.109 +RDATE:20090215T000000
 340.110 +RDATE:20100221T000000
 340.111 +RDATE:20110220T000000
 340.112 +RDATE:20120226T000000
 340.113 +RDATE:20130217T000000
 340.114 +RDATE:20140216T000000
 340.115 +END:STANDARD
 340.116 +BEGIN:STANDARD
 340.117 +TZOFFSETFROM:-0400
 340.118 +TZOFFSETTO:-0400
 340.119 +TZNAME:AMT
 340.120 +DTSTART:20030924T000000
 340.121 +RDATE:20030924T000000
 340.122 +RDATE:20041001T000000
 340.123 +RDATE:20150222T000000
 340.124 +RDATE:20160221T000000
 340.125 +RDATE:20170219T000000
 340.126 +RDATE:20180218T000000
 340.127 +RDATE:20190217T000000
 340.128 +RDATE:20200216T000000
 340.129 +RDATE:20210221T000000
 340.130 +RDATE:20220220T000000
 340.131 +RDATE:20230226T000000
 340.132 +RDATE:20240218T000000
 340.133 +RDATE:20250216T000000
 340.134 +RDATE:20260222T000000
 340.135 +RDATE:20270221T000000
 340.136 +RDATE:20280220T000000
 340.137 +RDATE:20290218T000000
 340.138 +RDATE:20300217T000000
 340.139 +RDATE:20310216T000000
 340.140 +RDATE:20320215T000000
 340.141 +RDATE:20330220T000000
 340.142 +RDATE:20340226T000000
 340.143 +RDATE:20350218T000000
 340.144 +RDATE:20360217T000000
 340.145 +RDATE:20370222T000000
 340.146 +END:STANDARD
 340.147 +END:VTIMEZONE
 340.148 +END:VCALENDAR
   341.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   341.2 +++ b/src/zoneinfo-global/America/Curacao.ics	Tue Feb 10 18:12:00 2015 +0100
   341.3 @@ -0,0 +1,23 @@
   341.4 +BEGIN:VCALENDAR
   341.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   341.6 +VERSION:2.0
   341.7 +BEGIN:VTIMEZONE
   341.8 +TZID:America/Curacao
   341.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Curacao
  341.10 +X-LIC-LOCATION:America/Curacao
  341.11 +BEGIN:STANDARD
  341.12 +TZOFFSETFROM:-043544
  341.13 +TZOFFSETTO:-0430
  341.14 +TZNAME:ANT
  341.15 +DTSTART:19120212T000000
  341.16 +RDATE:19120212T000000
  341.17 +END:STANDARD
  341.18 +BEGIN:STANDARD
  341.19 +TZOFFSETFROM:-0430
  341.20 +TZOFFSETTO:-0400
  341.21 +TZNAME:AST
  341.22 +DTSTART:19650101T000000
  341.23 +RDATE:19650101T000000
  341.24 +END:STANDARD
  341.25 +END:VTIMEZONE
  341.26 +END:VCALENDAR
   342.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   342.2 +++ b/src/zoneinfo-global/America/Danmarkshavn.ics	Tue Feb 10 18:12:00 2015 +0100
   342.3 @@ -0,0 +1,67 @@
   342.4 +BEGIN:VCALENDAR
   342.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   342.6 +VERSION:2.0
   342.7 +BEGIN:VTIMEZONE
   342.8 +TZID:America/Danmarkshavn
   342.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Danmarkshavn
  342.10 +X-LIC-LOCATION:America/Danmarkshavn
  342.11 +BEGIN:STANDARD
  342.12 +TZOFFSETFROM:-011440
  342.13 +TZOFFSETTO:-0300
  342.14 +TZNAME:WGT
  342.15 +DTSTART:19160728T000000
  342.16 +RDATE:19160728T000000
  342.17 +END:STANDARD
  342.18 +BEGIN:DAYLIGHT
  342.19 +TZOFFSETFROM:-0300
  342.20 +TZOFFSETTO:-0200
  342.21 +TZNAME:WGST
  342.22 +DTSTART:19800406T020000
  342.23 +RDATE:19800406T020000
  342.24 +RDATE:19810328T220000
  342.25 +RDATE:19820327T220000
  342.26 +RDATE:19830326T220000
  342.27 +RDATE:19840324T220000
  342.28 +RDATE:19850330T220000
  342.29 +RDATE:19860329T220000
  342.30 +RDATE:19870328T220000
  342.31 +RDATE:19880326T220000
  342.32 +RDATE:19890325T220000
  342.33 +RDATE:19900324T220000
  342.34 +RDATE:19910330T220000
  342.35 +RDATE:19920328T220000
  342.36 +RDATE:19930327T220000
  342.37 +RDATE:19940326T220000
  342.38 +RDATE:19950325T220000
  342.39 +END:DAYLIGHT
  342.40 +BEGIN:STANDARD
  342.41 +TZOFFSETFROM:-0200
  342.42 +TZOFFSETTO:-0300
  342.43 +TZNAME:WGT
  342.44 +DTSTART:19800927T230000
  342.45 +RDATE:19800927T230000
  342.46 +RDATE:19810926T230000
  342.47 +RDATE:19820925T230000
  342.48 +RDATE:19830924T230000
  342.49 +RDATE:19840929T230000
  342.50 +RDATE:19850928T230000
  342.51 +RDATE:19860927T230000
  342.52 +RDATE:19870926T230000
  342.53 +RDATE:19880924T230000
  342.54 +RDATE:19890923T230000
  342.55 +RDATE:19900929T230000
  342.56 +RDATE:19910928T230000
  342.57 +RDATE:19920926T230000
  342.58 +RDATE:19930925T230000
  342.59 +RDATE:19940924T230000
  342.60 +RDATE:19950923T230000
  342.61 +END:STANDARD
  342.62 +BEGIN:STANDARD
  342.63 +TZOFFSETFROM:-0300
  342.64 +TZOFFSETTO:+0000
  342.65 +TZNAME:GMT
  342.66 +DTSTART:19960101T000000
  342.67 +RDATE:19960101T000000
  342.68 +END:STANDARD
  342.69 +END:VTIMEZONE
  342.70 +END:VCALENDAR
   343.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   343.2 +++ b/src/zoneinfo-global/America/Dawson.ics	Tue Feb 10 18:12:00 2015 +0100
   343.3 @@ -0,0 +1,154 @@
   343.4 +BEGIN:VCALENDAR
   343.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   343.6 +VERSION:2.0
   343.7 +BEGIN:VTIMEZONE
   343.8 +TZID:America/Dawson
   343.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Dawson
  343.10 +X-LIC-LOCATION:America/Dawson
  343.11 +BEGIN:DAYLIGHT
  343.12 +TZOFFSETFROM:-0800
  343.13 +TZOFFSETTO:-0700
  343.14 +TZNAME:PDT
  343.15 +DTSTART:20070311T020000
  343.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  343.17 +END:DAYLIGHT
  343.18 +BEGIN:STANDARD
  343.19 +TZOFFSETFROM:-0700
  343.20 +TZOFFSETTO:-0800
  343.21 +TZNAME:PST
  343.22 +DTSTART:20071104T020000
  343.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  343.24 +END:STANDARD
  343.25 +BEGIN:STANDARD
  343.26 +TZOFFSETFROM:-091740
  343.27 +TZOFFSETTO:-0900
  343.28 +TZNAME:YST
  343.29 +DTSTART:19000820T000000
  343.30 +RDATE:19000820T000000
  343.31 +END:STANDARD
  343.32 +BEGIN:DAYLIGHT
  343.33 +TZOFFSETFROM:-0900
  343.34 +TZOFFSETTO:-0800
  343.35 +TZNAME:YDT
  343.36 +DTSTART:19180414T020000
  343.37 +RDATE:19180414T020000
  343.38 +RDATE:19190525T020000
  343.39 +END:DAYLIGHT
  343.40 +BEGIN:STANDARD
  343.41 +TZOFFSETFROM:-0800
  343.42 +TZOFFSETTO:-0900
  343.43 +TZNAME:YST
  343.44 +DTSTART:19181027T020000
  343.45 +RDATE:19181027T020000
  343.46 +RDATE:19191101T000000
  343.47 +RDATE:19450930T020000
  343.48 +END:STANDARD
  343.49 +BEGIN:DAYLIGHT
  343.50 +TZOFFSETFROM:-0900
  343.51 +TZOFFSETTO:-0800
  343.52 +TZNAME:YWT
  343.53 +DTSTART:19420209T020000
  343.54 +RDATE:19420209T020000
  343.55 +END:DAYLIGHT
  343.56 +BEGIN:DAYLIGHT
  343.57 +TZOFFSETFROM:-0800
  343.58 +TZOFFSETTO:-0800
  343.59 +TZNAME:YPT
  343.60 +DTSTART:19450814T150000
  343.61 +RDATE:19450814T150000
  343.62 +END:DAYLIGHT
  343.63 +BEGIN:DAYLIGHT
  343.64 +TZOFFSETFROM:-0900
  343.65 +TZOFFSETTO:-0700
  343.66 +TZNAME:YDDT
  343.67 +DTSTART:19650425T000000
  343.68 +RDATE:19650425T000000
  343.69 +END:DAYLIGHT
  343.70 +BEGIN:STANDARD
  343.71 +TZOFFSETFROM:-0700
  343.72 +TZOFFSETTO:-0900
  343.73 +TZNAME:YST
  343.74 +DTSTART:19651031T020000
  343.75 +RDATE:19651031T020000
  343.76 +END:STANDARD
  343.77 +BEGIN:STANDARD
  343.78 +TZOFFSETFROM:-0900
  343.79 +TZOFFSETTO:-0800
  343.80 +DTSTART:19731028T000000
  343.81 +RDATE:19731028T000000
  343.82 +END:STANDARD
  343.83 +BEGIN:STANDARD
  343.84 +TZOFFSETFROM:-0800
  343.85 +TZOFFSETTO:-0800
  343.86 +TZNAME:PST
  343.87 +DTSTART:19800101T000000
  343.88 +RDATE:19800101T000000
  343.89 +END:STANDARD
  343.90 +BEGIN:DAYLIGHT
  343.91 +TZOFFSETFROM:-0800
  343.92 +TZOFFSETTO:-0700
  343.93 +TZNAME:PDT
  343.94 +DTSTART:19800427T020000
  343.95 +RDATE:19800427T020000
  343.96 +RDATE:19810426T020000
  343.97 +RDATE:19820425T020000
  343.98 +RDATE:19830424T020000
  343.99 +RDATE:19840429T020000
 343.100 +RDATE:19850428T020000
 343.101 +RDATE:19860427T020000
 343.102 +RDATE:19870405T020000
 343.103 +RDATE:19880403T020000
 343.104 +RDATE:19890402T020000
 343.105 +RDATE:19900401T020000
 343.106 +RDATE:19910407T020000
 343.107 +RDATE:19920405T020000
 343.108 +RDATE:19930404T020000
 343.109 +RDATE:19940403T020000
 343.110 +RDATE:19950402T020000
 343.111 +RDATE:19960407T020000
 343.112 +RDATE:19970406T020000
 343.113 +RDATE:19980405T020000
 343.114 +RDATE:19990404T020000
 343.115 +RDATE:20000402T020000
 343.116 +RDATE:20010401T020000
 343.117 +RDATE:20020407T020000
 343.118 +RDATE:20030406T020000
 343.119 +RDATE:20040404T020000
 343.120 +RDATE:20050403T020000
 343.121 +RDATE:20060402T020000
 343.122 +END:DAYLIGHT
 343.123 +BEGIN:STANDARD
 343.124 +TZOFFSETFROM:-0700
 343.125 +TZOFFSETTO:-0800
 343.126 +TZNAME:PST
 343.127 +DTSTART:19801026T020000
 343.128 +RDATE:19801026T020000
 343.129 +RDATE:19811025T020000
 343.130 +RDATE:19821031T020000
 343.131 +RDATE:19831030T020000
 343.132 +RDATE:19841028T020000
 343.133 +RDATE:19851027T020000
 343.134 +RDATE:19861026T020000
 343.135 +RDATE:19871025T020000
 343.136 +RDATE:19881030T020000
 343.137 +RDATE:19891029T020000
 343.138 +RDATE:19901028T020000
 343.139 +RDATE:19911027T020000
 343.140 +RDATE:19921025T020000
 343.141 +RDATE:19931031T020000
 343.142 +RDATE:19941030T020000
 343.143 +RDATE:19951029T020000
 343.144 +RDATE:19961027T020000
 343.145 +RDATE:19971026T020000
 343.146 +RDATE:19981025T020000
 343.147 +RDATE:19991031T020000
 343.148 +RDATE:20001029T020000
 343.149 +RDATE:20011028T020000
 343.150 +RDATE:20021027T020000
 343.151 +RDATE:20031026T020000
 343.152 +RDATE:20041031T020000
 343.153 +RDATE:20051030T020000
 343.154 +RDATE:20061029T020000
 343.155 +END:STANDARD
 343.156 +END:VTIMEZONE
 343.157 +END:VCALENDAR
   344.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   344.2 +++ b/src/zoneinfo-global/America/Dawson_Creek.ics	Tue Feb 10 18:12:00 2015 +0100
   344.3 @@ -0,0 +1,110 @@
   344.4 +BEGIN:VCALENDAR
   344.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   344.6 +VERSION:2.0
   344.7 +BEGIN:VTIMEZONE
   344.8 +TZID:America/Dawson_Creek
   344.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Dawson_Creek
  344.10 +X-LIC-LOCATION:America/Dawson_Creek
  344.11 +BEGIN:STANDARD
  344.12 +TZOFFSETFROM:-080056
  344.13 +TZOFFSETTO:-0800
  344.14 +TZNAME:PST
  344.15 +DTSTART:18840101T000000
  344.16 +RDATE:18840101T000000
  344.17 +END:STANDARD
  344.18 +BEGIN:DAYLIGHT
  344.19 +TZOFFSETFROM:-0800
  344.20 +TZOFFSETTO:-0700
  344.21 +TZNAME:PDT
  344.22 +DTSTART:19180414T020000
  344.23 +RDATE:19180414T020000
  344.24 +RDATE:19470427T020000
  344.25 +RDATE:19480425T020000
  344.26 +RDATE:19490424T020000
  344.27 +RDATE:19500430T020000
  344.28 +RDATE:19510429T020000
  344.29 +RDATE:19520427T020000
  344.30 +RDATE:19530426T020000
  344.31 +RDATE:19540425T020000
  344.32 +RDATE:19550424T020000
  344.33 +RDATE:19560429T020000
  344.34 +RDATE:19570428T020000
  344.35 +RDATE:19580427T020000
  344.36 +RDATE:19590426T020000
  344.37 +RDATE:19600424T020000
  344.38 +RDATE:19610430T020000
  344.39 +RDATE:19620429T020000
  344.40 +RDATE:19630428T020000
  344.41 +RDATE:19640426T020000
  344.42 +RDATE:19650425T020000
  344.43 +RDATE:19660424T020000
  344.44 +RDATE:19670430T020000
  344.45 +RDATE:19680428T020000
  344.46 +RDATE:19690427T020000
  344.47 +RDATE:19700426T020000
  344.48 +RDATE:19710425T020000
  344.49 +RDATE:19720430T020000
  344.50 +END:DAYLIGHT
  344.51 +BEGIN:STANDARD
  344.52 +TZOFFSETFROM:-0700
  344.53 +TZOFFSETTO:-0800
  344.54 +TZNAME:PST
  344.55 +DTSTART:19181031T020000
  344.56 +RDATE:19181031T020000
  344.57 +RDATE:19450930T020000
  344.58 +RDATE:19470928T020000
  344.59 +RDATE:19480926T020000
  344.60 +RDATE:19490925T020000
  344.61 +RDATE:19500924T020000
  344.62 +RDATE:19510930T020000
  344.63 +RDATE:19520928T020000
  344.64 +RDATE:19530927T020000
  344.65 +RDATE:19540926T020000
  344.66 +RDATE:19550925T020000
  344.67 +RDATE:19560930T020000
  344.68 +RDATE:19570929T020000
  344.69 +RDATE:19580928T020000
  344.70 +RDATE:19590927T020000
  344.71 +RDATE:19600925T020000
  344.72 +RDATE:19610924T020000
  344.73 +RDATE:19621028T020000
  344.74 +RDATE:19631027T020000
  344.75 +RDATE:19641025T020000
  344.76 +RDATE:19651031T020000
  344.77 +RDATE:19661030T020000
  344.78 +RDATE:19671029T020000
  344.79 +RDATE:19681027T020000
  344.80 +RDATE:19691026T020000
  344.81 +RDATE:19701025T020000
  344.82 +RDATE:19711031T020000
  344.83 +END:STANDARD
  344.84 +BEGIN:DAYLIGHT
  344.85 +TZOFFSETFROM:-0800
  344.86 +TZOFFSETTO:-0700
  344.87 +TZNAME:PWT
  344.88 +DTSTART:19420209T020000
  344.89 +RDATE:19420209T020000
  344.90 +END:DAYLIGHT
  344.91 +BEGIN:DAYLIGHT
  344.92 +TZOFFSETFROM:-0700
  344.93 +TZOFFSETTO:-0700
  344.94 +TZNAME:PPT
  344.95 +DTSTART:19450814T160000
  344.96 +RDATE:19450814T160000
  344.97 +END:DAYLIGHT
  344.98 +BEGIN:STANDARD
  344.99 +TZOFFSETFROM:-0800
 344.100 +TZOFFSETTO:-0800
 344.101 +TZNAME:PST
 344.102 +DTSTART:19470101T000000
 344.103 +RDATE:19470101T000000
 344.104 +END:STANDARD
 344.105 +BEGIN:STANDARD
 344.106 +TZOFFSETFROM:-0700
 344.107 +TZOFFSETTO:-0700
 344.108 +TZNAME:MST
 344.109 +DTSTART:19720830T020000
 344.110 +RDATE:19720830T020000
 344.111 +END:STANDARD
 344.112 +END:VTIMEZONE
 344.113 +END:VCALENDAR
   345.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   345.2 +++ b/src/zoneinfo-global/America/Denver.ics	Tue Feb 10 18:12:00 2015 +0100
   345.3 @@ -0,0 +1,159 @@
   345.4 +BEGIN:VCALENDAR
   345.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   345.6 +VERSION:2.0
   345.7 +BEGIN:VTIMEZONE
   345.8 +TZID:America/Denver
   345.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Denver
  345.10 +X-LIC-LOCATION:America/Denver
  345.11 +BEGIN:DAYLIGHT
  345.12 +TZOFFSETFROM:-0700
  345.13 +TZOFFSETTO:-0600
  345.14 +TZNAME:MDT
  345.15 +DTSTART:20070311T020000
  345.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  345.17 +END:DAYLIGHT
  345.18 +BEGIN:STANDARD
  345.19 +TZOFFSETFROM:-0600
  345.20 +TZOFFSETTO:-0700
  345.21 +TZNAME:MST
  345.22 +DTSTART:20071104T020000
  345.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  345.24 +END:STANDARD
  345.25 +BEGIN:STANDARD
  345.26 +TZOFFSETFROM:-065956
  345.27 +TZOFFSETTO:-0700
  345.28 +TZNAME:MST
  345.29 +DTSTART:18831118T120004
  345.30 +RDATE:18831118T120004
  345.31 +END:STANDARD
  345.32 +BEGIN:DAYLIGHT
  345.33 +TZOFFSETFROM:-0700
  345.34 +TZOFFSETTO:-0600
  345.35 +TZNAME:MDT
  345.36 +DTSTART:19180331T020000
  345.37 +RDATE:19180331T020000
  345.38 +RDATE:19190330T020000
  345.39 +RDATE:19200328T020000
  345.40 +RDATE:19210327T020000
  345.41 +RDATE:19650425T020000
  345.42 +RDATE:19660424T020000
  345.43 +RDATE:19670430T020000
  345.44 +RDATE:19680428T020000
  345.45 +RDATE:19690427T020000
  345.46 +RDATE:19700426T020000
  345.47 +RDATE:19710425T020000
  345.48 +RDATE:19720430T020000
  345.49 +RDATE:19730429T020000
  345.50 +RDATE:19740106T020000
  345.51 +RDATE:19750223T020000
  345.52 +RDATE:19760425T020000
  345.53 +RDATE:19770424T020000
  345.54 +RDATE:19780430T020000
  345.55 +RDATE:19790429T020000
  345.56 +RDATE:19800427T020000
  345.57 +RDATE:19810426T020000
  345.58 +RDATE:19820425T020000
  345.59 +RDATE:19830424T020000
  345.60 +RDATE:19840429T020000
  345.61 +RDATE:19850428T020000
  345.62 +RDATE:19860427T020000
  345.63 +RDATE:19870405T020000
  345.64 +RDATE:19880403T020000
  345.65 +RDATE:19890402T020000
  345.66 +RDATE:19900401T020000
  345.67 +RDATE:19910407T020000
  345.68 +RDATE:19920405T020000
  345.69 +RDATE:19930404T020000
  345.70 +RDATE:19940403T020000
  345.71 +RDATE:19950402T020000
  345.72 +RDATE:19960407T020000
  345.73 +RDATE:19970406T020000
  345.74 +RDATE:19980405T020000
  345.75 +RDATE:19990404T020000
  345.76 +RDATE:20000402T020000
  345.77 +RDATE:20010401T020000
  345.78 +RDATE:20020407T020000
  345.79 +RDATE:20030406T020000
  345.80 +RDATE:20040404T020000
  345.81 +RDATE:20050403T020000
  345.82 +RDATE:20060402T020000
  345.83 +END:DAYLIGHT
  345.84 +BEGIN:STANDARD
  345.85 +TZOFFSETFROM:-0600
  345.86 +TZOFFSETTO:-0700
  345.87 +TZNAME:MST
  345.88 +DTSTART:19181027T020000
  345.89 +RDATE:19181027T020000
  345.90 +RDATE:19191026T020000
  345.91 +RDATE:19201031T020000
  345.92 +RDATE:19210522T020000
  345.93 +RDATE:19450930T020000
  345.94 +RDATE:19651031T020000
  345.95 +RDATE:19661030T020000
  345.96 +RDATE:19671029T020000
  345.97 +RDATE:19681027T020000
  345.98 +RDATE:19691026T020000
  345.99 +RDATE:19701025T020000
 345.100 +RDATE:19711031T020000
 345.101 +RDATE:19721029T020000
 345.102 +RDATE:19731028T020000
 345.103 +RDATE:19741027T020000
 345.104 +RDATE:19751026T020000
 345.105 +RDATE:19761031T020000
 345.106 +RDATE:19771030T020000
 345.107 +RDATE:19781029T020000
 345.108 +RDATE:19791028T020000
 345.109 +RDATE:19801026T020000
 345.110 +RDATE:19811025T020000
 345.111 +RDATE:19821031T020000
 345.112 +RDATE:19831030T020000
 345.113 +RDATE:19841028T020000
 345.114 +RDATE:19851027T020000
 345.115 +RDATE:19861026T020000
 345.116 +RDATE:19871025T020000
 345.117 +RDATE:19881030T020000
 345.118 +RDATE:19891029T020000
 345.119 +RDATE:19901028T020000
 345.120 +RDATE:19911027T020000
 345.121 +RDATE:19921025T020000
 345.122 +RDATE:19931031T020000
 345.123 +RDATE:19941030T020000
 345.124 +RDATE:19951029T020000
 345.125 +RDATE:19961027T020000
 345.126 +RDATE:19971026T020000
 345.127 +RDATE:19981025T020000
 345.128 +RDATE:19991031T020000
 345.129 +RDATE:20001029T020000
 345.130 +RDATE:20011028T020000
 345.131 +RDATE:20021027T020000
 345.132 +RDATE:20031026T020000
 345.133 +RDATE:20041031T020000
 345.134 +RDATE:20051030T020000
 345.135 +RDATE:20061029T020000
 345.136 +END:STANDARD
 345.137 +BEGIN:STANDARD
 345.138 +TZOFFSETFROM:-0700
 345.139 +TZOFFSETTO:-0700
 345.140 +TZNAME:MST
 345.141 +DTSTART:19200101T000000
 345.142 +RDATE:19200101T000000
 345.143 +RDATE:19420101T000000
 345.144 +RDATE:19460101T000000
 345.145 +RDATE:19670101T000000
 345.146 +END:STANDARD
 345.147 +BEGIN:DAYLIGHT
 345.148 +TZOFFSETFROM:-0700
 345.149 +TZOFFSETTO:-0600
 345.150 +TZNAME:MWT
 345.151 +DTSTART:19420209T020000
 345.152 +RDATE:19420209T020000
 345.153 +END:DAYLIGHT
 345.154 +BEGIN:DAYLIGHT
 345.155 +TZOFFSETFROM:-0600
 345.156 +TZOFFSETTO:-0600
 345.157 +TZNAME:MPT
 345.158 +DTSTART:19450814T170000
 345.159 +RDATE:19450814T170000
 345.160 +END:DAYLIGHT
 345.161 +END:VTIMEZONE
 345.162 +END:VCALENDAR
   346.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   346.2 +++ b/src/zoneinfo-global/America/Detroit.ics	Tue Feb 10 18:12:00 2015 +0100
   346.3 @@ -0,0 +1,146 @@
   346.4 +BEGIN:VCALENDAR
   346.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   346.6 +VERSION:2.0
   346.7 +BEGIN:VTIMEZONE
   346.8 +TZID:America/Detroit
   346.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Detroit
  346.10 +X-LIC-LOCATION:America/Detroit
  346.11 +BEGIN:DAYLIGHT
  346.12 +TZOFFSETFROM:-0500
  346.13 +TZOFFSETTO:-0400
  346.14 +TZNAME:EDT
  346.15 +DTSTART:20070311T020000
  346.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  346.17 +END:DAYLIGHT
  346.18 +BEGIN:STANDARD
  346.19 +TZOFFSETFROM:-0400
  346.20 +TZOFFSETTO:-0500
  346.21 +TZNAME:EST
  346.22 +DTSTART:20071104T020000
  346.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  346.24 +END:STANDARD
  346.25 +BEGIN:STANDARD
  346.26 +TZOFFSETFROM:-053211
  346.27 +TZOFFSETTO:-0600
  346.28 +TZNAME:CST
  346.29 +DTSTART:19050101T000000
  346.30 +RDATE:19050101T000000
  346.31 +END:STANDARD
  346.32 +BEGIN:STANDARD
  346.33 +TZOFFSETFROM:-0600
  346.34 +TZOFFSETTO:-0500
  346.35 +TZNAME:EST
  346.36 +DTSTART:19150515T020000
  346.37 +RDATE:19150515T020000
  346.38 +END:STANDARD
  346.39 +BEGIN:STANDARD
  346.40 +TZOFFSETFROM:-0500
  346.41 +TZOFFSETTO:-0500
  346.42 +TZNAME:EST
  346.43 +DTSTART:19420101T000000
  346.44 +RDATE:19420101T000000
  346.45 +RDATE:19460101T000000
  346.46 +RDATE:19730101T000000
  346.47 +RDATE:19750101T000000
  346.48 +END:STANDARD
  346.49 +BEGIN:DAYLIGHT
  346.50 +TZOFFSETFROM:-0500
  346.51 +TZOFFSETTO:-0400
  346.52 +TZNAME:EWT
  346.53 +DTSTART:19420209T020000
  346.54 +RDATE:19420209T020000
  346.55 +END:DAYLIGHT
  346.56 +BEGIN:DAYLIGHT
  346.57 +TZOFFSETFROM:-0400
  346.58 +TZOFFSETTO:-0400
  346.59 +TZNAME:EPT
  346.60 +DTSTART:19450814T190000
  346.61 +RDATE:19450814T190000
  346.62 +END:DAYLIGHT
  346.63 +BEGIN:STANDARD
  346.64 +TZOFFSETFROM:-0400
  346.65 +TZOFFSETTO:-0500
  346.66 +TZNAME:EST
  346.67 +DTSTART:19450930T020000
  346.68 +RDATE:19450930T020000
  346.69 +RDATE:19480926T020000
  346.70 +RDATE:19671029T020000
  346.71 +RDATE:19731028T020000
  346.72 +RDATE:19741027T020000
  346.73 +RDATE:19751026T020000
  346.74 +RDATE:19761031T020000
  346.75 +RDATE:19771030T020000
  346.76 +RDATE:19781029T020000
  346.77 +RDATE:19791028T020000
  346.78 +RDATE:19801026T020000
  346.79 +RDATE:19811025T020000
  346.80 +RDATE:19821031T020000
  346.81 +RDATE:19831030T020000
  346.82 +RDATE:19841028T020000
  346.83 +RDATE:19851027T020000
  346.84 +RDATE:19861026T020000
  346.85 +RDATE:19871025T020000
  346.86 +RDATE:19881030T020000
  346.87 +RDATE:19891029T020000
  346.88 +RDATE:19901028T020000
  346.89 +RDATE:19911027T020000
  346.90 +RDATE:19921025T020000
  346.91 +RDATE:19931031T020000
  346.92 +RDATE:19941030T020000
  346.93 +RDATE:19951029T020000
  346.94 +RDATE:19961027T020000
  346.95 +RDATE:19971026T020000
  346.96 +RDATE:19981025T020000
  346.97 +RDATE:19991031T020000
  346.98 +RDATE:20001029T020000
  346.99 +RDATE:20011028T020000
 346.100 +RDATE:20021027T020000
 346.101 +RDATE:20031026T020000
 346.102 +RDATE:20041031T020000
 346.103 +RDATE:20051030T020000
 346.104 +RDATE:20061029T020000
 346.105 +END:STANDARD
 346.106 +BEGIN:DAYLIGHT
 346.107 +TZOFFSETFROM:-0500
 346.108 +TZOFFSETTO:-0400
 346.109 +TZNAME:EDT
 346.110 +DTSTART:19480425T020000
 346.111 +RDATE:19480425T020000
 346.112 +RDATE:19670614T020000
 346.113 +RDATE:19730429T020000
 346.114 +RDATE:19740106T020000
 346.115 +RDATE:19750427T020000
 346.116 +RDATE:19760425T020000
 346.117 +RDATE:19770424T020000
 346.118 +RDATE:19780430T020000
 346.119 +RDATE:19790429T020000
 346.120 +RDATE:19800427T020000
 346.121 +RDATE:19810426T020000
 346.122 +RDATE:19820425T020000
 346.123 +RDATE:19830424T020000
 346.124 +RDATE:19840429T020000
 346.125 +RDATE:19850428T020000
 346.126 +RDATE:19860427T020000
 346.127 +RDATE:19870405T020000
 346.128 +RDATE:19880403T020000
 346.129 +RDATE:19890402T020000
 346.130 +RDATE:19900401T020000
 346.131 +RDATE:19910407T020000
 346.132 +RDATE:19920405T020000
 346.133 +RDATE:19930404T020000
 346.134 +RDATE:19940403T020000
 346.135 +RDATE:19950402T020000
 346.136 +RDATE:19960407T020000
 346.137 +RDATE:19970406T020000
 346.138 +RDATE:19980405T020000
 346.139 +RDATE:19990404T020000
 346.140 +RDATE:20000402T020000
 346.141 +RDATE:20010401T020000
 346.142 +RDATE:20020407T020000
 346.143 +RDATE:20030406T020000
 346.144 +RDATE:20040404T020000
 346.145 +RDATE:20050403T020000
 346.146 +RDATE:20060402T020000
 346.147 +END:DAYLIGHT
 346.148 +END:VTIMEZONE
 346.149 +END:VCALENDAR
   347.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   347.2 +++ b/src/zoneinfo-global/America/Dominica.ics	Tue Feb 10 18:12:00 2015 +0100
   347.3 @@ -0,0 +1,16 @@
   347.4 +BEGIN:VCALENDAR
   347.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   347.6 +VERSION:2.0
   347.7 +BEGIN:VTIMEZONE
   347.8 +TZID:America/Dominica
   347.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Dominica
  347.10 +X-LIC-LOCATION:America/Dominica
  347.11 +BEGIN:STANDARD
  347.12 +TZOFFSETFROM:-040536
  347.13 +TZOFFSETTO:-0400
  347.14 +TZNAME:AST
  347.15 +DTSTART:19110701T000100
  347.16 +RDATE:19110701T000100
  347.17 +END:STANDARD
  347.18 +END:VTIMEZONE
  347.19 +END:VCALENDAR
   348.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   348.2 +++ b/src/zoneinfo-global/America/Edmonton.ics	Tue Feb 10 18:12:00 2015 +0100
   348.3 @@ -0,0 +1,152 @@
   348.4 +BEGIN:VCALENDAR
   348.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   348.6 +VERSION:2.0
   348.7 +BEGIN:VTIMEZONE
   348.8 +TZID:America/Edmonton
   348.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Edmonton
  348.10 +X-LIC-LOCATION:America/Edmonton
  348.11 +BEGIN:DAYLIGHT
  348.12 +TZOFFSETFROM:-0700
  348.13 +TZOFFSETTO:-0600
  348.14 +TZNAME:MDT
  348.15 +DTSTART:20070311T020000
  348.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  348.17 +END:DAYLIGHT
  348.18 +BEGIN:STANDARD
  348.19 +TZOFFSETFROM:-0600
  348.20 +TZOFFSETTO:-0700
  348.21 +TZNAME:MST
  348.22 +DTSTART:20071104T020000
  348.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  348.24 +END:STANDARD
  348.25 +BEGIN:STANDARD
  348.26 +TZOFFSETFROM:-073352
  348.27 +TZOFFSETTO:-0700
  348.28 +TZNAME:MST
  348.29 +DTSTART:19060901T000000
  348.30 +RDATE:19060901T000000
  348.31 +END:STANDARD
  348.32 +BEGIN:DAYLIGHT
  348.33 +TZOFFSETFROM:-0700
  348.34 +TZOFFSETTO:-0600
  348.35 +TZNAME:MDT
  348.36 +DTSTART:19180414T020000
  348.37 +RDATE:19180414T020000
  348.38 +RDATE:19190413T020000
  348.39 +RDATE:19200425T020000
  348.40 +RDATE:19210424T020000
  348.41 +RDATE:19220430T020000
  348.42 +RDATE:19230429T020000
  348.43 +RDATE:19470427T020000
  348.44 +RDATE:19670430T020000
  348.45 +RDATE:19690427T020000
  348.46 +RDATE:19720430T020000
  348.47 +RDATE:19730429T020000
  348.48 +RDATE:19740428T020000
  348.49 +RDATE:19750427T020000
  348.50 +RDATE:19760425T020000
  348.51 +RDATE:19770424T020000
  348.52 +RDATE:19780430T020000
  348.53 +RDATE:19790429T020000
  348.54 +RDATE:19800427T020000
  348.55 +RDATE:19810426T020000
  348.56 +RDATE:19820425T020000
  348.57 +RDATE:19830424T020000
  348.58 +RDATE:19840429T020000
  348.59 +RDATE:19850428T020000
  348.60 +RDATE:19860427T020000
  348.61 +RDATE:19870405T020000
  348.62 +RDATE:19880403T020000
  348.63 +RDATE:19890402T020000
  348.64 +RDATE:19900401T020000
  348.65 +RDATE:19910407T020000
  348.66 +RDATE:19920405T020000
  348.67 +RDATE:19930404T020000
  348.68 +RDATE:19940403T020000
  348.69 +RDATE:19950402T020000
  348.70 +RDATE:19960407T020000
  348.71 +RDATE:19970406T020000
  348.72 +RDATE:19980405T020000
  348.73 +RDATE:19990404T020000
  348.74 +RDATE:20000402T020000
  348.75 +RDATE:20010401T020000
  348.76 +RDATE:20020407T020000
  348.77 +RDATE:20030406T020000
  348.78 +RDATE:20040404T020000
  348.79 +RDATE:20050403T020000
  348.80 +RDATE:20060402T020000
  348.81 +END:DAYLIGHT
  348.82 +BEGIN:STANDARD
  348.83 +TZOFFSETFROM:-0600
  348.84 +TZOFFSETTO:-0700
  348.85 +TZNAME:MST
  348.86 +DTSTART:19181031T020000
  348.87 +RDATE:19181031T020000
  348.88 +RDATE:19190527T020000
  348.89 +RDATE:19201031T020000
  348.90 +RDATE:19210925T020000
  348.91 +RDATE:19220924T020000
  348.92 +RDATE:19230930T020000
  348.93 +RDATE:19450930T020000
  348.94 +RDATE:19470928T020000
  348.95 +RDATE:19671029T020000
  348.96 +RDATE:19691026T020000
  348.97 +RDATE:19721029T020000
  348.98 +RDATE:19731028T020000
  348.99 +RDATE:19741027T020000
 348.100 +RDATE:19751026T020000
 348.101 +RDATE:19761031T020000
 348.102 +RDATE:19771030T020000
 348.103 +RDATE:19781029T020000
 348.104 +RDATE:19791028T020000
 348.105 +RDATE:19801026T020000
 348.106 +RDATE:19811025T020000
 348.107 +RDATE:19821031T020000
 348.108 +RDATE:19831030T020000
 348.109 +RDATE:19841028T020000
 348.110 +RDATE:19851027T020000
 348.111 +RDATE:19861026T020000
 348.112 +RDATE:19871025T020000
 348.113 +RDATE:19881030T020000
 348.114 +RDATE:19891029T020000
 348.115 +RDATE:19901028T020000
 348.116 +RDATE:19911027T020000
 348.117 +RDATE:19921025T020000
 348.118 +RDATE:19931031T020000
 348.119 +RDATE:19941030T020000
 348.120 +RDATE:19951029T020000
 348.121 +RDATE:19961027T020000
 348.122 +RDATE:19971026T020000
 348.123 +RDATE:19981025T020000
 348.124 +RDATE:19991031T020000
 348.125 +RDATE:20001029T020000
 348.126 +RDATE:20011028T020000
 348.127 +RDATE:20021027T020000
 348.128 +RDATE:20031026T020000
 348.129 +RDATE:20041031T020000
 348.130 +RDATE:20051030T020000
 348.131 +RDATE:20061029T020000
 348.132 +END:STANDARD
 348.133 +BEGIN:DAYLIGHT
 348.134 +TZOFFSETFROM:-0700
 348.135 +TZOFFSETTO:-0600
 348.136 +TZNAME:MWT
 348.137 +DTSTART:19420209T020000
 348.138 +RDATE:19420209T020000
 348.139 +END:DAYLIGHT
 348.140 +BEGIN:DAYLIGHT
 348.141 +TZOFFSETFROM:-0600
 348.142 +TZOFFSETTO:-0600
 348.143 +TZNAME:MPT
 348.144 +DTSTART:19450814T170000
 348.145 +RDATE:19450814T170000
 348.146 +END:DAYLIGHT
 348.147 +BEGIN:STANDARD
 348.148 +TZOFFSETFROM:-0700
 348.149 +TZOFFSETTO:-0700
 348.150 +TZNAME:MST
 348.151 +DTSTART:19870101T000000
 348.152 +RDATE:19870101T000000
 348.153 +END:STANDARD
 348.154 +END:VTIMEZONE
 348.155 +END:VCALENDAR
   349.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   349.2 +++ b/src/zoneinfo-global/America/Eirunepe.ics	Tue Feb 10 18:12:00 2015 +0100
   349.3 @@ -0,0 +1,74 @@
   349.4 +BEGIN:VCALENDAR
   349.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   349.6 +VERSION:2.0
   349.7 +BEGIN:VTIMEZONE
   349.8 +TZID:America/Eirunepe
   349.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Eirunepe
  349.10 +X-LIC-LOCATION:America/Eirunepe
  349.11 +BEGIN:STANDARD
  349.12 +TZOFFSETFROM:-043928
  349.13 +TZOFFSETTO:-0500
  349.14 +TZNAME:ACT
  349.15 +DTSTART:19140101T000000
  349.16 +RDATE:19140101T000000
  349.17 +END:STANDARD
  349.18 +BEGIN:DAYLIGHT
  349.19 +TZOFFSETFROM:-0500
  349.20 +TZOFFSETTO:-0400
  349.21 +TZNAME:ACST
  349.22 +DTSTART:19311003T110000
  349.23 +RDATE:19311003T110000
  349.24 +RDATE:19321003T000000
  349.25 +RDATE:19491201T000000
  349.26 +RDATE:19501201T000000
  349.27 +RDATE:19511201T000000
  349.28 +RDATE:19521201T000000
  349.29 +RDATE:19631209T000000
  349.30 +RDATE:19650131T000000
  349.31 +RDATE:19651201T000000
  349.32 +RDATE:19661101T000000
  349.33 +RDATE:19671101T000000
  349.34 +RDATE:19851102T000000
  349.35 +RDATE:19861025T000000
  349.36 +RDATE:19871025T000000
  349.37 +RDATE:19931017T000000
  349.38 +END:DAYLIGHT
  349.39 +BEGIN:STANDARD
  349.40 +TZOFFSETFROM:-0400
  349.41 +TZOFFSETTO:-0500
  349.42 +TZNAME:ACT
  349.43 +DTSTART:19320401T000000
  349.44 +RDATE:19320401T000000
  349.45 +RDATE:19330401T000000
  349.46 +RDATE:19500416T010000
  349.47 +RDATE:19510401T000000
  349.48 +RDATE:19520401T000000
  349.49 +RDATE:19530301T000000
  349.50 +RDATE:19640301T000000
  349.51 +RDATE:19650331T000000
  349.52 +RDATE:19660301T000000
  349.53 +RDATE:19670301T000000
  349.54 +RDATE:19680301T000000
  349.55 +RDATE:19860315T000000
  349.56 +RDATE:19870214T000000
  349.57 +RDATE:19880207T000000
  349.58 +RDATE:19940220T000000
  349.59 +END:STANDARD
  349.60 +BEGIN:STANDARD
  349.61 +TZOFFSETFROM:-0500
  349.62 +TZOFFSETTO:-0500
  349.63 +TZNAME:ACT
  349.64 +DTSTART:19880912T000000
  349.65 +RDATE:19880912T000000
  349.66 +RDATE:19930928T000000
  349.67 +RDATE:19940922T000000
  349.68 +END:STANDARD
  349.69 +BEGIN:STANDARD
  349.70 +TZOFFSETFROM:-0500
  349.71 +TZOFFSETTO:-0400
  349.72 +TZNAME:AMT
  349.73 +DTSTART:20080624T000000
  349.74 +RDATE:20080624T000000
  349.75 +END:STANDARD
  349.76 +END:VTIMEZONE
  349.77 +END:VCALENDAR
   350.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   350.2 +++ b/src/zoneinfo-global/America/El_Salvador.ics	Tue Feb 10 18:12:00 2015 +0100
   350.3 @@ -0,0 +1,32 @@
   350.4 +BEGIN:VCALENDAR
   350.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   350.6 +VERSION:2.0
   350.7 +BEGIN:VTIMEZONE
   350.8 +TZID:America/El_Salvador
   350.9 +TZURL:http://tzurl.org/zoneinfo-global/America/El_Salvador
  350.10 +X-LIC-LOCATION:America/El_Salvador
  350.11 +BEGIN:STANDARD
  350.12 +TZOFFSETFROM:-055648
  350.13 +TZOFFSETTO:-0600
  350.14 +TZNAME:CST
  350.15 +DTSTART:19210101T000000
  350.16 +RDATE:19210101T000000
  350.17 +END:STANDARD
  350.18 +BEGIN:DAYLIGHT
  350.19 +TZOFFSETFROM:-0600
  350.20 +TZOFFSETTO:-0500
  350.21 +TZNAME:CDT
  350.22 +DTSTART:19870503T000000
  350.23 +RDATE:19870503T000000
  350.24 +RDATE:19880501T000000
  350.25 +END:DAYLIGHT
  350.26 +BEGIN:STANDARD
  350.27 +TZOFFSETFROM:-0500
  350.28 +TZOFFSETTO:-0600
  350.29 +TZNAME:CST
  350.30 +DTSTART:19870927T000000
  350.31 +RDATE:19870927T000000
  350.32 +RDATE:19880925T000000
  350.33 +END:STANDARD
  350.34 +END:VTIMEZONE
  350.35 +END:VCALENDAR
   351.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   351.2 +++ b/src/zoneinfo-global/America/Fortaleza.ics	Tue Feb 10 18:12:00 2015 +0100
   351.3 @@ -0,0 +1,76 @@
   351.4 +BEGIN:VCALENDAR
   351.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   351.6 +VERSION:2.0
   351.7 +BEGIN:VTIMEZONE
   351.8 +TZID:America/Fortaleza
   351.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Fortaleza
  351.10 +X-LIC-LOCATION:America/Fortaleza
  351.11 +BEGIN:STANDARD
  351.12 +TZOFFSETFROM:-0234
  351.13 +TZOFFSETTO:-0300
  351.14 +TZNAME:BRT
  351.15 +DTSTART:19140101T000000
  351.16 +RDATE:19140101T000000
  351.17 +END:STANDARD
  351.18 +BEGIN:DAYLIGHT
  351.19 +TZOFFSETFROM:-0300
  351.20 +TZOFFSETTO:-0200
  351.21 +TZNAME:BRST
  351.22 +DTSTART:19311003T110000
  351.23 +RDATE:19311003T110000
  351.24 +RDATE:19321003T000000
  351.25 +RDATE:19491201T000000
  351.26 +RDATE:19501201T000000
  351.27 +RDATE:19511201T000000
  351.28 +RDATE:19521201T000000
  351.29 +RDATE:19631209T000000
  351.30 +RDATE:19650131T000000
  351.31 +RDATE:19651201T000000
  351.32 +RDATE:19661101T000000
  351.33 +RDATE:19671101T000000
  351.34 +RDATE:19851102T000000
  351.35 +RDATE:19861025T000000
  351.36 +RDATE:19871025T000000
  351.37 +RDATE:19881016T000000
  351.38 +RDATE:19891015T000000
  351.39 +RDATE:19991003T000000
  351.40 +RDATE:20001008T000000
  351.41 +RDATE:20011014T000000
  351.42 +END:DAYLIGHT
  351.43 +BEGIN:STANDARD
  351.44 +TZOFFSETFROM:-0200
  351.45 +TZOFFSETTO:-0300
  351.46 +TZNAME:BRT
  351.47 +DTSTART:19320401T000000
  351.48 +RDATE:19320401T000000
  351.49 +RDATE:19330401T000000
  351.50 +RDATE:19500416T010000
  351.51 +RDATE:19510401T000000
  351.52 +RDATE:19520401T000000
  351.53 +RDATE:19530301T000000
  351.54 +RDATE:19640301T000000
  351.55 +RDATE:19650331T000000
  351.56 +RDATE:19660301T000000
  351.57 +RDATE:19670301T000000
  351.58 +RDATE:19680301T000000
  351.59 +RDATE:19860315T000000
  351.60 +RDATE:19870214T000000
  351.61 +RDATE:19880207T000000
  351.62 +RDATE:19890129T000000
  351.63 +RDATE:19900211T000000
  351.64 +RDATE:20000227T000000
  351.65 +RDATE:20001022T000000
  351.66 +RDATE:20020217T000000
  351.67 +END:STANDARD
  351.68 +BEGIN:STANDARD
  351.69 +TZOFFSETFROM:-0300
  351.70 +TZOFFSETTO:-0300
  351.71 +TZNAME:BRT
  351.72 +DTSTART:19900917T000000
  351.73 +RDATE:19900917T000000
  351.74 +RDATE:19990930T000000
  351.75 +RDATE:20010913T000000
  351.76 +RDATE:20021001T000000
  351.77 +END:STANDARD
  351.78 +END:VTIMEZONE
  351.79 +END:VCALENDAR
   352.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   352.2 +++ b/src/zoneinfo-global/America/Glace_Bay.ics	Tue Feb 10 18:12:00 2015 +0100
   352.3 @@ -0,0 +1,141 @@
   352.4 +BEGIN:VCALENDAR
   352.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   352.6 +VERSION:2.0
   352.7 +BEGIN:VTIMEZONE
   352.8 +TZID:America/Glace_Bay
   352.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Glace_Bay
  352.10 +X-LIC-LOCATION:America/Glace_Bay
  352.11 +BEGIN:DAYLIGHT
  352.12 +TZOFFSETFROM:-0400
  352.13 +TZOFFSETTO:-0300
  352.14 +TZNAME:ADT
  352.15 +DTSTART:20070311T020000
  352.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  352.17 +END:DAYLIGHT
  352.18 +BEGIN:STANDARD
  352.19 +TZOFFSETFROM:-0300
  352.20 +TZOFFSETTO:-0400
  352.21 +TZNAME:AST
  352.22 +DTSTART:20071104T020000
  352.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  352.24 +END:STANDARD
  352.25 +BEGIN:STANDARD
  352.26 +TZOFFSETFROM:-035948
  352.27 +TZOFFSETTO:-0400
  352.28 +TZNAME:AST
  352.29 +DTSTART:19020615T000000
  352.30 +RDATE:19020615T000000
  352.31 +END:STANDARD
  352.32 +BEGIN:DAYLIGHT
  352.33 +TZOFFSETFROM:-0400
  352.34 +TZOFFSETTO:-0300
  352.35 +TZNAME:ADT
  352.36 +DTSTART:19180414T020000
  352.37 +RDATE:19180414T020000
  352.38 +RDATE:19530426T020000
  352.39 +RDATE:19720430T020000
  352.40 +RDATE:19730429T020000
  352.41 +RDATE:19740428T020000
  352.42 +RDATE:19750427T020000
  352.43 +RDATE:19760425T020000
  352.44 +RDATE:19770424T020000
  352.45 +RDATE:19780430T020000
  352.46 +RDATE:19790429T020000
  352.47 +RDATE:19800427T020000
  352.48 +RDATE:19810426T020000
  352.49 +RDATE:19820425T020000
  352.50 +RDATE:19830424T020000
  352.51 +RDATE:19840429T020000
  352.52 +RDATE:19850428T020000
  352.53 +RDATE:19860427T020000
  352.54 +RDATE:19870405T020000
  352.55 +RDATE:19880403T020000
  352.56 +RDATE:19890402T020000
  352.57 +RDATE:19900401T020000
  352.58 +RDATE:19910407T020000
  352.59 +RDATE:19920405T020000
  352.60 +RDATE:19930404T020000
  352.61 +RDATE:19940403T020000
  352.62 +RDATE:19950402T020000
  352.63 +RDATE:19960407T020000
  352.64 +RDATE:19970406T020000
  352.65 +RDATE:19980405T020000
  352.66 +RDATE:19990404T020000
  352.67 +RDATE:20000402T020000
  352.68 +RDATE:20010401T020000
  352.69 +RDATE:20020407T020000
  352.70 +RDATE:20030406T020000
  352.71 +RDATE:20040404T020000
  352.72 +RDATE:20050403T020000
  352.73 +RDATE:20060402T020000
  352.74 +END:DAYLIGHT
  352.75 +BEGIN:STANDARD
  352.76 +TZOFFSETFROM:-0300
  352.77 +TZOFFSETTO:-0400
  352.78 +TZNAME:AST
  352.79 +DTSTART:19181031T020000
  352.80 +RDATE:19181031T020000
  352.81 +RDATE:19450930T020000
  352.82 +RDATE:19530927T020000
  352.83 +RDATE:19721029T020000
  352.84 +RDATE:19731028T020000
  352.85 +RDATE:19741027T020000
  352.86 +RDATE:19751026T020000
  352.87 +RDATE:19761031T020000
  352.88 +RDATE:19771030T020000
  352.89 +RDATE:19781029T020000
  352.90 +RDATE:19791028T020000
  352.91 +RDATE:19801026T020000
  352.92 +RDATE:19811025T020000
  352.93 +RDATE:19821031T020000
  352.94 +RDATE:19831030T020000
  352.95 +RDATE:19841028T020000
  352.96 +RDATE:19851027T020000
  352.97 +RDATE:19861026T020000
  352.98 +RDATE:19871025T020000
  352.99 +RDATE:19881030T020000
 352.100 +RDATE:19891029T020000
 352.101 +RDATE:19901028T020000
 352.102 +RDATE:19911027T020000
 352.103 +RDATE:19921025T020000
 352.104 +RDATE:19931031T020000
 352.105 +RDATE:19941030T020000
 352.106 +RDATE:19951029T020000
 352.107 +RDATE:19961027T020000
 352.108 +RDATE:19971026T020000
 352.109 +RDATE:19981025T020000
 352.110 +RDATE:19991031T020000
 352.111 +RDATE:20001029T020000
 352.112 +RDATE:20011028T020000
 352.113 +RDATE:20021027T020000
 352.114 +RDATE:20031026T020000
 352.115 +RDATE:20041031T020000
 352.116 +RDATE:20051030T020000
 352.117 +RDATE:20061029T020000
 352.118 +END:STANDARD
 352.119 +BEGIN:DAYLIGHT
 352.120 +TZOFFSETFROM:-0400
 352.121 +TZOFFSETTO:-0300
 352.122 +TZNAME:AWT
 352.123 +DTSTART:19420209T020000
 352.124 +RDATE:19420209T020000
 352.125 +END:DAYLIGHT
 352.126 +BEGIN:DAYLIGHT
 352.127 +TZOFFSETFROM:-0300
 352.128 +TZOFFSETTO:-0300
 352.129 +TZNAME:APT
 352.130 +DTSTART:19450814T200000
 352.131 +RDATE:19450814T200000
 352.132 +END:DAYLIGHT
 352.133 +BEGIN:STANDARD
 352.134 +TZOFFSETFROM:-0400
 352.135 +TZOFFSETTO:-0400
 352.136 +TZNAME:AST
 352.137 +DTSTART:19530101T000000
 352.138 +RDATE:19530101T000000
 352.139 +RDATE:19540101T000000
 352.140 +RDATE:19720101T000000
 352.141 +RDATE:19740101T000000
 352.142 +END:STANDARD
 352.143 +END:VTIMEZONE
 352.144 +END:VCALENDAR
   353.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   353.2 +++ b/src/zoneinfo-global/America/Godthab.ics	Tue Feb 10 18:12:00 2015 +0100
   353.3 @@ -0,0 +1,59 @@
   353.4 +BEGIN:VCALENDAR
   353.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   353.6 +VERSION:2.0
   353.7 +BEGIN:VTIMEZONE
   353.8 +TZID:America/Godthab
   353.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Godthab
  353.10 +X-LIC-LOCATION:America/Godthab
  353.11 +BEGIN:DAYLIGHT
  353.12 +TZOFFSETFROM:-0300
  353.13 +TZOFFSETTO:-0200
  353.14 +TZNAME:WGST
  353.15 +DTSTART:19810328T220000
  353.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYMONTHDAY=24,25,26,27,28,29,30;BYDAY=SA
  353.17 +END:DAYLIGHT
  353.18 +BEGIN:STANDARD
  353.19 +TZOFFSETFROM:-0200
  353.20 +TZOFFSETTO:-0300
  353.21 +TZNAME:WGT
  353.22 +DTSTART:19961026T230000
  353.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYMONTHDAY=24,25,26,27,28,29,30;BYDAY=SA
  353.24 +END:STANDARD
  353.25 +BEGIN:STANDARD
  353.26 +TZOFFSETFROM:-032656
  353.27 +TZOFFSETTO:-0300
  353.28 +TZNAME:WGT
  353.29 +DTSTART:19160728T000000
  353.30 +RDATE:19160728T000000
  353.31 +END:STANDARD
  353.32 +BEGIN:DAYLIGHT
  353.33 +TZOFFSETFROM:-0300
  353.34 +TZOFFSETTO:-0200
  353.35 +TZNAME:WGST
  353.36 +DTSTART:19800406T020000
  353.37 +RDATE:19800406T020000
  353.38 +END:DAYLIGHT
  353.39 +BEGIN:STANDARD
  353.40 +TZOFFSETFROM:-0200
  353.41 +TZOFFSETTO:-0300
  353.42 +TZNAME:WGT
  353.43 +DTSTART:19800927T230000
  353.44 +RDATE:19800927T230000
  353.45 +RDATE:19810926T230000
  353.46 +RDATE:19820925T230000
  353.47 +RDATE:19830924T230000
  353.48 +RDATE:19840929T230000
  353.49 +RDATE:19850928T230000
  353.50 +RDATE:19860927T230000
  353.51 +RDATE:19870926T230000
  353.52 +RDATE:19880924T230000
  353.53 +RDATE:19890923T230000
  353.54 +RDATE:19900929T230000
  353.55 +RDATE:19910928T230000
  353.56 +RDATE:19920926T230000
  353.57 +RDATE:19930925T230000
  353.58 +RDATE:19940924T230000
  353.59 +RDATE:19950923T230000
  353.60 +END:STANDARD
  353.61 +END:VTIMEZONE
  353.62 +END:VCALENDAR
   354.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   354.2 +++ b/src/zoneinfo-global/America/Goose_Bay.ics	Tue Feb 10 18:12:00 2015 +0100
   354.3 @@ -0,0 +1,275 @@
   354.4 +BEGIN:VCALENDAR
   354.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   354.6 +VERSION:2.0
   354.7 +BEGIN:VTIMEZONE
   354.8 +TZID:America/Goose_Bay
   354.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Goose_Bay
  354.10 +X-LIC-LOCATION:America/Goose_Bay
  354.11 +BEGIN:STANDARD
  354.12 +TZOFFSETFROM:-0300
  354.13 +TZOFFSETTO:-0400
  354.14 +TZNAME:AST
  354.15 +DTSTART:20111106T020000
  354.16 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  354.17 +END:STANDARD
  354.18 +BEGIN:DAYLIGHT
  354.19 +TZOFFSETFROM:-0400
  354.20 +TZOFFSETTO:-0300
  354.21 +TZNAME:ADT
  354.22 +DTSTART:20120311T020000
  354.23 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  354.24 +END:DAYLIGHT
  354.25 +BEGIN:STANDARD
  354.26 +TZOFFSETFROM:-040140
  354.27 +TZOFFSETTO:-033052
  354.28 +TZNAME:NST
  354.29 +DTSTART:18840101T000000
  354.30 +RDATE:18840101T000000
  354.31 +END:STANDARD
  354.32 +BEGIN:STANDARD
  354.33 +TZOFFSETFROM:-033052
  354.34 +TZOFFSETTO:-033052
  354.35 +TZNAME:NST
  354.36 +DTSTART:19180101T000000
  354.37 +RDATE:19180101T000000
  354.38 +RDATE:19190101T000000
  354.39 +END:STANDARD
  354.40 +BEGIN:DAYLIGHT
  354.41 +TZOFFSETFROM:-033052
  354.42 +TZOFFSETTO:-023052
  354.43 +TZNAME:NDT
  354.44 +DTSTART:19180414T020000
  354.45 +RDATE:19180414T020000
  354.46 +END:DAYLIGHT
  354.47 +BEGIN:STANDARD
  354.48 +TZOFFSETFROM:-023052
  354.49 +TZOFFSETTO:-033052
  354.50 +TZNAME:NST
  354.51 +DTSTART:19181031T020000
  354.52 +RDATE:19181031T020000
  354.53 +END:STANDARD
  354.54 +BEGIN:STANDARD
  354.55 +TZOFFSETFROM:-033052
  354.56 +TZOFFSETTO:-0330
  354.57 +TZNAME:NST
  354.58 +DTSTART:19350330T000000
  354.59 +RDATE:19350330T000000
  354.60 +END:STANDARD
  354.61 +BEGIN:STANDARD
  354.62 +TZOFFSETFROM:-0330
  354.63 +TZOFFSETTO:-0330
  354.64 +TZNAME:NST
  354.65 +DTSTART:19360101T000000
  354.66 +RDATE:19360101T000000
  354.67 +RDATE:19460101T000000
  354.68 +END:STANDARD
  354.69 +BEGIN:DAYLIGHT
  354.70 +TZOFFSETFROM:-0330
  354.71 +TZOFFSETTO:-0230
  354.72 +TZNAME:NDT
  354.73 +DTSTART:19360511T000000
  354.74 +RDATE:19360511T000000
  354.75 +RDATE:19370510T000000
  354.76 +RDATE:19380509T000000
  354.77 +RDATE:19390515T000000
  354.78 +RDATE:19400513T000000
  354.79 +RDATE:19410512T000000
  354.80 +RDATE:19460512T020000
  354.81 +RDATE:19470511T020000
  354.82 +RDATE:19480509T020000
  354.83 +RDATE:19490508T020000
  354.84 +RDATE:19500514T020000
  354.85 +RDATE:19510429T020000
  354.86 +RDATE:19520427T020000
  354.87 +RDATE:19530426T020000
  354.88 +RDATE:19540425T020000
  354.89 +RDATE:19550424T020000
  354.90 +RDATE:19560429T020000
  354.91 +RDATE:19570428T020000
  354.92 +RDATE:19580427T020000
  354.93 +RDATE:19590426T020000
  354.94 +RDATE:19600424T020000
  354.95 +RDATE:19610430T020000
  354.96 +RDATE:19620429T020000
  354.97 +RDATE:19630428T020000
  354.98 +RDATE:19640426T020000
  354.99 +RDATE:19650425T020000
 354.100 +END:DAYLIGHT
 354.101 +BEGIN:STANDARD
 354.102 +TZOFFSETFROM:-0230
 354.103 +TZOFFSETTO:-0330
 354.104 +TZNAME:NST
 354.105 +DTSTART:19361005T000000
 354.106 +RDATE:19361005T000000
 354.107 +RDATE:19371004T000000
 354.108 +RDATE:19381003T000000
 354.109 +RDATE:19391002T000000
 354.110 +RDATE:19401007T000000
 354.111 +RDATE:19411006T000000
 354.112 +RDATE:19450930T020000
 354.113 +RDATE:19461006T020000
 354.114 +RDATE:19471005T020000
 354.115 +RDATE:19481003T020000
 354.116 +RDATE:19491002T020000
 354.117 +RDATE:19501008T020000
 354.118 +RDATE:19510930T020000
 354.119 +RDATE:19520928T020000
 354.120 +RDATE:19530927T020000
 354.121 +RDATE:19540926T020000
 354.122 +RDATE:19550925T020000
 354.123 +RDATE:19560930T020000
 354.124 +RDATE:19570929T020000
 354.125 +RDATE:19580928T020000
 354.126 +RDATE:19590927T020000
 354.127 +RDATE:19601030T020000
 354.128 +RDATE:19611029T020000
 354.129 +RDATE:19621028T020000
 354.130 +RDATE:19631027T020000
 354.131 +RDATE:19641025T020000
 354.132 +RDATE:19651031T020000
 354.133 +END:STANDARD
 354.134 +BEGIN:DAYLIGHT
 354.135 +TZOFFSETFROM:-0330
 354.136 +TZOFFSETTO:-0230
 354.137 +TZNAME:NWT
 354.138 +DTSTART:19420511T000000
 354.139 +RDATE:19420511T000000
 354.140 +END:DAYLIGHT
 354.141 +BEGIN:DAYLIGHT
 354.142 +TZOFFSETFROM:-0230
 354.143 +TZOFFSETTO:-0230
 354.144 +TZNAME:NPT
 354.145 +DTSTART:19450814T203000
 354.146 +RDATE:19450814T203000
 354.147 +END:DAYLIGHT
 354.148 +BEGIN:STANDARD
 354.149 +TZOFFSETFROM:-0330
 354.150 +TZOFFSETTO:-0400
 354.151 +TZNAME:AST
 354.152 +DTSTART:19660315T020000
 354.153 +RDATE:19660315T020000
 354.154 +END:STANDARD
 354.155 +BEGIN:DAYLIGHT
 354.156 +TZOFFSETFROM:-0400
 354.157 +TZOFFSETTO:-0300
 354.158 +TZNAME:ADT
 354.159 +DTSTART:19660424T020000
 354.160 +RDATE:19660424T020000
 354.161 +RDATE:19670430T020000
 354.162 +RDATE:19680428T020000
 354.163 +RDATE:19690427T020000
 354.164 +RDATE:19700426T020000
 354.165 +RDATE:19710425T020000
 354.166 +RDATE:19720430T020000
 354.167 +RDATE:19730429T020000
 354.168 +RDATE:19740428T020000
 354.169 +RDATE:19750427T020000
 354.170 +RDATE:19760425T020000
 354.171 +RDATE:19770424T020000
 354.172 +RDATE:19780430T020000
 354.173 +RDATE:19790429T020000
 354.174 +RDATE:19800427T020000
 354.175 +RDATE:19810426T020000
 354.176 +RDATE:19820425T020000
 354.177 +RDATE:19830424T020000
 354.178 +RDATE:19840429T020000
 354.179 +RDATE:19850428T020000
 354.180 +RDATE:19860427T020000
 354.181 +RDATE:19870405T000100
 354.182 +RDATE:19890402T000100
 354.183 +RDATE:19900401T000100
 354.184 +RDATE:19910407T000100
 354.185 +RDATE:19920405T000100
 354.186 +RDATE:19930404T000100
 354.187 +RDATE:19940403T000100
 354.188 +RDATE:19950402T000100
 354.189 +RDATE:19960407T000100
 354.190 +RDATE:19970406T000100
 354.191 +RDATE:19980405T000100
 354.192 +RDATE:19990404T000100
 354.193 +RDATE:20000402T000100
 354.194 +RDATE:20010401T000100
 354.195 +RDATE:20020407T000100
 354.196 +RDATE:20030406T000100
 354.197 +RDATE:20040404T000100
 354.198 +RDATE:20050403T000100
 354.199 +RDATE:20060402T000100
 354.200 +RDATE:20070311T000100
 354.201 +RDATE:20080309T000100
 354.202 +RDATE:20090308T000100
 354.203 +RDATE:20100314T000100
 354.204 +RDATE:20110313T000100
 354.205 +END:DAYLIGHT
 354.206 +BEGIN:STANDARD
 354.207 +TZOFFSETFROM:-0300
 354.208 +TZOFFSETTO:-0400
 354.209 +TZNAME:AST
 354.210 +DTSTART:19661030T020000
 354.211 +RDATE:19661030T020000
 354.212 +RDATE:19671029T020000
 354.213 +RDATE:19681027T020000
 354.214 +RDATE:19691026T020000
 354.215 +RDATE:19701025T020000
 354.216 +RDATE:19711031T020000
 354.217 +RDATE:19721029T020000
 354.218 +RDATE:19731028T020000
 354.219 +RDATE:19741027T020000
 354.220 +RDATE:19751026T020000
 354.221 +RDATE:19761031T020000
 354.222 +RDATE:19771030T020000
 354.223 +RDATE:19781029T020000
 354.224 +RDATE:19791028T020000
 354.225 +RDATE:19801026T020000
 354.226 +RDATE:19811025T020000
 354.227 +RDATE:19821031T020000
 354.228 +RDATE:19831030T020000
 354.229 +RDATE:19841028T020000
 354.230 +RDATE:19851027T020000
 354.231 +RDATE:19861026T020000
 354.232 +RDATE:19871025T000100
 354.233 +RDATE:19891029T000100
 354.234 +RDATE:19901028T000100
 354.235 +RDATE:19911027T000100
 354.236 +RDATE:19921025T000100
 354.237 +RDATE:19931031T000100
 354.238 +RDATE:19941030T000100
 354.239 +RDATE:19951029T000100
 354.240 +RDATE:19961027T000100
 354.241 +RDATE:19971026T000100
 354.242 +RDATE:19981025T000100
 354.243 +RDATE:19991031T000100
 354.244 +RDATE:20001029T000100
 354.245 +RDATE:20011028T000100
 354.246 +RDATE:20021027T000100
 354.247 +RDATE:20031026T000100
 354.248 +RDATE:20041031T000100
 354.249 +RDATE:20051030T000100
 354.250 +RDATE:20061029T000100
 354.251 +RDATE:20071104T000100
 354.252 +RDATE:20081102T000100
 354.253 +RDATE:20091101T000100
 354.254 +RDATE:20101107T000100
 354.255 +END:STANDARD
 354.256 +BEGIN:DAYLIGHT
 354.257 +TZOFFSETFROM:-0400
 354.258 +TZOFFSETTO:-0200
 354.259 +TZNAME:ADDT
 354.260 +DTSTART:19880403T000100
 354.261 +RDATE:19880403T000100
 354.262 +END:DAYLIGHT
 354.263 +BEGIN:STANDARD
 354.264 +TZOFFSETFROM:-0200
 354.265 +TZOFFSETTO:-0400
 354.266 +TZNAME:AST
 354.267 +DTSTART:19881030T000100
 354.268 +RDATE:19881030T000100
 354.269 +END:STANDARD
 354.270 +BEGIN:DAYLIGHT
 354.271 +TZOFFSETFROM:-0300
 354.272 +TZOFFSETTO:-0300
 354.273 +TZNAME:ADT
 354.274 +DTSTART:20111101T000000
 354.275 +RDATE:20111101T000000
 354.276 +END:DAYLIGHT
 354.277 +END:VTIMEZONE
 354.278 +END:VCALENDAR
   355.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   355.2 +++ b/src/zoneinfo-global/America/Grand_Turk.ics	Tue Feb 10 18:12:00 2015 +0100
   355.3 @@ -0,0 +1,105 @@
   355.4 +BEGIN:VCALENDAR
   355.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   355.6 +VERSION:2.0
   355.7 +BEGIN:VTIMEZONE
   355.8 +TZID:America/Grand_Turk
   355.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Grand_Turk
  355.10 +X-LIC-LOCATION:America/Grand_Turk
  355.11 +BEGIN:DAYLIGHT
  355.12 +TZOFFSETFROM:-0500
  355.13 +TZOFFSETTO:-0400
  355.14 +TZNAME:EDT
  355.15 +DTSTART:20070311T020000
  355.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  355.17 +END:DAYLIGHT
  355.18 +BEGIN:STANDARD
  355.19 +TZOFFSETFROM:-0400
  355.20 +TZOFFSETTO:-0500
  355.21 +TZNAME:EST
  355.22 +DTSTART:20071104T020000
  355.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  355.24 +END:STANDARD
  355.25 +BEGIN:STANDARD
  355.26 +TZOFFSETFROM:-044432
  355.27 +TZOFFSETTO:-050712
  355.28 +TZNAME:KMT
  355.29 +DTSTART:18900101T000000
  355.30 +RDATE:18900101T000000
  355.31 +END:STANDARD
  355.32 +BEGIN:STANDARD
  355.33 +TZOFFSETFROM:-050712
  355.34 +TZOFFSETTO:-0500
  355.35 +TZNAME:EST
  355.36 +DTSTART:19120201T000000
  355.37 +RDATE:19120201T000000
  355.38 +END:STANDARD
  355.39 +BEGIN:DAYLIGHT
  355.40 +TZOFFSETFROM:-0500
  355.41 +TZOFFSETTO:-0400
  355.42 +TZNAME:EDT
  355.43 +DTSTART:19790429T020000
  355.44 +RDATE:19790429T020000
  355.45 +RDATE:19800427T020000
  355.46 +RDATE:19810426T020000
  355.47 +RDATE:19820425T020000
  355.48 +RDATE:19830424T020000
  355.49 +RDATE:19840429T020000
  355.50 +RDATE:19850428T020000
  355.51 +RDATE:19860427T020000
  355.52 +RDATE:19870405T020000
  355.53 +RDATE:19880403T020000
  355.54 +RDATE:19890402T020000
  355.55 +RDATE:19900401T020000
  355.56 +RDATE:19910407T020000
  355.57 +RDATE:19920405T020000
  355.58 +RDATE:19930404T020000
  355.59 +RDATE:19940403T020000
  355.60 +RDATE:19950402T020000
  355.61 +RDATE:19960407T020000
  355.62 +RDATE:19970406T020000
  355.63 +RDATE:19980405T020000
  355.64 +RDATE:19990404T020000
  355.65 +RDATE:20000402T020000
  355.66 +RDATE:20010401T020000
  355.67 +RDATE:20020407T020000
  355.68 +RDATE:20030406T020000
  355.69 +RDATE:20040404T020000
  355.70 +RDATE:20050403T020000
  355.71 +RDATE:20060402T020000
  355.72 +END:DAYLIGHT
  355.73 +BEGIN:STANDARD
  355.74 +TZOFFSETFROM:-0400
  355.75 +TZOFFSETTO:-0500
  355.76 +TZNAME:EST
  355.77 +DTSTART:19791028T020000
  355.78 +RDATE:19791028T020000
  355.79 +RDATE:19801026T020000
  355.80 +RDATE:19811025T020000
  355.81 +RDATE:19821031T020000
  355.82 +RDATE:19831030T020000
  355.83 +RDATE:19841028T020000
  355.84 +RDATE:19851027T020000
  355.85 +RDATE:19861026T020000
  355.86 +RDATE:19871025T020000
  355.87 +RDATE:19881030T020000
  355.88 +RDATE:19891029T020000
  355.89 +RDATE:19901028T020000
  355.90 +RDATE:19911027T020000
  355.91 +RDATE:19921025T020000
  355.92 +RDATE:19931031T020000
  355.93 +RDATE:19941030T020000
  355.94 +RDATE:19951029T020000
  355.95 +RDATE:19961027T020000
  355.96 +RDATE:19971026T020000
  355.97 +RDATE:19981025T020000
  355.98 +RDATE:19991031T020000
  355.99 +RDATE:20001029T020000
 355.100 +RDATE:20011028T020000
 355.101 +RDATE:20021027T020000
 355.102 +RDATE:20031026T020000
 355.103 +RDATE:20041031T020000
 355.104 +RDATE:20051030T020000
 355.105 +RDATE:20061029T020000
 355.106 +END:STANDARD
 355.107 +END:VTIMEZONE
 355.108 +END:VCALENDAR
   356.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   356.2 +++ b/src/zoneinfo-global/America/Grenada.ics	Tue Feb 10 18:12:00 2015 +0100
   356.3 @@ -0,0 +1,16 @@
   356.4 +BEGIN:VCALENDAR
   356.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   356.6 +VERSION:2.0
   356.7 +BEGIN:VTIMEZONE
   356.8 +TZID:America/Grenada
   356.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Grenada
  356.10 +X-LIC-LOCATION:America/Grenada
  356.11 +BEGIN:STANDARD
  356.12 +TZOFFSETFROM:-0407
  356.13 +TZOFFSETTO:-0400
  356.14 +TZNAME:AST
  356.15 +DTSTART:19110701T000000
  356.16 +RDATE:19110701T000000
  356.17 +END:STANDARD
  356.18 +END:VTIMEZONE
  356.19 +END:VCALENDAR
   357.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   357.2 +++ b/src/zoneinfo-global/America/Guadeloupe.ics	Tue Feb 10 18:12:00 2015 +0100
   357.3 @@ -0,0 +1,16 @@
   357.4 +BEGIN:VCALENDAR
   357.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   357.6 +VERSION:2.0
   357.7 +BEGIN:VTIMEZONE
   357.8 +TZID:America/Guadeloupe
   357.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Guadeloupe
  357.10 +X-LIC-LOCATION:America/Guadeloupe
  357.11 +BEGIN:STANDARD
  357.12 +TZOFFSETFROM:-040608
  357.13 +TZOFFSETTO:-0400
  357.14 +TZNAME:AST
  357.15 +DTSTART:19110608T000000
  357.16 +RDATE:19110608T000000
  357.17 +END:STANDARD
  357.18 +END:VTIMEZONE
  357.19 +END:VCALENDAR
   358.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   358.2 +++ b/src/zoneinfo-global/America/Guatemala.ics	Tue Feb 10 18:12:00 2015 +0100
   358.3 @@ -0,0 +1,36 @@
   358.4 +BEGIN:VCALENDAR
   358.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   358.6 +VERSION:2.0
   358.7 +BEGIN:VTIMEZONE
   358.8 +TZID:America/Guatemala
   358.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Guatemala
  358.10 +X-LIC-LOCATION:America/Guatemala
  358.11 +BEGIN:STANDARD
  358.12 +TZOFFSETFROM:-060204
  358.13 +TZOFFSETTO:-0600
  358.14 +TZNAME:CST
  358.15 +DTSTART:19181005T000000
  358.16 +RDATE:19181005T000000
  358.17 +END:STANDARD
  358.18 +BEGIN:DAYLIGHT
  358.19 +TZOFFSETFROM:-0600
  358.20 +TZOFFSETTO:-0500
  358.21 +TZNAME:CDT
  358.22 +DTSTART:19731125T000000
  358.23 +RDATE:19731125T000000
  358.24 +RDATE:19830521T000000
  358.25 +RDATE:19910323T000000
  358.26 +RDATE:20060430T000000
  358.27 +END:DAYLIGHT
  358.28 +BEGIN:STANDARD
  358.29 +TZOFFSETFROM:-0500
  358.30 +TZOFFSETTO:-0600
  358.31 +TZNAME:CST
  358.32 +DTSTART:19740224T000000
  358.33 +RDATE:19740224T000000
  358.34 +RDATE:19830922T000000
  358.35 +RDATE:19910907T000000
  358.36 +RDATE:20061001T000000
  358.37 +END:STANDARD
  358.38 +END:VTIMEZONE
  358.39 +END:VCALENDAR
   359.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   359.2 +++ b/src/zoneinfo-global/America/Guayaquil.ics	Tue Feb 10 18:12:00 2015 +0100
   359.3 @@ -0,0 +1,23 @@
   359.4 +BEGIN:VCALENDAR
   359.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   359.6 +VERSION:2.0
   359.7 +BEGIN:VTIMEZONE
   359.8 +TZID:America/Guayaquil
   359.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Guayaquil
  359.10 +X-LIC-LOCATION:America/Guayaquil
  359.11 +BEGIN:STANDARD
  359.12 +TZOFFSETFROM:-051920
  359.13 +TZOFFSETTO:-0514
  359.14 +TZNAME:QMT
  359.15 +DTSTART:18900101T000000
  359.16 +RDATE:18900101T000000
  359.17 +END:STANDARD
  359.18 +BEGIN:STANDARD
  359.19 +TZOFFSETFROM:-0514
  359.20 +TZOFFSETTO:-0500
  359.21 +TZNAME:ECT
  359.22 +DTSTART:19310101T000000
  359.23 +RDATE:19310101T000000
  359.24 +END:STANDARD
  359.25 +END:VTIMEZONE
  359.26 +END:VCALENDAR
   360.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   360.2 +++ b/src/zoneinfo-global/America/Guyana.ics	Tue Feb 10 18:12:00 2015 +0100
   360.3 @@ -0,0 +1,37 @@
   360.4 +BEGIN:VCALENDAR
   360.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   360.6 +VERSION:2.0
   360.7 +BEGIN:VTIMEZONE
   360.8 +TZID:America/Guyana
   360.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Guyana
  360.10 +X-LIC-LOCATION:America/Guyana
  360.11 +BEGIN:STANDARD
  360.12 +TZOFFSETFROM:-035240
  360.13 +TZOFFSETTO:-0345
  360.14 +TZNAME:GBGT
  360.15 +DTSTART:19150301T000000
  360.16 +RDATE:19150301T000000
  360.17 +END:STANDARD
  360.18 +BEGIN:STANDARD
  360.19 +TZOFFSETFROM:-0345
  360.20 +TZOFFSETTO:-0345
  360.21 +TZNAME:GYT
  360.22 +DTSTART:19660526T000000
  360.23 +RDATE:19660526T000000
  360.24 +END:STANDARD
  360.25 +BEGIN:STANDARD
  360.26 +TZOFFSETFROM:-0345
  360.27 +TZOFFSETTO:-0300
  360.28 +TZNAME:GYT
  360.29 +DTSTART:19750731T000000
  360.30 +RDATE:19750731T000000
  360.31 +END:STANDARD
  360.32 +BEGIN:STANDARD
  360.33 +TZOFFSETFROM:-0300
  360.34 +TZOFFSETTO:-0400
  360.35 +TZNAME:GYT
  360.36 +DTSTART:19910101T000000
  360.37 +RDATE:19910101T000000
  360.38 +END:STANDARD
  360.39 +END:VTIMEZONE
  360.40 +END:VCALENDAR
   361.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   361.2 +++ b/src/zoneinfo-global/America/Halifax.ics	Tue Feb 10 18:12:00 2015 +0100
   361.3 @@ -0,0 +1,229 @@
   361.4 +BEGIN:VCALENDAR
   361.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   361.6 +VERSION:2.0
   361.7 +BEGIN:VTIMEZONE
   361.8 +TZID:America/Halifax
   361.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Halifax
  361.10 +X-LIC-LOCATION:America/Halifax
  361.11 +BEGIN:DAYLIGHT
  361.12 +TZOFFSETFROM:-0400
  361.13 +TZOFFSETTO:-0300
  361.14 +TZNAME:ADT
  361.15 +DTSTART:20070311T020000
  361.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  361.17 +END:DAYLIGHT
  361.18 +BEGIN:STANDARD
  361.19 +TZOFFSETFROM:-0300
  361.20 +TZOFFSETTO:-0400
  361.21 +TZNAME:AST
  361.22 +DTSTART:20071104T020000
  361.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  361.24 +END:STANDARD
  361.25 +BEGIN:STANDARD
  361.26 +TZOFFSETFROM:-041424
  361.27 +TZOFFSETTO:-0400
  361.28 +TZNAME:AST
  361.29 +DTSTART:19020615T000000
  361.30 +RDATE:19020615T000000
  361.31 +END:STANDARD
  361.32 +BEGIN:DAYLIGHT
  361.33 +TZOFFSETFROM:-0400
  361.34 +TZOFFSETTO:-0300
  361.35 +TZNAME:ADT
  361.36 +DTSTART:19160401T000000
  361.37 +RDATE:19160401T000000
  361.38 +RDATE:19180414T020000
  361.39 +RDATE:19200509T000000
  361.40 +RDATE:19210506T000000
  361.41 +RDATE:19220430T000000
  361.42 +RDATE:19230506T000000
  361.43 +RDATE:19240504T000000
  361.44 +RDATE:19250503T000000
  361.45 +RDATE:19260516T000000
  361.46 +RDATE:19270501T000000
  361.47 +RDATE:19280513T000000
  361.48 +RDATE:19290512T000000
  361.49 +RDATE:19300511T000000
  361.50 +RDATE:19310510T000000
  361.51 +RDATE:19320501T000000
  361.52 +RDATE:19330430T000000
  361.53 +RDATE:19340520T000000
  361.54 +RDATE:19350602T000000
  361.55 +RDATE:19360601T000000
  361.56 +RDATE:19370502T000000
  361.57 +RDATE:19380501T000000
  361.58 +RDATE:19390528T000000
  361.59 +RDATE:19400505T000000
  361.60 +RDATE:19410504T000000
  361.61 +RDATE:19460428T020000
  361.62 +RDATE:19470427T020000
  361.63 +RDATE:19480425T020000
  361.64 +RDATE:19490424T020000
  361.65 +RDATE:19510429T020000
  361.66 +RDATE:19520427T020000
  361.67 +RDATE:19530426T020000
  361.68 +RDATE:19540425T020000
  361.69 +RDATE:19560429T020000
  361.70 +RDATE:19570428T020000
  361.71 +RDATE:19580427T020000
  361.72 +RDATE:19590426T020000
  361.73 +RDATE:19620429T020000
  361.74 +RDATE:19630428T020000
  361.75 +RDATE:19640426T020000
  361.76 +RDATE:19650425T020000
  361.77 +RDATE:19660424T020000
  361.78 +RDATE:19670430T020000
  361.79 +RDATE:19680428T020000
  361.80 +RDATE:19690427T020000
  361.81 +RDATE:19700426T020000
  361.82 +RDATE:19710425T020000
  361.83 +RDATE:19720430T020000
  361.84 +RDATE:19730429T020000
  361.85 +RDATE:19740428T020000
  361.86 +RDATE:19750427T020000
  361.87 +RDATE:19760425T020000
  361.88 +RDATE:19770424T020000
  361.89 +RDATE:19780430T020000
  361.90 +RDATE:19790429T020000
  361.91 +RDATE:19800427T020000
  361.92 +RDATE:19810426T020000
  361.93 +RDATE:19820425T020000
  361.94 +RDATE:19830424T020000
  361.95 +RDATE:19840429T020000
  361.96 +RDATE:19850428T020000
  361.97 +RDATE:19860427T020000
  361.98 +RDATE:19870405T020000
  361.99 +RDATE:19880403T020000
 361.100 +RDATE:19890402T020000
 361.101 +RDATE:19900401T020000
 361.102 +RDATE:19910407T020000
 361.103 +RDATE:19920405T020000
 361.104 +RDATE:19930404T020000
 361.105 +RDATE:19940403T020000
 361.106 +RDATE:19950402T020000
 361.107 +RDATE:19960407T020000
 361.108 +RDATE:19970406T020000
 361.109 +RDATE:19980405T020000
 361.110 +RDATE:19990404T020000
 361.111 +RDATE:20000402T020000
 361.112 +RDATE:20010401T020000
 361.113 +RDATE:20020407T020000
 361.114 +RDATE:20030406T020000
 361.115 +RDATE:20040404T020000
 361.116 +RDATE:20050403T020000
 361.117 +RDATE:20060402T020000
 361.118 +END:DAYLIGHT
 361.119 +BEGIN:STANDARD
 361.120 +TZOFFSETFROM:-0300
 361.121 +TZOFFSETTO:-0400
 361.122 +TZNAME:AST
 361.123 +DTSTART:19161001T000000
 361.124 +RDATE:19161001T000000
 361.125 +RDATE:19181031T020000
 361.126 +RDATE:19200829T000000
 361.127 +RDATE:19210905T000000
 361.128 +RDATE:19220905T000000
 361.129 +RDATE:19230904T000000
 361.130 +RDATE:19240915T000000
 361.131 +RDATE:19250928T000000
 361.132 +RDATE:19260913T000000
 361.133 +RDATE:19270926T000000
 361.134 +RDATE:19280909T000000
 361.135 +RDATE:19290903T000000
 361.136 +RDATE:19300915T000000
 361.137 +RDATE:19310928T000000
 361.138 +RDATE:19320926T000000
 361.139 +RDATE:19331002T000000
 361.140 +RDATE:19340916T000000
 361.141 +RDATE:19350930T000000
 361.142 +RDATE:19360914T000000
 361.143 +RDATE:19370927T000000
 361.144 +RDATE:19380926T000000
 361.145 +RDATE:19390925T000000
 361.146 +RDATE:19400930T000000
 361.147 +RDATE:19410929T000000
 361.148 +RDATE:19450930T020000
 361.149 +RDATE:19460929T020000
 361.150 +RDATE:19470928T020000
 361.151 +RDATE:19480926T020000
 361.152 +RDATE:19490925T020000
 361.153 +RDATE:19510930T020000
 361.154 +RDATE:19520928T020000
 361.155 +RDATE:19530927T020000
 361.156 +RDATE:19540926T020000
 361.157 +RDATE:19560930T020000
 361.158 +RDATE:19570929T020000
 361.159 +RDATE:19580928T020000
 361.160 +RDATE:19590927T020000
 361.161 +RDATE:19621028T020000
 361.162 +RDATE:19631027T020000
 361.163 +RDATE:19641025T020000
 361.164 +RDATE:19651031T020000
 361.165 +RDATE:19661030T020000
 361.166 +RDATE:19671029T020000
 361.167 +RDATE:19681027T020000
 361.168 +RDATE:19691026T020000
 361.169 +RDATE:19701025T020000
 361.170 +RDATE:19711031T020000
 361.171 +RDATE:19721029T020000
 361.172 +RDATE:19731028T020000
 361.173 +RDATE:19741027T020000
 361.174 +RDATE:19751026T020000
 361.175 +RDATE:19761031T020000
 361.176 +RDATE:19771030T020000
 361.177 +RDATE:19781029T020000
 361.178 +RDATE:19791028T020000
 361.179 +RDATE:19801026T020000
 361.180 +RDATE:19811025T020000
 361.181 +RDATE:19821031T020000
 361.182 +RDATE:19831030T020000
 361.183 +RDATE:19841028T020000
 361.184 +RDATE:19851027T020000
 361.185 +RDATE:19861026T020000
 361.186 +RDATE:19871025T020000
 361.187 +RDATE:19881030T020000
 361.188 +RDATE:19891029T020000
 361.189 +RDATE:19901028T020000
 361.190 +RDATE:19911027T020000
 361.191 +RDATE:19921025T020000
 361.192 +RDATE:19931031T020000
 361.193 +RDATE:19941030T020000
 361.194 +RDATE:19951029T020000
 361.195 +RDATE:19961027T020000
 361.196 +RDATE:19971026T020000
 361.197 +RDATE:19981025T020000
 361.198 +RDATE:19991031T020000
 361.199 +RDATE:20001029T020000
 361.200 +RDATE:20011028T020000
 361.201 +RDATE:20021027T020000
 361.202 +RDATE:20031026T020000
 361.203 +RDATE:20041031T020000
 361.204 +RDATE:20051030T020000
 361.205 +RDATE:20061029T020000
 361.206 +END:STANDARD
 361.207 +BEGIN:STANDARD
 361.208 +TZOFFSETFROM:-0400
 361.209 +TZOFFSETTO:-0400
 361.210 +TZNAME:AST
 361.211 +DTSTART:19180101T000000
 361.212 +RDATE:19180101T000000
 361.213 +RDATE:19190101T000000
 361.214 +RDATE:19460101T000000
 361.215 +RDATE:19740101T000000
 361.216 +END:STANDARD
 361.217 +BEGIN:DAYLIGHT
 361.218 +TZOFFSETFROM:-0400
 361.219 +TZOFFSETTO:-0300
 361.220 +TZNAME:AWT
 361.221 +DTSTART:19420209T020000
 361.222 +RDATE:19420209T020000
 361.223 +END:DAYLIGHT
 361.224 +BEGIN:DAYLIGHT
 361.225 +TZOFFSETFROM:-0300
 361.226 +TZOFFSETTO:-0300
 361.227 +TZNAME:APT
 361.228 +DTSTART:19450814T200000
 361.229 +RDATE:19450814T200000
 361.230 +END:DAYLIGHT
 361.231 +END:VTIMEZONE
 361.232 +END:VCALENDAR
   362.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   362.2 +++ b/src/zoneinfo-global/America/Havana.ics	Tue Feb 10 18:12:00 2015 +0100
   362.3 @@ -0,0 +1,151 @@
   362.4 +BEGIN:VCALENDAR
   362.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   362.6 +VERSION:2.0
   362.7 +BEGIN:VTIMEZONE
   362.8 +TZID:America/Havana
   362.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Havana
  362.10 +X-LIC-LOCATION:America/Havana
  362.11 +BEGIN:DAYLIGHT
  362.12 +TZOFFSETFROM:-0500
  362.13 +TZOFFSETTO:-0400
  362.14 +TZNAME:CDT
  362.15 +DTSTART:20120311T000000
  362.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  362.17 +END:DAYLIGHT
  362.18 +BEGIN:STANDARD
  362.19 +TZOFFSETFROM:-0400
  362.20 +TZOFFSETTO:-0500
  362.21 +TZNAME:CST
  362.22 +DTSTART:20121028T010000
  362.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  362.24 +END:STANDARD
  362.25 +BEGIN:STANDARD
  362.26 +TZOFFSETFROM:-052928
  362.27 +TZOFFSETTO:-052936
  362.28 +TZNAME:HMT
  362.29 +DTSTART:18900101T000000
  362.30 +RDATE:18900101T000000
  362.31 +END:STANDARD
  362.32 +BEGIN:STANDARD
  362.33 +TZOFFSETFROM:-052936
  362.34 +TZOFFSETTO:-0500
  362.35 +TZNAME:CST
  362.36 +DTSTART:19250719T120000
  362.37 +RDATE:19250719T120000
  362.38 +END:STANDARD
  362.39 +BEGIN:DAYLIGHT
  362.40 +TZOFFSETFROM:-0500
  362.41 +TZOFFSETTO:-0400
  362.42 +TZNAME:CDT
  362.43 +DTSTART:19280610T000000
  362.44 +RDATE:19280610T000000
  362.45 +RDATE:19400602T000000
  362.46 +RDATE:19410601T000000
  362.47 +RDATE:19420607T000000
  362.48 +RDATE:19450603T000000
  362.49 +RDATE:19460602T000000
  362.50 +RDATE:19650601T000000
  362.51 +RDATE:19660529T000000
  362.52 +RDATE:19670408T000000
  362.53 +RDATE:19680414T000000
  362.54 +RDATE:19690427T000000
  362.55 +RDATE:19700426T000000
  362.56 +RDATE:19710425T000000
  362.57 +RDATE:19720430T000000
  362.58 +RDATE:19730429T000000
  362.59 +RDATE:19740428T000000
  362.60 +RDATE:19750427T000000
  362.61 +RDATE:19760425T000000
  362.62 +RDATE:19770424T000000
  362.63 +RDATE:19780507T000000
  362.64 +RDATE:19790318T000000
  362.65 +RDATE:19800316T000000
  362.66 +RDATE:19810510T000000
  362.67 +RDATE:19820509T000000
  362.68 +RDATE:19830508T000000
  362.69 +RDATE:19840506T000000
  362.70 +RDATE:19850505T000000
  362.71 +RDATE:19860316T000000
  362.72 +RDATE:19870315T000000
  362.73 +RDATE:19880320T000000
  362.74 +RDATE:19890319T000000
  362.75 +RDATE:19900401T000000
  362.76 +RDATE:19910407T000000
  362.77 +RDATE:19920405T000000
  362.78 +RDATE:19930404T000000
  362.79 +RDATE:19940403T000000
  362.80 +RDATE:19950402T000000
  362.81 +RDATE:19960407T000000
  362.82 +RDATE:19970406T000000
  362.83 +RDATE:19980329T000000
  362.84 +RDATE:19990328T000000
  362.85 +RDATE:20000402T000000
  362.86 +RDATE:20010401T000000
  362.87 +RDATE:20020407T000000
  362.88 +RDATE:20030406T000000
  362.89 +RDATE:20040404T000000
  362.90 +RDATE:20070311T000000
  362.91 +RDATE:20080316T000000
  362.92 +RDATE:20090308T000000
  362.93 +RDATE:20100314T000000
  362.94 +RDATE:20110320T000000
  362.95 +END:DAYLIGHT
  362.96 +BEGIN:STANDARD
  362.97 +TZOFFSETFROM:-0400
  362.98 +TZOFFSETTO:-0500
  362.99 +TZNAME:CST
 362.100 +DTSTART:19281010T000000
 362.101 +RDATE:19281010T000000
 362.102 +RDATE:19400901T000000
 362.103 +RDATE:19410907T000000
 362.104 +RDATE:19420906T000000
 362.105 +RDATE:19450902T000000
 362.106 +RDATE:19460901T000000
 362.107 +RDATE:19650930T000000
 362.108 +RDATE:19661002T000000
 362.109 +RDATE:19670910T000000
 362.110 +RDATE:19680908T000000
 362.111 +RDATE:19691026T000000
 362.112 +RDATE:19701025T000000
 362.113 +RDATE:19711031T000000
 362.114 +RDATE:19721008T000000
 362.115 +RDATE:19731008T000000
 362.116 +RDATE:19741008T000000
 362.117 +RDATE:19751026T000000
 362.118 +RDATE:19761031T000000
 362.119 +RDATE:19771030T000000
 362.120 +RDATE:19781008T000000
 362.121 +RDATE:19791014T000000
 362.122 +RDATE:19801012T000000
 362.123 +RDATE:19811011T000000
 362.124 +RDATE:19821010T000000
 362.125 +RDATE:19831009T000000
 362.126 +RDATE:19841014T000000
 362.127 +RDATE:19851013T000000
 362.128 +RDATE:19861012T000000
 362.129 +RDATE:19871011T000000
 362.130 +RDATE:19881009T000000
 362.131 +RDATE:19891008T000000
 362.132 +RDATE:19901014T000000
 362.133 +RDATE:19911013T010000
 362.134 +RDATE:19921011T010000
 362.135 +RDATE:19931010T010000
 362.136 +RDATE:19941009T010000
 362.137 +RDATE:19951008T010000
 362.138 +RDATE:19961006T010000
 362.139 +RDATE:19971012T010000
 362.140 +RDATE:19981025T010000
 362.141 +RDATE:19991031T010000
 362.142 +RDATE:20001029T010000
 362.143 +RDATE:20011028T010000
 362.144 +RDATE:20021027T010000
 362.145 +RDATE:20031026T010000
 362.146 +RDATE:20061029T010000
 362.147 +RDATE:20071028T010000
 362.148 +RDATE:20081026T010000
 362.149 +RDATE:20091025T010000
 362.150 +RDATE:20101031T010000
 362.151 +RDATE:20111113T010000
 362.152 +END:STANDARD
 362.153 +END:VTIMEZONE
 362.154 +END:VCALENDAR
   363.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   363.2 +++ b/src/zoneinfo-global/America/Hermosillo.ics	Tue Feb 10 18:12:00 2015 +0100
   363.3 @@ -0,0 +1,67 @@
   363.4 +BEGIN:VCALENDAR
   363.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   363.6 +VERSION:2.0
   363.7 +BEGIN:VTIMEZONE
   363.8 +TZID:America/Hermosillo
   363.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Hermosillo
  363.10 +X-LIC-LOCATION:America/Hermosillo
  363.11 +BEGIN:STANDARD
  363.12 +TZOFFSETFROM:-072352
  363.13 +TZOFFSETTO:-0700
  363.14 +TZNAME:MST
  363.15 +DTSTART:19211231T233608
  363.16 +RDATE:19211231T233608
  363.17 +END:STANDARD
  363.18 +BEGIN:STANDARD
  363.19 +TZOFFSETFROM:-0700
  363.20 +TZOFFSETTO:-0600
  363.21 +TZNAME:CST
  363.22 +DTSTART:19270610T230000
  363.23 +RDATE:19270610T230000
  363.24 +RDATE:19310501T230000
  363.25 +RDATE:19320401T000000
  363.26 +END:STANDARD
  363.27 +BEGIN:STANDARD
  363.28 +TZOFFSETFROM:-0600
  363.29 +TZOFFSETTO:-0700
  363.30 +TZNAME:MST
  363.31 +DTSTART:19301115T000000
  363.32 +RDATE:19301115T000000
  363.33 +RDATE:19311001T000000
  363.34 +RDATE:19420424T000000
  363.35 +RDATE:19961027T020000
  363.36 +RDATE:19971026T020000
  363.37 +RDATE:19981025T020000
  363.38 +END:STANDARD
  363.39 +BEGIN:STANDARD
  363.40 +TZOFFSETFROM:-0700
  363.41 +TZOFFSETTO:-0800
  363.42 +TZNAME:PST
  363.43 +DTSTART:19490114T000000
  363.44 +RDATE:19490114T000000
  363.45 +END:STANDARD
  363.46 +BEGIN:STANDARD
  363.47 +TZOFFSETFROM:-0800
  363.48 +TZOFFSETTO:-0700
  363.49 +TZNAME:MST
  363.50 +DTSTART:19700101T000000
  363.51 +RDATE:19700101T000000
  363.52 +END:STANDARD
  363.53 +BEGIN:DAYLIGHT
  363.54 +TZOFFSETFROM:-0700
  363.55 +TZOFFSETTO:-0600
  363.56 +TZNAME:MDT
  363.57 +DTSTART:19960407T020000
  363.58 +RDATE:19960407T020000
  363.59 +RDATE:19970406T020000
  363.60 +RDATE:19980405T020000
  363.61 +END:DAYLIGHT
  363.62 +BEGIN:STANDARD
  363.63 +TZOFFSETFROM:-0700
  363.64 +TZOFFSETTO:-0700
  363.65 +TZNAME:MST
  363.66 +DTSTART:19990101T000000
  363.67 +RDATE:19990101T000000
  363.68 +END:STANDARD
  363.69 +END:VTIMEZONE
  363.70 +END:VCALENDAR
   364.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   364.2 +++ b/src/zoneinfo-global/America/Indiana/Indianapolis.ics	Tue Feb 10 18:12:00 2015 +0100
   364.3 @@ -0,0 +1,126 @@
   364.4 +BEGIN:VCALENDAR
   364.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   364.6 +VERSION:2.0
   364.7 +BEGIN:VTIMEZONE
   364.8 +TZID:America/Indiana/Indianapolis
   364.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Indiana/Indianapolis
  364.10 +X-LIC-LOCATION:America/Indiana/Indianapolis
  364.11 +BEGIN:DAYLIGHT
  364.12 +TZOFFSETFROM:-0500
  364.13 +TZOFFSETTO:-0400
  364.14 +TZNAME:EDT
  364.15 +DTSTART:20070311T020000
  364.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  364.17 +END:DAYLIGHT
  364.18 +BEGIN:STANDARD
  364.19 +TZOFFSETFROM:-0400
  364.20 +TZOFFSETTO:-0500
  364.21 +TZNAME:EST
  364.22 +DTSTART:20071104T020000
  364.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  364.24 +END:STANDARD
  364.25 +BEGIN:STANDARD
  364.26 +TZOFFSETFROM:-054438
  364.27 +TZOFFSETTO:-0600
  364.28 +TZNAME:CST
  364.29 +DTSTART:18831118T121522
  364.30 +RDATE:18831118T121522
  364.31 +END:STANDARD
  364.32 +BEGIN:DAYLIGHT
  364.33 +TZOFFSETFROM:-0600
  364.34 +TZOFFSETTO:-0500
  364.35 +TZNAME:CDT
  364.36 +DTSTART:19180331T020000
  364.37 +RDATE:19180331T020000
  364.38 +RDATE:19190330T020000
  364.39 +RDATE:19410622T020000
  364.40 +RDATE:19460428T020000
  364.41 +RDATE:19470427T020000
  364.42 +RDATE:19480425T020000
  364.43 +RDATE:19490424T020000
  364.44 +RDATE:19500430T020000
  364.45 +RDATE:19510429T020000
  364.46 +RDATE:19520427T020000
  364.47 +RDATE:19530426T020000
  364.48 +RDATE:19540425T020000
  364.49 +END:DAYLIGHT
  364.50 +BEGIN:STANDARD
  364.51 +TZOFFSETFROM:-0500
  364.52 +TZOFFSETTO:-0600
  364.53 +TZNAME:CST
  364.54 +DTSTART:19181027T020000
  364.55 +RDATE:19181027T020000
  364.56 +RDATE:19191026T020000
  364.57 +RDATE:19410928T020000
  364.58 +RDATE:19450930T020000
  364.59 +RDATE:19460929T020000
  364.60 +RDATE:19470928T020000
  364.61 +RDATE:19480926T020000
  364.62 +RDATE:19490925T020000
  364.63 +RDATE:19500924T020000
  364.64 +RDATE:19510930T020000
  364.65 +RDATE:19520928T020000
  364.66 +RDATE:19530927T020000
  364.67 +RDATE:19540926T020000
  364.68 +RDATE:19570929T020000
  364.69 +END:STANDARD
  364.70 +BEGIN:STANDARD
  364.71 +TZOFFSETFROM:-0600
  364.72 +TZOFFSETTO:-0600
  364.73 +TZNAME:CST
  364.74 +DTSTART:19200101T000000
  364.75 +RDATE:19200101T000000
  364.76 +RDATE:19420101T000000
  364.77 +RDATE:19460101T000000
  364.78 +END:STANDARD
  364.79 +BEGIN:DAYLIGHT
  364.80 +TZOFFSETFROM:-0600
  364.81 +TZOFFSETTO:-0500
  364.82 +TZNAME:CWT
  364.83 +DTSTART:19420209T020000
  364.84 +RDATE:19420209T020000
  364.85 +END:DAYLIGHT
  364.86 +BEGIN:DAYLIGHT
  364.87 +TZOFFSETFROM:-0500
  364.88 +TZOFFSETTO:-0500
  364.89 +TZNAME:CPT
  364.90 +DTSTART:19450814T180000
  364.91 +RDATE:19450814T180000
  364.92 +END:DAYLIGHT
  364.93 +BEGIN:STANDARD
  364.94 +TZOFFSETFROM:-0600
  364.95 +TZOFFSETTO:-0500
  364.96 +TZNAME:EST
  364.97 +DTSTART:19550424T020000
  364.98 +RDATE:19550424T020000
  364.99 +RDATE:19580427T020000
 364.100 +END:STANDARD
 364.101 +BEGIN:STANDARD
 364.102 +TZOFFSETFROM:-0500
 364.103 +TZOFFSETTO:-0500
 364.104 +TZNAME:EST
 364.105 +DTSTART:19690101T000000
 364.106 +RDATE:19690101T000000
 364.107 +RDATE:19710101T000000
 364.108 +RDATE:20060101T000000
 364.109 +END:STANDARD
 364.110 +BEGIN:DAYLIGHT
 364.111 +TZOFFSETFROM:-0500
 364.112 +TZOFFSETTO:-0400
 364.113 +TZNAME:EDT
 364.114 +DTSTART:19690427T020000
 364.115 +RDATE:19690427T020000
 364.116 +RDATE:19700426T020000
 364.117 +RDATE:20060402T020000
 364.118 +END:DAYLIGHT
 364.119 +BEGIN:STANDARD
 364.120 +TZOFFSETFROM:-0400
 364.121 +TZOFFSETTO:-0500
 364.122 +TZNAME:EST
 364.123 +DTSTART:19691026T020000
 364.124 +RDATE:19691026T020000
 364.125 +RDATE:19701025T020000
 364.126 +RDATE:20061029T020000
 364.127 +END:STANDARD
 364.128 +END:VTIMEZONE
 364.129 +END:VCALENDAR
   365.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   365.2 +++ b/src/zoneinfo-global/America/Indiana/Knox.ics	Tue Feb 10 18:12:00 2015 +0100
   365.3 @@ -0,0 +1,170 @@
   365.4 +BEGIN:VCALENDAR
   365.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   365.6 +VERSION:2.0
   365.7 +BEGIN:VTIMEZONE
   365.8 +TZID:America/Indiana/Knox
   365.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Indiana/Knox
  365.10 +X-LIC-LOCATION:America/Indiana/Knox
  365.11 +BEGIN:DAYLIGHT
  365.12 +TZOFFSETFROM:-0600
  365.13 +TZOFFSETTO:-0500
  365.14 +TZNAME:CDT
  365.15 +DTSTART:20070311T020000
  365.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  365.17 +END:DAYLIGHT
  365.18 +BEGIN:STANDARD
  365.19 +TZOFFSETFROM:-0500
  365.20 +TZOFFSETTO:-0600
  365.21 +TZNAME:CST
  365.22 +DTSTART:20071104T020000
  365.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  365.24 +END:STANDARD
  365.25 +BEGIN:STANDARD
  365.26 +TZOFFSETFROM:-054630
  365.27 +TZOFFSETTO:-0600
  365.28 +TZNAME:CST
  365.29 +DTSTART:18831118T121330
  365.30 +RDATE:18831118T121330
  365.31 +END:STANDARD
  365.32 +BEGIN:DAYLIGHT
  365.33 +TZOFFSETFROM:-0600
  365.34 +TZOFFSETTO:-0500
  365.35 +TZNAME:CDT
  365.36 +DTSTART:19180331T020000
  365.37 +RDATE:19180331T020000
  365.38 +RDATE:19190330T020000
  365.39 +RDATE:19470427T020000
  365.40 +RDATE:19480425T020000
  365.41 +RDATE:19490424T020000
  365.42 +RDATE:19500430T020000
  365.43 +RDATE:19510429T020000
  365.44 +RDATE:19520427T020000
  365.45 +RDATE:19530426T020000
  365.46 +RDATE:19540425T020000
  365.47 +RDATE:19550424T020000
  365.48 +RDATE:19560429T020000
  365.49 +RDATE:19570428T020000
  365.50 +RDATE:19580427T020000
  365.51 +RDATE:19590426T020000
  365.52 +RDATE:19600424T020000
  365.53 +RDATE:19610430T020000
  365.54 +RDATE:19670430T020000
  365.55 +RDATE:19680428T020000
  365.56 +RDATE:19690427T020000
  365.57 +RDATE:19700426T020000
  365.58 +RDATE:19710425T020000
  365.59 +RDATE:19720430T020000
  365.60 +RDATE:19730429T020000
  365.61 +RDATE:19740106T020000
  365.62 +RDATE:19750223T020000
  365.63 +RDATE:19760425T020000
  365.64 +RDATE:19770424T020000
  365.65 +RDATE:19780430T020000
  365.66 +RDATE:19790429T020000
  365.67 +RDATE:19800427T020000
  365.68 +RDATE:19810426T020000
  365.69 +RDATE:19820425T020000
  365.70 +RDATE:19830424T020000
  365.71 +RDATE:19840429T020000
  365.72 +RDATE:19850428T020000
  365.73 +RDATE:19860427T020000
  365.74 +RDATE:19870405T020000
  365.75 +RDATE:19880403T020000
  365.76 +RDATE:19890402T020000
  365.77 +RDATE:19900401T020000
  365.78 +RDATE:19910407T020000
  365.79 +END:DAYLIGHT
  365.80 +BEGIN:STANDARD
  365.81 +TZOFFSETFROM:-0500
  365.82 +TZOFFSETTO:-0600
  365.83 +TZNAME:CST
  365.84 +DTSTART:19181027T020000
  365.85 +RDATE:19181027T020000
  365.86 +RDATE:19191026T020000
  365.87 +RDATE:19450930T020000
  365.88 +RDATE:19470928T020000
  365.89 +RDATE:19480926T020000
  365.90 +RDATE:19490925T020000
  365.91 +RDATE:19500924T020000
  365.92 +RDATE:19510930T020000
  365.93 +RDATE:19520928T020000
  365.94 +RDATE:19530927T020000
  365.95 +RDATE:19540926T020000
  365.96 +RDATE:19551030T020000
  365.97 +RDATE:19561028T020000
  365.98 +RDATE:19570929T020000
  365.99 +RDATE:19580928T020000
 365.100 +RDATE:19591025T020000
 365.101 +RDATE:19601030T020000
 365.102 +RDATE:19611029T020000
 365.103 +RDATE:19631027T020000
 365.104 +RDATE:19671029T020000
 365.105 +RDATE:19681027T020000
 365.106 +RDATE:19691026T020000
 365.107 +RDATE:19701025T020000
 365.108 +RDATE:19711031T020000
 365.109 +RDATE:19721029T020000
 365.110 +RDATE:19731028T020000
 365.111 +RDATE:19741027T020000
 365.112 +RDATE:19751026T020000
 365.113 +RDATE:19761031T020000
 365.114 +RDATE:19771030T020000
 365.115 +RDATE:19781029T020000
 365.116 +RDATE:19791028T020000
 365.117 +RDATE:19801026T020000
 365.118 +RDATE:19811025T020000
 365.119 +RDATE:19821031T020000
 365.120 +RDATE:19831030T020000
 365.121 +RDATE:19841028T020000
 365.122 +RDATE:19851027T020000
 365.123 +RDATE:19861026T020000
 365.124 +RDATE:19871025T020000
 365.125 +RDATE:19881030T020000
 365.126 +RDATE:19891029T020000
 365.127 +RDATE:19901028T020000
 365.128 +RDATE:20061029T020000
 365.129 +END:STANDARD
 365.130 +BEGIN:DAYLIGHT
 365.131 +TZOFFSETFROM:-0600
 365.132 +TZOFFSETTO:-0500
 365.133 +TZNAME:CWT
 365.134 +DTSTART:19420209T020000
 365.135 +RDATE:19420209T020000
 365.136 +END:DAYLIGHT
 365.137 +BEGIN:DAYLIGHT
 365.138 +TZOFFSETFROM:-0500
 365.139 +TZOFFSETTO:-0500
 365.140 +TZNAME:CPT
 365.141 +DTSTART:19450814T180000
 365.142 +RDATE:19450814T180000
 365.143 +END:DAYLIGHT
 365.144 +BEGIN:STANDARD
 365.145 +TZOFFSETFROM:-0600
 365.146 +TZOFFSETTO:-0600
 365.147 +TZNAME:CST
 365.148 +DTSTART:19470101T000000
 365.149 +RDATE:19470101T000000
 365.150 +END:STANDARD
 365.151 +BEGIN:STANDARD
 365.152 +TZOFFSETFROM:-0600
 365.153 +TZOFFSETTO:-0500
 365.154 +TZNAME:EST
 365.155 +DTSTART:19620429T020000
 365.156 +RDATE:19620429T020000
 365.157 +END:STANDARD
 365.158 +BEGIN:STANDARD
 365.159 +TZOFFSETFROM:-0500
 365.160 +TZOFFSETTO:-0500
 365.161 +TZNAME:EST
 365.162 +DTSTART:19911027T020000
 365.163 +RDATE:19911027T020000
 365.164 +END:STANDARD
 365.165 +BEGIN:DAYLIGHT
 365.166 +TZOFFSETFROM:-0500
 365.167 +TZOFFSETTO:-0500
 365.168 +TZNAME:CDT
 365.169 +DTSTART:20060402T020000
 365.170 +RDATE:20060402T020000
 365.171 +END:DAYLIGHT
 365.172 +END:VTIMEZONE
 365.173 +END:VCALENDAR
   366.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   366.2 +++ b/src/zoneinfo-global/America/Indiana/Marengo.ics	Tue Feb 10 18:12:00 2015 +0100
   366.3 @@ -0,0 +1,134 @@
   366.4 +BEGIN:VCALENDAR
   366.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   366.6 +VERSION:2.0
   366.7 +BEGIN:VTIMEZONE
   366.8 +TZID:America/Indiana/Marengo
   366.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Indiana/Marengo
  366.10 +X-LIC-LOCATION:America/Indiana/Marengo
  366.11 +BEGIN:DAYLIGHT
  366.12 +TZOFFSETFROM:-0500
  366.13 +TZOFFSETTO:-0400
  366.14 +TZNAME:EDT
  366.15 +DTSTART:20070311T020000
  366.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  366.17 +END:DAYLIGHT
  366.18 +BEGIN:STANDARD
  366.19 +TZOFFSETFROM:-0400
  366.20 +TZOFFSETTO:-0500
  366.21 +TZNAME:EST
  366.22 +DTSTART:20071104T020000
  366.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  366.24 +END:STANDARD
  366.25 +BEGIN:STANDARD
  366.26 +TZOFFSETFROM:-054523
  366.27 +TZOFFSETTO:-0600
  366.28 +TZNAME:CST
  366.29 +DTSTART:18831118T121437
  366.30 +RDATE:18831118T121437
  366.31 +END:STANDARD
  366.32 +BEGIN:DAYLIGHT
  366.33 +TZOFFSETFROM:-0600
  366.34 +TZOFFSETTO:-0500
  366.35 +TZNAME:CDT
  366.36 +DTSTART:19180331T020000
  366.37 +RDATE:19180331T020000
  366.38 +RDATE:19190330T020000
  366.39 +RDATE:19510429T020000
  366.40 +RDATE:19540425T020000
  366.41 +RDATE:19550424T020000
  366.42 +RDATE:19560429T020000
  366.43 +RDATE:19570428T020000
  366.44 +RDATE:19580427T020000
  366.45 +RDATE:19590426T020000
  366.46 +RDATE:19600424T020000
  366.47 +END:DAYLIGHT
  366.48 +BEGIN:STANDARD
  366.49 +TZOFFSETFROM:-0500
  366.50 +TZOFFSETTO:-0600
  366.51 +TZNAME:CST
  366.52 +DTSTART:19181027T020000
  366.53 +RDATE:19181027T020000
  366.54 +RDATE:19191026T020000
  366.55 +RDATE:19450930T020000
  366.56 +RDATE:19510930T020000
  366.57 +RDATE:19540926T020000
  366.58 +RDATE:19550925T020000
  366.59 +RDATE:19560930T020000
  366.60 +RDATE:19570929T020000
  366.61 +RDATE:19580928T020000
  366.62 +RDATE:19590927T020000
  366.63 +RDATE:19600925T020000
  366.64 +END:STANDARD
  366.65 +BEGIN:DAYLIGHT
  366.66 +TZOFFSETFROM:-0600
  366.67 +TZOFFSETTO:-0500
  366.68 +TZNAME:CWT
  366.69 +DTSTART:19420209T020000
  366.70 +RDATE:19420209T020000
  366.71 +END:DAYLIGHT
  366.72 +BEGIN:DAYLIGHT
  366.73 +TZOFFSETFROM:-0500
  366.74 +TZOFFSETTO:-0500
  366.75 +TZNAME:CPT
  366.76 +DTSTART:19450814T180000
  366.77 +RDATE:19450814T180000
  366.78 +END:DAYLIGHT
  366.79 +BEGIN:STANDARD
  366.80 +TZOFFSETFROM:-0600
  366.81 +TZOFFSETTO:-0600
  366.82 +TZNAME:CST
  366.83 +DTSTART:19510101T000000
  366.84 +RDATE:19510101T000000
  366.85 +END:STANDARD
  366.86 +BEGIN:STANDARD
  366.87 +TZOFFSETFROM:-0600
  366.88 +TZOFFSETTO:-0500
  366.89 +TZNAME:EST
  366.90 +DTSTART:19610430T020000
  366.91 +RDATE:19610430T020000
  366.92 +END:STANDARD
  366.93 +BEGIN:STANDARD
  366.94 +TZOFFSETFROM:-0500
  366.95 +TZOFFSETTO:-0500
  366.96 +TZNAME:EST
  366.97 +DTSTART:19690101T000000
  366.98 +RDATE:19690101T000000
  366.99 +RDATE:19741027T020000
 366.100 +RDATE:19760101T000000
 366.101 +RDATE:20060101T000000
 366.102 +END:STANDARD
 366.103 +BEGIN:DAYLIGHT
 366.104 +TZOFFSETFROM:-0500
 366.105 +TZOFFSETTO:-0400
 366.106 +TZNAME:EDT
 366.107 +DTSTART:19690427T020000
 366.108 +RDATE:19690427T020000
 366.109 +RDATE:19700426T020000
 366.110 +RDATE:19710425T020000
 366.111 +RDATE:19720430T020000
 366.112 +RDATE:19730429T020000
 366.113 +RDATE:19750223T020000
 366.114 +RDATE:20060402T020000
 366.115 +END:DAYLIGHT
 366.116 +BEGIN:STANDARD
 366.117 +TZOFFSETFROM:-0400
 366.118 +TZOFFSETTO:-0500
 366.119 +TZNAME:EST
 366.120 +DTSTART:19691026T020000
 366.121 +RDATE:19691026T020000
 366.122 +RDATE:19701025T020000
 366.123 +RDATE:19711031T020000
 366.124 +RDATE:19721029T020000
 366.125 +RDATE:19731028T020000
 366.126 +RDATE:19751026T020000
 366.127 +RDATE:20061029T020000
 366.128 +END:STANDARD
 366.129 +BEGIN:DAYLIGHT
 366.130 +TZOFFSETFROM:-0500
 366.131 +TZOFFSETTO:-0500
 366.132 +TZNAME:CDT
 366.133 +DTSTART:19740106T020000
 366.134 +RDATE:19740106T020000
 366.135 +END:DAYLIGHT
 366.136 +END:VTIMEZONE
 366.137 +END:VCALENDAR
   367.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   367.2 +++ b/src/zoneinfo-global/America/Indiana/Petersburg.ics	Tue Feb 10 18:12:00 2015 +0100
   367.3 @@ -0,0 +1,134 @@
   367.4 +BEGIN:VCALENDAR
   367.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   367.6 +VERSION:2.0
   367.7 +BEGIN:VTIMEZONE
   367.8 +TZID:America/Indiana/Petersburg
   367.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Indiana/Petersburg
  367.10 +X-LIC-LOCATION:America/Indiana/Petersburg
  367.11 +BEGIN:DAYLIGHT
  367.12 +TZOFFSETFROM:-0500
  367.13 +TZOFFSETTO:-0400
  367.14 +TZNAME:EDT
  367.15 +DTSTART:20080309T020000
  367.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  367.17 +END:DAYLIGHT
  367.18 +BEGIN:STANDARD
  367.19 +TZOFFSETFROM:-0400
  367.20 +TZOFFSETTO:-0500
  367.21 +TZNAME:EST
  367.22 +DTSTART:20081102T020000
  367.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  367.24 +END:STANDARD
  367.25 +BEGIN:STANDARD
  367.26 +TZOFFSETFROM:-054907
  367.27 +TZOFFSETTO:-0600
  367.28 +TZNAME:CST
  367.29 +DTSTART:18831118T121053
  367.30 +RDATE:18831118T121053
  367.31 +END:STANDARD
  367.32 +BEGIN:DAYLIGHT
  367.33 +TZOFFSETFROM:-0600
  367.34 +TZOFFSETTO:-0500
  367.35 +TZNAME:CDT
  367.36 +DTSTART:19180331T020000
  367.37 +RDATE:19180331T020000
  367.38 +RDATE:19190330T020000
  367.39 +RDATE:19550501T000000
  367.40 +RDATE:19560429T020000
  367.41 +RDATE:19570428T020000
  367.42 +RDATE:19580427T020000
  367.43 +RDATE:19590426T020000
  367.44 +RDATE:19600424T020000
  367.45 +RDATE:19610430T020000
  367.46 +RDATE:19620429T020000
  367.47 +RDATE:19630428T020000
  367.48 +RDATE:19640426T020000
  367.49 +RDATE:19670430T020000
  367.50 +RDATE:19680428T020000
  367.51 +RDATE:19690427T020000
  367.52 +RDATE:19700426T020000
  367.53 +RDATE:19710425T020000
  367.54 +RDATE:19720430T020000
  367.55 +RDATE:19730429T020000
  367.56 +RDATE:19740106T020000
  367.57 +RDATE:19750223T020000
  367.58 +RDATE:19760425T020000
  367.59 +RDATE:19770424T020000
  367.60 +RDATE:20070311T020000
  367.61 +END:DAYLIGHT
  367.62 +BEGIN:STANDARD
  367.63 +TZOFFSETFROM:-0500
  367.64 +TZOFFSETTO:-0600
  367.65 +TZNAME:CST
  367.66 +DTSTART:19181027T020000
  367.67 +RDATE:19181027T020000
  367.68 +RDATE:19191026T020000
  367.69 +RDATE:19450930T020000
  367.70 +RDATE:19550925T020000
  367.71 +RDATE:19560930T020000
  367.72 +RDATE:19570929T020000
  367.73 +RDATE:19580928T020000
  367.74 +RDATE:19590927T020000
  367.75 +RDATE:19600925T020000
  367.76 +RDATE:19611029T020000
  367.77 +RDATE:19621028T020000
  367.78 +RDATE:19631027T020000
  367.79 +RDATE:19641025T020000
  367.80 +RDATE:19661030T020000
  367.81 +RDATE:19671029T020000
  367.82 +RDATE:19681027T020000
  367.83 +RDATE:19691026T020000
  367.84 +RDATE:19701025T020000
  367.85 +RDATE:19711031T020000
  367.86 +RDATE:19721029T020000
  367.87 +RDATE:19731028T020000
  367.88 +RDATE:19741027T020000
  367.89 +RDATE:19751026T020000
  367.90 +RDATE:19761031T020000
  367.91 +RDATE:20061029T020000
  367.92 +END:STANDARD
  367.93 +BEGIN:DAYLIGHT
  367.94 +TZOFFSETFROM:-0600
  367.95 +TZOFFSETTO:-0500
  367.96 +TZNAME:CWT
  367.97 +DTSTART:19420209T020000
  367.98 +RDATE:19420209T020000
  367.99 +END:DAYLIGHT
 367.100 +BEGIN:DAYLIGHT
 367.101 +TZOFFSETFROM:-0500
 367.102 +TZOFFSETTO:-0500
 367.103 +TZNAME:CPT
 367.104 +DTSTART:19450814T180000
 367.105 +RDATE:19450814T180000
 367.106 +END:DAYLIGHT
 367.107 +BEGIN:STANDARD
 367.108 +TZOFFSETFROM:-0600
 367.109 +TZOFFSETTO:-0600
 367.110 +TZNAME:CST
 367.111 +DTSTART:19550101T000000
 367.112 +RDATE:19550101T000000
 367.113 +END:STANDARD
 367.114 +BEGIN:STANDARD
 367.115 +TZOFFSETFROM:-0600
 367.116 +TZOFFSETTO:-0500
 367.117 +TZNAME:EST
 367.118 +DTSTART:19650425T020000
 367.119 +RDATE:19650425T020000
 367.120 +END:STANDARD
 367.121 +BEGIN:STANDARD
 367.122 +TZOFFSETFROM:-0500
 367.123 +TZOFFSETTO:-0500
 367.124 +TZNAME:EST
 367.125 +DTSTART:19771030T020000
 367.126 +RDATE:19771030T020000
 367.127 +RDATE:20071104T020000
 367.128 +END:STANDARD
 367.129 +BEGIN:DAYLIGHT
 367.130 +TZOFFSETFROM:-0500
 367.131 +TZOFFSETTO:-0500
 367.132 +TZNAME:CDT
 367.133 +DTSTART:20060402T020000
 367.134 +RDATE:20060402T020000
 367.135 +END:DAYLIGHT
 367.136 +END:VTIMEZONE
 367.137 +END:VCALENDAR
   368.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   368.2 +++ b/src/zoneinfo-global/America/Indiana/Tell_City.ics	Tue Feb 10 18:12:00 2015 +0100
   368.3 @@ -0,0 +1,131 @@
   368.4 +BEGIN:VCALENDAR
   368.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   368.6 +VERSION:2.0
   368.7 +BEGIN:VTIMEZONE
   368.8 +TZID:America/Indiana/Tell_City
   368.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Indiana/Tell_City
  368.10 +X-LIC-LOCATION:America/Indiana/Tell_City
  368.11 +BEGIN:DAYLIGHT
  368.12 +TZOFFSETFROM:-0600
  368.13 +TZOFFSETTO:-0500
  368.14 +TZNAME:CDT
  368.15 +DTSTART:20070311T020000
  368.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  368.17 +END:DAYLIGHT
  368.18 +BEGIN:STANDARD
  368.19 +TZOFFSETFROM:-0500
  368.20 +TZOFFSETTO:-0600
  368.21 +TZNAME:CST
  368.22 +DTSTART:20071104T020000
  368.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  368.24 +END:STANDARD
  368.25 +BEGIN:STANDARD
  368.26 +TZOFFSETFROM:-054703
  368.27 +TZOFFSETTO:-0600
  368.28 +TZNAME:CST
  368.29 +DTSTART:18831118T121257
  368.30 +RDATE:18831118T121257
  368.31 +END:STANDARD
  368.32 +BEGIN:DAYLIGHT
  368.33 +TZOFFSETFROM:-0600
  368.34 +TZOFFSETTO:-0500
  368.35 +TZNAME:CDT
  368.36 +DTSTART:19180331T020000
  368.37 +RDATE:19180331T020000
  368.38 +RDATE:19190330T020000
  368.39 +RDATE:19460428T020000
  368.40 +RDATE:19530426T020000
  368.41 +RDATE:19540425T020000
  368.42 +RDATE:19550501T000000
  368.43 +RDATE:19560429T020000
  368.44 +RDATE:19570428T020000
  368.45 +RDATE:19580427T020000
  368.46 +RDATE:19590426T020000
  368.47 +RDATE:19600424T020000
  368.48 +RDATE:19610430T020000
  368.49 +RDATE:19620429T020000
  368.50 +RDATE:19630428T020000
  368.51 +END:DAYLIGHT
  368.52 +BEGIN:STANDARD
  368.53 +TZOFFSETFROM:-0500
  368.54 +TZOFFSETTO:-0600
  368.55 +TZNAME:CST
  368.56 +DTSTART:19181027T020000
  368.57 +RDATE:19181027T020000
  368.58 +RDATE:19191026T020000
  368.59 +RDATE:19450930T020000
  368.60 +RDATE:19460929T020000
  368.61 +RDATE:19530927T020000
  368.62 +RDATE:19540926T020000
  368.63 +RDATE:19550925T020000
  368.64 +RDATE:19560930T020000
  368.65 +RDATE:19570929T020000
  368.66 +RDATE:19580928T020000
  368.67 +RDATE:19590927T020000
  368.68 +RDATE:19601030T020000
  368.69 +RDATE:19610924T020000
  368.70 +RDATE:19621028T020000
  368.71 +RDATE:19631027T020000
  368.72 +RDATE:20061029T020000
  368.73 +END:STANDARD
  368.74 +BEGIN:DAYLIGHT
  368.75 +TZOFFSETFROM:-0600
  368.76 +TZOFFSETTO:-0500
  368.77 +TZNAME:CWT
  368.78 +DTSTART:19420209T020000
  368.79 +RDATE:19420209T020000
  368.80 +END:DAYLIGHT
  368.81 +BEGIN:DAYLIGHT
  368.82 +TZOFFSETFROM:-0500
  368.83 +TZOFFSETTO:-0500
  368.84 +TZNAME:CPT
  368.85 +DTSTART:19450814T180000
  368.86 +RDATE:19450814T180000
  368.87 +END:DAYLIGHT
  368.88 +BEGIN:STANDARD
  368.89 +TZOFFSETFROM:-0600
  368.90 +TZOFFSETTO:-0600
  368.91 +TZNAME:CST
  368.92 +DTSTART:19460101T000000
  368.93 +RDATE:19460101T000000
  368.94 +END:STANDARD
  368.95 +BEGIN:STANDARD
  368.96 +TZOFFSETFROM:-0600
  368.97 +TZOFFSETTO:-0500
  368.98 +TZNAME:EST
  368.99 +DTSTART:19640426T020000
 368.100 +RDATE:19640426T020000
 368.101 +END:STANDARD
 368.102 +BEGIN:STANDARD
 368.103 +TZOFFSETFROM:-0500
 368.104 +TZOFFSETTO:-0500
 368.105 +TZNAME:EST
 368.106 +DTSTART:19690101T000000
 368.107 +RDATE:19690101T000000
 368.108 +RDATE:19710101T000000
 368.109 +END:STANDARD
 368.110 +BEGIN:DAYLIGHT
 368.111 +TZOFFSETFROM:-0500
 368.112 +TZOFFSETTO:-0400
 368.113 +TZNAME:EDT
 368.114 +DTSTART:19690427T020000
 368.115 +RDATE:19690427T020000
 368.116 +RDATE:19700426T020000
 368.117 +END:DAYLIGHT
 368.118 +BEGIN:STANDARD
 368.119 +TZOFFSETFROM:-0400
 368.120 +TZOFFSETTO:-0500
 368.121 +TZNAME:EST
 368.122 +DTSTART:19691026T020000
 368.123 +RDATE:19691026T020000
 368.124 +RDATE:19701025T020000
 368.125 +END:STANDARD
 368.126 +BEGIN:DAYLIGHT
 368.127 +TZOFFSETFROM:-0500
 368.128 +TZOFFSETTO:-0500
 368.129 +TZNAME:CDT
 368.130 +DTSTART:20060402T020000
 368.131 +RDATE:20060402T020000
 368.132 +END:DAYLIGHT
 368.133 +END:VTIMEZONE
 368.134 +END:VCALENDAR
   369.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   369.2 +++ b/src/zoneinfo-global/America/Indiana/Vevay.ics	Tue Feb 10 18:12:00 2015 +0100
   369.3 @@ -0,0 +1,99 @@
   369.4 +BEGIN:VCALENDAR
   369.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   369.6 +VERSION:2.0
   369.7 +BEGIN:VTIMEZONE
   369.8 +TZID:America/Indiana/Vevay
   369.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Indiana/Vevay
  369.10 +X-LIC-LOCATION:America/Indiana/Vevay
  369.11 +BEGIN:DAYLIGHT
  369.12 +TZOFFSETFROM:-0500
  369.13 +TZOFFSETTO:-0400
  369.14 +TZNAME:EDT
  369.15 +DTSTART:20070311T020000
  369.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  369.17 +END:DAYLIGHT
  369.18 +BEGIN:STANDARD
  369.19 +TZOFFSETFROM:-0400
  369.20 +TZOFFSETTO:-0500
  369.21 +TZNAME:EST
  369.22 +DTSTART:20071104T020000
  369.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  369.24 +END:STANDARD
  369.25 +BEGIN:STANDARD
  369.26 +TZOFFSETFROM:-054016
  369.27 +TZOFFSETTO:-0600
  369.28 +TZNAME:CST
  369.29 +DTSTART:18831118T121944
  369.30 +RDATE:18831118T121944
  369.31 +END:STANDARD
  369.32 +BEGIN:DAYLIGHT
  369.33 +TZOFFSETFROM:-0600
  369.34 +TZOFFSETTO:-0500
  369.35 +TZNAME:CDT
  369.36 +DTSTART:19180331T020000
  369.37 +RDATE:19180331T020000
  369.38 +RDATE:19190330T020000
  369.39 +END:DAYLIGHT
  369.40 +BEGIN:STANDARD
  369.41 +TZOFFSETFROM:-0500
  369.42 +TZOFFSETTO:-0600
  369.43 +TZNAME:CST
  369.44 +DTSTART:19181027T020000
  369.45 +RDATE:19181027T020000
  369.46 +RDATE:19191026T020000
  369.47 +RDATE:19450930T020000
  369.48 +END:STANDARD
  369.49 +BEGIN:DAYLIGHT
  369.50 +TZOFFSETFROM:-0600
  369.51 +TZOFFSETTO:-0500
  369.52 +TZNAME:CWT
  369.53 +DTSTART:19420209T020000
  369.54 +RDATE:19420209T020000
  369.55 +END:DAYLIGHT
  369.56 +BEGIN:DAYLIGHT
  369.57 +TZOFFSETFROM:-0500
  369.58 +TZOFFSETTO:-0500
  369.59 +TZNAME:CPT
  369.60 +DTSTART:19450814T180000
  369.61 +RDATE:19450814T180000
  369.62 +END:DAYLIGHT
  369.63 +BEGIN:STANDARD
  369.64 +TZOFFSETFROM:-0600
  369.65 +TZOFFSETTO:-0500
  369.66 +TZNAME:EST
  369.67 +DTSTART:19540425T020000
  369.68 +RDATE:19540425T020000
  369.69 +END:STANDARD
  369.70 +BEGIN:STANDARD
  369.71 +TZOFFSETFROM:-0500
  369.72 +TZOFFSETTO:-0500
  369.73 +TZNAME:EST
  369.74 +DTSTART:19690101T000000
  369.75 +RDATE:19690101T000000
  369.76 +RDATE:19730101T000000
  369.77 +RDATE:20060101T000000
  369.78 +END:STANDARD
  369.79 +BEGIN:DAYLIGHT
  369.80 +TZOFFSETFROM:-0500
  369.81 +TZOFFSETTO:-0400
  369.82 +TZNAME:EDT
  369.83 +DTSTART:19690427T020000
  369.84 +RDATE:19690427T020000
  369.85 +RDATE:19700426T020000
  369.86 +RDATE:19710425T020000
  369.87 +RDATE:19720430T020000
  369.88 +RDATE:20060402T020000
  369.89 +END:DAYLIGHT
  369.90 +BEGIN:STANDARD
  369.91 +TZOFFSETFROM:-0400
  369.92 +TZOFFSETTO:-0500
  369.93 +TZNAME:EST
  369.94 +DTSTART:19691026T020000
  369.95 +RDATE:19691026T020000
  369.96 +RDATE:19701025T020000
  369.97 +RDATE:19711031T020000
  369.98 +RDATE:19721029T020000
  369.99 +RDATE:20061029T020000
 369.100 +END:STANDARD
 369.101 +END:VTIMEZONE
 369.102 +END:VCALENDAR
   370.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   370.2 +++ b/src/zoneinfo-global/America/Indiana/Vincennes.ics	Tue Feb 10 18:12:00 2015 +0100
   370.3 @@ -0,0 +1,133 @@
   370.4 +BEGIN:VCALENDAR
   370.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   370.6 +VERSION:2.0
   370.7 +BEGIN:VTIMEZONE
   370.8 +TZID:America/Indiana/Vincennes
   370.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Indiana/Vincennes
  370.10 +X-LIC-LOCATION:America/Indiana/Vincennes
  370.11 +BEGIN:DAYLIGHT
  370.12 +TZOFFSETFROM:-0500
  370.13 +TZOFFSETTO:-0400
  370.14 +TZNAME:EDT
  370.15 +DTSTART:20080309T020000
  370.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  370.17 +END:DAYLIGHT
  370.18 +BEGIN:STANDARD
  370.19 +TZOFFSETFROM:-0400
  370.20 +TZOFFSETTO:-0500
  370.21 +TZNAME:EST
  370.22 +DTSTART:20081102T020000
  370.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  370.24 +END:STANDARD
  370.25 +BEGIN:STANDARD
  370.26 +TZOFFSETFROM:-055007
  370.27 +TZOFFSETTO:-0600
  370.28 +TZNAME:CST
  370.29 +DTSTART:18831118T120953
  370.30 +RDATE:18831118T120953
  370.31 +END:STANDARD
  370.32 +BEGIN:DAYLIGHT
  370.33 +TZOFFSETFROM:-0600
  370.34 +TZOFFSETTO:-0500
  370.35 +TZNAME:CDT
  370.36 +DTSTART:19180331T020000
  370.37 +RDATE:19180331T020000
  370.38 +RDATE:19190330T020000
  370.39 +RDATE:19460428T020000
  370.40 +RDATE:19530426T020000
  370.41 +RDATE:19540425T020000
  370.42 +RDATE:19550501T000000
  370.43 +RDATE:19560429T020000
  370.44 +RDATE:19570428T020000
  370.45 +RDATE:19580427T020000
  370.46 +RDATE:19590426T020000
  370.47 +RDATE:19600424T020000
  370.48 +RDATE:19610430T020000
  370.49 +RDATE:19620429T020000
  370.50 +RDATE:19630428T020000
  370.51 +RDATE:20070311T020000
  370.52 +END:DAYLIGHT
  370.53 +BEGIN:STANDARD
  370.54 +TZOFFSETFROM:-0500
  370.55 +TZOFFSETTO:-0600
  370.56 +TZNAME:CST
  370.57 +DTSTART:19181027T020000
  370.58 +RDATE:19181027T020000
  370.59 +RDATE:19191026T020000
  370.60 +RDATE:19450930T020000
  370.61 +RDATE:19460929T020000
  370.62 +RDATE:19530927T020000
  370.63 +RDATE:19540926T020000
  370.64 +RDATE:19550925T020000
  370.65 +RDATE:19560930T020000
  370.66 +RDATE:19570929T020000
  370.67 +RDATE:19580928T020000
  370.68 +RDATE:19590927T020000
  370.69 +RDATE:19601030T020000
  370.70 +RDATE:19610924T020000
  370.71 +RDATE:19621028T020000
  370.72 +RDATE:19631027T020000
  370.73 +RDATE:20061029T020000
  370.74 +END:STANDARD
  370.75 +BEGIN:DAYLIGHT
  370.76 +TZOFFSETFROM:-0600
  370.77 +TZOFFSETTO:-0500
  370.78 +TZNAME:CWT
  370.79 +DTSTART:19420209T020000
  370.80 +RDATE:19420209T020000
  370.81 +END:DAYLIGHT
  370.82 +BEGIN:DAYLIGHT
  370.83 +TZOFFSETFROM:-0500
  370.84 +TZOFFSETTO:-0500
  370.85 +TZNAME:CPT
  370.86 +DTSTART:19450814T180000
  370.87 +RDATE:19450814T180000
  370.88 +END:DAYLIGHT
  370.89 +BEGIN:STANDARD
  370.90 +TZOFFSETFROM:-0600
  370.91 +TZOFFSETTO:-0600
  370.92 +TZNAME:CST
  370.93 +DTSTART:19460101T000000
  370.94 +RDATE:19460101T000000
  370.95 +END:STANDARD
  370.96 +BEGIN:STANDARD
  370.97 +TZOFFSETFROM:-0600
  370.98 +TZOFFSETTO:-0500
  370.99 +TZNAME:EST
 370.100 +DTSTART:19640426T020000
 370.101 +RDATE:19640426T020000
 370.102 +END:STANDARD
 370.103 +BEGIN:STANDARD
 370.104 +TZOFFSETFROM:-0500
 370.105 +TZOFFSETTO:-0500
 370.106 +TZNAME:EST
 370.107 +DTSTART:19690101T000000
 370.108 +RDATE:19690101T000000
 370.109 +RDATE:19710101T000000
 370.110 +RDATE:20071104T020000
 370.111 +END:STANDARD
 370.112 +BEGIN:DAYLIGHT
 370.113 +TZOFFSETFROM:-0500
 370.114 +TZOFFSETTO:-0400
 370.115 +TZNAME:EDT
 370.116 +DTSTART:19690427T020000
 370.117 +RDATE:19690427T020000
 370.118 +RDATE:19700426T020000
 370.119 +END:DAYLIGHT
 370.120 +BEGIN:STANDARD
 370.121 +TZOFFSETFROM:-0400
 370.122 +TZOFFSETTO:-0500
 370.123 +TZNAME:EST
 370.124 +DTSTART:19691026T020000
 370.125 +RDATE:19691026T020000
 370.126 +RDATE:19701025T020000
 370.127 +END:STANDARD
 370.128 +BEGIN:DAYLIGHT
 370.129 +TZOFFSETFROM:-0500
 370.130 +TZOFFSETTO:-0500
 370.131 +TZNAME:CDT
 370.132 +DTSTART:20060402T020000
 370.133 +RDATE:20060402T020000
 370.134 +END:DAYLIGHT
 370.135 +END:VTIMEZONE
 370.136 +END:VCALENDAR
   371.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   371.2 +++ b/src/zoneinfo-global/America/Indiana/Winamac.ics	Tue Feb 10 18:12:00 2015 +0100
   371.3 @@ -0,0 +1,144 @@
   371.4 +BEGIN:VCALENDAR
   371.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   371.6 +VERSION:2.0
   371.7 +BEGIN:VTIMEZONE
   371.8 +TZID:America/Indiana/Winamac
   371.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Indiana/Winamac
  371.10 +X-LIC-LOCATION:America/Indiana/Winamac
  371.11 +BEGIN:STANDARD
  371.12 +TZOFFSETFROM:-0400
  371.13 +TZOFFSETTO:-0500
  371.14 +TZNAME:EST
  371.15 +DTSTART:20071104T020000
  371.16 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  371.17 +END:STANDARD
  371.18 +BEGIN:DAYLIGHT
  371.19 +TZOFFSETFROM:-0500
  371.20 +TZOFFSETTO:-0400
  371.21 +TZNAME:EDT
  371.22 +DTSTART:20080309T020000
  371.23 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  371.24 +END:DAYLIGHT
  371.25 +BEGIN:STANDARD
  371.26 +TZOFFSETFROM:-054625
  371.27 +TZOFFSETTO:-0600
  371.28 +TZNAME:CST
  371.29 +DTSTART:18831118T121335
  371.30 +RDATE:18831118T121335
  371.31 +END:STANDARD
  371.32 +BEGIN:DAYLIGHT
  371.33 +TZOFFSETFROM:-0600
  371.34 +TZOFFSETTO:-0500
  371.35 +TZNAME:CDT
  371.36 +DTSTART:19180331T020000
  371.37 +RDATE:19180331T020000
  371.38 +RDATE:19190330T020000
  371.39 +RDATE:19460428T020000
  371.40 +RDATE:19470427T020000
  371.41 +RDATE:19480425T020000
  371.42 +RDATE:19490424T020000
  371.43 +RDATE:19500430T020000
  371.44 +RDATE:19510429T020000
  371.45 +RDATE:19520427T020000
  371.46 +RDATE:19530426T020000
  371.47 +RDATE:19540425T020000
  371.48 +RDATE:19550424T020000
  371.49 +RDATE:19560429T020000
  371.50 +RDATE:19570428T020000
  371.51 +RDATE:19580427T020000
  371.52 +RDATE:19590426T020000
  371.53 +RDATE:19600424T020000
  371.54 +END:DAYLIGHT
  371.55 +BEGIN:STANDARD
  371.56 +TZOFFSETFROM:-0500
  371.57 +TZOFFSETTO:-0600
  371.58 +TZNAME:CST
  371.59 +DTSTART:19181027T020000
  371.60 +RDATE:19181027T020000
  371.61 +RDATE:19191026T020000
  371.62 +RDATE:19450930T020000
  371.63 +RDATE:19460929T020000
  371.64 +RDATE:19470928T020000
  371.65 +RDATE:19480926T020000
  371.66 +RDATE:19490925T020000
  371.67 +RDATE:19500924T020000
  371.68 +RDATE:19510930T020000
  371.69 +RDATE:19520928T020000
  371.70 +RDATE:19530927T020000
  371.71 +RDATE:19540926T020000
  371.72 +RDATE:19551030T020000
  371.73 +RDATE:19561028T020000
  371.74 +RDATE:19570929T020000
  371.75 +RDATE:19580928T020000
  371.76 +RDATE:19590927T020000
  371.77 +RDATE:19600925T020000
  371.78 +RDATE:20061029T020000
  371.79 +END:STANDARD
  371.80 +BEGIN:DAYLIGHT
  371.81 +TZOFFSETFROM:-0600
  371.82 +TZOFFSETTO:-0500
  371.83 +TZNAME:CWT
  371.84 +DTSTART:19420209T020000
  371.85 +RDATE:19420209T020000
  371.86 +END:DAYLIGHT
  371.87 +BEGIN:DAYLIGHT
  371.88 +TZOFFSETFROM:-0500
  371.89 +TZOFFSETTO:-0500
  371.90 +TZNAME:CPT
  371.91 +DTSTART:19450814T180000
  371.92 +RDATE:19450814T180000
  371.93 +END:DAYLIGHT
  371.94 +BEGIN:STANDARD
  371.95 +TZOFFSETFROM:-0600
  371.96 +TZOFFSETTO:-0600
  371.97 +TZNAME:CST
  371.98 +DTSTART:19460101T000000
  371.99 +RDATE:19460101T000000
 371.100 +END:STANDARD
 371.101 +BEGIN:STANDARD
 371.102 +TZOFFSETFROM:-0600
 371.103 +TZOFFSETTO:-0500
 371.104 +TZNAME:EST
 371.105 +DTSTART:19610430T020000
 371.106 +RDATE:19610430T020000
 371.107 +END:STANDARD
 371.108 +BEGIN:STANDARD
 371.109 +TZOFFSETFROM:-0500
 371.110 +TZOFFSETTO:-0500
 371.111 +TZNAME:EST
 371.112 +DTSTART:19690101T000000
 371.113 +RDATE:19690101T000000
 371.114 +RDATE:19710101T000000
 371.115 +END:STANDARD
 371.116 +BEGIN:DAYLIGHT
 371.117 +TZOFFSETFROM:-0500
 371.118 +TZOFFSETTO:-0400
 371.119 +TZNAME:EDT
 371.120 +DTSTART:19690427T020000
 371.121 +RDATE:19690427T020000
 371.122 +RDATE:19700426T020000
 371.123 +END:DAYLIGHT
 371.124 +BEGIN:STANDARD
 371.125 +TZOFFSETFROM:-0400
 371.126 +TZOFFSETTO:-0500
 371.127 +TZNAME:EST
 371.128 +DTSTART:19691026T020000
 371.129 +RDATE:19691026T020000
 371.130 +RDATE:19701025T020000
 371.131 +END:STANDARD
 371.132 +BEGIN:DAYLIGHT
 371.133 +TZOFFSETFROM:-0500
 371.134 +TZOFFSETTO:-0500
 371.135 +TZNAME:CDT
 371.136 +DTSTART:20060402T020000
 371.137 +RDATE:20060402T020000
 371.138 +END:DAYLIGHT
 371.139 +BEGIN:DAYLIGHT
 371.140 +TZOFFSETFROM:-0600
 371.141 +TZOFFSETTO:-0400
 371.142 +TZNAME:EDT
 371.143 +DTSTART:20070311T020000
 371.144 +RDATE:20070311T020000
 371.145 +END:DAYLIGHT
 371.146 +END:VTIMEZONE
 371.147 +END:VCALENDAR
   372.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   372.2 +++ b/src/zoneinfo-global/America/Inuvik.ics	Tue Feb 10 18:12:00 2015 +0100
   372.3 @@ -0,0 +1,123 @@
   372.4 +BEGIN:VCALENDAR
   372.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   372.6 +VERSION:2.0
   372.7 +BEGIN:VTIMEZONE
   372.8 +TZID:America/Inuvik
   372.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Inuvik
  372.10 +X-LIC-LOCATION:America/Inuvik
  372.11 +BEGIN:DAYLIGHT
  372.12 +TZOFFSETFROM:-0700
  372.13 +TZOFFSETTO:-0600
  372.14 +TZNAME:MDT
  372.15 +DTSTART:20070311T020000
  372.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  372.17 +END:DAYLIGHT
  372.18 +BEGIN:STANDARD
  372.19 +TZOFFSETFROM:-0600
  372.20 +TZOFFSETTO:-0700
  372.21 +TZNAME:MST
  372.22 +DTSTART:20071104T020000
  372.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  372.24 +END:STANDARD
  372.25 +BEGIN:STANDARD
  372.26 +TZOFFSETFROM:+0000
  372.27 +TZOFFSETTO:-0800
  372.28 +TZNAME:PST
  372.29 +DTSTART:19530101T000000
  372.30 +RDATE:19530101T000000
  372.31 +END:STANDARD
  372.32 +BEGIN:DAYLIGHT
  372.33 +TZOFFSETFROM:-0800
  372.34 +TZOFFSETTO:-0600
  372.35 +TZNAME:PDDT
  372.36 +DTSTART:19650425T000000
  372.37 +RDATE:19650425T000000
  372.38 +END:DAYLIGHT
  372.39 +BEGIN:STANDARD
  372.40 +TZOFFSETFROM:-0600
  372.41 +TZOFFSETTO:-0800
  372.42 +TZNAME:PST
  372.43 +DTSTART:19651031T020000
  372.44 +RDATE:19651031T020000
  372.45 +END:STANDARD
  372.46 +BEGIN:STANDARD
  372.47 +TZOFFSETFROM:-0800
  372.48 +TZOFFSETTO:-0700
  372.49 +DTSTART:19790429T020000
  372.50 +RDATE:19790429T020000
  372.51 +END:STANDARD
  372.52 +BEGIN:STANDARD
  372.53 +TZOFFSETFROM:-0700
  372.54 +TZOFFSETTO:-0700
  372.55 +TZNAME:MST
  372.56 +DTSTART:19800101T000000
  372.57 +RDATE:19800101T000000
  372.58 +END:STANDARD
  372.59 +BEGIN:DAYLIGHT
  372.60 +TZOFFSETFROM:-0700
  372.61 +TZOFFSETTO:-0600
  372.62 +TZNAME:MDT
  372.63 +DTSTART:19800427T020000
  372.64 +RDATE:19800427T020000
  372.65 +RDATE:19810426T020000
  372.66 +RDATE:19820425T020000
  372.67 +RDATE:19830424T020000
  372.68 +RDATE:19840429T020000
  372.69 +RDATE:19850428T020000
  372.70 +RDATE:19860427T020000
  372.71 +RDATE:19870405T020000
  372.72 +RDATE:19880403T020000
  372.73 +RDATE:19890402T020000
  372.74 +RDATE:19900401T020000
  372.75 +RDATE:19910407T020000
  372.76 +RDATE:19920405T020000
  372.77 +RDATE:19930404T020000
  372.78 +RDATE:19940403T020000
  372.79 +RDATE:19950402T020000
  372.80 +RDATE:19960407T020000
  372.81 +RDATE:19970406T020000
  372.82 +RDATE:19980405T020000
  372.83 +RDATE:19990404T020000
  372.84 +RDATE:20000402T020000
  372.85 +RDATE:20010401T020000
  372.86 +RDATE:20020407T020000
  372.87 +RDATE:20030406T020000
  372.88 +RDATE:20040404T020000
  372.89 +RDATE:20050403T020000
  372.90 +RDATE:20060402T020000
  372.91 +END:DAYLIGHT
  372.92 +BEGIN:STANDARD
  372.93 +TZOFFSETFROM:-0600
  372.94 +TZOFFSETTO:-0700
  372.95 +TZNAME:MST
  372.96 +DTSTART:19801026T020000
  372.97 +RDATE:19801026T020000
  372.98 +RDATE:19811025T020000
  372.99 +RDATE:19821031T020000
 372.100 +RDATE:19831030T020000
 372.101 +RDATE:19841028T020000
 372.102 +RDATE:19851027T020000
 372.103 +RDATE:19861026T020000
 372.104 +RDATE:19871025T020000
 372.105 +RDATE:19881030T020000
 372.106 +RDATE:19891029T020000
 372.107 +RDATE:19901028T020000
 372.108 +RDATE:19911027T020000
 372.109 +RDATE:19921025T020000
 372.110 +RDATE:19931031T020000
 372.111 +RDATE:19941030T020000
 372.112 +RDATE:19951029T020000
 372.113 +RDATE:19961027T020000
 372.114 +RDATE:19971026T020000
 372.115 +RDATE:19981025T020000
 372.116 +RDATE:19991031T020000
 372.117 +RDATE:20001029T020000
 372.118 +RDATE:20011028T020000
 372.119 +RDATE:20021027T020000
 372.120 +RDATE:20031026T020000
 372.121 +RDATE:20041031T020000
 372.122 +RDATE:20051030T020000
 372.123 +RDATE:20061029T020000
 372.124 +END:STANDARD
 372.125 +END:VTIMEZONE
 372.126 +END:VCALENDAR
   373.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   373.2 +++ b/src/zoneinfo-global/America/Iqaluit.ics	Tue Feb 10 18:12:00 2015 +0100
   373.3 @@ -0,0 +1,136 @@
   373.4 +BEGIN:VCALENDAR
   373.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   373.6 +VERSION:2.0
   373.7 +BEGIN:VTIMEZONE
   373.8 +TZID:America/Iqaluit
   373.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Iqaluit
  373.10 +X-LIC-LOCATION:America/Iqaluit
  373.11 +BEGIN:DAYLIGHT
  373.12 +TZOFFSETFROM:-0500
  373.13 +TZOFFSETTO:-0400
  373.14 +TZNAME:EDT
  373.15 +DTSTART:20070311T020000
  373.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  373.17 +END:DAYLIGHT
  373.18 +BEGIN:STANDARD
  373.19 +TZOFFSETFROM:-0400
  373.20 +TZOFFSETTO:-0500
  373.21 +TZNAME:EST
  373.22 +DTSTART:20071104T020000
  373.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  373.24 +END:STANDARD
  373.25 +BEGIN:DAYLIGHT
  373.26 +TZOFFSETFROM:+0000
  373.27 +TZOFFSETTO:-0400
  373.28 +TZNAME:EWT
  373.29 +DTSTART:19420801T000000
  373.30 +RDATE:19420801T000000
  373.31 +END:DAYLIGHT
  373.32 +BEGIN:DAYLIGHT
  373.33 +TZOFFSETFROM:-0400
  373.34 +TZOFFSETTO:-0400
  373.35 +TZNAME:EPT
  373.36 +DTSTART:19450814T190000
  373.37 +RDATE:19450814T190000
  373.38 +END:DAYLIGHT
  373.39 +BEGIN:STANDARD
  373.40 +TZOFFSETFROM:-0400
  373.41 +TZOFFSETTO:-0500
  373.42 +TZNAME:EST
  373.43 +DTSTART:19450930T020000
  373.44 +RDATE:19450930T020000
  373.45 +RDATE:19801026T020000
  373.46 +RDATE:19811025T020000
  373.47 +RDATE:19821031T020000
  373.48 +RDATE:19831030T020000
  373.49 +RDATE:19841028T020000
  373.50 +RDATE:19851027T020000
  373.51 +RDATE:19861026T020000
  373.52 +RDATE:19871025T020000
  373.53 +RDATE:19881030T020000
  373.54 +RDATE:19891029T020000
  373.55 +RDATE:19901028T020000
  373.56 +RDATE:19911027T020000
  373.57 +RDATE:19921025T020000
  373.58 +RDATE:19931031T020000
  373.59 +RDATE:19941030T020000
  373.60 +RDATE:19951029T020000
  373.61 +RDATE:19961027T020000
  373.62 +RDATE:19971026T020000
  373.63 +RDATE:19981025T020000
  373.64 +RDATE:20011028T020000
  373.65 +RDATE:20021027T020000
  373.66 +RDATE:20031026T020000
  373.67 +RDATE:20041031T020000
  373.68 +RDATE:20051030T020000
  373.69 +RDATE:20061029T020000
  373.70 +END:STANDARD
  373.71 +BEGIN:DAYLIGHT
  373.72 +TZOFFSETFROM:-0500
  373.73 +TZOFFSETTO:-0300
  373.74 +TZNAME:EDDT
  373.75 +DTSTART:19650425T000000
  373.76 +RDATE:19650425T000000
  373.77 +END:DAYLIGHT
  373.78 +BEGIN:STANDARD
  373.79 +TZOFFSETFROM:-0300
  373.80 +TZOFFSETTO:-0500
  373.81 +TZNAME:EST
  373.82 +DTSTART:19651031T020000
  373.83 +RDATE:19651031T020000
  373.84 +END:STANDARD
  373.85 +BEGIN:DAYLIGHT
  373.86 +TZOFFSETFROM:-0500
  373.87 +TZOFFSETTO:-0400
  373.88 +TZNAME:EDT
  373.89 +DTSTART:19800427T020000
  373.90 +RDATE:19800427T020000
  373.91 +RDATE:19810426T020000
  373.92 +RDATE:19820425T020000
  373.93 +RDATE:19830424T020000
  373.94 +RDATE:19840429T020000
  373.95 +RDATE:19850428T020000
  373.96 +RDATE:19860427T020000
  373.97 +RDATE:19870405T020000
  373.98 +RDATE:19880403T020000
  373.99 +RDATE:19890402T020000
 373.100 +RDATE:19900401T020000
 373.101 +RDATE:19910407T020000
 373.102 +RDATE:19920405T020000
 373.103 +RDATE:19930404T020000
 373.104 +RDATE:19940403T020000
 373.105 +RDATE:19950402T020000
 373.106 +RDATE:19960407T020000
 373.107 +RDATE:19970406T020000
 373.108 +RDATE:19980405T020000
 373.109 +RDATE:19990404T020000
 373.110 +RDATE:20010401T020000
 373.111 +RDATE:20020407T020000
 373.112 +RDATE:20030406T020000
 373.113 +RDATE:20040404T020000
 373.114 +RDATE:20050403T020000
 373.115 +RDATE:20060402T020000
 373.116 +END:DAYLIGHT
 373.117 +BEGIN:STANDARD
 373.118 +TZOFFSETFROM:-0400
 373.119 +TZOFFSETTO:-0600
 373.120 +TZNAME:CST
 373.121 +DTSTART:19991031T020000
 373.122 +RDATE:19991031T020000
 373.123 +END:STANDARD
 373.124 +BEGIN:DAYLIGHT
 373.125 +TZOFFSETFROM:-0600
 373.126 +TZOFFSETTO:-0500
 373.127 +TZNAME:CDT
 373.128 +DTSTART:20000402T020000
 373.129 +RDATE:20000402T020000
 373.130 +END:DAYLIGHT
 373.131 +BEGIN:STANDARD
 373.132 +TZOFFSETFROM:-0500
 373.133 +TZOFFSETTO:-0500
 373.134 +TZNAME:EST
 373.135 +DTSTART:20001029T020000
 373.136 +RDATE:20001029T020000
 373.137 +END:STANDARD
 373.138 +END:VTIMEZONE
 373.139 +END:VCALENDAR
   374.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   374.2 +++ b/src/zoneinfo-global/America/Jamaica.ics	Tue Feb 10 18:12:00 2015 +0100
   374.3 @@ -0,0 +1,62 @@
   374.4 +BEGIN:VCALENDAR
   374.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   374.6 +VERSION:2.0
   374.7 +BEGIN:VTIMEZONE
   374.8 +TZID:America/Jamaica
   374.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Jamaica
  374.10 +X-LIC-LOCATION:America/Jamaica
  374.11 +BEGIN:STANDARD
  374.12 +TZOFFSETFROM:-050712
  374.13 +TZOFFSETTO:-050712
  374.14 +TZNAME:KMT
  374.15 +DTSTART:18900101T000000
  374.16 +RDATE:18900101T000000
  374.17 +END:STANDARD
  374.18 +BEGIN:STANDARD
  374.19 +TZOFFSETFROM:-050712
  374.20 +TZOFFSETTO:-0500
  374.21 +TZNAME:EST
  374.22 +DTSTART:19120201T000000
  374.23 +RDATE:19120201T000000
  374.24 +END:STANDARD
  374.25 +BEGIN:DAYLIGHT
  374.26 +TZOFFSETFROM:-0500
  374.27 +TZOFFSETTO:-0400
  374.28 +TZNAME:EDT
  374.29 +DTSTART:19740428T020000
  374.30 +RDATE:19740428T020000
  374.31 +RDATE:19750223T020000
  374.32 +RDATE:19760425T020000
  374.33 +RDATE:19770424T020000
  374.34 +RDATE:19780430T020000
  374.35 +RDATE:19790429T020000
  374.36 +RDATE:19800427T020000
  374.37 +RDATE:19810426T020000
  374.38 +RDATE:19820425T020000
  374.39 +RDATE:19830424T020000
  374.40 +END:DAYLIGHT
  374.41 +BEGIN:STANDARD
  374.42 +TZOFFSETFROM:-0400
  374.43 +TZOFFSETTO:-0500
  374.44 +TZNAME:EST
  374.45 +DTSTART:19741027T020000
  374.46 +RDATE:19741027T020000
  374.47 +RDATE:19751026T020000
  374.48 +RDATE:19761031T020000
  374.49 +RDATE:19771030T020000
  374.50 +RDATE:19781029T020000
  374.51 +RDATE:19791028T020000
  374.52 +RDATE:19801026T020000
  374.53 +RDATE:19811025T020000
  374.54 +RDATE:19821031T020000
  374.55 +RDATE:19831030T020000
  374.56 +END:STANDARD
  374.57 +BEGIN:STANDARD
  374.58 +TZOFFSETFROM:-0500
  374.59 +TZOFFSETTO:-0500
  374.60 +TZNAME:EST
  374.61 +DTSTART:19840101T000000
  374.62 +RDATE:19840101T000000
  374.63 +END:STANDARD
  374.64 +END:VTIMEZONE
  374.65 +END:VCALENDAR
   375.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   375.2 +++ b/src/zoneinfo-global/America/Juneau.ics	Tue Feb 10 18:12:00 2015 +0100
   375.3 @@ -0,0 +1,180 @@
   375.4 +BEGIN:VCALENDAR
   375.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   375.6 +VERSION:2.0
   375.7 +BEGIN:VTIMEZONE
   375.8 +TZID:America/Juneau
   375.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Juneau
  375.10 +X-LIC-LOCATION:America/Juneau
  375.11 +BEGIN:DAYLIGHT
  375.12 +TZOFFSETFROM:-0900
  375.13 +TZOFFSETTO:-0800
  375.14 +TZNAME:AKDT
  375.15 +DTSTART:20070311T020000
  375.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  375.17 +END:DAYLIGHT
  375.18 +BEGIN:STANDARD
  375.19 +TZOFFSETFROM:-0800
  375.20 +TZOFFSETTO:-0900
  375.21 +TZNAME:AKST
  375.22 +DTSTART:20071104T020000
  375.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  375.24 +END:STANDARD
  375.25 +BEGIN:STANDARD
  375.26 +TZOFFSETFROM:+150219
  375.27 +TZOFFSETTO:-085741
  375.28 +TZNAME:LMT
  375.29 +DTSTART:18671018T000000
  375.30 +RDATE:18671018T000000
  375.31 +END:STANDARD
  375.32 +BEGIN:STANDARD
  375.33 +TZOFFSETFROM:-085741
  375.34 +TZOFFSETTO:-0800
  375.35 +TZNAME:PST
  375.36 +DTSTART:19000820T120000
  375.37 +RDATE:19000820T120000
  375.38 +END:STANDARD
  375.39 +BEGIN:STANDARD
  375.40 +TZOFFSETFROM:-0800
  375.41 +TZOFFSETTO:-0800
  375.42 +TZNAME:PST
  375.43 +DTSTART:19420101T000000
  375.44 +RDATE:19420101T000000
  375.45 +RDATE:19460101T000000
  375.46 +RDATE:19690101T000000
  375.47 +RDATE:19801026T020000
  375.48 +END:STANDARD
  375.49 +BEGIN:DAYLIGHT
  375.50 +TZOFFSETFROM:-0800
  375.51 +TZOFFSETTO:-0700
  375.52 +TZNAME:PWT
  375.53 +DTSTART:19420209T020000
  375.54 +RDATE:19420209T020000
  375.55 +END:DAYLIGHT
  375.56 +BEGIN:DAYLIGHT
  375.57 +TZOFFSETFROM:-0700
  375.58 +TZOFFSETTO:-0700
  375.59 +TZNAME:PPT
  375.60 +DTSTART:19450814T160000
  375.61 +RDATE:19450814T160000
  375.62 +END:DAYLIGHT
  375.63 +BEGIN:STANDARD
  375.64 +TZOFFSETFROM:-0700
  375.65 +TZOFFSETTO:-0800
  375.66 +TZNAME:PST
  375.67 +DTSTART:19450930T020000
  375.68 +RDATE:19450930T020000
  375.69 +RDATE:19691026T020000
  375.70 +RDATE:19701025T020000
  375.71 +RDATE:19711031T020000
  375.72 +RDATE:19721029T020000
  375.73 +RDATE:19731028T020000
  375.74 +RDATE:19741027T020000
  375.75 +RDATE:19751026T020000
  375.76 +RDATE:19761031T020000
  375.77 +RDATE:19771030T020000
  375.78 +RDATE:19781029T020000
  375.79 +RDATE:19791028T020000
  375.80 +RDATE:19811025T020000
  375.81 +RDATE:19821031T020000
  375.82 +END:STANDARD
  375.83 +BEGIN:DAYLIGHT
  375.84 +TZOFFSETFROM:-0800
  375.85 +TZOFFSETTO:-0700
  375.86 +TZNAME:PDT
  375.87 +DTSTART:19690427T020000
  375.88 +RDATE:19690427T020000
  375.89 +RDATE:19700426T020000
  375.90 +RDATE:19710425T020000
  375.91 +RDATE:19720430T020000
  375.92 +RDATE:19730429T020000
  375.93 +RDATE:19740106T020000
  375.94 +RDATE:19750223T020000
  375.95 +RDATE:19760425T020000
  375.96 +RDATE:19770424T020000
  375.97 +RDATE:19780430T020000
  375.98 +RDATE:19790429T020000
  375.99 +RDATE:19810426T020000
 375.100 +RDATE:19820425T020000
 375.101 +RDATE:19830424T020000
 375.102 +END:DAYLIGHT
 375.103 +BEGIN:DAYLIGHT
 375.104 +TZOFFSETFROM:-0800
 375.105 +TZOFFSETTO:-0800
 375.106 +TZNAME:YDT
 375.107 +DTSTART:19800427T020000
 375.108 +RDATE:19800427T020000
 375.109 +END:DAYLIGHT
 375.110 +BEGIN:STANDARD
 375.111 +TZOFFSETFROM:-0700
 375.112 +TZOFFSETTO:-0900
 375.113 +TZNAME:YST
 375.114 +DTSTART:19831030T020000
 375.115 +RDATE:19831030T020000
 375.116 +END:STANDARD
 375.117 +BEGIN:STANDARD
 375.118 +TZOFFSETFROM:-0900
 375.119 +TZOFFSETTO:-0900
 375.120 +TZNAME:AKST
 375.121 +DTSTART:19831130T000000
 375.122 +RDATE:19831130T000000
 375.123 +END:STANDARD
 375.124 +BEGIN:DAYLIGHT
 375.125 +TZOFFSETFROM:-0900
 375.126 +TZOFFSETTO:-0800
 375.127 +TZNAME:AKDT
 375.128 +DTSTART:19840429T020000
 375.129 +RDATE:19840429T020000
 375.130 +RDATE:19850428T020000
 375.131 +RDATE:19860427T020000
 375.132 +RDATE:19870405T020000
 375.133 +RDATE:19880403T020000
 375.134 +RDATE:19890402T020000
 375.135 +RDATE:19900401T020000
 375.136 +RDATE:19910407T020000
 375.137 +RDATE:19920405T020000
 375.138 +RDATE:19930404T020000
 375.139 +RDATE:19940403T020000
 375.140 +RDATE:19950402T020000
 375.141 +RDATE:19960407T020000
 375.142 +RDATE:19970406T020000
 375.143 +RDATE:19980405T020000
 375.144 +RDATE:19990404T020000
 375.145 +RDATE:20000402T020000
 375.146 +RDATE:20010401T020000
 375.147 +RDATE:20020407T020000
 375.148 +RDATE:20030406T020000
 375.149 +RDATE:20040404T020000
 375.150 +RDATE:20050403T020000
 375.151 +RDATE:20060402T020000
 375.152 +END:DAYLIGHT
 375.153 +BEGIN:STANDARD
 375.154 +TZOFFSETFROM:-0800
 375.155 +TZOFFSETTO:-0900
 375.156 +TZNAME:AKST
 375.157 +DTSTART:19841028T020000
 375.158 +RDATE:19841028T020000
 375.159 +RDATE:19851027T020000
 375.160 +RDATE:19861026T020000
 375.161 +RDATE:19871025T020000
 375.162 +RDATE:19881030T020000
 375.163 +RDATE:19891029T020000
 375.164 +RDATE:19901028T020000
 375.165 +RDATE:19911027T020000
 375.166 +RDATE:19921025T020000
 375.167 +RDATE:19931031T020000
 375.168 +RDATE:19941030T020000
 375.169 +RDATE:19951029T020000
 375.170 +RDATE:19961027T020000
 375.171 +RDATE:19971026T020000
 375.172 +RDATE:19981025T020000
 375.173 +RDATE:19991031T020000
 375.174 +RDATE:20001029T020000
 375.175 +RDATE:20011028T020000
 375.176 +RDATE:20021027T020000
 375.177 +RDATE:20031026T020000
 375.178 +RDATE:20041031T020000
 375.179 +RDATE:20051030T020000
 375.180 +RDATE:20061029T020000
 375.181 +END:STANDARD
 375.182 +END:VTIMEZONE
 375.183 +END:VCALENDAR
   376.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   376.2 +++ b/src/zoneinfo-global/America/Kentucky/Louisville.ics	Tue Feb 10 18:12:00 2015 +0100
   376.3 @@ -0,0 +1,206 @@
   376.4 +BEGIN:VCALENDAR
   376.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   376.6 +VERSION:2.0
   376.7 +BEGIN:VTIMEZONE
   376.8 +TZID:America/Kentucky/Louisville
   376.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Kentucky/Louisville
  376.10 +X-LIC-LOCATION:America/Kentucky/Louisville
  376.11 +BEGIN:DAYLIGHT
  376.12 +TZOFFSETFROM:-0500
  376.13 +TZOFFSETTO:-0400
  376.14 +TZNAME:EDT
  376.15 +DTSTART:20070311T020000
  376.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  376.17 +END:DAYLIGHT
  376.18 +BEGIN:STANDARD
  376.19 +TZOFFSETFROM:-0400
  376.20 +TZOFFSETTO:-0500
  376.21 +TZNAME:EST
  376.22 +DTSTART:20071104T020000
  376.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  376.24 +END:STANDARD
  376.25 +BEGIN:STANDARD
  376.26 +TZOFFSETFROM:-054302
  376.27 +TZOFFSETTO:-0600
  376.28 +TZNAME:CST
  376.29 +DTSTART:18831118T121658
  376.30 +RDATE:18831118T121658
  376.31 +END:STANDARD
  376.32 +BEGIN:DAYLIGHT
  376.33 +TZOFFSETFROM:-0600
  376.34 +TZOFFSETTO:-0500
  376.35 +TZNAME:CDT
  376.36 +DTSTART:19180331T020000
  376.37 +RDATE:19180331T020000
  376.38 +RDATE:19190330T020000
  376.39 +RDATE:19210501T020000
  376.40 +RDATE:19410427T020000
  376.41 +RDATE:19460101T000000
  376.42 +RDATE:19470427T020000
  376.43 +RDATE:19510429T020000
  376.44 +RDATE:19520427T020000
  376.45 +RDATE:19530426T020000
  376.46 +RDATE:19540425T020000
  376.47 +RDATE:19550424T020000
  376.48 +RDATE:19560429T020000
  376.49 +RDATE:19570428T020000
  376.50 +RDATE:19580427T020000
  376.51 +RDATE:19590426T020000
  376.52 +RDATE:19600424T020000
  376.53 +RDATE:19610430T020000
  376.54 +END:DAYLIGHT
  376.55 +BEGIN:STANDARD
  376.56 +TZOFFSETFROM:-0500
  376.57 +TZOFFSETTO:-0600
  376.58 +TZNAME:CST
  376.59 +DTSTART:19181027T020000
  376.60 +RDATE:19181027T020000
  376.61 +RDATE:19191026T020000
  376.62 +RDATE:19210901T020000
  376.63 +RDATE:19410928T020000
  376.64 +RDATE:19450930T020000
  376.65 +RDATE:19460602T020000
  376.66 +RDATE:19500924T020000
  376.67 +RDATE:19510930T020000
  376.68 +RDATE:19520928T020000
  376.69 +RDATE:19530927T020000
  376.70 +RDATE:19540926T020000
  376.71 +RDATE:19550925T020000
  376.72 +RDATE:19561028T020000
  376.73 +RDATE:19571027T020000
  376.74 +RDATE:19581026T020000
  376.75 +RDATE:19591025T020000
  376.76 +RDATE:19601030T020000
  376.77 +END:STANDARD
  376.78 +BEGIN:STANDARD
  376.79 +TZOFFSETFROM:-0600
  376.80 +TZOFFSETTO:-0600
  376.81 +TZNAME:CST
  376.82 +DTSTART:19210101T000000
  376.83 +RDATE:19210101T000000
  376.84 +RDATE:19420101T000000
  376.85 +END:STANDARD
  376.86 +BEGIN:DAYLIGHT
  376.87 +TZOFFSETFROM:-0600
  376.88 +TZOFFSETTO:-0500
  376.89 +TZNAME:CWT
  376.90 +DTSTART:19420209T020000
  376.91 +RDATE:19420209T020000
  376.92 +END:DAYLIGHT
  376.93 +BEGIN:DAYLIGHT
  376.94 +TZOFFSETFROM:-0500
  376.95 +TZOFFSETTO:-0500
  376.96 +TZNAME:CPT
  376.97 +DTSTART:19450814T180000
  376.98 +RDATE:19450814T180000
  376.99 +END:DAYLIGHT
 376.100 +BEGIN:DAYLIGHT
 376.101 +TZOFFSETFROM:-0500
 376.102 +TZOFFSETTO:-0500
 376.103 +TZNAME:CDT
 376.104 +DTSTART:19460428T020000
 376.105 +RDATE:19460428T020000
 376.106 +RDATE:19480425T020000
 376.107 +RDATE:19490424T020000
 376.108 +RDATE:19500430T020000
 376.109 +RDATE:19740106T020000
 376.110 +END:DAYLIGHT
 376.111 +BEGIN:STANDARD
 376.112 +TZOFFSETFROM:-0500
 376.113 +TZOFFSETTO:-0500
 376.114 +TZNAME:EST
 376.115 +DTSTART:19610723T020000
 376.116 +RDATE:19610723T020000
 376.117 +RDATE:19680101T000000
 376.118 +RDATE:19741027T020000
 376.119 +END:STANDARD
 376.120 +BEGIN:DAYLIGHT
 376.121 +TZOFFSETFROM:-0500
 376.122 +TZOFFSETTO:-0400
 376.123 +TZNAME:EDT
 376.124 +DTSTART:19680428T020000
 376.125 +RDATE:19680428T020000
 376.126 +RDATE:19690427T020000
 376.127 +RDATE:19700426T020000
 376.128 +RDATE:19710425T020000
 376.129 +RDATE:19720430T020000
 376.130 +RDATE:19730429T020000
 376.131 +RDATE:19750223T020000
 376.132 +RDATE:19760425T020000
 376.133 +RDATE:19770424T020000
 376.134 +RDATE:19780430T020000
 376.135 +RDATE:19790429T020000
 376.136 +RDATE:19800427T020000
 376.137 +RDATE:19810426T020000
 376.138 +RDATE:19820425T020000
 376.139 +RDATE:19830424T020000
 376.140 +RDATE:19840429T020000
 376.141 +RDATE:19850428T020000
 376.142 +RDATE:19860427T020000
 376.143 +RDATE:19870405T020000
 376.144 +RDATE:19880403T020000
 376.145 +RDATE:19890402T020000
 376.146 +RDATE:19900401T020000
 376.147 +RDATE:19910407T020000
 376.148 +RDATE:19920405T020000
 376.149 +RDATE:19930404T020000
 376.150 +RDATE:19940403T020000
 376.151 +RDATE:19950402T020000
 376.152 +RDATE:19960407T020000
 376.153 +RDATE:19970406T020000
 376.154 +RDATE:19980405T020000
 376.155 +RDATE:19990404T020000
 376.156 +RDATE:20000402T020000
 376.157 +RDATE:20010401T020000
 376.158 +RDATE:20020407T020000
 376.159 +RDATE:20030406T020000
 376.160 +RDATE:20040404T020000
 376.161 +RDATE:20050403T020000
 376.162 +RDATE:20060402T020000
 376.163 +END:DAYLIGHT
 376.164 +BEGIN:STANDARD
 376.165 +TZOFFSETFROM:-0400
 376.166 +TZOFFSETTO:-0500
 376.167 +TZNAME:EST
 376.168 +DTSTART:19681027T020000
 376.169 +RDATE:19681027T020000
 376.170 +RDATE:19691026T020000
 376.171 +RDATE:19701025T020000
 376.172 +RDATE:19711031T020000
 376.173 +RDATE:19721029T020000
 376.174 +RDATE:19731028T020000
 376.175 +RDATE:19751026T020000
 376.176 +RDATE:19761031T020000
 376.177 +RDATE:19771030T020000
 376.178 +RDATE:19781029T020000
 376.179 +RDATE:19791028T020000
 376.180 +RDATE:19801026T020000
 376.181 +RDATE:19811025T020000
 376.182 +RDATE:19821031T020000
 376.183 +RDATE:19831030T020000
 376.184 +RDATE:19841028T020000
 376.185 +RDATE:19851027T020000
 376.186 +RDATE:19861026T020000
 376.187 +RDATE:19871025T020000
 376.188 +RDATE:19881030T020000
 376.189 +RDATE:19891029T020000
 376.190 +RDATE:19901028T020000
 376.191 +RDATE:19911027T020000
 376.192 +RDATE:19921025T020000
 376.193 +RDATE:19931031T020000
 376.194 +RDATE:19941030T020000
 376.195 +RDATE:19951029T020000
 376.196 +RDATE:19961027T020000
 376.197 +RDATE:19971026T020000
 376.198 +RDATE:19981025T020000
 376.199 +RDATE:19991031T020000
 376.200 +RDATE:20001029T020000
 376.201 +RDATE:20011028T020000
 376.202 +RDATE:20021027T020000
 376.203 +RDATE:20031026T020000
 376.204 +RDATE:20041031T020000
 376.205 +RDATE:20051030T020000
 376.206 +RDATE:20061029T020000
 376.207 +END:STANDARD
 376.208 +END:VTIMEZONE
 376.209 +END:VCALENDAR
   377.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   377.2 +++ b/src/zoneinfo-global/America/Kentucky/Monticello.ics	Tue Feb 10 18:12:00 2015 +0100
   377.3 @@ -0,0 +1,165 @@
   377.4 +BEGIN:VCALENDAR
   377.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   377.6 +VERSION:2.0
   377.7 +BEGIN:VTIMEZONE
   377.8 +TZID:America/Kentucky/Monticello
   377.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Kentucky/Monticello
  377.10 +X-LIC-LOCATION:America/Kentucky/Monticello
  377.11 +BEGIN:DAYLIGHT
  377.12 +TZOFFSETFROM:-0500
  377.13 +TZOFFSETTO:-0400
  377.14 +TZNAME:EDT
  377.15 +DTSTART:20070311T020000
  377.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  377.17 +END:DAYLIGHT
  377.18 +BEGIN:STANDARD
  377.19 +TZOFFSETFROM:-0400
  377.20 +TZOFFSETTO:-0500
  377.21 +TZNAME:EST
  377.22 +DTSTART:20071104T020000
  377.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  377.24 +END:STANDARD
  377.25 +BEGIN:STANDARD
  377.26 +TZOFFSETFROM:-053924
  377.27 +TZOFFSETTO:-0600
  377.28 +TZNAME:CST
  377.29 +DTSTART:18831118T122036
  377.30 +RDATE:18831118T122036
  377.31 +END:STANDARD
  377.32 +BEGIN:DAYLIGHT
  377.33 +TZOFFSETFROM:-0600
  377.34 +TZOFFSETTO:-0500
  377.35 +TZNAME:CDT
  377.36 +DTSTART:19180331T020000
  377.37 +RDATE:19180331T020000
  377.38 +RDATE:19190330T020000
  377.39 +RDATE:19680428T020000
  377.40 +RDATE:19690427T020000
  377.41 +RDATE:19700426T020000
  377.42 +RDATE:19710425T020000
  377.43 +RDATE:19720430T020000
  377.44 +RDATE:19730429T020000
  377.45 +RDATE:19740106T020000
  377.46 +RDATE:19750223T020000
  377.47 +RDATE:19760425T020000
  377.48 +RDATE:19770424T020000
  377.49 +RDATE:19780430T020000
  377.50 +RDATE:19790429T020000
  377.51 +RDATE:19800427T020000
  377.52 +RDATE:19810426T020000
  377.53 +RDATE:19820425T020000
  377.54 +RDATE:19830424T020000
  377.55 +RDATE:19840429T020000
  377.56 +RDATE:19850428T020000
  377.57 +RDATE:19860427T020000
  377.58 +RDATE:19870405T020000
  377.59 +RDATE:19880403T020000
  377.60 +RDATE:19890402T020000
  377.61 +RDATE:19900401T020000
  377.62 +RDATE:19910407T020000
  377.63 +RDATE:19920405T020000
  377.64 +RDATE:19930404T020000
  377.65 +RDATE:19940403T020000
  377.66 +RDATE:19950402T020000
  377.67 +RDATE:19960407T020000
  377.68 +RDATE:19970406T020000
  377.69 +RDATE:19980405T020000
  377.70 +RDATE:19990404T020000
  377.71 +RDATE:20000402T020000
  377.72 +END:DAYLIGHT
  377.73 +BEGIN:STANDARD
  377.74 +TZOFFSETFROM:-0500
  377.75 +TZOFFSETTO:-0600
  377.76 +TZNAME:CST
  377.77 +DTSTART:19181027T020000
  377.78 +RDATE:19181027T020000
  377.79 +RDATE:19191026T020000
  377.80 +RDATE:19450930T020000
  377.81 +RDATE:19681027T020000
  377.82 +RDATE:19691026T020000
  377.83 +RDATE:19701025T020000
  377.84 +RDATE:19711031T020000
  377.85 +RDATE:19721029T020000
  377.86 +RDATE:19731028T020000
  377.87 +RDATE:19741027T020000
  377.88 +RDATE:19751026T020000
  377.89 +RDATE:19761031T020000
  377.90 +RDATE:19771030T020000
  377.91 +RDATE:19781029T020000
  377.92 +RDATE:19791028T020000
  377.93 +RDATE:19801026T020000
  377.94 +RDATE:19811025T020000
  377.95 +RDATE:19821031T020000
  377.96 +RDATE:19831030T020000
  377.97 +RDATE:19841028T020000
  377.98 +RDATE:19851027T020000
  377.99 +RDATE:19861026T020000
 377.100 +RDATE:19871025T020000
 377.101 +RDATE:19881030T020000
 377.102 +RDATE:19891029T020000
 377.103 +RDATE:19901028T020000
 377.104 +RDATE:19911027T020000
 377.105 +RDATE:19921025T020000
 377.106 +RDATE:19931031T020000
 377.107 +RDATE:19941030T020000
 377.108 +RDATE:19951029T020000
 377.109 +RDATE:19961027T020000
 377.110 +RDATE:19971026T020000
 377.111 +RDATE:19981025T020000
 377.112 +RDATE:19991031T020000
 377.113 +END:STANDARD
 377.114 +BEGIN:DAYLIGHT
 377.115 +TZOFFSETFROM:-0600
 377.116 +TZOFFSETTO:-0500
 377.117 +TZNAME:CWT
 377.118 +DTSTART:19420209T020000
 377.119 +RDATE:19420209T020000
 377.120 +END:DAYLIGHT
 377.121 +BEGIN:DAYLIGHT
 377.122 +TZOFFSETFROM:-0500
 377.123 +TZOFFSETTO:-0500
 377.124 +TZNAME:CPT
 377.125 +DTSTART:19450814T180000
 377.126 +RDATE:19450814T180000
 377.127 +END:DAYLIGHT
 377.128 +BEGIN:STANDARD
 377.129 +TZOFFSETFROM:-0600
 377.130 +TZOFFSETTO:-0600
 377.131 +TZNAME:CST
 377.132 +DTSTART:19460101T000000
 377.133 +RDATE:19460101T000000
 377.134 +RDATE:19680101T000000
 377.135 +END:STANDARD
 377.136 +BEGIN:STANDARD
 377.137 +TZOFFSETFROM:-0500
 377.138 +TZOFFSETTO:-0500
 377.139 +TZNAME:EST
 377.140 +DTSTART:20001029T020000
 377.141 +RDATE:20001029T020000
 377.142 +END:STANDARD
 377.143 +BEGIN:DAYLIGHT
 377.144 +TZOFFSETFROM:-0500
 377.145 +TZOFFSETTO:-0400
 377.146 +TZNAME:EDT
 377.147 +DTSTART:20010401T020000
 377.148 +RDATE:20010401T020000
 377.149 +RDATE:20020407T020000
 377.150 +RDATE:20030406T020000
 377.151 +RDATE:20040404T020000
 377.152 +RDATE:20050403T020000
 377.153 +RDATE:20060402T020000
 377.154 +END:DAYLIGHT
 377.155 +BEGIN:STANDARD
 377.156 +TZOFFSETFROM:-0400
 377.157 +TZOFFSETTO:-0500
 377.158 +TZNAME:EST
 377.159 +DTSTART:20011028T020000
 377.160 +RDATE:20011028T020000
 377.161 +RDATE:20021027T020000
 377.162 +RDATE:20031026T020000
 377.163 +RDATE:20041031T020000
 377.164 +RDATE:20051030T020000
 377.165 +RDATE:20061029T020000
 377.166 +END:STANDARD
 377.167 +END:VTIMEZONE
 377.168 +END:VCALENDAR
   378.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   378.2 +++ b/src/zoneinfo-global/America/Kralendijk.ics	Tue Feb 10 18:12:00 2015 +0100
   378.3 @@ -0,0 +1,23 @@
   378.4 +BEGIN:VCALENDAR
   378.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   378.6 +VERSION:2.0
   378.7 +BEGIN:VTIMEZONE
   378.8 +TZID:America/Kralendijk
   378.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Kralendijk
  378.10 +X-LIC-LOCATION:America/Kralendijk
  378.11 +BEGIN:STANDARD
  378.12 +TZOFFSETFROM:-043544
  378.13 +TZOFFSETTO:-0430
  378.14 +TZNAME:ANT
  378.15 +DTSTART:19120212T000000
  378.16 +RDATE:19120212T000000
  378.17 +END:STANDARD
  378.18 +BEGIN:STANDARD
  378.19 +TZOFFSETFROM:-0430
  378.20 +TZOFFSETTO:-0400
  378.21 +TZNAME:AST
  378.22 +DTSTART:19650101T000000
  378.23 +RDATE:19650101T000000
  378.24 +END:STANDARD
  378.25 +END:VTIMEZONE
  378.26 +END:VCALENDAR
   379.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   379.2 +++ b/src/zoneinfo-global/America/La_Paz.ics	Tue Feb 10 18:12:00 2015 +0100
   379.3 @@ -0,0 +1,30 @@
   379.4 +BEGIN:VCALENDAR
   379.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   379.6 +VERSION:2.0
   379.7 +BEGIN:VTIMEZONE
   379.8 +TZID:America/La_Paz
   379.9 +TZURL:http://tzurl.org/zoneinfo-global/America/La_Paz
  379.10 +X-LIC-LOCATION:America/La_Paz
  379.11 +BEGIN:STANDARD
  379.12 +TZOFFSETFROM:-043236
  379.13 +TZOFFSETTO:-043236
  379.14 +TZNAME:CMT
  379.15 +DTSTART:18900101T000000
  379.16 +RDATE:18900101T000000
  379.17 +END:STANDARD
  379.18 +BEGIN:DAYLIGHT
  379.19 +TZOFFSETFROM:-043236
  379.20 +TZOFFSETTO:-033236
  379.21 +TZNAME:BOST
  379.22 +DTSTART:19311015T000000
  379.23 +RDATE:19311015T000000
  379.24 +END:DAYLIGHT
  379.25 +BEGIN:STANDARD
  379.26 +TZOFFSETFROM:-033236
  379.27 +TZOFFSETTO:-0400
  379.28 +TZNAME:BOT
  379.29 +DTSTART:19320321T000000
  379.30 +RDATE:19320321T000000
  379.31 +END:STANDARD
  379.32 +END:VTIMEZONE
  379.33 +END:VCALENDAR
   380.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   380.2 +++ b/src/zoneinfo-global/America/Lima.ics	Tue Feb 10 18:12:00 2015 +0100
   380.3 @@ -0,0 +1,49 @@
   380.4 +BEGIN:VCALENDAR
   380.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   380.6 +VERSION:2.0
   380.7 +BEGIN:VTIMEZONE
   380.8 +TZID:America/Lima
   380.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Lima
  380.10 +X-LIC-LOCATION:America/Lima
  380.11 +BEGIN:STANDARD
  380.12 +TZOFFSETFROM:-050812
  380.13 +TZOFFSETTO:-050836
  380.14 +TZNAME:LMT
  380.15 +DTSTART:18900101T000000
  380.16 +RDATE:18900101T000000
  380.17 +END:STANDARD
  380.18 +BEGIN:STANDARD
  380.19 +TZOFFSETFROM:-050836
  380.20 +TZOFFSETTO:-0500
  380.21 +TZNAME:PET
  380.22 +DTSTART:19080728T000000
  380.23 +RDATE:19080728T000000
  380.24 +END:STANDARD
  380.25 +BEGIN:DAYLIGHT
  380.26 +TZOFFSETFROM:-0500
  380.27 +TZOFFSETTO:-0400
  380.28 +TZNAME:PEST
  380.29 +DTSTART:19380101T000000
  380.30 +RDATE:19380101T000000
  380.31 +RDATE:19380925T000000
  380.32 +RDATE:19390924T000000
  380.33 +RDATE:19860101T000000
  380.34 +RDATE:19870101T000000
  380.35 +RDATE:19900101T000000
  380.36 +RDATE:19940101T000000
  380.37 +END:DAYLIGHT
  380.38 +BEGIN:STANDARD
  380.39 +TZOFFSETFROM:-0400
  380.40 +TZOFFSETTO:-0500
  380.41 +TZNAME:PET
  380.42 +DTSTART:19380401T000000
  380.43 +RDATE:19380401T000000
  380.44 +RDATE:19390326T000000
  380.45 +RDATE:19400324T000000
  380.46 +RDATE:19860401T000000
  380.47 +RDATE:19870401T000000
  380.48 +RDATE:19900401T000000
  380.49 +RDATE:19940401T000000
  380.50 +END:STANDARD
  380.51 +END:VTIMEZONE
  380.52 +END:VCALENDAR
   381.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   381.2 +++ b/src/zoneinfo-global/America/Los_Angeles.ics	Tue Feb 10 18:12:00 2015 +0100
   381.3 @@ -0,0 +1,185 @@
   381.4 +BEGIN:VCALENDAR
   381.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   381.6 +VERSION:2.0
   381.7 +BEGIN:VTIMEZONE
   381.8 +TZID:America/Los_Angeles
   381.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Los_Angeles
  381.10 +X-LIC-LOCATION:America/Los_Angeles
  381.11 +BEGIN:DAYLIGHT
  381.12 +TZOFFSETFROM:-0800
  381.13 +TZOFFSETTO:-0700
  381.14 +TZNAME:PDT
  381.15 +DTSTART:20070311T020000
  381.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  381.17 +END:DAYLIGHT
  381.18 +BEGIN:STANDARD
  381.19 +TZOFFSETFROM:-0700
  381.20 +TZOFFSETTO:-0800
  381.21 +TZNAME:PST
  381.22 +DTSTART:20071104T020000
  381.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  381.24 +END:STANDARD
  381.25 +BEGIN:STANDARD
  381.26 +TZOFFSETFROM:-075258
  381.27 +TZOFFSETTO:-0800
  381.28 +TZNAME:PST
  381.29 +DTSTART:18831118T120702
  381.30 +RDATE:18831118T120702
  381.31 +END:STANDARD
  381.32 +BEGIN:DAYLIGHT
  381.33 +TZOFFSETFROM:-0800
  381.34 +TZOFFSETTO:-0700
  381.35 +TZNAME:PDT
  381.36 +DTSTART:19180331T020000
  381.37 +RDATE:19180331T020000
  381.38 +RDATE:19190330T020000
  381.39 +RDATE:19480314T020000
  381.40 +RDATE:19500430T020000
  381.41 +RDATE:19510429T020000
  381.42 +RDATE:19520427T020000
  381.43 +RDATE:19530426T020000
  381.44 +RDATE:19540425T020000
  381.45 +RDATE:19550424T020000
  381.46 +RDATE:19560429T020000
  381.47 +RDATE:19570428T020000
  381.48 +RDATE:19580427T020000
  381.49 +RDATE:19590426T020000
  381.50 +RDATE:19600424T020000
  381.51 +RDATE:19610430T020000
  381.52 +RDATE:19620429T020000
  381.53 +RDATE:19630428T020000
  381.54 +RDATE:19640426T020000
  381.55 +RDATE:19650425T020000
  381.56 +RDATE:19660424T020000
  381.57 +RDATE:19670430T020000
  381.58 +RDATE:19680428T020000
  381.59 +RDATE:19690427T020000
  381.60 +RDATE:19700426T020000
  381.61 +RDATE:19710425T020000
  381.62 +RDATE:19720430T020000
  381.63 +RDATE:19730429T020000
  381.64 +RDATE:19740106T020000
  381.65 +RDATE:19750223T020000
  381.66 +RDATE:19760425T020000
  381.67 +RDATE:19770424T020000
  381.68 +RDATE:19780430T020000
  381.69 +RDATE:19790429T020000
  381.70 +RDATE:19800427T020000
  381.71 +RDATE:19810426T020000
  381.72 +RDATE:19820425T020000
  381.73 +RDATE:19830424T020000
  381.74 +RDATE:19840429T020000
  381.75 +RDATE:19850428T020000
  381.76 +RDATE:19860427T020000
  381.77 +RDATE:19870405T020000
  381.78 +RDATE:19880403T020000
  381.79 +RDATE:19890402T020000
  381.80 +RDATE:19900401T020000
  381.81 +RDATE:19910407T020000
  381.82 +RDATE:19920405T020000
  381.83 +RDATE:19930404T020000
  381.84 +RDATE:19940403T020000
  381.85 +RDATE:19950402T020000
  381.86 +RDATE:19960407T020000
  381.87 +RDATE:19970406T020000
  381.88 +RDATE:19980405T020000
  381.89 +RDATE:19990404T020000
  381.90 +RDATE:20000402T020000
  381.91 +RDATE:20010401T020000
  381.92 +RDATE:20020407T020000
  381.93 +RDATE:20030406T020000
  381.94 +RDATE:20040404T020000
  381.95 +RDATE:20050403T020000
  381.96 +RDATE:20060402T020000
  381.97 +END:DAYLIGHT
  381.98 +BEGIN:STANDARD
  381.99 +TZOFFSETFROM:-0700
 381.100 +TZOFFSETTO:-0800
 381.101 +TZNAME:PST
 381.102 +DTSTART:19181027T020000
 381.103 +RDATE:19181027T020000
 381.104 +RDATE:19191026T020000
 381.105 +RDATE:19450930T020000
 381.106 +RDATE:19490101T020000
 381.107 +RDATE:19500924T020000
 381.108 +RDATE:19510930T020000
 381.109 +RDATE:19520928T020000
 381.110 +RDATE:19530927T020000
 381.111 +RDATE:19540926T020000
 381.112 +RDATE:19550925T020000
 381.113 +RDATE:19560930T020000
 381.114 +RDATE:19570929T020000
 381.115 +RDATE:19580928T020000
 381.116 +RDATE:19590927T020000
 381.117 +RDATE:19600925T020000
 381.118 +RDATE:19610924T020000
 381.119 +RDATE:19621028T020000
 381.120 +RDATE:19631027T020000
 381.121 +RDATE:19641025T020000
 381.122 +RDATE:19651031T020000
 381.123 +RDATE:19661030T020000
 381.124 +RDATE:19671029T020000
 381.125 +RDATE:19681027T020000
 381.126 +RDATE:19691026T020000
 381.127 +RDATE:19701025T020000
 381.128 +RDATE:19711031T020000
 381.129 +RDATE:19721029T020000
 381.130 +RDATE:19731028T020000
 381.131 +RDATE:19741027T020000
 381.132 +RDATE:19751026T020000
 381.133 +RDATE:19761031T020000
 381.134 +RDATE:19771030T020000
 381.135 +RDATE:19781029T020000
 381.136 +RDATE:19791028T020000
 381.137 +RDATE:19801026T020000
 381.138 +RDATE:19811025T020000
 381.139 +RDATE:19821031T020000
 381.140 +RDATE:19831030T020000
 381.141 +RDATE:19841028T020000
 381.142 +RDATE:19851027T020000
 381.143 +RDATE:19861026T020000
 381.144 +RDATE:19871025T020000
 381.145 +RDATE:19881030T020000
 381.146 +RDATE:19891029T020000
 381.147 +RDATE:19901028T020000
 381.148 +RDATE:19911027T020000
 381.149 +RDATE:19921025T020000
 381.150 +RDATE:19931031T020000
 381.151 +RDATE:19941030T020000
 381.152 +RDATE:19951029T020000
 381.153 +RDATE:19961027T020000
 381.154 +RDATE:19971026T020000
 381.155 +RDATE:19981025T020000
 381.156 +RDATE:19991031T020000
 381.157 +RDATE:20001029T020000
 381.158 +RDATE:20011028T020000
 381.159 +RDATE:20021027T020000
 381.160 +RDATE:20031026T020000
 381.161 +RDATE:20041031T020000
 381.162 +RDATE:20051030T020000
 381.163 +RDATE:20061029T020000
 381.164 +END:STANDARD
 381.165 +BEGIN:DAYLIGHT
 381.166 +TZOFFSETFROM:-0800
 381.167 +TZOFFSETTO:-0700
 381.168 +TZNAME:PWT
 381.169 +DTSTART:19420209T020000
 381.170 +RDATE:19420209T020000
 381.171 +END:DAYLIGHT
 381.172 +BEGIN:DAYLIGHT
 381.173 +TZOFFSETFROM:-0700
 381.174 +TZOFFSETTO:-0700
 381.175 +TZNAME:PPT
 381.176 +DTSTART:19450814T160000
 381.177 +RDATE:19450814T160000
 381.178 +END:DAYLIGHT
 381.179 +BEGIN:STANDARD
 381.180 +TZOFFSETFROM:-0800
 381.181 +TZOFFSETTO:-0800
 381.182 +TZNAME:PST
 381.183 +DTSTART:19460101T000000
 381.184 +RDATE:19460101T000000
 381.185 +RDATE:19670101T000000
 381.186 +END:STANDARD
 381.187 +END:VTIMEZONE
 381.188 +END:VCALENDAR
   382.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   382.2 +++ b/src/zoneinfo-global/America/Lower_Princes.ics	Tue Feb 10 18:12:00 2015 +0100
   382.3 @@ -0,0 +1,23 @@
   382.4 +BEGIN:VCALENDAR
   382.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   382.6 +VERSION:2.0
   382.7 +BEGIN:VTIMEZONE
   382.8 +TZID:America/Lower_Princes
   382.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Lower_Princes
  382.10 +X-LIC-LOCATION:America/Lower_Princes
  382.11 +BEGIN:STANDARD
  382.12 +TZOFFSETFROM:-043544
  382.13 +TZOFFSETTO:-0430
  382.14 +TZNAME:ANT
  382.15 +DTSTART:19120212T000000
  382.16 +RDATE:19120212T000000
  382.17 +END:STANDARD
  382.18 +BEGIN:STANDARD
  382.19 +TZOFFSETFROM:-0430
  382.20 +TZOFFSETTO:-0400
  382.21 +TZNAME:AST
  382.22 +DTSTART:19650101T000000
  382.23 +RDATE:19650101T000000
  382.24 +END:STANDARD
  382.25 +END:VTIMEZONE
  382.26 +END:VCALENDAR
   383.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   383.2 +++ b/src/zoneinfo-global/America/Maceio.ics	Tue Feb 10 18:12:00 2015 +0100
   383.3 @@ -0,0 +1,80 @@
   383.4 +BEGIN:VCALENDAR
   383.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   383.6 +VERSION:2.0
   383.7 +BEGIN:VTIMEZONE
   383.8 +TZID:America/Maceio
   383.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Maceio
  383.10 +X-LIC-LOCATION:America/Maceio
  383.11 +BEGIN:STANDARD
  383.12 +TZOFFSETFROM:-022252
  383.13 +TZOFFSETTO:-0300
  383.14 +TZNAME:BRT
  383.15 +DTSTART:19140101T000000
  383.16 +RDATE:19140101T000000
  383.17 +END:STANDARD
  383.18 +BEGIN:DAYLIGHT
  383.19 +TZOFFSETFROM:-0300
  383.20 +TZOFFSETTO:-0200
  383.21 +TZNAME:BRST
  383.22 +DTSTART:19311003T110000
  383.23 +RDATE:19311003T110000
  383.24 +RDATE:19321003T000000
  383.25 +RDATE:19491201T000000
  383.26 +RDATE:19501201T000000
  383.27 +RDATE:19511201T000000
  383.28 +RDATE:19521201T000000
  383.29 +RDATE:19631209T000000
  383.30 +RDATE:19650131T000000
  383.31 +RDATE:19651201T000000
  383.32 +RDATE:19661101T000000
  383.33 +RDATE:19671101T000000
  383.34 +RDATE:19851102T000000
  383.35 +RDATE:19861025T000000
  383.36 +RDATE:19871025T000000
  383.37 +RDATE:19881016T000000
  383.38 +RDATE:19891015T000000
  383.39 +RDATE:19951015T000000
  383.40 +RDATE:19991003T000000
  383.41 +RDATE:20001008T000000
  383.42 +RDATE:20011014T000000
  383.43 +END:DAYLIGHT
  383.44 +BEGIN:STANDARD
  383.45 +TZOFFSETFROM:-0200
  383.46 +TZOFFSETTO:-0300
  383.47 +TZNAME:BRT
  383.48 +DTSTART:19320401T000000
  383.49 +RDATE:19320401T000000
  383.50 +RDATE:19330401T000000
  383.51 +RDATE:19500416T010000
  383.52 +RDATE:19510401T000000
  383.53 +RDATE:19520401T000000
  383.54 +RDATE:19530301T000000
  383.55 +RDATE:19640301T000000
  383.56 +RDATE:19650331T000000
  383.57 +RDATE:19660301T000000
  383.58 +RDATE:19670301T000000
  383.59 +RDATE:19680301T000000
  383.60 +RDATE:19860315T000000
  383.61 +RDATE:19870214T000000
  383.62 +RDATE:19880207T000000
  383.63 +RDATE:19890129T000000
  383.64 +RDATE:19900211T000000
  383.65 +RDATE:19960211T000000
  383.66 +RDATE:20000227T000000
  383.67 +RDATE:20001022T000000
  383.68 +RDATE:20020217T000000
  383.69 +END:STANDARD
  383.70 +BEGIN:STANDARD
  383.71 +TZOFFSETFROM:-0300
  383.72 +TZOFFSETTO:-0300
  383.73 +TZNAME:BRT
  383.74 +DTSTART:19900917T000000
  383.75 +RDATE:19900917T000000
  383.76 +RDATE:19951013T000000
  383.77 +RDATE:19960904T000000
  383.78 +RDATE:19990930T000000
  383.79 +RDATE:20010913T000000
  383.80 +RDATE:20021001T000000
  383.81 +END:STANDARD
  383.82 +END:VTIMEZONE
  383.83 +END:VCALENDAR
   384.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   384.2 +++ b/src/zoneinfo-global/America/Managua.ics	Tue Feb 10 18:12:00 2015 +0100
   384.3 @@ -0,0 +1,55 @@
   384.4 +BEGIN:VCALENDAR
   384.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   384.6 +VERSION:2.0
   384.7 +BEGIN:VTIMEZONE
   384.8 +TZID:America/Managua
   384.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Managua
  384.10 +X-LIC-LOCATION:America/Managua
  384.11 +BEGIN:STANDARD
  384.12 +TZOFFSETFROM:-054508
  384.13 +TZOFFSETTO:-054512
  384.14 +TZNAME:MMT
  384.15 +DTSTART:18900101T000000
  384.16 +RDATE:18900101T000000
  384.17 +END:STANDARD
  384.18 +BEGIN:STANDARD
  384.19 +TZOFFSETFROM:-054512
  384.20 +TZOFFSETTO:-0600
  384.21 +TZNAME:CST
  384.22 +DTSTART:19340623T000000
  384.23 +RDATE:19340623T000000
  384.24 +END:STANDARD
  384.25 +BEGIN:STANDARD
  384.26 +TZOFFSETFROM:-0600
  384.27 +TZOFFSETTO:-0500
  384.28 +TZNAME:EST
  384.29 +DTSTART:19730501T000000
  384.30 +RDATE:19730501T000000
  384.31 +RDATE:19920101T040000
  384.32 +RDATE:19930101T000000
  384.33 +END:STANDARD
  384.34 +BEGIN:STANDARD
  384.35 +TZOFFSETFROM:-0500
  384.36 +TZOFFSETTO:-0600
  384.37 +TZNAME:CST
  384.38 +DTSTART:19750216T000000
  384.39 +RDATE:19750216T000000
  384.40 +RDATE:19790625T000000
  384.41 +RDATE:19800623T000000
  384.42 +RDATE:19920924T000000
  384.43 +RDATE:19970101T000000
  384.44 +RDATE:20051002T000000
  384.45 +RDATE:20061001T010000
  384.46 +END:STANDARD
  384.47 +BEGIN:DAYLIGHT
  384.48 +TZOFFSETFROM:-0600
  384.49 +TZOFFSETTO:-0500
  384.50 +TZNAME:CDT
  384.51 +DTSTART:19790318T000000
  384.52 +RDATE:19790318T000000
  384.53 +RDATE:19800316T000000
  384.54 +RDATE:20050410T000000
  384.55 +RDATE:20060430T020000
  384.56 +END:DAYLIGHT
  384.57 +END:VTIMEZONE
  384.58 +END:VCALENDAR
   385.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   385.2 +++ b/src/zoneinfo-global/America/Manaus.ics	Tue Feb 10 18:12:00 2015 +0100
   385.3 @@ -0,0 +1,67 @@
   385.4 +BEGIN:VCALENDAR
   385.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   385.6 +VERSION:2.0
   385.7 +BEGIN:VTIMEZONE
   385.8 +TZID:America/Manaus
   385.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Manaus
  385.10 +X-LIC-LOCATION:America/Manaus
  385.11 +BEGIN:STANDARD
  385.12 +TZOFFSETFROM:-040004
  385.13 +TZOFFSETTO:-0400
  385.14 +TZNAME:AMT
  385.15 +DTSTART:19140101T000000
  385.16 +RDATE:19140101T000000
  385.17 +END:STANDARD
  385.18 +BEGIN:DAYLIGHT
  385.19 +TZOFFSETFROM:-0400
  385.20 +TZOFFSETTO:-0300
  385.21 +TZNAME:AMST
  385.22 +DTSTART:19311003T110000
  385.23 +RDATE:19311003T110000
  385.24 +RDATE:19321003T000000
  385.25 +RDATE:19491201T000000
  385.26 +RDATE:19501201T000000
  385.27 +RDATE:19511201T000000
  385.28 +RDATE:19521201T000000
  385.29 +RDATE:19631209T000000
  385.30 +RDATE:19650131T000000
  385.31 +RDATE:19651201T000000
  385.32 +RDATE:19661101T000000
  385.33 +RDATE:19671101T000000
  385.34 +RDATE:19851102T000000
  385.35 +RDATE:19861025T000000
  385.36 +RDATE:19871025T000000
  385.37 +RDATE:19931017T000000
  385.38 +END:DAYLIGHT
  385.39 +BEGIN:STANDARD
  385.40 +TZOFFSETFROM:-0300
  385.41 +TZOFFSETTO:-0400
  385.42 +TZNAME:AMT
  385.43 +DTSTART:19320401T000000
  385.44 +RDATE:19320401T000000
  385.45 +RDATE:19330401T000000
  385.46 +RDATE:19500416T010000
  385.47 +RDATE:19510401T000000
  385.48 +RDATE:19520401T000000
  385.49 +RDATE:19530301T000000
  385.50 +RDATE:19640301T000000
  385.51 +RDATE:19650331T000000
  385.52 +RDATE:19660301T000000
  385.53 +RDATE:19670301T000000
  385.54 +RDATE:19680301T000000
  385.55 +RDATE:19860315T000000
  385.56 +RDATE:19870214T000000
  385.57 +RDATE:19880207T000000
  385.58 +RDATE:19940220T000000
  385.59 +END:STANDARD
  385.60 +BEGIN:STANDARD
  385.61 +TZOFFSETFROM:-0400
  385.62 +TZOFFSETTO:-0400
  385.63 +TZNAME:AMT
  385.64 +DTSTART:19880912T000000
  385.65 +RDATE:19880912T000000
  385.66 +RDATE:19930928T000000
  385.67 +RDATE:19940922T000000
  385.68 +END:STANDARD
  385.69 +END:VTIMEZONE
  385.70 +END:VCALENDAR
   386.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   386.2 +++ b/src/zoneinfo-global/America/Marigot.ics	Tue Feb 10 18:12:00 2015 +0100
   386.3 @@ -0,0 +1,16 @@
   386.4 +BEGIN:VCALENDAR
   386.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   386.6 +VERSION:2.0
   386.7 +BEGIN:VTIMEZONE
   386.8 +TZID:America/Marigot
   386.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Marigot
  386.10 +X-LIC-LOCATION:America/Marigot
  386.11 +BEGIN:STANDARD
  386.12 +TZOFFSETFROM:-040608
  386.13 +TZOFFSETTO:-0400
  386.14 +TZNAME:AST
  386.15 +DTSTART:19110608T000000
  386.16 +RDATE:19110608T000000
  386.17 +END:STANDARD
  386.18 +END:VTIMEZONE
  386.19 +END:VCALENDAR
   387.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   387.2 +++ b/src/zoneinfo-global/America/Martinique.ics	Tue Feb 10 18:12:00 2015 +0100
   387.3 @@ -0,0 +1,37 @@
   387.4 +BEGIN:VCALENDAR
   387.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   387.6 +VERSION:2.0
   387.7 +BEGIN:VTIMEZONE
   387.8 +TZID:America/Martinique
   387.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Martinique
  387.10 +X-LIC-LOCATION:America/Martinique
  387.11 +BEGIN:STANDARD
  387.12 +TZOFFSETFROM:-040420
  387.13 +TZOFFSETTO:-040420
  387.14 +TZNAME:FFMT
  387.15 +DTSTART:18900101T000000
  387.16 +RDATE:18900101T000000
  387.17 +END:STANDARD
  387.18 +BEGIN:STANDARD
  387.19 +TZOFFSETFROM:-040420
  387.20 +TZOFFSETTO:-0400
  387.21 +TZNAME:AST
  387.22 +DTSTART:19110501T000000
  387.23 +RDATE:19110501T000000
  387.24 +END:STANDARD
  387.25 +BEGIN:DAYLIGHT
  387.26 +TZOFFSETFROM:-0400
  387.27 +TZOFFSETTO:-0300
  387.28 +TZNAME:ADT
  387.29 +DTSTART:19800406T000000
  387.30 +RDATE:19800406T000000
  387.31 +END:DAYLIGHT
  387.32 +BEGIN:STANDARD
  387.33 +TZOFFSETFROM:-0300
  387.34 +TZOFFSETTO:-0400
  387.35 +TZNAME:AST
  387.36 +DTSTART:19800928T000000
  387.37 +RDATE:19800928T000000
  387.38 +END:STANDARD
  387.39 +END:VTIMEZONE
  387.40 +END:VCALENDAR
   388.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   388.2 +++ b/src/zoneinfo-global/America/Matamoros.ics	Tue Feb 10 18:12:00 2015 +0100
   388.3 @@ -0,0 +1,81 @@
   388.4 +BEGIN:VCALENDAR
   388.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   388.6 +VERSION:2.0
   388.7 +BEGIN:VTIMEZONE
   388.8 +TZID:America/Matamoros
   388.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Matamoros
  388.10 +X-LIC-LOCATION:America/Matamoros
  388.11 +BEGIN:DAYLIGHT
  388.12 +TZOFFSETFROM:-0600
  388.13 +TZOFFSETTO:-0500
  388.14 +TZNAME:CDT
  388.15 +DTSTART:20100314T020000
  388.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  388.17 +END:DAYLIGHT
  388.18 +BEGIN:STANDARD
  388.19 +TZOFFSETFROM:-0500
  388.20 +TZOFFSETTO:-0600
  388.21 +TZNAME:CST
  388.22 +DTSTART:20101107T020000
  388.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  388.24 +END:STANDARD
  388.25 +BEGIN:STANDARD
  388.26 +TZOFFSETFROM:-0640
  388.27 +TZOFFSETTO:-0600
  388.28 +TZNAME:CST
  388.29 +DTSTART:19211231T232000
  388.30 +RDATE:19211231T232000
  388.31 +END:STANDARD
  388.32 +BEGIN:STANDARD
  388.33 +TZOFFSETFROM:-0600
  388.34 +TZOFFSETTO:-0600
  388.35 +TZNAME:CST
  388.36 +DTSTART:19880101T000000
  388.37 +RDATE:19880101T000000
  388.38 +RDATE:19890101T000000
  388.39 +RDATE:20100101T000000
  388.40 +END:STANDARD
  388.41 +BEGIN:DAYLIGHT
  388.42 +TZOFFSETFROM:-0600
  388.43 +TZOFFSETTO:-0500
  388.44 +TZNAME:CDT
  388.45 +DTSTART:19880403T020000
  388.46 +RDATE:19880403T020000
  388.47 +RDATE:19960407T020000
  388.48 +RDATE:19970406T020000
  388.49 +RDATE:19980405T020000
  388.50 +RDATE:19990404T020000
  388.51 +RDATE:20000402T020000
  388.52 +RDATE:20010506T020000
  388.53 +RDATE:20020407T020000
  388.54 +RDATE:20030406T020000
  388.55 +RDATE:20040404T020000
  388.56 +RDATE:20050403T020000
  388.57 +RDATE:20060402T020000
  388.58 +RDATE:20070401T020000
  388.59 +RDATE:20080406T020000
  388.60 +RDATE:20090405T020000
  388.61 +END:DAYLIGHT
  388.62 +BEGIN:STANDARD
  388.63 +TZOFFSETFROM:-0500
  388.64 +TZOFFSETTO:-0600
  388.65 +TZNAME:CST
  388.66 +DTSTART:19881030T020000
  388.67 +RDATE:19881030T020000
  388.68 +RDATE:19961027T020000
  388.69 +RDATE:19971026T020000
  388.70 +RDATE:19981025T020000
  388.71 +RDATE:19991031T020000
  388.72 +RDATE:20001029T020000
  388.73 +RDATE:20010930T020000
  388.74 +RDATE:20021027T020000
  388.75 +RDATE:20031026T020000
  388.76 +RDATE:20041031T020000
  388.77 +RDATE:20051030T020000
  388.78 +RDATE:20061029T020000
  388.79 +RDATE:20071028T020000
  388.80 +RDATE:20081026T020000
  388.81 +RDATE:20091025T020000
  388.82 +END:STANDARD
  388.83 +END:VTIMEZONE
  388.84 +END:VCALENDAR
   389.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   389.2 +++ b/src/zoneinfo-global/America/Mazatlan.ics	Tue Feb 10 18:12:00 2015 +0100
   389.3 @@ -0,0 +1,80 @@
   389.4 +BEGIN:VCALENDAR
   389.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   389.6 +VERSION:2.0
   389.7 +BEGIN:VTIMEZONE
   389.8 +TZID:America/Mazatlan
   389.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Mazatlan
  389.10 +X-LIC-LOCATION:America/Mazatlan
  389.11 +BEGIN:DAYLIGHT
  389.12 +TZOFFSETFROM:-0700
  389.13 +TZOFFSETTO:-0600
  389.14 +TZNAME:MDT
  389.15 +DTSTART:20020407T020000
  389.16 +RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU
  389.17 +END:DAYLIGHT
  389.18 +BEGIN:STANDARD
  389.19 +TZOFFSETFROM:-0600
  389.20 +TZOFFSETTO:-0700
  389.21 +TZNAME:MST
  389.22 +DTSTART:20021027T020000
  389.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  389.24 +END:STANDARD
  389.25 +BEGIN:STANDARD
  389.26 +TZOFFSETFROM:-070540
  389.27 +TZOFFSETTO:-0700
  389.28 +TZNAME:MST
  389.29 +DTSTART:19211231T235420
  389.30 +RDATE:19211231T235420
  389.31 +END:STANDARD
  389.32 +BEGIN:STANDARD
  389.33 +TZOFFSETFROM:-0700
  389.34 +TZOFFSETTO:-0600
  389.35 +TZNAME:CST
  389.36 +DTSTART:19270610T230000
  389.37 +RDATE:19270610T230000
  389.38 +RDATE:19310501T230000
  389.39 +RDATE:19320401T000000
  389.40 +END:STANDARD
  389.41 +BEGIN:STANDARD
  389.42 +TZOFFSETFROM:-0600
  389.43 +TZOFFSETTO:-0700
  389.44 +TZNAME:MST
  389.45 +DTSTART:19301115T000000
  389.46 +RDATE:19301115T000000
  389.47 +RDATE:19311001T000000
  389.48 +RDATE:19420424T000000
  389.49 +RDATE:19961027T020000
  389.50 +RDATE:19971026T020000
  389.51 +RDATE:19981025T020000
  389.52 +RDATE:19991031T020000
  389.53 +RDATE:20001029T020000
  389.54 +RDATE:20010930T020000
  389.55 +END:STANDARD
  389.56 +BEGIN:STANDARD
  389.57 +TZOFFSETFROM:-0700
  389.58 +TZOFFSETTO:-0800
  389.59 +TZNAME:PST
  389.60 +DTSTART:19490114T000000
  389.61 +RDATE:19490114T000000
  389.62 +END:STANDARD
  389.63 +BEGIN:STANDARD
  389.64 +TZOFFSETFROM:-0800
  389.65 +TZOFFSETTO:-0700
  389.66 +TZNAME:MST
  389.67 +DTSTART:19700101T000000
  389.68 +RDATE:19700101T000000
  389.69 +END:STANDARD
  389.70 +BEGIN:DAYLIGHT
  389.71 +TZOFFSETFROM:-0700
  389.72 +TZOFFSETTO:-0600
  389.73 +TZNAME:MDT
  389.74 +DTSTART:19960407T020000
  389.75 +RDATE:19960407T020000
  389.76 +RDATE:19970406T020000
  389.77 +RDATE:19980405T020000
  389.78 +RDATE:19990404T020000
  389.79 +RDATE:20000402T020000
  389.80 +RDATE:20010506T020000
  389.81 +END:DAYLIGHT
  389.82 +END:VTIMEZONE
  389.83 +END:VCALENDAR
   390.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   390.2 +++ b/src/zoneinfo-global/America/Menominee.ics	Tue Feb 10 18:12:00 2015 +0100
   390.3 @@ -0,0 +1,153 @@
   390.4 +BEGIN:VCALENDAR
   390.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   390.6 +VERSION:2.0
   390.7 +BEGIN:VTIMEZONE
   390.8 +TZID:America/Menominee
   390.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Menominee
  390.10 +X-LIC-LOCATION:America/Menominee
  390.11 +BEGIN:DAYLIGHT
  390.12 +TZOFFSETFROM:-0600
  390.13 +TZOFFSETTO:-0500
  390.14 +TZNAME:CDT
  390.15 +DTSTART:20070311T020000
  390.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  390.17 +END:DAYLIGHT
  390.18 +BEGIN:STANDARD
  390.19 +TZOFFSETFROM:-0500
  390.20 +TZOFFSETTO:-0600
  390.21 +TZNAME:CST
  390.22 +DTSTART:20071104T020000
  390.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  390.24 +END:STANDARD
  390.25 +BEGIN:STANDARD
  390.26 +TZOFFSETFROM:-055027
  390.27 +TZOFFSETTO:-0600
  390.28 +TZNAME:CST
  390.29 +DTSTART:18850918T120000
  390.30 +RDATE:18850918T120000
  390.31 +END:STANDARD
  390.32 +BEGIN:DAYLIGHT
  390.33 +TZOFFSETFROM:-0600
  390.34 +TZOFFSETTO:-0500
  390.35 +TZNAME:CDT
  390.36 +DTSTART:19180331T020000
  390.37 +RDATE:19180331T020000
  390.38 +RDATE:19190330T020000
  390.39 +RDATE:19460428T020000
  390.40 +RDATE:19660424T020000
  390.41 +RDATE:19740106T020000
  390.42 +RDATE:19750223T020000
  390.43 +RDATE:19760425T020000
  390.44 +RDATE:19770424T020000
  390.45 +RDATE:19780430T020000
  390.46 +RDATE:19790429T020000
  390.47 +RDATE:19800427T020000
  390.48 +RDATE:19810426T020000
  390.49 +RDATE:19820425T020000
  390.50 +RDATE:19830424T020000
  390.51 +RDATE:19840429T020000
  390.52 +RDATE:19850428T020000
  390.53 +RDATE:19860427T020000
  390.54 +RDATE:19870405T020000
  390.55 +RDATE:19880403T020000
  390.56 +RDATE:19890402T020000
  390.57 +RDATE:19900401T020000
  390.58 +RDATE:19910407T020000
  390.59 +RDATE:19920405T020000
  390.60 +RDATE:19930404T020000
  390.61 +RDATE:19940403T020000
  390.62 +RDATE:19950402T020000
  390.63 +RDATE:19960407T020000
  390.64 +RDATE:19970406T020000
  390.65 +RDATE:19980405T020000
  390.66 +RDATE:19990404T020000
  390.67 +RDATE:20000402T020000
  390.68 +RDATE:20010401T020000
  390.69 +RDATE:20020407T020000
  390.70 +RDATE:20030406T020000
  390.71 +RDATE:20040404T020000
  390.72 +RDATE:20050403T020000
  390.73 +RDATE:20060402T020000
  390.74 +END:DAYLIGHT
  390.75 +BEGIN:STANDARD
  390.76 +TZOFFSETFROM:-0500
  390.77 +TZOFFSETTO:-0600
  390.78 +TZNAME:CST
  390.79 +DTSTART:19181027T020000
  390.80 +RDATE:19181027T020000
  390.81 +RDATE:19191026T020000
  390.82 +RDATE:19450930T020000
  390.83 +RDATE:19460929T020000
  390.84 +RDATE:19661030T020000
  390.85 +RDATE:19731028T020000
  390.86 +RDATE:19741027T020000
  390.87 +RDATE:19751026T020000
  390.88 +RDATE:19761031T020000
  390.89 +RDATE:19771030T020000
  390.90 +RDATE:19781029T020000
  390.91 +RDATE:19791028T020000
  390.92 +RDATE:19801026T020000
  390.93 +RDATE:19811025T020000
  390.94 +RDATE:19821031T020000
  390.95 +RDATE:19831030T020000
  390.96 +RDATE:19841028T020000
  390.97 +RDATE:19851027T020000
  390.98 +RDATE:19861026T020000
  390.99 +RDATE:19871025T020000
 390.100 +RDATE:19881030T020000
 390.101 +RDATE:19891029T020000
 390.102 +RDATE:19901028T020000
 390.103 +RDATE:19911027T020000
 390.104 +RDATE:19921025T020000
 390.105 +RDATE:19931031T020000
 390.106 +RDATE:19941030T020000
 390.107 +RDATE:19951029T020000
 390.108 +RDATE:19961027T020000
 390.109 +RDATE:19971026T020000
 390.110 +RDATE:19981025T020000
 390.111 +RDATE:19991031T020000
 390.112 +RDATE:20001029T020000
 390.113 +RDATE:20011028T020000
 390.114 +RDATE:20021027T020000
 390.115 +RDATE:20031026T020000
 390.116 +RDATE:20041031T020000
 390.117 +RDATE:20051030T020000
 390.118 +RDATE:20061029T020000
 390.119 +END:STANDARD
 390.120 +BEGIN:DAYLIGHT
 390.121 +TZOFFSETFROM:-0600
 390.122 +TZOFFSETTO:-0500
 390.123 +TZNAME:CWT
 390.124 +DTSTART:19420209T020000
 390.125 +RDATE:19420209T020000
 390.126 +END:DAYLIGHT
 390.127 +BEGIN:DAYLIGHT
 390.128 +TZOFFSETFROM:-0500
 390.129 +TZOFFSETTO:-0500
 390.130 +TZNAME:CPT
 390.131 +DTSTART:19450814T180000
 390.132 +RDATE:19450814T180000
 390.133 +END:DAYLIGHT
 390.134 +BEGIN:STANDARD
 390.135 +TZOFFSETFROM:-0600
 390.136 +TZOFFSETTO:-0600
 390.137 +TZNAME:CST
 390.138 +DTSTART:19460101T000000
 390.139 +RDATE:19460101T000000
 390.140 +END:STANDARD
 390.141 +BEGIN:STANDARD
 390.142 +TZOFFSETFROM:-0600
 390.143 +TZOFFSETTO:-0500
 390.144 +TZNAME:EST
 390.145 +DTSTART:19690427T020000
 390.146 +RDATE:19690427T020000
 390.147 +END:STANDARD
 390.148 +BEGIN:DAYLIGHT
 390.149 +TZOFFSETFROM:-0500
 390.150 +TZOFFSETTO:-0500
 390.151 +TZNAME:CDT
 390.152 +DTSTART:19730429T020000
 390.153 +RDATE:19730429T020000
 390.154 +END:DAYLIGHT
 390.155 +END:VTIMEZONE
 390.156 +END:VCALENDAR
   391.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   391.2 +++ b/src/zoneinfo-global/America/Merida.ics	Tue Feb 10 18:12:00 2015 +0100
   391.3 @@ -0,0 +1,62 @@
   391.4 +BEGIN:VCALENDAR
   391.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   391.6 +VERSION:2.0
   391.7 +BEGIN:VTIMEZONE
   391.8 +TZID:America/Merida
   391.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Merida
  391.10 +X-LIC-LOCATION:America/Merida
  391.11 +BEGIN:DAYLIGHT
  391.12 +TZOFFSETFROM:-0600
  391.13 +TZOFFSETTO:-0500
  391.14 +TZNAME:CDT
  391.15 +DTSTART:20020407T020000
  391.16 +RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU
  391.17 +END:DAYLIGHT
  391.18 +BEGIN:STANDARD
  391.19 +TZOFFSETFROM:-0500
  391.20 +TZOFFSETTO:-0600
  391.21 +TZNAME:CST
  391.22 +DTSTART:20021027T020000
  391.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  391.24 +END:STANDARD
  391.25 +BEGIN:STANDARD
  391.26 +TZOFFSETFROM:-055828
  391.27 +TZOFFSETTO:-0600
  391.28 +TZNAME:CST
  391.29 +DTSTART:19220101T000132
  391.30 +RDATE:19220101T000132
  391.31 +END:STANDARD
  391.32 +BEGIN:STANDARD
  391.33 +TZOFFSETFROM:-0600
  391.34 +TZOFFSETTO:-0500
  391.35 +TZNAME:EST
  391.36 +DTSTART:19811223T000000
  391.37 +RDATE:19811223T000000
  391.38 +END:STANDARD
  391.39 +BEGIN:STANDARD
  391.40 +TZOFFSETFROM:-0500
  391.41 +TZOFFSETTO:-0600
  391.42 +TZNAME:CST
  391.43 +DTSTART:19821202T000000
  391.44 +RDATE:19821202T000000
  391.45 +RDATE:19961027T020000
  391.46 +RDATE:19971026T020000
  391.47 +RDATE:19981025T020000
  391.48 +RDATE:19991031T020000
  391.49 +RDATE:20001029T020000
  391.50 +RDATE:20010930T020000
  391.51 +END:STANDARD
  391.52 +BEGIN:DAYLIGHT
  391.53 +TZOFFSETFROM:-0600
  391.54 +TZOFFSETTO:-0500
  391.55 +TZNAME:CDT
  391.56 +DTSTART:19960407T020000
  391.57 +RDATE:19960407T020000
  391.58 +RDATE:19970406T020000
  391.59 +RDATE:19980405T020000
  391.60 +RDATE:19990404T020000
  391.61 +RDATE:20000402T020000
  391.62 +RDATE:20010506T020000
  391.63 +END:DAYLIGHT
  391.64 +END:VTIMEZONE
  391.65 +END:VCALENDAR
   392.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   392.2 +++ b/src/zoneinfo-global/America/Metlakatla.ics	Tue Feb 10 18:12:00 2015 +0100
   392.3 @@ -0,0 +1,95 @@
   392.4 +BEGIN:VCALENDAR
   392.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   392.6 +VERSION:2.0
   392.7 +BEGIN:VTIMEZONE
   392.8 +TZID:America/Metlakatla
   392.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Metlakatla
  392.10 +X-LIC-LOCATION:America/Metlakatla
  392.11 +BEGIN:STANDARD
  392.12 +TZOFFSETFROM:+151342
  392.13 +TZOFFSETTO:-084618
  392.14 +TZNAME:LMT
  392.15 +DTSTART:18671018T000000
  392.16 +RDATE:18671018T000000
  392.17 +END:STANDARD
  392.18 +BEGIN:STANDARD
  392.19 +TZOFFSETFROM:-084618
  392.20 +TZOFFSETTO:-0800
  392.21 +TZNAME:PST
  392.22 +DTSTART:19000820T120000
  392.23 +RDATE:19000820T120000
  392.24 +END:STANDARD
  392.25 +BEGIN:STANDARD
  392.26 +TZOFFSETFROM:-0800
  392.27 +TZOFFSETTO:-0800
  392.28 +TZNAME:PST
  392.29 +DTSTART:19420101T000000
  392.30 +RDATE:19420101T000000
  392.31 +RDATE:19460101T000000
  392.32 +RDATE:19690101T000000
  392.33 +END:STANDARD
  392.34 +BEGIN:DAYLIGHT
  392.35 +TZOFFSETFROM:-0800
  392.36 +TZOFFSETTO:-0700
  392.37 +TZNAME:PWT
  392.38 +DTSTART:19420209T020000
  392.39 +RDATE:19420209T020000
  392.40 +END:DAYLIGHT
  392.41 +BEGIN:DAYLIGHT
  392.42 +TZOFFSETFROM:-0700
  392.43 +TZOFFSETTO:-0700
  392.44 +TZNAME:PPT
  392.45 +DTSTART:19450814T160000
  392.46 +RDATE:19450814T160000
  392.47 +END:DAYLIGHT
  392.48 +BEGIN:STANDARD
  392.49 +TZOFFSETFROM:-0700
  392.50 +TZOFFSETTO:-0800
  392.51 +TZNAME:PST
  392.52 +DTSTART:19450930T020000
  392.53 +RDATE:19450930T020000
  392.54 +RDATE:19691026T020000
  392.55 +RDATE:19701025T020000
  392.56 +RDATE:19711031T020000
  392.57 +RDATE:19721029T020000
  392.58 +RDATE:19731028T020000
  392.59 +RDATE:19741027T020000
  392.60 +RDATE:19751026T020000
  392.61 +RDATE:19761031T020000
  392.62 +RDATE:19771030T020000
  392.63 +RDATE:19781029T020000
  392.64 +RDATE:19791028T020000
  392.65 +RDATE:19801026T020000
  392.66 +RDATE:19811025T020000
  392.67 +RDATE:19821031T020000
  392.68 +END:STANDARD
  392.69 +BEGIN:DAYLIGHT
  392.70 +TZOFFSETFROM:-0800
  392.71 +TZOFFSETTO:-0700
  392.72 +TZNAME:PDT
  392.73 +DTSTART:19690427T020000
  392.74 +RDATE:19690427T020000
  392.75 +RDATE:19700426T020000
  392.76 +RDATE:19710425T020000
  392.77 +RDATE:19720430T020000
  392.78 +RDATE:19730429T020000
  392.79 +RDATE:19740106T020000
  392.80 +RDATE:19750223T020000
  392.81 +RDATE:19760425T020000
  392.82 +RDATE:19770424T020000
  392.83 +RDATE:19780430T020000
  392.84 +RDATE:19790429T020000
  392.85 +RDATE:19800427T020000
  392.86 +RDATE:19810426T020000
  392.87 +RDATE:19820425T020000
  392.88 +RDATE:19830424T020000
  392.89 +END:DAYLIGHT
  392.90 +BEGIN:STANDARD
  392.91 +TZOFFSETFROM:-0700
  392.92 +TZOFFSETTO:-0800
  392.93 +TZNAME:MeST
  392.94 +DTSTART:19831030T020000
  392.95 +RDATE:19831030T020000
  392.96 +END:STANDARD
  392.97 +END:VTIMEZONE
  392.98 +END:VCALENDAR
   393.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   393.2 +++ b/src/zoneinfo-global/America/Mexico_City.ics	Tue Feb 10 18:12:00 2015 +0100
   393.3 @@ -0,0 +1,92 @@
   393.4 +BEGIN:VCALENDAR
   393.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   393.6 +VERSION:2.0
   393.7 +BEGIN:VTIMEZONE
   393.8 +TZID:America/Mexico_City
   393.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Mexico_City
  393.10 +X-LIC-LOCATION:America/Mexico_City
  393.11 +BEGIN:DAYLIGHT
  393.12 +TZOFFSETFROM:-0600
  393.13 +TZOFFSETTO:-0500
  393.14 +TZNAME:CDT
  393.15 +DTSTART:20020407T020000
  393.16 +RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU
  393.17 +END:DAYLIGHT
  393.18 +BEGIN:STANDARD
  393.19 +TZOFFSETFROM:-0500
  393.20 +TZOFFSETTO:-0600
  393.21 +TZNAME:CST
  393.22 +DTSTART:20021027T020000
  393.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  393.24 +END:STANDARD
  393.25 +BEGIN:STANDARD
  393.26 +TZOFFSETFROM:-063636
  393.27 +TZOFFSETTO:-0700
  393.28 +TZNAME:MST
  393.29 +DTSTART:19220101T002324
  393.30 +RDATE:19220101T002324
  393.31 +END:STANDARD
  393.32 +BEGIN:STANDARD
  393.33 +TZOFFSETFROM:-0700
  393.34 +TZOFFSETTO:-0600
  393.35 +TZNAME:CST
  393.36 +DTSTART:19270610T230000
  393.37 +RDATE:19270610T230000
  393.38 +RDATE:19310501T230000
  393.39 +RDATE:19320401T000000
  393.40 +END:STANDARD
  393.41 +BEGIN:STANDARD
  393.42 +TZOFFSETFROM:-0600
  393.43 +TZOFFSETTO:-0700
  393.44 +TZNAME:MST
  393.45 +DTSTART:19301115T000000
  393.46 +RDATE:19301115T000000
  393.47 +RDATE:19311001T000000
  393.48 +END:STANDARD
  393.49 +BEGIN:DAYLIGHT
  393.50 +TZOFFSETFROM:-0600
  393.51 +TZOFFSETTO:-0500
  393.52 +TZNAME:CDT
  393.53 +DTSTART:19390205T000000
  393.54 +RDATE:19390205T000000
  393.55 +RDATE:19401209T000000
  393.56 +RDATE:19500212T000000
  393.57 +RDATE:19960407T020000
  393.58 +RDATE:19970406T020000
  393.59 +RDATE:19980405T020000
  393.60 +RDATE:19990404T020000
  393.61 +RDATE:20000402T020000
  393.62 +RDATE:20010506T020000
  393.63 +END:DAYLIGHT
  393.64 +BEGIN:STANDARD
  393.65 +TZOFFSETFROM:-0500
  393.66 +TZOFFSETTO:-0600
  393.67 +TZNAME:CST
  393.68 +DTSTART:19390625T000000
  393.69 +RDATE:19390625T000000
  393.70 +RDATE:19410401T000000
  393.71 +RDATE:19440501T000000
  393.72 +RDATE:19500730T000000
  393.73 +RDATE:19961027T020000
  393.74 +RDATE:19971026T020000
  393.75 +RDATE:19981025T020000
  393.76 +RDATE:19991031T020000
  393.77 +RDATE:20001029T020000
  393.78 +RDATE:20010930T020000
  393.79 +END:STANDARD
  393.80 +BEGIN:DAYLIGHT
  393.81 +TZOFFSETFROM:-0600
  393.82 +TZOFFSETTO:-0500
  393.83 +TZNAME:CWT
  393.84 +DTSTART:19431216T000000
  393.85 +RDATE:19431216T000000
  393.86 +END:DAYLIGHT
  393.87 +BEGIN:STANDARD
  393.88 +TZOFFSETFROM:-0600
  393.89 +TZOFFSETTO:-0600
  393.90 +TZNAME:CST
  393.91 +DTSTART:20020220T000000
  393.92 +RDATE:20020220T000000
  393.93 +END:STANDARD
  393.94 +END:VTIMEZONE
  393.95 +END:VCALENDAR
   394.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   394.2 +++ b/src/zoneinfo-global/America/Miquelon.ics	Tue Feb 10 18:12:00 2015 +0100
   394.3 @@ -0,0 +1,96 @@
   394.4 +BEGIN:VCALENDAR
   394.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   394.6 +VERSION:2.0
   394.7 +BEGIN:VTIMEZONE
   394.8 +TZID:America/Miquelon
   394.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Miquelon
  394.10 +X-LIC-LOCATION:America/Miquelon
  394.11 +BEGIN:DAYLIGHT
  394.12 +TZOFFSETFROM:-0300
  394.13 +TZOFFSETTO:-0200
  394.14 +TZNAME:PMDT
  394.15 +DTSTART:20070311T020000
  394.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  394.17 +END:DAYLIGHT
  394.18 +BEGIN:STANDARD
  394.19 +TZOFFSETFROM:-0200
  394.20 +TZOFFSETTO:-0300
  394.21 +TZNAME:PMST
  394.22 +DTSTART:20071104T020000
  394.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  394.24 +END:STANDARD
  394.25 +BEGIN:STANDARD
  394.26 +TZOFFSETFROM:-034440
  394.27 +TZOFFSETTO:-0400
  394.28 +TZNAME:AST
  394.29 +DTSTART:19110515T000000
  394.30 +RDATE:19110515T000000
  394.31 +END:STANDARD
  394.32 +BEGIN:STANDARD
  394.33 +TZOFFSETFROM:-0400
  394.34 +TZOFFSETTO:-0300
  394.35 +TZNAME:PMST
  394.36 +DTSTART:19800501T000000
  394.37 +RDATE:19800501T000000
  394.38 +END:STANDARD
  394.39 +BEGIN:STANDARD
  394.40 +TZOFFSETFROM:-0300
  394.41 +TZOFFSETTO:-0300
  394.42 +TZNAME:PMST
  394.43 +DTSTART:19870101T000000
  394.44 +RDATE:19870101T000000
  394.45 +END:STANDARD
  394.46 +BEGIN:DAYLIGHT
  394.47 +TZOFFSETFROM:-0300
  394.48 +TZOFFSETTO:-0200
  394.49 +TZNAME:PMDT
  394.50 +DTSTART:19870405T020000
  394.51 +RDATE:19870405T020000
  394.52 +RDATE:19880403T020000
  394.53 +RDATE:19890402T020000
  394.54 +RDATE:19900401T020000
  394.55 +RDATE:19910407T020000
  394.56 +RDATE:19920405T020000
  394.57 +RDATE:19930404T020000
  394.58 +RDATE:19940403T020000
  394.59 +RDATE:19950402T020000
  394.60 +RDATE:19960407T020000
  394.61 +RDATE:19970406T020000
  394.62 +RDATE:19980405T020000
  394.63 +RDATE:19990404T020000
  394.64 +RDATE:20000402T020000
  394.65 +RDATE:20010401T020000
  394.66 +RDATE:20020407T020000
  394.67 +RDATE:20030406T020000
  394.68 +RDATE:20040404T020000
  394.69 +RDATE:20050403T020000
  394.70 +RDATE:20060402T020000
  394.71 +END:DAYLIGHT
  394.72 +BEGIN:STANDARD
  394.73 +TZOFFSETFROM:-0200
  394.74 +TZOFFSETTO:-0300
  394.75 +TZNAME:PMST
  394.76 +DTSTART:19871025T020000
  394.77 +RDATE:19871025T020000
  394.78 +RDATE:19881030T020000
  394.79 +RDATE:19891029T020000
  394.80 +RDATE:19901028T020000
  394.81 +RDATE:19911027T020000
  394.82 +RDATE:19921025T020000
  394.83 +RDATE:19931031T020000
  394.84 +RDATE:19941030T020000
  394.85 +RDATE:19951029T020000
  394.86 +RDATE:19961027T020000
  394.87 +RDATE:19971026T020000
  394.88 +RDATE:19981025T020000
  394.89 +RDATE:19991031T020000
  394.90 +RDATE:20001029T020000
  394.91 +RDATE:20011028T020000
  394.92 +RDATE:20021027T020000
  394.93 +RDATE:20031026T020000
  394.94 +RDATE:20041031T020000
  394.95 +RDATE:20051030T020000
  394.96 +RDATE:20061029T020000
  394.97 +END:STANDARD
  394.98 +END:VTIMEZONE
  394.99 +END:VCALENDAR
   395.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   395.2 +++ b/src/zoneinfo-global/America/Moncton.ics	Tue Feb 10 18:12:00 2015 +0100
   395.3 @@ -0,0 +1,216 @@
   395.4 +BEGIN:VCALENDAR
   395.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   395.6 +VERSION:2.0
   395.7 +BEGIN:VTIMEZONE
   395.8 +TZID:America/Moncton
   395.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Moncton
  395.10 +X-LIC-LOCATION:America/Moncton
  395.11 +BEGIN:DAYLIGHT
  395.12 +TZOFFSETFROM:-0400
  395.13 +TZOFFSETTO:-0300
  395.14 +TZNAME:ADT
  395.15 +DTSTART:20070311T020000
  395.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  395.17 +END:DAYLIGHT
  395.18 +BEGIN:STANDARD
  395.19 +TZOFFSETFROM:-0300
  395.20 +TZOFFSETTO:-0400
  395.21 +TZNAME:AST
  395.22 +DTSTART:20071104T020000
  395.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  395.24 +END:STANDARD
  395.25 +BEGIN:STANDARD
  395.26 +TZOFFSETFROM:-041908
  395.27 +TZOFFSETTO:-0500
  395.28 +TZNAME:EST
  395.29 +DTSTART:18831209T000000
  395.30 +RDATE:18831209T000000
  395.31 +END:STANDARD
  395.32 +BEGIN:STANDARD
  395.33 +TZOFFSETFROM:-0500
  395.34 +TZOFFSETTO:-0400
  395.35 +TZNAME:AST
  395.36 +DTSTART:19020615T000000
  395.37 +RDATE:19020615T000000
  395.38 +END:STANDARD
  395.39 +BEGIN:DAYLIGHT
  395.40 +TZOFFSETFROM:-0400
  395.41 +TZOFFSETTO:-0300
  395.42 +TZNAME:ADT
  395.43 +DTSTART:19180414T020000
  395.44 +RDATE:19180414T020000
  395.45 +RDATE:19330611T010000
  395.46 +RDATE:19340610T010000
  395.47 +RDATE:19350609T010000
  395.48 +RDATE:19360607T010000
  395.49 +RDATE:19370606T010000
  395.50 +RDATE:19380605T010000
  395.51 +RDATE:19390527T010000
  395.52 +RDATE:19400519T010000
  395.53 +RDATE:19410504T010000
  395.54 +RDATE:19460428T020000
  395.55 +RDATE:19470427T020000
  395.56 +RDATE:19480425T020000
  395.57 +RDATE:19490424T020000
  395.58 +RDATE:19500430T020000
  395.59 +RDATE:19510429T020000
  395.60 +RDATE:19520427T020000
  395.61 +RDATE:19530426T020000
  395.62 +RDATE:19540425T020000
  395.63 +RDATE:19550424T020000
  395.64 +RDATE:19560429T020000
  395.65 +RDATE:19570428T020000
  395.66 +RDATE:19580427T020000
  395.67 +RDATE:19590426T020000
  395.68 +RDATE:19600424T020000
  395.69 +RDATE:19610430T020000
  395.70 +RDATE:19620429T020000
  395.71 +RDATE:19630428T020000
  395.72 +RDATE:19640426T020000
  395.73 +RDATE:19650425T020000
  395.74 +RDATE:19660424T020000
  395.75 +RDATE:19670430T020000
  395.76 +RDATE:19680428T020000
  395.77 +RDATE:19690427T020000
  395.78 +RDATE:19700426T020000
  395.79 +RDATE:19710425T020000
  395.80 +RDATE:19720430T020000
  395.81 +RDATE:19740428T020000
  395.82 +RDATE:19750427T020000
  395.83 +RDATE:19760425T020000
  395.84 +RDATE:19770424T020000
  395.85 +RDATE:19780430T020000
  395.86 +RDATE:19790429T020000
  395.87 +RDATE:19800427T020000
  395.88 +RDATE:19810426T020000
  395.89 +RDATE:19820425T020000
  395.90 +RDATE:19830424T020000
  395.91 +RDATE:19840429T020000
  395.92 +RDATE:19850428T020000
  395.93 +RDATE:19860427T020000
  395.94 +RDATE:19870405T020000
  395.95 +RDATE:19880403T020000
  395.96 +RDATE:19890402T020000
  395.97 +RDATE:19900401T020000
  395.98 +RDATE:19910407T020000
  395.99 +RDATE:19920405T020000
 395.100 +RDATE:19930404T000100
 395.101 +RDATE:19940403T000100
 395.102 +RDATE:19950402T000100
 395.103 +RDATE:19960407T000100
 395.104 +RDATE:19970406T000100
 395.105 +RDATE:19980405T000100
 395.106 +RDATE:19990404T000100
 395.107 +RDATE:20000402T000100
 395.108 +RDATE:20010401T000100
 395.109 +RDATE:20020407T000100
 395.110 +RDATE:20030406T000100
 395.111 +RDATE:20040404T000100
 395.112 +RDATE:20050403T000100
 395.113 +RDATE:20060402T000100
 395.114 +END:DAYLIGHT
 395.115 +BEGIN:STANDARD
 395.116 +TZOFFSETFROM:-0300
 395.117 +TZOFFSETTO:-0400
 395.118 +TZNAME:AST
 395.119 +DTSTART:19181031T020000
 395.120 +RDATE:19181031T020000
 395.121 +RDATE:19330910T010000
 395.122 +RDATE:19340909T010000
 395.123 +RDATE:19350908T010000
 395.124 +RDATE:19360906T010000
 395.125 +RDATE:19370905T010000
 395.126 +RDATE:19380904T010000
 395.127 +RDATE:19390923T010000
 395.128 +RDATE:19400921T010000
 395.129 +RDATE:19410927T010000
 395.130 +RDATE:19450930T020000
 395.131 +RDATE:19460929T020000
 395.132 +RDATE:19470928T020000
 395.133 +RDATE:19480926T020000
 395.134 +RDATE:19490925T020000
 395.135 +RDATE:19500924T020000
 395.136 +RDATE:19510930T020000
 395.137 +RDATE:19520928T020000
 395.138 +RDATE:19530927T020000
 395.139 +RDATE:19540926T020000
 395.140 +RDATE:19550925T020000
 395.141 +RDATE:19560930T020000
 395.142 +RDATE:19571027T020000
 395.143 +RDATE:19581026T020000
 395.144 +RDATE:19591025T020000
 395.145 +RDATE:19601030T020000
 395.146 +RDATE:19611029T020000
 395.147 +RDATE:19621028T020000
 395.148 +RDATE:19631027T020000
 395.149 +RDATE:19641025T020000
 395.150 +RDATE:19651031T020000
 395.151 +RDATE:19661030T020000
 395.152 +RDATE:19671029T020000
 395.153 +RDATE:19681027T020000
 395.154 +RDATE:19691026T020000
 395.155 +RDATE:19701025T020000
 395.156 +RDATE:19711031T020000
 395.157 +RDATE:19721029T020000
 395.158 +RDATE:19741027T020000
 395.159 +RDATE:19751026T020000
 395.160 +RDATE:19761031T020000
 395.161 +RDATE:19771030T020000
 395.162 +RDATE:19781029T020000
 395.163 +RDATE:19791028T020000
 395.164 +RDATE:19801026T020000
 395.165 +RDATE:19811025T020000
 395.166 +RDATE:19821031T020000
 395.167 +RDATE:19831030T020000
 395.168 +RDATE:19841028T020000
 395.169 +RDATE:19851027T020000
 395.170 +RDATE:19861026T020000
 395.171 +RDATE:19871025T020000
 395.172 +RDATE:19881030T020000
 395.173 +RDATE:19891029T020000
 395.174 +RDATE:19901028T020000
 395.175 +RDATE:19911027T020000
 395.176 +RDATE:19921025T020000
 395.177 +RDATE:19931031T000100
 395.178 +RDATE:19941030T000100
 395.179 +RDATE:19951029T000100
 395.180 +RDATE:19961027T000100
 395.181 +RDATE:19971026T000100
 395.182 +RDATE:19981025T000100
 395.183 +RDATE:19991031T000100
 395.184 +RDATE:20001029T000100
 395.185 +RDATE:20011028T000100
 395.186 +RDATE:20021027T000100
 395.187 +RDATE:20031026T000100
 395.188 +RDATE:20041031T000100
 395.189 +RDATE:20051030T000100
 395.190 +RDATE:20061029T000100
 395.191 +END:STANDARD
 395.192 +BEGIN:STANDARD
 395.193 +TZOFFSETFROM:-0400
 395.194 +TZOFFSETTO:-0400
 395.195 +TZNAME:AST
 395.196 +DTSTART:19330101T000000
 395.197 +RDATE:19330101T000000
 395.198 +RDATE:19420101T000000
 395.199 +RDATE:19460101T000000
 395.200 +RDATE:19730101T000000
 395.201 +RDATE:19930101T000000
 395.202 +RDATE:20070101T000000
 395.203 +END:STANDARD
 395.204 +BEGIN:DAYLIGHT
 395.205 +TZOFFSETFROM:-0400
 395.206 +TZOFFSETTO:-0300
 395.207 +TZNAME:AWT
 395.208 +DTSTART:19420209T020000
 395.209 +RDATE:19420209T020000
 395.210 +END:DAYLIGHT
 395.211 +BEGIN:DAYLIGHT
 395.212 +TZOFFSETFROM:-0300
 395.213 +TZOFFSETTO:-0300
 395.214 +TZNAME:APT
 395.215 +DTSTART:19450814T200000
 395.216 +RDATE:19450814T200000
 395.217 +END:DAYLIGHT
 395.218 +END:VTIMEZONE
 395.219 +END:VCALENDAR
   396.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   396.2 +++ b/src/zoneinfo-global/America/Monterrey.ics	Tue Feb 10 18:12:00 2015 +0100
   396.3 @@ -0,0 +1,64 @@
   396.4 +BEGIN:VCALENDAR
   396.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   396.6 +VERSION:2.0
   396.7 +BEGIN:VTIMEZONE
   396.8 +TZID:America/Monterrey
   396.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Monterrey
  396.10 +X-LIC-LOCATION:America/Monterrey
  396.11 +BEGIN:DAYLIGHT
  396.12 +TZOFFSETFROM:-0600
  396.13 +TZOFFSETTO:-0500
  396.14 +TZNAME:CDT
  396.15 +DTSTART:20020407T020000
  396.16 +RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU
  396.17 +END:DAYLIGHT
  396.18 +BEGIN:STANDARD
  396.19 +TZOFFSETFROM:-0500
  396.20 +TZOFFSETTO:-0600
  396.21 +TZNAME:CST
  396.22 +DTSTART:20021027T020000
  396.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  396.24 +END:STANDARD
  396.25 +BEGIN:STANDARD
  396.26 +TZOFFSETFROM:-064116
  396.27 +TZOFFSETTO:-0600
  396.28 +TZNAME:CST
  396.29 +DTSTART:19211231T231844
  396.30 +RDATE:19211231T231844
  396.31 +END:STANDARD
  396.32 +BEGIN:STANDARD
  396.33 +TZOFFSETFROM:-0600
  396.34 +TZOFFSETTO:-0600
  396.35 +TZNAME:CST
  396.36 +DTSTART:19880101T000000
  396.37 +RDATE:19880101T000000
  396.38 +RDATE:19890101T000000
  396.39 +END:STANDARD
  396.40 +BEGIN:DAYLIGHT
  396.41 +TZOFFSETFROM:-0600
  396.42 +TZOFFSETTO:-0500
  396.43 +TZNAME:CDT
  396.44 +DTSTART:19880403T020000
  396.45 +RDATE:19880403T020000
  396.46 +RDATE:19960407T020000
  396.47 +RDATE:19970406T020000
  396.48 +RDATE:19980405T020000
  396.49 +RDATE:19990404T020000
  396.50 +RDATE:20000402T020000
  396.51 +RDATE:20010506T020000
  396.52 +END:DAYLIGHT
  396.53 +BEGIN:STANDARD
  396.54 +TZOFFSETFROM:-0500
  396.55 +TZOFFSETTO:-0600
  396.56 +TZNAME:CST
  396.57 +DTSTART:19881030T020000
  396.58 +RDATE:19881030T020000
  396.59 +RDATE:19961027T020000
  396.60 +RDATE:19971026T020000
  396.61 +RDATE:19981025T020000
  396.62 +RDATE:19991031T020000
  396.63 +RDATE:20001029T020000
  396.64 +RDATE:20010930T020000
  396.65 +END:STANDARD
  396.66 +END:VTIMEZONE
  396.67 +END:VCALENDAR
   397.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   397.2 +++ b/src/zoneinfo-global/America/Montevideo.ics	Tue Feb 10 18:12:00 2015 +0100
   397.3 @@ -0,0 +1,152 @@
   397.4 +BEGIN:VCALENDAR
   397.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   397.6 +VERSION:2.0
   397.7 +BEGIN:VTIMEZONE
   397.8 +TZID:America/Montevideo
   397.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Montevideo
  397.10 +X-LIC-LOCATION:America/Montevideo
  397.11 +BEGIN:DAYLIGHT
  397.12 +TZOFFSETFROM:-0300
  397.13 +TZOFFSETTO:-0200
  397.14 +TZNAME:UYST
  397.15 +DTSTART:20061001T020000
  397.16 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU
  397.17 +END:DAYLIGHT
  397.18 +BEGIN:STANDARD
  397.19 +TZOFFSETFROM:-0200
  397.20 +TZOFFSETTO:-0300
  397.21 +TZNAME:UYT
  397.22 +DTSTART:20070311T020000
  397.23 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  397.24 +END:STANDARD
  397.25 +BEGIN:STANDARD
  397.26 +TZOFFSETFROM:-034444
  397.27 +TZOFFSETTO:-034444
  397.28 +TZNAME:MMT
  397.29 +DTSTART:18980628T000000
  397.30 +RDATE:18980628T000000
  397.31 +END:STANDARD
  397.32 +BEGIN:STANDARD
  397.33 +TZOFFSETFROM:-034444
  397.34 +TZOFFSETTO:-0330
  397.35 +TZNAME:UYT
  397.36 +DTSTART:19200501T000000
  397.37 +RDATE:19200501T000000
  397.38 +END:STANDARD
  397.39 +BEGIN:DAYLIGHT
  397.40 +TZOFFSETFROM:-0330
  397.41 +TZOFFSETTO:-0300
  397.42 +TZNAME:UYHST
  397.43 +DTSTART:19231002T000000
  397.44 +RDATE:19231002T000000
  397.45 +RDATE:19241001T000000
  397.46 +RDATE:19251001T000000
  397.47 +RDATE:19331029T000000
  397.48 +RDATE:19341028T000000
  397.49 +RDATE:19351027T000000
  397.50 +RDATE:19361101T000000
  397.51 +RDATE:19371031T000000
  397.52 +RDATE:19381030T000000
  397.53 +RDATE:19391029T000000
  397.54 +RDATE:19401027T000000
  397.55 +RDATE:19410801T000000
  397.56 +END:DAYLIGHT
  397.57 +BEGIN:STANDARD
  397.58 +TZOFFSETFROM:-0300
  397.59 +TZOFFSETTO:-0330
  397.60 +TZNAME:UYT
  397.61 +DTSTART:19240401T000000
  397.62 +RDATE:19240401T000000
  397.63 +RDATE:19250401T000000
  397.64 +RDATE:19260401T000000
  397.65 +RDATE:19340401T000000
  397.66 +RDATE:19350331T000000
  397.67 +RDATE:19360329T000000
  397.68 +RDATE:19370328T000000
  397.69 +RDATE:19380327T000000
  397.70 +RDATE:19390326T000000
  397.71 +RDATE:19400331T000000
  397.72 +RDATE:19410330T000000
  397.73 +RDATE:19420101T000000
  397.74 +END:STANDARD
  397.75 +BEGIN:DAYLIGHT
  397.76 +TZOFFSETFROM:-0330
  397.77 +TZOFFSETTO:-0200
  397.78 +TZNAME:UYST
  397.79 +DTSTART:19421214T000000
  397.80 +RDATE:19421214T000000
  397.81 +END:DAYLIGHT
  397.82 +BEGIN:STANDARD
  397.83 +TZOFFSETFROM:-0200
  397.84 +TZOFFSETTO:-0300
  397.85 +TZNAME:UYT
  397.86 +DTSTART:19430314T000000
  397.87 +RDATE:19430314T000000
  397.88 +RDATE:19591115T000000
  397.89 +RDATE:19600306T000000
  397.90 +RDATE:19650926T000000
  397.91 +RDATE:19661031T000000
  397.92 +RDATE:19671031T000000
  397.93 +RDATE:19720815T000000
  397.94 +RDATE:19761001T000000
  397.95 +RDATE:19780401T000000
  397.96 +RDATE:19800501T000000
  397.97 +RDATE:19880314T000000
  397.98 +RDATE:19890312T000000
  397.99 +RDATE:19900304T000000
 397.100 +RDATE:19910303T000000
 397.101 +RDATE:19920301T000000
 397.102 +RDATE:19930228T000000
 397.103 +RDATE:20050327T020000
 397.104 +RDATE:20060312T020000
 397.105 +END:STANDARD
 397.106 +BEGIN:DAYLIGHT
 397.107 +TZOFFSETFROM:-0300
 397.108 +TZOFFSETTO:-0200
 397.109 +TZNAME:UYST
 397.110 +DTSTART:19590524T000000
 397.111 +RDATE:19590524T000000
 397.112 +RDATE:19600117T000000
 397.113 +RDATE:19650404T000000
 397.114 +RDATE:19660403T000000
 397.115 +RDATE:19670402T000000
 397.116 +RDATE:19720424T000000
 397.117 +RDATE:19771204T000000
 397.118 +RDATE:19791001T000000
 397.119 +RDATE:19871214T000000
 397.120 +RDATE:19881211T000000
 397.121 +RDATE:19891029T000000
 397.122 +RDATE:19901021T000000
 397.123 +RDATE:19911027T000000
 397.124 +RDATE:19921018T000000
 397.125 +RDATE:20040919T000000
 397.126 +RDATE:20051009T020000
 397.127 +END:DAYLIGHT
 397.128 +BEGIN:DAYLIGHT
 397.129 +TZOFFSETFROM:-0300
 397.130 +TZOFFSETTO:-0230
 397.131 +TZNAME:UYHST
 397.132 +DTSTART:19680527T000000
 397.133 +RDATE:19680527T000000
 397.134 +RDATE:19690527T000000
 397.135 +RDATE:19700527T000000
 397.136 +RDATE:19740310T000000
 397.137 +END:DAYLIGHT
 397.138 +BEGIN:STANDARD
 397.139 +TZOFFSETFROM:-0230
 397.140 +TZOFFSETTO:-0300
 397.141 +TZNAME:UYT
 397.142 +DTSTART:19681202T000000
 397.143 +RDATE:19681202T000000
 397.144 +RDATE:19691202T000000
 397.145 +RDATE:19701202T000000
 397.146 +END:STANDARD
 397.147 +BEGIN:DAYLIGHT
 397.148 +TZOFFSETFROM:-0230
 397.149 +TZOFFSETTO:-0200
 397.150 +TZNAME:UYST
 397.151 +DTSTART:19741222T000000
 397.152 +RDATE:19741222T000000
 397.153 +END:DAYLIGHT
 397.154 +END:VTIMEZONE
 397.155 +END:VCALENDAR
   398.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   398.2 +++ b/src/zoneinfo-global/America/Montreal.ics	Tue Feb 10 18:12:00 2015 +0100
   398.3 @@ -0,0 +1,234 @@
   398.4 +BEGIN:VCALENDAR
   398.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   398.6 +VERSION:2.0
   398.7 +BEGIN:VTIMEZONE
   398.8 +TZID:America/Montreal
   398.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Montreal
  398.10 +X-LIC-LOCATION:America/Montreal
  398.11 +BEGIN:DAYLIGHT
  398.12 +TZOFFSETFROM:-0500
  398.13 +TZOFFSETTO:-0400
  398.14 +TZNAME:EDT
  398.15 +DTSTART:20070311T020000
  398.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  398.17 +END:DAYLIGHT
  398.18 +BEGIN:STANDARD
  398.19 +TZOFFSETFROM:-0400
  398.20 +TZOFFSETTO:-0500
  398.21 +TZNAME:EST
  398.22 +DTSTART:20071104T020000
  398.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  398.24 +END:STANDARD
  398.25 +BEGIN:STANDARD
  398.26 +TZOFFSETFROM:-045416
  398.27 +TZOFFSETTO:-0500
  398.28 +TZNAME:EST
  398.29 +DTSTART:18840101T000000
  398.30 +RDATE:18840101T000000
  398.31 +END:STANDARD
  398.32 +BEGIN:DAYLIGHT
  398.33 +TZOFFSETFROM:-0500
  398.34 +TZOFFSETTO:-0400
  398.35 +TZNAME:EDT
  398.36 +DTSTART:19170325T020000
  398.37 +RDATE:19170325T020000
  398.38 +RDATE:19180414T020000
  398.39 +RDATE:19190331T023000
  398.40 +RDATE:19200502T023000
  398.41 +RDATE:19210501T020000
  398.42 +RDATE:19220430T020000
  398.43 +RDATE:19240517T020000
  398.44 +RDATE:19250503T020000
  398.45 +RDATE:19260502T020000
  398.46 +RDATE:19270501T000000
  398.47 +RDATE:19280429T000000
  398.48 +RDATE:19290428T000000
  398.49 +RDATE:19300427T000000
  398.50 +RDATE:19310426T000000
  398.51 +RDATE:19320501T000000
  398.52 +RDATE:19330430T000000
  398.53 +RDATE:19340429T000000
  398.54 +RDATE:19350428T000000
  398.55 +RDATE:19360426T000000
  398.56 +RDATE:19370425T000000
  398.57 +RDATE:19380424T000000
  398.58 +RDATE:19390430T000000
  398.59 +RDATE:19400428T000000
  398.60 +RDATE:19460428T020000
  398.61 +RDATE:19470427T020000
  398.62 +RDATE:19480425T020000
  398.63 +RDATE:19490424T020000
  398.64 +RDATE:19500430T020000
  398.65 +RDATE:19510429T020000
  398.66 +RDATE:19520427T020000
  398.67 +RDATE:19530426T020000
  398.68 +RDATE:19540425T020000
  398.69 +RDATE:19550424T020000
  398.70 +RDATE:19560429T020000
  398.71 +RDATE:19570428T020000
  398.72 +RDATE:19580427T020000
  398.73 +RDATE:19590426T020000
  398.74 +RDATE:19600424T020000
  398.75 +RDATE:19610430T020000
  398.76 +RDATE:19620429T020000
  398.77 +RDATE:19630428T020000
  398.78 +RDATE:19640426T020000
  398.79 +RDATE:19650425T020000
  398.80 +RDATE:19660424T020000
  398.81 +RDATE:19670430T020000
  398.82 +RDATE:19680428T020000
  398.83 +RDATE:19690427T020000
  398.84 +RDATE:19700426T020000
  398.85 +RDATE:19710425T020000
  398.86 +RDATE:19720430T020000
  398.87 +RDATE:19730429T020000
  398.88 +RDATE:19740428T020000
  398.89 +RDATE:19750427T020000
  398.90 +RDATE:19760425T020000
  398.91 +RDATE:19770424T020000
  398.92 +RDATE:19780430T020000
  398.93 +RDATE:19790429T020000
  398.94 +RDATE:19800427T020000
  398.95 +RDATE:19810426T020000
  398.96 +RDATE:19820425T020000
  398.97 +RDATE:19830424T020000
  398.98 +RDATE:19840429T020000
  398.99 +RDATE:19850428T020000
 398.100 +RDATE:19860427T020000
 398.101 +RDATE:19870405T020000
 398.102 +RDATE:19880403T020000
 398.103 +RDATE:19890402T020000
 398.104 +RDATE:19900401T020000
 398.105 +RDATE:19910407T020000
 398.106 +RDATE:19920405T020000
 398.107 +RDATE:19930404T020000
 398.108 +RDATE:19940403T020000
 398.109 +RDATE:19950402T020000
 398.110 +RDATE:19960407T020000
 398.111 +RDATE:19970406T020000
 398.112 +RDATE:19980405T020000
 398.113 +RDATE:19990404T020000
 398.114 +RDATE:20000402T020000
 398.115 +RDATE:20010401T020000
 398.116 +RDATE:20020407T020000
 398.117 +RDATE:20030406T020000
 398.118 +RDATE:20040404T020000
 398.119 +RDATE:20050403T020000
 398.120 +RDATE:20060402T020000
 398.121 +END:DAYLIGHT
 398.122 +BEGIN:STANDARD
 398.123 +TZOFFSETFROM:-0400
 398.124 +TZOFFSETTO:-0500
 398.125 +TZNAME:EST
 398.126 +DTSTART:19170424T000000
 398.127 +RDATE:19170424T000000
 398.128 +RDATE:19181031T020000
 398.129 +RDATE:19191025T023000
 398.130 +RDATE:19201003T023000
 398.131 +RDATE:19211002T023000
 398.132 +RDATE:19221001T023000
 398.133 +RDATE:19240928T023000
 398.134 +RDATE:19250927T023000
 398.135 +RDATE:19260926T023000
 398.136 +RDATE:19270925T000000
 398.137 +RDATE:19280930T000000
 398.138 +RDATE:19290929T000000
 398.139 +RDATE:19300928T000000
 398.140 +RDATE:19310927T000000
 398.141 +RDATE:19320925T000000
 398.142 +RDATE:19331001T000000
 398.143 +RDATE:19340930T000000
 398.144 +RDATE:19350929T000000
 398.145 +RDATE:19360927T000000
 398.146 +RDATE:19370926T000000
 398.147 +RDATE:19380925T000000
 398.148 +RDATE:19390924T000000
 398.149 +RDATE:19450930T020000
 398.150 +RDATE:19460929T020000
 398.151 +RDATE:19470928T020000
 398.152 +RDATE:19480926T020000
 398.153 +RDATE:19491030T020000
 398.154 +RDATE:19501029T020000
 398.155 +RDATE:19510930T020000
 398.156 +RDATE:19520928T020000
 398.157 +RDATE:19530927T020000
 398.158 +RDATE:19540926T020000
 398.159 +RDATE:19550925T020000
 398.160 +RDATE:19560930T020000
 398.161 +RDATE:19571027T020000
 398.162 +RDATE:19581026T020000
 398.163 +RDATE:19591025T020000
 398.164 +RDATE:19601030T020000
 398.165 +RDATE:19611029T020000
 398.166 +RDATE:19621028T020000
 398.167 +RDATE:19631027T020000
 398.168 +RDATE:19641025T020000
 398.169 +RDATE:19651031T020000
 398.170 +RDATE:19661030T020000
 398.171 +RDATE:19671029T020000
 398.172 +RDATE:19681027T020000
 398.173 +RDATE:19691026T020000
 398.174 +RDATE:19701025T020000
 398.175 +RDATE:19711031T020000
 398.176 +RDATE:19721029T020000
 398.177 +RDATE:19731028T020000
 398.178 +RDATE:19741027T020000
 398.179 +RDATE:19751026T020000
 398.180 +RDATE:19761031T020000
 398.181 +RDATE:19771030T020000
 398.182 +RDATE:19781029T020000
 398.183 +RDATE:19791028T020000
 398.184 +RDATE:19801026T020000
 398.185 +RDATE:19811025T020000
 398.186 +RDATE:19821031T020000
 398.187 +RDATE:19831030T020000
 398.188 +RDATE:19841028T020000
 398.189 +RDATE:19851027T020000
 398.190 +RDATE:19861026T020000
 398.191 +RDATE:19871025T020000
 398.192 +RDATE:19881030T020000
 398.193 +RDATE:19891029T020000
 398.194 +RDATE:19901028T020000
 398.195 +RDATE:19911027T020000
 398.196 +RDATE:19921025T020000
 398.197 +RDATE:19931031T020000
 398.198 +RDATE:19941030T020000
 398.199 +RDATE:19951029T020000
 398.200 +RDATE:19961027T020000
 398.201 +RDATE:19971026T020000
 398.202 +RDATE:19981025T020000
 398.203 +RDATE:19991031T020000
 398.204 +RDATE:20001029T020000
 398.205 +RDATE:20011028T020000
 398.206 +RDATE:20021027T020000
 398.207 +RDATE:20031026T020000
 398.208 +RDATE:20041031T020000
 398.209 +RDATE:20051030T020000
 398.210 +RDATE:20061029T020000
 398.211 +END:STANDARD
 398.212 +BEGIN:STANDARD
 398.213 +TZOFFSETFROM:-0500
 398.214 +TZOFFSETTO:-0500
 398.215 +TZNAME:EST
 398.216 +DTSTART:19180101T000000
 398.217 +RDATE:19180101T000000
 398.218 +RDATE:19190101T000000
 398.219 +RDATE:19460101T000000
 398.220 +RDATE:19740101T000000
 398.221 +END:STANDARD
 398.222 +BEGIN:DAYLIGHT
 398.223 +TZOFFSETFROM:-0400
 398.224 +TZOFFSETTO:-0400
 398.225 +TZNAME:EWT
 398.226 +DTSTART:19420209T020000
 398.227 +RDATE:19420209T020000
 398.228 +END:DAYLIGHT
 398.229 +BEGIN:DAYLIGHT
 398.230 +TZOFFSETFROM:-0400
 398.231 +TZOFFSETTO:-0400
 398.232 +TZNAME:EPT
 398.233 +DTSTART:19450814T190000
 398.234 +RDATE:19450814T190000
 398.235 +END:DAYLIGHT
 398.236 +END:VTIMEZONE
 398.237 +END:VCALENDAR
   399.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   399.2 +++ b/src/zoneinfo-global/America/Montserrat.ics	Tue Feb 10 18:12:00 2015 +0100
   399.3 @@ -0,0 +1,16 @@
   399.4 +BEGIN:VCALENDAR
   399.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   399.6 +VERSION:2.0
   399.7 +BEGIN:VTIMEZONE
   399.8 +TZID:America/Montserrat
   399.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Montserrat
  399.10 +X-LIC-LOCATION:America/Montserrat
  399.11 +BEGIN:STANDARD
  399.12 +TZOFFSETFROM:-040852
  399.13 +TZOFFSETTO:-0400
  399.14 +TZNAME:AST
  399.15 +DTSTART:19110701T000100
  399.16 +RDATE:19110701T000100
  399.17 +END:STANDARD
  399.18 +END:VTIMEZONE
  399.19 +END:VCALENDAR
   400.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   400.2 +++ b/src/zoneinfo-global/America/Nassau.ics	Tue Feb 10 18:12:00 2015 +0100
   400.3 @@ -0,0 +1,135 @@
   400.4 +BEGIN:VCALENDAR
   400.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   400.6 +VERSION:2.0
   400.7 +BEGIN:VTIMEZONE
   400.8 +TZID:America/Nassau
   400.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Nassau
  400.10 +X-LIC-LOCATION:America/Nassau
  400.11 +BEGIN:DAYLIGHT
  400.12 +TZOFFSETFROM:-0500
  400.13 +TZOFFSETTO:-0400
  400.14 +TZNAME:EDT
  400.15 +DTSTART:20070311T020000
  400.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  400.17 +END:DAYLIGHT
  400.18 +BEGIN:STANDARD
  400.19 +TZOFFSETFROM:-0400
  400.20 +TZOFFSETTO:-0500
  400.21 +TZNAME:EST
  400.22 +DTSTART:20071104T020000
  400.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  400.24 +END:STANDARD
  400.25 +BEGIN:STANDARD
  400.26 +TZOFFSETFROM:-050924
  400.27 +TZOFFSETTO:-0500
  400.28 +TZNAME:EST
  400.29 +DTSTART:19120302T000000
  400.30 +RDATE:19120302T000000
  400.31 +END:STANDARD
  400.32 +BEGIN:DAYLIGHT
  400.33 +TZOFFSETFROM:-0500
  400.34 +TZOFFSETTO:-0400
  400.35 +TZNAME:EDT
  400.36 +DTSTART:19640426T020000
  400.37 +RDATE:19640426T020000
  400.38 +RDATE:19650425T020000
  400.39 +RDATE:19660424T020000
  400.40 +RDATE:19670430T020000
  400.41 +RDATE:19680428T020000
  400.42 +RDATE:19690427T020000
  400.43 +RDATE:19700426T020000
  400.44 +RDATE:19710425T020000
  400.45 +RDATE:19720430T020000
  400.46 +RDATE:19730429T020000
  400.47 +RDATE:19740428T020000
  400.48 +RDATE:19750427T020000
  400.49 +RDATE:19760425T020000
  400.50 +RDATE:19770424T020000
  400.51 +RDATE:19780430T020000
  400.52 +RDATE:19790429T020000
  400.53 +RDATE:19800427T020000
  400.54 +RDATE:19810426T020000
  400.55 +RDATE:19820425T020000
  400.56 +RDATE:19830424T020000
  400.57 +RDATE:19840429T020000
  400.58 +RDATE:19850428T020000
  400.59 +RDATE:19860427T020000
  400.60 +RDATE:19870405T020000
  400.61 +RDATE:19880403T020000
  400.62 +RDATE:19890402T020000
  400.63 +RDATE:19900401T020000
  400.64 +RDATE:19910407T020000
  400.65 +RDATE:19920405T020000
  400.66 +RDATE:19930404T020000
  400.67 +RDATE:19940403T020000
  400.68 +RDATE:19950402T020000
  400.69 +RDATE:19960407T020000
  400.70 +RDATE:19970406T020000
  400.71 +RDATE:19980405T020000
  400.72 +RDATE:19990404T020000
  400.73 +RDATE:20000402T020000
  400.74 +RDATE:20010401T020000
  400.75 +RDATE:20020407T020000
  400.76 +RDATE:20030406T020000
  400.77 +RDATE:20040404T020000
  400.78 +RDATE:20050403T020000
  400.79 +RDATE:20060402T020000
  400.80 +END:DAYLIGHT
  400.81 +BEGIN:STANDARD
  400.82 +TZOFFSETFROM:-0400
  400.83 +TZOFFSETTO:-0500
  400.84 +TZNAME:EST
  400.85 +DTSTART:19641025T020000
  400.86 +RDATE:19641025T020000
  400.87 +RDATE:19651031T020000
  400.88 +RDATE:19661030T020000
  400.89 +RDATE:19671029T020000
  400.90 +RDATE:19681027T020000
  400.91 +RDATE:19691026T020000
  400.92 +RDATE:19701025T020000
  400.93 +RDATE:19711031T020000
  400.94 +RDATE:19721029T020000
  400.95 +RDATE:19731028T020000
  400.96 +RDATE:19741027T020000
  400.97 +RDATE:19751026T020000
  400.98 +RDATE:19761031T020000
  400.99 +RDATE:19771030T020000
 400.100 +RDATE:19781029T020000
 400.101 +RDATE:19791028T020000
 400.102 +RDATE:19801026T020000
 400.103 +RDATE:19811025T020000
 400.104 +RDATE:19821031T020000
 400.105 +RDATE:19831030T020000
 400.106 +RDATE:19841028T020000
 400.107 +RDATE:19851027T020000
 400.108 +RDATE:19861026T020000
 400.109 +RDATE:19871025T020000
 400.110 +RDATE:19881030T020000
 400.111 +RDATE:19891029T020000
 400.112 +RDATE:19901028T020000
 400.113 +RDATE:19911027T020000
 400.114 +RDATE:19921025T020000
 400.115 +RDATE:19931031T020000
 400.116 +RDATE:19941030T020000
 400.117 +RDATE:19951029T020000
 400.118 +RDATE:19961027T020000
 400.119 +RDATE:19971026T020000
 400.120 +RDATE:19981025T020000
 400.121 +RDATE:19991031T020000
 400.122 +RDATE:20001029T020000
 400.123 +RDATE:20011028T020000
 400.124 +RDATE:20021027T020000
 400.125 +RDATE:20031026T020000
 400.126 +RDATE:20041031T020000
 400.127 +RDATE:20051030T020000
 400.128 +RDATE:20061029T020000
 400.129 +END:STANDARD
 400.130 +BEGIN:STANDARD
 400.131 +TZOFFSETFROM:-0500
 400.132 +TZOFFSETTO:-0500
 400.133 +TZNAME:EST
 400.134 +DTSTART:19760101T000000
 400.135 +RDATE:19760101T000000
 400.136 +END:STANDARD
 400.137 +END:VTIMEZONE
 400.138 +END:VCALENDAR
   401.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   401.2 +++ b/src/zoneinfo-global/America/New_York.ics	Tue Feb 10 18:12:00 2015 +0100
   401.3 @@ -0,0 +1,237 @@
   401.4 +BEGIN:VCALENDAR
   401.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   401.6 +VERSION:2.0
   401.7 +BEGIN:VTIMEZONE
   401.8 +TZID:America/New_York
   401.9 +TZURL:http://tzurl.org/zoneinfo-global/America/New_York
  401.10 +X-LIC-LOCATION:America/New_York
  401.11 +BEGIN:DAYLIGHT
  401.12 +TZOFFSETFROM:-0500
  401.13 +TZOFFSETTO:-0400
  401.14 +TZNAME:EDT
  401.15 +DTSTART:20070311T020000
  401.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  401.17 +END:DAYLIGHT
  401.18 +BEGIN:STANDARD
  401.19 +TZOFFSETFROM:-0400
  401.20 +TZOFFSETTO:-0500
  401.21 +TZNAME:EST
  401.22 +DTSTART:20071104T020000
  401.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  401.24 +END:STANDARD
  401.25 +BEGIN:STANDARD
  401.26 +TZOFFSETFROM:-045602
  401.27 +TZOFFSETTO:-0500
  401.28 +TZNAME:EST
  401.29 +DTSTART:18831118T120358
  401.30 +RDATE:18831118T120358
  401.31 +END:STANDARD
  401.32 +BEGIN:DAYLIGHT
  401.33 +TZOFFSETFROM:-0500
  401.34 +TZOFFSETTO:-0400
  401.35 +TZNAME:EDT
  401.36 +DTSTART:19180331T020000
  401.37 +RDATE:19180331T020000
  401.38 +RDATE:19190330T020000
  401.39 +RDATE:19200328T020000
  401.40 +RDATE:19210424T020000
  401.41 +RDATE:19220430T020000
  401.42 +RDATE:19230429T020000
  401.43 +RDATE:19240427T020000
  401.44 +RDATE:19250426T020000
  401.45 +RDATE:19260425T020000
  401.46 +RDATE:19270424T020000
  401.47 +RDATE:19280429T020000
  401.48 +RDATE:19290428T020000
  401.49 +RDATE:19300427T020000
  401.50 +RDATE:19310426T020000
  401.51 +RDATE:19320424T020000
  401.52 +RDATE:19330430T020000
  401.53 +RDATE:19340429T020000
  401.54 +RDATE:19350428T020000
  401.55 +RDATE:19360426T020000
  401.56 +RDATE:19370425T020000
  401.57 +RDATE:19380424T020000
  401.58 +RDATE:19390430T020000
  401.59 +RDATE:19400428T020000
  401.60 +RDATE:19410427T020000
  401.61 +RDATE:19460428T020000
  401.62 +RDATE:19470427T020000
  401.63 +RDATE:19480425T020000
  401.64 +RDATE:19490424T020000
  401.65 +RDATE:19500430T020000
  401.66 +RDATE:19510429T020000
  401.67 +RDATE:19520427T020000
  401.68 +RDATE:19530426T020000
  401.69 +RDATE:19540425T020000
  401.70 +RDATE:19550424T020000
  401.71 +RDATE:19560429T020000
  401.72 +RDATE:19570428T020000
  401.73 +RDATE:19580427T020000
  401.74 +RDATE:19590426T020000
  401.75 +RDATE:19600424T020000
  401.76 +RDATE:19610430T020000
  401.77 +RDATE:19620429T020000
  401.78 +RDATE:19630428T020000
  401.79 +RDATE:19640426T020000
  401.80 +RDATE:19650425T020000
  401.81 +RDATE:19660424T020000
  401.82 +RDATE:19670430T020000
  401.83 +RDATE:19680428T020000
  401.84 +RDATE:19690427T020000
  401.85 +RDATE:19700426T020000
  401.86 +RDATE:19710425T020000
  401.87 +RDATE:19720430T020000
  401.88 +RDATE:19730429T020000
  401.89 +RDATE:19740106T020000
  401.90 +RDATE:19750223T020000
  401.91 +RDATE:19760425T020000
  401.92 +RDATE:19770424T020000
  401.93 +RDATE:19780430T020000
  401.94 +RDATE:19790429T020000
  401.95 +RDATE:19800427T020000
  401.96 +RDATE:19810426T020000
  401.97 +RDATE:19820425T020000
  401.98 +RDATE:19830424T020000
  401.99 +RDATE:19840429T020000
 401.100 +RDATE:19850428T020000
 401.101 +RDATE:19860427T020000
 401.102 +RDATE:19870405T020000
 401.103 +RDATE:19880403T020000
 401.104 +RDATE:19890402T020000
 401.105 +RDATE:19900401T020000
 401.106 +RDATE:19910407T020000
 401.107 +RDATE:19920405T020000
 401.108 +RDATE:19930404T020000
 401.109 +RDATE:19940403T020000
 401.110 +RDATE:19950402T020000
 401.111 +RDATE:19960407T020000
 401.112 +RDATE:19970406T020000
 401.113 +RDATE:19980405T020000
 401.114 +RDATE:19990404T020000
 401.115 +RDATE:20000402T020000
 401.116 +RDATE:20010401T020000
 401.117 +RDATE:20020407T020000
 401.118 +RDATE:20030406T020000
 401.119 +RDATE:20040404T020000
 401.120 +RDATE:20050403T020000
 401.121 +RDATE:20060402T020000
 401.122 +END:DAYLIGHT
 401.123 +BEGIN:STANDARD
 401.124 +TZOFFSETFROM:-0400
 401.125 +TZOFFSETTO:-0500
 401.126 +TZNAME:EST
 401.127 +DTSTART:19181027T020000
 401.128 +RDATE:19181027T020000
 401.129 +RDATE:19191026T020000
 401.130 +RDATE:19201031T020000
 401.131 +RDATE:19210925T020000
 401.132 +RDATE:19220924T020000
 401.133 +RDATE:19230930T020000
 401.134 +RDATE:19240928T020000
 401.135 +RDATE:19250927T020000
 401.136 +RDATE:19260926T020000
 401.137 +RDATE:19270925T020000
 401.138 +RDATE:19280930T020000
 401.139 +RDATE:19290929T020000
 401.140 +RDATE:19300928T020000
 401.141 +RDATE:19310927T020000
 401.142 +RDATE:19320925T020000
 401.143 +RDATE:19330924T020000
 401.144 +RDATE:19340930T020000
 401.145 +RDATE:19350929T020000
 401.146 +RDATE:19360927T020000
 401.147 +RDATE:19370926T020000
 401.148 +RDATE:19380925T020000
 401.149 +RDATE:19390924T020000
 401.150 +RDATE:19400929T020000
 401.151 +RDATE:19410928T020000
 401.152 +RDATE:19450930T020000
 401.153 +RDATE:19460929T020000
 401.154 +RDATE:19470928T020000
 401.155 +RDATE:19480926T020000
 401.156 +RDATE:19490925T020000
 401.157 +RDATE:19500924T020000
 401.158 +RDATE:19510930T020000
 401.159 +RDATE:19520928T020000
 401.160 +RDATE:19530927T020000
 401.161 +RDATE:19540926T020000
 401.162 +RDATE:19551030T020000
 401.163 +RDATE:19561028T020000
 401.164 +RDATE:19571027T020000
 401.165 +RDATE:19581026T020000
 401.166 +RDATE:19591025T020000
 401.167 +RDATE:19601030T020000
 401.168 +RDATE:19611029T020000
 401.169 +RDATE:19621028T020000
 401.170 +RDATE:19631027T020000
 401.171 +RDATE:19641025T020000
 401.172 +RDATE:19651031T020000
 401.173 +RDATE:19661030T020000
 401.174 +RDATE:19671029T020000
 401.175 +RDATE:19681027T020000
 401.176 +RDATE:19691026T020000
 401.177 +RDATE:19701025T020000
 401.178 +RDATE:19711031T020000
 401.179 +RDATE:19721029T020000
 401.180 +RDATE:19731028T020000
 401.181 +RDATE:19741027T020000
 401.182 +RDATE:19751026T020000
 401.183 +RDATE:19761031T020000
 401.184 +RDATE:19771030T020000
 401.185 +RDATE:19781029T020000
 401.186 +RDATE:19791028T020000
 401.187 +RDATE:19801026T020000
 401.188 +RDATE:19811025T020000
 401.189 +RDATE:19821031T020000
 401.190 +RDATE:19831030T020000
 401.191 +RDATE:19841028T020000
 401.192 +RDATE:19851027T020000
 401.193 +RDATE:19861026T020000
 401.194 +RDATE:19871025T020000
 401.195 +RDATE:19881030T020000
 401.196 +RDATE:19891029T020000
 401.197 +RDATE:19901028T020000
 401.198 +RDATE:19911027T020000
 401.199 +RDATE:19921025T020000
 401.200 +RDATE:19931031T020000
 401.201 +RDATE:19941030T020000
 401.202 +RDATE:19951029T020000
 401.203 +RDATE:19961027T020000
 401.204 +RDATE:19971026T020000
 401.205 +RDATE:19981025T020000
 401.206 +RDATE:19991031T020000
 401.207 +RDATE:20001029T020000
 401.208 +RDATE:20011028T020000
 401.209 +RDATE:20021027T020000
 401.210 +RDATE:20031026T020000
 401.211 +RDATE:20041031T020000
 401.212 +RDATE:20051030T020000
 401.213 +RDATE:20061029T020000
 401.214 +END:STANDARD
 401.215 +BEGIN:STANDARD
 401.216 +TZOFFSETFROM:-0500
 401.217 +TZOFFSETTO:-0500
 401.218 +TZNAME:EST
 401.219 +DTSTART:19200101T000000
 401.220 +RDATE:19200101T000000
 401.221 +RDATE:19420101T000000
 401.222 +RDATE:19460101T000000
 401.223 +RDATE:19670101T000000
 401.224 +END:STANDARD
 401.225 +BEGIN:DAYLIGHT
 401.226 +TZOFFSETFROM:-0500
 401.227 +TZOFFSETTO:-0400
 401.228 +TZNAME:EWT
 401.229 +DTSTART:19420209T020000
 401.230 +RDATE:19420209T020000
 401.231 +END:DAYLIGHT
 401.232 +BEGIN:DAYLIGHT
 401.233 +TZOFFSETFROM:-0400
 401.234 +TZOFFSETTO:-0400
 401.235 +TZNAME:EPT
 401.236 +DTSTART:19450814T190000
 401.237 +RDATE:19450814T190000
 401.238 +END:DAYLIGHT
 401.239 +END:VTIMEZONE
 401.240 +END:VCALENDAR
   402.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   402.2 +++ b/src/zoneinfo-global/America/Nipigon.ics	Tue Feb 10 18:12:00 2015 +0100
   402.3 @@ -0,0 +1,126 @@
   402.4 +BEGIN:VCALENDAR
   402.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   402.6 +VERSION:2.0
   402.7 +BEGIN:VTIMEZONE
   402.8 +TZID:America/Nipigon
   402.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Nipigon
  402.10 +X-LIC-LOCATION:America/Nipigon
  402.11 +BEGIN:DAYLIGHT
  402.12 +TZOFFSETFROM:-0500
  402.13 +TZOFFSETTO:-0400
  402.14 +TZNAME:EDT
  402.15 +DTSTART:20070311T020000
  402.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  402.17 +END:DAYLIGHT
  402.18 +BEGIN:STANDARD
  402.19 +TZOFFSETFROM:-0400
  402.20 +TZOFFSETTO:-0500
  402.21 +TZNAME:EST
  402.22 +DTSTART:20071104T020000
  402.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  402.24 +END:STANDARD
  402.25 +BEGIN:STANDARD
  402.26 +TZOFFSETFROM:-055304
  402.27 +TZOFFSETTO:-0500
  402.28 +TZNAME:EST
  402.29 +DTSTART:18950101T000000
  402.30 +RDATE:18950101T000000
  402.31 +END:STANDARD
  402.32 +BEGIN:DAYLIGHT
  402.33 +TZOFFSETFROM:-0500
  402.34 +TZOFFSETTO:-0400
  402.35 +TZNAME:EDT
  402.36 +DTSTART:19180414T020000
  402.37 +RDATE:19180414T020000
  402.38 +RDATE:19400929T000000
  402.39 +RDATE:19740428T020000
  402.40 +RDATE:19750427T020000
  402.41 +RDATE:19760425T020000
  402.42 +RDATE:19770424T020000
  402.43 +RDATE:19780430T020000
  402.44 +RDATE:19790429T020000
  402.45 +RDATE:19800427T020000
  402.46 +RDATE:19810426T020000
  402.47 +RDATE:19820425T020000
  402.48 +RDATE:19830424T020000
  402.49 +RDATE:19840429T020000
  402.50 +RDATE:19850428T020000
  402.51 +RDATE:19860427T020000
  402.52 +RDATE:19870405T020000
  402.53 +RDATE:19880403T020000
  402.54 +RDATE:19890402T020000
  402.55 +RDATE:19900401T020000
  402.56 +RDATE:19910407T020000
  402.57 +RDATE:19920405T020000
  402.58 +RDATE:19930404T020000
  402.59 +RDATE:19940403T020000
  402.60 +RDATE:19950402T020000
  402.61 +RDATE:19960407T020000
  402.62 +RDATE:19970406T020000
  402.63 +RDATE:19980405T020000
  402.64 +RDATE:19990404T020000
  402.65 +RDATE:20000402T020000
  402.66 +RDATE:20010401T020000
  402.67 +RDATE:20020407T020000
  402.68 +RDATE:20030406T020000
  402.69 +RDATE:20040404T020000
  402.70 +RDATE:20050403T020000
  402.71 +RDATE:20060402T020000
  402.72 +END:DAYLIGHT
  402.73 +BEGIN:STANDARD
  402.74 +TZOFFSETFROM:-0400
  402.75 +TZOFFSETTO:-0500
  402.76 +TZNAME:EST
  402.77 +DTSTART:19181031T020000
  402.78 +RDATE:19181031T020000
  402.79 +RDATE:19450930T020000
  402.80 +RDATE:19741027T020000
  402.81 +RDATE:19751026T020000
  402.82 +RDATE:19761031T020000
  402.83 +RDATE:19771030T020000
  402.84 +RDATE:19781029T020000
  402.85 +RDATE:19791028T020000
  402.86 +RDATE:19801026T020000
  402.87 +RDATE:19811025T020000
  402.88 +RDATE:19821031T020000
  402.89 +RDATE:19831030T020000
  402.90 +RDATE:19841028T020000
  402.91 +RDATE:19851027T020000
  402.92 +RDATE:19861026T020000
  402.93 +RDATE:19871025T020000
  402.94 +RDATE:19881030T020000
  402.95 +RDATE:19891029T020000
  402.96 +RDATE:19901028T020000
  402.97 +RDATE:19911027T020000
  402.98 +RDATE:19921025T020000
  402.99 +RDATE:19931031T020000
 402.100 +RDATE:19941030T020000
 402.101 +RDATE:19951029T020000
 402.102 +RDATE:19961027T020000
 402.103 +RDATE:19971026T020000
 402.104 +RDATE:19981025T020000
 402.105 +RDATE:19991031T020000
 402.106 +RDATE:20001029T020000
 402.107 +RDATE:20011028T020000
 402.108 +RDATE:20021027T020000
 402.109 +RDATE:20031026T020000
 402.110 +RDATE:20041031T020000
 402.111 +RDATE:20051030T020000
 402.112 +RDATE:20061029T020000
 402.113 +END:STANDARD
 402.114 +BEGIN:DAYLIGHT
 402.115 +TZOFFSETFROM:-0400
 402.116 +TZOFFSETTO:-0400
 402.117 +TZNAME:EWT
 402.118 +DTSTART:19420209T020000
 402.119 +RDATE:19420209T020000
 402.120 +END:DAYLIGHT
 402.121 +BEGIN:DAYLIGHT
 402.122 +TZOFFSETFROM:-0400
 402.123 +TZOFFSETTO:-0400
 402.124 +TZNAME:EPT
 402.125 +DTSTART:19450814T190000
 402.126 +RDATE:19450814T190000
 402.127 +END:DAYLIGHT
 402.128 +END:VTIMEZONE
 402.129 +END:VCALENDAR
   403.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   403.2 +++ b/src/zoneinfo-global/America/Nome.ics	Tue Feb 10 18:12:00 2015 +0100
   403.3 @@ -0,0 +1,187 @@
   403.4 +BEGIN:VCALENDAR
   403.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   403.6 +VERSION:2.0
   403.7 +BEGIN:VTIMEZONE
   403.8 +TZID:America/Nome
   403.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Nome
  403.10 +X-LIC-LOCATION:America/Nome
  403.11 +BEGIN:DAYLIGHT
  403.12 +TZOFFSETFROM:-0900
  403.13 +TZOFFSETTO:-0800
  403.14 +TZNAME:AKDT
  403.15 +DTSTART:20070311T020000
  403.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  403.17 +END:DAYLIGHT
  403.18 +BEGIN:STANDARD
  403.19 +TZOFFSETFROM:-0800
  403.20 +TZOFFSETTO:-0900
  403.21 +TZNAME:AKST
  403.22 +DTSTART:20071104T020000
  403.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  403.24 +END:STANDARD
  403.25 +BEGIN:STANDARD
  403.26 +TZOFFSETFROM:+125821
  403.27 +TZOFFSETTO:-110138
  403.28 +TZNAME:LMT
  403.29 +DTSTART:18671018T000000
  403.30 +RDATE:18671018T000000
  403.31 +END:STANDARD
  403.32 +BEGIN:STANDARD
  403.33 +TZOFFSETFROM:-110138
  403.34 +TZOFFSETTO:-1100
  403.35 +TZNAME:NST
  403.36 +DTSTART:19000820T120000
  403.37 +RDATE:19000820T120000
  403.38 +END:STANDARD
  403.39 +BEGIN:STANDARD
  403.40 +TZOFFSETFROM:-1100
  403.41 +TZOFFSETTO:-1100
  403.42 +TZNAME:NST
  403.43 +DTSTART:19420101T000000
  403.44 +RDATE:19420101T000000
  403.45 +RDATE:19460101T000000
  403.46 +END:STANDARD
  403.47 +BEGIN:DAYLIGHT
  403.48 +TZOFFSETFROM:-1100
  403.49 +TZOFFSETTO:-1000
  403.50 +TZNAME:NWT
  403.51 +DTSTART:19420209T020000
  403.52 +RDATE:19420209T020000
  403.53 +END:DAYLIGHT
  403.54 +BEGIN:DAYLIGHT
  403.55 +TZOFFSETFROM:-1000
  403.56 +TZOFFSETTO:-1000
  403.57 +TZNAME:NPT
  403.58 +DTSTART:19450814T130000
  403.59 +RDATE:19450814T130000
  403.60 +END:DAYLIGHT
  403.61 +BEGIN:STANDARD
  403.62 +TZOFFSETFROM:-1000
  403.63 +TZOFFSETTO:-1100
  403.64 +TZNAME:NST
  403.65 +DTSTART:19450930T020000
  403.66 +RDATE:19450930T020000
  403.67 +END:STANDARD
  403.68 +BEGIN:STANDARD
  403.69 +TZOFFSETFROM:-1100
  403.70 +TZOFFSETTO:-1100
  403.71 +TZNAME:BST
  403.72 +DTSTART:19670401T000000
  403.73 +RDATE:19670401T000000
  403.74 +RDATE:19690101T000000
  403.75 +END:STANDARD
  403.76 +BEGIN:DAYLIGHT
  403.77 +TZOFFSETFROM:-1100
  403.78 +TZOFFSETTO:-1000
  403.79 +TZNAME:BDT
  403.80 +DTSTART:19690427T020000
  403.81 +RDATE:19690427T020000
  403.82 +RDATE:19700426T020000
  403.83 +RDATE:19710425T020000
  403.84 +RDATE:19720430T020000
  403.85 +RDATE:19730429T020000
  403.86 +RDATE:19740106T020000
  403.87 +RDATE:19750223T020000
  403.88 +RDATE:19760425T020000
  403.89 +RDATE:19770424T020000
  403.90 +RDATE:19780430T020000
  403.91 +RDATE:19790429T020000
  403.92 +RDATE:19800427T020000
  403.93 +RDATE:19810426T020000
  403.94 +RDATE:19820425T020000
  403.95 +RDATE:19830424T020000
  403.96 +END:DAYLIGHT
  403.97 +BEGIN:STANDARD
  403.98 +TZOFFSETFROM:-1000
  403.99 +TZOFFSETTO:-1100
 403.100 +TZNAME:BST
 403.101 +DTSTART:19691026T020000
 403.102 +RDATE:19691026T020000
 403.103 +RDATE:19701025T020000
 403.104 +RDATE:19711031T020000
 403.105 +RDATE:19721029T020000
 403.106 +RDATE:19731028T020000
 403.107 +RDATE:19741027T020000
 403.108 +RDATE:19751026T020000
 403.109 +RDATE:19761031T020000
 403.110 +RDATE:19771030T020000
 403.111 +RDATE:19781029T020000
 403.112 +RDATE:19791028T020000
 403.113 +RDATE:19801026T020000
 403.114 +RDATE:19811025T020000
 403.115 +RDATE:19821031T020000
 403.116 +END:STANDARD
 403.117 +BEGIN:STANDARD
 403.118 +TZOFFSETFROM:-1000
 403.119 +TZOFFSETTO:-0900
 403.120 +TZNAME:YST
 403.121 +DTSTART:19831030T020000
 403.122 +RDATE:19831030T020000
 403.123 +END:STANDARD
 403.124 +BEGIN:STANDARD
 403.125 +TZOFFSETFROM:-0900
 403.126 +TZOFFSETTO:-0900
 403.127 +TZNAME:AKST
 403.128 +DTSTART:19831130T000000
 403.129 +RDATE:19831130T000000
 403.130 +END:STANDARD
 403.131 +BEGIN:DAYLIGHT
 403.132 +TZOFFSETFROM:-0900
 403.133 +TZOFFSETTO:-0800
 403.134 +TZNAME:AKDT
 403.135 +DTSTART:19840429T020000
 403.136 +RDATE:19840429T020000
 403.137 +RDATE:19850428T020000
 403.138 +RDATE:19860427T020000
 403.139 +RDATE:19870405T020000
 403.140 +RDATE:19880403T020000
 403.141 +RDATE:19890402T020000
 403.142 +RDATE:19900401T020000
 403.143 +RDATE:19910407T020000
 403.144 +RDATE:19920405T020000
 403.145 +RDATE:19930404T020000
 403.146 +RDATE:19940403T020000
 403.147 +RDATE:19950402T020000
 403.148 +RDATE:19960407T020000
 403.149 +RDATE:19970406T020000
 403.150 +RDATE:19980405T020000
 403.151 +RDATE:19990404T020000
 403.152 +RDATE:20000402T020000
 403.153 +RDATE:20010401T020000
 403.154 +RDATE:20020407T020000
 403.155 +RDATE:20030406T020000
 403.156 +RDATE:20040404T020000
 403.157 +RDATE:20050403T020000
 403.158 +RDATE:20060402T020000
 403.159 +END:DAYLIGHT
 403.160 +BEGIN:STANDARD
 403.161 +TZOFFSETFROM:-0800
 403.162 +TZOFFSETTO:-0900
 403.163 +TZNAME:AKST
 403.164 +DTSTART:19841028T020000
 403.165 +RDATE:19841028T020000
 403.166 +RDATE:19851027T020000
 403.167 +RDATE:19861026T020000
 403.168 +RDATE:19871025T020000
 403.169 +RDATE:19881030T020000
 403.170 +RDATE:19891029T020000
 403.171 +RDATE:19901028T020000
 403.172 +RDATE:19911027T020000
 403.173 +RDATE:19921025T020000
 403.174 +RDATE:19931031T020000
 403.175 +RDATE:19941030T020000
 403.176 +RDATE:19951029T020000
 403.177 +RDATE:19961027T020000
 403.178 +RDATE:19971026T020000
 403.179 +RDATE:19981025T020000
 403.180 +RDATE:19991031T020000
 403.181 +RDATE:20001029T020000
 403.182 +RDATE:20011028T020000
 403.183 +RDATE:20021027T020000
 403.184 +RDATE:20031026T020000
 403.185 +RDATE:20041031T020000
 403.186 +RDATE:20051030T020000
 403.187 +RDATE:20061029T020000
 403.188 +END:STANDARD
 403.189 +END:VTIMEZONE
 403.190 +END:VCALENDAR
   404.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   404.2 +++ b/src/zoneinfo-global/America/Noronha.ics	Tue Feb 10 18:12:00 2015 +0100
   404.3 @@ -0,0 +1,76 @@
   404.4 +BEGIN:VCALENDAR
   404.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   404.6 +VERSION:2.0
   404.7 +BEGIN:VTIMEZONE
   404.8 +TZID:America/Noronha
   404.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Noronha
  404.10 +X-LIC-LOCATION:America/Noronha
  404.11 +BEGIN:STANDARD
  404.12 +TZOFFSETFROM:-020940
  404.13 +TZOFFSETTO:-0200
  404.14 +TZNAME:FNT
  404.15 +DTSTART:19140101T000000
  404.16 +RDATE:19140101T000000
  404.17 +END:STANDARD
  404.18 +BEGIN:DAYLIGHT
  404.19 +TZOFFSETFROM:-0200
  404.20 +TZOFFSETTO:-0100
  404.21 +TZNAME:FNST
  404.22 +DTSTART:19311003T110000
  404.23 +RDATE:19311003T110000
  404.24 +RDATE:19321003T000000
  404.25 +RDATE:19491201T000000
  404.26 +RDATE:19501201T000000
  404.27 +RDATE:19511201T000000
  404.28 +RDATE:19521201T000000
  404.29 +RDATE:19631209T000000
  404.30 +RDATE:19650131T000000
  404.31 +RDATE:19651201T000000
  404.32 +RDATE:19661101T000000
  404.33 +RDATE:19671101T000000
  404.34 +RDATE:19851102T000000
  404.35 +RDATE:19861025T000000
  404.36 +RDATE:19871025T000000
  404.37 +RDATE:19881016T000000
  404.38 +RDATE:19891015T000000
  404.39 +RDATE:19991003T000000
  404.40 +RDATE:20001008T000000
  404.41 +RDATE:20011014T000000
  404.42 +END:DAYLIGHT
  404.43 +BEGIN:STANDARD
  404.44 +TZOFFSETFROM:-0100
  404.45 +TZOFFSETTO:-0200
  404.46 +TZNAME:FNT
  404.47 +DTSTART:19320401T000000
  404.48 +RDATE:19320401T000000
  404.49 +RDATE:19330401T000000
  404.50 +RDATE:19500416T010000
  404.51 +RDATE:19510401T000000
  404.52 +RDATE:19520401T000000
  404.53 +RDATE:19530301T000000
  404.54 +RDATE:19640301T000000
  404.55 +RDATE:19650331T000000
  404.56 +RDATE:19660301T000000
  404.57 +RDATE:19670301T000000
  404.58 +RDATE:19680301T000000
  404.59 +RDATE:19860315T000000
  404.60 +RDATE:19870214T000000
  404.61 +RDATE:19880207T000000
  404.62 +RDATE:19890129T000000
  404.63 +RDATE:19900211T000000
  404.64 +RDATE:20000227T000000
  404.65 +RDATE:20001015T000000
  404.66 +RDATE:20020217T000000
  404.67 +END:STANDARD
  404.68 +BEGIN:STANDARD
  404.69 +TZOFFSETFROM:-0200
  404.70 +TZOFFSETTO:-0200
  404.71 +TZNAME:FNT
  404.72 +DTSTART:19900917T000000
  404.73 +RDATE:19900917T000000
  404.74 +RDATE:19990930T000000
  404.75 +RDATE:20010913T000000
  404.76 +RDATE:20021001T000000
  404.77 +END:STANDARD
  404.78 +END:VTIMEZONE
  404.79 +END:VCALENDAR
   405.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   405.2 +++ b/src/zoneinfo-global/America/North_Dakota/Beulah.ics	Tue Feb 10 18:12:00 2015 +0100
   405.3 @@ -0,0 +1,155 @@
   405.4 +BEGIN:VCALENDAR
   405.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   405.6 +VERSION:2.0
   405.7 +BEGIN:VTIMEZONE
   405.8 +TZID:America/North_Dakota/Beulah
   405.9 +TZURL:http://tzurl.org/zoneinfo-global/America/North_Dakota/Beulah
  405.10 +X-LIC-LOCATION:America/North_Dakota/Beulah
  405.11 +BEGIN:DAYLIGHT
  405.12 +TZOFFSETFROM:-0600
  405.13 +TZOFFSETTO:-0500
  405.14 +TZNAME:CDT
  405.15 +DTSTART:20110313T020000
  405.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  405.17 +END:DAYLIGHT
  405.18 +BEGIN:STANDARD
  405.19 +TZOFFSETFROM:-0500
  405.20 +TZOFFSETTO:-0600
  405.21 +TZNAME:CST
  405.22 +DTSTART:20111106T020000
  405.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  405.24 +END:STANDARD
  405.25 +BEGIN:STANDARD
  405.26 +TZOFFSETFROM:-064707
  405.27 +TZOFFSETTO:-0700
  405.28 +TZNAME:MST
  405.29 +DTSTART:18831118T121253
  405.30 +RDATE:18831118T121253
  405.31 +END:STANDARD
  405.32 +BEGIN:DAYLIGHT
  405.33 +TZOFFSETFROM:-0700
  405.34 +TZOFFSETTO:-0600
  405.35 +TZNAME:MDT
  405.36 +DTSTART:19180331T020000
  405.37 +RDATE:19180331T020000
  405.38 +RDATE:19190330T020000
  405.39 +RDATE:19670430T020000
  405.40 +RDATE:19680428T020000
  405.41 +RDATE:19690427T020000
  405.42 +RDATE:19700426T020000
  405.43 +RDATE:19710425T020000
  405.44 +RDATE:19720430T020000
  405.45 +RDATE:19730429T020000
  405.46 +RDATE:19740106T020000
  405.47 +RDATE:19750223T020000
  405.48 +RDATE:19760425T020000
  405.49 +RDATE:19770424T020000
  405.50 +RDATE:19780430T020000
  405.51 +RDATE:19790429T020000
  405.52 +RDATE:19800427T020000
  405.53 +RDATE:19810426T020000
  405.54 +RDATE:19820425T020000
  405.55 +RDATE:19830424T020000
  405.56 +RDATE:19840429T020000
  405.57 +RDATE:19850428T020000
  405.58 +RDATE:19860427T020000
  405.59 +RDATE:19870405T020000
  405.60 +RDATE:19880403T020000
  405.61 +RDATE:19890402T020000
  405.62 +RDATE:19900401T020000
  405.63 +RDATE:19910407T020000
  405.64 +RDATE:19920405T020000
  405.65 +RDATE:19930404T020000
  405.66 +RDATE:19940403T020000
  405.67 +RDATE:19950402T020000
  405.68 +RDATE:19960407T020000
  405.69 +RDATE:19970406T020000
  405.70 +RDATE:19980405T020000
  405.71 +RDATE:19990404T020000
  405.72 +RDATE:20000402T020000
  405.73 +RDATE:20010401T020000
  405.74 +RDATE:20020407T020000
  405.75 +RDATE:20030406T020000
  405.76 +RDATE:20040404T020000
  405.77 +RDATE:20050403T020000
  405.78 +RDATE:20060402T020000
  405.79 +RDATE:20070311T020000
  405.80 +RDATE:20080309T020000
  405.81 +RDATE:20090308T020000
  405.82 +RDATE:20100314T020000
  405.83 +END:DAYLIGHT
  405.84 +BEGIN:STANDARD
  405.85 +TZOFFSETFROM:-0600
  405.86 +TZOFFSETTO:-0700
  405.87 +TZNAME:MST
  405.88 +DTSTART:19181027T020000
  405.89 +RDATE:19181027T020000
  405.90 +RDATE:19191026T020000
  405.91 +RDATE:19450930T020000
  405.92 +RDATE:19671029T020000
  405.93 +RDATE:19681027T020000
  405.94 +RDATE:19691026T020000
  405.95 +RDATE:19701025T020000
  405.96 +RDATE:19711031T020000
  405.97 +RDATE:19721029T020000
  405.98 +RDATE:19731028T020000
  405.99 +RDATE:19741027T020000
 405.100 +RDATE:19751026T020000
 405.101 +RDATE:19761031T020000
 405.102 +RDATE:19771030T020000
 405.103 +RDATE:19781029T020000
 405.104 +RDATE:19791028T020000
 405.105 +RDATE:19801026T020000
 405.106 +RDATE:19811025T020000
 405.107 +RDATE:19821031T020000
 405.108 +RDATE:19831030T020000
 405.109 +RDATE:19841028T020000
 405.110 +RDATE:19851027T020000
 405.111 +RDATE:19861026T020000
 405.112 +RDATE:19871025T020000
 405.113 +RDATE:19881030T020000
 405.114 +RDATE:19891029T020000
 405.115 +RDATE:19901028T020000
 405.116 +RDATE:19911027T020000
 405.117 +RDATE:19921025T020000
 405.118 +RDATE:19931031T020000
 405.119 +RDATE:19941030T020000
 405.120 +RDATE:19951029T020000
 405.121 +RDATE:19961027T020000
 405.122 +RDATE:19971026T020000
 405.123 +RDATE:19981025T020000
 405.124 +RDATE:19991031T020000
 405.125 +RDATE:20001029T020000
 405.126 +RDATE:20011028T020000
 405.127 +RDATE:20021027T020000
 405.128 +RDATE:20031026T020000
 405.129 +RDATE:20041031T020000
 405.130 +RDATE:20051030T020000
 405.131 +RDATE:20061029T020000
 405.132 +RDATE:20071104T020000
 405.133 +RDATE:20081102T020000
 405.134 +RDATE:20091101T020000
 405.135 +END:STANDARD
 405.136 +BEGIN:DAYLIGHT
 405.137 +TZOFFSETFROM:-0700
 405.138 +TZOFFSETTO:-0600
 405.139 +TZNAME:MWT
 405.140 +DTSTART:19420209T020000
 405.141 +RDATE:19420209T020000
 405.142 +END:DAYLIGHT
 405.143 +BEGIN:DAYLIGHT
 405.144 +TZOFFSETFROM:-0600
 405.145 +TZOFFSETTO:-0600
 405.146 +TZNAME:MPT
 405.147 +DTSTART:19450814T170000
 405.148 +RDATE:19450814T170000
 405.149 +END:DAYLIGHT
 405.150 +BEGIN:STANDARD
 405.151 +TZOFFSETFROM:-0600
 405.152 +TZOFFSETTO:-0600
 405.153 +TZNAME:CST
 405.154 +DTSTART:20101107T020000
 405.155 +RDATE:20101107T020000
 405.156 +END:STANDARD
 405.157 +END:VTIMEZONE
 405.158 +END:VCALENDAR
   406.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   406.2 +++ b/src/zoneinfo-global/America/North_Dakota/Center.ics	Tue Feb 10 18:12:00 2015 +0100
   406.3 @@ -0,0 +1,159 @@
   406.4 +BEGIN:VCALENDAR
   406.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   406.6 +VERSION:2.0
   406.7 +BEGIN:VTIMEZONE
   406.8 +TZID:America/North_Dakota/Center
   406.9 +TZURL:http://tzurl.org/zoneinfo-global/America/North_Dakota/Center
  406.10 +X-LIC-LOCATION:America/North_Dakota/Center
  406.11 +BEGIN:DAYLIGHT
  406.12 +TZOFFSETFROM:-0600
  406.13 +TZOFFSETTO:-0500
  406.14 +TZNAME:CDT
  406.15 +DTSTART:20070311T020000
  406.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  406.17 +END:DAYLIGHT
  406.18 +BEGIN:STANDARD
  406.19 +TZOFFSETFROM:-0500
  406.20 +TZOFFSETTO:-0600
  406.21 +TZNAME:CST
  406.22 +DTSTART:20071104T020000
  406.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  406.24 +END:STANDARD
  406.25 +BEGIN:STANDARD
  406.26 +TZOFFSETFROM:-064512
  406.27 +TZOFFSETTO:-0700
  406.28 +TZNAME:MST
  406.29 +DTSTART:18831118T121448
  406.30 +RDATE:18831118T121448
  406.31 +END:STANDARD
  406.32 +BEGIN:DAYLIGHT
  406.33 +TZOFFSETFROM:-0700
  406.34 +TZOFFSETTO:-0600
  406.35 +TZNAME:MDT
  406.36 +DTSTART:19180331T020000
  406.37 +RDATE:19180331T020000
  406.38 +RDATE:19190330T020000
  406.39 +RDATE:19670430T020000
  406.40 +RDATE:19680428T020000
  406.41 +RDATE:19690427T020000
  406.42 +RDATE:19700426T020000
  406.43 +RDATE:19710425T020000
  406.44 +RDATE:19720430T020000
  406.45 +RDATE:19730429T020000
  406.46 +RDATE:19740106T020000
  406.47 +RDATE:19750223T020000
  406.48 +RDATE:19760425T020000
  406.49 +RDATE:19770424T020000
  406.50 +RDATE:19780430T020000
  406.51 +RDATE:19790429T020000
  406.52 +RDATE:19800427T020000
  406.53 +RDATE:19810426T020000
  406.54 +RDATE:19820425T020000
  406.55 +RDATE:19830424T020000
  406.56 +RDATE:19840429T020000
  406.57 +RDATE:19850428T020000
  406.58 +RDATE:19860427T020000
  406.59 +RDATE:19870405T020000
  406.60 +RDATE:19880403T020000
  406.61 +RDATE:19890402T020000
  406.62 +RDATE:19900401T020000
  406.63 +RDATE:19910407T020000
  406.64 +RDATE:19920405T020000
  406.65 +END:DAYLIGHT
  406.66 +BEGIN:STANDARD
  406.67 +TZOFFSETFROM:-0600
  406.68 +TZOFFSETTO:-0700
  406.69 +TZNAME:MST
  406.70 +DTSTART:19181027T020000
  406.71 +RDATE:19181027T020000
  406.72 +RDATE:19191026T020000
  406.73 +RDATE:19450930T020000
  406.74 +RDATE:19671029T020000
  406.75 +RDATE:19681027T020000
  406.76 +RDATE:19691026T020000
  406.77 +RDATE:19701025T020000
  406.78 +RDATE:19711031T020000
  406.79 +RDATE:19721029T020000
  406.80 +RDATE:19731028T020000
  406.81 +RDATE:19741027T020000
  406.82 +RDATE:19751026T020000
  406.83 +RDATE:19761031T020000
  406.84 +RDATE:19771030T020000
  406.85 +RDATE:19781029T020000
  406.86 +RDATE:19791028T020000
  406.87 +RDATE:19801026T020000
  406.88 +RDATE:19811025T020000
  406.89 +RDATE:19821031T020000
  406.90 +RDATE:19831030T020000
  406.91 +RDATE:19841028T020000
  406.92 +RDATE:19851027T020000
  406.93 +RDATE:19861026T020000
  406.94 +RDATE:19871025T020000
  406.95 +RDATE:19881030T020000
  406.96 +RDATE:19891029T020000
  406.97 +RDATE:19901028T020000
  406.98 +RDATE:19911027T020000
  406.99 +END:STANDARD
 406.100 +BEGIN:DAYLIGHT
 406.101 +TZOFFSETFROM:-0700
 406.102 +TZOFFSETTO:-0600
 406.103 +TZNAME:MWT
 406.104 +DTSTART:19420209T020000
 406.105 +RDATE:19420209T020000
 406.106 +END:DAYLIGHT
 406.107 +BEGIN:DAYLIGHT
 406.108 +TZOFFSETFROM:-0600
 406.109 +TZOFFSETTO:-0600
 406.110 +TZNAME:MPT
 406.111 +DTSTART:19450814T170000
 406.112 +RDATE:19450814T170000
 406.113 +END:DAYLIGHT
 406.114 +BEGIN:STANDARD
 406.115 +TZOFFSETFROM:-0600
 406.116 +TZOFFSETTO:-0600
 406.117 +TZNAME:CST
 406.118 +DTSTART:19921025T020000
 406.119 +RDATE:19921025T020000
 406.120 +END:STANDARD
 406.121 +BEGIN:DAYLIGHT
 406.122 +TZOFFSETFROM:-0600
 406.123 +TZOFFSETTO:-0500
 406.124 +TZNAME:CDT
 406.125 +DTSTART:19930404T020000
 406.126 +RDATE:19930404T020000
 406.127 +RDATE:19940403T020000
 406.128 +RDATE:19950402T020000
 406.129 +RDATE:19960407T020000
 406.130 +RDATE:19970406T020000
 406.131 +RDATE:19980405T020000
 406.132 +RDATE:19990404T020000
 406.133 +RDATE:20000402T020000
 406.134 +RDATE:20010401T020000
 406.135 +RDATE:20020407T020000
 406.136 +RDATE:20030406T020000
 406.137 +RDATE:20040404T020000
 406.138 +RDATE:20050403T020000
 406.139 +RDATE:20060402T020000
 406.140 +END:DAYLIGHT
 406.141 +BEGIN:STANDARD
 406.142 +TZOFFSETFROM:-0500
 406.143 +TZOFFSETTO:-0600
 406.144 +TZNAME:CST
 406.145 +DTSTART:19931031T020000
 406.146 +RDATE:19931031T020000
 406.147 +RDATE:19941030T020000
 406.148 +RDATE:19951029T020000
 406.149 +RDATE:19961027T020000
 406.150 +RDATE:19971026T020000
 406.151 +RDATE:19981025T020000
 406.152 +RDATE:19991031T020000
 406.153 +RDATE:20001029T020000
 406.154 +RDATE:20011028T020000
 406.155 +RDATE:20021027T020000
 406.156 +RDATE:20031026T020000
 406.157 +RDATE:20041031T020000
 406.158 +RDATE:20051030T020000
 406.159 +RDATE:20061029T020000
 406.160 +END:STANDARD
 406.161 +END:VTIMEZONE
 406.162 +END:VCALENDAR
   407.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   407.2 +++ b/src/zoneinfo-global/America/North_Dakota/New_Salem.ics	Tue Feb 10 18:12:00 2015 +0100
   407.3 @@ -0,0 +1,159 @@
   407.4 +BEGIN:VCALENDAR
   407.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   407.6 +VERSION:2.0
   407.7 +BEGIN:VTIMEZONE
   407.8 +TZID:America/North_Dakota/New_Salem
   407.9 +TZURL:http://tzurl.org/zoneinfo-global/America/North_Dakota/New_Salem
  407.10 +X-LIC-LOCATION:America/North_Dakota/New_Salem
  407.11 +BEGIN:DAYLIGHT
  407.12 +TZOFFSETFROM:-0600
  407.13 +TZOFFSETTO:-0500
  407.14 +TZNAME:CDT
  407.15 +DTSTART:20070311T020000
  407.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  407.17 +END:DAYLIGHT
  407.18 +BEGIN:STANDARD
  407.19 +TZOFFSETFROM:-0500
  407.20 +TZOFFSETTO:-0600
  407.21 +TZNAME:CST
  407.22 +DTSTART:20071104T020000
  407.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  407.24 +END:STANDARD
  407.25 +BEGIN:STANDARD
  407.26 +TZOFFSETFROM:-064539
  407.27 +TZOFFSETTO:-0700
  407.28 +TZNAME:MST
  407.29 +DTSTART:18831118T121421
  407.30 +RDATE:18831118T121421
  407.31 +END:STANDARD
  407.32 +BEGIN:DAYLIGHT
  407.33 +TZOFFSETFROM:-0700
  407.34 +TZOFFSETTO:-0600
  407.35 +TZNAME:MDT
  407.36 +DTSTART:19180331T020000
  407.37 +RDATE:19180331T020000
  407.38 +RDATE:19190330T020000
  407.39 +RDATE:19670430T020000
  407.40 +RDATE:19680428T020000
  407.41 +RDATE:19690427T020000
  407.42 +RDATE:19700426T020000
  407.43 +RDATE:19710425T020000
  407.44 +RDATE:19720430T020000
  407.45 +RDATE:19730429T020000
  407.46 +RDATE:19740106T020000
  407.47 +RDATE:19750223T020000
  407.48 +RDATE:19760425T020000
  407.49 +RDATE:19770424T020000
  407.50 +RDATE:19780430T020000
  407.51 +RDATE:19790429T020000
  407.52 +RDATE:19800427T020000
  407.53 +RDATE:19810426T020000
  407.54 +RDATE:19820425T020000
  407.55 +RDATE:19830424T020000
  407.56 +RDATE:19840429T020000
  407.57 +RDATE:19850428T020000
  407.58 +RDATE:19860427T020000
  407.59 +RDATE:19870405T020000
  407.60 +RDATE:19880403T020000
  407.61 +RDATE:19890402T020000
  407.62 +RDATE:19900401T020000
  407.63 +RDATE:19910407T020000
  407.64 +RDATE:19920405T020000
  407.65 +RDATE:19930404T020000
  407.66 +RDATE:19940403T020000
  407.67 +RDATE:19950402T020000
  407.68 +RDATE:19960407T020000
  407.69 +RDATE:19970406T020000
  407.70 +RDATE:19980405T020000
  407.71 +RDATE:19990404T020000
  407.72 +RDATE:20000402T020000
  407.73 +RDATE:20010401T020000
  407.74 +RDATE:20020407T020000
  407.75 +RDATE:20030406T020000
  407.76 +END:DAYLIGHT
  407.77 +BEGIN:STANDARD
  407.78 +TZOFFSETFROM:-0600
  407.79 +TZOFFSETTO:-0700
  407.80 +TZNAME:MST
  407.81 +DTSTART:19181027T020000
  407.82 +RDATE:19181027T020000
  407.83 +RDATE:19191026T020000
  407.84 +RDATE:19450930T020000
  407.85 +RDATE:19671029T020000
  407.86 +RDATE:19681027T020000
  407.87 +RDATE:19691026T020000
  407.88 +RDATE:19701025T020000
  407.89 +RDATE:19711031T020000
  407.90 +RDATE:19721029T020000
  407.91 +RDATE:19731028T020000
  407.92 +RDATE:19741027T020000
  407.93 +RDATE:19751026T020000
  407.94 +RDATE:19761031T020000
  407.95 +RDATE:19771030T020000
  407.96 +RDATE:19781029T020000
  407.97 +RDATE:19791028T020000
  407.98 +RDATE:19801026T020000
  407.99 +RDATE:19811025T020000
 407.100 +RDATE:19821031T020000
 407.101 +RDATE:19831030T020000
 407.102 +RDATE:19841028T020000
 407.103 +RDATE:19851027T020000
 407.104 +RDATE:19861026T020000
 407.105 +RDATE:19871025T020000
 407.106 +RDATE:19881030T020000
 407.107 +RDATE:19891029T020000
 407.108 +RDATE:19901028T020000
 407.109 +RDATE:19911027T020000
 407.110 +RDATE:19921025T020000
 407.111 +RDATE:19931031T020000
 407.112 +RDATE:19941030T020000
 407.113 +RDATE:19951029T020000
 407.114 +RDATE:19961027T020000
 407.115 +RDATE:19971026T020000
 407.116 +RDATE:19981025T020000
 407.117 +RDATE:19991031T020000
 407.118 +RDATE:20001029T020000
 407.119 +RDATE:20011028T020000
 407.120 +RDATE:20021027T020000
 407.121 +END:STANDARD
 407.122 +BEGIN:DAYLIGHT
 407.123 +TZOFFSETFROM:-0700
 407.124 +TZOFFSETTO:-0600
 407.125 +TZNAME:MWT
 407.126 +DTSTART:19420209T020000
 407.127 +RDATE:19420209T020000
 407.128 +END:DAYLIGHT
 407.129 +BEGIN:DAYLIGHT
 407.130 +TZOFFSETFROM:-0600
 407.131 +TZOFFSETTO:-0600
 407.132 +TZNAME:MPT
 407.133 +DTSTART:19450814T170000
 407.134 +RDATE:19450814T170000
 407.135 +END:DAYLIGHT
 407.136 +BEGIN:STANDARD
 407.137 +TZOFFSETFROM:-0600
 407.138 +TZOFFSETTO:-0600
 407.139 +TZNAME:CST
 407.140 +DTSTART:20031026T020000
 407.141 +RDATE:20031026T020000
 407.142 +END:STANDARD
 407.143 +BEGIN:DAYLIGHT
 407.144 +TZOFFSETFROM:-0600
 407.145 +TZOFFSETTO:-0500
 407.146 +TZNAME:CDT
 407.147 +DTSTART:20040404T020000
 407.148 +RDATE:20040404T020000
 407.149 +RDATE:20050403T020000
 407.150 +RDATE:20060402T020000
 407.151 +END:DAYLIGHT
 407.152 +BEGIN:STANDARD
 407.153 +TZOFFSETFROM:-0500
 407.154 +TZOFFSETTO:-0600
 407.155 +TZNAME:CST
 407.156 +DTSTART:20041031T020000
 407.157 +RDATE:20041031T020000
 407.158 +RDATE:20051030T020000
 407.159 +RDATE:20061029T020000
 407.160 +END:STANDARD
 407.161 +END:VTIMEZONE
 407.162 +END:VCALENDAR
   408.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   408.2 +++ b/src/zoneinfo-global/America/Ojinaga.ics	Tue Feb 10 18:12:00 2015 +0100
   408.3 @@ -0,0 +1,114 @@
   408.4 +BEGIN:VCALENDAR
   408.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   408.6 +VERSION:2.0
   408.7 +BEGIN:VTIMEZONE
   408.8 +TZID:America/Ojinaga
   408.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Ojinaga
  408.10 +X-LIC-LOCATION:America/Ojinaga
  408.11 +BEGIN:DAYLIGHT
  408.12 +TZOFFSETFROM:-0700
  408.13 +TZOFFSETTO:-0600
  408.14 +TZNAME:MDT
  408.15 +DTSTART:20100314T020000
  408.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  408.17 +END:DAYLIGHT
  408.18 +BEGIN:STANDARD
  408.19 +TZOFFSETFROM:-0600
  408.20 +TZOFFSETTO:-0700
  408.21 +TZNAME:MST
  408.22 +DTSTART:20101107T020000
  408.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  408.24 +END:STANDARD
  408.25 +BEGIN:STANDARD
  408.26 +TZOFFSETFROM:-065740
  408.27 +TZOFFSETTO:-0700
  408.28 +TZNAME:MST
  408.29 +DTSTART:19220101T000220
  408.30 +RDATE:19220101T000220
  408.31 +END:STANDARD
  408.32 +BEGIN:STANDARD
  408.33 +TZOFFSETFROM:-0700
  408.34 +TZOFFSETTO:-0600
  408.35 +TZNAME:CST
  408.36 +DTSTART:19270610T230000
  408.37 +RDATE:19270610T230000
  408.38 +RDATE:19310501T230000
  408.39 +RDATE:19320401T000000
  408.40 +END:STANDARD
  408.41 +BEGIN:STANDARD
  408.42 +TZOFFSETFROM:-0600
  408.43 +TZOFFSETTO:-0700
  408.44 +TZNAME:MST
  408.45 +DTSTART:19301115T000000
  408.46 +RDATE:19301115T000000
  408.47 +RDATE:19311001T000000
  408.48 +RDATE:19981025T020000
  408.49 +RDATE:19991031T020000
  408.50 +RDATE:20001029T020000
  408.51 +RDATE:20010930T020000
  408.52 +RDATE:20021027T020000
  408.53 +RDATE:20031026T020000
  408.54 +RDATE:20041031T020000
  408.55 +RDATE:20051030T020000
  408.56 +RDATE:20061029T020000
  408.57 +RDATE:20071028T020000
  408.58 +RDATE:20081026T020000
  408.59 +RDATE:20091025T020000
  408.60 +END:STANDARD
  408.61 +BEGIN:STANDARD
  408.62 +TZOFFSETFROM:-0600
  408.63 +TZOFFSETTO:-0600
  408.64 +TZNAME:CST
  408.65 +DTSTART:19960101T000000
  408.66 +RDATE:19960101T000000
  408.67 +RDATE:19980101T000000
  408.68 +END:STANDARD
  408.69 +BEGIN:DAYLIGHT
  408.70 +TZOFFSETFROM:-0600
  408.71 +TZOFFSETTO:-0500
  408.72 +TZNAME:CDT
  408.73 +DTSTART:19960407T020000
  408.74 +RDATE:19960407T020000
  408.75 +RDATE:19970406T020000
  408.76 +END:DAYLIGHT
  408.77 +BEGIN:STANDARD
  408.78 +TZOFFSETFROM:-0500
  408.79 +TZOFFSETTO:-0600
  408.80 +TZNAME:CST
  408.81 +DTSTART:19961027T020000
  408.82 +RDATE:19961027T020000
  408.83 +RDATE:19971026T020000
  408.84 +END:STANDARD
  408.85 +BEGIN:DAYLIGHT
  408.86 +TZOFFSETFROM:-0600
  408.87 +TZOFFSETTO:-0600
  408.88 +TZNAME:MDT
  408.89 +DTSTART:19980405T020000
  408.90 +RDATE:19980405T020000
  408.91 +END:DAYLIGHT
  408.92 +BEGIN:DAYLIGHT
  408.93 +TZOFFSETFROM:-0700
  408.94 +TZOFFSETTO:-0600
  408.95 +TZNAME:MDT
  408.96 +DTSTART:19990404T020000
  408.97 +RDATE:19990404T020000
  408.98 +RDATE:20000402T020000
  408.99 +RDATE:20010506T020000
 408.100 +RDATE:20020407T020000
 408.101 +RDATE:20030406T020000
 408.102 +RDATE:20040404T020000
 408.103 +RDATE:20050403T020000
 408.104 +RDATE:20060402T020000
 408.105 +RDATE:20070401T020000
 408.106 +RDATE:20080406T020000
 408.107 +RDATE:20090405T020000
 408.108 +END:DAYLIGHT
 408.109 +BEGIN:STANDARD
 408.110 +TZOFFSETFROM:-0700
 408.111 +TZOFFSETTO:-0700
 408.112 +TZNAME:MST
 408.113 +DTSTART:20100101T000000
 408.114 +RDATE:20100101T000000
 408.115 +END:STANDARD
 408.116 +END:VTIMEZONE
 408.117 +END:VCALENDAR
   409.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   409.2 +++ b/src/zoneinfo-global/America/Panama.ics	Tue Feb 10 18:12:00 2015 +0100
   409.3 @@ -0,0 +1,23 @@
   409.4 +BEGIN:VCALENDAR
   409.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   409.6 +VERSION:2.0
   409.7 +BEGIN:VTIMEZONE
   409.8 +TZID:America/Panama
   409.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Panama
  409.10 +X-LIC-LOCATION:America/Panama
  409.11 +BEGIN:STANDARD
  409.12 +TZOFFSETFROM:-051808
  409.13 +TZOFFSETTO:-051936
  409.14 +TZNAME:CMT
  409.15 +DTSTART:18900101T000000
  409.16 +RDATE:18900101T000000
  409.17 +END:STANDARD
  409.18 +BEGIN:STANDARD
  409.19 +TZOFFSETFROM:-051936
  409.20 +TZOFFSETTO:-0500
  409.21 +TZNAME:EST
  409.22 +DTSTART:19080422T000000
  409.23 +RDATE:19080422T000000
  409.24 +END:STANDARD
  409.25 +END:VTIMEZONE
  409.26 +END:VCALENDAR
   410.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   410.2 +++ b/src/zoneinfo-global/America/Pangnirtung.ics	Tue Feb 10 18:12:00 2015 +0100
   410.3 @@ -0,0 +1,161 @@
   410.4 +BEGIN:VCALENDAR
   410.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   410.6 +VERSION:2.0
   410.7 +BEGIN:VTIMEZONE
   410.8 +TZID:America/Pangnirtung
   410.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Pangnirtung
  410.10 +X-LIC-LOCATION:America/Pangnirtung
  410.11 +BEGIN:DAYLIGHT
  410.12 +TZOFFSETFROM:-0500
  410.13 +TZOFFSETTO:-0400
  410.14 +TZNAME:EDT
  410.15 +DTSTART:20070311T020000
  410.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  410.17 +END:DAYLIGHT
  410.18 +BEGIN:STANDARD
  410.19 +TZOFFSETFROM:-0400
  410.20 +TZOFFSETTO:-0500
  410.21 +TZNAME:EST
  410.22 +DTSTART:20071104T020000
  410.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  410.24 +END:STANDARD
  410.25 +BEGIN:STANDARD
  410.26 +TZOFFSETFROM:+0000
  410.27 +TZOFFSETTO:-0400
  410.28 +TZNAME:AST
  410.29 +DTSTART:19210101T000000
  410.30 +RDATE:19210101T000000
  410.31 +END:STANDARD
  410.32 +BEGIN:DAYLIGHT
  410.33 +TZOFFSETFROM:-0400
  410.34 +TZOFFSETTO:-0300
  410.35 +TZNAME:AWT
  410.36 +DTSTART:19420209T020000
  410.37 +RDATE:19420209T020000
  410.38 +END:DAYLIGHT
  410.39 +BEGIN:DAYLIGHT
  410.40 +TZOFFSETFROM:-0300
  410.41 +TZOFFSETTO:-0300
  410.42 +TZNAME:APT
  410.43 +DTSTART:19450814T200000
  410.44 +RDATE:19450814T200000
  410.45 +END:DAYLIGHT
  410.46 +BEGIN:STANDARD
  410.47 +TZOFFSETFROM:-0300
  410.48 +TZOFFSETTO:-0400
  410.49 +TZNAME:AST
  410.50 +DTSTART:19450930T020000
  410.51 +RDATE:19450930T020000
  410.52 +RDATE:19801026T020000
  410.53 +RDATE:19811025T020000
  410.54 +RDATE:19821031T020000
  410.55 +RDATE:19831030T020000
  410.56 +RDATE:19841028T020000
  410.57 +RDATE:19851027T020000
  410.58 +RDATE:19861026T020000
  410.59 +RDATE:19871025T020000
  410.60 +RDATE:19881030T020000
  410.61 +RDATE:19891029T020000
  410.62 +RDATE:19901028T020000
  410.63 +RDATE:19911027T020000
  410.64 +RDATE:19921025T020000
  410.65 +RDATE:19931031T020000
  410.66 +RDATE:19941030T020000
  410.67 +END:STANDARD
  410.68 +BEGIN:DAYLIGHT
  410.69 +TZOFFSETFROM:-0400
  410.70 +TZOFFSETTO:-0200
  410.71 +TZNAME:ADDT
  410.72 +DTSTART:19650425T000000
  410.73 +RDATE:19650425T000000
  410.74 +END:DAYLIGHT
  410.75 +BEGIN:STANDARD
  410.76 +TZOFFSETFROM:-0200
  410.77 +TZOFFSETTO:-0400
  410.78 +TZNAME:AST
  410.79 +DTSTART:19651031T020000
  410.80 +RDATE:19651031T020000
  410.81 +END:STANDARD
  410.82 +BEGIN:DAYLIGHT
  410.83 +TZOFFSETFROM:-0400
  410.84 +TZOFFSETTO:-0300
  410.85 +TZNAME:ADT
  410.86 +DTSTART:19800427T020000
  410.87 +RDATE:19800427T020000
  410.88 +RDATE:19810426T020000
  410.89 +RDATE:19820425T020000
  410.90 +RDATE:19830424T020000
  410.91 +RDATE:19840429T020000
  410.92 +RDATE:19850428T020000
  410.93 +RDATE:19860427T020000
  410.94 +RDATE:19870405T020000
  410.95 +RDATE:19880403T020000
  410.96 +RDATE:19890402T020000
  410.97 +RDATE:19900401T020000
  410.98 +RDATE:19910407T020000
  410.99 +RDATE:19920405T020000
 410.100 +RDATE:19930404T020000
 410.101 +RDATE:19940403T020000
 410.102 +END:DAYLIGHT
 410.103 +BEGIN:DAYLIGHT
 410.104 +TZOFFSETFROM:-0400
 410.105 +TZOFFSETTO:-0400
 410.106 +TZNAME:EDT
 410.107 +DTSTART:19950402T020000
 410.108 +RDATE:19950402T020000
 410.109 +END:DAYLIGHT
 410.110 +BEGIN:STANDARD
 410.111 +TZOFFSETFROM:-0400
 410.112 +TZOFFSETTO:-0500
 410.113 +TZNAME:EST
 410.114 +DTSTART:19951029T020000
 410.115 +RDATE:19951029T020000
 410.116 +RDATE:19961027T020000
 410.117 +RDATE:19971026T020000
 410.118 +RDATE:19981025T020000
 410.119 +RDATE:20011028T020000
 410.120 +RDATE:20021027T020000
 410.121 +RDATE:20031026T020000
 410.122 +RDATE:20041031T020000
 410.123 +RDATE:20051030T020000
 410.124 +RDATE:20061029T020000
 410.125 +END:STANDARD
 410.126 +BEGIN:DAYLIGHT
 410.127 +TZOFFSETFROM:-0500
 410.128 +TZOFFSETTO:-0400
 410.129 +TZNAME:EDT
 410.130 +DTSTART:19960407T020000
 410.131 +RDATE:19960407T020000
 410.132 +RDATE:19970406T020000
 410.133 +RDATE:19980405T020000
 410.134 +RDATE:19990404T020000
 410.135 +RDATE:20010401T020000
 410.136 +RDATE:20020407T020000
 410.137 +RDATE:20030406T020000
 410.138 +RDATE:20040404T020000
 410.139 +RDATE:20050403T020000
 410.140 +RDATE:20060402T020000
 410.141 +END:DAYLIGHT
 410.142 +BEGIN:STANDARD
 410.143 +TZOFFSETFROM:-0400
 410.144 +TZOFFSETTO:-0600
 410.145 +TZNAME:CST
 410.146 +DTSTART:19991031T020000
 410.147 +RDATE:19991031T020000
 410.148 +END:STANDARD
 410.149 +BEGIN:DAYLIGHT
 410.150 +TZOFFSETFROM:-0600
 410.151 +TZOFFSETTO:-0500
 410.152 +TZNAME:CDT
 410.153 +DTSTART:20000402T020000
 410.154 +RDATE:20000402T020000
 410.155 +END:DAYLIGHT
 410.156 +BEGIN:STANDARD
 410.157 +TZOFFSETFROM:-0500
 410.158 +TZOFFSETTO:-0500
 410.159 +TZNAME:EST
 410.160 +DTSTART:20001029T020000
 410.161 +RDATE:20001029T020000
 410.162 +END:STANDARD
 410.163 +END:VTIMEZONE
 410.164 +END:VCALENDAR
   411.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   411.2 +++ b/src/zoneinfo-global/America/Paramaribo.ics	Tue Feb 10 18:12:00 2015 +0100
   411.3 @@ -0,0 +1,44 @@
   411.4 +BEGIN:VCALENDAR
   411.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   411.6 +VERSION:2.0
   411.7 +BEGIN:VTIMEZONE
   411.8 +TZID:America/Paramaribo
   411.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Paramaribo
  411.10 +X-LIC-LOCATION:America/Paramaribo
  411.11 +BEGIN:STANDARD
  411.12 +TZOFFSETFROM:-034040
  411.13 +TZOFFSETTO:-034052
  411.14 +TZNAME:PMT
  411.15 +DTSTART:19110101T000000
  411.16 +RDATE:19110101T000000
  411.17 +END:STANDARD
  411.18 +BEGIN:STANDARD
  411.19 +TZOFFSETFROM:-034052
  411.20 +TZOFFSETTO:-034036
  411.21 +TZNAME:PMT
  411.22 +DTSTART:19350101T000000
  411.23 +RDATE:19350101T000000
  411.24 +END:STANDARD
  411.25 +BEGIN:STANDARD
  411.26 +TZOFFSETFROM:-034036
  411.27 +TZOFFSETTO:-0330
  411.28 +TZNAME:NEGT
  411.29 +DTSTART:19451001T000000
  411.30 +RDATE:19451001T000000
  411.31 +END:STANDARD
  411.32 +BEGIN:STANDARD
  411.33 +TZOFFSETFROM:-0330
  411.34 +TZOFFSETTO:-0330
  411.35 +TZNAME:SRT
  411.36 +DTSTART:19751120T000000
  411.37 +RDATE:19751120T000000
  411.38 +END:STANDARD
  411.39 +BEGIN:STANDARD
  411.40 +TZOFFSETFROM:-0330
  411.41 +TZOFFSETTO:-0300
  411.42 +TZNAME:SRT
  411.43 +DTSTART:19841001T000000
  411.44 +RDATE:19841001T000000
  411.45 +END:STANDARD
  411.46 +END:VTIMEZONE
  411.47 +END:VCALENDAR
   412.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   412.2 +++ b/src/zoneinfo-global/America/Phoenix.ics	Tue Feb 10 18:12:00 2015 +0100
   412.3 @@ -0,0 +1,52 @@
   412.4 +BEGIN:VCALENDAR
   412.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   412.6 +VERSION:2.0
   412.7 +BEGIN:VTIMEZONE
   412.8 +TZID:America/Phoenix
   412.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Phoenix
  412.10 +X-LIC-LOCATION:America/Phoenix
  412.11 +BEGIN:STANDARD
  412.12 +TZOFFSETFROM:-072818
  412.13 +TZOFFSETTO:-0700
  412.14 +TZNAME:MST
  412.15 +DTSTART:18831118T113142
  412.16 +RDATE:18831118T113142
  412.17 +END:STANDARD
  412.18 +BEGIN:DAYLIGHT
  412.19 +TZOFFSETFROM:-0700
  412.20 +TZOFFSETTO:-0600
  412.21 +TZNAME:MDT
  412.22 +DTSTART:19180331T020000
  412.23 +RDATE:19180331T020000
  412.24 +RDATE:19190330T020000
  412.25 +RDATE:19670430T020000
  412.26 +END:DAYLIGHT
  412.27 +BEGIN:STANDARD
  412.28 +TZOFFSETFROM:-0600
  412.29 +TZOFFSETTO:-0700
  412.30 +TZNAME:MST
  412.31 +DTSTART:19181027T020000
  412.32 +RDATE:19181027T020000
  412.33 +RDATE:19191026T020000
  412.34 +RDATE:19440101T000100
  412.35 +RDATE:19441001T000100
  412.36 +RDATE:19671029T020000
  412.37 +END:STANDARD
  412.38 +BEGIN:DAYLIGHT
  412.39 +TZOFFSETFROM:-0700
  412.40 +TZOFFSETTO:-0600
  412.41 +TZNAME:MWT
  412.42 +DTSTART:19420209T020000
  412.43 +RDATE:19420209T020000
  412.44 +RDATE:19440401T000100
  412.45 +END:DAYLIGHT
  412.46 +BEGIN:STANDARD
  412.47 +TZOFFSETFROM:-0700
  412.48 +TZOFFSETTO:-0700
  412.49 +TZNAME:MST
  412.50 +DTSTART:19670101T000000
  412.51 +RDATE:19670101T000000
  412.52 +RDATE:19680321T000000
  412.53 +END:STANDARD
  412.54 +END:VTIMEZONE
  412.55 +END:VCALENDAR
   413.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   413.2 +++ b/src/zoneinfo-global/America/Port-au-Prince.ics	Tue Feb 10 18:12:00 2015 +0100
   413.3 @@ -0,0 +1,69 @@
   413.4 +BEGIN:VCALENDAR
   413.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   413.6 +VERSION:2.0
   413.7 +BEGIN:VTIMEZONE
   413.8 +TZID:America/Port-au-Prince
   413.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Port-au-Prince
  413.10 +X-LIC-LOCATION:America/Port-au-Prince
  413.11 +BEGIN:STANDARD
  413.12 +TZOFFSETFROM:-044920
  413.13 +TZOFFSETTO:-0449
  413.14 +TZNAME:PPMT
  413.15 +DTSTART:18900101T000000
  413.16 +RDATE:18900101T000000
  413.17 +END:STANDARD
  413.18 +BEGIN:STANDARD
  413.19 +TZOFFSETFROM:-0449
  413.20 +TZOFFSETTO:-0500
  413.21 +TZNAME:EST
  413.22 +DTSTART:19170124T120000
  413.23 +RDATE:19170124T120000
  413.24 +END:STANDARD
  413.25 +BEGIN:DAYLIGHT
  413.26 +TZOFFSETFROM:-0500
  413.27 +TZOFFSETTO:-0400
  413.28 +TZNAME:EDT
  413.29 +DTSTART:19830508T000000
  413.30 +RDATE:19830508T000000
  413.31 +RDATE:19840429T000000
  413.32 +RDATE:19850428T000000
  413.33 +RDATE:19860427T000000
  413.34 +RDATE:19870426T000000
  413.35 +RDATE:19880403T010000
  413.36 +RDATE:19890402T010000
  413.37 +RDATE:19900401T010000
  413.38 +RDATE:19910407T010000
  413.39 +RDATE:19920405T010000
  413.40 +RDATE:19930404T010000
  413.41 +RDATE:19940403T010000
  413.42 +RDATE:19950402T010000
  413.43 +RDATE:19960407T010000
  413.44 +RDATE:19970406T010000
  413.45 +RDATE:20050403T000000
  413.46 +RDATE:20060402T000000
  413.47 +END:DAYLIGHT
  413.48 +BEGIN:STANDARD
  413.49 +TZOFFSETFROM:-0400
  413.50 +TZOFFSETTO:-0500
  413.51 +TZNAME:EST
  413.52 +DTSTART:19831030T000000
  413.53 +RDATE:19831030T000000
  413.54 +RDATE:19841028T000000
  413.55 +RDATE:19851027T000000
  413.56 +RDATE:19861026T000000
  413.57 +RDATE:19871025T000000
  413.58 +RDATE:19881030T020000
  413.59 +RDATE:19891029T020000
  413.60 +RDATE:19901028T020000
  413.61 +RDATE:19911027T020000
  413.62 +RDATE:19921025T020000
  413.63 +RDATE:19931031T020000
  413.64 +RDATE:19941030T020000
  413.65 +RDATE:19951029T020000
  413.66 +RDATE:19961027T020000
  413.67 +RDATE:19971026T020000
  413.68 +RDATE:20051030T000000
  413.69 +RDATE:20061029T000000
  413.70 +END:STANDARD
  413.71 +END:VTIMEZONE
  413.72 +END:VCALENDAR
   414.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   414.2 +++ b/src/zoneinfo-global/America/Port_of_Spain.ics	Tue Feb 10 18:12:00 2015 +0100
   414.3 @@ -0,0 +1,16 @@
   414.4 +BEGIN:VCALENDAR
   414.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   414.6 +VERSION:2.0
   414.7 +BEGIN:VTIMEZONE
   414.8 +TZID:America/Port_of_Spain
   414.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Port_of_Spain
  414.10 +X-LIC-LOCATION:America/Port_of_Spain
  414.11 +BEGIN:STANDARD
  414.12 +TZOFFSETFROM:-040604
  414.13 +TZOFFSETTO:-0400
  414.14 +TZNAME:AST
  414.15 +DTSTART:19120302T000000
  414.16 +RDATE:19120302T000000
  414.17 +END:STANDARD
  414.18 +END:VTIMEZONE
  414.19 +END:VCALENDAR
   415.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   415.2 +++ b/src/zoneinfo-global/America/Porto_Velho.ics	Tue Feb 10 18:12:00 2015 +0100
   415.3 @@ -0,0 +1,63 @@
   415.4 +BEGIN:VCALENDAR
   415.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   415.6 +VERSION:2.0
   415.7 +BEGIN:VTIMEZONE
   415.8 +TZID:America/Porto_Velho
   415.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Porto_Velho
  415.10 +X-LIC-LOCATION:America/Porto_Velho
  415.11 +BEGIN:STANDARD
  415.12 +TZOFFSETFROM:-041536
  415.13 +TZOFFSETTO:-0400
  415.14 +TZNAME:AMT
  415.15 +DTSTART:19140101T000000
  415.16 +RDATE:19140101T000000
  415.17 +END:STANDARD
  415.18 +BEGIN:DAYLIGHT
  415.19 +TZOFFSETFROM:-0400
  415.20 +TZOFFSETTO:-0300
  415.21 +TZNAME:AMST
  415.22 +DTSTART:19311003T110000
  415.23 +RDATE:19311003T110000
  415.24 +RDATE:19321003T000000
  415.25 +RDATE:19491201T000000
  415.26 +RDATE:19501201T000000
  415.27 +RDATE:19511201T000000
  415.28 +RDATE:19521201T000000
  415.29 +RDATE:19631209T000000
  415.30 +RDATE:19650131T000000
  415.31 +RDATE:19651201T000000
  415.32 +RDATE:19661101T000000
  415.33 +RDATE:19671101T000000
  415.34 +RDATE:19851102T000000
  415.35 +RDATE:19861025T000000
  415.36 +RDATE:19871025T000000
  415.37 +END:DAYLIGHT
  415.38 +BEGIN:STANDARD
  415.39 +TZOFFSETFROM:-0300
  415.40 +TZOFFSETTO:-0400
  415.41 +TZNAME:AMT
  415.42 +DTSTART:19320401T000000
  415.43 +RDATE:19320401T000000
  415.44 +RDATE:19330401T000000
  415.45 +RDATE:19500416T010000
  415.46 +RDATE:19510401T000000
  415.47 +RDATE:19520401T000000
  415.48 +RDATE:19530301T000000
  415.49 +RDATE:19640301T000000
  415.50 +RDATE:19650331T000000
  415.51 +RDATE:19660301T000000
  415.52 +RDATE:19670301T000000
  415.53 +RDATE:19680301T000000
  415.54 +RDATE:19860315T000000
  415.55 +RDATE:19870214T000000
  415.56 +RDATE:19880207T000000
  415.57 +END:STANDARD
  415.58 +BEGIN:STANDARD
  415.59 +TZOFFSETFROM:-0400
  415.60 +TZOFFSETTO:-0400
  415.61 +TZNAME:AMT
  415.62 +DTSTART:19880912T000000
  415.63 +RDATE:19880912T000000
  415.64 +END:STANDARD
  415.65 +END:VTIMEZONE
  415.66 +END:VCALENDAR
   416.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   416.2 +++ b/src/zoneinfo-global/America/Puerto_Rico.ics	Tue Feb 10 18:12:00 2015 +0100
   416.3 @@ -0,0 +1,44 @@
   416.4 +BEGIN:VCALENDAR
   416.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   416.6 +VERSION:2.0
   416.7 +BEGIN:VTIMEZONE
   416.8 +TZID:America/Puerto_Rico
   416.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Puerto_Rico
  416.10 +X-LIC-LOCATION:America/Puerto_Rico
  416.11 +BEGIN:STANDARD
  416.12 +TZOFFSETFROM:-042425
  416.13 +TZOFFSETTO:-0400
  416.14 +TZNAME:AST
  416.15 +DTSTART:18990328T120000
  416.16 +RDATE:18990328T120000
  416.17 +END:STANDARD
  416.18 +BEGIN:DAYLIGHT
  416.19 +TZOFFSETFROM:-0400
  416.20 +TZOFFSETTO:-0300
  416.21 +TZNAME:AWT
  416.22 +DTSTART:19420503T000000
  416.23 +RDATE:19420503T000000
  416.24 +END:DAYLIGHT
  416.25 +BEGIN:DAYLIGHT
  416.26 +TZOFFSETFROM:-0300
  416.27 +TZOFFSETTO:-0300
  416.28 +TZNAME:APT
  416.29 +DTSTART:19450814T200000
  416.30 +RDATE:19450814T200000
  416.31 +END:DAYLIGHT
  416.32 +BEGIN:STANDARD
  416.33 +TZOFFSETFROM:-0300
  416.34 +TZOFFSETTO:-0400
  416.35 +TZNAME:AST
  416.36 +DTSTART:19450930T020000
  416.37 +RDATE:19450930T020000
  416.38 +END:STANDARD
  416.39 +BEGIN:STANDARD
  416.40 +TZOFFSETFROM:-0400
  416.41 +TZOFFSETTO:-0400
  416.42 +TZNAME:AST
  416.43 +DTSTART:19460101T000000
  416.44 +RDATE:19460101T000000
  416.45 +END:STANDARD
  416.46 +END:VTIMEZONE
  416.47 +END:VCALENDAR
   417.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   417.2 +++ b/src/zoneinfo-global/America/Rainy_River.ics	Tue Feb 10 18:12:00 2015 +0100
   417.3 @@ -0,0 +1,126 @@
   417.4 +BEGIN:VCALENDAR
   417.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   417.6 +VERSION:2.0
   417.7 +BEGIN:VTIMEZONE
   417.8 +TZID:America/Rainy_River
   417.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Rainy_River
  417.10 +X-LIC-LOCATION:America/Rainy_River
  417.11 +BEGIN:DAYLIGHT
  417.12 +TZOFFSETFROM:-0600
  417.13 +TZOFFSETTO:-0500
  417.14 +TZNAME:CDT
  417.15 +DTSTART:20070311T020000
  417.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  417.17 +END:DAYLIGHT
  417.18 +BEGIN:STANDARD
  417.19 +TZOFFSETFROM:-0500
  417.20 +TZOFFSETTO:-0600
  417.21 +TZNAME:CST
  417.22 +DTSTART:20071104T020000
  417.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  417.24 +END:STANDARD
  417.25 +BEGIN:STANDARD
  417.26 +TZOFFSETFROM:-061816
  417.27 +TZOFFSETTO:-0600
  417.28 +TZNAME:CST
  417.29 +DTSTART:18950101T000000
  417.30 +RDATE:18950101T000000
  417.31 +END:STANDARD
  417.32 +BEGIN:DAYLIGHT
  417.33 +TZOFFSETFROM:-0600
  417.34 +TZOFFSETTO:-0500
  417.35 +TZNAME:CDT
  417.36 +DTSTART:19180414T020000
  417.37 +RDATE:19180414T020000
  417.38 +RDATE:19400929T000000
  417.39 +RDATE:19740428T020000
  417.40 +RDATE:19750427T020000
  417.41 +RDATE:19760425T020000
  417.42 +RDATE:19770424T020000
  417.43 +RDATE:19780430T020000
  417.44 +RDATE:19790429T020000
  417.45 +RDATE:19800427T020000
  417.46 +RDATE:19810426T020000
  417.47 +RDATE:19820425T020000
  417.48 +RDATE:19830424T020000
  417.49 +RDATE:19840429T020000
  417.50 +RDATE:19850428T020000
  417.51 +RDATE:19860427T020000
  417.52 +RDATE:19870405T020000
  417.53 +RDATE:19880403T020000
  417.54 +RDATE:19890402T020000
  417.55 +RDATE:19900401T020000
  417.56 +RDATE:19910407T020000
  417.57 +RDATE:19920405T020000
  417.58 +RDATE:19930404T020000
  417.59 +RDATE:19940403T020000
  417.60 +RDATE:19950402T020000
  417.61 +RDATE:19960407T020000
  417.62 +RDATE:19970406T020000
  417.63 +RDATE:19980405T020000
  417.64 +RDATE:19990404T020000
  417.65 +RDATE:20000402T020000
  417.66 +RDATE:20010401T020000
  417.67 +RDATE:20020407T020000
  417.68 +RDATE:20030406T020000
  417.69 +RDATE:20040404T020000
  417.70 +RDATE:20050403T020000
  417.71 +RDATE:20060402T020000
  417.72 +END:DAYLIGHT
  417.73 +BEGIN:STANDARD
  417.74 +TZOFFSETFROM:-0500
  417.75 +TZOFFSETTO:-0600
  417.76 +TZNAME:CST
  417.77 +DTSTART:19181031T020000
  417.78 +RDATE:19181031T020000
  417.79 +RDATE:19450930T020000
  417.80 +RDATE:19741027T020000
  417.81 +RDATE:19751026T020000
  417.82 +RDATE:19761031T020000
  417.83 +RDATE:19771030T020000
  417.84 +RDATE:19781029T020000
  417.85 +RDATE:19791028T020000
  417.86 +RDATE:19801026T020000
  417.87 +RDATE:19811025T020000
  417.88 +RDATE:19821031T020000
  417.89 +RDATE:19831030T020000
  417.90 +RDATE:19841028T020000
  417.91 +RDATE:19851027T020000
  417.92 +RDATE:19861026T020000
  417.93 +RDATE:19871025T020000
  417.94 +RDATE:19881030T020000
  417.95 +RDATE:19891029T020000
  417.96 +RDATE:19901028T020000
  417.97 +RDATE:19911027T020000
  417.98 +RDATE:19921025T020000
  417.99 +RDATE:19931031T020000
 417.100 +RDATE:19941030T020000
 417.101 +RDATE:19951029T020000
 417.102 +RDATE:19961027T020000
 417.103 +RDATE:19971026T020000
 417.104 +RDATE:19981025T020000
 417.105 +RDATE:19991031T020000
 417.106 +RDATE:20001029T020000
 417.107 +RDATE:20011028T020000
 417.108 +RDATE:20021027T020000
 417.109 +RDATE:20031026T020000
 417.110 +RDATE:20041031T020000
 417.111 +RDATE:20051030T020000
 417.112 +RDATE:20061029T020000
 417.113 +END:STANDARD
 417.114 +BEGIN:DAYLIGHT
 417.115 +TZOFFSETFROM:-0500
 417.116 +TZOFFSETTO:-0500
 417.117 +TZNAME:CWT
 417.118 +DTSTART:19420209T020000
 417.119 +RDATE:19420209T020000
 417.120 +END:DAYLIGHT
 417.121 +BEGIN:DAYLIGHT
 417.122 +TZOFFSETFROM:-0500
 417.123 +TZOFFSETTO:-0500
 417.124 +TZNAME:CPT
 417.125 +DTSTART:19450814T180000
 417.126 +RDATE:19450814T180000
 417.127 +END:DAYLIGHT
 417.128 +END:VTIMEZONE
 417.129 +END:VCALENDAR
   418.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   418.2 +++ b/src/zoneinfo-global/America/Rankin_Inlet.ics	Tue Feb 10 18:12:00 2015 +0100
   418.3 @@ -0,0 +1,122 @@
   418.4 +BEGIN:VCALENDAR
   418.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   418.6 +VERSION:2.0
   418.7 +BEGIN:VTIMEZONE
   418.8 +TZID:America/Rankin_Inlet
   418.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Rankin_Inlet
  418.10 +X-LIC-LOCATION:America/Rankin_Inlet
  418.11 +BEGIN:DAYLIGHT
  418.12 +TZOFFSETFROM:-0600
  418.13 +TZOFFSETTO:-0500
  418.14 +TZNAME:CDT
  418.15 +DTSTART:20070311T020000
  418.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  418.17 +END:DAYLIGHT
  418.18 +BEGIN:STANDARD
  418.19 +TZOFFSETFROM:-0500
  418.20 +TZOFFSETTO:-0600
  418.21 +TZNAME:CST
  418.22 +DTSTART:20071104T020000
  418.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  418.24 +END:STANDARD
  418.25 +BEGIN:STANDARD
  418.26 +TZOFFSETFROM:+0000
  418.27 +TZOFFSETTO:-0600
  418.28 +TZNAME:CST
  418.29 +DTSTART:19570101T000000
  418.30 +RDATE:19570101T000000
  418.31 +END:STANDARD
  418.32 +BEGIN:DAYLIGHT
  418.33 +TZOFFSETFROM:-0600
  418.34 +TZOFFSETTO:-0400
  418.35 +TZNAME:CDDT
  418.36 +DTSTART:19650425T000000
  418.37 +RDATE:19650425T000000
  418.38 +END:DAYLIGHT
  418.39 +BEGIN:STANDARD
  418.40 +TZOFFSETFROM:-0400
  418.41 +TZOFFSETTO:-0600
  418.42 +TZNAME:CST
  418.43 +DTSTART:19651031T020000
  418.44 +RDATE:19651031T020000
  418.45 +END:STANDARD
  418.46 +BEGIN:DAYLIGHT
  418.47 +TZOFFSETFROM:-0600
  418.48 +TZOFFSETTO:-0500
  418.49 +TZNAME:CDT
  418.50 +DTSTART:19800427T020000
  418.51 +RDATE:19800427T020000
  418.52 +RDATE:19810426T020000
  418.53 +RDATE:19820425T020000
  418.54 +RDATE:19830424T020000
  418.55 +RDATE:19840429T020000
  418.56 +RDATE:19850428T020000
  418.57 +RDATE:19860427T020000
  418.58 +RDATE:19870405T020000
  418.59 +RDATE:19880403T020000
  418.60 +RDATE:19890402T020000
  418.61 +RDATE:19900401T020000
  418.62 +RDATE:19910407T020000
  418.63 +RDATE:19920405T020000
  418.64 +RDATE:19930404T020000
  418.65 +RDATE:19940403T020000
  418.66 +RDATE:19950402T020000
  418.67 +RDATE:19960407T020000
  418.68 +RDATE:19970406T020000
  418.69 +RDATE:19980405T020000
  418.70 +RDATE:19990404T020000
  418.71 +RDATE:20000402T020000
  418.72 +RDATE:20020407T020000
  418.73 +RDATE:20030406T020000
  418.74 +RDATE:20040404T020000
  418.75 +RDATE:20050403T020000
  418.76 +RDATE:20060402T020000
  418.77 +END:DAYLIGHT
  418.78 +BEGIN:STANDARD
  418.79 +TZOFFSETFROM:-0500
  418.80 +TZOFFSETTO:-0600
  418.81 +TZNAME:CST
  418.82 +DTSTART:19801026T020000
  418.83 +RDATE:19801026T020000
  418.84 +RDATE:19811025T020000
  418.85 +RDATE:19821031T020000
  418.86 +RDATE:19831030T020000
  418.87 +RDATE:19841028T020000
  418.88 +RDATE:19851027T020000
  418.89 +RDATE:19861026T020000
  418.90 +RDATE:19871025T020000
  418.91 +RDATE:19881030T020000
  418.92 +RDATE:19891029T020000
  418.93 +RDATE:19901028T020000
  418.94 +RDATE:19911027T020000
  418.95 +RDATE:19921025T020000
  418.96 +RDATE:19931031T020000
  418.97 +RDATE:19941030T020000
  418.98 +RDATE:19951029T020000
  418.99 +RDATE:19961027T020000
 418.100 +RDATE:19971026T020000
 418.101 +RDATE:19981025T020000
 418.102 +RDATE:19991031T020000
 418.103 +RDATE:20011028T020000
 418.104 +RDATE:20021027T020000
 418.105 +RDATE:20031026T020000
 418.106 +RDATE:20041031T020000
 418.107 +RDATE:20051030T020000
 418.108 +RDATE:20061029T020000
 418.109 +END:STANDARD
 418.110 +BEGIN:STANDARD
 418.111 +TZOFFSETFROM:-0500
 418.112 +TZOFFSETTO:-0500
 418.113 +TZNAME:EST
 418.114 +DTSTART:20001029T020000
 418.115 +RDATE:20001029T020000
 418.116 +END:STANDARD
 418.117 +BEGIN:DAYLIGHT
 418.118 +TZOFFSETFROM:-0500
 418.119 +TZOFFSETTO:-0500
 418.120 +TZNAME:CDT
 418.121 +DTSTART:20010401T020000
 418.122 +RDATE:20010401T020000
 418.123 +END:DAYLIGHT
 418.124 +END:VTIMEZONE
 418.125 +END:VCALENDAR
   419.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   419.2 +++ b/src/zoneinfo-global/America/Recife.ics	Tue Feb 10 18:12:00 2015 +0100
   419.3 @@ -0,0 +1,76 @@
   419.4 +BEGIN:VCALENDAR
   419.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   419.6 +VERSION:2.0
   419.7 +BEGIN:VTIMEZONE
   419.8 +TZID:America/Recife
   419.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Recife
  419.10 +X-LIC-LOCATION:America/Recife
  419.11 +BEGIN:STANDARD
  419.12 +TZOFFSETFROM:-021936
  419.13 +TZOFFSETTO:-0300
  419.14 +TZNAME:BRT
  419.15 +DTSTART:19140101T000000
  419.16 +RDATE:19140101T000000
  419.17 +END:STANDARD
  419.18 +BEGIN:DAYLIGHT
  419.19 +TZOFFSETFROM:-0300
  419.20 +TZOFFSETTO:-0200
  419.21 +TZNAME:BRST
  419.22 +DTSTART:19311003T110000
  419.23 +RDATE:19311003T110000
  419.24 +RDATE:19321003T000000
  419.25 +RDATE:19491201T000000
  419.26 +RDATE:19501201T000000
  419.27 +RDATE:19511201T000000
  419.28 +RDATE:19521201T000000
  419.29 +RDATE:19631209T000000
  419.30 +RDATE:19650131T000000
  419.31 +RDATE:19651201T000000
  419.32 +RDATE:19661101T000000
  419.33 +RDATE:19671101T000000
  419.34 +RDATE:19851102T000000
  419.35 +RDATE:19861025T000000
  419.36 +RDATE:19871025T000000
  419.37 +RDATE:19881016T000000
  419.38 +RDATE:19891015T000000
  419.39 +RDATE:19991003T000000
  419.40 +RDATE:20001008T000000
  419.41 +RDATE:20011014T000000
  419.42 +END:DAYLIGHT
  419.43 +BEGIN:STANDARD
  419.44 +TZOFFSETFROM:-0200
  419.45 +TZOFFSETTO:-0300
  419.46 +TZNAME:BRT
  419.47 +DTSTART:19320401T000000
  419.48 +RDATE:19320401T000000
  419.49 +RDATE:19330401T000000
  419.50 +RDATE:19500416T010000
  419.51 +RDATE:19510401T000000
  419.52 +RDATE:19520401T000000
  419.53 +RDATE:19530301T000000
  419.54 +RDATE:19640301T000000
  419.55 +RDATE:19650331T000000
  419.56 +RDATE:19660301T000000
  419.57 +RDATE:19670301T000000
  419.58 +RDATE:19680301T000000
  419.59 +RDATE:19860315T000000
  419.60 +RDATE:19870214T000000
  419.61 +RDATE:19880207T000000
  419.62 +RDATE:19890129T000000
  419.63 +RDATE:19900211T000000
  419.64 +RDATE:20000227T000000
  419.65 +RDATE:20001015T000000
  419.66 +RDATE:20020217T000000
  419.67 +END:STANDARD
  419.68 +BEGIN:STANDARD
  419.69 +TZOFFSETFROM:-0300
  419.70 +TZOFFSETTO:-0300
  419.71 +TZNAME:BRT
  419.72 +DTSTART:19900917T000000
  419.73 +RDATE:19900917T000000
  419.74 +RDATE:19990930T000000
  419.75 +RDATE:20010913T000000
  419.76 +RDATE:20021001T000000
  419.77 +END:STANDARD
  419.78 +END:VTIMEZONE
  419.79 +END:VCALENDAR
   420.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   420.2 +++ b/src/zoneinfo-global/America/Regina.ics	Tue Feb 10 18:12:00 2015 +0100
   420.3 @@ -0,0 +1,98 @@
   420.4 +BEGIN:VCALENDAR
   420.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   420.6 +VERSION:2.0
   420.7 +BEGIN:VTIMEZONE
   420.8 +TZID:America/Regina
   420.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Regina
  420.10 +X-LIC-LOCATION:America/Regina
  420.11 +BEGIN:STANDARD
  420.12 +TZOFFSETFROM:-065836
  420.13 +TZOFFSETTO:-0700
  420.14 +TZNAME:MST
  420.15 +DTSTART:19050901T000000
  420.16 +RDATE:19050901T000000
  420.17 +END:STANDARD
  420.18 +BEGIN:DAYLIGHT
  420.19 +TZOFFSETFROM:-0700
  420.20 +TZOFFSETTO:-0600
  420.21 +TZNAME:MDT
  420.22 +DTSTART:19180414T020000
  420.23 +RDATE:19180414T020000
  420.24 +RDATE:19300504T000000
  420.25 +RDATE:19310503T000000
  420.26 +RDATE:19320501T000000
  420.27 +RDATE:19330507T000000
  420.28 +RDATE:19340506T000000
  420.29 +RDATE:19370411T000000
  420.30 +RDATE:19380410T000000
  420.31 +RDATE:19390409T000000
  420.32 +RDATE:19400414T000000
  420.33 +RDATE:19410413T000000
  420.34 +RDATE:19460414T020000
  420.35 +RDATE:19470427T020000
  420.36 +RDATE:19480425T020000
  420.37 +RDATE:19490424T020000
  420.38 +RDATE:19500430T020000
  420.39 +RDATE:19510429T020000
  420.40 +RDATE:19520427T020000
  420.41 +RDATE:19530426T020000
  420.42 +RDATE:19540425T020000
  420.43 +RDATE:19550424T020000
  420.44 +RDATE:19560429T020000
  420.45 +RDATE:19570428T020000
  420.46 +RDATE:19590426T020000
  420.47 +END:DAYLIGHT
  420.48 +BEGIN:STANDARD
  420.49 +TZOFFSETFROM:-0600
  420.50 +TZOFFSETTO:-0700
  420.51 +TZNAME:MST
  420.52 +DTSTART:19181031T020000
  420.53 +RDATE:19181031T020000
  420.54 +RDATE:19301005T000000
  420.55 +RDATE:19311004T000000
  420.56 +RDATE:19321002T000000
  420.57 +RDATE:19331001T000000
  420.58 +RDATE:19341007T000000
  420.59 +RDATE:19371010T000000
  420.60 +RDATE:19381002T000000
  420.61 +RDATE:19391008T000000
  420.62 +RDATE:19401013T000000
  420.63 +RDATE:19411012T000000
  420.64 +RDATE:19450930T020000
  420.65 +RDATE:19461013T020000
  420.66 +RDATE:19470928T020000
  420.67 +RDATE:19480926T020000
  420.68 +RDATE:19490925T020000
  420.69 +RDATE:19500924T020000
  420.70 +RDATE:19510930T020000
  420.71 +RDATE:19520928T020000
  420.72 +RDATE:19530927T020000
  420.73 +RDATE:19540926T020000
  420.74 +RDATE:19550925T020000
  420.75 +RDATE:19560930T020000
  420.76 +RDATE:19570929T020000
  420.77 +RDATE:19591025T020000
  420.78 +END:STANDARD
  420.79 +BEGIN:DAYLIGHT
  420.80 +TZOFFSETFROM:-0700
  420.81 +TZOFFSETTO:-0600
  420.82 +TZNAME:MWT
  420.83 +DTSTART:19420209T020000
  420.84 +RDATE:19420209T020000
  420.85 +END:DAYLIGHT
  420.86 +BEGIN:DAYLIGHT
  420.87 +TZOFFSETFROM:-0600
  420.88 +TZOFFSETTO:-0600
  420.89 +TZNAME:MPT
  420.90 +DTSTART:19450814T170000
  420.91 +RDATE:19450814T170000
  420.92 +END:DAYLIGHT
  420.93 +BEGIN:STANDARD
  420.94 +TZOFFSETFROM:-0700
  420.95 +TZOFFSETTO:-0600
  420.96 +TZNAME:CST
  420.97 +DTSTART:19600424T020000
  420.98 +RDATE:19600424T020000
  420.99 +END:STANDARD
 420.100 +END:VTIMEZONE
 420.101 +END:VCALENDAR
   421.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   421.2 +++ b/src/zoneinfo-global/America/Resolute.ics	Tue Feb 10 18:12:00 2015 +0100
   421.3 @@ -0,0 +1,123 @@
   421.4 +BEGIN:VCALENDAR
   421.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   421.6 +VERSION:2.0
   421.7 +BEGIN:VTIMEZONE
   421.8 +TZID:America/Resolute
   421.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Resolute
  421.10 +X-LIC-LOCATION:America/Resolute
  421.11 +BEGIN:STANDARD
  421.12 +TZOFFSETFROM:-0500
  421.13 +TZOFFSETTO:-0600
  421.14 +TZNAME:CST
  421.15 +DTSTART:20071104T020000
  421.16 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  421.17 +END:STANDARD
  421.18 +BEGIN:DAYLIGHT
  421.19 +TZOFFSETFROM:-0600
  421.20 +TZOFFSETTO:-0500
  421.21 +TZNAME:CDT
  421.22 +DTSTART:20080309T020000
  421.23 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  421.24 +END:DAYLIGHT
  421.25 +BEGIN:STANDARD
  421.26 +TZOFFSETFROM:+0000
  421.27 +TZOFFSETTO:-0600
  421.28 +TZNAME:CST
  421.29 +DTSTART:19470831T000000
  421.30 +RDATE:19470831T000000
  421.31 +END:STANDARD
  421.32 +BEGIN:DAYLIGHT
  421.33 +TZOFFSETFROM:-0600
  421.34 +TZOFFSETTO:-0400
  421.35 +TZNAME:CDDT
  421.36 +DTSTART:19650425T000000
  421.37 +RDATE:19650425T000000
  421.38 +END:DAYLIGHT
  421.39 +BEGIN:STANDARD
  421.40 +TZOFFSETFROM:-0400
  421.41 +TZOFFSETTO:-0600
  421.42 +TZNAME:CST
  421.43 +DTSTART:19651031T020000
  421.44 +RDATE:19651031T020000
  421.45 +END:STANDARD
  421.46 +BEGIN:DAYLIGHT
  421.47 +TZOFFSETFROM:-0600
  421.48 +TZOFFSETTO:-0500
  421.49 +TZNAME:CDT
  421.50 +DTSTART:19800427T020000
  421.51 +RDATE:19800427T020000
  421.52 +RDATE:19810426T020000
  421.53 +RDATE:19820425T020000
  421.54 +RDATE:19830424T020000
  421.55 +RDATE:19840429T020000
  421.56 +RDATE:19850428T020000
  421.57 +RDATE:19860427T020000
  421.58 +RDATE:19870405T020000
  421.59 +RDATE:19880403T020000
  421.60 +RDATE:19890402T020000
  421.61 +RDATE:19900401T020000
  421.62 +RDATE:19910407T020000
  421.63 +RDATE:19920405T020000
  421.64 +RDATE:19930404T020000
  421.65 +RDATE:19940403T020000
  421.66 +RDATE:19950402T020000
  421.67 +RDATE:19960407T020000
  421.68 +RDATE:19970406T020000
  421.69 +RDATE:19980405T020000
  421.70 +RDATE:19990404T020000
  421.71 +RDATE:20000402T020000
  421.72 +RDATE:20020407T020000
  421.73 +RDATE:20030406T020000
  421.74 +RDATE:20040404T020000
  421.75 +RDATE:20050403T020000
  421.76 +RDATE:20060402T020000
  421.77 +END:DAYLIGHT
  421.78 +BEGIN:STANDARD
  421.79 +TZOFFSETFROM:-0500
  421.80 +TZOFFSETTO:-0600
  421.81 +TZNAME:CST
  421.82 +DTSTART:19801026T020000
  421.83 +RDATE:19801026T020000
  421.84 +RDATE:19811025T020000
  421.85 +RDATE:19821031T020000
  421.86 +RDATE:19831030T020000
  421.87 +RDATE:19841028T020000
  421.88 +RDATE:19851027T020000
  421.89 +RDATE:19861026T020000
  421.90 +RDATE:19871025T020000
  421.91 +RDATE:19881030T020000
  421.92 +RDATE:19891029T020000
  421.93 +RDATE:19901028T020000
  421.94 +RDATE:19911027T020000
  421.95 +RDATE:19921025T020000
  421.96 +RDATE:19931031T020000
  421.97 +RDATE:19941030T020000
  421.98 +RDATE:19951029T020000
  421.99 +RDATE:19961027T020000
 421.100 +RDATE:19971026T020000
 421.101 +RDATE:19981025T020000
 421.102 +RDATE:19991031T020000
 421.103 +RDATE:20011028T020000
 421.104 +RDATE:20021027T020000
 421.105 +RDATE:20031026T020000
 421.106 +RDATE:20041031T020000
 421.107 +RDATE:20051030T020000
 421.108 +END:STANDARD
 421.109 +BEGIN:STANDARD
 421.110 +TZOFFSETFROM:-0500
 421.111 +TZOFFSETTO:-0500
 421.112 +TZNAME:EST
 421.113 +DTSTART:20001029T020000
 421.114 +RDATE:20001029T020000
 421.115 +RDATE:20061029T020000
 421.116 +END:STANDARD
 421.117 +BEGIN:DAYLIGHT
 421.118 +TZOFFSETFROM:-0500
 421.119 +TZOFFSETTO:-0500
 421.120 +TZNAME:CDT
 421.121 +DTSTART:20010401T020000
 421.122 +RDATE:20010401T020000
 421.123 +RDATE:20070311T020000
 421.124 +END:DAYLIGHT
 421.125 +END:VTIMEZONE
 421.126 +END:VCALENDAR
   422.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   422.2 +++ b/src/zoneinfo-global/America/Rio_Branco.ics	Tue Feb 10 18:12:00 2015 +0100
   422.3 @@ -0,0 +1,70 @@
   422.4 +BEGIN:VCALENDAR
   422.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   422.6 +VERSION:2.0
   422.7 +BEGIN:VTIMEZONE
   422.8 +TZID:America/Rio_Branco
   422.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Rio_Branco
  422.10 +X-LIC-LOCATION:America/Rio_Branco
  422.11 +BEGIN:STANDARD
  422.12 +TZOFFSETFROM:-043112
  422.13 +TZOFFSETTO:-0500
  422.14 +TZNAME:ACT
  422.15 +DTSTART:19140101T000000
  422.16 +RDATE:19140101T000000
  422.17 +END:STANDARD
  422.18 +BEGIN:DAYLIGHT
  422.19 +TZOFFSETFROM:-0500
  422.20 +TZOFFSETTO:-0400
  422.21 +TZNAME:ACST
  422.22 +DTSTART:19311003T110000
  422.23 +RDATE:19311003T110000
  422.24 +RDATE:19321003T000000
  422.25 +RDATE:19491201T000000
  422.26 +RDATE:19501201T000000
  422.27 +RDATE:19511201T000000
  422.28 +RDATE:19521201T000000
  422.29 +RDATE:19631209T000000
  422.30 +RDATE:19650131T000000
  422.31 +RDATE:19651201T000000
  422.32 +RDATE:19661101T000000
  422.33 +RDATE:19671101T000000
  422.34 +RDATE:19851102T000000
  422.35 +RDATE:19861025T000000
  422.36 +RDATE:19871025T000000
  422.37 +END:DAYLIGHT
  422.38 +BEGIN:STANDARD
  422.39 +TZOFFSETFROM:-0400
  422.40 +TZOFFSETTO:-0500
  422.41 +TZNAME:ACT
  422.42 +DTSTART:19320401T000000
  422.43 +RDATE:19320401T000000
  422.44 +RDATE:19330401T000000
  422.45 +RDATE:19500416T010000
  422.46 +RDATE:19510401T000000
  422.47 +RDATE:19520401T000000
  422.48 +RDATE:19530301T000000
  422.49 +RDATE:19640301T000000
  422.50 +RDATE:19650331T000000
  422.51 +RDATE:19660301T000000
  422.52 +RDATE:19670301T000000
  422.53 +RDATE:19680301T000000
  422.54 +RDATE:19860315T000000
  422.55 +RDATE:19870214T000000
  422.56 +RDATE:19880207T000000
  422.57 +END:STANDARD
  422.58 +BEGIN:STANDARD
  422.59 +TZOFFSETFROM:-0500
  422.60 +TZOFFSETTO:-0500
  422.61 +TZNAME:ACT
  422.62 +DTSTART:19880912T000000
  422.63 +RDATE:19880912T000000
  422.64 +END:STANDARD
  422.65 +BEGIN:STANDARD
  422.66 +TZOFFSETFROM:-0500
  422.67 +TZOFFSETTO:-0400
  422.68 +TZNAME:AMT
  422.69 +DTSTART:20080624T000000
  422.70 +RDATE:20080624T000000
  422.71 +END:STANDARD
  422.72 +END:VTIMEZONE
  422.73 +END:VCALENDAR
   423.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   423.2 +++ b/src/zoneinfo-global/America/Santa_Isabel.ics	Tue Feb 10 18:12:00 2015 +0100
   423.3 @@ -0,0 +1,107 @@
   423.4 +BEGIN:VCALENDAR
   423.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   423.6 +VERSION:2.0
   423.7 +BEGIN:VTIMEZONE
   423.8 +TZID:America/Santa_Isabel
   423.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Santa_Isabel
  423.10 +X-LIC-LOCATION:America/Santa_Isabel
  423.11 +BEGIN:STANDARD
  423.12 +TZOFFSETFROM:-0700
  423.13 +TZOFFSETTO:-0800
  423.14 +TZNAME:PST
  423.15 +DTSTART:19761031T020000
  423.16 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  423.17 +END:STANDARD
  423.18 +BEGIN:DAYLIGHT
  423.19 +TZOFFSETFROM:-0800
  423.20 +TZOFFSETTO:-0700
  423.21 +TZNAME:PDT
  423.22 +DTSTART:19870405T020000
  423.23 +RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU
  423.24 +END:DAYLIGHT
  423.25 +BEGIN:STANDARD
  423.26 +TZOFFSETFROM:-073928
  423.27 +TZOFFSETTO:-0700
  423.28 +TZNAME:MST
  423.29 +DTSTART:19220101T002032
  423.30 +RDATE:19220101T002032
  423.31 +END:STANDARD
  423.32 +BEGIN:STANDARD
  423.33 +TZOFFSETFROM:-0700
  423.34 +TZOFFSETTO:-0800
  423.35 +TZNAME:PST
  423.36 +DTSTART:19240101T000000
  423.37 +RDATE:19240101T000000
  423.38 +RDATE:19301115T000000
  423.39 +RDATE:19310930T000000
  423.40 +RDATE:19451112T000000
  423.41 +RDATE:19490114T000000
  423.42 +RDATE:19540926T020000
  423.43 +RDATE:19550925T020000
  423.44 +RDATE:19560930T020000
  423.45 +RDATE:19570929T020000
  423.46 +RDATE:19580928T020000
  423.47 +RDATE:19590927T020000
  423.48 +RDATE:19600925T020000
  423.49 +END:STANDARD
  423.50 +BEGIN:STANDARD
  423.51 +TZOFFSETFROM:-0800
  423.52 +TZOFFSETTO:-0700
  423.53 +TZNAME:MST
  423.54 +DTSTART:19270610T230000
  423.55 +RDATE:19270610T230000
  423.56 +END:STANDARD
  423.57 +BEGIN:DAYLIGHT
  423.58 +TZOFFSETFROM:-0800
  423.59 +TZOFFSETTO:-0700
  423.60 +TZNAME:PDT
  423.61 +DTSTART:19310401T000000
  423.62 +RDATE:19310401T000000
  423.63 +RDATE:19480405T000000
  423.64 +RDATE:19540425T020000
  423.65 +RDATE:19550424T020000
  423.66 +RDATE:19560429T020000
  423.67 +RDATE:19570428T020000
  423.68 +RDATE:19580427T020000
  423.69 +RDATE:19590426T020000
  423.70 +RDATE:19600424T020000
  423.71 +RDATE:19760425T020000
  423.72 +RDATE:19770424T020000
  423.73 +RDATE:19780430T020000
  423.74 +RDATE:19790429T020000
  423.75 +RDATE:19800427T020000
  423.76 +RDATE:19810426T020000
  423.77 +RDATE:19820425T020000
  423.78 +RDATE:19830424T020000
  423.79 +RDATE:19840429T020000
  423.80 +RDATE:19850428T020000
  423.81 +RDATE:19860427T020000
  423.82 +END:DAYLIGHT
  423.83 +BEGIN:DAYLIGHT
  423.84 +TZOFFSETFROM:-0800
  423.85 +TZOFFSETTO:-0700
  423.86 +TZNAME:PWT
  423.87 +DTSTART:19420424T000000
  423.88 +RDATE:19420424T000000
  423.89 +END:DAYLIGHT
  423.90 +BEGIN:DAYLIGHT
  423.91 +TZOFFSETFROM:-0700
  423.92 +TZOFFSETTO:-0700
  423.93 +TZNAME:PPT
  423.94 +DTSTART:19450814T160000
  423.95 +RDATE:19450814T160000
  423.96 +END:DAYLIGHT
  423.97 +BEGIN:STANDARD
  423.98 +TZOFFSETFROM:-0800
  423.99 +TZOFFSETTO:-0800
 423.100 +TZNAME:PST
 423.101 +DTSTART:19540101T000000
 423.102 +RDATE:19540101T000000
 423.103 +RDATE:19610101T000000
 423.104 +RDATE:19760101T000000
 423.105 +RDATE:19960101T000000
 423.106 +RDATE:20010101T000000
 423.107 +RDATE:20020220T000000
 423.108 +END:STANDARD
 423.109 +END:VTIMEZONE
 423.110 +END:VCALENDAR
   424.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   424.2 +++ b/src/zoneinfo-global/America/Santarem.ics	Tue Feb 10 18:12:00 2015 +0100
   424.3 @@ -0,0 +1,70 @@
   424.4 +BEGIN:VCALENDAR
   424.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   424.6 +VERSION:2.0
   424.7 +BEGIN:VTIMEZONE
   424.8 +TZID:America/Santarem
   424.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Santarem
  424.10 +X-LIC-LOCATION:America/Santarem
  424.11 +BEGIN:STANDARD
  424.12 +TZOFFSETFROM:-033848
  424.13 +TZOFFSETTO:-0400
  424.14 +TZNAME:AMT
  424.15 +DTSTART:19140101T000000
  424.16 +RDATE:19140101T000000
  424.17 +END:STANDARD
  424.18 +BEGIN:DAYLIGHT
  424.19 +TZOFFSETFROM:-0400
  424.20 +TZOFFSETTO:-0300
  424.21 +TZNAME:AMST
  424.22 +DTSTART:19311003T110000
  424.23 +RDATE:19311003T110000
  424.24 +RDATE:19321003T000000
  424.25 +RDATE:19491201T000000
  424.26 +RDATE:19501201T000000
  424.27 +RDATE:19511201T000000
  424.28 +RDATE:19521201T000000
  424.29 +RDATE:19631209T000000
  424.30 +RDATE:19650131T000000
  424.31 +RDATE:19651201T000000
  424.32 +RDATE:19661101T000000
  424.33 +RDATE:19671101T000000
  424.34 +RDATE:19851102T000000
  424.35 +RDATE:19861025T000000
  424.36 +RDATE:19871025T000000
  424.37 +END:DAYLIGHT
  424.38 +BEGIN:STANDARD
  424.39 +TZOFFSETFROM:-0300
  424.40 +TZOFFSETTO:-0400
  424.41 +TZNAME:AMT
  424.42 +DTSTART:19320401T000000
  424.43 +RDATE:19320401T000000
  424.44 +RDATE:19330401T000000
  424.45 +RDATE:19500416T010000
  424.46 +RDATE:19510401T000000
  424.47 +RDATE:19520401T000000
  424.48 +RDATE:19530301T000000
  424.49 +RDATE:19640301T000000
  424.50 +RDATE:19650331T000000
  424.51 +RDATE:19660301T000000
  424.52 +RDATE:19670301T000000
  424.53 +RDATE:19680301T000000
  424.54 +RDATE:19860315T000000
  424.55 +RDATE:19870214T000000
  424.56 +RDATE:19880207T000000
  424.57 +END:STANDARD
  424.58 +BEGIN:STANDARD
  424.59 +TZOFFSETFROM:-0400
  424.60 +TZOFFSETTO:-0400
  424.61 +TZNAME:AMT
  424.62 +DTSTART:19880912T000000
  424.63 +RDATE:19880912T000000
  424.64 +END:STANDARD
  424.65 +BEGIN:STANDARD
  424.66 +TZOFFSETFROM:-0400
  424.67 +TZOFFSETTO:-0300
  424.68 +TZNAME:BRT
  424.69 +DTSTART:20080624T000000
  424.70 +RDATE:20080624T000000
  424.71 +END:STANDARD
  424.72 +END:VTIMEZONE
  424.73 +END:VCALENDAR
   425.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   425.2 +++ b/src/zoneinfo-global/America/Santiago.ics	Tue Feb 10 18:12:00 2015 +0100
   425.3 @@ -0,0 +1,210 @@
   425.4 +BEGIN:VCALENDAR
   425.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   425.6 +VERSION:2.0
   425.7 +BEGIN:VTIMEZONE
   425.8 +TZID:America/Santiago
   425.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Santiago
  425.10 +X-LIC-LOCATION:America/Santiago
  425.11 +BEGIN:STANDARD
  425.12 +TZOFFSETFROM:-0300
  425.13 +TZOFFSETTO:-0400
  425.14 +TZNAME:CLT
  425.15 +DTSTART:20120311T000000
  425.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYMONTHDAY=9,10,11,12,13,14,15;BYDAY=SU
  425.17 +END:STANDARD
  425.18 +BEGIN:DAYLIGHT
  425.19 +TZOFFSETFROM:-0400
  425.20 +TZOFFSETTO:-0300
  425.21 +TZNAME:CLST
  425.22 +DTSTART:20121014T000000
  425.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYMONTHDAY=9,10,11,12,13,14,15;BYDAY=SU
  425.24 +END:DAYLIGHT
  425.25 +BEGIN:STANDARD
  425.26 +TZOFFSETFROM:-044246
  425.27 +TZOFFSETTO:-044246
  425.28 +TZNAME:SMT
  425.29 +DTSTART:18900101T000000
  425.30 +RDATE:18900101T000000
  425.31 +END:STANDARD
  425.32 +BEGIN:STANDARD
  425.33 +TZOFFSETFROM:-044246
  425.34 +TZOFFSETTO:-0500
  425.35 +TZNAME:CLT
  425.36 +DTSTART:19100101T000000
  425.37 +RDATE:19100101T000000
  425.38 +END:STANDARD
  425.39 +BEGIN:STANDARD
  425.40 +TZOFFSETFROM:-0500
  425.41 +TZOFFSETTO:-044246
  425.42 +TZNAME:SMT
  425.43 +DTSTART:19160701T000000
  425.44 +RDATE:19160701T000000
  425.45 +END:STANDARD
  425.46 +BEGIN:STANDARD
  425.47 +TZOFFSETFROM:-044246
  425.48 +TZOFFSETTO:-0400
  425.49 +TZNAME:CLT
  425.50 +DTSTART:19180901T000000
  425.51 +RDATE:19180901T000000
  425.52 +END:STANDARD
  425.53 +BEGIN:STANDARD
  425.54 +TZOFFSETFROM:-0400
  425.55 +TZOFFSETTO:-044246
  425.56 +TZNAME:SMT
  425.57 +DTSTART:19190701T000000
  425.58 +RDATE:19190701T000000
  425.59 +END:STANDARD
  425.60 +BEGIN:DAYLIGHT
  425.61 +TZOFFSETFROM:-044246
  425.62 +TZOFFSETTO:-0400
  425.63 +TZNAME:CLST
  425.64 +DTSTART:19270901T000000
  425.65 +RDATE:19270901T000000
  425.66 +END:DAYLIGHT
  425.67 +BEGIN:STANDARD
  425.68 +TZOFFSETFROM:-0400
  425.69 +TZOFFSETTO:-0500
  425.70 +TZNAME:CLT
  425.71 +DTSTART:19280401T000000
  425.72 +RDATE:19280401T000000
  425.73 +RDATE:19290401T000000
  425.74 +RDATE:19300401T000000
  425.75 +RDATE:19310401T000000
  425.76 +RDATE:19320401T000000
  425.77 +RDATE:19420601T000000
  425.78 +RDATE:19460831T230000
  425.79 +END:STANDARD
  425.80 +BEGIN:DAYLIGHT
  425.81 +TZOFFSETFROM:-0500
  425.82 +TZOFFSETTO:-0400
  425.83 +TZNAME:CLST
  425.84 +DTSTART:19280901T000000
  425.85 +RDATE:19280901T000000
  425.86 +RDATE:19290901T000000
  425.87 +RDATE:19300901T000000
  425.88 +RDATE:19310901T000000
  425.89 +RDATE:19320901T000000
  425.90 +RDATE:19420801T000000
  425.91 +END:DAYLIGHT
  425.92 +BEGIN:DAYLIGHT
  425.93 +TZOFFSETFROM:-0400
  425.94 +TZOFFSETTO:-0400
  425.95 +TZNAME:CLST
  425.96 +DTSTART:19460715T000000
  425.97 +RDATE:19460715T000000
  425.98 +END:DAYLIGHT
  425.99 +BEGIN:STANDARD
 425.100 +TZOFFSETFROM:-0500
 425.101 +TZOFFSETTO:-0500
 425.102 +TZNAME:CLT
 425.103 +DTSTART:19470331T230000
 425.104 +RDATE:19470331T230000
 425.105 +END:STANDARD
 425.106 +BEGIN:STANDARD
 425.107 +TZOFFSETFROM:-0500
 425.108 +TZOFFSETTO:-0400
 425.109 +TZNAME:CLT
 425.110 +DTSTART:19470522T000000
 425.111 +RDATE:19470522T000000
 425.112 +END:STANDARD
 425.113 +BEGIN:DAYLIGHT
 425.114 +TZOFFSETFROM:-0400
 425.115 +TZOFFSETTO:-0300
 425.116 +TZNAME:CLST
 425.117 +DTSTART:19681103T000000
 425.118 +RDATE:19681103T000000
 425.119 +RDATE:19691123T000000
 425.120 +RDATE:19701011T000000
 425.121 +RDATE:19711010T000000
 425.122 +RDATE:19721015T000000
 425.123 +RDATE:19730930T000000
 425.124 +RDATE:19741013T000000
 425.125 +RDATE:19751012T000000
 425.126 +RDATE:19761010T000000
 425.127 +RDATE:19771009T000000
 425.128 +RDATE:19781015T000000
 425.129 +RDATE:19791014T000000
 425.130 +RDATE:19801012T000000
 425.131 +RDATE:19811011T000000
 425.132 +RDATE:19821010T000000
 425.133 +RDATE:19831009T000000
 425.134 +RDATE:19841014T000000
 425.135 +RDATE:19851013T000000
 425.136 +RDATE:19861012T000000
 425.137 +RDATE:19871011T000000
 425.138 +RDATE:19881002T000000
 425.139 +RDATE:19891015T000000
 425.140 +RDATE:19900916T000000
 425.141 +RDATE:19911013T000000
 425.142 +RDATE:19921011T000000
 425.143 +RDATE:19931010T000000
 425.144 +RDATE:19941009T000000
 425.145 +RDATE:19951015T000000
 425.146 +RDATE:19961013T000000
 425.147 +RDATE:19971012T000000
 425.148 +RDATE:19980927T000000
 425.149 +RDATE:19991010T000000
 425.150 +RDATE:20001015T000000
 425.151 +RDATE:20011014T000000
 425.152 +RDATE:20021013T000000
 425.153 +RDATE:20031012T000000
 425.154 +RDATE:20041010T000000
 425.155 +RDATE:20051009T000000
 425.156 +RDATE:20061015T000000
 425.157 +RDATE:20071014T000000
 425.158 +RDATE:20081012T000000
 425.159 +RDATE:20091011T000000
 425.160 +RDATE:20101010T000000
 425.161 +RDATE:20110821T000000
 425.162 +END:DAYLIGHT
 425.163 +BEGIN:STANDARD
 425.164 +TZOFFSETFROM:-0300
 425.165 +TZOFFSETTO:-0400
 425.166 +TZNAME:CLT
 425.167 +DTSTART:19690330T000000
 425.168 +RDATE:19690330T000000
 425.169 +RDATE:19700329T000000
 425.170 +RDATE:19710314T000000
 425.171 +RDATE:19720312T000000
 425.172 +RDATE:19730311T000000
 425.173 +RDATE:19740310T000000
 425.174 +RDATE:19750309T000000
 425.175 +RDATE:19760314T000000
 425.176 +RDATE:19770313T000000
 425.177 +RDATE:19780312T000000
 425.178 +RDATE:19790311T000000
 425.179 +RDATE:19800309T000000
 425.180 +RDATE:19810315T000000
 425.181 +RDATE:19820314T000000
 425.182 +RDATE:19830313T000000
 425.183 +RDATE:19840311T000000
 425.184 +RDATE:19850310T000000
 425.185 +RDATE:19860309T000000
 425.186 +RDATE:19870412T000000
 425.187 +RDATE:19880313T000000
 425.188 +RDATE:19890312T000000
 425.189 +RDATE:19900318T000000
 425.190 +RDATE:19910310T000000
 425.191 +RDATE:19920315T000000
 425.192 +RDATE:19930314T000000
 425.193 +RDATE:19940313T000000
 425.194 +RDATE:19950312T000000
 425.195 +RDATE:19960310T000000
 425.196 +RDATE:19970330T000000
 425.197 +RDATE:19980315T000000
 425.198 +RDATE:19990404T000000
 425.199 +RDATE:20000312T000000
 425.200 +RDATE:20010311T000000
 425.201 +RDATE:20020310T000000
 425.202 +RDATE:20030309T000000
 425.203 +RDATE:20040314T000000
 425.204 +RDATE:20050313T000000
 425.205 +RDATE:20060312T000000
 425.206 +RDATE:20070311T000000
 425.207 +RDATE:20080330T000000
 425.208 +RDATE:20090315T000000
 425.209 +RDATE:20100404T000000
 425.210 +RDATE:20110508T000000
 425.211 +END:STANDARD
 425.212 +END:VTIMEZONE
 425.213 +END:VCALENDAR
   426.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   426.2 +++ b/src/zoneinfo-global/America/Santo_Domingo.ics	Tue Feb 10 18:12:00 2015 +0100
   426.3 @@ -0,0 +1,68 @@
   426.4 +BEGIN:VCALENDAR
   426.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   426.6 +VERSION:2.0
   426.7 +BEGIN:VTIMEZONE
   426.8 +TZID:America/Santo_Domingo
   426.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Santo_Domingo
  426.10 +X-LIC-LOCATION:America/Santo_Domingo
  426.11 +BEGIN:STANDARD
  426.12 +TZOFFSETFROM:-043936
  426.13 +TZOFFSETTO:-0440
  426.14 +TZNAME:SDMT
  426.15 +DTSTART:18900101T000000
  426.16 +RDATE:18900101T000000
  426.17 +END:STANDARD
  426.18 +BEGIN:STANDARD
  426.19 +TZOFFSETFROM:-0440
  426.20 +TZOFFSETTO:-0500
  426.21 +TZNAME:EST
  426.22 +DTSTART:19330401T120000
  426.23 +RDATE:19330401T120000
  426.24 +END:STANDARD
  426.25 +BEGIN:DAYLIGHT
  426.26 +TZOFFSETFROM:-0500
  426.27 +TZOFFSETTO:-0400
  426.28 +TZNAME:EDT
  426.29 +DTSTART:19661030T000000
  426.30 +RDATE:19661030T000000
  426.31 +END:DAYLIGHT
  426.32 +BEGIN:STANDARD
  426.33 +TZOFFSETFROM:-0400
  426.34 +TZOFFSETTO:-0500
  426.35 +TZNAME:EST
  426.36 +DTSTART:19670228T000000
  426.37 +RDATE:19670228T000000
  426.38 +RDATE:20001029T020000
  426.39 +END:STANDARD
  426.40 +BEGIN:DAYLIGHT
  426.41 +TZOFFSETFROM:-0500
  426.42 +TZOFFSETTO:-0430
  426.43 +TZNAME:EHDT
  426.44 +DTSTART:19691026T000000
  426.45 +RDATE:19691026T000000
  426.46 +RDATE:19701025T000000
  426.47 +RDATE:19711031T000000
  426.48 +RDATE:19721029T000000
  426.49 +RDATE:19731028T000000
  426.50 +END:DAYLIGHT
  426.51 +BEGIN:STANDARD
  426.52 +TZOFFSETFROM:-0430
  426.53 +TZOFFSETTO:-0500
  426.54 +TZNAME:EST
  426.55 +DTSTART:19700221T000000
  426.56 +RDATE:19700221T000000
  426.57 +RDATE:19710120T000000
  426.58 +RDATE:19720121T000000
  426.59 +RDATE:19730121T000000
  426.60 +RDATE:19740121T000000
  426.61 +END:STANDARD
  426.62 +BEGIN:STANDARD
  426.63 +TZOFFSETFROM:-0500
  426.64 +TZOFFSETTO:-0400
  426.65 +TZNAME:AST
  426.66 +DTSTART:19741027T000000
  426.67 +RDATE:19741027T000000
  426.68 +RDATE:20001203T010000
  426.69 +END:STANDARD
  426.70 +END:VTIMEZONE
  426.71 +END:VCALENDAR
   427.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   427.2 +++ b/src/zoneinfo-global/America/Sao_Paulo.ics	Tue Feb 10 18:12:00 2015 +0100
   427.3 @@ -0,0 +1,152 @@
   427.4 +BEGIN:VCALENDAR
   427.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   427.6 +VERSION:2.0
   427.7 +BEGIN:VTIMEZONE
   427.8 +TZID:America/Sao_Paulo
   427.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Sao_Paulo
  427.10 +X-LIC-LOCATION:America/Sao_Paulo
  427.11 +BEGIN:DAYLIGHT
  427.12 +TZOFFSETFROM:-0300
  427.13 +TZOFFSETTO:-0200
  427.14 +TZNAME:BRST
  427.15 +DTSTART:20081019T000000
  427.16 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=3SU
  427.17 +END:DAYLIGHT
  427.18 +BEGIN:STANDARD
  427.19 +TZOFFSETFROM:-0300
  427.20 +TZOFFSETTO:-0300
  427.21 +TZNAME:BRT
  427.22 +DTSTART:20380221T000000
  427.23 +RRULE:FREQ=YEARLY;BYMONTH=2;BYDAY=3SU
  427.24 +END:STANDARD
  427.25 +BEGIN:STANDARD
  427.26 +TZOFFSETFROM:-030628
  427.27 +TZOFFSETTO:-0300
  427.28 +TZNAME:BRT
  427.29 +DTSTART:19140101T000000
  427.30 +RDATE:19140101T000000
  427.31 +END:STANDARD
  427.32 +BEGIN:DAYLIGHT
  427.33 +TZOFFSETFROM:-0300
  427.34 +TZOFFSETTO:-0200
  427.35 +TZNAME:BRST
  427.36 +DTSTART:19311003T110000
  427.37 +RDATE:19311003T110000
  427.38 +RDATE:19321003T000000
  427.39 +RDATE:19491201T000000
  427.40 +RDATE:19501201T000000
  427.41 +RDATE:19511201T000000
  427.42 +RDATE:19521201T000000
  427.43 +RDATE:19631023T000000
  427.44 +RDATE:19650131T000000
  427.45 +RDATE:19651201T000000
  427.46 +RDATE:19661101T000000
  427.47 +RDATE:19671101T000000
  427.48 +RDATE:19851102T000000
  427.49 +RDATE:19861025T000000
  427.50 +RDATE:19871025T000000
  427.51 +RDATE:19881016T000000
  427.52 +RDATE:19891015T000000
  427.53 +RDATE:19901021T000000
  427.54 +RDATE:19911020T000000
  427.55 +RDATE:19921025T000000
  427.56 +RDATE:19931017T000000
  427.57 +RDATE:19941016T000000
  427.58 +RDATE:19951015T000000
  427.59 +RDATE:19961006T000000
  427.60 +RDATE:19971006T000000
  427.61 +RDATE:19981011T000000
  427.62 +RDATE:19991003T000000
  427.63 +RDATE:20001008T000000
  427.64 +RDATE:20011014T000000
  427.65 +RDATE:20021103T000000
  427.66 +RDATE:20031019T000000
  427.67 +RDATE:20041102T000000
  427.68 +RDATE:20051016T000000
  427.69 +RDATE:20061105T000000
  427.70 +RDATE:20071014T000000
  427.71 +END:DAYLIGHT
  427.72 +BEGIN:STANDARD
  427.73 +TZOFFSETFROM:-0200
  427.74 +TZOFFSETTO:-0300
  427.75 +TZNAME:BRT
  427.76 +DTSTART:19320401T000000
  427.77 +RDATE:19320401T000000
  427.78 +RDATE:19330401T000000
  427.79 +RDATE:19500416T010000
  427.80 +RDATE:19510401T000000
  427.81 +RDATE:19520401T000000
  427.82 +RDATE:19530301T000000
  427.83 +RDATE:19640301T000000
  427.84 +RDATE:19650331T000000
  427.85 +RDATE:19660301T000000
  427.86 +RDATE:19670301T000000
  427.87 +RDATE:19680301T000000
  427.88 +RDATE:19860315T000000
  427.89 +RDATE:19870214T000000
  427.90 +RDATE:19880207T000000
  427.91 +RDATE:19890129T000000
  427.92 +RDATE:19900211T000000
  427.93 +RDATE:19910217T000000
  427.94 +RDATE:19920209T000000
  427.95 +RDATE:19930131T000000
  427.96 +RDATE:19940220T000000
  427.97 +RDATE:19950219T000000
  427.98 +RDATE:19960211T000000
  427.99 +RDATE:19970216T000000
 427.100 +RDATE:19980301T000000
 427.101 +RDATE:19990221T000000
 427.102 +RDATE:20000227T000000
 427.103 +RDATE:20010218T000000
 427.104 +RDATE:20020217T000000
 427.105 +RDATE:20030216T000000
 427.106 +RDATE:20040215T000000
 427.107 +RDATE:20050220T000000
 427.108 +RDATE:20060219T000000
 427.109 +RDATE:20070225T000000
 427.110 +RDATE:20080217T000000
 427.111 +RDATE:20090215T000000
 427.112 +RDATE:20100221T000000
 427.113 +RDATE:20110220T000000
 427.114 +RDATE:20120226T000000
 427.115 +RDATE:20130217T000000
 427.116 +RDATE:20140216T000000
 427.117 +END:STANDARD
 427.118 +BEGIN:DAYLIGHT
 427.119 +TZOFFSETFROM:-0200
 427.120 +TZOFFSETTO:-0200
 427.121 +TZNAME:BRST
 427.122 +DTSTART:19640101T000000
 427.123 +RDATE:19640101T000000
 427.124 +END:DAYLIGHT
 427.125 +BEGIN:STANDARD
 427.126 +TZOFFSETFROM:-0300
 427.127 +TZOFFSETTO:-0300
 427.128 +TZNAME:BRT
 427.129 +DTSTART:20150222T000000
 427.130 +RDATE:20150222T000000
 427.131 +RDATE:20160221T000000
 427.132 +RDATE:20170219T000000
 427.133 +RDATE:20180218T000000
 427.134 +RDATE:20190217T000000
 427.135 +RDATE:20200216T000000
 427.136 +RDATE:20210221T000000
 427.137 +RDATE:20220220T000000
 427.138 +RDATE:20230226T000000
 427.139 +RDATE:20240218T000000
 427.140 +RDATE:20250216T000000
 427.141 +RDATE:20260222T000000
 427.142 +RDATE:20270221T000000
 427.143 +RDATE:20280220T000000
 427.144 +RDATE:20290218T000000
 427.145 +RDATE:20300217T000000
 427.146 +RDATE:20310216T000000
 427.147 +RDATE:20320215T000000
 427.148 +RDATE:20330220T000000
 427.149 +RDATE:20340226T000000
 427.150 +RDATE:20350218T000000
 427.151 +RDATE:20360217T000000
 427.152 +RDATE:20370222T000000
 427.153 +END:STANDARD
 427.154 +END:VTIMEZONE
 427.155 +END:VCALENDAR
   428.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   428.2 +++ b/src/zoneinfo-global/America/Scoresbysund.ics	Tue Feb 10 18:12:00 2015 +0100
   428.3 @@ -0,0 +1,72 @@
   428.4 +BEGIN:VCALENDAR
   428.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   428.6 +VERSION:2.0
   428.7 +BEGIN:VTIMEZONE
   428.8 +TZID:America/Scoresbysund
   428.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Scoresbysund
  428.10 +X-LIC-LOCATION:America/Scoresbysund
  428.11 +BEGIN:DAYLIGHT
  428.12 +TZOFFSETFROM:-0100
  428.13 +TZOFFSETTO:+0000
  428.14 +TZNAME:EGST
  428.15 +DTSTART:19820328T000000
  428.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  428.17 +END:DAYLIGHT
  428.18 +BEGIN:STANDARD
  428.19 +TZOFFSETFROM:+0000
  428.20 +TZOFFSETTO:-0100
  428.21 +TZNAME:EGT
  428.22 +DTSTART:19961027T010000
  428.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  428.24 +END:STANDARD
  428.25 +BEGIN:STANDARD
  428.26 +TZOFFSETFROM:-012752
  428.27 +TZOFFSETTO:-0200
  428.28 +TZNAME:CGT
  428.29 +DTSTART:19160728T000000
  428.30 +RDATE:19160728T000000
  428.31 +END:STANDARD
  428.32 +BEGIN:DAYLIGHT
  428.33 +TZOFFSETFROM:-0200
  428.34 +TZOFFSETTO:-0100
  428.35 +TZNAME:CGST
  428.36 +DTSTART:19800406T020000
  428.37 +RDATE:19800406T020000
  428.38 +END:DAYLIGHT
  428.39 +BEGIN:STANDARD
  428.40 +TZOFFSETFROM:-0100
  428.41 +TZOFFSETTO:-0200
  428.42 +TZNAME:CGT
  428.43 +DTSTART:19800928T030000
  428.44 +RDATE:19800928T030000
  428.45 +END:STANDARD
  428.46 +BEGIN:DAYLIGHT
  428.47 +TZOFFSETFROM:-0200
  428.48 +TZOFFSETTO:+0000
  428.49 +TZNAME:EGST
  428.50 +DTSTART:19810329T000000
  428.51 +RDATE:19810329T000000
  428.52 +END:DAYLIGHT
  428.53 +BEGIN:STANDARD
  428.54 +TZOFFSETFROM:+0000
  428.55 +TZOFFSETTO:-0100
  428.56 +TZNAME:EGT
  428.57 +DTSTART:19810927T010000
  428.58 +RDATE:19810927T010000
  428.59 +RDATE:19820926T010000
  428.60 +RDATE:19830925T010000
  428.61 +RDATE:19840930T010000
  428.62 +RDATE:19850929T010000
  428.63 +RDATE:19860928T010000
  428.64 +RDATE:19870927T010000
  428.65 +RDATE:19880925T010000
  428.66 +RDATE:19890924T010000
  428.67 +RDATE:19900930T010000
  428.68 +RDATE:19910929T010000
  428.69 +RDATE:19920927T010000
  428.70 +RDATE:19930926T010000
  428.71 +RDATE:19940925T010000
  428.72 +RDATE:19950924T010000
  428.73 +END:STANDARD
  428.74 +END:VTIMEZONE
  428.75 +END:VCALENDAR
   429.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   429.2 +++ b/src/zoneinfo-global/America/Shiprock.ics	Tue Feb 10 18:12:00 2015 +0100
   429.3 @@ -0,0 +1,159 @@
   429.4 +BEGIN:VCALENDAR
   429.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   429.6 +VERSION:2.0
   429.7 +BEGIN:VTIMEZONE
   429.8 +TZID:America/Shiprock
   429.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Shiprock
  429.10 +X-LIC-LOCATION:America/Shiprock
  429.11 +BEGIN:DAYLIGHT
  429.12 +TZOFFSETFROM:-0700
  429.13 +TZOFFSETTO:-0600
  429.14 +TZNAME:MDT
  429.15 +DTSTART:20070311T020000
  429.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  429.17 +END:DAYLIGHT
  429.18 +BEGIN:STANDARD
  429.19 +TZOFFSETFROM:-0600
  429.20 +TZOFFSETTO:-0700
  429.21 +TZNAME:MST
  429.22 +DTSTART:20071104T020000
  429.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  429.24 +END:STANDARD
  429.25 +BEGIN:STANDARD
  429.26 +TZOFFSETFROM:-065956
  429.27 +TZOFFSETTO:-0700
  429.28 +TZNAME:MST
  429.29 +DTSTART:18831118T120004
  429.30 +RDATE:18831118T120004
  429.31 +END:STANDARD
  429.32 +BEGIN:DAYLIGHT
  429.33 +TZOFFSETFROM:-0700
  429.34 +TZOFFSETTO:-0600
  429.35 +TZNAME:MDT
  429.36 +DTSTART:19180331T020000
  429.37 +RDATE:19180331T020000
  429.38 +RDATE:19190330T020000
  429.39 +RDATE:19200328T020000
  429.40 +RDATE:19210327T020000
  429.41 +RDATE:19650425T020000
  429.42 +RDATE:19660424T020000
  429.43 +RDATE:19670430T020000
  429.44 +RDATE:19680428T020000
  429.45 +RDATE:19690427T020000
  429.46 +RDATE:19700426T020000
  429.47 +RDATE:19710425T020000
  429.48 +RDATE:19720430T020000
  429.49 +RDATE:19730429T020000
  429.50 +RDATE:19740106T020000
  429.51 +RDATE:19750223T020000
  429.52 +RDATE:19760425T020000
  429.53 +RDATE:19770424T020000
  429.54 +RDATE:19780430T020000
  429.55 +RDATE:19790429T020000
  429.56 +RDATE:19800427T020000
  429.57 +RDATE:19810426T020000
  429.58 +RDATE:19820425T020000
  429.59 +RDATE:19830424T020000
  429.60 +RDATE:19840429T020000
  429.61 +RDATE:19850428T020000
  429.62 +RDATE:19860427T020000
  429.63 +RDATE:19870405T020000
  429.64 +RDATE:19880403T020000
  429.65 +RDATE:19890402T020000
  429.66 +RDATE:19900401T020000
  429.67 +RDATE:19910407T020000
  429.68 +RDATE:19920405T020000
  429.69 +RDATE:19930404T020000
  429.70 +RDATE:19940403T020000
  429.71 +RDATE:19950402T020000
  429.72 +RDATE:19960407T020000
  429.73 +RDATE:19970406T020000
  429.74 +RDATE:19980405T020000
  429.75 +RDATE:19990404T020000
  429.76 +RDATE:20000402T020000
  429.77 +RDATE:20010401T020000
  429.78 +RDATE:20020407T020000
  429.79 +RDATE:20030406T020000
  429.80 +RDATE:20040404T020000
  429.81 +RDATE:20050403T020000
  429.82 +RDATE:20060402T020000
  429.83 +END:DAYLIGHT
  429.84 +BEGIN:STANDARD
  429.85 +TZOFFSETFROM:-0600
  429.86 +TZOFFSETTO:-0700
  429.87 +TZNAME:MST
  429.88 +DTSTART:19181027T020000
  429.89 +RDATE:19181027T020000
  429.90 +RDATE:19191026T020000
  429.91 +RDATE:19201031T020000
  429.92 +RDATE:19210522T020000
  429.93 +RDATE:19450930T020000
  429.94 +RDATE:19651031T020000
  429.95 +RDATE:19661030T020000
  429.96 +RDATE:19671029T020000
  429.97 +RDATE:19681027T020000
  429.98 +RDATE:19691026T020000
  429.99 +RDATE:19701025T020000
 429.100 +RDATE:19711031T020000
 429.101 +RDATE:19721029T020000
 429.102 +RDATE:19731028T020000
 429.103 +RDATE:19741027T020000
 429.104 +RDATE:19751026T020000
 429.105 +RDATE:19761031T020000
 429.106 +RDATE:19771030T020000
 429.107 +RDATE:19781029T020000
 429.108 +RDATE:19791028T020000
 429.109 +RDATE:19801026T020000
 429.110 +RDATE:19811025T020000
 429.111 +RDATE:19821031T020000
 429.112 +RDATE:19831030T020000
 429.113 +RDATE:19841028T020000
 429.114 +RDATE:19851027T020000
 429.115 +RDATE:19861026T020000
 429.116 +RDATE:19871025T020000
 429.117 +RDATE:19881030T020000
 429.118 +RDATE:19891029T020000
 429.119 +RDATE:19901028T020000
 429.120 +RDATE:19911027T020000
 429.121 +RDATE:19921025T020000
 429.122 +RDATE:19931031T020000
 429.123 +RDATE:19941030T020000
 429.124 +RDATE:19951029T020000
 429.125 +RDATE:19961027T020000
 429.126 +RDATE:19971026T020000
 429.127 +RDATE:19981025T020000
 429.128 +RDATE:19991031T020000
 429.129 +RDATE:20001029T020000
 429.130 +RDATE:20011028T020000
 429.131 +RDATE:20021027T020000
 429.132 +RDATE:20031026T020000
 429.133 +RDATE:20041031T020000
 429.134 +RDATE:20051030T020000
 429.135 +RDATE:20061029T020000
 429.136 +END:STANDARD
 429.137 +BEGIN:STANDARD
 429.138 +TZOFFSETFROM:-0700
 429.139 +TZOFFSETTO:-0700
 429.140 +TZNAME:MST
 429.141 +DTSTART:19200101T000000
 429.142 +RDATE:19200101T000000
 429.143 +RDATE:19420101T000000
 429.144 +RDATE:19460101T000000
 429.145 +RDATE:19670101T000000
 429.146 +END:STANDARD
 429.147 +BEGIN:DAYLIGHT
 429.148 +TZOFFSETFROM:-0700
 429.149 +TZOFFSETTO:-0600
 429.150 +TZNAME:MWT
 429.151 +DTSTART:19420209T020000
 429.152 +RDATE:19420209T020000
 429.153 +END:DAYLIGHT
 429.154 +BEGIN:DAYLIGHT
 429.155 +TZOFFSETFROM:-0600
 429.156 +TZOFFSETTO:-0600
 429.157 +TZNAME:MPT
 429.158 +DTSTART:19450814T170000
 429.159 +RDATE:19450814T170000
 429.160 +END:DAYLIGHT
 429.161 +END:VTIMEZONE
 429.162 +END:VCALENDAR
   430.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   430.2 +++ b/src/zoneinfo-global/America/Sitka.ics	Tue Feb 10 18:12:00 2015 +0100
   430.3 @@ -0,0 +1,174 @@
   430.4 +BEGIN:VCALENDAR
   430.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   430.6 +VERSION:2.0
   430.7 +BEGIN:VTIMEZONE
   430.8 +TZID:America/Sitka
   430.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Sitka
  430.10 +X-LIC-LOCATION:America/Sitka
  430.11 +BEGIN:DAYLIGHT
  430.12 +TZOFFSETFROM:-0900
  430.13 +TZOFFSETTO:-0800
  430.14 +TZNAME:AKDT
  430.15 +DTSTART:20070311T020000
  430.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  430.17 +END:DAYLIGHT
  430.18 +BEGIN:STANDARD
  430.19 +TZOFFSETFROM:-0800
  430.20 +TZOFFSETTO:-0900
  430.21 +TZNAME:AKST
  430.22 +DTSTART:20071104T020000
  430.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  430.24 +END:STANDARD
  430.25 +BEGIN:STANDARD
  430.26 +TZOFFSETFROM:+145847
  430.27 +TZOFFSETTO:-090113
  430.28 +TZNAME:LMT
  430.29 +DTSTART:18671018T000000
  430.30 +RDATE:18671018T000000
  430.31 +END:STANDARD
  430.32 +BEGIN:STANDARD
  430.33 +TZOFFSETFROM:-090113
  430.34 +TZOFFSETTO:-0800
  430.35 +TZNAME:PST
  430.36 +DTSTART:19000820T120000
  430.37 +RDATE:19000820T120000
  430.38 +END:STANDARD
  430.39 +BEGIN:STANDARD
  430.40 +TZOFFSETFROM:-0800
  430.41 +TZOFFSETTO:-0800
  430.42 +TZNAME:PST
  430.43 +DTSTART:19420101T000000
  430.44 +RDATE:19420101T000000
  430.45 +RDATE:19460101T000000
  430.46 +RDATE:19690101T000000
  430.47 +END:STANDARD
  430.48 +BEGIN:DAYLIGHT
  430.49 +TZOFFSETFROM:-0800
  430.50 +TZOFFSETTO:-0700
  430.51 +TZNAME:PWT
  430.52 +DTSTART:19420209T020000
  430.53 +RDATE:19420209T020000
  430.54 +END:DAYLIGHT
  430.55 +BEGIN:DAYLIGHT
  430.56 +TZOFFSETFROM:-0700
  430.57 +TZOFFSETTO:-0700
  430.58 +TZNAME:PPT
  430.59 +DTSTART:19450814T160000
  430.60 +RDATE:19450814T160000
  430.61 +END:DAYLIGHT
  430.62 +BEGIN:STANDARD
  430.63 +TZOFFSETFROM:-0700
  430.64 +TZOFFSETTO:-0800
  430.65 +TZNAME:PST
  430.66 +DTSTART:19450930T020000
  430.67 +RDATE:19450930T020000
  430.68 +RDATE:19691026T020000
  430.69 +RDATE:19701025T020000
  430.70 +RDATE:19711031T020000
  430.71 +RDATE:19721029T020000
  430.72 +RDATE:19731028T020000
  430.73 +RDATE:19741027T020000
  430.74 +RDATE:19751026T020000
  430.75 +RDATE:19761031T020000
  430.76 +RDATE:19771030T020000
  430.77 +RDATE:19781029T020000
  430.78 +RDATE:19791028T020000
  430.79 +RDATE:19801026T020000
  430.80 +RDATE:19811025T020000
  430.81 +RDATE:19821031T020000
  430.82 +END:STANDARD
  430.83 +BEGIN:DAYLIGHT
  430.84 +TZOFFSETFROM:-0800
  430.85 +TZOFFSETTO:-0700
  430.86 +TZNAME:PDT
  430.87 +DTSTART:19690427T020000
  430.88 +RDATE:19690427T020000
  430.89 +RDATE:19700426T020000
  430.90 +RDATE:19710425T020000
  430.91 +RDATE:19720430T020000
  430.92 +RDATE:19730429T020000
  430.93 +RDATE:19740106T020000
  430.94 +RDATE:19750223T020000
  430.95 +RDATE:19760425T020000
  430.96 +RDATE:19770424T020000
  430.97 +RDATE:19780430T020000
  430.98 +RDATE:19790429T020000
  430.99 +RDATE:19800427T020000
 430.100 +RDATE:19810426T020000
 430.101 +RDATE:19820425T020000
 430.102 +RDATE:19830424T020000
 430.103 +END:DAYLIGHT
 430.104 +BEGIN:STANDARD
 430.105 +TZOFFSETFROM:-0700
 430.106 +TZOFFSETTO:-0900
 430.107 +TZNAME:YST
 430.108 +DTSTART:19831030T020000
 430.109 +RDATE:19831030T020000
 430.110 +END:STANDARD
 430.111 +BEGIN:STANDARD
 430.112 +TZOFFSETFROM:-0900
 430.113 +TZOFFSETTO:-0900
 430.114 +TZNAME:AKST
 430.115 +DTSTART:19831130T000000
 430.116 +RDATE:19831130T000000
 430.117 +END:STANDARD
 430.118 +BEGIN:DAYLIGHT
 430.119 +TZOFFSETFROM:-0900
 430.120 +TZOFFSETTO:-0800
 430.121 +TZNAME:AKDT
 430.122 +DTSTART:19840429T020000
 430.123 +RDATE:19840429T020000
 430.124 +RDATE:19850428T020000
 430.125 +RDATE:19860427T020000
 430.126 +RDATE:19870405T020000
 430.127 +RDATE:19880403T020000
 430.128 +RDATE:19890402T020000
 430.129 +RDATE:19900401T020000
 430.130 +RDATE:19910407T020000
 430.131 +RDATE:19920405T020000
 430.132 +RDATE:19930404T020000
 430.133 +RDATE:19940403T020000
 430.134 +RDATE:19950402T020000
 430.135 +RDATE:19960407T020000
 430.136 +RDATE:19970406T020000
 430.137 +RDATE:19980405T020000
 430.138 +RDATE:19990404T020000
 430.139 +RDATE:20000402T020000
 430.140 +RDATE:20010401T020000
 430.141 +RDATE:20020407T020000
 430.142 +RDATE:20030406T020000
 430.143 +RDATE:20040404T020000
 430.144 +RDATE:20050403T020000
 430.145 +RDATE:20060402T020000
 430.146 +END:DAYLIGHT
 430.147 +BEGIN:STANDARD
 430.148 +TZOFFSETFROM:-0800
 430.149 +TZOFFSETTO:-0900
 430.150 +TZNAME:AKST
 430.151 +DTSTART:19841028T020000
 430.152 +RDATE:19841028T020000
 430.153 +RDATE:19851027T020000
 430.154 +RDATE:19861026T020000
 430.155 +RDATE:19871025T020000
 430.156 +RDATE:19881030T020000
 430.157 +RDATE:19891029T020000
 430.158 +RDATE:19901028T020000
 430.159 +RDATE:19911027T020000
 430.160 +RDATE:19921025T020000
 430.161 +RDATE:19931031T020000
 430.162 +RDATE:19941030T020000
 430.163 +RDATE:19951029T020000
 430.164 +RDATE:19961027T020000
 430.165 +RDATE:19971026T020000
 430.166 +RDATE:19981025T020000
 430.167 +RDATE:19991031T020000
 430.168 +RDATE:20001029T020000
 430.169 +RDATE:20011028T020000
 430.170 +RDATE:20021027T020000
 430.171 +RDATE:20031026T020000
 430.172 +RDATE:20041031T020000
 430.173 +RDATE:20051030T020000
 430.174 +RDATE:20061029T020000
 430.175 +END:STANDARD
 430.176 +END:VTIMEZONE
 430.177 +END:VCALENDAR
   431.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   431.2 +++ b/src/zoneinfo-global/America/St_Barthelemy.ics	Tue Feb 10 18:12:00 2015 +0100
   431.3 @@ -0,0 +1,16 @@
   431.4 +BEGIN:VCALENDAR
   431.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   431.6 +VERSION:2.0
   431.7 +BEGIN:VTIMEZONE
   431.8 +TZID:America/St_Barthelemy
   431.9 +TZURL:http://tzurl.org/zoneinfo-global/America/St_Barthelemy
  431.10 +X-LIC-LOCATION:America/St_Barthelemy
  431.11 +BEGIN:STANDARD
  431.12 +TZOFFSETFROM:-040608
  431.13 +TZOFFSETTO:-0400
  431.14 +TZNAME:AST
  431.15 +DTSTART:19110608T000000
  431.16 +RDATE:19110608T000000
  431.17 +END:STANDARD
  431.18 +END:VTIMEZONE
  431.19 +END:VCALENDAR
   432.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   432.2 +++ b/src/zoneinfo-global/America/St_Johns.ics	Tue Feb 10 18:12:00 2015 +0100
   432.3 @@ -0,0 +1,285 @@
   432.4 +BEGIN:VCALENDAR
   432.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   432.6 +VERSION:2.0
   432.7 +BEGIN:VTIMEZONE
   432.8 +TZID:America/St_Johns
   432.9 +TZURL:http://tzurl.org/zoneinfo-global/America/St_Johns
  432.10 +X-LIC-LOCATION:America/St_Johns
  432.11 +BEGIN:STANDARD
  432.12 +TZOFFSETFROM:-0230
  432.13 +TZOFFSETTO:-0330
  432.14 +TZNAME:NST
  432.15 +DTSTART:20111106T020000
  432.16 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  432.17 +END:STANDARD
  432.18 +BEGIN:DAYLIGHT
  432.19 +TZOFFSETFROM:-0330
  432.20 +TZOFFSETTO:-0230
  432.21 +TZNAME:NDT
  432.22 +DTSTART:20120311T020000
  432.23 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  432.24 +END:DAYLIGHT
  432.25 +BEGIN:STANDARD
  432.26 +TZOFFSETFROM:-033052
  432.27 +TZOFFSETTO:-033052
  432.28 +TZNAME:NST
  432.29 +DTSTART:18840101T000000
  432.30 +RDATE:18840101T000000
  432.31 +RDATE:19180101T000000
  432.32 +RDATE:19190101T000000
  432.33 +END:STANDARD
  432.34 +BEGIN:DAYLIGHT
  432.35 +TZOFFSETFROM:-033052
  432.36 +TZOFFSETTO:-023052
  432.37 +TZNAME:NDT
  432.38 +DTSTART:19170408T020000
  432.39 +RDATE:19170408T020000
  432.40 +RDATE:19180414T020000
  432.41 +RDATE:19190505T230000
  432.42 +RDATE:19200502T230000
  432.43 +RDATE:19210501T230000
  432.44 +RDATE:19220507T230000
  432.45 +RDATE:19230506T230000
  432.46 +RDATE:19240504T230000
  432.47 +RDATE:19250503T230000
  432.48 +RDATE:19260502T230000
  432.49 +RDATE:19270501T230000
  432.50 +RDATE:19280506T230000
  432.51 +RDATE:19290505T230000
  432.52 +RDATE:19300504T230000
  432.53 +RDATE:19310503T230000
  432.54 +RDATE:19320501T230000
  432.55 +RDATE:19330507T230000
  432.56 +RDATE:19340506T230000
  432.57 +END:DAYLIGHT
  432.58 +BEGIN:STANDARD
  432.59 +TZOFFSETFROM:-023052
  432.60 +TZOFFSETTO:-033052
  432.61 +TZNAME:NST
  432.62 +DTSTART:19170917T020000
  432.63 +RDATE:19170917T020000
  432.64 +RDATE:19181031T020000
  432.65 +RDATE:19190812T230000
  432.66 +RDATE:19201031T230000
  432.67 +RDATE:19211030T230000
  432.68 +RDATE:19221029T230000
  432.69 +RDATE:19231028T230000
  432.70 +RDATE:19241026T230000
  432.71 +RDATE:19251025T230000
  432.72 +RDATE:19261031T230000
  432.73 +RDATE:19271030T230000
  432.74 +RDATE:19281028T230000
  432.75 +RDATE:19291027T230000
  432.76 +RDATE:19301026T230000
  432.77 +RDATE:19311025T230000
  432.78 +RDATE:19321030T230000
  432.79 +RDATE:19331029T230000
  432.80 +RDATE:19341028T230000
  432.81 +END:STANDARD
  432.82 +BEGIN:STANDARD
  432.83 +TZOFFSETFROM:-033052
  432.84 +TZOFFSETTO:-0330
  432.85 +TZNAME:NST
  432.86 +DTSTART:19350330T000000
  432.87 +RDATE:19350330T000000
  432.88 +END:STANDARD
  432.89 +BEGIN:DAYLIGHT
  432.90 +TZOFFSETFROM:-0330
  432.91 +TZOFFSETTO:-0230
  432.92 +TZNAME:NDT
  432.93 +DTSTART:19350505T230000
  432.94 +RDATE:19350505T230000
  432.95 +RDATE:19360511T000000
  432.96 +RDATE:19370510T000000
  432.97 +RDATE:19380509T000000
  432.98 +RDATE:19390515T000000
  432.99 +RDATE:19400513T000000
 432.100 +RDATE:19410512T000000
 432.101 +RDATE:19460512T020000
 432.102 +RDATE:19470511T020000
 432.103 +RDATE:19480509T020000
 432.104 +RDATE:19490508T020000
 432.105 +RDATE:19500514T020000
 432.106 +RDATE:19510429T020000
 432.107 +RDATE:19520427T020000
 432.108 +RDATE:19530426T020000
 432.109 +RDATE:19540425T020000
 432.110 +RDATE:19550424T020000
 432.111 +RDATE:19560429T020000
 432.112 +RDATE:19570428T020000
 432.113 +RDATE:19580427T020000
 432.114 +RDATE:19590426T020000
 432.115 +RDATE:19600424T020000
 432.116 +RDATE:19610430T020000
 432.117 +RDATE:19620429T020000
 432.118 +RDATE:19630428T020000
 432.119 +RDATE:19640426T020000
 432.120 +RDATE:19650425T020000
 432.121 +RDATE:19660424T020000
 432.122 +RDATE:19670430T020000
 432.123 +RDATE:19680428T020000
 432.124 +RDATE:19690427T020000
 432.125 +RDATE:19700426T020000
 432.126 +RDATE:19710425T020000
 432.127 +RDATE:19720430T020000
 432.128 +RDATE:19730429T020000
 432.129 +RDATE:19740428T020000
 432.130 +RDATE:19750427T020000
 432.131 +RDATE:19760425T020000
 432.132 +RDATE:19770424T020000
 432.133 +RDATE:19780430T020000
 432.134 +RDATE:19790429T020000
 432.135 +RDATE:19800427T020000
 432.136 +RDATE:19810426T020000
 432.137 +RDATE:19820425T020000
 432.138 +RDATE:19830424T020000
 432.139 +RDATE:19840429T020000
 432.140 +RDATE:19850428T020000
 432.141 +RDATE:19860427T020000
 432.142 +RDATE:19870405T000100
 432.143 +RDATE:19890402T000100
 432.144 +RDATE:19900401T000100
 432.145 +RDATE:19910407T000100
 432.146 +RDATE:19920405T000100
 432.147 +RDATE:19930404T000100
 432.148 +RDATE:19940403T000100
 432.149 +RDATE:19950402T000100
 432.150 +RDATE:19960407T000100
 432.151 +RDATE:19970406T000100
 432.152 +RDATE:19980405T000100
 432.153 +RDATE:19990404T000100
 432.154 +RDATE:20000402T000100
 432.155 +RDATE:20010401T000100
 432.156 +RDATE:20020407T000100
 432.157 +RDATE:20030406T000100
 432.158 +RDATE:20040404T000100
 432.159 +RDATE:20050403T000100
 432.160 +RDATE:20060402T000100
 432.161 +RDATE:20070311T000100
 432.162 +RDATE:20080309T000100
 432.163 +RDATE:20090308T000100
 432.164 +RDATE:20100314T000100
 432.165 +RDATE:20110313T000100
 432.166 +END:DAYLIGHT
 432.167 +BEGIN:STANDARD
 432.168 +TZOFFSETFROM:-0230
 432.169 +TZOFFSETTO:-0330
 432.170 +TZNAME:NST
 432.171 +DTSTART:19351027T230000
 432.172 +RDATE:19351027T230000
 432.173 +RDATE:19361005T000000
 432.174 +RDATE:19371004T000000
 432.175 +RDATE:19381003T000000
 432.176 +RDATE:19391002T000000
 432.177 +RDATE:19401007T000000
 432.178 +RDATE:19411006T000000
 432.179 +RDATE:19450930T020000
 432.180 +RDATE:19461006T020000
 432.181 +RDATE:19471005T020000
 432.182 +RDATE:19481003T020000
 432.183 +RDATE:19491002T020000
 432.184 +RDATE:19501008T020000
 432.185 +RDATE:19510930T020000
 432.186 +RDATE:19520928T020000
 432.187 +RDATE:19530927T020000
 432.188 +RDATE:19540926T020000
 432.189 +RDATE:19550925T020000
 432.190 +RDATE:19560930T020000
 432.191 +RDATE:19570929T020000
 432.192 +RDATE:19580928T020000
 432.193 +RDATE:19590927T020000
 432.194 +RDATE:19601030T020000
 432.195 +RDATE:19611029T020000
 432.196 +RDATE:19621028T020000
 432.197 +RDATE:19631027T020000
 432.198 +RDATE:19641025T020000
 432.199 +RDATE:19651031T020000
 432.200 +RDATE:19661030T020000
 432.201 +RDATE:19671029T020000
 432.202 +RDATE:19681027T020000
 432.203 +RDATE:19691026T020000
 432.204 +RDATE:19701025T020000
 432.205 +RDATE:19711031T020000
 432.206 +RDATE:19721029T020000
 432.207 +RDATE:19731028T020000
 432.208 +RDATE:19741027T020000
 432.209 +RDATE:19751026T020000
 432.210 +RDATE:19761031T020000
 432.211 +RDATE:19771030T020000
 432.212 +RDATE:19781029T020000
 432.213 +RDATE:19791028T020000
 432.214 +RDATE:19801026T020000
 432.215 +RDATE:19811025T020000
 432.216 +RDATE:19821031T020000
 432.217 +RDATE:19831030T020000
 432.218 +RDATE:19841028T020000
 432.219 +RDATE:19851027T020000
 432.220 +RDATE:19861026T020000
 432.221 +RDATE:19871025T000100
 432.222 +RDATE:19891029T000100
 432.223 +RDATE:19901028T000100
 432.224 +RDATE:19911027T000100
 432.225 +RDATE:19921025T000100
 432.226 +RDATE:19931031T000100
 432.227 +RDATE:19941030T000100
 432.228 +RDATE:19951029T000100
 432.229 +RDATE:19961027T000100
 432.230 +RDATE:19971026T000100
 432.231 +RDATE:19981025T000100
 432.232 +RDATE:19991031T000100
 432.233 +RDATE:20001029T000100
 432.234 +RDATE:20011028T000100
 432.235 +RDATE:20021027T000100
 432.236 +RDATE:20031026T000100
 432.237 +RDATE:20041031T000100
 432.238 +RDATE:20051030T000100
 432.239 +RDATE:20061029T000100
 432.240 +RDATE:20071104T000100
 432.241 +RDATE:20081102T000100
 432.242 +RDATE:20091101T000100
 432.243 +RDATE:20101107T000100
 432.244 +END:STANDARD
 432.245 +BEGIN:DAYLIGHT
 432.246 +TZOFFSETFROM:-0330
 432.247 +TZOFFSETTO:-0230
 432.248 +TZNAME:NWT
 432.249 +DTSTART:19420511T000000
 432.250 +RDATE:19420511T000000
 432.251 +END:DAYLIGHT
 432.252 +BEGIN:DAYLIGHT
 432.253 +TZOFFSETFROM:-0230
 432.254 +TZOFFSETTO:-0230
 432.255 +TZNAME:NPT
 432.256 +DTSTART:19450814T203000
 432.257 +RDATE:19450814T203000
 432.258 +END:DAYLIGHT
 432.259 +BEGIN:STANDARD
 432.260 +TZOFFSETFROM:-0330
 432.261 +TZOFFSETTO:-0330
 432.262 +TZNAME:NST
 432.263 +DTSTART:19460101T000000
 432.264 +RDATE:19460101T000000
 432.265 +END:STANDARD
 432.266 +BEGIN:DAYLIGHT
 432.267 +TZOFFSETFROM:-0330
 432.268 +TZOFFSETTO:-0130
 432.269 +TZNAME:NDDT
 432.270 +DTSTART:19880403T000100
 432.271 +RDATE:19880403T000100
 432.272 +END:DAYLIGHT
 432.273 +BEGIN:STANDARD
 432.274 +TZOFFSETFROM:-0130
 432.275 +TZOFFSETTO:-0330
 432.276 +TZNAME:NST
 432.277 +DTSTART:19881030T000100
 432.278 +RDATE:19881030T000100
 432.279 +END:STANDARD
 432.280 +BEGIN:DAYLIGHT
 432.281 +TZOFFSETFROM:-0230
 432.282 +TZOFFSETTO:-0230
 432.283 +TZNAME:NDT
 432.284 +DTSTART:20111101T000000
 432.285 +RDATE:20111101T000000
 432.286 +END:DAYLIGHT
 432.287 +END:VTIMEZONE
 432.288 +END:VCALENDAR
   433.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   433.2 +++ b/src/zoneinfo-global/America/St_Kitts.ics	Tue Feb 10 18:12:00 2015 +0100
   433.3 @@ -0,0 +1,16 @@
   433.4 +BEGIN:VCALENDAR
   433.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   433.6 +VERSION:2.0
   433.7 +BEGIN:VTIMEZONE
   433.8 +TZID:America/St_Kitts
   433.9 +TZURL:http://tzurl.org/zoneinfo-global/America/St_Kitts
  433.10 +X-LIC-LOCATION:America/St_Kitts
  433.11 +BEGIN:STANDARD
  433.12 +TZOFFSETFROM:-041052
  433.13 +TZOFFSETTO:-0400
  433.14 +TZNAME:AST
  433.15 +DTSTART:19120302T000000
  433.16 +RDATE:19120302T000000
  433.17 +END:STANDARD
  433.18 +END:VTIMEZONE
  433.19 +END:VCALENDAR
   434.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   434.2 +++ b/src/zoneinfo-global/America/St_Lucia.ics	Tue Feb 10 18:12:00 2015 +0100
   434.3 @@ -0,0 +1,23 @@
   434.4 +BEGIN:VCALENDAR
   434.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   434.6 +VERSION:2.0
   434.7 +BEGIN:VTIMEZONE
   434.8 +TZID:America/St_Lucia
   434.9 +TZURL:http://tzurl.org/zoneinfo-global/America/St_Lucia
  434.10 +X-LIC-LOCATION:America/St_Lucia
  434.11 +BEGIN:STANDARD
  434.12 +TZOFFSETFROM:-0404
  434.13 +TZOFFSETTO:-0404
  434.14 +TZNAME:CMT
  434.15 +DTSTART:18900101T000000
  434.16 +RDATE:18900101T000000
  434.17 +END:STANDARD
  434.18 +BEGIN:STANDARD
  434.19 +TZOFFSETFROM:-0404
  434.20 +TZOFFSETTO:-0400
  434.21 +TZNAME:AST
  434.22 +DTSTART:19120101T000000
  434.23 +RDATE:19120101T000000
  434.24 +END:STANDARD
  434.25 +END:VTIMEZONE
  434.26 +END:VCALENDAR
   435.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   435.2 +++ b/src/zoneinfo-global/America/St_Thomas.ics	Tue Feb 10 18:12:00 2015 +0100
   435.3 @@ -0,0 +1,16 @@
   435.4 +BEGIN:VCALENDAR
   435.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   435.6 +VERSION:2.0
   435.7 +BEGIN:VTIMEZONE
   435.8 +TZID:America/St_Thomas
   435.9 +TZURL:http://tzurl.org/zoneinfo-global/America/St_Thomas
  435.10 +X-LIC-LOCATION:America/St_Thomas
  435.11 +BEGIN:STANDARD
  435.12 +TZOFFSETFROM:-041944
  435.13 +TZOFFSETTO:-0400
  435.14 +TZNAME:AST
  435.15 +DTSTART:19110701T000000
  435.16 +RDATE:19110701T000000
  435.17 +END:STANDARD
  435.18 +END:VTIMEZONE
  435.19 +END:VCALENDAR
   436.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   436.2 +++ b/src/zoneinfo-global/America/St_Vincent.ics	Tue Feb 10 18:12:00 2015 +0100
   436.3 @@ -0,0 +1,23 @@
   436.4 +BEGIN:VCALENDAR
   436.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   436.6 +VERSION:2.0
   436.7 +BEGIN:VTIMEZONE
   436.8 +TZID:America/St_Vincent
   436.9 +TZURL:http://tzurl.org/zoneinfo-global/America/St_Vincent
  436.10 +X-LIC-LOCATION:America/St_Vincent
  436.11 +BEGIN:STANDARD
  436.12 +TZOFFSETFROM:-040456
  436.13 +TZOFFSETTO:-040456
  436.14 +TZNAME:KMT
  436.15 +DTSTART:18900101T000000
  436.16 +RDATE:18900101T000000
  436.17 +END:STANDARD
  436.18 +BEGIN:STANDARD
  436.19 +TZOFFSETFROM:-040456
  436.20 +TZOFFSETTO:-0400
  436.21 +TZNAME:AST
  436.22 +DTSTART:19120101T000000
  436.23 +RDATE:19120101T000000
  436.24 +END:STANDARD
  436.25 +END:VTIMEZONE
  436.26 +END:VCALENDAR
   437.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   437.2 +++ b/src/zoneinfo-global/America/Swift_Current.ics	Tue Feb 10 18:12:00 2015 +0100
   437.3 @@ -0,0 +1,75 @@
   437.4 +BEGIN:VCALENDAR
   437.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   437.6 +VERSION:2.0
   437.7 +BEGIN:VTIMEZONE
   437.8 +TZID:America/Swift_Current
   437.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Swift_Current
  437.10 +X-LIC-LOCATION:America/Swift_Current
  437.11 +BEGIN:STANDARD
  437.12 +TZOFFSETFROM:-071120
  437.13 +TZOFFSETTO:-0700
  437.14 +TZNAME:MST
  437.15 +DTSTART:19050901T000000
  437.16 +RDATE:19050901T000000
  437.17 +END:STANDARD
  437.18 +BEGIN:DAYLIGHT
  437.19 +TZOFFSETFROM:-0700
  437.20 +TZOFFSETTO:-0600
  437.21 +TZNAME:MDT
  437.22 +DTSTART:19180414T020000
  437.23 +RDATE:19180414T020000
  437.24 +RDATE:19460428T020000
  437.25 +RDATE:19470427T020000
  437.26 +RDATE:19480425T020000
  437.27 +RDATE:19490424T020000
  437.28 +RDATE:19570428T020000
  437.29 +RDATE:19590426T020000
  437.30 +RDATE:19600424T020000
  437.31 +RDATE:19610430T020000
  437.32 +END:DAYLIGHT
  437.33 +BEGIN:STANDARD
  437.34 +TZOFFSETFROM:-0600
  437.35 +TZOFFSETTO:-0700
  437.36 +TZNAME:MST
  437.37 +DTSTART:19181031T020000
  437.38 +RDATE:19181031T020000
  437.39 +RDATE:19450930T020000
  437.40 +RDATE:19461013T020000
  437.41 +RDATE:19470928T020000
  437.42 +RDATE:19480926T020000
  437.43 +RDATE:19490925T020000
  437.44 +RDATE:19571027T020000
  437.45 +RDATE:19591025T020000
  437.46 +RDATE:19600925T020000
  437.47 +RDATE:19610924T020000
  437.48 +END:STANDARD
  437.49 +BEGIN:DAYLIGHT
  437.50 +TZOFFSETFROM:-0700
  437.51 +TZOFFSETTO:-0600
  437.52 +TZNAME:MWT
  437.53 +DTSTART:19420209T020000
  437.54 +RDATE:19420209T020000
  437.55 +END:DAYLIGHT
  437.56 +BEGIN:DAYLIGHT
  437.57 +TZOFFSETFROM:-0600
  437.58 +TZOFFSETTO:-0600
  437.59 +TZNAME:MPT
  437.60 +DTSTART:19450814T170000
  437.61 +RDATE:19450814T170000
  437.62 +END:DAYLIGHT
  437.63 +BEGIN:STANDARD
  437.64 +TZOFFSETFROM:-0700
  437.65 +TZOFFSETTO:-0700
  437.66 +TZNAME:MST
  437.67 +DTSTART:19500101T000000
  437.68 +RDATE:19500101T000000
  437.69 +END:STANDARD
  437.70 +BEGIN:STANDARD
  437.71 +TZOFFSETFROM:-0700
  437.72 +TZOFFSETTO:-0600
  437.73 +TZNAME:CST
  437.74 +DTSTART:19720430T020000
  437.75 +RDATE:19720430T020000
  437.76 +END:STANDARD
  437.77 +END:VTIMEZONE
  437.78 +END:VCALENDAR
   438.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   438.2 +++ b/src/zoneinfo-global/America/Tegucigalpa.ics	Tue Feb 10 18:12:00 2015 +0100
   438.3 @@ -0,0 +1,34 @@
   438.4 +BEGIN:VCALENDAR
   438.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   438.6 +VERSION:2.0
   438.7 +BEGIN:VTIMEZONE
   438.8 +TZID:America/Tegucigalpa
   438.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Tegucigalpa
  438.10 +X-LIC-LOCATION:America/Tegucigalpa
  438.11 +BEGIN:STANDARD
  438.12 +TZOFFSETFROM:-054852
  438.13 +TZOFFSETTO:-0600
  438.14 +TZNAME:CST
  438.15 +DTSTART:19210401T000000
  438.16 +RDATE:19210401T000000
  438.17 +END:STANDARD
  438.18 +BEGIN:DAYLIGHT
  438.19 +TZOFFSETFROM:-0600
  438.20 +TZOFFSETTO:-0500
  438.21 +TZNAME:CDT
  438.22 +DTSTART:19870503T000000
  438.23 +RDATE:19870503T000000
  438.24 +RDATE:19880501T000000
  438.25 +RDATE:20060507T000000
  438.26 +END:DAYLIGHT
  438.27 +BEGIN:STANDARD
  438.28 +TZOFFSETFROM:-0500
  438.29 +TZOFFSETTO:-0600
  438.30 +TZNAME:CST
  438.31 +DTSTART:19870927T000000
  438.32 +RDATE:19870927T000000
  438.33 +RDATE:19880925T000000
  438.34 +RDATE:20060807T000000
  438.35 +END:STANDARD
  438.36 +END:VTIMEZONE
  438.37 +END:VCALENDAR
   439.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   439.2 +++ b/src/zoneinfo-global/America/Thule.ics	Tue Feb 10 18:12:00 2015 +0100
   439.3 @@ -0,0 +1,74 @@
   439.4 +BEGIN:VCALENDAR
   439.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   439.6 +VERSION:2.0
   439.7 +BEGIN:VTIMEZONE
   439.8 +TZID:America/Thule
   439.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Thule
  439.10 +X-LIC-LOCATION:America/Thule
  439.11 +BEGIN:DAYLIGHT
  439.12 +TZOFFSETFROM:-0400
  439.13 +TZOFFSETTO:-0300
  439.14 +TZNAME:ADT
  439.15 +DTSTART:20070311T020000
  439.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  439.17 +END:DAYLIGHT
  439.18 +BEGIN:STANDARD
  439.19 +TZOFFSETFROM:-0300
  439.20 +TZOFFSETTO:-0400
  439.21 +TZNAME:AST
  439.22 +DTSTART:20071104T020000
  439.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  439.24 +END:STANDARD
  439.25 +BEGIN:STANDARD
  439.26 +TZOFFSETFROM:-043508
  439.27 +TZOFFSETTO:-0400
  439.28 +TZNAME:AST
  439.29 +DTSTART:19160728T000000
  439.30 +RDATE:19160728T000000
  439.31 +END:STANDARD
  439.32 +BEGIN:DAYLIGHT
  439.33 +TZOFFSETFROM:-0400
  439.34 +TZOFFSETTO:-0300
  439.35 +TZNAME:ADT
  439.36 +DTSTART:19910331T020000
  439.37 +RDATE:19910331T020000
  439.38 +RDATE:19920329T020000
  439.39 +RDATE:19930404T020000
  439.40 +RDATE:19940403T020000
  439.41 +RDATE:19950402T020000
  439.42 +RDATE:19960407T020000
  439.43 +RDATE:19970406T020000
  439.44 +RDATE:19980405T020000
  439.45 +RDATE:19990404T020000
  439.46 +RDATE:20000402T020000
  439.47 +RDATE:20010401T020000
  439.48 +RDATE:20020407T020000
  439.49 +RDATE:20030406T020000
  439.50 +RDATE:20040404T020000
  439.51 +RDATE:20050403T020000
  439.52 +RDATE:20060402T020000
  439.53 +END:DAYLIGHT
  439.54 +BEGIN:STANDARD
  439.55 +TZOFFSETFROM:-0300
  439.56 +TZOFFSETTO:-0400
  439.57 +TZNAME:AST
  439.58 +DTSTART:19910929T020000
  439.59 +RDATE:19910929T020000
  439.60 +RDATE:19920927T020000
  439.61 +RDATE:19931031T020000
  439.62 +RDATE:19941030T020000
  439.63 +RDATE:19951029T020000
  439.64 +RDATE:19961027T020000
  439.65 +RDATE:19971026T020000
  439.66 +RDATE:19981025T020000
  439.67 +RDATE:19991031T020000
  439.68 +RDATE:20001029T020000
  439.69 +RDATE:20011028T020000
  439.70 +RDATE:20021027T020000
  439.71 +RDATE:20031026T020000
  439.72 +RDATE:20041031T020000
  439.73 +RDATE:20051030T020000
  439.74 +RDATE:20061029T020000
  439.75 +END:STANDARD
  439.76 +END:VTIMEZONE
  439.77 +END:VCALENDAR
   440.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   440.2 +++ b/src/zoneinfo-global/America/Thunder_Bay.ics	Tue Feb 10 18:12:00 2015 +0100
   440.3 @@ -0,0 +1,146 @@
   440.4 +BEGIN:VCALENDAR
   440.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   440.6 +VERSION:2.0
   440.7 +BEGIN:VTIMEZONE
   440.8 +TZID:America/Thunder_Bay
   440.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Thunder_Bay
  440.10 +X-LIC-LOCATION:America/Thunder_Bay
  440.11 +BEGIN:DAYLIGHT
  440.12 +TZOFFSETFROM:-0500
  440.13 +TZOFFSETTO:-0400
  440.14 +TZNAME:EDT
  440.15 +DTSTART:20070311T020000
  440.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  440.17 +END:DAYLIGHT
  440.18 +BEGIN:STANDARD
  440.19 +TZOFFSETFROM:-0400
  440.20 +TZOFFSETTO:-0500
  440.21 +TZNAME:EST
  440.22 +DTSTART:20071104T020000
  440.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  440.24 +END:STANDARD
  440.25 +BEGIN:STANDARD
  440.26 +TZOFFSETFROM:-0557
  440.27 +TZOFFSETTO:-0600
  440.28 +TZNAME:CST
  440.29 +DTSTART:18950101T000000
  440.30 +RDATE:18950101T000000
  440.31 +END:STANDARD
  440.32 +BEGIN:STANDARD
  440.33 +TZOFFSETFROM:-0600
  440.34 +TZOFFSETTO:-0500
  440.35 +TZNAME:EST
  440.36 +DTSTART:19100101T000000
  440.37 +RDATE:19100101T000000
  440.38 +END:STANDARD
  440.39 +BEGIN:STANDARD
  440.40 +TZOFFSETFROM:-0500
  440.41 +TZOFFSETTO:-0500
  440.42 +TZNAME:EST
  440.43 +DTSTART:19420101T000000
  440.44 +RDATE:19420101T000000
  440.45 +RDATE:19700101T000000
  440.46 +RDATE:19730101T000000
  440.47 +RDATE:19740101T000000
  440.48 +END:STANDARD
  440.49 +BEGIN:DAYLIGHT
  440.50 +TZOFFSETFROM:-0500
  440.51 +TZOFFSETTO:-0400
  440.52 +TZNAME:EWT
  440.53 +DTSTART:19420209T020000
  440.54 +RDATE:19420209T020000
  440.55 +END:DAYLIGHT
  440.56 +BEGIN:DAYLIGHT
  440.57 +TZOFFSETFROM:-0400
  440.58 +TZOFFSETTO:-0400
  440.59 +TZNAME:EPT
  440.60 +DTSTART:19450814T190000
  440.61 +RDATE:19450814T190000
  440.62 +END:DAYLIGHT
  440.63 +BEGIN:STANDARD
  440.64 +TZOFFSETFROM:-0400
  440.65 +TZOFFSETTO:-0500
  440.66 +TZNAME:EST
  440.67 +DTSTART:19450930T020000
  440.68 +RDATE:19450930T020000
  440.69 +RDATE:19701025T020000
  440.70 +RDATE:19711031T020000
  440.71 +RDATE:19721029T020000
  440.72 +RDATE:19741027T020000
  440.73 +RDATE:19751026T020000
  440.74 +RDATE:19761031T020000
  440.75 +RDATE:19771030T020000
  440.76 +RDATE:19781029T020000
  440.77 +RDATE:19791028T020000
  440.78 +RDATE:19801026T020000
  440.79 +RDATE:19811025T020000
  440.80 +RDATE:19821031T020000
  440.81 +RDATE:19831030T020000
  440.82 +RDATE:19841028T020000
  440.83 +RDATE:19851027T020000
  440.84 +RDATE:19861026T020000
  440.85 +RDATE:19871025T020000
  440.86 +RDATE:19881030T020000
  440.87 +RDATE:19891029T020000
  440.88 +RDATE:19901028T020000
  440.89 +RDATE:19911027T020000
  440.90 +RDATE:19921025T020000
  440.91 +RDATE:19931031T020000
  440.92 +RDATE:19941030T020000
  440.93 +RDATE:19951029T020000
  440.94 +RDATE:19961027T020000
  440.95 +RDATE:19971026T020000
  440.96 +RDATE:19981025T020000
  440.97 +RDATE:19991031T020000
  440.98 +RDATE:20001029T020000
  440.99 +RDATE:20011028T020000
 440.100 +RDATE:20021027T020000
 440.101 +RDATE:20031026T020000
 440.102 +RDATE:20041031T020000
 440.103 +RDATE:20051030T020000
 440.104 +RDATE:20061029T020000
 440.105 +END:STANDARD
 440.106 +BEGIN:DAYLIGHT
 440.107 +TZOFFSETFROM:-0500
 440.108 +TZOFFSETTO:-0400
 440.109 +TZNAME:EDT
 440.110 +DTSTART:19700426T020000
 440.111 +RDATE:19700426T020000
 440.112 +RDATE:19710425T020000
 440.113 +RDATE:19720430T020000
 440.114 +RDATE:19740428T020000
 440.115 +RDATE:19750427T020000
 440.116 +RDATE:19760425T020000
 440.117 +RDATE:19770424T020000
 440.118 +RDATE:19780430T020000
 440.119 +RDATE:19790429T020000
 440.120 +RDATE:19800427T020000
 440.121 +RDATE:19810426T020000
 440.122 +RDATE:19820425T020000
 440.123 +RDATE:19830424T020000
 440.124 +RDATE:19840429T020000
 440.125 +RDATE:19850428T020000
 440.126 +RDATE:19860427T020000
 440.127 +RDATE:19870405T020000
 440.128 +RDATE:19880403T020000
 440.129 +RDATE:19890402T020000
 440.130 +RDATE:19900401T020000
 440.131 +RDATE:19910407T020000
 440.132 +RDATE:19920405T020000
 440.133 +RDATE:19930404T020000
 440.134 +RDATE:19940403T020000
 440.135 +RDATE:19950402T020000
 440.136 +RDATE:19960407T020000
 440.137 +RDATE:19970406T020000
 440.138 +RDATE:19980405T020000
 440.139 +RDATE:19990404T020000
 440.140 +RDATE:20000402T020000
 440.141 +RDATE:20010401T020000
 440.142 +RDATE:20020407T020000
 440.143 +RDATE:20030406T020000
 440.144 +RDATE:20040404T020000
 440.145 +RDATE:20050403T020000
 440.146 +RDATE:20060402T020000
 440.147 +END:DAYLIGHT
 440.148 +END:VTIMEZONE
 440.149 +END:VCALENDAR
   441.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   441.2 +++ b/src/zoneinfo-global/America/Tijuana.ics	Tue Feb 10 18:12:00 2015 +0100
   441.3 @@ -0,0 +1,165 @@
   441.4 +BEGIN:VCALENDAR
   441.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   441.6 +VERSION:2.0
   441.7 +BEGIN:VTIMEZONE
   441.8 +TZID:America/Tijuana
   441.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Tijuana
  441.10 +X-LIC-LOCATION:America/Tijuana
  441.11 +BEGIN:DAYLIGHT
  441.12 +TZOFFSETFROM:-0800
  441.13 +TZOFFSETTO:-0700
  441.14 +TZNAME:PDT
  441.15 +DTSTART:20100314T020000
  441.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  441.17 +END:DAYLIGHT
  441.18 +BEGIN:STANDARD
  441.19 +TZOFFSETFROM:-0700
  441.20 +TZOFFSETTO:-0800
  441.21 +TZNAME:PST
  441.22 +DTSTART:20101107T020000
  441.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  441.24 +END:STANDARD
  441.25 +BEGIN:STANDARD
  441.26 +TZOFFSETFROM:-074804
  441.27 +TZOFFSETTO:-0700
  441.28 +TZNAME:MST
  441.29 +DTSTART:19220101T001156
  441.30 +RDATE:19220101T001156
  441.31 +END:STANDARD
  441.32 +BEGIN:STANDARD
  441.33 +TZOFFSETFROM:-0700
  441.34 +TZOFFSETTO:-0800
  441.35 +TZNAME:PST
  441.36 +DTSTART:19240101T000000
  441.37 +RDATE:19240101T000000
  441.38 +RDATE:19301115T000000
  441.39 +RDATE:19310930T000000
  441.40 +RDATE:19451112T000000
  441.41 +RDATE:19490114T000000
  441.42 +RDATE:19540926T020000
  441.43 +RDATE:19550925T020000
  441.44 +RDATE:19560930T020000
  441.45 +RDATE:19570929T020000
  441.46 +RDATE:19580928T020000
  441.47 +RDATE:19590927T020000
  441.48 +RDATE:19600925T020000
  441.49 +RDATE:19761031T020000
  441.50 +RDATE:19771030T020000
  441.51 +RDATE:19781029T020000
  441.52 +RDATE:19791028T020000
  441.53 +RDATE:19801026T020000
  441.54 +RDATE:19811025T020000
  441.55 +RDATE:19821031T020000
  441.56 +RDATE:19831030T020000
  441.57 +RDATE:19841028T020000
  441.58 +RDATE:19851027T020000
  441.59 +RDATE:19861026T020000
  441.60 +RDATE:19871025T020000
  441.61 +RDATE:19881030T020000
  441.62 +RDATE:19891029T020000
  441.63 +RDATE:19901028T020000
  441.64 +RDATE:19911027T020000
  441.65 +RDATE:19921025T020000
  441.66 +RDATE:19931031T020000
  441.67 +RDATE:19941030T020000
  441.68 +RDATE:19951029T020000
  441.69 +RDATE:19961027T020000
  441.70 +RDATE:19971026T020000
  441.71 +RDATE:19981025T020000
  441.72 +RDATE:19991031T020000
  441.73 +RDATE:20001029T020000
  441.74 +RDATE:20011028T020000
  441.75 +RDATE:20021027T020000
  441.76 +RDATE:20031026T020000
  441.77 +RDATE:20041031T020000
  441.78 +RDATE:20051030T020000
  441.79 +RDATE:20061029T020000
  441.80 +RDATE:20071028T020000
  441.81 +RDATE:20081026T020000
  441.82 +RDATE:20091025T020000
  441.83 +END:STANDARD
  441.84 +BEGIN:STANDARD
  441.85 +TZOFFSETFROM:-0800
  441.86 +TZOFFSETTO:-0700
  441.87 +TZNAME:MST
  441.88 +DTSTART:19270610T230000
  441.89 +RDATE:19270610T230000
  441.90 +END:STANDARD
  441.91 +BEGIN:DAYLIGHT
  441.92 +TZOFFSETFROM:-0800
  441.93 +TZOFFSETTO:-0700
  441.94 +TZNAME:PDT
  441.95 +DTSTART:19310401T000000
  441.96 +RDATE:19310401T000000
  441.97 +RDATE:19480405T000000
  441.98 +RDATE:19540425T020000
  441.99 +RDATE:19550424T020000
 441.100 +RDATE:19560429T020000
 441.101 +RDATE:19570428T020000
 441.102 +RDATE:19580427T020000
 441.103 +RDATE:19590426T020000
 441.104 +RDATE:19600424T020000
 441.105 +RDATE:19760425T020000
 441.106 +RDATE:19770424T020000
 441.107 +RDATE:19780430T020000
 441.108 +RDATE:19790429T020000
 441.109 +RDATE:19800427T020000
 441.110 +RDATE:19810426T020000
 441.111 +RDATE:19820425T020000
 441.112 +RDATE:19830424T020000
 441.113 +RDATE:19840429T020000
 441.114 +RDATE:19850428T020000
 441.115 +RDATE:19860427T020000
 441.116 +RDATE:19870405T020000
 441.117 +RDATE:19880403T020000
 441.118 +RDATE:19890402T020000
 441.119 +RDATE:19900401T020000
 441.120 +RDATE:19910407T020000
 441.121 +RDATE:19920405T020000
 441.122 +RDATE:19930404T020000
 441.123 +RDATE:19940403T020000
 441.124 +RDATE:19950402T020000
 441.125 +RDATE:19960407T020000
 441.126 +RDATE:19970406T020000
 441.127 +RDATE:19980405T020000
 441.128 +RDATE:19990404T020000
 441.129 +RDATE:20000402T020000
 441.130 +RDATE:20010401T020000
 441.131 +RDATE:20020407T020000
 441.132 +RDATE:20030406T020000
 441.133 +RDATE:20040404T020000
 441.134 +RDATE:20050403T020000
 441.135 +RDATE:20060402T020000
 441.136 +RDATE:20070401T020000
 441.137 +RDATE:20080406T020000
 441.138 +RDATE:20090405T020000
 441.139 +END:DAYLIGHT
 441.140 +BEGIN:DAYLIGHT
 441.141 +TZOFFSETFROM:-0800
 441.142 +TZOFFSETTO:-0700
 441.143 +TZNAME:PWT
 441.144 +DTSTART:19420424T000000
 441.145 +RDATE:19420424T000000
 441.146 +END:DAYLIGHT
 441.147 +BEGIN:DAYLIGHT
 441.148 +TZOFFSETFROM:-0700
 441.149 +TZOFFSETTO:-0700
 441.150 +TZNAME:PPT
 441.151 +DTSTART:19450814T160000
 441.152 +RDATE:19450814T160000
 441.153 +END:DAYLIGHT
 441.154 +BEGIN:STANDARD
 441.155 +TZOFFSETFROM:-0800
 441.156 +TZOFFSETTO:-0800
 441.157 +TZNAME:PST
 441.158 +DTSTART:19540101T000000
 441.159 +RDATE:19540101T000000
 441.160 +RDATE:19610101T000000
 441.161 +RDATE:19760101T000000
 441.162 +RDATE:19960101T000000
 441.163 +RDATE:20010101T000000
 441.164 +RDATE:20020220T000000
 441.165 +RDATE:20100101T000000
 441.166 +END:STANDARD
 441.167 +END:VTIMEZONE
 441.168 +END:VCALENDAR
   442.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   442.2 +++ b/src/zoneinfo-global/America/Toronto.ics	Tue Feb 10 18:12:00 2015 +0100
   442.3 @@ -0,0 +1,233 @@
   442.4 +BEGIN:VCALENDAR
   442.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   442.6 +VERSION:2.0
   442.7 +BEGIN:VTIMEZONE
   442.8 +TZID:America/Toronto
   442.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Toronto
  442.10 +X-LIC-LOCATION:America/Toronto
  442.11 +BEGIN:DAYLIGHT
  442.12 +TZOFFSETFROM:-0500
  442.13 +TZOFFSETTO:-0400
  442.14 +TZNAME:EDT
  442.15 +DTSTART:20070311T020000
  442.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  442.17 +END:DAYLIGHT
  442.18 +BEGIN:STANDARD
  442.19 +TZOFFSETFROM:-0400
  442.20 +TZOFFSETTO:-0500
  442.21 +TZNAME:EST
  442.22 +DTSTART:20071104T020000
  442.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  442.24 +END:STANDARD
  442.25 +BEGIN:STANDARD
  442.26 +TZOFFSETFROM:-051732
  442.27 +TZOFFSETTO:-0500
  442.28 +TZNAME:EST
  442.29 +DTSTART:18950101T000000
  442.30 +RDATE:18950101T000000
  442.31 +END:STANDARD
  442.32 +BEGIN:DAYLIGHT
  442.33 +TZOFFSETFROM:-0500
  442.34 +TZOFFSETTO:-0400
  442.35 +TZNAME:EDT
  442.36 +DTSTART:19180414T020000
  442.37 +RDATE:19180414T020000
  442.38 +RDATE:19190330T233000
  442.39 +RDATE:19200502T020000
  442.40 +RDATE:19210515T020000
  442.41 +RDATE:19220514T020000
  442.42 +RDATE:19230513T020000
  442.43 +RDATE:19240504T020000
  442.44 +RDATE:19250503T020000
  442.45 +RDATE:19260502T020000
  442.46 +RDATE:19270501T020000
  442.47 +RDATE:19280429T020000
  442.48 +RDATE:19290428T020000
  442.49 +RDATE:19300427T020000
  442.50 +RDATE:19310426T020000
  442.51 +RDATE:19320501T020000
  442.52 +RDATE:19330430T020000
  442.53 +RDATE:19340429T020000
  442.54 +RDATE:19350428T020000
  442.55 +RDATE:19360426T020000
  442.56 +RDATE:19370425T020000
  442.57 +RDATE:19380424T020000
  442.58 +RDATE:19390430T020000
  442.59 +RDATE:19400428T020000
  442.60 +RDATE:19460428T020000
  442.61 +RDATE:19470427T000000
  442.62 +RDATE:19480425T000000
  442.63 +RDATE:19490424T000000
  442.64 +RDATE:19500430T020000
  442.65 +RDATE:19510429T020000
  442.66 +RDATE:19520427T020000
  442.67 +RDATE:19530426T020000
  442.68 +RDATE:19540425T020000
  442.69 +RDATE:19550424T020000
  442.70 +RDATE:19560429T020000
  442.71 +RDATE:19570428T020000
  442.72 +RDATE:19580427T020000
  442.73 +RDATE:19590426T020000
  442.74 +RDATE:19600424T020000
  442.75 +RDATE:19610430T020000
  442.76 +RDATE:19620429T020000
  442.77 +RDATE:19630428T020000
  442.78 +RDATE:19640426T020000
  442.79 +RDATE:19650425T020000
  442.80 +RDATE:19660424T020000
  442.81 +RDATE:19670430T020000
  442.82 +RDATE:19680428T020000
  442.83 +RDATE:19690427T020000
  442.84 +RDATE:19700426T020000
  442.85 +RDATE:19710425T020000
  442.86 +RDATE:19720430T020000
  442.87 +RDATE:19730429T020000
  442.88 +RDATE:19740428T020000
  442.89 +RDATE:19750427T020000
  442.90 +RDATE:19760425T020000
  442.91 +RDATE:19770424T020000
  442.92 +RDATE:19780430T020000
  442.93 +RDATE:19790429T020000
  442.94 +RDATE:19800427T020000
  442.95 +RDATE:19810426T020000
  442.96 +RDATE:19820425T020000
  442.97 +RDATE:19830424T020000
  442.98 +RDATE:19840429T020000
  442.99 +RDATE:19850428T020000
 442.100 +RDATE:19860427T020000
 442.101 +RDATE:19870405T020000
 442.102 +RDATE:19880403T020000
 442.103 +RDATE:19890402T020000
 442.104 +RDATE:19900401T020000
 442.105 +RDATE:19910407T020000
 442.106 +RDATE:19920405T020000
 442.107 +RDATE:19930404T020000
 442.108 +RDATE:19940403T020000
 442.109 +RDATE:19950402T020000
 442.110 +RDATE:19960407T020000
 442.111 +RDATE:19970406T020000
 442.112 +RDATE:19980405T020000
 442.113 +RDATE:19990404T020000
 442.114 +RDATE:20000402T020000
 442.115 +RDATE:20010401T020000
 442.116 +RDATE:20020407T020000
 442.117 +RDATE:20030406T020000
 442.118 +RDATE:20040404T020000
 442.119 +RDATE:20050403T020000
 442.120 +RDATE:20060402T020000
 442.121 +END:DAYLIGHT
 442.122 +BEGIN:STANDARD
 442.123 +TZOFFSETFROM:-0400
 442.124 +TZOFFSETTO:-0500
 442.125 +TZNAME:EST
 442.126 +DTSTART:19181031T020000
 442.127 +RDATE:19181031T020000
 442.128 +RDATE:19191026T000000
 442.129 +RDATE:19200926T000000
 442.130 +RDATE:19210915T020000
 442.131 +RDATE:19220917T020000
 442.132 +RDATE:19230916T020000
 442.133 +RDATE:19240921T020000
 442.134 +RDATE:19250920T020000
 442.135 +RDATE:19260919T020000
 442.136 +RDATE:19270925T020000
 442.137 +RDATE:19280930T020000
 442.138 +RDATE:19290929T020000
 442.139 +RDATE:19300928T020000
 442.140 +RDATE:19310927T020000
 442.141 +RDATE:19320925T020000
 442.142 +RDATE:19331001T020000
 442.143 +RDATE:19340930T020000
 442.144 +RDATE:19350929T020000
 442.145 +RDATE:19360927T020000
 442.146 +RDATE:19370926T020000
 442.147 +RDATE:19380925T020000
 442.148 +RDATE:19390924T020000
 442.149 +RDATE:19450930T020000
 442.150 +RDATE:19460929T020000
 442.151 +RDATE:19470928T000000
 442.152 +RDATE:19480926T000000
 442.153 +RDATE:19491127T000000
 442.154 +RDATE:19501126T020000
 442.155 +RDATE:19510930T020000
 442.156 +RDATE:19520928T020000
 442.157 +RDATE:19530927T020000
 442.158 +RDATE:19540926T020000
 442.159 +RDATE:19550925T020000
 442.160 +RDATE:19560930T020000
 442.161 +RDATE:19571027T020000
 442.162 +RDATE:19581026T020000
 442.163 +RDATE:19591025T020000
 442.164 +RDATE:19601030T020000
 442.165 +RDATE:19611029T020000
 442.166 +RDATE:19621028T020000
 442.167 +RDATE:19631027T020000
 442.168 +RDATE:19641025T020000
 442.169 +RDATE:19651031T020000
 442.170 +RDATE:19661030T020000
 442.171 +RDATE:19671029T020000
 442.172 +RDATE:19681027T020000
 442.173 +RDATE:19691026T020000
 442.174 +RDATE:19701025T020000
 442.175 +RDATE:19711031T020000
 442.176 +RDATE:19721029T020000
 442.177 +RDATE:19731028T020000
 442.178 +RDATE:19741027T020000
 442.179 +RDATE:19751026T020000
 442.180 +RDATE:19761031T020000
 442.181 +RDATE:19771030T020000
 442.182 +RDATE:19781029T020000
 442.183 +RDATE:19791028T020000
 442.184 +RDATE:19801026T020000
 442.185 +RDATE:19811025T020000
 442.186 +RDATE:19821031T020000
 442.187 +RDATE:19831030T020000
 442.188 +RDATE:19841028T020000
 442.189 +RDATE:19851027T020000
 442.190 +RDATE:19861026T020000
 442.191 +RDATE:19871025T020000
 442.192 +RDATE:19881030T020000
 442.193 +RDATE:19891029T020000
 442.194 +RDATE:19901028T020000
 442.195 +RDATE:19911027T020000
 442.196 +RDATE:19921025T020000
 442.197 +RDATE:19931031T020000
 442.198 +RDATE:19941030T020000
 442.199 +RDATE:19951029T020000
 442.200 +RDATE:19961027T020000
 442.201 +RDATE:19971026T020000
 442.202 +RDATE:19981025T020000
 442.203 +RDATE:19991031T020000
 442.204 +RDATE:20001029T020000
 442.205 +RDATE:20011028T020000
 442.206 +RDATE:20021027T020000
 442.207 +RDATE:20031026T020000
 442.208 +RDATE:20041031T020000
 442.209 +RDATE:20051030T020000
 442.210 +RDATE:20061029T020000
 442.211 +END:STANDARD
 442.212 +BEGIN:STANDARD
 442.213 +TZOFFSETFROM:-0500
 442.214 +TZOFFSETTO:-0500
 442.215 +TZNAME:EST
 442.216 +DTSTART:19190101T000000
 442.217 +RDATE:19190101T000000
 442.218 +RDATE:19460101T000000
 442.219 +RDATE:19740101T000000
 442.220 +END:STANDARD
 442.221 +BEGIN:DAYLIGHT
 442.222 +TZOFFSETFROM:-0400
 442.223 +TZOFFSETTO:-0400
 442.224 +TZNAME:EWT
 442.225 +DTSTART:19420209T020000
 442.226 +RDATE:19420209T020000
 442.227 +END:DAYLIGHT
 442.228 +BEGIN:DAYLIGHT
 442.229 +TZOFFSETFROM:-0400
 442.230 +TZOFFSETTO:-0400
 442.231 +TZNAME:EPT
 442.232 +DTSTART:19450814T190000
 442.233 +RDATE:19450814T190000
 442.234 +END:DAYLIGHT
 442.235 +END:VTIMEZONE
 442.236 +END:VCALENDAR
   443.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   443.2 +++ b/src/zoneinfo-global/America/Tortola.ics	Tue Feb 10 18:12:00 2015 +0100
   443.3 @@ -0,0 +1,16 @@
   443.4 +BEGIN:VCALENDAR
   443.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   443.6 +VERSION:2.0
   443.7 +BEGIN:VTIMEZONE
   443.8 +TZID:America/Tortola
   443.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Tortola
  443.10 +X-LIC-LOCATION:America/Tortola
  443.11 +BEGIN:STANDARD
  443.12 +TZOFFSETFROM:-041828
  443.13 +TZOFFSETTO:-0400
  443.14 +TZNAME:AST
  443.15 +DTSTART:19110701T000000
  443.16 +RDATE:19110701T000000
  443.17 +END:STANDARD
  443.18 +END:VTIMEZONE
  443.19 +END:VCALENDAR
   444.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   444.2 +++ b/src/zoneinfo-global/America/Vancouver.ics	Tue Feb 10 18:12:00 2015 +0100
   444.3 @@ -0,0 +1,188 @@
   444.4 +BEGIN:VCALENDAR
   444.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   444.6 +VERSION:2.0
   444.7 +BEGIN:VTIMEZONE
   444.8 +TZID:America/Vancouver
   444.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Vancouver
  444.10 +X-LIC-LOCATION:America/Vancouver
  444.11 +BEGIN:DAYLIGHT
  444.12 +TZOFFSETFROM:-0800
  444.13 +TZOFFSETTO:-0700
  444.14 +TZNAME:PDT
  444.15 +DTSTART:20070311T020000
  444.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  444.17 +END:DAYLIGHT
  444.18 +BEGIN:STANDARD
  444.19 +TZOFFSETFROM:-0700
  444.20 +TZOFFSETTO:-0800
  444.21 +TZNAME:PST
  444.22 +DTSTART:20071104T020000
  444.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  444.24 +END:STANDARD
  444.25 +BEGIN:STANDARD
  444.26 +TZOFFSETFROM:-081228
  444.27 +TZOFFSETTO:-0800
  444.28 +TZNAME:PST
  444.29 +DTSTART:18840101T000000
  444.30 +RDATE:18840101T000000
  444.31 +END:STANDARD
  444.32 +BEGIN:DAYLIGHT
  444.33 +TZOFFSETFROM:-0800
  444.34 +TZOFFSETTO:-0700
  444.35 +TZNAME:PDT
  444.36 +DTSTART:19180414T020000
  444.37 +RDATE:19180414T020000
  444.38 +RDATE:19460428T020000
  444.39 +RDATE:19470427T020000
  444.40 +RDATE:19480425T020000
  444.41 +RDATE:19490424T020000
  444.42 +RDATE:19500430T020000
  444.43 +RDATE:19510429T020000
  444.44 +RDATE:19520427T020000
  444.45 +RDATE:19530426T020000
  444.46 +RDATE:19540425T020000
  444.47 +RDATE:19550424T020000
  444.48 +RDATE:19560429T020000
  444.49 +RDATE:19570428T020000
  444.50 +RDATE:19580427T020000
  444.51 +RDATE:19590426T020000
  444.52 +RDATE:19600424T020000
  444.53 +RDATE:19610430T020000
  444.54 +RDATE:19620429T020000
  444.55 +RDATE:19630428T020000
  444.56 +RDATE:19640426T020000
  444.57 +RDATE:19650425T020000
  444.58 +RDATE:19660424T020000
  444.59 +RDATE:19670430T020000
  444.60 +RDATE:19680428T020000
  444.61 +RDATE:19690427T020000
  444.62 +RDATE:19700426T020000
  444.63 +RDATE:19710425T020000
  444.64 +RDATE:19720430T020000
  444.65 +RDATE:19730429T020000
  444.66 +RDATE:19740428T020000
  444.67 +RDATE:19750427T020000
  444.68 +RDATE:19760425T020000
  444.69 +RDATE:19770424T020000
  444.70 +RDATE:19780430T020000
  444.71 +RDATE:19790429T020000
  444.72 +RDATE:19800427T020000
  444.73 +RDATE:19810426T020000
  444.74 +RDATE:19820425T020000
  444.75 +RDATE:19830424T020000
  444.76 +RDATE:19840429T020000
  444.77 +RDATE:19850428T020000
  444.78 +RDATE:19860427T020000
  444.79 +RDATE:19870405T020000
  444.80 +RDATE:19880403T020000
  444.81 +RDATE:19890402T020000
  444.82 +RDATE:19900401T020000
  444.83 +RDATE:19910407T020000
  444.84 +RDATE:19920405T020000
  444.85 +RDATE:19930404T020000
  444.86 +RDATE:19940403T020000
  444.87 +RDATE:19950402T020000
  444.88 +RDATE:19960407T020000
  444.89 +RDATE:19970406T020000
  444.90 +RDATE:19980405T020000
  444.91 +RDATE:19990404T020000
  444.92 +RDATE:20000402T020000
  444.93 +RDATE:20010401T020000
  444.94 +RDATE:20020407T020000
  444.95 +RDATE:20030406T020000
  444.96 +RDATE:20040404T020000
  444.97 +RDATE:20050403T020000
  444.98 +RDATE:20060402T020000
  444.99 +END:DAYLIGHT
 444.100 +BEGIN:STANDARD
 444.101 +TZOFFSETFROM:-0700
 444.102 +TZOFFSETTO:-0800
 444.103 +TZNAME:PST
 444.104 +DTSTART:19181031T020000
 444.105 +RDATE:19181031T020000
 444.106 +RDATE:19450930T020000
 444.107 +RDATE:19461013T020000
 444.108 +RDATE:19470928T020000
 444.109 +RDATE:19480926T020000
 444.110 +RDATE:19490925T020000
 444.111 +RDATE:19500924T020000
 444.112 +RDATE:19510930T020000
 444.113 +RDATE:19520928T020000
 444.114 +RDATE:19530927T020000
 444.115 +RDATE:19540926T020000
 444.116 +RDATE:19550925T020000
 444.117 +RDATE:19560930T020000
 444.118 +RDATE:19570929T020000
 444.119 +RDATE:19580928T020000
 444.120 +RDATE:19590927T020000
 444.121 +RDATE:19600925T020000
 444.122 +RDATE:19610924T020000
 444.123 +RDATE:19621028T020000
 444.124 +RDATE:19631027T020000
 444.125 +RDATE:19641025T020000
 444.126 +RDATE:19651031T020000
 444.127 +RDATE:19661030T020000
 444.128 +RDATE:19671029T020000
 444.129 +RDATE:19681027T020000
 444.130 +RDATE:19691026T020000
 444.131 +RDATE:19701025T020000
 444.132 +RDATE:19711031T020000
 444.133 +RDATE:19721029T020000
 444.134 +RDATE:19731028T020000
 444.135 +RDATE:19741027T020000
 444.136 +RDATE:19751026T020000
 444.137 +RDATE:19761031T020000
 444.138 +RDATE:19771030T020000
 444.139 +RDATE:19781029T020000
 444.140 +RDATE:19791028T020000
 444.141 +RDATE:19801026T020000
 444.142 +RDATE:19811025T020000
 444.143 +RDATE:19821031T020000
 444.144 +RDATE:19831030T020000
 444.145 +RDATE:19841028T020000
 444.146 +RDATE:19851027T020000
 444.147 +RDATE:19861026T020000
 444.148 +RDATE:19871025T020000
 444.149 +RDATE:19881030T020000
 444.150 +RDATE:19891029T020000
 444.151 +RDATE:19901028T020000
 444.152 +RDATE:19911027T020000
 444.153 +RDATE:19921025T020000
 444.154 +RDATE:19931031T020000
 444.155 +RDATE:19941030T020000
 444.156 +RDATE:19951029T020000
 444.157 +RDATE:19961027T020000
 444.158 +RDATE:19971026T020000
 444.159 +RDATE:19981025T020000
 444.160 +RDATE:19991031T020000
 444.161 +RDATE:20001029T020000
 444.162 +RDATE:20011028T020000
 444.163 +RDATE:20021027T020000
 444.164 +RDATE:20031026T020000
 444.165 +RDATE:20041031T020000
 444.166 +RDATE:20051030T020000
 444.167 +RDATE:20061029T020000
 444.168 +END:STANDARD
 444.169 +BEGIN:DAYLIGHT
 444.170 +TZOFFSETFROM:-0800
 444.171 +TZOFFSETTO:-0700
 444.172 +TZNAME:PWT
 444.173 +DTSTART:19420209T020000
 444.174 +RDATE:19420209T020000
 444.175 +END:DAYLIGHT
 444.176 +BEGIN:DAYLIGHT
 444.177 +TZOFFSETFROM:-0700
 444.178 +TZOFFSETTO:-0700
 444.179 +TZNAME:PPT
 444.180 +DTSTART:19450814T160000
 444.181 +RDATE:19450814T160000
 444.182 +END:DAYLIGHT
 444.183 +BEGIN:STANDARD
 444.184 +TZOFFSETFROM:-0800
 444.185 +TZOFFSETTO:-0800
 444.186 +TZNAME:PST
 444.187 +DTSTART:19870101T000000
 444.188 +RDATE:19870101T000000
 444.189 +END:STANDARD
 444.190 +END:VTIMEZONE
 444.191 +END:VCALENDAR
   445.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   445.2 +++ b/src/zoneinfo-global/America/Whitehorse.ics	Tue Feb 10 18:12:00 2015 +0100
   445.3 @@ -0,0 +1,154 @@
   445.4 +BEGIN:VCALENDAR
   445.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   445.6 +VERSION:2.0
   445.7 +BEGIN:VTIMEZONE
   445.8 +TZID:America/Whitehorse
   445.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Whitehorse
  445.10 +X-LIC-LOCATION:America/Whitehorse
  445.11 +BEGIN:DAYLIGHT
  445.12 +TZOFFSETFROM:-0800
  445.13 +TZOFFSETTO:-0700
  445.14 +TZNAME:PDT
  445.15 +DTSTART:20070311T020000
  445.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  445.17 +END:DAYLIGHT
  445.18 +BEGIN:STANDARD
  445.19 +TZOFFSETFROM:-0700
  445.20 +TZOFFSETTO:-0800
  445.21 +TZNAME:PST
  445.22 +DTSTART:20071104T020000
  445.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  445.24 +END:STANDARD
  445.25 +BEGIN:STANDARD
  445.26 +TZOFFSETFROM:-090012
  445.27 +TZOFFSETTO:-0900
  445.28 +TZNAME:YST
  445.29 +DTSTART:19000820T000000
  445.30 +RDATE:19000820T000000
  445.31 +END:STANDARD
  445.32 +BEGIN:DAYLIGHT
  445.33 +TZOFFSETFROM:-0900
  445.34 +TZOFFSETTO:-0800
  445.35 +TZNAME:YDT
  445.36 +DTSTART:19180414T020000
  445.37 +RDATE:19180414T020000
  445.38 +RDATE:19190525T020000
  445.39 +END:DAYLIGHT
  445.40 +BEGIN:STANDARD
  445.41 +TZOFFSETFROM:-0800
  445.42 +TZOFFSETTO:-0900
  445.43 +TZNAME:YST
  445.44 +DTSTART:19181027T020000
  445.45 +RDATE:19181027T020000
  445.46 +RDATE:19191101T000000
  445.47 +RDATE:19450930T020000
  445.48 +END:STANDARD
  445.49 +BEGIN:DAYLIGHT
  445.50 +TZOFFSETFROM:-0900
  445.51 +TZOFFSETTO:-0800
  445.52 +TZNAME:YWT
  445.53 +DTSTART:19420209T020000
  445.54 +RDATE:19420209T020000
  445.55 +END:DAYLIGHT
  445.56 +BEGIN:DAYLIGHT
  445.57 +TZOFFSETFROM:-0800
  445.58 +TZOFFSETTO:-0800
  445.59 +TZNAME:YPT
  445.60 +DTSTART:19450814T150000
  445.61 +RDATE:19450814T150000
  445.62 +END:DAYLIGHT
  445.63 +BEGIN:DAYLIGHT
  445.64 +TZOFFSETFROM:-0900
  445.65 +TZOFFSETTO:-0700
  445.66 +TZNAME:YDDT
  445.67 +DTSTART:19650425T000000
  445.68 +RDATE:19650425T000000
  445.69 +END:DAYLIGHT
  445.70 +BEGIN:STANDARD
  445.71 +TZOFFSETFROM:-0700
  445.72 +TZOFFSETTO:-0900
  445.73 +TZNAME:YST
  445.74 +DTSTART:19651031T020000
  445.75 +RDATE:19651031T020000
  445.76 +END:STANDARD
  445.77 +BEGIN:STANDARD
  445.78 +TZOFFSETFROM:-0900
  445.79 +TZOFFSETTO:-0800
  445.80 +DTSTART:19660701T020000
  445.81 +RDATE:19660701T020000
  445.82 +END:STANDARD
  445.83 +BEGIN:STANDARD
  445.84 +TZOFFSETFROM:-0800
  445.85 +TZOFFSETTO:-0800
  445.86 +TZNAME:PST
  445.87 +DTSTART:19800101T000000
  445.88 +RDATE:19800101T000000
  445.89 +END:STANDARD
  445.90 +BEGIN:DAYLIGHT
  445.91 +TZOFFSETFROM:-0800
  445.92 +TZOFFSETTO:-0700
  445.93 +TZNAME:PDT
  445.94 +DTSTART:19800427T020000
  445.95 +RDATE:19800427T020000
  445.96 +RDATE:19810426T020000
  445.97 +RDATE:19820425T020000
  445.98 +RDATE:19830424T020000
  445.99 +RDATE:19840429T020000
 445.100 +RDATE:19850428T020000
 445.101 +RDATE:19860427T020000
 445.102 +RDATE:19870405T020000
 445.103 +RDATE:19880403T020000
 445.104 +RDATE:19890402T020000
 445.105 +RDATE:19900401T020000
 445.106 +RDATE:19910407T020000
 445.107 +RDATE:19920405T020000
 445.108 +RDATE:19930404T020000
 445.109 +RDATE:19940403T020000
 445.110 +RDATE:19950402T020000
 445.111 +RDATE:19960407T020000
 445.112 +RDATE:19970406T020000
 445.113 +RDATE:19980405T020000
 445.114 +RDATE:19990404T020000
 445.115 +RDATE:20000402T020000
 445.116 +RDATE:20010401T020000
 445.117 +RDATE:20020407T020000
 445.118 +RDATE:20030406T020000
 445.119 +RDATE:20040404T020000
 445.120 +RDATE:20050403T020000
 445.121 +RDATE:20060402T020000
 445.122 +END:DAYLIGHT
 445.123 +BEGIN:STANDARD
 445.124 +TZOFFSETFROM:-0700
 445.125 +TZOFFSETTO:-0800
 445.126 +TZNAME:PST
 445.127 +DTSTART:19801026T020000
 445.128 +RDATE:19801026T020000
 445.129 +RDATE:19811025T020000
 445.130 +RDATE:19821031T020000
 445.131 +RDATE:19831030T020000
 445.132 +RDATE:19841028T020000
 445.133 +RDATE:19851027T020000
 445.134 +RDATE:19861026T020000
 445.135 +RDATE:19871025T020000
 445.136 +RDATE:19881030T020000
 445.137 +RDATE:19891029T020000
 445.138 +RDATE:19901028T020000
 445.139 +RDATE:19911027T020000
 445.140 +RDATE:19921025T020000
 445.141 +RDATE:19931031T020000
 445.142 +RDATE:19941030T020000
 445.143 +RDATE:19951029T020000
 445.144 +RDATE:19961027T020000
 445.145 +RDATE:19971026T020000
 445.146 +RDATE:19981025T020000
 445.147 +RDATE:19991031T020000
 445.148 +RDATE:20001029T020000
 445.149 +RDATE:20011028T020000
 445.150 +RDATE:20021027T020000
 445.151 +RDATE:20031026T020000
 445.152 +RDATE:20041031T020000
 445.153 +RDATE:20051030T020000
 445.154 +RDATE:20061029T020000
 445.155 +END:STANDARD
 445.156 +END:VTIMEZONE
 445.157 +END:VCALENDAR
   446.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   446.2 +++ b/src/zoneinfo-global/America/Winnipeg.ics	Tue Feb 10 18:12:00 2015 +0100
   446.3 @@ -0,0 +1,184 @@
   446.4 +BEGIN:VCALENDAR
   446.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   446.6 +VERSION:2.0
   446.7 +BEGIN:VTIMEZONE
   446.8 +TZID:America/Winnipeg
   446.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Winnipeg
  446.10 +X-LIC-LOCATION:America/Winnipeg
  446.11 +BEGIN:DAYLIGHT
  446.12 +TZOFFSETFROM:-0600
  446.13 +TZOFFSETTO:-0500
  446.14 +TZNAME:CDT
  446.15 +DTSTART:20070311T020000
  446.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  446.17 +END:DAYLIGHT
  446.18 +BEGIN:STANDARD
  446.19 +TZOFFSETFROM:-0500
  446.20 +TZOFFSETTO:-0600
  446.21 +TZNAME:CST
  446.22 +DTSTART:20071104T020000
  446.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  446.24 +END:STANDARD
  446.25 +BEGIN:STANDARD
  446.26 +TZOFFSETFROM:-062836
  446.27 +TZOFFSETTO:-0600
  446.28 +TZNAME:CST
  446.29 +DTSTART:18870716T000000
  446.30 +RDATE:18870716T000000
  446.31 +END:STANDARD
  446.32 +BEGIN:DAYLIGHT
  446.33 +TZOFFSETFROM:-0600
  446.34 +TZOFFSETTO:-0500
  446.35 +TZNAME:CDT
  446.36 +DTSTART:19160423T000000
  446.37 +RDATE:19160423T000000
  446.38 +RDATE:19180414T020000
  446.39 +RDATE:19370516T020000
  446.40 +RDATE:19460512T020000
  446.41 +RDATE:19470427T020000
  446.42 +RDATE:19480425T020000
  446.43 +RDATE:19490424T020000
  446.44 +RDATE:19500501T020000
  446.45 +RDATE:19510429T020000
  446.46 +RDATE:19520427T020000
  446.47 +RDATE:19530426T020000
  446.48 +RDATE:19540425T020000
  446.49 +RDATE:19550424T020000
  446.50 +RDATE:19560429T020000
  446.51 +RDATE:19570428T020000
  446.52 +RDATE:19580427T020000
  446.53 +RDATE:19590426T020000
  446.54 +RDATE:19600424T020000
  446.55 +RDATE:19630428T020000
  446.56 +RDATE:19660424T020000
  446.57 +RDATE:19670430T020000
  446.58 +RDATE:19680428T020000
  446.59 +RDATE:19690427T020000
  446.60 +RDATE:19700426T020000
  446.61 +RDATE:19710425T020000
  446.62 +RDATE:19720430T020000
  446.63 +RDATE:19730429T020000
  446.64 +RDATE:19740428T020000
  446.65 +RDATE:19750427T020000
  446.66 +RDATE:19760425T020000
  446.67 +RDATE:19770424T020000
  446.68 +RDATE:19780430T020000
  446.69 +RDATE:19790429T020000
  446.70 +RDATE:19800427T020000
  446.71 +RDATE:19810426T020000
  446.72 +RDATE:19820425T020000
  446.73 +RDATE:19830424T020000
  446.74 +RDATE:19840429T020000
  446.75 +RDATE:19850428T020000
  446.76 +RDATE:19860427T020000
  446.77 +RDATE:19870405T020000
  446.78 +RDATE:19880403T020000
  446.79 +RDATE:19890402T020000
  446.80 +RDATE:19900401T020000
  446.81 +RDATE:19910407T020000
  446.82 +RDATE:19920405T020000
  446.83 +RDATE:19930404T020000
  446.84 +RDATE:19940403T020000
  446.85 +RDATE:19950402T020000
  446.86 +RDATE:19960407T020000
  446.87 +RDATE:19970406T020000
  446.88 +RDATE:19980405T020000
  446.89 +RDATE:19990404T020000
  446.90 +RDATE:20000402T020000
  446.91 +RDATE:20010401T020000
  446.92 +RDATE:20020407T020000
  446.93 +RDATE:20030406T020000
  446.94 +RDATE:20040404T020000
  446.95 +RDATE:20050403T020000
  446.96 +RDATE:20060402T020000
  446.97 +END:DAYLIGHT
  446.98 +BEGIN:STANDARD
  446.99 +TZOFFSETFROM:-0500
 446.100 +TZOFFSETTO:-0600
 446.101 +TZNAME:CST
 446.102 +DTSTART:19160917T000000
 446.103 +RDATE:19160917T000000
 446.104 +RDATE:19181031T020000
 446.105 +RDATE:19370926T020000
 446.106 +RDATE:19450930T020000
 446.107 +RDATE:19461013T020000
 446.108 +RDATE:19470928T020000
 446.109 +RDATE:19480926T020000
 446.110 +RDATE:19490925T020000
 446.111 +RDATE:19500930T020000
 446.112 +RDATE:19510930T020000
 446.113 +RDATE:19520928T020000
 446.114 +RDATE:19530927T020000
 446.115 +RDATE:19540926T020000
 446.116 +RDATE:19550925T020000
 446.117 +RDATE:19560930T020000
 446.118 +RDATE:19570929T020000
 446.119 +RDATE:19580928T020000
 446.120 +RDATE:19591025T020000
 446.121 +RDATE:19600925T020000
 446.122 +RDATE:19630922T020000
 446.123 +RDATE:19661030T030000
 446.124 +RDATE:19671029T030000
 446.125 +RDATE:19681027T030000
 446.126 +RDATE:19691026T030000
 446.127 +RDATE:19701025T030000
 446.128 +RDATE:19711031T030000
 446.129 +RDATE:19721029T030000
 446.130 +RDATE:19731028T030000
 446.131 +RDATE:19741027T030000
 446.132 +RDATE:19751026T030000
 446.133 +RDATE:19761031T030000
 446.134 +RDATE:19771030T030000
 446.135 +RDATE:19781029T030000
 446.136 +RDATE:19791028T030000
 446.137 +RDATE:19801026T030000
 446.138 +RDATE:19811025T030000
 446.139 +RDATE:19821031T030000
 446.140 +RDATE:19831030T030000
 446.141 +RDATE:19841028T030000
 446.142 +RDATE:19851027T030000
 446.143 +RDATE:19861026T030000
 446.144 +RDATE:19871025T030000
 446.145 +RDATE:19881030T030000
 446.146 +RDATE:19891029T030000
 446.147 +RDATE:19901028T030000
 446.148 +RDATE:19911027T030000
 446.149 +RDATE:19921025T030000
 446.150 +RDATE:19931031T030000
 446.151 +RDATE:19941030T030000
 446.152 +RDATE:19951029T030000
 446.153 +RDATE:19961027T030000
 446.154 +RDATE:19971026T030000
 446.155 +RDATE:19981025T030000
 446.156 +RDATE:19991031T030000
 446.157 +RDATE:20001029T030000
 446.158 +RDATE:20011028T030000
 446.159 +RDATE:20021027T030000
 446.160 +RDATE:20031026T030000
 446.161 +RDATE:20041031T030000
 446.162 +RDATE:20051030T030000
 446.163 +RDATE:20061029T020000
 446.164 +END:STANDARD
 446.165 +BEGIN:DAYLIGHT
 446.166 +TZOFFSETFROM:-0600
 446.167 +TZOFFSETTO:-0500
 446.168 +TZNAME:CWT
 446.169 +DTSTART:19420209T020000
 446.170 +RDATE:19420209T020000
 446.171 +END:DAYLIGHT
 446.172 +BEGIN:DAYLIGHT
 446.173 +TZOFFSETFROM:-0500
 446.174 +TZOFFSETTO:-0500
 446.175 +TZNAME:CPT
 446.176 +DTSTART:19450814T180000
 446.177 +RDATE:19450814T180000
 446.178 +END:DAYLIGHT
 446.179 +BEGIN:STANDARD
 446.180 +TZOFFSETFROM:-0600
 446.181 +TZOFFSETTO:-0600
 446.182 +TZNAME:CST
 446.183 +DTSTART:20060101T000000
 446.184 +RDATE:20060101T000000
 446.185 +END:STANDARD
 446.186 +END:VTIMEZONE
 446.187 +END:VCALENDAR
   447.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   447.2 +++ b/src/zoneinfo-global/America/Yakutat.ics	Tue Feb 10 18:12:00 2015 +0100
   447.3 @@ -0,0 +1,168 @@
   447.4 +BEGIN:VCALENDAR
   447.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   447.6 +VERSION:2.0
   447.7 +BEGIN:VTIMEZONE
   447.8 +TZID:America/Yakutat
   447.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Yakutat
  447.10 +X-LIC-LOCATION:America/Yakutat
  447.11 +BEGIN:DAYLIGHT
  447.12 +TZOFFSETFROM:-0900
  447.13 +TZOFFSETTO:-0800
  447.14 +TZNAME:AKDT
  447.15 +DTSTART:20070311T020000
  447.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  447.17 +END:DAYLIGHT
  447.18 +BEGIN:STANDARD
  447.19 +TZOFFSETFROM:-0800
  447.20 +TZOFFSETTO:-0900
  447.21 +TZNAME:AKST
  447.22 +DTSTART:20071104T020000
  447.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  447.24 +END:STANDARD
  447.25 +BEGIN:STANDARD
  447.26 +TZOFFSETFROM:+144105
  447.27 +TZOFFSETTO:-091855
  447.28 +TZNAME:LMT
  447.29 +DTSTART:18671018T000000
  447.30 +RDATE:18671018T000000
  447.31 +END:STANDARD
  447.32 +BEGIN:STANDARD
  447.33 +TZOFFSETFROM:-091855
  447.34 +TZOFFSETTO:-0900
  447.35 +TZNAME:YST
  447.36 +DTSTART:19000820T120000
  447.37 +RDATE:19000820T120000
  447.38 +END:STANDARD
  447.39 +BEGIN:STANDARD
  447.40 +TZOFFSETFROM:-0900
  447.41 +TZOFFSETTO:-0900
  447.42 +TZNAME:YST
  447.43 +DTSTART:19420101T000000
  447.44 +RDATE:19420101T000000
  447.45 +RDATE:19460101T000000
  447.46 +RDATE:19690101T000000
  447.47 +END:STANDARD
  447.48 +BEGIN:DAYLIGHT
  447.49 +TZOFFSETFROM:-0900
  447.50 +TZOFFSETTO:-0800
  447.51 +TZNAME:YWT
  447.52 +DTSTART:19420209T020000
  447.53 +RDATE:19420209T020000
  447.54 +END:DAYLIGHT
  447.55 +BEGIN:DAYLIGHT
  447.56 +TZOFFSETFROM:-0800
  447.57 +TZOFFSETTO:-0800
  447.58 +TZNAME:YPT
  447.59 +DTSTART:19450814T150000
  447.60 +RDATE:19450814T150000
  447.61 +END:DAYLIGHT
  447.62 +BEGIN:STANDARD
  447.63 +TZOFFSETFROM:-0800
  447.64 +TZOFFSETTO:-0900
  447.65 +TZNAME:YST
  447.66 +DTSTART:19450930T020000
  447.67 +RDATE:19450930T020000
  447.68 +RDATE:19691026T020000
  447.69 +RDATE:19701025T020000
  447.70 +RDATE:19711031T020000
  447.71 +RDATE:19721029T020000
  447.72 +RDATE:19731028T020000
  447.73 +RDATE:19741027T020000
  447.74 +RDATE:19751026T020000
  447.75 +RDATE:19761031T020000
  447.76 +RDATE:19771030T020000
  447.77 +RDATE:19781029T020000
  447.78 +RDATE:19791028T020000
  447.79 +RDATE:19801026T020000
  447.80 +RDATE:19811025T020000
  447.81 +RDATE:19821031T020000
  447.82 +RDATE:19831030T020000
  447.83 +END:STANDARD
  447.84 +BEGIN:DAYLIGHT
  447.85 +TZOFFSETFROM:-0900
  447.86 +TZOFFSETTO:-0800
  447.87 +TZNAME:YDT
  447.88 +DTSTART:19690427T020000
  447.89 +RDATE:19690427T020000
  447.90 +RDATE:19700426T020000
  447.91 +RDATE:19710425T020000
  447.92 +RDATE:19720430T020000
  447.93 +RDATE:19730429T020000
  447.94 +RDATE:19740106T020000
  447.95 +RDATE:19750223T020000
  447.96 +RDATE:19760425T020000
  447.97 +RDATE:19770424T020000
  447.98 +RDATE:19780430T020000
  447.99 +RDATE:19790429T020000
 447.100 +RDATE:19800427T020000
 447.101 +RDATE:19810426T020000
 447.102 +RDATE:19820425T020000
 447.103 +RDATE:19830424T020000
 447.104 +END:DAYLIGHT
 447.105 +BEGIN:STANDARD
 447.106 +TZOFFSETFROM:-0900
 447.107 +TZOFFSETTO:-0900
 447.108 +TZNAME:AKST
 447.109 +DTSTART:19831130T000000
 447.110 +RDATE:19831130T000000
 447.111 +END:STANDARD
 447.112 +BEGIN:DAYLIGHT
 447.113 +TZOFFSETFROM:-0900
 447.114 +TZOFFSETTO:-0800
 447.115 +TZNAME:AKDT
 447.116 +DTSTART:19840429T020000
 447.117 +RDATE:19840429T020000
 447.118 +RDATE:19850428T020000
 447.119 +RDATE:19860427T020000
 447.120 +RDATE:19870405T020000
 447.121 +RDATE:19880403T020000
 447.122 +RDATE:19890402T020000
 447.123 +RDATE:19900401T020000
 447.124 +RDATE:19910407T020000
 447.125 +RDATE:19920405T020000
 447.126 +RDATE:19930404T020000
 447.127 +RDATE:19940403T020000
 447.128 +RDATE:19950402T020000
 447.129 +RDATE:19960407T020000
 447.130 +RDATE:19970406T020000
 447.131 +RDATE:19980405T020000
 447.132 +RDATE:19990404T020000
 447.133 +RDATE:20000402T020000
 447.134 +RDATE:20010401T020000
 447.135 +RDATE:20020407T020000
 447.136 +RDATE:20030406T020000
 447.137 +RDATE:20040404T020000
 447.138 +RDATE:20050403T020000
 447.139 +RDATE:20060402T020000
 447.140 +END:DAYLIGHT
 447.141 +BEGIN:STANDARD
 447.142 +TZOFFSETFROM:-0800
 447.143 +TZOFFSETTO:-0900
 447.144 +TZNAME:AKST
 447.145 +DTSTART:19841028T020000
 447.146 +RDATE:19841028T020000
 447.147 +RDATE:19851027T020000
 447.148 +RDATE:19861026T020000
 447.149 +RDATE:19871025T020000
 447.150 +RDATE:19881030T020000
 447.151 +RDATE:19891029T020000
 447.152 +RDATE:19901028T020000
 447.153 +RDATE:19911027T020000
 447.154 +RDATE:19921025T020000
 447.155 +RDATE:19931031T020000
 447.156 +RDATE:19941030T020000
 447.157 +RDATE:19951029T020000
 447.158 +RDATE:19961027T020000
 447.159 +RDATE:19971026T020000
 447.160 +RDATE:19981025T020000
 447.161 +RDATE:19991031T020000
 447.162 +RDATE:20001029T020000
 447.163 +RDATE:20011028T020000
 447.164 +RDATE:20021027T020000
 447.165 +RDATE:20031026T020000
 447.166 +RDATE:20041031T020000
 447.167 +RDATE:20051030T020000
 447.168 +RDATE:20061029T020000
 447.169 +END:STANDARD
 447.170 +END:VTIMEZONE
 447.171 +END:VCALENDAR
   448.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   448.2 +++ b/src/zoneinfo-global/America/Yellowknife.ics	Tue Feb 10 18:12:00 2015 +0100
   448.3 @@ -0,0 +1,132 @@
   448.4 +BEGIN:VCALENDAR
   448.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   448.6 +VERSION:2.0
   448.7 +BEGIN:VTIMEZONE
   448.8 +TZID:America/Yellowknife
   448.9 +TZURL:http://tzurl.org/zoneinfo-global/America/Yellowknife
  448.10 +X-LIC-LOCATION:America/Yellowknife
  448.11 +BEGIN:DAYLIGHT
  448.12 +TZOFFSETFROM:-0700
  448.13 +TZOFFSETTO:-0600
  448.14 +TZNAME:MDT
  448.15 +DTSTART:20070311T020000
  448.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  448.17 +END:DAYLIGHT
  448.18 +BEGIN:STANDARD
  448.19 +TZOFFSETFROM:-0600
  448.20 +TZOFFSETTO:-0700
  448.21 +TZNAME:MST
  448.22 +DTSTART:20071104T020000
  448.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  448.24 +END:STANDARD
  448.25 +BEGIN:STANDARD
  448.26 +TZOFFSETFROM:+0000
  448.27 +TZOFFSETTO:-0700
  448.28 +TZNAME:MST
  448.29 +DTSTART:19350101T000000
  448.30 +RDATE:19350101T000000
  448.31 +END:STANDARD
  448.32 +BEGIN:DAYLIGHT
  448.33 +TZOFFSETFROM:-0700
  448.34 +TZOFFSETTO:-0600
  448.35 +TZNAME:MWT
  448.36 +DTSTART:19420209T020000
  448.37 +RDATE:19420209T020000
  448.38 +END:DAYLIGHT
  448.39 +BEGIN:DAYLIGHT
  448.40 +TZOFFSETFROM:-0600
  448.41 +TZOFFSETTO:-0600
  448.42 +TZNAME:MPT
  448.43 +DTSTART:19450814T170000
  448.44 +RDATE:19450814T170000
  448.45 +END:DAYLIGHT
  448.46 +BEGIN:STANDARD
  448.47 +TZOFFSETFROM:-0600
  448.48 +TZOFFSETTO:-0700
  448.49 +TZNAME:MST
  448.50 +DTSTART:19450930T020000
  448.51 +RDATE:19450930T020000
  448.52 +RDATE:19801026T020000
  448.53 +RDATE:19811025T020000
  448.54 +RDATE:19821031T020000
  448.55 +RDATE:19831030T020000
  448.56 +RDATE:19841028T020000
  448.57 +RDATE:19851027T020000
  448.58 +RDATE:19861026T020000
  448.59 +RDATE:19871025T020000
  448.60 +RDATE:19881030T020000
  448.61 +RDATE:19891029T020000
  448.62 +RDATE:19901028T020000
  448.63 +RDATE:19911027T020000
  448.64 +RDATE:19921025T020000
  448.65 +RDATE:19931031T020000
  448.66 +RDATE:19941030T020000
  448.67 +RDATE:19951029T020000
  448.68 +RDATE:19961027T020000
  448.69 +RDATE:19971026T020000
  448.70 +RDATE:19981025T020000
  448.71 +RDATE:19991031T020000
  448.72 +RDATE:20001029T020000
  448.73 +RDATE:20011028T020000
  448.74 +RDATE:20021027T020000
  448.75 +RDATE:20031026T020000
  448.76 +RDATE:20041031T020000
  448.77 +RDATE:20051030T020000
  448.78 +RDATE:20061029T020000
  448.79 +END:STANDARD
  448.80 +BEGIN:DAYLIGHT
  448.81 +TZOFFSETFROM:-0700
  448.82 +TZOFFSETTO:-0500
  448.83 +TZNAME:MDDT
  448.84 +DTSTART:19650425T000000
  448.85 +RDATE:19650425T000000
  448.86 +END:DAYLIGHT
  448.87 +BEGIN:STANDARD
  448.88 +TZOFFSETFROM:-0500
  448.89 +TZOFFSETTO:-0700
  448.90 +TZNAME:MST
  448.91 +DTSTART:19651031T020000
  448.92 +RDATE:19651031T020000
  448.93 +END:STANDARD
  448.94 +BEGIN:STANDARD
  448.95 +TZOFFSETFROM:-0700
  448.96 +TZOFFSETTO:-0700
  448.97 +TZNAME:MST
  448.98 +DTSTART:19800101T000000
  448.99 +RDATE:19800101T000000
 448.100 +END:STANDARD
 448.101 +BEGIN:DAYLIGHT
 448.102 +TZOFFSETFROM:-0700
 448.103 +TZOFFSETTO:-0600
 448.104 +TZNAME:MDT
 448.105 +DTSTART:19800427T020000
 448.106 +RDATE:19800427T020000
 448.107 +RDATE:19810426T020000
 448.108 +RDATE:19820425T020000
 448.109 +RDATE:19830424T020000
 448.110 +RDATE:19840429T020000
 448.111 +RDATE:19850428T020000
 448.112 +RDATE:19860427T020000
 448.113 +RDATE:19870405T020000
 448.114 +RDATE:19880403T020000
 448.115 +RDATE:19890402T020000
 448.116 +RDATE:19900401T020000
 448.117 +RDATE:19910407T020000
 448.118 +RDATE:19920405T020000
 448.119 +RDATE:19930404T020000
 448.120 +RDATE:19940403T020000
 448.121 +RDATE:19950402T020000
 448.122 +RDATE:19960407T020000
 448.123 +RDATE:19970406T020000
 448.124 +RDATE:19980405T020000
 448.125 +RDATE:19990404T020000
 448.126 +RDATE:20000402T020000
 448.127 +RDATE:20010401T020000
 448.128 +RDATE:20020407T020000
 448.129 +RDATE:20030406T020000
 448.130 +RDATE:20040404T020000
 448.131 +RDATE:20050403T020000
 448.132 +RDATE:20060402T020000
 448.133 +END:DAYLIGHT
 448.134 +END:VTIMEZONE
 448.135 +END:VCALENDAR
   449.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   449.2 +++ b/src/zoneinfo-global/Antarctica/Casey.ics	Tue Feb 10 18:12:00 2015 +0100
   449.3 @@ -0,0 +1,30 @@
   449.4 +BEGIN:VCALENDAR
   449.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   449.6 +VERSION:2.0
   449.7 +BEGIN:VTIMEZONE
   449.8 +TZID:Antarctica/Casey
   449.9 +TZURL:http://tzurl.org/zoneinfo-global/Antarctica/Casey
  449.10 +X-LIC-LOCATION:Antarctica/Casey
  449.11 +BEGIN:STANDARD
  449.12 +TZOFFSETFROM:+0000
  449.13 +TZOFFSETTO:+0800
  449.14 +TZNAME:WST
  449.15 +DTSTART:19690101T000000
  449.16 +RDATE:19690101T000000
  449.17 +END:STANDARD
  449.18 +BEGIN:STANDARD
  449.19 +TZOFFSETFROM:+0800
  449.20 +TZOFFSETTO:+1100
  449.21 +TZNAME:CAST
  449.22 +DTSTART:20091018T020000
  449.23 +RDATE:20091018T020000
  449.24 +END:STANDARD
  449.25 +BEGIN:STANDARD
  449.26 +TZOFFSETFROM:+1100
  449.27 +TZOFFSETTO:+0800
  449.28 +TZNAME:WST
  449.29 +DTSTART:20100305T020000
  449.30 +RDATE:20100305T020000
  449.31 +END:STANDARD
  449.32 +END:VTIMEZONE
  449.33 +END:VCALENDAR
   450.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   450.2 +++ b/src/zoneinfo-global/Antarctica/Davis.ics	Tue Feb 10 18:12:00 2015 +0100
   450.3 @@ -0,0 +1,38 @@
   450.4 +BEGIN:VCALENDAR
   450.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   450.6 +VERSION:2.0
   450.7 +BEGIN:VTIMEZONE
   450.8 +TZID:Antarctica/Davis
   450.9 +TZURL:http://tzurl.org/zoneinfo-global/Antarctica/Davis
  450.10 +X-LIC-LOCATION:Antarctica/Davis
  450.11 +BEGIN:STANDARD
  450.12 +TZOFFSETFROM:+0000
  450.13 +TZOFFSETTO:+0700
  450.14 +TZNAME:DAVT
  450.15 +DTSTART:19570113T000000
  450.16 +RDATE:19570113T000000
  450.17 +RDATE:19690201T000000
  450.18 +END:STANDARD
  450.19 +BEGIN:STANDARD
  450.20 +TZOFFSETFROM:+0700
  450.21 +TZOFFSETTO:+0000
  450.22 +TZNAME:zzz
  450.23 +DTSTART:19641101T000000
  450.24 +RDATE:19641101T000000
  450.25 +END:STANDARD
  450.26 +BEGIN:STANDARD
  450.27 +TZOFFSETFROM:+0700
  450.28 +TZOFFSETTO:+0500
  450.29 +TZNAME:DAVT
  450.30 +DTSTART:20091018T020000
  450.31 +RDATE:20091018T020000
  450.32 +END:STANDARD
  450.33 +BEGIN:STANDARD
  450.34 +TZOFFSETFROM:+0500
  450.35 +TZOFFSETTO:+0700
  450.36 +TZNAME:DAVT
  450.37 +DTSTART:20100311T010000
  450.38 +RDATE:20100311T010000
  450.39 +END:STANDARD
  450.40 +END:VTIMEZONE
  450.41 +END:VCALENDAR
   451.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   451.2 +++ b/src/zoneinfo-global/Antarctica/DumontDUrville.ics	Tue Feb 10 18:12:00 2015 +0100
   451.3 @@ -0,0 +1,30 @@
   451.4 +BEGIN:VCALENDAR
   451.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   451.6 +VERSION:2.0
   451.7 +BEGIN:VTIMEZONE
   451.8 +TZID:Antarctica/DumontDUrville
   451.9 +TZURL:http://tzurl.org/zoneinfo-global/Antarctica/DumontDUrville
  451.10 +X-LIC-LOCATION:Antarctica/DumontDUrville
  451.11 +BEGIN:STANDARD
  451.12 +TZOFFSETFROM:+0000
  451.13 +TZOFFSETTO:+1000
  451.14 +TZNAME:PMT
  451.15 +DTSTART:19470101T000000
  451.16 +RDATE:19470101T000000
  451.17 +END:STANDARD
  451.18 +BEGIN:STANDARD
  451.19 +TZOFFSETFROM:+1000
  451.20 +TZOFFSETTO:+0000
  451.21 +TZNAME:zzz
  451.22 +DTSTART:19520114T000000
  451.23 +RDATE:19520114T000000
  451.24 +END:STANDARD
  451.25 +BEGIN:STANDARD
  451.26 +TZOFFSETFROM:+0000
  451.27 +TZOFFSETTO:+1000
  451.28 +TZNAME:DDUT
  451.29 +DTSTART:19561101T000000
  451.30 +RDATE:19561101T000000
  451.31 +END:STANDARD
  451.32 +END:VTIMEZONE
  451.33 +END:VCALENDAR
   452.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   452.2 +++ b/src/zoneinfo-global/Antarctica/Macquarie.ics	Tue Feb 10 18:12:00 2015 +0100
   452.3 @@ -0,0 +1,142 @@
   452.4 +BEGIN:VCALENDAR
   452.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   452.6 +VERSION:2.0
   452.7 +BEGIN:VTIMEZONE
   452.8 +TZID:Antarctica/Macquarie
   452.9 +TZURL:http://tzurl.org/zoneinfo-global/Antarctica/Macquarie
  452.10 +X-LIC-LOCATION:Antarctica/Macquarie
  452.11 +BEGIN:STANDARD
  452.12 +TZOFFSETFROM:+0000
  452.13 +TZOFFSETTO:+1000
  452.14 +TZNAME:EST
  452.15 +DTSTART:19110101T000000
  452.16 +RDATE:19110101T000000
  452.17 +END:STANDARD
  452.18 +BEGIN:DAYLIGHT
  452.19 +TZOFFSETFROM:+1000
  452.20 +TZOFFSETTO:+1100
  452.21 +TZNAME:EST
  452.22 +DTSTART:19161001T020000
  452.23 +RDATE:19161001T020000
  452.24 +RDATE:19420101T020000
  452.25 +RDATE:19420927T020000
  452.26 +RDATE:19431003T020000
  452.27 +RDATE:19671001T020000
  452.28 +RDATE:19681027T020000
  452.29 +RDATE:19691026T020000
  452.30 +RDATE:19701025T020000
  452.31 +RDATE:19711031T020000
  452.32 +RDATE:19721029T020000
  452.33 +RDATE:19731028T020000
  452.34 +RDATE:19741027T020000
  452.35 +RDATE:19751026T020000
  452.36 +RDATE:19761031T020000
  452.37 +RDATE:19771030T020000
  452.38 +RDATE:19781029T020000
  452.39 +RDATE:19791028T020000
  452.40 +RDATE:19801026T020000
  452.41 +RDATE:19811025T020000
  452.42 +RDATE:19821031T020000
  452.43 +RDATE:19831030T020000
  452.44 +RDATE:19841028T020000
  452.45 +RDATE:19851027T020000
  452.46 +RDATE:19861019T020000
  452.47 +RDATE:19871025T020000
  452.48 +RDATE:19881030T020000
  452.49 +RDATE:19891029T020000
  452.50 +RDATE:19901028T020000
  452.51 +RDATE:19911006T020000
  452.52 +RDATE:19921004T020000
  452.53 +RDATE:19931003T020000
  452.54 +RDATE:19941002T020000
  452.55 +RDATE:19951001T020000
  452.56 +RDATE:19961006T020000
  452.57 +RDATE:19971005T020000
  452.58 +RDATE:19981004T020000
  452.59 +RDATE:19991003T020000
  452.60 +RDATE:20000827T020000
  452.61 +RDATE:20011007T020000
  452.62 +RDATE:20021006T020000
  452.63 +RDATE:20031005T020000
  452.64 +RDATE:20041003T020000
  452.65 +RDATE:20051002T020000
  452.66 +RDATE:20061001T020000
  452.67 +RDATE:20071007T020000
  452.68 +RDATE:20081005T020000
  452.69 +RDATE:20091004T020000
  452.70 +END:DAYLIGHT
  452.71 +BEGIN:DAYLIGHT
  452.72 +TZOFFSETFROM:+1100
  452.73 +TZOFFSETTO:+1100
  452.74 +TZNAME:EST
  452.75 +DTSTART:19170201T000000
  452.76 +RDATE:19170201T000000
  452.77 +END:DAYLIGHT
  452.78 +BEGIN:STANDARD
  452.79 +TZOFFSETFROM:+1100
  452.80 +TZOFFSETTO:+1000
  452.81 +TZNAME:EST
  452.82 +DTSTART:19170325T020000
  452.83 +RDATE:19170325T020000
  452.84 +RDATE:19420329T020000
  452.85 +RDATE:19430328T020000
  452.86 +RDATE:19440326T020000
  452.87 +RDATE:19680331T030000
  452.88 +RDATE:19690309T030000
  452.89 +RDATE:19700308T030000
  452.90 +RDATE:19710314T030000
  452.91 +RDATE:19720227T030000
  452.92 +RDATE:19730304T030000
  452.93 +RDATE:19740303T030000
  452.94 +RDATE:19750302T030000
  452.95 +RDATE:19760307T030000
  452.96 +RDATE:19770306T030000
  452.97 +RDATE:19780305T030000
  452.98 +RDATE:19790304T030000
  452.99 +RDATE:19800302T030000
 452.100 +RDATE:19810301T030000
 452.101 +RDATE:19820328T030000
 452.102 +RDATE:19830327T030000
 452.103 +RDATE:19840304T030000
 452.104 +RDATE:19850303T030000
 452.105 +RDATE:19860302T030000
 452.106 +RDATE:19870315T030000
 452.107 +RDATE:19880320T030000
 452.108 +RDATE:19890319T030000
 452.109 +RDATE:19900318T030000
 452.110 +RDATE:19910331T030000
 452.111 +RDATE:19920329T030000
 452.112 +RDATE:19930328T030000
 452.113 +RDATE:19940327T030000
 452.114 +RDATE:19950326T030000
 452.115 +RDATE:19960331T030000
 452.116 +RDATE:19970330T030000
 452.117 +RDATE:19980329T030000
 452.118 +RDATE:19990328T030000
 452.119 +RDATE:20000326T030000
 452.120 +RDATE:20010325T030000
 452.121 +RDATE:20020331T030000
 452.122 +RDATE:20030330T030000
 452.123 +RDATE:20040328T030000
 452.124 +RDATE:20050327T030000
 452.125 +RDATE:20060402T030000
 452.126 +RDATE:20070325T030000
 452.127 +RDATE:20080406T030000
 452.128 +RDATE:20090405T030000
 452.129 +END:STANDARD
 452.130 +BEGIN:STANDARD
 452.131 +TZOFFSETFROM:+1000
 452.132 +TZOFFSETTO:+1000
 452.133 +TZNAME:EST
 452.134 +DTSTART:19670101T000000
 452.135 +RDATE:19670101T000000
 452.136 +END:STANDARD
 452.137 +BEGIN:STANDARD
 452.138 +TZOFFSETFROM:+1100
 452.139 +TZOFFSETTO:+1100
 452.140 +TZNAME:MIST
 452.141 +DTSTART:20100404T030000
 452.142 +RDATE:20100404T030000
 452.143 +END:STANDARD
 452.144 +END:VTIMEZONE
 452.145 +END:VCALENDAR
   453.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   453.2 +++ b/src/zoneinfo-global/Antarctica/Mawson.ics	Tue Feb 10 18:12:00 2015 +0100
   453.3 @@ -0,0 +1,23 @@
   453.4 +BEGIN:VCALENDAR
   453.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   453.6 +VERSION:2.0
   453.7 +BEGIN:VTIMEZONE
   453.8 +TZID:Antarctica/Mawson
   453.9 +TZURL:http://tzurl.org/zoneinfo-global/Antarctica/Mawson
  453.10 +X-LIC-LOCATION:Antarctica/Mawson
  453.11 +BEGIN:STANDARD
  453.12 +TZOFFSETFROM:+0000
  453.13 +TZOFFSETTO:+0600
  453.14 +TZNAME:MAWT
  453.15 +DTSTART:19540213T000000
  453.16 +RDATE:19540213T000000
  453.17 +END:STANDARD
  453.18 +BEGIN:STANDARD
  453.19 +TZOFFSETFROM:+0600
  453.20 +TZOFFSETTO:+0500
  453.21 +TZNAME:MAWT
  453.22 +DTSTART:20091018T020000
  453.23 +RDATE:20091018T020000
  453.24 +END:STANDARD
  453.25 +END:VTIMEZONE
  453.26 +END:VCALENDAR
   454.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   454.2 +++ b/src/zoneinfo-global/Antarctica/McMurdo.ics	Tue Feb 10 18:12:00 2015 +0100
   454.3 @@ -0,0 +1,108 @@
   454.4 +BEGIN:VCALENDAR
   454.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   454.6 +VERSION:2.0
   454.7 +BEGIN:VTIMEZONE
   454.8 +TZID:Antarctica/McMurdo
   454.9 +TZURL:http://tzurl.org/zoneinfo-global/Antarctica/McMurdo
  454.10 +X-LIC-LOCATION:Antarctica/McMurdo
  454.11 +BEGIN:DAYLIGHT
  454.12 +TZOFFSETFROM:+1200
  454.13 +TZOFFSETTO:+1300
  454.14 +TZNAME:NZDT
  454.15 +DTSTART:20070930T020000
  454.16 +RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU
  454.17 +END:DAYLIGHT
  454.18 +BEGIN:STANDARD
  454.19 +TZOFFSETFROM:+1300
  454.20 +TZOFFSETTO:+1200
  454.21 +TZNAME:NZST
  454.22 +DTSTART:20080406T030000
  454.23 +RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU
  454.24 +END:STANDARD
  454.25 +BEGIN:STANDARD
  454.26 +TZOFFSETFROM:+0000
  454.27 +TZOFFSETTO:+1200
  454.28 +TZNAME:NZST
  454.29 +DTSTART:19560101T000000
  454.30 +RDATE:19560101T000000
  454.31 +END:STANDARD
  454.32 +BEGIN:DAYLIGHT
  454.33 +TZOFFSETFROM:+1200
  454.34 +TZOFFSETTO:+1300
  454.35 +TZNAME:NZDT
  454.36 +DTSTART:19741103T020000
  454.37 +RDATE:19741103T020000
  454.38 +RDATE:19751026T020000
  454.39 +RDATE:19761031T020000
  454.40 +RDATE:19771030T020000
  454.41 +RDATE:19781029T020000
  454.42 +RDATE:19791028T020000
  454.43 +RDATE:19801026T020000
  454.44 +RDATE:19811025T020000
  454.45 +RDATE:19821031T020000
  454.46 +RDATE:19831030T020000
  454.47 +RDATE:19841028T020000
  454.48 +RDATE:19851027T020000
  454.49 +RDATE:19861026T020000
  454.50 +RDATE:19871025T020000
  454.51 +RDATE:19881030T020000
  454.52 +RDATE:19891008T020000
  454.53 +RDATE:19901007T020000
  454.54 +RDATE:19911006T020000
  454.55 +RDATE:19921004T020000
  454.56 +RDATE:19931003T020000
  454.57 +RDATE:19941002T020000
  454.58 +RDATE:19951001T020000
  454.59 +RDATE:19961006T020000
  454.60 +RDATE:19971005T020000
  454.61 +RDATE:19981004T020000
  454.62 +RDATE:19991003T020000
  454.63 +RDATE:20001001T020000
  454.64 +RDATE:20011007T020000
  454.65 +RDATE:20021006T020000
  454.66 +RDATE:20031005T020000
  454.67 +RDATE:20041003T020000
  454.68 +RDATE:20051002T020000
  454.69 +RDATE:20061001T020000
  454.70 +END:DAYLIGHT
  454.71 +BEGIN:STANDARD
  454.72 +TZOFFSETFROM:+1300
  454.73 +TZOFFSETTO:+1200
  454.74 +TZNAME:NZST
  454.75 +DTSTART:19750223T030000
  454.76 +RDATE:19750223T030000
  454.77 +RDATE:19760307T030000
  454.78 +RDATE:19770306T030000
  454.79 +RDATE:19780305T030000
  454.80 +RDATE:19790304T030000
  454.81 +RDATE:19800302T030000
  454.82 +RDATE:19810301T030000
  454.83 +RDATE:19820307T030000
  454.84 +RDATE:19830306T030000
  454.85 +RDATE:19840304T030000
  454.86 +RDATE:19850303T030000
  454.87 +RDATE:19860302T030000
  454.88 +RDATE:19870301T030000
  454.89 +RDATE:19880306T030000
  454.90 +RDATE:19890305T030000
  454.91 +RDATE:19900318T030000
  454.92 +RDATE:19910317T030000
  454.93 +RDATE:19920315T030000
  454.94 +RDATE:19930321T030000
  454.95 +RDATE:19940320T030000
  454.96 +RDATE:19950319T030000
  454.97 +RDATE:19960317T030000
  454.98 +RDATE:19970316T030000
  454.99 +RDATE:19980315T030000
 454.100 +RDATE:19990321T030000
 454.101 +RDATE:20000319T030000
 454.102 +RDATE:20010318T030000
 454.103 +RDATE:20020317T030000
 454.104 +RDATE:20030316T030000
 454.105 +RDATE:20040321T030000
 454.106 +RDATE:20050320T030000
 454.107 +RDATE:20060319T030000
 454.108 +RDATE:20070318T030000
 454.109 +END:STANDARD
 454.110 +END:VTIMEZONE
 454.111 +END:VCALENDAR
   455.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   455.2 +++ b/src/zoneinfo-global/Antarctica/Palmer.ics	Tue Feb 10 18:12:00 2015 +0100
   455.3 @@ -0,0 +1,119 @@
   455.4 +BEGIN:VCALENDAR
   455.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   455.6 +VERSION:2.0
   455.7 +BEGIN:VTIMEZONE
   455.8 +TZID:Antarctica/Palmer
   455.9 +TZURL:http://tzurl.org/zoneinfo-global/Antarctica/Palmer
  455.10 +X-LIC-LOCATION:Antarctica/Palmer
  455.11 +BEGIN:DAYLIGHT
  455.12 +TZOFFSETFROM:-0400
  455.13 +TZOFFSETTO:-0300
  455.14 +TZNAME:CLST
  455.15 +DTSTART:19991010T000000
  455.16 +RRULE:FREQ=YEARLY;BYMONTH=10;BYMONTHDAY=9,10,11,12,13,14,15;BYDAY=SU
  455.17 +END:DAYLIGHT
  455.18 +BEGIN:STANDARD
  455.19 +TZOFFSETFROM:-0300
  455.20 +TZOFFSETTO:-0400
  455.21 +TZNAME:CLT
  455.22 +DTSTART:20000312T000000
  455.23 +RRULE:FREQ=YEARLY;BYMONTH=3;BYMONTHDAY=9,10,11,12,13,14,15;BYDAY=SU
  455.24 +END:STANDARD
  455.25 +BEGIN:DAYLIGHT
  455.26 +TZOFFSETFROM:+0000
  455.27 +TZOFFSETTO:-0300
  455.28 +TZNAME:ARST
  455.29 +DTSTART:19650101T000000
  455.30 +RDATE:19650101T000000
  455.31 +END:DAYLIGHT
  455.32 +BEGIN:STANDARD
  455.33 +TZOFFSETFROM:-0300
  455.34 +TZOFFSETTO:-0400
  455.35 +TZNAME:ART
  455.36 +DTSTART:19650301T000000
  455.37 +RDATE:19650301T000000
  455.38 +RDATE:19660301T000000
  455.39 +RDATE:19670402T000000
  455.40 +RDATE:19680407T000000
  455.41 +RDATE:19690406T000000
  455.42 +END:STANDARD
  455.43 +BEGIN:DAYLIGHT
  455.44 +TZOFFSETFROM:-0400
  455.45 +TZOFFSETTO:-0300
  455.46 +TZNAME:ARST
  455.47 +DTSTART:19651015T000000
  455.48 +RDATE:19651015T000000
  455.49 +RDATE:19661015T000000
  455.50 +RDATE:19671001T000000
  455.51 +RDATE:19681006T000000
  455.52 +END:DAYLIGHT
  455.53 +BEGIN:STANDARD
  455.54 +TZOFFSETFROM:-0400
  455.55 +TZOFFSETTO:-0300
  455.56 +TZNAME:ART
  455.57 +DTSTART:19691005T000000
  455.58 +RDATE:19691005T000000
  455.59 +END:STANDARD
  455.60 +BEGIN:DAYLIGHT
  455.61 +TZOFFSETFROM:-0300
  455.62 +TZOFFSETTO:-0200
  455.63 +TZNAME:ARST
  455.64 +DTSTART:19740123T000000
  455.65 +RDATE:19740123T000000
  455.66 +END:DAYLIGHT
  455.67 +BEGIN:STANDARD
  455.68 +TZOFFSETFROM:-0200
  455.69 +TZOFFSETTO:-0300
  455.70 +TZNAME:ART
  455.71 +DTSTART:19740501T000000
  455.72 +RDATE:19740501T000000
  455.73 +END:STANDARD
  455.74 +BEGIN:STANDARD
  455.75 +TZOFFSETFROM:-0300
  455.76 +TZOFFSETTO:-0400
  455.77 +TZNAME:CLT
  455.78 +DTSTART:19820501T000000
  455.79 +RDATE:19820501T000000
  455.80 +RDATE:19830313T000000
  455.81 +RDATE:19840311T000000
  455.82 +RDATE:19850310T000000
  455.83 +RDATE:19860309T000000
  455.84 +RDATE:19870412T000000
  455.85 +RDATE:19880313T000000
  455.86 +RDATE:19890312T000000
  455.87 +RDATE:19900318T000000
  455.88 +RDATE:19910310T000000
  455.89 +RDATE:19920315T000000
  455.90 +RDATE:19930314T000000
  455.91 +RDATE:19940313T000000
  455.92 +RDATE:19950312T000000
  455.93 +RDATE:19960310T000000
  455.94 +RDATE:19970330T000000
  455.95 +RDATE:19980315T000000
  455.96 +RDATE:19990404T000000
  455.97 +END:STANDARD
  455.98 +BEGIN:DAYLIGHT
  455.99 +TZOFFSETFROM:-0400
 455.100 +TZOFFSETTO:-0300
 455.101 +TZNAME:CLST
 455.102 +DTSTART:19821010T000000
 455.103 +RDATE:19821010T000000
 455.104 +RDATE:19831009T000000
 455.105 +RDATE:19841014T000000
 455.106 +RDATE:19851013T000000
 455.107 +RDATE:19861012T000000
 455.108 +RDATE:19871011T000000
 455.109 +RDATE:19881002T000000
 455.110 +RDATE:19891015T000000
 455.111 +RDATE:19900916T000000
 455.112 +RDATE:19911013T000000
 455.113 +RDATE:19921011T000000
 455.114 +RDATE:19931010T000000
 455.115 +RDATE:19941009T000000
 455.116 +RDATE:19951015T000000
 455.117 +RDATE:19961013T000000
 455.118 +RDATE:19971012T000000
 455.119 +RDATE:19980927T000000
 455.120 +END:DAYLIGHT
 455.121 +END:VTIMEZONE
 455.122 +END:VCALENDAR
   456.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   456.2 +++ b/src/zoneinfo-global/Antarctica/Rothera.ics	Tue Feb 10 18:12:00 2015 +0100
   456.3 @@ -0,0 +1,16 @@
   456.4 +BEGIN:VCALENDAR
   456.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   456.6 +VERSION:2.0
   456.7 +BEGIN:VTIMEZONE
   456.8 +TZID:Antarctica/Rothera
   456.9 +TZURL:http://tzurl.org/zoneinfo-global/Antarctica/Rothera
  456.10 +X-LIC-LOCATION:Antarctica/Rothera
  456.11 +BEGIN:STANDARD
  456.12 +TZOFFSETFROM:+0000
  456.13 +TZOFFSETTO:-0300
  456.14 +TZNAME:ROTT
  456.15 +DTSTART:19761201T000000
  456.16 +RDATE:19761201T000000
  456.17 +END:STANDARD
  456.18 +END:VTIMEZONE
  456.19 +END:VCALENDAR
   457.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   457.2 +++ b/src/zoneinfo-global/Antarctica/South_Pole.ics	Tue Feb 10 18:12:00 2015 +0100
   457.3 @@ -0,0 +1,108 @@
   457.4 +BEGIN:VCALENDAR
   457.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   457.6 +VERSION:2.0
   457.7 +BEGIN:VTIMEZONE
   457.8 +TZID:Antarctica/South_Pole
   457.9 +TZURL:http://tzurl.org/zoneinfo-global/Antarctica/South_Pole
  457.10 +X-LIC-LOCATION:Antarctica/South_Pole
  457.11 +BEGIN:DAYLIGHT
  457.12 +TZOFFSETFROM:+1200
  457.13 +TZOFFSETTO:+1300
  457.14 +TZNAME:NZDT
  457.15 +DTSTART:20070930T020000
  457.16 +RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU
  457.17 +END:DAYLIGHT
  457.18 +BEGIN:STANDARD
  457.19 +TZOFFSETFROM:+1300
  457.20 +TZOFFSETTO:+1200
  457.21 +TZNAME:NZST
  457.22 +DTSTART:20080406T030000
  457.23 +RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU
  457.24 +END:STANDARD
  457.25 +BEGIN:STANDARD
  457.26 +TZOFFSETFROM:+0000
  457.27 +TZOFFSETTO:+1200
  457.28 +TZNAME:NZST
  457.29 +DTSTART:19560101T000000
  457.30 +RDATE:19560101T000000
  457.31 +END:STANDARD
  457.32 +BEGIN:DAYLIGHT
  457.33 +TZOFFSETFROM:+1200
  457.34 +TZOFFSETTO:+1300
  457.35 +TZNAME:NZDT
  457.36 +DTSTART:19741103T020000
  457.37 +RDATE:19741103T020000
  457.38 +RDATE:19751026T020000
  457.39 +RDATE:19761031T020000
  457.40 +RDATE:19771030T020000
  457.41 +RDATE:19781029T020000
  457.42 +RDATE:19791028T020000
  457.43 +RDATE:19801026T020000
  457.44 +RDATE:19811025T020000
  457.45 +RDATE:19821031T020000
  457.46 +RDATE:19831030T020000
  457.47 +RDATE:19841028T020000
  457.48 +RDATE:19851027T020000
  457.49 +RDATE:19861026T020000
  457.50 +RDATE:19871025T020000
  457.51 +RDATE:19881030T020000
  457.52 +RDATE:19891008T020000
  457.53 +RDATE:19901007T020000
  457.54 +RDATE:19911006T020000
  457.55 +RDATE:19921004T020000
  457.56 +RDATE:19931003T020000
  457.57 +RDATE:19941002T020000
  457.58 +RDATE:19951001T020000
  457.59 +RDATE:19961006T020000
  457.60 +RDATE:19971005T020000
  457.61 +RDATE:19981004T020000
  457.62 +RDATE:19991003T020000
  457.63 +RDATE:20001001T020000
  457.64 +RDATE:20011007T020000
  457.65 +RDATE:20021006T020000
  457.66 +RDATE:20031005T020000
  457.67 +RDATE:20041003T020000
  457.68 +RDATE:20051002T020000
  457.69 +RDATE:20061001T020000
  457.70 +END:DAYLIGHT
  457.71 +BEGIN:STANDARD
  457.72 +TZOFFSETFROM:+1300
  457.73 +TZOFFSETTO:+1200
  457.74 +TZNAME:NZST
  457.75 +DTSTART:19750223T030000
  457.76 +RDATE:19750223T030000
  457.77 +RDATE:19760307T030000
  457.78 +RDATE:19770306T030000
  457.79 +RDATE:19780305T030000
  457.80 +RDATE:19790304T030000
  457.81 +RDATE:19800302T030000
  457.82 +RDATE:19810301T030000
  457.83 +RDATE:19820307T030000
  457.84 +RDATE:19830306T030000
  457.85 +RDATE:19840304T030000
  457.86 +RDATE:19850303T030000
  457.87 +RDATE:19860302T030000
  457.88 +RDATE:19870301T030000
  457.89 +RDATE:19880306T030000
  457.90 +RDATE:19890305T030000
  457.91 +RDATE:19900318T030000
  457.92 +RDATE:19910317T030000
  457.93 +RDATE:19920315T030000
  457.94 +RDATE:19930321T030000
  457.95 +RDATE:19940320T030000
  457.96 +RDATE:19950319T030000
  457.97 +RDATE:19960317T030000
  457.98 +RDATE:19970316T030000
  457.99 +RDATE:19980315T030000
 457.100 +RDATE:19990321T030000
 457.101 +RDATE:20000319T030000
 457.102 +RDATE:20010318T030000
 457.103 +RDATE:20020317T030000
 457.104 +RDATE:20030316T030000
 457.105 +RDATE:20040321T030000
 457.106 +RDATE:20050320T030000
 457.107 +RDATE:20060319T030000
 457.108 +RDATE:20070318T030000
 457.109 +END:STANDARD
 457.110 +END:VTIMEZONE
 457.111 +END:VCALENDAR
   458.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   458.2 +++ b/src/zoneinfo-global/Antarctica/Syowa.ics	Tue Feb 10 18:12:00 2015 +0100
   458.3 @@ -0,0 +1,16 @@
   458.4 +BEGIN:VCALENDAR
   458.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   458.6 +VERSION:2.0
   458.7 +BEGIN:VTIMEZONE
   458.8 +TZID:Antarctica/Syowa
   458.9 +TZURL:http://tzurl.org/zoneinfo-global/Antarctica/Syowa
  458.10 +X-LIC-LOCATION:Antarctica/Syowa
  458.11 +BEGIN:STANDARD
  458.12 +TZOFFSETFROM:+0000
  458.13 +TZOFFSETTO:+0300
  458.14 +TZNAME:SYOT
  458.15 +DTSTART:19570129T000000
  458.16 +RDATE:19570129T000000
  458.17 +END:STANDARD
  458.18 +END:VTIMEZONE
  458.19 +END:VCALENDAR
   459.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   459.2 +++ b/src/zoneinfo-global/Antarctica/Vostok.ics	Tue Feb 10 18:12:00 2015 +0100
   459.3 @@ -0,0 +1,16 @@
   459.4 +BEGIN:VCALENDAR
   459.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   459.6 +VERSION:2.0
   459.7 +BEGIN:VTIMEZONE
   459.8 +TZID:Antarctica/Vostok
   459.9 +TZURL:http://tzurl.org/zoneinfo-global/Antarctica/Vostok
  459.10 +X-LIC-LOCATION:Antarctica/Vostok
  459.11 +BEGIN:STANDARD
  459.12 +TZOFFSETFROM:+0000
  459.13 +TZOFFSETTO:+0600
  459.14 +TZNAME:VOST
  459.15 +DTSTART:19571216T000000
  459.16 +RDATE:19571216T000000
  459.17 +END:STANDARD
  459.18 +END:VTIMEZONE
  459.19 +END:VCALENDAR
   460.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   460.2 +++ b/src/zoneinfo-global/Arctic/Longyearbyen.ics	Tue Feb 10 18:12:00 2015 +0100
   460.3 @@ -0,0 +1,90 @@
   460.4 +BEGIN:VCALENDAR
   460.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   460.6 +VERSION:2.0
   460.7 +BEGIN:VTIMEZONE
   460.8 +TZID:Arctic/Longyearbyen
   460.9 +TZURL:http://tzurl.org/zoneinfo-global/Arctic/Longyearbyen
  460.10 +X-LIC-LOCATION:Arctic/Longyearbyen
  460.11 +BEGIN:DAYLIGHT
  460.12 +TZOFFSETFROM:+0100
  460.13 +TZOFFSETTO:+0200
  460.14 +TZNAME:CEST
  460.15 +DTSTART:19810329T020000
  460.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  460.17 +END:DAYLIGHT
  460.18 +BEGIN:STANDARD
  460.19 +TZOFFSETFROM:+0200
  460.20 +TZOFFSETTO:+0100
  460.21 +TZNAME:CET
  460.22 +DTSTART:19961027T030000
  460.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  460.24 +END:STANDARD
  460.25 +BEGIN:STANDARD
  460.26 +TZOFFSETFROM:+0043
  460.27 +TZOFFSETTO:+0100
  460.28 +TZNAME:CET
  460.29 +DTSTART:18950101T000000
  460.30 +RDATE:18950101T000000
  460.31 +END:STANDARD
  460.32 +BEGIN:DAYLIGHT
  460.33 +TZOFFSETFROM:+0100
  460.34 +TZOFFSETTO:+0200
  460.35 +TZNAME:CEST
  460.36 +DTSTART:19160522T010000
  460.37 +RDATE:19160522T010000
  460.38 +RDATE:19400810T230000
  460.39 +RDATE:19430329T020000
  460.40 +RDATE:19440403T020000
  460.41 +RDATE:19450402T020000
  460.42 +RDATE:19590315T020000
  460.43 +RDATE:19600320T020000
  460.44 +RDATE:19610319T020000
  460.45 +RDATE:19620318T020000
  460.46 +RDATE:19630317T020000
  460.47 +RDATE:19640315T020000
  460.48 +RDATE:19650425T020000
  460.49 +RDATE:19800406T020000
  460.50 +END:DAYLIGHT
  460.51 +BEGIN:STANDARD
  460.52 +TZOFFSETFROM:+0200
  460.53 +TZOFFSETTO:+0100
  460.54 +TZNAME:CET
  460.55 +DTSTART:19160930T000000
  460.56 +RDATE:19160930T000000
  460.57 +RDATE:19421102T030000
  460.58 +RDATE:19431004T030000
  460.59 +RDATE:19441002T030000
  460.60 +RDATE:19451001T030000
  460.61 +RDATE:19590920T030000
  460.62 +RDATE:19600918T030000
  460.63 +RDATE:19610917T030000
  460.64 +RDATE:19620916T030000
  460.65 +RDATE:19630915T030000
  460.66 +RDATE:19640920T030000
  460.67 +RDATE:19650919T030000
  460.68 +RDATE:19800928T030000
  460.69 +RDATE:19810927T030000
  460.70 +RDATE:19820926T030000
  460.71 +RDATE:19830925T030000
  460.72 +RDATE:19840930T030000
  460.73 +RDATE:19850929T030000
  460.74 +RDATE:19860928T030000
  460.75 +RDATE:19870927T030000
  460.76 +RDATE:19880925T030000
  460.77 +RDATE:19890924T030000
  460.78 +RDATE:19900930T030000
  460.79 +RDATE:19910929T030000
  460.80 +RDATE:19920927T030000
  460.81 +RDATE:19930926T030000
  460.82 +RDATE:19940925T030000
  460.83 +RDATE:19950924T030000
  460.84 +END:STANDARD
  460.85 +BEGIN:STANDARD
  460.86 +TZOFFSETFROM:+0100
  460.87 +TZOFFSETTO:+0100
  460.88 +TZNAME:CET
  460.89 +DTSTART:19800101T000000
  460.90 +RDATE:19800101T000000
  460.91 +END:STANDARD
  460.92 +END:VTIMEZONE
  460.93 +END:VCALENDAR
   461.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   461.2 +++ b/src/zoneinfo-global/Asia/Aden.ics	Tue Feb 10 18:12:00 2015 +0100
   461.3 @@ -0,0 +1,16 @@
   461.4 +BEGIN:VCALENDAR
   461.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   461.6 +VERSION:2.0
   461.7 +BEGIN:VTIMEZONE
   461.8 +TZID:Asia/Aden
   461.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Aden
  461.10 +X-LIC-LOCATION:Asia/Aden
  461.11 +BEGIN:STANDARD
  461.12 +TZOFFSETFROM:+030048
  461.13 +TZOFFSETTO:+0300
  461.14 +TZNAME:AST
  461.15 +DTSTART:19500101T000000
  461.16 +RDATE:19500101T000000
  461.17 +END:STANDARD
  461.18 +END:VTIMEZONE
  461.19 +END:VCALENDAR
   462.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   462.2 +++ b/src/zoneinfo-global/Asia/Almaty.ics	Tue Feb 10 18:12:00 2015 +0100
   462.3 @@ -0,0 +1,90 @@
   462.4 +BEGIN:VCALENDAR
   462.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   462.6 +VERSION:2.0
   462.7 +BEGIN:VTIMEZONE
   462.8 +TZID:Asia/Almaty
   462.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Almaty
  462.10 +X-LIC-LOCATION:Asia/Almaty
  462.11 +BEGIN:STANDARD
  462.12 +TZOFFSETFROM:+050748
  462.13 +TZOFFSETTO:+0500
  462.14 +TZNAME:ALMT
  462.15 +DTSTART:19240502T000000
  462.16 +RDATE:19240502T000000
  462.17 +END:STANDARD
  462.18 +BEGIN:STANDARD
  462.19 +TZOFFSETFROM:+0500
  462.20 +TZOFFSETTO:+0600
  462.21 +TZNAME:ALMT
  462.22 +DTSTART:19300621T000000
  462.23 +RDATE:19300621T000000
  462.24 +END:STANDARD
  462.25 +BEGIN:DAYLIGHT
  462.26 +TZOFFSETFROM:+0600
  462.27 +TZOFFSETTO:+0700
  462.28 +TZNAME:ALMST
  462.29 +DTSTART:19810401T000000
  462.30 +RDATE:19810401T000000
  462.31 +RDATE:19820401T000000
  462.32 +RDATE:19830401T000000
  462.33 +RDATE:19840401T000000
  462.34 +RDATE:19850331T020000
  462.35 +RDATE:19860330T020000
  462.36 +RDATE:19870329T020000
  462.37 +RDATE:19880327T020000
  462.38 +RDATE:19890326T020000
  462.39 +RDATE:19900325T020000
  462.40 +RDATE:19920328T230000
  462.41 +RDATE:19930328T020000
  462.42 +RDATE:19940327T020000
  462.43 +RDATE:19950326T020000
  462.44 +RDATE:19960331T020000
  462.45 +RDATE:19970330T020000
  462.46 +RDATE:19980329T020000
  462.47 +RDATE:19990328T020000
  462.48 +RDATE:20000326T020000
  462.49 +RDATE:20010325T020000
  462.50 +RDATE:20020331T020000
  462.51 +RDATE:20030330T020000
  462.52 +RDATE:20040328T020000
  462.53 +END:DAYLIGHT
  462.54 +BEGIN:STANDARD
  462.55 +TZOFFSETFROM:+0700
  462.56 +TZOFFSETTO:+0600
  462.57 +TZNAME:ALMT
  462.58 +DTSTART:19811001T000000
  462.59 +RDATE:19811001T000000
  462.60 +RDATE:19821001T000000
  462.61 +RDATE:19831001T000000
  462.62 +RDATE:19840930T030000
  462.63 +RDATE:19850929T030000
  462.64 +RDATE:19860928T030000
  462.65 +RDATE:19870927T030000
  462.66 +RDATE:19880925T030000
  462.67 +RDATE:19890924T030000
  462.68 +RDATE:19900930T030000
  462.69 +RDATE:19920926T230000
  462.70 +RDATE:19930926T030000
  462.71 +RDATE:19940925T030000
  462.72 +RDATE:19950924T030000
  462.73 +RDATE:19961027T030000
  462.74 +RDATE:19971026T030000
  462.75 +RDATE:19981025T030000
  462.76 +RDATE:19991031T030000
  462.77 +RDATE:20001029T030000
  462.78 +RDATE:20011028T030000
  462.79 +RDATE:20021027T030000
  462.80 +RDATE:20031026T030000
  462.81 +RDATE:20041031T030000
  462.82 +END:STANDARD
  462.83 +BEGIN:STANDARD
  462.84 +TZOFFSETFROM:+0600
  462.85 +TZOFFSETTO:+0600
  462.86 +TZNAME:ALMT
  462.87 +DTSTART:19910101T000000
  462.88 +RDATE:19910101T000000
  462.89 +RDATE:19920101T000000
  462.90 +RDATE:20050315T000000
  462.91 +END:STANDARD
  462.92 +END:VTIMEZONE
  462.93 +END:VCALENDAR
   463.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   463.2 +++ b/src/zoneinfo-global/Asia/Amman.ics	Tue Feb 10 18:12:00 2015 +0100
   463.3 @@ -0,0 +1,92 @@
   463.4 +BEGIN:VCALENDAR
   463.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   463.6 +VERSION:2.0
   463.7 +BEGIN:VTIMEZONE
   463.8 +TZID:Asia/Amman
   463.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Amman
  463.10 +X-LIC-LOCATION:Asia/Amman
  463.11 +BEGIN:DAYLIGHT
  463.12 +TZOFFSETFROM:+0200
  463.13 +TZOFFSETTO:+0300
  463.14 +TZNAME:EEST
  463.15 +DTSTART:20020328T235959
  463.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1TH
  463.17 +END:DAYLIGHT
  463.18 +BEGIN:STANDARD
  463.19 +TZOFFSETFROM:+0300
  463.20 +TZOFFSETTO:+0200
  463.21 +TZNAME:EET
  463.22 +DTSTART:20061027T010000
  463.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1FR
  463.24 +END:STANDARD
  463.25 +BEGIN:STANDARD
  463.26 +TZOFFSETFROM:+022344
  463.27 +TZOFFSETTO:+0200
  463.28 +TZNAME:EET
  463.29 +DTSTART:19310101T000000
  463.30 +RDATE:19310101T000000
  463.31 +END:STANDARD
  463.32 +BEGIN:DAYLIGHT
  463.33 +TZOFFSETFROM:+0200
  463.34 +TZOFFSETTO:+0300
  463.35 +TZNAME:EEST
  463.36 +DTSTART:19730606T000000
  463.37 +RDATE:19730606T000000
  463.38 +RDATE:19740501T000000
  463.39 +RDATE:19750501T000000
  463.40 +RDATE:19760501T000000
  463.41 +RDATE:19770501T000000
  463.42 +RDATE:19780430T000000
  463.43 +RDATE:19850401T000000
  463.44 +RDATE:19860404T000000
  463.45 +RDATE:19870403T000000
  463.46 +RDATE:19880401T000000
  463.47 +RDATE:19890508T000000
  463.48 +RDATE:19900427T000000
  463.49 +RDATE:19910417T000000
  463.50 +RDATE:19920410T000000
  463.51 +RDATE:19930402T000000
  463.52 +RDATE:19940401T000000
  463.53 +RDATE:19950407T000000
  463.54 +RDATE:19960405T000000
  463.55 +RDATE:19970404T000000
  463.56 +RDATE:19980403T000000
  463.57 +RDATE:19990701T000000
  463.58 +RDATE:20000330T000000
  463.59 +RDATE:20010329T000000
  463.60 +END:DAYLIGHT
  463.61 +BEGIN:STANDARD
  463.62 +TZOFFSETFROM:+0300
  463.63 +TZOFFSETTO:+0200
  463.64 +TZNAME:EET
  463.65 +DTSTART:19731001T000000
  463.66 +RDATE:19731001T000000
  463.67 +RDATE:19741001T000000
  463.68 +RDATE:19751001T000000
  463.69 +RDATE:19761101T000000
  463.70 +RDATE:19771001T000000
  463.71 +RDATE:19780930T000000
  463.72 +RDATE:19851001T000000
  463.73 +RDATE:19861003T000000
  463.74 +RDATE:19871002T000000
  463.75 +RDATE:19881007T000000
  463.76 +RDATE:19891006T000000
  463.77 +RDATE:19901005T000000
  463.78 +RDATE:19910927T000000
  463.79 +RDATE:19921002T000000
  463.80 +RDATE:19931001T000000
  463.81 +RDATE:19940916T000000
  463.82 +RDATE:19950915T010000
  463.83 +RDATE:19960920T010000
  463.84 +RDATE:19970919T010000
  463.85 +RDATE:19980918T010000
  463.86 +RDATE:19990924T010000
  463.87 +RDATE:20000929T010000
  463.88 +RDATE:20010928T010000
  463.89 +RDATE:20020927T010000
  463.90 +RDATE:20031024T010000
  463.91 +RDATE:20041015T010000
  463.92 +RDATE:20050930T010000
  463.93 +END:STANDARD
  463.94 +END:VTIMEZONE
  463.95 +END:VCALENDAR
   464.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   464.2 +++ b/src/zoneinfo-global/Asia/Anadyr.ics	Tue Feb 10 18:12:00 2015 +0100
   464.3 @@ -0,0 +1,133 @@
   464.4 +BEGIN:VCALENDAR
   464.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   464.6 +VERSION:2.0
   464.7 +BEGIN:VTIMEZONE
   464.8 +TZID:Asia/Anadyr
   464.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Anadyr
  464.10 +X-LIC-LOCATION:Asia/Anadyr
  464.11 +BEGIN:STANDARD
  464.12 +TZOFFSETFROM:+114956
  464.13 +TZOFFSETTO:+1200
  464.14 +TZNAME:ANAT
  464.15 +DTSTART:19240502T000000
  464.16 +RDATE:19240502T000000
  464.17 +END:STANDARD
  464.18 +BEGIN:STANDARD
  464.19 +TZOFFSETFROM:+1200
  464.20 +TZOFFSETTO:+1300
  464.21 +TZNAME:ANAT
  464.22 +DTSTART:19300621T000000
  464.23 +RDATE:19300621T000000
  464.24 +END:STANDARD
  464.25 +BEGIN:DAYLIGHT
  464.26 +TZOFFSETFROM:+1300
  464.27 +TZOFFSETTO:+1400
  464.28 +TZNAME:ANAST
  464.29 +DTSTART:19810401T000000
  464.30 +RDATE:19810401T000000
  464.31 +END:DAYLIGHT
  464.32 +BEGIN:STANDARD
  464.33 +TZOFFSETFROM:+1400
  464.34 +TZOFFSETTO:+1300
  464.35 +TZNAME:ANAT
  464.36 +DTSTART:19811001T000000
  464.37 +RDATE:19811001T000000
  464.38 +END:STANDARD
  464.39 +BEGIN:DAYLIGHT
  464.40 +TZOFFSETFROM:+1300
  464.41 +TZOFFSETTO:+1300
  464.42 +TZNAME:ANAST
  464.43 +DTSTART:19820401T000000
  464.44 +RDATE:19820401T000000
  464.45 +END:DAYLIGHT
  464.46 +BEGIN:STANDARD
  464.47 +TZOFFSETFROM:+1300
  464.48 +TZOFFSETTO:+1200
  464.49 +TZNAME:ANAT
  464.50 +DTSTART:19821001T000000
  464.51 +RDATE:19821001T000000
  464.52 +RDATE:19831001T000000
  464.53 +RDATE:19840930T030000
  464.54 +RDATE:19850929T030000
  464.55 +RDATE:19860928T030000
  464.56 +RDATE:19870927T030000
  464.57 +RDATE:19880925T030000
  464.58 +RDATE:19890924T030000
  464.59 +RDATE:19900930T030000
  464.60 +RDATE:19920926T230000
  464.61 +RDATE:19930926T030000
  464.62 +RDATE:19940925T030000
  464.63 +RDATE:19950924T030000
  464.64 +RDATE:19961027T030000
  464.65 +RDATE:19971026T030000
  464.66 +RDATE:19981025T030000
  464.67 +RDATE:19991031T030000
  464.68 +RDATE:20001029T030000
  464.69 +RDATE:20011028T030000
  464.70 +RDATE:20021027T030000
  464.71 +RDATE:20031026T030000
  464.72 +RDATE:20041031T030000
  464.73 +RDATE:20051030T030000
  464.74 +RDATE:20061029T030000
  464.75 +RDATE:20071028T030000
  464.76 +RDATE:20081026T030000
  464.77 +RDATE:20091025T030000
  464.78 +END:STANDARD
  464.79 +BEGIN:DAYLIGHT
  464.80 +TZOFFSETFROM:+1200
  464.81 +TZOFFSETTO:+1300
  464.82 +TZNAME:ANAST
  464.83 +DTSTART:19830401T000000
  464.84 +RDATE:19830401T000000
  464.85 +RDATE:19840401T000000
  464.86 +RDATE:19850331T020000
  464.87 +RDATE:19860330T020000
  464.88 +RDATE:19870329T020000
  464.89 +RDATE:19880327T020000
  464.90 +RDATE:19890326T020000
  464.91 +RDATE:19900325T020000
  464.92 +RDATE:19920328T230000
  464.93 +RDATE:19930328T020000
  464.94 +RDATE:19940327T020000
  464.95 +RDATE:19950326T020000
  464.96 +RDATE:19960331T020000
  464.97 +RDATE:19970330T020000
  464.98 +RDATE:19980329T020000
  464.99 +RDATE:19990328T020000
 464.100 +RDATE:20000326T020000
 464.101 +RDATE:20010325T020000
 464.102 +RDATE:20020331T020000
 464.103 +RDATE:20030330T020000
 464.104 +RDATE:20040328T020000
 464.105 +RDATE:20050327T020000
 464.106 +RDATE:20060326T020000
 464.107 +RDATE:20070325T020000
 464.108 +RDATE:20080330T020000
 464.109 +RDATE:20090329T020000
 464.110 +END:DAYLIGHT
 464.111 +BEGIN:DAYLIGHT
 464.112 +TZOFFSETFROM:+1200
 464.113 +TZOFFSETTO:+1200
 464.114 +TZNAME:ANAST
 464.115 +DTSTART:19910331T020000
 464.116 +RDATE:19910331T020000
 464.117 +RDATE:20100328T020000
 464.118 +END:DAYLIGHT
 464.119 +BEGIN:STANDARD
 464.120 +TZOFFSETFROM:+1200
 464.121 +TZOFFSETTO:+1100
 464.122 +TZNAME:ANAT
 464.123 +DTSTART:19910929T030000
 464.124 +RDATE:19910929T030000
 464.125 +RDATE:20101031T030000
 464.126 +END:STANDARD
 464.127 +BEGIN:STANDARD
 464.128 +TZOFFSETFROM:+1100
 464.129 +TZOFFSETTO:+1200
 464.130 +TZNAME:ANAT
 464.131 +DTSTART:19920119T020000
 464.132 +RDATE:19920119T020000
 464.133 +RDATE:20110327T020000
 464.134 +END:STANDARD
 464.135 +END:VTIMEZONE
 464.136 +END:VCALENDAR
   465.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   465.2 +++ b/src/zoneinfo-global/Asia/Aqtau.ics	Tue Feb 10 18:12:00 2015 +0100
   465.3 @@ -0,0 +1,144 @@
   465.4 +BEGIN:VCALENDAR
   465.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   465.6 +VERSION:2.0
   465.7 +BEGIN:VTIMEZONE
   465.8 +TZID:Asia/Aqtau
   465.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Aqtau
  465.10 +X-LIC-LOCATION:Asia/Aqtau
  465.11 +BEGIN:STANDARD
  465.12 +TZOFFSETFROM:+032104
  465.13 +TZOFFSETTO:+0400
  465.14 +TZNAME:FORT
  465.15 +DTSTART:19240502T000000
  465.16 +RDATE:19240502T000000
  465.17 +END:STANDARD
  465.18 +BEGIN:STANDARD
  465.19 +TZOFFSETFROM:+0400
  465.20 +TZOFFSETTO:+0500
  465.21 +TZNAME:FORT
  465.22 +DTSTART:19300621T000000
  465.23 +RDATE:19300621T000000
  465.24 +END:STANDARD
  465.25 +BEGIN:STANDARD
  465.26 +TZOFFSETFROM:+0500
  465.27 +TZOFFSETTO:+0500
  465.28 +TZNAME:SHET
  465.29 +DTSTART:19630101T000000
  465.30 +RDATE:19630101T000000
  465.31 +RDATE:19910101T000000
  465.32 +END:STANDARD
  465.33 +BEGIN:STANDARD
  465.34 +TZOFFSETFROM:+0500
  465.35 +TZOFFSETTO:+0600
  465.36 +TZNAME:SHET
  465.37 +DTSTART:19811001T000000
  465.38 +RDATE:19811001T000000
  465.39 +END:STANDARD
  465.40 +BEGIN:DAYLIGHT
  465.41 +TZOFFSETFROM:+0600
  465.42 +TZOFFSETTO:+0600
  465.43 +TZNAME:SHEST
  465.44 +DTSTART:19820401T000000
  465.45 +RDATE:19820401T000000
  465.46 +END:DAYLIGHT
  465.47 +BEGIN:STANDARD
  465.48 +TZOFFSETFROM:+0600
  465.49 +TZOFFSETTO:+0500
  465.50 +TZNAME:SHET
  465.51 +DTSTART:19821001T000000
  465.52 +RDATE:19821001T000000
  465.53 +RDATE:19831001T000000
  465.54 +RDATE:19840930T030000
  465.55 +RDATE:19850929T030000
  465.56 +RDATE:19860928T030000
  465.57 +RDATE:19870927T030000
  465.58 +RDATE:19880925T030000
  465.59 +RDATE:19890924T030000
  465.60 +RDATE:19900930T030000
  465.61 +END:STANDARD
  465.62 +BEGIN:DAYLIGHT
  465.63 +TZOFFSETFROM:+0500
  465.64 +TZOFFSETTO:+0600
  465.65 +TZNAME:SHEST
  465.66 +DTSTART:19830401T000000
  465.67 +RDATE:19830401T000000
  465.68 +RDATE:19840401T000000
  465.69 +RDATE:19850331T020000
  465.70 +RDATE:19860330T020000
  465.71 +RDATE:19870329T020000
  465.72 +RDATE:19880327T020000
  465.73 +RDATE:19890326T020000
  465.74 +RDATE:19900325T020000
  465.75 +END:DAYLIGHT
  465.76 +BEGIN:STANDARD
  465.77 +TZOFFSETFROM:+0500
  465.78 +TZOFFSETTO:+0500
  465.79 +TZNAME:AQTT
  465.80 +DTSTART:19911216T000000
  465.81 +RDATE:19911216T000000
  465.82 +END:STANDARD
  465.83 +BEGIN:DAYLIGHT
  465.84 +TZOFFSETFROM:+0500
  465.85 +TZOFFSETTO:+0600
  465.86 +TZNAME:AQTST
  465.87 +DTSTART:19920328T230000
  465.88 +RDATE:19920328T230000
  465.89 +RDATE:19930328T020000
  465.90 +RDATE:19940327T020000
  465.91 +END:DAYLIGHT
  465.92 +BEGIN:STANDARD
  465.93 +TZOFFSETFROM:+0600
  465.94 +TZOFFSETTO:+0500
  465.95 +TZNAME:AQTT
  465.96 +DTSTART:19920926T230000
  465.97 +RDATE:19920926T230000
  465.98 +RDATE:19930926T030000
  465.99 +RDATE:19940925T030000
 465.100 +END:STANDARD
 465.101 +BEGIN:DAYLIGHT
 465.102 +TZOFFSETFROM:+0500
 465.103 +TZOFFSETTO:+0500
 465.104 +TZNAME:AQTST
 465.105 +DTSTART:19950326T020000
 465.106 +RDATE:19950326T020000
 465.107 +END:DAYLIGHT
 465.108 +BEGIN:STANDARD
 465.109 +TZOFFSETFROM:+0500
 465.110 +TZOFFSETTO:+0400
 465.111 +TZNAME:AQTT
 465.112 +DTSTART:19950924T030000
 465.113 +RDATE:19950924T030000
 465.114 +RDATE:19961027T030000
 465.115 +RDATE:19971026T030000
 465.116 +RDATE:19981025T030000
 465.117 +RDATE:19991031T030000
 465.118 +RDATE:20001029T030000
 465.119 +RDATE:20011028T030000
 465.120 +RDATE:20021027T030000
 465.121 +RDATE:20031026T030000
 465.122 +RDATE:20041031T030000
 465.123 +END:STANDARD
 465.124 +BEGIN:DAYLIGHT
 465.125 +TZOFFSETFROM:+0400
 465.126 +TZOFFSETTO:+0500
 465.127 +TZNAME:AQTST
 465.128 +DTSTART:19960331T020000
 465.129 +RDATE:19960331T020000
 465.130 +RDATE:19970330T020000
 465.131 +RDATE:19980329T020000
 465.132 +RDATE:19990328T020000
 465.133 +RDATE:20000326T020000
 465.134 +RDATE:20010325T020000
 465.135 +RDATE:20020331T020000
 465.136 +RDATE:20030330T020000
 465.137 +RDATE:20040328T020000
 465.138 +END:DAYLIGHT
 465.139 +BEGIN:STANDARD
 465.140 +TZOFFSETFROM:+0400
 465.141 +TZOFFSETTO:+0500
 465.142 +TZNAME:AQTT
 465.143 +DTSTART:20050315T000000
 465.144 +RDATE:20050315T000000
 465.145 +END:STANDARD
 465.146 +END:VTIMEZONE
 465.147 +END:VCALENDAR
   466.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   466.2 +++ b/src/zoneinfo-global/Asia/Aqtobe.ics	Tue Feb 10 18:12:00 2015 +0100
   466.3 @@ -0,0 +1,120 @@
   466.4 +BEGIN:VCALENDAR
   466.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   466.6 +VERSION:2.0
   466.7 +BEGIN:VTIMEZONE
   466.8 +TZID:Asia/Aqtobe
   466.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Aqtobe
  466.10 +X-LIC-LOCATION:Asia/Aqtobe
  466.11 +BEGIN:STANDARD
  466.12 +TZOFFSETFROM:+034840
  466.13 +TZOFFSETTO:+0400
  466.14 +TZNAME:AKTT
  466.15 +DTSTART:19240502T000000
  466.16 +RDATE:19240502T000000
  466.17 +END:STANDARD
  466.18 +BEGIN:STANDARD
  466.19 +TZOFFSETFROM:+0400
  466.20 +TZOFFSETTO:+0500
  466.21 +TZNAME:AKTT
  466.22 +DTSTART:19300621T000000
  466.23 +RDATE:19300621T000000
  466.24 +END:STANDARD
  466.25 +BEGIN:DAYLIGHT
  466.26 +TZOFFSETFROM:+0500
  466.27 +TZOFFSETTO:+0600
  466.28 +TZNAME:AKTST
  466.29 +DTSTART:19810401T000000
  466.30 +RDATE:19810401T000000
  466.31 +RDATE:19830401T000000
  466.32 +RDATE:19840401T000000
  466.33 +RDATE:19850331T020000
  466.34 +RDATE:19860330T020000
  466.35 +RDATE:19870329T020000
  466.36 +RDATE:19880327T020000
  466.37 +RDATE:19890326T020000
  466.38 +RDATE:19900325T020000
  466.39 +END:DAYLIGHT
  466.40 +BEGIN:STANDARD
  466.41 +TZOFFSETFROM:+0600
  466.42 +TZOFFSETTO:+0600
  466.43 +TZNAME:AKTT
  466.44 +DTSTART:19811001T000000
  466.45 +RDATE:19811001T000000
  466.46 +END:STANDARD
  466.47 +BEGIN:DAYLIGHT
  466.48 +TZOFFSETFROM:+0600
  466.49 +TZOFFSETTO:+0600
  466.50 +TZNAME:AKTST
  466.51 +DTSTART:19820401T000000
  466.52 +RDATE:19820401T000000
  466.53 +END:DAYLIGHT
  466.54 +BEGIN:STANDARD
  466.55 +TZOFFSETFROM:+0600
  466.56 +TZOFFSETTO:+0500
  466.57 +TZNAME:AKTT
  466.58 +DTSTART:19821001T000000
  466.59 +RDATE:19821001T000000
  466.60 +RDATE:19831001T000000
  466.61 +RDATE:19840930T030000
  466.62 +RDATE:19850929T030000
  466.63 +RDATE:19860928T030000
  466.64 +RDATE:19870927T030000
  466.65 +RDATE:19880925T030000
  466.66 +RDATE:19890924T030000
  466.67 +RDATE:19900930T030000
  466.68 +END:STANDARD
  466.69 +BEGIN:STANDARD
  466.70 +TZOFFSETFROM:+0500
  466.71 +TZOFFSETTO:+0500
  466.72 +TZNAME:AKTT
  466.73 +DTSTART:19910101T000000
  466.74 +RDATE:19910101T000000
  466.75 +END:STANDARD
  466.76 +BEGIN:STANDARD
  466.77 +TZOFFSETFROM:+0500
  466.78 +TZOFFSETTO:+0500
  466.79 +TZNAME:AQTT
  466.80 +DTSTART:19911216T000000
  466.81 +RDATE:19911216T000000
  466.82 +RDATE:20050315T000000
  466.83 +END:STANDARD
  466.84 +BEGIN:DAYLIGHT
  466.85 +TZOFFSETFROM:+0500
  466.86 +TZOFFSETTO:+0600
  466.87 +TZNAME:AQTST
  466.88 +DTSTART:19920328T230000
  466.89 +RDATE:19920328T230000
  466.90 +RDATE:19930328T020000
  466.91 +RDATE:19940327T020000
  466.92 +RDATE:19950326T020000
  466.93 +RDATE:19960331T020000
  466.94 +RDATE:19970330T020000
  466.95 +RDATE:19980329T020000
  466.96 +RDATE:19990328T020000
  466.97 +RDATE:20000326T020000
  466.98 +RDATE:20010325T020000
  466.99 +RDATE:20020331T020000
 466.100 +RDATE:20030330T020000
 466.101 +RDATE:20040328T020000
 466.102 +END:DAYLIGHT
 466.103 +BEGIN:STANDARD
 466.104 +TZOFFSETFROM:+0600
 466.105 +TZOFFSETTO:+0500
 466.106 +TZNAME:AQTT
 466.107 +DTSTART:19920926T230000
 466.108 +RDATE:19920926T230000
 466.109 +RDATE:19930926T030000
 466.110 +RDATE:19940925T030000
 466.111 +RDATE:19950924T030000
 466.112 +RDATE:19961027T030000
 466.113 +RDATE:19971026T030000
 466.114 +RDATE:19981025T030000
 466.115 +RDATE:19991031T030000
 466.116 +RDATE:20001029T030000
 466.117 +RDATE:20011028T030000
 466.118 +RDATE:20021027T030000
 466.119 +RDATE:20031026T030000
 466.120 +RDATE:20041031T030000
 466.121 +END:STANDARD
 466.122 +END:VTIMEZONE
 466.123 +END:VCALENDAR
   467.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   467.2 +++ b/src/zoneinfo-global/Asia/Ashgabat.ics	Tue Feb 10 18:12:00 2015 +0100
   467.3 @@ -0,0 +1,83 @@
   467.4 +BEGIN:VCALENDAR
   467.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   467.6 +VERSION:2.0
   467.7 +BEGIN:VTIMEZONE
   467.8 +TZID:Asia/Ashgabat
   467.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Ashgabat
  467.10 +X-LIC-LOCATION:Asia/Ashgabat
  467.11 +BEGIN:STANDARD
  467.12 +TZOFFSETFROM:+035332
  467.13 +TZOFFSETTO:+0400
  467.14 +TZNAME:ASHT
  467.15 +DTSTART:19240502T000000
  467.16 +RDATE:19240502T000000
  467.17 +END:STANDARD
  467.18 +BEGIN:STANDARD
  467.19 +TZOFFSETFROM:+0400
  467.20 +TZOFFSETTO:+0500
  467.21 +TZNAME:ASHT
  467.22 +DTSTART:19300621T000000
  467.23 +RDATE:19300621T000000
  467.24 +END:STANDARD
  467.25 +BEGIN:DAYLIGHT
  467.26 +TZOFFSETFROM:+0500
  467.27 +TZOFFSETTO:+0600
  467.28 +TZNAME:ASHST
  467.29 +DTSTART:19810401T000000
  467.30 +RDATE:19810401T000000
  467.31 +RDATE:19820401T000000
  467.32 +RDATE:19830401T000000
  467.33 +RDATE:19840401T000000
  467.34 +RDATE:19850331T020000
  467.35 +RDATE:19860330T020000
  467.36 +RDATE:19870329T020000
  467.37 +RDATE:19880327T020000
  467.38 +RDATE:19890326T020000
  467.39 +RDATE:19900325T020000
  467.40 +END:DAYLIGHT
  467.41 +BEGIN:STANDARD
  467.42 +TZOFFSETFROM:+0600
  467.43 +TZOFFSETTO:+0500
  467.44 +TZNAME:ASHT
  467.45 +DTSTART:19811001T000000
  467.46 +RDATE:19811001T000000
  467.47 +RDATE:19821001T000000
  467.48 +RDATE:19831001T000000
  467.49 +RDATE:19840930T030000
  467.50 +RDATE:19850929T030000
  467.51 +RDATE:19860928T030000
  467.52 +RDATE:19870927T030000
  467.53 +RDATE:19880925T030000
  467.54 +RDATE:19890924T030000
  467.55 +RDATE:19900930T030000
  467.56 +END:STANDARD
  467.57 +BEGIN:DAYLIGHT
  467.58 +TZOFFSETFROM:+0500
  467.59 +TZOFFSETTO:+0500
  467.60 +TZNAME:ASHST
  467.61 +DTSTART:19910331T020000
  467.62 +RDATE:19910331T020000
  467.63 +END:DAYLIGHT
  467.64 +BEGIN:STANDARD
  467.65 +TZOFFSETFROM:+0500
  467.66 +TZOFFSETTO:+0400
  467.67 +TZNAME:ASHT
  467.68 +DTSTART:19910929T030000
  467.69 +RDATE:19910929T030000
  467.70 +END:STANDARD
  467.71 +BEGIN:STANDARD
  467.72 +TZOFFSETFROM:+0400
  467.73 +TZOFFSETTO:+0400
  467.74 +TZNAME:TMT
  467.75 +DTSTART:19911027T000000
  467.76 +RDATE:19911027T000000
  467.77 +END:STANDARD
  467.78 +BEGIN:STANDARD
  467.79 +TZOFFSETFROM:+0400
  467.80 +TZOFFSETTO:+0500
  467.81 +TZNAME:TMT
  467.82 +DTSTART:19920119T020000
  467.83 +RDATE:19920119T020000
  467.84 +END:STANDARD
  467.85 +END:VTIMEZONE
  467.86 +END:VCALENDAR
   468.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   468.2 +++ b/src/zoneinfo-global/Asia/Baghdad.ics	Tue Feb 10 18:12:00 2015 +0100
   468.3 @@ -0,0 +1,87 @@
   468.4 +BEGIN:VCALENDAR
   468.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   468.6 +VERSION:2.0
   468.7 +BEGIN:VTIMEZONE
   468.8 +TZID:Asia/Baghdad
   468.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Baghdad
  468.10 +X-LIC-LOCATION:Asia/Baghdad
  468.11 +BEGIN:STANDARD
  468.12 +TZOFFSETFROM:+025740
  468.13 +TZOFFSETTO:+025736
  468.14 +TZNAME:BMT
  468.15 +DTSTART:18900101T000000
  468.16 +RDATE:18900101T000000
  468.17 +END:STANDARD
  468.18 +BEGIN:STANDARD
  468.19 +TZOFFSETFROM:+025736
  468.20 +TZOFFSETTO:+0300
  468.21 +TZNAME:AST
  468.22 +DTSTART:19180101T000000
  468.23 +RDATE:19180101T000000
  468.24 +END:STANDARD
  468.25 +BEGIN:DAYLIGHT
  468.26 +TZOFFSETFROM:+0300
  468.27 +TZOFFSETTO:+0400
  468.28 +TZNAME:ADT
  468.29 +DTSTART:19820501T000000
  468.30 +RDATE:19820501T000000
  468.31 +RDATE:19830331T000000
  468.32 +RDATE:19840401T000000
  468.33 +RDATE:19850401T000000
  468.34 +RDATE:19860330T010000
  468.35 +RDATE:19870329T010000
  468.36 +RDATE:19880327T010000
  468.37 +RDATE:19890326T010000
  468.38 +RDATE:19900325T010000
  468.39 +RDATE:19910401T030000
  468.40 +RDATE:19920401T030000
  468.41 +RDATE:19930401T030000
  468.42 +RDATE:19940401T030000
  468.43 +RDATE:19950401T030000
  468.44 +RDATE:19960401T030000
  468.45 +RDATE:19970401T030000
  468.46 +RDATE:19980401T030000
  468.47 +RDATE:19990401T030000
  468.48 +RDATE:20000401T030000
  468.49 +RDATE:20010401T030000
  468.50 +RDATE:20020401T030000
  468.51 +RDATE:20030401T030000
  468.52 +RDATE:20040401T030000
  468.53 +RDATE:20050401T030000
  468.54 +RDATE:20060401T030000
  468.55 +RDATE:20070401T030000
  468.56 +END:DAYLIGHT
  468.57 +BEGIN:STANDARD
  468.58 +TZOFFSETFROM:+0400
  468.59 +TZOFFSETTO:+0300
  468.60 +TZNAME:AST
  468.61 +DTSTART:19821001T000000
  468.62 +RDATE:19821001T000000
  468.63 +RDATE:19831001T000000
  468.64 +RDATE:19841001T000000
  468.65 +RDATE:19850929T020000
  468.66 +RDATE:19860928T020000
  468.67 +RDATE:19870927T020000
  468.68 +RDATE:19880925T020000
  468.69 +RDATE:19890924T020000
  468.70 +RDATE:19900930T020000
  468.71 +RDATE:19911001T040000
  468.72 +RDATE:19921001T040000
  468.73 +RDATE:19931001T040000
  468.74 +RDATE:19941001T040000
  468.75 +RDATE:19951001T040000
  468.76 +RDATE:19961001T040000
  468.77 +RDATE:19971001T040000
  468.78 +RDATE:19981001T040000
  468.79 +RDATE:19991001T040000
  468.80 +RDATE:20001001T040000
  468.81 +RDATE:20011001T040000
  468.82 +RDATE:20021001T040000
  468.83 +RDATE:20031001T040000
  468.84 +RDATE:20041001T040000
  468.85 +RDATE:20051001T040000
  468.86 +RDATE:20061001T040000
  468.87 +RDATE:20071001T040000
  468.88 +END:STANDARD
  468.89 +END:VTIMEZONE
  468.90 +END:VCALENDAR
   469.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   469.2 +++ b/src/zoneinfo-global/Asia/Bahrain.ics	Tue Feb 10 18:12:00 2015 +0100
   469.3 @@ -0,0 +1,23 @@
   469.4 +BEGIN:VCALENDAR
   469.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   469.6 +VERSION:2.0
   469.7 +BEGIN:VTIMEZONE
   469.8 +TZID:Asia/Bahrain
   469.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Bahrain
  469.10 +X-LIC-LOCATION:Asia/Bahrain
  469.11 +BEGIN:STANDARD
  469.12 +TZOFFSETFROM:+032220
  469.13 +TZOFFSETTO:+0400
  469.14 +TZNAME:GST
  469.15 +DTSTART:19200101T000000
  469.16 +RDATE:19200101T000000
  469.17 +END:STANDARD
  469.18 +BEGIN:STANDARD
  469.19 +TZOFFSETFROM:+0400
  469.20 +TZOFFSETTO:+0300
  469.21 +TZNAME:AST
  469.22 +DTSTART:19720601T000000
  469.23 +RDATE:19720601T000000
  469.24 +END:STANDARD
  469.25 +END:VTIMEZONE
  469.26 +END:VCALENDAR
   470.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   470.2 +++ b/src/zoneinfo-global/Asia/Baku.ics	Tue Feb 10 18:12:00 2015 +0100
   470.3 @@ -0,0 +1,120 @@
   470.4 +BEGIN:VCALENDAR
   470.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   470.6 +VERSION:2.0
   470.7 +BEGIN:VTIMEZONE
   470.8 +TZID:Asia/Baku
   470.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Baku
  470.10 +X-LIC-LOCATION:Asia/Baku
  470.11 +BEGIN:DAYLIGHT
  470.12 +TZOFFSETFROM:+0400
  470.13 +TZOFFSETTO:+0500
  470.14 +TZNAME:AZST
  470.15 +DTSTART:19970330T040000
  470.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  470.17 +END:DAYLIGHT
  470.18 +BEGIN:STANDARD
  470.19 +TZOFFSETFROM:+0500
  470.20 +TZOFFSETTO:+0400
  470.21 +TZNAME:AZT
  470.22 +DTSTART:19971026T050000
  470.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  470.24 +END:STANDARD
  470.25 +BEGIN:STANDARD
  470.26 +TZOFFSETFROM:+031924
  470.27 +TZOFFSETTO:+0300
  470.28 +TZNAME:BAKT
  470.29 +DTSTART:19240502T000000
  470.30 +RDATE:19240502T000000
  470.31 +END:STANDARD
  470.32 +BEGIN:STANDARD
  470.33 +TZOFFSETFROM:+0300
  470.34 +TZOFFSETTO:+0400
  470.35 +TZNAME:BAKT
  470.36 +DTSTART:19570301T000000
  470.37 +RDATE:19570301T000000
  470.38 +END:STANDARD
  470.39 +BEGIN:DAYLIGHT
  470.40 +TZOFFSETFROM:+0400
  470.41 +TZOFFSETTO:+0500
  470.42 +TZNAME:BAKST
  470.43 +DTSTART:19810401T000000
  470.44 +RDATE:19810401T000000
  470.45 +RDATE:19820401T000000
  470.46 +RDATE:19830401T000000
  470.47 +RDATE:19840401T000000
  470.48 +RDATE:19850331T020000
  470.49 +RDATE:19860330T020000
  470.50 +RDATE:19870329T020000
  470.51 +RDATE:19880327T020000
  470.52 +RDATE:19890326T020000
  470.53 +RDATE:19900325T020000
  470.54 +END:DAYLIGHT
  470.55 +BEGIN:STANDARD
  470.56 +TZOFFSETFROM:+0500
  470.57 +TZOFFSETTO:+0400
  470.58 +TZNAME:BAKT
  470.59 +DTSTART:19811001T000000
  470.60 +RDATE:19811001T000000
  470.61 +RDATE:19821001T000000
  470.62 +RDATE:19831001T000000
  470.63 +RDATE:19840930T030000
  470.64 +RDATE:19850929T030000
  470.65 +RDATE:19860928T030000
  470.66 +RDATE:19870927T030000
  470.67 +RDATE:19880925T030000
  470.68 +RDATE:19890924T030000
  470.69 +RDATE:19900930T030000
  470.70 +END:STANDARD
  470.71 +BEGIN:DAYLIGHT
  470.72 +TZOFFSETFROM:+0400
  470.73 +TZOFFSETTO:+0400
  470.74 +TZNAME:BAKST
  470.75 +DTSTART:19910331T020000
  470.76 +RDATE:19910331T020000
  470.77 +END:DAYLIGHT
  470.78 +BEGIN:DAYLIGHT
  470.79 +TZOFFSETFROM:+0400
  470.80 +TZOFFSETTO:+0400
  470.81 +TZNAME:AZST
  470.82 +DTSTART:19910830T000000
  470.83 +RDATE:19910830T000000
  470.84 +END:DAYLIGHT
  470.85 +BEGIN:STANDARD
  470.86 +TZOFFSETFROM:+0400
  470.87 +TZOFFSETTO:+0300
  470.88 +TZNAME:AZT
  470.89 +DTSTART:19910929T030000
  470.90 +RDATE:19910929T030000
  470.91 +END:STANDARD
  470.92 +BEGIN:DAYLIGHT
  470.93 +TZOFFSETFROM:+0300
  470.94 +TZOFFSETTO:+0400
  470.95 +TZNAME:AZST
  470.96 +DTSTART:19920328T230000
  470.97 +RDATE:19920328T230000
  470.98 +END:DAYLIGHT
  470.99 +BEGIN:STANDARD
 470.100 +TZOFFSETFROM:+0400
 470.101 +TZOFFSETTO:+0400
 470.102 +TZNAME:AZT
 470.103 +DTSTART:19920926T230000
 470.104 +RDATE:19920926T230000
 470.105 +RDATE:19960101T000000
 470.106 +RDATE:19970101T000000
 470.107 +END:STANDARD
 470.108 +BEGIN:DAYLIGHT
 470.109 +TZOFFSETFROM:+0400
 470.110 +TZOFFSETTO:+0500
 470.111 +TZNAME:AZST
 470.112 +DTSTART:19960331T050000
 470.113 +RDATE:19960331T050000
 470.114 +END:DAYLIGHT
 470.115 +BEGIN:STANDARD
 470.116 +TZOFFSETFROM:+0500
 470.117 +TZOFFSETTO:+0400
 470.118 +TZNAME:AZT
 470.119 +DTSTART:19961027T060000
 470.120 +RDATE:19961027T060000
 470.121 +END:STANDARD
 470.122 +END:VTIMEZONE
 470.123 +END:VCALENDAR
   471.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   471.2 +++ b/src/zoneinfo-global/Asia/Bangkok.ics	Tue Feb 10 18:12:00 2015 +0100
   471.3 @@ -0,0 +1,23 @@
   471.4 +BEGIN:VCALENDAR
   471.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   471.6 +VERSION:2.0
   471.7 +BEGIN:VTIMEZONE
   471.8 +TZID:Asia/Bangkok
   471.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Bangkok
  471.10 +X-LIC-LOCATION:Asia/Bangkok
  471.11 +BEGIN:STANDARD
  471.12 +TZOFFSETFROM:+064204
  471.13 +TZOFFSETTO:+064204
  471.14 +TZNAME:BMT
  471.15 +DTSTART:18800101T000000
  471.16 +RDATE:18800101T000000
  471.17 +END:STANDARD
  471.18 +BEGIN:STANDARD
  471.19 +TZOFFSETFROM:+064204
  471.20 +TZOFFSETTO:+0700
  471.21 +TZNAME:ICT
  471.22 +DTSTART:19200401T000000
  471.23 +RDATE:19200401T000000
  471.24 +END:STANDARD
  471.25 +END:VTIMEZONE
  471.26 +END:VCALENDAR
   472.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   472.2 +++ b/src/zoneinfo-global/Asia/Beirut.ics	Tue Feb 10 18:12:00 2015 +0100
   472.3 @@ -0,0 +1,98 @@
   472.4 +BEGIN:VCALENDAR
   472.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   472.6 +VERSION:2.0
   472.7 +BEGIN:VTIMEZONE
   472.8 +TZID:Asia/Beirut
   472.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Beirut
  472.10 +X-LIC-LOCATION:Asia/Beirut
  472.11 +BEGIN:DAYLIGHT
  472.12 +TZOFFSETFROM:+0200
  472.13 +TZOFFSETTO:+0300
  472.14 +TZNAME:EEST
  472.15 +DTSTART:19930328T000000
  472.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  472.17 +END:DAYLIGHT
  472.18 +BEGIN:STANDARD
  472.19 +TZOFFSETFROM:+0300
  472.20 +TZOFFSETTO:+0200
  472.21 +TZNAME:EET
  472.22 +DTSTART:19991031T000000
  472.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  472.24 +END:STANDARD
  472.25 +BEGIN:STANDARD
  472.26 +TZOFFSETFROM:+0222
  472.27 +TZOFFSETTO:+0200
  472.28 +TZNAME:EET
  472.29 +DTSTART:18800101T000000
  472.30 +RDATE:18800101T000000
  472.31 +END:STANDARD
  472.32 +BEGIN:DAYLIGHT
  472.33 +TZOFFSETFROM:+0200
  472.34 +TZOFFSETTO:+0300
  472.35 +TZNAME:EEST
  472.36 +DTSTART:19200328T000000
  472.37 +RDATE:19200328T000000
  472.38 +RDATE:19210403T000000
  472.39 +RDATE:19220326T000000
  472.40 +RDATE:19230422T000000
  472.41 +RDATE:19570501T000000
  472.42 +RDATE:19580501T000000
  472.43 +RDATE:19590501T000000
  472.44 +RDATE:19600501T000000
  472.45 +RDATE:19610501T000000
  472.46 +RDATE:19720622T000000
  472.47 +RDATE:19730501T000000
  472.48 +RDATE:19740501T000000
  472.49 +RDATE:19750501T000000
  472.50 +RDATE:19760501T000000
  472.51 +RDATE:19770501T000000
  472.52 +RDATE:19780430T000000
  472.53 +RDATE:19840501T000000
  472.54 +RDATE:19850501T000000
  472.55 +RDATE:19860501T000000
  472.56 +RDATE:19870501T000000
  472.57 +RDATE:19880601T000000
  472.58 +RDATE:19890510T000000
  472.59 +RDATE:19900501T000000
  472.60 +RDATE:19910501T000000
  472.61 +RDATE:19920501T000000
  472.62 +END:DAYLIGHT
  472.63 +BEGIN:STANDARD
  472.64 +TZOFFSETFROM:+0300
  472.65 +TZOFFSETTO:+0200
  472.66 +TZNAME:EET
  472.67 +DTSTART:19201025T000000
  472.68 +RDATE:19201025T000000
  472.69 +RDATE:19211003T000000
  472.70 +RDATE:19221008T000000
  472.71 +RDATE:19230916T000000
  472.72 +RDATE:19571001T000000
  472.73 +RDATE:19581001T000000
  472.74 +RDATE:19591001T000000
  472.75 +RDATE:19601001T000000
  472.76 +RDATE:19611001T000000
  472.77 +RDATE:19721001T000000
  472.78 +RDATE:19731001T000000
  472.79 +RDATE:19741001T000000
  472.80 +RDATE:19751001T000000
  472.81 +RDATE:19761001T000000
  472.82 +RDATE:19771001T000000
  472.83 +RDATE:19780930T000000
  472.84 +RDATE:19841016T000000
  472.85 +RDATE:19851016T000000
  472.86 +RDATE:19861016T000000
  472.87 +RDATE:19871016T000000
  472.88 +RDATE:19881016T000000
  472.89 +RDATE:19891016T000000
  472.90 +RDATE:19901016T000000
  472.91 +RDATE:19911016T000000
  472.92 +RDATE:19921004T000000
  472.93 +RDATE:19930926T000000
  472.94 +RDATE:19940925T000000
  472.95 +RDATE:19950924T000000
  472.96 +RDATE:19960929T000000
  472.97 +RDATE:19970928T000000
  472.98 +RDATE:19980927T000000
  472.99 +END:STANDARD
 472.100 +END:VTIMEZONE
 472.101 +END:VCALENDAR
   473.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   473.2 +++ b/src/zoneinfo-global/Asia/Bishkek.ics	Tue Feb 10 18:12:00 2015 +0100
   473.3 @@ -0,0 +1,109 @@
   473.4 +BEGIN:VCALENDAR
   473.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   473.6 +VERSION:2.0
   473.7 +BEGIN:VTIMEZONE
   473.8 +TZID:Asia/Bishkek
   473.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Bishkek
  473.10 +X-LIC-LOCATION:Asia/Bishkek
  473.11 +BEGIN:STANDARD
  473.12 +TZOFFSETFROM:+045824
  473.13 +TZOFFSETTO:+0500
  473.14 +TZNAME:FRUT
  473.15 +DTSTART:19240502T000000
  473.16 +RDATE:19240502T000000
  473.17 +END:STANDARD
  473.18 +BEGIN:STANDARD
  473.19 +TZOFFSETFROM:+0500
  473.20 +TZOFFSETTO:+0600
  473.21 +TZNAME:FRUT
  473.22 +DTSTART:19300621T000000
  473.23 +RDATE:19300621T000000
  473.24 +END:STANDARD
  473.25 +BEGIN:DAYLIGHT
  473.26 +TZOFFSETFROM:+0600
  473.27 +TZOFFSETTO:+0700
  473.28 +TZNAME:FRUST
  473.29 +DTSTART:19810401T000000
  473.30 +RDATE:19810401T000000
  473.31 +RDATE:19820401T000000
  473.32 +RDATE:19830401T000000
  473.33 +RDATE:19840401T000000
  473.34 +RDATE:19850331T020000
  473.35 +RDATE:19860330T020000
  473.36 +RDATE:19870329T020000
  473.37 +RDATE:19880327T020000
  473.38 +RDATE:19890326T020000
  473.39 +RDATE:19900325T020000
  473.40 +END:DAYLIGHT
  473.41 +BEGIN:STANDARD
  473.42 +TZOFFSETFROM:+0700
  473.43 +TZOFFSETTO:+0600
  473.44 +TZNAME:FRUT
  473.45 +DTSTART:19811001T000000
  473.46 +RDATE:19811001T000000
  473.47 +RDATE:19821001T000000
  473.48 +RDATE:19831001T000000
  473.49 +RDATE:19840930T030000
  473.50 +RDATE:19850929T030000
  473.51 +RDATE:19860928T030000
  473.52 +RDATE:19870927T030000
  473.53 +RDATE:19880925T030000
  473.54 +RDATE:19890924T030000
  473.55 +RDATE:19900930T030000
  473.56 +END:STANDARD
  473.57 +BEGIN:DAYLIGHT
  473.58 +TZOFFSETFROM:+0600
  473.59 +TZOFFSETTO:+0600
  473.60 +TZNAME:FRUST
  473.61 +DTSTART:19910331T020000
  473.62 +RDATE:19910331T020000
  473.63 +END:DAYLIGHT
  473.64 +BEGIN:STANDARD
  473.65 +TZOFFSETFROM:+0600
  473.66 +TZOFFSETTO:+0500
  473.67 +TZNAME:KGT
  473.68 +DTSTART:19910831T020000
  473.69 +RDATE:19910831T020000
  473.70 +RDATE:19920927T000000
  473.71 +RDATE:19930926T000000
  473.72 +RDATE:19940925T000000
  473.73 +RDATE:19950924T000000
  473.74 +RDATE:19960929T000000
  473.75 +RDATE:19971026T023000
  473.76 +RDATE:19981025T023000
  473.77 +RDATE:19991031T023000
  473.78 +RDATE:20001029T023000
  473.79 +RDATE:20011028T023000
  473.80 +RDATE:20021027T023000
  473.81 +RDATE:20031026T023000
  473.82 +RDATE:20041031T023000
  473.83 +END:STANDARD
  473.84 +BEGIN:DAYLIGHT
  473.85 +TZOFFSETFROM:+0500
  473.86 +TZOFFSETTO:+0600
  473.87 +TZNAME:KGST
  473.88 +DTSTART:19920412T000000
  473.89 +RDATE:19920412T000000
  473.90 +RDATE:19930411T000000
  473.91 +RDATE:19940410T000000
  473.92 +RDATE:19950409T000000
  473.93 +RDATE:19960407T000000
  473.94 +RDATE:19970330T023000
  473.95 +RDATE:19980329T023000
  473.96 +RDATE:19990328T023000
  473.97 +RDATE:20000326T023000
  473.98 +RDATE:20010325T023000
  473.99 +RDATE:20020331T023000
 473.100 +RDATE:20030330T023000
 473.101 +RDATE:20040328T023000
 473.102 +RDATE:20050327T023000
 473.103 +END:DAYLIGHT
 473.104 +BEGIN:STANDARD
 473.105 +TZOFFSETFROM:+0600
 473.106 +TZOFFSETTO:+0600
 473.107 +TZNAME:KGT
 473.108 +DTSTART:20050812T000000
 473.109 +RDATE:20050812T000000
 473.110 +END:STANDARD
 473.111 +END:VTIMEZONE
 473.112 +END:VCALENDAR
   474.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   474.2 +++ b/src/zoneinfo-global/Asia/Brunei.ics	Tue Feb 10 18:12:00 2015 +0100
   474.3 @@ -0,0 +1,23 @@
   474.4 +BEGIN:VCALENDAR
   474.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   474.6 +VERSION:2.0
   474.7 +BEGIN:VTIMEZONE
   474.8 +TZID:Asia/Brunei
   474.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Brunei
  474.10 +X-LIC-LOCATION:Asia/Brunei
  474.11 +BEGIN:STANDARD
  474.12 +TZOFFSETFROM:+073940
  474.13 +TZOFFSETTO:+0730
  474.14 +TZNAME:BNT
  474.15 +DTSTART:19260301T000000
  474.16 +RDATE:19260301T000000
  474.17 +END:STANDARD
  474.18 +BEGIN:STANDARD
  474.19 +TZOFFSETFROM:+0730
  474.20 +TZOFFSETTO:+0800
  474.21 +TZNAME:BNT
  474.22 +DTSTART:19330101T000000
  474.23 +RDATE:19330101T000000
  474.24 +END:STANDARD
  474.25 +END:VTIMEZONE
  474.26 +END:VCALENDAR
   475.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   475.2 +++ b/src/zoneinfo-global/Asia/Choibalsan.ics	Tue Feb 10 18:12:00 2015 +0100
   475.3 @@ -0,0 +1,91 @@
   475.4 +BEGIN:VCALENDAR
   475.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   475.6 +VERSION:2.0
   475.7 +BEGIN:VTIMEZONE
   475.8 +TZID:Asia/Choibalsan
   475.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Choibalsan
  475.10 +X-LIC-LOCATION:Asia/Choibalsan
  475.11 +BEGIN:STANDARD
  475.12 +TZOFFSETFROM:+0738
  475.13 +TZOFFSETTO:+0700
  475.14 +TZNAME:ULAT
  475.15 +DTSTART:19050801T000000
  475.16 +RDATE:19050801T000000
  475.17 +END:STANDARD
  475.18 +BEGIN:STANDARD
  475.19 +TZOFFSETFROM:+0700
  475.20 +TZOFFSETTO:+0800
  475.21 +TZNAME:ULAT
  475.22 +DTSTART:19780101T000000
  475.23 +RDATE:19780101T000000
  475.24 +END:STANDARD
  475.25 +BEGIN:DAYLIGHT
  475.26 +TZOFFSETFROM:+0800
  475.27 +TZOFFSETTO:+1000
  475.28 +TZNAME:CHOST
  475.29 +DTSTART:19830401T000000
  475.30 +RDATE:19830401T000000
  475.31 +END:DAYLIGHT
  475.32 +BEGIN:STANDARD
  475.33 +TZOFFSETFROM:+1000
  475.34 +TZOFFSETTO:+0900
  475.35 +TZNAME:CHOT
  475.36 +DTSTART:19831001T000000
  475.37 +RDATE:19831001T000000
  475.38 +RDATE:19840930T000000
  475.39 +RDATE:19850929T000000
  475.40 +RDATE:19860928T000000
  475.41 +RDATE:19870927T000000
  475.42 +RDATE:19880925T000000
  475.43 +RDATE:19890924T000000
  475.44 +RDATE:19900930T000000
  475.45 +RDATE:19910929T000000
  475.46 +RDATE:19920927T000000
  475.47 +RDATE:19930926T000000
  475.48 +RDATE:19940925T000000
  475.49 +RDATE:19950924T000000
  475.50 +RDATE:19960929T000000
  475.51 +RDATE:19970928T000000
  475.52 +RDATE:19980927T000000
  475.53 +RDATE:20010929T020000
  475.54 +RDATE:20020928T020000
  475.55 +RDATE:20030927T020000
  475.56 +RDATE:20040925T020000
  475.57 +RDATE:20050924T020000
  475.58 +RDATE:20060930T020000
  475.59 +END:STANDARD
  475.60 +BEGIN:DAYLIGHT
  475.61 +TZOFFSETFROM:+0900
  475.62 +TZOFFSETTO:+1000
  475.63 +TZNAME:CHOST
  475.64 +DTSTART:19840401T000000
  475.65 +RDATE:19840401T000000
  475.66 +RDATE:19850331T000000
  475.67 +RDATE:19860330T000000
  475.68 +RDATE:19870329T000000
  475.69 +RDATE:19880327T000000
  475.70 +RDATE:19890326T000000
  475.71 +RDATE:19900325T000000
  475.72 +RDATE:19910331T000000
  475.73 +RDATE:19920329T000000
  475.74 +RDATE:19930328T000000
  475.75 +RDATE:19940327T000000
  475.76 +RDATE:19950326T000000
  475.77 +RDATE:19960331T000000
  475.78 +RDATE:19970330T000000
  475.79 +RDATE:19980329T000000
  475.80 +RDATE:20010428T020000
  475.81 +RDATE:20020330T020000
  475.82 +RDATE:20030329T020000
  475.83 +RDATE:20040327T020000
  475.84 +RDATE:20050326T020000
  475.85 +RDATE:20060325T020000
  475.86 +END:DAYLIGHT
  475.87 +BEGIN:STANDARD
  475.88 +TZOFFSETFROM:+0900
  475.89 +TZOFFSETTO:+0800
  475.90 +DTSTART:20080331T000000
  475.91 +RDATE:20080331T000000
  475.92 +END:STANDARD
  475.93 +END:VTIMEZONE
  475.94 +END:VCALENDAR
   476.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   476.2 +++ b/src/zoneinfo-global/Asia/Chongqing.ics	Tue Feb 10 18:12:00 2015 +0100
   476.3 @@ -0,0 +1,47 @@
   476.4 +BEGIN:VCALENDAR
   476.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   476.6 +VERSION:2.0
   476.7 +BEGIN:VTIMEZONE
   476.8 +TZID:Asia/Chongqing
   476.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Chongqing
  476.10 +X-LIC-LOCATION:Asia/Chongqing
  476.11 +BEGIN:STANDARD
  476.12 +TZOFFSETFROM:+070620
  476.13 +TZOFFSETTO:+0700
  476.14 +TZNAME:LONT
  476.15 +DTSTART:19280101T000000
  476.16 +RDATE:19280101T000000
  476.17 +END:STANDARD
  476.18 +BEGIN:STANDARD
  476.19 +TZOFFSETFROM:+0700
  476.20 +TZOFFSETTO:+0800
  476.21 +TZNAME:CST
  476.22 +DTSTART:19800501T000000
  476.23 +RDATE:19800501T000000
  476.24 +END:STANDARD
  476.25 +BEGIN:DAYLIGHT
  476.26 +TZOFFSETFROM:+0800
  476.27 +TZOFFSETTO:+0900
  476.28 +TZNAME:CDT
  476.29 +DTSTART:19860504T000000
  476.30 +RDATE:19860504T000000
  476.31 +RDATE:19870412T000000
  476.32 +RDATE:19880410T000000
  476.33 +RDATE:19890416T000000
  476.34 +RDATE:19900415T000000
  476.35 +RDATE:19910414T000000
  476.36 +END:DAYLIGHT
  476.37 +BEGIN:STANDARD
  476.38 +TZOFFSETFROM:+0900
  476.39 +TZOFFSETTO:+0800
  476.40 +TZNAME:CST
  476.41 +DTSTART:19860914T000000
  476.42 +RDATE:19860914T000000
  476.43 +RDATE:19870913T000000
  476.44 +RDATE:19880911T000000
  476.45 +RDATE:19890917T000000
  476.46 +RDATE:19900916T000000
  476.47 +RDATE:19910915T000000
  476.48 +END:STANDARD
  476.49 +END:VTIMEZONE
  476.50 +END:VCALENDAR
   477.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   477.2 +++ b/src/zoneinfo-global/Asia/Colombo.ics	Tue Feb 10 18:12:00 2015 +0100
   477.3 @@ -0,0 +1,65 @@
   477.4 +BEGIN:VCALENDAR
   477.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   477.6 +VERSION:2.0
   477.7 +BEGIN:VTIMEZONE
   477.8 +TZID:Asia/Colombo
   477.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Colombo
  477.10 +X-LIC-LOCATION:Asia/Colombo
  477.11 +BEGIN:STANDARD
  477.12 +TZOFFSETFROM:+051924
  477.13 +TZOFFSETTO:+051932
  477.14 +TZNAME:MMT
  477.15 +DTSTART:18800101T000000
  477.16 +RDATE:18800101T000000
  477.17 +END:STANDARD
  477.18 +BEGIN:STANDARD
  477.19 +TZOFFSETFROM:+051932
  477.20 +TZOFFSETTO:+0530
  477.21 +TZNAME:IST
  477.22 +DTSTART:19060101T000000
  477.23 +RDATE:19060101T000000
  477.24 +END:STANDARD
  477.25 +BEGIN:DAYLIGHT
  477.26 +TZOFFSETFROM:+0530
  477.27 +TZOFFSETTO:+0600
  477.28 +TZNAME:IHST
  477.29 +DTSTART:19420105T000000
  477.30 +RDATE:19420105T000000
  477.31 +END:DAYLIGHT
  477.32 +BEGIN:DAYLIGHT
  477.33 +TZOFFSETFROM:+0600
  477.34 +TZOFFSETTO:+0630
  477.35 +TZNAME:IST
  477.36 +DTSTART:19420901T000000
  477.37 +RDATE:19420901T000000
  477.38 +END:DAYLIGHT
  477.39 +BEGIN:STANDARD
  477.40 +TZOFFSETFROM:+0630
  477.41 +TZOFFSETTO:+0530
  477.42 +TZNAME:IST
  477.43 +DTSTART:19451016T020000
  477.44 +RDATE:19451016T020000
  477.45 +END:STANDARD
  477.46 +BEGIN:STANDARD
  477.47 +TZOFFSETFROM:+0530
  477.48 +TZOFFSETTO:+0630
  477.49 +TZNAME:LKT
  477.50 +DTSTART:19960525T000000
  477.51 +RDATE:19960525T000000
  477.52 +END:STANDARD
  477.53 +BEGIN:STANDARD
  477.54 +TZOFFSETFROM:+0630
  477.55 +TZOFFSETTO:+0600
  477.56 +TZNAME:LKT
  477.57 +DTSTART:19961026T003000
  477.58 +RDATE:19961026T003000
  477.59 +END:STANDARD
  477.60 +BEGIN:STANDARD
  477.61 +TZOFFSETFROM:+0600
  477.62 +TZOFFSETTO:+0530
  477.63 +TZNAME:IST
  477.64 +DTSTART:20060415T003000
  477.65 +RDATE:20060415T003000
  477.66 +END:STANDARD
  477.67 +END:VTIMEZONE
  477.68 +END:VCALENDAR
   478.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   478.2 +++ b/src/zoneinfo-global/Asia/Damascus.ics	Tue Feb 10 18:12:00 2015 +0100
   478.3 @@ -0,0 +1,135 @@
   478.4 +BEGIN:VCALENDAR
   478.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   478.6 +VERSION:2.0
   478.7 +BEGIN:VTIMEZONE
   478.8 +TZID:Asia/Damascus
   478.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Damascus
  478.10 +X-LIC-LOCATION:Asia/Damascus
  478.11 +BEGIN:STANDARD
  478.12 +TZOFFSETFROM:+0300
  478.13 +TZOFFSETTO:+0200
  478.14 +TZNAME:EET
  478.15 +DTSTART:20091030T000000
  478.16 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1FR
  478.17 +END:STANDARD
  478.18 +BEGIN:DAYLIGHT
  478.19 +TZOFFSETFROM:+0200
  478.20 +TZOFFSETTO:+0300
  478.21 +TZNAME:EEST
  478.22 +DTSTART:20100402T000000
  478.23 +RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1FR
  478.24 +END:DAYLIGHT
  478.25 +BEGIN:STANDARD
  478.26 +TZOFFSETFROM:+022512
  478.27 +TZOFFSETTO:+0200
  478.28 +TZNAME:EET
  478.29 +DTSTART:19200101T000000
  478.30 +RDATE:19200101T000000
  478.31 +END:STANDARD
  478.32 +BEGIN:DAYLIGHT
  478.33 +TZOFFSETFROM:+0200
  478.34 +TZOFFSETTO:+0300
  478.35 +TZNAME:EEST
  478.36 +DTSTART:19200418T020000
  478.37 +RDATE:19200418T020000
  478.38 +RDATE:19210417T020000
  478.39 +RDATE:19220416T020000
  478.40 +RDATE:19230415T020000
  478.41 +RDATE:19620429T020000
  478.42 +RDATE:19630501T020000
  478.43 +RDATE:19640501T020000
  478.44 +RDATE:19650501T020000
  478.45 +RDATE:19660424T020000
  478.46 +RDATE:19670501T020000
  478.47 +RDATE:19680501T020000
  478.48 +RDATE:19690501T020000
  478.49 +RDATE:19700501T020000
  478.50 +RDATE:19710501T020000
  478.51 +RDATE:19720501T020000
  478.52 +RDATE:19730501T020000
  478.53 +RDATE:19740501T020000
  478.54 +RDATE:19750501T020000
  478.55 +RDATE:19760501T020000
  478.56 +RDATE:19770501T020000
  478.57 +RDATE:19780501T020000
  478.58 +RDATE:19830409T020000
  478.59 +RDATE:19840409T020000
  478.60 +RDATE:19860216T020000
  478.61 +RDATE:19870301T020000
  478.62 +RDATE:19880315T020000
  478.63 +RDATE:19890331T020000
  478.64 +RDATE:19900401T020000
  478.65 +RDATE:19910401T000000
  478.66 +RDATE:19920408T000000
  478.67 +RDATE:19930326T000000
  478.68 +RDATE:19940401T000000
  478.69 +RDATE:19950401T000000
  478.70 +RDATE:19960401T000000
  478.71 +RDATE:19970331T000000
  478.72 +RDATE:19980330T000000
  478.73 +RDATE:19990401T000000
  478.74 +RDATE:20000401T000000
  478.75 +RDATE:20010401T000000
  478.76 +RDATE:20020401T000000
  478.77 +RDATE:20030401T000000
  478.78 +RDATE:20040401T000000
  478.79 +RDATE:20050401T000000
  478.80 +RDATE:20060401T000000
  478.81 +RDATE:20070330T000000
  478.82 +RDATE:20080404T000000
  478.83 +RDATE:20090327T000000
  478.84 +END:DAYLIGHT
  478.85 +BEGIN:STANDARD
  478.86 +TZOFFSETFROM:+0300
  478.87 +TZOFFSETTO:+0200
  478.88 +TZNAME:EET
  478.89 +DTSTART:19201003T020000
  478.90 +RDATE:19201003T020000
  478.91 +RDATE:19211002T020000
  478.92 +RDATE:19221001T020000
  478.93 +RDATE:19231007T020000
  478.94 +RDATE:19621001T020000
  478.95 +RDATE:19630930T020000
  478.96 +RDATE:19641001T020000
  478.97 +RDATE:19650930T020000
  478.98 +RDATE:19661001T020000
  478.99 +RDATE:19671001T020000
 478.100 +RDATE:19681001T020000
 478.101 +RDATE:19691001T020000
 478.102 +RDATE:19701001T020000
 478.103 +RDATE:19711001T020000
 478.104 +RDATE:19721001T020000
 478.105 +RDATE:19731001T020000
 478.106 +RDATE:19741001T020000
 478.107 +RDATE:19751001T020000
 478.108 +RDATE:19761001T020000
 478.109 +RDATE:19770901T020000
 478.110 +RDATE:19780901T020000
 478.111 +RDATE:19831001T020000
 478.112 +RDATE:19841001T020000
 478.113 +RDATE:19861009T020000
 478.114 +RDATE:19871031T020000
 478.115 +RDATE:19881031T020000
 478.116 +RDATE:19891001T020000
 478.117 +RDATE:19900930T020000
 478.118 +RDATE:19911001T000000
 478.119 +RDATE:19921001T000000
 478.120 +RDATE:19930925T000000
 478.121 +RDATE:19941001T000000
 478.122 +RDATE:19951001T000000
 478.123 +RDATE:19961001T000000
 478.124 +RDATE:19971001T000000
 478.125 +RDATE:19981001T000000
 478.126 +RDATE:19991001T000000
 478.127 +RDATE:20001001T000000
 478.128 +RDATE:20011001T000000
 478.129 +RDATE:20021001T000000
 478.130 +RDATE:20031001T000000
 478.131 +RDATE:20041001T000000
 478.132 +RDATE:20051001T000000
 478.133 +RDATE:20060922T000000
 478.134 +RDATE:20071102T000000
 478.135 +RDATE:20081101T000000
 478.136 +END:STANDARD
 478.137 +END:VTIMEZONE
 478.138 +END:VCALENDAR
   479.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   479.2 +++ b/src/zoneinfo-global/Asia/Dhaka.ics	Tue Feb 10 18:12:00 2015 +0100
   479.3 @@ -0,0 +1,66 @@
   479.4 +BEGIN:VCALENDAR
   479.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   479.6 +VERSION:2.0
   479.7 +BEGIN:VTIMEZONE
   479.8 +TZID:Asia/Dhaka
   479.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Dhaka
  479.10 +X-LIC-LOCATION:Asia/Dhaka
  479.11 +BEGIN:STANDARD
  479.12 +TZOFFSETFROM:+060140
  479.13 +TZOFFSETTO:+055320
  479.14 +TZNAME:HMT
  479.15 +DTSTART:18900101T000000
  479.16 +RDATE:18900101T000000
  479.17 +END:STANDARD
  479.18 +BEGIN:STANDARD
  479.19 +TZOFFSETFROM:+055320
  479.20 +TZOFFSETTO:+0630
  479.21 +TZNAME:BURT
  479.22 +DTSTART:19411001T000000
  479.23 +RDATE:19411001T000000
  479.24 +END:STANDARD
  479.25 +BEGIN:STANDARD
  479.26 +TZOFFSETFROM:+0630
  479.27 +TZOFFSETTO:+0530
  479.28 +TZNAME:IST
  479.29 +DTSTART:19420515T000000
  479.30 +RDATE:19420515T000000
  479.31 +END:STANDARD
  479.32 +BEGIN:STANDARD
  479.33 +TZOFFSETFROM:+0530
  479.34 +TZOFFSETTO:+0630
  479.35 +TZNAME:BURT
  479.36 +DTSTART:19420901T000000
  479.37 +RDATE:19420901T000000
  479.38 +END:STANDARD
  479.39 +BEGIN:STANDARD
  479.40 +TZOFFSETFROM:+0630
  479.41 +TZOFFSETTO:+0600
  479.42 +TZNAME:DACT
  479.43 +DTSTART:19510930T000000
  479.44 +RDATE:19510930T000000
  479.45 +END:STANDARD
  479.46 +BEGIN:STANDARD
  479.47 +TZOFFSETFROM:+0600
  479.48 +TZOFFSETTO:+0600
  479.49 +TZNAME:BDT
  479.50 +DTSTART:19710326T000000
  479.51 +RDATE:19710326T000000
  479.52 +RDATE:20090101T000000
  479.53 +END:STANDARD
  479.54 +BEGIN:DAYLIGHT
  479.55 +TZOFFSETFROM:+0600
  479.56 +TZOFFSETTO:+0700
  479.57 +TZNAME:BDST
  479.58 +DTSTART:20090619T230000
  479.59 +RDATE:20090619T230000
  479.60 +END:DAYLIGHT
  479.61 +BEGIN:STANDARD
  479.62 +TZOFFSETFROM:+0700
  479.63 +TZOFFSETTO:+0600
  479.64 +TZNAME:BDT
  479.65 +DTSTART:20091231T235900
  479.66 +RDATE:20091231T235900
  479.67 +END:STANDARD
  479.68 +END:VTIMEZONE
  479.69 +END:VCALENDAR
   480.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   480.2 +++ b/src/zoneinfo-global/Asia/Dili.ics	Tue Feb 10 18:12:00 2015 +0100
   480.3 @@ -0,0 +1,44 @@
   480.4 +BEGIN:VCALENDAR
   480.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   480.6 +VERSION:2.0
   480.7 +BEGIN:VTIMEZONE
   480.8 +TZID:Asia/Dili
   480.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Dili
  480.10 +X-LIC-LOCATION:Asia/Dili
  480.11 +BEGIN:STANDARD
  480.12 +TZOFFSETFROM:+082220
  480.13 +TZOFFSETTO:+0800
  480.14 +TZNAME:TLT
  480.15 +DTSTART:19120101T000000
  480.16 +RDATE:19120101T000000
  480.17 +END:STANDARD
  480.18 +BEGIN:STANDARD
  480.19 +TZOFFSETFROM:+0800
  480.20 +TZOFFSETTO:+0900
  480.21 +TZNAME:JST
  480.22 +DTSTART:19420221T230000
  480.23 +RDATE:19420221T230000
  480.24 +END:STANDARD
  480.25 +BEGIN:STANDARD
  480.26 +TZOFFSETFROM:+0900
  480.27 +TZOFFSETTO:+0900
  480.28 +TZNAME:TLT
  480.29 +DTSTART:19450923T000000
  480.30 +RDATE:19450923T000000
  480.31 +END:STANDARD
  480.32 +BEGIN:STANDARD
  480.33 +TZOFFSETFROM:+0900
  480.34 +TZOFFSETTO:+0800
  480.35 +TZNAME:CIT
  480.36 +DTSTART:19760503T000000
  480.37 +RDATE:19760503T000000
  480.38 +END:STANDARD
  480.39 +BEGIN:STANDARD
  480.40 +TZOFFSETFROM:+0800
  480.41 +TZOFFSETTO:+0900
  480.42 +TZNAME:TLT
  480.43 +DTSTART:20000917T000000
  480.44 +RDATE:20000917T000000
  480.45 +END:STANDARD
  480.46 +END:VTIMEZONE
  480.47 +END:VCALENDAR
   481.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   481.2 +++ b/src/zoneinfo-global/Asia/Dubai.ics	Tue Feb 10 18:12:00 2015 +0100
   481.3 @@ -0,0 +1,16 @@
   481.4 +BEGIN:VCALENDAR
   481.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   481.6 +VERSION:2.0
   481.7 +BEGIN:VTIMEZONE
   481.8 +TZID:Asia/Dubai
   481.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Dubai
  481.10 +X-LIC-LOCATION:Asia/Dubai
  481.11 +BEGIN:STANDARD
  481.12 +TZOFFSETFROM:+034112
  481.13 +TZOFFSETTO:+0400
  481.14 +TZNAME:GST
  481.15 +DTSTART:19200101T000000
  481.16 +RDATE:19200101T000000
  481.17 +END:STANDARD
  481.18 +END:VTIMEZONE
  481.19 +END:VCALENDAR
   482.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   482.2 +++ b/src/zoneinfo-global/Asia/Dushanbe.ics	Tue Feb 10 18:12:00 2015 +0100
   482.3 @@ -0,0 +1,69 @@
   482.4 +BEGIN:VCALENDAR
   482.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   482.6 +VERSION:2.0
   482.7 +BEGIN:VTIMEZONE
   482.8 +TZID:Asia/Dushanbe
   482.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Dushanbe
  482.10 +X-LIC-LOCATION:Asia/Dushanbe
  482.11 +BEGIN:STANDARD
  482.12 +TZOFFSETFROM:+043512
  482.13 +TZOFFSETTO:+0500
  482.14 +TZNAME:DUST
  482.15 +DTSTART:19240502T000000
  482.16 +RDATE:19240502T000000
  482.17 +END:STANDARD
  482.18 +BEGIN:STANDARD
  482.19 +TZOFFSETFROM:+0500
  482.20 +TZOFFSETTO:+0600
  482.21 +TZNAME:DUST
  482.22 +DTSTART:19300621T000000
  482.23 +RDATE:19300621T000000
  482.24 +END:STANDARD
  482.25 +BEGIN:DAYLIGHT
  482.26 +TZOFFSETFROM:+0600
  482.27 +TZOFFSETTO:+0700
  482.28 +TZNAME:DUSST
  482.29 +DTSTART:19810401T000000
  482.30 +RDATE:19810401T000000
  482.31 +RDATE:19820401T000000
  482.32 +RDATE:19830401T000000
  482.33 +RDATE:19840401T000000
  482.34 +RDATE:19850331T020000
  482.35 +RDATE:19860330T020000
  482.36 +RDATE:19870329T020000
  482.37 +RDATE:19880327T020000
  482.38 +RDATE:19890326T020000
  482.39 +RDATE:19900325T020000
  482.40 +END:DAYLIGHT
  482.41 +BEGIN:STANDARD
  482.42 +TZOFFSETFROM:+0700
  482.43 +TZOFFSETTO:+0600
  482.44 +TZNAME:DUST
  482.45 +DTSTART:19811001T000000
  482.46 +RDATE:19811001T000000
  482.47 +RDATE:19821001T000000
  482.48 +RDATE:19831001T000000
  482.49 +RDATE:19840930T030000
  482.50 +RDATE:19850929T030000
  482.51 +RDATE:19860928T030000
  482.52 +RDATE:19870927T030000
  482.53 +RDATE:19880925T030000
  482.54 +RDATE:19890924T030000
  482.55 +RDATE:19900930T030000
  482.56 +END:STANDARD
  482.57 +BEGIN:DAYLIGHT
  482.58 +TZOFFSETFROM:+0600
  482.59 +TZOFFSETTO:+0600
  482.60 +TZNAME:DUSST
  482.61 +DTSTART:19910331T020000
  482.62 +RDATE:19910331T020000
  482.63 +END:DAYLIGHT
  482.64 +BEGIN:STANDARD
  482.65 +TZOFFSETFROM:+0600
  482.66 +TZOFFSETTO:+0500
  482.67 +TZNAME:TJT
  482.68 +DTSTART:19910909T030000
  482.69 +RDATE:19910909T030000
  482.70 +END:STANDARD
  482.71 +END:VTIMEZONE
  482.72 +END:VCALENDAR
   483.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   483.2 +++ b/src/zoneinfo-global/Asia/Gaza.ics	Tue Feb 10 18:12:00 2015 +0100
   483.3 @@ -0,0 +1,145 @@
   483.4 +BEGIN:VCALENDAR
   483.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   483.6 +VERSION:2.0
   483.7 +BEGIN:VTIMEZONE
   483.8 +TZID:Asia/Gaza
   483.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Gaza
  483.10 +X-LIC-LOCATION:Asia/Gaza
  483.11 +BEGIN:STANDARD
  483.12 +TZOFFSETFROM:+021752
  483.13 +TZOFFSETTO:+0200
  483.14 +TZNAME:EET
  483.15 +DTSTART:19001001T000000
  483.16 +RDATE:19001001T000000
  483.17 +END:STANDARD
  483.18 +BEGIN:DAYLIGHT
  483.19 +TZOFFSETFROM:+0200
  483.20 +TZOFFSETTO:+0300
  483.21 +TZNAME:EET
  483.22 +DTSTART:19400601T000000
  483.23 +RDATE:19400601T000000
  483.24 +RDATE:19430401T020000
  483.25 +RDATE:19440401T000000
  483.26 +RDATE:19450416T000000
  483.27 +RDATE:19460416T020000
  483.28 +END:DAYLIGHT
  483.29 +BEGIN:STANDARD
  483.30 +TZOFFSETFROM:+0300
  483.31 +TZOFFSETTO:+0200
  483.32 +TZNAME:EET
  483.33 +DTSTART:19421101T000000
  483.34 +RDATE:19421101T000000
  483.35 +RDATE:19431101T000000
  483.36 +RDATE:19441101T000000
  483.37 +RDATE:19451101T020000
  483.38 +RDATE:19461101T000000
  483.39 +RDATE:19571001T000000
  483.40 +RDATE:19581001T000000
  483.41 +RDATE:19590930T030000
  483.42 +RDATE:19600930T030000
  483.43 +RDATE:19610930T030000
  483.44 +RDATE:19620930T030000
  483.45 +RDATE:19630930T030000
  483.46 +RDATE:19640930T030000
  483.47 +RDATE:19650930T030000
  483.48 +RDATE:19661001T030000
  483.49 +RDATE:19960920T010000
  483.50 +RDATE:19970919T010000
  483.51 +RDATE:19980918T010000
  483.52 +RDATE:19991015T000000
  483.53 +RDATE:20001020T000000
  483.54 +RDATE:20011019T000000
  483.55 +RDATE:20021018T000000
  483.56 +RDATE:20031017T000000
  483.57 +RDATE:20041001T010000
  483.58 +RDATE:20051004T020000
  483.59 +RDATE:20060922T000000
  483.60 +RDATE:20070913T020000
  483.61 +RDATE:20080829T000000
  483.62 +RDATE:20090904T020000
  483.63 +RDATE:20100811T000000
  483.64 +RDATE:20110801T000000
  483.65 +END:STANDARD
  483.66 +BEGIN:STANDARD
  483.67 +TZOFFSETFROM:+0200
  483.68 +TZOFFSETTO:+0200
  483.69 +TZNAME:EET
  483.70 +DTSTART:19480515T000000
  483.71 +RDATE:19480515T000000
  483.72 +RDATE:19960101T000000
  483.73 +RDATE:19990101T000000
  483.74 +END:STANDARD
  483.75 +BEGIN:DAYLIGHT
  483.76 +TZOFFSETFROM:+0200
  483.77 +TZOFFSETTO:+0300
  483.78 +TZNAME:EEST
  483.79 +DTSTART:19570510T000000
  483.80 +RDATE:19570510T000000
  483.81 +RDATE:19580501T000000
  483.82 +RDATE:19590501T010000
  483.83 +RDATE:19600501T010000
  483.84 +RDATE:19610501T010000
  483.85 +RDATE:19620501T010000
  483.86 +RDATE:19630501T010000
  483.87 +RDATE:19640501T010000
  483.88 +RDATE:19650501T010000
  483.89 +RDATE:19660501T010000
  483.90 +RDATE:19670501T010000
  483.91 +RDATE:19960405T000000
  483.92 +RDATE:19970404T000000
  483.93 +RDATE:19980403T000000
  483.94 +RDATE:19990416T000000
  483.95 +RDATE:20000421T000000
  483.96 +RDATE:20010420T000000
  483.97 +RDATE:20020419T000000
  483.98 +RDATE:20030418T000000
  483.99 +RDATE:20040416T000000
 483.100 +RDATE:20050415T000000
 483.101 +RDATE:20060401T000000
 483.102 +RDATE:20070401T000000
 483.103 +RDATE:20080401T000000
 483.104 +RDATE:20090327T000000
 483.105 +RDATE:20100327T000100
 483.106 +RDATE:20110402T120100
 483.107 +END:DAYLIGHT
 483.108 +BEGIN:STANDARD
 483.109 +TZOFFSETFROM:+0300
 483.110 +TZOFFSETTO:+0200
 483.111 +TZNAME:IST
 483.112 +DTSTART:19670605T000000
 483.113 +RDATE:19670605T000000
 483.114 +RDATE:19741013T000000
 483.115 +RDATE:19750831T000000
 483.116 +RDATE:19850915T000000
 483.117 +RDATE:19860907T000000
 483.118 +RDATE:19870913T000000
 483.119 +RDATE:19880903T000000
 483.120 +RDATE:19890903T000000
 483.121 +RDATE:19900826T000000
 483.122 +RDATE:19910901T000000
 483.123 +RDATE:19920906T000000
 483.124 +RDATE:19930905T000000
 483.125 +RDATE:19940828T000000
 483.126 +RDATE:19950903T000000
 483.127 +END:STANDARD
 483.128 +BEGIN:DAYLIGHT
 483.129 +TZOFFSETFROM:+0200
 483.130 +TZOFFSETTO:+0300
 483.131 +TZNAME:IDT
 483.132 +DTSTART:19740707T000000
 483.133 +RDATE:19740707T000000
 483.134 +RDATE:19750420T000000
 483.135 +RDATE:19850414T000000
 483.136 +RDATE:19860518T000000
 483.137 +RDATE:19870415T000000
 483.138 +RDATE:19880409T000000
 483.139 +RDATE:19890430T000000
 483.140 +RDATE:19900325T000000
 483.141 +RDATE:19910324T000000
 483.142 +RDATE:19920329T000000
 483.143 +RDATE:19930402T000000
 483.144 +RDATE:19940401T000000
 483.145 +RDATE:19950331T000000
 483.146 +END:DAYLIGHT
 483.147 +END:VTIMEZONE
 483.148 +END:VCALENDAR
   484.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   484.2 +++ b/src/zoneinfo-global/Asia/Harbin.ics	Tue Feb 10 18:12:00 2015 +0100
   484.3 @@ -0,0 +1,62 @@
   484.4 +BEGIN:VCALENDAR
   484.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   484.6 +VERSION:2.0
   484.7 +BEGIN:VTIMEZONE
   484.8 +TZID:Asia/Harbin
   484.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Harbin
  484.10 +X-LIC-LOCATION:Asia/Harbin
  484.11 +BEGIN:STANDARD
  484.12 +TZOFFSETFROM:+082644
  484.13 +TZOFFSETTO:+0830
  484.14 +TZNAME:CHAT
  484.15 +DTSTART:19280101T000000
  484.16 +RDATE:19280101T000000
  484.17 +END:STANDARD
  484.18 +BEGIN:STANDARD
  484.19 +TZOFFSETFROM:+0830
  484.20 +TZOFFSETTO:+0800
  484.21 +TZNAME:CST
  484.22 +DTSTART:19320301T000000
  484.23 +RDATE:19320301T000000
  484.24 +RDATE:19800501T000000
  484.25 +END:STANDARD
  484.26 +BEGIN:STANDARD
  484.27 +TZOFFSETFROM:+0800
  484.28 +TZOFFSETTO:+0900
  484.29 +TZNAME:CHAT
  484.30 +DTSTART:19400101T000000
  484.31 +RDATE:19400101T000000
  484.32 +END:STANDARD
  484.33 +BEGIN:STANDARD
  484.34 +TZOFFSETFROM:+0900
  484.35 +TZOFFSETTO:+0830
  484.36 +TZNAME:CHAT
  484.37 +DTSTART:19660501T000000
  484.38 +RDATE:19660501T000000
  484.39 +END:STANDARD
  484.40 +BEGIN:DAYLIGHT
  484.41 +TZOFFSETFROM:+0800
  484.42 +TZOFFSETTO:+0900
  484.43 +TZNAME:CDT
  484.44 +DTSTART:19860504T000000
  484.45 +RDATE:19860504T000000
  484.46 +RDATE:19870412T000000
  484.47 +RDATE:19880410T000000
  484.48 +RDATE:19890416T000000
  484.49 +RDATE:19900415T000000
  484.50 +RDATE:19910414T000000
  484.51 +END:DAYLIGHT
  484.52 +BEGIN:STANDARD
  484.53 +TZOFFSETFROM:+0900
  484.54 +TZOFFSETTO:+0800
  484.55 +TZNAME:CST
  484.56 +DTSTART:19860914T000000
  484.57 +RDATE:19860914T000000
  484.58 +RDATE:19870913T000000
  484.59 +RDATE:19880911T000000
  484.60 +RDATE:19890917T000000
  484.61 +RDATE:19900916T000000
  484.62 +RDATE:19910915T000000
  484.63 +END:STANDARD
  484.64 +END:VTIMEZONE
  484.65 +END:VCALENDAR
   485.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   485.2 +++ b/src/zoneinfo-global/Asia/Hebron.ics	Tue Feb 10 18:12:00 2015 +0100
   485.3 @@ -0,0 +1,154 @@
   485.4 +BEGIN:VCALENDAR
   485.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   485.6 +VERSION:2.0
   485.7 +BEGIN:VTIMEZONE
   485.8 +TZID:Asia/Hebron
   485.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Hebron
  485.10 +X-LIC-LOCATION:Asia/Hebron
  485.11 +BEGIN:STANDARD
  485.12 +TZOFFSETFROM:+022023
  485.13 +TZOFFSETTO:+0200
  485.14 +TZNAME:EET
  485.15 +DTSTART:19001001T000000
  485.16 +RDATE:19001001T000000
  485.17 +END:STANDARD
  485.18 +BEGIN:DAYLIGHT
  485.19 +TZOFFSETFROM:+0200
  485.20 +TZOFFSETTO:+0300
  485.21 +TZNAME:EET
  485.22 +DTSTART:19400601T000000
  485.23 +RDATE:19400601T000000
  485.24 +RDATE:19430401T020000
  485.25 +RDATE:19440401T000000
  485.26 +RDATE:19450416T000000
  485.27 +RDATE:19460416T020000
  485.28 +END:DAYLIGHT
  485.29 +BEGIN:STANDARD
  485.30 +TZOFFSETFROM:+0300
  485.31 +TZOFFSETTO:+0200
  485.32 +TZNAME:EET
  485.33 +DTSTART:19421101T000000
  485.34 +RDATE:19421101T000000
  485.35 +RDATE:19431101T000000
  485.36 +RDATE:19441101T000000
  485.37 +RDATE:19451101T020000
  485.38 +RDATE:19461101T000000
  485.39 +RDATE:19571001T000000
  485.40 +RDATE:19581001T000000
  485.41 +RDATE:19590930T030000
  485.42 +RDATE:19600930T030000
  485.43 +RDATE:19610930T030000
  485.44 +RDATE:19620930T030000
  485.45 +RDATE:19630930T030000
  485.46 +RDATE:19640930T030000
  485.47 +RDATE:19650930T030000
  485.48 +RDATE:19661001T030000
  485.49 +RDATE:19960920T010000
  485.50 +RDATE:19970919T010000
  485.51 +RDATE:19980918T010000
  485.52 +RDATE:19991015T000000
  485.53 +RDATE:20001020T000000
  485.54 +RDATE:20011019T000000
  485.55 +RDATE:20021018T000000
  485.56 +RDATE:20031017T000000
  485.57 +RDATE:20041001T010000
  485.58 +RDATE:20051004T020000
  485.59 +RDATE:20060922T000000
  485.60 +RDATE:20070913T020000
  485.61 +RDATE:20080901T000000
  485.62 +RDATE:20090904T020000
  485.63 +RDATE:20100811T000000
  485.64 +RDATE:20110801T000000
  485.65 +RDATE:20110930T030000
  485.66 +END:STANDARD
  485.67 +BEGIN:STANDARD
  485.68 +TZOFFSETFROM:+0200
  485.69 +TZOFFSETTO:+0200
  485.70 +TZNAME:EET
  485.71 +DTSTART:19480515T000000
  485.72 +RDATE:19480515T000000
  485.73 +RDATE:19960101T000000
  485.74 +RDATE:19990101T000000
  485.75 +END:STANDARD
  485.76 +BEGIN:DAYLIGHT
  485.77 +TZOFFSETFROM:+0200
  485.78 +TZOFFSETTO:+0300
  485.79 +TZNAME:EEST
  485.80 +DTSTART:19570510T000000
  485.81 +RDATE:19570510T000000
  485.82 +RDATE:19580501T000000
  485.83 +RDATE:19590501T010000
  485.84 +RDATE:19600501T010000
  485.85 +RDATE:19610501T010000
  485.86 +RDATE:19620501T010000
  485.87 +RDATE:19630501T010000
  485.88 +RDATE:19640501T010000
  485.89 +RDATE:19650501T010000
  485.90 +RDATE:19660501T010000
  485.91 +RDATE:19670501T010000
  485.92 +RDATE:19960405T000000
  485.93 +RDATE:19970404T000000
  485.94 +RDATE:19980403T000000
  485.95 +RDATE:19990416T000000
  485.96 +RDATE:20000421T000000
  485.97 +RDATE:20010420T000000
  485.98 +RDATE:20020419T000000
  485.99 +RDATE:20030418T000000
 485.100 +RDATE:20040416T000000
 485.101 +RDATE:20050415T000000
 485.102 +RDATE:20060401T000000
 485.103 +RDATE:20070401T000000
 485.104 +RDATE:20080401T000000
 485.105 +RDATE:20090327T000000
 485.106 +RDATE:20100327T000100
 485.107 +RDATE:20110401T120100
 485.108 +RDATE:20110830T000000
 485.109 +END:DAYLIGHT
 485.110 +BEGIN:STANDARD
 485.111 +TZOFFSETFROM:+0300
 485.112 +TZOFFSETTO:+0200
 485.113 +TZNAME:IST
 485.114 +DTSTART:19670605T000000
 485.115 +RDATE:19670605T000000
 485.116 +RDATE:19741013T000000
 485.117 +RDATE:19750831T000000
 485.118 +RDATE:19850915T000000
 485.119 +RDATE:19860907T000000
 485.120 +RDATE:19870913T000000
 485.121 +RDATE:19880903T000000
 485.122 +RDATE:19890903T000000
 485.123 +RDATE:19900826T000000
 485.124 +RDATE:19910901T000000
 485.125 +RDATE:19920906T000000
 485.126 +RDATE:19930905T000000
 485.127 +RDATE:19940828T000000
 485.128 +RDATE:19950903T000000
 485.129 +END:STANDARD
 485.130 +BEGIN:DAYLIGHT
 485.131 +TZOFFSETFROM:+0200
 485.132 +TZOFFSETTO:+0300
 485.133 +TZNAME:IDT
 485.134 +DTSTART:19740707T000000
 485.135 +RDATE:19740707T000000
 485.136 +RDATE:19750420T000000
 485.137 +RDATE:19850414T000000
 485.138 +RDATE:19860518T000000
 485.139 +RDATE:19870415T000000
 485.140 +RDATE:19880409T000000
 485.141 +RDATE:19890430T000000
 485.142 +RDATE:19900325T000000
 485.143 +RDATE:19910324T000000
 485.144 +RDATE:19920329T000000
 485.145 +RDATE:19930402T000000
 485.146 +RDATE:19940401T000000
 485.147 +RDATE:19950331T000000
 485.148 +END:DAYLIGHT
 485.149 +BEGIN:DAYLIGHT
 485.150 +TZOFFSETFROM:+0300
 485.151 +TZOFFSETTO:+0300
 485.152 +TZNAME:EEST
 485.153 +DTSTART:20080801T000000
 485.154 +RDATE:20080801T000000
 485.155 +END:DAYLIGHT
 485.156 +END:VTIMEZONE
 485.157 +END:VCALENDAR
   486.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   486.2 +++ b/src/zoneinfo-global/Asia/Ho_Chi_Minh.ics	Tue Feb 10 18:12:00 2015 +0100
   486.3 @@ -0,0 +1,37 @@
   486.4 +BEGIN:VCALENDAR
   486.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   486.6 +VERSION:2.0
   486.7 +BEGIN:VTIMEZONE
   486.8 +TZID:Asia/Ho_Chi_Minh
   486.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Ho_Chi_Minh
  486.10 +X-LIC-LOCATION:Asia/Ho_Chi_Minh
  486.11 +BEGIN:STANDARD
  486.12 +TZOFFSETFROM:+070640
  486.13 +TZOFFSETTO:+070620
  486.14 +TZNAME:SMT
  486.15 +DTSTART:19060609T000000
  486.16 +RDATE:19060609T000000
  486.17 +END:STANDARD
  486.18 +BEGIN:STANDARD
  486.19 +TZOFFSETFROM:+070620
  486.20 +TZOFFSETTO:+0700
  486.21 +TZNAME:ICT
  486.22 +DTSTART:19110311T000100
  486.23 +RDATE:19110311T000100
  486.24 +END:STANDARD
  486.25 +BEGIN:STANDARD
  486.26 +TZOFFSETFROM:+0700
  486.27 +TZOFFSETTO:+0800
  486.28 +TZNAME:ICT
  486.29 +DTSTART:19120501T000000
  486.30 +RDATE:19120501T000000
  486.31 +END:STANDARD
  486.32 +BEGIN:STANDARD
  486.33 +TZOFFSETFROM:+0800
  486.34 +TZOFFSETTO:+0700
  486.35 +TZNAME:ICT
  486.36 +DTSTART:19310501T000000
  486.37 +RDATE:19310501T000000
  486.38 +END:STANDARD
  486.39 +END:VTIMEZONE
  486.40 +END:VCALENDAR
   487.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   487.2 +++ b/src/zoneinfo-global/Asia/Hong_Kong.ics	Tue Feb 10 18:12:00 2015 +0100
   487.3 @@ -0,0 +1,109 @@
   487.4 +BEGIN:VCALENDAR
   487.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   487.6 +VERSION:2.0
   487.7 +BEGIN:VTIMEZONE
   487.8 +TZID:Asia/Hong_Kong
   487.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Hong_Kong
  487.10 +X-LIC-LOCATION:Asia/Hong_Kong
  487.11 +BEGIN:STANDARD
  487.12 +TZOFFSETFROM:+073636
  487.13 +TZOFFSETTO:+0800
  487.14 +TZNAME:HKT
  487.15 +DTSTART:19041030T000000
  487.16 +RDATE:19041030T000000
  487.17 +END:STANDARD
  487.18 +BEGIN:DAYLIGHT
  487.19 +TZOFFSETFROM:+0800
  487.20 +TZOFFSETTO:+0900
  487.21 +TZNAME:HKST
  487.22 +DTSTART:19410401T033000
  487.23 +RDATE:19410401T033000
  487.24 +RDATE:19460420T033000
  487.25 +RDATE:19470413T033000
  487.26 +RDATE:19480502T033000
  487.27 +RDATE:19490403T033000
  487.28 +RDATE:19500402T033000
  487.29 +RDATE:19510401T033000
  487.30 +RDATE:19520406T033000
  487.31 +RDATE:19530405T033000
  487.32 +RDATE:19540321T033000
  487.33 +RDATE:19550320T033000
  487.34 +RDATE:19560318T033000
  487.35 +RDATE:19570324T033000
  487.36 +RDATE:19580323T033000
  487.37 +RDATE:19590322T033000
  487.38 +RDATE:19600320T033000
  487.39 +RDATE:19610319T033000
  487.40 +RDATE:19620318T033000
  487.41 +RDATE:19630324T033000
  487.42 +RDATE:19640322T033000
  487.43 +RDATE:19650418T033000
  487.44 +RDATE:19660417T033000
  487.45 +RDATE:19670416T033000
  487.46 +RDATE:19680421T033000
  487.47 +RDATE:19690420T033000
  487.48 +RDATE:19700419T033000
  487.49 +RDATE:19710418T033000
  487.50 +RDATE:19720416T033000
  487.51 +RDATE:19730422T033000
  487.52 +RDATE:19731230T033000
  487.53 +RDATE:19750420T033000
  487.54 +RDATE:19760418T033000
  487.55 +RDATE:19790513T033000
  487.56 +END:DAYLIGHT
  487.57 +BEGIN:STANDARD
  487.58 +TZOFFSETFROM:+0900
  487.59 +TZOFFSETTO:+0800
  487.60 +TZNAME:HKT
  487.61 +DTSTART:19410930T033000
  487.62 +RDATE:19410930T033000
  487.63 +RDATE:19450915T000000
  487.64 +RDATE:19461201T033000
  487.65 +RDATE:19471230T033000
  487.66 +RDATE:19481031T033000
  487.67 +RDATE:19491030T033000
  487.68 +RDATE:19501029T033000
  487.69 +RDATE:19511028T033000
  487.70 +RDATE:19521025T033000
  487.71 +RDATE:19531101T033000
  487.72 +RDATE:19541031T033000
  487.73 +RDATE:19551106T033000
  487.74 +RDATE:19561104T033000
  487.75 +RDATE:19571103T033000
  487.76 +RDATE:19581102T033000
  487.77 +RDATE:19591101T033000
  487.78 +RDATE:19601106T033000
  487.79 +RDATE:19611105T033000
  487.80 +RDATE:19621104T033000
  487.81 +RDATE:19631103T033000
  487.82 +RDATE:19641101T033000
  487.83 +RDATE:19651017T033000
  487.84 +RDATE:19661016T033000
  487.85 +RDATE:19671022T033000
  487.86 +RDATE:19681020T033000
  487.87 +RDATE:19691019T033000
  487.88 +RDATE:19701018T033000
  487.89 +RDATE:19711017T033000
  487.90 +RDATE:19721022T033000
  487.91 +RDATE:19731021T033000
  487.92 +RDATE:19741020T033000
  487.93 +RDATE:19751019T033000
  487.94 +RDATE:19761017T033000
  487.95 +RDATE:19791021T033000
  487.96 +END:STANDARD
  487.97 +BEGIN:STANDARD
  487.98 +TZOFFSETFROM:+0800
  487.99 +TZOFFSETTO:+0900
 487.100 +TZNAME:JST
 487.101 +DTSTART:19411225T000000
 487.102 +RDATE:19411225T000000
 487.103 +END:STANDARD
 487.104 +BEGIN:DAYLIGHT
 487.105 +TZOFFSETFROM:+0900
 487.106 +TZOFFSETTO:+0900
 487.107 +TZNAME:HKST
 487.108 +DTSTART:19740421T033000
 487.109 +RDATE:19740421T033000
 487.110 +END:DAYLIGHT
 487.111 +END:VTIMEZONE
 487.112 +END:VCALENDAR
   488.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   488.2 +++ b/src/zoneinfo-global/Asia/Hovd.ics	Tue Feb 10 18:12:00 2015 +0100
   488.3 @@ -0,0 +1,79 @@
   488.4 +BEGIN:VCALENDAR
   488.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   488.6 +VERSION:2.0
   488.7 +BEGIN:VTIMEZONE
   488.8 +TZID:Asia/Hovd
   488.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Hovd
  488.10 +X-LIC-LOCATION:Asia/Hovd
  488.11 +BEGIN:STANDARD
  488.12 +TZOFFSETFROM:+060636
  488.13 +TZOFFSETTO:+0600
  488.14 +TZNAME:HOVT
  488.15 +DTSTART:19050801T000000
  488.16 +RDATE:19050801T000000
  488.17 +END:STANDARD
  488.18 +BEGIN:STANDARD
  488.19 +TZOFFSETFROM:+0600
  488.20 +TZOFFSETTO:+0700
  488.21 +TZNAME:HOVT
  488.22 +DTSTART:19780101T000000
  488.23 +RDATE:19780101T000000
  488.24 +END:STANDARD
  488.25 +BEGIN:DAYLIGHT
  488.26 +TZOFFSETFROM:+0700
  488.27 +TZOFFSETTO:+0800
  488.28 +TZNAME:HOVST
  488.29 +DTSTART:19830401T000000
  488.30 +RDATE:19830401T000000
  488.31 +RDATE:19840401T000000
  488.32 +RDATE:19850331T000000
  488.33 +RDATE:19860330T000000
  488.34 +RDATE:19870329T000000
  488.35 +RDATE:19880327T000000
  488.36 +RDATE:19890326T000000
  488.37 +RDATE:19900325T000000
  488.38 +RDATE:19910331T000000
  488.39 +RDATE:19920329T000000
  488.40 +RDATE:19930328T000000
  488.41 +RDATE:19940327T000000
  488.42 +RDATE:19950326T000000
  488.43 +RDATE:19960331T000000
  488.44 +RDATE:19970330T000000
  488.45 +RDATE:19980329T000000
  488.46 +RDATE:20010428T020000
  488.47 +RDATE:20020330T020000
  488.48 +RDATE:20030329T020000
  488.49 +RDATE:20040327T020000
  488.50 +RDATE:20050326T020000
  488.51 +RDATE:20060325T020000
  488.52 +END:DAYLIGHT
  488.53 +BEGIN:STANDARD
  488.54 +TZOFFSETFROM:+0800
  488.55 +TZOFFSETTO:+0700
  488.56 +TZNAME:HOVT
  488.57 +DTSTART:19831001T000000
  488.58 +RDATE:19831001T000000
  488.59 +RDATE:19840930T000000
  488.60 +RDATE:19850929T000000
  488.61 +RDATE:19860928T000000
  488.62 +RDATE:19870927T000000
  488.63 +RDATE:19880925T000000
  488.64 +RDATE:19890924T000000
  488.65 +RDATE:19900930T000000
  488.66 +RDATE:19910929T000000
  488.67 +RDATE:19920927T000000
  488.68 +RDATE:19930926T000000
  488.69 +RDATE:19940925T000000
  488.70 +RDATE:19950924T000000
  488.71 +RDATE:19960929T000000
  488.72 +RDATE:19970928T000000
  488.73 +RDATE:19980927T000000
  488.74 +RDATE:20010929T020000
  488.75 +RDATE:20020928T020000
  488.76 +RDATE:20030927T020000
  488.77 +RDATE:20040925T020000
  488.78 +RDATE:20050924T020000
  488.79 +RDATE:20060930T020000
  488.80 +END:STANDARD
  488.81 +END:VTIMEZONE
  488.82 +END:VCALENDAR
   489.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   489.2 +++ b/src/zoneinfo-global/Asia/Irkutsk.ics	Tue Feb 10 18:12:00 2015 +0100
   489.3 @@ -0,0 +1,122 @@
   489.4 +BEGIN:VCALENDAR
   489.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   489.6 +VERSION:2.0
   489.7 +BEGIN:VTIMEZONE
   489.8 +TZID:Asia/Irkutsk
   489.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Irkutsk
  489.10 +X-LIC-LOCATION:Asia/Irkutsk
  489.11 +BEGIN:STANDARD
  489.12 +TZOFFSETFROM:+065720
  489.13 +TZOFFSETTO:+065720
  489.14 +TZNAME:IMT
  489.15 +DTSTART:18800101T000000
  489.16 +RDATE:18800101T000000
  489.17 +END:STANDARD
  489.18 +BEGIN:STANDARD
  489.19 +TZOFFSETFROM:+065720
  489.20 +TZOFFSETTO:+0700
  489.21 +TZNAME:IRKT
  489.22 +DTSTART:19200125T000000
  489.23 +RDATE:19200125T000000
  489.24 +END:STANDARD
  489.25 +BEGIN:STANDARD
  489.26 +TZOFFSETFROM:+0700
  489.27 +TZOFFSETTO:+0800
  489.28 +TZNAME:IRKT
  489.29 +DTSTART:19300621T000000
  489.30 +RDATE:19300621T000000
  489.31 +RDATE:19920119T020000
  489.32 +END:STANDARD
  489.33 +BEGIN:DAYLIGHT
  489.34 +TZOFFSETFROM:+0800
  489.35 +TZOFFSETTO:+0900
  489.36 +TZNAME:IRKST
  489.37 +DTSTART:19810401T000000
  489.38 +RDATE:19810401T000000
  489.39 +RDATE:19820401T000000
  489.40 +RDATE:19830401T000000
  489.41 +RDATE:19840401T000000
  489.42 +RDATE:19850331T020000
  489.43 +RDATE:19860330T020000
  489.44 +RDATE:19870329T020000
  489.45 +RDATE:19880327T020000
  489.46 +RDATE:19890326T020000
  489.47 +RDATE:19900325T020000
  489.48 +RDATE:19920328T230000
  489.49 +RDATE:19930328T020000
  489.50 +RDATE:19940327T020000
  489.51 +RDATE:19950326T020000
  489.52 +RDATE:19960331T020000
  489.53 +RDATE:19970330T020000
  489.54 +RDATE:19980329T020000
  489.55 +RDATE:19990328T020000
  489.56 +RDATE:20000326T020000
  489.57 +RDATE:20010325T020000
  489.58 +RDATE:20020331T020000
  489.59 +RDATE:20030330T020000
  489.60 +RDATE:20040328T020000
  489.61 +RDATE:20050327T020000
  489.62 +RDATE:20060326T020000
  489.63 +RDATE:20070325T020000
  489.64 +RDATE:20080330T020000
  489.65 +RDATE:20090329T020000
  489.66 +RDATE:20100328T020000
  489.67 +END:DAYLIGHT
  489.68 +BEGIN:STANDARD
  489.69 +TZOFFSETFROM:+0900
  489.70 +TZOFFSETTO:+0800
  489.71 +TZNAME:IRKT
  489.72 +DTSTART:19811001T000000
  489.73 +RDATE:19811001T000000
  489.74 +RDATE:19821001T000000
  489.75 +RDATE:19831001T000000
  489.76 +RDATE:19840930T030000
  489.77 +RDATE:19850929T030000
  489.78 +RDATE:19860928T030000
  489.79 +RDATE:19870927T030000
  489.80 +RDATE:19880925T030000
  489.81 +RDATE:19890924T030000
  489.82 +RDATE:19900930T030000
  489.83 +RDATE:19920926T230000
  489.84 +RDATE:19930926T030000
  489.85 +RDATE:19940925T030000
  489.86 +RDATE:19950924T030000
  489.87 +RDATE:19961027T030000
  489.88 +RDATE:19971026T030000
  489.89 +RDATE:19981025T030000
  489.90 +RDATE:19991031T030000
  489.91 +RDATE:20001029T030000
  489.92 +RDATE:20011028T030000
  489.93 +RDATE:20021027T030000
  489.94 +RDATE:20031026T030000
  489.95 +RDATE:20041031T030000
  489.96 +RDATE:20051030T030000
  489.97 +RDATE:20061029T030000
  489.98 +RDATE:20071028T030000
  489.99 +RDATE:20081026T030000
 489.100 +RDATE:20091025T030000
 489.101 +RDATE:20101031T030000
 489.102 +END:STANDARD
 489.103 +BEGIN:DAYLIGHT
 489.104 +TZOFFSETFROM:+0800
 489.105 +TZOFFSETTO:+0800
 489.106 +TZNAME:IRKST
 489.107 +DTSTART:19910331T020000
 489.108 +RDATE:19910331T020000
 489.109 +END:DAYLIGHT
 489.110 +BEGIN:STANDARD
 489.111 +TZOFFSETFROM:+0800
 489.112 +TZOFFSETTO:+0700
 489.113 +TZNAME:IRKT
 489.114 +DTSTART:19910929T030000
 489.115 +RDATE:19910929T030000
 489.116 +END:STANDARD
 489.117 +BEGIN:STANDARD
 489.118 +TZOFFSETFROM:+0800
 489.119 +TZOFFSETTO:+0900
 489.120 +TZNAME:IRKT
 489.121 +DTSTART:20110327T020000
 489.122 +RDATE:20110327T020000
 489.123 +END:STANDARD
 489.124 +END:VTIMEZONE
 489.125 +END:VCALENDAR
   490.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   490.2 +++ b/src/zoneinfo-global/Asia/Istanbul.ics	Tue Feb 10 18:12:00 2015 +0100
   490.3 @@ -0,0 +1,194 @@
   490.4 +BEGIN:VCALENDAR
   490.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   490.6 +VERSION:2.0
   490.7 +BEGIN:VTIMEZONE
   490.8 +TZID:Asia/Istanbul
   490.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Istanbul
  490.10 +X-LIC-LOCATION:Asia/Istanbul
  490.11 +BEGIN:STANDARD
  490.12 +TZOFFSETFROM:+0300
  490.13 +TZOFFSETTO:+0200
  490.14 +TZNAME:EET
  490.15 +DTSTART:20071028T040000
  490.16 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  490.17 +END:STANDARD
  490.18 +BEGIN:DAYLIGHT
  490.19 +TZOFFSETFROM:+0200
  490.20 +TZOFFSETTO:+0300
  490.21 +TZNAME:EEST
  490.22 +DTSTART:20120325T030000
  490.23 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  490.24 +END:DAYLIGHT
  490.25 +BEGIN:STANDARD
  490.26 +TZOFFSETFROM:+015552
  490.27 +TZOFFSETTO:+015656
  490.28 +TZNAME:IMT
  490.29 +DTSTART:18800101T000000
  490.30 +RDATE:18800101T000000
  490.31 +END:STANDARD
  490.32 +BEGIN:STANDARD
  490.33 +TZOFFSETFROM:+015656
  490.34 +TZOFFSETTO:+0200
  490.35 +TZNAME:EET
  490.36 +DTSTART:19101001T000000
  490.37 +RDATE:19101001T000000
  490.38 +END:STANDARD
  490.39 +BEGIN:DAYLIGHT
  490.40 +TZOFFSETFROM:+0200
  490.41 +TZOFFSETTO:+0300
  490.42 +TZNAME:EEST
  490.43 +DTSTART:19160501T000000
  490.44 +RDATE:19160501T000000
  490.45 +RDATE:19200328T000000
  490.46 +RDATE:19210403T000000
  490.47 +RDATE:19220326T000000
  490.48 +RDATE:19240513T000000
  490.49 +RDATE:19250501T000000
  490.50 +RDATE:19400630T000000
  490.51 +RDATE:19401201T000000
  490.52 +RDATE:19420401T000000
  490.53 +RDATE:19450402T000000
  490.54 +RDATE:19460601T000000
  490.55 +RDATE:19470420T000000
  490.56 +RDATE:19480418T000000
  490.57 +RDATE:19490410T000000
  490.58 +RDATE:19500419T000000
  490.59 +RDATE:19510422T000000
  490.60 +RDATE:19620715T000000
  490.61 +RDATE:19640515T000000
  490.62 +RDATE:19700503T000000
  490.63 +RDATE:19710502T000000
  490.64 +RDATE:19720507T000000
  490.65 +RDATE:19730603T010000
  490.66 +RDATE:19740331T020000
  490.67 +RDATE:19750330T000000
  490.68 +RDATE:19760601T000000
  490.69 +RDATE:19770403T000000
  490.70 +RDATE:19780402T000000
  490.71 +RDATE:19860330T020000
  490.72 +RDATE:19870329T020000
  490.73 +RDATE:19880327T020000
  490.74 +RDATE:19890326T020000
  490.75 +RDATE:19900325T020000
  490.76 +RDATE:19910331T010000
  490.77 +RDATE:19920329T010000
  490.78 +RDATE:19930328T010000
  490.79 +RDATE:19940327T010000
  490.80 +RDATE:19950326T010000
  490.81 +RDATE:19960331T010000
  490.82 +RDATE:19970330T010000
  490.83 +RDATE:19980329T010000
  490.84 +RDATE:19990328T010000
  490.85 +RDATE:20000326T010000
  490.86 +RDATE:20010325T010000
  490.87 +RDATE:20020331T010000
  490.88 +RDATE:20030330T010000
  490.89 +RDATE:20040328T010000
  490.90 +RDATE:20050327T010000
  490.91 +RDATE:20060326T010000
  490.92 +RDATE:20070325T030000
  490.93 +RDATE:20080330T030000
  490.94 +RDATE:20090329T030000
  490.95 +RDATE:20100328T030000
  490.96 +RDATE:20110328T030000
  490.97 +END:DAYLIGHT
  490.98 +BEGIN:STANDARD
  490.99 +TZOFFSETFROM:+0300
 490.100 +TZOFFSETTO:+0200
 490.101 +TZNAME:EET
 490.102 +DTSTART:19161001T000000
 490.103 +RDATE:19161001T000000
 490.104 +RDATE:19201025T000000
 490.105 +RDATE:19211003T000000
 490.106 +RDATE:19221008T000000
 490.107 +RDATE:19241001T000000
 490.108 +RDATE:19251001T000000
 490.109 +RDATE:19401005T000000
 490.110 +RDATE:19410921T000000
 490.111 +RDATE:19421101T000000
 490.112 +RDATE:19451008T000000
 490.113 +RDATE:19461001T000000
 490.114 +RDATE:19471005T000000
 490.115 +RDATE:19481003T000000
 490.116 +RDATE:19491002T000000
 490.117 +RDATE:19501008T000000
 490.118 +RDATE:19511008T000000
 490.119 +RDATE:19621008T000000
 490.120 +RDATE:19641001T000000
 490.121 +RDATE:19701004T000000
 490.122 +RDATE:19711003T000000
 490.123 +RDATE:19721008T000000
 490.124 +RDATE:19731104T030000
 490.125 +RDATE:19741103T050000
 490.126 +RDATE:19751026T000000
 490.127 +RDATE:19761031T000000
 490.128 +RDATE:19771016T000000
 490.129 +RDATE:19850928T000000
 490.130 +RDATE:19860928T030000
 490.131 +RDATE:19870927T030000
 490.132 +RDATE:19880925T030000
 490.133 +RDATE:19890924T030000
 490.134 +RDATE:19900930T030000
 490.135 +RDATE:19910929T020000
 490.136 +RDATE:19920927T020000
 490.137 +RDATE:19930926T020000
 490.138 +RDATE:19940925T020000
 490.139 +RDATE:19950924T020000
 490.140 +RDATE:19961027T020000
 490.141 +RDATE:19971026T020000
 490.142 +RDATE:19981025T020000
 490.143 +RDATE:19991031T020000
 490.144 +RDATE:20001029T020000
 490.145 +RDATE:20011028T020000
 490.146 +RDATE:20021027T020000
 490.147 +RDATE:20031026T020000
 490.148 +RDATE:20041031T020000
 490.149 +RDATE:20051030T020000
 490.150 +RDATE:20061029T020000
 490.151 +END:STANDARD
 490.152 +BEGIN:DAYLIGHT
 490.153 +TZOFFSETFROM:+0300
 490.154 +TZOFFSETTO:+0400
 490.155 +TZNAME:TRST
 490.156 +DTSTART:19781015T000000
 490.157 +RDATE:19781015T000000
 490.158 +RDATE:19800406T030000
 490.159 +RDATE:19810329T030000
 490.160 +RDATE:19820328T030000
 490.161 +RDATE:19830731T000000
 490.162 +END:DAYLIGHT
 490.163 +BEGIN:DAYLIGHT
 490.164 +TZOFFSETFROM:+0400
 490.165 +TZOFFSETTO:+0400
 490.166 +TZNAME:TRST
 490.167 +DTSTART:19790401T030000
 490.168 +RDATE:19790401T030000
 490.169 +END:DAYLIGHT
 490.170 +BEGIN:STANDARD
 490.171 +TZOFFSETFROM:+0400
 490.172 +TZOFFSETTO:+0300
 490.173 +TZNAME:TRT
 490.174 +DTSTART:19791015T000000
 490.175 +RDATE:19791015T000000
 490.176 +RDATE:19801013T000000
 490.177 +RDATE:19811012T000000
 490.178 +RDATE:19821011T000000
 490.179 +RDATE:19831002T000000
 490.180 +END:STANDARD
 490.181 +BEGIN:DAYLIGHT
 490.182 +TZOFFSETFROM:+0300
 490.183 +TZOFFSETTO:+0300
 490.184 +TZNAME:EEST
 490.185 +DTSTART:19850420T000000
 490.186 +RDATE:19850420T000000
 490.187 +END:DAYLIGHT
 490.188 +BEGIN:STANDARD
 490.189 +TZOFFSETFROM:+0200
 490.190 +TZOFFSETTO:+0200
 490.191 +TZNAME:EET
 490.192 +DTSTART:20070101T000000
 490.193 +RDATE:20070101T000000
 490.194 +RDATE:20110327T030000
 490.195 +END:STANDARD
 490.196 +END:VTIMEZONE
 490.197 +END:VCALENDAR
   491.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   491.2 +++ b/src/zoneinfo-global/Asia/Jakarta.ics	Tue Feb 10 18:12:00 2015 +0100
   491.3 @@ -0,0 +1,65 @@
   491.4 +BEGIN:VCALENDAR
   491.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   491.6 +VERSION:2.0
   491.7 +BEGIN:VTIMEZONE
   491.8 +TZID:Asia/Jakarta
   491.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Jakarta
  491.10 +X-LIC-LOCATION:Asia/Jakarta
  491.11 +BEGIN:STANDARD
  491.12 +TZOFFSETFROM:+070712
  491.13 +TZOFFSETTO:+070712
  491.14 +TZNAME:JMT
  491.15 +DTSTART:18670810T000000
  491.16 +RDATE:18670810T000000
  491.17 +END:STANDARD
  491.18 +BEGIN:STANDARD
  491.19 +TZOFFSETFROM:+070712
  491.20 +TZOFFSETTO:+0720
  491.21 +TZNAME:JAVT
  491.22 +DTSTART:19231231T234712
  491.23 +RDATE:19231231T234712
  491.24 +END:STANDARD
  491.25 +BEGIN:STANDARD
  491.26 +TZOFFSETFROM:+0720
  491.27 +TZOFFSETTO:+0730
  491.28 +TZNAME:WIT
  491.29 +DTSTART:19321101T000000
  491.30 +RDATE:19321101T000000
  491.31 +END:STANDARD
  491.32 +BEGIN:STANDARD
  491.33 +TZOFFSETFROM:+0730
  491.34 +TZOFFSETTO:+0900
  491.35 +TZNAME:JST
  491.36 +DTSTART:19420323T000000
  491.37 +RDATE:19420323T000000
  491.38 +END:STANDARD
  491.39 +BEGIN:STANDARD
  491.40 +TZOFFSETFROM:+0900
  491.41 +TZOFFSETTO:+0730
  491.42 +TZNAME:WIT
  491.43 +DTSTART:19450923T000000
  491.44 +RDATE:19450923T000000
  491.45 +END:STANDARD
  491.46 +BEGIN:STANDARD
  491.47 +TZOFFSETFROM:+0730
  491.48 +TZOFFSETTO:+0800
  491.49 +TZNAME:WIT
  491.50 +DTSTART:19480501T000000
  491.51 +RDATE:19480501T000000
  491.52 +END:STANDARD
  491.53 +BEGIN:STANDARD
  491.54 +TZOFFSETFROM:+0800
  491.55 +TZOFFSETTO:+0730
  491.56 +TZNAME:WIT
  491.57 +DTSTART:19500501T000000
  491.58 +RDATE:19500501T000000
  491.59 +END:STANDARD
  491.60 +BEGIN:STANDARD
  491.61 +TZOFFSETFROM:+0730
  491.62 +TZOFFSETTO:+0700
  491.63 +TZNAME:WIT
  491.64 +DTSTART:19640101T000000
  491.65 +RDATE:19640101T000000
  491.66 +END:STANDARD
  491.67 +END:VTIMEZONE
  491.68 +END:VCALENDAR
   492.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   492.2 +++ b/src/zoneinfo-global/Asia/Jayapura.ics	Tue Feb 10 18:12:00 2015 +0100
   492.3 @@ -0,0 +1,30 @@
   492.4 +BEGIN:VCALENDAR
   492.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   492.6 +VERSION:2.0
   492.7 +BEGIN:VTIMEZONE
   492.8 +TZID:Asia/Jayapura
   492.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Jayapura
  492.10 +X-LIC-LOCATION:Asia/Jayapura
  492.11 +BEGIN:STANDARD
  492.12 +TZOFFSETFROM:+092248
  492.13 +TZOFFSETTO:+0900
  492.14 +TZNAME:EIT
  492.15 +DTSTART:19321101T000000
  492.16 +RDATE:19321101T000000
  492.17 +END:STANDARD
  492.18 +BEGIN:STANDARD
  492.19 +TZOFFSETFROM:+0900
  492.20 +TZOFFSETTO:+0930
  492.21 +TZNAME:CST
  492.22 +DTSTART:19440901T000000
  492.23 +RDATE:19440901T000000
  492.24 +END:STANDARD
  492.25 +BEGIN:STANDARD
  492.26 +TZOFFSETFROM:+0930
  492.27 +TZOFFSETTO:+0900
  492.28 +TZNAME:EIT
  492.29 +DTSTART:19640101T000000
  492.30 +RDATE:19640101T000000
  492.31 +END:STANDARD
  492.32 +END:VTIMEZONE
  492.33 +END:VCALENDAR
   493.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   493.2 +++ b/src/zoneinfo-global/Asia/Jerusalem.ics	Tue Feb 10 18:12:00 2015 +0100
   493.3 @@ -0,0 +1,188 @@
   493.4 +BEGIN:VCALENDAR
   493.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   493.6 +VERSION:2.0
   493.7 +BEGIN:VTIMEZONE
   493.8 +TZID:Asia/Jerusalem
   493.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Jerusalem
  493.10 +X-LIC-LOCATION:Asia/Jerusalem
  493.11 +BEGIN:STANDARD
  493.12 +TZOFFSETFROM:+022056
  493.13 +TZOFFSETTO:+022040
  493.14 +TZNAME:JMT
  493.15 +DTSTART:18800101T000000
  493.16 +RDATE:18800101T000000
  493.17 +END:STANDARD
  493.18 +BEGIN:STANDARD
  493.19 +TZOFFSETFROM:+022040
  493.20 +TZOFFSETTO:+0200
  493.21 +TZNAME:IST
  493.22 +DTSTART:19180101T000000
  493.23 +RDATE:19180101T000000
  493.24 +END:STANDARD
  493.25 +BEGIN:DAYLIGHT
  493.26 +TZOFFSETFROM:+0200
  493.27 +TZOFFSETTO:+0300
  493.28 +TZNAME:IDT
  493.29 +DTSTART:19400601T000000
  493.30 +RDATE:19400601T000000
  493.31 +RDATE:19430401T020000
  493.32 +RDATE:19440401T000000
  493.33 +RDATE:19450416T000000
  493.34 +RDATE:19460416T020000
  493.35 +RDATE:19490501T000000
  493.36 +RDATE:19500416T000000
  493.37 +RDATE:19510401T000000
  493.38 +RDATE:19520420T020000
  493.39 +RDATE:19530412T020000
  493.40 +RDATE:19540613T000000
  493.41 +RDATE:19550611T020000
  493.42 +RDATE:19560603T000000
  493.43 +RDATE:19570429T020000
  493.44 +RDATE:19740707T000000
  493.45 +RDATE:19750420T000000
  493.46 +RDATE:19850414T000000
  493.47 +RDATE:19860518T000000
  493.48 +RDATE:19870415T000000
  493.49 +RDATE:19880409T000000
  493.50 +RDATE:19890430T000000
  493.51 +RDATE:19900325T000000
  493.52 +RDATE:19910324T000000
  493.53 +RDATE:19920329T000000
  493.54 +RDATE:19930402T000000
  493.55 +RDATE:19940401T000000
  493.56 +RDATE:19950331T000000
  493.57 +RDATE:19960315T000000
  493.58 +RDATE:19970321T000000
  493.59 +RDATE:19980320T000000
  493.60 +RDATE:19990402T020000
  493.61 +RDATE:20000414T020000
  493.62 +RDATE:20010409T010000
  493.63 +RDATE:20020329T010000
  493.64 +RDATE:20030328T010000
  493.65 +RDATE:20040407T010000
  493.66 +RDATE:20050401T020000
  493.67 +RDATE:20060331T020000
  493.68 +RDATE:20070330T020000
  493.69 +RDATE:20080328T020000
  493.70 +RDATE:20090327T020000
  493.71 +RDATE:20100326T020000
  493.72 +RDATE:20110401T020000
  493.73 +RDATE:20120330T020000
  493.74 +RDATE:20130329T020000
  493.75 +RDATE:20140328T020000
  493.76 +RDATE:20150327T020000
  493.77 +RDATE:20160401T020000
  493.78 +RDATE:20170331T020000
  493.79 +RDATE:20180330T020000
  493.80 +RDATE:20190329T020000
  493.81 +RDATE:20200327T020000
  493.82 +RDATE:20210326T020000
  493.83 +RDATE:20220401T020000
  493.84 +RDATE:20230331T020000
  493.85 +RDATE:20240329T020000
  493.86 +RDATE:20250328T020000
  493.87 +RDATE:20260327T020000
  493.88 +RDATE:20270326T020000
  493.89 +RDATE:20280331T020000
  493.90 +RDATE:20290330T020000
  493.91 +RDATE:20300329T020000
  493.92 +RDATE:20310328T020000
  493.93 +RDATE:20320326T020000
  493.94 +RDATE:20330401T020000
  493.95 +RDATE:20340331T020000
  493.96 +RDATE:20350330T020000
  493.97 +RDATE:20360328T020000
  493.98 +RDATE:20370327T020000
  493.99 +END:DAYLIGHT
 493.100 +BEGIN:STANDARD
 493.101 +TZOFFSETFROM:+0300
 493.102 +TZOFFSETTO:+0200
 493.103 +TZNAME:IST
 493.104 +DTSTART:19421101T000000
 493.105 +RDATE:19421101T000000
 493.106 +RDATE:19431101T000000
 493.107 +RDATE:19441101T000000
 493.108 +RDATE:19451101T020000
 493.109 +RDATE:19461101T000000
 493.110 +RDATE:19481101T020000
 493.111 +RDATE:19491101T020000
 493.112 +RDATE:19500915T030000
 493.113 +RDATE:19511111T030000
 493.114 +RDATE:19521019T030000
 493.115 +RDATE:19530913T030000
 493.116 +RDATE:19540912T000000
 493.117 +RDATE:19550911T000000
 493.118 +RDATE:19560930T030000
 493.119 +RDATE:19570922T000000
 493.120 +RDATE:19741013T000000
 493.121 +RDATE:19750831T000000
 493.122 +RDATE:19850915T000000
 493.123 +RDATE:19860907T000000
 493.124 +RDATE:19870913T000000
 493.125 +RDATE:19880903T000000
 493.126 +RDATE:19890903T000000
 493.127 +RDATE:19900826T000000
 493.128 +RDATE:19910901T000000
 493.129 +RDATE:19920906T000000
 493.130 +RDATE:19930905T000000
 493.131 +RDATE:19940828T000000
 493.132 +RDATE:19950903T000000
 493.133 +RDATE:19960916T000000
 493.134 +RDATE:19970914T000000
 493.135 +RDATE:19980906T000000
 493.136 +RDATE:19990903T020000
 493.137 +RDATE:20001006T010000
 493.138 +RDATE:20010924T010000
 493.139 +RDATE:20021007T010000
 493.140 +RDATE:20031003T010000
 493.141 +RDATE:20040922T010000
 493.142 +RDATE:20051009T020000
 493.143 +RDATE:20061001T020000
 493.144 +RDATE:20070916T020000
 493.145 +RDATE:20081005T020000
 493.146 +RDATE:20090927T020000
 493.147 +RDATE:20100912T020000
 493.148 +RDATE:20111002T020000
 493.149 +RDATE:20120923T020000
 493.150 +RDATE:20130908T020000
 493.151 +RDATE:20140928T020000
 493.152 +RDATE:20150920T020000
 493.153 +RDATE:20161009T020000
 493.154 +RDATE:20170924T020000
 493.155 +RDATE:20180916T020000
 493.156 +RDATE:20191006T020000
 493.157 +RDATE:20200927T020000
 493.158 +RDATE:20210912T020000
 493.159 +RDATE:20221002T020000
 493.160 +RDATE:20230924T020000
 493.161 +RDATE:20241006T020000
 493.162 +RDATE:20250928T020000
 493.163 +RDATE:20260920T020000
 493.164 +RDATE:20271010T020000
 493.165 +RDATE:20280924T020000
 493.166 +RDATE:20290916T020000
 493.167 +RDATE:20301006T020000
 493.168 +RDATE:20310921T020000
 493.169 +RDATE:20320912T020000
 493.170 +RDATE:20331002T020000
 493.171 +RDATE:20340917T020000
 493.172 +RDATE:20351007T020000
 493.173 +RDATE:20360928T020000
 493.174 +RDATE:20370913T020000
 493.175 +END:STANDARD
 493.176 +BEGIN:DAYLIGHT
 493.177 +TZOFFSETFROM:+0200
 493.178 +TZOFFSETTO:+0400
 493.179 +TZNAME:IDDT
 493.180 +DTSTART:19480523T000000
 493.181 +RDATE:19480523T000000
 493.182 +END:DAYLIGHT
 493.183 +BEGIN:DAYLIGHT
 493.184 +TZOFFSETFROM:+0400
 493.185 +TZOFFSETTO:+0300
 493.186 +TZNAME:IDT
 493.187 +DTSTART:19480901T000000
 493.188 +RDATE:19480901T000000
 493.189 +END:DAYLIGHT
 493.190 +END:VTIMEZONE
 493.191 +END:VCALENDAR
   494.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   494.2 +++ b/src/zoneinfo-global/Asia/Kabul.ics	Tue Feb 10 18:12:00 2015 +0100
   494.3 @@ -0,0 +1,23 @@
   494.4 +BEGIN:VCALENDAR
   494.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   494.6 +VERSION:2.0
   494.7 +BEGIN:VTIMEZONE
   494.8 +TZID:Asia/Kabul
   494.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Kabul
  494.10 +X-LIC-LOCATION:Asia/Kabul
  494.11 +BEGIN:STANDARD
  494.12 +TZOFFSETFROM:+043648
  494.13 +TZOFFSETTO:+0400
  494.14 +TZNAME:AFT
  494.15 +DTSTART:18900101T000000
  494.16 +RDATE:18900101T000000
  494.17 +END:STANDARD
  494.18 +BEGIN:STANDARD
  494.19 +TZOFFSETFROM:+0400
  494.20 +TZOFFSETTO:+0430
  494.21 +TZNAME:AFT
  494.22 +DTSTART:19450101T000000
  494.23 +RDATE:19450101T000000
  494.24 +END:STANDARD
  494.25 +END:VTIMEZONE
  494.26 +END:VCALENDAR
   495.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   495.2 +++ b/src/zoneinfo-global/Asia/Kamchatka.ics	Tue Feb 10 18:12:00 2015 +0100
   495.3 @@ -0,0 +1,109 @@
   495.4 +BEGIN:VCALENDAR
   495.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   495.6 +VERSION:2.0
   495.7 +BEGIN:VTIMEZONE
   495.8 +TZID:Asia/Kamchatka
   495.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Kamchatka
  495.10 +X-LIC-LOCATION:Asia/Kamchatka
  495.11 +BEGIN:STANDARD
  495.12 +TZOFFSETFROM:+103436
  495.13 +TZOFFSETTO:+1100
  495.14 +TZNAME:PETT
  495.15 +DTSTART:19221110T000000
  495.16 +RDATE:19221110T000000
  495.17 +END:STANDARD
  495.18 +BEGIN:STANDARD
  495.19 +TZOFFSETFROM:+1100
  495.20 +TZOFFSETTO:+1200
  495.21 +TZNAME:PETT
  495.22 +DTSTART:19300621T000000
  495.23 +RDATE:19300621T000000
  495.24 +RDATE:19920119T020000
  495.25 +RDATE:20110327T020000
  495.26 +END:STANDARD
  495.27 +BEGIN:DAYLIGHT
  495.28 +TZOFFSETFROM:+1200
  495.29 +TZOFFSETTO:+1300
  495.30 +TZNAME:PETST
  495.31 +DTSTART:19810401T000000
  495.32 +RDATE:19810401T000000
  495.33 +RDATE:19820401T000000
  495.34 +RDATE:19830401T000000
  495.35 +RDATE:19840401T000000
  495.36 +RDATE:19850331T020000
  495.37 +RDATE:19860330T020000
  495.38 +RDATE:19870329T020000
  495.39 +RDATE:19880327T020000
  495.40 +RDATE:19890326T020000
  495.41 +RDATE:19900325T020000
  495.42 +RDATE:19920328T230000
  495.43 +RDATE:19930328T020000
  495.44 +RDATE:19940327T020000
  495.45 +RDATE:19950326T020000
  495.46 +RDATE:19960331T020000
  495.47 +RDATE:19970330T020000
  495.48 +RDATE:19980329T020000
  495.49 +RDATE:19990328T020000
  495.50 +RDATE:20000326T020000
  495.51 +RDATE:20010325T020000
  495.52 +RDATE:20020331T020000
  495.53 +RDATE:20030330T020000
  495.54 +RDATE:20040328T020000
  495.55 +RDATE:20050327T020000
  495.56 +RDATE:20060326T020000
  495.57 +RDATE:20070325T020000
  495.58 +RDATE:20080330T020000
  495.59 +RDATE:20090329T020000
  495.60 +END:DAYLIGHT
  495.61 +BEGIN:STANDARD
  495.62 +TZOFFSETFROM:+1300
  495.63 +TZOFFSETTO:+1200
  495.64 +TZNAME:PETT
  495.65 +DTSTART:19811001T000000
  495.66 +RDATE:19811001T000000
  495.67 +RDATE:19821001T000000
  495.68 +RDATE:19831001T000000
  495.69 +RDATE:19840930T030000
  495.70 +RDATE:19850929T030000
  495.71 +RDATE:19860928T030000
  495.72 +RDATE:19870927T030000
  495.73 +RDATE:19880925T030000
  495.74 +RDATE:19890924T030000
  495.75 +RDATE:19900930T030000
  495.76 +RDATE:19920926T230000
  495.77 +RDATE:19930926T030000
  495.78 +RDATE:19940925T030000
  495.79 +RDATE:19950924T030000
  495.80 +RDATE:19961027T030000
  495.81 +RDATE:19971026T030000
  495.82 +RDATE:19981025T030000
  495.83 +RDATE:19991031T030000
  495.84 +RDATE:20001029T030000
  495.85 +RDATE:20011028T030000
  495.86 +RDATE:20021027T030000
  495.87 +RDATE:20031026T030000
  495.88 +RDATE:20041031T030000
  495.89 +RDATE:20051030T030000
  495.90 +RDATE:20061029T030000
  495.91 +RDATE:20071028T030000
  495.92 +RDATE:20081026T030000
  495.93 +RDATE:20091025T030000
  495.94 +END:STANDARD
  495.95 +BEGIN:DAYLIGHT
  495.96 +TZOFFSETFROM:+1200
  495.97 +TZOFFSETTO:+1200
  495.98 +TZNAME:PETST
  495.99 +DTSTART:19910331T020000
 495.100 +RDATE:19910331T020000
 495.101 +RDATE:20100328T020000
 495.102 +END:DAYLIGHT
 495.103 +BEGIN:STANDARD
 495.104 +TZOFFSETFROM:+1200
 495.105 +TZOFFSETTO:+1100
 495.106 +TZNAME:PETT
 495.107 +DTSTART:19910929T030000
 495.108 +RDATE:19910929T030000
 495.109 +RDATE:20101031T030000
 495.110 +END:STANDARD
 495.111 +END:VTIMEZONE
 495.112 +END:VCALENDAR
   496.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   496.2 +++ b/src/zoneinfo-global/Asia/Karachi.ics	Tue Feb 10 18:12:00 2015 +0100
   496.3 @@ -0,0 +1,62 @@
   496.4 +BEGIN:VCALENDAR
   496.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   496.6 +VERSION:2.0
   496.7 +BEGIN:VTIMEZONE
   496.8 +TZID:Asia/Karachi
   496.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Karachi
  496.10 +X-LIC-LOCATION:Asia/Karachi
  496.11 +BEGIN:STANDARD
  496.12 +TZOFFSETFROM:+042812
  496.13 +TZOFFSETTO:+0530
  496.14 +TZNAME:IST
  496.15 +DTSTART:19070101T000000
  496.16 +RDATE:19070101T000000
  496.17 +END:STANDARD
  496.18 +BEGIN:DAYLIGHT
  496.19 +TZOFFSETFROM:+0530
  496.20 +TZOFFSETTO:+0630
  496.21 +TZNAME:IST
  496.22 +DTSTART:19420901T000000
  496.23 +RDATE:19420901T000000
  496.24 +END:DAYLIGHT
  496.25 +BEGIN:STANDARD
  496.26 +TZOFFSETFROM:+0630
  496.27 +TZOFFSETTO:+0530
  496.28 +TZNAME:IST
  496.29 +DTSTART:19451015T000000
  496.30 +RDATE:19451015T000000
  496.31 +END:STANDARD
  496.32 +BEGIN:STANDARD
  496.33 +TZOFFSETFROM:+0530
  496.34 +TZOFFSETTO:+0500
  496.35 +TZNAME:KART
  496.36 +DTSTART:19510930T000000
  496.37 +RDATE:19510930T000000
  496.38 +END:STANDARD
  496.39 +BEGIN:STANDARD
  496.40 +TZOFFSETFROM:+0500
  496.41 +TZOFFSETTO:+0500
  496.42 +TZNAME:PKT
  496.43 +DTSTART:19710326T000000
  496.44 +RDATE:19710326T000000
  496.45 +END:STANDARD
  496.46 +BEGIN:DAYLIGHT
  496.47 +TZOFFSETFROM:+0500
  496.48 +TZOFFSETTO:+0600
  496.49 +TZNAME:PKST
  496.50 +DTSTART:20020407T000100
  496.51 +RDATE:20020407T000100
  496.52 +RDATE:20080601T000000
  496.53 +RDATE:20090415T000000
  496.54 +END:DAYLIGHT
  496.55 +BEGIN:STANDARD
  496.56 +TZOFFSETFROM:+0600
  496.57 +TZOFFSETTO:+0500
  496.58 +TZNAME:PKT
  496.59 +DTSTART:20021006T000100
  496.60 +RDATE:20021006T000100
  496.61 +RDATE:20081101T000000
  496.62 +RDATE:20091101T000000
  496.63 +END:STANDARD
  496.64 +END:VTIMEZONE
  496.65 +END:VCALENDAR
   497.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   497.2 +++ b/src/zoneinfo-global/Asia/Kashgar.ics	Tue Feb 10 18:12:00 2015 +0100
   497.3 @@ -0,0 +1,54 @@
   497.4 +BEGIN:VCALENDAR
   497.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   497.6 +VERSION:2.0
   497.7 +BEGIN:VTIMEZONE
   497.8 +TZID:Asia/Kashgar
   497.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Kashgar
  497.10 +X-LIC-LOCATION:Asia/Kashgar
  497.11 +BEGIN:STANDARD
  497.12 +TZOFFSETFROM:+050356
  497.13 +TZOFFSETTO:+0530
  497.14 +TZNAME:KAST
  497.15 +DTSTART:19280101T000000
  497.16 +RDATE:19280101T000000
  497.17 +END:STANDARD
  497.18 +BEGIN:STANDARD
  497.19 +TZOFFSETFROM:+0530
  497.20 +TZOFFSETTO:+0500
  497.21 +TZNAME:KAST
  497.22 +DTSTART:19400101T000000
  497.23 +RDATE:19400101T000000
  497.24 +END:STANDARD
  497.25 +BEGIN:STANDARD
  497.26 +TZOFFSETFROM:+0500
  497.27 +TZOFFSETTO:+0800
  497.28 +TZNAME:CST
  497.29 +DTSTART:19800501T000000
  497.30 +RDATE:19800501T000000
  497.31 +END:STANDARD
  497.32 +BEGIN:DAYLIGHT
  497.33 +TZOFFSETFROM:+0800
  497.34 +TZOFFSETTO:+0900
  497.35 +TZNAME:CDT
  497.36 +DTSTART:19860504T000000
  497.37 +RDATE:19860504T000000
  497.38 +RDATE:19870412T000000
  497.39 +RDATE:19880410T000000
  497.40 +RDATE:19890416T000000
  497.41 +RDATE:19900415T000000
  497.42 +RDATE:19910414T000000
  497.43 +END:DAYLIGHT
  497.44 +BEGIN:STANDARD
  497.45 +TZOFFSETFROM:+0900
  497.46 +TZOFFSETTO:+0800
  497.47 +TZNAME:CST
  497.48 +DTSTART:19860914T000000
  497.49 +RDATE:19860914T000000
  497.50 +RDATE:19870913T000000
  497.51 +RDATE:19880911T000000
  497.52 +RDATE:19890917T000000
  497.53 +RDATE:19900916T000000
  497.54 +RDATE:19910915T000000
  497.55 +END:STANDARD
  497.56 +END:VTIMEZONE
  497.57 +END:VCALENDAR
   498.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   498.2 +++ b/src/zoneinfo-global/Asia/Kathmandu.ics	Tue Feb 10 18:12:00 2015 +0100
   498.3 @@ -0,0 +1,23 @@
   498.4 +BEGIN:VCALENDAR
   498.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   498.6 +VERSION:2.0
   498.7 +BEGIN:VTIMEZONE
   498.8 +TZID:Asia/Kathmandu
   498.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Kathmandu
  498.10 +X-LIC-LOCATION:Asia/Kathmandu
  498.11 +BEGIN:STANDARD
  498.12 +TZOFFSETFROM:+054116
  498.13 +TZOFFSETTO:+0530
  498.14 +TZNAME:IST
  498.15 +DTSTART:19200101T000000
  498.16 +RDATE:19200101T000000
  498.17 +END:STANDARD
  498.18 +BEGIN:STANDARD
  498.19 +TZOFFSETFROM:+0530
  498.20 +TZOFFSETTO:+0545
  498.21 +TZNAME:NPT
  498.22 +DTSTART:19860101T000000
  498.23 +RDATE:19860101T000000
  498.24 +END:STANDARD
  498.25 +END:VTIMEZONE
  498.26 +END:VCALENDAR
   499.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   499.2 +++ b/src/zoneinfo-global/Asia/Kolkata.ics	Tue Feb 10 18:12:00 2015 +0100
   499.3 @@ -0,0 +1,38 @@
   499.4 +BEGIN:VCALENDAR
   499.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   499.6 +VERSION:2.0
   499.7 +BEGIN:VTIMEZONE
   499.8 +TZID:Asia/Kolkata
   499.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Kolkata
  499.10 +X-LIC-LOCATION:Asia/Kolkata
  499.11 +BEGIN:STANDARD
  499.12 +TZOFFSETFROM:+055328
  499.13 +TZOFFSETTO:+055320
  499.14 +TZNAME:HMT
  499.15 +DTSTART:18800101T000000
  499.16 +RDATE:18800101T000000
  499.17 +END:STANDARD
  499.18 +BEGIN:STANDARD
  499.19 +TZOFFSETFROM:+055320
  499.20 +TZOFFSETTO:+0630
  499.21 +TZNAME:BURT
  499.22 +DTSTART:19411001T000000
  499.23 +RDATE:19411001T000000
  499.24 +END:STANDARD
  499.25 +BEGIN:STANDARD
  499.26 +TZOFFSETFROM:+0630
  499.27 +TZOFFSETTO:+0530
  499.28 +TZNAME:IST
  499.29 +DTSTART:19420515T000000
  499.30 +RDATE:19420515T000000
  499.31 +RDATE:19451015T000000
  499.32 +END:STANDARD
  499.33 +BEGIN:DAYLIGHT
  499.34 +TZOFFSETFROM:+0530
  499.35 +TZOFFSETTO:+0630
  499.36 +TZNAME:IST
  499.37 +DTSTART:19420901T000000
  499.38 +RDATE:19420901T000000
  499.39 +END:DAYLIGHT
  499.40 +END:VTIMEZONE
  499.41 +END:VCALENDAR
   500.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   500.2 +++ b/src/zoneinfo-global/Asia/Krasnoyarsk.ics	Tue Feb 10 18:12:00 2015 +0100
   500.3 @@ -0,0 +1,115 @@
   500.4 +BEGIN:VCALENDAR
   500.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   500.6 +VERSION:2.0
   500.7 +BEGIN:VTIMEZONE
   500.8 +TZID:Asia/Krasnoyarsk
   500.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Krasnoyarsk
  500.10 +X-LIC-LOCATION:Asia/Krasnoyarsk
  500.11 +BEGIN:STANDARD
  500.12 +TZOFFSETFROM:+061120
  500.13 +TZOFFSETTO:+0600
  500.14 +TZNAME:KRAT
  500.15 +DTSTART:19200106T000000
  500.16 +RDATE:19200106T000000
  500.17 +END:STANDARD
  500.18 +BEGIN:STANDARD
  500.19 +TZOFFSETFROM:+0600
  500.20 +TZOFFSETTO:+0700
  500.21 +TZNAME:KRAT
  500.22 +DTSTART:19300621T000000
  500.23 +RDATE:19300621T000000
  500.24 +RDATE:19920119T020000
  500.25 +END:STANDARD
  500.26 +BEGIN:DAYLIGHT
  500.27 +TZOFFSETFROM:+0700
  500.28 +TZOFFSETTO:+0800
  500.29 +TZNAME:KRAST
  500.30 +DTSTART:19810401T000000
  500.31 +RDATE:19810401T000000
  500.32 +RDATE:19820401T000000
  500.33 +RDATE:19830401T000000
  500.34 +RDATE:19840401T000000
  500.35 +RDATE:19850331T020000
  500.36 +RDATE:19860330T020000
  500.37 +RDATE:19870329T020000
  500.38 +RDATE:19880327T020000
  500.39 +RDATE:19890326T020000
  500.40 +RDATE:19900325T020000
  500.41 +RDATE:19920328T230000
  500.42 +RDATE:19930328T020000
  500.43 +RDATE:19940327T020000
  500.44 +RDATE:19950326T020000
  500.45 +RDATE:19960331T020000
  500.46 +RDATE:19970330T020000
  500.47 +RDATE:19980329T020000
  500.48 +RDATE:19990328T020000
  500.49 +RDATE:20000326T020000
  500.50 +RDATE:20010325T020000
  500.51 +RDATE:20020331T020000
  500.52 +RDATE:20030330T020000
  500.53 +RDATE:20040328T020000
  500.54 +RDATE:20050327T020000
  500.55 +RDATE:20060326T020000
  500.56 +RDATE:20070325T020000
  500.57 +RDATE:20080330T020000
  500.58 +RDATE:20090329T020000
  500.59 +RDATE:20100328T020000
  500.60 +END:DAYLIGHT
  500.61 +BEGIN:STANDARD
  500.62 +TZOFFSETFROM:+0800
  500.63 +TZOFFSETTO:+0700
  500.64 +TZNAME:KRAT
  500.65 +DTSTART:19811001T000000
  500.66 +RDATE:19811001T000000
  500.67 +RDATE:19821001T000000
  500.68 +RDATE:19831001T000000
  500.69 +RDATE:19840930T030000
  500.70 +RDATE:19850929T030000
  500.71 +RDATE:19860928T030000
  500.72 +RDATE:19870927T030000
  500.73 +RDATE:19880925T030000
  500.74 +RDATE:19890924T030000
  500.75 +RDATE:19900930T030000
  500.76 +RDATE:19920926T230000
  500.77 +RDATE:19930926T030000
  500.78 +RDATE:19940925T030000
  500.79 +RDATE:19950924T030000
  500.80 +RDATE:19961027T030000
  500.81 +RDATE:19971026T030000
  500.82 +RDATE:19981025T030000
  500.83 +RDATE:19991031T030000
  500.84 +RDATE:20001029T030000
  500.85 +RDATE:20011028T030000
  500.86 +RDATE:20021027T030000
  500.87 +RDATE:20031026T030000
  500.88 +RDATE:20041031T030000
  500.89 +RDATE:20051030T030000
  500.90 +RDATE:20061029T030000
  500.91 +RDATE:20071028T030000
  500.92 +RDATE:20081026T030000
  500.93 +RDATE:20091025T030000
  500.94 +RDATE:20101031T030000
  500.95 +END:STANDARD
  500.96 +BEGIN:DAYLIGHT
  500.97 +TZOFFSETFROM:+0700
  500.98 +TZOFFSETTO:+0700
  500.99 +TZNAME:KRAST
 500.100 +DTSTART:19910331T020000
 500.101 +RDATE:19910331T020000
 500.102 +END:DAYLIGHT
 500.103 +BEGIN:STANDARD
 500.104 +TZOFFSETFROM:+0700
 500.105 +TZOFFSETTO:+0600
 500.106 +TZNAME:KRAT
 500.107 +DTSTART:19910929T030000
 500.108 +RDATE:19910929T030000
 500.109 +END:STANDARD
 500.110 +BEGIN:STANDARD
 500.111 +TZOFFSETFROM:+0700
 500.112 +TZOFFSETTO:+0800
 500.113 +TZNAME:KRAT
 500.114 +DTSTART:20110327T020000
 500.115 +RDATE:20110327T020000
 500.116 +END:STANDARD
 500.117 +END:VTIMEZONE
 500.118 +END:VCALENDAR
   501.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   501.2 +++ b/src/zoneinfo-global/Asia/Kuala_Lumpur.ics	Tue Feb 10 18:12:00 2015 +0100
   501.3 @@ -0,0 +1,65 @@
   501.4 +BEGIN:VCALENDAR
   501.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   501.6 +VERSION:2.0
   501.7 +BEGIN:VTIMEZONE
   501.8 +TZID:Asia/Kuala_Lumpur
   501.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Kuala_Lumpur
  501.10 +X-LIC-LOCATION:Asia/Kuala_Lumpur
  501.11 +BEGIN:STANDARD
  501.12 +TZOFFSETFROM:+064646
  501.13 +TZOFFSETTO:+065525
  501.14 +TZNAME:SMT
  501.15 +DTSTART:19010101T000000
  501.16 +RDATE:19010101T000000
  501.17 +END:STANDARD
  501.18 +BEGIN:STANDARD
  501.19 +TZOFFSETFROM:+065525
  501.20 +TZOFFSETTO:+0700
  501.21 +TZNAME:MALT
  501.22 +DTSTART:19050601T000000
  501.23 +RDATE:19050601T000000
  501.24 +END:STANDARD
  501.25 +BEGIN:DAYLIGHT
  501.26 +TZOFFSETFROM:+0700
  501.27 +TZOFFSETTO:+0720
  501.28 +TZNAME:MALST
  501.29 +DTSTART:19330101T000000
  501.30 +RDATE:19330101T000000
  501.31 +END:DAYLIGHT
  501.32 +BEGIN:STANDARD
  501.33 +TZOFFSETFROM:+0720
  501.34 +TZOFFSETTO:+0720
  501.35 +TZNAME:MALT
  501.36 +DTSTART:19360101T000000
  501.37 +RDATE:19360101T000000
  501.38 +END:STANDARD
  501.39 +BEGIN:STANDARD
  501.40 +TZOFFSETFROM:+0720
  501.41 +TZOFFSETTO:+0730
  501.42 +TZNAME:MALT
  501.43 +DTSTART:19410901T000000
  501.44 +RDATE:19410901T000000
  501.45 +END:STANDARD
  501.46 +BEGIN:STANDARD
  501.47 +TZOFFSETFROM:+0730
  501.48 +TZOFFSETTO:+0900
  501.49 +TZNAME:JST
  501.50 +DTSTART:19420216T000000
  501.51 +RDATE:19420216T000000
  501.52 +END:STANDARD
  501.53 +BEGIN:STANDARD
  501.54 +TZOFFSETFROM:+0900
  501.55 +TZOFFSETTO:+0730
  501.56 +TZNAME:MALT
  501.57 +DTSTART:19450912T000000
  501.58 +RDATE:19450912T000000
  501.59 +END:STANDARD
  501.60 +BEGIN:STANDARD
  501.61 +TZOFFSETFROM:+0730
  501.62 +TZOFFSETTO:+0800
  501.63 +TZNAME:MYT
  501.64 +DTSTART:19820101T000000
  501.65 +RDATE:19820101T000000
  501.66 +END:STANDARD
  501.67 +END:VTIMEZONE
  501.68 +END:VCALENDAR
   502.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   502.2 +++ b/src/zoneinfo-global/Asia/Kuching.ics	Tue Feb 10 18:12:00 2015 +0100
   502.3 @@ -0,0 +1,70 @@
   502.4 +BEGIN:VCALENDAR
   502.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   502.6 +VERSION:2.0
   502.7 +BEGIN:VTIMEZONE
   502.8 +TZID:Asia/Kuching
   502.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Kuching
  502.10 +X-LIC-LOCATION:Asia/Kuching
  502.11 +BEGIN:STANDARD
  502.12 +TZOFFSETFROM:+072120
  502.13 +TZOFFSETTO:+0730
  502.14 +TZNAME:BORT
  502.15 +DTSTART:19260301T000000
  502.16 +RDATE:19260301T000000
  502.17 +END:STANDARD
  502.18 +BEGIN:STANDARD
  502.19 +TZOFFSETFROM:+0730
  502.20 +TZOFFSETTO:+0800
  502.21 +TZNAME:BORT
  502.22 +DTSTART:19330101T000000
  502.23 +RDATE:19330101T000000
  502.24 +END:STANDARD
  502.25 +BEGIN:DAYLIGHT
  502.26 +TZOFFSETFROM:+0800
  502.27 +TZOFFSETTO:+0820
  502.28 +TZNAME:BORTST
  502.29 +DTSTART:19350914T000000
  502.30 +RDATE:19350914T000000
  502.31 +RDATE:19360914T000000
  502.32 +RDATE:19370914T000000
  502.33 +RDATE:19380914T000000
  502.34 +RDATE:19390914T000000
  502.35 +RDATE:19400914T000000
  502.36 +RDATE:19410914T000000
  502.37 +END:DAYLIGHT
  502.38 +BEGIN:STANDARD
  502.39 +TZOFFSETFROM:+0820
  502.40 +TZOFFSETTO:+0800
  502.41 +TZNAME:BORT
  502.42 +DTSTART:19351214T000000
  502.43 +RDATE:19351214T000000
  502.44 +RDATE:19361214T000000
  502.45 +RDATE:19371214T000000
  502.46 +RDATE:19381214T000000
  502.47 +RDATE:19391214T000000
  502.48 +RDATE:19401214T000000
  502.49 +RDATE:19411214T000000
  502.50 +END:STANDARD
  502.51 +BEGIN:STANDARD
  502.52 +TZOFFSETFROM:+0800
  502.53 +TZOFFSETTO:+0900
  502.54 +TZNAME:JST
  502.55 +DTSTART:19420216T000000
  502.56 +RDATE:19420216T000000
  502.57 +END:STANDARD
  502.58 +BEGIN:STANDARD
  502.59 +TZOFFSETFROM:+0900
  502.60 +TZOFFSETTO:+0800
  502.61 +TZNAME:BORT
  502.62 +DTSTART:19450912T000000
  502.63 +RDATE:19450912T000000
  502.64 +END:STANDARD
  502.65 +BEGIN:STANDARD
  502.66 +TZOFFSETFROM:+0800
  502.67 +TZOFFSETTO:+0800
  502.68 +TZNAME:MYT
  502.69 +DTSTART:19820101T000000
  502.70 +RDATE:19820101T000000
  502.71 +END:STANDARD
  502.72 +END:VTIMEZONE
  502.73 +END:VCALENDAR
   503.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   503.2 +++ b/src/zoneinfo-global/Asia/Kuwait.ics	Tue Feb 10 18:12:00 2015 +0100
   503.3 @@ -0,0 +1,16 @@
   503.4 +BEGIN:VCALENDAR
   503.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   503.6 +VERSION:2.0
   503.7 +BEGIN:VTIMEZONE
   503.8 +TZID:Asia/Kuwait
   503.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Kuwait
  503.10 +X-LIC-LOCATION:Asia/Kuwait
  503.11 +BEGIN:STANDARD
  503.12 +TZOFFSETFROM:+031156
  503.13 +TZOFFSETTO:+0300
  503.14 +TZNAME:AST
  503.15 +DTSTART:19500101T000000
  503.16 +RDATE:19500101T000000
  503.17 +END:STANDARD
  503.18 +END:VTIMEZONE
  503.19 +END:VCALENDAR
   504.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   504.2 +++ b/src/zoneinfo-global/Asia/Macau.ics	Tue Feb 10 18:12:00 2015 +0100
   504.3 @@ -0,0 +1,75 @@
   504.4 +BEGIN:VCALENDAR
   504.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   504.6 +VERSION:2.0
   504.7 +BEGIN:VTIMEZONE
   504.8 +TZID:Asia/Macau
   504.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Macau
  504.10 +X-LIC-LOCATION:Asia/Macau
  504.11 +BEGIN:STANDARD
  504.12 +TZOFFSETFROM:+073420
  504.13 +TZOFFSETTO:+0800
  504.14 +TZNAME:MOT
  504.15 +DTSTART:19120101T000000
  504.16 +RDATE:19120101T000000
  504.17 +END:STANDARD
  504.18 +BEGIN:DAYLIGHT
  504.19 +TZOFFSETFROM:+0800
  504.20 +TZOFFSETTO:+0900
  504.21 +TZNAME:MOST
  504.22 +DTSTART:19610319T033000
  504.23 +RDATE:19610319T033000
  504.24 +RDATE:19620318T033000
  504.25 +RDATE:19630317T000000
  504.26 +RDATE:19640322T033000
  504.27 +RDATE:19650321T000000
  504.28 +RDATE:19660417T033000
  504.29 +RDATE:19670416T033000
  504.30 +RDATE:19680421T033000
  504.31 +RDATE:19690420T033000
  504.32 +RDATE:19700419T033000
  504.33 +RDATE:19710418T033000
  504.34 +RDATE:19720416T000000
  504.35 +RDATE:19730415T000000
  504.36 +RDATE:19740421T000000
  504.37 +RDATE:19750420T033000
  504.38 +RDATE:19760418T033000
  504.39 +RDATE:19770417T033000
  504.40 +RDATE:19780416T000000
  504.41 +RDATE:19790415T000000
  504.42 +RDATE:19800420T000000
  504.43 +END:DAYLIGHT
  504.44 +BEGIN:STANDARD
  504.45 +TZOFFSETFROM:+0900
  504.46 +TZOFFSETTO:+0800
  504.47 +TZNAME:MOT
  504.48 +DTSTART:19611105T033000
  504.49 +RDATE:19611105T033000
  504.50 +RDATE:19621104T033000
  504.51 +RDATE:19631103T033000
  504.52 +RDATE:19641101T033000
  504.53 +RDATE:19651031T000000
  504.54 +RDATE:19661016T033000
  504.55 +RDATE:19671022T033000
  504.56 +RDATE:19681020T033000
  504.57 +RDATE:19691019T033000
  504.58 +RDATE:19701018T033000
  504.59 +RDATE:19711017T033000
  504.60 +RDATE:19721015T000000
  504.61 +RDATE:19731021T000000
  504.62 +RDATE:19741020T033000
  504.63 +RDATE:19751019T033000
  504.64 +RDATE:19761017T033000
  504.65 +RDATE:19771016T033000
  504.66 +RDATE:19781015T000000
  504.67 +RDATE:19791021T000000
  504.68 +RDATE:19801019T000000
  504.69 +END:STANDARD
  504.70 +BEGIN:STANDARD
  504.71 +TZOFFSETFROM:+0800
  504.72 +TZOFFSETTO:+0800
  504.73 +TZNAME:CST
  504.74 +DTSTART:19991220T000000
  504.75 +RDATE:19991220T000000
  504.76 +END:STANDARD
  504.77 +END:VTIMEZONE
  504.78 +END:VCALENDAR
   505.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   505.2 +++ b/src/zoneinfo-global/Asia/Magadan.ics	Tue Feb 10 18:12:00 2015 +0100
   505.3 @@ -0,0 +1,115 @@
   505.4 +BEGIN:VCALENDAR
   505.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   505.6 +VERSION:2.0
   505.7 +BEGIN:VTIMEZONE
   505.8 +TZID:Asia/Magadan
   505.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Magadan
  505.10 +X-LIC-LOCATION:Asia/Magadan
  505.11 +BEGIN:STANDARD
  505.12 +TZOFFSETFROM:+100312
  505.13 +TZOFFSETTO:+1000
  505.14 +TZNAME:MAGT
  505.15 +DTSTART:19240502T000000
  505.16 +RDATE:19240502T000000
  505.17 +END:STANDARD
  505.18 +BEGIN:STANDARD
  505.19 +TZOFFSETFROM:+1000
  505.20 +TZOFFSETTO:+1100
  505.21 +TZNAME:MAGT
  505.22 +DTSTART:19300621T000000
  505.23 +RDATE:19300621T000000
  505.24 +RDATE:19920119T020000
  505.25 +END:STANDARD
  505.26 +BEGIN:DAYLIGHT
  505.27 +TZOFFSETFROM:+1100
  505.28 +TZOFFSETTO:+1200
  505.29 +TZNAME:MAGST
  505.30 +DTSTART:19810401T000000
  505.31 +RDATE:19810401T000000
  505.32 +RDATE:19820401T000000
  505.33 +RDATE:19830401T000000
  505.34 +RDATE:19840401T000000
  505.35 +RDATE:19850331T020000
  505.36 +RDATE:19860330T020000
  505.37 +RDATE:19870329T020000
  505.38 +RDATE:19880327T020000
  505.39 +RDATE:19890326T020000
  505.40 +RDATE:19900325T020000
  505.41 +RDATE:19920328T230000
  505.42 +RDATE:19930328T020000
  505.43 +RDATE:19940327T020000
  505.44 +RDATE:19950326T020000
  505.45 +RDATE:19960331T020000
  505.46 +RDATE:19970330T020000
  505.47 +RDATE:19980329T020000
  505.48 +RDATE:19990328T020000
  505.49 +RDATE:20000326T020000
  505.50 +RDATE:20010325T020000
  505.51 +RDATE:20020331T020000
  505.52 +RDATE:20030330T020000
  505.53 +RDATE:20040328T020000
  505.54 +RDATE:20050327T020000
  505.55 +RDATE:20060326T020000
  505.56 +RDATE:20070325T020000
  505.57 +RDATE:20080330T020000
  505.58 +RDATE:20090329T020000
  505.59 +RDATE:20100328T020000
  505.60 +END:DAYLIGHT
  505.61 +BEGIN:STANDARD
  505.62 +TZOFFSETFROM:+1200
  505.63 +TZOFFSETTO:+1100
  505.64 +TZNAME:MAGT
  505.65 +DTSTART:19811001T000000
  505.66 +RDATE:19811001T000000
  505.67 +RDATE:19821001T000000
  505.68 +RDATE:19831001T000000
  505.69 +RDATE:19840930T030000
  505.70 +RDATE:19850929T030000
  505.71 +RDATE:19860928T030000
  505.72 +RDATE:19870927T030000
  505.73 +RDATE:19880925T030000
  505.74 +RDATE:19890924T030000
  505.75 +RDATE:19900930T030000
  505.76 +RDATE:19920926T230000
  505.77 +RDATE:19930926T030000
  505.78 +RDATE:19940925T030000
  505.79 +RDATE:19950924T030000
  505.80 +RDATE:19961027T030000
  505.81 +RDATE:19971026T030000
  505.82 +RDATE:19981025T030000
  505.83 +RDATE:19991031T030000
  505.84 +RDATE:20001029T030000
  505.85 +RDATE:20011028T030000
  505.86 +RDATE:20021027T030000
  505.87 +RDATE:20031026T030000
  505.88 +RDATE:20041031T030000
  505.89 +RDATE:20051030T030000
  505.90 +RDATE:20061029T030000
  505.91 +RDATE:20071028T030000
  505.92 +RDATE:20081026T030000
  505.93 +RDATE:20091025T030000
  505.94 +RDATE:20101031T030000
  505.95 +END:STANDARD
  505.96 +BEGIN:DAYLIGHT
  505.97 +TZOFFSETFROM:+1100
  505.98 +TZOFFSETTO:+1100
  505.99 +TZNAME:MAGST
 505.100 +DTSTART:19910331T020000
 505.101 +RDATE:19910331T020000
 505.102 +END:DAYLIGHT
 505.103 +BEGIN:STANDARD
 505.104 +TZOFFSETFROM:+1100
 505.105 +TZOFFSETTO:+1000
 505.106 +TZNAME:MAGT
 505.107 +DTSTART:19910929T030000
 505.108 +RDATE:19910929T030000
 505.109 +END:STANDARD
 505.110 +BEGIN:STANDARD
 505.111 +TZOFFSETFROM:+1100
 505.112 +TZOFFSETTO:+1200
 505.113 +TZNAME:MAGT
 505.114 +DTSTART:20110327T020000
 505.115 +RDATE:20110327T020000
 505.116 +END:STANDARD
 505.117 +END:VTIMEZONE
 505.118 +END:VCALENDAR
   506.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   506.2 +++ b/src/zoneinfo-global/Asia/Makassar.ics	Tue Feb 10 18:12:00 2015 +0100
   506.3 @@ -0,0 +1,37 @@
   506.4 +BEGIN:VCALENDAR
   506.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   506.6 +VERSION:2.0
   506.7 +BEGIN:VTIMEZONE
   506.8 +TZID:Asia/Makassar
   506.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Makassar
  506.10 +X-LIC-LOCATION:Asia/Makassar
  506.11 +BEGIN:STANDARD
  506.12 +TZOFFSETFROM:+075736
  506.13 +TZOFFSETTO:+075736
  506.14 +TZNAME:MMT
  506.15 +DTSTART:19200101T000000
  506.16 +RDATE:19200101T000000
  506.17 +END:STANDARD
  506.18 +BEGIN:STANDARD
  506.19 +TZOFFSETFROM:+075736
  506.20 +TZOFFSETTO:+0800
  506.21 +TZNAME:CIT
  506.22 +DTSTART:19321101T000000
  506.23 +RDATE:19321101T000000
  506.24 +END:STANDARD
  506.25 +BEGIN:STANDARD
  506.26 +TZOFFSETFROM:+0800
  506.27 +TZOFFSETTO:+0900
  506.28 +TZNAME:JST
  506.29 +DTSTART:19420209T000000
  506.30 +RDATE:19420209T000000
  506.31 +END:STANDARD
  506.32 +BEGIN:STANDARD
  506.33 +TZOFFSETFROM:+0900
  506.34 +TZOFFSETTO:+0800
  506.35 +TZNAME:CIT
  506.36 +DTSTART:19450923T000000
  506.37 +RDATE:19450923T000000
  506.38 +END:STANDARD
  506.39 +END:VTIMEZONE
  506.40 +END:VCALENDAR
   507.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   507.2 +++ b/src/zoneinfo-global/Asia/Manila.ics	Tue Feb 10 18:12:00 2015 +0100
   507.3 @@ -0,0 +1,49 @@
   507.4 +BEGIN:VCALENDAR
   507.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   507.6 +VERSION:2.0
   507.7 +BEGIN:VTIMEZONE
   507.8 +TZID:Asia/Manila
   507.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Manila
  507.10 +X-LIC-LOCATION:Asia/Manila
  507.11 +BEGIN:STANDARD
  507.12 +TZOFFSETFROM:-1556
  507.13 +TZOFFSETTO:+0804
  507.14 +TZNAME:LMT
  507.15 +DTSTART:18441231T000000
  507.16 +RDATE:18441231T000000
  507.17 +END:STANDARD
  507.18 +BEGIN:STANDARD
  507.19 +TZOFFSETFROM:+0804
  507.20 +TZOFFSETTO:+0800
  507.21 +TZNAME:PHT
  507.22 +DTSTART:18990511T000000
  507.23 +RDATE:18990511T000000
  507.24 +END:STANDARD
  507.25 +BEGIN:DAYLIGHT
  507.26 +TZOFFSETFROM:+0800
  507.27 +TZOFFSETTO:+0900
  507.28 +TZNAME:PHST
  507.29 +DTSTART:19361101T000000
  507.30 +RDATE:19361101T000000
  507.31 +RDATE:19540412T000000
  507.32 +RDATE:19780322T000000
  507.33 +END:DAYLIGHT
  507.34 +BEGIN:STANDARD
  507.35 +TZOFFSETFROM:+0900
  507.36 +TZOFFSETTO:+0800
  507.37 +TZNAME:PHT
  507.38 +DTSTART:19370201T000000
  507.39 +RDATE:19370201T000000
  507.40 +RDATE:19441101T000000
  507.41 +RDATE:19540701T000000
  507.42 +RDATE:19780921T000000
  507.43 +END:STANDARD
  507.44 +BEGIN:STANDARD
  507.45 +TZOFFSETFROM:+0800
  507.46 +TZOFFSETTO:+0900
  507.47 +TZNAME:JST
  507.48 +DTSTART:19420501T000000
  507.49 +RDATE:19420501T000000
  507.50 +END:STANDARD
  507.51 +END:VTIMEZONE
  507.52 +END:VCALENDAR
   508.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   508.2 +++ b/src/zoneinfo-global/Asia/Muscat.ics	Tue Feb 10 18:12:00 2015 +0100
   508.3 @@ -0,0 +1,16 @@
   508.4 +BEGIN:VCALENDAR
   508.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   508.6 +VERSION:2.0
   508.7 +BEGIN:VTIMEZONE
   508.8 +TZID:Asia/Muscat
   508.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Muscat
  508.10 +X-LIC-LOCATION:Asia/Muscat
  508.11 +BEGIN:STANDARD
  508.12 +TZOFFSETFROM:+035420
  508.13 +TZOFFSETTO:+0400
  508.14 +TZNAME:GST
  508.15 +DTSTART:19200101T000000
  508.16 +RDATE:19200101T000000
  508.17 +END:STANDARD
  508.18 +END:VTIMEZONE
  508.19 +END:VCALENDAR
   509.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   509.2 +++ b/src/zoneinfo-global/Asia/Nicosia.ics	Tue Feb 10 18:12:00 2015 +0100
   509.3 @@ -0,0 +1,96 @@
   509.4 +BEGIN:VCALENDAR
   509.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   509.6 +VERSION:2.0
   509.7 +BEGIN:VTIMEZONE
   509.8 +TZID:Asia/Nicosia
   509.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Nicosia
  509.10 +X-LIC-LOCATION:Asia/Nicosia
  509.11 +BEGIN:STANDARD
  509.12 +TZOFFSETFROM:+0300
  509.13 +TZOFFSETTO:+0200
  509.14 +TZNAME:EET
  509.15 +DTSTART:19981025T040000
  509.16 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  509.17 +END:STANDARD
  509.18 +BEGIN:DAYLIGHT
  509.19 +TZOFFSETFROM:+0200
  509.20 +TZOFFSETTO:+0300
  509.21 +TZNAME:EEST
  509.22 +DTSTART:19990328T030000
  509.23 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  509.24 +END:DAYLIGHT
  509.25 +BEGIN:STANDARD
  509.26 +TZOFFSETFROM:+021328
  509.27 +TZOFFSETTO:+0200
  509.28 +TZNAME:EET
  509.29 +DTSTART:19211114T000000
  509.30 +RDATE:19211114T000000
  509.31 +END:STANDARD
  509.32 +BEGIN:DAYLIGHT
  509.33 +TZOFFSETFROM:+0200
  509.34 +TZOFFSETTO:+0300
  509.35 +TZNAME:EEST
  509.36 +DTSTART:19750413T000000
  509.37 +RDATE:19750413T000000
  509.38 +RDATE:19760515T000000
  509.39 +RDATE:19770403T000000
  509.40 +RDATE:19780402T000000
  509.41 +RDATE:19790401T000000
  509.42 +RDATE:19800406T000000
  509.43 +RDATE:19810329T000000
  509.44 +RDATE:19820328T000000
  509.45 +RDATE:19830327T000000
  509.46 +RDATE:19840325T000000
  509.47 +RDATE:19850331T000000
  509.48 +RDATE:19860330T000000
  509.49 +RDATE:19870329T000000
  509.50 +RDATE:19880327T000000
  509.51 +RDATE:19890326T000000
  509.52 +RDATE:19900325T000000
  509.53 +RDATE:19910331T000000
  509.54 +RDATE:19920329T000000
  509.55 +RDATE:19930328T000000
  509.56 +RDATE:19940327T000000
  509.57 +RDATE:19950326T000000
  509.58 +RDATE:19960331T000000
  509.59 +RDATE:19970330T000000
  509.60 +RDATE:19980329T000000
  509.61 +END:DAYLIGHT
  509.62 +BEGIN:STANDARD
  509.63 +TZOFFSETFROM:+0300
  509.64 +TZOFFSETTO:+0200
  509.65 +TZNAME:EET
  509.66 +DTSTART:19751012T000000
  509.67 +RDATE:19751012T000000
  509.68 +RDATE:19761011T000000
  509.69 +RDATE:19770925T000000
  509.70 +RDATE:19781002T000000
  509.71 +RDATE:19790930T000000
  509.72 +RDATE:19800928T000000
  509.73 +RDATE:19810927T000000
  509.74 +RDATE:19820926T000000
  509.75 +RDATE:19830925T000000
  509.76 +RDATE:19840930T000000
  509.77 +RDATE:19850929T000000
  509.78 +RDATE:19860928T000000
  509.79 +RDATE:19870927T000000
  509.80 +RDATE:19880925T000000
  509.81 +RDATE:19890924T000000
  509.82 +RDATE:19900930T000000
  509.83 +RDATE:19910929T000000
  509.84 +RDATE:19920927T000000
  509.85 +RDATE:19930926T000000
  509.86 +RDATE:19940925T000000
  509.87 +RDATE:19950924T000000
  509.88 +RDATE:19960929T000000
  509.89 +RDATE:19970928T000000
  509.90 +END:STANDARD
  509.91 +BEGIN:DAYLIGHT
  509.92 +TZOFFSETFROM:+0300
  509.93 +TZOFFSETTO:+0300
  509.94 +TZNAME:EEST
  509.95 +DTSTART:19980901T000000
  509.96 +RDATE:19980901T000000
  509.97 +END:DAYLIGHT
  509.98 +END:VTIMEZONE
  509.99 +END:VCALENDAR
   510.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   510.2 +++ b/src/zoneinfo-global/Asia/Novokuznetsk.ics	Tue Feb 10 18:12:00 2015 +0100
   510.3 @@ -0,0 +1,127 @@
   510.4 +BEGIN:VCALENDAR
   510.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   510.6 +VERSION:2.0
   510.7 +BEGIN:VTIMEZONE
   510.8 +TZID:Asia/Novokuznetsk
   510.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Novokuznetsk
  510.10 +X-LIC-LOCATION:Asia/Novokuznetsk
  510.11 +BEGIN:STANDARD
  510.12 +TZOFFSETFROM:+054848
  510.13 +TZOFFSETTO:+0600
  510.14 +TZNAME:KRAT
  510.15 +DTSTART:19200106T000000
  510.16 +RDATE:19200106T000000
  510.17 +END:STANDARD
  510.18 +BEGIN:STANDARD
  510.19 +TZOFFSETFROM:+0600
  510.20 +TZOFFSETTO:+0700
  510.21 +TZNAME:KRAT
  510.22 +DTSTART:19300621T000000
  510.23 +RDATE:19300621T000000
  510.24 +RDATE:19920119T020000
  510.25 +END:STANDARD
  510.26 +BEGIN:DAYLIGHT
  510.27 +TZOFFSETFROM:+0700
  510.28 +TZOFFSETTO:+0800
  510.29 +TZNAME:KRAST
  510.30 +DTSTART:19810401T000000
  510.31 +RDATE:19810401T000000
  510.32 +RDATE:19820401T000000
  510.33 +RDATE:19830401T000000
  510.34 +RDATE:19840401T000000
  510.35 +RDATE:19850331T020000
  510.36 +RDATE:19860330T020000
  510.37 +RDATE:19870329T020000
  510.38 +RDATE:19880327T020000
  510.39 +RDATE:19890326T020000
  510.40 +RDATE:19900325T020000
  510.41 +RDATE:19920328T230000
  510.42 +RDATE:19930328T020000
  510.43 +RDATE:19940327T020000
  510.44 +RDATE:19950326T020000
  510.45 +RDATE:19960331T020000
  510.46 +RDATE:19970330T020000
  510.47 +RDATE:19980329T020000
  510.48 +RDATE:19990328T020000
  510.49 +RDATE:20000326T020000
  510.50 +RDATE:20010325T020000
  510.51 +RDATE:20020331T020000
  510.52 +RDATE:20030330T020000
  510.53 +RDATE:20040328T020000
  510.54 +RDATE:20050327T020000
  510.55 +RDATE:20060326T020000
  510.56 +RDATE:20070325T020000
  510.57 +RDATE:20080330T020000
  510.58 +RDATE:20090329T020000
  510.59 +END:DAYLIGHT
  510.60 +BEGIN:STANDARD
  510.61 +TZOFFSETFROM:+0800
  510.62 +TZOFFSETTO:+0700
  510.63 +TZNAME:KRAT
  510.64 +DTSTART:19811001T000000
  510.65 +RDATE:19811001T000000
  510.66 +RDATE:19821001T000000
  510.67 +RDATE:19831001T000000
  510.68 +RDATE:19840930T030000
  510.69 +RDATE:19850929T030000
  510.70 +RDATE:19860928T030000
  510.71 +RDATE:19870927T030000
  510.72 +RDATE:19880925T030000
  510.73 +RDATE:19890924T030000
  510.74 +RDATE:19900930T030000
  510.75 +RDATE:19920926T230000
  510.76 +RDATE:19930926T030000
  510.77 +RDATE:19940925T030000
  510.78 +RDATE:19950924T030000
  510.79 +RDATE:19961027T030000
  510.80 +RDATE:19971026T030000
  510.81 +RDATE:19981025T030000
  510.82 +RDATE:19991031T030000
  510.83 +RDATE:20001029T030000
  510.84 +RDATE:20011028T030000
  510.85 +RDATE:20021027T030000
  510.86 +RDATE:20031026T030000
  510.87 +RDATE:20041031T030000
  510.88 +RDATE:20051030T030000
  510.89 +RDATE:20061029T030000
  510.90 +RDATE:20071028T030000
  510.91 +RDATE:20081026T030000
  510.92 +RDATE:20091025T030000
  510.93 +END:STANDARD
  510.94 +BEGIN:DAYLIGHT
  510.95 +TZOFFSETFROM:+0700
  510.96 +TZOFFSETTO:+0700
  510.97 +TZNAME:KRAST
  510.98 +DTSTART:19910331T020000
  510.99 +RDATE:19910331T020000
 510.100 +END:DAYLIGHT
 510.101 +BEGIN:STANDARD
 510.102 +TZOFFSETFROM:+0700
 510.103 +TZOFFSETTO:+0600
 510.104 +TZNAME:KRAT
 510.105 +DTSTART:19910929T030000
 510.106 +RDATE:19910929T030000
 510.107 +END:STANDARD
 510.108 +BEGIN:DAYLIGHT
 510.109 +TZOFFSETFROM:+0700
 510.110 +TZOFFSETTO:+0700
 510.111 +TZNAME:NOVST
 510.112 +DTSTART:20100328T020000
 510.113 +RDATE:20100328T020000
 510.114 +END:DAYLIGHT
 510.115 +BEGIN:STANDARD
 510.116 +TZOFFSETFROM:+0700
 510.117 +TZOFFSETTO:+0600
 510.118 +TZNAME:NOVT
 510.119 +DTSTART:20101031T030000
 510.120 +RDATE:20101031T030000
 510.121 +END:STANDARD
 510.122 +BEGIN:STANDARD
 510.123 +TZOFFSETFROM:+0600
 510.124 +TZOFFSETTO:+0700
 510.125 +TZNAME:NOVT
 510.126 +DTSTART:20110327T020000
 510.127 +RDATE:20110327T020000
 510.128 +END:STANDARD
 510.129 +END:VTIMEZONE
 510.130 +END:VCALENDAR
   511.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   511.2 +++ b/src/zoneinfo-global/Asia/Novosibirsk.ics	Tue Feb 10 18:12:00 2015 +0100
   511.3 @@ -0,0 +1,122 @@
   511.4 +BEGIN:VCALENDAR
   511.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   511.6 +VERSION:2.0
   511.7 +BEGIN:VTIMEZONE
   511.8 +TZID:Asia/Novosibirsk
   511.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Novosibirsk
  511.10 +X-LIC-LOCATION:Asia/Novosibirsk
  511.11 +BEGIN:STANDARD
  511.12 +TZOFFSETFROM:+053140
  511.13 +TZOFFSETTO:+0600
  511.14 +TZNAME:NOVT
  511.15 +DTSTART:19191214T060000
  511.16 +RDATE:19191214T060000
  511.17 +END:STANDARD
  511.18 +BEGIN:STANDARD
  511.19 +TZOFFSETFROM:+0600
  511.20 +TZOFFSETTO:+0700
  511.21 +TZNAME:NOVT
  511.22 +DTSTART:19300621T000000
  511.23 +RDATE:19300621T000000
  511.24 +RDATE:19920119T020000
  511.25 +RDATE:20110327T020000
  511.26 +END:STANDARD
  511.27 +BEGIN:DAYLIGHT
  511.28 +TZOFFSETFROM:+0700
  511.29 +TZOFFSETTO:+0800
  511.30 +TZNAME:NOVST
  511.31 +DTSTART:19810401T000000
  511.32 +RDATE:19810401T000000
  511.33 +RDATE:19820401T000000
  511.34 +RDATE:19830401T000000
  511.35 +RDATE:19840401T000000
  511.36 +RDATE:19850331T020000
  511.37 +RDATE:19860330T020000
  511.38 +RDATE:19870329T020000
  511.39 +RDATE:19880327T020000
  511.40 +RDATE:19890326T020000
  511.41 +RDATE:19900325T020000
  511.42 +RDATE:19920328T230000
  511.43 +RDATE:19930328T020000
  511.44 +END:DAYLIGHT
  511.45 +BEGIN:STANDARD
  511.46 +TZOFFSETFROM:+0800
  511.47 +TZOFFSETTO:+0700
  511.48 +TZNAME:NOVT
  511.49 +DTSTART:19811001T000000
  511.50 +RDATE:19811001T000000
  511.51 +RDATE:19821001T000000
  511.52 +RDATE:19831001T000000
  511.53 +RDATE:19840930T030000
  511.54 +RDATE:19850929T030000
  511.55 +RDATE:19860928T030000
  511.56 +RDATE:19870927T030000
  511.57 +RDATE:19880925T030000
  511.58 +RDATE:19890924T030000
  511.59 +RDATE:19900930T030000
  511.60 +RDATE:19920926T230000
  511.61 +END:STANDARD
  511.62 +BEGIN:DAYLIGHT
  511.63 +TZOFFSETFROM:+0700
  511.64 +TZOFFSETTO:+0700
  511.65 +TZNAME:NOVST
  511.66 +DTSTART:19910331T020000
  511.67 +RDATE:19910331T020000
  511.68 +END:DAYLIGHT
  511.69 +BEGIN:STANDARD
  511.70 +TZOFFSETFROM:+0700
  511.71 +TZOFFSETTO:+0600
  511.72 +TZNAME:NOVT
  511.73 +DTSTART:19910929T030000
  511.74 +RDATE:19910929T030000
  511.75 +RDATE:19930926T030000
  511.76 +RDATE:19940925T030000
  511.77 +RDATE:19950924T030000
  511.78 +RDATE:19961027T030000
  511.79 +RDATE:19971026T030000
  511.80 +RDATE:19981025T030000
  511.81 +RDATE:19991031T030000
  511.82 +RDATE:20001029T030000
  511.83 +RDATE:20011028T030000
  511.84 +RDATE:20021027T030000
  511.85 +RDATE:20031026T030000
  511.86 +RDATE:20041031T030000
  511.87 +RDATE:20051030T030000
  511.88 +RDATE:20061029T030000
  511.89 +RDATE:20071028T030000
  511.90 +RDATE:20081026T030000
  511.91 +RDATE:20091025T030000
  511.92 +RDATE:20101031T030000
  511.93 +END:STANDARD
  511.94 +BEGIN:DAYLIGHT
  511.95 +TZOFFSETFROM:+0800
  511.96 +TZOFFSETTO:+0700
  511.97 +TZNAME:NOVST
  511.98 +DTSTART:19930523T000000
  511.99 +RDATE:19930523T000000
 511.100 +END:DAYLIGHT
 511.101 +BEGIN:DAYLIGHT
 511.102 +TZOFFSETFROM:+0600
 511.103 +TZOFFSETTO:+0700
 511.104 +TZNAME:NOVST
 511.105 +DTSTART:19940327T020000
 511.106 +RDATE:19940327T020000
 511.107 +RDATE:19950326T020000
 511.108 +RDATE:19960331T020000
 511.109 +RDATE:19970330T020000
 511.110 +RDATE:19980329T020000
 511.111 +RDATE:19990328T020000
 511.112 +RDATE:20000326T020000
 511.113 +RDATE:20010325T020000
 511.114 +RDATE:20020331T020000
 511.115 +RDATE:20030330T020000
 511.116 +RDATE:20040328T020000
 511.117 +RDATE:20050327T020000
 511.118 +RDATE:20060326T020000
 511.119 +RDATE:20070325T020000
 511.120 +RDATE:20080330T020000
 511.121 +RDATE:20090329T020000
 511.122 +RDATE:20100328T020000
 511.123 +END:DAYLIGHT
 511.124 +END:VTIMEZONE
 511.125 +END:VCALENDAR
   512.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   512.2 +++ b/src/zoneinfo-global/Asia/Omsk.ics	Tue Feb 10 18:12:00 2015 +0100
   512.3 @@ -0,0 +1,115 @@
   512.4 +BEGIN:VCALENDAR
   512.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   512.6 +VERSION:2.0
   512.7 +BEGIN:VTIMEZONE
   512.8 +TZID:Asia/Omsk
   512.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Omsk
  512.10 +X-LIC-LOCATION:Asia/Omsk
  512.11 +BEGIN:STANDARD
  512.12 +TZOFFSETFROM:+045336
  512.13 +TZOFFSETTO:+0500
  512.14 +TZNAME:OMST
  512.15 +DTSTART:19191114T000000
  512.16 +RDATE:19191114T000000
  512.17 +END:STANDARD
  512.18 +BEGIN:STANDARD
  512.19 +TZOFFSETFROM:+0500
  512.20 +TZOFFSETTO:+0600
  512.21 +TZNAME:OMST
  512.22 +DTSTART:19300621T000000
  512.23 +RDATE:19300621T000000
  512.24 +RDATE:19920119T020000
  512.25 +END:STANDARD
  512.26 +BEGIN:DAYLIGHT
  512.27 +TZOFFSETFROM:+0600
  512.28 +TZOFFSETTO:+0700
  512.29 +TZNAME:OMSST
  512.30 +DTSTART:19810401T000000
  512.31 +RDATE:19810401T000000
  512.32 +RDATE:19820401T000000
  512.33 +RDATE:19830401T000000
  512.34 +RDATE:19840401T000000
  512.35 +RDATE:19850331T020000
  512.36 +RDATE:19860330T020000
  512.37 +RDATE:19870329T020000
  512.38 +RDATE:19880327T020000
  512.39 +RDATE:19890326T020000
  512.40 +RDATE:19900325T020000
  512.41 +RDATE:19920328T230000
  512.42 +RDATE:19930328T020000
  512.43 +RDATE:19940327T020000
  512.44 +RDATE:19950326T020000
  512.45 +RDATE:19960331T020000
  512.46 +RDATE:19970330T020000
  512.47 +RDATE:19980329T020000
  512.48 +RDATE:19990328T020000
  512.49 +RDATE:20000326T020000
  512.50 +RDATE:20010325T020000
  512.51 +RDATE:20020331T020000
  512.52 +RDATE:20030330T020000
  512.53 +RDATE:20040328T020000
  512.54 +RDATE:20050327T020000
  512.55 +RDATE:20060326T020000
  512.56 +RDATE:20070325T020000
  512.57 +RDATE:20080330T020000
  512.58 +RDATE:20090329T020000
  512.59 +RDATE:20100328T020000
  512.60 +END:DAYLIGHT
  512.61 +BEGIN:STANDARD
  512.62 +TZOFFSETFROM:+0700
  512.63 +TZOFFSETTO:+0600
  512.64 +TZNAME:OMST
  512.65 +DTSTART:19811001T000000
  512.66 +RDATE:19811001T000000
  512.67 +RDATE:19821001T000000
  512.68 +RDATE:19831001T000000
  512.69 +RDATE:19840930T030000
  512.70 +RDATE:19850929T030000
  512.71 +RDATE:19860928T030000
  512.72 +RDATE:19870927T030000
  512.73 +RDATE:19880925T030000
  512.74 +RDATE:19890924T030000
  512.75 +RDATE:19900930T030000
  512.76 +RDATE:19920926T230000
  512.77 +RDATE:19930926T030000
  512.78 +RDATE:19940925T030000
  512.79 +RDATE:19950924T030000
  512.80 +RDATE:19961027T030000
  512.81 +RDATE:19971026T030000
  512.82 +RDATE:19981025T030000
  512.83 +RDATE:19991031T030000
  512.84 +RDATE:20001029T030000
  512.85 +RDATE:20011028T030000
  512.86 +RDATE:20021027T030000
  512.87 +RDATE:20031026T030000
  512.88 +RDATE:20041031T030000
  512.89 +RDATE:20051030T030000
  512.90 +RDATE:20061029T030000
  512.91 +RDATE:20071028T030000
  512.92 +RDATE:20081026T030000
  512.93 +RDATE:20091025T030000
  512.94 +RDATE:20101031T030000
  512.95 +END:STANDARD
  512.96 +BEGIN:DAYLIGHT
  512.97 +TZOFFSETFROM:+0600
  512.98 +TZOFFSETTO:+0600
  512.99 +TZNAME:OMSST
 512.100 +DTSTART:19910331T020000
 512.101 +RDATE:19910331T020000
 512.102 +END:DAYLIGHT
 512.103 +BEGIN:STANDARD
 512.104 +TZOFFSETFROM:+0600
 512.105 +TZOFFSETTO:+0500
 512.106 +TZNAME:OMST
 512.107 +DTSTART:19910929T030000
 512.108 +RDATE:19910929T030000
 512.109 +END:STANDARD
 512.110 +BEGIN:STANDARD
 512.111 +TZOFFSETFROM:+0600
 512.112 +TZOFFSETTO:+0700
 512.113 +TZNAME:OMST
 512.114 +DTSTART:20110327T020000
 512.115 +RDATE:20110327T020000
 512.116 +END:STANDARD
 512.117 +END:VTIMEZONE
 512.118 +END:VCALENDAR
   513.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   513.2 +++ b/src/zoneinfo-global/Asia/Oral.ics	Tue Feb 10 18:12:00 2015 +0100
   513.3 @@ -0,0 +1,144 @@
   513.4 +BEGIN:VCALENDAR
   513.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   513.6 +VERSION:2.0
   513.7 +BEGIN:VTIMEZONE
   513.8 +TZID:Asia/Oral
   513.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Oral
  513.10 +X-LIC-LOCATION:Asia/Oral
  513.11 +BEGIN:STANDARD
  513.12 +TZOFFSETFROM:+032524
  513.13 +TZOFFSETTO:+0400
  513.14 +TZNAME:URAT
  513.15 +DTSTART:19240502T000000
  513.16 +RDATE:19240502T000000
  513.17 +END:STANDARD
  513.18 +BEGIN:STANDARD
  513.19 +TZOFFSETFROM:+0400
  513.20 +TZOFFSETTO:+0500
  513.21 +TZNAME:URAT
  513.22 +DTSTART:19300621T000000
  513.23 +RDATE:19300621T000000
  513.24 +END:STANDARD
  513.25 +BEGIN:DAYLIGHT
  513.26 +TZOFFSETFROM:+0500
  513.27 +TZOFFSETTO:+0600
  513.28 +TZNAME:URAST
  513.29 +DTSTART:19810401T000000
  513.30 +RDATE:19810401T000000
  513.31 +RDATE:19830401T000000
  513.32 +RDATE:19840401T000000
  513.33 +RDATE:19850331T020000
  513.34 +RDATE:19860330T020000
  513.35 +RDATE:19870329T020000
  513.36 +RDATE:19880327T020000
  513.37 +END:DAYLIGHT
  513.38 +BEGIN:STANDARD
  513.39 +TZOFFSETFROM:+0600
  513.40 +TZOFFSETTO:+0600
  513.41 +TZNAME:URAT
  513.42 +DTSTART:19811001T000000
  513.43 +RDATE:19811001T000000
  513.44 +END:STANDARD
  513.45 +BEGIN:DAYLIGHT
  513.46 +TZOFFSETFROM:+0600
  513.47 +TZOFFSETTO:+0600
  513.48 +TZNAME:URAST
  513.49 +DTSTART:19820401T000000
  513.50 +RDATE:19820401T000000
  513.51 +END:DAYLIGHT
  513.52 +BEGIN:STANDARD
  513.53 +TZOFFSETFROM:+0600
  513.54 +TZOFFSETTO:+0500
  513.55 +TZNAME:URAT
  513.56 +DTSTART:19821001T000000
  513.57 +RDATE:19821001T000000
  513.58 +RDATE:19831001T000000
  513.59 +RDATE:19840930T030000
  513.60 +RDATE:19850929T030000
  513.61 +RDATE:19860928T030000
  513.62 +RDATE:19870927T030000
  513.63 +RDATE:19880925T030000
  513.64 +END:STANDARD
  513.65 +BEGIN:DAYLIGHT
  513.66 +TZOFFSETFROM:+0500
  513.67 +TZOFFSETTO:+0500
  513.68 +TZNAME:URAST
  513.69 +DTSTART:19890326T020000
  513.70 +RDATE:19890326T020000
  513.71 +END:DAYLIGHT
  513.72 +BEGIN:STANDARD
  513.73 +TZOFFSETFROM:+0500
  513.74 +TZOFFSETTO:+0400
  513.75 +TZNAME:URAT
  513.76 +DTSTART:19890924T030000
  513.77 +RDATE:19890924T030000
  513.78 +RDATE:19900930T030000
  513.79 +END:STANDARD
  513.80 +BEGIN:DAYLIGHT
  513.81 +TZOFFSETFROM:+0400
  513.82 +TZOFFSETTO:+0500
  513.83 +TZNAME:URAST
  513.84 +DTSTART:19900325T020000
  513.85 +RDATE:19900325T020000
  513.86 +END:DAYLIGHT
  513.87 +BEGIN:STANDARD
  513.88 +TZOFFSETFROM:+0400
  513.89 +TZOFFSETTO:+0400
  513.90 +TZNAME:URAT
  513.91 +DTSTART:19910101T000000
  513.92 +RDATE:19910101T000000
  513.93 +END:STANDARD
  513.94 +BEGIN:STANDARD
  513.95 +TZOFFSETFROM:+0400
  513.96 +TZOFFSETTO:+0400
  513.97 +TZNAME:ORAT
  513.98 +DTSTART:19911216T000000
  513.99 +RDATE:19911216T000000
 513.100 +END:STANDARD
 513.101 +BEGIN:DAYLIGHT
 513.102 +TZOFFSETFROM:+0400
 513.103 +TZOFFSETTO:+0500
 513.104 +TZNAME:ORAST
 513.105 +DTSTART:19920328T230000
 513.106 +RDATE:19920328T230000
 513.107 +RDATE:19930328T020000
 513.108 +RDATE:19940327T020000
 513.109 +RDATE:19950326T020000
 513.110 +RDATE:19960331T020000
 513.111 +RDATE:19970330T020000
 513.112 +RDATE:19980329T020000
 513.113 +RDATE:19990328T020000
 513.114 +RDATE:20000326T020000
 513.115 +RDATE:20010325T020000
 513.116 +RDATE:20020331T020000
 513.117 +RDATE:20030330T020000
 513.118 +RDATE:20040328T020000
 513.119 +END:DAYLIGHT
 513.120 +BEGIN:STANDARD
 513.121 +TZOFFSETFROM:+0500
 513.122 +TZOFFSETTO:+0400
 513.123 +TZNAME:ORAT
 513.124 +DTSTART:19920926T230000
 513.125 +RDATE:19920926T230000
 513.126 +RDATE:19930926T030000
 513.127 +RDATE:19940925T030000
 513.128 +RDATE:19950924T030000
 513.129 +RDATE:19961027T030000
 513.130 +RDATE:19971026T030000
 513.131 +RDATE:19981025T030000
 513.132 +RDATE:19991031T030000
 513.133 +RDATE:20001029T030000
 513.134 +RDATE:20011028T030000
 513.135 +RDATE:20021027T030000
 513.136 +RDATE:20031026T030000
 513.137 +RDATE:20041031T030000
 513.138 +END:STANDARD
 513.139 +BEGIN:STANDARD
 513.140 +TZOFFSETFROM:+0400
 513.141 +TZOFFSETTO:+0500
 513.142 +TZNAME:ORAT
 513.143 +DTSTART:20050315T000000
 513.144 +RDATE:20050315T000000
 513.145 +END:STANDARD
 513.146 +END:VTIMEZONE
 513.147 +END:VCALENDAR
   514.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   514.2 +++ b/src/zoneinfo-global/Asia/Phnom_Penh.ics	Tue Feb 10 18:12:00 2015 +0100
   514.3 @@ -0,0 +1,37 @@
   514.4 +BEGIN:VCALENDAR
   514.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   514.6 +VERSION:2.0
   514.7 +BEGIN:VTIMEZONE
   514.8 +TZID:Asia/Phnom_Penh
   514.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Phnom_Penh
  514.10 +X-LIC-LOCATION:Asia/Phnom_Penh
  514.11 +BEGIN:STANDARD
  514.12 +TZOFFSETFROM:+065940
  514.13 +TZOFFSETTO:+070620
  514.14 +TZNAME:SMT
  514.15 +DTSTART:19060609T000000
  514.16 +RDATE:19060609T000000
  514.17 +END:STANDARD
  514.18 +BEGIN:STANDARD
  514.19 +TZOFFSETFROM:+070620
  514.20 +TZOFFSETTO:+0700
  514.21 +TZNAME:ICT
  514.22 +DTSTART:19110311T000100
  514.23 +RDATE:19110311T000100
  514.24 +END:STANDARD
  514.25 +BEGIN:STANDARD
  514.26 +TZOFFSETFROM:+0700
  514.27 +TZOFFSETTO:+0800
  514.28 +TZNAME:ICT
  514.29 +DTSTART:19120501T000000
  514.30 +RDATE:19120501T000000
  514.31 +END:STANDARD
  514.32 +BEGIN:STANDARD
  514.33 +TZOFFSETFROM:+0800
  514.34 +TZOFFSETTO:+0700
  514.35 +TZNAME:ICT
  514.36 +DTSTART:19310501T000000
  514.37 +RDATE:19310501T000000
  514.38 +END:STANDARD
  514.39 +END:VTIMEZONE
  514.40 +END:VCALENDAR
   515.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   515.2 +++ b/src/zoneinfo-global/Asia/Pontianak.ics	Tue Feb 10 18:12:00 2015 +0100
   515.3 @@ -0,0 +1,65 @@
   515.4 +BEGIN:VCALENDAR
   515.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   515.6 +VERSION:2.0
   515.7 +BEGIN:VTIMEZONE
   515.8 +TZID:Asia/Pontianak
   515.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Pontianak
  515.10 +X-LIC-LOCATION:Asia/Pontianak
  515.11 +BEGIN:STANDARD
  515.12 +TZOFFSETFROM:+071720
  515.13 +TZOFFSETTO:+071720
  515.14 +TZNAME:PMT
  515.15 +DTSTART:19080501T000000
  515.16 +RDATE:19080501T000000
  515.17 +END:STANDARD
  515.18 +BEGIN:STANDARD
  515.19 +TZOFFSETFROM:+071720
  515.20 +TZOFFSETTO:+0730
  515.21 +TZNAME:WIT
  515.22 +DTSTART:19321101T000000
  515.23 +RDATE:19321101T000000
  515.24 +END:STANDARD
  515.25 +BEGIN:STANDARD
  515.26 +TZOFFSETFROM:+0730
  515.27 +TZOFFSETTO:+0900
  515.28 +TZNAME:JST
  515.29 +DTSTART:19420129T000000
  515.30 +RDATE:19420129T000000
  515.31 +END:STANDARD
  515.32 +BEGIN:STANDARD
  515.33 +TZOFFSETFROM:+0900
  515.34 +TZOFFSETTO:+0730
  515.35 +TZNAME:WIT
  515.36 +DTSTART:19450923T000000
  515.37 +RDATE:19450923T000000
  515.38 +END:STANDARD
  515.39 +BEGIN:STANDARD
  515.40 +TZOFFSETFROM:+0730
  515.41 +TZOFFSETTO:+0800
  515.42 +TZNAME:WIT
  515.43 +DTSTART:19480501T000000
  515.44 +RDATE:19480501T000000
  515.45 +END:STANDARD
  515.46 +BEGIN:STANDARD
  515.47 +TZOFFSETFROM:+0800
  515.48 +TZOFFSETTO:+0730
  515.49 +TZNAME:WIT
  515.50 +DTSTART:19500501T000000
  515.51 +RDATE:19500501T000000
  515.52 +END:STANDARD
  515.53 +BEGIN:STANDARD
  515.54 +TZOFFSETFROM:+0730
  515.55 +TZOFFSETTO:+0800
  515.56 +TZNAME:CIT
  515.57 +DTSTART:19640101T000000
  515.58 +RDATE:19640101T000000
  515.59 +END:STANDARD
  515.60 +BEGIN:STANDARD
  515.61 +TZOFFSETFROM:+0800
  515.62 +TZOFFSETTO:+0700
  515.63 +TZNAME:WIT
  515.64 +DTSTART:19880101T000000
  515.65 +RDATE:19880101T000000
  515.66 +END:STANDARD
  515.67 +END:VTIMEZONE
  515.68 +END:VCALENDAR
   516.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   516.2 +++ b/src/zoneinfo-global/Asia/Pyongyang.ics	Tue Feb 10 18:12:00 2015 +0100
   516.3 @@ -0,0 +1,45 @@
   516.4 +BEGIN:VCALENDAR
   516.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   516.6 +VERSION:2.0
   516.7 +BEGIN:VTIMEZONE
   516.8 +TZID:Asia/Pyongyang
   516.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Pyongyang
  516.10 +X-LIC-LOCATION:Asia/Pyongyang
  516.11 +BEGIN:STANDARD
  516.12 +TZOFFSETFROM:+0823
  516.13 +TZOFFSETTO:+0830
  516.14 +TZNAME:KST
  516.15 +DTSTART:18900101T000000
  516.16 +RDATE:18900101T000000
  516.17 +END:STANDARD
  516.18 +BEGIN:STANDARD
  516.19 +TZOFFSETFROM:+0830
  516.20 +TZOFFSETTO:+0900
  516.21 +TZNAME:KST
  516.22 +DTSTART:19041201T000000
  516.23 +RDATE:19041201T000000
  516.24 +RDATE:19320101T000000
  516.25 +END:STANDARD
  516.26 +BEGIN:STANDARD
  516.27 +TZOFFSETFROM:+0900
  516.28 +TZOFFSETTO:+0830
  516.29 +TZNAME:KST
  516.30 +DTSTART:19280101T000000
  516.31 +RDATE:19280101T000000
  516.32 +END:STANDARD
  516.33 +BEGIN:STANDARD
  516.34 +TZOFFSETFROM:+0900
  516.35 +TZOFFSETTO:+0800
  516.36 +TZNAME:KST
  516.37 +DTSTART:19540321T000000
  516.38 +RDATE:19540321T000000
  516.39 +END:STANDARD
  516.40 +BEGIN:STANDARD
  516.41 +TZOFFSETFROM:+0800
  516.42 +TZOFFSETTO:+0900
  516.43 +TZNAME:KST
  516.44 +DTSTART:19610810T000000
  516.45 +RDATE:19610810T000000
  516.46 +END:STANDARD
  516.47 +END:VTIMEZONE
  516.48 +END:VCALENDAR
   517.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   517.2 +++ b/src/zoneinfo-global/Asia/Qatar.ics	Tue Feb 10 18:12:00 2015 +0100
   517.3 @@ -0,0 +1,23 @@
   517.4 +BEGIN:VCALENDAR
   517.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   517.6 +VERSION:2.0
   517.7 +BEGIN:VTIMEZONE
   517.8 +TZID:Asia/Qatar
   517.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Qatar
  517.10 +X-LIC-LOCATION:Asia/Qatar
  517.11 +BEGIN:STANDARD
  517.12 +TZOFFSETFROM:+032608
  517.13 +TZOFFSETTO:+0400
  517.14 +TZNAME:GST
  517.15 +DTSTART:19200101T000000
  517.16 +RDATE:19200101T000000
  517.17 +END:STANDARD
  517.18 +BEGIN:STANDARD
  517.19 +TZOFFSETFROM:+0400
  517.20 +TZOFFSETTO:+0300
  517.21 +TZNAME:AST
  517.22 +DTSTART:19720601T000000
  517.23 +RDATE:19720601T000000
  517.24 +END:STANDARD
  517.25 +END:VTIMEZONE
  517.26 +END:VCALENDAR
   518.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   518.2 +++ b/src/zoneinfo-global/Asia/Qyzylorda.ics	Tue Feb 10 18:12:00 2015 +0100
   518.3 @@ -0,0 +1,133 @@
   518.4 +BEGIN:VCALENDAR
   518.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   518.6 +VERSION:2.0
   518.7 +BEGIN:VTIMEZONE
   518.8 +TZID:Asia/Qyzylorda
   518.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Qyzylorda
  518.10 +X-LIC-LOCATION:Asia/Qyzylorda
  518.11 +BEGIN:STANDARD
  518.12 +TZOFFSETFROM:+042152
  518.13 +TZOFFSETTO:+0400
  518.14 +TZNAME:KIZT
  518.15 +DTSTART:19240502T000000
  518.16 +RDATE:19240502T000000
  518.17 +END:STANDARD
  518.18 +BEGIN:STANDARD
  518.19 +TZOFFSETFROM:+0400
  518.20 +TZOFFSETTO:+0500
  518.21 +TZNAME:KIZT
  518.22 +DTSTART:19300621T000000
  518.23 +RDATE:19300621T000000
  518.24 +END:STANDARD
  518.25 +BEGIN:DAYLIGHT
  518.26 +TZOFFSETFROM:+0500
  518.27 +TZOFFSETTO:+0600
  518.28 +TZNAME:KIZST
  518.29 +DTSTART:19810401T000000
  518.30 +RDATE:19810401T000000
  518.31 +RDATE:19830401T000000
  518.32 +RDATE:19840401T000000
  518.33 +RDATE:19850331T020000
  518.34 +RDATE:19860330T020000
  518.35 +RDATE:19870329T020000
  518.36 +RDATE:19880327T020000
  518.37 +RDATE:19890326T020000
  518.38 +RDATE:19900325T020000
  518.39 +END:DAYLIGHT
  518.40 +BEGIN:STANDARD
  518.41 +TZOFFSETFROM:+0600
  518.42 +TZOFFSETTO:+0600
  518.43 +TZNAME:KIZT
  518.44 +DTSTART:19811001T000000
  518.45 +RDATE:19811001T000000
  518.46 +END:STANDARD
  518.47 +BEGIN:DAYLIGHT
  518.48 +TZOFFSETFROM:+0600
  518.49 +TZOFFSETTO:+0600
  518.50 +TZNAME:KIZST
  518.51 +DTSTART:19820401T000000
  518.52 +RDATE:19820401T000000
  518.53 +END:DAYLIGHT
  518.54 +BEGIN:STANDARD
  518.55 +TZOFFSETFROM:+0600
  518.56 +TZOFFSETTO:+0500
  518.57 +TZNAME:KIZT
  518.58 +DTSTART:19821001T000000
  518.59 +RDATE:19821001T000000
  518.60 +RDATE:19831001T000000
  518.61 +RDATE:19840930T030000
  518.62 +RDATE:19850929T030000
  518.63 +RDATE:19860928T030000
  518.64 +RDATE:19870927T030000
  518.65 +RDATE:19880925T030000
  518.66 +RDATE:19890924T030000
  518.67 +RDATE:19900930T030000
  518.68 +END:STANDARD
  518.69 +BEGIN:STANDARD
  518.70 +TZOFFSETFROM:+0500
  518.71 +TZOFFSETTO:+0500
  518.72 +TZNAME:KIZT
  518.73 +DTSTART:19910101T000000
  518.74 +RDATE:19910101T000000
  518.75 +END:STANDARD
  518.76 +BEGIN:STANDARD
  518.77 +TZOFFSETFROM:+0500
  518.78 +TZOFFSETTO:+0500
  518.79 +TZNAME:QYZT
  518.80 +DTSTART:19911216T000000
  518.81 +RDATE:19911216T000000
  518.82 +END:STANDARD
  518.83 +BEGIN:STANDARD
  518.84 +TZOFFSETFROM:+0500
  518.85 +TZOFFSETTO:+0600
  518.86 +TZNAME:QYZT
  518.87 +DTSTART:19920119T020000
  518.88 +RDATE:19920119T020000
  518.89 +END:STANDARD
  518.90 +BEGIN:DAYLIGHT
  518.91 +TZOFFSETFROM:+0600
  518.92 +TZOFFSETTO:+0700
  518.93 +TZNAME:QYZST
  518.94 +DTSTART:19920328T230000
  518.95 +RDATE:19920328T230000
  518.96 +RDATE:19930328T020000
  518.97 +RDATE:19940327T020000
  518.98 +RDATE:19950326T020000
  518.99 +RDATE:19960331T020000
 518.100 +RDATE:19970330T020000
 518.101 +RDATE:19980329T020000
 518.102 +RDATE:19990328T020000
 518.103 +RDATE:20000326T020000
 518.104 +RDATE:20010325T020000
 518.105 +RDATE:20020331T020000
 518.106 +RDATE:20030330T020000
 518.107 +RDATE:20040328T020000
 518.108 +END:DAYLIGHT
 518.109 +BEGIN:STANDARD
 518.110 +TZOFFSETFROM:+0700
 518.111 +TZOFFSETTO:+0600
 518.112 +TZNAME:QYZT
 518.113 +DTSTART:19920926T230000
 518.114 +RDATE:19920926T230000
 518.115 +RDATE:19930926T030000
 518.116 +RDATE:19940925T030000
 518.117 +RDATE:19950924T030000
 518.118 +RDATE:19961027T030000
 518.119 +RDATE:19971026T030000
 518.120 +RDATE:19981025T030000
 518.121 +RDATE:19991031T030000
 518.122 +RDATE:20001029T030000
 518.123 +RDATE:20011028T030000
 518.124 +RDATE:20021027T030000
 518.125 +RDATE:20031026T030000
 518.126 +RDATE:20041031T030000
 518.127 +END:STANDARD
 518.128 +BEGIN:STANDARD
 518.129 +TZOFFSETFROM:+0600
 518.130 +TZOFFSETTO:+0600
 518.131 +TZNAME:QYZT
 518.132 +DTSTART:20050315T000000
 518.133 +RDATE:20050315T000000
 518.134 +END:STANDARD
 518.135 +END:VTIMEZONE
 518.136 +END:VCALENDAR
   519.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   519.2 +++ b/src/zoneinfo-global/Asia/Rangoon.ics	Tue Feb 10 18:12:00 2015 +0100
   519.3 @@ -0,0 +1,37 @@
   519.4 +BEGIN:VCALENDAR
   519.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   519.6 +VERSION:2.0
   519.7 +BEGIN:VTIMEZONE
   519.8 +TZID:Asia/Rangoon
   519.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Rangoon
  519.10 +X-LIC-LOCATION:Asia/Rangoon
  519.11 +BEGIN:STANDARD
  519.12 +TZOFFSETFROM:+062440
  519.13 +TZOFFSETTO:+062436
  519.14 +TZNAME:RMT
  519.15 +DTSTART:18800101T000000
  519.16 +RDATE:18800101T000000
  519.17 +END:STANDARD
  519.18 +BEGIN:STANDARD
  519.19 +TZOFFSETFROM:+062436
  519.20 +TZOFFSETTO:+0630
  519.21 +TZNAME:BURT
  519.22 +DTSTART:19200101T000000
  519.23 +RDATE:19200101T000000
  519.24 +END:STANDARD
  519.25 +BEGIN:STANDARD
  519.26 +TZOFFSETFROM:+0630
  519.27 +TZOFFSETTO:+0900
  519.28 +TZNAME:JST
  519.29 +DTSTART:19420501T000000
  519.30 +RDATE:19420501T000000
  519.31 +END:STANDARD
  519.32 +BEGIN:STANDARD
  519.33 +TZOFFSETFROM:+0900
  519.34 +TZOFFSETTO:+0630
  519.35 +TZNAME:MMT
  519.36 +DTSTART:19450503T000000
  519.37 +RDATE:19450503T000000
  519.38 +END:STANDARD
  519.39 +END:VTIMEZONE
  519.40 +END:VCALENDAR
   520.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   520.2 +++ b/src/zoneinfo-global/Asia/Riyadh.ics	Tue Feb 10 18:12:00 2015 +0100
   520.3 @@ -0,0 +1,16 @@
   520.4 +BEGIN:VCALENDAR
   520.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   520.6 +VERSION:2.0
   520.7 +BEGIN:VTIMEZONE
   520.8 +TZID:Asia/Riyadh
   520.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Riyadh
  520.10 +X-LIC-LOCATION:Asia/Riyadh
  520.11 +BEGIN:STANDARD
  520.12 +TZOFFSETFROM:+030652
  520.13 +TZOFFSETTO:+0300
  520.14 +TZNAME:AST
  520.15 +DTSTART:19500101T000000
  520.16 +RDATE:19500101T000000
  520.17 +END:STANDARD
  520.18 +END:VTIMEZONE
  520.19 +END:VCALENDAR
   521.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   521.2 +++ b/src/zoneinfo-global/Asia/Sakhalin.ics	Tue Feb 10 18:12:00 2015 +0100
   521.3 @@ -0,0 +1,128 @@
   521.4 +BEGIN:VCALENDAR
   521.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   521.6 +VERSION:2.0
   521.7 +BEGIN:VTIMEZONE
   521.8 +TZID:Asia/Sakhalin
   521.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Sakhalin
  521.10 +X-LIC-LOCATION:Asia/Sakhalin
  521.11 +BEGIN:STANDARD
  521.12 +TZOFFSETFROM:+093048
  521.13 +TZOFFSETTO:+0900
  521.14 +TZNAME:CJT
  521.15 +DTSTART:19050823T000000
  521.16 +RDATE:19050823T000000
  521.17 +END:STANDARD
  521.18 +BEGIN:STANDARD
  521.19 +TZOFFSETFROM:+0900
  521.20 +TZOFFSETTO:+0900
  521.21 +TZNAME:JST
  521.22 +DTSTART:19380101T000000
  521.23 +RDATE:19380101T000000
  521.24 +END:STANDARD
  521.25 +BEGIN:STANDARD
  521.26 +TZOFFSETFROM:+0900
  521.27 +TZOFFSETTO:+1100
  521.28 +TZNAME:SAKT
  521.29 +DTSTART:19450825T000000
  521.30 +RDATE:19450825T000000
  521.31 +END:STANDARD
  521.32 +BEGIN:DAYLIGHT
  521.33 +TZOFFSETFROM:+1100
  521.34 +TZOFFSETTO:+1200
  521.35 +TZNAME:SAKST
  521.36 +DTSTART:19810401T000000
  521.37 +RDATE:19810401T000000
  521.38 +RDATE:19820401T000000
  521.39 +RDATE:19830401T000000
  521.40 +RDATE:19840401T000000
  521.41 +RDATE:19850331T020000
  521.42 +RDATE:19860330T020000
  521.43 +RDATE:19870329T020000
  521.44 +RDATE:19880327T020000
  521.45 +RDATE:19890326T020000
  521.46 +RDATE:19900325T020000
  521.47 +RDATE:19920328T230000
  521.48 +RDATE:19930328T020000
  521.49 +RDATE:19940327T020000
  521.50 +RDATE:19950326T020000
  521.51 +RDATE:19960331T020000
  521.52 +END:DAYLIGHT
  521.53 +BEGIN:STANDARD
  521.54 +TZOFFSETFROM:+1200
  521.55 +TZOFFSETTO:+1100
  521.56 +TZNAME:SAKT
  521.57 +DTSTART:19811001T000000
  521.58 +RDATE:19811001T000000
  521.59 +RDATE:19821001T000000
  521.60 +RDATE:19831001T000000
  521.61 +RDATE:19840930T030000
  521.62 +RDATE:19850929T030000
  521.63 +RDATE:19860928T030000
  521.64 +RDATE:19870927T030000
  521.65 +RDATE:19880925T030000
  521.66 +RDATE:19890924T030000
  521.67 +RDATE:19900930T030000
  521.68 +RDATE:19920926T230000
  521.69 +RDATE:19930926T030000
  521.70 +RDATE:19940925T030000
  521.71 +RDATE:19950924T030000
  521.72 +RDATE:19961027T030000
  521.73 +END:STANDARD
  521.74 +BEGIN:DAYLIGHT
  521.75 +TZOFFSETFROM:+1100
  521.76 +TZOFFSETTO:+1100
  521.77 +TZNAME:SAKST
  521.78 +DTSTART:19910331T020000
  521.79 +RDATE:19910331T020000
  521.80 +RDATE:19970330T020000
  521.81 +END:DAYLIGHT
  521.82 +BEGIN:STANDARD
  521.83 +TZOFFSETFROM:+1100
  521.84 +TZOFFSETTO:+1000
  521.85 +TZNAME:SAKT
  521.86 +DTSTART:19910929T030000
  521.87 +RDATE:19910929T030000
  521.88 +RDATE:19971026T030000
  521.89 +RDATE:19981025T030000
  521.90 +RDATE:19991031T030000
  521.91 +RDATE:20001029T030000
  521.92 +RDATE:20011028T030000
  521.93 +RDATE:20021027T030000
  521.94 +RDATE:20031026T030000
  521.95 +RDATE:20041031T030000
  521.96 +RDATE:20051030T030000
  521.97 +RDATE:20061029T030000
  521.98 +RDATE:20071028T030000
  521.99 +RDATE:20081026T030000
 521.100 +RDATE:20091025T030000
 521.101 +RDATE:20101031T030000
 521.102 +END:STANDARD
 521.103 +BEGIN:STANDARD
 521.104 +TZOFFSETFROM:+1000
 521.105 +TZOFFSETTO:+1100
 521.106 +TZNAME:SAKT
 521.107 +DTSTART:19920119T020000
 521.108 +RDATE:19920119T020000
 521.109 +RDATE:20110327T020000
 521.110 +END:STANDARD
 521.111 +BEGIN:DAYLIGHT
 521.112 +TZOFFSETFROM:+1000
 521.113 +TZOFFSETTO:+1100
 521.114 +TZNAME:SAKST
 521.115 +DTSTART:19980329T020000
 521.116 +RDATE:19980329T020000
 521.117 +RDATE:19990328T020000
 521.118 +RDATE:20000326T020000
 521.119 +RDATE:20010325T020000
 521.120 +RDATE:20020331T020000
 521.121 +RDATE:20030330T020000
 521.122 +RDATE:20040328T020000
 521.123 +RDATE:20050327T020000
 521.124 +RDATE:20060326T020000
 521.125 +RDATE:20070325T020000
 521.126 +RDATE:20080330T020000
 521.127 +RDATE:20090329T020000
 521.128 +RDATE:20100328T020000
 521.129 +END:DAYLIGHT
 521.130 +END:VTIMEZONE
 521.131 +END:VCALENDAR
   522.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   522.2 +++ b/src/zoneinfo-global/Asia/Samarkand.ics	Tue Feb 10 18:12:00 2015 +0100
   522.3 @@ -0,0 +1,89 @@
   522.4 +BEGIN:VCALENDAR
   522.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   522.6 +VERSION:2.0
   522.7 +BEGIN:VTIMEZONE
   522.8 +TZID:Asia/Samarkand
   522.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Samarkand
  522.10 +X-LIC-LOCATION:Asia/Samarkand
  522.11 +BEGIN:STANDARD
  522.12 +TZOFFSETFROM:+042712
  522.13 +TZOFFSETTO:+0400
  522.14 +TZNAME:SAMT
  522.15 +DTSTART:19240502T000000
  522.16 +RDATE:19240502T000000
  522.17 +END:STANDARD
  522.18 +BEGIN:STANDARD
  522.19 +TZOFFSETFROM:+0400
  522.20 +TZOFFSETTO:+0500
  522.21 +TZNAME:SAMT
  522.22 +DTSTART:19300621T000000
  522.23 +RDATE:19300621T000000
  522.24 +END:STANDARD
  522.25 +BEGIN:DAYLIGHT
  522.26 +TZOFFSETFROM:+0500
  522.27 +TZOFFSETTO:+0600
  522.28 +TZNAME:SAMST
  522.29 +DTSTART:19810401T000000
  522.30 +RDATE:19810401T000000
  522.31 +RDATE:19830401T000000
  522.32 +RDATE:19840401T000000
  522.33 +RDATE:19850331T020000
  522.34 +RDATE:19860330T020000
  522.35 +RDATE:19870329T020000
  522.36 +RDATE:19880327T020000
  522.37 +RDATE:19890326T020000
  522.38 +RDATE:19900325T020000
  522.39 +RDATE:19910331T020000
  522.40 +END:DAYLIGHT
  522.41 +BEGIN:STANDARD
  522.42 +TZOFFSETFROM:+0600
  522.43 +TZOFFSETTO:+0600
  522.44 +TZNAME:TAST
  522.45 +DTSTART:19811001T000000
  522.46 +RDATE:19811001T000000
  522.47 +END:STANDARD
  522.48 +BEGIN:DAYLIGHT
  522.49 +TZOFFSETFROM:+0600
  522.50 +TZOFFSETTO:+0600
  522.51 +TZNAME:SAMST
  522.52 +DTSTART:19820401T000000
  522.53 +RDATE:19820401T000000
  522.54 +END:DAYLIGHT
  522.55 +BEGIN:STANDARD
  522.56 +TZOFFSETFROM:+0600
  522.57 +TZOFFSETTO:+0500
  522.58 +TZNAME:SAMT
  522.59 +DTSTART:19821001T000000
  522.60 +RDATE:19821001T000000
  522.61 +RDATE:19831001T000000
  522.62 +RDATE:19840930T030000
  522.63 +RDATE:19850929T030000
  522.64 +RDATE:19860928T030000
  522.65 +RDATE:19870927T030000
  522.66 +RDATE:19880925T030000
  522.67 +RDATE:19890924T030000
  522.68 +RDATE:19900930T030000
  522.69 +END:STANDARD
  522.70 +BEGIN:DAYLIGHT
  522.71 +TZOFFSETFROM:+0600
  522.72 +TZOFFSETTO:+0600
  522.73 +TZNAME:UZST
  522.74 +DTSTART:19910901T000000
  522.75 +RDATE:19910901T000000
  522.76 +END:DAYLIGHT
  522.77 +BEGIN:STANDARD
  522.78 +TZOFFSETFROM:+0600
  522.79 +TZOFFSETTO:+0500
  522.80 +TZNAME:UZT
  522.81 +DTSTART:19910929T030000
  522.82 +RDATE:19910929T030000
  522.83 +END:STANDARD
  522.84 +BEGIN:STANDARD
  522.85 +TZOFFSETFROM:+0500
  522.86 +TZOFFSETTO:+0500
  522.87 +TZNAME:UZT
  522.88 +DTSTART:19920101T000000
  522.89 +RDATE:19920101T000000
  522.90 +END:STANDARD
  522.91 +END:VTIMEZONE
  522.92 +END:VCALENDAR
   523.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   523.2 +++ b/src/zoneinfo-global/Asia/Seoul.ics	Tue Feb 10 18:12:00 2015 +0100
   523.3 @@ -0,0 +1,70 @@
   523.4 +BEGIN:VCALENDAR
   523.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   523.6 +VERSION:2.0
   523.7 +BEGIN:VTIMEZONE
   523.8 +TZID:Asia/Seoul
   523.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Seoul
  523.10 +X-LIC-LOCATION:Asia/Seoul
  523.11 +BEGIN:STANDARD
  523.12 +TZOFFSETFROM:+082752
  523.13 +TZOFFSETTO:+0830
  523.14 +TZNAME:KST
  523.15 +DTSTART:18900101T000000
  523.16 +RDATE:18900101T000000
  523.17 +END:STANDARD
  523.18 +BEGIN:STANDARD
  523.19 +TZOFFSETFROM:+0830
  523.20 +TZOFFSETTO:+0900
  523.21 +TZNAME:KST
  523.22 +DTSTART:19041201T000000
  523.23 +RDATE:19041201T000000
  523.24 +RDATE:19320101T000000
  523.25 +RDATE:19681001T000000
  523.26 +END:STANDARD
  523.27 +BEGIN:STANDARD
  523.28 +TZOFFSETFROM:+0900
  523.29 +TZOFFSETTO:+0830
  523.30 +TZNAME:KST
  523.31 +DTSTART:19280101T000000
  523.32 +RDATE:19280101T000000
  523.33 +END:STANDARD
  523.34 +BEGIN:STANDARD
  523.35 +TZOFFSETFROM:+0900
  523.36 +TZOFFSETTO:+0800
  523.37 +TZNAME:KST
  523.38 +DTSTART:19540321T000000
  523.39 +RDATE:19540321T000000
  523.40 +RDATE:19600913T000000
  523.41 +END:STANDARD
  523.42 +BEGIN:DAYLIGHT
  523.43 +TZOFFSETFROM:+0800
  523.44 +TZOFFSETTO:+0900
  523.45 +TZNAME:KDT
  523.46 +DTSTART:19600515T000000
  523.47 +RDATE:19600515T000000
  523.48 +END:DAYLIGHT
  523.49 +BEGIN:STANDARD
  523.50 +TZOFFSETFROM:+0800
  523.51 +TZOFFSETTO:+0830
  523.52 +TZNAME:KST
  523.53 +DTSTART:19610810T000000
  523.54 +RDATE:19610810T000000
  523.55 +END:STANDARD
  523.56 +BEGIN:DAYLIGHT
  523.57 +TZOFFSETFROM:+0900
  523.58 +TZOFFSETTO:+1000
  523.59 +TZNAME:KDT
  523.60 +DTSTART:19870510T000000
  523.61 +RDATE:19870510T000000
  523.62 +RDATE:19880508T000000
  523.63 +END:DAYLIGHT
  523.64 +BEGIN:STANDARD
  523.65 +TZOFFSETFROM:+1000
  523.66 +TZOFFSETTO:+0900
  523.67 +TZNAME:KST
  523.68 +DTSTART:19871011T000000
  523.69 +RDATE:19871011T000000
  523.70 +RDATE:19881009T000000
  523.71 +END:STANDARD
  523.72 +END:VTIMEZONE
  523.73 +END:VCALENDAR
   524.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   524.2 +++ b/src/zoneinfo-global/Asia/Shanghai.ics	Tue Feb 10 18:12:00 2015 +0100
   524.3 @@ -0,0 +1,51 @@
   524.4 +BEGIN:VCALENDAR
   524.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   524.6 +VERSION:2.0
   524.7 +BEGIN:VTIMEZONE
   524.8 +TZID:Asia/Shanghai
   524.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Shanghai
  524.10 +X-LIC-LOCATION:Asia/Shanghai
  524.11 +BEGIN:STANDARD
  524.12 +TZOFFSETFROM:+080552
  524.13 +TZOFFSETTO:+0800
  524.14 +TZNAME:CST
  524.15 +DTSTART:19280101T000000
  524.16 +RDATE:19280101T000000
  524.17 +END:STANDARD
  524.18 +BEGIN:DAYLIGHT
  524.19 +TZOFFSETFROM:+0800
  524.20 +TZOFFSETTO:+0900
  524.21 +TZNAME:CDT
  524.22 +DTSTART:19400603T000000
  524.23 +RDATE:19400603T000000
  524.24 +RDATE:19410316T000000
  524.25 +RDATE:19860504T000000
  524.26 +RDATE:19870412T000000
  524.27 +RDATE:19880410T000000
  524.28 +RDATE:19890416T000000
  524.29 +RDATE:19900415T000000
  524.30 +RDATE:19910414T000000
  524.31 +END:DAYLIGHT
  524.32 +BEGIN:STANDARD
  524.33 +TZOFFSETFROM:+0900
  524.34 +TZOFFSETTO:+0800
  524.35 +TZNAME:CST
  524.36 +DTSTART:19401001T000000
  524.37 +RDATE:19401001T000000
  524.38 +RDATE:19411001T000000
  524.39 +RDATE:19860914T000000
  524.40 +RDATE:19870913T000000
  524.41 +RDATE:19880911T000000
  524.42 +RDATE:19890917T000000
  524.43 +RDATE:19900916T000000
  524.44 +RDATE:19910915T000000
  524.45 +END:STANDARD
  524.46 +BEGIN:STANDARD
  524.47 +TZOFFSETFROM:+0800
  524.48 +TZOFFSETTO:+0800
  524.49 +TZNAME:CST
  524.50 +DTSTART:19490101T000000
  524.51 +RDATE:19490101T000000
  524.52 +END:STANDARD
  524.53 +END:VTIMEZONE
  524.54 +END:VCALENDAR
   525.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   525.2 +++ b/src/zoneinfo-global/Asia/Singapore.ics	Tue Feb 10 18:12:00 2015 +0100
   525.3 @@ -0,0 +1,72 @@
   525.4 +BEGIN:VCALENDAR
   525.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   525.6 +VERSION:2.0
   525.7 +BEGIN:VTIMEZONE
   525.8 +TZID:Asia/Singapore
   525.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Singapore
  525.10 +X-LIC-LOCATION:Asia/Singapore
  525.11 +BEGIN:STANDARD
  525.12 +TZOFFSETFROM:+065525
  525.13 +TZOFFSETTO:+065525
  525.14 +TZNAME:SMT
  525.15 +DTSTART:19010101T000000
  525.16 +RDATE:19010101T000000
  525.17 +END:STANDARD
  525.18 +BEGIN:STANDARD
  525.19 +TZOFFSETFROM:+065525
  525.20 +TZOFFSETTO:+0700
  525.21 +TZNAME:MALT
  525.22 +DTSTART:19050601T000000
  525.23 +RDATE:19050601T000000
  525.24 +END:STANDARD
  525.25 +BEGIN:DAYLIGHT
  525.26 +TZOFFSETFROM:+0700
  525.27 +TZOFFSETTO:+0720
  525.28 +TZNAME:MALST
  525.29 +DTSTART:19330101T000000
  525.30 +RDATE:19330101T000000
  525.31 +END:DAYLIGHT
  525.32 +BEGIN:STANDARD
  525.33 +TZOFFSETFROM:+0720
  525.34 +TZOFFSETTO:+0720
  525.35 +TZNAME:MALT
  525.36 +DTSTART:19360101T000000
  525.37 +RDATE:19360101T000000
  525.38 +END:STANDARD
  525.39 +BEGIN:STANDARD
  525.40 +TZOFFSETFROM:+0720
  525.41 +TZOFFSETTO:+0730
  525.42 +TZNAME:MALT
  525.43 +DTSTART:19410901T000000
  525.44 +RDATE:19410901T000000
  525.45 +END:STANDARD
  525.46 +BEGIN:STANDARD
  525.47 +TZOFFSETFROM:+0730
  525.48 +TZOFFSETTO:+0900
  525.49 +TZNAME:JST
  525.50 +DTSTART:19420216T000000
  525.51 +RDATE:19420216T000000
  525.52 +END:STANDARD
  525.53 +BEGIN:STANDARD
  525.54 +TZOFFSETFROM:+0900
  525.55 +TZOFFSETTO:+0730
  525.56 +TZNAME:MALT
  525.57 +DTSTART:19450912T000000
  525.58 +RDATE:19450912T000000
  525.59 +END:STANDARD
  525.60 +BEGIN:STANDARD
  525.61 +TZOFFSETFROM:+0730
  525.62 +TZOFFSETTO:+0730
  525.63 +TZNAME:SGT
  525.64 +DTSTART:19650809T000000
  525.65 +RDATE:19650809T000000
  525.66 +END:STANDARD
  525.67 +BEGIN:STANDARD
  525.68 +TZOFFSETFROM:+0730
  525.69 +TZOFFSETTO:+0800
  525.70 +TZNAME:SGT
  525.71 +DTSTART:19820101T000000
  525.72 +RDATE:19820101T000000
  525.73 +END:STANDARD
  525.74 +END:VTIMEZONE
  525.75 +END:VCALENDAR
   526.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   526.2 +++ b/src/zoneinfo-global/Asia/Taipei.ics	Tue Feb 10 18:12:00 2015 +0100
   526.3 @@ -0,0 +1,68 @@
   526.4 +BEGIN:VCALENDAR
   526.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   526.6 +VERSION:2.0
   526.7 +BEGIN:VTIMEZONE
   526.8 +TZID:Asia/Taipei
   526.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Taipei
  526.10 +X-LIC-LOCATION:Asia/Taipei
  526.11 +BEGIN:STANDARD
  526.12 +TZOFFSETFROM:+0806
  526.13 +TZOFFSETTO:+0800
  526.14 +TZNAME:CST
  526.15 +DTSTART:18960101T000000
  526.16 +RDATE:18960101T000000
  526.17 +END:STANDARD
  526.18 +BEGIN:DAYLIGHT
  526.19 +TZOFFSETFROM:+0800
  526.20 +TZOFFSETTO:+0900
  526.21 +TZNAME:CDT
  526.22 +DTSTART:19450501T000000
  526.23 +RDATE:19450501T000000
  526.24 +RDATE:19460501T000000
  526.25 +RDATE:19470501T000000
  526.26 +RDATE:19480501T000000
  526.27 +RDATE:19490501T000000
  526.28 +RDATE:19500501T000000
  526.29 +RDATE:19510501T000000
  526.30 +RDATE:19520301T000000
  526.31 +RDATE:19530401T000000
  526.32 +RDATE:19540401T000000
  526.33 +RDATE:19550401T000000
  526.34 +RDATE:19560401T000000
  526.35 +RDATE:19570401T000000
  526.36 +RDATE:19580401T000000
  526.37 +RDATE:19590401T000000
  526.38 +RDATE:19600601T000000
  526.39 +RDATE:19610601T000000
  526.40 +RDATE:19740401T000000
  526.41 +RDATE:19750401T000000
  526.42 +RDATE:19790630T000000
  526.43 +END:DAYLIGHT
  526.44 +BEGIN:STANDARD
  526.45 +TZOFFSETFROM:+0900
  526.46 +TZOFFSETTO:+0800
  526.47 +TZNAME:CST
  526.48 +DTSTART:19451001T000000
  526.49 +RDATE:19451001T000000
  526.50 +RDATE:19461001T000000
  526.51 +RDATE:19471001T000000
  526.52 +RDATE:19481001T000000
  526.53 +RDATE:19491001T000000
  526.54 +RDATE:19501001T000000
  526.55 +RDATE:19511001T000000
  526.56 +RDATE:19521101T000000
  526.57 +RDATE:19531101T000000
  526.58 +RDATE:19541101T000000
  526.59 +RDATE:19551001T000000
  526.60 +RDATE:19561001T000000
  526.61 +RDATE:19571001T000000
  526.62 +RDATE:19581001T000000
  526.63 +RDATE:19591001T000000
  526.64 +RDATE:19601001T000000
  526.65 +RDATE:19611001T000000
  526.66 +RDATE:19741001T000000
  526.67 +RDATE:19751001T000000
  526.68 +RDATE:19790930T000000
  526.69 +END:STANDARD
  526.70 +END:VTIMEZONE
  526.71 +END:VCALENDAR
   527.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   527.2 +++ b/src/zoneinfo-global/Asia/Tashkent.ics	Tue Feb 10 18:12:00 2015 +0100
   527.3 @@ -0,0 +1,83 @@
   527.4 +BEGIN:VCALENDAR
   527.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   527.6 +VERSION:2.0
   527.7 +BEGIN:VTIMEZONE
   527.8 +TZID:Asia/Tashkent
   527.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Tashkent
  527.10 +X-LIC-LOCATION:Asia/Tashkent
  527.11 +BEGIN:STANDARD
  527.12 +TZOFFSETFROM:+043712
  527.13 +TZOFFSETTO:+0500
  527.14 +TZNAME:TAST
  527.15 +DTSTART:19240502T000000
  527.16 +RDATE:19240502T000000
  527.17 +END:STANDARD
  527.18 +BEGIN:STANDARD
  527.19 +TZOFFSETFROM:+0500
  527.20 +TZOFFSETTO:+0600
  527.21 +TZNAME:TAST
  527.22 +DTSTART:19300621T000000
  527.23 +RDATE:19300621T000000
  527.24 +END:STANDARD
  527.25 +BEGIN:DAYLIGHT
  527.26 +TZOFFSETFROM:+0600
  527.27 +TZOFFSETTO:+0700
  527.28 +TZNAME:TASST
  527.29 +DTSTART:19810401T000000
  527.30 +RDATE:19810401T000000
  527.31 +RDATE:19820401T000000
  527.32 +RDATE:19830401T000000
  527.33 +RDATE:19840401T000000
  527.34 +RDATE:19850331T020000
  527.35 +RDATE:19860330T020000
  527.36 +RDATE:19870329T020000
  527.37 +RDATE:19880327T020000
  527.38 +RDATE:19890326T020000
  527.39 +RDATE:19900325T020000
  527.40 +END:DAYLIGHT
  527.41 +BEGIN:STANDARD
  527.42 +TZOFFSETFROM:+0700
  527.43 +TZOFFSETTO:+0600
  527.44 +TZNAME:TAST
  527.45 +DTSTART:19811001T000000
  527.46 +RDATE:19811001T000000
  527.47 +RDATE:19821001T000000
  527.48 +RDATE:19831001T000000
  527.49 +RDATE:19840930T030000
  527.50 +RDATE:19850929T030000
  527.51 +RDATE:19860928T030000
  527.52 +RDATE:19870927T030000
  527.53 +RDATE:19880925T030000
  527.54 +RDATE:19890924T030000
  527.55 +RDATE:19900930T030000
  527.56 +END:STANDARD
  527.57 +BEGIN:DAYLIGHT
  527.58 +TZOFFSETFROM:+0600
  527.59 +TZOFFSETTO:+0600
  527.60 +TZNAME:TASST
  527.61 +DTSTART:19910331T020000
  527.62 +RDATE:19910331T020000
  527.63 +END:DAYLIGHT
  527.64 +BEGIN:DAYLIGHT
  527.65 +TZOFFSETFROM:+0600
  527.66 +TZOFFSETTO:+0600
  527.67 +TZNAME:UZST
  527.68 +DTSTART:19910901T000000
  527.69 +RDATE:19910901T000000
  527.70 +END:DAYLIGHT
  527.71 +BEGIN:STANDARD
  527.72 +TZOFFSETFROM:+0600
  527.73 +TZOFFSETTO:+0500
  527.74 +TZNAME:UZT
  527.75 +DTSTART:19910929T030000
  527.76 +RDATE:19910929T030000
  527.77 +END:STANDARD
  527.78 +BEGIN:STANDARD
  527.79 +TZOFFSETFROM:+0500
  527.80 +TZOFFSETTO:+0500
  527.81 +TZNAME:UZT
  527.82 +DTSTART:19920101T000000
  527.83 +RDATE:19920101T000000
  527.84 +END:STANDARD
  527.85 +END:VTIMEZONE
  527.86 +END:VCALENDAR
   528.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   528.2 +++ b/src/zoneinfo-global/Asia/Tbilisi.ics	Tue Feb 10 18:12:00 2015 +0100
   528.3 @@ -0,0 +1,160 @@
   528.4 +BEGIN:VCALENDAR
   528.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   528.6 +VERSION:2.0
   528.7 +BEGIN:VTIMEZONE
   528.8 +TZID:Asia/Tbilisi
   528.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Tbilisi
  528.10 +X-LIC-LOCATION:Asia/Tbilisi
  528.11 +BEGIN:STANDARD
  528.12 +TZOFFSETFROM:+025916
  528.13 +TZOFFSETTO:+025916
  528.14 +TZNAME:TBMT
  528.15 +DTSTART:18800101T000000
  528.16 +RDATE:18800101T000000
  528.17 +END:STANDARD
  528.18 +BEGIN:STANDARD
  528.19 +TZOFFSETFROM:+025916
  528.20 +TZOFFSETTO:+0300
  528.21 +TZNAME:TBIT
  528.22 +DTSTART:19240502T000000
  528.23 +RDATE:19240502T000000
  528.24 +END:STANDARD
  528.25 +BEGIN:STANDARD
  528.26 +TZOFFSETFROM:+0300
  528.27 +TZOFFSETTO:+0400
  528.28 +TZNAME:TBIT
  528.29 +DTSTART:19570301T000000
  528.30 +RDATE:19570301T000000
  528.31 +END:STANDARD
  528.32 +BEGIN:DAYLIGHT
  528.33 +TZOFFSETFROM:+0400
  528.34 +TZOFFSETTO:+0500
  528.35 +TZNAME:TBIST
  528.36 +DTSTART:19810401T000000
  528.37 +RDATE:19810401T000000
  528.38 +RDATE:19820401T000000
  528.39 +RDATE:19830401T000000
  528.40 +RDATE:19840401T000000
  528.41 +RDATE:19850331T020000
  528.42 +RDATE:19860330T020000
  528.43 +RDATE:19870329T020000
  528.44 +RDATE:19880327T020000
  528.45 +RDATE:19890326T020000
  528.46 +RDATE:19900325T020000
  528.47 +END:DAYLIGHT
  528.48 +BEGIN:STANDARD
  528.49 +TZOFFSETFROM:+0500
  528.50 +TZOFFSETTO:+0400
  528.51 +TZNAME:TBIT
  528.52 +DTSTART:19811001T000000
  528.53 +RDATE:19811001T000000
  528.54 +RDATE:19821001T000000
  528.55 +RDATE:19831001T000000
  528.56 +RDATE:19840930T030000
  528.57 +RDATE:19850929T030000
  528.58 +RDATE:19860928T030000
  528.59 +RDATE:19870927T030000
  528.60 +RDATE:19880925T030000
  528.61 +RDATE:19890924T030000
  528.62 +RDATE:19900930T030000
  528.63 +END:STANDARD
  528.64 +BEGIN:DAYLIGHT
  528.65 +TZOFFSETFROM:+0400
  528.66 +TZOFFSETTO:+0400
  528.67 +TZNAME:TBIST
  528.68 +DTSTART:19910331T020000
  528.69 +RDATE:19910331T020000
  528.70 +END:DAYLIGHT
  528.71 +BEGIN:DAYLIGHT
  528.72 +TZOFFSETFROM:+0400
  528.73 +TZOFFSETTO:+0400
  528.74 +TZNAME:GEST
  528.75 +DTSTART:19910409T000000
  528.76 +RDATE:19910409T000000
  528.77 +END:DAYLIGHT
  528.78 +BEGIN:STANDARD
  528.79 +TZOFFSETFROM:+0400
  528.80 +TZOFFSETTO:+0300
  528.81 +TZNAME:GET
  528.82 +DTSTART:19910929T030000
  528.83 +RDATE:19910929T030000
  528.84 +RDATE:19920927T000000
  528.85 +RDATE:19930926T000000
  528.86 +RDATE:20041031T030000
  528.87 +END:STANDARD
  528.88 +BEGIN:STANDARD
  528.89 +TZOFFSETFROM:+0300
  528.90 +TZOFFSETTO:+0300
  528.91 +TZNAME:GET
  528.92 +DTSTART:19920101T000000
  528.93 +RDATE:19920101T000000
  528.94 +END:STANDARD
  528.95 +BEGIN:DAYLIGHT
  528.96 +TZOFFSETFROM:+0300
  528.97 +TZOFFSETTO:+0400
  528.98 +TZNAME:GEST
  528.99 +DTSTART:19920329T000000
 528.100 +RDATE:19920329T000000
 528.101 +RDATE:19930328T000000
 528.102 +RDATE:19940327T000000
 528.103 +END:DAYLIGHT
 528.104 +BEGIN:STANDARD
 528.105 +TZOFFSETFROM:+0400
 528.106 +TZOFFSETTO:+0400
 528.107 +TZNAME:GET
 528.108 +DTSTART:19940925T000000
 528.109 +RDATE:19940925T000000
 528.110 +END:STANDARD
 528.111 +BEGIN:DAYLIGHT
 528.112 +TZOFFSETFROM:+0400
 528.113 +TZOFFSETTO:+0500
 528.114 +TZNAME:GEST
 528.115 +DTSTART:19950326T000000
 528.116 +RDATE:19950326T000000
 528.117 +RDATE:19960331T000000
 528.118 +RDATE:19980329T000000
 528.119 +RDATE:19990328T000000
 528.120 +RDATE:20000326T000000
 528.121 +RDATE:20010325T000000
 528.122 +RDATE:20020331T000000
 528.123 +RDATE:20030330T000000
 528.124 +RDATE:20040328T000000
 528.125 +END:DAYLIGHT
 528.126 +BEGIN:STANDARD
 528.127 +TZOFFSETFROM:+0500
 528.128 +TZOFFSETTO:+0400
 528.129 +TZNAME:GET
 528.130 +DTSTART:19950924T000000
 528.131 +RDATE:19950924T000000
 528.132 +RDATE:19971026T000000
 528.133 +RDATE:19981025T000000
 528.134 +RDATE:19991031T000000
 528.135 +RDATE:20001029T000000
 528.136 +RDATE:20011028T000000
 528.137 +RDATE:20021027T000000
 528.138 +RDATE:20031026T000000
 528.139 +END:STANDARD
 528.140 +BEGIN:DAYLIGHT
 528.141 +TZOFFSETFROM:+0500
 528.142 +TZOFFSETTO:+0500
 528.143 +TZNAME:GEST
 528.144 +DTSTART:19961027T000000
 528.145 +RDATE:19961027T000000
 528.146 +RDATE:19970330T000000
 528.147 +END:DAYLIGHT
 528.148 +BEGIN:DAYLIGHT
 528.149 +TZOFFSETFROM:+0500
 528.150 +TZOFFSETTO:+0400
 528.151 +TZNAME:GEST
 528.152 +DTSTART:20040627T000000
 528.153 +RDATE:20040627T000000
 528.154 +END:DAYLIGHT
 528.155 +BEGIN:STANDARD
 528.156 +TZOFFSETFROM:+0300
 528.157 +TZOFFSETTO:+0400
 528.158 +TZNAME:GET
 528.159 +DTSTART:20050327T020000
 528.160 +RDATE:20050327T020000
 528.161 +END:STANDARD
 528.162 +END:VTIMEZONE
 528.163 +END:VCALENDAR
   529.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   529.2 +++ b/src/zoneinfo-global/Asia/Tehran.ics	Tue Feb 10 18:12:00 2015 +0100
   529.3 @@ -0,0 +1,157 @@
   529.4 +BEGIN:VCALENDAR
   529.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   529.6 +VERSION:2.0
   529.7 +BEGIN:VTIMEZONE
   529.8 +TZID:Asia/Tehran
   529.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Tehran
  529.10 +X-LIC-LOCATION:Asia/Tehran
  529.11 +BEGIN:STANDARD
  529.12 +TZOFFSETFROM:+032544
  529.13 +TZOFFSETTO:+032544
  529.14 +TZNAME:TMT
  529.15 +DTSTART:19160101T000000
  529.16 +RDATE:19160101T000000
  529.17 +END:STANDARD
  529.18 +BEGIN:STANDARD
  529.19 +TZOFFSETFROM:+032544
  529.20 +TZOFFSETTO:+0330
  529.21 +TZNAME:IRST
  529.22 +DTSTART:19460101T000000
  529.23 +RDATE:19460101T000000
  529.24 +END:STANDARD
  529.25 +BEGIN:STANDARD
  529.26 +TZOFFSETFROM:+0330
  529.27 +TZOFFSETTO:+0400
  529.28 +TZNAME:IRST
  529.29 +DTSTART:19771101T000000
  529.30 +RDATE:19771101T000000
  529.31 +END:STANDARD
  529.32 +BEGIN:DAYLIGHT
  529.33 +TZOFFSETFROM:+0400
  529.34 +TZOFFSETTO:+0500
  529.35 +TZNAME:IRDT
  529.36 +DTSTART:19780321T000000
  529.37 +RDATE:19780321T000000
  529.38 +END:DAYLIGHT
  529.39 +BEGIN:STANDARD
  529.40 +TZOFFSETFROM:+0500
  529.41 +TZOFFSETTO:+0400
  529.42 +TZNAME:IRST
  529.43 +DTSTART:19781021T000000
  529.44 +RDATE:19781021T000000
  529.45 +END:STANDARD
  529.46 +BEGIN:STANDARD
  529.47 +TZOFFSETFROM:+0400
  529.48 +TZOFFSETTO:+0330
  529.49 +TZNAME:IRST
  529.50 +DTSTART:19790101T000000
  529.51 +RDATE:19790101T000000
  529.52 +END:STANDARD
  529.53 +BEGIN:DAYLIGHT
  529.54 +TZOFFSETFROM:+0330
  529.55 +TZOFFSETTO:+0430
  529.56 +TZNAME:IRDT
  529.57 +DTSTART:19790321T000000
  529.58 +RDATE:19790321T000000
  529.59 +RDATE:19800321T000000
  529.60 +RDATE:19910503T000000
  529.61 +RDATE:19920322T000000
  529.62 +RDATE:19930322T000000
  529.63 +RDATE:19940322T000000
  529.64 +RDATE:19950322T000000
  529.65 +RDATE:19960321T000000
  529.66 +RDATE:19970322T000000
  529.67 +RDATE:19980322T000000
  529.68 +RDATE:19990322T000000
  529.69 +RDATE:20000321T000000
  529.70 +RDATE:20010322T000000
  529.71 +RDATE:20020322T000000
  529.72 +RDATE:20030322T000000
  529.73 +RDATE:20040321T000000
  529.74 +RDATE:20050322T000000
  529.75 +RDATE:20080321T000000
  529.76 +RDATE:20090322T000000
  529.77 +RDATE:20100322T000000
  529.78 +RDATE:20110322T000000
  529.79 +RDATE:20120321T000000
  529.80 +RDATE:20130322T000000
  529.81 +RDATE:20140322T000000
  529.82 +RDATE:20150322T000000
  529.83 +RDATE:20160321T000000
  529.84 +RDATE:20170322T000000
  529.85 +RDATE:20180322T000000
  529.86 +RDATE:20190322T000000
  529.87 +RDATE:20200321T000000
  529.88 +RDATE:20210322T000000
  529.89 +RDATE:20220322T000000
  529.90 +RDATE:20230322T000000
  529.91 +RDATE:20240321T000000
  529.92 +RDATE:20250322T000000
  529.93 +RDATE:20260322T000000
  529.94 +RDATE:20270322T000000
  529.95 +RDATE:20280321T000000
  529.96 +RDATE:20290321T000000
  529.97 +RDATE:20300322T000000
  529.98 +RDATE:20310322T000000
  529.99 +RDATE:20320321T000000
 529.100 +RDATE:20330321T000000
 529.101 +RDATE:20340322T000000
 529.102 +RDATE:20350322T000000
 529.103 +RDATE:20360321T000000
 529.104 +RDATE:20370321T000000
 529.105 +END:DAYLIGHT
 529.106 +BEGIN:STANDARD
 529.107 +TZOFFSETFROM:+0430
 529.108 +TZOFFSETTO:+0330
 529.109 +TZNAME:IRST
 529.110 +DTSTART:19790919T000000
 529.111 +RDATE:19790919T000000
 529.112 +RDATE:19800923T000000
 529.113 +RDATE:19910922T000000
 529.114 +RDATE:19920922T000000
 529.115 +RDATE:19930922T000000
 529.116 +RDATE:19940922T000000
 529.117 +RDATE:19950922T000000
 529.118 +RDATE:19960921T000000
 529.119 +RDATE:19970922T000000
 529.120 +RDATE:19980922T000000
 529.121 +RDATE:19990922T000000
 529.122 +RDATE:20000921T000000
 529.123 +RDATE:20010922T000000
 529.124 +RDATE:20020922T000000
 529.125 +RDATE:20030922T000000
 529.126 +RDATE:20040921T000000
 529.127 +RDATE:20050922T000000
 529.128 +RDATE:20080921T000000
 529.129 +RDATE:20090922T000000
 529.130 +RDATE:20100922T000000
 529.131 +RDATE:20110922T000000
 529.132 +RDATE:20120921T000000
 529.133 +RDATE:20130922T000000
 529.134 +RDATE:20140922T000000
 529.135 +RDATE:20150922T000000
 529.136 +RDATE:20160921T000000
 529.137 +RDATE:20170922T000000
 529.138 +RDATE:20180922T000000
 529.139 +RDATE:20190922T000000
 529.140 +RDATE:20200921T000000
 529.141 +RDATE:20210922T000000
 529.142 +RDATE:20220922T000000
 529.143 +RDATE:20230922T000000
 529.144 +RDATE:20240921T000000
 529.145 +RDATE:20250922T000000
 529.146 +RDATE:20260922T000000
 529.147 +RDATE:20270922T000000
 529.148 +RDATE:20280921T000000
 529.149 +RDATE:20290921T000000
 529.150 +RDATE:20300922T000000
 529.151 +RDATE:20310922T000000
 529.152 +RDATE:20320921T000000
 529.153 +RDATE:20330921T000000
 529.154 +RDATE:20340922T000000
 529.155 +RDATE:20350922T000000
 529.156 +RDATE:20360921T000000
 529.157 +RDATE:20370921T000000
 529.158 +END:STANDARD
 529.159 +END:VTIMEZONE
 529.160 +END:VCALENDAR
   530.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   530.2 +++ b/src/zoneinfo-global/Asia/Thimphu.ics	Tue Feb 10 18:12:00 2015 +0100
   530.3 @@ -0,0 +1,23 @@
   530.4 +BEGIN:VCALENDAR
   530.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   530.6 +VERSION:2.0
   530.7 +BEGIN:VTIMEZONE
   530.8 +TZID:Asia/Thimphu
   530.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Thimphu
  530.10 +X-LIC-LOCATION:Asia/Thimphu
  530.11 +BEGIN:STANDARD
  530.12 +TZOFFSETFROM:+055836
  530.13 +TZOFFSETTO:+0530
  530.14 +TZNAME:IST
  530.15 +DTSTART:19470815T000000
  530.16 +RDATE:19470815T000000
  530.17 +END:STANDARD
  530.18 +BEGIN:STANDARD
  530.19 +TZOFFSETFROM:+0530
  530.20 +TZOFFSETTO:+0600
  530.21 +TZNAME:BTT
  530.22 +DTSTART:19871001T000000
  530.23 +RDATE:19871001T000000
  530.24 +END:STANDARD
  530.25 +END:VTIMEZONE
  530.26 +END:VCALENDAR
   531.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   531.2 +++ b/src/zoneinfo-global/Asia/Tokyo.ics	Tue Feb 10 18:12:00 2015 +0100
   531.3 @@ -0,0 +1,50 @@
   531.4 +BEGIN:VCALENDAR
   531.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   531.6 +VERSION:2.0
   531.7 +BEGIN:VTIMEZONE
   531.8 +TZID:Asia/Tokyo
   531.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Tokyo
  531.10 +X-LIC-LOCATION:Asia/Tokyo
  531.11 +BEGIN:STANDARD
  531.12 +TZOFFSETFROM:+091859
  531.13 +TZOFFSETTO:+0900
  531.14 +TZNAME:JST
  531.15 +DTSTART:18880101T001859
  531.16 +RDATE:18880101T001859
  531.17 +END:STANDARD
  531.18 +BEGIN:STANDARD
  531.19 +TZOFFSETFROM:+0900
  531.20 +TZOFFSETTO:+0900
  531.21 +TZNAME:CJT
  531.22 +DTSTART:18960101T000000
  531.23 +RDATE:18960101T000000
  531.24 +END:STANDARD
  531.25 +BEGIN:STANDARD
  531.26 +TZOFFSETFROM:+0900
  531.27 +TZOFFSETTO:+0900
  531.28 +TZNAME:JST
  531.29 +DTSTART:19380101T000000
  531.30 +RDATE:19380101T000000
  531.31 +END:STANDARD
  531.32 +BEGIN:DAYLIGHT
  531.33 +TZOFFSETFROM:+0900
  531.34 +TZOFFSETTO:+1000
  531.35 +TZNAME:JDT
  531.36 +DTSTART:19480502T020000
  531.37 +RDATE:19480502T020000
  531.38 +RDATE:19490403T020000
  531.39 +RDATE:19500507T020000
  531.40 +RDATE:19510506T020000
  531.41 +END:DAYLIGHT
  531.42 +BEGIN:STANDARD
  531.43 +TZOFFSETFROM:+1000
  531.44 +TZOFFSETTO:+0900
  531.45 +TZNAME:JST
  531.46 +DTSTART:19480911T020000
  531.47 +RDATE:19480911T020000
  531.48 +RDATE:19490910T020000
  531.49 +RDATE:19500909T020000
  531.50 +RDATE:19510908T020000
  531.51 +END:STANDARD
  531.52 +END:VTIMEZONE
  531.53 +END:VCALENDAR
   532.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   532.2 +++ b/src/zoneinfo-global/Asia/Ulaanbaatar.ics	Tue Feb 10 18:12:00 2015 +0100
   532.3 @@ -0,0 +1,79 @@
   532.4 +BEGIN:VCALENDAR
   532.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   532.6 +VERSION:2.0
   532.7 +BEGIN:VTIMEZONE
   532.8 +TZID:Asia/Ulaanbaatar
   532.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Ulaanbaatar
  532.10 +X-LIC-LOCATION:Asia/Ulaanbaatar
  532.11 +BEGIN:STANDARD
  532.12 +TZOFFSETFROM:+070732
  532.13 +TZOFFSETTO:+0700
  532.14 +TZNAME:ULAT
  532.15 +DTSTART:19050801T000000
  532.16 +RDATE:19050801T000000
  532.17 +END:STANDARD
  532.18 +BEGIN:STANDARD
  532.19 +TZOFFSETFROM:+0700
  532.20 +TZOFFSETTO:+0800
  532.21 +TZNAME:ULAT
  532.22 +DTSTART:19780101T000000
  532.23 +RDATE:19780101T000000
  532.24 +END:STANDARD
  532.25 +BEGIN:DAYLIGHT
  532.26 +TZOFFSETFROM:+0800
  532.27 +TZOFFSETTO:+0900
  532.28 +TZNAME:ULAST
  532.29 +DTSTART:19830401T000000
  532.30 +RDATE:19830401T000000
  532.31 +RDATE:19840401T000000
  532.32 +RDATE:19850331T000000
  532.33 +RDATE:19860330T000000
  532.34 +RDATE:19870329T000000
  532.35 +RDATE:19880327T000000
  532.36 +RDATE:19890326T000000
  532.37 +RDATE:19900325T000000
  532.38 +RDATE:19910331T000000
  532.39 +RDATE:19920329T000000
  532.40 +RDATE:19930328T000000
  532.41 +RDATE:19940327T000000
  532.42 +RDATE:19950326T000000
  532.43 +RDATE:19960331T000000
  532.44 +RDATE:19970330T000000
  532.45 +RDATE:19980329T000000
  532.46 +RDATE:20010428T020000
  532.47 +RDATE:20020330T020000
  532.48 +RDATE:20030329T020000
  532.49 +RDATE:20040327T020000
  532.50 +RDATE:20050326T020000
  532.51 +RDATE:20060325T020000
  532.52 +END:DAYLIGHT
  532.53 +BEGIN:STANDARD
  532.54 +TZOFFSETFROM:+0900
  532.55 +TZOFFSETTO:+0800
  532.56 +TZNAME:ULAT
  532.57 +DTSTART:19831001T000000
  532.58 +RDATE:19831001T000000
  532.59 +RDATE:19840930T000000
  532.60 +RDATE:19850929T000000
  532.61 +RDATE:19860928T000000
  532.62 +RDATE:19870927T000000
  532.63 +RDATE:19880925T000000
  532.64 +RDATE:19890924T000000
  532.65 +RDATE:19900930T000000
  532.66 +RDATE:19910929T000000
  532.67 +RDATE:19920927T000000
  532.68 +RDATE:19930926T000000
  532.69 +RDATE:19940925T000000
  532.70 +RDATE:19950924T000000
  532.71 +RDATE:19960929T000000
  532.72 +RDATE:19970928T000000
  532.73 +RDATE:19980927T000000
  532.74 +RDATE:20010929T020000
  532.75 +RDATE:20020928T020000
  532.76 +RDATE:20030927T020000
  532.77 +RDATE:20040925T020000
  532.78 +RDATE:20050924T020000
  532.79 +RDATE:20060930T020000
  532.80 +END:STANDARD
  532.81 +END:VTIMEZONE
  532.82 +END:VCALENDAR
   533.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   533.2 +++ b/src/zoneinfo-global/Asia/Urumqi.ics	Tue Feb 10 18:12:00 2015 +0100
   533.3 @@ -0,0 +1,47 @@
   533.4 +BEGIN:VCALENDAR
   533.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   533.6 +VERSION:2.0
   533.7 +BEGIN:VTIMEZONE
   533.8 +TZID:Asia/Urumqi
   533.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Urumqi
  533.10 +X-LIC-LOCATION:Asia/Urumqi
  533.11 +BEGIN:STANDARD
  533.12 +TZOFFSETFROM:+055020
  533.13 +TZOFFSETTO:+0600
  533.14 +TZNAME:URUT
  533.15 +DTSTART:19280101T000000
  533.16 +RDATE:19280101T000000
  533.17 +END:STANDARD
  533.18 +BEGIN:STANDARD
  533.19 +TZOFFSETFROM:+0600
  533.20 +TZOFFSETTO:+0800
  533.21 +TZNAME:CST
  533.22 +DTSTART:19800501T000000
  533.23 +RDATE:19800501T000000
  533.24 +END:STANDARD
  533.25 +BEGIN:DAYLIGHT
  533.26 +TZOFFSETFROM:+0800
  533.27 +TZOFFSETTO:+0900
  533.28 +TZNAME:CDT
  533.29 +DTSTART:19860504T000000
  533.30 +RDATE:19860504T000000
  533.31 +RDATE:19870412T000000
  533.32 +RDATE:19880410T000000
  533.33 +RDATE:19890416T000000
  533.34 +RDATE:19900415T000000
  533.35 +RDATE:19910414T000000
  533.36 +END:DAYLIGHT
  533.37 +BEGIN:STANDARD
  533.38 +TZOFFSETFROM:+0900
  533.39 +TZOFFSETTO:+0800
  533.40 +TZNAME:CST
  533.41 +DTSTART:19860914T000000
  533.42 +RDATE:19860914T000000
  533.43 +RDATE:19870913T000000
  533.44 +RDATE:19880911T000000
  533.45 +RDATE:19890917T000000
  533.46 +RDATE:19900916T000000
  533.47 +RDATE:19910915T000000
  533.48 +END:STANDARD
  533.49 +END:VTIMEZONE
  533.50 +END:VCALENDAR
   534.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   534.2 +++ b/src/zoneinfo-global/Asia/Vientiane.ics	Tue Feb 10 18:12:00 2015 +0100
   534.3 @@ -0,0 +1,37 @@
   534.4 +BEGIN:VCALENDAR
   534.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   534.6 +VERSION:2.0
   534.7 +BEGIN:VTIMEZONE
   534.8 +TZID:Asia/Vientiane
   534.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Vientiane
  534.10 +X-LIC-LOCATION:Asia/Vientiane
  534.11 +BEGIN:STANDARD
  534.12 +TZOFFSETFROM:+065024
  534.13 +TZOFFSETTO:+070620
  534.14 +TZNAME:SMT
  534.15 +DTSTART:19060609T000000
  534.16 +RDATE:19060609T000000
  534.17 +END:STANDARD
  534.18 +BEGIN:STANDARD
  534.19 +TZOFFSETFROM:+070620
  534.20 +TZOFFSETTO:+0700
  534.21 +TZNAME:ICT
  534.22 +DTSTART:19110311T000100
  534.23 +RDATE:19110311T000100
  534.24 +END:STANDARD
  534.25 +BEGIN:STANDARD
  534.26 +TZOFFSETFROM:+0700
  534.27 +TZOFFSETTO:+0800
  534.28 +TZNAME:ICT
  534.29 +DTSTART:19120501T000000
  534.30 +RDATE:19120501T000000
  534.31 +END:STANDARD
  534.32 +BEGIN:STANDARD
  534.33 +TZOFFSETFROM:+0800
  534.34 +TZOFFSETTO:+0700
  534.35 +TZNAME:ICT
  534.36 +DTSTART:19310501T000000
  534.37 +RDATE:19310501T000000
  534.38 +END:STANDARD
  534.39 +END:VTIMEZONE
  534.40 +END:VCALENDAR
   535.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   535.2 +++ b/src/zoneinfo-global/Asia/Vladivostok.ics	Tue Feb 10 18:12:00 2015 +0100
   535.3 @@ -0,0 +1,115 @@
   535.4 +BEGIN:VCALENDAR
   535.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   535.6 +VERSION:2.0
   535.7 +BEGIN:VTIMEZONE
   535.8 +TZID:Asia/Vladivostok
   535.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Vladivostok
  535.10 +X-LIC-LOCATION:Asia/Vladivostok
  535.11 +BEGIN:STANDARD
  535.12 +TZOFFSETFROM:+084744
  535.13 +TZOFFSETTO:+0900
  535.14 +TZNAME:VLAT
  535.15 +DTSTART:19221115T000000
  535.16 +RDATE:19221115T000000
  535.17 +END:STANDARD
  535.18 +BEGIN:STANDARD
  535.19 +TZOFFSETFROM:+0900
  535.20 +TZOFFSETTO:+1000
  535.21 +TZNAME:VLAT
  535.22 +DTSTART:19300621T000000
  535.23 +RDATE:19300621T000000
  535.24 +RDATE:19920119T020000
  535.25 +END:STANDARD
  535.26 +BEGIN:DAYLIGHT
  535.27 +TZOFFSETFROM:+1000
  535.28 +TZOFFSETTO:+1100
  535.29 +TZNAME:VLAST
  535.30 +DTSTART:19810401T000000
  535.31 +RDATE:19810401T000000
  535.32 +RDATE:19820401T000000
  535.33 +RDATE:19830401T000000
  535.34 +RDATE:19840401T000000
  535.35 +RDATE:19850331T020000
  535.36 +RDATE:19860330T020000
  535.37 +RDATE:19870329T020000
  535.38 +RDATE:19880327T020000
  535.39 +RDATE:19890326T020000
  535.40 +RDATE:19900325T020000
  535.41 +RDATE:19920328T230000
  535.42 +RDATE:19930328T020000
  535.43 +RDATE:19940327T020000
  535.44 +RDATE:19950326T020000
  535.45 +RDATE:19960331T020000
  535.46 +RDATE:19970330T020000
  535.47 +RDATE:19980329T020000
  535.48 +RDATE:19990328T020000
  535.49 +RDATE:20000326T020000
  535.50 +RDATE:20010325T020000
  535.51 +RDATE:20020331T020000
  535.52 +RDATE:20030330T020000
  535.53 +RDATE:20040328T020000
  535.54 +RDATE:20050327T020000
  535.55 +RDATE:20060326T020000
  535.56 +RDATE:20070325T020000
  535.57 +RDATE:20080330T020000
  535.58 +RDATE:20090329T020000
  535.59 +RDATE:20100328T020000
  535.60 +END:DAYLIGHT
  535.61 +BEGIN:STANDARD
  535.62 +TZOFFSETFROM:+1100
  535.63 +TZOFFSETTO:+1000
  535.64 +TZNAME:VLAT
  535.65 +DTSTART:19811001T000000
  535.66 +RDATE:19811001T000000
  535.67 +RDATE:19821001T000000
  535.68 +RDATE:19831001T000000
  535.69 +RDATE:19840930T030000
  535.70 +RDATE:19850929T030000
  535.71 +RDATE:19860928T030000
  535.72 +RDATE:19870927T030000
  535.73 +RDATE:19880925T030000
  535.74 +RDATE:19890924T030000
  535.75 +RDATE:19900930T030000
  535.76 +RDATE:19920926T230000
  535.77 +RDATE:19930926T030000
  535.78 +RDATE:19940925T030000
  535.79 +RDATE:19950924T030000
  535.80 +RDATE:19961027T030000
  535.81 +RDATE:19971026T030000
  535.82 +RDATE:19981025T030000
  535.83 +RDATE:19991031T030000
  535.84 +RDATE:20001029T030000
  535.85 +RDATE:20011028T030000
  535.86 +RDATE:20021027T030000
  535.87 +RDATE:20031026T030000
  535.88 +RDATE:20041031T030000
  535.89 +RDATE:20051030T030000
  535.90 +RDATE:20061029T030000
  535.91 +RDATE:20071028T030000
  535.92 +RDATE:20081026T030000
  535.93 +RDATE:20091025T030000
  535.94 +RDATE:20101031T030000
  535.95 +END:STANDARD
  535.96 +BEGIN:DAYLIGHT
  535.97 +TZOFFSETFROM:+1000
  535.98 +TZOFFSETTO:+1000
  535.99 +TZNAME:VLASST
 535.100 +DTSTART:19910331T020000
 535.101 +RDATE:19910331T020000
 535.102 +END:DAYLIGHT
 535.103 +BEGIN:STANDARD
 535.104 +TZOFFSETFROM:+1000
 535.105 +TZOFFSETTO:+0900
 535.106 +TZNAME:VLAST
 535.107 +DTSTART:19910929T030000
 535.108 +RDATE:19910929T030000
 535.109 +END:STANDARD
 535.110 +BEGIN:STANDARD
 535.111 +TZOFFSETFROM:+1000
 535.112 +TZOFFSETTO:+1100
 535.113 +TZNAME:VLAT
 535.114 +DTSTART:20110327T020000
 535.115 +RDATE:20110327T020000
 535.116 +END:STANDARD
 535.117 +END:VTIMEZONE
 535.118 +END:VCALENDAR
   536.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   536.2 +++ b/src/zoneinfo-global/Asia/Yakutsk.ics	Tue Feb 10 18:12:00 2015 +0100
   536.3 @@ -0,0 +1,115 @@
   536.4 +BEGIN:VCALENDAR
   536.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   536.6 +VERSION:2.0
   536.7 +BEGIN:VTIMEZONE
   536.8 +TZID:Asia/Yakutsk
   536.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Yakutsk
  536.10 +X-LIC-LOCATION:Asia/Yakutsk
  536.11 +BEGIN:STANDARD
  536.12 +TZOFFSETFROM:+083840
  536.13 +TZOFFSETTO:+0800
  536.14 +TZNAME:YAKT
  536.15 +DTSTART:19191215T000000
  536.16 +RDATE:19191215T000000
  536.17 +END:STANDARD
  536.18 +BEGIN:STANDARD
  536.19 +TZOFFSETFROM:+0800
  536.20 +TZOFFSETTO:+0900
  536.21 +TZNAME:YAKT
  536.22 +DTSTART:19300621T000000
  536.23 +RDATE:19300621T000000
  536.24 +RDATE:19920119T020000
  536.25 +END:STANDARD
  536.26 +BEGIN:DAYLIGHT
  536.27 +TZOFFSETFROM:+0900
  536.28 +TZOFFSETTO:+1000
  536.29 +TZNAME:YAKST
  536.30 +DTSTART:19810401T000000
  536.31 +RDATE:19810401T000000
  536.32 +RDATE:19820401T000000
  536.33 +RDATE:19830401T000000
  536.34 +RDATE:19840401T000000
  536.35 +RDATE:19850331T020000
  536.36 +RDATE:19860330T020000
  536.37 +RDATE:19870329T020000
  536.38 +RDATE:19880327T020000
  536.39 +RDATE:19890326T020000
  536.40 +RDATE:19900325T020000
  536.41 +RDATE:19920328T230000
  536.42 +RDATE:19930328T020000
  536.43 +RDATE:19940327T020000
  536.44 +RDATE:19950326T020000
  536.45 +RDATE:19960331T020000
  536.46 +RDATE:19970330T020000
  536.47 +RDATE:19980329T020000
  536.48 +RDATE:19990328T020000
  536.49 +RDATE:20000326T020000
  536.50 +RDATE:20010325T020000
  536.51 +RDATE:20020331T020000
  536.52 +RDATE:20030330T020000
  536.53 +RDATE:20040328T020000
  536.54 +RDATE:20050327T020000
  536.55 +RDATE:20060326T020000
  536.56 +RDATE:20070325T020000
  536.57 +RDATE:20080330T020000
  536.58 +RDATE:20090329T020000
  536.59 +RDATE:20100328T020000
  536.60 +END:DAYLIGHT
  536.61 +BEGIN:STANDARD
  536.62 +TZOFFSETFROM:+1000
  536.63 +TZOFFSETTO:+0900
  536.64 +TZNAME:YAKT
  536.65 +DTSTART:19811001T000000
  536.66 +RDATE:19811001T000000
  536.67 +RDATE:19821001T000000
  536.68 +RDATE:19831001T000000
  536.69 +RDATE:19840930T030000
  536.70 +RDATE:19850929T030000
  536.71 +RDATE:19860928T030000
  536.72 +RDATE:19870927T030000
  536.73 +RDATE:19880925T030000
  536.74 +RDATE:19890924T030000
  536.75 +RDATE:19900930T030000
  536.76 +RDATE:19920926T230000
  536.77 +RDATE:19930926T030000
  536.78 +RDATE:19940925T030000
  536.79 +RDATE:19950924T030000
  536.80 +RDATE:19961027T030000
  536.81 +RDATE:19971026T030000
  536.82 +RDATE:19981025T030000
  536.83 +RDATE:19991031T030000
  536.84 +RDATE:20001029T030000
  536.85 +RDATE:20011028T030000
  536.86 +RDATE:20021027T030000
  536.87 +RDATE:20031026T030000
  536.88 +RDATE:20041031T030000
  536.89 +RDATE:20051030T030000
  536.90 +RDATE:20061029T030000
  536.91 +RDATE:20071028T030000
  536.92 +RDATE:20081026T030000
  536.93 +RDATE:20091025T030000
  536.94 +RDATE:20101031T030000
  536.95 +END:STANDARD
  536.96 +BEGIN:DAYLIGHT
  536.97 +TZOFFSETFROM:+0900
  536.98 +TZOFFSETTO:+0900
  536.99 +TZNAME:YAKST
 536.100 +DTSTART:19910331T020000
 536.101 +RDATE:19910331T020000
 536.102 +END:DAYLIGHT
 536.103 +BEGIN:STANDARD
 536.104 +TZOFFSETFROM:+0900
 536.105 +TZOFFSETTO:+0800
 536.106 +TZNAME:YAKT
 536.107 +DTSTART:19910929T030000
 536.108 +RDATE:19910929T030000
 536.109 +END:STANDARD
 536.110 +BEGIN:STANDARD
 536.111 +TZOFFSETFROM:+0900
 536.112 +TZOFFSETTO:+1000
 536.113 +TZNAME:YAKT
 536.114 +DTSTART:20110327T020000
 536.115 +RDATE:20110327T020000
 536.116 +END:STANDARD
 536.117 +END:VTIMEZONE
 536.118 +END:VCALENDAR
   537.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   537.2 +++ b/src/zoneinfo-global/Asia/Yekaterinburg.ics	Tue Feb 10 18:12:00 2015 +0100
   537.3 @@ -0,0 +1,133 @@
   537.4 +BEGIN:VCALENDAR
   537.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   537.6 +VERSION:2.0
   537.7 +BEGIN:VTIMEZONE
   537.8 +TZID:Asia/Yekaterinburg
   537.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Yekaterinburg
  537.10 +X-LIC-LOCATION:Asia/Yekaterinburg
  537.11 +BEGIN:STANDARD
  537.12 +TZOFFSETFROM:+040224
  537.13 +TZOFFSETTO:+0400
  537.14 +TZNAME:SVET
  537.15 +DTSTART:19190715T040000
  537.16 +RDATE:19190715T040000
  537.17 +END:STANDARD
  537.18 +BEGIN:STANDARD
  537.19 +TZOFFSETFROM:+0400
  537.20 +TZOFFSETTO:+0500
  537.21 +TZNAME:SVET
  537.22 +DTSTART:19300621T000000
  537.23 +RDATE:19300621T000000
  537.24 +END:STANDARD
  537.25 +BEGIN:DAYLIGHT
  537.26 +TZOFFSETFROM:+0500
  537.27 +TZOFFSETTO:+0600
  537.28 +TZNAME:SVEST
  537.29 +DTSTART:19810401T000000
  537.30 +RDATE:19810401T000000
  537.31 +RDATE:19820401T000000
  537.32 +RDATE:19830401T000000
  537.33 +RDATE:19840401T000000
  537.34 +RDATE:19850331T020000
  537.35 +RDATE:19860330T020000
  537.36 +RDATE:19870329T020000
  537.37 +RDATE:19880327T020000
  537.38 +RDATE:19890326T020000
  537.39 +RDATE:19900325T020000
  537.40 +END:DAYLIGHT
  537.41 +BEGIN:STANDARD
  537.42 +TZOFFSETFROM:+0600
  537.43 +TZOFFSETTO:+0500
  537.44 +TZNAME:SVET
  537.45 +DTSTART:19811001T000000
  537.46 +RDATE:19811001T000000
  537.47 +RDATE:19821001T000000
  537.48 +RDATE:19831001T000000
  537.49 +RDATE:19840930T030000
  537.50 +RDATE:19850929T030000
  537.51 +RDATE:19860928T030000
  537.52 +RDATE:19870927T030000
  537.53 +RDATE:19880925T030000
  537.54 +RDATE:19890924T030000
  537.55 +RDATE:19900930T030000
  537.56 +END:STANDARD
  537.57 +BEGIN:DAYLIGHT
  537.58 +TZOFFSETFROM:+0500
  537.59 +TZOFFSETTO:+0500
  537.60 +TZNAME:SVEST
  537.61 +DTSTART:19910331T020000
  537.62 +RDATE:19910331T020000
  537.63 +END:DAYLIGHT
  537.64 +BEGIN:STANDARD
  537.65 +TZOFFSETFROM:+0500
  537.66 +TZOFFSETTO:+0400
  537.67 +TZNAME:SVET
  537.68 +DTSTART:19910929T030000
  537.69 +RDATE:19910929T030000
  537.70 +END:STANDARD
  537.71 +BEGIN:STANDARD
  537.72 +TZOFFSETFROM:+0400
  537.73 +TZOFFSETTO:+0500
  537.74 +TZNAME:YEKT
  537.75 +DTSTART:19920119T020000
  537.76 +RDATE:19920119T020000
  537.77 +END:STANDARD
  537.78 +BEGIN:DAYLIGHT
  537.79 +TZOFFSETFROM:+0500
  537.80 +TZOFFSETTO:+0600
  537.81 +TZNAME:YEKST
  537.82 +DTSTART:19920328T230000
  537.83 +RDATE:19920328T230000
  537.84 +RDATE:19930328T020000
  537.85 +RDATE:19940327T020000
  537.86 +RDATE:19950326T020000
  537.87 +RDATE:19960331T020000
  537.88 +RDATE:19970330T020000
  537.89 +RDATE:19980329T020000
  537.90 +RDATE:19990328T020000
  537.91 +RDATE:20000326T020000
  537.92 +RDATE:20010325T020000
  537.93 +RDATE:20020331T020000
  537.94 +RDATE:20030330T020000
  537.95 +RDATE:20040328T020000
  537.96 +RDATE:20050327T020000
  537.97 +RDATE:20060326T020000
  537.98 +RDATE:20070325T020000
  537.99 +RDATE:20080330T020000
 537.100 +RDATE:20090329T020000
 537.101 +RDATE:20100328T020000
 537.102 +END:DAYLIGHT
 537.103 +BEGIN:STANDARD
 537.104 +TZOFFSETFROM:+0600
 537.105 +TZOFFSETTO:+0500
 537.106 +TZNAME:YEKT
 537.107 +DTSTART:19920926T230000
 537.108 +RDATE:19920926T230000
 537.109 +RDATE:19930926T030000
 537.110 +RDATE:19940925T030000
 537.111 +RDATE:19950924T030000
 537.112 +RDATE:19961027T030000
 537.113 +RDATE:19971026T030000
 537.114 +RDATE:19981025T030000
 537.115 +RDATE:19991031T030000
 537.116 +RDATE:20001029T030000
 537.117 +RDATE:20011028T030000
 537.118 +RDATE:20021027T030000
 537.119 +RDATE:20031026T030000
 537.120 +RDATE:20041031T030000
 537.121 +RDATE:20051030T030000
 537.122 +RDATE:20061029T030000
 537.123 +RDATE:20071028T030000
 537.124 +RDATE:20081026T030000
 537.125 +RDATE:20091025T030000
 537.126 +RDATE:20101031T030000
 537.127 +END:STANDARD
 537.128 +BEGIN:STANDARD
 537.129 +TZOFFSETFROM:+0500
 537.130 +TZOFFSETTO:+0600
 537.131 +TZNAME:YEKT
 537.132 +DTSTART:20110327T020000
 537.133 +RDATE:20110327T020000
 537.134 +END:STANDARD
 537.135 +END:VTIMEZONE
 537.136 +END:VCALENDAR
   538.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   538.2 +++ b/src/zoneinfo-global/Asia/Yerevan.ics	Tue Feb 10 18:12:00 2015 +0100
   538.3 @@ -0,0 +1,111 @@
   538.4 +BEGIN:VCALENDAR
   538.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   538.6 +VERSION:2.0
   538.7 +BEGIN:VTIMEZONE
   538.8 +TZID:Asia/Yerevan
   538.9 +TZURL:http://tzurl.org/zoneinfo-global/Asia/Yerevan
  538.10 +X-LIC-LOCATION:Asia/Yerevan
  538.11 +BEGIN:DAYLIGHT
  538.12 +TZOFFSETFROM:+0400
  538.13 +TZOFFSETTO:+0500
  538.14 +TZNAME:AMST
  538.15 +DTSTART:19970330T020000
  538.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  538.17 +END:DAYLIGHT
  538.18 +BEGIN:STANDARD
  538.19 +TZOFFSETFROM:+0500
  538.20 +TZOFFSETTO:+0400
  538.21 +TZNAME:AMT
  538.22 +DTSTART:19971026T030000
  538.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  538.24 +END:STANDARD
  538.25 +BEGIN:STANDARD
  538.26 +TZOFFSETFROM:+0258
  538.27 +TZOFFSETTO:+0300
  538.28 +TZNAME:YERT
  538.29 +DTSTART:19240502T000000
  538.30 +RDATE:19240502T000000
  538.31 +END:STANDARD
  538.32 +BEGIN:STANDARD
  538.33 +TZOFFSETFROM:+0300
  538.34 +TZOFFSETTO:+0400
  538.35 +TZNAME:YERT
  538.36 +DTSTART:19570301T000000
  538.37 +RDATE:19570301T000000
  538.38 +END:STANDARD
  538.39 +BEGIN:DAYLIGHT
  538.40 +TZOFFSETFROM:+0400
  538.41 +TZOFFSETTO:+0500
  538.42 +TZNAME:YERST
  538.43 +DTSTART:19810401T000000
  538.44 +RDATE:19810401T000000
  538.45 +RDATE:19820401T000000
  538.46 +RDATE:19830401T000000
  538.47 +RDATE:19840401T000000
  538.48 +RDATE:19850331T020000
  538.49 +RDATE:19860330T020000
  538.50 +RDATE:19870329T020000
  538.51 +RDATE:19880327T020000
  538.52 +RDATE:19890326T020000
  538.53 +RDATE:19900325T020000
  538.54 +END:DAYLIGHT
  538.55 +BEGIN:STANDARD
  538.56 +TZOFFSETFROM:+0500
  538.57 +TZOFFSETTO:+0400
  538.58 +TZNAME:YERT
  538.59 +DTSTART:19811001T000000
  538.60 +RDATE:19811001T000000
  538.61 +RDATE:19821001T000000
  538.62 +RDATE:19831001T000000
  538.63 +RDATE:19840930T030000
  538.64 +RDATE:19850929T030000
  538.65 +RDATE:19860928T030000
  538.66 +RDATE:19870927T030000
  538.67 +RDATE:19880925T030000
  538.68 +RDATE:19890924T030000
  538.69 +RDATE:19900930T030000
  538.70 +END:STANDARD
  538.71 +BEGIN:DAYLIGHT
  538.72 +TZOFFSETFROM:+0400
  538.73 +TZOFFSETTO:+0400
  538.74 +TZNAME:YERST
  538.75 +DTSTART:19910331T020000
  538.76 +RDATE:19910331T020000
  538.77 +END:DAYLIGHT
  538.78 +BEGIN:DAYLIGHT
  538.79 +TZOFFSETFROM:+0400
  538.80 +TZOFFSETTO:+0400
  538.81 +TZNAME:AMST
  538.82 +DTSTART:19910923T000000
  538.83 +RDATE:19910923T000000
  538.84 +END:DAYLIGHT
  538.85 +BEGIN:STANDARD
  538.86 +TZOFFSETFROM:+0400
  538.87 +TZOFFSETTO:+0300
  538.88 +TZNAME:AMT
  538.89 +DTSTART:19910929T030000
  538.90 +RDATE:19910929T030000
  538.91 +RDATE:19920926T230000
  538.92 +RDATE:19930926T030000
  538.93 +RDATE:19940925T030000
  538.94 +END:STANDARD
  538.95 +BEGIN:DAYLIGHT
  538.96 +TZOFFSETFROM:+0300
  538.97 +TZOFFSETTO:+0400
  538.98 +TZNAME:AMST
  538.99 +DTSTART:19920328T230000
 538.100 +RDATE:19920328T230000
 538.101 +RDATE:19930328T020000
 538.102 +RDATE:19940327T020000
 538.103 +RDATE:19950326T020000
 538.104 +END:DAYLIGHT
 538.105 +BEGIN:STANDARD
 538.106 +TZOFFSETFROM:+0400
 538.107 +TZOFFSETTO:+0400
 538.108 +TZNAME:AMT
 538.109 +DTSTART:19950924T030000
 538.110 +RDATE:19950924T030000
 538.111 +RDATE:19970101T000000
 538.112 +END:STANDARD
 538.113 +END:VTIMEZONE
 538.114 +END:VCALENDAR
   539.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   539.2 +++ b/src/zoneinfo-global/Atlantic/Azores.ics	Tue Feb 10 18:12:00 2015 +0100
   539.3 @@ -0,0 +1,224 @@
   539.4 +BEGIN:VCALENDAR
   539.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   539.6 +VERSION:2.0
   539.7 +BEGIN:VTIMEZONE
   539.8 +TZID:Atlantic/Azores
   539.9 +TZURL:http://tzurl.org/zoneinfo-global/Atlantic/Azores
  539.10 +X-LIC-LOCATION:Atlantic/Azores
  539.11 +BEGIN:DAYLIGHT
  539.12 +TZOFFSETFROM:-0100
  539.13 +TZOFFSETTO:+0000
  539.14 +TZNAME:AZOST
  539.15 +DTSTART:19940327T000000
  539.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  539.17 +END:DAYLIGHT
  539.18 +BEGIN:STANDARD
  539.19 +TZOFFSETFROM:+0000
  539.20 +TZOFFSETTO:-0100
  539.21 +TZNAME:AZOT
  539.22 +DTSTART:19961027T010000
  539.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  539.24 +END:STANDARD
  539.25 +BEGIN:STANDARD
  539.26 +TZOFFSETFROM:-014240
  539.27 +TZOFFSETTO:-015432
  539.28 +TZNAME:HMT
  539.29 +DTSTART:18840101T000000
  539.30 +RDATE:18840101T000000
  539.31 +END:STANDARD
  539.32 +BEGIN:STANDARD
  539.33 +TZOFFSETFROM:-015432
  539.34 +TZOFFSETTO:-0200
  539.35 +TZNAME:AZOT
  539.36 +DTSTART:19110524T000000
  539.37 +RDATE:19110524T000000
  539.38 +END:STANDARD
  539.39 +BEGIN:DAYLIGHT
  539.40 +TZOFFSETFROM:-0200
  539.41 +TZOFFSETTO:-0100
  539.42 +TZNAME:AZOST
  539.43 +DTSTART:19160617T230000
  539.44 +RDATE:19160617T230000
  539.45 +RDATE:19170228T230000
  539.46 +RDATE:19180301T230000
  539.47 +RDATE:19190228T230000
  539.48 +RDATE:19200229T230000
  539.49 +RDATE:19210228T230000
  539.50 +RDATE:19240416T230000
  539.51 +RDATE:19260417T230000
  539.52 +RDATE:19270409T230000
  539.53 +RDATE:19280414T230000
  539.54 +RDATE:19290420T230000
  539.55 +RDATE:19310418T230000
  539.56 +RDATE:19320402T230000
  539.57 +RDATE:19340407T230000
  539.58 +RDATE:19350330T230000
  539.59 +RDATE:19360418T230000
  539.60 +RDATE:19370403T230000
  539.61 +RDATE:19380326T230000
  539.62 +RDATE:19390415T230000
  539.63 +RDATE:19400224T230000
  539.64 +RDATE:19410405T230000
  539.65 +RDATE:19420314T230000
  539.66 +RDATE:19430313T230000
  539.67 +RDATE:19440311T230000
  539.68 +RDATE:19450310T230000
  539.69 +RDATE:19460406T230000
  539.70 +RDATE:19470406T020000
  539.71 +RDATE:19480404T020000
  539.72 +RDATE:19490403T020000
  539.73 +RDATE:19510401T020000
  539.74 +RDATE:19520406T020000
  539.75 +RDATE:19530405T020000
  539.76 +RDATE:19540404T020000
  539.77 +RDATE:19550403T020000
  539.78 +RDATE:19560401T020000
  539.79 +RDATE:19570407T020000
  539.80 +RDATE:19580406T020000
  539.81 +RDATE:19590405T020000
  539.82 +RDATE:19600403T020000
  539.83 +RDATE:19610402T020000
  539.84 +RDATE:19620401T020000
  539.85 +RDATE:19630407T020000
  539.86 +RDATE:19640405T020000
  539.87 +RDATE:19650404T020000
  539.88 +END:DAYLIGHT
  539.89 +BEGIN:STANDARD
  539.90 +TZOFFSETFROM:-0100
  539.91 +TZOFFSETTO:-0200
  539.92 +TZNAME:AZOT
  539.93 +DTSTART:19161101T010000
  539.94 +RDATE:19161101T010000
  539.95 +RDATE:19171015T000000
  539.96 +RDATE:19181015T000000
  539.97 +RDATE:19191015T000000
  539.98 +RDATE:19201015T000000
  539.99 +RDATE:19211015T000000
 539.100 +RDATE:19241015T000000
 539.101 +RDATE:19261003T000000
 539.102 +RDATE:19271002T000000
 539.103 +RDATE:19281007T000000
 539.104 +RDATE:19291006T000000
 539.105 +RDATE:19311004T000000
 539.106 +RDATE:19321002T000000
 539.107 +RDATE:19341007T000000
 539.108 +RDATE:19351006T000000
 539.109 +RDATE:19361004T000000
 539.110 +RDATE:19371003T000000
 539.111 +RDATE:19381002T000000
 539.112 +RDATE:19391119T000000
 539.113 +RDATE:19401006T000000
 539.114 +RDATE:19411006T000000
 539.115 +RDATE:19421025T000000
 539.116 +RDATE:19431031T000000
 539.117 +RDATE:19441029T000000
 539.118 +RDATE:19451028T000000
 539.119 +RDATE:19461006T000000
 539.120 +RDATE:19471005T030000
 539.121 +RDATE:19481003T030000
 539.122 +RDATE:19491002T030000
 539.123 +RDATE:19511007T030000
 539.124 +RDATE:19521005T030000
 539.125 +RDATE:19531004T030000
 539.126 +RDATE:19541003T030000
 539.127 +RDATE:19551002T030000
 539.128 +RDATE:19561007T030000
 539.129 +RDATE:19571006T030000
 539.130 +RDATE:19581005T030000
 539.131 +RDATE:19591004T030000
 539.132 +RDATE:19601002T030000
 539.133 +RDATE:19611001T030000
 539.134 +RDATE:19621007T030000
 539.135 +RDATE:19631006T030000
 539.136 +RDATE:19641004T030000
 539.137 +RDATE:19651003T030000
 539.138 +END:STANDARD
 539.139 +BEGIN:DAYLIGHT
 539.140 +TZOFFSETFROM:-0100
 539.141 +TZOFFSETTO:+0000
 539.142 +TZNAME:AZOMT
 539.143 +DTSTART:19420425T230000
 539.144 +RDATE:19420425T230000
 539.145 +RDATE:19430417T230000
 539.146 +RDATE:19440422T230000
 539.147 +RDATE:19450421T230000
 539.148 +END:DAYLIGHT
 539.149 +BEGIN:DAYLIGHT
 539.150 +TZOFFSETFROM:+0000
 539.151 +TZOFFSETTO:-0100
 539.152 +TZNAME:AZOST
 539.153 +DTSTART:19420816T000000
 539.154 +RDATE:19420816T000000
 539.155 +RDATE:19430829T000000
 539.156 +RDATE:19440827T000000
 539.157 +RDATE:19450826T000000
 539.158 +END:DAYLIGHT
 539.159 +BEGIN:STANDARD
 539.160 +TZOFFSETFROM:-0200
 539.161 +TZOFFSETTO:-0100
 539.162 +TZNAME:AZOT
 539.163 +DTSTART:19660403T020000
 539.164 +RDATE:19660403T020000
 539.165 +END:STANDARD
 539.166 +BEGIN:DAYLIGHT
 539.167 +TZOFFSETFROM:-0100
 539.168 +TZOFFSETTO:+0000
 539.169 +TZNAME:AZOST
 539.170 +DTSTART:19770327T000000
 539.171 +RDATE:19770327T000000
 539.172 +RDATE:19780402T000000
 539.173 +RDATE:19790401T000000
 539.174 +RDATE:19800330T000000
 539.175 +RDATE:19810329T010000
 539.176 +RDATE:19820328T010000
 539.177 +RDATE:19830327T020000
 539.178 +RDATE:19840325T010000
 539.179 +RDATE:19850331T010000
 539.180 +RDATE:19860330T010000
 539.181 +RDATE:19870329T010000
 539.182 +RDATE:19880327T010000
 539.183 +RDATE:19890326T010000
 539.184 +RDATE:19900325T010000
 539.185 +RDATE:19910331T010000
 539.186 +RDATE:19920329T010000
 539.187 +END:DAYLIGHT
 539.188 +BEGIN:STANDARD
 539.189 +TZOFFSETFROM:+0000
 539.190 +TZOFFSETTO:-0100
 539.191 +TZNAME:AZOT
 539.192 +DTSTART:19770925T010000
 539.193 +RDATE:19770925T010000
 539.194 +RDATE:19781001T010000
 539.195 +RDATE:19790930T020000
 539.196 +RDATE:19800928T020000
 539.197 +RDATE:19810927T020000
 539.198 +RDATE:19820926T020000
 539.199 +RDATE:19830925T020000
 539.200 +RDATE:19840930T020000
 539.201 +RDATE:19850929T020000
 539.202 +RDATE:19860928T020000
 539.203 +RDATE:19870927T020000
 539.204 +RDATE:19880925T020000
 539.205 +RDATE:19890924T020000
 539.206 +RDATE:19900930T020000
 539.207 +RDATE:19910929T020000
 539.208 +RDATE:19930926T010000
 539.209 +RDATE:19940925T010000
 539.210 +RDATE:19950924T010000
 539.211 +END:STANDARD
 539.212 +BEGIN:STANDARD
 539.213 +TZOFFSETFROM:+0000
 539.214 +TZOFFSETTO:+0000
 539.215 +TZNAME:WET
 539.216 +DTSTART:19920927T020000
 539.217 +RDATE:19920927T020000
 539.218 +END:STANDARD
 539.219 +BEGIN:DAYLIGHT
 539.220 +TZOFFSETFROM:+0000
 539.221 +TZOFFSETTO:+0000
 539.222 +TZNAME:AZOST
 539.223 +DTSTART:19930328T010000
 539.224 +RDATE:19930328T010000
 539.225 +END:DAYLIGHT
 539.226 +END:VTIMEZONE
 539.227 +END:VCALENDAR
   540.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   540.2 +++ b/src/zoneinfo-global/Atlantic/Bermuda.ics	Tue Feb 10 18:12:00 2015 +0100
   540.3 @@ -0,0 +1,115 @@
   540.4 +BEGIN:VCALENDAR
   540.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   540.6 +VERSION:2.0
   540.7 +BEGIN:VTIMEZONE
   540.8 +TZID:Atlantic/Bermuda
   540.9 +TZURL:http://tzurl.org/zoneinfo-global/Atlantic/Bermuda
  540.10 +X-LIC-LOCATION:Atlantic/Bermuda
  540.11 +BEGIN:DAYLIGHT
  540.12 +TZOFFSETFROM:-0400
  540.13 +TZOFFSETTO:-0300
  540.14 +TZNAME:ADT
  540.15 +DTSTART:20070311T020000
  540.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  540.17 +END:DAYLIGHT
  540.18 +BEGIN:STANDARD
  540.19 +TZOFFSETFROM:-0300
  540.20 +TZOFFSETTO:-0400
  540.21 +TZNAME:AST
  540.22 +DTSTART:20071104T020000
  540.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  540.24 +END:STANDARD
  540.25 +BEGIN:STANDARD
  540.26 +TZOFFSETFROM:-041904
  540.27 +TZOFFSETTO:-0400
  540.28 +TZNAME:AST
  540.29 +DTSTART:19300101T020000
  540.30 +RDATE:19300101T020000
  540.31 +END:STANDARD
  540.32 +BEGIN:DAYLIGHT
  540.33 +TZOFFSETFROM:-0400
  540.34 +TZOFFSETTO:-0300
  540.35 +TZNAME:ADT
  540.36 +DTSTART:19740428T020000
  540.37 +RDATE:19740428T020000
  540.38 +RDATE:19750427T020000
  540.39 +RDATE:19760425T020000
  540.40 +RDATE:19770424T020000
  540.41 +RDATE:19780430T020000
  540.42 +RDATE:19790429T020000
  540.43 +RDATE:19800427T020000
  540.44 +RDATE:19810426T020000
  540.45 +RDATE:19820425T020000
  540.46 +RDATE:19830424T020000
  540.47 +RDATE:19840429T020000
  540.48 +RDATE:19850428T020000
  540.49 +RDATE:19860427T020000
  540.50 +RDATE:19870405T020000
  540.51 +RDATE:19880403T020000
  540.52 +RDATE:19890402T020000
  540.53 +RDATE:19900401T020000
  540.54 +RDATE:19910407T020000
  540.55 +RDATE:19920405T020000
  540.56 +RDATE:19930404T020000
  540.57 +RDATE:19940403T020000
  540.58 +RDATE:19950402T020000
  540.59 +RDATE:19960407T020000
  540.60 +RDATE:19970406T020000
  540.61 +RDATE:19980405T020000
  540.62 +RDATE:19990404T020000
  540.63 +RDATE:20000402T020000
  540.64 +RDATE:20010401T020000
  540.65 +RDATE:20020407T020000
  540.66 +RDATE:20030406T020000
  540.67 +RDATE:20040404T020000
  540.68 +RDATE:20050403T020000
  540.69 +RDATE:20060402T020000
  540.70 +END:DAYLIGHT
  540.71 +BEGIN:STANDARD
  540.72 +TZOFFSETFROM:-0300
  540.73 +TZOFFSETTO:-0400
  540.74 +TZNAME:AST
  540.75 +DTSTART:19741027T020000
  540.76 +RDATE:19741027T020000
  540.77 +RDATE:19751026T020000
  540.78 +RDATE:19761031T020000
  540.79 +RDATE:19771030T020000
  540.80 +RDATE:19781029T020000
  540.81 +RDATE:19791028T020000
  540.82 +RDATE:19801026T020000
  540.83 +RDATE:19811025T020000
  540.84 +RDATE:19821031T020000
  540.85 +RDATE:19831030T020000
  540.86 +RDATE:19841028T020000
  540.87 +RDATE:19851027T020000
  540.88 +RDATE:19861026T020000
  540.89 +RDATE:19871025T020000
  540.90 +RDATE:19881030T020000
  540.91 +RDATE:19891029T020000
  540.92 +RDATE:19901028T020000
  540.93 +RDATE:19911027T020000
  540.94 +RDATE:19921025T020000
  540.95 +RDATE:19931031T020000
  540.96 +RDATE:19941030T020000
  540.97 +RDATE:19951029T020000
  540.98 +RDATE:19961027T020000
  540.99 +RDATE:19971026T020000
 540.100 +RDATE:19981025T020000
 540.101 +RDATE:19991031T020000
 540.102 +RDATE:20001029T020000
 540.103 +RDATE:20011028T020000
 540.104 +RDATE:20021027T020000
 540.105 +RDATE:20031026T020000
 540.106 +RDATE:20041031T020000
 540.107 +RDATE:20051030T020000
 540.108 +RDATE:20061029T020000
 540.109 +END:STANDARD
 540.110 +BEGIN:STANDARD
 540.111 +TZOFFSETFROM:-0400
 540.112 +TZOFFSETTO:-0400
 540.113 +TZNAME:AST
 540.114 +DTSTART:19760101T000000
 540.115 +RDATE:19760101T000000
 540.116 +END:STANDARD
 540.117 +END:VTIMEZONE
 540.118 +END:VCALENDAR
   541.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   541.2 +++ b/src/zoneinfo-global/Atlantic/Canary.ics	Tue Feb 10 18:12:00 2015 +0100
   541.3 @@ -0,0 +1,73 @@
   541.4 +BEGIN:VCALENDAR
   541.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   541.6 +VERSION:2.0
   541.7 +BEGIN:VTIMEZONE
   541.8 +TZID:Atlantic/Canary
   541.9 +TZURL:http://tzurl.org/zoneinfo-global/Atlantic/Canary
  541.10 +X-LIC-LOCATION:Atlantic/Canary
  541.11 +BEGIN:DAYLIGHT
  541.12 +TZOFFSETFROM:+0000
  541.13 +TZOFFSETTO:+0100
  541.14 +TZNAME:WEST
  541.15 +DTSTART:19810329T010000
  541.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  541.17 +END:DAYLIGHT
  541.18 +BEGIN:STANDARD
  541.19 +TZOFFSETFROM:+0100
  541.20 +TZOFFSETTO:+0000
  541.21 +TZNAME:WET
  541.22 +DTSTART:19961027T020000
  541.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  541.24 +END:STANDARD
  541.25 +BEGIN:STANDARD
  541.26 +TZOFFSETFROM:-010136
  541.27 +TZOFFSETTO:-0100
  541.28 +TZNAME:CANT
  541.29 +DTSTART:19220301T000000
  541.30 +RDATE:19220301T000000
  541.31 +END:STANDARD
  541.32 +BEGIN:STANDARD
  541.33 +TZOFFSETFROM:-0100
  541.34 +TZOFFSETTO:+0000
  541.35 +TZNAME:WET
  541.36 +DTSTART:19460930T010000
  541.37 +RDATE:19460930T010000
  541.38 +END:STANDARD
  541.39 +BEGIN:DAYLIGHT
  541.40 +TZOFFSETFROM:+0000
  541.41 +TZOFFSETTO:+0100
  541.42 +TZNAME:WEST
  541.43 +DTSTART:19800406T000000
  541.44 +RDATE:19800406T000000
  541.45 +END:DAYLIGHT
  541.46 +BEGIN:DAYLIGHT
  541.47 +TZOFFSETFROM:+0100
  541.48 +TZOFFSETTO:+0100
  541.49 +TZNAME:WEST
  541.50 +DTSTART:19800928T010000
  541.51 +RDATE:19800928T010000
  541.52 +END:DAYLIGHT
  541.53 +BEGIN:STANDARD
  541.54 +TZOFFSETFROM:+0100
  541.55 +TZOFFSETTO:+0000
  541.56 +TZNAME:WET
  541.57 +DTSTART:19800928T020000
  541.58 +RDATE:19800928T020000
  541.59 +RDATE:19810927T020000
  541.60 +RDATE:19820926T020000
  541.61 +RDATE:19830925T020000
  541.62 +RDATE:19840930T020000
  541.63 +RDATE:19850929T020000
  541.64 +RDATE:19860928T020000
  541.65 +RDATE:19870927T020000
  541.66 +RDATE:19880925T020000
  541.67 +RDATE:19890924T020000
  541.68 +RDATE:19900930T020000
  541.69 +RDATE:19910929T020000
  541.70 +RDATE:19920927T020000
  541.71 +RDATE:19930926T020000
  541.72 +RDATE:19940925T020000
  541.73 +RDATE:19950924T020000
  541.74 +END:STANDARD
  541.75 +END:VTIMEZONE
  541.76 +END:VCALENDAR
   542.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   542.2 +++ b/src/zoneinfo-global/Atlantic/Cape_Verde.ics	Tue Feb 10 18:12:00 2015 +0100
   542.3 @@ -0,0 +1,37 @@
   542.4 +BEGIN:VCALENDAR
   542.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   542.6 +VERSION:2.0
   542.7 +BEGIN:VTIMEZONE
   542.8 +TZID:Atlantic/Cape_Verde
   542.9 +TZURL:http://tzurl.org/zoneinfo-global/Atlantic/Cape_Verde
  542.10 +X-LIC-LOCATION:Atlantic/Cape_Verde
  542.11 +BEGIN:STANDARD
  542.12 +TZOFFSETFROM:-013404
  542.13 +TZOFFSETTO:-0200
  542.14 +TZNAME:CVT
  542.15 +DTSTART:19070101T000000
  542.16 +RDATE:19070101T000000
  542.17 +END:STANDARD
  542.18 +BEGIN:DAYLIGHT
  542.19 +TZOFFSETFROM:-0200
  542.20 +TZOFFSETTO:-0100
  542.21 +TZNAME:CVST
  542.22 +DTSTART:19420901T000000
  542.23 +RDATE:19420901T000000
  542.24 +END:DAYLIGHT
  542.25 +BEGIN:STANDARD
  542.26 +TZOFFSETFROM:-0100
  542.27 +TZOFFSETTO:-0200
  542.28 +TZNAME:CVT
  542.29 +DTSTART:19451015T000000
  542.30 +RDATE:19451015T000000
  542.31 +END:STANDARD
  542.32 +BEGIN:STANDARD
  542.33 +TZOFFSETFROM:-0200
  542.34 +TZOFFSETTO:-0100
  542.35 +TZNAME:CVT
  542.36 +DTSTART:19751125T020000
  542.37 +RDATE:19751125T020000
  542.38 +END:STANDARD
  542.39 +END:VTIMEZONE
  542.40 +END:VCALENDAR
   543.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   543.2 +++ b/src/zoneinfo-global/Atlantic/Faroe.ics	Tue Feb 10 18:12:00 2015 +0100
   543.3 @@ -0,0 +1,58 @@
   543.4 +BEGIN:VCALENDAR
   543.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   543.6 +VERSION:2.0
   543.7 +BEGIN:VTIMEZONE
   543.8 +TZID:Atlantic/Faroe
   543.9 +TZURL:http://tzurl.org/zoneinfo-global/Atlantic/Faroe
  543.10 +X-LIC-LOCATION:Atlantic/Faroe
  543.11 +BEGIN:DAYLIGHT
  543.12 +TZOFFSETFROM:+0000
  543.13 +TZOFFSETTO:+0100
  543.14 +TZNAME:WEST
  543.15 +DTSTART:19810329T010000
  543.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  543.17 +END:DAYLIGHT
  543.18 +BEGIN:STANDARD
  543.19 +TZOFFSETFROM:+0100
  543.20 +TZOFFSETTO:+0000
  543.21 +TZNAME:WET
  543.22 +DTSTART:19961027T020000
  543.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  543.24 +END:STANDARD
  543.25 +BEGIN:STANDARD
  543.26 +TZOFFSETFROM:-002704
  543.27 +TZOFFSETTO:+0000
  543.28 +TZNAME:WET
  543.29 +DTSTART:19080111T000000
  543.30 +RDATE:19080111T000000
  543.31 +END:STANDARD
  543.32 +BEGIN:STANDARD
  543.33 +TZOFFSETFROM:+0000
  543.34 +TZOFFSETTO:+0000
  543.35 +TZNAME:WET
  543.36 +DTSTART:19810101T000000
  543.37 +RDATE:19810101T000000
  543.38 +END:STANDARD
  543.39 +BEGIN:STANDARD
  543.40 +TZOFFSETFROM:+0100
  543.41 +TZOFFSETTO:+0000
  543.42 +TZNAME:WET
  543.43 +DTSTART:19810927T020000
  543.44 +RDATE:19810927T020000
  543.45 +RDATE:19820926T020000
  543.46 +RDATE:19830925T020000
  543.47 +RDATE:19840930T020000
  543.48 +RDATE:19850929T020000
  543.49 +RDATE:19860928T020000
  543.50 +RDATE:19870927T020000
  543.51 +RDATE:19880925T020000
  543.52 +RDATE:19890924T020000
  543.53 +RDATE:19900930T020000
  543.54 +RDATE:19910929T020000
  543.55 +RDATE:19920927T020000
  543.56 +RDATE:19930926T020000
  543.57 +RDATE:19940925T020000
  543.58 +RDATE:19950924T020000
  543.59 +END:STANDARD
  543.60 +END:VTIMEZONE
  543.61 +END:VCALENDAR
   544.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   544.2 +++ b/src/zoneinfo-global/Atlantic/Madeira.ics	Tue Feb 10 18:12:00 2015 +0100
   544.3 @@ -0,0 +1,202 @@
   544.4 +BEGIN:VCALENDAR
   544.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   544.6 +VERSION:2.0
   544.7 +BEGIN:VTIMEZONE
   544.8 +TZID:Atlantic/Madeira
   544.9 +TZURL:http://tzurl.org/zoneinfo-global/Atlantic/Madeira
  544.10 +X-LIC-LOCATION:Atlantic/Madeira
  544.11 +BEGIN:DAYLIGHT
  544.12 +TZOFFSETFROM:+0000
  544.13 +TZOFFSETTO:+0100
  544.14 +TZNAME:WEST
  544.15 +DTSTART:19840325T010000
  544.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  544.17 +END:DAYLIGHT
  544.18 +BEGIN:STANDARD
  544.19 +TZOFFSETFROM:+0100
  544.20 +TZOFFSETTO:+0000
  544.21 +TZNAME:WET
  544.22 +DTSTART:19961027T020000
  544.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  544.24 +END:STANDARD
  544.25 +BEGIN:STANDARD
  544.26 +TZOFFSETFROM:-010736
  544.27 +TZOFFSETTO:-010736
  544.28 +TZNAME:FMT
  544.29 +DTSTART:18840101T000000
  544.30 +RDATE:18840101T000000
  544.31 +END:STANDARD
  544.32 +BEGIN:STANDARD
  544.33 +TZOFFSETFROM:-010736
  544.34 +TZOFFSETTO:-0100
  544.35 +TZNAME:MADT
  544.36 +DTSTART:19110524T000000
  544.37 +RDATE:19110524T000000
  544.38 +END:STANDARD
  544.39 +BEGIN:DAYLIGHT
  544.40 +TZOFFSETFROM:-0100
  544.41 +TZOFFSETTO:+0000
  544.42 +TZNAME:MADST
  544.43 +DTSTART:19160617T230000
  544.44 +RDATE:19160617T230000
  544.45 +RDATE:19170228T230000
  544.46 +RDATE:19180301T230000
  544.47 +RDATE:19190228T230000
  544.48 +RDATE:19200229T230000
  544.49 +RDATE:19210228T230000
  544.50 +RDATE:19240416T230000
  544.51 +RDATE:19260417T230000
  544.52 +RDATE:19270409T230000
  544.53 +RDATE:19280414T230000
  544.54 +RDATE:19290420T230000
  544.55 +RDATE:19310418T230000
  544.56 +RDATE:19320402T230000
  544.57 +RDATE:19340407T230000
  544.58 +RDATE:19350330T230000
  544.59 +RDATE:19360418T230000
  544.60 +RDATE:19370403T230000
  544.61 +RDATE:19380326T230000
  544.62 +RDATE:19390415T230000
  544.63 +RDATE:19400224T230000
  544.64 +RDATE:19410405T230000
  544.65 +RDATE:19420314T230000
  544.66 +RDATE:19430313T230000
  544.67 +RDATE:19440311T230000
  544.68 +RDATE:19450310T230000
  544.69 +RDATE:19460406T230000
  544.70 +RDATE:19470406T020000
  544.71 +RDATE:19480404T020000
  544.72 +RDATE:19490403T020000
  544.73 +RDATE:19510401T020000
  544.74 +RDATE:19520406T020000
  544.75 +RDATE:19530405T020000
  544.76 +RDATE:19540404T020000
  544.77 +RDATE:19550403T020000
  544.78 +RDATE:19560401T020000
  544.79 +RDATE:19570407T020000
  544.80 +RDATE:19580406T020000
  544.81 +RDATE:19590405T020000
  544.82 +RDATE:19600403T020000
  544.83 +RDATE:19610402T020000
  544.84 +RDATE:19620401T020000
  544.85 +RDATE:19630407T020000
  544.86 +RDATE:19640405T020000
  544.87 +RDATE:19650404T020000
  544.88 +END:DAYLIGHT
  544.89 +BEGIN:STANDARD
  544.90 +TZOFFSETFROM:+0000
  544.91 +TZOFFSETTO:-0100
  544.92 +TZNAME:MADT
  544.93 +DTSTART:19161101T010000
  544.94 +RDATE:19161101T010000
  544.95 +RDATE:19171015T000000
  544.96 +RDATE:19181015T000000
  544.97 +RDATE:19191015T000000
  544.98 +RDATE:19201015T000000
  544.99 +RDATE:19211015T000000
 544.100 +RDATE:19241015T000000
 544.101 +RDATE:19261003T000000
 544.102 +RDATE:19271002T000000
 544.103 +RDATE:19281007T000000
 544.104 +RDATE:19291006T000000
 544.105 +RDATE:19311004T000000
 544.106 +RDATE:19321002T000000
 544.107 +RDATE:19341007T000000
 544.108 +RDATE:19351006T000000
 544.109 +RDATE:19361004T000000
 544.110 +RDATE:19371003T000000
 544.111 +RDATE:19381002T000000
 544.112 +RDATE:19391119T000000
 544.113 +RDATE:19401006T000000
 544.114 +RDATE:19411006T000000
 544.115 +RDATE:19421025T000000
 544.116 +RDATE:19431031T000000
 544.117 +RDATE:19441029T000000
 544.118 +RDATE:19451028T000000
 544.119 +RDATE:19461006T000000
 544.120 +RDATE:19471005T030000
 544.121 +RDATE:19481003T030000
 544.122 +RDATE:19491002T030000
 544.123 +RDATE:19511007T030000
 544.124 +RDATE:19521005T030000
 544.125 +RDATE:19531004T030000
 544.126 +RDATE:19541003T030000
 544.127 +RDATE:19551002T030000
 544.128 +RDATE:19561007T030000
 544.129 +RDATE:19571006T030000
 544.130 +RDATE:19581005T030000
 544.131 +RDATE:19591004T030000
 544.132 +RDATE:19601002T030000
 544.133 +RDATE:19611001T030000
 544.134 +RDATE:19621007T030000
 544.135 +RDATE:19631006T030000
 544.136 +RDATE:19641004T030000
 544.137 +RDATE:19651003T030000
 544.138 +END:STANDARD
 544.139 +BEGIN:DAYLIGHT
 544.140 +TZOFFSETFROM:+0000
 544.141 +TZOFFSETTO:+0100
 544.142 +TZNAME:MADMT
 544.143 +DTSTART:19420425T230000
 544.144 +RDATE:19420425T230000
 544.145 +RDATE:19430417T230000
 544.146 +RDATE:19440422T230000
 544.147 +RDATE:19450421T230000
 544.148 +END:DAYLIGHT
 544.149 +BEGIN:DAYLIGHT
 544.150 +TZOFFSETFROM:+0100
 544.151 +TZOFFSETTO:+0000
 544.152 +TZNAME:MADST
 544.153 +DTSTART:19420816T000000
 544.154 +RDATE:19420816T000000
 544.155 +RDATE:19430829T000000
 544.156 +RDATE:19440827T000000
 544.157 +RDATE:19450826T000000
 544.158 +END:DAYLIGHT
 544.159 +BEGIN:STANDARD
 544.160 +TZOFFSETFROM:-0100
 544.161 +TZOFFSETTO:+0000
 544.162 +TZNAME:WET
 544.163 +DTSTART:19660403T020000
 544.164 +RDATE:19660403T020000
 544.165 +END:STANDARD
 544.166 +BEGIN:DAYLIGHT
 544.167 +TZOFFSETFROM:+0000
 544.168 +TZOFFSETTO:+0100
 544.169 +TZNAME:WEST
 544.170 +DTSTART:19770327T000000
 544.171 +RDATE:19770327T000000
 544.172 +RDATE:19780402T000000
 544.173 +RDATE:19790401T000000
 544.174 +RDATE:19800330T000000
 544.175 +RDATE:19810329T010000
 544.176 +RDATE:19820328T010000
 544.177 +RDATE:19830327T020000
 544.178 +END:DAYLIGHT
 544.179 +BEGIN:STANDARD
 544.180 +TZOFFSETFROM:+0100
 544.181 +TZOFFSETTO:+0000
 544.182 +TZNAME:WET
 544.183 +DTSTART:19770925T010000
 544.184 +RDATE:19770925T010000
 544.185 +RDATE:19781001T010000
 544.186 +RDATE:19790930T020000
 544.187 +RDATE:19800928T020000
 544.188 +RDATE:19810927T020000
 544.189 +RDATE:19820926T020000
 544.190 +RDATE:19830925T020000
 544.191 +RDATE:19840930T020000
 544.192 +RDATE:19850929T020000
 544.193 +RDATE:19860928T020000
 544.194 +RDATE:19870927T020000
 544.195 +RDATE:19880925T020000
 544.196 +RDATE:19890924T020000
 544.197 +RDATE:19900930T020000
 544.198 +RDATE:19910929T020000
 544.199 +RDATE:19920927T020000
 544.200 +RDATE:19930926T020000
 544.201 +RDATE:19940925T020000
 544.202 +RDATE:19950924T020000
 544.203 +END:STANDARD
 544.204 +END:VTIMEZONE
 544.205 +END:VCALENDAR
   545.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   545.2 +++ b/src/zoneinfo-global/Atlantic/Reykjavik.ics	Tue Feb 10 18:12:00 2015 +0100
   545.3 @@ -0,0 +1,104 @@
   545.4 +BEGIN:VCALENDAR
   545.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   545.6 +VERSION:2.0
   545.7 +BEGIN:VTIMEZONE
   545.8 +TZID:Atlantic/Reykjavik
   545.9 +TZURL:http://tzurl.org/zoneinfo-global/Atlantic/Reykjavik
  545.10 +X-LIC-LOCATION:Atlantic/Reykjavik
  545.11 +BEGIN:STANDARD
  545.12 +TZOFFSETFROM:-012724
  545.13 +TZOFFSETTO:-012748
  545.14 +TZNAME:RMT
  545.15 +DTSTART:18370101T000000
  545.16 +RDATE:18370101T000000
  545.17 +END:STANDARD
  545.18 +BEGIN:STANDARD
  545.19 +TZOFFSETFROM:-012748
  545.20 +TZOFFSETTO:-0100
  545.21 +TZNAME:IST
  545.22 +DTSTART:19080101T000000
  545.23 +RDATE:19080101T000000
  545.24 +END:STANDARD
  545.25 +BEGIN:DAYLIGHT
  545.26 +TZOFFSETFROM:-0100
  545.27 +TZOFFSETTO:+0000
  545.28 +TZNAME:ISST
  545.29 +DTSTART:19170219T230000
  545.30 +RDATE:19170219T230000
  545.31 +RDATE:19180219T230000
  545.32 +RDATE:19390429T230000
  545.33 +RDATE:19400225T020000
  545.34 +RDATE:19410302T010000
  545.35 +RDATE:19420308T010000
  545.36 +RDATE:19430307T010000
  545.37 +RDATE:19440305T010000
  545.38 +RDATE:19450304T010000
  545.39 +RDATE:19460303T010000
  545.40 +RDATE:19470406T010000
  545.41 +RDATE:19480404T010000
  545.42 +RDATE:19490403T010000
  545.43 +RDATE:19500402T010000
  545.44 +RDATE:19510401T010000
  545.45 +RDATE:19520406T010000
  545.46 +RDATE:19530405T010000
  545.47 +RDATE:19540404T010000
  545.48 +RDATE:19550403T010000
  545.49 +RDATE:19560401T010000
  545.50 +RDATE:19570407T010000
  545.51 +RDATE:19580406T010000
  545.52 +RDATE:19590405T010000
  545.53 +RDATE:19600403T010000
  545.54 +RDATE:19610402T010000
  545.55 +RDATE:19620401T010000
  545.56 +RDATE:19630407T010000
  545.57 +RDATE:19640405T010000
  545.58 +RDATE:19650404T010000
  545.59 +RDATE:19660403T010000
  545.60 +RDATE:19670402T010000
  545.61 +END:DAYLIGHT
  545.62 +BEGIN:STANDARD
  545.63 +TZOFFSETFROM:+0000
  545.64 +TZOFFSETTO:-0100
  545.65 +TZNAME:IST
  545.66 +DTSTART:19171021T010000
  545.67 +RDATE:19171021T010000
  545.68 +RDATE:19181116T010000
  545.69 +RDATE:19391129T020000
  545.70 +RDATE:19401103T020000
  545.71 +RDATE:19411102T020000
  545.72 +RDATE:19421025T020000
  545.73 +RDATE:19431024T020000
  545.74 +RDATE:19441022T020000
  545.75 +RDATE:19451028T020000
  545.76 +RDATE:19461027T020000
  545.77 +RDATE:19471026T020000
  545.78 +RDATE:19481024T020000
  545.79 +RDATE:19491030T020000
  545.80 +RDATE:19501022T020000
  545.81 +RDATE:19511028T020000
  545.82 +RDATE:19521026T020000
  545.83 +RDATE:19531025T020000
  545.84 +RDATE:19541024T020000
  545.85 +RDATE:19551023T020000
  545.86 +RDATE:19561028T020000
  545.87 +RDATE:19571027T020000
  545.88 +RDATE:19581026T020000
  545.89 +RDATE:19591025T020000
  545.90 +RDATE:19601023T020000
  545.91 +RDATE:19611022T020000
  545.92 +RDATE:19621028T020000
  545.93 +RDATE:19631027T020000
  545.94 +RDATE:19641025T020000
  545.95 +RDATE:19651024T020000
  545.96 +RDATE:19661023T020000
  545.97 +RDATE:19671029T020000
  545.98 +END:STANDARD
  545.99 +BEGIN:STANDARD
 545.100 +TZOFFSETFROM:-0100
 545.101 +TZOFFSETTO:+0000
 545.102 +TZNAME:GMT
 545.103 +DTSTART:19680407T010000
 545.104 +RDATE:19680407T010000
 545.105 +END:STANDARD
 545.106 +END:VTIMEZONE
 545.107 +END:VCALENDAR
   546.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   546.2 +++ b/src/zoneinfo-global/Atlantic/South_Georgia.ics	Tue Feb 10 18:12:00 2015 +0100
   546.3 @@ -0,0 +1,16 @@
   546.4 +BEGIN:VCALENDAR
   546.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   546.6 +VERSION:2.0
   546.7 +BEGIN:VTIMEZONE
   546.8 +TZID:Atlantic/South_Georgia
   546.9 +TZURL:http://tzurl.org/zoneinfo-global/Atlantic/South_Georgia
  546.10 +X-LIC-LOCATION:Atlantic/South_Georgia
  546.11 +BEGIN:STANDARD
  546.12 +TZOFFSETFROM:-022608
  546.13 +TZOFFSETTO:-0200
  546.14 +TZNAME:GST
  546.15 +DTSTART:18900101T000000
  546.16 +RDATE:18900101T000000
  546.17 +END:STANDARD
  546.18 +END:VTIMEZONE
  546.19 +END:VCALENDAR
   547.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   547.2 +++ b/src/zoneinfo-global/Atlantic/St_Helena.ics	Tue Feb 10 18:12:00 2015 +0100
   547.3 @@ -0,0 +1,23 @@
   547.4 +BEGIN:VCALENDAR
   547.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   547.6 +VERSION:2.0
   547.7 +BEGIN:VTIMEZONE
   547.8 +TZID:Atlantic/St_Helena
   547.9 +TZURL:http://tzurl.org/zoneinfo-global/Atlantic/St_Helena
  547.10 +X-LIC-LOCATION:Atlantic/St_Helena
  547.11 +BEGIN:STANDARD
  547.12 +TZOFFSETFROM:-002248
  547.13 +TZOFFSETTO:-002248
  547.14 +TZNAME:JMT
  547.15 +DTSTART:18900101T000000
  547.16 +RDATE:18900101T000000
  547.17 +END:STANDARD
  547.18 +BEGIN:STANDARD
  547.19 +TZOFFSETFROM:-002248
  547.20 +TZOFFSETTO:+0000
  547.21 +TZNAME:GMT
  547.22 +DTSTART:19510101T000000
  547.23 +RDATE:19510101T000000
  547.24 +END:STANDARD
  547.25 +END:VTIMEZONE
  547.26 +END:VCALENDAR
   548.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   548.2 +++ b/src/zoneinfo-global/Atlantic/Stanley.ics	Tue Feb 10 18:12:00 2015 +0100
   548.3 @@ -0,0 +1,142 @@
   548.4 +BEGIN:VCALENDAR
   548.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   548.6 +VERSION:2.0
   548.7 +BEGIN:VTIMEZONE
   548.8 +TZID:Atlantic/Stanley
   548.9 +TZURL:http://tzurl.org/zoneinfo-global/Atlantic/Stanley
  548.10 +X-LIC-LOCATION:Atlantic/Stanley
  548.11 +BEGIN:STANDARD
  548.12 +TZOFFSETFROM:-0300
  548.13 +TZOFFSETTO:-0400
  548.14 +TZNAME:FKT
  548.15 +DTSTART:20120415T020000
  548.16 +RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=3SU
  548.17 +END:STANDARD
  548.18 +BEGIN:DAYLIGHT
  548.19 +TZOFFSETFROM:-0400
  548.20 +TZOFFSETTO:-0300
  548.21 +TZNAME:FKST
  548.22 +DTSTART:20120902T020000
  548.23 +RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=1SU
  548.24 +END:DAYLIGHT
  548.25 +BEGIN:STANDARD
  548.26 +TZOFFSETFROM:-035124
  548.27 +TZOFFSETTO:-035124
  548.28 +TZNAME:SMT
  548.29 +DTSTART:18900101T000000
  548.30 +RDATE:18900101T000000
  548.31 +END:STANDARD
  548.32 +BEGIN:STANDARD
  548.33 +TZOFFSETFROM:-035124
  548.34 +TZOFFSETTO:-0400
  548.35 +TZNAME:FKT
  548.36 +DTSTART:19120312T000000
  548.37 +RDATE:19120312T000000
  548.38 +END:STANDARD
  548.39 +BEGIN:DAYLIGHT
  548.40 +TZOFFSETFROM:-0400
  548.41 +TZOFFSETTO:-0300
  548.42 +TZNAME:FKST
  548.43 +DTSTART:19370926T000000
  548.44 +RDATE:19370926T000000
  548.45 +RDATE:19380925T000000
  548.46 +RDATE:19391001T000000
  548.47 +RDATE:19400929T000000
  548.48 +RDATE:19410928T000000
  548.49 +RDATE:19420927T000000
  548.50 +RDATE:19860914T000000
  548.51 +RDATE:19870913T000000
  548.52 +RDATE:19880911T000000
  548.53 +RDATE:19890910T000000
  548.54 +RDATE:19900909T000000
  548.55 +RDATE:19910915T000000
  548.56 +RDATE:19920913T000000
  548.57 +RDATE:19930912T000000
  548.58 +RDATE:19940911T000000
  548.59 +RDATE:19950910T000000
  548.60 +RDATE:19960915T000000
  548.61 +RDATE:19970914T000000
  548.62 +RDATE:19980913T000000
  548.63 +RDATE:19990912T000000
  548.64 +RDATE:20000910T000000
  548.65 +RDATE:20010902T020000
  548.66 +RDATE:20020901T020000
  548.67 +RDATE:20030907T020000
  548.68 +RDATE:20040905T020000
  548.69 +RDATE:20050904T020000
  548.70 +RDATE:20060903T020000
  548.71 +RDATE:20070902T020000
  548.72 +RDATE:20080907T020000
  548.73 +RDATE:20090906T020000
  548.74 +RDATE:20100905T020000
  548.75 +END:DAYLIGHT
  548.76 +BEGIN:STANDARD
  548.77 +TZOFFSETFROM:-0300
  548.78 +TZOFFSETTO:-0400
  548.79 +TZNAME:FKT
  548.80 +DTSTART:19380320T000000
  548.81 +RDATE:19380320T000000
  548.82 +RDATE:19390319T000000
  548.83 +RDATE:19400324T000000
  548.84 +RDATE:19410323T000000
  548.85 +RDATE:19420322T000000
  548.86 +RDATE:19430101T000000
  548.87 +RDATE:19860420T000000
  548.88 +RDATE:19870419T000000
  548.89 +RDATE:19880417T000000
  548.90 +RDATE:19890416T000000
  548.91 +RDATE:19900422T000000
  548.92 +RDATE:19910421T000000
  548.93 +RDATE:19920419T000000
  548.94 +RDATE:19930418T000000
  548.95 +RDATE:19940417T000000
  548.96 +RDATE:19950416T000000
  548.97 +RDATE:19960421T000000
  548.98 +RDATE:19970420T000000
  548.99 +RDATE:19980419T000000
 548.100 +RDATE:19990418T000000
 548.101 +RDATE:20000416T000000
 548.102 +RDATE:20010415T020000
 548.103 +RDATE:20020421T020000
 548.104 +RDATE:20030420T020000
 548.105 +RDATE:20040418T020000
 548.106 +RDATE:20050417T020000
 548.107 +RDATE:20060416T020000
 548.108 +RDATE:20070415T020000
 548.109 +RDATE:20080420T020000
 548.110 +RDATE:20090419T020000
 548.111 +RDATE:20100418T020000
 548.112 +END:STANDARD
 548.113 +BEGIN:STANDARD
 548.114 +TZOFFSETFROM:-0400
 548.115 +TZOFFSETTO:-0300
 548.116 +TZNAME:FKT
 548.117 +DTSTART:19830501T000000
 548.118 +RDATE:19830501T000000
 548.119 +END:STANDARD
 548.120 +BEGIN:DAYLIGHT
 548.121 +TZOFFSETFROM:-0300
 548.122 +TZOFFSETTO:-0200
 548.123 +TZNAME:FKST
 548.124 +DTSTART:19830925T000000
 548.125 +RDATE:19830925T000000
 548.126 +RDATE:19840916T000000
 548.127 +END:DAYLIGHT
 548.128 +BEGIN:STANDARD
 548.129 +TZOFFSETFROM:-0200
 548.130 +TZOFFSETTO:-0300
 548.131 +TZNAME:FKT
 548.132 +DTSTART:19840429T000000
 548.133 +RDATE:19840429T000000
 548.134 +RDATE:19850428T000000
 548.135 +END:STANDARD
 548.136 +BEGIN:DAYLIGHT
 548.137 +TZOFFSETFROM:-0300
 548.138 +TZOFFSETTO:-0300
 548.139 +TZNAME:FKST
 548.140 +DTSTART:19850915T000000
 548.141 +RDATE:19850915T000000
 548.142 +RDATE:20110904T020000
 548.143 +END:DAYLIGHT
 548.144 +END:VTIMEZONE
 548.145 +END:VCALENDAR
   549.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   549.2 +++ b/src/zoneinfo-global/Australia/Adelaide.ics	Tue Feb 10 18:12:00 2015 +0100
   549.3 @@ -0,0 +1,137 @@
   549.4 +BEGIN:VCALENDAR
   549.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   549.6 +VERSION:2.0
   549.7 +BEGIN:VTIMEZONE
   549.8 +TZID:Australia/Adelaide
   549.9 +TZURL:http://tzurl.org/zoneinfo-global/Australia/Adelaide
  549.10 +X-LIC-LOCATION:Australia/Adelaide
  549.11 +BEGIN:STANDARD
  549.12 +TZOFFSETFROM:+1030
  549.13 +TZOFFSETTO:+0930
  549.14 +TZNAME:CST
  549.15 +DTSTART:20080406T030000
  549.16 +RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU
  549.17 +END:STANDARD
  549.18 +BEGIN:DAYLIGHT
  549.19 +TZOFFSETFROM:+0930
  549.20 +TZOFFSETTO:+1030
  549.21 +TZNAME:CST
  549.22 +DTSTART:20081005T020000
  549.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU
  549.24 +END:DAYLIGHT
  549.25 +BEGIN:STANDARD
  549.26 +TZOFFSETFROM:+091420
  549.27 +TZOFFSETTO:+0900
  549.28 +TZNAME:CST
  549.29 +DTSTART:18950201T000000
  549.30 +RDATE:18950201T000000
  549.31 +END:STANDARD
  549.32 +BEGIN:STANDARD
  549.33 +TZOFFSETFROM:+0900
  549.34 +TZOFFSETTO:+0930
  549.35 +TZNAME:CST
  549.36 +DTSTART:18990501T000000
  549.37 +RDATE:18990501T000000
  549.38 +END:STANDARD
  549.39 +BEGIN:DAYLIGHT
  549.40 +TZOFFSETFROM:+0930
  549.41 +TZOFFSETTO:+1030
  549.42 +TZNAME:CST
  549.43 +DTSTART:19170101T000100
  549.44 +RDATE:19170101T000100
  549.45 +RDATE:19420101T020000
  549.46 +RDATE:19420927T020000
  549.47 +RDATE:19431003T020000
  549.48 +RDATE:19711031T020000
  549.49 +RDATE:19721029T020000
  549.50 +RDATE:19731028T020000
  549.51 +RDATE:19741027T020000
  549.52 +RDATE:19751026T020000
  549.53 +RDATE:19761031T020000
  549.54 +RDATE:19771030T020000
  549.55 +RDATE:19781029T020000
  549.56 +RDATE:19791028T020000
  549.57 +RDATE:19801026T020000
  549.58 +RDATE:19811025T020000
  549.59 +RDATE:19821031T020000
  549.60 +RDATE:19831030T020000
  549.61 +RDATE:19841028T020000
  549.62 +RDATE:19851027T020000
  549.63 +RDATE:19861019T020000
  549.64 +RDATE:19871025T020000
  549.65 +RDATE:19881030T020000
  549.66 +RDATE:19891029T020000
  549.67 +RDATE:19901028T020000
  549.68 +RDATE:19911027T020000
  549.69 +RDATE:19921025T020000
  549.70 +RDATE:19931031T020000
  549.71 +RDATE:19941030T020000
  549.72 +RDATE:19951029T020000
  549.73 +RDATE:19961027T020000
  549.74 +RDATE:19971026T020000
  549.75 +RDATE:19981025T020000
  549.76 +RDATE:19991031T020000
  549.77 +RDATE:20001029T020000
  549.78 +RDATE:20011028T020000
  549.79 +RDATE:20021027T020000
  549.80 +RDATE:20031026T020000
  549.81 +RDATE:20041031T020000
  549.82 +RDATE:20051030T020000
  549.83 +RDATE:20061029T020000
  549.84 +RDATE:20071028T020000
  549.85 +END:DAYLIGHT
  549.86 +BEGIN:STANDARD
  549.87 +TZOFFSETFROM:+1030
  549.88 +TZOFFSETTO:+0930
  549.89 +TZNAME:CST
  549.90 +DTSTART:19170325T020000
  549.91 +RDATE:19170325T020000
  549.92 +RDATE:19420329T020000
  549.93 +RDATE:19430328T020000
  549.94 +RDATE:19440326T020000
  549.95 +RDATE:19720227T030000
  549.96 +RDATE:19730304T030000
  549.97 +RDATE:19740303T030000
  549.98 +RDATE:19750302T030000
  549.99 +RDATE:19760307T030000
 549.100 +RDATE:19770306T030000
 549.101 +RDATE:19780305T030000
 549.102 +RDATE:19790304T030000
 549.103 +RDATE:19800302T030000
 549.104 +RDATE:19810301T030000
 549.105 +RDATE:19820307T030000
 549.106 +RDATE:19830306T030000
 549.107 +RDATE:19840304T030000
 549.108 +RDATE:19850303T030000
 549.109 +RDATE:19860316T030000
 549.110 +RDATE:19870315T030000
 549.111 +RDATE:19880320T030000
 549.112 +RDATE:19890319T030000
 549.113 +RDATE:19900318T030000
 549.114 +RDATE:19910303T030000
 549.115 +RDATE:19920322T030000
 549.116 +RDATE:19930307T030000
 549.117 +RDATE:19940320T030000
 549.118 +RDATE:19950326T030000
 549.119 +RDATE:19960331T030000
 549.120 +RDATE:19970330T030000
 549.121 +RDATE:19980329T030000
 549.122 +RDATE:19990328T030000
 549.123 +RDATE:20000326T030000
 549.124 +RDATE:20010325T030000
 549.125 +RDATE:20020331T030000
 549.126 +RDATE:20030330T030000
 549.127 +RDATE:20040328T030000
 549.128 +RDATE:20050327T030000
 549.129 +RDATE:20060402T030000
 549.130 +RDATE:20070325T030000
 549.131 +END:STANDARD
 549.132 +BEGIN:STANDARD
 549.133 +TZOFFSETFROM:+0930
 549.134 +TZOFFSETTO:+0930
 549.135 +TZNAME:CST
 549.136 +DTSTART:19710101T000000
 549.137 +RDATE:19710101T000000
 549.138 +END:STANDARD
 549.139 +END:VTIMEZONE
 549.140 +END:VCALENDAR
   550.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   550.2 +++ b/src/zoneinfo-global/Australia/Brisbane.ics	Tue Feb 10 18:12:00 2015 +0100
   550.3 @@ -0,0 +1,51 @@
   550.4 +BEGIN:VCALENDAR
   550.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   550.6 +VERSION:2.0
   550.7 +BEGIN:VTIMEZONE
   550.8 +TZID:Australia/Brisbane
   550.9 +TZURL:http://tzurl.org/zoneinfo-global/Australia/Brisbane
  550.10 +X-LIC-LOCATION:Australia/Brisbane
  550.11 +BEGIN:STANDARD
  550.12 +TZOFFSETFROM:+101208
  550.13 +TZOFFSETTO:+1000
  550.14 +TZNAME:EST
  550.15 +DTSTART:18950101T000000
  550.16 +RDATE:18950101T000000
  550.17 +END:STANDARD
  550.18 +BEGIN:DAYLIGHT
  550.19 +TZOFFSETFROM:+1000
  550.20 +TZOFFSETTO:+1100
  550.21 +TZNAME:EST
  550.22 +DTSTART:19170101T000100
  550.23 +RDATE:19170101T000100
  550.24 +RDATE:19420101T020000
  550.25 +RDATE:19420927T020000
  550.26 +RDATE:19431003T020000
  550.27 +RDATE:19711031T020000
  550.28 +RDATE:19891029T020000
  550.29 +RDATE:19901028T020000
  550.30 +RDATE:19911027T020000
  550.31 +END:DAYLIGHT
  550.32 +BEGIN:STANDARD
  550.33 +TZOFFSETFROM:+1100
  550.34 +TZOFFSETTO:+1000
  550.35 +TZNAME:EST
  550.36 +DTSTART:19170325T020000
  550.37 +RDATE:19170325T020000
  550.38 +RDATE:19420329T020000
  550.39 +RDATE:19430328T020000
  550.40 +RDATE:19440326T020000
  550.41 +RDATE:19720227T030000
  550.42 +RDATE:19900304T030000
  550.43 +RDATE:19910303T030000
  550.44 +RDATE:19920301T030000
  550.45 +END:STANDARD
  550.46 +BEGIN:STANDARD
  550.47 +TZOFFSETFROM:+1000
  550.48 +TZOFFSETTO:+1000
  550.49 +TZNAME:EST
  550.50 +DTSTART:19710101T000000
  550.51 +RDATE:19710101T000000
  550.52 +END:STANDARD
  550.53 +END:VTIMEZONE
  550.54 +END:VCALENDAR
   551.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   551.2 +++ b/src/zoneinfo-global/Australia/Broken_Hill.ics	Tue Feb 10 18:12:00 2015 +0100
   551.3 @@ -0,0 +1,151 @@
   551.4 +BEGIN:VCALENDAR
   551.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   551.6 +VERSION:2.0
   551.7 +BEGIN:VTIMEZONE
   551.8 +TZID:Australia/Broken_Hill
   551.9 +TZURL:http://tzurl.org/zoneinfo-global/Australia/Broken_Hill
  551.10 +X-LIC-LOCATION:Australia/Broken_Hill
  551.11 +BEGIN:STANDARD
  551.12 +TZOFFSETFROM:+1030
  551.13 +TZOFFSETTO:+0930
  551.14 +TZNAME:CST
  551.15 +DTSTART:20080406T030000
  551.16 +RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU
  551.17 +END:STANDARD
  551.18 +BEGIN:DAYLIGHT
  551.19 +TZOFFSETFROM:+0930
  551.20 +TZOFFSETTO:+1030
  551.21 +TZNAME:CST
  551.22 +DTSTART:20081005T020000
  551.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU
  551.24 +END:DAYLIGHT
  551.25 +BEGIN:STANDARD
  551.26 +TZOFFSETFROM:+092548
  551.27 +TZOFFSETTO:+1000
  551.28 +TZNAME:EST
  551.29 +DTSTART:18950201T000000
  551.30 +RDATE:18950201T000000
  551.31 +END:STANDARD
  551.32 +BEGIN:STANDARD
  551.33 +TZOFFSETFROM:+1000
  551.34 +TZOFFSETTO:+0900
  551.35 +TZNAME:CST
  551.36 +DTSTART:18960823T000000
  551.37 +RDATE:18960823T000000
  551.38 +END:STANDARD
  551.39 +BEGIN:STANDARD
  551.40 +TZOFFSETFROM:+0900
  551.41 +TZOFFSETTO:+0930
  551.42 +TZNAME:CST
  551.43 +DTSTART:18990501T000000
  551.44 +RDATE:18990501T000000
  551.45 +END:STANDARD
  551.46 +BEGIN:DAYLIGHT
  551.47 +TZOFFSETFROM:+0930
  551.48 +TZOFFSETTO:+1030
  551.49 +TZNAME:CST
  551.50 +DTSTART:19170101T000100
  551.51 +RDATE:19170101T000100
  551.52 +RDATE:19420101T020000
  551.53 +RDATE:19420927T020000
  551.54 +RDATE:19431003T020000
  551.55 +RDATE:19711031T020000
  551.56 +RDATE:19721029T020000
  551.57 +RDATE:19731028T020000
  551.58 +RDATE:19741027T020000
  551.59 +RDATE:19751026T020000
  551.60 +RDATE:19761031T020000
  551.61 +RDATE:19771030T020000
  551.62 +RDATE:19781029T020000
  551.63 +RDATE:19791028T020000
  551.64 +RDATE:19801026T020000
  551.65 +RDATE:19811025T020000
  551.66 +RDATE:19821031T020000
  551.67 +RDATE:19831030T020000
  551.68 +RDATE:19841028T020000
  551.69 +RDATE:19851027T020000
  551.70 +RDATE:19861019T020000
  551.71 +RDATE:19871025T020000
  551.72 +RDATE:19881030T020000
  551.73 +RDATE:19891029T020000
  551.74 +RDATE:19901028T020000
  551.75 +RDATE:19911027T020000
  551.76 +RDATE:19921025T020000
  551.77 +RDATE:19931031T020000
  551.78 +RDATE:19941030T020000
  551.79 +RDATE:19951029T020000
  551.80 +RDATE:19961027T020000
  551.81 +RDATE:19971026T020000
  551.82 +RDATE:19981025T020000
  551.83 +RDATE:19991031T020000
  551.84 +RDATE:20001029T020000
  551.85 +RDATE:20011028T020000
  551.86 +RDATE:20021027T020000
  551.87 +RDATE:20031026T020000
  551.88 +RDATE:20041031T020000
  551.89 +RDATE:20051030T020000
  551.90 +RDATE:20061029T020000
  551.91 +RDATE:20071028T020000
  551.92 +END:DAYLIGHT
  551.93 +BEGIN:STANDARD
  551.94 +TZOFFSETFROM:+1030
  551.95 +TZOFFSETTO:+0930
  551.96 +TZNAME:CST
  551.97 +DTSTART:19170325T020000
  551.98 +RDATE:19170325T020000
  551.99 +RDATE:19420329T020000
 551.100 +RDATE:19430328T020000
 551.101 +RDATE:19440326T020000
 551.102 +RDATE:19720227T030000
 551.103 +RDATE:19730304T030000
 551.104 +RDATE:19740303T030000
 551.105 +RDATE:19750302T030000
 551.106 +RDATE:19760307T030000
 551.107 +RDATE:19770306T030000
 551.108 +RDATE:19780305T030000
 551.109 +RDATE:19790304T030000
 551.110 +RDATE:19800302T030000
 551.111 +RDATE:19810301T030000
 551.112 +RDATE:19820404T030000
 551.113 +RDATE:19830306T030000
 551.114 +RDATE:19840304T030000
 551.115 +RDATE:19850303T030000
 551.116 +RDATE:19860316T030000
 551.117 +RDATE:19870315T030000
 551.118 +RDATE:19880320T030000
 551.119 +RDATE:19890319T030000
 551.120 +RDATE:19900304T030000
 551.121 +RDATE:19910303T030000
 551.122 +RDATE:19920301T030000
 551.123 +RDATE:19930307T030000
 551.124 +RDATE:19940306T030000
 551.125 +RDATE:19950305T030000
 551.126 +RDATE:19960331T030000
 551.127 +RDATE:19970330T030000
 551.128 +RDATE:19980329T030000
 551.129 +RDATE:19990328T030000
 551.130 +RDATE:20000326T030000
 551.131 +RDATE:20010325T030000
 551.132 +RDATE:20020331T030000
 551.133 +RDATE:20030330T030000
 551.134 +RDATE:20040328T030000
 551.135 +RDATE:20050327T030000
 551.136 +RDATE:20060402T030000
 551.137 +RDATE:20070325T030000
 551.138 +END:STANDARD
 551.139 +BEGIN:STANDARD
 551.140 +TZOFFSETFROM:+0930
 551.141 +TZOFFSETTO:+0930
 551.142 +TZNAME:CST
 551.143 +DTSTART:19710101T000000
 551.144 +RDATE:19710101T000000
 551.145 +END:STANDARD
 551.146 +BEGIN:DAYLIGHT
 551.147 +TZOFFSETFROM:+1030
 551.148 +TZOFFSETTO:+1030
 551.149 +TZNAME:CST
 551.150 +DTSTART:20000101T000000
 551.151 +RDATE:20000101T000000
 551.152 +END:DAYLIGHT
 551.153 +END:VTIMEZONE
 551.154 +END:VCALENDAR
   552.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   552.2 +++ b/src/zoneinfo-global/Australia/Currie.ics	Tue Feb 10 18:12:00 2015 +0100
   552.3 @@ -0,0 +1,130 @@
   552.4 +BEGIN:VCALENDAR
   552.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   552.6 +VERSION:2.0
   552.7 +BEGIN:VTIMEZONE
   552.8 +TZID:Australia/Currie
   552.9 +TZURL:http://tzurl.org/zoneinfo-global/Australia/Currie
  552.10 +X-LIC-LOCATION:Australia/Currie
  552.11 +BEGIN:DAYLIGHT
  552.12 +TZOFFSETFROM:+1000
  552.13 +TZOFFSETTO:+1100
  552.14 +TZNAME:EST
  552.15 +DTSTART:20011007T020000
  552.16 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU
  552.17 +END:DAYLIGHT
  552.18 +BEGIN:STANDARD
  552.19 +TZOFFSETFROM:+1100
  552.20 +TZOFFSETTO:+1000
  552.21 +TZNAME:EST
  552.22 +DTSTART:20080406T030000
  552.23 +RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU
  552.24 +END:STANDARD
  552.25 +BEGIN:STANDARD
  552.26 +TZOFFSETFROM:+093528
  552.27 +TZOFFSETTO:+1000
  552.28 +TZNAME:EST
  552.29 +DTSTART:18950901T000000
  552.30 +RDATE:18950901T000000
  552.31 +END:STANDARD
  552.32 +BEGIN:DAYLIGHT
  552.33 +TZOFFSETFROM:+1000
  552.34 +TZOFFSETTO:+1100
  552.35 +TZNAME:EST
  552.36 +DTSTART:19161001T020000
  552.37 +RDATE:19161001T020000
  552.38 +RDATE:19420101T020000
  552.39 +RDATE:19420927T020000
  552.40 +RDATE:19431003T020000
  552.41 +RDATE:19711031T020000
  552.42 +RDATE:19721029T020000
  552.43 +RDATE:19731028T020000
  552.44 +RDATE:19741027T020000
  552.45 +RDATE:19751026T020000
  552.46 +RDATE:19761031T020000
  552.47 +RDATE:19771030T020000
  552.48 +RDATE:19781029T020000
  552.49 +RDATE:19791028T020000
  552.50 +RDATE:19801026T020000
  552.51 +RDATE:19811025T020000
  552.52 +RDATE:19821031T020000
  552.53 +RDATE:19831030T020000
  552.54 +RDATE:19841028T020000
  552.55 +RDATE:19851027T020000
  552.56 +RDATE:19861019T020000
  552.57 +RDATE:19871025T020000
  552.58 +RDATE:19881030T020000
  552.59 +RDATE:19891029T020000
  552.60 +RDATE:19901028T020000
  552.61 +RDATE:19911006T020000
  552.62 +RDATE:19921004T020000
  552.63 +RDATE:19931003T020000
  552.64 +RDATE:19941002T020000
  552.65 +RDATE:19951001T020000
  552.66 +RDATE:19961006T020000
  552.67 +RDATE:19971005T020000
  552.68 +RDATE:19981004T020000
  552.69 +RDATE:19991003T020000
  552.70 +RDATE:20000827T020000
  552.71 +END:DAYLIGHT
  552.72 +BEGIN:DAYLIGHT
  552.73 +TZOFFSETFROM:+1100
  552.74 +TZOFFSETTO:+1100
  552.75 +TZNAME:EST
  552.76 +DTSTART:19170201T000000
  552.77 +RDATE:19170201T000000
  552.78 +END:DAYLIGHT
  552.79 +BEGIN:STANDARD
  552.80 +TZOFFSETFROM:+1100
  552.81 +TZOFFSETTO:+1000
  552.82 +TZNAME:EST
  552.83 +DTSTART:19170325T020000
  552.84 +RDATE:19170325T020000
  552.85 +RDATE:19420329T020000
  552.86 +RDATE:19430328T020000
  552.87 +RDATE:19440326T020000
  552.88 +RDATE:19720227T030000
  552.89 +RDATE:19730304T030000
  552.90 +RDATE:19740303T030000
  552.91 +RDATE:19750302T030000
  552.92 +RDATE:19760307T030000
  552.93 +RDATE:19770306T030000
  552.94 +RDATE:19780305T030000
  552.95 +RDATE:19790304T030000
  552.96 +RDATE:19800302T030000
  552.97 +RDATE:19810301T030000
  552.98 +RDATE:19820328T030000
  552.99 +RDATE:19830327T030000
 552.100 +RDATE:19840304T030000
 552.101 +RDATE:19850303T030000
 552.102 +RDATE:19860302T030000
 552.103 +RDATE:19870315T030000
 552.104 +RDATE:19880320T030000
 552.105 +RDATE:19890319T030000
 552.106 +RDATE:19900318T030000
 552.107 +RDATE:19910331T030000
 552.108 +RDATE:19920329T030000
 552.109 +RDATE:19930328T030000
 552.110 +RDATE:19940327T030000
 552.111 +RDATE:19950326T030000
 552.112 +RDATE:19960331T030000
 552.113 +RDATE:19970330T030000
 552.114 +RDATE:19980329T030000
 552.115 +RDATE:19990328T030000
 552.116 +RDATE:20000326T030000
 552.117 +RDATE:20010325T030000
 552.118 +RDATE:20020331T030000
 552.119 +RDATE:20030330T030000
 552.120 +RDATE:20040328T030000
 552.121 +RDATE:20050327T030000
 552.122 +RDATE:20060402T030000
 552.123 +RDATE:20070325T030000
 552.124 +END:STANDARD
 552.125 +BEGIN:STANDARD
 552.126 +TZOFFSETFROM:+1000
 552.127 +TZOFFSETTO:+1000
 552.128 +TZNAME:EST
 552.129 +DTSTART:19710701T000000
 552.130 +RDATE:19710701T000000
 552.131 +END:STANDARD
 552.132 +END:VTIMEZONE
 552.133 +END:VCALENDAR
   553.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   553.2 +++ b/src/zoneinfo-global/Australia/Darwin.ics	Tue Feb 10 18:12:00 2015 +0100
   553.3 @@ -0,0 +1,43 @@
   553.4 +BEGIN:VCALENDAR
   553.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   553.6 +VERSION:2.0
   553.7 +BEGIN:VTIMEZONE
   553.8 +TZID:Australia/Darwin
   553.9 +TZURL:http://tzurl.org/zoneinfo-global/Australia/Darwin
  553.10 +X-LIC-LOCATION:Australia/Darwin
  553.11 +BEGIN:STANDARD
  553.12 +TZOFFSETFROM:+084320
  553.13 +TZOFFSETTO:+0900
  553.14 +TZNAME:CST
  553.15 +DTSTART:18950201T000000
  553.16 +RDATE:18950201T000000
  553.17 +END:STANDARD
  553.18 +BEGIN:STANDARD
  553.19 +TZOFFSETFROM:+0900
  553.20 +TZOFFSETTO:+0930
  553.21 +TZNAME:CST
  553.22 +DTSTART:18990501T000000
  553.23 +RDATE:18990501T000000
  553.24 +END:STANDARD
  553.25 +BEGIN:DAYLIGHT
  553.26 +TZOFFSETFROM:+0930
  553.27 +TZOFFSETTO:+1030
  553.28 +TZNAME:CST
  553.29 +DTSTART:19170101T000100
  553.30 +RDATE:19170101T000100
  553.31 +RDATE:19420101T020000
  553.32 +RDATE:19420927T020000
  553.33 +RDATE:19431003T020000
  553.34 +END:DAYLIGHT
  553.35 +BEGIN:STANDARD
  553.36 +TZOFFSETFROM:+1030
  553.37 +TZOFFSETTO:+0930
  553.38 +TZNAME:CST
  553.39 +DTSTART:19170325T020000
  553.40 +RDATE:19170325T020000
  553.41 +RDATE:19420329T020000
  553.42 +RDATE:19430328T020000
  553.43 +RDATE:19440326T020000
  553.44 +END:STANDARD
  553.45 +END:VTIMEZONE
  553.46 +END:VCALENDAR
   554.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   554.2 +++ b/src/zoneinfo-global/Australia/Eucla.ics	Tue Feb 10 18:12:00 2015 +0100
   554.3 @@ -0,0 +1,53 @@
   554.4 +BEGIN:VCALENDAR
   554.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   554.6 +VERSION:2.0
   554.7 +BEGIN:VTIMEZONE
   554.8 +TZID:Australia/Eucla
   554.9 +TZURL:http://tzurl.org/zoneinfo-global/Australia/Eucla
  554.10 +X-LIC-LOCATION:Australia/Eucla
  554.11 +BEGIN:STANDARD
  554.12 +TZOFFSETFROM:+083528
  554.13 +TZOFFSETTO:+0845
  554.14 +TZNAME:CWST
  554.15 +DTSTART:18951201T000000
  554.16 +RDATE:18951201T000000
  554.17 +END:STANDARD
  554.18 +BEGIN:DAYLIGHT
  554.19 +TZOFFSETFROM:+0845
  554.20 +TZOFFSETTO:+0945
  554.21 +TZNAME:CWST
  554.22 +DTSTART:19170101T000100
  554.23 +RDATE:19170101T000100
  554.24 +RDATE:19420101T020000
  554.25 +RDATE:19420927T020000
  554.26 +RDATE:19741027T020000
  554.27 +RDATE:19831030T020000
  554.28 +RDATE:19911117T020000
  554.29 +RDATE:20061203T020000
  554.30 +RDATE:20071028T020000
  554.31 +RDATE:20081026T020000
  554.32 +END:DAYLIGHT
  554.33 +BEGIN:STANDARD
  554.34 +TZOFFSETFROM:+0945
  554.35 +TZOFFSETTO:+0845
  554.36 +TZNAME:CWST
  554.37 +DTSTART:19170325T020000
  554.38 +RDATE:19170325T020000
  554.39 +RDATE:19420329T020000
  554.40 +RDATE:19430328T020000
  554.41 +RDATE:19750302T030000
  554.42 +RDATE:19840304T030000
  554.43 +RDATE:19920301T030000
  554.44 +RDATE:20070325T030000
  554.45 +RDATE:20080330T030000
  554.46 +RDATE:20090329T030000
  554.47 +END:STANDARD
  554.48 +BEGIN:STANDARD
  554.49 +TZOFFSETFROM:+0845
  554.50 +TZOFFSETTO:+0845
  554.51 +TZNAME:CWST
  554.52 +DTSTART:19430701T000000
  554.53 +RDATE:19430701T000000
  554.54 +END:STANDARD
  554.55 +END:VTIMEZONE
  554.56 +END:VCALENDAR
   555.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   555.2 +++ b/src/zoneinfo-global/Australia/Hobart.ics	Tue Feb 10 18:12:00 2015 +0100
   555.3 @@ -0,0 +1,138 @@
   555.4 +BEGIN:VCALENDAR
   555.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   555.6 +VERSION:2.0
   555.7 +BEGIN:VTIMEZONE
   555.8 +TZID:Australia/Hobart
   555.9 +TZURL:http://tzurl.org/zoneinfo-global/Australia/Hobart
  555.10 +X-LIC-LOCATION:Australia/Hobart
  555.11 +BEGIN:DAYLIGHT
  555.12 +TZOFFSETFROM:+1000
  555.13 +TZOFFSETTO:+1100
  555.14 +TZNAME:EST
  555.15 +DTSTART:20011007T020000
  555.16 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU
  555.17 +END:DAYLIGHT
  555.18 +BEGIN:STANDARD
  555.19 +TZOFFSETFROM:+1100
  555.20 +TZOFFSETTO:+1000
  555.21 +TZNAME:EST
  555.22 +DTSTART:20080406T030000
  555.23 +RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU
  555.24 +END:STANDARD
  555.25 +BEGIN:STANDARD
  555.26 +TZOFFSETFROM:+094916
  555.27 +TZOFFSETTO:+1000
  555.28 +TZNAME:EST
  555.29 +DTSTART:18950901T000000
  555.30 +RDATE:18950901T000000
  555.31 +END:STANDARD
  555.32 +BEGIN:DAYLIGHT
  555.33 +TZOFFSETFROM:+1000
  555.34 +TZOFFSETTO:+1100
  555.35 +TZNAME:EST
  555.36 +DTSTART:19161001T020000
  555.37 +RDATE:19161001T020000
  555.38 +RDATE:19420101T020000
  555.39 +RDATE:19420927T020000
  555.40 +RDATE:19431003T020000
  555.41 +RDATE:19671001T020000
  555.42 +RDATE:19681027T020000
  555.43 +RDATE:19691026T020000
  555.44 +RDATE:19701025T020000
  555.45 +RDATE:19711031T020000
  555.46 +RDATE:19721029T020000
  555.47 +RDATE:19731028T020000
  555.48 +RDATE:19741027T020000
  555.49 +RDATE:19751026T020000
  555.50 +RDATE:19761031T020000
  555.51 +RDATE:19771030T020000
  555.52 +RDATE:19781029T020000
  555.53 +RDATE:19791028T020000
  555.54 +RDATE:19801026T020000
  555.55 +RDATE:19811025T020000
  555.56 +RDATE:19821031T020000
  555.57 +RDATE:19831030T020000
  555.58 +RDATE:19841028T020000
  555.59 +RDATE:19851027T020000
  555.60 +RDATE:19861019T020000
  555.61 +RDATE:19871025T020000
  555.62 +RDATE:19881030T020000
  555.63 +RDATE:19891029T020000
  555.64 +RDATE:19901028T020000
  555.65 +RDATE:19911006T020000
  555.66 +RDATE:19921004T020000
  555.67 +RDATE:19931003T020000
  555.68 +RDATE:19941002T020000
  555.69 +RDATE:19951001T020000
  555.70 +RDATE:19961006T020000
  555.71 +RDATE:19971005T020000
  555.72 +RDATE:19981004T020000
  555.73 +RDATE:19991003T020000
  555.74 +RDATE:20000827T020000
  555.75 +END:DAYLIGHT
  555.76 +BEGIN:DAYLIGHT
  555.77 +TZOFFSETFROM:+1100
  555.78 +TZOFFSETTO:+1100
  555.79 +TZNAME:EST
  555.80 +DTSTART:19170201T000000
  555.81 +RDATE:19170201T000000
  555.82 +END:DAYLIGHT
  555.83 +BEGIN:STANDARD
  555.84 +TZOFFSETFROM:+1100
  555.85 +TZOFFSETTO:+1000
  555.86 +TZNAME:EST
  555.87 +DTSTART:19170325T020000
  555.88 +RDATE:19170325T020000
  555.89 +RDATE:19420329T020000
  555.90 +RDATE:19430328T020000
  555.91 +RDATE:19440326T020000
  555.92 +RDATE:19680331T030000
  555.93 +RDATE:19690309T030000
  555.94 +RDATE:19700308T030000
  555.95 +RDATE:19710314T030000
  555.96 +RDATE:19720227T030000
  555.97 +RDATE:19730304T030000
  555.98 +RDATE:19740303T030000
  555.99 +RDATE:19750302T030000
 555.100 +RDATE:19760307T030000
 555.101 +RDATE:19770306T030000
 555.102 +RDATE:19780305T030000
 555.103 +RDATE:19790304T030000
 555.104 +RDATE:19800302T030000
 555.105 +RDATE:19810301T030000
 555.106 +RDATE:19820328T030000
 555.107 +RDATE:19830327T030000
 555.108 +RDATE:19840304T030000
 555.109 +RDATE:19850303T030000
 555.110 +RDATE:19860302T030000
 555.111 +RDATE:19870315T030000
 555.112 +RDATE:19880320T030000
 555.113 +RDATE:19890319T030000
 555.114 +RDATE:19900318T030000
 555.115 +RDATE:19910331T030000
 555.116 +RDATE:19920329T030000
 555.117 +RDATE:19930328T030000
 555.118 +RDATE:19940327T030000
 555.119 +RDATE:19950326T030000
 555.120 +RDATE:19960331T030000
 555.121 +RDATE:19970330T030000
 555.122 +RDATE:19980329T030000
 555.123 +RDATE:19990328T030000
 555.124 +RDATE:20000326T030000
 555.125 +RDATE:20010325T030000
 555.126 +RDATE:20020331T030000
 555.127 +RDATE:20030330T030000
 555.128 +RDATE:20040328T030000
 555.129 +RDATE:20050327T030000
 555.130 +RDATE:20060402T030000
 555.131 +RDATE:20070325T030000
 555.132 +END:STANDARD
 555.133 +BEGIN:STANDARD
 555.134 +TZOFFSETFROM:+1000
 555.135 +TZOFFSETTO:+1000
 555.136 +TZNAME:EST
 555.137 +DTSTART:19670101T000000
 555.138 +RDATE:19670101T000000
 555.139 +END:STANDARD
 555.140 +END:VTIMEZONE
 555.141 +END:VCALENDAR
   556.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   556.2 +++ b/src/zoneinfo-global/Australia/Lindeman.ics	Tue Feb 10 18:12:00 2015 +0100
   556.3 @@ -0,0 +1,56 @@
   556.4 +BEGIN:VCALENDAR
   556.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   556.6 +VERSION:2.0
   556.7 +BEGIN:VTIMEZONE
   556.8 +TZID:Australia/Lindeman
   556.9 +TZURL:http://tzurl.org/zoneinfo-global/Australia/Lindeman
  556.10 +X-LIC-LOCATION:Australia/Lindeman
  556.11 +BEGIN:STANDARD
  556.12 +TZOFFSETFROM:+095556
  556.13 +TZOFFSETTO:+1000
  556.14 +TZNAME:EST
  556.15 +DTSTART:18950101T000000
  556.16 +RDATE:18950101T000000
  556.17 +END:STANDARD
  556.18 +BEGIN:DAYLIGHT
  556.19 +TZOFFSETFROM:+1000
  556.20 +TZOFFSETTO:+1100
  556.21 +TZNAME:EST
  556.22 +DTSTART:19170101T000100
  556.23 +RDATE:19170101T000100
  556.24 +RDATE:19420101T020000
  556.25 +RDATE:19420927T020000
  556.26 +RDATE:19431003T020000
  556.27 +RDATE:19711031T020000
  556.28 +RDATE:19891029T020000
  556.29 +RDATE:19901028T020000
  556.30 +RDATE:19911027T020000
  556.31 +RDATE:19921025T020000
  556.32 +RDATE:19931031T020000
  556.33 +END:DAYLIGHT
  556.34 +BEGIN:STANDARD
  556.35 +TZOFFSETFROM:+1100
  556.36 +TZOFFSETTO:+1000
  556.37 +TZNAME:EST
  556.38 +DTSTART:19170325T020000
  556.39 +RDATE:19170325T020000
  556.40 +RDATE:19420329T020000
  556.41 +RDATE:19430328T020000
  556.42 +RDATE:19440326T020000
  556.43 +RDATE:19720227T030000
  556.44 +RDATE:19900304T030000
  556.45 +RDATE:19910303T030000
  556.46 +RDATE:19920301T030000
  556.47 +RDATE:19930307T030000
  556.48 +RDATE:19940306T030000
  556.49 +END:STANDARD
  556.50 +BEGIN:STANDARD
  556.51 +TZOFFSETFROM:+1000
  556.52 +TZOFFSETTO:+1000
  556.53 +TZNAME:EST
  556.54 +DTSTART:19710101T000000
  556.55 +RDATE:19710101T000000
  556.56 +RDATE:19920701T000000
  556.57 +END:STANDARD
  556.58 +END:VTIMEZONE
  556.59 +END:VCALENDAR
   557.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   557.2 +++ b/src/zoneinfo-global/Australia/Lord_Howe.ics	Tue Feb 10 18:12:00 2015 +0100
   557.3 @@ -0,0 +1,114 @@
   557.4 +BEGIN:VCALENDAR
   557.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   557.6 +VERSION:2.0
   557.7 +BEGIN:VTIMEZONE
   557.8 +TZID:Australia/Lord_Howe
   557.9 +TZURL:http://tzurl.org/zoneinfo-global/Australia/Lord_Howe
  557.10 +X-LIC-LOCATION:Australia/Lord_Howe
  557.11 +BEGIN:STANDARD
  557.12 +TZOFFSETFROM:+1100
  557.13 +TZOFFSETTO:+1030
  557.14 +TZNAME:LHST
  557.15 +DTSTART:20080406T020000
  557.16 +RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU
  557.17 +END:STANDARD
  557.18 +BEGIN:DAYLIGHT
  557.19 +TZOFFSETFROM:+1030
  557.20 +TZOFFSETTO:+1100
  557.21 +TZNAME:LHST
  557.22 +DTSTART:20081005T020000
  557.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU
  557.24 +END:DAYLIGHT
  557.25 +BEGIN:STANDARD
  557.26 +TZOFFSETFROM:+103620
  557.27 +TZOFFSETTO:+1000
  557.28 +TZNAME:EST
  557.29 +DTSTART:18950201T000000
  557.30 +RDATE:18950201T000000
  557.31 +END:STANDARD
  557.32 +BEGIN:STANDARD
  557.33 +TZOFFSETFROM:+1000
  557.34 +TZOFFSETTO:+1030
  557.35 +TZNAME:LHST
  557.36 +DTSTART:19810301T000000
  557.37 +RDATE:19810301T000000
  557.38 +END:STANDARD
  557.39 +BEGIN:DAYLIGHT
  557.40 +TZOFFSETFROM:+1030
  557.41 +TZOFFSETTO:+1130
  557.42 +TZNAME:LHST
  557.43 +DTSTART:19811025T020000
  557.44 +RDATE:19811025T020000
  557.45 +RDATE:19821031T020000
  557.46 +RDATE:19831030T020000
  557.47 +RDATE:19841028T020000
  557.48 +END:DAYLIGHT
  557.49 +BEGIN:STANDARD
  557.50 +TZOFFSETFROM:+1130
  557.51 +TZOFFSETTO:+1030
  557.52 +TZNAME:LHST
  557.53 +DTSTART:19820307T020000
  557.54 +RDATE:19820307T020000
  557.55 +RDATE:19830306T020000
  557.56 +RDATE:19840304T020000
  557.57 +RDATE:19850303T020000
  557.58 +END:STANDARD
  557.59 +BEGIN:DAYLIGHT
  557.60 +TZOFFSETFROM:+1030
  557.61 +TZOFFSETTO:+1100
  557.62 +TZNAME:LHST
  557.63 +DTSTART:19851027T020000
  557.64 +RDATE:19851027T020000
  557.65 +RDATE:19861019T020000
  557.66 +RDATE:19871025T020000
  557.67 +RDATE:19881030T020000
  557.68 +RDATE:19891029T020000
  557.69 +RDATE:19901028T020000
  557.70 +RDATE:19911027T020000
  557.71 +RDATE:19921025T020000
  557.72 +RDATE:19931031T020000
  557.73 +RDATE:19941030T020000
  557.74 +RDATE:19951029T020000
  557.75 +RDATE:19961027T020000
  557.76 +RDATE:19971026T020000
  557.77 +RDATE:19981025T020000
  557.78 +RDATE:19991031T020000
  557.79 +RDATE:20000827T020000
  557.80 +RDATE:20011028T020000
  557.81 +RDATE:20021027T020000
  557.82 +RDATE:20031026T020000
  557.83 +RDATE:20041031T020000
  557.84 +RDATE:20051030T020000
  557.85 +RDATE:20061029T020000
  557.86 +RDATE:20071028T020000
  557.87 +END:DAYLIGHT
  557.88 +BEGIN:STANDARD
  557.89 +TZOFFSETFROM:+1100
  557.90 +TZOFFSETTO:+1030
  557.91 +TZNAME:LHST
  557.92 +DTSTART:19860316T020000
  557.93 +RDATE:19860316T020000
  557.94 +RDATE:19870315T020000
  557.95 +RDATE:19880320T020000
  557.96 +RDATE:19890319T020000
  557.97 +RDATE:19900304T020000
  557.98 +RDATE:19910303T020000
  557.99 +RDATE:19920301T020000
 557.100 +RDATE:19930307T020000
 557.101 +RDATE:19940306T020000
 557.102 +RDATE:19950305T020000
 557.103 +RDATE:19960331T020000
 557.104 +RDATE:19970330T020000
 557.105 +RDATE:19980329T020000
 557.106 +RDATE:19990328T020000
 557.107 +RDATE:20000326T020000
 557.108 +RDATE:20010325T020000
 557.109 +RDATE:20020331T020000
 557.110 +RDATE:20030330T020000
 557.111 +RDATE:20040328T020000
 557.112 +RDATE:20050327T020000
 557.113 +RDATE:20060402T020000
 557.114 +RDATE:20070325T020000
 557.115 +END:STANDARD
 557.116 +END:VTIMEZONE
 557.117 +END:VCALENDAR
   558.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   558.2 +++ b/src/zoneinfo-global/Australia/Melbourne.ics	Tue Feb 10 18:12:00 2015 +0100
   558.3 @@ -0,0 +1,130 @@
   558.4 +BEGIN:VCALENDAR
   558.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   558.6 +VERSION:2.0
   558.7 +BEGIN:VTIMEZONE
   558.8 +TZID:Australia/Melbourne
   558.9 +TZURL:http://tzurl.org/zoneinfo-global/Australia/Melbourne
  558.10 +X-LIC-LOCATION:Australia/Melbourne
  558.11 +BEGIN:STANDARD
  558.12 +TZOFFSETFROM:+1100
  558.13 +TZOFFSETTO:+1000
  558.14 +TZNAME:EST
  558.15 +DTSTART:20080406T030000
  558.16 +RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU
  558.17 +END:STANDARD
  558.18 +BEGIN:DAYLIGHT
  558.19 +TZOFFSETFROM:+1000
  558.20 +TZOFFSETTO:+1100
  558.21 +TZNAME:EST
  558.22 +DTSTART:20081005T020000
  558.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU
  558.24 +END:DAYLIGHT
  558.25 +BEGIN:STANDARD
  558.26 +TZOFFSETFROM:+093952
  558.27 +TZOFFSETTO:+1000
  558.28 +TZNAME:EST
  558.29 +DTSTART:18950201T000000
  558.30 +RDATE:18950201T000000
  558.31 +END:STANDARD
  558.32 +BEGIN:DAYLIGHT
  558.33 +TZOFFSETFROM:+1000
  558.34 +TZOFFSETTO:+1100
  558.35 +TZNAME:EST
  558.36 +DTSTART:19170101T000100
  558.37 +RDATE:19170101T000100
  558.38 +RDATE:19420101T020000
  558.39 +RDATE:19420927T020000
  558.40 +RDATE:19431003T020000
  558.41 +RDATE:19711031T020000
  558.42 +RDATE:19721029T020000
  558.43 +RDATE:19731028T020000
  558.44 +RDATE:19741027T020000
  558.45 +RDATE:19751026T020000
  558.46 +RDATE:19761031T020000
  558.47 +RDATE:19771030T020000
  558.48 +RDATE:19781029T020000
  558.49 +RDATE:19791028T020000
  558.50 +RDATE:19801026T020000
  558.51 +RDATE:19811025T020000
  558.52 +RDATE:19821031T020000
  558.53 +RDATE:19831030T020000
  558.54 +RDATE:19841028T020000
  558.55 +RDATE:19851027T020000
  558.56 +RDATE:19861019T020000
  558.57 +RDATE:19871018T020000
  558.58 +RDATE:19881030T020000
  558.59 +RDATE:19891029T020000
  558.60 +RDATE:19901028T020000
  558.61 +RDATE:19911027T020000
  558.62 +RDATE:19921025T020000
  558.63 +RDATE:19931031T020000
  558.64 +RDATE:19941030T020000
  558.65 +RDATE:19951029T020000
  558.66 +RDATE:19961027T020000
  558.67 +RDATE:19971026T020000
  558.68 +RDATE:19981025T020000
  558.69 +RDATE:19991031T020000
  558.70 +RDATE:20000827T020000
  558.71 +RDATE:20011028T020000
  558.72 +RDATE:20021027T020000
  558.73 +RDATE:20031026T020000
  558.74 +RDATE:20041031T020000
  558.75 +RDATE:20051030T020000
  558.76 +RDATE:20061029T020000
  558.77 +RDATE:20071028T020000
  558.78 +END:DAYLIGHT
  558.79 +BEGIN:STANDARD
  558.80 +TZOFFSETFROM:+1100
  558.81 +TZOFFSETTO:+1000
  558.82 +TZNAME:EST
  558.83 +DTSTART:19170325T020000
  558.84 +RDATE:19170325T020000
  558.85 +RDATE:19420329T020000
  558.86 +RDATE:19430328T020000
  558.87 +RDATE:19440326T020000
  558.88 +RDATE:19720227T030000
  558.89 +RDATE:19730304T030000
  558.90 +RDATE:19740303T030000
  558.91 +RDATE:19750302T030000
  558.92 +RDATE:19760307T030000
  558.93 +RDATE:19770306T030000
  558.94 +RDATE:19780305T030000
  558.95 +RDATE:19790304T030000
  558.96 +RDATE:19800302T030000
  558.97 +RDATE:19810301T030000
  558.98 +RDATE:19820307T030000
  558.99 +RDATE:19830306T030000
 558.100 +RDATE:19840304T030000
 558.101 +RDATE:19850303T030000
 558.102 +RDATE:19860316T030000
 558.103 +RDATE:19870315T030000
 558.104 +RDATE:19880320T030000
 558.105 +RDATE:19890319T030000
 558.106 +RDATE:19900318T030000
 558.107 +RDATE:19910303T030000
 558.108 +RDATE:19920301T030000
 558.109 +RDATE:19930307T030000
 558.110 +RDATE:19940306T030000
 558.111 +RDATE:19950326T030000
 558.112 +RDATE:19960331T030000
 558.113 +RDATE:19970330T030000
 558.114 +RDATE:19980329T030000
 558.115 +RDATE:19990328T030000
 558.116 +RDATE:20000326T030000
 558.117 +RDATE:20010325T030000
 558.118 +RDATE:20020331T030000
 558.119 +RDATE:20030330T030000
 558.120 +RDATE:20040328T030000
 558.121 +RDATE:20050327T030000
 558.122 +RDATE:20060402T030000
 558.123 +RDATE:20070325T030000
 558.124 +END:STANDARD
 558.125 +BEGIN:STANDARD
 558.126 +TZOFFSETFROM:+1000
 558.127 +TZOFFSETTO:+1000
 558.128 +TZNAME:EST
 558.129 +DTSTART:19710101T000000
 558.130 +RDATE:19710101T000000
 558.131 +END:STANDARD
 558.132 +END:VTIMEZONE
 558.133 +END:VCALENDAR
   559.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   559.2 +++ b/src/zoneinfo-global/Australia/Perth.ics	Tue Feb 10 18:12:00 2015 +0100
   559.3 @@ -0,0 +1,53 @@
   559.4 +BEGIN:VCALENDAR
   559.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   559.6 +VERSION:2.0
   559.7 +BEGIN:VTIMEZONE
   559.8 +TZID:Australia/Perth
   559.9 +TZURL:http://tzurl.org/zoneinfo-global/Australia/Perth
  559.10 +X-LIC-LOCATION:Australia/Perth
  559.11 +BEGIN:STANDARD
  559.12 +TZOFFSETFROM:+074324
  559.13 +TZOFFSETTO:+0800
  559.14 +TZNAME:WST
  559.15 +DTSTART:18951201T000000
  559.16 +RDATE:18951201T000000
  559.17 +END:STANDARD
  559.18 +BEGIN:DAYLIGHT
  559.19 +TZOFFSETFROM:+0800
  559.20 +TZOFFSETTO:+0900
  559.21 +TZNAME:WST
  559.22 +DTSTART:19170101T000100
  559.23 +RDATE:19170101T000100
  559.24 +RDATE:19420101T020000
  559.25 +RDATE:19420927T020000
  559.26 +RDATE:19741027T020000
  559.27 +RDATE:19831030T020000
  559.28 +RDATE:19911117T020000
  559.29 +RDATE:20061203T020000
  559.30 +RDATE:20071028T020000
  559.31 +RDATE:20081026T020000
  559.32 +END:DAYLIGHT
  559.33 +BEGIN:STANDARD
  559.34 +TZOFFSETFROM:+0900
  559.35 +TZOFFSETTO:+0800
  559.36 +TZNAME:WST
  559.37 +DTSTART:19170325T020000
  559.38 +RDATE:19170325T020000
  559.39 +RDATE:19420329T020000
  559.40 +RDATE:19430328T020000
  559.41 +RDATE:19750302T030000
  559.42 +RDATE:19840304T030000
  559.43 +RDATE:19920301T030000
  559.44 +RDATE:20070325T030000
  559.45 +RDATE:20080330T030000
  559.46 +RDATE:20090329T030000
  559.47 +END:STANDARD
  559.48 +BEGIN:STANDARD
  559.49 +TZOFFSETFROM:+0800
  559.50 +TZOFFSETTO:+0800
  559.51 +TZNAME:WST
  559.52 +DTSTART:19430701T000000
  559.53 +RDATE:19430701T000000
  559.54 +END:STANDARD
  559.55 +END:VTIMEZONE
  559.56 +END:VCALENDAR
   560.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   560.2 +++ b/src/zoneinfo-global/Australia/Sydney.ics	Tue Feb 10 18:12:00 2015 +0100
   560.3 @@ -0,0 +1,130 @@
   560.4 +BEGIN:VCALENDAR
   560.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   560.6 +VERSION:2.0
   560.7 +BEGIN:VTIMEZONE
   560.8 +TZID:Australia/Sydney
   560.9 +TZURL:http://tzurl.org/zoneinfo-global/Australia/Sydney
  560.10 +X-LIC-LOCATION:Australia/Sydney
  560.11 +BEGIN:STANDARD
  560.12 +TZOFFSETFROM:+1100
  560.13 +TZOFFSETTO:+1000
  560.14 +TZNAME:EST
  560.15 +DTSTART:20080406T030000
  560.16 +RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU
  560.17 +END:STANDARD
  560.18 +BEGIN:DAYLIGHT
  560.19 +TZOFFSETFROM:+1000
  560.20 +TZOFFSETTO:+1100
  560.21 +TZNAME:EST
  560.22 +DTSTART:20081005T020000
  560.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU
  560.24 +END:DAYLIGHT
  560.25 +BEGIN:STANDARD
  560.26 +TZOFFSETFROM:+100452
  560.27 +TZOFFSETTO:+1000
  560.28 +TZNAME:EST
  560.29 +DTSTART:18950201T000000
  560.30 +RDATE:18950201T000000
  560.31 +END:STANDARD
  560.32 +BEGIN:DAYLIGHT
  560.33 +TZOFFSETFROM:+1000
  560.34 +TZOFFSETTO:+1100
  560.35 +TZNAME:EST
  560.36 +DTSTART:19170101T000100
  560.37 +RDATE:19170101T000100
  560.38 +RDATE:19420101T020000
  560.39 +RDATE:19420927T020000
  560.40 +RDATE:19431003T020000
  560.41 +RDATE:19711031T020000
  560.42 +RDATE:19721029T020000
  560.43 +RDATE:19731028T020000
  560.44 +RDATE:19741027T020000
  560.45 +RDATE:19751026T020000
  560.46 +RDATE:19761031T020000
  560.47 +RDATE:19771030T020000
  560.48 +RDATE:19781029T020000
  560.49 +RDATE:19791028T020000
  560.50 +RDATE:19801026T020000
  560.51 +RDATE:19811025T020000
  560.52 +RDATE:19821031T020000
  560.53 +RDATE:19831030T020000
  560.54 +RDATE:19841028T020000
  560.55 +RDATE:19851027T020000
  560.56 +RDATE:19861019T020000
  560.57 +RDATE:19871025T020000
  560.58 +RDATE:19881030T020000
  560.59 +RDATE:19891029T020000
  560.60 +RDATE:19901028T020000
  560.61 +RDATE:19911027T020000
  560.62 +RDATE:19921025T020000
  560.63 +RDATE:19931031T020000
  560.64 +RDATE:19941030T020000
  560.65 +RDATE:19951029T020000
  560.66 +RDATE:19961027T020000
  560.67 +RDATE:19971026T020000
  560.68 +RDATE:19981025T020000
  560.69 +RDATE:19991031T020000
  560.70 +RDATE:20000827T020000
  560.71 +RDATE:20011028T020000
  560.72 +RDATE:20021027T020000
  560.73 +RDATE:20031026T020000
  560.74 +RDATE:20041031T020000
  560.75 +RDATE:20051030T020000
  560.76 +RDATE:20061029T020000
  560.77 +RDATE:20071028T020000
  560.78 +END:DAYLIGHT
  560.79 +BEGIN:STANDARD
  560.80 +TZOFFSETFROM:+1100
  560.81 +TZOFFSETTO:+1000
  560.82 +TZNAME:EST
  560.83 +DTSTART:19170325T020000
  560.84 +RDATE:19170325T020000
  560.85 +RDATE:19420329T020000
  560.86 +RDATE:19430328T020000
  560.87 +RDATE:19440326T020000
  560.88 +RDATE:19720227T030000
  560.89 +RDATE:19730304T030000
  560.90 +RDATE:19740303T030000
  560.91 +RDATE:19750302T030000
  560.92 +RDATE:19760307T030000
  560.93 +RDATE:19770306T030000
  560.94 +RDATE:19780305T030000
  560.95 +RDATE:19790304T030000
  560.96 +RDATE:19800302T030000
  560.97 +RDATE:19810301T030000
  560.98 +RDATE:19820404T030000
  560.99 +RDATE:19830306T030000
 560.100 +RDATE:19840304T030000
 560.101 +RDATE:19850303T030000
 560.102 +RDATE:19860316T030000
 560.103 +RDATE:19870315T030000
 560.104 +RDATE:19880320T030000
 560.105 +RDATE:19890319T030000
 560.106 +RDATE:19900304T030000
 560.107 +RDATE:19910303T030000
 560.108 +RDATE:19920301T030000
 560.109 +RDATE:19930307T030000
 560.110 +RDATE:19940306T030000
 560.111 +RDATE:19950305T030000
 560.112 +RDATE:19960331T030000
 560.113 +RDATE:19970330T030000
 560.114 +RDATE:19980329T030000
 560.115 +RDATE:19990328T030000
 560.116 +RDATE:20000326T030000
 560.117 +RDATE:20010325T030000
 560.118 +RDATE:20020331T030000
 560.119 +RDATE:20030330T030000
 560.120 +RDATE:20040328T030000
 560.121 +RDATE:20050327T030000
 560.122 +RDATE:20060402T030000
 560.123 +RDATE:20070325T030000
 560.124 +END:STANDARD
 560.125 +BEGIN:STANDARD
 560.126 +TZOFFSETFROM:+1000
 560.127 +TZOFFSETTO:+1000
 560.128 +TZNAME:EST
 560.129 +DTSTART:19710101T000000
 560.130 +RDATE:19710101T000000
 560.131 +END:STANDARD
 560.132 +END:VTIMEZONE
 560.133 +END:VCALENDAR
   561.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   561.2 +++ b/src/zoneinfo-global/Europe/Amsterdam.ics	Tue Feb 10 18:12:00 2015 +0100
   561.3 @@ -0,0 +1,165 @@
   561.4 +BEGIN:VCALENDAR
   561.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   561.6 +VERSION:2.0
   561.7 +BEGIN:VTIMEZONE
   561.8 +TZID:Europe/Amsterdam
   561.9 +TZURL:http://tzurl.org/zoneinfo-global/Europe/Amsterdam
  561.10 +X-LIC-LOCATION:Europe/Amsterdam
  561.11 +BEGIN:DAYLIGHT
  561.12 +TZOFFSETFROM:+0100
  561.13 +TZOFFSETTO:+0200
  561.14 +TZNAME:CEST
  561.15 +DTSTART:19810329T020000
  561.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  561.17 +END:DAYLIGHT
  561.18 +BEGIN:STANDARD
  561.19 +TZOFFSETFROM:+0200
  561.20 +TZOFFSETTO:+0100
  561.21 +TZNAME:CET
  561.22 +DTSTART:19961027T030000
  561.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  561.24 +END:STANDARD
  561.25 +BEGIN:STANDARD
  561.26 +TZOFFSETFROM:+001932
  561.27 +TZOFFSETTO:+001932
  561.28 +TZNAME:AMT
  561.29 +DTSTART:18350101T000000
  561.30 +RDATE:18350101T000000
  561.31 +END:STANDARD
  561.32 +BEGIN:DAYLIGHT
  561.33 +TZOFFSETFROM:+001932
  561.34 +TZOFFSETTO:+011932
  561.35 +TZNAME:NST
  561.36 +DTSTART:19160501T000000
  561.37 +RDATE:19160501T000000
  561.38 +RDATE:19170416T020000
  561.39 +RDATE:19180401T020000
  561.40 +RDATE:19190407T020000
  561.41 +RDATE:19200405T020000
  561.42 +RDATE:19210404T020000
  561.43 +RDATE:19220326T020000
  561.44 +RDATE:19230601T020000
  561.45 +RDATE:19240330T020000
  561.46 +RDATE:19250605T020000
  561.47 +RDATE:19260515T020000
  561.48 +RDATE:19270515T020000
  561.49 +RDATE:19280515T020000
  561.50 +RDATE:19290515T020000
  561.51 +RDATE:19300515T020000
  561.52 +RDATE:19310515T020000
  561.53 +RDATE:19320522T020000
  561.54 +RDATE:19330515T020000
  561.55 +RDATE:19340515T020000
  561.56 +RDATE:19350515T020000
  561.57 +RDATE:19360515T020000
  561.58 +RDATE:19370522T020000
  561.59 +END:DAYLIGHT
  561.60 +BEGIN:STANDARD
  561.61 +TZOFFSETFROM:+011932
  561.62 +TZOFFSETTO:+001932
  561.63 +TZNAME:AMT
  561.64 +DTSTART:19161001T000000
  561.65 +RDATE:19161001T000000
  561.66 +RDATE:19170917T030000
  561.67 +RDATE:19180930T030000
  561.68 +RDATE:19190929T030000
  561.69 +RDATE:19200927T030000
  561.70 +RDATE:19210926T030000
  561.71 +RDATE:19221008T030000
  561.72 +RDATE:19231007T030000
  561.73 +RDATE:19241005T030000
  561.74 +RDATE:19251004T030000
  561.75 +RDATE:19261003T030000
  561.76 +RDATE:19271002T030000
  561.77 +RDATE:19281007T030000
  561.78 +RDATE:19291006T030000
  561.79 +RDATE:19301005T030000
  561.80 +RDATE:19311004T030000
  561.81 +RDATE:19321002T030000
  561.82 +RDATE:19331008T030000
  561.83 +RDATE:19341007T030000
  561.84 +RDATE:19351006T030000
  561.85 +RDATE:19361004T030000
  561.86 +END:STANDARD
  561.87 +BEGIN:DAYLIGHT
  561.88 +TZOFFSETFROM:+011932
  561.89 +TZOFFSETTO:+0120
  561.90 +TZNAME:NEST
  561.91 +DTSTART:19370701T000000
  561.92 +RDATE:19370701T000000
  561.93 +END:DAYLIGHT
  561.94 +BEGIN:STANDARD
  561.95 +TZOFFSETFROM:+0120
  561.96 +TZOFFSETTO:+0020
  561.97 +TZNAME:NET
  561.98 +DTSTART:19371003T030000
  561.99 +RDATE:19371003T030000
 561.100 +RDATE:19381002T030000
 561.101 +RDATE:19391008T030000
 561.102 +END:STANDARD
 561.103 +BEGIN:DAYLIGHT
 561.104 +TZOFFSETFROM:+0020
 561.105 +TZOFFSETTO:+0120
 561.106 +TZNAME:NEST
 561.107 +DTSTART:19380515T020000
 561.108 +RDATE:19380515T020000
 561.109 +RDATE:19390515T020000
 561.110 +END:DAYLIGHT
 561.111 +BEGIN:DAYLIGHT
 561.112 +TZOFFSETFROM:+0020
 561.113 +TZOFFSETTO:+0200
 561.114 +TZNAME:CEST
 561.115 +DTSTART:19400516T000000
 561.116 +RDATE:19400516T000000
 561.117 +END:DAYLIGHT
 561.118 +BEGIN:STANDARD
 561.119 +TZOFFSETFROM:+0200
 561.120 +TZOFFSETTO:+0100
 561.121 +TZNAME:CET
 561.122 +DTSTART:19421102T030000
 561.123 +RDATE:19421102T030000
 561.124 +RDATE:19431004T030000
 561.125 +RDATE:19441002T030000
 561.126 +RDATE:19450916T030000
 561.127 +RDATE:19770925T030000
 561.128 +RDATE:19781001T030000
 561.129 +RDATE:19790930T030000
 561.130 +RDATE:19800928T030000
 561.131 +RDATE:19810927T030000
 561.132 +RDATE:19820926T030000
 561.133 +RDATE:19830925T030000
 561.134 +RDATE:19840930T030000
 561.135 +RDATE:19850929T030000
 561.136 +RDATE:19860928T030000
 561.137 +RDATE:19870927T030000
 561.138 +RDATE:19880925T030000
 561.139 +RDATE:19890924T030000
 561.140 +RDATE:19900930T030000
 561.141 +RDATE:19910929T030000
 561.142 +RDATE:19920927T030000
 561.143 +RDATE:19930926T030000
 561.144 +RDATE:19940925T030000
 561.145 +RDATE:19950924T030000
 561.146 +END:STANDARD
 561.147 +BEGIN:DAYLIGHT
 561.148 +TZOFFSETFROM:+0100
 561.149 +TZOFFSETTO:+0200
 561.150 +TZNAME:CEST
 561.151 +DTSTART:19430329T020000
 561.152 +RDATE:19430329T020000
 561.153 +RDATE:19440403T020000
 561.154 +RDATE:19450402T020000
 561.155 +RDATE:19770403T020000
 561.156 +RDATE:19780402T020000
 561.157 +RDATE:19790401T020000
 561.158 +RDATE:19800406T020000
 561.159 +END:DAYLIGHT
 561.160 +BEGIN:STANDARD
 561.161 +TZOFFSETFROM:+0100
 561.162 +TZOFFSETTO:+0100
 561.163 +TZNAME:CET
 561.164 +DTSTART:19770101T000000
 561.165 +RDATE:19770101T000000
 561.166 +END:STANDARD
 561.167 +END:VTIMEZONE
 561.168 +END:VCALENDAR
   562.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   562.2 +++ b/src/zoneinfo-global/Europe/Andorra.ics	Tue Feb 10 18:12:00 2015 +0100
   562.3 @@ -0,0 +1,54 @@
   562.4 +BEGIN:VCALENDAR
   562.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   562.6 +VERSION:2.0
   562.7 +BEGIN:VTIMEZONE
   562.8 +TZID:Europe/Andorra
   562.9 +TZURL:http://tzurl.org/zoneinfo-global/Europe/Andorra
  562.10 +X-LIC-LOCATION:Europe/Andorra
  562.11 +BEGIN:DAYLIGHT
  562.12 +TZOFFSETFROM:+0100
  562.13 +TZOFFSETTO:+0200
  562.14 +TZNAME:CEST
  562.15 +DTSTART:19850331T020000
  562.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  562.17 +END:DAYLIGHT
  562.18 +BEGIN:STANDARD
  562.19 +TZOFFSETFROM:+0200
  562.20 +TZOFFSETTO:+0100
  562.21 +TZNAME:CET
  562.22 +DTSTART:19961027T030000
  562.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  562.24 +END:STANDARD
  562.25 +BEGIN:STANDARD
  562.26 +TZOFFSETFROM:+000604
  562.27 +TZOFFSETTO:+0000
  562.28 +TZNAME:WET
  562.29 +DTSTART:19010101T000000
  562.30 +RDATE:19010101T000000
  562.31 +END:STANDARD
  562.32 +BEGIN:STANDARD
  562.33 +TZOFFSETFROM:+0000
  562.34 +TZOFFSETTO:+0100
  562.35 +TZNAME:CET
  562.36 +DTSTART:19460930T000000
  562.37 +RDATE:19460930T000000
  562.38 +END:STANDARD
  562.39 +BEGIN:STANDARD
  562.40 +TZOFFSETFROM:+0200
  562.41 +TZOFFSETTO:+0100
  562.42 +TZNAME:CET
  562.43 +DTSTART:19850929T030000
  562.44 +RDATE:19850929T030000
  562.45 +RDATE:19860928T030000
  562.46 +RDATE:19870927T030000
  562.47 +RDATE:19880925T030000
  562.48 +RDATE:19890924T030000
  562.49 +RDATE:19900930T030000
  562.50 +RDATE:19910929T030000
  562.51 +RDATE:19920927T030000
  562.52 +RDATE:19930926T030000
  562.53 +RDATE:19940925T030000
  562.54 +RDATE:19950924T030000
  562.55 +END:STANDARD
  562.56 +END:VTIMEZONE
  562.57 +END:VCALENDAR
   563.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   563.2 +++ b/src/zoneinfo-global/Europe/Athens.ics	Tue Feb 10 18:12:00 2015 +0100
   563.3 @@ -0,0 +1,117 @@
   563.4 +BEGIN:VCALENDAR
   563.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   563.6 +VERSION:2.0
   563.7 +BEGIN:VTIMEZONE
   563.8 +TZID:Europe/Athens
   563.9 +TZURL:http://tzurl.org/zoneinfo-global/Europe/Athens
  563.10 +X-LIC-LOCATION:Europe/Athens
  563.11 +BEGIN:DAYLIGHT
  563.12 +TZOFFSETFROM:+0200
  563.13 +TZOFFSETTO:+0300
  563.14 +TZNAME:EEST
  563.15 +DTSTART:19810329T030000
  563.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  563.17 +END:DAYLIGHT
  563.18 +BEGIN:STANDARD
  563.19 +TZOFFSETFROM:+0300
  563.20 +TZOFFSETTO:+0200
  563.21 +TZNAME:EET
  563.22 +DTSTART:19961027T040000
  563.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  563.24 +END:STANDARD
  563.25 +BEGIN:STANDARD
  563.26 +TZOFFSETFROM:+013452
  563.27 +TZOFFSETTO:+013452
  563.28 +TZNAME:AMT
  563.29 +DTSTART:18950914T000000
  563.30 +RDATE:18950914T000000
  563.31 +END:STANDARD
  563.32 +BEGIN:STANDARD
  563.33 +TZOFFSETFROM:+013452
  563.34 +TZOFFSETTO:+0200
  563.35 +TZNAME:EET
  563.36 +DTSTART:19160728T000100
  563.37 +RDATE:19160728T000100
  563.38 +END:STANDARD
  563.39 +BEGIN:DAYLIGHT
  563.40 +TZOFFSETFROM:+0200
  563.41 +TZOFFSETTO:+0300
  563.42 +TZNAME:EEST
  563.43 +DTSTART:19320707T000000
  563.44 +RDATE:19320707T000000
  563.45 +RDATE:19410407T000000
  563.46 +RDATE:19520701T000000
  563.47 +RDATE:19750412T000000
  563.48 +RDATE:19760411T020000
  563.49 +RDATE:19770403T020000
  563.50 +RDATE:19780402T020000
  563.51 +RDATE:19790401T090000
  563.52 +RDATE:19800401T000000
  563.53 +END:DAYLIGHT
  563.54 +BEGIN:STANDARD
  563.55 +TZOFFSETFROM:+0300
  563.56 +TZOFFSETTO:+0200
  563.57 +TZNAME:EET
  563.58 +DTSTART:19320901T000000
  563.59 +RDATE:19320901T000000
  563.60 +RDATE:19521102T000000
  563.61 +RDATE:19751126T010000
  563.62 +RDATE:19761010T030000
  563.63 +RDATE:19770926T030000
  563.64 +RDATE:19780924T040000
  563.65 +RDATE:19790929T020000
  563.66 +RDATE:19800928T000000
  563.67 +RDATE:19810927T040000
  563.68 +RDATE:19820926T040000
  563.69 +RDATE:19830925T040000
  563.70 +RDATE:19840930T040000
  563.71 +RDATE:19850929T040000
  563.72 +RDATE:19860928T040000
  563.73 +RDATE:19870927T040000
  563.74 +RDATE:19880925T040000
  563.75 +RDATE:19890924T040000
  563.76 +RDATE:19900930T040000
  563.77 +RDATE:19910929T040000
  563.78 +RDATE:19920927T040000
  563.79 +RDATE:19930926T040000
  563.80 +RDATE:19940925T040000
  563.81 +RDATE:19950924T040000
  563.82 +END:STANDARD
  563.83 +BEGIN:DAYLIGHT
  563.84 +TZOFFSETFROM:+0300
  563.85 +TZOFFSETTO:+0200
  563.86 +TZNAME:CEST
  563.87 +DTSTART:19410430T000000
  563.88 +RDATE:19410430T000000
  563.89 +END:DAYLIGHT
  563.90 +BEGIN:STANDARD
  563.91 +TZOFFSETFROM:+0200
  563.92 +TZOFFSETTO:+0100
  563.93 +TZNAME:CET
  563.94 +DTSTART:19421102T030000
  563.95 +RDATE:19421102T030000
  563.96 +RDATE:19431004T000000
  563.97 +END:STANDARD
  563.98 +BEGIN:DAYLIGHT
  563.99 +TZOFFSETFROM:+0100
 563.100 +TZOFFSETTO:+0200
 563.101 +TZNAME:CEST
 563.102 +DTSTART:19430330T000000
 563.103 +RDATE:19430330T000000
 563.104 +END:DAYLIGHT
 563.105 +BEGIN:STANDARD
 563.106 +TZOFFSETFROM:+0100
 563.107 +TZOFFSETTO:+0200
 563.108 +TZNAME:EET
 563.109 +DTSTART:19440404T000000
 563.110 +RDATE:19440404T000000
 563.111 +END:STANDARD
 563.112 +BEGIN:STANDARD
 563.113 +TZOFFSETFROM:+0200
 563.114 +TZOFFSETTO:+0200
 563.115 +TZNAME:EET
 563.116 +DTSTART:19810101T000000
 563.117 +RDATE:19810101T000000
 563.118 +END:STANDARD
 563.119 +END:VTIMEZONE
 563.120 +END:VCALENDAR
   564.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   564.2 +++ b/src/zoneinfo-global/Europe/Belgrade.ics	Tue Feb 10 18:12:00 2015 +0100
   564.3 @@ -0,0 +1,71 @@
   564.4 +BEGIN:VCALENDAR
   564.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   564.6 +VERSION:2.0
   564.7 +BEGIN:VTIMEZONE
   564.8 +TZID:Europe/Belgrade
   564.9 +TZURL:http://tzurl.org/zoneinfo-global/Europe/Belgrade
  564.10 +X-LIC-LOCATION:Europe/Belgrade
  564.11 +BEGIN:DAYLIGHT
  564.12 +TZOFFSETFROM:+0100
  564.13 +TZOFFSETTO:+0200
  564.14 +TZNAME:CEST
  564.15 +DTSTART:19830327T020000
  564.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  564.17 +END:DAYLIGHT
  564.18 +BEGIN:STANDARD
  564.19 +TZOFFSETFROM:+0200
  564.20 +TZOFFSETTO:+0100
  564.21 +TZNAME:CET
  564.22 +DTSTART:19961027T030000
  564.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  564.24 +END:STANDARD
  564.25 +BEGIN:STANDARD
  564.26 +TZOFFSETFROM:+0122
  564.27 +TZOFFSETTO:+0100
  564.28 +TZNAME:CET
  564.29 +DTSTART:18840101T000000
  564.30 +RDATE:18840101T000000
  564.31 +END:STANDARD
  564.32 +BEGIN:DAYLIGHT
  564.33 +TZOFFSETFROM:+0100
  564.34 +TZOFFSETTO:+0200
  564.35 +TZNAME:CEST
  564.36 +DTSTART:19410418T230000
  564.37 +RDATE:19410418T230000
  564.38 +RDATE:19430329T020000
  564.39 +RDATE:19440403T020000
  564.40 +RDATE:19450508T020000
  564.41 +END:DAYLIGHT
  564.42 +BEGIN:STANDARD
  564.43 +TZOFFSETFROM:+0200
  564.44 +TZOFFSETTO:+0100
  564.45 +TZNAME:CET
  564.46 +DTSTART:19421102T030000
  564.47 +RDATE:19421102T030000
  564.48 +RDATE:19431004T030000
  564.49 +RDATE:19441002T030000
  564.50 +RDATE:19450916T030000
  564.51 +RDATE:19830925T030000
  564.52 +RDATE:19840930T030000
  564.53 +RDATE:19850929T030000
  564.54 +RDATE:19860928T030000
  564.55 +RDATE:19870927T030000
  564.56 +RDATE:19880925T030000
  564.57 +RDATE:19890924T030000
  564.58 +RDATE:19900930T030000
  564.59 +RDATE:19910929T030000
  564.60 +RDATE:19920927T030000
  564.61 +RDATE:19930926T030000
  564.62 +RDATE:19940925T030000
  564.63 +RDATE:19950924T030000
  564.64 +END:STANDARD
  564.65 +BEGIN:STANDARD
  564.66 +TZOFFSETFROM:+0100
  564.67 +TZOFFSETTO:+0100
  564.68 +TZNAME:CET
  564.69 +DTSTART:19450101T000000
  564.70 +RDATE:19450101T000000
  564.71 +RDATE:19821127T000000
  564.72 +END:STANDARD
  564.73 +END:VTIMEZONE
  564.74 +END:VCALENDAR
   565.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   565.2 +++ b/src/zoneinfo-global/Europe/Berlin.ics	Tue Feb 10 18:12:00 2015 +0100
   565.3 @@ -0,0 +1,105 @@
   565.4 +BEGIN:VCALENDAR
   565.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   565.6 +VERSION:2.0
   565.7 +BEGIN:VTIMEZONE
   565.8 +TZID:Europe/Berlin
   565.9 +TZURL:http://tzurl.org/zoneinfo-global/Europe/Berlin
  565.10 +X-LIC-LOCATION:Europe/Berlin
  565.11 +BEGIN:DAYLIGHT
  565.12 +TZOFFSETFROM:+0100
  565.13 +TZOFFSETTO:+0200
  565.14 +TZNAME:CEST
  565.15 +DTSTART:19810329T020000
  565.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  565.17 +END:DAYLIGHT
  565.18 +BEGIN:STANDARD
  565.19 +TZOFFSETFROM:+0200
  565.20 +TZOFFSETTO:+0100
  565.21 +TZNAME:CET
  565.22 +DTSTART:19961027T030000
  565.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  565.24 +END:STANDARD
  565.25 +BEGIN:STANDARD
  565.26 +TZOFFSETFROM:+005328
  565.27 +TZOFFSETTO:+0100
  565.28 +TZNAME:CET
  565.29 +DTSTART:18930401T000000
  565.30 +RDATE:18930401T000000
  565.31 +END:STANDARD
  565.32 +BEGIN:DAYLIGHT
  565.33 +TZOFFSETFROM:+0100
  565.34 +TZOFFSETTO:+0200
  565.35 +TZNAME:CEST
  565.36 +DTSTART:19160430T230000
  565.37 +RDATE:19160430T230000
  565.38 +RDATE:19170416T020000
  565.39 +RDATE:19180415T020000
  565.40 +RDATE:19400401T020000
  565.41 +RDATE:19430329T020000
  565.42 +RDATE:19440403T020000
  565.43 +RDATE:19450402T020000
  565.44 +RDATE:19460414T020000
  565.45 +RDATE:19470406T030000
  565.46 +RDATE:19480418T020000
  565.47 +RDATE:19490410T020000
  565.48 +RDATE:19800406T020000
  565.49 +END:DAYLIGHT
  565.50 +BEGIN:STANDARD
  565.51 +TZOFFSETFROM:+0200
  565.52 +TZOFFSETTO:+0100
  565.53 +TZNAME:CET
  565.54 +DTSTART:19161001T010000
  565.55 +RDATE:19161001T010000
  565.56 +RDATE:19170917T030000
  565.57 +RDATE:19180916T030000
  565.58 +RDATE:19421102T030000
  565.59 +RDATE:19431004T030000
  565.60 +RDATE:19441002T030000
  565.61 +RDATE:19451118T030000
  565.62 +RDATE:19461007T030000
  565.63 +RDATE:19471005T030000
  565.64 +RDATE:19481003T030000
  565.65 +RDATE:19491002T030000
  565.66 +RDATE:19800928T030000
  565.67 +RDATE:19810927T030000
  565.68 +RDATE:19820926T030000
  565.69 +RDATE:19830925T030000
  565.70 +RDATE:19840930T030000
  565.71 +RDATE:19850929T030000
  565.72 +RDATE:19860928T030000
  565.73 +RDATE:19870927T030000
  565.74 +RDATE:19880925T030000
  565.75 +RDATE:19890924T030000
  565.76 +RDATE:19900930T030000
  565.77 +RDATE:19910929T030000
  565.78 +RDATE:19920927T030000
  565.79 +RDATE:19930926T030000
  565.80 +RDATE:19940925T030000
  565.81 +RDATE:19950924T030000
  565.82 +END:STANDARD
  565.83 +BEGIN:DAYLIGHT
  565.84 +TZOFFSETFROM:+0200
  565.85 +TZOFFSETTO:+0300
  565.86 +TZNAME:CEMT
  565.87 +DTSTART:19450524T020000
  565.88 +RDATE:19450524T020000
  565.89 +RDATE:19470511T030000
  565.90 +END:DAYLIGHT
  565.91 +BEGIN:DAYLIGHT
  565.92 +TZOFFSETFROM:+0300
  565.93 +TZOFFSETTO:+0200
  565.94 +TZNAME:CEST
  565.95 +DTSTART:19450924T030000
  565.96 +RDATE:19450924T030000
  565.97 +RDATE:19470629T030000
  565.98 +END:DAYLIGHT
  565.99 +BEGIN:STANDARD
 565.100 +TZOFFSETFROM:+0100
 565.101 +TZOFFSETTO:+0100
 565.102 +TZNAME:CET
 565.103 +DTSTART:19460101T000000
 565.104 +RDATE:19460101T000000
 565.105 +RDATE:19800101T000000
 565.106 +END:STANDARD
 565.107 +END:VTIMEZONE
 565.108 +END:VCALENDAR
   566.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   566.2 +++ b/src/zoneinfo-global/Europe/Bratislava.ics	Tue Feb 10 18:12:00 2015 +0100
   566.3 @@ -0,0 +1,97 @@
   566.4 +BEGIN:VCALENDAR
   566.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   566.6 +VERSION:2.0
   566.7 +BEGIN:VTIMEZONE
   566.8 +TZID:Europe/Bratislava
   566.9 +TZURL:http://tzurl.org/zoneinfo-global/Europe/Bratislava
  566.10 +X-LIC-LOCATION:Europe/Bratislava
  566.11 +BEGIN:DAYLIGHT
  566.12 +TZOFFSETFROM:+0100
  566.13 +TZOFFSETTO:+0200
  566.14 +TZNAME:CEST
  566.15 +DTSTART:19810329T020000
  566.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  566.17 +END:DAYLIGHT
  566.18 +BEGIN:STANDARD
  566.19 +TZOFFSETFROM:+0200
  566.20 +TZOFFSETTO:+0100
  566.21 +TZNAME:CET
  566.22 +DTSTART:19961027T030000
  566.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  566.24 +END:STANDARD
  566.25 +BEGIN:STANDARD
  566.26 +TZOFFSETFROM:+005744
  566.27 +TZOFFSETTO:+005744
  566.28 +TZNAME:PMT
  566.29 +DTSTART:18500101T000000
  566.30 +RDATE:18500101T000000
  566.31 +END:STANDARD
  566.32 +BEGIN:STANDARD
  566.33 +TZOFFSETFROM:+005744
  566.34 +TZOFFSETTO:+0100
  566.35 +TZNAME:CET
  566.36 +DTSTART:18911001T000000
  566.37 +RDATE:18911001T000000
  566.38 +END:STANDARD
  566.39 +BEGIN:DAYLIGHT
  566.40 +TZOFFSETFROM:+0100
  566.41 +TZOFFSETTO:+0200
  566.42 +TZNAME:CEST
  566.43 +DTSTART:19160430T230000
  566.44 +RDATE:19160430T230000
  566.45 +RDATE:19170416T020000
  566.46 +RDATE:19180415T020000
  566.47 +RDATE:19400401T020000
  566.48 +RDATE:19430329T020000
  566.49 +RDATE:19440403T020000
  566.50 +RDATE:19450408T020000
  566.51 +RDATE:19460506T020000
  566.52 +RDATE:19470420T020000
  566.53 +RDATE:19480418T020000
  566.54 +RDATE:19490409T020000
  566.55 +RDATE:19790401T020000
  566.56 +RDATE:19800406T020000
  566.57 +END:DAYLIGHT
  566.58 +BEGIN:STANDARD
  566.59 +TZOFFSETFROM:+0200
  566.60 +TZOFFSETTO:+0100
  566.61 +TZNAME:CET
  566.62 +DTSTART:19161001T010000
  566.63 +RDATE:19161001T010000
  566.64 +RDATE:19170917T030000
  566.65 +RDATE:19180916T030000
  566.66 +RDATE:19421102T030000
  566.67 +RDATE:19431004T030000
  566.68 +RDATE:19440917T030000
  566.69 +RDATE:19451118T030000
  566.70 +RDATE:19461006T030000
  566.71 +RDATE:19471005T030000
  566.72 +RDATE:19481003T030000
  566.73 +RDATE:19491002T030000
  566.74 +RDATE:19790930T030000
  566.75 +RDATE:19800928T030000
  566.76 +RDATE:19810927T030000
  566.77 +RDATE:19820926T030000
  566.78 +RDATE:19830925T030000
  566.79 +RDATE:19840930T030000
  566.80 +RDATE:19850929T030000
  566.81 +RDATE:19860928T030000
  566.82 +RDATE:19870927T030000
  566.83 +RDATE:19880925T030000
  566.84 +RDATE:19890924T030000
  566.85 +RDATE:19900930T030000
  566.86 +RDATE:19910929T030000
  566.87 +RDATE:19920927T030000
  566.88 +RDATE:19930926T030000
  566.89 +RDATE:19940925T030000
  566.90 +RDATE:19950924T030000
  566.91 +END:STANDARD
  566.92 +BEGIN:STANDARD
  566.93 +TZOFFSETFROM:+0100
  566.94 +TZOFFSETTO:+0100
  566.95 +TZNAME:CET
  566.96 +DTSTART:19790101T000000
  566.97 +RDATE:19790101T000000
  566.98 +END:STANDARD
  566.99 +END:VTIMEZONE
 566.100 +END:VCALENDAR
   567.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   567.2 +++ b/src/zoneinfo-global/Europe/Brussels.ics	Tue Feb 10 18:12:00 2015 +0100
   567.3 @@ -0,0 +1,165 @@
   567.4 +BEGIN:VCALENDAR
   567.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   567.6 +VERSION:2.0
   567.7 +BEGIN:VTIMEZONE
   567.8 +TZID:Europe/Brussels
   567.9 +TZURL:http://tzurl.org/zoneinfo-global/Europe/Brussels
  567.10 +X-LIC-LOCATION:Europe/Brussels
  567.11 +BEGIN:DAYLIGHT
  567.12 +TZOFFSETFROM:+0100
  567.13 +TZOFFSETTO:+0200
  567.14 +TZNAME:CEST
  567.15 +DTSTART:19810329T020000
  567.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  567.17 +END:DAYLIGHT
  567.18 +BEGIN:STANDARD
  567.19 +TZOFFSETFROM:+0200
  567.20 +TZOFFSETTO:+0100
  567.21 +TZNAME:CET
  567.22 +DTSTART:19961027T030000
  567.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  567.24 +END:STANDARD
  567.25 +BEGIN:STANDARD
  567.26 +TZOFFSETFROM:+001730
  567.27 +TZOFFSETTO:+001730
  567.28 +TZNAME:BMT
  567.29 +DTSTART:18800101T000000
  567.30 +RDATE:18800101T000000
  567.31 +END:STANDARD
  567.32 +BEGIN:STANDARD
  567.33 +TZOFFSETFROM:+001730
  567.34 +TZOFFSETTO:+0000
  567.35 +TZNAME:WET
  567.36 +DTSTART:18920501T120000
  567.37 +RDATE:18920501T120000
  567.38 +END:STANDARD
  567.39 +BEGIN:STANDARD
  567.40 +TZOFFSETFROM:+0000
  567.41 +TZOFFSETTO:+0100
  567.42 +TZNAME:CET
  567.43 +DTSTART:19141108T000000
  567.44 +RDATE:19141108T000000
  567.45 +END:STANDARD
  567.46 +BEGIN:DAYLIGHT
  567.47 +TZOFFSETFROM:+0100
  567.48 +TZOFFSETTO:+0200
  567.49 +TZNAME:CEST
  567.50 +DTSTART:19160501T000000
  567.51 +RDATE:19160501T000000
  567.52 +RDATE:19170416T020000
  567.53 +RDATE:19180415T020000
  567.54 +RDATE:19400520T030000
  567.55 +RDATE:19430329T020000
  567.56 +RDATE:19440403T020000
  567.57 +RDATE:19450402T020000
  567.58 +RDATE:19460519T020000
  567.59 +RDATE:19770403T020000
  567.60 +RDATE:19780402T020000
  567.61 +RDATE:19790401T020000
  567.62 +RDATE:19800406T020000
  567.63 +END:DAYLIGHT
  567.64 +BEGIN:STANDARD
  567.65 +TZOFFSETFROM:+0200
  567.66 +TZOFFSETTO:+0100
  567.67 +TZNAME:CET
  567.68 +DTSTART:19161001T010000
  567.69 +RDATE:19161001T010000
  567.70 +RDATE:19170917T030000
  567.71 +RDATE:19180916T030000
  567.72 +RDATE:19421102T030000
  567.73 +RDATE:19431004T030000
  567.74 +RDATE:19440917T030000
  567.75 +RDATE:19450916T030000
  567.76 +RDATE:19461007T030000
  567.77 +RDATE:19770925T030000
  567.78 +RDATE:19781001T030000
  567.79 +RDATE:19790930T030000
  567.80 +RDATE:19800928T030000
  567.81 +RDATE:19810927T030000
  567.82 +RDATE:19820926T030000
  567.83 +RDATE:19830925T030000
  567.84 +RDATE:19840930T030000
  567.85 +RDATE:19850929T030000
  567.86 +RDATE:19860928T030000
  567.87 +RDATE:19870927T030000
  567.88 +RDATE:19880925T030000
  567.89 +RDATE:19890924T030000
  567.90 +RDATE:19900930T030000
  567.91 +RDATE:19910929T030000
  567.92 +RDATE:19920927T030000
  567.93 +RDATE:19930926T030000
  567.94 +RDATE:19940925T030000
  567.95 +RDATE:19950924T030000
  567.96 +END:STANDARD
  567.97 +BEGIN:STANDARD
  567.98 +TZOFFSETFROM:+0100
  567.99 +TZOFFSETTO:+0000
 567.100 +TZNAME:WET
 567.101 +DTSTART:19181111T120000
 567.102 +RDATE:19181111T120000
 567.103 +RDATE:19191005T000000
 567.104 +RDATE:19201024T000000
 567.105 +RDATE:19211026T000000
 567.106 +RDATE:19221008T000000
 567.107 +RDATE:19231007T000000
 567.108 +RDATE:19241005T000000
 567.109 +RDATE:19251004T000000
 567.110 +RDATE:19261003T000000
 567.111 +RDATE:19271002T000000
 567.112 +RDATE:19281007T030000
 567.113 +RDATE:19291006T030000
 567.114 +RDATE:19301005T030000
 567.115 +RDATE:19311004T030000
 567.116 +RDATE:19321002T030000
 567.117 +RDATE:19331008T030000
 567.118 +RDATE:19341007T030000
 567.119 +RDATE:19351006T030000
 567.120 +RDATE:19361004T030000
 567.121 +RDATE:19371003T030000
 567.122 +RDATE:19381002T030000
 567.123 +RDATE:19391119T030000
 567.124 +END:STANDARD
 567.125 +BEGIN:DAYLIGHT
 567.126 +TZOFFSETFROM:+0000
 567.127 +TZOFFSETTO:+0100
 567.128 +TZNAME:WEST
 567.129 +DTSTART:19190301T230000
 567.130 +RDATE:19190301T230000
 567.131 +RDATE:19200214T230000
 567.132 +RDATE:19210314T230000
 567.133 +RDATE:19220325T230000
 567.134 +RDATE:19230421T230000
 567.135 +RDATE:19240329T230000
 567.136 +RDATE:19250404T230000
 567.137 +RDATE:19260417T230000
 567.138 +RDATE:19270409T230000
 567.139 +RDATE:19280414T230000
 567.140 +RDATE:19290421T020000
 567.141 +RDATE:19300413T020000
 567.142 +RDATE:19310419T020000
 567.143 +RDATE:19320403T020000
 567.144 +RDATE:19330326T020000
 567.145 +RDATE:19340408T020000
 567.146 +RDATE:19350331T020000
 567.147 +RDATE:19360419T020000
 567.148 +RDATE:19370404T020000
 567.149 +RDATE:19380327T020000
 567.150 +RDATE:19390416T020000
 567.151 +RDATE:19400225T020000
 567.152 +END:DAYLIGHT
 567.153 +BEGIN:DAYLIGHT
 567.154 +TZOFFSETFROM:+0200
 567.155 +TZOFFSETTO:+0200
 567.156 +TZNAME:CEST
 567.157 +DTSTART:19440903T000000
 567.158 +RDATE:19440903T000000
 567.159 +END:DAYLIGHT
 567.160 +BEGIN:STANDARD
 567.161 +TZOFFSETFROM:+0100
 567.162 +TZOFFSETTO:+0100
 567.163 +TZNAME:CET
 567.164 +DTSTART:19770101T000000
 567.165 +RDATE:19770101T000000
 567.166 +END:STANDARD
 567.167 +END:VTIMEZONE
 567.168 +END:VCALENDAR
   568.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   568.2 +++ b/src/zoneinfo-global/Europe/Bucharest.ics	Tue Feb 10 18:12:00 2015 +0100
   568.3 @@ -0,0 +1,110 @@
   568.4 +BEGIN:VCALENDAR
   568.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   568.6 +VERSION:2.0
   568.7 +BEGIN:VTIMEZONE
   568.8 +TZID:Europe/Bucharest
   568.9 +TZURL:http://tzurl.org/zoneinfo-global/Europe/Bucharest
  568.10 +X-LIC-LOCATION:Europe/Bucharest
  568.11 +BEGIN:DAYLIGHT
  568.12 +TZOFFSETFROM:+0200
  568.13 +TZOFFSETTO:+0300
  568.14 +TZNAME:EEST
  568.15 +DTSTART:19970330T030000
  568.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  568.17 +END:DAYLIGHT
  568.18 +BEGIN:STANDARD
  568.19 +TZOFFSETFROM:+0300
  568.20 +TZOFFSETTO:+0200
  568.21 +TZNAME:EET
  568.22 +DTSTART:19971026T040000
  568.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  568.24 +END:STANDARD
  568.25 +BEGIN:STANDARD
  568.26 +TZOFFSETFROM:+014424
  568.27 +TZOFFSETTO:+014424
  568.28 +TZNAME:BMT
  568.29 +DTSTART:18911001T000000
  568.30 +RDATE:18911001T000000
  568.31 +END:STANDARD
  568.32 +BEGIN:STANDARD
  568.33 +TZOFFSETFROM:+014424
  568.34 +TZOFFSETTO:+0200
  568.35 +TZNAME:EET
  568.36 +DTSTART:19310724T000000
  568.37 +RDATE:19310724T000000
  568.38 +END:STANDARD
  568.39 +BEGIN:DAYLIGHT
  568.40 +TZOFFSETFROM:+0200
  568.41 +TZOFFSETTO:+0300
  568.42 +TZNAME:EEST
  568.43 +DTSTART:19320521T000000
  568.44 +RDATE:19320521T000000
  568.45 +RDATE:19330402T000000
  568.46 +RDATE:19340408T000000
  568.47 +RDATE:19350407T000000
  568.48 +RDATE:19360405T000000
  568.49 +RDATE:19370404T000000
  568.50 +RDATE:19380403T000000
  568.51 +RDATE:19390402T000000
  568.52 +RDATE:19790527T000000
  568.53 +RDATE:19800405T230000
  568.54 +RDATE:19810329T020000
  568.55 +RDATE:19820328T020000
  568.56 +RDATE:19830327T020000
  568.57 +RDATE:19840325T020000
  568.58 +RDATE:19850331T020000
  568.59 +RDATE:19860330T020000
  568.60 +RDATE:19870329T020000
  568.61 +RDATE:19880327T020000
  568.62 +RDATE:19890326T020000
  568.63 +RDATE:19900325T020000
  568.64 +RDATE:19910331T000000
  568.65 +RDATE:19920329T000000
  568.66 +RDATE:19930328T000000
  568.67 +RDATE:19940327T000000
  568.68 +RDATE:19950326T000000
  568.69 +RDATE:19960331T000000
  568.70 +END:DAYLIGHT
  568.71 +BEGIN:STANDARD
  568.72 +TZOFFSETFROM:+0300
  568.73 +TZOFFSETTO:+0200
  568.74 +TZNAME:EET
  568.75 +DTSTART:19321002T010000
  568.76 +RDATE:19321002T010000
  568.77 +RDATE:19331001T010000
  568.78 +RDATE:19341007T010000
  568.79 +RDATE:19351006T010000
  568.80 +RDATE:19361004T010000
  568.81 +RDATE:19371003T010000
  568.82 +RDATE:19381002T010000
  568.83 +RDATE:19391001T010000
  568.84 +RDATE:19790930T000000
  568.85 +RDATE:19800928T010000
  568.86 +RDATE:19810927T030000
  568.87 +RDATE:19820926T030000
  568.88 +RDATE:19830925T030000
  568.89 +RDATE:19840930T030000
  568.90 +RDATE:19850929T030000
  568.91 +RDATE:19860928T030000
  568.92 +RDATE:19870927T030000
  568.93 +RDATE:19880925T030000
  568.94 +RDATE:19890924T030000
  568.95 +RDATE:19900930T030000
  568.96 +RDATE:19910929T010000
  568.97 +RDATE:19920927T010000
  568.98 +RDATE:19930926T010000
  568.99 +RDATE:19940925T000000
 568.100 +RDATE:19950924T000000
 568.101 +RDATE:19961027T000000
 568.102 +END:STANDARD
 568.103 +BEGIN:STANDARD
 568.104 +TZOFFSETFROM:+0200
 568.105 +TZOFFSETTO:+0200
 568.106 +TZNAME:EET
 568.107 +DTSTART:19910101T000000
 568.108 +RDATE:19910101T000000
 568.109 +RDATE:19940101T000000
 568.110 +RDATE:19970101T000000
 568.111 +END:STANDARD
 568.112 +END:VTIMEZONE
 568.113 +END:VCALENDAR
   569.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   569.2 +++ b/src/zoneinfo-global/Europe/Budapest.ics	Tue Feb 10 18:12:00 2015 +0100
   569.3 @@ -0,0 +1,103 @@
   569.4 +BEGIN:VCALENDAR
   569.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   569.6 +VERSION:2.0
   569.7 +BEGIN:VTIMEZONE
   569.8 +TZID:Europe/Budapest
   569.9 +TZURL:http://tzurl.org/zoneinfo-global/Europe/Budapest
  569.10 +X-LIC-LOCATION:Europe/Budapest
  569.11 +BEGIN:DAYLIGHT
  569.12 +TZOFFSETFROM:+0100
  569.13 +TZOFFSETTO:+0200
  569.14 +TZNAME:CEST
  569.15 +DTSTART:19810329T020000
  569.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  569.17 +END:DAYLIGHT
  569.18 +BEGIN:STANDARD
  569.19 +TZOFFSETFROM:+0200
  569.20 +TZOFFSETTO:+0100
  569.21 +TZNAME:CET
  569.22 +DTSTART:19961027T030000
  569.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  569.24 +END:STANDARD
  569.25 +BEGIN:STANDARD
  569.26 +TZOFFSETFROM:+011620
  569.27 +TZOFFSETTO:+0100
  569.28 +TZNAME:CET
  569.29 +DTSTART:18901001T000000
  569.30 +RDATE:18901001T000000
  569.31 +END:STANDARD
  569.32 +BEGIN:DAYLIGHT
  569.33 +TZOFFSETFROM:+0100
  569.34 +TZOFFSETTO:+0200
  569.35 +TZNAME:CEST
  569.36 +DTSTART:19160430T230000
  569.37 +RDATE:19160430T230000
  569.38 +RDATE:19170416T020000
  569.39 +RDATE:19180401T030000
  569.40 +RDATE:19190415T030000
  569.41 +RDATE:19200405T030000
  569.42 +RDATE:19410406T020000
  569.43 +RDATE:19430329T020000
  569.44 +RDATE:19440403T020000
  569.45 +RDATE:19450501T230000
  569.46 +RDATE:19460331T020000
  569.47 +RDATE:19470406T020000
  569.48 +RDATE:19480404T020000
  569.49 +RDATE:19490410T020000
  569.50 +RDATE:19500417T020000
  569.51 +RDATE:19540523T000000
  569.52 +RDATE:19550523T000000
  569.53 +RDATE:19560603T000000
  569.54 +RDATE:19570602T010000
  569.55 +RDATE:19800406T010000
  569.56 +END:DAYLIGHT
  569.57 +BEGIN:STANDARD
  569.58 +TZOFFSETFROM:+0200
  569.59 +TZOFFSETTO:+0100
  569.60 +TZNAME:CET
  569.61 +DTSTART:19161001T010000
  569.62 +RDATE:19161001T010000
  569.63 +RDATE:19170917T030000
  569.64 +RDATE:19180929T030000
  569.65 +RDATE:19190915T030000
  569.66 +RDATE:19200930T030000
  569.67 +RDATE:19421102T030000
  569.68 +RDATE:19431004T030000
  569.69 +RDATE:19441002T030000
  569.70 +RDATE:19451103T000000
  569.71 +RDATE:19461006T030000
  569.72 +RDATE:19471005T030000
  569.73 +RDATE:19481003T030000
  569.74 +RDATE:19491002T030000
  569.75 +RDATE:19501023T030000
  569.76 +RDATE:19541003T000000
  569.77 +RDATE:19551003T000000
  569.78 +RDATE:19560930T000000
  569.79 +RDATE:19570929T030000
  569.80 +RDATE:19800928T030000
  569.81 +RDATE:19810927T030000
  569.82 +RDATE:19820926T030000
  569.83 +RDATE:19830925T030000
  569.84 +RDATE:19840930T030000
  569.85 +RDATE:19850929T030000
  569.86 +RDATE:19860928T030000
  569.87 +RDATE:19870927T030000
  569.88 +RDATE:19880925T030000
  569.89 +RDATE:19890924T030000
  569.90 +RDATE:19900930T030000
  569.91 +RDATE:19910929T030000
  569.92 +RDATE:19920927T030000
  569.93 +RDATE:19930926T030000
  569.94 +RDATE:19940925T030000
  569.95 +RDATE:19950924T030000
  569.96 +END:STANDARD
  569.97 +BEGIN:STANDARD
  569.98 +TZOFFSETFROM:+0100
  569.99 +TZOFFSETTO:+0100
 569.100 +TZNAME:CET
 569.101 +DTSTART:19180101T000000
 569.102 +RDATE:19180101T000000
 569.103 +RDATE:19450101T000000
 569.104 +END:STANDARD
 569.105 +END:VTIMEZONE
 569.106 +END:VCALENDAR
   570.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   570.2 +++ b/src/zoneinfo-global/Europe/Chisinau.ics	Tue Feb 10 18:12:00 2015 +0100
   570.3 @@ -0,0 +1,162 @@
   570.4 +BEGIN:VCALENDAR
   570.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   570.6 +VERSION:2.0
   570.7 +BEGIN:VTIMEZONE
   570.8 +TZID:Europe/Chisinau
   570.9 +TZURL:http://tzurl.org/zoneinfo-global/Europe/Chisinau
  570.10 +X-LIC-LOCATION:Europe/Chisinau
  570.11 +BEGIN:DAYLIGHT
  570.12 +TZOFFSETFROM:+0200
  570.13 +TZOFFSETTO:+0300
  570.14 +TZNAME:EEST
  570.15 +DTSTART:19970330T030000
  570.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  570.17 +END:DAYLIGHT
  570.18 +BEGIN:STANDARD
  570.19 +TZOFFSETFROM:+0300
  570.20 +TZOFFSETTO:+0200
  570.21 +TZNAME:EET
  570.22 +DTSTART:19971026T040000
  570.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  570.24 +END:STANDARD
  570.25 +BEGIN:STANDARD
  570.26 +TZOFFSETFROM:+015520
  570.27 +TZOFFSETTO:+0155
  570.28 +TZNAME:CMT
  570.29 +DTSTART:18800101T000000
  570.30 +RDATE:18800101T000000
  570.31 +END:STANDARD
  570.32 +BEGIN:STANDARD
  570.33 +TZOFFSETFROM:+0155
  570.34 +TZOFFSETTO:+014424
  570.35 +TZNAME:BMT
  570.36 +DTSTART:19180215T000000
  570.37 +RDATE:19180215T000000
  570.38 +END:STANDARD
  570.39 +BEGIN:STANDARD
  570.40 +TZOFFSETFROM:+014424
  570.41 +TZOFFSETTO:+0200
  570.42 +TZNAME:EET
  570.43 +DTSTART:19310724T000000
  570.44 +RDATE:19310724T000000
  570.45 +END:STANDARD
  570.46 +BEGIN:DAYLIGHT
  570.47 +TZOFFSETFROM:+0200
  570.48 +TZOFFSETTO:+0300
  570.49 +TZNAME:EEST
  570.50 +DTSTART:19320521T000000
  570.51 +RDATE:19320521T000000
  570.52 +RDATE:19330402T000000
  570.53 +RDATE:19340408T000000
  570.54 +RDATE:19350407T000000
  570.55 +RDATE:19360405T000000
  570.56 +RDATE:19370404T000000
  570.57 +RDATE:19380403T000000
  570.58 +RDATE:19390402T000000
  570.59 +RDATE:19400815T000000
  570.60 +RDATE:19910331T020000
  570.61 +RDATE:19920329T000000
  570.62 +RDATE:19930328T000000
  570.63 +RDATE:19940327T000000
  570.64 +RDATE:19950326T000000
  570.65 +RDATE:19960331T000000
  570.66 +END:DAYLIGHT
  570.67 +BEGIN:STANDARD
  570.68 +TZOFFSETFROM:+0300
  570.69 +TZOFFSETTO:+0200
  570.70 +TZNAME:EET
  570.71 +DTSTART:19321002T010000
  570.72 +RDATE:19321002T010000
  570.73 +RDATE:19331001T010000
  570.74 +RDATE:19341007T010000
  570.75 +RDATE:19351006T010000
  570.76 +RDATE:19361004T010000
  570.77 +RDATE:19371003T010000
  570.78 +RDATE:19381002T010000
  570.79 +RDATE:19391001T010000
  570.80 +RDATE:19900506T000000
  570.81 +RDATE:19910929T030000
  570.82 +RDATE:19920927T000000
  570.83 +RDATE:19930926T000000
  570.84 +RDATE:19940925T000000
  570.85 +RDATE:19950924T000000
  570.86 +RDATE:19961027T000000
  570.87 +END:STANDARD
  570.88 +BEGIN:DAYLIGHT
  570.89 +TZOFFSETFROM:+0300
  570.90 +TZOFFSETTO:+0200
  570.91 +TZNAME:CEST
  570.92 +DTSTART:19410717T000000
  570.93 +RDATE:19410717T000000
  570.94 +END:DAYLIGHT
  570.95 +BEGIN:STANDARD
  570.96 +TZOFFSETFROM:+0200
  570.97 +TZOFFSETTO:+0100
  570.98 +TZNAME:CET
  570.99 +DTSTART:19421102T030000
 570.100 +RDATE:19421102T030000
 570.101 +RDATE:19431004T030000
 570.102 +END:STANDARD
 570.103 +BEGIN:DAYLIGHT
 570.104 +TZOFFSETFROM:+0100
 570.105 +TZOFFSETTO:+0200
 570.106 +TZNAME:CEST
 570.107 +DTSTART:19430329T020000
 570.108 +RDATE:19430329T020000
 570.109 +RDATE:19440403T020000
 570.110 +END:DAYLIGHT
 570.111 +BEGIN:STANDARD
 570.112 +TZOFFSETFROM:+0200
 570.113 +TZOFFSETTO:+0300
 570.114 +TZNAME:MSK
 570.115 +DTSTART:19440824T000000
 570.116 +RDATE:19440824T000000
 570.117 +END:STANDARD
 570.118 +BEGIN:DAYLIGHT
 570.119 +TZOFFSETFROM:+0300
 570.120 +TZOFFSETTO:+0400
 570.121 +TZNAME:MSD
 570.122 +DTSTART:19810401T000000
 570.123 +RDATE:19810401T000000
 570.124 +RDATE:19820401T000000
 570.125 +RDATE:19830401T000000
 570.126 +RDATE:19840401T000000
 570.127 +RDATE:19850331T020000
 570.128 +RDATE:19860330T020000
 570.129 +RDATE:19870329T020000
 570.130 +RDATE:19880327T020000
 570.131 +RDATE:19890326T020000
 570.132 +END:DAYLIGHT
 570.133 +BEGIN:STANDARD
 570.134 +TZOFFSETFROM:+0400
 570.135 +TZOFFSETTO:+0300
 570.136 +TZNAME:MSK
 570.137 +DTSTART:19811001T000000
 570.138 +RDATE:19811001T000000
 570.139 +RDATE:19821001T000000
 570.140 +RDATE:19831001T000000
 570.141 +RDATE:19840930T030000
 570.142 +RDATE:19850929T030000
 570.143 +RDATE:19860928T030000
 570.144 +RDATE:19870927T030000
 570.145 +RDATE:19880925T030000
 570.146 +RDATE:19890924T030000
 570.147 +END:STANDARD
 570.148 +BEGIN:STANDARD
 570.149 +TZOFFSETFROM:+0300
 570.150 +TZOFFSETTO:+0300
 570.151 +TZNAME:MSK
 570.152 +DTSTART:19900101T000000
 570.153 +RDATE:19900101T000000
 570.154 +END:STANDARD
 570.155 +BEGIN:STANDARD
 570.156 +TZOFFSETFROM:+0200
 570.157 +TZOFFSETTO:+0200
 570.158 +TZNAME:EET
 570.159 +DTSTART:19910101T000000
 570.160 +RDATE:19910101T000000
 570.161 +RDATE:19920101T000000
 570.162 +RDATE:19970101T000000
 570.163 +END:STANDARD
 570.164 +END:VTIMEZONE
 570.165 +END:VCALENDAR
   571.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   571.2 +++ b/src/zoneinfo-global/Europe/Copenhagen.ics	Tue Feb 10 18:12:00 2015 +0100
   571.3 @@ -0,0 +1,89 @@
   571.4 +BEGIN:VCALENDAR
   571.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   571.6 +VERSION:2.0
   571.7 +BEGIN:VTIMEZONE
   571.8 +TZID:Europe/Copenhagen
   571.9 +TZURL:http://tzurl.org/zoneinfo-global/Europe/Copenhagen
  571.10 +X-LIC-LOCATION:Europe/Copenhagen
  571.11 +BEGIN:DAYLIGHT
  571.12 +TZOFFSETFROM:+0100
  571.13 +TZOFFSETTO:+0200
  571.14 +TZNAME:CEST
  571.15 +DTSTART:19810329T020000
  571.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  571.17 +END:DAYLIGHT
  571.18 +BEGIN:STANDARD
  571.19 +TZOFFSETFROM:+0200
  571.20 +TZOFFSETTO:+0100
  571.21 +TZNAME:CET
  571.22 +DTSTART:19961027T030000
  571.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  571.24 +END:STANDARD
  571.25 +BEGIN:STANDARD
  571.26 +TZOFFSETFROM:+005020
  571.27 +TZOFFSETTO:+005020
  571.28 +TZNAME:CMT
  571.29 +DTSTART:18900101T000000
  571.30 +RDATE:18900101T000000
  571.31 +END:STANDARD
  571.32 +BEGIN:STANDARD
  571.33 +TZOFFSETFROM:+005020
  571.34 +TZOFFSETTO:+0100
  571.35 +TZNAME:CET
  571.36 +DTSTART:18940101T000000
  571.37 +RDATE:18940101T000000
  571.38 +END:STANDARD
  571.39 +BEGIN:DAYLIGHT
  571.40 +TZOFFSETFROM:+0100
  571.41 +TZOFFSETTO:+0200
  571.42 +TZNAME:CEST
  571.43 +DTSTART:19160514T230000
  571.44 +RDATE:19160514T230000
  571.45 +RDATE:19400515T000000
  571.46 +RDATE:19430329T020000
  571.47 +RDATE:19440403T020000
  571.48 +RDATE:19450402T020000
  571.49 +RDATE:19460501T020000
  571.50 +RDATE:19470504T020000
  571.51 +RDATE:19480509T020000
  571.52 +RDATE:19800406T020000
  571.53 +END:DAYLIGHT
  571.54 +BEGIN:STANDARD
  571.55 +TZOFFSETFROM:+0200
  571.56 +TZOFFSETTO:+0100
  571.57 +TZNAME:CET
  571.58 +DTSTART:19160930T230000
  571.59 +RDATE:19160930T230000
  571.60 +RDATE:19421102T030000
  571.61 +RDATE:19431004T030000
  571.62 +RDATE:19441002T030000
  571.63 +RDATE:19450815T030000
  571.64 +RDATE:19460901T030000
  571.65 +RDATE:19470810T030000
  571.66 +RDATE:19480808T030000
  571.67 +RDATE:19800928T030000
  571.68 +RDATE:19810927T030000
  571.69 +RDATE:19820926T030000
  571.70 +RDATE:19830925T030000
  571.71 +RDATE:19840930T030000
  571.72 +RDATE:19850929T030000
  571.73 +RDATE:19860928T030000
  571.74 +RDATE:19870927T030000
  571.75 +RDATE:19880925T030000
  571.76 +RDATE:19890924T030000
  571.77 +RDATE:19900930T030000
  571.78 +RDATE:19910929T030000
  571.79 +RDATE:19920927T030000
  571.80 +RDATE:19930926T030000
  571.81 +RDATE:19940925T030000
  571.82 +RDATE:19950924T030000
  571.83 +END:STANDARD
  571.84 +BEGIN:STANDARD
  571.85 +TZOFFSETFROM:+0100
  571.86 +TZOFFSETTO:+0100
  571.87 +TZNAME:CET
  571.88 +DTSTART:19800101T000000
  571.89 +RDATE:19800101T000000
  571.90 +END:STANDARD
  571.91 +END:VTIMEZONE
  571.92 +END:VCALENDAR
   572.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   572.2 +++ b/src/zoneinfo-global/Europe/Dublin.ics	Tue Feb 10 18:12:00 2015 +0100
   572.3 @@ -0,0 +1,202 @@
   572.4 +BEGIN:VCALENDAR
   572.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   572.6 +VERSION:2.0
   572.7 +BEGIN:VTIMEZONE
   572.8 +TZID:Europe/Dublin
   572.9 +TZURL:http://tzurl.org/zoneinfo-global/Europe/Dublin
  572.10 +X-LIC-LOCATION:Europe/Dublin
  572.11 +BEGIN:DAYLIGHT
  572.12 +TZOFFSETFROM:+0000
  572.13 +TZOFFSETTO:+0100
  572.14 +TZNAME:IST
  572.15 +DTSTART:19810329T010000
  572.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  572.17 +END:DAYLIGHT
  572.18 +BEGIN:STANDARD
  572.19 +TZOFFSETFROM:+0100
  572.20 +TZOFFSETTO:+0000
  572.21 +TZNAME:GMT
  572.22 +DTSTART:19961027T020000
  572.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  572.24 +END:STANDARD
  572.25 +BEGIN:STANDARD
  572.26 +TZOFFSETFROM:-0025
  572.27 +TZOFFSETTO:-002521
  572.28 +TZNAME:DMT
  572.29 +DTSTART:18800802T000000
  572.30 +RDATE:18800802T000000
  572.31 +END:STANDARD
  572.32 +BEGIN:DAYLIGHT
  572.33 +TZOFFSETFROM:-002521
  572.34 +TZOFFSETTO:+003439
  572.35 +TZNAME:IST
  572.36 +DTSTART:19160521T020000
  572.37 +RDATE:19160521T020000
  572.38 +END:DAYLIGHT
  572.39 +BEGIN:STANDARD
  572.40 +TZOFFSETFROM:+003439
  572.41 +TZOFFSETTO:+0000
  572.42 +TZNAME:GMT
  572.43 +DTSTART:19161001T030000
  572.44 +RDATE:19161001T030000
  572.45 +END:STANDARD
  572.46 +BEGIN:DAYLIGHT
  572.47 +TZOFFSETFROM:+0000
  572.48 +TZOFFSETTO:+0100
  572.49 +TZNAME:BST
  572.50 +DTSTART:19170408T020000
  572.51 +RDATE:19170408T020000
  572.52 +RDATE:19180324T020000
  572.53 +RDATE:19190330T020000
  572.54 +RDATE:19200328T020000
  572.55 +RDATE:19210403T020000
  572.56 +END:DAYLIGHT
  572.57 +BEGIN:STANDARD
  572.58 +TZOFFSETFROM:+0100
  572.59 +TZOFFSETTO:+0000
  572.60 +TZNAME:GMT
  572.61 +DTSTART:19170917T030000
  572.62 +RDATE:19170917T030000
  572.63 +RDATE:19180930T030000
  572.64 +RDATE:19190929T030000
  572.65 +RDATE:19201025T030000
  572.66 +RDATE:19211003T030000
  572.67 +RDATE:19221008T030000
  572.68 +RDATE:19230916T030000
  572.69 +RDATE:19240921T030000
  572.70 +RDATE:19251004T030000
  572.71 +RDATE:19261003T030000
  572.72 +RDATE:19271002T030000
  572.73 +RDATE:19281007T030000
  572.74 +RDATE:19291006T030000
  572.75 +RDATE:19301005T030000
  572.76 +RDATE:19311004T030000
  572.77 +RDATE:19321002T030000
  572.78 +RDATE:19331008T030000
  572.79 +RDATE:19341007T030000
  572.80 +RDATE:19351006T030000
  572.81 +RDATE:19361004T030000
  572.82 +RDATE:19371003T030000
  572.83 +RDATE:19381002T030000
  572.84 +RDATE:19391119T030000
  572.85 +RDATE:19461006T020000
  572.86 +RDATE:19471102T020000
  572.87 +RDATE:19481031T030000
  572.88 +RDATE:19491030T030000
  572.89 +RDATE:19501022T030000
  572.90 +RDATE:19511021T030000
  572.91 +RDATE:19521026T030000
  572.92 +RDATE:19531004T030000
  572.93 +RDATE:19541003T030000
  572.94 +RDATE:19551002T030000
  572.95 +RDATE:19561007T030000
  572.96 +RDATE:19571006T030000
  572.97 +RDATE:19581005T030000
  572.98 +RDATE:19591004T030000
  572.99 +RDATE:19601002T030000
 572.100 +RDATE:19611029T030000
 572.101 +RDATE:19621028T030000
 572.102 +RDATE:19631027T030000
 572.103 +RDATE:19641025T030000
 572.104 +RDATE:19651024T030000
 572.105 +RDATE:19661023T030000
 572.106 +RDATE:19671029T030000
 572.107 +RDATE:19711031T030000
 572.108 +RDATE:19721029T030000
 572.109 +RDATE:19731028T030000
 572.110 +RDATE:19741027T030000
 572.111 +RDATE:19751026T030000
 572.112 +RDATE:19761024T030000
 572.113 +RDATE:19771023T030000
 572.114 +RDATE:19781029T030000
 572.115 +RDATE:19791028T030000
 572.116 +RDATE:19801026T030000
 572.117 +RDATE:19811025T020000
 572.118 +RDATE:19821024T020000
 572.119 +RDATE:19831023T020000
 572.120 +RDATE:19841028T020000
 572.121 +RDATE:19851027T020000
 572.122 +RDATE:19861026T020000
 572.123 +RDATE:19871025T020000
 572.124 +RDATE:19881023T020000
 572.125 +RDATE:19891029T020000
 572.126 +RDATE:19901028T020000
 572.127 +RDATE:19911027T020000
 572.128 +RDATE:19921025T020000
 572.129 +RDATE:19931024T020000
 572.130 +RDATE:19941023T020000
 572.131 +RDATE:19951022T020000
 572.132 +END:STANDARD
 572.133 +BEGIN:STANDARD
 572.134 +TZOFFSETFROM:+0000
 572.135 +TZOFFSETTO:+0000
 572.136 +TZNAME:GMT
 572.137 +DTSTART:19211206T000000
 572.138 +RDATE:19211206T000000
 572.139 +RDATE:19960101T000000
 572.140 +END:STANDARD
 572.141 +BEGIN:DAYLIGHT
 572.142 +TZOFFSETFROM:+0000
 572.143 +TZOFFSETTO:+0100
 572.144 +TZNAME:IST
 572.145 +DTSTART:19220326T020000
 572.146 +RDATE:19220326T020000
 572.147 +RDATE:19230422T020000
 572.148 +RDATE:19240413T020000
 572.149 +RDATE:19250419T020000
 572.150 +RDATE:19260418T020000
 572.151 +RDATE:19270410T020000
 572.152 +RDATE:19280422T020000
 572.153 +RDATE:19290421T020000
 572.154 +RDATE:19300413T020000
 572.155 +RDATE:19310419T020000
 572.156 +RDATE:19320417T020000
 572.157 +RDATE:19330409T020000
 572.158 +RDATE:19340422T020000
 572.159 +RDATE:19350414T020000
 572.160 +RDATE:19360419T020000
 572.161 +RDATE:19370418T020000
 572.162 +RDATE:19380410T020000
 572.163 +RDATE:19390416T020000
 572.164 +RDATE:19400225T020000
 572.165 +RDATE:19470316T020000
 572.166 +RDATE:19480418T020000
 572.167 +RDATE:19490403T020000
 572.168 +RDATE:19500416T020000
 572.169 +RDATE:19510415T020000
 572.170 +RDATE:19520420T020000
 572.171 +RDATE:19530419T020000
 572.172 +RDATE:19540411T020000
 572.173 +RDATE:19550417T020000
 572.174 +RDATE:19560422T020000
 572.175 +RDATE:19570414T020000
 572.176 +RDATE:19580420T020000
 572.177 +RDATE:19590419T020000
 572.178 +RDATE:19600410T020000
 572.179 +RDATE:19610326T020000
 572.180 +RDATE:19620325T020000
 572.181 +RDATE:19630331T020000
 572.182 +RDATE:19640322T020000
 572.183 +RDATE:19650321T020000
 572.184 +RDATE:19660320T020000
 572.185 +RDATE:19670319T020000
 572.186 +RDATE:19680218T020000
 572.187 +RDATE:19720319T020000
 572.188 +RDATE:19730318T020000
 572.189 +RDATE:19740317T020000
 572.190 +RDATE:19750316T020000
 572.191 +RDATE:19760321T020000
 572.192 +RDATE:19770320T020000
 572.193 +RDATE:19780319T020000
 572.194 +RDATE:19790318T020000
 572.195 +RDATE:19800316T020000
 572.196 +END:DAYLIGHT
 572.197 +BEGIN:STANDARD
 572.198 +TZOFFSETFROM:+0100
 572.199 +TZOFFSETTO:+0100
 572.200 +TZNAME:IST
 572.201 +DTSTART:19681027T000000
 572.202 +RDATE:19681027T000000
 572.203 +END:STANDARD
 572.204 +END:VTIMEZONE
 572.205 +END:VCALENDAR
   573.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   573.2 +++ b/src/zoneinfo-global/Europe/Gibraltar.ics	Tue Feb 10 18:12:00 2015 +0100
   573.3 @@ -0,0 +1,172 @@
   573.4 +BEGIN:VCALENDAR
   573.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   573.6 +VERSION:2.0
   573.7 +BEGIN:VTIMEZONE
   573.8 +TZID:Europe/Gibraltar
   573.9 +TZURL:http://tzurl.org/zoneinfo-global/Europe/Gibraltar
  573.10 +X-LIC-LOCATION:Europe/Gibraltar
  573.11 +BEGIN:DAYLIGHT
  573.12 +TZOFFSETFROM:+0100
  573.13 +TZOFFSETTO:+0200
  573.14 +TZNAME:CEST
  573.15 +DTSTART:19820328T020000
  573.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  573.17 +END:DAYLIGHT
  573.18 +BEGIN:STANDARD
  573.19 +TZOFFSETFROM:+0200
  573.20 +TZOFFSETTO:+0100
  573.21 +TZNAME:CET
  573.22 +DTSTART:19961027T030000
  573.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  573.24 +END:STANDARD
  573.25 +BEGIN:STANDARD
  573.26 +TZOFFSETFROM:-002124
  573.27 +TZOFFSETTO:+0000
  573.28 +TZNAME:GMT
  573.29 +DTSTART:18800802T000000
  573.30 +RDATE:18800802T000000
  573.31 +END:STANDARD
  573.32 +BEGIN:DAYLIGHT
  573.33 +TZOFFSETFROM:+0000
  573.34 +TZOFFSETTO:+0100
  573.35 +TZNAME:BST
  573.36 +DTSTART:19160521T020000
  573.37 +RDATE:19160521T020000
  573.38 +RDATE:19170408T020000
  573.39 +RDATE:19180324T020000
  573.40 +RDATE:19190330T020000
  573.41 +RDATE:19200328T020000
  573.42 +RDATE:19210403T020000
  573.43 +RDATE:19220326T020000
  573.44 +RDATE:19230422T020000
  573.45 +RDATE:19240413T020000
  573.46 +RDATE:19250419T020000
  573.47 +RDATE:19260418T020000
  573.48 +RDATE:19270410T020000
  573.49 +RDATE:19280422T020000
  573.50 +RDATE:19290421T020000
  573.51 +RDATE:19300413T020000
  573.52 +RDATE:19310419T020000
  573.53 +RDATE:19320417T020000
  573.54 +RDATE:19330409T020000
  573.55 +RDATE:19340422T020000
  573.56 +RDATE:19350414T020000
  573.57 +RDATE:19360419T020000
  573.58 +RDATE:19370418T020000
  573.59 +RDATE:19380410T020000
  573.60 +RDATE:19390416T020000
  573.61 +RDATE:19400225T020000
  573.62 +RDATE:19460414T020000
  573.63 +RDATE:19470316T020000
  573.64 +RDATE:19480314T020000
  573.65 +RDATE:19490403T020000
  573.66 +RDATE:19500416T020000
  573.67 +RDATE:19510415T020000
  573.68 +RDATE:19520420T020000
  573.69 +RDATE:19530419T020000
  573.70 +RDATE:19540411T020000
  573.71 +RDATE:19550417T020000
  573.72 +RDATE:19560422T020000
  573.73 +END:DAYLIGHT
  573.74 +BEGIN:STANDARD
  573.75 +TZOFFSETFROM:+0100
  573.76 +TZOFFSETTO:+0000
  573.77 +TZNAME:GMT
  573.78 +DTSTART:19161001T030000
  573.79 +RDATE:19161001T030000
  573.80 +RDATE:19170917T030000
  573.81 +RDATE:19180930T030000
  573.82 +RDATE:19190929T030000
  573.83 +RDATE:19201025T030000
  573.84 +RDATE:19211003T030000
  573.85 +RDATE:19221008T030000
  573.86 +RDATE:19230916T030000
  573.87 +RDATE:19240921T030000
  573.88 +RDATE:19251004T030000
  573.89 +RDATE:19261003T030000
  573.90 +RDATE:19271002T030000
  573.91 +RDATE:19281007T030000
  573.92 +RDATE:19291006T030000
  573.93 +RDATE:19301005T030000
  573.94 +RDATE:19311004T030000
  573.95 +RDATE:19321002T030000
  573.96 +RDATE:19331008T030000
  573.97 +RDATE:19341007T030000
  573.98 +RDATE:19351006T030000
  573.99 +RDATE:19361004T030000
 573.100 +RDATE:19371003T030000
 573.101 +RDATE:19381002T030000
 573.102 +RDATE:19391119T030000
 573.103 +RDATE:19451007T030000
 573.104 +RDATE:19461006T030000
 573.105 +RDATE:19471102T030000
 573.106 +RDATE:19481031T030000
 573.107 +RDATE:19491030T030000
 573.108 +RDATE:19501022T030000
 573.109 +RDATE:19511021T030000
 573.110 +RDATE:19521026T030000
 573.111 +RDATE:19531004T030000
 573.112 +RDATE:19541003T030000
 573.113 +RDATE:19551002T030000
 573.114 +RDATE:19561007T030000
 573.115 +END:STANDARD
 573.116 +BEGIN:DAYLIGHT
 573.117 +TZOFFSETFROM:+0100
 573.118 +TZOFFSETTO:+0200
 573.119 +TZNAME:BDST
 573.120 +DTSTART:19410504T020000
 573.121 +RDATE:19410504T020000
 573.122 +RDATE:19420405T020000
 573.123 +RDATE:19430404T020000
 573.124 +RDATE:19440402T020000
 573.125 +RDATE:19450402T020000
 573.126 +RDATE:19470413T020000
 573.127 +END:DAYLIGHT
 573.128 +BEGIN:DAYLIGHT
 573.129 +TZOFFSETFROM:+0200
 573.130 +TZOFFSETTO:+0100
 573.131 +TZNAME:BST
 573.132 +DTSTART:19410810T030000
 573.133 +RDATE:19410810T030000
 573.134 +RDATE:19420809T030000
 573.135 +RDATE:19430815T030000
 573.136 +RDATE:19440917T030000
 573.137 +RDATE:19450715T030000
 573.138 +RDATE:19470810T030000
 573.139 +END:DAYLIGHT
 573.140 +BEGIN:STANDARD
 573.141 +TZOFFSETFROM:+0000
 573.142 +TZOFFSETTO:+0100
 573.143 +TZNAME:CET
 573.144 +DTSTART:19570414T020000
 573.145 +RDATE:19570414T020000
 573.146 +END:STANDARD
 573.147 +BEGIN:STANDARD
 573.148 +TZOFFSETFROM:+0100
 573.149 +TZOFFSETTO:+0100
 573.150 +TZNAME:CET
 573.151 +DTSTART:19820101T000000
 573.152 +RDATE:19820101T000000
 573.153 +END:STANDARD
 573.154 +BEGIN:STANDARD
 573.155 +TZOFFSETFROM:+0200
 573.156 +TZOFFSETTO:+0100
 573.157 +TZNAME:CET
 573.158 +DTSTART:19820926T030000
 573.159 +RDATE:19820926T030000
 573.160 +RDATE:19830925T030000
 573.161 +RDATE:19840930T030000
 573.162 +RDATE:19850929T030000
 573.163 +RDATE:19860928T030000
 573.164 +RDATE:19870927T030000
 573.165 +RDATE:19880925T030000
 573.166 +RDATE:19890924T030000
 573.167 +RDATE:19900930T030000
 573.168 +RDATE:19910929T030000
 573.169 +RDATE:19920927T030000
 573.170 +RDATE:19930926T030000
 573.171 +RDATE:19940925T030000
 573.172 +RDATE:19950924T030000
 573.173 +END:STANDARD
 573.174 +END:VTIMEZONE
 573.175 +END:VCALENDAR
   574.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   574.2 +++ b/src/zoneinfo-global/Europe/Guernsey.ics	Tue Feb 10 18:12:00 2015 +0100
   574.3 @@ -0,0 +1,209 @@
   574.4 +BEGIN:VCALENDAR
   574.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   574.6 +VERSION:2.0
   574.7 +BEGIN:VTIMEZONE
   574.8 +TZID:Europe/Guernsey
   574.9 +TZURL:http://tzurl.org/zoneinfo-global/Europe/Guernsey
  574.10 +X-LIC-LOCATION:Europe/Guernsey
  574.11 +BEGIN:DAYLIGHT
  574.12 +TZOFFSETFROM:+0000
  574.13 +TZOFFSETTO:+0100
  574.14 +TZNAME:BST
  574.15 +DTSTART:19810329T010000
  574.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  574.17 +END:DAYLIGHT
  574.18 +BEGIN:STANDARD
  574.19 +TZOFFSETFROM:+0100
  574.20 +TZOFFSETTO:+0000
  574.21 +TZNAME:GMT
  574.22 +DTSTART:19961027T020000
  574.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  574.24 +END:STANDARD
  574.25 +BEGIN:STANDARD
  574.26 +TZOFFSETFROM:-000115
  574.27 +TZOFFSETTO:+0000
  574.28 +TZNAME:GMT
  574.29 +DTSTART:18471201T000000
  574.30 +RDATE:18471201T000000
  574.31 +END:STANDARD
  574.32 +BEGIN:DAYLIGHT
  574.33 +TZOFFSETFROM:+0000
  574.34 +TZOFFSETTO:+0100
  574.35 +TZNAME:BST
  574.36 +DTSTART:19160521T020000
  574.37 +RDATE:19160521T020000
  574.38 +RDATE:19170408T020000
  574.39 +RDATE:19180324T020000
  574.40 +RDATE:19190330T020000
  574.41 +RDATE:19200328T020000
  574.42 +RDATE:19210403T020000
  574.43 +RDATE:19220326T020000
  574.44 +RDATE:19230422T020000
  574.45 +RDATE:19240413T020000
  574.46 +RDATE:19250419T020000
  574.47 +RDATE:19260418T020000
  574.48 +RDATE:19270410T020000
  574.49 +RDATE:19280422T020000
  574.50 +RDATE:19290421T020000
  574.51 +RDATE:19300413T020000
  574.52 +RDATE:19310419T020000
  574.53 +RDATE:19320417T020000
  574.54 +RDATE:19330409T020000
  574.55 +RDATE:19340422T020000
  574.56 +RDATE:19350414T020000
  574.57 +RDATE:19360419T020000
  574.58 +RDATE:19370418T020000
  574.59 +RDATE:19380410T020000
  574.60 +RDATE:19390416T020000
  574.61 +RDATE:19400225T020000
  574.62 +RDATE:19460414T020000
  574.63 +RDATE:19470316T020000
  574.64 +RDATE:19480314T020000
  574.65 +RDATE:19490403T020000
  574.66 +RDATE:19500416T020000
  574.67 +RDATE:19510415T020000
  574.68 +RDATE:19520420T020000
  574.69 +RDATE:19530419T020000
  574.70 +RDATE:19540411T020000
  574.71 +RDATE:19550417T020000
  574.72 +RDATE:19560422T020000
  574.73 +RDATE:19570414T020000
  574.74 +RDATE:19580420T020000
  574.75 +RDATE:19590419T020000
  574.76 +RDATE:19600410T020000
  574.77 +RDATE:19610326T020000
  574.78 +RDATE:19620325T020000
  574.79 +RDATE:19630331T020000
  574.80 +RDATE:19640322T020000
  574.81 +RDATE:19650321T020000
  574.82 +RDATE:19660320T020000
  574.83 +RDATE:19670319T020000
  574.84 +RDATE:19680218T020000
  574.85 +RDATE:19720319T020000
  574.86 +RDATE:19730318T020000
  574.87 +RDATE:19740317T020000
  574.88 +RDATE:19750316T020000
  574.89 +RDATE:19760321T020000
  574.90 +RDATE:19770320T020000
  574.91 +RDATE:19780319T020000
  574.92 +RDATE:19790318T020000
  574.93 +RDATE:19800316T020000
  574.94 +END:DAYLIGHT
  574.95 +BEGIN:STANDARD
  574.96 +TZOFFSETFROM:+0100
  574.97 +TZOFFSETTO:+0000
  574.98 +TZNAME:GMT
  574.99 +DTSTART:19161001T030000
 574.100 +RDATE:19161001T030000
 574.101 +RDATE:19170917T030000
 574.102 +RDATE:19180930T030000
 574.103 +RDATE:19190929T030000
 574.104 +RDATE:19201025T030000
 574.105 +RDATE:19211003T030000
 574.106 +RDATE:19221008T030000
 574.107 +RDATE:19230916T030000
 574.108 +RDATE:19240921T030000
 574.109 +RDATE:19251004T030000
 574.110 +RDATE:19261003T030000
 574.111 +RDATE:19271002T030000
 574.112 +RDATE:19281007T030000
 574.113 +RDATE:19291006T030000
 574.114 +RDATE:19301005T030000
 574.115 +RDATE:19311004T030000
 574.116 +RDATE:19321002T030000
 574.117 +RDATE:19331008T030000
 574.118 +RDATE:19341007T030000
 574.119 +RDATE:19351006T030000
 574.120 +RDATE:19361004T030000
 574.121 +RDATE:19371003T030000
 574.122 +RDATE:19381002T030000
 574.123 +RDATE:19391119T030000
 574.124 +RDATE:19451007T030000
 574.125 +RDATE:19461006T030000
 574.126 +RDATE:19471102T030000
 574.127 +RDATE:19481031T030000
 574.128 +RDATE:19491030T030000
 574.129 +RDATE:19501022T030000
 574.130 +RDATE:19511021T030000
 574.131 +RDATE:19521026T030000
 574.132 +RDATE:19531004T030000
 574.133 +RDATE:19541003T030000
 574.134 +RDATE:19551002T030000
 574.135 +RDATE:19561007T030000
 574.136 +RDATE:19571006T030000
 574.137 +RDATE:19581005T030000
 574.138 +RDATE:19591004T030000
 574.139 +RDATE:19601002T030000
 574.140 +RDATE:19611029T030000
 574.141 +RDATE:19621028T030000
 574.142 +RDATE:19631027T030000
 574.143 +RDATE:19641025T030000
 574.144 +RDATE:19651024T030000
 574.145 +RDATE:19661023T030000
 574.146 +RDATE:19671029T030000
 574.147 +RDATE:19711031T030000
 574.148 +RDATE:19721029T030000
 574.149 +RDATE:19731028T030000
 574.150 +RDATE:19741027T030000
 574.151 +RDATE:19751026T030000
 574.152 +RDATE:19761024T030000
 574.153 +RDATE:19771023T030000
 574.154 +RDATE:19781029T030000
 574.155 +RDATE:19791028T030000
 574.156 +RDATE:19801026T030000
 574.157 +RDATE:19811025T020000
 574.158 +RDATE:19821024T020000
 574.159 +RDATE:19831023T020000
 574.160 +RDATE:19841028T020000
 574.161 +RDATE:19851027T020000
 574.162 +RDATE:19861026T020000
 574.163 +RDATE:19871025T020000
 574.164 +RDATE:19881023T020000
 574.165 +RDATE:19891029T020000
 574.166 +RDATE:19901028T020000
 574.167 +RDATE:19911027T020000
 574.168 +RDATE:19921025T020000
 574.169 +RDATE:19931024T020000
 574.170 +RDATE:19941023T020000
 574.171 +RDATE:19951022T020000
 574.172 +END:STANDARD
 574.173 +BEGIN:DAYLIGHT
 574.174 +TZOFFSETFROM:+0100
 574.175 +TZOFFSETTO:+0200
 574.176 +TZNAME:BDST
 574.177 +DTSTART:19410504T020000
 574.178 +RDATE:19410504T020000
 574.179 +RDATE:19420405T020000
 574.180 +RDATE:19430404T020000
 574.181 +RDATE:19440402T020000
 574.182 +RDATE:19450402T020000
 574.183 +RDATE:19470413T020000
 574.184 +END:DAYLIGHT
 574.185 +BEGIN:DAYLIGHT
 574.186 +TZOFFSETFROM:+0200
 574.187 +TZOFFSETTO:+0100
 574.188 +TZNAME:BST
 574.189 +DTSTART:19410810T030000
 574.190 +RDATE:19410810T030000
 574.191 +RDATE:19420809T030000
 574.192 +RDATE:19430815T030000
 574.193 +RDATE:19440917T030000
 574.194 +RDATE:19450715T030000
 574.195 +RDATE:19470810T030000
 574.196 +END:DAYLIGHT
 574.197 +BEGIN:STANDARD
 574.198 +TZOFFSETFROM:+0100
 574.199 +TZOFFSETTO:+0100
 574.200 +TZNAME:BST
 574.201 +DTSTART:19681027T000000
 574.202 +RDATE:19681027T000000
 574.203 +END:STANDARD
 574.204 +BEGIN:STANDARD
 574.205 +TZOFFSETFROM:+0000
 574.206 +TZOFFSETTO:+0000
 574.207 +TZNAME:GMT
 574.208 +DTSTART:19960101T000000
 574.209 +RDATE:19960101T000000
 574.210 +END:STANDARD
 574.211 +END:VTIMEZONE
 574.212 +END:VCALENDAR
   575.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   575.2 +++ b/src/zoneinfo-global/Europe/Helsinki.ics	Tue Feb 10 18:12:00 2015 +0100
   575.3 @@ -0,0 +1,75 @@
   575.4 +BEGIN:VCALENDAR
   575.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   575.6 +VERSION:2.0
   575.7 +BEGIN:VTIMEZONE
   575.8 +TZID:Europe/Helsinki
   575.9 +TZURL:http://tzurl.org/zoneinfo-global/Europe/Helsinki
  575.10 +X-LIC-LOCATION:Europe/Helsinki
  575.11 +BEGIN:DAYLIGHT
  575.12 +TZOFFSETFROM:+0200
  575.13 +TZOFFSETTO:+0300
  575.14 +TZNAME:EEST
  575.15 +DTSTART:19830327T030000
  575.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  575.17 +END:DAYLIGHT
  575.18 +BEGIN:STANDARD
  575.19 +TZOFFSETFROM:+0300
  575.20 +TZOFFSETTO:+0200
  575.21 +TZNAME:EET
  575.22 +DTSTART:19961027T040000
  575.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  575.24 +END:STANDARD
  575.25 +BEGIN:STANDARD
  575.26 +TZOFFSETFROM:+013952
  575.27 +TZOFFSETTO:+013952
  575.28 +TZNAME:HMT
  575.29 +DTSTART:18780531T000000
  575.30 +RDATE:18780531T000000
  575.31 +END:STANDARD
  575.32 +BEGIN:STANDARD
  575.33 +TZOFFSETFROM:+013952
  575.34 +TZOFFSETTO:+0200
  575.35 +TZNAME:EET
  575.36 +DTSTART:19210501T000000
  575.37 +RDATE:19210501T000000
  575.38 +END:STANDARD
  575.39 +BEGIN:DAYLIGHT
  575.40 +TZOFFSETFROM:+0200
  575.41 +TZOFFSETTO:+0300
  575.42 +TZNAME:EEST
  575.43 +DTSTART:19420403T000000
  575.44 +RDATE:19420403T000000
  575.45 +RDATE:19810329T020000
  575.46 +RDATE:19820328T020000
  575.47 +END:DAYLIGHT
  575.48 +BEGIN:STANDARD
  575.49 +TZOFFSETFROM:+0300
  575.50 +TZOFFSETTO:+0200
  575.51 +TZNAME:EET
  575.52 +DTSTART:19421003T000000
  575.53 +RDATE:19421003T000000
  575.54 +RDATE:19810927T030000
  575.55 +RDATE:19820926T030000
  575.56 +RDATE:19830925T040000
  575.57 +RDATE:19840930T040000
  575.58 +RDATE:19850929T040000
  575.59 +RDATE:19860928T040000
  575.60 +RDATE:19870927T040000
  575.61 +RDATE:19880925T040000
  575.62 +RDATE:19890924T040000
  575.63 +RDATE:19900930T040000
  575.64 +RDATE:19910929T040000
  575.65 +RDATE:19920927T040000
  575.66 +RDATE:19930926T040000
  575.67 +RDATE:19940925T040000
  575.68 +RDATE:19950924T040000
  575.69 +END:STANDARD
  575.70 +BEGIN:STANDARD
  575.71 +TZOFFSETFROM:+0200
  575.72 +TZOFFSETTO:+0200
  575.73 +TZNAME:EET
  575.74 +DTSTART:19830101T000000
  575.75 +RDATE:19830101T000000
  575.76 +END:STANDARD
  575.77 +END:VTIMEZONE
  575.78 +END:VCALENDAR
   576.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   576.2 +++ b/src/zoneinfo-global/Europe/Isle_of_Man.ics	Tue Feb 10 18:12:00 2015 +0100
   576.3 @@ -0,0 +1,209 @@
   576.4 +BEGIN:VCALENDAR
   576.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   576.6 +VERSION:2.0
   576.7 +BEGIN:VTIMEZONE
   576.8 +TZID:Europe/Isle_of_Man
   576.9 +TZURL:http://tzurl.org/zoneinfo-global/Europe/Isle_of_Man
  576.10 +X-LIC-LOCATION:Europe/Isle_of_Man
  576.11 +BEGIN:DAYLIGHT
  576.12 +TZOFFSETFROM:+0000
  576.13 +TZOFFSETTO:+0100
  576.14 +TZNAME:BST
  576.15 +DTSTART:19810329T010000
  576.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  576.17 +END:DAYLIGHT
  576.18 +BEGIN:STANDARD
  576.19 +TZOFFSETFROM:+0100
  576.20 +TZOFFSETTO:+0000
  576.21 +TZNAME:GMT
  576.22 +DTSTART:19961027T020000
  576.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  576.24 +END:STANDARD
  576.25 +BEGIN:STANDARD
  576.26 +TZOFFSETFROM:-000115
  576.27 +TZOFFSETTO:+0000
  576.28 +TZNAME:GMT
  576.29 +DTSTART:18471201T000000
  576.30 +RDATE:18471201T000000
  576.31 +END:STANDARD
  576.32 +BEGIN:DAYLIGHT
  576.33 +TZOFFSETFROM:+0000
  576.34 +TZOFFSETTO:+0100
  576.35 +TZNAME:BST
  576.36 +DTSTART:19160521T020000
  576.37 +RDATE:19160521T020000
  576.38 +RDATE:19170408T020000
  576.39 +RDATE:19180324T020000
  576.40 +RDATE:19190330T020000
  576.41 +RDATE:19200328T020000
  576.42 +RDATE:19210403T020000
  576.43 +RDATE:19220326T020000
  576.44 +RDATE:19230422T020000
  576.45 +RDATE:19240413T020000
  576.46 +RDATE:19250419T020000
  576.47 +RDATE:19260418T020000
  576.48 +RDATE:19270410T020000
  576.49 +RDATE:19280422T020000
  576.50 +RDATE:19290421T020000
  576.51 +RDATE:19300413T020000
  576.52 +RDATE:19310419T020000
  576.53 +RDATE:19320417T020000
  576.54 +RDATE:19330409T020000
  576.55 +RDATE:19340422T020000
  576.56 +RDATE:19350414T020000
  576.57 +RDATE:19360419T020000
  576.58 +RDATE:19370418T020000
  576.59 +RDATE:19380410T020000
  576.60 +RDATE:19390416T020000
  576.61 +RDATE:19400225T020000
  576.62 +RDATE:19460414T020000
  576.63 +RDATE:19470316T020000
  576.64 +RDATE:19480314T020000
  576.65 +RDATE:19490403T020000
  576.66 +RDATE:19500416T020000
  576.67 +RDATE:19510415T020000
  576.68 +RDATE:19520420T020000
  576.69 +RDATE:19530419T020000
  576.70 +RDATE:19540411T020000
  576.71 +RDATE:19550417T020000
  576.72 +RDATE:19560422T020000
  576.73 +RDATE:19570414T020000
  576.74 +RDATE:19580420T020000
  576.75 +RDATE:19590419T020000
  576.76 +RDATE:19600410T020000
  576.77 +RDATE:19610326T020000
  576.78 +RDATE:19620325T020000
  576.79 +RDATE:19630331T020000
  576.80 +RDATE:19640322T020000
  576.81 +RDATE:19650321T020000
  576.82 +RDATE:19660320T020000
  576.83 +RDATE:19670319T020000
  576.84 +RDATE:19680218T020000
  576.85 +RDATE:19720319T020000
  576.86 +RDATE:19730318T020000
  576.87 +RDATE:19740317T020000
  576.88 +RDATE:19750316T020000
  576.89 +RDATE:19760321T020000
  576.90 +RDATE:19770320T020000
  576.91 +RDATE:19780319T020000
  576.92 +RDATE:19790318T020000
  576.93 +RDATE:19800316T020000
  576.94 +END:DAYLIGHT
  576.95 +BEGIN:STANDARD
  576.96 +TZOFFSETFROM:+0100
  576.97 +TZOFFSETTO:+0000
  576.98 +TZNAME:GMT
  576.99 +DTSTART:19161001T030000
 576.100 +RDATE:19161001T030000
 576.101 +RDATE:19170917T030000
 576.102 +RDATE:19180930T030000
 576.103 +RDATE:19190929T030000
 576.104 +RDATE:19201025T030000
 576.105 +RDATE:19211003T030000
 576.106 +RDATE:19221008T030000
 576.107 +RDATE:19230916T030000
 576.108 +RDATE:19240921T030000
 576.109 +RDATE:19251004T030000
 576.110 +RDATE:19261003T030000
 576.111 +RDATE:19271002T030000
 576.112 +RDATE:19281007T030000
 576.113 +RDATE:19291006T030000
 576.114 +RDATE:19301005T030000
 576.115 +RDATE:19311004T030000
 576.116 +RDATE:19321002T030000
 576.117 +RDATE:19331008T030000
 576.118 +RDATE:19341007T030000
 576.119 +RDATE:19351006T030000
 576.120 +RDATE:19361004T030000
 576.121 +RDATE:19371003T030000
 576.122 +RDATE:19381002T030000
 576.123 +RDATE:19391119T030000
 576.124 +RDATE:19451007T030000
 576.125 +RDATE:19461006T030000
 576.126 +RDATE:19471102T030000
 576.127 +RDATE:19481031T030000
 576.128 +RDATE:19491030T030000
 576.129 +RDATE:19501022T030000
 576.130 +RDATE:19511021T030000
 576.131 +RDATE:19521026T030000
 576.132 +RDATE:19531004T030000
 576.133 +RDATE:19541003T030000
 576.134 +RDATE:19551002T030000
 576.135 +RDATE:19561007T030000
 576.136 +RDATE:19571006T030000
 576.137 +RDATE:19581005T030000
 576.138 +RDATE:19591004T030000
 576.139 +RDATE:19601002T030000
 576.140 +RDATE:19611029T030000
 576.141 +RDATE:19621028T030000
 576.142 +RDATE:19631027T030000
 576.143 +RDATE:19641025T030000
 576.144 +RDATE:19651024T030000
 576.145 +RDATE:19661023T030000
 576.146 +RDATE:19671029T030000
 576.147 +RDATE:19711031T030000
 576.148 +RDATE:19721029T030000
 576.149 +RDATE:19731028T030000
 576.150 +RDATE:19741027T030000
 576.151 +RDATE:19751026T030000
 576.152 +RDATE:19761024T030000
 576.153 +RDATE:19771023T030000
 576.154 +RDATE:19781029T030000
 576.155 +RDATE:19791028T030000
 576.156 +RDATE:19801026T030000
 576.157 +RDATE:19811025T020000
 576.158 +RDATE:19821024T020000
 576.159 +RDATE:19831023T020000
 576.160 +RDATE:19841028T020000
 576.161 +RDATE:19851027T020000
 576.162 +RDATE:19861026T020000
 576.163 +RDATE:19871025T020000
 576.164 +RDATE:19881023T020000
 576.165 +RDATE:19891029T020000
 576.166 +RDATE:19901028T020000
 576.167 +RDATE:19911027T020000
 576.168 +RDATE:19921025T020000
 576.169 +RDATE:19931024T020000
 576.170 +RDATE:19941023T020000
 576.171 +RDATE:19951022T020000
 576.172 +END:STANDARD
 576.173 +BEGIN:DAYLIGHT
 576.174 +TZOFFSETFROM:+0100
 576.175 +TZOFFSETTO:+0200
 576.176 +TZNAME:BDST
 576.177 +DTSTART:19410504T020000
 576.178 +RDATE:19410504T020000
 576.179 +RDATE:19420405T020000
 576.180 +RDATE:19430404T020000
 576.181 +RDATE:19440402T020000
 576.182 +RDATE:19450402T020000
 576.183 +RDATE:19470413T020000
 576.184 +END:DAYLIGHT
 576.185 +BEGIN:DAYLIGHT
 576.186 +TZOFFSETFROM:+0200
 576.187 +TZOFFSETTO:+0100
 576.188 +TZNAME:BST
 576.189 +DTSTART:19410810T030000
 576.190 +RDATE:19410810T030000
 576.191 +RDATE:19420809T030000
 576.192 +RDATE:19430815T030000
 576.193 +RDATE:19440917T030000
 576.194 +RDATE:19450715T030000
 576.195 +RDATE:19470810T030000
 576.196 +END:DAYLIGHT
 576.197 +BEGIN:STANDARD
 576.198 +TZOFFSETFROM:+0100
 576.199 +TZOFFSETTO:+0100
 576.200 +TZNAME:BST
 576.201 +DTSTART:19681027T000000
 576.202 +RDATE:19681027T000000
 576.203 +END:STANDARD
 576.204 +BEGIN:STANDARD
 576.205 +TZOFFSETFROM:+0000
 576.206 +TZOFFSETTO:+0000
 576.207 +TZNAME:GMT
 576.208 +DTSTART:19960101T000000
 576.209 +RDATE:19960101T000000
 576.210 +END:STANDARD
 576.211 +END:VTIMEZONE
 576.212 +END:VCALENDAR
   577.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   577.2 +++ b/src/zoneinfo-global/Europe/Istanbul.ics	Tue Feb 10 18:12:00 2015 +0100
   577.3 @@ -0,0 +1,194 @@
   577.4 +BEGIN:VCALENDAR
   577.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   577.6 +VERSION:2.0
   577.7 +BEGIN:VTIMEZONE
   577.8 +TZID:Europe/Istanbul
   577.9 +TZURL:http://tzurl.org/zoneinfo-global/Europe/Istanbul
  577.10 +X-LIC-LOCATION:Europe/Istanbul
  577.11 +BEGIN:STANDARD
  577.12 +TZOFFSETFROM:+0300
  577.13 +TZOFFSETTO:+0200
  577.14 +TZNAME:EET
  577.15 +DTSTART:20071028T040000
  577.16 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  577.17 +END:STANDARD
  577.18 +BEGIN:DAYLIGHT
  577.19 +TZOFFSETFROM:+0200
  577.20 +TZOFFSETTO:+0300
  577.21 +TZNAME:EEST
  577.22 +DTSTART:20120325T030000
  577.23 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  577.24 +END:DAYLIGHT
  577.25 +BEGIN:STANDARD
  577.26 +TZOFFSETFROM:+015552
  577.27 +TZOFFSETTO:+015656
  577.28 +TZNAME:IMT
  577.29 +DTSTART:18800101T000000
  577.30 +RDATE:18800101T000000
  577.31 +END:STANDARD
  577.32 +BEGIN:STANDARD
  577.33 +TZOFFSETFROM:+015656
  577.34 +TZOFFSETTO:+0200
  577.35 +TZNAME:EET
  577.36 +DTSTART:19101001T000000
  577.37 +RDATE:19101001T000000
  577.38 +END:STANDARD
  577.39 +BEGIN:DAYLIGHT
  577.40 +TZOFFSETFROM:+0200
  577.41 +TZOFFSETTO:+0300
  577.42 +TZNAME:EEST
  577.43 +DTSTART:19160501T000000
  577.44 +RDATE:19160501T000000
  577.45 +RDATE:19200328T000000
  577.46 +RDATE:19210403T000000
  577.47 +RDATE:19220326T000000
  577.48 +RDATE:19240513T000000
  577.49 +RDATE:19250501T000000
  577.50 +RDATE:19400630T000000
  577.51 +RDATE:19401201T000000
  577.52 +RDATE:19420401T000000
  577.53 +RDATE:19450402T000000
  577.54 +RDATE:19460601T000000
  577.55 +RDATE:19470420T000000
  577.56 +RDATE:19480418T000000
  577.57 +RDATE:19490410T000000
  577.58 +RDATE:19500419T000000
  577.59 +RDATE:19510422T000000
  577.60 +RDATE:19620715T000000
  577.61 +RDATE:19640515T000000
  577.62 +RDATE:19700503T000000
  577.63 +RDATE:19710502T000000
  577.64 +RDATE:19720507T000000
  577.65 +RDATE:19730603T010000
  577.66 +RDATE:19740331T020000
  577.67 +RDATE:19750330T000000
  577.68 +RDATE:19760601T000000
  577.69 +RDATE:19770403T000000
  577.70 +RDATE:19780402T000000
  577.71 +RDATE:19860330T020000
  577.72 +RDATE:19870329T020000
  577.73 +RDATE:19880327T020000
  577.74 +RDATE:19890326T020000
  577.75 +RDATE:19900325T020000
  577.76 +RDATE:19910331T010000
  577.77 +RDATE:19920329T010000
  577.78 +RDATE:19930328T010000
  577.79 +RDATE:19940327T010000
  577.80 +RDATE:19950326T010000
  577.81 +RDATE:19960331T010000
  577.82 +RDATE:19970330T010000
  577.83 +RDATE:19980329T010000
  577.84 +RDATE:19990328T010000
  577.85 +RDATE:20000326T010000
  577.86 +RDATE:20010325T010000
  577.87 +RDATE:20020331T010000
  577.88 +RDATE:20030330T010000
  577.89 +RDATE:20040328T010000
  577.90 +RDATE:20050327T010000
  577.91 +RDATE:20060326T010000
  577.92 +RDATE:20070325T030000
  577.93 +RDATE:20080330T030000
  577.94 +RDATE:20090329T030000
  577.95 +RDATE:20100328T030000
  577.96 +RDATE:20110328T030000
  577.97 +END:DAYLIGHT
  577.98 +BEGIN:STANDARD
  577.99 +TZOFFSETFROM:+0300
 577.100 +TZOFFSETTO:+0200
 577.101 +TZNAME:EET
 577.102 +DTSTART:19161001T000000
 577.103 +RDATE:19161001T000000
 577.104 +RDATE:19201025T000000
 577.105 +RDATE:19211003T000000
 577.106 +RDATE:19221008T000000
 577.107 +RDATE:19241001T000000
 577.108 +RDATE:19251001T000000
 577.109 +RDATE:19401005T000000
 577.110 +RDATE:19410921T000000
 577.111 +RDATE:19421101T000000
 577.112 +RDATE:19451008T000000
 577.113 +RDATE:19461001T000000
 577.114 +RDATE:19471005T000000
 577.115 +RDATE:19481003T000000
 577.116 +RDATE:19491002T000000
 577.117 +RDATE:19501008T000000
 577.118 +RDATE:19511008T000000
 577.119 +RDATE:19621008T000000
 577.120 +RDATE:19641001T000000
 577.121 +RDATE:19701004T000000
 577.122 +RDATE:19711003T000000
 577.123 +RDATE:19721008T000000
 577.124 +RDATE:19731104T030000
 577.125 +RDATE:19741103T050000
 577.126 +RDATE:19751026T000000
 577.127 +RDATE:19761031T000000
 577.128 +RDATE:19771016T000000
 577.129 +RDATE:19850928T000000
 577.130 +RDATE:19860928T030000
 577.131 +RDATE:19870927T030000
 577.132 +RDATE:19880925T030000
 577.133 +RDATE:19890924T030000
 577.134 +RDATE:19900930T030000
 577.135 +RDATE:19910929T020000
 577.136 +RDATE:19920927T020000
 577.137 +RDATE:19930926T020000
 577.138 +RDATE:19940925T020000
 577.139 +RDATE:19950924T020000
 577.140 +RDATE:19961027T020000
 577.141 +RDATE:19971026T020000
 577.142 +RDATE:19981025T020000
 577.143 +RDATE:19991031T020000
 577.144 +RDATE:20001029T020000
 577.145 +RDATE:20011028T020000
 577.146 +RDATE:20021027T020000
 577.147 +RDATE:20031026T020000
 577.148 +RDATE:20041031T020000
 577.149 +RDATE:20051030T020000
 577.150 +RDATE:20061029T020000
 577.151 +END:STANDARD
 577.152 +BEGIN:DAYLIGHT
 577.153 +TZOFFSETFROM:+0300
 577.154 +TZOFFSETTO:+0400
 577.155 +TZNAME:TRST
 577.156 +DTSTART:19781015T000000
 577.157 +RDATE:19781015T000000
 577.158 +RDATE:19800406T030000
 577.159 +RDATE:19810329T030000
 577.160 +RDATE:19820328T030000
 577.161 +RDATE:19830731T000000
 577.162 +END:DAYLIGHT
 577.163 +BEGIN:DAYLIGHT
 577.164 +TZOFFSETFROM:+0400
 577.165 +TZOFFSETTO:+0400
 577.166 +TZNAME:TRST
 577.167 +DTSTART:19790401T030000
 577.168 +RDATE:19790401T030000
 577.169 +END:DAYLIGHT
 577.170 +BEGIN:STANDARD
 577.171 +TZOFFSETFROM:+0400
 577.172 +TZOFFSETTO:+0300
 577.173 +TZNAME:TRT
 577.174 +DTSTART:19791015T000000
 577.175 +RDATE:19791015T000000
 577.176 +RDATE:19801013T000000
 577.177 +RDATE:19811012T000000
 577.178 +RDATE:19821011T000000
 577.179 +RDATE:19831002T000000
 577.180 +END:STANDARD
 577.181 +BEGIN:DAYLIGHT
 577.182 +TZOFFSETFROM:+0300
 577.183 +TZOFFSETTO:+0300
 577.184 +TZNAME:EEST
 577.185 +DTSTART:19850420T000000
 577.186 +RDATE:19850420T000000
 577.187 +END:DAYLIGHT
 577.188 +BEGIN:STANDARD
 577.189 +TZOFFSETFROM:+0200
 577.190 +TZOFFSETTO:+0200
 577.191 +TZNAME:EET
 577.192 +DTSTART:20070101T000000
 577.193 +RDATE:20070101T000000
 577.194 +RDATE:20110327T030000
 577.195 +END:STANDARD
 577.196 +END:VTIMEZONE
 577.197 +END:VCALENDAR
   578.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   578.2 +++ b/src/zoneinfo-global/Europe/Jersey.ics	Tue Feb 10 18:12:00 2015 +0100
   578.3 @@ -0,0 +1,209 @@
   578.4 +BEGIN:VCALENDAR
   578.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   578.6 +VERSION:2.0
   578.7 +BEGIN:VTIMEZONE
   578.8 +TZID:Europe/Jersey
   578.9 +TZURL:http://tzurl.org/zoneinfo-global/Europe/Jersey
  578.10 +X-LIC-LOCATION:Europe/Jersey
  578.11 +BEGIN:DAYLIGHT
  578.12 +TZOFFSETFROM:+0000
  578.13 +TZOFFSETTO:+0100
  578.14 +TZNAME:BST
  578.15 +DTSTART:19810329T010000
  578.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  578.17 +END:DAYLIGHT
  578.18 +BEGIN:STANDARD
  578.19 +TZOFFSETFROM:+0100
  578.20 +TZOFFSETTO:+0000
  578.21 +TZNAME:GMT
  578.22 +DTSTART:19961027T020000
  578.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  578.24 +END:STANDARD
  578.25 +BEGIN:STANDARD
  578.26 +TZOFFSETFROM:-000115
  578.27 +TZOFFSETTO:+0000
  578.28 +TZNAME:GMT
  578.29 +DTSTART:18471201T000000
  578.30 +RDATE:18471201T000000
  578.31 +END:STANDARD
  578.32 +BEGIN:DAYLIGHT
  578.33 +TZOFFSETFROM:+0000
  578.34 +TZOFFSETTO:+0100
  578.35 +TZNAME:BST
  578.36 +DTSTART:19160521T020000
  578.37 +RDATE:19160521T020000
  578.38 +RDATE:19170408T020000
  578.39 +RDATE:19180324T020000
  578.40 +RDATE:19190330T020000
  578.41 +RDATE:19200328T020000
  578.42 +RDATE:19210403T020000
  578.43 +RDATE:19220326T020000
  578.44 +RDATE:19230422T020000
  578.45 +RDATE:19240413T020000
  578.46 +RDATE:19250419T020000
  578.47 +RDATE:19260418T020000
  578.48 +RDATE:19270410T020000
  578.49 +RDATE:19280422T020000
  578.50 +RDATE:19290421T020000
  578.51 +RDATE:19300413T020000
  578.52 +RDATE:19310419T020000
  578.53 +RDATE:19320417T020000
  578.54 +RDATE:19330409T020000
  578.55 +RDATE:19340422T020000
  578.56 +RDATE:19350414T020000
  578.57 +RDATE:19360419T020000
  578.58 +RDATE:19370418T020000
  578.59 +RDATE:19380410T020000
  578.60 +RDATE:19390416T020000
  578.61 +RDATE:19400225T020000
  578.62 +RDATE:19460414T020000
  578.63 +RDATE:19470316T020000
  578.64 +RDATE:19480314T020000
  578.65 +RDATE:19490403T020000
  578.66 +RDATE:19500416T020000
  578.67 +RDATE:19510415T020000
  578.68 +RDATE:19520420T020000
  578.69 +RDATE:19530419T020000
  578.70 +RDATE:19540411T020000
  578.71 +RDATE:19550417T020000
  578.72 +RDATE:19560422T020000
  578.73 +RDATE:19570414T020000
  578.74 +RDATE:19580420T020000
  578.75 +RDATE:19590419T020000
  578.76 +RDATE:19600410T020000
  578.77 +RDATE:19610326T020000
  578.78 +RDATE:19620325T020000
  578.79 +RDATE:19630331T020000
  578.80 +RDATE:19640322T020000
  578.81 +RDATE:19650321T020000
  578.82 +RDATE:19660320T020000
  578.83 +RDATE:19670319T020000
  578.84 +RDATE:19680218T020000
  578.85 +RDATE:19720319T020000
  578.86 +RDATE:19730318T020000
  578.87 +RDATE:19740317T020000
  578.88 +RDATE:19750316T020000
  578.89 +RDATE:19760321T020000
  578.90 +RDATE:19770320T020000
  578.91 +RDATE:19780319T020000
  578.92 +RDATE:19790318T020000
  578.93 +RDATE:19800316T020000
  578.94 +END:DAYLIGHT
  578.95 +BEGIN:STANDARD
  578.96 +TZOFFSETFROM:+0100
  578.97 +TZOFFSETTO:+0000
  578.98 +TZNAME:GMT
  578.99 +DTSTART:19161001T030000
 578.100 +RDATE:19161001T030000
 578.101 +RDATE:19170917T030000
 578.102 +RDATE:19180930T030000
 578.103 +RDATE:19190929T030000
 578.104 +RDATE:19201025T030000
 578.105 +RDATE:19211003T030000
 578.106 +RDATE:19221008T030000
 578.107 +RDATE:19230916T030000
 578.108 +RDATE:19240921T030000
 578.109 +RDATE:19251004T030000
 578.110 +RDATE:19261003T030000
 578.111 +RDATE:19271002T030000
 578.112 +RDATE:19281007T030000
 578.113 +RDATE:19291006T030000
 578.114 +RDATE:19301005T030000
 578.115 +RDATE:19311004T030000
 578.116 +RDATE:19321002T030000
 578.117 +RDATE:19331008T030000
 578.118 +RDATE:19341007T030000
 578.119 +RDATE:19351006T030000
 578.120 +RDATE:19361004T030000
 578.121 +RDATE:19371003T030000
 578.122 +RDATE:19381002T030000
 578.123 +RDATE:19391119T030000
 578.124 +RDATE:19451007T030000
 578.125 +RDATE:19461006T030000
 578.126 +RDATE:19471102T030000
 578.127 +RDATE:19481031T030000
 578.128 +RDATE:19491030T030000
 578.129 +RDATE:19501022T030000
 578.130 +RDATE:19511021T030000
 578.131 +RDATE:19521026T030000
 578.132 +RDATE:19531004T030000
 578.133 +RDATE:19541003T030000
 578.134 +RDATE:19551002T030000
 578.135 +RDATE:19561007T030000
 578.136 +RDATE:19571006T030000
 578.137 +RDATE:19581005T030000
 578.138 +RDATE:19591004T030000
 578.139 +RDATE:19601002T030000
 578.140 +RDATE:19611029T030000
 578.141 +RDATE:19621028T030000
 578.142 +RDATE:19631027T030000
 578.143 +RDATE:19641025T030000
 578.144 +RDATE:19651024T030000
 578.145 +RDATE:19661023T030000
 578.146 +RDATE:19671029T030000
 578.147 +RDATE:19711031T030000
 578.148 +RDATE:19721029T030000
 578.149 +RDATE:19731028T030000
 578.150 +RDATE:19741027T030000
 578.151 +RDATE:19751026T030000
 578.152 +RDATE:19761024T030000
 578.153 +RDATE:19771023T030000
 578.154 +RDATE:19781029T030000
 578.155 +RDATE:19791028T030000
 578.156 +RDATE:19801026T030000
 578.157 +RDATE:19811025T020000
 578.158 +RDATE:19821024T020000
 578.159 +RDATE:19831023T020000
 578.160 +RDATE:19841028T020000
 578.161 +RDATE:19851027T020000
 578.162 +RDATE:19861026T020000
 578.163 +RDATE:19871025T020000
 578.164 +RDATE:19881023T020000
 578.165 +RDATE:19891029T020000
 578.166 +RDATE:19901028T020000
 578.167 +RDATE:19911027T020000
 578.168 +RDATE:19921025T020000
 578.169 +RDATE:19931024T020000
 578.170 +RDATE:19941023T020000
 578.171 +RDATE:19951022T020000
 578.172 +END:STANDARD
 578.173 +BEGIN:DAYLIGHT
 578.174 +TZOFFSETFROM:+0100
 578.175 +TZOFFSETTO:+0200
 578.176 +TZNAME:BDST
 578.177 +DTSTART:19410504T020000
 578.178 +RDATE:19410504T020000
 578.179 +RDATE:19420405T020000
 578.180 +RDATE:19430404T020000
 578.181 +RDATE:19440402T020000
 578.182 +RDATE:19450402T020000
 578.183 +RDATE:19470413T020000
 578.184 +END:DAYLIGHT
 578.185 +BEGIN:DAYLIGHT
 578.186 +TZOFFSETFROM:+0200
 578.187 +TZOFFSETTO:+0100
 578.188 +TZNAME:BST
 578.189 +DTSTART:19410810T030000
 578.190 +RDATE:19410810T030000
 578.191 +RDATE:19420809T030000
 578.192 +RDATE:19430815T030000
 578.193 +RDATE:19440917T030000
 578.194 +RDATE:19450715T030000
 578.195 +RDATE:19470810T030000
 578.196 +END:DAYLIGHT
 578.197 +BEGIN:STANDARD
 578.198 +TZOFFSETFROM:+0100
 578.199 +TZOFFSETTO:+0100
 578.200 +TZNAME:BST
 578.201 +DTSTART:19681027T000000
 578.202 +RDATE:19681027T000000
 578.203 +END:STANDARD
 578.204 +BEGIN:STANDARD
 578.205 +TZOFFSETFROM:+0000
 578.206 +TZOFFSETTO:+0000
 578.207 +TZNAME:GMT
 578.208 +DTSTART:19960101T000000
 578.209 +RDATE:19960101T000000
 578.210 +END:STANDARD
 578.211 +END:VTIMEZONE
 578.212 +END:VCALENDAR
   579.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   579.2 +++ b/src/zoneinfo-global/Europe/Kaliningrad.ics	Tue Feb 10 18:12:00 2015 +0100
   579.3 @@ -0,0 +1,165 @@
   579.4 +BEGIN:VCALENDAR
   579.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   579.6 +VERSION:2.0
   579.7 +BEGIN:VTIMEZONE
   579.8 +TZID:Europe/Kaliningrad
   579.9 +TZURL:http://tzurl.org/zoneinfo-global/Europe/Kaliningrad
  579.10 +X-LIC-LOCATION:Europe/Kaliningrad
  579.11 +BEGIN:STANDARD
  579.12 +TZOFFSETFROM:+0122
  579.13 +TZOFFSETTO:+0100
  579.14 +TZNAME:CET
  579.15 +DTSTART:18930401T000000
  579.16 +RDATE:18930401T000000
  579.17 +END:STANDARD
  579.18 +BEGIN:DAYLIGHT
  579.19 +TZOFFSETFROM:+0100
  579.20 +TZOFFSETTO:+0200
  579.21 +TZNAME:CEST
  579.22 +DTSTART:19160430T230000
  579.23 +RDATE:19160430T230000
  579.24 +RDATE:19170416T020000
  579.25 +RDATE:19180415T020000
  579.26 +RDATE:19400401T020000
  579.27 +RDATE:19430329T020000
  579.28 +RDATE:19440403T020000
  579.29 +END:DAYLIGHT
  579.30 +BEGIN:STANDARD
  579.31 +TZOFFSETFROM:+0200
  579.32 +TZOFFSETTO:+0100
  579.33 +TZNAME:CET
  579.34 +DTSTART:19161001T010000
  579.35 +RDATE:19161001T010000
  579.36 +RDATE:19170917T030000
  579.37 +RDATE:19180916T030000
  579.38 +RDATE:19421102T030000
  579.39 +RDATE:19431004T030000
  579.40 +RDATE:19441002T030000
  579.41 +END:STANDARD
  579.42 +BEGIN:STANDARD
  579.43 +TZOFFSETFROM:+0100
  579.44 +TZOFFSETTO:+0200
  579.45 +TZNAME:CET
  579.46 +DTSTART:19450101T000000
  579.47 +RDATE:19450101T000000
  579.48 +END:STANDARD
  579.49 +BEGIN:DAYLIGHT
  579.50 +TZOFFSETFROM:+0200
  579.51 +TZOFFSETTO:+0300
  579.52 +TZNAME:CEST
  579.53 +DTSTART:19450429T000000
  579.54 +RDATE:19450429T000000
  579.55 +END:DAYLIGHT
  579.56 +BEGIN:STANDARD
  579.57 +TZOFFSETFROM:+0300
  579.58 +TZOFFSETTO:+0200
  579.59 +TZNAME:CET
  579.60 +DTSTART:19451101T000000
  579.61 +RDATE:19451101T000000
  579.62 +END:STANDARD
  579.63 +BEGIN:STANDARD
  579.64 +TZOFFSETFROM:+0200
  579.65 +TZOFFSETTO:+0300
  579.66 +TZNAME:MSK
  579.67 +DTSTART:19460101T000000
  579.68 +RDATE:19460101T000000
  579.69 +END:STANDARD
  579.70 +BEGIN:DAYLIGHT
  579.71 +TZOFFSETFROM:+0300
  579.72 +TZOFFSETTO:+0400
  579.73 +TZNAME:MSD
  579.74 +DTSTART:19810401T000000
  579.75 +RDATE:19810401T000000
  579.76 +RDATE:19820401T000000
  579.77 +RDATE:19830401T000000
  579.78 +RDATE:19840401T000000
  579.79 +RDATE:19850331T020000
  579.80 +RDATE:19860330T020000
  579.81 +RDATE:19870329T020000
  579.82 +RDATE:19880327T020000
  579.83 +RDATE:19890326T020000
  579.84 +RDATE:19900325T020000
  579.85 +END:DAYLIGHT
  579.86 +BEGIN:STANDARD
  579.87 +TZOFFSETFROM:+0400
  579.88 +TZOFFSETTO:+0300
  579.89 +TZNAME:MSK
  579.90 +DTSTART:19811001T000000
  579.91 +RDATE:19811001T000000
  579.92 +RDATE:19821001T000000
  579.93 +RDATE:19831001T000000
  579.94 +RDATE:19840930T030000
  579.95 +RDATE:19850929T030000
  579.96 +RDATE:19860928T030000
  579.97 +RDATE:19870927T030000
  579.98 +RDATE:19880925T030000
  579.99 +RDATE:19890924T030000
 579.100 +RDATE:19900930T030000
 579.101 +END:STANDARD
 579.102 +BEGIN:DAYLIGHT
 579.103 +TZOFFSETFROM:+0300
 579.104 +TZOFFSETTO:+0300
 579.105 +TZNAME:EEST
 579.106 +DTSTART:19910331T020000
 579.107 +RDATE:19910331T020000
 579.108 +END:DAYLIGHT
 579.109 +BEGIN:STANDARD
 579.110 +TZOFFSETFROM:+0300
 579.111 +TZOFFSETTO:+0200
 579.112 +TZNAME:EET
 579.113 +DTSTART:19910929T030000
 579.114 +RDATE:19910929T030000
 579.115 +RDATE:19920926T230000
 579.116 +RDATE:19930926T030000
 579.117 +RDATE:19940925T030000
 579.118 +RDATE:19950924T030000
 579.119 +RDATE:19961027T030000
 579.120 +RDATE:19971026T030000
 579.121 +RDATE:19981025T030000
 579.122 +RDATE:19991031T030000
 579.123 +RDATE:20001029T030000
 579.124 +RDATE:20011028T030000
 579.125 +RDATE:20021027T030000
 579.126 +RDATE:20031026T030000
 579.127 +RDATE:20041031T030000
 579.128 +RDATE:20051030T030000
 579.129 +RDATE:20061029T030000
 579.130 +RDATE:20071028T030000
 579.131 +RDATE:20081026T030000
 579.132 +RDATE:20091025T030000
 579.133 +RDATE:20101031T030000
 579.134 +END:STANDARD
 579.135 +BEGIN:DAYLIGHT
 579.136 +TZOFFSETFROM:+0200
 579.137 +TZOFFSETTO:+0300
 579.138 +TZNAME:EEST
 579.139 +DTSTART:19920328T230000
 579.140 +RDATE:19920328T230000
 579.141 +RDATE:19930328T020000
 579.142 +RDATE:19940327T020000
 579.143 +RDATE:19950326T020000
 579.144 +RDATE:19960331T020000
 579.145 +RDATE:19970330T020000
 579.146 +RDATE:19980329T020000
 579.147 +RDATE:19990328T020000
 579.148 +RDATE:20000326T020000
 579.149 +RDATE:20010325T020000
 579.150 +RDATE:20020331T020000
 579.151 +RDATE:20030330T020000
 579.152 +RDATE:20040328T020000
 579.153 +RDATE:20050327T020000
 579.154 +RDATE:20060326T020000
 579.155 +RDATE:20070325T020000
 579.156 +RDATE:20080330T020000
 579.157 +RDATE:20090329T020000
 579.158 +RDATE:20100328T020000
 579.159 +END:DAYLIGHT
 579.160 +BEGIN:STANDARD
 579.161 +TZOFFSETFROM:+0200
 579.162 +TZOFFSETTO:+0300
 579.163 +TZNAME:FET
 579.164 +DTSTART:20110327T020000
 579.165 +RDATE:20110327T020000
 579.166 +END:STANDARD
 579.167 +END:VTIMEZONE
 579.168 +END:VCALENDAR
   580.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   580.2 +++ b/src/zoneinfo-global/Europe/Kiev.ics	Tue Feb 10 18:12:00 2015 +0100
   580.3 @@ -0,0 +1,138 @@
   580.4 +BEGIN:VCALENDAR
   580.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   580.6 +VERSION:2.0
   580.7 +BEGIN:VTIMEZONE
   580.8 +TZID:Europe/Kiev
   580.9 +TZURL:http://tzurl.org/zoneinfo-global/Europe/Kiev
  580.10 +X-LIC-LOCATION:Europe/Kiev
  580.11 +BEGIN:DAYLIGHT
  580.12 +TZOFFSETFROM:+0200
  580.13 +TZOFFSETTO:+0300
  580.14 +TZNAME:EEST
  580.15 +DTSTART:19950326T030000
  580.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  580.17 +END:DAYLIGHT
  580.18 +BEGIN:STANDARD
  580.19 +TZOFFSETFROM:+0300
  580.20 +TZOFFSETTO:+0200
  580.21 +TZNAME:EET
  580.22 +DTSTART:19961027T040000
  580.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  580.24 +END:STANDARD
  580.25 +BEGIN:STANDARD
  580.26 +TZOFFSETFROM:+020204
  580.27 +TZOFFSETTO:+020204
  580.28 +TZNAME:KMT
  580.29 +DTSTART:18800101T000000
  580.30 +RDATE:18800101T000000
  580.31 +END:STANDARD
  580.32 +BEGIN:STANDARD
  580.33 +TZOFFSETFROM:+020204
  580.34 +TZOFFSETTO:+0200
  580.35 +TZNAME:EET
  580.36 +DTSTART:19240502T000000
  580.37 +RDATE:19240502T000000
  580.38 +END:STANDARD
  580.39 +BEGIN:STANDARD
  580.40 +TZOFFSETFROM:+0200
  580.41 +TZOFFSETTO:+0300
  580.42 +TZNAME:MSK
  580.43 +DTSTART:19300621T000000
  580.44 +RDATE:19300621T000000
  580.45 +END:STANDARD
  580.46 +BEGIN:DAYLIGHT
  580.47 +TZOFFSETFROM:+0300
  580.48 +TZOFFSETTO:+0200
  580.49 +TZNAME:CEST
  580.50 +DTSTART:19410920T000000
  580.51 +RDATE:19410920T000000
  580.52 +END:DAYLIGHT
  580.53 +BEGIN:STANDARD
  580.54 +TZOFFSETFROM:+0200
  580.55 +TZOFFSETTO:+0100
  580.56 +TZNAME:CET
  580.57 +DTSTART:19421102T030000
  580.58 +RDATE:19421102T030000
  580.59 +RDATE:19431004T030000
  580.60 +END:STANDARD
  580.61 +BEGIN:DAYLIGHT
  580.62 +TZOFFSETFROM:+0100
  580.63 +TZOFFSETTO:+0200
  580.64 +TZNAME:CEST
  580.65 +DTSTART:19430329T020000
  580.66 +RDATE:19430329T020000
  580.67 +END:DAYLIGHT
  580.68 +BEGIN:STANDARD
  580.69 +TZOFFSETFROM:+0100
  580.70 +TZOFFSETTO:+0300
  580.71 +TZNAME:MSK
  580.72 +DTSTART:19431106T000000
  580.73 +RDATE:19431106T000000
  580.74 +END:STANDARD
  580.75 +BEGIN:DAYLIGHT
  580.76 +TZOFFSETFROM:+0300
  580.77 +TZOFFSETTO:+0400
  580.78 +TZNAME:MSD
  580.79 +DTSTART:19810401T000000
  580.80 +RDATE:19810401T000000
  580.81 +RDATE:19820401T000000
  580.82 +RDATE:19830401T000000
  580.83 +RDATE:19840401T000000
  580.84 +RDATE:19850331T020000
  580.85 +RDATE:19860330T020000
  580.86 +RDATE:19870329T020000
  580.87 +RDATE:19880327T020000
  580.88 +RDATE:19890326T020000
  580.89 +END:DAYLIGHT
  580.90 +BEGIN:STANDARD
  580.91 +TZOFFSETFROM:+0400
  580.92 +TZOFFSETTO:+0300
  580.93 +TZNAME:MSK
  580.94 +DTSTART:19811001T000000
  580.95 +RDATE:19811001T000000
  580.96 +RDATE:19821001T000000
  580.97 +RDATE:19831001T000000
  580.98 +RDATE:19840930T030000
  580.99 +RDATE:19850929T030000
 580.100 +RDATE:19860928T030000
 580.101 +RDATE:19870927T030000
 580.102 +RDATE:19880925T030000
 580.103 +RDATE:19890924T030000
 580.104 +END:STANDARD
 580.105 +BEGIN:STANDARD
 580.106 +TZOFFSETFROM:+0300
 580.107 +TZOFFSETTO:+0300
 580.108 +TZNAME:MSK
 580.109 +DTSTART:19900101T000000
 580.110 +RDATE:19900101T000000
 580.111 +END:STANDARD
 580.112 +BEGIN:STANDARD
 580.113 +TZOFFSETFROM:+0300
 580.114 +TZOFFSETTO:+0200
 580.115 +TZNAME:EET
 580.116 +DTSTART:19900701T020000
 580.117 +RDATE:19900701T020000
 580.118 +RDATE:19920927T000000
 580.119 +RDATE:19930926T000000
 580.120 +RDATE:19940925T000000
 580.121 +RDATE:19950924T040000
 580.122 +END:STANDARD
 580.123 +BEGIN:STANDARD
 580.124 +TZOFFSETFROM:+0200
 580.125 +TZOFFSETTO:+0200
 580.126 +TZNAME:EET
 580.127 +DTSTART:19920101T000000
 580.128 +RDATE:19920101T000000
 580.129 +RDATE:19950101T000000
 580.130 +END:STANDARD
 580.131 +BEGIN:DAYLIGHT
 580.132 +TZOFFSETFROM:+0200
 580.133 +TZOFFSETTO:+0300
 580.134 +TZNAME:EEST
 580.135 +DTSTART:19920329T000000
 580.136 +RDATE:19920329T000000
 580.137 +RDATE:19930328T000000
 580.138 +RDATE:19940327T000000
 580.139 +END:DAYLIGHT
 580.140 +END:VTIMEZONE
 580.141 +END:VCALENDAR
   581.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   581.2 +++ b/src/zoneinfo-global/Europe/Lisbon.ics	Tue Feb 10 18:12:00 2015 +0100
   581.3 @@ -0,0 +1,228 @@
   581.4 +BEGIN:VCALENDAR
   581.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   581.6 +VERSION:2.0
   581.7 +BEGIN:VTIMEZONE
   581.8 +TZID:Europe/Lisbon
   581.9 +TZURL:http://tzurl.org/zoneinfo-global/Europe/Lisbon
  581.10 +X-LIC-LOCATION:Europe/Lisbon
  581.11 +BEGIN:STANDARD
  581.12 +TZOFFSETFROM:+0100
  581.13 +TZOFFSETTO:+0000
  581.14 +TZNAME:WET
  581.15 +DTSTART:19961027T020000
  581.16 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  581.17 +END:STANDARD
  581.18 +BEGIN:DAYLIGHT
  581.19 +TZOFFSETFROM:+0000
  581.20 +TZOFFSETTO:+0100
  581.21 +TZNAME:WEST
  581.22 +DTSTART:19970330T010000
  581.23 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  581.24 +END:DAYLIGHT
  581.25 +BEGIN:STANDARD
  581.26 +TZOFFSETFROM:-003632
  581.27 +TZOFFSETTO:-003632
  581.28 +TZNAME:LMT
  581.29 +DTSTART:18840101T000000
  581.30 +RDATE:18840101T000000
  581.31 +END:STANDARD
  581.32 +BEGIN:STANDARD
  581.33 +TZOFFSETFROM:-003632
  581.34 +TZOFFSETTO:+0000
  581.35 +TZNAME:WET
  581.36 +DTSTART:19120101T000000
  581.37 +RDATE:19120101T000000
  581.38 +END:STANDARD
  581.39 +BEGIN:DAYLIGHT
  581.40 +TZOFFSETFROM:+0000
  581.41 +TZOFFSETTO:+0100
  581.42 +TZNAME:WEST
  581.43 +DTSTART:19160617T230000
  581.44 +RDATE:19160617T230000
  581.45 +RDATE:19170228T230000
  581.46 +RDATE:19180301T230000
  581.47 +RDATE:19190228T230000
  581.48 +RDATE:19200229T230000
  581.49 +RDATE:19210228T230000
  581.50 +RDATE:19240416T230000
  581.51 +RDATE:19260417T230000
  581.52 +RDATE:19270409T230000
  581.53 +RDATE:19280414T230000
  581.54 +RDATE:19290420T230000
  581.55 +RDATE:19310418T230000
  581.56 +RDATE:19320402T230000
  581.57 +RDATE:19340407T230000
  581.58 +RDATE:19350330T230000
  581.59 +RDATE:19360418T230000
  581.60 +RDATE:19370403T230000
  581.61 +RDATE:19380326T230000
  581.62 +RDATE:19390415T230000
  581.63 +RDATE:19400224T230000
  581.64 +RDATE:19410405T230000
  581.65 +RDATE:19420314T230000
  581.66 +RDATE:19430313T230000
  581.67 +RDATE:19440311T230000
  581.68 +RDATE:19450310T230000
  581.69 +RDATE:19460406T230000
  581.70 +RDATE:19470406T020000
  581.71 +RDATE:19480404T020000
  581.72 +RDATE:19490403T020000
  581.73 +RDATE:19510401T020000
  581.74 +RDATE:19520406T020000
  581.75 +RDATE:19530405T020000
  581.76 +RDATE:19540404T020000
  581.77 +RDATE:19550403T020000
  581.78 +RDATE:19560401T020000
  581.79 +RDATE:19570407T020000
  581.80 +RDATE:19580406T020000
  581.81 +RDATE:19590405T020000
  581.82 +RDATE:19600403T020000
  581.83 +RDATE:19610402T020000
  581.84 +RDATE:19620401T020000
  581.85 +RDATE:19630407T020000
  581.86 +RDATE:19640405T020000
  581.87 +RDATE:19650404T020000
  581.88 +RDATE:19770327T000000
  581.89 +RDATE:19780402T000000
  581.90 +RDATE:19790401T000000
  581.91 +RDATE:19800330T000000
  581.92 +RDATE:19810329T010000
  581.93 +RDATE:19820328T010000
  581.94 +RDATE:19830327T020000
  581.95 +RDATE:19840325T010000
  581.96 +RDATE:19850331T010000
  581.97 +RDATE:19860330T010000
  581.98 +RDATE:19870329T010000
  581.99 +RDATE:19880327T010000
 581.100 +RDATE:19890326T010000
 581.101 +RDATE:19900325T010000
 581.102 +RDATE:19910331T010000
 581.103 +RDATE:19920329T010000
 581.104 +END:DAYLIGHT
 581.105 +BEGIN:STANDARD
 581.106 +TZOFFSETFROM:+0100
 581.107 +TZOFFSETTO:+0000
 581.108 +TZNAME:WET
 581.109 +DTSTART:19161101T010000
 581.110 +RDATE:19161101T010000
 581.111 +RDATE:19171015T000000
 581.112 +RDATE:19181015T000000
 581.113 +RDATE:19191015T000000
 581.114 +RDATE:19201015T000000
 581.115 +RDATE:19211015T000000
 581.116 +RDATE:19241015T000000
 581.117 +RDATE:19261003T000000
 581.118 +RDATE:19271002T000000
 581.119 +RDATE:19281007T000000
 581.120 +RDATE:19291006T000000
 581.121 +RDATE:19311004T000000
 581.122 +RDATE:19321002T000000
 581.123 +RDATE:19341007T000000
 581.124 +RDATE:19351006T000000
 581.125 +RDATE:19361004T000000
 581.126 +RDATE:19371003T000000
 581.127 +RDATE:19381002T000000
 581.128 +RDATE:19391119T000000
 581.129 +RDATE:19401006T000000
 581.130 +RDATE:19411006T000000
 581.131 +RDATE:19421025T000000
 581.132 +RDATE:19431031T000000
 581.133 +RDATE:19441029T000000
 581.134 +RDATE:19451028T000000
 581.135 +RDATE:19461006T000000
 581.136 +RDATE:19471005T030000
 581.137 +RDATE:19481003T030000
 581.138 +RDATE:19491002T030000
 581.139 +RDATE:19511007T030000
 581.140 +RDATE:19521005T030000
 581.141 +RDATE:19531004T030000
 581.142 +RDATE:19541003T030000
 581.143 +RDATE:19551002T030000
 581.144 +RDATE:19561007T030000
 581.145 +RDATE:19571006T030000
 581.146 +RDATE:19581005T030000
 581.147 +RDATE:19591004T030000
 581.148 +RDATE:19601002T030000
 581.149 +RDATE:19611001T030000
 581.150 +RDATE:19621007T030000
 581.151 +RDATE:19631006T030000
 581.152 +RDATE:19641004T030000
 581.153 +RDATE:19651003T030000
 581.154 +RDATE:19760926T010000
 581.155 +RDATE:19770925T010000
 581.156 +RDATE:19781001T010000
 581.157 +RDATE:19790930T020000
 581.158 +RDATE:19800928T020000
 581.159 +RDATE:19810927T020000
 581.160 +RDATE:19820926T020000
 581.161 +RDATE:19830925T020000
 581.162 +RDATE:19840930T020000
 581.163 +RDATE:19850929T020000
 581.164 +RDATE:19860928T020000
 581.165 +RDATE:19870927T020000
 581.166 +RDATE:19880925T020000
 581.167 +RDATE:19890924T020000
 581.168 +RDATE:19900930T020000
 581.169 +RDATE:19910929T020000
 581.170 +END:STANDARD
 581.171 +BEGIN:DAYLIGHT
 581.172 +TZOFFSETFROM:+0100
 581.173 +TZOFFSETTO:+0200
 581.174 +TZNAME:WEMT
 581.175 +DTSTART:19420425T230000
 581.176 +RDATE:19420425T230000
 581.177 +RDATE:19430417T230000
 581.178 +RDATE:19440422T230000
 581.179 +RDATE:19450421T230000
 581.180 +END:DAYLIGHT
 581.181 +BEGIN:DAYLIGHT
 581.182 +TZOFFSETFROM:+0200
 581.183 +TZOFFSETTO:+0100
 581.184 +TZNAME:WEST
 581.185 +DTSTART:19420816T000000
 581.186 +RDATE:19420816T000000
 581.187 +RDATE:19430829T000000
 581.188 +RDATE:19440827T000000
 581.189 +RDATE:19450826T000000
 581.190 +END:DAYLIGHT
 581.191 +BEGIN:STANDARD
 581.192 +TZOFFSETFROM:+0000
 581.193 +TZOFFSETTO:+0100
 581.194 +TZNAME:CET
 581.195 +DTSTART:19660403T020000
 581.196 +RDATE:19660403T020000
 581.197 +END:STANDARD
 581.198 +BEGIN:STANDARD
 581.199 +TZOFFSETFROM:+0100
 581.200 +TZOFFSETTO:+0100
 581.201 +TZNAME:CET
 581.202 +DTSTART:19920927T020000
 581.203 +RDATE:19920927T020000
 581.204 +END:STANDARD
 581.205 +BEGIN:DAYLIGHT
 581.206 +TZOFFSETFROM:+0100
 581.207 +TZOFFSETTO:+0200
 581.208 +TZNAME:CEST
 581.209 +DTSTART:19930328T020000
 581.210 +RDATE:19930328T020000
 581.211 +RDATE:19940327T020000
 581.212 +RDATE:19950326T020000
 581.213 +END:DAYLIGHT
 581.214 +BEGIN:STANDARD
 581.215 +TZOFFSETFROM:+0200
 581.216 +TZOFFSETTO:+0100
 581.217 +TZNAME:CET
 581.218 +DTSTART:19930926T030000
 581.219 +RDATE:19930926T030000
 581.220 +RDATE:19940925T030000
 581.221 +RDATE:19950924T030000
 581.222 +END:STANDARD
 581.223 +BEGIN:DAYLIGHT
 581.224 +TZOFFSETFROM:+0100
 581.225 +TZOFFSETTO:+0100
 581.226 +TZNAME:WEST
 581.227 +DTSTART:19960331T020000
 581.228 +RDATE:19960331T020000
 581.229 +END:DAYLIGHT
 581.230 +END:VTIMEZONE
 581.231 +END:VCALENDAR
   582.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   582.2 +++ b/src/zoneinfo-global/Europe/Ljubljana.ics	Tue Feb 10 18:12:00 2015 +0100
   582.3 @@ -0,0 +1,71 @@
   582.4 +BEGIN:VCALENDAR
   582.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   582.6 +VERSION:2.0
   582.7 +BEGIN:VTIMEZONE
   582.8 +TZID:Europe/Ljubljana
   582.9 +TZURL:http://tzurl.org/zoneinfo-global/Europe/Ljubljana
  582.10 +X-LIC-LOCATION:Europe/Ljubljana
  582.11 +BEGIN:DAYLIGHT
  582.12 +TZOFFSETFROM:+0100
  582.13 +TZOFFSETTO:+0200
  582.14 +TZNAME:CEST
  582.15 +DTSTART:19830327T020000
  582.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  582.17 +END:DAYLIGHT
  582.18 +BEGIN:STANDARD
  582.19 +TZOFFSETFROM:+0200
  582.20 +TZOFFSETTO:+0100
  582.21 +TZNAME:CET
  582.22 +DTSTART:19961027T030000
  582.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  582.24 +END:STANDARD
  582.25 +BEGIN:STANDARD
  582.26 +TZOFFSETFROM:+0122
  582.27 +TZOFFSETTO:+0100
  582.28 +TZNAME:CET
  582.29 +DTSTART:18840101T000000
  582.30 +RDATE:18840101T000000
  582.31 +END:STANDARD
  582.32 +BEGIN:DAYLIGHT
  582.33 +TZOFFSETFROM:+0100
  582.34 +TZOFFSETTO:+0200
  582.35 +TZNAME:CEST
  582.36 +DTSTART:19410418T230000
  582.37 +RDATE:19410418T230000
  582.38 +RDATE:19430329T020000
  582.39 +RDATE:19440403T020000
  582.40 +RDATE:19450508T020000
  582.41 +END:DAYLIGHT
  582.42 +BEGIN:STANDARD
  582.43 +TZOFFSETFROM:+0200
  582.44 +TZOFFSETTO:+0100
  582.45 +TZNAME:CET
  582.46 +DTSTART:19421102T030000
  582.47 +RDATE:19421102T030000
  582.48 +RDATE:19431004T030000
  582.49 +RDATE:19441002T030000
  582.50 +RDATE:19450916T030000
  582.51 +RDATE:19830925T030000
  582.52 +RDATE:19840930T030000
  582.53 +RDATE:19850929T030000
  582.54 +RDATE:19860928T030000
  582.55 +RDATE:19870927T030000
  582.56 +RDATE:19880925T030000
  582.57 +RDATE:19890924T030000
  582.58 +RDATE:19900930T030000
  582.59 +RDATE:19910929T030000
  582.60 +RDATE:19920927T030000
  582.61 +RDATE:19930926T030000
  582.62 +RDATE:19940925T030000
  582.63 +RDATE:19950924T030000
  582.64 +END:STANDARD
  582.65 +BEGIN:STANDARD
  582.66 +TZOFFSETFROM:+0100
  582.67 +TZOFFSETTO:+0100
  582.68 +TZNAME:CET
  582.69 +DTSTART:19450101T000000
  582.70 +RDATE:19450101T000000
  582.71 +RDATE:19821127T000000
  582.72 +END:STANDARD
  582.73 +END:VTIMEZONE
  582.74 +END:VCALENDAR
   583.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   583.2 +++ b/src/zoneinfo-global/Europe/London.ics	Tue Feb 10 18:12:00 2015 +0100
   583.3 @@ -0,0 +1,209 @@
   583.4 +BEGIN:VCALENDAR
   583.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   583.6 +VERSION:2.0
   583.7 +BEGIN:VTIMEZONE
   583.8 +TZID:Europe/London
   583.9 +TZURL:http://tzurl.org/zoneinfo-global/Europe/London
  583.10 +X-LIC-LOCATION:Europe/London
  583.11 +BEGIN:DAYLIGHT
  583.12 +TZOFFSETFROM:+0000
  583.13 +TZOFFSETTO:+0100
  583.14 +TZNAME:BST
  583.15 +DTSTART:19810329T010000
  583.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  583.17 +END:DAYLIGHT
  583.18 +BEGIN:STANDARD
  583.19 +TZOFFSETFROM:+0100
  583.20 +TZOFFSETTO:+0000
  583.21 +TZNAME:GMT
  583.22 +DTSTART:19961027T020000
  583.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  583.24 +END:STANDARD
  583.25 +BEGIN:STANDARD
  583.26 +TZOFFSETFROM:-000115
  583.27 +TZOFFSETTO:+0000
  583.28 +TZNAME:GMT
  583.29 +DTSTART:18471201T000000
  583.30 +RDATE:18471201T000000
  583.31 +END:STANDARD
  583.32 +BEGIN:DAYLIGHT
  583.33 +TZOFFSETFROM:+0000
  583.34 +TZOFFSETTO:+0100
  583.35 +TZNAME:BST
  583.36 +DTSTART:19160521T020000
  583.37 +RDATE:19160521T020000
  583.38 +RDATE:19170408T020000
  583.39 +RDATE:19180324T020000
  583.40 +RDATE:19190330T020000
  583.41 +RDATE:19200328T020000
  583.42 +RDATE:19210403T020000
  583.43 +RDATE:19220326T020000
  583.44 +RDATE:19230422T020000
  583.45 +RDATE:19240413T020000
  583.46 +RDATE:19250419T020000
  583.47 +RDATE:19260418T020000
  583.48 +RDATE:19270410T020000
  583.49 +RDATE:19280422T020000
  583.50 +RDATE:19290421T020000
  583.51 +RDATE:19300413T020000
  583.52 +RDATE:19310419T020000
  583.53 +RDATE:19320417T020000
  583.54 +RDATE:19330409T020000
  583.55 +RDATE:19340422T020000
  583.56 +RDATE:19350414T020000
  583.57 +RDATE:19360419T020000
  583.58 +RDATE:19370418T020000
  583.59 +RDATE:19380410T020000
  583.60 +RDATE:19390416T020000
  583.61 +RDATE:19400225T020000
  583.62 +RDATE:19460414T020000
  583.63 +RDATE:19470316T020000
  583.64 +RDATE:19480314T020000
  583.65 +RDATE:19490403T020000
  583.66 +RDATE:19500416T020000
  583.67 +RDATE:19510415T020000
  583.68 +RDATE:19520420T020000
  583.69 +RDATE:19530419T020000
  583.70 +RDATE:19540411T020000
  583.71 +RDATE:19550417T020000
  583.72 +RDATE:19560422T020000
  583.73 +RDATE:19570414T020000
  583.74 +RDATE:19580420T020000
  583.75 +RDATE:19590419T020000
  583.76 +RDATE:19600410T020000
  583.77 +RDATE:19610326T020000
  583.78 +RDATE:19620325T020000
  583.79 +RDATE:19630331T020000
  583.80 +RDATE:19640322T020000
  583.81 +RDATE:19650321T020000
  583.82 +RDATE:19660320T020000
  583.83 +RDATE:19670319T020000
  583.84 +RDATE:19680218T020000
  583.85 +RDATE:19720319T020000
  583.86 +RDATE:19730318T020000
  583.87 +RDATE:19740317T020000
  583.88 +RDATE:19750316T020000
  583.89 +RDATE:19760321T020000
  583.90 +RDATE:19770320T020000
  583.91 +RDATE:19780319T020000
  583.92 +RDATE:19790318T020000
  583.93 +RDATE:19800316T020000
  583.94 +END:DAYLIGHT
  583.95 +BEGIN:STANDARD
  583.96 +TZOFFSETFROM:+0100
  583.97 +TZOFFSETTO:+0000
  583.98 +TZNAME:GMT
  583.99 +DTSTART:19161001T030000
 583.100 +RDATE:19161001T030000
 583.101 +RDATE:19170917T030000
 583.102 +RDATE:19180930T030000
 583.103 +RDATE:19190929T030000
 583.104 +RDATE:19201025T030000
 583.105 +RDATE:19211003T030000
 583.106 +RDATE:19221008T030000
 583.107 +RDATE:19230916T030000
 583.108 +RDATE:19240921T030000
 583.109 +RDATE:19251004T030000
 583.110 +RDATE:19261003T030000
 583.111 +RDATE:19271002T030000
 583.112 +RDATE:19281007T030000
 583.113 +RDATE:19291006T030000
 583.114 +RDATE:19301005T030000
 583.115 +RDATE:19311004T030000
 583.116 +RDATE:19321002T030000
 583.117 +RDATE:19331008T030000
 583.118 +RDATE:19341007T030000
 583.119 +RDATE:19351006T030000
 583.120 +RDATE:19361004T030000
 583.121 +RDATE:19371003T030000
 583.122 +RDATE:19381002T030000
 583.123 +RDATE:19391119T030000
 583.124 +RDATE:19451007T030000
 583.125 +RDATE:19461006T030000
 583.126 +RDATE:19471102T030000
 583.127 +RDATE:19481031T030000
 583.128 +RDATE:19491030T030000
 583.129 +RDATE:19501022T030000
 583.130 +RDATE:19511021T030000
 583.131 +RDATE:19521026T030000
 583.132 +RDATE:19531004T030000
 583.133 +RDATE:19541003T030000
 583.134 +RDATE:19551002T030000
 583.135 +RDATE:19561007T030000
 583.136 +RDATE:19571006T030000
 583.137 +RDATE:19581005T030000
 583.138 +RDATE:19591004T030000
 583.139 +RDATE:19601002T030000
 583.140 +RDATE:19611029T030000
 583.141 +RDATE:19621028T030000
 583.142 +RDATE:19631027T030000
 583.143 +RDATE:19641025T030000
 583.144 +RDATE:19651024T030000
 583.145 +RDATE:19661023T030000
 583.146 +RDATE:19671029T030000
 583.147 +RDATE:19711031T030000
 583.148 +RDATE:19721029T030000
 583.149 +RDATE:19731028T030000
 583.150 +RDATE:19741027T030000
 583.151 +RDATE:19751026T030000
 583.152 +RDATE:19761024T030000
 583.153 +RDATE:19771023T030000
 583.154 +RDATE:19781029T030000
 583.155 +RDATE:19791028T030000
 583.156 +RDATE:19801026T030000
 583.157 +RDATE:19811025T020000
 583.158 +RDATE:19821024T020000
 583.159 +RDATE:19831023T020000
 583.160 +RDATE:19841028T020000
 583.161 +RDATE:19851027T020000
 583.162 +RDATE:19861026T020000
 583.163 +RDATE:19871025T020000
 583.164 +RDATE:19881023T020000
 583.165 +RDATE:19891029T020000
 583.166 +RDATE:19901028T020000
 583.167 +RDATE:19911027T020000
 583.168 +RDATE:19921025T020000
 583.169 +RDATE:19931024T020000
 583.170 +RDATE:19941023T020000
 583.171 +RDATE:19951022T020000
 583.172 +END:STANDARD
 583.173 +BEGIN:DAYLIGHT
 583.174 +TZOFFSETFROM:+0100
 583.175 +TZOFFSETTO:+0200
 583.176 +TZNAME:BDST
 583.177 +DTSTART:19410504T020000
 583.178 +RDATE:19410504T020000
 583.179 +RDATE:19420405T020000
 583.180 +RDATE:19430404T020000
 583.181 +RDATE:19440402T020000
 583.182 +RDATE:19450402T020000
 583.183 +RDATE:19470413T020000
 583.184 +END:DAYLIGHT
 583.185 +BEGIN:DAYLIGHT
 583.186 +TZOFFSETFROM:+0200
 583.187 +TZOFFSETTO:+0100
 583.188 +TZNAME:BST
 583.189 +DTSTART:19410810T030000
 583.190 +RDATE:19410810T030000
 583.191 +RDATE:19420809T030000
 583.192 +RDATE:19430815T030000
 583.193 +RDATE:19440917T030000
 583.194 +RDATE:19450715T030000
 583.195 +RDATE:19470810T030000
 583.196 +END:DAYLIGHT
 583.197 +BEGIN:STANDARD
 583.198 +TZOFFSETFROM:+0100
 583.199 +TZOFFSETTO:+0100
 583.200 +TZNAME:BST
 583.201 +DTSTART:19681027T000000
 583.202 +RDATE:19681027T000000
 583.203 +END:STANDARD
 583.204 +BEGIN:STANDARD
 583.205 +TZOFFSETFROM:+0000
 583.206 +TZOFFSETTO:+0000
 583.207 +TZNAME:GMT
 583.208 +DTSTART:19960101T000000
 583.209 +RDATE:19960101T000000
 583.210 +END:STANDARD
 583.211 +END:VTIMEZONE
 583.212 +END:VCALENDAR
   584.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   584.2 +++ b/src/zoneinfo-global/Europe/Luxembourg.ics	Tue Feb 10 18:12:00 2015 +0100
   584.3 @@ -0,0 +1,156 @@
   584.4 +BEGIN:VCALENDAR
   584.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   584.6 +VERSION:2.0
   584.7 +BEGIN:VTIMEZONE
   584.8 +TZID:Europe/Luxembourg
   584.9 +TZURL:http://tzurl.org/zoneinfo-global/Europe/Luxembourg
  584.10 +X-LIC-LOCATION:Europe/Luxembourg
  584.11 +BEGIN:DAYLIGHT
  584.12 +TZOFFSETFROM:+0100
  584.13 +TZOFFSETTO:+0200
  584.14 +TZNAME:CEST
  584.15 +DTSTART:19810329T020000
  584.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  584.17 +END:DAYLIGHT
  584.18 +BEGIN:STANDARD
  584.19 +TZOFFSETFROM:+0200
  584.20 +TZOFFSETTO:+0100
  584.21 +TZNAME:CET
  584.22 +DTSTART:19961027T030000
  584.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  584.24 +END:STANDARD
  584.25 +BEGIN:STANDARD
  584.26 +TZOFFSETFROM:+002436
  584.27 +TZOFFSETTO:+0100
  584.28 +TZNAME:CET
  584.29 +DTSTART:19040601T000000
  584.30 +RDATE:19040601T000000
  584.31 +END:STANDARD
  584.32 +BEGIN:DAYLIGHT
  584.33 +TZOFFSETFROM:+0100
  584.34 +TZOFFSETTO:+0200
  584.35 +TZNAME:CEST
  584.36 +DTSTART:19160514T230000
  584.37 +RDATE:19160514T230000
  584.38 +RDATE:19170428T230000
  584.39 +RDATE:19180415T020000
  584.40 +RDATE:19450402T020000
  584.41 +RDATE:19460519T020000
  584.42 +RDATE:19770403T020000
  584.43 +RDATE:19780402T020000
  584.44 +RDATE:19790401T020000
  584.45 +RDATE:19800406T020000
  584.46 +END:DAYLIGHT
  584.47 +BEGIN:STANDARD
  584.48 +TZOFFSETFROM:+0200
  584.49 +TZOFFSETTO:+0100
  584.50 +TZNAME:CET
  584.51 +DTSTART:19161001T010000
  584.52 +RDATE:19161001T010000
  584.53 +RDATE:19170917T010000
  584.54 +RDATE:19180916T030000
  584.55 +RDATE:19440918T030000
  584.56 +RDATE:19450916T030000
  584.57 +RDATE:19461007T030000
  584.58 +RDATE:19770925T030000
  584.59 +RDATE:19781001T030000
  584.60 +RDATE:19790930T030000
  584.61 +RDATE:19800928T030000
  584.62 +RDATE:19810927T030000
  584.63 +RDATE:19820926T030000
  584.64 +RDATE:19830925T030000
  584.65 +RDATE:19840930T030000
  584.66 +RDATE:19850929T030000
  584.67 +RDATE:19860928T030000
  584.68 +RDATE:19870927T030000
  584.69 +RDATE:19880925T030000
  584.70 +RDATE:19890924T030000
  584.71 +RDATE:19900930T030000
  584.72 +RDATE:19910929T030000
  584.73 +RDATE:19920927T030000
  584.74 +RDATE:19930926T030000
  584.75 +RDATE:19940925T030000
  584.76 +RDATE:19950924T030000
  584.77 +END:STANDARD
  584.78 +BEGIN:STANDARD
  584.79 +TZOFFSETFROM:+0100
  584.80 +TZOFFSETTO:+0000
  584.81 +TZNAME:WET
  584.82 +DTSTART:19181125T000000
  584.83 +RDATE:19181125T000000
  584.84 +RDATE:19191005T030000
  584.85 +RDATE:19201024T020000
  584.86 +RDATE:19211026T020000
  584.87 +RDATE:19221008T010000
  584.88 +RDATE:19231007T020000
  584.89 +RDATE:19241005T010000
  584.90 +RDATE:19251004T010000
  584.91 +RDATE:19261003T010000
  584.92 +RDATE:19271002T010000
  584.93 +RDATE:19281007T010000
  584.94 +RDATE:19291006T030000
  584.95 +RDATE:19301005T030000
  584.96 +RDATE:19311004T030000
  584.97 +RDATE:19321002T030000
  584.98 +RDATE:19331008T030000
  584.99 +RDATE:19341007T030000
 584.100 +RDATE:19351006T030000
 584.101 +RDATE:19361004T030000
 584.102 +RDATE:19371003T030000
 584.103 +RDATE:19381002T030000
 584.104 +RDATE:19391119T030000
 584.105 +END:STANDARD
 584.106 +BEGIN:DAYLIGHT
 584.107 +TZOFFSETFROM:+0000
 584.108 +TZOFFSETTO:+0100
 584.109 +TZNAME:WEST
 584.110 +DTSTART:19190301T230000
 584.111 +RDATE:19190301T230000
 584.112 +RDATE:19200214T230000
 584.113 +RDATE:19210314T230000
 584.114 +RDATE:19220325T230000
 584.115 +RDATE:19230421T230000
 584.116 +RDATE:19240329T230000
 584.117 +RDATE:19250405T230000
 584.118 +RDATE:19260417T230000
 584.119 +RDATE:19270409T230000
 584.120 +RDATE:19280414T230000
 584.121 +RDATE:19290420T230000
 584.122 +RDATE:19300413T020000
 584.123 +RDATE:19310419T020000
 584.124 +RDATE:19320403T020000
 584.125 +RDATE:19330326T020000
 584.126 +RDATE:19340408T020000
 584.127 +RDATE:19350331T020000
 584.128 +RDATE:19360419T020000
 584.129 +RDATE:19370404T020000
 584.130 +RDATE:19380327T020000
 584.131 +RDATE:19390416T020000
 584.132 +RDATE:19400225T020000
 584.133 +END:DAYLIGHT
 584.134 +BEGIN:DAYLIGHT
 584.135 +TZOFFSETFROM:+0100
 584.136 +TZOFFSETTO:+0200
 584.137 +TZNAME:WEST
 584.138 +DTSTART:19400514T030000
 584.139 +RDATE:19400514T030000
 584.140 +RDATE:19430329T020000
 584.141 +RDATE:19440403T020000
 584.142 +END:DAYLIGHT
 584.143 +BEGIN:STANDARD
 584.144 +TZOFFSETFROM:+0200
 584.145 +TZOFFSETTO:+0100
 584.146 +TZNAME:WET
 584.147 +DTSTART:19421102T030000
 584.148 +RDATE:19421102T030000
 584.149 +RDATE:19431004T030000
 584.150 +END:STANDARD
 584.151 +BEGIN:STANDARD
 584.152 +TZOFFSETFROM:+0100
 584.153 +TZOFFSETTO:+0100
 584.154 +TZNAME:CET
 584.155 +DTSTART:19770101T000000
 584.156 +RDATE:19770101T000000
 584.157 +END:STANDARD
 584.158 +END:VTIMEZONE
 584.159 +END:VCALENDAR
   585.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   585.2 +++ b/src/zoneinfo-global/Europe/Madrid.ics	Tue Feb 10 18:12:00 2015 +0100
   585.3 @@ -0,0 +1,137 @@
   585.4 +BEGIN:VCALENDAR
   585.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   585.6 +VERSION:2.0
   585.7 +BEGIN:VTIMEZONE
   585.8 +TZID:Europe/Madrid
   585.9 +TZURL:http://tzurl.org/zoneinfo-global/Europe/Madrid
  585.10 +X-LIC-LOCATION:Europe/Madrid
  585.11 +BEGIN:DAYLIGHT
  585.12 +TZOFFSETFROM:+0100
  585.13 +TZOFFSETTO:+0200
  585.14 +TZNAME:CEST
  585.15 +DTSTART:19810329T020000
  585.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  585.17 +END:DAYLIGHT
  585.18 +BEGIN:STANDARD
  585.19 +TZOFFSETFROM:+0200
  585.20 +TZOFFSETTO:+0100
  585.21 +TZNAME:CET
  585.22 +DTSTART:19961027T030000
  585.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  585.24 +END:STANDARD
  585.25 +BEGIN:STANDARD
  585.26 +TZOFFSETFROM:-001444
  585.27 +TZOFFSETTO:+0000
  585.28 +TZNAME:WET
  585.29 +DTSTART:19010101T000000
  585.30 +RDATE:19010101T000000
  585.31 +END:STANDARD
  585.32 +BEGIN:DAYLIGHT
  585.33 +TZOFFSETFROM:+0000
  585.34 +TZOFFSETTO:+0100
  585.35 +TZNAME:WEST
  585.36 +DTSTART:19170505T230000
  585.37 +RDATE:19170505T230000
  585.38 +RDATE:19180415T230000
  585.39 +RDATE:19190405T230000
  585.40 +RDATE:19240416T230000
  585.41 +RDATE:19260417T230000
  585.42 +RDATE:19270409T230000
  585.43 +RDATE:19280414T230000
  585.44 +RDATE:19290420T230000
  585.45 +RDATE:19370522T230000
  585.46 +RDATE:19380322T230000
  585.47 +RDATE:19390415T230000
  585.48 +RDATE:19400316T230000
  585.49 +END:DAYLIGHT
  585.50 +BEGIN:STANDARD
  585.51 +TZOFFSETFROM:+0100
  585.52 +TZOFFSETTO:+0000
  585.53 +TZNAME:WET
  585.54 +DTSTART:19171007T000000
  585.55 +RDATE:19171007T000000
  585.56 +RDATE:19181007T000000
  585.57 +RDATE:19191007T000000
  585.58 +RDATE:19241005T000000
  585.59 +RDATE:19261003T000000
  585.60 +RDATE:19271002T000000
  585.61 +RDATE:19281007T000000
  585.62 +RDATE:19291006T000000
  585.63 +RDATE:19371003T000000
  585.64 +RDATE:19381002T000000
  585.65 +RDATE:19391008T000000
  585.66 +END:STANDARD
  585.67 +BEGIN:DAYLIGHT
  585.68 +TZOFFSETFROM:+0100
  585.69 +TZOFFSETTO:+0200
  585.70 +TZNAME:WEMT
  585.71 +DTSTART:19420502T230000
  585.72 +RDATE:19420502T230000
  585.73 +RDATE:19430417T230000
  585.74 +RDATE:19440415T230000
  585.75 +RDATE:19450414T230000
  585.76 +RDATE:19460413T230000
  585.77 +END:DAYLIGHT
  585.78 +BEGIN:DAYLIGHT
  585.79 +TZOFFSETFROM:+0200
  585.80 +TZOFFSETTO:+0100
  585.81 +TZNAME:WEST
  585.82 +DTSTART:19420902T000000
  585.83 +RDATE:19420902T000000
  585.84 +RDATE:19431004T000000
  585.85 +RDATE:19441011T000000
  585.86 +RDATE:19450930T010000
  585.87 +END:DAYLIGHT
  585.88 +BEGIN:STANDARD
  585.89 +TZOFFSETFROM:+0200
  585.90 +TZOFFSETTO:+0100
  585.91 +TZNAME:CET
  585.92 +DTSTART:19460930T000000
  585.93 +RDATE:19460930T000000
  585.94 +RDATE:19490930T010000
  585.95 +RDATE:19741006T010000
  585.96 +RDATE:19751005T010000
  585.97 +RDATE:19760926T010000
  585.98 +RDATE:19770925T010000
  585.99 +RDATE:19781001T010000
 585.100 +RDATE:19790930T030000
 585.101 +RDATE:19800928T030000
 585.102 +RDATE:19810927T030000
 585.103 +RDATE:19820926T030000
 585.104 +RDATE:19830925T030000
 585.105 +RDATE:19840930T030000
 585.106 +RDATE:19850929T030000
 585.107 +RDATE:19860928T030000
 585.108 +RDATE:19870927T030000
 585.109 +RDATE:19880925T030000
 585.110 +RDATE:19890924T030000
 585.111 +RDATE:19900930T030000
 585.112 +RDATE:19910929T030000
 585.113 +RDATE:19920927T030000
 585.114 +RDATE:19930926T030000
 585.115 +RDATE:19940925T030000
 585.116 +RDATE:19950924T030000
 585.117 +END:STANDARD
 585.118 +BEGIN:DAYLIGHT
 585.119 +TZOFFSETFROM:+0100
 585.120 +TZOFFSETTO:+0200
 585.121 +TZNAME:CEST
 585.122 +DTSTART:19490430T230000
 585.123 +RDATE:19490430T230000
 585.124 +RDATE:19740413T230000
 585.125 +RDATE:19750419T230000
 585.126 +RDATE:19760327T230000
 585.127 +RDATE:19770402T230000
 585.128 +RDATE:19780402T230000
 585.129 +RDATE:19790401T020000
 585.130 +RDATE:19800406T020000
 585.131 +END:DAYLIGHT
 585.132 +BEGIN:STANDARD
 585.133 +TZOFFSETFROM:+0100
 585.134 +TZOFFSETTO:+0100
 585.135 +TZNAME:CET
 585.136 +DTSTART:19790101T000000
 585.137 +RDATE:19790101T000000
 585.138 +END:STANDARD
 585.139 +END:VTIMEZONE
 585.140 +END:VCALENDAR
   586.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   586.2 +++ b/src/zoneinfo-global/Europe/Malta.ics	Tue Feb 10 18:12:00 2015 +0100
   586.3 @@ -0,0 +1,118 @@
   586.4 +BEGIN:VCALENDAR
   586.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   586.6 +VERSION:2.0
   586.7 +BEGIN:VTIMEZONE
   586.8 +TZID:Europe/Malta
   586.9 +TZURL:http://tzurl.org/zoneinfo-global/Europe/Malta
  586.10 +X-LIC-LOCATION:Europe/Malta
  586.11 +BEGIN:DAYLIGHT
  586.12 +TZOFFSETFROM:+0100
  586.13 +TZOFFSETTO:+0200
  586.14 +TZNAME:CEST
  586.15 +DTSTART:19810329T020000
  586.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  586.17 +END:DAYLIGHT
  586.18 +BEGIN:STANDARD
  586.19 +TZOFFSETFROM:+0200
  586.20 +TZOFFSETTO:+0100
  586.21 +TZNAME:CET
  586.22 +DTSTART:19961027T030000
  586.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  586.24 +END:STANDARD
  586.25 +BEGIN:STANDARD
  586.26 +TZOFFSETFROM:+005804
  586.27 +TZOFFSETTO:+0100
  586.28 +TZNAME:CET
  586.29 +DTSTART:18931102T000000
  586.30 +RDATE:18931102T000000
  586.31 +END:STANDARD
  586.32 +BEGIN:DAYLIGHT
  586.33 +TZOFFSETFROM:+0100
  586.34 +TZOFFSETTO:+0200
  586.35 +TZNAME:CEST
  586.36 +DTSTART:19160603T000000
  586.37 +RDATE:19160603T000000
  586.38 +RDATE:19170401T000000
  586.39 +RDATE:19180310T000000
  586.40 +RDATE:19190302T000000
  586.41 +RDATE:19200321T000000
  586.42 +RDATE:19400615T000000
  586.43 +RDATE:19430329T020000
  586.44 +RDATE:19440403T020000
  586.45 +RDATE:19450402T020000
  586.46 +RDATE:19460317T020000
  586.47 +RDATE:19470316T000000
  586.48 +RDATE:19480229T020000
  586.49 +RDATE:19660522T000000
  586.50 +RDATE:19670528T000000
  586.51 +RDATE:19680526T000000
  586.52 +RDATE:19690601T000000
  586.53 +RDATE:19700531T000000
  586.54 +RDATE:19710523T000000
  586.55 +RDATE:19720528T000000
  586.56 +RDATE:19730331T000000
  586.57 +RDATE:19740421T000000
  586.58 +RDATE:19750420T020000
  586.59 +RDATE:19760418T020000
  586.60 +RDATE:19770417T020000
  586.61 +RDATE:19780416T020000
  586.62 +RDATE:19790415T020000
  586.63 +RDATE:19800331T020000
  586.64 +END:DAYLIGHT
  586.65 +BEGIN:STANDARD
  586.66 +TZOFFSETFROM:+0200
  586.67 +TZOFFSETTO:+0100
  586.68 +TZNAME:CET
  586.69 +DTSTART:19161001T010000
  586.70 +RDATE:19161001T010000
  586.71 +RDATE:19170930T010000
  586.72 +RDATE:19181006T010000
  586.73 +RDATE:19191005T010000
  586.74 +RDATE:19200919T010000
  586.75 +RDATE:19421102T030000
  586.76 +RDATE:19431004T030000
  586.77 +RDATE:19441002T030000
  586.78 +RDATE:19450915T010000
  586.79 +RDATE:19461006T030000
  586.80 +RDATE:19471005T010000
  586.81 +RDATE:19481003T030000
  586.82 +RDATE:19660925T000000
  586.83 +RDATE:19670924T000000
  586.84 +RDATE:19680922T000000
  586.85 +RDATE:19690928T000000
  586.86 +RDATE:19700927T000000
  586.87 +RDATE:19710926T010000
  586.88 +RDATE:19721001T000000
  586.89 +RDATE:19730929T010000
  586.90 +RDATE:19740916T010000
  586.91 +RDATE:19750921T020000
  586.92 +RDATE:19760919T020000
  586.93 +RDATE:19770918T020000
  586.94 +RDATE:19780917T020000
  586.95 +RDATE:19790916T020000
  586.96 +RDATE:19800921T020000
  586.97 +RDATE:19810927T030000
  586.98 +RDATE:19820926T030000
  586.99 +RDATE:19830925T030000
 586.100 +RDATE:19840930T030000
 586.101 +RDATE:19850929T030000
 586.102 +RDATE:19860928T030000
 586.103 +RDATE:19870927T030000
 586.104 +RDATE:19880925T030000
 586.105 +RDATE:19890924T030000
 586.106 +RDATE:19900930T030000
 586.107 +RDATE:19910929T030000
 586.108 +RDATE:19920927T030000
 586.109 +RDATE:19930926T030000
 586.110 +RDATE:19940925T030000
 586.111 +RDATE:19950924T030000
 586.112 +END:STANDARD
 586.113 +BEGIN:STANDARD
 586.114 +TZOFFSETFROM:+0100
 586.115 +TZOFFSETTO:+0100
 586.116 +TZNAME:CET
 586.117 +DTSTART:19810101T000000
 586.118 +RDATE:19810101T000000
 586.119 +END:STANDARD
 586.120 +END:VTIMEZONE
 586.121 +END:VCALENDAR
   587.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   587.2 +++ b/src/zoneinfo-global/Europe/Mariehamn.ics	Tue Feb 10 18:12:00 2015 +0100
   587.3 @@ -0,0 +1,75 @@
   587.4 +BEGIN:VCALENDAR
   587.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   587.6 +VERSION:2.0
   587.7 +BEGIN:VTIMEZONE
   587.8 +TZID:Europe/Mariehamn
   587.9 +TZURL:http://tzurl.org/zoneinfo-global/Europe/Mariehamn
  587.10 +X-LIC-LOCATION:Europe/Mariehamn
  587.11 +BEGIN:DAYLIGHT
  587.12 +TZOFFSETFROM:+0200
  587.13 +TZOFFSETTO:+0300
  587.14 +TZNAME:EEST
  587.15 +DTSTART:19830327T030000
  587.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  587.17 +END:DAYLIGHT
  587.18 +BEGIN:STANDARD
  587.19 +TZOFFSETFROM:+0300
  587.20 +TZOFFSETTO:+0200
  587.21 +TZNAME:EET
  587.22 +DTSTART:19961027T040000
  587.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  587.24 +END:STANDARD
  587.25 +BEGIN:STANDARD
  587.26 +TZOFFSETFROM:+013952
  587.27 +TZOFFSETTO:+013952
  587.28 +TZNAME:HMT
  587.29 +DTSTART:18780531T000000
  587.30 +RDATE:18780531T000000
  587.31 +END:STANDARD
  587.32 +BEGIN:STANDARD
  587.33 +TZOFFSETFROM:+013952
  587.34 +TZOFFSETTO:+0200
  587.35 +TZNAME:EET
  587.36 +DTSTART:19210501T000000
  587.37 +RDATE:19210501T000000
  587.38 +END:STANDARD
  587.39 +BEGIN:DAYLIGHT
  587.40 +TZOFFSETFROM:+0200
  587.41 +TZOFFSETTO:+0300
  587.42 +TZNAME:EEST
  587.43 +DTSTART:19420403T000000
  587.44 +RDATE:19420403T000000
  587.45 +RDATE:19810329T020000
  587.46 +RDATE:19820328T020000
  587.47 +END:DAYLIGHT
  587.48 +BEGIN:STANDARD
  587.49 +TZOFFSETFROM:+0300
  587.50 +TZOFFSETTO:+0200
  587.51 +TZNAME:EET
  587.52 +DTSTART:19421003T000000
  587.53 +RDATE:19421003T000000
  587.54 +RDATE:19810927T030000
  587.55 +RDATE:19820926T030000
  587.56 +RDATE:19830925T040000
  587.57 +RDATE:19840930T040000
  587.58 +RDATE:19850929T040000
  587.59 +RDATE:19860928T040000
  587.60 +RDATE:19870927T040000
  587.61 +RDATE:19880925T040000
  587.62 +RDATE:19890924T040000
  587.63 +RDATE:19900930T040000
  587.64 +RDATE:19910929T040000
  587.65 +RDATE:19920927T040000
  587.66 +RDATE:19930926T040000
  587.67 +RDATE:19940925T040000
  587.68 +RDATE:19950924T040000
  587.69 +END:STANDARD
  587.70 +BEGIN:STANDARD
  587.71 +TZOFFSETFROM:+0200
  587.72 +TZOFFSETTO:+0200
  587.73 +TZNAME:EET
  587.74 +DTSTART:19830101T000000
  587.75 +RDATE:19830101T000000
  587.76 +END:STANDARD
  587.77 +END:VTIMEZONE
  587.78 +END:VCALENDAR
   588.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   588.2 +++ b/src/zoneinfo-global/Europe/Minsk.ics	Tue Feb 10 18:12:00 2015 +0100
   588.3 @@ -0,0 +1,156 @@
   588.4 +BEGIN:VCALENDAR
   588.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   588.6 +VERSION:2.0
   588.7 +BEGIN:VTIMEZONE
   588.8 +TZID:Europe/Minsk
   588.9 +TZURL:http://tzurl.org/zoneinfo-global/Europe/Minsk
  588.10 +X-LIC-LOCATION:Europe/Minsk
  588.11 +BEGIN:STANDARD
  588.12 +TZOFFSETFROM:+015016
  588.13 +TZOFFSETTO:+0150
  588.14 +TZNAME:MMT
  588.15 +DTSTART:18800101T000000
  588.16 +RDATE:18800101T000000
  588.17 +END:STANDARD
  588.18 +BEGIN:STANDARD
  588.19 +TZOFFSETFROM:+0150
  588.20 +TZOFFSETTO:+0200
  588.21 +TZNAME:EET
  588.22 +DTSTART:19240502T000000
  588.23 +RDATE:19240502T000000
  588.24 +END:STANDARD
  588.25 +BEGIN:STANDARD
  588.26 +TZOFFSETFROM:+0200
  588.27 +TZOFFSETTO:+0300
  588.28 +TZNAME:MSK
  588.29 +DTSTART:19300621T000000
  588.30 +RDATE:19300621T000000
  588.31 +RDATE:19440703T000000
  588.32 +END:STANDARD
  588.33 +BEGIN:DAYLIGHT
  588.34 +TZOFFSETFROM:+0300
  588.35 +TZOFFSETTO:+0200
  588.36 +TZNAME:CEST
  588.37 +DTSTART:19410628T000000
  588.38 +RDATE:19410628T000000
  588.39 +END:DAYLIGHT
  588.40 +BEGIN:STANDARD
  588.41 +TZOFFSETFROM:+0200
  588.42 +TZOFFSETTO:+0100
  588.43 +TZNAME:CET
  588.44 +DTSTART:19421102T030000
  588.45 +RDATE:19421102T030000
  588.46 +RDATE:19431004T030000
  588.47 +END:STANDARD
  588.48 +BEGIN:DAYLIGHT
  588.49 +TZOFFSETFROM:+0100
  588.50 +TZOFFSETTO:+0200
  588.51 +TZNAME:CEST
  588.52 +DTSTART:19430329T020000
  588.53 +RDATE:19430329T020000
  588.54 +RDATE:19440403T020000
  588.55 +END:DAYLIGHT
  588.56 +BEGIN:DAYLIGHT
  588.57 +TZOFFSETFROM:+0300
  588.58 +TZOFFSETTO:+0400
  588.59 +TZNAME:MSD
  588.60 +DTSTART:19810401T000000
  588.61 +RDATE:19810401T000000
  588.62 +RDATE:19820401T000000
  588.63 +RDATE:19830401T000000
  588.64 +RDATE:19840401T000000
  588.65 +RDATE:19850331T020000
  588.66 +RDATE:19860330T020000
  588.67 +RDATE:19870329T020000
  588.68 +RDATE:19880327T020000
  588.69 +RDATE:19890326T020000
  588.70 +END:DAYLIGHT
  588.71 +BEGIN:STANDARD
  588.72 +TZOFFSETFROM:+0400
  588.73 +TZOFFSETTO:+0300
  588.74 +TZNAME:MSK
  588.75 +DTSTART:19811001T000000
  588.76 +RDATE:19811001T000000
  588.77 +RDATE:19821001T000000
  588.78 +RDATE:19831001T000000
  588.79 +RDATE:19840930T030000
  588.80 +RDATE:19850929T030000
  588.81 +RDATE:19860928T030000
  588.82 +RDATE:19870927T030000
  588.83 +RDATE:19880925T030000
  588.84 +RDATE:19890924T030000
  588.85 +END:STANDARD
  588.86 +BEGIN:STANDARD
  588.87 +TZOFFSETFROM:+0300
  588.88 +TZOFFSETTO:+0300
  588.89 +TZNAME:MSK
  588.90 +DTSTART:19900101T000000
  588.91 +RDATE:19900101T000000
  588.92 +END:STANDARD
  588.93 +BEGIN:DAYLIGHT
  588.94 +TZOFFSETFROM:+0300
  588.95 +TZOFFSETTO:+0300
  588.96 +TZNAME:EEST
  588.97 +DTSTART:19910331T020000
  588.98 +RDATE:19910331T020000
  588.99 +END:DAYLIGHT
 588.100 +BEGIN:STANDARD
 588.101 +TZOFFSETFROM:+0300
 588.102 +TZOFFSETTO:+0200
 588.103 +TZNAME:EET
 588.104 +DTSTART:19910929T030000
 588.105 +RDATE:19910929T030000
 588.106 +RDATE:19920927T010000
 588.107 +RDATE:19930926T030000
 588.108 +RDATE:19940925T030000
 588.109 +RDATE:19950924T030000
 588.110 +RDATE:19961027T030000
 588.111 +RDATE:19971026T030000
 588.112 +RDATE:19981025T030000
 588.113 +RDATE:19991031T030000
 588.114 +RDATE:20001029T030000
 588.115 +RDATE:20011028T030000
 588.116 +RDATE:20021027T030000
 588.117 +RDATE:20031026T030000
 588.118 +RDATE:20041031T030000
 588.119 +RDATE:20051030T030000
 588.120 +RDATE:20061029T030000
 588.121 +RDATE:20071028T030000
 588.122 +RDATE:20081026T030000
 588.123 +RDATE:20091025T030000
 588.124 +RDATE:20101031T030000
 588.125 +END:STANDARD
 588.126 +BEGIN:DAYLIGHT
 588.127 +TZOFFSETFROM:+0200
 588.128 +TZOFFSETTO:+0300
 588.129 +TZNAME:EEST
 588.130 +DTSTART:19920329T000000
 588.131 +RDATE:19920329T000000
 588.132 +RDATE:19930328T020000
 588.133 +RDATE:19940327T020000
 588.134 +RDATE:19950326T020000
 588.135 +RDATE:19960331T020000
 588.136 +RDATE:19970330T020000
 588.137 +RDATE:19980329T020000
 588.138 +RDATE:19990328T020000
 588.139 +RDATE:20000326T020000
 588.140 +RDATE:20010325T020000
 588.141 +RDATE:20020331T020000
 588.142 +RDATE:20030330T020000
 588.143 +RDATE:20040328T020000
 588.144 +RDATE:20050327T020000
 588.145 +RDATE:20060326T020000
 588.146 +RDATE:20070325T020000
 588.147 +RDATE:20080330T020000
 588.148 +RDATE:20090329T020000
 588.149 +RDATE:20100328T020000
 588.150 +END:DAYLIGHT
 588.151 +BEGIN:STANDARD
 588.152 +TZOFFSETFROM:+0200
 588.153 +TZOFFSETTO:+0300
 588.154 +TZNAME:FET
 588.155 +DTSTART:20110327T020000
 588.156 +RDATE:20110327T020000
 588.157 +END:STANDARD
 588.158 +END:VTIMEZONE
 588.159 +END:VCALENDAR
   589.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   589.2 +++ b/src/zoneinfo-global/Europe/Monaco.ics	Tue Feb 10 18:12:00 2015 +0100
   589.3 @@ -0,0 +1,164 @@
   589.4 +BEGIN:VCALENDAR
   589.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   589.6 +VERSION:2.0
   589.7 +BEGIN:VTIMEZONE
   589.8 +TZID:Europe/Monaco
   589.9 +TZURL:http://tzurl.org/zoneinfo-global/Europe/Monaco
  589.10 +X-LIC-LOCATION:Europe/Monaco
  589.11 +BEGIN:DAYLIGHT
  589.12 +TZOFFSETFROM:+0100
  589.13 +TZOFFSETTO:+0200
  589.14 +TZNAME:CEST
  589.15 +DTSTART:19810329T020000
  589.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  589.17 +END:DAYLIGHT
  589.18 +BEGIN:STANDARD
  589.19 +TZOFFSETFROM:+0200
  589.20 +TZOFFSETTO:+0100
  589.21 +TZNAME:CET
  589.22 +DTSTART:19961027T030000
  589.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  589.24 +END:STANDARD
  589.25 +BEGIN:STANDARD
  589.26 +TZOFFSETFROM:+002932
  589.27 +TZOFFSETTO:+000921
  589.28 +TZNAME:PMT
  589.29 +DTSTART:18910315T000000
  589.30 +RDATE:18910315T000000
  589.31 +END:STANDARD
  589.32 +BEGIN:STANDARD
  589.33 +TZOFFSETFROM:+000921
  589.34 +TZOFFSETTO:+0000
  589.35 +TZNAME:WET
  589.36 +DTSTART:19110311T000000
  589.37 +RDATE:19110311T000000
  589.38 +END:STANDARD
  589.39 +BEGIN:DAYLIGHT
  589.40 +TZOFFSETFROM:+0000
  589.41 +TZOFFSETTO:+0100
  589.42 +TZNAME:WEST
  589.43 +DTSTART:19160614T230000
  589.44 +RDATE:19160614T230000
  589.45 +RDATE:19170324T230000
  589.46 +RDATE:19180309T230000
  589.47 +RDATE:19190301T230000
  589.48 +RDATE:19200214T230000
  589.49 +RDATE:19210314T230000
  589.50 +RDATE:19220325T230000
  589.51 +RDATE:19230526T230000
  589.52 +RDATE:19240329T230000
  589.53 +RDATE:19250404T230000
  589.54 +RDATE:19260417T230000
  589.55 +RDATE:19270409T230000
  589.56 +RDATE:19280414T230000
  589.57 +RDATE:19290420T230000
  589.58 +RDATE:19300412T230000
  589.59 +RDATE:19310418T230000
  589.60 +RDATE:19320402T230000
  589.61 +RDATE:19330325T230000
  589.62 +RDATE:19340407T230000
  589.63 +RDATE:19350330T230000
  589.64 +RDATE:19360418T230000
  589.65 +RDATE:19370403T230000
  589.66 +RDATE:19380326T230000
  589.67 +RDATE:19390415T230000
  589.68 +RDATE:19400225T020000
  589.69 +END:DAYLIGHT
  589.70 +BEGIN:STANDARD
  589.71 +TZOFFSETFROM:+0100
  589.72 +TZOFFSETTO:+0000
  589.73 +TZNAME:WET
  589.74 +DTSTART:19161002T000000
  589.75 +RDATE:19161002T000000
  589.76 +RDATE:19171008T000000
  589.77 +RDATE:19181007T000000
  589.78 +RDATE:19191006T000000
  589.79 +RDATE:19201024T000000
  589.80 +RDATE:19211026T000000
  589.81 +RDATE:19221008T000000
  589.82 +RDATE:19231007T000000
  589.83 +RDATE:19241005T000000
  589.84 +RDATE:19251004T000000
  589.85 +RDATE:19261003T000000
  589.86 +RDATE:19271002T000000
  589.87 +RDATE:19281007T000000
  589.88 +RDATE:19291006T000000
  589.89 +RDATE:19301005T000000
  589.90 +RDATE:19311004T000000
  589.91 +RDATE:19321002T000000
  589.92 +RDATE:19331008T000000
  589.93 +RDATE:19341007T000000
  589.94 +RDATE:19351006T000000
  589.95 +RDATE:19361004T000000
  589.96 +RDATE:19371003T000000
  589.97 +RDATE:19381002T000000
  589.98 +RDATE:19391119T000000
  589.99 +END:STANDARD
 589.100 +BEGIN:DAYLIGHT
 589.101 +TZOFFSETFROM:+0100
 589.102 +TZOFFSETTO:+0200
 589.103 +TZNAME:WEMT
 589.104 +DTSTART:19410505T000000
 589.105 +RDATE:19410505T000000
 589.106 +RDATE:19420309T000000
 589.107 +RDATE:19430329T020000
 589.108 +RDATE:19440403T020000
 589.109 +RDATE:19450402T020000
 589.110 +END:DAYLIGHT
 589.111 +BEGIN:DAYLIGHT
 589.112 +TZOFFSETFROM:+0200
 589.113 +TZOFFSETTO:+0100
 589.114 +TZNAME:WEST
 589.115 +DTSTART:19411006T000000
 589.116 +RDATE:19411006T000000
 589.117 +RDATE:19421102T030000
 589.118 +RDATE:19431004T030000
 589.119 +RDATE:19441008T010000
 589.120 +END:DAYLIGHT
 589.121 +BEGIN:STANDARD
 589.122 +TZOFFSETFROM:+0200
 589.123 +TZOFFSETTO:+0100
 589.124 +TZNAME:CET
 589.125 +DTSTART:19450916T030000
 589.126 +RDATE:19450916T030000
 589.127 +RDATE:19760926T010000
 589.128 +RDATE:19770925T030000
 589.129 +RDATE:19781001T030000
 589.130 +RDATE:19790930T030000
 589.131 +RDATE:19800928T030000
 589.132 +RDATE:19810927T030000
 589.133 +RDATE:19820926T030000
 589.134 +RDATE:19830925T030000
 589.135 +RDATE:19840930T030000
 589.136 +RDATE:19850929T030000
 589.137 +RDATE:19860928T030000
 589.138 +RDATE:19870927T030000
 589.139 +RDATE:19880925T030000
 589.140 +RDATE:19890924T030000
 589.141 +RDATE:19900930T030000
 589.142 +RDATE:19910929T030000
 589.143 +RDATE:19920927T030000
 589.144 +RDATE:19930926T030000
 589.145 +RDATE:19940925T030000
 589.146 +RDATE:19950924T030000
 589.147 +END:STANDARD
 589.148 +BEGIN:DAYLIGHT
 589.149 +TZOFFSETFROM:+0100
 589.150 +TZOFFSETTO:+0200
 589.151 +TZNAME:CEST
 589.152 +DTSTART:19760328T010000
 589.153 +RDATE:19760328T010000
 589.154 +RDATE:19770403T020000
 589.155 +RDATE:19780402T020000
 589.156 +RDATE:19790401T020000
 589.157 +RDATE:19800406T020000
 589.158 +END:DAYLIGHT
 589.159 +BEGIN:STANDARD
 589.160 +TZOFFSETFROM:+0100
 589.161 +TZOFFSETTO:+0100
 589.162 +TZNAME:CET
 589.163 +DTSTART:19770101T000000
 589.164 +RDATE:19770101T000000
 589.165 +END:STANDARD
 589.166 +END:VTIMEZONE
 589.167 +END:VCALENDAR
   590.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   590.2 +++ b/src/zoneinfo-global/Europe/Moscow.ics	Tue Feb 10 18:12:00 2015 +0100
   590.3 @@ -0,0 +1,182 @@
   590.4 +BEGIN:VCALENDAR
   590.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   590.6 +VERSION:2.0
   590.7 +BEGIN:VTIMEZONE
   590.8 +TZID:Europe/Moscow
   590.9 +TZURL:http://tzurl.org/zoneinfo-global/Europe/Moscow
  590.10 +X-LIC-LOCATION:Europe/Moscow
  590.11 +BEGIN:STANDARD
  590.12 +TZOFFSETFROM:+023020
  590.13 +TZOFFSETTO:+0230
  590.14 +TZNAME:MMT
  590.15 +DTSTART:18800101T000000
  590.16 +RDATE:18800101T000000
  590.17 +END:STANDARD
  590.18 +BEGIN:STANDARD
  590.19 +TZOFFSETFROM:+0230
  590.20 +TZOFFSETTO:+023048
  590.21 +TZNAME:MMT
  590.22 +DTSTART:19160703T000000
  590.23 +RDATE:19160703T000000
  590.24 +END:STANDARD
  590.25 +BEGIN:DAYLIGHT
  590.26 +TZOFFSETFROM:+023048
  590.27 +TZOFFSETTO:+033048
  590.28 +TZNAME:MST
  590.29 +DTSTART:19170701T230000
  590.30 +RDATE:19170701T230000
  590.31 +END:DAYLIGHT
  590.32 +BEGIN:STANDARD
  590.33 +TZOFFSETFROM:+033048
  590.34 +TZOFFSETTO:+023048
  590.35 +TZNAME:MMT
  590.36 +DTSTART:19171228T000000
  590.37 +RDATE:19171228T000000
  590.38 +END:STANDARD
  590.39 +BEGIN:DAYLIGHT
  590.40 +TZOFFSETFROM:+023048
  590.41 +TZOFFSETTO:+043048
  590.42 +TZNAME:MDST
  590.43 +DTSTART:19180531T220000
  590.44 +RDATE:19180531T220000
  590.45 +END:DAYLIGHT
  590.46 +BEGIN:DAYLIGHT
  590.47 +TZOFFSETFROM:+043048
  590.48 +TZOFFSETTO:+033048
  590.49 +TZNAME:MST
  590.50 +DTSTART:19180916T010000
  590.51 +RDATE:19180916T010000
  590.52 +END:DAYLIGHT
  590.53 +BEGIN:DAYLIGHT
  590.54 +TZOFFSETFROM:+033048
  590.55 +TZOFFSETTO:+043048
  590.56 +TZNAME:MDST
  590.57 +DTSTART:19190531T230000
  590.58 +RDATE:19190531T230000
  590.59 +END:DAYLIGHT
  590.60 +BEGIN:DAYLIGHT
  590.61 +TZOFFSETFROM:+043048
  590.62 +TZOFFSETTO:+0400
  590.63 +TZNAME:MSD
  590.64 +DTSTART:19190701T020000
  590.65 +RDATE:19190701T020000
  590.66 +END:DAYLIGHT
  590.67 +BEGIN:STANDARD
  590.68 +TZOFFSETFROM:+0400
  590.69 +TZOFFSETTO:+0300
  590.70 +TZNAME:MSK
  590.71 +DTSTART:19190816T000000
  590.72 +RDATE:19190816T000000
  590.73 +RDATE:19211001T000000
  590.74 +RDATE:19811001T000000
  590.75 +RDATE:19821001T000000
  590.76 +RDATE:19831001T000000
  590.77 +RDATE:19840930T030000
  590.78 +RDATE:19850929T030000
  590.79 +RDATE:19860928T030000
  590.80 +RDATE:19870927T030000
  590.81 +RDATE:19880925T030000
  590.82 +RDATE:19890924T030000
  590.83 +RDATE:19900930T030000
  590.84 +RDATE:19920926T230000
  590.85 +RDATE:19930926T030000
  590.86 +RDATE:19940925T030000
  590.87 +RDATE:19950924T030000
  590.88 +RDATE:19961027T030000
  590.89 +RDATE:19971026T030000
  590.90 +RDATE:19981025T030000
  590.91 +RDATE:19991031T030000
  590.92 +RDATE:20001029T030000
  590.93 +RDATE:20011028T030000
  590.94 +RDATE:20021027T030000
  590.95 +RDATE:20031026T030000
  590.96 +RDATE:20041031T030000
  590.97 +RDATE:20051030T030000
  590.98 +RDATE:20061029T030000
  590.99 +RDATE:20071028T030000
 590.100 +RDATE:20081026T030000
 590.101 +RDATE:20091025T030000
 590.102 +RDATE:20101031T030000
 590.103 +END:STANDARD
 590.104 +BEGIN:DAYLIGHT
 590.105 +TZOFFSETFROM:+0300
 590.106 +TZOFFSETTO:+0400
 590.107 +TZNAME:MSD
 590.108 +DTSTART:19210214T230000
 590.109 +RDATE:19210214T230000
 590.110 +RDATE:19810401T000000
 590.111 +RDATE:19820401T000000
 590.112 +RDATE:19830401T000000
 590.113 +RDATE:19840401T000000
 590.114 +RDATE:19850331T020000
 590.115 +RDATE:19860330T020000
 590.116 +RDATE:19870329T020000
 590.117 +RDATE:19880327T020000
 590.118 +RDATE:19890326T020000
 590.119 +RDATE:19900325T020000
 590.120 +RDATE:19920328T230000
 590.121 +RDATE:19930328T020000
 590.122 +RDATE:19940327T020000
 590.123 +RDATE:19950326T020000
 590.124 +RDATE:19960331T020000
 590.125 +RDATE:19970330T020000
 590.126 +RDATE:19980329T020000
 590.127 +RDATE:19990328T020000
 590.128 +RDATE:20000326T020000
 590.129 +RDATE:20010325T020000
 590.130 +RDATE:20020331T020000
 590.131 +RDATE:20030330T020000
 590.132 +RDATE:20040328T020000
 590.133 +RDATE:20050327T020000
 590.134 +RDATE:20060326T020000
 590.135 +RDATE:20070325T020000
 590.136 +RDATE:20080330T020000
 590.137 +RDATE:20090329T020000
 590.138 +RDATE:20100328T020000
 590.139 +END:DAYLIGHT
 590.140 +BEGIN:DAYLIGHT
 590.141 +TZOFFSETFROM:+0400
 590.142 +TZOFFSETTO:+0500
 590.143 +TZNAME:MSD
 590.144 +DTSTART:19210320T230000
 590.145 +RDATE:19210320T230000
 590.146 +END:DAYLIGHT
 590.147 +BEGIN:DAYLIGHT
 590.148 +TZOFFSETFROM:+0500
 590.149 +TZOFFSETTO:+0400
 590.150 +TZNAME:MSD
 590.151 +DTSTART:19210901T000000
 590.152 +RDATE:19210901T000000
 590.153 +END:DAYLIGHT
 590.154 +BEGIN:STANDARD
 590.155 +TZOFFSETFROM:+0300
 590.156 +TZOFFSETTO:+0200
 590.157 +TZNAME:EET
 590.158 +DTSTART:19221001T000000
 590.159 +RDATE:19221001T000000
 590.160 +RDATE:19910929T030000
 590.161 +END:STANDARD
 590.162 +BEGIN:STANDARD
 590.163 +TZOFFSETFROM:+0200
 590.164 +TZOFFSETTO:+0300
 590.165 +TZNAME:MSK
 590.166 +DTSTART:19300621T000000
 590.167 +RDATE:19300621T000000
 590.168 +RDATE:19920119T020000
 590.169 +END:STANDARD
 590.170 +BEGIN:DAYLIGHT
 590.171 +TZOFFSETFROM:+0300
 590.172 +TZOFFSETTO:+0300
 590.173 +TZNAME:EEST
 590.174 +DTSTART:19910331T020000
 590.175 +RDATE:19910331T020000
 590.176 +END:DAYLIGHT
 590.177 +BEGIN:STANDARD
 590.178 +TZOFFSETFROM:+0300
 590.179 +TZOFFSETTO:+0400
 590.180 +TZNAME:MSK
 590.181 +DTSTART:20110327T020000
 590.182 +RDATE:20110327T020000
 590.183 +END:STANDARD
 590.184 +END:VTIMEZONE
 590.185 +END:VCALENDAR
   591.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   591.2 +++ b/src/zoneinfo-global/Europe/Nicosia.ics	Tue Feb 10 18:12:00 2015 +0100
   591.3 @@ -0,0 +1,96 @@
   591.4 +BEGIN:VCALENDAR
   591.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   591.6 +VERSION:2.0
   591.7 +BEGIN:VTIMEZONE
   591.8 +TZID:Europe/Nicosia
   591.9 +TZURL:http://tzurl.org/zoneinfo-global/Europe/Nicosia
  591.10 +X-LIC-LOCATION:Europe/Nicosia
  591.11 +BEGIN:STANDARD
  591.12 +TZOFFSETFROM:+0300
  591.13 +TZOFFSETTO:+0200
  591.14 +TZNAME:EET
  591.15 +DTSTART:19981025T040000
  591.16 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  591.17 +END:STANDARD
  591.18 +BEGIN:DAYLIGHT
  591.19 +TZOFFSETFROM:+0200
  591.20 +TZOFFSETTO:+0300
  591.21 +TZNAME:EEST
  591.22 +DTSTART:19990328T030000
  591.23 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  591.24 +END:DAYLIGHT
  591.25 +BEGIN:STANDARD
  591.26 +TZOFFSETFROM:+021328
  591.27 +TZOFFSETTO:+0200
  591.28 +TZNAME:EET
  591.29 +DTSTART:19211114T000000
  591.30 +RDATE:19211114T000000
  591.31 +END:STANDARD
  591.32 +BEGIN:DAYLIGHT
  591.33 +TZOFFSETFROM:+0200
  591.34 +TZOFFSETTO:+0300
  591.35 +TZNAME:EEST
  591.36 +DTSTART:19750413T000000
  591.37 +RDATE:19750413T000000
  591.38 +RDATE:19760515T000000
  591.39 +RDATE:19770403T000000
  591.40 +RDATE:19780402T000000
  591.41 +RDATE:19790401T000000
  591.42 +RDATE:19800406T000000
  591.43 +RDATE:19810329T000000
  591.44 +RDATE:19820328T000000
  591.45 +RDATE:19830327T000000
  591.46 +RDATE:19840325T000000
  591.47 +RDATE:19850331T000000
  591.48 +RDATE:19860330T000000
  591.49 +RDATE:19870329T000000
  591.50 +RDATE:19880327T000000
  591.51 +RDATE:19890326T000000
  591.52 +RDATE:19900325T000000
  591.53 +RDATE:19910331T000000
  591.54 +RDATE:19920329T000000
  591.55 +RDATE:19930328T000000
  591.56 +RDATE:19940327T000000
  591.57 +RDATE:19950326T000000
  591.58 +RDATE:19960331T000000
  591.59 +RDATE:19970330T000000
  591.60 +RDATE:19980329T000000
  591.61 +END:DAYLIGHT
  591.62 +BEGIN:STANDARD
  591.63 +TZOFFSETFROM:+0300
  591.64 +TZOFFSETTO:+0200
  591.65 +TZNAME:EET
  591.66 +DTSTART:19751012T000000
  591.67 +RDATE:19751012T000000
  591.68 +RDATE:19761011T000000
  591.69 +RDATE:19770925T000000
  591.70 +RDATE:19781002T000000
  591.71 +RDATE:19790930T000000
  591.72 +RDATE:19800928T000000
  591.73 +RDATE:19810927T000000
  591.74 +RDATE:19820926T000000
  591.75 +RDATE:19830925T000000
  591.76 +RDATE:19840930T000000
  591.77 +RDATE:19850929T000000
  591.78 +RDATE:19860928T000000
  591.79 +RDATE:19870927T000000
  591.80 +RDATE:19880925T000000
  591.81 +RDATE:19890924T000000
  591.82 +RDATE:19900930T000000
  591.83 +RDATE:19910929T000000
  591.84 +RDATE:19920927T000000
  591.85 +RDATE:19930926T000000
  591.86 +RDATE:19940925T000000
  591.87 +RDATE:19950924T000000
  591.88 +RDATE:19960929T000000
  591.89 +RDATE:19970928T000000
  591.90 +END:STANDARD
  591.91 +BEGIN:DAYLIGHT
  591.92 +TZOFFSETFROM:+0300
  591.93 +TZOFFSETTO:+0300
  591.94 +TZNAME:EEST
  591.95 +DTSTART:19980901T000000
  591.96 +RDATE:19980901T000000
  591.97 +END:DAYLIGHT
  591.98 +END:VTIMEZONE
  591.99 +END:VCALENDAR
   592.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   592.2 +++ b/src/zoneinfo-global/Europe/Oslo.ics	Tue Feb 10 18:12:00 2015 +0100
   592.3 @@ -0,0 +1,90 @@
   592.4 +BEGIN:VCALENDAR
   592.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   592.6 +VERSION:2.0
   592.7 +BEGIN:VTIMEZONE
   592.8 +TZID:Europe/Oslo
   592.9 +TZURL:http://tzurl.org/zoneinfo-global/Europe/Oslo
  592.10 +X-LIC-LOCATION:Europe/Oslo
  592.11 +BEGIN:DAYLIGHT
  592.12 +TZOFFSETFROM:+0100
  592.13 +TZOFFSETTO:+0200
  592.14 +TZNAME:CEST
  592.15 +DTSTART:19810329T020000
  592.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  592.17 +END:DAYLIGHT
  592.18 +BEGIN:STANDARD
  592.19 +TZOFFSETFROM:+0200
  592.20 +TZOFFSETTO:+0100
  592.21 +TZNAME:CET
  592.22 +DTSTART:19961027T030000
  592.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  592.24 +END:STANDARD
  592.25 +BEGIN:STANDARD
  592.26 +TZOFFSETFROM:+0043
  592.27 +TZOFFSETTO:+0100
  592.28 +TZNAME:CET
  592.29 +DTSTART:18950101T000000
  592.30 +RDATE:18950101T000000
  592.31 +END:STANDARD
  592.32 +BEGIN:DAYLIGHT
  592.33 +TZOFFSETFROM:+0100
  592.34 +TZOFFSETTO:+0200
  592.35 +TZNAME:CEST
  592.36 +DTSTART:19160522T010000
  592.37 +RDATE:19160522T010000
  592.38 +RDATE:19400810T230000
  592.39 +RDATE:19430329T020000
  592.40 +RDATE:19440403T020000
  592.41 +RDATE:19450402T020000
  592.42 +RDATE:19590315T020000
  592.43 +RDATE:19600320T020000
  592.44 +RDATE:19610319T020000
  592.45 +RDATE:19620318T020000
  592.46 +RDATE:19630317T020000
  592.47 +RDATE:19640315T020000
  592.48 +RDATE:19650425T020000
  592.49 +RDATE:19800406T020000
  592.50 +END:DAYLIGHT
  592.51 +BEGIN:STANDARD
  592.52 +TZOFFSETFROM:+0200
  592.53 +TZOFFSETTO:+0100
  592.54 +TZNAME:CET
  592.55 +DTSTART:19160930T000000
  592.56 +RDATE:19160930T000000
  592.57 +RDATE:19421102T030000
  592.58 +RDATE:19431004T030000
  592.59 +RDATE:19441002T030000
  592.60 +RDATE:19451001T030000
  592.61 +RDATE:19590920T030000
  592.62 +RDATE:19600918T030000
  592.63 +RDATE:19610917T030000
  592.64 +RDATE:19620916T030000
  592.65 +RDATE:19630915T030000
  592.66 +RDATE:19640920T030000
  592.67 +RDATE:19650919T030000
  592.68 +RDATE:19800928T030000
  592.69 +RDATE:19810927T030000
  592.70 +RDATE:19820926T030000
  592.71 +RDATE:19830925T030000
  592.72 +RDATE:19840930T030000
  592.73 +RDATE:19850929T030000
  592.74 +RDATE:19860928T030000
  592.75 +RDATE:19870927T030000
  592.76 +RDATE:19880925T030000
  592.77 +RDATE:19890924T030000
  592.78 +RDATE:19900930T030000
  592.79 +RDATE:19910929T030000
  592.80 +RDATE:19920927T030000
  592.81 +RDATE:19930926T030000
  592.82 +RDATE:19940925T030000
  592.83 +RDATE:19950924T030000
  592.84 +END:STANDARD
  592.85 +BEGIN:STANDARD
  592.86 +TZOFFSETFROM:+0100
  592.87 +TZOFFSETTO:+0100
  592.88 +TZNAME:CET
  592.89 +DTSTART:19800101T000000
  592.90 +RDATE:19800101T000000
  592.91 +END:STANDARD
  592.92 +END:VTIMEZONE
  592.93 +END:VCALENDAR
   593.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   593.2 +++ b/src/zoneinfo-global/Europe/Paris.ics	Tue Feb 10 18:12:00 2015 +0100
   593.3 @@ -0,0 +1,169 @@
   593.4 +BEGIN:VCALENDAR
   593.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   593.6 +VERSION:2.0
   593.7 +BEGIN:VTIMEZONE
   593.8 +TZID:Europe/Paris
   593.9 +TZURL:http://tzurl.org/zoneinfo-global/Europe/Paris
  593.10 +X-LIC-LOCATION:Europe/Paris
  593.11 +BEGIN:DAYLIGHT
  593.12 +TZOFFSETFROM:+0100
  593.13 +TZOFFSETTO:+0200
  593.14 +TZNAME:CEST
  593.15 +DTSTART:19810329T020000
  593.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  593.17 +END:DAYLIGHT
  593.18 +BEGIN:STANDARD
  593.19 +TZOFFSETFROM:+0200
  593.20 +TZOFFSETTO:+0100
  593.21 +TZNAME:CET
  593.22 +DTSTART:19961027T030000
  593.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  593.24 +END:STANDARD
  593.25 +BEGIN:STANDARD
  593.26 +TZOFFSETFROM:+000921
  593.27 +TZOFFSETTO:+000921
  593.28 +TZNAME:PMT
  593.29 +DTSTART:18910315T000100
  593.30 +RDATE:18910315T000100
  593.31 +END:STANDARD
  593.32 +BEGIN:STANDARD
  593.33 +TZOFFSETFROM:+000921
  593.34 +TZOFFSETTO:+0000
  593.35 +TZNAME:WET
  593.36 +DTSTART:19110311T000100
  593.37 +RDATE:19110311T000100
  593.38 +END:STANDARD
  593.39 +BEGIN:DAYLIGHT
  593.40 +TZOFFSETFROM:+0000
  593.41 +TZOFFSETTO:+0100
  593.42 +TZNAME:WEST
  593.43 +DTSTART:19160614T230000
  593.44 +RDATE:19160614T230000
  593.45 +RDATE:19170324T230000
  593.46 +RDATE:19180309T230000
  593.47 +RDATE:19190301T230000
  593.48 +RDATE:19200214T230000
  593.49 +RDATE:19210314T230000
  593.50 +RDATE:19220325T230000
  593.51 +RDATE:19230526T230000
  593.52 +RDATE:19240329T230000
  593.53 +RDATE:19250404T230000
  593.54 +RDATE:19260417T230000
  593.55 +RDATE:19270409T230000
  593.56 +RDATE:19280414T230000
  593.57 +RDATE:19290420T230000
  593.58 +RDATE:19300412T230000
  593.59 +RDATE:19310418T230000
  593.60 +RDATE:19320402T230000
  593.61 +RDATE:19330325T230000
  593.62 +RDATE:19340407T230000
  593.63 +RDATE:19350330T230000
  593.64 +RDATE:19360418T230000
  593.65 +RDATE:19370403T230000
  593.66 +RDATE:19380326T230000
  593.67 +RDATE:19390415T230000
  593.68 +RDATE:19400225T020000
  593.69 +END:DAYLIGHT
  593.70 +BEGIN:STANDARD
  593.71 +TZOFFSETFROM:+0100
  593.72 +TZOFFSETTO:+0000
  593.73 +TZNAME:WET
  593.74 +DTSTART:19161002T000000
  593.75 +RDATE:19161002T000000
  593.76 +RDATE:19171008T000000
  593.77 +RDATE:19181007T000000
  593.78 +RDATE:19191006T000000
  593.79 +RDATE:19201024T000000
  593.80 +RDATE:19211026T000000
  593.81 +RDATE:19221008T000000
  593.82 +RDATE:19231007T000000
  593.83 +RDATE:19241005T000000
  593.84 +RDATE:19251004T000000
  593.85 +RDATE:19261003T000000
  593.86 +RDATE:19271002T000000
  593.87 +RDATE:19281007T000000
  593.88 +RDATE:19291006T000000
  593.89 +RDATE:19301005T000000
  593.90 +RDATE:19311004T000000
  593.91 +RDATE:19321002T000000
  593.92 +RDATE:19331008T000000
  593.93 +RDATE:19341007T000000
  593.94 +RDATE:19351006T000000
  593.95 +RDATE:19361004T000000
  593.96 +RDATE:19371003T000000
  593.97 +RDATE:19381002T000000
  593.98 +RDATE:19391119T000000
  593.99 +END:STANDARD
 593.100 +BEGIN:DAYLIGHT
 593.101 +TZOFFSETFROM:+0100
 593.102 +TZOFFSETTO:+0200
 593.103 +TZNAME:CEST
 593.104 +DTSTART:19400614T230000
 593.105 +RDATE:19400614T230000
 593.106 +RDATE:19430329T020000
 593.107 +RDATE:19440403T020000
 593.108 +RDATE:19760328T010000
 593.109 +RDATE:19770403T020000
 593.110 +RDATE:19780402T020000
 593.111 +RDATE:19790401T020000
 593.112 +RDATE:19800406T020000
 593.113 +END:DAYLIGHT
 593.114 +BEGIN:STANDARD
 593.115 +TZOFFSETFROM:+0200
 593.116 +TZOFFSETTO:+0100
 593.117 +TZNAME:CET
 593.118 +DTSTART:19421102T030000
 593.119 +RDATE:19421102T030000
 593.120 +RDATE:19431004T030000
 593.121 +RDATE:19450916T030000
 593.122 +RDATE:19760926T010000
 593.123 +RDATE:19770925T030000
 593.124 +RDATE:19781001T030000
 593.125 +RDATE:19790930T030000
 593.126 +RDATE:19800928T030000
 593.127 +RDATE:19810927T030000
 593.128 +RDATE:19820926T030000
 593.129 +RDATE:19830925T030000
 593.130 +RDATE:19840930T030000
 593.131 +RDATE:19850929T030000
 593.132 +RDATE:19860928T030000
 593.133 +RDATE:19870927T030000
 593.134 +RDATE:19880925T030000
 593.135 +RDATE:19890924T030000
 593.136 +RDATE:19900930T030000
 593.137 +RDATE:19910929T030000
 593.138 +RDATE:19920927T030000
 593.139 +RDATE:19930926T030000
 593.140 +RDATE:19940925T030000
 593.141 +RDATE:19950924T030000
 593.142 +END:STANDARD
 593.143 +BEGIN:DAYLIGHT
 593.144 +TZOFFSETFROM:+0200
 593.145 +TZOFFSETTO:+0200
 593.146 +TZNAME:WEMT
 593.147 +DTSTART:19440825T000000
 593.148 +RDATE:19440825T000000
 593.149 +END:DAYLIGHT
 593.150 +BEGIN:DAYLIGHT
 593.151 +TZOFFSETFROM:+0200
 593.152 +TZOFFSETTO:+0100
 593.153 +TZNAME:WEST
 593.154 +DTSTART:19441008T010000
 593.155 +RDATE:19441008T010000
 593.156 +END:DAYLIGHT
 593.157 +BEGIN:DAYLIGHT
 593.158 +TZOFFSETFROM:+0100
 593.159 +TZOFFSETTO:+0200
 593.160 +TZNAME:WEMT
 593.161 +DTSTART:19450402T020000
 593.162 +RDATE:19450402T020000
 593.163 +END:DAYLIGHT
 593.164 +BEGIN:STANDARD
 593.165 +TZOFFSETFROM:+0100
 593.166 +TZOFFSETTO:+0100
 593.167 +TZNAME:CET
 593.168 +DTSTART:19770101T000000
 593.169 +RDATE:19770101T000000
 593.170 +END:STANDARD
 593.171 +END:VTIMEZONE
 593.172 +END:VCALENDAR
   594.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   594.2 +++ b/src/zoneinfo-global/Europe/Podgorica.ics	Tue Feb 10 18:12:00 2015 +0100
   594.3 @@ -0,0 +1,71 @@
   594.4 +BEGIN:VCALENDAR
   594.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   594.6 +VERSION:2.0
   594.7 +BEGIN:VTIMEZONE
   594.8 +TZID:Europe/Podgorica
   594.9 +TZURL:http://tzurl.org/zoneinfo-global/Europe/Podgorica
  594.10 +X-LIC-LOCATION:Europe/Podgorica
  594.11 +BEGIN:DAYLIGHT
  594.12 +TZOFFSETFROM:+0100
  594.13 +TZOFFSETTO:+0200
  594.14 +TZNAME:CEST
  594.15 +DTSTART:19830327T020000
  594.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  594.17 +END:DAYLIGHT
  594.18 +BEGIN:STANDARD
  594.19 +TZOFFSETFROM:+0200
  594.20 +TZOFFSETTO:+0100
  594.21 +TZNAME:CET
  594.22 +DTSTART:19961027T030000
  594.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  594.24 +END:STANDARD
  594.25 +BEGIN:STANDARD
  594.26 +TZOFFSETFROM:+0122
  594.27 +TZOFFSETTO:+0100
  594.28 +TZNAME:CET
  594.29 +DTSTART:18840101T000000
  594.30 +RDATE:18840101T000000
  594.31 +END:STANDARD
  594.32 +BEGIN:DAYLIGHT
  594.33 +TZOFFSETFROM:+0100
  594.34 +TZOFFSETTO:+0200
  594.35 +TZNAME:CEST
  594.36 +DTSTART:19410418T230000
  594.37 +RDATE:19410418T230000
  594.38 +RDATE:19430329T020000
  594.39 +RDATE:19440403T020000
  594.40 +RDATE:19450508T020000
  594.41 +END:DAYLIGHT
  594.42 +BEGIN:STANDARD
  594.43 +TZOFFSETFROM:+0200
  594.44 +TZOFFSETTO:+0100
  594.45 +TZNAME:CET
  594.46 +DTSTART:19421102T030000
  594.47 +RDATE:19421102T030000
  594.48 +RDATE:19431004T030000
  594.49 +RDATE:19441002T030000
  594.50 +RDATE:19450916T030000
  594.51 +RDATE:19830925T030000
  594.52 +RDATE:19840930T030000
  594.53 +RDATE:19850929T030000
  594.54 +RDATE:19860928T030000
  594.55 +RDATE:19870927T030000
  594.56 +RDATE:19880925T030000
  594.57 +RDATE:19890924T030000
  594.58 +RDATE:19900930T030000
  594.59 +RDATE:19910929T030000
  594.60 +RDATE:19920927T030000
  594.61 +RDATE:19930926T030000
  594.62 +RDATE:19940925T030000
  594.63 +RDATE:19950924T030000
  594.64 +END:STANDARD
  594.65 +BEGIN:STANDARD
  594.66 +TZOFFSETFROM:+0100
  594.67 +TZOFFSETTO:+0100
  594.68 +TZNAME:CET
  594.69 +DTSTART:19450101T000000
  594.70 +RDATE:19450101T000000
  594.71 +RDATE:19821127T000000
  594.72 +END:STANDARD
  594.73 +END:VTIMEZONE
  594.74 +END:VCALENDAR
   595.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   595.2 +++ b/src/zoneinfo-global/Europe/Prague.ics	Tue Feb 10 18:12:00 2015 +0100
   595.3 @@ -0,0 +1,97 @@
   595.4 +BEGIN:VCALENDAR
   595.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   595.6 +VERSION:2.0
   595.7 +BEGIN:VTIMEZONE
   595.8 +TZID:Europe/Prague
   595.9 +TZURL:http://tzurl.org/zoneinfo-global/Europe/Prague
  595.10 +X-LIC-LOCATION:Europe/Prague
  595.11 +BEGIN:DAYLIGHT
  595.12 +TZOFFSETFROM:+0100
  595.13 +TZOFFSETTO:+0200
  595.14 +TZNAME:CEST
  595.15 +DTSTART:19810329T020000
  595.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  595.17 +END:DAYLIGHT
  595.18 +BEGIN:STANDARD
  595.19 +TZOFFSETFROM:+0200
  595.20 +TZOFFSETTO:+0100
  595.21 +TZNAME:CET
  595.22 +DTSTART:19961027T030000
  595.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  595.24 +END:STANDARD
  595.25 +BEGIN:STANDARD
  595.26 +TZOFFSETFROM:+005744
  595.27 +TZOFFSETTO:+005744
  595.28 +TZNAME:PMT
  595.29 +DTSTART:18500101T000000
  595.30 +RDATE:18500101T000000
  595.31 +END:STANDARD
  595.32 +BEGIN:STANDARD
  595.33 +TZOFFSETFROM:+005744
  595.34 +TZOFFSETTO:+0100
  595.35 +TZNAME:CET
  595.36 +DTSTART:18911001T000000
  595.37 +RDATE:18911001T000000
  595.38 +END:STANDARD
  595.39 +BEGIN:DAYLIGHT
  595.40 +TZOFFSETFROM:+0100
  595.41 +TZOFFSETTO:+0200
  595.42 +TZNAME:CEST
  595.43 +DTSTART:19160430T230000
  595.44 +RDATE:19160430T230000
  595.45 +RDATE:19170416T020000
  595.46 +RDATE:19180415T020000
  595.47 +RDATE:19400401T020000
  595.48 +RDATE:19430329T020000
  595.49 +RDATE:19440403T020000
  595.50 +RDATE:19450408T020000
  595.51 +RDATE:19460506T020000
  595.52 +RDATE:19470420T020000
  595.53 +RDATE:19480418T020000
  595.54 +RDATE:19490409T020000
  595.55 +RDATE:19790401T020000
  595.56 +RDATE:19800406T020000
  595.57 +END:DAYLIGHT
  595.58 +BEGIN:STANDARD
  595.59 +TZOFFSETFROM:+0200
  595.60 +TZOFFSETTO:+0100
  595.61 +TZNAME:CET
  595.62 +DTSTART:19161001T010000
  595.63 +RDATE:19161001T010000
  595.64 +RDATE:19170917T030000
  595.65 +RDATE:19180916T030000
  595.66 +RDATE:19421102T030000
  595.67 +RDATE:19431004T030000
  595.68 +RDATE:19440917T030000
  595.69 +RDATE:19451118T030000
  595.70 +RDATE:19461006T030000
  595.71 +RDATE:19471005T030000
  595.72 +RDATE:19481003T030000
  595.73 +RDATE:19491002T030000
  595.74 +RDATE:19790930T030000
  595.75 +RDATE:19800928T030000
  595.76 +RDATE:19810927T030000
  595.77 +RDATE:19820926T030000
  595.78 +RDATE:19830925T030000
  595.79 +RDATE:19840930T030000
  595.80 +RDATE:19850929T030000
  595.81 +RDATE:19860928T030000
  595.82 +RDATE:19870927T030000
  595.83 +RDATE:19880925T030000
  595.84 +RDATE:19890924T030000
  595.85 +RDATE:19900930T030000
  595.86 +RDATE:19910929T030000
  595.87 +RDATE:19920927T030000
  595.88 +RDATE:19930926T030000
  595.89 +RDATE:19940925T030000
  595.90 +RDATE:19950924T030000
  595.91 +END:STANDARD
  595.92 +BEGIN:STANDARD
  595.93 +TZOFFSETFROM:+0100
  595.94 +TZOFFSETTO:+0100
  595.95 +TZNAME:CET
  595.96 +DTSTART:19790101T000000
  595.97 +RDATE:19790101T000000
  595.98 +END:STANDARD
  595.99 +END:VTIMEZONE
 595.100 +END:VCALENDAR
   596.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   596.2 +++ b/src/zoneinfo-global/Europe/Riga.ics	Tue Feb 10 18:12:00 2015 +0100
   596.3 @@ -0,0 +1,168 @@
   596.4 +BEGIN:VCALENDAR
   596.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   596.6 +VERSION:2.0
   596.7 +BEGIN:VTIMEZONE
   596.8 +TZID:Europe/Riga
   596.9 +TZURL:http://tzurl.org/zoneinfo-global/Europe/Riga
  596.10 +X-LIC-LOCATION:Europe/Riga
  596.11 +BEGIN:DAYLIGHT
  596.12 +TZOFFSETFROM:+0200
  596.13 +TZOFFSETTO:+0300
  596.14 +TZNAME:EEST
  596.15 +DTSTART:20010325T030000
  596.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  596.17 +END:DAYLIGHT
  596.18 +BEGIN:STANDARD
  596.19 +TZOFFSETFROM:+0300
  596.20 +TZOFFSETTO:+0200
  596.21 +TZNAME:EET
  596.22 +DTSTART:20011028T040000
  596.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  596.24 +END:STANDARD
  596.25 +BEGIN:STANDARD
  596.26 +TZOFFSETFROM:+013624
  596.27 +TZOFFSETTO:+013624
  596.28 +TZNAME:RMT
  596.29 +DTSTART:18800101T000000
  596.30 +RDATE:18800101T000000
  596.31 +END:STANDARD
  596.32 +BEGIN:DAYLIGHT
  596.33 +TZOFFSETFROM:+013624
  596.34 +TZOFFSETTO:+023624
  596.35 +TZNAME:LST
  596.36 +DTSTART:19180415T020000
  596.37 +RDATE:19180415T020000
  596.38 +RDATE:19190401T020000
  596.39 +END:DAYLIGHT
  596.40 +BEGIN:STANDARD
  596.41 +TZOFFSETFROM:+023624
  596.42 +TZOFFSETTO:+013624
  596.43 +TZNAME:RMT
  596.44 +DTSTART:19180916T030000
  596.45 +RDATE:19180916T030000
  596.46 +RDATE:19190522T030000
  596.47 +END:STANDARD
  596.48 +BEGIN:STANDARD
  596.49 +TZOFFSETFROM:+013624
  596.50 +TZOFFSETTO:+0200
  596.51 +TZNAME:EET
  596.52 +DTSTART:19260511T000000
  596.53 +RDATE:19260511T000000
  596.54 +END:STANDARD
  596.55 +BEGIN:STANDARD
  596.56 +TZOFFSETFROM:+0200
  596.57 +TZOFFSETTO:+0300
  596.58 +TZNAME:MSK
  596.59 +DTSTART:19400805T000000
  596.60 +RDATE:19400805T000000
  596.61 +END:STANDARD
  596.62 +BEGIN:DAYLIGHT
  596.63 +TZOFFSETFROM:+0300
  596.64 +TZOFFSETTO:+0200
  596.65 +TZNAME:CEST
  596.66 +DTSTART:19410701T000000
  596.67 +RDATE:19410701T000000
  596.68 +END:DAYLIGHT
  596.69 +BEGIN:STANDARD
  596.70 +TZOFFSETFROM:+0200
  596.71 +TZOFFSETTO:+0100
  596.72 +TZNAME:CET
  596.73 +DTSTART:19421102T030000
  596.74 +RDATE:19421102T030000
  596.75 +RDATE:19431004T030000
  596.76 +RDATE:19441002T030000
  596.77 +END:STANDARD
  596.78 +BEGIN:DAYLIGHT
  596.79 +TZOFFSETFROM:+0100
  596.80 +TZOFFSETTO:+0200
  596.81 +TZNAME:CEST
  596.82 +DTSTART:19430329T020000
  596.83 +RDATE:19430329T020000
  596.84 +RDATE:19440403T020000
  596.85 +END:DAYLIGHT
  596.86 +BEGIN:STANDARD
  596.87 +TZOFFSETFROM:+0100
  596.88 +TZOFFSETTO:+0300
  596.89 +TZNAME:MSK
  596.90 +DTSTART:19441013T000000
  596.91 +RDATE:19441013T000000
  596.92 +END:STANDARD
  596.93 +BEGIN:DAYLIGHT
  596.94 +TZOFFSETFROM:+0300
  596.95 +TZOFFSETTO:+0400
  596.96 +TZNAME:MSD
  596.97 +DTSTART:19810401T000000
  596.98 +RDATE:19810401T000000
  596.99 +RDATE:19820401T000000
 596.100 +RDATE:19830401T000000
 596.101 +RDATE:19840401T000000
 596.102 +RDATE:19850331T020000
 596.103 +RDATE:19860330T020000
 596.104 +RDATE:19870329T020000
 596.105 +RDATE:19880327T020000
 596.106 +END:DAYLIGHT
 596.107 +BEGIN:STANDARD
 596.108 +TZOFFSETFROM:+0400
 596.109 +TZOFFSETTO:+0300
 596.110 +TZNAME:MSK
 596.111 +DTSTART:19811001T000000
 596.112 +RDATE:19811001T000000
 596.113 +RDATE:19821001T000000
 596.114 +RDATE:19831001T000000
 596.115 +RDATE:19840930T030000
 596.116 +RDATE:19850929T030000
 596.117 +RDATE:19860928T030000
 596.118 +RDATE:19870927T030000
 596.119 +RDATE:19880925T030000
 596.120 +END:STANDARD
 596.121 +BEGIN:DAYLIGHT
 596.122 +TZOFFSETFROM:+0300
 596.123 +TZOFFSETTO:+0300
 596.124 +TZNAME:EEST
 596.125 +DTSTART:19890326T020000
 596.126 +RDATE:19890326T020000
 596.127 +END:DAYLIGHT
 596.128 +BEGIN:STANDARD
 596.129 +TZOFFSETFROM:+0300
 596.130 +TZOFFSETTO:+0200
 596.131 +TZNAME:EET
 596.132 +DTSTART:19890924T030000
 596.133 +RDATE:19890924T030000
 596.134 +RDATE:19900930T030000
 596.135 +RDATE:19910929T030000
 596.136 +RDATE:19920927T030000
 596.137 +RDATE:19930926T030000
 596.138 +RDATE:19940925T030000
 596.139 +RDATE:19950924T030000
 596.140 +RDATE:19960929T030000
 596.141 +RDATE:19971026T040000
 596.142 +RDATE:19981025T040000
 596.143 +RDATE:19991031T040000
 596.144 +END:STANDARD
 596.145 +BEGIN:DAYLIGHT
 596.146 +TZOFFSETFROM:+0200
 596.147 +TZOFFSETTO:+0300
 596.148 +TZNAME:EEST
 596.149 +DTSTART:19900325T020000
 596.150 +RDATE:19900325T020000
 596.151 +RDATE:19910331T020000
 596.152 +RDATE:19920329T020000
 596.153 +RDATE:19930328T020000
 596.154 +RDATE:19940327T020000
 596.155 +RDATE:19950326T020000
 596.156 +RDATE:19960331T020000
 596.157 +RDATE:19970330T030000
 596.158 +RDATE:19980329T030000
 596.159 +RDATE:19990328T030000
 596.160 +END:DAYLIGHT
 596.161 +BEGIN:STANDARD
 596.162 +TZOFFSETFROM:+0200
 596.163 +TZOFFSETTO:+0200
 596.164 +TZNAME:EET
 596.165 +DTSTART:19970121T000000
 596.166 +RDATE:19970121T000000
 596.167 +RDATE:20000229T000000
 596.168 +RDATE:20010102T000000
 596.169 +END:STANDARD
 596.170 +END:VTIMEZONE
 596.171 +END:VCALENDAR
   597.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   597.2 +++ b/src/zoneinfo-global/Europe/Rome.ics	Tue Feb 10 18:12:00 2015 +0100
   597.3 @@ -0,0 +1,132 @@
   597.4 +BEGIN:VCALENDAR
   597.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   597.6 +VERSION:2.0
   597.7 +BEGIN:VTIMEZONE
   597.8 +TZID:Europe/Rome
   597.9 +TZURL:http://tzurl.org/zoneinfo-global/Europe/Rome
  597.10 +X-LIC-LOCATION:Europe/Rome
  597.11 +BEGIN:DAYLIGHT
  597.12 +TZOFFSETFROM:+0100
  597.13 +TZOFFSETTO:+0200
  597.14 +TZNAME:CEST
  597.15 +DTSTART:19810329T020000
  597.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  597.17 +END:DAYLIGHT
  597.18 +BEGIN:STANDARD
  597.19 +TZOFFSETFROM:+0200
  597.20 +TZOFFSETTO:+0100
  597.21 +TZNAME:CET
  597.22 +DTSTART:19961027T030000
  597.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  597.24 +END:STANDARD
  597.25 +BEGIN:STANDARD
  597.26 +TZOFFSETFROM:+004956
  597.27 +TZOFFSETTO:+004956
  597.28 +TZNAME:RMT
  597.29 +DTSTART:18660922T000000
  597.30 +RDATE:18660922T000000
  597.31 +END:STANDARD
  597.32 +BEGIN:STANDARD
  597.33 +TZOFFSETFROM:+004956
  597.34 +TZOFFSETTO:+0100
  597.35 +TZNAME:CET
  597.36 +DTSTART:18931101T000000
  597.37 +RDATE:18931101T000000
  597.38 +END:STANDARD
  597.39 +BEGIN:DAYLIGHT
  597.40 +TZOFFSETFROM:+0100
  597.41 +TZOFFSETTO:+0200
  597.42 +TZNAME:CEST
  597.43 +DTSTART:19160603T000000
  597.44 +RDATE:19160603T000000
  597.45 +RDATE:19170401T000000
  597.46 +RDATE:19180310T000000
  597.47 +RDATE:19190302T000000
  597.48 +RDATE:19200321T000000
  597.49 +RDATE:19400615T000000
  597.50 +RDATE:19430329T020000
  597.51 +RDATE:19440403T020000
  597.52 +RDATE:19450402T020000
  597.53 +RDATE:19460317T020000
  597.54 +RDATE:19470316T000000
  597.55 +RDATE:19480229T020000
  597.56 +RDATE:19660522T000000
  597.57 +RDATE:19670528T000000
  597.58 +RDATE:19680526T000000
  597.59 +RDATE:19690601T000000
  597.60 +RDATE:19700531T000000
  597.61 +RDATE:19710523T000000
  597.62 +RDATE:19720528T000000
  597.63 +RDATE:19730603T000000
  597.64 +RDATE:19740526T000000
  597.65 +RDATE:19750601T000000
  597.66 +RDATE:19760530T000000
  597.67 +RDATE:19770522T000000
  597.68 +RDATE:19780528T000000
  597.69 +RDATE:19790527T000000
  597.70 +RDATE:19800406T020000
  597.71 +END:DAYLIGHT
  597.72 +BEGIN:STANDARD
  597.73 +TZOFFSETFROM:+0200
  597.74 +TZOFFSETTO:+0100
  597.75 +TZNAME:CET
  597.76 +DTSTART:19161001T010000
  597.77 +RDATE:19161001T010000
  597.78 +RDATE:19170930T010000
  597.79 +RDATE:19181006T010000
  597.80 +RDATE:19191005T010000
  597.81 +RDATE:19200919T010000
  597.82 +RDATE:19421102T030000
  597.83 +RDATE:19431004T030000
  597.84 +RDATE:19440917T010000
  597.85 +RDATE:19450915T010000
  597.86 +RDATE:19461006T030000
  597.87 +RDATE:19471005T010000
  597.88 +RDATE:19481003T030000
  597.89 +RDATE:19660925T000000
  597.90 +RDATE:19670924T000000
  597.91 +RDATE:19680922T000000
  597.92 +RDATE:19690928T000000
  597.93 +RDATE:19700927T000000
  597.94 +RDATE:19710926T010000
  597.95 +RDATE:19721001T000000
  597.96 +RDATE:19730930T000000
  597.97 +RDATE:19740929T000000
  597.98 +RDATE:19750928T010000
  597.99 +RDATE:19760926T010000
 597.100 +RDATE:19770925T010000
 597.101 +RDATE:19781001T010000
 597.102 +RDATE:19790930T010000
 597.103 +RDATE:19800928T030000
 597.104 +RDATE:19810927T030000
 597.105 +RDATE:19820926T030000
 597.106 +RDATE:19830925T030000
 597.107 +RDATE:19840930T030000
 597.108 +RDATE:19850929T030000
 597.109 +RDATE:19860928T030000
 597.110 +RDATE:19870927T030000
 597.111 +RDATE:19880925T030000
 597.112 +RDATE:19890924T030000
 597.113 +RDATE:19900930T030000
 597.114 +RDATE:19910929T030000
 597.115 +RDATE:19920927T030000
 597.116 +RDATE:19930926T030000
 597.117 +RDATE:19940925T030000
 597.118 +RDATE:19950924T030000
 597.119 +END:STANDARD
 597.120 +BEGIN:DAYLIGHT
 597.121 +TZOFFSETFROM:+0200
 597.122 +TZOFFSETTO:+0200
 597.123 +TZNAME:CEST
 597.124 +DTSTART:19440701T000000
 597.125 +RDATE:19440701T000000
 597.126 +END:DAYLIGHT
 597.127 +BEGIN:STANDARD
 597.128 +TZOFFSETFROM:+0100
 597.129 +TZOFFSETTO:+0100
 597.130 +TZNAME:CET
 597.131 +DTSTART:19800101T000000
 597.132 +RDATE:19800101T000000
 597.133 +END:STANDARD
 597.134 +END:VTIMEZONE
 597.135 +END:VCALENDAR
   598.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   598.2 +++ b/src/zoneinfo-global/Europe/Samara.ics	Tue Feb 10 18:12:00 2015 +0100
   598.3 @@ -0,0 +1,158 @@
   598.4 +BEGIN:VCALENDAR
   598.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   598.6 +VERSION:2.0
   598.7 +BEGIN:VTIMEZONE
   598.8 +TZID:Europe/Samara
   598.9 +TZURL:http://tzurl.org/zoneinfo-global/Europe/Samara
  598.10 +X-LIC-LOCATION:Europe/Samara
  598.11 +BEGIN:STANDARD
  598.12 +TZOFFSETFROM:+032036
  598.13 +TZOFFSETTO:+0300
  598.14 +TZNAME:SAMT
  598.15 +DTSTART:19190701T020000
  598.16 +RDATE:19190701T020000
  598.17 +END:STANDARD
  598.18 +BEGIN:STANDARD
  598.19 +TZOFFSETFROM:+0300
  598.20 +TZOFFSETTO:+0400
  598.21 +TZNAME:SAMT
  598.22 +DTSTART:19300621T000000
  598.23 +RDATE:19300621T000000
  598.24 +RDATE:19911020T030000
  598.25 +RDATE:20110327T020000
  598.26 +END:STANDARD
  598.27 +BEGIN:STANDARD
  598.28 +TZOFFSETFROM:+0400
  598.29 +TZOFFSETTO:+0400
  598.30 +TZNAME:KUYT
  598.31 +DTSTART:19350127T000000
  598.32 +RDATE:19350127T000000
  598.33 +END:STANDARD
  598.34 +BEGIN:DAYLIGHT
  598.35 +TZOFFSETFROM:+0400
  598.36 +TZOFFSETTO:+0500
  598.37 +TZNAME:KUYST
  598.38 +DTSTART:19810401T000000
  598.39 +RDATE:19810401T000000
  598.40 +RDATE:19820401T000000
  598.41 +RDATE:19830401T000000
  598.42 +RDATE:19840401T000000
  598.43 +RDATE:19850331T020000
  598.44 +RDATE:19860330T020000
  598.45 +RDATE:19870329T020000
  598.46 +RDATE:19880327T020000
  598.47 +END:DAYLIGHT
  598.48 +BEGIN:STANDARD
  598.49 +TZOFFSETFROM:+0500
  598.50 +TZOFFSETTO:+0400
  598.51 +TZNAME:KUYT
  598.52 +DTSTART:19811001T000000
  598.53 +RDATE:19811001T000000
  598.54 +RDATE:19821001T000000
  598.55 +RDATE:19831001T000000
  598.56 +RDATE:19840930T030000
  598.57 +RDATE:19850929T030000
  598.58 +RDATE:19860928T030000
  598.59 +RDATE:19870927T030000
  598.60 +RDATE:19880925T030000
  598.61 +END:STANDARD
  598.62 +BEGIN:DAYLIGHT
  598.63 +TZOFFSETFROM:+0400
  598.64 +TZOFFSETTO:+0400
  598.65 +TZNAME:KUYST
  598.66 +DTSTART:19890326T020000
  598.67 +RDATE:19890326T020000
  598.68 +END:DAYLIGHT
  598.69 +BEGIN:STANDARD
  598.70 +TZOFFSETFROM:+0400
  598.71 +TZOFFSETTO:+0300
  598.72 +TZNAME:KUYT
  598.73 +DTSTART:19890924T030000
  598.74 +RDATE:19890924T030000
  598.75 +RDATE:19900930T030000
  598.76 +END:STANDARD
  598.77 +BEGIN:DAYLIGHT
  598.78 +TZOFFSETFROM:+0300
  598.79 +TZOFFSETTO:+0400
  598.80 +TZNAME:KUYST
  598.81 +DTSTART:19900325T020000
  598.82 +RDATE:19900325T020000
  598.83 +END:DAYLIGHT
  598.84 +BEGIN:DAYLIGHT
  598.85 +TZOFFSETFROM:+0300
  598.86 +TZOFFSETTO:+0300
  598.87 +TZNAME:KUYST
  598.88 +DTSTART:19910331T020000
  598.89 +RDATE:19910331T020000
  598.90 +END:DAYLIGHT
  598.91 +BEGIN:STANDARD
  598.92 +TZOFFSETFROM:+0300
  598.93 +TZOFFSETTO:+0300
  598.94 +TZNAME:KUYT
  598.95 +DTSTART:19910929T030000
  598.96 +RDATE:19910929T030000
  598.97 +END:STANDARD
  598.98 +BEGIN:DAYLIGHT
  598.99 +TZOFFSETFROM:+0400
 598.100 +TZOFFSETTO:+0500
 598.101 +TZNAME:SAMST
 598.102 +DTSTART:19920328T230000
 598.103 +RDATE:19920328T230000
 598.104 +RDATE:19930328T020000
 598.105 +RDATE:19940327T020000
 598.106 +RDATE:19950326T020000
 598.107 +RDATE:19960331T020000
 598.108 +RDATE:19970330T020000
 598.109 +RDATE:19980329T020000
 598.110 +RDATE:19990328T020000
 598.111 +RDATE:20000326T020000
 598.112 +RDATE:20010325T020000
 598.113 +RDATE:20020331T020000
 598.114 +RDATE:20030330T020000
 598.115 +RDATE:20040328T020000
 598.116 +RDATE:20050327T020000
 598.117 +RDATE:20060326T020000
 598.118 +RDATE:20070325T020000
 598.119 +RDATE:20080330T020000
 598.120 +RDATE:20090329T020000
 598.121 +END:DAYLIGHT
 598.122 +BEGIN:STANDARD
 598.123 +TZOFFSETFROM:+0500
 598.124 +TZOFFSETTO:+0400
 598.125 +TZNAME:SAMT
 598.126 +DTSTART:19920926T230000
 598.127 +RDATE:19920926T230000
 598.128 +RDATE:19930926T030000
 598.129 +RDATE:19940925T030000
 598.130 +RDATE:19950924T030000
 598.131 +RDATE:19961027T030000
 598.132 +RDATE:19971026T030000
 598.133 +RDATE:19981025T030000
 598.134 +RDATE:19991031T030000
 598.135 +RDATE:20001029T030000
 598.136 +RDATE:20011028T030000
 598.137 +RDATE:20021027T030000
 598.138 +RDATE:20031026T030000
 598.139 +RDATE:20041031T030000
 598.140 +RDATE:20051030T030000
 598.141 +RDATE:20061029T030000
 598.142 +RDATE:20071028T030000
 598.143 +RDATE:20081026T030000
 598.144 +RDATE:20091025T030000
 598.145 +END:STANDARD
 598.146 +BEGIN:DAYLIGHT
 598.147 +TZOFFSETFROM:+0400
 598.148 +TZOFFSETTO:+0400
 598.149 +TZNAME:SAMST
 598.150 +DTSTART:20100328T020000
 598.151 +RDATE:20100328T020000
 598.152 +END:DAYLIGHT
 598.153 +BEGIN:STANDARD
 598.154 +TZOFFSETFROM:+0400
 598.155 +TZOFFSETTO:+0300
 598.156 +TZNAME:SAMT
 598.157 +DTSTART:20101031T030000
 598.158 +RDATE:20101031T030000
 598.159 +END:STANDARD
 598.160 +END:VTIMEZONE
 598.161 +END:VCALENDAR
   599.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   599.2 +++ b/src/zoneinfo-global/Europe/San_Marino.ics	Tue Feb 10 18:12:00 2015 +0100
   599.3 @@ -0,0 +1,132 @@
   599.4 +BEGIN:VCALENDAR
   599.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   599.6 +VERSION:2.0
   599.7 +BEGIN:VTIMEZONE
   599.8 +TZID:Europe/San_Marino
   599.9 +TZURL:http://tzurl.org/zoneinfo-global/Europe/San_Marino
  599.10 +X-LIC-LOCATION:Europe/San_Marino
  599.11 +BEGIN:DAYLIGHT
  599.12 +TZOFFSETFROM:+0100
  599.13 +TZOFFSETTO:+0200
  599.14 +TZNAME:CEST
  599.15 +DTSTART:19810329T020000
  599.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  599.17 +END:DAYLIGHT
  599.18 +BEGIN:STANDARD
  599.19 +TZOFFSETFROM:+0200
  599.20 +TZOFFSETTO:+0100
  599.21 +TZNAME:CET
  599.22 +DTSTART:19961027T030000
  599.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  599.24 +END:STANDARD
  599.25 +BEGIN:STANDARD
  599.26 +TZOFFSETFROM:+004956
  599.27 +TZOFFSETTO:+004956
  599.28 +TZNAME:RMT
  599.29 +DTSTART:18660922T000000
  599.30 +RDATE:18660922T000000
  599.31 +END:STANDARD
  599.32 +BEGIN:STANDARD
  599.33 +TZOFFSETFROM:+004956
  599.34 +TZOFFSETTO:+0100
  599.35 +TZNAME:CET
  599.36 +DTSTART:18931101T000000
  599.37 +RDATE:18931101T000000
  599.38 +END:STANDARD
  599.39 +BEGIN:DAYLIGHT
  599.40 +TZOFFSETFROM:+0100
  599.41 +TZOFFSETTO:+0200
  599.42 +TZNAME:CEST
  599.43 +DTSTART:19160603T000000
  599.44 +RDATE:19160603T000000
  599.45 +RDATE:19170401T000000
  599.46 +RDATE:19180310T000000
  599.47 +RDATE:19190302T000000
  599.48 +RDATE:19200321T000000
  599.49 +RDATE:19400615T000000
  599.50 +RDATE:19430329T020000
  599.51 +RDATE:19440403T020000
  599.52 +RDATE:19450402T020000
  599.53 +RDATE:19460317T020000
  599.54 +RDATE:19470316T000000
  599.55 +RDATE:19480229T020000
  599.56 +RDATE:19660522T000000
  599.57 +RDATE:19670528T000000
  599.58 +RDATE:19680526T000000
  599.59 +RDATE:19690601T000000
  599.60 +RDATE:19700531T000000
  599.61 +RDATE:19710523T000000
  599.62 +RDATE:19720528T000000
  599.63 +RDATE:19730603T000000
  599.64 +RDATE:19740526T000000
  599.65 +RDATE:19750601T000000
  599.66 +RDATE:19760530T000000
  599.67 +RDATE:19770522T000000
  599.68 +RDATE:19780528T000000
  599.69 +RDATE:19790527T000000
  599.70 +RDATE:19800406T020000
  599.71 +END:DAYLIGHT
  599.72 +BEGIN:STANDARD
  599.73 +TZOFFSETFROM:+0200
  599.74 +TZOFFSETTO:+0100
  599.75 +TZNAME:CET
  599.76 +DTSTART:19161001T010000
  599.77 +RDATE:19161001T010000
  599.78 +RDATE:19170930T010000
  599.79 +RDATE:19181006T010000
  599.80 +RDATE:19191005T010000
  599.81 +RDATE:19200919T010000
  599.82 +RDATE:19421102T030000
  599.83 +RDATE:19431004T030000
  599.84 +RDATE:19440917T010000
  599.85 +RDATE:19450915T010000
  599.86 +RDATE:19461006T030000
  599.87 +RDATE:19471005T010000
  599.88 +RDATE:19481003T030000
  599.89 +RDATE:19660925T000000
  599.90 +RDATE:19670924T000000
  599.91 +RDATE:19680922T000000
  599.92 +RDATE:19690928T000000
  599.93 +RDATE:19700927T000000
  599.94 +RDATE:19710926T010000
  599.95 +RDATE:19721001T000000
  599.96 +RDATE:19730930T000000
  599.97 +RDATE:19740929T000000
  599.98 +RDATE:19750928T010000
  599.99 +RDATE:19760926T010000
 599.100 +RDATE:19770925T010000
 599.101 +RDATE:19781001T010000
 599.102 +RDATE:19790930T010000
 599.103 +RDATE:19800928T030000
 599.104 +RDATE:19810927T030000
 599.105 +RDATE:19820926T030000
 599.106 +RDATE:19830925T030000
 599.107 +RDATE:19840930T030000
 599.108 +RDATE:19850929T030000
 599.109 +RDATE:19860928T030000
 599.110 +RDATE:19870927T030000
 599.111 +RDATE:19880925T030000
 599.112 +RDATE:19890924T030000
 599.113 +RDATE:19900930T030000
 599.114 +RDATE:19910929T030000
 599.115 +RDATE:19920927T030000
 599.116 +RDATE:19930926T030000
 599.117 +RDATE:19940925T030000
 599.118 +RDATE:19950924T030000
 599.119 +END:STANDARD
 599.120 +BEGIN:DAYLIGHT
 599.121 +TZOFFSETFROM:+0200
 599.122 +TZOFFSETTO:+0200
 599.123 +TZNAME:CEST
 599.124 +DTSTART:19440701T000000
 599.125 +RDATE:19440701T000000
 599.126 +END:DAYLIGHT
 599.127 +BEGIN:STANDARD
 599.128 +TZOFFSETFROM:+0100
 599.129 +TZOFFSETTO:+0100
 599.130 +TZNAME:CET
 599.131 +DTSTART:19800101T000000
 599.132 +RDATE:19800101T000000
 599.133 +END:STANDARD
 599.134 +END:VTIMEZONE
 599.135 +END:VCALENDAR
   600.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   600.2 +++ b/src/zoneinfo-global/Europe/Sarajevo.ics	Tue Feb 10 18:12:00 2015 +0100
   600.3 @@ -0,0 +1,71 @@
   600.4 +BEGIN:VCALENDAR
   600.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   600.6 +VERSION:2.0
   600.7 +BEGIN:VTIMEZONE
   600.8 +TZID:Europe/Sarajevo
   600.9 +TZURL:http://tzurl.org/zoneinfo-global/Europe/Sarajevo
  600.10 +X-LIC-LOCATION:Europe/Sarajevo
  600.11 +BEGIN:DAYLIGHT
  600.12 +TZOFFSETFROM:+0100
  600.13 +TZOFFSETTO:+0200
  600.14 +TZNAME:CEST
  600.15 +DTSTART:19830327T020000
  600.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  600.17 +END:DAYLIGHT
  600.18 +BEGIN:STANDARD
  600.19 +TZOFFSETFROM:+0200
  600.20 +TZOFFSETTO:+0100
  600.21 +TZNAME:CET
  600.22 +DTSTART:19961027T030000
  600.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  600.24 +END:STANDARD
  600.25 +BEGIN:STANDARD
  600.26 +TZOFFSETFROM:+0122
  600.27 +TZOFFSETTO:+0100
  600.28 +TZNAME:CET
  600.29 +DTSTART:18840101T000000
  600.30 +RDATE:18840101T000000
  600.31 +END:STANDARD
  600.32 +BEGIN:DAYLIGHT
  600.33 +TZOFFSETFROM:+0100
  600.34 +TZOFFSETTO:+0200
  600.35 +TZNAME:CEST
  600.36 +DTSTART:19410418T230000
  600.37 +RDATE:19410418T230000
  600.38 +RDATE:19430329T020000
  600.39 +RDATE:19440403T020000
  600.40 +RDATE:19450508T020000
  600.41 +END:DAYLIGHT
  600.42 +BEGIN:STANDARD
  600.43 +TZOFFSETFROM:+0200
  600.44 +TZOFFSETTO:+0100
  600.45 +TZNAME:CET
  600.46 +DTSTART:19421102T030000
  600.47 +RDATE:19421102T030000
  600.48 +RDATE:19431004T030000
  600.49 +RDATE:19441002T030000
  600.50 +RDATE:19450916T030000
  600.51 +RDATE:19830925T030000
  600.52 +RDATE:19840930T030000
  600.53 +RDATE:19850929T030000
  600.54 +RDATE:19860928T030000
  600.55 +RDATE:19870927T030000
  600.56 +RDATE:19880925T030000
  600.57 +RDATE:19890924T030000
  600.58 +RDATE:19900930T030000
  600.59 +RDATE:19910929T030000
  600.60 +RDATE:19920927T030000
  600.61 +RDATE:19930926T030000
  600.62 +RDATE:19940925T030000
  600.63 +RDATE:19950924T030000
  600.64 +END:STANDARD
  600.65 +BEGIN:STANDARD
  600.66 +TZOFFSETFROM:+0100
  600.67 +TZOFFSETTO:+0100
  600.68 +TZNAME:CET
  600.69 +DTSTART:19450101T000000
  600.70 +RDATE:19450101T000000
  600.71 +RDATE:19821127T000000
  600.72 +END:STANDARD
  600.73 +END:VTIMEZONE
  600.74 +END:VCALENDAR
   601.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   601.2 +++ b/src/zoneinfo-global/Europe/Simferopol.ics	Tue Feb 10 18:12:00 2015 +0100
   601.3 @@ -0,0 +1,151 @@
   601.4 +BEGIN:VCALENDAR
   601.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   601.6 +VERSION:2.0
   601.7 +BEGIN:VTIMEZONE
   601.8 +TZID:Europe/Simferopol
   601.9 +TZURL:http://tzurl.org/zoneinfo-global/Europe/Simferopol
  601.10 +X-LIC-LOCATION:Europe/Simferopol
  601.11 +BEGIN:STANDARD
  601.12 +TZOFFSETFROM:+0300
  601.13 +TZOFFSETTO:+0200
  601.14 +TZNAME:EET
  601.15 +DTSTART:19971026T040000
  601.16 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  601.17 +END:STANDARD
  601.18 +BEGIN:DAYLIGHT
  601.19 +TZOFFSETFROM:+0200
  601.20 +TZOFFSETTO:+0300
  601.21 +TZNAME:EEST
  601.22 +DTSTART:19980329T030000
  601.23 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  601.24 +END:DAYLIGHT
  601.25 +BEGIN:STANDARD
  601.26 +TZOFFSETFROM:+021624
  601.27 +TZOFFSETTO:+0216
  601.28 +TZNAME:SMT
  601.29 +DTSTART:18800101T000000
  601.30 +RDATE:18800101T000000
  601.31 +END:STANDARD
  601.32 +BEGIN:STANDARD
  601.33 +TZOFFSETFROM:+0216
  601.34 +TZOFFSETTO:+0200
  601.35 +TZNAME:EET
  601.36 +DTSTART:19240502T000000
  601.37 +RDATE:19240502T000000
  601.38 +END:STANDARD
  601.39 +BEGIN:STANDARD
  601.40 +TZOFFSETFROM:+0200
  601.41 +TZOFFSETTO:+0300
  601.42 +TZNAME:MSK
  601.43 +DTSTART:19300621T000000
  601.44 +RDATE:19300621T000000
  601.45 +RDATE:19440413T000000
  601.46 +END:STANDARD
  601.47 +BEGIN:DAYLIGHT
  601.48 +TZOFFSETFROM:+0300
  601.49 +TZOFFSETTO:+0200
  601.50 +TZNAME:CEST
  601.51 +DTSTART:19411101T000000
  601.52 +RDATE:19411101T000000
  601.53 +END:DAYLIGHT
  601.54 +BEGIN:STANDARD
  601.55 +TZOFFSETFROM:+0200
  601.56 +TZOFFSETTO:+0100
  601.57 +TZNAME:CET
  601.58 +DTSTART:19421102T030000
  601.59 +RDATE:19421102T030000
  601.60 +RDATE:19431004T030000
  601.61 +END:STANDARD
  601.62 +BEGIN:DAYLIGHT
  601.63 +TZOFFSETFROM:+0100
  601.64 +TZOFFSETTO:+0200
  601.65 +TZNAME:CEST
  601.66 +DTSTART:19430329T020000
  601.67 +RDATE:19430329T020000
  601.68 +RDATE:19440403T020000
  601.69 +END:DAYLIGHT
  601.70 +BEGIN:DAYLIGHT
  601.71 +TZOFFSETFROM:+0300
  601.72 +TZOFFSETTO:+0400
  601.73 +TZNAME:MSD
  601.74 +DTSTART:19810401T000000
  601.75 +RDATE:19810401T000000
  601.76 +RDATE:19820401T000000
  601.77 +RDATE:19830401T000000
  601.78 +RDATE:19840401T000000
  601.79 +RDATE:19850331T020000
  601.80 +RDATE:19860330T020000
  601.81 +RDATE:19870329T020000
  601.82 +RDATE:19880327T020000
  601.83 +RDATE:19890326T020000
  601.84 +RDATE:19940501T000000
  601.85 +RDATE:19950326T000000
  601.86 +RDATE:19960331T000000
  601.87 +END:DAYLIGHT
  601.88 +BEGIN:STANDARD
  601.89 +TZOFFSETFROM:+0400
  601.90 +TZOFFSETTO:+0300
  601.91 +TZNAME:MSK
  601.92 +DTSTART:19811001T000000
  601.93 +RDATE:19811001T000000
  601.94 +RDATE:19821001T000000
  601.95 +RDATE:19831001T000000
  601.96 +RDATE:19840930T030000
  601.97 +RDATE:19850929T030000
  601.98 +RDATE:19860928T030000
  601.99 +RDATE:19870927T030000
 601.100 +RDATE:19880925T030000
 601.101 +RDATE:19890924T030000
 601.102 +RDATE:19940925T000000
 601.103 +RDATE:19950924T000000
 601.104 +RDATE:19961027T040000
 601.105 +END:STANDARD
 601.106 +BEGIN:STANDARD
 601.107 +TZOFFSETFROM:+0300
 601.108 +TZOFFSETTO:+0300
 601.109 +TZNAME:MSK
 601.110 +DTSTART:19900101T000000
 601.111 +RDATE:19900101T000000
 601.112 +RDATE:19970101T000000
 601.113 +END:STANDARD
 601.114 +BEGIN:STANDARD
 601.115 +TZOFFSETFROM:+0300
 601.116 +TZOFFSETTO:+0200
 601.117 +TZNAME:EET
 601.118 +DTSTART:19900701T020000
 601.119 +RDATE:19900701T020000
 601.120 +RDATE:19920927T000000
 601.121 +RDATE:19930926T000000
 601.122 +END:STANDARD
 601.123 +BEGIN:STANDARD
 601.124 +TZOFFSETFROM:+0200
 601.125 +TZOFFSETTO:+0200
 601.126 +TZNAME:EET
 601.127 +DTSTART:19920101T000000
 601.128 +RDATE:19920101T000000
 601.129 +END:STANDARD
 601.130 +BEGIN:DAYLIGHT
 601.131 +TZOFFSETFROM:+0200
 601.132 +TZOFFSETTO:+0300
 601.133 +TZNAME:EEST
 601.134 +DTSTART:19920329T000000
 601.135 +RDATE:19920329T000000
 601.136 +RDATE:19930328T000000
 601.137 +RDATE:19940327T000000
 601.138 +END:DAYLIGHT
 601.139 +BEGIN:DAYLIGHT
 601.140 +TZOFFSETFROM:+0400
 601.141 +TZOFFSETTO:+0400
 601.142 +TZNAME:MSD
 601.143 +DTSTART:19960331T040000
 601.144 +RDATE:19960331T040000
 601.145 +END:DAYLIGHT
 601.146 +BEGIN:DAYLIGHT
 601.147 +TZOFFSETFROM:+0300
 601.148 +TZOFFSETTO:+0300
 601.149 +TZNAME:EEST
 601.150 +DTSTART:19970330T040000
 601.151 +RDATE:19970330T040000
 601.152 +END:DAYLIGHT
 601.153 +END:VTIMEZONE
 601.154 +END:VCALENDAR
   602.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   602.2 +++ b/src/zoneinfo-global/Europe/Skopje.ics	Tue Feb 10 18:12:00 2015 +0100
   602.3 @@ -0,0 +1,71 @@
   602.4 +BEGIN:VCALENDAR
   602.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   602.6 +VERSION:2.0
   602.7 +BEGIN:VTIMEZONE
   602.8 +TZID:Europe/Skopje
   602.9 +TZURL:http://tzurl.org/zoneinfo-global/Europe/Skopje
  602.10 +X-LIC-LOCATION:Europe/Skopje
  602.11 +BEGIN:DAYLIGHT
  602.12 +TZOFFSETFROM:+0100
  602.13 +TZOFFSETTO:+0200
  602.14 +TZNAME:CEST
  602.15 +DTSTART:19830327T020000
  602.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  602.17 +END:DAYLIGHT
  602.18 +BEGIN:STANDARD
  602.19 +TZOFFSETFROM:+0200
  602.20 +TZOFFSETTO:+0100
  602.21 +TZNAME:CET
  602.22 +DTSTART:19961027T030000
  602.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  602.24 +END:STANDARD
  602.25 +BEGIN:STANDARD
  602.26 +TZOFFSETFROM:+0122
  602.27 +TZOFFSETTO:+0100
  602.28 +TZNAME:CET
  602.29 +DTSTART:18840101T000000
  602.30 +RDATE:18840101T000000
  602.31 +END:STANDARD
  602.32 +BEGIN:DAYLIGHT
  602.33 +TZOFFSETFROM:+0100
  602.34 +TZOFFSETTO:+0200
  602.35 +TZNAME:CEST
  602.36 +DTSTART:19410418T230000
  602.37 +RDATE:19410418T230000
  602.38 +RDATE:19430329T020000
  602.39 +RDATE:19440403T020000
  602.40 +RDATE:19450508T020000
  602.41 +END:DAYLIGHT
  602.42 +BEGIN:STANDARD
  602.43 +TZOFFSETFROM:+0200
  602.44 +TZOFFSETTO:+0100
  602.45 +TZNAME:CET
  602.46 +DTSTART:19421102T030000
  602.47 +RDATE:19421102T030000
  602.48 +RDATE:19431004T030000
  602.49 +RDATE:19441002T030000
  602.50 +RDATE:19450916T030000
  602.51 +RDATE:19830925T030000
  602.52 +RDATE:19840930T030000
  602.53 +RDATE:19850929T030000
  602.54 +RDATE:19860928T030000
  602.55 +RDATE:19870927T030000
  602.56 +RDATE:19880925T030000
  602.57 +RDATE:19890924T030000
  602.58 +RDATE:19900930T030000
  602.59 +RDATE:19910929T030000
  602.60 +RDATE:19920927T030000
  602.61 +RDATE:19930926T030000
  602.62 +RDATE:19940925T030000
  602.63 +RDATE:19950924T030000
  602.64 +END:STANDARD
  602.65 +BEGIN:STANDARD
  602.66 +TZOFFSETFROM:+0100
  602.67 +TZOFFSETTO:+0100
  602.68 +TZNAME:CET
  602.69 +DTSTART:19450101T000000
  602.70 +RDATE:19450101T000000
  602.71 +RDATE:19821127T000000
  602.72 +END:STANDARD
  602.73 +END:VTIMEZONE
  602.74 +END:VCALENDAR
   603.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   603.2 +++ b/src/zoneinfo-global/Europe/Sofia.ics	Tue Feb 10 18:12:00 2015 +0100
   603.3 @@ -0,0 +1,131 @@
   603.4 +BEGIN:VCALENDAR
   603.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   603.6 +VERSION:2.0
   603.7 +BEGIN:VTIMEZONE
   603.8 +TZID:Europe/Sofia
   603.9 +TZURL:http://tzurl.org/zoneinfo-global/Europe/Sofia
  603.10 +X-LIC-LOCATION:Europe/Sofia
  603.11 +BEGIN:DAYLIGHT
  603.12 +TZOFFSETFROM:+0200
  603.13 +TZOFFSETTO:+0300
  603.14 +TZNAME:EEST
  603.15 +DTSTART:19970330T030000
  603.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  603.17 +END:DAYLIGHT
  603.18 +BEGIN:STANDARD
  603.19 +TZOFFSETFROM:+0300
  603.20 +TZOFFSETTO:+0200
  603.21 +TZNAME:EET
  603.22 +DTSTART:19971026T040000
  603.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  603.24 +END:STANDARD
  603.25 +BEGIN:STANDARD
  603.26 +TZOFFSETFROM:+013316
  603.27 +TZOFFSETTO:+015656
  603.28 +TZNAME:IMT
  603.29 +DTSTART:18800101T000000
  603.30 +RDATE:18800101T000000
  603.31 +END:STANDARD
  603.32 +BEGIN:STANDARD
  603.33 +TZOFFSETFROM:+015656
  603.34 +TZOFFSETTO:+0200
  603.35 +TZNAME:EET
  603.36 +DTSTART:18941130T000000
  603.37 +RDATE:18941130T000000
  603.38 +END:STANDARD
  603.39 +BEGIN:STANDARD
  603.40 +TZOFFSETFROM:+0200
  603.41 +TZOFFSETTO:+0100
  603.42 +TZNAME:CET
  603.43 +DTSTART:19421102T020000
  603.44 +RDATE:19421102T020000
  603.45 +RDATE:19431004T030000
  603.46 +RDATE:19441002T030000
  603.47 +END:STANDARD
  603.48 +BEGIN:DAYLIGHT
  603.49 +TZOFFSETFROM:+0100
  603.50 +TZOFFSETTO:+0200
  603.51 +TZNAME:CEST
  603.52 +DTSTART:19430329T020000
  603.53 +RDATE:19430329T020000
  603.54 +RDATE:19440403T020000
  603.55 +END:DAYLIGHT
  603.56 +BEGIN:STANDARD
  603.57 +TZOFFSETFROM:+0100
  603.58 +TZOFFSETTO:+0100
  603.59 +TZNAME:CET
  603.60 +DTSTART:19450101T000000
  603.61 +RDATE:19450101T000000
  603.62 +END:STANDARD
  603.63 +BEGIN:STANDARD
  603.64 +TZOFFSETFROM:+0100
  603.65 +TZOFFSETTO:+0200
  603.66 +TZNAME:EET
  603.67 +DTSTART:19450402T030000
  603.68 +RDATE:19450402T030000
  603.69 +END:STANDARD
  603.70 +BEGIN:DAYLIGHT
  603.71 +TZOFFSETFROM:+0200
  603.72 +TZOFFSETTO:+0300
  603.73 +TZNAME:EEST
  603.74 +DTSTART:19790331T230000
  603.75 +RDATE:19790331T230000
  603.76 +RDATE:19800405T230000
  603.77 +RDATE:19810404T230000
  603.78 +RDATE:19820403T230000
  603.79 +RDATE:19830327T020000
  603.80 +RDATE:19840325T020000
  603.81 +RDATE:19850331T020000
  603.82 +RDATE:19860330T020000
  603.83 +RDATE:19870329T020000
  603.84 +RDATE:19880327T020000
  603.85 +RDATE:19890326T020000
  603.86 +RDATE:19900325T020000
  603.87 +RDATE:19910331T000000
  603.88 +RDATE:19920329T000000
  603.89 +RDATE:19930328T000000
  603.90 +RDATE:19940327T000000
  603.91 +RDATE:19950326T000000
  603.92 +RDATE:19960331T000000
  603.93 +END:DAYLIGHT
  603.94 +BEGIN:STANDARD
  603.95 +TZOFFSETFROM:+0300
  603.96 +TZOFFSETTO:+0200
  603.97 +TZNAME:EET
  603.98 +DTSTART:19791001T010000
  603.99 +RDATE:19791001T010000
 603.100 +RDATE:19800929T010000
 603.101 +RDATE:19810927T020000
 603.102 +RDATE:19820926T030000
 603.103 +RDATE:19830925T030000
 603.104 +RDATE:19840930T030000
 603.105 +RDATE:19850929T030000
 603.106 +RDATE:19860928T030000
 603.107 +RDATE:19870927T030000
 603.108 +RDATE:19880925T030000
 603.109 +RDATE:19890924T030000
 603.110 +RDATE:19900930T030000
 603.111 +RDATE:19910929T000000
 603.112 +RDATE:19920927T000000
 603.113 +RDATE:19930926T000000
 603.114 +RDATE:19940925T000000
 603.115 +RDATE:19950924T000000
 603.116 +RDATE:19961027T000000
 603.117 +END:STANDARD
 603.118 +BEGIN:DAYLIGHT
 603.119 +TZOFFSETFROM:+0300
 603.120 +TZOFFSETTO:+0300
 603.121 +TZNAME:EEST
 603.122 +DTSTART:19820926T020000
 603.123 +RDATE:19820926T020000
 603.124 +END:DAYLIGHT
 603.125 +BEGIN:STANDARD
 603.126 +TZOFFSETFROM:+0200
 603.127 +TZOFFSETTO:+0200
 603.128 +TZNAME:EET
 603.129 +DTSTART:19910101T000000
 603.130 +RDATE:19910101T000000
 603.131 +RDATE:19970101T000000
 603.132 +END:STANDARD
 603.133 +END:VTIMEZONE
 603.134 +END:VCALENDAR
   604.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   604.2 +++ b/src/zoneinfo-global/Europe/Stockholm.ics	Tue Feb 10 18:12:00 2015 +0100
   604.3 @@ -0,0 +1,75 @@
   604.4 +BEGIN:VCALENDAR
   604.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   604.6 +VERSION:2.0
   604.7 +BEGIN:VTIMEZONE
   604.8 +TZID:Europe/Stockholm
   604.9 +TZURL:http://tzurl.org/zoneinfo-global/Europe/Stockholm
  604.10 +X-LIC-LOCATION:Europe/Stockholm
  604.11 +BEGIN:DAYLIGHT
  604.12 +TZOFFSETFROM:+0100
  604.13 +TZOFFSETTO:+0200
  604.14 +TZNAME:CEST
  604.15 +DTSTART:19810329T020000
  604.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  604.17 +END:DAYLIGHT
  604.18 +BEGIN:STANDARD
  604.19 +TZOFFSETFROM:+0200
  604.20 +TZOFFSETTO:+0100
  604.21 +TZNAME:CET
  604.22 +DTSTART:19961027T030000
  604.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  604.24 +END:STANDARD
  604.25 +BEGIN:STANDARD
  604.26 +TZOFFSETFROM:+011212
  604.27 +TZOFFSETTO:+010014
  604.28 +TZNAME:SET
  604.29 +DTSTART:18790101T000000
  604.30 +RDATE:18790101T000000
  604.31 +END:STANDARD
  604.32 +BEGIN:STANDARD
  604.33 +TZOFFSETFROM:+010014
  604.34 +TZOFFSETTO:+0100
  604.35 +TZNAME:CET
  604.36 +DTSTART:19000101T000000
  604.37 +RDATE:19000101T000000
  604.38 +END:STANDARD
  604.39 +BEGIN:DAYLIGHT
  604.40 +TZOFFSETFROM:+0100
  604.41 +TZOFFSETTO:+0200
  604.42 +TZNAME:CEST
  604.43 +DTSTART:19160514T230000
  604.44 +RDATE:19160514T230000
  604.45 +RDATE:19800406T020000
  604.46 +END:DAYLIGHT
  604.47 +BEGIN:STANDARD
  604.48 +TZOFFSETFROM:+0200
  604.49 +TZOFFSETTO:+0100
  604.50 +TZNAME:CET
  604.51 +DTSTART:19161001T010000
  604.52 +RDATE:19161001T010000
  604.53 +RDATE:19800928T030000
  604.54 +RDATE:19810927T030000
  604.55 +RDATE:19820926T030000
  604.56 +RDATE:19830925T030000
  604.57 +RDATE:19840930T030000
  604.58 +RDATE:19850929T030000
  604.59 +RDATE:19860928T030000
  604.60 +RDATE:19870927T030000
  604.61 +RDATE:19880925T030000
  604.62 +RDATE:19890924T030000
  604.63 +RDATE:19900930T030000
  604.64 +RDATE:19910929T030000
  604.65 +RDATE:19920927T030000
  604.66 +RDATE:19930926T030000
  604.67 +RDATE:19940925T030000
  604.68 +RDATE:19950924T030000
  604.69 +END:STANDARD
  604.70 +BEGIN:STANDARD
  604.71 +TZOFFSETFROM:+0100
  604.72 +TZOFFSETTO:+0100
  604.73 +TZNAME:CET
  604.74 +DTSTART:19800101T000000
  604.75 +RDATE:19800101T000000
  604.76 +END:STANDARD
  604.77 +END:VTIMEZONE
  604.78 +END:VCALENDAR
   605.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   605.2 +++ b/src/zoneinfo-global/Europe/Tallinn.ics	Tue Feb 10 18:12:00 2015 +0100
   605.3 @@ -0,0 +1,161 @@
   605.4 +BEGIN:VCALENDAR
   605.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   605.6 +VERSION:2.0
   605.7 +BEGIN:VTIMEZONE
   605.8 +TZID:Europe/Tallinn
   605.9 +TZURL:http://tzurl.org/zoneinfo-global/Europe/Tallinn
  605.10 +X-LIC-LOCATION:Europe/Tallinn
  605.11 +BEGIN:DAYLIGHT
  605.12 +TZOFFSETFROM:+0200
  605.13 +TZOFFSETTO:+0300
  605.14 +TZNAME:EEST
  605.15 +DTSTART:20020331T030000
  605.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  605.17 +END:DAYLIGHT
  605.18 +BEGIN:STANDARD
  605.19 +TZOFFSETFROM:+0300
  605.20 +TZOFFSETTO:+0200
  605.21 +TZNAME:EET
  605.22 +DTSTART:20021027T040000
  605.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  605.24 +END:STANDARD
  605.25 +BEGIN:STANDARD
  605.26 +TZOFFSETFROM:+0139
  605.27 +TZOFFSETTO:+0139
  605.28 +TZNAME:TMT
  605.29 +DTSTART:18800101T000000
  605.30 +RDATE:18800101T000000
  605.31 +END:STANDARD
  605.32 +BEGIN:STANDARD
  605.33 +TZOFFSETFROM:+0139
  605.34 +TZOFFSETTO:+0100
  605.35 +TZNAME:CET
  605.36 +DTSTART:19180201T000000
  605.37 +RDATE:19180201T000000
  605.38 +END:STANDARD
  605.39 +BEGIN:DAYLIGHT
  605.40 +TZOFFSETFROM:+0100
  605.41 +TZOFFSETTO:+0200
  605.42 +TZNAME:CEST
  605.43 +DTSTART:19180415T020000
  605.44 +RDATE:19180415T020000
  605.45 +RDATE:19430329T020000
  605.46 +RDATE:19440403T020000
  605.47 +END:DAYLIGHT
  605.48 +BEGIN:STANDARD
  605.49 +TZOFFSETFROM:+0200
  605.50 +TZOFFSETTO:+0100
  605.51 +TZNAME:CET
  605.52 +DTSTART:19180916T030000
  605.53 +RDATE:19180916T030000
  605.54 +RDATE:19421102T030000
  605.55 +RDATE:19431004T030000
  605.56 +END:STANDARD
  605.57 +BEGIN:STANDARD
  605.58 +TZOFFSETFROM:+0100
  605.59 +TZOFFSETTO:+0139
  605.60 +TZNAME:TMT
  605.61 +DTSTART:19190701T000000
  605.62 +RDATE:19190701T000000
  605.63 +END:STANDARD
  605.64 +BEGIN:STANDARD
  605.65 +TZOFFSETFROM:+0139
  605.66 +TZOFFSETTO:+0200
  605.67 +TZNAME:EET
  605.68 +DTSTART:19210501T000000
  605.69 +RDATE:19210501T000000
  605.70 +END:STANDARD
  605.71 +BEGIN:STANDARD
  605.72 +TZOFFSETFROM:+0200
  605.73 +TZOFFSETTO:+0300
  605.74 +TZNAME:MSK
  605.75 +DTSTART:19400806T000000
  605.76 +RDATE:19400806T000000
  605.77 +RDATE:19440922T000000
  605.78 +END:STANDARD
  605.79 +BEGIN:DAYLIGHT
  605.80 +TZOFFSETFROM:+0300
  605.81 +TZOFFSETTO:+0200
  605.82 +TZNAME:CEST
  605.83 +DTSTART:19410915T000000
  605.84 +RDATE:19410915T000000
  605.85 +END:DAYLIGHT
  605.86 +BEGIN:DAYLIGHT
  605.87 +TZOFFSETFROM:+0300
  605.88 +TZOFFSETTO:+0400
  605.89 +TZNAME:MSD
  605.90 +DTSTART:19810401T000000
  605.91 +RDATE:19810401T000000
  605.92 +RDATE:19820401T000000
  605.93 +RDATE:19830401T000000
  605.94 +RDATE:19840401T000000
  605.95 +RDATE:19850331T020000
  605.96 +RDATE:19860330T020000
  605.97 +RDATE:19870329T020000
  605.98 +RDATE:19880327T020000
  605.99 +END:DAYLIGHT
 605.100 +BEGIN:STANDARD
 605.101 +TZOFFSETFROM:+0400
 605.102 +TZOFFSETTO:+0300
 605.103 +TZNAME:MSK
 605.104 +DTSTART:19811001T000000
 605.105 +RDATE:19811001T000000
 605.106 +RDATE:19821001T000000
 605.107 +RDATE:19831001T000000
 605.108 +RDATE:19840930T030000
 605.109 +RDATE:19850929T030000
 605.110 +RDATE:19860928T030000
 605.111 +RDATE:19870927T030000
 605.112 +RDATE:19880925T030000
 605.113 +END:STANDARD
 605.114 +BEGIN:DAYLIGHT
 605.115 +TZOFFSETFROM:+0300
 605.116 +TZOFFSETTO:+0300
 605.117 +TZNAME:EEST
 605.118 +DTSTART:19890326T020000
 605.119 +RDATE:19890326T020000
 605.120 +RDATE:19980922T000000
 605.121 +END:DAYLIGHT
 605.122 +BEGIN:STANDARD
 605.123 +TZOFFSETFROM:+0300
 605.124 +TZOFFSETTO:+0200
 605.125 +TZNAME:EET
 605.126 +DTSTART:19890924T030000
 605.127 +RDATE:19890924T030000
 605.128 +RDATE:19900930T030000
 605.129 +RDATE:19910929T030000
 605.130 +RDATE:19920927T030000
 605.131 +RDATE:19930926T030000
 605.132 +RDATE:19940925T030000
 605.133 +RDATE:19950924T030000
 605.134 +RDATE:19961027T030000
 605.135 +RDATE:19971026T030000
 605.136 +RDATE:19981025T040000
 605.137 +RDATE:19991031T040000
 605.138 +END:STANDARD
 605.139 +BEGIN:DAYLIGHT
 605.140 +TZOFFSETFROM:+0200
 605.141 +TZOFFSETTO:+0300
 605.142 +TZNAME:EEST
 605.143 +DTSTART:19900325T020000
 605.144 +RDATE:19900325T020000
 605.145 +RDATE:19910331T020000
 605.146 +RDATE:19920329T020000
 605.147 +RDATE:19930328T020000
 605.148 +RDATE:19940327T020000
 605.149 +RDATE:19950326T020000
 605.150 +RDATE:19960331T020000
 605.151 +RDATE:19970330T020000
 605.152 +RDATE:19980329T020000
 605.153 +RDATE:19990328T030000
 605.154 +END:DAYLIGHT
 605.155 +BEGIN:STANDARD
 605.156 +TZOFFSETFROM:+0200
 605.157 +TZOFFSETTO:+0200
 605.158 +TZNAME:EET
 605.159 +DTSTART:19991101T000000
 605.160 +RDATE:19991101T000000
 605.161 +RDATE:20020221T000000
 605.162 +END:STANDARD
 605.163 +END:VTIMEZONE
 605.164 +END:VCALENDAR
   606.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   606.2 +++ b/src/zoneinfo-global/Europe/Tirane.ics	Tue Feb 10 18:12:00 2015 +0100
   606.3 @@ -0,0 +1,86 @@
   606.4 +BEGIN:VCALENDAR
   606.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   606.6 +VERSION:2.0
   606.7 +BEGIN:VTIMEZONE
   606.8 +TZID:Europe/Tirane
   606.9 +TZURL:http://tzurl.org/zoneinfo-global/Europe/Tirane
  606.10 +X-LIC-LOCATION:Europe/Tirane
  606.11 +BEGIN:DAYLIGHT
  606.12 +TZOFFSETFROM:+0100
  606.13 +TZOFFSETTO:+0200
  606.14 +TZNAME:CEST
  606.15 +DTSTART:19850331T020000
  606.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  606.17 +END:DAYLIGHT
  606.18 +BEGIN:STANDARD
  606.19 +TZOFFSETFROM:+0200
  606.20 +TZOFFSETTO:+0100
  606.21 +TZNAME:CET
  606.22 +DTSTART:19961027T030000
  606.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  606.24 +END:STANDARD
  606.25 +BEGIN:STANDARD
  606.26 +TZOFFSETFROM:+011920
  606.27 +TZOFFSETTO:+0100
  606.28 +TZNAME:CET
  606.29 +DTSTART:19140101T000000
  606.30 +RDATE:19140101T000000
  606.31 +END:STANDARD
  606.32 +BEGIN:DAYLIGHT
  606.33 +TZOFFSETFROM:+0100
  606.34 +TZOFFSETTO:+0200
  606.35 +TZNAME:CEST
  606.36 +DTSTART:19400616T000000
  606.37 +RDATE:19400616T000000
  606.38 +RDATE:19430329T020000
  606.39 +RDATE:19740504T000000
  606.40 +RDATE:19750501T000000
  606.41 +RDATE:19760502T000000
  606.42 +RDATE:19770508T000000
  606.43 +RDATE:19780506T000000
  606.44 +RDATE:19790505T000000
  606.45 +RDATE:19800503T000000
  606.46 +RDATE:19810426T000000
  606.47 +RDATE:19820502T000000
  606.48 +RDATE:19830418T000000
  606.49 +RDATE:19840401T000000
  606.50 +END:DAYLIGHT
  606.51 +BEGIN:STANDARD
  606.52 +TZOFFSETFROM:+0200
  606.53 +TZOFFSETTO:+0100
  606.54 +TZNAME:CET
  606.55 +DTSTART:19421102T030000
  606.56 +RDATE:19421102T030000
  606.57 +RDATE:19430410T030000
  606.58 +RDATE:19741002T000000
  606.59 +RDATE:19751002T000000
  606.60 +RDATE:19761003T000000
  606.61 +RDATE:19771002T000000
  606.62 +RDATE:19781001T000000
  606.63 +RDATE:19790930T000000
  606.64 +RDATE:19801004T000000
  606.65 +RDATE:19810927T000000
  606.66 +RDATE:19821003T000000
  606.67 +RDATE:19831001T000000
  606.68 +RDATE:19840930T030000
  606.69 +RDATE:19850929T030000
  606.70 +RDATE:19860928T030000
  606.71 +RDATE:19870927T030000
  606.72 +RDATE:19880925T030000
  606.73 +RDATE:19890924T030000
  606.74 +RDATE:19900930T030000
  606.75 +RDATE:19910929T030000
  606.76 +RDATE:19920927T030000
  606.77 +RDATE:19930926T030000
  606.78 +RDATE:19940925T030000
  606.79 +RDATE:19950924T030000
  606.80 +END:STANDARD
  606.81 +BEGIN:DAYLIGHT
  606.82 +TZOFFSETFROM:+0200
  606.83 +TZOFFSETTO:+0200
  606.84 +TZNAME:CEST
  606.85 +DTSTART:19840701T000000
  606.86 +RDATE:19840701T000000
  606.87 +END:DAYLIGHT
  606.88 +END:VTIMEZONE
  606.89 +END:VCALENDAR
   607.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   607.2 +++ b/src/zoneinfo-global/Europe/Uzhgorod.ics	Tue Feb 10 18:12:00 2015 +0100
   607.3 @@ -0,0 +1,147 @@
   607.4 +BEGIN:VCALENDAR
   607.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   607.6 +VERSION:2.0
   607.7 +BEGIN:VTIMEZONE
   607.8 +TZID:Europe/Uzhgorod
   607.9 +TZURL:http://tzurl.org/zoneinfo-global/Europe/Uzhgorod
  607.10 +X-LIC-LOCATION:Europe/Uzhgorod
  607.11 +BEGIN:DAYLIGHT
  607.12 +TZOFFSETFROM:+0200
  607.13 +TZOFFSETTO:+0300
  607.14 +TZNAME:EEST
  607.15 +DTSTART:19950326T030000
  607.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  607.17 +END:DAYLIGHT
  607.18 +BEGIN:STANDARD
  607.19 +TZOFFSETFROM:+0300
  607.20 +TZOFFSETTO:+0200
  607.21 +TZNAME:EET
  607.22 +DTSTART:19961027T040000
  607.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  607.24 +END:STANDARD
  607.25 +BEGIN:STANDARD
  607.26 +TZOFFSETFROM:+012912
  607.27 +TZOFFSETTO:+0100
  607.28 +TZNAME:CET
  607.29 +DTSTART:18901001T000000
  607.30 +RDATE:18901001T000000
  607.31 +END:STANDARD
  607.32 +BEGIN:STANDARD
  607.33 +TZOFFSETFROM:+0100
  607.34 +TZOFFSETTO:+0100
  607.35 +TZNAME:CET
  607.36 +DTSTART:19400101T000000
  607.37 +RDATE:19400101T000000
  607.38 +END:STANDARD
  607.39 +BEGIN:DAYLIGHT
  607.40 +TZOFFSETFROM:+0100
  607.41 +TZOFFSETTO:+0200
  607.42 +TZNAME:CEST
  607.43 +DTSTART:19400401T020000
  607.44 +RDATE:19400401T020000
  607.45 +RDATE:19430329T020000
  607.46 +RDATE:19440403T020000
  607.47 +END:DAYLIGHT
  607.48 +BEGIN:STANDARD
  607.49 +TZOFFSETFROM:+0200
  607.50 +TZOFFSETTO:+0100
  607.51 +TZNAME:CET
  607.52 +DTSTART:19421102T030000
  607.53 +RDATE:19421102T030000
  607.54 +RDATE:19431004T030000
  607.55 +RDATE:19441026T000000
  607.56 +END:STANDARD
  607.57 +BEGIN:DAYLIGHT
  607.58 +TZOFFSETFROM:+0200
  607.59 +TZOFFSETTO:+0200
  607.60 +TZNAME:CEST
  607.61 +DTSTART:19441001T000000
  607.62 +RDATE:19441001T000000
  607.63 +END:DAYLIGHT
  607.64 +BEGIN:STANDARD
  607.65 +TZOFFSETFROM:+0100
  607.66 +TZOFFSETTO:+0300
  607.67 +TZNAME:MSK
  607.68 +DTSTART:19450629T000000
  607.69 +RDATE:19450629T000000
  607.70 +END:STANDARD
  607.71 +BEGIN:DAYLIGHT
  607.72 +TZOFFSETFROM:+0300
  607.73 +TZOFFSETTO:+0400
  607.74 +TZNAME:MSD
  607.75 +DTSTART:19810401T000000
  607.76 +RDATE:19810401T000000
  607.77 +RDATE:19820401T000000
  607.78 +RDATE:19830401T000000
  607.79 +RDATE:19840401T000000
  607.80 +RDATE:19850331T020000
  607.81 +RDATE:19860330T020000
  607.82 +RDATE:19870329T020000
  607.83 +RDATE:19880327T020000
  607.84 +RDATE:19890326T020000
  607.85 +END:DAYLIGHT
  607.86 +BEGIN:STANDARD
  607.87 +TZOFFSETFROM:+0400
  607.88 +TZOFFSETTO:+0300
  607.89 +TZNAME:MSK
  607.90 +DTSTART:19811001T000000
  607.91 +RDATE:19811001T000000
  607.92 +RDATE:19821001T000000
  607.93 +RDATE:19831001T000000
  607.94 +RDATE:19840930T030000
  607.95 +RDATE:19850929T030000
  607.96 +RDATE:19860928T030000
  607.97 +RDATE:19870927T030000
  607.98 +RDATE:19880925T030000
  607.99 +RDATE:19890924T030000
 607.100 +END:STANDARD
 607.101 +BEGIN:STANDARD
 607.102 +TZOFFSETFROM:+0300
 607.103 +TZOFFSETTO:+0300
 607.104 +TZNAME:MSK
 607.105 +DTSTART:19900101T000000
 607.106 +RDATE:19900101T000000
 607.107 +END:STANDARD
 607.108 +BEGIN:STANDARD
 607.109 +TZOFFSETFROM:+0300
 607.110 +TZOFFSETTO:+0100
 607.111 +TZNAME:CET
 607.112 +DTSTART:19900701T020000
 607.113 +RDATE:19900701T020000
 607.114 +END:STANDARD
 607.115 +BEGIN:STANDARD
 607.116 +TZOFFSETFROM:+0100
 607.117 +TZOFFSETTO:+0200
 607.118 +TZNAME:EET
 607.119 +DTSTART:19910331T030000
 607.120 +RDATE:19910331T030000
 607.121 +END:STANDARD
 607.122 +BEGIN:STANDARD
 607.123 +TZOFFSETFROM:+0200
 607.124 +TZOFFSETTO:+0200
 607.125 +TZNAME:EET
 607.126 +DTSTART:19920101T000000
 607.127 +RDATE:19920101T000000
 607.128 +RDATE:19950101T000000
 607.129 +END:STANDARD
 607.130 +BEGIN:DAYLIGHT
 607.131 +TZOFFSETFROM:+0200
 607.132 +TZOFFSETTO:+0300
 607.133 +TZNAME:EEST
 607.134 +DTSTART:19920329T000000
 607.135 +RDATE:19920329T000000
 607.136 +RDATE:19930328T000000
 607.137 +RDATE:19940327T000000
 607.138 +END:DAYLIGHT
 607.139 +BEGIN:STANDARD
 607.140 +TZOFFSETFROM:+0300
 607.141 +TZOFFSETTO:+0200
 607.142 +TZNAME:EET
 607.143 +DTSTART:19920927T000000
 607.144 +RDATE:19920927T000000
 607.145 +RDATE:19930926T000000
 607.146 +RDATE:19940925T000000
 607.147 +RDATE:19950924T040000
 607.148 +END:STANDARD
 607.149 +END:VTIMEZONE
 607.150 +END:VCALENDAR
   608.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   608.2 +++ b/src/zoneinfo-global/Europe/Vaduz.ics	Tue Feb 10 18:12:00 2015 +0100
   608.3 @@ -0,0 +1,58 @@
   608.4 +BEGIN:VCALENDAR
   608.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   608.6 +VERSION:2.0
   608.7 +BEGIN:VTIMEZONE
   608.8 +TZID:Europe/Vaduz
   608.9 +TZURL:http://tzurl.org/zoneinfo-global/Europe/Vaduz
  608.10 +X-LIC-LOCATION:Europe/Vaduz
  608.11 +BEGIN:DAYLIGHT
  608.12 +TZOFFSETFROM:+0100
  608.13 +TZOFFSETTO:+0200
  608.14 +TZNAME:CEST
  608.15 +DTSTART:19810329T020000
  608.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  608.17 +END:DAYLIGHT
  608.18 +BEGIN:STANDARD
  608.19 +TZOFFSETFROM:+0200
  608.20 +TZOFFSETTO:+0100
  608.21 +TZNAME:CET
  608.22 +DTSTART:19961027T030000
  608.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  608.24 +END:STANDARD
  608.25 +BEGIN:STANDARD
  608.26 +TZOFFSETFROM:+003804
  608.27 +TZOFFSETTO:+0100
  608.28 +TZNAME:CET
  608.29 +DTSTART:18940601T000000
  608.30 +RDATE:18940601T000000
  608.31 +END:STANDARD
  608.32 +BEGIN:STANDARD
  608.33 +TZOFFSETFROM:+0100
  608.34 +TZOFFSETTO:+0100
  608.35 +TZNAME:CET
  608.36 +DTSTART:19810101T000000
  608.37 +RDATE:19810101T000000
  608.38 +END:STANDARD
  608.39 +BEGIN:STANDARD
  608.40 +TZOFFSETFROM:+0200
  608.41 +TZOFFSETTO:+0100
  608.42 +TZNAME:CET
  608.43 +DTSTART:19810927T030000
  608.44 +RDATE:19810927T030000
  608.45 +RDATE:19820926T030000
  608.46 +RDATE:19830925T030000
  608.47 +RDATE:19840930T030000
  608.48 +RDATE:19850929T030000
  608.49 +RDATE:19860928T030000
  608.50 +RDATE:19870927T030000
  608.51 +RDATE:19880925T030000
  608.52 +RDATE:19890924T030000
  608.53 +RDATE:19900930T030000
  608.54 +RDATE:19910929T030000
  608.55 +RDATE:19920927T030000
  608.56 +RDATE:19930926T030000
  608.57 +RDATE:19940925T030000
  608.58 +RDATE:19950924T030000
  608.59 +END:STANDARD
  608.60 +END:VTIMEZONE
  608.61 +END:VCALENDAR
   609.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   609.2 +++ b/src/zoneinfo-global/Europe/Vatican.ics	Tue Feb 10 18:12:00 2015 +0100
   609.3 @@ -0,0 +1,132 @@
   609.4 +BEGIN:VCALENDAR
   609.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   609.6 +VERSION:2.0
   609.7 +BEGIN:VTIMEZONE
   609.8 +TZID:Europe/Vatican
   609.9 +TZURL:http://tzurl.org/zoneinfo-global/Europe/Vatican
  609.10 +X-LIC-LOCATION:Europe/Vatican
  609.11 +BEGIN:DAYLIGHT
  609.12 +TZOFFSETFROM:+0100
  609.13 +TZOFFSETTO:+0200
  609.14 +TZNAME:CEST
  609.15 +DTSTART:19810329T020000
  609.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  609.17 +END:DAYLIGHT
  609.18 +BEGIN:STANDARD
  609.19 +TZOFFSETFROM:+0200
  609.20 +TZOFFSETTO:+0100
  609.21 +TZNAME:CET
  609.22 +DTSTART:19961027T030000
  609.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  609.24 +END:STANDARD
  609.25 +BEGIN:STANDARD
  609.26 +TZOFFSETFROM:+004956
  609.27 +TZOFFSETTO:+004956
  609.28 +TZNAME:RMT
  609.29 +DTSTART:18660922T000000
  609.30 +RDATE:18660922T000000
  609.31 +END:STANDARD
  609.32 +BEGIN:STANDARD
  609.33 +TZOFFSETFROM:+004956
  609.34 +TZOFFSETTO:+0100
  609.35 +TZNAME:CET
  609.36 +DTSTART:18931101T000000
  609.37 +RDATE:18931101T000000
  609.38 +END:STANDARD
  609.39 +BEGIN:DAYLIGHT
  609.40 +TZOFFSETFROM:+0100
  609.41 +TZOFFSETTO:+0200
  609.42 +TZNAME:CEST
  609.43 +DTSTART:19160603T000000
  609.44 +RDATE:19160603T000000
  609.45 +RDATE:19170401T000000
  609.46 +RDATE:19180310T000000
  609.47 +RDATE:19190302T000000
  609.48 +RDATE:19200321T000000
  609.49 +RDATE:19400615T000000
  609.50 +RDATE:19430329T020000
  609.51 +RDATE:19440403T020000
  609.52 +RDATE:19450402T020000
  609.53 +RDATE:19460317T020000
  609.54 +RDATE:19470316T000000
  609.55 +RDATE:19480229T020000
  609.56 +RDATE:19660522T000000
  609.57 +RDATE:19670528T000000
  609.58 +RDATE:19680526T000000
  609.59 +RDATE:19690601T000000
  609.60 +RDATE:19700531T000000
  609.61 +RDATE:19710523T000000
  609.62 +RDATE:19720528T000000
  609.63 +RDATE:19730603T000000
  609.64 +RDATE:19740526T000000
  609.65 +RDATE:19750601T000000
  609.66 +RDATE:19760530T000000
  609.67 +RDATE:19770522T000000
  609.68 +RDATE:19780528T000000
  609.69 +RDATE:19790527T000000
  609.70 +RDATE:19800406T020000
  609.71 +END:DAYLIGHT
  609.72 +BEGIN:STANDARD
  609.73 +TZOFFSETFROM:+0200
  609.74 +TZOFFSETTO:+0100
  609.75 +TZNAME:CET
  609.76 +DTSTART:19161001T010000
  609.77 +RDATE:19161001T010000
  609.78 +RDATE:19170930T010000
  609.79 +RDATE:19181006T010000
  609.80 +RDATE:19191005T010000
  609.81 +RDATE:19200919T010000
  609.82 +RDATE:19421102T030000
  609.83 +RDATE:19431004T030000
  609.84 +RDATE:19440917T010000
  609.85 +RDATE:19450915T010000
  609.86 +RDATE:19461006T030000
  609.87 +RDATE:19471005T010000
  609.88 +RDATE:19481003T030000
  609.89 +RDATE:19660925T000000
  609.90 +RDATE:19670924T000000
  609.91 +RDATE:19680922T000000
  609.92 +RDATE:19690928T000000
  609.93 +RDATE:19700927T000000
  609.94 +RDATE:19710926T010000
  609.95 +RDATE:19721001T000000
  609.96 +RDATE:19730930T000000
  609.97 +RDATE:19740929T000000
  609.98 +RDATE:19750928T010000
  609.99 +RDATE:19760926T010000
 609.100 +RDATE:19770925T010000
 609.101 +RDATE:19781001T010000
 609.102 +RDATE:19790930T010000
 609.103 +RDATE:19800928T030000
 609.104 +RDATE:19810927T030000
 609.105 +RDATE:19820926T030000
 609.106 +RDATE:19830925T030000
 609.107 +RDATE:19840930T030000
 609.108 +RDATE:19850929T030000
 609.109 +RDATE:19860928T030000
 609.110 +RDATE:19870927T030000
 609.111 +RDATE:19880925T030000
 609.112 +RDATE:19890924T030000
 609.113 +RDATE:19900930T030000
 609.114 +RDATE:19910929T030000
 609.115 +RDATE:19920927T030000
 609.116 +RDATE:19930926T030000
 609.117 +RDATE:19940925T030000
 609.118 +RDATE:19950924T030000
 609.119 +END:STANDARD
 609.120 +BEGIN:DAYLIGHT
 609.121 +TZOFFSETFROM:+0200
 609.122 +TZOFFSETTO:+0200
 609.123 +TZNAME:CEST
 609.124 +DTSTART:19440701T000000
 609.125 +RDATE:19440701T000000
 609.126 +END:DAYLIGHT
 609.127 +BEGIN:STANDARD
 609.128 +TZOFFSETFROM:+0100
 609.129 +TZOFFSETTO:+0100
 609.130 +TZNAME:CET
 609.131 +DTSTART:19800101T000000
 609.132 +RDATE:19800101T000000
 609.133 +END:STANDARD
 609.134 +END:VTIMEZONE
 609.135 +END:VCALENDAR
   610.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   610.2 +++ b/src/zoneinfo-global/Europe/Vienna.ics	Tue Feb 10 18:12:00 2015 +0100
   610.3 @@ -0,0 +1,90 @@
   610.4 +BEGIN:VCALENDAR
   610.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   610.6 +VERSION:2.0
   610.7 +BEGIN:VTIMEZONE
   610.8 +TZID:Europe/Vienna
   610.9 +TZURL:http://tzurl.org/zoneinfo-global/Europe/Vienna
  610.10 +X-LIC-LOCATION:Europe/Vienna
  610.11 +BEGIN:DAYLIGHT
  610.12 +TZOFFSETFROM:+0100
  610.13 +TZOFFSETTO:+0200
  610.14 +TZNAME:CEST
  610.15 +DTSTART:19810329T020000
  610.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  610.17 +END:DAYLIGHT
  610.18 +BEGIN:STANDARD
  610.19 +TZOFFSETFROM:+0200
  610.20 +TZOFFSETTO:+0100
  610.21 +TZNAME:CET
  610.22 +DTSTART:19961027T030000
  610.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  610.24 +END:STANDARD
  610.25 +BEGIN:STANDARD
  610.26 +TZOFFSETFROM:+010520
  610.27 +TZOFFSETTO:+0100
  610.28 +TZNAME:CET
  610.29 +DTSTART:18930401T000000
  610.30 +RDATE:18930401T000000
  610.31 +END:STANDARD
  610.32 +BEGIN:DAYLIGHT
  610.33 +TZOFFSETFROM:+0100
  610.34 +TZOFFSETTO:+0200
  610.35 +TZNAME:CEST
  610.36 +DTSTART:19160430T230000
  610.37 +RDATE:19160430T230000
  610.38 +RDATE:19170416T020000
  610.39 +RDATE:19180415T020000
  610.40 +RDATE:19200405T020000
  610.41 +RDATE:19400401T020000
  610.42 +RDATE:19430329T020000
  610.43 +RDATE:19440403T020000
  610.44 +RDATE:19450402T020000
  610.45 +RDATE:19460414T020000
  610.46 +RDATE:19470406T020000
  610.47 +RDATE:19480418T020000
  610.48 +RDATE:19800406T000000
  610.49 +END:DAYLIGHT
  610.50 +BEGIN:STANDARD
  610.51 +TZOFFSETFROM:+0200
  610.52 +TZOFFSETTO:+0100
  610.53 +TZNAME:CET
  610.54 +DTSTART:19161001T010000
  610.55 +RDATE:19161001T010000
  610.56 +RDATE:19170917T030000
  610.57 +RDATE:19180916T030000
  610.58 +RDATE:19200913T030000
  610.59 +RDATE:19421102T030000
  610.60 +RDATE:19431004T030000
  610.61 +RDATE:19441002T030000
  610.62 +RDATE:19450412T030000
  610.63 +RDATE:19461006T030000
  610.64 +RDATE:19471005T030000
  610.65 +RDATE:19481003T030000
  610.66 +RDATE:19800928T000000
  610.67 +RDATE:19810927T030000
  610.68 +RDATE:19820926T030000
  610.69 +RDATE:19830925T030000
  610.70 +RDATE:19840930T030000
  610.71 +RDATE:19850929T030000
  610.72 +RDATE:19860928T030000
  610.73 +RDATE:19870927T030000
  610.74 +RDATE:19880925T030000
  610.75 +RDATE:19890924T030000
  610.76 +RDATE:19900930T030000
  610.77 +RDATE:19910929T030000
  610.78 +RDATE:19920927T030000
  610.79 +RDATE:19930926T030000
  610.80 +RDATE:19940925T030000
  610.81 +RDATE:19950924T030000
  610.82 +END:STANDARD
  610.83 +BEGIN:STANDARD
  610.84 +TZOFFSETFROM:+0100
  610.85 +TZOFFSETTO:+0100
  610.86 +TZNAME:CET
  610.87 +DTSTART:19200101T000000
  610.88 +RDATE:19200101T000000
  610.89 +RDATE:19460101T000000
  610.90 +RDATE:19810101T000000
  610.91 +END:STANDARD
  610.92 +END:VTIMEZONE
  610.93 +END:VCALENDAR
   611.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   611.2 +++ b/src/zoneinfo-global/Europe/Vilnius.ics	Tue Feb 10 18:12:00 2015 +0100
   611.3 @@ -0,0 +1,171 @@
   611.4 +BEGIN:VCALENDAR
   611.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   611.6 +VERSION:2.0
   611.7 +BEGIN:VTIMEZONE
   611.8 +TZID:Europe/Vilnius
   611.9 +TZURL:http://tzurl.org/zoneinfo-global/Europe/Vilnius
  611.10 +X-LIC-LOCATION:Europe/Vilnius
  611.11 +BEGIN:DAYLIGHT
  611.12 +TZOFFSETFROM:+0200
  611.13 +TZOFFSETTO:+0300
  611.14 +TZNAME:EEST
  611.15 +DTSTART:20030330T030000
  611.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  611.17 +END:DAYLIGHT
  611.18 +BEGIN:STANDARD
  611.19 +TZOFFSETFROM:+0300
  611.20 +TZOFFSETTO:+0200
  611.21 +TZNAME:EET
  611.22 +DTSTART:20031026T040000
  611.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  611.24 +END:STANDARD
  611.25 +BEGIN:STANDARD
  611.26 +TZOFFSETFROM:+014116
  611.27 +TZOFFSETTO:+0124
  611.28 +TZNAME:WMT
  611.29 +DTSTART:18800101T000000
  611.30 +RDATE:18800101T000000
  611.31 +END:STANDARD
  611.32 +BEGIN:STANDARD
  611.33 +TZOFFSETFROM:+0124
  611.34 +TZOFFSETTO:+013536
  611.35 +TZNAME:KMT
  611.36 +DTSTART:19170101T000000
  611.37 +RDATE:19170101T000000
  611.38 +END:STANDARD
  611.39 +BEGIN:STANDARD
  611.40 +TZOFFSETFROM:+013536
  611.41 +TZOFFSETTO:+0100
  611.42 +TZNAME:CET
  611.43 +DTSTART:19191010T000000
  611.44 +RDATE:19191010T000000
  611.45 +END:STANDARD
  611.46 +BEGIN:STANDARD
  611.47 +TZOFFSETFROM:+0100
  611.48 +TZOFFSETTO:+0200
  611.49 +TZNAME:EET
  611.50 +DTSTART:19200712T000000
  611.51 +RDATE:19200712T000000
  611.52 +END:STANDARD
  611.53 +BEGIN:STANDARD
  611.54 +TZOFFSETFROM:+0200
  611.55 +TZOFFSETTO:+0100
  611.56 +TZNAME:CET
  611.57 +DTSTART:19201009T000000
  611.58 +RDATE:19201009T000000
  611.59 +RDATE:19421102T030000
  611.60 +RDATE:19431004T030000
  611.61 +RDATE:19981025T030000
  611.62 +END:STANDARD
  611.63 +BEGIN:STANDARD
  611.64 +TZOFFSETFROM:+0100
  611.65 +TZOFFSETTO:+0300
  611.66 +TZNAME:MSK
  611.67 +DTSTART:19400803T000000
  611.68 +RDATE:19400803T000000
  611.69 +END:STANDARD
  611.70 +BEGIN:DAYLIGHT
  611.71 +TZOFFSETFROM:+0300
  611.72 +TZOFFSETTO:+0200
  611.73 +TZNAME:CEST
  611.74 +DTSTART:19410624T000000
  611.75 +RDATE:19410624T000000
  611.76 +END:DAYLIGHT
  611.77 +BEGIN:DAYLIGHT
  611.78 +TZOFFSETFROM:+0100
  611.79 +TZOFFSETTO:+0200
  611.80 +TZNAME:CEST
  611.81 +DTSTART:19430329T020000
  611.82 +RDATE:19430329T020000
  611.83 +RDATE:19440403T020000
  611.84 +RDATE:19990328T020000
  611.85 +END:DAYLIGHT
  611.86 +BEGIN:STANDARD
  611.87 +TZOFFSETFROM:+0200
  611.88 +TZOFFSETTO:+0300
  611.89 +TZNAME:MSK
  611.90 +DTSTART:19440801T000000
  611.91 +RDATE:19440801T000000
  611.92 +END:STANDARD
  611.93 +BEGIN:DAYLIGHT
  611.94 +TZOFFSETFROM:+0300
  611.95 +TZOFFSETTO:+0400
  611.96 +TZNAME:MSD
  611.97 +DTSTART:19810401T000000
  611.98 +RDATE:19810401T000000
  611.99 +RDATE:19820401T000000
 611.100 +RDATE:19830401T000000
 611.101 +RDATE:19840401T000000
 611.102 +RDATE:19850331T020000
 611.103 +RDATE:19860330T020000
 611.104 +RDATE:19870329T020000
 611.105 +RDATE:19880327T020000
 611.106 +RDATE:19890326T020000
 611.107 +RDATE:19900325T020000
 611.108 +END:DAYLIGHT
 611.109 +BEGIN:STANDARD
 611.110 +TZOFFSETFROM:+0400
 611.111 +TZOFFSETTO:+0300
 611.112 +TZNAME:MSK
 611.113 +DTSTART:19811001T000000
 611.114 +RDATE:19811001T000000
 611.115 +RDATE:19821001T000000
 611.116 +RDATE:19831001T000000
 611.117 +RDATE:19840930T030000
 611.118 +RDATE:19850929T030000
 611.119 +RDATE:19860928T030000
 611.120 +RDATE:19870927T030000
 611.121 +RDATE:19880925T030000
 611.122 +RDATE:19890924T030000
 611.123 +RDATE:19900930T030000
 611.124 +END:STANDARD
 611.125 +BEGIN:DAYLIGHT
 611.126 +TZOFFSETFROM:+0300
 611.127 +TZOFFSETTO:+0300
 611.128 +TZNAME:EEST
 611.129 +DTSTART:19910331T020000
 611.130 +RDATE:19910331T020000
 611.131 +END:DAYLIGHT
 611.132 +BEGIN:STANDARD
 611.133 +TZOFFSETFROM:+0300
 611.134 +TZOFFSETTO:+0200
 611.135 +TZNAME:EET
 611.136 +DTSTART:19910929T030000
 611.137 +RDATE:19910929T030000
 611.138 +RDATE:19920927T030000
 611.139 +RDATE:19930926T030000
 611.140 +RDATE:19940925T030000
 611.141 +RDATE:19950924T030000
 611.142 +RDATE:19961027T030000
 611.143 +RDATE:19971026T030000
 611.144 +END:STANDARD
 611.145 +BEGIN:DAYLIGHT
 611.146 +TZOFFSETFROM:+0200
 611.147 +TZOFFSETTO:+0300
 611.148 +TZNAME:EEST
 611.149 +DTSTART:19920329T020000
 611.150 +RDATE:19920329T020000
 611.151 +RDATE:19930328T020000
 611.152 +RDATE:19940327T020000
 611.153 +RDATE:19950326T020000
 611.154 +RDATE:19960331T020000
 611.155 +RDATE:19970330T020000
 611.156 +END:DAYLIGHT
 611.157 +BEGIN:STANDARD
 611.158 +TZOFFSETFROM:+0200
 611.159 +TZOFFSETTO:+0200
 611.160 +TZNAME:EET
 611.161 +DTSTART:19980101T000000
 611.162 +RDATE:19980101T000000
 611.163 +RDATE:19991031T030000
 611.164 +RDATE:20030101T000000
 611.165 +END:STANDARD
 611.166 +BEGIN:DAYLIGHT
 611.167 +TZOFFSETFROM:+0200
 611.168 +TZOFFSETTO:+0200
 611.169 +TZNAME:CEST
 611.170 +DTSTART:19980329T030000
 611.171 +RDATE:19980329T030000
 611.172 +END:DAYLIGHT
 611.173 +END:VTIMEZONE
 611.174 +END:VCALENDAR
   612.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   612.2 +++ b/src/zoneinfo-global/Europe/Volgograd.ics	Tue Feb 10 18:12:00 2015 +0100
   612.3 @@ -0,0 +1,133 @@
   612.4 +BEGIN:VCALENDAR
   612.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   612.6 +VERSION:2.0
   612.7 +BEGIN:VTIMEZONE
   612.8 +TZID:Europe/Volgograd
   612.9 +TZURL:http://tzurl.org/zoneinfo-global/Europe/Volgograd
  612.10 +X-LIC-LOCATION:Europe/Volgograd
  612.11 +BEGIN:STANDARD
  612.12 +TZOFFSETFROM:+025740
  612.13 +TZOFFSETTO:+0300
  612.14 +TZNAME:TSAT
  612.15 +DTSTART:19200103T000000
  612.16 +RDATE:19200103T000000
  612.17 +END:STANDARD
  612.18 +BEGIN:STANDARD
  612.19 +TZOFFSETFROM:+0300
  612.20 +TZOFFSETTO:+0300
  612.21 +TZNAME:STAT
  612.22 +DTSTART:19250406T000000
  612.23 +RDATE:19250406T000000
  612.24 +END:STANDARD
  612.25 +BEGIN:STANDARD
  612.26 +TZOFFSETFROM:+0300
  612.27 +TZOFFSETTO:+0400
  612.28 +TZNAME:STAT
  612.29 +DTSTART:19300621T000000
  612.30 +RDATE:19300621T000000
  612.31 +END:STANDARD
  612.32 +BEGIN:STANDARD
  612.33 +TZOFFSETFROM:+0400
  612.34 +TZOFFSETTO:+0400
  612.35 +TZNAME:VOLT
  612.36 +DTSTART:19611111T000000
  612.37 +RDATE:19611111T000000
  612.38 +END:STANDARD
  612.39 +BEGIN:DAYLIGHT
  612.40 +TZOFFSETFROM:+0400
  612.41 +TZOFFSETTO:+0500
  612.42 +TZNAME:VOLST
  612.43 +DTSTART:19810401T000000
  612.44 +RDATE:19810401T000000
  612.45 +RDATE:19820401T000000
  612.46 +RDATE:19830401T000000
  612.47 +RDATE:19840401T000000
  612.48 +RDATE:19850331T020000
  612.49 +RDATE:19860330T020000
  612.50 +RDATE:19870329T020000
  612.51 +RDATE:19880327T020000
  612.52 +END:DAYLIGHT
  612.53 +BEGIN:STANDARD
  612.54 +TZOFFSETFROM:+0500
  612.55 +TZOFFSETTO:+0400
  612.56 +TZNAME:VOLT
  612.57 +DTSTART:19811001T000000
  612.58 +RDATE:19811001T000000
  612.59 +RDATE:19821001T000000
  612.60 +RDATE:19831001T000000
  612.61 +RDATE:19840930T030000
  612.62 +RDATE:19850929T030000
  612.63 +RDATE:19860928T030000
  612.64 +RDATE:19870927T030000
  612.65 +RDATE:19880925T030000
  612.66 +END:STANDARD
  612.67 +BEGIN:DAYLIGHT
  612.68 +TZOFFSETFROM:+0400
  612.69 +TZOFFSETTO:+0400
  612.70 +TZNAME:VOLST
  612.71 +DTSTART:19890326T020000
  612.72 +RDATE:19890326T020000
  612.73 +RDATE:19920329T020000
  612.74 +END:DAYLIGHT
  612.75 +BEGIN:STANDARD
  612.76 +TZOFFSETFROM:+0400
  612.77 +TZOFFSETTO:+0300
  612.78 +TZNAME:VOLT
  612.79 +DTSTART:19890924T030000
  612.80 +RDATE:19890924T030000
  612.81 +RDATE:19900930T030000
  612.82 +RDATE:19920926T230000
  612.83 +RDATE:19930926T030000
  612.84 +RDATE:19940925T030000
  612.85 +RDATE:19950924T030000
  612.86 +RDATE:19961027T030000
  612.87 +RDATE:19971026T030000
  612.88 +RDATE:19981025T030000
  612.89 +RDATE:19991031T030000
  612.90 +RDATE:20001029T030000
  612.91 +RDATE:20011028T030000
  612.92 +RDATE:20021027T030000
  612.93 +RDATE:20031026T030000
  612.94 +RDATE:20041031T030000
  612.95 +RDATE:20051030T030000
  612.96 +RDATE:20061029T030000
  612.97 +RDATE:20071028T030000
  612.98 +RDATE:20081026T030000
  612.99 +RDATE:20091025T030000
 612.100 +RDATE:20101031T030000
 612.101 +END:STANDARD
 612.102 +BEGIN:DAYLIGHT
 612.103 +TZOFFSETFROM:+0300
 612.104 +TZOFFSETTO:+0400
 612.105 +TZNAME:VOLST
 612.106 +DTSTART:19900325T020000
 612.107 +RDATE:19900325T020000
 612.108 +RDATE:19930328T020000
 612.109 +RDATE:19940327T020000
 612.110 +RDATE:19950326T020000
 612.111 +RDATE:19960331T020000
 612.112 +RDATE:19970330T020000
 612.113 +RDATE:19980329T020000
 612.114 +RDATE:19990328T020000
 612.115 +RDATE:20000326T020000
 612.116 +RDATE:20010325T020000
 612.117 +RDATE:20020331T020000
 612.118 +RDATE:20030330T020000
 612.119 +RDATE:20040328T020000
 612.120 +RDATE:20050327T020000
 612.121 +RDATE:20060326T020000
 612.122 +RDATE:20070325T020000
 612.123 +RDATE:20080330T020000
 612.124 +RDATE:20090329T020000
 612.125 +RDATE:20100328T020000
 612.126 +END:DAYLIGHT
 612.127 +BEGIN:STANDARD
 612.128 +TZOFFSETFROM:+0300
 612.129 +TZOFFSETTO:+0400
 612.130 +TZNAME:VOLT
 612.131 +DTSTART:19910331T020000
 612.132 +RDATE:19910331T020000
 612.133 +RDATE:20110327T020000
 612.134 +END:STANDARD
 612.135 +END:VTIMEZONE
 612.136 +END:VCALENDAR
   613.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   613.2 +++ b/src/zoneinfo-global/Europe/Warsaw.ics	Tue Feb 10 18:12:00 2015 +0100
   613.3 @@ -0,0 +1,153 @@
   613.4 +BEGIN:VCALENDAR
   613.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   613.6 +VERSION:2.0
   613.7 +BEGIN:VTIMEZONE
   613.8 +TZID:Europe/Warsaw
   613.9 +TZURL:http://tzurl.org/zoneinfo-global/Europe/Warsaw
  613.10 +X-LIC-LOCATION:Europe/Warsaw
  613.11 +BEGIN:DAYLIGHT
  613.12 +TZOFFSETFROM:+0100
  613.13 +TZOFFSETTO:+0200
  613.14 +TZNAME:CEST
  613.15 +DTSTART:19880327T020000
  613.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  613.17 +END:DAYLIGHT
  613.18 +BEGIN:STANDARD
  613.19 +TZOFFSETFROM:+0200
  613.20 +TZOFFSETTO:+0100
  613.21 +TZNAME:CET
  613.22 +DTSTART:19961027T030000
  613.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  613.24 +END:STANDARD
  613.25 +BEGIN:STANDARD
  613.26 +TZOFFSETFROM:+0124
  613.27 +TZOFFSETTO:+0124
  613.28 +TZNAME:WMT
  613.29 +DTSTART:18800101T000000
  613.30 +RDATE:18800101T000000
  613.31 +END:STANDARD
  613.32 +BEGIN:STANDARD
  613.33 +TZOFFSETFROM:+0124
  613.34 +TZOFFSETTO:+0100
  613.35 +TZNAME:CET
  613.36 +DTSTART:19150805T000000
  613.37 +RDATE:19150805T000000
  613.38 +END:STANDARD
  613.39 +BEGIN:DAYLIGHT
  613.40 +TZOFFSETFROM:+0100
  613.41 +TZOFFSETTO:+0200
  613.42 +TZNAME:CEST
  613.43 +DTSTART:19160430T230000
  613.44 +RDATE:19160430T230000
  613.45 +RDATE:19170416T020000
  613.46 +RDATE:19180415T020000
  613.47 +RDATE:19400623T020000
  613.48 +RDATE:19430329T020000
  613.49 +RDATE:19440403T020000
  613.50 +RDATE:19450429T000000
  613.51 +RDATE:19460414T000000
  613.52 +RDATE:19470504T020000
  613.53 +RDATE:19480418T020000
  613.54 +RDATE:19490410T020000
  613.55 +RDATE:19570602T010000
  613.56 +RDATE:19580330T010000
  613.57 +RDATE:19590531T010000
  613.58 +RDATE:19600403T010000
  613.59 +RDATE:19610528T010000
  613.60 +RDATE:19620527T010000
  613.61 +RDATE:19630526T010000
  613.62 +RDATE:19640531T010000
  613.63 +RDATE:19770403T010000
  613.64 +RDATE:19780402T010000
  613.65 +RDATE:19790401T010000
  613.66 +RDATE:19800406T010000
  613.67 +RDATE:19810329T010000
  613.68 +RDATE:19820328T010000
  613.69 +RDATE:19830327T010000
  613.70 +RDATE:19840325T010000
  613.71 +RDATE:19850331T010000
  613.72 +RDATE:19860330T010000
  613.73 +RDATE:19870329T010000
  613.74 +END:DAYLIGHT
  613.75 +BEGIN:STANDARD
  613.76 +TZOFFSETFROM:+0200
  613.77 +TZOFFSETTO:+0100
  613.78 +TZNAME:CET
  613.79 +DTSTART:19161001T010000
  613.80 +RDATE:19161001T010000
  613.81 +RDATE:19170917T030000
  613.82 +RDATE:19220601T000000
  613.83 +RDATE:19421102T030000
  613.84 +RDATE:19431004T030000
  613.85 +RDATE:19441004T020000
  613.86 +RDATE:19451101T000000
  613.87 +RDATE:19461007T030000
  613.88 +RDATE:19471005T030000
  613.89 +RDATE:19481003T030000
  613.90 +RDATE:19491002T030000
  613.91 +RDATE:19570929T020000
  613.92 +RDATE:19580928T020000
  613.93 +RDATE:19591004T020000
  613.94 +RDATE:19601002T020000
  613.95 +RDATE:19611001T020000
  613.96 +RDATE:19620930T020000
  613.97 +RDATE:19630929T020000
  613.98 +RDATE:19640927T020000
  613.99 +RDATE:19770925T020000
 613.100 +RDATE:19781001T020000
 613.101 +RDATE:19790930T020000
 613.102 +RDATE:19800928T020000
 613.103 +RDATE:19810927T020000
 613.104 +RDATE:19820926T020000
 613.105 +RDATE:19830925T020000
 613.106 +RDATE:19840930T020000
 613.107 +RDATE:19850929T020000
 613.108 +RDATE:19860928T020000
 613.109 +RDATE:19870927T020000
 613.110 +RDATE:19880925T030000
 613.111 +RDATE:19890924T030000
 613.112 +RDATE:19900930T030000
 613.113 +RDATE:19910929T030000
 613.114 +RDATE:19920927T030000
 613.115 +RDATE:19930926T030000
 613.116 +RDATE:19940925T030000
 613.117 +RDATE:19950924T030000
 613.118 +END:STANDARD
 613.119 +BEGIN:STANDARD
 613.120 +TZOFFSETFROM:+0200
 613.121 +TZOFFSETTO:+0200
 613.122 +TZNAME:EET
 613.123 +DTSTART:19180916T030000
 613.124 +RDATE:19180916T030000
 613.125 +END:STANDARD
 613.126 +BEGIN:DAYLIGHT
 613.127 +TZOFFSETFROM:+0200
 613.128 +TZOFFSETTO:+0300
 613.129 +TZNAME:EEST
 613.130 +DTSTART:19190415T020000
 613.131 +RDATE:19190415T020000
 613.132 +END:DAYLIGHT
 613.133 +BEGIN:STANDARD
 613.134 +TZOFFSETFROM:+0300
 613.135 +TZOFFSETTO:+0200
 613.136 +TZNAME:EET
 613.137 +DTSTART:19190916T030000
 613.138 +RDATE:19190916T030000
 613.139 +END:STANDARD
 613.140 +BEGIN:DAYLIGHT
 613.141 +TZOFFSETFROM:+0200
 613.142 +TZOFFSETTO:+0200
 613.143 +TZNAME:CEST
 613.144 +DTSTART:19441001T000000
 613.145 +RDATE:19441001T000000
 613.146 +END:DAYLIGHT
 613.147 +BEGIN:STANDARD
 613.148 +TZOFFSETFROM:+0100
 613.149 +TZOFFSETTO:+0100
 613.150 +TZNAME:CET
 613.151 +DTSTART:19770101T000000
 613.152 +RDATE:19770101T000000
 613.153 +RDATE:19880101T000000
 613.154 +END:STANDARD
 613.155 +END:VTIMEZONE
 613.156 +END:VCALENDAR
   614.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   614.2 +++ b/src/zoneinfo-global/Europe/Zagreb.ics	Tue Feb 10 18:12:00 2015 +0100
   614.3 @@ -0,0 +1,71 @@
   614.4 +BEGIN:VCALENDAR
   614.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   614.6 +VERSION:2.0
   614.7 +BEGIN:VTIMEZONE
   614.8 +TZID:Europe/Zagreb
   614.9 +TZURL:http://tzurl.org/zoneinfo-global/Europe/Zagreb
  614.10 +X-LIC-LOCATION:Europe/Zagreb
  614.11 +BEGIN:DAYLIGHT
  614.12 +TZOFFSETFROM:+0100
  614.13 +TZOFFSETTO:+0200
  614.14 +TZNAME:CEST
  614.15 +DTSTART:19830327T020000
  614.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  614.17 +END:DAYLIGHT
  614.18 +BEGIN:STANDARD
  614.19 +TZOFFSETFROM:+0200
  614.20 +TZOFFSETTO:+0100
  614.21 +TZNAME:CET
  614.22 +DTSTART:19961027T030000
  614.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  614.24 +END:STANDARD
  614.25 +BEGIN:STANDARD
  614.26 +TZOFFSETFROM:+0122
  614.27 +TZOFFSETTO:+0100
  614.28 +TZNAME:CET
  614.29 +DTSTART:18840101T000000
  614.30 +RDATE:18840101T000000
  614.31 +END:STANDARD
  614.32 +BEGIN:DAYLIGHT
  614.33 +TZOFFSETFROM:+0100
  614.34 +TZOFFSETTO:+0200
  614.35 +TZNAME:CEST
  614.36 +DTSTART:19410418T230000
  614.37 +RDATE:19410418T230000
  614.38 +RDATE:19430329T020000
  614.39 +RDATE:19440403T020000
  614.40 +RDATE:19450508T020000
  614.41 +END:DAYLIGHT
  614.42 +BEGIN:STANDARD
  614.43 +TZOFFSETFROM:+0200
  614.44 +TZOFFSETTO:+0100
  614.45 +TZNAME:CET
  614.46 +DTSTART:19421102T030000
  614.47 +RDATE:19421102T030000
  614.48 +RDATE:19431004T030000
  614.49 +RDATE:19441002T030000
  614.50 +RDATE:19450916T030000
  614.51 +RDATE:19830925T030000
  614.52 +RDATE:19840930T030000
  614.53 +RDATE:19850929T030000
  614.54 +RDATE:19860928T030000
  614.55 +RDATE:19870927T030000
  614.56 +RDATE:19880925T030000
  614.57 +RDATE:19890924T030000
  614.58 +RDATE:19900930T030000
  614.59 +RDATE:19910929T030000
  614.60 +RDATE:19920927T030000
  614.61 +RDATE:19930926T030000
  614.62 +RDATE:19940925T030000
  614.63 +RDATE:19950924T030000
  614.64 +END:STANDARD
  614.65 +BEGIN:STANDARD
  614.66 +TZOFFSETFROM:+0100
  614.67 +TZOFFSETTO:+0100
  614.68 +TZNAME:CET
  614.69 +DTSTART:19450101T000000
  614.70 +RDATE:19450101T000000
  614.71 +RDATE:19821127T000000
  614.72 +END:STANDARD
  614.73 +END:VTIMEZONE
  614.74 +END:VCALENDAR
   615.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   615.2 +++ b/src/zoneinfo-global/Europe/Zaporozhye.ics	Tue Feb 10 18:12:00 2015 +0100
   615.3 @@ -0,0 +1,139 @@
   615.4 +BEGIN:VCALENDAR
   615.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   615.6 +VERSION:2.0
   615.7 +BEGIN:VTIMEZONE
   615.8 +TZID:Europe/Zaporozhye
   615.9 +TZURL:http://tzurl.org/zoneinfo-global/Europe/Zaporozhye
  615.10 +X-LIC-LOCATION:Europe/Zaporozhye
  615.11 +BEGIN:DAYLIGHT
  615.12 +TZOFFSETFROM:+0200
  615.13 +TZOFFSETTO:+0300
  615.14 +TZNAME:EEST
  615.15 +DTSTART:19950326T030000
  615.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  615.17 +END:DAYLIGHT
  615.18 +BEGIN:STANDARD
  615.19 +TZOFFSETFROM:+0300
  615.20 +TZOFFSETTO:+0200
  615.21 +TZNAME:EET
  615.22 +DTSTART:19961027T040000
  615.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  615.24 +END:STANDARD
  615.25 +BEGIN:STANDARD
  615.26 +TZOFFSETFROM:+022040
  615.27 +TZOFFSETTO:+0220
  615.28 +TZNAME:CUT
  615.29 +DTSTART:18800101T000000
  615.30 +RDATE:18800101T000000
  615.31 +END:STANDARD
  615.32 +BEGIN:STANDARD
  615.33 +TZOFFSETFROM:+0220
  615.34 +TZOFFSETTO:+0200
  615.35 +TZNAME:EET
  615.36 +DTSTART:19240502T000000
  615.37 +RDATE:19240502T000000
  615.38 +END:STANDARD
  615.39 +BEGIN:STANDARD
  615.40 +TZOFFSETFROM:+0200
  615.41 +TZOFFSETTO:+0300
  615.42 +TZNAME:MSK
  615.43 +DTSTART:19300621T000000
  615.44 +RDATE:19300621T000000
  615.45 +END:STANDARD
  615.46 +BEGIN:DAYLIGHT
  615.47 +TZOFFSETFROM:+0300
  615.48 +TZOFFSETTO:+0200
  615.49 +TZNAME:CEST
  615.50 +DTSTART:19410825T000000
  615.51 +RDATE:19410825T000000
  615.52 +END:DAYLIGHT
  615.53 +BEGIN:STANDARD
  615.54 +TZOFFSETFROM:+0200
  615.55 +TZOFFSETTO:+0100
  615.56 +TZNAME:CET
  615.57 +DTSTART:19421102T030000
  615.58 +RDATE:19421102T030000
  615.59 +RDATE:19431004T030000
  615.60 +END:STANDARD
  615.61 +BEGIN:DAYLIGHT
  615.62 +TZOFFSETFROM:+0100
  615.63 +TZOFFSETTO:+0200
  615.64 +TZNAME:CEST
  615.65 +DTSTART:19430329T020000
  615.66 +RDATE:19430329T020000
  615.67 +END:DAYLIGHT
  615.68 +BEGIN:STANDARD
  615.69 +TZOFFSETFROM:+0100
  615.70 +TZOFFSETTO:+0300
  615.71 +TZNAME:MSK
  615.72 +DTSTART:19431025T000000
  615.73 +RDATE:19431025T000000
  615.74 +END:STANDARD
  615.75 +BEGIN:DAYLIGHT
  615.76 +TZOFFSETFROM:+0300
  615.77 +TZOFFSETTO:+0400
  615.78 +TZNAME:MSD
  615.79 +DTSTART:19810401T000000
  615.80 +RDATE:19810401T000000
  615.81 +RDATE:19820401T000000
  615.82 +RDATE:19830401T000000
  615.83 +RDATE:19840401T000000
  615.84 +RDATE:19850331T020000
  615.85 +RDATE:19860330T020000
  615.86 +RDATE:19870329T020000
  615.87 +RDATE:19880327T020000
  615.88 +RDATE:19890326T020000
  615.89 +RDATE:19900325T020000
  615.90 +END:DAYLIGHT
  615.91 +BEGIN:STANDARD
  615.92 +TZOFFSETFROM:+0400
  615.93 +TZOFFSETTO:+0300
  615.94 +TZNAME:MSK
  615.95 +DTSTART:19811001T000000
  615.96 +RDATE:19811001T000000
  615.97 +RDATE:19821001T000000
  615.98 +RDATE:19831001T000000
  615.99 +RDATE:19840930T030000
 615.100 +RDATE:19850929T030000
 615.101 +RDATE:19860928T030000
 615.102 +RDATE:19870927T030000
 615.103 +RDATE:19880925T030000
 615.104 +RDATE:19890924T030000
 615.105 +RDATE:19900930T030000
 615.106 +END:STANDARD
 615.107 +BEGIN:DAYLIGHT
 615.108 +TZOFFSETFROM:+0300
 615.109 +TZOFFSETTO:+0300
 615.110 +TZNAME:EEST
 615.111 +DTSTART:19910331T020000
 615.112 +RDATE:19910331T020000
 615.113 +END:DAYLIGHT
 615.114 +BEGIN:STANDARD
 615.115 +TZOFFSETFROM:+0300
 615.116 +TZOFFSETTO:+0200
 615.117 +TZNAME:EET
 615.118 +DTSTART:19910929T000000
 615.119 +RDATE:19910929T000000
 615.120 +RDATE:19920927T000000
 615.121 +RDATE:19930926T000000
 615.122 +RDATE:19940925T000000
 615.123 +RDATE:19950924T040000
 615.124 +END:STANDARD
 615.125 +BEGIN:DAYLIGHT
 615.126 +TZOFFSETFROM:+0200
 615.127 +TZOFFSETTO:+0300
 615.128 +TZNAME:EEST
 615.129 +DTSTART:19920329T000000
 615.130 +RDATE:19920329T000000
 615.131 +RDATE:19930328T000000
 615.132 +RDATE:19940327T000000
 615.133 +END:DAYLIGHT
 615.134 +BEGIN:STANDARD
 615.135 +TZOFFSETFROM:+0200
 615.136 +TZOFFSETTO:+0200
 615.137 +TZNAME:EET
 615.138 +DTSTART:19950101T000000
 615.139 +RDATE:19950101T000000
 615.140 +END:STANDARD
 615.141 +END:VTIMEZONE
 615.142 +END:VCALENDAR
   616.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   616.2 +++ b/src/zoneinfo-global/Europe/Zurich.ics	Tue Feb 10 18:12:00 2015 +0100
   616.3 @@ -0,0 +1,75 @@
   616.4 +BEGIN:VCALENDAR
   616.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   616.6 +VERSION:2.0
   616.7 +BEGIN:VTIMEZONE
   616.8 +TZID:Europe/Zurich
   616.9 +TZURL:http://tzurl.org/zoneinfo-global/Europe/Zurich
  616.10 +X-LIC-LOCATION:Europe/Zurich
  616.11 +BEGIN:DAYLIGHT
  616.12 +TZOFFSETFROM:+0100
  616.13 +TZOFFSETTO:+0200
  616.14 +TZNAME:CEST
  616.15 +DTSTART:19810329T020000
  616.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  616.17 +END:DAYLIGHT
  616.18 +BEGIN:STANDARD
  616.19 +TZOFFSETFROM:+0200
  616.20 +TZOFFSETTO:+0100
  616.21 +TZNAME:CET
  616.22 +DTSTART:19961027T030000
  616.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  616.24 +END:STANDARD
  616.25 +BEGIN:STANDARD
  616.26 +TZOFFSETFROM:+003408
  616.27 +TZOFFSETTO:+002944
  616.28 +TZNAME:BMT
  616.29 +DTSTART:18480912T000000
  616.30 +RDATE:18480912T000000
  616.31 +END:STANDARD
  616.32 +BEGIN:STANDARD
  616.33 +TZOFFSETFROM:+002944
  616.34 +TZOFFSETTO:+0100
  616.35 +TZNAME:CET
  616.36 +DTSTART:18940601T000000
  616.37 +RDATE:18940601T000000
  616.38 +END:STANDARD
  616.39 +BEGIN:DAYLIGHT
  616.40 +TZOFFSETFROM:+0100
  616.41 +TZOFFSETTO:+0200
  616.42 +TZNAME:CEST
  616.43 +DTSTART:19410505T010000
  616.44 +RDATE:19410505T010000
  616.45 +RDATE:19420504T010000
  616.46 +END:DAYLIGHT
  616.47 +BEGIN:STANDARD
  616.48 +TZOFFSETFROM:+0200
  616.49 +TZOFFSETTO:+0100
  616.50 +TZNAME:CET
  616.51 +DTSTART:19411006T020000
  616.52 +RDATE:19411006T020000
  616.53 +RDATE:19421005T020000
  616.54 +RDATE:19810927T030000
  616.55 +RDATE:19820926T030000
  616.56 +RDATE:19830925T030000
  616.57 +RDATE:19840930T030000
  616.58 +RDATE:19850929T030000
  616.59 +RDATE:19860928T030000
  616.60 +RDATE:19870927T030000
  616.61 +RDATE:19880925T030000
  616.62 +RDATE:19890924T030000
  616.63 +RDATE:19900930T030000
  616.64 +RDATE:19910929T030000
  616.65 +RDATE:19920927T030000
  616.66 +RDATE:19930926T030000
  616.67 +RDATE:19940925T030000
  616.68 +RDATE:19950924T030000
  616.69 +END:STANDARD
  616.70 +BEGIN:STANDARD
  616.71 +TZOFFSETFROM:+0100
  616.72 +TZOFFSETTO:+0100
  616.73 +TZNAME:CET
  616.74 +DTSTART:19810101T000000
  616.75 +RDATE:19810101T000000
  616.76 +END:STANDARD
  616.77 +END:VTIMEZONE
  616.78 +END:VCALENDAR
   617.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   617.2 +++ b/src/zoneinfo-global/Indian/Antananarivo.ics	Tue Feb 10 18:12:00 2015 +0100
   617.3 @@ -0,0 +1,30 @@
   617.4 +BEGIN:VCALENDAR
   617.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   617.6 +VERSION:2.0
   617.7 +BEGIN:VTIMEZONE
   617.8 +TZID:Indian/Antananarivo
   617.9 +TZURL:http://tzurl.org/zoneinfo-global/Indian/Antananarivo
  617.10 +X-LIC-LOCATION:Indian/Antananarivo
  617.11 +BEGIN:STANDARD
  617.12 +TZOFFSETFROM:+031004
  617.13 +TZOFFSETTO:+0300
  617.14 +TZNAME:EAT
  617.15 +DTSTART:19110701T000000
  617.16 +RDATE:19110701T000000
  617.17 +END:STANDARD
  617.18 +BEGIN:DAYLIGHT
  617.19 +TZOFFSETFROM:+0300
  617.20 +TZOFFSETTO:+0400
  617.21 +TZNAME:EAST
  617.22 +DTSTART:19540227T230000
  617.23 +RDATE:19540227T230000
  617.24 +END:DAYLIGHT
  617.25 +BEGIN:STANDARD
  617.26 +TZOFFSETFROM:+0400
  617.27 +TZOFFSETTO:+0300
  617.28 +TZNAME:EAT
  617.29 +DTSTART:19540530T000000
  617.30 +RDATE:19540530T000000
  617.31 +END:STANDARD
  617.32 +END:VTIMEZONE
  617.33 +END:VCALENDAR
   618.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   618.2 +++ b/src/zoneinfo-global/Indian/Chagos.ics	Tue Feb 10 18:12:00 2015 +0100
   618.3 @@ -0,0 +1,23 @@
   618.4 +BEGIN:VCALENDAR
   618.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   618.6 +VERSION:2.0
   618.7 +BEGIN:VTIMEZONE
   618.8 +TZID:Indian/Chagos
   618.9 +TZURL:http://tzurl.org/zoneinfo-global/Indian/Chagos
  618.10 +X-LIC-LOCATION:Indian/Chagos
  618.11 +BEGIN:STANDARD
  618.12 +TZOFFSETFROM:+044940
  618.13 +TZOFFSETTO:+0500
  618.14 +TZNAME:IOT
  618.15 +DTSTART:19070101T000000
  618.16 +RDATE:19070101T000000
  618.17 +END:STANDARD
  618.18 +BEGIN:STANDARD
  618.19 +TZOFFSETFROM:+0500
  618.20 +TZOFFSETTO:+0600
  618.21 +TZNAME:IOT
  618.22 +DTSTART:19960101T000000
  618.23 +RDATE:19960101T000000
  618.24 +END:STANDARD
  618.25 +END:VTIMEZONE
  618.26 +END:VCALENDAR
   619.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   619.2 +++ b/src/zoneinfo-global/Indian/Christmas.ics	Tue Feb 10 18:12:00 2015 +0100
   619.3 @@ -0,0 +1,16 @@
   619.4 +BEGIN:VCALENDAR
   619.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   619.6 +VERSION:2.0
   619.7 +BEGIN:VTIMEZONE
   619.8 +TZID:Indian/Christmas
   619.9 +TZURL:http://tzurl.org/zoneinfo-global/Indian/Christmas
  619.10 +X-LIC-LOCATION:Indian/Christmas
  619.11 +BEGIN:STANDARD
  619.12 +TZOFFSETFROM:+070252
  619.13 +TZOFFSETTO:+0700
  619.14 +TZNAME:CXT
  619.15 +DTSTART:18950201T000000
  619.16 +RDATE:18950201T000000
  619.17 +END:STANDARD
  619.18 +END:VTIMEZONE
  619.19 +END:VCALENDAR
   620.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   620.2 +++ b/src/zoneinfo-global/Indian/Cocos.ics	Tue Feb 10 18:12:00 2015 +0100
   620.3 @@ -0,0 +1,16 @@
   620.4 +BEGIN:VCALENDAR
   620.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   620.6 +VERSION:2.0
   620.7 +BEGIN:VTIMEZONE
   620.8 +TZID:Indian/Cocos
   620.9 +TZURL:http://tzurl.org/zoneinfo-global/Indian/Cocos
  620.10 +X-LIC-LOCATION:Indian/Cocos
  620.11 +BEGIN:STANDARD
  620.12 +TZOFFSETFROM:+062740
  620.13 +TZOFFSETTO:+0630
  620.14 +TZNAME:CCT
  620.15 +DTSTART:19000101T000000
  620.16 +RDATE:19000101T000000
  620.17 +END:STANDARD
  620.18 +END:VTIMEZONE
  620.19 +END:VCALENDAR
   621.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   621.2 +++ b/src/zoneinfo-global/Indian/Comoro.ics	Tue Feb 10 18:12:00 2015 +0100
   621.3 @@ -0,0 +1,16 @@
   621.4 +BEGIN:VCALENDAR
   621.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   621.6 +VERSION:2.0
   621.7 +BEGIN:VTIMEZONE
   621.8 +TZID:Indian/Comoro
   621.9 +TZURL:http://tzurl.org/zoneinfo-global/Indian/Comoro
  621.10 +X-LIC-LOCATION:Indian/Comoro
  621.11 +BEGIN:STANDARD
  621.12 +TZOFFSETFROM:+025304
  621.13 +TZOFFSETTO:+0300
  621.14 +TZNAME:EAT
  621.15 +DTSTART:19110701T000000
  621.16 +RDATE:19110701T000000
  621.17 +END:STANDARD
  621.18 +END:VTIMEZONE
  621.19 +END:VCALENDAR
   622.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   622.2 +++ b/src/zoneinfo-global/Indian/Kerguelen.ics	Tue Feb 10 18:12:00 2015 +0100
   622.3 @@ -0,0 +1,16 @@
   622.4 +BEGIN:VCALENDAR
   622.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   622.6 +VERSION:2.0
   622.7 +BEGIN:VTIMEZONE
   622.8 +TZID:Indian/Kerguelen
   622.9 +TZURL:http://tzurl.org/zoneinfo-global/Indian/Kerguelen
  622.10 +X-LIC-LOCATION:Indian/Kerguelen
  622.11 +BEGIN:STANDARD
  622.12 +TZOFFSETFROM:+0000
  622.13 +TZOFFSETTO:+0500
  622.14 +TZNAME:TFT
  622.15 +DTSTART:19500101T000000
  622.16 +RDATE:19500101T000000
  622.17 +END:STANDARD
  622.18 +END:VTIMEZONE
  622.19 +END:VCALENDAR
   623.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   623.2 +++ b/src/zoneinfo-global/Indian/Mahe.ics	Tue Feb 10 18:12:00 2015 +0100
   623.3 @@ -0,0 +1,16 @@
   623.4 +BEGIN:VCALENDAR
   623.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   623.6 +VERSION:2.0
   623.7 +BEGIN:VTIMEZONE
   623.8 +TZID:Indian/Mahe
   623.9 +TZURL:http://tzurl.org/zoneinfo-global/Indian/Mahe
  623.10 +X-LIC-LOCATION:Indian/Mahe
  623.11 +BEGIN:STANDARD
  623.12 +TZOFFSETFROM:+034148
  623.13 +TZOFFSETTO:+0400
  623.14 +TZNAME:SCT
  623.15 +DTSTART:19060601T000000
  623.16 +RDATE:19060601T000000
  623.17 +END:STANDARD
  623.18 +END:VTIMEZONE
  623.19 +END:VCALENDAR
   624.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   624.2 +++ b/src/zoneinfo-global/Indian/Maldives.ics	Tue Feb 10 18:12:00 2015 +0100
   624.3 @@ -0,0 +1,23 @@
   624.4 +BEGIN:VCALENDAR
   624.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   624.6 +VERSION:2.0
   624.7 +BEGIN:VTIMEZONE
   624.8 +TZID:Indian/Maldives
   624.9 +TZURL:http://tzurl.org/zoneinfo-global/Indian/Maldives
  624.10 +X-LIC-LOCATION:Indian/Maldives
  624.11 +BEGIN:STANDARD
  624.12 +TZOFFSETFROM:+0454
  624.13 +TZOFFSETTO:+0454
  624.14 +TZNAME:MMT
  624.15 +DTSTART:18800101T000000
  624.16 +RDATE:18800101T000000
  624.17 +END:STANDARD
  624.18 +BEGIN:STANDARD
  624.19 +TZOFFSETFROM:+0454
  624.20 +TZOFFSETTO:+0500
  624.21 +TZNAME:MVT
  624.22 +DTSTART:19600101T000000
  624.23 +RDATE:19600101T000000
  624.24 +END:STANDARD
  624.25 +END:VTIMEZONE
  624.26 +END:VCALENDAR
   625.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   625.2 +++ b/src/zoneinfo-global/Indian/Mauritius.ics	Tue Feb 10 18:12:00 2015 +0100
   625.3 @@ -0,0 +1,32 @@
   625.4 +BEGIN:VCALENDAR
   625.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   625.6 +VERSION:2.0
   625.7 +BEGIN:VTIMEZONE
   625.8 +TZID:Indian/Mauritius
   625.9 +TZURL:http://tzurl.org/zoneinfo-global/Indian/Mauritius
  625.10 +X-LIC-LOCATION:Indian/Mauritius
  625.11 +BEGIN:STANDARD
  625.12 +TZOFFSETFROM:+0350
  625.13 +TZOFFSETTO:+0400
  625.14 +TZNAME:MUT
  625.15 +DTSTART:19070101T000000
  625.16 +RDATE:19070101T000000
  625.17 +END:STANDARD
  625.18 +BEGIN:DAYLIGHT
  625.19 +TZOFFSETFROM:+0400
  625.20 +TZOFFSETTO:+0500
  625.21 +TZNAME:MUST
  625.22 +DTSTART:19821010T000000
  625.23 +RDATE:19821010T000000
  625.24 +RDATE:20081026T020000
  625.25 +END:DAYLIGHT
  625.26 +BEGIN:STANDARD
  625.27 +TZOFFSETFROM:+0500
  625.28 +TZOFFSETTO:+0400
  625.29 +TZNAME:MUT
  625.30 +DTSTART:19830321T000000
  625.31 +RDATE:19830321T000000
  625.32 +RDATE:20090329T020000
  625.33 +END:STANDARD
  625.34 +END:VTIMEZONE
  625.35 +END:VCALENDAR
   626.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   626.2 +++ b/src/zoneinfo-global/Indian/Mayotte.ics	Tue Feb 10 18:12:00 2015 +0100
   626.3 @@ -0,0 +1,16 @@
   626.4 +BEGIN:VCALENDAR
   626.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   626.6 +VERSION:2.0
   626.7 +BEGIN:VTIMEZONE
   626.8 +TZID:Indian/Mayotte
   626.9 +TZURL:http://tzurl.org/zoneinfo-global/Indian/Mayotte
  626.10 +X-LIC-LOCATION:Indian/Mayotte
  626.11 +BEGIN:STANDARD
  626.12 +TZOFFSETFROM:+030056
  626.13 +TZOFFSETTO:+0300
  626.14 +TZNAME:EAT
  626.15 +DTSTART:19110701T000000
  626.16 +RDATE:19110701T000000
  626.17 +END:STANDARD
  626.18 +END:VTIMEZONE
  626.19 +END:VCALENDAR
   627.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   627.2 +++ b/src/zoneinfo-global/Indian/Reunion.ics	Tue Feb 10 18:12:00 2015 +0100
   627.3 @@ -0,0 +1,16 @@
   627.4 +BEGIN:VCALENDAR
   627.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   627.6 +VERSION:2.0
   627.7 +BEGIN:VTIMEZONE
   627.8 +TZID:Indian/Reunion
   627.9 +TZURL:http://tzurl.org/zoneinfo-global/Indian/Reunion
  627.10 +X-LIC-LOCATION:Indian/Reunion
  627.11 +BEGIN:STANDARD
  627.12 +TZOFFSETFROM:+034152
  627.13 +TZOFFSETTO:+0400
  627.14 +TZNAME:RET
  627.15 +DTSTART:19110601T000000
  627.16 +RDATE:19110601T000000
  627.17 +END:STANDARD
  627.18 +END:VTIMEZONE
  627.19 +END:VCALENDAR
   628.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   628.2 +++ b/src/zoneinfo-global/Pacific/Apia.ics	Tue Feb 10 18:12:00 2015 +0100
   628.3 @@ -0,0 +1,59 @@
   628.4 +BEGIN:VCALENDAR
   628.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   628.6 +VERSION:2.0
   628.7 +BEGIN:VTIMEZONE
   628.8 +TZID:Pacific/Apia
   628.9 +TZURL:http://tzurl.org/zoneinfo-global/Pacific/Apia
  628.10 +X-LIC-LOCATION:Pacific/Apia
  628.11 +BEGIN:STANDARD
  628.12 +TZOFFSETFROM:+123304
  628.13 +TZOFFSETTO:-112656
  628.14 +TZNAME:LMT
  628.15 +DTSTART:18790705T000000
  628.16 +RDATE:18790705T000000
  628.17 +END:STANDARD
  628.18 +BEGIN:STANDARD
  628.19 +TZOFFSETFROM:-112656
  628.20 +TZOFFSETTO:-1130
  628.21 +TZNAME:SAMT
  628.22 +DTSTART:19110101T000000
  628.23 +RDATE:19110101T000000
  628.24 +END:STANDARD
  628.25 +BEGIN:STANDARD
  628.26 +TZOFFSETFROM:-1130
  628.27 +TZOFFSETTO:-1100
  628.28 +TZNAME:WST
  628.29 +DTSTART:19500101T000000
  628.30 +RDATE:19500101T000000
  628.31 +END:STANDARD
  628.32 +BEGIN:DAYLIGHT
  628.33 +TZOFFSETFROM:-1100
  628.34 +TZOFFSETTO:-1000
  628.35 +TZNAME:WSDT
  628.36 +DTSTART:20100926T000000
  628.37 +RDATE:20100926T000000
  628.38 +RDATE:20110924T030000
  628.39 +END:DAYLIGHT
  628.40 +BEGIN:STANDARD
  628.41 +TZOFFSETFROM:-1000
  628.42 +TZOFFSETTO:-1100
  628.43 +TZNAME:WST
  628.44 +DTSTART:20110402T040000
  628.45 +RDATE:20110402T040000
  628.46 +END:STANDARD
  628.47 +BEGIN:DAYLIGHT
  628.48 +TZOFFSETFROM:-1000
  628.49 +TZOFFSETTO:+1400
  628.50 +TZNAME:WSDT
  628.51 +DTSTART:20111230T000000
  628.52 +RDATE:20111230T000000
  628.53 +END:DAYLIGHT
  628.54 +BEGIN:STANDARD
  628.55 +TZOFFSETFROM:+1400
  628.56 +TZOFFSETTO:+1300
  628.57 +TZNAME:WST
  628.58 +DTSTART:20120401T040000
  628.59 +RDATE:20120401T040000
  628.60 +END:STANDARD
  628.61 +END:VTIMEZONE
  628.62 +END:VCALENDAR
   629.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   629.2 +++ b/src/zoneinfo-global/Pacific/Auckland.ics	Tue Feb 10 18:12:00 2015 +0100
   629.3 @@ -0,0 +1,166 @@
   629.4 +BEGIN:VCALENDAR
   629.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   629.6 +VERSION:2.0
   629.7 +BEGIN:VTIMEZONE
   629.8 +TZID:Pacific/Auckland
   629.9 +TZURL:http://tzurl.org/zoneinfo-global/Pacific/Auckland
  629.10 +X-LIC-LOCATION:Pacific/Auckland
  629.11 +BEGIN:DAYLIGHT
  629.12 +TZOFFSETFROM:+1200
  629.13 +TZOFFSETTO:+1300
  629.14 +TZNAME:NZDT
  629.15 +DTSTART:20070930T020000
  629.16 +RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU
  629.17 +END:DAYLIGHT
  629.18 +BEGIN:STANDARD
  629.19 +TZOFFSETFROM:+1300
  629.20 +TZOFFSETTO:+1200
  629.21 +TZNAME:NZST
  629.22 +DTSTART:20080406T030000
  629.23 +RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU
  629.24 +END:STANDARD
  629.25 +BEGIN:STANDARD
  629.26 +TZOFFSETFROM:+113904
  629.27 +TZOFFSETTO:+1130
  629.28 +TZNAME:NZMT
  629.29 +DTSTART:18681102T000000
  629.30 +RDATE:18681102T000000
  629.31 +END:STANDARD
  629.32 +BEGIN:DAYLIGHT
  629.33 +TZOFFSETFROM:+1130
  629.34 +TZOFFSETTO:+1230
  629.35 +TZNAME:NZST
  629.36 +DTSTART:19271106T020000
  629.37 +RDATE:19271106T020000
  629.38 +END:DAYLIGHT
  629.39 +BEGIN:STANDARD
  629.40 +TZOFFSETFROM:+1230
  629.41 +TZOFFSETTO:+1130
  629.42 +TZNAME:NZMT
  629.43 +DTSTART:19280304T020000
  629.44 +RDATE:19280304T020000
  629.45 +END:STANDARD
  629.46 +BEGIN:DAYLIGHT
  629.47 +TZOFFSETFROM:+1130
  629.48 +TZOFFSETTO:+1200
  629.49 +TZNAME:NZST
  629.50 +DTSTART:19281014T020000
  629.51 +RDATE:19281014T020000
  629.52 +RDATE:19291013T020000
  629.53 +RDATE:19301012T020000
  629.54 +RDATE:19311011T020000
  629.55 +RDATE:19321009T020000
  629.56 +RDATE:19331008T020000
  629.57 +RDATE:19340930T020000
  629.58 +RDATE:19350929T020000
  629.59 +RDATE:19360927T020000
  629.60 +RDATE:19370926T020000
  629.61 +RDATE:19380925T020000
  629.62 +RDATE:19390924T020000
  629.63 +RDATE:19400929T020000
  629.64 +END:DAYLIGHT
  629.65 +BEGIN:STANDARD
  629.66 +TZOFFSETFROM:+1200
  629.67 +TZOFFSETTO:+1130
  629.68 +TZNAME:NZMT
  629.69 +DTSTART:19290317T020000
  629.70 +RDATE:19290317T020000
  629.71 +RDATE:19300316T020000
  629.72 +RDATE:19310315T020000
  629.73 +RDATE:19320320T020000
  629.74 +RDATE:19330319T020000
  629.75 +RDATE:19340429T020000
  629.76 +RDATE:19350428T020000
  629.77 +RDATE:19360426T020000
  629.78 +RDATE:19370425T020000
  629.79 +RDATE:19380424T020000
  629.80 +RDATE:19390430T020000
  629.81 +RDATE:19400428T020000
  629.82 +END:STANDARD
  629.83 +BEGIN:STANDARD
  629.84 +TZOFFSETFROM:+1200
  629.85 +TZOFFSETTO:+1200
  629.86 +TZNAME:NZST
  629.87 +DTSTART:19460101T000000
  629.88 +RDATE:19460101T000000
  629.89 +END:STANDARD
  629.90 +BEGIN:DAYLIGHT
  629.91 +TZOFFSETFROM:+1200
  629.92 +TZOFFSETTO:+1300
  629.93 +TZNAME:NZDT
  629.94 +DTSTART:19741103T020000
  629.95 +RDATE:19741103T020000
  629.96 +RDATE:19751026T020000
  629.97 +RDATE:19761031T020000
  629.98 +RDATE:19771030T020000
  629.99 +RDATE:19781029T020000
 629.100 +RDATE:19791028T020000
 629.101 +RDATE:19801026T020000
 629.102 +RDATE:19811025T020000
 629.103 +RDATE:19821031T020000
 629.104 +RDATE:19831030T020000
 629.105 +RDATE:19841028T020000
 629.106 +RDATE:19851027T020000
 629.107 +RDATE:19861026T020000
 629.108 +RDATE:19871025T020000
 629.109 +RDATE:19881030T020000
 629.110 +RDATE:19891008T020000
 629.111 +RDATE:19901007T020000
 629.112 +RDATE:19911006T020000
 629.113 +RDATE:19921004T020000
 629.114 +RDATE:19931003T020000
 629.115 +RDATE:19941002T020000
 629.116 +RDATE:19951001T020000
 629.117 +RDATE:19961006T020000
 629.118 +RDATE:19971005T020000
 629.119 +RDATE:19981004T020000
 629.120 +RDATE:19991003T020000
 629.121 +RDATE:20001001T020000
 629.122 +RDATE:20011007T020000
 629.123 +RDATE:20021006T020000
 629.124 +RDATE:20031005T020000
 629.125 +RDATE:20041003T020000
 629.126 +RDATE:20051002T020000
 629.127 +RDATE:20061001T020000
 629.128 +END:DAYLIGHT
 629.129 +BEGIN:STANDARD
 629.130 +TZOFFSETFROM:+1300
 629.131 +TZOFFSETTO:+1200
 629.132 +TZNAME:NZST
 629.133 +DTSTART:19750223T030000
 629.134 +RDATE:19750223T030000
 629.135 +RDATE:19760307T030000
 629.136 +RDATE:19770306T030000
 629.137 +RDATE:19780305T030000
 629.138 +RDATE:19790304T030000
 629.139 +RDATE:19800302T030000
 629.140 +RDATE:19810301T030000
 629.141 +RDATE:19820307T030000
 629.142 +RDATE:19830306T030000
 629.143 +RDATE:19840304T030000
 629.144 +RDATE:19850303T030000
 629.145 +RDATE:19860302T030000
 629.146 +RDATE:19870301T030000
 629.147 +RDATE:19880306T030000
 629.148 +RDATE:19890305T030000
 629.149 +RDATE:19900318T030000
 629.150 +RDATE:19910317T030000
 629.151 +RDATE:19920315T030000
 629.152 +RDATE:19930321T030000
 629.153 +RDATE:19940320T030000
 629.154 +RDATE:19950319T030000
 629.155 +RDATE:19960317T030000
 629.156 +RDATE:19970316T030000
 629.157 +RDATE:19980315T030000
 629.158 +RDATE:19990321T030000
 629.159 +RDATE:20000319T030000
 629.160 +RDATE:20010318T030000
 629.161 +RDATE:20020317T030000
 629.162 +RDATE:20030316T030000
 629.163 +RDATE:20040321T030000
 629.164 +RDATE:20050320T030000
 629.165 +RDATE:20060319T030000
 629.166 +RDATE:20070318T030000
 629.167 +END:STANDARD
 629.168 +END:VTIMEZONE
 629.169 +END:VCALENDAR
   630.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   630.2 +++ b/src/zoneinfo-global/Pacific/Chatham.ics	Tue Feb 10 18:12:00 2015 +0100
   630.3 @@ -0,0 +1,108 @@
   630.4 +BEGIN:VCALENDAR
   630.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   630.6 +VERSION:2.0
   630.7 +BEGIN:VTIMEZONE
   630.8 +TZID:Pacific/Chatham
   630.9 +TZURL:http://tzurl.org/zoneinfo-global/Pacific/Chatham
  630.10 +X-LIC-LOCATION:Pacific/Chatham
  630.11 +BEGIN:DAYLIGHT
  630.12 +TZOFFSETFROM:+1245
  630.13 +TZOFFSETTO:+1345
  630.14 +TZNAME:CHADT
  630.15 +DTSTART:20070930T024500
  630.16 +RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU
  630.17 +END:DAYLIGHT
  630.18 +BEGIN:STANDARD
  630.19 +TZOFFSETFROM:+1345
  630.20 +TZOFFSETTO:+1245
  630.21 +TZNAME:CHAST
  630.22 +DTSTART:20080406T034500
  630.23 +RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU
  630.24 +END:STANDARD
  630.25 +BEGIN:STANDARD
  630.26 +TZOFFSETFROM:+121348
  630.27 +TZOFFSETTO:+1245
  630.28 +TZNAME:CHAST
  630.29 +DTSTART:19570101T000000
  630.30 +RDATE:19570101T000000
  630.31 +END:STANDARD
  630.32 +BEGIN:DAYLIGHT
  630.33 +TZOFFSETFROM:+1245
  630.34 +TZOFFSETTO:+1345
  630.35 +TZNAME:CHADT
  630.36 +DTSTART:19741103T024500
  630.37 +RDATE:19741103T024500
  630.38 +RDATE:19751026T024500
  630.39 +RDATE:19761031T024500
  630.40 +RDATE:19771030T024500
  630.41 +RDATE:19781029T024500
  630.42 +RDATE:19791028T024500
  630.43 +RDATE:19801026T024500
  630.44 +RDATE:19811025T024500
  630.45 +RDATE:19821031T024500
  630.46 +RDATE:19831030T024500
  630.47 +RDATE:19841028T024500
  630.48 +RDATE:19851027T024500
  630.49 +RDATE:19861026T024500
  630.50 +RDATE:19871025T024500
  630.51 +RDATE:19881030T024500
  630.52 +RDATE:19891008T024500
  630.53 +RDATE:19901007T024500
  630.54 +RDATE:19911006T024500
  630.55 +RDATE:19921004T024500
  630.56 +RDATE:19931003T024500
  630.57 +RDATE:19941002T024500
  630.58 +RDATE:19951001T024500
  630.59 +RDATE:19961006T024500
  630.60 +RDATE:19971005T024500
  630.61 +RDATE:19981004T024500
  630.62 +RDATE:19991003T024500
  630.63 +RDATE:20001001T024500
  630.64 +RDATE:20011007T024500
  630.65 +RDATE:20021006T024500
  630.66 +RDATE:20031005T024500
  630.67 +RDATE:20041003T024500
  630.68 +RDATE:20051002T024500
  630.69 +RDATE:20061001T024500
  630.70 +END:DAYLIGHT
  630.71 +BEGIN:STANDARD
  630.72 +TZOFFSETFROM:+1345
  630.73 +TZOFFSETTO:+1245
  630.74 +TZNAME:CHAST
  630.75 +DTSTART:19750223T034500
  630.76 +RDATE:19750223T034500
  630.77 +RDATE:19760307T034500
  630.78 +RDATE:19770306T034500
  630.79 +RDATE:19780305T034500
  630.80 +RDATE:19790304T034500
  630.81 +RDATE:19800302T034500
  630.82 +RDATE:19810301T034500
  630.83 +RDATE:19820307T034500
  630.84 +RDATE:19830306T034500
  630.85 +RDATE:19840304T034500
  630.86 +RDATE:19850303T034500
  630.87 +RDATE:19860302T034500
  630.88 +RDATE:19870301T034500
  630.89 +RDATE:19880306T034500
  630.90 +RDATE:19890305T034500
  630.91 +RDATE:19900318T034500
  630.92 +RDATE:19910317T034500
  630.93 +RDATE:19920315T034500
  630.94 +RDATE:19930321T034500
  630.95 +RDATE:19940320T034500
  630.96 +RDATE:19950319T034500
  630.97 +RDATE:19960317T034500
  630.98 +RDATE:19970316T034500
  630.99 +RDATE:19980315T034500
 630.100 +RDATE:19990321T034500
 630.101 +RDATE:20000319T034500
 630.102 +RDATE:20010318T034500
 630.103 +RDATE:20020317T034500
 630.104 +RDATE:20030316T034500
 630.105 +RDATE:20040321T034500
 630.106 +RDATE:20050320T034500
 630.107 +RDATE:20060319T034500
 630.108 +RDATE:20070318T034500
 630.109 +END:STANDARD
 630.110 +END:VTIMEZONE
 630.111 +END:VCALENDAR
   631.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   631.2 +++ b/src/zoneinfo-global/Pacific/Chuuk.ics	Tue Feb 10 18:12:00 2015 +0100
   631.3 @@ -0,0 +1,16 @@
   631.4 +BEGIN:VCALENDAR
   631.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   631.6 +VERSION:2.0
   631.7 +BEGIN:VTIMEZONE
   631.8 +TZID:Pacific/Chuuk
   631.9 +TZURL:http://tzurl.org/zoneinfo-global/Pacific/Chuuk
  631.10 +X-LIC-LOCATION:Pacific/Chuuk
  631.11 +BEGIN:STANDARD
  631.12 +TZOFFSETFROM:+100708
  631.13 +TZOFFSETTO:+1000
  631.14 +TZNAME:CHUT
  631.15 +DTSTART:19010101T000000
  631.16 +RDATE:19010101T000000
  631.17 +END:STANDARD
  631.18 +END:VTIMEZONE
  631.19 +END:VCALENDAR
   632.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   632.2 +++ b/src/zoneinfo-global/Pacific/Easter.ics	Tue Feb 10 18:12:00 2015 +0100
   632.3 @@ -0,0 +1,171 @@
   632.4 +BEGIN:VCALENDAR
   632.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   632.6 +VERSION:2.0
   632.7 +BEGIN:VTIMEZONE
   632.8 +TZID:Pacific/Easter
   632.9 +TZURL:http://tzurl.org/zoneinfo-global/Pacific/Easter
  632.10 +X-LIC-LOCATION:Pacific/Easter
  632.11 +BEGIN:STANDARD
  632.12 +TZOFFSETFROM:-0500
  632.13 +TZOFFSETTO:-0600
  632.14 +TZNAME:EAST
  632.15 +DTSTART:20120310T220000
  632.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SA
  632.17 +END:STANDARD
  632.18 +BEGIN:DAYLIGHT
  632.19 +TZOFFSETFROM:-0600
  632.20 +TZOFFSETTO:-0500
  632.21 +TZNAME:EASST
  632.22 +DTSTART:20121013T220000
  632.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=2SA
  632.24 +END:DAYLIGHT
  632.25 +BEGIN:STANDARD
  632.26 +TZOFFSETFROM:-071744
  632.27 +TZOFFSETTO:-071728
  632.28 +TZNAME:EMT
  632.29 +DTSTART:18900101T000000
  632.30 +RDATE:18900101T000000
  632.31 +END:STANDARD
  632.32 +BEGIN:DAYLIGHT
  632.33 +TZOFFSETFROM:-071728
  632.34 +TZOFFSETTO:-0600
  632.35 +TZNAME:EASST
  632.36 +DTSTART:19320901T000000
  632.37 +RDATE:19320901T000000
  632.38 +END:DAYLIGHT
  632.39 +BEGIN:STANDARD
  632.40 +TZOFFSETFROM:-0600
  632.41 +TZOFFSETTO:-0700
  632.42 +TZNAME:EAST
  632.43 +DTSTART:19420531T220000
  632.44 +RDATE:19420531T220000
  632.45 +RDATE:19460831T210000
  632.46 +RDATE:19690329T210000
  632.47 +RDATE:19700328T210000
  632.48 +RDATE:19710313T210000
  632.49 +RDATE:19720311T210000
  632.50 +RDATE:19730310T210000
  632.51 +RDATE:19740309T210000
  632.52 +RDATE:19750308T210000
  632.53 +RDATE:19760313T210000
  632.54 +RDATE:19770312T210000
  632.55 +RDATE:19780311T210000
  632.56 +RDATE:19790310T210000
  632.57 +RDATE:19800308T210000
  632.58 +RDATE:19810314T210000
  632.59 +END:STANDARD
  632.60 +BEGIN:DAYLIGHT
  632.61 +TZOFFSETFROM:-0700
  632.62 +TZOFFSETTO:-0600
  632.63 +TZNAME:EASST
  632.64 +DTSTART:19420731T220000
  632.65 +RDATE:19420731T220000
  632.66 +RDATE:19681102T210000
  632.67 +RDATE:19691122T210000
  632.68 +RDATE:19701010T210000
  632.69 +RDATE:19711009T210000
  632.70 +RDATE:19721014T210000
  632.71 +RDATE:19730929T210000
  632.72 +RDATE:19741012T210000
  632.73 +RDATE:19751011T210000
  632.74 +RDATE:19761009T210000
  632.75 +RDATE:19771008T210000
  632.76 +RDATE:19781014T210000
  632.77 +RDATE:19791013T210000
  632.78 +RDATE:19801011T210000
  632.79 +RDATE:19811010T210000
  632.80 +END:DAYLIGHT
  632.81 +BEGIN:DAYLIGHT
  632.82 +TZOFFSETFROM:-0600
  632.83 +TZOFFSETTO:-0600
  632.84 +TZNAME:EASST
  632.85 +DTSTART:19460714T220000
  632.86 +RDATE:19460714T220000
  632.87 +END:DAYLIGHT
  632.88 +BEGIN:STANDARD
  632.89 +TZOFFSETFROM:-0700
  632.90 +TZOFFSETTO:-0700
  632.91 +TZNAME:EAST
  632.92 +DTSTART:19470331T210000
  632.93 +RDATE:19470331T210000
  632.94 +END:STANDARD
  632.95 +BEGIN:STANDARD
  632.96 +TZOFFSETFROM:-0600
  632.97 +TZOFFSETTO:-0600
  632.98 +TZNAME:EAST
  632.99 +DTSTART:19820313T210000
 632.100 +RDATE:19820313T210000
 632.101 +END:STANDARD
 632.102 +BEGIN:DAYLIGHT
 632.103 +TZOFFSETFROM:-0600
 632.104 +TZOFFSETTO:-0500
 632.105 +TZNAME:EASST
 632.106 +DTSTART:19821009T220000
 632.107 +RDATE:19821009T220000
 632.108 +RDATE:19831008T220000
 632.109 +RDATE:19841013T220000
 632.110 +RDATE:19851012T220000
 632.111 +RDATE:19861011T220000
 632.112 +RDATE:19871010T220000
 632.113 +RDATE:19881001T220000
 632.114 +RDATE:19891014T220000
 632.115 +RDATE:19900915T220000
 632.116 +RDATE:19911012T220000
 632.117 +RDATE:19921010T220000
 632.118 +RDATE:19931009T220000
 632.119 +RDATE:19941008T220000
 632.120 +RDATE:19951014T220000
 632.121 +RDATE:19961012T220000
 632.122 +RDATE:19971011T220000
 632.123 +RDATE:19980926T220000
 632.124 +RDATE:19991009T220000
 632.125 +RDATE:20001014T220000
 632.126 +RDATE:20011013T220000
 632.127 +RDATE:20021012T220000
 632.128 +RDATE:20031011T220000
 632.129 +RDATE:20041009T220000
 632.130 +RDATE:20051008T220000
 632.131 +RDATE:20061014T220000
 632.132 +RDATE:20071013T220000
 632.133 +RDATE:20081011T220000
 632.134 +RDATE:20091010T220000
 632.135 +RDATE:20101009T220000
 632.136 +RDATE:20110820T220000
 632.137 +END:DAYLIGHT
 632.138 +BEGIN:STANDARD
 632.139 +TZOFFSETFROM:-0500
 632.140 +TZOFFSETTO:-0600
 632.141 +TZNAME:EAST
 632.142 +DTSTART:19830312T220000
 632.143 +RDATE:19830312T220000
 632.144 +RDATE:19840310T220000
 632.145 +RDATE:19850309T220000
 632.146 +RDATE:19860308T220000
 632.147 +RDATE:19870411T220000
 632.148 +RDATE:19880312T220000
 632.149 +RDATE:19890311T220000
 632.150 +RDATE:19900317T220000
 632.151 +RDATE:19910309T220000
 632.152 +RDATE:19920314T220000
 632.153 +RDATE:19930313T220000
 632.154 +RDATE:19940312T220000
 632.155 +RDATE:19950311T220000
 632.156 +RDATE:19960309T220000
 632.157 +RDATE:19970329T220000
 632.158 +RDATE:19980314T220000
 632.159 +RDATE:19990403T220000
 632.160 +RDATE:20000311T220000
 632.161 +RDATE:20010310T220000
 632.162 +RDATE:20020309T220000
 632.163 +RDATE:20030308T220000
 632.164 +RDATE:20040313T220000
 632.165 +RDATE:20050312T220000
 632.166 +RDATE:20060311T220000
 632.167 +RDATE:20070310T220000
 632.168 +RDATE:20080329T220000
 632.169 +RDATE:20090314T220000
 632.170 +RDATE:20100403T220000
 632.171 +RDATE:20110507T220000
 632.172 +END:STANDARD
 632.173 +END:VTIMEZONE
 632.174 +END:VCALENDAR
   633.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   633.2 +++ b/src/zoneinfo-global/Pacific/Efate.ics	Tue Feb 10 18:12:00 2015 +0100
   633.3 @@ -0,0 +1,48 @@
   633.4 +BEGIN:VCALENDAR
   633.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   633.6 +VERSION:2.0
   633.7 +BEGIN:VTIMEZONE
   633.8 +TZID:Pacific/Efate
   633.9 +TZURL:http://tzurl.org/zoneinfo-global/Pacific/Efate
  633.10 +X-LIC-LOCATION:Pacific/Efate
  633.11 +BEGIN:STANDARD
  633.12 +TZOFFSETFROM:+111316
  633.13 +TZOFFSETTO:+1100
  633.14 +TZNAME:VUT
  633.15 +DTSTART:19120113T000000
  633.16 +RDATE:19120113T000000
  633.17 +END:STANDARD
  633.18 +BEGIN:DAYLIGHT
  633.19 +TZOFFSETFROM:+1100
  633.20 +TZOFFSETTO:+1200
  633.21 +TZNAME:VUST
  633.22 +DTSTART:19830925T000000
  633.23 +RDATE:19830925T000000
  633.24 +RDATE:19841023T000000
  633.25 +RDATE:19850929T000000
  633.26 +RDATE:19860928T000000
  633.27 +RDATE:19870927T000000
  633.28 +RDATE:19880925T000000
  633.29 +RDATE:19890924T000000
  633.30 +RDATE:19900923T000000
  633.31 +RDATE:19910929T000000
  633.32 +RDATE:19921025T000000
  633.33 +END:DAYLIGHT
  633.34 +BEGIN:STANDARD
  633.35 +TZOFFSETFROM:+1200
  633.36 +TZOFFSETTO:+1100
  633.37 +TZNAME:VUT
  633.38 +DTSTART:19840325T000000
  633.39 +RDATE:19840325T000000
  633.40 +RDATE:19850324T000000
  633.41 +RDATE:19860323T000000
  633.42 +RDATE:19870329T000000
  633.43 +RDATE:19880327T000000
  633.44 +RDATE:19890326T000000
  633.45 +RDATE:19900325T000000
  633.46 +RDATE:19910324T000000
  633.47 +RDATE:19920126T000000
  633.48 +RDATE:19930124T000000
  633.49 +END:STANDARD
  633.50 +END:VTIMEZONE
  633.51 +END:VCALENDAR
   634.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   634.2 +++ b/src/zoneinfo-global/Pacific/Enderbury.ics	Tue Feb 10 18:12:00 2015 +0100
   634.3 @@ -0,0 +1,30 @@
   634.4 +BEGIN:VCALENDAR
   634.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   634.6 +VERSION:2.0
   634.7 +BEGIN:VTIMEZONE
   634.8 +TZID:Pacific/Enderbury
   634.9 +TZURL:http://tzurl.org/zoneinfo-global/Pacific/Enderbury
  634.10 +X-LIC-LOCATION:Pacific/Enderbury
  634.11 +BEGIN:STANDARD
  634.12 +TZOFFSETFROM:-112420
  634.13 +TZOFFSETTO:-1200
  634.14 +TZNAME:PHOT
  634.15 +DTSTART:19010101T000000
  634.16 +RDATE:19010101T000000
  634.17 +END:STANDARD
  634.18 +BEGIN:STANDARD
  634.19 +TZOFFSETFROM:-1200
  634.20 +TZOFFSETTO:-1100
  634.21 +TZNAME:PHOT
  634.22 +DTSTART:19791001T000000
  634.23 +RDATE:19791001T000000
  634.24 +END:STANDARD
  634.25 +BEGIN:STANDARD
  634.26 +TZOFFSETFROM:-1100
  634.27 +TZOFFSETTO:+1300
  634.28 +TZNAME:PHOT
  634.29 +DTSTART:19950101T000000
  634.30 +RDATE:19950101T000000
  634.31 +END:STANDARD
  634.32 +END:VTIMEZONE
  634.33 +END:VCALENDAR
   635.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   635.2 +++ b/src/zoneinfo-global/Pacific/Fakaofo.ics	Tue Feb 10 18:12:00 2015 +0100
   635.3 @@ -0,0 +1,16 @@
   635.4 +BEGIN:VCALENDAR
   635.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   635.6 +VERSION:2.0
   635.7 +BEGIN:VTIMEZONE
   635.8 +TZID:Pacific/Fakaofo
   635.9 +TZURL:http://tzurl.org/zoneinfo-global/Pacific/Fakaofo
  635.10 +X-LIC-LOCATION:Pacific/Fakaofo
  635.11 +BEGIN:STANDARD
  635.12 +TZOFFSETFROM:-112456
  635.13 +TZOFFSETTO:-1000
  635.14 +TZNAME:TKT
  635.15 +DTSTART:19010101T000000
  635.16 +RDATE:19010101T000000
  635.17 +END:STANDARD
  635.18 +END:VTIMEZONE
  635.19 +END:VCALENDAR
   636.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   636.2 +++ b/src/zoneinfo-global/Pacific/Fiji.ics	Tue Feb 10 18:12:00 2015 +0100
   636.3 @@ -0,0 +1,38 @@
   636.4 +BEGIN:VCALENDAR
   636.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   636.6 +VERSION:2.0
   636.7 +BEGIN:VTIMEZONE
   636.8 +TZID:Pacific/Fiji
   636.9 +TZURL:http://tzurl.org/zoneinfo-global/Pacific/Fiji
  636.10 +X-LIC-LOCATION:Pacific/Fiji
  636.11 +BEGIN:STANDARD
  636.12 +TZOFFSETFROM:+115340
  636.13 +TZOFFSETTO:+1200
  636.14 +TZNAME:FJT
  636.15 +DTSTART:19151026T000000
  636.16 +RDATE:19151026T000000
  636.17 +END:STANDARD
  636.18 +BEGIN:DAYLIGHT
  636.19 +TZOFFSETFROM:+1200
  636.20 +TZOFFSETTO:+1300
  636.21 +TZNAME:FJST
  636.22 +DTSTART:19981101T020000
  636.23 +RDATE:19981101T020000
  636.24 +RDATE:19991107T020000
  636.25 +RDATE:20091129T020000
  636.26 +RDATE:20101024T020000
  636.27 +RDATE:20111023T020000
  636.28 +END:DAYLIGHT
  636.29 +BEGIN:STANDARD
  636.30 +TZOFFSETFROM:+1300
  636.31 +TZOFFSETTO:+1200
  636.32 +TZNAME:FJT
  636.33 +DTSTART:19990228T030000
  636.34 +RDATE:19990228T030000
  636.35 +RDATE:20000227T030000
  636.36 +RDATE:20100328T030000
  636.37 +RDATE:20110306T030000
  636.38 +RDATE:20120122T030000
  636.39 +END:STANDARD
  636.40 +END:VTIMEZONE
  636.41 +END:VCALENDAR
   637.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   637.2 +++ b/src/zoneinfo-global/Pacific/Funafuti.ics	Tue Feb 10 18:12:00 2015 +0100
   637.3 @@ -0,0 +1,16 @@
   637.4 +BEGIN:VCALENDAR
   637.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   637.6 +VERSION:2.0
   637.7 +BEGIN:VTIMEZONE
   637.8 +TZID:Pacific/Funafuti
   637.9 +TZURL:http://tzurl.org/zoneinfo-global/Pacific/Funafuti
  637.10 +X-LIC-LOCATION:Pacific/Funafuti
  637.11 +BEGIN:STANDARD
  637.12 +TZOFFSETFROM:+115652
  637.13 +TZOFFSETTO:+1200
  637.14 +TZNAME:TVT
  637.15 +DTSTART:19010101T000000
  637.16 +RDATE:19010101T000000
  637.17 +END:STANDARD
  637.18 +END:VTIMEZONE
  637.19 +END:VCALENDAR
   638.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   638.2 +++ b/src/zoneinfo-global/Pacific/Galapagos.ics	Tue Feb 10 18:12:00 2015 +0100
   638.3 @@ -0,0 +1,23 @@
   638.4 +BEGIN:VCALENDAR
   638.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   638.6 +VERSION:2.0
   638.7 +BEGIN:VTIMEZONE
   638.8 +TZID:Pacific/Galapagos
   638.9 +TZURL:http://tzurl.org/zoneinfo-global/Pacific/Galapagos
  638.10 +X-LIC-LOCATION:Pacific/Galapagos
  638.11 +BEGIN:STANDARD
  638.12 +TZOFFSETFROM:-055824
  638.13 +TZOFFSETTO:-0500
  638.14 +TZNAME:ECT
  638.15 +DTSTART:19310101T000000
  638.16 +RDATE:19310101T000000
  638.17 +END:STANDARD
  638.18 +BEGIN:STANDARD
  638.19 +TZOFFSETFROM:-0500
  638.20 +TZOFFSETTO:-0600
  638.21 +TZNAME:GALT
  638.22 +DTSTART:19860101T000000
  638.23 +RDATE:19860101T000000
  638.24 +END:STANDARD
  638.25 +END:VTIMEZONE
  638.26 +END:VCALENDAR
   639.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   639.2 +++ b/src/zoneinfo-global/Pacific/Gambier.ics	Tue Feb 10 18:12:00 2015 +0100
   639.3 @@ -0,0 +1,16 @@
   639.4 +BEGIN:VCALENDAR
   639.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   639.6 +VERSION:2.0
   639.7 +BEGIN:VTIMEZONE
   639.8 +TZID:Pacific/Gambier
   639.9 +TZURL:http://tzurl.org/zoneinfo-global/Pacific/Gambier
  639.10 +X-LIC-LOCATION:Pacific/Gambier
  639.11 +BEGIN:STANDARD
  639.12 +TZOFFSETFROM:-085948
  639.13 +TZOFFSETTO:-0900
  639.14 +TZNAME:GAMT
  639.15 +DTSTART:19121001T000000
  639.16 +RDATE:19121001T000000
  639.17 +END:STANDARD
  639.18 +END:VTIMEZONE
  639.19 +END:VCALENDAR
   640.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   640.2 +++ b/src/zoneinfo-global/Pacific/Guadalcanal.ics	Tue Feb 10 18:12:00 2015 +0100
   640.3 @@ -0,0 +1,16 @@
   640.4 +BEGIN:VCALENDAR
   640.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   640.6 +VERSION:2.0
   640.7 +BEGIN:VTIMEZONE
   640.8 +TZID:Pacific/Guadalcanal
   640.9 +TZURL:http://tzurl.org/zoneinfo-global/Pacific/Guadalcanal
  640.10 +X-LIC-LOCATION:Pacific/Guadalcanal
  640.11 +BEGIN:STANDARD
  640.12 +TZOFFSETFROM:+103948
  640.13 +TZOFFSETTO:+1100
  640.14 +TZNAME:SBT
  640.15 +DTSTART:19121001T000000
  640.16 +RDATE:19121001T000000
  640.17 +END:STANDARD
  640.18 +END:VTIMEZONE
  640.19 +END:VCALENDAR
   641.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   641.2 +++ b/src/zoneinfo-global/Pacific/Guam.ics	Tue Feb 10 18:12:00 2015 +0100
   641.3 @@ -0,0 +1,30 @@
   641.4 +BEGIN:VCALENDAR
   641.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   641.6 +VERSION:2.0
   641.7 +BEGIN:VTIMEZONE
   641.8 +TZID:Pacific/Guam
   641.9 +TZURL:http://tzurl.org/zoneinfo-global/Pacific/Guam
  641.10 +X-LIC-LOCATION:Pacific/Guam
  641.11 +BEGIN:STANDARD
  641.12 +TZOFFSETFROM:-1421
  641.13 +TZOFFSETTO:+0939
  641.14 +TZNAME:LMT
  641.15 +DTSTART:18441231T000000
  641.16 +RDATE:18441231T000000
  641.17 +END:STANDARD
  641.18 +BEGIN:STANDARD
  641.19 +TZOFFSETFROM:+0939
  641.20 +TZOFFSETTO:+1000
  641.21 +TZNAME:GST
  641.22 +DTSTART:19010101T000000
  641.23 +RDATE:19010101T000000
  641.24 +END:STANDARD
  641.25 +BEGIN:STANDARD
  641.26 +TZOFFSETFROM:+1000
  641.27 +TZOFFSETTO:+1000
  641.28 +TZNAME:ChST
  641.29 +DTSTART:20001223T000000
  641.30 +RDATE:20001223T000000
  641.31 +END:STANDARD
  641.32 +END:VTIMEZONE
  641.33 +END:VCALENDAR
   642.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   642.2 +++ b/src/zoneinfo-global/Pacific/Honolulu.ics	Tue Feb 10 18:12:00 2015 +0100
   642.3 @@ -0,0 +1,39 @@
   642.4 +BEGIN:VCALENDAR
   642.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   642.6 +VERSION:2.0
   642.7 +BEGIN:VTIMEZONE
   642.8 +TZID:Pacific/Honolulu
   642.9 +TZURL:http://tzurl.org/zoneinfo-global/Pacific/Honolulu
  642.10 +X-LIC-LOCATION:Pacific/Honolulu
  642.11 +BEGIN:STANDARD
  642.12 +TZOFFSETFROM:-103126
  642.13 +TZOFFSETTO:-1030
  642.14 +TZNAME:HST
  642.15 +DTSTART:18960113T120000
  642.16 +RDATE:18960113T120000
  642.17 +END:STANDARD
  642.18 +BEGIN:DAYLIGHT
  642.19 +TZOFFSETFROM:-1030
  642.20 +TZOFFSETTO:-0930
  642.21 +TZNAME:HDT
  642.22 +DTSTART:19330430T020000
  642.23 +RDATE:19330430T020000
  642.24 +RDATE:19420209T020000
  642.25 +END:DAYLIGHT
  642.26 +BEGIN:STANDARD
  642.27 +TZOFFSETFROM:-0930
  642.28 +TZOFFSETTO:-1030
  642.29 +TZNAME:HST
  642.30 +DTSTART:19330521T120000
  642.31 +RDATE:19330521T120000
  642.32 +RDATE:19450930T020000
  642.33 +END:STANDARD
  642.34 +BEGIN:STANDARD
  642.35 +TZOFFSETFROM:-1030
  642.36 +TZOFFSETTO:-1000
  642.37 +TZNAME:HST
  642.38 +DTSTART:19470608T020000
  642.39 +RDATE:19470608T020000
  642.40 +END:STANDARD
  642.41 +END:VTIMEZONE
  642.42 +END:VCALENDAR
   643.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   643.2 +++ b/src/zoneinfo-global/Pacific/Johnston.ics	Tue Feb 10 18:12:00 2015 +0100
   643.3 @@ -0,0 +1,16 @@
   643.4 +BEGIN:VCALENDAR
   643.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   643.6 +VERSION:2.0
   643.7 +BEGIN:VTIMEZONE
   643.8 +TZID:Pacific/Johnston
   643.9 +TZURL:http://tzurl.org/zoneinfo-global/Pacific/Johnston
  643.10 +X-LIC-LOCATION:Pacific/Johnston
  643.11 +BEGIN:STANDARD
  643.12 +TZOFFSETFROM:-1000
  643.13 +TZOFFSETTO:-1000
  643.14 +TZNAME:HST
  643.15 +DTSTART:16010101T000000
  643.16 +RDATE:16010101T000000
  643.17 +END:STANDARD
  643.18 +END:VTIMEZONE
  643.19 +END:VCALENDAR
   644.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   644.2 +++ b/src/zoneinfo-global/Pacific/Kiritimati.ics	Tue Feb 10 18:12:00 2015 +0100
   644.3 @@ -0,0 +1,30 @@
   644.4 +BEGIN:VCALENDAR
   644.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   644.6 +VERSION:2.0
   644.7 +BEGIN:VTIMEZONE
   644.8 +TZID:Pacific/Kiritimati
   644.9 +TZURL:http://tzurl.org/zoneinfo-global/Pacific/Kiritimati
  644.10 +X-LIC-LOCATION:Pacific/Kiritimati
  644.11 +BEGIN:STANDARD
  644.12 +TZOFFSETFROM:-102920
  644.13 +TZOFFSETTO:-1040
  644.14 +TZNAME:LINT
  644.15 +DTSTART:19010101T000000
  644.16 +RDATE:19010101T000000
  644.17 +END:STANDARD
  644.18 +BEGIN:STANDARD
  644.19 +TZOFFSETFROM:-1040
  644.20 +TZOFFSETTO:-1000
  644.21 +TZNAME:LINT
  644.22 +DTSTART:19791001T000000
  644.23 +RDATE:19791001T000000
  644.24 +END:STANDARD
  644.25 +BEGIN:STANDARD
  644.26 +TZOFFSETFROM:-1000
  644.27 +TZOFFSETTO:+1400
  644.28 +TZNAME:LINT
  644.29 +DTSTART:19950101T000000
  644.30 +RDATE:19950101T000000
  644.31 +END:STANDARD
  644.32 +END:VTIMEZONE
  644.33 +END:VCALENDAR
   645.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   645.2 +++ b/src/zoneinfo-global/Pacific/Kosrae.ics	Tue Feb 10 18:12:00 2015 +0100
   645.3 @@ -0,0 +1,30 @@
   645.4 +BEGIN:VCALENDAR
   645.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   645.6 +VERSION:2.0
   645.7 +BEGIN:VTIMEZONE
   645.8 +TZID:Pacific/Kosrae
   645.9 +TZURL:http://tzurl.org/zoneinfo-global/Pacific/Kosrae
  645.10 +X-LIC-LOCATION:Pacific/Kosrae
  645.11 +BEGIN:STANDARD
  645.12 +TZOFFSETFROM:+105156
  645.13 +TZOFFSETTO:+1100
  645.14 +TZNAME:KOST
  645.15 +DTSTART:19010101T000000
  645.16 +RDATE:19010101T000000
  645.17 +END:STANDARD
  645.18 +BEGIN:STANDARD
  645.19 +TZOFFSETFROM:+1100
  645.20 +TZOFFSETTO:+1200
  645.21 +TZNAME:KOST
  645.22 +DTSTART:19691001T000000
  645.23 +RDATE:19691001T000000
  645.24 +END:STANDARD
  645.25 +BEGIN:STANDARD
  645.26 +TZOFFSETFROM:+1200
  645.27 +TZOFFSETTO:+1100
  645.28 +TZNAME:KOST
  645.29 +DTSTART:19990101T000000
  645.30 +RDATE:19990101T000000
  645.31 +END:STANDARD
  645.32 +END:VTIMEZONE
  645.33 +END:VCALENDAR
   646.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   646.2 +++ b/src/zoneinfo-global/Pacific/Kwajalein.ics	Tue Feb 10 18:12:00 2015 +0100
   646.3 @@ -0,0 +1,30 @@
   646.4 +BEGIN:VCALENDAR
   646.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   646.6 +VERSION:2.0
   646.7 +BEGIN:VTIMEZONE
   646.8 +TZID:Pacific/Kwajalein
   646.9 +TZURL:http://tzurl.org/zoneinfo-global/Pacific/Kwajalein
  646.10 +X-LIC-LOCATION:Pacific/Kwajalein
  646.11 +BEGIN:STANDARD
  646.12 +TZOFFSETFROM:+110920
  646.13 +TZOFFSETTO:+1100
  646.14 +TZNAME:MHT
  646.15 +DTSTART:19010101T000000
  646.16 +RDATE:19010101T000000
  646.17 +END:STANDARD
  646.18 +BEGIN:STANDARD
  646.19 +TZOFFSETFROM:+1100
  646.20 +TZOFFSETTO:-1200
  646.21 +TZNAME:KWAT
  646.22 +DTSTART:19691001T000000
  646.23 +RDATE:19691001T000000
  646.24 +END:STANDARD
  646.25 +BEGIN:STANDARD
  646.26 +TZOFFSETFROM:-1200
  646.27 +TZOFFSETTO:+1200
  646.28 +TZNAME:MHT
  646.29 +DTSTART:19930820T000000
  646.30 +RDATE:19930820T000000
  646.31 +END:STANDARD
  646.32 +END:VTIMEZONE
  646.33 +END:VCALENDAR
   647.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   647.2 +++ b/src/zoneinfo-global/Pacific/Majuro.ics	Tue Feb 10 18:12:00 2015 +0100
   647.3 @@ -0,0 +1,23 @@
   647.4 +BEGIN:VCALENDAR
   647.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   647.6 +VERSION:2.0
   647.7 +BEGIN:VTIMEZONE
   647.8 +TZID:Pacific/Majuro
   647.9 +TZURL:http://tzurl.org/zoneinfo-global/Pacific/Majuro
  647.10 +X-LIC-LOCATION:Pacific/Majuro
  647.11 +BEGIN:STANDARD
  647.12 +TZOFFSETFROM:+112448
  647.13 +TZOFFSETTO:+1100
  647.14 +TZNAME:MHT
  647.15 +DTSTART:19010101T000000
  647.16 +RDATE:19010101T000000
  647.17 +END:STANDARD
  647.18 +BEGIN:STANDARD
  647.19 +TZOFFSETFROM:+1100
  647.20 +TZOFFSETTO:+1200
  647.21 +TZNAME:MHT
  647.22 +DTSTART:19691001T000000
  647.23 +RDATE:19691001T000000
  647.24 +END:STANDARD
  647.25 +END:VTIMEZONE
  647.26 +END:VCALENDAR
   648.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   648.2 +++ b/src/zoneinfo-global/Pacific/Marquesas.ics	Tue Feb 10 18:12:00 2015 +0100
   648.3 @@ -0,0 +1,16 @@
   648.4 +BEGIN:VCALENDAR
   648.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   648.6 +VERSION:2.0
   648.7 +BEGIN:VTIMEZONE
   648.8 +TZID:Pacific/Marquesas
   648.9 +TZURL:http://tzurl.org/zoneinfo-global/Pacific/Marquesas
  648.10 +X-LIC-LOCATION:Pacific/Marquesas
  648.11 +BEGIN:STANDARD
  648.12 +TZOFFSETFROM:-0918
  648.13 +TZOFFSETTO:-0930
  648.14 +TZNAME:MART
  648.15 +DTSTART:19121001T000000
  648.16 +RDATE:19121001T000000
  648.17 +END:STANDARD
  648.18 +END:VTIMEZONE
  648.19 +END:VCALENDAR
   649.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   649.2 +++ b/src/zoneinfo-global/Pacific/Midway.ics	Tue Feb 10 18:12:00 2015 +0100
   649.3 @@ -0,0 +1,44 @@
   649.4 +BEGIN:VCALENDAR
   649.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   649.6 +VERSION:2.0
   649.7 +BEGIN:VTIMEZONE
   649.8 +TZID:Pacific/Midway
   649.9 +TZURL:http://tzurl.org/zoneinfo-global/Pacific/Midway
  649.10 +X-LIC-LOCATION:Pacific/Midway
  649.11 +BEGIN:STANDARD
  649.12 +TZOFFSETFROM:-114928
  649.13 +TZOFFSETTO:-1100
  649.14 +TZNAME:NST
  649.15 +DTSTART:19010101T000000
  649.16 +RDATE:19010101T000000
  649.17 +END:STANDARD
  649.18 +BEGIN:DAYLIGHT
  649.19 +TZOFFSETFROM:-1100
  649.20 +TZOFFSETTO:-1000
  649.21 +TZNAME:NDT
  649.22 +DTSTART:19560603T000000
  649.23 +RDATE:19560603T000000
  649.24 +END:DAYLIGHT
  649.25 +BEGIN:STANDARD
  649.26 +TZOFFSETFROM:-1000
  649.27 +TZOFFSETTO:-1100
  649.28 +TZNAME:NST
  649.29 +DTSTART:19560902T000000
  649.30 +RDATE:19560902T000000
  649.31 +END:STANDARD
  649.32 +BEGIN:STANDARD
  649.33 +TZOFFSETFROM:-1100
  649.34 +TZOFFSETTO:-1100
  649.35 +TZNAME:BST
  649.36 +DTSTART:19670401T000000
  649.37 +RDATE:19670401T000000
  649.38 +END:STANDARD
  649.39 +BEGIN:STANDARD
  649.40 +TZOFFSETFROM:-1100
  649.41 +TZOFFSETTO:-1100
  649.42 +TZNAME:SST
  649.43 +DTSTART:19831130T000000
  649.44 +RDATE:19831130T000000
  649.45 +END:STANDARD
  649.46 +END:VTIMEZONE
  649.47 +END:VCALENDAR
   650.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   650.2 +++ b/src/zoneinfo-global/Pacific/Nauru.ics	Tue Feb 10 18:12:00 2015 +0100
   650.3 @@ -0,0 +1,37 @@
   650.4 +BEGIN:VCALENDAR
   650.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   650.6 +VERSION:2.0
   650.7 +BEGIN:VTIMEZONE
   650.8 +TZID:Pacific/Nauru
   650.9 +TZURL:http://tzurl.org/zoneinfo-global/Pacific/Nauru
  650.10 +X-LIC-LOCATION:Pacific/Nauru
  650.11 +BEGIN:STANDARD
  650.12 +TZOFFSETFROM:+110740
  650.13 +TZOFFSETTO:+1130
  650.14 +TZNAME:NRT
  650.15 +DTSTART:19210115T000000
  650.16 +RDATE:19210115T000000
  650.17 +END:STANDARD
  650.18 +BEGIN:STANDARD
  650.19 +TZOFFSETFROM:+1130
  650.20 +TZOFFSETTO:+0900
  650.21 +TZNAME:JST
  650.22 +DTSTART:19420315T000000
  650.23 +RDATE:19420315T000000
  650.24 +END:STANDARD
  650.25 +BEGIN:STANDARD
  650.26 +TZOFFSETFROM:+0900
  650.27 +TZOFFSETTO:+1130
  650.28 +TZNAME:NRT
  650.29 +DTSTART:19440815T000000
  650.30 +RDATE:19440815T000000
  650.31 +END:STANDARD
  650.32 +BEGIN:STANDARD
  650.33 +TZOFFSETFROM:+1130
  650.34 +TZOFFSETTO:+1200
  650.35 +TZNAME:NRT
  650.36 +DTSTART:19790501T000000
  650.37 +RDATE:19790501T000000
  650.38 +END:STANDARD
  650.39 +END:VTIMEZONE
  650.40 +END:VCALENDAR
   651.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   651.2 +++ b/src/zoneinfo-global/Pacific/Niue.ics	Tue Feb 10 18:12:00 2015 +0100
   651.3 @@ -0,0 +1,30 @@
   651.4 +BEGIN:VCALENDAR
   651.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   651.6 +VERSION:2.0
   651.7 +BEGIN:VTIMEZONE
   651.8 +TZID:Pacific/Niue
   651.9 +TZURL:http://tzurl.org/zoneinfo-global/Pacific/Niue
  651.10 +X-LIC-LOCATION:Pacific/Niue
  651.11 +BEGIN:STANDARD
  651.12 +TZOFFSETFROM:-111940
  651.13 +TZOFFSETTO:-1120
  651.14 +TZNAME:NUT
  651.15 +DTSTART:19010101T000000
  651.16 +RDATE:19010101T000000
  651.17 +END:STANDARD
  651.18 +BEGIN:STANDARD
  651.19 +TZOFFSETFROM:-1120
  651.20 +TZOFFSETTO:-1130
  651.21 +TZNAME:NUT
  651.22 +DTSTART:19510101T000000
  651.23 +RDATE:19510101T000000
  651.24 +END:STANDARD
  651.25 +BEGIN:STANDARD
  651.26 +TZOFFSETFROM:-1130
  651.27 +TZOFFSETTO:-1100
  651.28 +TZNAME:NUT
  651.29 +DTSTART:19781001T000000
  651.30 +RDATE:19781001T000000
  651.31 +END:STANDARD
  651.32 +END:VTIMEZONE
  651.33 +END:VCALENDAR
   652.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   652.2 +++ b/src/zoneinfo-global/Pacific/Norfolk.ics	Tue Feb 10 18:12:00 2015 +0100
   652.3 @@ -0,0 +1,23 @@
   652.4 +BEGIN:VCALENDAR
   652.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   652.6 +VERSION:2.0
   652.7 +BEGIN:VTIMEZONE
   652.8 +TZID:Pacific/Norfolk
   652.9 +TZURL:http://tzurl.org/zoneinfo-global/Pacific/Norfolk
  652.10 +X-LIC-LOCATION:Pacific/Norfolk
  652.11 +BEGIN:STANDARD
  652.12 +TZOFFSETFROM:+111152
  652.13 +TZOFFSETTO:+1112
  652.14 +TZNAME:NMT
  652.15 +DTSTART:19010101T000000
  652.16 +RDATE:19010101T000000
  652.17 +END:STANDARD
  652.18 +BEGIN:STANDARD
  652.19 +TZOFFSETFROM:+1112
  652.20 +TZOFFSETTO:+1130
  652.21 +TZNAME:NFT
  652.22 +DTSTART:19510101T000000
  652.23 +RDATE:19510101T000000
  652.24 +END:STANDARD
  652.25 +END:VTIMEZONE
  652.26 +END:VCALENDAR
   653.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   653.2 +++ b/src/zoneinfo-global/Pacific/Noumea.ics	Tue Feb 10 18:12:00 2015 +0100
   653.3 @@ -0,0 +1,34 @@
   653.4 +BEGIN:VCALENDAR
   653.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   653.6 +VERSION:2.0
   653.7 +BEGIN:VTIMEZONE
   653.8 +TZID:Pacific/Noumea
   653.9 +TZURL:http://tzurl.org/zoneinfo-global/Pacific/Noumea
  653.10 +X-LIC-LOCATION:Pacific/Noumea
  653.11 +BEGIN:STANDARD
  653.12 +TZOFFSETFROM:+110548
  653.13 +TZOFFSETTO:+1100
  653.14 +TZNAME:NCT
  653.15 +DTSTART:19120113T000000
  653.16 +RDATE:19120113T000000
  653.17 +END:STANDARD
  653.18 +BEGIN:DAYLIGHT
  653.19 +TZOFFSETFROM:+1100
  653.20 +TZOFFSETTO:+1200
  653.21 +TZNAME:NCST
  653.22 +DTSTART:19771204T000000
  653.23 +RDATE:19771204T000000
  653.24 +RDATE:19781203T000000
  653.25 +RDATE:19961201T020000
  653.26 +END:DAYLIGHT
  653.27 +BEGIN:STANDARD
  653.28 +TZOFFSETFROM:+1200
  653.29 +TZOFFSETTO:+1100
  653.30 +TZNAME:NCT
  653.31 +DTSTART:19780227T000000
  653.32 +RDATE:19780227T000000
  653.33 +RDATE:19790227T000000
  653.34 +RDATE:19970302T030000
  653.35 +END:STANDARD
  653.36 +END:VTIMEZONE
  653.37 +END:VCALENDAR
   654.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   654.2 +++ b/src/zoneinfo-global/Pacific/Pago_Pago.ics	Tue Feb 10 18:12:00 2015 +0100
   654.3 @@ -0,0 +1,44 @@
   654.4 +BEGIN:VCALENDAR
   654.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   654.6 +VERSION:2.0
   654.7 +BEGIN:VTIMEZONE
   654.8 +TZID:Pacific/Pago_Pago
   654.9 +TZURL:http://tzurl.org/zoneinfo-global/Pacific/Pago_Pago
  654.10 +X-LIC-LOCATION:Pacific/Pago_Pago
  654.11 +BEGIN:STANDARD
  654.12 +TZOFFSETFROM:+123712
  654.13 +TZOFFSETTO:-112248
  654.14 +TZNAME:LMT
  654.15 +DTSTART:18790705T000000
  654.16 +RDATE:18790705T000000
  654.17 +END:STANDARD
  654.18 +BEGIN:STANDARD
  654.19 +TZOFFSETFROM:-112248
  654.20 +TZOFFSETTO:-1130
  654.21 +TZNAME:SAMT
  654.22 +DTSTART:19110101T000000
  654.23 +RDATE:19110101T000000
  654.24 +END:STANDARD
  654.25 +BEGIN:STANDARD
  654.26 +TZOFFSETFROM:-1130
  654.27 +TZOFFSETTO:-1100
  654.28 +TZNAME:NST
  654.29 +DTSTART:19500101T000000
  654.30 +RDATE:19500101T000000
  654.31 +END:STANDARD
  654.32 +BEGIN:STANDARD
  654.33 +TZOFFSETFROM:-1100
  654.34 +TZOFFSETTO:-1100
  654.35 +TZNAME:BST
  654.36 +DTSTART:19670401T000000
  654.37 +RDATE:19670401T000000
  654.38 +END:STANDARD
  654.39 +BEGIN:STANDARD
  654.40 +TZOFFSETFROM:-1100
  654.41 +TZOFFSETTO:-1100
  654.42 +TZNAME:SST
  654.43 +DTSTART:19831130T000000
  654.44 +RDATE:19831130T000000
  654.45 +END:STANDARD
  654.46 +END:VTIMEZONE
  654.47 +END:VCALENDAR
   655.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   655.2 +++ b/src/zoneinfo-global/Pacific/Palau.ics	Tue Feb 10 18:12:00 2015 +0100
   655.3 @@ -0,0 +1,16 @@
   655.4 +BEGIN:VCALENDAR
   655.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   655.6 +VERSION:2.0
   655.7 +BEGIN:VTIMEZONE
   655.8 +TZID:Pacific/Palau
   655.9 +TZURL:http://tzurl.org/zoneinfo-global/Pacific/Palau
  655.10 +X-LIC-LOCATION:Pacific/Palau
  655.11 +BEGIN:STANDARD
  655.12 +TZOFFSETFROM:+085756
  655.13 +TZOFFSETTO:+0900
  655.14 +TZNAME:PWT
  655.15 +DTSTART:19010101T000000
  655.16 +RDATE:19010101T000000
  655.17 +END:STANDARD
  655.18 +END:VTIMEZONE
  655.19 +END:VCALENDAR
   656.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   656.2 +++ b/src/zoneinfo-global/Pacific/Pitcairn.ics	Tue Feb 10 18:12:00 2015 +0100
   656.3 @@ -0,0 +1,23 @@
   656.4 +BEGIN:VCALENDAR
   656.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   656.6 +VERSION:2.0
   656.7 +BEGIN:VTIMEZONE
   656.8 +TZID:Pacific/Pitcairn
   656.9 +TZURL:http://tzurl.org/zoneinfo-global/Pacific/Pitcairn
  656.10 +X-LIC-LOCATION:Pacific/Pitcairn
  656.11 +BEGIN:STANDARD
  656.12 +TZOFFSETFROM:-084020
  656.13 +TZOFFSETTO:-0830
  656.14 +TZNAME:PNT
  656.15 +DTSTART:19010101T000000
  656.16 +RDATE:19010101T000000
  656.17 +END:STANDARD
  656.18 +BEGIN:STANDARD
  656.19 +TZOFFSETFROM:-0830
  656.20 +TZOFFSETTO:-0800
  656.21 +TZNAME:PST
  656.22 +DTSTART:19980427T000000
  656.23 +RDATE:19980427T000000
  656.24 +END:STANDARD
  656.25 +END:VTIMEZONE
  656.26 +END:VCALENDAR
   657.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   657.2 +++ b/src/zoneinfo-global/Pacific/Pohnpei.ics	Tue Feb 10 18:12:00 2015 +0100
   657.3 @@ -0,0 +1,16 @@
   657.4 +BEGIN:VCALENDAR
   657.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   657.6 +VERSION:2.0
   657.7 +BEGIN:VTIMEZONE
   657.8 +TZID:Pacific/Pohnpei
   657.9 +TZURL:http://tzurl.org/zoneinfo-global/Pacific/Pohnpei
  657.10 +X-LIC-LOCATION:Pacific/Pohnpei
  657.11 +BEGIN:STANDARD
  657.12 +TZOFFSETFROM:+103252
  657.13 +TZOFFSETTO:+1100
  657.14 +TZNAME:PONT
  657.15 +DTSTART:19010101T000000
  657.16 +RDATE:19010101T000000
  657.17 +END:STANDARD
  657.18 +END:VTIMEZONE
  657.19 +END:VCALENDAR
   658.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   658.2 +++ b/src/zoneinfo-global/Pacific/Port_Moresby.ics	Tue Feb 10 18:12:00 2015 +0100
   658.3 @@ -0,0 +1,23 @@
   658.4 +BEGIN:VCALENDAR
   658.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   658.6 +VERSION:2.0
   658.7 +BEGIN:VTIMEZONE
   658.8 +TZID:Pacific/Port_Moresby
   658.9 +TZURL:http://tzurl.org/zoneinfo-global/Pacific/Port_Moresby
  658.10 +X-LIC-LOCATION:Pacific/Port_Moresby
  658.11 +BEGIN:STANDARD
  658.12 +TZOFFSETFROM:+094840
  658.13 +TZOFFSETTO:+094832
  658.14 +TZNAME:PMMT
  658.15 +DTSTART:18800101T000000
  658.16 +RDATE:18800101T000000
  658.17 +END:STANDARD
  658.18 +BEGIN:STANDARD
  658.19 +TZOFFSETFROM:+094832
  658.20 +TZOFFSETTO:+1000
  658.21 +TZNAME:PGT
  658.22 +DTSTART:18950101T000000
  658.23 +RDATE:18950101T000000
  658.24 +END:STANDARD
  658.25 +END:VTIMEZONE
  658.26 +END:VCALENDAR
   659.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   659.2 +++ b/src/zoneinfo-global/Pacific/Rarotonga.ics	Tue Feb 10 18:12:00 2015 +0100
   659.3 @@ -0,0 +1,60 @@
   659.4 +BEGIN:VCALENDAR
   659.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   659.6 +VERSION:2.0
   659.7 +BEGIN:VTIMEZONE
   659.8 +TZID:Pacific/Rarotonga
   659.9 +TZURL:http://tzurl.org/zoneinfo-global/Pacific/Rarotonga
  659.10 +X-LIC-LOCATION:Pacific/Rarotonga
  659.11 +BEGIN:STANDARD
  659.12 +TZOFFSETFROM:-103904
  659.13 +TZOFFSETTO:-1030
  659.14 +TZNAME:CKT
  659.15 +DTSTART:19010101T000000
  659.16 +RDATE:19010101T000000
  659.17 +END:STANDARD
  659.18 +BEGIN:DAYLIGHT
  659.19 +TZOFFSETFROM:-1030
  659.20 +TZOFFSETTO:-0930
  659.21 +TZNAME:CKHST
  659.22 +DTSTART:19781112T000000
  659.23 +RDATE:19781112T000000
  659.24 +END:DAYLIGHT
  659.25 +BEGIN:STANDARD
  659.26 +TZOFFSETFROM:-0930
  659.27 +TZOFFSETTO:-1000
  659.28 +TZNAME:CKT
  659.29 +DTSTART:19790304T000000
  659.30 +RDATE:19790304T000000
  659.31 +RDATE:19800302T000000
  659.32 +RDATE:19810301T000000
  659.33 +RDATE:19820307T000000
  659.34 +RDATE:19830306T000000
  659.35 +RDATE:19840304T000000
  659.36 +RDATE:19850303T000000
  659.37 +RDATE:19860302T000000
  659.38 +RDATE:19870301T000000
  659.39 +RDATE:19880306T000000
  659.40 +RDATE:19890305T000000
  659.41 +RDATE:19900304T000000
  659.42 +RDATE:19910303T000000
  659.43 +END:STANDARD
  659.44 +BEGIN:DAYLIGHT
  659.45 +TZOFFSETFROM:-1000
  659.46 +TZOFFSETTO:-0930
  659.47 +TZNAME:CKHST
  659.48 +DTSTART:19791028T000000
  659.49 +RDATE:19791028T000000
  659.50 +RDATE:19801026T000000
  659.51 +RDATE:19811025T000000
  659.52 +RDATE:19821031T000000
  659.53 +RDATE:19831030T000000
  659.54 +RDATE:19841028T000000
  659.55 +RDATE:19851027T000000
  659.56 +RDATE:19861026T000000
  659.57 +RDATE:19871025T000000
  659.58 +RDATE:19881030T000000
  659.59 +RDATE:19891029T000000
  659.60 +RDATE:19901028T000000
  659.61 +END:DAYLIGHT
  659.62 +END:VTIMEZONE
  659.63 +END:VCALENDAR
   660.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   660.2 +++ b/src/zoneinfo-global/Pacific/Saipan.ics	Tue Feb 10 18:12:00 2015 +0100
   660.3 @@ -0,0 +1,37 @@
   660.4 +BEGIN:VCALENDAR
   660.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   660.6 +VERSION:2.0
   660.7 +BEGIN:VTIMEZONE
   660.8 +TZID:Pacific/Saipan
   660.9 +TZURL:http://tzurl.org/zoneinfo-global/Pacific/Saipan
  660.10 +X-LIC-LOCATION:Pacific/Saipan
  660.11 +BEGIN:STANDARD
  660.12 +TZOFFSETFROM:-1417
  660.13 +TZOFFSETTO:+0943
  660.14 +TZNAME:LMT
  660.15 +DTSTART:18441231T000000
  660.16 +RDATE:18441231T000000
  660.17 +END:STANDARD
  660.18 +BEGIN:STANDARD
  660.19 +TZOFFSETFROM:+0943
  660.20 +TZOFFSETTO:+0900
  660.21 +TZNAME:MPT
  660.22 +DTSTART:19010101T000000
  660.23 +RDATE:19010101T000000
  660.24 +END:STANDARD
  660.25 +BEGIN:STANDARD
  660.26 +TZOFFSETFROM:+0900
  660.27 +TZOFFSETTO:+1000
  660.28 +TZNAME:MPT
  660.29 +DTSTART:19691001T000000
  660.30 +RDATE:19691001T000000
  660.31 +END:STANDARD
  660.32 +BEGIN:STANDARD
  660.33 +TZOFFSETFROM:+1000
  660.34 +TZOFFSETTO:+1000
  660.35 +TZNAME:ChST
  660.36 +DTSTART:20001223T000000
  660.37 +RDATE:20001223T000000
  660.38 +END:STANDARD
  660.39 +END:VTIMEZONE
  660.40 +END:VCALENDAR
   661.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   661.2 +++ b/src/zoneinfo-global/Pacific/Tahiti.ics	Tue Feb 10 18:12:00 2015 +0100
   661.3 @@ -0,0 +1,16 @@
   661.4 +BEGIN:VCALENDAR
   661.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   661.6 +VERSION:2.0
   661.7 +BEGIN:VTIMEZONE
   661.8 +TZID:Pacific/Tahiti
   661.9 +TZURL:http://tzurl.org/zoneinfo-global/Pacific/Tahiti
  661.10 +X-LIC-LOCATION:Pacific/Tahiti
  661.11 +BEGIN:STANDARD
  661.12 +TZOFFSETFROM:-095816
  661.13 +TZOFFSETTO:-1000
  661.14 +TZNAME:TAHT
  661.15 +DTSTART:19121001T000000
  661.16 +RDATE:19121001T000000
  661.17 +END:STANDARD
  661.18 +END:VTIMEZONE
  661.19 +END:VCALENDAR
   662.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   662.2 +++ b/src/zoneinfo-global/Pacific/Tarawa.ics	Tue Feb 10 18:12:00 2015 +0100
   662.3 @@ -0,0 +1,16 @@
   662.4 +BEGIN:VCALENDAR
   662.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   662.6 +VERSION:2.0
   662.7 +BEGIN:VTIMEZONE
   662.8 +TZID:Pacific/Tarawa
   662.9 +TZURL:http://tzurl.org/zoneinfo-global/Pacific/Tarawa
  662.10 +X-LIC-LOCATION:Pacific/Tarawa
  662.11 +BEGIN:STANDARD
  662.12 +TZOFFSETFROM:+113204
  662.13 +TZOFFSETTO:+1200
  662.14 +TZNAME:GILT
  662.15 +DTSTART:19010101T000000
  662.16 +RDATE:19010101T000000
  662.17 +END:STANDARD
  662.18 +END:VTIMEZONE
  662.19 +END:VCALENDAR
   663.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   663.2 +++ b/src/zoneinfo-global/Pacific/Tongatapu.ics	Tue Feb 10 18:12:00 2015 +0100
   663.3 @@ -0,0 +1,48 @@
   663.4 +BEGIN:VCALENDAR
   663.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   663.6 +VERSION:2.0
   663.7 +BEGIN:VTIMEZONE
   663.8 +TZID:Pacific/Tongatapu
   663.9 +TZURL:http://tzurl.org/zoneinfo-global/Pacific/Tongatapu
  663.10 +X-LIC-LOCATION:Pacific/Tongatapu
  663.11 +BEGIN:STANDARD
  663.12 +TZOFFSETFROM:+121920
  663.13 +TZOFFSETTO:+1220
  663.14 +TZNAME:TOT
  663.15 +DTSTART:19010101T000000
  663.16 +RDATE:19010101T000000
  663.17 +END:STANDARD
  663.18 +BEGIN:STANDARD
  663.19 +TZOFFSETFROM:+1220
  663.20 +TZOFFSETTO:+1300
  663.21 +TZNAME:TOT
  663.22 +DTSTART:19410101T000000
  663.23 +RDATE:19410101T000000
  663.24 +END:STANDARD
  663.25 +BEGIN:STANDARD
  663.26 +TZOFFSETFROM:+1300
  663.27 +TZOFFSETTO:+1300
  663.28 +TZNAME:TOT
  663.29 +DTSTART:19990101T000000
  663.30 +RDATE:19990101T000000
  663.31 +END:STANDARD
  663.32 +BEGIN:DAYLIGHT
  663.33 +TZOFFSETFROM:+1300
  663.34 +TZOFFSETTO:+1400
  663.35 +TZNAME:TOST
  663.36 +DTSTART:19991007T020000
  663.37 +RDATE:19991007T020000
  663.38 +RDATE:20001105T020000
  663.39 +RDATE:20011104T020000
  663.40 +END:DAYLIGHT
  663.41 +BEGIN:STANDARD
  663.42 +TZOFFSETFROM:+1400
  663.43 +TZOFFSETTO:+1300
  663.44 +TZNAME:TOT
  663.45 +DTSTART:20000319T030000
  663.46 +RDATE:20000319T030000
  663.47 +RDATE:20010128T020000
  663.48 +RDATE:20020127T020000
  663.49 +END:STANDARD
  663.50 +END:VTIMEZONE
  663.51 +END:VCALENDAR
   664.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   664.2 +++ b/src/zoneinfo-global/Pacific/Wake.ics	Tue Feb 10 18:12:00 2015 +0100
   664.3 @@ -0,0 +1,16 @@
   664.4 +BEGIN:VCALENDAR
   664.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   664.6 +VERSION:2.0
   664.7 +BEGIN:VTIMEZONE
   664.8 +TZID:Pacific/Wake
   664.9 +TZURL:http://tzurl.org/zoneinfo-global/Pacific/Wake
  664.10 +X-LIC-LOCATION:Pacific/Wake
  664.11 +BEGIN:STANDARD
  664.12 +TZOFFSETFROM:+110628
  664.13 +TZOFFSETTO:+1200
  664.14 +TZNAME:WAKT
  664.15 +DTSTART:19010101T000000
  664.16 +RDATE:19010101T000000
  664.17 +END:STANDARD
  664.18 +END:VTIMEZONE
  664.19 +END:VCALENDAR
   665.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   665.2 +++ b/src/zoneinfo-global/Pacific/Wallis.ics	Tue Feb 10 18:12:00 2015 +0100
   665.3 @@ -0,0 +1,16 @@
   665.4 +BEGIN:VCALENDAR
   665.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   665.6 +VERSION:2.0
   665.7 +BEGIN:VTIMEZONE
   665.8 +TZID:Pacific/Wallis
   665.9 +TZURL:http://tzurl.org/zoneinfo-global/Pacific/Wallis
  665.10 +X-LIC-LOCATION:Pacific/Wallis
  665.11 +BEGIN:STANDARD
  665.12 +TZOFFSETFROM:+121520
  665.13 +TZOFFSETTO:+1200
  665.14 +TZNAME:WFT
  665.15 +DTSTART:19010101T000000
  665.16 +RDATE:19010101T000000
  665.17 +END:STANDARD
  665.18 +END:VTIMEZONE
  665.19 +END:VCALENDAR
   666.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   666.2 +++ b/src/zoneinfo/Africa/Abidjan.ics	Tue Feb 10 18:12:00 2015 +0100
   666.3 @@ -0,0 +1,16 @@
   666.4 +BEGIN:VCALENDAR
   666.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   666.6 +VERSION:2.0
   666.7 +BEGIN:VTIMEZONE
   666.8 +TZID:Africa/Abidjan
   666.9 +TZURL:http://tzurl.org/zoneinfo/Africa/Abidjan
  666.10 +X-LIC-LOCATION:Africa/Abidjan
  666.11 +BEGIN:STANDARD
  666.12 +TZOFFSETFROM:-001608
  666.13 +TZOFFSETTO:+0000
  666.14 +TZNAME:GMT
  666.15 +DTSTART:19120101T000000
  666.16 +RDATE:19120101T000000
  666.17 +END:STANDARD
  666.18 +END:VTIMEZONE
  666.19 +END:VCALENDAR
   667.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   667.2 +++ b/src/zoneinfo/Africa/Accra.ics	Tue Feb 10 18:12:00 2015 +0100
   667.3 @@ -0,0 +1,42 @@
   667.4 +BEGIN:VCALENDAR
   667.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   667.6 +VERSION:2.0
   667.7 +BEGIN:VTIMEZONE
   667.8 +TZID:Africa/Accra
   667.9 +TZURL:http://tzurl.org/zoneinfo/Africa/Accra
  667.10 +X-LIC-LOCATION:Africa/Accra
  667.11 +BEGIN:STANDARD
  667.12 +TZOFFSETFROM:-000052
  667.13 +TZOFFSETTO:+0000
  667.14 +TZNAME:GMT
  667.15 +DTSTART:19180101T000000
  667.16 +RDATE:19180101T000000
  667.17 +END:STANDARD
  667.18 +BEGIN:DAYLIGHT
  667.19 +TZOFFSETFROM:+0000
  667.20 +TZOFFSETTO:+0020
  667.21 +TZNAME:GHST
  667.22 +DTSTART:19360901T000000
  667.23 +RDATE:19360901T000000
  667.24 +RDATE:19370901T000000
  667.25 +RDATE:19380901T000000
  667.26 +RDATE:19390901T000000
  667.27 +RDATE:19400901T000000
  667.28 +RDATE:19410901T000000
  667.29 +RDATE:19420901T000000
  667.30 +END:DAYLIGHT
  667.31 +BEGIN:STANDARD
  667.32 +TZOFFSETFROM:+0020
  667.33 +TZOFFSETTO:+0000
  667.34 +TZNAME:GMT
  667.35 +DTSTART:19361231T000000
  667.36 +RDATE:19361231T000000
  667.37 +RDATE:19371231T000000
  667.38 +RDATE:19381231T000000
  667.39 +RDATE:19391231T000000
  667.40 +RDATE:19401231T000000
  667.41 +RDATE:19411231T000000
  667.42 +RDATE:19421231T000000
  667.43 +END:STANDARD
  667.44 +END:VTIMEZONE
  667.45 +END:VCALENDAR
   668.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   668.2 +++ b/src/zoneinfo/Africa/Addis_Ababa.ics	Tue Feb 10 18:12:00 2015 +0100
   668.3 @@ -0,0 +1,23 @@
   668.4 +BEGIN:VCALENDAR
   668.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   668.6 +VERSION:2.0
   668.7 +BEGIN:VTIMEZONE
   668.8 +TZID:Africa/Addis_Ababa
   668.9 +TZURL:http://tzurl.org/zoneinfo/Africa/Addis_Ababa
  668.10 +X-LIC-LOCATION:Africa/Addis_Ababa
  668.11 +BEGIN:STANDARD
  668.12 +TZOFFSETFROM:+023448
  668.13 +TZOFFSETTO:+023520
  668.14 +TZNAME:ADMT
  668.15 +DTSTART:18700101T000000
  668.16 +RDATE:18700101T000000
  668.17 +END:STANDARD
  668.18 +BEGIN:STANDARD
  668.19 +TZOFFSETFROM:+023520
  668.20 +TZOFFSETTO:+0300
  668.21 +TZNAME:EAT
  668.22 +DTSTART:19360505T000000
  668.23 +RDATE:19360505T000000
  668.24 +END:STANDARD
  668.25 +END:VTIMEZONE
  668.26 +END:VCALENDAR
   669.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   669.2 +++ b/src/zoneinfo/Africa/Algiers.ics	Tue Feb 10 18:12:00 2015 +0100
   669.3 @@ -0,0 +1,91 @@
   669.4 +BEGIN:VCALENDAR
   669.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   669.6 +VERSION:2.0
   669.7 +BEGIN:VTIMEZONE
   669.8 +TZID:Africa/Algiers
   669.9 +TZURL:http://tzurl.org/zoneinfo/Africa/Algiers
  669.10 +X-LIC-LOCATION:Africa/Algiers
  669.11 +BEGIN:STANDARD
  669.12 +TZOFFSETFROM:+001212
  669.13 +TZOFFSETTO:+000921
  669.14 +TZNAME:PMT
  669.15 +DTSTART:18910315T000100
  669.16 +RDATE:18910315T000100
  669.17 +END:STANDARD
  669.18 +BEGIN:STANDARD
  669.19 +TZOFFSETFROM:+000921
  669.20 +TZOFFSETTO:+0000
  669.21 +TZNAME:WET
  669.22 +DTSTART:19110311T000000
  669.23 +RDATE:19110311T000000
  669.24 +END:STANDARD
  669.25 +BEGIN:DAYLIGHT
  669.26 +TZOFFSETFROM:+0000
  669.27 +TZOFFSETTO:+0100
  669.28 +TZNAME:WEST
  669.29 +DTSTART:19160614T230000
  669.30 +RDATE:19160614T230000
  669.31 +RDATE:19170324T230000
  669.32 +RDATE:19180309T230000
  669.33 +RDATE:19190301T230000
  669.34 +RDATE:19200214T230000
  669.35 +RDATE:19210314T230000
  669.36 +RDATE:19390911T230000
  669.37 +RDATE:19710425T230000
  669.38 +RDATE:19770506T000000
  669.39 +RDATE:19800425T000000
  669.40 +END:DAYLIGHT
  669.41 +BEGIN:STANDARD
  669.42 +TZOFFSETFROM:+0100
  669.43 +TZOFFSETTO:+0000
  669.44 +TZNAME:WET
  669.45 +DTSTART:19161002T000000
  669.46 +RDATE:19161002T000000
  669.47 +RDATE:19171008T000000
  669.48 +RDATE:19181007T000000
  669.49 +RDATE:19191006T000000
  669.50 +RDATE:19201024T000000
  669.51 +RDATE:19210622T000000
  669.52 +RDATE:19391119T010000
  669.53 +RDATE:19461007T000000
  669.54 +RDATE:19630414T000000
  669.55 +RDATE:19710927T000000
  669.56 +RDATE:19791026T000000
  669.57 +RDATE:19801031T020000
  669.58 +END:STANDARD
  669.59 +BEGIN:STANDARD
  669.60 +TZOFFSETFROM:+0000
  669.61 +TZOFFSETTO:+0100
  669.62 +TZNAME:CET
  669.63 +DTSTART:19400225T020000
  669.64 +RDATE:19400225T020000
  669.65 +RDATE:19560129T000000
  669.66 +RDATE:19810501T000000
  669.67 +END:STANDARD
  669.68 +BEGIN:DAYLIGHT
  669.69 +TZOFFSETFROM:+0100
  669.70 +TZOFFSETTO:+0200
  669.71 +TZNAME:CEST
  669.72 +DTSTART:19440403T020000
  669.73 +RDATE:19440403T020000
  669.74 +RDATE:19450402T020000
  669.75 +RDATE:19780324T010000
  669.76 +END:DAYLIGHT
  669.77 +BEGIN:STANDARD
  669.78 +TZOFFSETFROM:+0200
  669.79 +TZOFFSETTO:+0100
  669.80 +TZNAME:CET
  669.81 +DTSTART:19441008T020000
  669.82 +RDATE:19441008T020000
  669.83 +RDATE:19450916T010000
  669.84 +RDATE:19780922T030000
  669.85 +END:STANDARD
  669.86 +BEGIN:STANDARD
  669.87 +TZOFFSETFROM:+0100
  669.88 +TZOFFSETTO:+0100
  669.89 +TZNAME:CET
  669.90 +DTSTART:19771021T000000
  669.91 +RDATE:19771021T000000
  669.92 +END:STANDARD
  669.93 +END:VTIMEZONE
  669.94 +END:VCALENDAR
   670.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   670.2 +++ b/src/zoneinfo/Africa/Asmara.ics	Tue Feb 10 18:12:00 2015 +0100
   670.3 @@ -0,0 +1,30 @@
   670.4 +BEGIN:VCALENDAR
   670.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   670.6 +VERSION:2.0
   670.7 +BEGIN:VTIMEZONE
   670.8 +TZID:Africa/Asmara
   670.9 +TZURL:http://tzurl.org/zoneinfo/Africa/Asmara
  670.10 +X-LIC-LOCATION:Africa/Asmara
  670.11 +BEGIN:STANDARD
  670.12 +TZOFFSETFROM:+023532
  670.13 +TZOFFSETTO:+023532
  670.14 +TZNAME:AMT
  670.15 +DTSTART:18700101T000000
  670.16 +RDATE:18700101T000000
  670.17 +END:STANDARD
  670.18 +BEGIN:STANDARD
  670.19 +TZOFFSETFROM:+023532
  670.20 +TZOFFSETTO:+023520
  670.21 +TZNAME:ADMT
  670.22 +DTSTART:18900101T000000
  670.23 +RDATE:18900101T000000
  670.24 +END:STANDARD
  670.25 +BEGIN:STANDARD
  670.26 +TZOFFSETFROM:+023520
  670.27 +TZOFFSETTO:+0300
  670.28 +TZNAME:EAT
  670.29 +DTSTART:19360505T000000
  670.30 +RDATE:19360505T000000
  670.31 +END:STANDARD
  670.32 +END:VTIMEZONE
  670.33 +END:VCALENDAR
   671.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   671.2 +++ b/src/zoneinfo/Africa/Bamako.ics	Tue Feb 10 18:12:00 2015 +0100
   671.3 @@ -0,0 +1,30 @@
   671.4 +BEGIN:VCALENDAR
   671.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   671.6 +VERSION:2.0
   671.7 +BEGIN:VTIMEZONE
   671.8 +TZID:Africa/Bamako
   671.9 +TZURL:http://tzurl.org/zoneinfo/Africa/Bamako
  671.10 +X-LIC-LOCATION:Africa/Bamako
  671.11 +BEGIN:STANDARD
  671.12 +TZOFFSETFROM:-0032
  671.13 +TZOFFSETTO:+0000
  671.14 +TZNAME:GMT
  671.15 +DTSTART:19120101T000000
  671.16 +RDATE:19120101T000000
  671.17 +END:STANDARD
  671.18 +BEGIN:STANDARD
  671.19 +TZOFFSETFROM:+0000
  671.20 +TZOFFSETTO:-0100
  671.21 +TZNAME:WAT
  671.22 +DTSTART:19340226T000000
  671.23 +RDATE:19340226T000000
  671.24 +END:STANDARD
  671.25 +BEGIN:STANDARD
  671.26 +TZOFFSETFROM:-0100
  671.27 +TZOFFSETTO:+0000
  671.28 +TZNAME:GMT
  671.29 +DTSTART:19600620T000000
  671.30 +RDATE:19600620T000000
  671.31 +END:STANDARD
  671.32 +END:VTIMEZONE
  671.33 +END:VCALENDAR
   672.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   672.2 +++ b/src/zoneinfo/Africa/Bangui.ics	Tue Feb 10 18:12:00 2015 +0100
   672.3 @@ -0,0 +1,16 @@
   672.4 +BEGIN:VCALENDAR
   672.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   672.6 +VERSION:2.0
   672.7 +BEGIN:VTIMEZONE
   672.8 +TZID:Africa/Bangui
   672.9 +TZURL:http://tzurl.org/zoneinfo/Africa/Bangui
  672.10 +X-LIC-LOCATION:Africa/Bangui
  672.11 +BEGIN:STANDARD
  672.12 +TZOFFSETFROM:+011420
  672.13 +TZOFFSETTO:+0100
  672.14 +TZNAME:WAT
  672.15 +DTSTART:19120101T000000
  672.16 +RDATE:19120101T000000
  672.17 +END:STANDARD
  672.18 +END:VTIMEZONE
  672.19 +END:VCALENDAR
   673.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   673.2 +++ b/src/zoneinfo/Africa/Banjul.ics	Tue Feb 10 18:12:00 2015 +0100
   673.3 @@ -0,0 +1,30 @@
   673.4 +BEGIN:VCALENDAR
   673.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   673.6 +VERSION:2.0
   673.7 +BEGIN:VTIMEZONE
   673.8 +TZID:Africa/Banjul
   673.9 +TZURL:http://tzurl.org/zoneinfo/Africa/Banjul
  673.10 +X-LIC-LOCATION:Africa/Banjul
  673.11 +BEGIN:STANDARD
  673.12 +TZOFFSETFROM:-010636
  673.13 +TZOFFSETTO:-010636
  673.14 +TZNAME:BMT
  673.15 +DTSTART:19120101T000000
  673.16 +RDATE:19120101T000000
  673.17 +END:STANDARD
  673.18 +BEGIN:STANDARD
  673.19 +TZOFFSETFROM:-010636
  673.20 +TZOFFSETTO:-0100
  673.21 +TZNAME:WAT
  673.22 +DTSTART:19350101T000000
  673.23 +RDATE:19350101T000000
  673.24 +END:STANDARD
  673.25 +BEGIN:STANDARD
  673.26 +TZOFFSETFROM:-0100
  673.27 +TZOFFSETTO:+0000
  673.28 +TZNAME:GMT
  673.29 +DTSTART:19640101T000000
  673.30 +RDATE:19640101T000000
  673.31 +END:STANDARD
  673.32 +END:VTIMEZONE
  673.33 +END:VCALENDAR
   674.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   674.2 +++ b/src/zoneinfo/Africa/Bissau.ics	Tue Feb 10 18:12:00 2015 +0100
   674.3 @@ -0,0 +1,23 @@
   674.4 +BEGIN:VCALENDAR
   674.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   674.6 +VERSION:2.0
   674.7 +BEGIN:VTIMEZONE
   674.8 +TZID:Africa/Bissau
   674.9 +TZURL:http://tzurl.org/zoneinfo/Africa/Bissau
  674.10 +X-LIC-LOCATION:Africa/Bissau
  674.11 +BEGIN:STANDARD
  674.12 +TZOFFSETFROM:-010220
  674.13 +TZOFFSETTO:-0100
  674.14 +TZNAME:WAT
  674.15 +DTSTART:19110526T000000
  674.16 +RDATE:19110526T000000
  674.17 +END:STANDARD
  674.18 +BEGIN:STANDARD
  674.19 +TZOFFSETFROM:-0100
  674.20 +TZOFFSETTO:+0000
  674.21 +TZNAME:GMT
  674.22 +DTSTART:19750101T000000
  674.23 +RDATE:19750101T000000
  674.24 +END:STANDARD
  674.25 +END:VTIMEZONE
  674.26 +END:VCALENDAR
   675.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   675.2 +++ b/src/zoneinfo/Africa/Blantyre.ics	Tue Feb 10 18:12:00 2015 +0100
   675.3 @@ -0,0 +1,16 @@
   675.4 +BEGIN:VCALENDAR
   675.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   675.6 +VERSION:2.0
   675.7 +BEGIN:VTIMEZONE
   675.8 +TZID:Africa/Blantyre
   675.9 +TZURL:http://tzurl.org/zoneinfo/Africa/Blantyre
  675.10 +X-LIC-LOCATION:Africa/Blantyre
  675.11 +BEGIN:STANDARD
  675.12 +TZOFFSETFROM:+0220
  675.13 +TZOFFSETTO:+0200
  675.14 +TZNAME:CAT
  675.15 +DTSTART:19030301T000000
  675.16 +RDATE:19030301T000000
  675.17 +END:STANDARD
  675.18 +END:VTIMEZONE
  675.19 +END:VCALENDAR
   676.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   676.2 +++ b/src/zoneinfo/Africa/Brazzaville.ics	Tue Feb 10 18:12:00 2015 +0100
   676.3 @@ -0,0 +1,16 @@
   676.4 +BEGIN:VCALENDAR
   676.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   676.6 +VERSION:2.0
   676.7 +BEGIN:VTIMEZONE
   676.8 +TZID:Africa/Brazzaville
   676.9 +TZURL:http://tzurl.org/zoneinfo/Africa/Brazzaville
  676.10 +X-LIC-LOCATION:Africa/Brazzaville
  676.11 +BEGIN:STANDARD
  676.12 +TZOFFSETFROM:+010108
  676.13 +TZOFFSETTO:+0100
  676.14 +TZNAME:WAT
  676.15 +DTSTART:19120101T000000
  676.16 +RDATE:19120101T000000
  676.17 +END:STANDARD
  676.18 +END:VTIMEZONE
  676.19 +END:VCALENDAR
   677.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   677.2 +++ b/src/zoneinfo/Africa/Bujumbura.ics	Tue Feb 10 18:12:00 2015 +0100
   677.3 @@ -0,0 +1,16 @@
   677.4 +BEGIN:VCALENDAR
   677.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   677.6 +VERSION:2.0
   677.7 +BEGIN:VTIMEZONE
   677.8 +TZID:Africa/Bujumbura
   677.9 +TZURL:http://tzurl.org/zoneinfo/Africa/Bujumbura
  677.10 +X-LIC-LOCATION:Africa/Bujumbura
  677.11 +BEGIN:STANDARD
  677.12 +TZOFFSETFROM:+015728
  677.13 +TZOFFSETTO:+0200
  677.14 +TZNAME:CAT
  677.15 +DTSTART:18900101T000000
  677.16 +RDATE:18900101T000000
  677.17 +END:STANDARD
  677.18 +END:VTIMEZONE
  677.19 +END:VCALENDAR
   678.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   678.2 +++ b/src/zoneinfo/Africa/Cairo.ics	Tue Feb 10 18:12:00 2015 +0100
   678.3 @@ -0,0 +1,150 @@
   678.4 +BEGIN:VCALENDAR
   678.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   678.6 +VERSION:2.0
   678.7 +BEGIN:VTIMEZONE
   678.8 +TZID:Africa/Cairo
   678.9 +TZURL:http://tzurl.org/zoneinfo/Africa/Cairo
  678.10 +X-LIC-LOCATION:Africa/Cairo
  678.11 +BEGIN:STANDARD
  678.12 +TZOFFSETFROM:+0205
  678.13 +TZOFFSETTO:+0200
  678.14 +TZNAME:EET
  678.15 +DTSTART:19001001T000000
  678.16 +RDATE:19001001T000000
  678.17 +END:STANDARD
  678.18 +BEGIN:DAYLIGHT
  678.19 +TZOFFSETFROM:+0200
  678.20 +TZOFFSETTO:+0300
  678.21 +TZNAME:EEST
  678.22 +DTSTART:19400715T000000
  678.23 +RDATE:19400715T000000
  678.24 +RDATE:19410415T000000
  678.25 +RDATE:19420401T000000
  678.26 +RDATE:19430401T000000
  678.27 +RDATE:19440401T000000
  678.28 +RDATE:19450416T000000
  678.29 +RDATE:19570510T000000
  678.30 +RDATE:19580501T000000
  678.31 +RDATE:19590501T010000
  678.32 +RDATE:19600501T010000
  678.33 +RDATE:19610501T010000
  678.34 +RDATE:19620501T010000
  678.35 +RDATE:19630501T010000
  678.36 +RDATE:19640501T010000
  678.37 +RDATE:19650501T010000
  678.38 +RDATE:19660501T010000
  678.39 +RDATE:19670501T010000
  678.40 +RDATE:19680501T010000
  678.41 +RDATE:19690501T010000
  678.42 +RDATE:19700501T010000
  678.43 +RDATE:19710501T010000
  678.44 +RDATE:19720501T010000
  678.45 +RDATE:19730501T010000
  678.46 +RDATE:19740501T010000
  678.47 +RDATE:19750501T010000
  678.48 +RDATE:19760501T010000
  678.49 +RDATE:19770501T010000
  678.50 +RDATE:19780501T010000
  678.51 +RDATE:19790501T010000
  678.52 +RDATE:19800501T010000
  678.53 +RDATE:19810501T010000
  678.54 +RDATE:19820725T010000
  678.55 +RDATE:19830712T010000
  678.56 +RDATE:19840501T010000
  678.57 +RDATE:19850501T010000
  678.58 +RDATE:19860501T010000
  678.59 +RDATE:19870501T010000
  678.60 +RDATE:19880501T010000
  678.61 +RDATE:19890506T010000
  678.62 +RDATE:19900501T010000
  678.63 +RDATE:19910501T010000
  678.64 +RDATE:19920501T010000
  678.65 +RDATE:19930501T010000
  678.66 +RDATE:19940501T010000
  678.67 +RDATE:19950428T000000
  678.68 +RDATE:19960426T000000
  678.69 +RDATE:19970425T000000
  678.70 +RDATE:19980424T000000
  678.71 +RDATE:19990430T000000
  678.72 +RDATE:20000428T000000
  678.73 +RDATE:20010427T000000
  678.74 +RDATE:20020426T000000
  678.75 +RDATE:20030425T000000
  678.76 +RDATE:20040430T000000
  678.77 +RDATE:20050429T000000
  678.78 +RDATE:20060428T000000
  678.79 +RDATE:20070427T000000
  678.80 +RDATE:20080425T000000
  678.81 +RDATE:20090424T000000
  678.82 +RDATE:20100430T000000
  678.83 +RDATE:20100910T000000
  678.84 +END:DAYLIGHT
  678.85 +BEGIN:STANDARD
  678.86 +TZOFFSETFROM:+0300
  678.87 +TZOFFSETTO:+0200
  678.88 +TZNAME:EET
  678.89 +DTSTART:19401001T000000
  678.90 +RDATE:19401001T000000
  678.91 +RDATE:19410916T000000
  678.92 +RDATE:19421027T000000
  678.93 +RDATE:19431101T000000
  678.94 +RDATE:19441101T000000
  678.95 +RDATE:19451101T000000
  678.96 +RDATE:19571001T000000
  678.97 +RDATE:19581001T000000
  678.98 +RDATE:19590930T030000
  678.99 +RDATE:19600930T030000
 678.100 +RDATE:19610930T030000
 678.101 +RDATE:19620930T030000
 678.102 +RDATE:19630930T030000
 678.103 +RDATE:19640930T030000
 678.104 +RDATE:19650930T030000
 678.105 +RDATE:19661001T030000
 678.106 +RDATE:19671001T030000
 678.107 +RDATE:19681001T030000
 678.108 +RDATE:19691001T030000
 678.109 +RDATE:19701001T030000
 678.110 +RDATE:19711001T030000
 678.111 +RDATE:19721001T030000
 678.112 +RDATE:19731001T030000
 678.113 +RDATE:19741001T030000
 678.114 +RDATE:19751001T030000
 678.115 +RDATE:19761001T030000
 678.116 +RDATE:19771001T030000
 678.117 +RDATE:19781001T030000
 678.118 +RDATE:19791001T030000
 678.119 +RDATE:19801001T030000
 678.120 +RDATE:19811001T030000
 678.121 +RDATE:19821001T030000
 678.122 +RDATE:19831001T030000
 678.123 +RDATE:19841001T030000
 678.124 +RDATE:19851001T030000
 678.125 +RDATE:19861001T030000
 678.126 +RDATE:19871001T030000
 678.127 +RDATE:19881001T030000
 678.128 +RDATE:19891001T030000
 678.129 +RDATE:19901001T030000
 678.130 +RDATE:19911001T030000
 678.131 +RDATE:19921001T030000
 678.132 +RDATE:19931001T030000
 678.133 +RDATE:19941001T030000
 678.134 +RDATE:19950929T000000
 678.135 +RDATE:19960927T000000
 678.136 +RDATE:19970926T000000
 678.137 +RDATE:19980925T000000
 678.138 +RDATE:19991001T000000
 678.139 +RDATE:20000929T000000
 678.140 +RDATE:20010928T000000
 678.141 +RDATE:20020927T000000
 678.142 +RDATE:20030926T000000
 678.143 +RDATE:20041001T000000
 678.144 +RDATE:20050930T000000
 678.145 +RDATE:20060922T000000
 678.146 +RDATE:20070907T000000
 678.147 +RDATE:20080829T000000
 678.148 +RDATE:20090821T000000
 678.149 +RDATE:20100811T000000
 678.150 +RDATE:20101001T000000
 678.151 +END:STANDARD
 678.152 +END:VTIMEZONE
 678.153 +END:VCALENDAR
   679.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   679.2 +++ b/src/zoneinfo/Africa/Casablanca.ics	Tue Feb 10 18:12:00 2015 +0100
   679.3 @@ -0,0 +1,60 @@
   679.4 +BEGIN:VCALENDAR
   679.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   679.6 +VERSION:2.0
   679.7 +BEGIN:VTIMEZONE
   679.8 +TZID:Africa/Casablanca
   679.9 +TZURL:http://tzurl.org/zoneinfo/Africa/Casablanca
  679.10 +X-LIC-LOCATION:Africa/Casablanca
  679.11 +BEGIN:STANDARD
  679.12 +TZOFFSETFROM:-003020
  679.13 +TZOFFSETTO:+0000
  679.14 +TZNAME:WET
  679.15 +DTSTART:19131026T000000
  679.16 +RDATE:19131026T000000
  679.17 +END:STANDARD
  679.18 +BEGIN:DAYLIGHT
  679.19 +TZOFFSETFROM:+0000
  679.20 +TZOFFSETTO:+0100
  679.21 +TZNAME:WEST
  679.22 +DTSTART:19390912T000000
  679.23 +RDATE:19390912T000000
  679.24 +RDATE:19400225T000000
  679.25 +RDATE:19500611T000000
  679.26 +RDATE:19670603T120000
  679.27 +RDATE:19740624T000000
  679.28 +RDATE:19760501T000000
  679.29 +RDATE:19770501T000000
  679.30 +RDATE:19780601T000000
  679.31 +RDATE:20080601T000000
  679.32 +RDATE:20090601T000000
  679.33 +RDATE:20100502T000000
  679.34 +RDATE:20110403T000000
  679.35 +END:DAYLIGHT
  679.36 +BEGIN:STANDARD
  679.37 +TZOFFSETFROM:+0100
  679.38 +TZOFFSETTO:+0000
  679.39 +TZNAME:WET
  679.40 +DTSTART:19391119T000000
  679.41 +RDATE:19391119T000000
  679.42 +RDATE:19451118T000000
  679.43 +RDATE:19501029T000000
  679.44 +RDATE:19671001T000000
  679.45 +RDATE:19740901T000000
  679.46 +RDATE:19760801T000000
  679.47 +RDATE:19770928T000000
  679.48 +RDATE:19780804T000000
  679.49 +RDATE:19860101T000000
  679.50 +RDATE:20080901T000000
  679.51 +RDATE:20090821T000000
  679.52 +RDATE:20100808T000000
  679.53 +RDATE:20110731T000000
  679.54 +END:STANDARD
  679.55 +BEGIN:STANDARD
  679.56 +TZOFFSETFROM:+0000
  679.57 +TZOFFSETTO:+0100
  679.58 +TZNAME:CET
  679.59 +DTSTART:19840316T000000
  679.60 +RDATE:19840316T000000
  679.61 +END:STANDARD
  679.62 +END:VTIMEZONE
  679.63 +END:VCALENDAR
   680.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   680.2 +++ b/src/zoneinfo/Africa/Ceuta.ics	Tue Feb 10 18:12:00 2015 +0100
   680.3 @@ -0,0 +1,100 @@
   680.4 +BEGIN:VCALENDAR
   680.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   680.6 +VERSION:2.0
   680.7 +BEGIN:VTIMEZONE
   680.8 +TZID:Africa/Ceuta
   680.9 +TZURL:http://tzurl.org/zoneinfo/Africa/Ceuta
  680.10 +X-LIC-LOCATION:Africa/Ceuta
  680.11 +BEGIN:DAYLIGHT
  680.12 +TZOFFSETFROM:+0100
  680.13 +TZOFFSETTO:+0200
  680.14 +TZNAME:CEST
  680.15 +DTSTART:19860330T020000
  680.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  680.17 +END:DAYLIGHT
  680.18 +BEGIN:STANDARD
  680.19 +TZOFFSETFROM:+0200
  680.20 +TZOFFSETTO:+0100
  680.21 +TZNAME:CET
  680.22 +DTSTART:19961027T030000
  680.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  680.24 +END:STANDARD
  680.25 +BEGIN:STANDARD
  680.26 +TZOFFSETFROM:-002116
  680.27 +TZOFFSETTO:+0000
  680.28 +TZNAME:WET
  680.29 +DTSTART:19010101T000000
  680.30 +RDATE:19010101T000000
  680.31 +END:STANDARD
  680.32 +BEGIN:DAYLIGHT
  680.33 +TZOFFSETFROM:+0000
  680.34 +TZOFFSETTO:+0100
  680.35 +TZNAME:WEST
  680.36 +DTSTART:19180506T230000
  680.37 +RDATE:19180506T230000
  680.38 +RDATE:19240416T230000
  680.39 +RDATE:19260417T230000
  680.40 +RDATE:19270409T230000
  680.41 +RDATE:19280414T230000
  680.42 +RDATE:19670603T120000
  680.43 +RDATE:19740624T000000
  680.44 +RDATE:19760501T000000
  680.45 +RDATE:19770501T000000
  680.46 +RDATE:19780601T000000
  680.47 +END:DAYLIGHT
  680.48 +BEGIN:STANDARD
  680.49 +TZOFFSETFROM:+0100
  680.50 +TZOFFSETTO:+0000
  680.51 +TZNAME:WET
  680.52 +DTSTART:19181007T230000
  680.53 +RDATE:19181007T230000
  680.54 +RDATE:19241005T000000
  680.55 +RDATE:19261003T000000
  680.56 +RDATE:19271002T000000
  680.57 +RDATE:19281007T000000
  680.58 +RDATE:19671001T000000
  680.59 +RDATE:19740901T000000
  680.60 +RDATE:19760801T000000
  680.61 +RDATE:19770928T000000
  680.62 +RDATE:19780804T000000
  680.63 +END:STANDARD
  680.64 +BEGIN:STANDARD
  680.65 +TZOFFSETFROM:+0000
  680.66 +TZOFFSETTO:+0000
  680.67 +TZNAME:WET
  680.68 +DTSTART:19240101T000000
  680.69 +RDATE:19240101T000000
  680.70 +RDATE:19290101T000000
  680.71 +END:STANDARD
  680.72 +BEGIN:STANDARD
  680.73 +TZOFFSETFROM:+0000
  680.74 +TZOFFSETTO:+0100
  680.75 +TZNAME:CET
  680.76 +DTSTART:19840316T000000
  680.77 +RDATE:19840316T000000
  680.78 +END:STANDARD
  680.79 +BEGIN:STANDARD
  680.80 +TZOFFSETFROM:+0100
  680.81 +TZOFFSETTO:+0100
  680.82 +TZNAME:CET
  680.83 +DTSTART:19860101T000000
  680.84 +RDATE:19860101T000000
  680.85 +END:STANDARD
  680.86 +BEGIN:STANDARD
  680.87 +TZOFFSETFROM:+0200
  680.88 +TZOFFSETTO:+0100
  680.89 +TZNAME:CET
  680.90 +DTSTART:19860928T030000
  680.91 +RDATE:19860928T030000
  680.92 +RDATE:19870927T030000
  680.93 +RDATE:19880925T030000
  680.94 +RDATE:19890924T030000
  680.95 +RDATE:19900930T030000
  680.96 +RDATE:19910929T030000
  680.97 +RDATE:19920927T030000
  680.98 +RDATE:19930926T030000
  680.99 +RDATE:19940925T030000
 680.100 +RDATE:19950924T030000
 680.101 +END:STANDARD
 680.102 +END:VTIMEZONE
 680.103 +END:VCALENDAR
   681.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   681.2 +++ b/src/zoneinfo/Africa/Conakry.ics	Tue Feb 10 18:12:00 2015 +0100
   681.3 @@ -0,0 +1,30 @@
   681.4 +BEGIN:VCALENDAR
   681.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   681.6 +VERSION:2.0
   681.7 +BEGIN:VTIMEZONE
   681.8 +TZID:Africa/Conakry
   681.9 +TZURL:http://tzurl.org/zoneinfo/Africa/Conakry
  681.10 +X-LIC-LOCATION:Africa/Conakry
  681.11 +BEGIN:STANDARD
  681.12 +TZOFFSETFROM:-005452
  681.13 +TZOFFSETTO:+0000
  681.14 +TZNAME:GMT
  681.15 +DTSTART:19120101T000000
  681.16 +RDATE:19120101T000000
  681.17 +END:STANDARD
  681.18 +BEGIN:STANDARD
  681.19 +TZOFFSETFROM:+0000
  681.20 +TZOFFSETTO:-0100
  681.21 +TZNAME:WAT
  681.22 +DTSTART:19340226T000000
  681.23 +RDATE:19340226T000000
  681.24 +END:STANDARD
  681.25 +BEGIN:STANDARD
  681.26 +TZOFFSETFROM:-0100
  681.27 +TZOFFSETTO:+0000
  681.28 +TZNAME:GMT
  681.29 +DTSTART:19600101T000000
  681.30 +RDATE:19600101T000000
  681.31 +END:STANDARD
  681.32 +END:VTIMEZONE
  681.33 +END:VCALENDAR
   682.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   682.2 +++ b/src/zoneinfo/Africa/Dakar.ics	Tue Feb 10 18:12:00 2015 +0100
   682.3 @@ -0,0 +1,23 @@
   682.4 +BEGIN:VCALENDAR
   682.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   682.6 +VERSION:2.0
   682.7 +BEGIN:VTIMEZONE
   682.8 +TZID:Africa/Dakar
   682.9 +TZURL:http://tzurl.org/zoneinfo/Africa/Dakar
  682.10 +X-LIC-LOCATION:Africa/Dakar
  682.11 +BEGIN:STANDARD
  682.12 +TZOFFSETFROM:-010944
  682.13 +TZOFFSETTO:-0100
  682.14 +TZNAME:WAT
  682.15 +DTSTART:19120101T000000
  682.16 +RDATE:19120101T000000
  682.17 +END:STANDARD
  682.18 +BEGIN:STANDARD
  682.19 +TZOFFSETFROM:-0100
  682.20 +TZOFFSETTO:+0000
  682.21 +TZNAME:GMT
  682.22 +DTSTART:19410601T000000
  682.23 +RDATE:19410601T000000
  682.24 +END:STANDARD
  682.25 +END:VTIMEZONE
  682.26 +END:VCALENDAR
   683.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   683.2 +++ b/src/zoneinfo/Africa/Dar_es_Salaam.ics	Tue Feb 10 18:12:00 2015 +0100
   683.3 @@ -0,0 +1,30 @@
   683.4 +BEGIN:VCALENDAR
   683.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   683.6 +VERSION:2.0
   683.7 +BEGIN:VTIMEZONE
   683.8 +TZID:Africa/Dar_es_Salaam
   683.9 +TZURL:http://tzurl.org/zoneinfo/Africa/Dar_es_Salaam
  683.10 +X-LIC-LOCATION:Africa/Dar_es_Salaam
  683.11 +BEGIN:STANDARD
  683.12 +TZOFFSETFROM:+023708
  683.13 +TZOFFSETTO:+0300
  683.14 +TZNAME:EAT
  683.15 +DTSTART:19310101T000000
  683.16 +RDATE:19310101T000000
  683.17 +END:STANDARD
  683.18 +BEGIN:STANDARD
  683.19 +TZOFFSETFROM:+0300
  683.20 +TZOFFSETTO:+0245
  683.21 +TZNAME:BEAUT
  683.22 +DTSTART:19480101T000000
  683.23 +RDATE:19480101T000000
  683.24 +END:STANDARD
  683.25 +BEGIN:STANDARD
  683.26 +TZOFFSETFROM:+0245
  683.27 +TZOFFSETTO:+0300
  683.28 +TZNAME:EAT
  683.29 +DTSTART:19610101T000000
  683.30 +RDATE:19610101T000000
  683.31 +END:STANDARD
  683.32 +END:VTIMEZONE
  683.33 +END:VCALENDAR
   684.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   684.2 +++ b/src/zoneinfo/Africa/Djibouti.ics	Tue Feb 10 18:12:00 2015 +0100
   684.3 @@ -0,0 +1,16 @@
   684.4 +BEGIN:VCALENDAR
   684.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   684.6 +VERSION:2.0
   684.7 +BEGIN:VTIMEZONE
   684.8 +TZID:Africa/Djibouti
   684.9 +TZURL:http://tzurl.org/zoneinfo/Africa/Djibouti
  684.10 +X-LIC-LOCATION:Africa/Djibouti
  684.11 +BEGIN:STANDARD
  684.12 +TZOFFSETFROM:+025236
  684.13 +TZOFFSETTO:+0300
  684.14 +TZNAME:EAT
  684.15 +DTSTART:19110701T000000
  684.16 +RDATE:19110701T000000
  684.17 +END:STANDARD
  684.18 +END:VTIMEZONE
  684.19 +END:VCALENDAR
   685.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   685.2 +++ b/src/zoneinfo/Africa/Douala.ics	Tue Feb 10 18:12:00 2015 +0100
   685.3 @@ -0,0 +1,16 @@
   685.4 +BEGIN:VCALENDAR
   685.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   685.6 +VERSION:2.0
   685.7 +BEGIN:VTIMEZONE
   685.8 +TZID:Africa/Douala
   685.9 +TZURL:http://tzurl.org/zoneinfo/Africa/Douala
  685.10 +X-LIC-LOCATION:Africa/Douala
  685.11 +BEGIN:STANDARD
  685.12 +TZOFFSETFROM:+003848
  685.13 +TZOFFSETTO:+0100
  685.14 +TZNAME:WAT
  685.15 +DTSTART:19120101T000000
  685.16 +RDATE:19120101T000000
  685.17 +END:STANDARD
  685.18 +END:VTIMEZONE
  685.19 +END:VCALENDAR
   686.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   686.2 +++ b/src/zoneinfo/Africa/El_Aaiun.ics	Tue Feb 10 18:12:00 2015 +0100
   686.3 @@ -0,0 +1,23 @@
   686.4 +BEGIN:VCALENDAR
   686.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   686.6 +VERSION:2.0
   686.7 +BEGIN:VTIMEZONE
   686.8 +TZID:Africa/El_Aaiun
   686.9 +TZURL:http://tzurl.org/zoneinfo/Africa/El_Aaiun
  686.10 +X-LIC-LOCATION:Africa/El_Aaiun
  686.11 +BEGIN:STANDARD
  686.12 +TZOFFSETFROM:-005248
  686.13 +TZOFFSETTO:-0100
  686.14 +TZNAME:WAT
  686.15 +DTSTART:19340101T000000
  686.16 +RDATE:19340101T000000
  686.17 +END:STANDARD
  686.18 +BEGIN:STANDARD
  686.19 +TZOFFSETFROM:-0100
  686.20 +TZOFFSETTO:+0000
  686.21 +TZNAME:WET
  686.22 +DTSTART:19760414T000000
  686.23 +RDATE:19760414T000000
  686.24 +END:STANDARD
  686.25 +END:VTIMEZONE
  686.26 +END:VCALENDAR
   687.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   687.2 +++ b/src/zoneinfo/Africa/Freetown.ics	Tue Feb 10 18:12:00 2015 +0100
   687.3 @@ -0,0 +1,82 @@
   687.4 +BEGIN:VCALENDAR
   687.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   687.6 +VERSION:2.0
   687.7 +BEGIN:VTIMEZONE
   687.8 +TZID:Africa/Freetown
   687.9 +TZURL:http://tzurl.org/zoneinfo/Africa/Freetown
  687.10 +X-LIC-LOCATION:Africa/Freetown
  687.11 +BEGIN:STANDARD
  687.12 +TZOFFSETFROM:-0053
  687.13 +TZOFFSETTO:-0053
  687.14 +TZNAME:FMT
  687.15 +DTSTART:18820101T000000
  687.16 +RDATE:18820101T000000
  687.17 +END:STANDARD
  687.18 +BEGIN:STANDARD
  687.19 +TZOFFSETFROM:-0053
  687.20 +TZOFFSETTO:-0100
  687.21 +TZNAME:WAT
  687.22 +DTSTART:19130601T000000
  687.23 +RDATE:19130601T000000
  687.24 +END:STANDARD
  687.25 +BEGIN:DAYLIGHT
  687.26 +TZOFFSETFROM:-0100
  687.27 +TZOFFSETTO:-0020
  687.28 +TZNAME:SLST
  687.29 +DTSTART:19350601T000000
  687.30 +RDATE:19350601T000000
  687.31 +RDATE:19360601T000000
  687.32 +RDATE:19370601T000000
  687.33 +RDATE:19380601T000000
  687.34 +RDATE:19390601T000000
  687.35 +RDATE:19400601T000000
  687.36 +RDATE:19410601T000000
  687.37 +RDATE:19420601T000000
  687.38 +END:DAYLIGHT
  687.39 +BEGIN:STANDARD
  687.40 +TZOFFSETFROM:-0020
  687.41 +TZOFFSETTO:-0100
  687.42 +TZNAME:WAT
  687.43 +DTSTART:19351001T000000
  687.44 +RDATE:19351001T000000
  687.45 +RDATE:19361001T000000
  687.46 +RDATE:19371001T000000
  687.47 +RDATE:19381001T000000
  687.48 +RDATE:19391001T000000
  687.49 +RDATE:19401001T000000
  687.50 +RDATE:19411001T000000
  687.51 +RDATE:19421001T000000
  687.52 +END:STANDARD
  687.53 +BEGIN:STANDARD
  687.54 +TZOFFSETFROM:-0100
  687.55 +TZOFFSETTO:+0000
  687.56 +TZNAME:GMT
  687.57 +DTSTART:19570101T000000
  687.58 +RDATE:19570101T000000
  687.59 +END:STANDARD
  687.60 +BEGIN:DAYLIGHT
  687.61 +TZOFFSETFROM:+0000
  687.62 +TZOFFSETTO:+0100
  687.63 +TZNAME:SLST
  687.64 +DTSTART:19570601T000000
  687.65 +RDATE:19570601T000000
  687.66 +RDATE:19580601T000000
  687.67 +RDATE:19590601T000000
  687.68 +RDATE:19600601T000000
  687.69 +RDATE:19610601T000000
  687.70 +RDATE:19620601T000000
  687.71 +END:DAYLIGHT
  687.72 +BEGIN:STANDARD
  687.73 +TZOFFSETFROM:+0100
  687.74 +TZOFFSETTO:+0000
  687.75 +TZNAME:GMT
  687.76 +DTSTART:19570901T000000
  687.77 +RDATE:19570901T000000
  687.78 +RDATE:19580901T000000
  687.79 +RDATE:19590901T000000
  687.80 +RDATE:19600901T000000
  687.81 +RDATE:19610901T000000
  687.82 +RDATE:19620901T000000
  687.83 +END:STANDARD
  687.84 +END:VTIMEZONE
  687.85 +END:VCALENDAR
   688.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   688.2 +++ b/src/zoneinfo/Africa/Gaborone.ics	Tue Feb 10 18:12:00 2015 +0100
   688.3 @@ -0,0 +1,30 @@
   688.4 +BEGIN:VCALENDAR
   688.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   688.6 +VERSION:2.0
   688.7 +BEGIN:VTIMEZONE
   688.8 +TZID:Africa/Gaborone
   688.9 +TZURL:http://tzurl.org/zoneinfo/Africa/Gaborone
  688.10 +X-LIC-LOCATION:Africa/Gaborone
  688.11 +BEGIN:STANDARD
  688.12 +TZOFFSETFROM:+014340
  688.13 +TZOFFSETTO:+0200
  688.14 +TZNAME:CAT
  688.15 +DTSTART:18850101T000000
  688.16 +RDATE:18850101T000000
  688.17 +END:STANDARD
  688.18 +BEGIN:DAYLIGHT
  688.19 +TZOFFSETFROM:+0200
  688.20 +TZOFFSETTO:+0300
  688.21 +TZNAME:CAST
  688.22 +DTSTART:19430919T020000
  688.23 +RDATE:19430919T020000
  688.24 +END:DAYLIGHT
  688.25 +BEGIN:STANDARD
  688.26 +TZOFFSETFROM:+0300
  688.27 +TZOFFSETTO:+0200
  688.28 +TZNAME:CAT
  688.29 +DTSTART:19440319T020000
  688.30 +RDATE:19440319T020000
  688.31 +END:STANDARD
  688.32 +END:VTIMEZONE
  688.33 +END:VCALENDAR
   689.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   689.2 +++ b/src/zoneinfo/Africa/Harare.ics	Tue Feb 10 18:12:00 2015 +0100
   689.3 @@ -0,0 +1,16 @@
   689.4 +BEGIN:VCALENDAR
   689.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   689.6 +VERSION:2.0
   689.7 +BEGIN:VTIMEZONE
   689.8 +TZID:Africa/Harare
   689.9 +TZURL:http://tzurl.org/zoneinfo/Africa/Harare
  689.10 +X-LIC-LOCATION:Africa/Harare
  689.11 +BEGIN:STANDARD
  689.12 +TZOFFSETFROM:+020412
  689.13 +TZOFFSETTO:+0200
  689.14 +TZNAME:CAT
  689.15 +DTSTART:19030301T000000
  689.16 +RDATE:19030301T000000
  689.17 +END:STANDARD
  689.18 +END:VTIMEZONE
  689.19 +END:VCALENDAR
   690.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   690.2 +++ b/src/zoneinfo/Africa/Johannesburg.ics	Tue Feb 10 18:12:00 2015 +0100
   690.3 @@ -0,0 +1,39 @@
   690.4 +BEGIN:VCALENDAR
   690.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   690.6 +VERSION:2.0
   690.7 +BEGIN:VTIMEZONE
   690.8 +TZID:Africa/Johannesburg
   690.9 +TZURL:http://tzurl.org/zoneinfo/Africa/Johannesburg
  690.10 +X-LIC-LOCATION:Africa/Johannesburg
  690.11 +BEGIN:STANDARD
  690.12 +TZOFFSETFROM:+0152
  690.13 +TZOFFSETTO:+0130
  690.14 +TZNAME:SAST
  690.15 +DTSTART:18920208T000000
  690.16 +RDATE:18920208T000000
  690.17 +END:STANDARD
  690.18 +BEGIN:STANDARD
  690.19 +TZOFFSETFROM:+0130
  690.20 +TZOFFSETTO:+0200
  690.21 +TZNAME:SAST
  690.22 +DTSTART:19030301T000000
  690.23 +RDATE:19030301T000000
  690.24 +END:STANDARD
  690.25 +BEGIN:DAYLIGHT
  690.26 +TZOFFSETFROM:+0200
  690.27 +TZOFFSETTO:+0300
  690.28 +TZNAME:SAST
  690.29 +DTSTART:19420920T020000
  690.30 +RDATE:19420920T020000
  690.31 +RDATE:19430919T020000
  690.32 +END:DAYLIGHT
  690.33 +BEGIN:STANDARD
  690.34 +TZOFFSETFROM:+0300
  690.35 +TZOFFSETTO:+0200
  690.36 +TZNAME:SAST
  690.37 +DTSTART:19430321T020000
  690.38 +RDATE:19430321T020000
  690.39 +RDATE:19440319T020000
  690.40 +END:STANDARD
  690.41 +END:VTIMEZONE
  690.42 +END:VCALENDAR
   691.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   691.2 +++ b/src/zoneinfo/Africa/Juba.ics	Tue Feb 10 18:12:00 2015 +0100
   691.3 @@ -0,0 +1,67 @@
   691.4 +BEGIN:VCALENDAR
   691.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   691.6 +VERSION:2.0
   691.7 +BEGIN:VTIMEZONE
   691.8 +TZID:Africa/Juba
   691.9 +TZURL:http://tzurl.org/zoneinfo/Africa/Juba
  691.10 +X-LIC-LOCATION:Africa/Juba
  691.11 +BEGIN:STANDARD
  691.12 +TZOFFSETFROM:+020624
  691.13 +TZOFFSETTO:+0200
  691.14 +TZNAME:CAT
  691.15 +DTSTART:19310101T000000
  691.16 +RDATE:19310101T000000
  691.17 +END:STANDARD
  691.18 +BEGIN:DAYLIGHT
  691.19 +TZOFFSETFROM:+0200
  691.20 +TZOFFSETTO:+0300
  691.21 +TZNAME:CAST
  691.22 +DTSTART:19700501T000000
  691.23 +RDATE:19700501T000000
  691.24 +RDATE:19710430T000000
  691.25 +RDATE:19720430T000000
  691.26 +RDATE:19730429T000000
  691.27 +RDATE:19740428T000000
  691.28 +RDATE:19750427T000000
  691.29 +RDATE:19760425T000000
  691.30 +RDATE:19770424T000000
  691.31 +RDATE:19780430T000000
  691.32 +RDATE:19790429T000000
  691.33 +RDATE:19800427T000000
  691.34 +RDATE:19810426T000000
  691.35 +RDATE:19820425T000000
  691.36 +RDATE:19830424T000000
  691.37 +RDATE:19840429T000000
  691.38 +RDATE:19850428T000000
  691.39 +END:DAYLIGHT
  691.40 +BEGIN:STANDARD
  691.41 +TZOFFSETFROM:+0300
  691.42 +TZOFFSETTO:+0200
  691.43 +TZNAME:CAT
  691.44 +DTSTART:19701015T000000
  691.45 +RDATE:19701015T000000
  691.46 +RDATE:19711015T000000
  691.47 +RDATE:19721015T000000
  691.48 +RDATE:19731015T000000
  691.49 +RDATE:19741015T000000
  691.50 +RDATE:19751015T000000
  691.51 +RDATE:19761015T000000
  691.52 +RDATE:19771015T000000
  691.53 +RDATE:19781015T000000
  691.54 +RDATE:19791015T000000
  691.55 +RDATE:19801015T000000
  691.56 +RDATE:19811015T000000
  691.57 +RDATE:19821015T000000
  691.58 +RDATE:19831015T000000
  691.59 +RDATE:19841015T000000
  691.60 +RDATE:19851015T000000
  691.61 +END:STANDARD
  691.62 +BEGIN:STANDARD
  691.63 +TZOFFSETFROM:+0200
  691.64 +TZOFFSETTO:+0300
  691.65 +TZNAME:EAT
  691.66 +DTSTART:20000115T120000
  691.67 +RDATE:20000115T120000
  691.68 +END:STANDARD
  691.69 +END:VTIMEZONE
  691.70 +END:VCALENDAR
   692.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   692.2 +++ b/src/zoneinfo/Africa/Kampala.ics	Tue Feb 10 18:12:00 2015 +0100
   692.3 @@ -0,0 +1,37 @@
   692.4 +BEGIN:VCALENDAR
   692.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   692.6 +VERSION:2.0
   692.7 +BEGIN:VTIMEZONE
   692.8 +TZID:Africa/Kampala
   692.9 +TZURL:http://tzurl.org/zoneinfo/Africa/Kampala
  692.10 +X-LIC-LOCATION:Africa/Kampala
  692.11 +BEGIN:STANDARD
  692.12 +TZOFFSETFROM:+020940
  692.13 +TZOFFSETTO:+0300
  692.14 +TZNAME:EAT
  692.15 +DTSTART:19280701T000000
  692.16 +RDATE:19280701T000000
  692.17 +END:STANDARD
  692.18 +BEGIN:STANDARD
  692.19 +TZOFFSETFROM:+0300
  692.20 +TZOFFSETTO:+0230
  692.21 +TZNAME:BEAT
  692.22 +DTSTART:19300101T000000
  692.23 +RDATE:19300101T000000
  692.24 +END:STANDARD
  692.25 +BEGIN:STANDARD
  692.26 +TZOFFSETFROM:+0230
  692.27 +TZOFFSETTO:+0245
  692.28 +TZNAME:BEAUT
  692.29 +DTSTART:19480101T000000
  692.30 +RDATE:19480101T000000
  692.31 +END:STANDARD
  692.32 +BEGIN:STANDARD
  692.33 +TZOFFSETFROM:+0245
  692.34 +TZOFFSETTO:+0300
  692.35 +TZNAME:EAT
  692.36 +DTSTART:19570101T000000
  692.37 +RDATE:19570101T000000
  692.38 +END:STANDARD
  692.39 +END:VTIMEZONE
  692.40 +END:VCALENDAR
   693.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   693.2 +++ b/src/zoneinfo/Africa/Khartoum.ics	Tue Feb 10 18:12:00 2015 +0100
   693.3 @@ -0,0 +1,67 @@
   693.4 +BEGIN:VCALENDAR
   693.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   693.6 +VERSION:2.0
   693.7 +BEGIN:VTIMEZONE
   693.8 +TZID:Africa/Khartoum
   693.9 +TZURL:http://tzurl.org/zoneinfo/Africa/Khartoum
  693.10 +X-LIC-LOCATION:Africa/Khartoum
  693.11 +BEGIN:STANDARD
  693.12 +TZOFFSETFROM:+021008
  693.13 +TZOFFSETTO:+0200
  693.14 +TZNAME:CAT
  693.15 +DTSTART:19310101T000000
  693.16 +RDATE:19310101T000000
  693.17 +END:STANDARD
  693.18 +BEGIN:DAYLIGHT
  693.19 +TZOFFSETFROM:+0200
  693.20 +TZOFFSETTO:+0300
  693.21 +TZNAME:CAST
  693.22 +DTSTART:19700501T000000
  693.23 +RDATE:19700501T000000
  693.24 +RDATE:19710430T000000
  693.25 +RDATE:19720430T000000
  693.26 +RDATE:19730429T000000
  693.27 +RDATE:19740428T000000
  693.28 +RDATE:19750427T000000
  693.29 +RDATE:19760425T000000
  693.30 +RDATE:19770424T000000
  693.31 +RDATE:19780430T000000
  693.32 +RDATE:19790429T000000
  693.33 +RDATE:19800427T000000
  693.34 +RDATE:19810426T000000
  693.35 +RDATE:19820425T000000
  693.36 +RDATE:19830424T000000
  693.37 +RDATE:19840429T000000
  693.38 +RDATE:19850428T000000
  693.39 +END:DAYLIGHT
  693.40 +BEGIN:STANDARD
  693.41 +TZOFFSETFROM:+0300
  693.42 +TZOFFSETTO:+0200
  693.43 +TZNAME:CAT
  693.44 +DTSTART:19701015T000000
  693.45 +RDATE:19701015T000000
  693.46 +RDATE:19711015T000000
  693.47 +RDATE:19721015T000000
  693.48 +RDATE:19731015T000000
  693.49 +RDATE:19741015T000000
  693.50 +RDATE:19751015T000000
  693.51 +RDATE:19761015T000000
  693.52 +RDATE:19771015T000000
  693.53 +RDATE:19781015T000000
  693.54 +RDATE:19791015T000000
  693.55 +RDATE:19801015T000000
  693.56 +RDATE:19811015T000000
  693.57 +RDATE:19821015T000000
  693.58 +RDATE:19831015T000000
  693.59 +RDATE:19841015T000000
  693.60 +RDATE:19851015T000000
  693.61 +END:STANDARD
  693.62 +BEGIN:STANDARD
  693.63 +TZOFFSETFROM:+0200
  693.64 +TZOFFSETTO:+0300
  693.65 +TZNAME:EAT
  693.66 +DTSTART:20000115T120000
  693.67 +RDATE:20000115T120000
  693.68 +END:STANDARD
  693.69 +END:VTIMEZONE
  693.70 +END:VCALENDAR
   694.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   694.2 +++ b/src/zoneinfo/Africa/Kigali.ics	Tue Feb 10 18:12:00 2015 +0100
   694.3 @@ -0,0 +1,16 @@
   694.4 +BEGIN:VCALENDAR
   694.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   694.6 +VERSION:2.0
   694.7 +BEGIN:VTIMEZONE
   694.8 +TZID:Africa/Kigali
   694.9 +TZURL:http://tzurl.org/zoneinfo/Africa/Kigali
  694.10 +X-LIC-LOCATION:Africa/Kigali
  694.11 +BEGIN:STANDARD
  694.12 +TZOFFSETFROM:+020016
  694.13 +TZOFFSETTO:+0200
  694.14 +TZNAME:CAT
  694.15 +DTSTART:19350601T000000
  694.16 +RDATE:19350601T000000
  694.17 +END:STANDARD
  694.18 +END:VTIMEZONE
  694.19 +END:VCALENDAR
   695.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   695.2 +++ b/src/zoneinfo/Africa/Kinshasa.ics	Tue Feb 10 18:12:00 2015 +0100
   695.3 @@ -0,0 +1,16 @@
   695.4 +BEGIN:VCALENDAR
   695.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   695.6 +VERSION:2.0
   695.7 +BEGIN:VTIMEZONE
   695.8 +TZID:Africa/Kinshasa
   695.9 +TZURL:http://tzurl.org/zoneinfo/Africa/Kinshasa
  695.10 +X-LIC-LOCATION:Africa/Kinshasa
  695.11 +BEGIN:STANDARD
  695.12 +TZOFFSETFROM:+010112
  695.13 +TZOFFSETTO:+0100
  695.14 +TZNAME:WAT
  695.15 +DTSTART:18971109T000000
  695.16 +RDATE:18971109T000000
  695.17 +END:STANDARD
  695.18 +END:VTIMEZONE
  695.19 +END:VCALENDAR
   696.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   696.2 +++ b/src/zoneinfo/Africa/Lagos.ics	Tue Feb 10 18:12:00 2015 +0100
   696.3 @@ -0,0 +1,16 @@
   696.4 +BEGIN:VCALENDAR
   696.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   696.6 +VERSION:2.0
   696.7 +BEGIN:VTIMEZONE
   696.8 +TZID:Africa/Lagos
   696.9 +TZURL:http://tzurl.org/zoneinfo/Africa/Lagos
  696.10 +X-LIC-LOCATION:Africa/Lagos
  696.11 +BEGIN:STANDARD
  696.12 +TZOFFSETFROM:+001336
  696.13 +TZOFFSETTO:+0100
  696.14 +TZNAME:WAT
  696.15 +DTSTART:19190901T000000
  696.16 +RDATE:19190901T000000
  696.17 +END:STANDARD
  696.18 +END:VTIMEZONE
  696.19 +END:VCALENDAR
   697.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   697.2 +++ b/src/zoneinfo/Africa/Libreville.ics	Tue Feb 10 18:12:00 2015 +0100
   697.3 @@ -0,0 +1,16 @@
   697.4 +BEGIN:VCALENDAR
   697.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   697.6 +VERSION:2.0
   697.7 +BEGIN:VTIMEZONE
   697.8 +TZID:Africa/Libreville
   697.9 +TZURL:http://tzurl.org/zoneinfo/Africa/Libreville
  697.10 +X-LIC-LOCATION:Africa/Libreville
  697.11 +BEGIN:STANDARD
  697.12 +TZOFFSETFROM:+003748
  697.13 +TZOFFSETTO:+0100
  697.14 +TZNAME:WAT
  697.15 +DTSTART:19120101T000000
  697.16 +RDATE:19120101T000000
  697.17 +END:STANDARD
  697.18 +END:VTIMEZONE
  697.19 +END:VCALENDAR
   698.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   698.2 +++ b/src/zoneinfo/Africa/Lome.ics	Tue Feb 10 18:12:00 2015 +0100
   698.3 @@ -0,0 +1,16 @@
   698.4 +BEGIN:VCALENDAR
   698.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   698.6 +VERSION:2.0
   698.7 +BEGIN:VTIMEZONE
   698.8 +TZID:Africa/Lome
   698.9 +TZURL:http://tzurl.org/zoneinfo/Africa/Lome
  698.10 +X-LIC-LOCATION:Africa/Lome
  698.11 +BEGIN:STANDARD
  698.12 +TZOFFSETFROM:+000452
  698.13 +TZOFFSETTO:+0000
  698.14 +TZNAME:GMT
  698.15 +DTSTART:18930101T000000
  698.16 +RDATE:18930101T000000
  698.17 +END:STANDARD
  698.18 +END:VTIMEZONE
  698.19 +END:VCALENDAR
   699.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   699.2 +++ b/src/zoneinfo/Africa/Luanda.ics	Tue Feb 10 18:12:00 2015 +0100
   699.3 @@ -0,0 +1,23 @@
   699.4 +BEGIN:VCALENDAR
   699.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   699.6 +VERSION:2.0
   699.7 +BEGIN:VTIMEZONE
   699.8 +TZID:Africa/Luanda
   699.9 +TZURL:http://tzurl.org/zoneinfo/Africa/Luanda
  699.10 +X-LIC-LOCATION:Africa/Luanda
  699.11 +BEGIN:STANDARD
  699.12 +TZOFFSETFROM:+005256
  699.13 +TZOFFSETTO:+005204
  699.14 +TZNAME:AOT
  699.15 +DTSTART:18920101T000000
  699.16 +RDATE:18920101T000000
  699.17 +END:STANDARD
  699.18 +BEGIN:STANDARD
  699.19 +TZOFFSETFROM:+005204
  699.20 +TZOFFSETTO:+0100
  699.21 +TZNAME:WAT
  699.22 +DTSTART:19110526T000000
  699.23 +RDATE:19110526T000000
  699.24 +END:STANDARD
  699.25 +END:VTIMEZONE
  699.26 +END:VCALENDAR
   700.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   700.2 +++ b/src/zoneinfo/Africa/Lubumbashi.ics	Tue Feb 10 18:12:00 2015 +0100
   700.3 @@ -0,0 +1,16 @@
   700.4 +BEGIN:VCALENDAR
   700.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   700.6 +VERSION:2.0
   700.7 +BEGIN:VTIMEZONE
   700.8 +TZID:Africa/Lubumbashi
   700.9 +TZURL:http://tzurl.org/zoneinfo/Africa/Lubumbashi
  700.10 +X-LIC-LOCATION:Africa/Lubumbashi
  700.11 +BEGIN:STANDARD
  700.12 +TZOFFSETFROM:+014952
  700.13 +TZOFFSETTO:+0200
  700.14 +TZNAME:CAT
  700.15 +DTSTART:18971109T000000
  700.16 +RDATE:18971109T000000
  700.17 +END:STANDARD
  700.18 +END:VTIMEZONE
  700.19 +END:VCALENDAR
   701.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   701.2 +++ b/src/zoneinfo/Africa/Lusaka.ics	Tue Feb 10 18:12:00 2015 +0100
   701.3 @@ -0,0 +1,16 @@
   701.4 +BEGIN:VCALENDAR
   701.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   701.6 +VERSION:2.0
   701.7 +BEGIN:VTIMEZONE
   701.8 +TZID:Africa/Lusaka
   701.9 +TZURL:http://tzurl.org/zoneinfo/Africa/Lusaka
  701.10 +X-LIC-LOCATION:Africa/Lusaka
  701.11 +BEGIN:STANDARD
  701.12 +TZOFFSETFROM:+015308
  701.13 +TZOFFSETTO:+0200
  701.14 +TZNAME:CAT
  701.15 +DTSTART:19030301T000000
  701.16 +RDATE:19030301T000000
  701.17 +END:STANDARD
  701.18 +END:VTIMEZONE
  701.19 +END:VCALENDAR
   702.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   702.2 +++ b/src/zoneinfo/Africa/Malabo.ics	Tue Feb 10 18:12:00 2015 +0100
   702.3 @@ -0,0 +1,23 @@
   702.4 +BEGIN:VCALENDAR
   702.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   702.6 +VERSION:2.0
   702.7 +BEGIN:VTIMEZONE
   702.8 +TZID:Africa/Malabo
   702.9 +TZURL:http://tzurl.org/zoneinfo/Africa/Malabo
  702.10 +X-LIC-LOCATION:Africa/Malabo
  702.11 +BEGIN:STANDARD
  702.12 +TZOFFSETFROM:+003508
  702.13 +TZOFFSETTO:+0000
  702.14 +TZNAME:GMT
  702.15 +DTSTART:19120101T000000
  702.16 +RDATE:19120101T000000
  702.17 +END:STANDARD
  702.18 +BEGIN:STANDARD
  702.19 +TZOFFSETFROM:+0000
  702.20 +TZOFFSETTO:+0100
  702.21 +TZNAME:WAT
  702.22 +DTSTART:19631215T000000
  702.23 +RDATE:19631215T000000
  702.24 +END:STANDARD
  702.25 +END:VTIMEZONE
  702.26 +END:VCALENDAR
   703.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   703.2 +++ b/src/zoneinfo/Africa/Maputo.ics	Tue Feb 10 18:12:00 2015 +0100
   703.3 @@ -0,0 +1,16 @@
   703.4 +BEGIN:VCALENDAR
   703.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   703.6 +VERSION:2.0
   703.7 +BEGIN:VTIMEZONE
   703.8 +TZID:Africa/Maputo
   703.9 +TZURL:http://tzurl.org/zoneinfo/Africa/Maputo
  703.10 +X-LIC-LOCATION:Africa/Maputo
  703.11 +BEGIN:STANDARD
  703.12 +TZOFFSETFROM:+021020
  703.13 +TZOFFSETTO:+0200
  703.14 +TZNAME:CAT
  703.15 +DTSTART:19030301T000000
  703.16 +RDATE:19030301T000000
  703.17 +END:STANDARD
  703.18 +END:VTIMEZONE
  703.19 +END:VCALENDAR
   704.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   704.2 +++ b/src/zoneinfo/Africa/Maseru.ics	Tue Feb 10 18:12:00 2015 +0100
   704.3 @@ -0,0 +1,30 @@
   704.4 +BEGIN:VCALENDAR
   704.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   704.6 +VERSION:2.0
   704.7 +BEGIN:VTIMEZONE
   704.8 +TZID:Africa/Maseru
   704.9 +TZURL:http://tzurl.org/zoneinfo/Africa/Maseru
  704.10 +X-LIC-LOCATION:Africa/Maseru
  704.11 +BEGIN:STANDARD
  704.12 +TZOFFSETFROM:+0150
  704.13 +TZOFFSETTO:+0200
  704.14 +TZNAME:SAST
  704.15 +DTSTART:19030301T000000
  704.16 +RDATE:19030301T000000
  704.17 +END:STANDARD
  704.18 +BEGIN:DAYLIGHT
  704.19 +TZOFFSETFROM:+0200
  704.20 +TZOFFSETTO:+0300
  704.21 +TZNAME:SAST
  704.22 +DTSTART:19430919T020000
  704.23 +RDATE:19430919T020000
  704.24 +END:DAYLIGHT
  704.25 +BEGIN:STANDARD
  704.26 +TZOFFSETFROM:+0300
  704.27 +TZOFFSETTO:+0200
  704.28 +TZNAME:SAST
  704.29 +DTSTART:19440319T020000
  704.30 +RDATE:19440319T020000
  704.31 +END:STANDARD
  704.32 +END:VTIMEZONE
  704.33 +END:VCALENDAR
   705.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   705.2 +++ b/src/zoneinfo/Africa/Mbabane.ics	Tue Feb 10 18:12:00 2015 +0100
   705.3 @@ -0,0 +1,16 @@
   705.4 +BEGIN:VCALENDAR
   705.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   705.6 +VERSION:2.0
   705.7 +BEGIN:VTIMEZONE
   705.8 +TZID:Africa/Mbabane
   705.9 +TZURL:http://tzurl.org/zoneinfo/Africa/Mbabane
  705.10 +X-LIC-LOCATION:Africa/Mbabane
  705.11 +BEGIN:STANDARD
  705.12 +TZOFFSETFROM:+020424
  705.13 +TZOFFSETTO:+0200
  705.14 +TZNAME:SAST
  705.15 +DTSTART:19030301T000000
  705.16 +RDATE:19030301T000000
  705.17 +END:STANDARD
  705.18 +END:VTIMEZONE
  705.19 +END:VCALENDAR
   706.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   706.2 +++ b/src/zoneinfo/Africa/Mogadishu.ics	Tue Feb 10 18:12:00 2015 +0100
   706.3 @@ -0,0 +1,30 @@
   706.4 +BEGIN:VCALENDAR
   706.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   706.6 +VERSION:2.0
   706.7 +BEGIN:VTIMEZONE
   706.8 +TZID:Africa/Mogadishu
   706.9 +TZURL:http://tzurl.org/zoneinfo/Africa/Mogadishu
  706.10 +X-LIC-LOCATION:Africa/Mogadishu
  706.11 +BEGIN:STANDARD
  706.12 +TZOFFSETFROM:+030128
  706.13 +TZOFFSETTO:+0300
  706.14 +TZNAME:EAT
  706.15 +DTSTART:18931101T000000
  706.16 +RDATE:18931101T000000
  706.17 +END:STANDARD
  706.18 +BEGIN:STANDARD
  706.19 +TZOFFSETFROM:+0300
  706.20 +TZOFFSETTO:+0230
  706.21 +TZNAME:BEAT
  706.22 +DTSTART:19310101T000000
  706.23 +RDATE:19310101T000000
  706.24 +END:STANDARD
  706.25 +BEGIN:STANDARD
  706.26 +TZOFFSETFROM:+0230
  706.27 +TZOFFSETTO:+0300
  706.28 +TZNAME:EAT
  706.29 +DTSTART:19570101T000000
  706.30 +RDATE:19570101T000000
  706.31 +END:STANDARD
  706.32 +END:VTIMEZONE
  706.33 +END:VCALENDAR
   707.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   707.2 +++ b/src/zoneinfo/Africa/Monrovia.ics	Tue Feb 10 18:12:00 2015 +0100
   707.3 @@ -0,0 +1,30 @@
   707.4 +BEGIN:VCALENDAR
   707.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   707.6 +VERSION:2.0
   707.7 +BEGIN:VTIMEZONE
   707.8 +TZID:Africa/Monrovia
   707.9 +TZURL:http://tzurl.org/zoneinfo/Africa/Monrovia
  707.10 +X-LIC-LOCATION:Africa/Monrovia
  707.11 +BEGIN:STANDARD
  707.12 +TZOFFSETFROM:-004308
  707.13 +TZOFFSETTO:-004308
  707.14 +TZNAME:MMT
  707.15 +DTSTART:18820101T000000
  707.16 +RDATE:18820101T000000
  707.17 +END:STANDARD
  707.18 +BEGIN:STANDARD
  707.19 +TZOFFSETFROM:-004308
  707.20 +TZOFFSETTO:-004430
  707.21 +TZNAME:LRT
  707.22 +DTSTART:19190301T000000
  707.23 +RDATE:19190301T000000
  707.24 +END:STANDARD
  707.25 +BEGIN:STANDARD
  707.26 +TZOFFSETFROM:-004430
  707.27 +TZOFFSETTO:+0000
  707.28 +TZNAME:GMT
  707.29 +DTSTART:19720501T000000
  707.30 +RDATE:19720501T000000
  707.31 +END:STANDARD
  707.32 +END:VTIMEZONE
  707.33 +END:VCALENDAR
   708.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   708.2 +++ b/src/zoneinfo/Africa/Nairobi.ics	Tue Feb 10 18:12:00 2015 +0100
   708.3 @@ -0,0 +1,37 @@
   708.4 +BEGIN:VCALENDAR
   708.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   708.6 +VERSION:2.0
   708.7 +BEGIN:VTIMEZONE
   708.8 +TZID:Africa/Nairobi
   708.9 +TZURL:http://tzurl.org/zoneinfo/Africa/Nairobi
  708.10 +X-LIC-LOCATION:Africa/Nairobi
  708.11 +BEGIN:STANDARD
  708.12 +TZOFFSETFROM:+022716
  708.13 +TZOFFSETTO:+0300
  708.14 +TZNAME:EAT
  708.15 +DTSTART:19280701T000000
  708.16 +RDATE:19280701T000000
  708.17 +END:STANDARD
  708.18 +BEGIN:STANDARD
  708.19 +TZOFFSETFROM:+0300
  708.20 +TZOFFSETTO:+0230
  708.21 +TZNAME:BEAT
  708.22 +DTSTART:19300101T000000
  708.23 +RDATE:19300101T000000
  708.24 +END:STANDARD
  708.25 +BEGIN:STANDARD
  708.26 +TZOFFSETFROM:+0230
  708.27 +TZOFFSETTO:+0245
  708.28 +TZNAME:BEAUT
  708.29 +DTSTART:19400101T000000
  708.30 +RDATE:19400101T000000
  708.31 +END:STANDARD
  708.32 +BEGIN:STANDARD
  708.33 +TZOFFSETFROM:+0245
  708.34 +TZOFFSETTO:+0300
  708.35 +TZNAME:EAT
  708.36 +DTSTART:19600101T000000
  708.37 +RDATE:19600101T000000
  708.38 +END:STANDARD
  708.39 +END:VTIMEZONE
  708.40 +END:VCALENDAR
   709.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   709.2 +++ b/src/zoneinfo/Africa/Ndjamena.ics	Tue Feb 10 18:12:00 2015 +0100
   709.3 @@ -0,0 +1,30 @@
   709.4 +BEGIN:VCALENDAR
   709.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   709.6 +VERSION:2.0
   709.7 +BEGIN:VTIMEZONE
   709.8 +TZID:Africa/Ndjamena
   709.9 +TZURL:http://tzurl.org/zoneinfo/Africa/Ndjamena
  709.10 +X-LIC-LOCATION:Africa/Ndjamena
  709.11 +BEGIN:STANDARD
  709.12 +TZOFFSETFROM:+010012
  709.13 +TZOFFSETTO:+0100
  709.14 +TZNAME:WAT
  709.15 +DTSTART:19120101T000000
  709.16 +RDATE:19120101T000000
  709.17 +END:STANDARD
  709.18 +BEGIN:DAYLIGHT
  709.19 +TZOFFSETFROM:+0100
  709.20 +TZOFFSETTO:+0200
  709.21 +TZNAME:WAST
  709.22 +DTSTART:19791014T000000
  709.23 +RDATE:19791014T000000
  709.24 +END:DAYLIGHT
  709.25 +BEGIN:STANDARD
  709.26 +TZOFFSETFROM:+0200
  709.27 +TZOFFSETTO:+0100
  709.28 +TZNAME:WAT
  709.29 +DTSTART:19800308T000000
  709.30 +RDATE:19800308T000000
  709.31 +END:STANDARD
  709.32 +END:VTIMEZONE
  709.33 +END:VCALENDAR
   710.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   710.2 +++ b/src/zoneinfo/Africa/Niamey.ics	Tue Feb 10 18:12:00 2015 +0100
   710.3 @@ -0,0 +1,30 @@
   710.4 +BEGIN:VCALENDAR
   710.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   710.6 +VERSION:2.0
   710.7 +BEGIN:VTIMEZONE
   710.8 +TZID:Africa/Niamey
   710.9 +TZURL:http://tzurl.org/zoneinfo/Africa/Niamey
  710.10 +X-LIC-LOCATION:Africa/Niamey
  710.11 +BEGIN:STANDARD
  710.12 +TZOFFSETFROM:+000828
  710.13 +TZOFFSETTO:-0100
  710.14 +TZNAME:WAT
  710.15 +DTSTART:19120101T000000
  710.16 +RDATE:19120101T000000
  710.17 +END:STANDARD
  710.18 +BEGIN:STANDARD
  710.19 +TZOFFSETFROM:-0100
  710.20 +TZOFFSETTO:+0000
  710.21 +TZNAME:GMT
  710.22 +DTSTART:19340226T000000
  710.23 +RDATE:19340226T000000
  710.24 +END:STANDARD
  710.25 +BEGIN:STANDARD
  710.26 +TZOFFSETFROM:+0000
  710.27 +TZOFFSETTO:+0100
  710.28 +TZNAME:WAT
  710.29 +DTSTART:19600101T000000
  710.30 +RDATE:19600101T000000
  710.31 +END:STANDARD
  710.32 +END:VTIMEZONE
  710.33 +END:VCALENDAR
   711.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   711.2 +++ b/src/zoneinfo/Africa/Nouakchott.ics	Tue Feb 10 18:12:00 2015 +0100
   711.3 @@ -0,0 +1,30 @@
   711.4 +BEGIN:VCALENDAR
   711.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   711.6 +VERSION:2.0
   711.7 +BEGIN:VTIMEZONE
   711.8 +TZID:Africa/Nouakchott
   711.9 +TZURL:http://tzurl.org/zoneinfo/Africa/Nouakchott
  711.10 +X-LIC-LOCATION:Africa/Nouakchott
  711.11 +BEGIN:STANDARD
  711.12 +TZOFFSETFROM:-010348
  711.13 +TZOFFSETTO:+0000
  711.14 +TZNAME:GMT
  711.15 +DTSTART:19120101T000000
  711.16 +RDATE:19120101T000000
  711.17 +END:STANDARD
  711.18 +BEGIN:STANDARD
  711.19 +TZOFFSETFROM:+0000
  711.20 +TZOFFSETTO:-0100
  711.21 +TZNAME:WAT
  711.22 +DTSTART:19340226T000000
  711.23 +RDATE:19340226T000000
  711.24 +END:STANDARD
  711.25 +BEGIN:STANDARD
  711.26 +TZOFFSETFROM:-0100
  711.27 +TZOFFSETTO:+0000
  711.28 +TZNAME:GMT
  711.29 +DTSTART:19601128T000000
  711.30 +RDATE:19601128T000000
  711.31 +END:STANDARD
  711.32 +END:VTIMEZONE
  711.33 +END:VCALENDAR
   712.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   712.2 +++ b/src/zoneinfo/Africa/Ouagadougou.ics	Tue Feb 10 18:12:00 2015 +0100
   712.3 @@ -0,0 +1,16 @@
   712.4 +BEGIN:VCALENDAR
   712.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   712.6 +VERSION:2.0
   712.7 +BEGIN:VTIMEZONE
   712.8 +TZID:Africa/Ouagadougou
   712.9 +TZURL:http://tzurl.org/zoneinfo/Africa/Ouagadougou
  712.10 +X-LIC-LOCATION:Africa/Ouagadougou
  712.11 +BEGIN:STANDARD
  712.12 +TZOFFSETFROM:-000604
  712.13 +TZOFFSETTO:+0000
  712.14 +TZNAME:GMT
  712.15 +DTSTART:19120101T000000
  712.16 +RDATE:19120101T000000
  712.17 +END:STANDARD
  712.18 +END:VTIMEZONE
  712.19 +END:VCALENDAR
   713.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   713.2 +++ b/src/zoneinfo/Africa/Porto-Novo.ics	Tue Feb 10 18:12:00 2015 +0100
   713.3 @@ -0,0 +1,23 @@
   713.4 +BEGIN:VCALENDAR
   713.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   713.6 +VERSION:2.0
   713.7 +BEGIN:VTIMEZONE
   713.8 +TZID:Africa/Porto-Novo
   713.9 +TZURL:http://tzurl.org/zoneinfo/Africa/Porto-Novo
  713.10 +X-LIC-LOCATION:Africa/Porto-Novo
  713.11 +BEGIN:STANDARD
  713.12 +TZOFFSETFROM:+001028
  713.13 +TZOFFSETTO:+0000
  713.14 +TZNAME:GMT
  713.15 +DTSTART:19120101T000000
  713.16 +RDATE:19120101T000000
  713.17 +END:STANDARD
  713.18 +BEGIN:STANDARD
  713.19 +TZOFFSETFROM:+0000
  713.20 +TZOFFSETTO:+0100
  713.21 +TZNAME:WAT
  713.22 +DTSTART:19340226T000000
  713.23 +RDATE:19340226T000000
  713.24 +END:STANDARD
  713.25 +END:VTIMEZONE
  713.26 +END:VCALENDAR
   714.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   714.2 +++ b/src/zoneinfo/Africa/Sao_Tome.ics	Tue Feb 10 18:12:00 2015 +0100
   714.3 @@ -0,0 +1,23 @@
   714.4 +BEGIN:VCALENDAR
   714.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   714.6 +VERSION:2.0
   714.7 +BEGIN:VTIMEZONE
   714.8 +TZID:Africa/Sao_Tome
   714.9 +TZURL:http://tzurl.org/zoneinfo/Africa/Sao_Tome
  714.10 +X-LIC-LOCATION:Africa/Sao_Tome
  714.11 +BEGIN:STANDARD
  714.12 +TZOFFSETFROM:+002656
  714.13 +TZOFFSETTO:-003632
  714.14 +TZNAME:LMT
  714.15 +DTSTART:18840101T000000
  714.16 +RDATE:18840101T000000
  714.17 +END:STANDARD
  714.18 +BEGIN:STANDARD
  714.19 +TZOFFSETFROM:-003632
  714.20 +TZOFFSETTO:+0000
  714.21 +TZNAME:GMT
  714.22 +DTSTART:19120101T000000
  714.23 +RDATE:19120101T000000
  714.24 +END:STANDARD
  714.25 +END:VTIMEZONE
  714.26 +END:VCALENDAR
   715.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   715.2 +++ b/src/zoneinfo/Africa/Tripoli.ics	Tue Feb 10 18:12:00 2015 +0100
   715.3 @@ -0,0 +1,68 @@
   715.4 +BEGIN:VCALENDAR
   715.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   715.6 +VERSION:2.0
   715.7 +BEGIN:VTIMEZONE
   715.8 +TZID:Africa/Tripoli
   715.9 +TZURL:http://tzurl.org/zoneinfo/Africa/Tripoli
  715.10 +X-LIC-LOCATION:Africa/Tripoli
  715.11 +BEGIN:STANDARD
  715.12 +TZOFFSETFROM:+005244
  715.13 +TZOFFSETTO:+0100
  715.14 +TZNAME:CET
  715.15 +DTSTART:19200101T000000
  715.16 +RDATE:19200101T000000
  715.17 +END:STANDARD
  715.18 +BEGIN:DAYLIGHT
  715.19 +TZOFFSETFROM:+0100
  715.20 +TZOFFSETTO:+0200
  715.21 +TZNAME:CEST
  715.22 +DTSTART:19511014T020000
  715.23 +RDATE:19511014T020000
  715.24 +RDATE:19531009T020000
  715.25 +RDATE:19550930T000000
  715.26 +RDATE:19820401T000000
  715.27 +RDATE:19830401T000000
  715.28 +RDATE:19840401T000000
  715.29 +RDATE:19850406T000000
  715.30 +RDATE:19860404T000000
  715.31 +RDATE:19870401T000000
  715.32 +RDATE:19880401T000000
  715.33 +RDATE:19890401T000000
  715.34 +RDATE:19970404T000000
  715.35 +END:DAYLIGHT
  715.36 +BEGIN:STANDARD
  715.37 +TZOFFSETFROM:+0200
  715.38 +TZOFFSETTO:+0100
  715.39 +TZNAME:CET
  715.40 +DTSTART:19520101T000000
  715.41 +RDATE:19520101T000000
  715.42 +RDATE:19540101T000000
  715.43 +RDATE:19560101T000000
  715.44 +RDATE:19820101T000000
  715.45 +RDATE:19821001T000000
  715.46 +RDATE:19831001T000000
  715.47 +RDATE:19841001T000000
  715.48 +RDATE:19851001T000000
  715.49 +RDATE:19861003T000000
  715.50 +RDATE:19871001T000000
  715.51 +RDATE:19881001T000000
  715.52 +RDATE:19891001T000000
  715.53 +RDATE:19960930T000000
  715.54 +END:STANDARD
  715.55 +BEGIN:STANDARD
  715.56 +TZOFFSETFROM:+0100
  715.57 +TZOFFSETTO:+0200
  715.58 +TZNAME:EET
  715.59 +DTSTART:19590101T000000
  715.60 +RDATE:19590101T000000
  715.61 +RDATE:19900504T000000
  715.62 +END:STANDARD
  715.63 +BEGIN:STANDARD
  715.64 +TZOFFSETFROM:+0200
  715.65 +TZOFFSETTO:+0200
  715.66 +TZNAME:EET
  715.67 +DTSTART:19971004T000000
  715.68 +RDATE:19971004T000000
  715.69 +END:STANDARD
  715.70 +END:VTIMEZONE
  715.71 +END:VCALENDAR
   716.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   716.2 +++ b/src/zoneinfo/Africa/Tunis.ics	Tue Feb 10 18:12:00 2015 +0100
   716.3 @@ -0,0 +1,67 @@
   716.4 +BEGIN:VCALENDAR
   716.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   716.6 +VERSION:2.0
   716.7 +BEGIN:VTIMEZONE
   716.8 +TZID:Africa/Tunis
   716.9 +TZURL:http://tzurl.org/zoneinfo/Africa/Tunis
  716.10 +X-LIC-LOCATION:Africa/Tunis
  716.11 +BEGIN:STANDARD
  716.12 +TZOFFSETFROM:+004044
  716.13 +TZOFFSETTO:+000921
  716.14 +TZNAME:PMT
  716.15 +DTSTART:18810512T000000
  716.16 +RDATE:18810512T000000
  716.17 +END:STANDARD
  716.18 +BEGIN:STANDARD
  716.19 +TZOFFSETFROM:+000921
  716.20 +TZOFFSETTO:+0100
  716.21 +TZNAME:CET
  716.22 +DTSTART:19110311T000000
  716.23 +RDATE:19110311T000000
  716.24 +END:STANDARD
  716.25 +BEGIN:DAYLIGHT
  716.26 +TZOFFSETFROM:+0100
  716.27 +TZOFFSETTO:+0200
  716.28 +TZNAME:CEST
  716.29 +DTSTART:19390415T230000
  716.30 +RDATE:19390415T230000
  716.31 +RDATE:19400225T230000
  716.32 +RDATE:19420309T000000
  716.33 +RDATE:19430329T020000
  716.34 +RDATE:19430425T020000
  716.35 +RDATE:19440403T020000
  716.36 +RDATE:19450402T020000
  716.37 +RDATE:19770430T000000
  716.38 +RDATE:19780501T000000
  716.39 +RDATE:19880601T000000
  716.40 +RDATE:19890326T000000
  716.41 +RDATE:19900501T000000
  716.42 +RDATE:20050501T000000
  716.43 +RDATE:20060326T020000
  716.44 +RDATE:20070325T020000
  716.45 +RDATE:20080330T020000
  716.46 +END:DAYLIGHT
  716.47 +BEGIN:STANDARD
  716.48 +TZOFFSETFROM:+0200
  716.49 +TZOFFSETTO:+0100
  716.50 +TZNAME:CET
  716.51 +DTSTART:19391119T000000
  716.52 +RDATE:19391119T000000
  716.53 +RDATE:19411006T000000
  716.54 +RDATE:19421102T030000
  716.55 +RDATE:19430417T020000
  716.56 +RDATE:19431004T020000
  716.57 +RDATE:19441008T000000
  716.58 +RDATE:19450916T000000
  716.59 +RDATE:19770924T010000
  716.60 +RDATE:19781001T010000
  716.61 +RDATE:19880925T010000
  716.62 +RDATE:19890924T010000
  716.63 +RDATE:19900930T010000
  716.64 +RDATE:20050930T020000
  716.65 +RDATE:20061029T030000
  716.66 +RDATE:20071028T030000
  716.67 +RDATE:20081026T030000
  716.68 +END:STANDARD
  716.69 +END:VTIMEZONE
  716.70 +END:VCALENDAR
   717.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   717.2 +++ b/src/zoneinfo/Africa/Windhoek.ics	Tue Feb 10 18:12:00 2015 +0100
   717.3 @@ -0,0 +1,65 @@
   717.4 +BEGIN:VCALENDAR
   717.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   717.6 +VERSION:2.0
   717.7 +BEGIN:VTIMEZONE
   717.8 +TZID:Africa/Windhoek
   717.9 +TZURL:http://tzurl.org/zoneinfo/Africa/Windhoek
  717.10 +X-LIC-LOCATION:Africa/Windhoek
  717.11 +BEGIN:DAYLIGHT
  717.12 +TZOFFSETFROM:+0100
  717.13 +TZOFFSETTO:+0200
  717.14 +TZNAME:WAST
  717.15 +DTSTART:19940904T020000
  717.16 +RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=1SU
  717.17 +END:DAYLIGHT
  717.18 +BEGIN:STANDARD
  717.19 +TZOFFSETFROM:+0200
  717.20 +TZOFFSETTO:+0100
  717.21 +TZNAME:WAT
  717.22 +DTSTART:19950402T020000
  717.23 +RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU
  717.24 +END:STANDARD
  717.25 +BEGIN:STANDARD
  717.26 +TZOFFSETFROM:+010824
  717.27 +TZOFFSETTO:+0130
  717.28 +TZNAME:SWAT
  717.29 +DTSTART:18920208T000000
  717.30 +RDATE:18920208T000000
  717.31 +END:STANDARD
  717.32 +BEGIN:STANDARD
  717.33 +TZOFFSETFROM:+0130
  717.34 +TZOFFSETTO:+0200
  717.35 +TZNAME:SAST
  717.36 +DTSTART:19030301T000000
  717.37 +RDATE:19030301T000000
  717.38 +END:STANDARD
  717.39 +BEGIN:DAYLIGHT
  717.40 +TZOFFSETFROM:+0200
  717.41 +TZOFFSETTO:+0300
  717.42 +TZNAME:SAST
  717.43 +DTSTART:19420920T020000
  717.44 +RDATE:19420920T020000
  717.45 +END:DAYLIGHT
  717.46 +BEGIN:STANDARD
  717.47 +TZOFFSETFROM:+0300
  717.48 +TZOFFSETTO:+0200
  717.49 +TZNAME:SAST
  717.50 +DTSTART:19430321T020000
  717.51 +RDATE:19430321T020000
  717.52 +END:STANDARD
  717.53 +BEGIN:STANDARD
  717.54 +TZOFFSETFROM:+0200
  717.55 +TZOFFSETTO:+0200
  717.56 +TZNAME:CAT
  717.57 +DTSTART:19900321T000000
  717.58 +RDATE:19900321T000000
  717.59 +END:STANDARD
  717.60 +BEGIN:STANDARD
  717.61 +TZOFFSETFROM:+0200
  717.62 +TZOFFSETTO:+0100
  717.63 +TZNAME:WAT
  717.64 +DTSTART:19940403T000000
  717.65 +RDATE:19940403T000000
  717.66 +END:STANDARD
  717.67 +END:VTIMEZONE
  717.68 +END:VCALENDAR
   718.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   718.2 +++ b/src/zoneinfo/America/Adak.ics	Tue Feb 10 18:12:00 2015 +0100
   718.3 @@ -0,0 +1,187 @@
   718.4 +BEGIN:VCALENDAR
   718.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   718.6 +VERSION:2.0
   718.7 +BEGIN:VTIMEZONE
   718.8 +TZID:America/Adak
   718.9 +TZURL:http://tzurl.org/zoneinfo/America/Adak
  718.10 +X-LIC-LOCATION:America/Adak
  718.11 +BEGIN:DAYLIGHT
  718.12 +TZOFFSETFROM:-1000
  718.13 +TZOFFSETTO:-0900
  718.14 +TZNAME:HADT
  718.15 +DTSTART:20070311T020000
  718.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  718.17 +END:DAYLIGHT
  718.18 +BEGIN:STANDARD
  718.19 +TZOFFSETFROM:-0900
  718.20 +TZOFFSETTO:-1000
  718.21 +TZNAME:HAST
  718.22 +DTSTART:20071104T020000
  718.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  718.24 +END:STANDARD
  718.25 +BEGIN:STANDARD
  718.26 +TZOFFSETFROM:+121321
  718.27 +TZOFFSETTO:-114638
  718.28 +TZNAME:LMT
  718.29 +DTSTART:18671018T000000
  718.30 +RDATE:18671018T000000
  718.31 +END:STANDARD
  718.32 +BEGIN:STANDARD
  718.33 +TZOFFSETFROM:-114638
  718.34 +TZOFFSETTO:-1100
  718.35 +TZNAME:NST
  718.36 +DTSTART:19000820T120000
  718.37 +RDATE:19000820T120000
  718.38 +END:STANDARD
  718.39 +BEGIN:STANDARD
  718.40 +TZOFFSETFROM:-1100
  718.41 +TZOFFSETTO:-1100
  718.42 +TZNAME:NST
  718.43 +DTSTART:19420101T000000
  718.44 +RDATE:19420101T000000
  718.45 +RDATE:19460101T000000
  718.46 +END:STANDARD
  718.47 +BEGIN:DAYLIGHT
  718.48 +TZOFFSETFROM:-1100
  718.49 +TZOFFSETTO:-1000
  718.50 +TZNAME:NWT
  718.51 +DTSTART:19420209T020000
  718.52 +RDATE:19420209T020000
  718.53 +END:DAYLIGHT
  718.54 +BEGIN:DAYLIGHT
  718.55 +TZOFFSETFROM:-1000
  718.56 +TZOFFSETTO:-1000
  718.57 +TZNAME:NPT
  718.58 +DTSTART:19450814T130000
  718.59 +RDATE:19450814T130000
  718.60 +END:DAYLIGHT
  718.61 +BEGIN:STANDARD
  718.62 +TZOFFSETFROM:-1000
  718.63 +TZOFFSETTO:-1100
  718.64 +TZNAME:NST
  718.65 +DTSTART:19450930T020000
  718.66 +RDATE:19450930T020000
  718.67 +END:STANDARD
  718.68 +BEGIN:STANDARD
  718.69 +TZOFFSETFROM:-1100
  718.70 +TZOFFSETTO:-1100
  718.71 +TZNAME:BST
  718.72 +DTSTART:19670401T000000
  718.73 +RDATE:19670401T000000
  718.74 +RDATE:19690101T000000
  718.75 +END:STANDARD
  718.76 +BEGIN:DAYLIGHT
  718.77 +TZOFFSETFROM:-1100
  718.78 +TZOFFSETTO:-1000
  718.79 +TZNAME:BDT
  718.80 +DTSTART:19690427T020000
  718.81 +RDATE:19690427T020000
  718.82 +RDATE:19700426T020000
  718.83 +RDATE:19710425T020000
  718.84 +RDATE:19720430T020000
  718.85 +RDATE:19730429T020000
  718.86 +RDATE:19740106T020000
  718.87 +RDATE:19750223T020000
  718.88 +RDATE:19760425T020000
  718.89 +RDATE:19770424T020000
  718.90 +RDATE:19780430T020000
  718.91 +RDATE:19790429T020000
  718.92 +RDATE:19800427T020000
  718.93 +RDATE:19810426T020000
  718.94 +RDATE:19820425T020000
  718.95 +RDATE:19830424T020000
  718.96 +END:DAYLIGHT
  718.97 +BEGIN:STANDARD
  718.98 +TZOFFSETFROM:-1000
  718.99 +TZOFFSETTO:-1100
 718.100 +TZNAME:BST
 718.101 +DTSTART:19691026T020000
 718.102 +RDATE:19691026T020000
 718.103 +RDATE:19701025T020000
 718.104 +RDATE:19711031T020000
 718.105 +RDATE:19721029T020000
 718.106 +RDATE:19731028T020000
 718.107 +RDATE:19741027T020000
 718.108 +RDATE:19751026T020000
 718.109 +RDATE:19761031T020000
 718.110 +RDATE:19771030T020000
 718.111 +RDATE:19781029T020000
 718.112 +RDATE:19791028T020000
 718.113 +RDATE:19801026T020000
 718.114 +RDATE:19811025T020000
 718.115 +RDATE:19821031T020000
 718.116 +END:STANDARD
 718.117 +BEGIN:STANDARD
 718.118 +TZOFFSETFROM:-1000
 718.119 +TZOFFSETTO:-1000
 718.120 +TZNAME:AHST
 718.121 +DTSTART:19831030T020000
 718.122 +RDATE:19831030T020000
 718.123 +END:STANDARD
 718.124 +BEGIN:STANDARD
 718.125 +TZOFFSETFROM:-1000
 718.126 +TZOFFSETTO:-1000
 718.127 +TZNAME:HAST
 718.128 +DTSTART:19831130T000000
 718.129 +RDATE:19831130T000000
 718.130 +END:STANDARD
 718.131 +BEGIN:DAYLIGHT
 718.132 +TZOFFSETFROM:-1000
 718.133 +TZOFFSETTO:-0900
 718.134 +TZNAME:HADT
 718.135 +DTSTART:19840429T020000
 718.136 +RDATE:19840429T020000
 718.137 +RDATE:19850428T020000
 718.138 +RDATE:19860427T020000
 718.139 +RDATE:19870405T020000
 718.140 +RDATE:19880403T020000
 718.141 +RDATE:19890402T020000
 718.142 +RDATE:19900401T020000
 718.143 +RDATE:19910407T020000
 718.144 +RDATE:19920405T020000
 718.145 +RDATE:19930404T020000
 718.146 +RDATE:19940403T020000
 718.147 +RDATE:19950402T020000
 718.148 +RDATE:19960407T020000
 718.149 +RDATE:19970406T020000
 718.150 +RDATE:19980405T020000
 718.151 +RDATE:19990404T020000
 718.152 +RDATE:20000402T020000
 718.153 +RDATE:20010401T020000
 718.154 +RDATE:20020407T020000
 718.155 +RDATE:20030406T020000
 718.156 +RDATE:20040404T020000
 718.157 +RDATE:20050403T020000
 718.158 +RDATE:20060402T020000
 718.159 +END:DAYLIGHT
 718.160 +BEGIN:STANDARD
 718.161 +TZOFFSETFROM:-0900
 718.162 +TZOFFSETTO:-1000
 718.163 +TZNAME:HAST
 718.164 +DTSTART:19841028T020000
 718.165 +RDATE:19841028T020000
 718.166 +RDATE:19851027T020000
 718.167 +RDATE:19861026T020000
 718.168 +RDATE:19871025T020000
 718.169 +RDATE:19881030T020000
 718.170 +RDATE:19891029T020000
 718.171 +RDATE:19901028T020000
 718.172 +RDATE:19911027T020000
 718.173 +RDATE:19921025T020000
 718.174 +RDATE:19931031T020000
 718.175 +RDATE:19941030T020000
 718.176 +RDATE:19951029T020000
 718.177 +RDATE:19961027T020000
 718.178 +RDATE:19971026T020000
 718.179 +RDATE:19981025T020000
 718.180 +RDATE:19991031T020000
 718.181 +RDATE:20001029T020000
 718.182 +RDATE:20011028T020000
 718.183 +RDATE:20021027T020000
 718.184 +RDATE:20031026T020000
 718.185 +RDATE:20041031T020000
 718.186 +RDATE:20051030T020000
 718.187 +RDATE:20061029T020000
 718.188 +END:STANDARD
 718.189 +END:VTIMEZONE
 718.190 +END:VCALENDAR
   719.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   719.2 +++ b/src/zoneinfo/America/Anchorage.ics	Tue Feb 10 18:12:00 2015 +0100
   719.3 @@ -0,0 +1,187 @@
   719.4 +BEGIN:VCALENDAR
   719.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   719.6 +VERSION:2.0
   719.7 +BEGIN:VTIMEZONE
   719.8 +TZID:America/Anchorage
   719.9 +TZURL:http://tzurl.org/zoneinfo/America/Anchorage
  719.10 +X-LIC-LOCATION:America/Anchorage
  719.11 +BEGIN:DAYLIGHT
  719.12 +TZOFFSETFROM:-0900
  719.13 +TZOFFSETTO:-0800
  719.14 +TZNAME:AKDT
  719.15 +DTSTART:20070311T020000
  719.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  719.17 +END:DAYLIGHT
  719.18 +BEGIN:STANDARD
  719.19 +TZOFFSETFROM:-0800
  719.20 +TZOFFSETTO:-0900
  719.21 +TZNAME:AKST
  719.22 +DTSTART:20071104T020000
  719.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  719.24 +END:STANDARD
  719.25 +BEGIN:STANDARD
  719.26 +TZOFFSETFROM:+140024
  719.27 +TZOFFSETTO:-095936
  719.28 +TZNAME:LMT
  719.29 +DTSTART:18671018T000000
  719.30 +RDATE:18671018T000000
  719.31 +END:STANDARD
  719.32 +BEGIN:STANDARD
  719.33 +TZOFFSETFROM:-095936
  719.34 +TZOFFSETTO:-1000
  719.35 +TZNAME:CAT
  719.36 +DTSTART:19000820T120000
  719.37 +RDATE:19000820T120000
  719.38 +END:STANDARD
  719.39 +BEGIN:STANDARD
  719.40 +TZOFFSETFROM:-1000
  719.41 +TZOFFSETTO:-1000
  719.42 +TZNAME:CAT
  719.43 +DTSTART:19420101T000000
  719.44 +RDATE:19420101T000000
  719.45 +RDATE:19460101T000000
  719.46 +END:STANDARD
  719.47 +BEGIN:DAYLIGHT
  719.48 +TZOFFSETFROM:-1000
  719.49 +TZOFFSETTO:-0900
  719.50 +TZNAME:CAWT
  719.51 +DTSTART:19420209T020000
  719.52 +RDATE:19420209T020000
  719.53 +END:DAYLIGHT
  719.54 +BEGIN:DAYLIGHT
  719.55 +TZOFFSETFROM:-0900
  719.56 +TZOFFSETTO:-0900
  719.57 +TZNAME:CAPT
  719.58 +DTSTART:19450814T140000
  719.59 +RDATE:19450814T140000
  719.60 +END:DAYLIGHT
  719.61 +BEGIN:STANDARD
  719.62 +TZOFFSETFROM:-0900
  719.63 +TZOFFSETTO:-1000
  719.64 +TZNAME:CAT
  719.65 +DTSTART:19450930T020000
  719.66 +RDATE:19450930T020000
  719.67 +END:STANDARD
  719.68 +BEGIN:STANDARD
  719.69 +TZOFFSETFROM:-1000
  719.70 +TZOFFSETTO:-1000
  719.71 +TZNAME:AHST
  719.72 +DTSTART:19670401T000000
  719.73 +RDATE:19670401T000000
  719.74 +RDATE:19690101T000000
  719.75 +END:STANDARD
  719.76 +BEGIN:DAYLIGHT
  719.77 +TZOFFSETFROM:-1000
  719.78 +TZOFFSETTO:-0900
  719.79 +TZNAME:AHDT
  719.80 +DTSTART:19690427T020000
  719.81 +RDATE:19690427T020000
  719.82 +RDATE:19700426T020000
  719.83 +RDATE:19710425T020000
  719.84 +RDATE:19720430T020000
  719.85 +RDATE:19730429T020000
  719.86 +RDATE:19740106T020000
  719.87 +RDATE:19750223T020000
  719.88 +RDATE:19760425T020000
  719.89 +RDATE:19770424T020000
  719.90 +RDATE:19780430T020000
  719.91 +RDATE:19790429T020000
  719.92 +RDATE:19800427T020000
  719.93 +RDATE:19810426T020000
  719.94 +RDATE:19820425T020000
  719.95 +RDATE:19830424T020000
  719.96 +END:DAYLIGHT
  719.97 +BEGIN:STANDARD
  719.98 +TZOFFSETFROM:-0900
  719.99 +TZOFFSETTO:-1000
 719.100 +TZNAME:AHST
 719.101 +DTSTART:19691026T020000
 719.102 +RDATE:19691026T020000
 719.103 +RDATE:19701025T020000
 719.104 +RDATE:19711031T020000
 719.105 +RDATE:19721029T020000
 719.106 +RDATE:19731028T020000
 719.107 +RDATE:19741027T020000
 719.108 +RDATE:19751026T020000
 719.109 +RDATE:19761031T020000
 719.110 +RDATE:19771030T020000
 719.111 +RDATE:19781029T020000
 719.112 +RDATE:19791028T020000
 719.113 +RDATE:19801026T020000
 719.114 +RDATE:19811025T020000
 719.115 +RDATE:19821031T020000
 719.116 +END:STANDARD
 719.117 +BEGIN:STANDARD
 719.118 +TZOFFSETFROM:-0900
 719.119 +TZOFFSETTO:-0900
 719.120 +TZNAME:YST
 719.121 +DTSTART:19831030T020000
 719.122 +RDATE:19831030T020000
 719.123 +END:STANDARD
 719.124 +BEGIN:STANDARD
 719.125 +TZOFFSETFROM:-0900
 719.126 +TZOFFSETTO:-0900
 719.127 +TZNAME:AKST
 719.128 +DTSTART:19831130T000000
 719.129 +RDATE:19831130T000000
 719.130 +END:STANDARD
 719.131 +BEGIN:DAYLIGHT
 719.132 +TZOFFSETFROM:-0900
 719.133 +TZOFFSETTO:-0800
 719.134 +TZNAME:AKDT
 719.135 +DTSTART:19840429T020000
 719.136 +RDATE:19840429T020000
 719.137 +RDATE:19850428T020000
 719.138 +RDATE:19860427T020000
 719.139 +RDATE:19870405T020000
 719.140 +RDATE:19880403T020000
 719.141 +RDATE:19890402T020000
 719.142 +RDATE:19900401T020000
 719.143 +RDATE:19910407T020000
 719.144 +RDATE:19920405T020000
 719.145 +RDATE:19930404T020000
 719.146 +RDATE:19940403T020000
 719.147 +RDATE:19950402T020000
 719.148 +RDATE:19960407T020000
 719.149 +RDATE:19970406T020000
 719.150 +RDATE:19980405T020000
 719.151 +RDATE:19990404T020000
 719.152 +RDATE:20000402T020000
 719.153 +RDATE:20010401T020000
 719.154 +RDATE:20020407T020000
 719.155 +RDATE:20030406T020000
 719.156 +RDATE:20040404T020000
 719.157 +RDATE:20050403T020000
 719.158 +RDATE:20060402T020000
 719.159 +END:DAYLIGHT
 719.160 +BEGIN:STANDARD
 719.161 +TZOFFSETFROM:-0800
 719.162 +TZOFFSETTO:-0900
 719.163 +TZNAME:AKST
 719.164 +DTSTART:19841028T020000
 719.165 +RDATE:19841028T020000
 719.166 +RDATE:19851027T020000
 719.167 +RDATE:19861026T020000
 719.168 +RDATE:19871025T020000
 719.169 +RDATE:19881030T020000
 719.170 +RDATE:19891029T020000
 719.171 +RDATE:19901028T020000
 719.172 +RDATE:19911027T020000
 719.173 +RDATE:19921025T020000
 719.174 +RDATE:19931031T020000
 719.175 +RDATE:19941030T020000
 719.176 +RDATE:19951029T020000
 719.177 +RDATE:19961027T020000
 719.178 +RDATE:19971026T020000
 719.179 +RDATE:19981025T020000
 719.180 +RDATE:19991031T020000
 719.181 +RDATE:20001029T020000
 719.182 +RDATE:20011028T020000
 719.183 +RDATE:20021027T020000
 719.184 +RDATE:20031026T020000
 719.185 +RDATE:20041031T020000
 719.186 +RDATE:20051030T020000
 719.187 +RDATE:20061029T020000
 719.188 +END:STANDARD
 719.189 +END:VTIMEZONE
 719.190 +END:VCALENDAR
   720.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   720.2 +++ b/src/zoneinfo/America/Anguilla.ics	Tue Feb 10 18:12:00 2015 +0100
   720.3 @@ -0,0 +1,16 @@
   720.4 +BEGIN:VCALENDAR
   720.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   720.6 +VERSION:2.0
   720.7 +BEGIN:VTIMEZONE
   720.8 +TZID:America/Anguilla
   720.9 +TZURL:http://tzurl.org/zoneinfo/America/Anguilla
  720.10 +X-LIC-LOCATION:America/Anguilla
  720.11 +BEGIN:STANDARD
  720.12 +TZOFFSETFROM:-041216
  720.13 +TZOFFSETTO:-0400
  720.14 +TZNAME:AST
  720.15 +DTSTART:19120302T000000
  720.16 +RDATE:19120302T000000
  720.17 +END:STANDARD
  720.18 +END:VTIMEZONE
  720.19 +END:VCALENDAR
   721.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   721.2 +++ b/src/zoneinfo/America/Antigua.ics	Tue Feb 10 18:12:00 2015 +0100
   721.3 @@ -0,0 +1,23 @@
   721.4 +BEGIN:VCALENDAR
   721.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   721.6 +VERSION:2.0
   721.7 +BEGIN:VTIMEZONE
   721.8 +TZID:America/Antigua
   721.9 +TZURL:http://tzurl.org/zoneinfo/America/Antigua
  721.10 +X-LIC-LOCATION:America/Antigua
  721.11 +BEGIN:STANDARD
  721.12 +TZOFFSETFROM:-040712
  721.13 +TZOFFSETTO:-0500
  721.14 +TZNAME:EST
  721.15 +DTSTART:19120302T000000
  721.16 +RDATE:19120302T000000
  721.17 +END:STANDARD
  721.18 +BEGIN:STANDARD
  721.19 +TZOFFSETFROM:-0500
  721.20 +TZOFFSETTO:-0400
  721.21 +TZNAME:AST
  721.22 +DTSTART:19510101T000000
  721.23 +RDATE:19510101T000000
  721.24 +END:STANDARD
  721.25 +END:VTIMEZONE
  721.26 +END:VCALENDAR
   722.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   722.2 +++ b/src/zoneinfo/America/Araguaina.ics	Tue Feb 10 18:12:00 2015 +0100
   722.3 @@ -0,0 +1,85 @@
   722.4 +BEGIN:VCALENDAR
   722.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   722.6 +VERSION:2.0
   722.7 +BEGIN:VTIMEZONE
   722.8 +TZID:America/Araguaina
   722.9 +TZURL:http://tzurl.org/zoneinfo/America/Araguaina
  722.10 +X-LIC-LOCATION:America/Araguaina
  722.11 +BEGIN:STANDARD
  722.12 +TZOFFSETFROM:-031248
  722.13 +TZOFFSETTO:-0300
  722.14 +TZNAME:BRT
  722.15 +DTSTART:19140101T000000
  722.16 +RDATE:19140101T000000
  722.17 +END:STANDARD
  722.18 +BEGIN:DAYLIGHT
  722.19 +TZOFFSETFROM:-0300
  722.20 +TZOFFSETTO:-0200
  722.21 +TZNAME:BRST
  722.22 +DTSTART:19311003T110000
  722.23 +RDATE:19311003T110000
  722.24 +RDATE:19321003T000000
  722.25 +RDATE:19491201T000000
  722.26 +RDATE:19501201T000000
  722.27 +RDATE:19511201T000000
  722.28 +RDATE:19521201T000000
  722.29 +RDATE:19631209T000000
  722.30 +RDATE:19650131T000000
  722.31 +RDATE:19651201T000000
  722.32 +RDATE:19661101T000000
  722.33 +RDATE:19671101T000000
  722.34 +RDATE:19851102T000000
  722.35 +RDATE:19861025T000000
  722.36 +RDATE:19871025T000000
  722.37 +RDATE:19881016T000000
  722.38 +RDATE:19891015T000000
  722.39 +RDATE:19951015T000000
  722.40 +RDATE:19961006T000000
  722.41 +RDATE:19971006T000000
  722.42 +RDATE:19981011T000000
  722.43 +RDATE:19991003T000000
  722.44 +RDATE:20001008T000000
  722.45 +RDATE:20011014T000000
  722.46 +RDATE:20021103T000000
  722.47 +END:DAYLIGHT
  722.48 +BEGIN:STANDARD
  722.49 +TZOFFSETFROM:-0200
  722.50 +TZOFFSETTO:-0300
  722.51 +TZNAME:BRT
  722.52 +DTSTART:19320401T000000
  722.53 +RDATE:19320401T000000
  722.54 +RDATE:19330401T000000
  722.55 +RDATE:19500416T010000
  722.56 +RDATE:19510401T000000
  722.57 +RDATE:19520401T000000
  722.58 +RDATE:19530301T000000
  722.59 +RDATE:19640301T000000
  722.60 +RDATE:19650331T000000
  722.61 +RDATE:19660301T000000
  722.62 +RDATE:19670301T000000
  722.63 +RDATE:19680301T000000
  722.64 +RDATE:19860315T000000
  722.65 +RDATE:19870214T000000
  722.66 +RDATE:19880207T000000
  722.67 +RDATE:19890129T000000
  722.68 +RDATE:19900211T000000
  722.69 +RDATE:19960211T000000
  722.70 +RDATE:19970216T000000
  722.71 +RDATE:19980301T000000
  722.72 +RDATE:19990221T000000
  722.73 +RDATE:20000227T000000
  722.74 +RDATE:20010218T000000
  722.75 +RDATE:20020217T000000
  722.76 +RDATE:20030216T000000
  722.77 +END:STANDARD
  722.78 +BEGIN:STANDARD
  722.79 +TZOFFSETFROM:-0300
  722.80 +TZOFFSETTO:-0300
  722.81 +TZNAME:BRT
  722.82 +DTSTART:19900917T000000
  722.83 +RDATE:19900917T000000
  722.84 +RDATE:19950914T000000
  722.85 +RDATE:20030924T000000
  722.86 +END:STANDARD
  722.87 +END:VTIMEZONE
  722.88 +END:VCALENDAR
   723.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   723.2 +++ b/src/zoneinfo/America/Argentina/Buenos_Aires.ics	Tue Feb 10 18:12:00 2015 +0100
   723.3 @@ -0,0 +1,124 @@
   723.4 +BEGIN:VCALENDAR
   723.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   723.6 +VERSION:2.0
   723.7 +BEGIN:VTIMEZONE
   723.8 +TZID:America/Argentina/Buenos_Aires
   723.9 +TZURL:http://tzurl.org/zoneinfo/America/Argentina/Buenos_Aires
  723.10 +X-LIC-LOCATION:America/Argentina/Buenos_Aires
  723.11 +BEGIN:STANDARD
  723.12 +TZOFFSETFROM:-035348
  723.13 +TZOFFSETTO:-041648
  723.14 +TZNAME:CMT
  723.15 +DTSTART:18941031T000000
  723.16 +RDATE:18941031T000000
  723.17 +END:STANDARD
  723.18 +BEGIN:STANDARD
  723.19 +TZOFFSETFROM:-041648
  723.20 +TZOFFSETTO:-0400
  723.21 +TZNAME:ART
  723.22 +DTSTART:19200501T000000
  723.23 +RDATE:19200501T000000
  723.24 +END:STANDARD
  723.25 +BEGIN:DAYLIGHT
  723.26 +TZOFFSETFROM:-0400
  723.27 +TZOFFSETTO:-0300
  723.28 +TZNAME:ARST
  723.29 +DTSTART:19301201T000000
  723.30 +RDATE:19301201T000000
  723.31 +RDATE:19311015T000000
  723.32 +RDATE:19321101T000000
  723.33 +RDATE:19331101T000000
  723.34 +RDATE:19341101T000000
  723.35 +RDATE:19351101T000000
  723.36 +RDATE:19361101T000000
  723.37 +RDATE:19371101T000000
  723.38 +RDATE:19381101T000000
  723.39 +RDATE:19391101T000000
  723.40 +RDATE:19400701T000000
  723.41 +RDATE:19411015T000000
  723.42 +RDATE:19431015T000000
  723.43 +RDATE:19461001T000000
  723.44 +RDATE:19631215T000000
  723.45 +RDATE:19641015T000000
  723.46 +RDATE:19651015T000000
  723.47 +RDATE:19661015T000000
  723.48 +RDATE:19671001T000000
  723.49 +RDATE:19681006T000000
  723.50 +END:DAYLIGHT
  723.51 +BEGIN:STANDARD
  723.52 +TZOFFSETFROM:-0300
  723.53 +TZOFFSETTO:-0400
  723.54 +TZNAME:ART
  723.55 +DTSTART:19310401T000000
  723.56 +RDATE:19310401T000000
  723.57 +RDATE:19320301T000000
  723.58 +RDATE:19330301T000000
  723.59 +RDATE:19340301T000000
  723.60 +RDATE:19350301T000000
  723.61 +RDATE:19360301T000000
  723.62 +RDATE:19370301T000000
  723.63 +RDATE:19380301T000000
  723.64 +RDATE:19390301T000000
  723.65 +RDATE:19400301T000000
  723.66 +RDATE:19410615T000000
  723.67 +RDATE:19430801T000000
  723.68 +RDATE:19460301T000000
  723.69 +RDATE:19631001T000000
  723.70 +RDATE:19640301T000000
  723.71 +RDATE:19650301T000000
  723.72 +RDATE:19660301T000000
  723.73 +RDATE:19670402T000000
  723.74 +RDATE:19680407T000000
  723.75 +RDATE:19690406T000000
  723.76 +END:STANDARD
  723.77 +BEGIN:STANDARD
  723.78 +TZOFFSETFROM:-0400
  723.79 +TZOFFSETTO:-0300
  723.80 +TZNAME:ART
  723.81 +DTSTART:19691005T000000
  723.82 +RDATE:19691005T000000
  723.83 +END:STANDARD
  723.84 +BEGIN:DAYLIGHT
  723.85 +TZOFFSETFROM:-0300
  723.86 +TZOFFSETTO:-0200
  723.87 +TZNAME:ARST
  723.88 +DTSTART:19740123T000000
  723.89 +RDATE:19740123T000000
  723.90 +RDATE:19881201T000000
  723.91 +RDATE:19891015T000000
  723.92 +RDATE:19901021T000000
  723.93 +RDATE:19911020T000000
  723.94 +RDATE:19921018T000000
  723.95 +RDATE:20071230T000000
  723.96 +RDATE:20081019T000000
  723.97 +END:DAYLIGHT
  723.98 +BEGIN:STANDARD
  723.99 +TZOFFSETFROM:-0200
 723.100 +TZOFFSETTO:-0300
 723.101 +TZNAME:ART
 723.102 +DTSTART:19740501T000000
 723.103 +RDATE:19740501T000000
 723.104 +RDATE:19890305T000000
 723.105 +RDATE:19900304T000000
 723.106 +RDATE:19910303T000000
 723.107 +RDATE:19920301T000000
 723.108 +RDATE:19930307T000000
 723.109 +RDATE:20080316T000000
 723.110 +RDATE:20090315T000000
 723.111 +END:STANDARD
 723.112 +BEGIN:DAYLIGHT
 723.113 +TZOFFSETFROM:-0300
 723.114 +TZOFFSETTO:-0300
 723.115 +TZNAME:ARST
 723.116 +DTSTART:19991003T000000
 723.117 +RDATE:19991003T000000
 723.118 +END:DAYLIGHT
 723.119 +BEGIN:STANDARD
 723.120 +TZOFFSETFROM:-0300
 723.121 +TZOFFSETTO:-0300
 723.122 +TZNAME:ART
 723.123 +DTSTART:20000303T000000
 723.124 +RDATE:20000303T000000
 723.125 +END:STANDARD
 723.126 +END:VTIMEZONE
 723.127 +END:VCALENDAR
   724.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   724.2 +++ b/src/zoneinfo/America/Argentina/Catamarca.ics	Tue Feb 10 18:12:00 2015 +0100
   724.3 @@ -0,0 +1,143 @@
   724.4 +BEGIN:VCALENDAR
   724.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   724.6 +VERSION:2.0
   724.7 +BEGIN:VTIMEZONE
   724.8 +TZID:America/Argentina/Catamarca
   724.9 +TZURL:http://tzurl.org/zoneinfo/America/Argentina/Catamarca
  724.10 +X-LIC-LOCATION:America/Argentina/Catamarca
  724.11 +BEGIN:STANDARD
  724.12 +TZOFFSETFROM:-042308
  724.13 +TZOFFSETTO:-041648
  724.14 +TZNAME:CMT
  724.15 +DTSTART:18941031T000000
  724.16 +RDATE:18941031T000000
  724.17 +END:STANDARD
  724.18 +BEGIN:STANDARD
  724.19 +TZOFFSETFROM:-041648
  724.20 +TZOFFSETTO:-0400
  724.21 +TZNAME:ART
  724.22 +DTSTART:19200501T000000
  724.23 +RDATE:19200501T000000
  724.24 +END:STANDARD
  724.25 +BEGIN:DAYLIGHT
  724.26 +TZOFFSETFROM:-0400
  724.27 +TZOFFSETTO:-0300
  724.28 +TZNAME:ARST
  724.29 +DTSTART:19301201T000000
  724.30 +RDATE:19301201T000000
  724.31 +RDATE:19311015T000000
  724.32 +RDATE:19321101T000000
  724.33 +RDATE:19331101T000000
  724.34 +RDATE:19341101T000000
  724.35 +RDATE:19351101T000000
  724.36 +RDATE:19361101T000000
  724.37 +RDATE:19371101T000000
  724.38 +RDATE:19381101T000000
  724.39 +RDATE:19391101T000000
  724.40 +RDATE:19400701T000000
  724.41 +RDATE:19411015T000000
  724.42 +RDATE:19431015T000000
  724.43 +RDATE:19461001T000000
  724.44 +RDATE:19631215T000000
  724.45 +RDATE:19641015T000000
  724.46 +RDATE:19651015T000000
  724.47 +RDATE:19661015T000000
  724.48 +RDATE:19671001T000000
  724.49 +RDATE:19681006T000000
  724.50 +END:DAYLIGHT
  724.51 +BEGIN:STANDARD
  724.52 +TZOFFSETFROM:-0300
  724.53 +TZOFFSETTO:-0400
  724.54 +TZNAME:ART
  724.55 +DTSTART:19310401T000000
  724.56 +RDATE:19310401T000000
  724.57 +RDATE:19320301T000000
  724.58 +RDATE:19330301T000000
  724.59 +RDATE:19340301T000000
  724.60 +RDATE:19350301T000000
  724.61 +RDATE:19360301T000000
  724.62 +RDATE:19370301T000000
  724.63 +RDATE:19380301T000000
  724.64 +RDATE:19390301T000000
  724.65 +RDATE:19400301T000000
  724.66 +RDATE:19410615T000000
  724.67 +RDATE:19430801T000000
  724.68 +RDATE:19460301T000000
  724.69 +RDATE:19631001T000000
  724.70 +RDATE:19640301T000000
  724.71 +RDATE:19650301T000000
  724.72 +RDATE:19660301T000000
  724.73 +RDATE:19670402T000000
  724.74 +RDATE:19680407T000000
  724.75 +RDATE:19690406T000000
  724.76 +END:STANDARD
  724.77 +BEGIN:STANDARD
  724.78 +TZOFFSETFROM:-0400
  724.79 +TZOFFSETTO:-0300
  724.80 +TZNAME:ART
  724.81 +DTSTART:19691005T000000
  724.82 +RDATE:19691005T000000
  724.83 +RDATE:20040620T000000
  724.84 +END:STANDARD
  724.85 +BEGIN:DAYLIGHT
  724.86 +TZOFFSETFROM:-0300
  724.87 +TZOFFSETTO:-0200
  724.88 +TZNAME:ARST
  724.89 +DTSTART:19740123T000000
  724.90 +RDATE:19740123T000000
  724.91 +RDATE:19881201T000000
  724.92 +RDATE:19891015T000000
  724.93 +RDATE:19901021T000000
  724.94 +RDATE:19921018T000000
  724.95 +RDATE:20071230T000000
  724.96 +END:DAYLIGHT
  724.97 +BEGIN:STANDARD
  724.98 +TZOFFSETFROM:-0200
  724.99 +TZOFFSETTO:-0300
 724.100 +TZNAME:ART
 724.101 +DTSTART:19740501T000000
 724.102 +RDATE:19740501T000000
 724.103 +RDATE:19890305T000000
 724.104 +RDATE:19900304T000000
 724.105 +RDATE:19920301T000000
 724.106 +RDATE:19930307T000000
 724.107 +RDATE:20080316T000000
 724.108 +END:STANDARD
 724.109 +BEGIN:STANDARD
 724.110 +TZOFFSETFROM:-0200
 724.111 +TZOFFSETTO:-0400
 724.112 +TZNAME:WART
 724.113 +DTSTART:19910303T000000
 724.114 +RDATE:19910303T000000
 724.115 +END:STANDARD
 724.116 +BEGIN:DAYLIGHT
 724.117 +TZOFFSETFROM:-0400
 724.118 +TZOFFSETTO:-0200
 724.119 +TZNAME:ARST
 724.120 +DTSTART:19911020T000000
 724.121 +RDATE:19911020T000000
 724.122 +END:DAYLIGHT
 724.123 +BEGIN:DAYLIGHT
 724.124 +TZOFFSETFROM:-0300
 724.125 +TZOFFSETTO:-0300
 724.126 +TZNAME:ARST
 724.127 +DTSTART:19991003T000000
 724.128 +RDATE:19991003T000000
 724.129 +END:DAYLIGHT
 724.130 +BEGIN:STANDARD
 724.131 +TZOFFSETFROM:-0300
 724.132 +TZOFFSETTO:-0300
 724.133 +TZNAME:ART
 724.134 +DTSTART:20000303T000000
 724.135 +RDATE:20000303T000000
 724.136 +RDATE:20081018T000000
 724.137 +END:STANDARD
 724.138 +BEGIN:STANDARD
 724.139 +TZOFFSETFROM:-0300
 724.140 +TZOFFSETTO:-0400
 724.141 +TZNAME:WART
 724.142 +DTSTART:20040601T000000
 724.143 +RDATE:20040601T000000
 724.144 +END:STANDARD
 724.145 +END:VTIMEZONE
 724.146 +END:VCALENDAR
   725.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   725.2 +++ b/src/zoneinfo/America/Argentina/Cordoba.ics	Tue Feb 10 18:12:00 2015 +0100
   725.3 @@ -0,0 +1,136 @@
   725.4 +BEGIN:VCALENDAR
   725.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   725.6 +VERSION:2.0
   725.7 +BEGIN:VTIMEZONE
   725.8 +TZID:America/Argentina/Cordoba
   725.9 +TZURL:http://tzurl.org/zoneinfo/America/Argentina/Cordoba
  725.10 +X-LIC-LOCATION:America/Argentina/Cordoba
  725.11 +BEGIN:STANDARD
  725.12 +TZOFFSETFROM:-041648
  725.13 +TZOFFSETTO:-041648
  725.14 +TZNAME:CMT
  725.15 +DTSTART:18941031T000000
  725.16 +RDATE:18941031T000000
  725.17 +END:STANDARD
  725.18 +BEGIN:STANDARD
  725.19 +TZOFFSETFROM:-041648
  725.20 +TZOFFSETTO:-0400
  725.21 +TZNAME:ART
  725.22 +DTSTART:19200501T000000
  725.23 +RDATE:19200501T000000
  725.24 +END:STANDARD
  725.25 +BEGIN:DAYLIGHT
  725.26 +TZOFFSETFROM:-0400
  725.27 +TZOFFSETTO:-0300
  725.28 +TZNAME:ARST
  725.29 +DTSTART:19301201T000000
  725.30 +RDATE:19301201T000000
  725.31 +RDATE:19311015T000000
  725.32 +RDATE:19321101T000000
  725.33 +RDATE:19331101T000000
  725.34 +RDATE:19341101T000000
  725.35 +RDATE:19351101T000000
  725.36 +RDATE:19361101T000000
  725.37 +RDATE:19371101T000000
  725.38 +RDATE:19381101T000000
  725.39 +RDATE:19391101T000000
  725.40 +RDATE:19400701T000000
  725.41 +RDATE:19411015T000000
  725.42 +RDATE:19431015T000000
  725.43 +RDATE:19461001T000000
  725.44 +RDATE:19631215T000000
  725.45 +RDATE:19641015T000000
  725.46 +RDATE:19651015T000000
  725.47 +RDATE:19661015T000000
  725.48 +RDATE:19671001T000000
  725.49 +RDATE:19681006T000000
  725.50 +END:DAYLIGHT
  725.51 +BEGIN:STANDARD
  725.52 +TZOFFSETFROM:-0300
  725.53 +TZOFFSETTO:-0400
  725.54 +TZNAME:ART
  725.55 +DTSTART:19310401T000000
  725.56 +RDATE:19310401T000000
  725.57 +RDATE:19320301T000000
  725.58 +RDATE:19330301T000000
  725.59 +RDATE:19340301T000000
  725.60 +RDATE:19350301T000000
  725.61 +RDATE:19360301T000000
  725.62 +RDATE:19370301T000000
  725.63 +RDATE:19380301T000000
  725.64 +RDATE:19390301T000000
  725.65 +RDATE:19400301T000000
  725.66 +RDATE:19410615T000000
  725.67 +RDATE:19430801T000000
  725.68 +RDATE:19460301T000000
  725.69 +RDATE:19631001T000000
  725.70 +RDATE:19640301T000000
  725.71 +RDATE:19650301T000000
  725.72 +RDATE:19660301T000000
  725.73 +RDATE:19670402T000000
  725.74 +RDATE:19680407T000000
  725.75 +RDATE:19690406T000000
  725.76 +END:STANDARD
  725.77 +BEGIN:STANDARD
  725.78 +TZOFFSETFROM:-0400
  725.79 +TZOFFSETTO:-0300
  725.80 +TZNAME:ART
  725.81 +DTSTART:19691005T000000
  725.82 +RDATE:19691005T000000
  725.83 +END:STANDARD
  725.84 +BEGIN:DAYLIGHT
  725.85 +TZOFFSETFROM:-0300
  725.86 +TZOFFSETTO:-0200
  725.87 +TZNAME:ARST
  725.88 +DTSTART:19740123T000000
  725.89 +RDATE:19740123T000000
  725.90 +RDATE:19881201T000000
  725.91 +RDATE:19891015T000000
  725.92 +RDATE:19901021T000000
  725.93 +RDATE:19921018T000000
  725.94 +RDATE:20071230T000000
  725.95 +RDATE:20081019T000000
  725.96 +END:DAYLIGHT
  725.97 +BEGIN:STANDARD
  725.98 +TZOFFSETFROM:-0200
  725.99 +TZOFFSETTO:-0300
 725.100 +TZNAME:ART
 725.101 +DTSTART:19740501T000000
 725.102 +RDATE:19740501T000000
 725.103 +RDATE:19890305T000000
 725.104 +RDATE:19900304T000000
 725.105 +RDATE:19920301T000000
 725.106 +RDATE:19930307T000000
 725.107 +RDATE:20080316T000000
 725.108 +RDATE:20090315T000000
 725.109 +END:STANDARD
 725.110 +BEGIN:STANDARD
 725.111 +TZOFFSETFROM:-0200
 725.112 +TZOFFSETTO:-0400
 725.113 +TZNAME:WART
 725.114 +DTSTART:19910303T000000
 725.115 +RDATE:19910303T000000
 725.116 +END:STANDARD
 725.117 +BEGIN:DAYLIGHT
 725.118 +TZOFFSETFROM:-0400
 725.119 +TZOFFSETTO:-0200
 725.120 +TZNAME:ARST
 725.121 +DTSTART:19911020T000000
 725.122 +RDATE:19911020T000000
 725.123 +END:DAYLIGHT
 725.124 +BEGIN:DAYLIGHT
 725.125 +TZOFFSETFROM:-0300
 725.126 +TZOFFSETTO:-0300
 725.127 +TZNAME:ARST
 725.128 +DTSTART:19991003T000000
 725.129 +RDATE:19991003T000000
 725.130 +END:DAYLIGHT
 725.131 +BEGIN:STANDARD
 725.132 +TZOFFSETFROM:-0300
 725.133 +TZOFFSETTO:-0300
 725.134 +TZNAME:ART
 725.135 +DTSTART:20000303T000000
 725.136 +RDATE:20000303T000000
 725.137 +END:STANDARD
 725.138 +END:VTIMEZONE
 725.139 +END:VCALENDAR
   726.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   726.2 +++ b/src/zoneinfo/America/Argentina/Jujuy.ics	Tue Feb 10 18:12:00 2015 +0100
   726.3 @@ -0,0 +1,154 @@
   726.4 +BEGIN:VCALENDAR
   726.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   726.6 +VERSION:2.0
   726.7 +BEGIN:VTIMEZONE
   726.8 +TZID:America/Argentina/Jujuy
   726.9 +TZURL:http://tzurl.org/zoneinfo/America/Argentina/Jujuy
  726.10 +X-LIC-LOCATION:America/Argentina/Jujuy
  726.11 +BEGIN:STANDARD
  726.12 +TZOFFSETFROM:-042112
  726.13 +TZOFFSETTO:-041648
  726.14 +TZNAME:CMT
  726.15 +DTSTART:18941031T000000
  726.16 +RDATE:18941031T000000
  726.17 +END:STANDARD
  726.18 +BEGIN:STANDARD
  726.19 +TZOFFSETFROM:-041648
  726.20 +TZOFFSETTO:-0400
  726.21 +TZNAME:ART
  726.22 +DTSTART:19200501T000000
  726.23 +RDATE:19200501T000000
  726.24 +END:STANDARD
  726.25 +BEGIN:DAYLIGHT
  726.26 +TZOFFSETFROM:-0400
  726.27 +TZOFFSETTO:-0300
  726.28 +TZNAME:ARST
  726.29 +DTSTART:19301201T000000
  726.30 +RDATE:19301201T000000
  726.31 +RDATE:19311015T000000
  726.32 +RDATE:19321101T000000
  726.33 +RDATE:19331101T000000
  726.34 +RDATE:19341101T000000
  726.35 +RDATE:19351101T000000
  726.36 +RDATE:19361101T000000
  726.37 +RDATE:19371101T000000
  726.38 +RDATE:19381101T000000
  726.39 +RDATE:19391101T000000
  726.40 +RDATE:19400701T000000
  726.41 +RDATE:19411015T000000
  726.42 +RDATE:19431015T000000
  726.43 +RDATE:19461001T000000
  726.44 +RDATE:19631215T000000
  726.45 +RDATE:19641015T000000
  726.46 +RDATE:19651015T000000
  726.47 +RDATE:19661015T000000
  726.48 +RDATE:19671001T000000
  726.49 +RDATE:19681006T000000
  726.50 +END:DAYLIGHT
  726.51 +BEGIN:STANDARD
  726.52 +TZOFFSETFROM:-0300
  726.53 +TZOFFSETTO:-0400
  726.54 +TZNAME:ART
  726.55 +DTSTART:19310401T000000
  726.56 +RDATE:19310401T000000
  726.57 +RDATE:19320301T000000
  726.58 +RDATE:19330301T000000
  726.59 +RDATE:19340301T000000
  726.60 +RDATE:19350301T000000
  726.61 +RDATE:19360301T000000
  726.62 +RDATE:19370301T000000
  726.63 +RDATE:19380301T000000
  726.64 +RDATE:19390301T000000
  726.65 +RDATE:19400301T000000
  726.66 +RDATE:19410615T000000
  726.67 +RDATE:19430801T000000
  726.68 +RDATE:19460301T000000
  726.69 +RDATE:19631001T000000
  726.70 +RDATE:19640301T000000
  726.71 +RDATE:19650301T000000
  726.72 +RDATE:19660301T000000
  726.73 +RDATE:19670402T000000
  726.74 +RDATE:19680407T000000
  726.75 +RDATE:19690406T000000
  726.76 +END:STANDARD
  726.77 +BEGIN:STANDARD
  726.78 +TZOFFSETFROM:-0400
  726.79 +TZOFFSETTO:-0300
  726.80 +TZNAME:ART
  726.81 +DTSTART:19691005T000000
  726.82 +RDATE:19691005T000000
  726.83 +END:STANDARD
  726.84 +BEGIN:DAYLIGHT
  726.85 +TZOFFSETFROM:-0300
  726.86 +TZOFFSETTO:-0200
  726.87 +TZNAME:ARST
  726.88 +DTSTART:19740123T000000
  726.89 +RDATE:19740123T000000
  726.90 +RDATE:19881201T000000
  726.91 +RDATE:19891015T000000
  726.92 +RDATE:19921018T000000
  726.93 +RDATE:20071230T000000
  726.94 +END:DAYLIGHT
  726.95 +BEGIN:STANDARD
  726.96 +TZOFFSETFROM:-0200
  726.97 +TZOFFSETTO:-0300
  726.98 +TZNAME:ART
  726.99 +DTSTART:19740501T000000
 726.100 +RDATE:19740501T000000
 726.101 +RDATE:19890305T000000
 726.102 +RDATE:19920301T000000
 726.103 +RDATE:19930307T000000
 726.104 +RDATE:20080316T000000
 726.105 +END:STANDARD
 726.106 +BEGIN:STANDARD
 726.107 +TZOFFSETFROM:-0200
 726.108 +TZOFFSETTO:-0400
 726.109 +TZNAME:WART
 726.110 +DTSTART:19900304T000000
 726.111 +RDATE:19900304T000000
 726.112 +END:STANDARD
 726.113 +BEGIN:DAYLIGHT
 726.114 +TZOFFSETFROM:-0400
 726.115 +TZOFFSETTO:-0300
 726.116 +TZNAME:WARST
 726.117 +DTSTART:19901028T000000
 726.118 +RDATE:19901028T000000
 726.119 +END:DAYLIGHT
 726.120 +BEGIN:STANDARD
 726.121 +TZOFFSETFROM:-0300
 726.122 +TZOFFSETTO:-0400
 726.123 +TZNAME:WART
 726.124 +DTSTART:19910317T000000
 726.125 +RDATE:19910317T000000
 726.126 +END:STANDARD
 726.127 +BEGIN:DAYLIGHT
 726.128 +TZOFFSETFROM:-0400
 726.129 +TZOFFSETTO:-0200
 726.130 +TZNAME:ARST
 726.131 +DTSTART:19911006T000000
 726.132 +RDATE:19911006T000000
 726.133 +END:DAYLIGHT
 726.134 +BEGIN:DAYLIGHT
 726.135 +TZOFFSETFROM:-0200
 726.136 +TZOFFSETTO:-0200
 726.137 +TZNAME:ARST
 726.138 +DTSTART:19920101T000000
 726.139 +RDATE:19920101T000000
 726.140 +END:DAYLIGHT
 726.141 +BEGIN:DAYLIGHT
 726.142 +TZOFFSETFROM:-0300
 726.143 +TZOFFSETTO:-0300
 726.144 +TZNAME:ARST
 726.145 +DTSTART:19991003T000000
 726.146 +RDATE:19991003T000000
 726.147 +END:DAYLIGHT
 726.148 +BEGIN:STANDARD
 726.149 +TZOFFSETFROM:-0300
 726.150 +TZOFFSETTO:-0300
 726.151 +TZNAME:ART
 726.152 +DTSTART:20000303T000000
 726.153 +RDATE:20000303T000000
 726.154 +RDATE:20081018T000000
 726.155 +END:STANDARD
 726.156 +END:VTIMEZONE
 726.157 +END:VCALENDAR
   727.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   727.2 +++ b/src/zoneinfo/America/Argentina/La_Rioja.ics	Tue Feb 10 18:12:00 2015 +0100
   727.3 @@ -0,0 +1,138 @@
   727.4 +BEGIN:VCALENDAR
   727.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   727.6 +VERSION:2.0
   727.7 +BEGIN:VTIMEZONE
   727.8 +TZID:America/Argentina/La_Rioja
   727.9 +TZURL:http://tzurl.org/zoneinfo/America/Argentina/La_Rioja
  727.10 +X-LIC-LOCATION:America/Argentina/La_Rioja
  727.11 +BEGIN:STANDARD
  727.12 +TZOFFSETFROM:-042724
  727.13 +TZOFFSETTO:-041648
  727.14 +TZNAME:CMT
  727.15 +DTSTART:18941031T000000
  727.16 +RDATE:18941031T000000
  727.17 +END:STANDARD
  727.18 +BEGIN:STANDARD
  727.19 +TZOFFSETFROM:-041648
  727.20 +TZOFFSETTO:-0400
  727.21 +TZNAME:ART
  727.22 +DTSTART:19200501T000000
  727.23 +RDATE:19200501T000000
  727.24 +END:STANDARD
  727.25 +BEGIN:DAYLIGHT
  727.26 +TZOFFSETFROM:-0400
  727.27 +TZOFFSETTO:-0300
  727.28 +TZNAME:ARST
  727.29 +DTSTART:19301201T000000
  727.30 +RDATE:19301201T000000
  727.31 +RDATE:19311015T000000
  727.32 +RDATE:19321101T000000
  727.33 +RDATE:19331101T000000
  727.34 +RDATE:19341101T000000
  727.35 +RDATE:19351101T000000
  727.36 +RDATE:19361101T000000
  727.37 +RDATE:19371101T000000
  727.38 +RDATE:19381101T000000
  727.39 +RDATE:19391101T000000
  727.40 +RDATE:19400701T000000
  727.41 +RDATE:19411015T000000
  727.42 +RDATE:19431015T000000
  727.43 +RDATE:19461001T000000
  727.44 +RDATE:19631215T000000
  727.45 +RDATE:19641015T000000
  727.46 +RDATE:19651015T000000
  727.47 +RDATE:19661015T000000
  727.48 +RDATE:19671001T000000
  727.49 +RDATE:19681006T000000
  727.50 +END:DAYLIGHT
  727.51 +BEGIN:STANDARD
  727.52 +TZOFFSETFROM:-0300
  727.53 +TZOFFSETTO:-0400
  727.54 +TZNAME:ART
  727.55 +DTSTART:19310401T000000
  727.56 +RDATE:19310401T000000
  727.57 +RDATE:19320301T000000
  727.58 +RDATE:19330301T000000
  727.59 +RDATE:19340301T000000
  727.60 +RDATE:19350301T000000
  727.61 +RDATE:19360301T000000
  727.62 +RDATE:19370301T000000
  727.63 +RDATE:19380301T000000
  727.64 +RDATE:19390301T000000
  727.65 +RDATE:19400301T000000
  727.66 +RDATE:19410615T000000
  727.67 +RDATE:19430801T000000
  727.68 +RDATE:19460301T000000
  727.69 +RDATE:19631001T000000
  727.70 +RDATE:19640301T000000
  727.71 +RDATE:19650301T000000
  727.72 +RDATE:19660301T000000
  727.73 +RDATE:19670402T000000
  727.74 +RDATE:19680407T000000
  727.75 +RDATE:19690406T000000
  727.76 +END:STANDARD
  727.77 +BEGIN:STANDARD
  727.78 +TZOFFSETFROM:-0400
  727.79 +TZOFFSETTO:-0300
  727.80 +TZNAME:ART
  727.81 +DTSTART:19691005T000000
  727.82 +RDATE:19691005T000000
  727.83 +RDATE:19910507T000000
  727.84 +RDATE:20040620T000000
  727.85 +END:STANDARD
  727.86 +BEGIN:DAYLIGHT
  727.87 +TZOFFSETFROM:-0300
  727.88 +TZOFFSETTO:-0200
  727.89 +TZNAME:ARST
  727.90 +DTSTART:19740123T000000
  727.91 +RDATE:19740123T000000
  727.92 +RDATE:19881201T000000
  727.93 +RDATE:19891015T000000
  727.94 +RDATE:19901021T000000
  727.95 +RDATE:19911020T000000
  727.96 +RDATE:19921018T000000
  727.97 +RDATE:20071230T000000
  727.98 +END:DAYLIGHT
  727.99 +BEGIN:STANDARD
 727.100 +TZOFFSETFROM:-0200
 727.101 +TZOFFSETTO:-0300
 727.102 +TZNAME:ART
 727.103 +DTSTART:19740501T000000
 727.104 +RDATE:19740501T000000
 727.105 +RDATE:19890305T000000
 727.106 +RDATE:19900304T000000
 727.107 +RDATE:19920301T000000
 727.108 +RDATE:19930307T000000
 727.109 +RDATE:20080316T000000
 727.110 +END:STANDARD
 727.111 +BEGIN:STANDARD
 727.112 +TZOFFSETFROM:-0200
 727.113 +TZOFFSETTO:-0400
 727.114 +TZNAME:WART
 727.115 +DTSTART:19910301T000000
 727.116 +RDATE:19910301T000000
 727.117 +END:STANDARD
 727.118 +BEGIN:DAYLIGHT
 727.119 +TZOFFSETFROM:-0300
 727.120 +TZOFFSETTO:-0300
 727.121 +TZNAME:ARST
 727.122 +DTSTART:19991003T000000
 727.123 +RDATE:19991003T000000
 727.124 +END:DAYLIGHT
 727.125 +BEGIN:STANDARD
 727.126 +TZOFFSETFROM:-0300
 727.127 +TZOFFSETTO:-0300
 727.128 +TZNAME:ART
 727.129 +DTSTART:20000303T000000
 727.130 +RDATE:20000303T000000
 727.131 +RDATE:20081018T000000
 727.132 +END:STANDARD
 727.133 +BEGIN:STANDARD
 727.134 +TZOFFSETFROM:-0300
 727.135 +TZOFFSETTO:-0400
 727.136 +TZNAME:WART
 727.137 +DTSTART:20040601T000000
 727.138 +RDATE:20040601T000000
 727.139 +END:STANDARD
 727.140 +END:VTIMEZONE
 727.141 +END:VCALENDAR
   728.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   728.2 +++ b/src/zoneinfo/America/Argentina/Mendoza.ics	Tue Feb 10 18:12:00 2015 +0100
   728.3 @@ -0,0 +1,149 @@
   728.4 +BEGIN:VCALENDAR
   728.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   728.6 +VERSION:2.0
   728.7 +BEGIN:VTIMEZONE
   728.8 +TZID:America/Argentina/Mendoza
   728.9 +TZURL:http://tzurl.org/zoneinfo/America/Argentina/Mendoza
  728.10 +X-LIC-LOCATION:America/Argentina/Mendoza
  728.11 +BEGIN:STANDARD
  728.12 +TZOFFSETFROM:-043516
  728.13 +TZOFFSETTO:-041648
  728.14 +TZNAME:CMT
  728.15 +DTSTART:18941031T000000
  728.16 +RDATE:18941031T000000
  728.17 +END:STANDARD
  728.18 +BEGIN:STANDARD
  728.19 +TZOFFSETFROM:-041648
  728.20 +TZOFFSETTO:-0400
  728.21 +TZNAME:ART
  728.22 +DTSTART:19200501T000000
  728.23 +RDATE:19200501T000000
  728.24 +END:STANDARD
  728.25 +BEGIN:DAYLIGHT
  728.26 +TZOFFSETFROM:-0400
  728.27 +TZOFFSETTO:-0300
  728.28 +TZNAME:ARST
  728.29 +DTSTART:19301201T000000
  728.30 +RDATE:19301201T000000
  728.31 +RDATE:19311015T000000
  728.32 +RDATE:19321101T000000
  728.33 +RDATE:19331101T000000
  728.34 +RDATE:19341101T000000
  728.35 +RDATE:19351101T000000
  728.36 +RDATE:19361101T000000
  728.37 +RDATE:19371101T000000
  728.38 +RDATE:19381101T000000
  728.39 +RDATE:19391101T000000
  728.40 +RDATE:19400701T000000
  728.41 +RDATE:19411015T000000
  728.42 +RDATE:19431015T000000
  728.43 +RDATE:19461001T000000
  728.44 +RDATE:19631215T000000
  728.45 +RDATE:19641015T000000
  728.46 +RDATE:19651015T000000
  728.47 +RDATE:19661015T000000
  728.48 +RDATE:19671001T000000
  728.49 +RDATE:19681006T000000
  728.50 +END:DAYLIGHT
  728.51 +BEGIN:STANDARD
  728.52 +TZOFFSETFROM:-0300
  728.53 +TZOFFSETTO:-0400
  728.54 +TZNAME:ART
  728.55 +DTSTART:19310401T000000
  728.56 +RDATE:19310401T000000
  728.57 +RDATE:19320301T000000
  728.58 +RDATE:19330301T000000
  728.59 +RDATE:19340301T000000
  728.60 +RDATE:19350301T000000
  728.61 +RDATE:19360301T000000
  728.62 +RDATE:19370301T000000
  728.63 +RDATE:19380301T000000
  728.64 +RDATE:19390301T000000
  728.65 +RDATE:19400301T000000
  728.66 +RDATE:19410615T000000
  728.67 +RDATE:19430801T000000
  728.68 +RDATE:19460301T000000
  728.69 +RDATE:19631001T000000
  728.70 +RDATE:19640301T000000
  728.71 +RDATE:19650301T000000
  728.72 +RDATE:19660301T000000
  728.73 +RDATE:19670402T000000
  728.74 +RDATE:19680407T000000
  728.75 +RDATE:19690406T000000
  728.76 +END:STANDARD
  728.77 +BEGIN:STANDARD
  728.78 +TZOFFSETFROM:-0400
  728.79 +TZOFFSETTO:-0300
  728.80 +TZNAME:ART
  728.81 +DTSTART:19691005T000000
  728.82 +RDATE:19691005T000000
  728.83 +RDATE:20040926T000000
  728.84 +END:STANDARD
  728.85 +BEGIN:DAYLIGHT
  728.86 +TZOFFSETFROM:-0300
  728.87 +TZOFFSETTO:-0200
  728.88 +TZNAME:ARST
  728.89 +DTSTART:19740123T000000
  728.90 +RDATE:19740123T000000
  728.91 +RDATE:19881201T000000
  728.92 +RDATE:19891015T000000
  728.93 +RDATE:20071230T000000
  728.94 +END:DAYLIGHT
  728.95 +BEGIN:STANDARD
  728.96 +TZOFFSETFROM:-0200
  728.97 +TZOFFSETTO:-0300
  728.98 +TZNAME:ART
  728.99 +DTSTART:19740501T000000
 728.100 +RDATE:19740501T000000
 728.101 +RDATE:19890305T000000
 728.102 +RDATE:19930307T000000
 728.103 +RDATE:20080316T000000
 728.104 +END:STANDARD
 728.105 +BEGIN:STANDARD
 728.106 +TZOFFSETFROM:-0200
 728.107 +TZOFFSETTO:-0400
 728.108 +TZNAME:WART
 728.109 +DTSTART:19900304T000000
 728.110 +RDATE:19900304T000000
 728.111 +END:STANDARD
 728.112 +BEGIN:DAYLIGHT
 728.113 +TZOFFSETFROM:-0400
 728.114 +TZOFFSETTO:-0300
 728.115 +TZNAME:WARST
 728.116 +DTSTART:19901015T000000
 728.117 +RDATE:19901015T000000
 728.118 +RDATE:19911015T000000
 728.119 +END:DAYLIGHT
 728.120 +BEGIN:STANDARD
 728.121 +TZOFFSETFROM:-0300
 728.122 +TZOFFSETTO:-0400
 728.123 +TZNAME:WART
 728.124 +DTSTART:19910301T000000
 728.125 +RDATE:19910301T000000
 728.126 +RDATE:19920301T000000
 728.127 +RDATE:20040523T000000
 728.128 +END:STANDARD
 728.129 +BEGIN:DAYLIGHT
 728.130 +TZOFFSETFROM:-0400
 728.131 +TZOFFSETTO:-0200
 728.132 +TZNAME:ARST
 728.133 +DTSTART:19921018T000000
 728.134 +RDATE:19921018T000000
 728.135 +END:DAYLIGHT
 728.136 +BEGIN:DAYLIGHT
 728.137 +TZOFFSETFROM:-0300
 728.138 +TZOFFSETTO:-0300
 728.139 +TZNAME:ARST
 728.140 +DTSTART:19991003T000000
 728.141 +RDATE:19991003T000000
 728.142 +END:DAYLIGHT
 728.143 +BEGIN:STANDARD
 728.144 +TZOFFSETFROM:-0300
 728.145 +TZOFFSETTO:-0300
 728.146 +TZNAME:ART
 728.147 +DTSTART:20000303T000000
 728.148 +RDATE:20000303T000000
 728.149 +RDATE:20081018T000000
 728.150 +END:STANDARD
 728.151 +END:VTIMEZONE
 728.152 +END:VCALENDAR
   729.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   729.2 +++ b/src/zoneinfo/America/Argentina/Rio_Gallegos.ics	Tue Feb 10 18:12:00 2015 +0100
   729.3 @@ -0,0 +1,131 @@
   729.4 +BEGIN:VCALENDAR
   729.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   729.6 +VERSION:2.0
   729.7 +BEGIN:VTIMEZONE
   729.8 +TZID:America/Argentina/Rio_Gallegos
   729.9 +TZURL:http://tzurl.org/zoneinfo/America/Argentina/Rio_Gallegos
  729.10 +X-LIC-LOCATION:America/Argentina/Rio_Gallegos
  729.11 +BEGIN:STANDARD
  729.12 +TZOFFSETFROM:-043652
  729.13 +TZOFFSETTO:-041648
  729.14 +TZNAME:CMT
  729.15 +DTSTART:18941031T000000
  729.16 +RDATE:18941031T000000
  729.17 +END:STANDARD
  729.18 +BEGIN:STANDARD
  729.19 +TZOFFSETFROM:-041648
  729.20 +TZOFFSETTO:-0400
  729.21 +TZNAME:ART
  729.22 +DTSTART:19200501T000000
  729.23 +RDATE:19200501T000000
  729.24 +END:STANDARD
  729.25 +BEGIN:DAYLIGHT
  729.26 +TZOFFSETFROM:-0400
  729.27 +TZOFFSETTO:-0300
  729.28 +TZNAME:ARST
  729.29 +DTSTART:19301201T000000
  729.30 +RDATE:19301201T000000
  729.31 +RDATE:19311015T000000
  729.32 +RDATE:19321101T000000
  729.33 +RDATE:19331101T000000
  729.34 +RDATE:19341101T000000
  729.35 +RDATE:19351101T000000
  729.36 +RDATE:19361101T000000
  729.37 +RDATE:19371101T000000
  729.38 +RDATE:19381101T000000
  729.39 +RDATE:19391101T000000
  729.40 +RDATE:19400701T000000
  729.41 +RDATE:19411015T000000
  729.42 +RDATE:19431015T000000
  729.43 +RDATE:19461001T000000
  729.44 +RDATE:19631215T000000
  729.45 +RDATE:19641015T000000
  729.46 +RDATE:19651015T000000
  729.47 +RDATE:19661015T000000
  729.48 +RDATE:19671001T000000
  729.49 +RDATE:19681006T000000
  729.50 +END:DAYLIGHT
  729.51 +BEGIN:STANDARD
  729.52 +TZOFFSETFROM:-0300
  729.53 +TZOFFSETTO:-0400
  729.54 +TZNAME:ART
  729.55 +DTSTART:19310401T000000
  729.56 +RDATE:19310401T000000
  729.57 +RDATE:19320301T000000
  729.58 +RDATE:19330301T000000
  729.59 +RDATE:19340301T000000
  729.60 +RDATE:19350301T000000
  729.61 +RDATE:19360301T000000
  729.62 +RDATE:19370301T000000
  729.63 +RDATE:19380301T000000
  729.64 +RDATE:19390301T000000
  729.65 +RDATE:19400301T000000
  729.66 +RDATE:19410615T000000
  729.67 +RDATE:19430801T000000
  729.68 +RDATE:19460301T000000
  729.69 +RDATE:19631001T000000
  729.70 +RDATE:19640301T000000
  729.71 +RDATE:19650301T000000
  729.72 +RDATE:19660301T000000
  729.73 +RDATE:19670402T000000
  729.74 +RDATE:19680407T000000
  729.75 +RDATE:19690406T000000
  729.76 +END:STANDARD
  729.77 +BEGIN:STANDARD
  729.78 +TZOFFSETFROM:-0400
  729.79 +TZOFFSETTO:-0300
  729.80 +TZNAME:ART
  729.81 +DTSTART:19691005T000000
  729.82 +RDATE:19691005T000000
  729.83 +RDATE:20040620T000000
  729.84 +END:STANDARD
  729.85 +BEGIN:DAYLIGHT
  729.86 +TZOFFSETFROM:-0300
  729.87 +TZOFFSETTO:-0200
  729.88 +TZNAME:ARST
  729.89 +DTSTART:19740123T000000
  729.90 +RDATE:19740123T000000
  729.91 +RDATE:19881201T000000
  729.92 +RDATE:19891015T000000
  729.93 +RDATE:19901021T000000
  729.94 +RDATE:19911020T000000
  729.95 +RDATE:19921018T000000
  729.96 +RDATE:20071230T000000
  729.97 +END:DAYLIGHT
  729.98 +BEGIN:STANDARD
  729.99 +TZOFFSETFROM:-0200
 729.100 +TZOFFSETTO:-0300
 729.101 +TZNAME:ART
 729.102 +DTSTART:19740501T000000
 729.103 +RDATE:19740501T000000
 729.104 +RDATE:19890305T000000
 729.105 +RDATE:19900304T000000
 729.106 +RDATE:19910303T000000
 729.107 +RDATE:19920301T000000
 729.108 +RDATE:19930307T000000
 729.109 +RDATE:20080316T000000
 729.110 +END:STANDARD
 729.111 +BEGIN:DAYLIGHT
 729.112 +TZOFFSETFROM:-0300
 729.113 +TZOFFSETTO:-0300
 729.114 +TZNAME:ARST
 729.115 +DTSTART:19991003T000000
 729.116 +RDATE:19991003T000000
 729.117 +END:DAYLIGHT
 729.118 +BEGIN:STANDARD
 729.119 +TZOFFSETFROM:-0300
 729.120 +TZOFFSETTO:-0300
 729.121 +TZNAME:ART
 729.122 +DTSTART:20000303T000000
 729.123 +RDATE:20000303T000000
 729.124 +RDATE:20081018T000000
 729.125 +END:STANDARD
 729.126 +BEGIN:STANDARD
 729.127 +TZOFFSETFROM:-0300
 729.128 +TZOFFSETTO:-0400
 729.129 +TZNAME:WART
 729.130 +DTSTART:20040601T000000
 729.131 +RDATE:20040601T000000
 729.132 +END:STANDARD
 729.133 +END:VTIMEZONE
 729.134 +END:VCALENDAR
   730.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   730.2 +++ b/src/zoneinfo/America/Argentina/Salta.ics	Tue Feb 10 18:12:00 2015 +0100
   730.3 @@ -0,0 +1,135 @@
   730.4 +BEGIN:VCALENDAR
   730.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   730.6 +VERSION:2.0
   730.7 +BEGIN:VTIMEZONE
   730.8 +TZID:America/Argentina/Salta
   730.9 +TZURL:http://tzurl.org/zoneinfo/America/Argentina/Salta
  730.10 +X-LIC-LOCATION:America/Argentina/Salta
  730.11 +BEGIN:STANDARD
  730.12 +TZOFFSETFROM:-042140
  730.13 +TZOFFSETTO:-041648
  730.14 +TZNAME:CMT
  730.15 +DTSTART:18941031T000000
  730.16 +RDATE:18941031T000000
  730.17 +END:STANDARD
  730.18 +BEGIN:STANDARD
  730.19 +TZOFFSETFROM:-041648
  730.20 +TZOFFSETTO:-0400
  730.21 +TZNAME:ART
  730.22 +DTSTART:19200501T000000
  730.23 +RDATE:19200501T000000
  730.24 +END:STANDARD
  730.25 +BEGIN:DAYLIGHT
  730.26 +TZOFFSETFROM:-0400
  730.27 +TZOFFSETTO:-0300
  730.28 +TZNAME:ARST
  730.29 +DTSTART:19301201T000000
  730.30 +RDATE:19301201T000000
  730.31 +RDATE:19311015T000000
  730.32 +RDATE:19321101T000000
  730.33 +RDATE:19331101T000000
  730.34 +RDATE:19341101T000000
  730.35 +RDATE:19351101T000000
  730.36 +RDATE:19361101T000000
  730.37 +RDATE:19371101T000000
  730.38 +RDATE:19381101T000000
  730.39 +RDATE:19391101T000000
  730.40 +RDATE:19400701T000000
  730.41 +RDATE:19411015T000000
  730.42 +RDATE:19431015T000000
  730.43 +RDATE:19461001T000000
  730.44 +RDATE:19631215T000000
  730.45 +RDATE:19641015T000000
  730.46 +RDATE:19651015T000000
  730.47 +RDATE:19661015T000000
  730.48 +RDATE:19671001T000000
  730.49 +RDATE:19681006T000000
  730.50 +END:DAYLIGHT
  730.51 +BEGIN:STANDARD
  730.52 +TZOFFSETFROM:-0300
  730.53 +TZOFFSETTO:-0400
  730.54 +TZNAME:ART
  730.55 +DTSTART:19310401T000000
  730.56 +RDATE:19310401T000000
  730.57 +RDATE:19320301T000000
  730.58 +RDATE:19330301T000000
  730.59 +RDATE:19340301T000000
  730.60 +RDATE:19350301T000000
  730.61 +RDATE:19360301T000000
  730.62 +RDATE:19370301T000000
  730.63 +RDATE:19380301T000000
  730.64 +RDATE:19390301T000000
  730.65 +RDATE:19400301T000000
  730.66 +RDATE:19410615T000000
  730.67 +RDATE:19430801T000000
  730.68 +RDATE:19460301T000000
  730.69 +RDATE:19631001T000000
  730.70 +RDATE:19640301T000000
  730.71 +RDATE:19650301T000000
  730.72 +RDATE:19660301T000000
  730.73 +RDATE:19670402T000000
  730.74 +RDATE:19680407T000000
  730.75 +RDATE:19690406T000000
  730.76 +END:STANDARD
  730.77 +BEGIN:STANDARD
  730.78 +TZOFFSETFROM:-0400
  730.79 +TZOFFSETTO:-0300
  730.80 +TZNAME:ART
  730.81 +DTSTART:19691005T000000
  730.82 +RDATE:19691005T000000
  730.83 +END:STANDARD
  730.84 +BEGIN:DAYLIGHT
  730.85 +TZOFFSETFROM:-0300
  730.86 +TZOFFSETTO:-0200
  730.87 +TZNAME:ARST
  730.88 +DTSTART:19740123T000000
  730.89 +RDATE:19740123T000000
  730.90 +RDATE:19881201T000000
  730.91 +RDATE:19891015T000000
  730.92 +RDATE:19901021T000000
  730.93 +RDATE:19921018T000000
  730.94 +RDATE:20071230T000000
  730.95 +END:DAYLIGHT
  730.96 +BEGIN:STANDARD
  730.97 +TZOFFSETFROM:-0200
  730.98 +TZOFFSETTO:-0300
  730.99 +TZNAME:ART
 730.100 +DTSTART:19740501T000000
 730.101 +RDATE:19740501T000000
 730.102 +RDATE:19890305T000000
 730.103 +RDATE:19900304T000000
 730.104 +RDATE:19920301T000000
 730.105 +RDATE:19930307T000000
 730.106 +RDATE:20080316T000000
 730.107 +END:STANDARD
 730.108 +BEGIN:STANDARD
 730.109 +TZOFFSETFROM:-0200
 730.110 +TZOFFSETTO:-0400
 730.111 +TZNAME:WART
 730.112 +DTSTART:19910303T000000
 730.113 +RDATE:19910303T000000
 730.114 +END:STANDARD
 730.115 +BEGIN:DAYLIGHT
 730.116 +TZOFFSETFROM:-0400
 730.117 +TZOFFSETTO:-0200
 730.118 +TZNAME:ARST
 730.119 +DTSTART:19911020T000000
 730.120 +RDATE:19911020T000000
 730.121 +END:DAYLIGHT
 730.122 +BEGIN:DAYLIGHT
 730.123 +TZOFFSETFROM:-0300
 730.124 +TZOFFSETTO:-0300
 730.125 +TZNAME:ARST
 730.126 +DTSTART:19991003T000000
 730.127 +RDATE:19991003T000000
 730.128 +END:DAYLIGHT
 730.129 +BEGIN:STANDARD
 730.130 +TZOFFSETFROM:-0300
 730.131 +TZOFFSETTO:-0300
 730.132 +TZNAME:ART
 730.133 +DTSTART:20000303T000000
 730.134 +RDATE:20000303T000000
 730.135 +RDATE:20081018T000000
 730.136 +END:STANDARD
 730.137 +END:VTIMEZONE
 730.138 +END:VCALENDAR
   731.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   731.2 +++ b/src/zoneinfo/America/Argentina/San_Juan.ics	Tue Feb 10 18:12:00 2015 +0100
   731.3 @@ -0,0 +1,138 @@
   731.4 +BEGIN:VCALENDAR
   731.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   731.6 +VERSION:2.0
   731.7 +BEGIN:VTIMEZONE
   731.8 +TZID:America/Argentina/San_Juan
   731.9 +TZURL:http://tzurl.org/zoneinfo/America/Argentina/San_Juan
  731.10 +X-LIC-LOCATION:America/Argentina/San_Juan
  731.11 +BEGIN:STANDARD
  731.12 +TZOFFSETFROM:-043404
  731.13 +TZOFFSETTO:-041648
  731.14 +TZNAME:CMT
  731.15 +DTSTART:18941031T000000
  731.16 +RDATE:18941031T000000
  731.17 +END:STANDARD
  731.18 +BEGIN:STANDARD
  731.19 +TZOFFSETFROM:-041648
  731.20 +TZOFFSETTO:-0400
  731.21 +TZNAME:ART
  731.22 +DTSTART:19200501T000000
  731.23 +RDATE:19200501T000000
  731.24 +END:STANDARD
  731.25 +BEGIN:DAYLIGHT
  731.26 +TZOFFSETFROM:-0400
  731.27 +TZOFFSETTO:-0300
  731.28 +TZNAME:ARST
  731.29 +DTSTART:19301201T000000
  731.30 +RDATE:19301201T000000
  731.31 +RDATE:19311015T000000
  731.32 +RDATE:19321101T000000
  731.33 +RDATE:19331101T000000
  731.34 +RDATE:19341101T000000
  731.35 +RDATE:19351101T000000
  731.36 +RDATE:19361101T000000
  731.37 +RDATE:19371101T000000
  731.38 +RDATE:19381101T000000
  731.39 +RDATE:19391101T000000
  731.40 +RDATE:19400701T000000
  731.41 +RDATE:19411015T000000
  731.42 +RDATE:19431015T000000
  731.43 +RDATE:19461001T000000
  731.44 +RDATE:19631215T000000
  731.45 +RDATE:19641015T000000
  731.46 +RDATE:19651015T000000
  731.47 +RDATE:19661015T000000
  731.48 +RDATE:19671001T000000
  731.49 +RDATE:19681006T000000
  731.50 +END:DAYLIGHT
  731.51 +BEGIN:STANDARD
  731.52 +TZOFFSETFROM:-0300
  731.53 +TZOFFSETTO:-0400
  731.54 +TZNAME:ART
  731.55 +DTSTART:19310401T000000
  731.56 +RDATE:19310401T000000
  731.57 +RDATE:19320301T000000
  731.58 +RDATE:19330301T000000
  731.59 +RDATE:19340301T000000
  731.60 +RDATE:19350301T000000
  731.61 +RDATE:19360301T000000
  731.62 +RDATE:19370301T000000
  731.63 +RDATE:19380301T000000
  731.64 +RDATE:19390301T000000
  731.65 +RDATE:19400301T000000
  731.66 +RDATE:19410615T000000
  731.67 +RDATE:19430801T000000
  731.68 +RDATE:19460301T000000
  731.69 +RDATE:19631001T000000
  731.70 +RDATE:19640301T000000
  731.71 +RDATE:19650301T000000
  731.72 +RDATE:19660301T000000
  731.73 +RDATE:19670402T000000
  731.74 +RDATE:19680407T000000
  731.75 +RDATE:19690406T000000
  731.76 +END:STANDARD
  731.77 +BEGIN:STANDARD
  731.78 +TZOFFSETFROM:-0400
  731.79 +TZOFFSETTO:-0300
  731.80 +TZNAME:ART
  731.81 +DTSTART:19691005T000000
  731.82 +RDATE:19691005T000000
  731.83 +RDATE:19910507T000000
  731.84 +RDATE:20040725T000000
  731.85 +END:STANDARD
  731.86 +BEGIN:DAYLIGHT
  731.87 +TZOFFSETFROM:-0300
  731.88 +TZOFFSETTO:-0200
  731.89 +TZNAME:ARST
  731.90 +DTSTART:19740123T000000
  731.91 +RDATE:19740123T000000
  731.92 +RDATE:19881201T000000
  731.93 +RDATE:19891015T000000
  731.94 +RDATE:19901021T000000
  731.95 +RDATE:19911020T000000
  731.96 +RDATE:19921018T000000
  731.97 +RDATE:20071230T000000
  731.98 +END:DAYLIGHT
  731.99 +BEGIN:STANDARD
 731.100 +TZOFFSETFROM:-0200
 731.101 +TZOFFSETTO:-0300
 731.102 +TZNAME:ART
 731.103 +DTSTART:19740501T000000
 731.104 +RDATE:19740501T000000
 731.105 +RDATE:19890305T000000
 731.106 +RDATE:19900304T000000
 731.107 +RDATE:19920301T000000
 731.108 +RDATE:19930307T000000
 731.109 +RDATE:20080316T000000
 731.110 +END:STANDARD
 731.111 +BEGIN:STANDARD
 731.112 +TZOFFSETFROM:-0200
 731.113 +TZOFFSETTO:-0400
 731.114 +TZNAME:WART
 731.115 +DTSTART:19910301T000000
 731.116 +RDATE:19910301T000000
 731.117 +END:STANDARD
 731.118 +BEGIN:DAYLIGHT
 731.119 +TZOFFSETFROM:-0300
 731.120 +TZOFFSETTO:-0300
 731.121 +TZNAME:ARST
 731.122 +DTSTART:19991003T000000
 731.123 +RDATE:19991003T000000
 731.124 +END:DAYLIGHT
 731.125 +BEGIN:STANDARD
 731.126 +TZOFFSETFROM:-0300
 731.127 +TZOFFSETTO:-0300
 731.128 +TZNAME:ART
 731.129 +DTSTART:20000303T000000
 731.130 +RDATE:20000303T000000
 731.131 +RDATE:20081018T000000
 731.132 +END:STANDARD
 731.133 +BEGIN:STANDARD
 731.134 +TZOFFSETFROM:-0300
 731.135 +TZOFFSETTO:-0400
 731.136 +TZNAME:WART
 731.137 +DTSTART:20040531T000000
 731.138 +RDATE:20040531T000000
 731.139 +END:STANDARD
 731.140 +END:VTIMEZONE
 731.141 +END:VCALENDAR
   732.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   732.2 +++ b/src/zoneinfo/America/Argentina/San_Luis.ics	Tue Feb 10 18:12:00 2015 +0100
   732.3 @@ -0,0 +1,161 @@
   732.4 +BEGIN:VCALENDAR
   732.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   732.6 +VERSION:2.0
   732.7 +BEGIN:VTIMEZONE
   732.8 +TZID:America/Argentina/San_Luis
   732.9 +TZURL:http://tzurl.org/zoneinfo/America/Argentina/San_Luis
  732.10 +X-LIC-LOCATION:America/Argentina/San_Luis
  732.11 +BEGIN:STANDARD
  732.12 +TZOFFSETFROM:-042524
  732.13 +TZOFFSETTO:-041648
  732.14 +TZNAME:CMT
  732.15 +DTSTART:18941031T000000
  732.16 +RDATE:18941031T000000
  732.17 +END:STANDARD
  732.18 +BEGIN:STANDARD
  732.19 +TZOFFSETFROM:-041648
  732.20 +TZOFFSETTO:-0400
  732.21 +TZNAME:ART
  732.22 +DTSTART:19200501T000000
  732.23 +RDATE:19200501T000000
  732.24 +END:STANDARD
  732.25 +BEGIN:DAYLIGHT
  732.26 +TZOFFSETFROM:-0400
  732.27 +TZOFFSETTO:-0300
  732.28 +TZNAME:ARST
  732.29 +DTSTART:19301201T000000
  732.30 +RDATE:19301201T000000
  732.31 +RDATE:19311015T000000
  732.32 +RDATE:19321101T000000
  732.33 +RDATE:19331101T000000
  732.34 +RDATE:19341101T000000
  732.35 +RDATE:19351101T000000
  732.36 +RDATE:19361101T000000
  732.37 +RDATE:19371101T000000
  732.38 +RDATE:19381101T000000
  732.39 +RDATE:19391101T000000
  732.40 +RDATE:19400701T000000
  732.41 +RDATE:19411015T000000
  732.42 +RDATE:19431015T000000
  732.43 +RDATE:19461001T000000
  732.44 +RDATE:19631215T000000
  732.45 +RDATE:19641015T000000
  732.46 +RDATE:19651015T000000
  732.47 +RDATE:19661015T000000
  732.48 +RDATE:19671001T000000
  732.49 +RDATE:19681006T000000
  732.50 +END:DAYLIGHT
  732.51 +BEGIN:STANDARD
  732.52 +TZOFFSETFROM:-0300
  732.53 +TZOFFSETTO:-0400
  732.54 +TZNAME:ART
  732.55 +DTSTART:19310401T000000
  732.56 +RDATE:19310401T000000
  732.57 +RDATE:19320301T000000
  732.58 +RDATE:19330301T000000
  732.59 +RDATE:19340301T000000
  732.60 +RDATE:19350301T000000
  732.61 +RDATE:19360301T000000
  732.62 +RDATE:19370301T000000
  732.63 +RDATE:19380301T000000
  732.64 +RDATE:19390301T000000
  732.65 +RDATE:19400301T000000
  732.66 +RDATE:19410615T000000
  732.67 +RDATE:19430801T000000
  732.68 +RDATE:19460301T000000
  732.69 +RDATE:19631001T000000
  732.70 +RDATE:19640301T000000
  732.71 +RDATE:19650301T000000
  732.72 +RDATE:19660301T000000
  732.73 +RDATE:19670402T000000
  732.74 +RDATE:19680407T000000
  732.75 +RDATE:19690406T000000
  732.76 +END:STANDARD
  732.77 +BEGIN:STANDARD
  732.78 +TZOFFSETFROM:-0400
  732.79 +TZOFFSETTO:-0300
  732.80 +TZNAME:ART
  732.81 +DTSTART:19691005T000000
  732.82 +RDATE:19691005T000000
  732.83 +RDATE:19910601T000000
  732.84 +END:STANDARD
  732.85 +BEGIN:DAYLIGHT
  732.86 +TZOFFSETFROM:-0300
  732.87 +TZOFFSETTO:-0200
  732.88 +TZNAME:ARST
  732.89 +DTSTART:19740123T000000
  732.90 +RDATE:19740123T000000
  732.91 +RDATE:19881201T000000
  732.92 +RDATE:19891015T000000
  732.93 +RDATE:20071230T000000
  732.94 +END:DAYLIGHT
  732.95 +BEGIN:STANDARD
  732.96 +TZOFFSETFROM:-0200
  732.97 +TZOFFSETTO:-0300
  732.98 +TZNAME:ART
  732.99 +DTSTART:19740501T000000
 732.100 +RDATE:19740501T000000
 732.101 +RDATE:19890305T000000
 732.102 +END:STANDARD
 732.103 +BEGIN:DAYLIGHT
 732.104 +TZOFFSETFROM:-0200
 732.105 +TZOFFSETTO:-0200
 732.106 +TZNAME:ARST
 732.107 +DTSTART:19900101T000000
 732.108 +RDATE:19900101T000000
 732.109 +END:DAYLIGHT
 732.110 +BEGIN:STANDARD
 732.111 +TZOFFSETFROM:-0200
 732.112 +TZOFFSETTO:-0400
 732.113 +TZNAME:WART
 732.114 +DTSTART:19900314T000000
 732.115 +RDATE:19900314T000000
 732.116 +END:STANDARD
 732.117 +BEGIN:DAYLIGHT
 732.118 +TZOFFSETFROM:-0400
 732.119 +TZOFFSETTO:-0300
 732.120 +TZNAME:WARST
 732.121 +DTSTART:19901015T000000
 732.122 +RDATE:19901015T000000
 732.123 +RDATE:20081012T000000
 732.124 +RDATE:20091011T000000
 732.125 +END:DAYLIGHT
 732.126 +BEGIN:STANDARD
 732.127 +TZOFFSETFROM:-0300
 732.128 +TZOFFSETTO:-0400
 732.129 +TZNAME:WART
 732.130 +DTSTART:19910301T000000
 732.131 +RDATE:19910301T000000
 732.132 +RDATE:20040531T000000
 732.133 +RDATE:20080309T000000
 732.134 +RDATE:20090308T000000
 732.135 +END:STANDARD
 732.136 +BEGIN:DAYLIGHT
 732.137 +TZOFFSETFROM:-0300
 732.138 +TZOFFSETTO:-0300
 732.139 +TZNAME:WARST
 732.140 +DTSTART:19991003T000000
 732.141 +RDATE:19991003T000000
 732.142 +END:DAYLIGHT
 732.143 +BEGIN:STANDARD
 732.144 +TZOFFSETFROM:-0300
 732.145 +TZOFFSETTO:-0300
 732.146 +TZNAME:ART
 732.147 +DTSTART:20000303T000000
 732.148 +RDATE:20000303T000000
 732.149 +END:STANDARD
 732.150 +BEGIN:STANDARD
 732.151 +TZOFFSETFROM:-0400
 732.152 +TZOFFSETTO:-0300
 732.153 +DTSTART:20040725T000000
 732.154 +RDATE:20040725T000000
 732.155 +END:STANDARD
 732.156 +BEGIN:DAYLIGHT
 732.157 +TZOFFSETFROM:-0200
 732.158 +TZOFFSETTO:-0300
 732.159 +TZNAME:WARST
 732.160 +DTSTART:20080121T000000
 732.161 +RDATE:20080121T000000
 732.162 +END:DAYLIGHT
 732.163 +END:VTIMEZONE
 732.164 +END:VCALENDAR
   733.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   733.2 +++ b/src/zoneinfo/America/Argentina/Tucuman.ics	Tue Feb 10 18:12:00 2015 +0100
   733.3 @@ -0,0 +1,144 @@
   733.4 +BEGIN:VCALENDAR
   733.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   733.6 +VERSION:2.0
   733.7 +BEGIN:VTIMEZONE
   733.8 +TZID:America/Argentina/Tucuman
   733.9 +TZURL:http://tzurl.org/zoneinfo/America/Argentina/Tucuman
  733.10 +X-LIC-LOCATION:America/Argentina/Tucuman
  733.11 +BEGIN:STANDARD
  733.12 +TZOFFSETFROM:-042052
  733.13 +TZOFFSETTO:-041648
  733.14 +TZNAME:CMT
  733.15 +DTSTART:18941031T000000
  733.16 +RDATE:18941031T000000
  733.17 +END:STANDARD
  733.18 +BEGIN:STANDARD
  733.19 +TZOFFSETFROM:-041648
  733.20 +TZOFFSETTO:-0400
  733.21 +TZNAME:ART
  733.22 +DTSTART:19200501T000000
  733.23 +RDATE:19200501T000000
  733.24 +END:STANDARD
  733.25 +BEGIN:DAYLIGHT
  733.26 +TZOFFSETFROM:-0400
  733.27 +TZOFFSETTO:-0300
  733.28 +TZNAME:ARST
  733.29 +DTSTART:19301201T000000
  733.30 +RDATE:19301201T000000
  733.31 +RDATE:19311015T000000
  733.32 +RDATE:19321101T000000
  733.33 +RDATE:19331101T000000
  733.34 +RDATE:19341101T000000
  733.35 +RDATE:19351101T000000
  733.36 +RDATE:19361101T000000
  733.37 +RDATE:19371101T000000
  733.38 +RDATE:19381101T000000
  733.39 +RDATE:19391101T000000
  733.40 +RDATE:19400701T000000
  733.41 +RDATE:19411015T000000
  733.42 +RDATE:19431015T000000
  733.43 +RDATE:19461001T000000
  733.44 +RDATE:19631215T000000
  733.45 +RDATE:19641015T000000
  733.46 +RDATE:19651015T000000
  733.47 +RDATE:19661015T000000
  733.48 +RDATE:19671001T000000
  733.49 +RDATE:19681006T000000
  733.50 +END:DAYLIGHT
  733.51 +BEGIN:STANDARD
  733.52 +TZOFFSETFROM:-0300
  733.53 +TZOFFSETTO:-0400
  733.54 +TZNAME:ART
  733.55 +DTSTART:19310401T000000
  733.56 +RDATE:19310401T000000
  733.57 +RDATE:19320301T000000
  733.58 +RDATE:19330301T000000
  733.59 +RDATE:19340301T000000
  733.60 +RDATE:19350301T000000
  733.61 +RDATE:19360301T000000
  733.62 +RDATE:19370301T000000
  733.63 +RDATE:19380301T000000
  733.64 +RDATE:19390301T000000
  733.65 +RDATE:19400301T000000
  733.66 +RDATE:19410615T000000
  733.67 +RDATE:19430801T000000
  733.68 +RDATE:19460301T000000
  733.69 +RDATE:19631001T000000
  733.70 +RDATE:19640301T000000
  733.71 +RDATE:19650301T000000
  733.72 +RDATE:19660301T000000
  733.73 +RDATE:19670402T000000
  733.74 +RDATE:19680407T000000
  733.75 +RDATE:19690406T000000
  733.76 +END:STANDARD
  733.77 +BEGIN:STANDARD
  733.78 +TZOFFSETFROM:-0400
  733.79 +TZOFFSETTO:-0300
  733.80 +TZNAME:ART
  733.81 +DTSTART:19691005T000000
  733.82 +RDATE:19691005T000000
  733.83 +RDATE:20040613T000000
  733.84 +END:STANDARD
  733.85 +BEGIN:DAYLIGHT
  733.86 +TZOFFSETFROM:-0300
  733.87 +TZOFFSETTO:-0200
  733.88 +TZNAME:ARST
  733.89 +DTSTART:19740123T000000
  733.90 +RDATE:19740123T000000
  733.91 +RDATE:19881201T000000
  733.92 +RDATE:19891015T000000
  733.93 +RDATE:19901021T000000
  733.94 +RDATE:19921018T000000
  733.95 +RDATE:20071230T000000
  733.96 +RDATE:20081019T000000
  733.97 +END:DAYLIGHT
  733.98 +BEGIN:STANDARD
  733.99 +TZOFFSETFROM:-0200
 733.100 +TZOFFSETTO:-0300
 733.101 +TZNAME:ART
 733.102 +DTSTART:19740501T000000
 733.103 +RDATE:19740501T000000
 733.104 +RDATE:19890305T000000
 733.105 +RDATE:19900304T000000
 733.106 +RDATE:19920301T000000
 733.107 +RDATE:19930307T000000
 733.108 +RDATE:20080316T000000
 733.109 +RDATE:20090315T000000
 733.110 +END:STANDARD
 733.111 +BEGIN:STANDARD
 733.112 +TZOFFSETFROM:-0200
 733.113 +TZOFFSETTO:-0400
 733.114 +TZNAME:WART
 733.115 +DTSTART:19910303T000000
 733.116 +RDATE:19910303T000000
 733.117 +END:STANDARD
 733.118 +BEGIN:DAYLIGHT
 733.119 +TZOFFSETFROM:-0400
 733.120 +TZOFFSETTO:-0200
 733.121 +TZNAME:ARST
 733.122 +DTSTART:19911020T000000
 733.123 +RDATE:19911020T000000
 733.124 +END:DAYLIGHT
 733.125 +BEGIN:DAYLIGHT
 733.126 +TZOFFSETFROM:-0300
 733.127 +TZOFFSETTO:-0300
 733.128 +TZNAME:ARST
 733.129 +DTSTART:19991003T000000
 733.130 +RDATE:19991003T000000
 733.131 +END:DAYLIGHT
 733.132 +BEGIN:STANDARD
 733.133 +TZOFFSETFROM:-0300
 733.134 +TZOFFSETTO:-0300
 733.135 +TZNAME:ART
 733.136 +DTSTART:20000303T000000
 733.137 +RDATE:20000303T000000
 733.138 +END:STANDARD
 733.139 +BEGIN:STANDARD
 733.140 +TZOFFSETFROM:-0300
 733.141 +TZOFFSETTO:-0400
 733.142 +TZNAME:WART
 733.143 +DTSTART:20040601T000000
 733.144 +RDATE:20040601T000000
 733.145 +END:STANDARD
 733.146 +END:VTIMEZONE
 733.147 +END:VCALENDAR
   734.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   734.2 +++ b/src/zoneinfo/America/Argentina/Ushuaia.ics	Tue Feb 10 18:12:00 2015 +0100
   734.3 @@ -0,0 +1,131 @@
   734.4 +BEGIN:VCALENDAR
   734.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   734.6 +VERSION:2.0
   734.7 +BEGIN:VTIMEZONE
   734.8 +TZID:America/Argentina/Ushuaia
   734.9 +TZURL:http://tzurl.org/zoneinfo/America/Argentina/Ushuaia
  734.10 +X-LIC-LOCATION:America/Argentina/Ushuaia
  734.11 +BEGIN:STANDARD
  734.12 +TZOFFSETFROM:-043312
  734.13 +TZOFFSETTO:-041648
  734.14 +TZNAME:CMT
  734.15 +DTSTART:18941031T000000
  734.16 +RDATE:18941031T000000
  734.17 +END:STANDARD
  734.18 +BEGIN:STANDARD
  734.19 +TZOFFSETFROM:-041648
  734.20 +TZOFFSETTO:-0400
  734.21 +TZNAME:ART
  734.22 +DTSTART:19200501T000000
  734.23 +RDATE:19200501T000000
  734.24 +END:STANDARD
  734.25 +BEGIN:DAYLIGHT
  734.26 +TZOFFSETFROM:-0400
  734.27 +TZOFFSETTO:-0300
  734.28 +TZNAME:ARST
  734.29 +DTSTART:19301201T000000
  734.30 +RDATE:19301201T000000
  734.31 +RDATE:19311015T000000
  734.32 +RDATE:19321101T000000
  734.33 +RDATE:19331101T000000
  734.34 +RDATE:19341101T000000
  734.35 +RDATE:19351101T000000
  734.36 +RDATE:19361101T000000
  734.37 +RDATE:19371101T000000
  734.38 +RDATE:19381101T000000
  734.39 +RDATE:19391101T000000
  734.40 +RDATE:19400701T000000
  734.41 +RDATE:19411015T000000
  734.42 +RDATE:19431015T000000
  734.43 +RDATE:19461001T000000
  734.44 +RDATE:19631215T000000
  734.45 +RDATE:19641015T000000
  734.46 +RDATE:19651015T000000
  734.47 +RDATE:19661015T000000
  734.48 +RDATE:19671001T000000
  734.49 +RDATE:19681006T000000
  734.50 +END:DAYLIGHT
  734.51 +BEGIN:STANDARD
  734.52 +TZOFFSETFROM:-0300
  734.53 +TZOFFSETTO:-0400
  734.54 +TZNAME:ART
  734.55 +DTSTART:19310401T000000
  734.56 +RDATE:19310401T000000
  734.57 +RDATE:19320301T000000
  734.58 +RDATE:19330301T000000
  734.59 +RDATE:19340301T000000
  734.60 +RDATE:19350301T000000
  734.61 +RDATE:19360301T000000
  734.62 +RDATE:19370301T000000
  734.63 +RDATE:19380301T000000
  734.64 +RDATE:19390301T000000
  734.65 +RDATE:19400301T000000
  734.66 +RDATE:19410615T000000
  734.67 +RDATE:19430801T000000
  734.68 +RDATE:19460301T000000
  734.69 +RDATE:19631001T000000
  734.70 +RDATE:19640301T000000
  734.71 +RDATE:19650301T000000
  734.72 +RDATE:19660301T000000
  734.73 +RDATE:19670402T000000
  734.74 +RDATE:19680407T000000
  734.75 +RDATE:19690406T000000
  734.76 +END:STANDARD
  734.77 +BEGIN:STANDARD
  734.78 +TZOFFSETFROM:-0400
  734.79 +TZOFFSETTO:-0300
  734.80 +TZNAME:ART
  734.81 +DTSTART:19691005T000000
  734.82 +RDATE:19691005T000000
  734.83 +RDATE:20040620T000000
  734.84 +END:STANDARD
  734.85 +BEGIN:DAYLIGHT
  734.86 +TZOFFSETFROM:-0300
  734.87 +TZOFFSETTO:-0200
  734.88 +TZNAME:ARST
  734.89 +DTSTART:19740123T000000
  734.90 +RDATE:19740123T000000
  734.91 +RDATE:19881201T000000
  734.92 +RDATE:19891015T000000
  734.93 +RDATE:19901021T000000
  734.94 +RDATE:19911020T000000
  734.95 +RDATE:19921018T000000
  734.96 +RDATE:20071230T000000
  734.97 +END:DAYLIGHT
  734.98 +BEGIN:STANDARD
  734.99 +TZOFFSETFROM:-0200
 734.100 +TZOFFSETTO:-0300
 734.101 +TZNAME:ART
 734.102 +DTSTART:19740501T000000
 734.103 +RDATE:19740501T000000
 734.104 +RDATE:19890305T000000
 734.105 +RDATE:19900304T000000
 734.106 +RDATE:19910303T000000
 734.107 +RDATE:19920301T000000
 734.108 +RDATE:19930307T000000
 734.109 +RDATE:20080316T000000
 734.110 +END:STANDARD
 734.111 +BEGIN:DAYLIGHT
 734.112 +TZOFFSETFROM:-0300
 734.113 +TZOFFSETTO:-0300
 734.114 +TZNAME:ARST
 734.115 +DTSTART:19991003T000000
 734.116 +RDATE:19991003T000000
 734.117 +END:DAYLIGHT
 734.118 +BEGIN:STANDARD
 734.119 +TZOFFSETFROM:-0300
 734.120 +TZOFFSETTO:-0300
 734.121 +TZNAME:ART
 734.122 +DTSTART:20000303T000000
 734.123 +RDATE:20000303T000000
 734.124 +RDATE:20081018T000000
 734.125 +END:STANDARD
 734.126 +BEGIN:STANDARD
 734.127 +TZOFFSETFROM:-0300
 734.128 +TZOFFSETTO:-0400
 734.129 +TZNAME:WART
 734.130 +DTSTART:20040530T000000
 734.131 +RDATE:20040530T000000
 734.132 +END:STANDARD
 734.133 +END:VTIMEZONE
 734.134 +END:VCALENDAR
   735.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   735.2 +++ b/src/zoneinfo/America/Aruba.ics	Tue Feb 10 18:12:00 2015 +0100
   735.3 @@ -0,0 +1,23 @@
   735.4 +BEGIN:VCALENDAR
   735.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   735.6 +VERSION:2.0
   735.7 +BEGIN:VTIMEZONE
   735.8 +TZID:America/Aruba
   735.9 +TZURL:http://tzurl.org/zoneinfo/America/Aruba
  735.10 +X-LIC-LOCATION:America/Aruba
  735.11 +BEGIN:STANDARD
  735.12 +TZOFFSETFROM:-044024
  735.13 +TZOFFSETTO:-0430
  735.14 +TZNAME:ANT
  735.15 +DTSTART:19120212T000000
  735.16 +RDATE:19120212T000000
  735.17 +END:STANDARD
  735.18 +BEGIN:STANDARD
  735.19 +TZOFFSETFROM:-0430
  735.20 +TZOFFSETTO:-0400
  735.21 +TZNAME:AST
  735.22 +DTSTART:19650101T000000
  735.23 +RDATE:19650101T000000
  735.24 +END:STANDARD
  735.25 +END:VTIMEZONE
  735.26 +END:VCALENDAR
   736.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   736.2 +++ b/src/zoneinfo/America/Asuncion.ics	Tue Feb 10 18:12:00 2015 +0100
   736.3 @@ -0,0 +1,133 @@
   736.4 +BEGIN:VCALENDAR
   736.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   736.6 +VERSION:2.0
   736.7 +BEGIN:VTIMEZONE
   736.8 +TZID:America/Asuncion
   736.9 +TZURL:http://tzurl.org/zoneinfo/America/Asuncion
  736.10 +X-LIC-LOCATION:America/Asuncion
  736.11 +BEGIN:STANDARD
  736.12 +TZOFFSETFROM:-0300
  736.13 +TZOFFSETTO:-0400
  736.14 +TZNAME:PYT
  736.15 +DTSTART:20100411T000000
  736.16 +RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=2SU
  736.17 +END:STANDARD
  736.18 +BEGIN:DAYLIGHT
  736.19 +TZOFFSETFROM:-0400
  736.20 +TZOFFSETTO:-0300
  736.21 +TZNAME:PYST
  736.22 +DTSTART:20101003T000000
  736.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU
  736.24 +END:DAYLIGHT
  736.25 +BEGIN:STANDARD
  736.26 +TZOFFSETFROM:-035040
  736.27 +TZOFFSETTO:-035040
  736.28 +TZNAME:AMT
  736.29 +DTSTART:18900101T000000
  736.30 +RDATE:18900101T000000
  736.31 +END:STANDARD
  736.32 +BEGIN:STANDARD
  736.33 +TZOFFSETFROM:-035040
  736.34 +TZOFFSETTO:-0400
  736.35 +TZNAME:PYT
  736.36 +DTSTART:19311010T000000
  736.37 +RDATE:19311010T000000
  736.38 +END:STANDARD
  736.39 +BEGIN:STANDARD
  736.40 +TZOFFSETFROM:-0400
  736.41 +TZOFFSETTO:-0300
  736.42 +TZNAME:PYT
  736.43 +DTSTART:19721001T000000
  736.44 +RDATE:19721001T000000
  736.45 +END:STANDARD
  736.46 +BEGIN:STANDARD
  736.47 +TZOFFSETFROM:-0300
  736.48 +TZOFFSETTO:-0400
  736.49 +TZNAME:PYT
  736.50 +DTSTART:19740401T000000
  736.51 +RDATE:19740401T000000
  736.52 +RDATE:19760301T000000
  736.53 +RDATE:19770301T000000
  736.54 +RDATE:19780301T000000
  736.55 +RDATE:19790401T000000
  736.56 +RDATE:19800401T000000
  736.57 +RDATE:19810401T000000
  736.58 +RDATE:19820401T000000
  736.59 +RDATE:19830401T000000
  736.60 +RDATE:19840401T000000
  736.61 +RDATE:19850401T000000
  736.62 +RDATE:19860401T000000
  736.63 +RDATE:19870401T000000
  736.64 +RDATE:19880401T000000
  736.65 +RDATE:19890401T000000
  736.66 +RDATE:19900401T000000
  736.67 +RDATE:19910401T000000
  736.68 +RDATE:19920301T000000
  736.69 +RDATE:19930331T000000
  736.70 +RDATE:19940227T000000
  736.71 +RDATE:19950226T000000
  736.72 +RDATE:19960301T000000
  736.73 +RDATE:19970223T000000
  736.74 +RDATE:19980301T000000
  736.75 +RDATE:19990307T000000
  736.76 +RDATE:20000305T000000
  736.77 +RDATE:20010304T000000
  736.78 +RDATE:20020407T000000
  736.79 +RDATE:20030406T000000
  736.80 +RDATE:20040404T000000
  736.81 +RDATE:20050313T000000
  736.82 +RDATE:20060312T000000
  736.83 +RDATE:20070311T000000
  736.84 +RDATE:20080309T000000
  736.85 +RDATE:20090308T000000
  736.86 +END:STANDARD
  736.87 +BEGIN:STANDARD
  736.88 +TZOFFSETFROM:-0400
  736.89 +TZOFFSETTO:-0400
  736.90 +TZNAME:PYT
  736.91 +DTSTART:19750301T000000
  736.92 +RDATE:19750301T000000
  736.93 +END:STANDARD
  736.94 +BEGIN:DAYLIGHT
  736.95 +TZOFFSETFROM:-0400
  736.96 +TZOFFSETTO:-0300
  736.97 +TZNAME:PYST
  736.98 +DTSTART:19751001T000000
  736.99 +RDATE:19751001T000000
 736.100 +RDATE:19761001T000000
 736.101 +RDATE:19771001T000000
 736.102 +RDATE:19781001T000000
 736.103 +RDATE:19791001T000000
 736.104 +RDATE:19801001T000000
 736.105 +RDATE:19811001T000000
 736.106 +RDATE:19821001T000000
 736.107 +RDATE:19831001T000000
 736.108 +RDATE:19841001T000000
 736.109 +RDATE:19851001T000000
 736.110 +RDATE:19861001T000000
 736.111 +RDATE:19871001T000000
 736.112 +RDATE:19881001T000000
 736.113 +RDATE:19891022T000000
 736.114 +RDATE:19901001T000000
 736.115 +RDATE:19911006T000000
 736.116 +RDATE:19921005T000000
 736.117 +RDATE:19931001T000000
 736.118 +RDATE:19941001T000000
 736.119 +RDATE:19951001T000000
 736.120 +RDATE:19961006T000000
 736.121 +RDATE:19971005T000000
 736.122 +RDATE:19981004T000000
 736.123 +RDATE:19991003T000000
 736.124 +RDATE:20001001T000000
 736.125 +RDATE:20011007T000000
 736.126 +RDATE:20020901T000000
 736.127 +RDATE:20030907T000000
 736.128 +RDATE:20041017T000000
 736.129 +RDATE:20051016T000000
 736.130 +RDATE:20061015T000000
 736.131 +RDATE:20071021T000000
 736.132 +RDATE:20081019T000000
 736.133 +RDATE:20091018T000000
 736.134 +END:DAYLIGHT
 736.135 +END:VTIMEZONE
 736.136 +END:VCALENDAR
   737.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   737.2 +++ b/src/zoneinfo/America/Atikokan.ics	Tue Feb 10 18:12:00 2015 +0100
   737.3 @@ -0,0 +1,52 @@
   737.4 +BEGIN:VCALENDAR
   737.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   737.6 +VERSION:2.0
   737.7 +BEGIN:VTIMEZONE
   737.8 +TZID:America/Atikokan
   737.9 +TZURL:http://tzurl.org/zoneinfo/America/Atikokan
  737.10 +X-LIC-LOCATION:America/Atikokan
  737.11 +BEGIN:STANDARD
  737.12 +TZOFFSETFROM:-060628
  737.13 +TZOFFSETTO:-0600
  737.14 +TZNAME:CST
  737.15 +DTSTART:18950101T000000
  737.16 +RDATE:18950101T000000
  737.17 +END:STANDARD
  737.18 +BEGIN:DAYLIGHT
  737.19 +TZOFFSETFROM:-0600
  737.20 +TZOFFSETTO:-0500
  737.21 +TZNAME:CDT
  737.22 +DTSTART:19180414T020000
  737.23 +RDATE:19180414T020000
  737.24 +RDATE:19400929T000000
  737.25 +END:DAYLIGHT
  737.26 +BEGIN:STANDARD
  737.27 +TZOFFSETFROM:-0500
  737.28 +TZOFFSETTO:-0600
  737.29 +TZNAME:CST
  737.30 +DTSTART:19181031T020000
  737.31 +RDATE:19181031T020000
  737.32 +END:STANDARD
  737.33 +BEGIN:DAYLIGHT
  737.34 +TZOFFSETFROM:-0500
  737.35 +TZOFFSETTO:-0500
  737.36 +TZNAME:CWT
  737.37 +DTSTART:19420209T020000
  737.38 +RDATE:19420209T020000
  737.39 +END:DAYLIGHT
  737.40 +BEGIN:DAYLIGHT
  737.41 +TZOFFSETFROM:-0500
  737.42 +TZOFFSETTO:-0500
  737.43 +TZNAME:CPT
  737.44 +DTSTART:19450814T180000
  737.45 +RDATE:19450814T180000
  737.46 +END:DAYLIGHT
  737.47 +BEGIN:STANDARD
  737.48 +TZOFFSETFROM:-0500
  737.49 +TZOFFSETTO:-0500
  737.50 +TZNAME:EST
  737.51 +DTSTART:19450930T020000
  737.52 +RDATE:19450930T020000
  737.53 +END:STANDARD
  737.54 +END:VTIMEZONE
  737.55 +END:VCALENDAR
   738.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   738.2 +++ b/src/zoneinfo/America/Bahia.ics	Tue Feb 10 18:12:00 2015 +0100
   738.3 @@ -0,0 +1,133 @@
   738.4 +BEGIN:VCALENDAR
   738.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   738.6 +VERSION:2.0
   738.7 +BEGIN:VTIMEZONE
   738.8 +TZID:America/Bahia
   738.9 +TZURL:http://tzurl.org/zoneinfo/America/Bahia
  738.10 +X-LIC-LOCATION:America/Bahia
  738.11 +BEGIN:DAYLIGHT
  738.12 +TZOFFSETFROM:-0300
  738.13 +TZOFFSETTO:-0200
  738.14 +TZNAME:BRST
  738.15 +DTSTART:20111016T000000
  738.16 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=3SU
  738.17 +END:DAYLIGHT
  738.18 +BEGIN:STANDARD
  738.19 +TZOFFSETFROM:-0300
  738.20 +TZOFFSETTO:-0300
  738.21 +TZNAME:BRT
  738.22 +DTSTART:20380221T000000
  738.23 +RRULE:FREQ=YEARLY;BYMONTH=2;BYDAY=3SU
  738.24 +END:STANDARD
  738.25 +BEGIN:STANDARD
  738.26 +TZOFFSETFROM:-023404
  738.27 +TZOFFSETTO:-0300
  738.28 +TZNAME:BRT
  738.29 +DTSTART:19140101T000000
  738.30 +RDATE:19140101T000000
  738.31 +END:STANDARD
  738.32 +BEGIN:DAYLIGHT
  738.33 +TZOFFSETFROM:-0300
  738.34 +TZOFFSETTO:-0200
  738.35 +TZNAME:BRST
  738.36 +DTSTART:19311003T110000
  738.37 +RDATE:19311003T110000
  738.38 +RDATE:19321003T000000
  738.39 +RDATE:19491201T000000
  738.40 +RDATE:19501201T000000
  738.41 +RDATE:19511201T000000
  738.42 +RDATE:19521201T000000
  738.43 +RDATE:19631209T000000
  738.44 +RDATE:19650131T000000
  738.45 +RDATE:19651201T000000
  738.46 +RDATE:19661101T000000
  738.47 +RDATE:19671101T000000
  738.48 +RDATE:19851102T000000
  738.49 +RDATE:19861025T000000
  738.50 +RDATE:19871025T000000
  738.51 +RDATE:19881016T000000
  738.52 +RDATE:19891015T000000
  738.53 +RDATE:19901021T000000
  738.54 +RDATE:19911020T000000
  738.55 +RDATE:19921025T000000
  738.56 +RDATE:19931017T000000
  738.57 +RDATE:19941016T000000
  738.58 +RDATE:19951015T000000
  738.59 +RDATE:19961006T000000
  738.60 +RDATE:19971006T000000
  738.61 +RDATE:19981011T000000
  738.62 +RDATE:19991003T000000
  738.63 +RDATE:20001008T000000
  738.64 +RDATE:20011014T000000
  738.65 +RDATE:20021103T000000
  738.66 +END:DAYLIGHT
  738.67 +BEGIN:STANDARD
  738.68 +TZOFFSETFROM:-0200
  738.69 +TZOFFSETTO:-0300
  738.70 +TZNAME:BRT
  738.71 +DTSTART:19320401T000000
  738.72 +RDATE:19320401T000000
  738.73 +RDATE:19330401T000000
  738.74 +RDATE:19500416T010000
  738.75 +RDATE:19510401T000000
  738.76 +RDATE:19520401T000000
  738.77 +RDATE:19530301T000000
  738.78 +RDATE:19640301T000000
  738.79 +RDATE:19650331T000000
  738.80 +RDATE:19660301T000000
  738.81 +RDATE:19670301T000000
  738.82 +RDATE:19680301T000000
  738.83 +RDATE:19860315T000000
  738.84 +RDATE:19870214T000000
  738.85 +RDATE:19880207T000000
  738.86 +RDATE:19890129T000000
  738.87 +RDATE:19900211T000000
  738.88 +RDATE:19910217T000000
  738.89 +RDATE:19920209T000000
  738.90 +RDATE:19930131T000000
  738.91 +RDATE:19940220T000000
  738.92 +RDATE:19950219T000000
  738.93 +RDATE:19960211T000000
  738.94 +RDATE:19970216T000000
  738.95 +RDATE:19980301T000000
  738.96 +RDATE:19990221T000000
  738.97 +RDATE:20000227T000000
  738.98 +RDATE:20010218T000000
  738.99 +RDATE:20020217T000000
 738.100 +RDATE:20030216T000000
 738.101 +RDATE:20120226T000000
 738.102 +RDATE:20130217T000000
 738.103 +RDATE:20140216T000000
 738.104 +END:STANDARD
 738.105 +BEGIN:STANDARD
 738.106 +TZOFFSETFROM:-0300
 738.107 +TZOFFSETTO:-0300
 738.108 +TZNAME:BRT
 738.109 +DTSTART:20030924T000000
 738.110 +RDATE:20030924T000000
 738.111 +RDATE:20150222T000000
 738.112 +RDATE:20160221T000000
 738.113 +RDATE:20170219T000000
 738.114 +RDATE:20180218T000000
 738.115 +RDATE:20190217T000000
 738.116 +RDATE:20200216T000000
 738.117 +RDATE:20210221T000000
 738.118 +RDATE:20220220T000000
 738.119 +RDATE:20230226T000000
 738.120 +RDATE:20240218T000000
 738.121 +RDATE:20250216T000000
 738.122 +RDATE:20260222T000000
 738.123 +RDATE:20270221T000000
 738.124 +RDATE:20280220T000000
 738.125 +RDATE:20290218T000000
 738.126 +RDATE:20300217T000000
 738.127 +RDATE:20310216T000000
 738.128 +RDATE:20320215T000000
 738.129 +RDATE:20330220T000000
 738.130 +RDATE:20340226T000000
 738.131 +RDATE:20350218T000000
 738.132 +RDATE:20360217T000000
 738.133 +RDATE:20370222T000000
 738.134 +END:STANDARD
 738.135 +END:VTIMEZONE
 738.136 +END:VCALENDAR
   739.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   739.2 +++ b/src/zoneinfo/America/Bahia_Banderas.ics	Tue Feb 10 18:12:00 2015 +0100
   739.3 @@ -0,0 +1,103 @@
   739.4 +BEGIN:VCALENDAR
   739.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   739.6 +VERSION:2.0
   739.7 +BEGIN:VTIMEZONE
   739.8 +TZID:America/Bahia_Banderas
   739.9 +TZURL:http://tzurl.org/zoneinfo/America/Bahia_Banderas
  739.10 +X-LIC-LOCATION:America/Bahia_Banderas
  739.11 +BEGIN:STANDARD
  739.12 +TZOFFSETFROM:-0500
  739.13 +TZOFFSETTO:-0600
  739.14 +TZNAME:CST
  739.15 +DTSTART:20101031T020000
  739.16 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  739.17 +END:STANDARD
  739.18 +BEGIN:DAYLIGHT
  739.19 +TZOFFSETFROM:-0600
  739.20 +TZOFFSETTO:-0500
  739.21 +TZNAME:CDT
  739.22 +DTSTART:20110403T020000
  739.23 +RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU
  739.24 +END:DAYLIGHT
  739.25 +BEGIN:STANDARD
  739.26 +TZOFFSETFROM:-0701
  739.27 +TZOFFSETTO:-0700
  739.28 +TZNAME:MST
  739.29 +DTSTART:19211231T235900
  739.30 +RDATE:19211231T235900
  739.31 +END:STANDARD
  739.32 +BEGIN:STANDARD
  739.33 +TZOFFSETFROM:-0700
  739.34 +TZOFFSETTO:-0600
  739.35 +TZNAME:CST
  739.36 +DTSTART:19270610T230000
  739.37 +RDATE:19270610T230000
  739.38 +RDATE:19310501T230000
  739.39 +RDATE:19320401T000000
  739.40 +END:STANDARD
  739.41 +BEGIN:STANDARD
  739.42 +TZOFFSETFROM:-0600
  739.43 +TZOFFSETTO:-0700
  739.44 +TZNAME:MST
  739.45 +DTSTART:19301115T000000
  739.46 +RDATE:19301115T000000
  739.47 +RDATE:19311001T000000
  739.48 +RDATE:19420424T000000
  739.49 +RDATE:19961027T020000
  739.50 +RDATE:19971026T020000
  739.51 +RDATE:19981025T020000
  739.52 +RDATE:19991031T020000
  739.53 +RDATE:20001029T020000
  739.54 +RDATE:20010930T020000
  739.55 +RDATE:20021027T020000
  739.56 +RDATE:20031026T020000
  739.57 +RDATE:20041031T020000
  739.58 +RDATE:20051030T020000
  739.59 +RDATE:20061029T020000
  739.60 +RDATE:20071028T020000
  739.61 +RDATE:20081026T020000
  739.62 +RDATE:20091025T020000
  739.63 +END:STANDARD
  739.64 +BEGIN:STANDARD
  739.65 +TZOFFSETFROM:-0700
  739.66 +TZOFFSETTO:-0800
  739.67 +TZNAME:PST
  739.68 +DTSTART:19490114T000000
  739.69 +RDATE:19490114T000000
  739.70 +END:STANDARD
  739.71 +BEGIN:STANDARD
  739.72 +TZOFFSETFROM:-0800
  739.73 +TZOFFSETTO:-0700
  739.74 +TZNAME:MST
  739.75 +DTSTART:19700101T000000
  739.76 +RDATE:19700101T000000
  739.77 +END:STANDARD
  739.78 +BEGIN:DAYLIGHT
  739.79 +TZOFFSETFROM:-0700
  739.80 +TZOFFSETTO:-0600
  739.81 +TZNAME:MDT
  739.82 +DTSTART:19960407T020000
  739.83 +RDATE:19960407T020000
  739.84 +RDATE:19970406T020000
  739.85 +RDATE:19980405T020000
  739.86 +RDATE:19990404T020000
  739.87 +RDATE:20000402T020000
  739.88 +RDATE:20010506T020000
  739.89 +RDATE:20020407T020000
  739.90 +RDATE:20030406T020000
  739.91 +RDATE:20040404T020000
  739.92 +RDATE:20050403T020000
  739.93 +RDATE:20060402T020000
  739.94 +RDATE:20070401T020000
  739.95 +RDATE:20080406T020000
  739.96 +RDATE:20090405T020000
  739.97 +END:DAYLIGHT
  739.98 +BEGIN:DAYLIGHT
  739.99 +TZOFFSETFROM:-0700
 739.100 +TZOFFSETTO:-0500
 739.101 +TZNAME:CDT
 739.102 +DTSTART:20100404T020000
 739.103 +RDATE:20100404T020000
 739.104 +END:DAYLIGHT
 739.105 +END:VTIMEZONE
 739.106 +END:VCALENDAR
   740.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   740.2 +++ b/src/zoneinfo/America/Barbados.ics	Tue Feb 10 18:12:00 2015 +0100
   740.3 @@ -0,0 +1,43 @@
   740.4 +BEGIN:VCALENDAR
   740.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   740.6 +VERSION:2.0
   740.7 +BEGIN:VTIMEZONE
   740.8 +TZID:America/Barbados
   740.9 +TZURL:http://tzurl.org/zoneinfo/America/Barbados
  740.10 +X-LIC-LOCATION:America/Barbados
  740.11 +BEGIN:STANDARD
  740.12 +TZOFFSETFROM:-035828
  740.13 +TZOFFSETTO:-035828
  740.14 +TZNAME:BMT
  740.15 +DTSTART:19240101T000000
  740.16 +RDATE:19240101T000000
  740.17 +END:STANDARD
  740.18 +BEGIN:STANDARD
  740.19 +TZOFFSETFROM:-035828
  740.20 +TZOFFSETTO:-0400
  740.21 +TZNAME:AST
  740.22 +DTSTART:19320101T000000
  740.23 +RDATE:19320101T000000
  740.24 +END:STANDARD
  740.25 +BEGIN:DAYLIGHT
  740.26 +TZOFFSETFROM:-0400
  740.27 +TZOFFSETTO:-0300
  740.28 +TZNAME:ADT
  740.29 +DTSTART:19770612T020000
  740.30 +RDATE:19770612T020000
  740.31 +RDATE:19780416T020000
  740.32 +RDATE:19790415T020000
  740.33 +RDATE:19800420T020000
  740.34 +END:DAYLIGHT
  740.35 +BEGIN:STANDARD
  740.36 +TZOFFSETFROM:-0300
  740.37 +TZOFFSETTO:-0400
  740.38 +TZNAME:AST
  740.39 +DTSTART:19771002T020000
  740.40 +RDATE:19771002T020000
  740.41 +RDATE:19781001T020000
  740.42 +RDATE:19790930T020000
  740.43 +RDATE:19800925T020000
  740.44 +END:STANDARD
  740.45 +END:VTIMEZONE
  740.46 +END:VCALENDAR
   741.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   741.2 +++ b/src/zoneinfo/America/Belem.ics	Tue Feb 10 18:12:00 2015 +0100
   741.3 @@ -0,0 +1,63 @@
   741.4 +BEGIN:VCALENDAR
   741.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   741.6 +VERSION:2.0
   741.7 +BEGIN:VTIMEZONE
   741.8 +TZID:America/Belem
   741.9 +TZURL:http://tzurl.org/zoneinfo/America/Belem
  741.10 +X-LIC-LOCATION:America/Belem
  741.11 +BEGIN:STANDARD
  741.12 +TZOFFSETFROM:-031356
  741.13 +TZOFFSETTO:-0300
  741.14 +TZNAME:BRT
  741.15 +DTSTART:19140101T000000
  741.16 +RDATE:19140101T000000
  741.17 +END:STANDARD
  741.18 +BEGIN:DAYLIGHT
  741.19 +TZOFFSETFROM:-0300
  741.20 +TZOFFSETTO:-0200
  741.21 +TZNAME:BRST
  741.22 +DTSTART:19311003T110000
  741.23 +RDATE:19311003T110000
  741.24 +RDATE:19321003T000000
  741.25 +RDATE:19491201T000000
  741.26 +RDATE:19501201T000000
  741.27 +RDATE:19511201T000000
  741.28 +RDATE:19521201T000000
  741.29 +RDATE:19631209T000000
  741.30 +RDATE:19650131T000000
  741.31 +RDATE:19651201T000000
  741.32 +RDATE:19661101T000000
  741.33 +RDATE:19671101T000000
  741.34 +RDATE:19851102T000000
  741.35 +RDATE:19861025T000000
  741.36 +RDATE:19871025T000000
  741.37 +END:DAYLIGHT
  741.38 +BEGIN:STANDARD
  741.39 +TZOFFSETFROM:-0200
  741.40 +TZOFFSETTO:-0300
  741.41 +TZNAME:BRT
  741.42 +DTSTART:19320401T000000
  741.43 +RDATE:19320401T000000
  741.44 +RDATE:19330401T000000
  741.45 +RDATE:19500416T010000
  741.46 +RDATE:19510401T000000
  741.47 +RDATE:19520401T000000
  741.48 +RDATE:19530301T000000
  741.49 +RDATE:19640301T000000
  741.50 +RDATE:19650331T000000
  741.51 +RDATE:19660301T000000
  741.52 +RDATE:19670301T000000
  741.53 +RDATE:19680301T000000
  741.54 +RDATE:19860315T000000
  741.55 +RDATE:19870214T000000
  741.56 +RDATE:19880207T000000
  741.57 +END:STANDARD
  741.58 +BEGIN:STANDARD
  741.59 +TZOFFSETFROM:-0300
  741.60 +TZOFFSETTO:-0300
  741.61 +TZNAME:BRT
  741.62 +DTSTART:19880912T000000
  741.63 +RDATE:19880912T000000
  741.64 +END:STANDARD
  741.65 +END:VTIMEZONE
  741.66 +END:VCALENDAR
   742.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   742.2 +++ b/src/zoneinfo/America/Belize.ics	Tue Feb 10 18:12:00 2015 +0100
   742.3 @@ -0,0 +1,94 @@
   742.4 +BEGIN:VCALENDAR
   742.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   742.6 +VERSION:2.0
   742.7 +BEGIN:VTIMEZONE
   742.8 +TZID:America/Belize
   742.9 +TZURL:http://tzurl.org/zoneinfo/America/Belize
  742.10 +X-LIC-LOCATION:America/Belize
  742.11 +BEGIN:STANDARD
  742.12 +TZOFFSETFROM:-055248
  742.13 +TZOFFSETTO:-0600
  742.14 +TZNAME:CST
  742.15 +DTSTART:19120401T000000
  742.16 +RDATE:19120401T000000
  742.17 +END:STANDARD
  742.18 +BEGIN:DAYLIGHT
  742.19 +TZOFFSETFROM:-0600
  742.20 +TZOFFSETTO:-0530
  742.21 +TZNAME:CHDT
  742.22 +DTSTART:19181006T000000
  742.23 +RDATE:19181006T000000
  742.24 +RDATE:19191005T000000
  742.25 +RDATE:19201003T000000
  742.26 +RDATE:19211002T000000
  742.27 +RDATE:19221008T000000
  742.28 +RDATE:19231007T000000
  742.29 +RDATE:19241005T000000
  742.30 +RDATE:19251004T000000
  742.31 +RDATE:19261003T000000
  742.32 +RDATE:19271002T000000
  742.33 +RDATE:19281007T000000
  742.34 +RDATE:19291006T000000
  742.35 +RDATE:19301005T000000
  742.36 +RDATE:19311004T000000
  742.37 +RDATE:19321002T000000
  742.38 +RDATE:19331008T000000
  742.39 +RDATE:19341007T000000
  742.40 +RDATE:19351006T000000
  742.41 +RDATE:19361004T000000
  742.42 +RDATE:19371003T000000
  742.43 +RDATE:19381002T000000
  742.44 +RDATE:19391008T000000
  742.45 +RDATE:19401006T000000
  742.46 +RDATE:19411005T000000
  742.47 +RDATE:19421004T000000
  742.48 +END:DAYLIGHT
  742.49 +BEGIN:STANDARD
  742.50 +TZOFFSETFROM:-0530
  742.51 +TZOFFSETTO:-0600
  742.52 +TZNAME:CST
  742.53 +DTSTART:19190209T000000
  742.54 +RDATE:19190209T000000
  742.55 +RDATE:19200215T000000
  742.56 +RDATE:19210213T000000
  742.57 +RDATE:19220212T000000
  742.58 +RDATE:19230211T000000
  742.59 +RDATE:19240210T000000
  742.60 +RDATE:19250215T000000
  742.61 +RDATE:19260214T000000
  742.62 +RDATE:19270213T000000
  742.63 +RDATE:19280212T000000
  742.64 +RDATE:19290210T000000
  742.65 +RDATE:19300209T000000
  742.66 +RDATE:19310215T000000
  742.67 +RDATE:19320214T000000
  742.68 +RDATE:19330212T000000
  742.69 +RDATE:19340211T000000
  742.70 +RDATE:19350210T000000
  742.71 +RDATE:19360209T000000
  742.72 +RDATE:19370214T000000
  742.73 +RDATE:19380213T000000
  742.74 +RDATE:19390212T000000
  742.75 +RDATE:19400211T000000
  742.76 +RDATE:19410209T000000
  742.77 +RDATE:19420215T000000
  742.78 +RDATE:19430214T000000
  742.79 +END:STANDARD
  742.80 +BEGIN:DAYLIGHT
  742.81 +TZOFFSETFROM:-0600
  742.82 +TZOFFSETTO:-0500
  742.83 +TZNAME:CDT
  742.84 +DTSTART:19731205T000000
  742.85 +RDATE:19731205T000000
  742.86 +RDATE:19821218T000000
  742.87 +END:DAYLIGHT
  742.88 +BEGIN:STANDARD
  742.89 +TZOFFSETFROM:-0500
  742.90 +TZOFFSETTO:-0600
  742.91 +TZNAME:CST
  742.92 +DTSTART:19740209T000000
  742.93 +RDATE:19740209T000000
  742.94 +RDATE:19830212T000000
  742.95 +END:STANDARD
  742.96 +END:VTIMEZONE
  742.97 +END:VCALENDAR
   743.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   743.2 +++ b/src/zoneinfo/America/Blanc-Sablon.ics	Tue Feb 10 18:12:00 2015 +0100
   743.3 @@ -0,0 +1,52 @@
   743.4 +BEGIN:VCALENDAR
   743.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   743.6 +VERSION:2.0
   743.7 +BEGIN:VTIMEZONE
   743.8 +TZID:America/Blanc-Sablon
   743.9 +TZURL:http://tzurl.org/zoneinfo/America/Blanc-Sablon
  743.10 +X-LIC-LOCATION:America/Blanc-Sablon
  743.11 +BEGIN:STANDARD
  743.12 +TZOFFSETFROM:-034828
  743.13 +TZOFFSETTO:-0400
  743.14 +TZNAME:AST
  743.15 +DTSTART:18840101T000000
  743.16 +RDATE:18840101T000000
  743.17 +END:STANDARD
  743.18 +BEGIN:DAYLIGHT
  743.19 +TZOFFSETFROM:-0400
  743.20 +TZOFFSETTO:-0300
  743.21 +TZNAME:ADT
  743.22 +DTSTART:19180414T020000
  743.23 +RDATE:19180414T020000
  743.24 +END:DAYLIGHT
  743.25 +BEGIN:STANDARD
  743.26 +TZOFFSETFROM:-0300
  743.27 +TZOFFSETTO:-0400
  743.28 +TZNAME:AST
  743.29 +DTSTART:19181031T020000
  743.30 +RDATE:19181031T020000
  743.31 +RDATE:19450930T020000
  743.32 +END:STANDARD
  743.33 +BEGIN:DAYLIGHT
  743.34 +TZOFFSETFROM:-0400
  743.35 +TZOFFSETTO:-0300
  743.36 +TZNAME:AWT
  743.37 +DTSTART:19420209T020000
  743.38 +RDATE:19420209T020000
  743.39 +END:DAYLIGHT
  743.40 +BEGIN:DAYLIGHT
  743.41 +TZOFFSETFROM:-0300
  743.42 +TZOFFSETTO:-0300
  743.43 +TZNAME:APT
  743.44 +DTSTART:19450814T200000
  743.45 +RDATE:19450814T200000
  743.46 +END:DAYLIGHT
  743.47 +BEGIN:STANDARD
  743.48 +TZOFFSETFROM:-0400
  743.49 +TZOFFSETTO:-0400
  743.50 +TZNAME:AST
  743.51 +DTSTART:19700101T000000
  743.52 +RDATE:19700101T000000
  743.53 +END:STANDARD
  743.54 +END:VTIMEZONE
  743.55 +END:VCALENDAR
   744.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   744.2 +++ b/src/zoneinfo/America/Boa_Vista.ics	Tue Feb 10 18:12:00 2015 +0100
   744.3 @@ -0,0 +1,68 @@
   744.4 +BEGIN:VCALENDAR
   744.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   744.6 +VERSION:2.0
   744.7 +BEGIN:VTIMEZONE
   744.8 +TZID:America/Boa_Vista
   744.9 +TZURL:http://tzurl.org/zoneinfo/America/Boa_Vista
  744.10 +X-LIC-LOCATION:America/Boa_Vista
  744.11 +BEGIN:STANDARD
  744.12 +TZOFFSETFROM:-040240
  744.13 +TZOFFSETTO:-0400
  744.14 +TZNAME:AMT
  744.15 +DTSTART:19140101T000000
  744.16 +RDATE:19140101T000000
  744.17 +END:STANDARD
  744.18 +BEGIN:DAYLIGHT
  744.19 +TZOFFSETFROM:-0400
  744.20 +TZOFFSETTO:-0300
  744.21 +TZNAME:AMST
  744.22 +DTSTART:19311003T110000
  744.23 +RDATE:19311003T110000
  744.24 +RDATE:19321003T000000
  744.25 +RDATE:19491201T000000
  744.26 +RDATE:19501201T000000
  744.27 +RDATE:19511201T000000
  744.28 +RDATE:19521201T000000
  744.29 +RDATE:19631209T000000
  744.30 +RDATE:19650131T000000
  744.31 +RDATE:19651201T000000
  744.32 +RDATE:19661101T000000
  744.33 +RDATE:19671101T000000
  744.34 +RDATE:19851102T000000
  744.35 +RDATE:19861025T000000
  744.36 +RDATE:19871025T000000
  744.37 +RDATE:19991003T000000
  744.38 +RDATE:20001008T000000
  744.39 +END:DAYLIGHT
  744.40 +BEGIN:STANDARD
  744.41 +TZOFFSETFROM:-0300
  744.42 +TZOFFSETTO:-0400
  744.43 +TZNAME:AMT
  744.44 +DTSTART:19320401T000000
  744.45 +RDATE:19320401T000000
  744.46 +RDATE:19330401T000000
  744.47 +RDATE:19500416T010000
  744.48 +RDATE:19510401T000000
  744.49 +RDATE:19520401T000000
  744.50 +RDATE:19530301T000000
  744.51 +RDATE:19640301T000000
  744.52 +RDATE:19650331T000000
  744.53 +RDATE:19660301T000000
  744.54 +RDATE:19670301T000000
  744.55 +RDATE:19680301T000000
  744.56 +RDATE:19860315T000000
  744.57 +RDATE:19870214T000000
  744.58 +RDATE:19880207T000000
  744.59 +RDATE:20000227T000000
  744.60 +RDATE:20001015T000000
  744.61 +END:STANDARD
  744.62 +BEGIN:STANDARD
  744.63 +TZOFFSETFROM:-0400
  744.64 +TZOFFSETTO:-0400
  744.65 +TZNAME:AMT
  744.66 +DTSTART:19880912T000000
  744.67 +RDATE:19880912T000000
  744.68 +RDATE:19990930T000000
  744.69 +END:STANDARD
  744.70 +END:VTIMEZONE
  744.71 +END:VCALENDAR
   745.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   745.2 +++ b/src/zoneinfo/America/Bogota.ics	Tue Feb 10 18:12:00 2015 +0100
   745.3 @@ -0,0 +1,37 @@
   745.4 +BEGIN:VCALENDAR
   745.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   745.6 +VERSION:2.0
   745.7 +BEGIN:VTIMEZONE
   745.8 +TZID:America/Bogota
   745.9 +TZURL:http://tzurl.org/zoneinfo/America/Bogota
  745.10 +X-LIC-LOCATION:America/Bogota
  745.11 +BEGIN:STANDARD
  745.12 +TZOFFSETFROM:-045620
  745.13 +TZOFFSETTO:-045620
  745.14 +TZNAME:BMT
  745.15 +DTSTART:18840313T000000
  745.16 +RDATE:18840313T000000
  745.17 +END:STANDARD
  745.18 +BEGIN:STANDARD
  745.19 +TZOFFSETFROM:-045620
  745.20 +TZOFFSETTO:-0500
  745.21 +TZNAME:COT
  745.22 +DTSTART:19141123T000000
  745.23 +RDATE:19141123T000000
  745.24 +END:STANDARD
  745.25 +BEGIN:DAYLIGHT
  745.26 +TZOFFSETFROM:-0500
  745.27 +TZOFFSETTO:-0400
  745.28 +TZNAME:COST
  745.29 +DTSTART:19920503T000000
  745.30 +RDATE:19920503T000000
  745.31 +END:DAYLIGHT
  745.32 +BEGIN:STANDARD
  745.33 +TZOFFSETFROM:-0400
  745.34 +TZOFFSETTO:-0500
  745.35 +TZNAME:COT
  745.36 +DTSTART:19930404T000000
  745.37 +RDATE:19930404T000000
  745.38 +END:STANDARD
  745.39 +END:VTIMEZONE
  745.40 +END:VCALENDAR
   746.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   746.2 +++ b/src/zoneinfo/America/Boise.ics	Tue Feb 10 18:12:00 2015 +0100
   746.3 @@ -0,0 +1,167 @@
   746.4 +BEGIN:VCALENDAR
   746.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   746.6 +VERSION:2.0
   746.7 +BEGIN:VTIMEZONE
   746.8 +TZID:America/Boise
   746.9 +TZURL:http://tzurl.org/zoneinfo/America/Boise
  746.10 +X-LIC-LOCATION:America/Boise
  746.11 +BEGIN:DAYLIGHT
  746.12 +TZOFFSETFROM:-0700
  746.13 +TZOFFSETTO:-0600
  746.14 +TZNAME:MDT
  746.15 +DTSTART:20070311T020000
  746.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  746.17 +END:DAYLIGHT
  746.18 +BEGIN:STANDARD
  746.19 +TZOFFSETFROM:-0600
  746.20 +TZOFFSETTO:-0700
  746.21 +TZNAME:MST
  746.22 +DTSTART:20071104T020000
  746.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  746.24 +END:STANDARD
  746.25 +BEGIN:STANDARD
  746.26 +TZOFFSETFROM:-074449
  746.27 +TZOFFSETTO:-0800
  746.28 +TZNAME:PST
  746.29 +DTSTART:18831118T121511
  746.30 +RDATE:18831118T121511
  746.31 +END:STANDARD
  746.32 +BEGIN:DAYLIGHT
  746.33 +TZOFFSETFROM:-0800
  746.34 +TZOFFSETTO:-0700
  746.35 +TZNAME:PDT
  746.36 +DTSTART:19180331T020000
  746.37 +RDATE:19180331T020000
  746.38 +RDATE:19190330T020000
  746.39 +END:DAYLIGHT
  746.40 +BEGIN:STANDARD
  746.41 +TZOFFSETFROM:-0700
  746.42 +TZOFFSETTO:-0800
  746.43 +TZNAME:PST
  746.44 +DTSTART:19181027T020000
  746.45 +RDATE:19181027T020000
  746.46 +RDATE:19191026T020000
  746.47 +END:STANDARD
  746.48 +BEGIN:STANDARD
  746.49 +TZOFFSETFROM:-0800
  746.50 +TZOFFSETTO:-0700
  746.51 +TZNAME:MST
  746.52 +DTSTART:19230513T020000
  746.53 +RDATE:19230513T020000
  746.54 +END:STANDARD
  746.55 +BEGIN:DAYLIGHT
  746.56 +TZOFFSETFROM:-0700
  746.57 +TZOFFSETTO:-0600
  746.58 +TZNAME:MWT
  746.59 +DTSTART:19420209T020000
  746.60 +RDATE:19420209T020000
  746.61 +END:DAYLIGHT
  746.62 +BEGIN:DAYLIGHT
  746.63 +TZOFFSETFROM:-0600
  746.64 +TZOFFSETTO:-0600
  746.65 +TZNAME:MPT
  746.66 +DTSTART:19450814T170000
  746.67 +RDATE:19450814T170000
  746.68 +END:DAYLIGHT
  746.69 +BEGIN:STANDARD
  746.70 +TZOFFSETFROM:-0600
  746.71 +TZOFFSETTO:-0700
  746.72 +TZNAME:MST
  746.73 +DTSTART:19450930T020000
  746.74 +RDATE:19450930T020000
  746.75 +RDATE:19671029T020000
  746.76 +RDATE:19681027T020000
  746.77 +RDATE:19691026T020000
  746.78 +RDATE:19701025T020000
  746.79 +RDATE:19711031T020000
  746.80 +RDATE:19721029T020000
  746.81 +RDATE:19731028T020000
  746.82 +RDATE:19741027T020000
  746.83 +RDATE:19751026T020000
  746.84 +RDATE:19761031T020000
  746.85 +RDATE:19771030T020000
  746.86 +RDATE:19781029T020000
  746.87 +RDATE:19791028T020000
  746.88 +RDATE:19801026T020000
  746.89 +RDATE:19811025T020000
  746.90 +RDATE:19821031T020000
  746.91 +RDATE:19831030T020000
  746.92 +RDATE:19841028T020000
  746.93 +RDATE:19851027T020000
  746.94 +RDATE:19861026T020000
  746.95 +RDATE:19871025T020000
  746.96 +RDATE:19881030T020000
  746.97 +RDATE:19891029T020000
  746.98 +RDATE:19901028T020000
  746.99 +RDATE:19911027T020000
 746.100 +RDATE:19921025T020000
 746.101 +RDATE:19931031T020000
 746.102 +RDATE:19941030T020000
 746.103 +RDATE:19951029T020000
 746.104 +RDATE:19961027T020000
 746.105 +RDATE:19971026T020000
 746.106 +RDATE:19981025T020000
 746.107 +RDATE:19991031T020000
 746.108 +RDATE:20001029T020000
 746.109 +RDATE:20011028T020000
 746.110 +RDATE:20021027T020000
 746.111 +RDATE:20031026T020000
 746.112 +RDATE:20041031T020000
 746.113 +RDATE:20051030T020000
 746.114 +RDATE:20061029T020000
 746.115 +END:STANDARD
 746.116 +BEGIN:DAYLIGHT
 746.117 +TZOFFSETFROM:-0700
 746.118 +TZOFFSETTO:-0600
 746.119 +TZNAME:MDT
 746.120 +DTSTART:19670430T020000
 746.121 +RDATE:19670430T020000
 746.122 +RDATE:19680428T020000
 746.123 +RDATE:19690427T020000
 746.124 +RDATE:19700426T020000
 746.125 +RDATE:19710425T020000
 746.126 +RDATE:19720430T020000
 746.127 +RDATE:19730429T020000
 746.128 +RDATE:19740203T020000
 746.129 +RDATE:19750223T020000
 746.130 +RDATE:19760425T020000
 746.131 +RDATE:19770424T020000
 746.132 +RDATE:19780430T020000
 746.133 +RDATE:19790429T020000
 746.134 +RDATE:19800427T020000
 746.135 +RDATE:19810426T020000
 746.136 +RDATE:19820425T020000
 746.137 +RDATE:19830424T020000
 746.138 +RDATE:19840429T020000
 746.139 +RDATE:19850428T020000
 746.140 +RDATE:19860427T020000
 746.141 +RDATE:19870405T020000
 746.142 +RDATE:19880403T020000
 746.143 +RDATE:19890402T020000
 746.144 +RDATE:19900401T020000
 746.145 +RDATE:19910407T020000
 746.146 +RDATE:19920405T020000
 746.147 +RDATE:19930404T020000
 746.148 +RDATE:19940403T020000
 746.149 +RDATE:19950402T020000
 746.150 +RDATE:19960407T020000
 746.151 +RDATE:19970406T020000
 746.152 +RDATE:19980405T020000
 746.153 +RDATE:19990404T020000
 746.154 +RDATE:20000402T020000
 746.155 +RDATE:20010401T020000
 746.156 +RDATE:20020407T020000
 746.157 +RDATE:20030406T020000
 746.158 +RDATE:20040404T020000
 746.159 +RDATE:20050403T020000
 746.160 +RDATE:20060402T020000
 746.161 +END:DAYLIGHT
 746.162 +BEGIN:STANDARD
 746.163 +TZOFFSETFROM:-0700
 746.164 +TZOFFSETTO:-0700
 746.165 +TZNAME:MST
 746.166 +DTSTART:19740101T000000
 746.167 +RDATE:19740101T000000
 746.168 +END:STANDARD
 746.169 +END:VTIMEZONE
 746.170 +END:VCALENDAR
   747.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   747.2 +++ b/src/zoneinfo/America/Cambridge_Bay.ics	Tue Feb 10 18:12:00 2015 +0100
   747.3 @@ -0,0 +1,156 @@
   747.4 +BEGIN:VCALENDAR
   747.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   747.6 +VERSION:2.0
   747.7 +BEGIN:VTIMEZONE
   747.8 +TZID:America/Cambridge_Bay
   747.9 +TZURL:http://tzurl.org/zoneinfo/America/Cambridge_Bay
  747.10 +X-LIC-LOCATION:America/Cambridge_Bay
  747.11 +BEGIN:DAYLIGHT
  747.12 +TZOFFSETFROM:-0700
  747.13 +TZOFFSETTO:-0600
  747.14 +TZNAME:MDT
  747.15 +DTSTART:20070311T020000
  747.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  747.17 +END:DAYLIGHT
  747.18 +BEGIN:STANDARD
  747.19 +TZOFFSETFROM:-0600
  747.20 +TZOFFSETTO:-0700
  747.21 +TZNAME:MST
  747.22 +DTSTART:20071104T020000
  747.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  747.24 +END:STANDARD
  747.25 +BEGIN:STANDARD
  747.26 +TZOFFSETFROM:+0000
  747.27 +TZOFFSETTO:-0700
  747.28 +TZNAME:MST
  747.29 +DTSTART:19200101T000000
  747.30 +RDATE:19200101T000000
  747.31 +END:STANDARD
  747.32 +BEGIN:DAYLIGHT
  747.33 +TZOFFSETFROM:-0700
  747.34 +TZOFFSETTO:-0600
  747.35 +TZNAME:MWT
  747.36 +DTSTART:19420209T020000
  747.37 +RDATE:19420209T020000
  747.38 +END:DAYLIGHT
  747.39 +BEGIN:DAYLIGHT
  747.40 +TZOFFSETFROM:-0600
  747.41 +TZOFFSETTO:-0600
  747.42 +TZNAME:MPT
  747.43 +DTSTART:19450814T170000
  747.44 +RDATE:19450814T170000
  747.45 +END:DAYLIGHT
  747.46 +BEGIN:STANDARD
  747.47 +TZOFFSETFROM:-0600
  747.48 +TZOFFSETTO:-0700
  747.49 +TZNAME:MST
  747.50 +DTSTART:19450930T020000
  747.51 +RDATE:19450930T020000
  747.52 +RDATE:19801026T020000
  747.53 +RDATE:19811025T020000
  747.54 +RDATE:19821031T020000
  747.55 +RDATE:19831030T020000
  747.56 +RDATE:19841028T020000
  747.57 +RDATE:19851027T020000
  747.58 +RDATE:19861026T020000
  747.59 +RDATE:19871025T020000
  747.60 +RDATE:19881030T020000
  747.61 +RDATE:19891029T020000
  747.62 +RDATE:19901028T020000
  747.63 +RDATE:19911027T020000
  747.64 +RDATE:19921025T020000
  747.65 +RDATE:19931031T020000
  747.66 +RDATE:19941030T020000
  747.67 +RDATE:19951029T020000
  747.68 +RDATE:19961027T020000
  747.69 +RDATE:19971026T020000
  747.70 +RDATE:19981025T020000
  747.71 +RDATE:20011028T020000
  747.72 +RDATE:20021027T020000
  747.73 +RDATE:20031026T020000
  747.74 +RDATE:20041031T020000
  747.75 +RDATE:20051030T020000
  747.76 +RDATE:20061029T020000
  747.77 +END:STANDARD
  747.78 +BEGIN:DAYLIGHT
  747.79 +TZOFFSETFROM:-0700
  747.80 +TZOFFSETTO:-0500
  747.81 +TZNAME:MDDT
  747.82 +DTSTART:19650425T000000
  747.83 +RDATE:19650425T000000
  747.84 +END:DAYLIGHT
  747.85 +BEGIN:STANDARD
  747.86 +TZOFFSETFROM:-0500
  747.87 +TZOFFSETTO:-0700
  747.88 +TZNAME:MST
  747.89 +DTSTART:19651031T020000
  747.90 +RDATE:19651031T020000
  747.91 +END:STANDARD
  747.92 +BEGIN:DAYLIGHT
  747.93 +TZOFFSETFROM:-0700
  747.94 +TZOFFSETTO:-0600
  747.95 +TZNAME:MDT
  747.96 +DTSTART:19800427T020000
  747.97 +RDATE:19800427T020000
  747.98 +RDATE:19810426T020000
  747.99 +RDATE:19820425T020000
 747.100 +RDATE:19830424T020000
 747.101 +RDATE:19840429T020000
 747.102 +RDATE:19850428T020000
 747.103 +RDATE:19860427T020000
 747.104 +RDATE:19870405T020000
 747.105 +RDATE:19880403T020000
 747.106 +RDATE:19890402T020000
 747.107 +RDATE:19900401T020000
 747.108 +RDATE:19910407T020000
 747.109 +RDATE:19920405T020000
 747.110 +RDATE:19930404T020000
 747.111 +RDATE:19940403T020000
 747.112 +RDATE:19950402T020000
 747.113 +RDATE:19960407T020000
 747.114 +RDATE:19970406T020000
 747.115 +RDATE:19980405T020000
 747.116 +RDATE:19990404T020000
 747.117 +RDATE:20020407T020000
 747.118 +RDATE:20030406T020000
 747.119 +RDATE:20040404T020000
 747.120 +RDATE:20050403T020000
 747.121 +RDATE:20060402T020000
 747.122 +END:DAYLIGHT
 747.123 +BEGIN:STANDARD
 747.124 +TZOFFSETFROM:-0600
 747.125 +TZOFFSETTO:-0600
 747.126 +TZNAME:CST
 747.127 +DTSTART:19991031T020000
 747.128 +RDATE:19991031T020000
 747.129 +END:STANDARD
 747.130 +BEGIN:DAYLIGHT
 747.131 +TZOFFSETFROM:-0600
 747.132 +TZOFFSETTO:-0500
 747.133 +TZNAME:CDT
 747.134 +DTSTART:20000402T020000
 747.135 +RDATE:20000402T020000
 747.136 +END:DAYLIGHT
 747.137 +BEGIN:STANDARD
 747.138 +TZOFFSETFROM:-0500
 747.139 +TZOFFSETTO:-0500
 747.140 +TZNAME:EST
 747.141 +DTSTART:20001029T020000
 747.142 +RDATE:20001029T020000
 747.143 +END:STANDARD
 747.144 +BEGIN:STANDARD
 747.145 +TZOFFSETFROM:-0500
 747.146 +TZOFFSETTO:-0600
 747.147 +TZNAME:CST
 747.148 +DTSTART:20001105T000000
 747.149 +RDATE:20001105T000000
 747.150 +END:STANDARD
 747.151 +BEGIN:DAYLIGHT
 747.152 +TZOFFSETFROM:-0600
 747.153 +TZOFFSETTO:-0600
 747.154 +TZNAME:MDT
 747.155 +DTSTART:20010401T020000
 747.156 +RDATE:20010401T020000
 747.157 +END:DAYLIGHT
 747.158 +END:VTIMEZONE
 747.159 +END:VCALENDAR
   748.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   748.2 +++ b/src/zoneinfo/America/Campo_Grande.ics	Tue Feb 10 18:12:00 2015 +0100
   748.3 @@ -0,0 +1,145 @@
   748.4 +BEGIN:VCALENDAR
   748.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   748.6 +VERSION:2.0
   748.7 +BEGIN:VTIMEZONE
   748.8 +TZID:America/Campo_Grande
   748.9 +TZURL:http://tzurl.org/zoneinfo/America/Campo_Grande
  748.10 +X-LIC-LOCATION:America/Campo_Grande
  748.11 +BEGIN:DAYLIGHT
  748.12 +TZOFFSETFROM:-0400
  748.13 +TZOFFSETTO:-0300
  748.14 +TZNAME:AMST
  748.15 +DTSTART:20081019T000000
  748.16 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=3SU
  748.17 +END:DAYLIGHT
  748.18 +BEGIN:STANDARD
  748.19 +TZOFFSETFROM:-0400
  748.20 +TZOFFSETTO:-0400
  748.21 +TZNAME:AMT
  748.22 +DTSTART:20380221T000000
  748.23 +RRULE:FREQ=YEARLY;BYMONTH=2;BYDAY=3SU
  748.24 +END:STANDARD
  748.25 +BEGIN:STANDARD
  748.26 +TZOFFSETFROM:-033828
  748.27 +TZOFFSETTO:-0400
  748.28 +TZNAME:AMT
  748.29 +DTSTART:19140101T000000
  748.30 +RDATE:19140101T000000
  748.31 +END:STANDARD
  748.32 +BEGIN:DAYLIGHT
  748.33 +TZOFFSETFROM:-0400
  748.34 +TZOFFSETTO:-0300
  748.35 +TZNAME:AMST
  748.36 +DTSTART:19311003T110000
  748.37 +RDATE:19311003T110000
  748.38 +RDATE:19321003T000000
  748.39 +RDATE:19491201T000000
  748.40 +RDATE:19501201T000000
  748.41 +RDATE:19511201T000000
  748.42 +RDATE:19521201T000000
  748.43 +RDATE:19631209T000000
  748.44 +RDATE:19650131T000000
  748.45 +RDATE:19651201T000000
  748.46 +RDATE:19661101T000000
  748.47 +RDATE:19671101T000000
  748.48 +RDATE:19851102T000000
  748.49 +RDATE:19861025T000000
  748.50 +RDATE:19871025T000000
  748.51 +RDATE:19881016T000000
  748.52 +RDATE:19891015T000000
  748.53 +RDATE:19901021T000000
  748.54 +RDATE:19911020T000000
  748.55 +RDATE:19921025T000000
  748.56 +RDATE:19931017T000000
  748.57 +RDATE:19941016T000000
  748.58 +RDATE:19951015T000000
  748.59 +RDATE:19961006T000000
  748.60 +RDATE:19971006T000000
  748.61 +RDATE:19981011T000000
  748.62 +RDATE:19991003T000000
  748.63 +RDATE:20001008T000000
  748.64 +RDATE:20011014T000000
  748.65 +RDATE:20021103T000000
  748.66 +RDATE:20031019T000000
  748.67 +RDATE:20041102T000000
  748.68 +RDATE:20051016T000000
  748.69 +RDATE:20061105T000000
  748.70 +RDATE:20071014T000000
  748.71 +END:DAYLIGHT
  748.72 +BEGIN:STANDARD
  748.73 +TZOFFSETFROM:-0300
  748.74 +TZOFFSETTO:-0400
  748.75 +TZNAME:AMT
  748.76 +DTSTART:19320401T000000
  748.77 +RDATE:19320401T000000
  748.78 +RDATE:19330401T000000
  748.79 +RDATE:19500416T010000
  748.80 +RDATE:19510401T000000
  748.81 +RDATE:19520401T000000
  748.82 +RDATE:19530301T000000
  748.83 +RDATE:19640301T000000
  748.84 +RDATE:19650331T000000
  748.85 +RDATE:19660301T000000
  748.86 +RDATE:19670301T000000
  748.87 +RDATE:19680301T000000
  748.88 +RDATE:19860315T000000
  748.89 +RDATE:19870214T000000
  748.90 +RDATE:19880207T000000
  748.91 +RDATE:19890129T000000
  748.92 +RDATE:19900211T000000
  748.93 +RDATE:19910217T000000
  748.94 +RDATE:19920209T000000
  748.95 +RDATE:19930131T000000
  748.96 +RDATE:19940220T000000
  748.97 +RDATE:19950219T000000
  748.98 +RDATE:19960211T000000
  748.99 +RDATE:19970216T000000
 748.100 +RDATE:19980301T000000
 748.101 +RDATE:19990221T000000
 748.102 +RDATE:20000227T000000
 748.103 +RDATE:20010218T000000
 748.104 +RDATE:20020217T000000
 748.105 +RDATE:20030216T000000
 748.106 +RDATE:20040215T000000
 748.107 +RDATE:20050220T000000
 748.108 +RDATE:20060219T000000
 748.109 +RDATE:20070225T000000
 748.110 +RDATE:20080217T000000
 748.111 +RDATE:20090215T000000
 748.112 +RDATE:20100221T000000
 748.113 +RDATE:20110220T000000
 748.114 +RDATE:20120226T000000
 748.115 +RDATE:20130217T000000
 748.116 +RDATE:20140216T000000
 748.117 +END:STANDARD
 748.118 +BEGIN:STANDARD
 748.119 +TZOFFSETFROM:-0400
 748.120 +TZOFFSETTO:-0400
 748.121 +TZNAME:AMT
 748.122 +DTSTART:20150222T000000
 748.123 +RDATE:20150222T000000
 748.124 +RDATE:20160221T000000
 748.125 +RDATE:20170219T000000
 748.126 +RDATE:20180218T000000
 748.127 +RDATE:20190217T000000
 748.128 +RDATE:20200216T000000
 748.129 +RDATE:20210221T000000
 748.130 +RDATE:20220220T000000
 748.131 +RDATE:20230226T000000
 748.132 +RDATE:20240218T000000
 748.133 +RDATE:20250216T000000
 748.134 +RDATE:20260222T000000
 748.135 +RDATE:20270221T000000
 748.136 +RDATE:20280220T000000
 748.137 +RDATE:20290218T000000
 748.138 +RDATE:20300217T000000
 748.139 +RDATE:20310216T000000
 748.140 +RDATE:20320215T000000
 748.141 +RDATE:20330220T000000
 748.142 +RDATE:20340226T000000
 748.143 +RDATE:20350218T000000
 748.144 +RDATE:20360217T000000
 748.145 +RDATE:20370222T000000
 748.146 +END:STANDARD
 748.147 +END:VTIMEZONE
 748.148 +END:VCALENDAR
   749.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   749.2 +++ b/src/zoneinfo/America/Cancun.ics	Tue Feb 10 18:12:00 2015 +0100
   749.3 @@ -0,0 +1,80 @@
   749.4 +BEGIN:VCALENDAR
   749.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   749.6 +VERSION:2.0
   749.7 +BEGIN:VTIMEZONE
   749.8 +TZID:America/Cancun
   749.9 +TZURL:http://tzurl.org/zoneinfo/America/Cancun
  749.10 +X-LIC-LOCATION:America/Cancun
  749.11 +BEGIN:DAYLIGHT
  749.12 +TZOFFSETFROM:-0600
  749.13 +TZOFFSETTO:-0500
  749.14 +TZNAME:CDT
  749.15 +DTSTART:20020407T020000
  749.16 +RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU
  749.17 +END:DAYLIGHT
  749.18 +BEGIN:STANDARD
  749.19 +TZOFFSETFROM:-0500
  749.20 +TZOFFSETTO:-0600
  749.21 +TZNAME:CST
  749.22 +DTSTART:20021027T020000
  749.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  749.24 +END:STANDARD
  749.25 +BEGIN:STANDARD
  749.26 +TZOFFSETFROM:-054704
  749.27 +TZOFFSETTO:-0600
  749.28 +TZNAME:CST
  749.29 +DTSTART:19220101T001256
  749.30 +RDATE:19220101T001256
  749.31 +END:STANDARD
  749.32 +BEGIN:STANDARD
  749.33 +TZOFFSETFROM:-0600
  749.34 +TZOFFSETTO:-0500
  749.35 +TZNAME:EST
  749.36 +DTSTART:19811223T000000
  749.37 +RDATE:19811223T000000
  749.38 +END:STANDARD
  749.39 +BEGIN:DAYLIGHT
  749.40 +TZOFFSETFROM:-0500
  749.41 +TZOFFSETTO:-0400
  749.42 +TZNAME:EDT
  749.43 +DTSTART:19960407T020000
  749.44 +RDATE:19960407T020000
  749.45 +RDATE:19970406T020000
  749.46 +RDATE:19980405T020000
  749.47 +END:DAYLIGHT
  749.48 +BEGIN:STANDARD
  749.49 +TZOFFSETFROM:-0400
  749.50 +TZOFFSETTO:-0500
  749.51 +TZNAME:EST
  749.52 +DTSTART:19961027T020000
  749.53 +RDATE:19961027T020000
  749.54 +RDATE:19971026T020000
  749.55 +END:STANDARD
  749.56 +BEGIN:DAYLIGHT
  749.57 +TZOFFSETFROM:-0400
  749.58 +TZOFFSETTO:-0500
  749.59 +TZNAME:CDT
  749.60 +DTSTART:19980802T020000
  749.61 +RDATE:19980802T020000
  749.62 +END:DAYLIGHT
  749.63 +BEGIN:STANDARD
  749.64 +TZOFFSETFROM:-0500
  749.65 +TZOFFSETTO:-0600
  749.66 +TZNAME:CST
  749.67 +DTSTART:19981025T020000
  749.68 +RDATE:19981025T020000
  749.69 +RDATE:19991031T020000
  749.70 +RDATE:20001029T020000
  749.71 +RDATE:20010930T020000
  749.72 +END:STANDARD
  749.73 +BEGIN:DAYLIGHT
  749.74 +TZOFFSETFROM:-0600
  749.75 +TZOFFSETTO:-0500
  749.76 +TZNAME:CDT
  749.77 +DTSTART:19990404T020000
  749.78 +RDATE:19990404T020000
  749.79 +RDATE:20000402T020000
  749.80 +RDATE:20010506T020000
  749.81 +END:DAYLIGHT
  749.82 +END:VTIMEZONE
  749.83 +END:VCALENDAR
   750.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   750.2 +++ b/src/zoneinfo/America/Caracas.ics	Tue Feb 10 18:12:00 2015 +0100
   750.3 @@ -0,0 +1,37 @@
   750.4 +BEGIN:VCALENDAR
   750.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   750.6 +VERSION:2.0
   750.7 +BEGIN:VTIMEZONE
   750.8 +TZID:America/Caracas
   750.9 +TZURL:http://tzurl.org/zoneinfo/America/Caracas
  750.10 +X-LIC-LOCATION:America/Caracas
  750.11 +BEGIN:STANDARD
  750.12 +TZOFFSETFROM:-042744
  750.13 +TZOFFSETTO:-042740
  750.14 +TZNAME:CMT
  750.15 +DTSTART:18900101T000000
  750.16 +RDATE:18900101T000000
  750.17 +END:STANDARD
  750.18 +BEGIN:STANDARD
  750.19 +TZOFFSETFROM:-042740
  750.20 +TZOFFSETTO:-0430
  750.21 +TZNAME:VET
  750.22 +DTSTART:19120212T000000
  750.23 +RDATE:19120212T000000
  750.24 +END:STANDARD
  750.25 +BEGIN:STANDARD
  750.26 +TZOFFSETFROM:-0430
  750.27 +TZOFFSETTO:-0400
  750.28 +TZNAME:VET
  750.29 +DTSTART:19650101T000000
  750.30 +RDATE:19650101T000000
  750.31 +END:STANDARD
  750.32 +BEGIN:STANDARD
  750.33 +TZOFFSETFROM:-0400
  750.34 +TZOFFSETTO:-0430
  750.35 +TZNAME:VET
  750.36 +DTSTART:20071209T030000
  750.37 +RDATE:20071209T030000
  750.38 +END:STANDARD
  750.39 +END:VTIMEZONE
  750.40 +END:VCALENDAR
   751.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   751.2 +++ b/src/zoneinfo/America/Cayenne.ics	Tue Feb 10 18:12:00 2015 +0100
   751.3 @@ -0,0 +1,23 @@
   751.4 +BEGIN:VCALENDAR
   751.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   751.6 +VERSION:2.0
   751.7 +BEGIN:VTIMEZONE
   751.8 +TZID:America/Cayenne
   751.9 +TZURL:http://tzurl.org/zoneinfo/America/Cayenne
  751.10 +X-LIC-LOCATION:America/Cayenne
  751.11 +BEGIN:STANDARD
  751.12 +TZOFFSETFROM:-032920
  751.13 +TZOFFSETTO:-0400
  751.14 +TZNAME:GFT
  751.15 +DTSTART:19110701T000000
  751.16 +RDATE:19110701T000000
  751.17 +END:STANDARD
  751.18 +BEGIN:STANDARD
  751.19 +TZOFFSETFROM:-0400
  751.20 +TZOFFSETTO:-0300
  751.21 +TZNAME:GFT
  751.22 +DTSTART:19671001T000000
  751.23 +RDATE:19671001T000000
  751.24 +END:STANDARD
  751.25 +END:VTIMEZONE
  751.26 +END:VCALENDAR
   752.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   752.2 +++ b/src/zoneinfo/America/Cayman.ics	Tue Feb 10 18:12:00 2015 +0100
   752.3 @@ -0,0 +1,23 @@
   752.4 +BEGIN:VCALENDAR
   752.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   752.6 +VERSION:2.0
   752.7 +BEGIN:VTIMEZONE
   752.8 +TZID:America/Cayman
   752.9 +TZURL:http://tzurl.org/zoneinfo/America/Cayman
  752.10 +X-LIC-LOCATION:America/Cayman
  752.11 +BEGIN:STANDARD
  752.12 +TZOFFSETFROM:-052532
  752.13 +TZOFFSETTO:-050712
  752.14 +TZNAME:KMT
  752.15 +DTSTART:18900101T000000
  752.16 +RDATE:18900101T000000
  752.17 +END:STANDARD
  752.18 +BEGIN:STANDARD
  752.19 +TZOFFSETFROM:-050712
  752.20 +TZOFFSETTO:-0500
  752.21 +TZNAME:EST
  752.22 +DTSTART:19120201T000000
  752.23 +RDATE:19120201T000000
  752.24 +END:STANDARD
  752.25 +END:VTIMEZONE
  752.26 +END:VCALENDAR
   753.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   753.2 +++ b/src/zoneinfo/America/Chicago.ics	Tue Feb 10 18:12:00 2015 +0100
   753.3 @@ -0,0 +1,243 @@
   753.4 +BEGIN:VCALENDAR
   753.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   753.6 +VERSION:2.0
   753.7 +BEGIN:VTIMEZONE
   753.8 +TZID:America/Chicago
   753.9 +TZURL:http://tzurl.org/zoneinfo/America/Chicago
  753.10 +X-LIC-LOCATION:America/Chicago
  753.11 +BEGIN:DAYLIGHT
  753.12 +TZOFFSETFROM:-0600
  753.13 +TZOFFSETTO:-0500
  753.14 +TZNAME:CDT
  753.15 +DTSTART:20070311T020000
  753.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  753.17 +END:DAYLIGHT
  753.18 +BEGIN:STANDARD
  753.19 +TZOFFSETFROM:-0500
  753.20 +TZOFFSETTO:-0600
  753.21 +TZNAME:CST
  753.22 +DTSTART:20071104T020000
  753.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  753.24 +END:STANDARD
  753.25 +BEGIN:STANDARD
  753.26 +TZOFFSETFROM:-055036
  753.27 +TZOFFSETTO:-0600
  753.28 +TZNAME:CST
  753.29 +DTSTART:18831118T120924
  753.30 +RDATE:18831118T120924
  753.31 +END:STANDARD
  753.32 +BEGIN:DAYLIGHT
  753.33 +TZOFFSETFROM:-0600
  753.34 +TZOFFSETTO:-0500
  753.35 +TZNAME:CDT
  753.36 +DTSTART:19180331T020000
  753.37 +RDATE:19180331T020000
  753.38 +RDATE:19190330T020000
  753.39 +RDATE:19200613T020000
  753.40 +RDATE:19210327T020000
  753.41 +RDATE:19220430T020000
  753.42 +RDATE:19230429T020000
  753.43 +RDATE:19240427T020000
  753.44 +RDATE:19250426T020000
  753.45 +RDATE:19260425T020000
  753.46 +RDATE:19270424T020000
  753.47 +RDATE:19280429T020000
  753.48 +RDATE:19290428T020000
  753.49 +RDATE:19300427T020000
  753.50 +RDATE:19310426T020000
  753.51 +RDATE:19320424T020000
  753.52 +RDATE:19330430T020000
  753.53 +RDATE:19340429T020000
  753.54 +RDATE:19350428T020000
  753.55 +RDATE:19370425T020000
  753.56 +RDATE:19380424T020000
  753.57 +RDATE:19390430T020000
  753.58 +RDATE:19400428T020000
  753.59 +RDATE:19410427T020000
  753.60 +RDATE:19460428T020000
  753.61 +RDATE:19470427T020000
  753.62 +RDATE:19480425T020000
  753.63 +RDATE:19490424T020000
  753.64 +RDATE:19500430T020000
  753.65 +RDATE:19510429T020000
  753.66 +RDATE:19520427T020000
  753.67 +RDATE:19530426T020000
  753.68 +RDATE:19540425T020000
  753.69 +RDATE:19550424T020000
  753.70 +RDATE:19560429T020000
  753.71 +RDATE:19570428T020000
  753.72 +RDATE:19580427T020000
  753.73 +RDATE:19590426T020000
  753.74 +RDATE:19600424T020000
  753.75 +RDATE:19610430T020000
  753.76 +RDATE:19620429T020000
  753.77 +RDATE:19630428T020000
  753.78 +RDATE:19640426T020000
  753.79 +RDATE:19650425T020000
  753.80 +RDATE:19660424T020000
  753.81 +RDATE:19670430T020000
  753.82 +RDATE:19680428T020000
  753.83 +RDATE:19690427T020000
  753.84 +RDATE:19700426T020000
  753.85 +RDATE:19710425T020000
  753.86 +RDATE:19720430T020000
  753.87 +RDATE:19730429T020000
  753.88 +RDATE:19740106T020000
  753.89 +RDATE:19750223T020000
  753.90 +RDATE:19760425T020000
  753.91 +RDATE:19770424T020000
  753.92 +RDATE:19780430T020000
  753.93 +RDATE:19790429T020000
  753.94 +RDATE:19800427T020000
  753.95 +RDATE:19810426T020000
  753.96 +RDATE:19820425T020000
  753.97 +RDATE:19830424T020000
  753.98 +RDATE:19840429T020000
  753.99 +RDATE:19850428T020000
 753.100 +RDATE:19860427T020000
 753.101 +RDATE:19870405T020000
 753.102 +RDATE:19880403T020000
 753.103 +RDATE:19890402T020000
 753.104 +RDATE:19900401T020000
 753.105 +RDATE:19910407T020000
 753.106 +RDATE:19920405T020000
 753.107 +RDATE:19930404T020000
 753.108 +RDATE:19940403T020000
 753.109 +RDATE:19950402T020000
 753.110 +RDATE:19960407T020000
 753.111 +RDATE:19970406T020000
 753.112 +RDATE:19980405T020000
 753.113 +RDATE:19990404T020000
 753.114 +RDATE:20000402T020000
 753.115 +RDATE:20010401T020000
 753.116 +RDATE:20020407T020000
 753.117 +RDATE:20030406T020000
 753.118 +RDATE:20040404T020000
 753.119 +RDATE:20050403T020000
 753.120 +RDATE:20060402T020000
 753.121 +END:DAYLIGHT
 753.122 +BEGIN:STANDARD
 753.123 +TZOFFSETFROM:-0500
 753.124 +TZOFFSETTO:-0600
 753.125 +TZNAME:CST
 753.126 +DTSTART:19181027T020000
 753.127 +RDATE:19181027T020000
 753.128 +RDATE:19191026T020000
 753.129 +RDATE:19201031T020000
 753.130 +RDATE:19211030T020000
 753.131 +RDATE:19220924T020000
 753.132 +RDATE:19230930T020000
 753.133 +RDATE:19240928T020000
 753.134 +RDATE:19250927T020000
 753.135 +RDATE:19260926T020000
 753.136 +RDATE:19270925T020000
 753.137 +RDATE:19280930T020000
 753.138 +RDATE:19290929T020000
 753.139 +RDATE:19300928T020000
 753.140 +RDATE:19310927T020000
 753.141 +RDATE:19320925T020000
 753.142 +RDATE:19330924T020000
 753.143 +RDATE:19340930T020000
 753.144 +RDATE:19350929T020000
 753.145 +RDATE:19361115T020000
 753.146 +RDATE:19370926T020000
 753.147 +RDATE:19380925T020000
 753.148 +RDATE:19390924T020000
 753.149 +RDATE:19400929T020000
 753.150 +RDATE:19410928T020000
 753.151 +RDATE:19450930T020000
 753.152 +RDATE:19460929T020000
 753.153 +RDATE:19470928T020000
 753.154 +RDATE:19480926T020000
 753.155 +RDATE:19490925T020000
 753.156 +RDATE:19500924T020000
 753.157 +RDATE:19510930T020000
 753.158 +RDATE:19520928T020000
 753.159 +RDATE:19530927T020000
 753.160 +RDATE:19540926T020000
 753.161 +RDATE:19551030T020000
 753.162 +RDATE:19561028T020000
 753.163 +RDATE:19571027T020000
 753.164 +RDATE:19581026T020000
 753.165 +RDATE:19591025T020000
 753.166 +RDATE:19601030T020000
 753.167 +RDATE:19611029T020000
 753.168 +RDATE:19621028T020000
 753.169 +RDATE:19631027T020000
 753.170 +RDATE:19641025T020000
 753.171 +RDATE:19651031T020000
 753.172 +RDATE:19661030T020000
 753.173 +RDATE:19671029T020000
 753.174 +RDATE:19681027T020000
 753.175 +RDATE:19691026T020000
 753.176 +RDATE:19701025T020000
 753.177 +RDATE:19711031T020000
 753.178 +RDATE:19721029T020000
 753.179 +RDATE:19731028T020000
 753.180 +RDATE:19741027T020000
 753.181 +RDATE:19751026T020000
 753.182 +RDATE:19761031T020000
 753.183 +RDATE:19771030T020000
 753.184 +RDATE:19781029T020000
 753.185 +RDATE:19791028T020000
 753.186 +RDATE:19801026T020000
 753.187 +RDATE:19811025T020000
 753.188 +RDATE:19821031T020000
 753.189 +RDATE:19831030T020000
 753.190 +RDATE:19841028T020000
 753.191 +RDATE:19851027T020000
 753.192 +RDATE:19861026T020000
 753.193 +RDATE:19871025T020000
 753.194 +RDATE:19881030T020000
 753.195 +RDATE:19891029T020000
 753.196 +RDATE:19901028T020000
 753.197 +RDATE:19911027T020000
 753.198 +RDATE:19921025T020000
 753.199 +RDATE:19931031T020000
 753.200 +RDATE:19941030T020000
 753.201 +RDATE:19951029T020000
 753.202 +RDATE:19961027T020000
 753.203 +RDATE:19971026T020000
 753.204 +RDATE:19981025T020000
 753.205 +RDATE:19991031T020000
 753.206 +RDATE:20001029T020000
 753.207 +RDATE:20011028T020000
 753.208 +RDATE:20021027T020000
 753.209 +RDATE:20031026T020000
 753.210 +RDATE:20041031T020000
 753.211 +RDATE:20051030T020000
 753.212 +RDATE:20061029T020000
 753.213 +END:STANDARD
 753.214 +BEGIN:STANDARD
 753.215 +TZOFFSETFROM:-0600
 753.216 +TZOFFSETTO:-0600
 753.217 +TZNAME:CST
 753.218 +DTSTART:19200101T000000
 753.219 +RDATE:19200101T000000
 753.220 +RDATE:19420101T000000
 753.221 +RDATE:19460101T000000
 753.222 +RDATE:19670101T000000
 753.223 +END:STANDARD
 753.224 +BEGIN:STANDARD
 753.225 +TZOFFSETFROM:-0600
 753.226 +TZOFFSETTO:-0500
 753.227 +TZNAME:EST
 753.228 +DTSTART:19360301T020000
 753.229 +RDATE:19360301T020000
 753.230 +END:STANDARD
 753.231 +BEGIN:DAYLIGHT
 753.232 +TZOFFSETFROM:-0600
 753.233 +TZOFFSETTO:-0500
 753.234 +TZNAME:CWT
 753.235 +DTSTART:19420209T020000
 753.236 +RDATE:19420209T020000
 753.237 +END:DAYLIGHT
 753.238 +BEGIN:DAYLIGHT
 753.239 +TZOFFSETFROM:-0500
 753.240 +TZOFFSETTO:-0500
 753.241 +TZNAME:CPT
 753.242 +DTSTART:19450814T180000
 753.243 +RDATE:19450814T180000
 753.244 +END:DAYLIGHT
 753.245 +END:VTIMEZONE
 753.246 +END:VCALENDAR
   754.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   754.2 +++ b/src/zoneinfo/America/Chihuahua.ics	Tue Feb 10 18:12:00 2015 +0100
   754.3 @@ -0,0 +1,91 @@
   754.4 +BEGIN:VCALENDAR
   754.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   754.6 +VERSION:2.0
   754.7 +BEGIN:VTIMEZONE
   754.8 +TZID:America/Chihuahua
   754.9 +TZURL:http://tzurl.org/zoneinfo/America/Chihuahua
  754.10 +X-LIC-LOCATION:America/Chihuahua
  754.11 +BEGIN:DAYLIGHT
  754.12 +TZOFFSETFROM:-0700
  754.13 +TZOFFSETTO:-0600
  754.14 +TZNAME:MDT
  754.15 +DTSTART:20020407T020000
  754.16 +RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU
  754.17 +END:DAYLIGHT
  754.18 +BEGIN:STANDARD
  754.19 +TZOFFSETFROM:-0600
  754.20 +TZOFFSETTO:-0700
  754.21 +TZNAME:MST
  754.22 +DTSTART:20021027T020000
  754.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  754.24 +END:STANDARD
  754.25 +BEGIN:STANDARD
  754.26 +TZOFFSETFROM:-070420
  754.27 +TZOFFSETTO:-0700
  754.28 +TZNAME:MST
  754.29 +DTSTART:19211231T235540
  754.30 +RDATE:19211231T235540
  754.31 +END:STANDARD
  754.32 +BEGIN:STANDARD
  754.33 +TZOFFSETFROM:-0700
  754.34 +TZOFFSETTO:-0600
  754.35 +TZNAME:CST
  754.36 +DTSTART:19270610T230000
  754.37 +RDATE:19270610T230000
  754.38 +RDATE:19310501T230000
  754.39 +RDATE:19320401T000000
  754.40 +END:STANDARD
  754.41 +BEGIN:STANDARD
  754.42 +TZOFFSETFROM:-0600
  754.43 +TZOFFSETTO:-0700
  754.44 +TZNAME:MST
  754.45 +DTSTART:19301115T000000
  754.46 +RDATE:19301115T000000
  754.47 +RDATE:19311001T000000
  754.48 +RDATE:19981025T020000
  754.49 +RDATE:19991031T020000
  754.50 +RDATE:20001029T020000
  754.51 +RDATE:20010930T020000
  754.52 +END:STANDARD
  754.53 +BEGIN:STANDARD
  754.54 +TZOFFSETFROM:-0600
  754.55 +TZOFFSETTO:-0600
  754.56 +TZNAME:CST
  754.57 +DTSTART:19960101T000000
  754.58 +RDATE:19960101T000000
  754.59 +RDATE:19980101T000000
  754.60 +END:STANDARD
  754.61 +BEGIN:DAYLIGHT
  754.62 +TZOFFSETFROM:-0600
  754.63 +TZOFFSETTO:-0500
  754.64 +TZNAME:CDT
  754.65 +DTSTART:19960407T020000
  754.66 +RDATE:19960407T020000
  754.67 +RDATE:19970406T020000
  754.68 +END:DAYLIGHT
  754.69 +BEGIN:STANDARD
  754.70 +TZOFFSETFROM:-0500
  754.71 +TZOFFSETTO:-0600
  754.72 +TZNAME:CST
  754.73 +DTSTART:19961027T020000
  754.74 +RDATE:19961027T020000
  754.75 +RDATE:19971026T020000
  754.76 +END:STANDARD
  754.77 +BEGIN:DAYLIGHT
  754.78 +TZOFFSETFROM:-0600
  754.79 +TZOFFSETTO:-0600
  754.80 +TZNAME:MDT
  754.81 +DTSTART:19980405T020000
  754.82 +RDATE:19980405T020000
  754.83 +END:DAYLIGHT
  754.84 +BEGIN:DAYLIGHT
  754.85 +TZOFFSETFROM:-0700
  754.86 +TZOFFSETTO:-0600
  754.87 +TZNAME:MDT
  754.88 +DTSTART:19990404T020000
  754.89 +RDATE:19990404T020000
  754.90 +RDATE:20000402T020000
  754.91 +RDATE:20010506T020000
  754.92 +END:DAYLIGHT
  754.93 +END:VTIMEZONE
  754.94 +END:VCALENDAR
   755.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   755.2 +++ b/src/zoneinfo/America/Costa_Rica.ics	Tue Feb 10 18:12:00 2015 +0100
   755.3 @@ -0,0 +1,43 @@
   755.4 +BEGIN:VCALENDAR
   755.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   755.6 +VERSION:2.0
   755.7 +BEGIN:VTIMEZONE
   755.8 +TZID:America/Costa_Rica
   755.9 +TZURL:http://tzurl.org/zoneinfo/America/Costa_Rica
  755.10 +X-LIC-LOCATION:America/Costa_Rica
  755.11 +BEGIN:STANDARD
  755.12 +TZOFFSETFROM:-053620
  755.13 +TZOFFSETTO:-053620
  755.14 +TZNAME:SJMT
  755.15 +DTSTART:18900101T000000
  755.16 +RDATE:18900101T000000
  755.17 +END:STANDARD
  755.18 +BEGIN:STANDARD
  755.19 +TZOFFSETFROM:-053620
  755.20 +TZOFFSETTO:-0600
  755.21 +TZNAME:CST
  755.22 +DTSTART:19210115T000000
  755.23 +RDATE:19210115T000000
  755.24 +END:STANDARD
  755.25 +BEGIN:DAYLIGHT
  755.26 +TZOFFSETFROM:-0600
  755.27 +TZOFFSETTO:-0500
  755.28 +TZNAME:CDT
  755.29 +DTSTART:19790225T000000
  755.30 +RDATE:19790225T000000
  755.31 +RDATE:19800224T000000
  755.32 +RDATE:19910119T000000
  755.33 +RDATE:19920118T000000
  755.34 +END:DAYLIGHT
  755.35 +BEGIN:STANDARD
  755.36 +TZOFFSETFROM:-0500
  755.37 +TZOFFSETTO:-0600
  755.38 +TZNAME:CST
  755.39 +DTSTART:19790603T000000
  755.40 +RDATE:19790603T000000
  755.41 +RDATE:19800601T000000
  755.42 +RDATE:19910701T000000
  755.43 +RDATE:19920315T000000
  755.44 +END:STANDARD
  755.45 +END:VTIMEZONE
  755.46 +END:VCALENDAR
   756.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   756.2 +++ b/src/zoneinfo/America/Cuiaba.ics	Tue Feb 10 18:12:00 2015 +0100
   756.3 @@ -0,0 +1,145 @@
   756.4 +BEGIN:VCALENDAR
   756.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   756.6 +VERSION:2.0
   756.7 +BEGIN:VTIMEZONE
   756.8 +TZID:America/Cuiaba
   756.9 +TZURL:http://tzurl.org/zoneinfo/America/Cuiaba
  756.10 +X-LIC-LOCATION:America/Cuiaba
  756.11 +BEGIN:DAYLIGHT
  756.12 +TZOFFSETFROM:-0400
  756.13 +TZOFFSETTO:-0300
  756.14 +TZNAME:AMST
  756.15 +DTSTART:20081019T000000
  756.16 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=3SU
  756.17 +END:DAYLIGHT
  756.18 +BEGIN:STANDARD
  756.19 +TZOFFSETFROM:-0400
  756.20 +TZOFFSETTO:-0400
  756.21 +TZNAME:AMT
  756.22 +DTSTART:20380221T000000
  756.23 +RRULE:FREQ=YEARLY;BYMONTH=2;BYDAY=3SU
  756.24 +END:STANDARD
  756.25 +BEGIN:STANDARD
  756.26 +TZOFFSETFROM:-034420
  756.27 +TZOFFSETTO:-0400
  756.28 +TZNAME:AMT
  756.29 +DTSTART:19140101T000000
  756.30 +RDATE:19140101T000000
  756.31 +END:STANDARD
  756.32 +BEGIN:DAYLIGHT
  756.33 +TZOFFSETFROM:-0400
  756.34 +TZOFFSETTO:-0300
  756.35 +TZNAME:AMST
  756.36 +DTSTART:19311003T110000
  756.37 +RDATE:19311003T110000
  756.38 +RDATE:19321003T000000
  756.39 +RDATE:19491201T000000
  756.40 +RDATE:19501201T000000
  756.41 +RDATE:19511201T000000
  756.42 +RDATE:19521201T000000
  756.43 +RDATE:19631209T000000
  756.44 +RDATE:19650131T000000
  756.45 +RDATE:19651201T000000
  756.46 +RDATE:19661101T000000
  756.47 +RDATE:19671101T000000
  756.48 +RDATE:19851102T000000
  756.49 +RDATE:19861025T000000
  756.50 +RDATE:19871025T000000
  756.51 +RDATE:19881016T000000
  756.52 +RDATE:19891015T000000
  756.53 +RDATE:19901021T000000
  756.54 +RDATE:19911020T000000
  756.55 +RDATE:19921025T000000
  756.56 +RDATE:19931017T000000
  756.57 +RDATE:19941016T000000
  756.58 +RDATE:19951015T000000
  756.59 +RDATE:19961006T000000
  756.60 +RDATE:19971006T000000
  756.61 +RDATE:19981011T000000
  756.62 +RDATE:19991003T000000
  756.63 +RDATE:20001008T000000
  756.64 +RDATE:20011014T000000
  756.65 +RDATE:20021103T000000
  756.66 +RDATE:20041102T000000
  756.67 +RDATE:20051016T000000
  756.68 +RDATE:20061105T000000
  756.69 +RDATE:20071014T000000
  756.70 +END:DAYLIGHT
  756.71 +BEGIN:STANDARD
  756.72 +TZOFFSETFROM:-0300
  756.73 +TZOFFSETTO:-0400
  756.74 +TZNAME:AMT
  756.75 +DTSTART:19320401T000000
  756.76 +RDATE:19320401T000000
  756.77 +RDATE:19330401T000000
  756.78 +RDATE:19500416T010000
  756.79 +RDATE:19510401T000000
  756.80 +RDATE:19520401T000000
  756.81 +RDATE:19530301T000000
  756.82 +RDATE:19640301T000000
  756.83 +RDATE:19650331T000000
  756.84 +RDATE:19660301T000000
  756.85 +RDATE:19670301T000000
  756.86 +RDATE:19680301T000000
  756.87 +RDATE:19860315T000000
  756.88 +RDATE:19870214T000000
  756.89 +RDATE:19880207T000000
  756.90 +RDATE:19890129T000000
  756.91 +RDATE:19900211T000000
  756.92 +RDATE:19910217T000000
  756.93 +RDATE:19920209T000000
  756.94 +RDATE:19930131T000000
  756.95 +RDATE:19940220T000000
  756.96 +RDATE:19950219T000000
  756.97 +RDATE:19960211T000000
  756.98 +RDATE:19970216T000000
  756.99 +RDATE:19980301T000000
 756.100 +RDATE:19990221T000000
 756.101 +RDATE:20000227T000000
 756.102 +RDATE:20010218T000000
 756.103 +RDATE:20020217T000000
 756.104 +RDATE:20030216T000000
 756.105 +RDATE:20050220T000000
 756.106 +RDATE:20060219T000000
 756.107 +RDATE:20070225T000000
 756.108 +RDATE:20080217T000000
 756.109 +RDATE:20090215T000000
 756.110 +RDATE:20100221T000000
 756.111 +RDATE:20110220T000000
 756.112 +RDATE:20120226T000000
 756.113 +RDATE:20130217T000000
 756.114 +RDATE:20140216T000000
 756.115 +END:STANDARD
 756.116 +BEGIN:STANDARD
 756.117 +TZOFFSETFROM:-0400
 756.118 +TZOFFSETTO:-0400
 756.119 +TZNAME:AMT
 756.120 +DTSTART:20030924T000000
 756.121 +RDATE:20030924T000000
 756.122 +RDATE:20041001T000000
 756.123 +RDATE:20150222T000000
 756.124 +RDATE:20160221T000000
 756.125 +RDATE:20170219T000000
 756.126 +RDATE:20180218T000000
 756.127 +RDATE:20190217T000000
 756.128 +RDATE:20200216T000000
 756.129 +RDATE:20210221T000000
 756.130 +RDATE:20220220T000000
 756.131 +RDATE:20230226T000000
 756.132 +RDATE:20240218T000000
 756.133 +RDATE:20250216T000000
 756.134 +RDATE:20260222T000000
 756.135 +RDATE:20270221T000000
 756.136 +RDATE:20280220T000000
 756.137 +RDATE:20290218T000000
 756.138 +RDATE:20300217T000000
 756.139 +RDATE:20310216T000000
 756.140 +RDATE:20320215T000000
 756.141 +RDATE:20330220T000000
 756.142 +RDATE:20340226T000000
 756.143 +RDATE:20350218T000000
 756.144 +RDATE:20360217T000000
 756.145 +RDATE:20370222T000000
 756.146 +END:STANDARD
 756.147 +END:VTIMEZONE
 756.148 +END:VCALENDAR
   757.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   757.2 +++ b/src/zoneinfo/America/Curacao.ics	Tue Feb 10 18:12:00 2015 +0100
   757.3 @@ -0,0 +1,23 @@
   757.4 +BEGIN:VCALENDAR
   757.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   757.6 +VERSION:2.0
   757.7 +BEGIN:VTIMEZONE
   757.8 +TZID:America/Curacao
   757.9 +TZURL:http://tzurl.org/zoneinfo/America/Curacao
  757.10 +X-LIC-LOCATION:America/Curacao
  757.11 +BEGIN:STANDARD
  757.12 +TZOFFSETFROM:-043544
  757.13 +TZOFFSETTO:-0430
  757.14 +TZNAME:ANT
  757.15 +DTSTART:19120212T000000
  757.16 +RDATE:19120212T000000
  757.17 +END:STANDARD
  757.18 +BEGIN:STANDARD
  757.19 +TZOFFSETFROM:-0430
  757.20 +TZOFFSETTO:-0400
  757.21 +TZNAME:AST
  757.22 +DTSTART:19650101T000000
  757.23 +RDATE:19650101T000000
  757.24 +END:STANDARD
  757.25 +END:VTIMEZONE
  757.26 +END:VCALENDAR
   758.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   758.2 +++ b/src/zoneinfo/America/Danmarkshavn.ics	Tue Feb 10 18:12:00 2015 +0100
   758.3 @@ -0,0 +1,67 @@
   758.4 +BEGIN:VCALENDAR
   758.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   758.6 +VERSION:2.0
   758.7 +BEGIN:VTIMEZONE
   758.8 +TZID:America/Danmarkshavn
   758.9 +TZURL:http://tzurl.org/zoneinfo/America/Danmarkshavn
  758.10 +X-LIC-LOCATION:America/Danmarkshavn
  758.11 +BEGIN:STANDARD
  758.12 +TZOFFSETFROM:-011440
  758.13 +TZOFFSETTO:-0300
  758.14 +TZNAME:WGT
  758.15 +DTSTART:19160728T000000
  758.16 +RDATE:19160728T000000
  758.17 +END:STANDARD
  758.18 +BEGIN:DAYLIGHT
  758.19 +TZOFFSETFROM:-0300
  758.20 +TZOFFSETTO:-0200
  758.21 +TZNAME:WGST
  758.22 +DTSTART:19800406T020000
  758.23 +RDATE:19800406T020000
  758.24 +RDATE:19810328T220000
  758.25 +RDATE:19820327T220000
  758.26 +RDATE:19830326T220000
  758.27 +RDATE:19840324T220000
  758.28 +RDATE:19850330T220000
  758.29 +RDATE:19860329T220000
  758.30 +RDATE:19870328T220000
  758.31 +RDATE:19880326T220000
  758.32 +RDATE:19890325T220000
  758.33 +RDATE:19900324T220000
  758.34 +RDATE:19910330T220000
  758.35 +RDATE:19920328T220000
  758.36 +RDATE:19930327T220000
  758.37 +RDATE:19940326T220000
  758.38 +RDATE:19950325T220000
  758.39 +END:DAYLIGHT
  758.40 +BEGIN:STANDARD
  758.41 +TZOFFSETFROM:-0200
  758.42 +TZOFFSETTO:-0300
  758.43 +TZNAME:WGT
  758.44 +DTSTART:19800927T230000
  758.45 +RDATE:19800927T230000
  758.46 +RDATE:19810926T230000
  758.47 +RDATE:19820925T230000
  758.48 +RDATE:19830924T230000
  758.49 +RDATE:19840929T230000
  758.50 +RDATE:19850928T230000
  758.51 +RDATE:19860927T230000
  758.52 +RDATE:19870926T230000
  758.53 +RDATE:19880924T230000
  758.54 +RDATE:19890923T230000
  758.55 +RDATE:19900929T230000
  758.56 +RDATE:19910928T230000
  758.57 +RDATE:19920926T230000
  758.58 +RDATE:19930925T230000
  758.59 +RDATE:19940924T230000
  758.60 +RDATE:19950923T230000
  758.61 +END:STANDARD
  758.62 +BEGIN:STANDARD
  758.63 +TZOFFSETFROM:-0300
  758.64 +TZOFFSETTO:+0000
  758.65 +TZNAME:GMT
  758.66 +DTSTART:19960101T000000
  758.67 +RDATE:19960101T000000
  758.68 +END:STANDARD
  758.69 +END:VTIMEZONE
  758.70 +END:VCALENDAR
   759.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   759.2 +++ b/src/zoneinfo/America/Dawson.ics	Tue Feb 10 18:12:00 2015 +0100
   759.3 @@ -0,0 +1,154 @@
   759.4 +BEGIN:VCALENDAR
   759.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   759.6 +VERSION:2.0
   759.7 +BEGIN:VTIMEZONE
   759.8 +TZID:America/Dawson
   759.9 +TZURL:http://tzurl.org/zoneinfo/America/Dawson
  759.10 +X-LIC-LOCATION:America/Dawson
  759.11 +BEGIN:DAYLIGHT
  759.12 +TZOFFSETFROM:-0800
  759.13 +TZOFFSETTO:-0700
  759.14 +TZNAME:PDT
  759.15 +DTSTART:20070311T020000
  759.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  759.17 +END:DAYLIGHT
  759.18 +BEGIN:STANDARD
  759.19 +TZOFFSETFROM:-0700
  759.20 +TZOFFSETTO:-0800
  759.21 +TZNAME:PST
  759.22 +DTSTART:20071104T020000
  759.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  759.24 +END:STANDARD
  759.25 +BEGIN:STANDARD
  759.26 +TZOFFSETFROM:-091740
  759.27 +TZOFFSETTO:-0900
  759.28 +TZNAME:YST
  759.29 +DTSTART:19000820T000000
  759.30 +RDATE:19000820T000000
  759.31 +END:STANDARD
  759.32 +BEGIN:DAYLIGHT
  759.33 +TZOFFSETFROM:-0900
  759.34 +TZOFFSETTO:-0800
  759.35 +TZNAME:YDT
  759.36 +DTSTART:19180414T020000
  759.37 +RDATE:19180414T020000
  759.38 +RDATE:19190525T020000
  759.39 +END:DAYLIGHT
  759.40 +BEGIN:STANDARD
  759.41 +TZOFFSETFROM:-0800
  759.42 +TZOFFSETTO:-0900
  759.43 +TZNAME:YST
  759.44 +DTSTART:19181027T020000
  759.45 +RDATE:19181027T020000
  759.46 +RDATE:19191101T000000
  759.47 +RDATE:19450930T020000
  759.48 +END:STANDARD
  759.49 +BEGIN:DAYLIGHT
  759.50 +TZOFFSETFROM:-0900
  759.51 +TZOFFSETTO:-0800
  759.52 +TZNAME:YWT
  759.53 +DTSTART:19420209T020000
  759.54 +RDATE:19420209T020000
  759.55 +END:DAYLIGHT
  759.56 +BEGIN:DAYLIGHT
  759.57 +TZOFFSETFROM:-0800
  759.58 +TZOFFSETTO:-0800
  759.59 +TZNAME:YPT
  759.60 +DTSTART:19450814T150000
  759.61 +RDATE:19450814T150000
  759.62 +END:DAYLIGHT
  759.63 +BEGIN:DAYLIGHT
  759.64 +TZOFFSETFROM:-0900
  759.65 +TZOFFSETTO:-0700
  759.66 +TZNAME:YDDT
  759.67 +DTSTART:19650425T000000
  759.68 +RDATE:19650425T000000
  759.69 +END:DAYLIGHT
  759.70 +BEGIN:STANDARD
  759.71 +TZOFFSETFROM:-0700
  759.72 +TZOFFSETTO:-0900
  759.73 +TZNAME:YST
  759.74 +DTSTART:19651031T020000
  759.75 +RDATE:19651031T020000
  759.76 +END:STANDARD
  759.77 +BEGIN:STANDARD
  759.78 +TZOFFSETFROM:-0900
  759.79 +TZOFFSETTO:-0800
  759.80 +DTSTART:19731028T000000
  759.81 +RDATE:19731028T000000
  759.82 +END:STANDARD
  759.83 +BEGIN:STANDARD
  759.84 +TZOFFSETFROM:-0800
  759.85 +TZOFFSETTO:-0800
  759.86 +TZNAME:PST
  759.87 +DTSTART:19800101T000000
  759.88 +RDATE:19800101T000000
  759.89 +END:STANDARD
  759.90 +BEGIN:DAYLIGHT
  759.91 +TZOFFSETFROM:-0800
  759.92 +TZOFFSETTO:-0700
  759.93 +TZNAME:PDT
  759.94 +DTSTART:19800427T020000
  759.95 +RDATE:19800427T020000
  759.96 +RDATE:19810426T020000
  759.97 +RDATE:19820425T020000
  759.98 +RDATE:19830424T020000
  759.99 +RDATE:19840429T020000
 759.100 +RDATE:19850428T020000
 759.101 +RDATE:19860427T020000
 759.102 +RDATE:19870405T020000
 759.103 +RDATE:19880403T020000
 759.104 +RDATE:19890402T020000
 759.105 +RDATE:19900401T020000
 759.106 +RDATE:19910407T020000
 759.107 +RDATE:19920405T020000
 759.108 +RDATE:19930404T020000
 759.109 +RDATE:19940403T020000
 759.110 +RDATE:19950402T020000
 759.111 +RDATE:19960407T020000
 759.112 +RDATE:19970406T020000
 759.113 +RDATE:19980405T020000
 759.114 +RDATE:19990404T020000
 759.115 +RDATE:20000402T020000
 759.116 +RDATE:20010401T020000
 759.117 +RDATE:20020407T020000
 759.118 +RDATE:20030406T020000
 759.119 +RDATE:20040404T020000
 759.120 +RDATE:20050403T020000
 759.121 +RDATE:20060402T020000
 759.122 +END:DAYLIGHT
 759.123 +BEGIN:STANDARD
 759.124 +TZOFFSETFROM:-0700
 759.125 +TZOFFSETTO:-0800
 759.126 +TZNAME:PST
 759.127 +DTSTART:19801026T020000
 759.128 +RDATE:19801026T020000
 759.129 +RDATE:19811025T020000
 759.130 +RDATE:19821031T020000
 759.131 +RDATE:19831030T020000
 759.132 +RDATE:19841028T020000
 759.133 +RDATE:19851027T020000
 759.134 +RDATE:19861026T020000
 759.135 +RDATE:19871025T020000
 759.136 +RDATE:19881030T020000
 759.137 +RDATE:19891029T020000
 759.138 +RDATE:19901028T020000
 759.139 +RDATE:19911027T020000
 759.140 +RDATE:19921025T020000
 759.141 +RDATE:19931031T020000
 759.142 +RDATE:19941030T020000
 759.143 +RDATE:19951029T020000
 759.144 +RDATE:19961027T020000
 759.145 +RDATE:19971026T020000
 759.146 +RDATE:19981025T020000
 759.147 +RDATE:19991031T020000
 759.148 +RDATE:20001029T020000
 759.149 +RDATE:20011028T020000
 759.150 +RDATE:20021027T020000
 759.151 +RDATE:20031026T020000
 759.152 +RDATE:20041031T020000
 759.153 +RDATE:20051030T020000
 759.154 +RDATE:20061029T020000
 759.155 +END:STANDARD
 759.156 +END:VTIMEZONE
 759.157 +END:VCALENDAR
   760.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   760.2 +++ b/src/zoneinfo/America/Dawson_Creek.ics	Tue Feb 10 18:12:00 2015 +0100
   760.3 @@ -0,0 +1,110 @@
   760.4 +BEGIN:VCALENDAR
   760.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   760.6 +VERSION:2.0
   760.7 +BEGIN:VTIMEZONE
   760.8 +TZID:America/Dawson_Creek
   760.9 +TZURL:http://tzurl.org/zoneinfo/America/Dawson_Creek
  760.10 +X-LIC-LOCATION:America/Dawson_Creek
  760.11 +BEGIN:STANDARD
  760.12 +TZOFFSETFROM:-080056
  760.13 +TZOFFSETTO:-0800
  760.14 +TZNAME:PST
  760.15 +DTSTART:18840101T000000
  760.16 +RDATE:18840101T000000
  760.17 +END:STANDARD
  760.18 +BEGIN:DAYLIGHT
  760.19 +TZOFFSETFROM:-0800
  760.20 +TZOFFSETTO:-0700
  760.21 +TZNAME:PDT
  760.22 +DTSTART:19180414T020000
  760.23 +RDATE:19180414T020000
  760.24 +RDATE:19470427T020000
  760.25 +RDATE:19480425T020000
  760.26 +RDATE:19490424T020000
  760.27 +RDATE:19500430T020000
  760.28 +RDATE:19510429T020000
  760.29 +RDATE:19520427T020000
  760.30 +RDATE:19530426T020000
  760.31 +RDATE:19540425T020000
  760.32 +RDATE:19550424T020000
  760.33 +RDATE:19560429T020000
  760.34 +RDATE:19570428T020000
  760.35 +RDATE:19580427T020000
  760.36 +RDATE:19590426T020000
  760.37 +RDATE:19600424T020000
  760.38 +RDATE:19610430T020000
  760.39 +RDATE:19620429T020000
  760.40 +RDATE:19630428T020000
  760.41 +RDATE:19640426T020000
  760.42 +RDATE:19650425T020000
  760.43 +RDATE:19660424T020000
  760.44 +RDATE:19670430T020000
  760.45 +RDATE:19680428T020000
  760.46 +RDATE:19690427T020000
  760.47 +RDATE:19700426T020000
  760.48 +RDATE:19710425T020000
  760.49 +RDATE:19720430T020000
  760.50 +END:DAYLIGHT
  760.51 +BEGIN:STANDARD
  760.52 +TZOFFSETFROM:-0700
  760.53 +TZOFFSETTO:-0800
  760.54 +TZNAME:PST
  760.55 +DTSTART:19181031T020000
  760.56 +RDATE:19181031T020000
  760.57 +RDATE:19450930T020000
  760.58 +RDATE:19470928T020000
  760.59 +RDATE:19480926T020000
  760.60 +RDATE:19490925T020000
  760.61 +RDATE:19500924T020000
  760.62 +RDATE:19510930T020000
  760.63 +RDATE:19520928T020000
  760.64 +RDATE:19530927T020000
  760.65 +RDATE:19540926T020000
  760.66 +RDATE:19550925T020000
  760.67 +RDATE:19560930T020000
  760.68 +RDATE:19570929T020000
  760.69 +RDATE:19580928T020000
  760.70 +RDATE:19590927T020000
  760.71 +RDATE:19600925T020000
  760.72 +RDATE:19610924T020000
  760.73 +RDATE:19621028T020000
  760.74 +RDATE:19631027T020000
  760.75 +RDATE:19641025T020000
  760.76 +RDATE:19651031T020000
  760.77 +RDATE:19661030T020000
  760.78 +RDATE:19671029T020000
  760.79 +RDATE:19681027T020000
  760.80 +RDATE:19691026T020000
  760.81 +RDATE:19701025T020000
  760.82 +RDATE:19711031T020000
  760.83 +END:STANDARD
  760.84 +BEGIN:DAYLIGHT
  760.85 +TZOFFSETFROM:-0800
  760.86 +TZOFFSETTO:-0700
  760.87 +TZNAME:PWT
  760.88 +DTSTART:19420209T020000
  760.89 +RDATE:19420209T020000
  760.90 +END:DAYLIGHT
  760.91 +BEGIN:DAYLIGHT
  760.92 +TZOFFSETFROM:-0700
  760.93 +TZOFFSETTO:-0700
  760.94 +TZNAME:PPT
  760.95 +DTSTART:19450814T160000
  760.96 +RDATE:19450814T160000
  760.97 +END:DAYLIGHT
  760.98 +BEGIN:STANDARD
  760.99 +TZOFFSETFROM:-0800
 760.100 +TZOFFSETTO:-0800
 760.101 +TZNAME:PST
 760.102 +DTSTART:19470101T000000
 760.103 +RDATE:19470101T000000
 760.104 +END:STANDARD
 760.105 +BEGIN:STANDARD
 760.106 +TZOFFSETFROM:-0700
 760.107 +TZOFFSETTO:-0700
 760.108 +TZNAME:MST
 760.109 +DTSTART:19720830T020000
 760.110 +RDATE:19720830T020000
 760.111 +END:STANDARD
 760.112 +END:VTIMEZONE
 760.113 +END:VCALENDAR
   761.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   761.2 +++ b/src/zoneinfo/America/Denver.ics	Tue Feb 10 18:12:00 2015 +0100
   761.3 @@ -0,0 +1,159 @@
   761.4 +BEGIN:VCALENDAR
   761.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   761.6 +VERSION:2.0
   761.7 +BEGIN:VTIMEZONE
   761.8 +TZID:America/Denver
   761.9 +TZURL:http://tzurl.org/zoneinfo/America/Denver
  761.10 +X-LIC-LOCATION:America/Denver
  761.11 +BEGIN:DAYLIGHT
  761.12 +TZOFFSETFROM:-0700
  761.13 +TZOFFSETTO:-0600
  761.14 +TZNAME:MDT
  761.15 +DTSTART:20070311T020000
  761.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  761.17 +END:DAYLIGHT
  761.18 +BEGIN:STANDARD
  761.19 +TZOFFSETFROM:-0600
  761.20 +TZOFFSETTO:-0700
  761.21 +TZNAME:MST
  761.22 +DTSTART:20071104T020000
  761.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  761.24 +END:STANDARD
  761.25 +BEGIN:STANDARD
  761.26 +TZOFFSETFROM:-065956
  761.27 +TZOFFSETTO:-0700
  761.28 +TZNAME:MST
  761.29 +DTSTART:18831118T120004
  761.30 +RDATE:18831118T120004
  761.31 +END:STANDARD
  761.32 +BEGIN:DAYLIGHT
  761.33 +TZOFFSETFROM:-0700
  761.34 +TZOFFSETTO:-0600
  761.35 +TZNAME:MDT
  761.36 +DTSTART:19180331T020000
  761.37 +RDATE:19180331T020000
  761.38 +RDATE:19190330T020000
  761.39 +RDATE:19200328T020000
  761.40 +RDATE:19210327T020000
  761.41 +RDATE:19650425T020000
  761.42 +RDATE:19660424T020000
  761.43 +RDATE:19670430T020000
  761.44 +RDATE:19680428T020000
  761.45 +RDATE:19690427T020000
  761.46 +RDATE:19700426T020000
  761.47 +RDATE:19710425T020000
  761.48 +RDATE:19720430T020000
  761.49 +RDATE:19730429T020000
  761.50 +RDATE:19740106T020000
  761.51 +RDATE:19750223T020000
  761.52 +RDATE:19760425T020000
  761.53 +RDATE:19770424T020000
  761.54 +RDATE:19780430T020000
  761.55 +RDATE:19790429T020000
  761.56 +RDATE:19800427T020000
  761.57 +RDATE:19810426T020000
  761.58 +RDATE:19820425T020000
  761.59 +RDATE:19830424T020000
  761.60 +RDATE:19840429T020000
  761.61 +RDATE:19850428T020000
  761.62 +RDATE:19860427T020000
  761.63 +RDATE:19870405T020000
  761.64 +RDATE:19880403T020000
  761.65 +RDATE:19890402T020000
  761.66 +RDATE:19900401T020000
  761.67 +RDATE:19910407T020000
  761.68 +RDATE:19920405T020000
  761.69 +RDATE:19930404T020000
  761.70 +RDATE:19940403T020000
  761.71 +RDATE:19950402T020000
  761.72 +RDATE:19960407T020000
  761.73 +RDATE:19970406T020000
  761.74 +RDATE:19980405T020000
  761.75 +RDATE:19990404T020000
  761.76 +RDATE:20000402T020000
  761.77 +RDATE:20010401T020000
  761.78 +RDATE:20020407T020000
  761.79 +RDATE:20030406T020000
  761.80 +RDATE:20040404T020000
  761.81 +RDATE:20050403T020000
  761.82 +RDATE:20060402T020000
  761.83 +END:DAYLIGHT
  761.84 +BEGIN:STANDARD
  761.85 +TZOFFSETFROM:-0600
  761.86 +TZOFFSETTO:-0700
  761.87 +TZNAME:MST
  761.88 +DTSTART:19181027T020000
  761.89 +RDATE:19181027T020000
  761.90 +RDATE:19191026T020000
  761.91 +RDATE:19201031T020000
  761.92 +RDATE:19210522T020000
  761.93 +RDATE:19450930T020000
  761.94 +RDATE:19651031T020000
  761.95 +RDATE:19661030T020000
  761.96 +RDATE:19671029T020000
  761.97 +RDATE:19681027T020000
  761.98 +RDATE:19691026T020000
  761.99 +RDATE:19701025T020000
 761.100 +RDATE:19711031T020000
 761.101 +RDATE:19721029T020000
 761.102 +RDATE:19731028T020000
 761.103 +RDATE:19741027T020000
 761.104 +RDATE:19751026T020000
 761.105 +RDATE:19761031T020000
 761.106 +RDATE:19771030T020000
 761.107 +RDATE:19781029T020000
 761.108 +RDATE:19791028T020000
 761.109 +RDATE:19801026T020000
 761.110 +RDATE:19811025T020000
 761.111 +RDATE:19821031T020000
 761.112 +RDATE:19831030T020000
 761.113 +RDATE:19841028T020000
 761.114 +RDATE:19851027T020000
 761.115 +RDATE:19861026T020000
 761.116 +RDATE:19871025T020000
 761.117 +RDATE:19881030T020000
 761.118 +RDATE:19891029T020000
 761.119 +RDATE:19901028T020000
 761.120 +RDATE:19911027T020000
 761.121 +RDATE:19921025T020000
 761.122 +RDATE:19931031T020000
 761.123 +RDATE:19941030T020000
 761.124 +RDATE:19951029T020000
 761.125 +RDATE:19961027T020000
 761.126 +RDATE:19971026T020000
 761.127 +RDATE:19981025T020000
 761.128 +RDATE:19991031T020000
 761.129 +RDATE:20001029T020000
 761.130 +RDATE:20011028T020000
 761.131 +RDATE:20021027T020000
 761.132 +RDATE:20031026T020000
 761.133 +RDATE:20041031T020000
 761.134 +RDATE:20051030T020000
 761.135 +RDATE:20061029T020000
 761.136 +END:STANDARD
 761.137 +BEGIN:STANDARD
 761.138 +TZOFFSETFROM:-0700
 761.139 +TZOFFSETTO:-0700
 761.140 +TZNAME:MST
 761.141 +DTSTART:19200101T000000
 761.142 +RDATE:19200101T000000
 761.143 +RDATE:19420101T000000
 761.144 +RDATE:19460101T000000
 761.145 +RDATE:19670101T000000
 761.146 +END:STANDARD
 761.147 +BEGIN:DAYLIGHT
 761.148 +TZOFFSETFROM:-0700
 761.149 +TZOFFSETTO:-0600
 761.150 +TZNAME:MWT
 761.151 +DTSTART:19420209T020000
 761.152 +RDATE:19420209T020000
 761.153 +END:DAYLIGHT
 761.154 +BEGIN:DAYLIGHT
 761.155 +TZOFFSETFROM:-0600
 761.156 +TZOFFSETTO:-0600
 761.157 +TZNAME:MPT
 761.158 +DTSTART:19450814T170000
 761.159 +RDATE:19450814T170000
 761.160 +END:DAYLIGHT
 761.161 +END:VTIMEZONE
 761.162 +END:VCALENDAR
   762.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   762.2 +++ b/src/zoneinfo/America/Detroit.ics	Tue Feb 10 18:12:00 2015 +0100
   762.3 @@ -0,0 +1,146 @@
   762.4 +BEGIN:VCALENDAR
   762.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   762.6 +VERSION:2.0
   762.7 +BEGIN:VTIMEZONE
   762.8 +TZID:America/Detroit
   762.9 +TZURL:http://tzurl.org/zoneinfo/America/Detroit
  762.10 +X-LIC-LOCATION:America/Detroit
  762.11 +BEGIN:DAYLIGHT
  762.12 +TZOFFSETFROM:-0500
  762.13 +TZOFFSETTO:-0400
  762.14 +TZNAME:EDT
  762.15 +DTSTART:20070311T020000
  762.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  762.17 +END:DAYLIGHT
  762.18 +BEGIN:STANDARD
  762.19 +TZOFFSETFROM:-0400
  762.20 +TZOFFSETTO:-0500
  762.21 +TZNAME:EST
  762.22 +DTSTART:20071104T020000
  762.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  762.24 +END:STANDARD
  762.25 +BEGIN:STANDARD
  762.26 +TZOFFSETFROM:-053211
  762.27 +TZOFFSETTO:-0600
  762.28 +TZNAME:CST
  762.29 +DTSTART:19050101T000000
  762.30 +RDATE:19050101T000000
  762.31 +END:STANDARD
  762.32 +BEGIN:STANDARD
  762.33 +TZOFFSETFROM:-0600
  762.34 +TZOFFSETTO:-0500
  762.35 +TZNAME:EST
  762.36 +DTSTART:19150515T020000
  762.37 +RDATE:19150515T020000
  762.38 +END:STANDARD
  762.39 +BEGIN:STANDARD
  762.40 +TZOFFSETFROM:-0500
  762.41 +TZOFFSETTO:-0500
  762.42 +TZNAME:EST
  762.43 +DTSTART:19420101T000000
  762.44 +RDATE:19420101T000000
  762.45 +RDATE:19460101T000000
  762.46 +RDATE:19730101T000000
  762.47 +RDATE:19750101T000000
  762.48 +END:STANDARD
  762.49 +BEGIN:DAYLIGHT
  762.50 +TZOFFSETFROM:-0500
  762.51 +TZOFFSETTO:-0400
  762.52 +TZNAME:EWT
  762.53 +DTSTART:19420209T020000
  762.54 +RDATE:19420209T020000
  762.55 +END:DAYLIGHT
  762.56 +BEGIN:DAYLIGHT
  762.57 +TZOFFSETFROM:-0400
  762.58 +TZOFFSETTO:-0400
  762.59 +TZNAME:EPT
  762.60 +DTSTART:19450814T190000
  762.61 +RDATE:19450814T190000
  762.62 +END:DAYLIGHT
  762.63 +BEGIN:STANDARD
  762.64 +TZOFFSETFROM:-0400
  762.65 +TZOFFSETTO:-0500
  762.66 +TZNAME:EST
  762.67 +DTSTART:19450930T020000
  762.68 +RDATE:19450930T020000
  762.69 +RDATE:19480926T020000
  762.70 +RDATE:19671029T020000
  762.71 +RDATE:19731028T020000
  762.72 +RDATE:19741027T020000
  762.73 +RDATE:19751026T020000
  762.74 +RDATE:19761031T020000
  762.75 +RDATE:19771030T020000
  762.76 +RDATE:19781029T020000
  762.77 +RDATE:19791028T020000
  762.78 +RDATE:19801026T020000
  762.79 +RDATE:19811025T020000
  762.80 +RDATE:19821031T020000
  762.81 +RDATE:19831030T020000
  762.82 +RDATE:19841028T020000
  762.83 +RDATE:19851027T020000
  762.84 +RDATE:19861026T020000
  762.85 +RDATE:19871025T020000
  762.86 +RDATE:19881030T020000
  762.87 +RDATE:19891029T020000
  762.88 +RDATE:19901028T020000
  762.89 +RDATE:19911027T020000
  762.90 +RDATE:19921025T020000
  762.91 +RDATE:19931031T020000
  762.92 +RDATE:19941030T020000
  762.93 +RDATE:19951029T020000
  762.94 +RDATE:19961027T020000
  762.95 +RDATE:19971026T020000
  762.96 +RDATE:19981025T020000
  762.97 +RDATE:19991031T020000
  762.98 +RDATE:20001029T020000
  762.99 +RDATE:20011028T020000
 762.100 +RDATE:20021027T020000
 762.101 +RDATE:20031026T020000
 762.102 +RDATE:20041031T020000
 762.103 +RDATE:20051030T020000
 762.104 +RDATE:20061029T020000
 762.105 +END:STANDARD
 762.106 +BEGIN:DAYLIGHT
 762.107 +TZOFFSETFROM:-0500
 762.108 +TZOFFSETTO:-0400
 762.109 +TZNAME:EDT
 762.110 +DTSTART:19480425T020000
 762.111 +RDATE:19480425T020000
 762.112 +RDATE:19670614T020000
 762.113 +RDATE:19730429T020000
 762.114 +RDATE:19740106T020000
 762.115 +RDATE:19750427T020000
 762.116 +RDATE:19760425T020000
 762.117 +RDATE:19770424T020000
 762.118 +RDATE:19780430T020000
 762.119 +RDATE:19790429T020000
 762.120 +RDATE:19800427T020000
 762.121 +RDATE:19810426T020000
 762.122 +RDATE:19820425T020000
 762.123 +RDATE:19830424T020000
 762.124 +RDATE:19840429T020000
 762.125 +RDATE:19850428T020000
 762.126 +RDATE:19860427T020000
 762.127 +RDATE:19870405T020000
 762.128 +RDATE:19880403T020000
 762.129 +RDATE:19890402T020000
 762.130 +RDATE:19900401T020000
 762.131 +RDATE:19910407T020000
 762.132 +RDATE:19920405T020000
 762.133 +RDATE:19930404T020000
 762.134 +RDATE:19940403T020000
 762.135 +RDATE:19950402T020000
 762.136 +RDATE:19960407T020000
 762.137 +RDATE:19970406T020000
 762.138 +RDATE:19980405T020000
 762.139 +RDATE:19990404T020000
 762.140 +RDATE:20000402T020000
 762.141 +RDATE:20010401T020000
 762.142 +RDATE:20020407T020000
 762.143 +RDATE:20030406T020000
 762.144 +RDATE:20040404T020000
 762.145 +RDATE:20050403T020000
 762.146 +RDATE:20060402T020000
 762.147 +END:DAYLIGHT
 762.148 +END:VTIMEZONE
 762.149 +END:VCALENDAR
   763.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   763.2 +++ b/src/zoneinfo/America/Dominica.ics	Tue Feb 10 18:12:00 2015 +0100
   763.3 @@ -0,0 +1,16 @@
   763.4 +BEGIN:VCALENDAR
   763.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   763.6 +VERSION:2.0
   763.7 +BEGIN:VTIMEZONE
   763.8 +TZID:America/Dominica
   763.9 +TZURL:http://tzurl.org/zoneinfo/America/Dominica
  763.10 +X-LIC-LOCATION:America/Dominica
  763.11 +BEGIN:STANDARD
  763.12 +TZOFFSETFROM:-040536
  763.13 +TZOFFSETTO:-0400
  763.14 +TZNAME:AST
  763.15 +DTSTART:19110701T000100
  763.16 +RDATE:19110701T000100
  763.17 +END:STANDARD
  763.18 +END:VTIMEZONE
  763.19 +END:VCALENDAR
   764.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   764.2 +++ b/src/zoneinfo/America/Edmonton.ics	Tue Feb 10 18:12:00 2015 +0100
   764.3 @@ -0,0 +1,152 @@
   764.4 +BEGIN:VCALENDAR
   764.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   764.6 +VERSION:2.0
   764.7 +BEGIN:VTIMEZONE
   764.8 +TZID:America/Edmonton
   764.9 +TZURL:http://tzurl.org/zoneinfo/America/Edmonton
  764.10 +X-LIC-LOCATION:America/Edmonton
  764.11 +BEGIN:DAYLIGHT
  764.12 +TZOFFSETFROM:-0700
  764.13 +TZOFFSETTO:-0600
  764.14 +TZNAME:MDT
  764.15 +DTSTART:20070311T020000
  764.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  764.17 +END:DAYLIGHT
  764.18 +BEGIN:STANDARD
  764.19 +TZOFFSETFROM:-0600
  764.20 +TZOFFSETTO:-0700
  764.21 +TZNAME:MST
  764.22 +DTSTART:20071104T020000
  764.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  764.24 +END:STANDARD
  764.25 +BEGIN:STANDARD
  764.26 +TZOFFSETFROM:-073352
  764.27 +TZOFFSETTO:-0700
  764.28 +TZNAME:MST
  764.29 +DTSTART:19060901T000000
  764.30 +RDATE:19060901T000000
  764.31 +END:STANDARD
  764.32 +BEGIN:DAYLIGHT
  764.33 +TZOFFSETFROM:-0700
  764.34 +TZOFFSETTO:-0600
  764.35 +TZNAME:MDT
  764.36 +DTSTART:19180414T020000
  764.37 +RDATE:19180414T020000
  764.38 +RDATE:19190413T020000
  764.39 +RDATE:19200425T020000
  764.40 +RDATE:19210424T020000
  764.41 +RDATE:19220430T020000
  764.42 +RDATE:19230429T020000
  764.43 +RDATE:19470427T020000
  764.44 +RDATE:19670430T020000
  764.45 +RDATE:19690427T020000
  764.46 +RDATE:19720430T020000
  764.47 +RDATE:19730429T020000
  764.48 +RDATE:19740428T020000
  764.49 +RDATE:19750427T020000
  764.50 +RDATE:19760425T020000
  764.51 +RDATE:19770424T020000
  764.52 +RDATE:19780430T020000
  764.53 +RDATE:19790429T020000
  764.54 +RDATE:19800427T020000
  764.55 +RDATE:19810426T020000
  764.56 +RDATE:19820425T020000
  764.57 +RDATE:19830424T020000
  764.58 +RDATE:19840429T020000
  764.59 +RDATE:19850428T020000
  764.60 +RDATE:19860427T020000
  764.61 +RDATE:19870405T020000
  764.62 +RDATE:19880403T020000
  764.63 +RDATE:19890402T020000
  764.64 +RDATE:19900401T020000
  764.65 +RDATE:19910407T020000
  764.66 +RDATE:19920405T020000
  764.67 +RDATE:19930404T020000
  764.68 +RDATE:19940403T020000
  764.69 +RDATE:19950402T020000
  764.70 +RDATE:19960407T020000
  764.71 +RDATE:19970406T020000
  764.72 +RDATE:19980405T020000
  764.73 +RDATE:19990404T020000
  764.74 +RDATE:20000402T020000
  764.75 +RDATE:20010401T020000
  764.76 +RDATE:20020407T020000
  764.77 +RDATE:20030406T020000
  764.78 +RDATE:20040404T020000
  764.79 +RDATE:20050403T020000
  764.80 +RDATE:20060402T020000
  764.81 +END:DAYLIGHT
  764.82 +BEGIN:STANDARD
  764.83 +TZOFFSETFROM:-0600
  764.84 +TZOFFSETTO:-0700
  764.85 +TZNAME:MST
  764.86 +DTSTART:19181031T020000
  764.87 +RDATE:19181031T020000
  764.88 +RDATE:19190527T020000
  764.89 +RDATE:19201031T020000
  764.90 +RDATE:19210925T020000
  764.91 +RDATE:19220924T020000
  764.92 +RDATE:19230930T020000
  764.93 +RDATE:19450930T020000
  764.94 +RDATE:19470928T020000
  764.95 +RDATE:19671029T020000
  764.96 +RDATE:19691026T020000
  764.97 +RDATE:19721029T020000
  764.98 +RDATE:19731028T020000
  764.99 +RDATE:19741027T020000
 764.100 +RDATE:19751026T020000
 764.101 +RDATE:19761031T020000
 764.102 +RDATE:19771030T020000
 764.103 +RDATE:19781029T020000
 764.104 +RDATE:19791028T020000
 764.105 +RDATE:19801026T020000
 764.106 +RDATE:19811025T020000
 764.107 +RDATE:19821031T020000
 764.108 +RDATE:19831030T020000
 764.109 +RDATE:19841028T020000
 764.110 +RDATE:19851027T020000
 764.111 +RDATE:19861026T020000
 764.112 +RDATE:19871025T020000
 764.113 +RDATE:19881030T020000
 764.114 +RDATE:19891029T020000
 764.115 +RDATE:19901028T020000
 764.116 +RDATE:19911027T020000
 764.117 +RDATE:19921025T020000
 764.118 +RDATE:19931031T020000
 764.119 +RDATE:19941030T020000
 764.120 +RDATE:19951029T020000
 764.121 +RDATE:19961027T020000
 764.122 +RDATE:19971026T020000
 764.123 +RDATE:19981025T020000
 764.124 +RDATE:19991031T020000
 764.125 +RDATE:20001029T020000
 764.126 +RDATE:20011028T020000
 764.127 +RDATE:20021027T020000
 764.128 +RDATE:20031026T020000
 764.129 +RDATE:20041031T020000
 764.130 +RDATE:20051030T020000
 764.131 +RDATE:20061029T020000
 764.132 +END:STANDARD
 764.133 +BEGIN:DAYLIGHT
 764.134 +TZOFFSETFROM:-0700
 764.135 +TZOFFSETTO:-0600
 764.136 +TZNAME:MWT
 764.137 +DTSTART:19420209T020000
 764.138 +RDATE:19420209T020000
 764.139 +END:DAYLIGHT
 764.140 +BEGIN:DAYLIGHT
 764.141 +TZOFFSETFROM:-0600
 764.142 +TZOFFSETTO:-0600
 764.143 +TZNAME:MPT
 764.144 +DTSTART:19450814T170000
 764.145 +RDATE:19450814T170000
 764.146 +END:DAYLIGHT
 764.147 +BEGIN:STANDARD
 764.148 +TZOFFSETFROM:-0700
 764.149 +TZOFFSETTO:-0700
 764.150 +TZNAME:MST
 764.151 +DTSTART:19870101T000000
 764.152 +RDATE:19870101T000000
 764.153 +END:STANDARD
 764.154 +END:VTIMEZONE
 764.155 +END:VCALENDAR
   765.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   765.2 +++ b/src/zoneinfo/America/Eirunepe.ics	Tue Feb 10 18:12:00 2015 +0100
   765.3 @@ -0,0 +1,74 @@
   765.4 +BEGIN:VCALENDAR
   765.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   765.6 +VERSION:2.0
   765.7 +BEGIN:VTIMEZONE
   765.8 +TZID:America/Eirunepe
   765.9 +TZURL:http://tzurl.org/zoneinfo/America/Eirunepe
  765.10 +X-LIC-LOCATION:America/Eirunepe
  765.11 +BEGIN:STANDARD
  765.12 +TZOFFSETFROM:-043928
  765.13 +TZOFFSETTO:-0500
  765.14 +TZNAME:ACT
  765.15 +DTSTART:19140101T000000
  765.16 +RDATE:19140101T000000
  765.17 +END:STANDARD
  765.18 +BEGIN:DAYLIGHT
  765.19 +TZOFFSETFROM:-0500
  765.20 +TZOFFSETTO:-0400
  765.21 +TZNAME:ACST
  765.22 +DTSTART:19311003T110000
  765.23 +RDATE:19311003T110000
  765.24 +RDATE:19321003T000000
  765.25 +RDATE:19491201T000000
  765.26 +RDATE:19501201T000000
  765.27 +RDATE:19511201T000000
  765.28 +RDATE:19521201T000000
  765.29 +RDATE:19631209T000000
  765.30 +RDATE:19650131T000000
  765.31 +RDATE:19651201T000000
  765.32 +RDATE:19661101T000000
  765.33 +RDATE:19671101T000000
  765.34 +RDATE:19851102T000000
  765.35 +RDATE:19861025T000000
  765.36 +RDATE:19871025T000000
  765.37 +RDATE:19931017T000000
  765.38 +END:DAYLIGHT
  765.39 +BEGIN:STANDARD
  765.40 +TZOFFSETFROM:-0400
  765.41 +TZOFFSETTO:-0500
  765.42 +TZNAME:ACT
  765.43 +DTSTART:19320401T000000
  765.44 +RDATE:19320401T000000
  765.45 +RDATE:19330401T000000
  765.46 +RDATE:19500416T010000
  765.47 +RDATE:19510401T000000
  765.48 +RDATE:19520401T000000
  765.49 +RDATE:19530301T000000
  765.50 +RDATE:19640301T000000
  765.51 +RDATE:19650331T000000
  765.52 +RDATE:19660301T000000
  765.53 +RDATE:19670301T000000
  765.54 +RDATE:19680301T000000
  765.55 +RDATE:19860315T000000
  765.56 +RDATE:19870214T000000
  765.57 +RDATE:19880207T000000
  765.58 +RDATE:19940220T000000
  765.59 +END:STANDARD
  765.60 +BEGIN:STANDARD
  765.61 +TZOFFSETFROM:-0500
  765.62 +TZOFFSETTO:-0500
  765.63 +TZNAME:ACT
  765.64 +DTSTART:19880912T000000
  765.65 +RDATE:19880912T000000
  765.66 +RDATE:19930928T000000
  765.67 +RDATE:19940922T000000
  765.68 +END:STANDARD
  765.69 +BEGIN:STANDARD
  765.70 +TZOFFSETFROM:-0500
  765.71 +TZOFFSETTO:-0400
  765.72 +TZNAME:AMT
  765.73 +DTSTART:20080624T000000
  765.74 +RDATE:20080624T000000
  765.75 +END:STANDARD
  765.76 +END:VTIMEZONE
  765.77 +END:VCALENDAR
   766.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   766.2 +++ b/src/zoneinfo/America/El_Salvador.ics	Tue Feb 10 18:12:00 2015 +0100
   766.3 @@ -0,0 +1,32 @@
   766.4 +BEGIN:VCALENDAR
   766.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   766.6 +VERSION:2.0
   766.7 +BEGIN:VTIMEZONE
   766.8 +TZID:America/El_Salvador
   766.9 +TZURL:http://tzurl.org/zoneinfo/America/El_Salvador
  766.10 +X-LIC-LOCATION:America/El_Salvador
  766.11 +BEGIN:STANDARD
  766.12 +TZOFFSETFROM:-055648
  766.13 +TZOFFSETTO:-0600
  766.14 +TZNAME:CST
  766.15 +DTSTART:19210101T000000
  766.16 +RDATE:19210101T000000
  766.17 +END:STANDARD
  766.18 +BEGIN:DAYLIGHT
  766.19 +TZOFFSETFROM:-0600
  766.20 +TZOFFSETTO:-0500
  766.21 +TZNAME:CDT
  766.22 +DTSTART:19870503T000000
  766.23 +RDATE:19870503T000000
  766.24 +RDATE:19880501T000000
  766.25 +END:DAYLIGHT
  766.26 +BEGIN:STANDARD
  766.27 +TZOFFSETFROM:-0500
  766.28 +TZOFFSETTO:-0600
  766.29 +TZNAME:CST
  766.30 +DTSTART:19870927T000000
  766.31 +RDATE:19870927T000000
  766.32 +RDATE:19880925T000000
  766.33 +END:STANDARD
  766.34 +END:VTIMEZONE
  766.35 +END:VCALENDAR
   767.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   767.2 +++ b/src/zoneinfo/America/Fortaleza.ics	Tue Feb 10 18:12:00 2015 +0100
   767.3 @@ -0,0 +1,76 @@
   767.4 +BEGIN:VCALENDAR
   767.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   767.6 +VERSION:2.0
   767.7 +BEGIN:VTIMEZONE
   767.8 +TZID:America/Fortaleza
   767.9 +TZURL:http://tzurl.org/zoneinfo/America/Fortaleza
  767.10 +X-LIC-LOCATION:America/Fortaleza
  767.11 +BEGIN:STANDARD
  767.12 +TZOFFSETFROM:-0234
  767.13 +TZOFFSETTO:-0300
  767.14 +TZNAME:BRT
  767.15 +DTSTART:19140101T000000
  767.16 +RDATE:19140101T000000
  767.17 +END:STANDARD
  767.18 +BEGIN:DAYLIGHT
  767.19 +TZOFFSETFROM:-0300
  767.20 +TZOFFSETTO:-0200
  767.21 +TZNAME:BRST
  767.22 +DTSTART:19311003T110000
  767.23 +RDATE:19311003T110000
  767.24 +RDATE:19321003T000000
  767.25 +RDATE:19491201T000000
  767.26 +RDATE:19501201T000000
  767.27 +RDATE:19511201T000000
  767.28 +RDATE:19521201T000000
  767.29 +RDATE:19631209T000000
  767.30 +RDATE:19650131T000000
  767.31 +RDATE:19651201T000000
  767.32 +RDATE:19661101T000000
  767.33 +RDATE:19671101T000000
  767.34 +RDATE:19851102T000000
  767.35 +RDATE:19861025T000000
  767.36 +RDATE:19871025T000000
  767.37 +RDATE:19881016T000000
  767.38 +RDATE:19891015T000000
  767.39 +RDATE:19991003T000000
  767.40 +RDATE:20001008T000000
  767.41 +RDATE:20011014T000000
  767.42 +END:DAYLIGHT
  767.43 +BEGIN:STANDARD
  767.44 +TZOFFSETFROM:-0200
  767.45 +TZOFFSETTO:-0300
  767.46 +TZNAME:BRT
  767.47 +DTSTART:19320401T000000
  767.48 +RDATE:19320401T000000
  767.49 +RDATE:19330401T000000
  767.50 +RDATE:19500416T010000
  767.51 +RDATE:19510401T000000
  767.52 +RDATE:19520401T000000
  767.53 +RDATE:19530301T000000
  767.54 +RDATE:19640301T000000
  767.55 +RDATE:19650331T000000
  767.56 +RDATE:19660301T000000
  767.57 +RDATE:19670301T000000
  767.58 +RDATE:19680301T000000
  767.59 +RDATE:19860315T000000
  767.60 +RDATE:19870214T000000
  767.61 +RDATE:19880207T000000
  767.62 +RDATE:19890129T000000
  767.63 +RDATE:19900211T000000
  767.64 +RDATE:20000227T000000
  767.65 +RDATE:20001022T000000
  767.66 +RDATE:20020217T000000
  767.67 +END:STANDARD
  767.68 +BEGIN:STANDARD
  767.69 +TZOFFSETFROM:-0300
  767.70 +TZOFFSETTO:-0300
  767.71 +TZNAME:BRT
  767.72 +DTSTART:19900917T000000
  767.73 +RDATE:19900917T000000
  767.74 +RDATE:19990930T000000
  767.75 +RDATE:20010913T000000
  767.76 +RDATE:20021001T000000
  767.77 +END:STANDARD
  767.78 +END:VTIMEZONE
  767.79 +END:VCALENDAR
   768.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   768.2 +++ b/src/zoneinfo/America/Glace_Bay.ics	Tue Feb 10 18:12:00 2015 +0100
   768.3 @@ -0,0 +1,141 @@
   768.4 +BEGIN:VCALENDAR
   768.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   768.6 +VERSION:2.0
   768.7 +BEGIN:VTIMEZONE
   768.8 +TZID:America/Glace_Bay
   768.9 +TZURL:http://tzurl.org/zoneinfo/America/Glace_Bay
  768.10 +X-LIC-LOCATION:America/Glace_Bay
  768.11 +BEGIN:DAYLIGHT
  768.12 +TZOFFSETFROM:-0400
  768.13 +TZOFFSETTO:-0300
  768.14 +TZNAME:ADT
  768.15 +DTSTART:20070311T020000
  768.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  768.17 +END:DAYLIGHT
  768.18 +BEGIN:STANDARD
  768.19 +TZOFFSETFROM:-0300
  768.20 +TZOFFSETTO:-0400
  768.21 +TZNAME:AST
  768.22 +DTSTART:20071104T020000
  768.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  768.24 +END:STANDARD
  768.25 +BEGIN:STANDARD
  768.26 +TZOFFSETFROM:-035948
  768.27 +TZOFFSETTO:-0400
  768.28 +TZNAME:AST
  768.29 +DTSTART:19020615T000000
  768.30 +RDATE:19020615T000000
  768.31 +END:STANDARD
  768.32 +BEGIN:DAYLIGHT
  768.33 +TZOFFSETFROM:-0400
  768.34 +TZOFFSETTO:-0300
  768.35 +TZNAME:ADT
  768.36 +DTSTART:19180414T020000
  768.37 +RDATE:19180414T020000
  768.38 +RDATE:19530426T020000
  768.39 +RDATE:19720430T020000
  768.40 +RDATE:19730429T020000
  768.41 +RDATE:19740428T020000
  768.42 +RDATE:19750427T020000
  768.43 +RDATE:19760425T020000
  768.44 +RDATE:19770424T020000
  768.45 +RDATE:19780430T020000
  768.46 +RDATE:19790429T020000
  768.47 +RDATE:19800427T020000
  768.48 +RDATE:19810426T020000
  768.49 +RDATE:19820425T020000
  768.50 +RDATE:19830424T020000
  768.51 +RDATE:19840429T020000
  768.52 +RDATE:19850428T020000
  768.53 +RDATE:19860427T020000
  768.54 +RDATE:19870405T020000
  768.55 +RDATE:19880403T020000
  768.56 +RDATE:19890402T020000
  768.57 +RDATE:19900401T020000
  768.58 +RDATE:19910407T020000
  768.59 +RDATE:19920405T020000
  768.60 +RDATE:19930404T020000
  768.61 +RDATE:19940403T020000
  768.62 +RDATE:19950402T020000
  768.63 +RDATE:19960407T020000
  768.64 +RDATE:19970406T020000
  768.65 +RDATE:19980405T020000
  768.66 +RDATE:19990404T020000
  768.67 +RDATE:20000402T020000
  768.68 +RDATE:20010401T020000
  768.69 +RDATE:20020407T020000
  768.70 +RDATE:20030406T020000
  768.71 +RDATE:20040404T020000
  768.72 +RDATE:20050403T020000
  768.73 +RDATE:20060402T020000
  768.74 +END:DAYLIGHT
  768.75 +BEGIN:STANDARD
  768.76 +TZOFFSETFROM:-0300
  768.77 +TZOFFSETTO:-0400
  768.78 +TZNAME:AST
  768.79 +DTSTART:19181031T020000
  768.80 +RDATE:19181031T020000
  768.81 +RDATE:19450930T020000
  768.82 +RDATE:19530927T020000
  768.83 +RDATE:19721029T020000
  768.84 +RDATE:19731028T020000
  768.85 +RDATE:19741027T020000
  768.86 +RDATE:19751026T020000
  768.87 +RDATE:19761031T020000
  768.88 +RDATE:19771030T020000
  768.89 +RDATE:19781029T020000
  768.90 +RDATE:19791028T020000
  768.91 +RDATE:19801026T020000
  768.92 +RDATE:19811025T020000
  768.93 +RDATE:19821031T020000
  768.94 +RDATE:19831030T020000
  768.95 +RDATE:19841028T020000
  768.96 +RDATE:19851027T020000
  768.97 +RDATE:19861026T020000
  768.98 +RDATE:19871025T020000
  768.99 +RDATE:19881030T020000
 768.100 +RDATE:19891029T020000
 768.101 +RDATE:19901028T020000
 768.102 +RDATE:19911027T020000
 768.103 +RDATE:19921025T020000
 768.104 +RDATE:19931031T020000
 768.105 +RDATE:19941030T020000
 768.106 +RDATE:19951029T020000
 768.107 +RDATE:19961027T020000
 768.108 +RDATE:19971026T020000
 768.109 +RDATE:19981025T020000
 768.110 +RDATE:19991031T020000
 768.111 +RDATE:20001029T020000
 768.112 +RDATE:20011028T020000
 768.113 +RDATE:20021027T020000
 768.114 +RDATE:20031026T020000
 768.115 +RDATE:20041031T020000
 768.116 +RDATE:20051030T020000
 768.117 +RDATE:20061029T020000
 768.118 +END:STANDARD
 768.119 +BEGIN:DAYLIGHT
 768.120 +TZOFFSETFROM:-0400
 768.121 +TZOFFSETTO:-0300
 768.122 +TZNAME:AWT
 768.123 +DTSTART:19420209T020000
 768.124 +RDATE:19420209T020000
 768.125 +END:DAYLIGHT
 768.126 +BEGIN:DAYLIGHT
 768.127 +TZOFFSETFROM:-0300
 768.128 +TZOFFSETTO:-0300
 768.129 +TZNAME:APT
 768.130 +DTSTART:19450814T200000
 768.131 +RDATE:19450814T200000
 768.132 +END:DAYLIGHT
 768.133 +BEGIN:STANDARD
 768.134 +TZOFFSETFROM:-0400
 768.135 +TZOFFSETTO:-0400
 768.136 +TZNAME:AST
 768.137 +DTSTART:19530101T000000
 768.138 +RDATE:19530101T000000
 768.139 +RDATE:19540101T000000
 768.140 +RDATE:19720101T000000
 768.141 +RDATE:19740101T000000
 768.142 +END:STANDARD
 768.143 +END:VTIMEZONE
 768.144 +END:VCALENDAR
   769.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   769.2 +++ b/src/zoneinfo/America/Godthab.ics	Tue Feb 10 18:12:00 2015 +0100
   769.3 @@ -0,0 +1,59 @@
   769.4 +BEGIN:VCALENDAR
   769.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   769.6 +VERSION:2.0
   769.7 +BEGIN:VTIMEZONE
   769.8 +TZID:America/Godthab
   769.9 +TZURL:http://tzurl.org/zoneinfo/America/Godthab
  769.10 +X-LIC-LOCATION:America/Godthab
  769.11 +BEGIN:DAYLIGHT
  769.12 +TZOFFSETFROM:-0300
  769.13 +TZOFFSETTO:-0200
  769.14 +TZNAME:WGST
  769.15 +DTSTART:19810328T220000
  769.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYMONTHDAY=24,25,26,27,28,29,30;BYDAY=SA
  769.17 +END:DAYLIGHT
  769.18 +BEGIN:STANDARD
  769.19 +TZOFFSETFROM:-0200
  769.20 +TZOFFSETTO:-0300
  769.21 +TZNAME:WGT
  769.22 +DTSTART:19961026T230000
  769.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYMONTHDAY=24,25,26,27,28,29,30;BYDAY=SA
  769.24 +END:STANDARD
  769.25 +BEGIN:STANDARD
  769.26 +TZOFFSETFROM:-032656
  769.27 +TZOFFSETTO:-0300
  769.28 +TZNAME:WGT
  769.29 +DTSTART:19160728T000000
  769.30 +RDATE:19160728T000000
  769.31 +END:STANDARD
  769.32 +BEGIN:DAYLIGHT
  769.33 +TZOFFSETFROM:-0300
  769.34 +TZOFFSETTO:-0200
  769.35 +TZNAME:WGST
  769.36 +DTSTART:19800406T020000
  769.37 +RDATE:19800406T020000
  769.38 +END:DAYLIGHT
  769.39 +BEGIN:STANDARD
  769.40 +TZOFFSETFROM:-0200
  769.41 +TZOFFSETTO:-0300
  769.42 +TZNAME:WGT
  769.43 +DTSTART:19800927T230000
  769.44 +RDATE:19800927T230000
  769.45 +RDATE:19810926T230000
  769.46 +RDATE:19820925T230000
  769.47 +RDATE:19830924T230000
  769.48 +RDATE:19840929T230000
  769.49 +RDATE:19850928T230000
  769.50 +RDATE:19860927T230000
  769.51 +RDATE:19870926T230000
  769.52 +RDATE:19880924T230000
  769.53 +RDATE:19890923T230000
  769.54 +RDATE:19900929T230000
  769.55 +RDATE:19910928T230000
  769.56 +RDATE:19920926T230000
  769.57 +RDATE:19930925T230000
  769.58 +RDATE:19940924T230000
  769.59 +RDATE:19950923T230000
  769.60 +END:STANDARD
  769.61 +END:VTIMEZONE
  769.62 +END:VCALENDAR
   770.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   770.2 +++ b/src/zoneinfo/America/Goose_Bay.ics	Tue Feb 10 18:12:00 2015 +0100
   770.3 @@ -0,0 +1,275 @@
   770.4 +BEGIN:VCALENDAR
   770.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   770.6 +VERSION:2.0
   770.7 +BEGIN:VTIMEZONE
   770.8 +TZID:America/Goose_Bay
   770.9 +TZURL:http://tzurl.org/zoneinfo/America/Goose_Bay
  770.10 +X-LIC-LOCATION:America/Goose_Bay
  770.11 +BEGIN:STANDARD
  770.12 +TZOFFSETFROM:-0300
  770.13 +TZOFFSETTO:-0400
  770.14 +TZNAME:AST
  770.15 +DTSTART:20111106T020000
  770.16 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  770.17 +END:STANDARD
  770.18 +BEGIN:DAYLIGHT
  770.19 +TZOFFSETFROM:-0400
  770.20 +TZOFFSETTO:-0300
  770.21 +TZNAME:ADT
  770.22 +DTSTART:20120311T020000
  770.23 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  770.24 +END:DAYLIGHT
  770.25 +BEGIN:STANDARD
  770.26 +TZOFFSETFROM:-040140
  770.27 +TZOFFSETTO:-033052
  770.28 +TZNAME:NST
  770.29 +DTSTART:18840101T000000
  770.30 +RDATE:18840101T000000
  770.31 +END:STANDARD
  770.32 +BEGIN:STANDARD
  770.33 +TZOFFSETFROM:-033052
  770.34 +TZOFFSETTO:-033052
  770.35 +TZNAME:NST
  770.36 +DTSTART:19180101T000000
  770.37 +RDATE:19180101T000000
  770.38 +RDATE:19190101T000000
  770.39 +END:STANDARD
  770.40 +BEGIN:DAYLIGHT
  770.41 +TZOFFSETFROM:-033052
  770.42 +TZOFFSETTO:-023052
  770.43 +TZNAME:NDT
  770.44 +DTSTART:19180414T020000
  770.45 +RDATE:19180414T020000
  770.46 +END:DAYLIGHT
  770.47 +BEGIN:STANDARD
  770.48 +TZOFFSETFROM:-023052
  770.49 +TZOFFSETTO:-033052
  770.50 +TZNAME:NST
  770.51 +DTSTART:19181031T020000
  770.52 +RDATE:19181031T020000
  770.53 +END:STANDARD
  770.54 +BEGIN:STANDARD
  770.55 +TZOFFSETFROM:-033052
  770.56 +TZOFFSETTO:-0330
  770.57 +TZNAME:NST
  770.58 +DTSTART:19350330T000000
  770.59 +RDATE:19350330T000000
  770.60 +END:STANDARD
  770.61 +BEGIN:STANDARD
  770.62 +TZOFFSETFROM:-0330
  770.63 +TZOFFSETTO:-0330
  770.64 +TZNAME:NST
  770.65 +DTSTART:19360101T000000
  770.66 +RDATE:19360101T000000
  770.67 +RDATE:19460101T000000
  770.68 +END:STANDARD
  770.69 +BEGIN:DAYLIGHT
  770.70 +TZOFFSETFROM:-0330
  770.71 +TZOFFSETTO:-0230
  770.72 +TZNAME:NDT
  770.73 +DTSTART:19360511T000000
  770.74 +RDATE:19360511T000000
  770.75 +RDATE:19370510T000000
  770.76 +RDATE:19380509T000000
  770.77 +RDATE:19390515T000000
  770.78 +RDATE:19400513T000000
  770.79 +RDATE:19410512T000000
  770.80 +RDATE:19460512T020000
  770.81 +RDATE:19470511T020000
  770.82 +RDATE:19480509T020000
  770.83 +RDATE:19490508T020000
  770.84 +RDATE:19500514T020000
  770.85 +RDATE:19510429T020000
  770.86 +RDATE:19520427T020000
  770.87 +RDATE:19530426T020000
  770.88 +RDATE:19540425T020000
  770.89 +RDATE:19550424T020000
  770.90 +RDATE:19560429T020000
  770.91 +RDATE:19570428T020000
  770.92 +RDATE:19580427T020000
  770.93 +RDATE:19590426T020000
  770.94 +RDATE:19600424T020000
  770.95 +RDATE:19610430T020000
  770.96 +RDATE:19620429T020000
  770.97 +RDATE:19630428T020000
  770.98 +RDATE:19640426T020000
  770.99 +RDATE:19650425T020000
 770.100 +END:DAYLIGHT
 770.101 +BEGIN:STANDARD
 770.102 +TZOFFSETFROM:-0230
 770.103 +TZOFFSETTO:-0330
 770.104 +TZNAME:NST
 770.105 +DTSTART:19361005T000000
 770.106 +RDATE:19361005T000000
 770.107 +RDATE:19371004T000000
 770.108 +RDATE:19381003T000000
 770.109 +RDATE:19391002T000000
 770.110 +RDATE:19401007T000000
 770.111 +RDATE:19411006T000000
 770.112 +RDATE:19450930T020000
 770.113 +RDATE:19461006T020000
 770.114 +RDATE:19471005T020000
 770.115 +RDATE:19481003T020000
 770.116 +RDATE:19491002T020000
 770.117 +RDATE:19501008T020000
 770.118 +RDATE:19510930T020000
 770.119 +RDATE:19520928T020000
 770.120 +RDATE:19530927T020000
 770.121 +RDATE:19540926T020000
 770.122 +RDATE:19550925T020000
 770.123 +RDATE:19560930T020000
 770.124 +RDATE:19570929T020000
 770.125 +RDATE:19580928T020000
 770.126 +RDATE:19590927T020000
 770.127 +RDATE:19601030T020000
 770.128 +RDATE:19611029T020000
 770.129 +RDATE:19621028T020000
 770.130 +RDATE:19631027T020000
 770.131 +RDATE:19641025T020000
 770.132 +RDATE:19651031T020000
 770.133 +END:STANDARD
 770.134 +BEGIN:DAYLIGHT
 770.135 +TZOFFSETFROM:-0330
 770.136 +TZOFFSETTO:-0230
 770.137 +TZNAME:NWT
 770.138 +DTSTART:19420511T000000
 770.139 +RDATE:19420511T000000
 770.140 +END:DAYLIGHT
 770.141 +BEGIN:DAYLIGHT
 770.142 +TZOFFSETFROM:-0230
 770.143 +TZOFFSETTO:-0230
 770.144 +TZNAME:NPT
 770.145 +DTSTART:19450814T203000
 770.146 +RDATE:19450814T203000
 770.147 +END:DAYLIGHT
 770.148 +BEGIN:STANDARD
 770.149 +TZOFFSETFROM:-0330
 770.150 +TZOFFSETTO:-0400
 770.151 +TZNAME:AST
 770.152 +DTSTART:19660315T020000
 770.153 +RDATE:19660315T020000
 770.154 +END:STANDARD
 770.155 +BEGIN:DAYLIGHT
 770.156 +TZOFFSETFROM:-0400
 770.157 +TZOFFSETTO:-0300
 770.158 +TZNAME:ADT
 770.159 +DTSTART:19660424T020000
 770.160 +RDATE:19660424T020000
 770.161 +RDATE:19670430T020000
 770.162 +RDATE:19680428T020000
 770.163 +RDATE:19690427T020000
 770.164 +RDATE:19700426T020000
 770.165 +RDATE:19710425T020000
 770.166 +RDATE:19720430T020000
 770.167 +RDATE:19730429T020000
 770.168 +RDATE:19740428T020000
 770.169 +RDATE:19750427T020000
 770.170 +RDATE:19760425T020000
 770.171 +RDATE:19770424T020000
 770.172 +RDATE:19780430T020000
 770.173 +RDATE:19790429T020000
 770.174 +RDATE:19800427T020000
 770.175 +RDATE:19810426T020000
 770.176 +RDATE:19820425T020000
 770.177 +RDATE:19830424T020000
 770.178 +RDATE:19840429T020000
 770.179 +RDATE:19850428T020000
 770.180 +RDATE:19860427T020000
 770.181 +RDATE:19870405T000100
 770.182 +RDATE:19890402T000100
 770.183 +RDATE:19900401T000100
 770.184 +RDATE:19910407T000100
 770.185 +RDATE:19920405T000100
 770.186 +RDATE:19930404T000100
 770.187 +RDATE:19940403T000100
 770.188 +RDATE:19950402T000100
 770.189 +RDATE:19960407T000100
 770.190 +RDATE:19970406T000100
 770.191 +RDATE:19980405T000100
 770.192 +RDATE:19990404T000100
 770.193 +RDATE:20000402T000100
 770.194 +RDATE:20010401T000100
 770.195 +RDATE:20020407T000100
 770.196 +RDATE:20030406T000100
 770.197 +RDATE:20040404T000100
 770.198 +RDATE:20050403T000100
 770.199 +RDATE:20060402T000100
 770.200 +RDATE:20070311T000100
 770.201 +RDATE:20080309T000100
 770.202 +RDATE:20090308T000100
 770.203 +RDATE:20100314T000100
 770.204 +RDATE:20110313T000100
 770.205 +END:DAYLIGHT
 770.206 +BEGIN:STANDARD
 770.207 +TZOFFSETFROM:-0300
 770.208 +TZOFFSETTO:-0400
 770.209 +TZNAME:AST
 770.210 +DTSTART:19661030T020000
 770.211 +RDATE:19661030T020000
 770.212 +RDATE:19671029T020000
 770.213 +RDATE:19681027T020000
 770.214 +RDATE:19691026T020000
 770.215 +RDATE:19701025T020000
 770.216 +RDATE:19711031T020000
 770.217 +RDATE:19721029T020000
 770.218 +RDATE:19731028T020000
 770.219 +RDATE:19741027T020000
 770.220 +RDATE:19751026T020000
 770.221 +RDATE:19761031T020000
 770.222 +RDATE:19771030T020000
 770.223 +RDATE:19781029T020000
 770.224 +RDATE:19791028T020000
 770.225 +RDATE:19801026T020000
 770.226 +RDATE:19811025T020000
 770.227 +RDATE:19821031T020000
 770.228 +RDATE:19831030T020000
 770.229 +RDATE:19841028T020000
 770.230 +RDATE:19851027T020000
 770.231 +RDATE:19861026T020000
 770.232 +RDATE:19871025T000100
 770.233 +RDATE:19891029T000100
 770.234 +RDATE:19901028T000100
 770.235 +RDATE:19911027T000100
 770.236 +RDATE:19921025T000100
 770.237 +RDATE:19931031T000100
 770.238 +RDATE:19941030T000100
 770.239 +RDATE:19951029T000100
 770.240 +RDATE:19961027T000100
 770.241 +RDATE:19971026T000100
 770.242 +RDATE:19981025T000100
 770.243 +RDATE:19991031T000100
 770.244 +RDATE:20001029T000100
 770.245 +RDATE:20011028T000100
 770.246 +RDATE:20021027T000100
 770.247 +RDATE:20031026T000100
 770.248 +RDATE:20041031T000100
 770.249 +RDATE:20051030T000100
 770.250 +RDATE:20061029T000100
 770.251 +RDATE:20071104T000100
 770.252 +RDATE:20081102T000100
 770.253 +RDATE:20091101T000100
 770.254 +RDATE:20101107T000100
 770.255 +END:STANDARD
 770.256 +BEGIN:DAYLIGHT
 770.257 +TZOFFSETFROM:-0400
 770.258 +TZOFFSETTO:-0200
 770.259 +TZNAME:ADDT
 770.260 +DTSTART:19880403T000100
 770.261 +RDATE:19880403T000100
 770.262 +END:DAYLIGHT
 770.263 +BEGIN:STANDARD
 770.264 +TZOFFSETFROM:-0200
 770.265 +TZOFFSETTO:-0400
 770.266 +TZNAME:AST
 770.267 +DTSTART:19881030T000100
 770.268 +RDATE:19881030T000100
 770.269 +END:STANDARD
 770.270 +BEGIN:DAYLIGHT
 770.271 +TZOFFSETFROM:-0300
 770.272 +TZOFFSETTO:-0300
 770.273 +TZNAME:ADT
 770.274 +DTSTART:20111101T000000
 770.275 +RDATE:20111101T000000
 770.276 +END:DAYLIGHT
 770.277 +END:VTIMEZONE
 770.278 +END:VCALENDAR
   771.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   771.2 +++ b/src/zoneinfo/America/Grand_Turk.ics	Tue Feb 10 18:12:00 2015 +0100
   771.3 @@ -0,0 +1,105 @@
   771.4 +BEGIN:VCALENDAR
   771.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   771.6 +VERSION:2.0
   771.7 +BEGIN:VTIMEZONE
   771.8 +TZID:America/Grand_Turk
   771.9 +TZURL:http://tzurl.org/zoneinfo/America/Grand_Turk
  771.10 +X-LIC-LOCATION:America/Grand_Turk
  771.11 +BEGIN:DAYLIGHT
  771.12 +TZOFFSETFROM:-0500
  771.13 +TZOFFSETTO:-0400
  771.14 +TZNAME:EDT
  771.15 +DTSTART:20070311T020000
  771.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  771.17 +END:DAYLIGHT
  771.18 +BEGIN:STANDARD
  771.19 +TZOFFSETFROM:-0400
  771.20 +TZOFFSETTO:-0500
  771.21 +TZNAME:EST
  771.22 +DTSTART:20071104T020000
  771.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  771.24 +END:STANDARD
  771.25 +BEGIN:STANDARD
  771.26 +TZOFFSETFROM:-044432
  771.27 +TZOFFSETTO:-050712
  771.28 +TZNAME:KMT
  771.29 +DTSTART:18900101T000000
  771.30 +RDATE:18900101T000000
  771.31 +END:STANDARD
  771.32 +BEGIN:STANDARD
  771.33 +TZOFFSETFROM:-050712
  771.34 +TZOFFSETTO:-0500
  771.35 +TZNAME:EST
  771.36 +DTSTART:19120201T000000
  771.37 +RDATE:19120201T000000
  771.38 +END:STANDARD
  771.39 +BEGIN:DAYLIGHT
  771.40 +TZOFFSETFROM:-0500
  771.41 +TZOFFSETTO:-0400
  771.42 +TZNAME:EDT
  771.43 +DTSTART:19790429T020000
  771.44 +RDATE:19790429T020000
  771.45 +RDATE:19800427T020000
  771.46 +RDATE:19810426T020000
  771.47 +RDATE:19820425T020000
  771.48 +RDATE:19830424T020000
  771.49 +RDATE:19840429T020000
  771.50 +RDATE:19850428T020000
  771.51 +RDATE:19860427T020000
  771.52 +RDATE:19870405T020000
  771.53 +RDATE:19880403T020000
  771.54 +RDATE:19890402T020000
  771.55 +RDATE:19900401T020000
  771.56 +RDATE:19910407T020000
  771.57 +RDATE:19920405T020000
  771.58 +RDATE:19930404T020000
  771.59 +RDATE:19940403T020000
  771.60 +RDATE:19950402T020000
  771.61 +RDATE:19960407T020000
  771.62 +RDATE:19970406T020000
  771.63 +RDATE:19980405T020000
  771.64 +RDATE:19990404T020000
  771.65 +RDATE:20000402T020000
  771.66 +RDATE:20010401T020000
  771.67 +RDATE:20020407T020000
  771.68 +RDATE:20030406T020000
  771.69 +RDATE:20040404T020000
  771.70 +RDATE:20050403T020000
  771.71 +RDATE:20060402T020000
  771.72 +END:DAYLIGHT
  771.73 +BEGIN:STANDARD
  771.74 +TZOFFSETFROM:-0400
  771.75 +TZOFFSETTO:-0500
  771.76 +TZNAME:EST
  771.77 +DTSTART:19791028T020000
  771.78 +RDATE:19791028T020000
  771.79 +RDATE:19801026T020000
  771.80 +RDATE:19811025T020000
  771.81 +RDATE:19821031T020000
  771.82 +RDATE:19831030T020000
  771.83 +RDATE:19841028T020000
  771.84 +RDATE:19851027T020000
  771.85 +RDATE:19861026T020000
  771.86 +RDATE:19871025T020000
  771.87 +RDATE:19881030T020000
  771.88 +RDATE:19891029T020000
  771.89 +RDATE:19901028T020000
  771.90 +RDATE:19911027T020000
  771.91 +RDATE:19921025T020000
  771.92 +RDATE:19931031T020000
  771.93 +RDATE:19941030T020000
  771.94 +RDATE:19951029T020000
  771.95 +RDATE:19961027T020000
  771.96 +RDATE:19971026T020000
  771.97 +RDATE:19981025T020000
  771.98 +RDATE:19991031T020000
  771.99 +RDATE:20001029T020000
 771.100 +RDATE:20011028T020000
 771.101 +RDATE:20021027T020000
 771.102 +RDATE:20031026T020000
 771.103 +RDATE:20041031T020000
 771.104 +RDATE:20051030T020000
 771.105 +RDATE:20061029T020000
 771.106 +END:STANDARD
 771.107 +END:VTIMEZONE
 771.108 +END:VCALENDAR
   772.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   772.2 +++ b/src/zoneinfo/America/Grenada.ics	Tue Feb 10 18:12:00 2015 +0100
   772.3 @@ -0,0 +1,16 @@
   772.4 +BEGIN:VCALENDAR
   772.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   772.6 +VERSION:2.0
   772.7 +BEGIN:VTIMEZONE
   772.8 +TZID:America/Grenada
   772.9 +TZURL:http://tzurl.org/zoneinfo/America/Grenada
  772.10 +X-LIC-LOCATION:America/Grenada
  772.11 +BEGIN:STANDARD
  772.12 +TZOFFSETFROM:-0407
  772.13 +TZOFFSETTO:-0400
  772.14 +TZNAME:AST
  772.15 +DTSTART:19110701T000000
  772.16 +RDATE:19110701T000000
  772.17 +END:STANDARD
  772.18 +END:VTIMEZONE
  772.19 +END:VCALENDAR
   773.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   773.2 +++ b/src/zoneinfo/America/Guadeloupe.ics	Tue Feb 10 18:12:00 2015 +0100
   773.3 @@ -0,0 +1,16 @@
   773.4 +BEGIN:VCALENDAR
   773.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   773.6 +VERSION:2.0
   773.7 +BEGIN:VTIMEZONE
   773.8 +TZID:America/Guadeloupe
   773.9 +TZURL:http://tzurl.org/zoneinfo/America/Guadeloupe
  773.10 +X-LIC-LOCATION:America/Guadeloupe
  773.11 +BEGIN:STANDARD
  773.12 +TZOFFSETFROM:-040608
  773.13 +TZOFFSETTO:-0400
  773.14 +TZNAME:AST
  773.15 +DTSTART:19110608T000000
  773.16 +RDATE:19110608T000000
  773.17 +END:STANDARD
  773.18 +END:VTIMEZONE
  773.19 +END:VCALENDAR
   774.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   774.2 +++ b/src/zoneinfo/America/Guatemala.ics	Tue Feb 10 18:12:00 2015 +0100
   774.3 @@ -0,0 +1,36 @@
   774.4 +BEGIN:VCALENDAR
   774.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   774.6 +VERSION:2.0
   774.7 +BEGIN:VTIMEZONE
   774.8 +TZID:America/Guatemala
   774.9 +TZURL:http://tzurl.org/zoneinfo/America/Guatemala
  774.10 +X-LIC-LOCATION:America/Guatemala
  774.11 +BEGIN:STANDARD
  774.12 +TZOFFSETFROM:-060204
  774.13 +TZOFFSETTO:-0600
  774.14 +TZNAME:CST
  774.15 +DTSTART:19181005T000000
  774.16 +RDATE:19181005T000000
  774.17 +END:STANDARD
  774.18 +BEGIN:DAYLIGHT
  774.19 +TZOFFSETFROM:-0600
  774.20 +TZOFFSETTO:-0500
  774.21 +TZNAME:CDT
  774.22 +DTSTART:19731125T000000
  774.23 +RDATE:19731125T000000
  774.24 +RDATE:19830521T000000
  774.25 +RDATE:19910323T000000
  774.26 +RDATE:20060430T000000
  774.27 +END:DAYLIGHT
  774.28 +BEGIN:STANDARD
  774.29 +TZOFFSETFROM:-0500
  774.30 +TZOFFSETTO:-0600
  774.31 +TZNAME:CST
  774.32 +DTSTART:19740224T000000
  774.33 +RDATE:19740224T000000
  774.34 +RDATE:19830922T000000
  774.35 +RDATE:19910907T000000
  774.36 +RDATE:20061001T000000
  774.37 +END:STANDARD
  774.38 +END:VTIMEZONE
  774.39 +END:VCALENDAR
   775.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   775.2 +++ b/src/zoneinfo/America/Guayaquil.ics	Tue Feb 10 18:12:00 2015 +0100
   775.3 @@ -0,0 +1,23 @@
   775.4 +BEGIN:VCALENDAR
   775.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   775.6 +VERSION:2.0
   775.7 +BEGIN:VTIMEZONE
   775.8 +TZID:America/Guayaquil
   775.9 +TZURL:http://tzurl.org/zoneinfo/America/Guayaquil
  775.10 +X-LIC-LOCATION:America/Guayaquil
  775.11 +BEGIN:STANDARD
  775.12 +TZOFFSETFROM:-051920
  775.13 +TZOFFSETTO:-0514
  775.14 +TZNAME:QMT
  775.15 +DTSTART:18900101T000000
  775.16 +RDATE:18900101T000000
  775.17 +END:STANDARD
  775.18 +BEGIN:STANDARD
  775.19 +TZOFFSETFROM:-0514
  775.20 +TZOFFSETTO:-0500
  775.21 +TZNAME:ECT
  775.22 +DTSTART:19310101T000000
  775.23 +RDATE:19310101T000000
  775.24 +END:STANDARD
  775.25 +END:VTIMEZONE
  775.26 +END:VCALENDAR
   776.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   776.2 +++ b/src/zoneinfo/America/Guyana.ics	Tue Feb 10 18:12:00 2015 +0100
   776.3 @@ -0,0 +1,37 @@
   776.4 +BEGIN:VCALENDAR
   776.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   776.6 +VERSION:2.0
   776.7 +BEGIN:VTIMEZONE
   776.8 +TZID:America/Guyana
   776.9 +TZURL:http://tzurl.org/zoneinfo/America/Guyana
  776.10 +X-LIC-LOCATION:America/Guyana
  776.11 +BEGIN:STANDARD
  776.12 +TZOFFSETFROM:-035240
  776.13 +TZOFFSETTO:-0345
  776.14 +TZNAME:GBGT
  776.15 +DTSTART:19150301T000000
  776.16 +RDATE:19150301T000000
  776.17 +END:STANDARD
  776.18 +BEGIN:STANDARD
  776.19 +TZOFFSETFROM:-0345
  776.20 +TZOFFSETTO:-0345
  776.21 +TZNAME:GYT
  776.22 +DTSTART:19660526T000000
  776.23 +RDATE:19660526T000000
  776.24 +END:STANDARD
  776.25 +BEGIN:STANDARD
  776.26 +TZOFFSETFROM:-0345
  776.27 +TZOFFSETTO:-0300
  776.28 +TZNAME:GYT
  776.29 +DTSTART:19750731T000000
  776.30 +RDATE:19750731T000000
  776.31 +END:STANDARD
  776.32 +BEGIN:STANDARD
  776.33 +TZOFFSETFROM:-0300
  776.34 +TZOFFSETTO:-0400
  776.35 +TZNAME:GYT
  776.36 +DTSTART:19910101T000000
  776.37 +RDATE:19910101T000000
  776.38 +END:STANDARD
  776.39 +END:VTIMEZONE
  776.40 +END:VCALENDAR
   777.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   777.2 +++ b/src/zoneinfo/America/Halifax.ics	Tue Feb 10 18:12:00 2015 +0100
   777.3 @@ -0,0 +1,229 @@
   777.4 +BEGIN:VCALENDAR
   777.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   777.6 +VERSION:2.0
   777.7 +BEGIN:VTIMEZONE
   777.8 +TZID:America/Halifax
   777.9 +TZURL:http://tzurl.org/zoneinfo/America/Halifax
  777.10 +X-LIC-LOCATION:America/Halifax
  777.11 +BEGIN:DAYLIGHT
  777.12 +TZOFFSETFROM:-0400
  777.13 +TZOFFSETTO:-0300
  777.14 +TZNAME:ADT
  777.15 +DTSTART:20070311T020000
  777.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  777.17 +END:DAYLIGHT
  777.18 +BEGIN:STANDARD
  777.19 +TZOFFSETFROM:-0300
  777.20 +TZOFFSETTO:-0400
  777.21 +TZNAME:AST
  777.22 +DTSTART:20071104T020000
  777.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  777.24 +END:STANDARD
  777.25 +BEGIN:STANDARD
  777.26 +TZOFFSETFROM:-041424
  777.27 +TZOFFSETTO:-0400
  777.28 +TZNAME:AST
  777.29 +DTSTART:19020615T000000
  777.30 +RDATE:19020615T000000
  777.31 +END:STANDARD
  777.32 +BEGIN:DAYLIGHT
  777.33 +TZOFFSETFROM:-0400
  777.34 +TZOFFSETTO:-0300
  777.35 +TZNAME:ADT
  777.36 +DTSTART:19160401T000000
  777.37 +RDATE:19160401T000000
  777.38 +RDATE:19180414T020000
  777.39 +RDATE:19200509T000000
  777.40 +RDATE:19210506T000000
  777.41 +RDATE:19220430T000000
  777.42 +RDATE:19230506T000000
  777.43 +RDATE:19240504T000000
  777.44 +RDATE:19250503T000000
  777.45 +RDATE:19260516T000000
  777.46 +RDATE:19270501T000000
  777.47 +RDATE:19280513T000000
  777.48 +RDATE:19290512T000000
  777.49 +RDATE:19300511T000000
  777.50 +RDATE:19310510T000000
  777.51 +RDATE:19320501T000000
  777.52 +RDATE:19330430T000000
  777.53 +RDATE:19340520T000000
  777.54 +RDATE:19350602T000000
  777.55 +RDATE:19360601T000000
  777.56 +RDATE:19370502T000000
  777.57 +RDATE:19380501T000000
  777.58 +RDATE:19390528T000000
  777.59 +RDATE:19400505T000000
  777.60 +RDATE:19410504T000000
  777.61 +RDATE:19460428T020000
  777.62 +RDATE:19470427T020000
  777.63 +RDATE:19480425T020000
  777.64 +RDATE:19490424T020000
  777.65 +RDATE:19510429T020000
  777.66 +RDATE:19520427T020000
  777.67 +RDATE:19530426T020000
  777.68 +RDATE:19540425T020000
  777.69 +RDATE:19560429T020000
  777.70 +RDATE:19570428T020000
  777.71 +RDATE:19580427T020000
  777.72 +RDATE:19590426T020000
  777.73 +RDATE:19620429T020000
  777.74 +RDATE:19630428T020000
  777.75 +RDATE:19640426T020000
  777.76 +RDATE:19650425T020000
  777.77 +RDATE:19660424T020000
  777.78 +RDATE:19670430T020000
  777.79 +RDATE:19680428T020000
  777.80 +RDATE:19690427T020000
  777.81 +RDATE:19700426T020000
  777.82 +RDATE:19710425T020000
  777.83 +RDATE:19720430T020000
  777.84 +RDATE:19730429T020000
  777.85 +RDATE:19740428T020000
  777.86 +RDATE:19750427T020000
  777.87 +RDATE:19760425T020000
  777.88 +RDATE:19770424T020000
  777.89 +RDATE:19780430T020000
  777.90 +RDATE:19790429T020000
  777.91 +RDATE:19800427T020000
  777.92 +RDATE:19810426T020000
  777.93 +RDATE:19820425T020000
  777.94 +RDATE:19830424T020000
  777.95 +RDATE:19840429T020000
  777.96 +RDATE:19850428T020000
  777.97 +RDATE:19860427T020000
  777.98 +RDATE:19870405T020000
  777.99 +RDATE:19880403T020000
 777.100 +RDATE:19890402T020000
 777.101 +RDATE:19900401T020000
 777.102 +RDATE:19910407T020000
 777.103 +RDATE:19920405T020000
 777.104 +RDATE:19930404T020000
 777.105 +RDATE:19940403T020000
 777.106 +RDATE:19950402T020000
 777.107 +RDATE:19960407T020000
 777.108 +RDATE:19970406T020000
 777.109 +RDATE:19980405T020000
 777.110 +RDATE:19990404T020000
 777.111 +RDATE:20000402T020000
 777.112 +RDATE:20010401T020000
 777.113 +RDATE:20020407T020000
 777.114 +RDATE:20030406T020000
 777.115 +RDATE:20040404T020000
 777.116 +RDATE:20050403T020000
 777.117 +RDATE:20060402T020000
 777.118 +END:DAYLIGHT
 777.119 +BEGIN:STANDARD
 777.120 +TZOFFSETFROM:-0300
 777.121 +TZOFFSETTO:-0400
 777.122 +TZNAME:AST
 777.123 +DTSTART:19161001T000000
 777.124 +RDATE:19161001T000000
 777.125 +RDATE:19181031T020000
 777.126 +RDATE:19200829T000000
 777.127 +RDATE:19210905T000000
 777.128 +RDATE:19220905T000000
 777.129 +RDATE:19230904T000000
 777.130 +RDATE:19240915T000000
 777.131 +RDATE:19250928T000000
 777.132 +RDATE:19260913T000000
 777.133 +RDATE:19270926T000000
 777.134 +RDATE:19280909T000000
 777.135 +RDATE:19290903T000000
 777.136 +RDATE:19300915T000000
 777.137 +RDATE:19310928T000000
 777.138 +RDATE:19320926T000000
 777.139 +RDATE:19331002T000000
 777.140 +RDATE:19340916T000000
 777.141 +RDATE:19350930T000000
 777.142 +RDATE:19360914T000000
 777.143 +RDATE:19370927T000000
 777.144 +RDATE:19380926T000000
 777.145 +RDATE:19390925T000000
 777.146 +RDATE:19400930T000000
 777.147 +RDATE:19410929T000000
 777.148 +RDATE:19450930T020000
 777.149 +RDATE:19460929T020000
 777.150 +RDATE:19470928T020000
 777.151 +RDATE:19480926T020000
 777.152 +RDATE:19490925T020000
 777.153 +RDATE:19510930T020000
 777.154 +RDATE:19520928T020000
 777.155 +RDATE:19530927T020000
 777.156 +RDATE:19540926T020000
 777.157 +RDATE:19560930T020000
 777.158 +RDATE:19570929T020000
 777.159 +RDATE:19580928T020000
 777.160 +RDATE:19590927T020000
 777.161 +RDATE:19621028T020000
 777.162 +RDATE:19631027T020000
 777.163 +RDATE:19641025T020000
 777.164 +RDATE:19651031T020000
 777.165 +RDATE:19661030T020000
 777.166 +RDATE:19671029T020000
 777.167 +RDATE:19681027T020000
 777.168 +RDATE:19691026T020000
 777.169 +RDATE:19701025T020000
 777.170 +RDATE:19711031T020000
 777.171 +RDATE:19721029T020000
 777.172 +RDATE:19731028T020000
 777.173 +RDATE:19741027T020000
 777.174 +RDATE:19751026T020000
 777.175 +RDATE:19761031T020000
 777.176 +RDATE:19771030T020000
 777.177 +RDATE:19781029T020000
 777.178 +RDATE:19791028T020000
 777.179 +RDATE:19801026T020000
 777.180 +RDATE:19811025T020000
 777.181 +RDATE:19821031T020000
 777.182 +RDATE:19831030T020000
 777.183 +RDATE:19841028T020000
 777.184 +RDATE:19851027T020000
 777.185 +RDATE:19861026T020000
 777.186 +RDATE:19871025T020000
 777.187 +RDATE:19881030T020000
 777.188 +RDATE:19891029T020000
 777.189 +RDATE:19901028T020000
 777.190 +RDATE:19911027T020000
 777.191 +RDATE:19921025T020000
 777.192 +RDATE:19931031T020000
 777.193 +RDATE:19941030T020000
 777.194 +RDATE:19951029T020000
 777.195 +RDATE:19961027T020000
 777.196 +RDATE:19971026T020000
 777.197 +RDATE:19981025T020000
 777.198 +RDATE:19991031T020000
 777.199 +RDATE:20001029T020000
 777.200 +RDATE:20011028T020000
 777.201 +RDATE:20021027T020000
 777.202 +RDATE:20031026T020000
 777.203 +RDATE:20041031T020000
 777.204 +RDATE:20051030T020000
 777.205 +RDATE:20061029T020000
 777.206 +END:STANDARD
 777.207 +BEGIN:STANDARD
 777.208 +TZOFFSETFROM:-0400
 777.209 +TZOFFSETTO:-0400
 777.210 +TZNAME:AST
 777.211 +DTSTART:19180101T000000
 777.212 +RDATE:19180101T000000
 777.213 +RDATE:19190101T000000
 777.214 +RDATE:19460101T000000
 777.215 +RDATE:19740101T000000
 777.216 +END:STANDARD
 777.217 +BEGIN:DAYLIGHT
 777.218 +TZOFFSETFROM:-0400
 777.219 +TZOFFSETTO:-0300
 777.220 +TZNAME:AWT
 777.221 +DTSTART:19420209T020000
 777.222 +RDATE:19420209T020000
 777.223 +END:DAYLIGHT
 777.224 +BEGIN:DAYLIGHT
 777.225 +TZOFFSETFROM:-0300
 777.226 +TZOFFSETTO:-0300
 777.227 +TZNAME:APT
 777.228 +DTSTART:19450814T200000
 777.229 +RDATE:19450814T200000
 777.230 +END:DAYLIGHT
 777.231 +END:VTIMEZONE
 777.232 +END:VCALENDAR
   778.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   778.2 +++ b/src/zoneinfo/America/Havana.ics	Tue Feb 10 18:12:00 2015 +0100
   778.3 @@ -0,0 +1,151 @@
   778.4 +BEGIN:VCALENDAR
   778.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   778.6 +VERSION:2.0
   778.7 +BEGIN:VTIMEZONE
   778.8 +TZID:America/Havana
   778.9 +TZURL:http://tzurl.org/zoneinfo/America/Havana
  778.10 +X-LIC-LOCATION:America/Havana
  778.11 +BEGIN:DAYLIGHT
  778.12 +TZOFFSETFROM:-0500
  778.13 +TZOFFSETTO:-0400
  778.14 +TZNAME:CDT
  778.15 +DTSTART:20120311T000000
  778.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  778.17 +END:DAYLIGHT
  778.18 +BEGIN:STANDARD
  778.19 +TZOFFSETFROM:-0400
  778.20 +TZOFFSETTO:-0500
  778.21 +TZNAME:CST
  778.22 +DTSTART:20121028T010000
  778.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  778.24 +END:STANDARD
  778.25 +BEGIN:STANDARD
  778.26 +TZOFFSETFROM:-052928
  778.27 +TZOFFSETTO:-052936
  778.28 +TZNAME:HMT
  778.29 +DTSTART:18900101T000000
  778.30 +RDATE:18900101T000000
  778.31 +END:STANDARD
  778.32 +BEGIN:STANDARD
  778.33 +TZOFFSETFROM:-052936
  778.34 +TZOFFSETTO:-0500
  778.35 +TZNAME:CST
  778.36 +DTSTART:19250719T120000
  778.37 +RDATE:19250719T120000
  778.38 +END:STANDARD
  778.39 +BEGIN:DAYLIGHT
  778.40 +TZOFFSETFROM:-0500
  778.41 +TZOFFSETTO:-0400
  778.42 +TZNAME:CDT
  778.43 +DTSTART:19280610T000000
  778.44 +RDATE:19280610T000000
  778.45 +RDATE:19400602T000000
  778.46 +RDATE:19410601T000000
  778.47 +RDATE:19420607T000000
  778.48 +RDATE:19450603T000000
  778.49 +RDATE:19460602T000000
  778.50 +RDATE:19650601T000000
  778.51 +RDATE:19660529T000000
  778.52 +RDATE:19670408T000000
  778.53 +RDATE:19680414T000000
  778.54 +RDATE:19690427T000000
  778.55 +RDATE:19700426T000000
  778.56 +RDATE:19710425T000000
  778.57 +RDATE:19720430T000000
  778.58 +RDATE:19730429T000000
  778.59 +RDATE:19740428T000000
  778.60 +RDATE:19750427T000000
  778.61 +RDATE:19760425T000000
  778.62 +RDATE:19770424T000000
  778.63 +RDATE:19780507T000000
  778.64 +RDATE:19790318T000000
  778.65 +RDATE:19800316T000000
  778.66 +RDATE:19810510T000000
  778.67 +RDATE:19820509T000000
  778.68 +RDATE:19830508T000000
  778.69 +RDATE:19840506T000000
  778.70 +RDATE:19850505T000000
  778.71 +RDATE:19860316T000000
  778.72 +RDATE:19870315T000000
  778.73 +RDATE:19880320T000000
  778.74 +RDATE:19890319T000000
  778.75 +RDATE:19900401T000000
  778.76 +RDATE:19910407T000000
  778.77 +RDATE:19920405T000000
  778.78 +RDATE:19930404T000000
  778.79 +RDATE:19940403T000000
  778.80 +RDATE:19950402T000000
  778.81 +RDATE:19960407T000000
  778.82 +RDATE:19970406T000000
  778.83 +RDATE:19980329T000000
  778.84 +RDATE:19990328T000000
  778.85 +RDATE:20000402T000000
  778.86 +RDATE:20010401T000000
  778.87 +RDATE:20020407T000000
  778.88 +RDATE:20030406T000000
  778.89 +RDATE:20040404T000000
  778.90 +RDATE:20070311T000000
  778.91 +RDATE:20080316T000000
  778.92 +RDATE:20090308T000000
  778.93 +RDATE:20100314T000000
  778.94 +RDATE:20110320T000000
  778.95 +END:DAYLIGHT
  778.96 +BEGIN:STANDARD
  778.97 +TZOFFSETFROM:-0400
  778.98 +TZOFFSETTO:-0500
  778.99 +TZNAME:CST
 778.100 +DTSTART:19281010T000000
 778.101 +RDATE:19281010T000000
 778.102 +RDATE:19400901T000000
 778.103 +RDATE:19410907T000000
 778.104 +RDATE:19420906T000000
 778.105 +RDATE:19450902T000000
 778.106 +RDATE:19460901T000000
 778.107 +RDATE:19650930T000000
 778.108 +RDATE:19661002T000000
 778.109 +RDATE:19670910T000000
 778.110 +RDATE:19680908T000000
 778.111 +RDATE:19691026T000000
 778.112 +RDATE:19701025T000000
 778.113 +RDATE:19711031T000000
 778.114 +RDATE:19721008T000000
 778.115 +RDATE:19731008T000000
 778.116 +RDATE:19741008T000000
 778.117 +RDATE:19751026T000000
 778.118 +RDATE:19761031T000000
 778.119 +RDATE:19771030T000000
 778.120 +RDATE:19781008T000000
 778.121 +RDATE:19791014T000000
 778.122 +RDATE:19801012T000000
 778.123 +RDATE:19811011T000000
 778.124 +RDATE:19821010T000000
 778.125 +RDATE:19831009T000000
 778.126 +RDATE:19841014T000000
 778.127 +RDATE:19851013T000000
 778.128 +RDATE:19861012T000000
 778.129 +RDATE:19871011T000000
 778.130 +RDATE:19881009T000000
 778.131 +RDATE:19891008T000000
 778.132 +RDATE:19901014T000000
 778.133 +RDATE:19911013T010000
 778.134 +RDATE:19921011T010000
 778.135 +RDATE:19931010T010000
 778.136 +RDATE:19941009T010000
 778.137 +RDATE:19951008T010000
 778.138 +RDATE:19961006T010000
 778.139 +RDATE:19971012T010000
 778.140 +RDATE:19981025T010000
 778.141 +RDATE:19991031T010000
 778.142 +RDATE:20001029T010000
 778.143 +RDATE:20011028T010000
 778.144 +RDATE:20021027T010000
 778.145 +RDATE:20031026T010000
 778.146 +RDATE:20061029T010000
 778.147 +RDATE:20071028T010000
 778.148 +RDATE:20081026T010000
 778.149 +RDATE:20091025T010000
 778.150 +RDATE:20101031T010000
 778.151 +RDATE:20111113T010000
 778.152 +END:STANDARD
 778.153 +END:VTIMEZONE
 778.154 +END:VCALENDAR
   779.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   779.2 +++ b/src/zoneinfo/America/Hermosillo.ics	Tue Feb 10 18:12:00 2015 +0100
   779.3 @@ -0,0 +1,67 @@
   779.4 +BEGIN:VCALENDAR
   779.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   779.6 +VERSION:2.0
   779.7 +BEGIN:VTIMEZONE
   779.8 +TZID:America/Hermosillo
   779.9 +TZURL:http://tzurl.org/zoneinfo/America/Hermosillo
  779.10 +X-LIC-LOCATION:America/Hermosillo
  779.11 +BEGIN:STANDARD
  779.12 +TZOFFSETFROM:-072352
  779.13 +TZOFFSETTO:-0700
  779.14 +TZNAME:MST
  779.15 +DTSTART:19211231T233608
  779.16 +RDATE:19211231T233608
  779.17 +END:STANDARD
  779.18 +BEGIN:STANDARD
  779.19 +TZOFFSETFROM:-0700
  779.20 +TZOFFSETTO:-0600
  779.21 +TZNAME:CST
  779.22 +DTSTART:19270610T230000
  779.23 +RDATE:19270610T230000
  779.24 +RDATE:19310501T230000
  779.25 +RDATE:19320401T000000
  779.26 +END:STANDARD
  779.27 +BEGIN:STANDARD
  779.28 +TZOFFSETFROM:-0600
  779.29 +TZOFFSETTO:-0700
  779.30 +TZNAME:MST
  779.31 +DTSTART:19301115T000000
  779.32 +RDATE:19301115T000000
  779.33 +RDATE:19311001T000000
  779.34 +RDATE:19420424T000000
  779.35 +RDATE:19961027T020000
  779.36 +RDATE:19971026T020000
  779.37 +RDATE:19981025T020000
  779.38 +END:STANDARD
  779.39 +BEGIN:STANDARD
  779.40 +TZOFFSETFROM:-0700
  779.41 +TZOFFSETTO:-0800
  779.42 +TZNAME:PST
  779.43 +DTSTART:19490114T000000
  779.44 +RDATE:19490114T000000
  779.45 +END:STANDARD
  779.46 +BEGIN:STANDARD
  779.47 +TZOFFSETFROM:-0800
  779.48 +TZOFFSETTO:-0700
  779.49 +TZNAME:MST
  779.50 +DTSTART:19700101T000000
  779.51 +RDATE:19700101T000000
  779.52 +END:STANDARD
  779.53 +BEGIN:DAYLIGHT
  779.54 +TZOFFSETFROM:-0700
  779.55 +TZOFFSETTO:-0600
  779.56 +TZNAME:MDT
  779.57 +DTSTART:19960407T020000
  779.58 +RDATE:19960407T020000
  779.59 +RDATE:19970406T020000
  779.60 +RDATE:19980405T020000
  779.61 +END:DAYLIGHT
  779.62 +BEGIN:STANDARD
  779.63 +TZOFFSETFROM:-0700
  779.64 +TZOFFSETTO:-0700
  779.65 +TZNAME:MST
  779.66 +DTSTART:19990101T000000
  779.67 +RDATE:19990101T000000
  779.68 +END:STANDARD
  779.69 +END:VTIMEZONE
  779.70 +END:VCALENDAR
   780.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   780.2 +++ b/src/zoneinfo/America/Indiana/Indianapolis.ics	Tue Feb 10 18:12:00 2015 +0100
   780.3 @@ -0,0 +1,126 @@
   780.4 +BEGIN:VCALENDAR
   780.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   780.6 +VERSION:2.0
   780.7 +BEGIN:VTIMEZONE
   780.8 +TZID:America/Indiana/Indianapolis
   780.9 +TZURL:http://tzurl.org/zoneinfo/America/Indiana/Indianapolis
  780.10 +X-LIC-LOCATION:America/Indiana/Indianapolis
  780.11 +BEGIN:DAYLIGHT
  780.12 +TZOFFSETFROM:-0500
  780.13 +TZOFFSETTO:-0400
  780.14 +TZNAME:EDT
  780.15 +DTSTART:20070311T020000
  780.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  780.17 +END:DAYLIGHT
  780.18 +BEGIN:STANDARD
  780.19 +TZOFFSETFROM:-0400
  780.20 +TZOFFSETTO:-0500
  780.21 +TZNAME:EST
  780.22 +DTSTART:20071104T020000
  780.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  780.24 +END:STANDARD
  780.25 +BEGIN:STANDARD
  780.26 +TZOFFSETFROM:-054438
  780.27 +TZOFFSETTO:-0600
  780.28 +TZNAME:CST
  780.29 +DTSTART:18831118T121522
  780.30 +RDATE:18831118T121522
  780.31 +END:STANDARD
  780.32 +BEGIN:DAYLIGHT
  780.33 +TZOFFSETFROM:-0600
  780.34 +TZOFFSETTO:-0500
  780.35 +TZNAME:CDT
  780.36 +DTSTART:19180331T020000
  780.37 +RDATE:19180331T020000
  780.38 +RDATE:19190330T020000
  780.39 +RDATE:19410622T020000
  780.40 +RDATE:19460428T020000
  780.41 +RDATE:19470427T020000
  780.42 +RDATE:19480425T020000
  780.43 +RDATE:19490424T020000
  780.44 +RDATE:19500430T020000
  780.45 +RDATE:19510429T020000
  780.46 +RDATE:19520427T020000
  780.47 +RDATE:19530426T020000
  780.48 +RDATE:19540425T020000
  780.49 +END:DAYLIGHT
  780.50 +BEGIN:STANDARD
  780.51 +TZOFFSETFROM:-0500
  780.52 +TZOFFSETTO:-0600
  780.53 +TZNAME:CST
  780.54 +DTSTART:19181027T020000
  780.55 +RDATE:19181027T020000
  780.56 +RDATE:19191026T020000
  780.57 +RDATE:19410928T020000
  780.58 +RDATE:19450930T020000
  780.59 +RDATE:19460929T020000
  780.60 +RDATE:19470928T020000
  780.61 +RDATE:19480926T020000
  780.62 +RDATE:19490925T020000
  780.63 +RDATE:19500924T020000
  780.64 +RDATE:19510930T020000
  780.65 +RDATE:19520928T020000
  780.66 +RDATE:19530927T020000
  780.67 +RDATE:19540926T020000
  780.68 +RDATE:19570929T020000
  780.69 +END:STANDARD
  780.70 +BEGIN:STANDARD
  780.71 +TZOFFSETFROM:-0600
  780.72 +TZOFFSETTO:-0600
  780.73 +TZNAME:CST
  780.74 +DTSTART:19200101T000000
  780.75 +RDATE:19200101T000000
  780.76 +RDATE:19420101T000000
  780.77 +RDATE:19460101T000000
  780.78 +END:STANDARD
  780.79 +BEGIN:DAYLIGHT
  780.80 +TZOFFSETFROM:-0600
  780.81 +TZOFFSETTO:-0500
  780.82 +TZNAME:CWT
  780.83 +DTSTART:19420209T020000
  780.84 +RDATE:19420209T020000
  780.85 +END:DAYLIGHT
  780.86 +BEGIN:DAYLIGHT
  780.87 +TZOFFSETFROM:-0500
  780.88 +TZOFFSETTO:-0500
  780.89 +TZNAME:CPT
  780.90 +DTSTART:19450814T180000
  780.91 +RDATE:19450814T180000
  780.92 +END:DAYLIGHT
  780.93 +BEGIN:STANDARD
  780.94 +TZOFFSETFROM:-0600
  780.95 +TZOFFSETTO:-0500
  780.96 +TZNAME:EST
  780.97 +DTSTART:19550424T020000
  780.98 +RDATE:19550424T020000
  780.99 +RDATE:19580427T020000
 780.100 +END:STANDARD
 780.101 +BEGIN:STANDARD
 780.102 +TZOFFSETFROM:-0500
 780.103 +TZOFFSETTO:-0500
 780.104 +TZNAME:EST
 780.105 +DTSTART:19690101T000000
 780.106 +RDATE:19690101T000000
 780.107 +RDATE:19710101T000000
 780.108 +RDATE:20060101T000000
 780.109 +END:STANDARD
 780.110 +BEGIN:DAYLIGHT
 780.111 +TZOFFSETFROM:-0500
 780.112 +TZOFFSETTO:-0400
 780.113 +TZNAME:EDT
 780.114 +DTSTART:19690427T020000
 780.115 +RDATE:19690427T020000
 780.116 +RDATE:19700426T020000
 780.117 +RDATE:20060402T020000
 780.118 +END:DAYLIGHT
 780.119 +BEGIN:STANDARD
 780.120 +TZOFFSETFROM:-0400
 780.121 +TZOFFSETTO:-0500
 780.122 +TZNAME:EST
 780.123 +DTSTART:19691026T020000
 780.124 +RDATE:19691026T020000
 780.125 +RDATE:19701025T020000
 780.126 +RDATE:20061029T020000
 780.127 +END:STANDARD
 780.128 +END:VTIMEZONE
 780.129 +END:VCALENDAR
   781.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   781.2 +++ b/src/zoneinfo/America/Indiana/Knox.ics	Tue Feb 10 18:12:00 2015 +0100
   781.3 @@ -0,0 +1,170 @@
   781.4 +BEGIN:VCALENDAR
   781.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   781.6 +VERSION:2.0
   781.7 +BEGIN:VTIMEZONE
   781.8 +TZID:America/Indiana/Knox
   781.9 +TZURL:http://tzurl.org/zoneinfo/America/Indiana/Knox
  781.10 +X-LIC-LOCATION:America/Indiana/Knox
  781.11 +BEGIN:DAYLIGHT
  781.12 +TZOFFSETFROM:-0600
  781.13 +TZOFFSETTO:-0500
  781.14 +TZNAME:CDT
  781.15 +DTSTART:20070311T020000
  781.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  781.17 +END:DAYLIGHT
  781.18 +BEGIN:STANDARD
  781.19 +TZOFFSETFROM:-0500
  781.20 +TZOFFSETTO:-0600
  781.21 +TZNAME:CST
  781.22 +DTSTART:20071104T020000
  781.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  781.24 +END:STANDARD
  781.25 +BEGIN:STANDARD
  781.26 +TZOFFSETFROM:-054630
  781.27 +TZOFFSETTO:-0600
  781.28 +TZNAME:CST
  781.29 +DTSTART:18831118T121330
  781.30 +RDATE:18831118T121330
  781.31 +END:STANDARD
  781.32 +BEGIN:DAYLIGHT
  781.33 +TZOFFSETFROM:-0600
  781.34 +TZOFFSETTO:-0500
  781.35 +TZNAME:CDT
  781.36 +DTSTART:19180331T020000
  781.37 +RDATE:19180331T020000
  781.38 +RDATE:19190330T020000
  781.39 +RDATE:19470427T020000
  781.40 +RDATE:19480425T020000
  781.41 +RDATE:19490424T020000
  781.42 +RDATE:19500430T020000
  781.43 +RDATE:19510429T020000
  781.44 +RDATE:19520427T020000
  781.45 +RDATE:19530426T020000
  781.46 +RDATE:19540425T020000
  781.47 +RDATE:19550424T020000
  781.48 +RDATE:19560429T020000
  781.49 +RDATE:19570428T020000
  781.50 +RDATE:19580427T020000
  781.51 +RDATE:19590426T020000
  781.52 +RDATE:19600424T020000
  781.53 +RDATE:19610430T020000
  781.54 +RDATE:19670430T020000
  781.55 +RDATE:19680428T020000
  781.56 +RDATE:19690427T020000
  781.57 +RDATE:19700426T020000
  781.58 +RDATE:19710425T020000
  781.59 +RDATE:19720430T020000
  781.60 +RDATE:19730429T020000
  781.61 +RDATE:19740106T020000
  781.62 +RDATE:19750223T020000
  781.63 +RDATE:19760425T020000
  781.64 +RDATE:19770424T020000
  781.65 +RDATE:19780430T020000
  781.66 +RDATE:19790429T020000
  781.67 +RDATE:19800427T020000
  781.68 +RDATE:19810426T020000
  781.69 +RDATE:19820425T020000
  781.70 +RDATE:19830424T020000
  781.71 +RDATE:19840429T020000
  781.72 +RDATE:19850428T020000
  781.73 +RDATE:19860427T020000
  781.74 +RDATE:19870405T020000
  781.75 +RDATE:19880403T020000
  781.76 +RDATE:19890402T020000
  781.77 +RDATE:19900401T020000
  781.78 +RDATE:19910407T020000
  781.79 +END:DAYLIGHT
  781.80 +BEGIN:STANDARD
  781.81 +TZOFFSETFROM:-0500
  781.82 +TZOFFSETTO:-0600
  781.83 +TZNAME:CST
  781.84 +DTSTART:19181027T020000
  781.85 +RDATE:19181027T020000
  781.86 +RDATE:19191026T020000
  781.87 +RDATE:19450930T020000
  781.88 +RDATE:19470928T020000
  781.89 +RDATE:19480926T020000
  781.90 +RDATE:19490925T020000
  781.91 +RDATE:19500924T020000
  781.92 +RDATE:19510930T020000
  781.93 +RDATE:19520928T020000
  781.94 +RDATE:19530927T020000
  781.95 +RDATE:19540926T020000
  781.96 +RDATE:19551030T020000
  781.97 +RDATE:19561028T020000
  781.98 +RDATE:19570929T020000
  781.99 +RDATE:19580928T020000
 781.100 +RDATE:19591025T020000
 781.101 +RDATE:19601030T020000
 781.102 +RDATE:19611029T020000
 781.103 +RDATE:19631027T020000
 781.104 +RDATE:19671029T020000
 781.105 +RDATE:19681027T020000
 781.106 +RDATE:19691026T020000
 781.107 +RDATE:19701025T020000
 781.108 +RDATE:19711031T020000
 781.109 +RDATE:19721029T020000
 781.110 +RDATE:19731028T020000
 781.111 +RDATE:19741027T020000
 781.112 +RDATE:19751026T020000
 781.113 +RDATE:19761031T020000
 781.114 +RDATE:19771030T020000
 781.115 +RDATE:19781029T020000
 781.116 +RDATE:19791028T020000
 781.117 +RDATE:19801026T020000
 781.118 +RDATE:19811025T020000
 781.119 +RDATE:19821031T020000
 781.120 +RDATE:19831030T020000
 781.121 +RDATE:19841028T020000
 781.122 +RDATE:19851027T020000
 781.123 +RDATE:19861026T020000
 781.124 +RDATE:19871025T020000
 781.125 +RDATE:19881030T020000
 781.126 +RDATE:19891029T020000
 781.127 +RDATE:19901028T020000
 781.128 +RDATE:20061029T020000
 781.129 +END:STANDARD
 781.130 +BEGIN:DAYLIGHT
 781.131 +TZOFFSETFROM:-0600
 781.132 +TZOFFSETTO:-0500
 781.133 +TZNAME:CWT
 781.134 +DTSTART:19420209T020000
 781.135 +RDATE:19420209T020000
 781.136 +END:DAYLIGHT
 781.137 +BEGIN:DAYLIGHT
 781.138 +TZOFFSETFROM:-0500
 781.139 +TZOFFSETTO:-0500
 781.140 +TZNAME:CPT
 781.141 +DTSTART:19450814T180000
 781.142 +RDATE:19450814T180000
 781.143 +END:DAYLIGHT
 781.144 +BEGIN:STANDARD
 781.145 +TZOFFSETFROM:-0600
 781.146 +TZOFFSETTO:-0600
 781.147 +TZNAME:CST
 781.148 +DTSTART:19470101T000000
 781.149 +RDATE:19470101T000000
 781.150 +END:STANDARD
 781.151 +BEGIN:STANDARD
 781.152 +TZOFFSETFROM:-0600
 781.153 +TZOFFSETTO:-0500
 781.154 +TZNAME:EST
 781.155 +DTSTART:19620429T020000
 781.156 +RDATE:19620429T020000
 781.157 +END:STANDARD
 781.158 +BEGIN:STANDARD
 781.159 +TZOFFSETFROM:-0500
 781.160 +TZOFFSETTO:-0500
 781.161 +TZNAME:EST
 781.162 +DTSTART:19911027T020000
 781.163 +RDATE:19911027T020000
 781.164 +END:STANDARD
 781.165 +BEGIN:DAYLIGHT
 781.166 +TZOFFSETFROM:-0500
 781.167 +TZOFFSETTO:-0500
 781.168 +TZNAME:CDT
 781.169 +DTSTART:20060402T020000
 781.170 +RDATE:20060402T020000
 781.171 +END:DAYLIGHT
 781.172 +END:VTIMEZONE
 781.173 +END:VCALENDAR
   782.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   782.2 +++ b/src/zoneinfo/America/Indiana/Marengo.ics	Tue Feb 10 18:12:00 2015 +0100
   782.3 @@ -0,0 +1,134 @@
   782.4 +BEGIN:VCALENDAR
   782.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   782.6 +VERSION:2.0
   782.7 +BEGIN:VTIMEZONE
   782.8 +TZID:America/Indiana/Marengo
   782.9 +TZURL:http://tzurl.org/zoneinfo/America/Indiana/Marengo
  782.10 +X-LIC-LOCATION:America/Indiana/Marengo
  782.11 +BEGIN:DAYLIGHT
  782.12 +TZOFFSETFROM:-0500
  782.13 +TZOFFSETTO:-0400
  782.14 +TZNAME:EDT
  782.15 +DTSTART:20070311T020000
  782.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  782.17 +END:DAYLIGHT
  782.18 +BEGIN:STANDARD
  782.19 +TZOFFSETFROM:-0400
  782.20 +TZOFFSETTO:-0500
  782.21 +TZNAME:EST
  782.22 +DTSTART:20071104T020000
  782.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  782.24 +END:STANDARD
  782.25 +BEGIN:STANDARD
  782.26 +TZOFFSETFROM:-054523
  782.27 +TZOFFSETTO:-0600
  782.28 +TZNAME:CST
  782.29 +DTSTART:18831118T121437
  782.30 +RDATE:18831118T121437
  782.31 +END:STANDARD
  782.32 +BEGIN:DAYLIGHT
  782.33 +TZOFFSETFROM:-0600
  782.34 +TZOFFSETTO:-0500
  782.35 +TZNAME:CDT
  782.36 +DTSTART:19180331T020000
  782.37 +RDATE:19180331T020000
  782.38 +RDATE:19190330T020000
  782.39 +RDATE:19510429T020000
  782.40 +RDATE:19540425T020000
  782.41 +RDATE:19550424T020000
  782.42 +RDATE:19560429T020000
  782.43 +RDATE:19570428T020000
  782.44 +RDATE:19580427T020000
  782.45 +RDATE:19590426T020000
  782.46 +RDATE:19600424T020000
  782.47 +END:DAYLIGHT
  782.48 +BEGIN:STANDARD
  782.49 +TZOFFSETFROM:-0500
  782.50 +TZOFFSETTO:-0600
  782.51 +TZNAME:CST
  782.52 +DTSTART:19181027T020000
  782.53 +RDATE:19181027T020000
  782.54 +RDATE:19191026T020000
  782.55 +RDATE:19450930T020000
  782.56 +RDATE:19510930T020000
  782.57 +RDATE:19540926T020000
  782.58 +RDATE:19550925T020000
  782.59 +RDATE:19560930T020000
  782.60 +RDATE:19570929T020000
  782.61 +RDATE:19580928T020000
  782.62 +RDATE:19590927T020000
  782.63 +RDATE:19600925T020000
  782.64 +END:STANDARD
  782.65 +BEGIN:DAYLIGHT
  782.66 +TZOFFSETFROM:-0600
  782.67 +TZOFFSETTO:-0500
  782.68 +TZNAME:CWT
  782.69 +DTSTART:19420209T020000
  782.70 +RDATE:19420209T020000
  782.71 +END:DAYLIGHT
  782.72 +BEGIN:DAYLIGHT
  782.73 +TZOFFSETFROM:-0500
  782.74 +TZOFFSETTO:-0500
  782.75 +TZNAME:CPT
  782.76 +DTSTART:19450814T180000
  782.77 +RDATE:19450814T180000
  782.78 +END:DAYLIGHT
  782.79 +BEGIN:STANDARD
  782.80 +TZOFFSETFROM:-0600
  782.81 +TZOFFSETTO:-0600
  782.82 +TZNAME:CST
  782.83 +DTSTART:19510101T000000
  782.84 +RDATE:19510101T000000
  782.85 +END:STANDARD
  782.86 +BEGIN:STANDARD
  782.87 +TZOFFSETFROM:-0600
  782.88 +TZOFFSETTO:-0500
  782.89 +TZNAME:EST
  782.90 +DTSTART:19610430T020000
  782.91 +RDATE:19610430T020000
  782.92 +END:STANDARD
  782.93 +BEGIN:STANDARD
  782.94 +TZOFFSETFROM:-0500
  782.95 +TZOFFSETTO:-0500
  782.96 +TZNAME:EST
  782.97 +DTSTART:19690101T000000
  782.98 +RDATE:19690101T000000
  782.99 +RDATE:19741027T020000
 782.100 +RDATE:19760101T000000
 782.101 +RDATE:20060101T000000
 782.102 +END:STANDARD
 782.103 +BEGIN:DAYLIGHT
 782.104 +TZOFFSETFROM:-0500
 782.105 +TZOFFSETTO:-0400
 782.106 +TZNAME:EDT
 782.107 +DTSTART:19690427T020000
 782.108 +RDATE:19690427T020000
 782.109 +RDATE:19700426T020000
 782.110 +RDATE:19710425T020000
 782.111 +RDATE:19720430T020000
 782.112 +RDATE:19730429T020000
 782.113 +RDATE:19750223T020000
 782.114 +RDATE:20060402T020000
 782.115 +END:DAYLIGHT
 782.116 +BEGIN:STANDARD
 782.117 +TZOFFSETFROM:-0400
 782.118 +TZOFFSETTO:-0500
 782.119 +TZNAME:EST
 782.120 +DTSTART:19691026T020000
 782.121 +RDATE:19691026T020000
 782.122 +RDATE:19701025T020000
 782.123 +RDATE:19711031T020000
 782.124 +RDATE:19721029T020000
 782.125 +RDATE:19731028T020000
 782.126 +RDATE:19751026T020000
 782.127 +RDATE:20061029T020000
 782.128 +END:STANDARD
 782.129 +BEGIN:DAYLIGHT
 782.130 +TZOFFSETFROM:-0500
 782.131 +TZOFFSETTO:-0500
 782.132 +TZNAME:CDT
 782.133 +DTSTART:19740106T020000
 782.134 +RDATE:19740106T020000
 782.135 +END:DAYLIGHT
 782.136 +END:VTIMEZONE
 782.137 +END:VCALENDAR
   783.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   783.2 +++ b/src/zoneinfo/America/Indiana/Petersburg.ics	Tue Feb 10 18:12:00 2015 +0100
   783.3 @@ -0,0 +1,134 @@
   783.4 +BEGIN:VCALENDAR
   783.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   783.6 +VERSION:2.0
   783.7 +BEGIN:VTIMEZONE
   783.8 +TZID:America/Indiana/Petersburg
   783.9 +TZURL:http://tzurl.org/zoneinfo/America/Indiana/Petersburg
  783.10 +X-LIC-LOCATION:America/Indiana/Petersburg
  783.11 +BEGIN:DAYLIGHT
  783.12 +TZOFFSETFROM:-0500
  783.13 +TZOFFSETTO:-0400
  783.14 +TZNAME:EDT
  783.15 +DTSTART:20080309T020000
  783.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  783.17 +END:DAYLIGHT
  783.18 +BEGIN:STANDARD
  783.19 +TZOFFSETFROM:-0400
  783.20 +TZOFFSETTO:-0500
  783.21 +TZNAME:EST
  783.22 +DTSTART:20081102T020000
  783.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  783.24 +END:STANDARD
  783.25 +BEGIN:STANDARD
  783.26 +TZOFFSETFROM:-054907
  783.27 +TZOFFSETTO:-0600
  783.28 +TZNAME:CST
  783.29 +DTSTART:18831118T121053
  783.30 +RDATE:18831118T121053
  783.31 +END:STANDARD
  783.32 +BEGIN:DAYLIGHT
  783.33 +TZOFFSETFROM:-0600
  783.34 +TZOFFSETTO:-0500
  783.35 +TZNAME:CDT
  783.36 +DTSTART:19180331T020000
  783.37 +RDATE:19180331T020000
  783.38 +RDATE:19190330T020000
  783.39 +RDATE:19550501T000000
  783.40 +RDATE:19560429T020000
  783.41 +RDATE:19570428T020000
  783.42 +RDATE:19580427T020000
  783.43 +RDATE:19590426T020000
  783.44 +RDATE:19600424T020000
  783.45 +RDATE:19610430T020000
  783.46 +RDATE:19620429T020000
  783.47 +RDATE:19630428T020000
  783.48 +RDATE:19640426T020000
  783.49 +RDATE:19670430T020000
  783.50 +RDATE:19680428T020000
  783.51 +RDATE:19690427T020000
  783.52 +RDATE:19700426T020000
  783.53 +RDATE:19710425T020000
  783.54 +RDATE:19720430T020000
  783.55 +RDATE:19730429T020000
  783.56 +RDATE:19740106T020000
  783.57 +RDATE:19750223T020000
  783.58 +RDATE:19760425T020000
  783.59 +RDATE:19770424T020000
  783.60 +RDATE:20070311T020000
  783.61 +END:DAYLIGHT
  783.62 +BEGIN:STANDARD
  783.63 +TZOFFSETFROM:-0500
  783.64 +TZOFFSETTO:-0600
  783.65 +TZNAME:CST
  783.66 +DTSTART:19181027T020000
  783.67 +RDATE:19181027T020000
  783.68 +RDATE:19191026T020000
  783.69 +RDATE:19450930T020000
  783.70 +RDATE:19550925T020000
  783.71 +RDATE:19560930T020000
  783.72 +RDATE:19570929T020000
  783.73 +RDATE:19580928T020000
  783.74 +RDATE:19590927T020000
  783.75 +RDATE:19600925T020000
  783.76 +RDATE:19611029T020000
  783.77 +RDATE:19621028T020000
  783.78 +RDATE:19631027T020000
  783.79 +RDATE:19641025T020000
  783.80 +RDATE:19661030T020000
  783.81 +RDATE:19671029T020000
  783.82 +RDATE:19681027T020000
  783.83 +RDATE:19691026T020000
  783.84 +RDATE:19701025T020000
  783.85 +RDATE:19711031T020000
  783.86 +RDATE:19721029T020000
  783.87 +RDATE:19731028T020000
  783.88 +RDATE:19741027T020000
  783.89 +RDATE:19751026T020000
  783.90 +RDATE:19761031T020000
  783.91 +RDATE:20061029T020000
  783.92 +END:STANDARD
  783.93 +BEGIN:DAYLIGHT
  783.94 +TZOFFSETFROM:-0600
  783.95 +TZOFFSETTO:-0500
  783.96 +TZNAME:CWT
  783.97 +DTSTART:19420209T020000
  783.98 +RDATE:19420209T020000
  783.99 +END:DAYLIGHT
 783.100 +BEGIN:DAYLIGHT
 783.101 +TZOFFSETFROM:-0500
 783.102 +TZOFFSETTO:-0500
 783.103 +TZNAME:CPT
 783.104 +DTSTART:19450814T180000
 783.105 +RDATE:19450814T180000
 783.106 +END:DAYLIGHT
 783.107 +BEGIN:STANDARD
 783.108 +TZOFFSETFROM:-0600
 783.109 +TZOFFSETTO:-0600
 783.110 +TZNAME:CST
 783.111 +DTSTART:19550101T000000
 783.112 +RDATE:19550101T000000
 783.113 +END:STANDARD
 783.114 +BEGIN:STANDARD
 783.115 +TZOFFSETFROM:-0600
 783.116 +TZOFFSETTO:-0500
 783.117 +TZNAME:EST
 783.118 +DTSTART:19650425T020000
 783.119 +RDATE:19650425T020000
 783.120 +END:STANDARD
 783.121 +BEGIN:STANDARD
 783.122 +TZOFFSETFROM:-0500
 783.123 +TZOFFSETTO:-0500
 783.124 +TZNAME:EST
 783.125 +DTSTART:19771030T020000
 783.126 +RDATE:19771030T020000
 783.127 +RDATE:20071104T020000
 783.128 +END:STANDARD
 783.129 +BEGIN:DAYLIGHT
 783.130 +TZOFFSETFROM:-0500
 783.131 +TZOFFSETTO:-0500
 783.132 +TZNAME:CDT
 783.133 +DTSTART:20060402T020000
 783.134 +RDATE:20060402T020000
 783.135 +END:DAYLIGHT
 783.136 +END:VTIMEZONE
 783.137 +END:VCALENDAR
   784.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   784.2 +++ b/src/zoneinfo/America/Indiana/Tell_City.ics	Tue Feb 10 18:12:00 2015 +0100
   784.3 @@ -0,0 +1,131 @@
   784.4 +BEGIN:VCALENDAR
   784.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   784.6 +VERSION:2.0
   784.7 +BEGIN:VTIMEZONE
   784.8 +TZID:America/Indiana/Tell_City
   784.9 +TZURL:http://tzurl.org/zoneinfo/America/Indiana/Tell_City
  784.10 +X-LIC-LOCATION:America/Indiana/Tell_City
  784.11 +BEGIN:DAYLIGHT
  784.12 +TZOFFSETFROM:-0600
  784.13 +TZOFFSETTO:-0500
  784.14 +TZNAME:CDT
  784.15 +DTSTART:20070311T020000
  784.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  784.17 +END:DAYLIGHT
  784.18 +BEGIN:STANDARD
  784.19 +TZOFFSETFROM:-0500
  784.20 +TZOFFSETTO:-0600
  784.21 +TZNAME:CST
  784.22 +DTSTART:20071104T020000
  784.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  784.24 +END:STANDARD
  784.25 +BEGIN:STANDARD
  784.26 +TZOFFSETFROM:-054703
  784.27 +TZOFFSETTO:-0600
  784.28 +TZNAME:CST
  784.29 +DTSTART:18831118T121257
  784.30 +RDATE:18831118T121257
  784.31 +END:STANDARD
  784.32 +BEGIN:DAYLIGHT
  784.33 +TZOFFSETFROM:-0600
  784.34 +TZOFFSETTO:-0500
  784.35 +TZNAME:CDT
  784.36 +DTSTART:19180331T020000
  784.37 +RDATE:19180331T020000
  784.38 +RDATE:19190330T020000
  784.39 +RDATE:19460428T020000
  784.40 +RDATE:19530426T020000
  784.41 +RDATE:19540425T020000
  784.42 +RDATE:19550501T000000
  784.43 +RDATE:19560429T020000
  784.44 +RDATE:19570428T020000
  784.45 +RDATE:19580427T020000
  784.46 +RDATE:19590426T020000
  784.47 +RDATE:19600424T020000
  784.48 +RDATE:19610430T020000
  784.49 +RDATE:19620429T020000
  784.50 +RDATE:19630428T020000
  784.51 +END:DAYLIGHT
  784.52 +BEGIN:STANDARD
  784.53 +TZOFFSETFROM:-0500
  784.54 +TZOFFSETTO:-0600
  784.55 +TZNAME:CST
  784.56 +DTSTART:19181027T020000
  784.57 +RDATE:19181027T020000
  784.58 +RDATE:19191026T020000
  784.59 +RDATE:19450930T020000
  784.60 +RDATE:19460929T020000
  784.61 +RDATE:19530927T020000
  784.62 +RDATE:19540926T020000
  784.63 +RDATE:19550925T020000
  784.64 +RDATE:19560930T020000
  784.65 +RDATE:19570929T020000
  784.66 +RDATE:19580928T020000
  784.67 +RDATE:19590927T020000
  784.68 +RDATE:19601030T020000
  784.69 +RDATE:19610924T020000
  784.70 +RDATE:19621028T020000
  784.71 +RDATE:19631027T020000
  784.72 +RDATE:20061029T020000
  784.73 +END:STANDARD
  784.74 +BEGIN:DAYLIGHT
  784.75 +TZOFFSETFROM:-0600
  784.76 +TZOFFSETTO:-0500
  784.77 +TZNAME:CWT
  784.78 +DTSTART:19420209T020000
  784.79 +RDATE:19420209T020000
  784.80 +END:DAYLIGHT
  784.81 +BEGIN:DAYLIGHT
  784.82 +TZOFFSETFROM:-0500
  784.83 +TZOFFSETTO:-0500
  784.84 +TZNAME:CPT
  784.85 +DTSTART:19450814T180000
  784.86 +RDATE:19450814T180000
  784.87 +END:DAYLIGHT
  784.88 +BEGIN:STANDARD
  784.89 +TZOFFSETFROM:-0600
  784.90 +TZOFFSETTO:-0600
  784.91 +TZNAME:CST
  784.92 +DTSTART:19460101T000000
  784.93 +RDATE:19460101T000000
  784.94 +END:STANDARD
  784.95 +BEGIN:STANDARD
  784.96 +TZOFFSETFROM:-0600
  784.97 +TZOFFSETTO:-0500
  784.98 +TZNAME:EST
  784.99 +DTSTART:19640426T020000
 784.100 +RDATE:19640426T020000
 784.101 +END:STANDARD
 784.102 +BEGIN:STANDARD
 784.103 +TZOFFSETFROM:-0500
 784.104 +TZOFFSETTO:-0500
 784.105 +TZNAME:EST
 784.106 +DTSTART:19690101T000000
 784.107 +RDATE:19690101T000000
 784.108 +RDATE:19710101T000000
 784.109 +END:STANDARD
 784.110 +BEGIN:DAYLIGHT
 784.111 +TZOFFSETFROM:-0500
 784.112 +TZOFFSETTO:-0400
 784.113 +TZNAME:EDT
 784.114 +DTSTART:19690427T020000
 784.115 +RDATE:19690427T020000
 784.116 +RDATE:19700426T020000
 784.117 +END:DAYLIGHT
 784.118 +BEGIN:STANDARD
 784.119 +TZOFFSETFROM:-0400
 784.120 +TZOFFSETTO:-0500
 784.121 +TZNAME:EST
 784.122 +DTSTART:19691026T020000
 784.123 +RDATE:19691026T020000
 784.124 +RDATE:19701025T020000
 784.125 +END:STANDARD
 784.126 +BEGIN:DAYLIGHT
 784.127 +TZOFFSETFROM:-0500
 784.128 +TZOFFSETTO:-0500
 784.129 +TZNAME:CDT
 784.130 +DTSTART:20060402T020000
 784.131 +RDATE:20060402T020000
 784.132 +END:DAYLIGHT
 784.133 +END:VTIMEZONE
 784.134 +END:VCALENDAR
   785.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   785.2 +++ b/src/zoneinfo/America/Indiana/Vevay.ics	Tue Feb 10 18:12:00 2015 +0100
   785.3 @@ -0,0 +1,99 @@
   785.4 +BEGIN:VCALENDAR
   785.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   785.6 +VERSION:2.0
   785.7 +BEGIN:VTIMEZONE
   785.8 +TZID:America/Indiana/Vevay
   785.9 +TZURL:http://tzurl.org/zoneinfo/America/Indiana/Vevay
  785.10 +X-LIC-LOCATION:America/Indiana/Vevay
  785.11 +BEGIN:DAYLIGHT
  785.12 +TZOFFSETFROM:-0500
  785.13 +TZOFFSETTO:-0400
  785.14 +TZNAME:EDT
  785.15 +DTSTART:20070311T020000
  785.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  785.17 +END:DAYLIGHT
  785.18 +BEGIN:STANDARD
  785.19 +TZOFFSETFROM:-0400
  785.20 +TZOFFSETTO:-0500
  785.21 +TZNAME:EST
  785.22 +DTSTART:20071104T020000
  785.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  785.24 +END:STANDARD
  785.25 +BEGIN:STANDARD
  785.26 +TZOFFSETFROM:-054016
  785.27 +TZOFFSETTO:-0600
  785.28 +TZNAME:CST
  785.29 +DTSTART:18831118T121944
  785.30 +RDATE:18831118T121944
  785.31 +END:STANDARD
  785.32 +BEGIN:DAYLIGHT
  785.33 +TZOFFSETFROM:-0600
  785.34 +TZOFFSETTO:-0500
  785.35 +TZNAME:CDT
  785.36 +DTSTART:19180331T020000
  785.37 +RDATE:19180331T020000
  785.38 +RDATE:19190330T020000
  785.39 +END:DAYLIGHT
  785.40 +BEGIN:STANDARD
  785.41 +TZOFFSETFROM:-0500
  785.42 +TZOFFSETTO:-0600
  785.43 +TZNAME:CST
  785.44 +DTSTART:19181027T020000
  785.45 +RDATE:19181027T020000
  785.46 +RDATE:19191026T020000
  785.47 +RDATE:19450930T020000
  785.48 +END:STANDARD
  785.49 +BEGIN:DAYLIGHT
  785.50 +TZOFFSETFROM:-0600
  785.51 +TZOFFSETTO:-0500
  785.52 +TZNAME:CWT
  785.53 +DTSTART:19420209T020000
  785.54 +RDATE:19420209T020000
  785.55 +END:DAYLIGHT
  785.56 +BEGIN:DAYLIGHT
  785.57 +TZOFFSETFROM:-0500
  785.58 +TZOFFSETTO:-0500
  785.59 +TZNAME:CPT
  785.60 +DTSTART:19450814T180000
  785.61 +RDATE:19450814T180000
  785.62 +END:DAYLIGHT
  785.63 +BEGIN:STANDARD
  785.64 +TZOFFSETFROM:-0600
  785.65 +TZOFFSETTO:-0500
  785.66 +TZNAME:EST
  785.67 +DTSTART:19540425T020000
  785.68 +RDATE:19540425T020000
  785.69 +END:STANDARD
  785.70 +BEGIN:STANDARD
  785.71 +TZOFFSETFROM:-0500
  785.72 +TZOFFSETTO:-0500
  785.73 +TZNAME:EST
  785.74 +DTSTART:19690101T000000
  785.75 +RDATE:19690101T000000
  785.76 +RDATE:19730101T000000
  785.77 +RDATE:20060101T000000
  785.78 +END:STANDARD
  785.79 +BEGIN:DAYLIGHT
  785.80 +TZOFFSETFROM:-0500
  785.81 +TZOFFSETTO:-0400
  785.82 +TZNAME:EDT
  785.83 +DTSTART:19690427T020000
  785.84 +RDATE:19690427T020000
  785.85 +RDATE:19700426T020000
  785.86 +RDATE:19710425T020000
  785.87 +RDATE:19720430T020000
  785.88 +RDATE:20060402T020000
  785.89 +END:DAYLIGHT
  785.90 +BEGIN:STANDARD
  785.91 +TZOFFSETFROM:-0400
  785.92 +TZOFFSETTO:-0500
  785.93 +TZNAME:EST
  785.94 +DTSTART:19691026T020000
  785.95 +RDATE:19691026T020000
  785.96 +RDATE:19701025T020000
  785.97 +RDATE:19711031T020000
  785.98 +RDATE:19721029T020000
  785.99 +RDATE:20061029T020000
 785.100 +END:STANDARD
 785.101 +END:VTIMEZONE
 785.102 +END:VCALENDAR
   786.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   786.2 +++ b/src/zoneinfo/America/Indiana/Vincennes.ics	Tue Feb 10 18:12:00 2015 +0100
   786.3 @@ -0,0 +1,133 @@
   786.4 +BEGIN:VCALENDAR
   786.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   786.6 +VERSION:2.0
   786.7 +BEGIN:VTIMEZONE
   786.8 +TZID:America/Indiana/Vincennes
   786.9 +TZURL:http://tzurl.org/zoneinfo/America/Indiana/Vincennes
  786.10 +X-LIC-LOCATION:America/Indiana/Vincennes
  786.11 +BEGIN:DAYLIGHT
  786.12 +TZOFFSETFROM:-0500
  786.13 +TZOFFSETTO:-0400
  786.14 +TZNAME:EDT
  786.15 +DTSTART:20080309T020000
  786.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  786.17 +END:DAYLIGHT
  786.18 +BEGIN:STANDARD
  786.19 +TZOFFSETFROM:-0400
  786.20 +TZOFFSETTO:-0500
  786.21 +TZNAME:EST
  786.22 +DTSTART:20081102T020000
  786.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  786.24 +END:STANDARD
  786.25 +BEGIN:STANDARD
  786.26 +TZOFFSETFROM:-055007
  786.27 +TZOFFSETTO:-0600
  786.28 +TZNAME:CST
  786.29 +DTSTART:18831118T120953
  786.30 +RDATE:18831118T120953
  786.31 +END:STANDARD
  786.32 +BEGIN:DAYLIGHT
  786.33 +TZOFFSETFROM:-0600
  786.34 +TZOFFSETTO:-0500
  786.35 +TZNAME:CDT
  786.36 +DTSTART:19180331T020000
  786.37 +RDATE:19180331T020000
  786.38 +RDATE:19190330T020000
  786.39 +RDATE:19460428T020000
  786.40 +RDATE:19530426T020000
  786.41 +RDATE:19540425T020000
  786.42 +RDATE:19550501T000000
  786.43 +RDATE:19560429T020000
  786.44 +RDATE:19570428T020000
  786.45 +RDATE:19580427T020000
  786.46 +RDATE:19590426T020000
  786.47 +RDATE:19600424T020000
  786.48 +RDATE:19610430T020000
  786.49 +RDATE:19620429T020000
  786.50 +RDATE:19630428T020000
  786.51 +RDATE:20070311T020000
  786.52 +END:DAYLIGHT
  786.53 +BEGIN:STANDARD
  786.54 +TZOFFSETFROM:-0500
  786.55 +TZOFFSETTO:-0600
  786.56 +TZNAME:CST
  786.57 +DTSTART:19181027T020000
  786.58 +RDATE:19181027T020000
  786.59 +RDATE:19191026T020000
  786.60 +RDATE:19450930T020000
  786.61 +RDATE:19460929T020000
  786.62 +RDATE:19530927T020000
  786.63 +RDATE:19540926T020000
  786.64 +RDATE:19550925T020000
  786.65 +RDATE:19560930T020000
  786.66 +RDATE:19570929T020000
  786.67 +RDATE:19580928T020000
  786.68 +RDATE:19590927T020000
  786.69 +RDATE:19601030T020000
  786.70 +RDATE:19610924T020000
  786.71 +RDATE:19621028T020000
  786.72 +RDATE:19631027T020000
  786.73 +RDATE:20061029T020000
  786.74 +END:STANDARD
  786.75 +BEGIN:DAYLIGHT
  786.76 +TZOFFSETFROM:-0600
  786.77 +TZOFFSETTO:-0500
  786.78 +TZNAME:CWT
  786.79 +DTSTART:19420209T020000
  786.80 +RDATE:19420209T020000
  786.81 +END:DAYLIGHT
  786.82 +BEGIN:DAYLIGHT
  786.83 +TZOFFSETFROM:-0500
  786.84 +TZOFFSETTO:-0500
  786.85 +TZNAME:CPT
  786.86 +DTSTART:19450814T180000
  786.87 +RDATE:19450814T180000
  786.88 +END:DAYLIGHT
  786.89 +BEGIN:STANDARD
  786.90 +TZOFFSETFROM:-0600
  786.91 +TZOFFSETTO:-0600
  786.92 +TZNAME:CST
  786.93 +DTSTART:19460101T000000
  786.94 +RDATE:19460101T000000
  786.95 +END:STANDARD
  786.96 +BEGIN:STANDARD
  786.97 +TZOFFSETFROM:-0600
  786.98 +TZOFFSETTO:-0500
  786.99 +TZNAME:EST
 786.100 +DTSTART:19640426T020000
 786.101 +RDATE:19640426T020000
 786.102 +END:STANDARD
 786.103 +BEGIN:STANDARD
 786.104 +TZOFFSETFROM:-0500
 786.105 +TZOFFSETTO:-0500
 786.106 +TZNAME:EST
 786.107 +DTSTART:19690101T000000
 786.108 +RDATE:19690101T000000
 786.109 +RDATE:19710101T000000
 786.110 +RDATE:20071104T020000
 786.111 +END:STANDARD
 786.112 +BEGIN:DAYLIGHT
 786.113 +TZOFFSETFROM:-0500
 786.114 +TZOFFSETTO:-0400
 786.115 +TZNAME:EDT
 786.116 +DTSTART:19690427T020000
 786.117 +RDATE:19690427T020000
 786.118 +RDATE:19700426T020000
 786.119 +END:DAYLIGHT
 786.120 +BEGIN:STANDARD
 786.121 +TZOFFSETFROM:-0400
 786.122 +TZOFFSETTO:-0500
 786.123 +TZNAME:EST
 786.124 +DTSTART:19691026T020000
 786.125 +RDATE:19691026T020000
 786.126 +RDATE:19701025T020000
 786.127 +END:STANDARD
 786.128 +BEGIN:DAYLIGHT
 786.129 +TZOFFSETFROM:-0500
 786.130 +TZOFFSETTO:-0500
 786.131 +TZNAME:CDT
 786.132 +DTSTART:20060402T020000
 786.133 +RDATE:20060402T020000
 786.134 +END:DAYLIGHT
 786.135 +END:VTIMEZONE
 786.136 +END:VCALENDAR
   787.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   787.2 +++ b/src/zoneinfo/America/Indiana/Winamac.ics	Tue Feb 10 18:12:00 2015 +0100
   787.3 @@ -0,0 +1,144 @@
   787.4 +BEGIN:VCALENDAR
   787.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   787.6 +VERSION:2.0
   787.7 +BEGIN:VTIMEZONE
   787.8 +TZID:America/Indiana/Winamac
   787.9 +TZURL:http://tzurl.org/zoneinfo/America/Indiana/Winamac
  787.10 +X-LIC-LOCATION:America/Indiana/Winamac
  787.11 +BEGIN:STANDARD
  787.12 +TZOFFSETFROM:-0400
  787.13 +TZOFFSETTO:-0500
  787.14 +TZNAME:EST
  787.15 +DTSTART:20071104T020000
  787.16 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  787.17 +END:STANDARD
  787.18 +BEGIN:DAYLIGHT
  787.19 +TZOFFSETFROM:-0500
  787.20 +TZOFFSETTO:-0400
  787.21 +TZNAME:EDT
  787.22 +DTSTART:20080309T020000
  787.23 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  787.24 +END:DAYLIGHT
  787.25 +BEGIN:STANDARD
  787.26 +TZOFFSETFROM:-054625
  787.27 +TZOFFSETTO:-0600
  787.28 +TZNAME:CST
  787.29 +DTSTART:18831118T121335
  787.30 +RDATE:18831118T121335
  787.31 +END:STANDARD
  787.32 +BEGIN:DAYLIGHT
  787.33 +TZOFFSETFROM:-0600
  787.34 +TZOFFSETTO:-0500
  787.35 +TZNAME:CDT
  787.36 +DTSTART:19180331T020000
  787.37 +RDATE:19180331T020000
  787.38 +RDATE:19190330T020000
  787.39 +RDATE:19460428T020000
  787.40 +RDATE:19470427T020000
  787.41 +RDATE:19480425T020000
  787.42 +RDATE:19490424T020000
  787.43 +RDATE:19500430T020000
  787.44 +RDATE:19510429T020000
  787.45 +RDATE:19520427T020000
  787.46 +RDATE:19530426T020000
  787.47 +RDATE:19540425T020000
  787.48 +RDATE:19550424T020000
  787.49 +RDATE:19560429T020000
  787.50 +RDATE:19570428T020000
  787.51 +RDATE:19580427T020000
  787.52 +RDATE:19590426T020000
  787.53 +RDATE:19600424T020000
  787.54 +END:DAYLIGHT
  787.55 +BEGIN:STANDARD
  787.56 +TZOFFSETFROM:-0500
  787.57 +TZOFFSETTO:-0600
  787.58 +TZNAME:CST
  787.59 +DTSTART:19181027T020000
  787.60 +RDATE:19181027T020000
  787.61 +RDATE:19191026T020000
  787.62 +RDATE:19450930T020000
  787.63 +RDATE:19460929T020000
  787.64 +RDATE:19470928T020000
  787.65 +RDATE:19480926T020000
  787.66 +RDATE:19490925T020000
  787.67 +RDATE:19500924T020000
  787.68 +RDATE:19510930T020000
  787.69 +RDATE:19520928T020000
  787.70 +RDATE:19530927T020000
  787.71 +RDATE:19540926T020000
  787.72 +RDATE:19551030T020000
  787.73 +RDATE:19561028T020000
  787.74 +RDATE:19570929T020000
  787.75 +RDATE:19580928T020000
  787.76 +RDATE:19590927T020000
  787.77 +RDATE:19600925T020000
  787.78 +RDATE:20061029T020000
  787.79 +END:STANDARD
  787.80 +BEGIN:DAYLIGHT
  787.81 +TZOFFSETFROM:-0600
  787.82 +TZOFFSETTO:-0500
  787.83 +TZNAME:CWT
  787.84 +DTSTART:19420209T020000
  787.85 +RDATE:19420209T020000
  787.86 +END:DAYLIGHT
  787.87 +BEGIN:DAYLIGHT
  787.88 +TZOFFSETFROM:-0500
  787.89 +TZOFFSETTO:-0500
  787.90 +TZNAME:CPT
  787.91 +DTSTART:19450814T180000
  787.92 +RDATE:19450814T180000
  787.93 +END:DAYLIGHT
  787.94 +BEGIN:STANDARD
  787.95 +TZOFFSETFROM:-0600
  787.96 +TZOFFSETTO:-0600
  787.97 +TZNAME:CST
  787.98 +DTSTART:19460101T000000
  787.99 +RDATE:19460101T000000
 787.100 +END:STANDARD
 787.101 +BEGIN:STANDARD
 787.102 +TZOFFSETFROM:-0600
 787.103 +TZOFFSETTO:-0500
 787.104 +TZNAME:EST
 787.105 +DTSTART:19610430T020000
 787.106 +RDATE:19610430T020000
 787.107 +END:STANDARD
 787.108 +BEGIN:STANDARD
 787.109 +TZOFFSETFROM:-0500
 787.110 +TZOFFSETTO:-0500
 787.111 +TZNAME:EST
 787.112 +DTSTART:19690101T000000
 787.113 +RDATE:19690101T000000
 787.114 +RDATE:19710101T000000
 787.115 +END:STANDARD
 787.116 +BEGIN:DAYLIGHT
 787.117 +TZOFFSETFROM:-0500
 787.118 +TZOFFSETTO:-0400
 787.119 +TZNAME:EDT
 787.120 +DTSTART:19690427T020000
 787.121 +RDATE:19690427T020000
 787.122 +RDATE:19700426T020000
 787.123 +END:DAYLIGHT
 787.124 +BEGIN:STANDARD
 787.125 +TZOFFSETFROM:-0400
 787.126 +TZOFFSETTO:-0500
 787.127 +TZNAME:EST
 787.128 +DTSTART:19691026T020000
 787.129 +RDATE:19691026T020000
 787.130 +RDATE:19701025T020000
 787.131 +END:STANDARD
 787.132 +BEGIN:DAYLIGHT
 787.133 +TZOFFSETFROM:-0500
 787.134 +TZOFFSETTO:-0500
 787.135 +TZNAME:CDT
 787.136 +DTSTART:20060402T020000
 787.137 +RDATE:20060402T020000
 787.138 +END:DAYLIGHT
 787.139 +BEGIN:DAYLIGHT
 787.140 +TZOFFSETFROM:-0600
 787.141 +TZOFFSETTO:-0400
 787.142 +TZNAME:EDT
 787.143 +DTSTART:20070311T020000
 787.144 +RDATE:20070311T020000
 787.145 +END:DAYLIGHT
 787.146 +END:VTIMEZONE
 787.147 +END:VCALENDAR
   788.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   788.2 +++ b/src/zoneinfo/America/Inuvik.ics	Tue Feb 10 18:12:00 2015 +0100
   788.3 @@ -0,0 +1,123 @@
   788.4 +BEGIN:VCALENDAR
   788.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   788.6 +VERSION:2.0
   788.7 +BEGIN:VTIMEZONE
   788.8 +TZID:America/Inuvik
   788.9 +TZURL:http://tzurl.org/zoneinfo/America/Inuvik
  788.10 +X-LIC-LOCATION:America/Inuvik
  788.11 +BEGIN:DAYLIGHT
  788.12 +TZOFFSETFROM:-0700
  788.13 +TZOFFSETTO:-0600
  788.14 +TZNAME:MDT
  788.15 +DTSTART:20070311T020000
  788.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  788.17 +END:DAYLIGHT
  788.18 +BEGIN:STANDARD
  788.19 +TZOFFSETFROM:-0600
  788.20 +TZOFFSETTO:-0700
  788.21 +TZNAME:MST
  788.22 +DTSTART:20071104T020000
  788.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  788.24 +END:STANDARD
  788.25 +BEGIN:STANDARD
  788.26 +TZOFFSETFROM:+0000
  788.27 +TZOFFSETTO:-0800
  788.28 +TZNAME:PST
  788.29 +DTSTART:19530101T000000
  788.30 +RDATE:19530101T000000
  788.31 +END:STANDARD
  788.32 +BEGIN:DAYLIGHT
  788.33 +TZOFFSETFROM:-0800
  788.34 +TZOFFSETTO:-0600
  788.35 +TZNAME:PDDT
  788.36 +DTSTART:19650425T000000
  788.37 +RDATE:19650425T000000
  788.38 +END:DAYLIGHT
  788.39 +BEGIN:STANDARD
  788.40 +TZOFFSETFROM:-0600
  788.41 +TZOFFSETTO:-0800
  788.42 +TZNAME:PST
  788.43 +DTSTART:19651031T020000
  788.44 +RDATE:19651031T020000
  788.45 +END:STANDARD
  788.46 +BEGIN:STANDARD
  788.47 +TZOFFSETFROM:-0800
  788.48 +TZOFFSETTO:-0700
  788.49 +DTSTART:19790429T020000
  788.50 +RDATE:19790429T020000
  788.51 +END:STANDARD
  788.52 +BEGIN:STANDARD
  788.53 +TZOFFSETFROM:-0700
  788.54 +TZOFFSETTO:-0700
  788.55 +TZNAME:MST
  788.56 +DTSTART:19800101T000000
  788.57 +RDATE:19800101T000000
  788.58 +END:STANDARD
  788.59 +BEGIN:DAYLIGHT
  788.60 +TZOFFSETFROM:-0700
  788.61 +TZOFFSETTO:-0600
  788.62 +TZNAME:MDT
  788.63 +DTSTART:19800427T020000
  788.64 +RDATE:19800427T020000
  788.65 +RDATE:19810426T020000
  788.66 +RDATE:19820425T020000
  788.67 +RDATE:19830424T020000
  788.68 +RDATE:19840429T020000
  788.69 +RDATE:19850428T020000
  788.70 +RDATE:19860427T020000
  788.71 +RDATE:19870405T020000
  788.72 +RDATE:19880403T020000
  788.73 +RDATE:19890402T020000
  788.74 +RDATE:19900401T020000
  788.75 +RDATE:19910407T020000
  788.76 +RDATE:19920405T020000
  788.77 +RDATE:19930404T020000
  788.78 +RDATE:19940403T020000
  788.79 +RDATE:19950402T020000
  788.80 +RDATE:19960407T020000
  788.81 +RDATE:19970406T020000
  788.82 +RDATE:19980405T020000
  788.83 +RDATE:19990404T020000
  788.84 +RDATE:20000402T020000
  788.85 +RDATE:20010401T020000
  788.86 +RDATE:20020407T020000
  788.87 +RDATE:20030406T020000
  788.88 +RDATE:20040404T020000
  788.89 +RDATE:20050403T020000
  788.90 +RDATE:20060402T020000
  788.91 +END:DAYLIGHT
  788.92 +BEGIN:STANDARD
  788.93 +TZOFFSETFROM:-0600
  788.94 +TZOFFSETTO:-0700
  788.95 +TZNAME:MST
  788.96 +DTSTART:19801026T020000
  788.97 +RDATE:19801026T020000
  788.98 +RDATE:19811025T020000
  788.99 +RDATE:19821031T020000
 788.100 +RDATE:19831030T020000
 788.101 +RDATE:19841028T020000
 788.102 +RDATE:19851027T020000
 788.103 +RDATE:19861026T020000
 788.104 +RDATE:19871025T020000
 788.105 +RDATE:19881030T020000
 788.106 +RDATE:19891029T020000
 788.107 +RDATE:19901028T020000
 788.108 +RDATE:19911027T020000
 788.109 +RDATE:19921025T020000
 788.110 +RDATE:19931031T020000
 788.111 +RDATE:19941030T020000
 788.112 +RDATE:19951029T020000
 788.113 +RDATE:19961027T020000
 788.114 +RDATE:19971026T020000
 788.115 +RDATE:19981025T020000
 788.116 +RDATE:19991031T020000
 788.117 +RDATE:20001029T020000
 788.118 +RDATE:20011028T020000
 788.119 +RDATE:20021027T020000
 788.120 +RDATE:20031026T020000
 788.121 +RDATE:20041031T020000
 788.122 +RDATE:20051030T020000
 788.123 +RDATE:20061029T020000
 788.124 +END:STANDARD
 788.125 +END:VTIMEZONE
 788.126 +END:VCALENDAR
   789.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   789.2 +++ b/src/zoneinfo/America/Iqaluit.ics	Tue Feb 10 18:12:00 2015 +0100
   789.3 @@ -0,0 +1,136 @@
   789.4 +BEGIN:VCALENDAR
   789.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   789.6 +VERSION:2.0
   789.7 +BEGIN:VTIMEZONE
   789.8 +TZID:America/Iqaluit
   789.9 +TZURL:http://tzurl.org/zoneinfo/America/Iqaluit
  789.10 +X-LIC-LOCATION:America/Iqaluit
  789.11 +BEGIN:DAYLIGHT
  789.12 +TZOFFSETFROM:-0500
  789.13 +TZOFFSETTO:-0400
  789.14 +TZNAME:EDT
  789.15 +DTSTART:20070311T020000
  789.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  789.17 +END:DAYLIGHT
  789.18 +BEGIN:STANDARD
  789.19 +TZOFFSETFROM:-0400
  789.20 +TZOFFSETTO:-0500
  789.21 +TZNAME:EST
  789.22 +DTSTART:20071104T020000
  789.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  789.24 +END:STANDARD
  789.25 +BEGIN:DAYLIGHT
  789.26 +TZOFFSETFROM:+0000
  789.27 +TZOFFSETTO:-0400
  789.28 +TZNAME:EWT
  789.29 +DTSTART:19420801T000000
  789.30 +RDATE:19420801T000000
  789.31 +END:DAYLIGHT
  789.32 +BEGIN:DAYLIGHT
  789.33 +TZOFFSETFROM:-0400
  789.34 +TZOFFSETTO:-0400
  789.35 +TZNAME:EPT
  789.36 +DTSTART:19450814T190000
  789.37 +RDATE:19450814T190000
  789.38 +END:DAYLIGHT
  789.39 +BEGIN:STANDARD
  789.40 +TZOFFSETFROM:-0400
  789.41 +TZOFFSETTO:-0500
  789.42 +TZNAME:EST
  789.43 +DTSTART:19450930T020000
  789.44 +RDATE:19450930T020000
  789.45 +RDATE:19801026T020000
  789.46 +RDATE:19811025T020000
  789.47 +RDATE:19821031T020000
  789.48 +RDATE:19831030T020000
  789.49 +RDATE:19841028T020000
  789.50 +RDATE:19851027T020000
  789.51 +RDATE:19861026T020000
  789.52 +RDATE:19871025T020000
  789.53 +RDATE:19881030T020000
  789.54 +RDATE:19891029T020000
  789.55 +RDATE:19901028T020000
  789.56 +RDATE:19911027T020000
  789.57 +RDATE:19921025T020000
  789.58 +RDATE:19931031T020000
  789.59 +RDATE:19941030T020000
  789.60 +RDATE:19951029T020000
  789.61 +RDATE:19961027T020000
  789.62 +RDATE:19971026T020000
  789.63 +RDATE:19981025T020000
  789.64 +RDATE:20011028T020000
  789.65 +RDATE:20021027T020000
  789.66 +RDATE:20031026T020000
  789.67 +RDATE:20041031T020000
  789.68 +RDATE:20051030T020000
  789.69 +RDATE:20061029T020000
  789.70 +END:STANDARD
  789.71 +BEGIN:DAYLIGHT
  789.72 +TZOFFSETFROM:-0500
  789.73 +TZOFFSETTO:-0300
  789.74 +TZNAME:EDDT
  789.75 +DTSTART:19650425T000000
  789.76 +RDATE:19650425T000000
  789.77 +END:DAYLIGHT
  789.78 +BEGIN:STANDARD
  789.79 +TZOFFSETFROM:-0300
  789.80 +TZOFFSETTO:-0500
  789.81 +TZNAME:EST
  789.82 +DTSTART:19651031T020000
  789.83 +RDATE:19651031T020000
  789.84 +END:STANDARD
  789.85 +BEGIN:DAYLIGHT
  789.86 +TZOFFSETFROM:-0500
  789.87 +TZOFFSETTO:-0400
  789.88 +TZNAME:EDT
  789.89 +DTSTART:19800427T020000
  789.90 +RDATE:19800427T020000
  789.91 +RDATE:19810426T020000
  789.92 +RDATE:19820425T020000
  789.93 +RDATE:19830424T020000
  789.94 +RDATE:19840429T020000
  789.95 +RDATE:19850428T020000
  789.96 +RDATE:19860427T020000
  789.97 +RDATE:19870405T020000
  789.98 +RDATE:19880403T020000
  789.99 +RDATE:19890402T020000
 789.100 +RDATE:19900401T020000
 789.101 +RDATE:19910407T020000
 789.102 +RDATE:19920405T020000
 789.103 +RDATE:19930404T020000
 789.104 +RDATE:19940403T020000
 789.105 +RDATE:19950402T020000
 789.106 +RDATE:19960407T020000
 789.107 +RDATE:19970406T020000
 789.108 +RDATE:19980405T020000
 789.109 +RDATE:19990404T020000
 789.110 +RDATE:20010401T020000
 789.111 +RDATE:20020407T020000
 789.112 +RDATE:20030406T020000
 789.113 +RDATE:20040404T020000
 789.114 +RDATE:20050403T020000
 789.115 +RDATE:20060402T020000
 789.116 +END:DAYLIGHT
 789.117 +BEGIN:STANDARD
 789.118 +TZOFFSETFROM:-0400
 789.119 +TZOFFSETTO:-0600
 789.120 +TZNAME:CST
 789.121 +DTSTART:19991031T020000
 789.122 +RDATE:19991031T020000
 789.123 +END:STANDARD
 789.124 +BEGIN:DAYLIGHT
 789.125 +TZOFFSETFROM:-0600
 789.126 +TZOFFSETTO:-0500
 789.127 +TZNAME:CDT
 789.128 +DTSTART:20000402T020000
 789.129 +RDATE:20000402T020000
 789.130 +END:DAYLIGHT
 789.131 +BEGIN:STANDARD
 789.132 +TZOFFSETFROM:-0500
 789.133 +TZOFFSETTO:-0500
 789.134 +TZNAME:EST
 789.135 +DTSTART:20001029T020000
 789.136 +RDATE:20001029T020000
 789.137 +END:STANDARD
 789.138 +END:VTIMEZONE
 789.139 +END:VCALENDAR
   790.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   790.2 +++ b/src/zoneinfo/America/Jamaica.ics	Tue Feb 10 18:12:00 2015 +0100
   790.3 @@ -0,0 +1,62 @@
   790.4 +BEGIN:VCALENDAR
   790.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   790.6 +VERSION:2.0
   790.7 +BEGIN:VTIMEZONE
   790.8 +TZID:America/Jamaica
   790.9 +TZURL:http://tzurl.org/zoneinfo/America/Jamaica
  790.10 +X-LIC-LOCATION:America/Jamaica
  790.11 +BEGIN:STANDARD
  790.12 +TZOFFSETFROM:-050712
  790.13 +TZOFFSETTO:-050712
  790.14 +TZNAME:KMT
  790.15 +DTSTART:18900101T000000
  790.16 +RDATE:18900101T000000
  790.17 +END:STANDARD
  790.18 +BEGIN:STANDARD
  790.19 +TZOFFSETFROM:-050712
  790.20 +TZOFFSETTO:-0500
  790.21 +TZNAME:EST
  790.22 +DTSTART:19120201T000000
  790.23 +RDATE:19120201T000000
  790.24 +END:STANDARD
  790.25 +BEGIN:DAYLIGHT
  790.26 +TZOFFSETFROM:-0500
  790.27 +TZOFFSETTO:-0400
  790.28 +TZNAME:EDT
  790.29 +DTSTART:19740428T020000
  790.30 +RDATE:19740428T020000
  790.31 +RDATE:19750223T020000
  790.32 +RDATE:19760425T020000
  790.33 +RDATE:19770424T020000
  790.34 +RDATE:19780430T020000
  790.35 +RDATE:19790429T020000
  790.36 +RDATE:19800427T020000
  790.37 +RDATE:19810426T020000
  790.38 +RDATE:19820425T020000
  790.39 +RDATE:19830424T020000
  790.40 +END:DAYLIGHT
  790.41 +BEGIN:STANDARD
  790.42 +TZOFFSETFROM:-0400
  790.43 +TZOFFSETTO:-0500
  790.44 +TZNAME:EST
  790.45 +DTSTART:19741027T020000
  790.46 +RDATE:19741027T020000
  790.47 +RDATE:19751026T020000
  790.48 +RDATE:19761031T020000
  790.49 +RDATE:19771030T020000
  790.50 +RDATE:19781029T020000
  790.51 +RDATE:19791028T020000
  790.52 +RDATE:19801026T020000
  790.53 +RDATE:19811025T020000
  790.54 +RDATE:19821031T020000
  790.55 +RDATE:19831030T020000
  790.56 +END:STANDARD
  790.57 +BEGIN:STANDARD
  790.58 +TZOFFSETFROM:-0500
  790.59 +TZOFFSETTO:-0500
  790.60 +TZNAME:EST
  790.61 +DTSTART:19840101T000000
  790.62 +RDATE:19840101T000000
  790.63 +END:STANDARD
  790.64 +END:VTIMEZONE
  790.65 +END:VCALENDAR
   791.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   791.2 +++ b/src/zoneinfo/America/Juneau.ics	Tue Feb 10 18:12:00 2015 +0100
   791.3 @@ -0,0 +1,180 @@
   791.4 +BEGIN:VCALENDAR
   791.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   791.6 +VERSION:2.0
   791.7 +BEGIN:VTIMEZONE
   791.8 +TZID:America/Juneau
   791.9 +TZURL:http://tzurl.org/zoneinfo/America/Juneau
  791.10 +X-LIC-LOCATION:America/Juneau
  791.11 +BEGIN:DAYLIGHT
  791.12 +TZOFFSETFROM:-0900
  791.13 +TZOFFSETTO:-0800
  791.14 +TZNAME:AKDT
  791.15 +DTSTART:20070311T020000
  791.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  791.17 +END:DAYLIGHT
  791.18 +BEGIN:STANDARD
  791.19 +TZOFFSETFROM:-0800
  791.20 +TZOFFSETTO:-0900
  791.21 +TZNAME:AKST
  791.22 +DTSTART:20071104T020000
  791.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  791.24 +END:STANDARD
  791.25 +BEGIN:STANDARD
  791.26 +TZOFFSETFROM:+150219
  791.27 +TZOFFSETTO:-085741
  791.28 +TZNAME:LMT
  791.29 +DTSTART:18671018T000000
  791.30 +RDATE:18671018T000000
  791.31 +END:STANDARD
  791.32 +BEGIN:STANDARD
  791.33 +TZOFFSETFROM:-085741
  791.34 +TZOFFSETTO:-0800
  791.35 +TZNAME:PST
  791.36 +DTSTART:19000820T120000
  791.37 +RDATE:19000820T120000
  791.38 +END:STANDARD
  791.39 +BEGIN:STANDARD
  791.40 +TZOFFSETFROM:-0800
  791.41 +TZOFFSETTO:-0800
  791.42 +TZNAME:PST
  791.43 +DTSTART:19420101T000000
  791.44 +RDATE:19420101T000000
  791.45 +RDATE:19460101T000000
  791.46 +RDATE:19690101T000000
  791.47 +RDATE:19801026T020000
  791.48 +END:STANDARD
  791.49 +BEGIN:DAYLIGHT
  791.50 +TZOFFSETFROM:-0800
  791.51 +TZOFFSETTO:-0700
  791.52 +TZNAME:PWT
  791.53 +DTSTART:19420209T020000
  791.54 +RDATE:19420209T020000
  791.55 +END:DAYLIGHT
  791.56 +BEGIN:DAYLIGHT
  791.57 +TZOFFSETFROM:-0700
  791.58 +TZOFFSETTO:-0700
  791.59 +TZNAME:PPT
  791.60 +DTSTART:19450814T160000
  791.61 +RDATE:19450814T160000
  791.62 +END:DAYLIGHT
  791.63 +BEGIN:STANDARD
  791.64 +TZOFFSETFROM:-0700
  791.65 +TZOFFSETTO:-0800
  791.66 +TZNAME:PST
  791.67 +DTSTART:19450930T020000
  791.68 +RDATE:19450930T020000
  791.69 +RDATE:19691026T020000
  791.70 +RDATE:19701025T020000
  791.71 +RDATE:19711031T020000
  791.72 +RDATE:19721029T020000
  791.73 +RDATE:19731028T020000
  791.74 +RDATE:19741027T020000
  791.75 +RDATE:19751026T020000
  791.76 +RDATE:19761031T020000
  791.77 +RDATE:19771030T020000
  791.78 +RDATE:19781029T020000
  791.79 +RDATE:19791028T020000
  791.80 +RDATE:19811025T020000
  791.81 +RDATE:19821031T020000
  791.82 +END:STANDARD
  791.83 +BEGIN:DAYLIGHT
  791.84 +TZOFFSETFROM:-0800
  791.85 +TZOFFSETTO:-0700
  791.86 +TZNAME:PDT
  791.87 +DTSTART:19690427T020000
  791.88 +RDATE:19690427T020000
  791.89 +RDATE:19700426T020000
  791.90 +RDATE:19710425T020000
  791.91 +RDATE:19720430T020000
  791.92 +RDATE:19730429T020000
  791.93 +RDATE:19740106T020000
  791.94 +RDATE:19750223T020000
  791.95 +RDATE:19760425T020000
  791.96 +RDATE:19770424T020000
  791.97 +RDATE:19780430T020000
  791.98 +RDATE:19790429T020000
  791.99 +RDATE:19810426T020000
 791.100 +RDATE:19820425T020000
 791.101 +RDATE:19830424T020000
 791.102 +END:DAYLIGHT
 791.103 +BEGIN:DAYLIGHT
 791.104 +TZOFFSETFROM:-0800
 791.105 +TZOFFSETTO:-0800
 791.106 +TZNAME:YDT
 791.107 +DTSTART:19800427T020000
 791.108 +RDATE:19800427T020000
 791.109 +END:DAYLIGHT
 791.110 +BEGIN:STANDARD
 791.111 +TZOFFSETFROM:-0700
 791.112 +TZOFFSETTO:-0900
 791.113 +TZNAME:YST
 791.114 +DTSTART:19831030T020000
 791.115 +RDATE:19831030T020000
 791.116 +END:STANDARD
 791.117 +BEGIN:STANDARD
 791.118 +TZOFFSETFROM:-0900
 791.119 +TZOFFSETTO:-0900
 791.120 +TZNAME:AKST
 791.121 +DTSTART:19831130T000000
 791.122 +RDATE:19831130T000000
 791.123 +END:STANDARD
 791.124 +BEGIN:DAYLIGHT
 791.125 +TZOFFSETFROM:-0900
 791.126 +TZOFFSETTO:-0800
 791.127 +TZNAME:AKDT
 791.128 +DTSTART:19840429T020000
 791.129 +RDATE:19840429T020000
 791.130 +RDATE:19850428T020000
 791.131 +RDATE:19860427T020000
 791.132 +RDATE:19870405T020000
 791.133 +RDATE:19880403T020000
 791.134 +RDATE:19890402T020000
 791.135 +RDATE:19900401T020000
 791.136 +RDATE:19910407T020000
 791.137 +RDATE:19920405T020000
 791.138 +RDATE:19930404T020000
 791.139 +RDATE:19940403T020000
 791.140 +RDATE:19950402T020000
 791.141 +RDATE:19960407T020000
 791.142 +RDATE:19970406T020000
 791.143 +RDATE:19980405T020000
 791.144 +RDATE:19990404T020000
 791.145 +RDATE:20000402T020000
 791.146 +RDATE:20010401T020000
 791.147 +RDATE:20020407T020000
 791.148 +RDATE:20030406T020000
 791.149 +RDATE:20040404T020000
 791.150 +RDATE:20050403T020000
 791.151 +RDATE:20060402T020000
 791.152 +END:DAYLIGHT
 791.153 +BEGIN:STANDARD
 791.154 +TZOFFSETFROM:-0800
 791.155 +TZOFFSETTO:-0900
 791.156 +TZNAME:AKST
 791.157 +DTSTART:19841028T020000
 791.158 +RDATE:19841028T020000
 791.159 +RDATE:19851027T020000
 791.160 +RDATE:19861026T020000
 791.161 +RDATE:19871025T020000
 791.162 +RDATE:19881030T020000
 791.163 +RDATE:19891029T020000
 791.164 +RDATE:19901028T020000
 791.165 +RDATE:19911027T020000
 791.166 +RDATE:19921025T020000
 791.167 +RDATE:19931031T020000
 791.168 +RDATE:19941030T020000
 791.169 +RDATE:19951029T020000
 791.170 +RDATE:19961027T020000
 791.171 +RDATE:19971026T020000
 791.172 +RDATE:19981025T020000
 791.173 +RDATE:19991031T020000
 791.174 +RDATE:20001029T020000
 791.175 +RDATE:20011028T020000
 791.176 +RDATE:20021027T020000
 791.177 +RDATE:20031026T020000
 791.178 +RDATE:20041031T020000
 791.179 +RDATE:20051030T020000
 791.180 +RDATE:20061029T020000
 791.181 +END:STANDARD
 791.182 +END:VTIMEZONE
 791.183 +END:VCALENDAR
   792.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   792.2 +++ b/src/zoneinfo/America/Kentucky/Louisville.ics	Tue Feb 10 18:12:00 2015 +0100
   792.3 @@ -0,0 +1,206 @@
   792.4 +BEGIN:VCALENDAR
   792.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   792.6 +VERSION:2.0
   792.7 +BEGIN:VTIMEZONE
   792.8 +TZID:America/Kentucky/Louisville
   792.9 +TZURL:http://tzurl.org/zoneinfo/America/Kentucky/Louisville
  792.10 +X-LIC-LOCATION:America/Kentucky/Louisville
  792.11 +BEGIN:DAYLIGHT
  792.12 +TZOFFSETFROM:-0500
  792.13 +TZOFFSETTO:-0400
  792.14 +TZNAME:EDT
  792.15 +DTSTART:20070311T020000
  792.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  792.17 +END:DAYLIGHT
  792.18 +BEGIN:STANDARD
  792.19 +TZOFFSETFROM:-0400
  792.20 +TZOFFSETTO:-0500
  792.21 +TZNAME:EST
  792.22 +DTSTART:20071104T020000
  792.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  792.24 +END:STANDARD
  792.25 +BEGIN:STANDARD
  792.26 +TZOFFSETFROM:-054302
  792.27 +TZOFFSETTO:-0600
  792.28 +TZNAME:CST
  792.29 +DTSTART:18831118T121658
  792.30 +RDATE:18831118T121658
  792.31 +END:STANDARD
  792.32 +BEGIN:DAYLIGHT
  792.33 +TZOFFSETFROM:-0600
  792.34 +TZOFFSETTO:-0500
  792.35 +TZNAME:CDT
  792.36 +DTSTART:19180331T020000
  792.37 +RDATE:19180331T020000
  792.38 +RDATE:19190330T020000
  792.39 +RDATE:19210501T020000
  792.40 +RDATE:19410427T020000
  792.41 +RDATE:19460101T000000
  792.42 +RDATE:19470427T020000
  792.43 +RDATE:19510429T020000
  792.44 +RDATE:19520427T020000
  792.45 +RDATE:19530426T020000
  792.46 +RDATE:19540425T020000
  792.47 +RDATE:19550424T020000
  792.48 +RDATE:19560429T020000
  792.49 +RDATE:19570428T020000
  792.50 +RDATE:19580427T020000
  792.51 +RDATE:19590426T020000
  792.52 +RDATE:19600424T020000
  792.53 +RDATE:19610430T020000
  792.54 +END:DAYLIGHT
  792.55 +BEGIN:STANDARD
  792.56 +TZOFFSETFROM:-0500
  792.57 +TZOFFSETTO:-0600
  792.58 +TZNAME:CST
  792.59 +DTSTART:19181027T020000
  792.60 +RDATE:19181027T020000
  792.61 +RDATE:19191026T020000
  792.62 +RDATE:19210901T020000
  792.63 +RDATE:19410928T020000
  792.64 +RDATE:19450930T020000
  792.65 +RDATE:19460602T020000
  792.66 +RDATE:19500924T020000
  792.67 +RDATE:19510930T020000
  792.68 +RDATE:19520928T020000
  792.69 +RDATE:19530927T020000
  792.70 +RDATE:19540926T020000
  792.71 +RDATE:19550925T020000
  792.72 +RDATE:19561028T020000
  792.73 +RDATE:19571027T020000
  792.74 +RDATE:19581026T020000
  792.75 +RDATE:19591025T020000
  792.76 +RDATE:19601030T020000
  792.77 +END:STANDARD
  792.78 +BEGIN:STANDARD
  792.79 +TZOFFSETFROM:-0600
  792.80 +TZOFFSETTO:-0600
  792.81 +TZNAME:CST
  792.82 +DTSTART:19210101T000000
  792.83 +RDATE:19210101T000000
  792.84 +RDATE:19420101T000000
  792.85 +END:STANDARD
  792.86 +BEGIN:DAYLIGHT
  792.87 +TZOFFSETFROM:-0600
  792.88 +TZOFFSETTO:-0500
  792.89 +TZNAME:CWT
  792.90 +DTSTART:19420209T020000
  792.91 +RDATE:19420209T020000
  792.92 +END:DAYLIGHT
  792.93 +BEGIN:DAYLIGHT
  792.94 +TZOFFSETFROM:-0500
  792.95 +TZOFFSETTO:-0500
  792.96 +TZNAME:CPT
  792.97 +DTSTART:19450814T180000
  792.98 +RDATE:19450814T180000
  792.99 +END:DAYLIGHT
 792.100 +BEGIN:DAYLIGHT
 792.101 +TZOFFSETFROM:-0500
 792.102 +TZOFFSETTO:-0500
 792.103 +TZNAME:CDT
 792.104 +DTSTART:19460428T020000
 792.105 +RDATE:19460428T020000
 792.106 +RDATE:19480425T020000
 792.107 +RDATE:19490424T020000
 792.108 +RDATE:19500430T020000
 792.109 +RDATE:19740106T020000
 792.110 +END:DAYLIGHT
 792.111 +BEGIN:STANDARD
 792.112 +TZOFFSETFROM:-0500
 792.113 +TZOFFSETTO:-0500
 792.114 +TZNAME:EST
 792.115 +DTSTART:19610723T020000
 792.116 +RDATE:19610723T020000
 792.117 +RDATE:19680101T000000
 792.118 +RDATE:19741027T020000
 792.119 +END:STANDARD
 792.120 +BEGIN:DAYLIGHT
 792.121 +TZOFFSETFROM:-0500
 792.122 +TZOFFSETTO:-0400
 792.123 +TZNAME:EDT
 792.124 +DTSTART:19680428T020000
 792.125 +RDATE:19680428T020000
 792.126 +RDATE:19690427T020000
 792.127 +RDATE:19700426T020000
 792.128 +RDATE:19710425T020000
 792.129 +RDATE:19720430T020000
 792.130 +RDATE:19730429T020000
 792.131 +RDATE:19750223T020000
 792.132 +RDATE:19760425T020000
 792.133 +RDATE:19770424T020000
 792.134 +RDATE:19780430T020000
 792.135 +RDATE:19790429T020000
 792.136 +RDATE:19800427T020000
 792.137 +RDATE:19810426T020000
 792.138 +RDATE:19820425T020000
 792.139 +RDATE:19830424T020000
 792.140 +RDATE:19840429T020000
 792.141 +RDATE:19850428T020000
 792.142 +RDATE:19860427T020000
 792.143 +RDATE:19870405T020000
 792.144 +RDATE:19880403T020000
 792.145 +RDATE:19890402T020000
 792.146 +RDATE:19900401T020000
 792.147 +RDATE:19910407T020000
 792.148 +RDATE:19920405T020000
 792.149 +RDATE:19930404T020000
 792.150 +RDATE:19940403T020000
 792.151 +RDATE:19950402T020000
 792.152 +RDATE:19960407T020000
 792.153 +RDATE:19970406T020000
 792.154 +RDATE:19980405T020000
 792.155 +RDATE:19990404T020000
 792.156 +RDATE:20000402T020000
 792.157 +RDATE:20010401T020000
 792.158 +RDATE:20020407T020000
 792.159 +RDATE:20030406T020000
 792.160 +RDATE:20040404T020000
 792.161 +RDATE:20050403T020000
 792.162 +RDATE:20060402T020000
 792.163 +END:DAYLIGHT
 792.164 +BEGIN:STANDARD
 792.165 +TZOFFSETFROM:-0400
 792.166 +TZOFFSETTO:-0500
 792.167 +TZNAME:EST
 792.168 +DTSTART:19681027T020000
 792.169 +RDATE:19681027T020000
 792.170 +RDATE:19691026T020000
 792.171 +RDATE:19701025T020000
 792.172 +RDATE:19711031T020000
 792.173 +RDATE:19721029T020000
 792.174 +RDATE:19731028T020000
 792.175 +RDATE:19751026T020000
 792.176 +RDATE:19761031T020000
 792.177 +RDATE:19771030T020000
 792.178 +RDATE:19781029T020000
 792.179 +RDATE:19791028T020000
 792.180 +RDATE:19801026T020000
 792.181 +RDATE:19811025T020000
 792.182 +RDATE:19821031T020000
 792.183 +RDATE:19831030T020000
 792.184 +RDATE:19841028T020000
 792.185 +RDATE:19851027T020000
 792.186 +RDATE:19861026T020000
 792.187 +RDATE:19871025T020000
 792.188 +RDATE:19881030T020000
 792.189 +RDATE:19891029T020000
 792.190 +RDATE:19901028T020000
 792.191 +RDATE:19911027T020000
 792.192 +RDATE:19921025T020000
 792.193 +RDATE:19931031T020000
 792.194 +RDATE:19941030T020000
 792.195 +RDATE:19951029T020000
 792.196 +RDATE:19961027T020000
 792.197 +RDATE:19971026T020000
 792.198 +RDATE:19981025T020000
 792.199 +RDATE:19991031T020000
 792.200 +RDATE:20001029T020000
 792.201 +RDATE:20011028T020000
 792.202 +RDATE:20021027T020000
 792.203 +RDATE:20031026T020000
 792.204 +RDATE:20041031T020000
 792.205 +RDATE:20051030T020000
 792.206 +RDATE:20061029T020000
 792.207 +END:STANDARD
 792.208 +END:VTIMEZONE
 792.209 +END:VCALENDAR
   793.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   793.2 +++ b/src/zoneinfo/America/Kentucky/Monticello.ics	Tue Feb 10 18:12:00 2015 +0100
   793.3 @@ -0,0 +1,165 @@
   793.4 +BEGIN:VCALENDAR
   793.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   793.6 +VERSION:2.0
   793.7 +BEGIN:VTIMEZONE
   793.8 +TZID:America/Kentucky/Monticello
   793.9 +TZURL:http://tzurl.org/zoneinfo/America/Kentucky/Monticello
  793.10 +X-LIC-LOCATION:America/Kentucky/Monticello
  793.11 +BEGIN:DAYLIGHT
  793.12 +TZOFFSETFROM:-0500
  793.13 +TZOFFSETTO:-0400
  793.14 +TZNAME:EDT
  793.15 +DTSTART:20070311T020000
  793.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  793.17 +END:DAYLIGHT
  793.18 +BEGIN:STANDARD
  793.19 +TZOFFSETFROM:-0400
  793.20 +TZOFFSETTO:-0500
  793.21 +TZNAME:EST
  793.22 +DTSTART:20071104T020000
  793.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  793.24 +END:STANDARD
  793.25 +BEGIN:STANDARD
  793.26 +TZOFFSETFROM:-053924
  793.27 +TZOFFSETTO:-0600
  793.28 +TZNAME:CST
  793.29 +DTSTART:18831118T122036
  793.30 +RDATE:18831118T122036
  793.31 +END:STANDARD
  793.32 +BEGIN:DAYLIGHT
  793.33 +TZOFFSETFROM:-0600
  793.34 +TZOFFSETTO:-0500
  793.35 +TZNAME:CDT
  793.36 +DTSTART:19180331T020000
  793.37 +RDATE:19180331T020000
  793.38 +RDATE:19190330T020000
  793.39 +RDATE:19680428T020000
  793.40 +RDATE:19690427T020000
  793.41 +RDATE:19700426T020000
  793.42 +RDATE:19710425T020000
  793.43 +RDATE:19720430T020000
  793.44 +RDATE:19730429T020000
  793.45 +RDATE:19740106T020000
  793.46 +RDATE:19750223T020000
  793.47 +RDATE:19760425T020000
  793.48 +RDATE:19770424T020000
  793.49 +RDATE:19780430T020000
  793.50 +RDATE:19790429T020000
  793.51 +RDATE:19800427T020000
  793.52 +RDATE:19810426T020000
  793.53 +RDATE:19820425T020000
  793.54 +RDATE:19830424T020000
  793.55 +RDATE:19840429T020000
  793.56 +RDATE:19850428T020000
  793.57 +RDATE:19860427T020000
  793.58 +RDATE:19870405T020000
  793.59 +RDATE:19880403T020000
  793.60 +RDATE:19890402T020000
  793.61 +RDATE:19900401T020000
  793.62 +RDATE:19910407T020000
  793.63 +RDATE:19920405T020000
  793.64 +RDATE:19930404T020000
  793.65 +RDATE:19940403T020000
  793.66 +RDATE:19950402T020000
  793.67 +RDATE:19960407T020000
  793.68 +RDATE:19970406T020000
  793.69 +RDATE:19980405T020000
  793.70 +RDATE:19990404T020000
  793.71 +RDATE:20000402T020000
  793.72 +END:DAYLIGHT
  793.73 +BEGIN:STANDARD
  793.74 +TZOFFSETFROM:-0500
  793.75 +TZOFFSETTO:-0600
  793.76 +TZNAME:CST
  793.77 +DTSTART:19181027T020000
  793.78 +RDATE:19181027T020000
  793.79 +RDATE:19191026T020000
  793.80 +RDATE:19450930T020000
  793.81 +RDATE:19681027T020000
  793.82 +RDATE:19691026T020000
  793.83 +RDATE:19701025T020000
  793.84 +RDATE:19711031T020000
  793.85 +RDATE:19721029T020000
  793.86 +RDATE:19731028T020000
  793.87 +RDATE:19741027T020000
  793.88 +RDATE:19751026T020000
  793.89 +RDATE:19761031T020000
  793.90 +RDATE:19771030T020000
  793.91 +RDATE:19781029T020000
  793.92 +RDATE:19791028T020000
  793.93 +RDATE:19801026T020000
  793.94 +RDATE:19811025T020000
  793.95 +RDATE:19821031T020000
  793.96 +RDATE:19831030T020000
  793.97 +RDATE:19841028T020000
  793.98 +RDATE:19851027T020000
  793.99 +RDATE:19861026T020000
 793.100 +RDATE:19871025T020000
 793.101 +RDATE:19881030T020000
 793.102 +RDATE:19891029T020000
 793.103 +RDATE:19901028T020000
 793.104 +RDATE:19911027T020000
 793.105 +RDATE:19921025T020000
 793.106 +RDATE:19931031T020000
 793.107 +RDATE:19941030T020000
 793.108 +RDATE:19951029T020000
 793.109 +RDATE:19961027T020000
 793.110 +RDATE:19971026T020000
 793.111 +RDATE:19981025T020000
 793.112 +RDATE:19991031T020000
 793.113 +END:STANDARD
 793.114 +BEGIN:DAYLIGHT
 793.115 +TZOFFSETFROM:-0600
 793.116 +TZOFFSETTO:-0500
 793.117 +TZNAME:CWT
 793.118 +DTSTART:19420209T020000
 793.119 +RDATE:19420209T020000
 793.120 +END:DAYLIGHT
 793.121 +BEGIN:DAYLIGHT
 793.122 +TZOFFSETFROM:-0500
 793.123 +TZOFFSETTO:-0500
 793.124 +TZNAME:CPT
 793.125 +DTSTART:19450814T180000
 793.126 +RDATE:19450814T180000
 793.127 +END:DAYLIGHT
 793.128 +BEGIN:STANDARD
 793.129 +TZOFFSETFROM:-0600
 793.130 +TZOFFSETTO:-0600
 793.131 +TZNAME:CST
 793.132 +DTSTART:19460101T000000
 793.133 +RDATE:19460101T000000
 793.134 +RDATE:19680101T000000
 793.135 +END:STANDARD
 793.136 +BEGIN:STANDARD
 793.137 +TZOFFSETFROM:-0500
 793.138 +TZOFFSETTO:-0500
 793.139 +TZNAME:EST
 793.140 +DTSTART:20001029T020000
 793.141 +RDATE:20001029T020000
 793.142 +END:STANDARD
 793.143 +BEGIN:DAYLIGHT
 793.144 +TZOFFSETFROM:-0500
 793.145 +TZOFFSETTO:-0400
 793.146 +TZNAME:EDT
 793.147 +DTSTART:20010401T020000
 793.148 +RDATE:20010401T020000
 793.149 +RDATE:20020407T020000
 793.150 +RDATE:20030406T020000
 793.151 +RDATE:20040404T020000
 793.152 +RDATE:20050403T020000
 793.153 +RDATE:20060402T020000
 793.154 +END:DAYLIGHT
 793.155 +BEGIN:STANDARD
 793.156 +TZOFFSETFROM:-0400
 793.157 +TZOFFSETTO:-0500
 793.158 +TZNAME:EST
 793.159 +DTSTART:20011028T020000
 793.160 +RDATE:20011028T020000
 793.161 +RDATE:20021027T020000
 793.162 +RDATE:20031026T020000
 793.163 +RDATE:20041031T020000
 793.164 +RDATE:20051030T020000
 793.165 +RDATE:20061029T020000
 793.166 +END:STANDARD
 793.167 +END:VTIMEZONE
 793.168 +END:VCALENDAR
   794.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   794.2 +++ b/src/zoneinfo/America/Kralendijk.ics	Tue Feb 10 18:12:00 2015 +0100
   794.3 @@ -0,0 +1,23 @@
   794.4 +BEGIN:VCALENDAR
   794.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   794.6 +VERSION:2.0
   794.7 +BEGIN:VTIMEZONE
   794.8 +TZID:America/Kralendijk
   794.9 +TZURL:http://tzurl.org/zoneinfo/America/Kralendijk
  794.10 +X-LIC-LOCATION:America/Kralendijk
  794.11 +BEGIN:STANDARD
  794.12 +TZOFFSETFROM:-043544
  794.13 +TZOFFSETTO:-0430
  794.14 +TZNAME:ANT
  794.15 +DTSTART:19120212T000000
  794.16 +RDATE:19120212T000000
  794.17 +END:STANDARD
  794.18 +BEGIN:STANDARD
  794.19 +TZOFFSETFROM:-0430
  794.20 +TZOFFSETTO:-0400
  794.21 +TZNAME:AST
  794.22 +DTSTART:19650101T000000
  794.23 +RDATE:19650101T000000
  794.24 +END:STANDARD
  794.25 +END:VTIMEZONE
  794.26 +END:VCALENDAR
   795.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   795.2 +++ b/src/zoneinfo/America/La_Paz.ics	Tue Feb 10 18:12:00 2015 +0100
   795.3 @@ -0,0 +1,30 @@
   795.4 +BEGIN:VCALENDAR
   795.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   795.6 +VERSION:2.0
   795.7 +BEGIN:VTIMEZONE
   795.8 +TZID:America/La_Paz
   795.9 +TZURL:http://tzurl.org/zoneinfo/America/La_Paz
  795.10 +X-LIC-LOCATION:America/La_Paz
  795.11 +BEGIN:STANDARD
  795.12 +TZOFFSETFROM:-043236
  795.13 +TZOFFSETTO:-043236
  795.14 +TZNAME:CMT
  795.15 +DTSTART:18900101T000000
  795.16 +RDATE:18900101T000000
  795.17 +END:STANDARD
  795.18 +BEGIN:DAYLIGHT
  795.19 +TZOFFSETFROM:-043236
  795.20 +TZOFFSETTO:-033236
  795.21 +TZNAME:BOST
  795.22 +DTSTART:19311015T000000
  795.23 +RDATE:19311015T000000
  795.24 +END:DAYLIGHT
  795.25 +BEGIN:STANDARD
  795.26 +TZOFFSETFROM:-033236
  795.27 +TZOFFSETTO:-0400
  795.28 +TZNAME:BOT
  795.29 +DTSTART:19320321T000000
  795.30 +RDATE:19320321T000000
  795.31 +END:STANDARD
  795.32 +END:VTIMEZONE
  795.33 +END:VCALENDAR
   796.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   796.2 +++ b/src/zoneinfo/America/Lima.ics	Tue Feb 10 18:12:00 2015 +0100
   796.3 @@ -0,0 +1,49 @@
   796.4 +BEGIN:VCALENDAR
   796.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   796.6 +VERSION:2.0
   796.7 +BEGIN:VTIMEZONE
   796.8 +TZID:America/Lima
   796.9 +TZURL:http://tzurl.org/zoneinfo/America/Lima
  796.10 +X-LIC-LOCATION:America/Lima
  796.11 +BEGIN:STANDARD
  796.12 +TZOFFSETFROM:-050812
  796.13 +TZOFFSETTO:-050836
  796.14 +TZNAME:LMT
  796.15 +DTSTART:18900101T000000
  796.16 +RDATE:18900101T000000
  796.17 +END:STANDARD
  796.18 +BEGIN:STANDARD
  796.19 +TZOFFSETFROM:-050836
  796.20 +TZOFFSETTO:-0500
  796.21 +TZNAME:PET
  796.22 +DTSTART:19080728T000000
  796.23 +RDATE:19080728T000000
  796.24 +END:STANDARD
  796.25 +BEGIN:DAYLIGHT
  796.26 +TZOFFSETFROM:-0500
  796.27 +TZOFFSETTO:-0400
  796.28 +TZNAME:PEST
  796.29 +DTSTART:19380101T000000
  796.30 +RDATE:19380101T000000
  796.31 +RDATE:19380925T000000
  796.32 +RDATE:19390924T000000
  796.33 +RDATE:19860101T000000
  796.34 +RDATE:19870101T000000
  796.35 +RDATE:19900101T000000
  796.36 +RDATE:19940101T000000
  796.37 +END:DAYLIGHT
  796.38 +BEGIN:STANDARD
  796.39 +TZOFFSETFROM:-0400
  796.40 +TZOFFSETTO:-0500
  796.41 +TZNAME:PET
  796.42 +DTSTART:19380401T000000
  796.43 +RDATE:19380401T000000
  796.44 +RDATE:19390326T000000
  796.45 +RDATE:19400324T000000
  796.46 +RDATE:19860401T000000
  796.47 +RDATE:19870401T000000
  796.48 +RDATE:19900401T000000
  796.49 +RDATE:19940401T000000
  796.50 +END:STANDARD
  796.51 +END:VTIMEZONE
  796.52 +END:VCALENDAR
   797.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   797.2 +++ b/src/zoneinfo/America/Los_Angeles.ics	Tue Feb 10 18:12:00 2015 +0100
   797.3 @@ -0,0 +1,185 @@
   797.4 +BEGIN:VCALENDAR
   797.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   797.6 +VERSION:2.0
   797.7 +BEGIN:VTIMEZONE
   797.8 +TZID:America/Los_Angeles
   797.9 +TZURL:http://tzurl.org/zoneinfo/America/Los_Angeles
  797.10 +X-LIC-LOCATION:America/Los_Angeles
  797.11 +BEGIN:DAYLIGHT
  797.12 +TZOFFSETFROM:-0800
  797.13 +TZOFFSETTO:-0700
  797.14 +TZNAME:PDT
  797.15 +DTSTART:20070311T020000
  797.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  797.17 +END:DAYLIGHT
  797.18 +BEGIN:STANDARD
  797.19 +TZOFFSETFROM:-0700
  797.20 +TZOFFSETTO:-0800
  797.21 +TZNAME:PST
  797.22 +DTSTART:20071104T020000
  797.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  797.24 +END:STANDARD
  797.25 +BEGIN:STANDARD
  797.26 +TZOFFSETFROM:-075258
  797.27 +TZOFFSETTO:-0800
  797.28 +TZNAME:PST
  797.29 +DTSTART:18831118T120702
  797.30 +RDATE:18831118T120702
  797.31 +END:STANDARD
  797.32 +BEGIN:DAYLIGHT
  797.33 +TZOFFSETFROM:-0800
  797.34 +TZOFFSETTO:-0700
  797.35 +TZNAME:PDT
  797.36 +DTSTART:19180331T020000
  797.37 +RDATE:19180331T020000
  797.38 +RDATE:19190330T020000
  797.39 +RDATE:19480314T020000
  797.40 +RDATE:19500430T020000
  797.41 +RDATE:19510429T020000
  797.42 +RDATE:19520427T020000
  797.43 +RDATE:19530426T020000
  797.44 +RDATE:19540425T020000
  797.45 +RDATE:19550424T020000
  797.46 +RDATE:19560429T020000
  797.47 +RDATE:19570428T020000
  797.48 +RDATE:19580427T020000
  797.49 +RDATE:19590426T020000
  797.50 +RDATE:19600424T020000
  797.51 +RDATE:19610430T020000
  797.52 +RDATE:19620429T020000
  797.53 +RDATE:19630428T020000
  797.54 +RDATE:19640426T020000
  797.55 +RDATE:19650425T020000
  797.56 +RDATE:19660424T020000
  797.57 +RDATE:19670430T020000
  797.58 +RDATE:19680428T020000
  797.59 +RDATE:19690427T020000
  797.60 +RDATE:19700426T020000
  797.61 +RDATE:19710425T020000
  797.62 +RDATE:19720430T020000
  797.63 +RDATE:19730429T020000
  797.64 +RDATE:19740106T020000
  797.65 +RDATE:19750223T020000
  797.66 +RDATE:19760425T020000
  797.67 +RDATE:19770424T020000
  797.68 +RDATE:19780430T020000
  797.69 +RDATE:19790429T020000
  797.70 +RDATE:19800427T020000
  797.71 +RDATE:19810426T020000
  797.72 +RDATE:19820425T020000
  797.73 +RDATE:19830424T020000
  797.74 +RDATE:19840429T020000
  797.75 +RDATE:19850428T020000
  797.76 +RDATE:19860427T020000
  797.77 +RDATE:19870405T020000
  797.78 +RDATE:19880403T020000
  797.79 +RDATE:19890402T020000
  797.80 +RDATE:19900401T020000
  797.81 +RDATE:19910407T020000
  797.82 +RDATE:19920405T020000
  797.83 +RDATE:19930404T020000
  797.84 +RDATE:19940403T020000
  797.85 +RDATE:19950402T020000
  797.86 +RDATE:19960407T020000
  797.87 +RDATE:19970406T020000
  797.88 +RDATE:19980405T020000
  797.89 +RDATE:19990404T020000
  797.90 +RDATE:20000402T020000
  797.91 +RDATE:20010401T020000
  797.92 +RDATE:20020407T020000
  797.93 +RDATE:20030406T020000
  797.94 +RDATE:20040404T020000
  797.95 +RDATE:20050403T020000
  797.96 +RDATE:20060402T020000
  797.97 +END:DAYLIGHT
  797.98 +BEGIN:STANDARD
  797.99 +TZOFFSETFROM:-0700
 797.100 +TZOFFSETTO:-0800
 797.101 +TZNAME:PST
 797.102 +DTSTART:19181027T020000
 797.103 +RDATE:19181027T020000
 797.104 +RDATE:19191026T020000
 797.105 +RDATE:19450930T020000
 797.106 +RDATE:19490101T020000
 797.107 +RDATE:19500924T020000
 797.108 +RDATE:19510930T020000
 797.109 +RDATE:19520928T020000
 797.110 +RDATE:19530927T020000
 797.111 +RDATE:19540926T020000
 797.112 +RDATE:19550925T020000
 797.113 +RDATE:19560930T020000
 797.114 +RDATE:19570929T020000
 797.115 +RDATE:19580928T020000
 797.116 +RDATE:19590927T020000
 797.117 +RDATE:19600925T020000
 797.118 +RDATE:19610924T020000
 797.119 +RDATE:19621028T020000
 797.120 +RDATE:19631027T020000
 797.121 +RDATE:19641025T020000
 797.122 +RDATE:19651031T020000
 797.123 +RDATE:19661030T020000
 797.124 +RDATE:19671029T020000
 797.125 +RDATE:19681027T020000
 797.126 +RDATE:19691026T020000
 797.127 +RDATE:19701025T020000
 797.128 +RDATE:19711031T020000
 797.129 +RDATE:19721029T020000
 797.130 +RDATE:19731028T020000
 797.131 +RDATE:19741027T020000
 797.132 +RDATE:19751026T020000
 797.133 +RDATE:19761031T020000
 797.134 +RDATE:19771030T020000
 797.135 +RDATE:19781029T020000
 797.136 +RDATE:19791028T020000
 797.137 +RDATE:19801026T020000
 797.138 +RDATE:19811025T020000
 797.139 +RDATE:19821031T020000
 797.140 +RDATE:19831030T020000
 797.141 +RDATE:19841028T020000
 797.142 +RDATE:19851027T020000
 797.143 +RDATE:19861026T020000
 797.144 +RDATE:19871025T020000
 797.145 +RDATE:19881030T020000
 797.146 +RDATE:19891029T020000
 797.147 +RDATE:19901028T020000
 797.148 +RDATE:19911027T020000
 797.149 +RDATE:19921025T020000
 797.150 +RDATE:19931031T020000
 797.151 +RDATE:19941030T020000
 797.152 +RDATE:19951029T020000
 797.153 +RDATE:19961027T020000
 797.154 +RDATE:19971026T020000
 797.155 +RDATE:19981025T020000
 797.156 +RDATE:19991031T020000
 797.157 +RDATE:20001029T020000
 797.158 +RDATE:20011028T020000
 797.159 +RDATE:20021027T020000
 797.160 +RDATE:20031026T020000
 797.161 +RDATE:20041031T020000
 797.162 +RDATE:20051030T020000
 797.163 +RDATE:20061029T020000
 797.164 +END:STANDARD
 797.165 +BEGIN:DAYLIGHT
 797.166 +TZOFFSETFROM:-0800
 797.167 +TZOFFSETTO:-0700
 797.168 +TZNAME:PWT
 797.169 +DTSTART:19420209T020000
 797.170 +RDATE:19420209T020000
 797.171 +END:DAYLIGHT
 797.172 +BEGIN:DAYLIGHT
 797.173 +TZOFFSETFROM:-0700
 797.174 +TZOFFSETTO:-0700
 797.175 +TZNAME:PPT
 797.176 +DTSTART:19450814T160000
 797.177 +RDATE:19450814T160000
 797.178 +END:DAYLIGHT
 797.179 +BEGIN:STANDARD
 797.180 +TZOFFSETFROM:-0800
 797.181 +TZOFFSETTO:-0800
 797.182 +TZNAME:PST
 797.183 +DTSTART:19460101T000000
 797.184 +RDATE:19460101T000000
 797.185 +RDATE:19670101T000000
 797.186 +END:STANDARD
 797.187 +END:VTIMEZONE
 797.188 +END:VCALENDAR
   798.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   798.2 +++ b/src/zoneinfo/America/Lower_Princes.ics	Tue Feb 10 18:12:00 2015 +0100
   798.3 @@ -0,0 +1,23 @@
   798.4 +BEGIN:VCALENDAR
   798.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   798.6 +VERSION:2.0
   798.7 +BEGIN:VTIMEZONE
   798.8 +TZID:America/Lower_Princes
   798.9 +TZURL:http://tzurl.org/zoneinfo/America/Lower_Princes
  798.10 +X-LIC-LOCATION:America/Lower_Princes
  798.11 +BEGIN:STANDARD
  798.12 +TZOFFSETFROM:-043544
  798.13 +TZOFFSETTO:-0430
  798.14 +TZNAME:ANT
  798.15 +DTSTART:19120212T000000
  798.16 +RDATE:19120212T000000
  798.17 +END:STANDARD
  798.18 +BEGIN:STANDARD
  798.19 +TZOFFSETFROM:-0430
  798.20 +TZOFFSETTO:-0400
  798.21 +TZNAME:AST
  798.22 +DTSTART:19650101T000000
  798.23 +RDATE:19650101T000000
  798.24 +END:STANDARD
  798.25 +END:VTIMEZONE
  798.26 +END:VCALENDAR
   799.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   799.2 +++ b/src/zoneinfo/America/Maceio.ics	Tue Feb 10 18:12:00 2015 +0100
   799.3 @@ -0,0 +1,80 @@
   799.4 +BEGIN:VCALENDAR
   799.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   799.6 +VERSION:2.0
   799.7 +BEGIN:VTIMEZONE
   799.8 +TZID:America/Maceio
   799.9 +TZURL:http://tzurl.org/zoneinfo/America/Maceio
  799.10 +X-LIC-LOCATION:America/Maceio
  799.11 +BEGIN:STANDARD
  799.12 +TZOFFSETFROM:-022252
  799.13 +TZOFFSETTO:-0300
  799.14 +TZNAME:BRT
  799.15 +DTSTART:19140101T000000
  799.16 +RDATE:19140101T000000
  799.17 +END:STANDARD
  799.18 +BEGIN:DAYLIGHT
  799.19 +TZOFFSETFROM:-0300
  799.20 +TZOFFSETTO:-0200
  799.21 +TZNAME:BRST
  799.22 +DTSTART:19311003T110000
  799.23 +RDATE:19311003T110000
  799.24 +RDATE:19321003T000000
  799.25 +RDATE:19491201T000000
  799.26 +RDATE:19501201T000000
  799.27 +RDATE:19511201T000000
  799.28 +RDATE:19521201T000000
  799.29 +RDATE:19631209T000000
  799.30 +RDATE:19650131T000000
  799.31 +RDATE:19651201T000000
  799.32 +RDATE:19661101T000000
  799.33 +RDATE:19671101T000000
  799.34 +RDATE:19851102T000000
  799.35 +RDATE:19861025T000000
  799.36 +RDATE:19871025T000000
  799.37 +RDATE:19881016T000000
  799.38 +RDATE:19891015T000000
  799.39 +RDATE:19951015T000000
  799.40 +RDATE:19991003T000000
  799.41 +RDATE:20001008T000000
  799.42 +RDATE:20011014T000000
  799.43 +END:DAYLIGHT
  799.44 +BEGIN:STANDARD
  799.45 +TZOFFSETFROM:-0200
  799.46 +TZOFFSETTO:-0300
  799.47 +TZNAME:BRT
  799.48 +DTSTART:19320401T000000
  799.49 +RDATE:19320401T000000
  799.50 +RDATE:19330401T000000
  799.51 +RDATE:19500416T010000
  799.52 +RDATE:19510401T000000
  799.53 +RDATE:19520401T000000
  799.54 +RDATE:19530301T000000
  799.55 +RDATE:19640301T000000
  799.56 +RDATE:19650331T000000
  799.57 +RDATE:19660301T000000
  799.58 +RDATE:19670301T000000
  799.59 +RDATE:19680301T000000
  799.60 +RDATE:19860315T000000
  799.61 +RDATE:19870214T000000
  799.62 +RDATE:19880207T000000
  799.63 +RDATE:19890129T000000
  799.64 +RDATE:19900211T000000
  799.65 +RDATE:19960211T000000
  799.66 +RDATE:20000227T000000
  799.67 +RDATE:20001022T000000
  799.68 +RDATE:20020217T000000
  799.69 +END:STANDARD
  799.70 +BEGIN:STANDARD
  799.71 +TZOFFSETFROM:-0300
  799.72 +TZOFFSETTO:-0300
  799.73 +TZNAME:BRT
  799.74 +DTSTART:19900917T000000
  799.75 +RDATE:19900917T000000
  799.76 +RDATE:19951013T000000
  799.77 +RDATE:19960904T000000
  799.78 +RDATE:19990930T000000
  799.79 +RDATE:20010913T000000
  799.80 +RDATE:20021001T000000
  799.81 +END:STANDARD
  799.82 +END:VTIMEZONE
  799.83 +END:VCALENDAR
   800.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   800.2 +++ b/src/zoneinfo/America/Managua.ics	Tue Feb 10 18:12:00 2015 +0100
   800.3 @@ -0,0 +1,55 @@
   800.4 +BEGIN:VCALENDAR
   800.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   800.6 +VERSION:2.0
   800.7 +BEGIN:VTIMEZONE
   800.8 +TZID:America/Managua
   800.9 +TZURL:http://tzurl.org/zoneinfo/America/Managua
  800.10 +X-LIC-LOCATION:America/Managua
  800.11 +BEGIN:STANDARD
  800.12 +TZOFFSETFROM:-054508
  800.13 +TZOFFSETTO:-054512
  800.14 +TZNAME:MMT
  800.15 +DTSTART:18900101T000000
  800.16 +RDATE:18900101T000000
  800.17 +END:STANDARD
  800.18 +BEGIN:STANDARD
  800.19 +TZOFFSETFROM:-054512
  800.20 +TZOFFSETTO:-0600
  800.21 +TZNAME:CST
  800.22 +DTSTART:19340623T000000
  800.23 +RDATE:19340623T000000
  800.24 +END:STANDARD
  800.25 +BEGIN:STANDARD
  800.26 +TZOFFSETFROM:-0600
  800.27 +TZOFFSETTO:-0500
  800.28 +TZNAME:EST
  800.29 +DTSTART:19730501T000000
  800.30 +RDATE:19730501T000000
  800.31 +RDATE:19920101T040000
  800.32 +RDATE:19930101T000000
  800.33 +END:STANDARD
  800.34 +BEGIN:STANDARD
  800.35 +TZOFFSETFROM:-0500
  800.36 +TZOFFSETTO:-0600
  800.37 +TZNAME:CST
  800.38 +DTSTART:19750216T000000
  800.39 +RDATE:19750216T000000
  800.40 +RDATE:19790625T000000
  800.41 +RDATE:19800623T000000
  800.42 +RDATE:19920924T000000
  800.43 +RDATE:19970101T000000
  800.44 +RDATE:20051002T000000
  800.45 +RDATE:20061001T010000
  800.46 +END:STANDARD
  800.47 +BEGIN:DAYLIGHT
  800.48 +TZOFFSETFROM:-0600
  800.49 +TZOFFSETTO:-0500
  800.50 +TZNAME:CDT
  800.51 +DTSTART:19790318T000000
  800.52 +RDATE:19790318T000000
  800.53 +RDATE:19800316T000000
  800.54 +RDATE:20050410T000000
  800.55 +RDATE:20060430T020000
  800.56 +END:DAYLIGHT
  800.57 +END:VTIMEZONE
  800.58 +END:VCALENDAR
   801.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   801.2 +++ b/src/zoneinfo/America/Manaus.ics	Tue Feb 10 18:12:00 2015 +0100
   801.3 @@ -0,0 +1,67 @@
   801.4 +BEGIN:VCALENDAR
   801.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   801.6 +VERSION:2.0
   801.7 +BEGIN:VTIMEZONE
   801.8 +TZID:America/Manaus
   801.9 +TZURL:http://tzurl.org/zoneinfo/America/Manaus
  801.10 +X-LIC-LOCATION:America/Manaus
  801.11 +BEGIN:STANDARD
  801.12 +TZOFFSETFROM:-040004
  801.13 +TZOFFSETTO:-0400
  801.14 +TZNAME:AMT
  801.15 +DTSTART:19140101T000000
  801.16 +RDATE:19140101T000000
  801.17 +END:STANDARD
  801.18 +BEGIN:DAYLIGHT
  801.19 +TZOFFSETFROM:-0400
  801.20 +TZOFFSETTO:-0300
  801.21 +TZNAME:AMST
  801.22 +DTSTART:19311003T110000
  801.23 +RDATE:19311003T110000
  801.24 +RDATE:19321003T000000
  801.25 +RDATE:19491201T000000
  801.26 +RDATE:19501201T000000
  801.27 +RDATE:19511201T000000
  801.28 +RDATE:19521201T000000
  801.29 +RDATE:19631209T000000
  801.30 +RDATE:19650131T000000
  801.31 +RDATE:19651201T000000
  801.32 +RDATE:19661101T000000
  801.33 +RDATE:19671101T000000
  801.34 +RDATE:19851102T000000
  801.35 +RDATE:19861025T000000
  801.36 +RDATE:19871025T000000
  801.37 +RDATE:19931017T000000
  801.38 +END:DAYLIGHT
  801.39 +BEGIN:STANDARD
  801.40 +TZOFFSETFROM:-0300
  801.41 +TZOFFSETTO:-0400
  801.42 +TZNAME:AMT
  801.43 +DTSTART:19320401T000000
  801.44 +RDATE:19320401T000000
  801.45 +RDATE:19330401T000000
  801.46 +RDATE:19500416T010000
  801.47 +RDATE:19510401T000000
  801.48 +RDATE:19520401T000000
  801.49 +RDATE:19530301T000000
  801.50 +RDATE:19640301T000000
  801.51 +RDATE:19650331T000000
  801.52 +RDATE:19660301T000000
  801.53 +RDATE:19670301T000000
  801.54 +RDATE:19680301T000000
  801.55 +RDATE:19860315T000000
  801.56 +RDATE:19870214T000000
  801.57 +RDATE:19880207T000000
  801.58 +RDATE:19940220T000000
  801.59 +END:STANDARD
  801.60 +BEGIN:STANDARD
  801.61 +TZOFFSETFROM:-0400
  801.62 +TZOFFSETTO:-0400
  801.63 +TZNAME:AMT
  801.64 +DTSTART:19880912T000000
  801.65 +RDATE:19880912T000000
  801.66 +RDATE:19930928T000000
  801.67 +RDATE:19940922T000000
  801.68 +END:STANDARD
  801.69 +END:VTIMEZONE
  801.70 +END:VCALENDAR
   802.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   802.2 +++ b/src/zoneinfo/America/Marigot.ics	Tue Feb 10 18:12:00 2015 +0100
   802.3 @@ -0,0 +1,16 @@
   802.4 +BEGIN:VCALENDAR
   802.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   802.6 +VERSION:2.0
   802.7 +BEGIN:VTIMEZONE
   802.8 +TZID:America/Marigot
   802.9 +TZURL:http://tzurl.org/zoneinfo/America/Marigot
  802.10 +X-LIC-LOCATION:America/Marigot
  802.11 +BEGIN:STANDARD
  802.12 +TZOFFSETFROM:-040608
  802.13 +TZOFFSETTO:-0400
  802.14 +TZNAME:AST
  802.15 +DTSTART:19110608T000000
  802.16 +RDATE:19110608T000000
  802.17 +END:STANDARD
  802.18 +END:VTIMEZONE
  802.19 +END:VCALENDAR
   803.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   803.2 +++ b/src/zoneinfo/America/Martinique.ics	Tue Feb 10 18:12:00 2015 +0100
   803.3 @@ -0,0 +1,37 @@
   803.4 +BEGIN:VCALENDAR
   803.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   803.6 +VERSION:2.0
   803.7 +BEGIN:VTIMEZONE
   803.8 +TZID:America/Martinique
   803.9 +TZURL:http://tzurl.org/zoneinfo/America/Martinique
  803.10 +X-LIC-LOCATION:America/Martinique
  803.11 +BEGIN:STANDARD
  803.12 +TZOFFSETFROM:-040420
  803.13 +TZOFFSETTO:-040420
  803.14 +TZNAME:FFMT
  803.15 +DTSTART:18900101T000000
  803.16 +RDATE:18900101T000000
  803.17 +END:STANDARD
  803.18 +BEGIN:STANDARD
  803.19 +TZOFFSETFROM:-040420
  803.20 +TZOFFSETTO:-0400
  803.21 +TZNAME:AST
  803.22 +DTSTART:19110501T000000
  803.23 +RDATE:19110501T000000
  803.24 +END:STANDARD
  803.25 +BEGIN:DAYLIGHT
  803.26 +TZOFFSETFROM:-0400
  803.27 +TZOFFSETTO:-0300
  803.28 +TZNAME:ADT
  803.29 +DTSTART:19800406T000000
  803.30 +RDATE:19800406T000000
  803.31 +END:DAYLIGHT
  803.32 +BEGIN:STANDARD
  803.33 +TZOFFSETFROM:-0300
  803.34 +TZOFFSETTO:-0400
  803.35 +TZNAME:AST
  803.36 +DTSTART:19800928T000000
  803.37 +RDATE:19800928T000000
  803.38 +END:STANDARD
  803.39 +END:VTIMEZONE
  803.40 +END:VCALENDAR
   804.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   804.2 +++ b/src/zoneinfo/America/Matamoros.ics	Tue Feb 10 18:12:00 2015 +0100
   804.3 @@ -0,0 +1,81 @@
   804.4 +BEGIN:VCALENDAR
   804.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   804.6 +VERSION:2.0
   804.7 +BEGIN:VTIMEZONE
   804.8 +TZID:America/Matamoros
   804.9 +TZURL:http://tzurl.org/zoneinfo/America/Matamoros
  804.10 +X-LIC-LOCATION:America/Matamoros
  804.11 +BEGIN:DAYLIGHT
  804.12 +TZOFFSETFROM:-0600
  804.13 +TZOFFSETTO:-0500
  804.14 +TZNAME:CDT
  804.15 +DTSTART:20100314T020000
  804.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  804.17 +END:DAYLIGHT
  804.18 +BEGIN:STANDARD
  804.19 +TZOFFSETFROM:-0500
  804.20 +TZOFFSETTO:-0600
  804.21 +TZNAME:CST
  804.22 +DTSTART:20101107T020000
  804.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  804.24 +END:STANDARD
  804.25 +BEGIN:STANDARD
  804.26 +TZOFFSETFROM:-0640
  804.27 +TZOFFSETTO:-0600
  804.28 +TZNAME:CST
  804.29 +DTSTART:19211231T232000
  804.30 +RDATE:19211231T232000
  804.31 +END:STANDARD
  804.32 +BEGIN:STANDARD
  804.33 +TZOFFSETFROM:-0600
  804.34 +TZOFFSETTO:-0600
  804.35 +TZNAME:CST
  804.36 +DTSTART:19880101T000000
  804.37 +RDATE:19880101T000000
  804.38 +RDATE:19890101T000000
  804.39 +RDATE:20100101T000000
  804.40 +END:STANDARD
  804.41 +BEGIN:DAYLIGHT
  804.42 +TZOFFSETFROM:-0600
  804.43 +TZOFFSETTO:-0500
  804.44 +TZNAME:CDT
  804.45 +DTSTART:19880403T020000
  804.46 +RDATE:19880403T020000
  804.47 +RDATE:19960407T020000
  804.48 +RDATE:19970406T020000
  804.49 +RDATE:19980405T020000
  804.50 +RDATE:19990404T020000
  804.51 +RDATE:20000402T020000
  804.52 +RDATE:20010506T020000
  804.53 +RDATE:20020407T020000
  804.54 +RDATE:20030406T020000
  804.55 +RDATE:20040404T020000
  804.56 +RDATE:20050403T020000
  804.57 +RDATE:20060402T020000
  804.58 +RDATE:20070401T020000
  804.59 +RDATE:20080406T020000
  804.60 +RDATE:20090405T020000
  804.61 +END:DAYLIGHT
  804.62 +BEGIN:STANDARD
  804.63 +TZOFFSETFROM:-0500
  804.64 +TZOFFSETTO:-0600
  804.65 +TZNAME:CST
  804.66 +DTSTART:19881030T020000
  804.67 +RDATE:19881030T020000
  804.68 +RDATE:19961027T020000
  804.69 +RDATE:19971026T020000
  804.70 +RDATE:19981025T020000
  804.71 +RDATE:19991031T020000
  804.72 +RDATE:20001029T020000
  804.73 +RDATE:20010930T020000
  804.74 +RDATE:20021027T020000
  804.75 +RDATE:20031026T020000
  804.76 +RDATE:20041031T020000
  804.77 +RDATE:20051030T020000
  804.78 +RDATE:20061029T020000
  804.79 +RDATE:20071028T020000
  804.80 +RDATE:20081026T020000
  804.81 +RDATE:20091025T020000
  804.82 +END:STANDARD
  804.83 +END:VTIMEZONE
  804.84 +END:VCALENDAR
   805.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   805.2 +++ b/src/zoneinfo/America/Mazatlan.ics	Tue Feb 10 18:12:00 2015 +0100
   805.3 @@ -0,0 +1,80 @@
   805.4 +BEGIN:VCALENDAR
   805.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   805.6 +VERSION:2.0
   805.7 +BEGIN:VTIMEZONE
   805.8 +TZID:America/Mazatlan
   805.9 +TZURL:http://tzurl.org/zoneinfo/America/Mazatlan
  805.10 +X-LIC-LOCATION:America/Mazatlan
  805.11 +BEGIN:DAYLIGHT
  805.12 +TZOFFSETFROM:-0700
  805.13 +TZOFFSETTO:-0600
  805.14 +TZNAME:MDT
  805.15 +DTSTART:20020407T020000
  805.16 +RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU
  805.17 +END:DAYLIGHT
  805.18 +BEGIN:STANDARD
  805.19 +TZOFFSETFROM:-0600
  805.20 +TZOFFSETTO:-0700
  805.21 +TZNAME:MST
  805.22 +DTSTART:20021027T020000
  805.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  805.24 +END:STANDARD
  805.25 +BEGIN:STANDARD
  805.26 +TZOFFSETFROM:-070540
  805.27 +TZOFFSETTO:-0700
  805.28 +TZNAME:MST
  805.29 +DTSTART:19211231T235420
  805.30 +RDATE:19211231T235420
  805.31 +END:STANDARD
  805.32 +BEGIN:STANDARD
  805.33 +TZOFFSETFROM:-0700
  805.34 +TZOFFSETTO:-0600
  805.35 +TZNAME:CST
  805.36 +DTSTART:19270610T230000
  805.37 +RDATE:19270610T230000
  805.38 +RDATE:19310501T230000
  805.39 +RDATE:19320401T000000
  805.40 +END:STANDARD
  805.41 +BEGIN:STANDARD
  805.42 +TZOFFSETFROM:-0600
  805.43 +TZOFFSETTO:-0700
  805.44 +TZNAME:MST
  805.45 +DTSTART:19301115T000000
  805.46 +RDATE:19301115T000000
  805.47 +RDATE:19311001T000000
  805.48 +RDATE:19420424T000000
  805.49 +RDATE:19961027T020000
  805.50 +RDATE:19971026T020000
  805.51 +RDATE:19981025T020000
  805.52 +RDATE:19991031T020000
  805.53 +RDATE:20001029T020000
  805.54 +RDATE:20010930T020000
  805.55 +END:STANDARD
  805.56 +BEGIN:STANDARD
  805.57 +TZOFFSETFROM:-0700
  805.58 +TZOFFSETTO:-0800
  805.59 +TZNAME:PST
  805.60 +DTSTART:19490114T000000
  805.61 +RDATE:19490114T000000
  805.62 +END:STANDARD
  805.63 +BEGIN:STANDARD
  805.64 +TZOFFSETFROM:-0800
  805.65 +TZOFFSETTO:-0700
  805.66 +TZNAME:MST
  805.67 +DTSTART:19700101T000000
  805.68 +RDATE:19700101T000000
  805.69 +END:STANDARD
  805.70 +BEGIN:DAYLIGHT
  805.71 +TZOFFSETFROM:-0700
  805.72 +TZOFFSETTO:-0600
  805.73 +TZNAME:MDT
  805.74 +DTSTART:19960407T020000
  805.75 +RDATE:19960407T020000
  805.76 +RDATE:19970406T020000
  805.77 +RDATE:19980405T020000
  805.78 +RDATE:19990404T020000
  805.79 +RDATE:20000402T020000
  805.80 +RDATE:20010506T020000
  805.81 +END:DAYLIGHT
  805.82 +END:VTIMEZONE
  805.83 +END:VCALENDAR
   806.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   806.2 +++ b/src/zoneinfo/America/Menominee.ics	Tue Feb 10 18:12:00 2015 +0100
   806.3 @@ -0,0 +1,153 @@
   806.4 +BEGIN:VCALENDAR
   806.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   806.6 +VERSION:2.0
   806.7 +BEGIN:VTIMEZONE
   806.8 +TZID:America/Menominee
   806.9 +TZURL:http://tzurl.org/zoneinfo/America/Menominee
  806.10 +X-LIC-LOCATION:America/Menominee
  806.11 +BEGIN:DAYLIGHT
  806.12 +TZOFFSETFROM:-0600
  806.13 +TZOFFSETTO:-0500
  806.14 +TZNAME:CDT
  806.15 +DTSTART:20070311T020000
  806.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  806.17 +END:DAYLIGHT
  806.18 +BEGIN:STANDARD
  806.19 +TZOFFSETFROM:-0500
  806.20 +TZOFFSETTO:-0600
  806.21 +TZNAME:CST
  806.22 +DTSTART:20071104T020000
  806.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  806.24 +END:STANDARD
  806.25 +BEGIN:STANDARD
  806.26 +TZOFFSETFROM:-055027
  806.27 +TZOFFSETTO:-0600
  806.28 +TZNAME:CST
  806.29 +DTSTART:18850918T120000
  806.30 +RDATE:18850918T120000
  806.31 +END:STANDARD
  806.32 +BEGIN:DAYLIGHT
  806.33 +TZOFFSETFROM:-0600
  806.34 +TZOFFSETTO:-0500
  806.35 +TZNAME:CDT
  806.36 +DTSTART:19180331T020000
  806.37 +RDATE:19180331T020000
  806.38 +RDATE:19190330T020000
  806.39 +RDATE:19460428T020000
  806.40 +RDATE:19660424T020000
  806.41 +RDATE:19740106T020000
  806.42 +RDATE:19750223T020000
  806.43 +RDATE:19760425T020000
  806.44 +RDATE:19770424T020000
  806.45 +RDATE:19780430T020000
  806.46 +RDATE:19790429T020000
  806.47 +RDATE:19800427T020000
  806.48 +RDATE:19810426T020000
  806.49 +RDATE:19820425T020000
  806.50 +RDATE:19830424T020000
  806.51 +RDATE:19840429T020000
  806.52 +RDATE:19850428T020000
  806.53 +RDATE:19860427T020000
  806.54 +RDATE:19870405T020000
  806.55 +RDATE:19880403T020000
  806.56 +RDATE:19890402T020000
  806.57 +RDATE:19900401T020000
  806.58 +RDATE:19910407T020000
  806.59 +RDATE:19920405T020000
  806.60 +RDATE:19930404T020000
  806.61 +RDATE:19940403T020000
  806.62 +RDATE:19950402T020000
  806.63 +RDATE:19960407T020000
  806.64 +RDATE:19970406T020000
  806.65 +RDATE:19980405T020000
  806.66 +RDATE:19990404T020000
  806.67 +RDATE:20000402T020000
  806.68 +RDATE:20010401T020000
  806.69 +RDATE:20020407T020000
  806.70 +RDATE:20030406T020000
  806.71 +RDATE:20040404T020000
  806.72 +RDATE:20050403T020000
  806.73 +RDATE:20060402T020000
  806.74 +END:DAYLIGHT
  806.75 +BEGIN:STANDARD
  806.76 +TZOFFSETFROM:-0500
  806.77 +TZOFFSETTO:-0600
  806.78 +TZNAME:CST
  806.79 +DTSTART:19181027T020000
  806.80 +RDATE:19181027T020000
  806.81 +RDATE:19191026T020000
  806.82 +RDATE:19450930T020000
  806.83 +RDATE:19460929T020000
  806.84 +RDATE:19661030T020000
  806.85 +RDATE:19731028T020000
  806.86 +RDATE:19741027T020000
  806.87 +RDATE:19751026T020000
  806.88 +RDATE:19761031T020000
  806.89 +RDATE:19771030T020000
  806.90 +RDATE:19781029T020000
  806.91 +RDATE:19791028T020000
  806.92 +RDATE:19801026T020000
  806.93 +RDATE:19811025T020000
  806.94 +RDATE:19821031T020000
  806.95 +RDATE:19831030T020000
  806.96 +RDATE:19841028T020000
  806.97 +RDATE:19851027T020000
  806.98 +RDATE:19861026T020000
  806.99 +RDATE:19871025T020000
 806.100 +RDATE:19881030T020000
 806.101 +RDATE:19891029T020000
 806.102 +RDATE:19901028T020000
 806.103 +RDATE:19911027T020000
 806.104 +RDATE:19921025T020000
 806.105 +RDATE:19931031T020000
 806.106 +RDATE:19941030T020000
 806.107 +RDATE:19951029T020000
 806.108 +RDATE:19961027T020000
 806.109 +RDATE:19971026T020000
 806.110 +RDATE:19981025T020000
 806.111 +RDATE:19991031T020000
 806.112 +RDATE:20001029T020000
 806.113 +RDATE:20011028T020000
 806.114 +RDATE:20021027T020000
 806.115 +RDATE:20031026T020000
 806.116 +RDATE:20041031T020000
 806.117 +RDATE:20051030T020000
 806.118 +RDATE:20061029T020000
 806.119 +END:STANDARD
 806.120 +BEGIN:DAYLIGHT
 806.121 +TZOFFSETFROM:-0600
 806.122 +TZOFFSETTO:-0500
 806.123 +TZNAME:CWT
 806.124 +DTSTART:19420209T020000
 806.125 +RDATE:19420209T020000
 806.126 +END:DAYLIGHT
 806.127 +BEGIN:DAYLIGHT
 806.128 +TZOFFSETFROM:-0500
 806.129 +TZOFFSETTO:-0500
 806.130 +TZNAME:CPT
 806.131 +DTSTART:19450814T180000
 806.132 +RDATE:19450814T180000
 806.133 +END:DAYLIGHT
 806.134 +BEGIN:STANDARD
 806.135 +TZOFFSETFROM:-0600
 806.136 +TZOFFSETTO:-0600
 806.137 +TZNAME:CST
 806.138 +DTSTART:19460101T000000
 806.139 +RDATE:19460101T000000
 806.140 +END:STANDARD
 806.141 +BEGIN:STANDARD
 806.142 +TZOFFSETFROM:-0600
 806.143 +TZOFFSETTO:-0500
 806.144 +TZNAME:EST
 806.145 +DTSTART:19690427T020000
 806.146 +RDATE:19690427T020000
 806.147 +END:STANDARD
 806.148 +BEGIN:DAYLIGHT
 806.149 +TZOFFSETFROM:-0500
 806.150 +TZOFFSETTO:-0500
 806.151 +TZNAME:CDT
 806.152 +DTSTART:19730429T020000
 806.153 +RDATE:19730429T020000
 806.154 +END:DAYLIGHT
 806.155 +END:VTIMEZONE
 806.156 +END:VCALENDAR
   807.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   807.2 +++ b/src/zoneinfo/America/Merida.ics	Tue Feb 10 18:12:00 2015 +0100
   807.3 @@ -0,0 +1,62 @@
   807.4 +BEGIN:VCALENDAR
   807.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   807.6 +VERSION:2.0
   807.7 +BEGIN:VTIMEZONE
   807.8 +TZID:America/Merida
   807.9 +TZURL:http://tzurl.org/zoneinfo/America/Merida
  807.10 +X-LIC-LOCATION:America/Merida
  807.11 +BEGIN:DAYLIGHT
  807.12 +TZOFFSETFROM:-0600
  807.13 +TZOFFSETTO:-0500
  807.14 +TZNAME:CDT
  807.15 +DTSTART:20020407T020000
  807.16 +RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU
  807.17 +END:DAYLIGHT
  807.18 +BEGIN:STANDARD
  807.19 +TZOFFSETFROM:-0500
  807.20 +TZOFFSETTO:-0600
  807.21 +TZNAME:CST
  807.22 +DTSTART:20021027T020000
  807.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  807.24 +END:STANDARD
  807.25 +BEGIN:STANDARD
  807.26 +TZOFFSETFROM:-055828
  807.27 +TZOFFSETTO:-0600
  807.28 +TZNAME:CST
  807.29 +DTSTART:19220101T000132
  807.30 +RDATE:19220101T000132
  807.31 +END:STANDARD
  807.32 +BEGIN:STANDARD
  807.33 +TZOFFSETFROM:-0600
  807.34 +TZOFFSETTO:-0500
  807.35 +TZNAME:EST
  807.36 +DTSTART:19811223T000000
  807.37 +RDATE:19811223T000000
  807.38 +END:STANDARD
  807.39 +BEGIN:STANDARD
  807.40 +TZOFFSETFROM:-0500
  807.41 +TZOFFSETTO:-0600
  807.42 +TZNAME:CST
  807.43 +DTSTART:19821202T000000
  807.44 +RDATE:19821202T000000
  807.45 +RDATE:19961027T020000
  807.46 +RDATE:19971026T020000
  807.47 +RDATE:19981025T020000
  807.48 +RDATE:19991031T020000
  807.49 +RDATE:20001029T020000
  807.50 +RDATE:20010930T020000
  807.51 +END:STANDARD
  807.52 +BEGIN:DAYLIGHT
  807.53 +TZOFFSETFROM:-0600
  807.54 +TZOFFSETTO:-0500
  807.55 +TZNAME:CDT
  807.56 +DTSTART:19960407T020000
  807.57 +RDATE:19960407T020000
  807.58 +RDATE:19970406T020000
  807.59 +RDATE:19980405T020000
  807.60 +RDATE:19990404T020000
  807.61 +RDATE:20000402T020000
  807.62 +RDATE:20010506T020000
  807.63 +END:DAYLIGHT
  807.64 +END:VTIMEZONE
  807.65 +END:VCALENDAR
   808.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   808.2 +++ b/src/zoneinfo/America/Metlakatla.ics	Tue Feb 10 18:12:00 2015 +0100
   808.3 @@ -0,0 +1,95 @@
   808.4 +BEGIN:VCALENDAR
   808.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   808.6 +VERSION:2.0
   808.7 +BEGIN:VTIMEZONE
   808.8 +TZID:America/Metlakatla
   808.9 +TZURL:http://tzurl.org/zoneinfo/America/Metlakatla
  808.10 +X-LIC-LOCATION:America/Metlakatla
  808.11 +BEGIN:STANDARD
  808.12 +TZOFFSETFROM:+151342
  808.13 +TZOFFSETTO:-084618
  808.14 +TZNAME:LMT
  808.15 +DTSTART:18671018T000000
  808.16 +RDATE:18671018T000000
  808.17 +END:STANDARD
  808.18 +BEGIN:STANDARD
  808.19 +TZOFFSETFROM:-084618
  808.20 +TZOFFSETTO:-0800
  808.21 +TZNAME:PST
  808.22 +DTSTART:19000820T120000
  808.23 +RDATE:19000820T120000
  808.24 +END:STANDARD
  808.25 +BEGIN:STANDARD
  808.26 +TZOFFSETFROM:-0800
  808.27 +TZOFFSETTO:-0800
  808.28 +TZNAME:PST
  808.29 +DTSTART:19420101T000000
  808.30 +RDATE:19420101T000000
  808.31 +RDATE:19460101T000000
  808.32 +RDATE:19690101T000000
  808.33 +END:STANDARD
  808.34 +BEGIN:DAYLIGHT
  808.35 +TZOFFSETFROM:-0800
  808.36 +TZOFFSETTO:-0700
  808.37 +TZNAME:PWT
  808.38 +DTSTART:19420209T020000
  808.39 +RDATE:19420209T020000
  808.40 +END:DAYLIGHT
  808.41 +BEGIN:DAYLIGHT
  808.42 +TZOFFSETFROM:-0700
  808.43 +TZOFFSETTO:-0700
  808.44 +TZNAME:PPT
  808.45 +DTSTART:19450814T160000
  808.46 +RDATE:19450814T160000
  808.47 +END:DAYLIGHT
  808.48 +BEGIN:STANDARD
  808.49 +TZOFFSETFROM:-0700
  808.50 +TZOFFSETTO:-0800
  808.51 +TZNAME:PST
  808.52 +DTSTART:19450930T020000
  808.53 +RDATE:19450930T020000
  808.54 +RDATE:19691026T020000
  808.55 +RDATE:19701025T020000
  808.56 +RDATE:19711031T020000
  808.57 +RDATE:19721029T020000
  808.58 +RDATE:19731028T020000
  808.59 +RDATE:19741027T020000
  808.60 +RDATE:19751026T020000
  808.61 +RDATE:19761031T020000
  808.62 +RDATE:19771030T020000
  808.63 +RDATE:19781029T020000
  808.64 +RDATE:19791028T020000
  808.65 +RDATE:19801026T020000
  808.66 +RDATE:19811025T020000
  808.67 +RDATE:19821031T020000
  808.68 +END:STANDARD
  808.69 +BEGIN:DAYLIGHT
  808.70 +TZOFFSETFROM:-0800
  808.71 +TZOFFSETTO:-0700
  808.72 +TZNAME:PDT
  808.73 +DTSTART:19690427T020000
  808.74 +RDATE:19690427T020000
  808.75 +RDATE:19700426T020000
  808.76 +RDATE:19710425T020000
  808.77 +RDATE:19720430T020000
  808.78 +RDATE:19730429T020000
  808.79 +RDATE:19740106T020000
  808.80 +RDATE:19750223T020000
  808.81 +RDATE:19760425T020000
  808.82 +RDATE:19770424T020000
  808.83 +RDATE:19780430T020000
  808.84 +RDATE:19790429T020000
  808.85 +RDATE:19800427T020000
  808.86 +RDATE:19810426T020000
  808.87 +RDATE:19820425T020000
  808.88 +RDATE:19830424T020000
  808.89 +END:DAYLIGHT
  808.90 +BEGIN:STANDARD
  808.91 +TZOFFSETFROM:-0700
  808.92 +TZOFFSETTO:-0800
  808.93 +TZNAME:MeST
  808.94 +DTSTART:19831030T020000
  808.95 +RDATE:19831030T020000
  808.96 +END:STANDARD
  808.97 +END:VTIMEZONE
  808.98 +END:VCALENDAR
   809.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   809.2 +++ b/src/zoneinfo/America/Mexico_City.ics	Tue Feb 10 18:12:00 2015 +0100
   809.3 @@ -0,0 +1,92 @@
   809.4 +BEGIN:VCALENDAR
   809.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   809.6 +VERSION:2.0
   809.7 +BEGIN:VTIMEZONE
   809.8 +TZID:America/Mexico_City
   809.9 +TZURL:http://tzurl.org/zoneinfo/America/Mexico_City
  809.10 +X-LIC-LOCATION:America/Mexico_City
  809.11 +BEGIN:DAYLIGHT
  809.12 +TZOFFSETFROM:-0600
  809.13 +TZOFFSETTO:-0500
  809.14 +TZNAME:CDT
  809.15 +DTSTART:20020407T020000
  809.16 +RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU
  809.17 +END:DAYLIGHT
  809.18 +BEGIN:STANDARD
  809.19 +TZOFFSETFROM:-0500
  809.20 +TZOFFSETTO:-0600
  809.21 +TZNAME:CST
  809.22 +DTSTART:20021027T020000
  809.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  809.24 +END:STANDARD
  809.25 +BEGIN:STANDARD
  809.26 +TZOFFSETFROM:-063636
  809.27 +TZOFFSETTO:-0700
  809.28 +TZNAME:MST
  809.29 +DTSTART:19220101T002324
  809.30 +RDATE:19220101T002324
  809.31 +END:STANDARD
  809.32 +BEGIN:STANDARD
  809.33 +TZOFFSETFROM:-0700
  809.34 +TZOFFSETTO:-0600
  809.35 +TZNAME:CST
  809.36 +DTSTART:19270610T230000
  809.37 +RDATE:19270610T230000
  809.38 +RDATE:19310501T230000
  809.39 +RDATE:19320401T000000
  809.40 +END:STANDARD
  809.41 +BEGIN:STANDARD
  809.42 +TZOFFSETFROM:-0600
  809.43 +TZOFFSETTO:-0700
  809.44 +TZNAME:MST
  809.45 +DTSTART:19301115T000000
  809.46 +RDATE:19301115T000000
  809.47 +RDATE:19311001T000000
  809.48 +END:STANDARD
  809.49 +BEGIN:DAYLIGHT
  809.50 +TZOFFSETFROM:-0600
  809.51 +TZOFFSETTO:-0500
  809.52 +TZNAME:CDT
  809.53 +DTSTART:19390205T000000
  809.54 +RDATE:19390205T000000
  809.55 +RDATE:19401209T000000
  809.56 +RDATE:19500212T000000
  809.57 +RDATE:19960407T020000
  809.58 +RDATE:19970406T020000
  809.59 +RDATE:19980405T020000
  809.60 +RDATE:19990404T020000
  809.61 +RDATE:20000402T020000
  809.62 +RDATE:20010506T020000
  809.63 +END:DAYLIGHT
  809.64 +BEGIN:STANDARD
  809.65 +TZOFFSETFROM:-0500
  809.66 +TZOFFSETTO:-0600
  809.67 +TZNAME:CST
  809.68 +DTSTART:19390625T000000
  809.69 +RDATE:19390625T000000
  809.70 +RDATE:19410401T000000
  809.71 +RDATE:19440501T000000
  809.72 +RDATE:19500730T000000
  809.73 +RDATE:19961027T020000
  809.74 +RDATE:19971026T020000
  809.75 +RDATE:19981025T020000
  809.76 +RDATE:19991031T020000
  809.77 +RDATE:20001029T020000
  809.78 +RDATE:20010930T020000
  809.79 +END:STANDARD
  809.80 +BEGIN:DAYLIGHT
  809.81 +TZOFFSETFROM:-0600
  809.82 +TZOFFSETTO:-0500
  809.83 +TZNAME:CWT
  809.84 +DTSTART:19431216T000000
  809.85 +RDATE:19431216T000000
  809.86 +END:DAYLIGHT
  809.87 +BEGIN:STANDARD
  809.88 +TZOFFSETFROM:-0600
  809.89 +TZOFFSETTO:-0600
  809.90 +TZNAME:CST
  809.91 +DTSTART:20020220T000000
  809.92 +RDATE:20020220T000000
  809.93 +END:STANDARD
  809.94 +END:VTIMEZONE
  809.95 +END:VCALENDAR
   810.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   810.2 +++ b/src/zoneinfo/America/Miquelon.ics	Tue Feb 10 18:12:00 2015 +0100
   810.3 @@ -0,0 +1,96 @@
   810.4 +BEGIN:VCALENDAR
   810.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   810.6 +VERSION:2.0
   810.7 +BEGIN:VTIMEZONE
   810.8 +TZID:America/Miquelon
   810.9 +TZURL:http://tzurl.org/zoneinfo/America/Miquelon
  810.10 +X-LIC-LOCATION:America/Miquelon
  810.11 +BEGIN:DAYLIGHT
  810.12 +TZOFFSETFROM:-0300
  810.13 +TZOFFSETTO:-0200
  810.14 +TZNAME:PMDT
  810.15 +DTSTART:20070311T020000
  810.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  810.17 +END:DAYLIGHT
  810.18 +BEGIN:STANDARD
  810.19 +TZOFFSETFROM:-0200
  810.20 +TZOFFSETTO:-0300
  810.21 +TZNAME:PMST
  810.22 +DTSTART:20071104T020000
  810.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  810.24 +END:STANDARD
  810.25 +BEGIN:STANDARD
  810.26 +TZOFFSETFROM:-034440
  810.27 +TZOFFSETTO:-0400
  810.28 +TZNAME:AST
  810.29 +DTSTART:19110515T000000
  810.30 +RDATE:19110515T000000
  810.31 +END:STANDARD
  810.32 +BEGIN:STANDARD
  810.33 +TZOFFSETFROM:-0400
  810.34 +TZOFFSETTO:-0300
  810.35 +TZNAME:PMST
  810.36 +DTSTART:19800501T000000
  810.37 +RDATE:19800501T000000
  810.38 +END:STANDARD
  810.39 +BEGIN:STANDARD
  810.40 +TZOFFSETFROM:-0300
  810.41 +TZOFFSETTO:-0300
  810.42 +TZNAME:PMST
  810.43 +DTSTART:19870101T000000
  810.44 +RDATE:19870101T000000
  810.45 +END:STANDARD
  810.46 +BEGIN:DAYLIGHT
  810.47 +TZOFFSETFROM:-0300
  810.48 +TZOFFSETTO:-0200
  810.49 +TZNAME:PMDT
  810.50 +DTSTART:19870405T020000
  810.51 +RDATE:19870405T020000
  810.52 +RDATE:19880403T020000
  810.53 +RDATE:19890402T020000
  810.54 +RDATE:19900401T020000
  810.55 +RDATE:19910407T020000
  810.56 +RDATE:19920405T020000
  810.57 +RDATE:19930404T020000
  810.58 +RDATE:19940403T020000
  810.59 +RDATE:19950402T020000
  810.60 +RDATE:19960407T020000
  810.61 +RDATE:19970406T020000
  810.62 +RDATE:19980405T020000
  810.63 +RDATE:19990404T020000
  810.64 +RDATE:20000402T020000
  810.65 +RDATE:20010401T020000
  810.66 +RDATE:20020407T020000
  810.67 +RDATE:20030406T020000
  810.68 +RDATE:20040404T020000
  810.69 +RDATE:20050403T020000
  810.70 +RDATE:20060402T020000
  810.71 +END:DAYLIGHT
  810.72 +BEGIN:STANDARD
  810.73 +TZOFFSETFROM:-0200
  810.74 +TZOFFSETTO:-0300
  810.75 +TZNAME:PMST
  810.76 +DTSTART:19871025T020000
  810.77 +RDATE:19871025T020000
  810.78 +RDATE:19881030T020000
  810.79 +RDATE:19891029T020000
  810.80 +RDATE:19901028T020000
  810.81 +RDATE:19911027T020000
  810.82 +RDATE:19921025T020000
  810.83 +RDATE:19931031T020000
  810.84 +RDATE:19941030T020000
  810.85 +RDATE:19951029T020000
  810.86 +RDATE:19961027T020000
  810.87 +RDATE:19971026T020000
  810.88 +RDATE:19981025T020000
  810.89 +RDATE:19991031T020000
  810.90 +RDATE:20001029T020000
  810.91 +RDATE:20011028T020000
  810.92 +RDATE:20021027T020000
  810.93 +RDATE:20031026T020000
  810.94 +RDATE:20041031T020000
  810.95 +RDATE:20051030T020000
  810.96 +RDATE:20061029T020000
  810.97 +END:STANDARD
  810.98 +END:VTIMEZONE
  810.99 +END:VCALENDAR
   811.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   811.2 +++ b/src/zoneinfo/America/Moncton.ics	Tue Feb 10 18:12:00 2015 +0100
   811.3 @@ -0,0 +1,216 @@
   811.4 +BEGIN:VCALENDAR
   811.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   811.6 +VERSION:2.0
   811.7 +BEGIN:VTIMEZONE
   811.8 +TZID:America/Moncton
   811.9 +TZURL:http://tzurl.org/zoneinfo/America/Moncton
  811.10 +X-LIC-LOCATION:America/Moncton
  811.11 +BEGIN:DAYLIGHT
  811.12 +TZOFFSETFROM:-0400
  811.13 +TZOFFSETTO:-0300
  811.14 +TZNAME:ADT
  811.15 +DTSTART:20070311T020000
  811.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  811.17 +END:DAYLIGHT
  811.18 +BEGIN:STANDARD
  811.19 +TZOFFSETFROM:-0300
  811.20 +TZOFFSETTO:-0400
  811.21 +TZNAME:AST
  811.22 +DTSTART:20071104T020000
  811.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  811.24 +END:STANDARD
  811.25 +BEGIN:STANDARD
  811.26 +TZOFFSETFROM:-041908
  811.27 +TZOFFSETTO:-0500
  811.28 +TZNAME:EST
  811.29 +DTSTART:18831209T000000
  811.30 +RDATE:18831209T000000
  811.31 +END:STANDARD
  811.32 +BEGIN:STANDARD
  811.33 +TZOFFSETFROM:-0500
  811.34 +TZOFFSETTO:-0400
  811.35 +TZNAME:AST
  811.36 +DTSTART:19020615T000000
  811.37 +RDATE:19020615T000000
  811.38 +END:STANDARD
  811.39 +BEGIN:DAYLIGHT
  811.40 +TZOFFSETFROM:-0400
  811.41 +TZOFFSETTO:-0300
  811.42 +TZNAME:ADT
  811.43 +DTSTART:19180414T020000
  811.44 +RDATE:19180414T020000
  811.45 +RDATE:19330611T010000
  811.46 +RDATE:19340610T010000
  811.47 +RDATE:19350609T010000
  811.48 +RDATE:19360607T010000
  811.49 +RDATE:19370606T010000
  811.50 +RDATE:19380605T010000
  811.51 +RDATE:19390527T010000
  811.52 +RDATE:19400519T010000
  811.53 +RDATE:19410504T010000
  811.54 +RDATE:19460428T020000
  811.55 +RDATE:19470427T020000
  811.56 +RDATE:19480425T020000
  811.57 +RDATE:19490424T020000
  811.58 +RDATE:19500430T020000
  811.59 +RDATE:19510429T020000
  811.60 +RDATE:19520427T020000
  811.61 +RDATE:19530426T020000
  811.62 +RDATE:19540425T020000
  811.63 +RDATE:19550424T020000
  811.64 +RDATE:19560429T020000
  811.65 +RDATE:19570428T020000
  811.66 +RDATE:19580427T020000
  811.67 +RDATE:19590426T020000
  811.68 +RDATE:19600424T020000
  811.69 +RDATE:19610430T020000
  811.70 +RDATE:19620429T020000
  811.71 +RDATE:19630428T020000
  811.72 +RDATE:19640426T020000
  811.73 +RDATE:19650425T020000
  811.74 +RDATE:19660424T020000
  811.75 +RDATE:19670430T020000
  811.76 +RDATE:19680428T020000
  811.77 +RDATE:19690427T020000
  811.78 +RDATE:19700426T020000
  811.79 +RDATE:19710425T020000
  811.80 +RDATE:19720430T020000
  811.81 +RDATE:19740428T020000
  811.82 +RDATE:19750427T020000
  811.83 +RDATE:19760425T020000
  811.84 +RDATE:19770424T020000
  811.85 +RDATE:19780430T020000
  811.86 +RDATE:19790429T020000
  811.87 +RDATE:19800427T020000
  811.88 +RDATE:19810426T020000
  811.89 +RDATE:19820425T020000
  811.90 +RDATE:19830424T020000
  811.91 +RDATE:19840429T020000
  811.92 +RDATE:19850428T020000
  811.93 +RDATE:19860427T020000
  811.94 +RDATE:19870405T020000
  811.95 +RDATE:19880403T020000
  811.96 +RDATE:19890402T020000
  811.97 +RDATE:19900401T020000
  811.98 +RDATE:19910407T020000
  811.99 +RDATE:19920405T020000
 811.100 +RDATE:19930404T000100
 811.101 +RDATE:19940403T000100
 811.102 +RDATE:19950402T000100
 811.103 +RDATE:19960407T000100
 811.104 +RDATE:19970406T000100
 811.105 +RDATE:19980405T000100
 811.106 +RDATE:19990404T000100
 811.107 +RDATE:20000402T000100
 811.108 +RDATE:20010401T000100
 811.109 +RDATE:20020407T000100
 811.110 +RDATE:20030406T000100
 811.111 +RDATE:20040404T000100
 811.112 +RDATE:20050403T000100
 811.113 +RDATE:20060402T000100
 811.114 +END:DAYLIGHT
 811.115 +BEGIN:STANDARD
 811.116 +TZOFFSETFROM:-0300
 811.117 +TZOFFSETTO:-0400
 811.118 +TZNAME:AST
 811.119 +DTSTART:19181031T020000
 811.120 +RDATE:19181031T020000
 811.121 +RDATE:19330910T010000
 811.122 +RDATE:19340909T010000
 811.123 +RDATE:19350908T010000
 811.124 +RDATE:19360906T010000
 811.125 +RDATE:19370905T010000
 811.126 +RDATE:19380904T010000
 811.127 +RDATE:19390923T010000
 811.128 +RDATE:19400921T010000
 811.129 +RDATE:19410927T010000
 811.130 +RDATE:19450930T020000
 811.131 +RDATE:19460929T020000
 811.132 +RDATE:19470928T020000
 811.133 +RDATE:19480926T020000
 811.134 +RDATE:19490925T020000
 811.135 +RDATE:19500924T020000
 811.136 +RDATE:19510930T020000
 811.137 +RDATE:19520928T020000
 811.138 +RDATE:19530927T020000
 811.139 +RDATE:19540926T020000
 811.140 +RDATE:19550925T020000
 811.141 +RDATE:19560930T020000
 811.142 +RDATE:19571027T020000
 811.143 +RDATE:19581026T020000
 811.144 +RDATE:19591025T020000
 811.145 +RDATE:19601030T020000
 811.146 +RDATE:19611029T020000
 811.147 +RDATE:19621028T020000
 811.148 +RDATE:19631027T020000
 811.149 +RDATE:19641025T020000
 811.150 +RDATE:19651031T020000
 811.151 +RDATE:19661030T020000
 811.152 +RDATE:19671029T020000
 811.153 +RDATE:19681027T020000
 811.154 +RDATE:19691026T020000
 811.155 +RDATE:19701025T020000
 811.156 +RDATE:19711031T020000
 811.157 +RDATE:19721029T020000
 811.158 +RDATE:19741027T020000
 811.159 +RDATE:19751026T020000
 811.160 +RDATE:19761031T020000
 811.161 +RDATE:19771030T020000
 811.162 +RDATE:19781029T020000
 811.163 +RDATE:19791028T020000
 811.164 +RDATE:19801026T020000
 811.165 +RDATE:19811025T020000
 811.166 +RDATE:19821031T020000
 811.167 +RDATE:19831030T020000
 811.168 +RDATE:19841028T020000
 811.169 +RDATE:19851027T020000
 811.170 +RDATE:19861026T020000
 811.171 +RDATE:19871025T020000
 811.172 +RDATE:19881030T020000
 811.173 +RDATE:19891029T020000
 811.174 +RDATE:19901028T020000
 811.175 +RDATE:19911027T020000
 811.176 +RDATE:19921025T020000
 811.177 +RDATE:19931031T000100
 811.178 +RDATE:19941030T000100
 811.179 +RDATE:19951029T000100
 811.180 +RDATE:19961027T000100
 811.181 +RDATE:19971026T000100
 811.182 +RDATE:19981025T000100
 811.183 +RDATE:19991031T000100
 811.184 +RDATE:20001029T000100
 811.185 +RDATE:20011028T000100
 811.186 +RDATE:20021027T000100
 811.187 +RDATE:20031026T000100
 811.188 +RDATE:20041031T000100
 811.189 +RDATE:20051030T000100
 811.190 +RDATE:20061029T000100
 811.191 +END:STANDARD
 811.192 +BEGIN:STANDARD
 811.193 +TZOFFSETFROM:-0400
 811.194 +TZOFFSETTO:-0400
 811.195 +TZNAME:AST
 811.196 +DTSTART:19330101T000000
 811.197 +RDATE:19330101T000000
 811.198 +RDATE:19420101T000000
 811.199 +RDATE:19460101T000000
 811.200 +RDATE:19730101T000000
 811.201 +RDATE:19930101T000000
 811.202 +RDATE:20070101T000000
 811.203 +END:STANDARD
 811.204 +BEGIN:DAYLIGHT
 811.205 +TZOFFSETFROM:-0400
 811.206 +TZOFFSETTO:-0300
 811.207 +TZNAME:AWT
 811.208 +DTSTART:19420209T020000
 811.209 +RDATE:19420209T020000
 811.210 +END:DAYLIGHT
 811.211 +BEGIN:DAYLIGHT
 811.212 +TZOFFSETFROM:-0300
 811.213 +TZOFFSETTO:-0300
 811.214 +TZNAME:APT
 811.215 +DTSTART:19450814T200000
 811.216 +RDATE:19450814T200000
 811.217 +END:DAYLIGHT
 811.218 +END:VTIMEZONE
 811.219 +END:VCALENDAR
   812.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   812.2 +++ b/src/zoneinfo/America/Monterrey.ics	Tue Feb 10 18:12:00 2015 +0100
   812.3 @@ -0,0 +1,64 @@
   812.4 +BEGIN:VCALENDAR
   812.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   812.6 +VERSION:2.0
   812.7 +BEGIN:VTIMEZONE
   812.8 +TZID:America/Monterrey
   812.9 +TZURL:http://tzurl.org/zoneinfo/America/Monterrey
  812.10 +X-LIC-LOCATION:America/Monterrey
  812.11 +BEGIN:DAYLIGHT
  812.12 +TZOFFSETFROM:-0600
  812.13 +TZOFFSETTO:-0500
  812.14 +TZNAME:CDT
  812.15 +DTSTART:20020407T020000
  812.16 +RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU
  812.17 +END:DAYLIGHT
  812.18 +BEGIN:STANDARD
  812.19 +TZOFFSETFROM:-0500
  812.20 +TZOFFSETTO:-0600
  812.21 +TZNAME:CST
  812.22 +DTSTART:20021027T020000
  812.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  812.24 +END:STANDARD
  812.25 +BEGIN:STANDARD
  812.26 +TZOFFSETFROM:-064116
  812.27 +TZOFFSETTO:-0600
  812.28 +TZNAME:CST
  812.29 +DTSTART:19211231T231844
  812.30 +RDATE:19211231T231844
  812.31 +END:STANDARD
  812.32 +BEGIN:STANDARD
  812.33 +TZOFFSETFROM:-0600
  812.34 +TZOFFSETTO:-0600
  812.35 +TZNAME:CST
  812.36 +DTSTART:19880101T000000
  812.37 +RDATE:19880101T000000
  812.38 +RDATE:19890101T000000
  812.39 +END:STANDARD
  812.40 +BEGIN:DAYLIGHT
  812.41 +TZOFFSETFROM:-0600
  812.42 +TZOFFSETTO:-0500
  812.43 +TZNAME:CDT
  812.44 +DTSTART:19880403T020000
  812.45 +RDATE:19880403T020000
  812.46 +RDATE:19960407T020000
  812.47 +RDATE:19970406T020000
  812.48 +RDATE:19980405T020000
  812.49 +RDATE:19990404T020000
  812.50 +RDATE:20000402T020000
  812.51 +RDATE:20010506T020000
  812.52 +END:DAYLIGHT
  812.53 +BEGIN:STANDARD
  812.54 +TZOFFSETFROM:-0500
  812.55 +TZOFFSETTO:-0600
  812.56 +TZNAME:CST
  812.57 +DTSTART:19881030T020000
  812.58 +RDATE:19881030T020000
  812.59 +RDATE:19961027T020000
  812.60 +RDATE:19971026T020000
  812.61 +RDATE:19981025T020000
  812.62 +RDATE:19991031T020000
  812.63 +RDATE:20001029T020000
  812.64 +RDATE:20010930T020000
  812.65 +END:STANDARD
  812.66 +END:VTIMEZONE
  812.67 +END:VCALENDAR
   813.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   813.2 +++ b/src/zoneinfo/America/Montevideo.ics	Tue Feb 10 18:12:00 2015 +0100
   813.3 @@ -0,0 +1,152 @@
   813.4 +BEGIN:VCALENDAR
   813.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   813.6 +VERSION:2.0
   813.7 +BEGIN:VTIMEZONE
   813.8 +TZID:America/Montevideo
   813.9 +TZURL:http://tzurl.org/zoneinfo/America/Montevideo
  813.10 +X-LIC-LOCATION:America/Montevideo
  813.11 +BEGIN:DAYLIGHT
  813.12 +TZOFFSETFROM:-0300
  813.13 +TZOFFSETTO:-0200
  813.14 +TZNAME:UYST
  813.15 +DTSTART:20061001T020000
  813.16 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU
  813.17 +END:DAYLIGHT
  813.18 +BEGIN:STANDARD
  813.19 +TZOFFSETFROM:-0200
  813.20 +TZOFFSETTO:-0300
  813.21 +TZNAME:UYT
  813.22 +DTSTART:20070311T020000
  813.23 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  813.24 +END:STANDARD
  813.25 +BEGIN:STANDARD
  813.26 +TZOFFSETFROM:-034444
  813.27 +TZOFFSETTO:-034444
  813.28 +TZNAME:MMT
  813.29 +DTSTART:18980628T000000
  813.30 +RDATE:18980628T000000
  813.31 +END:STANDARD
  813.32 +BEGIN:STANDARD
  813.33 +TZOFFSETFROM:-034444
  813.34 +TZOFFSETTO:-0330
  813.35 +TZNAME:UYT
  813.36 +DTSTART:19200501T000000
  813.37 +RDATE:19200501T000000
  813.38 +END:STANDARD
  813.39 +BEGIN:DAYLIGHT
  813.40 +TZOFFSETFROM:-0330
  813.41 +TZOFFSETTO:-0300
  813.42 +TZNAME:UYHST
  813.43 +DTSTART:19231002T000000
  813.44 +RDATE:19231002T000000
  813.45 +RDATE:19241001T000000
  813.46 +RDATE:19251001T000000
  813.47 +RDATE:19331029T000000
  813.48 +RDATE:19341028T000000
  813.49 +RDATE:19351027T000000
  813.50 +RDATE:19361101T000000
  813.51 +RDATE:19371031T000000
  813.52 +RDATE:19381030T000000
  813.53 +RDATE:19391029T000000
  813.54 +RDATE:19401027T000000
  813.55 +RDATE:19410801T000000
  813.56 +END:DAYLIGHT
  813.57 +BEGIN:STANDARD
  813.58 +TZOFFSETFROM:-0300
  813.59 +TZOFFSETTO:-0330
  813.60 +TZNAME:UYT
  813.61 +DTSTART:19240401T000000
  813.62 +RDATE:19240401T000000
  813.63 +RDATE:19250401T000000
  813.64 +RDATE:19260401T000000
  813.65 +RDATE:19340401T000000
  813.66 +RDATE:19350331T000000
  813.67 +RDATE:19360329T000000
  813.68 +RDATE:19370328T000000
  813.69 +RDATE:19380327T000000
  813.70 +RDATE:19390326T000000
  813.71 +RDATE:19400331T000000
  813.72 +RDATE:19410330T000000
  813.73 +RDATE:19420101T000000
  813.74 +END:STANDARD
  813.75 +BEGIN:DAYLIGHT
  813.76 +TZOFFSETFROM:-0330
  813.77 +TZOFFSETTO:-0200
  813.78 +TZNAME:UYST
  813.79 +DTSTART:19421214T000000
  813.80 +RDATE:19421214T000000
  813.81 +END:DAYLIGHT
  813.82 +BEGIN:STANDARD
  813.83 +TZOFFSETFROM:-0200
  813.84 +TZOFFSETTO:-0300
  813.85 +TZNAME:UYT
  813.86 +DTSTART:19430314T000000
  813.87 +RDATE:19430314T000000
  813.88 +RDATE:19591115T000000
  813.89 +RDATE:19600306T000000
  813.90 +RDATE:19650926T000000
  813.91 +RDATE:19661031T000000
  813.92 +RDATE:19671031T000000
  813.93 +RDATE:19720815T000000
  813.94 +RDATE:19761001T000000
  813.95 +RDATE:19780401T000000
  813.96 +RDATE:19800501T000000
  813.97 +RDATE:19880314T000000
  813.98 +RDATE:19890312T000000
  813.99 +RDATE:19900304T000000
 813.100 +RDATE:19910303T000000
 813.101 +RDATE:19920301T000000
 813.102 +RDATE:19930228T000000
 813.103 +RDATE:20050327T020000
 813.104 +RDATE:20060312T020000
 813.105 +END:STANDARD
 813.106 +BEGIN:DAYLIGHT
 813.107 +TZOFFSETFROM:-0300
 813.108 +TZOFFSETTO:-0200
 813.109 +TZNAME:UYST
 813.110 +DTSTART:19590524T000000
 813.111 +RDATE:19590524T000000
 813.112 +RDATE:19600117T000000
 813.113 +RDATE:19650404T000000
 813.114 +RDATE:19660403T000000
 813.115 +RDATE:19670402T000000
 813.116 +RDATE:19720424T000000
 813.117 +RDATE:19771204T000000
 813.118 +RDATE:19791001T000000
 813.119 +RDATE:19871214T000000
 813.120 +RDATE:19881211T000000
 813.121 +RDATE:19891029T000000
 813.122 +RDATE:19901021T000000
 813.123 +RDATE:19911027T000000
 813.124 +RDATE:19921018T000000
 813.125 +RDATE:20040919T000000
 813.126 +RDATE:20051009T020000
 813.127 +END:DAYLIGHT
 813.128 +BEGIN:DAYLIGHT
 813.129 +TZOFFSETFROM:-0300
 813.130 +TZOFFSETTO:-0230
 813.131 +TZNAME:UYHST
 813.132 +DTSTART:19680527T000000
 813.133 +RDATE:19680527T000000
 813.134 +RDATE:19690527T000000
 813.135 +RDATE:19700527T000000
 813.136 +RDATE:19740310T000000
 813.137 +END:DAYLIGHT
 813.138 +BEGIN:STANDARD
 813.139 +TZOFFSETFROM:-0230
 813.140 +TZOFFSETTO:-0300
 813.141 +TZNAME:UYT
 813.142 +DTSTART:19681202T000000
 813.143 +RDATE:19681202T000000
 813.144 +RDATE:19691202T000000
 813.145 +RDATE:19701202T000000
 813.146 +END:STANDARD
 813.147 +BEGIN:DAYLIGHT
 813.148 +TZOFFSETFROM:-0230
 813.149 +TZOFFSETTO:-0200
 813.150 +TZNAME:UYST
 813.151 +DTSTART:19741222T000000
 813.152 +RDATE:19741222T000000
 813.153 +END:DAYLIGHT
 813.154 +END:VTIMEZONE
 813.155 +END:VCALENDAR
   814.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   814.2 +++ b/src/zoneinfo/America/Montreal.ics	Tue Feb 10 18:12:00 2015 +0100
   814.3 @@ -0,0 +1,234 @@
   814.4 +BEGIN:VCALENDAR
   814.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   814.6 +VERSION:2.0
   814.7 +BEGIN:VTIMEZONE
   814.8 +TZID:America/Montreal
   814.9 +TZURL:http://tzurl.org/zoneinfo/America/Montreal
  814.10 +X-LIC-LOCATION:America/Montreal
  814.11 +BEGIN:DAYLIGHT
  814.12 +TZOFFSETFROM:-0500
  814.13 +TZOFFSETTO:-0400
  814.14 +TZNAME:EDT
  814.15 +DTSTART:20070311T020000
  814.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  814.17 +END:DAYLIGHT
  814.18 +BEGIN:STANDARD
  814.19 +TZOFFSETFROM:-0400
  814.20 +TZOFFSETTO:-0500
  814.21 +TZNAME:EST
  814.22 +DTSTART:20071104T020000
  814.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  814.24 +END:STANDARD
  814.25 +BEGIN:STANDARD
  814.26 +TZOFFSETFROM:-045416
  814.27 +TZOFFSETTO:-0500
  814.28 +TZNAME:EST
  814.29 +DTSTART:18840101T000000
  814.30 +RDATE:18840101T000000
  814.31 +END:STANDARD
  814.32 +BEGIN:DAYLIGHT
  814.33 +TZOFFSETFROM:-0500
  814.34 +TZOFFSETTO:-0400
  814.35 +TZNAME:EDT
  814.36 +DTSTART:19170325T020000
  814.37 +RDATE:19170325T020000
  814.38 +RDATE:19180414T020000
  814.39 +RDATE:19190331T023000
  814.40 +RDATE:19200502T023000
  814.41 +RDATE:19210501T020000
  814.42 +RDATE:19220430T020000
  814.43 +RDATE:19240517T020000
  814.44 +RDATE:19250503T020000
  814.45 +RDATE:19260502T020000
  814.46 +RDATE:19270501T000000
  814.47 +RDATE:19280429T000000
  814.48 +RDATE:19290428T000000
  814.49 +RDATE:19300427T000000
  814.50 +RDATE:19310426T000000
  814.51 +RDATE:19320501T000000
  814.52 +RDATE:19330430T000000
  814.53 +RDATE:19340429T000000
  814.54 +RDATE:19350428T000000
  814.55 +RDATE:19360426T000000
  814.56 +RDATE:19370425T000000
  814.57 +RDATE:19380424T000000
  814.58 +RDATE:19390430T000000
  814.59 +RDATE:19400428T000000
  814.60 +RDATE:19460428T020000
  814.61 +RDATE:19470427T020000
  814.62 +RDATE:19480425T020000
  814.63 +RDATE:19490424T020000
  814.64 +RDATE:19500430T020000
  814.65 +RDATE:19510429T020000
  814.66 +RDATE:19520427T020000
  814.67 +RDATE:19530426T020000
  814.68 +RDATE:19540425T020000
  814.69 +RDATE:19550424T020000
  814.70 +RDATE:19560429T020000
  814.71 +RDATE:19570428T020000
  814.72 +RDATE:19580427T020000
  814.73 +RDATE:19590426T020000
  814.74 +RDATE:19600424T020000
  814.75 +RDATE:19610430T020000
  814.76 +RDATE:19620429T020000
  814.77 +RDATE:19630428T020000
  814.78 +RDATE:19640426T020000
  814.79 +RDATE:19650425T020000
  814.80 +RDATE:19660424T020000
  814.81 +RDATE:19670430T020000
  814.82 +RDATE:19680428T020000
  814.83 +RDATE:19690427T020000
  814.84 +RDATE:19700426T020000
  814.85 +RDATE:19710425T020000
  814.86 +RDATE:19720430T020000
  814.87 +RDATE:19730429T020000
  814.88 +RDATE:19740428T020000
  814.89 +RDATE:19750427T020000
  814.90 +RDATE:19760425T020000
  814.91 +RDATE:19770424T020000
  814.92 +RDATE:19780430T020000
  814.93 +RDATE:19790429T020000
  814.94 +RDATE:19800427T020000
  814.95 +RDATE:19810426T020000
  814.96 +RDATE:19820425T020000
  814.97 +RDATE:19830424T020000
  814.98 +RDATE:19840429T020000
  814.99 +RDATE:19850428T020000
 814.100 +RDATE:19860427T020000
 814.101 +RDATE:19870405T020000
 814.102 +RDATE:19880403T020000
 814.103 +RDATE:19890402T020000
 814.104 +RDATE:19900401T020000
 814.105 +RDATE:19910407T020000
 814.106 +RDATE:19920405T020000
 814.107 +RDATE:19930404T020000
 814.108 +RDATE:19940403T020000
 814.109 +RDATE:19950402T020000
 814.110 +RDATE:19960407T020000
 814.111 +RDATE:19970406T020000
 814.112 +RDATE:19980405T020000
 814.113 +RDATE:19990404T020000
 814.114 +RDATE:20000402T020000
 814.115 +RDATE:20010401T020000
 814.116 +RDATE:20020407T020000
 814.117 +RDATE:20030406T020000
 814.118 +RDATE:20040404T020000
 814.119 +RDATE:20050403T020000
 814.120 +RDATE:20060402T020000
 814.121 +END:DAYLIGHT
 814.122 +BEGIN:STANDARD
 814.123 +TZOFFSETFROM:-0400
 814.124 +TZOFFSETTO:-0500
 814.125 +TZNAME:EST
 814.126 +DTSTART:19170424T000000
 814.127 +RDATE:19170424T000000
 814.128 +RDATE:19181031T020000
 814.129 +RDATE:19191025T023000
 814.130 +RDATE:19201003T023000
 814.131 +RDATE:19211002T023000
 814.132 +RDATE:19221001T023000
 814.133 +RDATE:19240928T023000
 814.134 +RDATE:19250927T023000
 814.135 +RDATE:19260926T023000
 814.136 +RDATE:19270925T000000
 814.137 +RDATE:19280930T000000
 814.138 +RDATE:19290929T000000
 814.139 +RDATE:19300928T000000
 814.140 +RDATE:19310927T000000
 814.141 +RDATE:19320925T000000
 814.142 +RDATE:19331001T000000
 814.143 +RDATE:19340930T000000
 814.144 +RDATE:19350929T000000
 814.145 +RDATE:19360927T000000
 814.146 +RDATE:19370926T000000
 814.147 +RDATE:19380925T000000
 814.148 +RDATE:19390924T000000
 814.149 +RDATE:19450930T020000
 814.150 +RDATE:19460929T020000
 814.151 +RDATE:19470928T020000
 814.152 +RDATE:19480926T020000
 814.153 +RDATE:19491030T020000
 814.154 +RDATE:19501029T020000
 814.155 +RDATE:19510930T020000
 814.156 +RDATE:19520928T020000
 814.157 +RDATE:19530927T020000
 814.158 +RDATE:19540926T020000
 814.159 +RDATE:19550925T020000
 814.160 +RDATE:19560930T020000
 814.161 +RDATE:19571027T020000
 814.162 +RDATE:19581026T020000
 814.163 +RDATE:19591025T020000
 814.164 +RDATE:19601030T020000
 814.165 +RDATE:19611029T020000
 814.166 +RDATE:19621028T020000
 814.167 +RDATE:19631027T020000
 814.168 +RDATE:19641025T020000
 814.169 +RDATE:19651031T020000
 814.170 +RDATE:19661030T020000
 814.171 +RDATE:19671029T020000
 814.172 +RDATE:19681027T020000
 814.173 +RDATE:19691026T020000
 814.174 +RDATE:19701025T020000
 814.175 +RDATE:19711031T020000
 814.176 +RDATE:19721029T020000
 814.177 +RDATE:19731028T020000
 814.178 +RDATE:19741027T020000
 814.179 +RDATE:19751026T020000
 814.180 +RDATE:19761031T020000
 814.181 +RDATE:19771030T020000
 814.182 +RDATE:19781029T020000
 814.183 +RDATE:19791028T020000
 814.184 +RDATE:19801026T020000
 814.185 +RDATE:19811025T020000
 814.186 +RDATE:19821031T020000
 814.187 +RDATE:19831030T020000
 814.188 +RDATE:19841028T020000
 814.189 +RDATE:19851027T020000
 814.190 +RDATE:19861026T020000
 814.191 +RDATE:19871025T020000
 814.192 +RDATE:19881030T020000
 814.193 +RDATE:19891029T020000
 814.194 +RDATE:19901028T020000
 814.195 +RDATE:19911027T020000
 814.196 +RDATE:19921025T020000
 814.197 +RDATE:19931031T020000
 814.198 +RDATE:19941030T020000
 814.199 +RDATE:19951029T020000
 814.200 +RDATE:19961027T020000
 814.201 +RDATE:19971026T020000
 814.202 +RDATE:19981025T020000
 814.203 +RDATE:19991031T020000
 814.204 +RDATE:20001029T020000
 814.205 +RDATE:20011028T020000
 814.206 +RDATE:20021027T020000
 814.207 +RDATE:20031026T020000
 814.208 +RDATE:20041031T020000
 814.209 +RDATE:20051030T020000
 814.210 +RDATE:20061029T020000
 814.211 +END:STANDARD
 814.212 +BEGIN:STANDARD
 814.213 +TZOFFSETFROM:-0500
 814.214 +TZOFFSETTO:-0500
 814.215 +TZNAME:EST
 814.216 +DTSTART:19180101T000000
 814.217 +RDATE:19180101T000000
 814.218 +RDATE:19190101T000000
 814.219 +RDATE:19460101T000000
 814.220 +RDATE:19740101T000000
 814.221 +END:STANDARD
 814.222 +BEGIN:DAYLIGHT
 814.223 +TZOFFSETFROM:-0400
 814.224 +TZOFFSETTO:-0400
 814.225 +TZNAME:EWT
 814.226 +DTSTART:19420209T020000
 814.227 +RDATE:19420209T020000
 814.228 +END:DAYLIGHT
 814.229 +BEGIN:DAYLIGHT
 814.230 +TZOFFSETFROM:-0400
 814.231 +TZOFFSETTO:-0400
 814.232 +TZNAME:EPT
 814.233 +DTSTART:19450814T190000
 814.234 +RDATE:19450814T190000
 814.235 +END:DAYLIGHT
 814.236 +END:VTIMEZONE
 814.237 +END:VCALENDAR
   815.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   815.2 +++ b/src/zoneinfo/America/Montserrat.ics	Tue Feb 10 18:12:00 2015 +0100
   815.3 @@ -0,0 +1,16 @@
   815.4 +BEGIN:VCALENDAR
   815.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   815.6 +VERSION:2.0
   815.7 +BEGIN:VTIMEZONE
   815.8 +TZID:America/Montserrat
   815.9 +TZURL:http://tzurl.org/zoneinfo/America/Montserrat
  815.10 +X-LIC-LOCATION:America/Montserrat
  815.11 +BEGIN:STANDARD
  815.12 +TZOFFSETFROM:-040852
  815.13 +TZOFFSETTO:-0400
  815.14 +TZNAME:AST
  815.15 +DTSTART:19110701T000100
  815.16 +RDATE:19110701T000100
  815.17 +END:STANDARD
  815.18 +END:VTIMEZONE
  815.19 +END:VCALENDAR
   816.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   816.2 +++ b/src/zoneinfo/America/Nassau.ics	Tue Feb 10 18:12:00 2015 +0100
   816.3 @@ -0,0 +1,135 @@
   816.4 +BEGIN:VCALENDAR
   816.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   816.6 +VERSION:2.0
   816.7 +BEGIN:VTIMEZONE
   816.8 +TZID:America/Nassau
   816.9 +TZURL:http://tzurl.org/zoneinfo/America/Nassau
  816.10 +X-LIC-LOCATION:America/Nassau
  816.11 +BEGIN:DAYLIGHT
  816.12 +TZOFFSETFROM:-0500
  816.13 +TZOFFSETTO:-0400
  816.14 +TZNAME:EDT
  816.15 +DTSTART:20070311T020000
  816.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  816.17 +END:DAYLIGHT
  816.18 +BEGIN:STANDARD
  816.19 +TZOFFSETFROM:-0400
  816.20 +TZOFFSETTO:-0500
  816.21 +TZNAME:EST
  816.22 +DTSTART:20071104T020000
  816.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  816.24 +END:STANDARD
  816.25 +BEGIN:STANDARD
  816.26 +TZOFFSETFROM:-050924
  816.27 +TZOFFSETTO:-0500
  816.28 +TZNAME:EST
  816.29 +DTSTART:19120302T000000
  816.30 +RDATE:19120302T000000
  816.31 +END:STANDARD
  816.32 +BEGIN:DAYLIGHT
  816.33 +TZOFFSETFROM:-0500
  816.34 +TZOFFSETTO:-0400
  816.35 +TZNAME:EDT
  816.36 +DTSTART:19640426T020000
  816.37 +RDATE:19640426T020000
  816.38 +RDATE:19650425T020000
  816.39 +RDATE:19660424T020000
  816.40 +RDATE:19670430T020000
  816.41 +RDATE:19680428T020000
  816.42 +RDATE:19690427T020000
  816.43 +RDATE:19700426T020000
  816.44 +RDATE:19710425T020000
  816.45 +RDATE:19720430T020000
  816.46 +RDATE:19730429T020000
  816.47 +RDATE:19740428T020000
  816.48 +RDATE:19750427T020000
  816.49 +RDATE:19760425T020000
  816.50 +RDATE:19770424T020000
  816.51 +RDATE:19780430T020000
  816.52 +RDATE:19790429T020000
  816.53 +RDATE:19800427T020000
  816.54 +RDATE:19810426T020000
  816.55 +RDATE:19820425T020000
  816.56 +RDATE:19830424T020000
  816.57 +RDATE:19840429T020000
  816.58 +RDATE:19850428T020000
  816.59 +RDATE:19860427T020000
  816.60 +RDATE:19870405T020000
  816.61 +RDATE:19880403T020000
  816.62 +RDATE:19890402T020000
  816.63 +RDATE:19900401T020000
  816.64 +RDATE:19910407T020000
  816.65 +RDATE:19920405T020000
  816.66 +RDATE:19930404T020000
  816.67 +RDATE:19940403T020000
  816.68 +RDATE:19950402T020000
  816.69 +RDATE:19960407T020000
  816.70 +RDATE:19970406T020000
  816.71 +RDATE:19980405T020000
  816.72 +RDATE:19990404T020000
  816.73 +RDATE:20000402T020000
  816.74 +RDATE:20010401T020000
  816.75 +RDATE:20020407T020000
  816.76 +RDATE:20030406T020000
  816.77 +RDATE:20040404T020000
  816.78 +RDATE:20050403T020000
  816.79 +RDATE:20060402T020000
  816.80 +END:DAYLIGHT
  816.81 +BEGIN:STANDARD
  816.82 +TZOFFSETFROM:-0400
  816.83 +TZOFFSETTO:-0500
  816.84 +TZNAME:EST
  816.85 +DTSTART:19641025T020000
  816.86 +RDATE:19641025T020000
  816.87 +RDATE:19651031T020000
  816.88 +RDATE:19661030T020000
  816.89 +RDATE:19671029T020000
  816.90 +RDATE:19681027T020000
  816.91 +RDATE:19691026T020000
  816.92 +RDATE:19701025T020000
  816.93 +RDATE:19711031T020000
  816.94 +RDATE:19721029T020000
  816.95 +RDATE:19731028T020000
  816.96 +RDATE:19741027T020000
  816.97 +RDATE:19751026T020000
  816.98 +RDATE:19761031T020000
  816.99 +RDATE:19771030T020000
 816.100 +RDATE:19781029T020000
 816.101 +RDATE:19791028T020000
 816.102 +RDATE:19801026T020000
 816.103 +RDATE:19811025T020000
 816.104 +RDATE:19821031T020000
 816.105 +RDATE:19831030T020000
 816.106 +RDATE:19841028T020000
 816.107 +RDATE:19851027T020000
 816.108 +RDATE:19861026T020000
 816.109 +RDATE:19871025T020000
 816.110 +RDATE:19881030T020000
 816.111 +RDATE:19891029T020000
 816.112 +RDATE:19901028T020000
 816.113 +RDATE:19911027T020000
 816.114 +RDATE:19921025T020000
 816.115 +RDATE:19931031T020000
 816.116 +RDATE:19941030T020000
 816.117 +RDATE:19951029T020000
 816.118 +RDATE:19961027T020000
 816.119 +RDATE:19971026T020000
 816.120 +RDATE:19981025T020000
 816.121 +RDATE:19991031T020000
 816.122 +RDATE:20001029T020000
 816.123 +RDATE:20011028T020000
 816.124 +RDATE:20021027T020000
 816.125 +RDATE:20031026T020000
 816.126 +RDATE:20041031T020000
 816.127 +RDATE:20051030T020000
 816.128 +RDATE:20061029T020000
 816.129 +END:STANDARD
 816.130 +BEGIN:STANDARD
 816.131 +TZOFFSETFROM:-0500
 816.132 +TZOFFSETTO:-0500
 816.133 +TZNAME:EST
 816.134 +DTSTART:19760101T000000
 816.135 +RDATE:19760101T000000
 816.136 +END:STANDARD
 816.137 +END:VTIMEZONE
 816.138 +END:VCALENDAR
   817.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   817.2 +++ b/src/zoneinfo/America/New_York.ics	Tue Feb 10 18:12:00 2015 +0100
   817.3 @@ -0,0 +1,237 @@
   817.4 +BEGIN:VCALENDAR
   817.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   817.6 +VERSION:2.0
   817.7 +BEGIN:VTIMEZONE
   817.8 +TZID:America/New_York
   817.9 +TZURL:http://tzurl.org/zoneinfo/America/New_York
  817.10 +X-LIC-LOCATION:America/New_York
  817.11 +BEGIN:DAYLIGHT
  817.12 +TZOFFSETFROM:-0500
  817.13 +TZOFFSETTO:-0400
  817.14 +TZNAME:EDT
  817.15 +DTSTART:20070311T020000
  817.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  817.17 +END:DAYLIGHT
  817.18 +BEGIN:STANDARD
  817.19 +TZOFFSETFROM:-0400
  817.20 +TZOFFSETTO:-0500
  817.21 +TZNAME:EST
  817.22 +DTSTART:20071104T020000
  817.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  817.24 +END:STANDARD
  817.25 +BEGIN:STANDARD
  817.26 +TZOFFSETFROM:-045602
  817.27 +TZOFFSETTO:-0500
  817.28 +TZNAME:EST
  817.29 +DTSTART:18831118T120358
  817.30 +RDATE:18831118T120358
  817.31 +END:STANDARD
  817.32 +BEGIN:DAYLIGHT
  817.33 +TZOFFSETFROM:-0500
  817.34 +TZOFFSETTO:-0400
  817.35 +TZNAME:EDT
  817.36 +DTSTART:19180331T020000
  817.37 +RDATE:19180331T020000
  817.38 +RDATE:19190330T020000
  817.39 +RDATE:19200328T020000
  817.40 +RDATE:19210424T020000
  817.41 +RDATE:19220430T020000
  817.42 +RDATE:19230429T020000
  817.43 +RDATE:19240427T020000
  817.44 +RDATE:19250426T020000
  817.45 +RDATE:19260425T020000
  817.46 +RDATE:19270424T020000
  817.47 +RDATE:19280429T020000
  817.48 +RDATE:19290428T020000
  817.49 +RDATE:19300427T020000
  817.50 +RDATE:19310426T020000
  817.51 +RDATE:19320424T020000
  817.52 +RDATE:19330430T020000
  817.53 +RDATE:19340429T020000
  817.54 +RDATE:19350428T020000
  817.55 +RDATE:19360426T020000
  817.56 +RDATE:19370425T020000
  817.57 +RDATE:19380424T020000
  817.58 +RDATE:19390430T020000
  817.59 +RDATE:19400428T020000
  817.60 +RDATE:19410427T020000
  817.61 +RDATE:19460428T020000
  817.62 +RDATE:19470427T020000
  817.63 +RDATE:19480425T020000
  817.64 +RDATE:19490424T020000
  817.65 +RDATE:19500430T020000
  817.66 +RDATE:19510429T020000
  817.67 +RDATE:19520427T020000
  817.68 +RDATE:19530426T020000
  817.69 +RDATE:19540425T020000
  817.70 +RDATE:19550424T020000
  817.71 +RDATE:19560429T020000
  817.72 +RDATE:19570428T020000
  817.73 +RDATE:19580427T020000
  817.74 +RDATE:19590426T020000
  817.75 +RDATE:19600424T020000
  817.76 +RDATE:19610430T020000
  817.77 +RDATE:19620429T020000
  817.78 +RDATE:19630428T020000
  817.79 +RDATE:19640426T020000
  817.80 +RDATE:19650425T020000
  817.81 +RDATE:19660424T020000
  817.82 +RDATE:19670430T020000
  817.83 +RDATE:19680428T020000
  817.84 +RDATE:19690427T020000
  817.85 +RDATE:19700426T020000
  817.86 +RDATE:19710425T020000
  817.87 +RDATE:19720430T020000
  817.88 +RDATE:19730429T020000
  817.89 +RDATE:19740106T020000
  817.90 +RDATE:19750223T020000
  817.91 +RDATE:19760425T020000
  817.92 +RDATE:19770424T020000
  817.93 +RDATE:19780430T020000
  817.94 +RDATE:19790429T020000
  817.95 +RDATE:19800427T020000
  817.96 +RDATE:19810426T020000
  817.97 +RDATE:19820425T020000
  817.98 +RDATE:19830424T020000
  817.99 +RDATE:19840429T020000
 817.100 +RDATE:19850428T020000
 817.101 +RDATE:19860427T020000
 817.102 +RDATE:19870405T020000
 817.103 +RDATE:19880403T020000
 817.104 +RDATE:19890402T020000
 817.105 +RDATE:19900401T020000
 817.106 +RDATE:19910407T020000
 817.107 +RDATE:19920405T020000
 817.108 +RDATE:19930404T020000
 817.109 +RDATE:19940403T020000
 817.110 +RDATE:19950402T020000
 817.111 +RDATE:19960407T020000
 817.112 +RDATE:19970406T020000
 817.113 +RDATE:19980405T020000
 817.114 +RDATE:19990404T020000
 817.115 +RDATE:20000402T020000
 817.116 +RDATE:20010401T020000
 817.117 +RDATE:20020407T020000
 817.118 +RDATE:20030406T020000
 817.119 +RDATE:20040404T020000
 817.120 +RDATE:20050403T020000
 817.121 +RDATE:20060402T020000
 817.122 +END:DAYLIGHT
 817.123 +BEGIN:STANDARD
 817.124 +TZOFFSETFROM:-0400
 817.125 +TZOFFSETTO:-0500
 817.126 +TZNAME:EST
 817.127 +DTSTART:19181027T020000
 817.128 +RDATE:19181027T020000
 817.129 +RDATE:19191026T020000
 817.130 +RDATE:19201031T020000
 817.131 +RDATE:19210925T020000
 817.132 +RDATE:19220924T020000
 817.133 +RDATE:19230930T020000
 817.134 +RDATE:19240928T020000
 817.135 +RDATE:19250927T020000
 817.136 +RDATE:19260926T020000
 817.137 +RDATE:19270925T020000
 817.138 +RDATE:19280930T020000
 817.139 +RDATE:19290929T020000
 817.140 +RDATE:19300928T020000
 817.141 +RDATE:19310927T020000
 817.142 +RDATE:19320925T020000
 817.143 +RDATE:19330924T020000
 817.144 +RDATE:19340930T020000
 817.145 +RDATE:19350929T020000
 817.146 +RDATE:19360927T020000
 817.147 +RDATE:19370926T020000
 817.148 +RDATE:19380925T020000
 817.149 +RDATE:19390924T020000
 817.150 +RDATE:19400929T020000
 817.151 +RDATE:19410928T020000
 817.152 +RDATE:19450930T020000
 817.153 +RDATE:19460929T020000
 817.154 +RDATE:19470928T020000
 817.155 +RDATE:19480926T020000
 817.156 +RDATE:19490925T020000
 817.157 +RDATE:19500924T020000
 817.158 +RDATE:19510930T020000
 817.159 +RDATE:19520928T020000
 817.160 +RDATE:19530927T020000
 817.161 +RDATE:19540926T020000
 817.162 +RDATE:19551030T020000
 817.163 +RDATE:19561028T020000
 817.164 +RDATE:19571027T020000
 817.165 +RDATE:19581026T020000
 817.166 +RDATE:19591025T020000
 817.167 +RDATE:19601030T020000
 817.168 +RDATE:19611029T020000
 817.169 +RDATE:19621028T020000
 817.170 +RDATE:19631027T020000
 817.171 +RDATE:19641025T020000
 817.172 +RDATE:19651031T020000
 817.173 +RDATE:19661030T020000
 817.174 +RDATE:19671029T020000
 817.175 +RDATE:19681027T020000
 817.176 +RDATE:19691026T020000
 817.177 +RDATE:19701025T020000
 817.178 +RDATE:19711031T020000
 817.179 +RDATE:19721029T020000
 817.180 +RDATE:19731028T020000
 817.181 +RDATE:19741027T020000
 817.182 +RDATE:19751026T020000
 817.183 +RDATE:19761031T020000
 817.184 +RDATE:19771030T020000
 817.185 +RDATE:19781029T020000
 817.186 +RDATE:19791028T020000
 817.187 +RDATE:19801026T020000
 817.188 +RDATE:19811025T020000
 817.189 +RDATE:19821031T020000
 817.190 +RDATE:19831030T020000
 817.191 +RDATE:19841028T020000
 817.192 +RDATE:19851027T020000
 817.193 +RDATE:19861026T020000
 817.194 +RDATE:19871025T020000
 817.195 +RDATE:19881030T020000
 817.196 +RDATE:19891029T020000
 817.197 +RDATE:19901028T020000
 817.198 +RDATE:19911027T020000
 817.199 +RDATE:19921025T020000
 817.200 +RDATE:19931031T020000
 817.201 +RDATE:19941030T020000
 817.202 +RDATE:19951029T020000
 817.203 +RDATE:19961027T020000
 817.204 +RDATE:19971026T020000
 817.205 +RDATE:19981025T020000
 817.206 +RDATE:19991031T020000
 817.207 +RDATE:20001029T020000
 817.208 +RDATE:20011028T020000
 817.209 +RDATE:20021027T020000
 817.210 +RDATE:20031026T020000
 817.211 +RDATE:20041031T020000
 817.212 +RDATE:20051030T020000
 817.213 +RDATE:20061029T020000
 817.214 +END:STANDARD
 817.215 +BEGIN:STANDARD
 817.216 +TZOFFSETFROM:-0500
 817.217 +TZOFFSETTO:-0500
 817.218 +TZNAME:EST
 817.219 +DTSTART:19200101T000000
 817.220 +RDATE:19200101T000000
 817.221 +RDATE:19420101T000000
 817.222 +RDATE:19460101T000000
 817.223 +RDATE:19670101T000000
 817.224 +END:STANDARD
 817.225 +BEGIN:DAYLIGHT
 817.226 +TZOFFSETFROM:-0500
 817.227 +TZOFFSETTO:-0400
 817.228 +TZNAME:EWT
 817.229 +DTSTART:19420209T020000
 817.230 +RDATE:19420209T020000
 817.231 +END:DAYLIGHT
 817.232 +BEGIN:DAYLIGHT
 817.233 +TZOFFSETFROM:-0400
 817.234 +TZOFFSETTO:-0400
 817.235 +TZNAME:EPT
 817.236 +DTSTART:19450814T190000
 817.237 +RDATE:19450814T190000
 817.238 +END:DAYLIGHT
 817.239 +END:VTIMEZONE
 817.240 +END:VCALENDAR
   818.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   818.2 +++ b/src/zoneinfo/America/Nipigon.ics	Tue Feb 10 18:12:00 2015 +0100
   818.3 @@ -0,0 +1,126 @@
   818.4 +BEGIN:VCALENDAR
   818.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   818.6 +VERSION:2.0
   818.7 +BEGIN:VTIMEZONE
   818.8 +TZID:America/Nipigon
   818.9 +TZURL:http://tzurl.org/zoneinfo/America/Nipigon
  818.10 +X-LIC-LOCATION:America/Nipigon
  818.11 +BEGIN:DAYLIGHT
  818.12 +TZOFFSETFROM:-0500
  818.13 +TZOFFSETTO:-0400
  818.14 +TZNAME:EDT
  818.15 +DTSTART:20070311T020000
  818.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  818.17 +END:DAYLIGHT
  818.18 +BEGIN:STANDARD
  818.19 +TZOFFSETFROM:-0400
  818.20 +TZOFFSETTO:-0500
  818.21 +TZNAME:EST
  818.22 +DTSTART:20071104T020000
  818.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  818.24 +END:STANDARD
  818.25 +BEGIN:STANDARD
  818.26 +TZOFFSETFROM:-055304
  818.27 +TZOFFSETTO:-0500
  818.28 +TZNAME:EST
  818.29 +DTSTART:18950101T000000
  818.30 +RDATE:18950101T000000
  818.31 +END:STANDARD
  818.32 +BEGIN:DAYLIGHT
  818.33 +TZOFFSETFROM:-0500
  818.34 +TZOFFSETTO:-0400
  818.35 +TZNAME:EDT
  818.36 +DTSTART:19180414T020000
  818.37 +RDATE:19180414T020000
  818.38 +RDATE:19400929T000000
  818.39 +RDATE:19740428T020000
  818.40 +RDATE:19750427T020000
  818.41 +RDATE:19760425T020000
  818.42 +RDATE:19770424T020000
  818.43 +RDATE:19780430T020000
  818.44 +RDATE:19790429T020000
  818.45 +RDATE:19800427T020000
  818.46 +RDATE:19810426T020000
  818.47 +RDATE:19820425T020000
  818.48 +RDATE:19830424T020000
  818.49 +RDATE:19840429T020000
  818.50 +RDATE:19850428T020000
  818.51 +RDATE:19860427T020000
  818.52 +RDATE:19870405T020000
  818.53 +RDATE:19880403T020000
  818.54 +RDATE:19890402T020000
  818.55 +RDATE:19900401T020000
  818.56 +RDATE:19910407T020000
  818.57 +RDATE:19920405T020000
  818.58 +RDATE:19930404T020000
  818.59 +RDATE:19940403T020000
  818.60 +RDATE:19950402T020000
  818.61 +RDATE:19960407T020000
  818.62 +RDATE:19970406T020000
  818.63 +RDATE:19980405T020000
  818.64 +RDATE:19990404T020000
  818.65 +RDATE:20000402T020000
  818.66 +RDATE:20010401T020000
  818.67 +RDATE:20020407T020000
  818.68 +RDATE:20030406T020000
  818.69 +RDATE:20040404T020000
  818.70 +RDATE:20050403T020000
  818.71 +RDATE:20060402T020000
  818.72 +END:DAYLIGHT
  818.73 +BEGIN:STANDARD
  818.74 +TZOFFSETFROM:-0400
  818.75 +TZOFFSETTO:-0500
  818.76 +TZNAME:EST
  818.77 +DTSTART:19181031T020000
  818.78 +RDATE:19181031T020000
  818.79 +RDATE:19450930T020000
  818.80 +RDATE:19741027T020000
  818.81 +RDATE:19751026T020000
  818.82 +RDATE:19761031T020000
  818.83 +RDATE:19771030T020000
  818.84 +RDATE:19781029T020000
  818.85 +RDATE:19791028T020000
  818.86 +RDATE:19801026T020000
  818.87 +RDATE:19811025T020000
  818.88 +RDATE:19821031T020000
  818.89 +RDATE:19831030T020000
  818.90 +RDATE:19841028T020000
  818.91 +RDATE:19851027T020000
  818.92 +RDATE:19861026T020000
  818.93 +RDATE:19871025T020000
  818.94 +RDATE:19881030T020000
  818.95 +RDATE:19891029T020000
  818.96 +RDATE:19901028T020000
  818.97 +RDATE:19911027T020000
  818.98 +RDATE:19921025T020000
  818.99 +RDATE:19931031T020000
 818.100 +RDATE:19941030T020000
 818.101 +RDATE:19951029T020000
 818.102 +RDATE:19961027T020000
 818.103 +RDATE:19971026T020000
 818.104 +RDATE:19981025T020000
 818.105 +RDATE:19991031T020000
 818.106 +RDATE:20001029T020000
 818.107 +RDATE:20011028T020000
 818.108 +RDATE:20021027T020000
 818.109 +RDATE:20031026T020000
 818.110 +RDATE:20041031T020000
 818.111 +RDATE:20051030T020000
 818.112 +RDATE:20061029T020000
 818.113 +END:STANDARD
 818.114 +BEGIN:DAYLIGHT
 818.115 +TZOFFSETFROM:-0400
 818.116 +TZOFFSETTO:-0400
 818.117 +TZNAME:EWT
 818.118 +DTSTART:19420209T020000
 818.119 +RDATE:19420209T020000
 818.120 +END:DAYLIGHT
 818.121 +BEGIN:DAYLIGHT
 818.122 +TZOFFSETFROM:-0400
 818.123 +TZOFFSETTO:-0400
 818.124 +TZNAME:EPT
 818.125 +DTSTART:19450814T190000
 818.126 +RDATE:19450814T190000
 818.127 +END:DAYLIGHT
 818.128 +END:VTIMEZONE
 818.129 +END:VCALENDAR
   819.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   819.2 +++ b/src/zoneinfo/America/Nome.ics	Tue Feb 10 18:12:00 2015 +0100
   819.3 @@ -0,0 +1,187 @@
   819.4 +BEGIN:VCALENDAR
   819.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   819.6 +VERSION:2.0
   819.7 +BEGIN:VTIMEZONE
   819.8 +TZID:America/Nome
   819.9 +TZURL:http://tzurl.org/zoneinfo/America/Nome
  819.10 +X-LIC-LOCATION:America/Nome
  819.11 +BEGIN:DAYLIGHT
  819.12 +TZOFFSETFROM:-0900
  819.13 +TZOFFSETTO:-0800
  819.14 +TZNAME:AKDT
  819.15 +DTSTART:20070311T020000
  819.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  819.17 +END:DAYLIGHT
  819.18 +BEGIN:STANDARD
  819.19 +TZOFFSETFROM:-0800
  819.20 +TZOFFSETTO:-0900
  819.21 +TZNAME:AKST
  819.22 +DTSTART:20071104T020000
  819.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  819.24 +END:STANDARD
  819.25 +BEGIN:STANDARD
  819.26 +TZOFFSETFROM:+125821
  819.27 +TZOFFSETTO:-110138
  819.28 +TZNAME:LMT
  819.29 +DTSTART:18671018T000000
  819.30 +RDATE:18671018T000000
  819.31 +END:STANDARD
  819.32 +BEGIN:STANDARD
  819.33 +TZOFFSETFROM:-110138
  819.34 +TZOFFSETTO:-1100
  819.35 +TZNAME:NST
  819.36 +DTSTART:19000820T120000
  819.37 +RDATE:19000820T120000
  819.38 +END:STANDARD
  819.39 +BEGIN:STANDARD
  819.40 +TZOFFSETFROM:-1100
  819.41 +TZOFFSETTO:-1100
  819.42 +TZNAME:NST
  819.43 +DTSTART:19420101T000000
  819.44 +RDATE:19420101T000000
  819.45 +RDATE:19460101T000000
  819.46 +END:STANDARD
  819.47 +BEGIN:DAYLIGHT
  819.48 +TZOFFSETFROM:-1100
  819.49 +TZOFFSETTO:-1000
  819.50 +TZNAME:NWT
  819.51 +DTSTART:19420209T020000
  819.52 +RDATE:19420209T020000
  819.53 +END:DAYLIGHT
  819.54 +BEGIN:DAYLIGHT
  819.55 +TZOFFSETFROM:-1000
  819.56 +TZOFFSETTO:-1000
  819.57 +TZNAME:NPT
  819.58 +DTSTART:19450814T130000
  819.59 +RDATE:19450814T130000
  819.60 +END:DAYLIGHT
  819.61 +BEGIN:STANDARD
  819.62 +TZOFFSETFROM:-1000
  819.63 +TZOFFSETTO:-1100
  819.64 +TZNAME:NST
  819.65 +DTSTART:19450930T020000
  819.66 +RDATE:19450930T020000
  819.67 +END:STANDARD
  819.68 +BEGIN:STANDARD
  819.69 +TZOFFSETFROM:-1100
  819.70 +TZOFFSETTO:-1100
  819.71 +TZNAME:BST
  819.72 +DTSTART:19670401T000000
  819.73 +RDATE:19670401T000000
  819.74 +RDATE:19690101T000000
  819.75 +END:STANDARD
  819.76 +BEGIN:DAYLIGHT
  819.77 +TZOFFSETFROM:-1100
  819.78 +TZOFFSETTO:-1000
  819.79 +TZNAME:BDT
  819.80 +DTSTART:19690427T020000
  819.81 +RDATE:19690427T020000
  819.82 +RDATE:19700426T020000
  819.83 +RDATE:19710425T020000
  819.84 +RDATE:19720430T020000
  819.85 +RDATE:19730429T020000
  819.86 +RDATE:19740106T020000
  819.87 +RDATE:19750223T020000
  819.88 +RDATE:19760425T020000
  819.89 +RDATE:19770424T020000
  819.90 +RDATE:19780430T020000
  819.91 +RDATE:19790429T020000
  819.92 +RDATE:19800427T020000
  819.93 +RDATE:19810426T020000
  819.94 +RDATE:19820425T020000
  819.95 +RDATE:19830424T020000
  819.96 +END:DAYLIGHT
  819.97 +BEGIN:STANDARD
  819.98 +TZOFFSETFROM:-1000
  819.99 +TZOFFSETTO:-1100
 819.100 +TZNAME:BST
 819.101 +DTSTART:19691026T020000
 819.102 +RDATE:19691026T020000
 819.103 +RDATE:19701025T020000
 819.104 +RDATE:19711031T020000
 819.105 +RDATE:19721029T020000
 819.106 +RDATE:19731028T020000
 819.107 +RDATE:19741027T020000
 819.108 +RDATE:19751026T020000
 819.109 +RDATE:19761031T020000
 819.110 +RDATE:19771030T020000
 819.111 +RDATE:19781029T020000
 819.112 +RDATE:19791028T020000
 819.113 +RDATE:19801026T020000
 819.114 +RDATE:19811025T020000
 819.115 +RDATE:19821031T020000
 819.116 +END:STANDARD
 819.117 +BEGIN:STANDARD
 819.118 +TZOFFSETFROM:-1000
 819.119 +TZOFFSETTO:-0900
 819.120 +TZNAME:YST
 819.121 +DTSTART:19831030T020000
 819.122 +RDATE:19831030T020000
 819.123 +END:STANDARD
 819.124 +BEGIN:STANDARD
 819.125 +TZOFFSETFROM:-0900
 819.126 +TZOFFSETTO:-0900
 819.127 +TZNAME:AKST
 819.128 +DTSTART:19831130T000000
 819.129 +RDATE:19831130T000000
 819.130 +END:STANDARD
 819.131 +BEGIN:DAYLIGHT
 819.132 +TZOFFSETFROM:-0900
 819.133 +TZOFFSETTO:-0800
 819.134 +TZNAME:AKDT
 819.135 +DTSTART:19840429T020000
 819.136 +RDATE:19840429T020000
 819.137 +RDATE:19850428T020000
 819.138 +RDATE:19860427T020000
 819.139 +RDATE:19870405T020000
 819.140 +RDATE:19880403T020000
 819.141 +RDATE:19890402T020000
 819.142 +RDATE:19900401T020000
 819.143 +RDATE:19910407T020000
 819.144 +RDATE:19920405T020000
 819.145 +RDATE:19930404T020000
 819.146 +RDATE:19940403T020000
 819.147 +RDATE:19950402T020000
 819.148 +RDATE:19960407T020000
 819.149 +RDATE:19970406T020000
 819.150 +RDATE:19980405T020000
 819.151 +RDATE:19990404T020000
 819.152 +RDATE:20000402T020000
 819.153 +RDATE:20010401T020000
 819.154 +RDATE:20020407T020000
 819.155 +RDATE:20030406T020000
 819.156 +RDATE:20040404T020000
 819.157 +RDATE:20050403T020000
 819.158 +RDATE:20060402T020000
 819.159 +END:DAYLIGHT
 819.160 +BEGIN:STANDARD
 819.161 +TZOFFSETFROM:-0800
 819.162 +TZOFFSETTO:-0900
 819.163 +TZNAME:AKST
 819.164 +DTSTART:19841028T020000
 819.165 +RDATE:19841028T020000
 819.166 +RDATE:19851027T020000
 819.167 +RDATE:19861026T020000
 819.168 +RDATE:19871025T020000
 819.169 +RDATE:19881030T020000
 819.170 +RDATE:19891029T020000
 819.171 +RDATE:19901028T020000
 819.172 +RDATE:19911027T020000
 819.173 +RDATE:19921025T020000
 819.174 +RDATE:19931031T020000
 819.175 +RDATE:19941030T020000
 819.176 +RDATE:19951029T020000
 819.177 +RDATE:19961027T020000
 819.178 +RDATE:19971026T020000
 819.179 +RDATE:19981025T020000
 819.180 +RDATE:19991031T020000
 819.181 +RDATE:20001029T020000
 819.182 +RDATE:20011028T020000
 819.183 +RDATE:20021027T020000
 819.184 +RDATE:20031026T020000
 819.185 +RDATE:20041031T020000
 819.186 +RDATE:20051030T020000
 819.187 +RDATE:20061029T020000
 819.188 +END:STANDARD
 819.189 +END:VTIMEZONE
 819.190 +END:VCALENDAR
   820.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   820.2 +++ b/src/zoneinfo/America/Noronha.ics	Tue Feb 10 18:12:00 2015 +0100
   820.3 @@ -0,0 +1,76 @@
   820.4 +BEGIN:VCALENDAR
   820.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   820.6 +VERSION:2.0
   820.7 +BEGIN:VTIMEZONE
   820.8 +TZID:America/Noronha
   820.9 +TZURL:http://tzurl.org/zoneinfo/America/Noronha
  820.10 +X-LIC-LOCATION:America/Noronha
  820.11 +BEGIN:STANDARD
  820.12 +TZOFFSETFROM:-020940
  820.13 +TZOFFSETTO:-0200
  820.14 +TZNAME:FNT
  820.15 +DTSTART:19140101T000000
  820.16 +RDATE:19140101T000000
  820.17 +END:STANDARD
  820.18 +BEGIN:DAYLIGHT
  820.19 +TZOFFSETFROM:-0200
  820.20 +TZOFFSETTO:-0100
  820.21 +TZNAME:FNST
  820.22 +DTSTART:19311003T110000
  820.23 +RDATE:19311003T110000
  820.24 +RDATE:19321003T000000
  820.25 +RDATE:19491201T000000
  820.26 +RDATE:19501201T000000
  820.27 +RDATE:19511201T000000
  820.28 +RDATE:19521201T000000
  820.29 +RDATE:19631209T000000
  820.30 +RDATE:19650131T000000
  820.31 +RDATE:19651201T000000
  820.32 +RDATE:19661101T000000
  820.33 +RDATE:19671101T000000
  820.34 +RDATE:19851102T000000
  820.35 +RDATE:19861025T000000
  820.36 +RDATE:19871025T000000
  820.37 +RDATE:19881016T000000
  820.38 +RDATE:19891015T000000
  820.39 +RDATE:19991003T000000
  820.40 +RDATE:20001008T000000
  820.41 +RDATE:20011014T000000
  820.42 +END:DAYLIGHT
  820.43 +BEGIN:STANDARD
  820.44 +TZOFFSETFROM:-0100
  820.45 +TZOFFSETTO:-0200
  820.46 +TZNAME:FNT
  820.47 +DTSTART:19320401T000000
  820.48 +RDATE:19320401T000000
  820.49 +RDATE:19330401T000000
  820.50 +RDATE:19500416T010000
  820.51 +RDATE:19510401T000000
  820.52 +RDATE:19520401T000000
  820.53 +RDATE:19530301T000000
  820.54 +RDATE:19640301T000000
  820.55 +RDATE:19650331T000000
  820.56 +RDATE:19660301T000000
  820.57 +RDATE:19670301T000000
  820.58 +RDATE:19680301T000000
  820.59 +RDATE:19860315T000000
  820.60 +RDATE:19870214T000000
  820.61 +RDATE:19880207T000000
  820.62 +RDATE:19890129T000000
  820.63 +RDATE:19900211T000000
  820.64 +RDATE:20000227T000000
  820.65 +RDATE:20001015T000000
  820.66 +RDATE:20020217T000000
  820.67 +END:STANDARD
  820.68 +BEGIN:STANDARD
  820.69 +TZOFFSETFROM:-0200
  820.70 +TZOFFSETTO:-0200
  820.71 +TZNAME:FNT
  820.72 +DTSTART:19900917T000000
  820.73 +RDATE:19900917T000000
  820.74 +RDATE:19990930T000000
  820.75 +RDATE:20010913T000000
  820.76 +RDATE:20021001T000000
  820.77 +END:STANDARD
  820.78 +END:VTIMEZONE
  820.79 +END:VCALENDAR
   821.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   821.2 +++ b/src/zoneinfo/America/North_Dakota/Beulah.ics	Tue Feb 10 18:12:00 2015 +0100
   821.3 @@ -0,0 +1,155 @@
   821.4 +BEGIN:VCALENDAR
   821.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   821.6 +VERSION:2.0
   821.7 +BEGIN:VTIMEZONE
   821.8 +TZID:America/North_Dakota/Beulah
   821.9 +TZURL:http://tzurl.org/zoneinfo/America/North_Dakota/Beulah
  821.10 +X-LIC-LOCATION:America/North_Dakota/Beulah
  821.11 +BEGIN:DAYLIGHT
  821.12 +TZOFFSETFROM:-0600
  821.13 +TZOFFSETTO:-0500
  821.14 +TZNAME:CDT
  821.15 +DTSTART:20110313T020000
  821.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  821.17 +END:DAYLIGHT
  821.18 +BEGIN:STANDARD
  821.19 +TZOFFSETFROM:-0500
  821.20 +TZOFFSETTO:-0600
  821.21 +TZNAME:CST
  821.22 +DTSTART:20111106T020000
  821.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  821.24 +END:STANDARD
  821.25 +BEGIN:STANDARD
  821.26 +TZOFFSETFROM:-064707
  821.27 +TZOFFSETTO:-0700
  821.28 +TZNAME:MST
  821.29 +DTSTART:18831118T121253
  821.30 +RDATE:18831118T121253
  821.31 +END:STANDARD
  821.32 +BEGIN:DAYLIGHT
  821.33 +TZOFFSETFROM:-0700
  821.34 +TZOFFSETTO:-0600
  821.35 +TZNAME:MDT
  821.36 +DTSTART:19180331T020000
  821.37 +RDATE:19180331T020000
  821.38 +RDATE:19190330T020000
  821.39 +RDATE:19670430T020000
  821.40 +RDATE:19680428T020000
  821.41 +RDATE:19690427T020000
  821.42 +RDATE:19700426T020000
  821.43 +RDATE:19710425T020000
  821.44 +RDATE:19720430T020000
  821.45 +RDATE:19730429T020000
  821.46 +RDATE:19740106T020000
  821.47 +RDATE:19750223T020000
  821.48 +RDATE:19760425T020000
  821.49 +RDATE:19770424T020000
  821.50 +RDATE:19780430T020000
  821.51 +RDATE:19790429T020000
  821.52 +RDATE:19800427T020000
  821.53 +RDATE:19810426T020000
  821.54 +RDATE:19820425T020000
  821.55 +RDATE:19830424T020000
  821.56 +RDATE:19840429T020000
  821.57 +RDATE:19850428T020000
  821.58 +RDATE:19860427T020000
  821.59 +RDATE:19870405T020000
  821.60 +RDATE:19880403T020000
  821.61 +RDATE:19890402T020000
  821.62 +RDATE:19900401T020000
  821.63 +RDATE:19910407T020000
  821.64 +RDATE:19920405T020000
  821.65 +RDATE:19930404T020000
  821.66 +RDATE:19940403T020000
  821.67 +RDATE:19950402T020000
  821.68 +RDATE:19960407T020000
  821.69 +RDATE:19970406T020000
  821.70 +RDATE:19980405T020000
  821.71 +RDATE:19990404T020000
  821.72 +RDATE:20000402T020000
  821.73 +RDATE:20010401T020000
  821.74 +RDATE:20020407T020000
  821.75 +RDATE:20030406T020000
  821.76 +RDATE:20040404T020000
  821.77 +RDATE:20050403T020000
  821.78 +RDATE:20060402T020000
  821.79 +RDATE:20070311T020000
  821.80 +RDATE:20080309T020000
  821.81 +RDATE:20090308T020000
  821.82 +RDATE:20100314T020000
  821.83 +END:DAYLIGHT
  821.84 +BEGIN:STANDARD
  821.85 +TZOFFSETFROM:-0600
  821.86 +TZOFFSETTO:-0700
  821.87 +TZNAME:MST
  821.88 +DTSTART:19181027T020000
  821.89 +RDATE:19181027T020000
  821.90 +RDATE:19191026T020000
  821.91 +RDATE:19450930T020000
  821.92 +RDATE:19671029T020000
  821.93 +RDATE:19681027T020000
  821.94 +RDATE:19691026T020000
  821.95 +RDATE:19701025T020000
  821.96 +RDATE:19711031T020000
  821.97 +RDATE:19721029T020000
  821.98 +RDATE:19731028T020000
  821.99 +RDATE:19741027T020000
 821.100 +RDATE:19751026T020000
 821.101 +RDATE:19761031T020000
 821.102 +RDATE:19771030T020000
 821.103 +RDATE:19781029T020000
 821.104 +RDATE:19791028T020000
 821.105 +RDATE:19801026T020000
 821.106 +RDATE:19811025T020000
 821.107 +RDATE:19821031T020000
 821.108 +RDATE:19831030T020000
 821.109 +RDATE:19841028T020000
 821.110 +RDATE:19851027T020000
 821.111 +RDATE:19861026T020000
 821.112 +RDATE:19871025T020000
 821.113 +RDATE:19881030T020000
 821.114 +RDATE:19891029T020000
 821.115 +RDATE:19901028T020000
 821.116 +RDATE:19911027T020000
 821.117 +RDATE:19921025T020000
 821.118 +RDATE:19931031T020000
 821.119 +RDATE:19941030T020000
 821.120 +RDATE:19951029T020000
 821.121 +RDATE:19961027T020000
 821.122 +RDATE:19971026T020000
 821.123 +RDATE:19981025T020000
 821.124 +RDATE:19991031T020000
 821.125 +RDATE:20001029T020000
 821.126 +RDATE:20011028T020000
 821.127 +RDATE:20021027T020000
 821.128 +RDATE:20031026T020000
 821.129 +RDATE:20041031T020000
 821.130 +RDATE:20051030T020000
 821.131 +RDATE:20061029T020000
 821.132 +RDATE:20071104T020000
 821.133 +RDATE:20081102T020000
 821.134 +RDATE:20091101T020000
 821.135 +END:STANDARD
 821.136 +BEGIN:DAYLIGHT
 821.137 +TZOFFSETFROM:-0700
 821.138 +TZOFFSETTO:-0600
 821.139 +TZNAME:MWT
 821.140 +DTSTART:19420209T020000
 821.141 +RDATE:19420209T020000
 821.142 +END:DAYLIGHT
 821.143 +BEGIN:DAYLIGHT
 821.144 +TZOFFSETFROM:-0600
 821.145 +TZOFFSETTO:-0600
 821.146 +TZNAME:MPT
 821.147 +DTSTART:19450814T170000
 821.148 +RDATE:19450814T170000
 821.149 +END:DAYLIGHT
 821.150 +BEGIN:STANDARD
 821.151 +TZOFFSETFROM:-0600
 821.152 +TZOFFSETTO:-0600
 821.153 +TZNAME:CST
 821.154 +DTSTART:20101107T020000
 821.155 +RDATE:20101107T020000
 821.156 +END:STANDARD
 821.157 +END:VTIMEZONE
 821.158 +END:VCALENDAR
   822.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   822.2 +++ b/src/zoneinfo/America/North_Dakota/Center.ics	Tue Feb 10 18:12:00 2015 +0100
   822.3 @@ -0,0 +1,159 @@
   822.4 +BEGIN:VCALENDAR
   822.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   822.6 +VERSION:2.0
   822.7 +BEGIN:VTIMEZONE
   822.8 +TZID:America/North_Dakota/Center
   822.9 +TZURL:http://tzurl.org/zoneinfo/America/North_Dakota/Center
  822.10 +X-LIC-LOCATION:America/North_Dakota/Center
  822.11 +BEGIN:DAYLIGHT
  822.12 +TZOFFSETFROM:-0600
  822.13 +TZOFFSETTO:-0500
  822.14 +TZNAME:CDT
  822.15 +DTSTART:20070311T020000
  822.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  822.17 +END:DAYLIGHT
  822.18 +BEGIN:STANDARD
  822.19 +TZOFFSETFROM:-0500
  822.20 +TZOFFSETTO:-0600
  822.21 +TZNAME:CST
  822.22 +DTSTART:20071104T020000
  822.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  822.24 +END:STANDARD
  822.25 +BEGIN:STANDARD
  822.26 +TZOFFSETFROM:-064512
  822.27 +TZOFFSETTO:-0700
  822.28 +TZNAME:MST
  822.29 +DTSTART:18831118T121448
  822.30 +RDATE:18831118T121448
  822.31 +END:STANDARD
  822.32 +BEGIN:DAYLIGHT
  822.33 +TZOFFSETFROM:-0700
  822.34 +TZOFFSETTO:-0600
  822.35 +TZNAME:MDT
  822.36 +DTSTART:19180331T020000
  822.37 +RDATE:19180331T020000
  822.38 +RDATE:19190330T020000
  822.39 +RDATE:19670430T020000
  822.40 +RDATE:19680428T020000
  822.41 +RDATE:19690427T020000
  822.42 +RDATE:19700426T020000
  822.43 +RDATE:19710425T020000
  822.44 +RDATE:19720430T020000
  822.45 +RDATE:19730429T020000
  822.46 +RDATE:19740106T020000
  822.47 +RDATE:19750223T020000
  822.48 +RDATE:19760425T020000
  822.49 +RDATE:19770424T020000
  822.50 +RDATE:19780430T020000
  822.51 +RDATE:19790429T020000
  822.52 +RDATE:19800427T020000
  822.53 +RDATE:19810426T020000
  822.54 +RDATE:19820425T020000
  822.55 +RDATE:19830424T020000
  822.56 +RDATE:19840429T020000
  822.57 +RDATE:19850428T020000
  822.58 +RDATE:19860427T020000
  822.59 +RDATE:19870405T020000
  822.60 +RDATE:19880403T020000
  822.61 +RDATE:19890402T020000
  822.62 +RDATE:19900401T020000
  822.63 +RDATE:19910407T020000
  822.64 +RDATE:19920405T020000
  822.65 +END:DAYLIGHT
  822.66 +BEGIN:STANDARD
  822.67 +TZOFFSETFROM:-0600
  822.68 +TZOFFSETTO:-0700
  822.69 +TZNAME:MST
  822.70 +DTSTART:19181027T020000
  822.71 +RDATE:19181027T020000
  822.72 +RDATE:19191026T020000
  822.73 +RDATE:19450930T020000
  822.74 +RDATE:19671029T020000
  822.75 +RDATE:19681027T020000
  822.76 +RDATE:19691026T020000
  822.77 +RDATE:19701025T020000
  822.78 +RDATE:19711031T020000
  822.79 +RDATE:19721029T020000
  822.80 +RDATE:19731028T020000
  822.81 +RDATE:19741027T020000
  822.82 +RDATE:19751026T020000
  822.83 +RDATE:19761031T020000
  822.84 +RDATE:19771030T020000
  822.85 +RDATE:19781029T020000
  822.86 +RDATE:19791028T020000
  822.87 +RDATE:19801026T020000
  822.88 +RDATE:19811025T020000
  822.89 +RDATE:19821031T020000
  822.90 +RDATE:19831030T020000
  822.91 +RDATE:19841028T020000
  822.92 +RDATE:19851027T020000
  822.93 +RDATE:19861026T020000
  822.94 +RDATE:19871025T020000
  822.95 +RDATE:19881030T020000
  822.96 +RDATE:19891029T020000
  822.97 +RDATE:19901028T020000
  822.98 +RDATE:19911027T020000
  822.99 +END:STANDARD
 822.100 +BEGIN:DAYLIGHT
 822.101 +TZOFFSETFROM:-0700
 822.102 +TZOFFSETTO:-0600
 822.103 +TZNAME:MWT
 822.104 +DTSTART:19420209T020000
 822.105 +RDATE:19420209T020000
 822.106 +END:DAYLIGHT
 822.107 +BEGIN:DAYLIGHT
 822.108 +TZOFFSETFROM:-0600
 822.109 +TZOFFSETTO:-0600
 822.110 +TZNAME:MPT
 822.111 +DTSTART:19450814T170000
 822.112 +RDATE:19450814T170000
 822.113 +END:DAYLIGHT
 822.114 +BEGIN:STANDARD
 822.115 +TZOFFSETFROM:-0600
 822.116 +TZOFFSETTO:-0600
 822.117 +TZNAME:CST
 822.118 +DTSTART:19921025T020000
 822.119 +RDATE:19921025T020000
 822.120 +END:STANDARD
 822.121 +BEGIN:DAYLIGHT
 822.122 +TZOFFSETFROM:-0600
 822.123 +TZOFFSETTO:-0500
 822.124 +TZNAME:CDT
 822.125 +DTSTART:19930404T020000
 822.126 +RDATE:19930404T020000
 822.127 +RDATE:19940403T020000
 822.128 +RDATE:19950402T020000
 822.129 +RDATE:19960407T020000
 822.130 +RDATE:19970406T020000
 822.131 +RDATE:19980405T020000
 822.132 +RDATE:19990404T020000
 822.133 +RDATE:20000402T020000
 822.134 +RDATE:20010401T020000
 822.135 +RDATE:20020407T020000
 822.136 +RDATE:20030406T020000
 822.137 +RDATE:20040404T020000
 822.138 +RDATE:20050403T020000
 822.139 +RDATE:20060402T020000
 822.140 +END:DAYLIGHT
 822.141 +BEGIN:STANDARD
 822.142 +TZOFFSETFROM:-0500
 822.143 +TZOFFSETTO:-0600
 822.144 +TZNAME:CST
 822.145 +DTSTART:19931031T020000
 822.146 +RDATE:19931031T020000
 822.147 +RDATE:19941030T020000
 822.148 +RDATE:19951029T020000
 822.149 +RDATE:19961027T020000
 822.150 +RDATE:19971026T020000
 822.151 +RDATE:19981025T020000
 822.152 +RDATE:19991031T020000
 822.153 +RDATE:20001029T020000
 822.154 +RDATE:20011028T020000
 822.155 +RDATE:20021027T020000
 822.156 +RDATE:20031026T020000
 822.157 +RDATE:20041031T020000
 822.158 +RDATE:20051030T020000
 822.159 +RDATE:20061029T020000
 822.160 +END:STANDARD
 822.161 +END:VTIMEZONE
 822.162 +END:VCALENDAR
   823.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   823.2 +++ b/src/zoneinfo/America/North_Dakota/New_Salem.ics	Tue Feb 10 18:12:00 2015 +0100
   823.3 @@ -0,0 +1,159 @@
   823.4 +BEGIN:VCALENDAR
   823.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   823.6 +VERSION:2.0
   823.7 +BEGIN:VTIMEZONE
   823.8 +TZID:America/North_Dakota/New_Salem
   823.9 +TZURL:http://tzurl.org/zoneinfo/America/North_Dakota/New_Salem
  823.10 +X-LIC-LOCATION:America/North_Dakota/New_Salem
  823.11 +BEGIN:DAYLIGHT
  823.12 +TZOFFSETFROM:-0600
  823.13 +TZOFFSETTO:-0500
  823.14 +TZNAME:CDT
  823.15 +DTSTART:20070311T020000
  823.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  823.17 +END:DAYLIGHT
  823.18 +BEGIN:STANDARD
  823.19 +TZOFFSETFROM:-0500
  823.20 +TZOFFSETTO:-0600
  823.21 +TZNAME:CST
  823.22 +DTSTART:20071104T020000
  823.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  823.24 +END:STANDARD
  823.25 +BEGIN:STANDARD
  823.26 +TZOFFSETFROM:-064539
  823.27 +TZOFFSETTO:-0700
  823.28 +TZNAME:MST
  823.29 +DTSTART:18831118T121421
  823.30 +RDATE:18831118T121421
  823.31 +END:STANDARD
  823.32 +BEGIN:DAYLIGHT
  823.33 +TZOFFSETFROM:-0700
  823.34 +TZOFFSETTO:-0600
  823.35 +TZNAME:MDT
  823.36 +DTSTART:19180331T020000
  823.37 +RDATE:19180331T020000
  823.38 +RDATE:19190330T020000
  823.39 +RDATE:19670430T020000
  823.40 +RDATE:19680428T020000
  823.41 +RDATE:19690427T020000
  823.42 +RDATE:19700426T020000
  823.43 +RDATE:19710425T020000
  823.44 +RDATE:19720430T020000
  823.45 +RDATE:19730429T020000
  823.46 +RDATE:19740106T020000
  823.47 +RDATE:19750223T020000
  823.48 +RDATE:19760425T020000
  823.49 +RDATE:19770424T020000
  823.50 +RDATE:19780430T020000
  823.51 +RDATE:19790429T020000
  823.52 +RDATE:19800427T020000
  823.53 +RDATE:19810426T020000
  823.54 +RDATE:19820425T020000
  823.55 +RDATE:19830424T020000
  823.56 +RDATE:19840429T020000
  823.57 +RDATE:19850428T020000
  823.58 +RDATE:19860427T020000
  823.59 +RDATE:19870405T020000
  823.60 +RDATE:19880403T020000
  823.61 +RDATE:19890402T020000
  823.62 +RDATE:19900401T020000
  823.63 +RDATE:19910407T020000
  823.64 +RDATE:19920405T020000
  823.65 +RDATE:19930404T020000
  823.66 +RDATE:19940403T020000
  823.67 +RDATE:19950402T020000
  823.68 +RDATE:19960407T020000
  823.69 +RDATE:19970406T020000
  823.70 +RDATE:19980405T020000
  823.71 +RDATE:19990404T020000
  823.72 +RDATE:20000402T020000
  823.73 +RDATE:20010401T020000
  823.74 +RDATE:20020407T020000
  823.75 +RDATE:20030406T020000
  823.76 +END:DAYLIGHT
  823.77 +BEGIN:STANDARD
  823.78 +TZOFFSETFROM:-0600
  823.79 +TZOFFSETTO:-0700
  823.80 +TZNAME:MST
  823.81 +DTSTART:19181027T020000
  823.82 +RDATE:19181027T020000
  823.83 +RDATE:19191026T020000
  823.84 +RDATE:19450930T020000
  823.85 +RDATE:19671029T020000
  823.86 +RDATE:19681027T020000
  823.87 +RDATE:19691026T020000
  823.88 +RDATE:19701025T020000
  823.89 +RDATE:19711031T020000
  823.90 +RDATE:19721029T020000
  823.91 +RDATE:19731028T020000
  823.92 +RDATE:19741027T020000
  823.93 +RDATE:19751026T020000
  823.94 +RDATE:19761031T020000
  823.95 +RDATE:19771030T020000
  823.96 +RDATE:19781029T020000
  823.97 +RDATE:19791028T020000
  823.98 +RDATE:19801026T020000
  823.99 +RDATE:19811025T020000
 823.100 +RDATE:19821031T020000
 823.101 +RDATE:19831030T020000
 823.102 +RDATE:19841028T020000
 823.103 +RDATE:19851027T020000
 823.104 +RDATE:19861026T020000
 823.105 +RDATE:19871025T020000
 823.106 +RDATE:19881030T020000
 823.107 +RDATE:19891029T020000
 823.108 +RDATE:19901028T020000
 823.109 +RDATE:19911027T020000
 823.110 +RDATE:19921025T020000
 823.111 +RDATE:19931031T020000
 823.112 +RDATE:19941030T020000
 823.113 +RDATE:19951029T020000
 823.114 +RDATE:19961027T020000
 823.115 +RDATE:19971026T020000
 823.116 +RDATE:19981025T020000
 823.117 +RDATE:19991031T020000
 823.118 +RDATE:20001029T020000
 823.119 +RDATE:20011028T020000
 823.120 +RDATE:20021027T020000
 823.121 +END:STANDARD
 823.122 +BEGIN:DAYLIGHT
 823.123 +TZOFFSETFROM:-0700
 823.124 +TZOFFSETTO:-0600
 823.125 +TZNAME:MWT
 823.126 +DTSTART:19420209T020000
 823.127 +RDATE:19420209T020000
 823.128 +END:DAYLIGHT
 823.129 +BEGIN:DAYLIGHT
 823.130 +TZOFFSETFROM:-0600
 823.131 +TZOFFSETTO:-0600
 823.132 +TZNAME:MPT
 823.133 +DTSTART:19450814T170000
 823.134 +RDATE:19450814T170000
 823.135 +END:DAYLIGHT
 823.136 +BEGIN:STANDARD
 823.137 +TZOFFSETFROM:-0600
 823.138 +TZOFFSETTO:-0600
 823.139 +TZNAME:CST
 823.140 +DTSTART:20031026T020000
 823.141 +RDATE:20031026T020000
 823.142 +END:STANDARD
 823.143 +BEGIN:DAYLIGHT
 823.144 +TZOFFSETFROM:-0600
 823.145 +TZOFFSETTO:-0500
 823.146 +TZNAME:CDT
 823.147 +DTSTART:20040404T020000
 823.148 +RDATE:20040404T020000
 823.149 +RDATE:20050403T020000
 823.150 +RDATE:20060402T020000
 823.151 +END:DAYLIGHT
 823.152 +BEGIN:STANDARD
 823.153 +TZOFFSETFROM:-0500
 823.154 +TZOFFSETTO:-0600
 823.155 +TZNAME:CST
 823.156 +DTSTART:20041031T020000
 823.157 +RDATE:20041031T020000
 823.158 +RDATE:20051030T020000
 823.159 +RDATE:20061029T020000
 823.160 +END:STANDARD
 823.161 +END:VTIMEZONE
 823.162 +END:VCALENDAR
   824.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   824.2 +++ b/src/zoneinfo/America/Ojinaga.ics	Tue Feb 10 18:12:00 2015 +0100
   824.3 @@ -0,0 +1,114 @@
   824.4 +BEGIN:VCALENDAR
   824.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   824.6 +VERSION:2.0
   824.7 +BEGIN:VTIMEZONE
   824.8 +TZID:America/Ojinaga
   824.9 +TZURL:http://tzurl.org/zoneinfo/America/Ojinaga
  824.10 +X-LIC-LOCATION:America/Ojinaga
  824.11 +BEGIN:DAYLIGHT
  824.12 +TZOFFSETFROM:-0700
  824.13 +TZOFFSETTO:-0600
  824.14 +TZNAME:MDT
  824.15 +DTSTART:20100314T020000
  824.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  824.17 +END:DAYLIGHT
  824.18 +BEGIN:STANDARD
  824.19 +TZOFFSETFROM:-0600
  824.20 +TZOFFSETTO:-0700
  824.21 +TZNAME:MST
  824.22 +DTSTART:20101107T020000
  824.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  824.24 +END:STANDARD
  824.25 +BEGIN:STANDARD
  824.26 +TZOFFSETFROM:-065740
  824.27 +TZOFFSETTO:-0700
  824.28 +TZNAME:MST
  824.29 +DTSTART:19220101T000220
  824.30 +RDATE:19220101T000220
  824.31 +END:STANDARD
  824.32 +BEGIN:STANDARD
  824.33 +TZOFFSETFROM:-0700
  824.34 +TZOFFSETTO:-0600
  824.35 +TZNAME:CST
  824.36 +DTSTART:19270610T230000
  824.37 +RDATE:19270610T230000
  824.38 +RDATE:19310501T230000
  824.39 +RDATE:19320401T000000
  824.40 +END:STANDARD
  824.41 +BEGIN:STANDARD
  824.42 +TZOFFSETFROM:-0600
  824.43 +TZOFFSETTO:-0700
  824.44 +TZNAME:MST
  824.45 +DTSTART:19301115T000000
  824.46 +RDATE:19301115T000000
  824.47 +RDATE:19311001T000000
  824.48 +RDATE:19981025T020000
  824.49 +RDATE:19991031T020000
  824.50 +RDATE:20001029T020000
  824.51 +RDATE:20010930T020000
  824.52 +RDATE:20021027T020000
  824.53 +RDATE:20031026T020000
  824.54 +RDATE:20041031T020000
  824.55 +RDATE:20051030T020000
  824.56 +RDATE:20061029T020000
  824.57 +RDATE:20071028T020000
  824.58 +RDATE:20081026T020000
  824.59 +RDATE:20091025T020000
  824.60 +END:STANDARD
  824.61 +BEGIN:STANDARD
  824.62 +TZOFFSETFROM:-0600
  824.63 +TZOFFSETTO:-0600
  824.64 +TZNAME:CST
  824.65 +DTSTART:19960101T000000
  824.66 +RDATE:19960101T000000
  824.67 +RDATE:19980101T000000
  824.68 +END:STANDARD
  824.69 +BEGIN:DAYLIGHT
  824.70 +TZOFFSETFROM:-0600
  824.71 +TZOFFSETTO:-0500
  824.72 +TZNAME:CDT
  824.73 +DTSTART:19960407T020000
  824.74 +RDATE:19960407T020000
  824.75 +RDATE:19970406T020000
  824.76 +END:DAYLIGHT
  824.77 +BEGIN:STANDARD
  824.78 +TZOFFSETFROM:-0500
  824.79 +TZOFFSETTO:-0600
  824.80 +TZNAME:CST
  824.81 +DTSTART:19961027T020000
  824.82 +RDATE:19961027T020000
  824.83 +RDATE:19971026T020000
  824.84 +END:STANDARD
  824.85 +BEGIN:DAYLIGHT
  824.86 +TZOFFSETFROM:-0600
  824.87 +TZOFFSETTO:-0600
  824.88 +TZNAME:MDT
  824.89 +DTSTART:19980405T020000
  824.90 +RDATE:19980405T020000
  824.91 +END:DAYLIGHT
  824.92 +BEGIN:DAYLIGHT
  824.93 +TZOFFSETFROM:-0700
  824.94 +TZOFFSETTO:-0600
  824.95 +TZNAME:MDT
  824.96 +DTSTART:19990404T020000
  824.97 +RDATE:19990404T020000
  824.98 +RDATE:20000402T020000
  824.99 +RDATE:20010506T020000
 824.100 +RDATE:20020407T020000
 824.101 +RDATE:20030406T020000
 824.102 +RDATE:20040404T020000
 824.103 +RDATE:20050403T020000
 824.104 +RDATE:20060402T020000
 824.105 +RDATE:20070401T020000
 824.106 +RDATE:20080406T020000
 824.107 +RDATE:20090405T020000
 824.108 +END:DAYLIGHT
 824.109 +BEGIN:STANDARD
 824.110 +TZOFFSETFROM:-0700
 824.111 +TZOFFSETTO:-0700
 824.112 +TZNAME:MST
 824.113 +DTSTART:20100101T000000
 824.114 +RDATE:20100101T000000
 824.115 +END:STANDARD
 824.116 +END:VTIMEZONE
 824.117 +END:VCALENDAR
   825.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   825.2 +++ b/src/zoneinfo/America/Panama.ics	Tue Feb 10 18:12:00 2015 +0100
   825.3 @@ -0,0 +1,23 @@
   825.4 +BEGIN:VCALENDAR
   825.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   825.6 +VERSION:2.0
   825.7 +BEGIN:VTIMEZONE
   825.8 +TZID:America/Panama
   825.9 +TZURL:http://tzurl.org/zoneinfo/America/Panama
  825.10 +X-LIC-LOCATION:America/Panama
  825.11 +BEGIN:STANDARD
  825.12 +TZOFFSETFROM:-051808
  825.13 +TZOFFSETTO:-051936
  825.14 +TZNAME:CMT
  825.15 +DTSTART:18900101T000000
  825.16 +RDATE:18900101T000000
  825.17 +END:STANDARD
  825.18 +BEGIN:STANDARD
  825.19 +TZOFFSETFROM:-051936
  825.20 +TZOFFSETTO:-0500
  825.21 +TZNAME:EST
  825.22 +DTSTART:19080422T000000
  825.23 +RDATE:19080422T000000
  825.24 +END:STANDARD
  825.25 +END:VTIMEZONE
  825.26 +END:VCALENDAR
   826.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   826.2 +++ b/src/zoneinfo/America/Pangnirtung.ics	Tue Feb 10 18:12:00 2015 +0100
   826.3 @@ -0,0 +1,161 @@
   826.4 +BEGIN:VCALENDAR
   826.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   826.6 +VERSION:2.0
   826.7 +BEGIN:VTIMEZONE
   826.8 +TZID:America/Pangnirtung
   826.9 +TZURL:http://tzurl.org/zoneinfo/America/Pangnirtung
  826.10 +X-LIC-LOCATION:America/Pangnirtung
  826.11 +BEGIN:DAYLIGHT
  826.12 +TZOFFSETFROM:-0500
  826.13 +TZOFFSETTO:-0400
  826.14 +TZNAME:EDT
  826.15 +DTSTART:20070311T020000
  826.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  826.17 +END:DAYLIGHT
  826.18 +BEGIN:STANDARD
  826.19 +TZOFFSETFROM:-0400
  826.20 +TZOFFSETTO:-0500
  826.21 +TZNAME:EST
  826.22 +DTSTART:20071104T020000
  826.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  826.24 +END:STANDARD
  826.25 +BEGIN:STANDARD
  826.26 +TZOFFSETFROM:+0000
  826.27 +TZOFFSETTO:-0400
  826.28 +TZNAME:AST
  826.29 +DTSTART:19210101T000000
  826.30 +RDATE:19210101T000000
  826.31 +END:STANDARD
  826.32 +BEGIN:DAYLIGHT
  826.33 +TZOFFSETFROM:-0400
  826.34 +TZOFFSETTO:-0300
  826.35 +TZNAME:AWT
  826.36 +DTSTART:19420209T020000
  826.37 +RDATE:19420209T020000
  826.38 +END:DAYLIGHT
  826.39 +BEGIN:DAYLIGHT
  826.40 +TZOFFSETFROM:-0300
  826.41 +TZOFFSETTO:-0300
  826.42 +TZNAME:APT
  826.43 +DTSTART:19450814T200000
  826.44 +RDATE:19450814T200000
  826.45 +END:DAYLIGHT
  826.46 +BEGIN:STANDARD
  826.47 +TZOFFSETFROM:-0300
  826.48 +TZOFFSETTO:-0400
  826.49 +TZNAME:AST
  826.50 +DTSTART:19450930T020000
  826.51 +RDATE:19450930T020000
  826.52 +RDATE:19801026T020000
  826.53 +RDATE:19811025T020000
  826.54 +RDATE:19821031T020000
  826.55 +RDATE:19831030T020000
  826.56 +RDATE:19841028T020000
  826.57 +RDATE:19851027T020000
  826.58 +RDATE:19861026T020000
  826.59 +RDATE:19871025T020000
  826.60 +RDATE:19881030T020000
  826.61 +RDATE:19891029T020000
  826.62 +RDATE:19901028T020000
  826.63 +RDATE:19911027T020000
  826.64 +RDATE:19921025T020000
  826.65 +RDATE:19931031T020000
  826.66 +RDATE:19941030T020000
  826.67 +END:STANDARD
  826.68 +BEGIN:DAYLIGHT
  826.69 +TZOFFSETFROM:-0400
  826.70 +TZOFFSETTO:-0200
  826.71 +TZNAME:ADDT
  826.72 +DTSTART:19650425T000000
  826.73 +RDATE:19650425T000000
  826.74 +END:DAYLIGHT
  826.75 +BEGIN:STANDARD
  826.76 +TZOFFSETFROM:-0200
  826.77 +TZOFFSETTO:-0400
  826.78 +TZNAME:AST
  826.79 +DTSTART:19651031T020000
  826.80 +RDATE:19651031T020000
  826.81 +END:STANDARD
  826.82 +BEGIN:DAYLIGHT
  826.83 +TZOFFSETFROM:-0400
  826.84 +TZOFFSETTO:-0300
  826.85 +TZNAME:ADT
  826.86 +DTSTART:19800427T020000
  826.87 +RDATE:19800427T020000
  826.88 +RDATE:19810426T020000
  826.89 +RDATE:19820425T020000
  826.90 +RDATE:19830424T020000
  826.91 +RDATE:19840429T020000
  826.92 +RDATE:19850428T020000
  826.93 +RDATE:19860427T020000
  826.94 +RDATE:19870405T020000
  826.95 +RDATE:19880403T020000
  826.96 +RDATE:19890402T020000
  826.97 +RDATE:19900401T020000
  826.98 +RDATE:19910407T020000
  826.99 +RDATE:19920405T020000
 826.100 +RDATE:19930404T020000
 826.101 +RDATE:19940403T020000
 826.102 +END:DAYLIGHT
 826.103 +BEGIN:DAYLIGHT
 826.104 +TZOFFSETFROM:-0400
 826.105 +TZOFFSETTO:-0400
 826.106 +TZNAME:EDT
 826.107 +DTSTART:19950402T020000
 826.108 +RDATE:19950402T020000
 826.109 +END:DAYLIGHT
 826.110 +BEGIN:STANDARD
 826.111 +TZOFFSETFROM:-0400
 826.112 +TZOFFSETTO:-0500
 826.113 +TZNAME:EST
 826.114 +DTSTART:19951029T020000
 826.115 +RDATE:19951029T020000
 826.116 +RDATE:19961027T020000
 826.117 +RDATE:19971026T020000
 826.118 +RDATE:19981025T020000
 826.119 +RDATE:20011028T020000
 826.120 +RDATE:20021027T020000
 826.121 +RDATE:20031026T020000
 826.122 +RDATE:20041031T020000
 826.123 +RDATE:20051030T020000
 826.124 +RDATE:20061029T020000
 826.125 +END:STANDARD
 826.126 +BEGIN:DAYLIGHT
 826.127 +TZOFFSETFROM:-0500
 826.128 +TZOFFSETTO:-0400
 826.129 +TZNAME:EDT
 826.130 +DTSTART:19960407T020000
 826.131 +RDATE:19960407T020000
 826.132 +RDATE:19970406T020000
 826.133 +RDATE:19980405T020000
 826.134 +RDATE:19990404T020000
 826.135 +RDATE:20010401T020000
 826.136 +RDATE:20020407T020000
 826.137 +RDATE:20030406T020000
 826.138 +RDATE:20040404T020000
 826.139 +RDATE:20050403T020000
 826.140 +RDATE:20060402T020000
 826.141 +END:DAYLIGHT
 826.142 +BEGIN:STANDARD
 826.143 +TZOFFSETFROM:-0400
 826.144 +TZOFFSETTO:-0600
 826.145 +TZNAME:CST
 826.146 +DTSTART:19991031T020000
 826.147 +RDATE:19991031T020000
 826.148 +END:STANDARD
 826.149 +BEGIN:DAYLIGHT
 826.150 +TZOFFSETFROM:-0600
 826.151 +TZOFFSETTO:-0500
 826.152 +TZNAME:CDT
 826.153 +DTSTART:20000402T020000
 826.154 +RDATE:20000402T020000
 826.155 +END:DAYLIGHT
 826.156 +BEGIN:STANDARD
 826.157 +TZOFFSETFROM:-0500
 826.158 +TZOFFSETTO:-0500
 826.159 +TZNAME:EST
 826.160 +DTSTART:20001029T020000
 826.161 +RDATE:20001029T020000
 826.162 +END:STANDARD
 826.163 +END:VTIMEZONE
 826.164 +END:VCALENDAR
   827.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   827.2 +++ b/src/zoneinfo/America/Paramaribo.ics	Tue Feb 10 18:12:00 2015 +0100
   827.3 @@ -0,0 +1,44 @@
   827.4 +BEGIN:VCALENDAR
   827.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   827.6 +VERSION:2.0
   827.7 +BEGIN:VTIMEZONE
   827.8 +TZID:America/Paramaribo
   827.9 +TZURL:http://tzurl.org/zoneinfo/America/Paramaribo
  827.10 +X-LIC-LOCATION:America/Paramaribo
  827.11 +BEGIN:STANDARD
  827.12 +TZOFFSETFROM:-034040
  827.13 +TZOFFSETTO:-034052
  827.14 +TZNAME:PMT
  827.15 +DTSTART:19110101T000000
  827.16 +RDATE:19110101T000000
  827.17 +END:STANDARD
  827.18 +BEGIN:STANDARD
  827.19 +TZOFFSETFROM:-034052
  827.20 +TZOFFSETTO:-034036
  827.21 +TZNAME:PMT
  827.22 +DTSTART:19350101T000000
  827.23 +RDATE:19350101T000000
  827.24 +END:STANDARD
  827.25 +BEGIN:STANDARD
  827.26 +TZOFFSETFROM:-034036
  827.27 +TZOFFSETTO:-0330
  827.28 +TZNAME:NEGT
  827.29 +DTSTART:19451001T000000
  827.30 +RDATE:19451001T000000
  827.31 +END:STANDARD
  827.32 +BEGIN:STANDARD
  827.33 +TZOFFSETFROM:-0330
  827.34 +TZOFFSETTO:-0330
  827.35 +TZNAME:SRT
  827.36 +DTSTART:19751120T000000
  827.37 +RDATE:19751120T000000
  827.38 +END:STANDARD
  827.39 +BEGIN:STANDARD
  827.40 +TZOFFSETFROM:-0330
  827.41 +TZOFFSETTO:-0300
  827.42 +TZNAME:SRT
  827.43 +DTSTART:19841001T000000
  827.44 +RDATE:19841001T000000
  827.45 +END:STANDARD
  827.46 +END:VTIMEZONE
  827.47 +END:VCALENDAR
   828.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   828.2 +++ b/src/zoneinfo/America/Phoenix.ics	Tue Feb 10 18:12:00 2015 +0100
   828.3 @@ -0,0 +1,52 @@
   828.4 +BEGIN:VCALENDAR
   828.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   828.6 +VERSION:2.0
   828.7 +BEGIN:VTIMEZONE
   828.8 +TZID:America/Phoenix
   828.9 +TZURL:http://tzurl.org/zoneinfo/America/Phoenix
  828.10 +X-LIC-LOCATION:America/Phoenix
  828.11 +BEGIN:STANDARD
  828.12 +TZOFFSETFROM:-072818
  828.13 +TZOFFSETTO:-0700
  828.14 +TZNAME:MST
  828.15 +DTSTART:18831118T113142
  828.16 +RDATE:18831118T113142
  828.17 +END:STANDARD
  828.18 +BEGIN:DAYLIGHT
  828.19 +TZOFFSETFROM:-0700
  828.20 +TZOFFSETTO:-0600
  828.21 +TZNAME:MDT
  828.22 +DTSTART:19180331T020000
  828.23 +RDATE:19180331T020000
  828.24 +RDATE:19190330T020000
  828.25 +RDATE:19670430T020000
  828.26 +END:DAYLIGHT
  828.27 +BEGIN:STANDARD
  828.28 +TZOFFSETFROM:-0600
  828.29 +TZOFFSETTO:-0700
  828.30 +TZNAME:MST
  828.31 +DTSTART:19181027T020000
  828.32 +RDATE:19181027T020000
  828.33 +RDATE:19191026T020000
  828.34 +RDATE:19440101T000100
  828.35 +RDATE:19441001T000100
  828.36 +RDATE:19671029T020000
  828.37 +END:STANDARD
  828.38 +BEGIN:DAYLIGHT
  828.39 +TZOFFSETFROM:-0700
  828.40 +TZOFFSETTO:-0600
  828.41 +TZNAME:MWT
  828.42 +DTSTART:19420209T020000
  828.43 +RDATE:19420209T020000
  828.44 +RDATE:19440401T000100
  828.45 +END:DAYLIGHT
  828.46 +BEGIN:STANDARD
  828.47 +TZOFFSETFROM:-0700
  828.48 +TZOFFSETTO:-0700
  828.49 +TZNAME:MST
  828.50 +DTSTART:19670101T000000
  828.51 +RDATE:19670101T000000
  828.52 +RDATE:19680321T000000
  828.53 +END:STANDARD
  828.54 +END:VTIMEZONE
  828.55 +END:VCALENDAR
   829.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   829.2 +++ b/src/zoneinfo/America/Port-au-Prince.ics	Tue Feb 10 18:12:00 2015 +0100
   829.3 @@ -0,0 +1,69 @@
   829.4 +BEGIN:VCALENDAR
   829.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   829.6 +VERSION:2.0
   829.7 +BEGIN:VTIMEZONE
   829.8 +TZID:America/Port-au-Prince
   829.9 +TZURL:http://tzurl.org/zoneinfo/America/Port-au-Prince
  829.10 +X-LIC-LOCATION:America/Port-au-Prince
  829.11 +BEGIN:STANDARD
  829.12 +TZOFFSETFROM:-044920
  829.13 +TZOFFSETTO:-0449
  829.14 +TZNAME:PPMT
  829.15 +DTSTART:18900101T000000
  829.16 +RDATE:18900101T000000
  829.17 +END:STANDARD
  829.18 +BEGIN:STANDARD
  829.19 +TZOFFSETFROM:-0449
  829.20 +TZOFFSETTO:-0500
  829.21 +TZNAME:EST
  829.22 +DTSTART:19170124T120000
  829.23 +RDATE:19170124T120000
  829.24 +END:STANDARD
  829.25 +BEGIN:DAYLIGHT
  829.26 +TZOFFSETFROM:-0500
  829.27 +TZOFFSETTO:-0400
  829.28 +TZNAME:EDT
  829.29 +DTSTART:19830508T000000
  829.30 +RDATE:19830508T000000
  829.31 +RDATE:19840429T000000
  829.32 +RDATE:19850428T000000
  829.33 +RDATE:19860427T000000
  829.34 +RDATE:19870426T000000
  829.35 +RDATE:19880403T010000
  829.36 +RDATE:19890402T010000
  829.37 +RDATE:19900401T010000
  829.38 +RDATE:19910407T010000
  829.39 +RDATE:19920405T010000
  829.40 +RDATE:19930404T010000
  829.41 +RDATE:19940403T010000
  829.42 +RDATE:19950402T010000
  829.43 +RDATE:19960407T010000
  829.44 +RDATE:19970406T010000
  829.45 +RDATE:20050403T000000
  829.46 +RDATE:20060402T000000
  829.47 +END:DAYLIGHT
  829.48 +BEGIN:STANDARD
  829.49 +TZOFFSETFROM:-0400
  829.50 +TZOFFSETTO:-0500
  829.51 +TZNAME:EST
  829.52 +DTSTART:19831030T000000
  829.53 +RDATE:19831030T000000
  829.54 +RDATE:19841028T000000
  829.55 +RDATE:19851027T000000
  829.56 +RDATE:19861026T000000
  829.57 +RDATE:19871025T000000
  829.58 +RDATE:19881030T020000
  829.59 +RDATE:19891029T020000
  829.60 +RDATE:19901028T020000
  829.61 +RDATE:19911027T020000
  829.62 +RDATE:19921025T020000
  829.63 +RDATE:19931031T020000
  829.64 +RDATE:19941030T020000
  829.65 +RDATE:19951029T020000
  829.66 +RDATE:19961027T020000
  829.67 +RDATE:19971026T020000
  829.68 +RDATE:20051030T000000
  829.69 +RDATE:20061029T000000
  829.70 +END:STANDARD
  829.71 +END:VTIMEZONE
  829.72 +END:VCALENDAR
   830.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   830.2 +++ b/src/zoneinfo/America/Port_of_Spain.ics	Tue Feb 10 18:12:00 2015 +0100
   830.3 @@ -0,0 +1,16 @@
   830.4 +BEGIN:VCALENDAR
   830.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   830.6 +VERSION:2.0
   830.7 +BEGIN:VTIMEZONE
   830.8 +TZID:America/Port_of_Spain
   830.9 +TZURL:http://tzurl.org/zoneinfo/America/Port_of_Spain
  830.10 +X-LIC-LOCATION:America/Port_of_Spain
  830.11 +BEGIN:STANDARD
  830.12 +TZOFFSETFROM:-040604
  830.13 +TZOFFSETTO:-0400
  830.14 +TZNAME:AST
  830.15 +DTSTART:19120302T000000
  830.16 +RDATE:19120302T000000
  830.17 +END:STANDARD
  830.18 +END:VTIMEZONE
  830.19 +END:VCALENDAR
   831.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   831.2 +++ b/src/zoneinfo/America/Porto_Velho.ics	Tue Feb 10 18:12:00 2015 +0100
   831.3 @@ -0,0 +1,63 @@
   831.4 +BEGIN:VCALENDAR
   831.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   831.6 +VERSION:2.0
   831.7 +BEGIN:VTIMEZONE
   831.8 +TZID:America/Porto_Velho
   831.9 +TZURL:http://tzurl.org/zoneinfo/America/Porto_Velho
  831.10 +X-LIC-LOCATION:America/Porto_Velho
  831.11 +BEGIN:STANDARD
  831.12 +TZOFFSETFROM:-041536
  831.13 +TZOFFSETTO:-0400
  831.14 +TZNAME:AMT
  831.15 +DTSTART:19140101T000000
  831.16 +RDATE:19140101T000000
  831.17 +END:STANDARD
  831.18 +BEGIN:DAYLIGHT
  831.19 +TZOFFSETFROM:-0400
  831.20 +TZOFFSETTO:-0300
  831.21 +TZNAME:AMST
  831.22 +DTSTART:19311003T110000
  831.23 +RDATE:19311003T110000
  831.24 +RDATE:19321003T000000
  831.25 +RDATE:19491201T000000
  831.26 +RDATE:19501201T000000
  831.27 +RDATE:19511201T000000
  831.28 +RDATE:19521201T000000
  831.29 +RDATE:19631209T000000
  831.30 +RDATE:19650131T000000
  831.31 +RDATE:19651201T000000
  831.32 +RDATE:19661101T000000
  831.33 +RDATE:19671101T000000
  831.34 +RDATE:19851102T000000
  831.35 +RDATE:19861025T000000
  831.36 +RDATE:19871025T000000
  831.37 +END:DAYLIGHT
  831.38 +BEGIN:STANDARD
  831.39 +TZOFFSETFROM:-0300
  831.40 +TZOFFSETTO:-0400
  831.41 +TZNAME:AMT
  831.42 +DTSTART:19320401T000000
  831.43 +RDATE:19320401T000000
  831.44 +RDATE:19330401T000000
  831.45 +RDATE:19500416T010000
  831.46 +RDATE:19510401T000000
  831.47 +RDATE:19520401T000000
  831.48 +RDATE:19530301T000000
  831.49 +RDATE:19640301T000000
  831.50 +RDATE:19650331T000000
  831.51 +RDATE:19660301T000000
  831.52 +RDATE:19670301T000000
  831.53 +RDATE:19680301T000000
  831.54 +RDATE:19860315T000000
  831.55 +RDATE:19870214T000000
  831.56 +RDATE:19880207T000000
  831.57 +END:STANDARD
  831.58 +BEGIN:STANDARD
  831.59 +TZOFFSETFROM:-0400
  831.60 +TZOFFSETTO:-0400
  831.61 +TZNAME:AMT
  831.62 +DTSTART:19880912T000000
  831.63 +RDATE:19880912T000000
  831.64 +END:STANDARD
  831.65 +END:VTIMEZONE
  831.66 +END:VCALENDAR
   832.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   832.2 +++ b/src/zoneinfo/America/Puerto_Rico.ics	Tue Feb 10 18:12:00 2015 +0100
   832.3 @@ -0,0 +1,44 @@
   832.4 +BEGIN:VCALENDAR
   832.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   832.6 +VERSION:2.0
   832.7 +BEGIN:VTIMEZONE
   832.8 +TZID:America/Puerto_Rico
   832.9 +TZURL:http://tzurl.org/zoneinfo/America/Puerto_Rico
  832.10 +X-LIC-LOCATION:America/Puerto_Rico
  832.11 +BEGIN:STANDARD
  832.12 +TZOFFSETFROM:-042425
  832.13 +TZOFFSETTO:-0400
  832.14 +TZNAME:AST
  832.15 +DTSTART:18990328T120000
  832.16 +RDATE:18990328T120000
  832.17 +END:STANDARD
  832.18 +BEGIN:DAYLIGHT
  832.19 +TZOFFSETFROM:-0400
  832.20 +TZOFFSETTO:-0300
  832.21 +TZNAME:AWT
  832.22 +DTSTART:19420503T000000
  832.23 +RDATE:19420503T000000
  832.24 +END:DAYLIGHT
  832.25 +BEGIN:DAYLIGHT
  832.26 +TZOFFSETFROM:-0300
  832.27 +TZOFFSETTO:-0300
  832.28 +TZNAME:APT
  832.29 +DTSTART:19450814T200000
  832.30 +RDATE:19450814T200000
  832.31 +END:DAYLIGHT
  832.32 +BEGIN:STANDARD
  832.33 +TZOFFSETFROM:-0300
  832.34 +TZOFFSETTO:-0400
  832.35 +TZNAME:AST
  832.36 +DTSTART:19450930T020000
  832.37 +RDATE:19450930T020000
  832.38 +END:STANDARD
  832.39 +BEGIN:STANDARD
  832.40 +TZOFFSETFROM:-0400
  832.41 +TZOFFSETTO:-0400
  832.42 +TZNAME:AST
  832.43 +DTSTART:19460101T000000
  832.44 +RDATE:19460101T000000
  832.45 +END:STANDARD
  832.46 +END:VTIMEZONE
  832.47 +END:VCALENDAR
   833.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   833.2 +++ b/src/zoneinfo/America/Rainy_River.ics	Tue Feb 10 18:12:00 2015 +0100
   833.3 @@ -0,0 +1,126 @@
   833.4 +BEGIN:VCALENDAR
   833.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   833.6 +VERSION:2.0
   833.7 +BEGIN:VTIMEZONE
   833.8 +TZID:America/Rainy_River
   833.9 +TZURL:http://tzurl.org/zoneinfo/America/Rainy_River
  833.10 +X-LIC-LOCATION:America/Rainy_River
  833.11 +BEGIN:DAYLIGHT
  833.12 +TZOFFSETFROM:-0600
  833.13 +TZOFFSETTO:-0500
  833.14 +TZNAME:CDT
  833.15 +DTSTART:20070311T020000
  833.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  833.17 +END:DAYLIGHT
  833.18 +BEGIN:STANDARD
  833.19 +TZOFFSETFROM:-0500
  833.20 +TZOFFSETTO:-0600
  833.21 +TZNAME:CST
  833.22 +DTSTART:20071104T020000
  833.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  833.24 +END:STANDARD
  833.25 +BEGIN:STANDARD
  833.26 +TZOFFSETFROM:-061816
  833.27 +TZOFFSETTO:-0600
  833.28 +TZNAME:CST
  833.29 +DTSTART:18950101T000000
  833.30 +RDATE:18950101T000000
  833.31 +END:STANDARD
  833.32 +BEGIN:DAYLIGHT
  833.33 +TZOFFSETFROM:-0600
  833.34 +TZOFFSETTO:-0500
  833.35 +TZNAME:CDT
  833.36 +DTSTART:19180414T020000
  833.37 +RDATE:19180414T020000
  833.38 +RDATE:19400929T000000
  833.39 +RDATE:19740428T020000
  833.40 +RDATE:19750427T020000
  833.41 +RDATE:19760425T020000
  833.42 +RDATE:19770424T020000
  833.43 +RDATE:19780430T020000
  833.44 +RDATE:19790429T020000
  833.45 +RDATE:19800427T020000
  833.46 +RDATE:19810426T020000
  833.47 +RDATE:19820425T020000
  833.48 +RDATE:19830424T020000
  833.49 +RDATE:19840429T020000
  833.50 +RDATE:19850428T020000
  833.51 +RDATE:19860427T020000
  833.52 +RDATE:19870405T020000
  833.53 +RDATE:19880403T020000
  833.54 +RDATE:19890402T020000
  833.55 +RDATE:19900401T020000
  833.56 +RDATE:19910407T020000
  833.57 +RDATE:19920405T020000
  833.58 +RDATE:19930404T020000
  833.59 +RDATE:19940403T020000
  833.60 +RDATE:19950402T020000
  833.61 +RDATE:19960407T020000
  833.62 +RDATE:19970406T020000
  833.63 +RDATE:19980405T020000
  833.64 +RDATE:19990404T020000
  833.65 +RDATE:20000402T020000
  833.66 +RDATE:20010401T020000
  833.67 +RDATE:20020407T020000
  833.68 +RDATE:20030406T020000
  833.69 +RDATE:20040404T020000
  833.70 +RDATE:20050403T020000
  833.71 +RDATE:20060402T020000
  833.72 +END:DAYLIGHT
  833.73 +BEGIN:STANDARD
  833.74 +TZOFFSETFROM:-0500
  833.75 +TZOFFSETTO:-0600
  833.76 +TZNAME:CST
  833.77 +DTSTART:19181031T020000
  833.78 +RDATE:19181031T020000
  833.79 +RDATE:19450930T020000
  833.80 +RDATE:19741027T020000
  833.81 +RDATE:19751026T020000
  833.82 +RDATE:19761031T020000
  833.83 +RDATE:19771030T020000
  833.84 +RDATE:19781029T020000
  833.85 +RDATE:19791028T020000
  833.86 +RDATE:19801026T020000
  833.87 +RDATE:19811025T020000
  833.88 +RDATE:19821031T020000
  833.89 +RDATE:19831030T020000
  833.90 +RDATE:19841028T020000
  833.91 +RDATE:19851027T020000
  833.92 +RDATE:19861026T020000
  833.93 +RDATE:19871025T020000
  833.94 +RDATE:19881030T020000
  833.95 +RDATE:19891029T020000
  833.96 +RDATE:19901028T020000
  833.97 +RDATE:19911027T020000
  833.98 +RDATE:19921025T020000
  833.99 +RDATE:19931031T020000
 833.100 +RDATE:19941030T020000
 833.101 +RDATE:19951029T020000
 833.102 +RDATE:19961027T020000
 833.103 +RDATE:19971026T020000
 833.104 +RDATE:19981025T020000
 833.105 +RDATE:19991031T020000
 833.106 +RDATE:20001029T020000
 833.107 +RDATE:20011028T020000
 833.108 +RDATE:20021027T020000
 833.109 +RDATE:20031026T020000
 833.110 +RDATE:20041031T020000
 833.111 +RDATE:20051030T020000
 833.112 +RDATE:20061029T020000
 833.113 +END:STANDARD
 833.114 +BEGIN:DAYLIGHT
 833.115 +TZOFFSETFROM:-0500
 833.116 +TZOFFSETTO:-0500
 833.117 +TZNAME:CWT
 833.118 +DTSTART:19420209T020000
 833.119 +RDATE:19420209T020000
 833.120 +END:DAYLIGHT
 833.121 +BEGIN:DAYLIGHT
 833.122 +TZOFFSETFROM:-0500
 833.123 +TZOFFSETTO:-0500
 833.124 +TZNAME:CPT
 833.125 +DTSTART:19450814T180000
 833.126 +RDATE:19450814T180000
 833.127 +END:DAYLIGHT
 833.128 +END:VTIMEZONE
 833.129 +END:VCALENDAR
   834.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   834.2 +++ b/src/zoneinfo/America/Rankin_Inlet.ics	Tue Feb 10 18:12:00 2015 +0100
   834.3 @@ -0,0 +1,122 @@
   834.4 +BEGIN:VCALENDAR
   834.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   834.6 +VERSION:2.0
   834.7 +BEGIN:VTIMEZONE
   834.8 +TZID:America/Rankin_Inlet
   834.9 +TZURL:http://tzurl.org/zoneinfo/America/Rankin_Inlet
  834.10 +X-LIC-LOCATION:America/Rankin_Inlet
  834.11 +BEGIN:DAYLIGHT
  834.12 +TZOFFSETFROM:-0600
  834.13 +TZOFFSETTO:-0500
  834.14 +TZNAME:CDT
  834.15 +DTSTART:20070311T020000
  834.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  834.17 +END:DAYLIGHT
  834.18 +BEGIN:STANDARD
  834.19 +TZOFFSETFROM:-0500
  834.20 +TZOFFSETTO:-0600
  834.21 +TZNAME:CST
  834.22 +DTSTART:20071104T020000
  834.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  834.24 +END:STANDARD
  834.25 +BEGIN:STANDARD
  834.26 +TZOFFSETFROM:+0000
  834.27 +TZOFFSETTO:-0600
  834.28 +TZNAME:CST
  834.29 +DTSTART:19570101T000000
  834.30 +RDATE:19570101T000000
  834.31 +END:STANDARD
  834.32 +BEGIN:DAYLIGHT
  834.33 +TZOFFSETFROM:-0600
  834.34 +TZOFFSETTO:-0400
  834.35 +TZNAME:CDDT
  834.36 +DTSTART:19650425T000000
  834.37 +RDATE:19650425T000000
  834.38 +END:DAYLIGHT
  834.39 +BEGIN:STANDARD
  834.40 +TZOFFSETFROM:-0400
  834.41 +TZOFFSETTO:-0600
  834.42 +TZNAME:CST
  834.43 +DTSTART:19651031T020000
  834.44 +RDATE:19651031T020000
  834.45 +END:STANDARD
  834.46 +BEGIN:DAYLIGHT
  834.47 +TZOFFSETFROM:-0600
  834.48 +TZOFFSETTO:-0500
  834.49 +TZNAME:CDT
  834.50 +DTSTART:19800427T020000
  834.51 +RDATE:19800427T020000
  834.52 +RDATE:19810426T020000
  834.53 +RDATE:19820425T020000
  834.54 +RDATE:19830424T020000
  834.55 +RDATE:19840429T020000
  834.56 +RDATE:19850428T020000
  834.57 +RDATE:19860427T020000
  834.58 +RDATE:19870405T020000
  834.59 +RDATE:19880403T020000
  834.60 +RDATE:19890402T020000
  834.61 +RDATE:19900401T020000
  834.62 +RDATE:19910407T020000
  834.63 +RDATE:19920405T020000
  834.64 +RDATE:19930404T020000
  834.65 +RDATE:19940403T020000
  834.66 +RDATE:19950402T020000
  834.67 +RDATE:19960407T020000
  834.68 +RDATE:19970406T020000
  834.69 +RDATE:19980405T020000
  834.70 +RDATE:19990404T020000
  834.71 +RDATE:20000402T020000
  834.72 +RDATE:20020407T020000
  834.73 +RDATE:20030406T020000
  834.74 +RDATE:20040404T020000
  834.75 +RDATE:20050403T020000
  834.76 +RDATE:20060402T020000
  834.77 +END:DAYLIGHT
  834.78 +BEGIN:STANDARD
  834.79 +TZOFFSETFROM:-0500
  834.80 +TZOFFSETTO:-0600
  834.81 +TZNAME:CST
  834.82 +DTSTART:19801026T020000
  834.83 +RDATE:19801026T020000
  834.84 +RDATE:19811025T020000
  834.85 +RDATE:19821031T020000
  834.86 +RDATE:19831030T020000
  834.87 +RDATE:19841028T020000
  834.88 +RDATE:19851027T020000
  834.89 +RDATE:19861026T020000
  834.90 +RDATE:19871025T020000
  834.91 +RDATE:19881030T020000
  834.92 +RDATE:19891029T020000
  834.93 +RDATE:19901028T020000
  834.94 +RDATE:19911027T020000
  834.95 +RDATE:19921025T020000
  834.96 +RDATE:19931031T020000
  834.97 +RDATE:19941030T020000
  834.98 +RDATE:19951029T020000
  834.99 +RDATE:19961027T020000
 834.100 +RDATE:19971026T020000
 834.101 +RDATE:19981025T020000
 834.102 +RDATE:19991031T020000
 834.103 +RDATE:20011028T020000
 834.104 +RDATE:20021027T020000
 834.105 +RDATE:20031026T020000
 834.106 +RDATE:20041031T020000
 834.107 +RDATE:20051030T020000
 834.108 +RDATE:20061029T020000
 834.109 +END:STANDARD
 834.110 +BEGIN:STANDARD
 834.111 +TZOFFSETFROM:-0500
 834.112 +TZOFFSETTO:-0500
 834.113 +TZNAME:EST
 834.114 +DTSTART:20001029T020000
 834.115 +RDATE:20001029T020000
 834.116 +END:STANDARD
 834.117 +BEGIN:DAYLIGHT
 834.118 +TZOFFSETFROM:-0500
 834.119 +TZOFFSETTO:-0500
 834.120 +TZNAME:CDT
 834.121 +DTSTART:20010401T020000
 834.122 +RDATE:20010401T020000
 834.123 +END:DAYLIGHT
 834.124 +END:VTIMEZONE
 834.125 +END:VCALENDAR
   835.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   835.2 +++ b/src/zoneinfo/America/Recife.ics	Tue Feb 10 18:12:00 2015 +0100
   835.3 @@ -0,0 +1,76 @@
   835.4 +BEGIN:VCALENDAR
   835.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   835.6 +VERSION:2.0
   835.7 +BEGIN:VTIMEZONE
   835.8 +TZID:America/Recife
   835.9 +TZURL:http://tzurl.org/zoneinfo/America/Recife
  835.10 +X-LIC-LOCATION:America/Recife
  835.11 +BEGIN:STANDARD
  835.12 +TZOFFSETFROM:-021936
  835.13 +TZOFFSETTO:-0300
  835.14 +TZNAME:BRT
  835.15 +DTSTART:19140101T000000
  835.16 +RDATE:19140101T000000
  835.17 +END:STANDARD
  835.18 +BEGIN:DAYLIGHT
  835.19 +TZOFFSETFROM:-0300
  835.20 +TZOFFSETTO:-0200
  835.21 +TZNAME:BRST
  835.22 +DTSTART:19311003T110000
  835.23 +RDATE:19311003T110000
  835.24 +RDATE:19321003T000000
  835.25 +RDATE:19491201T000000
  835.26 +RDATE:19501201T000000
  835.27 +RDATE:19511201T000000
  835.28 +RDATE:19521201T000000
  835.29 +RDATE:19631209T000000
  835.30 +RDATE:19650131T000000
  835.31 +RDATE:19651201T000000
  835.32 +RDATE:19661101T000000
  835.33 +RDATE:19671101T000000
  835.34 +RDATE:19851102T000000
  835.35 +RDATE:19861025T000000
  835.36 +RDATE:19871025T000000
  835.37 +RDATE:19881016T000000
  835.38 +RDATE:19891015T000000
  835.39 +RDATE:19991003T000000
  835.40 +RDATE:20001008T000000
  835.41 +RDATE:20011014T000000
  835.42 +END:DAYLIGHT
  835.43 +BEGIN:STANDARD
  835.44 +TZOFFSETFROM:-0200
  835.45 +TZOFFSETTO:-0300
  835.46 +TZNAME:BRT
  835.47 +DTSTART:19320401T000000
  835.48 +RDATE:19320401T000000
  835.49 +RDATE:19330401T000000
  835.50 +RDATE:19500416T010000
  835.51 +RDATE:19510401T000000
  835.52 +RDATE:19520401T000000
  835.53 +RDATE:19530301T000000
  835.54 +RDATE:19640301T000000
  835.55 +RDATE:19650331T000000
  835.56 +RDATE:19660301T000000
  835.57 +RDATE:19670301T000000
  835.58 +RDATE:19680301T000000
  835.59 +RDATE:19860315T000000
  835.60 +RDATE:19870214T000000
  835.61 +RDATE:19880207T000000
  835.62 +RDATE:19890129T000000
  835.63 +RDATE:19900211T000000
  835.64 +RDATE:20000227T000000
  835.65 +RDATE:20001015T000000
  835.66 +RDATE:20020217T000000
  835.67 +END:STANDARD
  835.68 +BEGIN:STANDARD
  835.69 +TZOFFSETFROM:-0300
  835.70 +TZOFFSETTO:-0300
  835.71 +TZNAME:BRT
  835.72 +DTSTART:19900917T000000
  835.73 +RDATE:19900917T000000
  835.74 +RDATE:19990930T000000
  835.75 +RDATE:20010913T000000
  835.76 +RDATE:20021001T000000
  835.77 +END:STANDARD
  835.78 +END:VTIMEZONE
  835.79 +END:VCALENDAR
   836.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   836.2 +++ b/src/zoneinfo/America/Regina.ics	Tue Feb 10 18:12:00 2015 +0100
   836.3 @@ -0,0 +1,98 @@
   836.4 +BEGIN:VCALENDAR
   836.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   836.6 +VERSION:2.0
   836.7 +BEGIN:VTIMEZONE
   836.8 +TZID:America/Regina
   836.9 +TZURL:http://tzurl.org/zoneinfo/America/Regina
  836.10 +X-LIC-LOCATION:America/Regina
  836.11 +BEGIN:STANDARD
  836.12 +TZOFFSETFROM:-065836
  836.13 +TZOFFSETTO:-0700
  836.14 +TZNAME:MST
  836.15 +DTSTART:19050901T000000
  836.16 +RDATE:19050901T000000
  836.17 +END:STANDARD
  836.18 +BEGIN:DAYLIGHT
  836.19 +TZOFFSETFROM:-0700
  836.20 +TZOFFSETTO:-0600
  836.21 +TZNAME:MDT
  836.22 +DTSTART:19180414T020000
  836.23 +RDATE:19180414T020000
  836.24 +RDATE:19300504T000000
  836.25 +RDATE:19310503T000000
  836.26 +RDATE:19320501T000000
  836.27 +RDATE:19330507T000000
  836.28 +RDATE:19340506T000000
  836.29 +RDATE:19370411T000000
  836.30 +RDATE:19380410T000000
  836.31 +RDATE:19390409T000000
  836.32 +RDATE:19400414T000000
  836.33 +RDATE:19410413T000000
  836.34 +RDATE:19460414T020000
  836.35 +RDATE:19470427T020000
  836.36 +RDATE:19480425T020000
  836.37 +RDATE:19490424T020000
  836.38 +RDATE:19500430T020000
  836.39 +RDATE:19510429T020000
  836.40 +RDATE:19520427T020000
  836.41 +RDATE:19530426T020000
  836.42 +RDATE:19540425T020000
  836.43 +RDATE:19550424T020000
  836.44 +RDATE:19560429T020000
  836.45 +RDATE:19570428T020000
  836.46 +RDATE:19590426T020000
  836.47 +END:DAYLIGHT
  836.48 +BEGIN:STANDARD
  836.49 +TZOFFSETFROM:-0600
  836.50 +TZOFFSETTO:-0700
  836.51 +TZNAME:MST
  836.52 +DTSTART:19181031T020000
  836.53 +RDATE:19181031T020000
  836.54 +RDATE:19301005T000000
  836.55 +RDATE:19311004T000000
  836.56 +RDATE:19321002T000000
  836.57 +RDATE:19331001T000000
  836.58 +RDATE:19341007T000000
  836.59 +RDATE:19371010T000000
  836.60 +RDATE:19381002T000000
  836.61 +RDATE:19391008T000000
  836.62 +RDATE:19401013T000000
  836.63 +RDATE:19411012T000000
  836.64 +RDATE:19450930T020000
  836.65 +RDATE:19461013T020000
  836.66 +RDATE:19470928T020000
  836.67 +RDATE:19480926T020000
  836.68 +RDATE:19490925T020000
  836.69 +RDATE:19500924T020000
  836.70 +RDATE:19510930T020000
  836.71 +RDATE:19520928T020000
  836.72 +RDATE:19530927T020000
  836.73 +RDATE:19540926T020000
  836.74 +RDATE:19550925T020000
  836.75 +RDATE:19560930T020000
  836.76 +RDATE:19570929T020000
  836.77 +RDATE:19591025T020000
  836.78 +END:STANDARD
  836.79 +BEGIN:DAYLIGHT
  836.80 +TZOFFSETFROM:-0700
  836.81 +TZOFFSETTO:-0600
  836.82 +TZNAME:MWT
  836.83 +DTSTART:19420209T020000
  836.84 +RDATE:19420209T020000
  836.85 +END:DAYLIGHT
  836.86 +BEGIN:DAYLIGHT
  836.87 +TZOFFSETFROM:-0600
  836.88 +TZOFFSETTO:-0600
  836.89 +TZNAME:MPT
  836.90 +DTSTART:19450814T170000
  836.91 +RDATE:19450814T170000
  836.92 +END:DAYLIGHT
  836.93 +BEGIN:STANDARD
  836.94 +TZOFFSETFROM:-0700
  836.95 +TZOFFSETTO:-0600
  836.96 +TZNAME:CST
  836.97 +DTSTART:19600424T020000
  836.98 +RDATE:19600424T020000
  836.99 +END:STANDARD
 836.100 +END:VTIMEZONE
 836.101 +END:VCALENDAR
   837.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   837.2 +++ b/src/zoneinfo/America/Resolute.ics	Tue Feb 10 18:12:00 2015 +0100
   837.3 @@ -0,0 +1,123 @@
   837.4 +BEGIN:VCALENDAR
   837.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   837.6 +VERSION:2.0
   837.7 +BEGIN:VTIMEZONE
   837.8 +TZID:America/Resolute
   837.9 +TZURL:http://tzurl.org/zoneinfo/America/Resolute
  837.10 +X-LIC-LOCATION:America/Resolute
  837.11 +BEGIN:STANDARD
  837.12 +TZOFFSETFROM:-0500
  837.13 +TZOFFSETTO:-0600
  837.14 +TZNAME:CST
  837.15 +DTSTART:20071104T020000
  837.16 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  837.17 +END:STANDARD
  837.18 +BEGIN:DAYLIGHT
  837.19 +TZOFFSETFROM:-0600
  837.20 +TZOFFSETTO:-0500
  837.21 +TZNAME:CDT
  837.22 +DTSTART:20080309T020000
  837.23 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  837.24 +END:DAYLIGHT
  837.25 +BEGIN:STANDARD
  837.26 +TZOFFSETFROM:+0000
  837.27 +TZOFFSETTO:-0600
  837.28 +TZNAME:CST
  837.29 +DTSTART:19470831T000000
  837.30 +RDATE:19470831T000000
  837.31 +END:STANDARD
  837.32 +BEGIN:DAYLIGHT
  837.33 +TZOFFSETFROM:-0600
  837.34 +TZOFFSETTO:-0400
  837.35 +TZNAME:CDDT
  837.36 +DTSTART:19650425T000000
  837.37 +RDATE:19650425T000000
  837.38 +END:DAYLIGHT
  837.39 +BEGIN:STANDARD
  837.40 +TZOFFSETFROM:-0400
  837.41 +TZOFFSETTO:-0600
  837.42 +TZNAME:CST
  837.43 +DTSTART:19651031T020000
  837.44 +RDATE:19651031T020000
  837.45 +END:STANDARD
  837.46 +BEGIN:DAYLIGHT
  837.47 +TZOFFSETFROM:-0600
  837.48 +TZOFFSETTO:-0500
  837.49 +TZNAME:CDT
  837.50 +DTSTART:19800427T020000
  837.51 +RDATE:19800427T020000
  837.52 +RDATE:19810426T020000
  837.53 +RDATE:19820425T020000
  837.54 +RDATE:19830424T020000
  837.55 +RDATE:19840429T020000
  837.56 +RDATE:19850428T020000
  837.57 +RDATE:19860427T020000
  837.58 +RDATE:19870405T020000
  837.59 +RDATE:19880403T020000
  837.60 +RDATE:19890402T020000
  837.61 +RDATE:19900401T020000
  837.62 +RDATE:19910407T020000
  837.63 +RDATE:19920405T020000
  837.64 +RDATE:19930404T020000
  837.65 +RDATE:19940403T020000
  837.66 +RDATE:19950402T020000
  837.67 +RDATE:19960407T020000
  837.68 +RDATE:19970406T020000
  837.69 +RDATE:19980405T020000
  837.70 +RDATE:19990404T020000
  837.71 +RDATE:20000402T020000
  837.72 +RDATE:20020407T020000
  837.73 +RDATE:20030406T020000
  837.74 +RDATE:20040404T020000
  837.75 +RDATE:20050403T020000
  837.76 +RDATE:20060402T020000
  837.77 +END:DAYLIGHT
  837.78 +BEGIN:STANDARD
  837.79 +TZOFFSETFROM:-0500
  837.80 +TZOFFSETTO:-0600
  837.81 +TZNAME:CST
  837.82 +DTSTART:19801026T020000
  837.83 +RDATE:19801026T020000
  837.84 +RDATE:19811025T020000
  837.85 +RDATE:19821031T020000
  837.86 +RDATE:19831030T020000
  837.87 +RDATE:19841028T020000
  837.88 +RDATE:19851027T020000
  837.89 +RDATE:19861026T020000
  837.90 +RDATE:19871025T020000
  837.91 +RDATE:19881030T020000
  837.92 +RDATE:19891029T020000
  837.93 +RDATE:19901028T020000
  837.94 +RDATE:19911027T020000
  837.95 +RDATE:19921025T020000
  837.96 +RDATE:19931031T020000
  837.97 +RDATE:19941030T020000
  837.98 +RDATE:19951029T020000
  837.99 +RDATE:19961027T020000
 837.100 +RDATE:19971026T020000
 837.101 +RDATE:19981025T020000
 837.102 +RDATE:19991031T020000
 837.103 +RDATE:20011028T020000
 837.104 +RDATE:20021027T020000
 837.105 +RDATE:20031026T020000
 837.106 +RDATE:20041031T020000
 837.107 +RDATE:20051030T020000
 837.108 +END:STANDARD
 837.109 +BEGIN:STANDARD
 837.110 +TZOFFSETFROM:-0500
 837.111 +TZOFFSETTO:-0500
 837.112 +TZNAME:EST
 837.113 +DTSTART:20001029T020000
 837.114 +RDATE:20001029T020000
 837.115 +RDATE:20061029T020000
 837.116 +END:STANDARD
 837.117 +BEGIN:DAYLIGHT
 837.118 +TZOFFSETFROM:-0500
 837.119 +TZOFFSETTO:-0500
 837.120 +TZNAME:CDT
 837.121 +DTSTART:20010401T020000
 837.122 +RDATE:20010401T020000
 837.123 +RDATE:20070311T020000
 837.124 +END:DAYLIGHT
 837.125 +END:VTIMEZONE
 837.126 +END:VCALENDAR
   838.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   838.2 +++ b/src/zoneinfo/America/Rio_Branco.ics	Tue Feb 10 18:12:00 2015 +0100
   838.3 @@ -0,0 +1,70 @@
   838.4 +BEGIN:VCALENDAR
   838.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   838.6 +VERSION:2.0
   838.7 +BEGIN:VTIMEZONE
   838.8 +TZID:America/Rio_Branco
   838.9 +TZURL:http://tzurl.org/zoneinfo/America/Rio_Branco
  838.10 +X-LIC-LOCATION:America/Rio_Branco
  838.11 +BEGIN:STANDARD
  838.12 +TZOFFSETFROM:-043112
  838.13 +TZOFFSETTO:-0500
  838.14 +TZNAME:ACT
  838.15 +DTSTART:19140101T000000
  838.16 +RDATE:19140101T000000
  838.17 +END:STANDARD
  838.18 +BEGIN:DAYLIGHT
  838.19 +TZOFFSETFROM:-0500
  838.20 +TZOFFSETTO:-0400
  838.21 +TZNAME:ACST
  838.22 +DTSTART:19311003T110000
  838.23 +RDATE:19311003T110000
  838.24 +RDATE:19321003T000000
  838.25 +RDATE:19491201T000000
  838.26 +RDATE:19501201T000000
  838.27 +RDATE:19511201T000000
  838.28 +RDATE:19521201T000000
  838.29 +RDATE:19631209T000000
  838.30 +RDATE:19650131T000000
  838.31 +RDATE:19651201T000000
  838.32 +RDATE:19661101T000000
  838.33 +RDATE:19671101T000000
  838.34 +RDATE:19851102T000000
  838.35 +RDATE:19861025T000000
  838.36 +RDATE:19871025T000000
  838.37 +END:DAYLIGHT
  838.38 +BEGIN:STANDARD
  838.39 +TZOFFSETFROM:-0400
  838.40 +TZOFFSETTO:-0500
  838.41 +TZNAME:ACT
  838.42 +DTSTART:19320401T000000
  838.43 +RDATE:19320401T000000
  838.44 +RDATE:19330401T000000
  838.45 +RDATE:19500416T010000
  838.46 +RDATE:19510401T000000
  838.47 +RDATE:19520401T000000
  838.48 +RDATE:19530301T000000
  838.49 +RDATE:19640301T000000
  838.50 +RDATE:19650331T000000
  838.51 +RDATE:19660301T000000
  838.52 +RDATE:19670301T000000
  838.53 +RDATE:19680301T000000
  838.54 +RDATE:19860315T000000
  838.55 +RDATE:19870214T000000
  838.56 +RDATE:19880207T000000
  838.57 +END:STANDARD
  838.58 +BEGIN:STANDARD
  838.59 +TZOFFSETFROM:-0500
  838.60 +TZOFFSETTO:-0500
  838.61 +TZNAME:ACT
  838.62 +DTSTART:19880912T000000
  838.63 +RDATE:19880912T000000
  838.64 +END:STANDARD
  838.65 +BEGIN:STANDARD
  838.66 +TZOFFSETFROM:-0500
  838.67 +TZOFFSETTO:-0400
  838.68 +TZNAME:AMT
  838.69 +DTSTART:20080624T000000
  838.70 +RDATE:20080624T000000
  838.71 +END:STANDARD
  838.72 +END:VTIMEZONE
  838.73 +END:VCALENDAR
   839.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   839.2 +++ b/src/zoneinfo/America/Santa_Isabel.ics	Tue Feb 10 18:12:00 2015 +0100
   839.3 @@ -0,0 +1,107 @@
   839.4 +BEGIN:VCALENDAR
   839.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   839.6 +VERSION:2.0
   839.7 +BEGIN:VTIMEZONE
   839.8 +TZID:America/Santa_Isabel
   839.9 +TZURL:http://tzurl.org/zoneinfo/America/Santa_Isabel
  839.10 +X-LIC-LOCATION:America/Santa_Isabel
  839.11 +BEGIN:STANDARD
  839.12 +TZOFFSETFROM:-0700
  839.13 +TZOFFSETTO:-0800
  839.14 +TZNAME:PST
  839.15 +DTSTART:19761031T020000
  839.16 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  839.17 +END:STANDARD
  839.18 +BEGIN:DAYLIGHT
  839.19 +TZOFFSETFROM:-0800
  839.20 +TZOFFSETTO:-0700
  839.21 +TZNAME:PDT
  839.22 +DTSTART:19870405T020000
  839.23 +RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU
  839.24 +END:DAYLIGHT
  839.25 +BEGIN:STANDARD
  839.26 +TZOFFSETFROM:-073928
  839.27 +TZOFFSETTO:-0700
  839.28 +TZNAME:MST
  839.29 +DTSTART:19220101T002032
  839.30 +RDATE:19220101T002032
  839.31 +END:STANDARD
  839.32 +BEGIN:STANDARD
  839.33 +TZOFFSETFROM:-0700
  839.34 +TZOFFSETTO:-0800
  839.35 +TZNAME:PST
  839.36 +DTSTART:19240101T000000
  839.37 +RDATE:19240101T000000
  839.38 +RDATE:19301115T000000
  839.39 +RDATE:19310930T000000
  839.40 +RDATE:19451112T000000
  839.41 +RDATE:19490114T000000
  839.42 +RDATE:19540926T020000
  839.43 +RDATE:19550925T020000
  839.44 +RDATE:19560930T020000
  839.45 +RDATE:19570929T020000
  839.46 +RDATE:19580928T020000
  839.47 +RDATE:19590927T020000
  839.48 +RDATE:19600925T020000
  839.49 +END:STANDARD
  839.50 +BEGIN:STANDARD
  839.51 +TZOFFSETFROM:-0800
  839.52 +TZOFFSETTO:-0700
  839.53 +TZNAME:MST
  839.54 +DTSTART:19270610T230000
  839.55 +RDATE:19270610T230000
  839.56 +END:STANDARD
  839.57 +BEGIN:DAYLIGHT
  839.58 +TZOFFSETFROM:-0800
  839.59 +TZOFFSETTO:-0700
  839.60 +TZNAME:PDT
  839.61 +DTSTART:19310401T000000
  839.62 +RDATE:19310401T000000
  839.63 +RDATE:19480405T000000
  839.64 +RDATE:19540425T020000
  839.65 +RDATE:19550424T020000
  839.66 +RDATE:19560429T020000
  839.67 +RDATE:19570428T020000
  839.68 +RDATE:19580427T020000
  839.69 +RDATE:19590426T020000
  839.70 +RDATE:19600424T020000
  839.71 +RDATE:19760425T020000
  839.72 +RDATE:19770424T020000
  839.73 +RDATE:19780430T020000
  839.74 +RDATE:19790429T020000
  839.75 +RDATE:19800427T020000
  839.76 +RDATE:19810426T020000
  839.77 +RDATE:19820425T020000
  839.78 +RDATE:19830424T020000
  839.79 +RDATE:19840429T020000
  839.80 +RDATE:19850428T020000
  839.81 +RDATE:19860427T020000
  839.82 +END:DAYLIGHT
  839.83 +BEGIN:DAYLIGHT
  839.84 +TZOFFSETFROM:-0800
  839.85 +TZOFFSETTO:-0700
  839.86 +TZNAME:PWT
  839.87 +DTSTART:19420424T000000
  839.88 +RDATE:19420424T000000
  839.89 +END:DAYLIGHT
  839.90 +BEGIN:DAYLIGHT
  839.91 +TZOFFSETFROM:-0700
  839.92 +TZOFFSETTO:-0700
  839.93 +TZNAME:PPT
  839.94 +DTSTART:19450814T160000
  839.95 +RDATE:19450814T160000
  839.96 +END:DAYLIGHT
  839.97 +BEGIN:STANDARD
  839.98 +TZOFFSETFROM:-0800
  839.99 +TZOFFSETTO:-0800
 839.100 +TZNAME:PST
 839.101 +DTSTART:19540101T000000
 839.102 +RDATE:19540101T000000
 839.103 +RDATE:19610101T000000
 839.104 +RDATE:19760101T000000
 839.105 +RDATE:19960101T000000
 839.106 +RDATE:20010101T000000
 839.107 +RDATE:20020220T000000
 839.108 +END:STANDARD
 839.109 +END:VTIMEZONE
 839.110 +END:VCALENDAR
   840.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   840.2 +++ b/src/zoneinfo/America/Santarem.ics	Tue Feb 10 18:12:00 2015 +0100
   840.3 @@ -0,0 +1,70 @@
   840.4 +BEGIN:VCALENDAR
   840.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   840.6 +VERSION:2.0
   840.7 +BEGIN:VTIMEZONE
   840.8 +TZID:America/Santarem
   840.9 +TZURL:http://tzurl.org/zoneinfo/America/Santarem
  840.10 +X-LIC-LOCATION:America/Santarem
  840.11 +BEGIN:STANDARD
  840.12 +TZOFFSETFROM:-033848
  840.13 +TZOFFSETTO:-0400
  840.14 +TZNAME:AMT
  840.15 +DTSTART:19140101T000000
  840.16 +RDATE:19140101T000000
  840.17 +END:STANDARD
  840.18 +BEGIN:DAYLIGHT
  840.19 +TZOFFSETFROM:-0400
  840.20 +TZOFFSETTO:-0300
  840.21 +TZNAME:AMST
  840.22 +DTSTART:19311003T110000
  840.23 +RDATE:19311003T110000
  840.24 +RDATE:19321003T000000
  840.25 +RDATE:19491201T000000
  840.26 +RDATE:19501201T000000
  840.27 +RDATE:19511201T000000
  840.28 +RDATE:19521201T000000
  840.29 +RDATE:19631209T000000
  840.30 +RDATE:19650131T000000
  840.31 +RDATE:19651201T000000
  840.32 +RDATE:19661101T000000
  840.33 +RDATE:19671101T000000
  840.34 +RDATE:19851102T000000
  840.35 +RDATE:19861025T000000
  840.36 +RDATE:19871025T000000
  840.37 +END:DAYLIGHT
  840.38 +BEGIN:STANDARD
  840.39 +TZOFFSETFROM:-0300
  840.40 +TZOFFSETTO:-0400
  840.41 +TZNAME:AMT
  840.42 +DTSTART:19320401T000000
  840.43 +RDATE:19320401T000000
  840.44 +RDATE:19330401T000000
  840.45 +RDATE:19500416T010000
  840.46 +RDATE:19510401T000000
  840.47 +RDATE:19520401T000000
  840.48 +RDATE:19530301T000000
  840.49 +RDATE:19640301T000000
  840.50 +RDATE:19650331T000000
  840.51 +RDATE:19660301T000000
  840.52 +RDATE:19670301T000000
  840.53 +RDATE:19680301T000000
  840.54 +RDATE:19860315T000000
  840.55 +RDATE:19870214T000000
  840.56 +RDATE:19880207T000000
  840.57 +END:STANDARD
  840.58 +BEGIN:STANDARD
  840.59 +TZOFFSETFROM:-0400
  840.60 +TZOFFSETTO:-0400
  840.61 +TZNAME:AMT
  840.62 +DTSTART:19880912T000000
  840.63 +RDATE:19880912T000000
  840.64 +END:STANDARD
  840.65 +BEGIN:STANDARD
  840.66 +TZOFFSETFROM:-0400
  840.67 +TZOFFSETTO:-0300
  840.68 +TZNAME:BRT
  840.69 +DTSTART:20080624T000000
  840.70 +RDATE:20080624T000000
  840.71 +END:STANDARD
  840.72 +END:VTIMEZONE
  840.73 +END:VCALENDAR
   841.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   841.2 +++ b/src/zoneinfo/America/Santiago.ics	Tue Feb 10 18:12:00 2015 +0100
   841.3 @@ -0,0 +1,210 @@
   841.4 +BEGIN:VCALENDAR
   841.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   841.6 +VERSION:2.0
   841.7 +BEGIN:VTIMEZONE
   841.8 +TZID:America/Santiago
   841.9 +TZURL:http://tzurl.org/zoneinfo/America/Santiago
  841.10 +X-LIC-LOCATION:America/Santiago
  841.11 +BEGIN:STANDARD
  841.12 +TZOFFSETFROM:-0300
  841.13 +TZOFFSETTO:-0400
  841.14 +TZNAME:CLT
  841.15 +DTSTART:20120311T000000
  841.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYMONTHDAY=9,10,11,12,13,14,15;BYDAY=SU
  841.17 +END:STANDARD
  841.18 +BEGIN:DAYLIGHT
  841.19 +TZOFFSETFROM:-0400
  841.20 +TZOFFSETTO:-0300
  841.21 +TZNAME:CLST
  841.22 +DTSTART:20121014T000000
  841.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYMONTHDAY=9,10,11,12,13,14,15;BYDAY=SU
  841.24 +END:DAYLIGHT
  841.25 +BEGIN:STANDARD
  841.26 +TZOFFSETFROM:-044246
  841.27 +TZOFFSETTO:-044246
  841.28 +TZNAME:SMT
  841.29 +DTSTART:18900101T000000
  841.30 +RDATE:18900101T000000
  841.31 +END:STANDARD
  841.32 +BEGIN:STANDARD
  841.33 +TZOFFSETFROM:-044246
  841.34 +TZOFFSETTO:-0500
  841.35 +TZNAME:CLT
  841.36 +DTSTART:19100101T000000
  841.37 +RDATE:19100101T000000
  841.38 +END:STANDARD
  841.39 +BEGIN:STANDARD
  841.40 +TZOFFSETFROM:-0500
  841.41 +TZOFFSETTO:-044246
  841.42 +TZNAME:SMT
  841.43 +DTSTART:19160701T000000
  841.44 +RDATE:19160701T000000
  841.45 +END:STANDARD
  841.46 +BEGIN:STANDARD
  841.47 +TZOFFSETFROM:-044246
  841.48 +TZOFFSETTO:-0400
  841.49 +TZNAME:CLT
  841.50 +DTSTART:19180901T000000
  841.51 +RDATE:19180901T000000
  841.52 +END:STANDARD
  841.53 +BEGIN:STANDARD
  841.54 +TZOFFSETFROM:-0400
  841.55 +TZOFFSETTO:-044246
  841.56 +TZNAME:SMT
  841.57 +DTSTART:19190701T000000
  841.58 +RDATE:19190701T000000
  841.59 +END:STANDARD
  841.60 +BEGIN:DAYLIGHT
  841.61 +TZOFFSETFROM:-044246
  841.62 +TZOFFSETTO:-0400
  841.63 +TZNAME:CLST
  841.64 +DTSTART:19270901T000000
  841.65 +RDATE:19270901T000000
  841.66 +END:DAYLIGHT
  841.67 +BEGIN:STANDARD
  841.68 +TZOFFSETFROM:-0400
  841.69 +TZOFFSETTO:-0500
  841.70 +TZNAME:CLT
  841.71 +DTSTART:19280401T000000
  841.72 +RDATE:19280401T000000
  841.73 +RDATE:19290401T000000
  841.74 +RDATE:19300401T000000
  841.75 +RDATE:19310401T000000
  841.76 +RDATE:19320401T000000
  841.77 +RDATE:19420601T000000
  841.78 +RDATE:19460831T230000
  841.79 +END:STANDARD
  841.80 +BEGIN:DAYLIGHT
  841.81 +TZOFFSETFROM:-0500
  841.82 +TZOFFSETTO:-0400
  841.83 +TZNAME:CLST
  841.84 +DTSTART:19280901T000000
  841.85 +RDATE:19280901T000000
  841.86 +RDATE:19290901T000000
  841.87 +RDATE:19300901T000000
  841.88 +RDATE:19310901T000000
  841.89 +RDATE:19320901T000000
  841.90 +RDATE:19420801T000000
  841.91 +END:DAYLIGHT
  841.92 +BEGIN:DAYLIGHT
  841.93 +TZOFFSETFROM:-0400
  841.94 +TZOFFSETTO:-0400
  841.95 +TZNAME:CLST
  841.96 +DTSTART:19460715T000000
  841.97 +RDATE:19460715T000000
  841.98 +END:DAYLIGHT
  841.99 +BEGIN:STANDARD
 841.100 +TZOFFSETFROM:-0500
 841.101 +TZOFFSETTO:-0500
 841.102 +TZNAME:CLT
 841.103 +DTSTART:19470331T230000
 841.104 +RDATE:19470331T230000
 841.105 +END:STANDARD
 841.106 +BEGIN:STANDARD
 841.107 +TZOFFSETFROM:-0500
 841.108 +TZOFFSETTO:-0400
 841.109 +TZNAME:CLT
 841.110 +DTSTART:19470522T000000
 841.111 +RDATE:19470522T000000
 841.112 +END:STANDARD
 841.113 +BEGIN:DAYLIGHT
 841.114 +TZOFFSETFROM:-0400
 841.115 +TZOFFSETTO:-0300
 841.116 +TZNAME:CLST
 841.117 +DTSTART:19681103T000000
 841.118 +RDATE:19681103T000000
 841.119 +RDATE:19691123T000000
 841.120 +RDATE:19701011T000000
 841.121 +RDATE:19711010T000000
 841.122 +RDATE:19721015T000000
 841.123 +RDATE:19730930T000000
 841.124 +RDATE:19741013T000000
 841.125 +RDATE:19751012T000000
 841.126 +RDATE:19761010T000000
 841.127 +RDATE:19771009T000000
 841.128 +RDATE:19781015T000000
 841.129 +RDATE:19791014T000000
 841.130 +RDATE:19801012T000000
 841.131 +RDATE:19811011T000000
 841.132 +RDATE:19821010T000000
 841.133 +RDATE:19831009T000000
 841.134 +RDATE:19841014T000000
 841.135 +RDATE:19851013T000000
 841.136 +RDATE:19861012T000000
 841.137 +RDATE:19871011T000000
 841.138 +RDATE:19881002T000000
 841.139 +RDATE:19891015T000000
 841.140 +RDATE:19900916T000000
 841.141 +RDATE:19911013T000000
 841.142 +RDATE:19921011T000000
 841.143 +RDATE:19931010T000000
 841.144 +RDATE:19941009T000000
 841.145 +RDATE:19951015T000000
 841.146 +RDATE:19961013T000000
 841.147 +RDATE:19971012T000000
 841.148 +RDATE:19980927T000000
 841.149 +RDATE:19991010T000000
 841.150 +RDATE:20001015T000000
 841.151 +RDATE:20011014T000000
 841.152 +RDATE:20021013T000000
 841.153 +RDATE:20031012T000000
 841.154 +RDATE:20041010T000000
 841.155 +RDATE:20051009T000000
 841.156 +RDATE:20061015T000000
 841.157 +RDATE:20071014T000000
 841.158 +RDATE:20081012T000000
 841.159 +RDATE:20091011T000000
 841.160 +RDATE:20101010T000000
 841.161 +RDATE:20110821T000000
 841.162 +END:DAYLIGHT
 841.163 +BEGIN:STANDARD
 841.164 +TZOFFSETFROM:-0300
 841.165 +TZOFFSETTO:-0400
 841.166 +TZNAME:CLT
 841.167 +DTSTART:19690330T000000
 841.168 +RDATE:19690330T000000
 841.169 +RDATE:19700329T000000
 841.170 +RDATE:19710314T000000
 841.171 +RDATE:19720312T000000
 841.172 +RDATE:19730311T000000
 841.173 +RDATE:19740310T000000
 841.174 +RDATE:19750309T000000
 841.175 +RDATE:19760314T000000
 841.176 +RDATE:19770313T000000
 841.177 +RDATE:19780312T000000
 841.178 +RDATE:19790311T000000
 841.179 +RDATE:19800309T000000
 841.180 +RDATE:19810315T000000
 841.181 +RDATE:19820314T000000
 841.182 +RDATE:19830313T000000
 841.183 +RDATE:19840311T000000
 841.184 +RDATE:19850310T000000
 841.185 +RDATE:19860309T000000
 841.186 +RDATE:19870412T000000
 841.187 +RDATE:19880313T000000
 841.188 +RDATE:19890312T000000
 841.189 +RDATE:19900318T000000
 841.190 +RDATE:19910310T000000
 841.191 +RDATE:19920315T000000
 841.192 +RDATE:19930314T000000
 841.193 +RDATE:19940313T000000
 841.194 +RDATE:19950312T000000
 841.195 +RDATE:19960310T000000
 841.196 +RDATE:19970330T000000
 841.197 +RDATE:19980315T000000
 841.198 +RDATE:19990404T000000
 841.199 +RDATE:20000312T000000
 841.200 +RDATE:20010311T000000
 841.201 +RDATE:20020310T000000
 841.202 +RDATE:20030309T000000
 841.203 +RDATE:20040314T000000
 841.204 +RDATE:20050313T000000
 841.205 +RDATE:20060312T000000
 841.206 +RDATE:20070311T000000
 841.207 +RDATE:20080330T000000
 841.208 +RDATE:20090315T000000
 841.209 +RDATE:20100404T000000
 841.210 +RDATE:20110508T000000
 841.211 +END:STANDARD
 841.212 +END:VTIMEZONE
 841.213 +END:VCALENDAR
   842.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   842.2 +++ b/src/zoneinfo/America/Santo_Domingo.ics	Tue Feb 10 18:12:00 2015 +0100
   842.3 @@ -0,0 +1,68 @@
   842.4 +BEGIN:VCALENDAR
   842.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   842.6 +VERSION:2.0
   842.7 +BEGIN:VTIMEZONE
   842.8 +TZID:America/Santo_Domingo
   842.9 +TZURL:http://tzurl.org/zoneinfo/America/Santo_Domingo
  842.10 +X-LIC-LOCATION:America/Santo_Domingo
  842.11 +BEGIN:STANDARD
  842.12 +TZOFFSETFROM:-043936
  842.13 +TZOFFSETTO:-0440
  842.14 +TZNAME:SDMT
  842.15 +DTSTART:18900101T000000
  842.16 +RDATE:18900101T000000
  842.17 +END:STANDARD
  842.18 +BEGIN:STANDARD
  842.19 +TZOFFSETFROM:-0440
  842.20 +TZOFFSETTO:-0500
  842.21 +TZNAME:EST
  842.22 +DTSTART:19330401T120000
  842.23 +RDATE:19330401T120000
  842.24 +END:STANDARD
  842.25 +BEGIN:DAYLIGHT
  842.26 +TZOFFSETFROM:-0500
  842.27 +TZOFFSETTO:-0400
  842.28 +TZNAME:EDT
  842.29 +DTSTART:19661030T000000
  842.30 +RDATE:19661030T000000
  842.31 +END:DAYLIGHT
  842.32 +BEGIN:STANDARD
  842.33 +TZOFFSETFROM:-0400
  842.34 +TZOFFSETTO:-0500
  842.35 +TZNAME:EST
  842.36 +DTSTART:19670228T000000
  842.37 +RDATE:19670228T000000
  842.38 +RDATE:20001029T020000
  842.39 +END:STANDARD
  842.40 +BEGIN:DAYLIGHT
  842.41 +TZOFFSETFROM:-0500
  842.42 +TZOFFSETTO:-0430
  842.43 +TZNAME:EHDT
  842.44 +DTSTART:19691026T000000
  842.45 +RDATE:19691026T000000
  842.46 +RDATE:19701025T000000
  842.47 +RDATE:19711031T000000
  842.48 +RDATE:19721029T000000
  842.49 +RDATE:19731028T000000
  842.50 +END:DAYLIGHT
  842.51 +BEGIN:STANDARD
  842.52 +TZOFFSETFROM:-0430
  842.53 +TZOFFSETTO:-0500
  842.54 +TZNAME:EST
  842.55 +DTSTART:19700221T000000
  842.56 +RDATE:19700221T000000
  842.57 +RDATE:19710120T000000
  842.58 +RDATE:19720121T000000
  842.59 +RDATE:19730121T000000
  842.60 +RDATE:19740121T000000
  842.61 +END:STANDARD
  842.62 +BEGIN:STANDARD
  842.63 +TZOFFSETFROM:-0500
  842.64 +TZOFFSETTO:-0400
  842.65 +TZNAME:AST
  842.66 +DTSTART:19741027T000000
  842.67 +RDATE:19741027T000000
  842.68 +RDATE:20001203T010000
  842.69 +END:STANDARD
  842.70 +END:VTIMEZONE
  842.71 +END:VCALENDAR
   843.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   843.2 +++ b/src/zoneinfo/America/Sao_Paulo.ics	Tue Feb 10 18:12:00 2015 +0100
   843.3 @@ -0,0 +1,152 @@
   843.4 +BEGIN:VCALENDAR
   843.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   843.6 +VERSION:2.0
   843.7 +BEGIN:VTIMEZONE
   843.8 +TZID:America/Sao_Paulo
   843.9 +TZURL:http://tzurl.org/zoneinfo/America/Sao_Paulo
  843.10 +X-LIC-LOCATION:America/Sao_Paulo
  843.11 +BEGIN:DAYLIGHT
  843.12 +TZOFFSETFROM:-0300
  843.13 +TZOFFSETTO:-0200
  843.14 +TZNAME:BRST
  843.15 +DTSTART:20081019T000000
  843.16 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=3SU
  843.17 +END:DAYLIGHT
  843.18 +BEGIN:STANDARD
  843.19 +TZOFFSETFROM:-0300
  843.20 +TZOFFSETTO:-0300
  843.21 +TZNAME:BRT
  843.22 +DTSTART:20380221T000000
  843.23 +RRULE:FREQ=YEARLY;BYMONTH=2;BYDAY=3SU
  843.24 +END:STANDARD
  843.25 +BEGIN:STANDARD
  843.26 +TZOFFSETFROM:-030628
  843.27 +TZOFFSETTO:-0300
  843.28 +TZNAME:BRT
  843.29 +DTSTART:19140101T000000
  843.30 +RDATE:19140101T000000
  843.31 +END:STANDARD
  843.32 +BEGIN:DAYLIGHT
  843.33 +TZOFFSETFROM:-0300
  843.34 +TZOFFSETTO:-0200
  843.35 +TZNAME:BRST
  843.36 +DTSTART:19311003T110000
  843.37 +RDATE:19311003T110000
  843.38 +RDATE:19321003T000000
  843.39 +RDATE:19491201T000000
  843.40 +RDATE:19501201T000000
  843.41 +RDATE:19511201T000000
  843.42 +RDATE:19521201T000000
  843.43 +RDATE:19631023T000000
  843.44 +RDATE:19650131T000000
  843.45 +RDATE:19651201T000000
  843.46 +RDATE:19661101T000000
  843.47 +RDATE:19671101T000000
  843.48 +RDATE:19851102T000000
  843.49 +RDATE:19861025T000000
  843.50 +RDATE:19871025T000000
  843.51 +RDATE:19881016T000000
  843.52 +RDATE:19891015T000000
  843.53 +RDATE:19901021T000000
  843.54 +RDATE:19911020T000000
  843.55 +RDATE:19921025T000000
  843.56 +RDATE:19931017T000000
  843.57 +RDATE:19941016T000000
  843.58 +RDATE:19951015T000000
  843.59 +RDATE:19961006T000000
  843.60 +RDATE:19971006T000000
  843.61 +RDATE:19981011T000000
  843.62 +RDATE:19991003T000000
  843.63 +RDATE:20001008T000000
  843.64 +RDATE:20011014T000000
  843.65 +RDATE:20021103T000000
  843.66 +RDATE:20031019T000000
  843.67 +RDATE:20041102T000000
  843.68 +RDATE:20051016T000000
  843.69 +RDATE:20061105T000000
  843.70 +RDATE:20071014T000000
  843.71 +END:DAYLIGHT
  843.72 +BEGIN:STANDARD
  843.73 +TZOFFSETFROM:-0200
  843.74 +TZOFFSETTO:-0300
  843.75 +TZNAME:BRT
  843.76 +DTSTART:19320401T000000
  843.77 +RDATE:19320401T000000
  843.78 +RDATE:19330401T000000
  843.79 +RDATE:19500416T010000
  843.80 +RDATE:19510401T000000
  843.81 +RDATE:19520401T000000
  843.82 +RDATE:19530301T000000
  843.83 +RDATE:19640301T000000
  843.84 +RDATE:19650331T000000
  843.85 +RDATE:19660301T000000
  843.86 +RDATE:19670301T000000
  843.87 +RDATE:19680301T000000
  843.88 +RDATE:19860315T000000
  843.89 +RDATE:19870214T000000
  843.90 +RDATE:19880207T000000
  843.91 +RDATE:19890129T000000
  843.92 +RDATE:19900211T000000
  843.93 +RDATE:19910217T000000
  843.94 +RDATE:19920209T000000
  843.95 +RDATE:19930131T000000
  843.96 +RDATE:19940220T000000
  843.97 +RDATE:19950219T000000
  843.98 +RDATE:19960211T000000
  843.99 +RDATE:19970216T000000
 843.100 +RDATE:19980301T000000
 843.101 +RDATE:19990221T000000
 843.102 +RDATE:20000227T000000
 843.103 +RDATE:20010218T000000
 843.104 +RDATE:20020217T000000
 843.105 +RDATE:20030216T000000
 843.106 +RDATE:20040215T000000
 843.107 +RDATE:20050220T000000
 843.108 +RDATE:20060219T000000
 843.109 +RDATE:20070225T000000
 843.110 +RDATE:20080217T000000
 843.111 +RDATE:20090215T000000
 843.112 +RDATE:20100221T000000
 843.113 +RDATE:20110220T000000
 843.114 +RDATE:20120226T000000
 843.115 +RDATE:20130217T000000
 843.116 +RDATE:20140216T000000
 843.117 +END:STANDARD
 843.118 +BEGIN:DAYLIGHT
 843.119 +TZOFFSETFROM:-0200
 843.120 +TZOFFSETTO:-0200
 843.121 +TZNAME:BRST
 843.122 +DTSTART:19640101T000000
 843.123 +RDATE:19640101T000000
 843.124 +END:DAYLIGHT
 843.125 +BEGIN:STANDARD
 843.126 +TZOFFSETFROM:-0300
 843.127 +TZOFFSETTO:-0300
 843.128 +TZNAME:BRT
 843.129 +DTSTART:20150222T000000
 843.130 +RDATE:20150222T000000
 843.131 +RDATE:20160221T000000
 843.132 +RDATE:20170219T000000
 843.133 +RDATE:20180218T000000
 843.134 +RDATE:20190217T000000
 843.135 +RDATE:20200216T000000
 843.136 +RDATE:20210221T000000
 843.137 +RDATE:20220220T000000
 843.138 +RDATE:20230226T000000
 843.139 +RDATE:20240218T000000
 843.140 +RDATE:20250216T000000
 843.141 +RDATE:20260222T000000
 843.142 +RDATE:20270221T000000
 843.143 +RDATE:20280220T000000
 843.144 +RDATE:20290218T000000
 843.145 +RDATE:20300217T000000
 843.146 +RDATE:20310216T000000
 843.147 +RDATE:20320215T000000
 843.148 +RDATE:20330220T000000
 843.149 +RDATE:20340226T000000
 843.150 +RDATE:20350218T000000
 843.151 +RDATE:20360217T000000
 843.152 +RDATE:20370222T000000
 843.153 +END:STANDARD
 843.154 +END:VTIMEZONE
 843.155 +END:VCALENDAR
   844.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   844.2 +++ b/src/zoneinfo/America/Scoresbysund.ics	Tue Feb 10 18:12:00 2015 +0100
   844.3 @@ -0,0 +1,72 @@
   844.4 +BEGIN:VCALENDAR
   844.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   844.6 +VERSION:2.0
   844.7 +BEGIN:VTIMEZONE
   844.8 +TZID:America/Scoresbysund
   844.9 +TZURL:http://tzurl.org/zoneinfo/America/Scoresbysund
  844.10 +X-LIC-LOCATION:America/Scoresbysund
  844.11 +BEGIN:DAYLIGHT
  844.12 +TZOFFSETFROM:-0100
  844.13 +TZOFFSETTO:+0000
  844.14 +TZNAME:EGST
  844.15 +DTSTART:19820328T000000
  844.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  844.17 +END:DAYLIGHT
  844.18 +BEGIN:STANDARD
  844.19 +TZOFFSETFROM:+0000
  844.20 +TZOFFSETTO:-0100
  844.21 +TZNAME:EGT
  844.22 +DTSTART:19961027T010000
  844.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  844.24 +END:STANDARD
  844.25 +BEGIN:STANDARD
  844.26 +TZOFFSETFROM:-012752
  844.27 +TZOFFSETTO:-0200
  844.28 +TZNAME:CGT
  844.29 +DTSTART:19160728T000000
  844.30 +RDATE:19160728T000000
  844.31 +END:STANDARD
  844.32 +BEGIN:DAYLIGHT
  844.33 +TZOFFSETFROM:-0200
  844.34 +TZOFFSETTO:-0100
  844.35 +TZNAME:CGST
  844.36 +DTSTART:19800406T020000
  844.37 +RDATE:19800406T020000
  844.38 +END:DAYLIGHT
  844.39 +BEGIN:STANDARD
  844.40 +TZOFFSETFROM:-0100
  844.41 +TZOFFSETTO:-0200
  844.42 +TZNAME:CGT
  844.43 +DTSTART:19800928T030000
  844.44 +RDATE:19800928T030000
  844.45 +END:STANDARD
  844.46 +BEGIN:DAYLIGHT
  844.47 +TZOFFSETFROM:-0200
  844.48 +TZOFFSETTO:+0000
  844.49 +TZNAME:EGST
  844.50 +DTSTART:19810329T000000
  844.51 +RDATE:19810329T000000
  844.52 +END:DAYLIGHT
  844.53 +BEGIN:STANDARD
  844.54 +TZOFFSETFROM:+0000
  844.55 +TZOFFSETTO:-0100
  844.56 +TZNAME:EGT
  844.57 +DTSTART:19810927T010000
  844.58 +RDATE:19810927T010000
  844.59 +RDATE:19820926T010000
  844.60 +RDATE:19830925T010000
  844.61 +RDATE:19840930T010000
  844.62 +RDATE:19850929T010000
  844.63 +RDATE:19860928T010000
  844.64 +RDATE:19870927T010000
  844.65 +RDATE:19880925T010000
  844.66 +RDATE:19890924T010000
  844.67 +RDATE:19900930T010000
  844.68 +RDATE:19910929T010000
  844.69 +RDATE:19920927T010000
  844.70 +RDATE:19930926T010000
  844.71 +RDATE:19940925T010000
  844.72 +RDATE:19950924T010000
  844.73 +END:STANDARD
  844.74 +END:VTIMEZONE
  844.75 +END:VCALENDAR
   845.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   845.2 +++ b/src/zoneinfo/America/Shiprock.ics	Tue Feb 10 18:12:00 2015 +0100
   845.3 @@ -0,0 +1,159 @@
   845.4 +BEGIN:VCALENDAR
   845.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   845.6 +VERSION:2.0
   845.7 +BEGIN:VTIMEZONE
   845.8 +TZID:America/Shiprock
   845.9 +TZURL:http://tzurl.org/zoneinfo/America/Shiprock
  845.10 +X-LIC-LOCATION:America/Shiprock
  845.11 +BEGIN:DAYLIGHT
  845.12 +TZOFFSETFROM:-0700
  845.13 +TZOFFSETTO:-0600
  845.14 +TZNAME:MDT
  845.15 +DTSTART:20070311T020000
  845.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  845.17 +END:DAYLIGHT
  845.18 +BEGIN:STANDARD
  845.19 +TZOFFSETFROM:-0600
  845.20 +TZOFFSETTO:-0700
  845.21 +TZNAME:MST
  845.22 +DTSTART:20071104T020000
  845.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  845.24 +END:STANDARD
  845.25 +BEGIN:STANDARD
  845.26 +TZOFFSETFROM:-065956
  845.27 +TZOFFSETTO:-0700
  845.28 +TZNAME:MST
  845.29 +DTSTART:18831118T120004
  845.30 +RDATE:18831118T120004
  845.31 +END:STANDARD
  845.32 +BEGIN:DAYLIGHT
  845.33 +TZOFFSETFROM:-0700
  845.34 +TZOFFSETTO:-0600
  845.35 +TZNAME:MDT
  845.36 +DTSTART:19180331T020000
  845.37 +RDATE:19180331T020000
  845.38 +RDATE:19190330T020000
  845.39 +RDATE:19200328T020000
  845.40 +RDATE:19210327T020000
  845.41 +RDATE:19650425T020000
  845.42 +RDATE:19660424T020000
  845.43 +RDATE:19670430T020000
  845.44 +RDATE:19680428T020000
  845.45 +RDATE:19690427T020000
  845.46 +RDATE:19700426T020000
  845.47 +RDATE:19710425T020000
  845.48 +RDATE:19720430T020000
  845.49 +RDATE:19730429T020000
  845.50 +RDATE:19740106T020000
  845.51 +RDATE:19750223T020000
  845.52 +RDATE:19760425T020000
  845.53 +RDATE:19770424T020000
  845.54 +RDATE:19780430T020000
  845.55 +RDATE:19790429T020000
  845.56 +RDATE:19800427T020000
  845.57 +RDATE:19810426T020000
  845.58 +RDATE:19820425T020000
  845.59 +RDATE:19830424T020000
  845.60 +RDATE:19840429T020000
  845.61 +RDATE:19850428T020000
  845.62 +RDATE:19860427T020000
  845.63 +RDATE:19870405T020000
  845.64 +RDATE:19880403T020000
  845.65 +RDATE:19890402T020000
  845.66 +RDATE:19900401T020000
  845.67 +RDATE:19910407T020000
  845.68 +RDATE:19920405T020000
  845.69 +RDATE:19930404T020000
  845.70 +RDATE:19940403T020000
  845.71 +RDATE:19950402T020000
  845.72 +RDATE:19960407T020000
  845.73 +RDATE:19970406T020000
  845.74 +RDATE:19980405T020000
  845.75 +RDATE:19990404T020000
  845.76 +RDATE:20000402T020000
  845.77 +RDATE:20010401T020000
  845.78 +RDATE:20020407T020000
  845.79 +RDATE:20030406T020000
  845.80 +RDATE:20040404T020000
  845.81 +RDATE:20050403T020000
  845.82 +RDATE:20060402T020000
  845.83 +END:DAYLIGHT
  845.84 +BEGIN:STANDARD
  845.85 +TZOFFSETFROM:-0600
  845.86 +TZOFFSETTO:-0700
  845.87 +TZNAME:MST
  845.88 +DTSTART:19181027T020000
  845.89 +RDATE:19181027T020000
  845.90 +RDATE:19191026T020000
  845.91 +RDATE:19201031T020000
  845.92 +RDATE:19210522T020000
  845.93 +RDATE:19450930T020000
  845.94 +RDATE:19651031T020000
  845.95 +RDATE:19661030T020000
  845.96 +RDATE:19671029T020000
  845.97 +RDATE:19681027T020000
  845.98 +RDATE:19691026T020000
  845.99 +RDATE:19701025T020000
 845.100 +RDATE:19711031T020000
 845.101 +RDATE:19721029T020000
 845.102 +RDATE:19731028T020000
 845.103 +RDATE:19741027T020000
 845.104 +RDATE:19751026T020000
 845.105 +RDATE:19761031T020000
 845.106 +RDATE:19771030T020000
 845.107 +RDATE:19781029T020000
 845.108 +RDATE:19791028T020000
 845.109 +RDATE:19801026T020000
 845.110 +RDATE:19811025T020000
 845.111 +RDATE:19821031T020000
 845.112 +RDATE:19831030T020000
 845.113 +RDATE:19841028T020000
 845.114 +RDATE:19851027T020000
 845.115 +RDATE:19861026T020000
 845.116 +RDATE:19871025T020000
 845.117 +RDATE:19881030T020000
 845.118 +RDATE:19891029T020000
 845.119 +RDATE:19901028T020000
 845.120 +RDATE:19911027T020000
 845.121 +RDATE:19921025T020000
 845.122 +RDATE:19931031T020000
 845.123 +RDATE:19941030T020000
 845.124 +RDATE:19951029T020000
 845.125 +RDATE:19961027T020000
 845.126 +RDATE:19971026T020000
 845.127 +RDATE:19981025T020000
 845.128 +RDATE:19991031T020000
 845.129 +RDATE:20001029T020000
 845.130 +RDATE:20011028T020000
 845.131 +RDATE:20021027T020000
 845.132 +RDATE:20031026T020000
 845.133 +RDATE:20041031T020000
 845.134 +RDATE:20051030T020000
 845.135 +RDATE:20061029T020000
 845.136 +END:STANDARD
 845.137 +BEGIN:STANDARD
 845.138 +TZOFFSETFROM:-0700
 845.139 +TZOFFSETTO:-0700
 845.140 +TZNAME:MST
 845.141 +DTSTART:19200101T000000
 845.142 +RDATE:19200101T000000
 845.143 +RDATE:19420101T000000
 845.144 +RDATE:19460101T000000
 845.145 +RDATE:19670101T000000
 845.146 +END:STANDARD
 845.147 +BEGIN:DAYLIGHT
 845.148 +TZOFFSETFROM:-0700
 845.149 +TZOFFSETTO:-0600
 845.150 +TZNAME:MWT
 845.151 +DTSTART:19420209T020000
 845.152 +RDATE:19420209T020000
 845.153 +END:DAYLIGHT
 845.154 +BEGIN:DAYLIGHT
 845.155 +TZOFFSETFROM:-0600
 845.156 +TZOFFSETTO:-0600
 845.157 +TZNAME:MPT
 845.158 +DTSTART:19450814T170000
 845.159 +RDATE:19450814T170000
 845.160 +END:DAYLIGHT
 845.161 +END:VTIMEZONE
 845.162 +END:VCALENDAR
   846.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   846.2 +++ b/src/zoneinfo/America/Sitka.ics	Tue Feb 10 18:12:00 2015 +0100
   846.3 @@ -0,0 +1,174 @@
   846.4 +BEGIN:VCALENDAR
   846.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   846.6 +VERSION:2.0
   846.7 +BEGIN:VTIMEZONE
   846.8 +TZID:America/Sitka
   846.9 +TZURL:http://tzurl.org/zoneinfo/America/Sitka
  846.10 +X-LIC-LOCATION:America/Sitka
  846.11 +BEGIN:DAYLIGHT
  846.12 +TZOFFSETFROM:-0900
  846.13 +TZOFFSETTO:-0800
  846.14 +TZNAME:AKDT
  846.15 +DTSTART:20070311T020000
  846.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  846.17 +END:DAYLIGHT
  846.18 +BEGIN:STANDARD
  846.19 +TZOFFSETFROM:-0800
  846.20 +TZOFFSETTO:-0900
  846.21 +TZNAME:AKST
  846.22 +DTSTART:20071104T020000
  846.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  846.24 +END:STANDARD
  846.25 +BEGIN:STANDARD
  846.26 +TZOFFSETFROM:+145847
  846.27 +TZOFFSETTO:-090113
  846.28 +TZNAME:LMT
  846.29 +DTSTART:18671018T000000
  846.30 +RDATE:18671018T000000
  846.31 +END:STANDARD
  846.32 +BEGIN:STANDARD
  846.33 +TZOFFSETFROM:-090113
  846.34 +TZOFFSETTO:-0800
  846.35 +TZNAME:PST
  846.36 +DTSTART:19000820T120000
  846.37 +RDATE:19000820T120000
  846.38 +END:STANDARD
  846.39 +BEGIN:STANDARD
  846.40 +TZOFFSETFROM:-0800
  846.41 +TZOFFSETTO:-0800
  846.42 +TZNAME:PST
  846.43 +DTSTART:19420101T000000
  846.44 +RDATE:19420101T000000
  846.45 +RDATE:19460101T000000
  846.46 +RDATE:19690101T000000
  846.47 +END:STANDARD
  846.48 +BEGIN:DAYLIGHT
  846.49 +TZOFFSETFROM:-0800
  846.50 +TZOFFSETTO:-0700
  846.51 +TZNAME:PWT
  846.52 +DTSTART:19420209T020000
  846.53 +RDATE:19420209T020000
  846.54 +END:DAYLIGHT
  846.55 +BEGIN:DAYLIGHT
  846.56 +TZOFFSETFROM:-0700
  846.57 +TZOFFSETTO:-0700
  846.58 +TZNAME:PPT
  846.59 +DTSTART:19450814T160000
  846.60 +RDATE:19450814T160000
  846.61 +END:DAYLIGHT
  846.62 +BEGIN:STANDARD
  846.63 +TZOFFSETFROM:-0700
  846.64 +TZOFFSETTO:-0800
  846.65 +TZNAME:PST
  846.66 +DTSTART:19450930T020000
  846.67 +RDATE:19450930T020000
  846.68 +RDATE:19691026T020000
  846.69 +RDATE:19701025T020000
  846.70 +RDATE:19711031T020000
  846.71 +RDATE:19721029T020000
  846.72 +RDATE:19731028T020000
  846.73 +RDATE:19741027T020000
  846.74 +RDATE:19751026T020000
  846.75 +RDATE:19761031T020000
  846.76 +RDATE:19771030T020000
  846.77 +RDATE:19781029T020000
  846.78 +RDATE:19791028T020000
  846.79 +RDATE:19801026T020000
  846.80 +RDATE:19811025T020000
  846.81 +RDATE:19821031T020000
  846.82 +END:STANDARD
  846.83 +BEGIN:DAYLIGHT
  846.84 +TZOFFSETFROM:-0800
  846.85 +TZOFFSETTO:-0700
  846.86 +TZNAME:PDT
  846.87 +DTSTART:19690427T020000
  846.88 +RDATE:19690427T020000
  846.89 +RDATE:19700426T020000
  846.90 +RDATE:19710425T020000
  846.91 +RDATE:19720430T020000
  846.92 +RDATE:19730429T020000
  846.93 +RDATE:19740106T020000
  846.94 +RDATE:19750223T020000
  846.95 +RDATE:19760425T020000
  846.96 +RDATE:19770424T020000
  846.97 +RDATE:19780430T020000
  846.98 +RDATE:19790429T020000
  846.99 +RDATE:19800427T020000
 846.100 +RDATE:19810426T020000
 846.101 +RDATE:19820425T020000
 846.102 +RDATE:19830424T020000
 846.103 +END:DAYLIGHT
 846.104 +BEGIN:STANDARD
 846.105 +TZOFFSETFROM:-0700
 846.106 +TZOFFSETTO:-0900
 846.107 +TZNAME:YST
 846.108 +DTSTART:19831030T020000
 846.109 +RDATE:19831030T020000
 846.110 +END:STANDARD
 846.111 +BEGIN:STANDARD
 846.112 +TZOFFSETFROM:-0900
 846.113 +TZOFFSETTO:-0900
 846.114 +TZNAME:AKST
 846.115 +DTSTART:19831130T000000
 846.116 +RDATE:19831130T000000
 846.117 +END:STANDARD
 846.118 +BEGIN:DAYLIGHT
 846.119 +TZOFFSETFROM:-0900
 846.120 +TZOFFSETTO:-0800
 846.121 +TZNAME:AKDT
 846.122 +DTSTART:19840429T020000
 846.123 +RDATE:19840429T020000
 846.124 +RDATE:19850428T020000
 846.125 +RDATE:19860427T020000
 846.126 +RDATE:19870405T020000
 846.127 +RDATE:19880403T020000
 846.128 +RDATE:19890402T020000
 846.129 +RDATE:19900401T020000
 846.130 +RDATE:19910407T020000
 846.131 +RDATE:19920405T020000
 846.132 +RDATE:19930404T020000
 846.133 +RDATE:19940403T020000
 846.134 +RDATE:19950402T020000
 846.135 +RDATE:19960407T020000
 846.136 +RDATE:19970406T020000
 846.137 +RDATE:19980405T020000
 846.138 +RDATE:19990404T020000
 846.139 +RDATE:20000402T020000
 846.140 +RDATE:20010401T020000
 846.141 +RDATE:20020407T020000
 846.142 +RDATE:20030406T020000
 846.143 +RDATE:20040404T020000
 846.144 +RDATE:20050403T020000
 846.145 +RDATE:20060402T020000
 846.146 +END:DAYLIGHT
 846.147 +BEGIN:STANDARD
 846.148 +TZOFFSETFROM:-0800
 846.149 +TZOFFSETTO:-0900
 846.150 +TZNAME:AKST
 846.151 +DTSTART:19841028T020000
 846.152 +RDATE:19841028T020000
 846.153 +RDATE:19851027T020000
 846.154 +RDATE:19861026T020000
 846.155 +RDATE:19871025T020000
 846.156 +RDATE:19881030T020000
 846.157 +RDATE:19891029T020000
 846.158 +RDATE:19901028T020000
 846.159 +RDATE:19911027T020000
 846.160 +RDATE:19921025T020000
 846.161 +RDATE:19931031T020000
 846.162 +RDATE:19941030T020000
 846.163 +RDATE:19951029T020000
 846.164 +RDATE:19961027T020000
 846.165 +RDATE:19971026T020000
 846.166 +RDATE:19981025T020000
 846.167 +RDATE:19991031T020000
 846.168 +RDATE:20001029T020000
 846.169 +RDATE:20011028T020000
 846.170 +RDATE:20021027T020000
 846.171 +RDATE:20031026T020000
 846.172 +RDATE:20041031T020000
 846.173 +RDATE:20051030T020000
 846.174 +RDATE:20061029T020000
 846.175 +END:STANDARD
 846.176 +END:VTIMEZONE
 846.177 +END:VCALENDAR
   847.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   847.2 +++ b/src/zoneinfo/America/St_Barthelemy.ics	Tue Feb 10 18:12:00 2015 +0100
   847.3 @@ -0,0 +1,16 @@
   847.4 +BEGIN:VCALENDAR
   847.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   847.6 +VERSION:2.0
   847.7 +BEGIN:VTIMEZONE
   847.8 +TZID:America/St_Barthelemy
   847.9 +TZURL:http://tzurl.org/zoneinfo/America/St_Barthelemy
  847.10 +X-LIC-LOCATION:America/St_Barthelemy
  847.11 +BEGIN:STANDARD
  847.12 +TZOFFSETFROM:-040608
  847.13 +TZOFFSETTO:-0400
  847.14 +TZNAME:AST
  847.15 +DTSTART:19110608T000000
  847.16 +RDATE:19110608T000000
  847.17 +END:STANDARD
  847.18 +END:VTIMEZONE
  847.19 +END:VCALENDAR
   848.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   848.2 +++ b/src/zoneinfo/America/St_Johns.ics	Tue Feb 10 18:12:00 2015 +0100
   848.3 @@ -0,0 +1,285 @@
   848.4 +BEGIN:VCALENDAR
   848.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   848.6 +VERSION:2.0
   848.7 +BEGIN:VTIMEZONE
   848.8 +TZID:America/St_Johns
   848.9 +TZURL:http://tzurl.org/zoneinfo/America/St_Johns
  848.10 +X-LIC-LOCATION:America/St_Johns
  848.11 +BEGIN:STANDARD
  848.12 +TZOFFSETFROM:-0230
  848.13 +TZOFFSETTO:-0330
  848.14 +TZNAME:NST
  848.15 +DTSTART:20111106T020000
  848.16 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  848.17 +END:STANDARD
  848.18 +BEGIN:DAYLIGHT
  848.19 +TZOFFSETFROM:-0330
  848.20 +TZOFFSETTO:-0230
  848.21 +TZNAME:NDT
  848.22 +DTSTART:20120311T020000
  848.23 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  848.24 +END:DAYLIGHT
  848.25 +BEGIN:STANDARD
  848.26 +TZOFFSETFROM:-033052
  848.27 +TZOFFSETTO:-033052
  848.28 +TZNAME:NST
  848.29 +DTSTART:18840101T000000
  848.30 +RDATE:18840101T000000
  848.31 +RDATE:19180101T000000
  848.32 +RDATE:19190101T000000
  848.33 +END:STANDARD
  848.34 +BEGIN:DAYLIGHT
  848.35 +TZOFFSETFROM:-033052
  848.36 +TZOFFSETTO:-023052
  848.37 +TZNAME:NDT
  848.38 +DTSTART:19170408T020000
  848.39 +RDATE:19170408T020000
  848.40 +RDATE:19180414T020000
  848.41 +RDATE:19190505T230000
  848.42 +RDATE:19200502T230000
  848.43 +RDATE:19210501T230000
  848.44 +RDATE:19220507T230000
  848.45 +RDATE:19230506T230000
  848.46 +RDATE:19240504T230000
  848.47 +RDATE:19250503T230000
  848.48 +RDATE:19260502T230000
  848.49 +RDATE:19270501T230000
  848.50 +RDATE:19280506T230000
  848.51 +RDATE:19290505T230000
  848.52 +RDATE:19300504T230000
  848.53 +RDATE:19310503T230000
  848.54 +RDATE:19320501T230000
  848.55 +RDATE:19330507T230000
  848.56 +RDATE:19340506T230000
  848.57 +END:DAYLIGHT
  848.58 +BEGIN:STANDARD
  848.59 +TZOFFSETFROM:-023052
  848.60 +TZOFFSETTO:-033052
  848.61 +TZNAME:NST
  848.62 +DTSTART:19170917T020000
  848.63 +RDATE:19170917T020000
  848.64 +RDATE:19181031T020000
  848.65 +RDATE:19190812T230000
  848.66 +RDATE:19201031T230000
  848.67 +RDATE:19211030T230000
  848.68 +RDATE:19221029T230000
  848.69 +RDATE:19231028T230000
  848.70 +RDATE:19241026T230000
  848.71 +RDATE:19251025T230000
  848.72 +RDATE:19261031T230000
  848.73 +RDATE:19271030T230000
  848.74 +RDATE:19281028T230000
  848.75 +RDATE:19291027T230000
  848.76 +RDATE:19301026T230000
  848.77 +RDATE:19311025T230000
  848.78 +RDATE:19321030T230000
  848.79 +RDATE:19331029T230000
  848.80 +RDATE:19341028T230000
  848.81 +END:STANDARD
  848.82 +BEGIN:STANDARD
  848.83 +TZOFFSETFROM:-033052
  848.84 +TZOFFSETTO:-0330
  848.85 +TZNAME:NST
  848.86 +DTSTART:19350330T000000
  848.87 +RDATE:19350330T000000
  848.88 +END:STANDARD
  848.89 +BEGIN:DAYLIGHT
  848.90 +TZOFFSETFROM:-0330
  848.91 +TZOFFSETTO:-0230
  848.92 +TZNAME:NDT
  848.93 +DTSTART:19350505T230000
  848.94 +RDATE:19350505T230000
  848.95 +RDATE:19360511T000000
  848.96 +RDATE:19370510T000000
  848.97 +RDATE:19380509T000000
  848.98 +RDATE:19390515T000000
  848.99 +RDATE:19400513T000000
 848.100 +RDATE:19410512T000000
 848.101 +RDATE:19460512T020000
 848.102 +RDATE:19470511T020000
 848.103 +RDATE:19480509T020000
 848.104 +RDATE:19490508T020000
 848.105 +RDATE:19500514T020000
 848.106 +RDATE:19510429T020000
 848.107 +RDATE:19520427T020000
 848.108 +RDATE:19530426T020000
 848.109 +RDATE:19540425T020000
 848.110 +RDATE:19550424T020000
 848.111 +RDATE:19560429T020000
 848.112 +RDATE:19570428T020000
 848.113 +RDATE:19580427T020000
 848.114 +RDATE:19590426T020000
 848.115 +RDATE:19600424T020000
 848.116 +RDATE:19610430T020000
 848.117 +RDATE:19620429T020000
 848.118 +RDATE:19630428T020000
 848.119 +RDATE:19640426T020000
 848.120 +RDATE:19650425T020000
 848.121 +RDATE:19660424T020000
 848.122 +RDATE:19670430T020000
 848.123 +RDATE:19680428T020000
 848.124 +RDATE:19690427T020000
 848.125 +RDATE:19700426T020000
 848.126 +RDATE:19710425T020000
 848.127 +RDATE:19720430T020000
 848.128 +RDATE:19730429T020000
 848.129 +RDATE:19740428T020000
 848.130 +RDATE:19750427T020000
 848.131 +RDATE:19760425T020000
 848.132 +RDATE:19770424T020000
 848.133 +RDATE:19780430T020000
 848.134 +RDATE:19790429T020000
 848.135 +RDATE:19800427T020000
 848.136 +RDATE:19810426T020000
 848.137 +RDATE:19820425T020000
 848.138 +RDATE:19830424T020000
 848.139 +RDATE:19840429T020000
 848.140 +RDATE:19850428T020000
 848.141 +RDATE:19860427T020000
 848.142 +RDATE:19870405T000100
 848.143 +RDATE:19890402T000100
 848.144 +RDATE:19900401T000100
 848.145 +RDATE:19910407T000100
 848.146 +RDATE:19920405T000100
 848.147 +RDATE:19930404T000100
 848.148 +RDATE:19940403T000100
 848.149 +RDATE:19950402T000100
 848.150 +RDATE:19960407T000100
 848.151 +RDATE:19970406T000100
 848.152 +RDATE:19980405T000100
 848.153 +RDATE:19990404T000100
 848.154 +RDATE:20000402T000100
 848.155 +RDATE:20010401T000100
 848.156 +RDATE:20020407T000100
 848.157 +RDATE:20030406T000100
 848.158 +RDATE:20040404T000100
 848.159 +RDATE:20050403T000100
 848.160 +RDATE:20060402T000100
 848.161 +RDATE:20070311T000100
 848.162 +RDATE:20080309T000100
 848.163 +RDATE:20090308T000100
 848.164 +RDATE:20100314T000100
 848.165 +RDATE:20110313T000100
 848.166 +END:DAYLIGHT
 848.167 +BEGIN:STANDARD
 848.168 +TZOFFSETFROM:-0230
 848.169 +TZOFFSETTO:-0330
 848.170 +TZNAME:NST
 848.171 +DTSTART:19351027T230000
 848.172 +RDATE:19351027T230000
 848.173 +RDATE:19361005T000000
 848.174 +RDATE:19371004T000000
 848.175 +RDATE:19381003T000000
 848.176 +RDATE:19391002T000000
 848.177 +RDATE:19401007T000000
 848.178 +RDATE:19411006T000000
 848.179 +RDATE:19450930T020000
 848.180 +RDATE:19461006T020000
 848.181 +RDATE:19471005T020000
 848.182 +RDATE:19481003T020000
 848.183 +RDATE:19491002T020000
 848.184 +RDATE:19501008T020000
 848.185 +RDATE:19510930T020000
 848.186 +RDATE:19520928T020000
 848.187 +RDATE:19530927T020000
 848.188 +RDATE:19540926T020000
 848.189 +RDATE:19550925T020000
 848.190 +RDATE:19560930T020000
 848.191 +RDATE:19570929T020000
 848.192 +RDATE:19580928T020000
 848.193 +RDATE:19590927T020000
 848.194 +RDATE:19601030T020000
 848.195 +RDATE:19611029T020000
 848.196 +RDATE:19621028T020000
 848.197 +RDATE:19631027T020000
 848.198 +RDATE:19641025T020000
 848.199 +RDATE:19651031T020000
 848.200 +RDATE:19661030T020000
 848.201 +RDATE:19671029T020000
 848.202 +RDATE:19681027T020000
 848.203 +RDATE:19691026T020000
 848.204 +RDATE:19701025T020000
 848.205 +RDATE:19711031T020000
 848.206 +RDATE:19721029T020000
 848.207 +RDATE:19731028T020000
 848.208 +RDATE:19741027T020000
 848.209 +RDATE:19751026T020000
 848.210 +RDATE:19761031T020000
 848.211 +RDATE:19771030T020000
 848.212 +RDATE:19781029T020000
 848.213 +RDATE:19791028T020000
 848.214 +RDATE:19801026T020000
 848.215 +RDATE:19811025T020000
 848.216 +RDATE:19821031T020000
 848.217 +RDATE:19831030T020000
 848.218 +RDATE:19841028T020000
 848.219 +RDATE:19851027T020000
 848.220 +RDATE:19861026T020000
 848.221 +RDATE:19871025T000100
 848.222 +RDATE:19891029T000100
 848.223 +RDATE:19901028T000100
 848.224 +RDATE:19911027T000100
 848.225 +RDATE:19921025T000100
 848.226 +RDATE:19931031T000100
 848.227 +RDATE:19941030T000100
 848.228 +RDATE:19951029T000100
 848.229 +RDATE:19961027T000100
 848.230 +RDATE:19971026T000100
 848.231 +RDATE:19981025T000100
 848.232 +RDATE:19991031T000100
 848.233 +RDATE:20001029T000100
 848.234 +RDATE:20011028T000100
 848.235 +RDATE:20021027T000100
 848.236 +RDATE:20031026T000100
 848.237 +RDATE:20041031T000100
 848.238 +RDATE:20051030T000100
 848.239 +RDATE:20061029T000100
 848.240 +RDATE:20071104T000100
 848.241 +RDATE:20081102T000100
 848.242 +RDATE:20091101T000100
 848.243 +RDATE:20101107T000100
 848.244 +END:STANDARD
 848.245 +BEGIN:DAYLIGHT
 848.246 +TZOFFSETFROM:-0330
 848.247 +TZOFFSETTO:-0230
 848.248 +TZNAME:NWT
 848.249 +DTSTART:19420511T000000
 848.250 +RDATE:19420511T000000
 848.251 +END:DAYLIGHT
 848.252 +BEGIN:DAYLIGHT
 848.253 +TZOFFSETFROM:-0230
 848.254 +TZOFFSETTO:-0230
 848.255 +TZNAME:NPT
 848.256 +DTSTART:19450814T203000
 848.257 +RDATE:19450814T203000
 848.258 +END:DAYLIGHT
 848.259 +BEGIN:STANDARD
 848.260 +TZOFFSETFROM:-0330
 848.261 +TZOFFSETTO:-0330
 848.262 +TZNAME:NST
 848.263 +DTSTART:19460101T000000
 848.264 +RDATE:19460101T000000
 848.265 +END:STANDARD
 848.266 +BEGIN:DAYLIGHT
 848.267 +TZOFFSETFROM:-0330
 848.268 +TZOFFSETTO:-0130
 848.269 +TZNAME:NDDT
 848.270 +DTSTART:19880403T000100
 848.271 +RDATE:19880403T000100
 848.272 +END:DAYLIGHT
 848.273 +BEGIN:STANDARD
 848.274 +TZOFFSETFROM:-0130
 848.275 +TZOFFSETTO:-0330
 848.276 +TZNAME:NST
 848.277 +DTSTART:19881030T000100
 848.278 +RDATE:19881030T000100
 848.279 +END:STANDARD
 848.280 +BEGIN:DAYLIGHT
 848.281 +TZOFFSETFROM:-0230
 848.282 +TZOFFSETTO:-0230
 848.283 +TZNAME:NDT
 848.284 +DTSTART:20111101T000000
 848.285 +RDATE:20111101T000000
 848.286 +END:DAYLIGHT
 848.287 +END:VTIMEZONE
 848.288 +END:VCALENDAR
   849.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   849.2 +++ b/src/zoneinfo/America/St_Kitts.ics	Tue Feb 10 18:12:00 2015 +0100
   849.3 @@ -0,0 +1,16 @@
   849.4 +BEGIN:VCALENDAR
   849.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   849.6 +VERSION:2.0
   849.7 +BEGIN:VTIMEZONE
   849.8 +TZID:America/St_Kitts
   849.9 +TZURL:http://tzurl.org/zoneinfo/America/St_Kitts
  849.10 +X-LIC-LOCATION:America/St_Kitts
  849.11 +BEGIN:STANDARD
  849.12 +TZOFFSETFROM:-041052
  849.13 +TZOFFSETTO:-0400
  849.14 +TZNAME:AST
  849.15 +DTSTART:19120302T000000
  849.16 +RDATE:19120302T000000
  849.17 +END:STANDARD
  849.18 +END:VTIMEZONE
  849.19 +END:VCALENDAR
   850.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   850.2 +++ b/src/zoneinfo/America/St_Lucia.ics	Tue Feb 10 18:12:00 2015 +0100
   850.3 @@ -0,0 +1,23 @@
   850.4 +BEGIN:VCALENDAR
   850.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   850.6 +VERSION:2.0
   850.7 +BEGIN:VTIMEZONE
   850.8 +TZID:America/St_Lucia
   850.9 +TZURL:http://tzurl.org/zoneinfo/America/St_Lucia
  850.10 +X-LIC-LOCATION:America/St_Lucia
  850.11 +BEGIN:STANDARD
  850.12 +TZOFFSETFROM:-0404
  850.13 +TZOFFSETTO:-0404
  850.14 +TZNAME:CMT
  850.15 +DTSTART:18900101T000000
  850.16 +RDATE:18900101T000000
  850.17 +END:STANDARD
  850.18 +BEGIN:STANDARD
  850.19 +TZOFFSETFROM:-0404
  850.20 +TZOFFSETTO:-0400
  850.21 +TZNAME:AST
  850.22 +DTSTART:19120101T000000
  850.23 +RDATE:19120101T000000
  850.24 +END:STANDARD
  850.25 +END:VTIMEZONE
  850.26 +END:VCALENDAR
   851.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   851.2 +++ b/src/zoneinfo/America/St_Thomas.ics	Tue Feb 10 18:12:00 2015 +0100
   851.3 @@ -0,0 +1,16 @@
   851.4 +BEGIN:VCALENDAR
   851.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   851.6 +VERSION:2.0
   851.7 +BEGIN:VTIMEZONE
   851.8 +TZID:America/St_Thomas
   851.9 +TZURL:http://tzurl.org/zoneinfo/America/St_Thomas
  851.10 +X-LIC-LOCATION:America/St_Thomas
  851.11 +BEGIN:STANDARD
  851.12 +TZOFFSETFROM:-041944
  851.13 +TZOFFSETTO:-0400
  851.14 +TZNAME:AST
  851.15 +DTSTART:19110701T000000
  851.16 +RDATE:19110701T000000
  851.17 +END:STANDARD
  851.18 +END:VTIMEZONE
  851.19 +END:VCALENDAR
   852.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   852.2 +++ b/src/zoneinfo/America/St_Vincent.ics	Tue Feb 10 18:12:00 2015 +0100
   852.3 @@ -0,0 +1,23 @@
   852.4 +BEGIN:VCALENDAR
   852.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   852.6 +VERSION:2.0
   852.7 +BEGIN:VTIMEZONE
   852.8 +TZID:America/St_Vincent
   852.9 +TZURL:http://tzurl.org/zoneinfo/America/St_Vincent
  852.10 +X-LIC-LOCATION:America/St_Vincent
  852.11 +BEGIN:STANDARD
  852.12 +TZOFFSETFROM:-040456
  852.13 +TZOFFSETTO:-040456
  852.14 +TZNAME:KMT
  852.15 +DTSTART:18900101T000000
  852.16 +RDATE:18900101T000000
  852.17 +END:STANDARD
  852.18 +BEGIN:STANDARD
  852.19 +TZOFFSETFROM:-040456
  852.20 +TZOFFSETTO:-0400
  852.21 +TZNAME:AST
  852.22 +DTSTART:19120101T000000
  852.23 +RDATE:19120101T000000
  852.24 +END:STANDARD
  852.25 +END:VTIMEZONE
  852.26 +END:VCALENDAR
   853.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   853.2 +++ b/src/zoneinfo/America/Swift_Current.ics	Tue Feb 10 18:12:00 2015 +0100
   853.3 @@ -0,0 +1,75 @@
   853.4 +BEGIN:VCALENDAR
   853.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   853.6 +VERSION:2.0
   853.7 +BEGIN:VTIMEZONE
   853.8 +TZID:America/Swift_Current
   853.9 +TZURL:http://tzurl.org/zoneinfo/America/Swift_Current
  853.10 +X-LIC-LOCATION:America/Swift_Current
  853.11 +BEGIN:STANDARD
  853.12 +TZOFFSETFROM:-071120
  853.13 +TZOFFSETTO:-0700
  853.14 +TZNAME:MST
  853.15 +DTSTART:19050901T000000
  853.16 +RDATE:19050901T000000
  853.17 +END:STANDARD
  853.18 +BEGIN:DAYLIGHT
  853.19 +TZOFFSETFROM:-0700
  853.20 +TZOFFSETTO:-0600
  853.21 +TZNAME:MDT
  853.22 +DTSTART:19180414T020000
  853.23 +RDATE:19180414T020000
  853.24 +RDATE:19460428T020000
  853.25 +RDATE:19470427T020000
  853.26 +RDATE:19480425T020000
  853.27 +RDATE:19490424T020000
  853.28 +RDATE:19570428T020000
  853.29 +RDATE:19590426T020000
  853.30 +RDATE:19600424T020000
  853.31 +RDATE:19610430T020000
  853.32 +END:DAYLIGHT
  853.33 +BEGIN:STANDARD
  853.34 +TZOFFSETFROM:-0600
  853.35 +TZOFFSETTO:-0700
  853.36 +TZNAME:MST
  853.37 +DTSTART:19181031T020000
  853.38 +RDATE:19181031T020000
  853.39 +RDATE:19450930T020000
  853.40 +RDATE:19461013T020000
  853.41 +RDATE:19470928T020000
  853.42 +RDATE:19480926T020000
  853.43 +RDATE:19490925T020000
  853.44 +RDATE:19571027T020000
  853.45 +RDATE:19591025T020000
  853.46 +RDATE:19600925T020000
  853.47 +RDATE:19610924T020000
  853.48 +END:STANDARD
  853.49 +BEGIN:DAYLIGHT
  853.50 +TZOFFSETFROM:-0700
  853.51 +TZOFFSETTO:-0600
  853.52 +TZNAME:MWT
  853.53 +DTSTART:19420209T020000
  853.54 +RDATE:19420209T020000
  853.55 +END:DAYLIGHT
  853.56 +BEGIN:DAYLIGHT
  853.57 +TZOFFSETFROM:-0600
  853.58 +TZOFFSETTO:-0600
  853.59 +TZNAME:MPT
  853.60 +DTSTART:19450814T170000
  853.61 +RDATE:19450814T170000
  853.62 +END:DAYLIGHT
  853.63 +BEGIN:STANDARD
  853.64 +TZOFFSETFROM:-0700
  853.65 +TZOFFSETTO:-0700
  853.66 +TZNAME:MST
  853.67 +DTSTART:19500101T000000
  853.68 +RDATE:19500101T000000
  853.69 +END:STANDARD
  853.70 +BEGIN:STANDARD
  853.71 +TZOFFSETFROM:-0700
  853.72 +TZOFFSETTO:-0600
  853.73 +TZNAME:CST
  853.74 +DTSTART:19720430T020000
  853.75 +RDATE:19720430T020000
  853.76 +END:STANDARD
  853.77 +END:VTIMEZONE
  853.78 +END:VCALENDAR
   854.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   854.2 +++ b/src/zoneinfo/America/Tegucigalpa.ics	Tue Feb 10 18:12:00 2015 +0100
   854.3 @@ -0,0 +1,34 @@
   854.4 +BEGIN:VCALENDAR
   854.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   854.6 +VERSION:2.0
   854.7 +BEGIN:VTIMEZONE
   854.8 +TZID:America/Tegucigalpa
   854.9 +TZURL:http://tzurl.org/zoneinfo/America/Tegucigalpa
  854.10 +X-LIC-LOCATION:America/Tegucigalpa
  854.11 +BEGIN:STANDARD
  854.12 +TZOFFSETFROM:-054852
  854.13 +TZOFFSETTO:-0600
  854.14 +TZNAME:CST
  854.15 +DTSTART:19210401T000000
  854.16 +RDATE:19210401T000000
  854.17 +END:STANDARD
  854.18 +BEGIN:DAYLIGHT
  854.19 +TZOFFSETFROM:-0600
  854.20 +TZOFFSETTO:-0500
  854.21 +TZNAME:CDT
  854.22 +DTSTART:19870503T000000
  854.23 +RDATE:19870503T000000
  854.24 +RDATE:19880501T000000
  854.25 +RDATE:20060507T000000
  854.26 +END:DAYLIGHT
  854.27 +BEGIN:STANDARD
  854.28 +TZOFFSETFROM:-0500
  854.29 +TZOFFSETTO:-0600
  854.30 +TZNAME:CST
  854.31 +DTSTART:19870927T000000
  854.32 +RDATE:19870927T000000
  854.33 +RDATE:19880925T000000
  854.34 +RDATE:20060807T000000
  854.35 +END:STANDARD
  854.36 +END:VTIMEZONE
  854.37 +END:VCALENDAR
   855.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   855.2 +++ b/src/zoneinfo/America/Thule.ics	Tue Feb 10 18:12:00 2015 +0100
   855.3 @@ -0,0 +1,74 @@
   855.4 +BEGIN:VCALENDAR
   855.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   855.6 +VERSION:2.0
   855.7 +BEGIN:VTIMEZONE
   855.8 +TZID:America/Thule
   855.9 +TZURL:http://tzurl.org/zoneinfo/America/Thule
  855.10 +X-LIC-LOCATION:America/Thule
  855.11 +BEGIN:DAYLIGHT
  855.12 +TZOFFSETFROM:-0400
  855.13 +TZOFFSETTO:-0300
  855.14 +TZNAME:ADT
  855.15 +DTSTART:20070311T020000
  855.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  855.17 +END:DAYLIGHT
  855.18 +BEGIN:STANDARD
  855.19 +TZOFFSETFROM:-0300
  855.20 +TZOFFSETTO:-0400
  855.21 +TZNAME:AST
  855.22 +DTSTART:20071104T020000
  855.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  855.24 +END:STANDARD
  855.25 +BEGIN:STANDARD
  855.26 +TZOFFSETFROM:-043508
  855.27 +TZOFFSETTO:-0400
  855.28 +TZNAME:AST
  855.29 +DTSTART:19160728T000000
  855.30 +RDATE:19160728T000000
  855.31 +END:STANDARD
  855.32 +BEGIN:DAYLIGHT
  855.33 +TZOFFSETFROM:-0400
  855.34 +TZOFFSETTO:-0300
  855.35 +TZNAME:ADT
  855.36 +DTSTART:19910331T020000
  855.37 +RDATE:19910331T020000
  855.38 +RDATE:19920329T020000
  855.39 +RDATE:19930404T020000
  855.40 +RDATE:19940403T020000
  855.41 +RDATE:19950402T020000
  855.42 +RDATE:19960407T020000
  855.43 +RDATE:19970406T020000
  855.44 +RDATE:19980405T020000
  855.45 +RDATE:19990404T020000
  855.46 +RDATE:20000402T020000
  855.47 +RDATE:20010401T020000
  855.48 +RDATE:20020407T020000
  855.49 +RDATE:20030406T020000
  855.50 +RDATE:20040404T020000
  855.51 +RDATE:20050403T020000
  855.52 +RDATE:20060402T020000
  855.53 +END:DAYLIGHT
  855.54 +BEGIN:STANDARD
  855.55 +TZOFFSETFROM:-0300
  855.56 +TZOFFSETTO:-0400
  855.57 +TZNAME:AST
  855.58 +DTSTART:19910929T020000
  855.59 +RDATE:19910929T020000
  855.60 +RDATE:19920927T020000
  855.61 +RDATE:19931031T020000
  855.62 +RDATE:19941030T020000
  855.63 +RDATE:19951029T020000
  855.64 +RDATE:19961027T020000
  855.65 +RDATE:19971026T020000
  855.66 +RDATE:19981025T020000
  855.67 +RDATE:19991031T020000
  855.68 +RDATE:20001029T020000
  855.69 +RDATE:20011028T020000
  855.70 +RDATE:20021027T020000
  855.71 +RDATE:20031026T020000
  855.72 +RDATE:20041031T020000
  855.73 +RDATE:20051030T020000
  855.74 +RDATE:20061029T020000
  855.75 +END:STANDARD
  855.76 +END:VTIMEZONE
  855.77 +END:VCALENDAR
   856.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   856.2 +++ b/src/zoneinfo/America/Thunder_Bay.ics	Tue Feb 10 18:12:00 2015 +0100
   856.3 @@ -0,0 +1,146 @@
   856.4 +BEGIN:VCALENDAR
   856.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   856.6 +VERSION:2.0
   856.7 +BEGIN:VTIMEZONE
   856.8 +TZID:America/Thunder_Bay
   856.9 +TZURL:http://tzurl.org/zoneinfo/America/Thunder_Bay
  856.10 +X-LIC-LOCATION:America/Thunder_Bay
  856.11 +BEGIN:DAYLIGHT
  856.12 +TZOFFSETFROM:-0500
  856.13 +TZOFFSETTO:-0400
  856.14 +TZNAME:EDT
  856.15 +DTSTART:20070311T020000
  856.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  856.17 +END:DAYLIGHT
  856.18 +BEGIN:STANDARD
  856.19 +TZOFFSETFROM:-0400
  856.20 +TZOFFSETTO:-0500
  856.21 +TZNAME:EST
  856.22 +DTSTART:20071104T020000
  856.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  856.24 +END:STANDARD
  856.25 +BEGIN:STANDARD
  856.26 +TZOFFSETFROM:-0557
  856.27 +TZOFFSETTO:-0600
  856.28 +TZNAME:CST
  856.29 +DTSTART:18950101T000000
  856.30 +RDATE:18950101T000000
  856.31 +END:STANDARD
  856.32 +BEGIN:STANDARD
  856.33 +TZOFFSETFROM:-0600
  856.34 +TZOFFSETTO:-0500
  856.35 +TZNAME:EST
  856.36 +DTSTART:19100101T000000
  856.37 +RDATE:19100101T000000
  856.38 +END:STANDARD
  856.39 +BEGIN:STANDARD
  856.40 +TZOFFSETFROM:-0500
  856.41 +TZOFFSETTO:-0500
  856.42 +TZNAME:EST
  856.43 +DTSTART:19420101T000000
  856.44 +RDATE:19420101T000000
  856.45 +RDATE:19700101T000000
  856.46 +RDATE:19730101T000000
  856.47 +RDATE:19740101T000000
  856.48 +END:STANDARD
  856.49 +BEGIN:DAYLIGHT
  856.50 +TZOFFSETFROM:-0500
  856.51 +TZOFFSETTO:-0400
  856.52 +TZNAME:EWT
  856.53 +DTSTART:19420209T020000
  856.54 +RDATE:19420209T020000
  856.55 +END:DAYLIGHT
  856.56 +BEGIN:DAYLIGHT
  856.57 +TZOFFSETFROM:-0400
  856.58 +TZOFFSETTO:-0400
  856.59 +TZNAME:EPT
  856.60 +DTSTART:19450814T190000
  856.61 +RDATE:19450814T190000
  856.62 +END:DAYLIGHT
  856.63 +BEGIN:STANDARD
  856.64 +TZOFFSETFROM:-0400
  856.65 +TZOFFSETTO:-0500
  856.66 +TZNAME:EST
  856.67 +DTSTART:19450930T020000
  856.68 +RDATE:19450930T020000
  856.69 +RDATE:19701025T020000
  856.70 +RDATE:19711031T020000
  856.71 +RDATE:19721029T020000
  856.72 +RDATE:19741027T020000
  856.73 +RDATE:19751026T020000
  856.74 +RDATE:19761031T020000
  856.75 +RDATE:19771030T020000
  856.76 +RDATE:19781029T020000
  856.77 +RDATE:19791028T020000
  856.78 +RDATE:19801026T020000
  856.79 +RDATE:19811025T020000
  856.80 +RDATE:19821031T020000
  856.81 +RDATE:19831030T020000
  856.82 +RDATE:19841028T020000
  856.83 +RDATE:19851027T020000
  856.84 +RDATE:19861026T020000
  856.85 +RDATE:19871025T020000
  856.86 +RDATE:19881030T020000
  856.87 +RDATE:19891029T020000
  856.88 +RDATE:19901028T020000
  856.89 +RDATE:19911027T020000
  856.90 +RDATE:19921025T020000
  856.91 +RDATE:19931031T020000
  856.92 +RDATE:19941030T020000
  856.93 +RDATE:19951029T020000
  856.94 +RDATE:19961027T020000
  856.95 +RDATE:19971026T020000
  856.96 +RDATE:19981025T020000
  856.97 +RDATE:19991031T020000
  856.98 +RDATE:20001029T020000
  856.99 +RDATE:20011028T020000
 856.100 +RDATE:20021027T020000
 856.101 +RDATE:20031026T020000
 856.102 +RDATE:20041031T020000
 856.103 +RDATE:20051030T020000
 856.104 +RDATE:20061029T020000
 856.105 +END:STANDARD
 856.106 +BEGIN:DAYLIGHT
 856.107 +TZOFFSETFROM:-0500
 856.108 +TZOFFSETTO:-0400
 856.109 +TZNAME:EDT
 856.110 +DTSTART:19700426T020000
 856.111 +RDATE:19700426T020000
 856.112 +RDATE:19710425T020000
 856.113 +RDATE:19720430T020000
 856.114 +RDATE:19740428T020000
 856.115 +RDATE:19750427T020000
 856.116 +RDATE:19760425T020000
 856.117 +RDATE:19770424T020000
 856.118 +RDATE:19780430T020000
 856.119 +RDATE:19790429T020000
 856.120 +RDATE:19800427T020000
 856.121 +RDATE:19810426T020000
 856.122 +RDATE:19820425T020000
 856.123 +RDATE:19830424T020000
 856.124 +RDATE:19840429T020000
 856.125 +RDATE:19850428T020000
 856.126 +RDATE:19860427T020000
 856.127 +RDATE:19870405T020000
 856.128 +RDATE:19880403T020000
 856.129 +RDATE:19890402T020000
 856.130 +RDATE:19900401T020000
 856.131 +RDATE:19910407T020000
 856.132 +RDATE:19920405T020000
 856.133 +RDATE:19930404T020000
 856.134 +RDATE:19940403T020000
 856.135 +RDATE:19950402T020000
 856.136 +RDATE:19960407T020000
 856.137 +RDATE:19970406T020000
 856.138 +RDATE:19980405T020000
 856.139 +RDATE:19990404T020000
 856.140 +RDATE:20000402T020000
 856.141 +RDATE:20010401T020000
 856.142 +RDATE:20020407T020000
 856.143 +RDATE:20030406T020000
 856.144 +RDATE:20040404T020000
 856.145 +RDATE:20050403T020000
 856.146 +RDATE:20060402T020000
 856.147 +END:DAYLIGHT
 856.148 +END:VTIMEZONE
 856.149 +END:VCALENDAR
   857.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   857.2 +++ b/src/zoneinfo/America/Tijuana.ics	Tue Feb 10 18:12:00 2015 +0100
   857.3 @@ -0,0 +1,165 @@
   857.4 +BEGIN:VCALENDAR
   857.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   857.6 +VERSION:2.0
   857.7 +BEGIN:VTIMEZONE
   857.8 +TZID:America/Tijuana
   857.9 +TZURL:http://tzurl.org/zoneinfo/America/Tijuana
  857.10 +X-LIC-LOCATION:America/Tijuana
  857.11 +BEGIN:DAYLIGHT
  857.12 +TZOFFSETFROM:-0800
  857.13 +TZOFFSETTO:-0700
  857.14 +TZNAME:PDT
  857.15 +DTSTART:20100314T020000
  857.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  857.17 +END:DAYLIGHT
  857.18 +BEGIN:STANDARD
  857.19 +TZOFFSETFROM:-0700
  857.20 +TZOFFSETTO:-0800
  857.21 +TZNAME:PST
  857.22 +DTSTART:20101107T020000
  857.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  857.24 +END:STANDARD
  857.25 +BEGIN:STANDARD
  857.26 +TZOFFSETFROM:-074804
  857.27 +TZOFFSETTO:-0700
  857.28 +TZNAME:MST
  857.29 +DTSTART:19220101T001156
  857.30 +RDATE:19220101T001156
  857.31 +END:STANDARD
  857.32 +BEGIN:STANDARD
  857.33 +TZOFFSETFROM:-0700
  857.34 +TZOFFSETTO:-0800
  857.35 +TZNAME:PST
  857.36 +DTSTART:19240101T000000
  857.37 +RDATE:19240101T000000
  857.38 +RDATE:19301115T000000
  857.39 +RDATE:19310930T000000
  857.40 +RDATE:19451112T000000
  857.41 +RDATE:19490114T000000
  857.42 +RDATE:19540926T020000
  857.43 +RDATE:19550925T020000
  857.44 +RDATE:19560930T020000
  857.45 +RDATE:19570929T020000
  857.46 +RDATE:19580928T020000
  857.47 +RDATE:19590927T020000
  857.48 +RDATE:19600925T020000
  857.49 +RDATE:19761031T020000
  857.50 +RDATE:19771030T020000
  857.51 +RDATE:19781029T020000
  857.52 +RDATE:19791028T020000
  857.53 +RDATE:19801026T020000
  857.54 +RDATE:19811025T020000
  857.55 +RDATE:19821031T020000
  857.56 +RDATE:19831030T020000
  857.57 +RDATE:19841028T020000
  857.58 +RDATE:19851027T020000
  857.59 +RDATE:19861026T020000
  857.60 +RDATE:19871025T020000
  857.61 +RDATE:19881030T020000
  857.62 +RDATE:19891029T020000
  857.63 +RDATE:19901028T020000
  857.64 +RDATE:19911027T020000
  857.65 +RDATE:19921025T020000
  857.66 +RDATE:19931031T020000
  857.67 +RDATE:19941030T020000
  857.68 +RDATE:19951029T020000
  857.69 +RDATE:19961027T020000
  857.70 +RDATE:19971026T020000
  857.71 +RDATE:19981025T020000
  857.72 +RDATE:19991031T020000
  857.73 +RDATE:20001029T020000
  857.74 +RDATE:20011028T020000
  857.75 +RDATE:20021027T020000
  857.76 +RDATE:20031026T020000
  857.77 +RDATE:20041031T020000
  857.78 +RDATE:20051030T020000
  857.79 +RDATE:20061029T020000
  857.80 +RDATE:20071028T020000
  857.81 +RDATE:20081026T020000
  857.82 +RDATE:20091025T020000
  857.83 +END:STANDARD
  857.84 +BEGIN:STANDARD
  857.85 +TZOFFSETFROM:-0800
  857.86 +TZOFFSETTO:-0700
  857.87 +TZNAME:MST
  857.88 +DTSTART:19270610T230000
  857.89 +RDATE:19270610T230000
  857.90 +END:STANDARD
  857.91 +BEGIN:DAYLIGHT
  857.92 +TZOFFSETFROM:-0800
  857.93 +TZOFFSETTO:-0700
  857.94 +TZNAME:PDT
  857.95 +DTSTART:19310401T000000
  857.96 +RDATE:19310401T000000
  857.97 +RDATE:19480405T000000
  857.98 +RDATE:19540425T020000
  857.99 +RDATE:19550424T020000
 857.100 +RDATE:19560429T020000
 857.101 +RDATE:19570428T020000
 857.102 +RDATE:19580427T020000
 857.103 +RDATE:19590426T020000
 857.104 +RDATE:19600424T020000
 857.105 +RDATE:19760425T020000
 857.106 +RDATE:19770424T020000
 857.107 +RDATE:19780430T020000
 857.108 +RDATE:19790429T020000
 857.109 +RDATE:19800427T020000
 857.110 +RDATE:19810426T020000
 857.111 +RDATE:19820425T020000
 857.112 +RDATE:19830424T020000
 857.113 +RDATE:19840429T020000
 857.114 +RDATE:19850428T020000
 857.115 +RDATE:19860427T020000
 857.116 +RDATE:19870405T020000
 857.117 +RDATE:19880403T020000
 857.118 +RDATE:19890402T020000
 857.119 +RDATE:19900401T020000
 857.120 +RDATE:19910407T020000
 857.121 +RDATE:19920405T020000
 857.122 +RDATE:19930404T020000
 857.123 +RDATE:19940403T020000
 857.124 +RDATE:19950402T020000
 857.125 +RDATE:19960407T020000
 857.126 +RDATE:19970406T020000
 857.127 +RDATE:19980405T020000
 857.128 +RDATE:19990404T020000
 857.129 +RDATE:20000402T020000
 857.130 +RDATE:20010401T020000
 857.131 +RDATE:20020407T020000
 857.132 +RDATE:20030406T020000
 857.133 +RDATE:20040404T020000
 857.134 +RDATE:20050403T020000
 857.135 +RDATE:20060402T020000
 857.136 +RDATE:20070401T020000
 857.137 +RDATE:20080406T020000
 857.138 +RDATE:20090405T020000
 857.139 +END:DAYLIGHT
 857.140 +BEGIN:DAYLIGHT
 857.141 +TZOFFSETFROM:-0800
 857.142 +TZOFFSETTO:-0700
 857.143 +TZNAME:PWT
 857.144 +DTSTART:19420424T000000
 857.145 +RDATE:19420424T000000
 857.146 +END:DAYLIGHT
 857.147 +BEGIN:DAYLIGHT
 857.148 +TZOFFSETFROM:-0700
 857.149 +TZOFFSETTO:-0700
 857.150 +TZNAME:PPT
 857.151 +DTSTART:19450814T160000
 857.152 +RDATE:19450814T160000
 857.153 +END:DAYLIGHT
 857.154 +BEGIN:STANDARD
 857.155 +TZOFFSETFROM:-0800
 857.156 +TZOFFSETTO:-0800
 857.157 +TZNAME:PST
 857.158 +DTSTART:19540101T000000
 857.159 +RDATE:19540101T000000
 857.160 +RDATE:19610101T000000
 857.161 +RDATE:19760101T000000
 857.162 +RDATE:19960101T000000
 857.163 +RDATE:20010101T000000
 857.164 +RDATE:20020220T000000
 857.165 +RDATE:20100101T000000
 857.166 +END:STANDARD
 857.167 +END:VTIMEZONE
 857.168 +END:VCALENDAR
   858.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   858.2 +++ b/src/zoneinfo/America/Toronto.ics	Tue Feb 10 18:12:00 2015 +0100
   858.3 @@ -0,0 +1,233 @@
   858.4 +BEGIN:VCALENDAR
   858.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   858.6 +VERSION:2.0
   858.7 +BEGIN:VTIMEZONE
   858.8 +TZID:America/Toronto
   858.9 +TZURL:http://tzurl.org/zoneinfo/America/Toronto
  858.10 +X-LIC-LOCATION:America/Toronto
  858.11 +BEGIN:DAYLIGHT
  858.12 +TZOFFSETFROM:-0500
  858.13 +TZOFFSETTO:-0400
  858.14 +TZNAME:EDT
  858.15 +DTSTART:20070311T020000
  858.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  858.17 +END:DAYLIGHT
  858.18 +BEGIN:STANDARD
  858.19 +TZOFFSETFROM:-0400
  858.20 +TZOFFSETTO:-0500
  858.21 +TZNAME:EST
  858.22 +DTSTART:20071104T020000
  858.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  858.24 +END:STANDARD
  858.25 +BEGIN:STANDARD
  858.26 +TZOFFSETFROM:-051732
  858.27 +TZOFFSETTO:-0500
  858.28 +TZNAME:EST
  858.29 +DTSTART:18950101T000000
  858.30 +RDATE:18950101T000000
  858.31 +END:STANDARD
  858.32 +BEGIN:DAYLIGHT
  858.33 +TZOFFSETFROM:-0500
  858.34 +TZOFFSETTO:-0400
  858.35 +TZNAME:EDT
  858.36 +DTSTART:19180414T020000
  858.37 +RDATE:19180414T020000
  858.38 +RDATE:19190330T233000
  858.39 +RDATE:19200502T020000
  858.40 +RDATE:19210515T020000
  858.41 +RDATE:19220514T020000
  858.42 +RDATE:19230513T020000
  858.43 +RDATE:19240504T020000
  858.44 +RDATE:19250503T020000
  858.45 +RDATE:19260502T020000
  858.46 +RDATE:19270501T020000
  858.47 +RDATE:19280429T020000
  858.48 +RDATE:19290428T020000
  858.49 +RDATE:19300427T020000
  858.50 +RDATE:19310426T020000
  858.51 +RDATE:19320501T020000
  858.52 +RDATE:19330430T020000
  858.53 +RDATE:19340429T020000
  858.54 +RDATE:19350428T020000
  858.55 +RDATE:19360426T020000
  858.56 +RDATE:19370425T020000
  858.57 +RDATE:19380424T020000
  858.58 +RDATE:19390430T020000
  858.59 +RDATE:19400428T020000
  858.60 +RDATE:19460428T020000
  858.61 +RDATE:19470427T000000
  858.62 +RDATE:19480425T000000
  858.63 +RDATE:19490424T000000
  858.64 +RDATE:19500430T020000
  858.65 +RDATE:19510429T020000
  858.66 +RDATE:19520427T020000
  858.67 +RDATE:19530426T020000
  858.68 +RDATE:19540425T020000
  858.69 +RDATE:19550424T020000
  858.70 +RDATE:19560429T020000
  858.71 +RDATE:19570428T020000
  858.72 +RDATE:19580427T020000
  858.73 +RDATE:19590426T020000
  858.74 +RDATE:19600424T020000
  858.75 +RDATE:19610430T020000
  858.76 +RDATE:19620429T020000
  858.77 +RDATE:19630428T020000
  858.78 +RDATE:19640426T020000
  858.79 +RDATE:19650425T020000
  858.80 +RDATE:19660424T020000
  858.81 +RDATE:19670430T020000
  858.82 +RDATE:19680428T020000
  858.83 +RDATE:19690427T020000
  858.84 +RDATE:19700426T020000
  858.85 +RDATE:19710425T020000
  858.86 +RDATE:19720430T020000
  858.87 +RDATE:19730429T020000
  858.88 +RDATE:19740428T020000
  858.89 +RDATE:19750427T020000
  858.90 +RDATE:19760425T020000
  858.91 +RDATE:19770424T020000
  858.92 +RDATE:19780430T020000
  858.93 +RDATE:19790429T020000
  858.94 +RDATE:19800427T020000
  858.95 +RDATE:19810426T020000
  858.96 +RDATE:19820425T020000
  858.97 +RDATE:19830424T020000
  858.98 +RDATE:19840429T020000
  858.99 +RDATE:19850428T020000
 858.100 +RDATE:19860427T020000
 858.101 +RDATE:19870405T020000
 858.102 +RDATE:19880403T020000
 858.103 +RDATE:19890402T020000
 858.104 +RDATE:19900401T020000
 858.105 +RDATE:19910407T020000
 858.106 +RDATE:19920405T020000
 858.107 +RDATE:19930404T020000
 858.108 +RDATE:19940403T020000
 858.109 +RDATE:19950402T020000
 858.110 +RDATE:19960407T020000
 858.111 +RDATE:19970406T020000
 858.112 +RDATE:19980405T020000
 858.113 +RDATE:19990404T020000
 858.114 +RDATE:20000402T020000
 858.115 +RDATE:20010401T020000
 858.116 +RDATE:20020407T020000
 858.117 +RDATE:20030406T020000
 858.118 +RDATE:20040404T020000
 858.119 +RDATE:20050403T020000
 858.120 +RDATE:20060402T020000
 858.121 +END:DAYLIGHT
 858.122 +BEGIN:STANDARD
 858.123 +TZOFFSETFROM:-0400
 858.124 +TZOFFSETTO:-0500
 858.125 +TZNAME:EST
 858.126 +DTSTART:19181031T020000
 858.127 +RDATE:19181031T020000
 858.128 +RDATE:19191026T000000
 858.129 +RDATE:19200926T000000
 858.130 +RDATE:19210915T020000
 858.131 +RDATE:19220917T020000
 858.132 +RDATE:19230916T020000
 858.133 +RDATE:19240921T020000
 858.134 +RDATE:19250920T020000
 858.135 +RDATE:19260919T020000
 858.136 +RDATE:19270925T020000
 858.137 +RDATE:19280930T020000
 858.138 +RDATE:19290929T020000
 858.139 +RDATE:19300928T020000
 858.140 +RDATE:19310927T020000
 858.141 +RDATE:19320925T020000
 858.142 +RDATE:19331001T020000
 858.143 +RDATE:19340930T020000
 858.144 +RDATE:19350929T020000
 858.145 +RDATE:19360927T020000
 858.146 +RDATE:19370926T020000
 858.147 +RDATE:19380925T020000
 858.148 +RDATE:19390924T020000
 858.149 +RDATE:19450930T020000
 858.150 +RDATE:19460929T020000
 858.151 +RDATE:19470928T000000
 858.152 +RDATE:19480926T000000
 858.153 +RDATE:19491127T000000
 858.154 +RDATE:19501126T020000
 858.155 +RDATE:19510930T020000
 858.156 +RDATE:19520928T020000
 858.157 +RDATE:19530927T020000
 858.158 +RDATE:19540926T020000
 858.159 +RDATE:19550925T020000
 858.160 +RDATE:19560930T020000
 858.161 +RDATE:19571027T020000
 858.162 +RDATE:19581026T020000
 858.163 +RDATE:19591025T020000
 858.164 +RDATE:19601030T020000
 858.165 +RDATE:19611029T020000
 858.166 +RDATE:19621028T020000
 858.167 +RDATE:19631027T020000
 858.168 +RDATE:19641025T020000
 858.169 +RDATE:19651031T020000
 858.170 +RDATE:19661030T020000
 858.171 +RDATE:19671029T020000
 858.172 +RDATE:19681027T020000
 858.173 +RDATE:19691026T020000
 858.174 +RDATE:19701025T020000
 858.175 +RDATE:19711031T020000
 858.176 +RDATE:19721029T020000
 858.177 +RDATE:19731028T020000
 858.178 +RDATE:19741027T020000
 858.179 +RDATE:19751026T020000
 858.180 +RDATE:19761031T020000
 858.181 +RDATE:19771030T020000
 858.182 +RDATE:19781029T020000
 858.183 +RDATE:19791028T020000
 858.184 +RDATE:19801026T020000
 858.185 +RDATE:19811025T020000
 858.186 +RDATE:19821031T020000
 858.187 +RDATE:19831030T020000
 858.188 +RDATE:19841028T020000
 858.189 +RDATE:19851027T020000
 858.190 +RDATE:19861026T020000
 858.191 +RDATE:19871025T020000
 858.192 +RDATE:19881030T020000
 858.193 +RDATE:19891029T020000
 858.194 +RDATE:19901028T020000
 858.195 +RDATE:19911027T020000
 858.196 +RDATE:19921025T020000
 858.197 +RDATE:19931031T020000
 858.198 +RDATE:19941030T020000
 858.199 +RDATE:19951029T020000
 858.200 +RDATE:19961027T020000
 858.201 +RDATE:19971026T020000
 858.202 +RDATE:19981025T020000
 858.203 +RDATE:19991031T020000
 858.204 +RDATE:20001029T020000
 858.205 +RDATE:20011028T020000
 858.206 +RDATE:20021027T020000
 858.207 +RDATE:20031026T020000
 858.208 +RDATE:20041031T020000
 858.209 +RDATE:20051030T020000
 858.210 +RDATE:20061029T020000
 858.211 +END:STANDARD
 858.212 +BEGIN:STANDARD
 858.213 +TZOFFSETFROM:-0500
 858.214 +TZOFFSETTO:-0500
 858.215 +TZNAME:EST
 858.216 +DTSTART:19190101T000000
 858.217 +RDATE:19190101T000000
 858.218 +RDATE:19460101T000000
 858.219 +RDATE:19740101T000000
 858.220 +END:STANDARD
 858.221 +BEGIN:DAYLIGHT
 858.222 +TZOFFSETFROM:-0400
 858.223 +TZOFFSETTO:-0400
 858.224 +TZNAME:EWT
 858.225 +DTSTART:19420209T020000
 858.226 +RDATE:19420209T020000
 858.227 +END:DAYLIGHT
 858.228 +BEGIN:DAYLIGHT
 858.229 +TZOFFSETFROM:-0400
 858.230 +TZOFFSETTO:-0400
 858.231 +TZNAME:EPT
 858.232 +DTSTART:19450814T190000
 858.233 +RDATE:19450814T190000
 858.234 +END:DAYLIGHT
 858.235 +END:VTIMEZONE
 858.236 +END:VCALENDAR
   859.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   859.2 +++ b/src/zoneinfo/America/Tortola.ics	Tue Feb 10 18:12:00 2015 +0100
   859.3 @@ -0,0 +1,16 @@
   859.4 +BEGIN:VCALENDAR
   859.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   859.6 +VERSION:2.0
   859.7 +BEGIN:VTIMEZONE
   859.8 +TZID:America/Tortola
   859.9 +TZURL:http://tzurl.org/zoneinfo/America/Tortola
  859.10 +X-LIC-LOCATION:America/Tortola
  859.11 +BEGIN:STANDARD
  859.12 +TZOFFSETFROM:-041828
  859.13 +TZOFFSETTO:-0400
  859.14 +TZNAME:AST
  859.15 +DTSTART:19110701T000000
  859.16 +RDATE:19110701T000000
  859.17 +END:STANDARD
  859.18 +END:VTIMEZONE
  859.19 +END:VCALENDAR
   860.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   860.2 +++ b/src/zoneinfo/America/Vancouver.ics	Tue Feb 10 18:12:00 2015 +0100
   860.3 @@ -0,0 +1,188 @@
   860.4 +BEGIN:VCALENDAR
   860.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   860.6 +VERSION:2.0
   860.7 +BEGIN:VTIMEZONE
   860.8 +TZID:America/Vancouver
   860.9 +TZURL:http://tzurl.org/zoneinfo/America/Vancouver
  860.10 +X-LIC-LOCATION:America/Vancouver
  860.11 +BEGIN:DAYLIGHT
  860.12 +TZOFFSETFROM:-0800
  860.13 +TZOFFSETTO:-0700
  860.14 +TZNAME:PDT
  860.15 +DTSTART:20070311T020000
  860.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  860.17 +END:DAYLIGHT
  860.18 +BEGIN:STANDARD
  860.19 +TZOFFSETFROM:-0700
  860.20 +TZOFFSETTO:-0800
  860.21 +TZNAME:PST
  860.22 +DTSTART:20071104T020000
  860.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  860.24 +END:STANDARD
  860.25 +BEGIN:STANDARD
  860.26 +TZOFFSETFROM:-081228
  860.27 +TZOFFSETTO:-0800
  860.28 +TZNAME:PST
  860.29 +DTSTART:18840101T000000
  860.30 +RDATE:18840101T000000
  860.31 +END:STANDARD
  860.32 +BEGIN:DAYLIGHT
  860.33 +TZOFFSETFROM:-0800
  860.34 +TZOFFSETTO:-0700
  860.35 +TZNAME:PDT
  860.36 +DTSTART:19180414T020000
  860.37 +RDATE:19180414T020000
  860.38 +RDATE:19460428T020000
  860.39 +RDATE:19470427T020000
  860.40 +RDATE:19480425T020000
  860.41 +RDATE:19490424T020000
  860.42 +RDATE:19500430T020000
  860.43 +RDATE:19510429T020000
  860.44 +RDATE:19520427T020000
  860.45 +RDATE:19530426T020000
  860.46 +RDATE:19540425T020000
  860.47 +RDATE:19550424T020000
  860.48 +RDATE:19560429T020000
  860.49 +RDATE:19570428T020000
  860.50 +RDATE:19580427T020000
  860.51 +RDATE:19590426T020000
  860.52 +RDATE:19600424T020000
  860.53 +RDATE:19610430T020000
  860.54 +RDATE:19620429T020000
  860.55 +RDATE:19630428T020000
  860.56 +RDATE:19640426T020000
  860.57 +RDATE:19650425T020000
  860.58 +RDATE:19660424T020000
  860.59 +RDATE:19670430T020000
  860.60 +RDATE:19680428T020000
  860.61 +RDATE:19690427T020000
  860.62 +RDATE:19700426T020000
  860.63 +RDATE:19710425T020000
  860.64 +RDATE:19720430T020000
  860.65 +RDATE:19730429T020000
  860.66 +RDATE:19740428T020000
  860.67 +RDATE:19750427T020000
  860.68 +RDATE:19760425T020000
  860.69 +RDATE:19770424T020000
  860.70 +RDATE:19780430T020000
  860.71 +RDATE:19790429T020000
  860.72 +RDATE:19800427T020000
  860.73 +RDATE:19810426T020000
  860.74 +RDATE:19820425T020000
  860.75 +RDATE:19830424T020000
  860.76 +RDATE:19840429T020000
  860.77 +RDATE:19850428T020000
  860.78 +RDATE:19860427T020000
  860.79 +RDATE:19870405T020000
  860.80 +RDATE:19880403T020000
  860.81 +RDATE:19890402T020000
  860.82 +RDATE:19900401T020000
  860.83 +RDATE:19910407T020000
  860.84 +RDATE:19920405T020000
  860.85 +RDATE:19930404T020000
  860.86 +RDATE:19940403T020000
  860.87 +RDATE:19950402T020000
  860.88 +RDATE:19960407T020000
  860.89 +RDATE:19970406T020000
  860.90 +RDATE:19980405T020000
  860.91 +RDATE:19990404T020000
  860.92 +RDATE:20000402T020000
  860.93 +RDATE:20010401T020000
  860.94 +RDATE:20020407T020000
  860.95 +RDATE:20030406T020000
  860.96 +RDATE:20040404T020000
  860.97 +RDATE:20050403T020000
  860.98 +RDATE:20060402T020000
  860.99 +END:DAYLIGHT
 860.100 +BEGIN:STANDARD
 860.101 +TZOFFSETFROM:-0700
 860.102 +TZOFFSETTO:-0800
 860.103 +TZNAME:PST
 860.104 +DTSTART:19181031T020000
 860.105 +RDATE:19181031T020000
 860.106 +RDATE:19450930T020000
 860.107 +RDATE:19461013T020000
 860.108 +RDATE:19470928T020000
 860.109 +RDATE:19480926T020000
 860.110 +RDATE:19490925T020000
 860.111 +RDATE:19500924T020000
 860.112 +RDATE:19510930T020000
 860.113 +RDATE:19520928T020000
 860.114 +RDATE:19530927T020000
 860.115 +RDATE:19540926T020000
 860.116 +RDATE:19550925T020000
 860.117 +RDATE:19560930T020000
 860.118 +RDATE:19570929T020000
 860.119 +RDATE:19580928T020000
 860.120 +RDATE:19590927T020000
 860.121 +RDATE:19600925T020000
 860.122 +RDATE:19610924T020000
 860.123 +RDATE:19621028T020000
 860.124 +RDATE:19631027T020000
 860.125 +RDATE:19641025T020000
 860.126 +RDATE:19651031T020000
 860.127 +RDATE:19661030T020000
 860.128 +RDATE:19671029T020000
 860.129 +RDATE:19681027T020000
 860.130 +RDATE:19691026T020000
 860.131 +RDATE:19701025T020000
 860.132 +RDATE:19711031T020000
 860.133 +RDATE:19721029T020000
 860.134 +RDATE:19731028T020000
 860.135 +RDATE:19741027T020000
 860.136 +RDATE:19751026T020000
 860.137 +RDATE:19761031T020000
 860.138 +RDATE:19771030T020000
 860.139 +RDATE:19781029T020000
 860.140 +RDATE:19791028T020000
 860.141 +RDATE:19801026T020000
 860.142 +RDATE:19811025T020000
 860.143 +RDATE:19821031T020000
 860.144 +RDATE:19831030T020000
 860.145 +RDATE:19841028T020000
 860.146 +RDATE:19851027T020000
 860.147 +RDATE:19861026T020000
 860.148 +RDATE:19871025T020000
 860.149 +RDATE:19881030T020000
 860.150 +RDATE:19891029T020000
 860.151 +RDATE:19901028T020000
 860.152 +RDATE:19911027T020000
 860.153 +RDATE:19921025T020000
 860.154 +RDATE:19931031T020000
 860.155 +RDATE:19941030T020000
 860.156 +RDATE:19951029T020000
 860.157 +RDATE:19961027T020000
 860.158 +RDATE:19971026T020000
 860.159 +RDATE:19981025T020000
 860.160 +RDATE:19991031T020000
 860.161 +RDATE:20001029T020000
 860.162 +RDATE:20011028T020000
 860.163 +RDATE:20021027T020000
 860.164 +RDATE:20031026T020000
 860.165 +RDATE:20041031T020000
 860.166 +RDATE:20051030T020000
 860.167 +RDATE:20061029T020000
 860.168 +END:STANDARD
 860.169 +BEGIN:DAYLIGHT
 860.170 +TZOFFSETFROM:-0800
 860.171 +TZOFFSETTO:-0700
 860.172 +TZNAME:PWT
 860.173 +DTSTART:19420209T020000
 860.174 +RDATE:19420209T020000
 860.175 +END:DAYLIGHT
 860.176 +BEGIN:DAYLIGHT
 860.177 +TZOFFSETFROM:-0700
 860.178 +TZOFFSETTO:-0700
 860.179 +TZNAME:PPT
 860.180 +DTSTART:19450814T160000
 860.181 +RDATE:19450814T160000
 860.182 +END:DAYLIGHT
 860.183 +BEGIN:STANDARD
 860.184 +TZOFFSETFROM:-0800
 860.185 +TZOFFSETTO:-0800
 860.186 +TZNAME:PST
 860.187 +DTSTART:19870101T000000
 860.188 +RDATE:19870101T000000
 860.189 +END:STANDARD
 860.190 +END:VTIMEZONE
 860.191 +END:VCALENDAR
   861.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   861.2 +++ b/src/zoneinfo/America/Whitehorse.ics	Tue Feb 10 18:12:00 2015 +0100
   861.3 @@ -0,0 +1,154 @@
   861.4 +BEGIN:VCALENDAR
   861.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   861.6 +VERSION:2.0
   861.7 +BEGIN:VTIMEZONE
   861.8 +TZID:America/Whitehorse
   861.9 +TZURL:http://tzurl.org/zoneinfo/America/Whitehorse
  861.10 +X-LIC-LOCATION:America/Whitehorse
  861.11 +BEGIN:DAYLIGHT
  861.12 +TZOFFSETFROM:-0800
  861.13 +TZOFFSETTO:-0700
  861.14 +TZNAME:PDT
  861.15 +DTSTART:20070311T020000
  861.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  861.17 +END:DAYLIGHT
  861.18 +BEGIN:STANDARD
  861.19 +TZOFFSETFROM:-0700
  861.20 +TZOFFSETTO:-0800
  861.21 +TZNAME:PST
  861.22 +DTSTART:20071104T020000
  861.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  861.24 +END:STANDARD
  861.25 +BEGIN:STANDARD
  861.26 +TZOFFSETFROM:-090012
  861.27 +TZOFFSETTO:-0900
  861.28 +TZNAME:YST
  861.29 +DTSTART:19000820T000000
  861.30 +RDATE:19000820T000000
  861.31 +END:STANDARD
  861.32 +BEGIN:DAYLIGHT
  861.33 +TZOFFSETFROM:-0900
  861.34 +TZOFFSETTO:-0800
  861.35 +TZNAME:YDT
  861.36 +DTSTART:19180414T020000
  861.37 +RDATE:19180414T020000
  861.38 +RDATE:19190525T020000
  861.39 +END:DAYLIGHT
  861.40 +BEGIN:STANDARD
  861.41 +TZOFFSETFROM:-0800
  861.42 +TZOFFSETTO:-0900
  861.43 +TZNAME:YST
  861.44 +DTSTART:19181027T020000
  861.45 +RDATE:19181027T020000
  861.46 +RDATE:19191101T000000
  861.47 +RDATE:19450930T020000
  861.48 +END:STANDARD
  861.49 +BEGIN:DAYLIGHT
  861.50 +TZOFFSETFROM:-0900
  861.51 +TZOFFSETTO:-0800
  861.52 +TZNAME:YWT
  861.53 +DTSTART:19420209T020000
  861.54 +RDATE:19420209T020000
  861.55 +END:DAYLIGHT
  861.56 +BEGIN:DAYLIGHT
  861.57 +TZOFFSETFROM:-0800
  861.58 +TZOFFSETTO:-0800
  861.59 +TZNAME:YPT
  861.60 +DTSTART:19450814T150000
  861.61 +RDATE:19450814T150000
  861.62 +END:DAYLIGHT
  861.63 +BEGIN:DAYLIGHT
  861.64 +TZOFFSETFROM:-0900
  861.65 +TZOFFSETTO:-0700
  861.66 +TZNAME:YDDT
  861.67 +DTSTART:19650425T000000
  861.68 +RDATE:19650425T000000
  861.69 +END:DAYLIGHT
  861.70 +BEGIN:STANDARD
  861.71 +TZOFFSETFROM:-0700
  861.72 +TZOFFSETTO:-0900
  861.73 +TZNAME:YST
  861.74 +DTSTART:19651031T020000
  861.75 +RDATE:19651031T020000
  861.76 +END:STANDARD
  861.77 +BEGIN:STANDARD
  861.78 +TZOFFSETFROM:-0900
  861.79 +TZOFFSETTO:-0800
  861.80 +DTSTART:19660701T020000
  861.81 +RDATE:19660701T020000
  861.82 +END:STANDARD
  861.83 +BEGIN:STANDARD
  861.84 +TZOFFSETFROM:-0800
  861.85 +TZOFFSETTO:-0800
  861.86 +TZNAME:PST
  861.87 +DTSTART:19800101T000000
  861.88 +RDATE:19800101T000000
  861.89 +END:STANDARD
  861.90 +BEGIN:DAYLIGHT
  861.91 +TZOFFSETFROM:-0800
  861.92 +TZOFFSETTO:-0700
  861.93 +TZNAME:PDT
  861.94 +DTSTART:19800427T020000
  861.95 +RDATE:19800427T020000
  861.96 +RDATE:19810426T020000
  861.97 +RDATE:19820425T020000
  861.98 +RDATE:19830424T020000
  861.99 +RDATE:19840429T020000
 861.100 +RDATE:19850428T020000
 861.101 +RDATE:19860427T020000
 861.102 +RDATE:19870405T020000
 861.103 +RDATE:19880403T020000
 861.104 +RDATE:19890402T020000
 861.105 +RDATE:19900401T020000
 861.106 +RDATE:19910407T020000
 861.107 +RDATE:19920405T020000
 861.108 +RDATE:19930404T020000
 861.109 +RDATE:19940403T020000
 861.110 +RDATE:19950402T020000
 861.111 +RDATE:19960407T020000
 861.112 +RDATE:19970406T020000
 861.113 +RDATE:19980405T020000
 861.114 +RDATE:19990404T020000
 861.115 +RDATE:20000402T020000
 861.116 +RDATE:20010401T020000
 861.117 +RDATE:20020407T020000
 861.118 +RDATE:20030406T020000
 861.119 +RDATE:20040404T020000
 861.120 +RDATE:20050403T020000
 861.121 +RDATE:20060402T020000
 861.122 +END:DAYLIGHT
 861.123 +BEGIN:STANDARD
 861.124 +TZOFFSETFROM:-0700
 861.125 +TZOFFSETTO:-0800
 861.126 +TZNAME:PST
 861.127 +DTSTART:19801026T020000
 861.128 +RDATE:19801026T020000
 861.129 +RDATE:19811025T020000
 861.130 +RDATE:19821031T020000
 861.131 +RDATE:19831030T020000
 861.132 +RDATE:19841028T020000
 861.133 +RDATE:19851027T020000
 861.134 +RDATE:19861026T020000
 861.135 +RDATE:19871025T020000
 861.136 +RDATE:19881030T020000
 861.137 +RDATE:19891029T020000
 861.138 +RDATE:19901028T020000
 861.139 +RDATE:19911027T020000
 861.140 +RDATE:19921025T020000
 861.141 +RDATE:19931031T020000
 861.142 +RDATE:19941030T020000
 861.143 +RDATE:19951029T020000
 861.144 +RDATE:19961027T020000
 861.145 +RDATE:19971026T020000
 861.146 +RDATE:19981025T020000
 861.147 +RDATE:19991031T020000
 861.148 +RDATE:20001029T020000
 861.149 +RDATE:20011028T020000
 861.150 +RDATE:20021027T020000
 861.151 +RDATE:20031026T020000
 861.152 +RDATE:20041031T020000
 861.153 +RDATE:20051030T020000
 861.154 +RDATE:20061029T020000
 861.155 +END:STANDARD
 861.156 +END:VTIMEZONE
 861.157 +END:VCALENDAR
   862.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   862.2 +++ b/src/zoneinfo/America/Winnipeg.ics	Tue Feb 10 18:12:00 2015 +0100
   862.3 @@ -0,0 +1,184 @@
   862.4 +BEGIN:VCALENDAR
   862.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   862.6 +VERSION:2.0
   862.7 +BEGIN:VTIMEZONE
   862.8 +TZID:America/Winnipeg
   862.9 +TZURL:http://tzurl.org/zoneinfo/America/Winnipeg
  862.10 +X-LIC-LOCATION:America/Winnipeg
  862.11 +BEGIN:DAYLIGHT
  862.12 +TZOFFSETFROM:-0600
  862.13 +TZOFFSETTO:-0500
  862.14 +TZNAME:CDT
  862.15 +DTSTART:20070311T020000
  862.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  862.17 +END:DAYLIGHT
  862.18 +BEGIN:STANDARD
  862.19 +TZOFFSETFROM:-0500
  862.20 +TZOFFSETTO:-0600
  862.21 +TZNAME:CST
  862.22 +DTSTART:20071104T020000
  862.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  862.24 +END:STANDARD
  862.25 +BEGIN:STANDARD
  862.26 +TZOFFSETFROM:-062836
  862.27 +TZOFFSETTO:-0600
  862.28 +TZNAME:CST
  862.29 +DTSTART:18870716T000000
  862.30 +RDATE:18870716T000000
  862.31 +END:STANDARD
  862.32 +BEGIN:DAYLIGHT
  862.33 +TZOFFSETFROM:-0600
  862.34 +TZOFFSETTO:-0500
  862.35 +TZNAME:CDT
  862.36 +DTSTART:19160423T000000
  862.37 +RDATE:19160423T000000
  862.38 +RDATE:19180414T020000
  862.39 +RDATE:19370516T020000
  862.40 +RDATE:19460512T020000
  862.41 +RDATE:19470427T020000
  862.42 +RDATE:19480425T020000
  862.43 +RDATE:19490424T020000
  862.44 +RDATE:19500501T020000
  862.45 +RDATE:19510429T020000
  862.46 +RDATE:19520427T020000
  862.47 +RDATE:19530426T020000
  862.48 +RDATE:19540425T020000
  862.49 +RDATE:19550424T020000
  862.50 +RDATE:19560429T020000
  862.51 +RDATE:19570428T020000
  862.52 +RDATE:19580427T020000
  862.53 +RDATE:19590426T020000
  862.54 +RDATE:19600424T020000
  862.55 +RDATE:19630428T020000
  862.56 +RDATE:19660424T020000
  862.57 +RDATE:19670430T020000
  862.58 +RDATE:19680428T020000
  862.59 +RDATE:19690427T020000
  862.60 +RDATE:19700426T020000
  862.61 +RDATE:19710425T020000
  862.62 +RDATE:19720430T020000
  862.63 +RDATE:19730429T020000
  862.64 +RDATE:19740428T020000
  862.65 +RDATE:19750427T020000
  862.66 +RDATE:19760425T020000
  862.67 +RDATE:19770424T020000
  862.68 +RDATE:19780430T020000
  862.69 +RDATE:19790429T020000
  862.70 +RDATE:19800427T020000
  862.71 +RDATE:19810426T020000
  862.72 +RDATE:19820425T020000
  862.73 +RDATE:19830424T020000
  862.74 +RDATE:19840429T020000
  862.75 +RDATE:19850428T020000
  862.76 +RDATE:19860427T020000
  862.77 +RDATE:19870405T020000
  862.78 +RDATE:19880403T020000
  862.79 +RDATE:19890402T020000
  862.80 +RDATE:19900401T020000
  862.81 +RDATE:19910407T020000
  862.82 +RDATE:19920405T020000
  862.83 +RDATE:19930404T020000
  862.84 +RDATE:19940403T020000
  862.85 +RDATE:19950402T020000
  862.86 +RDATE:19960407T020000
  862.87 +RDATE:19970406T020000
  862.88 +RDATE:19980405T020000
  862.89 +RDATE:19990404T020000
  862.90 +RDATE:20000402T020000
  862.91 +RDATE:20010401T020000
  862.92 +RDATE:20020407T020000
  862.93 +RDATE:20030406T020000
  862.94 +RDATE:20040404T020000
  862.95 +RDATE:20050403T020000
  862.96 +RDATE:20060402T020000
  862.97 +END:DAYLIGHT
  862.98 +BEGIN:STANDARD
  862.99 +TZOFFSETFROM:-0500
 862.100 +TZOFFSETTO:-0600
 862.101 +TZNAME:CST
 862.102 +DTSTART:19160917T000000
 862.103 +RDATE:19160917T000000
 862.104 +RDATE:19181031T020000
 862.105 +RDATE:19370926T020000
 862.106 +RDATE:19450930T020000
 862.107 +RDATE:19461013T020000
 862.108 +RDATE:19470928T020000
 862.109 +RDATE:19480926T020000
 862.110 +RDATE:19490925T020000
 862.111 +RDATE:19500930T020000
 862.112 +RDATE:19510930T020000
 862.113 +RDATE:19520928T020000
 862.114 +RDATE:19530927T020000
 862.115 +RDATE:19540926T020000
 862.116 +RDATE:19550925T020000
 862.117 +RDATE:19560930T020000
 862.118 +RDATE:19570929T020000
 862.119 +RDATE:19580928T020000
 862.120 +RDATE:19591025T020000
 862.121 +RDATE:19600925T020000
 862.122 +RDATE:19630922T020000
 862.123 +RDATE:19661030T030000
 862.124 +RDATE:19671029T030000
 862.125 +RDATE:19681027T030000
 862.126 +RDATE:19691026T030000
 862.127 +RDATE:19701025T030000
 862.128 +RDATE:19711031T030000
 862.129 +RDATE:19721029T030000
 862.130 +RDATE:19731028T030000
 862.131 +RDATE:19741027T030000
 862.132 +RDATE:19751026T030000
 862.133 +RDATE:19761031T030000
 862.134 +RDATE:19771030T030000
 862.135 +RDATE:19781029T030000
 862.136 +RDATE:19791028T030000
 862.137 +RDATE:19801026T030000
 862.138 +RDATE:19811025T030000
 862.139 +RDATE:19821031T030000
 862.140 +RDATE:19831030T030000
 862.141 +RDATE:19841028T030000
 862.142 +RDATE:19851027T030000
 862.143 +RDATE:19861026T030000
 862.144 +RDATE:19871025T030000
 862.145 +RDATE:19881030T030000
 862.146 +RDATE:19891029T030000
 862.147 +RDATE:19901028T030000
 862.148 +RDATE:19911027T030000
 862.149 +RDATE:19921025T030000
 862.150 +RDATE:19931031T030000
 862.151 +RDATE:19941030T030000
 862.152 +RDATE:19951029T030000
 862.153 +RDATE:19961027T030000
 862.154 +RDATE:19971026T030000
 862.155 +RDATE:19981025T030000
 862.156 +RDATE:19991031T030000
 862.157 +RDATE:20001029T030000
 862.158 +RDATE:20011028T030000
 862.159 +RDATE:20021027T030000
 862.160 +RDATE:20031026T030000
 862.161 +RDATE:20041031T030000
 862.162 +RDATE:20051030T030000
 862.163 +RDATE:20061029T020000
 862.164 +END:STANDARD
 862.165 +BEGIN:DAYLIGHT
 862.166 +TZOFFSETFROM:-0600
 862.167 +TZOFFSETTO:-0500
 862.168 +TZNAME:CWT
 862.169 +DTSTART:19420209T020000
 862.170 +RDATE:19420209T020000
 862.171 +END:DAYLIGHT
 862.172 +BEGIN:DAYLIGHT
 862.173 +TZOFFSETFROM:-0500
 862.174 +TZOFFSETTO:-0500
 862.175 +TZNAME:CPT
 862.176 +DTSTART:19450814T180000
 862.177 +RDATE:19450814T180000
 862.178 +END:DAYLIGHT
 862.179 +BEGIN:STANDARD
 862.180 +TZOFFSETFROM:-0600
 862.181 +TZOFFSETTO:-0600
 862.182 +TZNAME:CST
 862.183 +DTSTART:20060101T000000
 862.184 +RDATE:20060101T000000
 862.185 +END:STANDARD
 862.186 +END:VTIMEZONE
 862.187 +END:VCALENDAR
   863.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   863.2 +++ b/src/zoneinfo/America/Yakutat.ics	Tue Feb 10 18:12:00 2015 +0100
   863.3 @@ -0,0 +1,168 @@
   863.4 +BEGIN:VCALENDAR
   863.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   863.6 +VERSION:2.0
   863.7 +BEGIN:VTIMEZONE
   863.8 +TZID:America/Yakutat
   863.9 +TZURL:http://tzurl.org/zoneinfo/America/Yakutat
  863.10 +X-LIC-LOCATION:America/Yakutat
  863.11 +BEGIN:DAYLIGHT
  863.12 +TZOFFSETFROM:-0900
  863.13 +TZOFFSETTO:-0800
  863.14 +TZNAME:AKDT
  863.15 +DTSTART:20070311T020000
  863.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  863.17 +END:DAYLIGHT
  863.18 +BEGIN:STANDARD
  863.19 +TZOFFSETFROM:-0800
  863.20 +TZOFFSETTO:-0900
  863.21 +TZNAME:AKST
  863.22 +DTSTART:20071104T020000
  863.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  863.24 +END:STANDARD
  863.25 +BEGIN:STANDARD
  863.26 +TZOFFSETFROM:+144105
  863.27 +TZOFFSETTO:-091855
  863.28 +TZNAME:LMT
  863.29 +DTSTART:18671018T000000
  863.30 +RDATE:18671018T000000
  863.31 +END:STANDARD
  863.32 +BEGIN:STANDARD
  863.33 +TZOFFSETFROM:-091855
  863.34 +TZOFFSETTO:-0900
  863.35 +TZNAME:YST
  863.36 +DTSTART:19000820T120000
  863.37 +RDATE:19000820T120000
  863.38 +END:STANDARD
  863.39 +BEGIN:STANDARD
  863.40 +TZOFFSETFROM:-0900
  863.41 +TZOFFSETTO:-0900
  863.42 +TZNAME:YST
  863.43 +DTSTART:19420101T000000
  863.44 +RDATE:19420101T000000
  863.45 +RDATE:19460101T000000
  863.46 +RDATE:19690101T000000
  863.47 +END:STANDARD
  863.48 +BEGIN:DAYLIGHT
  863.49 +TZOFFSETFROM:-0900
  863.50 +TZOFFSETTO:-0800
  863.51 +TZNAME:YWT
  863.52 +DTSTART:19420209T020000
  863.53 +RDATE:19420209T020000
  863.54 +END:DAYLIGHT
  863.55 +BEGIN:DAYLIGHT
  863.56 +TZOFFSETFROM:-0800
  863.57 +TZOFFSETTO:-0800
  863.58 +TZNAME:YPT
  863.59 +DTSTART:19450814T150000
  863.60 +RDATE:19450814T150000
  863.61 +END:DAYLIGHT
  863.62 +BEGIN:STANDARD
  863.63 +TZOFFSETFROM:-0800
  863.64 +TZOFFSETTO:-0900
  863.65 +TZNAME:YST
  863.66 +DTSTART:19450930T020000
  863.67 +RDATE:19450930T020000
  863.68 +RDATE:19691026T020000
  863.69 +RDATE:19701025T020000
  863.70 +RDATE:19711031T020000
  863.71 +RDATE:19721029T020000
  863.72 +RDATE:19731028T020000
  863.73 +RDATE:19741027T020000
  863.74 +RDATE:19751026T020000
  863.75 +RDATE:19761031T020000
  863.76 +RDATE:19771030T020000
  863.77 +RDATE:19781029T020000
  863.78 +RDATE:19791028T020000
  863.79 +RDATE:19801026T020000
  863.80 +RDATE:19811025T020000
  863.81 +RDATE:19821031T020000
  863.82 +RDATE:19831030T020000
  863.83 +END:STANDARD
  863.84 +BEGIN:DAYLIGHT
  863.85 +TZOFFSETFROM:-0900
  863.86 +TZOFFSETTO:-0800
  863.87 +TZNAME:YDT
  863.88 +DTSTART:19690427T020000
  863.89 +RDATE:19690427T020000
  863.90 +RDATE:19700426T020000
  863.91 +RDATE:19710425T020000
  863.92 +RDATE:19720430T020000
  863.93 +RDATE:19730429T020000
  863.94 +RDATE:19740106T020000
  863.95 +RDATE:19750223T020000
  863.96 +RDATE:19760425T020000
  863.97 +RDATE:19770424T020000
  863.98 +RDATE:19780430T020000
  863.99 +RDATE:19790429T020000
 863.100 +RDATE:19800427T020000
 863.101 +RDATE:19810426T020000
 863.102 +RDATE:19820425T020000
 863.103 +RDATE:19830424T020000
 863.104 +END:DAYLIGHT
 863.105 +BEGIN:STANDARD
 863.106 +TZOFFSETFROM:-0900
 863.107 +TZOFFSETTO:-0900
 863.108 +TZNAME:AKST
 863.109 +DTSTART:19831130T000000
 863.110 +RDATE:19831130T000000
 863.111 +END:STANDARD
 863.112 +BEGIN:DAYLIGHT
 863.113 +TZOFFSETFROM:-0900
 863.114 +TZOFFSETTO:-0800
 863.115 +TZNAME:AKDT
 863.116 +DTSTART:19840429T020000
 863.117 +RDATE:19840429T020000
 863.118 +RDATE:19850428T020000
 863.119 +RDATE:19860427T020000
 863.120 +RDATE:19870405T020000
 863.121 +RDATE:19880403T020000
 863.122 +RDATE:19890402T020000
 863.123 +RDATE:19900401T020000
 863.124 +RDATE:19910407T020000
 863.125 +RDATE:19920405T020000
 863.126 +RDATE:19930404T020000
 863.127 +RDATE:19940403T020000
 863.128 +RDATE:19950402T020000
 863.129 +RDATE:19960407T020000
 863.130 +RDATE:19970406T020000
 863.131 +RDATE:19980405T020000
 863.132 +RDATE:19990404T020000
 863.133 +RDATE:20000402T020000
 863.134 +RDATE:20010401T020000
 863.135 +RDATE:20020407T020000
 863.136 +RDATE:20030406T020000
 863.137 +RDATE:20040404T020000
 863.138 +RDATE:20050403T020000
 863.139 +RDATE:20060402T020000
 863.140 +END:DAYLIGHT
 863.141 +BEGIN:STANDARD
 863.142 +TZOFFSETFROM:-0800
 863.143 +TZOFFSETTO:-0900
 863.144 +TZNAME:AKST
 863.145 +DTSTART:19841028T020000
 863.146 +RDATE:19841028T020000
 863.147 +RDATE:19851027T020000
 863.148 +RDATE:19861026T020000
 863.149 +RDATE:19871025T020000
 863.150 +RDATE:19881030T020000
 863.151 +RDATE:19891029T020000
 863.152 +RDATE:19901028T020000
 863.153 +RDATE:19911027T020000
 863.154 +RDATE:19921025T020000
 863.155 +RDATE:19931031T020000
 863.156 +RDATE:19941030T020000
 863.157 +RDATE:19951029T020000
 863.158 +RDATE:19961027T020000
 863.159 +RDATE:19971026T020000
 863.160 +RDATE:19981025T020000
 863.161 +RDATE:19991031T020000
 863.162 +RDATE:20001029T020000
 863.163 +RDATE:20011028T020000
 863.164 +RDATE:20021027T020000
 863.165 +RDATE:20031026T020000
 863.166 +RDATE:20041031T020000
 863.167 +RDATE:20051030T020000
 863.168 +RDATE:20061029T020000
 863.169 +END:STANDARD
 863.170 +END:VTIMEZONE
 863.171 +END:VCALENDAR
   864.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   864.2 +++ b/src/zoneinfo/America/Yellowknife.ics	Tue Feb 10 18:12:00 2015 +0100
   864.3 @@ -0,0 +1,132 @@
   864.4 +BEGIN:VCALENDAR
   864.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   864.6 +VERSION:2.0
   864.7 +BEGIN:VTIMEZONE
   864.8 +TZID:America/Yellowknife
   864.9 +TZURL:http://tzurl.org/zoneinfo/America/Yellowknife
  864.10 +X-LIC-LOCATION:America/Yellowknife
  864.11 +BEGIN:DAYLIGHT
  864.12 +TZOFFSETFROM:-0700
  864.13 +TZOFFSETTO:-0600
  864.14 +TZNAME:MDT
  864.15 +DTSTART:20070311T020000
  864.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  864.17 +END:DAYLIGHT
  864.18 +BEGIN:STANDARD
  864.19 +TZOFFSETFROM:-0600
  864.20 +TZOFFSETTO:-0700
  864.21 +TZNAME:MST
  864.22 +DTSTART:20071104T020000
  864.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  864.24 +END:STANDARD
  864.25 +BEGIN:STANDARD
  864.26 +TZOFFSETFROM:+0000
  864.27 +TZOFFSETTO:-0700
  864.28 +TZNAME:MST
  864.29 +DTSTART:19350101T000000
  864.30 +RDATE:19350101T000000
  864.31 +END:STANDARD
  864.32 +BEGIN:DAYLIGHT
  864.33 +TZOFFSETFROM:-0700
  864.34 +TZOFFSETTO:-0600
  864.35 +TZNAME:MWT
  864.36 +DTSTART:19420209T020000
  864.37 +RDATE:19420209T020000
  864.38 +END:DAYLIGHT
  864.39 +BEGIN:DAYLIGHT
  864.40 +TZOFFSETFROM:-0600
  864.41 +TZOFFSETTO:-0600
  864.42 +TZNAME:MPT
  864.43 +DTSTART:19450814T170000
  864.44 +RDATE:19450814T170000
  864.45 +END:DAYLIGHT
  864.46 +BEGIN:STANDARD
  864.47 +TZOFFSETFROM:-0600
  864.48 +TZOFFSETTO:-0700
  864.49 +TZNAME:MST
  864.50 +DTSTART:19450930T020000
  864.51 +RDATE:19450930T020000
  864.52 +RDATE:19801026T020000
  864.53 +RDATE:19811025T020000
  864.54 +RDATE:19821031T020000
  864.55 +RDATE:19831030T020000
  864.56 +RDATE:19841028T020000
  864.57 +RDATE:19851027T020000
  864.58 +RDATE:19861026T020000
  864.59 +RDATE:19871025T020000
  864.60 +RDATE:19881030T020000
  864.61 +RDATE:19891029T020000
  864.62 +RDATE:19901028T020000
  864.63 +RDATE:19911027T020000
  864.64 +RDATE:19921025T020000
  864.65 +RDATE:19931031T020000
  864.66 +RDATE:19941030T020000
  864.67 +RDATE:19951029T020000
  864.68 +RDATE:19961027T020000
  864.69 +RDATE:19971026T020000
  864.70 +RDATE:19981025T020000
  864.71 +RDATE:19991031T020000
  864.72 +RDATE:20001029T020000
  864.73 +RDATE:20011028T020000
  864.74 +RDATE:20021027T020000
  864.75 +RDATE:20031026T020000
  864.76 +RDATE:20041031T020000
  864.77 +RDATE:20051030T020000
  864.78 +RDATE:20061029T020000
  864.79 +END:STANDARD
  864.80 +BEGIN:DAYLIGHT
  864.81 +TZOFFSETFROM:-0700
  864.82 +TZOFFSETTO:-0500
  864.83 +TZNAME:MDDT
  864.84 +DTSTART:19650425T000000
  864.85 +RDATE:19650425T000000
  864.86 +END:DAYLIGHT
  864.87 +BEGIN:STANDARD
  864.88 +TZOFFSETFROM:-0500
  864.89 +TZOFFSETTO:-0700
  864.90 +TZNAME:MST
  864.91 +DTSTART:19651031T020000
  864.92 +RDATE:19651031T020000
  864.93 +END:STANDARD
  864.94 +BEGIN:STANDARD
  864.95 +TZOFFSETFROM:-0700
  864.96 +TZOFFSETTO:-0700
  864.97 +TZNAME:MST
  864.98 +DTSTART:19800101T000000
  864.99 +RDATE:19800101T000000
 864.100 +END:STANDARD
 864.101 +BEGIN:DAYLIGHT
 864.102 +TZOFFSETFROM:-0700
 864.103 +TZOFFSETTO:-0600
 864.104 +TZNAME:MDT
 864.105 +DTSTART:19800427T020000
 864.106 +RDATE:19800427T020000
 864.107 +RDATE:19810426T020000
 864.108 +RDATE:19820425T020000
 864.109 +RDATE:19830424T020000
 864.110 +RDATE:19840429T020000
 864.111 +RDATE:19850428T020000
 864.112 +RDATE:19860427T020000
 864.113 +RDATE:19870405T020000
 864.114 +RDATE:19880403T020000
 864.115 +RDATE:19890402T020000
 864.116 +RDATE:19900401T020000
 864.117 +RDATE:19910407T020000
 864.118 +RDATE:19920405T020000
 864.119 +RDATE:19930404T020000
 864.120 +RDATE:19940403T020000
 864.121 +RDATE:19950402T020000
 864.122 +RDATE:19960407T020000
 864.123 +RDATE:19970406T020000
 864.124 +RDATE:19980405T020000
 864.125 +RDATE:19990404T020000
 864.126 +RDATE:20000402T020000
 864.127 +RDATE:20010401T020000
 864.128 +RDATE:20020407T020000
 864.129 +RDATE:20030406T020000
 864.130 +RDATE:20040404T020000
 864.131 +RDATE:20050403T020000
 864.132 +RDATE:20060402T020000
 864.133 +END:DAYLIGHT
 864.134 +END:VTIMEZONE
 864.135 +END:VCALENDAR
   865.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   865.2 +++ b/src/zoneinfo/Antarctica/Casey.ics	Tue Feb 10 18:12:00 2015 +0100
   865.3 @@ -0,0 +1,30 @@
   865.4 +BEGIN:VCALENDAR
   865.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   865.6 +VERSION:2.0
   865.7 +BEGIN:VTIMEZONE
   865.8 +TZID:Antarctica/Casey
   865.9 +TZURL:http://tzurl.org/zoneinfo/Antarctica/Casey
  865.10 +X-LIC-LOCATION:Antarctica/Casey
  865.11 +BEGIN:STANDARD
  865.12 +TZOFFSETFROM:+0000
  865.13 +TZOFFSETTO:+0800
  865.14 +TZNAME:WST
  865.15 +DTSTART:19690101T000000
  865.16 +RDATE:19690101T000000
  865.17 +END:STANDARD
  865.18 +BEGIN:STANDARD
  865.19 +TZOFFSETFROM:+0800
  865.20 +TZOFFSETTO:+1100
  865.21 +TZNAME:CAST
  865.22 +DTSTART:20091018T020000
  865.23 +RDATE:20091018T020000
  865.24 +END:STANDARD
  865.25 +BEGIN:STANDARD
  865.26 +TZOFFSETFROM:+1100
  865.27 +TZOFFSETTO:+0800
  865.28 +TZNAME:WST
  865.29 +DTSTART:20100305T020000
  865.30 +RDATE:20100305T020000
  865.31 +END:STANDARD
  865.32 +END:VTIMEZONE
  865.33 +END:VCALENDAR
   866.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   866.2 +++ b/src/zoneinfo/Antarctica/Davis.ics	Tue Feb 10 18:12:00 2015 +0100
   866.3 @@ -0,0 +1,38 @@
   866.4 +BEGIN:VCALENDAR
   866.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   866.6 +VERSION:2.0
   866.7 +BEGIN:VTIMEZONE
   866.8 +TZID:Antarctica/Davis
   866.9 +TZURL:http://tzurl.org/zoneinfo/Antarctica/Davis
  866.10 +X-LIC-LOCATION:Antarctica/Davis
  866.11 +BEGIN:STANDARD
  866.12 +TZOFFSETFROM:+0000
  866.13 +TZOFFSETTO:+0700
  866.14 +TZNAME:DAVT
  866.15 +DTSTART:19570113T000000
  866.16 +RDATE:19570113T000000
  866.17 +RDATE:19690201T000000
  866.18 +END:STANDARD
  866.19 +BEGIN:STANDARD
  866.20 +TZOFFSETFROM:+0700
  866.21 +TZOFFSETTO:+0000
  866.22 +TZNAME:zzz
  866.23 +DTSTART:19641101T000000
  866.24 +RDATE:19641101T000000
  866.25 +END:STANDARD
  866.26 +BEGIN:STANDARD
  866.27 +TZOFFSETFROM:+0700
  866.28 +TZOFFSETTO:+0500
  866.29 +TZNAME:DAVT
  866.30 +DTSTART:20091018T020000
  866.31 +RDATE:20091018T020000
  866.32 +END:STANDARD
  866.33 +BEGIN:STANDARD
  866.34 +TZOFFSETFROM:+0500
  866.35 +TZOFFSETTO:+0700
  866.36 +TZNAME:DAVT
  866.37 +DTSTART:20100311T010000
  866.38 +RDATE:20100311T010000
  866.39 +END:STANDARD
  866.40 +END:VTIMEZONE
  866.41 +END:VCALENDAR
   867.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   867.2 +++ b/src/zoneinfo/Antarctica/DumontDUrville.ics	Tue Feb 10 18:12:00 2015 +0100
   867.3 @@ -0,0 +1,30 @@
   867.4 +BEGIN:VCALENDAR
   867.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   867.6 +VERSION:2.0
   867.7 +BEGIN:VTIMEZONE
   867.8 +TZID:Antarctica/DumontDUrville
   867.9 +TZURL:http://tzurl.org/zoneinfo/Antarctica/DumontDUrville
  867.10 +X-LIC-LOCATION:Antarctica/DumontDUrville
  867.11 +BEGIN:STANDARD
  867.12 +TZOFFSETFROM:+0000
  867.13 +TZOFFSETTO:+1000
  867.14 +TZNAME:PMT
  867.15 +DTSTART:19470101T000000
  867.16 +RDATE:19470101T000000
  867.17 +END:STANDARD
  867.18 +BEGIN:STANDARD
  867.19 +TZOFFSETFROM:+1000
  867.20 +TZOFFSETTO:+0000
  867.21 +TZNAME:zzz
  867.22 +DTSTART:19520114T000000
  867.23 +RDATE:19520114T000000
  867.24 +END:STANDARD
  867.25 +BEGIN:STANDARD
  867.26 +TZOFFSETFROM:+0000
  867.27 +TZOFFSETTO:+1000
  867.28 +TZNAME:DDUT
  867.29 +DTSTART:19561101T000000
  867.30 +RDATE:19561101T000000
  867.31 +END:STANDARD
  867.32 +END:VTIMEZONE
  867.33 +END:VCALENDAR
   868.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   868.2 +++ b/src/zoneinfo/Antarctica/Macquarie.ics	Tue Feb 10 18:12:00 2015 +0100
   868.3 @@ -0,0 +1,142 @@
   868.4 +BEGIN:VCALENDAR
   868.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   868.6 +VERSION:2.0
   868.7 +BEGIN:VTIMEZONE
   868.8 +TZID:Antarctica/Macquarie
   868.9 +TZURL:http://tzurl.org/zoneinfo/Antarctica/Macquarie
  868.10 +X-LIC-LOCATION:Antarctica/Macquarie
  868.11 +BEGIN:STANDARD
  868.12 +TZOFFSETFROM:+0000
  868.13 +TZOFFSETTO:+1000
  868.14 +TZNAME:EST
  868.15 +DTSTART:19110101T000000
  868.16 +RDATE:19110101T000000
  868.17 +END:STANDARD
  868.18 +BEGIN:DAYLIGHT
  868.19 +TZOFFSETFROM:+1000
  868.20 +TZOFFSETTO:+1100
  868.21 +TZNAME:EST
  868.22 +DTSTART:19161001T020000
  868.23 +RDATE:19161001T020000
  868.24 +RDATE:19420101T020000
  868.25 +RDATE:19420927T020000
  868.26 +RDATE:19431003T020000
  868.27 +RDATE:19671001T020000
  868.28 +RDATE:19681027T020000
  868.29 +RDATE:19691026T020000
  868.30 +RDATE:19701025T020000
  868.31 +RDATE:19711031T020000
  868.32 +RDATE:19721029T020000
  868.33 +RDATE:19731028T020000
  868.34 +RDATE:19741027T020000
  868.35 +RDATE:19751026T020000
  868.36 +RDATE:19761031T020000
  868.37 +RDATE:19771030T020000
  868.38 +RDATE:19781029T020000
  868.39 +RDATE:19791028T020000
  868.40 +RDATE:19801026T020000
  868.41 +RDATE:19811025T020000
  868.42 +RDATE:19821031T020000
  868.43 +RDATE:19831030T020000
  868.44 +RDATE:19841028T020000
  868.45 +RDATE:19851027T020000
  868.46 +RDATE:19861019T020000
  868.47 +RDATE:19871025T020000
  868.48 +RDATE:19881030T020000
  868.49 +RDATE:19891029T020000
  868.50 +RDATE:19901028T020000
  868.51 +RDATE:19911006T020000
  868.52 +RDATE:19921004T020000
  868.53 +RDATE:19931003T020000
  868.54 +RDATE:19941002T020000
  868.55 +RDATE:19951001T020000
  868.56 +RDATE:19961006T020000
  868.57 +RDATE:19971005T020000
  868.58 +RDATE:19981004T020000
  868.59 +RDATE:19991003T020000
  868.60 +RDATE:20000827T020000
  868.61 +RDATE:20011007T020000
  868.62 +RDATE:20021006T020000
  868.63 +RDATE:20031005T020000
  868.64 +RDATE:20041003T020000
  868.65 +RDATE:20051002T020000
  868.66 +RDATE:20061001T020000
  868.67 +RDATE:20071007T020000
  868.68 +RDATE:20081005T020000
  868.69 +RDATE:20091004T020000
  868.70 +END:DAYLIGHT
  868.71 +BEGIN:DAYLIGHT
  868.72 +TZOFFSETFROM:+1100
  868.73 +TZOFFSETTO:+1100
  868.74 +TZNAME:EST
  868.75 +DTSTART:19170201T000000
  868.76 +RDATE:19170201T000000
  868.77 +END:DAYLIGHT
  868.78 +BEGIN:STANDARD
  868.79 +TZOFFSETFROM:+1100
  868.80 +TZOFFSETTO:+1000
  868.81 +TZNAME:EST
  868.82 +DTSTART:19170325T020000
  868.83 +RDATE:19170325T020000
  868.84 +RDATE:19420329T020000
  868.85 +RDATE:19430328T020000
  868.86 +RDATE:19440326T020000
  868.87 +RDATE:19680331T030000
  868.88 +RDATE:19690309T030000
  868.89 +RDATE:19700308T030000
  868.90 +RDATE:19710314T030000
  868.91 +RDATE:19720227T030000
  868.92 +RDATE:19730304T030000
  868.93 +RDATE:19740303T030000
  868.94 +RDATE:19750302T030000
  868.95 +RDATE:19760307T030000
  868.96 +RDATE:19770306T030000
  868.97 +RDATE:19780305T030000
  868.98 +RDATE:19790304T030000
  868.99 +RDATE:19800302T030000
 868.100 +RDATE:19810301T030000
 868.101 +RDATE:19820328T030000
 868.102 +RDATE:19830327T030000
 868.103 +RDATE:19840304T030000
 868.104 +RDATE:19850303T030000
 868.105 +RDATE:19860302T030000
 868.106 +RDATE:19870315T030000
 868.107 +RDATE:19880320T030000
 868.108 +RDATE:19890319T030000
 868.109 +RDATE:19900318T030000
 868.110 +RDATE:19910331T030000
 868.111 +RDATE:19920329T030000
 868.112 +RDATE:19930328T030000
 868.113 +RDATE:19940327T030000
 868.114 +RDATE:19950326T030000
 868.115 +RDATE:19960331T030000
 868.116 +RDATE:19970330T030000
 868.117 +RDATE:19980329T030000
 868.118 +RDATE:19990328T030000
 868.119 +RDATE:20000326T030000
 868.120 +RDATE:20010325T030000
 868.121 +RDATE:20020331T030000
 868.122 +RDATE:20030330T030000
 868.123 +RDATE:20040328T030000
 868.124 +RDATE:20050327T030000
 868.125 +RDATE:20060402T030000
 868.126 +RDATE:20070325T030000
 868.127 +RDATE:20080406T030000
 868.128 +RDATE:20090405T030000
 868.129 +END:STANDARD
 868.130 +BEGIN:STANDARD
 868.131 +TZOFFSETFROM:+1000
 868.132 +TZOFFSETTO:+1000
 868.133 +TZNAME:EST
 868.134 +DTSTART:19670101T000000
 868.135 +RDATE:19670101T000000
 868.136 +END:STANDARD
 868.137 +BEGIN:STANDARD
 868.138 +TZOFFSETFROM:+1100
 868.139 +TZOFFSETTO:+1100
 868.140 +TZNAME:MIST
 868.141 +DTSTART:20100404T030000
 868.142 +RDATE:20100404T030000
 868.143 +END:STANDARD
 868.144 +END:VTIMEZONE
 868.145 +END:VCALENDAR
   869.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   869.2 +++ b/src/zoneinfo/Antarctica/Mawson.ics	Tue Feb 10 18:12:00 2015 +0100
   869.3 @@ -0,0 +1,23 @@
   869.4 +BEGIN:VCALENDAR
   869.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   869.6 +VERSION:2.0
   869.7 +BEGIN:VTIMEZONE
   869.8 +TZID:Antarctica/Mawson
   869.9 +TZURL:http://tzurl.org/zoneinfo/Antarctica/Mawson
  869.10 +X-LIC-LOCATION:Antarctica/Mawson
  869.11 +BEGIN:STANDARD
  869.12 +TZOFFSETFROM:+0000
  869.13 +TZOFFSETTO:+0600
  869.14 +TZNAME:MAWT
  869.15 +DTSTART:19540213T000000
  869.16 +RDATE:19540213T000000
  869.17 +END:STANDARD
  869.18 +BEGIN:STANDARD
  869.19 +TZOFFSETFROM:+0600
  869.20 +TZOFFSETTO:+0500
  869.21 +TZNAME:MAWT
  869.22 +DTSTART:20091018T020000
  869.23 +RDATE:20091018T020000
  869.24 +END:STANDARD
  869.25 +END:VTIMEZONE
  869.26 +END:VCALENDAR
   870.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   870.2 +++ b/src/zoneinfo/Antarctica/McMurdo.ics	Tue Feb 10 18:12:00 2015 +0100
   870.3 @@ -0,0 +1,108 @@
   870.4 +BEGIN:VCALENDAR
   870.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   870.6 +VERSION:2.0
   870.7 +BEGIN:VTIMEZONE
   870.8 +TZID:Antarctica/McMurdo
   870.9 +TZURL:http://tzurl.org/zoneinfo/Antarctica/McMurdo
  870.10 +X-LIC-LOCATION:Antarctica/McMurdo
  870.11 +BEGIN:DAYLIGHT
  870.12 +TZOFFSETFROM:+1200
  870.13 +TZOFFSETTO:+1300
  870.14 +TZNAME:NZDT
  870.15 +DTSTART:20070930T020000
  870.16 +RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU
  870.17 +END:DAYLIGHT
  870.18 +BEGIN:STANDARD
  870.19 +TZOFFSETFROM:+1300
  870.20 +TZOFFSETTO:+1200
  870.21 +TZNAME:NZST
  870.22 +DTSTART:20080406T030000
  870.23 +RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU
  870.24 +END:STANDARD
  870.25 +BEGIN:STANDARD
  870.26 +TZOFFSETFROM:+0000
  870.27 +TZOFFSETTO:+1200
  870.28 +TZNAME:NZST
  870.29 +DTSTART:19560101T000000
  870.30 +RDATE:19560101T000000
  870.31 +END:STANDARD
  870.32 +BEGIN:DAYLIGHT
  870.33 +TZOFFSETFROM:+1200
  870.34 +TZOFFSETTO:+1300
  870.35 +TZNAME:NZDT
  870.36 +DTSTART:19741103T020000
  870.37 +RDATE:19741103T020000
  870.38 +RDATE:19751026T020000
  870.39 +RDATE:19761031T020000
  870.40 +RDATE:19771030T020000
  870.41 +RDATE:19781029T020000
  870.42 +RDATE:19791028T020000
  870.43 +RDATE:19801026T020000
  870.44 +RDATE:19811025T020000
  870.45 +RDATE:19821031T020000
  870.46 +RDATE:19831030T020000
  870.47 +RDATE:19841028T020000
  870.48 +RDATE:19851027T020000
  870.49 +RDATE:19861026T020000
  870.50 +RDATE:19871025T020000
  870.51 +RDATE:19881030T020000
  870.52 +RDATE:19891008T020000
  870.53 +RDATE:19901007T020000
  870.54 +RDATE:19911006T020000
  870.55 +RDATE:19921004T020000
  870.56 +RDATE:19931003T020000
  870.57 +RDATE:19941002T020000
  870.58 +RDATE:19951001T020000
  870.59 +RDATE:19961006T020000
  870.60 +RDATE:19971005T020000
  870.61 +RDATE:19981004T020000
  870.62 +RDATE:19991003T020000
  870.63 +RDATE:20001001T020000
  870.64 +RDATE:20011007T020000
  870.65 +RDATE:20021006T020000
  870.66 +RDATE:20031005T020000
  870.67 +RDATE:20041003T020000
  870.68 +RDATE:20051002T020000
  870.69 +RDATE:20061001T020000
  870.70 +END:DAYLIGHT
  870.71 +BEGIN:STANDARD
  870.72 +TZOFFSETFROM:+1300
  870.73 +TZOFFSETTO:+1200
  870.74 +TZNAME:NZST
  870.75 +DTSTART:19750223T030000
  870.76 +RDATE:19750223T030000
  870.77 +RDATE:19760307T030000
  870.78 +RDATE:19770306T030000
  870.79 +RDATE:19780305T030000
  870.80 +RDATE:19790304T030000
  870.81 +RDATE:19800302T030000
  870.82 +RDATE:19810301T030000
  870.83 +RDATE:19820307T030000
  870.84 +RDATE:19830306T030000
  870.85 +RDATE:19840304T030000
  870.86 +RDATE:19850303T030000
  870.87 +RDATE:19860302T030000
  870.88 +RDATE:19870301T030000
  870.89 +RDATE:19880306T030000
  870.90 +RDATE:19890305T030000
  870.91 +RDATE:19900318T030000
  870.92 +RDATE:19910317T030000
  870.93 +RDATE:19920315T030000
  870.94 +RDATE:19930321T030000
  870.95 +RDATE:19940320T030000
  870.96 +RDATE:19950319T030000
  870.97 +RDATE:19960317T030000
  870.98 +RDATE:19970316T030000
  870.99 +RDATE:19980315T030000
 870.100 +RDATE:19990321T030000
 870.101 +RDATE:20000319T030000
 870.102 +RDATE:20010318T030000
 870.103 +RDATE:20020317T030000
 870.104 +RDATE:20030316T030000
 870.105 +RDATE:20040321T030000
 870.106 +RDATE:20050320T030000
 870.107 +RDATE:20060319T030000
 870.108 +RDATE:20070318T030000
 870.109 +END:STANDARD
 870.110 +END:VTIMEZONE
 870.111 +END:VCALENDAR
   871.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   871.2 +++ b/src/zoneinfo/Antarctica/Palmer.ics	Tue Feb 10 18:12:00 2015 +0100
   871.3 @@ -0,0 +1,119 @@
   871.4 +BEGIN:VCALENDAR
   871.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   871.6 +VERSION:2.0
   871.7 +BEGIN:VTIMEZONE
   871.8 +TZID:Antarctica/Palmer
   871.9 +TZURL:http://tzurl.org/zoneinfo/Antarctica/Palmer
  871.10 +X-LIC-LOCATION:Antarctica/Palmer
  871.11 +BEGIN:DAYLIGHT
  871.12 +TZOFFSETFROM:-0400
  871.13 +TZOFFSETTO:-0300
  871.14 +TZNAME:CLST
  871.15 +DTSTART:19991010T000000
  871.16 +RRULE:FREQ=YEARLY;BYMONTH=10;BYMONTHDAY=9,10,11,12,13,14,15;BYDAY=SU
  871.17 +END:DAYLIGHT
  871.18 +BEGIN:STANDARD
  871.19 +TZOFFSETFROM:-0300
  871.20 +TZOFFSETTO:-0400
  871.21 +TZNAME:CLT
  871.22 +DTSTART:20000312T000000
  871.23 +RRULE:FREQ=YEARLY;BYMONTH=3;BYMONTHDAY=9,10,11,12,13,14,15;BYDAY=SU
  871.24 +END:STANDARD
  871.25 +BEGIN:DAYLIGHT
  871.26 +TZOFFSETFROM:+0000
  871.27 +TZOFFSETTO:-0300
  871.28 +TZNAME:ARST
  871.29 +DTSTART:19650101T000000
  871.30 +RDATE:19650101T000000
  871.31 +END:DAYLIGHT
  871.32 +BEGIN:STANDARD
  871.33 +TZOFFSETFROM:-0300
  871.34 +TZOFFSETTO:-0400
  871.35 +TZNAME:ART
  871.36 +DTSTART:19650301T000000
  871.37 +RDATE:19650301T000000
  871.38 +RDATE:19660301T000000
  871.39 +RDATE:19670402T000000
  871.40 +RDATE:19680407T000000
  871.41 +RDATE:19690406T000000
  871.42 +END:STANDARD
  871.43 +BEGIN:DAYLIGHT
  871.44 +TZOFFSETFROM:-0400
  871.45 +TZOFFSETTO:-0300
  871.46 +TZNAME:ARST
  871.47 +DTSTART:19651015T000000
  871.48 +RDATE:19651015T000000
  871.49 +RDATE:19661015T000000
  871.50 +RDATE:19671001T000000
  871.51 +RDATE:19681006T000000
  871.52 +END:DAYLIGHT
  871.53 +BEGIN:STANDARD
  871.54 +TZOFFSETFROM:-0400
  871.55 +TZOFFSETTO:-0300
  871.56 +TZNAME:ART
  871.57 +DTSTART:19691005T000000
  871.58 +RDATE:19691005T000000
  871.59 +END:STANDARD
  871.60 +BEGIN:DAYLIGHT
  871.61 +TZOFFSETFROM:-0300
  871.62 +TZOFFSETTO:-0200
  871.63 +TZNAME:ARST
  871.64 +DTSTART:19740123T000000
  871.65 +RDATE:19740123T000000
  871.66 +END:DAYLIGHT
  871.67 +BEGIN:STANDARD
  871.68 +TZOFFSETFROM:-0200
  871.69 +TZOFFSETTO:-0300
  871.70 +TZNAME:ART
  871.71 +DTSTART:19740501T000000
  871.72 +RDATE:19740501T000000
  871.73 +END:STANDARD
  871.74 +BEGIN:STANDARD
  871.75 +TZOFFSETFROM:-0300
  871.76 +TZOFFSETTO:-0400
  871.77 +TZNAME:CLT
  871.78 +DTSTART:19820501T000000
  871.79 +RDATE:19820501T000000
  871.80 +RDATE:19830313T000000
  871.81 +RDATE:19840311T000000
  871.82 +RDATE:19850310T000000
  871.83 +RDATE:19860309T000000
  871.84 +RDATE:19870412T000000
  871.85 +RDATE:19880313T000000
  871.86 +RDATE:19890312T000000
  871.87 +RDATE:19900318T000000
  871.88 +RDATE:19910310T000000
  871.89 +RDATE:19920315T000000
  871.90 +RDATE:19930314T000000
  871.91 +RDATE:19940313T000000
  871.92 +RDATE:19950312T000000
  871.93 +RDATE:19960310T000000
  871.94 +RDATE:19970330T000000
  871.95 +RDATE:19980315T000000
  871.96 +RDATE:19990404T000000
  871.97 +END:STANDARD
  871.98 +BEGIN:DAYLIGHT
  871.99 +TZOFFSETFROM:-0400
 871.100 +TZOFFSETTO:-0300
 871.101 +TZNAME:CLST
 871.102 +DTSTART:19821010T000000
 871.103 +RDATE:19821010T000000
 871.104 +RDATE:19831009T000000
 871.105 +RDATE:19841014T000000
 871.106 +RDATE:19851013T000000
 871.107 +RDATE:19861012T000000
 871.108 +RDATE:19871011T000000
 871.109 +RDATE:19881002T000000
 871.110 +RDATE:19891015T000000
 871.111 +RDATE:19900916T000000
 871.112 +RDATE:19911013T000000
 871.113 +RDATE:19921011T000000
 871.114 +RDATE:19931010T000000
 871.115 +RDATE:19941009T000000
 871.116 +RDATE:19951015T000000
 871.117 +RDATE:19961013T000000
 871.118 +RDATE:19971012T000000
 871.119 +RDATE:19980927T000000
 871.120 +END:DAYLIGHT
 871.121 +END:VTIMEZONE
 871.122 +END:VCALENDAR
   872.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   872.2 +++ b/src/zoneinfo/Antarctica/Rothera.ics	Tue Feb 10 18:12:00 2015 +0100
   872.3 @@ -0,0 +1,16 @@
   872.4 +BEGIN:VCALENDAR
   872.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   872.6 +VERSION:2.0
   872.7 +BEGIN:VTIMEZONE
   872.8 +TZID:Antarctica/Rothera
   872.9 +TZURL:http://tzurl.org/zoneinfo/Antarctica/Rothera
  872.10 +X-LIC-LOCATION:Antarctica/Rothera
  872.11 +BEGIN:STANDARD
  872.12 +TZOFFSETFROM:+0000
  872.13 +TZOFFSETTO:-0300
  872.14 +TZNAME:ROTT
  872.15 +DTSTART:19761201T000000
  872.16 +RDATE:19761201T000000
  872.17 +END:STANDARD
  872.18 +END:VTIMEZONE
  872.19 +END:VCALENDAR
   873.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   873.2 +++ b/src/zoneinfo/Antarctica/South_Pole.ics	Tue Feb 10 18:12:00 2015 +0100
   873.3 @@ -0,0 +1,108 @@
   873.4 +BEGIN:VCALENDAR
   873.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   873.6 +VERSION:2.0
   873.7 +BEGIN:VTIMEZONE
   873.8 +TZID:Antarctica/South_Pole
   873.9 +TZURL:http://tzurl.org/zoneinfo/Antarctica/South_Pole
  873.10 +X-LIC-LOCATION:Antarctica/South_Pole
  873.11 +BEGIN:DAYLIGHT
  873.12 +TZOFFSETFROM:+1200
  873.13 +TZOFFSETTO:+1300
  873.14 +TZNAME:NZDT
  873.15 +DTSTART:20070930T020000
  873.16 +RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU
  873.17 +END:DAYLIGHT
  873.18 +BEGIN:STANDARD
  873.19 +TZOFFSETFROM:+1300
  873.20 +TZOFFSETTO:+1200
  873.21 +TZNAME:NZST
  873.22 +DTSTART:20080406T030000
  873.23 +RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU
  873.24 +END:STANDARD
  873.25 +BEGIN:STANDARD
  873.26 +TZOFFSETFROM:+0000
  873.27 +TZOFFSETTO:+1200
  873.28 +TZNAME:NZST
  873.29 +DTSTART:19560101T000000
  873.30 +RDATE:19560101T000000
  873.31 +END:STANDARD
  873.32 +BEGIN:DAYLIGHT
  873.33 +TZOFFSETFROM:+1200
  873.34 +TZOFFSETTO:+1300
  873.35 +TZNAME:NZDT
  873.36 +DTSTART:19741103T020000
  873.37 +RDATE:19741103T020000
  873.38 +RDATE:19751026T020000
  873.39 +RDATE:19761031T020000
  873.40 +RDATE:19771030T020000
  873.41 +RDATE:19781029T020000
  873.42 +RDATE:19791028T020000
  873.43 +RDATE:19801026T020000
  873.44 +RDATE:19811025T020000
  873.45 +RDATE:19821031T020000
  873.46 +RDATE:19831030T020000
  873.47 +RDATE:19841028T020000
  873.48 +RDATE:19851027T020000
  873.49 +RDATE:19861026T020000
  873.50 +RDATE:19871025T020000
  873.51 +RDATE:19881030T020000
  873.52 +RDATE:19891008T020000
  873.53 +RDATE:19901007T020000
  873.54 +RDATE:19911006T020000
  873.55 +RDATE:19921004T020000
  873.56 +RDATE:19931003T020000
  873.57 +RDATE:19941002T020000
  873.58 +RDATE:19951001T020000
  873.59 +RDATE:19961006T020000
  873.60 +RDATE:19971005T020000
  873.61 +RDATE:19981004T020000
  873.62 +RDATE:19991003T020000
  873.63 +RDATE:20001001T020000
  873.64 +RDATE:20011007T020000
  873.65 +RDATE:20021006T020000
  873.66 +RDATE:20031005T020000
  873.67 +RDATE:20041003T020000
  873.68 +RDATE:20051002T020000
  873.69 +RDATE:20061001T020000
  873.70 +END:DAYLIGHT
  873.71 +BEGIN:STANDARD
  873.72 +TZOFFSETFROM:+1300
  873.73 +TZOFFSETTO:+1200
  873.74 +TZNAME:NZST
  873.75 +DTSTART:19750223T030000
  873.76 +RDATE:19750223T030000
  873.77 +RDATE:19760307T030000
  873.78 +RDATE:19770306T030000
  873.79 +RDATE:19780305T030000
  873.80 +RDATE:19790304T030000
  873.81 +RDATE:19800302T030000
  873.82 +RDATE:19810301T030000
  873.83 +RDATE:19820307T030000
  873.84 +RDATE:19830306T030000
  873.85 +RDATE:19840304T030000
  873.86 +RDATE:19850303T030000
  873.87 +RDATE:19860302T030000
  873.88 +RDATE:19870301T030000
  873.89 +RDATE:19880306T030000
  873.90 +RDATE:19890305T030000
  873.91 +RDATE:19900318T030000
  873.92 +RDATE:19910317T030000
  873.93 +RDATE:19920315T030000
  873.94 +RDATE:19930321T030000
  873.95 +RDATE:19940320T030000
  873.96 +RDATE:19950319T030000
  873.97 +RDATE:19960317T030000
  873.98 +RDATE:19970316T030000
  873.99 +RDATE:19980315T030000
 873.100 +RDATE:19990321T030000
 873.101 +RDATE:20000319T030000
 873.102 +RDATE:20010318T030000
 873.103 +RDATE:20020317T030000
 873.104 +RDATE:20030316T030000
 873.105 +RDATE:20040321T030000
 873.106 +RDATE:20050320T030000
 873.107 +RDATE:20060319T030000
 873.108 +RDATE:20070318T030000
 873.109 +END:STANDARD
 873.110 +END:VTIMEZONE
 873.111 +END:VCALENDAR
   874.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   874.2 +++ b/src/zoneinfo/Antarctica/Syowa.ics	Tue Feb 10 18:12:00 2015 +0100
   874.3 @@ -0,0 +1,16 @@
   874.4 +BEGIN:VCALENDAR
   874.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   874.6 +VERSION:2.0
   874.7 +BEGIN:VTIMEZONE
   874.8 +TZID:Antarctica/Syowa
   874.9 +TZURL:http://tzurl.org/zoneinfo/Antarctica/Syowa
  874.10 +X-LIC-LOCATION:Antarctica/Syowa
  874.11 +BEGIN:STANDARD
  874.12 +TZOFFSETFROM:+0000
  874.13 +TZOFFSETTO:+0300
  874.14 +TZNAME:SYOT
  874.15 +DTSTART:19570129T000000
  874.16 +RDATE:19570129T000000
  874.17 +END:STANDARD
  874.18 +END:VTIMEZONE
  874.19 +END:VCALENDAR
   875.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   875.2 +++ b/src/zoneinfo/Antarctica/Vostok.ics	Tue Feb 10 18:12:00 2015 +0100
   875.3 @@ -0,0 +1,16 @@
   875.4 +BEGIN:VCALENDAR
   875.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   875.6 +VERSION:2.0
   875.7 +BEGIN:VTIMEZONE
   875.8 +TZID:Antarctica/Vostok
   875.9 +TZURL:http://tzurl.org/zoneinfo/Antarctica/Vostok
  875.10 +X-LIC-LOCATION:Antarctica/Vostok
  875.11 +BEGIN:STANDARD
  875.12 +TZOFFSETFROM:+0000
  875.13 +TZOFFSETTO:+0600
  875.14 +TZNAME:VOST
  875.15 +DTSTART:19571216T000000
  875.16 +RDATE:19571216T000000
  875.17 +END:STANDARD
  875.18 +END:VTIMEZONE
  875.19 +END:VCALENDAR
   876.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   876.2 +++ b/src/zoneinfo/Arctic/Longyearbyen.ics	Tue Feb 10 18:12:00 2015 +0100
   876.3 @@ -0,0 +1,90 @@
   876.4 +BEGIN:VCALENDAR
   876.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   876.6 +VERSION:2.0
   876.7 +BEGIN:VTIMEZONE
   876.8 +TZID:Arctic/Longyearbyen
   876.9 +TZURL:http://tzurl.org/zoneinfo/Arctic/Longyearbyen
  876.10 +X-LIC-LOCATION:Arctic/Longyearbyen
  876.11 +BEGIN:DAYLIGHT
  876.12 +TZOFFSETFROM:+0100
  876.13 +TZOFFSETTO:+0200
  876.14 +TZNAME:CEST
  876.15 +DTSTART:19810329T020000
  876.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  876.17 +END:DAYLIGHT
  876.18 +BEGIN:STANDARD
  876.19 +TZOFFSETFROM:+0200
  876.20 +TZOFFSETTO:+0100
  876.21 +TZNAME:CET
  876.22 +DTSTART:19961027T030000
  876.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  876.24 +END:STANDARD
  876.25 +BEGIN:STANDARD
  876.26 +TZOFFSETFROM:+0043
  876.27 +TZOFFSETTO:+0100
  876.28 +TZNAME:CET
  876.29 +DTSTART:18950101T000000
  876.30 +RDATE:18950101T000000
  876.31 +END:STANDARD
  876.32 +BEGIN:DAYLIGHT
  876.33 +TZOFFSETFROM:+0100
  876.34 +TZOFFSETTO:+0200
  876.35 +TZNAME:CEST
  876.36 +DTSTART:19160522T010000
  876.37 +RDATE:19160522T010000
  876.38 +RDATE:19400810T230000
  876.39 +RDATE:19430329T020000
  876.40 +RDATE:19440403T020000
  876.41 +RDATE:19450402T020000
  876.42 +RDATE:19590315T020000
  876.43 +RDATE:19600320T020000
  876.44 +RDATE:19610319T020000
  876.45 +RDATE:19620318T020000
  876.46 +RDATE:19630317T020000
  876.47 +RDATE:19640315T020000
  876.48 +RDATE:19650425T020000
  876.49 +RDATE:19800406T020000
  876.50 +END:DAYLIGHT
  876.51 +BEGIN:STANDARD
  876.52 +TZOFFSETFROM:+0200
  876.53 +TZOFFSETTO:+0100
  876.54 +TZNAME:CET
  876.55 +DTSTART:19160930T000000
  876.56 +RDATE:19160930T000000
  876.57 +RDATE:19421102T030000
  876.58 +RDATE:19431004T030000
  876.59 +RDATE:19441002T030000
  876.60 +RDATE:19451001T030000
  876.61 +RDATE:19590920T030000
  876.62 +RDATE:19600918T030000
  876.63 +RDATE:19610917T030000
  876.64 +RDATE:19620916T030000
  876.65 +RDATE:19630915T030000
  876.66 +RDATE:19640920T030000
  876.67 +RDATE:19650919T030000
  876.68 +RDATE:19800928T030000
  876.69 +RDATE:19810927T030000
  876.70 +RDATE:19820926T030000
  876.71 +RDATE:19830925T030000
  876.72 +RDATE:19840930T030000
  876.73 +RDATE:19850929T030000
  876.74 +RDATE:19860928T030000
  876.75 +RDATE:19870927T030000
  876.76 +RDATE:19880925T030000
  876.77 +RDATE:19890924T030000
  876.78 +RDATE:19900930T030000
  876.79 +RDATE:19910929T030000
  876.80 +RDATE:19920927T030000
  876.81 +RDATE:19930926T030000
  876.82 +RDATE:19940925T030000
  876.83 +RDATE:19950924T030000
  876.84 +END:STANDARD
  876.85 +BEGIN:STANDARD
  876.86 +TZOFFSETFROM:+0100
  876.87 +TZOFFSETTO:+0100
  876.88 +TZNAME:CET
  876.89 +DTSTART:19800101T000000
  876.90 +RDATE:19800101T000000
  876.91 +END:STANDARD
  876.92 +END:VTIMEZONE
  876.93 +END:VCALENDAR
   877.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   877.2 +++ b/src/zoneinfo/Asia/Aden.ics	Tue Feb 10 18:12:00 2015 +0100
   877.3 @@ -0,0 +1,16 @@
   877.4 +BEGIN:VCALENDAR
   877.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   877.6 +VERSION:2.0
   877.7 +BEGIN:VTIMEZONE
   877.8 +TZID:Asia/Aden
   877.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Aden
  877.10 +X-LIC-LOCATION:Asia/Aden
  877.11 +BEGIN:STANDARD
  877.12 +TZOFFSETFROM:+030048
  877.13 +TZOFFSETTO:+0300
  877.14 +TZNAME:AST
  877.15 +DTSTART:19500101T000000
  877.16 +RDATE:19500101T000000
  877.17 +END:STANDARD
  877.18 +END:VTIMEZONE
  877.19 +END:VCALENDAR
   878.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   878.2 +++ b/src/zoneinfo/Asia/Almaty.ics	Tue Feb 10 18:12:00 2015 +0100
   878.3 @@ -0,0 +1,90 @@
   878.4 +BEGIN:VCALENDAR
   878.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   878.6 +VERSION:2.0
   878.7 +BEGIN:VTIMEZONE
   878.8 +TZID:Asia/Almaty
   878.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Almaty
  878.10 +X-LIC-LOCATION:Asia/Almaty
  878.11 +BEGIN:STANDARD
  878.12 +TZOFFSETFROM:+050748
  878.13 +TZOFFSETTO:+0500
  878.14 +TZNAME:ALMT
  878.15 +DTSTART:19240502T000000
  878.16 +RDATE:19240502T000000
  878.17 +END:STANDARD
  878.18 +BEGIN:STANDARD
  878.19 +TZOFFSETFROM:+0500
  878.20 +TZOFFSETTO:+0600
  878.21 +TZNAME:ALMT
  878.22 +DTSTART:19300621T000000
  878.23 +RDATE:19300621T000000
  878.24 +END:STANDARD
  878.25 +BEGIN:DAYLIGHT
  878.26 +TZOFFSETFROM:+0600
  878.27 +TZOFFSETTO:+0700
  878.28 +TZNAME:ALMST
  878.29 +DTSTART:19810401T000000
  878.30 +RDATE:19810401T000000
  878.31 +RDATE:19820401T000000
  878.32 +RDATE:19830401T000000
  878.33 +RDATE:19840401T000000
  878.34 +RDATE:19850331T020000
  878.35 +RDATE:19860330T020000
  878.36 +RDATE:19870329T020000
  878.37 +RDATE:19880327T020000
  878.38 +RDATE:19890326T020000
  878.39 +RDATE:19900325T020000
  878.40 +RDATE:19920328T230000
  878.41 +RDATE:19930328T020000
  878.42 +RDATE:19940327T020000
  878.43 +RDATE:19950326T020000
  878.44 +RDATE:19960331T020000
  878.45 +RDATE:19970330T020000
  878.46 +RDATE:19980329T020000
  878.47 +RDATE:19990328T020000
  878.48 +RDATE:20000326T020000
  878.49 +RDATE:20010325T020000
  878.50 +RDATE:20020331T020000
  878.51 +RDATE:20030330T020000
  878.52 +RDATE:20040328T020000
  878.53 +END:DAYLIGHT
  878.54 +BEGIN:STANDARD
  878.55 +TZOFFSETFROM:+0700
  878.56 +TZOFFSETTO:+0600
  878.57 +TZNAME:ALMT
  878.58 +DTSTART:19811001T000000
  878.59 +RDATE:19811001T000000
  878.60 +RDATE:19821001T000000
  878.61 +RDATE:19831001T000000
  878.62 +RDATE:19840930T030000
  878.63 +RDATE:19850929T030000
  878.64 +RDATE:19860928T030000
  878.65 +RDATE:19870927T030000
  878.66 +RDATE:19880925T030000
  878.67 +RDATE:19890924T030000
  878.68 +RDATE:19900930T030000
  878.69 +RDATE:19920926T230000
  878.70 +RDATE:19930926T030000
  878.71 +RDATE:19940925T030000
  878.72 +RDATE:19950924T030000
  878.73 +RDATE:19961027T030000
  878.74 +RDATE:19971026T030000
  878.75 +RDATE:19981025T030000
  878.76 +RDATE:19991031T030000
  878.77 +RDATE:20001029T030000
  878.78 +RDATE:20011028T030000
  878.79 +RDATE:20021027T030000
  878.80 +RDATE:20031026T030000
  878.81 +RDATE:20041031T030000
  878.82 +END:STANDARD
  878.83 +BEGIN:STANDARD
  878.84 +TZOFFSETFROM:+0600
  878.85 +TZOFFSETTO:+0600
  878.86 +TZNAME:ALMT
  878.87 +DTSTART:19910101T000000
  878.88 +RDATE:19910101T000000
  878.89 +RDATE:19920101T000000
  878.90 +RDATE:20050315T000000
  878.91 +END:STANDARD
  878.92 +END:VTIMEZONE
  878.93 +END:VCALENDAR
   879.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   879.2 +++ b/src/zoneinfo/Asia/Amman.ics	Tue Feb 10 18:12:00 2015 +0100
   879.3 @@ -0,0 +1,92 @@
   879.4 +BEGIN:VCALENDAR
   879.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   879.6 +VERSION:2.0
   879.7 +BEGIN:VTIMEZONE
   879.8 +TZID:Asia/Amman
   879.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Amman
  879.10 +X-LIC-LOCATION:Asia/Amman
  879.11 +BEGIN:DAYLIGHT
  879.12 +TZOFFSETFROM:+0200
  879.13 +TZOFFSETTO:+0300
  879.14 +TZNAME:EEST
  879.15 +DTSTART:20020328T235959
  879.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1TH
  879.17 +END:DAYLIGHT
  879.18 +BEGIN:STANDARD
  879.19 +TZOFFSETFROM:+0300
  879.20 +TZOFFSETTO:+0200
  879.21 +TZNAME:EET
  879.22 +DTSTART:20061027T010000
  879.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1FR
  879.24 +END:STANDARD
  879.25 +BEGIN:STANDARD
  879.26 +TZOFFSETFROM:+022344
  879.27 +TZOFFSETTO:+0200
  879.28 +TZNAME:EET
  879.29 +DTSTART:19310101T000000
  879.30 +RDATE:19310101T000000
  879.31 +END:STANDARD
  879.32 +BEGIN:DAYLIGHT
  879.33 +TZOFFSETFROM:+0200
  879.34 +TZOFFSETTO:+0300
  879.35 +TZNAME:EEST
  879.36 +DTSTART:19730606T000000
  879.37 +RDATE:19730606T000000
  879.38 +RDATE:19740501T000000
  879.39 +RDATE:19750501T000000
  879.40 +RDATE:19760501T000000
  879.41 +RDATE:19770501T000000
  879.42 +RDATE:19780430T000000
  879.43 +RDATE:19850401T000000
  879.44 +RDATE:19860404T000000
  879.45 +RDATE:19870403T000000
  879.46 +RDATE:19880401T000000
  879.47 +RDATE:19890508T000000
  879.48 +RDATE:19900427T000000
  879.49 +RDATE:19910417T000000
  879.50 +RDATE:19920410T000000
  879.51 +RDATE:19930402T000000
  879.52 +RDATE:19940401T000000
  879.53 +RDATE:19950407T000000
  879.54 +RDATE:19960405T000000
  879.55 +RDATE:19970404T000000
  879.56 +RDATE:19980403T000000
  879.57 +RDATE:19990701T000000
  879.58 +RDATE:20000330T000000
  879.59 +RDATE:20010329T000000
  879.60 +END:DAYLIGHT
  879.61 +BEGIN:STANDARD
  879.62 +TZOFFSETFROM:+0300
  879.63 +TZOFFSETTO:+0200
  879.64 +TZNAME:EET
  879.65 +DTSTART:19731001T000000
  879.66 +RDATE:19731001T000000
  879.67 +RDATE:19741001T000000
  879.68 +RDATE:19751001T000000
  879.69 +RDATE:19761101T000000
  879.70 +RDATE:19771001T000000
  879.71 +RDATE:19780930T000000
  879.72 +RDATE:19851001T000000
  879.73 +RDATE:19861003T000000
  879.74 +RDATE:19871002T000000
  879.75 +RDATE:19881007T000000
  879.76 +RDATE:19891006T000000
  879.77 +RDATE:19901005T000000
  879.78 +RDATE:19910927T000000
  879.79 +RDATE:19921002T000000
  879.80 +RDATE:19931001T000000
  879.81 +RDATE:19940916T000000
  879.82 +RDATE:19950915T010000
  879.83 +RDATE:19960920T010000
  879.84 +RDATE:19970919T010000
  879.85 +RDATE:19980918T010000
  879.86 +RDATE:19990924T010000
  879.87 +RDATE:20000929T010000
  879.88 +RDATE:20010928T010000
  879.89 +RDATE:20020927T010000
  879.90 +RDATE:20031024T010000
  879.91 +RDATE:20041015T010000
  879.92 +RDATE:20050930T010000
  879.93 +END:STANDARD
  879.94 +END:VTIMEZONE
  879.95 +END:VCALENDAR
   880.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   880.2 +++ b/src/zoneinfo/Asia/Anadyr.ics	Tue Feb 10 18:12:00 2015 +0100
   880.3 @@ -0,0 +1,133 @@
   880.4 +BEGIN:VCALENDAR
   880.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   880.6 +VERSION:2.0
   880.7 +BEGIN:VTIMEZONE
   880.8 +TZID:Asia/Anadyr
   880.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Anadyr
  880.10 +X-LIC-LOCATION:Asia/Anadyr
  880.11 +BEGIN:STANDARD
  880.12 +TZOFFSETFROM:+114956
  880.13 +TZOFFSETTO:+1200
  880.14 +TZNAME:ANAT
  880.15 +DTSTART:19240502T000000
  880.16 +RDATE:19240502T000000
  880.17 +END:STANDARD
  880.18 +BEGIN:STANDARD
  880.19 +TZOFFSETFROM:+1200
  880.20 +TZOFFSETTO:+1300
  880.21 +TZNAME:ANAT
  880.22 +DTSTART:19300621T000000
  880.23 +RDATE:19300621T000000
  880.24 +END:STANDARD
  880.25 +BEGIN:DAYLIGHT
  880.26 +TZOFFSETFROM:+1300
  880.27 +TZOFFSETTO:+1400
  880.28 +TZNAME:ANAST
  880.29 +DTSTART:19810401T000000
  880.30 +RDATE:19810401T000000
  880.31 +END:DAYLIGHT
  880.32 +BEGIN:STANDARD
  880.33 +TZOFFSETFROM:+1400
  880.34 +TZOFFSETTO:+1300
  880.35 +TZNAME:ANAT
  880.36 +DTSTART:19811001T000000
  880.37 +RDATE:19811001T000000
  880.38 +END:STANDARD
  880.39 +BEGIN:DAYLIGHT
  880.40 +TZOFFSETFROM:+1300
  880.41 +TZOFFSETTO:+1300
  880.42 +TZNAME:ANAST
  880.43 +DTSTART:19820401T000000
  880.44 +RDATE:19820401T000000
  880.45 +END:DAYLIGHT
  880.46 +BEGIN:STANDARD
  880.47 +TZOFFSETFROM:+1300
  880.48 +TZOFFSETTO:+1200
  880.49 +TZNAME:ANAT
  880.50 +DTSTART:19821001T000000
  880.51 +RDATE:19821001T000000
  880.52 +RDATE:19831001T000000
  880.53 +RDATE:19840930T030000
  880.54 +RDATE:19850929T030000
  880.55 +RDATE:19860928T030000
  880.56 +RDATE:19870927T030000
  880.57 +RDATE:19880925T030000
  880.58 +RDATE:19890924T030000
  880.59 +RDATE:19900930T030000
  880.60 +RDATE:19920926T230000
  880.61 +RDATE:19930926T030000
  880.62 +RDATE:19940925T030000
  880.63 +RDATE:19950924T030000
  880.64 +RDATE:19961027T030000
  880.65 +RDATE:19971026T030000
  880.66 +RDATE:19981025T030000
  880.67 +RDATE:19991031T030000
  880.68 +RDATE:20001029T030000
  880.69 +RDATE:20011028T030000
  880.70 +RDATE:20021027T030000
  880.71 +RDATE:20031026T030000
  880.72 +RDATE:20041031T030000
  880.73 +RDATE:20051030T030000
  880.74 +RDATE:20061029T030000
  880.75 +RDATE:20071028T030000
  880.76 +RDATE:20081026T030000
  880.77 +RDATE:20091025T030000
  880.78 +END:STANDARD
  880.79 +BEGIN:DAYLIGHT
  880.80 +TZOFFSETFROM:+1200
  880.81 +TZOFFSETTO:+1300
  880.82 +TZNAME:ANAST
  880.83 +DTSTART:19830401T000000
  880.84 +RDATE:19830401T000000
  880.85 +RDATE:19840401T000000
  880.86 +RDATE:19850331T020000
  880.87 +RDATE:19860330T020000
  880.88 +RDATE:19870329T020000
  880.89 +RDATE:19880327T020000
  880.90 +RDATE:19890326T020000
  880.91 +RDATE:19900325T020000
  880.92 +RDATE:19920328T230000
  880.93 +RDATE:19930328T020000
  880.94 +RDATE:19940327T020000
  880.95 +RDATE:19950326T020000
  880.96 +RDATE:19960331T020000
  880.97 +RDATE:19970330T020000
  880.98 +RDATE:19980329T020000
  880.99 +RDATE:19990328T020000
 880.100 +RDATE:20000326T020000
 880.101 +RDATE:20010325T020000
 880.102 +RDATE:20020331T020000
 880.103 +RDATE:20030330T020000
 880.104 +RDATE:20040328T020000
 880.105 +RDATE:20050327T020000
 880.106 +RDATE:20060326T020000
 880.107 +RDATE:20070325T020000
 880.108 +RDATE:20080330T020000
 880.109 +RDATE:20090329T020000
 880.110 +END:DAYLIGHT
 880.111 +BEGIN:DAYLIGHT
 880.112 +TZOFFSETFROM:+1200
 880.113 +TZOFFSETTO:+1200
 880.114 +TZNAME:ANAST
 880.115 +DTSTART:19910331T020000
 880.116 +RDATE:19910331T020000
 880.117 +RDATE:20100328T020000
 880.118 +END:DAYLIGHT
 880.119 +BEGIN:STANDARD
 880.120 +TZOFFSETFROM:+1200
 880.121 +TZOFFSETTO:+1100
 880.122 +TZNAME:ANAT
 880.123 +DTSTART:19910929T030000
 880.124 +RDATE:19910929T030000
 880.125 +RDATE:20101031T030000
 880.126 +END:STANDARD
 880.127 +BEGIN:STANDARD
 880.128 +TZOFFSETFROM:+1100
 880.129 +TZOFFSETTO:+1200
 880.130 +TZNAME:ANAT
 880.131 +DTSTART:19920119T020000
 880.132 +RDATE:19920119T020000
 880.133 +RDATE:20110327T020000
 880.134 +END:STANDARD
 880.135 +END:VTIMEZONE
 880.136 +END:VCALENDAR
   881.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   881.2 +++ b/src/zoneinfo/Asia/Aqtau.ics	Tue Feb 10 18:12:00 2015 +0100
   881.3 @@ -0,0 +1,144 @@
   881.4 +BEGIN:VCALENDAR
   881.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   881.6 +VERSION:2.0
   881.7 +BEGIN:VTIMEZONE
   881.8 +TZID:Asia/Aqtau
   881.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Aqtau
  881.10 +X-LIC-LOCATION:Asia/Aqtau
  881.11 +BEGIN:STANDARD
  881.12 +TZOFFSETFROM:+032104
  881.13 +TZOFFSETTO:+0400
  881.14 +TZNAME:FORT
  881.15 +DTSTART:19240502T000000
  881.16 +RDATE:19240502T000000
  881.17 +END:STANDARD
  881.18 +BEGIN:STANDARD
  881.19 +TZOFFSETFROM:+0400
  881.20 +TZOFFSETTO:+0500
  881.21 +TZNAME:FORT
  881.22 +DTSTART:19300621T000000
  881.23 +RDATE:19300621T000000
  881.24 +END:STANDARD
  881.25 +BEGIN:STANDARD
  881.26 +TZOFFSETFROM:+0500
  881.27 +TZOFFSETTO:+0500
  881.28 +TZNAME:SHET
  881.29 +DTSTART:19630101T000000
  881.30 +RDATE:19630101T000000
  881.31 +RDATE:19910101T000000
  881.32 +END:STANDARD
  881.33 +BEGIN:STANDARD
  881.34 +TZOFFSETFROM:+0500
  881.35 +TZOFFSETTO:+0600
  881.36 +TZNAME:SHET
  881.37 +DTSTART:19811001T000000
  881.38 +RDATE:19811001T000000
  881.39 +END:STANDARD
  881.40 +BEGIN:DAYLIGHT
  881.41 +TZOFFSETFROM:+0600
  881.42 +TZOFFSETTO:+0600
  881.43 +TZNAME:SHEST
  881.44 +DTSTART:19820401T000000
  881.45 +RDATE:19820401T000000
  881.46 +END:DAYLIGHT
  881.47 +BEGIN:STANDARD
  881.48 +TZOFFSETFROM:+0600
  881.49 +TZOFFSETTO:+0500
  881.50 +TZNAME:SHET
  881.51 +DTSTART:19821001T000000
  881.52 +RDATE:19821001T000000
  881.53 +RDATE:19831001T000000
  881.54 +RDATE:19840930T030000
  881.55 +RDATE:19850929T030000
  881.56 +RDATE:19860928T030000
  881.57 +RDATE:19870927T030000
  881.58 +RDATE:19880925T030000
  881.59 +RDATE:19890924T030000
  881.60 +RDATE:19900930T030000
  881.61 +END:STANDARD
  881.62 +BEGIN:DAYLIGHT
  881.63 +TZOFFSETFROM:+0500
  881.64 +TZOFFSETTO:+0600
  881.65 +TZNAME:SHEST
  881.66 +DTSTART:19830401T000000
  881.67 +RDATE:19830401T000000
  881.68 +RDATE:19840401T000000
  881.69 +RDATE:19850331T020000
  881.70 +RDATE:19860330T020000
  881.71 +RDATE:19870329T020000
  881.72 +RDATE:19880327T020000
  881.73 +RDATE:19890326T020000
  881.74 +RDATE:19900325T020000
  881.75 +END:DAYLIGHT
  881.76 +BEGIN:STANDARD
  881.77 +TZOFFSETFROM:+0500
  881.78 +TZOFFSETTO:+0500
  881.79 +TZNAME:AQTT
  881.80 +DTSTART:19911216T000000
  881.81 +RDATE:19911216T000000
  881.82 +END:STANDARD
  881.83 +BEGIN:DAYLIGHT
  881.84 +TZOFFSETFROM:+0500
  881.85 +TZOFFSETTO:+0600
  881.86 +TZNAME:AQTST
  881.87 +DTSTART:19920328T230000
  881.88 +RDATE:19920328T230000
  881.89 +RDATE:19930328T020000
  881.90 +RDATE:19940327T020000
  881.91 +END:DAYLIGHT
  881.92 +BEGIN:STANDARD
  881.93 +TZOFFSETFROM:+0600
  881.94 +TZOFFSETTO:+0500
  881.95 +TZNAME:AQTT
  881.96 +DTSTART:19920926T230000
  881.97 +RDATE:19920926T230000
  881.98 +RDATE:19930926T030000
  881.99 +RDATE:19940925T030000
 881.100 +END:STANDARD
 881.101 +BEGIN:DAYLIGHT
 881.102 +TZOFFSETFROM:+0500
 881.103 +TZOFFSETTO:+0500
 881.104 +TZNAME:AQTST
 881.105 +DTSTART:19950326T020000
 881.106 +RDATE:19950326T020000
 881.107 +END:DAYLIGHT
 881.108 +BEGIN:STANDARD
 881.109 +TZOFFSETFROM:+0500
 881.110 +TZOFFSETTO:+0400
 881.111 +TZNAME:AQTT
 881.112 +DTSTART:19950924T030000
 881.113 +RDATE:19950924T030000
 881.114 +RDATE:19961027T030000
 881.115 +RDATE:19971026T030000
 881.116 +RDATE:19981025T030000
 881.117 +RDATE:19991031T030000
 881.118 +RDATE:20001029T030000
 881.119 +RDATE:20011028T030000
 881.120 +RDATE:20021027T030000
 881.121 +RDATE:20031026T030000
 881.122 +RDATE:20041031T030000
 881.123 +END:STANDARD
 881.124 +BEGIN:DAYLIGHT
 881.125 +TZOFFSETFROM:+0400
 881.126 +TZOFFSETTO:+0500
 881.127 +TZNAME:AQTST
 881.128 +DTSTART:19960331T020000
 881.129 +RDATE:19960331T020000
 881.130 +RDATE:19970330T020000
 881.131 +RDATE:19980329T020000
 881.132 +RDATE:19990328T020000
 881.133 +RDATE:20000326T020000
 881.134 +RDATE:20010325T020000
 881.135 +RDATE:20020331T020000
 881.136 +RDATE:20030330T020000
 881.137 +RDATE:20040328T020000
 881.138 +END:DAYLIGHT
 881.139 +BEGIN:STANDARD
 881.140 +TZOFFSETFROM:+0400
 881.141 +TZOFFSETTO:+0500
 881.142 +TZNAME:AQTT
 881.143 +DTSTART:20050315T000000
 881.144 +RDATE:20050315T000000
 881.145 +END:STANDARD
 881.146 +END:VTIMEZONE
 881.147 +END:VCALENDAR
   882.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   882.2 +++ b/src/zoneinfo/Asia/Aqtobe.ics	Tue Feb 10 18:12:00 2015 +0100
   882.3 @@ -0,0 +1,120 @@
   882.4 +BEGIN:VCALENDAR
   882.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   882.6 +VERSION:2.0
   882.7 +BEGIN:VTIMEZONE
   882.8 +TZID:Asia/Aqtobe
   882.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Aqtobe
  882.10 +X-LIC-LOCATION:Asia/Aqtobe
  882.11 +BEGIN:STANDARD
  882.12 +TZOFFSETFROM:+034840
  882.13 +TZOFFSETTO:+0400
  882.14 +TZNAME:AKTT
  882.15 +DTSTART:19240502T000000
  882.16 +RDATE:19240502T000000
  882.17 +END:STANDARD
  882.18 +BEGIN:STANDARD
  882.19 +TZOFFSETFROM:+0400
  882.20 +TZOFFSETTO:+0500
  882.21 +TZNAME:AKTT
  882.22 +DTSTART:19300621T000000
  882.23 +RDATE:19300621T000000
  882.24 +END:STANDARD
  882.25 +BEGIN:DAYLIGHT
  882.26 +TZOFFSETFROM:+0500
  882.27 +TZOFFSETTO:+0600
  882.28 +TZNAME:AKTST
  882.29 +DTSTART:19810401T000000
  882.30 +RDATE:19810401T000000
  882.31 +RDATE:19830401T000000
  882.32 +RDATE:19840401T000000
  882.33 +RDATE:19850331T020000
  882.34 +RDATE:19860330T020000
  882.35 +RDATE:19870329T020000
  882.36 +RDATE:19880327T020000
  882.37 +RDATE:19890326T020000
  882.38 +RDATE:19900325T020000
  882.39 +END:DAYLIGHT
  882.40 +BEGIN:STANDARD
  882.41 +TZOFFSETFROM:+0600
  882.42 +TZOFFSETTO:+0600
  882.43 +TZNAME:AKTT
  882.44 +DTSTART:19811001T000000
  882.45 +RDATE:19811001T000000
  882.46 +END:STANDARD
  882.47 +BEGIN:DAYLIGHT
  882.48 +TZOFFSETFROM:+0600
  882.49 +TZOFFSETTO:+0600
  882.50 +TZNAME:AKTST
  882.51 +DTSTART:19820401T000000
  882.52 +RDATE:19820401T000000
  882.53 +END:DAYLIGHT
  882.54 +BEGIN:STANDARD
  882.55 +TZOFFSETFROM:+0600
  882.56 +TZOFFSETTO:+0500
  882.57 +TZNAME:AKTT
  882.58 +DTSTART:19821001T000000
  882.59 +RDATE:19821001T000000
  882.60 +RDATE:19831001T000000
  882.61 +RDATE:19840930T030000
  882.62 +RDATE:19850929T030000
  882.63 +RDATE:19860928T030000
  882.64 +RDATE:19870927T030000
  882.65 +RDATE:19880925T030000
  882.66 +RDATE:19890924T030000
  882.67 +RDATE:19900930T030000
  882.68 +END:STANDARD
  882.69 +BEGIN:STANDARD
  882.70 +TZOFFSETFROM:+0500
  882.71 +TZOFFSETTO:+0500
  882.72 +TZNAME:AKTT
  882.73 +DTSTART:19910101T000000
  882.74 +RDATE:19910101T000000
  882.75 +END:STANDARD
  882.76 +BEGIN:STANDARD
  882.77 +TZOFFSETFROM:+0500
  882.78 +TZOFFSETTO:+0500
  882.79 +TZNAME:AQTT
  882.80 +DTSTART:19911216T000000
  882.81 +RDATE:19911216T000000
  882.82 +RDATE:20050315T000000
  882.83 +END:STANDARD
  882.84 +BEGIN:DAYLIGHT
  882.85 +TZOFFSETFROM:+0500
  882.86 +TZOFFSETTO:+0600
  882.87 +TZNAME:AQTST
  882.88 +DTSTART:19920328T230000
  882.89 +RDATE:19920328T230000
  882.90 +RDATE:19930328T020000
  882.91 +RDATE:19940327T020000
  882.92 +RDATE:19950326T020000
  882.93 +RDATE:19960331T020000
  882.94 +RDATE:19970330T020000
  882.95 +RDATE:19980329T020000
  882.96 +RDATE:19990328T020000
  882.97 +RDATE:20000326T020000
  882.98 +RDATE:20010325T020000
  882.99 +RDATE:20020331T020000
 882.100 +RDATE:20030330T020000
 882.101 +RDATE:20040328T020000
 882.102 +END:DAYLIGHT
 882.103 +BEGIN:STANDARD
 882.104 +TZOFFSETFROM:+0600
 882.105 +TZOFFSETTO:+0500
 882.106 +TZNAME:AQTT
 882.107 +DTSTART:19920926T230000
 882.108 +RDATE:19920926T230000
 882.109 +RDATE:19930926T030000
 882.110 +RDATE:19940925T030000
 882.111 +RDATE:19950924T030000
 882.112 +RDATE:19961027T030000
 882.113 +RDATE:19971026T030000
 882.114 +RDATE:19981025T030000
 882.115 +RDATE:19991031T030000
 882.116 +RDATE:20001029T030000
 882.117 +RDATE:20011028T030000
 882.118 +RDATE:20021027T030000
 882.119 +RDATE:20031026T030000
 882.120 +RDATE:20041031T030000
 882.121 +END:STANDARD
 882.122 +END:VTIMEZONE
 882.123 +END:VCALENDAR
   883.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   883.2 +++ b/src/zoneinfo/Asia/Ashgabat.ics	Tue Feb 10 18:12:00 2015 +0100
   883.3 @@ -0,0 +1,83 @@
   883.4 +BEGIN:VCALENDAR
   883.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   883.6 +VERSION:2.0
   883.7 +BEGIN:VTIMEZONE
   883.8 +TZID:Asia/Ashgabat
   883.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Ashgabat
  883.10 +X-LIC-LOCATION:Asia/Ashgabat
  883.11 +BEGIN:STANDARD
  883.12 +TZOFFSETFROM:+035332
  883.13 +TZOFFSETTO:+0400
  883.14 +TZNAME:ASHT
  883.15 +DTSTART:19240502T000000
  883.16 +RDATE:19240502T000000
  883.17 +END:STANDARD
  883.18 +BEGIN:STANDARD
  883.19 +TZOFFSETFROM:+0400
  883.20 +TZOFFSETTO:+0500
  883.21 +TZNAME:ASHT
  883.22 +DTSTART:19300621T000000
  883.23 +RDATE:19300621T000000
  883.24 +END:STANDARD
  883.25 +BEGIN:DAYLIGHT
  883.26 +TZOFFSETFROM:+0500
  883.27 +TZOFFSETTO:+0600
  883.28 +TZNAME:ASHST
  883.29 +DTSTART:19810401T000000
  883.30 +RDATE:19810401T000000
  883.31 +RDATE:19820401T000000
  883.32 +RDATE:19830401T000000
  883.33 +RDATE:19840401T000000
  883.34 +RDATE:19850331T020000
  883.35 +RDATE:19860330T020000
  883.36 +RDATE:19870329T020000
  883.37 +RDATE:19880327T020000
  883.38 +RDATE:19890326T020000
  883.39 +RDATE:19900325T020000
  883.40 +END:DAYLIGHT
  883.41 +BEGIN:STANDARD
  883.42 +TZOFFSETFROM:+0600
  883.43 +TZOFFSETTO:+0500
  883.44 +TZNAME:ASHT
  883.45 +DTSTART:19811001T000000
  883.46 +RDATE:19811001T000000
  883.47 +RDATE:19821001T000000
  883.48 +RDATE:19831001T000000
  883.49 +RDATE:19840930T030000
  883.50 +RDATE:19850929T030000
  883.51 +RDATE:19860928T030000
  883.52 +RDATE:19870927T030000
  883.53 +RDATE:19880925T030000
  883.54 +RDATE:19890924T030000
  883.55 +RDATE:19900930T030000
  883.56 +END:STANDARD
  883.57 +BEGIN:DAYLIGHT
  883.58 +TZOFFSETFROM:+0500
  883.59 +TZOFFSETTO:+0500
  883.60 +TZNAME:ASHST
  883.61 +DTSTART:19910331T020000
  883.62 +RDATE:19910331T020000
  883.63 +END:DAYLIGHT
  883.64 +BEGIN:STANDARD
  883.65 +TZOFFSETFROM:+0500
  883.66 +TZOFFSETTO:+0400
  883.67 +TZNAME:ASHT
  883.68 +DTSTART:19910929T030000
  883.69 +RDATE:19910929T030000
  883.70 +END:STANDARD
  883.71 +BEGIN:STANDARD
  883.72 +TZOFFSETFROM:+0400
  883.73 +TZOFFSETTO:+0400
  883.74 +TZNAME:TMT
  883.75 +DTSTART:19911027T000000
  883.76 +RDATE:19911027T000000
  883.77 +END:STANDARD
  883.78 +BEGIN:STANDARD
  883.79 +TZOFFSETFROM:+0400
  883.80 +TZOFFSETTO:+0500
  883.81 +TZNAME:TMT
  883.82 +DTSTART:19920119T020000
  883.83 +RDATE:19920119T020000
  883.84 +END:STANDARD
  883.85 +END:VTIMEZONE
  883.86 +END:VCALENDAR
   884.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   884.2 +++ b/src/zoneinfo/Asia/Baghdad.ics	Tue Feb 10 18:12:00 2015 +0100
   884.3 @@ -0,0 +1,87 @@
   884.4 +BEGIN:VCALENDAR
   884.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   884.6 +VERSION:2.0
   884.7 +BEGIN:VTIMEZONE
   884.8 +TZID:Asia/Baghdad
   884.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Baghdad
  884.10 +X-LIC-LOCATION:Asia/Baghdad
  884.11 +BEGIN:STANDARD
  884.12 +TZOFFSETFROM:+025740
  884.13 +TZOFFSETTO:+025736
  884.14 +TZNAME:BMT
  884.15 +DTSTART:18900101T000000
  884.16 +RDATE:18900101T000000
  884.17 +END:STANDARD
  884.18 +BEGIN:STANDARD
  884.19 +TZOFFSETFROM:+025736
  884.20 +TZOFFSETTO:+0300
  884.21 +TZNAME:AST
  884.22 +DTSTART:19180101T000000
  884.23 +RDATE:19180101T000000
  884.24 +END:STANDARD
  884.25 +BEGIN:DAYLIGHT
  884.26 +TZOFFSETFROM:+0300
  884.27 +TZOFFSETTO:+0400
  884.28 +TZNAME:ADT
  884.29 +DTSTART:19820501T000000
  884.30 +RDATE:19820501T000000
  884.31 +RDATE:19830331T000000
  884.32 +RDATE:19840401T000000
  884.33 +RDATE:19850401T000000
  884.34 +RDATE:19860330T010000
  884.35 +RDATE:19870329T010000
  884.36 +RDATE:19880327T010000
  884.37 +RDATE:19890326T010000
  884.38 +RDATE:19900325T010000
  884.39 +RDATE:19910401T030000
  884.40 +RDATE:19920401T030000
  884.41 +RDATE:19930401T030000
  884.42 +RDATE:19940401T030000
  884.43 +RDATE:19950401T030000
  884.44 +RDATE:19960401T030000
  884.45 +RDATE:19970401T030000
  884.46 +RDATE:19980401T030000
  884.47 +RDATE:19990401T030000
  884.48 +RDATE:20000401T030000
  884.49 +RDATE:20010401T030000
  884.50 +RDATE:20020401T030000
  884.51 +RDATE:20030401T030000
  884.52 +RDATE:20040401T030000
  884.53 +RDATE:20050401T030000
  884.54 +RDATE:20060401T030000
  884.55 +RDATE:20070401T030000
  884.56 +END:DAYLIGHT
  884.57 +BEGIN:STANDARD
  884.58 +TZOFFSETFROM:+0400
  884.59 +TZOFFSETTO:+0300
  884.60 +TZNAME:AST
  884.61 +DTSTART:19821001T000000
  884.62 +RDATE:19821001T000000
  884.63 +RDATE:19831001T000000
  884.64 +RDATE:19841001T000000
  884.65 +RDATE:19850929T020000
  884.66 +RDATE:19860928T020000
  884.67 +RDATE:19870927T020000
  884.68 +RDATE:19880925T020000
  884.69 +RDATE:19890924T020000
  884.70 +RDATE:19900930T020000
  884.71 +RDATE:19911001T040000
  884.72 +RDATE:19921001T040000
  884.73 +RDATE:19931001T040000
  884.74 +RDATE:19941001T040000
  884.75 +RDATE:19951001T040000
  884.76 +RDATE:19961001T040000
  884.77 +RDATE:19971001T040000
  884.78 +RDATE:19981001T040000
  884.79 +RDATE:19991001T040000
  884.80 +RDATE:20001001T040000
  884.81 +RDATE:20011001T040000
  884.82 +RDATE:20021001T040000
  884.83 +RDATE:20031001T040000
  884.84 +RDATE:20041001T040000
  884.85 +RDATE:20051001T040000
  884.86 +RDATE:20061001T040000
  884.87 +RDATE:20071001T040000
  884.88 +END:STANDARD
  884.89 +END:VTIMEZONE
  884.90 +END:VCALENDAR
   885.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   885.2 +++ b/src/zoneinfo/Asia/Bahrain.ics	Tue Feb 10 18:12:00 2015 +0100
   885.3 @@ -0,0 +1,23 @@
   885.4 +BEGIN:VCALENDAR
   885.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   885.6 +VERSION:2.0
   885.7 +BEGIN:VTIMEZONE
   885.8 +TZID:Asia/Bahrain
   885.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Bahrain
  885.10 +X-LIC-LOCATION:Asia/Bahrain
  885.11 +BEGIN:STANDARD
  885.12 +TZOFFSETFROM:+032220
  885.13 +TZOFFSETTO:+0400
  885.14 +TZNAME:GST
  885.15 +DTSTART:19200101T000000
  885.16 +RDATE:19200101T000000
  885.17 +END:STANDARD
  885.18 +BEGIN:STANDARD
  885.19 +TZOFFSETFROM:+0400
  885.20 +TZOFFSETTO:+0300
  885.21 +TZNAME:AST
  885.22 +DTSTART:19720601T000000
  885.23 +RDATE:19720601T000000
  885.24 +END:STANDARD
  885.25 +END:VTIMEZONE
  885.26 +END:VCALENDAR
   886.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   886.2 +++ b/src/zoneinfo/Asia/Baku.ics	Tue Feb 10 18:12:00 2015 +0100
   886.3 @@ -0,0 +1,120 @@
   886.4 +BEGIN:VCALENDAR
   886.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   886.6 +VERSION:2.0
   886.7 +BEGIN:VTIMEZONE
   886.8 +TZID:Asia/Baku
   886.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Baku
  886.10 +X-LIC-LOCATION:Asia/Baku
  886.11 +BEGIN:DAYLIGHT
  886.12 +TZOFFSETFROM:+0400
  886.13 +TZOFFSETTO:+0500
  886.14 +TZNAME:AZST
  886.15 +DTSTART:19970330T040000
  886.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  886.17 +END:DAYLIGHT
  886.18 +BEGIN:STANDARD
  886.19 +TZOFFSETFROM:+0500
  886.20 +TZOFFSETTO:+0400
  886.21 +TZNAME:AZT
  886.22 +DTSTART:19971026T050000
  886.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  886.24 +END:STANDARD
  886.25 +BEGIN:STANDARD
  886.26 +TZOFFSETFROM:+031924
  886.27 +TZOFFSETTO:+0300
  886.28 +TZNAME:BAKT
  886.29 +DTSTART:19240502T000000
  886.30 +RDATE:19240502T000000
  886.31 +END:STANDARD
  886.32 +BEGIN:STANDARD
  886.33 +TZOFFSETFROM:+0300
  886.34 +TZOFFSETTO:+0400
  886.35 +TZNAME:BAKT
  886.36 +DTSTART:19570301T000000
  886.37 +RDATE:19570301T000000
  886.38 +END:STANDARD
  886.39 +BEGIN:DAYLIGHT
  886.40 +TZOFFSETFROM:+0400
  886.41 +TZOFFSETTO:+0500
  886.42 +TZNAME:BAKST
  886.43 +DTSTART:19810401T000000
  886.44 +RDATE:19810401T000000
  886.45 +RDATE:19820401T000000
  886.46 +RDATE:19830401T000000
  886.47 +RDATE:19840401T000000
  886.48 +RDATE:19850331T020000
  886.49 +RDATE:19860330T020000
  886.50 +RDATE:19870329T020000
  886.51 +RDATE:19880327T020000
  886.52 +RDATE:19890326T020000
  886.53 +RDATE:19900325T020000
  886.54 +END:DAYLIGHT
  886.55 +BEGIN:STANDARD
  886.56 +TZOFFSETFROM:+0500
  886.57 +TZOFFSETTO:+0400
  886.58 +TZNAME:BAKT
  886.59 +DTSTART:19811001T000000
  886.60 +RDATE:19811001T000000
  886.61 +RDATE:19821001T000000
  886.62 +RDATE:19831001T000000
  886.63 +RDATE:19840930T030000
  886.64 +RDATE:19850929T030000
  886.65 +RDATE:19860928T030000
  886.66 +RDATE:19870927T030000
  886.67 +RDATE:19880925T030000
  886.68 +RDATE:19890924T030000
  886.69 +RDATE:19900930T030000
  886.70 +END:STANDARD
  886.71 +BEGIN:DAYLIGHT
  886.72 +TZOFFSETFROM:+0400
  886.73 +TZOFFSETTO:+0400
  886.74 +TZNAME:BAKST
  886.75 +DTSTART:19910331T020000
  886.76 +RDATE:19910331T020000
  886.77 +END:DAYLIGHT
  886.78 +BEGIN:DAYLIGHT
  886.79 +TZOFFSETFROM:+0400
  886.80 +TZOFFSETTO:+0400
  886.81 +TZNAME:AZST
  886.82 +DTSTART:19910830T000000
  886.83 +RDATE:19910830T000000
  886.84 +END:DAYLIGHT
  886.85 +BEGIN:STANDARD
  886.86 +TZOFFSETFROM:+0400
  886.87 +TZOFFSETTO:+0300
  886.88 +TZNAME:AZT
  886.89 +DTSTART:19910929T030000
  886.90 +RDATE:19910929T030000
  886.91 +END:STANDARD
  886.92 +BEGIN:DAYLIGHT
  886.93 +TZOFFSETFROM:+0300
  886.94 +TZOFFSETTO:+0400
  886.95 +TZNAME:AZST
  886.96 +DTSTART:19920328T230000
  886.97 +RDATE:19920328T230000
  886.98 +END:DAYLIGHT
  886.99 +BEGIN:STANDARD
 886.100 +TZOFFSETFROM:+0400
 886.101 +TZOFFSETTO:+0400
 886.102 +TZNAME:AZT
 886.103 +DTSTART:19920926T230000
 886.104 +RDATE:19920926T230000
 886.105 +RDATE:19960101T000000
 886.106 +RDATE:19970101T000000
 886.107 +END:STANDARD
 886.108 +BEGIN:DAYLIGHT
 886.109 +TZOFFSETFROM:+0400
 886.110 +TZOFFSETTO:+0500
 886.111 +TZNAME:AZST
 886.112 +DTSTART:19960331T050000
 886.113 +RDATE:19960331T050000
 886.114 +END:DAYLIGHT
 886.115 +BEGIN:STANDARD
 886.116 +TZOFFSETFROM:+0500
 886.117 +TZOFFSETTO:+0400
 886.118 +TZNAME:AZT
 886.119 +DTSTART:19961027T060000
 886.120 +RDATE:19961027T060000
 886.121 +END:STANDARD
 886.122 +END:VTIMEZONE
 886.123 +END:VCALENDAR
   887.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   887.2 +++ b/src/zoneinfo/Asia/Bangkok.ics	Tue Feb 10 18:12:00 2015 +0100
   887.3 @@ -0,0 +1,23 @@
   887.4 +BEGIN:VCALENDAR
   887.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   887.6 +VERSION:2.0
   887.7 +BEGIN:VTIMEZONE
   887.8 +TZID:Asia/Bangkok
   887.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Bangkok
  887.10 +X-LIC-LOCATION:Asia/Bangkok
  887.11 +BEGIN:STANDARD
  887.12 +TZOFFSETFROM:+064204
  887.13 +TZOFFSETTO:+064204
  887.14 +TZNAME:BMT
  887.15 +DTSTART:18800101T000000
  887.16 +RDATE:18800101T000000
  887.17 +END:STANDARD
  887.18 +BEGIN:STANDARD
  887.19 +TZOFFSETFROM:+064204
  887.20 +TZOFFSETTO:+0700
  887.21 +TZNAME:ICT
  887.22 +DTSTART:19200401T000000
  887.23 +RDATE:19200401T000000
  887.24 +END:STANDARD
  887.25 +END:VTIMEZONE
  887.26 +END:VCALENDAR
   888.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   888.2 +++ b/src/zoneinfo/Asia/Beirut.ics	Tue Feb 10 18:12:00 2015 +0100
   888.3 @@ -0,0 +1,98 @@
   888.4 +BEGIN:VCALENDAR
   888.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   888.6 +VERSION:2.0
   888.7 +BEGIN:VTIMEZONE
   888.8 +TZID:Asia/Beirut
   888.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Beirut
  888.10 +X-LIC-LOCATION:Asia/Beirut
  888.11 +BEGIN:DAYLIGHT
  888.12 +TZOFFSETFROM:+0200
  888.13 +TZOFFSETTO:+0300
  888.14 +TZNAME:EEST
  888.15 +DTSTART:19930328T000000
  888.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  888.17 +END:DAYLIGHT
  888.18 +BEGIN:STANDARD
  888.19 +TZOFFSETFROM:+0300
  888.20 +TZOFFSETTO:+0200
  888.21 +TZNAME:EET
  888.22 +DTSTART:19991031T000000
  888.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  888.24 +END:STANDARD
  888.25 +BEGIN:STANDARD
  888.26 +TZOFFSETFROM:+0222
  888.27 +TZOFFSETTO:+0200
  888.28 +TZNAME:EET
  888.29 +DTSTART:18800101T000000
  888.30 +RDATE:18800101T000000
  888.31 +END:STANDARD
  888.32 +BEGIN:DAYLIGHT
  888.33 +TZOFFSETFROM:+0200
  888.34 +TZOFFSETTO:+0300
  888.35 +TZNAME:EEST
  888.36 +DTSTART:19200328T000000
  888.37 +RDATE:19200328T000000
  888.38 +RDATE:19210403T000000
  888.39 +RDATE:19220326T000000
  888.40 +RDATE:19230422T000000
  888.41 +RDATE:19570501T000000
  888.42 +RDATE:19580501T000000
  888.43 +RDATE:19590501T000000
  888.44 +RDATE:19600501T000000
  888.45 +RDATE:19610501T000000
  888.46 +RDATE:19720622T000000
  888.47 +RDATE:19730501T000000
  888.48 +RDATE:19740501T000000
  888.49 +RDATE:19750501T000000
  888.50 +RDATE:19760501T000000
  888.51 +RDATE:19770501T000000
  888.52 +RDATE:19780430T000000
  888.53 +RDATE:19840501T000000
  888.54 +RDATE:19850501T000000
  888.55 +RDATE:19860501T000000
  888.56 +RDATE:19870501T000000
  888.57 +RDATE:19880601T000000
  888.58 +RDATE:19890510T000000
  888.59 +RDATE:19900501T000000
  888.60 +RDATE:19910501T000000
  888.61 +RDATE:19920501T000000
  888.62 +END:DAYLIGHT
  888.63 +BEGIN:STANDARD
  888.64 +TZOFFSETFROM:+0300
  888.65 +TZOFFSETTO:+0200
  888.66 +TZNAME:EET
  888.67 +DTSTART:19201025T000000
  888.68 +RDATE:19201025T000000
  888.69 +RDATE:19211003T000000
  888.70 +RDATE:19221008T000000
  888.71 +RDATE:19230916T000000
  888.72 +RDATE:19571001T000000
  888.73 +RDATE:19581001T000000
  888.74 +RDATE:19591001T000000
  888.75 +RDATE:19601001T000000
  888.76 +RDATE:19611001T000000
  888.77 +RDATE:19721001T000000
  888.78 +RDATE:19731001T000000
  888.79 +RDATE:19741001T000000
  888.80 +RDATE:19751001T000000
  888.81 +RDATE:19761001T000000
  888.82 +RDATE:19771001T000000
  888.83 +RDATE:19780930T000000
  888.84 +RDATE:19841016T000000
  888.85 +RDATE:19851016T000000
  888.86 +RDATE:19861016T000000
  888.87 +RDATE:19871016T000000
  888.88 +RDATE:19881016T000000
  888.89 +RDATE:19891016T000000
  888.90 +RDATE:19901016T000000
  888.91 +RDATE:19911016T000000
  888.92 +RDATE:19921004T000000
  888.93 +RDATE:19930926T000000
  888.94 +RDATE:19940925T000000
  888.95 +RDATE:19950924T000000
  888.96 +RDATE:19960929T000000
  888.97 +RDATE:19970928T000000
  888.98 +RDATE:19980927T000000
  888.99 +END:STANDARD
 888.100 +END:VTIMEZONE
 888.101 +END:VCALENDAR
   889.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   889.2 +++ b/src/zoneinfo/Asia/Bishkek.ics	Tue Feb 10 18:12:00 2015 +0100
   889.3 @@ -0,0 +1,109 @@
   889.4 +BEGIN:VCALENDAR
   889.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   889.6 +VERSION:2.0
   889.7 +BEGIN:VTIMEZONE
   889.8 +TZID:Asia/Bishkek
   889.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Bishkek
  889.10 +X-LIC-LOCATION:Asia/Bishkek
  889.11 +BEGIN:STANDARD
  889.12 +TZOFFSETFROM:+045824
  889.13 +TZOFFSETTO:+0500
  889.14 +TZNAME:FRUT
  889.15 +DTSTART:19240502T000000
  889.16 +RDATE:19240502T000000
  889.17 +END:STANDARD
  889.18 +BEGIN:STANDARD
  889.19 +TZOFFSETFROM:+0500
  889.20 +TZOFFSETTO:+0600
  889.21 +TZNAME:FRUT
  889.22 +DTSTART:19300621T000000
  889.23 +RDATE:19300621T000000
  889.24 +END:STANDARD
  889.25 +BEGIN:DAYLIGHT
  889.26 +TZOFFSETFROM:+0600
  889.27 +TZOFFSETTO:+0700
  889.28 +TZNAME:FRUST
  889.29 +DTSTART:19810401T000000
  889.30 +RDATE:19810401T000000
  889.31 +RDATE:19820401T000000
  889.32 +RDATE:19830401T000000
  889.33 +RDATE:19840401T000000
  889.34 +RDATE:19850331T020000
  889.35 +RDATE:19860330T020000
  889.36 +RDATE:19870329T020000
  889.37 +RDATE:19880327T020000
  889.38 +RDATE:19890326T020000
  889.39 +RDATE:19900325T020000
  889.40 +END:DAYLIGHT
  889.41 +BEGIN:STANDARD
  889.42 +TZOFFSETFROM:+0700
  889.43 +TZOFFSETTO:+0600
  889.44 +TZNAME:FRUT
  889.45 +DTSTART:19811001T000000
  889.46 +RDATE:19811001T000000
  889.47 +RDATE:19821001T000000
  889.48 +RDATE:19831001T000000
  889.49 +RDATE:19840930T030000
  889.50 +RDATE:19850929T030000
  889.51 +RDATE:19860928T030000
  889.52 +RDATE:19870927T030000
  889.53 +RDATE:19880925T030000
  889.54 +RDATE:19890924T030000
  889.55 +RDATE:19900930T030000
  889.56 +END:STANDARD
  889.57 +BEGIN:DAYLIGHT
  889.58 +TZOFFSETFROM:+0600
  889.59 +TZOFFSETTO:+0600
  889.60 +TZNAME:FRUST
  889.61 +DTSTART:19910331T020000
  889.62 +RDATE:19910331T020000
  889.63 +END:DAYLIGHT
  889.64 +BEGIN:STANDARD
  889.65 +TZOFFSETFROM:+0600
  889.66 +TZOFFSETTO:+0500
  889.67 +TZNAME:KGT
  889.68 +DTSTART:19910831T020000
  889.69 +RDATE:19910831T020000
  889.70 +RDATE:19920927T000000
  889.71 +RDATE:19930926T000000
  889.72 +RDATE:19940925T000000
  889.73 +RDATE:19950924T000000
  889.74 +RDATE:19960929T000000
  889.75 +RDATE:19971026T023000
  889.76 +RDATE:19981025T023000
  889.77 +RDATE:19991031T023000
  889.78 +RDATE:20001029T023000
  889.79 +RDATE:20011028T023000
  889.80 +RDATE:20021027T023000
  889.81 +RDATE:20031026T023000
  889.82 +RDATE:20041031T023000
  889.83 +END:STANDARD
  889.84 +BEGIN:DAYLIGHT
  889.85 +TZOFFSETFROM:+0500
  889.86 +TZOFFSETTO:+0600
  889.87 +TZNAME:KGST
  889.88 +DTSTART:19920412T000000
  889.89 +RDATE:19920412T000000
  889.90 +RDATE:19930411T000000
  889.91 +RDATE:19940410T000000
  889.92 +RDATE:19950409T000000
  889.93 +RDATE:19960407T000000
  889.94 +RDATE:19970330T023000
  889.95 +RDATE:19980329T023000
  889.96 +RDATE:19990328T023000
  889.97 +RDATE:20000326T023000
  889.98 +RDATE:20010325T023000
  889.99 +RDATE:20020331T023000
 889.100 +RDATE:20030330T023000
 889.101 +RDATE:20040328T023000
 889.102 +RDATE:20050327T023000
 889.103 +END:DAYLIGHT
 889.104 +BEGIN:STANDARD
 889.105 +TZOFFSETFROM:+0600
 889.106 +TZOFFSETTO:+0600
 889.107 +TZNAME:KGT
 889.108 +DTSTART:20050812T000000
 889.109 +RDATE:20050812T000000
 889.110 +END:STANDARD
 889.111 +END:VTIMEZONE
 889.112 +END:VCALENDAR
   890.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   890.2 +++ b/src/zoneinfo/Asia/Brunei.ics	Tue Feb 10 18:12:00 2015 +0100
   890.3 @@ -0,0 +1,23 @@
   890.4 +BEGIN:VCALENDAR
   890.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   890.6 +VERSION:2.0
   890.7 +BEGIN:VTIMEZONE
   890.8 +TZID:Asia/Brunei
   890.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Brunei
  890.10 +X-LIC-LOCATION:Asia/Brunei
  890.11 +BEGIN:STANDARD
  890.12 +TZOFFSETFROM:+073940
  890.13 +TZOFFSETTO:+0730
  890.14 +TZNAME:BNT
  890.15 +DTSTART:19260301T000000
  890.16 +RDATE:19260301T000000
  890.17 +END:STANDARD
  890.18 +BEGIN:STANDARD
  890.19 +TZOFFSETFROM:+0730
  890.20 +TZOFFSETTO:+0800
  890.21 +TZNAME:BNT
  890.22 +DTSTART:19330101T000000
  890.23 +RDATE:19330101T000000
  890.24 +END:STANDARD
  890.25 +END:VTIMEZONE
  890.26 +END:VCALENDAR
   891.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   891.2 +++ b/src/zoneinfo/Asia/Choibalsan.ics	Tue Feb 10 18:12:00 2015 +0100
   891.3 @@ -0,0 +1,91 @@
   891.4 +BEGIN:VCALENDAR
   891.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   891.6 +VERSION:2.0
   891.7 +BEGIN:VTIMEZONE
   891.8 +TZID:Asia/Choibalsan
   891.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Choibalsan
  891.10 +X-LIC-LOCATION:Asia/Choibalsan
  891.11 +BEGIN:STANDARD
  891.12 +TZOFFSETFROM:+0738
  891.13 +TZOFFSETTO:+0700
  891.14 +TZNAME:ULAT
  891.15 +DTSTART:19050801T000000
  891.16 +RDATE:19050801T000000
  891.17 +END:STANDARD
  891.18 +BEGIN:STANDARD
  891.19 +TZOFFSETFROM:+0700
  891.20 +TZOFFSETTO:+0800
  891.21 +TZNAME:ULAT
  891.22 +DTSTART:19780101T000000
  891.23 +RDATE:19780101T000000
  891.24 +END:STANDARD
  891.25 +BEGIN:DAYLIGHT
  891.26 +TZOFFSETFROM:+0800
  891.27 +TZOFFSETTO:+1000
  891.28 +TZNAME:CHOST
  891.29 +DTSTART:19830401T000000
  891.30 +RDATE:19830401T000000
  891.31 +END:DAYLIGHT
  891.32 +BEGIN:STANDARD
  891.33 +TZOFFSETFROM:+1000
  891.34 +TZOFFSETTO:+0900
  891.35 +TZNAME:CHOT
  891.36 +DTSTART:19831001T000000
  891.37 +RDATE:19831001T000000
  891.38 +RDATE:19840930T000000
  891.39 +RDATE:19850929T000000
  891.40 +RDATE:19860928T000000
  891.41 +RDATE:19870927T000000
  891.42 +RDATE:19880925T000000
  891.43 +RDATE:19890924T000000
  891.44 +RDATE:19900930T000000
  891.45 +RDATE:19910929T000000
  891.46 +RDATE:19920927T000000
  891.47 +RDATE:19930926T000000
  891.48 +RDATE:19940925T000000
  891.49 +RDATE:19950924T000000
  891.50 +RDATE:19960929T000000
  891.51 +RDATE:19970928T000000
  891.52 +RDATE:19980927T000000
  891.53 +RDATE:20010929T020000
  891.54 +RDATE:20020928T020000
  891.55 +RDATE:20030927T020000
  891.56 +RDATE:20040925T020000
  891.57 +RDATE:20050924T020000
  891.58 +RDATE:20060930T020000
  891.59 +END:STANDARD
  891.60 +BEGIN:DAYLIGHT
  891.61 +TZOFFSETFROM:+0900
  891.62 +TZOFFSETTO:+1000
  891.63 +TZNAME:CHOST
  891.64 +DTSTART:19840401T000000
  891.65 +RDATE:19840401T000000
  891.66 +RDATE:19850331T000000
  891.67 +RDATE:19860330T000000
  891.68 +RDATE:19870329T000000
  891.69 +RDATE:19880327T000000
  891.70 +RDATE:19890326T000000
  891.71 +RDATE:19900325T000000
  891.72 +RDATE:19910331T000000
  891.73 +RDATE:19920329T000000
  891.74 +RDATE:19930328T000000
  891.75 +RDATE:19940327T000000
  891.76 +RDATE:19950326T000000
  891.77 +RDATE:19960331T000000
  891.78 +RDATE:19970330T000000
  891.79 +RDATE:19980329T000000
  891.80 +RDATE:20010428T020000
  891.81 +RDATE:20020330T020000
  891.82 +RDATE:20030329T020000
  891.83 +RDATE:20040327T020000
  891.84 +RDATE:20050326T020000
  891.85 +RDATE:20060325T020000
  891.86 +END:DAYLIGHT
  891.87 +BEGIN:STANDARD
  891.88 +TZOFFSETFROM:+0900
  891.89 +TZOFFSETTO:+0800
  891.90 +DTSTART:20080331T000000
  891.91 +RDATE:20080331T000000
  891.92 +END:STANDARD
  891.93 +END:VTIMEZONE
  891.94 +END:VCALENDAR
   892.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   892.2 +++ b/src/zoneinfo/Asia/Chongqing.ics	Tue Feb 10 18:12:00 2015 +0100
   892.3 @@ -0,0 +1,47 @@
   892.4 +BEGIN:VCALENDAR
   892.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   892.6 +VERSION:2.0
   892.7 +BEGIN:VTIMEZONE
   892.8 +TZID:Asia/Chongqing
   892.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Chongqing
  892.10 +X-LIC-LOCATION:Asia/Chongqing
  892.11 +BEGIN:STANDARD
  892.12 +TZOFFSETFROM:+070620
  892.13 +TZOFFSETTO:+0700
  892.14 +TZNAME:LONT
  892.15 +DTSTART:19280101T000000
  892.16 +RDATE:19280101T000000
  892.17 +END:STANDARD
  892.18 +BEGIN:STANDARD
  892.19 +TZOFFSETFROM:+0700
  892.20 +TZOFFSETTO:+0800
  892.21 +TZNAME:CST
  892.22 +DTSTART:19800501T000000
  892.23 +RDATE:19800501T000000
  892.24 +END:STANDARD
  892.25 +BEGIN:DAYLIGHT
  892.26 +TZOFFSETFROM:+0800
  892.27 +TZOFFSETTO:+0900
  892.28 +TZNAME:CDT
  892.29 +DTSTART:19860504T000000
  892.30 +RDATE:19860504T000000
  892.31 +RDATE:19870412T000000
  892.32 +RDATE:19880410T000000
  892.33 +RDATE:19890416T000000
  892.34 +RDATE:19900415T000000
  892.35 +RDATE:19910414T000000
  892.36 +END:DAYLIGHT
  892.37 +BEGIN:STANDARD
  892.38 +TZOFFSETFROM:+0900
  892.39 +TZOFFSETTO:+0800
  892.40 +TZNAME:CST
  892.41 +DTSTART:19860914T000000
  892.42 +RDATE:19860914T000000
  892.43 +RDATE:19870913T000000
  892.44 +RDATE:19880911T000000
  892.45 +RDATE:19890917T000000
  892.46 +RDATE:19900916T000000
  892.47 +RDATE:19910915T000000
  892.48 +END:STANDARD
  892.49 +END:VTIMEZONE
  892.50 +END:VCALENDAR
   893.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   893.2 +++ b/src/zoneinfo/Asia/Colombo.ics	Tue Feb 10 18:12:00 2015 +0100
   893.3 @@ -0,0 +1,65 @@
   893.4 +BEGIN:VCALENDAR
   893.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   893.6 +VERSION:2.0
   893.7 +BEGIN:VTIMEZONE
   893.8 +TZID:Asia/Colombo
   893.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Colombo
  893.10 +X-LIC-LOCATION:Asia/Colombo
  893.11 +BEGIN:STANDARD
  893.12 +TZOFFSETFROM:+051924
  893.13 +TZOFFSETTO:+051932
  893.14 +TZNAME:MMT
  893.15 +DTSTART:18800101T000000
  893.16 +RDATE:18800101T000000
  893.17 +END:STANDARD
  893.18 +BEGIN:STANDARD
  893.19 +TZOFFSETFROM:+051932
  893.20 +TZOFFSETTO:+0530
  893.21 +TZNAME:IST
  893.22 +DTSTART:19060101T000000
  893.23 +RDATE:19060101T000000
  893.24 +END:STANDARD
  893.25 +BEGIN:DAYLIGHT
  893.26 +TZOFFSETFROM:+0530
  893.27 +TZOFFSETTO:+0600
  893.28 +TZNAME:IHST
  893.29 +DTSTART:19420105T000000
  893.30 +RDATE:19420105T000000
  893.31 +END:DAYLIGHT
  893.32 +BEGIN:DAYLIGHT
  893.33 +TZOFFSETFROM:+0600
  893.34 +TZOFFSETTO:+0630
  893.35 +TZNAME:IST
  893.36 +DTSTART:19420901T000000
  893.37 +RDATE:19420901T000000
  893.38 +END:DAYLIGHT
  893.39 +BEGIN:STANDARD
  893.40 +TZOFFSETFROM:+0630
  893.41 +TZOFFSETTO:+0530
  893.42 +TZNAME:IST
  893.43 +DTSTART:19451016T020000
  893.44 +RDATE:19451016T020000
  893.45 +END:STANDARD
  893.46 +BEGIN:STANDARD
  893.47 +TZOFFSETFROM:+0530
  893.48 +TZOFFSETTO:+0630
  893.49 +TZNAME:LKT
  893.50 +DTSTART:19960525T000000
  893.51 +RDATE:19960525T000000
  893.52 +END:STANDARD
  893.53 +BEGIN:STANDARD
  893.54 +TZOFFSETFROM:+0630
  893.55 +TZOFFSETTO:+0600
  893.56 +TZNAME:LKT
  893.57 +DTSTART:19961026T003000
  893.58 +RDATE:19961026T003000
  893.59 +END:STANDARD
  893.60 +BEGIN:STANDARD
  893.61 +TZOFFSETFROM:+0600
  893.62 +TZOFFSETTO:+0530
  893.63 +TZNAME:IST
  893.64 +DTSTART:20060415T003000
  893.65 +RDATE:20060415T003000
  893.66 +END:STANDARD
  893.67 +END:VTIMEZONE
  893.68 +END:VCALENDAR
   894.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   894.2 +++ b/src/zoneinfo/Asia/Damascus.ics	Tue Feb 10 18:12:00 2015 +0100
   894.3 @@ -0,0 +1,135 @@
   894.4 +BEGIN:VCALENDAR
   894.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   894.6 +VERSION:2.0
   894.7 +BEGIN:VTIMEZONE
   894.8 +TZID:Asia/Damascus
   894.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Damascus
  894.10 +X-LIC-LOCATION:Asia/Damascus
  894.11 +BEGIN:STANDARD
  894.12 +TZOFFSETFROM:+0300
  894.13 +TZOFFSETTO:+0200
  894.14 +TZNAME:EET
  894.15 +DTSTART:20091030T000000
  894.16 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1FR
  894.17 +END:STANDARD
  894.18 +BEGIN:DAYLIGHT
  894.19 +TZOFFSETFROM:+0200
  894.20 +TZOFFSETTO:+0300
  894.21 +TZNAME:EEST
  894.22 +DTSTART:20100402T000000
  894.23 +RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1FR
  894.24 +END:DAYLIGHT
  894.25 +BEGIN:STANDARD
  894.26 +TZOFFSETFROM:+022512
  894.27 +TZOFFSETTO:+0200
  894.28 +TZNAME:EET
  894.29 +DTSTART:19200101T000000
  894.30 +RDATE:19200101T000000
  894.31 +END:STANDARD
  894.32 +BEGIN:DAYLIGHT
  894.33 +TZOFFSETFROM:+0200
  894.34 +TZOFFSETTO:+0300
  894.35 +TZNAME:EEST
  894.36 +DTSTART:19200418T020000
  894.37 +RDATE:19200418T020000
  894.38 +RDATE:19210417T020000
  894.39 +RDATE:19220416T020000
  894.40 +RDATE:19230415T020000
  894.41 +RDATE:19620429T020000
  894.42 +RDATE:19630501T020000
  894.43 +RDATE:19640501T020000
  894.44 +RDATE:19650501T020000
  894.45 +RDATE:19660424T020000
  894.46 +RDATE:19670501T020000
  894.47 +RDATE:19680501T020000
  894.48 +RDATE:19690501T020000
  894.49 +RDATE:19700501T020000
  894.50 +RDATE:19710501T020000
  894.51 +RDATE:19720501T020000
  894.52 +RDATE:19730501T020000
  894.53 +RDATE:19740501T020000
  894.54 +RDATE:19750501T020000
  894.55 +RDATE:19760501T020000
  894.56 +RDATE:19770501T020000
  894.57 +RDATE:19780501T020000
  894.58 +RDATE:19830409T020000
  894.59 +RDATE:19840409T020000
  894.60 +RDATE:19860216T020000
  894.61 +RDATE:19870301T020000
  894.62 +RDATE:19880315T020000
  894.63 +RDATE:19890331T020000
  894.64 +RDATE:19900401T020000
  894.65 +RDATE:19910401T000000
  894.66 +RDATE:19920408T000000
  894.67 +RDATE:19930326T000000
  894.68 +RDATE:19940401T000000
  894.69 +RDATE:19950401T000000
  894.70 +RDATE:19960401T000000
  894.71 +RDATE:19970331T000000
  894.72 +RDATE:19980330T000000
  894.73 +RDATE:19990401T000000
  894.74 +RDATE:20000401T000000
  894.75 +RDATE:20010401T000000
  894.76 +RDATE:20020401T000000
  894.77 +RDATE:20030401T000000
  894.78 +RDATE:20040401T000000
  894.79 +RDATE:20050401T000000
  894.80 +RDATE:20060401T000000
  894.81 +RDATE:20070330T000000
  894.82 +RDATE:20080404T000000
  894.83 +RDATE:20090327T000000
  894.84 +END:DAYLIGHT
  894.85 +BEGIN:STANDARD
  894.86 +TZOFFSETFROM:+0300
  894.87 +TZOFFSETTO:+0200
  894.88 +TZNAME:EET
  894.89 +DTSTART:19201003T020000
  894.90 +RDATE:19201003T020000
  894.91 +RDATE:19211002T020000
  894.92 +RDATE:19221001T020000
  894.93 +RDATE:19231007T020000
  894.94 +RDATE:19621001T020000
  894.95 +RDATE:19630930T020000
  894.96 +RDATE:19641001T020000
  894.97 +RDATE:19650930T020000
  894.98 +RDATE:19661001T020000
  894.99 +RDATE:19671001T020000
 894.100 +RDATE:19681001T020000
 894.101 +RDATE:19691001T020000
 894.102 +RDATE:19701001T020000
 894.103 +RDATE:19711001T020000
 894.104 +RDATE:19721001T020000
 894.105 +RDATE:19731001T020000
 894.106 +RDATE:19741001T020000
 894.107 +RDATE:19751001T020000
 894.108 +RDATE:19761001T020000
 894.109 +RDATE:19770901T020000
 894.110 +RDATE:19780901T020000
 894.111 +RDATE:19831001T020000
 894.112 +RDATE:19841001T020000
 894.113 +RDATE:19861009T020000
 894.114 +RDATE:19871031T020000
 894.115 +RDATE:19881031T020000
 894.116 +RDATE:19891001T020000
 894.117 +RDATE:19900930T020000
 894.118 +RDATE:19911001T000000
 894.119 +RDATE:19921001T000000
 894.120 +RDATE:19930925T000000
 894.121 +RDATE:19941001T000000
 894.122 +RDATE:19951001T000000
 894.123 +RDATE:19961001T000000
 894.124 +RDATE:19971001T000000
 894.125 +RDATE:19981001T000000
 894.126 +RDATE:19991001T000000
 894.127 +RDATE:20001001T000000
 894.128 +RDATE:20011001T000000
 894.129 +RDATE:20021001T000000
 894.130 +RDATE:20031001T000000
 894.131 +RDATE:20041001T000000
 894.132 +RDATE:20051001T000000
 894.133 +RDATE:20060922T000000
 894.134 +RDATE:20071102T000000
 894.135 +RDATE:20081101T000000
 894.136 +END:STANDARD
 894.137 +END:VTIMEZONE
 894.138 +END:VCALENDAR
   895.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   895.2 +++ b/src/zoneinfo/Asia/Dhaka.ics	Tue Feb 10 18:12:00 2015 +0100
   895.3 @@ -0,0 +1,66 @@
   895.4 +BEGIN:VCALENDAR
   895.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   895.6 +VERSION:2.0
   895.7 +BEGIN:VTIMEZONE
   895.8 +TZID:Asia/Dhaka
   895.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Dhaka
  895.10 +X-LIC-LOCATION:Asia/Dhaka
  895.11 +BEGIN:STANDARD
  895.12 +TZOFFSETFROM:+060140
  895.13 +TZOFFSETTO:+055320
  895.14 +TZNAME:HMT
  895.15 +DTSTART:18900101T000000
  895.16 +RDATE:18900101T000000
  895.17 +END:STANDARD
  895.18 +BEGIN:STANDARD
  895.19 +TZOFFSETFROM:+055320
  895.20 +TZOFFSETTO:+0630
  895.21 +TZNAME:BURT
  895.22 +DTSTART:19411001T000000
  895.23 +RDATE:19411001T000000
  895.24 +END:STANDARD
  895.25 +BEGIN:STANDARD
  895.26 +TZOFFSETFROM:+0630
  895.27 +TZOFFSETTO:+0530
  895.28 +TZNAME:IST
  895.29 +DTSTART:19420515T000000
  895.30 +RDATE:19420515T000000
  895.31 +END:STANDARD
  895.32 +BEGIN:STANDARD
  895.33 +TZOFFSETFROM:+0530
  895.34 +TZOFFSETTO:+0630
  895.35 +TZNAME:BURT
  895.36 +DTSTART:19420901T000000
  895.37 +RDATE:19420901T000000
  895.38 +END:STANDARD
  895.39 +BEGIN:STANDARD
  895.40 +TZOFFSETFROM:+0630
  895.41 +TZOFFSETTO:+0600
  895.42 +TZNAME:DACT
  895.43 +DTSTART:19510930T000000
  895.44 +RDATE:19510930T000000
  895.45 +END:STANDARD
  895.46 +BEGIN:STANDARD
  895.47 +TZOFFSETFROM:+0600
  895.48 +TZOFFSETTO:+0600
  895.49 +TZNAME:BDT
  895.50 +DTSTART:19710326T000000
  895.51 +RDATE:19710326T000000
  895.52 +RDATE:20090101T000000
  895.53 +END:STANDARD
  895.54 +BEGIN:DAYLIGHT
  895.55 +TZOFFSETFROM:+0600
  895.56 +TZOFFSETTO:+0700
  895.57 +TZNAME:BDST
  895.58 +DTSTART:20090619T230000
  895.59 +RDATE:20090619T230000
  895.60 +END:DAYLIGHT
  895.61 +BEGIN:STANDARD
  895.62 +TZOFFSETFROM:+0700
  895.63 +TZOFFSETTO:+0600
  895.64 +TZNAME:BDT
  895.65 +DTSTART:20091231T235900
  895.66 +RDATE:20091231T235900
  895.67 +END:STANDARD
  895.68 +END:VTIMEZONE
  895.69 +END:VCALENDAR
   896.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   896.2 +++ b/src/zoneinfo/Asia/Dili.ics	Tue Feb 10 18:12:00 2015 +0100
   896.3 @@ -0,0 +1,44 @@
   896.4 +BEGIN:VCALENDAR
   896.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   896.6 +VERSION:2.0
   896.7 +BEGIN:VTIMEZONE
   896.8 +TZID:Asia/Dili
   896.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Dili
  896.10 +X-LIC-LOCATION:Asia/Dili
  896.11 +BEGIN:STANDARD
  896.12 +TZOFFSETFROM:+082220
  896.13 +TZOFFSETTO:+0800
  896.14 +TZNAME:TLT
  896.15 +DTSTART:19120101T000000
  896.16 +RDATE:19120101T000000
  896.17 +END:STANDARD
  896.18 +BEGIN:STANDARD
  896.19 +TZOFFSETFROM:+0800
  896.20 +TZOFFSETTO:+0900
  896.21 +TZNAME:JST
  896.22 +DTSTART:19420221T230000
  896.23 +RDATE:19420221T230000
  896.24 +END:STANDARD
  896.25 +BEGIN:STANDARD
  896.26 +TZOFFSETFROM:+0900
  896.27 +TZOFFSETTO:+0900
  896.28 +TZNAME:TLT
  896.29 +DTSTART:19450923T000000
  896.30 +RDATE:19450923T000000
  896.31 +END:STANDARD
  896.32 +BEGIN:STANDARD
  896.33 +TZOFFSETFROM:+0900
  896.34 +TZOFFSETTO:+0800
  896.35 +TZNAME:CIT
  896.36 +DTSTART:19760503T000000
  896.37 +RDATE:19760503T000000
  896.38 +END:STANDARD
  896.39 +BEGIN:STANDARD
  896.40 +TZOFFSETFROM:+0800
  896.41 +TZOFFSETTO:+0900
  896.42 +TZNAME:TLT
  896.43 +DTSTART:20000917T000000
  896.44 +RDATE:20000917T000000
  896.45 +END:STANDARD
  896.46 +END:VTIMEZONE
  896.47 +END:VCALENDAR
   897.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   897.2 +++ b/src/zoneinfo/Asia/Dubai.ics	Tue Feb 10 18:12:00 2015 +0100
   897.3 @@ -0,0 +1,16 @@
   897.4 +BEGIN:VCALENDAR
   897.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   897.6 +VERSION:2.0
   897.7 +BEGIN:VTIMEZONE
   897.8 +TZID:Asia/Dubai
   897.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Dubai
  897.10 +X-LIC-LOCATION:Asia/Dubai
  897.11 +BEGIN:STANDARD
  897.12 +TZOFFSETFROM:+034112
  897.13 +TZOFFSETTO:+0400
  897.14 +TZNAME:GST
  897.15 +DTSTART:19200101T000000
  897.16 +RDATE:19200101T000000
  897.17 +END:STANDARD
  897.18 +END:VTIMEZONE
  897.19 +END:VCALENDAR
   898.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   898.2 +++ b/src/zoneinfo/Asia/Dushanbe.ics	Tue Feb 10 18:12:00 2015 +0100
   898.3 @@ -0,0 +1,69 @@
   898.4 +BEGIN:VCALENDAR
   898.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   898.6 +VERSION:2.0
   898.7 +BEGIN:VTIMEZONE
   898.8 +TZID:Asia/Dushanbe
   898.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Dushanbe
  898.10 +X-LIC-LOCATION:Asia/Dushanbe
  898.11 +BEGIN:STANDARD
  898.12 +TZOFFSETFROM:+043512
  898.13 +TZOFFSETTO:+0500
  898.14 +TZNAME:DUST
  898.15 +DTSTART:19240502T000000
  898.16 +RDATE:19240502T000000
  898.17 +END:STANDARD
  898.18 +BEGIN:STANDARD
  898.19 +TZOFFSETFROM:+0500
  898.20 +TZOFFSETTO:+0600
  898.21 +TZNAME:DUST
  898.22 +DTSTART:19300621T000000
  898.23 +RDATE:19300621T000000
  898.24 +END:STANDARD
  898.25 +BEGIN:DAYLIGHT
  898.26 +TZOFFSETFROM:+0600
  898.27 +TZOFFSETTO:+0700
  898.28 +TZNAME:DUSST
  898.29 +DTSTART:19810401T000000
  898.30 +RDATE:19810401T000000
  898.31 +RDATE:19820401T000000
  898.32 +RDATE:19830401T000000
  898.33 +RDATE:19840401T000000
  898.34 +RDATE:19850331T020000
  898.35 +RDATE:19860330T020000
  898.36 +RDATE:19870329T020000
  898.37 +RDATE:19880327T020000
  898.38 +RDATE:19890326T020000
  898.39 +RDATE:19900325T020000
  898.40 +END:DAYLIGHT
  898.41 +BEGIN:STANDARD
  898.42 +TZOFFSETFROM:+0700
  898.43 +TZOFFSETTO:+0600
  898.44 +TZNAME:DUST
  898.45 +DTSTART:19811001T000000
  898.46 +RDATE:19811001T000000
  898.47 +RDATE:19821001T000000
  898.48 +RDATE:19831001T000000
  898.49 +RDATE:19840930T030000
  898.50 +RDATE:19850929T030000
  898.51 +RDATE:19860928T030000
  898.52 +RDATE:19870927T030000
  898.53 +RDATE:19880925T030000
  898.54 +RDATE:19890924T030000
  898.55 +RDATE:19900930T030000
  898.56 +END:STANDARD
  898.57 +BEGIN:DAYLIGHT
  898.58 +TZOFFSETFROM:+0600
  898.59 +TZOFFSETTO:+0600
  898.60 +TZNAME:DUSST
  898.61 +DTSTART:19910331T020000
  898.62 +RDATE:19910331T020000
  898.63 +END:DAYLIGHT
  898.64 +BEGIN:STANDARD
  898.65 +TZOFFSETFROM:+0600
  898.66 +TZOFFSETTO:+0500
  898.67 +TZNAME:TJT
  898.68 +DTSTART:19910909T030000
  898.69 +RDATE:19910909T030000
  898.70 +END:STANDARD
  898.71 +END:VTIMEZONE
  898.72 +END:VCALENDAR
   899.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   899.2 +++ b/src/zoneinfo/Asia/Gaza.ics	Tue Feb 10 18:12:00 2015 +0100
   899.3 @@ -0,0 +1,145 @@
   899.4 +BEGIN:VCALENDAR
   899.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   899.6 +VERSION:2.0
   899.7 +BEGIN:VTIMEZONE
   899.8 +TZID:Asia/Gaza
   899.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Gaza
  899.10 +X-LIC-LOCATION:Asia/Gaza
  899.11 +BEGIN:STANDARD
  899.12 +TZOFFSETFROM:+021752
  899.13 +TZOFFSETTO:+0200
  899.14 +TZNAME:EET
  899.15 +DTSTART:19001001T000000
  899.16 +RDATE:19001001T000000
  899.17 +END:STANDARD
  899.18 +BEGIN:DAYLIGHT
  899.19 +TZOFFSETFROM:+0200
  899.20 +TZOFFSETTO:+0300
  899.21 +TZNAME:EET
  899.22 +DTSTART:19400601T000000
  899.23 +RDATE:19400601T000000
  899.24 +RDATE:19430401T020000
  899.25 +RDATE:19440401T000000
  899.26 +RDATE:19450416T000000
  899.27 +RDATE:19460416T020000
  899.28 +END:DAYLIGHT
  899.29 +BEGIN:STANDARD
  899.30 +TZOFFSETFROM:+0300
  899.31 +TZOFFSETTO:+0200
  899.32 +TZNAME:EET
  899.33 +DTSTART:19421101T000000
  899.34 +RDATE:19421101T000000
  899.35 +RDATE:19431101T000000
  899.36 +RDATE:19441101T000000
  899.37 +RDATE:19451101T020000
  899.38 +RDATE:19461101T000000
  899.39 +RDATE:19571001T000000
  899.40 +RDATE:19581001T000000
  899.41 +RDATE:19590930T030000
  899.42 +RDATE:19600930T030000
  899.43 +RDATE:19610930T030000
  899.44 +RDATE:19620930T030000
  899.45 +RDATE:19630930T030000
  899.46 +RDATE:19640930T030000
  899.47 +RDATE:19650930T030000
  899.48 +RDATE:19661001T030000
  899.49 +RDATE:19960920T010000
  899.50 +RDATE:19970919T010000
  899.51 +RDATE:19980918T010000
  899.52 +RDATE:19991015T000000
  899.53 +RDATE:20001020T000000
  899.54 +RDATE:20011019T000000
  899.55 +RDATE:20021018T000000
  899.56 +RDATE:20031017T000000
  899.57 +RDATE:20041001T010000
  899.58 +RDATE:20051004T020000
  899.59 +RDATE:20060922T000000
  899.60 +RDATE:20070913T020000
  899.61 +RDATE:20080829T000000
  899.62 +RDATE:20090904T020000
  899.63 +RDATE:20100811T000000
  899.64 +RDATE:20110801T000000
  899.65 +END:STANDARD
  899.66 +BEGIN:STANDARD
  899.67 +TZOFFSETFROM:+0200
  899.68 +TZOFFSETTO:+0200
  899.69 +TZNAME:EET
  899.70 +DTSTART:19480515T000000
  899.71 +RDATE:19480515T000000
  899.72 +RDATE:19960101T000000
  899.73 +RDATE:19990101T000000
  899.74 +END:STANDARD
  899.75 +BEGIN:DAYLIGHT
  899.76 +TZOFFSETFROM:+0200
  899.77 +TZOFFSETTO:+0300
  899.78 +TZNAME:EEST
  899.79 +DTSTART:19570510T000000
  899.80 +RDATE:19570510T000000
  899.81 +RDATE:19580501T000000
  899.82 +RDATE:19590501T010000
  899.83 +RDATE:19600501T010000
  899.84 +RDATE:19610501T010000
  899.85 +RDATE:19620501T010000
  899.86 +RDATE:19630501T010000
  899.87 +RDATE:19640501T010000
  899.88 +RDATE:19650501T010000
  899.89 +RDATE:19660501T010000
  899.90 +RDATE:19670501T010000
  899.91 +RDATE:19960405T000000
  899.92 +RDATE:19970404T000000
  899.93 +RDATE:19980403T000000
  899.94 +RDATE:19990416T000000
  899.95 +RDATE:20000421T000000
  899.96 +RDATE:20010420T000000
  899.97 +RDATE:20020419T000000
  899.98 +RDATE:20030418T000000
  899.99 +RDATE:20040416T000000
 899.100 +RDATE:20050415T000000
 899.101 +RDATE:20060401T000000
 899.102 +RDATE:20070401T000000
 899.103 +RDATE:20080401T000000
 899.104 +RDATE:20090327T000000
 899.105 +RDATE:20100327T000100
 899.106 +RDATE:20110402T120100
 899.107 +END:DAYLIGHT
 899.108 +BEGIN:STANDARD
 899.109 +TZOFFSETFROM:+0300
 899.110 +TZOFFSETTO:+0200
 899.111 +TZNAME:IST
 899.112 +DTSTART:19670605T000000
 899.113 +RDATE:19670605T000000
 899.114 +RDATE:19741013T000000
 899.115 +RDATE:19750831T000000
 899.116 +RDATE:19850915T000000
 899.117 +RDATE:19860907T000000
 899.118 +RDATE:19870913T000000
 899.119 +RDATE:19880903T000000
 899.120 +RDATE:19890903T000000
 899.121 +RDATE:19900826T000000
 899.122 +RDATE:19910901T000000
 899.123 +RDATE:19920906T000000
 899.124 +RDATE:19930905T000000
 899.125 +RDATE:19940828T000000
 899.126 +RDATE:19950903T000000
 899.127 +END:STANDARD
 899.128 +BEGIN:DAYLIGHT
 899.129 +TZOFFSETFROM:+0200
 899.130 +TZOFFSETTO:+0300
 899.131 +TZNAME:IDT
 899.132 +DTSTART:19740707T000000
 899.133 +RDATE:19740707T000000
 899.134 +RDATE:19750420T000000
 899.135 +RDATE:19850414T000000
 899.136 +RDATE:19860518T000000
 899.137 +RDATE:19870415T000000
 899.138 +RDATE:19880409T000000
 899.139 +RDATE:19890430T000000
 899.140 +RDATE:19900325T000000
 899.141 +RDATE:19910324T000000
 899.142 +RDATE:19920329T000000
 899.143 +RDATE:19930402T000000
 899.144 +RDATE:19940401T000000
 899.145 +RDATE:19950331T000000
 899.146 +END:DAYLIGHT
 899.147 +END:VTIMEZONE
 899.148 +END:VCALENDAR
   900.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   900.2 +++ b/src/zoneinfo/Asia/Harbin.ics	Tue Feb 10 18:12:00 2015 +0100
   900.3 @@ -0,0 +1,62 @@
   900.4 +BEGIN:VCALENDAR
   900.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   900.6 +VERSION:2.0
   900.7 +BEGIN:VTIMEZONE
   900.8 +TZID:Asia/Harbin
   900.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Harbin
  900.10 +X-LIC-LOCATION:Asia/Harbin
  900.11 +BEGIN:STANDARD
  900.12 +TZOFFSETFROM:+082644
  900.13 +TZOFFSETTO:+0830
  900.14 +TZNAME:CHAT
  900.15 +DTSTART:19280101T000000
  900.16 +RDATE:19280101T000000
  900.17 +END:STANDARD
  900.18 +BEGIN:STANDARD
  900.19 +TZOFFSETFROM:+0830
  900.20 +TZOFFSETTO:+0800
  900.21 +TZNAME:CST
  900.22 +DTSTART:19320301T000000
  900.23 +RDATE:19320301T000000
  900.24 +RDATE:19800501T000000
  900.25 +END:STANDARD
  900.26 +BEGIN:STANDARD
  900.27 +TZOFFSETFROM:+0800
  900.28 +TZOFFSETTO:+0900
  900.29 +TZNAME:CHAT
  900.30 +DTSTART:19400101T000000
  900.31 +RDATE:19400101T000000
  900.32 +END:STANDARD
  900.33 +BEGIN:STANDARD
  900.34 +TZOFFSETFROM:+0900
  900.35 +TZOFFSETTO:+0830
  900.36 +TZNAME:CHAT
  900.37 +DTSTART:19660501T000000
  900.38 +RDATE:19660501T000000
  900.39 +END:STANDARD
  900.40 +BEGIN:DAYLIGHT
  900.41 +TZOFFSETFROM:+0800
  900.42 +TZOFFSETTO:+0900
  900.43 +TZNAME:CDT
  900.44 +DTSTART:19860504T000000
  900.45 +RDATE:19860504T000000
  900.46 +RDATE:19870412T000000
  900.47 +RDATE:19880410T000000
  900.48 +RDATE:19890416T000000
  900.49 +RDATE:19900415T000000
  900.50 +RDATE:19910414T000000
  900.51 +END:DAYLIGHT
  900.52 +BEGIN:STANDARD
  900.53 +TZOFFSETFROM:+0900
  900.54 +TZOFFSETTO:+0800
  900.55 +TZNAME:CST
  900.56 +DTSTART:19860914T000000
  900.57 +RDATE:19860914T000000
  900.58 +RDATE:19870913T000000
  900.59 +RDATE:19880911T000000
  900.60 +RDATE:19890917T000000
  900.61 +RDATE:19900916T000000
  900.62 +RDATE:19910915T000000
  900.63 +END:STANDARD
  900.64 +END:VTIMEZONE
  900.65 +END:VCALENDAR
   901.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   901.2 +++ b/src/zoneinfo/Asia/Hebron.ics	Tue Feb 10 18:12:00 2015 +0100
   901.3 @@ -0,0 +1,154 @@
   901.4 +BEGIN:VCALENDAR
   901.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   901.6 +VERSION:2.0
   901.7 +BEGIN:VTIMEZONE
   901.8 +TZID:Asia/Hebron
   901.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Hebron
  901.10 +X-LIC-LOCATION:Asia/Hebron
  901.11 +BEGIN:STANDARD
  901.12 +TZOFFSETFROM:+022023
  901.13 +TZOFFSETTO:+0200
  901.14 +TZNAME:EET
  901.15 +DTSTART:19001001T000000
  901.16 +RDATE:19001001T000000
  901.17 +END:STANDARD
  901.18 +BEGIN:DAYLIGHT
  901.19 +TZOFFSETFROM:+0200
  901.20 +TZOFFSETTO:+0300
  901.21 +TZNAME:EET
  901.22 +DTSTART:19400601T000000
  901.23 +RDATE:19400601T000000
  901.24 +RDATE:19430401T020000
  901.25 +RDATE:19440401T000000
  901.26 +RDATE:19450416T000000
  901.27 +RDATE:19460416T020000
  901.28 +END:DAYLIGHT
  901.29 +BEGIN:STANDARD
  901.30 +TZOFFSETFROM:+0300
  901.31 +TZOFFSETTO:+0200
  901.32 +TZNAME:EET
  901.33 +DTSTART:19421101T000000
  901.34 +RDATE:19421101T000000
  901.35 +RDATE:19431101T000000
  901.36 +RDATE:19441101T000000
  901.37 +RDATE:19451101T020000
  901.38 +RDATE:19461101T000000
  901.39 +RDATE:19571001T000000
  901.40 +RDATE:19581001T000000
  901.41 +RDATE:19590930T030000
  901.42 +RDATE:19600930T030000
  901.43 +RDATE:19610930T030000
  901.44 +RDATE:19620930T030000
  901.45 +RDATE:19630930T030000
  901.46 +RDATE:19640930T030000
  901.47 +RDATE:19650930T030000
  901.48 +RDATE:19661001T030000
  901.49 +RDATE:19960920T010000
  901.50 +RDATE:19970919T010000
  901.51 +RDATE:19980918T010000
  901.52 +RDATE:19991015T000000
  901.53 +RDATE:20001020T000000
  901.54 +RDATE:20011019T000000
  901.55 +RDATE:20021018T000000
  901.56 +RDATE:20031017T000000
  901.57 +RDATE:20041001T010000
  901.58 +RDATE:20051004T020000
  901.59 +RDATE:20060922T000000
  901.60 +RDATE:20070913T020000
  901.61 +RDATE:20080901T000000
  901.62 +RDATE:20090904T020000
  901.63 +RDATE:20100811T000000
  901.64 +RDATE:20110801T000000
  901.65 +RDATE:20110930T030000
  901.66 +END:STANDARD
  901.67 +BEGIN:STANDARD
  901.68 +TZOFFSETFROM:+0200
  901.69 +TZOFFSETTO:+0200
  901.70 +TZNAME:EET
  901.71 +DTSTART:19480515T000000
  901.72 +RDATE:19480515T000000
  901.73 +RDATE:19960101T000000
  901.74 +RDATE:19990101T000000
  901.75 +END:STANDARD
  901.76 +BEGIN:DAYLIGHT
  901.77 +TZOFFSETFROM:+0200
  901.78 +TZOFFSETTO:+0300
  901.79 +TZNAME:EEST
  901.80 +DTSTART:19570510T000000
  901.81 +RDATE:19570510T000000
  901.82 +RDATE:19580501T000000
  901.83 +RDATE:19590501T010000
  901.84 +RDATE:19600501T010000
  901.85 +RDATE:19610501T010000
  901.86 +RDATE:19620501T010000
  901.87 +RDATE:19630501T010000
  901.88 +RDATE:19640501T010000
  901.89 +RDATE:19650501T010000
  901.90 +RDATE:19660501T010000
  901.91 +RDATE:19670501T010000
  901.92 +RDATE:19960405T000000
  901.93 +RDATE:19970404T000000
  901.94 +RDATE:19980403T000000
  901.95 +RDATE:19990416T000000
  901.96 +RDATE:20000421T000000
  901.97 +RDATE:20010420T000000
  901.98 +RDATE:20020419T000000
  901.99 +RDATE:20030418T000000
 901.100 +RDATE:20040416T000000
 901.101 +RDATE:20050415T000000
 901.102 +RDATE:20060401T000000
 901.103 +RDATE:20070401T000000
 901.104 +RDATE:20080401T000000
 901.105 +RDATE:20090327T000000
 901.106 +RDATE:20100327T000100
 901.107 +RDATE:20110401T120100
 901.108 +RDATE:20110830T000000
 901.109 +END:DAYLIGHT
 901.110 +BEGIN:STANDARD
 901.111 +TZOFFSETFROM:+0300
 901.112 +TZOFFSETTO:+0200
 901.113 +TZNAME:IST
 901.114 +DTSTART:19670605T000000
 901.115 +RDATE:19670605T000000
 901.116 +RDATE:19741013T000000
 901.117 +RDATE:19750831T000000
 901.118 +RDATE:19850915T000000
 901.119 +RDATE:19860907T000000
 901.120 +RDATE:19870913T000000
 901.121 +RDATE:19880903T000000
 901.122 +RDATE:19890903T000000
 901.123 +RDATE:19900826T000000
 901.124 +RDATE:19910901T000000
 901.125 +RDATE:19920906T000000
 901.126 +RDATE:19930905T000000
 901.127 +RDATE:19940828T000000
 901.128 +RDATE:19950903T000000
 901.129 +END:STANDARD
 901.130 +BEGIN:DAYLIGHT
 901.131 +TZOFFSETFROM:+0200
 901.132 +TZOFFSETTO:+0300
 901.133 +TZNAME:IDT
 901.134 +DTSTART:19740707T000000
 901.135 +RDATE:19740707T000000
 901.136 +RDATE:19750420T000000
 901.137 +RDATE:19850414T000000
 901.138 +RDATE:19860518T000000
 901.139 +RDATE:19870415T000000
 901.140 +RDATE:19880409T000000
 901.141 +RDATE:19890430T000000
 901.142 +RDATE:19900325T000000
 901.143 +RDATE:19910324T000000
 901.144 +RDATE:19920329T000000
 901.145 +RDATE:19930402T000000
 901.146 +RDATE:19940401T000000
 901.147 +RDATE:19950331T000000
 901.148 +END:DAYLIGHT
 901.149 +BEGIN:DAYLIGHT
 901.150 +TZOFFSETFROM:+0300
 901.151 +TZOFFSETTO:+0300
 901.152 +TZNAME:EEST
 901.153 +DTSTART:20080801T000000
 901.154 +RDATE:20080801T000000
 901.155 +END:DAYLIGHT
 901.156 +END:VTIMEZONE
 901.157 +END:VCALENDAR
   902.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   902.2 +++ b/src/zoneinfo/Asia/Ho_Chi_Minh.ics	Tue Feb 10 18:12:00 2015 +0100
   902.3 @@ -0,0 +1,37 @@
   902.4 +BEGIN:VCALENDAR
   902.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   902.6 +VERSION:2.0
   902.7 +BEGIN:VTIMEZONE
   902.8 +TZID:Asia/Ho_Chi_Minh
   902.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Ho_Chi_Minh
  902.10 +X-LIC-LOCATION:Asia/Ho_Chi_Minh
  902.11 +BEGIN:STANDARD
  902.12 +TZOFFSETFROM:+070640
  902.13 +TZOFFSETTO:+070620
  902.14 +TZNAME:SMT
  902.15 +DTSTART:19060609T000000
  902.16 +RDATE:19060609T000000
  902.17 +END:STANDARD
  902.18 +BEGIN:STANDARD
  902.19 +TZOFFSETFROM:+070620
  902.20 +TZOFFSETTO:+0700
  902.21 +TZNAME:ICT
  902.22 +DTSTART:19110311T000100
  902.23 +RDATE:19110311T000100
  902.24 +END:STANDARD
  902.25 +BEGIN:STANDARD
  902.26 +TZOFFSETFROM:+0700
  902.27 +TZOFFSETTO:+0800
  902.28 +TZNAME:ICT
  902.29 +DTSTART:19120501T000000
  902.30 +RDATE:19120501T000000
  902.31 +END:STANDARD
  902.32 +BEGIN:STANDARD
  902.33 +TZOFFSETFROM:+0800
  902.34 +TZOFFSETTO:+0700
  902.35 +TZNAME:ICT
  902.36 +DTSTART:19310501T000000
  902.37 +RDATE:19310501T000000
  902.38 +END:STANDARD
  902.39 +END:VTIMEZONE
  902.40 +END:VCALENDAR
   903.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   903.2 +++ b/src/zoneinfo/Asia/Hong_Kong.ics	Tue Feb 10 18:12:00 2015 +0100
   903.3 @@ -0,0 +1,109 @@
   903.4 +BEGIN:VCALENDAR
   903.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   903.6 +VERSION:2.0
   903.7 +BEGIN:VTIMEZONE
   903.8 +TZID:Asia/Hong_Kong
   903.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Hong_Kong
  903.10 +X-LIC-LOCATION:Asia/Hong_Kong
  903.11 +BEGIN:STANDARD
  903.12 +TZOFFSETFROM:+073636
  903.13 +TZOFFSETTO:+0800
  903.14 +TZNAME:HKT
  903.15 +DTSTART:19041030T000000
  903.16 +RDATE:19041030T000000
  903.17 +END:STANDARD
  903.18 +BEGIN:DAYLIGHT
  903.19 +TZOFFSETFROM:+0800
  903.20 +TZOFFSETTO:+0900
  903.21 +TZNAME:HKST
  903.22 +DTSTART:19410401T033000
  903.23 +RDATE:19410401T033000
  903.24 +RDATE:19460420T033000
  903.25 +RDATE:19470413T033000
  903.26 +RDATE:19480502T033000
  903.27 +RDATE:19490403T033000
  903.28 +RDATE:19500402T033000
  903.29 +RDATE:19510401T033000
  903.30 +RDATE:19520406T033000
  903.31 +RDATE:19530405T033000
  903.32 +RDATE:19540321T033000
  903.33 +RDATE:19550320T033000
  903.34 +RDATE:19560318T033000
  903.35 +RDATE:19570324T033000
  903.36 +RDATE:19580323T033000
  903.37 +RDATE:19590322T033000
  903.38 +RDATE:19600320T033000
  903.39 +RDATE:19610319T033000
  903.40 +RDATE:19620318T033000
  903.41 +RDATE:19630324T033000
  903.42 +RDATE:19640322T033000
  903.43 +RDATE:19650418T033000
  903.44 +RDATE:19660417T033000
  903.45 +RDATE:19670416T033000
  903.46 +RDATE:19680421T033000
  903.47 +RDATE:19690420T033000
  903.48 +RDATE:19700419T033000
  903.49 +RDATE:19710418T033000
  903.50 +RDATE:19720416T033000
  903.51 +RDATE:19730422T033000
  903.52 +RDATE:19731230T033000
  903.53 +RDATE:19750420T033000
  903.54 +RDATE:19760418T033000
  903.55 +RDATE:19790513T033000
  903.56 +END:DAYLIGHT
  903.57 +BEGIN:STANDARD
  903.58 +TZOFFSETFROM:+0900
  903.59 +TZOFFSETTO:+0800
  903.60 +TZNAME:HKT
  903.61 +DTSTART:19410930T033000
  903.62 +RDATE:19410930T033000
  903.63 +RDATE:19450915T000000
  903.64 +RDATE:19461201T033000
  903.65 +RDATE:19471230T033000
  903.66 +RDATE:19481031T033000
  903.67 +RDATE:19491030T033000
  903.68 +RDATE:19501029T033000
  903.69 +RDATE:19511028T033000
  903.70 +RDATE:19521025T033000
  903.71 +RDATE:19531101T033000
  903.72 +RDATE:19541031T033000
  903.73 +RDATE:19551106T033000
  903.74 +RDATE:19561104T033000
  903.75 +RDATE:19571103T033000
  903.76 +RDATE:19581102T033000
  903.77 +RDATE:19591101T033000
  903.78 +RDATE:19601106T033000
  903.79 +RDATE:19611105T033000
  903.80 +RDATE:19621104T033000
  903.81 +RDATE:19631103T033000
  903.82 +RDATE:19641101T033000
  903.83 +RDATE:19651017T033000
  903.84 +RDATE:19661016T033000
  903.85 +RDATE:19671022T033000
  903.86 +RDATE:19681020T033000
  903.87 +RDATE:19691019T033000
  903.88 +RDATE:19701018T033000
  903.89 +RDATE:19711017T033000
  903.90 +RDATE:19721022T033000
  903.91 +RDATE:19731021T033000
  903.92 +RDATE:19741020T033000
  903.93 +RDATE:19751019T033000
  903.94 +RDATE:19761017T033000
  903.95 +RDATE:19791021T033000
  903.96 +END:STANDARD
  903.97 +BEGIN:STANDARD
  903.98 +TZOFFSETFROM:+0800
  903.99 +TZOFFSETTO:+0900
 903.100 +TZNAME:JST
 903.101 +DTSTART:19411225T000000
 903.102 +RDATE:19411225T000000
 903.103 +END:STANDARD
 903.104 +BEGIN:DAYLIGHT
 903.105 +TZOFFSETFROM:+0900
 903.106 +TZOFFSETTO:+0900
 903.107 +TZNAME:HKST
 903.108 +DTSTART:19740421T033000
 903.109 +RDATE:19740421T033000
 903.110 +END:DAYLIGHT
 903.111 +END:VTIMEZONE
 903.112 +END:VCALENDAR
   904.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   904.2 +++ b/src/zoneinfo/Asia/Hovd.ics	Tue Feb 10 18:12:00 2015 +0100
   904.3 @@ -0,0 +1,79 @@
   904.4 +BEGIN:VCALENDAR
   904.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   904.6 +VERSION:2.0
   904.7 +BEGIN:VTIMEZONE
   904.8 +TZID:Asia/Hovd
   904.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Hovd
  904.10 +X-LIC-LOCATION:Asia/Hovd
  904.11 +BEGIN:STANDARD
  904.12 +TZOFFSETFROM:+060636
  904.13 +TZOFFSETTO:+0600
  904.14 +TZNAME:HOVT
  904.15 +DTSTART:19050801T000000
  904.16 +RDATE:19050801T000000
  904.17 +END:STANDARD
  904.18 +BEGIN:STANDARD
  904.19 +TZOFFSETFROM:+0600
  904.20 +TZOFFSETTO:+0700
  904.21 +TZNAME:HOVT
  904.22 +DTSTART:19780101T000000
  904.23 +RDATE:19780101T000000
  904.24 +END:STANDARD
  904.25 +BEGIN:DAYLIGHT
  904.26 +TZOFFSETFROM:+0700
  904.27 +TZOFFSETTO:+0800
  904.28 +TZNAME:HOVST
  904.29 +DTSTART:19830401T000000
  904.30 +RDATE:19830401T000000
  904.31 +RDATE:19840401T000000
  904.32 +RDATE:19850331T000000
  904.33 +RDATE:19860330T000000
  904.34 +RDATE:19870329T000000
  904.35 +RDATE:19880327T000000
  904.36 +RDATE:19890326T000000
  904.37 +RDATE:19900325T000000
  904.38 +RDATE:19910331T000000
  904.39 +RDATE:19920329T000000
  904.40 +RDATE:19930328T000000
  904.41 +RDATE:19940327T000000
  904.42 +RDATE:19950326T000000
  904.43 +RDATE:19960331T000000
  904.44 +RDATE:19970330T000000
  904.45 +RDATE:19980329T000000
  904.46 +RDATE:20010428T020000
  904.47 +RDATE:20020330T020000
  904.48 +RDATE:20030329T020000
  904.49 +RDATE:20040327T020000
  904.50 +RDATE:20050326T020000
  904.51 +RDATE:20060325T020000
  904.52 +END:DAYLIGHT
  904.53 +BEGIN:STANDARD
  904.54 +TZOFFSETFROM:+0800
  904.55 +TZOFFSETTO:+0700
  904.56 +TZNAME:HOVT
  904.57 +DTSTART:19831001T000000
  904.58 +RDATE:19831001T000000
  904.59 +RDATE:19840930T000000
  904.60 +RDATE:19850929T000000
  904.61 +RDATE:19860928T000000
  904.62 +RDATE:19870927T000000
  904.63 +RDATE:19880925T000000
  904.64 +RDATE:19890924T000000
  904.65 +RDATE:19900930T000000
  904.66 +RDATE:19910929T000000
  904.67 +RDATE:19920927T000000
  904.68 +RDATE:19930926T000000
  904.69 +RDATE:19940925T000000
  904.70 +RDATE:19950924T000000
  904.71 +RDATE:19960929T000000
  904.72 +RDATE:19970928T000000
  904.73 +RDATE:19980927T000000
  904.74 +RDATE:20010929T020000
  904.75 +RDATE:20020928T020000
  904.76 +RDATE:20030927T020000
  904.77 +RDATE:20040925T020000
  904.78 +RDATE:20050924T020000
  904.79 +RDATE:20060930T020000
  904.80 +END:STANDARD
  904.81 +END:VTIMEZONE
  904.82 +END:VCALENDAR
   905.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   905.2 +++ b/src/zoneinfo/Asia/Irkutsk.ics	Tue Feb 10 18:12:00 2015 +0100
   905.3 @@ -0,0 +1,122 @@
   905.4 +BEGIN:VCALENDAR
   905.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   905.6 +VERSION:2.0
   905.7 +BEGIN:VTIMEZONE
   905.8 +TZID:Asia/Irkutsk
   905.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Irkutsk
  905.10 +X-LIC-LOCATION:Asia/Irkutsk
  905.11 +BEGIN:STANDARD
  905.12 +TZOFFSETFROM:+065720
  905.13 +TZOFFSETTO:+065720
  905.14 +TZNAME:IMT
  905.15 +DTSTART:18800101T000000
  905.16 +RDATE:18800101T000000
  905.17 +END:STANDARD
  905.18 +BEGIN:STANDARD
  905.19 +TZOFFSETFROM:+065720
  905.20 +TZOFFSETTO:+0700
  905.21 +TZNAME:IRKT
  905.22 +DTSTART:19200125T000000
  905.23 +RDATE:19200125T000000
  905.24 +END:STANDARD
  905.25 +BEGIN:STANDARD
  905.26 +TZOFFSETFROM:+0700
  905.27 +TZOFFSETTO:+0800
  905.28 +TZNAME:IRKT
  905.29 +DTSTART:19300621T000000
  905.30 +RDATE:19300621T000000
  905.31 +RDATE:19920119T020000
  905.32 +END:STANDARD
  905.33 +BEGIN:DAYLIGHT
  905.34 +TZOFFSETFROM:+0800
  905.35 +TZOFFSETTO:+0900
  905.36 +TZNAME:IRKST
  905.37 +DTSTART:19810401T000000
  905.38 +RDATE:19810401T000000
  905.39 +RDATE:19820401T000000
  905.40 +RDATE:19830401T000000
  905.41 +RDATE:19840401T000000
  905.42 +RDATE:19850331T020000
  905.43 +RDATE:19860330T020000
  905.44 +RDATE:19870329T020000
  905.45 +RDATE:19880327T020000
  905.46 +RDATE:19890326T020000
  905.47 +RDATE:19900325T020000
  905.48 +RDATE:19920328T230000
  905.49 +RDATE:19930328T020000
  905.50 +RDATE:19940327T020000
  905.51 +RDATE:19950326T020000
  905.52 +RDATE:19960331T020000
  905.53 +RDATE:19970330T020000
  905.54 +RDATE:19980329T020000
  905.55 +RDATE:19990328T020000
  905.56 +RDATE:20000326T020000
  905.57 +RDATE:20010325T020000
  905.58 +RDATE:20020331T020000
  905.59 +RDATE:20030330T020000
  905.60 +RDATE:20040328T020000
  905.61 +RDATE:20050327T020000
  905.62 +RDATE:20060326T020000
  905.63 +RDATE:20070325T020000
  905.64 +RDATE:20080330T020000
  905.65 +RDATE:20090329T020000
  905.66 +RDATE:20100328T020000
  905.67 +END:DAYLIGHT
  905.68 +BEGIN:STANDARD
  905.69 +TZOFFSETFROM:+0900
  905.70 +TZOFFSETTO:+0800
  905.71 +TZNAME:IRKT
  905.72 +DTSTART:19811001T000000
  905.73 +RDATE:19811001T000000
  905.74 +RDATE:19821001T000000
  905.75 +RDATE:19831001T000000
  905.76 +RDATE:19840930T030000
  905.77 +RDATE:19850929T030000
  905.78 +RDATE:19860928T030000
  905.79 +RDATE:19870927T030000
  905.80 +RDATE:19880925T030000
  905.81 +RDATE:19890924T030000
  905.82 +RDATE:19900930T030000
  905.83 +RDATE:19920926T230000
  905.84 +RDATE:19930926T030000
  905.85 +RDATE:19940925T030000
  905.86 +RDATE:19950924T030000
  905.87 +RDATE:19961027T030000
  905.88 +RDATE:19971026T030000
  905.89 +RDATE:19981025T030000
  905.90 +RDATE:19991031T030000
  905.91 +RDATE:20001029T030000
  905.92 +RDATE:20011028T030000
  905.93 +RDATE:20021027T030000
  905.94 +RDATE:20031026T030000
  905.95 +RDATE:20041031T030000
  905.96 +RDATE:20051030T030000
  905.97 +RDATE:20061029T030000
  905.98 +RDATE:20071028T030000
  905.99 +RDATE:20081026T030000
 905.100 +RDATE:20091025T030000
 905.101 +RDATE:20101031T030000
 905.102 +END:STANDARD
 905.103 +BEGIN:DAYLIGHT
 905.104 +TZOFFSETFROM:+0800
 905.105 +TZOFFSETTO:+0800
 905.106 +TZNAME:IRKST
 905.107 +DTSTART:19910331T020000
 905.108 +RDATE:19910331T020000
 905.109 +END:DAYLIGHT
 905.110 +BEGIN:STANDARD
 905.111 +TZOFFSETFROM:+0800
 905.112 +TZOFFSETTO:+0700
 905.113 +TZNAME:IRKT
 905.114 +DTSTART:19910929T030000
 905.115 +RDATE:19910929T030000
 905.116 +END:STANDARD
 905.117 +BEGIN:STANDARD
 905.118 +TZOFFSETFROM:+0800
 905.119 +TZOFFSETTO:+0900
 905.120 +TZNAME:IRKT
 905.121 +DTSTART:20110327T020000
 905.122 +RDATE:20110327T020000
 905.123 +END:STANDARD
 905.124 +END:VTIMEZONE
 905.125 +END:VCALENDAR
   906.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   906.2 +++ b/src/zoneinfo/Asia/Istanbul.ics	Tue Feb 10 18:12:00 2015 +0100
   906.3 @@ -0,0 +1,194 @@
   906.4 +BEGIN:VCALENDAR
   906.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   906.6 +VERSION:2.0
   906.7 +BEGIN:VTIMEZONE
   906.8 +TZID:Asia/Istanbul
   906.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Istanbul
  906.10 +X-LIC-LOCATION:Asia/Istanbul
  906.11 +BEGIN:STANDARD
  906.12 +TZOFFSETFROM:+0300
  906.13 +TZOFFSETTO:+0200
  906.14 +TZNAME:EET
  906.15 +DTSTART:20071028T040000
  906.16 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  906.17 +END:STANDARD
  906.18 +BEGIN:DAYLIGHT
  906.19 +TZOFFSETFROM:+0200
  906.20 +TZOFFSETTO:+0300
  906.21 +TZNAME:EEST
  906.22 +DTSTART:20120325T030000
  906.23 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  906.24 +END:DAYLIGHT
  906.25 +BEGIN:STANDARD
  906.26 +TZOFFSETFROM:+015552
  906.27 +TZOFFSETTO:+015656
  906.28 +TZNAME:IMT
  906.29 +DTSTART:18800101T000000
  906.30 +RDATE:18800101T000000
  906.31 +END:STANDARD
  906.32 +BEGIN:STANDARD
  906.33 +TZOFFSETFROM:+015656
  906.34 +TZOFFSETTO:+0200
  906.35 +TZNAME:EET
  906.36 +DTSTART:19101001T000000
  906.37 +RDATE:19101001T000000
  906.38 +END:STANDARD
  906.39 +BEGIN:DAYLIGHT
  906.40 +TZOFFSETFROM:+0200
  906.41 +TZOFFSETTO:+0300
  906.42 +TZNAME:EEST
  906.43 +DTSTART:19160501T000000
  906.44 +RDATE:19160501T000000
  906.45 +RDATE:19200328T000000
  906.46 +RDATE:19210403T000000
  906.47 +RDATE:19220326T000000
  906.48 +RDATE:19240513T000000
  906.49 +RDATE:19250501T000000
  906.50 +RDATE:19400630T000000
  906.51 +RDATE:19401201T000000
  906.52 +RDATE:19420401T000000
  906.53 +RDATE:19450402T000000
  906.54 +RDATE:19460601T000000
  906.55 +RDATE:19470420T000000
  906.56 +RDATE:19480418T000000
  906.57 +RDATE:19490410T000000
  906.58 +RDATE:19500419T000000
  906.59 +RDATE:19510422T000000
  906.60 +RDATE:19620715T000000
  906.61 +RDATE:19640515T000000
  906.62 +RDATE:19700503T000000
  906.63 +RDATE:19710502T000000
  906.64 +RDATE:19720507T000000
  906.65 +RDATE:19730603T010000
  906.66 +RDATE:19740331T020000
  906.67 +RDATE:19750330T000000
  906.68 +RDATE:19760601T000000
  906.69 +RDATE:19770403T000000
  906.70 +RDATE:19780402T000000
  906.71 +RDATE:19860330T020000
  906.72 +RDATE:19870329T020000
  906.73 +RDATE:19880327T020000
  906.74 +RDATE:19890326T020000
  906.75 +RDATE:19900325T020000
  906.76 +RDATE:19910331T010000
  906.77 +RDATE:19920329T010000
  906.78 +RDATE:19930328T010000
  906.79 +RDATE:19940327T010000
  906.80 +RDATE:19950326T010000
  906.81 +RDATE:19960331T010000
  906.82 +RDATE:19970330T010000
  906.83 +RDATE:19980329T010000
  906.84 +RDATE:19990328T010000
  906.85 +RDATE:20000326T010000
  906.86 +RDATE:20010325T010000
  906.87 +RDATE:20020331T010000
  906.88 +RDATE:20030330T010000
  906.89 +RDATE:20040328T010000
  906.90 +RDATE:20050327T010000
  906.91 +RDATE:20060326T010000
  906.92 +RDATE:20070325T030000
  906.93 +RDATE:20080330T030000
  906.94 +RDATE:20090329T030000
  906.95 +RDATE:20100328T030000
  906.96 +RDATE:20110328T030000
  906.97 +END:DAYLIGHT
  906.98 +BEGIN:STANDARD
  906.99 +TZOFFSETFROM:+0300
 906.100 +TZOFFSETTO:+0200
 906.101 +TZNAME:EET
 906.102 +DTSTART:19161001T000000
 906.103 +RDATE:19161001T000000
 906.104 +RDATE:19201025T000000
 906.105 +RDATE:19211003T000000
 906.106 +RDATE:19221008T000000
 906.107 +RDATE:19241001T000000
 906.108 +RDATE:19251001T000000
 906.109 +RDATE:19401005T000000
 906.110 +RDATE:19410921T000000
 906.111 +RDATE:19421101T000000
 906.112 +RDATE:19451008T000000
 906.113 +RDATE:19461001T000000
 906.114 +RDATE:19471005T000000
 906.115 +RDATE:19481003T000000
 906.116 +RDATE:19491002T000000
 906.117 +RDATE:19501008T000000
 906.118 +RDATE:19511008T000000
 906.119 +RDATE:19621008T000000
 906.120 +RDATE:19641001T000000
 906.121 +RDATE:19701004T000000
 906.122 +RDATE:19711003T000000
 906.123 +RDATE:19721008T000000
 906.124 +RDATE:19731104T030000
 906.125 +RDATE:19741103T050000
 906.126 +RDATE:19751026T000000
 906.127 +RDATE:19761031T000000
 906.128 +RDATE:19771016T000000
 906.129 +RDATE:19850928T000000
 906.130 +RDATE:19860928T030000
 906.131 +RDATE:19870927T030000
 906.132 +RDATE:19880925T030000
 906.133 +RDATE:19890924T030000
 906.134 +RDATE:19900930T030000
 906.135 +RDATE:19910929T020000
 906.136 +RDATE:19920927T020000
 906.137 +RDATE:19930926T020000
 906.138 +RDATE:19940925T020000
 906.139 +RDATE:19950924T020000
 906.140 +RDATE:19961027T020000
 906.141 +RDATE:19971026T020000
 906.142 +RDATE:19981025T020000
 906.143 +RDATE:19991031T020000
 906.144 +RDATE:20001029T020000
 906.145 +RDATE:20011028T020000
 906.146 +RDATE:20021027T020000
 906.147 +RDATE:20031026T020000
 906.148 +RDATE:20041031T020000
 906.149 +RDATE:20051030T020000
 906.150 +RDATE:20061029T020000
 906.151 +END:STANDARD
 906.152 +BEGIN:DAYLIGHT
 906.153 +TZOFFSETFROM:+0300
 906.154 +TZOFFSETTO:+0400
 906.155 +TZNAME:TRST
 906.156 +DTSTART:19781015T000000
 906.157 +RDATE:19781015T000000
 906.158 +RDATE:19800406T030000
 906.159 +RDATE:19810329T030000
 906.160 +RDATE:19820328T030000
 906.161 +RDATE:19830731T000000
 906.162 +END:DAYLIGHT
 906.163 +BEGIN:DAYLIGHT
 906.164 +TZOFFSETFROM:+0400
 906.165 +TZOFFSETTO:+0400
 906.166 +TZNAME:TRST
 906.167 +DTSTART:19790401T030000
 906.168 +RDATE:19790401T030000
 906.169 +END:DAYLIGHT
 906.170 +BEGIN:STANDARD
 906.171 +TZOFFSETFROM:+0400
 906.172 +TZOFFSETTO:+0300
 906.173 +TZNAME:TRT
 906.174 +DTSTART:19791015T000000
 906.175 +RDATE:19791015T000000
 906.176 +RDATE:19801013T000000
 906.177 +RDATE:19811012T000000
 906.178 +RDATE:19821011T000000
 906.179 +RDATE:19831002T000000
 906.180 +END:STANDARD
 906.181 +BEGIN:DAYLIGHT
 906.182 +TZOFFSETFROM:+0300
 906.183 +TZOFFSETTO:+0300
 906.184 +TZNAME:EEST
 906.185 +DTSTART:19850420T000000
 906.186 +RDATE:19850420T000000
 906.187 +END:DAYLIGHT
 906.188 +BEGIN:STANDARD
 906.189 +TZOFFSETFROM:+0200
 906.190 +TZOFFSETTO:+0200
 906.191 +TZNAME:EET
 906.192 +DTSTART:20070101T000000
 906.193 +RDATE:20070101T000000
 906.194 +RDATE:20110327T030000
 906.195 +END:STANDARD
 906.196 +END:VTIMEZONE
 906.197 +END:VCALENDAR
   907.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   907.2 +++ b/src/zoneinfo/Asia/Jakarta.ics	Tue Feb 10 18:12:00 2015 +0100
   907.3 @@ -0,0 +1,65 @@
   907.4 +BEGIN:VCALENDAR
   907.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   907.6 +VERSION:2.0
   907.7 +BEGIN:VTIMEZONE
   907.8 +TZID:Asia/Jakarta
   907.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Jakarta
  907.10 +X-LIC-LOCATION:Asia/Jakarta
  907.11 +BEGIN:STANDARD
  907.12 +TZOFFSETFROM:+070712
  907.13 +TZOFFSETTO:+070712
  907.14 +TZNAME:JMT
  907.15 +DTSTART:18670810T000000
  907.16 +RDATE:18670810T000000
  907.17 +END:STANDARD
  907.18 +BEGIN:STANDARD
  907.19 +TZOFFSETFROM:+070712
  907.20 +TZOFFSETTO:+0720
  907.21 +TZNAME:JAVT
  907.22 +DTSTART:19231231T234712
  907.23 +RDATE:19231231T234712
  907.24 +END:STANDARD
  907.25 +BEGIN:STANDARD
  907.26 +TZOFFSETFROM:+0720
  907.27 +TZOFFSETTO:+0730
  907.28 +TZNAME:WIT
  907.29 +DTSTART:19321101T000000
  907.30 +RDATE:19321101T000000
  907.31 +END:STANDARD
  907.32 +BEGIN:STANDARD
  907.33 +TZOFFSETFROM:+0730
  907.34 +TZOFFSETTO:+0900
  907.35 +TZNAME:JST
  907.36 +DTSTART:19420323T000000
  907.37 +RDATE:19420323T000000
  907.38 +END:STANDARD
  907.39 +BEGIN:STANDARD
  907.40 +TZOFFSETFROM:+0900
  907.41 +TZOFFSETTO:+0730
  907.42 +TZNAME:WIT
  907.43 +DTSTART:19450923T000000
  907.44 +RDATE:19450923T000000
  907.45 +END:STANDARD
  907.46 +BEGIN:STANDARD
  907.47 +TZOFFSETFROM:+0730
  907.48 +TZOFFSETTO:+0800
  907.49 +TZNAME:WIT
  907.50 +DTSTART:19480501T000000
  907.51 +RDATE:19480501T000000
  907.52 +END:STANDARD
  907.53 +BEGIN:STANDARD
  907.54 +TZOFFSETFROM:+0800
  907.55 +TZOFFSETTO:+0730
  907.56 +TZNAME:WIT
  907.57 +DTSTART:19500501T000000
  907.58 +RDATE:19500501T000000
  907.59 +END:STANDARD
  907.60 +BEGIN:STANDARD
  907.61 +TZOFFSETFROM:+0730
  907.62 +TZOFFSETTO:+0700
  907.63 +TZNAME:WIT
  907.64 +DTSTART:19640101T000000
  907.65 +RDATE:19640101T000000
  907.66 +END:STANDARD
  907.67 +END:VTIMEZONE
  907.68 +END:VCALENDAR
   908.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   908.2 +++ b/src/zoneinfo/Asia/Jayapura.ics	Tue Feb 10 18:12:00 2015 +0100
   908.3 @@ -0,0 +1,30 @@
   908.4 +BEGIN:VCALENDAR
   908.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   908.6 +VERSION:2.0
   908.7 +BEGIN:VTIMEZONE
   908.8 +TZID:Asia/Jayapura
   908.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Jayapura
  908.10 +X-LIC-LOCATION:Asia/Jayapura
  908.11 +BEGIN:STANDARD
  908.12 +TZOFFSETFROM:+092248
  908.13 +TZOFFSETTO:+0900
  908.14 +TZNAME:EIT
  908.15 +DTSTART:19321101T000000
  908.16 +RDATE:19321101T000000
  908.17 +END:STANDARD
  908.18 +BEGIN:STANDARD
  908.19 +TZOFFSETFROM:+0900
  908.20 +TZOFFSETTO:+0930
  908.21 +TZNAME:CST
  908.22 +DTSTART:19440901T000000
  908.23 +RDATE:19440901T000000
  908.24 +END:STANDARD
  908.25 +BEGIN:STANDARD
  908.26 +TZOFFSETFROM:+0930
  908.27 +TZOFFSETTO:+0900
  908.28 +TZNAME:EIT
  908.29 +DTSTART:19640101T000000
  908.30 +RDATE:19640101T000000
  908.31 +END:STANDARD
  908.32 +END:VTIMEZONE
  908.33 +END:VCALENDAR
   909.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   909.2 +++ b/src/zoneinfo/Asia/Jerusalem.ics	Tue Feb 10 18:12:00 2015 +0100
   909.3 @@ -0,0 +1,188 @@
   909.4 +BEGIN:VCALENDAR
   909.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   909.6 +VERSION:2.0
   909.7 +BEGIN:VTIMEZONE
   909.8 +TZID:Asia/Jerusalem
   909.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Jerusalem
  909.10 +X-LIC-LOCATION:Asia/Jerusalem
  909.11 +BEGIN:STANDARD
  909.12 +TZOFFSETFROM:+022056
  909.13 +TZOFFSETTO:+022040
  909.14 +TZNAME:JMT
  909.15 +DTSTART:18800101T000000
  909.16 +RDATE:18800101T000000
  909.17 +END:STANDARD
  909.18 +BEGIN:STANDARD
  909.19 +TZOFFSETFROM:+022040
  909.20 +TZOFFSETTO:+0200
  909.21 +TZNAME:IST
  909.22 +DTSTART:19180101T000000
  909.23 +RDATE:19180101T000000
  909.24 +END:STANDARD
  909.25 +BEGIN:DAYLIGHT
  909.26 +TZOFFSETFROM:+0200
  909.27 +TZOFFSETTO:+0300
  909.28 +TZNAME:IDT
  909.29 +DTSTART:19400601T000000
  909.30 +RDATE:19400601T000000
  909.31 +RDATE:19430401T020000
  909.32 +RDATE:19440401T000000
  909.33 +RDATE:19450416T000000
  909.34 +RDATE:19460416T020000
  909.35 +RDATE:19490501T000000
  909.36 +RDATE:19500416T000000
  909.37 +RDATE:19510401T000000
  909.38 +RDATE:19520420T020000
  909.39 +RDATE:19530412T020000
  909.40 +RDATE:19540613T000000
  909.41 +RDATE:19550611T020000
  909.42 +RDATE:19560603T000000
  909.43 +RDATE:19570429T020000
  909.44 +RDATE:19740707T000000
  909.45 +RDATE:19750420T000000
  909.46 +RDATE:19850414T000000
  909.47 +RDATE:19860518T000000
  909.48 +RDATE:19870415T000000
  909.49 +RDATE:19880409T000000
  909.50 +RDATE:19890430T000000
  909.51 +RDATE:19900325T000000
  909.52 +RDATE:19910324T000000
  909.53 +RDATE:19920329T000000
  909.54 +RDATE:19930402T000000
  909.55 +RDATE:19940401T000000
  909.56 +RDATE:19950331T000000
  909.57 +RDATE:19960315T000000
  909.58 +RDATE:19970321T000000
  909.59 +RDATE:19980320T000000
  909.60 +RDATE:19990402T020000
  909.61 +RDATE:20000414T020000
  909.62 +RDATE:20010409T010000
  909.63 +RDATE:20020329T010000
  909.64 +RDATE:20030328T010000
  909.65 +RDATE:20040407T010000
  909.66 +RDATE:20050401T020000
  909.67 +RDATE:20060331T020000
  909.68 +RDATE:20070330T020000
  909.69 +RDATE:20080328T020000
  909.70 +RDATE:20090327T020000
  909.71 +RDATE:20100326T020000
  909.72 +RDATE:20110401T020000
  909.73 +RDATE:20120330T020000
  909.74 +RDATE:20130329T020000
  909.75 +RDATE:20140328T020000
  909.76 +RDATE:20150327T020000
  909.77 +RDATE:20160401T020000
  909.78 +RDATE:20170331T020000
  909.79 +RDATE:20180330T020000
  909.80 +RDATE:20190329T020000
  909.81 +RDATE:20200327T020000
  909.82 +RDATE:20210326T020000
  909.83 +RDATE:20220401T020000
  909.84 +RDATE:20230331T020000
  909.85 +RDATE:20240329T020000
  909.86 +RDATE:20250328T020000
  909.87 +RDATE:20260327T020000
  909.88 +RDATE:20270326T020000
  909.89 +RDATE:20280331T020000
  909.90 +RDATE:20290330T020000
  909.91 +RDATE:20300329T020000
  909.92 +RDATE:20310328T020000
  909.93 +RDATE:20320326T020000
  909.94 +RDATE:20330401T020000
  909.95 +RDATE:20340331T020000
  909.96 +RDATE:20350330T020000
  909.97 +RDATE:20360328T020000
  909.98 +RDATE:20370327T020000
  909.99 +END:DAYLIGHT
 909.100 +BEGIN:STANDARD
 909.101 +TZOFFSETFROM:+0300
 909.102 +TZOFFSETTO:+0200
 909.103 +TZNAME:IST
 909.104 +DTSTART:19421101T000000
 909.105 +RDATE:19421101T000000
 909.106 +RDATE:19431101T000000
 909.107 +RDATE:19441101T000000
 909.108 +RDATE:19451101T020000
 909.109 +RDATE:19461101T000000
 909.110 +RDATE:19481101T020000
 909.111 +RDATE:19491101T020000
 909.112 +RDATE:19500915T030000
 909.113 +RDATE:19511111T030000
 909.114 +RDATE:19521019T030000
 909.115 +RDATE:19530913T030000
 909.116 +RDATE:19540912T000000
 909.117 +RDATE:19550911T000000
 909.118 +RDATE:19560930T030000
 909.119 +RDATE:19570922T000000
 909.120 +RDATE:19741013T000000
 909.121 +RDATE:19750831T000000
 909.122 +RDATE:19850915T000000
 909.123 +RDATE:19860907T000000
 909.124 +RDATE:19870913T000000
 909.125 +RDATE:19880903T000000
 909.126 +RDATE:19890903T000000
 909.127 +RDATE:19900826T000000
 909.128 +RDATE:19910901T000000
 909.129 +RDATE:19920906T000000
 909.130 +RDATE:19930905T000000
 909.131 +RDATE:19940828T000000
 909.132 +RDATE:19950903T000000
 909.133 +RDATE:19960916T000000
 909.134 +RDATE:19970914T000000
 909.135 +RDATE:19980906T000000
 909.136 +RDATE:19990903T020000
 909.137 +RDATE:20001006T010000
 909.138 +RDATE:20010924T010000
 909.139 +RDATE:20021007T010000
 909.140 +RDATE:20031003T010000
 909.141 +RDATE:20040922T010000
 909.142 +RDATE:20051009T020000
 909.143 +RDATE:20061001T020000
 909.144 +RDATE:20070916T020000
 909.145 +RDATE:20081005T020000
 909.146 +RDATE:20090927T020000
 909.147 +RDATE:20100912T020000
 909.148 +RDATE:20111002T020000
 909.149 +RDATE:20120923T020000
 909.150 +RDATE:20130908T020000
 909.151 +RDATE:20140928T020000
 909.152 +RDATE:20150920T020000
 909.153 +RDATE:20161009T020000
 909.154 +RDATE:20170924T020000
 909.155 +RDATE:20180916T020000
 909.156 +RDATE:20191006T020000
 909.157 +RDATE:20200927T020000
 909.158 +RDATE:20210912T020000
 909.159 +RDATE:20221002T020000
 909.160 +RDATE:20230924T020000
 909.161 +RDATE:20241006T020000
 909.162 +RDATE:20250928T020000
 909.163 +RDATE:20260920T020000
 909.164 +RDATE:20271010T020000
 909.165 +RDATE:20280924T020000
 909.166 +RDATE:20290916T020000
 909.167 +RDATE:20301006T020000
 909.168 +RDATE:20310921T020000
 909.169 +RDATE:20320912T020000
 909.170 +RDATE:20331002T020000
 909.171 +RDATE:20340917T020000
 909.172 +RDATE:20351007T020000
 909.173 +RDATE:20360928T020000
 909.174 +RDATE:20370913T020000
 909.175 +END:STANDARD
 909.176 +BEGIN:DAYLIGHT
 909.177 +TZOFFSETFROM:+0200
 909.178 +TZOFFSETTO:+0400
 909.179 +TZNAME:IDDT
 909.180 +DTSTART:19480523T000000
 909.181 +RDATE:19480523T000000
 909.182 +END:DAYLIGHT
 909.183 +BEGIN:DAYLIGHT
 909.184 +TZOFFSETFROM:+0400
 909.185 +TZOFFSETTO:+0300
 909.186 +TZNAME:IDT
 909.187 +DTSTART:19480901T000000
 909.188 +RDATE:19480901T000000
 909.189 +END:DAYLIGHT
 909.190 +END:VTIMEZONE
 909.191 +END:VCALENDAR
   910.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   910.2 +++ b/src/zoneinfo/Asia/Kabul.ics	Tue Feb 10 18:12:00 2015 +0100
   910.3 @@ -0,0 +1,23 @@
   910.4 +BEGIN:VCALENDAR
   910.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   910.6 +VERSION:2.0
   910.7 +BEGIN:VTIMEZONE
   910.8 +TZID:Asia/Kabul
   910.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Kabul
  910.10 +X-LIC-LOCATION:Asia/Kabul
  910.11 +BEGIN:STANDARD
  910.12 +TZOFFSETFROM:+043648
  910.13 +TZOFFSETTO:+0400
  910.14 +TZNAME:AFT
  910.15 +DTSTART:18900101T000000
  910.16 +RDATE:18900101T000000
  910.17 +END:STANDARD
  910.18 +BEGIN:STANDARD
  910.19 +TZOFFSETFROM:+0400
  910.20 +TZOFFSETTO:+0430
  910.21 +TZNAME:AFT
  910.22 +DTSTART:19450101T000000
  910.23 +RDATE:19450101T000000
  910.24 +END:STANDARD
  910.25 +END:VTIMEZONE
  910.26 +END:VCALENDAR
   911.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   911.2 +++ b/src/zoneinfo/Asia/Kamchatka.ics	Tue Feb 10 18:12:00 2015 +0100
   911.3 @@ -0,0 +1,109 @@
   911.4 +BEGIN:VCALENDAR
   911.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   911.6 +VERSION:2.0
   911.7 +BEGIN:VTIMEZONE
   911.8 +TZID:Asia/Kamchatka
   911.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Kamchatka
  911.10 +X-LIC-LOCATION:Asia/Kamchatka
  911.11 +BEGIN:STANDARD
  911.12 +TZOFFSETFROM:+103436
  911.13 +TZOFFSETTO:+1100
  911.14 +TZNAME:PETT
  911.15 +DTSTART:19221110T000000
  911.16 +RDATE:19221110T000000
  911.17 +END:STANDARD
  911.18 +BEGIN:STANDARD
  911.19 +TZOFFSETFROM:+1100
  911.20 +TZOFFSETTO:+1200
  911.21 +TZNAME:PETT
  911.22 +DTSTART:19300621T000000
  911.23 +RDATE:19300621T000000
  911.24 +RDATE:19920119T020000
  911.25 +RDATE:20110327T020000
  911.26 +END:STANDARD
  911.27 +BEGIN:DAYLIGHT
  911.28 +TZOFFSETFROM:+1200
  911.29 +TZOFFSETTO:+1300
  911.30 +TZNAME:PETST
  911.31 +DTSTART:19810401T000000
  911.32 +RDATE:19810401T000000
  911.33 +RDATE:19820401T000000
  911.34 +RDATE:19830401T000000
  911.35 +RDATE:19840401T000000
  911.36 +RDATE:19850331T020000
  911.37 +RDATE:19860330T020000
  911.38 +RDATE:19870329T020000
  911.39 +RDATE:19880327T020000
  911.40 +RDATE:19890326T020000
  911.41 +RDATE:19900325T020000
  911.42 +RDATE:19920328T230000
  911.43 +RDATE:19930328T020000
  911.44 +RDATE:19940327T020000
  911.45 +RDATE:19950326T020000
  911.46 +RDATE:19960331T020000
  911.47 +RDATE:19970330T020000
  911.48 +RDATE:19980329T020000
  911.49 +RDATE:19990328T020000
  911.50 +RDATE:20000326T020000
  911.51 +RDATE:20010325T020000
  911.52 +RDATE:20020331T020000
  911.53 +RDATE:20030330T020000
  911.54 +RDATE:20040328T020000
  911.55 +RDATE:20050327T020000
  911.56 +RDATE:20060326T020000
  911.57 +RDATE:20070325T020000
  911.58 +RDATE:20080330T020000
  911.59 +RDATE:20090329T020000
  911.60 +END:DAYLIGHT
  911.61 +BEGIN:STANDARD
  911.62 +TZOFFSETFROM:+1300
  911.63 +TZOFFSETTO:+1200
  911.64 +TZNAME:PETT
  911.65 +DTSTART:19811001T000000
  911.66 +RDATE:19811001T000000
  911.67 +RDATE:19821001T000000
  911.68 +RDATE:19831001T000000
  911.69 +RDATE:19840930T030000
  911.70 +RDATE:19850929T030000
  911.71 +RDATE:19860928T030000
  911.72 +RDATE:19870927T030000
  911.73 +RDATE:19880925T030000
  911.74 +RDATE:19890924T030000
  911.75 +RDATE:19900930T030000
  911.76 +RDATE:19920926T230000
  911.77 +RDATE:19930926T030000
  911.78 +RDATE:19940925T030000
  911.79 +RDATE:19950924T030000
  911.80 +RDATE:19961027T030000
  911.81 +RDATE:19971026T030000
  911.82 +RDATE:19981025T030000
  911.83 +RDATE:19991031T030000
  911.84 +RDATE:20001029T030000
  911.85 +RDATE:20011028T030000
  911.86 +RDATE:20021027T030000
  911.87 +RDATE:20031026T030000
  911.88 +RDATE:20041031T030000
  911.89 +RDATE:20051030T030000
  911.90 +RDATE:20061029T030000
  911.91 +RDATE:20071028T030000
  911.92 +RDATE:20081026T030000
  911.93 +RDATE:20091025T030000
  911.94 +END:STANDARD
  911.95 +BEGIN:DAYLIGHT
  911.96 +TZOFFSETFROM:+1200
  911.97 +TZOFFSETTO:+1200
  911.98 +TZNAME:PETST
  911.99 +DTSTART:19910331T020000
 911.100 +RDATE:19910331T020000
 911.101 +RDATE:20100328T020000
 911.102 +END:DAYLIGHT
 911.103 +BEGIN:STANDARD
 911.104 +TZOFFSETFROM:+1200
 911.105 +TZOFFSETTO:+1100
 911.106 +TZNAME:PETT
 911.107 +DTSTART:19910929T030000
 911.108 +RDATE:19910929T030000
 911.109 +RDATE:20101031T030000
 911.110 +END:STANDARD
 911.111 +END:VTIMEZONE
 911.112 +END:VCALENDAR
   912.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   912.2 +++ b/src/zoneinfo/Asia/Karachi.ics	Tue Feb 10 18:12:00 2015 +0100
   912.3 @@ -0,0 +1,62 @@
   912.4 +BEGIN:VCALENDAR
   912.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   912.6 +VERSION:2.0
   912.7 +BEGIN:VTIMEZONE
   912.8 +TZID:Asia/Karachi
   912.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Karachi
  912.10 +X-LIC-LOCATION:Asia/Karachi
  912.11 +BEGIN:STANDARD
  912.12 +TZOFFSETFROM:+042812
  912.13 +TZOFFSETTO:+0530
  912.14 +TZNAME:IST
  912.15 +DTSTART:19070101T000000
  912.16 +RDATE:19070101T000000
  912.17 +END:STANDARD
  912.18 +BEGIN:DAYLIGHT
  912.19 +TZOFFSETFROM:+0530
  912.20 +TZOFFSETTO:+0630
  912.21 +TZNAME:IST
  912.22 +DTSTART:19420901T000000
  912.23 +RDATE:19420901T000000
  912.24 +END:DAYLIGHT
  912.25 +BEGIN:STANDARD
  912.26 +TZOFFSETFROM:+0630
  912.27 +TZOFFSETTO:+0530
  912.28 +TZNAME:IST
  912.29 +DTSTART:19451015T000000
  912.30 +RDATE:19451015T000000
  912.31 +END:STANDARD
  912.32 +BEGIN:STANDARD
  912.33 +TZOFFSETFROM:+0530
  912.34 +TZOFFSETTO:+0500
  912.35 +TZNAME:KART
  912.36 +DTSTART:19510930T000000
  912.37 +RDATE:19510930T000000
  912.38 +END:STANDARD
  912.39 +BEGIN:STANDARD
  912.40 +TZOFFSETFROM:+0500
  912.41 +TZOFFSETTO:+0500
  912.42 +TZNAME:PKT
  912.43 +DTSTART:19710326T000000
  912.44 +RDATE:19710326T000000
  912.45 +END:STANDARD
  912.46 +BEGIN:DAYLIGHT
  912.47 +TZOFFSETFROM:+0500
  912.48 +TZOFFSETTO:+0600
  912.49 +TZNAME:PKST
  912.50 +DTSTART:20020407T000100
  912.51 +RDATE:20020407T000100
  912.52 +RDATE:20080601T000000
  912.53 +RDATE:20090415T000000
  912.54 +END:DAYLIGHT
  912.55 +BEGIN:STANDARD
  912.56 +TZOFFSETFROM:+0600
  912.57 +TZOFFSETTO:+0500
  912.58 +TZNAME:PKT
  912.59 +DTSTART:20021006T000100
  912.60 +RDATE:20021006T000100
  912.61 +RDATE:20081101T000000
  912.62 +RDATE:20091101T000000
  912.63 +END:STANDARD
  912.64 +END:VTIMEZONE
  912.65 +END:VCALENDAR
   913.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   913.2 +++ b/src/zoneinfo/Asia/Kashgar.ics	Tue Feb 10 18:12:00 2015 +0100
   913.3 @@ -0,0 +1,54 @@
   913.4 +BEGIN:VCALENDAR
   913.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   913.6 +VERSION:2.0
   913.7 +BEGIN:VTIMEZONE
   913.8 +TZID:Asia/Kashgar
   913.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Kashgar
  913.10 +X-LIC-LOCATION:Asia/Kashgar
  913.11 +BEGIN:STANDARD
  913.12 +TZOFFSETFROM:+050356
  913.13 +TZOFFSETTO:+0530
  913.14 +TZNAME:KAST
  913.15 +DTSTART:19280101T000000
  913.16 +RDATE:19280101T000000
  913.17 +END:STANDARD
  913.18 +BEGIN:STANDARD
  913.19 +TZOFFSETFROM:+0530
  913.20 +TZOFFSETTO:+0500
  913.21 +TZNAME:KAST
  913.22 +DTSTART:19400101T000000
  913.23 +RDATE:19400101T000000
  913.24 +END:STANDARD
  913.25 +BEGIN:STANDARD
  913.26 +TZOFFSETFROM:+0500
  913.27 +TZOFFSETTO:+0800
  913.28 +TZNAME:CST
  913.29 +DTSTART:19800501T000000
  913.30 +RDATE:19800501T000000
  913.31 +END:STANDARD
  913.32 +BEGIN:DAYLIGHT
  913.33 +TZOFFSETFROM:+0800
  913.34 +TZOFFSETTO:+0900
  913.35 +TZNAME:CDT
  913.36 +DTSTART:19860504T000000
  913.37 +RDATE:19860504T000000
  913.38 +RDATE:19870412T000000
  913.39 +RDATE:19880410T000000
  913.40 +RDATE:19890416T000000
  913.41 +RDATE:19900415T000000
  913.42 +RDATE:19910414T000000
  913.43 +END:DAYLIGHT
  913.44 +BEGIN:STANDARD
  913.45 +TZOFFSETFROM:+0900
  913.46 +TZOFFSETTO:+0800
  913.47 +TZNAME:CST
  913.48 +DTSTART:19860914T000000
  913.49 +RDATE:19860914T000000
  913.50 +RDATE:19870913T000000
  913.51 +RDATE:19880911T000000
  913.52 +RDATE:19890917T000000
  913.53 +RDATE:19900916T000000
  913.54 +RDATE:19910915T000000
  913.55 +END:STANDARD
  913.56 +END:VTIMEZONE
  913.57 +END:VCALENDAR
   914.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   914.2 +++ b/src/zoneinfo/Asia/Kathmandu.ics	Tue Feb 10 18:12:00 2015 +0100
   914.3 @@ -0,0 +1,23 @@
   914.4 +BEGIN:VCALENDAR
   914.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   914.6 +VERSION:2.0
   914.7 +BEGIN:VTIMEZONE
   914.8 +TZID:Asia/Kathmandu
   914.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Kathmandu
  914.10 +X-LIC-LOCATION:Asia/Kathmandu
  914.11 +BEGIN:STANDARD
  914.12 +TZOFFSETFROM:+054116
  914.13 +TZOFFSETTO:+0530
  914.14 +TZNAME:IST
  914.15 +DTSTART:19200101T000000
  914.16 +RDATE:19200101T000000
  914.17 +END:STANDARD
  914.18 +BEGIN:STANDARD
  914.19 +TZOFFSETFROM:+0530
  914.20 +TZOFFSETTO:+0545
  914.21 +TZNAME:NPT
  914.22 +DTSTART:19860101T000000
  914.23 +RDATE:19860101T000000
  914.24 +END:STANDARD
  914.25 +END:VTIMEZONE
  914.26 +END:VCALENDAR
   915.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   915.2 +++ b/src/zoneinfo/Asia/Kolkata.ics	Tue Feb 10 18:12:00 2015 +0100
   915.3 @@ -0,0 +1,38 @@
   915.4 +BEGIN:VCALENDAR
   915.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   915.6 +VERSION:2.0
   915.7 +BEGIN:VTIMEZONE
   915.8 +TZID:Asia/Kolkata
   915.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Kolkata
  915.10 +X-LIC-LOCATION:Asia/Kolkata
  915.11 +BEGIN:STANDARD
  915.12 +TZOFFSETFROM:+055328
  915.13 +TZOFFSETTO:+055320
  915.14 +TZNAME:HMT
  915.15 +DTSTART:18800101T000000
  915.16 +RDATE:18800101T000000
  915.17 +END:STANDARD
  915.18 +BEGIN:STANDARD
  915.19 +TZOFFSETFROM:+055320
  915.20 +TZOFFSETTO:+0630
  915.21 +TZNAME:BURT
  915.22 +DTSTART:19411001T000000
  915.23 +RDATE:19411001T000000
  915.24 +END:STANDARD
  915.25 +BEGIN:STANDARD
  915.26 +TZOFFSETFROM:+0630
  915.27 +TZOFFSETTO:+0530
  915.28 +TZNAME:IST
  915.29 +DTSTART:19420515T000000
  915.30 +RDATE:19420515T000000
  915.31 +RDATE:19451015T000000
  915.32 +END:STANDARD
  915.33 +BEGIN:DAYLIGHT
  915.34 +TZOFFSETFROM:+0530
  915.35 +TZOFFSETTO:+0630
  915.36 +TZNAME:IST
  915.37 +DTSTART:19420901T000000
  915.38 +RDATE:19420901T000000
  915.39 +END:DAYLIGHT
  915.40 +END:VTIMEZONE
  915.41 +END:VCALENDAR
   916.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   916.2 +++ b/src/zoneinfo/Asia/Krasnoyarsk.ics	Tue Feb 10 18:12:00 2015 +0100
   916.3 @@ -0,0 +1,115 @@
   916.4 +BEGIN:VCALENDAR
   916.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   916.6 +VERSION:2.0
   916.7 +BEGIN:VTIMEZONE
   916.8 +TZID:Asia/Krasnoyarsk
   916.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Krasnoyarsk
  916.10 +X-LIC-LOCATION:Asia/Krasnoyarsk
  916.11 +BEGIN:STANDARD
  916.12 +TZOFFSETFROM:+061120
  916.13 +TZOFFSETTO:+0600
  916.14 +TZNAME:KRAT
  916.15 +DTSTART:19200106T000000
  916.16 +RDATE:19200106T000000
  916.17 +END:STANDARD
  916.18 +BEGIN:STANDARD
  916.19 +TZOFFSETFROM:+0600
  916.20 +TZOFFSETTO:+0700
  916.21 +TZNAME:KRAT
  916.22 +DTSTART:19300621T000000
  916.23 +RDATE:19300621T000000
  916.24 +RDATE:19920119T020000
  916.25 +END:STANDARD
  916.26 +BEGIN:DAYLIGHT
  916.27 +TZOFFSETFROM:+0700
  916.28 +TZOFFSETTO:+0800
  916.29 +TZNAME:KRAST
  916.30 +DTSTART:19810401T000000
  916.31 +RDATE:19810401T000000
  916.32 +RDATE:19820401T000000
  916.33 +RDATE:19830401T000000
  916.34 +RDATE:19840401T000000
  916.35 +RDATE:19850331T020000
  916.36 +RDATE:19860330T020000
  916.37 +RDATE:19870329T020000
  916.38 +RDATE:19880327T020000
  916.39 +RDATE:19890326T020000
  916.40 +RDATE:19900325T020000
  916.41 +RDATE:19920328T230000
  916.42 +RDATE:19930328T020000
  916.43 +RDATE:19940327T020000
  916.44 +RDATE:19950326T020000
  916.45 +RDATE:19960331T020000
  916.46 +RDATE:19970330T020000
  916.47 +RDATE:19980329T020000
  916.48 +RDATE:19990328T020000
  916.49 +RDATE:20000326T020000
  916.50 +RDATE:20010325T020000
  916.51 +RDATE:20020331T020000
  916.52 +RDATE:20030330T020000
  916.53 +RDATE:20040328T020000
  916.54 +RDATE:20050327T020000
  916.55 +RDATE:20060326T020000
  916.56 +RDATE:20070325T020000
  916.57 +RDATE:20080330T020000
  916.58 +RDATE:20090329T020000
  916.59 +RDATE:20100328T020000
  916.60 +END:DAYLIGHT
  916.61 +BEGIN:STANDARD
  916.62 +TZOFFSETFROM:+0800
  916.63 +TZOFFSETTO:+0700
  916.64 +TZNAME:KRAT
  916.65 +DTSTART:19811001T000000
  916.66 +RDATE:19811001T000000
  916.67 +RDATE:19821001T000000
  916.68 +RDATE:19831001T000000
  916.69 +RDATE:19840930T030000
  916.70 +RDATE:19850929T030000
  916.71 +RDATE:19860928T030000
  916.72 +RDATE:19870927T030000
  916.73 +RDATE:19880925T030000
  916.74 +RDATE:19890924T030000
  916.75 +RDATE:19900930T030000
  916.76 +RDATE:19920926T230000
  916.77 +RDATE:19930926T030000
  916.78 +RDATE:19940925T030000
  916.79 +RDATE:19950924T030000
  916.80 +RDATE:19961027T030000
  916.81 +RDATE:19971026T030000
  916.82 +RDATE:19981025T030000
  916.83 +RDATE:19991031T030000
  916.84 +RDATE:20001029T030000
  916.85 +RDATE:20011028T030000
  916.86 +RDATE:20021027T030000
  916.87 +RDATE:20031026T030000
  916.88 +RDATE:20041031T030000
  916.89 +RDATE:20051030T030000
  916.90 +RDATE:20061029T030000
  916.91 +RDATE:20071028T030000
  916.92 +RDATE:20081026T030000
  916.93 +RDATE:20091025T030000
  916.94 +RDATE:20101031T030000
  916.95 +END:STANDARD
  916.96 +BEGIN:DAYLIGHT
  916.97 +TZOFFSETFROM:+0700
  916.98 +TZOFFSETTO:+0700
  916.99 +TZNAME:KRAST
 916.100 +DTSTART:19910331T020000
 916.101 +RDATE:19910331T020000
 916.102 +END:DAYLIGHT
 916.103 +BEGIN:STANDARD
 916.104 +TZOFFSETFROM:+0700
 916.105 +TZOFFSETTO:+0600
 916.106 +TZNAME:KRAT
 916.107 +DTSTART:19910929T030000
 916.108 +RDATE:19910929T030000
 916.109 +END:STANDARD
 916.110 +BEGIN:STANDARD
 916.111 +TZOFFSETFROM:+0700
 916.112 +TZOFFSETTO:+0800
 916.113 +TZNAME:KRAT
 916.114 +DTSTART:20110327T020000
 916.115 +RDATE:20110327T020000
 916.116 +END:STANDARD
 916.117 +END:VTIMEZONE
 916.118 +END:VCALENDAR
   917.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   917.2 +++ b/src/zoneinfo/Asia/Kuala_Lumpur.ics	Tue Feb 10 18:12:00 2015 +0100
   917.3 @@ -0,0 +1,65 @@
   917.4 +BEGIN:VCALENDAR
   917.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   917.6 +VERSION:2.0
   917.7 +BEGIN:VTIMEZONE
   917.8 +TZID:Asia/Kuala_Lumpur
   917.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Kuala_Lumpur
  917.10 +X-LIC-LOCATION:Asia/Kuala_Lumpur
  917.11 +BEGIN:STANDARD
  917.12 +TZOFFSETFROM:+064646
  917.13 +TZOFFSETTO:+065525
  917.14 +TZNAME:SMT
  917.15 +DTSTART:19010101T000000
  917.16 +RDATE:19010101T000000
  917.17 +END:STANDARD
  917.18 +BEGIN:STANDARD
  917.19 +TZOFFSETFROM:+065525
  917.20 +TZOFFSETTO:+0700
  917.21 +TZNAME:MALT
  917.22 +DTSTART:19050601T000000
  917.23 +RDATE:19050601T000000
  917.24 +END:STANDARD
  917.25 +BEGIN:DAYLIGHT
  917.26 +TZOFFSETFROM:+0700
  917.27 +TZOFFSETTO:+0720
  917.28 +TZNAME:MALST
  917.29 +DTSTART:19330101T000000
  917.30 +RDATE:19330101T000000
  917.31 +END:DAYLIGHT
  917.32 +BEGIN:STANDARD
  917.33 +TZOFFSETFROM:+0720
  917.34 +TZOFFSETTO:+0720
  917.35 +TZNAME:MALT
  917.36 +DTSTART:19360101T000000
  917.37 +RDATE:19360101T000000
  917.38 +END:STANDARD
  917.39 +BEGIN:STANDARD
  917.40 +TZOFFSETFROM:+0720
  917.41 +TZOFFSETTO:+0730
  917.42 +TZNAME:MALT
  917.43 +DTSTART:19410901T000000
  917.44 +RDATE:19410901T000000
  917.45 +END:STANDARD
  917.46 +BEGIN:STANDARD
  917.47 +TZOFFSETFROM:+0730
  917.48 +TZOFFSETTO:+0900
  917.49 +TZNAME:JST
  917.50 +DTSTART:19420216T000000
  917.51 +RDATE:19420216T000000
  917.52 +END:STANDARD
  917.53 +BEGIN:STANDARD
  917.54 +TZOFFSETFROM:+0900
  917.55 +TZOFFSETTO:+0730
  917.56 +TZNAME:MALT
  917.57 +DTSTART:19450912T000000
  917.58 +RDATE:19450912T000000
  917.59 +END:STANDARD
  917.60 +BEGIN:STANDARD
  917.61 +TZOFFSETFROM:+0730
  917.62 +TZOFFSETTO:+0800
  917.63 +TZNAME:MYT
  917.64 +DTSTART:19820101T000000
  917.65 +RDATE:19820101T000000
  917.66 +END:STANDARD
  917.67 +END:VTIMEZONE
  917.68 +END:VCALENDAR
   918.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   918.2 +++ b/src/zoneinfo/Asia/Kuching.ics	Tue Feb 10 18:12:00 2015 +0100
   918.3 @@ -0,0 +1,70 @@
   918.4 +BEGIN:VCALENDAR
   918.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   918.6 +VERSION:2.0
   918.7 +BEGIN:VTIMEZONE
   918.8 +TZID:Asia/Kuching
   918.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Kuching
  918.10 +X-LIC-LOCATION:Asia/Kuching
  918.11 +BEGIN:STANDARD
  918.12 +TZOFFSETFROM:+072120
  918.13 +TZOFFSETTO:+0730
  918.14 +TZNAME:BORT
  918.15 +DTSTART:19260301T000000
  918.16 +RDATE:19260301T000000
  918.17 +END:STANDARD
  918.18 +BEGIN:STANDARD
  918.19 +TZOFFSETFROM:+0730
  918.20 +TZOFFSETTO:+0800
  918.21 +TZNAME:BORT
  918.22 +DTSTART:19330101T000000
  918.23 +RDATE:19330101T000000
  918.24 +END:STANDARD
  918.25 +BEGIN:DAYLIGHT
  918.26 +TZOFFSETFROM:+0800
  918.27 +TZOFFSETTO:+0820
  918.28 +TZNAME:BORTST
  918.29 +DTSTART:19350914T000000
  918.30 +RDATE:19350914T000000
  918.31 +RDATE:19360914T000000
  918.32 +RDATE:19370914T000000
  918.33 +RDATE:19380914T000000
  918.34 +RDATE:19390914T000000
  918.35 +RDATE:19400914T000000
  918.36 +RDATE:19410914T000000
  918.37 +END:DAYLIGHT
  918.38 +BEGIN:STANDARD
  918.39 +TZOFFSETFROM:+0820
  918.40 +TZOFFSETTO:+0800
  918.41 +TZNAME:BORT
  918.42 +DTSTART:19351214T000000
  918.43 +RDATE:19351214T000000
  918.44 +RDATE:19361214T000000
  918.45 +RDATE:19371214T000000
  918.46 +RDATE:19381214T000000
  918.47 +RDATE:19391214T000000
  918.48 +RDATE:19401214T000000
  918.49 +RDATE:19411214T000000
  918.50 +END:STANDARD
  918.51 +BEGIN:STANDARD
  918.52 +TZOFFSETFROM:+0800
  918.53 +TZOFFSETTO:+0900
  918.54 +TZNAME:JST
  918.55 +DTSTART:19420216T000000
  918.56 +RDATE:19420216T000000
  918.57 +END:STANDARD
  918.58 +BEGIN:STANDARD
  918.59 +TZOFFSETFROM:+0900
  918.60 +TZOFFSETTO:+0800
  918.61 +TZNAME:BORT
  918.62 +DTSTART:19450912T000000
  918.63 +RDATE:19450912T000000
  918.64 +END:STANDARD
  918.65 +BEGIN:STANDARD
  918.66 +TZOFFSETFROM:+0800
  918.67 +TZOFFSETTO:+0800
  918.68 +TZNAME:MYT
  918.69 +DTSTART:19820101T000000
  918.70 +RDATE:19820101T000000
  918.71 +END:STANDARD
  918.72 +END:VTIMEZONE
  918.73 +END:VCALENDAR
   919.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   919.2 +++ b/src/zoneinfo/Asia/Kuwait.ics	Tue Feb 10 18:12:00 2015 +0100
   919.3 @@ -0,0 +1,16 @@
   919.4 +BEGIN:VCALENDAR
   919.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   919.6 +VERSION:2.0
   919.7 +BEGIN:VTIMEZONE
   919.8 +TZID:Asia/Kuwait
   919.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Kuwait
  919.10 +X-LIC-LOCATION:Asia/Kuwait
  919.11 +BEGIN:STANDARD
  919.12 +TZOFFSETFROM:+031156
  919.13 +TZOFFSETTO:+0300
  919.14 +TZNAME:AST
  919.15 +DTSTART:19500101T000000
  919.16 +RDATE:19500101T000000
  919.17 +END:STANDARD
  919.18 +END:VTIMEZONE
  919.19 +END:VCALENDAR
   920.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   920.2 +++ b/src/zoneinfo/Asia/Macau.ics	Tue Feb 10 18:12:00 2015 +0100
   920.3 @@ -0,0 +1,75 @@
   920.4 +BEGIN:VCALENDAR
   920.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   920.6 +VERSION:2.0
   920.7 +BEGIN:VTIMEZONE
   920.8 +TZID:Asia/Macau
   920.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Macau
  920.10 +X-LIC-LOCATION:Asia/Macau
  920.11 +BEGIN:STANDARD
  920.12 +TZOFFSETFROM:+073420
  920.13 +TZOFFSETTO:+0800
  920.14 +TZNAME:MOT
  920.15 +DTSTART:19120101T000000
  920.16 +RDATE:19120101T000000
  920.17 +END:STANDARD
  920.18 +BEGIN:DAYLIGHT
  920.19 +TZOFFSETFROM:+0800
  920.20 +TZOFFSETTO:+0900
  920.21 +TZNAME:MOST
  920.22 +DTSTART:19610319T033000
  920.23 +RDATE:19610319T033000
  920.24 +RDATE:19620318T033000
  920.25 +RDATE:19630317T000000
  920.26 +RDATE:19640322T033000
  920.27 +RDATE:19650321T000000
  920.28 +RDATE:19660417T033000
  920.29 +RDATE:19670416T033000
  920.30 +RDATE:19680421T033000
  920.31 +RDATE:19690420T033000
  920.32 +RDATE:19700419T033000
  920.33 +RDATE:19710418T033000
  920.34 +RDATE:19720416T000000
  920.35 +RDATE:19730415T000000
  920.36 +RDATE:19740421T000000
  920.37 +RDATE:19750420T033000
  920.38 +RDATE:19760418T033000
  920.39 +RDATE:19770417T033000
  920.40 +RDATE:19780416T000000
  920.41 +RDATE:19790415T000000
  920.42 +RDATE:19800420T000000
  920.43 +END:DAYLIGHT
  920.44 +BEGIN:STANDARD
  920.45 +TZOFFSETFROM:+0900
  920.46 +TZOFFSETTO:+0800
  920.47 +TZNAME:MOT
  920.48 +DTSTART:19611105T033000
  920.49 +RDATE:19611105T033000
  920.50 +RDATE:19621104T033000
  920.51 +RDATE:19631103T033000
  920.52 +RDATE:19641101T033000
  920.53 +RDATE:19651031T000000
  920.54 +RDATE:19661016T033000
  920.55 +RDATE:19671022T033000
  920.56 +RDATE:19681020T033000
  920.57 +RDATE:19691019T033000
  920.58 +RDATE:19701018T033000
  920.59 +RDATE:19711017T033000
  920.60 +RDATE:19721015T000000
  920.61 +RDATE:19731021T000000
  920.62 +RDATE:19741020T033000
  920.63 +RDATE:19751019T033000
  920.64 +RDATE:19761017T033000
  920.65 +RDATE:19771016T033000
  920.66 +RDATE:19781015T000000
  920.67 +RDATE:19791021T000000
  920.68 +RDATE:19801019T000000
  920.69 +END:STANDARD
  920.70 +BEGIN:STANDARD
  920.71 +TZOFFSETFROM:+0800
  920.72 +TZOFFSETTO:+0800
  920.73 +TZNAME:CST
  920.74 +DTSTART:19991220T000000
  920.75 +RDATE:19991220T000000
  920.76 +END:STANDARD
  920.77 +END:VTIMEZONE
  920.78 +END:VCALENDAR
   921.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   921.2 +++ b/src/zoneinfo/Asia/Magadan.ics	Tue Feb 10 18:12:00 2015 +0100
   921.3 @@ -0,0 +1,115 @@
   921.4 +BEGIN:VCALENDAR
   921.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   921.6 +VERSION:2.0
   921.7 +BEGIN:VTIMEZONE
   921.8 +TZID:Asia/Magadan
   921.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Magadan
  921.10 +X-LIC-LOCATION:Asia/Magadan
  921.11 +BEGIN:STANDARD
  921.12 +TZOFFSETFROM:+100312
  921.13 +TZOFFSETTO:+1000
  921.14 +TZNAME:MAGT
  921.15 +DTSTART:19240502T000000
  921.16 +RDATE:19240502T000000
  921.17 +END:STANDARD
  921.18 +BEGIN:STANDARD
  921.19 +TZOFFSETFROM:+1000
  921.20 +TZOFFSETTO:+1100
  921.21 +TZNAME:MAGT
  921.22 +DTSTART:19300621T000000
  921.23 +RDATE:19300621T000000
  921.24 +RDATE:19920119T020000
  921.25 +END:STANDARD
  921.26 +BEGIN:DAYLIGHT
  921.27 +TZOFFSETFROM:+1100
  921.28 +TZOFFSETTO:+1200
  921.29 +TZNAME:MAGST
  921.30 +DTSTART:19810401T000000
  921.31 +RDATE:19810401T000000
  921.32 +RDATE:19820401T000000
  921.33 +RDATE:19830401T000000
  921.34 +RDATE:19840401T000000
  921.35 +RDATE:19850331T020000
  921.36 +RDATE:19860330T020000
  921.37 +RDATE:19870329T020000
  921.38 +RDATE:19880327T020000
  921.39 +RDATE:19890326T020000
  921.40 +RDATE:19900325T020000
  921.41 +RDATE:19920328T230000
  921.42 +RDATE:19930328T020000
  921.43 +RDATE:19940327T020000
  921.44 +RDATE:19950326T020000
  921.45 +RDATE:19960331T020000
  921.46 +RDATE:19970330T020000
  921.47 +RDATE:19980329T020000
  921.48 +RDATE:19990328T020000
  921.49 +RDATE:20000326T020000
  921.50 +RDATE:20010325T020000
  921.51 +RDATE:20020331T020000
  921.52 +RDATE:20030330T020000
  921.53 +RDATE:20040328T020000
  921.54 +RDATE:20050327T020000
  921.55 +RDATE:20060326T020000
  921.56 +RDATE:20070325T020000
  921.57 +RDATE:20080330T020000
  921.58 +RDATE:20090329T020000
  921.59 +RDATE:20100328T020000
  921.60 +END:DAYLIGHT
  921.61 +BEGIN:STANDARD
  921.62 +TZOFFSETFROM:+1200
  921.63 +TZOFFSETTO:+1100
  921.64 +TZNAME:MAGT
  921.65 +DTSTART:19811001T000000
  921.66 +RDATE:19811001T000000
  921.67 +RDATE:19821001T000000
  921.68 +RDATE:19831001T000000
  921.69 +RDATE:19840930T030000
  921.70 +RDATE:19850929T030000
  921.71 +RDATE:19860928T030000
  921.72 +RDATE:19870927T030000
  921.73 +RDATE:19880925T030000
  921.74 +RDATE:19890924T030000
  921.75 +RDATE:19900930T030000
  921.76 +RDATE:19920926T230000
  921.77 +RDATE:19930926T030000
  921.78 +RDATE:19940925T030000
  921.79 +RDATE:19950924T030000
  921.80 +RDATE:19961027T030000
  921.81 +RDATE:19971026T030000
  921.82 +RDATE:19981025T030000
  921.83 +RDATE:19991031T030000
  921.84 +RDATE:20001029T030000
  921.85 +RDATE:20011028T030000
  921.86 +RDATE:20021027T030000
  921.87 +RDATE:20031026T030000
  921.88 +RDATE:20041031T030000
  921.89 +RDATE:20051030T030000
  921.90 +RDATE:20061029T030000
  921.91 +RDATE:20071028T030000
  921.92 +RDATE:20081026T030000
  921.93 +RDATE:20091025T030000
  921.94 +RDATE:20101031T030000
  921.95 +END:STANDARD
  921.96 +BEGIN:DAYLIGHT
  921.97 +TZOFFSETFROM:+1100
  921.98 +TZOFFSETTO:+1100
  921.99 +TZNAME:MAGST
 921.100 +DTSTART:19910331T020000
 921.101 +RDATE:19910331T020000
 921.102 +END:DAYLIGHT
 921.103 +BEGIN:STANDARD
 921.104 +TZOFFSETFROM:+1100
 921.105 +TZOFFSETTO:+1000
 921.106 +TZNAME:MAGT
 921.107 +DTSTART:19910929T030000
 921.108 +RDATE:19910929T030000
 921.109 +END:STANDARD
 921.110 +BEGIN:STANDARD
 921.111 +TZOFFSETFROM:+1100
 921.112 +TZOFFSETTO:+1200
 921.113 +TZNAME:MAGT
 921.114 +DTSTART:20110327T020000
 921.115 +RDATE:20110327T020000
 921.116 +END:STANDARD
 921.117 +END:VTIMEZONE
 921.118 +END:VCALENDAR
   922.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   922.2 +++ b/src/zoneinfo/Asia/Makassar.ics	Tue Feb 10 18:12:00 2015 +0100
   922.3 @@ -0,0 +1,37 @@
   922.4 +BEGIN:VCALENDAR
   922.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   922.6 +VERSION:2.0
   922.7 +BEGIN:VTIMEZONE
   922.8 +TZID:Asia/Makassar
   922.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Makassar
  922.10 +X-LIC-LOCATION:Asia/Makassar
  922.11 +BEGIN:STANDARD
  922.12 +TZOFFSETFROM:+075736
  922.13 +TZOFFSETTO:+075736
  922.14 +TZNAME:MMT
  922.15 +DTSTART:19200101T000000
  922.16 +RDATE:19200101T000000
  922.17 +END:STANDARD
  922.18 +BEGIN:STANDARD
  922.19 +TZOFFSETFROM:+075736
  922.20 +TZOFFSETTO:+0800
  922.21 +TZNAME:CIT
  922.22 +DTSTART:19321101T000000
  922.23 +RDATE:19321101T000000
  922.24 +END:STANDARD
  922.25 +BEGIN:STANDARD
  922.26 +TZOFFSETFROM:+0800
  922.27 +TZOFFSETTO:+0900
  922.28 +TZNAME:JST
  922.29 +DTSTART:19420209T000000
  922.30 +RDATE:19420209T000000
  922.31 +END:STANDARD
  922.32 +BEGIN:STANDARD
  922.33 +TZOFFSETFROM:+0900
  922.34 +TZOFFSETTO:+0800
  922.35 +TZNAME:CIT
  922.36 +DTSTART:19450923T000000
  922.37 +RDATE:19450923T000000
  922.38 +END:STANDARD
  922.39 +END:VTIMEZONE
  922.40 +END:VCALENDAR
   923.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   923.2 +++ b/src/zoneinfo/Asia/Manila.ics	Tue Feb 10 18:12:00 2015 +0100
   923.3 @@ -0,0 +1,49 @@
   923.4 +BEGIN:VCALENDAR
   923.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   923.6 +VERSION:2.0
   923.7 +BEGIN:VTIMEZONE
   923.8 +TZID:Asia/Manila
   923.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Manila
  923.10 +X-LIC-LOCATION:Asia/Manila
  923.11 +BEGIN:STANDARD
  923.12 +TZOFFSETFROM:-1556
  923.13 +TZOFFSETTO:+0804
  923.14 +TZNAME:LMT
  923.15 +DTSTART:18441231T000000
  923.16 +RDATE:18441231T000000
  923.17 +END:STANDARD
  923.18 +BEGIN:STANDARD
  923.19 +TZOFFSETFROM:+0804
  923.20 +TZOFFSETTO:+0800
  923.21 +TZNAME:PHT
  923.22 +DTSTART:18990511T000000
  923.23 +RDATE:18990511T000000
  923.24 +END:STANDARD
  923.25 +BEGIN:DAYLIGHT
  923.26 +TZOFFSETFROM:+0800
  923.27 +TZOFFSETTO:+0900
  923.28 +TZNAME:PHST
  923.29 +DTSTART:19361101T000000
  923.30 +RDATE:19361101T000000
  923.31 +RDATE:19540412T000000
  923.32 +RDATE:19780322T000000
  923.33 +END:DAYLIGHT
  923.34 +BEGIN:STANDARD
  923.35 +TZOFFSETFROM:+0900
  923.36 +TZOFFSETTO:+0800
  923.37 +TZNAME:PHT
  923.38 +DTSTART:19370201T000000
  923.39 +RDATE:19370201T000000
  923.40 +RDATE:19441101T000000
  923.41 +RDATE:19540701T000000
  923.42 +RDATE:19780921T000000
  923.43 +END:STANDARD
  923.44 +BEGIN:STANDARD
  923.45 +TZOFFSETFROM:+0800
  923.46 +TZOFFSETTO:+0900
  923.47 +TZNAME:JST
  923.48 +DTSTART:19420501T000000
  923.49 +RDATE:19420501T000000
  923.50 +END:STANDARD
  923.51 +END:VTIMEZONE
  923.52 +END:VCALENDAR
   924.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   924.2 +++ b/src/zoneinfo/Asia/Muscat.ics	Tue Feb 10 18:12:00 2015 +0100
   924.3 @@ -0,0 +1,16 @@
   924.4 +BEGIN:VCALENDAR
   924.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   924.6 +VERSION:2.0
   924.7 +BEGIN:VTIMEZONE
   924.8 +TZID:Asia/Muscat
   924.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Muscat
  924.10 +X-LIC-LOCATION:Asia/Muscat
  924.11 +BEGIN:STANDARD
  924.12 +TZOFFSETFROM:+035420
  924.13 +TZOFFSETTO:+0400
  924.14 +TZNAME:GST
  924.15 +DTSTART:19200101T000000
  924.16 +RDATE:19200101T000000
  924.17 +END:STANDARD
  924.18 +END:VTIMEZONE
  924.19 +END:VCALENDAR
   925.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   925.2 +++ b/src/zoneinfo/Asia/Nicosia.ics	Tue Feb 10 18:12:00 2015 +0100
   925.3 @@ -0,0 +1,96 @@
   925.4 +BEGIN:VCALENDAR
   925.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   925.6 +VERSION:2.0
   925.7 +BEGIN:VTIMEZONE
   925.8 +TZID:Asia/Nicosia
   925.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Nicosia
  925.10 +X-LIC-LOCATION:Asia/Nicosia
  925.11 +BEGIN:STANDARD
  925.12 +TZOFFSETFROM:+0300
  925.13 +TZOFFSETTO:+0200
  925.14 +TZNAME:EET
  925.15 +DTSTART:19981025T040000
  925.16 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  925.17 +END:STANDARD
  925.18 +BEGIN:DAYLIGHT
  925.19 +TZOFFSETFROM:+0200
  925.20 +TZOFFSETTO:+0300
  925.21 +TZNAME:EEST
  925.22 +DTSTART:19990328T030000
  925.23 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  925.24 +END:DAYLIGHT
  925.25 +BEGIN:STANDARD
  925.26 +TZOFFSETFROM:+021328
  925.27 +TZOFFSETTO:+0200
  925.28 +TZNAME:EET
  925.29 +DTSTART:19211114T000000
  925.30 +RDATE:19211114T000000
  925.31 +END:STANDARD
  925.32 +BEGIN:DAYLIGHT
  925.33 +TZOFFSETFROM:+0200
  925.34 +TZOFFSETTO:+0300
  925.35 +TZNAME:EEST
  925.36 +DTSTART:19750413T000000
  925.37 +RDATE:19750413T000000
  925.38 +RDATE:19760515T000000
  925.39 +RDATE:19770403T000000
  925.40 +RDATE:19780402T000000
  925.41 +RDATE:19790401T000000
  925.42 +RDATE:19800406T000000
  925.43 +RDATE:19810329T000000
  925.44 +RDATE:19820328T000000
  925.45 +RDATE:19830327T000000
  925.46 +RDATE:19840325T000000
  925.47 +RDATE:19850331T000000
  925.48 +RDATE:19860330T000000
  925.49 +RDATE:19870329T000000
  925.50 +RDATE:19880327T000000
  925.51 +RDATE:19890326T000000
  925.52 +RDATE:19900325T000000
  925.53 +RDATE:19910331T000000
  925.54 +RDATE:19920329T000000
  925.55 +RDATE:19930328T000000
  925.56 +RDATE:19940327T000000
  925.57 +RDATE:19950326T000000
  925.58 +RDATE:19960331T000000
  925.59 +RDATE:19970330T000000
  925.60 +RDATE:19980329T000000
  925.61 +END:DAYLIGHT
  925.62 +BEGIN:STANDARD
  925.63 +TZOFFSETFROM:+0300
  925.64 +TZOFFSETTO:+0200
  925.65 +TZNAME:EET
  925.66 +DTSTART:19751012T000000
  925.67 +RDATE:19751012T000000
  925.68 +RDATE:19761011T000000
  925.69 +RDATE:19770925T000000
  925.70 +RDATE:19781002T000000
  925.71 +RDATE:19790930T000000
  925.72 +RDATE:19800928T000000
  925.73 +RDATE:19810927T000000
  925.74 +RDATE:19820926T000000
  925.75 +RDATE:19830925T000000
  925.76 +RDATE:19840930T000000
  925.77 +RDATE:19850929T000000
  925.78 +RDATE:19860928T000000
  925.79 +RDATE:19870927T000000
  925.80 +RDATE:19880925T000000
  925.81 +RDATE:19890924T000000
  925.82 +RDATE:19900930T000000
  925.83 +RDATE:19910929T000000
  925.84 +RDATE:19920927T000000
  925.85 +RDATE:19930926T000000
  925.86 +RDATE:19940925T000000
  925.87 +RDATE:19950924T000000
  925.88 +RDATE:19960929T000000
  925.89 +RDATE:19970928T000000
  925.90 +END:STANDARD
  925.91 +BEGIN:DAYLIGHT
  925.92 +TZOFFSETFROM:+0300
  925.93 +TZOFFSETTO:+0300
  925.94 +TZNAME:EEST
  925.95 +DTSTART:19980901T000000
  925.96 +RDATE:19980901T000000
  925.97 +END:DAYLIGHT
  925.98 +END:VTIMEZONE
  925.99 +END:VCALENDAR
   926.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   926.2 +++ b/src/zoneinfo/Asia/Novokuznetsk.ics	Tue Feb 10 18:12:00 2015 +0100
   926.3 @@ -0,0 +1,127 @@
   926.4 +BEGIN:VCALENDAR
   926.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   926.6 +VERSION:2.0
   926.7 +BEGIN:VTIMEZONE
   926.8 +TZID:Asia/Novokuznetsk
   926.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Novokuznetsk
  926.10 +X-LIC-LOCATION:Asia/Novokuznetsk
  926.11 +BEGIN:STANDARD
  926.12 +TZOFFSETFROM:+054848
  926.13 +TZOFFSETTO:+0600
  926.14 +TZNAME:KRAT
  926.15 +DTSTART:19200106T000000
  926.16 +RDATE:19200106T000000
  926.17 +END:STANDARD
  926.18 +BEGIN:STANDARD
  926.19 +TZOFFSETFROM:+0600
  926.20 +TZOFFSETTO:+0700
  926.21 +TZNAME:KRAT
  926.22 +DTSTART:19300621T000000
  926.23 +RDATE:19300621T000000
  926.24 +RDATE:19920119T020000
  926.25 +END:STANDARD
  926.26 +BEGIN:DAYLIGHT
  926.27 +TZOFFSETFROM:+0700
  926.28 +TZOFFSETTO:+0800
  926.29 +TZNAME:KRAST
  926.30 +DTSTART:19810401T000000
  926.31 +RDATE:19810401T000000
  926.32 +RDATE:19820401T000000
  926.33 +RDATE:19830401T000000
  926.34 +RDATE:19840401T000000
  926.35 +RDATE:19850331T020000
  926.36 +RDATE:19860330T020000
  926.37 +RDATE:19870329T020000
  926.38 +RDATE:19880327T020000
  926.39 +RDATE:19890326T020000
  926.40 +RDATE:19900325T020000
  926.41 +RDATE:19920328T230000
  926.42 +RDATE:19930328T020000
  926.43 +RDATE:19940327T020000
  926.44 +RDATE:19950326T020000
  926.45 +RDATE:19960331T020000
  926.46 +RDATE:19970330T020000
  926.47 +RDATE:19980329T020000
  926.48 +RDATE:19990328T020000
  926.49 +RDATE:20000326T020000
  926.50 +RDATE:20010325T020000
  926.51 +RDATE:20020331T020000
  926.52 +RDATE:20030330T020000
  926.53 +RDATE:20040328T020000
  926.54 +RDATE:20050327T020000
  926.55 +RDATE:20060326T020000
  926.56 +RDATE:20070325T020000
  926.57 +RDATE:20080330T020000
  926.58 +RDATE:20090329T020000
  926.59 +END:DAYLIGHT
  926.60 +BEGIN:STANDARD
  926.61 +TZOFFSETFROM:+0800
  926.62 +TZOFFSETTO:+0700
  926.63 +TZNAME:KRAT
  926.64 +DTSTART:19811001T000000
  926.65 +RDATE:19811001T000000
  926.66 +RDATE:19821001T000000
  926.67 +RDATE:19831001T000000
  926.68 +RDATE:19840930T030000
  926.69 +RDATE:19850929T030000
  926.70 +RDATE:19860928T030000
  926.71 +RDATE:19870927T030000
  926.72 +RDATE:19880925T030000
  926.73 +RDATE:19890924T030000
  926.74 +RDATE:19900930T030000
  926.75 +RDATE:19920926T230000
  926.76 +RDATE:19930926T030000
  926.77 +RDATE:19940925T030000
  926.78 +RDATE:19950924T030000
  926.79 +RDATE:19961027T030000
  926.80 +RDATE:19971026T030000
  926.81 +RDATE:19981025T030000
  926.82 +RDATE:19991031T030000
  926.83 +RDATE:20001029T030000
  926.84 +RDATE:20011028T030000
  926.85 +RDATE:20021027T030000
  926.86 +RDATE:20031026T030000
  926.87 +RDATE:20041031T030000
  926.88 +RDATE:20051030T030000
  926.89 +RDATE:20061029T030000
  926.90 +RDATE:20071028T030000
  926.91 +RDATE:20081026T030000
  926.92 +RDATE:20091025T030000
  926.93 +END:STANDARD
  926.94 +BEGIN:DAYLIGHT
  926.95 +TZOFFSETFROM:+0700
  926.96 +TZOFFSETTO:+0700
  926.97 +TZNAME:KRAST
  926.98 +DTSTART:19910331T020000
  926.99 +RDATE:19910331T020000
 926.100 +END:DAYLIGHT
 926.101 +BEGIN:STANDARD
 926.102 +TZOFFSETFROM:+0700
 926.103 +TZOFFSETTO:+0600
 926.104 +TZNAME:KRAT
 926.105 +DTSTART:19910929T030000
 926.106 +RDATE:19910929T030000
 926.107 +END:STANDARD
 926.108 +BEGIN:DAYLIGHT
 926.109 +TZOFFSETFROM:+0700
 926.110 +TZOFFSETTO:+0700
 926.111 +TZNAME:NOVST
 926.112 +DTSTART:20100328T020000
 926.113 +RDATE:20100328T020000
 926.114 +END:DAYLIGHT
 926.115 +BEGIN:STANDARD
 926.116 +TZOFFSETFROM:+0700
 926.117 +TZOFFSETTO:+0600
 926.118 +TZNAME:NOVT
 926.119 +DTSTART:20101031T030000
 926.120 +RDATE:20101031T030000
 926.121 +END:STANDARD
 926.122 +BEGIN:STANDARD
 926.123 +TZOFFSETFROM:+0600
 926.124 +TZOFFSETTO:+0700
 926.125 +TZNAME:NOVT
 926.126 +DTSTART:20110327T020000
 926.127 +RDATE:20110327T020000
 926.128 +END:STANDARD
 926.129 +END:VTIMEZONE
 926.130 +END:VCALENDAR
   927.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   927.2 +++ b/src/zoneinfo/Asia/Novosibirsk.ics	Tue Feb 10 18:12:00 2015 +0100
   927.3 @@ -0,0 +1,122 @@
   927.4 +BEGIN:VCALENDAR
   927.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   927.6 +VERSION:2.0
   927.7 +BEGIN:VTIMEZONE
   927.8 +TZID:Asia/Novosibirsk
   927.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Novosibirsk
  927.10 +X-LIC-LOCATION:Asia/Novosibirsk
  927.11 +BEGIN:STANDARD
  927.12 +TZOFFSETFROM:+053140
  927.13 +TZOFFSETTO:+0600
  927.14 +TZNAME:NOVT
  927.15 +DTSTART:19191214T060000
  927.16 +RDATE:19191214T060000
  927.17 +END:STANDARD
  927.18 +BEGIN:STANDARD
  927.19 +TZOFFSETFROM:+0600
  927.20 +TZOFFSETTO:+0700
  927.21 +TZNAME:NOVT
  927.22 +DTSTART:19300621T000000
  927.23 +RDATE:19300621T000000
  927.24 +RDATE:19920119T020000
  927.25 +RDATE:20110327T020000
  927.26 +END:STANDARD
  927.27 +BEGIN:DAYLIGHT
  927.28 +TZOFFSETFROM:+0700
  927.29 +TZOFFSETTO:+0800
  927.30 +TZNAME:NOVST
  927.31 +DTSTART:19810401T000000
  927.32 +RDATE:19810401T000000
  927.33 +RDATE:19820401T000000
  927.34 +RDATE:19830401T000000
  927.35 +RDATE:19840401T000000
  927.36 +RDATE:19850331T020000
  927.37 +RDATE:19860330T020000
  927.38 +RDATE:19870329T020000
  927.39 +RDATE:19880327T020000
  927.40 +RDATE:19890326T020000
  927.41 +RDATE:19900325T020000
  927.42 +RDATE:19920328T230000
  927.43 +RDATE:19930328T020000
  927.44 +END:DAYLIGHT
  927.45 +BEGIN:STANDARD
  927.46 +TZOFFSETFROM:+0800
  927.47 +TZOFFSETTO:+0700
  927.48 +TZNAME:NOVT
  927.49 +DTSTART:19811001T000000
  927.50 +RDATE:19811001T000000
  927.51 +RDATE:19821001T000000
  927.52 +RDATE:19831001T000000
  927.53 +RDATE:19840930T030000
  927.54 +RDATE:19850929T030000
  927.55 +RDATE:19860928T030000
  927.56 +RDATE:19870927T030000
  927.57 +RDATE:19880925T030000
  927.58 +RDATE:19890924T030000
  927.59 +RDATE:19900930T030000
  927.60 +RDATE:19920926T230000
  927.61 +END:STANDARD
  927.62 +BEGIN:DAYLIGHT
  927.63 +TZOFFSETFROM:+0700
  927.64 +TZOFFSETTO:+0700
  927.65 +TZNAME:NOVST
  927.66 +DTSTART:19910331T020000
  927.67 +RDATE:19910331T020000
  927.68 +END:DAYLIGHT
  927.69 +BEGIN:STANDARD
  927.70 +TZOFFSETFROM:+0700
  927.71 +TZOFFSETTO:+0600
  927.72 +TZNAME:NOVT
  927.73 +DTSTART:19910929T030000
  927.74 +RDATE:19910929T030000
  927.75 +RDATE:19930926T030000
  927.76 +RDATE:19940925T030000
  927.77 +RDATE:19950924T030000
  927.78 +RDATE:19961027T030000
  927.79 +RDATE:19971026T030000
  927.80 +RDATE:19981025T030000
  927.81 +RDATE:19991031T030000
  927.82 +RDATE:20001029T030000
  927.83 +RDATE:20011028T030000
  927.84 +RDATE:20021027T030000
  927.85 +RDATE:20031026T030000
  927.86 +RDATE:20041031T030000
  927.87 +RDATE:20051030T030000
  927.88 +RDATE:20061029T030000
  927.89 +RDATE:20071028T030000
  927.90 +RDATE:20081026T030000
  927.91 +RDATE:20091025T030000
  927.92 +RDATE:20101031T030000
  927.93 +END:STANDARD
  927.94 +BEGIN:DAYLIGHT
  927.95 +TZOFFSETFROM:+0800
  927.96 +TZOFFSETTO:+0700
  927.97 +TZNAME:NOVST
  927.98 +DTSTART:19930523T000000
  927.99 +RDATE:19930523T000000
 927.100 +END:DAYLIGHT
 927.101 +BEGIN:DAYLIGHT
 927.102 +TZOFFSETFROM:+0600
 927.103 +TZOFFSETTO:+0700
 927.104 +TZNAME:NOVST
 927.105 +DTSTART:19940327T020000
 927.106 +RDATE:19940327T020000
 927.107 +RDATE:19950326T020000
 927.108 +RDATE:19960331T020000
 927.109 +RDATE:19970330T020000
 927.110 +RDATE:19980329T020000
 927.111 +RDATE:19990328T020000
 927.112 +RDATE:20000326T020000
 927.113 +RDATE:20010325T020000
 927.114 +RDATE:20020331T020000
 927.115 +RDATE:20030330T020000
 927.116 +RDATE:20040328T020000
 927.117 +RDATE:20050327T020000
 927.118 +RDATE:20060326T020000
 927.119 +RDATE:20070325T020000
 927.120 +RDATE:20080330T020000
 927.121 +RDATE:20090329T020000
 927.122 +RDATE:20100328T020000
 927.123 +END:DAYLIGHT
 927.124 +END:VTIMEZONE
 927.125 +END:VCALENDAR
   928.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   928.2 +++ b/src/zoneinfo/Asia/Omsk.ics	Tue Feb 10 18:12:00 2015 +0100
   928.3 @@ -0,0 +1,115 @@
   928.4 +BEGIN:VCALENDAR
   928.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   928.6 +VERSION:2.0
   928.7 +BEGIN:VTIMEZONE
   928.8 +TZID:Asia/Omsk
   928.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Omsk
  928.10 +X-LIC-LOCATION:Asia/Omsk
  928.11 +BEGIN:STANDARD
  928.12 +TZOFFSETFROM:+045336
  928.13 +TZOFFSETTO:+0500
  928.14 +TZNAME:OMST
  928.15 +DTSTART:19191114T000000
  928.16 +RDATE:19191114T000000
  928.17 +END:STANDARD
  928.18 +BEGIN:STANDARD
  928.19 +TZOFFSETFROM:+0500
  928.20 +TZOFFSETTO:+0600
  928.21 +TZNAME:OMST
  928.22 +DTSTART:19300621T000000
  928.23 +RDATE:19300621T000000
  928.24 +RDATE:19920119T020000
  928.25 +END:STANDARD
  928.26 +BEGIN:DAYLIGHT
  928.27 +TZOFFSETFROM:+0600
  928.28 +TZOFFSETTO:+0700
  928.29 +TZNAME:OMSST
  928.30 +DTSTART:19810401T000000
  928.31 +RDATE:19810401T000000
  928.32 +RDATE:19820401T000000
  928.33 +RDATE:19830401T000000
  928.34 +RDATE:19840401T000000
  928.35 +RDATE:19850331T020000
  928.36 +RDATE:19860330T020000
  928.37 +RDATE:19870329T020000
  928.38 +RDATE:19880327T020000
  928.39 +RDATE:19890326T020000
  928.40 +RDATE:19900325T020000
  928.41 +RDATE:19920328T230000
  928.42 +RDATE:19930328T020000
  928.43 +RDATE:19940327T020000
  928.44 +RDATE:19950326T020000
  928.45 +RDATE:19960331T020000
  928.46 +RDATE:19970330T020000
  928.47 +RDATE:19980329T020000
  928.48 +RDATE:19990328T020000
  928.49 +RDATE:20000326T020000
  928.50 +RDATE:20010325T020000
  928.51 +RDATE:20020331T020000
  928.52 +RDATE:20030330T020000
  928.53 +RDATE:20040328T020000
  928.54 +RDATE:20050327T020000
  928.55 +RDATE:20060326T020000
  928.56 +RDATE:20070325T020000
  928.57 +RDATE:20080330T020000
  928.58 +RDATE:20090329T020000
  928.59 +RDATE:20100328T020000
  928.60 +END:DAYLIGHT
  928.61 +BEGIN:STANDARD
  928.62 +TZOFFSETFROM:+0700
  928.63 +TZOFFSETTO:+0600
  928.64 +TZNAME:OMST
  928.65 +DTSTART:19811001T000000
  928.66 +RDATE:19811001T000000
  928.67 +RDATE:19821001T000000
  928.68 +RDATE:19831001T000000
  928.69 +RDATE:19840930T030000
  928.70 +RDATE:19850929T030000
  928.71 +RDATE:19860928T030000
  928.72 +RDATE:19870927T030000
  928.73 +RDATE:19880925T030000
  928.74 +RDATE:19890924T030000
  928.75 +RDATE:19900930T030000
  928.76 +RDATE:19920926T230000
  928.77 +RDATE:19930926T030000
  928.78 +RDATE:19940925T030000
  928.79 +RDATE:19950924T030000
  928.80 +RDATE:19961027T030000
  928.81 +RDATE:19971026T030000
  928.82 +RDATE:19981025T030000
  928.83 +RDATE:19991031T030000
  928.84 +RDATE:20001029T030000
  928.85 +RDATE:20011028T030000
  928.86 +RDATE:20021027T030000
  928.87 +RDATE:20031026T030000
  928.88 +RDATE:20041031T030000
  928.89 +RDATE:20051030T030000
  928.90 +RDATE:20061029T030000
  928.91 +RDATE:20071028T030000
  928.92 +RDATE:20081026T030000
  928.93 +RDATE:20091025T030000
  928.94 +RDATE:20101031T030000
  928.95 +END:STANDARD
  928.96 +BEGIN:DAYLIGHT
  928.97 +TZOFFSETFROM:+0600
  928.98 +TZOFFSETTO:+0600
  928.99 +TZNAME:OMSST
 928.100 +DTSTART:19910331T020000
 928.101 +RDATE:19910331T020000
 928.102 +END:DAYLIGHT
 928.103 +BEGIN:STANDARD
 928.104 +TZOFFSETFROM:+0600
 928.105 +TZOFFSETTO:+0500
 928.106 +TZNAME:OMST
 928.107 +DTSTART:19910929T030000
 928.108 +RDATE:19910929T030000
 928.109 +END:STANDARD
 928.110 +BEGIN:STANDARD
 928.111 +TZOFFSETFROM:+0600
 928.112 +TZOFFSETTO:+0700
 928.113 +TZNAME:OMST
 928.114 +DTSTART:20110327T020000
 928.115 +RDATE:20110327T020000
 928.116 +END:STANDARD
 928.117 +END:VTIMEZONE
 928.118 +END:VCALENDAR
   929.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   929.2 +++ b/src/zoneinfo/Asia/Oral.ics	Tue Feb 10 18:12:00 2015 +0100
   929.3 @@ -0,0 +1,144 @@
   929.4 +BEGIN:VCALENDAR
   929.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   929.6 +VERSION:2.0
   929.7 +BEGIN:VTIMEZONE
   929.8 +TZID:Asia/Oral
   929.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Oral
  929.10 +X-LIC-LOCATION:Asia/Oral
  929.11 +BEGIN:STANDARD
  929.12 +TZOFFSETFROM:+032524
  929.13 +TZOFFSETTO:+0400
  929.14 +TZNAME:URAT
  929.15 +DTSTART:19240502T000000
  929.16 +RDATE:19240502T000000
  929.17 +END:STANDARD
  929.18 +BEGIN:STANDARD
  929.19 +TZOFFSETFROM:+0400
  929.20 +TZOFFSETTO:+0500
  929.21 +TZNAME:URAT
  929.22 +DTSTART:19300621T000000
  929.23 +RDATE:19300621T000000
  929.24 +END:STANDARD
  929.25 +BEGIN:DAYLIGHT
  929.26 +TZOFFSETFROM:+0500
  929.27 +TZOFFSETTO:+0600
  929.28 +TZNAME:URAST
  929.29 +DTSTART:19810401T000000
  929.30 +RDATE:19810401T000000
  929.31 +RDATE:19830401T000000
  929.32 +RDATE:19840401T000000
  929.33 +RDATE:19850331T020000
  929.34 +RDATE:19860330T020000
  929.35 +RDATE:19870329T020000
  929.36 +RDATE:19880327T020000
  929.37 +END:DAYLIGHT
  929.38 +BEGIN:STANDARD
  929.39 +TZOFFSETFROM:+0600
  929.40 +TZOFFSETTO:+0600
  929.41 +TZNAME:URAT
  929.42 +DTSTART:19811001T000000
  929.43 +RDATE:19811001T000000
  929.44 +END:STANDARD
  929.45 +BEGIN:DAYLIGHT
  929.46 +TZOFFSETFROM:+0600
  929.47 +TZOFFSETTO:+0600
  929.48 +TZNAME:URAST
  929.49 +DTSTART:19820401T000000
  929.50 +RDATE:19820401T000000
  929.51 +END:DAYLIGHT
  929.52 +BEGIN:STANDARD
  929.53 +TZOFFSETFROM:+0600
  929.54 +TZOFFSETTO:+0500
  929.55 +TZNAME:URAT
  929.56 +DTSTART:19821001T000000
  929.57 +RDATE:19821001T000000
  929.58 +RDATE:19831001T000000
  929.59 +RDATE:19840930T030000
  929.60 +RDATE:19850929T030000
  929.61 +RDATE:19860928T030000
  929.62 +RDATE:19870927T030000
  929.63 +RDATE:19880925T030000
  929.64 +END:STANDARD
  929.65 +BEGIN:DAYLIGHT
  929.66 +TZOFFSETFROM:+0500
  929.67 +TZOFFSETTO:+0500
  929.68 +TZNAME:URAST
  929.69 +DTSTART:19890326T020000
  929.70 +RDATE:19890326T020000
  929.71 +END:DAYLIGHT
  929.72 +BEGIN:STANDARD
  929.73 +TZOFFSETFROM:+0500
  929.74 +TZOFFSETTO:+0400
  929.75 +TZNAME:URAT
  929.76 +DTSTART:19890924T030000
  929.77 +RDATE:19890924T030000
  929.78 +RDATE:19900930T030000
  929.79 +END:STANDARD
  929.80 +BEGIN:DAYLIGHT
  929.81 +TZOFFSETFROM:+0400
  929.82 +TZOFFSETTO:+0500
  929.83 +TZNAME:URAST
  929.84 +DTSTART:19900325T020000
  929.85 +RDATE:19900325T020000
  929.86 +END:DAYLIGHT
  929.87 +BEGIN:STANDARD
  929.88 +TZOFFSETFROM:+0400
  929.89 +TZOFFSETTO:+0400
  929.90 +TZNAME:URAT
  929.91 +DTSTART:19910101T000000
  929.92 +RDATE:19910101T000000
  929.93 +END:STANDARD
  929.94 +BEGIN:STANDARD
  929.95 +TZOFFSETFROM:+0400
  929.96 +TZOFFSETTO:+0400
  929.97 +TZNAME:ORAT
  929.98 +DTSTART:19911216T000000
  929.99 +RDATE:19911216T000000
 929.100 +END:STANDARD
 929.101 +BEGIN:DAYLIGHT
 929.102 +TZOFFSETFROM:+0400
 929.103 +TZOFFSETTO:+0500
 929.104 +TZNAME:ORAST
 929.105 +DTSTART:19920328T230000
 929.106 +RDATE:19920328T230000
 929.107 +RDATE:19930328T020000
 929.108 +RDATE:19940327T020000
 929.109 +RDATE:19950326T020000
 929.110 +RDATE:19960331T020000
 929.111 +RDATE:19970330T020000
 929.112 +RDATE:19980329T020000
 929.113 +RDATE:19990328T020000
 929.114 +RDATE:20000326T020000
 929.115 +RDATE:20010325T020000
 929.116 +RDATE:20020331T020000
 929.117 +RDATE:20030330T020000
 929.118 +RDATE:20040328T020000
 929.119 +END:DAYLIGHT
 929.120 +BEGIN:STANDARD
 929.121 +TZOFFSETFROM:+0500
 929.122 +TZOFFSETTO:+0400
 929.123 +TZNAME:ORAT
 929.124 +DTSTART:19920926T230000
 929.125 +RDATE:19920926T230000
 929.126 +RDATE:19930926T030000
 929.127 +RDATE:19940925T030000
 929.128 +RDATE:19950924T030000
 929.129 +RDATE:19961027T030000
 929.130 +RDATE:19971026T030000
 929.131 +RDATE:19981025T030000
 929.132 +RDATE:19991031T030000
 929.133 +RDATE:20001029T030000
 929.134 +RDATE:20011028T030000
 929.135 +RDATE:20021027T030000
 929.136 +RDATE:20031026T030000
 929.137 +RDATE:20041031T030000
 929.138 +END:STANDARD
 929.139 +BEGIN:STANDARD
 929.140 +TZOFFSETFROM:+0400
 929.141 +TZOFFSETTO:+0500
 929.142 +TZNAME:ORAT
 929.143 +DTSTART:20050315T000000
 929.144 +RDATE:20050315T000000
 929.145 +END:STANDARD
 929.146 +END:VTIMEZONE
 929.147 +END:VCALENDAR
   930.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   930.2 +++ b/src/zoneinfo/Asia/Phnom_Penh.ics	Tue Feb 10 18:12:00 2015 +0100
   930.3 @@ -0,0 +1,37 @@
   930.4 +BEGIN:VCALENDAR
   930.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   930.6 +VERSION:2.0
   930.7 +BEGIN:VTIMEZONE
   930.8 +TZID:Asia/Phnom_Penh
   930.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Phnom_Penh
  930.10 +X-LIC-LOCATION:Asia/Phnom_Penh
  930.11 +BEGIN:STANDARD
  930.12 +TZOFFSETFROM:+065940
  930.13 +TZOFFSETTO:+070620
  930.14 +TZNAME:SMT
  930.15 +DTSTART:19060609T000000
  930.16 +RDATE:19060609T000000
  930.17 +END:STANDARD
  930.18 +BEGIN:STANDARD
  930.19 +TZOFFSETFROM:+070620
  930.20 +TZOFFSETTO:+0700
  930.21 +TZNAME:ICT
  930.22 +DTSTART:19110311T000100
  930.23 +RDATE:19110311T000100
  930.24 +END:STANDARD
  930.25 +BEGIN:STANDARD
  930.26 +TZOFFSETFROM:+0700
  930.27 +TZOFFSETTO:+0800
  930.28 +TZNAME:ICT
  930.29 +DTSTART:19120501T000000
  930.30 +RDATE:19120501T000000
  930.31 +END:STANDARD
  930.32 +BEGIN:STANDARD
  930.33 +TZOFFSETFROM:+0800
  930.34 +TZOFFSETTO:+0700
  930.35 +TZNAME:ICT
  930.36 +DTSTART:19310501T000000
  930.37 +RDATE:19310501T000000
  930.38 +END:STANDARD
  930.39 +END:VTIMEZONE
  930.40 +END:VCALENDAR
   931.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   931.2 +++ b/src/zoneinfo/Asia/Pontianak.ics	Tue Feb 10 18:12:00 2015 +0100
   931.3 @@ -0,0 +1,65 @@
   931.4 +BEGIN:VCALENDAR
   931.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   931.6 +VERSION:2.0
   931.7 +BEGIN:VTIMEZONE
   931.8 +TZID:Asia/Pontianak
   931.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Pontianak
  931.10 +X-LIC-LOCATION:Asia/Pontianak
  931.11 +BEGIN:STANDARD
  931.12 +TZOFFSETFROM:+071720
  931.13 +TZOFFSETTO:+071720
  931.14 +TZNAME:PMT
  931.15 +DTSTART:19080501T000000
  931.16 +RDATE:19080501T000000
  931.17 +END:STANDARD
  931.18 +BEGIN:STANDARD
  931.19 +TZOFFSETFROM:+071720
  931.20 +TZOFFSETTO:+0730
  931.21 +TZNAME:WIT
  931.22 +DTSTART:19321101T000000
  931.23 +RDATE:19321101T000000
  931.24 +END:STANDARD
  931.25 +BEGIN:STANDARD
  931.26 +TZOFFSETFROM:+0730
  931.27 +TZOFFSETTO:+0900
  931.28 +TZNAME:JST
  931.29 +DTSTART:19420129T000000
  931.30 +RDATE:19420129T000000
  931.31 +END:STANDARD
  931.32 +BEGIN:STANDARD
  931.33 +TZOFFSETFROM:+0900
  931.34 +TZOFFSETTO:+0730
  931.35 +TZNAME:WIT
  931.36 +DTSTART:19450923T000000
  931.37 +RDATE:19450923T000000
  931.38 +END:STANDARD
  931.39 +BEGIN:STANDARD
  931.40 +TZOFFSETFROM:+0730
  931.41 +TZOFFSETTO:+0800
  931.42 +TZNAME:WIT
  931.43 +DTSTART:19480501T000000
  931.44 +RDATE:19480501T000000
  931.45 +END:STANDARD
  931.46 +BEGIN:STANDARD
  931.47 +TZOFFSETFROM:+0800
  931.48 +TZOFFSETTO:+0730
  931.49 +TZNAME:WIT
  931.50 +DTSTART:19500501T000000
  931.51 +RDATE:19500501T000000
  931.52 +END:STANDARD
  931.53 +BEGIN:STANDARD
  931.54 +TZOFFSETFROM:+0730
  931.55 +TZOFFSETTO:+0800
  931.56 +TZNAME:CIT
  931.57 +DTSTART:19640101T000000
  931.58 +RDATE:19640101T000000
  931.59 +END:STANDARD
  931.60 +BEGIN:STANDARD
  931.61 +TZOFFSETFROM:+0800
  931.62 +TZOFFSETTO:+0700
  931.63 +TZNAME:WIT
  931.64 +DTSTART:19880101T000000
  931.65 +RDATE:19880101T000000
  931.66 +END:STANDARD
  931.67 +END:VTIMEZONE
  931.68 +END:VCALENDAR
   932.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   932.2 +++ b/src/zoneinfo/Asia/Pyongyang.ics	Tue Feb 10 18:12:00 2015 +0100
   932.3 @@ -0,0 +1,45 @@
   932.4 +BEGIN:VCALENDAR
   932.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   932.6 +VERSION:2.0
   932.7 +BEGIN:VTIMEZONE
   932.8 +TZID:Asia/Pyongyang
   932.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Pyongyang
  932.10 +X-LIC-LOCATION:Asia/Pyongyang
  932.11 +BEGIN:STANDARD
  932.12 +TZOFFSETFROM:+0823
  932.13 +TZOFFSETTO:+0830
  932.14 +TZNAME:KST
  932.15 +DTSTART:18900101T000000
  932.16 +RDATE:18900101T000000
  932.17 +END:STANDARD
  932.18 +BEGIN:STANDARD
  932.19 +TZOFFSETFROM:+0830
  932.20 +TZOFFSETTO:+0900
  932.21 +TZNAME:KST
  932.22 +DTSTART:19041201T000000
  932.23 +RDATE:19041201T000000
  932.24 +RDATE:19320101T000000
  932.25 +END:STANDARD
  932.26 +BEGIN:STANDARD
  932.27 +TZOFFSETFROM:+0900
  932.28 +TZOFFSETTO:+0830
  932.29 +TZNAME:KST
  932.30 +DTSTART:19280101T000000
  932.31 +RDATE:19280101T000000
  932.32 +END:STANDARD
  932.33 +BEGIN:STANDARD
  932.34 +TZOFFSETFROM:+0900
  932.35 +TZOFFSETTO:+0800
  932.36 +TZNAME:KST
  932.37 +DTSTART:19540321T000000
  932.38 +RDATE:19540321T000000
  932.39 +END:STANDARD
  932.40 +BEGIN:STANDARD
  932.41 +TZOFFSETFROM:+0800
  932.42 +TZOFFSETTO:+0900
  932.43 +TZNAME:KST
  932.44 +DTSTART:19610810T000000
  932.45 +RDATE:19610810T000000
  932.46 +END:STANDARD
  932.47 +END:VTIMEZONE
  932.48 +END:VCALENDAR
   933.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   933.2 +++ b/src/zoneinfo/Asia/Qatar.ics	Tue Feb 10 18:12:00 2015 +0100
   933.3 @@ -0,0 +1,23 @@
   933.4 +BEGIN:VCALENDAR
   933.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   933.6 +VERSION:2.0
   933.7 +BEGIN:VTIMEZONE
   933.8 +TZID:Asia/Qatar
   933.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Qatar
  933.10 +X-LIC-LOCATION:Asia/Qatar
  933.11 +BEGIN:STANDARD
  933.12 +TZOFFSETFROM:+032608
  933.13 +TZOFFSETTO:+0400
  933.14 +TZNAME:GST
  933.15 +DTSTART:19200101T000000
  933.16 +RDATE:19200101T000000
  933.17 +END:STANDARD
  933.18 +BEGIN:STANDARD
  933.19 +TZOFFSETFROM:+0400
  933.20 +TZOFFSETTO:+0300
  933.21 +TZNAME:AST
  933.22 +DTSTART:19720601T000000
  933.23 +RDATE:19720601T000000
  933.24 +END:STANDARD
  933.25 +END:VTIMEZONE
  933.26 +END:VCALENDAR
   934.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   934.2 +++ b/src/zoneinfo/Asia/Qyzylorda.ics	Tue Feb 10 18:12:00 2015 +0100
   934.3 @@ -0,0 +1,133 @@
   934.4 +BEGIN:VCALENDAR
   934.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   934.6 +VERSION:2.0
   934.7 +BEGIN:VTIMEZONE
   934.8 +TZID:Asia/Qyzylorda
   934.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Qyzylorda
  934.10 +X-LIC-LOCATION:Asia/Qyzylorda
  934.11 +BEGIN:STANDARD
  934.12 +TZOFFSETFROM:+042152
  934.13 +TZOFFSETTO:+0400
  934.14 +TZNAME:KIZT
  934.15 +DTSTART:19240502T000000
  934.16 +RDATE:19240502T000000
  934.17 +END:STANDARD
  934.18 +BEGIN:STANDARD
  934.19 +TZOFFSETFROM:+0400
  934.20 +TZOFFSETTO:+0500
  934.21 +TZNAME:KIZT
  934.22 +DTSTART:19300621T000000
  934.23 +RDATE:19300621T000000
  934.24 +END:STANDARD
  934.25 +BEGIN:DAYLIGHT
  934.26 +TZOFFSETFROM:+0500
  934.27 +TZOFFSETTO:+0600
  934.28 +TZNAME:KIZST
  934.29 +DTSTART:19810401T000000
  934.30 +RDATE:19810401T000000
  934.31 +RDATE:19830401T000000
  934.32 +RDATE:19840401T000000
  934.33 +RDATE:19850331T020000
  934.34 +RDATE:19860330T020000
  934.35 +RDATE:19870329T020000
  934.36 +RDATE:19880327T020000
  934.37 +RDATE:19890326T020000
  934.38 +RDATE:19900325T020000
  934.39 +END:DAYLIGHT
  934.40 +BEGIN:STANDARD
  934.41 +TZOFFSETFROM:+0600
  934.42 +TZOFFSETTO:+0600
  934.43 +TZNAME:KIZT
  934.44 +DTSTART:19811001T000000
  934.45 +RDATE:19811001T000000
  934.46 +END:STANDARD
  934.47 +BEGIN:DAYLIGHT
  934.48 +TZOFFSETFROM:+0600
  934.49 +TZOFFSETTO:+0600
  934.50 +TZNAME:KIZST
  934.51 +DTSTART:19820401T000000
  934.52 +RDATE:19820401T000000
  934.53 +END:DAYLIGHT
  934.54 +BEGIN:STANDARD
  934.55 +TZOFFSETFROM:+0600
  934.56 +TZOFFSETTO:+0500
  934.57 +TZNAME:KIZT
  934.58 +DTSTART:19821001T000000
  934.59 +RDATE:19821001T000000
  934.60 +RDATE:19831001T000000
  934.61 +RDATE:19840930T030000
  934.62 +RDATE:19850929T030000
  934.63 +RDATE:19860928T030000
  934.64 +RDATE:19870927T030000
  934.65 +RDATE:19880925T030000
  934.66 +RDATE:19890924T030000
  934.67 +RDATE:19900930T030000
  934.68 +END:STANDARD
  934.69 +BEGIN:STANDARD
  934.70 +TZOFFSETFROM:+0500
  934.71 +TZOFFSETTO:+0500
  934.72 +TZNAME:KIZT
  934.73 +DTSTART:19910101T000000
  934.74 +RDATE:19910101T000000
  934.75 +END:STANDARD
  934.76 +BEGIN:STANDARD
  934.77 +TZOFFSETFROM:+0500
  934.78 +TZOFFSETTO:+0500
  934.79 +TZNAME:QYZT
  934.80 +DTSTART:19911216T000000
  934.81 +RDATE:19911216T000000
  934.82 +END:STANDARD
  934.83 +BEGIN:STANDARD
  934.84 +TZOFFSETFROM:+0500
  934.85 +TZOFFSETTO:+0600
  934.86 +TZNAME:QYZT
  934.87 +DTSTART:19920119T020000
  934.88 +RDATE:19920119T020000
  934.89 +END:STANDARD
  934.90 +BEGIN:DAYLIGHT
  934.91 +TZOFFSETFROM:+0600
  934.92 +TZOFFSETTO:+0700
  934.93 +TZNAME:QYZST
  934.94 +DTSTART:19920328T230000
  934.95 +RDATE:19920328T230000
  934.96 +RDATE:19930328T020000
  934.97 +RDATE:19940327T020000
  934.98 +RDATE:19950326T020000
  934.99 +RDATE:19960331T020000
 934.100 +RDATE:19970330T020000
 934.101 +RDATE:19980329T020000
 934.102 +RDATE:19990328T020000
 934.103 +RDATE:20000326T020000
 934.104 +RDATE:20010325T020000
 934.105 +RDATE:20020331T020000
 934.106 +RDATE:20030330T020000
 934.107 +RDATE:20040328T020000
 934.108 +END:DAYLIGHT
 934.109 +BEGIN:STANDARD
 934.110 +TZOFFSETFROM:+0700
 934.111 +TZOFFSETTO:+0600
 934.112 +TZNAME:QYZT
 934.113 +DTSTART:19920926T230000
 934.114 +RDATE:19920926T230000
 934.115 +RDATE:19930926T030000
 934.116 +RDATE:19940925T030000
 934.117 +RDATE:19950924T030000
 934.118 +RDATE:19961027T030000
 934.119 +RDATE:19971026T030000
 934.120 +RDATE:19981025T030000
 934.121 +RDATE:19991031T030000
 934.122 +RDATE:20001029T030000
 934.123 +RDATE:20011028T030000
 934.124 +RDATE:20021027T030000
 934.125 +RDATE:20031026T030000
 934.126 +RDATE:20041031T030000
 934.127 +END:STANDARD
 934.128 +BEGIN:STANDARD
 934.129 +TZOFFSETFROM:+0600
 934.130 +TZOFFSETTO:+0600
 934.131 +TZNAME:QYZT
 934.132 +DTSTART:20050315T000000
 934.133 +RDATE:20050315T000000
 934.134 +END:STANDARD
 934.135 +END:VTIMEZONE
 934.136 +END:VCALENDAR
   935.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   935.2 +++ b/src/zoneinfo/Asia/Rangoon.ics	Tue Feb 10 18:12:00 2015 +0100
   935.3 @@ -0,0 +1,37 @@
   935.4 +BEGIN:VCALENDAR
   935.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   935.6 +VERSION:2.0
   935.7 +BEGIN:VTIMEZONE
   935.8 +TZID:Asia/Rangoon
   935.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Rangoon
  935.10 +X-LIC-LOCATION:Asia/Rangoon
  935.11 +BEGIN:STANDARD
  935.12 +TZOFFSETFROM:+062440
  935.13 +TZOFFSETTO:+062436
  935.14 +TZNAME:RMT
  935.15 +DTSTART:18800101T000000
  935.16 +RDATE:18800101T000000
  935.17 +END:STANDARD
  935.18 +BEGIN:STANDARD
  935.19 +TZOFFSETFROM:+062436
  935.20 +TZOFFSETTO:+0630
  935.21 +TZNAME:BURT
  935.22 +DTSTART:19200101T000000
  935.23 +RDATE:19200101T000000
  935.24 +END:STANDARD
  935.25 +BEGIN:STANDARD
  935.26 +TZOFFSETFROM:+0630
  935.27 +TZOFFSETTO:+0900
  935.28 +TZNAME:JST
  935.29 +DTSTART:19420501T000000
  935.30 +RDATE:19420501T000000
  935.31 +END:STANDARD
  935.32 +BEGIN:STANDARD
  935.33 +TZOFFSETFROM:+0900
  935.34 +TZOFFSETTO:+0630
  935.35 +TZNAME:MMT
  935.36 +DTSTART:19450503T000000
  935.37 +RDATE:19450503T000000
  935.38 +END:STANDARD
  935.39 +END:VTIMEZONE
  935.40 +END:VCALENDAR
   936.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   936.2 +++ b/src/zoneinfo/Asia/Riyadh.ics	Tue Feb 10 18:12:00 2015 +0100
   936.3 @@ -0,0 +1,16 @@
   936.4 +BEGIN:VCALENDAR
   936.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   936.6 +VERSION:2.0
   936.7 +BEGIN:VTIMEZONE
   936.8 +TZID:Asia/Riyadh
   936.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Riyadh
  936.10 +X-LIC-LOCATION:Asia/Riyadh
  936.11 +BEGIN:STANDARD
  936.12 +TZOFFSETFROM:+030652
  936.13 +TZOFFSETTO:+0300
  936.14 +TZNAME:AST
  936.15 +DTSTART:19500101T000000
  936.16 +RDATE:19500101T000000
  936.17 +END:STANDARD
  936.18 +END:VTIMEZONE
  936.19 +END:VCALENDAR
   937.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   937.2 +++ b/src/zoneinfo/Asia/Sakhalin.ics	Tue Feb 10 18:12:00 2015 +0100
   937.3 @@ -0,0 +1,128 @@
   937.4 +BEGIN:VCALENDAR
   937.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   937.6 +VERSION:2.0
   937.7 +BEGIN:VTIMEZONE
   937.8 +TZID:Asia/Sakhalin
   937.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Sakhalin
  937.10 +X-LIC-LOCATION:Asia/Sakhalin
  937.11 +BEGIN:STANDARD
  937.12 +TZOFFSETFROM:+093048
  937.13 +TZOFFSETTO:+0900
  937.14 +TZNAME:CJT
  937.15 +DTSTART:19050823T000000
  937.16 +RDATE:19050823T000000
  937.17 +END:STANDARD
  937.18 +BEGIN:STANDARD
  937.19 +TZOFFSETFROM:+0900
  937.20 +TZOFFSETTO:+0900
  937.21 +TZNAME:JST
  937.22 +DTSTART:19380101T000000
  937.23 +RDATE:19380101T000000
  937.24 +END:STANDARD
  937.25 +BEGIN:STANDARD
  937.26 +TZOFFSETFROM:+0900
  937.27 +TZOFFSETTO:+1100
  937.28 +TZNAME:SAKT
  937.29 +DTSTART:19450825T000000
  937.30 +RDATE:19450825T000000
  937.31 +END:STANDARD
  937.32 +BEGIN:DAYLIGHT
  937.33 +TZOFFSETFROM:+1100
  937.34 +TZOFFSETTO:+1200
  937.35 +TZNAME:SAKST
  937.36 +DTSTART:19810401T000000
  937.37 +RDATE:19810401T000000
  937.38 +RDATE:19820401T000000
  937.39 +RDATE:19830401T000000
  937.40 +RDATE:19840401T000000
  937.41 +RDATE:19850331T020000
  937.42 +RDATE:19860330T020000
  937.43 +RDATE:19870329T020000
  937.44 +RDATE:19880327T020000
  937.45 +RDATE:19890326T020000
  937.46 +RDATE:19900325T020000
  937.47 +RDATE:19920328T230000
  937.48 +RDATE:19930328T020000
  937.49 +RDATE:19940327T020000
  937.50 +RDATE:19950326T020000
  937.51 +RDATE:19960331T020000
  937.52 +END:DAYLIGHT
  937.53 +BEGIN:STANDARD
  937.54 +TZOFFSETFROM:+1200
  937.55 +TZOFFSETTO:+1100
  937.56 +TZNAME:SAKT
  937.57 +DTSTART:19811001T000000
  937.58 +RDATE:19811001T000000
  937.59 +RDATE:19821001T000000
  937.60 +RDATE:19831001T000000
  937.61 +RDATE:19840930T030000
  937.62 +RDATE:19850929T030000
  937.63 +RDATE:19860928T030000
  937.64 +RDATE:19870927T030000
  937.65 +RDATE:19880925T030000
  937.66 +RDATE:19890924T030000
  937.67 +RDATE:19900930T030000
  937.68 +RDATE:19920926T230000
  937.69 +RDATE:19930926T030000
  937.70 +RDATE:19940925T030000
  937.71 +RDATE:19950924T030000
  937.72 +RDATE:19961027T030000
  937.73 +END:STANDARD
  937.74 +BEGIN:DAYLIGHT
  937.75 +TZOFFSETFROM:+1100
  937.76 +TZOFFSETTO:+1100
  937.77 +TZNAME:SAKST
  937.78 +DTSTART:19910331T020000
  937.79 +RDATE:19910331T020000
  937.80 +RDATE:19970330T020000
  937.81 +END:DAYLIGHT
  937.82 +BEGIN:STANDARD
  937.83 +TZOFFSETFROM:+1100
  937.84 +TZOFFSETTO:+1000
  937.85 +TZNAME:SAKT
  937.86 +DTSTART:19910929T030000
  937.87 +RDATE:19910929T030000
  937.88 +RDATE:19971026T030000
  937.89 +RDATE:19981025T030000
  937.90 +RDATE:19991031T030000
  937.91 +RDATE:20001029T030000
  937.92 +RDATE:20011028T030000
  937.93 +RDATE:20021027T030000
  937.94 +RDATE:20031026T030000
  937.95 +RDATE:20041031T030000
  937.96 +RDATE:20051030T030000
  937.97 +RDATE:20061029T030000
  937.98 +RDATE:20071028T030000
  937.99 +RDATE:20081026T030000
 937.100 +RDATE:20091025T030000
 937.101 +RDATE:20101031T030000
 937.102 +END:STANDARD
 937.103 +BEGIN:STANDARD
 937.104 +TZOFFSETFROM:+1000
 937.105 +TZOFFSETTO:+1100
 937.106 +TZNAME:SAKT
 937.107 +DTSTART:19920119T020000
 937.108 +RDATE:19920119T020000
 937.109 +RDATE:20110327T020000
 937.110 +END:STANDARD
 937.111 +BEGIN:DAYLIGHT
 937.112 +TZOFFSETFROM:+1000
 937.113 +TZOFFSETTO:+1100
 937.114 +TZNAME:SAKST
 937.115 +DTSTART:19980329T020000
 937.116 +RDATE:19980329T020000
 937.117 +RDATE:19990328T020000
 937.118 +RDATE:20000326T020000
 937.119 +RDATE:20010325T020000
 937.120 +RDATE:20020331T020000
 937.121 +RDATE:20030330T020000
 937.122 +RDATE:20040328T020000
 937.123 +RDATE:20050327T020000
 937.124 +RDATE:20060326T020000
 937.125 +RDATE:20070325T020000
 937.126 +RDATE:20080330T020000
 937.127 +RDATE:20090329T020000
 937.128 +RDATE:20100328T020000
 937.129 +END:DAYLIGHT
 937.130 +END:VTIMEZONE
 937.131 +END:VCALENDAR
   938.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   938.2 +++ b/src/zoneinfo/Asia/Samarkand.ics	Tue Feb 10 18:12:00 2015 +0100
   938.3 @@ -0,0 +1,89 @@
   938.4 +BEGIN:VCALENDAR
   938.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   938.6 +VERSION:2.0
   938.7 +BEGIN:VTIMEZONE
   938.8 +TZID:Asia/Samarkand
   938.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Samarkand
  938.10 +X-LIC-LOCATION:Asia/Samarkand
  938.11 +BEGIN:STANDARD
  938.12 +TZOFFSETFROM:+042712
  938.13 +TZOFFSETTO:+0400
  938.14 +TZNAME:SAMT
  938.15 +DTSTART:19240502T000000
  938.16 +RDATE:19240502T000000
  938.17 +END:STANDARD
  938.18 +BEGIN:STANDARD
  938.19 +TZOFFSETFROM:+0400
  938.20 +TZOFFSETTO:+0500
  938.21 +TZNAME:SAMT
  938.22 +DTSTART:19300621T000000
  938.23 +RDATE:19300621T000000
  938.24 +END:STANDARD
  938.25 +BEGIN:DAYLIGHT
  938.26 +TZOFFSETFROM:+0500
  938.27 +TZOFFSETTO:+0600
  938.28 +TZNAME:SAMST
  938.29 +DTSTART:19810401T000000
  938.30 +RDATE:19810401T000000
  938.31 +RDATE:19830401T000000
  938.32 +RDATE:19840401T000000
  938.33 +RDATE:19850331T020000
  938.34 +RDATE:19860330T020000
  938.35 +RDATE:19870329T020000
  938.36 +RDATE:19880327T020000
  938.37 +RDATE:19890326T020000
  938.38 +RDATE:19900325T020000
  938.39 +RDATE:19910331T020000
  938.40 +END:DAYLIGHT
  938.41 +BEGIN:STANDARD
  938.42 +TZOFFSETFROM:+0600
  938.43 +TZOFFSETTO:+0600
  938.44 +TZNAME:TAST
  938.45 +DTSTART:19811001T000000
  938.46 +RDATE:19811001T000000
  938.47 +END:STANDARD
  938.48 +BEGIN:DAYLIGHT
  938.49 +TZOFFSETFROM:+0600
  938.50 +TZOFFSETTO:+0600
  938.51 +TZNAME:SAMST
  938.52 +DTSTART:19820401T000000
  938.53 +RDATE:19820401T000000
  938.54 +END:DAYLIGHT
  938.55 +BEGIN:STANDARD
  938.56 +TZOFFSETFROM:+0600
  938.57 +TZOFFSETTO:+0500
  938.58 +TZNAME:SAMT
  938.59 +DTSTART:19821001T000000
  938.60 +RDATE:19821001T000000
  938.61 +RDATE:19831001T000000
  938.62 +RDATE:19840930T030000
  938.63 +RDATE:19850929T030000
  938.64 +RDATE:19860928T030000
  938.65 +RDATE:19870927T030000
  938.66 +RDATE:19880925T030000
  938.67 +RDATE:19890924T030000
  938.68 +RDATE:19900930T030000
  938.69 +END:STANDARD
  938.70 +BEGIN:DAYLIGHT
  938.71 +TZOFFSETFROM:+0600
  938.72 +TZOFFSETTO:+0600
  938.73 +TZNAME:UZST
  938.74 +DTSTART:19910901T000000
  938.75 +RDATE:19910901T000000
  938.76 +END:DAYLIGHT
  938.77 +BEGIN:STANDARD
  938.78 +TZOFFSETFROM:+0600
  938.79 +TZOFFSETTO:+0500
  938.80 +TZNAME:UZT
  938.81 +DTSTART:19910929T030000
  938.82 +RDATE:19910929T030000
  938.83 +END:STANDARD
  938.84 +BEGIN:STANDARD
  938.85 +TZOFFSETFROM:+0500
  938.86 +TZOFFSETTO:+0500
  938.87 +TZNAME:UZT
  938.88 +DTSTART:19920101T000000
  938.89 +RDATE:19920101T000000
  938.90 +END:STANDARD
  938.91 +END:VTIMEZONE
  938.92 +END:VCALENDAR
   939.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   939.2 +++ b/src/zoneinfo/Asia/Seoul.ics	Tue Feb 10 18:12:00 2015 +0100
   939.3 @@ -0,0 +1,70 @@
   939.4 +BEGIN:VCALENDAR
   939.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   939.6 +VERSION:2.0
   939.7 +BEGIN:VTIMEZONE
   939.8 +TZID:Asia/Seoul
   939.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Seoul
  939.10 +X-LIC-LOCATION:Asia/Seoul
  939.11 +BEGIN:STANDARD
  939.12 +TZOFFSETFROM:+082752
  939.13 +TZOFFSETTO:+0830
  939.14 +TZNAME:KST
  939.15 +DTSTART:18900101T000000
  939.16 +RDATE:18900101T000000
  939.17 +END:STANDARD
  939.18 +BEGIN:STANDARD
  939.19 +TZOFFSETFROM:+0830
  939.20 +TZOFFSETTO:+0900
  939.21 +TZNAME:KST
  939.22 +DTSTART:19041201T000000
  939.23 +RDATE:19041201T000000
  939.24 +RDATE:19320101T000000
  939.25 +RDATE:19681001T000000
  939.26 +END:STANDARD
  939.27 +BEGIN:STANDARD
  939.28 +TZOFFSETFROM:+0900
  939.29 +TZOFFSETTO:+0830
  939.30 +TZNAME:KST
  939.31 +DTSTART:19280101T000000
  939.32 +RDATE:19280101T000000
  939.33 +END:STANDARD
  939.34 +BEGIN:STANDARD
  939.35 +TZOFFSETFROM:+0900
  939.36 +TZOFFSETTO:+0800
  939.37 +TZNAME:KST
  939.38 +DTSTART:19540321T000000
  939.39 +RDATE:19540321T000000
  939.40 +RDATE:19600913T000000
  939.41 +END:STANDARD
  939.42 +BEGIN:DAYLIGHT
  939.43 +TZOFFSETFROM:+0800
  939.44 +TZOFFSETTO:+0900
  939.45 +TZNAME:KDT
  939.46 +DTSTART:19600515T000000
  939.47 +RDATE:19600515T000000
  939.48 +END:DAYLIGHT
  939.49 +BEGIN:STANDARD
  939.50 +TZOFFSETFROM:+0800
  939.51 +TZOFFSETTO:+0830
  939.52 +TZNAME:KST
  939.53 +DTSTART:19610810T000000
  939.54 +RDATE:19610810T000000
  939.55 +END:STANDARD
  939.56 +BEGIN:DAYLIGHT
  939.57 +TZOFFSETFROM:+0900
  939.58 +TZOFFSETTO:+1000
  939.59 +TZNAME:KDT
  939.60 +DTSTART:19870510T000000
  939.61 +RDATE:19870510T000000
  939.62 +RDATE:19880508T000000
  939.63 +END:DAYLIGHT
  939.64 +BEGIN:STANDARD
  939.65 +TZOFFSETFROM:+1000
  939.66 +TZOFFSETTO:+0900
  939.67 +TZNAME:KST
  939.68 +DTSTART:19871011T000000
  939.69 +RDATE:19871011T000000
  939.70 +RDATE:19881009T000000
  939.71 +END:STANDARD
  939.72 +END:VTIMEZONE
  939.73 +END:VCALENDAR
   940.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   940.2 +++ b/src/zoneinfo/Asia/Shanghai.ics	Tue Feb 10 18:12:00 2015 +0100
   940.3 @@ -0,0 +1,51 @@
   940.4 +BEGIN:VCALENDAR
   940.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   940.6 +VERSION:2.0
   940.7 +BEGIN:VTIMEZONE
   940.8 +TZID:Asia/Shanghai
   940.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Shanghai
  940.10 +X-LIC-LOCATION:Asia/Shanghai
  940.11 +BEGIN:STANDARD
  940.12 +TZOFFSETFROM:+080552
  940.13 +TZOFFSETTO:+0800
  940.14 +TZNAME:CST
  940.15 +DTSTART:19280101T000000
  940.16 +RDATE:19280101T000000
  940.17 +END:STANDARD
  940.18 +BEGIN:DAYLIGHT
  940.19 +TZOFFSETFROM:+0800
  940.20 +TZOFFSETTO:+0900
  940.21 +TZNAME:CDT
  940.22 +DTSTART:19400603T000000
  940.23 +RDATE:19400603T000000
  940.24 +RDATE:19410316T000000
  940.25 +RDATE:19860504T000000
  940.26 +RDATE:19870412T000000
  940.27 +RDATE:19880410T000000
  940.28 +RDATE:19890416T000000
  940.29 +RDATE:19900415T000000
  940.30 +RDATE:19910414T000000
  940.31 +END:DAYLIGHT
  940.32 +BEGIN:STANDARD
  940.33 +TZOFFSETFROM:+0900
  940.34 +TZOFFSETTO:+0800
  940.35 +TZNAME:CST
  940.36 +DTSTART:19401001T000000
  940.37 +RDATE:19401001T000000
  940.38 +RDATE:19411001T000000
  940.39 +RDATE:19860914T000000
  940.40 +RDATE:19870913T000000
  940.41 +RDATE:19880911T000000
  940.42 +RDATE:19890917T000000
  940.43 +RDATE:19900916T000000
  940.44 +RDATE:19910915T000000
  940.45 +END:STANDARD
  940.46 +BEGIN:STANDARD
  940.47 +TZOFFSETFROM:+0800
  940.48 +TZOFFSETTO:+0800
  940.49 +TZNAME:CST
  940.50 +DTSTART:19490101T000000
  940.51 +RDATE:19490101T000000
  940.52 +END:STANDARD
  940.53 +END:VTIMEZONE
  940.54 +END:VCALENDAR
   941.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   941.2 +++ b/src/zoneinfo/Asia/Singapore.ics	Tue Feb 10 18:12:00 2015 +0100
   941.3 @@ -0,0 +1,72 @@
   941.4 +BEGIN:VCALENDAR
   941.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   941.6 +VERSION:2.0
   941.7 +BEGIN:VTIMEZONE
   941.8 +TZID:Asia/Singapore
   941.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Singapore
  941.10 +X-LIC-LOCATION:Asia/Singapore
  941.11 +BEGIN:STANDARD
  941.12 +TZOFFSETFROM:+065525
  941.13 +TZOFFSETTO:+065525
  941.14 +TZNAME:SMT
  941.15 +DTSTART:19010101T000000
  941.16 +RDATE:19010101T000000
  941.17 +END:STANDARD
  941.18 +BEGIN:STANDARD
  941.19 +TZOFFSETFROM:+065525
  941.20 +TZOFFSETTO:+0700
  941.21 +TZNAME:MALT
  941.22 +DTSTART:19050601T000000
  941.23 +RDATE:19050601T000000
  941.24 +END:STANDARD
  941.25 +BEGIN:DAYLIGHT
  941.26 +TZOFFSETFROM:+0700
  941.27 +TZOFFSETTO:+0720
  941.28 +TZNAME:MALST
  941.29 +DTSTART:19330101T000000
  941.30 +RDATE:19330101T000000
  941.31 +END:DAYLIGHT
  941.32 +BEGIN:STANDARD
  941.33 +TZOFFSETFROM:+0720
  941.34 +TZOFFSETTO:+0720
  941.35 +TZNAME:MALT
  941.36 +DTSTART:19360101T000000
  941.37 +RDATE:19360101T000000
  941.38 +END:STANDARD
  941.39 +BEGIN:STANDARD
  941.40 +TZOFFSETFROM:+0720
  941.41 +TZOFFSETTO:+0730
  941.42 +TZNAME:MALT
  941.43 +DTSTART:19410901T000000
  941.44 +RDATE:19410901T000000
  941.45 +END:STANDARD
  941.46 +BEGIN:STANDARD
  941.47 +TZOFFSETFROM:+0730
  941.48 +TZOFFSETTO:+0900
  941.49 +TZNAME:JST
  941.50 +DTSTART:19420216T000000
  941.51 +RDATE:19420216T000000
  941.52 +END:STANDARD
  941.53 +BEGIN:STANDARD
  941.54 +TZOFFSETFROM:+0900
  941.55 +TZOFFSETTO:+0730
  941.56 +TZNAME:MALT
  941.57 +DTSTART:19450912T000000
  941.58 +RDATE:19450912T000000
  941.59 +END:STANDARD
  941.60 +BEGIN:STANDARD
  941.61 +TZOFFSETFROM:+0730
  941.62 +TZOFFSETTO:+0730
  941.63 +TZNAME:SGT
  941.64 +DTSTART:19650809T000000
  941.65 +RDATE:19650809T000000
  941.66 +END:STANDARD
  941.67 +BEGIN:STANDARD
  941.68 +TZOFFSETFROM:+0730
  941.69 +TZOFFSETTO:+0800
  941.70 +TZNAME:SGT
  941.71 +DTSTART:19820101T000000
  941.72 +RDATE:19820101T000000
  941.73 +END:STANDARD
  941.74 +END:VTIMEZONE
  941.75 +END:VCALENDAR
   942.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   942.2 +++ b/src/zoneinfo/Asia/Taipei.ics	Tue Feb 10 18:12:00 2015 +0100
   942.3 @@ -0,0 +1,68 @@
   942.4 +BEGIN:VCALENDAR
   942.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   942.6 +VERSION:2.0
   942.7 +BEGIN:VTIMEZONE
   942.8 +TZID:Asia/Taipei
   942.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Taipei
  942.10 +X-LIC-LOCATION:Asia/Taipei
  942.11 +BEGIN:STANDARD
  942.12 +TZOFFSETFROM:+0806
  942.13 +TZOFFSETTO:+0800
  942.14 +TZNAME:CST
  942.15 +DTSTART:18960101T000000
  942.16 +RDATE:18960101T000000
  942.17 +END:STANDARD
  942.18 +BEGIN:DAYLIGHT
  942.19 +TZOFFSETFROM:+0800
  942.20 +TZOFFSETTO:+0900
  942.21 +TZNAME:CDT
  942.22 +DTSTART:19450501T000000
  942.23 +RDATE:19450501T000000
  942.24 +RDATE:19460501T000000
  942.25 +RDATE:19470501T000000
  942.26 +RDATE:19480501T000000
  942.27 +RDATE:19490501T000000
  942.28 +RDATE:19500501T000000
  942.29 +RDATE:19510501T000000
  942.30 +RDATE:19520301T000000
  942.31 +RDATE:19530401T000000
  942.32 +RDATE:19540401T000000
  942.33 +RDATE:19550401T000000
  942.34 +RDATE:19560401T000000
  942.35 +RDATE:19570401T000000
  942.36 +RDATE:19580401T000000
  942.37 +RDATE:19590401T000000
  942.38 +RDATE:19600601T000000
  942.39 +RDATE:19610601T000000
  942.40 +RDATE:19740401T000000
  942.41 +RDATE:19750401T000000
  942.42 +RDATE:19790630T000000
  942.43 +END:DAYLIGHT
  942.44 +BEGIN:STANDARD
  942.45 +TZOFFSETFROM:+0900
  942.46 +TZOFFSETTO:+0800
  942.47 +TZNAME:CST
  942.48 +DTSTART:19451001T000000
  942.49 +RDATE:19451001T000000
  942.50 +RDATE:19461001T000000
  942.51 +RDATE:19471001T000000
  942.52 +RDATE:19481001T000000
  942.53 +RDATE:19491001T000000
  942.54 +RDATE:19501001T000000
  942.55 +RDATE:19511001T000000
  942.56 +RDATE:19521101T000000
  942.57 +RDATE:19531101T000000
  942.58 +RDATE:19541101T000000
  942.59 +RDATE:19551001T000000
  942.60 +RDATE:19561001T000000
  942.61 +RDATE:19571001T000000
  942.62 +RDATE:19581001T000000
  942.63 +RDATE:19591001T000000
  942.64 +RDATE:19601001T000000
  942.65 +RDATE:19611001T000000
  942.66 +RDATE:19741001T000000
  942.67 +RDATE:19751001T000000
  942.68 +RDATE:19790930T000000
  942.69 +END:STANDARD
  942.70 +END:VTIMEZONE
  942.71 +END:VCALENDAR
   943.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   943.2 +++ b/src/zoneinfo/Asia/Tashkent.ics	Tue Feb 10 18:12:00 2015 +0100
   943.3 @@ -0,0 +1,83 @@
   943.4 +BEGIN:VCALENDAR
   943.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   943.6 +VERSION:2.0
   943.7 +BEGIN:VTIMEZONE
   943.8 +TZID:Asia/Tashkent
   943.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Tashkent
  943.10 +X-LIC-LOCATION:Asia/Tashkent
  943.11 +BEGIN:STANDARD
  943.12 +TZOFFSETFROM:+043712
  943.13 +TZOFFSETTO:+0500
  943.14 +TZNAME:TAST
  943.15 +DTSTART:19240502T000000
  943.16 +RDATE:19240502T000000
  943.17 +END:STANDARD
  943.18 +BEGIN:STANDARD
  943.19 +TZOFFSETFROM:+0500
  943.20 +TZOFFSETTO:+0600
  943.21 +TZNAME:TAST
  943.22 +DTSTART:19300621T000000
  943.23 +RDATE:19300621T000000
  943.24 +END:STANDARD
  943.25 +BEGIN:DAYLIGHT
  943.26 +TZOFFSETFROM:+0600
  943.27 +TZOFFSETTO:+0700
  943.28 +TZNAME:TASST
  943.29 +DTSTART:19810401T000000
  943.30 +RDATE:19810401T000000
  943.31 +RDATE:19820401T000000
  943.32 +RDATE:19830401T000000
  943.33 +RDATE:19840401T000000
  943.34 +RDATE:19850331T020000
  943.35 +RDATE:19860330T020000
  943.36 +RDATE:19870329T020000
  943.37 +RDATE:19880327T020000
  943.38 +RDATE:19890326T020000
  943.39 +RDATE:19900325T020000
  943.40 +END:DAYLIGHT
  943.41 +BEGIN:STANDARD
  943.42 +TZOFFSETFROM:+0700
  943.43 +TZOFFSETTO:+0600
  943.44 +TZNAME:TAST
  943.45 +DTSTART:19811001T000000
  943.46 +RDATE:19811001T000000
  943.47 +RDATE:19821001T000000
  943.48 +RDATE:19831001T000000
  943.49 +RDATE:19840930T030000
  943.50 +RDATE:19850929T030000
  943.51 +RDATE:19860928T030000
  943.52 +RDATE:19870927T030000
  943.53 +RDATE:19880925T030000
  943.54 +RDATE:19890924T030000
  943.55 +RDATE:19900930T030000
  943.56 +END:STANDARD
  943.57 +BEGIN:DAYLIGHT
  943.58 +TZOFFSETFROM:+0600
  943.59 +TZOFFSETTO:+0600
  943.60 +TZNAME:TASST
  943.61 +DTSTART:19910331T020000
  943.62 +RDATE:19910331T020000
  943.63 +END:DAYLIGHT
  943.64 +BEGIN:DAYLIGHT
  943.65 +TZOFFSETFROM:+0600
  943.66 +TZOFFSETTO:+0600
  943.67 +TZNAME:UZST
  943.68 +DTSTART:19910901T000000
  943.69 +RDATE:19910901T000000
  943.70 +END:DAYLIGHT
  943.71 +BEGIN:STANDARD
  943.72 +TZOFFSETFROM:+0600
  943.73 +TZOFFSETTO:+0500
  943.74 +TZNAME:UZT
  943.75 +DTSTART:19910929T030000
  943.76 +RDATE:19910929T030000
  943.77 +END:STANDARD
  943.78 +BEGIN:STANDARD
  943.79 +TZOFFSETFROM:+0500
  943.80 +TZOFFSETTO:+0500
  943.81 +TZNAME:UZT
  943.82 +DTSTART:19920101T000000
  943.83 +RDATE:19920101T000000
  943.84 +END:STANDARD
  943.85 +END:VTIMEZONE
  943.86 +END:VCALENDAR
   944.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   944.2 +++ b/src/zoneinfo/Asia/Tbilisi.ics	Tue Feb 10 18:12:00 2015 +0100
   944.3 @@ -0,0 +1,160 @@
   944.4 +BEGIN:VCALENDAR
   944.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   944.6 +VERSION:2.0
   944.7 +BEGIN:VTIMEZONE
   944.8 +TZID:Asia/Tbilisi
   944.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Tbilisi
  944.10 +X-LIC-LOCATION:Asia/Tbilisi
  944.11 +BEGIN:STANDARD
  944.12 +TZOFFSETFROM:+025916
  944.13 +TZOFFSETTO:+025916
  944.14 +TZNAME:TBMT
  944.15 +DTSTART:18800101T000000
  944.16 +RDATE:18800101T000000
  944.17 +END:STANDARD
  944.18 +BEGIN:STANDARD
  944.19 +TZOFFSETFROM:+025916
  944.20 +TZOFFSETTO:+0300
  944.21 +TZNAME:TBIT
  944.22 +DTSTART:19240502T000000
  944.23 +RDATE:19240502T000000
  944.24 +END:STANDARD
  944.25 +BEGIN:STANDARD
  944.26 +TZOFFSETFROM:+0300
  944.27 +TZOFFSETTO:+0400
  944.28 +TZNAME:TBIT
  944.29 +DTSTART:19570301T000000
  944.30 +RDATE:19570301T000000
  944.31 +END:STANDARD
  944.32 +BEGIN:DAYLIGHT
  944.33 +TZOFFSETFROM:+0400
  944.34 +TZOFFSETTO:+0500
  944.35 +TZNAME:TBIST
  944.36 +DTSTART:19810401T000000
  944.37 +RDATE:19810401T000000
  944.38 +RDATE:19820401T000000
  944.39 +RDATE:19830401T000000
  944.40 +RDATE:19840401T000000
  944.41 +RDATE:19850331T020000
  944.42 +RDATE:19860330T020000
  944.43 +RDATE:19870329T020000
  944.44 +RDATE:19880327T020000
  944.45 +RDATE:19890326T020000
  944.46 +RDATE:19900325T020000
  944.47 +END:DAYLIGHT
  944.48 +BEGIN:STANDARD
  944.49 +TZOFFSETFROM:+0500
  944.50 +TZOFFSETTO:+0400
  944.51 +TZNAME:TBIT
  944.52 +DTSTART:19811001T000000
  944.53 +RDATE:19811001T000000
  944.54 +RDATE:19821001T000000
  944.55 +RDATE:19831001T000000
  944.56 +RDATE:19840930T030000
  944.57 +RDATE:19850929T030000
  944.58 +RDATE:19860928T030000
  944.59 +RDATE:19870927T030000
  944.60 +RDATE:19880925T030000
  944.61 +RDATE:19890924T030000
  944.62 +RDATE:19900930T030000
  944.63 +END:STANDARD
  944.64 +BEGIN:DAYLIGHT
  944.65 +TZOFFSETFROM:+0400
  944.66 +TZOFFSETTO:+0400
  944.67 +TZNAME:TBIST
  944.68 +DTSTART:19910331T020000
  944.69 +RDATE:19910331T020000
  944.70 +END:DAYLIGHT
  944.71 +BEGIN:DAYLIGHT
  944.72 +TZOFFSETFROM:+0400
  944.73 +TZOFFSETTO:+0400
  944.74 +TZNAME:GEST
  944.75 +DTSTART:19910409T000000
  944.76 +RDATE:19910409T000000
  944.77 +END:DAYLIGHT
  944.78 +BEGIN:STANDARD
  944.79 +TZOFFSETFROM:+0400
  944.80 +TZOFFSETTO:+0300
  944.81 +TZNAME:GET
  944.82 +DTSTART:19910929T030000
  944.83 +RDATE:19910929T030000
  944.84 +RDATE:19920927T000000
  944.85 +RDATE:19930926T000000
  944.86 +RDATE:20041031T030000
  944.87 +END:STANDARD
  944.88 +BEGIN:STANDARD
  944.89 +TZOFFSETFROM:+0300
  944.90 +TZOFFSETTO:+0300
  944.91 +TZNAME:GET
  944.92 +DTSTART:19920101T000000
  944.93 +RDATE:19920101T000000
  944.94 +END:STANDARD
  944.95 +BEGIN:DAYLIGHT
  944.96 +TZOFFSETFROM:+0300
  944.97 +TZOFFSETTO:+0400
  944.98 +TZNAME:GEST
  944.99 +DTSTART:19920329T000000
 944.100 +RDATE:19920329T000000
 944.101 +RDATE:19930328T000000
 944.102 +RDATE:19940327T000000
 944.103 +END:DAYLIGHT
 944.104 +BEGIN:STANDARD
 944.105 +TZOFFSETFROM:+0400
 944.106 +TZOFFSETTO:+0400
 944.107 +TZNAME:GET
 944.108 +DTSTART:19940925T000000
 944.109 +RDATE:19940925T000000
 944.110 +END:STANDARD
 944.111 +BEGIN:DAYLIGHT
 944.112 +TZOFFSETFROM:+0400
 944.113 +TZOFFSETTO:+0500
 944.114 +TZNAME:GEST
 944.115 +DTSTART:19950326T000000
 944.116 +RDATE:19950326T000000
 944.117 +RDATE:19960331T000000
 944.118 +RDATE:19980329T000000
 944.119 +RDATE:19990328T000000
 944.120 +RDATE:20000326T000000
 944.121 +RDATE:20010325T000000
 944.122 +RDATE:20020331T000000
 944.123 +RDATE:20030330T000000
 944.124 +RDATE:20040328T000000
 944.125 +END:DAYLIGHT
 944.126 +BEGIN:STANDARD
 944.127 +TZOFFSETFROM:+0500
 944.128 +TZOFFSETTO:+0400
 944.129 +TZNAME:GET
 944.130 +DTSTART:19950924T000000
 944.131 +RDATE:19950924T000000
 944.132 +RDATE:19971026T000000
 944.133 +RDATE:19981025T000000
 944.134 +RDATE:19991031T000000
 944.135 +RDATE:20001029T000000
 944.136 +RDATE:20011028T000000
 944.137 +RDATE:20021027T000000
 944.138 +RDATE:20031026T000000
 944.139 +END:STANDARD
 944.140 +BEGIN:DAYLIGHT
 944.141 +TZOFFSETFROM:+0500
 944.142 +TZOFFSETTO:+0500
 944.143 +TZNAME:GEST
 944.144 +DTSTART:19961027T000000
 944.145 +RDATE:19961027T000000
 944.146 +RDATE:19970330T000000
 944.147 +END:DAYLIGHT
 944.148 +BEGIN:DAYLIGHT
 944.149 +TZOFFSETFROM:+0500
 944.150 +TZOFFSETTO:+0400
 944.151 +TZNAME:GEST
 944.152 +DTSTART:20040627T000000
 944.153 +RDATE:20040627T000000
 944.154 +END:DAYLIGHT
 944.155 +BEGIN:STANDARD
 944.156 +TZOFFSETFROM:+0300
 944.157 +TZOFFSETTO:+0400
 944.158 +TZNAME:GET
 944.159 +DTSTART:20050327T020000
 944.160 +RDATE:20050327T020000
 944.161 +END:STANDARD
 944.162 +END:VTIMEZONE
 944.163 +END:VCALENDAR
   945.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   945.2 +++ b/src/zoneinfo/Asia/Tehran.ics	Tue Feb 10 18:12:00 2015 +0100
   945.3 @@ -0,0 +1,157 @@
   945.4 +BEGIN:VCALENDAR
   945.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   945.6 +VERSION:2.0
   945.7 +BEGIN:VTIMEZONE
   945.8 +TZID:Asia/Tehran
   945.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Tehran
  945.10 +X-LIC-LOCATION:Asia/Tehran
  945.11 +BEGIN:STANDARD
  945.12 +TZOFFSETFROM:+032544
  945.13 +TZOFFSETTO:+032544
  945.14 +TZNAME:TMT
  945.15 +DTSTART:19160101T000000
  945.16 +RDATE:19160101T000000
  945.17 +END:STANDARD
  945.18 +BEGIN:STANDARD
  945.19 +TZOFFSETFROM:+032544
  945.20 +TZOFFSETTO:+0330
  945.21 +TZNAME:IRST
  945.22 +DTSTART:19460101T000000
  945.23 +RDATE:19460101T000000
  945.24 +END:STANDARD
  945.25 +BEGIN:STANDARD
  945.26 +TZOFFSETFROM:+0330
  945.27 +TZOFFSETTO:+0400
  945.28 +TZNAME:IRST
  945.29 +DTSTART:19771101T000000
  945.30 +RDATE:19771101T000000
  945.31 +END:STANDARD
  945.32 +BEGIN:DAYLIGHT
  945.33 +TZOFFSETFROM:+0400
  945.34 +TZOFFSETTO:+0500
  945.35 +TZNAME:IRDT
  945.36 +DTSTART:19780321T000000
  945.37 +RDATE:19780321T000000
  945.38 +END:DAYLIGHT
  945.39 +BEGIN:STANDARD
  945.40 +TZOFFSETFROM:+0500
  945.41 +TZOFFSETTO:+0400
  945.42 +TZNAME:IRST
  945.43 +DTSTART:19781021T000000
  945.44 +RDATE:19781021T000000
  945.45 +END:STANDARD
  945.46 +BEGIN:STANDARD
  945.47 +TZOFFSETFROM:+0400
  945.48 +TZOFFSETTO:+0330
  945.49 +TZNAME:IRST
  945.50 +DTSTART:19790101T000000
  945.51 +RDATE:19790101T000000
  945.52 +END:STANDARD
  945.53 +BEGIN:DAYLIGHT
  945.54 +TZOFFSETFROM:+0330
  945.55 +TZOFFSETTO:+0430
  945.56 +TZNAME:IRDT
  945.57 +DTSTART:19790321T000000
  945.58 +RDATE:19790321T000000
  945.59 +RDATE:19800321T000000
  945.60 +RDATE:19910503T000000
  945.61 +RDATE:19920322T000000
  945.62 +RDATE:19930322T000000
  945.63 +RDATE:19940322T000000
  945.64 +RDATE:19950322T000000
  945.65 +RDATE:19960321T000000
  945.66 +RDATE:19970322T000000
  945.67 +RDATE:19980322T000000
  945.68 +RDATE:19990322T000000
  945.69 +RDATE:20000321T000000
  945.70 +RDATE:20010322T000000
  945.71 +RDATE:20020322T000000
  945.72 +RDATE:20030322T000000
  945.73 +RDATE:20040321T000000
  945.74 +RDATE:20050322T000000
  945.75 +RDATE:20080321T000000
  945.76 +RDATE:20090322T000000
  945.77 +RDATE:20100322T000000
  945.78 +RDATE:20110322T000000
  945.79 +RDATE:20120321T000000
  945.80 +RDATE:20130322T000000
  945.81 +RDATE:20140322T000000
  945.82 +RDATE:20150322T000000
  945.83 +RDATE:20160321T000000
  945.84 +RDATE:20170322T000000
  945.85 +RDATE:20180322T000000
  945.86 +RDATE:20190322T000000
  945.87 +RDATE:20200321T000000
  945.88 +RDATE:20210322T000000
  945.89 +RDATE:20220322T000000
  945.90 +RDATE:20230322T000000
  945.91 +RDATE:20240321T000000
  945.92 +RDATE:20250322T000000
  945.93 +RDATE:20260322T000000
  945.94 +RDATE:20270322T000000
  945.95 +RDATE:20280321T000000
  945.96 +RDATE:20290321T000000
  945.97 +RDATE:20300322T000000
  945.98 +RDATE:20310322T000000
  945.99 +RDATE:20320321T000000
 945.100 +RDATE:20330321T000000
 945.101 +RDATE:20340322T000000
 945.102 +RDATE:20350322T000000
 945.103 +RDATE:20360321T000000
 945.104 +RDATE:20370321T000000
 945.105 +END:DAYLIGHT
 945.106 +BEGIN:STANDARD
 945.107 +TZOFFSETFROM:+0430
 945.108 +TZOFFSETTO:+0330
 945.109 +TZNAME:IRST
 945.110 +DTSTART:19790919T000000
 945.111 +RDATE:19790919T000000
 945.112 +RDATE:19800923T000000
 945.113 +RDATE:19910922T000000
 945.114 +RDATE:19920922T000000
 945.115 +RDATE:19930922T000000
 945.116 +RDATE:19940922T000000
 945.117 +RDATE:19950922T000000
 945.118 +RDATE:19960921T000000
 945.119 +RDATE:19970922T000000
 945.120 +RDATE:19980922T000000
 945.121 +RDATE:19990922T000000
 945.122 +RDATE:20000921T000000
 945.123 +RDATE:20010922T000000
 945.124 +RDATE:20020922T000000
 945.125 +RDATE:20030922T000000
 945.126 +RDATE:20040921T000000
 945.127 +RDATE:20050922T000000
 945.128 +RDATE:20080921T000000
 945.129 +RDATE:20090922T000000
 945.130 +RDATE:20100922T000000
 945.131 +RDATE:20110922T000000
 945.132 +RDATE:20120921T000000
 945.133 +RDATE:20130922T000000
 945.134 +RDATE:20140922T000000
 945.135 +RDATE:20150922T000000
 945.136 +RDATE:20160921T000000
 945.137 +RDATE:20170922T000000
 945.138 +RDATE:20180922T000000
 945.139 +RDATE:20190922T000000
 945.140 +RDATE:20200921T000000
 945.141 +RDATE:20210922T000000
 945.142 +RDATE:20220922T000000
 945.143 +RDATE:20230922T000000
 945.144 +RDATE:20240921T000000
 945.145 +RDATE:20250922T000000
 945.146 +RDATE:20260922T000000
 945.147 +RDATE:20270922T000000
 945.148 +RDATE:20280921T000000
 945.149 +RDATE:20290921T000000
 945.150 +RDATE:20300922T000000
 945.151 +RDATE:20310922T000000
 945.152 +RDATE:20320921T000000
 945.153 +RDATE:20330921T000000
 945.154 +RDATE:20340922T000000
 945.155 +RDATE:20350922T000000
 945.156 +RDATE:20360921T000000
 945.157 +RDATE:20370921T000000
 945.158 +END:STANDARD
 945.159 +END:VTIMEZONE
 945.160 +END:VCALENDAR
   946.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   946.2 +++ b/src/zoneinfo/Asia/Thimphu.ics	Tue Feb 10 18:12:00 2015 +0100
   946.3 @@ -0,0 +1,23 @@
   946.4 +BEGIN:VCALENDAR
   946.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   946.6 +VERSION:2.0
   946.7 +BEGIN:VTIMEZONE
   946.8 +TZID:Asia/Thimphu
   946.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Thimphu
  946.10 +X-LIC-LOCATION:Asia/Thimphu
  946.11 +BEGIN:STANDARD
  946.12 +TZOFFSETFROM:+055836
  946.13 +TZOFFSETTO:+0530
  946.14 +TZNAME:IST
  946.15 +DTSTART:19470815T000000
  946.16 +RDATE:19470815T000000
  946.17 +END:STANDARD
  946.18 +BEGIN:STANDARD
  946.19 +TZOFFSETFROM:+0530
  946.20 +TZOFFSETTO:+0600
  946.21 +TZNAME:BTT
  946.22 +DTSTART:19871001T000000
  946.23 +RDATE:19871001T000000
  946.24 +END:STANDARD
  946.25 +END:VTIMEZONE
  946.26 +END:VCALENDAR
   947.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   947.2 +++ b/src/zoneinfo/Asia/Tokyo.ics	Tue Feb 10 18:12:00 2015 +0100
   947.3 @@ -0,0 +1,50 @@
   947.4 +BEGIN:VCALENDAR
   947.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   947.6 +VERSION:2.0
   947.7 +BEGIN:VTIMEZONE
   947.8 +TZID:Asia/Tokyo
   947.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Tokyo
  947.10 +X-LIC-LOCATION:Asia/Tokyo
  947.11 +BEGIN:STANDARD
  947.12 +TZOFFSETFROM:+091859
  947.13 +TZOFFSETTO:+0900
  947.14 +TZNAME:JST
  947.15 +DTSTART:18880101T001859
  947.16 +RDATE:18880101T001859
  947.17 +END:STANDARD
  947.18 +BEGIN:STANDARD
  947.19 +TZOFFSETFROM:+0900
  947.20 +TZOFFSETTO:+0900
  947.21 +TZNAME:CJT
  947.22 +DTSTART:18960101T000000
  947.23 +RDATE:18960101T000000
  947.24 +END:STANDARD
  947.25 +BEGIN:STANDARD
  947.26 +TZOFFSETFROM:+0900
  947.27 +TZOFFSETTO:+0900
  947.28 +TZNAME:JST
  947.29 +DTSTART:19380101T000000
  947.30 +RDATE:19380101T000000
  947.31 +END:STANDARD
  947.32 +BEGIN:DAYLIGHT
  947.33 +TZOFFSETFROM:+0900
  947.34 +TZOFFSETTO:+1000
  947.35 +TZNAME:JDT
  947.36 +DTSTART:19480502T020000
  947.37 +RDATE:19480502T020000
  947.38 +RDATE:19490403T020000
  947.39 +RDATE:19500507T020000
  947.40 +RDATE:19510506T020000
  947.41 +END:DAYLIGHT
  947.42 +BEGIN:STANDARD
  947.43 +TZOFFSETFROM:+1000
  947.44 +TZOFFSETTO:+0900
  947.45 +TZNAME:JST
  947.46 +DTSTART:19480911T020000
  947.47 +RDATE:19480911T020000
  947.48 +RDATE:19490910T020000
  947.49 +RDATE:19500909T020000
  947.50 +RDATE:19510908T020000
  947.51 +END:STANDARD
  947.52 +END:VTIMEZONE
  947.53 +END:VCALENDAR
   948.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   948.2 +++ b/src/zoneinfo/Asia/Ulaanbaatar.ics	Tue Feb 10 18:12:00 2015 +0100
   948.3 @@ -0,0 +1,79 @@
   948.4 +BEGIN:VCALENDAR
   948.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   948.6 +VERSION:2.0
   948.7 +BEGIN:VTIMEZONE
   948.8 +TZID:Asia/Ulaanbaatar
   948.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Ulaanbaatar
  948.10 +X-LIC-LOCATION:Asia/Ulaanbaatar
  948.11 +BEGIN:STANDARD
  948.12 +TZOFFSETFROM:+070732
  948.13 +TZOFFSETTO:+0700
  948.14 +TZNAME:ULAT
  948.15 +DTSTART:19050801T000000
  948.16 +RDATE:19050801T000000
  948.17 +END:STANDARD
  948.18 +BEGIN:STANDARD
  948.19 +TZOFFSETFROM:+0700
  948.20 +TZOFFSETTO:+0800
  948.21 +TZNAME:ULAT
  948.22 +DTSTART:19780101T000000
  948.23 +RDATE:19780101T000000
  948.24 +END:STANDARD
  948.25 +BEGIN:DAYLIGHT
  948.26 +TZOFFSETFROM:+0800
  948.27 +TZOFFSETTO:+0900
  948.28 +TZNAME:ULAST
  948.29 +DTSTART:19830401T000000
  948.30 +RDATE:19830401T000000
  948.31 +RDATE:19840401T000000
  948.32 +RDATE:19850331T000000
  948.33 +RDATE:19860330T000000
  948.34 +RDATE:19870329T000000
  948.35 +RDATE:19880327T000000
  948.36 +RDATE:19890326T000000
  948.37 +RDATE:19900325T000000
  948.38 +RDATE:19910331T000000
  948.39 +RDATE:19920329T000000
  948.40 +RDATE:19930328T000000
  948.41 +RDATE:19940327T000000
  948.42 +RDATE:19950326T000000
  948.43 +RDATE:19960331T000000
  948.44 +RDATE:19970330T000000
  948.45 +RDATE:19980329T000000
  948.46 +RDATE:20010428T020000
  948.47 +RDATE:20020330T020000
  948.48 +RDATE:20030329T020000
  948.49 +RDATE:20040327T020000
  948.50 +RDATE:20050326T020000
  948.51 +RDATE:20060325T020000
  948.52 +END:DAYLIGHT
  948.53 +BEGIN:STANDARD
  948.54 +TZOFFSETFROM:+0900
  948.55 +TZOFFSETTO:+0800
  948.56 +TZNAME:ULAT
  948.57 +DTSTART:19831001T000000
  948.58 +RDATE:19831001T000000
  948.59 +RDATE:19840930T000000
  948.60 +RDATE:19850929T000000
  948.61 +RDATE:19860928T000000
  948.62 +RDATE:19870927T000000
  948.63 +RDATE:19880925T000000
  948.64 +RDATE:19890924T000000
  948.65 +RDATE:19900930T000000
  948.66 +RDATE:19910929T000000
  948.67 +RDATE:19920927T000000
  948.68 +RDATE:19930926T000000
  948.69 +RDATE:19940925T000000
  948.70 +RDATE:19950924T000000
  948.71 +RDATE:19960929T000000
  948.72 +RDATE:19970928T000000
  948.73 +RDATE:19980927T000000
  948.74 +RDATE:20010929T020000
  948.75 +RDATE:20020928T020000
  948.76 +RDATE:20030927T020000
  948.77 +RDATE:20040925T020000
  948.78 +RDATE:20050924T020000
  948.79 +RDATE:20060930T020000
  948.80 +END:STANDARD
  948.81 +END:VTIMEZONE
  948.82 +END:VCALENDAR
   949.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   949.2 +++ b/src/zoneinfo/Asia/Urumqi.ics	Tue Feb 10 18:12:00 2015 +0100
   949.3 @@ -0,0 +1,47 @@
   949.4 +BEGIN:VCALENDAR
   949.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   949.6 +VERSION:2.0
   949.7 +BEGIN:VTIMEZONE
   949.8 +TZID:Asia/Urumqi
   949.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Urumqi
  949.10 +X-LIC-LOCATION:Asia/Urumqi
  949.11 +BEGIN:STANDARD
  949.12 +TZOFFSETFROM:+055020
  949.13 +TZOFFSETTO:+0600
  949.14 +TZNAME:URUT
  949.15 +DTSTART:19280101T000000
  949.16 +RDATE:19280101T000000
  949.17 +END:STANDARD
  949.18 +BEGIN:STANDARD
  949.19 +TZOFFSETFROM:+0600
  949.20 +TZOFFSETTO:+0800
  949.21 +TZNAME:CST
  949.22 +DTSTART:19800501T000000
  949.23 +RDATE:19800501T000000
  949.24 +END:STANDARD
  949.25 +BEGIN:DAYLIGHT
  949.26 +TZOFFSETFROM:+0800
  949.27 +TZOFFSETTO:+0900
  949.28 +TZNAME:CDT
  949.29 +DTSTART:19860504T000000
  949.30 +RDATE:19860504T000000
  949.31 +RDATE:19870412T000000
  949.32 +RDATE:19880410T000000
  949.33 +RDATE:19890416T000000
  949.34 +RDATE:19900415T000000
  949.35 +RDATE:19910414T000000
  949.36 +END:DAYLIGHT
  949.37 +BEGIN:STANDARD
  949.38 +TZOFFSETFROM:+0900
  949.39 +TZOFFSETTO:+0800
  949.40 +TZNAME:CST
  949.41 +DTSTART:19860914T000000
  949.42 +RDATE:19860914T000000
  949.43 +RDATE:19870913T000000
  949.44 +RDATE:19880911T000000
  949.45 +RDATE:19890917T000000
  949.46 +RDATE:19900916T000000
  949.47 +RDATE:19910915T000000
  949.48 +END:STANDARD
  949.49 +END:VTIMEZONE
  949.50 +END:VCALENDAR
   950.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   950.2 +++ b/src/zoneinfo/Asia/Vientiane.ics	Tue Feb 10 18:12:00 2015 +0100
   950.3 @@ -0,0 +1,37 @@
   950.4 +BEGIN:VCALENDAR
   950.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   950.6 +VERSION:2.0
   950.7 +BEGIN:VTIMEZONE
   950.8 +TZID:Asia/Vientiane
   950.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Vientiane
  950.10 +X-LIC-LOCATION:Asia/Vientiane
  950.11 +BEGIN:STANDARD
  950.12 +TZOFFSETFROM:+065024
  950.13 +TZOFFSETTO:+070620
  950.14 +TZNAME:SMT
  950.15 +DTSTART:19060609T000000
  950.16 +RDATE:19060609T000000
  950.17 +END:STANDARD
  950.18 +BEGIN:STANDARD
  950.19 +TZOFFSETFROM:+070620
  950.20 +TZOFFSETTO:+0700
  950.21 +TZNAME:ICT
  950.22 +DTSTART:19110311T000100
  950.23 +RDATE:19110311T000100
  950.24 +END:STANDARD
  950.25 +BEGIN:STANDARD
  950.26 +TZOFFSETFROM:+0700
  950.27 +TZOFFSETTO:+0800
  950.28 +TZNAME:ICT
  950.29 +DTSTART:19120501T000000
  950.30 +RDATE:19120501T000000
  950.31 +END:STANDARD
  950.32 +BEGIN:STANDARD
  950.33 +TZOFFSETFROM:+0800
  950.34 +TZOFFSETTO:+0700
  950.35 +TZNAME:ICT
  950.36 +DTSTART:19310501T000000
  950.37 +RDATE:19310501T000000
  950.38 +END:STANDARD
  950.39 +END:VTIMEZONE
  950.40 +END:VCALENDAR
   951.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   951.2 +++ b/src/zoneinfo/Asia/Vladivostok.ics	Tue Feb 10 18:12:00 2015 +0100
   951.3 @@ -0,0 +1,115 @@
   951.4 +BEGIN:VCALENDAR
   951.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   951.6 +VERSION:2.0
   951.7 +BEGIN:VTIMEZONE
   951.8 +TZID:Asia/Vladivostok
   951.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Vladivostok
  951.10 +X-LIC-LOCATION:Asia/Vladivostok
  951.11 +BEGIN:STANDARD
  951.12 +TZOFFSETFROM:+084744
  951.13 +TZOFFSETTO:+0900
  951.14 +TZNAME:VLAT
  951.15 +DTSTART:19221115T000000
  951.16 +RDATE:19221115T000000
  951.17 +END:STANDARD
  951.18 +BEGIN:STANDARD
  951.19 +TZOFFSETFROM:+0900
  951.20 +TZOFFSETTO:+1000
  951.21 +TZNAME:VLAT
  951.22 +DTSTART:19300621T000000
  951.23 +RDATE:19300621T000000
  951.24 +RDATE:19920119T020000
  951.25 +END:STANDARD
  951.26 +BEGIN:DAYLIGHT
  951.27 +TZOFFSETFROM:+1000
  951.28 +TZOFFSETTO:+1100
  951.29 +TZNAME:VLAST
  951.30 +DTSTART:19810401T000000
  951.31 +RDATE:19810401T000000
  951.32 +RDATE:19820401T000000
  951.33 +RDATE:19830401T000000
  951.34 +RDATE:19840401T000000
  951.35 +RDATE:19850331T020000
  951.36 +RDATE:19860330T020000
  951.37 +RDATE:19870329T020000
  951.38 +RDATE:19880327T020000
  951.39 +RDATE:19890326T020000
  951.40 +RDATE:19900325T020000
  951.41 +RDATE:19920328T230000
  951.42 +RDATE:19930328T020000
  951.43 +RDATE:19940327T020000
  951.44 +RDATE:19950326T020000
  951.45 +RDATE:19960331T020000
  951.46 +RDATE:19970330T020000
  951.47 +RDATE:19980329T020000
  951.48 +RDATE:19990328T020000
  951.49 +RDATE:20000326T020000
  951.50 +RDATE:20010325T020000
  951.51 +RDATE:20020331T020000
  951.52 +RDATE:20030330T020000
  951.53 +RDATE:20040328T020000
  951.54 +RDATE:20050327T020000
  951.55 +RDATE:20060326T020000
  951.56 +RDATE:20070325T020000
  951.57 +RDATE:20080330T020000
  951.58 +RDATE:20090329T020000
  951.59 +RDATE:20100328T020000
  951.60 +END:DAYLIGHT
  951.61 +BEGIN:STANDARD
  951.62 +TZOFFSETFROM:+1100
  951.63 +TZOFFSETTO:+1000
  951.64 +TZNAME:VLAT
  951.65 +DTSTART:19811001T000000
  951.66 +RDATE:19811001T000000
  951.67 +RDATE:19821001T000000
  951.68 +RDATE:19831001T000000
  951.69 +RDATE:19840930T030000
  951.70 +RDATE:19850929T030000
  951.71 +RDATE:19860928T030000
  951.72 +RDATE:19870927T030000
  951.73 +RDATE:19880925T030000
  951.74 +RDATE:19890924T030000
  951.75 +RDATE:19900930T030000
  951.76 +RDATE:19920926T230000
  951.77 +RDATE:19930926T030000
  951.78 +RDATE:19940925T030000
  951.79 +RDATE:19950924T030000
  951.80 +RDATE:19961027T030000
  951.81 +RDATE:19971026T030000
  951.82 +RDATE:19981025T030000
  951.83 +RDATE:19991031T030000
  951.84 +RDATE:20001029T030000
  951.85 +RDATE:20011028T030000
  951.86 +RDATE:20021027T030000
  951.87 +RDATE:20031026T030000
  951.88 +RDATE:20041031T030000
  951.89 +RDATE:20051030T030000
  951.90 +RDATE:20061029T030000
  951.91 +RDATE:20071028T030000
  951.92 +RDATE:20081026T030000
  951.93 +RDATE:20091025T030000
  951.94 +RDATE:20101031T030000
  951.95 +END:STANDARD
  951.96 +BEGIN:DAYLIGHT
  951.97 +TZOFFSETFROM:+1000
  951.98 +TZOFFSETTO:+1000
  951.99 +TZNAME:VLASST
 951.100 +DTSTART:19910331T020000
 951.101 +RDATE:19910331T020000
 951.102 +END:DAYLIGHT
 951.103 +BEGIN:STANDARD
 951.104 +TZOFFSETFROM:+1000
 951.105 +TZOFFSETTO:+0900
 951.106 +TZNAME:VLAST
 951.107 +DTSTART:19910929T030000
 951.108 +RDATE:19910929T030000
 951.109 +END:STANDARD
 951.110 +BEGIN:STANDARD
 951.111 +TZOFFSETFROM:+1000
 951.112 +TZOFFSETTO:+1100
 951.113 +TZNAME:VLAT
 951.114 +DTSTART:20110327T020000
 951.115 +RDATE:20110327T020000
 951.116 +END:STANDARD
 951.117 +END:VTIMEZONE
 951.118 +END:VCALENDAR
   952.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   952.2 +++ b/src/zoneinfo/Asia/Yakutsk.ics	Tue Feb 10 18:12:00 2015 +0100
   952.3 @@ -0,0 +1,115 @@
   952.4 +BEGIN:VCALENDAR
   952.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   952.6 +VERSION:2.0
   952.7 +BEGIN:VTIMEZONE
   952.8 +TZID:Asia/Yakutsk
   952.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Yakutsk
  952.10 +X-LIC-LOCATION:Asia/Yakutsk
  952.11 +BEGIN:STANDARD
  952.12 +TZOFFSETFROM:+083840
  952.13 +TZOFFSETTO:+0800
  952.14 +TZNAME:YAKT
  952.15 +DTSTART:19191215T000000
  952.16 +RDATE:19191215T000000
  952.17 +END:STANDARD
  952.18 +BEGIN:STANDARD
  952.19 +TZOFFSETFROM:+0800
  952.20 +TZOFFSETTO:+0900
  952.21 +TZNAME:YAKT
  952.22 +DTSTART:19300621T000000
  952.23 +RDATE:19300621T000000
  952.24 +RDATE:19920119T020000
  952.25 +END:STANDARD
  952.26 +BEGIN:DAYLIGHT
  952.27 +TZOFFSETFROM:+0900
  952.28 +TZOFFSETTO:+1000
  952.29 +TZNAME:YAKST
  952.30 +DTSTART:19810401T000000
  952.31 +RDATE:19810401T000000
  952.32 +RDATE:19820401T000000
  952.33 +RDATE:19830401T000000
  952.34 +RDATE:19840401T000000
  952.35 +RDATE:19850331T020000
  952.36 +RDATE:19860330T020000
  952.37 +RDATE:19870329T020000
  952.38 +RDATE:19880327T020000
  952.39 +RDATE:19890326T020000
  952.40 +RDATE:19900325T020000
  952.41 +RDATE:19920328T230000
  952.42 +RDATE:19930328T020000
  952.43 +RDATE:19940327T020000
  952.44 +RDATE:19950326T020000
  952.45 +RDATE:19960331T020000
  952.46 +RDATE:19970330T020000
  952.47 +RDATE:19980329T020000
  952.48 +RDATE:19990328T020000
  952.49 +RDATE:20000326T020000
  952.50 +RDATE:20010325T020000
  952.51 +RDATE:20020331T020000
  952.52 +RDATE:20030330T020000
  952.53 +RDATE:20040328T020000
  952.54 +RDATE:20050327T020000
  952.55 +RDATE:20060326T020000
  952.56 +RDATE:20070325T020000
  952.57 +RDATE:20080330T020000
  952.58 +RDATE:20090329T020000
  952.59 +RDATE:20100328T020000
  952.60 +END:DAYLIGHT
  952.61 +BEGIN:STANDARD
  952.62 +TZOFFSETFROM:+1000
  952.63 +TZOFFSETTO:+0900
  952.64 +TZNAME:YAKT
  952.65 +DTSTART:19811001T000000
  952.66 +RDATE:19811001T000000
  952.67 +RDATE:19821001T000000
  952.68 +RDATE:19831001T000000
  952.69 +RDATE:19840930T030000
  952.70 +RDATE:19850929T030000
  952.71 +RDATE:19860928T030000
  952.72 +RDATE:19870927T030000
  952.73 +RDATE:19880925T030000
  952.74 +RDATE:19890924T030000
  952.75 +RDATE:19900930T030000
  952.76 +RDATE:19920926T230000
  952.77 +RDATE:19930926T030000
  952.78 +RDATE:19940925T030000
  952.79 +RDATE:19950924T030000
  952.80 +RDATE:19961027T030000
  952.81 +RDATE:19971026T030000
  952.82 +RDATE:19981025T030000
  952.83 +RDATE:19991031T030000
  952.84 +RDATE:20001029T030000
  952.85 +RDATE:20011028T030000
  952.86 +RDATE:20021027T030000
  952.87 +RDATE:20031026T030000
  952.88 +RDATE:20041031T030000
  952.89 +RDATE:20051030T030000
  952.90 +RDATE:20061029T030000
  952.91 +RDATE:20071028T030000
  952.92 +RDATE:20081026T030000
  952.93 +RDATE:20091025T030000
  952.94 +RDATE:20101031T030000
  952.95 +END:STANDARD
  952.96 +BEGIN:DAYLIGHT
  952.97 +TZOFFSETFROM:+0900
  952.98 +TZOFFSETTO:+0900
  952.99 +TZNAME:YAKST
 952.100 +DTSTART:19910331T020000
 952.101 +RDATE:19910331T020000
 952.102 +END:DAYLIGHT
 952.103 +BEGIN:STANDARD
 952.104 +TZOFFSETFROM:+0900
 952.105 +TZOFFSETTO:+0800
 952.106 +TZNAME:YAKT
 952.107 +DTSTART:19910929T030000
 952.108 +RDATE:19910929T030000
 952.109 +END:STANDARD
 952.110 +BEGIN:STANDARD
 952.111 +TZOFFSETFROM:+0900
 952.112 +TZOFFSETTO:+1000
 952.113 +TZNAME:YAKT
 952.114 +DTSTART:20110327T020000
 952.115 +RDATE:20110327T020000
 952.116 +END:STANDARD
 952.117 +END:VTIMEZONE
 952.118 +END:VCALENDAR
   953.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   953.2 +++ b/src/zoneinfo/Asia/Yekaterinburg.ics	Tue Feb 10 18:12:00 2015 +0100
   953.3 @@ -0,0 +1,133 @@
   953.4 +BEGIN:VCALENDAR
   953.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   953.6 +VERSION:2.0
   953.7 +BEGIN:VTIMEZONE
   953.8 +TZID:Asia/Yekaterinburg
   953.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Yekaterinburg
  953.10 +X-LIC-LOCATION:Asia/Yekaterinburg
  953.11 +BEGIN:STANDARD
  953.12 +TZOFFSETFROM:+040224
  953.13 +TZOFFSETTO:+0400
  953.14 +TZNAME:SVET
  953.15 +DTSTART:19190715T040000
  953.16 +RDATE:19190715T040000
  953.17 +END:STANDARD
  953.18 +BEGIN:STANDARD
  953.19 +TZOFFSETFROM:+0400
  953.20 +TZOFFSETTO:+0500
  953.21 +TZNAME:SVET
  953.22 +DTSTART:19300621T000000
  953.23 +RDATE:19300621T000000
  953.24 +END:STANDARD
  953.25 +BEGIN:DAYLIGHT
  953.26 +TZOFFSETFROM:+0500
  953.27 +TZOFFSETTO:+0600
  953.28 +TZNAME:SVEST
  953.29 +DTSTART:19810401T000000
  953.30 +RDATE:19810401T000000
  953.31 +RDATE:19820401T000000
  953.32 +RDATE:19830401T000000
  953.33 +RDATE:19840401T000000
  953.34 +RDATE:19850331T020000
  953.35 +RDATE:19860330T020000
  953.36 +RDATE:19870329T020000
  953.37 +RDATE:19880327T020000
  953.38 +RDATE:19890326T020000
  953.39 +RDATE:19900325T020000
  953.40 +END:DAYLIGHT
  953.41 +BEGIN:STANDARD
  953.42 +TZOFFSETFROM:+0600
  953.43 +TZOFFSETTO:+0500
  953.44 +TZNAME:SVET
  953.45 +DTSTART:19811001T000000
  953.46 +RDATE:19811001T000000
  953.47 +RDATE:19821001T000000
  953.48 +RDATE:19831001T000000
  953.49 +RDATE:19840930T030000
  953.50 +RDATE:19850929T030000
  953.51 +RDATE:19860928T030000
  953.52 +RDATE:19870927T030000
  953.53 +RDATE:19880925T030000
  953.54 +RDATE:19890924T030000
  953.55 +RDATE:19900930T030000
  953.56 +END:STANDARD
  953.57 +BEGIN:DAYLIGHT
  953.58 +TZOFFSETFROM:+0500
  953.59 +TZOFFSETTO:+0500
  953.60 +TZNAME:SVEST
  953.61 +DTSTART:19910331T020000
  953.62 +RDATE:19910331T020000
  953.63 +END:DAYLIGHT
  953.64 +BEGIN:STANDARD
  953.65 +TZOFFSETFROM:+0500
  953.66 +TZOFFSETTO:+0400
  953.67 +TZNAME:SVET
  953.68 +DTSTART:19910929T030000
  953.69 +RDATE:19910929T030000
  953.70 +END:STANDARD
  953.71 +BEGIN:STANDARD
  953.72 +TZOFFSETFROM:+0400
  953.73 +TZOFFSETTO:+0500
  953.74 +TZNAME:YEKT
  953.75 +DTSTART:19920119T020000
  953.76 +RDATE:19920119T020000
  953.77 +END:STANDARD
  953.78 +BEGIN:DAYLIGHT
  953.79 +TZOFFSETFROM:+0500
  953.80 +TZOFFSETTO:+0600
  953.81 +TZNAME:YEKST
  953.82 +DTSTART:19920328T230000
  953.83 +RDATE:19920328T230000
  953.84 +RDATE:19930328T020000
  953.85 +RDATE:19940327T020000
  953.86 +RDATE:19950326T020000
  953.87 +RDATE:19960331T020000
  953.88 +RDATE:19970330T020000
  953.89 +RDATE:19980329T020000
  953.90 +RDATE:19990328T020000
  953.91 +RDATE:20000326T020000
  953.92 +RDATE:20010325T020000
  953.93 +RDATE:20020331T020000
  953.94 +RDATE:20030330T020000
  953.95 +RDATE:20040328T020000
  953.96 +RDATE:20050327T020000
  953.97 +RDATE:20060326T020000
  953.98 +RDATE:20070325T020000
  953.99 +RDATE:20080330T020000
 953.100 +RDATE:20090329T020000
 953.101 +RDATE:20100328T020000
 953.102 +END:DAYLIGHT
 953.103 +BEGIN:STANDARD
 953.104 +TZOFFSETFROM:+0600
 953.105 +TZOFFSETTO:+0500
 953.106 +TZNAME:YEKT
 953.107 +DTSTART:19920926T230000
 953.108 +RDATE:19920926T230000
 953.109 +RDATE:19930926T030000
 953.110 +RDATE:19940925T030000
 953.111 +RDATE:19950924T030000
 953.112 +RDATE:19961027T030000
 953.113 +RDATE:19971026T030000
 953.114 +RDATE:19981025T030000
 953.115 +RDATE:19991031T030000
 953.116 +RDATE:20001029T030000
 953.117 +RDATE:20011028T030000
 953.118 +RDATE:20021027T030000
 953.119 +RDATE:20031026T030000
 953.120 +RDATE:20041031T030000
 953.121 +RDATE:20051030T030000
 953.122 +RDATE:20061029T030000
 953.123 +RDATE:20071028T030000
 953.124 +RDATE:20081026T030000
 953.125 +RDATE:20091025T030000
 953.126 +RDATE:20101031T030000
 953.127 +END:STANDARD
 953.128 +BEGIN:STANDARD
 953.129 +TZOFFSETFROM:+0500
 953.130 +TZOFFSETTO:+0600
 953.131 +TZNAME:YEKT
 953.132 +DTSTART:20110327T020000
 953.133 +RDATE:20110327T020000
 953.134 +END:STANDARD
 953.135 +END:VTIMEZONE
 953.136 +END:VCALENDAR
   954.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   954.2 +++ b/src/zoneinfo/Asia/Yerevan.ics	Tue Feb 10 18:12:00 2015 +0100
   954.3 @@ -0,0 +1,111 @@
   954.4 +BEGIN:VCALENDAR
   954.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   954.6 +VERSION:2.0
   954.7 +BEGIN:VTIMEZONE
   954.8 +TZID:Asia/Yerevan
   954.9 +TZURL:http://tzurl.org/zoneinfo/Asia/Yerevan
  954.10 +X-LIC-LOCATION:Asia/Yerevan
  954.11 +BEGIN:DAYLIGHT
  954.12 +TZOFFSETFROM:+0400
  954.13 +TZOFFSETTO:+0500
  954.14 +TZNAME:AMST
  954.15 +DTSTART:19970330T020000
  954.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  954.17 +END:DAYLIGHT
  954.18 +BEGIN:STANDARD
  954.19 +TZOFFSETFROM:+0500
  954.20 +TZOFFSETTO:+0400
  954.21 +TZNAME:AMT
  954.22 +DTSTART:19971026T030000
  954.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  954.24 +END:STANDARD
  954.25 +BEGIN:STANDARD
  954.26 +TZOFFSETFROM:+0258
  954.27 +TZOFFSETTO:+0300
  954.28 +TZNAME:YERT
  954.29 +DTSTART:19240502T000000
  954.30 +RDATE:19240502T000000
  954.31 +END:STANDARD
  954.32 +BEGIN:STANDARD
  954.33 +TZOFFSETFROM:+0300
  954.34 +TZOFFSETTO:+0400
  954.35 +TZNAME:YERT
  954.36 +DTSTART:19570301T000000
  954.37 +RDATE:19570301T000000
  954.38 +END:STANDARD
  954.39 +BEGIN:DAYLIGHT
  954.40 +TZOFFSETFROM:+0400
  954.41 +TZOFFSETTO:+0500
  954.42 +TZNAME:YERST
  954.43 +DTSTART:19810401T000000
  954.44 +RDATE:19810401T000000
  954.45 +RDATE:19820401T000000
  954.46 +RDATE:19830401T000000
  954.47 +RDATE:19840401T000000
  954.48 +RDATE:19850331T020000
  954.49 +RDATE:19860330T020000
  954.50 +RDATE:19870329T020000
  954.51 +RDATE:19880327T020000
  954.52 +RDATE:19890326T020000
  954.53 +RDATE:19900325T020000
  954.54 +END:DAYLIGHT
  954.55 +BEGIN:STANDARD
  954.56 +TZOFFSETFROM:+0500
  954.57 +TZOFFSETTO:+0400
  954.58 +TZNAME:YERT
  954.59 +DTSTART:19811001T000000
  954.60 +RDATE:19811001T000000
  954.61 +RDATE:19821001T000000
  954.62 +RDATE:19831001T000000
  954.63 +RDATE:19840930T030000
  954.64 +RDATE:19850929T030000
  954.65 +RDATE:19860928T030000
  954.66 +RDATE:19870927T030000
  954.67 +RDATE:19880925T030000
  954.68 +RDATE:19890924T030000
  954.69 +RDATE:19900930T030000
  954.70 +END:STANDARD
  954.71 +BEGIN:DAYLIGHT
  954.72 +TZOFFSETFROM:+0400
  954.73 +TZOFFSETTO:+0400
  954.74 +TZNAME:YERST
  954.75 +DTSTART:19910331T020000
  954.76 +RDATE:19910331T020000
  954.77 +END:DAYLIGHT
  954.78 +BEGIN:DAYLIGHT
  954.79 +TZOFFSETFROM:+0400
  954.80 +TZOFFSETTO:+0400
  954.81 +TZNAME:AMST
  954.82 +DTSTART:19910923T000000
  954.83 +RDATE:19910923T000000
  954.84 +END:DAYLIGHT
  954.85 +BEGIN:STANDARD
  954.86 +TZOFFSETFROM:+0400
  954.87 +TZOFFSETTO:+0300
  954.88 +TZNAME:AMT
  954.89 +DTSTART:19910929T030000
  954.90 +RDATE:19910929T030000
  954.91 +RDATE:19920926T230000
  954.92 +RDATE:19930926T030000
  954.93 +RDATE:19940925T030000
  954.94 +END:STANDARD
  954.95 +BEGIN:DAYLIGHT
  954.96 +TZOFFSETFROM:+0300
  954.97 +TZOFFSETTO:+0400
  954.98 +TZNAME:AMST
  954.99 +DTSTART:19920328T230000
 954.100 +RDATE:19920328T230000
 954.101 +RDATE:19930328T020000
 954.102 +RDATE:19940327T020000
 954.103 +RDATE:19950326T020000
 954.104 +END:DAYLIGHT
 954.105 +BEGIN:STANDARD
 954.106 +TZOFFSETFROM:+0400
 954.107 +TZOFFSETTO:+0400
 954.108 +TZNAME:AMT
 954.109 +DTSTART:19950924T030000
 954.110 +RDATE:19950924T030000
 954.111 +RDATE:19970101T000000
 954.112 +END:STANDARD
 954.113 +END:VTIMEZONE
 954.114 +END:VCALENDAR
   955.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   955.2 +++ b/src/zoneinfo/Atlantic/Azores.ics	Tue Feb 10 18:12:00 2015 +0100
   955.3 @@ -0,0 +1,224 @@
   955.4 +BEGIN:VCALENDAR
   955.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   955.6 +VERSION:2.0
   955.7 +BEGIN:VTIMEZONE
   955.8 +TZID:Atlantic/Azores
   955.9 +TZURL:http://tzurl.org/zoneinfo/Atlantic/Azores
  955.10 +X-LIC-LOCATION:Atlantic/Azores
  955.11 +BEGIN:DAYLIGHT
  955.12 +TZOFFSETFROM:-0100
  955.13 +TZOFFSETTO:+0000
  955.14 +TZNAME:AZOST
  955.15 +DTSTART:19940327T000000
  955.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  955.17 +END:DAYLIGHT
  955.18 +BEGIN:STANDARD
  955.19 +TZOFFSETFROM:+0000
  955.20 +TZOFFSETTO:-0100
  955.21 +TZNAME:AZOT
  955.22 +DTSTART:19961027T010000
  955.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  955.24 +END:STANDARD
  955.25 +BEGIN:STANDARD
  955.26 +TZOFFSETFROM:-014240
  955.27 +TZOFFSETTO:-015432
  955.28 +TZNAME:HMT
  955.29 +DTSTART:18840101T000000
  955.30 +RDATE:18840101T000000
  955.31 +END:STANDARD
  955.32 +BEGIN:STANDARD
  955.33 +TZOFFSETFROM:-015432
  955.34 +TZOFFSETTO:-0200
  955.35 +TZNAME:AZOT
  955.36 +DTSTART:19110524T000000
  955.37 +RDATE:19110524T000000
  955.38 +END:STANDARD
  955.39 +BEGIN:DAYLIGHT
  955.40 +TZOFFSETFROM:-0200
  955.41 +TZOFFSETTO:-0100
  955.42 +TZNAME:AZOST
  955.43 +DTSTART:19160617T230000
  955.44 +RDATE:19160617T230000
  955.45 +RDATE:19170228T230000
  955.46 +RDATE:19180301T230000
  955.47 +RDATE:19190228T230000
  955.48 +RDATE:19200229T230000
  955.49 +RDATE:19210228T230000
  955.50 +RDATE:19240416T230000
  955.51 +RDATE:19260417T230000
  955.52 +RDATE:19270409T230000
  955.53 +RDATE:19280414T230000
  955.54 +RDATE:19290420T230000
  955.55 +RDATE:19310418T230000
  955.56 +RDATE:19320402T230000
  955.57 +RDATE:19340407T230000
  955.58 +RDATE:19350330T230000
  955.59 +RDATE:19360418T230000
  955.60 +RDATE:19370403T230000
  955.61 +RDATE:19380326T230000
  955.62 +RDATE:19390415T230000
  955.63 +RDATE:19400224T230000
  955.64 +RDATE:19410405T230000
  955.65 +RDATE:19420314T230000
  955.66 +RDATE:19430313T230000
  955.67 +RDATE:19440311T230000
  955.68 +RDATE:19450310T230000
  955.69 +RDATE:19460406T230000
  955.70 +RDATE:19470406T020000
  955.71 +RDATE:19480404T020000
  955.72 +RDATE:19490403T020000
  955.73 +RDATE:19510401T020000
  955.74 +RDATE:19520406T020000
  955.75 +RDATE:19530405T020000
  955.76 +RDATE:19540404T020000
  955.77 +RDATE:19550403T020000
  955.78 +RDATE:19560401T020000
  955.79 +RDATE:19570407T020000
  955.80 +RDATE:19580406T020000
  955.81 +RDATE:19590405T020000
  955.82 +RDATE:19600403T020000
  955.83 +RDATE:19610402T020000
  955.84 +RDATE:19620401T020000
  955.85 +RDATE:19630407T020000
  955.86 +RDATE:19640405T020000
  955.87 +RDATE:19650404T020000
  955.88 +END:DAYLIGHT
  955.89 +BEGIN:STANDARD
  955.90 +TZOFFSETFROM:-0100
  955.91 +TZOFFSETTO:-0200
  955.92 +TZNAME:AZOT
  955.93 +DTSTART:19161101T010000
  955.94 +RDATE:19161101T010000
  955.95 +RDATE:19171015T000000
  955.96 +RDATE:19181015T000000
  955.97 +RDATE:19191015T000000
  955.98 +RDATE:19201015T000000
  955.99 +RDATE:19211015T000000
 955.100 +RDATE:19241015T000000
 955.101 +RDATE:19261003T000000
 955.102 +RDATE:19271002T000000
 955.103 +RDATE:19281007T000000
 955.104 +RDATE:19291006T000000
 955.105 +RDATE:19311004T000000
 955.106 +RDATE:19321002T000000
 955.107 +RDATE:19341007T000000
 955.108 +RDATE:19351006T000000
 955.109 +RDATE:19361004T000000
 955.110 +RDATE:19371003T000000
 955.111 +RDATE:19381002T000000
 955.112 +RDATE:19391119T000000
 955.113 +RDATE:19401006T000000
 955.114 +RDATE:19411006T000000
 955.115 +RDATE:19421025T000000
 955.116 +RDATE:19431031T000000
 955.117 +RDATE:19441029T000000
 955.118 +RDATE:19451028T000000
 955.119 +RDATE:19461006T000000
 955.120 +RDATE:19471005T030000
 955.121 +RDATE:19481003T030000
 955.122 +RDATE:19491002T030000
 955.123 +RDATE:19511007T030000
 955.124 +RDATE:19521005T030000
 955.125 +RDATE:19531004T030000
 955.126 +RDATE:19541003T030000
 955.127 +RDATE:19551002T030000
 955.128 +RDATE:19561007T030000
 955.129 +RDATE:19571006T030000
 955.130 +RDATE:19581005T030000
 955.131 +RDATE:19591004T030000
 955.132 +RDATE:19601002T030000
 955.133 +RDATE:19611001T030000
 955.134 +RDATE:19621007T030000
 955.135 +RDATE:19631006T030000
 955.136 +RDATE:19641004T030000
 955.137 +RDATE:19651003T030000
 955.138 +END:STANDARD
 955.139 +BEGIN:DAYLIGHT
 955.140 +TZOFFSETFROM:-0100
 955.141 +TZOFFSETTO:+0000
 955.142 +TZNAME:AZOMT
 955.143 +DTSTART:19420425T230000
 955.144 +RDATE:19420425T230000
 955.145 +RDATE:19430417T230000
 955.146 +RDATE:19440422T230000
 955.147 +RDATE:19450421T230000
 955.148 +END:DAYLIGHT
 955.149 +BEGIN:DAYLIGHT
 955.150 +TZOFFSETFROM:+0000
 955.151 +TZOFFSETTO:-0100
 955.152 +TZNAME:AZOST
 955.153 +DTSTART:19420816T000000
 955.154 +RDATE:19420816T000000
 955.155 +RDATE:19430829T000000
 955.156 +RDATE:19440827T000000
 955.157 +RDATE:19450826T000000
 955.158 +END:DAYLIGHT
 955.159 +BEGIN:STANDARD
 955.160 +TZOFFSETFROM:-0200
 955.161 +TZOFFSETTO:-0100
 955.162 +TZNAME:AZOT
 955.163 +DTSTART:19660403T020000
 955.164 +RDATE:19660403T020000
 955.165 +END:STANDARD
 955.166 +BEGIN:DAYLIGHT
 955.167 +TZOFFSETFROM:-0100
 955.168 +TZOFFSETTO:+0000
 955.169 +TZNAME:AZOST
 955.170 +DTSTART:19770327T000000
 955.171 +RDATE:19770327T000000
 955.172 +RDATE:19780402T000000
 955.173 +RDATE:19790401T000000
 955.174 +RDATE:19800330T000000
 955.175 +RDATE:19810329T010000
 955.176 +RDATE:19820328T010000
 955.177 +RDATE:19830327T020000
 955.178 +RDATE:19840325T010000
 955.179 +RDATE:19850331T010000
 955.180 +RDATE:19860330T010000
 955.181 +RDATE:19870329T010000
 955.182 +RDATE:19880327T010000
 955.183 +RDATE:19890326T010000
 955.184 +RDATE:19900325T010000
 955.185 +RDATE:19910331T010000
 955.186 +RDATE:19920329T010000
 955.187 +END:DAYLIGHT
 955.188 +BEGIN:STANDARD
 955.189 +TZOFFSETFROM:+0000
 955.190 +TZOFFSETTO:-0100
 955.191 +TZNAME:AZOT
 955.192 +DTSTART:19770925T010000
 955.193 +RDATE:19770925T010000
 955.194 +RDATE:19781001T010000
 955.195 +RDATE:19790930T020000
 955.196 +RDATE:19800928T020000
 955.197 +RDATE:19810927T020000
 955.198 +RDATE:19820926T020000
 955.199 +RDATE:19830925T020000
 955.200 +RDATE:19840930T020000
 955.201 +RDATE:19850929T020000
 955.202 +RDATE:19860928T020000
 955.203 +RDATE:19870927T020000
 955.204 +RDATE:19880925T020000
 955.205 +RDATE:19890924T020000
 955.206 +RDATE:19900930T020000
 955.207 +RDATE:19910929T020000
 955.208 +RDATE:19930926T010000
 955.209 +RDATE:19940925T010000
 955.210 +RDATE:19950924T010000
 955.211 +END:STANDARD
 955.212 +BEGIN:STANDARD
 955.213 +TZOFFSETFROM:+0000
 955.214 +TZOFFSETTO:+0000
 955.215 +TZNAME:WET
 955.216 +DTSTART:19920927T020000
 955.217 +RDATE:19920927T020000
 955.218 +END:STANDARD
 955.219 +BEGIN:DAYLIGHT
 955.220 +TZOFFSETFROM:+0000
 955.221 +TZOFFSETTO:+0000
 955.222 +TZNAME:AZOST
 955.223 +DTSTART:19930328T010000
 955.224 +RDATE:19930328T010000
 955.225 +END:DAYLIGHT
 955.226 +END:VTIMEZONE
 955.227 +END:VCALENDAR
   956.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   956.2 +++ b/src/zoneinfo/Atlantic/Bermuda.ics	Tue Feb 10 18:12:00 2015 +0100
   956.3 @@ -0,0 +1,115 @@
   956.4 +BEGIN:VCALENDAR
   956.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   956.6 +VERSION:2.0
   956.7 +BEGIN:VTIMEZONE
   956.8 +TZID:Atlantic/Bermuda
   956.9 +TZURL:http://tzurl.org/zoneinfo/Atlantic/Bermuda
  956.10 +X-LIC-LOCATION:Atlantic/Bermuda
  956.11 +BEGIN:DAYLIGHT
  956.12 +TZOFFSETFROM:-0400
  956.13 +TZOFFSETTO:-0300
  956.14 +TZNAME:ADT
  956.15 +DTSTART:20070311T020000
  956.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
  956.17 +END:DAYLIGHT
  956.18 +BEGIN:STANDARD
  956.19 +TZOFFSETFROM:-0300
  956.20 +TZOFFSETTO:-0400
  956.21 +TZNAME:AST
  956.22 +DTSTART:20071104T020000
  956.23 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
  956.24 +END:STANDARD
  956.25 +BEGIN:STANDARD
  956.26 +TZOFFSETFROM:-041904
  956.27 +TZOFFSETTO:-0400
  956.28 +TZNAME:AST
  956.29 +DTSTART:19300101T020000
  956.30 +RDATE:19300101T020000
  956.31 +END:STANDARD
  956.32 +BEGIN:DAYLIGHT
  956.33 +TZOFFSETFROM:-0400
  956.34 +TZOFFSETTO:-0300
  956.35 +TZNAME:ADT
  956.36 +DTSTART:19740428T020000
  956.37 +RDATE:19740428T020000
  956.38 +RDATE:19750427T020000
  956.39 +RDATE:19760425T020000
  956.40 +RDATE:19770424T020000
  956.41 +RDATE:19780430T020000
  956.42 +RDATE:19790429T020000
  956.43 +RDATE:19800427T020000
  956.44 +RDATE:19810426T020000
  956.45 +RDATE:19820425T020000
  956.46 +RDATE:19830424T020000
  956.47 +RDATE:19840429T020000
  956.48 +RDATE:19850428T020000
  956.49 +RDATE:19860427T020000
  956.50 +RDATE:19870405T020000
  956.51 +RDATE:19880403T020000
  956.52 +RDATE:19890402T020000
  956.53 +RDATE:19900401T020000
  956.54 +RDATE:19910407T020000
  956.55 +RDATE:19920405T020000
  956.56 +RDATE:19930404T020000
  956.57 +RDATE:19940403T020000
  956.58 +RDATE:19950402T020000
  956.59 +RDATE:19960407T020000
  956.60 +RDATE:19970406T020000
  956.61 +RDATE:19980405T020000
  956.62 +RDATE:19990404T020000
  956.63 +RDATE:20000402T020000
  956.64 +RDATE:20010401T020000
  956.65 +RDATE:20020407T020000
  956.66 +RDATE:20030406T020000
  956.67 +RDATE:20040404T020000
  956.68 +RDATE:20050403T020000
  956.69 +RDATE:20060402T020000
  956.70 +END:DAYLIGHT
  956.71 +BEGIN:STANDARD
  956.72 +TZOFFSETFROM:-0300
  956.73 +TZOFFSETTO:-0400
  956.74 +TZNAME:AST
  956.75 +DTSTART:19741027T020000
  956.76 +RDATE:19741027T020000
  956.77 +RDATE:19751026T020000
  956.78 +RDATE:19761031T020000
  956.79 +RDATE:19771030T020000
  956.80 +RDATE:19781029T020000
  956.81 +RDATE:19791028T020000
  956.82 +RDATE:19801026T020000
  956.83 +RDATE:19811025T020000
  956.84 +RDATE:19821031T020000
  956.85 +RDATE:19831030T020000
  956.86 +RDATE:19841028T020000
  956.87 +RDATE:19851027T020000
  956.88 +RDATE:19861026T020000
  956.89 +RDATE:19871025T020000
  956.90 +RDATE:19881030T020000
  956.91 +RDATE:19891029T020000
  956.92 +RDATE:19901028T020000
  956.93 +RDATE:19911027T020000
  956.94 +RDATE:19921025T020000
  956.95 +RDATE:19931031T020000
  956.96 +RDATE:19941030T020000
  956.97 +RDATE:19951029T020000
  956.98 +RDATE:19961027T020000
  956.99 +RDATE:19971026T020000
 956.100 +RDATE:19981025T020000
 956.101 +RDATE:19991031T020000
 956.102 +RDATE:20001029T020000
 956.103 +RDATE:20011028T020000
 956.104 +RDATE:20021027T020000
 956.105 +RDATE:20031026T020000
 956.106 +RDATE:20041031T020000
 956.107 +RDATE:20051030T020000
 956.108 +RDATE:20061029T020000
 956.109 +END:STANDARD
 956.110 +BEGIN:STANDARD
 956.111 +TZOFFSETFROM:-0400
 956.112 +TZOFFSETTO:-0400
 956.113 +TZNAME:AST
 956.114 +DTSTART:19760101T000000
 956.115 +RDATE:19760101T000000
 956.116 +END:STANDARD
 956.117 +END:VTIMEZONE
 956.118 +END:VCALENDAR
   957.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   957.2 +++ b/src/zoneinfo/Atlantic/Canary.ics	Tue Feb 10 18:12:00 2015 +0100
   957.3 @@ -0,0 +1,73 @@
   957.4 +BEGIN:VCALENDAR
   957.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   957.6 +VERSION:2.0
   957.7 +BEGIN:VTIMEZONE
   957.8 +TZID:Atlantic/Canary
   957.9 +TZURL:http://tzurl.org/zoneinfo/Atlantic/Canary
  957.10 +X-LIC-LOCATION:Atlantic/Canary
  957.11 +BEGIN:DAYLIGHT
  957.12 +TZOFFSETFROM:+0000
  957.13 +TZOFFSETTO:+0100
  957.14 +TZNAME:WEST
  957.15 +DTSTART:19810329T010000
  957.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  957.17 +END:DAYLIGHT
  957.18 +BEGIN:STANDARD
  957.19 +TZOFFSETFROM:+0100
  957.20 +TZOFFSETTO:+0000
  957.21 +TZNAME:WET
  957.22 +DTSTART:19961027T020000
  957.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  957.24 +END:STANDARD
  957.25 +BEGIN:STANDARD
  957.26 +TZOFFSETFROM:-010136
  957.27 +TZOFFSETTO:-0100
  957.28 +TZNAME:CANT
  957.29 +DTSTART:19220301T000000
  957.30 +RDATE:19220301T000000
  957.31 +END:STANDARD
  957.32 +BEGIN:STANDARD
  957.33 +TZOFFSETFROM:-0100
  957.34 +TZOFFSETTO:+0000
  957.35 +TZNAME:WET
  957.36 +DTSTART:19460930T010000
  957.37 +RDATE:19460930T010000
  957.38 +END:STANDARD
  957.39 +BEGIN:DAYLIGHT
  957.40 +TZOFFSETFROM:+0000
  957.41 +TZOFFSETTO:+0100
  957.42 +TZNAME:WEST
  957.43 +DTSTART:19800406T000000
  957.44 +RDATE:19800406T000000
  957.45 +END:DAYLIGHT
  957.46 +BEGIN:DAYLIGHT
  957.47 +TZOFFSETFROM:+0100
  957.48 +TZOFFSETTO:+0100
  957.49 +TZNAME:WEST
  957.50 +DTSTART:19800928T010000
  957.51 +RDATE:19800928T010000
  957.52 +END:DAYLIGHT
  957.53 +BEGIN:STANDARD
  957.54 +TZOFFSETFROM:+0100
  957.55 +TZOFFSETTO:+0000
  957.56 +TZNAME:WET
  957.57 +DTSTART:19800928T020000
  957.58 +RDATE:19800928T020000
  957.59 +RDATE:19810927T020000
  957.60 +RDATE:19820926T020000
  957.61 +RDATE:19830925T020000
  957.62 +RDATE:19840930T020000
  957.63 +RDATE:19850929T020000
  957.64 +RDATE:19860928T020000
  957.65 +RDATE:19870927T020000
  957.66 +RDATE:19880925T020000
  957.67 +RDATE:19890924T020000
  957.68 +RDATE:19900930T020000
  957.69 +RDATE:19910929T020000
  957.70 +RDATE:19920927T020000
  957.71 +RDATE:19930926T020000
  957.72 +RDATE:19940925T020000
  957.73 +RDATE:19950924T020000
  957.74 +END:STANDARD
  957.75 +END:VTIMEZONE
  957.76 +END:VCALENDAR
   958.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   958.2 +++ b/src/zoneinfo/Atlantic/Cape_Verde.ics	Tue Feb 10 18:12:00 2015 +0100
   958.3 @@ -0,0 +1,37 @@
   958.4 +BEGIN:VCALENDAR
   958.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   958.6 +VERSION:2.0
   958.7 +BEGIN:VTIMEZONE
   958.8 +TZID:Atlantic/Cape_Verde
   958.9 +TZURL:http://tzurl.org/zoneinfo/Atlantic/Cape_Verde
  958.10 +X-LIC-LOCATION:Atlantic/Cape_Verde
  958.11 +BEGIN:STANDARD
  958.12 +TZOFFSETFROM:-013404
  958.13 +TZOFFSETTO:-0200
  958.14 +TZNAME:CVT
  958.15 +DTSTART:19070101T000000
  958.16 +RDATE:19070101T000000
  958.17 +END:STANDARD
  958.18 +BEGIN:DAYLIGHT
  958.19 +TZOFFSETFROM:-0200
  958.20 +TZOFFSETTO:-0100
  958.21 +TZNAME:CVST
  958.22 +DTSTART:19420901T000000
  958.23 +RDATE:19420901T000000
  958.24 +END:DAYLIGHT
  958.25 +BEGIN:STANDARD
  958.26 +TZOFFSETFROM:-0100
  958.27 +TZOFFSETTO:-0200
  958.28 +TZNAME:CVT
  958.29 +DTSTART:19451015T000000
  958.30 +RDATE:19451015T000000
  958.31 +END:STANDARD
  958.32 +BEGIN:STANDARD
  958.33 +TZOFFSETFROM:-0200
  958.34 +TZOFFSETTO:-0100
  958.35 +TZNAME:CVT
  958.36 +DTSTART:19751125T020000
  958.37 +RDATE:19751125T020000
  958.38 +END:STANDARD
  958.39 +END:VTIMEZONE
  958.40 +END:VCALENDAR
   959.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   959.2 +++ b/src/zoneinfo/Atlantic/Faroe.ics	Tue Feb 10 18:12:00 2015 +0100
   959.3 @@ -0,0 +1,58 @@
   959.4 +BEGIN:VCALENDAR
   959.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   959.6 +VERSION:2.0
   959.7 +BEGIN:VTIMEZONE
   959.8 +TZID:Atlantic/Faroe
   959.9 +TZURL:http://tzurl.org/zoneinfo/Atlantic/Faroe
  959.10 +X-LIC-LOCATION:Atlantic/Faroe
  959.11 +BEGIN:DAYLIGHT
  959.12 +TZOFFSETFROM:+0000
  959.13 +TZOFFSETTO:+0100
  959.14 +TZNAME:WEST
  959.15 +DTSTART:19810329T010000
  959.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  959.17 +END:DAYLIGHT
  959.18 +BEGIN:STANDARD
  959.19 +TZOFFSETFROM:+0100
  959.20 +TZOFFSETTO:+0000
  959.21 +TZNAME:WET
  959.22 +DTSTART:19961027T020000
  959.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  959.24 +END:STANDARD
  959.25 +BEGIN:STANDARD
  959.26 +TZOFFSETFROM:-002704
  959.27 +TZOFFSETTO:+0000
  959.28 +TZNAME:WET
  959.29 +DTSTART:19080111T000000
  959.30 +RDATE:19080111T000000
  959.31 +END:STANDARD
  959.32 +BEGIN:STANDARD
  959.33 +TZOFFSETFROM:+0000
  959.34 +TZOFFSETTO:+0000
  959.35 +TZNAME:WET
  959.36 +DTSTART:19810101T000000
  959.37 +RDATE:19810101T000000
  959.38 +END:STANDARD
  959.39 +BEGIN:STANDARD
  959.40 +TZOFFSETFROM:+0100
  959.41 +TZOFFSETTO:+0000
  959.42 +TZNAME:WET
  959.43 +DTSTART:19810927T020000
  959.44 +RDATE:19810927T020000
  959.45 +RDATE:19820926T020000
  959.46 +RDATE:19830925T020000
  959.47 +RDATE:19840930T020000
  959.48 +RDATE:19850929T020000
  959.49 +RDATE:19860928T020000
  959.50 +RDATE:19870927T020000
  959.51 +RDATE:19880925T020000
  959.52 +RDATE:19890924T020000
  959.53 +RDATE:19900930T020000
  959.54 +RDATE:19910929T020000
  959.55 +RDATE:19920927T020000
  959.56 +RDATE:19930926T020000
  959.57 +RDATE:19940925T020000
  959.58 +RDATE:19950924T020000
  959.59 +END:STANDARD
  959.60 +END:VTIMEZONE
  959.61 +END:VCALENDAR
   960.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   960.2 +++ b/src/zoneinfo/Atlantic/Madeira.ics	Tue Feb 10 18:12:00 2015 +0100
   960.3 @@ -0,0 +1,202 @@
   960.4 +BEGIN:VCALENDAR
   960.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   960.6 +VERSION:2.0
   960.7 +BEGIN:VTIMEZONE
   960.8 +TZID:Atlantic/Madeira
   960.9 +TZURL:http://tzurl.org/zoneinfo/Atlantic/Madeira
  960.10 +X-LIC-LOCATION:Atlantic/Madeira
  960.11 +BEGIN:DAYLIGHT
  960.12 +TZOFFSETFROM:+0000
  960.13 +TZOFFSETTO:+0100
  960.14 +TZNAME:WEST
  960.15 +DTSTART:19840325T010000
  960.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  960.17 +END:DAYLIGHT
  960.18 +BEGIN:STANDARD
  960.19 +TZOFFSETFROM:+0100
  960.20 +TZOFFSETTO:+0000
  960.21 +TZNAME:WET
  960.22 +DTSTART:19961027T020000
  960.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  960.24 +END:STANDARD
  960.25 +BEGIN:STANDARD
  960.26 +TZOFFSETFROM:-010736
  960.27 +TZOFFSETTO:-010736
  960.28 +TZNAME:FMT
  960.29 +DTSTART:18840101T000000
  960.30 +RDATE:18840101T000000
  960.31 +END:STANDARD
  960.32 +BEGIN:STANDARD
  960.33 +TZOFFSETFROM:-010736
  960.34 +TZOFFSETTO:-0100
  960.35 +TZNAME:MADT
  960.36 +DTSTART:19110524T000000
  960.37 +RDATE:19110524T000000
  960.38 +END:STANDARD
  960.39 +BEGIN:DAYLIGHT
  960.40 +TZOFFSETFROM:-0100
  960.41 +TZOFFSETTO:+0000
  960.42 +TZNAME:MADST
  960.43 +DTSTART:19160617T230000
  960.44 +RDATE:19160617T230000
  960.45 +RDATE:19170228T230000
  960.46 +RDATE:19180301T230000
  960.47 +RDATE:19190228T230000
  960.48 +RDATE:19200229T230000
  960.49 +RDATE:19210228T230000
  960.50 +RDATE:19240416T230000
  960.51 +RDATE:19260417T230000
  960.52 +RDATE:19270409T230000
  960.53 +RDATE:19280414T230000
  960.54 +RDATE:19290420T230000
  960.55 +RDATE:19310418T230000
  960.56 +RDATE:19320402T230000
  960.57 +RDATE:19340407T230000
  960.58 +RDATE:19350330T230000
  960.59 +RDATE:19360418T230000
  960.60 +RDATE:19370403T230000
  960.61 +RDATE:19380326T230000
  960.62 +RDATE:19390415T230000
  960.63 +RDATE:19400224T230000
  960.64 +RDATE:19410405T230000
  960.65 +RDATE:19420314T230000
  960.66 +RDATE:19430313T230000
  960.67 +RDATE:19440311T230000
  960.68 +RDATE:19450310T230000
  960.69 +RDATE:19460406T230000
  960.70 +RDATE:19470406T020000
  960.71 +RDATE:19480404T020000
  960.72 +RDATE:19490403T020000
  960.73 +RDATE:19510401T020000
  960.74 +RDATE:19520406T020000
  960.75 +RDATE:19530405T020000
  960.76 +RDATE:19540404T020000
  960.77 +RDATE:19550403T020000
  960.78 +RDATE:19560401T020000
  960.79 +RDATE:19570407T020000
  960.80 +RDATE:19580406T020000
  960.81 +RDATE:19590405T020000
  960.82 +RDATE:19600403T020000
  960.83 +RDATE:19610402T020000
  960.84 +RDATE:19620401T020000
  960.85 +RDATE:19630407T020000
  960.86 +RDATE:19640405T020000
  960.87 +RDATE:19650404T020000
  960.88 +END:DAYLIGHT
  960.89 +BEGIN:STANDARD
  960.90 +TZOFFSETFROM:+0000
  960.91 +TZOFFSETTO:-0100
  960.92 +TZNAME:MADT
  960.93 +DTSTART:19161101T010000
  960.94 +RDATE:19161101T010000
  960.95 +RDATE:19171015T000000
  960.96 +RDATE:19181015T000000
  960.97 +RDATE:19191015T000000
  960.98 +RDATE:19201015T000000
  960.99 +RDATE:19211015T000000
 960.100 +RDATE:19241015T000000
 960.101 +RDATE:19261003T000000
 960.102 +RDATE:19271002T000000
 960.103 +RDATE:19281007T000000
 960.104 +RDATE:19291006T000000
 960.105 +RDATE:19311004T000000
 960.106 +RDATE:19321002T000000
 960.107 +RDATE:19341007T000000
 960.108 +RDATE:19351006T000000
 960.109 +RDATE:19361004T000000
 960.110 +RDATE:19371003T000000
 960.111 +RDATE:19381002T000000
 960.112 +RDATE:19391119T000000
 960.113 +RDATE:19401006T000000
 960.114 +RDATE:19411006T000000
 960.115 +RDATE:19421025T000000
 960.116 +RDATE:19431031T000000
 960.117 +RDATE:19441029T000000
 960.118 +RDATE:19451028T000000
 960.119 +RDATE:19461006T000000
 960.120 +RDATE:19471005T030000
 960.121 +RDATE:19481003T030000
 960.122 +RDATE:19491002T030000
 960.123 +RDATE:19511007T030000
 960.124 +RDATE:19521005T030000
 960.125 +RDATE:19531004T030000
 960.126 +RDATE:19541003T030000
 960.127 +RDATE:19551002T030000
 960.128 +RDATE:19561007T030000
 960.129 +RDATE:19571006T030000
 960.130 +RDATE:19581005T030000
 960.131 +RDATE:19591004T030000
 960.132 +RDATE:19601002T030000
 960.133 +RDATE:19611001T030000
 960.134 +RDATE:19621007T030000
 960.135 +RDATE:19631006T030000
 960.136 +RDATE:19641004T030000
 960.137 +RDATE:19651003T030000
 960.138 +END:STANDARD
 960.139 +BEGIN:DAYLIGHT
 960.140 +TZOFFSETFROM:+0000
 960.141 +TZOFFSETTO:+0100
 960.142 +TZNAME:MADMT
 960.143 +DTSTART:19420425T230000
 960.144 +RDATE:19420425T230000
 960.145 +RDATE:19430417T230000
 960.146 +RDATE:19440422T230000
 960.147 +RDATE:19450421T230000
 960.148 +END:DAYLIGHT
 960.149 +BEGIN:DAYLIGHT
 960.150 +TZOFFSETFROM:+0100
 960.151 +TZOFFSETTO:+0000
 960.152 +TZNAME:MADST
 960.153 +DTSTART:19420816T000000
 960.154 +RDATE:19420816T000000
 960.155 +RDATE:19430829T000000
 960.156 +RDATE:19440827T000000
 960.157 +RDATE:19450826T000000
 960.158 +END:DAYLIGHT
 960.159 +BEGIN:STANDARD
 960.160 +TZOFFSETFROM:-0100
 960.161 +TZOFFSETTO:+0000
 960.162 +TZNAME:WET
 960.163 +DTSTART:19660403T020000
 960.164 +RDATE:19660403T020000
 960.165 +END:STANDARD
 960.166 +BEGIN:DAYLIGHT
 960.167 +TZOFFSETFROM:+0000
 960.168 +TZOFFSETTO:+0100
 960.169 +TZNAME:WEST
 960.170 +DTSTART:19770327T000000
 960.171 +RDATE:19770327T000000
 960.172 +RDATE:19780402T000000
 960.173 +RDATE:19790401T000000
 960.174 +RDATE:19800330T000000
 960.175 +RDATE:19810329T010000
 960.176 +RDATE:19820328T010000
 960.177 +RDATE:19830327T020000
 960.178 +END:DAYLIGHT
 960.179 +BEGIN:STANDARD
 960.180 +TZOFFSETFROM:+0100
 960.181 +TZOFFSETTO:+0000
 960.182 +TZNAME:WET
 960.183 +DTSTART:19770925T010000
 960.184 +RDATE:19770925T010000
 960.185 +RDATE:19781001T010000
 960.186 +RDATE:19790930T020000
 960.187 +RDATE:19800928T020000
 960.188 +RDATE:19810927T020000
 960.189 +RDATE:19820926T020000
 960.190 +RDATE:19830925T020000
 960.191 +RDATE:19840930T020000
 960.192 +RDATE:19850929T020000
 960.193 +RDATE:19860928T020000
 960.194 +RDATE:19870927T020000
 960.195 +RDATE:19880925T020000
 960.196 +RDATE:19890924T020000
 960.197 +RDATE:19900930T020000
 960.198 +RDATE:19910929T020000
 960.199 +RDATE:19920927T020000
 960.200 +RDATE:19930926T020000
 960.201 +RDATE:19940925T020000
 960.202 +RDATE:19950924T020000
 960.203 +END:STANDARD
 960.204 +END:VTIMEZONE
 960.205 +END:VCALENDAR
   961.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   961.2 +++ b/src/zoneinfo/Atlantic/Reykjavik.ics	Tue Feb 10 18:12:00 2015 +0100
   961.3 @@ -0,0 +1,104 @@
   961.4 +BEGIN:VCALENDAR
   961.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   961.6 +VERSION:2.0
   961.7 +BEGIN:VTIMEZONE
   961.8 +TZID:Atlantic/Reykjavik
   961.9 +TZURL:http://tzurl.org/zoneinfo/Atlantic/Reykjavik
  961.10 +X-LIC-LOCATION:Atlantic/Reykjavik
  961.11 +BEGIN:STANDARD
  961.12 +TZOFFSETFROM:-012724
  961.13 +TZOFFSETTO:-012748
  961.14 +TZNAME:RMT
  961.15 +DTSTART:18370101T000000
  961.16 +RDATE:18370101T000000
  961.17 +END:STANDARD
  961.18 +BEGIN:STANDARD
  961.19 +TZOFFSETFROM:-012748
  961.20 +TZOFFSETTO:-0100
  961.21 +TZNAME:IST
  961.22 +DTSTART:19080101T000000
  961.23 +RDATE:19080101T000000
  961.24 +END:STANDARD
  961.25 +BEGIN:DAYLIGHT
  961.26 +TZOFFSETFROM:-0100
  961.27 +TZOFFSETTO:+0000
  961.28 +TZNAME:ISST
  961.29 +DTSTART:19170219T230000
  961.30 +RDATE:19170219T230000
  961.31 +RDATE:19180219T230000
  961.32 +RDATE:19390429T230000
  961.33 +RDATE:19400225T020000
  961.34 +RDATE:19410302T010000
  961.35 +RDATE:19420308T010000
  961.36 +RDATE:19430307T010000
  961.37 +RDATE:19440305T010000
  961.38 +RDATE:19450304T010000
  961.39 +RDATE:19460303T010000
  961.40 +RDATE:19470406T010000
  961.41 +RDATE:19480404T010000
  961.42 +RDATE:19490403T010000
  961.43 +RDATE:19500402T010000
  961.44 +RDATE:19510401T010000
  961.45 +RDATE:19520406T010000
  961.46 +RDATE:19530405T010000
  961.47 +RDATE:19540404T010000
  961.48 +RDATE:19550403T010000
  961.49 +RDATE:19560401T010000
  961.50 +RDATE:19570407T010000
  961.51 +RDATE:19580406T010000
  961.52 +RDATE:19590405T010000
  961.53 +RDATE:19600403T010000
  961.54 +RDATE:19610402T010000
  961.55 +RDATE:19620401T010000
  961.56 +RDATE:19630407T010000
  961.57 +RDATE:19640405T010000
  961.58 +RDATE:19650404T010000
  961.59 +RDATE:19660403T010000
  961.60 +RDATE:19670402T010000
  961.61 +END:DAYLIGHT
  961.62 +BEGIN:STANDARD
  961.63 +TZOFFSETFROM:+0000
  961.64 +TZOFFSETTO:-0100
  961.65 +TZNAME:IST
  961.66 +DTSTART:19171021T010000
  961.67 +RDATE:19171021T010000
  961.68 +RDATE:19181116T010000
  961.69 +RDATE:19391129T020000
  961.70 +RDATE:19401103T020000
  961.71 +RDATE:19411102T020000
  961.72 +RDATE:19421025T020000
  961.73 +RDATE:19431024T020000
  961.74 +RDATE:19441022T020000
  961.75 +RDATE:19451028T020000
  961.76 +RDATE:19461027T020000
  961.77 +RDATE:19471026T020000
  961.78 +RDATE:19481024T020000
  961.79 +RDATE:19491030T020000
  961.80 +RDATE:19501022T020000
  961.81 +RDATE:19511028T020000
  961.82 +RDATE:19521026T020000
  961.83 +RDATE:19531025T020000
  961.84 +RDATE:19541024T020000
  961.85 +RDATE:19551023T020000
  961.86 +RDATE:19561028T020000
  961.87 +RDATE:19571027T020000
  961.88 +RDATE:19581026T020000
  961.89 +RDATE:19591025T020000
  961.90 +RDATE:19601023T020000
  961.91 +RDATE:19611022T020000
  961.92 +RDATE:19621028T020000
  961.93 +RDATE:19631027T020000
  961.94 +RDATE:19641025T020000
  961.95 +RDATE:19651024T020000
  961.96 +RDATE:19661023T020000
  961.97 +RDATE:19671029T020000
  961.98 +END:STANDARD
  961.99 +BEGIN:STANDARD
 961.100 +TZOFFSETFROM:-0100
 961.101 +TZOFFSETTO:+0000
 961.102 +TZNAME:GMT
 961.103 +DTSTART:19680407T010000
 961.104 +RDATE:19680407T010000
 961.105 +END:STANDARD
 961.106 +END:VTIMEZONE
 961.107 +END:VCALENDAR
   962.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   962.2 +++ b/src/zoneinfo/Atlantic/South_Georgia.ics	Tue Feb 10 18:12:00 2015 +0100
   962.3 @@ -0,0 +1,16 @@
   962.4 +BEGIN:VCALENDAR
   962.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   962.6 +VERSION:2.0
   962.7 +BEGIN:VTIMEZONE
   962.8 +TZID:Atlantic/South_Georgia
   962.9 +TZURL:http://tzurl.org/zoneinfo/Atlantic/South_Georgia
  962.10 +X-LIC-LOCATION:Atlantic/South_Georgia
  962.11 +BEGIN:STANDARD
  962.12 +TZOFFSETFROM:-022608
  962.13 +TZOFFSETTO:-0200
  962.14 +TZNAME:GST
  962.15 +DTSTART:18900101T000000
  962.16 +RDATE:18900101T000000
  962.17 +END:STANDARD
  962.18 +END:VTIMEZONE
  962.19 +END:VCALENDAR
   963.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   963.2 +++ b/src/zoneinfo/Atlantic/St_Helena.ics	Tue Feb 10 18:12:00 2015 +0100
   963.3 @@ -0,0 +1,23 @@
   963.4 +BEGIN:VCALENDAR
   963.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   963.6 +VERSION:2.0
   963.7 +BEGIN:VTIMEZONE
   963.8 +TZID:Atlantic/St_Helena
   963.9 +TZURL:http://tzurl.org/zoneinfo/Atlantic/St_Helena
  963.10 +X-LIC-LOCATION:Atlantic/St_Helena
  963.11 +BEGIN:STANDARD
  963.12 +TZOFFSETFROM:-002248
  963.13 +TZOFFSETTO:-002248
  963.14 +TZNAME:JMT
  963.15 +DTSTART:18900101T000000
  963.16 +RDATE:18900101T000000
  963.17 +END:STANDARD
  963.18 +BEGIN:STANDARD
  963.19 +TZOFFSETFROM:-002248
  963.20 +TZOFFSETTO:+0000
  963.21 +TZNAME:GMT
  963.22 +DTSTART:19510101T000000
  963.23 +RDATE:19510101T000000
  963.24 +END:STANDARD
  963.25 +END:VTIMEZONE
  963.26 +END:VCALENDAR
   964.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   964.2 +++ b/src/zoneinfo/Atlantic/Stanley.ics	Tue Feb 10 18:12:00 2015 +0100
   964.3 @@ -0,0 +1,142 @@
   964.4 +BEGIN:VCALENDAR
   964.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   964.6 +VERSION:2.0
   964.7 +BEGIN:VTIMEZONE
   964.8 +TZID:Atlantic/Stanley
   964.9 +TZURL:http://tzurl.org/zoneinfo/Atlantic/Stanley
  964.10 +X-LIC-LOCATION:Atlantic/Stanley
  964.11 +BEGIN:STANDARD
  964.12 +TZOFFSETFROM:-0300
  964.13 +TZOFFSETTO:-0400
  964.14 +TZNAME:FKT
  964.15 +DTSTART:20120415T020000
  964.16 +RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=3SU
  964.17 +END:STANDARD
  964.18 +BEGIN:DAYLIGHT
  964.19 +TZOFFSETFROM:-0400
  964.20 +TZOFFSETTO:-0300
  964.21 +TZNAME:FKST
  964.22 +DTSTART:20120902T020000
  964.23 +RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=1SU
  964.24 +END:DAYLIGHT
  964.25 +BEGIN:STANDARD
  964.26 +TZOFFSETFROM:-035124
  964.27 +TZOFFSETTO:-035124
  964.28 +TZNAME:SMT
  964.29 +DTSTART:18900101T000000
  964.30 +RDATE:18900101T000000
  964.31 +END:STANDARD
  964.32 +BEGIN:STANDARD
  964.33 +TZOFFSETFROM:-035124
  964.34 +TZOFFSETTO:-0400
  964.35 +TZNAME:FKT
  964.36 +DTSTART:19120312T000000
  964.37 +RDATE:19120312T000000
  964.38 +END:STANDARD
  964.39 +BEGIN:DAYLIGHT
  964.40 +TZOFFSETFROM:-0400
  964.41 +TZOFFSETTO:-0300
  964.42 +TZNAME:FKST
  964.43 +DTSTART:19370926T000000
  964.44 +RDATE:19370926T000000
  964.45 +RDATE:19380925T000000
  964.46 +RDATE:19391001T000000
  964.47 +RDATE:19400929T000000
  964.48 +RDATE:19410928T000000
  964.49 +RDATE:19420927T000000
  964.50 +RDATE:19860914T000000
  964.51 +RDATE:19870913T000000
  964.52 +RDATE:19880911T000000
  964.53 +RDATE:19890910T000000
  964.54 +RDATE:19900909T000000
  964.55 +RDATE:19910915T000000
  964.56 +RDATE:19920913T000000
  964.57 +RDATE:19930912T000000
  964.58 +RDATE:19940911T000000
  964.59 +RDATE:19950910T000000
  964.60 +RDATE:19960915T000000
  964.61 +RDATE:19970914T000000
  964.62 +RDATE:19980913T000000
  964.63 +RDATE:19990912T000000
  964.64 +RDATE:20000910T000000
  964.65 +RDATE:20010902T020000
  964.66 +RDATE:20020901T020000
  964.67 +RDATE:20030907T020000
  964.68 +RDATE:20040905T020000
  964.69 +RDATE:20050904T020000
  964.70 +RDATE:20060903T020000
  964.71 +RDATE:20070902T020000
  964.72 +RDATE:20080907T020000
  964.73 +RDATE:20090906T020000
  964.74 +RDATE:20100905T020000
  964.75 +END:DAYLIGHT
  964.76 +BEGIN:STANDARD
  964.77 +TZOFFSETFROM:-0300
  964.78 +TZOFFSETTO:-0400
  964.79 +TZNAME:FKT
  964.80 +DTSTART:19380320T000000
  964.81 +RDATE:19380320T000000
  964.82 +RDATE:19390319T000000
  964.83 +RDATE:19400324T000000
  964.84 +RDATE:19410323T000000
  964.85 +RDATE:19420322T000000
  964.86 +RDATE:19430101T000000
  964.87 +RDATE:19860420T000000
  964.88 +RDATE:19870419T000000
  964.89 +RDATE:19880417T000000
  964.90 +RDATE:19890416T000000
  964.91 +RDATE:19900422T000000
  964.92 +RDATE:19910421T000000
  964.93 +RDATE:19920419T000000
  964.94 +RDATE:19930418T000000
  964.95 +RDATE:19940417T000000
  964.96 +RDATE:19950416T000000
  964.97 +RDATE:19960421T000000
  964.98 +RDATE:19970420T000000
  964.99 +RDATE:19980419T000000
 964.100 +RDATE:19990418T000000
 964.101 +RDATE:20000416T000000
 964.102 +RDATE:20010415T020000
 964.103 +RDATE:20020421T020000
 964.104 +RDATE:20030420T020000
 964.105 +RDATE:20040418T020000
 964.106 +RDATE:20050417T020000
 964.107 +RDATE:20060416T020000
 964.108 +RDATE:20070415T020000
 964.109 +RDATE:20080420T020000
 964.110 +RDATE:20090419T020000
 964.111 +RDATE:20100418T020000
 964.112 +END:STANDARD
 964.113 +BEGIN:STANDARD
 964.114 +TZOFFSETFROM:-0400
 964.115 +TZOFFSETTO:-0300
 964.116 +TZNAME:FKT
 964.117 +DTSTART:19830501T000000
 964.118 +RDATE:19830501T000000
 964.119 +END:STANDARD
 964.120 +BEGIN:DAYLIGHT
 964.121 +TZOFFSETFROM:-0300
 964.122 +TZOFFSETTO:-0200
 964.123 +TZNAME:FKST
 964.124 +DTSTART:19830925T000000
 964.125 +RDATE:19830925T000000
 964.126 +RDATE:19840916T000000
 964.127 +END:DAYLIGHT
 964.128 +BEGIN:STANDARD
 964.129 +TZOFFSETFROM:-0200
 964.130 +TZOFFSETTO:-0300
 964.131 +TZNAME:FKT
 964.132 +DTSTART:19840429T000000
 964.133 +RDATE:19840429T000000
 964.134 +RDATE:19850428T000000
 964.135 +END:STANDARD
 964.136 +BEGIN:DAYLIGHT
 964.137 +TZOFFSETFROM:-0300
 964.138 +TZOFFSETTO:-0300
 964.139 +TZNAME:FKST
 964.140 +DTSTART:19850915T000000
 964.141 +RDATE:19850915T000000
 964.142 +RDATE:20110904T020000
 964.143 +END:DAYLIGHT
 964.144 +END:VTIMEZONE
 964.145 +END:VCALENDAR
   965.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   965.2 +++ b/src/zoneinfo/Australia/Adelaide.ics	Tue Feb 10 18:12:00 2015 +0100
   965.3 @@ -0,0 +1,137 @@
   965.4 +BEGIN:VCALENDAR
   965.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   965.6 +VERSION:2.0
   965.7 +BEGIN:VTIMEZONE
   965.8 +TZID:Australia/Adelaide
   965.9 +TZURL:http://tzurl.org/zoneinfo/Australia/Adelaide
  965.10 +X-LIC-LOCATION:Australia/Adelaide
  965.11 +BEGIN:STANDARD
  965.12 +TZOFFSETFROM:+1030
  965.13 +TZOFFSETTO:+0930
  965.14 +TZNAME:CST
  965.15 +DTSTART:20080406T030000
  965.16 +RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU
  965.17 +END:STANDARD
  965.18 +BEGIN:DAYLIGHT
  965.19 +TZOFFSETFROM:+0930
  965.20 +TZOFFSETTO:+1030
  965.21 +TZNAME:CST
  965.22 +DTSTART:20081005T020000
  965.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU
  965.24 +END:DAYLIGHT
  965.25 +BEGIN:STANDARD
  965.26 +TZOFFSETFROM:+091420
  965.27 +TZOFFSETTO:+0900
  965.28 +TZNAME:CST
  965.29 +DTSTART:18950201T000000
  965.30 +RDATE:18950201T000000
  965.31 +END:STANDARD
  965.32 +BEGIN:STANDARD
  965.33 +TZOFFSETFROM:+0900
  965.34 +TZOFFSETTO:+0930
  965.35 +TZNAME:CST
  965.36 +DTSTART:18990501T000000
  965.37 +RDATE:18990501T000000
  965.38 +END:STANDARD
  965.39 +BEGIN:DAYLIGHT
  965.40 +TZOFFSETFROM:+0930
  965.41 +TZOFFSETTO:+1030
  965.42 +TZNAME:CST
  965.43 +DTSTART:19170101T000100
  965.44 +RDATE:19170101T000100
  965.45 +RDATE:19420101T020000
  965.46 +RDATE:19420927T020000
  965.47 +RDATE:19431003T020000
  965.48 +RDATE:19711031T020000
  965.49 +RDATE:19721029T020000
  965.50 +RDATE:19731028T020000
  965.51 +RDATE:19741027T020000
  965.52 +RDATE:19751026T020000
  965.53 +RDATE:19761031T020000
  965.54 +RDATE:19771030T020000
  965.55 +RDATE:19781029T020000
  965.56 +RDATE:19791028T020000
  965.57 +RDATE:19801026T020000
  965.58 +RDATE:19811025T020000
  965.59 +RDATE:19821031T020000
  965.60 +RDATE:19831030T020000
  965.61 +RDATE:19841028T020000
  965.62 +RDATE:19851027T020000
  965.63 +RDATE:19861019T020000
  965.64 +RDATE:19871025T020000
  965.65 +RDATE:19881030T020000
  965.66 +RDATE:19891029T020000
  965.67 +RDATE:19901028T020000
  965.68 +RDATE:19911027T020000
  965.69 +RDATE:19921025T020000
  965.70 +RDATE:19931031T020000
  965.71 +RDATE:19941030T020000
  965.72 +RDATE:19951029T020000
  965.73 +RDATE:19961027T020000
  965.74 +RDATE:19971026T020000
  965.75 +RDATE:19981025T020000
  965.76 +RDATE:19991031T020000
  965.77 +RDATE:20001029T020000
  965.78 +RDATE:20011028T020000
  965.79 +RDATE:20021027T020000
  965.80 +RDATE:20031026T020000
  965.81 +RDATE:20041031T020000
  965.82 +RDATE:20051030T020000
  965.83 +RDATE:20061029T020000
  965.84 +RDATE:20071028T020000
  965.85 +END:DAYLIGHT
  965.86 +BEGIN:STANDARD
  965.87 +TZOFFSETFROM:+1030
  965.88 +TZOFFSETTO:+0930
  965.89 +TZNAME:CST
  965.90 +DTSTART:19170325T020000
  965.91 +RDATE:19170325T020000
  965.92 +RDATE:19420329T020000
  965.93 +RDATE:19430328T020000
  965.94 +RDATE:19440326T020000
  965.95 +RDATE:19720227T030000
  965.96 +RDATE:19730304T030000
  965.97 +RDATE:19740303T030000
  965.98 +RDATE:19750302T030000
  965.99 +RDATE:19760307T030000
 965.100 +RDATE:19770306T030000
 965.101 +RDATE:19780305T030000
 965.102 +RDATE:19790304T030000
 965.103 +RDATE:19800302T030000
 965.104 +RDATE:19810301T030000
 965.105 +RDATE:19820307T030000
 965.106 +RDATE:19830306T030000
 965.107 +RDATE:19840304T030000
 965.108 +RDATE:19850303T030000
 965.109 +RDATE:19860316T030000
 965.110 +RDATE:19870315T030000
 965.111 +RDATE:19880320T030000
 965.112 +RDATE:19890319T030000
 965.113 +RDATE:19900318T030000
 965.114 +RDATE:19910303T030000
 965.115 +RDATE:19920322T030000
 965.116 +RDATE:19930307T030000
 965.117 +RDATE:19940320T030000
 965.118 +RDATE:19950326T030000
 965.119 +RDATE:19960331T030000
 965.120 +RDATE:19970330T030000
 965.121 +RDATE:19980329T030000
 965.122 +RDATE:19990328T030000
 965.123 +RDATE:20000326T030000
 965.124 +RDATE:20010325T030000
 965.125 +RDATE:20020331T030000
 965.126 +RDATE:20030330T030000
 965.127 +RDATE:20040328T030000
 965.128 +RDATE:20050327T030000
 965.129 +RDATE:20060402T030000
 965.130 +RDATE:20070325T030000
 965.131 +END:STANDARD
 965.132 +BEGIN:STANDARD
 965.133 +TZOFFSETFROM:+0930
 965.134 +TZOFFSETTO:+0930
 965.135 +TZNAME:CST
 965.136 +DTSTART:19710101T000000
 965.137 +RDATE:19710101T000000
 965.138 +END:STANDARD
 965.139 +END:VTIMEZONE
 965.140 +END:VCALENDAR
   966.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   966.2 +++ b/src/zoneinfo/Australia/Brisbane.ics	Tue Feb 10 18:12:00 2015 +0100
   966.3 @@ -0,0 +1,51 @@
   966.4 +BEGIN:VCALENDAR
   966.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   966.6 +VERSION:2.0
   966.7 +BEGIN:VTIMEZONE
   966.8 +TZID:Australia/Brisbane
   966.9 +TZURL:http://tzurl.org/zoneinfo/Australia/Brisbane
  966.10 +X-LIC-LOCATION:Australia/Brisbane
  966.11 +BEGIN:STANDARD
  966.12 +TZOFFSETFROM:+101208
  966.13 +TZOFFSETTO:+1000
  966.14 +TZNAME:EST
  966.15 +DTSTART:18950101T000000
  966.16 +RDATE:18950101T000000
  966.17 +END:STANDARD
  966.18 +BEGIN:DAYLIGHT
  966.19 +TZOFFSETFROM:+1000
  966.20 +TZOFFSETTO:+1100
  966.21 +TZNAME:EST
  966.22 +DTSTART:19170101T000100
  966.23 +RDATE:19170101T000100
  966.24 +RDATE:19420101T020000
  966.25 +RDATE:19420927T020000
  966.26 +RDATE:19431003T020000
  966.27 +RDATE:19711031T020000
  966.28 +RDATE:19891029T020000
  966.29 +RDATE:19901028T020000
  966.30 +RDATE:19911027T020000
  966.31 +END:DAYLIGHT
  966.32 +BEGIN:STANDARD
  966.33 +TZOFFSETFROM:+1100
  966.34 +TZOFFSETTO:+1000
  966.35 +TZNAME:EST
  966.36 +DTSTART:19170325T020000
  966.37 +RDATE:19170325T020000
  966.38 +RDATE:19420329T020000
  966.39 +RDATE:19430328T020000
  966.40 +RDATE:19440326T020000
  966.41 +RDATE:19720227T030000
  966.42 +RDATE:19900304T030000
  966.43 +RDATE:19910303T030000
  966.44 +RDATE:19920301T030000
  966.45 +END:STANDARD
  966.46 +BEGIN:STANDARD
  966.47 +TZOFFSETFROM:+1000
  966.48 +TZOFFSETTO:+1000
  966.49 +TZNAME:EST
  966.50 +DTSTART:19710101T000000
  966.51 +RDATE:19710101T000000
  966.52 +END:STANDARD
  966.53 +END:VTIMEZONE
  966.54 +END:VCALENDAR
   967.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   967.2 +++ b/src/zoneinfo/Australia/Broken_Hill.ics	Tue Feb 10 18:12:00 2015 +0100
   967.3 @@ -0,0 +1,151 @@
   967.4 +BEGIN:VCALENDAR
   967.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   967.6 +VERSION:2.0
   967.7 +BEGIN:VTIMEZONE
   967.8 +TZID:Australia/Broken_Hill
   967.9 +TZURL:http://tzurl.org/zoneinfo/Australia/Broken_Hill
  967.10 +X-LIC-LOCATION:Australia/Broken_Hill
  967.11 +BEGIN:STANDARD
  967.12 +TZOFFSETFROM:+1030
  967.13 +TZOFFSETTO:+0930
  967.14 +TZNAME:CST
  967.15 +DTSTART:20080406T030000
  967.16 +RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU
  967.17 +END:STANDARD
  967.18 +BEGIN:DAYLIGHT
  967.19 +TZOFFSETFROM:+0930
  967.20 +TZOFFSETTO:+1030
  967.21 +TZNAME:CST
  967.22 +DTSTART:20081005T020000
  967.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU
  967.24 +END:DAYLIGHT
  967.25 +BEGIN:STANDARD
  967.26 +TZOFFSETFROM:+092548
  967.27 +TZOFFSETTO:+1000
  967.28 +TZNAME:EST
  967.29 +DTSTART:18950201T000000
  967.30 +RDATE:18950201T000000
  967.31 +END:STANDARD
  967.32 +BEGIN:STANDARD
  967.33 +TZOFFSETFROM:+1000
  967.34 +TZOFFSETTO:+0900
  967.35 +TZNAME:CST
  967.36 +DTSTART:18960823T000000
  967.37 +RDATE:18960823T000000
  967.38 +END:STANDARD
  967.39 +BEGIN:STANDARD
  967.40 +TZOFFSETFROM:+0900
  967.41 +TZOFFSETTO:+0930
  967.42 +TZNAME:CST
  967.43 +DTSTART:18990501T000000
  967.44 +RDATE:18990501T000000
  967.45 +END:STANDARD
  967.46 +BEGIN:DAYLIGHT
  967.47 +TZOFFSETFROM:+0930
  967.48 +TZOFFSETTO:+1030
  967.49 +TZNAME:CST
  967.50 +DTSTART:19170101T000100
  967.51 +RDATE:19170101T000100
  967.52 +RDATE:19420101T020000
  967.53 +RDATE:19420927T020000
  967.54 +RDATE:19431003T020000
  967.55 +RDATE:19711031T020000
  967.56 +RDATE:19721029T020000
  967.57 +RDATE:19731028T020000
  967.58 +RDATE:19741027T020000
  967.59 +RDATE:19751026T020000
  967.60 +RDATE:19761031T020000
  967.61 +RDATE:19771030T020000
  967.62 +RDATE:19781029T020000
  967.63 +RDATE:19791028T020000
  967.64 +RDATE:19801026T020000
  967.65 +RDATE:19811025T020000
  967.66 +RDATE:19821031T020000
  967.67 +RDATE:19831030T020000
  967.68 +RDATE:19841028T020000
  967.69 +RDATE:19851027T020000
  967.70 +RDATE:19861019T020000
  967.71 +RDATE:19871025T020000
  967.72 +RDATE:19881030T020000
  967.73 +RDATE:19891029T020000
  967.74 +RDATE:19901028T020000
  967.75 +RDATE:19911027T020000
  967.76 +RDATE:19921025T020000
  967.77 +RDATE:19931031T020000
  967.78 +RDATE:19941030T020000
  967.79 +RDATE:19951029T020000
  967.80 +RDATE:19961027T020000
  967.81 +RDATE:19971026T020000
  967.82 +RDATE:19981025T020000
  967.83 +RDATE:19991031T020000
  967.84 +RDATE:20001029T020000
  967.85 +RDATE:20011028T020000
  967.86 +RDATE:20021027T020000
  967.87 +RDATE:20031026T020000
  967.88 +RDATE:20041031T020000
  967.89 +RDATE:20051030T020000
  967.90 +RDATE:20061029T020000
  967.91 +RDATE:20071028T020000
  967.92 +END:DAYLIGHT
  967.93 +BEGIN:STANDARD
  967.94 +TZOFFSETFROM:+1030
  967.95 +TZOFFSETTO:+0930
  967.96 +TZNAME:CST
  967.97 +DTSTART:19170325T020000
  967.98 +RDATE:19170325T020000
  967.99 +RDATE:19420329T020000
 967.100 +RDATE:19430328T020000
 967.101 +RDATE:19440326T020000
 967.102 +RDATE:19720227T030000
 967.103 +RDATE:19730304T030000
 967.104 +RDATE:19740303T030000
 967.105 +RDATE:19750302T030000
 967.106 +RDATE:19760307T030000
 967.107 +RDATE:19770306T030000
 967.108 +RDATE:19780305T030000
 967.109 +RDATE:19790304T030000
 967.110 +RDATE:19800302T030000
 967.111 +RDATE:19810301T030000
 967.112 +RDATE:19820404T030000
 967.113 +RDATE:19830306T030000
 967.114 +RDATE:19840304T030000
 967.115 +RDATE:19850303T030000
 967.116 +RDATE:19860316T030000
 967.117 +RDATE:19870315T030000
 967.118 +RDATE:19880320T030000
 967.119 +RDATE:19890319T030000
 967.120 +RDATE:19900304T030000
 967.121 +RDATE:19910303T030000
 967.122 +RDATE:19920301T030000
 967.123 +RDATE:19930307T030000
 967.124 +RDATE:19940306T030000
 967.125 +RDATE:19950305T030000
 967.126 +RDATE:19960331T030000
 967.127 +RDATE:19970330T030000
 967.128 +RDATE:19980329T030000
 967.129 +RDATE:19990328T030000
 967.130 +RDATE:20000326T030000
 967.131 +RDATE:20010325T030000
 967.132 +RDATE:20020331T030000
 967.133 +RDATE:20030330T030000
 967.134 +RDATE:20040328T030000
 967.135 +RDATE:20050327T030000
 967.136 +RDATE:20060402T030000
 967.137 +RDATE:20070325T030000
 967.138 +END:STANDARD
 967.139 +BEGIN:STANDARD
 967.140 +TZOFFSETFROM:+0930
 967.141 +TZOFFSETTO:+0930
 967.142 +TZNAME:CST
 967.143 +DTSTART:19710101T000000
 967.144 +RDATE:19710101T000000
 967.145 +END:STANDARD
 967.146 +BEGIN:DAYLIGHT
 967.147 +TZOFFSETFROM:+1030
 967.148 +TZOFFSETTO:+1030
 967.149 +TZNAME:CST
 967.150 +DTSTART:20000101T000000
 967.151 +RDATE:20000101T000000
 967.152 +END:DAYLIGHT
 967.153 +END:VTIMEZONE
 967.154 +END:VCALENDAR
   968.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   968.2 +++ b/src/zoneinfo/Australia/Currie.ics	Tue Feb 10 18:12:00 2015 +0100
   968.3 @@ -0,0 +1,130 @@
   968.4 +BEGIN:VCALENDAR
   968.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   968.6 +VERSION:2.0
   968.7 +BEGIN:VTIMEZONE
   968.8 +TZID:Australia/Currie
   968.9 +TZURL:http://tzurl.org/zoneinfo/Australia/Currie
  968.10 +X-LIC-LOCATION:Australia/Currie
  968.11 +BEGIN:DAYLIGHT
  968.12 +TZOFFSETFROM:+1000
  968.13 +TZOFFSETTO:+1100
  968.14 +TZNAME:EST
  968.15 +DTSTART:20011007T020000
  968.16 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU
  968.17 +END:DAYLIGHT
  968.18 +BEGIN:STANDARD
  968.19 +TZOFFSETFROM:+1100
  968.20 +TZOFFSETTO:+1000
  968.21 +TZNAME:EST
  968.22 +DTSTART:20080406T030000
  968.23 +RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU
  968.24 +END:STANDARD
  968.25 +BEGIN:STANDARD
  968.26 +TZOFFSETFROM:+093528
  968.27 +TZOFFSETTO:+1000
  968.28 +TZNAME:EST
  968.29 +DTSTART:18950901T000000
  968.30 +RDATE:18950901T000000
  968.31 +END:STANDARD
  968.32 +BEGIN:DAYLIGHT
  968.33 +TZOFFSETFROM:+1000
  968.34 +TZOFFSETTO:+1100
  968.35 +TZNAME:EST
  968.36 +DTSTART:19161001T020000
  968.37 +RDATE:19161001T020000
  968.38 +RDATE:19420101T020000
  968.39 +RDATE:19420927T020000
  968.40 +RDATE:19431003T020000
  968.41 +RDATE:19711031T020000
  968.42 +RDATE:19721029T020000
  968.43 +RDATE:19731028T020000
  968.44 +RDATE:19741027T020000
  968.45 +RDATE:19751026T020000
  968.46 +RDATE:19761031T020000
  968.47 +RDATE:19771030T020000
  968.48 +RDATE:19781029T020000
  968.49 +RDATE:19791028T020000
  968.50 +RDATE:19801026T020000
  968.51 +RDATE:19811025T020000
  968.52 +RDATE:19821031T020000
  968.53 +RDATE:19831030T020000
  968.54 +RDATE:19841028T020000
  968.55 +RDATE:19851027T020000
  968.56 +RDATE:19861019T020000
  968.57 +RDATE:19871025T020000
  968.58 +RDATE:19881030T020000
  968.59 +RDATE:19891029T020000
  968.60 +RDATE:19901028T020000
  968.61 +RDATE:19911006T020000
  968.62 +RDATE:19921004T020000
  968.63 +RDATE:19931003T020000
  968.64 +RDATE:19941002T020000
  968.65 +RDATE:19951001T020000
  968.66 +RDATE:19961006T020000
  968.67 +RDATE:19971005T020000
  968.68 +RDATE:19981004T020000
  968.69 +RDATE:19991003T020000
  968.70 +RDATE:20000827T020000
  968.71 +END:DAYLIGHT
  968.72 +BEGIN:DAYLIGHT
  968.73 +TZOFFSETFROM:+1100
  968.74 +TZOFFSETTO:+1100
  968.75 +TZNAME:EST
  968.76 +DTSTART:19170201T000000
  968.77 +RDATE:19170201T000000
  968.78 +END:DAYLIGHT
  968.79 +BEGIN:STANDARD
  968.80 +TZOFFSETFROM:+1100
  968.81 +TZOFFSETTO:+1000
  968.82 +TZNAME:EST
  968.83 +DTSTART:19170325T020000
  968.84 +RDATE:19170325T020000
  968.85 +RDATE:19420329T020000
  968.86 +RDATE:19430328T020000
  968.87 +RDATE:19440326T020000
  968.88 +RDATE:19720227T030000
  968.89 +RDATE:19730304T030000
  968.90 +RDATE:19740303T030000
  968.91 +RDATE:19750302T030000
  968.92 +RDATE:19760307T030000
  968.93 +RDATE:19770306T030000
  968.94 +RDATE:19780305T030000
  968.95 +RDATE:19790304T030000
  968.96 +RDATE:19800302T030000
  968.97 +RDATE:19810301T030000
  968.98 +RDATE:19820328T030000
  968.99 +RDATE:19830327T030000
 968.100 +RDATE:19840304T030000
 968.101 +RDATE:19850303T030000
 968.102 +RDATE:19860302T030000
 968.103 +RDATE:19870315T030000
 968.104 +RDATE:19880320T030000
 968.105 +RDATE:19890319T030000
 968.106 +RDATE:19900318T030000
 968.107 +RDATE:19910331T030000
 968.108 +RDATE:19920329T030000
 968.109 +RDATE:19930328T030000
 968.110 +RDATE:19940327T030000
 968.111 +RDATE:19950326T030000
 968.112 +RDATE:19960331T030000
 968.113 +RDATE:19970330T030000
 968.114 +RDATE:19980329T030000
 968.115 +RDATE:19990328T030000
 968.116 +RDATE:20000326T030000
 968.117 +RDATE:20010325T030000
 968.118 +RDATE:20020331T030000
 968.119 +RDATE:20030330T030000
 968.120 +RDATE:20040328T030000
 968.121 +RDATE:20050327T030000
 968.122 +RDATE:20060402T030000
 968.123 +RDATE:20070325T030000
 968.124 +END:STANDARD
 968.125 +BEGIN:STANDARD
 968.126 +TZOFFSETFROM:+1000
 968.127 +TZOFFSETTO:+1000
 968.128 +TZNAME:EST
 968.129 +DTSTART:19710701T000000
 968.130 +RDATE:19710701T000000
 968.131 +END:STANDARD
 968.132 +END:VTIMEZONE
 968.133 +END:VCALENDAR
   969.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   969.2 +++ b/src/zoneinfo/Australia/Darwin.ics	Tue Feb 10 18:12:00 2015 +0100
   969.3 @@ -0,0 +1,43 @@
   969.4 +BEGIN:VCALENDAR
   969.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   969.6 +VERSION:2.0
   969.7 +BEGIN:VTIMEZONE
   969.8 +TZID:Australia/Darwin
   969.9 +TZURL:http://tzurl.org/zoneinfo/Australia/Darwin
  969.10 +X-LIC-LOCATION:Australia/Darwin
  969.11 +BEGIN:STANDARD
  969.12 +TZOFFSETFROM:+084320
  969.13 +TZOFFSETTO:+0900
  969.14 +TZNAME:CST
  969.15 +DTSTART:18950201T000000
  969.16 +RDATE:18950201T000000
  969.17 +END:STANDARD
  969.18 +BEGIN:STANDARD
  969.19 +TZOFFSETFROM:+0900
  969.20 +TZOFFSETTO:+0930
  969.21 +TZNAME:CST
  969.22 +DTSTART:18990501T000000
  969.23 +RDATE:18990501T000000
  969.24 +END:STANDARD
  969.25 +BEGIN:DAYLIGHT
  969.26 +TZOFFSETFROM:+0930
  969.27 +TZOFFSETTO:+1030
  969.28 +TZNAME:CST
  969.29 +DTSTART:19170101T000100
  969.30 +RDATE:19170101T000100
  969.31 +RDATE:19420101T020000
  969.32 +RDATE:19420927T020000
  969.33 +RDATE:19431003T020000
  969.34 +END:DAYLIGHT
  969.35 +BEGIN:STANDARD
  969.36 +TZOFFSETFROM:+1030
  969.37 +TZOFFSETTO:+0930
  969.38 +TZNAME:CST
  969.39 +DTSTART:19170325T020000
  969.40 +RDATE:19170325T020000
  969.41 +RDATE:19420329T020000
  969.42 +RDATE:19430328T020000
  969.43 +RDATE:19440326T020000
  969.44 +END:STANDARD
  969.45 +END:VTIMEZONE
  969.46 +END:VCALENDAR
   970.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   970.2 +++ b/src/zoneinfo/Australia/Eucla.ics	Tue Feb 10 18:12:00 2015 +0100
   970.3 @@ -0,0 +1,53 @@
   970.4 +BEGIN:VCALENDAR
   970.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   970.6 +VERSION:2.0
   970.7 +BEGIN:VTIMEZONE
   970.8 +TZID:Australia/Eucla
   970.9 +TZURL:http://tzurl.org/zoneinfo/Australia/Eucla
  970.10 +X-LIC-LOCATION:Australia/Eucla
  970.11 +BEGIN:STANDARD
  970.12 +TZOFFSETFROM:+083528
  970.13 +TZOFFSETTO:+0845
  970.14 +TZNAME:CWST
  970.15 +DTSTART:18951201T000000
  970.16 +RDATE:18951201T000000
  970.17 +END:STANDARD
  970.18 +BEGIN:DAYLIGHT
  970.19 +TZOFFSETFROM:+0845
  970.20 +TZOFFSETTO:+0945
  970.21 +TZNAME:CWST
  970.22 +DTSTART:19170101T000100
  970.23 +RDATE:19170101T000100
  970.24 +RDATE:19420101T020000
  970.25 +RDATE:19420927T020000
  970.26 +RDATE:19741027T020000
  970.27 +RDATE:19831030T020000
  970.28 +RDATE:19911117T020000
  970.29 +RDATE:20061203T020000
  970.30 +RDATE:20071028T020000
  970.31 +RDATE:20081026T020000
  970.32 +END:DAYLIGHT
  970.33 +BEGIN:STANDARD
  970.34 +TZOFFSETFROM:+0945
  970.35 +TZOFFSETTO:+0845
  970.36 +TZNAME:CWST
  970.37 +DTSTART:19170325T020000
  970.38 +RDATE:19170325T020000
  970.39 +RDATE:19420329T020000
  970.40 +RDATE:19430328T020000
  970.41 +RDATE:19750302T030000
  970.42 +RDATE:19840304T030000
  970.43 +RDATE:19920301T030000
  970.44 +RDATE:20070325T030000
  970.45 +RDATE:20080330T030000
  970.46 +RDATE:20090329T030000
  970.47 +END:STANDARD
  970.48 +BEGIN:STANDARD
  970.49 +TZOFFSETFROM:+0845
  970.50 +TZOFFSETTO:+0845
  970.51 +TZNAME:CWST
  970.52 +DTSTART:19430701T000000
  970.53 +RDATE:19430701T000000
  970.54 +END:STANDARD
  970.55 +END:VTIMEZONE
  970.56 +END:VCALENDAR
   971.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   971.2 +++ b/src/zoneinfo/Australia/Hobart.ics	Tue Feb 10 18:12:00 2015 +0100
   971.3 @@ -0,0 +1,138 @@
   971.4 +BEGIN:VCALENDAR
   971.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   971.6 +VERSION:2.0
   971.7 +BEGIN:VTIMEZONE
   971.8 +TZID:Australia/Hobart
   971.9 +TZURL:http://tzurl.org/zoneinfo/Australia/Hobart
  971.10 +X-LIC-LOCATION:Australia/Hobart
  971.11 +BEGIN:DAYLIGHT
  971.12 +TZOFFSETFROM:+1000
  971.13 +TZOFFSETTO:+1100
  971.14 +TZNAME:EST
  971.15 +DTSTART:20011007T020000
  971.16 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU
  971.17 +END:DAYLIGHT
  971.18 +BEGIN:STANDARD
  971.19 +TZOFFSETFROM:+1100
  971.20 +TZOFFSETTO:+1000
  971.21 +TZNAME:EST
  971.22 +DTSTART:20080406T030000
  971.23 +RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU
  971.24 +END:STANDARD
  971.25 +BEGIN:STANDARD
  971.26 +TZOFFSETFROM:+094916
  971.27 +TZOFFSETTO:+1000
  971.28 +TZNAME:EST
  971.29 +DTSTART:18950901T000000
  971.30 +RDATE:18950901T000000
  971.31 +END:STANDARD
  971.32 +BEGIN:DAYLIGHT
  971.33 +TZOFFSETFROM:+1000
  971.34 +TZOFFSETTO:+1100
  971.35 +TZNAME:EST
  971.36 +DTSTART:19161001T020000
  971.37 +RDATE:19161001T020000
  971.38 +RDATE:19420101T020000
  971.39 +RDATE:19420927T020000
  971.40 +RDATE:19431003T020000
  971.41 +RDATE:19671001T020000
  971.42 +RDATE:19681027T020000
  971.43 +RDATE:19691026T020000
  971.44 +RDATE:19701025T020000
  971.45 +RDATE:19711031T020000
  971.46 +RDATE:19721029T020000
  971.47 +RDATE:19731028T020000
  971.48 +RDATE:19741027T020000
  971.49 +RDATE:19751026T020000
  971.50 +RDATE:19761031T020000
  971.51 +RDATE:19771030T020000
  971.52 +RDATE:19781029T020000
  971.53 +RDATE:19791028T020000
  971.54 +RDATE:19801026T020000
  971.55 +RDATE:19811025T020000
  971.56 +RDATE:19821031T020000
  971.57 +RDATE:19831030T020000
  971.58 +RDATE:19841028T020000
  971.59 +RDATE:19851027T020000
  971.60 +RDATE:19861019T020000
  971.61 +RDATE:19871025T020000
  971.62 +RDATE:19881030T020000
  971.63 +RDATE:19891029T020000
  971.64 +RDATE:19901028T020000
  971.65 +RDATE:19911006T020000
  971.66 +RDATE:19921004T020000
  971.67 +RDATE:19931003T020000
  971.68 +RDATE:19941002T020000
  971.69 +RDATE:19951001T020000
  971.70 +RDATE:19961006T020000
  971.71 +RDATE:19971005T020000
  971.72 +RDATE:19981004T020000
  971.73 +RDATE:19991003T020000
  971.74 +RDATE:20000827T020000
  971.75 +END:DAYLIGHT
  971.76 +BEGIN:DAYLIGHT
  971.77 +TZOFFSETFROM:+1100
  971.78 +TZOFFSETTO:+1100
  971.79 +TZNAME:EST
  971.80 +DTSTART:19170201T000000
  971.81 +RDATE:19170201T000000
  971.82 +END:DAYLIGHT
  971.83 +BEGIN:STANDARD
  971.84 +TZOFFSETFROM:+1100
  971.85 +TZOFFSETTO:+1000
  971.86 +TZNAME:EST
  971.87 +DTSTART:19170325T020000
  971.88 +RDATE:19170325T020000
  971.89 +RDATE:19420329T020000
  971.90 +RDATE:19430328T020000
  971.91 +RDATE:19440326T020000
  971.92 +RDATE:19680331T030000
  971.93 +RDATE:19690309T030000
  971.94 +RDATE:19700308T030000
  971.95 +RDATE:19710314T030000
  971.96 +RDATE:19720227T030000
  971.97 +RDATE:19730304T030000
  971.98 +RDATE:19740303T030000
  971.99 +RDATE:19750302T030000
 971.100 +RDATE:19760307T030000
 971.101 +RDATE:19770306T030000
 971.102 +RDATE:19780305T030000
 971.103 +RDATE:19790304T030000
 971.104 +RDATE:19800302T030000
 971.105 +RDATE:19810301T030000
 971.106 +RDATE:19820328T030000
 971.107 +RDATE:19830327T030000
 971.108 +RDATE:19840304T030000
 971.109 +RDATE:19850303T030000
 971.110 +RDATE:19860302T030000
 971.111 +RDATE:19870315T030000
 971.112 +RDATE:19880320T030000
 971.113 +RDATE:19890319T030000
 971.114 +RDATE:19900318T030000
 971.115 +RDATE:19910331T030000
 971.116 +RDATE:19920329T030000
 971.117 +RDATE:19930328T030000
 971.118 +RDATE:19940327T030000
 971.119 +RDATE:19950326T030000
 971.120 +RDATE:19960331T030000
 971.121 +RDATE:19970330T030000
 971.122 +RDATE:19980329T030000
 971.123 +RDATE:19990328T030000
 971.124 +RDATE:20000326T030000
 971.125 +RDATE:20010325T030000
 971.126 +RDATE:20020331T030000
 971.127 +RDATE:20030330T030000
 971.128 +RDATE:20040328T030000
 971.129 +RDATE:20050327T030000
 971.130 +RDATE:20060402T030000
 971.131 +RDATE:20070325T030000
 971.132 +END:STANDARD
 971.133 +BEGIN:STANDARD
 971.134 +TZOFFSETFROM:+1000
 971.135 +TZOFFSETTO:+1000
 971.136 +TZNAME:EST
 971.137 +DTSTART:19670101T000000
 971.138 +RDATE:19670101T000000
 971.139 +END:STANDARD
 971.140 +END:VTIMEZONE
 971.141 +END:VCALENDAR
   972.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   972.2 +++ b/src/zoneinfo/Australia/Lindeman.ics	Tue Feb 10 18:12:00 2015 +0100
   972.3 @@ -0,0 +1,56 @@
   972.4 +BEGIN:VCALENDAR
   972.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   972.6 +VERSION:2.0
   972.7 +BEGIN:VTIMEZONE
   972.8 +TZID:Australia/Lindeman
   972.9 +TZURL:http://tzurl.org/zoneinfo/Australia/Lindeman
  972.10 +X-LIC-LOCATION:Australia/Lindeman
  972.11 +BEGIN:STANDARD
  972.12 +TZOFFSETFROM:+095556
  972.13 +TZOFFSETTO:+1000
  972.14 +TZNAME:EST
  972.15 +DTSTART:18950101T000000
  972.16 +RDATE:18950101T000000
  972.17 +END:STANDARD
  972.18 +BEGIN:DAYLIGHT
  972.19 +TZOFFSETFROM:+1000
  972.20 +TZOFFSETTO:+1100
  972.21 +TZNAME:EST
  972.22 +DTSTART:19170101T000100
  972.23 +RDATE:19170101T000100
  972.24 +RDATE:19420101T020000
  972.25 +RDATE:19420927T020000
  972.26 +RDATE:19431003T020000
  972.27 +RDATE:19711031T020000
  972.28 +RDATE:19891029T020000
  972.29 +RDATE:19901028T020000
  972.30 +RDATE:19911027T020000
  972.31 +RDATE:19921025T020000
  972.32 +RDATE:19931031T020000
  972.33 +END:DAYLIGHT
  972.34 +BEGIN:STANDARD
  972.35 +TZOFFSETFROM:+1100
  972.36 +TZOFFSETTO:+1000
  972.37 +TZNAME:EST
  972.38 +DTSTART:19170325T020000
  972.39 +RDATE:19170325T020000
  972.40 +RDATE:19420329T020000
  972.41 +RDATE:19430328T020000
  972.42 +RDATE:19440326T020000
  972.43 +RDATE:19720227T030000
  972.44 +RDATE:19900304T030000
  972.45 +RDATE:19910303T030000
  972.46 +RDATE:19920301T030000
  972.47 +RDATE:19930307T030000
  972.48 +RDATE:19940306T030000
  972.49 +END:STANDARD
  972.50 +BEGIN:STANDARD
  972.51 +TZOFFSETFROM:+1000
  972.52 +TZOFFSETTO:+1000
  972.53 +TZNAME:EST
  972.54 +DTSTART:19710101T000000
  972.55 +RDATE:19710101T000000
  972.56 +RDATE:19920701T000000
  972.57 +END:STANDARD
  972.58 +END:VTIMEZONE
  972.59 +END:VCALENDAR
   973.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   973.2 +++ b/src/zoneinfo/Australia/Lord_Howe.ics	Tue Feb 10 18:12:00 2015 +0100
   973.3 @@ -0,0 +1,114 @@
   973.4 +BEGIN:VCALENDAR
   973.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   973.6 +VERSION:2.0
   973.7 +BEGIN:VTIMEZONE
   973.8 +TZID:Australia/Lord_Howe
   973.9 +TZURL:http://tzurl.org/zoneinfo/Australia/Lord_Howe
  973.10 +X-LIC-LOCATION:Australia/Lord_Howe
  973.11 +BEGIN:STANDARD
  973.12 +TZOFFSETFROM:+1100
  973.13 +TZOFFSETTO:+1030
  973.14 +TZNAME:LHST
  973.15 +DTSTART:20080406T020000
  973.16 +RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU
  973.17 +END:STANDARD
  973.18 +BEGIN:DAYLIGHT
  973.19 +TZOFFSETFROM:+1030
  973.20 +TZOFFSETTO:+1100
  973.21 +TZNAME:LHST
  973.22 +DTSTART:20081005T020000
  973.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU
  973.24 +END:DAYLIGHT
  973.25 +BEGIN:STANDARD
  973.26 +TZOFFSETFROM:+103620
  973.27 +TZOFFSETTO:+1000
  973.28 +TZNAME:EST
  973.29 +DTSTART:18950201T000000
  973.30 +RDATE:18950201T000000
  973.31 +END:STANDARD
  973.32 +BEGIN:STANDARD
  973.33 +TZOFFSETFROM:+1000
  973.34 +TZOFFSETTO:+1030
  973.35 +TZNAME:LHST
  973.36 +DTSTART:19810301T000000
  973.37 +RDATE:19810301T000000
  973.38 +END:STANDARD
  973.39 +BEGIN:DAYLIGHT
  973.40 +TZOFFSETFROM:+1030
  973.41 +TZOFFSETTO:+1130
  973.42 +TZNAME:LHST
  973.43 +DTSTART:19811025T020000
  973.44 +RDATE:19811025T020000
  973.45 +RDATE:19821031T020000
  973.46 +RDATE:19831030T020000
  973.47 +RDATE:19841028T020000
  973.48 +END:DAYLIGHT
  973.49 +BEGIN:STANDARD
  973.50 +TZOFFSETFROM:+1130
  973.51 +TZOFFSETTO:+1030
  973.52 +TZNAME:LHST
  973.53 +DTSTART:19820307T020000
  973.54 +RDATE:19820307T020000
  973.55 +RDATE:19830306T020000
  973.56 +RDATE:19840304T020000
  973.57 +RDATE:19850303T020000
  973.58 +END:STANDARD
  973.59 +BEGIN:DAYLIGHT
  973.60 +TZOFFSETFROM:+1030
  973.61 +TZOFFSETTO:+1100
  973.62 +TZNAME:LHST
  973.63 +DTSTART:19851027T020000
  973.64 +RDATE:19851027T020000
  973.65 +RDATE:19861019T020000
  973.66 +RDATE:19871025T020000
  973.67 +RDATE:19881030T020000
  973.68 +RDATE:19891029T020000
  973.69 +RDATE:19901028T020000
  973.70 +RDATE:19911027T020000
  973.71 +RDATE:19921025T020000
  973.72 +RDATE:19931031T020000
  973.73 +RDATE:19941030T020000
  973.74 +RDATE:19951029T020000
  973.75 +RDATE:19961027T020000
  973.76 +RDATE:19971026T020000
  973.77 +RDATE:19981025T020000
  973.78 +RDATE:19991031T020000
  973.79 +RDATE:20000827T020000
  973.80 +RDATE:20011028T020000
  973.81 +RDATE:20021027T020000
  973.82 +RDATE:20031026T020000
  973.83 +RDATE:20041031T020000
  973.84 +RDATE:20051030T020000
  973.85 +RDATE:20061029T020000
  973.86 +RDATE:20071028T020000
  973.87 +END:DAYLIGHT
  973.88 +BEGIN:STANDARD
  973.89 +TZOFFSETFROM:+1100
  973.90 +TZOFFSETTO:+1030
  973.91 +TZNAME:LHST
  973.92 +DTSTART:19860316T020000
  973.93 +RDATE:19860316T020000
  973.94 +RDATE:19870315T020000
  973.95 +RDATE:19880320T020000
  973.96 +RDATE:19890319T020000
  973.97 +RDATE:19900304T020000
  973.98 +RDATE:19910303T020000
  973.99 +RDATE:19920301T020000
 973.100 +RDATE:19930307T020000
 973.101 +RDATE:19940306T020000
 973.102 +RDATE:19950305T020000
 973.103 +RDATE:19960331T020000
 973.104 +RDATE:19970330T020000
 973.105 +RDATE:19980329T020000
 973.106 +RDATE:19990328T020000
 973.107 +RDATE:20000326T020000
 973.108 +RDATE:20010325T020000
 973.109 +RDATE:20020331T020000
 973.110 +RDATE:20030330T020000
 973.111 +RDATE:20040328T020000
 973.112 +RDATE:20050327T020000
 973.113 +RDATE:20060402T020000
 973.114 +RDATE:20070325T020000
 973.115 +END:STANDARD
 973.116 +END:VTIMEZONE
 973.117 +END:VCALENDAR
   974.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   974.2 +++ b/src/zoneinfo/Australia/Melbourne.ics	Tue Feb 10 18:12:00 2015 +0100
   974.3 @@ -0,0 +1,130 @@
   974.4 +BEGIN:VCALENDAR
   974.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   974.6 +VERSION:2.0
   974.7 +BEGIN:VTIMEZONE
   974.8 +TZID:Australia/Melbourne
   974.9 +TZURL:http://tzurl.org/zoneinfo/Australia/Melbourne
  974.10 +X-LIC-LOCATION:Australia/Melbourne
  974.11 +BEGIN:STANDARD
  974.12 +TZOFFSETFROM:+1100
  974.13 +TZOFFSETTO:+1000
  974.14 +TZNAME:EST
  974.15 +DTSTART:20080406T030000
  974.16 +RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU
  974.17 +END:STANDARD
  974.18 +BEGIN:DAYLIGHT
  974.19 +TZOFFSETFROM:+1000
  974.20 +TZOFFSETTO:+1100
  974.21 +TZNAME:EST
  974.22 +DTSTART:20081005T020000
  974.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU
  974.24 +END:DAYLIGHT
  974.25 +BEGIN:STANDARD
  974.26 +TZOFFSETFROM:+093952
  974.27 +TZOFFSETTO:+1000
  974.28 +TZNAME:EST
  974.29 +DTSTART:18950201T000000
  974.30 +RDATE:18950201T000000
  974.31 +END:STANDARD
  974.32 +BEGIN:DAYLIGHT
  974.33 +TZOFFSETFROM:+1000
  974.34 +TZOFFSETTO:+1100
  974.35 +TZNAME:EST
  974.36 +DTSTART:19170101T000100
  974.37 +RDATE:19170101T000100
  974.38 +RDATE:19420101T020000
  974.39 +RDATE:19420927T020000
  974.40 +RDATE:19431003T020000
  974.41 +RDATE:19711031T020000
  974.42 +RDATE:19721029T020000
  974.43 +RDATE:19731028T020000
  974.44 +RDATE:19741027T020000
  974.45 +RDATE:19751026T020000
  974.46 +RDATE:19761031T020000
  974.47 +RDATE:19771030T020000
  974.48 +RDATE:19781029T020000
  974.49 +RDATE:19791028T020000
  974.50 +RDATE:19801026T020000
  974.51 +RDATE:19811025T020000
  974.52 +RDATE:19821031T020000
  974.53 +RDATE:19831030T020000
  974.54 +RDATE:19841028T020000
  974.55 +RDATE:19851027T020000
  974.56 +RDATE:19861019T020000
  974.57 +RDATE:19871018T020000
  974.58 +RDATE:19881030T020000
  974.59 +RDATE:19891029T020000
  974.60 +RDATE:19901028T020000
  974.61 +RDATE:19911027T020000
  974.62 +RDATE:19921025T020000
  974.63 +RDATE:19931031T020000
  974.64 +RDATE:19941030T020000
  974.65 +RDATE:19951029T020000
  974.66 +RDATE:19961027T020000
  974.67 +RDATE:19971026T020000
  974.68 +RDATE:19981025T020000
  974.69 +RDATE:19991031T020000
  974.70 +RDATE:20000827T020000
  974.71 +RDATE:20011028T020000
  974.72 +RDATE:20021027T020000
  974.73 +RDATE:20031026T020000
  974.74 +RDATE:20041031T020000
  974.75 +RDATE:20051030T020000
  974.76 +RDATE:20061029T020000
  974.77 +RDATE:20071028T020000
  974.78 +END:DAYLIGHT
  974.79 +BEGIN:STANDARD
  974.80 +TZOFFSETFROM:+1100
  974.81 +TZOFFSETTO:+1000
  974.82 +TZNAME:EST
  974.83 +DTSTART:19170325T020000
  974.84 +RDATE:19170325T020000
  974.85 +RDATE:19420329T020000
  974.86 +RDATE:19430328T020000
  974.87 +RDATE:19440326T020000
  974.88 +RDATE:19720227T030000
  974.89 +RDATE:19730304T030000
  974.90 +RDATE:19740303T030000
  974.91 +RDATE:19750302T030000
  974.92 +RDATE:19760307T030000
  974.93 +RDATE:19770306T030000
  974.94 +RDATE:19780305T030000
  974.95 +RDATE:19790304T030000
  974.96 +RDATE:19800302T030000
  974.97 +RDATE:19810301T030000
  974.98 +RDATE:19820307T030000
  974.99 +RDATE:19830306T030000
 974.100 +RDATE:19840304T030000
 974.101 +RDATE:19850303T030000
 974.102 +RDATE:19860316T030000
 974.103 +RDATE:19870315T030000
 974.104 +RDATE:19880320T030000
 974.105 +RDATE:19890319T030000
 974.106 +RDATE:19900318T030000
 974.107 +RDATE:19910303T030000
 974.108 +RDATE:19920301T030000
 974.109 +RDATE:19930307T030000
 974.110 +RDATE:19940306T030000
 974.111 +RDATE:19950326T030000
 974.112 +RDATE:19960331T030000
 974.113 +RDATE:19970330T030000
 974.114 +RDATE:19980329T030000
 974.115 +RDATE:19990328T030000
 974.116 +RDATE:20000326T030000
 974.117 +RDATE:20010325T030000
 974.118 +RDATE:20020331T030000
 974.119 +RDATE:20030330T030000
 974.120 +RDATE:20040328T030000
 974.121 +RDATE:20050327T030000
 974.122 +RDATE:20060402T030000
 974.123 +RDATE:20070325T030000
 974.124 +END:STANDARD
 974.125 +BEGIN:STANDARD
 974.126 +TZOFFSETFROM:+1000
 974.127 +TZOFFSETTO:+1000
 974.128 +TZNAME:EST
 974.129 +DTSTART:19710101T000000
 974.130 +RDATE:19710101T000000
 974.131 +END:STANDARD
 974.132 +END:VTIMEZONE
 974.133 +END:VCALENDAR
   975.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   975.2 +++ b/src/zoneinfo/Australia/Perth.ics	Tue Feb 10 18:12:00 2015 +0100
   975.3 @@ -0,0 +1,53 @@
   975.4 +BEGIN:VCALENDAR
   975.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   975.6 +VERSION:2.0
   975.7 +BEGIN:VTIMEZONE
   975.8 +TZID:Australia/Perth
   975.9 +TZURL:http://tzurl.org/zoneinfo/Australia/Perth
  975.10 +X-LIC-LOCATION:Australia/Perth
  975.11 +BEGIN:STANDARD
  975.12 +TZOFFSETFROM:+074324
  975.13 +TZOFFSETTO:+0800
  975.14 +TZNAME:WST
  975.15 +DTSTART:18951201T000000
  975.16 +RDATE:18951201T000000
  975.17 +END:STANDARD
  975.18 +BEGIN:DAYLIGHT
  975.19 +TZOFFSETFROM:+0800
  975.20 +TZOFFSETTO:+0900
  975.21 +TZNAME:WST
  975.22 +DTSTART:19170101T000100
  975.23 +RDATE:19170101T000100
  975.24 +RDATE:19420101T020000
  975.25 +RDATE:19420927T020000
  975.26 +RDATE:19741027T020000
  975.27 +RDATE:19831030T020000
  975.28 +RDATE:19911117T020000
  975.29 +RDATE:20061203T020000
  975.30 +RDATE:20071028T020000
  975.31 +RDATE:20081026T020000
  975.32 +END:DAYLIGHT
  975.33 +BEGIN:STANDARD
  975.34 +TZOFFSETFROM:+0900
  975.35 +TZOFFSETTO:+0800
  975.36 +TZNAME:WST
  975.37 +DTSTART:19170325T020000
  975.38 +RDATE:19170325T020000
  975.39 +RDATE:19420329T020000
  975.40 +RDATE:19430328T020000
  975.41 +RDATE:19750302T030000
  975.42 +RDATE:19840304T030000
  975.43 +RDATE:19920301T030000
  975.44 +RDATE:20070325T030000
  975.45 +RDATE:20080330T030000
  975.46 +RDATE:20090329T030000
  975.47 +END:STANDARD
  975.48 +BEGIN:STANDARD
  975.49 +TZOFFSETFROM:+0800
  975.50 +TZOFFSETTO:+0800
  975.51 +TZNAME:WST
  975.52 +DTSTART:19430701T000000
  975.53 +RDATE:19430701T000000
  975.54 +END:STANDARD
  975.55 +END:VTIMEZONE
  975.56 +END:VCALENDAR
   976.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   976.2 +++ b/src/zoneinfo/Australia/Sydney.ics	Tue Feb 10 18:12:00 2015 +0100
   976.3 @@ -0,0 +1,130 @@
   976.4 +BEGIN:VCALENDAR
   976.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   976.6 +VERSION:2.0
   976.7 +BEGIN:VTIMEZONE
   976.8 +TZID:Australia/Sydney
   976.9 +TZURL:http://tzurl.org/zoneinfo/Australia/Sydney
  976.10 +X-LIC-LOCATION:Australia/Sydney
  976.11 +BEGIN:STANDARD
  976.12 +TZOFFSETFROM:+1100
  976.13 +TZOFFSETTO:+1000
  976.14 +TZNAME:EST
  976.15 +DTSTART:20080406T030000
  976.16 +RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU
  976.17 +END:STANDARD
  976.18 +BEGIN:DAYLIGHT
  976.19 +TZOFFSETFROM:+1000
  976.20 +TZOFFSETTO:+1100
  976.21 +TZNAME:EST
  976.22 +DTSTART:20081005T020000
  976.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU
  976.24 +END:DAYLIGHT
  976.25 +BEGIN:STANDARD
  976.26 +TZOFFSETFROM:+100452
  976.27 +TZOFFSETTO:+1000
  976.28 +TZNAME:EST
  976.29 +DTSTART:18950201T000000
  976.30 +RDATE:18950201T000000
  976.31 +END:STANDARD
  976.32 +BEGIN:DAYLIGHT
  976.33 +TZOFFSETFROM:+1000
  976.34 +TZOFFSETTO:+1100
  976.35 +TZNAME:EST
  976.36 +DTSTART:19170101T000100
  976.37 +RDATE:19170101T000100
  976.38 +RDATE:19420101T020000
  976.39 +RDATE:19420927T020000
  976.40 +RDATE:19431003T020000
  976.41 +RDATE:19711031T020000
  976.42 +RDATE:19721029T020000
  976.43 +RDATE:19731028T020000
  976.44 +RDATE:19741027T020000
  976.45 +RDATE:19751026T020000
  976.46 +RDATE:19761031T020000
  976.47 +RDATE:19771030T020000
  976.48 +RDATE:19781029T020000
  976.49 +RDATE:19791028T020000
  976.50 +RDATE:19801026T020000
  976.51 +RDATE:19811025T020000
  976.52 +RDATE:19821031T020000
  976.53 +RDATE:19831030T020000
  976.54 +RDATE:19841028T020000
  976.55 +RDATE:19851027T020000
  976.56 +RDATE:19861019T020000
  976.57 +RDATE:19871025T020000
  976.58 +RDATE:19881030T020000
  976.59 +RDATE:19891029T020000
  976.60 +RDATE:19901028T020000
  976.61 +RDATE:19911027T020000
  976.62 +RDATE:19921025T020000
  976.63 +RDATE:19931031T020000
  976.64 +RDATE:19941030T020000
  976.65 +RDATE:19951029T020000
  976.66 +RDATE:19961027T020000
  976.67 +RDATE:19971026T020000
  976.68 +RDATE:19981025T020000
  976.69 +RDATE:19991031T020000
  976.70 +RDATE:20000827T020000
  976.71 +RDATE:20011028T020000
  976.72 +RDATE:20021027T020000
  976.73 +RDATE:20031026T020000
  976.74 +RDATE:20041031T020000
  976.75 +RDATE:20051030T020000
  976.76 +RDATE:20061029T020000
  976.77 +RDATE:20071028T020000
  976.78 +END:DAYLIGHT
  976.79 +BEGIN:STANDARD
  976.80 +TZOFFSETFROM:+1100
  976.81 +TZOFFSETTO:+1000
  976.82 +TZNAME:EST
  976.83 +DTSTART:19170325T020000
  976.84 +RDATE:19170325T020000
  976.85 +RDATE:19420329T020000
  976.86 +RDATE:19430328T020000
  976.87 +RDATE:19440326T020000
  976.88 +RDATE:19720227T030000
  976.89 +RDATE:19730304T030000
  976.90 +RDATE:19740303T030000
  976.91 +RDATE:19750302T030000
  976.92 +RDATE:19760307T030000
  976.93 +RDATE:19770306T030000
  976.94 +RDATE:19780305T030000
  976.95 +RDATE:19790304T030000
  976.96 +RDATE:19800302T030000
  976.97 +RDATE:19810301T030000
  976.98 +RDATE:19820404T030000
  976.99 +RDATE:19830306T030000
 976.100 +RDATE:19840304T030000
 976.101 +RDATE:19850303T030000
 976.102 +RDATE:19860316T030000
 976.103 +RDATE:19870315T030000
 976.104 +RDATE:19880320T030000
 976.105 +RDATE:19890319T030000
 976.106 +RDATE:19900304T030000
 976.107 +RDATE:19910303T030000
 976.108 +RDATE:19920301T030000
 976.109 +RDATE:19930307T030000
 976.110 +RDATE:19940306T030000
 976.111 +RDATE:19950305T030000
 976.112 +RDATE:19960331T030000
 976.113 +RDATE:19970330T030000
 976.114 +RDATE:19980329T030000
 976.115 +RDATE:19990328T030000
 976.116 +RDATE:20000326T030000
 976.117 +RDATE:20010325T030000
 976.118 +RDATE:20020331T030000
 976.119 +RDATE:20030330T030000
 976.120 +RDATE:20040328T030000
 976.121 +RDATE:20050327T030000
 976.122 +RDATE:20060402T030000
 976.123 +RDATE:20070325T030000
 976.124 +END:STANDARD
 976.125 +BEGIN:STANDARD
 976.126 +TZOFFSETFROM:+1000
 976.127 +TZOFFSETTO:+1000
 976.128 +TZNAME:EST
 976.129 +DTSTART:19710101T000000
 976.130 +RDATE:19710101T000000
 976.131 +END:STANDARD
 976.132 +END:VTIMEZONE
 976.133 +END:VCALENDAR
   977.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   977.2 +++ b/src/zoneinfo/Europe/Amsterdam.ics	Tue Feb 10 18:12:00 2015 +0100
   977.3 @@ -0,0 +1,165 @@
   977.4 +BEGIN:VCALENDAR
   977.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   977.6 +VERSION:2.0
   977.7 +BEGIN:VTIMEZONE
   977.8 +TZID:Europe/Amsterdam
   977.9 +TZURL:http://tzurl.org/zoneinfo/Europe/Amsterdam
  977.10 +X-LIC-LOCATION:Europe/Amsterdam
  977.11 +BEGIN:DAYLIGHT
  977.12 +TZOFFSETFROM:+0100
  977.13 +TZOFFSETTO:+0200
  977.14 +TZNAME:CEST
  977.15 +DTSTART:19810329T020000
  977.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  977.17 +END:DAYLIGHT
  977.18 +BEGIN:STANDARD
  977.19 +TZOFFSETFROM:+0200
  977.20 +TZOFFSETTO:+0100
  977.21 +TZNAME:CET
  977.22 +DTSTART:19961027T030000
  977.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  977.24 +END:STANDARD
  977.25 +BEGIN:STANDARD
  977.26 +TZOFFSETFROM:+001932
  977.27 +TZOFFSETTO:+001932
  977.28 +TZNAME:AMT
  977.29 +DTSTART:18350101T000000
  977.30 +RDATE:18350101T000000
  977.31 +END:STANDARD
  977.32 +BEGIN:DAYLIGHT
  977.33 +TZOFFSETFROM:+001932
  977.34 +TZOFFSETTO:+011932
  977.35 +TZNAME:NST
  977.36 +DTSTART:19160501T000000
  977.37 +RDATE:19160501T000000
  977.38 +RDATE:19170416T020000
  977.39 +RDATE:19180401T020000
  977.40 +RDATE:19190407T020000
  977.41 +RDATE:19200405T020000
  977.42 +RDATE:19210404T020000
  977.43 +RDATE:19220326T020000
  977.44 +RDATE:19230601T020000
  977.45 +RDATE:19240330T020000
  977.46 +RDATE:19250605T020000
  977.47 +RDATE:19260515T020000
  977.48 +RDATE:19270515T020000
  977.49 +RDATE:19280515T020000
  977.50 +RDATE:19290515T020000
  977.51 +RDATE:19300515T020000
  977.52 +RDATE:19310515T020000
  977.53 +RDATE:19320522T020000
  977.54 +RDATE:19330515T020000
  977.55 +RDATE:19340515T020000
  977.56 +RDATE:19350515T020000
  977.57 +RDATE:19360515T020000
  977.58 +RDATE:19370522T020000
  977.59 +END:DAYLIGHT
  977.60 +BEGIN:STANDARD
  977.61 +TZOFFSETFROM:+011932
  977.62 +TZOFFSETTO:+001932
  977.63 +TZNAME:AMT
  977.64 +DTSTART:19161001T000000
  977.65 +RDATE:19161001T000000
  977.66 +RDATE:19170917T030000
  977.67 +RDATE:19180930T030000
  977.68 +RDATE:19190929T030000
  977.69 +RDATE:19200927T030000
  977.70 +RDATE:19210926T030000
  977.71 +RDATE:19221008T030000
  977.72 +RDATE:19231007T030000
  977.73 +RDATE:19241005T030000
  977.74 +RDATE:19251004T030000
  977.75 +RDATE:19261003T030000
  977.76 +RDATE:19271002T030000
  977.77 +RDATE:19281007T030000
  977.78 +RDATE:19291006T030000
  977.79 +RDATE:19301005T030000
  977.80 +RDATE:19311004T030000
  977.81 +RDATE:19321002T030000
  977.82 +RDATE:19331008T030000
  977.83 +RDATE:19341007T030000
  977.84 +RDATE:19351006T030000
  977.85 +RDATE:19361004T030000
  977.86 +END:STANDARD
  977.87 +BEGIN:DAYLIGHT
  977.88 +TZOFFSETFROM:+011932
  977.89 +TZOFFSETTO:+0120
  977.90 +TZNAME:NEST
  977.91 +DTSTART:19370701T000000
  977.92 +RDATE:19370701T000000
  977.93 +END:DAYLIGHT
  977.94 +BEGIN:STANDARD
  977.95 +TZOFFSETFROM:+0120
  977.96 +TZOFFSETTO:+0020
  977.97 +TZNAME:NET
  977.98 +DTSTART:19371003T030000
  977.99 +RDATE:19371003T030000
 977.100 +RDATE:19381002T030000
 977.101 +RDATE:19391008T030000
 977.102 +END:STANDARD
 977.103 +BEGIN:DAYLIGHT
 977.104 +TZOFFSETFROM:+0020
 977.105 +TZOFFSETTO:+0120
 977.106 +TZNAME:NEST
 977.107 +DTSTART:19380515T020000
 977.108 +RDATE:19380515T020000
 977.109 +RDATE:19390515T020000
 977.110 +END:DAYLIGHT
 977.111 +BEGIN:DAYLIGHT
 977.112 +TZOFFSETFROM:+0020
 977.113 +TZOFFSETTO:+0200
 977.114 +TZNAME:CEST
 977.115 +DTSTART:19400516T000000
 977.116 +RDATE:19400516T000000
 977.117 +END:DAYLIGHT
 977.118 +BEGIN:STANDARD
 977.119 +TZOFFSETFROM:+0200
 977.120 +TZOFFSETTO:+0100
 977.121 +TZNAME:CET
 977.122 +DTSTART:19421102T030000
 977.123 +RDATE:19421102T030000
 977.124 +RDATE:19431004T030000
 977.125 +RDATE:19441002T030000
 977.126 +RDATE:19450916T030000
 977.127 +RDATE:19770925T030000
 977.128 +RDATE:19781001T030000
 977.129 +RDATE:19790930T030000
 977.130 +RDATE:19800928T030000
 977.131 +RDATE:19810927T030000
 977.132 +RDATE:19820926T030000
 977.133 +RDATE:19830925T030000
 977.134 +RDATE:19840930T030000
 977.135 +RDATE:19850929T030000
 977.136 +RDATE:19860928T030000
 977.137 +RDATE:19870927T030000
 977.138 +RDATE:19880925T030000
 977.139 +RDATE:19890924T030000
 977.140 +RDATE:19900930T030000
 977.141 +RDATE:19910929T030000
 977.142 +RDATE:19920927T030000
 977.143 +RDATE:19930926T030000
 977.144 +RDATE:19940925T030000
 977.145 +RDATE:19950924T030000
 977.146 +END:STANDARD
 977.147 +BEGIN:DAYLIGHT
 977.148 +TZOFFSETFROM:+0100
 977.149 +TZOFFSETTO:+0200
 977.150 +TZNAME:CEST
 977.151 +DTSTART:19430329T020000
 977.152 +RDATE:19430329T020000
 977.153 +RDATE:19440403T020000
 977.154 +RDATE:19450402T020000
 977.155 +RDATE:19770403T020000
 977.156 +RDATE:19780402T020000
 977.157 +RDATE:19790401T020000
 977.158 +RDATE:19800406T020000
 977.159 +END:DAYLIGHT
 977.160 +BEGIN:STANDARD
 977.161 +TZOFFSETFROM:+0100
 977.162 +TZOFFSETTO:+0100
 977.163 +TZNAME:CET
 977.164 +DTSTART:19770101T000000
 977.165 +RDATE:19770101T000000
 977.166 +END:STANDARD
 977.167 +END:VTIMEZONE
 977.168 +END:VCALENDAR
   978.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   978.2 +++ b/src/zoneinfo/Europe/Andorra.ics	Tue Feb 10 18:12:00 2015 +0100
   978.3 @@ -0,0 +1,54 @@
   978.4 +BEGIN:VCALENDAR
   978.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   978.6 +VERSION:2.0
   978.7 +BEGIN:VTIMEZONE
   978.8 +TZID:Europe/Andorra
   978.9 +TZURL:http://tzurl.org/zoneinfo/Europe/Andorra
  978.10 +X-LIC-LOCATION:Europe/Andorra
  978.11 +BEGIN:DAYLIGHT
  978.12 +TZOFFSETFROM:+0100
  978.13 +TZOFFSETTO:+0200
  978.14 +TZNAME:CEST
  978.15 +DTSTART:19850331T020000
  978.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  978.17 +END:DAYLIGHT
  978.18 +BEGIN:STANDARD
  978.19 +TZOFFSETFROM:+0200
  978.20 +TZOFFSETTO:+0100
  978.21 +TZNAME:CET
  978.22 +DTSTART:19961027T030000
  978.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  978.24 +END:STANDARD
  978.25 +BEGIN:STANDARD
  978.26 +TZOFFSETFROM:+000604
  978.27 +TZOFFSETTO:+0000
  978.28 +TZNAME:WET
  978.29 +DTSTART:19010101T000000
  978.30 +RDATE:19010101T000000
  978.31 +END:STANDARD
  978.32 +BEGIN:STANDARD
  978.33 +TZOFFSETFROM:+0000
  978.34 +TZOFFSETTO:+0100
  978.35 +TZNAME:CET
  978.36 +DTSTART:19460930T000000
  978.37 +RDATE:19460930T000000
  978.38 +END:STANDARD
  978.39 +BEGIN:STANDARD
  978.40 +TZOFFSETFROM:+0200
  978.41 +TZOFFSETTO:+0100
  978.42 +TZNAME:CET
  978.43 +DTSTART:19850929T030000
  978.44 +RDATE:19850929T030000
  978.45 +RDATE:19860928T030000
  978.46 +RDATE:19870927T030000
  978.47 +RDATE:19880925T030000
  978.48 +RDATE:19890924T030000
  978.49 +RDATE:19900930T030000
  978.50 +RDATE:19910929T030000
  978.51 +RDATE:19920927T030000
  978.52 +RDATE:19930926T030000
  978.53 +RDATE:19940925T030000
  978.54 +RDATE:19950924T030000
  978.55 +END:STANDARD
  978.56 +END:VTIMEZONE
  978.57 +END:VCALENDAR
   979.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   979.2 +++ b/src/zoneinfo/Europe/Athens.ics	Tue Feb 10 18:12:00 2015 +0100
   979.3 @@ -0,0 +1,117 @@
   979.4 +BEGIN:VCALENDAR
   979.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   979.6 +VERSION:2.0
   979.7 +BEGIN:VTIMEZONE
   979.8 +TZID:Europe/Athens
   979.9 +TZURL:http://tzurl.org/zoneinfo/Europe/Athens
  979.10 +X-LIC-LOCATION:Europe/Athens
  979.11 +BEGIN:DAYLIGHT
  979.12 +TZOFFSETFROM:+0200
  979.13 +TZOFFSETTO:+0300
  979.14 +TZNAME:EEST
  979.15 +DTSTART:19810329T030000
  979.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  979.17 +END:DAYLIGHT
  979.18 +BEGIN:STANDARD
  979.19 +TZOFFSETFROM:+0300
  979.20 +TZOFFSETTO:+0200
  979.21 +TZNAME:EET
  979.22 +DTSTART:19961027T040000
  979.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  979.24 +END:STANDARD
  979.25 +BEGIN:STANDARD
  979.26 +TZOFFSETFROM:+013452
  979.27 +TZOFFSETTO:+013452
  979.28 +TZNAME:AMT
  979.29 +DTSTART:18950914T000000
  979.30 +RDATE:18950914T000000
  979.31 +END:STANDARD
  979.32 +BEGIN:STANDARD
  979.33 +TZOFFSETFROM:+013452
  979.34 +TZOFFSETTO:+0200
  979.35 +TZNAME:EET
  979.36 +DTSTART:19160728T000100
  979.37 +RDATE:19160728T000100
  979.38 +END:STANDARD
  979.39 +BEGIN:DAYLIGHT
  979.40 +TZOFFSETFROM:+0200
  979.41 +TZOFFSETTO:+0300
  979.42 +TZNAME:EEST
  979.43 +DTSTART:19320707T000000
  979.44 +RDATE:19320707T000000
  979.45 +RDATE:19410407T000000
  979.46 +RDATE:19520701T000000
  979.47 +RDATE:19750412T000000
  979.48 +RDATE:19760411T020000
  979.49 +RDATE:19770403T020000
  979.50 +RDATE:19780402T020000
  979.51 +RDATE:19790401T090000
  979.52 +RDATE:19800401T000000
  979.53 +END:DAYLIGHT
  979.54 +BEGIN:STANDARD
  979.55 +TZOFFSETFROM:+0300
  979.56 +TZOFFSETTO:+0200
  979.57 +TZNAME:EET
  979.58 +DTSTART:19320901T000000
  979.59 +RDATE:19320901T000000
  979.60 +RDATE:19521102T000000
  979.61 +RDATE:19751126T010000
  979.62 +RDATE:19761010T030000
  979.63 +RDATE:19770926T030000
  979.64 +RDATE:19780924T040000
  979.65 +RDATE:19790929T020000
  979.66 +RDATE:19800928T000000
  979.67 +RDATE:19810927T040000
  979.68 +RDATE:19820926T040000
  979.69 +RDATE:19830925T040000
  979.70 +RDATE:19840930T040000
  979.71 +RDATE:19850929T040000
  979.72 +RDATE:19860928T040000
  979.73 +RDATE:19870927T040000
  979.74 +RDATE:19880925T040000
  979.75 +RDATE:19890924T040000
  979.76 +RDATE:19900930T040000
  979.77 +RDATE:19910929T040000
  979.78 +RDATE:19920927T040000
  979.79 +RDATE:19930926T040000
  979.80 +RDATE:19940925T040000
  979.81 +RDATE:19950924T040000
  979.82 +END:STANDARD
  979.83 +BEGIN:DAYLIGHT
  979.84 +TZOFFSETFROM:+0300
  979.85 +TZOFFSETTO:+0200
  979.86 +TZNAME:CEST
  979.87 +DTSTART:19410430T000000
  979.88 +RDATE:19410430T000000
  979.89 +END:DAYLIGHT
  979.90 +BEGIN:STANDARD
  979.91 +TZOFFSETFROM:+0200
  979.92 +TZOFFSETTO:+0100
  979.93 +TZNAME:CET
  979.94 +DTSTART:19421102T030000
  979.95 +RDATE:19421102T030000
  979.96 +RDATE:19431004T000000
  979.97 +END:STANDARD
  979.98 +BEGIN:DAYLIGHT
  979.99 +TZOFFSETFROM:+0100
 979.100 +TZOFFSETTO:+0200
 979.101 +TZNAME:CEST
 979.102 +DTSTART:19430330T000000
 979.103 +RDATE:19430330T000000
 979.104 +END:DAYLIGHT
 979.105 +BEGIN:STANDARD
 979.106 +TZOFFSETFROM:+0100
 979.107 +TZOFFSETTO:+0200
 979.108 +TZNAME:EET
 979.109 +DTSTART:19440404T000000
 979.110 +RDATE:19440404T000000
 979.111 +END:STANDARD
 979.112 +BEGIN:STANDARD
 979.113 +TZOFFSETFROM:+0200
 979.114 +TZOFFSETTO:+0200
 979.115 +TZNAME:EET
 979.116 +DTSTART:19810101T000000
 979.117 +RDATE:19810101T000000
 979.118 +END:STANDARD
 979.119 +END:VTIMEZONE
 979.120 +END:VCALENDAR
   980.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   980.2 +++ b/src/zoneinfo/Europe/Belgrade.ics	Tue Feb 10 18:12:00 2015 +0100
   980.3 @@ -0,0 +1,71 @@
   980.4 +BEGIN:VCALENDAR
   980.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   980.6 +VERSION:2.0
   980.7 +BEGIN:VTIMEZONE
   980.8 +TZID:Europe/Belgrade
   980.9 +TZURL:http://tzurl.org/zoneinfo/Europe/Belgrade
  980.10 +X-LIC-LOCATION:Europe/Belgrade
  980.11 +BEGIN:DAYLIGHT
  980.12 +TZOFFSETFROM:+0100
  980.13 +TZOFFSETTO:+0200
  980.14 +TZNAME:CEST
  980.15 +DTSTART:19830327T020000
  980.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  980.17 +END:DAYLIGHT
  980.18 +BEGIN:STANDARD
  980.19 +TZOFFSETFROM:+0200
  980.20 +TZOFFSETTO:+0100
  980.21 +TZNAME:CET
  980.22 +DTSTART:19961027T030000
  980.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  980.24 +END:STANDARD
  980.25 +BEGIN:STANDARD
  980.26 +TZOFFSETFROM:+0122
  980.27 +TZOFFSETTO:+0100
  980.28 +TZNAME:CET
  980.29 +DTSTART:18840101T000000
  980.30 +RDATE:18840101T000000
  980.31 +END:STANDARD
  980.32 +BEGIN:DAYLIGHT
  980.33 +TZOFFSETFROM:+0100
  980.34 +TZOFFSETTO:+0200
  980.35 +TZNAME:CEST
  980.36 +DTSTART:19410418T230000
  980.37 +RDATE:19410418T230000
  980.38 +RDATE:19430329T020000
  980.39 +RDATE:19440403T020000
  980.40 +RDATE:19450508T020000
  980.41 +END:DAYLIGHT
  980.42 +BEGIN:STANDARD
  980.43 +TZOFFSETFROM:+0200
  980.44 +TZOFFSETTO:+0100
  980.45 +TZNAME:CET
  980.46 +DTSTART:19421102T030000
  980.47 +RDATE:19421102T030000
  980.48 +RDATE:19431004T030000
  980.49 +RDATE:19441002T030000
  980.50 +RDATE:19450916T030000
  980.51 +RDATE:19830925T030000
  980.52 +RDATE:19840930T030000
  980.53 +RDATE:19850929T030000
  980.54 +RDATE:19860928T030000
  980.55 +RDATE:19870927T030000
  980.56 +RDATE:19880925T030000
  980.57 +RDATE:19890924T030000
  980.58 +RDATE:19900930T030000
  980.59 +RDATE:19910929T030000
  980.60 +RDATE:19920927T030000
  980.61 +RDATE:19930926T030000
  980.62 +RDATE:19940925T030000
  980.63 +RDATE:19950924T030000
  980.64 +END:STANDARD
  980.65 +BEGIN:STANDARD
  980.66 +TZOFFSETFROM:+0100
  980.67 +TZOFFSETTO:+0100
  980.68 +TZNAME:CET
  980.69 +DTSTART:19450101T000000
  980.70 +RDATE:19450101T000000
  980.71 +RDATE:19821127T000000
  980.72 +END:STANDARD
  980.73 +END:VTIMEZONE
  980.74 +END:VCALENDAR
   981.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   981.2 +++ b/src/zoneinfo/Europe/Berlin.ics	Tue Feb 10 18:12:00 2015 +0100
   981.3 @@ -0,0 +1,105 @@
   981.4 +BEGIN:VCALENDAR
   981.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   981.6 +VERSION:2.0
   981.7 +BEGIN:VTIMEZONE
   981.8 +TZID:Europe/Berlin
   981.9 +TZURL:http://tzurl.org/zoneinfo/Europe/Berlin
  981.10 +X-LIC-LOCATION:Europe/Berlin
  981.11 +BEGIN:DAYLIGHT
  981.12 +TZOFFSETFROM:+0100
  981.13 +TZOFFSETTO:+0200
  981.14 +TZNAME:CEST
  981.15 +DTSTART:19810329T020000
  981.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  981.17 +END:DAYLIGHT
  981.18 +BEGIN:STANDARD
  981.19 +TZOFFSETFROM:+0200
  981.20 +TZOFFSETTO:+0100
  981.21 +TZNAME:CET
  981.22 +DTSTART:19961027T030000
  981.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  981.24 +END:STANDARD
  981.25 +BEGIN:STANDARD
  981.26 +TZOFFSETFROM:+005328
  981.27 +TZOFFSETTO:+0100
  981.28 +TZNAME:CET
  981.29 +DTSTART:18930401T000000
  981.30 +RDATE:18930401T000000
  981.31 +END:STANDARD
  981.32 +BEGIN:DAYLIGHT
  981.33 +TZOFFSETFROM:+0100
  981.34 +TZOFFSETTO:+0200
  981.35 +TZNAME:CEST
  981.36 +DTSTART:19160430T230000
  981.37 +RDATE:19160430T230000
  981.38 +RDATE:19170416T020000
  981.39 +RDATE:19180415T020000
  981.40 +RDATE:19400401T020000
  981.41 +RDATE:19430329T020000
  981.42 +RDATE:19440403T020000
  981.43 +RDATE:19450402T020000
  981.44 +RDATE:19460414T020000
  981.45 +RDATE:19470406T030000
  981.46 +RDATE:19480418T020000
  981.47 +RDATE:19490410T020000
  981.48 +RDATE:19800406T020000
  981.49 +END:DAYLIGHT
  981.50 +BEGIN:STANDARD
  981.51 +TZOFFSETFROM:+0200
  981.52 +TZOFFSETTO:+0100
  981.53 +TZNAME:CET
  981.54 +DTSTART:19161001T010000
  981.55 +RDATE:19161001T010000
  981.56 +RDATE:19170917T030000
  981.57 +RDATE:19180916T030000
  981.58 +RDATE:19421102T030000
  981.59 +RDATE:19431004T030000
  981.60 +RDATE:19441002T030000
  981.61 +RDATE:19451118T030000
  981.62 +RDATE:19461007T030000
  981.63 +RDATE:19471005T030000
  981.64 +RDATE:19481003T030000
  981.65 +RDATE:19491002T030000
  981.66 +RDATE:19800928T030000
  981.67 +RDATE:19810927T030000
  981.68 +RDATE:19820926T030000
  981.69 +RDATE:19830925T030000
  981.70 +RDATE:19840930T030000
  981.71 +RDATE:19850929T030000
  981.72 +RDATE:19860928T030000
  981.73 +RDATE:19870927T030000
  981.74 +RDATE:19880925T030000
  981.75 +RDATE:19890924T030000
  981.76 +RDATE:19900930T030000
  981.77 +RDATE:19910929T030000
  981.78 +RDATE:19920927T030000
  981.79 +RDATE:19930926T030000
  981.80 +RDATE:19940925T030000
  981.81 +RDATE:19950924T030000
  981.82 +END:STANDARD
  981.83 +BEGIN:DAYLIGHT
  981.84 +TZOFFSETFROM:+0200
  981.85 +TZOFFSETTO:+0300
  981.86 +TZNAME:CEMT
  981.87 +DTSTART:19450524T020000
  981.88 +RDATE:19450524T020000
  981.89 +RDATE:19470511T030000
  981.90 +END:DAYLIGHT
  981.91 +BEGIN:DAYLIGHT
  981.92 +TZOFFSETFROM:+0300
  981.93 +TZOFFSETTO:+0200
  981.94 +TZNAME:CEST
  981.95 +DTSTART:19450924T030000
  981.96 +RDATE:19450924T030000
  981.97 +RDATE:19470629T030000
  981.98 +END:DAYLIGHT
  981.99 +BEGIN:STANDARD
 981.100 +TZOFFSETFROM:+0100
 981.101 +TZOFFSETTO:+0100
 981.102 +TZNAME:CET
 981.103 +DTSTART:19460101T000000
 981.104 +RDATE:19460101T000000
 981.105 +RDATE:19800101T000000
 981.106 +END:STANDARD
 981.107 +END:VTIMEZONE
 981.108 +END:VCALENDAR
   982.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   982.2 +++ b/src/zoneinfo/Europe/Bratislava.ics	Tue Feb 10 18:12:00 2015 +0100
   982.3 @@ -0,0 +1,97 @@
   982.4 +BEGIN:VCALENDAR
   982.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   982.6 +VERSION:2.0
   982.7 +BEGIN:VTIMEZONE
   982.8 +TZID:Europe/Bratislava
   982.9 +TZURL:http://tzurl.org/zoneinfo/Europe/Bratislava
  982.10 +X-LIC-LOCATION:Europe/Bratislava
  982.11 +BEGIN:DAYLIGHT
  982.12 +TZOFFSETFROM:+0100
  982.13 +TZOFFSETTO:+0200
  982.14 +TZNAME:CEST
  982.15 +DTSTART:19810329T020000
  982.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  982.17 +END:DAYLIGHT
  982.18 +BEGIN:STANDARD
  982.19 +TZOFFSETFROM:+0200
  982.20 +TZOFFSETTO:+0100
  982.21 +TZNAME:CET
  982.22 +DTSTART:19961027T030000
  982.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  982.24 +END:STANDARD
  982.25 +BEGIN:STANDARD
  982.26 +TZOFFSETFROM:+005744
  982.27 +TZOFFSETTO:+005744
  982.28 +TZNAME:PMT
  982.29 +DTSTART:18500101T000000
  982.30 +RDATE:18500101T000000
  982.31 +END:STANDARD
  982.32 +BEGIN:STANDARD
  982.33 +TZOFFSETFROM:+005744
  982.34 +TZOFFSETTO:+0100
  982.35 +TZNAME:CET
  982.36 +DTSTART:18911001T000000
  982.37 +RDATE:18911001T000000
  982.38 +END:STANDARD
  982.39 +BEGIN:DAYLIGHT
  982.40 +TZOFFSETFROM:+0100
  982.41 +TZOFFSETTO:+0200
  982.42 +TZNAME:CEST
  982.43 +DTSTART:19160430T230000
  982.44 +RDATE:19160430T230000
  982.45 +RDATE:19170416T020000
  982.46 +RDATE:19180415T020000
  982.47 +RDATE:19400401T020000
  982.48 +RDATE:19430329T020000
  982.49 +RDATE:19440403T020000
  982.50 +RDATE:19450408T020000
  982.51 +RDATE:19460506T020000
  982.52 +RDATE:19470420T020000
  982.53 +RDATE:19480418T020000
  982.54 +RDATE:19490409T020000
  982.55 +RDATE:19790401T020000
  982.56 +RDATE:19800406T020000
  982.57 +END:DAYLIGHT
  982.58 +BEGIN:STANDARD
  982.59 +TZOFFSETFROM:+0200
  982.60 +TZOFFSETTO:+0100
  982.61 +TZNAME:CET
  982.62 +DTSTART:19161001T010000
  982.63 +RDATE:19161001T010000
  982.64 +RDATE:19170917T030000
  982.65 +RDATE:19180916T030000
  982.66 +RDATE:19421102T030000
  982.67 +RDATE:19431004T030000
  982.68 +RDATE:19440917T030000
  982.69 +RDATE:19451118T030000
  982.70 +RDATE:19461006T030000
  982.71 +RDATE:19471005T030000
  982.72 +RDATE:19481003T030000
  982.73 +RDATE:19491002T030000
  982.74 +RDATE:19790930T030000
  982.75 +RDATE:19800928T030000
  982.76 +RDATE:19810927T030000
  982.77 +RDATE:19820926T030000
  982.78 +RDATE:19830925T030000
  982.79 +RDATE:19840930T030000
  982.80 +RDATE:19850929T030000
  982.81 +RDATE:19860928T030000
  982.82 +RDATE:19870927T030000
  982.83 +RDATE:19880925T030000
  982.84 +RDATE:19890924T030000
  982.85 +RDATE:19900930T030000
  982.86 +RDATE:19910929T030000
  982.87 +RDATE:19920927T030000
  982.88 +RDATE:19930926T030000
  982.89 +RDATE:19940925T030000
  982.90 +RDATE:19950924T030000
  982.91 +END:STANDARD
  982.92 +BEGIN:STANDARD
  982.93 +TZOFFSETFROM:+0100
  982.94 +TZOFFSETTO:+0100
  982.95 +TZNAME:CET
  982.96 +DTSTART:19790101T000000
  982.97 +RDATE:19790101T000000
  982.98 +END:STANDARD
  982.99 +END:VTIMEZONE
 982.100 +END:VCALENDAR
   983.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   983.2 +++ b/src/zoneinfo/Europe/Brussels.ics	Tue Feb 10 18:12:00 2015 +0100
   983.3 @@ -0,0 +1,165 @@
   983.4 +BEGIN:VCALENDAR
   983.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   983.6 +VERSION:2.0
   983.7 +BEGIN:VTIMEZONE
   983.8 +TZID:Europe/Brussels
   983.9 +TZURL:http://tzurl.org/zoneinfo/Europe/Brussels
  983.10 +X-LIC-LOCATION:Europe/Brussels
  983.11 +BEGIN:DAYLIGHT
  983.12 +TZOFFSETFROM:+0100
  983.13 +TZOFFSETTO:+0200
  983.14 +TZNAME:CEST
  983.15 +DTSTART:19810329T020000
  983.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  983.17 +END:DAYLIGHT
  983.18 +BEGIN:STANDARD
  983.19 +TZOFFSETFROM:+0200
  983.20 +TZOFFSETTO:+0100
  983.21 +TZNAME:CET
  983.22 +DTSTART:19961027T030000
  983.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  983.24 +END:STANDARD
  983.25 +BEGIN:STANDARD
  983.26 +TZOFFSETFROM:+001730
  983.27 +TZOFFSETTO:+001730
  983.28 +TZNAME:BMT
  983.29 +DTSTART:18800101T000000
  983.30 +RDATE:18800101T000000
  983.31 +END:STANDARD
  983.32 +BEGIN:STANDARD
  983.33 +TZOFFSETFROM:+001730
  983.34 +TZOFFSETTO:+0000
  983.35 +TZNAME:WET
  983.36 +DTSTART:18920501T120000
  983.37 +RDATE:18920501T120000
  983.38 +END:STANDARD
  983.39 +BEGIN:STANDARD
  983.40 +TZOFFSETFROM:+0000
  983.41 +TZOFFSETTO:+0100
  983.42 +TZNAME:CET
  983.43 +DTSTART:19141108T000000
  983.44 +RDATE:19141108T000000
  983.45 +END:STANDARD
  983.46 +BEGIN:DAYLIGHT
  983.47 +TZOFFSETFROM:+0100
  983.48 +TZOFFSETTO:+0200
  983.49 +TZNAME:CEST
  983.50 +DTSTART:19160501T000000
  983.51 +RDATE:19160501T000000
  983.52 +RDATE:19170416T020000
  983.53 +RDATE:19180415T020000
  983.54 +RDATE:19400520T030000
  983.55 +RDATE:19430329T020000
  983.56 +RDATE:19440403T020000
  983.57 +RDATE:19450402T020000
  983.58 +RDATE:19460519T020000
  983.59 +RDATE:19770403T020000
  983.60 +RDATE:19780402T020000
  983.61 +RDATE:19790401T020000
  983.62 +RDATE:19800406T020000
  983.63 +END:DAYLIGHT
  983.64 +BEGIN:STANDARD
  983.65 +TZOFFSETFROM:+0200
  983.66 +TZOFFSETTO:+0100
  983.67 +TZNAME:CET
  983.68 +DTSTART:19161001T010000
  983.69 +RDATE:19161001T010000
  983.70 +RDATE:19170917T030000
  983.71 +RDATE:19180916T030000
  983.72 +RDATE:19421102T030000
  983.73 +RDATE:19431004T030000
  983.74 +RDATE:19440917T030000
  983.75 +RDATE:19450916T030000
  983.76 +RDATE:19461007T030000
  983.77 +RDATE:19770925T030000
  983.78 +RDATE:19781001T030000
  983.79 +RDATE:19790930T030000
  983.80 +RDATE:19800928T030000
  983.81 +RDATE:19810927T030000
  983.82 +RDATE:19820926T030000
  983.83 +RDATE:19830925T030000
  983.84 +RDATE:19840930T030000
  983.85 +RDATE:19850929T030000
  983.86 +RDATE:19860928T030000
  983.87 +RDATE:19870927T030000
  983.88 +RDATE:19880925T030000
  983.89 +RDATE:19890924T030000
  983.90 +RDATE:19900930T030000
  983.91 +RDATE:19910929T030000
  983.92 +RDATE:19920927T030000
  983.93 +RDATE:19930926T030000
  983.94 +RDATE:19940925T030000
  983.95 +RDATE:19950924T030000
  983.96 +END:STANDARD
  983.97 +BEGIN:STANDARD
  983.98 +TZOFFSETFROM:+0100
  983.99 +TZOFFSETTO:+0000
 983.100 +TZNAME:WET
 983.101 +DTSTART:19181111T120000
 983.102 +RDATE:19181111T120000
 983.103 +RDATE:19191005T000000
 983.104 +RDATE:19201024T000000
 983.105 +RDATE:19211026T000000
 983.106 +RDATE:19221008T000000
 983.107 +RDATE:19231007T000000
 983.108 +RDATE:19241005T000000
 983.109 +RDATE:19251004T000000
 983.110 +RDATE:19261003T000000
 983.111 +RDATE:19271002T000000
 983.112 +RDATE:19281007T030000
 983.113 +RDATE:19291006T030000
 983.114 +RDATE:19301005T030000
 983.115 +RDATE:19311004T030000
 983.116 +RDATE:19321002T030000
 983.117 +RDATE:19331008T030000
 983.118 +RDATE:19341007T030000
 983.119 +RDATE:19351006T030000
 983.120 +RDATE:19361004T030000
 983.121 +RDATE:19371003T030000
 983.122 +RDATE:19381002T030000
 983.123 +RDATE:19391119T030000
 983.124 +END:STANDARD
 983.125 +BEGIN:DAYLIGHT
 983.126 +TZOFFSETFROM:+0000
 983.127 +TZOFFSETTO:+0100
 983.128 +TZNAME:WEST
 983.129 +DTSTART:19190301T230000
 983.130 +RDATE:19190301T230000
 983.131 +RDATE:19200214T230000
 983.132 +RDATE:19210314T230000
 983.133 +RDATE:19220325T230000
 983.134 +RDATE:19230421T230000
 983.135 +RDATE:19240329T230000
 983.136 +RDATE:19250404T230000
 983.137 +RDATE:19260417T230000
 983.138 +RDATE:19270409T230000
 983.139 +RDATE:19280414T230000
 983.140 +RDATE:19290421T020000
 983.141 +RDATE:19300413T020000
 983.142 +RDATE:19310419T020000
 983.143 +RDATE:19320403T020000
 983.144 +RDATE:19330326T020000
 983.145 +RDATE:19340408T020000
 983.146 +RDATE:19350331T020000
 983.147 +RDATE:19360419T020000
 983.148 +RDATE:19370404T020000
 983.149 +RDATE:19380327T020000
 983.150 +RDATE:19390416T020000
 983.151 +RDATE:19400225T020000
 983.152 +END:DAYLIGHT
 983.153 +BEGIN:DAYLIGHT
 983.154 +TZOFFSETFROM:+0200
 983.155 +TZOFFSETTO:+0200
 983.156 +TZNAME:CEST
 983.157 +DTSTART:19440903T000000
 983.158 +RDATE:19440903T000000
 983.159 +END:DAYLIGHT
 983.160 +BEGIN:STANDARD
 983.161 +TZOFFSETFROM:+0100
 983.162 +TZOFFSETTO:+0100
 983.163 +TZNAME:CET
 983.164 +DTSTART:19770101T000000
 983.165 +RDATE:19770101T000000
 983.166 +END:STANDARD
 983.167 +END:VTIMEZONE
 983.168 +END:VCALENDAR
   984.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   984.2 +++ b/src/zoneinfo/Europe/Bucharest.ics	Tue Feb 10 18:12:00 2015 +0100
   984.3 @@ -0,0 +1,110 @@
   984.4 +BEGIN:VCALENDAR
   984.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   984.6 +VERSION:2.0
   984.7 +BEGIN:VTIMEZONE
   984.8 +TZID:Europe/Bucharest
   984.9 +TZURL:http://tzurl.org/zoneinfo/Europe/Bucharest
  984.10 +X-LIC-LOCATION:Europe/Bucharest
  984.11 +BEGIN:DAYLIGHT
  984.12 +TZOFFSETFROM:+0200
  984.13 +TZOFFSETTO:+0300
  984.14 +TZNAME:EEST
  984.15 +DTSTART:19970330T030000
  984.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  984.17 +END:DAYLIGHT
  984.18 +BEGIN:STANDARD
  984.19 +TZOFFSETFROM:+0300
  984.20 +TZOFFSETTO:+0200
  984.21 +TZNAME:EET
  984.22 +DTSTART:19971026T040000
  984.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  984.24 +END:STANDARD
  984.25 +BEGIN:STANDARD
  984.26 +TZOFFSETFROM:+014424
  984.27 +TZOFFSETTO:+014424
  984.28 +TZNAME:BMT
  984.29 +DTSTART:18911001T000000
  984.30 +RDATE:18911001T000000
  984.31 +END:STANDARD
  984.32 +BEGIN:STANDARD
  984.33 +TZOFFSETFROM:+014424
  984.34 +TZOFFSETTO:+0200
  984.35 +TZNAME:EET
  984.36 +DTSTART:19310724T000000
  984.37 +RDATE:19310724T000000
  984.38 +END:STANDARD
  984.39 +BEGIN:DAYLIGHT
  984.40 +TZOFFSETFROM:+0200
  984.41 +TZOFFSETTO:+0300
  984.42 +TZNAME:EEST
  984.43 +DTSTART:19320521T000000
  984.44 +RDATE:19320521T000000
  984.45 +RDATE:19330402T000000
  984.46 +RDATE:19340408T000000
  984.47 +RDATE:19350407T000000
  984.48 +RDATE:19360405T000000
  984.49 +RDATE:19370404T000000
  984.50 +RDATE:19380403T000000
  984.51 +RDATE:19390402T000000
  984.52 +RDATE:19790527T000000
  984.53 +RDATE:19800405T230000
  984.54 +RDATE:19810329T020000
  984.55 +RDATE:19820328T020000
  984.56 +RDATE:19830327T020000
  984.57 +RDATE:19840325T020000
  984.58 +RDATE:19850331T020000
  984.59 +RDATE:19860330T020000
  984.60 +RDATE:19870329T020000
  984.61 +RDATE:19880327T020000
  984.62 +RDATE:19890326T020000
  984.63 +RDATE:19900325T020000
  984.64 +RDATE:19910331T000000
  984.65 +RDATE:19920329T000000
  984.66 +RDATE:19930328T000000
  984.67 +RDATE:19940327T000000
  984.68 +RDATE:19950326T000000
  984.69 +RDATE:19960331T000000
  984.70 +END:DAYLIGHT
  984.71 +BEGIN:STANDARD
  984.72 +TZOFFSETFROM:+0300
  984.73 +TZOFFSETTO:+0200
  984.74 +TZNAME:EET
  984.75 +DTSTART:19321002T010000
  984.76 +RDATE:19321002T010000
  984.77 +RDATE:19331001T010000
  984.78 +RDATE:19341007T010000
  984.79 +RDATE:19351006T010000
  984.80 +RDATE:19361004T010000
  984.81 +RDATE:19371003T010000
  984.82 +RDATE:19381002T010000
  984.83 +RDATE:19391001T010000
  984.84 +RDATE:19790930T000000
  984.85 +RDATE:19800928T010000
  984.86 +RDATE:19810927T030000
  984.87 +RDATE:19820926T030000
  984.88 +RDATE:19830925T030000
  984.89 +RDATE:19840930T030000
  984.90 +RDATE:19850929T030000
  984.91 +RDATE:19860928T030000
  984.92 +RDATE:19870927T030000
  984.93 +RDATE:19880925T030000
  984.94 +RDATE:19890924T030000
  984.95 +RDATE:19900930T030000
  984.96 +RDATE:19910929T010000
  984.97 +RDATE:19920927T010000
  984.98 +RDATE:19930926T010000
  984.99 +RDATE:19940925T000000
 984.100 +RDATE:19950924T000000
 984.101 +RDATE:19961027T000000
 984.102 +END:STANDARD
 984.103 +BEGIN:STANDARD
 984.104 +TZOFFSETFROM:+0200
 984.105 +TZOFFSETTO:+0200
 984.106 +TZNAME:EET
 984.107 +DTSTART:19910101T000000
 984.108 +RDATE:19910101T000000
 984.109 +RDATE:19940101T000000
 984.110 +RDATE:19970101T000000
 984.111 +END:STANDARD
 984.112 +END:VTIMEZONE
 984.113 +END:VCALENDAR
   985.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   985.2 +++ b/src/zoneinfo/Europe/Budapest.ics	Tue Feb 10 18:12:00 2015 +0100
   985.3 @@ -0,0 +1,103 @@
   985.4 +BEGIN:VCALENDAR
   985.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   985.6 +VERSION:2.0
   985.7 +BEGIN:VTIMEZONE
   985.8 +TZID:Europe/Budapest
   985.9 +TZURL:http://tzurl.org/zoneinfo/Europe/Budapest
  985.10 +X-LIC-LOCATION:Europe/Budapest
  985.11 +BEGIN:DAYLIGHT
  985.12 +TZOFFSETFROM:+0100
  985.13 +TZOFFSETTO:+0200
  985.14 +TZNAME:CEST
  985.15 +DTSTART:19810329T020000
  985.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  985.17 +END:DAYLIGHT
  985.18 +BEGIN:STANDARD
  985.19 +TZOFFSETFROM:+0200
  985.20 +TZOFFSETTO:+0100
  985.21 +TZNAME:CET
  985.22 +DTSTART:19961027T030000
  985.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  985.24 +END:STANDARD
  985.25 +BEGIN:STANDARD
  985.26 +TZOFFSETFROM:+011620
  985.27 +TZOFFSETTO:+0100
  985.28 +TZNAME:CET
  985.29 +DTSTART:18901001T000000
  985.30 +RDATE:18901001T000000
  985.31 +END:STANDARD
  985.32 +BEGIN:DAYLIGHT
  985.33 +TZOFFSETFROM:+0100
  985.34 +TZOFFSETTO:+0200
  985.35 +TZNAME:CEST
  985.36 +DTSTART:19160430T230000
  985.37 +RDATE:19160430T230000
  985.38 +RDATE:19170416T020000
  985.39 +RDATE:19180401T030000
  985.40 +RDATE:19190415T030000
  985.41 +RDATE:19200405T030000
  985.42 +RDATE:19410406T020000
  985.43 +RDATE:19430329T020000
  985.44 +RDATE:19440403T020000
  985.45 +RDATE:19450501T230000
  985.46 +RDATE:19460331T020000
  985.47 +RDATE:19470406T020000
  985.48 +RDATE:19480404T020000
  985.49 +RDATE:19490410T020000
  985.50 +RDATE:19500417T020000
  985.51 +RDATE:19540523T000000
  985.52 +RDATE:19550523T000000
  985.53 +RDATE:19560603T000000
  985.54 +RDATE:19570602T010000
  985.55 +RDATE:19800406T010000
  985.56 +END:DAYLIGHT
  985.57 +BEGIN:STANDARD
  985.58 +TZOFFSETFROM:+0200
  985.59 +TZOFFSETTO:+0100
  985.60 +TZNAME:CET
  985.61 +DTSTART:19161001T010000
  985.62 +RDATE:19161001T010000
  985.63 +RDATE:19170917T030000
  985.64 +RDATE:19180929T030000
  985.65 +RDATE:19190915T030000
  985.66 +RDATE:19200930T030000
  985.67 +RDATE:19421102T030000
  985.68 +RDATE:19431004T030000
  985.69 +RDATE:19441002T030000
  985.70 +RDATE:19451103T000000
  985.71 +RDATE:19461006T030000
  985.72 +RDATE:19471005T030000
  985.73 +RDATE:19481003T030000
  985.74 +RDATE:19491002T030000
  985.75 +RDATE:19501023T030000
  985.76 +RDATE:19541003T000000
  985.77 +RDATE:19551003T000000
  985.78 +RDATE:19560930T000000
  985.79 +RDATE:19570929T030000
  985.80 +RDATE:19800928T030000
  985.81 +RDATE:19810927T030000
  985.82 +RDATE:19820926T030000
  985.83 +RDATE:19830925T030000
  985.84 +RDATE:19840930T030000
  985.85 +RDATE:19850929T030000
  985.86 +RDATE:19860928T030000
  985.87 +RDATE:19870927T030000
  985.88 +RDATE:19880925T030000
  985.89 +RDATE:19890924T030000
  985.90 +RDATE:19900930T030000
  985.91 +RDATE:19910929T030000
  985.92 +RDATE:19920927T030000
  985.93 +RDATE:19930926T030000
  985.94 +RDATE:19940925T030000
  985.95 +RDATE:19950924T030000
  985.96 +END:STANDARD
  985.97 +BEGIN:STANDARD
  985.98 +TZOFFSETFROM:+0100
  985.99 +TZOFFSETTO:+0100
 985.100 +TZNAME:CET
 985.101 +DTSTART:19180101T000000
 985.102 +RDATE:19180101T000000
 985.103 +RDATE:19450101T000000
 985.104 +END:STANDARD
 985.105 +END:VTIMEZONE
 985.106 +END:VCALENDAR
   986.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   986.2 +++ b/src/zoneinfo/Europe/Chisinau.ics	Tue Feb 10 18:12:00 2015 +0100
   986.3 @@ -0,0 +1,162 @@
   986.4 +BEGIN:VCALENDAR
   986.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   986.6 +VERSION:2.0
   986.7 +BEGIN:VTIMEZONE
   986.8 +TZID:Europe/Chisinau
   986.9 +TZURL:http://tzurl.org/zoneinfo/Europe/Chisinau
  986.10 +X-LIC-LOCATION:Europe/Chisinau
  986.11 +BEGIN:DAYLIGHT
  986.12 +TZOFFSETFROM:+0200
  986.13 +TZOFFSETTO:+0300
  986.14 +TZNAME:EEST
  986.15 +DTSTART:19970330T030000
  986.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  986.17 +END:DAYLIGHT
  986.18 +BEGIN:STANDARD
  986.19 +TZOFFSETFROM:+0300
  986.20 +TZOFFSETTO:+0200
  986.21 +TZNAME:EET
  986.22 +DTSTART:19971026T040000
  986.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  986.24 +END:STANDARD
  986.25 +BEGIN:STANDARD
  986.26 +TZOFFSETFROM:+015520
  986.27 +TZOFFSETTO:+0155
  986.28 +TZNAME:CMT
  986.29 +DTSTART:18800101T000000
  986.30 +RDATE:18800101T000000
  986.31 +END:STANDARD
  986.32 +BEGIN:STANDARD
  986.33 +TZOFFSETFROM:+0155
  986.34 +TZOFFSETTO:+014424
  986.35 +TZNAME:BMT
  986.36 +DTSTART:19180215T000000
  986.37 +RDATE:19180215T000000
  986.38 +END:STANDARD
  986.39 +BEGIN:STANDARD
  986.40 +TZOFFSETFROM:+014424
  986.41 +TZOFFSETTO:+0200
  986.42 +TZNAME:EET
  986.43 +DTSTART:19310724T000000
  986.44 +RDATE:19310724T000000
  986.45 +END:STANDARD
  986.46 +BEGIN:DAYLIGHT
  986.47 +TZOFFSETFROM:+0200
  986.48 +TZOFFSETTO:+0300
  986.49 +TZNAME:EEST
  986.50 +DTSTART:19320521T000000
  986.51 +RDATE:19320521T000000
  986.52 +RDATE:19330402T000000
  986.53 +RDATE:19340408T000000
  986.54 +RDATE:19350407T000000
  986.55 +RDATE:19360405T000000
  986.56 +RDATE:19370404T000000
  986.57 +RDATE:19380403T000000
  986.58 +RDATE:19390402T000000
  986.59 +RDATE:19400815T000000
  986.60 +RDATE:19910331T020000
  986.61 +RDATE:19920329T000000
  986.62 +RDATE:19930328T000000
  986.63 +RDATE:19940327T000000
  986.64 +RDATE:19950326T000000
  986.65 +RDATE:19960331T000000
  986.66 +END:DAYLIGHT
  986.67 +BEGIN:STANDARD
  986.68 +TZOFFSETFROM:+0300
  986.69 +TZOFFSETTO:+0200
  986.70 +TZNAME:EET
  986.71 +DTSTART:19321002T010000
  986.72 +RDATE:19321002T010000
  986.73 +RDATE:19331001T010000
  986.74 +RDATE:19341007T010000
  986.75 +RDATE:19351006T010000
  986.76 +RDATE:19361004T010000
  986.77 +RDATE:19371003T010000
  986.78 +RDATE:19381002T010000
  986.79 +RDATE:19391001T010000
  986.80 +RDATE:19900506T000000
  986.81 +RDATE:19910929T030000
  986.82 +RDATE:19920927T000000
  986.83 +RDATE:19930926T000000
  986.84 +RDATE:19940925T000000
  986.85 +RDATE:19950924T000000
  986.86 +RDATE:19961027T000000
  986.87 +END:STANDARD
  986.88 +BEGIN:DAYLIGHT
  986.89 +TZOFFSETFROM:+0300
  986.90 +TZOFFSETTO:+0200
  986.91 +TZNAME:CEST
  986.92 +DTSTART:19410717T000000
  986.93 +RDATE:19410717T000000
  986.94 +END:DAYLIGHT
  986.95 +BEGIN:STANDARD
  986.96 +TZOFFSETFROM:+0200
  986.97 +TZOFFSETTO:+0100
  986.98 +TZNAME:CET
  986.99 +DTSTART:19421102T030000
 986.100 +RDATE:19421102T030000
 986.101 +RDATE:19431004T030000
 986.102 +END:STANDARD
 986.103 +BEGIN:DAYLIGHT
 986.104 +TZOFFSETFROM:+0100
 986.105 +TZOFFSETTO:+0200
 986.106 +TZNAME:CEST
 986.107 +DTSTART:19430329T020000
 986.108 +RDATE:19430329T020000
 986.109 +RDATE:19440403T020000
 986.110 +END:DAYLIGHT
 986.111 +BEGIN:STANDARD
 986.112 +TZOFFSETFROM:+0200
 986.113 +TZOFFSETTO:+0300
 986.114 +TZNAME:MSK
 986.115 +DTSTART:19440824T000000
 986.116 +RDATE:19440824T000000
 986.117 +END:STANDARD
 986.118 +BEGIN:DAYLIGHT
 986.119 +TZOFFSETFROM:+0300
 986.120 +TZOFFSETTO:+0400
 986.121 +TZNAME:MSD
 986.122 +DTSTART:19810401T000000
 986.123 +RDATE:19810401T000000
 986.124 +RDATE:19820401T000000
 986.125 +RDATE:19830401T000000
 986.126 +RDATE:19840401T000000
 986.127 +RDATE:19850331T020000
 986.128 +RDATE:19860330T020000
 986.129 +RDATE:19870329T020000
 986.130 +RDATE:19880327T020000
 986.131 +RDATE:19890326T020000
 986.132 +END:DAYLIGHT
 986.133 +BEGIN:STANDARD
 986.134 +TZOFFSETFROM:+0400
 986.135 +TZOFFSETTO:+0300
 986.136 +TZNAME:MSK
 986.137 +DTSTART:19811001T000000
 986.138 +RDATE:19811001T000000
 986.139 +RDATE:19821001T000000
 986.140 +RDATE:19831001T000000
 986.141 +RDATE:19840930T030000
 986.142 +RDATE:19850929T030000
 986.143 +RDATE:19860928T030000
 986.144 +RDATE:19870927T030000
 986.145 +RDATE:19880925T030000
 986.146 +RDATE:19890924T030000
 986.147 +END:STANDARD
 986.148 +BEGIN:STANDARD
 986.149 +TZOFFSETFROM:+0300
 986.150 +TZOFFSETTO:+0300
 986.151 +TZNAME:MSK
 986.152 +DTSTART:19900101T000000
 986.153 +RDATE:19900101T000000
 986.154 +END:STANDARD
 986.155 +BEGIN:STANDARD
 986.156 +TZOFFSETFROM:+0200
 986.157 +TZOFFSETTO:+0200
 986.158 +TZNAME:EET
 986.159 +DTSTART:19910101T000000
 986.160 +RDATE:19910101T000000
 986.161 +RDATE:19920101T000000
 986.162 +RDATE:19970101T000000
 986.163 +END:STANDARD
 986.164 +END:VTIMEZONE
 986.165 +END:VCALENDAR
   987.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   987.2 +++ b/src/zoneinfo/Europe/Copenhagen.ics	Tue Feb 10 18:12:00 2015 +0100
   987.3 @@ -0,0 +1,89 @@
   987.4 +BEGIN:VCALENDAR
   987.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   987.6 +VERSION:2.0
   987.7 +BEGIN:VTIMEZONE
   987.8 +TZID:Europe/Copenhagen
   987.9 +TZURL:http://tzurl.org/zoneinfo/Europe/Copenhagen
  987.10 +X-LIC-LOCATION:Europe/Copenhagen
  987.11 +BEGIN:DAYLIGHT
  987.12 +TZOFFSETFROM:+0100
  987.13 +TZOFFSETTO:+0200
  987.14 +TZNAME:CEST
  987.15 +DTSTART:19810329T020000
  987.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  987.17 +END:DAYLIGHT
  987.18 +BEGIN:STANDARD
  987.19 +TZOFFSETFROM:+0200
  987.20 +TZOFFSETTO:+0100
  987.21 +TZNAME:CET
  987.22 +DTSTART:19961027T030000
  987.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  987.24 +END:STANDARD
  987.25 +BEGIN:STANDARD
  987.26 +TZOFFSETFROM:+005020
  987.27 +TZOFFSETTO:+005020
  987.28 +TZNAME:CMT
  987.29 +DTSTART:18900101T000000
  987.30 +RDATE:18900101T000000
  987.31 +END:STANDARD
  987.32 +BEGIN:STANDARD
  987.33 +TZOFFSETFROM:+005020
  987.34 +TZOFFSETTO:+0100
  987.35 +TZNAME:CET
  987.36 +DTSTART:18940101T000000
  987.37 +RDATE:18940101T000000
  987.38 +END:STANDARD
  987.39 +BEGIN:DAYLIGHT
  987.40 +TZOFFSETFROM:+0100
  987.41 +TZOFFSETTO:+0200
  987.42 +TZNAME:CEST
  987.43 +DTSTART:19160514T230000
  987.44 +RDATE:19160514T230000
  987.45 +RDATE:19400515T000000
  987.46 +RDATE:19430329T020000
  987.47 +RDATE:19440403T020000
  987.48 +RDATE:19450402T020000
  987.49 +RDATE:19460501T020000
  987.50 +RDATE:19470504T020000
  987.51 +RDATE:19480509T020000
  987.52 +RDATE:19800406T020000
  987.53 +END:DAYLIGHT
  987.54 +BEGIN:STANDARD
  987.55 +TZOFFSETFROM:+0200
  987.56 +TZOFFSETTO:+0100
  987.57 +TZNAME:CET
  987.58 +DTSTART:19160930T230000
  987.59 +RDATE:19160930T230000
  987.60 +RDATE:19421102T030000
  987.61 +RDATE:19431004T030000
  987.62 +RDATE:19441002T030000
  987.63 +RDATE:19450815T030000
  987.64 +RDATE:19460901T030000
  987.65 +RDATE:19470810T030000
  987.66 +RDATE:19480808T030000
  987.67 +RDATE:19800928T030000
  987.68 +RDATE:19810927T030000
  987.69 +RDATE:19820926T030000
  987.70 +RDATE:19830925T030000
  987.71 +RDATE:19840930T030000
  987.72 +RDATE:19850929T030000
  987.73 +RDATE:19860928T030000
  987.74 +RDATE:19870927T030000
  987.75 +RDATE:19880925T030000
  987.76 +RDATE:19890924T030000
  987.77 +RDATE:19900930T030000
  987.78 +RDATE:19910929T030000
  987.79 +RDATE:19920927T030000
  987.80 +RDATE:19930926T030000
  987.81 +RDATE:19940925T030000
  987.82 +RDATE:19950924T030000
  987.83 +END:STANDARD
  987.84 +BEGIN:STANDARD
  987.85 +TZOFFSETFROM:+0100
  987.86 +TZOFFSETTO:+0100
  987.87 +TZNAME:CET
  987.88 +DTSTART:19800101T000000
  987.89 +RDATE:19800101T000000
  987.90 +END:STANDARD
  987.91 +END:VTIMEZONE
  987.92 +END:VCALENDAR
   988.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   988.2 +++ b/src/zoneinfo/Europe/Dublin.ics	Tue Feb 10 18:12:00 2015 +0100
   988.3 @@ -0,0 +1,202 @@
   988.4 +BEGIN:VCALENDAR
   988.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   988.6 +VERSION:2.0
   988.7 +BEGIN:VTIMEZONE
   988.8 +TZID:Europe/Dublin
   988.9 +TZURL:http://tzurl.org/zoneinfo/Europe/Dublin
  988.10 +X-LIC-LOCATION:Europe/Dublin
  988.11 +BEGIN:DAYLIGHT
  988.12 +TZOFFSETFROM:+0000
  988.13 +TZOFFSETTO:+0100
  988.14 +TZNAME:IST
  988.15 +DTSTART:19810329T010000
  988.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  988.17 +END:DAYLIGHT
  988.18 +BEGIN:STANDARD
  988.19 +TZOFFSETFROM:+0100
  988.20 +TZOFFSETTO:+0000
  988.21 +TZNAME:GMT
  988.22 +DTSTART:19961027T020000
  988.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  988.24 +END:STANDARD
  988.25 +BEGIN:STANDARD
  988.26 +TZOFFSETFROM:-0025
  988.27 +TZOFFSETTO:-002521
  988.28 +TZNAME:DMT
  988.29 +DTSTART:18800802T000000
  988.30 +RDATE:18800802T000000
  988.31 +END:STANDARD
  988.32 +BEGIN:DAYLIGHT
  988.33 +TZOFFSETFROM:-002521
  988.34 +TZOFFSETTO:+003439
  988.35 +TZNAME:IST
  988.36 +DTSTART:19160521T020000
  988.37 +RDATE:19160521T020000
  988.38 +END:DAYLIGHT
  988.39 +BEGIN:STANDARD
  988.40 +TZOFFSETFROM:+003439
  988.41 +TZOFFSETTO:+0000
  988.42 +TZNAME:GMT
  988.43 +DTSTART:19161001T030000
  988.44 +RDATE:19161001T030000
  988.45 +END:STANDARD
  988.46 +BEGIN:DAYLIGHT
  988.47 +TZOFFSETFROM:+0000
  988.48 +TZOFFSETTO:+0100
  988.49 +TZNAME:BST
  988.50 +DTSTART:19170408T020000
  988.51 +RDATE:19170408T020000
  988.52 +RDATE:19180324T020000
  988.53 +RDATE:19190330T020000
  988.54 +RDATE:19200328T020000
  988.55 +RDATE:19210403T020000
  988.56 +END:DAYLIGHT
  988.57 +BEGIN:STANDARD
  988.58 +TZOFFSETFROM:+0100
  988.59 +TZOFFSETTO:+0000
  988.60 +TZNAME:GMT
  988.61 +DTSTART:19170917T030000
  988.62 +RDATE:19170917T030000
  988.63 +RDATE:19180930T030000
  988.64 +RDATE:19190929T030000
  988.65 +RDATE:19201025T030000
  988.66 +RDATE:19211003T030000
  988.67 +RDATE:19221008T030000
  988.68 +RDATE:19230916T030000
  988.69 +RDATE:19240921T030000
  988.70 +RDATE:19251004T030000
  988.71 +RDATE:19261003T030000
  988.72 +RDATE:19271002T030000
  988.73 +RDATE:19281007T030000
  988.74 +RDATE:19291006T030000
  988.75 +RDATE:19301005T030000
  988.76 +RDATE:19311004T030000
  988.77 +RDATE:19321002T030000
  988.78 +RDATE:19331008T030000
  988.79 +RDATE:19341007T030000
  988.80 +RDATE:19351006T030000
  988.81 +RDATE:19361004T030000
  988.82 +RDATE:19371003T030000
  988.83 +RDATE:19381002T030000
  988.84 +RDATE:19391119T030000
  988.85 +RDATE:19461006T020000
  988.86 +RDATE:19471102T020000
  988.87 +RDATE:19481031T030000
  988.88 +RDATE:19491030T030000
  988.89 +RDATE:19501022T030000
  988.90 +RDATE:19511021T030000
  988.91 +RDATE:19521026T030000
  988.92 +RDATE:19531004T030000
  988.93 +RDATE:19541003T030000
  988.94 +RDATE:19551002T030000
  988.95 +RDATE:19561007T030000
  988.96 +RDATE:19571006T030000
  988.97 +RDATE:19581005T030000
  988.98 +RDATE:19591004T030000
  988.99 +RDATE:19601002T030000
 988.100 +RDATE:19611029T030000
 988.101 +RDATE:19621028T030000
 988.102 +RDATE:19631027T030000
 988.103 +RDATE:19641025T030000
 988.104 +RDATE:19651024T030000
 988.105 +RDATE:19661023T030000
 988.106 +RDATE:19671029T030000
 988.107 +RDATE:19711031T030000
 988.108 +RDATE:19721029T030000
 988.109 +RDATE:19731028T030000
 988.110 +RDATE:19741027T030000
 988.111 +RDATE:19751026T030000
 988.112 +RDATE:19761024T030000
 988.113 +RDATE:19771023T030000
 988.114 +RDATE:19781029T030000
 988.115 +RDATE:19791028T030000
 988.116 +RDATE:19801026T030000
 988.117 +RDATE:19811025T020000
 988.118 +RDATE:19821024T020000
 988.119 +RDATE:19831023T020000
 988.120 +RDATE:19841028T020000
 988.121 +RDATE:19851027T020000
 988.122 +RDATE:19861026T020000
 988.123 +RDATE:19871025T020000
 988.124 +RDATE:19881023T020000
 988.125 +RDATE:19891029T020000
 988.126 +RDATE:19901028T020000
 988.127 +RDATE:19911027T020000
 988.128 +RDATE:19921025T020000
 988.129 +RDATE:19931024T020000
 988.130 +RDATE:19941023T020000
 988.131 +RDATE:19951022T020000
 988.132 +END:STANDARD
 988.133 +BEGIN:STANDARD
 988.134 +TZOFFSETFROM:+0000
 988.135 +TZOFFSETTO:+0000
 988.136 +TZNAME:GMT
 988.137 +DTSTART:19211206T000000
 988.138 +RDATE:19211206T000000
 988.139 +RDATE:19960101T000000
 988.140 +END:STANDARD
 988.141 +BEGIN:DAYLIGHT
 988.142 +TZOFFSETFROM:+0000
 988.143 +TZOFFSETTO:+0100
 988.144 +TZNAME:IST
 988.145 +DTSTART:19220326T020000
 988.146 +RDATE:19220326T020000
 988.147 +RDATE:19230422T020000
 988.148 +RDATE:19240413T020000
 988.149 +RDATE:19250419T020000
 988.150 +RDATE:19260418T020000
 988.151 +RDATE:19270410T020000
 988.152 +RDATE:19280422T020000
 988.153 +RDATE:19290421T020000
 988.154 +RDATE:19300413T020000
 988.155 +RDATE:19310419T020000
 988.156 +RDATE:19320417T020000
 988.157 +RDATE:19330409T020000
 988.158 +RDATE:19340422T020000
 988.159 +RDATE:19350414T020000
 988.160 +RDATE:19360419T020000
 988.161 +RDATE:19370418T020000
 988.162 +RDATE:19380410T020000
 988.163 +RDATE:19390416T020000
 988.164 +RDATE:19400225T020000
 988.165 +RDATE:19470316T020000
 988.166 +RDATE:19480418T020000
 988.167 +RDATE:19490403T020000
 988.168 +RDATE:19500416T020000
 988.169 +RDATE:19510415T020000
 988.170 +RDATE:19520420T020000
 988.171 +RDATE:19530419T020000
 988.172 +RDATE:19540411T020000
 988.173 +RDATE:19550417T020000
 988.174 +RDATE:19560422T020000
 988.175 +RDATE:19570414T020000
 988.176 +RDATE:19580420T020000
 988.177 +RDATE:19590419T020000
 988.178 +RDATE:19600410T020000
 988.179 +RDATE:19610326T020000
 988.180 +RDATE:19620325T020000
 988.181 +RDATE:19630331T020000
 988.182 +RDATE:19640322T020000
 988.183 +RDATE:19650321T020000
 988.184 +RDATE:19660320T020000
 988.185 +RDATE:19670319T020000
 988.186 +RDATE:19680218T020000
 988.187 +RDATE:19720319T020000
 988.188 +RDATE:19730318T020000
 988.189 +RDATE:19740317T020000
 988.190 +RDATE:19750316T020000
 988.191 +RDATE:19760321T020000
 988.192 +RDATE:19770320T020000
 988.193 +RDATE:19780319T020000
 988.194 +RDATE:19790318T020000
 988.195 +RDATE:19800316T020000
 988.196 +END:DAYLIGHT
 988.197 +BEGIN:STANDARD
 988.198 +TZOFFSETFROM:+0100
 988.199 +TZOFFSETTO:+0100
 988.200 +TZNAME:IST
 988.201 +DTSTART:19681027T000000
 988.202 +RDATE:19681027T000000
 988.203 +END:STANDARD
 988.204 +END:VTIMEZONE
 988.205 +END:VCALENDAR
   989.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   989.2 +++ b/src/zoneinfo/Europe/Gibraltar.ics	Tue Feb 10 18:12:00 2015 +0100
   989.3 @@ -0,0 +1,172 @@
   989.4 +BEGIN:VCALENDAR
   989.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   989.6 +VERSION:2.0
   989.7 +BEGIN:VTIMEZONE
   989.8 +TZID:Europe/Gibraltar
   989.9 +TZURL:http://tzurl.org/zoneinfo/Europe/Gibraltar
  989.10 +X-LIC-LOCATION:Europe/Gibraltar
  989.11 +BEGIN:DAYLIGHT
  989.12 +TZOFFSETFROM:+0100
  989.13 +TZOFFSETTO:+0200
  989.14 +TZNAME:CEST
  989.15 +DTSTART:19820328T020000
  989.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  989.17 +END:DAYLIGHT
  989.18 +BEGIN:STANDARD
  989.19 +TZOFFSETFROM:+0200
  989.20 +TZOFFSETTO:+0100
  989.21 +TZNAME:CET
  989.22 +DTSTART:19961027T030000
  989.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  989.24 +END:STANDARD
  989.25 +BEGIN:STANDARD
  989.26 +TZOFFSETFROM:-002124
  989.27 +TZOFFSETTO:+0000
  989.28 +TZNAME:GMT
  989.29 +DTSTART:18800802T000000
  989.30 +RDATE:18800802T000000
  989.31 +END:STANDARD
  989.32 +BEGIN:DAYLIGHT
  989.33 +TZOFFSETFROM:+0000
  989.34 +TZOFFSETTO:+0100
  989.35 +TZNAME:BST
  989.36 +DTSTART:19160521T020000
  989.37 +RDATE:19160521T020000
  989.38 +RDATE:19170408T020000
  989.39 +RDATE:19180324T020000
  989.40 +RDATE:19190330T020000
  989.41 +RDATE:19200328T020000
  989.42 +RDATE:19210403T020000
  989.43 +RDATE:19220326T020000
  989.44 +RDATE:19230422T020000
  989.45 +RDATE:19240413T020000
  989.46 +RDATE:19250419T020000
  989.47 +RDATE:19260418T020000
  989.48 +RDATE:19270410T020000
  989.49 +RDATE:19280422T020000
  989.50 +RDATE:19290421T020000
  989.51 +RDATE:19300413T020000
  989.52 +RDATE:19310419T020000
  989.53 +RDATE:19320417T020000
  989.54 +RDATE:19330409T020000
  989.55 +RDATE:19340422T020000
  989.56 +RDATE:19350414T020000
  989.57 +RDATE:19360419T020000
  989.58 +RDATE:19370418T020000
  989.59 +RDATE:19380410T020000
  989.60 +RDATE:19390416T020000
  989.61 +RDATE:19400225T020000
  989.62 +RDATE:19460414T020000
  989.63 +RDATE:19470316T020000
  989.64 +RDATE:19480314T020000
  989.65 +RDATE:19490403T020000
  989.66 +RDATE:19500416T020000
  989.67 +RDATE:19510415T020000
  989.68 +RDATE:19520420T020000
  989.69 +RDATE:19530419T020000
  989.70 +RDATE:19540411T020000
  989.71 +RDATE:19550417T020000
  989.72 +RDATE:19560422T020000
  989.73 +END:DAYLIGHT
  989.74 +BEGIN:STANDARD
  989.75 +TZOFFSETFROM:+0100
  989.76 +TZOFFSETTO:+0000
  989.77 +TZNAME:GMT
  989.78 +DTSTART:19161001T030000
  989.79 +RDATE:19161001T030000
  989.80 +RDATE:19170917T030000
  989.81 +RDATE:19180930T030000
  989.82 +RDATE:19190929T030000
  989.83 +RDATE:19201025T030000
  989.84 +RDATE:19211003T030000
  989.85 +RDATE:19221008T030000
  989.86 +RDATE:19230916T030000
  989.87 +RDATE:19240921T030000
  989.88 +RDATE:19251004T030000
  989.89 +RDATE:19261003T030000
  989.90 +RDATE:19271002T030000
  989.91 +RDATE:19281007T030000
  989.92 +RDATE:19291006T030000
  989.93 +RDATE:19301005T030000
  989.94 +RDATE:19311004T030000
  989.95 +RDATE:19321002T030000
  989.96 +RDATE:19331008T030000
  989.97 +RDATE:19341007T030000
  989.98 +RDATE:19351006T030000
  989.99 +RDATE:19361004T030000
 989.100 +RDATE:19371003T030000
 989.101 +RDATE:19381002T030000
 989.102 +RDATE:19391119T030000
 989.103 +RDATE:19451007T030000
 989.104 +RDATE:19461006T030000
 989.105 +RDATE:19471102T030000
 989.106 +RDATE:19481031T030000
 989.107 +RDATE:19491030T030000
 989.108 +RDATE:19501022T030000
 989.109 +RDATE:19511021T030000
 989.110 +RDATE:19521026T030000
 989.111 +RDATE:19531004T030000
 989.112 +RDATE:19541003T030000
 989.113 +RDATE:19551002T030000
 989.114 +RDATE:19561007T030000
 989.115 +END:STANDARD
 989.116 +BEGIN:DAYLIGHT
 989.117 +TZOFFSETFROM:+0100
 989.118 +TZOFFSETTO:+0200
 989.119 +TZNAME:BDST
 989.120 +DTSTART:19410504T020000
 989.121 +RDATE:19410504T020000
 989.122 +RDATE:19420405T020000
 989.123 +RDATE:19430404T020000
 989.124 +RDATE:19440402T020000
 989.125 +RDATE:19450402T020000
 989.126 +RDATE:19470413T020000
 989.127 +END:DAYLIGHT
 989.128 +BEGIN:DAYLIGHT
 989.129 +TZOFFSETFROM:+0200
 989.130 +TZOFFSETTO:+0100
 989.131 +TZNAME:BST
 989.132 +DTSTART:19410810T030000
 989.133 +RDATE:19410810T030000
 989.134 +RDATE:19420809T030000
 989.135 +RDATE:19430815T030000
 989.136 +RDATE:19440917T030000
 989.137 +RDATE:19450715T030000
 989.138 +RDATE:19470810T030000
 989.139 +END:DAYLIGHT
 989.140 +BEGIN:STANDARD
 989.141 +TZOFFSETFROM:+0000
 989.142 +TZOFFSETTO:+0100
 989.143 +TZNAME:CET
 989.144 +DTSTART:19570414T020000
 989.145 +RDATE:19570414T020000
 989.146 +END:STANDARD
 989.147 +BEGIN:STANDARD
 989.148 +TZOFFSETFROM:+0100
 989.149 +TZOFFSETTO:+0100
 989.150 +TZNAME:CET
 989.151 +DTSTART:19820101T000000
 989.152 +RDATE:19820101T000000
 989.153 +END:STANDARD
 989.154 +BEGIN:STANDARD
 989.155 +TZOFFSETFROM:+0200
 989.156 +TZOFFSETTO:+0100
 989.157 +TZNAME:CET
 989.158 +DTSTART:19820926T030000
 989.159 +RDATE:19820926T030000
 989.160 +RDATE:19830925T030000
 989.161 +RDATE:19840930T030000
 989.162 +RDATE:19850929T030000
 989.163 +RDATE:19860928T030000
 989.164 +RDATE:19870927T030000
 989.165 +RDATE:19880925T030000
 989.166 +RDATE:19890924T030000
 989.167 +RDATE:19900930T030000
 989.168 +RDATE:19910929T030000
 989.169 +RDATE:19920927T030000
 989.170 +RDATE:19930926T030000
 989.171 +RDATE:19940925T030000
 989.172 +RDATE:19950924T030000
 989.173 +END:STANDARD
 989.174 +END:VTIMEZONE
 989.175 +END:VCALENDAR
   990.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   990.2 +++ b/src/zoneinfo/Europe/Guernsey.ics	Tue Feb 10 18:12:00 2015 +0100
   990.3 @@ -0,0 +1,209 @@
   990.4 +BEGIN:VCALENDAR
   990.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   990.6 +VERSION:2.0
   990.7 +BEGIN:VTIMEZONE
   990.8 +TZID:Europe/Guernsey
   990.9 +TZURL:http://tzurl.org/zoneinfo/Europe/Guernsey
  990.10 +X-LIC-LOCATION:Europe/Guernsey
  990.11 +BEGIN:DAYLIGHT
  990.12 +TZOFFSETFROM:+0000
  990.13 +TZOFFSETTO:+0100
  990.14 +TZNAME:BST
  990.15 +DTSTART:19810329T010000
  990.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  990.17 +END:DAYLIGHT
  990.18 +BEGIN:STANDARD
  990.19 +TZOFFSETFROM:+0100
  990.20 +TZOFFSETTO:+0000
  990.21 +TZNAME:GMT
  990.22 +DTSTART:19961027T020000
  990.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  990.24 +END:STANDARD
  990.25 +BEGIN:STANDARD
  990.26 +TZOFFSETFROM:-000115
  990.27 +TZOFFSETTO:+0000
  990.28 +TZNAME:GMT
  990.29 +DTSTART:18471201T000000
  990.30 +RDATE:18471201T000000
  990.31 +END:STANDARD
  990.32 +BEGIN:DAYLIGHT
  990.33 +TZOFFSETFROM:+0000
  990.34 +TZOFFSETTO:+0100
  990.35 +TZNAME:BST
  990.36 +DTSTART:19160521T020000
  990.37 +RDATE:19160521T020000
  990.38 +RDATE:19170408T020000
  990.39 +RDATE:19180324T020000
  990.40 +RDATE:19190330T020000
  990.41 +RDATE:19200328T020000
  990.42 +RDATE:19210403T020000
  990.43 +RDATE:19220326T020000
  990.44 +RDATE:19230422T020000
  990.45 +RDATE:19240413T020000
  990.46 +RDATE:19250419T020000
  990.47 +RDATE:19260418T020000
  990.48 +RDATE:19270410T020000
  990.49 +RDATE:19280422T020000
  990.50 +RDATE:19290421T020000
  990.51 +RDATE:19300413T020000
  990.52 +RDATE:19310419T020000
  990.53 +RDATE:19320417T020000
  990.54 +RDATE:19330409T020000
  990.55 +RDATE:19340422T020000
  990.56 +RDATE:19350414T020000
  990.57 +RDATE:19360419T020000
  990.58 +RDATE:19370418T020000
  990.59 +RDATE:19380410T020000
  990.60 +RDATE:19390416T020000
  990.61 +RDATE:19400225T020000
  990.62 +RDATE:19460414T020000
  990.63 +RDATE:19470316T020000
  990.64 +RDATE:19480314T020000
  990.65 +RDATE:19490403T020000
  990.66 +RDATE:19500416T020000
  990.67 +RDATE:19510415T020000
  990.68 +RDATE:19520420T020000
  990.69 +RDATE:19530419T020000
  990.70 +RDATE:19540411T020000
  990.71 +RDATE:19550417T020000
  990.72 +RDATE:19560422T020000
  990.73 +RDATE:19570414T020000
  990.74 +RDATE:19580420T020000
  990.75 +RDATE:19590419T020000
  990.76 +RDATE:19600410T020000
  990.77 +RDATE:19610326T020000
  990.78 +RDATE:19620325T020000
  990.79 +RDATE:19630331T020000
  990.80 +RDATE:19640322T020000
  990.81 +RDATE:19650321T020000
  990.82 +RDATE:19660320T020000
  990.83 +RDATE:19670319T020000
  990.84 +RDATE:19680218T020000
  990.85 +RDATE:19720319T020000
  990.86 +RDATE:19730318T020000
  990.87 +RDATE:19740317T020000
  990.88 +RDATE:19750316T020000
  990.89 +RDATE:19760321T020000
  990.90 +RDATE:19770320T020000
  990.91 +RDATE:19780319T020000
  990.92 +RDATE:19790318T020000
  990.93 +RDATE:19800316T020000
  990.94 +END:DAYLIGHT
  990.95 +BEGIN:STANDARD
  990.96 +TZOFFSETFROM:+0100
  990.97 +TZOFFSETTO:+0000
  990.98 +TZNAME:GMT
  990.99 +DTSTART:19161001T030000
 990.100 +RDATE:19161001T030000
 990.101 +RDATE:19170917T030000
 990.102 +RDATE:19180930T030000
 990.103 +RDATE:19190929T030000
 990.104 +RDATE:19201025T030000
 990.105 +RDATE:19211003T030000
 990.106 +RDATE:19221008T030000
 990.107 +RDATE:19230916T030000
 990.108 +RDATE:19240921T030000
 990.109 +RDATE:19251004T030000
 990.110 +RDATE:19261003T030000
 990.111 +RDATE:19271002T030000
 990.112 +RDATE:19281007T030000
 990.113 +RDATE:19291006T030000
 990.114 +RDATE:19301005T030000
 990.115 +RDATE:19311004T030000
 990.116 +RDATE:19321002T030000
 990.117 +RDATE:19331008T030000
 990.118 +RDATE:19341007T030000
 990.119 +RDATE:19351006T030000
 990.120 +RDATE:19361004T030000
 990.121 +RDATE:19371003T030000
 990.122 +RDATE:19381002T030000
 990.123 +RDATE:19391119T030000
 990.124 +RDATE:19451007T030000
 990.125 +RDATE:19461006T030000
 990.126 +RDATE:19471102T030000
 990.127 +RDATE:19481031T030000
 990.128 +RDATE:19491030T030000
 990.129 +RDATE:19501022T030000
 990.130 +RDATE:19511021T030000
 990.131 +RDATE:19521026T030000
 990.132 +RDATE:19531004T030000
 990.133 +RDATE:19541003T030000
 990.134 +RDATE:19551002T030000
 990.135 +RDATE:19561007T030000
 990.136 +RDATE:19571006T030000
 990.137 +RDATE:19581005T030000
 990.138 +RDATE:19591004T030000
 990.139 +RDATE:19601002T030000
 990.140 +RDATE:19611029T030000
 990.141 +RDATE:19621028T030000
 990.142 +RDATE:19631027T030000
 990.143 +RDATE:19641025T030000
 990.144 +RDATE:19651024T030000
 990.145 +RDATE:19661023T030000
 990.146 +RDATE:19671029T030000
 990.147 +RDATE:19711031T030000
 990.148 +RDATE:19721029T030000
 990.149 +RDATE:19731028T030000
 990.150 +RDATE:19741027T030000
 990.151 +RDATE:19751026T030000
 990.152 +RDATE:19761024T030000
 990.153 +RDATE:19771023T030000
 990.154 +RDATE:19781029T030000
 990.155 +RDATE:19791028T030000
 990.156 +RDATE:19801026T030000
 990.157 +RDATE:19811025T020000
 990.158 +RDATE:19821024T020000
 990.159 +RDATE:19831023T020000
 990.160 +RDATE:19841028T020000
 990.161 +RDATE:19851027T020000
 990.162 +RDATE:19861026T020000
 990.163 +RDATE:19871025T020000
 990.164 +RDATE:19881023T020000
 990.165 +RDATE:19891029T020000
 990.166 +RDATE:19901028T020000
 990.167 +RDATE:19911027T020000
 990.168 +RDATE:19921025T020000
 990.169 +RDATE:19931024T020000
 990.170 +RDATE:19941023T020000
 990.171 +RDATE:19951022T020000
 990.172 +END:STANDARD
 990.173 +BEGIN:DAYLIGHT
 990.174 +TZOFFSETFROM:+0100
 990.175 +TZOFFSETTO:+0200
 990.176 +TZNAME:BDST
 990.177 +DTSTART:19410504T020000
 990.178 +RDATE:19410504T020000
 990.179 +RDATE:19420405T020000
 990.180 +RDATE:19430404T020000
 990.181 +RDATE:19440402T020000
 990.182 +RDATE:19450402T020000
 990.183 +RDATE:19470413T020000
 990.184 +END:DAYLIGHT
 990.185 +BEGIN:DAYLIGHT
 990.186 +TZOFFSETFROM:+0200
 990.187 +TZOFFSETTO:+0100
 990.188 +TZNAME:BST
 990.189 +DTSTART:19410810T030000
 990.190 +RDATE:19410810T030000
 990.191 +RDATE:19420809T030000
 990.192 +RDATE:19430815T030000
 990.193 +RDATE:19440917T030000
 990.194 +RDATE:19450715T030000
 990.195 +RDATE:19470810T030000
 990.196 +END:DAYLIGHT
 990.197 +BEGIN:STANDARD
 990.198 +TZOFFSETFROM:+0100
 990.199 +TZOFFSETTO:+0100
 990.200 +TZNAME:BST
 990.201 +DTSTART:19681027T000000
 990.202 +RDATE:19681027T000000
 990.203 +END:STANDARD
 990.204 +BEGIN:STANDARD
 990.205 +TZOFFSETFROM:+0000
 990.206 +TZOFFSETTO:+0000
 990.207 +TZNAME:GMT
 990.208 +DTSTART:19960101T000000
 990.209 +RDATE:19960101T000000
 990.210 +END:STANDARD
 990.211 +END:VTIMEZONE
 990.212 +END:VCALENDAR
   991.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   991.2 +++ b/src/zoneinfo/Europe/Helsinki.ics	Tue Feb 10 18:12:00 2015 +0100
   991.3 @@ -0,0 +1,75 @@
   991.4 +BEGIN:VCALENDAR
   991.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   991.6 +VERSION:2.0
   991.7 +BEGIN:VTIMEZONE
   991.8 +TZID:Europe/Helsinki
   991.9 +TZURL:http://tzurl.org/zoneinfo/Europe/Helsinki
  991.10 +X-LIC-LOCATION:Europe/Helsinki
  991.11 +BEGIN:DAYLIGHT
  991.12 +TZOFFSETFROM:+0200
  991.13 +TZOFFSETTO:+0300
  991.14 +TZNAME:EEST
  991.15 +DTSTART:19830327T030000
  991.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  991.17 +END:DAYLIGHT
  991.18 +BEGIN:STANDARD
  991.19 +TZOFFSETFROM:+0300
  991.20 +TZOFFSETTO:+0200
  991.21 +TZNAME:EET
  991.22 +DTSTART:19961027T040000
  991.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  991.24 +END:STANDARD
  991.25 +BEGIN:STANDARD
  991.26 +TZOFFSETFROM:+013952
  991.27 +TZOFFSETTO:+013952
  991.28 +TZNAME:HMT
  991.29 +DTSTART:18780531T000000
  991.30 +RDATE:18780531T000000
  991.31 +END:STANDARD
  991.32 +BEGIN:STANDARD
  991.33 +TZOFFSETFROM:+013952
  991.34 +TZOFFSETTO:+0200
  991.35 +TZNAME:EET
  991.36 +DTSTART:19210501T000000
  991.37 +RDATE:19210501T000000
  991.38 +END:STANDARD
  991.39 +BEGIN:DAYLIGHT
  991.40 +TZOFFSETFROM:+0200
  991.41 +TZOFFSETTO:+0300
  991.42 +TZNAME:EEST
  991.43 +DTSTART:19420403T000000
  991.44 +RDATE:19420403T000000
  991.45 +RDATE:19810329T020000
  991.46 +RDATE:19820328T020000
  991.47 +END:DAYLIGHT
  991.48 +BEGIN:STANDARD
  991.49 +TZOFFSETFROM:+0300
  991.50 +TZOFFSETTO:+0200
  991.51 +TZNAME:EET
  991.52 +DTSTART:19421003T000000
  991.53 +RDATE:19421003T000000
  991.54 +RDATE:19810927T030000
  991.55 +RDATE:19820926T030000
  991.56 +RDATE:19830925T040000
  991.57 +RDATE:19840930T040000
  991.58 +RDATE:19850929T040000
  991.59 +RDATE:19860928T040000
  991.60 +RDATE:19870927T040000
  991.61 +RDATE:19880925T040000
  991.62 +RDATE:19890924T040000
  991.63 +RDATE:19900930T040000
  991.64 +RDATE:19910929T040000
  991.65 +RDATE:19920927T040000
  991.66 +RDATE:19930926T040000
  991.67 +RDATE:19940925T040000
  991.68 +RDATE:19950924T040000
  991.69 +END:STANDARD
  991.70 +BEGIN:STANDARD
  991.71 +TZOFFSETFROM:+0200
  991.72 +TZOFFSETTO:+0200
  991.73 +TZNAME:EET
  991.74 +DTSTART:19830101T000000
  991.75 +RDATE:19830101T000000
  991.76 +END:STANDARD
  991.77 +END:VTIMEZONE
  991.78 +END:VCALENDAR
   992.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   992.2 +++ b/src/zoneinfo/Europe/Isle_of_Man.ics	Tue Feb 10 18:12:00 2015 +0100
   992.3 @@ -0,0 +1,209 @@
   992.4 +BEGIN:VCALENDAR
   992.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   992.6 +VERSION:2.0
   992.7 +BEGIN:VTIMEZONE
   992.8 +TZID:Europe/Isle_of_Man
   992.9 +TZURL:http://tzurl.org/zoneinfo/Europe/Isle_of_Man
  992.10 +X-LIC-LOCATION:Europe/Isle_of_Man
  992.11 +BEGIN:DAYLIGHT
  992.12 +TZOFFSETFROM:+0000
  992.13 +TZOFFSETTO:+0100
  992.14 +TZNAME:BST
  992.15 +DTSTART:19810329T010000
  992.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  992.17 +END:DAYLIGHT
  992.18 +BEGIN:STANDARD
  992.19 +TZOFFSETFROM:+0100
  992.20 +TZOFFSETTO:+0000
  992.21 +TZNAME:GMT
  992.22 +DTSTART:19961027T020000
  992.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  992.24 +END:STANDARD
  992.25 +BEGIN:STANDARD
  992.26 +TZOFFSETFROM:-000115
  992.27 +TZOFFSETTO:+0000
  992.28 +TZNAME:GMT
  992.29 +DTSTART:18471201T000000
  992.30 +RDATE:18471201T000000
  992.31 +END:STANDARD
  992.32 +BEGIN:DAYLIGHT
  992.33 +TZOFFSETFROM:+0000
  992.34 +TZOFFSETTO:+0100
  992.35 +TZNAME:BST
  992.36 +DTSTART:19160521T020000
  992.37 +RDATE:19160521T020000
  992.38 +RDATE:19170408T020000
  992.39 +RDATE:19180324T020000
  992.40 +RDATE:19190330T020000
  992.41 +RDATE:19200328T020000
  992.42 +RDATE:19210403T020000
  992.43 +RDATE:19220326T020000
  992.44 +RDATE:19230422T020000
  992.45 +RDATE:19240413T020000
  992.46 +RDATE:19250419T020000
  992.47 +RDATE:19260418T020000
  992.48 +RDATE:19270410T020000
  992.49 +RDATE:19280422T020000
  992.50 +RDATE:19290421T020000
  992.51 +RDATE:19300413T020000
  992.52 +RDATE:19310419T020000
  992.53 +RDATE:19320417T020000
  992.54 +RDATE:19330409T020000
  992.55 +RDATE:19340422T020000
  992.56 +RDATE:19350414T020000
  992.57 +RDATE:19360419T020000
  992.58 +RDATE:19370418T020000
  992.59 +RDATE:19380410T020000
  992.60 +RDATE:19390416T020000
  992.61 +RDATE:19400225T020000
  992.62 +RDATE:19460414T020000
  992.63 +RDATE:19470316T020000
  992.64 +RDATE:19480314T020000
  992.65 +RDATE:19490403T020000
  992.66 +RDATE:19500416T020000
  992.67 +RDATE:19510415T020000
  992.68 +RDATE:19520420T020000
  992.69 +RDATE:19530419T020000
  992.70 +RDATE:19540411T020000
  992.71 +RDATE:19550417T020000
  992.72 +RDATE:19560422T020000
  992.73 +RDATE:19570414T020000
  992.74 +RDATE:19580420T020000
  992.75 +RDATE:19590419T020000
  992.76 +RDATE:19600410T020000
  992.77 +RDATE:19610326T020000
  992.78 +RDATE:19620325T020000
  992.79 +RDATE:19630331T020000
  992.80 +RDATE:19640322T020000
  992.81 +RDATE:19650321T020000
  992.82 +RDATE:19660320T020000
  992.83 +RDATE:19670319T020000
  992.84 +RDATE:19680218T020000
  992.85 +RDATE:19720319T020000
  992.86 +RDATE:19730318T020000
  992.87 +RDATE:19740317T020000
  992.88 +RDATE:19750316T020000
  992.89 +RDATE:19760321T020000
  992.90 +RDATE:19770320T020000
  992.91 +RDATE:19780319T020000
  992.92 +RDATE:19790318T020000
  992.93 +RDATE:19800316T020000
  992.94 +END:DAYLIGHT
  992.95 +BEGIN:STANDARD
  992.96 +TZOFFSETFROM:+0100
  992.97 +TZOFFSETTO:+0000
  992.98 +TZNAME:GMT
  992.99 +DTSTART:19161001T030000
 992.100 +RDATE:19161001T030000
 992.101 +RDATE:19170917T030000
 992.102 +RDATE:19180930T030000
 992.103 +RDATE:19190929T030000
 992.104 +RDATE:19201025T030000
 992.105 +RDATE:19211003T030000
 992.106 +RDATE:19221008T030000
 992.107 +RDATE:19230916T030000
 992.108 +RDATE:19240921T030000
 992.109 +RDATE:19251004T030000
 992.110 +RDATE:19261003T030000
 992.111 +RDATE:19271002T030000
 992.112 +RDATE:19281007T030000
 992.113 +RDATE:19291006T030000
 992.114 +RDATE:19301005T030000
 992.115 +RDATE:19311004T030000
 992.116 +RDATE:19321002T030000
 992.117 +RDATE:19331008T030000
 992.118 +RDATE:19341007T030000
 992.119 +RDATE:19351006T030000
 992.120 +RDATE:19361004T030000
 992.121 +RDATE:19371003T030000
 992.122 +RDATE:19381002T030000
 992.123 +RDATE:19391119T030000
 992.124 +RDATE:19451007T030000
 992.125 +RDATE:19461006T030000
 992.126 +RDATE:19471102T030000
 992.127 +RDATE:19481031T030000
 992.128 +RDATE:19491030T030000
 992.129 +RDATE:19501022T030000
 992.130 +RDATE:19511021T030000
 992.131 +RDATE:19521026T030000
 992.132 +RDATE:19531004T030000
 992.133 +RDATE:19541003T030000
 992.134 +RDATE:19551002T030000
 992.135 +RDATE:19561007T030000
 992.136 +RDATE:19571006T030000
 992.137 +RDATE:19581005T030000
 992.138 +RDATE:19591004T030000
 992.139 +RDATE:19601002T030000
 992.140 +RDATE:19611029T030000
 992.141 +RDATE:19621028T030000
 992.142 +RDATE:19631027T030000
 992.143 +RDATE:19641025T030000
 992.144 +RDATE:19651024T030000
 992.145 +RDATE:19661023T030000
 992.146 +RDATE:19671029T030000
 992.147 +RDATE:19711031T030000
 992.148 +RDATE:19721029T030000
 992.149 +RDATE:19731028T030000
 992.150 +RDATE:19741027T030000
 992.151 +RDATE:19751026T030000
 992.152 +RDATE:19761024T030000
 992.153 +RDATE:19771023T030000
 992.154 +RDATE:19781029T030000
 992.155 +RDATE:19791028T030000
 992.156 +RDATE:19801026T030000
 992.157 +RDATE:19811025T020000
 992.158 +RDATE:19821024T020000
 992.159 +RDATE:19831023T020000
 992.160 +RDATE:19841028T020000
 992.161 +RDATE:19851027T020000
 992.162 +RDATE:19861026T020000
 992.163 +RDATE:19871025T020000
 992.164 +RDATE:19881023T020000
 992.165 +RDATE:19891029T020000
 992.166 +RDATE:19901028T020000
 992.167 +RDATE:19911027T020000
 992.168 +RDATE:19921025T020000
 992.169 +RDATE:19931024T020000
 992.170 +RDATE:19941023T020000
 992.171 +RDATE:19951022T020000
 992.172 +END:STANDARD
 992.173 +BEGIN:DAYLIGHT
 992.174 +TZOFFSETFROM:+0100
 992.175 +TZOFFSETTO:+0200
 992.176 +TZNAME:BDST
 992.177 +DTSTART:19410504T020000
 992.178 +RDATE:19410504T020000
 992.179 +RDATE:19420405T020000
 992.180 +RDATE:19430404T020000
 992.181 +RDATE:19440402T020000
 992.182 +RDATE:19450402T020000
 992.183 +RDATE:19470413T020000
 992.184 +END:DAYLIGHT
 992.185 +BEGIN:DAYLIGHT
 992.186 +TZOFFSETFROM:+0200
 992.187 +TZOFFSETTO:+0100
 992.188 +TZNAME:BST
 992.189 +DTSTART:19410810T030000
 992.190 +RDATE:19410810T030000
 992.191 +RDATE:19420809T030000
 992.192 +RDATE:19430815T030000
 992.193 +RDATE:19440917T030000
 992.194 +RDATE:19450715T030000
 992.195 +RDATE:19470810T030000
 992.196 +END:DAYLIGHT
 992.197 +BEGIN:STANDARD
 992.198 +TZOFFSETFROM:+0100
 992.199 +TZOFFSETTO:+0100
 992.200 +TZNAME:BST
 992.201 +DTSTART:19681027T000000
 992.202 +RDATE:19681027T000000
 992.203 +END:STANDARD
 992.204 +BEGIN:STANDARD
 992.205 +TZOFFSETFROM:+0000
 992.206 +TZOFFSETTO:+0000
 992.207 +TZNAME:GMT
 992.208 +DTSTART:19960101T000000
 992.209 +RDATE:19960101T000000
 992.210 +END:STANDARD
 992.211 +END:VTIMEZONE
 992.212 +END:VCALENDAR
   993.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   993.2 +++ b/src/zoneinfo/Europe/Istanbul.ics	Tue Feb 10 18:12:00 2015 +0100
   993.3 @@ -0,0 +1,194 @@
   993.4 +BEGIN:VCALENDAR
   993.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   993.6 +VERSION:2.0
   993.7 +BEGIN:VTIMEZONE
   993.8 +TZID:Europe/Istanbul
   993.9 +TZURL:http://tzurl.org/zoneinfo/Europe/Istanbul
  993.10 +X-LIC-LOCATION:Europe/Istanbul
  993.11 +BEGIN:STANDARD
  993.12 +TZOFFSETFROM:+0300
  993.13 +TZOFFSETTO:+0200
  993.14 +TZNAME:EET
  993.15 +DTSTART:20071028T040000
  993.16 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  993.17 +END:STANDARD
  993.18 +BEGIN:DAYLIGHT
  993.19 +TZOFFSETFROM:+0200
  993.20 +TZOFFSETTO:+0300
  993.21 +TZNAME:EEST
  993.22 +DTSTART:20120325T030000
  993.23 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  993.24 +END:DAYLIGHT
  993.25 +BEGIN:STANDARD
  993.26 +TZOFFSETFROM:+015552
  993.27 +TZOFFSETTO:+015656
  993.28 +TZNAME:IMT
  993.29 +DTSTART:18800101T000000
  993.30 +RDATE:18800101T000000
  993.31 +END:STANDARD
  993.32 +BEGIN:STANDARD
  993.33 +TZOFFSETFROM:+015656
  993.34 +TZOFFSETTO:+0200
  993.35 +TZNAME:EET
  993.36 +DTSTART:19101001T000000
  993.37 +RDATE:19101001T000000
  993.38 +END:STANDARD
  993.39 +BEGIN:DAYLIGHT
  993.40 +TZOFFSETFROM:+0200
  993.41 +TZOFFSETTO:+0300
  993.42 +TZNAME:EEST
  993.43 +DTSTART:19160501T000000
  993.44 +RDATE:19160501T000000
  993.45 +RDATE:19200328T000000
  993.46 +RDATE:19210403T000000
  993.47 +RDATE:19220326T000000
  993.48 +RDATE:19240513T000000
  993.49 +RDATE:19250501T000000
  993.50 +RDATE:19400630T000000
  993.51 +RDATE:19401201T000000
  993.52 +RDATE:19420401T000000
  993.53 +RDATE:19450402T000000
  993.54 +RDATE:19460601T000000
  993.55 +RDATE:19470420T000000
  993.56 +RDATE:19480418T000000
  993.57 +RDATE:19490410T000000
  993.58 +RDATE:19500419T000000
  993.59 +RDATE:19510422T000000
  993.60 +RDATE:19620715T000000
  993.61 +RDATE:19640515T000000
  993.62 +RDATE:19700503T000000
  993.63 +RDATE:19710502T000000
  993.64 +RDATE:19720507T000000
  993.65 +RDATE:19730603T010000
  993.66 +RDATE:19740331T020000
  993.67 +RDATE:19750330T000000
  993.68 +RDATE:19760601T000000
  993.69 +RDATE:19770403T000000
  993.70 +RDATE:19780402T000000
  993.71 +RDATE:19860330T020000
  993.72 +RDATE:19870329T020000
  993.73 +RDATE:19880327T020000
  993.74 +RDATE:19890326T020000
  993.75 +RDATE:19900325T020000
  993.76 +RDATE:19910331T010000
  993.77 +RDATE:19920329T010000
  993.78 +RDATE:19930328T010000
  993.79 +RDATE:19940327T010000
  993.80 +RDATE:19950326T010000
  993.81 +RDATE:19960331T010000
  993.82 +RDATE:19970330T010000
  993.83 +RDATE:19980329T010000
  993.84 +RDATE:19990328T010000
  993.85 +RDATE:20000326T010000
  993.86 +RDATE:20010325T010000
  993.87 +RDATE:20020331T010000
  993.88 +RDATE:20030330T010000
  993.89 +RDATE:20040328T010000
  993.90 +RDATE:20050327T010000
  993.91 +RDATE:20060326T010000
  993.92 +RDATE:20070325T030000
  993.93 +RDATE:20080330T030000
  993.94 +RDATE:20090329T030000
  993.95 +RDATE:20100328T030000
  993.96 +RDATE:20110328T030000
  993.97 +END:DAYLIGHT
  993.98 +BEGIN:STANDARD
  993.99 +TZOFFSETFROM:+0300
 993.100 +TZOFFSETTO:+0200
 993.101 +TZNAME:EET
 993.102 +DTSTART:19161001T000000
 993.103 +RDATE:19161001T000000
 993.104 +RDATE:19201025T000000
 993.105 +RDATE:19211003T000000
 993.106 +RDATE:19221008T000000
 993.107 +RDATE:19241001T000000
 993.108 +RDATE:19251001T000000
 993.109 +RDATE:19401005T000000
 993.110 +RDATE:19410921T000000
 993.111 +RDATE:19421101T000000
 993.112 +RDATE:19451008T000000
 993.113 +RDATE:19461001T000000
 993.114 +RDATE:19471005T000000
 993.115 +RDATE:19481003T000000
 993.116 +RDATE:19491002T000000
 993.117 +RDATE:19501008T000000
 993.118 +RDATE:19511008T000000
 993.119 +RDATE:19621008T000000
 993.120 +RDATE:19641001T000000
 993.121 +RDATE:19701004T000000
 993.122 +RDATE:19711003T000000
 993.123 +RDATE:19721008T000000
 993.124 +RDATE:19731104T030000
 993.125 +RDATE:19741103T050000
 993.126 +RDATE:19751026T000000
 993.127 +RDATE:19761031T000000
 993.128 +RDATE:19771016T000000
 993.129 +RDATE:19850928T000000
 993.130 +RDATE:19860928T030000
 993.131 +RDATE:19870927T030000
 993.132 +RDATE:19880925T030000
 993.133 +RDATE:19890924T030000
 993.134 +RDATE:19900930T030000
 993.135 +RDATE:19910929T020000
 993.136 +RDATE:19920927T020000
 993.137 +RDATE:19930926T020000
 993.138 +RDATE:19940925T020000
 993.139 +RDATE:19950924T020000
 993.140 +RDATE:19961027T020000
 993.141 +RDATE:19971026T020000
 993.142 +RDATE:19981025T020000
 993.143 +RDATE:19991031T020000
 993.144 +RDATE:20001029T020000
 993.145 +RDATE:20011028T020000
 993.146 +RDATE:20021027T020000
 993.147 +RDATE:20031026T020000
 993.148 +RDATE:20041031T020000
 993.149 +RDATE:20051030T020000
 993.150 +RDATE:20061029T020000
 993.151 +END:STANDARD
 993.152 +BEGIN:DAYLIGHT
 993.153 +TZOFFSETFROM:+0300
 993.154 +TZOFFSETTO:+0400
 993.155 +TZNAME:TRST
 993.156 +DTSTART:19781015T000000
 993.157 +RDATE:19781015T000000
 993.158 +RDATE:19800406T030000
 993.159 +RDATE:19810329T030000
 993.160 +RDATE:19820328T030000
 993.161 +RDATE:19830731T000000
 993.162 +END:DAYLIGHT
 993.163 +BEGIN:DAYLIGHT
 993.164 +TZOFFSETFROM:+0400
 993.165 +TZOFFSETTO:+0400
 993.166 +TZNAME:TRST
 993.167 +DTSTART:19790401T030000
 993.168 +RDATE:19790401T030000
 993.169 +END:DAYLIGHT
 993.170 +BEGIN:STANDARD
 993.171 +TZOFFSETFROM:+0400
 993.172 +TZOFFSETTO:+0300
 993.173 +TZNAME:TRT
 993.174 +DTSTART:19791015T000000
 993.175 +RDATE:19791015T000000
 993.176 +RDATE:19801013T000000
 993.177 +RDATE:19811012T000000
 993.178 +RDATE:19821011T000000
 993.179 +RDATE:19831002T000000
 993.180 +END:STANDARD
 993.181 +BEGIN:DAYLIGHT
 993.182 +TZOFFSETFROM:+0300
 993.183 +TZOFFSETTO:+0300
 993.184 +TZNAME:EEST
 993.185 +DTSTART:19850420T000000
 993.186 +RDATE:19850420T000000
 993.187 +END:DAYLIGHT
 993.188 +BEGIN:STANDARD
 993.189 +TZOFFSETFROM:+0200
 993.190 +TZOFFSETTO:+0200
 993.191 +TZNAME:EET
 993.192 +DTSTART:20070101T000000
 993.193 +RDATE:20070101T000000
 993.194 +RDATE:20110327T030000
 993.195 +END:STANDARD
 993.196 +END:VTIMEZONE
 993.197 +END:VCALENDAR
   994.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   994.2 +++ b/src/zoneinfo/Europe/Jersey.ics	Tue Feb 10 18:12:00 2015 +0100
   994.3 @@ -0,0 +1,209 @@
   994.4 +BEGIN:VCALENDAR
   994.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   994.6 +VERSION:2.0
   994.7 +BEGIN:VTIMEZONE
   994.8 +TZID:Europe/Jersey
   994.9 +TZURL:http://tzurl.org/zoneinfo/Europe/Jersey
  994.10 +X-LIC-LOCATION:Europe/Jersey
  994.11 +BEGIN:DAYLIGHT
  994.12 +TZOFFSETFROM:+0000
  994.13 +TZOFFSETTO:+0100
  994.14 +TZNAME:BST
  994.15 +DTSTART:19810329T010000
  994.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  994.17 +END:DAYLIGHT
  994.18 +BEGIN:STANDARD
  994.19 +TZOFFSETFROM:+0100
  994.20 +TZOFFSETTO:+0000
  994.21 +TZNAME:GMT
  994.22 +DTSTART:19961027T020000
  994.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  994.24 +END:STANDARD
  994.25 +BEGIN:STANDARD
  994.26 +TZOFFSETFROM:-000115
  994.27 +TZOFFSETTO:+0000
  994.28 +TZNAME:GMT
  994.29 +DTSTART:18471201T000000
  994.30 +RDATE:18471201T000000
  994.31 +END:STANDARD
  994.32 +BEGIN:DAYLIGHT
  994.33 +TZOFFSETFROM:+0000
  994.34 +TZOFFSETTO:+0100
  994.35 +TZNAME:BST
  994.36 +DTSTART:19160521T020000
  994.37 +RDATE:19160521T020000
  994.38 +RDATE:19170408T020000
  994.39 +RDATE:19180324T020000
  994.40 +RDATE:19190330T020000
  994.41 +RDATE:19200328T020000
  994.42 +RDATE:19210403T020000
  994.43 +RDATE:19220326T020000
  994.44 +RDATE:19230422T020000
  994.45 +RDATE:19240413T020000
  994.46 +RDATE:19250419T020000
  994.47 +RDATE:19260418T020000
  994.48 +RDATE:19270410T020000
  994.49 +RDATE:19280422T020000
  994.50 +RDATE:19290421T020000
  994.51 +RDATE:19300413T020000
  994.52 +RDATE:19310419T020000
  994.53 +RDATE:19320417T020000
  994.54 +RDATE:19330409T020000
  994.55 +RDATE:19340422T020000
  994.56 +RDATE:19350414T020000
  994.57 +RDATE:19360419T020000
  994.58 +RDATE:19370418T020000
  994.59 +RDATE:19380410T020000
  994.60 +RDATE:19390416T020000
  994.61 +RDATE:19400225T020000
  994.62 +RDATE:19460414T020000
  994.63 +RDATE:19470316T020000
  994.64 +RDATE:19480314T020000
  994.65 +RDATE:19490403T020000
  994.66 +RDATE:19500416T020000
  994.67 +RDATE:19510415T020000
  994.68 +RDATE:19520420T020000
  994.69 +RDATE:19530419T020000
  994.70 +RDATE:19540411T020000
  994.71 +RDATE:19550417T020000
  994.72 +RDATE:19560422T020000
  994.73 +RDATE:19570414T020000
  994.74 +RDATE:19580420T020000
  994.75 +RDATE:19590419T020000
  994.76 +RDATE:19600410T020000
  994.77 +RDATE:19610326T020000
  994.78 +RDATE:19620325T020000
  994.79 +RDATE:19630331T020000
  994.80 +RDATE:19640322T020000
  994.81 +RDATE:19650321T020000
  994.82 +RDATE:19660320T020000
  994.83 +RDATE:19670319T020000
  994.84 +RDATE:19680218T020000
  994.85 +RDATE:19720319T020000
  994.86 +RDATE:19730318T020000
  994.87 +RDATE:19740317T020000
  994.88 +RDATE:19750316T020000
  994.89 +RDATE:19760321T020000
  994.90 +RDATE:19770320T020000
  994.91 +RDATE:19780319T020000
  994.92 +RDATE:19790318T020000
  994.93 +RDATE:19800316T020000
  994.94 +END:DAYLIGHT
  994.95 +BEGIN:STANDARD
  994.96 +TZOFFSETFROM:+0100
  994.97 +TZOFFSETTO:+0000
  994.98 +TZNAME:GMT
  994.99 +DTSTART:19161001T030000
 994.100 +RDATE:19161001T030000
 994.101 +RDATE:19170917T030000
 994.102 +RDATE:19180930T030000
 994.103 +RDATE:19190929T030000
 994.104 +RDATE:19201025T030000
 994.105 +RDATE:19211003T030000
 994.106 +RDATE:19221008T030000
 994.107 +RDATE:19230916T030000
 994.108 +RDATE:19240921T030000
 994.109 +RDATE:19251004T030000
 994.110 +RDATE:19261003T030000
 994.111 +RDATE:19271002T030000
 994.112 +RDATE:19281007T030000
 994.113 +RDATE:19291006T030000
 994.114 +RDATE:19301005T030000
 994.115 +RDATE:19311004T030000
 994.116 +RDATE:19321002T030000
 994.117 +RDATE:19331008T030000
 994.118 +RDATE:19341007T030000
 994.119 +RDATE:19351006T030000
 994.120 +RDATE:19361004T030000
 994.121 +RDATE:19371003T030000
 994.122 +RDATE:19381002T030000
 994.123 +RDATE:19391119T030000
 994.124 +RDATE:19451007T030000
 994.125 +RDATE:19461006T030000
 994.126 +RDATE:19471102T030000
 994.127 +RDATE:19481031T030000
 994.128 +RDATE:19491030T030000
 994.129 +RDATE:19501022T030000
 994.130 +RDATE:19511021T030000
 994.131 +RDATE:19521026T030000
 994.132 +RDATE:19531004T030000
 994.133 +RDATE:19541003T030000
 994.134 +RDATE:19551002T030000
 994.135 +RDATE:19561007T030000
 994.136 +RDATE:19571006T030000
 994.137 +RDATE:19581005T030000
 994.138 +RDATE:19591004T030000
 994.139 +RDATE:19601002T030000
 994.140 +RDATE:19611029T030000
 994.141 +RDATE:19621028T030000
 994.142 +RDATE:19631027T030000
 994.143 +RDATE:19641025T030000
 994.144 +RDATE:19651024T030000
 994.145 +RDATE:19661023T030000
 994.146 +RDATE:19671029T030000
 994.147 +RDATE:19711031T030000
 994.148 +RDATE:19721029T030000
 994.149 +RDATE:19731028T030000
 994.150 +RDATE:19741027T030000
 994.151 +RDATE:19751026T030000
 994.152 +RDATE:19761024T030000
 994.153 +RDATE:19771023T030000
 994.154 +RDATE:19781029T030000
 994.155 +RDATE:19791028T030000
 994.156 +RDATE:19801026T030000
 994.157 +RDATE:19811025T020000
 994.158 +RDATE:19821024T020000
 994.159 +RDATE:19831023T020000
 994.160 +RDATE:19841028T020000
 994.161 +RDATE:19851027T020000
 994.162 +RDATE:19861026T020000
 994.163 +RDATE:19871025T020000
 994.164 +RDATE:19881023T020000
 994.165 +RDATE:19891029T020000
 994.166 +RDATE:19901028T020000
 994.167 +RDATE:19911027T020000
 994.168 +RDATE:19921025T020000
 994.169 +RDATE:19931024T020000
 994.170 +RDATE:19941023T020000
 994.171 +RDATE:19951022T020000
 994.172 +END:STANDARD
 994.173 +BEGIN:DAYLIGHT
 994.174 +TZOFFSETFROM:+0100
 994.175 +TZOFFSETTO:+0200
 994.176 +TZNAME:BDST
 994.177 +DTSTART:19410504T020000
 994.178 +RDATE:19410504T020000
 994.179 +RDATE:19420405T020000
 994.180 +RDATE:19430404T020000
 994.181 +RDATE:19440402T020000
 994.182 +RDATE:19450402T020000
 994.183 +RDATE:19470413T020000
 994.184 +END:DAYLIGHT
 994.185 +BEGIN:DAYLIGHT
 994.186 +TZOFFSETFROM:+0200
 994.187 +TZOFFSETTO:+0100
 994.188 +TZNAME:BST
 994.189 +DTSTART:19410810T030000
 994.190 +RDATE:19410810T030000
 994.191 +RDATE:19420809T030000
 994.192 +RDATE:19430815T030000
 994.193 +RDATE:19440917T030000
 994.194 +RDATE:19450715T030000
 994.195 +RDATE:19470810T030000
 994.196 +END:DAYLIGHT
 994.197 +BEGIN:STANDARD
 994.198 +TZOFFSETFROM:+0100
 994.199 +TZOFFSETTO:+0100
 994.200 +TZNAME:BST
 994.201 +DTSTART:19681027T000000
 994.202 +RDATE:19681027T000000
 994.203 +END:STANDARD
 994.204 +BEGIN:STANDARD
 994.205 +TZOFFSETFROM:+0000
 994.206 +TZOFFSETTO:+0000
 994.207 +TZNAME:GMT
 994.208 +DTSTART:19960101T000000
 994.209 +RDATE:19960101T000000
 994.210 +END:STANDARD
 994.211 +END:VTIMEZONE
 994.212 +END:VCALENDAR
   995.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   995.2 +++ b/src/zoneinfo/Europe/Kaliningrad.ics	Tue Feb 10 18:12:00 2015 +0100
   995.3 @@ -0,0 +1,165 @@
   995.4 +BEGIN:VCALENDAR
   995.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   995.6 +VERSION:2.0
   995.7 +BEGIN:VTIMEZONE
   995.8 +TZID:Europe/Kaliningrad
   995.9 +TZURL:http://tzurl.org/zoneinfo/Europe/Kaliningrad
  995.10 +X-LIC-LOCATION:Europe/Kaliningrad
  995.11 +BEGIN:STANDARD
  995.12 +TZOFFSETFROM:+0122
  995.13 +TZOFFSETTO:+0100
  995.14 +TZNAME:CET
  995.15 +DTSTART:18930401T000000
  995.16 +RDATE:18930401T000000
  995.17 +END:STANDARD
  995.18 +BEGIN:DAYLIGHT
  995.19 +TZOFFSETFROM:+0100
  995.20 +TZOFFSETTO:+0200
  995.21 +TZNAME:CEST
  995.22 +DTSTART:19160430T230000
  995.23 +RDATE:19160430T230000
  995.24 +RDATE:19170416T020000
  995.25 +RDATE:19180415T020000
  995.26 +RDATE:19400401T020000
  995.27 +RDATE:19430329T020000
  995.28 +RDATE:19440403T020000
  995.29 +END:DAYLIGHT
  995.30 +BEGIN:STANDARD
  995.31 +TZOFFSETFROM:+0200
  995.32 +TZOFFSETTO:+0100
  995.33 +TZNAME:CET
  995.34 +DTSTART:19161001T010000
  995.35 +RDATE:19161001T010000
  995.36 +RDATE:19170917T030000
  995.37 +RDATE:19180916T030000
  995.38 +RDATE:19421102T030000
  995.39 +RDATE:19431004T030000
  995.40 +RDATE:19441002T030000
  995.41 +END:STANDARD
  995.42 +BEGIN:STANDARD
  995.43 +TZOFFSETFROM:+0100
  995.44 +TZOFFSETTO:+0200
  995.45 +TZNAME:CET
  995.46 +DTSTART:19450101T000000
  995.47 +RDATE:19450101T000000
  995.48 +END:STANDARD
  995.49 +BEGIN:DAYLIGHT
  995.50 +TZOFFSETFROM:+0200
  995.51 +TZOFFSETTO:+0300
  995.52 +TZNAME:CEST
  995.53 +DTSTART:19450429T000000
  995.54 +RDATE:19450429T000000
  995.55 +END:DAYLIGHT
  995.56 +BEGIN:STANDARD
  995.57 +TZOFFSETFROM:+0300
  995.58 +TZOFFSETTO:+0200
  995.59 +TZNAME:CET
  995.60 +DTSTART:19451101T000000
  995.61 +RDATE:19451101T000000
  995.62 +END:STANDARD
  995.63 +BEGIN:STANDARD
  995.64 +TZOFFSETFROM:+0200
  995.65 +TZOFFSETTO:+0300
  995.66 +TZNAME:MSK
  995.67 +DTSTART:19460101T000000
  995.68 +RDATE:19460101T000000
  995.69 +END:STANDARD
  995.70 +BEGIN:DAYLIGHT
  995.71 +TZOFFSETFROM:+0300
  995.72 +TZOFFSETTO:+0400
  995.73 +TZNAME:MSD
  995.74 +DTSTART:19810401T000000
  995.75 +RDATE:19810401T000000
  995.76 +RDATE:19820401T000000
  995.77 +RDATE:19830401T000000
  995.78 +RDATE:19840401T000000
  995.79 +RDATE:19850331T020000
  995.80 +RDATE:19860330T020000
  995.81 +RDATE:19870329T020000
  995.82 +RDATE:19880327T020000
  995.83 +RDATE:19890326T020000
  995.84 +RDATE:19900325T020000
  995.85 +END:DAYLIGHT
  995.86 +BEGIN:STANDARD
  995.87 +TZOFFSETFROM:+0400
  995.88 +TZOFFSETTO:+0300
  995.89 +TZNAME:MSK
  995.90 +DTSTART:19811001T000000
  995.91 +RDATE:19811001T000000
  995.92 +RDATE:19821001T000000
  995.93 +RDATE:19831001T000000
  995.94 +RDATE:19840930T030000
  995.95 +RDATE:19850929T030000
  995.96 +RDATE:19860928T030000
  995.97 +RDATE:19870927T030000
  995.98 +RDATE:19880925T030000
  995.99 +RDATE:19890924T030000
 995.100 +RDATE:19900930T030000
 995.101 +END:STANDARD
 995.102 +BEGIN:DAYLIGHT
 995.103 +TZOFFSETFROM:+0300
 995.104 +TZOFFSETTO:+0300
 995.105 +TZNAME:EEST
 995.106 +DTSTART:19910331T020000
 995.107 +RDATE:19910331T020000
 995.108 +END:DAYLIGHT
 995.109 +BEGIN:STANDARD
 995.110 +TZOFFSETFROM:+0300
 995.111 +TZOFFSETTO:+0200
 995.112 +TZNAME:EET
 995.113 +DTSTART:19910929T030000
 995.114 +RDATE:19910929T030000
 995.115 +RDATE:19920926T230000
 995.116 +RDATE:19930926T030000
 995.117 +RDATE:19940925T030000
 995.118 +RDATE:19950924T030000
 995.119 +RDATE:19961027T030000
 995.120 +RDATE:19971026T030000
 995.121 +RDATE:19981025T030000
 995.122 +RDATE:19991031T030000
 995.123 +RDATE:20001029T030000
 995.124 +RDATE:20011028T030000
 995.125 +RDATE:20021027T030000
 995.126 +RDATE:20031026T030000
 995.127 +RDATE:20041031T030000
 995.128 +RDATE:20051030T030000
 995.129 +RDATE:20061029T030000
 995.130 +RDATE:20071028T030000
 995.131 +RDATE:20081026T030000
 995.132 +RDATE:20091025T030000
 995.133 +RDATE:20101031T030000
 995.134 +END:STANDARD
 995.135 +BEGIN:DAYLIGHT
 995.136 +TZOFFSETFROM:+0200
 995.137 +TZOFFSETTO:+0300
 995.138 +TZNAME:EEST
 995.139 +DTSTART:19920328T230000
 995.140 +RDATE:19920328T230000
 995.141 +RDATE:19930328T020000
 995.142 +RDATE:19940327T020000
 995.143 +RDATE:19950326T020000
 995.144 +RDATE:19960331T020000
 995.145 +RDATE:19970330T020000
 995.146 +RDATE:19980329T020000
 995.147 +RDATE:19990328T020000
 995.148 +RDATE:20000326T020000
 995.149 +RDATE:20010325T020000
 995.150 +RDATE:20020331T020000
 995.151 +RDATE:20030330T020000
 995.152 +RDATE:20040328T020000
 995.153 +RDATE:20050327T020000
 995.154 +RDATE:20060326T020000
 995.155 +RDATE:20070325T020000
 995.156 +RDATE:20080330T020000
 995.157 +RDATE:20090329T020000
 995.158 +RDATE:20100328T020000
 995.159 +END:DAYLIGHT
 995.160 +BEGIN:STANDARD
 995.161 +TZOFFSETFROM:+0200
 995.162 +TZOFFSETTO:+0300
 995.163 +TZNAME:FET
 995.164 +DTSTART:20110327T020000
 995.165 +RDATE:20110327T020000
 995.166 +END:STANDARD
 995.167 +END:VTIMEZONE
 995.168 +END:VCALENDAR
   996.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   996.2 +++ b/src/zoneinfo/Europe/Kiev.ics	Tue Feb 10 18:12:00 2015 +0100
   996.3 @@ -0,0 +1,138 @@
   996.4 +BEGIN:VCALENDAR
   996.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   996.6 +VERSION:2.0
   996.7 +BEGIN:VTIMEZONE
   996.8 +TZID:Europe/Kiev
   996.9 +TZURL:http://tzurl.org/zoneinfo/Europe/Kiev
  996.10 +X-LIC-LOCATION:Europe/Kiev
  996.11 +BEGIN:DAYLIGHT
  996.12 +TZOFFSETFROM:+0200
  996.13 +TZOFFSETTO:+0300
  996.14 +TZNAME:EEST
  996.15 +DTSTART:19950326T030000
  996.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  996.17 +END:DAYLIGHT
  996.18 +BEGIN:STANDARD
  996.19 +TZOFFSETFROM:+0300
  996.20 +TZOFFSETTO:+0200
  996.21 +TZNAME:EET
  996.22 +DTSTART:19961027T040000
  996.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  996.24 +END:STANDARD
  996.25 +BEGIN:STANDARD
  996.26 +TZOFFSETFROM:+020204
  996.27 +TZOFFSETTO:+020204
  996.28 +TZNAME:KMT
  996.29 +DTSTART:18800101T000000
  996.30 +RDATE:18800101T000000
  996.31 +END:STANDARD
  996.32 +BEGIN:STANDARD
  996.33 +TZOFFSETFROM:+020204
  996.34 +TZOFFSETTO:+0200
  996.35 +TZNAME:EET
  996.36 +DTSTART:19240502T000000
  996.37 +RDATE:19240502T000000
  996.38 +END:STANDARD
  996.39 +BEGIN:STANDARD
  996.40 +TZOFFSETFROM:+0200
  996.41 +TZOFFSETTO:+0300
  996.42 +TZNAME:MSK
  996.43 +DTSTART:19300621T000000
  996.44 +RDATE:19300621T000000
  996.45 +END:STANDARD
  996.46 +BEGIN:DAYLIGHT
  996.47 +TZOFFSETFROM:+0300
  996.48 +TZOFFSETTO:+0200
  996.49 +TZNAME:CEST
  996.50 +DTSTART:19410920T000000
  996.51 +RDATE:19410920T000000
  996.52 +END:DAYLIGHT
  996.53 +BEGIN:STANDARD
  996.54 +TZOFFSETFROM:+0200
  996.55 +TZOFFSETTO:+0100
  996.56 +TZNAME:CET
  996.57 +DTSTART:19421102T030000
  996.58 +RDATE:19421102T030000
  996.59 +RDATE:19431004T030000
  996.60 +END:STANDARD
  996.61 +BEGIN:DAYLIGHT
  996.62 +TZOFFSETFROM:+0100
  996.63 +TZOFFSETTO:+0200
  996.64 +TZNAME:CEST
  996.65 +DTSTART:19430329T020000
  996.66 +RDATE:19430329T020000
  996.67 +END:DAYLIGHT
  996.68 +BEGIN:STANDARD
  996.69 +TZOFFSETFROM:+0100
  996.70 +TZOFFSETTO:+0300
  996.71 +TZNAME:MSK
  996.72 +DTSTART:19431106T000000
  996.73 +RDATE:19431106T000000
  996.74 +END:STANDARD
  996.75 +BEGIN:DAYLIGHT
  996.76 +TZOFFSETFROM:+0300
  996.77 +TZOFFSETTO:+0400
  996.78 +TZNAME:MSD
  996.79 +DTSTART:19810401T000000
  996.80 +RDATE:19810401T000000
  996.81 +RDATE:19820401T000000
  996.82 +RDATE:19830401T000000
  996.83 +RDATE:19840401T000000
  996.84 +RDATE:19850331T020000
  996.85 +RDATE:19860330T020000
  996.86 +RDATE:19870329T020000
  996.87 +RDATE:19880327T020000
  996.88 +RDATE:19890326T020000
  996.89 +END:DAYLIGHT
  996.90 +BEGIN:STANDARD
  996.91 +TZOFFSETFROM:+0400
  996.92 +TZOFFSETTO:+0300
  996.93 +TZNAME:MSK
  996.94 +DTSTART:19811001T000000
  996.95 +RDATE:19811001T000000
  996.96 +RDATE:19821001T000000
  996.97 +RDATE:19831001T000000
  996.98 +RDATE:19840930T030000
  996.99 +RDATE:19850929T030000
 996.100 +RDATE:19860928T030000
 996.101 +RDATE:19870927T030000
 996.102 +RDATE:19880925T030000
 996.103 +RDATE:19890924T030000
 996.104 +END:STANDARD
 996.105 +BEGIN:STANDARD
 996.106 +TZOFFSETFROM:+0300
 996.107 +TZOFFSETTO:+0300
 996.108 +TZNAME:MSK
 996.109 +DTSTART:19900101T000000
 996.110 +RDATE:19900101T000000
 996.111 +END:STANDARD
 996.112 +BEGIN:STANDARD
 996.113 +TZOFFSETFROM:+0300
 996.114 +TZOFFSETTO:+0200
 996.115 +TZNAME:EET
 996.116 +DTSTART:19900701T020000
 996.117 +RDATE:19900701T020000
 996.118 +RDATE:19920927T000000
 996.119 +RDATE:19930926T000000
 996.120 +RDATE:19940925T000000
 996.121 +RDATE:19950924T040000
 996.122 +END:STANDARD
 996.123 +BEGIN:STANDARD
 996.124 +TZOFFSETFROM:+0200
 996.125 +TZOFFSETTO:+0200
 996.126 +TZNAME:EET
 996.127 +DTSTART:19920101T000000
 996.128 +RDATE:19920101T000000
 996.129 +RDATE:19950101T000000
 996.130 +END:STANDARD
 996.131 +BEGIN:DAYLIGHT
 996.132 +TZOFFSETFROM:+0200
 996.133 +TZOFFSETTO:+0300
 996.134 +TZNAME:EEST
 996.135 +DTSTART:19920329T000000
 996.136 +RDATE:19920329T000000
 996.137 +RDATE:19930328T000000
 996.138 +RDATE:19940327T000000
 996.139 +END:DAYLIGHT
 996.140 +END:VTIMEZONE
 996.141 +END:VCALENDAR
   997.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   997.2 +++ b/src/zoneinfo/Europe/Lisbon.ics	Tue Feb 10 18:12:00 2015 +0100
   997.3 @@ -0,0 +1,228 @@
   997.4 +BEGIN:VCALENDAR
   997.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   997.6 +VERSION:2.0
   997.7 +BEGIN:VTIMEZONE
   997.8 +TZID:Europe/Lisbon
   997.9 +TZURL:http://tzurl.org/zoneinfo/Europe/Lisbon
  997.10 +X-LIC-LOCATION:Europe/Lisbon
  997.11 +BEGIN:STANDARD
  997.12 +TZOFFSETFROM:+0100
  997.13 +TZOFFSETTO:+0000
  997.14 +TZNAME:WET
  997.15 +DTSTART:19961027T020000
  997.16 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  997.17 +END:STANDARD
  997.18 +BEGIN:DAYLIGHT
  997.19 +TZOFFSETFROM:+0000
  997.20 +TZOFFSETTO:+0100
  997.21 +TZNAME:WEST
  997.22 +DTSTART:19970330T010000
  997.23 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  997.24 +END:DAYLIGHT
  997.25 +BEGIN:STANDARD
  997.26 +TZOFFSETFROM:-003632
  997.27 +TZOFFSETTO:-003632
  997.28 +TZNAME:LMT
  997.29 +DTSTART:18840101T000000
  997.30 +RDATE:18840101T000000
  997.31 +END:STANDARD
  997.32 +BEGIN:STANDARD
  997.33 +TZOFFSETFROM:-003632
  997.34 +TZOFFSETTO:+0000
  997.35 +TZNAME:WET
  997.36 +DTSTART:19120101T000000
  997.37 +RDATE:19120101T000000
  997.38 +END:STANDARD
  997.39 +BEGIN:DAYLIGHT
  997.40 +TZOFFSETFROM:+0000
  997.41 +TZOFFSETTO:+0100
  997.42 +TZNAME:WEST
  997.43 +DTSTART:19160617T230000
  997.44 +RDATE:19160617T230000
  997.45 +RDATE:19170228T230000
  997.46 +RDATE:19180301T230000
  997.47 +RDATE:19190228T230000
  997.48 +RDATE:19200229T230000
  997.49 +RDATE:19210228T230000
  997.50 +RDATE:19240416T230000
  997.51 +RDATE:19260417T230000
  997.52 +RDATE:19270409T230000
  997.53 +RDATE:19280414T230000
  997.54 +RDATE:19290420T230000
  997.55 +RDATE:19310418T230000
  997.56 +RDATE:19320402T230000
  997.57 +RDATE:19340407T230000
  997.58 +RDATE:19350330T230000
  997.59 +RDATE:19360418T230000
  997.60 +RDATE:19370403T230000
  997.61 +RDATE:19380326T230000
  997.62 +RDATE:19390415T230000
  997.63 +RDATE:19400224T230000
  997.64 +RDATE:19410405T230000
  997.65 +RDATE:19420314T230000
  997.66 +RDATE:19430313T230000
  997.67 +RDATE:19440311T230000
  997.68 +RDATE:19450310T230000
  997.69 +RDATE:19460406T230000
  997.70 +RDATE:19470406T020000
  997.71 +RDATE:19480404T020000
  997.72 +RDATE:19490403T020000
  997.73 +RDATE:19510401T020000
  997.74 +RDATE:19520406T020000
  997.75 +RDATE:19530405T020000
  997.76 +RDATE:19540404T020000
  997.77 +RDATE:19550403T020000
  997.78 +RDATE:19560401T020000
  997.79 +RDATE:19570407T020000
  997.80 +RDATE:19580406T020000
  997.81 +RDATE:19590405T020000
  997.82 +RDATE:19600403T020000
  997.83 +RDATE:19610402T020000
  997.84 +RDATE:19620401T020000
  997.85 +RDATE:19630407T020000
  997.86 +RDATE:19640405T020000
  997.87 +RDATE:19650404T020000
  997.88 +RDATE:19770327T000000
  997.89 +RDATE:19780402T000000
  997.90 +RDATE:19790401T000000
  997.91 +RDATE:19800330T000000
  997.92 +RDATE:19810329T010000
  997.93 +RDATE:19820328T010000
  997.94 +RDATE:19830327T020000
  997.95 +RDATE:19840325T010000
  997.96 +RDATE:19850331T010000
  997.97 +RDATE:19860330T010000
  997.98 +RDATE:19870329T010000
  997.99 +RDATE:19880327T010000
 997.100 +RDATE:19890326T010000
 997.101 +RDATE:19900325T010000
 997.102 +RDATE:19910331T010000
 997.103 +RDATE:19920329T010000
 997.104 +END:DAYLIGHT
 997.105 +BEGIN:STANDARD
 997.106 +TZOFFSETFROM:+0100
 997.107 +TZOFFSETTO:+0000
 997.108 +TZNAME:WET
 997.109 +DTSTART:19161101T010000
 997.110 +RDATE:19161101T010000
 997.111 +RDATE:19171015T000000
 997.112 +RDATE:19181015T000000
 997.113 +RDATE:19191015T000000
 997.114 +RDATE:19201015T000000
 997.115 +RDATE:19211015T000000
 997.116 +RDATE:19241015T000000
 997.117 +RDATE:19261003T000000
 997.118 +RDATE:19271002T000000
 997.119 +RDATE:19281007T000000
 997.120 +RDATE:19291006T000000
 997.121 +RDATE:19311004T000000
 997.122 +RDATE:19321002T000000
 997.123 +RDATE:19341007T000000
 997.124 +RDATE:19351006T000000
 997.125 +RDATE:19361004T000000
 997.126 +RDATE:19371003T000000
 997.127 +RDATE:19381002T000000
 997.128 +RDATE:19391119T000000
 997.129 +RDATE:19401006T000000
 997.130 +RDATE:19411006T000000
 997.131 +RDATE:19421025T000000
 997.132 +RDATE:19431031T000000
 997.133 +RDATE:19441029T000000
 997.134 +RDATE:19451028T000000
 997.135 +RDATE:19461006T000000
 997.136 +RDATE:19471005T030000
 997.137 +RDATE:19481003T030000
 997.138 +RDATE:19491002T030000
 997.139 +RDATE:19511007T030000
 997.140 +RDATE:19521005T030000
 997.141 +RDATE:19531004T030000
 997.142 +RDATE:19541003T030000
 997.143 +RDATE:19551002T030000
 997.144 +RDATE:19561007T030000
 997.145 +RDATE:19571006T030000
 997.146 +RDATE:19581005T030000
 997.147 +RDATE:19591004T030000
 997.148 +RDATE:19601002T030000
 997.149 +RDATE:19611001T030000
 997.150 +RDATE:19621007T030000
 997.151 +RDATE:19631006T030000
 997.152 +RDATE:19641004T030000
 997.153 +RDATE:19651003T030000
 997.154 +RDATE:19760926T010000
 997.155 +RDATE:19770925T010000
 997.156 +RDATE:19781001T010000
 997.157 +RDATE:19790930T020000
 997.158 +RDATE:19800928T020000
 997.159 +RDATE:19810927T020000
 997.160 +RDATE:19820926T020000
 997.161 +RDATE:19830925T020000
 997.162 +RDATE:19840930T020000
 997.163 +RDATE:19850929T020000
 997.164 +RDATE:19860928T020000
 997.165 +RDATE:19870927T020000
 997.166 +RDATE:19880925T020000
 997.167 +RDATE:19890924T020000
 997.168 +RDATE:19900930T020000
 997.169 +RDATE:19910929T020000
 997.170 +END:STANDARD
 997.171 +BEGIN:DAYLIGHT
 997.172 +TZOFFSETFROM:+0100
 997.173 +TZOFFSETTO:+0200
 997.174 +TZNAME:WEMT
 997.175 +DTSTART:19420425T230000
 997.176 +RDATE:19420425T230000
 997.177 +RDATE:19430417T230000
 997.178 +RDATE:19440422T230000
 997.179 +RDATE:19450421T230000
 997.180 +END:DAYLIGHT
 997.181 +BEGIN:DAYLIGHT
 997.182 +TZOFFSETFROM:+0200
 997.183 +TZOFFSETTO:+0100
 997.184 +TZNAME:WEST
 997.185 +DTSTART:19420816T000000
 997.186 +RDATE:19420816T000000
 997.187 +RDATE:19430829T000000
 997.188 +RDATE:19440827T000000
 997.189 +RDATE:19450826T000000
 997.190 +END:DAYLIGHT
 997.191 +BEGIN:STANDARD
 997.192 +TZOFFSETFROM:+0000
 997.193 +TZOFFSETTO:+0100
 997.194 +TZNAME:CET
 997.195 +DTSTART:19660403T020000
 997.196 +RDATE:19660403T020000
 997.197 +END:STANDARD
 997.198 +BEGIN:STANDARD
 997.199 +TZOFFSETFROM:+0100
 997.200 +TZOFFSETTO:+0100
 997.201 +TZNAME:CET
 997.202 +DTSTART:19920927T020000
 997.203 +RDATE:19920927T020000
 997.204 +END:STANDARD
 997.205 +BEGIN:DAYLIGHT
 997.206 +TZOFFSETFROM:+0100
 997.207 +TZOFFSETTO:+0200
 997.208 +TZNAME:CEST
 997.209 +DTSTART:19930328T020000
 997.210 +RDATE:19930328T020000
 997.211 +RDATE:19940327T020000
 997.212 +RDATE:19950326T020000
 997.213 +END:DAYLIGHT
 997.214 +BEGIN:STANDARD
 997.215 +TZOFFSETFROM:+0200
 997.216 +TZOFFSETTO:+0100
 997.217 +TZNAME:CET
 997.218 +DTSTART:19930926T030000
 997.219 +RDATE:19930926T030000
 997.220 +RDATE:19940925T030000
 997.221 +RDATE:19950924T030000
 997.222 +END:STANDARD
 997.223 +BEGIN:DAYLIGHT
 997.224 +TZOFFSETFROM:+0100
 997.225 +TZOFFSETTO:+0100
 997.226 +TZNAME:WEST
 997.227 +DTSTART:19960331T020000
 997.228 +RDATE:19960331T020000
 997.229 +END:DAYLIGHT
 997.230 +END:VTIMEZONE
 997.231 +END:VCALENDAR
   998.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   998.2 +++ b/src/zoneinfo/Europe/Ljubljana.ics	Tue Feb 10 18:12:00 2015 +0100
   998.3 @@ -0,0 +1,71 @@
   998.4 +BEGIN:VCALENDAR
   998.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   998.6 +VERSION:2.0
   998.7 +BEGIN:VTIMEZONE
   998.8 +TZID:Europe/Ljubljana
   998.9 +TZURL:http://tzurl.org/zoneinfo/Europe/Ljubljana
  998.10 +X-LIC-LOCATION:Europe/Ljubljana
  998.11 +BEGIN:DAYLIGHT
  998.12 +TZOFFSETFROM:+0100
  998.13 +TZOFFSETTO:+0200
  998.14 +TZNAME:CEST
  998.15 +DTSTART:19830327T020000
  998.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  998.17 +END:DAYLIGHT
  998.18 +BEGIN:STANDARD
  998.19 +TZOFFSETFROM:+0200
  998.20 +TZOFFSETTO:+0100
  998.21 +TZNAME:CET
  998.22 +DTSTART:19961027T030000
  998.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  998.24 +END:STANDARD
  998.25 +BEGIN:STANDARD
  998.26 +TZOFFSETFROM:+0122
  998.27 +TZOFFSETTO:+0100
  998.28 +TZNAME:CET
  998.29 +DTSTART:18840101T000000
  998.30 +RDATE:18840101T000000
  998.31 +END:STANDARD
  998.32 +BEGIN:DAYLIGHT
  998.33 +TZOFFSETFROM:+0100
  998.34 +TZOFFSETTO:+0200
  998.35 +TZNAME:CEST
  998.36 +DTSTART:19410418T230000
  998.37 +RDATE:19410418T230000
  998.38 +RDATE:19430329T020000
  998.39 +RDATE:19440403T020000
  998.40 +RDATE:19450508T020000
  998.41 +END:DAYLIGHT
  998.42 +BEGIN:STANDARD
  998.43 +TZOFFSETFROM:+0200
  998.44 +TZOFFSETTO:+0100
  998.45 +TZNAME:CET
  998.46 +DTSTART:19421102T030000
  998.47 +RDATE:19421102T030000
  998.48 +RDATE:19431004T030000
  998.49 +RDATE:19441002T030000
  998.50 +RDATE:19450916T030000
  998.51 +RDATE:19830925T030000
  998.52 +RDATE:19840930T030000
  998.53 +RDATE:19850929T030000
  998.54 +RDATE:19860928T030000
  998.55 +RDATE:19870927T030000
  998.56 +RDATE:19880925T030000
  998.57 +RDATE:19890924T030000
  998.58 +RDATE:19900930T030000
  998.59 +RDATE:19910929T030000
  998.60 +RDATE:19920927T030000
  998.61 +RDATE:19930926T030000
  998.62 +RDATE:19940925T030000
  998.63 +RDATE:19950924T030000
  998.64 +END:STANDARD
  998.65 +BEGIN:STANDARD
  998.66 +TZOFFSETFROM:+0100
  998.67 +TZOFFSETTO:+0100
  998.68 +TZNAME:CET
  998.69 +DTSTART:19450101T000000
  998.70 +RDATE:19450101T000000
  998.71 +RDATE:19821127T000000
  998.72 +END:STANDARD
  998.73 +END:VTIMEZONE
  998.74 +END:VCALENDAR
   999.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   999.2 +++ b/src/zoneinfo/Europe/London.ics	Tue Feb 10 18:12:00 2015 +0100
   999.3 @@ -0,0 +1,209 @@
   999.4 +BEGIN:VCALENDAR
   999.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
   999.6 +VERSION:2.0
   999.7 +BEGIN:VTIMEZONE
   999.8 +TZID:Europe/London
   999.9 +TZURL:http://tzurl.org/zoneinfo/Europe/London
  999.10 +X-LIC-LOCATION:Europe/London
  999.11 +BEGIN:DAYLIGHT
  999.12 +TZOFFSETFROM:+0000
  999.13 +TZOFFSETTO:+0100
  999.14 +TZNAME:BST
  999.15 +DTSTART:19810329T010000
  999.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
  999.17 +END:DAYLIGHT
  999.18 +BEGIN:STANDARD
  999.19 +TZOFFSETFROM:+0100
  999.20 +TZOFFSETTO:+0000
  999.21 +TZNAME:GMT
  999.22 +DTSTART:19961027T020000
  999.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
  999.24 +END:STANDARD
  999.25 +BEGIN:STANDARD
  999.26 +TZOFFSETFROM:-000115
  999.27 +TZOFFSETTO:+0000
  999.28 +TZNAME:GMT
  999.29 +DTSTART:18471201T000000
  999.30 +RDATE:18471201T000000
  999.31 +END:STANDARD
  999.32 +BEGIN:DAYLIGHT
  999.33 +TZOFFSETFROM:+0000
  999.34 +TZOFFSETTO:+0100
  999.35 +TZNAME:BST
  999.36 +DTSTART:19160521T020000
  999.37 +RDATE:19160521T020000
  999.38 +RDATE:19170408T020000
  999.39 +RDATE:19180324T020000
  999.40 +RDATE:19190330T020000
  999.41 +RDATE:19200328T020000
  999.42 +RDATE:19210403T020000
  999.43 +RDATE:19220326T020000
  999.44 +RDATE:19230422T020000
  999.45 +RDATE:19240413T020000
  999.46 +RDATE:19250419T020000
  999.47 +RDATE:19260418T020000
  999.48 +RDATE:19270410T020000
  999.49 +RDATE:19280422T020000
  999.50 +RDATE:19290421T020000
  999.51 +RDATE:19300413T020000
  999.52 +RDATE:19310419T020000
  999.53 +RDATE:19320417T020000
  999.54 +RDATE:19330409T020000
  999.55 +RDATE:19340422T020000
  999.56 +RDATE:19350414T020000
  999.57 +RDATE:19360419T020000
  999.58 +RDATE:19370418T020000
  999.59 +RDATE:19380410T020000
  999.60 +RDATE:19390416T020000
  999.61 +RDATE:19400225T020000
  999.62 +RDATE:19460414T020000
  999.63 +RDATE:19470316T020000
  999.64 +RDATE:19480314T020000
  999.65 +RDATE:19490403T020000
  999.66 +RDATE:19500416T020000
  999.67 +RDATE:19510415T020000
  999.68 +RDATE:19520420T020000
  999.69 +RDATE:19530419T020000
  999.70 +RDATE:19540411T020000
  999.71 +RDATE:19550417T020000
  999.72 +RDATE:19560422T020000
  999.73 +RDATE:19570414T020000
  999.74 +RDATE:19580420T020000
  999.75 +RDATE:19590419T020000
  999.76 +RDATE:19600410T020000
  999.77 +RDATE:19610326T020000
  999.78 +RDATE:19620325T020000
  999.79 +RDATE:19630331T020000
  999.80 +RDATE:19640322T020000
  999.81 +RDATE:19650321T020000
  999.82 +RDATE:19660320T020000
  999.83 +RDATE:19670319T020000
  999.84 +RDATE:19680218T020000
  999.85 +RDATE:19720319T020000
  999.86 +RDATE:19730318T020000
  999.87 +RDATE:19740317T020000
  999.88 +RDATE:19750316T020000
  999.89 +RDATE:19760321T020000
  999.90 +RDATE:19770320T020000
  999.91 +RDATE:19780319T020000
  999.92 +RDATE:19790318T020000
  999.93 +RDATE:19800316T020000
  999.94 +END:DAYLIGHT
  999.95 +BEGIN:STANDARD
  999.96 +TZOFFSETFROM:+0100
  999.97 +TZOFFSETTO:+0000
  999.98 +TZNAME:GMT
  999.99 +DTSTART:19161001T030000
 999.100 +RDATE:19161001T030000
 999.101 +RDATE:19170917T030000
 999.102 +RDATE:19180930T030000
 999.103 +RDATE:19190929T030000
 999.104 +RDATE:19201025T030000
 999.105 +RDATE:19211003T030000
 999.106 +RDATE:19221008T030000
 999.107 +RDATE:19230916T030000
 999.108 +RDATE:19240921T030000
 999.109 +RDATE:19251004T030000
 999.110 +RDATE:19261003T030000
 999.111 +RDATE:19271002T030000
 999.112 +RDATE:19281007T030000
 999.113 +RDATE:19291006T030000
 999.114 +RDATE:19301005T030000
 999.115 +RDATE:19311004T030000
 999.116 +RDATE:19321002T030000
 999.117 +RDATE:19331008T030000
 999.118 +RDATE:19341007T030000
 999.119 +RDATE:19351006T030000
 999.120 +RDATE:19361004T030000
 999.121 +RDATE:19371003T030000
 999.122 +RDATE:19381002T030000
 999.123 +RDATE:19391119T030000
 999.124 +RDATE:19451007T030000
 999.125 +RDATE:19461006T030000
 999.126 +RDATE:19471102T030000
 999.127 +RDATE:19481031T030000
 999.128 +RDATE:19491030T030000
 999.129 +RDATE:19501022T030000
 999.130 +RDATE:19511021T030000
 999.131 +RDATE:19521026T030000
 999.132 +RDATE:19531004T030000
 999.133 +RDATE:19541003T030000
 999.134 +RDATE:19551002T030000
 999.135 +RDATE:19561007T030000
 999.136 +RDATE:19571006T030000
 999.137 +RDATE:19581005T030000
 999.138 +RDATE:19591004T030000
 999.139 +RDATE:19601002T030000
 999.140 +RDATE:19611029T030000
 999.141 +RDATE:19621028T030000
 999.142 +RDATE:19631027T030000
 999.143 +RDATE:19641025T030000
 999.144 +RDATE:19651024T030000
 999.145 +RDATE:19661023T030000
 999.146 +RDATE:19671029T030000
 999.147 +RDATE:19711031T030000
 999.148 +RDATE:19721029T030000
 999.149 +RDATE:19731028T030000
 999.150 +RDATE:19741027T030000
 999.151 +RDATE:19751026T030000
 999.152 +RDATE:19761024T030000
 999.153 +RDATE:19771023T030000
 999.154 +RDATE:19781029T030000
 999.155 +RDATE:19791028T030000
 999.156 +RDATE:19801026T030000
 999.157 +RDATE:19811025T020000
 999.158 +RDATE:19821024T020000
 999.159 +RDATE:19831023T020000
 999.160 +RDATE:19841028T020000
 999.161 +RDATE:19851027T020000
 999.162 +RDATE:19861026T020000
 999.163 +RDATE:19871025T020000
 999.164 +RDATE:19881023T020000
 999.165 +RDATE:19891029T020000
 999.166 +RDATE:19901028T020000
 999.167 +RDATE:19911027T020000
 999.168 +RDATE:19921025T020000
 999.169 +RDATE:19931024T020000
 999.170 +RDATE:19941023T020000
 999.171 +RDATE:19951022T020000
 999.172 +END:STANDARD
 999.173 +BEGIN:DAYLIGHT
 999.174 +TZOFFSETFROM:+0100
 999.175 +TZOFFSETTO:+0200
 999.176 +TZNAME:BDST
 999.177 +DTSTART:19410504T020000
 999.178 +RDATE:19410504T020000
 999.179 +RDATE:19420405T020000
 999.180 +RDATE:19430404T020000
 999.181 +RDATE:19440402T020000
 999.182 +RDATE:19450402T020000
 999.183 +RDATE:19470413T020000
 999.184 +END:DAYLIGHT
 999.185 +BEGIN:DAYLIGHT
 999.186 +TZOFFSETFROM:+0200
 999.187 +TZOFFSETTO:+0100
 999.188 +TZNAME:BST
 999.189 +DTSTART:19410810T030000
 999.190 +RDATE:19410810T030000
 999.191 +RDATE:19420809T030000
 999.192 +RDATE:19430815T030000
 999.193 +RDATE:19440917T030000
 999.194 +RDATE:19450715T030000
 999.195 +RDATE:19470810T030000
 999.196 +END:DAYLIGHT
 999.197 +BEGIN:STANDARD
 999.198 +TZOFFSETFROM:+0100
 999.199 +TZOFFSETTO:+0100
 999.200 +TZNAME:BST
 999.201 +DTSTART:19681027T000000
 999.202 +RDATE:19681027T000000
 999.203 +END:STANDARD
 999.204 +BEGIN:STANDARD
 999.205 +TZOFFSETFROM:+0000
 999.206 +TZOFFSETTO:+0000
 999.207 +TZNAME:GMT
 999.208 +DTSTART:19960101T000000
 999.209 +RDATE:19960101T000000
 999.210 +END:STANDARD
 999.211 +END:VTIMEZONE
 999.212 +END:VCALENDAR
  1000.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1000.2 +++ b/src/zoneinfo/Europe/Luxembourg.ics	Tue Feb 10 18:12:00 2015 +0100
  1000.3 @@ -0,0 +1,156 @@
  1000.4 +BEGIN:VCALENDAR
  1000.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1000.6 +VERSION:2.0
  1000.7 +BEGIN:VTIMEZONE
  1000.8 +TZID:Europe/Luxembourg
  1000.9 +TZURL:http://tzurl.org/zoneinfo/Europe/Luxembourg
 1000.10 +X-LIC-LOCATION:Europe/Luxembourg
 1000.11 +BEGIN:DAYLIGHT
 1000.12 +TZOFFSETFROM:+0100
 1000.13 +TZOFFSETTO:+0200
 1000.14 +TZNAME:CEST
 1000.15 +DTSTART:19810329T020000
 1000.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
 1000.17 +END:DAYLIGHT
 1000.18 +BEGIN:STANDARD
 1000.19 +TZOFFSETFROM:+0200
 1000.20 +TZOFFSETTO:+0100
 1000.21 +TZNAME:CET
 1000.22 +DTSTART:19961027T030000
 1000.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
 1000.24 +END:STANDARD
 1000.25 +BEGIN:STANDARD
 1000.26 +TZOFFSETFROM:+002436
 1000.27 +TZOFFSETTO:+0100
 1000.28 +TZNAME:CET
 1000.29 +DTSTART:19040601T000000
 1000.30 +RDATE:19040601T000000
 1000.31 +END:STANDARD
 1000.32 +BEGIN:DAYLIGHT
 1000.33 +TZOFFSETFROM:+0100
 1000.34 +TZOFFSETTO:+0200
 1000.35 +TZNAME:CEST
 1000.36 +DTSTART:19160514T230000
 1000.37 +RDATE:19160514T230000
 1000.38 +RDATE:19170428T230000
 1000.39 +RDATE:19180415T020000
 1000.40 +RDATE:19450402T020000
 1000.41 +RDATE:19460519T020000
 1000.42 +RDATE:19770403T020000
 1000.43 +RDATE:19780402T020000
 1000.44 +RDATE:19790401T020000
 1000.45 +RDATE:19800406T020000
 1000.46 +END:DAYLIGHT
 1000.47 +BEGIN:STANDARD
 1000.48 +TZOFFSETFROM:+0200
 1000.49 +TZOFFSETTO:+0100
 1000.50 +TZNAME:CET
 1000.51 +DTSTART:19161001T010000
 1000.52 +RDATE:19161001T010000
 1000.53 +RDATE:19170917T010000
 1000.54 +RDATE:19180916T030000
 1000.55 +RDATE:19440918T030000
 1000.56 +RDATE:19450916T030000
 1000.57 +RDATE:19461007T030000
 1000.58 +RDATE:19770925T030000
 1000.59 +RDATE:19781001T030000
 1000.60 +RDATE:19790930T030000
 1000.61 +RDATE:19800928T030000
 1000.62 +RDATE:19810927T030000
 1000.63 +RDATE:19820926T030000
 1000.64 +RDATE:19830925T030000
 1000.65 +RDATE:19840930T030000
 1000.66 +RDATE:19850929T030000
 1000.67 +RDATE:19860928T030000
 1000.68 +RDATE:19870927T030000
 1000.69 +RDATE:19880925T030000
 1000.70 +RDATE:19890924T030000
 1000.71 +RDATE:19900930T030000
 1000.72 +RDATE:19910929T030000
 1000.73 +RDATE:19920927T030000
 1000.74 +RDATE:19930926T030000
 1000.75 +RDATE:19940925T030000
 1000.76 +RDATE:19950924T030000
 1000.77 +END:STANDARD
 1000.78 +BEGIN:STANDARD
 1000.79 +TZOFFSETFROM:+0100
 1000.80 +TZOFFSETTO:+0000
 1000.81 +TZNAME:WET
 1000.82 +DTSTART:19181125T000000
 1000.83 +RDATE:19181125T000000
 1000.84 +RDATE:19191005T030000
 1000.85 +RDATE:19201024T020000
 1000.86 +RDATE:19211026T020000
 1000.87 +RDATE:19221008T010000
 1000.88 +RDATE:19231007T020000
 1000.89 +RDATE:19241005T010000
 1000.90 +RDATE:19251004T010000
 1000.91 +RDATE:19261003T010000
 1000.92 +RDATE:19271002T010000
 1000.93 +RDATE:19281007T010000
 1000.94 +RDATE:19291006T030000
 1000.95 +RDATE:19301005T030000
 1000.96 +RDATE:19311004T030000
 1000.97 +RDATE:19321002T030000
 1000.98 +RDATE:19331008T030000
 1000.99 +RDATE:19341007T030000
1000.100 +RDATE:19351006T030000
1000.101 +RDATE:19361004T030000
1000.102 +RDATE:19371003T030000
1000.103 +RDATE:19381002T030000
1000.104 +RDATE:19391119T030000
1000.105 +END:STANDARD
1000.106 +BEGIN:DAYLIGHT
1000.107 +TZOFFSETFROM:+0000
1000.108 +TZOFFSETTO:+0100
1000.109 +TZNAME:WEST
1000.110 +DTSTART:19190301T230000
1000.111 +RDATE:19190301T230000
1000.112 +RDATE:19200214T230000
1000.113 +RDATE:19210314T230000
1000.114 +RDATE:19220325T230000
1000.115 +RDATE:19230421T230000
1000.116 +RDATE:19240329T230000
1000.117 +RDATE:19250405T230000
1000.118 +RDATE:19260417T230000
1000.119 +RDATE:19270409T230000
1000.120 +RDATE:19280414T230000
1000.121 +RDATE:19290420T230000
1000.122 +RDATE:19300413T020000
1000.123 +RDATE:19310419T020000
1000.124 +RDATE:19320403T020000
1000.125 +RDATE:19330326T020000
1000.126 +RDATE:19340408T020000
1000.127 +RDATE:19350331T020000
1000.128 +RDATE:19360419T020000
1000.129 +RDATE:19370404T020000
1000.130 +RDATE:19380327T020000
1000.131 +RDATE:19390416T020000
1000.132 +RDATE:19400225T020000
1000.133 +END:DAYLIGHT
1000.134 +BEGIN:DAYLIGHT
1000.135 +TZOFFSETFROM:+0100
1000.136 +TZOFFSETTO:+0200
1000.137 +TZNAME:WEST
1000.138 +DTSTART:19400514T030000
1000.139 +RDATE:19400514T030000
1000.140 +RDATE:19430329T020000
1000.141 +RDATE:19440403T020000
1000.142 +END:DAYLIGHT
1000.143 +BEGIN:STANDARD
1000.144 +TZOFFSETFROM:+0200
1000.145 +TZOFFSETTO:+0100
1000.146 +TZNAME:WET
1000.147 +DTSTART:19421102T030000
1000.148 +RDATE:19421102T030000
1000.149 +RDATE:19431004T030000
1000.150 +END:STANDARD
1000.151 +BEGIN:STANDARD
1000.152 +TZOFFSETFROM:+0100
1000.153 +TZOFFSETTO:+0100
1000.154 +TZNAME:CET
1000.155 +DTSTART:19770101T000000
1000.156 +RDATE:19770101T000000
1000.157 +END:STANDARD
1000.158 +END:VTIMEZONE
1000.159 +END:VCALENDAR
  1001.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1001.2 +++ b/src/zoneinfo/Europe/Madrid.ics	Tue Feb 10 18:12:00 2015 +0100
  1001.3 @@ -0,0 +1,137 @@
  1001.4 +BEGIN:VCALENDAR
  1001.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1001.6 +VERSION:2.0
  1001.7 +BEGIN:VTIMEZONE
  1001.8 +TZID:Europe/Madrid
  1001.9 +TZURL:http://tzurl.org/zoneinfo/Europe/Madrid
 1001.10 +X-LIC-LOCATION:Europe/Madrid
 1001.11 +BEGIN:DAYLIGHT
 1001.12 +TZOFFSETFROM:+0100
 1001.13 +TZOFFSETTO:+0200
 1001.14 +TZNAME:CEST
 1001.15 +DTSTART:19810329T020000
 1001.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
 1001.17 +END:DAYLIGHT
 1001.18 +BEGIN:STANDARD
 1001.19 +TZOFFSETFROM:+0200
 1001.20 +TZOFFSETTO:+0100
 1001.21 +TZNAME:CET
 1001.22 +DTSTART:19961027T030000
 1001.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
 1001.24 +END:STANDARD
 1001.25 +BEGIN:STANDARD
 1001.26 +TZOFFSETFROM:-001444
 1001.27 +TZOFFSETTO:+0000
 1001.28 +TZNAME:WET
 1001.29 +DTSTART:19010101T000000
 1001.30 +RDATE:19010101T000000
 1001.31 +END:STANDARD
 1001.32 +BEGIN:DAYLIGHT
 1001.33 +TZOFFSETFROM:+0000
 1001.34 +TZOFFSETTO:+0100
 1001.35 +TZNAME:WEST
 1001.36 +DTSTART:19170505T230000
 1001.37 +RDATE:19170505T230000
 1001.38 +RDATE:19180415T230000
 1001.39 +RDATE:19190405T230000
 1001.40 +RDATE:19240416T230000
 1001.41 +RDATE:19260417T230000
 1001.42 +RDATE:19270409T230000
 1001.43 +RDATE:19280414T230000
 1001.44 +RDATE:19290420T230000
 1001.45 +RDATE:19370522T230000
 1001.46 +RDATE:19380322T230000
 1001.47 +RDATE:19390415T230000
 1001.48 +RDATE:19400316T230000
 1001.49 +END:DAYLIGHT
 1001.50 +BEGIN:STANDARD
 1001.51 +TZOFFSETFROM:+0100
 1001.52 +TZOFFSETTO:+0000
 1001.53 +TZNAME:WET
 1001.54 +DTSTART:19171007T000000
 1001.55 +RDATE:19171007T000000
 1001.56 +RDATE:19181007T000000
 1001.57 +RDATE:19191007T000000
 1001.58 +RDATE:19241005T000000
 1001.59 +RDATE:19261003T000000
 1001.60 +RDATE:19271002T000000
 1001.61 +RDATE:19281007T000000
 1001.62 +RDATE:19291006T000000
 1001.63 +RDATE:19371003T000000
 1001.64 +RDATE:19381002T000000
 1001.65 +RDATE:19391008T000000
 1001.66 +END:STANDARD
 1001.67 +BEGIN:DAYLIGHT
 1001.68 +TZOFFSETFROM:+0100
 1001.69 +TZOFFSETTO:+0200
 1001.70 +TZNAME:WEMT
 1001.71 +DTSTART:19420502T230000
 1001.72 +RDATE:19420502T230000
 1001.73 +RDATE:19430417T230000
 1001.74 +RDATE:19440415T230000
 1001.75 +RDATE:19450414T230000
 1001.76 +RDATE:19460413T230000
 1001.77 +END:DAYLIGHT
 1001.78 +BEGIN:DAYLIGHT
 1001.79 +TZOFFSETFROM:+0200
 1001.80 +TZOFFSETTO:+0100
 1001.81 +TZNAME:WEST
 1001.82 +DTSTART:19420902T000000
 1001.83 +RDATE:19420902T000000
 1001.84 +RDATE:19431004T000000
 1001.85 +RDATE:19441011T000000
 1001.86 +RDATE:19450930T010000
 1001.87 +END:DAYLIGHT
 1001.88 +BEGIN:STANDARD
 1001.89 +TZOFFSETFROM:+0200
 1001.90 +TZOFFSETTO:+0100
 1001.91 +TZNAME:CET
 1001.92 +DTSTART:19460930T000000
 1001.93 +RDATE:19460930T000000
 1001.94 +RDATE:19490930T010000
 1001.95 +RDATE:19741006T010000
 1001.96 +RDATE:19751005T010000
 1001.97 +RDATE:19760926T010000
 1001.98 +RDATE:19770925T010000
 1001.99 +RDATE:19781001T010000
1001.100 +RDATE:19790930T030000
1001.101 +RDATE:19800928T030000
1001.102 +RDATE:19810927T030000
1001.103 +RDATE:19820926T030000
1001.104 +RDATE:19830925T030000
1001.105 +RDATE:19840930T030000
1001.106 +RDATE:19850929T030000
1001.107 +RDATE:19860928T030000
1001.108 +RDATE:19870927T030000
1001.109 +RDATE:19880925T030000
1001.110 +RDATE:19890924T030000
1001.111 +RDATE:19900930T030000
1001.112 +RDATE:19910929T030000
1001.113 +RDATE:19920927T030000
1001.114 +RDATE:19930926T030000
1001.115 +RDATE:19940925T030000
1001.116 +RDATE:19950924T030000
1001.117 +END:STANDARD
1001.118 +BEGIN:DAYLIGHT
1001.119 +TZOFFSETFROM:+0100
1001.120 +TZOFFSETTO:+0200
1001.121 +TZNAME:CEST
1001.122 +DTSTART:19490430T230000
1001.123 +RDATE:19490430T230000
1001.124 +RDATE:19740413T230000
1001.125 +RDATE:19750419T230000
1001.126 +RDATE:19760327T230000
1001.127 +RDATE:19770402T230000
1001.128 +RDATE:19780402T230000
1001.129 +RDATE:19790401T020000
1001.130 +RDATE:19800406T020000
1001.131 +END:DAYLIGHT
1001.132 +BEGIN:STANDARD
1001.133 +TZOFFSETFROM:+0100
1001.134 +TZOFFSETTO:+0100
1001.135 +TZNAME:CET
1001.136 +DTSTART:19790101T000000
1001.137 +RDATE:19790101T000000
1001.138 +END:STANDARD
1001.139 +END:VTIMEZONE
1001.140 +END:VCALENDAR
  1002.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1002.2 +++ b/src/zoneinfo/Europe/Malta.ics	Tue Feb 10 18:12:00 2015 +0100
  1002.3 @@ -0,0 +1,118 @@
  1002.4 +BEGIN:VCALENDAR
  1002.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1002.6 +VERSION:2.0
  1002.7 +BEGIN:VTIMEZONE
  1002.8 +TZID:Europe/Malta
  1002.9 +TZURL:http://tzurl.org/zoneinfo/Europe/Malta
 1002.10 +X-LIC-LOCATION:Europe/Malta
 1002.11 +BEGIN:DAYLIGHT
 1002.12 +TZOFFSETFROM:+0100
 1002.13 +TZOFFSETTO:+0200
 1002.14 +TZNAME:CEST
 1002.15 +DTSTART:19810329T020000
 1002.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
 1002.17 +END:DAYLIGHT
 1002.18 +BEGIN:STANDARD
 1002.19 +TZOFFSETFROM:+0200
 1002.20 +TZOFFSETTO:+0100
 1002.21 +TZNAME:CET
 1002.22 +DTSTART:19961027T030000
 1002.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
 1002.24 +END:STANDARD
 1002.25 +BEGIN:STANDARD
 1002.26 +TZOFFSETFROM:+005804
 1002.27 +TZOFFSETTO:+0100
 1002.28 +TZNAME:CET
 1002.29 +DTSTART:18931102T000000
 1002.30 +RDATE:18931102T000000
 1002.31 +END:STANDARD
 1002.32 +BEGIN:DAYLIGHT
 1002.33 +TZOFFSETFROM:+0100
 1002.34 +TZOFFSETTO:+0200
 1002.35 +TZNAME:CEST
 1002.36 +DTSTART:19160603T000000
 1002.37 +RDATE:19160603T000000
 1002.38 +RDATE:19170401T000000
 1002.39 +RDATE:19180310T000000
 1002.40 +RDATE:19190302T000000
 1002.41 +RDATE:19200321T000000
 1002.42 +RDATE:19400615T000000
 1002.43 +RDATE:19430329T020000
 1002.44 +RDATE:19440403T020000
 1002.45 +RDATE:19450402T020000
 1002.46 +RDATE:19460317T020000
 1002.47 +RDATE:19470316T000000
 1002.48 +RDATE:19480229T020000
 1002.49 +RDATE:19660522T000000
 1002.50 +RDATE:19670528T000000
 1002.51 +RDATE:19680526T000000
 1002.52 +RDATE:19690601T000000
 1002.53 +RDATE:19700531T000000
 1002.54 +RDATE:19710523T000000
 1002.55 +RDATE:19720528T000000
 1002.56 +RDATE:19730331T000000
 1002.57 +RDATE:19740421T000000
 1002.58 +RDATE:19750420T020000
 1002.59 +RDATE:19760418T020000
 1002.60 +RDATE:19770417T020000
 1002.61 +RDATE:19780416T020000
 1002.62 +RDATE:19790415T020000
 1002.63 +RDATE:19800331T020000
 1002.64 +END:DAYLIGHT
 1002.65 +BEGIN:STANDARD
 1002.66 +TZOFFSETFROM:+0200
 1002.67 +TZOFFSETTO:+0100
 1002.68 +TZNAME:CET
 1002.69 +DTSTART:19161001T010000
 1002.70 +RDATE:19161001T010000
 1002.71 +RDATE:19170930T010000
 1002.72 +RDATE:19181006T010000
 1002.73 +RDATE:19191005T010000
 1002.74 +RDATE:19200919T010000
 1002.75 +RDATE:19421102T030000
 1002.76 +RDATE:19431004T030000
 1002.77 +RDATE:19441002T030000
 1002.78 +RDATE:19450915T010000
 1002.79 +RDATE:19461006T030000
 1002.80 +RDATE:19471005T010000
 1002.81 +RDATE:19481003T030000
 1002.82 +RDATE:19660925T000000
 1002.83 +RDATE:19670924T000000
 1002.84 +RDATE:19680922T000000
 1002.85 +RDATE:19690928T000000
 1002.86 +RDATE:19700927T000000
 1002.87 +RDATE:19710926T010000
 1002.88 +RDATE:19721001T000000
 1002.89 +RDATE:19730929T010000
 1002.90 +RDATE:19740916T010000
 1002.91 +RDATE:19750921T020000
 1002.92 +RDATE:19760919T020000
 1002.93 +RDATE:19770918T020000
 1002.94 +RDATE:19780917T020000
 1002.95 +RDATE:19790916T020000
 1002.96 +RDATE:19800921T020000
 1002.97 +RDATE:19810927T030000
 1002.98 +RDATE:19820926T030000
 1002.99 +RDATE:19830925T030000
1002.100 +RDATE:19840930T030000
1002.101 +RDATE:19850929T030000
1002.102 +RDATE:19860928T030000
1002.103 +RDATE:19870927T030000
1002.104 +RDATE:19880925T030000
1002.105 +RDATE:19890924T030000
1002.106 +RDATE:19900930T030000
1002.107 +RDATE:19910929T030000
1002.108 +RDATE:19920927T030000
1002.109 +RDATE:19930926T030000
1002.110 +RDATE:19940925T030000
1002.111 +RDATE:19950924T030000
1002.112 +END:STANDARD
1002.113 +BEGIN:STANDARD
1002.114 +TZOFFSETFROM:+0100
1002.115 +TZOFFSETTO:+0100
1002.116 +TZNAME:CET
1002.117 +DTSTART:19810101T000000
1002.118 +RDATE:19810101T000000
1002.119 +END:STANDARD
1002.120 +END:VTIMEZONE
1002.121 +END:VCALENDAR
  1003.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1003.2 +++ b/src/zoneinfo/Europe/Mariehamn.ics	Tue Feb 10 18:12:00 2015 +0100
  1003.3 @@ -0,0 +1,75 @@
  1003.4 +BEGIN:VCALENDAR
  1003.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1003.6 +VERSION:2.0
  1003.7 +BEGIN:VTIMEZONE
  1003.8 +TZID:Europe/Mariehamn
  1003.9 +TZURL:http://tzurl.org/zoneinfo/Europe/Mariehamn
 1003.10 +X-LIC-LOCATION:Europe/Mariehamn
 1003.11 +BEGIN:DAYLIGHT
 1003.12 +TZOFFSETFROM:+0200
 1003.13 +TZOFFSETTO:+0300
 1003.14 +TZNAME:EEST
 1003.15 +DTSTART:19830327T030000
 1003.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
 1003.17 +END:DAYLIGHT
 1003.18 +BEGIN:STANDARD
 1003.19 +TZOFFSETFROM:+0300
 1003.20 +TZOFFSETTO:+0200
 1003.21 +TZNAME:EET
 1003.22 +DTSTART:19961027T040000
 1003.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
 1003.24 +END:STANDARD
 1003.25 +BEGIN:STANDARD
 1003.26 +TZOFFSETFROM:+013952
 1003.27 +TZOFFSETTO:+013952
 1003.28 +TZNAME:HMT
 1003.29 +DTSTART:18780531T000000
 1003.30 +RDATE:18780531T000000
 1003.31 +END:STANDARD
 1003.32 +BEGIN:STANDARD
 1003.33 +TZOFFSETFROM:+013952
 1003.34 +TZOFFSETTO:+0200
 1003.35 +TZNAME:EET
 1003.36 +DTSTART:19210501T000000
 1003.37 +RDATE:19210501T000000
 1003.38 +END:STANDARD
 1003.39 +BEGIN:DAYLIGHT
 1003.40 +TZOFFSETFROM:+0200
 1003.41 +TZOFFSETTO:+0300
 1003.42 +TZNAME:EEST
 1003.43 +DTSTART:19420403T000000
 1003.44 +RDATE:19420403T000000
 1003.45 +RDATE:19810329T020000
 1003.46 +RDATE:19820328T020000
 1003.47 +END:DAYLIGHT
 1003.48 +BEGIN:STANDARD
 1003.49 +TZOFFSETFROM:+0300
 1003.50 +TZOFFSETTO:+0200
 1003.51 +TZNAME:EET
 1003.52 +DTSTART:19421003T000000
 1003.53 +RDATE:19421003T000000
 1003.54 +RDATE:19810927T030000
 1003.55 +RDATE:19820926T030000
 1003.56 +RDATE:19830925T040000
 1003.57 +RDATE:19840930T040000
 1003.58 +RDATE:19850929T040000
 1003.59 +RDATE:19860928T040000
 1003.60 +RDATE:19870927T040000
 1003.61 +RDATE:19880925T040000
 1003.62 +RDATE:19890924T040000
 1003.63 +RDATE:19900930T040000
 1003.64 +RDATE:19910929T040000
 1003.65 +RDATE:19920927T040000
 1003.66 +RDATE:19930926T040000
 1003.67 +RDATE:19940925T040000
 1003.68 +RDATE:19950924T040000
 1003.69 +END:STANDARD
 1003.70 +BEGIN:STANDARD
 1003.71 +TZOFFSETFROM:+0200
 1003.72 +TZOFFSETTO:+0200
 1003.73 +TZNAME:EET
 1003.74 +DTSTART:19830101T000000
 1003.75 +RDATE:19830101T000000
 1003.76 +END:STANDARD
 1003.77 +END:VTIMEZONE
 1003.78 +END:VCALENDAR
  1004.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1004.2 +++ b/src/zoneinfo/Europe/Minsk.ics	Tue Feb 10 18:12:00 2015 +0100
  1004.3 @@ -0,0 +1,156 @@
  1004.4 +BEGIN:VCALENDAR
  1004.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1004.6 +VERSION:2.0
  1004.7 +BEGIN:VTIMEZONE
  1004.8 +TZID:Europe/Minsk
  1004.9 +TZURL:http://tzurl.org/zoneinfo/Europe/Minsk
 1004.10 +X-LIC-LOCATION:Europe/Minsk
 1004.11 +BEGIN:STANDARD
 1004.12 +TZOFFSETFROM:+015016
 1004.13 +TZOFFSETTO:+0150
 1004.14 +TZNAME:MMT
 1004.15 +DTSTART:18800101T000000
 1004.16 +RDATE:18800101T000000
 1004.17 +END:STANDARD
 1004.18 +BEGIN:STANDARD
 1004.19 +TZOFFSETFROM:+0150
 1004.20 +TZOFFSETTO:+0200
 1004.21 +TZNAME:EET
 1004.22 +DTSTART:19240502T000000
 1004.23 +RDATE:19240502T000000
 1004.24 +END:STANDARD
 1004.25 +BEGIN:STANDARD
 1004.26 +TZOFFSETFROM:+0200
 1004.27 +TZOFFSETTO:+0300
 1004.28 +TZNAME:MSK
 1004.29 +DTSTART:19300621T000000
 1004.30 +RDATE:19300621T000000
 1004.31 +RDATE:19440703T000000
 1004.32 +END:STANDARD
 1004.33 +BEGIN:DAYLIGHT
 1004.34 +TZOFFSETFROM:+0300
 1004.35 +TZOFFSETTO:+0200
 1004.36 +TZNAME:CEST
 1004.37 +DTSTART:19410628T000000
 1004.38 +RDATE:19410628T000000
 1004.39 +END:DAYLIGHT
 1004.40 +BEGIN:STANDARD
 1004.41 +TZOFFSETFROM:+0200
 1004.42 +TZOFFSETTO:+0100
 1004.43 +TZNAME:CET
 1004.44 +DTSTART:19421102T030000
 1004.45 +RDATE:19421102T030000
 1004.46 +RDATE:19431004T030000
 1004.47 +END:STANDARD
 1004.48 +BEGIN:DAYLIGHT
 1004.49 +TZOFFSETFROM:+0100
 1004.50 +TZOFFSETTO:+0200
 1004.51 +TZNAME:CEST
 1004.52 +DTSTART:19430329T020000
 1004.53 +RDATE:19430329T020000
 1004.54 +RDATE:19440403T020000
 1004.55 +END:DAYLIGHT
 1004.56 +BEGIN:DAYLIGHT
 1004.57 +TZOFFSETFROM:+0300
 1004.58 +TZOFFSETTO:+0400
 1004.59 +TZNAME:MSD
 1004.60 +DTSTART:19810401T000000
 1004.61 +RDATE:19810401T000000
 1004.62 +RDATE:19820401T000000
 1004.63 +RDATE:19830401T000000
 1004.64 +RDATE:19840401T000000
 1004.65 +RDATE:19850331T020000
 1004.66 +RDATE:19860330T020000
 1004.67 +RDATE:19870329T020000
 1004.68 +RDATE:19880327T020000
 1004.69 +RDATE:19890326T020000
 1004.70 +END:DAYLIGHT
 1004.71 +BEGIN:STANDARD
 1004.72 +TZOFFSETFROM:+0400
 1004.73 +TZOFFSETTO:+0300
 1004.74 +TZNAME:MSK
 1004.75 +DTSTART:19811001T000000
 1004.76 +RDATE:19811001T000000
 1004.77 +RDATE:19821001T000000
 1004.78 +RDATE:19831001T000000
 1004.79 +RDATE:19840930T030000
 1004.80 +RDATE:19850929T030000
 1004.81 +RDATE:19860928T030000
 1004.82 +RDATE:19870927T030000
 1004.83 +RDATE:19880925T030000
 1004.84 +RDATE:19890924T030000
 1004.85 +END:STANDARD
 1004.86 +BEGIN:STANDARD
 1004.87 +TZOFFSETFROM:+0300
 1004.88 +TZOFFSETTO:+0300
 1004.89 +TZNAME:MSK
 1004.90 +DTSTART:19900101T000000
 1004.91 +RDATE:19900101T000000
 1004.92 +END:STANDARD
 1004.93 +BEGIN:DAYLIGHT
 1004.94 +TZOFFSETFROM:+0300
 1004.95 +TZOFFSETTO:+0300
 1004.96 +TZNAME:EEST
 1004.97 +DTSTART:19910331T020000
 1004.98 +RDATE:19910331T020000
 1004.99 +END:DAYLIGHT
1004.100 +BEGIN:STANDARD
1004.101 +TZOFFSETFROM:+0300
1004.102 +TZOFFSETTO:+0200
1004.103 +TZNAME:EET
1004.104 +DTSTART:19910929T030000
1004.105 +RDATE:19910929T030000
1004.106 +RDATE:19920927T010000
1004.107 +RDATE:19930926T030000
1004.108 +RDATE:19940925T030000
1004.109 +RDATE:19950924T030000
1004.110 +RDATE:19961027T030000
1004.111 +RDATE:19971026T030000
1004.112 +RDATE:19981025T030000
1004.113 +RDATE:19991031T030000
1004.114 +RDATE:20001029T030000
1004.115 +RDATE:20011028T030000
1004.116 +RDATE:20021027T030000
1004.117 +RDATE:20031026T030000
1004.118 +RDATE:20041031T030000
1004.119 +RDATE:20051030T030000
1004.120 +RDATE:20061029T030000
1004.121 +RDATE:20071028T030000
1004.122 +RDATE:20081026T030000
1004.123 +RDATE:20091025T030000
1004.124 +RDATE:20101031T030000
1004.125 +END:STANDARD
1004.126 +BEGIN:DAYLIGHT
1004.127 +TZOFFSETFROM:+0200
1004.128 +TZOFFSETTO:+0300
1004.129 +TZNAME:EEST
1004.130 +DTSTART:19920329T000000
1004.131 +RDATE:19920329T000000
1004.132 +RDATE:19930328T020000
1004.133 +RDATE:19940327T020000
1004.134 +RDATE:19950326T020000
1004.135 +RDATE:19960331T020000
1004.136 +RDATE:19970330T020000
1004.137 +RDATE:19980329T020000
1004.138 +RDATE:19990328T020000
1004.139 +RDATE:20000326T020000
1004.140 +RDATE:20010325T020000
1004.141 +RDATE:20020331T020000
1004.142 +RDATE:20030330T020000
1004.143 +RDATE:20040328T020000
1004.144 +RDATE:20050327T020000
1004.145 +RDATE:20060326T020000
1004.146 +RDATE:20070325T020000
1004.147 +RDATE:20080330T020000
1004.148 +RDATE:20090329T020000
1004.149 +RDATE:20100328T020000
1004.150 +END:DAYLIGHT
1004.151 +BEGIN:STANDARD
1004.152 +TZOFFSETFROM:+0200
1004.153 +TZOFFSETTO:+0300
1004.154 +TZNAME:FET
1004.155 +DTSTART:20110327T020000
1004.156 +RDATE:20110327T020000
1004.157 +END:STANDARD
1004.158 +END:VTIMEZONE
1004.159 +END:VCALENDAR
  1005.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1005.2 +++ b/src/zoneinfo/Europe/Monaco.ics	Tue Feb 10 18:12:00 2015 +0100
  1005.3 @@ -0,0 +1,164 @@
  1005.4 +BEGIN:VCALENDAR
  1005.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1005.6 +VERSION:2.0
  1005.7 +BEGIN:VTIMEZONE
  1005.8 +TZID:Europe/Monaco
  1005.9 +TZURL:http://tzurl.org/zoneinfo/Europe/Monaco
 1005.10 +X-LIC-LOCATION:Europe/Monaco
 1005.11 +BEGIN:DAYLIGHT
 1005.12 +TZOFFSETFROM:+0100
 1005.13 +TZOFFSETTO:+0200
 1005.14 +TZNAME:CEST
 1005.15 +DTSTART:19810329T020000
 1005.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
 1005.17 +END:DAYLIGHT
 1005.18 +BEGIN:STANDARD
 1005.19 +TZOFFSETFROM:+0200
 1005.20 +TZOFFSETTO:+0100
 1005.21 +TZNAME:CET
 1005.22 +DTSTART:19961027T030000
 1005.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
 1005.24 +END:STANDARD
 1005.25 +BEGIN:STANDARD
 1005.26 +TZOFFSETFROM:+002932
 1005.27 +TZOFFSETTO:+000921
 1005.28 +TZNAME:PMT
 1005.29 +DTSTART:18910315T000000
 1005.30 +RDATE:18910315T000000
 1005.31 +END:STANDARD
 1005.32 +BEGIN:STANDARD
 1005.33 +TZOFFSETFROM:+000921
 1005.34 +TZOFFSETTO:+0000
 1005.35 +TZNAME:WET
 1005.36 +DTSTART:19110311T000000
 1005.37 +RDATE:19110311T000000
 1005.38 +END:STANDARD
 1005.39 +BEGIN:DAYLIGHT
 1005.40 +TZOFFSETFROM:+0000
 1005.41 +TZOFFSETTO:+0100
 1005.42 +TZNAME:WEST
 1005.43 +DTSTART:19160614T230000
 1005.44 +RDATE:19160614T230000
 1005.45 +RDATE:19170324T230000
 1005.46 +RDATE:19180309T230000
 1005.47 +RDATE:19190301T230000
 1005.48 +RDATE:19200214T230000
 1005.49 +RDATE:19210314T230000
 1005.50 +RDATE:19220325T230000
 1005.51 +RDATE:19230526T230000
 1005.52 +RDATE:19240329T230000
 1005.53 +RDATE:19250404T230000
 1005.54 +RDATE:19260417T230000
 1005.55 +RDATE:19270409T230000
 1005.56 +RDATE:19280414T230000
 1005.57 +RDATE:19290420T230000
 1005.58 +RDATE:19300412T230000
 1005.59 +RDATE:19310418T230000
 1005.60 +RDATE:19320402T230000
 1005.61 +RDATE:19330325T230000
 1005.62 +RDATE:19340407T230000
 1005.63 +RDATE:19350330T230000
 1005.64 +RDATE:19360418T230000
 1005.65 +RDATE:19370403T230000
 1005.66 +RDATE:19380326T230000
 1005.67 +RDATE:19390415T230000
 1005.68 +RDATE:19400225T020000
 1005.69 +END:DAYLIGHT
 1005.70 +BEGIN:STANDARD
 1005.71 +TZOFFSETFROM:+0100
 1005.72 +TZOFFSETTO:+0000
 1005.73 +TZNAME:WET
 1005.74 +DTSTART:19161002T000000
 1005.75 +RDATE:19161002T000000
 1005.76 +RDATE:19171008T000000
 1005.77 +RDATE:19181007T000000
 1005.78 +RDATE:19191006T000000
 1005.79 +RDATE:19201024T000000
 1005.80 +RDATE:19211026T000000
 1005.81 +RDATE:19221008T000000
 1005.82 +RDATE:19231007T000000
 1005.83 +RDATE:19241005T000000
 1005.84 +RDATE:19251004T000000
 1005.85 +RDATE:19261003T000000
 1005.86 +RDATE:19271002T000000
 1005.87 +RDATE:19281007T000000
 1005.88 +RDATE:19291006T000000
 1005.89 +RDATE:19301005T000000
 1005.90 +RDATE:19311004T000000
 1005.91 +RDATE:19321002T000000
 1005.92 +RDATE:19331008T000000
 1005.93 +RDATE:19341007T000000
 1005.94 +RDATE:19351006T000000
 1005.95 +RDATE:19361004T000000
 1005.96 +RDATE:19371003T000000
 1005.97 +RDATE:19381002T000000
 1005.98 +RDATE:19391119T000000
 1005.99 +END:STANDARD
1005.100 +BEGIN:DAYLIGHT
1005.101 +TZOFFSETFROM:+0100
1005.102 +TZOFFSETTO:+0200
1005.103 +TZNAME:WEMT
1005.104 +DTSTART:19410505T000000
1005.105 +RDATE:19410505T000000
1005.106 +RDATE:19420309T000000
1005.107 +RDATE:19430329T020000
1005.108 +RDATE:19440403T020000
1005.109 +RDATE:19450402T020000
1005.110 +END:DAYLIGHT
1005.111 +BEGIN:DAYLIGHT
1005.112 +TZOFFSETFROM:+0200
1005.113 +TZOFFSETTO:+0100
1005.114 +TZNAME:WEST
1005.115 +DTSTART:19411006T000000
1005.116 +RDATE:19411006T000000
1005.117 +RDATE:19421102T030000
1005.118 +RDATE:19431004T030000
1005.119 +RDATE:19441008T010000
1005.120 +END:DAYLIGHT
1005.121 +BEGIN:STANDARD
1005.122 +TZOFFSETFROM:+0200
1005.123 +TZOFFSETTO:+0100
1005.124 +TZNAME:CET
1005.125 +DTSTART:19450916T030000
1005.126 +RDATE:19450916T030000
1005.127 +RDATE:19760926T010000
1005.128 +RDATE:19770925T030000
1005.129 +RDATE:19781001T030000
1005.130 +RDATE:19790930T030000
1005.131 +RDATE:19800928T030000
1005.132 +RDATE:19810927T030000
1005.133 +RDATE:19820926T030000
1005.134 +RDATE:19830925T030000
1005.135 +RDATE:19840930T030000
1005.136 +RDATE:19850929T030000
1005.137 +RDATE:19860928T030000
1005.138 +RDATE:19870927T030000
1005.139 +RDATE:19880925T030000
1005.140 +RDATE:19890924T030000
1005.141 +RDATE:19900930T030000
1005.142 +RDATE:19910929T030000
1005.143 +RDATE:19920927T030000
1005.144 +RDATE:19930926T030000
1005.145 +RDATE:19940925T030000
1005.146 +RDATE:19950924T030000
1005.147 +END:STANDARD
1005.148 +BEGIN:DAYLIGHT
1005.149 +TZOFFSETFROM:+0100
1005.150 +TZOFFSETTO:+0200
1005.151 +TZNAME:CEST
1005.152 +DTSTART:19760328T010000
1005.153 +RDATE:19760328T010000
1005.154 +RDATE:19770403T020000
1005.155 +RDATE:19780402T020000
1005.156 +RDATE:19790401T020000
1005.157 +RDATE:19800406T020000
1005.158 +END:DAYLIGHT
1005.159 +BEGIN:STANDARD
1005.160 +TZOFFSETFROM:+0100
1005.161 +TZOFFSETTO:+0100
1005.162 +TZNAME:CET
1005.163 +DTSTART:19770101T000000
1005.164 +RDATE:19770101T000000
1005.165 +END:STANDARD
1005.166 +END:VTIMEZONE
1005.167 +END:VCALENDAR
  1006.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1006.2 +++ b/src/zoneinfo/Europe/Moscow.ics	Tue Feb 10 18:12:00 2015 +0100
  1006.3 @@ -0,0 +1,182 @@
  1006.4 +BEGIN:VCALENDAR
  1006.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1006.6 +VERSION:2.0
  1006.7 +BEGIN:VTIMEZONE
  1006.8 +TZID:Europe/Moscow
  1006.9 +TZURL:http://tzurl.org/zoneinfo/Europe/Moscow
 1006.10 +X-LIC-LOCATION:Europe/Moscow
 1006.11 +BEGIN:STANDARD
 1006.12 +TZOFFSETFROM:+023020
 1006.13 +TZOFFSETTO:+0230
 1006.14 +TZNAME:MMT
 1006.15 +DTSTART:18800101T000000
 1006.16 +RDATE:18800101T000000
 1006.17 +END:STANDARD
 1006.18 +BEGIN:STANDARD
 1006.19 +TZOFFSETFROM:+0230
 1006.20 +TZOFFSETTO:+023048
 1006.21 +TZNAME:MMT
 1006.22 +DTSTART:19160703T000000
 1006.23 +RDATE:19160703T000000
 1006.24 +END:STANDARD
 1006.25 +BEGIN:DAYLIGHT
 1006.26 +TZOFFSETFROM:+023048
 1006.27 +TZOFFSETTO:+033048
 1006.28 +TZNAME:MST
 1006.29 +DTSTART:19170701T230000
 1006.30 +RDATE:19170701T230000
 1006.31 +END:DAYLIGHT
 1006.32 +BEGIN:STANDARD
 1006.33 +TZOFFSETFROM:+033048
 1006.34 +TZOFFSETTO:+023048
 1006.35 +TZNAME:MMT
 1006.36 +DTSTART:19171228T000000
 1006.37 +RDATE:19171228T000000
 1006.38 +END:STANDARD
 1006.39 +BEGIN:DAYLIGHT
 1006.40 +TZOFFSETFROM:+023048
 1006.41 +TZOFFSETTO:+043048
 1006.42 +TZNAME:MDST
 1006.43 +DTSTART:19180531T220000
 1006.44 +RDATE:19180531T220000
 1006.45 +END:DAYLIGHT
 1006.46 +BEGIN:DAYLIGHT
 1006.47 +TZOFFSETFROM:+043048
 1006.48 +TZOFFSETTO:+033048
 1006.49 +TZNAME:MST
 1006.50 +DTSTART:19180916T010000
 1006.51 +RDATE:19180916T010000
 1006.52 +END:DAYLIGHT
 1006.53 +BEGIN:DAYLIGHT
 1006.54 +TZOFFSETFROM:+033048
 1006.55 +TZOFFSETTO:+043048
 1006.56 +TZNAME:MDST
 1006.57 +DTSTART:19190531T230000
 1006.58 +RDATE:19190531T230000
 1006.59 +END:DAYLIGHT
 1006.60 +BEGIN:DAYLIGHT
 1006.61 +TZOFFSETFROM:+043048
 1006.62 +TZOFFSETTO:+0400
 1006.63 +TZNAME:MSD
 1006.64 +DTSTART:19190701T020000
 1006.65 +RDATE:19190701T020000
 1006.66 +END:DAYLIGHT
 1006.67 +BEGIN:STANDARD
 1006.68 +TZOFFSETFROM:+0400
 1006.69 +TZOFFSETTO:+0300
 1006.70 +TZNAME:MSK
 1006.71 +DTSTART:19190816T000000
 1006.72 +RDATE:19190816T000000
 1006.73 +RDATE:19211001T000000
 1006.74 +RDATE:19811001T000000
 1006.75 +RDATE:19821001T000000
 1006.76 +RDATE:19831001T000000
 1006.77 +RDATE:19840930T030000
 1006.78 +RDATE:19850929T030000
 1006.79 +RDATE:19860928T030000
 1006.80 +RDATE:19870927T030000
 1006.81 +RDATE:19880925T030000
 1006.82 +RDATE:19890924T030000
 1006.83 +RDATE:19900930T030000
 1006.84 +RDATE:19920926T230000
 1006.85 +RDATE:19930926T030000
 1006.86 +RDATE:19940925T030000
 1006.87 +RDATE:19950924T030000
 1006.88 +RDATE:19961027T030000
 1006.89 +RDATE:19971026T030000
 1006.90 +RDATE:19981025T030000
 1006.91 +RDATE:19991031T030000
 1006.92 +RDATE:20001029T030000
 1006.93 +RDATE:20011028T030000
 1006.94 +RDATE:20021027T030000
 1006.95 +RDATE:20031026T030000
 1006.96 +RDATE:20041031T030000
 1006.97 +RDATE:20051030T030000
 1006.98 +RDATE:20061029T030000
 1006.99 +RDATE:20071028T030000
1006.100 +RDATE:20081026T030000
1006.101 +RDATE:20091025T030000
1006.102 +RDATE:20101031T030000
1006.103 +END:STANDARD
1006.104 +BEGIN:DAYLIGHT
1006.105 +TZOFFSETFROM:+0300
1006.106 +TZOFFSETTO:+0400
1006.107 +TZNAME:MSD
1006.108 +DTSTART:19210214T230000
1006.109 +RDATE:19210214T230000
1006.110 +RDATE:19810401T000000
1006.111 +RDATE:19820401T000000
1006.112 +RDATE:19830401T000000
1006.113 +RDATE:19840401T000000
1006.114 +RDATE:19850331T020000
1006.115 +RDATE:19860330T020000
1006.116 +RDATE:19870329T020000
1006.117 +RDATE:19880327T020000
1006.118 +RDATE:19890326T020000
1006.119 +RDATE:19900325T020000
1006.120 +RDATE:19920328T230000
1006.121 +RDATE:19930328T020000
1006.122 +RDATE:19940327T020000
1006.123 +RDATE:19950326T020000
1006.124 +RDATE:19960331T020000
1006.125 +RDATE:19970330T020000
1006.126 +RDATE:19980329T020000
1006.127 +RDATE:19990328T020000
1006.128 +RDATE:20000326T020000
1006.129 +RDATE:20010325T020000
1006.130 +RDATE:20020331T020000
1006.131 +RDATE:20030330T020000
1006.132 +RDATE:20040328T020000
1006.133 +RDATE:20050327T020000
1006.134 +RDATE:20060326T020000
1006.135 +RDATE:20070325T020000
1006.136 +RDATE:20080330T020000
1006.137 +RDATE:20090329T020000
1006.138 +RDATE:20100328T020000
1006.139 +END:DAYLIGHT
1006.140 +BEGIN:DAYLIGHT
1006.141 +TZOFFSETFROM:+0400
1006.142 +TZOFFSETTO:+0500
1006.143 +TZNAME:MSD
1006.144 +DTSTART:19210320T230000
1006.145 +RDATE:19210320T230000
1006.146 +END:DAYLIGHT
1006.147 +BEGIN:DAYLIGHT
1006.148 +TZOFFSETFROM:+0500
1006.149 +TZOFFSETTO:+0400
1006.150 +TZNAME:MSD
1006.151 +DTSTART:19210901T000000
1006.152 +RDATE:19210901T000000
1006.153 +END:DAYLIGHT
1006.154 +BEGIN:STANDARD
1006.155 +TZOFFSETFROM:+0300
1006.156 +TZOFFSETTO:+0200
1006.157 +TZNAME:EET
1006.158 +DTSTART:19221001T000000
1006.159 +RDATE:19221001T000000
1006.160 +RDATE:19910929T030000
1006.161 +END:STANDARD
1006.162 +BEGIN:STANDARD
1006.163 +TZOFFSETFROM:+0200
1006.164 +TZOFFSETTO:+0300
1006.165 +TZNAME:MSK
1006.166 +DTSTART:19300621T000000
1006.167 +RDATE:19300621T000000
1006.168 +RDATE:19920119T020000
1006.169 +END:STANDARD
1006.170 +BEGIN:DAYLIGHT
1006.171 +TZOFFSETFROM:+0300
1006.172 +TZOFFSETTO:+0300
1006.173 +TZNAME:EEST
1006.174 +DTSTART:19910331T020000
1006.175 +RDATE:19910331T020000
1006.176 +END:DAYLIGHT
1006.177 +BEGIN:STANDARD
1006.178 +TZOFFSETFROM:+0300
1006.179 +TZOFFSETTO:+0400
1006.180 +TZNAME:MSK
1006.181 +DTSTART:20110327T020000
1006.182 +RDATE:20110327T020000
1006.183 +END:STANDARD
1006.184 +END:VTIMEZONE
1006.185 +END:VCALENDAR
  1007.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1007.2 +++ b/src/zoneinfo/Europe/Nicosia.ics	Tue Feb 10 18:12:00 2015 +0100
  1007.3 @@ -0,0 +1,96 @@
  1007.4 +BEGIN:VCALENDAR
  1007.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1007.6 +VERSION:2.0
  1007.7 +BEGIN:VTIMEZONE
  1007.8 +TZID:Europe/Nicosia
  1007.9 +TZURL:http://tzurl.org/zoneinfo/Europe/Nicosia
 1007.10 +X-LIC-LOCATION:Europe/Nicosia
 1007.11 +BEGIN:STANDARD
 1007.12 +TZOFFSETFROM:+0300
 1007.13 +TZOFFSETTO:+0200
 1007.14 +TZNAME:EET
 1007.15 +DTSTART:19981025T040000
 1007.16 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
 1007.17 +END:STANDARD
 1007.18 +BEGIN:DAYLIGHT
 1007.19 +TZOFFSETFROM:+0200
 1007.20 +TZOFFSETTO:+0300
 1007.21 +TZNAME:EEST
 1007.22 +DTSTART:19990328T030000
 1007.23 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
 1007.24 +END:DAYLIGHT
 1007.25 +BEGIN:STANDARD
 1007.26 +TZOFFSETFROM:+021328
 1007.27 +TZOFFSETTO:+0200
 1007.28 +TZNAME:EET
 1007.29 +DTSTART:19211114T000000
 1007.30 +RDATE:19211114T000000
 1007.31 +END:STANDARD
 1007.32 +BEGIN:DAYLIGHT
 1007.33 +TZOFFSETFROM:+0200
 1007.34 +TZOFFSETTO:+0300
 1007.35 +TZNAME:EEST
 1007.36 +DTSTART:19750413T000000
 1007.37 +RDATE:19750413T000000
 1007.38 +RDATE:19760515T000000
 1007.39 +RDATE:19770403T000000
 1007.40 +RDATE:19780402T000000
 1007.41 +RDATE:19790401T000000
 1007.42 +RDATE:19800406T000000
 1007.43 +RDATE:19810329T000000
 1007.44 +RDATE:19820328T000000
 1007.45 +RDATE:19830327T000000
 1007.46 +RDATE:19840325T000000
 1007.47 +RDATE:19850331T000000
 1007.48 +RDATE:19860330T000000
 1007.49 +RDATE:19870329T000000
 1007.50 +RDATE:19880327T000000
 1007.51 +RDATE:19890326T000000
 1007.52 +RDATE:19900325T000000
 1007.53 +RDATE:19910331T000000
 1007.54 +RDATE:19920329T000000
 1007.55 +RDATE:19930328T000000
 1007.56 +RDATE:19940327T000000
 1007.57 +RDATE:19950326T000000
 1007.58 +RDATE:19960331T000000
 1007.59 +RDATE:19970330T000000
 1007.60 +RDATE:19980329T000000
 1007.61 +END:DAYLIGHT
 1007.62 +BEGIN:STANDARD
 1007.63 +TZOFFSETFROM:+0300
 1007.64 +TZOFFSETTO:+0200
 1007.65 +TZNAME:EET
 1007.66 +DTSTART:19751012T000000
 1007.67 +RDATE:19751012T000000
 1007.68 +RDATE:19761011T000000
 1007.69 +RDATE:19770925T000000
 1007.70 +RDATE:19781002T000000
 1007.71 +RDATE:19790930T000000
 1007.72 +RDATE:19800928T000000
 1007.73 +RDATE:19810927T000000
 1007.74 +RDATE:19820926T000000
 1007.75 +RDATE:19830925T000000
 1007.76 +RDATE:19840930T000000
 1007.77 +RDATE:19850929T000000
 1007.78 +RDATE:19860928T000000
 1007.79 +RDATE:19870927T000000
 1007.80 +RDATE:19880925T000000
 1007.81 +RDATE:19890924T000000
 1007.82 +RDATE:19900930T000000
 1007.83 +RDATE:19910929T000000
 1007.84 +RDATE:19920927T000000
 1007.85 +RDATE:19930926T000000
 1007.86 +RDATE:19940925T000000
 1007.87 +RDATE:19950924T000000
 1007.88 +RDATE:19960929T000000
 1007.89 +RDATE:19970928T000000
 1007.90 +END:STANDARD
 1007.91 +BEGIN:DAYLIGHT
 1007.92 +TZOFFSETFROM:+0300
 1007.93 +TZOFFSETTO:+0300
 1007.94 +TZNAME:EEST
 1007.95 +DTSTART:19980901T000000
 1007.96 +RDATE:19980901T000000
 1007.97 +END:DAYLIGHT
 1007.98 +END:VTIMEZONE
 1007.99 +END:VCALENDAR
  1008.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1008.2 +++ b/src/zoneinfo/Europe/Oslo.ics	Tue Feb 10 18:12:00 2015 +0100
  1008.3 @@ -0,0 +1,90 @@
  1008.4 +BEGIN:VCALENDAR
  1008.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1008.6 +VERSION:2.0
  1008.7 +BEGIN:VTIMEZONE
  1008.8 +TZID:Europe/Oslo
  1008.9 +TZURL:http://tzurl.org/zoneinfo/Europe/Oslo
 1008.10 +X-LIC-LOCATION:Europe/Oslo
 1008.11 +BEGIN:DAYLIGHT
 1008.12 +TZOFFSETFROM:+0100
 1008.13 +TZOFFSETTO:+0200
 1008.14 +TZNAME:CEST
 1008.15 +DTSTART:19810329T020000
 1008.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
 1008.17 +END:DAYLIGHT
 1008.18 +BEGIN:STANDARD
 1008.19 +TZOFFSETFROM:+0200
 1008.20 +TZOFFSETTO:+0100
 1008.21 +TZNAME:CET
 1008.22 +DTSTART:19961027T030000
 1008.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
 1008.24 +END:STANDARD
 1008.25 +BEGIN:STANDARD
 1008.26 +TZOFFSETFROM:+0043
 1008.27 +TZOFFSETTO:+0100
 1008.28 +TZNAME:CET
 1008.29 +DTSTART:18950101T000000
 1008.30 +RDATE:18950101T000000
 1008.31 +END:STANDARD
 1008.32 +BEGIN:DAYLIGHT
 1008.33 +TZOFFSETFROM:+0100
 1008.34 +TZOFFSETTO:+0200
 1008.35 +TZNAME:CEST
 1008.36 +DTSTART:19160522T010000
 1008.37 +RDATE:19160522T010000
 1008.38 +RDATE:19400810T230000
 1008.39 +RDATE:19430329T020000
 1008.40 +RDATE:19440403T020000
 1008.41 +RDATE:19450402T020000
 1008.42 +RDATE:19590315T020000
 1008.43 +RDATE:19600320T020000
 1008.44 +RDATE:19610319T020000
 1008.45 +RDATE:19620318T020000
 1008.46 +RDATE:19630317T020000
 1008.47 +RDATE:19640315T020000
 1008.48 +RDATE:19650425T020000
 1008.49 +RDATE:19800406T020000
 1008.50 +END:DAYLIGHT
 1008.51 +BEGIN:STANDARD
 1008.52 +TZOFFSETFROM:+0200
 1008.53 +TZOFFSETTO:+0100
 1008.54 +TZNAME:CET
 1008.55 +DTSTART:19160930T000000
 1008.56 +RDATE:19160930T000000
 1008.57 +RDATE:19421102T030000
 1008.58 +RDATE:19431004T030000
 1008.59 +RDATE:19441002T030000
 1008.60 +RDATE:19451001T030000
 1008.61 +RDATE:19590920T030000
 1008.62 +RDATE:19600918T030000
 1008.63 +RDATE:19610917T030000
 1008.64 +RDATE:19620916T030000
 1008.65 +RDATE:19630915T030000
 1008.66 +RDATE:19640920T030000
 1008.67 +RDATE:19650919T030000
 1008.68 +RDATE:19800928T030000
 1008.69 +RDATE:19810927T030000
 1008.70 +RDATE:19820926T030000
 1008.71 +RDATE:19830925T030000
 1008.72 +RDATE:19840930T030000
 1008.73 +RDATE:19850929T030000
 1008.74 +RDATE:19860928T030000
 1008.75 +RDATE:19870927T030000
 1008.76 +RDATE:19880925T030000
 1008.77 +RDATE:19890924T030000
 1008.78 +RDATE:19900930T030000
 1008.79 +RDATE:19910929T030000
 1008.80 +RDATE:19920927T030000
 1008.81 +RDATE:19930926T030000
 1008.82 +RDATE:19940925T030000
 1008.83 +RDATE:19950924T030000
 1008.84 +END:STANDARD
 1008.85 +BEGIN:STANDARD
 1008.86 +TZOFFSETFROM:+0100
 1008.87 +TZOFFSETTO:+0100
 1008.88 +TZNAME:CET
 1008.89 +DTSTART:19800101T000000
 1008.90 +RDATE:19800101T000000
 1008.91 +END:STANDARD
 1008.92 +END:VTIMEZONE
 1008.93 +END:VCALENDAR
  1009.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1009.2 +++ b/src/zoneinfo/Europe/Paris.ics	Tue Feb 10 18:12:00 2015 +0100
  1009.3 @@ -0,0 +1,169 @@
  1009.4 +BEGIN:VCALENDAR
  1009.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1009.6 +VERSION:2.0
  1009.7 +BEGIN:VTIMEZONE
  1009.8 +TZID:Europe/Paris
  1009.9 +TZURL:http://tzurl.org/zoneinfo/Europe/Paris
 1009.10 +X-LIC-LOCATION:Europe/Paris
 1009.11 +BEGIN:DAYLIGHT
 1009.12 +TZOFFSETFROM:+0100
 1009.13 +TZOFFSETTO:+0200
 1009.14 +TZNAME:CEST
 1009.15 +DTSTART:19810329T020000
 1009.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
 1009.17 +END:DAYLIGHT
 1009.18 +BEGIN:STANDARD
 1009.19 +TZOFFSETFROM:+0200
 1009.20 +TZOFFSETTO:+0100
 1009.21 +TZNAME:CET
 1009.22 +DTSTART:19961027T030000
 1009.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
 1009.24 +END:STANDARD
 1009.25 +BEGIN:STANDARD
 1009.26 +TZOFFSETFROM:+000921
 1009.27 +TZOFFSETTO:+000921
 1009.28 +TZNAME:PMT
 1009.29 +DTSTART:18910315T000100
 1009.30 +RDATE:18910315T000100
 1009.31 +END:STANDARD
 1009.32 +BEGIN:STANDARD
 1009.33 +TZOFFSETFROM:+000921
 1009.34 +TZOFFSETTO:+0000
 1009.35 +TZNAME:WET
 1009.36 +DTSTART:19110311T000100
 1009.37 +RDATE:19110311T000100
 1009.38 +END:STANDARD
 1009.39 +BEGIN:DAYLIGHT
 1009.40 +TZOFFSETFROM:+0000
 1009.41 +TZOFFSETTO:+0100
 1009.42 +TZNAME:WEST
 1009.43 +DTSTART:19160614T230000
 1009.44 +RDATE:19160614T230000
 1009.45 +RDATE:19170324T230000
 1009.46 +RDATE:19180309T230000
 1009.47 +RDATE:19190301T230000
 1009.48 +RDATE:19200214T230000
 1009.49 +RDATE:19210314T230000
 1009.50 +RDATE:19220325T230000
 1009.51 +RDATE:19230526T230000
 1009.52 +RDATE:19240329T230000
 1009.53 +RDATE:19250404T230000
 1009.54 +RDATE:19260417T230000
 1009.55 +RDATE:19270409T230000
 1009.56 +RDATE:19280414T230000
 1009.57 +RDATE:19290420T230000
 1009.58 +RDATE:19300412T230000
 1009.59 +RDATE:19310418T230000
 1009.60 +RDATE:19320402T230000
 1009.61 +RDATE:19330325T230000
 1009.62 +RDATE:19340407T230000
 1009.63 +RDATE:19350330T230000
 1009.64 +RDATE:19360418T230000
 1009.65 +RDATE:19370403T230000
 1009.66 +RDATE:19380326T230000
 1009.67 +RDATE:19390415T230000
 1009.68 +RDATE:19400225T020000
 1009.69 +END:DAYLIGHT
 1009.70 +BEGIN:STANDARD
 1009.71 +TZOFFSETFROM:+0100
 1009.72 +TZOFFSETTO:+0000
 1009.73 +TZNAME:WET
 1009.74 +DTSTART:19161002T000000
 1009.75 +RDATE:19161002T000000
 1009.76 +RDATE:19171008T000000
 1009.77 +RDATE:19181007T000000
 1009.78 +RDATE:19191006T000000
 1009.79 +RDATE:19201024T000000
 1009.80 +RDATE:19211026T000000
 1009.81 +RDATE:19221008T000000
 1009.82 +RDATE:19231007T000000
 1009.83 +RDATE:19241005T000000
 1009.84 +RDATE:19251004T000000
 1009.85 +RDATE:19261003T000000
 1009.86 +RDATE:19271002T000000
 1009.87 +RDATE:19281007T000000
 1009.88 +RDATE:19291006T000000
 1009.89 +RDATE:19301005T000000
 1009.90 +RDATE:19311004T000000
 1009.91 +RDATE:19321002T000000
 1009.92 +RDATE:19331008T000000
 1009.93 +RDATE:19341007T000000
 1009.94 +RDATE:19351006T000000
 1009.95 +RDATE:19361004T000000
 1009.96 +RDATE:19371003T000000
 1009.97 +RDATE:19381002T000000
 1009.98 +RDATE:19391119T000000
 1009.99 +END:STANDARD
1009.100 +BEGIN:DAYLIGHT
1009.101 +TZOFFSETFROM:+0100
1009.102 +TZOFFSETTO:+0200
1009.103 +TZNAME:CEST
1009.104 +DTSTART:19400614T230000
1009.105 +RDATE:19400614T230000
1009.106 +RDATE:19430329T020000
1009.107 +RDATE:19440403T020000
1009.108 +RDATE:19760328T010000
1009.109 +RDATE:19770403T020000
1009.110 +RDATE:19780402T020000
1009.111 +RDATE:19790401T020000
1009.112 +RDATE:19800406T020000
1009.113 +END:DAYLIGHT
1009.114 +BEGIN:STANDARD
1009.115 +TZOFFSETFROM:+0200
1009.116 +TZOFFSETTO:+0100
1009.117 +TZNAME:CET
1009.118 +DTSTART:19421102T030000
1009.119 +RDATE:19421102T030000
1009.120 +RDATE:19431004T030000
1009.121 +RDATE:19450916T030000
1009.122 +RDATE:19760926T010000
1009.123 +RDATE:19770925T030000
1009.124 +RDATE:19781001T030000
1009.125 +RDATE:19790930T030000
1009.126 +RDATE:19800928T030000
1009.127 +RDATE:19810927T030000
1009.128 +RDATE:19820926T030000
1009.129 +RDATE:19830925T030000
1009.130 +RDATE:19840930T030000
1009.131 +RDATE:19850929T030000
1009.132 +RDATE:19860928T030000
1009.133 +RDATE:19870927T030000
1009.134 +RDATE:19880925T030000
1009.135 +RDATE:19890924T030000
1009.136 +RDATE:19900930T030000
1009.137 +RDATE:19910929T030000
1009.138 +RDATE:19920927T030000
1009.139 +RDATE:19930926T030000
1009.140 +RDATE:19940925T030000
1009.141 +RDATE:19950924T030000
1009.142 +END:STANDARD
1009.143 +BEGIN:DAYLIGHT
1009.144 +TZOFFSETFROM:+0200
1009.145 +TZOFFSETTO:+0200
1009.146 +TZNAME:WEMT
1009.147 +DTSTART:19440825T000000
1009.148 +RDATE:19440825T000000
1009.149 +END:DAYLIGHT
1009.150 +BEGIN:DAYLIGHT
1009.151 +TZOFFSETFROM:+0200
1009.152 +TZOFFSETTO:+0100
1009.153 +TZNAME:WEST
1009.154 +DTSTART:19441008T010000
1009.155 +RDATE:19441008T010000
1009.156 +END:DAYLIGHT
1009.157 +BEGIN:DAYLIGHT
1009.158 +TZOFFSETFROM:+0100
1009.159 +TZOFFSETTO:+0200
1009.160 +TZNAME:WEMT
1009.161 +DTSTART:19450402T020000
1009.162 +RDATE:19450402T020000
1009.163 +END:DAYLIGHT
1009.164 +BEGIN:STANDARD
1009.165 +TZOFFSETFROM:+0100
1009.166 +TZOFFSETTO:+0100
1009.167 +TZNAME:CET
1009.168 +DTSTART:19770101T000000
1009.169 +RDATE:19770101T000000
1009.170 +END:STANDARD
1009.171 +END:VTIMEZONE
1009.172 +END:VCALENDAR
  1010.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1010.2 +++ b/src/zoneinfo/Europe/Podgorica.ics	Tue Feb 10 18:12:00 2015 +0100
  1010.3 @@ -0,0 +1,71 @@
  1010.4 +BEGIN:VCALENDAR
  1010.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1010.6 +VERSION:2.0
  1010.7 +BEGIN:VTIMEZONE
  1010.8 +TZID:Europe/Podgorica
  1010.9 +TZURL:http://tzurl.org/zoneinfo/Europe/Podgorica
 1010.10 +X-LIC-LOCATION:Europe/Podgorica
 1010.11 +BEGIN:DAYLIGHT
 1010.12 +TZOFFSETFROM:+0100
 1010.13 +TZOFFSETTO:+0200
 1010.14 +TZNAME:CEST
 1010.15 +DTSTART:19830327T020000
 1010.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
 1010.17 +END:DAYLIGHT
 1010.18 +BEGIN:STANDARD
 1010.19 +TZOFFSETFROM:+0200
 1010.20 +TZOFFSETTO:+0100
 1010.21 +TZNAME:CET
 1010.22 +DTSTART:19961027T030000
 1010.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
 1010.24 +END:STANDARD
 1010.25 +BEGIN:STANDARD
 1010.26 +TZOFFSETFROM:+0122
 1010.27 +TZOFFSETTO:+0100
 1010.28 +TZNAME:CET
 1010.29 +DTSTART:18840101T000000
 1010.30 +RDATE:18840101T000000
 1010.31 +END:STANDARD
 1010.32 +BEGIN:DAYLIGHT
 1010.33 +TZOFFSETFROM:+0100
 1010.34 +TZOFFSETTO:+0200
 1010.35 +TZNAME:CEST
 1010.36 +DTSTART:19410418T230000
 1010.37 +RDATE:19410418T230000
 1010.38 +RDATE:19430329T020000
 1010.39 +RDATE:19440403T020000
 1010.40 +RDATE:19450508T020000
 1010.41 +END:DAYLIGHT
 1010.42 +BEGIN:STANDARD
 1010.43 +TZOFFSETFROM:+0200
 1010.44 +TZOFFSETTO:+0100
 1010.45 +TZNAME:CET
 1010.46 +DTSTART:19421102T030000
 1010.47 +RDATE:19421102T030000
 1010.48 +RDATE:19431004T030000
 1010.49 +RDATE:19441002T030000
 1010.50 +RDATE:19450916T030000
 1010.51 +RDATE:19830925T030000
 1010.52 +RDATE:19840930T030000
 1010.53 +RDATE:19850929T030000
 1010.54 +RDATE:19860928T030000
 1010.55 +RDATE:19870927T030000
 1010.56 +RDATE:19880925T030000
 1010.57 +RDATE:19890924T030000
 1010.58 +RDATE:19900930T030000
 1010.59 +RDATE:19910929T030000
 1010.60 +RDATE:19920927T030000
 1010.61 +RDATE:19930926T030000
 1010.62 +RDATE:19940925T030000
 1010.63 +RDATE:19950924T030000
 1010.64 +END:STANDARD
 1010.65 +BEGIN:STANDARD
 1010.66 +TZOFFSETFROM:+0100
 1010.67 +TZOFFSETTO:+0100
 1010.68 +TZNAME:CET
 1010.69 +DTSTART:19450101T000000
 1010.70 +RDATE:19450101T000000
 1010.71 +RDATE:19821127T000000
 1010.72 +END:STANDARD
 1010.73 +END:VTIMEZONE
 1010.74 +END:VCALENDAR
  1011.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1011.2 +++ b/src/zoneinfo/Europe/Prague.ics	Tue Feb 10 18:12:00 2015 +0100
  1011.3 @@ -0,0 +1,97 @@
  1011.4 +BEGIN:VCALENDAR
  1011.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1011.6 +VERSION:2.0
  1011.7 +BEGIN:VTIMEZONE
  1011.8 +TZID:Europe/Prague
  1011.9 +TZURL:http://tzurl.org/zoneinfo/Europe/Prague
 1011.10 +X-LIC-LOCATION:Europe/Prague
 1011.11 +BEGIN:DAYLIGHT
 1011.12 +TZOFFSETFROM:+0100
 1011.13 +TZOFFSETTO:+0200
 1011.14 +TZNAME:CEST
 1011.15 +DTSTART:19810329T020000
 1011.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
 1011.17 +END:DAYLIGHT
 1011.18 +BEGIN:STANDARD
 1011.19 +TZOFFSETFROM:+0200
 1011.20 +TZOFFSETTO:+0100
 1011.21 +TZNAME:CET
 1011.22 +DTSTART:19961027T030000
 1011.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
 1011.24 +END:STANDARD
 1011.25 +BEGIN:STANDARD
 1011.26 +TZOFFSETFROM:+005744
 1011.27 +TZOFFSETTO:+005744
 1011.28 +TZNAME:PMT
 1011.29 +DTSTART:18500101T000000
 1011.30 +RDATE:18500101T000000
 1011.31 +END:STANDARD
 1011.32 +BEGIN:STANDARD
 1011.33 +TZOFFSETFROM:+005744
 1011.34 +TZOFFSETTO:+0100
 1011.35 +TZNAME:CET
 1011.36 +DTSTART:18911001T000000
 1011.37 +RDATE:18911001T000000
 1011.38 +END:STANDARD
 1011.39 +BEGIN:DAYLIGHT
 1011.40 +TZOFFSETFROM:+0100
 1011.41 +TZOFFSETTO:+0200
 1011.42 +TZNAME:CEST
 1011.43 +DTSTART:19160430T230000
 1011.44 +RDATE:19160430T230000
 1011.45 +RDATE:19170416T020000
 1011.46 +RDATE:19180415T020000
 1011.47 +RDATE:19400401T020000
 1011.48 +RDATE:19430329T020000
 1011.49 +RDATE:19440403T020000
 1011.50 +RDATE:19450408T020000
 1011.51 +RDATE:19460506T020000
 1011.52 +RDATE:19470420T020000
 1011.53 +RDATE:19480418T020000
 1011.54 +RDATE:19490409T020000
 1011.55 +RDATE:19790401T020000
 1011.56 +RDATE:19800406T020000
 1011.57 +END:DAYLIGHT
 1011.58 +BEGIN:STANDARD
 1011.59 +TZOFFSETFROM:+0200
 1011.60 +TZOFFSETTO:+0100
 1011.61 +TZNAME:CET
 1011.62 +DTSTART:19161001T010000
 1011.63 +RDATE:19161001T010000
 1011.64 +RDATE:19170917T030000
 1011.65 +RDATE:19180916T030000
 1011.66 +RDATE:19421102T030000
 1011.67 +RDATE:19431004T030000
 1011.68 +RDATE:19440917T030000
 1011.69 +RDATE:19451118T030000
 1011.70 +RDATE:19461006T030000
 1011.71 +RDATE:19471005T030000
 1011.72 +RDATE:19481003T030000
 1011.73 +RDATE:19491002T030000
 1011.74 +RDATE:19790930T030000
 1011.75 +RDATE:19800928T030000
 1011.76 +RDATE:19810927T030000
 1011.77 +RDATE:19820926T030000
 1011.78 +RDATE:19830925T030000
 1011.79 +RDATE:19840930T030000
 1011.80 +RDATE:19850929T030000
 1011.81 +RDATE:19860928T030000
 1011.82 +RDATE:19870927T030000
 1011.83 +RDATE:19880925T030000
 1011.84 +RDATE:19890924T030000
 1011.85 +RDATE:19900930T030000
 1011.86 +RDATE:19910929T030000
 1011.87 +RDATE:19920927T030000
 1011.88 +RDATE:19930926T030000
 1011.89 +RDATE:19940925T030000
 1011.90 +RDATE:19950924T030000
 1011.91 +END:STANDARD
 1011.92 +BEGIN:STANDARD
 1011.93 +TZOFFSETFROM:+0100
 1011.94 +TZOFFSETTO:+0100
 1011.95 +TZNAME:CET
 1011.96 +DTSTART:19790101T000000
 1011.97 +RDATE:19790101T000000
 1011.98 +END:STANDARD
 1011.99 +END:VTIMEZONE
1011.100 +END:VCALENDAR
  1012.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1012.2 +++ b/src/zoneinfo/Europe/Riga.ics	Tue Feb 10 18:12:00 2015 +0100
  1012.3 @@ -0,0 +1,168 @@
  1012.4 +BEGIN:VCALENDAR
  1012.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1012.6 +VERSION:2.0
  1012.7 +BEGIN:VTIMEZONE
  1012.8 +TZID:Europe/Riga
  1012.9 +TZURL:http://tzurl.org/zoneinfo/Europe/Riga
 1012.10 +X-LIC-LOCATION:Europe/Riga
 1012.11 +BEGIN:DAYLIGHT
 1012.12 +TZOFFSETFROM:+0200
 1012.13 +TZOFFSETTO:+0300
 1012.14 +TZNAME:EEST
 1012.15 +DTSTART:20010325T030000
 1012.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
 1012.17 +END:DAYLIGHT
 1012.18 +BEGIN:STANDARD
 1012.19 +TZOFFSETFROM:+0300
 1012.20 +TZOFFSETTO:+0200
 1012.21 +TZNAME:EET
 1012.22 +DTSTART:20011028T040000
 1012.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
 1012.24 +END:STANDARD
 1012.25 +BEGIN:STANDARD
 1012.26 +TZOFFSETFROM:+013624
 1012.27 +TZOFFSETTO:+013624
 1012.28 +TZNAME:RMT
 1012.29 +DTSTART:18800101T000000
 1012.30 +RDATE:18800101T000000
 1012.31 +END:STANDARD
 1012.32 +BEGIN:DAYLIGHT
 1012.33 +TZOFFSETFROM:+013624
 1012.34 +TZOFFSETTO:+023624
 1012.35 +TZNAME:LST
 1012.36 +DTSTART:19180415T020000
 1012.37 +RDATE:19180415T020000
 1012.38 +RDATE:19190401T020000
 1012.39 +END:DAYLIGHT
 1012.40 +BEGIN:STANDARD
 1012.41 +TZOFFSETFROM:+023624
 1012.42 +TZOFFSETTO:+013624
 1012.43 +TZNAME:RMT
 1012.44 +DTSTART:19180916T030000
 1012.45 +RDATE:19180916T030000
 1012.46 +RDATE:19190522T030000
 1012.47 +END:STANDARD
 1012.48 +BEGIN:STANDARD
 1012.49 +TZOFFSETFROM:+013624
 1012.50 +TZOFFSETTO:+0200
 1012.51 +TZNAME:EET
 1012.52 +DTSTART:19260511T000000
 1012.53 +RDATE:19260511T000000
 1012.54 +END:STANDARD
 1012.55 +BEGIN:STANDARD
 1012.56 +TZOFFSETFROM:+0200
 1012.57 +TZOFFSETTO:+0300
 1012.58 +TZNAME:MSK
 1012.59 +DTSTART:19400805T000000
 1012.60 +RDATE:19400805T000000
 1012.61 +END:STANDARD
 1012.62 +BEGIN:DAYLIGHT
 1012.63 +TZOFFSETFROM:+0300
 1012.64 +TZOFFSETTO:+0200
 1012.65 +TZNAME:CEST
 1012.66 +DTSTART:19410701T000000
 1012.67 +RDATE:19410701T000000
 1012.68 +END:DAYLIGHT
 1012.69 +BEGIN:STANDARD
 1012.70 +TZOFFSETFROM:+0200
 1012.71 +TZOFFSETTO:+0100
 1012.72 +TZNAME:CET
 1012.73 +DTSTART:19421102T030000
 1012.74 +RDATE:19421102T030000
 1012.75 +RDATE:19431004T030000
 1012.76 +RDATE:19441002T030000
 1012.77 +END:STANDARD
 1012.78 +BEGIN:DAYLIGHT
 1012.79 +TZOFFSETFROM:+0100
 1012.80 +TZOFFSETTO:+0200
 1012.81 +TZNAME:CEST
 1012.82 +DTSTART:19430329T020000
 1012.83 +RDATE:19430329T020000
 1012.84 +RDATE:19440403T020000
 1012.85 +END:DAYLIGHT
 1012.86 +BEGIN:STANDARD
 1012.87 +TZOFFSETFROM:+0100
 1012.88 +TZOFFSETTO:+0300
 1012.89 +TZNAME:MSK
 1012.90 +DTSTART:19441013T000000
 1012.91 +RDATE:19441013T000000
 1012.92 +END:STANDARD
 1012.93 +BEGIN:DAYLIGHT
 1012.94 +TZOFFSETFROM:+0300
 1012.95 +TZOFFSETTO:+0400
 1012.96 +TZNAME:MSD
 1012.97 +DTSTART:19810401T000000
 1012.98 +RDATE:19810401T000000
 1012.99 +RDATE:19820401T000000
1012.100 +RDATE:19830401T000000
1012.101 +RDATE:19840401T000000
1012.102 +RDATE:19850331T020000
1012.103 +RDATE:19860330T020000
1012.104 +RDATE:19870329T020000
1012.105 +RDATE:19880327T020000
1012.106 +END:DAYLIGHT
1012.107 +BEGIN:STANDARD
1012.108 +TZOFFSETFROM:+0400
1012.109 +TZOFFSETTO:+0300
1012.110 +TZNAME:MSK
1012.111 +DTSTART:19811001T000000
1012.112 +RDATE:19811001T000000
1012.113 +RDATE:19821001T000000
1012.114 +RDATE:19831001T000000
1012.115 +RDATE:19840930T030000
1012.116 +RDATE:19850929T030000
1012.117 +RDATE:19860928T030000
1012.118 +RDATE:19870927T030000
1012.119 +RDATE:19880925T030000
1012.120 +END:STANDARD
1012.121 +BEGIN:DAYLIGHT
1012.122 +TZOFFSETFROM:+0300
1012.123 +TZOFFSETTO:+0300
1012.124 +TZNAME:EEST
1012.125 +DTSTART:19890326T020000
1012.126 +RDATE:19890326T020000
1012.127 +END:DAYLIGHT
1012.128 +BEGIN:STANDARD
1012.129 +TZOFFSETFROM:+0300
1012.130 +TZOFFSETTO:+0200
1012.131 +TZNAME:EET
1012.132 +DTSTART:19890924T030000
1012.133 +RDATE:19890924T030000
1012.134 +RDATE:19900930T030000
1012.135 +RDATE:19910929T030000
1012.136 +RDATE:19920927T030000
1012.137 +RDATE:19930926T030000
1012.138 +RDATE:19940925T030000
1012.139 +RDATE:19950924T030000
1012.140 +RDATE:19960929T030000
1012.141 +RDATE:19971026T040000
1012.142 +RDATE:19981025T040000
1012.143 +RDATE:19991031T040000
1012.144 +END:STANDARD
1012.145 +BEGIN:DAYLIGHT
1012.146 +TZOFFSETFROM:+0200
1012.147 +TZOFFSETTO:+0300
1012.148 +TZNAME:EEST
1012.149 +DTSTART:19900325T020000
1012.150 +RDATE:19900325T020000
1012.151 +RDATE:19910331T020000
1012.152 +RDATE:19920329T020000
1012.153 +RDATE:19930328T020000
1012.154 +RDATE:19940327T020000
1012.155 +RDATE:19950326T020000
1012.156 +RDATE:19960331T020000
1012.157 +RDATE:19970330T030000
1012.158 +RDATE:19980329T030000
1012.159 +RDATE:19990328T030000
1012.160 +END:DAYLIGHT
1012.161 +BEGIN:STANDARD
1012.162 +TZOFFSETFROM:+0200
1012.163 +TZOFFSETTO:+0200
1012.164 +TZNAME:EET
1012.165 +DTSTART:19970121T000000
1012.166 +RDATE:19970121T000000
1012.167 +RDATE:20000229T000000
1012.168 +RDATE:20010102T000000
1012.169 +END:STANDARD
1012.170 +END:VTIMEZONE
1012.171 +END:VCALENDAR
  1013.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1013.2 +++ b/src/zoneinfo/Europe/Rome.ics	Tue Feb 10 18:12:00 2015 +0100
  1013.3 @@ -0,0 +1,132 @@
  1013.4 +BEGIN:VCALENDAR
  1013.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1013.6 +VERSION:2.0
  1013.7 +BEGIN:VTIMEZONE
  1013.8 +TZID:Europe/Rome
  1013.9 +TZURL:http://tzurl.org/zoneinfo/Europe/Rome
 1013.10 +X-LIC-LOCATION:Europe/Rome
 1013.11 +BEGIN:DAYLIGHT
 1013.12 +TZOFFSETFROM:+0100
 1013.13 +TZOFFSETTO:+0200
 1013.14 +TZNAME:CEST
 1013.15 +DTSTART:19810329T020000
 1013.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
 1013.17 +END:DAYLIGHT
 1013.18 +BEGIN:STANDARD
 1013.19 +TZOFFSETFROM:+0200
 1013.20 +TZOFFSETTO:+0100
 1013.21 +TZNAME:CET
 1013.22 +DTSTART:19961027T030000
 1013.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
 1013.24 +END:STANDARD
 1013.25 +BEGIN:STANDARD
 1013.26 +TZOFFSETFROM:+004956
 1013.27 +TZOFFSETTO:+004956
 1013.28 +TZNAME:RMT
 1013.29 +DTSTART:18660922T000000
 1013.30 +RDATE:18660922T000000
 1013.31 +END:STANDARD
 1013.32 +BEGIN:STANDARD
 1013.33 +TZOFFSETFROM:+004956
 1013.34 +TZOFFSETTO:+0100
 1013.35 +TZNAME:CET
 1013.36 +DTSTART:18931101T000000
 1013.37 +RDATE:18931101T000000
 1013.38 +END:STANDARD
 1013.39 +BEGIN:DAYLIGHT
 1013.40 +TZOFFSETFROM:+0100
 1013.41 +TZOFFSETTO:+0200
 1013.42 +TZNAME:CEST
 1013.43 +DTSTART:19160603T000000
 1013.44 +RDATE:19160603T000000
 1013.45 +RDATE:19170401T000000
 1013.46 +RDATE:19180310T000000
 1013.47 +RDATE:19190302T000000
 1013.48 +RDATE:19200321T000000
 1013.49 +RDATE:19400615T000000
 1013.50 +RDATE:19430329T020000
 1013.51 +RDATE:19440403T020000
 1013.52 +RDATE:19450402T020000
 1013.53 +RDATE:19460317T020000
 1013.54 +RDATE:19470316T000000
 1013.55 +RDATE:19480229T020000
 1013.56 +RDATE:19660522T000000
 1013.57 +RDATE:19670528T000000
 1013.58 +RDATE:19680526T000000
 1013.59 +RDATE:19690601T000000
 1013.60 +RDATE:19700531T000000
 1013.61 +RDATE:19710523T000000
 1013.62 +RDATE:19720528T000000
 1013.63 +RDATE:19730603T000000
 1013.64 +RDATE:19740526T000000
 1013.65 +RDATE:19750601T000000
 1013.66 +RDATE:19760530T000000
 1013.67 +RDATE:19770522T000000
 1013.68 +RDATE:19780528T000000
 1013.69 +RDATE:19790527T000000
 1013.70 +RDATE:19800406T020000
 1013.71 +END:DAYLIGHT
 1013.72 +BEGIN:STANDARD
 1013.73 +TZOFFSETFROM:+0200
 1013.74 +TZOFFSETTO:+0100
 1013.75 +TZNAME:CET
 1013.76 +DTSTART:19161001T010000
 1013.77 +RDATE:19161001T010000
 1013.78 +RDATE:19170930T010000
 1013.79 +RDATE:19181006T010000
 1013.80 +RDATE:19191005T010000
 1013.81 +RDATE:19200919T010000
 1013.82 +RDATE:19421102T030000
 1013.83 +RDATE:19431004T030000
 1013.84 +RDATE:19440917T010000
 1013.85 +RDATE:19450915T010000
 1013.86 +RDATE:19461006T030000
 1013.87 +RDATE:19471005T010000
 1013.88 +RDATE:19481003T030000
 1013.89 +RDATE:19660925T000000
 1013.90 +RDATE:19670924T000000
 1013.91 +RDATE:19680922T000000
 1013.92 +RDATE:19690928T000000
 1013.93 +RDATE:19700927T000000
 1013.94 +RDATE:19710926T010000
 1013.95 +RDATE:19721001T000000
 1013.96 +RDATE:19730930T000000
 1013.97 +RDATE:19740929T000000
 1013.98 +RDATE:19750928T010000
 1013.99 +RDATE:19760926T010000
1013.100 +RDATE:19770925T010000
1013.101 +RDATE:19781001T010000
1013.102 +RDATE:19790930T010000
1013.103 +RDATE:19800928T030000
1013.104 +RDATE:19810927T030000
1013.105 +RDATE:19820926T030000
1013.106 +RDATE:19830925T030000
1013.107 +RDATE:19840930T030000
1013.108 +RDATE:19850929T030000
1013.109 +RDATE:19860928T030000
1013.110 +RDATE:19870927T030000
1013.111 +RDATE:19880925T030000
1013.112 +RDATE:19890924T030000
1013.113 +RDATE:19900930T030000
1013.114 +RDATE:19910929T030000
1013.115 +RDATE:19920927T030000
1013.116 +RDATE:19930926T030000
1013.117 +RDATE:19940925T030000
1013.118 +RDATE:19950924T030000
1013.119 +END:STANDARD
1013.120 +BEGIN:DAYLIGHT
1013.121 +TZOFFSETFROM:+0200
1013.122 +TZOFFSETTO:+0200
1013.123 +TZNAME:CEST
1013.124 +DTSTART:19440701T000000
1013.125 +RDATE:19440701T000000
1013.126 +END:DAYLIGHT
1013.127 +BEGIN:STANDARD
1013.128 +TZOFFSETFROM:+0100
1013.129 +TZOFFSETTO:+0100
1013.130 +TZNAME:CET
1013.131 +DTSTART:19800101T000000
1013.132 +RDATE:19800101T000000
1013.133 +END:STANDARD
1013.134 +END:VTIMEZONE
1013.135 +END:VCALENDAR
  1014.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1014.2 +++ b/src/zoneinfo/Europe/Samara.ics	Tue Feb 10 18:12:00 2015 +0100
  1014.3 @@ -0,0 +1,158 @@
  1014.4 +BEGIN:VCALENDAR
  1014.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1014.6 +VERSION:2.0
  1014.7 +BEGIN:VTIMEZONE
  1014.8 +TZID:Europe/Samara
  1014.9 +TZURL:http://tzurl.org/zoneinfo/Europe/Samara
 1014.10 +X-LIC-LOCATION:Europe/Samara
 1014.11 +BEGIN:STANDARD
 1014.12 +TZOFFSETFROM:+032036
 1014.13 +TZOFFSETTO:+0300
 1014.14 +TZNAME:SAMT
 1014.15 +DTSTART:19190701T020000
 1014.16 +RDATE:19190701T020000
 1014.17 +END:STANDARD
 1014.18 +BEGIN:STANDARD
 1014.19 +TZOFFSETFROM:+0300
 1014.20 +TZOFFSETTO:+0400
 1014.21 +TZNAME:SAMT
 1014.22 +DTSTART:19300621T000000
 1014.23 +RDATE:19300621T000000
 1014.24 +RDATE:19911020T030000
 1014.25 +RDATE:20110327T020000
 1014.26 +END:STANDARD
 1014.27 +BEGIN:STANDARD
 1014.28 +TZOFFSETFROM:+0400
 1014.29 +TZOFFSETTO:+0400
 1014.30 +TZNAME:KUYT
 1014.31 +DTSTART:19350127T000000
 1014.32 +RDATE:19350127T000000
 1014.33 +END:STANDARD
 1014.34 +BEGIN:DAYLIGHT
 1014.35 +TZOFFSETFROM:+0400
 1014.36 +TZOFFSETTO:+0500
 1014.37 +TZNAME:KUYST
 1014.38 +DTSTART:19810401T000000
 1014.39 +RDATE:19810401T000000
 1014.40 +RDATE:19820401T000000
 1014.41 +RDATE:19830401T000000
 1014.42 +RDATE:19840401T000000
 1014.43 +RDATE:19850331T020000
 1014.44 +RDATE:19860330T020000
 1014.45 +RDATE:19870329T020000
 1014.46 +RDATE:19880327T020000
 1014.47 +END:DAYLIGHT
 1014.48 +BEGIN:STANDARD
 1014.49 +TZOFFSETFROM:+0500
 1014.50 +TZOFFSETTO:+0400
 1014.51 +TZNAME:KUYT
 1014.52 +DTSTART:19811001T000000
 1014.53 +RDATE:19811001T000000
 1014.54 +RDATE:19821001T000000
 1014.55 +RDATE:19831001T000000
 1014.56 +RDATE:19840930T030000
 1014.57 +RDATE:19850929T030000
 1014.58 +RDATE:19860928T030000
 1014.59 +RDATE:19870927T030000
 1014.60 +RDATE:19880925T030000
 1014.61 +END:STANDARD
 1014.62 +BEGIN:DAYLIGHT
 1014.63 +TZOFFSETFROM:+0400
 1014.64 +TZOFFSETTO:+0400
 1014.65 +TZNAME:KUYST
 1014.66 +DTSTART:19890326T020000
 1014.67 +RDATE:19890326T020000
 1014.68 +END:DAYLIGHT
 1014.69 +BEGIN:STANDARD
 1014.70 +TZOFFSETFROM:+0400
 1014.71 +TZOFFSETTO:+0300
 1014.72 +TZNAME:KUYT
 1014.73 +DTSTART:19890924T030000
 1014.74 +RDATE:19890924T030000
 1014.75 +RDATE:19900930T030000
 1014.76 +END:STANDARD
 1014.77 +BEGIN:DAYLIGHT
 1014.78 +TZOFFSETFROM:+0300
 1014.79 +TZOFFSETTO:+0400
 1014.80 +TZNAME:KUYST
 1014.81 +DTSTART:19900325T020000
 1014.82 +RDATE:19900325T020000
 1014.83 +END:DAYLIGHT
 1014.84 +BEGIN:DAYLIGHT
 1014.85 +TZOFFSETFROM:+0300
 1014.86 +TZOFFSETTO:+0300
 1014.87 +TZNAME:KUYST
 1014.88 +DTSTART:19910331T020000
 1014.89 +RDATE:19910331T020000
 1014.90 +END:DAYLIGHT
 1014.91 +BEGIN:STANDARD
 1014.92 +TZOFFSETFROM:+0300
 1014.93 +TZOFFSETTO:+0300
 1014.94 +TZNAME:KUYT
 1014.95 +DTSTART:19910929T030000
 1014.96 +RDATE:19910929T030000
 1014.97 +END:STANDARD
 1014.98 +BEGIN:DAYLIGHT
 1014.99 +TZOFFSETFROM:+0400
1014.100 +TZOFFSETTO:+0500
1014.101 +TZNAME:SAMST
1014.102 +DTSTART:19920328T230000
1014.103 +RDATE:19920328T230000
1014.104 +RDATE:19930328T020000
1014.105 +RDATE:19940327T020000
1014.106 +RDATE:19950326T020000
1014.107 +RDATE:19960331T020000
1014.108 +RDATE:19970330T020000
1014.109 +RDATE:19980329T020000
1014.110 +RDATE:19990328T020000
1014.111 +RDATE:20000326T020000
1014.112 +RDATE:20010325T020000
1014.113 +RDATE:20020331T020000
1014.114 +RDATE:20030330T020000
1014.115 +RDATE:20040328T020000
1014.116 +RDATE:20050327T020000
1014.117 +RDATE:20060326T020000
1014.118 +RDATE:20070325T020000
1014.119 +RDATE:20080330T020000
1014.120 +RDATE:20090329T020000
1014.121 +END:DAYLIGHT
1014.122 +BEGIN:STANDARD
1014.123 +TZOFFSETFROM:+0500
1014.124 +TZOFFSETTO:+0400
1014.125 +TZNAME:SAMT
1014.126 +DTSTART:19920926T230000
1014.127 +RDATE:19920926T230000
1014.128 +RDATE:19930926T030000
1014.129 +RDATE:19940925T030000
1014.130 +RDATE:19950924T030000
1014.131 +RDATE:19961027T030000
1014.132 +RDATE:19971026T030000
1014.133 +RDATE:19981025T030000
1014.134 +RDATE:19991031T030000
1014.135 +RDATE:20001029T030000
1014.136 +RDATE:20011028T030000
1014.137 +RDATE:20021027T030000
1014.138 +RDATE:20031026T030000
1014.139 +RDATE:20041031T030000
1014.140 +RDATE:20051030T030000
1014.141 +RDATE:20061029T030000
1014.142 +RDATE:20071028T030000
1014.143 +RDATE:20081026T030000
1014.144 +RDATE:20091025T030000
1014.145 +END:STANDARD
1014.146 +BEGIN:DAYLIGHT
1014.147 +TZOFFSETFROM:+0400
1014.148 +TZOFFSETTO:+0400
1014.149 +TZNAME:SAMST
1014.150 +DTSTART:20100328T020000
1014.151 +RDATE:20100328T020000
1014.152 +END:DAYLIGHT
1014.153 +BEGIN:STANDARD
1014.154 +TZOFFSETFROM:+0400
1014.155 +TZOFFSETTO:+0300
1014.156 +TZNAME:SAMT
1014.157 +DTSTART:20101031T030000
1014.158 +RDATE:20101031T030000
1014.159 +END:STANDARD
1014.160 +END:VTIMEZONE
1014.161 +END:VCALENDAR
  1015.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1015.2 +++ b/src/zoneinfo/Europe/San_Marino.ics	Tue Feb 10 18:12:00 2015 +0100
  1015.3 @@ -0,0 +1,132 @@
  1015.4 +BEGIN:VCALENDAR
  1015.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1015.6 +VERSION:2.0
  1015.7 +BEGIN:VTIMEZONE
  1015.8 +TZID:Europe/San_Marino
  1015.9 +TZURL:http://tzurl.org/zoneinfo/Europe/San_Marino
 1015.10 +X-LIC-LOCATION:Europe/San_Marino
 1015.11 +BEGIN:DAYLIGHT
 1015.12 +TZOFFSETFROM:+0100
 1015.13 +TZOFFSETTO:+0200
 1015.14 +TZNAME:CEST
 1015.15 +DTSTART:19810329T020000
 1015.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
 1015.17 +END:DAYLIGHT
 1015.18 +BEGIN:STANDARD
 1015.19 +TZOFFSETFROM:+0200
 1015.20 +TZOFFSETTO:+0100
 1015.21 +TZNAME:CET
 1015.22 +DTSTART:19961027T030000
 1015.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
 1015.24 +END:STANDARD
 1015.25 +BEGIN:STANDARD
 1015.26 +TZOFFSETFROM:+004956
 1015.27 +TZOFFSETTO:+004956
 1015.28 +TZNAME:RMT
 1015.29 +DTSTART:18660922T000000
 1015.30 +RDATE:18660922T000000
 1015.31 +END:STANDARD
 1015.32 +BEGIN:STANDARD
 1015.33 +TZOFFSETFROM:+004956
 1015.34 +TZOFFSETTO:+0100
 1015.35 +TZNAME:CET
 1015.36 +DTSTART:18931101T000000
 1015.37 +RDATE:18931101T000000
 1015.38 +END:STANDARD
 1015.39 +BEGIN:DAYLIGHT
 1015.40 +TZOFFSETFROM:+0100
 1015.41 +TZOFFSETTO:+0200
 1015.42 +TZNAME:CEST
 1015.43 +DTSTART:19160603T000000
 1015.44 +RDATE:19160603T000000
 1015.45 +RDATE:19170401T000000
 1015.46 +RDATE:19180310T000000
 1015.47 +RDATE:19190302T000000
 1015.48 +RDATE:19200321T000000
 1015.49 +RDATE:19400615T000000
 1015.50 +RDATE:19430329T020000
 1015.51 +RDATE:19440403T020000
 1015.52 +RDATE:19450402T020000
 1015.53 +RDATE:19460317T020000
 1015.54 +RDATE:19470316T000000
 1015.55 +RDATE:19480229T020000
 1015.56 +RDATE:19660522T000000
 1015.57 +RDATE:19670528T000000
 1015.58 +RDATE:19680526T000000
 1015.59 +RDATE:19690601T000000
 1015.60 +RDATE:19700531T000000
 1015.61 +RDATE:19710523T000000
 1015.62 +RDATE:19720528T000000
 1015.63 +RDATE:19730603T000000
 1015.64 +RDATE:19740526T000000
 1015.65 +RDATE:19750601T000000
 1015.66 +RDATE:19760530T000000
 1015.67 +RDATE:19770522T000000
 1015.68 +RDATE:19780528T000000
 1015.69 +RDATE:19790527T000000
 1015.70 +RDATE:19800406T020000
 1015.71 +END:DAYLIGHT
 1015.72 +BEGIN:STANDARD
 1015.73 +TZOFFSETFROM:+0200
 1015.74 +TZOFFSETTO:+0100
 1015.75 +TZNAME:CET
 1015.76 +DTSTART:19161001T010000
 1015.77 +RDATE:19161001T010000
 1015.78 +RDATE:19170930T010000
 1015.79 +RDATE:19181006T010000
 1015.80 +RDATE:19191005T010000
 1015.81 +RDATE:19200919T010000
 1015.82 +RDATE:19421102T030000
 1015.83 +RDATE:19431004T030000
 1015.84 +RDATE:19440917T010000
 1015.85 +RDATE:19450915T010000
 1015.86 +RDATE:19461006T030000
 1015.87 +RDATE:19471005T010000
 1015.88 +RDATE:19481003T030000
 1015.89 +RDATE:19660925T000000
 1015.90 +RDATE:19670924T000000
 1015.91 +RDATE:19680922T000000
 1015.92 +RDATE:19690928T000000
 1015.93 +RDATE:19700927T000000
 1015.94 +RDATE:19710926T010000
 1015.95 +RDATE:19721001T000000
 1015.96 +RDATE:19730930T000000
 1015.97 +RDATE:19740929T000000
 1015.98 +RDATE:19750928T010000
 1015.99 +RDATE:19760926T010000
1015.100 +RDATE:19770925T010000
1015.101 +RDATE:19781001T010000
1015.102 +RDATE:19790930T010000
1015.103 +RDATE:19800928T030000
1015.104 +RDATE:19810927T030000
1015.105 +RDATE:19820926T030000
1015.106 +RDATE:19830925T030000
1015.107 +RDATE:19840930T030000
1015.108 +RDATE:19850929T030000
1015.109 +RDATE:19860928T030000
1015.110 +RDATE:19870927T030000
1015.111 +RDATE:19880925T030000
1015.112 +RDATE:19890924T030000
1015.113 +RDATE:19900930T030000
1015.114 +RDATE:19910929T030000
1015.115 +RDATE:19920927T030000
1015.116 +RDATE:19930926T030000
1015.117 +RDATE:19940925T030000
1015.118 +RDATE:19950924T030000
1015.119 +END:STANDARD
1015.120 +BEGIN:DAYLIGHT
1015.121 +TZOFFSETFROM:+0200
1015.122 +TZOFFSETTO:+0200
1015.123 +TZNAME:CEST
1015.124 +DTSTART:19440701T000000
1015.125 +RDATE:19440701T000000
1015.126 +END:DAYLIGHT
1015.127 +BEGIN:STANDARD
1015.128 +TZOFFSETFROM:+0100
1015.129 +TZOFFSETTO:+0100
1015.130 +TZNAME:CET
1015.131 +DTSTART:19800101T000000
1015.132 +RDATE:19800101T000000
1015.133 +END:STANDARD
1015.134 +END:VTIMEZONE
1015.135 +END:VCALENDAR
  1016.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1016.2 +++ b/src/zoneinfo/Europe/Sarajevo.ics	Tue Feb 10 18:12:00 2015 +0100
  1016.3 @@ -0,0 +1,71 @@
  1016.4 +BEGIN:VCALENDAR
  1016.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1016.6 +VERSION:2.0
  1016.7 +BEGIN:VTIMEZONE
  1016.8 +TZID:Europe/Sarajevo
  1016.9 +TZURL:http://tzurl.org/zoneinfo/Europe/Sarajevo
 1016.10 +X-LIC-LOCATION:Europe/Sarajevo
 1016.11 +BEGIN:DAYLIGHT
 1016.12 +TZOFFSETFROM:+0100
 1016.13 +TZOFFSETTO:+0200
 1016.14 +TZNAME:CEST
 1016.15 +DTSTART:19830327T020000
 1016.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
 1016.17 +END:DAYLIGHT
 1016.18 +BEGIN:STANDARD
 1016.19 +TZOFFSETFROM:+0200
 1016.20 +TZOFFSETTO:+0100
 1016.21 +TZNAME:CET
 1016.22 +DTSTART:19961027T030000
 1016.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
 1016.24 +END:STANDARD
 1016.25 +BEGIN:STANDARD
 1016.26 +TZOFFSETFROM:+0122
 1016.27 +TZOFFSETTO:+0100
 1016.28 +TZNAME:CET
 1016.29 +DTSTART:18840101T000000
 1016.30 +RDATE:18840101T000000
 1016.31 +END:STANDARD
 1016.32 +BEGIN:DAYLIGHT
 1016.33 +TZOFFSETFROM:+0100
 1016.34 +TZOFFSETTO:+0200
 1016.35 +TZNAME:CEST
 1016.36 +DTSTART:19410418T230000
 1016.37 +RDATE:19410418T230000
 1016.38 +RDATE:19430329T020000
 1016.39 +RDATE:19440403T020000
 1016.40 +RDATE:19450508T020000
 1016.41 +END:DAYLIGHT
 1016.42 +BEGIN:STANDARD
 1016.43 +TZOFFSETFROM:+0200
 1016.44 +TZOFFSETTO:+0100
 1016.45 +TZNAME:CET
 1016.46 +DTSTART:19421102T030000
 1016.47 +RDATE:19421102T030000
 1016.48 +RDATE:19431004T030000
 1016.49 +RDATE:19441002T030000
 1016.50 +RDATE:19450916T030000
 1016.51 +RDATE:19830925T030000
 1016.52 +RDATE:19840930T030000
 1016.53 +RDATE:19850929T030000
 1016.54 +RDATE:19860928T030000
 1016.55 +RDATE:19870927T030000
 1016.56 +RDATE:19880925T030000
 1016.57 +RDATE:19890924T030000
 1016.58 +RDATE:19900930T030000
 1016.59 +RDATE:19910929T030000
 1016.60 +RDATE:19920927T030000
 1016.61 +RDATE:19930926T030000
 1016.62 +RDATE:19940925T030000
 1016.63 +RDATE:19950924T030000
 1016.64 +END:STANDARD
 1016.65 +BEGIN:STANDARD
 1016.66 +TZOFFSETFROM:+0100
 1016.67 +TZOFFSETTO:+0100
 1016.68 +TZNAME:CET
 1016.69 +DTSTART:19450101T000000
 1016.70 +RDATE:19450101T000000
 1016.71 +RDATE:19821127T000000
 1016.72 +END:STANDARD
 1016.73 +END:VTIMEZONE
 1016.74 +END:VCALENDAR
  1017.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1017.2 +++ b/src/zoneinfo/Europe/Simferopol.ics	Tue Feb 10 18:12:00 2015 +0100
  1017.3 @@ -0,0 +1,151 @@
  1017.4 +BEGIN:VCALENDAR
  1017.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1017.6 +VERSION:2.0
  1017.7 +BEGIN:VTIMEZONE
  1017.8 +TZID:Europe/Simferopol
  1017.9 +TZURL:http://tzurl.org/zoneinfo/Europe/Simferopol
 1017.10 +X-LIC-LOCATION:Europe/Simferopol
 1017.11 +BEGIN:STANDARD
 1017.12 +TZOFFSETFROM:+0300
 1017.13 +TZOFFSETTO:+0200
 1017.14 +TZNAME:EET
 1017.15 +DTSTART:19971026T040000
 1017.16 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
 1017.17 +END:STANDARD
 1017.18 +BEGIN:DAYLIGHT
 1017.19 +TZOFFSETFROM:+0200
 1017.20 +TZOFFSETTO:+0300
 1017.21 +TZNAME:EEST
 1017.22 +DTSTART:19980329T030000
 1017.23 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
 1017.24 +END:DAYLIGHT
 1017.25 +BEGIN:STANDARD
 1017.26 +TZOFFSETFROM:+021624
 1017.27 +TZOFFSETTO:+0216
 1017.28 +TZNAME:SMT
 1017.29 +DTSTART:18800101T000000
 1017.30 +RDATE:18800101T000000
 1017.31 +END:STANDARD
 1017.32 +BEGIN:STANDARD
 1017.33 +TZOFFSETFROM:+0216
 1017.34 +TZOFFSETTO:+0200
 1017.35 +TZNAME:EET
 1017.36 +DTSTART:19240502T000000
 1017.37 +RDATE:19240502T000000
 1017.38 +END:STANDARD
 1017.39 +BEGIN:STANDARD
 1017.40 +TZOFFSETFROM:+0200
 1017.41 +TZOFFSETTO:+0300
 1017.42 +TZNAME:MSK
 1017.43 +DTSTART:19300621T000000
 1017.44 +RDATE:19300621T000000
 1017.45 +RDATE:19440413T000000
 1017.46 +END:STANDARD
 1017.47 +BEGIN:DAYLIGHT
 1017.48 +TZOFFSETFROM:+0300
 1017.49 +TZOFFSETTO:+0200
 1017.50 +TZNAME:CEST
 1017.51 +DTSTART:19411101T000000
 1017.52 +RDATE:19411101T000000
 1017.53 +END:DAYLIGHT
 1017.54 +BEGIN:STANDARD
 1017.55 +TZOFFSETFROM:+0200
 1017.56 +TZOFFSETTO:+0100
 1017.57 +TZNAME:CET
 1017.58 +DTSTART:19421102T030000
 1017.59 +RDATE:19421102T030000
 1017.60 +RDATE:19431004T030000
 1017.61 +END:STANDARD
 1017.62 +BEGIN:DAYLIGHT
 1017.63 +TZOFFSETFROM:+0100
 1017.64 +TZOFFSETTO:+0200
 1017.65 +TZNAME:CEST
 1017.66 +DTSTART:19430329T020000
 1017.67 +RDATE:19430329T020000
 1017.68 +RDATE:19440403T020000
 1017.69 +END:DAYLIGHT
 1017.70 +BEGIN:DAYLIGHT
 1017.71 +TZOFFSETFROM:+0300
 1017.72 +TZOFFSETTO:+0400
 1017.73 +TZNAME:MSD
 1017.74 +DTSTART:19810401T000000
 1017.75 +RDATE:19810401T000000
 1017.76 +RDATE:19820401T000000
 1017.77 +RDATE:19830401T000000
 1017.78 +RDATE:19840401T000000
 1017.79 +RDATE:19850331T020000
 1017.80 +RDATE:19860330T020000
 1017.81 +RDATE:19870329T020000
 1017.82 +RDATE:19880327T020000
 1017.83 +RDATE:19890326T020000
 1017.84 +RDATE:19940501T000000
 1017.85 +RDATE:19950326T000000
 1017.86 +RDATE:19960331T000000
 1017.87 +END:DAYLIGHT
 1017.88 +BEGIN:STANDARD
 1017.89 +TZOFFSETFROM:+0400
 1017.90 +TZOFFSETTO:+0300
 1017.91 +TZNAME:MSK
 1017.92 +DTSTART:19811001T000000
 1017.93 +RDATE:19811001T000000
 1017.94 +RDATE:19821001T000000
 1017.95 +RDATE:19831001T000000
 1017.96 +RDATE:19840930T030000
 1017.97 +RDATE:19850929T030000
 1017.98 +RDATE:19860928T030000
 1017.99 +RDATE:19870927T030000
1017.100 +RDATE:19880925T030000
1017.101 +RDATE:19890924T030000
1017.102 +RDATE:19940925T000000
1017.103 +RDATE:19950924T000000
1017.104 +RDATE:19961027T040000
1017.105 +END:STANDARD
1017.106 +BEGIN:STANDARD
1017.107 +TZOFFSETFROM:+0300
1017.108 +TZOFFSETTO:+0300
1017.109 +TZNAME:MSK
1017.110 +DTSTART:19900101T000000
1017.111 +RDATE:19900101T000000
1017.112 +RDATE:19970101T000000
1017.113 +END:STANDARD
1017.114 +BEGIN:STANDARD
1017.115 +TZOFFSETFROM:+0300
1017.116 +TZOFFSETTO:+0200
1017.117 +TZNAME:EET
1017.118 +DTSTART:19900701T020000
1017.119 +RDATE:19900701T020000
1017.120 +RDATE:19920927T000000
1017.121 +RDATE:19930926T000000
1017.122 +END:STANDARD
1017.123 +BEGIN:STANDARD
1017.124 +TZOFFSETFROM:+0200
1017.125 +TZOFFSETTO:+0200
1017.126 +TZNAME:EET
1017.127 +DTSTART:19920101T000000
1017.128 +RDATE:19920101T000000
1017.129 +END:STANDARD
1017.130 +BEGIN:DAYLIGHT
1017.131 +TZOFFSETFROM:+0200
1017.132 +TZOFFSETTO:+0300
1017.133 +TZNAME:EEST
1017.134 +DTSTART:19920329T000000
1017.135 +RDATE:19920329T000000
1017.136 +RDATE:19930328T000000
1017.137 +RDATE:19940327T000000
1017.138 +END:DAYLIGHT
1017.139 +BEGIN:DAYLIGHT
1017.140 +TZOFFSETFROM:+0400
1017.141 +TZOFFSETTO:+0400
1017.142 +TZNAME:MSD
1017.143 +DTSTART:19960331T040000
1017.144 +RDATE:19960331T040000
1017.145 +END:DAYLIGHT
1017.146 +BEGIN:DAYLIGHT
1017.147 +TZOFFSETFROM:+0300
1017.148 +TZOFFSETTO:+0300
1017.149 +TZNAME:EEST
1017.150 +DTSTART:19970330T040000
1017.151 +RDATE:19970330T040000
1017.152 +END:DAYLIGHT
1017.153 +END:VTIMEZONE
1017.154 +END:VCALENDAR
  1018.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1018.2 +++ b/src/zoneinfo/Europe/Skopje.ics	Tue Feb 10 18:12:00 2015 +0100
  1018.3 @@ -0,0 +1,71 @@
  1018.4 +BEGIN:VCALENDAR
  1018.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1018.6 +VERSION:2.0
  1018.7 +BEGIN:VTIMEZONE
  1018.8 +TZID:Europe/Skopje
  1018.9 +TZURL:http://tzurl.org/zoneinfo/Europe/Skopje
 1018.10 +X-LIC-LOCATION:Europe/Skopje
 1018.11 +BEGIN:DAYLIGHT
 1018.12 +TZOFFSETFROM:+0100
 1018.13 +TZOFFSETTO:+0200
 1018.14 +TZNAME:CEST
 1018.15 +DTSTART:19830327T020000
 1018.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
 1018.17 +END:DAYLIGHT
 1018.18 +BEGIN:STANDARD
 1018.19 +TZOFFSETFROM:+0200
 1018.20 +TZOFFSETTO:+0100
 1018.21 +TZNAME:CET
 1018.22 +DTSTART:19961027T030000
 1018.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
 1018.24 +END:STANDARD
 1018.25 +BEGIN:STANDARD
 1018.26 +TZOFFSETFROM:+0122
 1018.27 +TZOFFSETTO:+0100
 1018.28 +TZNAME:CET
 1018.29 +DTSTART:18840101T000000
 1018.30 +RDATE:18840101T000000
 1018.31 +END:STANDARD
 1018.32 +BEGIN:DAYLIGHT
 1018.33 +TZOFFSETFROM:+0100
 1018.34 +TZOFFSETTO:+0200
 1018.35 +TZNAME:CEST
 1018.36 +DTSTART:19410418T230000
 1018.37 +RDATE:19410418T230000
 1018.38 +RDATE:19430329T020000
 1018.39 +RDATE:19440403T020000
 1018.40 +RDATE:19450508T020000
 1018.41 +END:DAYLIGHT
 1018.42 +BEGIN:STANDARD
 1018.43 +TZOFFSETFROM:+0200
 1018.44 +TZOFFSETTO:+0100
 1018.45 +TZNAME:CET
 1018.46 +DTSTART:19421102T030000
 1018.47 +RDATE:19421102T030000
 1018.48 +RDATE:19431004T030000
 1018.49 +RDATE:19441002T030000
 1018.50 +RDATE:19450916T030000
 1018.51 +RDATE:19830925T030000
 1018.52 +RDATE:19840930T030000
 1018.53 +RDATE:19850929T030000
 1018.54 +RDATE:19860928T030000
 1018.55 +RDATE:19870927T030000
 1018.56 +RDATE:19880925T030000
 1018.57 +RDATE:19890924T030000
 1018.58 +RDATE:19900930T030000
 1018.59 +RDATE:19910929T030000
 1018.60 +RDATE:19920927T030000
 1018.61 +RDATE:19930926T030000
 1018.62 +RDATE:19940925T030000
 1018.63 +RDATE:19950924T030000
 1018.64 +END:STANDARD
 1018.65 +BEGIN:STANDARD
 1018.66 +TZOFFSETFROM:+0100
 1018.67 +TZOFFSETTO:+0100
 1018.68 +TZNAME:CET
 1018.69 +DTSTART:19450101T000000
 1018.70 +RDATE:19450101T000000
 1018.71 +RDATE:19821127T000000
 1018.72 +END:STANDARD
 1018.73 +END:VTIMEZONE
 1018.74 +END:VCALENDAR
  1019.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1019.2 +++ b/src/zoneinfo/Europe/Sofia.ics	Tue Feb 10 18:12:00 2015 +0100
  1019.3 @@ -0,0 +1,131 @@
  1019.4 +BEGIN:VCALENDAR
  1019.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1019.6 +VERSION:2.0
  1019.7 +BEGIN:VTIMEZONE
  1019.8 +TZID:Europe/Sofia
  1019.9 +TZURL:http://tzurl.org/zoneinfo/Europe/Sofia
 1019.10 +X-LIC-LOCATION:Europe/Sofia
 1019.11 +BEGIN:DAYLIGHT
 1019.12 +TZOFFSETFROM:+0200
 1019.13 +TZOFFSETTO:+0300
 1019.14 +TZNAME:EEST
 1019.15 +DTSTART:19970330T030000
 1019.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
 1019.17 +END:DAYLIGHT
 1019.18 +BEGIN:STANDARD
 1019.19 +TZOFFSETFROM:+0300
 1019.20 +TZOFFSETTO:+0200
 1019.21 +TZNAME:EET
 1019.22 +DTSTART:19971026T040000
 1019.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
 1019.24 +END:STANDARD
 1019.25 +BEGIN:STANDARD
 1019.26 +TZOFFSETFROM:+013316
 1019.27 +TZOFFSETTO:+015656
 1019.28 +TZNAME:IMT
 1019.29 +DTSTART:18800101T000000
 1019.30 +RDATE:18800101T000000
 1019.31 +END:STANDARD
 1019.32 +BEGIN:STANDARD
 1019.33 +TZOFFSETFROM:+015656
 1019.34 +TZOFFSETTO:+0200
 1019.35 +TZNAME:EET
 1019.36 +DTSTART:18941130T000000
 1019.37 +RDATE:18941130T000000
 1019.38 +END:STANDARD
 1019.39 +BEGIN:STANDARD
 1019.40 +TZOFFSETFROM:+0200
 1019.41 +TZOFFSETTO:+0100
 1019.42 +TZNAME:CET
 1019.43 +DTSTART:19421102T020000
 1019.44 +RDATE:19421102T020000
 1019.45 +RDATE:19431004T030000
 1019.46 +RDATE:19441002T030000
 1019.47 +END:STANDARD
 1019.48 +BEGIN:DAYLIGHT
 1019.49 +TZOFFSETFROM:+0100
 1019.50 +TZOFFSETTO:+0200
 1019.51 +TZNAME:CEST
 1019.52 +DTSTART:19430329T020000
 1019.53 +RDATE:19430329T020000
 1019.54 +RDATE:19440403T020000
 1019.55 +END:DAYLIGHT
 1019.56 +BEGIN:STANDARD
 1019.57 +TZOFFSETFROM:+0100
 1019.58 +TZOFFSETTO:+0100
 1019.59 +TZNAME:CET
 1019.60 +DTSTART:19450101T000000
 1019.61 +RDATE:19450101T000000
 1019.62 +END:STANDARD
 1019.63 +BEGIN:STANDARD
 1019.64 +TZOFFSETFROM:+0100
 1019.65 +TZOFFSETTO:+0200
 1019.66 +TZNAME:EET
 1019.67 +DTSTART:19450402T030000
 1019.68 +RDATE:19450402T030000
 1019.69 +END:STANDARD
 1019.70 +BEGIN:DAYLIGHT
 1019.71 +TZOFFSETFROM:+0200
 1019.72 +TZOFFSETTO:+0300
 1019.73 +TZNAME:EEST
 1019.74 +DTSTART:19790331T230000
 1019.75 +RDATE:19790331T230000
 1019.76 +RDATE:19800405T230000
 1019.77 +RDATE:19810404T230000
 1019.78 +RDATE:19820403T230000
 1019.79 +RDATE:19830327T020000
 1019.80 +RDATE:19840325T020000
 1019.81 +RDATE:19850331T020000
 1019.82 +RDATE:19860330T020000
 1019.83 +RDATE:19870329T020000
 1019.84 +RDATE:19880327T020000
 1019.85 +RDATE:19890326T020000
 1019.86 +RDATE:19900325T020000
 1019.87 +RDATE:19910331T000000
 1019.88 +RDATE:19920329T000000
 1019.89 +RDATE:19930328T000000
 1019.90 +RDATE:19940327T000000
 1019.91 +RDATE:19950326T000000
 1019.92 +RDATE:19960331T000000
 1019.93 +END:DAYLIGHT
 1019.94 +BEGIN:STANDARD
 1019.95 +TZOFFSETFROM:+0300
 1019.96 +TZOFFSETTO:+0200
 1019.97 +TZNAME:EET
 1019.98 +DTSTART:19791001T010000
 1019.99 +RDATE:19791001T010000
1019.100 +RDATE:19800929T010000
1019.101 +RDATE:19810927T020000
1019.102 +RDATE:19820926T030000
1019.103 +RDATE:19830925T030000
1019.104 +RDATE:19840930T030000
1019.105 +RDATE:19850929T030000
1019.106 +RDATE:19860928T030000
1019.107 +RDATE:19870927T030000
1019.108 +RDATE:19880925T030000
1019.109 +RDATE:19890924T030000
1019.110 +RDATE:19900930T030000
1019.111 +RDATE:19910929T000000
1019.112 +RDATE:19920927T000000
1019.113 +RDATE:19930926T000000
1019.114 +RDATE:19940925T000000
1019.115 +RDATE:19950924T000000
1019.116 +RDATE:19961027T000000
1019.117 +END:STANDARD
1019.118 +BEGIN:DAYLIGHT
1019.119 +TZOFFSETFROM:+0300
1019.120 +TZOFFSETTO:+0300
1019.121 +TZNAME:EEST
1019.122 +DTSTART:19820926T020000
1019.123 +RDATE:19820926T020000
1019.124 +END:DAYLIGHT
1019.125 +BEGIN:STANDARD
1019.126 +TZOFFSETFROM:+0200
1019.127 +TZOFFSETTO:+0200
1019.128 +TZNAME:EET
1019.129 +DTSTART:19910101T000000
1019.130 +RDATE:19910101T000000
1019.131 +RDATE:19970101T000000
1019.132 +END:STANDARD
1019.133 +END:VTIMEZONE
1019.134 +END:VCALENDAR
  1020.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1020.2 +++ b/src/zoneinfo/Europe/Stockholm.ics	Tue Feb 10 18:12:00 2015 +0100
  1020.3 @@ -0,0 +1,75 @@
  1020.4 +BEGIN:VCALENDAR
  1020.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1020.6 +VERSION:2.0
  1020.7 +BEGIN:VTIMEZONE
  1020.8 +TZID:Europe/Stockholm
  1020.9 +TZURL:http://tzurl.org/zoneinfo/Europe/Stockholm
 1020.10 +X-LIC-LOCATION:Europe/Stockholm
 1020.11 +BEGIN:DAYLIGHT
 1020.12 +TZOFFSETFROM:+0100
 1020.13 +TZOFFSETTO:+0200
 1020.14 +TZNAME:CEST
 1020.15 +DTSTART:19810329T020000
 1020.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
 1020.17 +END:DAYLIGHT
 1020.18 +BEGIN:STANDARD
 1020.19 +TZOFFSETFROM:+0200
 1020.20 +TZOFFSETTO:+0100
 1020.21 +TZNAME:CET
 1020.22 +DTSTART:19961027T030000
 1020.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
 1020.24 +END:STANDARD
 1020.25 +BEGIN:STANDARD
 1020.26 +TZOFFSETFROM:+011212
 1020.27 +TZOFFSETTO:+010014
 1020.28 +TZNAME:SET
 1020.29 +DTSTART:18790101T000000
 1020.30 +RDATE:18790101T000000
 1020.31 +END:STANDARD
 1020.32 +BEGIN:STANDARD
 1020.33 +TZOFFSETFROM:+010014
 1020.34 +TZOFFSETTO:+0100
 1020.35 +TZNAME:CET
 1020.36 +DTSTART:19000101T000000
 1020.37 +RDATE:19000101T000000
 1020.38 +END:STANDARD
 1020.39 +BEGIN:DAYLIGHT
 1020.40 +TZOFFSETFROM:+0100
 1020.41 +TZOFFSETTO:+0200
 1020.42 +TZNAME:CEST
 1020.43 +DTSTART:19160514T230000
 1020.44 +RDATE:19160514T230000
 1020.45 +RDATE:19800406T020000
 1020.46 +END:DAYLIGHT
 1020.47 +BEGIN:STANDARD
 1020.48 +TZOFFSETFROM:+0200
 1020.49 +TZOFFSETTO:+0100
 1020.50 +TZNAME:CET
 1020.51 +DTSTART:19161001T010000
 1020.52 +RDATE:19161001T010000
 1020.53 +RDATE:19800928T030000
 1020.54 +RDATE:19810927T030000
 1020.55 +RDATE:19820926T030000
 1020.56 +RDATE:19830925T030000
 1020.57 +RDATE:19840930T030000
 1020.58 +RDATE:19850929T030000
 1020.59 +RDATE:19860928T030000
 1020.60 +RDATE:19870927T030000
 1020.61 +RDATE:19880925T030000
 1020.62 +RDATE:19890924T030000
 1020.63 +RDATE:19900930T030000
 1020.64 +RDATE:19910929T030000
 1020.65 +RDATE:19920927T030000
 1020.66 +RDATE:19930926T030000
 1020.67 +RDATE:19940925T030000
 1020.68 +RDATE:19950924T030000
 1020.69 +END:STANDARD
 1020.70 +BEGIN:STANDARD
 1020.71 +TZOFFSETFROM:+0100
 1020.72 +TZOFFSETTO:+0100
 1020.73 +TZNAME:CET
 1020.74 +DTSTART:19800101T000000
 1020.75 +RDATE:19800101T000000
 1020.76 +END:STANDARD
 1020.77 +END:VTIMEZONE
 1020.78 +END:VCALENDAR
  1021.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1021.2 +++ b/src/zoneinfo/Europe/Tallinn.ics	Tue Feb 10 18:12:00 2015 +0100
  1021.3 @@ -0,0 +1,161 @@
  1021.4 +BEGIN:VCALENDAR
  1021.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1021.6 +VERSION:2.0
  1021.7 +BEGIN:VTIMEZONE
  1021.8 +TZID:Europe/Tallinn
  1021.9 +TZURL:http://tzurl.org/zoneinfo/Europe/Tallinn
 1021.10 +X-LIC-LOCATION:Europe/Tallinn
 1021.11 +BEGIN:DAYLIGHT
 1021.12 +TZOFFSETFROM:+0200
 1021.13 +TZOFFSETTO:+0300
 1021.14 +TZNAME:EEST
 1021.15 +DTSTART:20020331T030000
 1021.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
 1021.17 +END:DAYLIGHT
 1021.18 +BEGIN:STANDARD
 1021.19 +TZOFFSETFROM:+0300
 1021.20 +TZOFFSETTO:+0200
 1021.21 +TZNAME:EET
 1021.22 +DTSTART:20021027T040000
 1021.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
 1021.24 +END:STANDARD
 1021.25 +BEGIN:STANDARD
 1021.26 +TZOFFSETFROM:+0139
 1021.27 +TZOFFSETTO:+0139
 1021.28 +TZNAME:TMT
 1021.29 +DTSTART:18800101T000000
 1021.30 +RDATE:18800101T000000
 1021.31 +END:STANDARD
 1021.32 +BEGIN:STANDARD
 1021.33 +TZOFFSETFROM:+0139
 1021.34 +TZOFFSETTO:+0100
 1021.35 +TZNAME:CET
 1021.36 +DTSTART:19180201T000000
 1021.37 +RDATE:19180201T000000
 1021.38 +END:STANDARD
 1021.39 +BEGIN:DAYLIGHT
 1021.40 +TZOFFSETFROM:+0100
 1021.41 +TZOFFSETTO:+0200
 1021.42 +TZNAME:CEST
 1021.43 +DTSTART:19180415T020000
 1021.44 +RDATE:19180415T020000
 1021.45 +RDATE:19430329T020000
 1021.46 +RDATE:19440403T020000
 1021.47 +END:DAYLIGHT
 1021.48 +BEGIN:STANDARD
 1021.49 +TZOFFSETFROM:+0200
 1021.50 +TZOFFSETTO:+0100
 1021.51 +TZNAME:CET
 1021.52 +DTSTART:19180916T030000
 1021.53 +RDATE:19180916T030000
 1021.54 +RDATE:19421102T030000
 1021.55 +RDATE:19431004T030000
 1021.56 +END:STANDARD
 1021.57 +BEGIN:STANDARD
 1021.58 +TZOFFSETFROM:+0100
 1021.59 +TZOFFSETTO:+0139
 1021.60 +TZNAME:TMT
 1021.61 +DTSTART:19190701T000000
 1021.62 +RDATE:19190701T000000
 1021.63 +END:STANDARD
 1021.64 +BEGIN:STANDARD
 1021.65 +TZOFFSETFROM:+0139
 1021.66 +TZOFFSETTO:+0200
 1021.67 +TZNAME:EET
 1021.68 +DTSTART:19210501T000000
 1021.69 +RDATE:19210501T000000
 1021.70 +END:STANDARD
 1021.71 +BEGIN:STANDARD
 1021.72 +TZOFFSETFROM:+0200
 1021.73 +TZOFFSETTO:+0300
 1021.74 +TZNAME:MSK
 1021.75 +DTSTART:19400806T000000
 1021.76 +RDATE:19400806T000000
 1021.77 +RDATE:19440922T000000
 1021.78 +END:STANDARD
 1021.79 +BEGIN:DAYLIGHT
 1021.80 +TZOFFSETFROM:+0300
 1021.81 +TZOFFSETTO:+0200
 1021.82 +TZNAME:CEST
 1021.83 +DTSTART:19410915T000000
 1021.84 +RDATE:19410915T000000
 1021.85 +END:DAYLIGHT
 1021.86 +BEGIN:DAYLIGHT
 1021.87 +TZOFFSETFROM:+0300
 1021.88 +TZOFFSETTO:+0400
 1021.89 +TZNAME:MSD
 1021.90 +DTSTART:19810401T000000
 1021.91 +RDATE:19810401T000000
 1021.92 +RDATE:19820401T000000
 1021.93 +RDATE:19830401T000000
 1021.94 +RDATE:19840401T000000
 1021.95 +RDATE:19850331T020000
 1021.96 +RDATE:19860330T020000
 1021.97 +RDATE:19870329T020000
 1021.98 +RDATE:19880327T020000
 1021.99 +END:DAYLIGHT
1021.100 +BEGIN:STANDARD
1021.101 +TZOFFSETFROM:+0400
1021.102 +TZOFFSETTO:+0300
1021.103 +TZNAME:MSK
1021.104 +DTSTART:19811001T000000
1021.105 +RDATE:19811001T000000
1021.106 +RDATE:19821001T000000
1021.107 +RDATE:19831001T000000
1021.108 +RDATE:19840930T030000
1021.109 +RDATE:19850929T030000
1021.110 +RDATE:19860928T030000
1021.111 +RDATE:19870927T030000
1021.112 +RDATE:19880925T030000
1021.113 +END:STANDARD
1021.114 +BEGIN:DAYLIGHT
1021.115 +TZOFFSETFROM:+0300
1021.116 +TZOFFSETTO:+0300
1021.117 +TZNAME:EEST
1021.118 +DTSTART:19890326T020000
1021.119 +RDATE:19890326T020000
1021.120 +RDATE:19980922T000000
1021.121 +END:DAYLIGHT
1021.122 +BEGIN:STANDARD
1021.123 +TZOFFSETFROM:+0300
1021.124 +TZOFFSETTO:+0200
1021.125 +TZNAME:EET
1021.126 +DTSTART:19890924T030000
1021.127 +RDATE:19890924T030000
1021.128 +RDATE:19900930T030000
1021.129 +RDATE:19910929T030000
1021.130 +RDATE:19920927T030000
1021.131 +RDATE:19930926T030000
1021.132 +RDATE:19940925T030000
1021.133 +RDATE:19950924T030000
1021.134 +RDATE:19961027T030000
1021.135 +RDATE:19971026T030000
1021.136 +RDATE:19981025T040000
1021.137 +RDATE:19991031T040000
1021.138 +END:STANDARD
1021.139 +BEGIN:DAYLIGHT
1021.140 +TZOFFSETFROM:+0200
1021.141 +TZOFFSETTO:+0300
1021.142 +TZNAME:EEST
1021.143 +DTSTART:19900325T020000
1021.144 +RDATE:19900325T020000
1021.145 +RDATE:19910331T020000
1021.146 +RDATE:19920329T020000
1021.147 +RDATE:19930328T020000
1021.148 +RDATE:19940327T020000
1021.149 +RDATE:19950326T020000
1021.150 +RDATE:19960331T020000
1021.151 +RDATE:19970330T020000
1021.152 +RDATE:19980329T020000
1021.153 +RDATE:19990328T030000
1021.154 +END:DAYLIGHT
1021.155 +BEGIN:STANDARD
1021.156 +TZOFFSETFROM:+0200
1021.157 +TZOFFSETTO:+0200
1021.158 +TZNAME:EET
1021.159 +DTSTART:19991101T000000
1021.160 +RDATE:19991101T000000
1021.161 +RDATE:20020221T000000
1021.162 +END:STANDARD
1021.163 +END:VTIMEZONE
1021.164 +END:VCALENDAR
  1022.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1022.2 +++ b/src/zoneinfo/Europe/Tirane.ics	Tue Feb 10 18:12:00 2015 +0100
  1022.3 @@ -0,0 +1,86 @@
  1022.4 +BEGIN:VCALENDAR
  1022.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1022.6 +VERSION:2.0
  1022.7 +BEGIN:VTIMEZONE
  1022.8 +TZID:Europe/Tirane
  1022.9 +TZURL:http://tzurl.org/zoneinfo/Europe/Tirane
 1022.10 +X-LIC-LOCATION:Europe/Tirane
 1022.11 +BEGIN:DAYLIGHT
 1022.12 +TZOFFSETFROM:+0100
 1022.13 +TZOFFSETTO:+0200
 1022.14 +TZNAME:CEST
 1022.15 +DTSTART:19850331T020000
 1022.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
 1022.17 +END:DAYLIGHT
 1022.18 +BEGIN:STANDARD
 1022.19 +TZOFFSETFROM:+0200
 1022.20 +TZOFFSETTO:+0100
 1022.21 +TZNAME:CET
 1022.22 +DTSTART:19961027T030000
 1022.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
 1022.24 +END:STANDARD
 1022.25 +BEGIN:STANDARD
 1022.26 +TZOFFSETFROM:+011920
 1022.27 +TZOFFSETTO:+0100
 1022.28 +TZNAME:CET
 1022.29 +DTSTART:19140101T000000
 1022.30 +RDATE:19140101T000000
 1022.31 +END:STANDARD
 1022.32 +BEGIN:DAYLIGHT
 1022.33 +TZOFFSETFROM:+0100
 1022.34 +TZOFFSETTO:+0200
 1022.35 +TZNAME:CEST
 1022.36 +DTSTART:19400616T000000
 1022.37 +RDATE:19400616T000000
 1022.38 +RDATE:19430329T020000
 1022.39 +RDATE:19740504T000000
 1022.40 +RDATE:19750501T000000
 1022.41 +RDATE:19760502T000000
 1022.42 +RDATE:19770508T000000
 1022.43 +RDATE:19780506T000000
 1022.44 +RDATE:19790505T000000
 1022.45 +RDATE:19800503T000000
 1022.46 +RDATE:19810426T000000
 1022.47 +RDATE:19820502T000000
 1022.48 +RDATE:19830418T000000
 1022.49 +RDATE:19840401T000000
 1022.50 +END:DAYLIGHT
 1022.51 +BEGIN:STANDARD
 1022.52 +TZOFFSETFROM:+0200
 1022.53 +TZOFFSETTO:+0100
 1022.54 +TZNAME:CET
 1022.55 +DTSTART:19421102T030000
 1022.56 +RDATE:19421102T030000
 1022.57 +RDATE:19430410T030000
 1022.58 +RDATE:19741002T000000
 1022.59 +RDATE:19751002T000000
 1022.60 +RDATE:19761003T000000
 1022.61 +RDATE:19771002T000000
 1022.62 +RDATE:19781001T000000
 1022.63 +RDATE:19790930T000000
 1022.64 +RDATE:19801004T000000
 1022.65 +RDATE:19810927T000000
 1022.66 +RDATE:19821003T000000
 1022.67 +RDATE:19831001T000000
 1022.68 +RDATE:19840930T030000
 1022.69 +RDATE:19850929T030000
 1022.70 +RDATE:19860928T030000
 1022.71 +RDATE:19870927T030000
 1022.72 +RDATE:19880925T030000
 1022.73 +RDATE:19890924T030000
 1022.74 +RDATE:19900930T030000
 1022.75 +RDATE:19910929T030000
 1022.76 +RDATE:19920927T030000
 1022.77 +RDATE:19930926T030000
 1022.78 +RDATE:19940925T030000
 1022.79 +RDATE:19950924T030000
 1022.80 +END:STANDARD
 1022.81 +BEGIN:DAYLIGHT
 1022.82 +TZOFFSETFROM:+0200
 1022.83 +TZOFFSETTO:+0200
 1022.84 +TZNAME:CEST
 1022.85 +DTSTART:19840701T000000
 1022.86 +RDATE:19840701T000000
 1022.87 +END:DAYLIGHT
 1022.88 +END:VTIMEZONE
 1022.89 +END:VCALENDAR
  1023.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1023.2 +++ b/src/zoneinfo/Europe/Uzhgorod.ics	Tue Feb 10 18:12:00 2015 +0100
  1023.3 @@ -0,0 +1,147 @@
  1023.4 +BEGIN:VCALENDAR
  1023.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1023.6 +VERSION:2.0
  1023.7 +BEGIN:VTIMEZONE
  1023.8 +TZID:Europe/Uzhgorod
  1023.9 +TZURL:http://tzurl.org/zoneinfo/Europe/Uzhgorod
 1023.10 +X-LIC-LOCATION:Europe/Uzhgorod
 1023.11 +BEGIN:DAYLIGHT
 1023.12 +TZOFFSETFROM:+0200
 1023.13 +TZOFFSETTO:+0300
 1023.14 +TZNAME:EEST
 1023.15 +DTSTART:19950326T030000
 1023.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
 1023.17 +END:DAYLIGHT
 1023.18 +BEGIN:STANDARD
 1023.19 +TZOFFSETFROM:+0300
 1023.20 +TZOFFSETTO:+0200
 1023.21 +TZNAME:EET
 1023.22 +DTSTART:19961027T040000
 1023.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
 1023.24 +END:STANDARD
 1023.25 +BEGIN:STANDARD
 1023.26 +TZOFFSETFROM:+012912
 1023.27 +TZOFFSETTO:+0100
 1023.28 +TZNAME:CET
 1023.29 +DTSTART:18901001T000000
 1023.30 +RDATE:18901001T000000
 1023.31 +END:STANDARD
 1023.32 +BEGIN:STANDARD
 1023.33 +TZOFFSETFROM:+0100
 1023.34 +TZOFFSETTO:+0100
 1023.35 +TZNAME:CET
 1023.36 +DTSTART:19400101T000000
 1023.37 +RDATE:19400101T000000
 1023.38 +END:STANDARD
 1023.39 +BEGIN:DAYLIGHT
 1023.40 +TZOFFSETFROM:+0100
 1023.41 +TZOFFSETTO:+0200
 1023.42 +TZNAME:CEST
 1023.43 +DTSTART:19400401T020000
 1023.44 +RDATE:19400401T020000
 1023.45 +RDATE:19430329T020000
 1023.46 +RDATE:19440403T020000
 1023.47 +END:DAYLIGHT
 1023.48 +BEGIN:STANDARD
 1023.49 +TZOFFSETFROM:+0200
 1023.50 +TZOFFSETTO:+0100
 1023.51 +TZNAME:CET
 1023.52 +DTSTART:19421102T030000
 1023.53 +RDATE:19421102T030000
 1023.54 +RDATE:19431004T030000
 1023.55 +RDATE:19441026T000000
 1023.56 +END:STANDARD
 1023.57 +BEGIN:DAYLIGHT
 1023.58 +TZOFFSETFROM:+0200
 1023.59 +TZOFFSETTO:+0200
 1023.60 +TZNAME:CEST
 1023.61 +DTSTART:19441001T000000
 1023.62 +RDATE:19441001T000000
 1023.63 +END:DAYLIGHT
 1023.64 +BEGIN:STANDARD
 1023.65 +TZOFFSETFROM:+0100
 1023.66 +TZOFFSETTO:+0300
 1023.67 +TZNAME:MSK
 1023.68 +DTSTART:19450629T000000
 1023.69 +RDATE:19450629T000000
 1023.70 +END:STANDARD
 1023.71 +BEGIN:DAYLIGHT
 1023.72 +TZOFFSETFROM:+0300
 1023.73 +TZOFFSETTO:+0400
 1023.74 +TZNAME:MSD
 1023.75 +DTSTART:19810401T000000
 1023.76 +RDATE:19810401T000000
 1023.77 +RDATE:19820401T000000
 1023.78 +RDATE:19830401T000000
 1023.79 +RDATE:19840401T000000
 1023.80 +RDATE:19850331T020000
 1023.81 +RDATE:19860330T020000
 1023.82 +RDATE:19870329T020000
 1023.83 +RDATE:19880327T020000
 1023.84 +RDATE:19890326T020000
 1023.85 +END:DAYLIGHT
 1023.86 +BEGIN:STANDARD
 1023.87 +TZOFFSETFROM:+0400
 1023.88 +TZOFFSETTO:+0300
 1023.89 +TZNAME:MSK
 1023.90 +DTSTART:19811001T000000
 1023.91 +RDATE:19811001T000000
 1023.92 +RDATE:19821001T000000
 1023.93 +RDATE:19831001T000000
 1023.94 +RDATE:19840930T030000
 1023.95 +RDATE:19850929T030000
 1023.96 +RDATE:19860928T030000
 1023.97 +RDATE:19870927T030000
 1023.98 +RDATE:19880925T030000
 1023.99 +RDATE:19890924T030000
1023.100 +END:STANDARD
1023.101 +BEGIN:STANDARD
1023.102 +TZOFFSETFROM:+0300
1023.103 +TZOFFSETTO:+0300
1023.104 +TZNAME:MSK
1023.105 +DTSTART:19900101T000000
1023.106 +RDATE:19900101T000000
1023.107 +END:STANDARD
1023.108 +BEGIN:STANDARD
1023.109 +TZOFFSETFROM:+0300
1023.110 +TZOFFSETTO:+0100
1023.111 +TZNAME:CET
1023.112 +DTSTART:19900701T020000
1023.113 +RDATE:19900701T020000
1023.114 +END:STANDARD
1023.115 +BEGIN:STANDARD
1023.116 +TZOFFSETFROM:+0100
1023.117 +TZOFFSETTO:+0200
1023.118 +TZNAME:EET
1023.119 +DTSTART:19910331T030000
1023.120 +RDATE:19910331T030000
1023.121 +END:STANDARD
1023.122 +BEGIN:STANDARD
1023.123 +TZOFFSETFROM:+0200
1023.124 +TZOFFSETTO:+0200
1023.125 +TZNAME:EET
1023.126 +DTSTART:19920101T000000
1023.127 +RDATE:19920101T000000
1023.128 +RDATE:19950101T000000
1023.129 +END:STANDARD
1023.130 +BEGIN:DAYLIGHT
1023.131 +TZOFFSETFROM:+0200
1023.132 +TZOFFSETTO:+0300
1023.133 +TZNAME:EEST
1023.134 +DTSTART:19920329T000000
1023.135 +RDATE:19920329T000000
1023.136 +RDATE:19930328T000000
1023.137 +RDATE:19940327T000000
1023.138 +END:DAYLIGHT
1023.139 +BEGIN:STANDARD
1023.140 +TZOFFSETFROM:+0300
1023.141 +TZOFFSETTO:+0200
1023.142 +TZNAME:EET
1023.143 +DTSTART:19920927T000000
1023.144 +RDATE:19920927T000000
1023.145 +RDATE:19930926T000000
1023.146 +RDATE:19940925T000000
1023.147 +RDATE:19950924T040000
1023.148 +END:STANDARD
1023.149 +END:VTIMEZONE
1023.150 +END:VCALENDAR
  1024.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1024.2 +++ b/src/zoneinfo/Europe/Vaduz.ics	Tue Feb 10 18:12:00 2015 +0100
  1024.3 @@ -0,0 +1,58 @@
  1024.4 +BEGIN:VCALENDAR
  1024.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1024.6 +VERSION:2.0
  1024.7 +BEGIN:VTIMEZONE
  1024.8 +TZID:Europe/Vaduz
  1024.9 +TZURL:http://tzurl.org/zoneinfo/Europe/Vaduz
 1024.10 +X-LIC-LOCATION:Europe/Vaduz
 1024.11 +BEGIN:DAYLIGHT
 1024.12 +TZOFFSETFROM:+0100
 1024.13 +TZOFFSETTO:+0200
 1024.14 +TZNAME:CEST
 1024.15 +DTSTART:19810329T020000
 1024.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
 1024.17 +END:DAYLIGHT
 1024.18 +BEGIN:STANDARD
 1024.19 +TZOFFSETFROM:+0200
 1024.20 +TZOFFSETTO:+0100
 1024.21 +TZNAME:CET
 1024.22 +DTSTART:19961027T030000
 1024.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
 1024.24 +END:STANDARD
 1024.25 +BEGIN:STANDARD
 1024.26 +TZOFFSETFROM:+003804
 1024.27 +TZOFFSETTO:+0100
 1024.28 +TZNAME:CET
 1024.29 +DTSTART:18940601T000000
 1024.30 +RDATE:18940601T000000
 1024.31 +END:STANDARD
 1024.32 +BEGIN:STANDARD
 1024.33 +TZOFFSETFROM:+0100
 1024.34 +TZOFFSETTO:+0100
 1024.35 +TZNAME:CET
 1024.36 +DTSTART:19810101T000000
 1024.37 +RDATE:19810101T000000
 1024.38 +END:STANDARD
 1024.39 +BEGIN:STANDARD
 1024.40 +TZOFFSETFROM:+0200
 1024.41 +TZOFFSETTO:+0100
 1024.42 +TZNAME:CET
 1024.43 +DTSTART:19810927T030000
 1024.44 +RDATE:19810927T030000
 1024.45 +RDATE:19820926T030000
 1024.46 +RDATE:19830925T030000
 1024.47 +RDATE:19840930T030000
 1024.48 +RDATE:19850929T030000
 1024.49 +RDATE:19860928T030000
 1024.50 +RDATE:19870927T030000
 1024.51 +RDATE:19880925T030000
 1024.52 +RDATE:19890924T030000
 1024.53 +RDATE:19900930T030000
 1024.54 +RDATE:19910929T030000
 1024.55 +RDATE:19920927T030000
 1024.56 +RDATE:19930926T030000
 1024.57 +RDATE:19940925T030000
 1024.58 +RDATE:19950924T030000
 1024.59 +END:STANDARD
 1024.60 +END:VTIMEZONE
 1024.61 +END:VCALENDAR
  1025.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1025.2 +++ b/src/zoneinfo/Europe/Vatican.ics	Tue Feb 10 18:12:00 2015 +0100
  1025.3 @@ -0,0 +1,132 @@
  1025.4 +BEGIN:VCALENDAR
  1025.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1025.6 +VERSION:2.0
  1025.7 +BEGIN:VTIMEZONE
  1025.8 +TZID:Europe/Vatican
  1025.9 +TZURL:http://tzurl.org/zoneinfo/Europe/Vatican
 1025.10 +X-LIC-LOCATION:Europe/Vatican
 1025.11 +BEGIN:DAYLIGHT
 1025.12 +TZOFFSETFROM:+0100
 1025.13 +TZOFFSETTO:+0200
 1025.14 +TZNAME:CEST
 1025.15 +DTSTART:19810329T020000
 1025.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
 1025.17 +END:DAYLIGHT
 1025.18 +BEGIN:STANDARD
 1025.19 +TZOFFSETFROM:+0200
 1025.20 +TZOFFSETTO:+0100
 1025.21 +TZNAME:CET
 1025.22 +DTSTART:19961027T030000
 1025.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
 1025.24 +END:STANDARD
 1025.25 +BEGIN:STANDARD
 1025.26 +TZOFFSETFROM:+004956
 1025.27 +TZOFFSETTO:+004956
 1025.28 +TZNAME:RMT
 1025.29 +DTSTART:18660922T000000
 1025.30 +RDATE:18660922T000000
 1025.31 +END:STANDARD
 1025.32 +BEGIN:STANDARD
 1025.33 +TZOFFSETFROM:+004956
 1025.34 +TZOFFSETTO:+0100
 1025.35 +TZNAME:CET
 1025.36 +DTSTART:18931101T000000
 1025.37 +RDATE:18931101T000000
 1025.38 +END:STANDARD
 1025.39 +BEGIN:DAYLIGHT
 1025.40 +TZOFFSETFROM:+0100
 1025.41 +TZOFFSETTO:+0200
 1025.42 +TZNAME:CEST
 1025.43 +DTSTART:19160603T000000
 1025.44 +RDATE:19160603T000000
 1025.45 +RDATE:19170401T000000
 1025.46 +RDATE:19180310T000000
 1025.47 +RDATE:19190302T000000
 1025.48 +RDATE:19200321T000000
 1025.49 +RDATE:19400615T000000
 1025.50 +RDATE:19430329T020000
 1025.51 +RDATE:19440403T020000
 1025.52 +RDATE:19450402T020000
 1025.53 +RDATE:19460317T020000
 1025.54 +RDATE:19470316T000000
 1025.55 +RDATE:19480229T020000
 1025.56 +RDATE:19660522T000000
 1025.57 +RDATE:19670528T000000
 1025.58 +RDATE:19680526T000000
 1025.59 +RDATE:19690601T000000
 1025.60 +RDATE:19700531T000000
 1025.61 +RDATE:19710523T000000
 1025.62 +RDATE:19720528T000000
 1025.63 +RDATE:19730603T000000
 1025.64 +RDATE:19740526T000000
 1025.65 +RDATE:19750601T000000
 1025.66 +RDATE:19760530T000000
 1025.67 +RDATE:19770522T000000
 1025.68 +RDATE:19780528T000000
 1025.69 +RDATE:19790527T000000
 1025.70 +RDATE:19800406T020000
 1025.71 +END:DAYLIGHT
 1025.72 +BEGIN:STANDARD
 1025.73 +TZOFFSETFROM:+0200
 1025.74 +TZOFFSETTO:+0100
 1025.75 +TZNAME:CET
 1025.76 +DTSTART:19161001T010000
 1025.77 +RDATE:19161001T010000
 1025.78 +RDATE:19170930T010000
 1025.79 +RDATE:19181006T010000
 1025.80 +RDATE:19191005T010000
 1025.81 +RDATE:19200919T010000
 1025.82 +RDATE:19421102T030000
 1025.83 +RDATE:19431004T030000
 1025.84 +RDATE:19440917T010000
 1025.85 +RDATE:19450915T010000
 1025.86 +RDATE:19461006T030000
 1025.87 +RDATE:19471005T010000
 1025.88 +RDATE:19481003T030000
 1025.89 +RDATE:19660925T000000
 1025.90 +RDATE:19670924T000000
 1025.91 +RDATE:19680922T000000
 1025.92 +RDATE:19690928T000000
 1025.93 +RDATE:19700927T000000
 1025.94 +RDATE:19710926T010000
 1025.95 +RDATE:19721001T000000
 1025.96 +RDATE:19730930T000000
 1025.97 +RDATE:19740929T000000
 1025.98 +RDATE:19750928T010000
 1025.99 +RDATE:19760926T010000
1025.100 +RDATE:19770925T010000
1025.101 +RDATE:19781001T010000
1025.102 +RDATE:19790930T010000
1025.103 +RDATE:19800928T030000
1025.104 +RDATE:19810927T030000
1025.105 +RDATE:19820926T030000
1025.106 +RDATE:19830925T030000
1025.107 +RDATE:19840930T030000
1025.108 +RDATE:19850929T030000
1025.109 +RDATE:19860928T030000
1025.110 +RDATE:19870927T030000
1025.111 +RDATE:19880925T030000
1025.112 +RDATE:19890924T030000
1025.113 +RDATE:19900930T030000
1025.114 +RDATE:19910929T030000
1025.115 +RDATE:19920927T030000
1025.116 +RDATE:19930926T030000
1025.117 +RDATE:19940925T030000
1025.118 +RDATE:19950924T030000
1025.119 +END:STANDARD
1025.120 +BEGIN:DAYLIGHT
1025.121 +TZOFFSETFROM:+0200
1025.122 +TZOFFSETTO:+0200
1025.123 +TZNAME:CEST
1025.124 +DTSTART:19440701T000000
1025.125 +RDATE:19440701T000000
1025.126 +END:DAYLIGHT
1025.127 +BEGIN:STANDARD
1025.128 +TZOFFSETFROM:+0100
1025.129 +TZOFFSETTO:+0100
1025.130 +TZNAME:CET
1025.131 +DTSTART:19800101T000000
1025.132 +RDATE:19800101T000000
1025.133 +END:STANDARD
1025.134 +END:VTIMEZONE
1025.135 +END:VCALENDAR
  1026.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1026.2 +++ b/src/zoneinfo/Europe/Vienna.ics	Tue Feb 10 18:12:00 2015 +0100
  1026.3 @@ -0,0 +1,90 @@
  1026.4 +BEGIN:VCALENDAR
  1026.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1026.6 +VERSION:2.0
  1026.7 +BEGIN:VTIMEZONE
  1026.8 +TZID:Europe/Vienna
  1026.9 +TZURL:http://tzurl.org/zoneinfo/Europe/Vienna
 1026.10 +X-LIC-LOCATION:Europe/Vienna
 1026.11 +BEGIN:DAYLIGHT
 1026.12 +TZOFFSETFROM:+0100
 1026.13 +TZOFFSETTO:+0200
 1026.14 +TZNAME:CEST
 1026.15 +DTSTART:19810329T020000
 1026.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
 1026.17 +END:DAYLIGHT
 1026.18 +BEGIN:STANDARD
 1026.19 +TZOFFSETFROM:+0200
 1026.20 +TZOFFSETTO:+0100
 1026.21 +TZNAME:CET
 1026.22 +DTSTART:19961027T030000
 1026.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
 1026.24 +END:STANDARD
 1026.25 +BEGIN:STANDARD
 1026.26 +TZOFFSETFROM:+010520
 1026.27 +TZOFFSETTO:+0100
 1026.28 +TZNAME:CET
 1026.29 +DTSTART:18930401T000000
 1026.30 +RDATE:18930401T000000
 1026.31 +END:STANDARD
 1026.32 +BEGIN:DAYLIGHT
 1026.33 +TZOFFSETFROM:+0100
 1026.34 +TZOFFSETTO:+0200
 1026.35 +TZNAME:CEST
 1026.36 +DTSTART:19160430T230000
 1026.37 +RDATE:19160430T230000
 1026.38 +RDATE:19170416T020000
 1026.39 +RDATE:19180415T020000
 1026.40 +RDATE:19200405T020000
 1026.41 +RDATE:19400401T020000
 1026.42 +RDATE:19430329T020000
 1026.43 +RDATE:19440403T020000
 1026.44 +RDATE:19450402T020000
 1026.45 +RDATE:19460414T020000
 1026.46 +RDATE:19470406T020000
 1026.47 +RDATE:19480418T020000
 1026.48 +RDATE:19800406T000000
 1026.49 +END:DAYLIGHT
 1026.50 +BEGIN:STANDARD
 1026.51 +TZOFFSETFROM:+0200
 1026.52 +TZOFFSETTO:+0100
 1026.53 +TZNAME:CET
 1026.54 +DTSTART:19161001T010000
 1026.55 +RDATE:19161001T010000
 1026.56 +RDATE:19170917T030000
 1026.57 +RDATE:19180916T030000
 1026.58 +RDATE:19200913T030000
 1026.59 +RDATE:19421102T030000
 1026.60 +RDATE:19431004T030000
 1026.61 +RDATE:19441002T030000
 1026.62 +RDATE:19450412T030000
 1026.63 +RDATE:19461006T030000
 1026.64 +RDATE:19471005T030000
 1026.65 +RDATE:19481003T030000
 1026.66 +RDATE:19800928T000000
 1026.67 +RDATE:19810927T030000
 1026.68 +RDATE:19820926T030000
 1026.69 +RDATE:19830925T030000
 1026.70 +RDATE:19840930T030000
 1026.71 +RDATE:19850929T030000
 1026.72 +RDATE:19860928T030000
 1026.73 +RDATE:19870927T030000
 1026.74 +RDATE:19880925T030000
 1026.75 +RDATE:19890924T030000
 1026.76 +RDATE:19900930T030000
 1026.77 +RDATE:19910929T030000
 1026.78 +RDATE:19920927T030000
 1026.79 +RDATE:19930926T030000
 1026.80 +RDATE:19940925T030000
 1026.81 +RDATE:19950924T030000
 1026.82 +END:STANDARD
 1026.83 +BEGIN:STANDARD
 1026.84 +TZOFFSETFROM:+0100
 1026.85 +TZOFFSETTO:+0100
 1026.86 +TZNAME:CET
 1026.87 +DTSTART:19200101T000000
 1026.88 +RDATE:19200101T000000
 1026.89 +RDATE:19460101T000000
 1026.90 +RDATE:19810101T000000
 1026.91 +END:STANDARD
 1026.92 +END:VTIMEZONE
 1026.93 +END:VCALENDAR
  1027.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1027.2 +++ b/src/zoneinfo/Europe/Vilnius.ics	Tue Feb 10 18:12:00 2015 +0100
  1027.3 @@ -0,0 +1,171 @@
  1027.4 +BEGIN:VCALENDAR
  1027.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1027.6 +VERSION:2.0
  1027.7 +BEGIN:VTIMEZONE
  1027.8 +TZID:Europe/Vilnius
  1027.9 +TZURL:http://tzurl.org/zoneinfo/Europe/Vilnius
 1027.10 +X-LIC-LOCATION:Europe/Vilnius
 1027.11 +BEGIN:DAYLIGHT
 1027.12 +TZOFFSETFROM:+0200
 1027.13 +TZOFFSETTO:+0300
 1027.14 +TZNAME:EEST
 1027.15 +DTSTART:20030330T030000
 1027.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
 1027.17 +END:DAYLIGHT
 1027.18 +BEGIN:STANDARD
 1027.19 +TZOFFSETFROM:+0300
 1027.20 +TZOFFSETTO:+0200
 1027.21 +TZNAME:EET
 1027.22 +DTSTART:20031026T040000
 1027.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
 1027.24 +END:STANDARD
 1027.25 +BEGIN:STANDARD
 1027.26 +TZOFFSETFROM:+014116
 1027.27 +TZOFFSETTO:+0124
 1027.28 +TZNAME:WMT
 1027.29 +DTSTART:18800101T000000
 1027.30 +RDATE:18800101T000000
 1027.31 +END:STANDARD
 1027.32 +BEGIN:STANDARD
 1027.33 +TZOFFSETFROM:+0124
 1027.34 +TZOFFSETTO:+013536
 1027.35 +TZNAME:KMT
 1027.36 +DTSTART:19170101T000000
 1027.37 +RDATE:19170101T000000
 1027.38 +END:STANDARD
 1027.39 +BEGIN:STANDARD
 1027.40 +TZOFFSETFROM:+013536
 1027.41 +TZOFFSETTO:+0100
 1027.42 +TZNAME:CET
 1027.43 +DTSTART:19191010T000000
 1027.44 +RDATE:19191010T000000
 1027.45 +END:STANDARD
 1027.46 +BEGIN:STANDARD
 1027.47 +TZOFFSETFROM:+0100
 1027.48 +TZOFFSETTO:+0200
 1027.49 +TZNAME:EET
 1027.50 +DTSTART:19200712T000000
 1027.51 +RDATE:19200712T000000
 1027.52 +END:STANDARD
 1027.53 +BEGIN:STANDARD
 1027.54 +TZOFFSETFROM:+0200
 1027.55 +TZOFFSETTO:+0100
 1027.56 +TZNAME:CET
 1027.57 +DTSTART:19201009T000000
 1027.58 +RDATE:19201009T000000
 1027.59 +RDATE:19421102T030000
 1027.60 +RDATE:19431004T030000
 1027.61 +RDATE:19981025T030000
 1027.62 +END:STANDARD
 1027.63 +BEGIN:STANDARD
 1027.64 +TZOFFSETFROM:+0100
 1027.65 +TZOFFSETTO:+0300
 1027.66 +TZNAME:MSK
 1027.67 +DTSTART:19400803T000000
 1027.68 +RDATE:19400803T000000
 1027.69 +END:STANDARD
 1027.70 +BEGIN:DAYLIGHT
 1027.71 +TZOFFSETFROM:+0300
 1027.72 +TZOFFSETTO:+0200
 1027.73 +TZNAME:CEST
 1027.74 +DTSTART:19410624T000000
 1027.75 +RDATE:19410624T000000
 1027.76 +END:DAYLIGHT
 1027.77 +BEGIN:DAYLIGHT
 1027.78 +TZOFFSETFROM:+0100
 1027.79 +TZOFFSETTO:+0200
 1027.80 +TZNAME:CEST
 1027.81 +DTSTART:19430329T020000
 1027.82 +RDATE:19430329T020000
 1027.83 +RDATE:19440403T020000
 1027.84 +RDATE:19990328T020000
 1027.85 +END:DAYLIGHT
 1027.86 +BEGIN:STANDARD
 1027.87 +TZOFFSETFROM:+0200
 1027.88 +TZOFFSETTO:+0300
 1027.89 +TZNAME:MSK
 1027.90 +DTSTART:19440801T000000
 1027.91 +RDATE:19440801T000000
 1027.92 +END:STANDARD
 1027.93 +BEGIN:DAYLIGHT
 1027.94 +TZOFFSETFROM:+0300
 1027.95 +TZOFFSETTO:+0400
 1027.96 +TZNAME:MSD
 1027.97 +DTSTART:19810401T000000
 1027.98 +RDATE:19810401T000000
 1027.99 +RDATE:19820401T000000
1027.100 +RDATE:19830401T000000
1027.101 +RDATE:19840401T000000
1027.102 +RDATE:19850331T020000
1027.103 +RDATE:19860330T020000
1027.104 +RDATE:19870329T020000
1027.105 +RDATE:19880327T020000
1027.106 +RDATE:19890326T020000
1027.107 +RDATE:19900325T020000
1027.108 +END:DAYLIGHT
1027.109 +BEGIN:STANDARD
1027.110 +TZOFFSETFROM:+0400
1027.111 +TZOFFSETTO:+0300
1027.112 +TZNAME:MSK
1027.113 +DTSTART:19811001T000000
1027.114 +RDATE:19811001T000000
1027.115 +RDATE:19821001T000000
1027.116 +RDATE:19831001T000000
1027.117 +RDATE:19840930T030000
1027.118 +RDATE:19850929T030000
1027.119 +RDATE:19860928T030000
1027.120 +RDATE:19870927T030000
1027.121 +RDATE:19880925T030000
1027.122 +RDATE:19890924T030000
1027.123 +RDATE:19900930T030000
1027.124 +END:STANDARD
1027.125 +BEGIN:DAYLIGHT
1027.126 +TZOFFSETFROM:+0300
1027.127 +TZOFFSETTO:+0300
1027.128 +TZNAME:EEST
1027.129 +DTSTART:19910331T020000
1027.130 +RDATE:19910331T020000
1027.131 +END:DAYLIGHT
1027.132 +BEGIN:STANDARD
1027.133 +TZOFFSETFROM:+0300
1027.134 +TZOFFSETTO:+0200
1027.135 +TZNAME:EET
1027.136 +DTSTART:19910929T030000
1027.137 +RDATE:19910929T030000
1027.138 +RDATE:19920927T030000
1027.139 +RDATE:19930926T030000
1027.140 +RDATE:19940925T030000
1027.141 +RDATE:19950924T030000
1027.142 +RDATE:19961027T030000
1027.143 +RDATE:19971026T030000
1027.144 +END:STANDARD
1027.145 +BEGIN:DAYLIGHT
1027.146 +TZOFFSETFROM:+0200
1027.147 +TZOFFSETTO:+0300
1027.148 +TZNAME:EEST
1027.149 +DTSTART:19920329T020000
1027.150 +RDATE:19920329T020000
1027.151 +RDATE:19930328T020000
1027.152 +RDATE:19940327T020000
1027.153 +RDATE:19950326T020000
1027.154 +RDATE:19960331T020000
1027.155 +RDATE:19970330T020000
1027.156 +END:DAYLIGHT
1027.157 +BEGIN:STANDARD
1027.158 +TZOFFSETFROM:+0200
1027.159 +TZOFFSETTO:+0200
1027.160 +TZNAME:EET
1027.161 +DTSTART:19980101T000000
1027.162 +RDATE:19980101T000000
1027.163 +RDATE:19991031T030000
1027.164 +RDATE:20030101T000000
1027.165 +END:STANDARD
1027.166 +BEGIN:DAYLIGHT
1027.167 +TZOFFSETFROM:+0200
1027.168 +TZOFFSETTO:+0200
1027.169 +TZNAME:CEST
1027.170 +DTSTART:19980329T030000
1027.171 +RDATE:19980329T030000
1027.172 +END:DAYLIGHT
1027.173 +END:VTIMEZONE
1027.174 +END:VCALENDAR
  1028.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1028.2 +++ b/src/zoneinfo/Europe/Volgograd.ics	Tue Feb 10 18:12:00 2015 +0100
  1028.3 @@ -0,0 +1,133 @@
  1028.4 +BEGIN:VCALENDAR
  1028.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1028.6 +VERSION:2.0
  1028.7 +BEGIN:VTIMEZONE
  1028.8 +TZID:Europe/Volgograd
  1028.9 +TZURL:http://tzurl.org/zoneinfo/Europe/Volgograd
 1028.10 +X-LIC-LOCATION:Europe/Volgograd
 1028.11 +BEGIN:STANDARD
 1028.12 +TZOFFSETFROM:+025740
 1028.13 +TZOFFSETTO:+0300
 1028.14 +TZNAME:TSAT
 1028.15 +DTSTART:19200103T000000
 1028.16 +RDATE:19200103T000000
 1028.17 +END:STANDARD
 1028.18 +BEGIN:STANDARD
 1028.19 +TZOFFSETFROM:+0300
 1028.20 +TZOFFSETTO:+0300
 1028.21 +TZNAME:STAT
 1028.22 +DTSTART:19250406T000000
 1028.23 +RDATE:19250406T000000
 1028.24 +END:STANDARD
 1028.25 +BEGIN:STANDARD
 1028.26 +TZOFFSETFROM:+0300
 1028.27 +TZOFFSETTO:+0400
 1028.28 +TZNAME:STAT
 1028.29 +DTSTART:19300621T000000
 1028.30 +RDATE:19300621T000000
 1028.31 +END:STANDARD
 1028.32 +BEGIN:STANDARD
 1028.33 +TZOFFSETFROM:+0400
 1028.34 +TZOFFSETTO:+0400
 1028.35 +TZNAME:VOLT
 1028.36 +DTSTART:19611111T000000
 1028.37 +RDATE:19611111T000000
 1028.38 +END:STANDARD
 1028.39 +BEGIN:DAYLIGHT
 1028.40 +TZOFFSETFROM:+0400
 1028.41 +TZOFFSETTO:+0500
 1028.42 +TZNAME:VOLST
 1028.43 +DTSTART:19810401T000000
 1028.44 +RDATE:19810401T000000
 1028.45 +RDATE:19820401T000000
 1028.46 +RDATE:19830401T000000
 1028.47 +RDATE:19840401T000000
 1028.48 +RDATE:19850331T020000
 1028.49 +RDATE:19860330T020000
 1028.50 +RDATE:19870329T020000
 1028.51 +RDATE:19880327T020000
 1028.52 +END:DAYLIGHT
 1028.53 +BEGIN:STANDARD
 1028.54 +TZOFFSETFROM:+0500
 1028.55 +TZOFFSETTO:+0400
 1028.56 +TZNAME:VOLT
 1028.57 +DTSTART:19811001T000000
 1028.58 +RDATE:19811001T000000
 1028.59 +RDATE:19821001T000000
 1028.60 +RDATE:19831001T000000
 1028.61 +RDATE:19840930T030000
 1028.62 +RDATE:19850929T030000
 1028.63 +RDATE:19860928T030000
 1028.64 +RDATE:19870927T030000
 1028.65 +RDATE:19880925T030000
 1028.66 +END:STANDARD
 1028.67 +BEGIN:DAYLIGHT
 1028.68 +TZOFFSETFROM:+0400
 1028.69 +TZOFFSETTO:+0400
 1028.70 +TZNAME:VOLST
 1028.71 +DTSTART:19890326T020000
 1028.72 +RDATE:19890326T020000
 1028.73 +RDATE:19920329T020000
 1028.74 +END:DAYLIGHT
 1028.75 +BEGIN:STANDARD
 1028.76 +TZOFFSETFROM:+0400
 1028.77 +TZOFFSETTO:+0300
 1028.78 +TZNAME:VOLT
 1028.79 +DTSTART:19890924T030000
 1028.80 +RDATE:19890924T030000
 1028.81 +RDATE:19900930T030000
 1028.82 +RDATE:19920926T230000
 1028.83 +RDATE:19930926T030000
 1028.84 +RDATE:19940925T030000
 1028.85 +RDATE:19950924T030000
 1028.86 +RDATE:19961027T030000
 1028.87 +RDATE:19971026T030000
 1028.88 +RDATE:19981025T030000
 1028.89 +RDATE:19991031T030000
 1028.90 +RDATE:20001029T030000
 1028.91 +RDATE:20011028T030000
 1028.92 +RDATE:20021027T030000
 1028.93 +RDATE:20031026T030000
 1028.94 +RDATE:20041031T030000
 1028.95 +RDATE:20051030T030000
 1028.96 +RDATE:20061029T030000
 1028.97 +RDATE:20071028T030000
 1028.98 +RDATE:20081026T030000
 1028.99 +RDATE:20091025T030000
1028.100 +RDATE:20101031T030000
1028.101 +END:STANDARD
1028.102 +BEGIN:DAYLIGHT
1028.103 +TZOFFSETFROM:+0300
1028.104 +TZOFFSETTO:+0400
1028.105 +TZNAME:VOLST
1028.106 +DTSTART:19900325T020000
1028.107 +RDATE:19900325T020000
1028.108 +RDATE:19930328T020000
1028.109 +RDATE:19940327T020000
1028.110 +RDATE:19950326T020000
1028.111 +RDATE:19960331T020000
1028.112 +RDATE:19970330T020000
1028.113 +RDATE:19980329T020000
1028.114 +RDATE:19990328T020000
1028.115 +RDATE:20000326T020000
1028.116 +RDATE:20010325T020000
1028.117 +RDATE:20020331T020000
1028.118 +RDATE:20030330T020000
1028.119 +RDATE:20040328T020000
1028.120 +RDATE:20050327T020000
1028.121 +RDATE:20060326T020000
1028.122 +RDATE:20070325T020000
1028.123 +RDATE:20080330T020000
1028.124 +RDATE:20090329T020000
1028.125 +RDATE:20100328T020000
1028.126 +END:DAYLIGHT
1028.127 +BEGIN:STANDARD
1028.128 +TZOFFSETFROM:+0300
1028.129 +TZOFFSETTO:+0400
1028.130 +TZNAME:VOLT
1028.131 +DTSTART:19910331T020000
1028.132 +RDATE:19910331T020000
1028.133 +RDATE:20110327T020000
1028.134 +END:STANDARD
1028.135 +END:VTIMEZONE
1028.136 +END:VCALENDAR
  1029.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1029.2 +++ b/src/zoneinfo/Europe/Warsaw.ics	Tue Feb 10 18:12:00 2015 +0100
  1029.3 @@ -0,0 +1,153 @@
  1029.4 +BEGIN:VCALENDAR
  1029.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1029.6 +VERSION:2.0
  1029.7 +BEGIN:VTIMEZONE
  1029.8 +TZID:Europe/Warsaw
  1029.9 +TZURL:http://tzurl.org/zoneinfo/Europe/Warsaw
 1029.10 +X-LIC-LOCATION:Europe/Warsaw
 1029.11 +BEGIN:DAYLIGHT
 1029.12 +TZOFFSETFROM:+0100
 1029.13 +TZOFFSETTO:+0200
 1029.14 +TZNAME:CEST
 1029.15 +DTSTART:19880327T020000
 1029.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
 1029.17 +END:DAYLIGHT
 1029.18 +BEGIN:STANDARD
 1029.19 +TZOFFSETFROM:+0200
 1029.20 +TZOFFSETTO:+0100
 1029.21 +TZNAME:CET
 1029.22 +DTSTART:19961027T030000
 1029.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
 1029.24 +END:STANDARD
 1029.25 +BEGIN:STANDARD
 1029.26 +TZOFFSETFROM:+0124
 1029.27 +TZOFFSETTO:+0124
 1029.28 +TZNAME:WMT
 1029.29 +DTSTART:18800101T000000
 1029.30 +RDATE:18800101T000000
 1029.31 +END:STANDARD
 1029.32 +BEGIN:STANDARD
 1029.33 +TZOFFSETFROM:+0124
 1029.34 +TZOFFSETTO:+0100
 1029.35 +TZNAME:CET
 1029.36 +DTSTART:19150805T000000
 1029.37 +RDATE:19150805T000000
 1029.38 +END:STANDARD
 1029.39 +BEGIN:DAYLIGHT
 1029.40 +TZOFFSETFROM:+0100
 1029.41 +TZOFFSETTO:+0200
 1029.42 +TZNAME:CEST
 1029.43 +DTSTART:19160430T230000
 1029.44 +RDATE:19160430T230000
 1029.45 +RDATE:19170416T020000
 1029.46 +RDATE:19180415T020000
 1029.47 +RDATE:19400623T020000
 1029.48 +RDATE:19430329T020000
 1029.49 +RDATE:19440403T020000
 1029.50 +RDATE:19450429T000000
 1029.51 +RDATE:19460414T000000
 1029.52 +RDATE:19470504T020000
 1029.53 +RDATE:19480418T020000
 1029.54 +RDATE:19490410T020000
 1029.55 +RDATE:19570602T010000
 1029.56 +RDATE:19580330T010000
 1029.57 +RDATE:19590531T010000
 1029.58 +RDATE:19600403T010000
 1029.59 +RDATE:19610528T010000
 1029.60 +RDATE:19620527T010000
 1029.61 +RDATE:19630526T010000
 1029.62 +RDATE:19640531T010000
 1029.63 +RDATE:19770403T010000
 1029.64 +RDATE:19780402T010000
 1029.65 +RDATE:19790401T010000
 1029.66 +RDATE:19800406T010000
 1029.67 +RDATE:19810329T010000
 1029.68 +RDATE:19820328T010000
 1029.69 +RDATE:19830327T010000
 1029.70 +RDATE:19840325T010000
 1029.71 +RDATE:19850331T010000
 1029.72 +RDATE:19860330T010000
 1029.73 +RDATE:19870329T010000
 1029.74 +END:DAYLIGHT
 1029.75 +BEGIN:STANDARD
 1029.76 +TZOFFSETFROM:+0200
 1029.77 +TZOFFSETTO:+0100
 1029.78 +TZNAME:CET
 1029.79 +DTSTART:19161001T010000
 1029.80 +RDATE:19161001T010000
 1029.81 +RDATE:19170917T030000
 1029.82 +RDATE:19220601T000000
 1029.83 +RDATE:19421102T030000
 1029.84 +RDATE:19431004T030000
 1029.85 +RDATE:19441004T020000
 1029.86 +RDATE:19451101T000000
 1029.87 +RDATE:19461007T030000
 1029.88 +RDATE:19471005T030000
 1029.89 +RDATE:19481003T030000
 1029.90 +RDATE:19491002T030000
 1029.91 +RDATE:19570929T020000
 1029.92 +RDATE:19580928T020000
 1029.93 +RDATE:19591004T020000
 1029.94 +RDATE:19601002T020000
 1029.95 +RDATE:19611001T020000
 1029.96 +RDATE:19620930T020000
 1029.97 +RDATE:19630929T020000
 1029.98 +RDATE:19640927T020000
 1029.99 +RDATE:19770925T020000
1029.100 +RDATE:19781001T020000
1029.101 +RDATE:19790930T020000
1029.102 +RDATE:19800928T020000
1029.103 +RDATE:19810927T020000
1029.104 +RDATE:19820926T020000
1029.105 +RDATE:19830925T020000
1029.106 +RDATE:19840930T020000
1029.107 +RDATE:19850929T020000
1029.108 +RDATE:19860928T020000
1029.109 +RDATE:19870927T020000
1029.110 +RDATE:19880925T030000
1029.111 +RDATE:19890924T030000
1029.112 +RDATE:19900930T030000
1029.113 +RDATE:19910929T030000
1029.114 +RDATE:19920927T030000
1029.115 +RDATE:19930926T030000
1029.116 +RDATE:19940925T030000
1029.117 +RDATE:19950924T030000
1029.118 +END:STANDARD
1029.119 +BEGIN:STANDARD
1029.120 +TZOFFSETFROM:+0200
1029.121 +TZOFFSETTO:+0200
1029.122 +TZNAME:EET
1029.123 +DTSTART:19180916T030000
1029.124 +RDATE:19180916T030000
1029.125 +END:STANDARD
1029.126 +BEGIN:DAYLIGHT
1029.127 +TZOFFSETFROM:+0200
1029.128 +TZOFFSETTO:+0300
1029.129 +TZNAME:EEST
1029.130 +DTSTART:19190415T020000
1029.131 +RDATE:19190415T020000
1029.132 +END:DAYLIGHT
1029.133 +BEGIN:STANDARD
1029.134 +TZOFFSETFROM:+0300
1029.135 +TZOFFSETTO:+0200
1029.136 +TZNAME:EET
1029.137 +DTSTART:19190916T030000
1029.138 +RDATE:19190916T030000
1029.139 +END:STANDARD
1029.140 +BEGIN:DAYLIGHT
1029.141 +TZOFFSETFROM:+0200
1029.142 +TZOFFSETTO:+0200
1029.143 +TZNAME:CEST
1029.144 +DTSTART:19441001T000000
1029.145 +RDATE:19441001T000000
1029.146 +END:DAYLIGHT
1029.147 +BEGIN:STANDARD
1029.148 +TZOFFSETFROM:+0100
1029.149 +TZOFFSETTO:+0100
1029.150 +TZNAME:CET
1029.151 +DTSTART:19770101T000000
1029.152 +RDATE:19770101T000000
1029.153 +RDATE:19880101T000000
1029.154 +END:STANDARD
1029.155 +END:VTIMEZONE
1029.156 +END:VCALENDAR
  1030.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1030.2 +++ b/src/zoneinfo/Europe/Zagreb.ics	Tue Feb 10 18:12:00 2015 +0100
  1030.3 @@ -0,0 +1,71 @@
  1030.4 +BEGIN:VCALENDAR
  1030.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1030.6 +VERSION:2.0
  1030.7 +BEGIN:VTIMEZONE
  1030.8 +TZID:Europe/Zagreb
  1030.9 +TZURL:http://tzurl.org/zoneinfo/Europe/Zagreb
 1030.10 +X-LIC-LOCATION:Europe/Zagreb
 1030.11 +BEGIN:DAYLIGHT
 1030.12 +TZOFFSETFROM:+0100
 1030.13 +TZOFFSETTO:+0200
 1030.14 +TZNAME:CEST
 1030.15 +DTSTART:19830327T020000
 1030.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
 1030.17 +END:DAYLIGHT
 1030.18 +BEGIN:STANDARD
 1030.19 +TZOFFSETFROM:+0200
 1030.20 +TZOFFSETTO:+0100
 1030.21 +TZNAME:CET
 1030.22 +DTSTART:19961027T030000
 1030.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
 1030.24 +END:STANDARD
 1030.25 +BEGIN:STANDARD
 1030.26 +TZOFFSETFROM:+0122
 1030.27 +TZOFFSETTO:+0100
 1030.28 +TZNAME:CET
 1030.29 +DTSTART:18840101T000000
 1030.30 +RDATE:18840101T000000
 1030.31 +END:STANDARD
 1030.32 +BEGIN:DAYLIGHT
 1030.33 +TZOFFSETFROM:+0100
 1030.34 +TZOFFSETTO:+0200
 1030.35 +TZNAME:CEST
 1030.36 +DTSTART:19410418T230000
 1030.37 +RDATE:19410418T230000
 1030.38 +RDATE:19430329T020000
 1030.39 +RDATE:19440403T020000
 1030.40 +RDATE:19450508T020000
 1030.41 +END:DAYLIGHT
 1030.42 +BEGIN:STANDARD
 1030.43 +TZOFFSETFROM:+0200
 1030.44 +TZOFFSETTO:+0100
 1030.45 +TZNAME:CET
 1030.46 +DTSTART:19421102T030000
 1030.47 +RDATE:19421102T030000
 1030.48 +RDATE:19431004T030000
 1030.49 +RDATE:19441002T030000
 1030.50 +RDATE:19450916T030000
 1030.51 +RDATE:19830925T030000
 1030.52 +RDATE:19840930T030000
 1030.53 +RDATE:19850929T030000
 1030.54 +RDATE:19860928T030000
 1030.55 +RDATE:19870927T030000
 1030.56 +RDATE:19880925T030000
 1030.57 +RDATE:19890924T030000
 1030.58 +RDATE:19900930T030000
 1030.59 +RDATE:19910929T030000
 1030.60 +RDATE:19920927T030000
 1030.61 +RDATE:19930926T030000
 1030.62 +RDATE:19940925T030000
 1030.63 +RDATE:19950924T030000
 1030.64 +END:STANDARD
 1030.65 +BEGIN:STANDARD
 1030.66 +TZOFFSETFROM:+0100
 1030.67 +TZOFFSETTO:+0100
 1030.68 +TZNAME:CET
 1030.69 +DTSTART:19450101T000000
 1030.70 +RDATE:19450101T000000
 1030.71 +RDATE:19821127T000000
 1030.72 +END:STANDARD
 1030.73 +END:VTIMEZONE
 1030.74 +END:VCALENDAR
  1031.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1031.2 +++ b/src/zoneinfo/Europe/Zaporozhye.ics	Tue Feb 10 18:12:00 2015 +0100
  1031.3 @@ -0,0 +1,139 @@
  1031.4 +BEGIN:VCALENDAR
  1031.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1031.6 +VERSION:2.0
  1031.7 +BEGIN:VTIMEZONE
  1031.8 +TZID:Europe/Zaporozhye
  1031.9 +TZURL:http://tzurl.org/zoneinfo/Europe/Zaporozhye
 1031.10 +X-LIC-LOCATION:Europe/Zaporozhye
 1031.11 +BEGIN:DAYLIGHT
 1031.12 +TZOFFSETFROM:+0200
 1031.13 +TZOFFSETTO:+0300
 1031.14 +TZNAME:EEST
 1031.15 +DTSTART:19950326T030000
 1031.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
 1031.17 +END:DAYLIGHT
 1031.18 +BEGIN:STANDARD
 1031.19 +TZOFFSETFROM:+0300
 1031.20 +TZOFFSETTO:+0200
 1031.21 +TZNAME:EET
 1031.22 +DTSTART:19961027T040000
 1031.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
 1031.24 +END:STANDARD
 1031.25 +BEGIN:STANDARD
 1031.26 +TZOFFSETFROM:+022040
 1031.27 +TZOFFSETTO:+0220
 1031.28 +TZNAME:CUT
 1031.29 +DTSTART:18800101T000000
 1031.30 +RDATE:18800101T000000
 1031.31 +END:STANDARD
 1031.32 +BEGIN:STANDARD
 1031.33 +TZOFFSETFROM:+0220
 1031.34 +TZOFFSETTO:+0200
 1031.35 +TZNAME:EET
 1031.36 +DTSTART:19240502T000000
 1031.37 +RDATE:19240502T000000
 1031.38 +END:STANDARD
 1031.39 +BEGIN:STANDARD
 1031.40 +TZOFFSETFROM:+0200
 1031.41 +TZOFFSETTO:+0300
 1031.42 +TZNAME:MSK
 1031.43 +DTSTART:19300621T000000
 1031.44 +RDATE:19300621T000000
 1031.45 +END:STANDARD
 1031.46 +BEGIN:DAYLIGHT
 1031.47 +TZOFFSETFROM:+0300
 1031.48 +TZOFFSETTO:+0200
 1031.49 +TZNAME:CEST
 1031.50 +DTSTART:19410825T000000
 1031.51 +RDATE:19410825T000000
 1031.52 +END:DAYLIGHT
 1031.53 +BEGIN:STANDARD
 1031.54 +TZOFFSETFROM:+0200
 1031.55 +TZOFFSETTO:+0100
 1031.56 +TZNAME:CET
 1031.57 +DTSTART:19421102T030000
 1031.58 +RDATE:19421102T030000
 1031.59 +RDATE:19431004T030000
 1031.60 +END:STANDARD
 1031.61 +BEGIN:DAYLIGHT
 1031.62 +TZOFFSETFROM:+0100
 1031.63 +TZOFFSETTO:+0200
 1031.64 +TZNAME:CEST
 1031.65 +DTSTART:19430329T020000
 1031.66 +RDATE:19430329T020000
 1031.67 +END:DAYLIGHT
 1031.68 +BEGIN:STANDARD
 1031.69 +TZOFFSETFROM:+0100
 1031.70 +TZOFFSETTO:+0300
 1031.71 +TZNAME:MSK
 1031.72 +DTSTART:19431025T000000
 1031.73 +RDATE:19431025T000000
 1031.74 +END:STANDARD
 1031.75 +BEGIN:DAYLIGHT
 1031.76 +TZOFFSETFROM:+0300
 1031.77 +TZOFFSETTO:+0400
 1031.78 +TZNAME:MSD
 1031.79 +DTSTART:19810401T000000
 1031.80 +RDATE:19810401T000000
 1031.81 +RDATE:19820401T000000
 1031.82 +RDATE:19830401T000000
 1031.83 +RDATE:19840401T000000
 1031.84 +RDATE:19850331T020000
 1031.85 +RDATE:19860330T020000
 1031.86 +RDATE:19870329T020000
 1031.87 +RDATE:19880327T020000
 1031.88 +RDATE:19890326T020000
 1031.89 +RDATE:19900325T020000
 1031.90 +END:DAYLIGHT
 1031.91 +BEGIN:STANDARD
 1031.92 +TZOFFSETFROM:+0400
 1031.93 +TZOFFSETTO:+0300
 1031.94 +TZNAME:MSK
 1031.95 +DTSTART:19811001T000000
 1031.96 +RDATE:19811001T000000
 1031.97 +RDATE:19821001T000000
 1031.98 +RDATE:19831001T000000
 1031.99 +RDATE:19840930T030000
1031.100 +RDATE:19850929T030000
1031.101 +RDATE:19860928T030000
1031.102 +RDATE:19870927T030000
1031.103 +RDATE:19880925T030000
1031.104 +RDATE:19890924T030000
1031.105 +RDATE:19900930T030000
1031.106 +END:STANDARD
1031.107 +BEGIN:DAYLIGHT
1031.108 +TZOFFSETFROM:+0300
1031.109 +TZOFFSETTO:+0300
1031.110 +TZNAME:EEST
1031.111 +DTSTART:19910331T020000
1031.112 +RDATE:19910331T020000
1031.113 +END:DAYLIGHT
1031.114 +BEGIN:STANDARD
1031.115 +TZOFFSETFROM:+0300
1031.116 +TZOFFSETTO:+0200
1031.117 +TZNAME:EET
1031.118 +DTSTART:19910929T000000
1031.119 +RDATE:19910929T000000
1031.120 +RDATE:19920927T000000
1031.121 +RDATE:19930926T000000
1031.122 +RDATE:19940925T000000
1031.123 +RDATE:19950924T040000
1031.124 +END:STANDARD
1031.125 +BEGIN:DAYLIGHT
1031.126 +TZOFFSETFROM:+0200
1031.127 +TZOFFSETTO:+0300
1031.128 +TZNAME:EEST
1031.129 +DTSTART:19920329T000000
1031.130 +RDATE:19920329T000000
1031.131 +RDATE:19930328T000000
1031.132 +RDATE:19940327T000000
1031.133 +END:DAYLIGHT
1031.134 +BEGIN:STANDARD
1031.135 +TZOFFSETFROM:+0200
1031.136 +TZOFFSETTO:+0200
1031.137 +TZNAME:EET
1031.138 +DTSTART:19950101T000000
1031.139 +RDATE:19950101T000000
1031.140 +END:STANDARD
1031.141 +END:VTIMEZONE
1031.142 +END:VCALENDAR
  1032.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1032.2 +++ b/src/zoneinfo/Europe/Zurich.ics	Tue Feb 10 18:12:00 2015 +0100
  1032.3 @@ -0,0 +1,75 @@
  1032.4 +BEGIN:VCALENDAR
  1032.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1032.6 +VERSION:2.0
  1032.7 +BEGIN:VTIMEZONE
  1032.8 +TZID:Europe/Zurich
  1032.9 +TZURL:http://tzurl.org/zoneinfo/Europe/Zurich
 1032.10 +X-LIC-LOCATION:Europe/Zurich
 1032.11 +BEGIN:DAYLIGHT
 1032.12 +TZOFFSETFROM:+0100
 1032.13 +TZOFFSETTO:+0200
 1032.14 +TZNAME:CEST
 1032.15 +DTSTART:19810329T020000
 1032.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
 1032.17 +END:DAYLIGHT
 1032.18 +BEGIN:STANDARD
 1032.19 +TZOFFSETFROM:+0200
 1032.20 +TZOFFSETTO:+0100
 1032.21 +TZNAME:CET
 1032.22 +DTSTART:19961027T030000
 1032.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
 1032.24 +END:STANDARD
 1032.25 +BEGIN:STANDARD
 1032.26 +TZOFFSETFROM:+003408
 1032.27 +TZOFFSETTO:+002944
 1032.28 +TZNAME:BMT
 1032.29 +DTSTART:18480912T000000
 1032.30 +RDATE:18480912T000000
 1032.31 +END:STANDARD
 1032.32 +BEGIN:STANDARD
 1032.33 +TZOFFSETFROM:+002944
 1032.34 +TZOFFSETTO:+0100
 1032.35 +TZNAME:CET
 1032.36 +DTSTART:18940601T000000
 1032.37 +RDATE:18940601T000000
 1032.38 +END:STANDARD
 1032.39 +BEGIN:DAYLIGHT
 1032.40 +TZOFFSETFROM:+0100
 1032.41 +TZOFFSETTO:+0200
 1032.42 +TZNAME:CEST
 1032.43 +DTSTART:19410505T010000
 1032.44 +RDATE:19410505T010000
 1032.45 +RDATE:19420504T010000
 1032.46 +END:DAYLIGHT
 1032.47 +BEGIN:STANDARD
 1032.48 +TZOFFSETFROM:+0200
 1032.49 +TZOFFSETTO:+0100
 1032.50 +TZNAME:CET
 1032.51 +DTSTART:19411006T020000
 1032.52 +RDATE:19411006T020000
 1032.53 +RDATE:19421005T020000
 1032.54 +RDATE:19810927T030000
 1032.55 +RDATE:19820926T030000
 1032.56 +RDATE:19830925T030000
 1032.57 +RDATE:19840930T030000
 1032.58 +RDATE:19850929T030000
 1032.59 +RDATE:19860928T030000
 1032.60 +RDATE:19870927T030000
 1032.61 +RDATE:19880925T030000
 1032.62 +RDATE:19890924T030000
 1032.63 +RDATE:19900930T030000
 1032.64 +RDATE:19910929T030000
 1032.65 +RDATE:19920927T030000
 1032.66 +RDATE:19930926T030000
 1032.67 +RDATE:19940925T030000
 1032.68 +RDATE:19950924T030000
 1032.69 +END:STANDARD
 1032.70 +BEGIN:STANDARD
 1032.71 +TZOFFSETFROM:+0100
 1032.72 +TZOFFSETTO:+0100
 1032.73 +TZNAME:CET
 1032.74 +DTSTART:19810101T000000
 1032.75 +RDATE:19810101T000000
 1032.76 +END:STANDARD
 1032.77 +END:VTIMEZONE
 1032.78 +END:VCALENDAR
  1033.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1033.2 +++ b/src/zoneinfo/Indian/Antananarivo.ics	Tue Feb 10 18:12:00 2015 +0100
  1033.3 @@ -0,0 +1,30 @@
  1033.4 +BEGIN:VCALENDAR
  1033.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1033.6 +VERSION:2.0
  1033.7 +BEGIN:VTIMEZONE
  1033.8 +TZID:Indian/Antananarivo
  1033.9 +TZURL:http://tzurl.org/zoneinfo/Indian/Antananarivo
 1033.10 +X-LIC-LOCATION:Indian/Antananarivo
 1033.11 +BEGIN:STANDARD
 1033.12 +TZOFFSETFROM:+031004
 1033.13 +TZOFFSETTO:+0300
 1033.14 +TZNAME:EAT
 1033.15 +DTSTART:19110701T000000
 1033.16 +RDATE:19110701T000000
 1033.17 +END:STANDARD
 1033.18 +BEGIN:DAYLIGHT
 1033.19 +TZOFFSETFROM:+0300
 1033.20 +TZOFFSETTO:+0400
 1033.21 +TZNAME:EAST
 1033.22 +DTSTART:19540227T230000
 1033.23 +RDATE:19540227T230000
 1033.24 +END:DAYLIGHT
 1033.25 +BEGIN:STANDARD
 1033.26 +TZOFFSETFROM:+0400
 1033.27 +TZOFFSETTO:+0300
 1033.28 +TZNAME:EAT
 1033.29 +DTSTART:19540530T000000
 1033.30 +RDATE:19540530T000000
 1033.31 +END:STANDARD
 1033.32 +END:VTIMEZONE
 1033.33 +END:VCALENDAR
  1034.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1034.2 +++ b/src/zoneinfo/Indian/Chagos.ics	Tue Feb 10 18:12:00 2015 +0100
  1034.3 @@ -0,0 +1,23 @@
  1034.4 +BEGIN:VCALENDAR
  1034.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1034.6 +VERSION:2.0
  1034.7 +BEGIN:VTIMEZONE
  1034.8 +TZID:Indian/Chagos
  1034.9 +TZURL:http://tzurl.org/zoneinfo/Indian/Chagos
 1034.10 +X-LIC-LOCATION:Indian/Chagos
 1034.11 +BEGIN:STANDARD
 1034.12 +TZOFFSETFROM:+044940
 1034.13 +TZOFFSETTO:+0500
 1034.14 +TZNAME:IOT
 1034.15 +DTSTART:19070101T000000
 1034.16 +RDATE:19070101T000000
 1034.17 +END:STANDARD
 1034.18 +BEGIN:STANDARD
 1034.19 +TZOFFSETFROM:+0500
 1034.20 +TZOFFSETTO:+0600
 1034.21 +TZNAME:IOT
 1034.22 +DTSTART:19960101T000000
 1034.23 +RDATE:19960101T000000
 1034.24 +END:STANDARD
 1034.25 +END:VTIMEZONE
 1034.26 +END:VCALENDAR
  1035.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1035.2 +++ b/src/zoneinfo/Indian/Christmas.ics	Tue Feb 10 18:12:00 2015 +0100
  1035.3 @@ -0,0 +1,16 @@
  1035.4 +BEGIN:VCALENDAR
  1035.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1035.6 +VERSION:2.0
  1035.7 +BEGIN:VTIMEZONE
  1035.8 +TZID:Indian/Christmas
  1035.9 +TZURL:http://tzurl.org/zoneinfo/Indian/Christmas
 1035.10 +X-LIC-LOCATION:Indian/Christmas
 1035.11 +BEGIN:STANDARD
 1035.12 +TZOFFSETFROM:+070252
 1035.13 +TZOFFSETTO:+0700
 1035.14 +TZNAME:CXT
 1035.15 +DTSTART:18950201T000000
 1035.16 +RDATE:18950201T000000
 1035.17 +END:STANDARD
 1035.18 +END:VTIMEZONE
 1035.19 +END:VCALENDAR
  1036.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1036.2 +++ b/src/zoneinfo/Indian/Cocos.ics	Tue Feb 10 18:12:00 2015 +0100
  1036.3 @@ -0,0 +1,16 @@
  1036.4 +BEGIN:VCALENDAR
  1036.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1036.6 +VERSION:2.0
  1036.7 +BEGIN:VTIMEZONE
  1036.8 +TZID:Indian/Cocos
  1036.9 +TZURL:http://tzurl.org/zoneinfo/Indian/Cocos
 1036.10 +X-LIC-LOCATION:Indian/Cocos
 1036.11 +BEGIN:STANDARD
 1036.12 +TZOFFSETFROM:+062740
 1036.13 +TZOFFSETTO:+0630
 1036.14 +TZNAME:CCT
 1036.15 +DTSTART:19000101T000000
 1036.16 +RDATE:19000101T000000
 1036.17 +END:STANDARD
 1036.18 +END:VTIMEZONE
 1036.19 +END:VCALENDAR
  1037.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1037.2 +++ b/src/zoneinfo/Indian/Comoro.ics	Tue Feb 10 18:12:00 2015 +0100
  1037.3 @@ -0,0 +1,16 @@
  1037.4 +BEGIN:VCALENDAR
  1037.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1037.6 +VERSION:2.0
  1037.7 +BEGIN:VTIMEZONE
  1037.8 +TZID:Indian/Comoro
  1037.9 +TZURL:http://tzurl.org/zoneinfo/Indian/Comoro
 1037.10 +X-LIC-LOCATION:Indian/Comoro
 1037.11 +BEGIN:STANDARD
 1037.12 +TZOFFSETFROM:+025304
 1037.13 +TZOFFSETTO:+0300
 1037.14 +TZNAME:EAT
 1037.15 +DTSTART:19110701T000000
 1037.16 +RDATE:19110701T000000
 1037.17 +END:STANDARD
 1037.18 +END:VTIMEZONE
 1037.19 +END:VCALENDAR
  1038.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1038.2 +++ b/src/zoneinfo/Indian/Kerguelen.ics	Tue Feb 10 18:12:00 2015 +0100
  1038.3 @@ -0,0 +1,16 @@
  1038.4 +BEGIN:VCALENDAR
  1038.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1038.6 +VERSION:2.0
  1038.7 +BEGIN:VTIMEZONE
  1038.8 +TZID:Indian/Kerguelen
  1038.9 +TZURL:http://tzurl.org/zoneinfo/Indian/Kerguelen
 1038.10 +X-LIC-LOCATION:Indian/Kerguelen
 1038.11 +BEGIN:STANDARD
 1038.12 +TZOFFSETFROM:+0000
 1038.13 +TZOFFSETTO:+0500
 1038.14 +TZNAME:TFT
 1038.15 +DTSTART:19500101T000000
 1038.16 +RDATE:19500101T000000
 1038.17 +END:STANDARD
 1038.18 +END:VTIMEZONE
 1038.19 +END:VCALENDAR
  1039.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1039.2 +++ b/src/zoneinfo/Indian/Mahe.ics	Tue Feb 10 18:12:00 2015 +0100
  1039.3 @@ -0,0 +1,16 @@
  1039.4 +BEGIN:VCALENDAR
  1039.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1039.6 +VERSION:2.0
  1039.7 +BEGIN:VTIMEZONE
  1039.8 +TZID:Indian/Mahe
  1039.9 +TZURL:http://tzurl.org/zoneinfo/Indian/Mahe
 1039.10 +X-LIC-LOCATION:Indian/Mahe
 1039.11 +BEGIN:STANDARD
 1039.12 +TZOFFSETFROM:+034148
 1039.13 +TZOFFSETTO:+0400
 1039.14 +TZNAME:SCT
 1039.15 +DTSTART:19060601T000000
 1039.16 +RDATE:19060601T000000
 1039.17 +END:STANDARD
 1039.18 +END:VTIMEZONE
 1039.19 +END:VCALENDAR
  1040.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1040.2 +++ b/src/zoneinfo/Indian/Maldives.ics	Tue Feb 10 18:12:00 2015 +0100
  1040.3 @@ -0,0 +1,23 @@
  1040.4 +BEGIN:VCALENDAR
  1040.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1040.6 +VERSION:2.0
  1040.7 +BEGIN:VTIMEZONE
  1040.8 +TZID:Indian/Maldives
  1040.9 +TZURL:http://tzurl.org/zoneinfo/Indian/Maldives
 1040.10 +X-LIC-LOCATION:Indian/Maldives
 1040.11 +BEGIN:STANDARD
 1040.12 +TZOFFSETFROM:+0454
 1040.13 +TZOFFSETTO:+0454
 1040.14 +TZNAME:MMT
 1040.15 +DTSTART:18800101T000000
 1040.16 +RDATE:18800101T000000
 1040.17 +END:STANDARD
 1040.18 +BEGIN:STANDARD
 1040.19 +TZOFFSETFROM:+0454
 1040.20 +TZOFFSETTO:+0500
 1040.21 +TZNAME:MVT
 1040.22 +DTSTART:19600101T000000
 1040.23 +RDATE:19600101T000000
 1040.24 +END:STANDARD
 1040.25 +END:VTIMEZONE
 1040.26 +END:VCALENDAR
  1041.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1041.2 +++ b/src/zoneinfo/Indian/Mauritius.ics	Tue Feb 10 18:12:00 2015 +0100
  1041.3 @@ -0,0 +1,32 @@
  1041.4 +BEGIN:VCALENDAR
  1041.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1041.6 +VERSION:2.0
  1041.7 +BEGIN:VTIMEZONE
  1041.8 +TZID:Indian/Mauritius
  1041.9 +TZURL:http://tzurl.org/zoneinfo/Indian/Mauritius
 1041.10 +X-LIC-LOCATION:Indian/Mauritius
 1041.11 +BEGIN:STANDARD
 1041.12 +TZOFFSETFROM:+0350
 1041.13 +TZOFFSETTO:+0400
 1041.14 +TZNAME:MUT
 1041.15 +DTSTART:19070101T000000
 1041.16 +RDATE:19070101T000000
 1041.17 +END:STANDARD
 1041.18 +BEGIN:DAYLIGHT
 1041.19 +TZOFFSETFROM:+0400
 1041.20 +TZOFFSETTO:+0500
 1041.21 +TZNAME:MUST
 1041.22 +DTSTART:19821010T000000
 1041.23 +RDATE:19821010T000000
 1041.24 +RDATE:20081026T020000
 1041.25 +END:DAYLIGHT
 1041.26 +BEGIN:STANDARD
 1041.27 +TZOFFSETFROM:+0500
 1041.28 +TZOFFSETTO:+0400
 1041.29 +TZNAME:MUT
 1041.30 +DTSTART:19830321T000000
 1041.31 +RDATE:19830321T000000
 1041.32 +RDATE:20090329T020000
 1041.33 +END:STANDARD
 1041.34 +END:VTIMEZONE
 1041.35 +END:VCALENDAR
  1042.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1042.2 +++ b/src/zoneinfo/Indian/Mayotte.ics	Tue Feb 10 18:12:00 2015 +0100
  1042.3 @@ -0,0 +1,16 @@
  1042.4 +BEGIN:VCALENDAR
  1042.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1042.6 +VERSION:2.0
  1042.7 +BEGIN:VTIMEZONE
  1042.8 +TZID:Indian/Mayotte
  1042.9 +TZURL:http://tzurl.org/zoneinfo/Indian/Mayotte
 1042.10 +X-LIC-LOCATION:Indian/Mayotte
 1042.11 +BEGIN:STANDARD
 1042.12 +TZOFFSETFROM:+030056
 1042.13 +TZOFFSETTO:+0300
 1042.14 +TZNAME:EAT
 1042.15 +DTSTART:19110701T000000
 1042.16 +RDATE:19110701T000000
 1042.17 +END:STANDARD
 1042.18 +END:VTIMEZONE
 1042.19 +END:VCALENDAR
  1043.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1043.2 +++ b/src/zoneinfo/Indian/Reunion.ics	Tue Feb 10 18:12:00 2015 +0100
  1043.3 @@ -0,0 +1,16 @@
  1043.4 +BEGIN:VCALENDAR
  1043.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1043.6 +VERSION:2.0
  1043.7 +BEGIN:VTIMEZONE
  1043.8 +TZID:Indian/Reunion
  1043.9 +TZURL:http://tzurl.org/zoneinfo/Indian/Reunion
 1043.10 +X-LIC-LOCATION:Indian/Reunion
 1043.11 +BEGIN:STANDARD
 1043.12 +TZOFFSETFROM:+034152
 1043.13 +TZOFFSETTO:+0400
 1043.14 +TZNAME:RET
 1043.15 +DTSTART:19110601T000000
 1043.16 +RDATE:19110601T000000
 1043.17 +END:STANDARD
 1043.18 +END:VTIMEZONE
 1043.19 +END:VCALENDAR
  1044.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1044.2 +++ b/src/zoneinfo/Pacific/Apia.ics	Tue Feb 10 18:12:00 2015 +0100
  1044.3 @@ -0,0 +1,59 @@
  1044.4 +BEGIN:VCALENDAR
  1044.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1044.6 +VERSION:2.0
  1044.7 +BEGIN:VTIMEZONE
  1044.8 +TZID:Pacific/Apia
  1044.9 +TZURL:http://tzurl.org/zoneinfo/Pacific/Apia
 1044.10 +X-LIC-LOCATION:Pacific/Apia
 1044.11 +BEGIN:STANDARD
 1044.12 +TZOFFSETFROM:+123304
 1044.13 +TZOFFSETTO:-112656
 1044.14 +TZNAME:LMT
 1044.15 +DTSTART:18790705T000000
 1044.16 +RDATE:18790705T000000
 1044.17 +END:STANDARD
 1044.18 +BEGIN:STANDARD
 1044.19 +TZOFFSETFROM:-112656
 1044.20 +TZOFFSETTO:-1130
 1044.21 +TZNAME:SAMT
 1044.22 +DTSTART:19110101T000000
 1044.23 +RDATE:19110101T000000
 1044.24 +END:STANDARD
 1044.25 +BEGIN:STANDARD
 1044.26 +TZOFFSETFROM:-1130
 1044.27 +TZOFFSETTO:-1100
 1044.28 +TZNAME:WST
 1044.29 +DTSTART:19500101T000000
 1044.30 +RDATE:19500101T000000
 1044.31 +END:STANDARD
 1044.32 +BEGIN:DAYLIGHT
 1044.33 +TZOFFSETFROM:-1100
 1044.34 +TZOFFSETTO:-1000
 1044.35 +TZNAME:WSDT
 1044.36 +DTSTART:20100926T000000
 1044.37 +RDATE:20100926T000000
 1044.38 +RDATE:20110924T030000
 1044.39 +END:DAYLIGHT
 1044.40 +BEGIN:STANDARD
 1044.41 +TZOFFSETFROM:-1000
 1044.42 +TZOFFSETTO:-1100
 1044.43 +TZNAME:WST
 1044.44 +DTSTART:20110402T040000
 1044.45 +RDATE:20110402T040000
 1044.46 +END:STANDARD
 1044.47 +BEGIN:DAYLIGHT
 1044.48 +TZOFFSETFROM:-1000
 1044.49 +TZOFFSETTO:+1400
 1044.50 +TZNAME:WSDT
 1044.51 +DTSTART:20111230T000000
 1044.52 +RDATE:20111230T000000
 1044.53 +END:DAYLIGHT
 1044.54 +BEGIN:STANDARD
 1044.55 +TZOFFSETFROM:+1400
 1044.56 +TZOFFSETTO:+1300
 1044.57 +TZNAME:WST
 1044.58 +DTSTART:20120401T040000
 1044.59 +RDATE:20120401T040000
 1044.60 +END:STANDARD
 1044.61 +END:VTIMEZONE
 1044.62 +END:VCALENDAR
  1045.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1045.2 +++ b/src/zoneinfo/Pacific/Auckland.ics	Tue Feb 10 18:12:00 2015 +0100
  1045.3 @@ -0,0 +1,166 @@
  1045.4 +BEGIN:VCALENDAR
  1045.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1045.6 +VERSION:2.0
  1045.7 +BEGIN:VTIMEZONE
  1045.8 +TZID:Pacific/Auckland
  1045.9 +TZURL:http://tzurl.org/zoneinfo/Pacific/Auckland
 1045.10 +X-LIC-LOCATION:Pacific/Auckland
 1045.11 +BEGIN:DAYLIGHT
 1045.12 +TZOFFSETFROM:+1200
 1045.13 +TZOFFSETTO:+1300
 1045.14 +TZNAME:NZDT
 1045.15 +DTSTART:20070930T020000
 1045.16 +RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU
 1045.17 +END:DAYLIGHT
 1045.18 +BEGIN:STANDARD
 1045.19 +TZOFFSETFROM:+1300
 1045.20 +TZOFFSETTO:+1200
 1045.21 +TZNAME:NZST
 1045.22 +DTSTART:20080406T030000
 1045.23 +RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU
 1045.24 +END:STANDARD
 1045.25 +BEGIN:STANDARD
 1045.26 +TZOFFSETFROM:+113904
 1045.27 +TZOFFSETTO:+1130
 1045.28 +TZNAME:NZMT
 1045.29 +DTSTART:18681102T000000
 1045.30 +RDATE:18681102T000000
 1045.31 +END:STANDARD
 1045.32 +BEGIN:DAYLIGHT
 1045.33 +TZOFFSETFROM:+1130
 1045.34 +TZOFFSETTO:+1230
 1045.35 +TZNAME:NZST
 1045.36 +DTSTART:19271106T020000
 1045.37 +RDATE:19271106T020000
 1045.38 +END:DAYLIGHT
 1045.39 +BEGIN:STANDARD
 1045.40 +TZOFFSETFROM:+1230
 1045.41 +TZOFFSETTO:+1130
 1045.42 +TZNAME:NZMT
 1045.43 +DTSTART:19280304T020000
 1045.44 +RDATE:19280304T020000
 1045.45 +END:STANDARD
 1045.46 +BEGIN:DAYLIGHT
 1045.47 +TZOFFSETFROM:+1130
 1045.48 +TZOFFSETTO:+1200
 1045.49 +TZNAME:NZST
 1045.50 +DTSTART:19281014T020000
 1045.51 +RDATE:19281014T020000
 1045.52 +RDATE:19291013T020000
 1045.53 +RDATE:19301012T020000
 1045.54 +RDATE:19311011T020000
 1045.55 +RDATE:19321009T020000
 1045.56 +RDATE:19331008T020000
 1045.57 +RDATE:19340930T020000
 1045.58 +RDATE:19350929T020000
 1045.59 +RDATE:19360927T020000
 1045.60 +RDATE:19370926T020000
 1045.61 +RDATE:19380925T020000
 1045.62 +RDATE:19390924T020000
 1045.63 +RDATE:19400929T020000
 1045.64 +END:DAYLIGHT
 1045.65 +BEGIN:STANDARD
 1045.66 +TZOFFSETFROM:+1200
 1045.67 +TZOFFSETTO:+1130
 1045.68 +TZNAME:NZMT
 1045.69 +DTSTART:19290317T020000
 1045.70 +RDATE:19290317T020000
 1045.71 +RDATE:19300316T020000
 1045.72 +RDATE:19310315T020000
 1045.73 +RDATE:19320320T020000
 1045.74 +RDATE:19330319T020000
 1045.75 +RDATE:19340429T020000
 1045.76 +RDATE:19350428T020000
 1045.77 +RDATE:19360426T020000
 1045.78 +RDATE:19370425T020000
 1045.79 +RDATE:19380424T020000
 1045.80 +RDATE:19390430T020000
 1045.81 +RDATE:19400428T020000
 1045.82 +END:STANDARD
 1045.83 +BEGIN:STANDARD
 1045.84 +TZOFFSETFROM:+1200
 1045.85 +TZOFFSETTO:+1200
 1045.86 +TZNAME:NZST
 1045.87 +DTSTART:19460101T000000
 1045.88 +RDATE:19460101T000000
 1045.89 +END:STANDARD
 1045.90 +BEGIN:DAYLIGHT
 1045.91 +TZOFFSETFROM:+1200
 1045.92 +TZOFFSETTO:+1300
 1045.93 +TZNAME:NZDT
 1045.94 +DTSTART:19741103T020000
 1045.95 +RDATE:19741103T020000
 1045.96 +RDATE:19751026T020000
 1045.97 +RDATE:19761031T020000
 1045.98 +RDATE:19771030T020000
 1045.99 +RDATE:19781029T020000
1045.100 +RDATE:19791028T020000
1045.101 +RDATE:19801026T020000
1045.102 +RDATE:19811025T020000
1045.103 +RDATE:19821031T020000
1045.104 +RDATE:19831030T020000
1045.105 +RDATE:19841028T020000
1045.106 +RDATE:19851027T020000
1045.107 +RDATE:19861026T020000
1045.108 +RDATE:19871025T020000
1045.109 +RDATE:19881030T020000
1045.110 +RDATE:19891008T020000
1045.111 +RDATE:19901007T020000
1045.112 +RDATE:19911006T020000
1045.113 +RDATE:19921004T020000
1045.114 +RDATE:19931003T020000
1045.115 +RDATE:19941002T020000
1045.116 +RDATE:19951001T020000
1045.117 +RDATE:19961006T020000
1045.118 +RDATE:19971005T020000
1045.119 +RDATE:19981004T020000
1045.120 +RDATE:19991003T020000
1045.121 +RDATE:20001001T020000
1045.122 +RDATE:20011007T020000
1045.123 +RDATE:20021006T020000
1045.124 +RDATE:20031005T020000
1045.125 +RDATE:20041003T020000
1045.126 +RDATE:20051002T020000
1045.127 +RDATE:20061001T020000
1045.128 +END:DAYLIGHT
1045.129 +BEGIN:STANDARD
1045.130 +TZOFFSETFROM:+1300
1045.131 +TZOFFSETTO:+1200
1045.132 +TZNAME:NZST
1045.133 +DTSTART:19750223T030000
1045.134 +RDATE:19750223T030000
1045.135 +RDATE:19760307T030000
1045.136 +RDATE:19770306T030000
1045.137 +RDATE:19780305T030000
1045.138 +RDATE:19790304T030000
1045.139 +RDATE:19800302T030000
1045.140 +RDATE:19810301T030000
1045.141 +RDATE:19820307T030000
1045.142 +RDATE:19830306T030000
1045.143 +RDATE:19840304T030000
1045.144 +RDATE:19850303T030000
1045.145 +RDATE:19860302T030000
1045.146 +RDATE:19870301T030000
1045.147 +RDATE:19880306T030000
1045.148 +RDATE:19890305T030000
1045.149 +RDATE:19900318T030000
1045.150 +RDATE:19910317T030000
1045.151 +RDATE:19920315T030000
1045.152 +RDATE:19930321T030000
1045.153 +RDATE:19940320T030000
1045.154 +RDATE:19950319T030000
1045.155 +RDATE:19960317T030000
1045.156 +RDATE:19970316T030000
1045.157 +RDATE:19980315T030000
1045.158 +RDATE:19990321T030000
1045.159 +RDATE:20000319T030000
1045.160 +RDATE:20010318T030000
1045.161 +RDATE:20020317T030000
1045.162 +RDATE:20030316T030000
1045.163 +RDATE:20040321T030000
1045.164 +RDATE:20050320T030000
1045.165 +RDATE:20060319T030000
1045.166 +RDATE:20070318T030000
1045.167 +END:STANDARD
1045.168 +END:VTIMEZONE
1045.169 +END:VCALENDAR
  1046.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1046.2 +++ b/src/zoneinfo/Pacific/Chatham.ics	Tue Feb 10 18:12:00 2015 +0100
  1046.3 @@ -0,0 +1,108 @@
  1046.4 +BEGIN:VCALENDAR
  1046.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1046.6 +VERSION:2.0
  1046.7 +BEGIN:VTIMEZONE
  1046.8 +TZID:Pacific/Chatham
  1046.9 +TZURL:http://tzurl.org/zoneinfo/Pacific/Chatham
 1046.10 +X-LIC-LOCATION:Pacific/Chatham
 1046.11 +BEGIN:DAYLIGHT
 1046.12 +TZOFFSETFROM:+1245
 1046.13 +TZOFFSETTO:+1345
 1046.14 +TZNAME:CHADT
 1046.15 +DTSTART:20070930T024500
 1046.16 +RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU
 1046.17 +END:DAYLIGHT
 1046.18 +BEGIN:STANDARD
 1046.19 +TZOFFSETFROM:+1345
 1046.20 +TZOFFSETTO:+1245
 1046.21 +TZNAME:CHAST
 1046.22 +DTSTART:20080406T034500
 1046.23 +RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU
 1046.24 +END:STANDARD
 1046.25 +BEGIN:STANDARD
 1046.26 +TZOFFSETFROM:+121348
 1046.27 +TZOFFSETTO:+1245
 1046.28 +TZNAME:CHAST
 1046.29 +DTSTART:19570101T000000
 1046.30 +RDATE:19570101T000000
 1046.31 +END:STANDARD
 1046.32 +BEGIN:DAYLIGHT
 1046.33 +TZOFFSETFROM:+1245
 1046.34 +TZOFFSETTO:+1345
 1046.35 +TZNAME:CHADT
 1046.36 +DTSTART:19741103T024500
 1046.37 +RDATE:19741103T024500
 1046.38 +RDATE:19751026T024500
 1046.39 +RDATE:19761031T024500
 1046.40 +RDATE:19771030T024500
 1046.41 +RDATE:19781029T024500
 1046.42 +RDATE:19791028T024500
 1046.43 +RDATE:19801026T024500
 1046.44 +RDATE:19811025T024500
 1046.45 +RDATE:19821031T024500
 1046.46 +RDATE:19831030T024500
 1046.47 +RDATE:19841028T024500
 1046.48 +RDATE:19851027T024500
 1046.49 +RDATE:19861026T024500
 1046.50 +RDATE:19871025T024500
 1046.51 +RDATE:19881030T024500
 1046.52 +RDATE:19891008T024500
 1046.53 +RDATE:19901007T024500
 1046.54 +RDATE:19911006T024500
 1046.55 +RDATE:19921004T024500
 1046.56 +RDATE:19931003T024500
 1046.57 +RDATE:19941002T024500
 1046.58 +RDATE:19951001T024500
 1046.59 +RDATE:19961006T024500
 1046.60 +RDATE:19971005T024500
 1046.61 +RDATE:19981004T024500
 1046.62 +RDATE:19991003T024500
 1046.63 +RDATE:20001001T024500
 1046.64 +RDATE:20011007T024500
 1046.65 +RDATE:20021006T024500
 1046.66 +RDATE:20031005T024500
 1046.67 +RDATE:20041003T024500
 1046.68 +RDATE:20051002T024500
 1046.69 +RDATE:20061001T024500
 1046.70 +END:DAYLIGHT
 1046.71 +BEGIN:STANDARD
 1046.72 +TZOFFSETFROM:+1345
 1046.73 +TZOFFSETTO:+1245
 1046.74 +TZNAME:CHAST
 1046.75 +DTSTART:19750223T034500
 1046.76 +RDATE:19750223T034500
 1046.77 +RDATE:19760307T034500
 1046.78 +RDATE:19770306T034500
 1046.79 +RDATE:19780305T034500
 1046.80 +RDATE:19790304T034500
 1046.81 +RDATE:19800302T034500
 1046.82 +RDATE:19810301T034500
 1046.83 +RDATE:19820307T034500
 1046.84 +RDATE:19830306T034500
 1046.85 +RDATE:19840304T034500
 1046.86 +RDATE:19850303T034500
 1046.87 +RDATE:19860302T034500
 1046.88 +RDATE:19870301T034500
 1046.89 +RDATE:19880306T034500
 1046.90 +RDATE:19890305T034500
 1046.91 +RDATE:19900318T034500
 1046.92 +RDATE:19910317T034500
 1046.93 +RDATE:19920315T034500
 1046.94 +RDATE:19930321T034500
 1046.95 +RDATE:19940320T034500
 1046.96 +RDATE:19950319T034500
 1046.97 +RDATE:19960317T034500
 1046.98 +RDATE:19970316T034500
 1046.99 +RDATE:19980315T034500
1046.100 +RDATE:19990321T034500
1046.101 +RDATE:20000319T034500
1046.102 +RDATE:20010318T034500
1046.103 +RDATE:20020317T034500
1046.104 +RDATE:20030316T034500
1046.105 +RDATE:20040321T034500
1046.106 +RDATE:20050320T034500
1046.107 +RDATE:20060319T034500
1046.108 +RDATE:20070318T034500
1046.109 +END:STANDARD
1046.110 +END:VTIMEZONE
1046.111 +END:VCALENDAR
  1047.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1047.2 +++ b/src/zoneinfo/Pacific/Chuuk.ics	Tue Feb 10 18:12:00 2015 +0100
  1047.3 @@ -0,0 +1,16 @@
  1047.4 +BEGIN:VCALENDAR
  1047.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1047.6 +VERSION:2.0
  1047.7 +BEGIN:VTIMEZONE
  1047.8 +TZID:Pacific/Chuuk
  1047.9 +TZURL:http://tzurl.org/zoneinfo/Pacific/Chuuk
 1047.10 +X-LIC-LOCATION:Pacific/Chuuk
 1047.11 +BEGIN:STANDARD
 1047.12 +TZOFFSETFROM:+100708
 1047.13 +TZOFFSETTO:+1000
 1047.14 +TZNAME:CHUT
 1047.15 +DTSTART:19010101T000000
 1047.16 +RDATE:19010101T000000
 1047.17 +END:STANDARD
 1047.18 +END:VTIMEZONE
 1047.19 +END:VCALENDAR
  1048.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1048.2 +++ b/src/zoneinfo/Pacific/Easter.ics	Tue Feb 10 18:12:00 2015 +0100
  1048.3 @@ -0,0 +1,171 @@
  1048.4 +BEGIN:VCALENDAR
  1048.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1048.6 +VERSION:2.0
  1048.7 +BEGIN:VTIMEZONE
  1048.8 +TZID:Pacific/Easter
  1048.9 +TZURL:http://tzurl.org/zoneinfo/Pacific/Easter
 1048.10 +X-LIC-LOCATION:Pacific/Easter
 1048.11 +BEGIN:STANDARD
 1048.12 +TZOFFSETFROM:-0500
 1048.13 +TZOFFSETTO:-0600
 1048.14 +TZNAME:EAST
 1048.15 +DTSTART:20120310T220000
 1048.16 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SA
 1048.17 +END:STANDARD
 1048.18 +BEGIN:DAYLIGHT
 1048.19 +TZOFFSETFROM:-0600
 1048.20 +TZOFFSETTO:-0500
 1048.21 +TZNAME:EASST
 1048.22 +DTSTART:20121013T220000
 1048.23 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=2SA
 1048.24 +END:DAYLIGHT
 1048.25 +BEGIN:STANDARD
 1048.26 +TZOFFSETFROM:-071744
 1048.27 +TZOFFSETTO:-071728
 1048.28 +TZNAME:EMT
 1048.29 +DTSTART:18900101T000000
 1048.30 +RDATE:18900101T000000
 1048.31 +END:STANDARD
 1048.32 +BEGIN:DAYLIGHT
 1048.33 +TZOFFSETFROM:-071728
 1048.34 +TZOFFSETTO:-0600
 1048.35 +TZNAME:EASST
 1048.36 +DTSTART:19320901T000000
 1048.37 +RDATE:19320901T000000
 1048.38 +END:DAYLIGHT
 1048.39 +BEGIN:STANDARD
 1048.40 +TZOFFSETFROM:-0600
 1048.41 +TZOFFSETTO:-0700
 1048.42 +TZNAME:EAST
 1048.43 +DTSTART:19420531T220000
 1048.44 +RDATE:19420531T220000
 1048.45 +RDATE:19460831T210000
 1048.46 +RDATE:19690329T210000
 1048.47 +RDATE:19700328T210000
 1048.48 +RDATE:19710313T210000
 1048.49 +RDATE:19720311T210000
 1048.50 +RDATE:19730310T210000
 1048.51 +RDATE:19740309T210000
 1048.52 +RDATE:19750308T210000
 1048.53 +RDATE:19760313T210000
 1048.54 +RDATE:19770312T210000
 1048.55 +RDATE:19780311T210000
 1048.56 +RDATE:19790310T210000
 1048.57 +RDATE:19800308T210000
 1048.58 +RDATE:19810314T210000
 1048.59 +END:STANDARD
 1048.60 +BEGIN:DAYLIGHT
 1048.61 +TZOFFSETFROM:-0700
 1048.62 +TZOFFSETTO:-0600
 1048.63 +TZNAME:EASST
 1048.64 +DTSTART:19420731T220000
 1048.65 +RDATE:19420731T220000
 1048.66 +RDATE:19681102T210000
 1048.67 +RDATE:19691122T210000
 1048.68 +RDATE:19701010T210000
 1048.69 +RDATE:19711009T210000
 1048.70 +RDATE:19721014T210000
 1048.71 +RDATE:19730929T210000
 1048.72 +RDATE:19741012T210000
 1048.73 +RDATE:19751011T210000
 1048.74 +RDATE:19761009T210000
 1048.75 +RDATE:19771008T210000
 1048.76 +RDATE:19781014T210000
 1048.77 +RDATE:19791013T210000
 1048.78 +RDATE:19801011T210000
 1048.79 +RDATE:19811010T210000
 1048.80 +END:DAYLIGHT
 1048.81 +BEGIN:DAYLIGHT
 1048.82 +TZOFFSETFROM:-0600
 1048.83 +TZOFFSETTO:-0600
 1048.84 +TZNAME:EASST
 1048.85 +DTSTART:19460714T220000
 1048.86 +RDATE:19460714T220000
 1048.87 +END:DAYLIGHT
 1048.88 +BEGIN:STANDARD
 1048.89 +TZOFFSETFROM:-0700
 1048.90 +TZOFFSETTO:-0700
 1048.91 +TZNAME:EAST
 1048.92 +DTSTART:19470331T210000
 1048.93 +RDATE:19470331T210000
 1048.94 +END:STANDARD
 1048.95 +BEGIN:STANDARD
 1048.96 +TZOFFSETFROM:-0600
 1048.97 +TZOFFSETTO:-0600
 1048.98 +TZNAME:EAST
 1048.99 +DTSTART:19820313T210000
1048.100 +RDATE:19820313T210000
1048.101 +END:STANDARD
1048.102 +BEGIN:DAYLIGHT
1048.103 +TZOFFSETFROM:-0600
1048.104 +TZOFFSETTO:-0500
1048.105 +TZNAME:EASST
1048.106 +DTSTART:19821009T220000
1048.107 +RDATE:19821009T220000
1048.108 +RDATE:19831008T220000
1048.109 +RDATE:19841013T220000
1048.110 +RDATE:19851012T220000
1048.111 +RDATE:19861011T220000
1048.112 +RDATE:19871010T220000
1048.113 +RDATE:19881001T220000
1048.114 +RDATE:19891014T220000
1048.115 +RDATE:19900915T220000
1048.116 +RDATE:19911012T220000
1048.117 +RDATE:19921010T220000
1048.118 +RDATE:19931009T220000
1048.119 +RDATE:19941008T220000
1048.120 +RDATE:19951014T220000
1048.121 +RDATE:19961012T220000
1048.122 +RDATE:19971011T220000
1048.123 +RDATE:19980926T220000
1048.124 +RDATE:19991009T220000
1048.125 +RDATE:20001014T220000
1048.126 +RDATE:20011013T220000
1048.127 +RDATE:20021012T220000
1048.128 +RDATE:20031011T220000
1048.129 +RDATE:20041009T220000
1048.130 +RDATE:20051008T220000
1048.131 +RDATE:20061014T220000
1048.132 +RDATE:20071013T220000
1048.133 +RDATE:20081011T220000
1048.134 +RDATE:20091010T220000
1048.135 +RDATE:20101009T220000
1048.136 +RDATE:20110820T220000
1048.137 +END:DAYLIGHT
1048.138 +BEGIN:STANDARD
1048.139 +TZOFFSETFROM:-0500
1048.140 +TZOFFSETTO:-0600
1048.141 +TZNAME:EAST
1048.142 +DTSTART:19830312T220000
1048.143 +RDATE:19830312T220000
1048.144 +RDATE:19840310T220000
1048.145 +RDATE:19850309T220000
1048.146 +RDATE:19860308T220000
1048.147 +RDATE:19870411T220000
1048.148 +RDATE:19880312T220000
1048.149 +RDATE:19890311T220000
1048.150 +RDATE:19900317T220000
1048.151 +RDATE:19910309T220000
1048.152 +RDATE:19920314T220000
1048.153 +RDATE:19930313T220000
1048.154 +RDATE:19940312T220000
1048.155 +RDATE:19950311T220000
1048.156 +RDATE:19960309T220000
1048.157 +RDATE:19970329T220000
1048.158 +RDATE:19980314T220000
1048.159 +RDATE:19990403T220000
1048.160 +RDATE:20000311T220000
1048.161 +RDATE:20010310T220000
1048.162 +RDATE:20020309T220000
1048.163 +RDATE:20030308T220000
1048.164 +RDATE:20040313T220000
1048.165 +RDATE:20050312T220000
1048.166 +RDATE:20060311T220000
1048.167 +RDATE:20070310T220000
1048.168 +RDATE:20080329T220000
1048.169 +RDATE:20090314T220000
1048.170 +RDATE:20100403T220000
1048.171 +RDATE:20110507T220000
1048.172 +END:STANDARD
1048.173 +END:VTIMEZONE
1048.174 +END:VCALENDAR
  1049.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1049.2 +++ b/src/zoneinfo/Pacific/Efate.ics	Tue Feb 10 18:12:00 2015 +0100
  1049.3 @@ -0,0 +1,48 @@
  1049.4 +BEGIN:VCALENDAR
  1049.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1049.6 +VERSION:2.0
  1049.7 +BEGIN:VTIMEZONE
  1049.8 +TZID:Pacific/Efate
  1049.9 +TZURL:http://tzurl.org/zoneinfo/Pacific/Efate
 1049.10 +X-LIC-LOCATION:Pacific/Efate
 1049.11 +BEGIN:STANDARD
 1049.12 +TZOFFSETFROM:+111316
 1049.13 +TZOFFSETTO:+1100
 1049.14 +TZNAME:VUT
 1049.15 +DTSTART:19120113T000000
 1049.16 +RDATE:19120113T000000
 1049.17 +END:STANDARD
 1049.18 +BEGIN:DAYLIGHT
 1049.19 +TZOFFSETFROM:+1100
 1049.20 +TZOFFSETTO:+1200
 1049.21 +TZNAME:VUST
 1049.22 +DTSTART:19830925T000000
 1049.23 +RDATE:19830925T000000
 1049.24 +RDATE:19841023T000000
 1049.25 +RDATE:19850929T000000
 1049.26 +RDATE:19860928T000000
 1049.27 +RDATE:19870927T000000
 1049.28 +RDATE:19880925T000000
 1049.29 +RDATE:19890924T000000
 1049.30 +RDATE:19900923T000000
 1049.31 +RDATE:19910929T000000
 1049.32 +RDATE:19921025T000000
 1049.33 +END:DAYLIGHT
 1049.34 +BEGIN:STANDARD
 1049.35 +TZOFFSETFROM:+1200
 1049.36 +TZOFFSETTO:+1100
 1049.37 +TZNAME:VUT
 1049.38 +DTSTART:19840325T000000
 1049.39 +RDATE:19840325T000000
 1049.40 +RDATE:19850324T000000
 1049.41 +RDATE:19860323T000000
 1049.42 +RDATE:19870329T000000
 1049.43 +RDATE:19880327T000000
 1049.44 +RDATE:19890326T000000
 1049.45 +RDATE:19900325T000000
 1049.46 +RDATE:19910324T000000
 1049.47 +RDATE:19920126T000000
 1049.48 +RDATE:19930124T000000
 1049.49 +END:STANDARD
 1049.50 +END:VTIMEZONE
 1049.51 +END:VCALENDAR
  1050.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1050.2 +++ b/src/zoneinfo/Pacific/Enderbury.ics	Tue Feb 10 18:12:00 2015 +0100
  1050.3 @@ -0,0 +1,30 @@
  1050.4 +BEGIN:VCALENDAR
  1050.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1050.6 +VERSION:2.0
  1050.7 +BEGIN:VTIMEZONE
  1050.8 +TZID:Pacific/Enderbury
  1050.9 +TZURL:http://tzurl.org/zoneinfo/Pacific/Enderbury
 1050.10 +X-LIC-LOCATION:Pacific/Enderbury
 1050.11 +BEGIN:STANDARD
 1050.12 +TZOFFSETFROM:-112420
 1050.13 +TZOFFSETTO:-1200
 1050.14 +TZNAME:PHOT
 1050.15 +DTSTART:19010101T000000
 1050.16 +RDATE:19010101T000000
 1050.17 +END:STANDARD
 1050.18 +BEGIN:STANDARD
 1050.19 +TZOFFSETFROM:-1200
 1050.20 +TZOFFSETTO:-1100
 1050.21 +TZNAME:PHOT
 1050.22 +DTSTART:19791001T000000
 1050.23 +RDATE:19791001T000000
 1050.24 +END:STANDARD
 1050.25 +BEGIN:STANDARD
 1050.26 +TZOFFSETFROM:-1100
 1050.27 +TZOFFSETTO:+1300
 1050.28 +TZNAME:PHOT
 1050.29 +DTSTART:19950101T000000
 1050.30 +RDATE:19950101T000000
 1050.31 +END:STANDARD
 1050.32 +END:VTIMEZONE
 1050.33 +END:VCALENDAR
  1051.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1051.2 +++ b/src/zoneinfo/Pacific/Fakaofo.ics	Tue Feb 10 18:12:00 2015 +0100
  1051.3 @@ -0,0 +1,16 @@
  1051.4 +BEGIN:VCALENDAR
  1051.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1051.6 +VERSION:2.0
  1051.7 +BEGIN:VTIMEZONE
  1051.8 +TZID:Pacific/Fakaofo
  1051.9 +TZURL:http://tzurl.org/zoneinfo/Pacific/Fakaofo
 1051.10 +X-LIC-LOCATION:Pacific/Fakaofo
 1051.11 +BEGIN:STANDARD
 1051.12 +TZOFFSETFROM:-112456
 1051.13 +TZOFFSETTO:-1000
 1051.14 +TZNAME:TKT
 1051.15 +DTSTART:19010101T000000
 1051.16 +RDATE:19010101T000000
 1051.17 +END:STANDARD
 1051.18 +END:VTIMEZONE
 1051.19 +END:VCALENDAR
  1052.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1052.2 +++ b/src/zoneinfo/Pacific/Fiji.ics	Tue Feb 10 18:12:00 2015 +0100
  1052.3 @@ -0,0 +1,38 @@
  1052.4 +BEGIN:VCALENDAR
  1052.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1052.6 +VERSION:2.0
  1052.7 +BEGIN:VTIMEZONE
  1052.8 +TZID:Pacific/Fiji
  1052.9 +TZURL:http://tzurl.org/zoneinfo/Pacific/Fiji
 1052.10 +X-LIC-LOCATION:Pacific/Fiji
 1052.11 +BEGIN:STANDARD
 1052.12 +TZOFFSETFROM:+115340
 1052.13 +TZOFFSETTO:+1200
 1052.14 +TZNAME:FJT
 1052.15 +DTSTART:19151026T000000
 1052.16 +RDATE:19151026T000000
 1052.17 +END:STANDARD
 1052.18 +BEGIN:DAYLIGHT
 1052.19 +TZOFFSETFROM:+1200
 1052.20 +TZOFFSETTO:+1300
 1052.21 +TZNAME:FJST
 1052.22 +DTSTART:19981101T020000
 1052.23 +RDATE:19981101T020000
 1052.24 +RDATE:19991107T020000
 1052.25 +RDATE:20091129T020000
 1052.26 +RDATE:20101024T020000
 1052.27 +RDATE:20111023T020000
 1052.28 +END:DAYLIGHT
 1052.29 +BEGIN:STANDARD
 1052.30 +TZOFFSETFROM:+1300
 1052.31 +TZOFFSETTO:+1200
 1052.32 +TZNAME:FJT
 1052.33 +DTSTART:19990228T030000
 1052.34 +RDATE:19990228T030000
 1052.35 +RDATE:20000227T030000
 1052.36 +RDATE:20100328T030000
 1052.37 +RDATE:20110306T030000
 1052.38 +RDATE:20120122T030000
 1052.39 +END:STANDARD
 1052.40 +END:VTIMEZONE
 1052.41 +END:VCALENDAR
  1053.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1053.2 +++ b/src/zoneinfo/Pacific/Funafuti.ics	Tue Feb 10 18:12:00 2015 +0100
  1053.3 @@ -0,0 +1,16 @@
  1053.4 +BEGIN:VCALENDAR
  1053.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1053.6 +VERSION:2.0
  1053.7 +BEGIN:VTIMEZONE
  1053.8 +TZID:Pacific/Funafuti
  1053.9 +TZURL:http://tzurl.org/zoneinfo/Pacific/Funafuti
 1053.10 +X-LIC-LOCATION:Pacific/Funafuti
 1053.11 +BEGIN:STANDARD
 1053.12 +TZOFFSETFROM:+115652
 1053.13 +TZOFFSETTO:+1200
 1053.14 +TZNAME:TVT
 1053.15 +DTSTART:19010101T000000
 1053.16 +RDATE:19010101T000000
 1053.17 +END:STANDARD
 1053.18 +END:VTIMEZONE
 1053.19 +END:VCALENDAR
  1054.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1054.2 +++ b/src/zoneinfo/Pacific/Galapagos.ics	Tue Feb 10 18:12:00 2015 +0100
  1054.3 @@ -0,0 +1,23 @@
  1054.4 +BEGIN:VCALENDAR
  1054.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1054.6 +VERSION:2.0
  1054.7 +BEGIN:VTIMEZONE
  1054.8 +TZID:Pacific/Galapagos
  1054.9 +TZURL:http://tzurl.org/zoneinfo/Pacific/Galapagos
 1054.10 +X-LIC-LOCATION:Pacific/Galapagos
 1054.11 +BEGIN:STANDARD
 1054.12 +TZOFFSETFROM:-055824
 1054.13 +TZOFFSETTO:-0500
 1054.14 +TZNAME:ECT
 1054.15 +DTSTART:19310101T000000
 1054.16 +RDATE:19310101T000000
 1054.17 +END:STANDARD
 1054.18 +BEGIN:STANDARD
 1054.19 +TZOFFSETFROM:-0500
 1054.20 +TZOFFSETTO:-0600
 1054.21 +TZNAME:GALT
 1054.22 +DTSTART:19860101T000000
 1054.23 +RDATE:19860101T000000
 1054.24 +END:STANDARD
 1054.25 +END:VTIMEZONE
 1054.26 +END:VCALENDAR
  1055.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1055.2 +++ b/src/zoneinfo/Pacific/Gambier.ics	Tue Feb 10 18:12:00 2015 +0100
  1055.3 @@ -0,0 +1,16 @@
  1055.4 +BEGIN:VCALENDAR
  1055.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1055.6 +VERSION:2.0
  1055.7 +BEGIN:VTIMEZONE
  1055.8 +TZID:Pacific/Gambier
  1055.9 +TZURL:http://tzurl.org/zoneinfo/Pacific/Gambier
 1055.10 +X-LIC-LOCATION:Pacific/Gambier
 1055.11 +BEGIN:STANDARD
 1055.12 +TZOFFSETFROM:-085948
 1055.13 +TZOFFSETTO:-0900
 1055.14 +TZNAME:GAMT
 1055.15 +DTSTART:19121001T000000
 1055.16 +RDATE:19121001T000000
 1055.17 +END:STANDARD
 1055.18 +END:VTIMEZONE
 1055.19 +END:VCALENDAR
  1056.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1056.2 +++ b/src/zoneinfo/Pacific/Guadalcanal.ics	Tue Feb 10 18:12:00 2015 +0100
  1056.3 @@ -0,0 +1,16 @@
  1056.4 +BEGIN:VCALENDAR
  1056.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1056.6 +VERSION:2.0
  1056.7 +BEGIN:VTIMEZONE
  1056.8 +TZID:Pacific/Guadalcanal
  1056.9 +TZURL:http://tzurl.org/zoneinfo/Pacific/Guadalcanal
 1056.10 +X-LIC-LOCATION:Pacific/Guadalcanal
 1056.11 +BEGIN:STANDARD
 1056.12 +TZOFFSETFROM:+103948
 1056.13 +TZOFFSETTO:+1100
 1056.14 +TZNAME:SBT
 1056.15 +DTSTART:19121001T000000
 1056.16 +RDATE:19121001T000000
 1056.17 +END:STANDARD
 1056.18 +END:VTIMEZONE
 1056.19 +END:VCALENDAR
  1057.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1057.2 +++ b/src/zoneinfo/Pacific/Guam.ics	Tue Feb 10 18:12:00 2015 +0100
  1057.3 @@ -0,0 +1,30 @@
  1057.4 +BEGIN:VCALENDAR
  1057.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1057.6 +VERSION:2.0
  1057.7 +BEGIN:VTIMEZONE
  1057.8 +TZID:Pacific/Guam
  1057.9 +TZURL:http://tzurl.org/zoneinfo/Pacific/Guam
 1057.10 +X-LIC-LOCATION:Pacific/Guam
 1057.11 +BEGIN:STANDARD
 1057.12 +TZOFFSETFROM:-1421
 1057.13 +TZOFFSETTO:+0939
 1057.14 +TZNAME:LMT
 1057.15 +DTSTART:18441231T000000
 1057.16 +RDATE:18441231T000000
 1057.17 +END:STANDARD
 1057.18 +BEGIN:STANDARD
 1057.19 +TZOFFSETFROM:+0939
 1057.20 +TZOFFSETTO:+1000
 1057.21 +TZNAME:GST
 1057.22 +DTSTART:19010101T000000
 1057.23 +RDATE:19010101T000000
 1057.24 +END:STANDARD
 1057.25 +BEGIN:STANDARD
 1057.26 +TZOFFSETFROM:+1000
 1057.27 +TZOFFSETTO:+1000
 1057.28 +TZNAME:ChST
 1057.29 +DTSTART:20001223T000000
 1057.30 +RDATE:20001223T000000
 1057.31 +END:STANDARD
 1057.32 +END:VTIMEZONE
 1057.33 +END:VCALENDAR
  1058.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1058.2 +++ b/src/zoneinfo/Pacific/Honolulu.ics	Tue Feb 10 18:12:00 2015 +0100
  1058.3 @@ -0,0 +1,39 @@
  1058.4 +BEGIN:VCALENDAR
  1058.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1058.6 +VERSION:2.0
  1058.7 +BEGIN:VTIMEZONE
  1058.8 +TZID:Pacific/Honolulu
  1058.9 +TZURL:http://tzurl.org/zoneinfo/Pacific/Honolulu
 1058.10 +X-LIC-LOCATION:Pacific/Honolulu
 1058.11 +BEGIN:STANDARD
 1058.12 +TZOFFSETFROM:-103126
 1058.13 +TZOFFSETTO:-1030
 1058.14 +TZNAME:HST
 1058.15 +DTSTART:18960113T120000
 1058.16 +RDATE:18960113T120000
 1058.17 +END:STANDARD
 1058.18 +BEGIN:DAYLIGHT
 1058.19 +TZOFFSETFROM:-1030
 1058.20 +TZOFFSETTO:-0930
 1058.21 +TZNAME:HDT
 1058.22 +DTSTART:19330430T020000
 1058.23 +RDATE:19330430T020000
 1058.24 +RDATE:19420209T020000
 1058.25 +END:DAYLIGHT
 1058.26 +BEGIN:STANDARD
 1058.27 +TZOFFSETFROM:-0930
 1058.28 +TZOFFSETTO:-1030
 1058.29 +TZNAME:HST
 1058.30 +DTSTART:19330521T120000
 1058.31 +RDATE:19330521T120000
 1058.32 +RDATE:19450930T020000
 1058.33 +END:STANDARD
 1058.34 +BEGIN:STANDARD
 1058.35 +TZOFFSETFROM:-1030
 1058.36 +TZOFFSETTO:-1000
 1058.37 +TZNAME:HST
 1058.38 +DTSTART:19470608T020000
 1058.39 +RDATE:19470608T020000
 1058.40 +END:STANDARD
 1058.41 +END:VTIMEZONE
 1058.42 +END:VCALENDAR
  1059.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1059.2 +++ b/src/zoneinfo/Pacific/Johnston.ics	Tue Feb 10 18:12:00 2015 +0100
  1059.3 @@ -0,0 +1,16 @@
  1059.4 +BEGIN:VCALENDAR
  1059.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1059.6 +VERSION:2.0
  1059.7 +BEGIN:VTIMEZONE
  1059.8 +TZID:Pacific/Johnston
  1059.9 +TZURL:http://tzurl.org/zoneinfo/Pacific/Johnston
 1059.10 +X-LIC-LOCATION:Pacific/Johnston
 1059.11 +BEGIN:STANDARD
 1059.12 +TZOFFSETFROM:-1000
 1059.13 +TZOFFSETTO:-1000
 1059.14 +TZNAME:HST
 1059.15 +DTSTART:16010101T000000
 1059.16 +RDATE:16010101T000000
 1059.17 +END:STANDARD
 1059.18 +END:VTIMEZONE
 1059.19 +END:VCALENDAR
  1060.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1060.2 +++ b/src/zoneinfo/Pacific/Kiritimati.ics	Tue Feb 10 18:12:00 2015 +0100
  1060.3 @@ -0,0 +1,30 @@
  1060.4 +BEGIN:VCALENDAR
  1060.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1060.6 +VERSION:2.0
  1060.7 +BEGIN:VTIMEZONE
  1060.8 +TZID:Pacific/Kiritimati
  1060.9 +TZURL:http://tzurl.org/zoneinfo/Pacific/Kiritimati
 1060.10 +X-LIC-LOCATION:Pacific/Kiritimati
 1060.11 +BEGIN:STANDARD
 1060.12 +TZOFFSETFROM:-102920
 1060.13 +TZOFFSETTO:-1040
 1060.14 +TZNAME:LINT
 1060.15 +DTSTART:19010101T000000
 1060.16 +RDATE:19010101T000000
 1060.17 +END:STANDARD
 1060.18 +BEGIN:STANDARD
 1060.19 +TZOFFSETFROM:-1040
 1060.20 +TZOFFSETTO:-1000
 1060.21 +TZNAME:LINT
 1060.22 +DTSTART:19791001T000000
 1060.23 +RDATE:19791001T000000
 1060.24 +END:STANDARD
 1060.25 +BEGIN:STANDARD
 1060.26 +TZOFFSETFROM:-1000
 1060.27 +TZOFFSETTO:+1400
 1060.28 +TZNAME:LINT
 1060.29 +DTSTART:19950101T000000
 1060.30 +RDATE:19950101T000000
 1060.31 +END:STANDARD
 1060.32 +END:VTIMEZONE
 1060.33 +END:VCALENDAR
  1061.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1061.2 +++ b/src/zoneinfo/Pacific/Kosrae.ics	Tue Feb 10 18:12:00 2015 +0100
  1061.3 @@ -0,0 +1,30 @@
  1061.4 +BEGIN:VCALENDAR
  1061.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1061.6 +VERSION:2.0
  1061.7 +BEGIN:VTIMEZONE
  1061.8 +TZID:Pacific/Kosrae
  1061.9 +TZURL:http://tzurl.org/zoneinfo/Pacific/Kosrae
 1061.10 +X-LIC-LOCATION:Pacific/Kosrae
 1061.11 +BEGIN:STANDARD
 1061.12 +TZOFFSETFROM:+105156
 1061.13 +TZOFFSETTO:+1100
 1061.14 +TZNAME:KOST
 1061.15 +DTSTART:19010101T000000
 1061.16 +RDATE:19010101T000000
 1061.17 +END:STANDARD
 1061.18 +BEGIN:STANDARD
 1061.19 +TZOFFSETFROM:+1100
 1061.20 +TZOFFSETTO:+1200
 1061.21 +TZNAME:KOST
 1061.22 +DTSTART:19691001T000000
 1061.23 +RDATE:19691001T000000
 1061.24 +END:STANDARD
 1061.25 +BEGIN:STANDARD
 1061.26 +TZOFFSETFROM:+1200
 1061.27 +TZOFFSETTO:+1100
 1061.28 +TZNAME:KOST
 1061.29 +DTSTART:19990101T000000
 1061.30 +RDATE:19990101T000000
 1061.31 +END:STANDARD
 1061.32 +END:VTIMEZONE
 1061.33 +END:VCALENDAR
  1062.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1062.2 +++ b/src/zoneinfo/Pacific/Kwajalein.ics	Tue Feb 10 18:12:00 2015 +0100
  1062.3 @@ -0,0 +1,30 @@
  1062.4 +BEGIN:VCALENDAR
  1062.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1062.6 +VERSION:2.0
  1062.7 +BEGIN:VTIMEZONE
  1062.8 +TZID:Pacific/Kwajalein
  1062.9 +TZURL:http://tzurl.org/zoneinfo/Pacific/Kwajalein
 1062.10 +X-LIC-LOCATION:Pacific/Kwajalein
 1062.11 +BEGIN:STANDARD
 1062.12 +TZOFFSETFROM:+110920
 1062.13 +TZOFFSETTO:+1100
 1062.14 +TZNAME:MHT
 1062.15 +DTSTART:19010101T000000
 1062.16 +RDATE:19010101T000000
 1062.17 +END:STANDARD
 1062.18 +BEGIN:STANDARD
 1062.19 +TZOFFSETFROM:+1100
 1062.20 +TZOFFSETTO:-1200
 1062.21 +TZNAME:KWAT
 1062.22 +DTSTART:19691001T000000
 1062.23 +RDATE:19691001T000000
 1062.24 +END:STANDARD
 1062.25 +BEGIN:STANDARD
 1062.26 +TZOFFSETFROM:-1200
 1062.27 +TZOFFSETTO:+1200
 1062.28 +TZNAME:MHT
 1062.29 +DTSTART:19930820T000000
 1062.30 +RDATE:19930820T000000
 1062.31 +END:STANDARD
 1062.32 +END:VTIMEZONE
 1062.33 +END:VCALENDAR
  1063.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1063.2 +++ b/src/zoneinfo/Pacific/Majuro.ics	Tue Feb 10 18:12:00 2015 +0100
  1063.3 @@ -0,0 +1,23 @@
  1063.4 +BEGIN:VCALENDAR
  1063.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1063.6 +VERSION:2.0
  1063.7 +BEGIN:VTIMEZONE
  1063.8 +TZID:Pacific/Majuro
  1063.9 +TZURL:http://tzurl.org/zoneinfo/Pacific/Majuro
 1063.10 +X-LIC-LOCATION:Pacific/Majuro
 1063.11 +BEGIN:STANDARD
 1063.12 +TZOFFSETFROM:+112448
 1063.13 +TZOFFSETTO:+1100
 1063.14 +TZNAME:MHT
 1063.15 +DTSTART:19010101T000000
 1063.16 +RDATE:19010101T000000
 1063.17 +END:STANDARD
 1063.18 +BEGIN:STANDARD
 1063.19 +TZOFFSETFROM:+1100
 1063.20 +TZOFFSETTO:+1200
 1063.21 +TZNAME:MHT
 1063.22 +DTSTART:19691001T000000
 1063.23 +RDATE:19691001T000000
 1063.24 +END:STANDARD
 1063.25 +END:VTIMEZONE
 1063.26 +END:VCALENDAR
  1064.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1064.2 +++ b/src/zoneinfo/Pacific/Marquesas.ics	Tue Feb 10 18:12:00 2015 +0100
  1064.3 @@ -0,0 +1,16 @@
  1064.4 +BEGIN:VCALENDAR
  1064.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1064.6 +VERSION:2.0
  1064.7 +BEGIN:VTIMEZONE
  1064.8 +TZID:Pacific/Marquesas
  1064.9 +TZURL:http://tzurl.org/zoneinfo/Pacific/Marquesas
 1064.10 +X-LIC-LOCATION:Pacific/Marquesas
 1064.11 +BEGIN:STANDARD
 1064.12 +TZOFFSETFROM:-0918
 1064.13 +TZOFFSETTO:-0930
 1064.14 +TZNAME:MART
 1064.15 +DTSTART:19121001T000000
 1064.16 +RDATE:19121001T000000
 1064.17 +END:STANDARD
 1064.18 +END:VTIMEZONE
 1064.19 +END:VCALENDAR
  1065.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1065.2 +++ b/src/zoneinfo/Pacific/Midway.ics	Tue Feb 10 18:12:00 2015 +0100
  1065.3 @@ -0,0 +1,44 @@
  1065.4 +BEGIN:VCALENDAR
  1065.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1065.6 +VERSION:2.0
  1065.7 +BEGIN:VTIMEZONE
  1065.8 +TZID:Pacific/Midway
  1065.9 +TZURL:http://tzurl.org/zoneinfo/Pacific/Midway
 1065.10 +X-LIC-LOCATION:Pacific/Midway
 1065.11 +BEGIN:STANDARD
 1065.12 +TZOFFSETFROM:-114928
 1065.13 +TZOFFSETTO:-1100
 1065.14 +TZNAME:NST
 1065.15 +DTSTART:19010101T000000
 1065.16 +RDATE:19010101T000000
 1065.17 +END:STANDARD
 1065.18 +BEGIN:DAYLIGHT
 1065.19 +TZOFFSETFROM:-1100
 1065.20 +TZOFFSETTO:-1000
 1065.21 +TZNAME:NDT
 1065.22 +DTSTART:19560603T000000
 1065.23 +RDATE:19560603T000000
 1065.24 +END:DAYLIGHT
 1065.25 +BEGIN:STANDARD
 1065.26 +TZOFFSETFROM:-1000
 1065.27 +TZOFFSETTO:-1100
 1065.28 +TZNAME:NST
 1065.29 +DTSTART:19560902T000000
 1065.30 +RDATE:19560902T000000
 1065.31 +END:STANDARD
 1065.32 +BEGIN:STANDARD
 1065.33 +TZOFFSETFROM:-1100
 1065.34 +TZOFFSETTO:-1100
 1065.35 +TZNAME:BST
 1065.36 +DTSTART:19670401T000000
 1065.37 +RDATE:19670401T000000
 1065.38 +END:STANDARD
 1065.39 +BEGIN:STANDARD
 1065.40 +TZOFFSETFROM:-1100
 1065.41 +TZOFFSETTO:-1100
 1065.42 +TZNAME:SST
 1065.43 +DTSTART:19831130T000000
 1065.44 +RDATE:19831130T000000
 1065.45 +END:STANDARD
 1065.46 +END:VTIMEZONE
 1065.47 +END:VCALENDAR
  1066.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1066.2 +++ b/src/zoneinfo/Pacific/Nauru.ics	Tue Feb 10 18:12:00 2015 +0100
  1066.3 @@ -0,0 +1,37 @@
  1066.4 +BEGIN:VCALENDAR
  1066.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1066.6 +VERSION:2.0
  1066.7 +BEGIN:VTIMEZONE
  1066.8 +TZID:Pacific/Nauru
  1066.9 +TZURL:http://tzurl.org/zoneinfo/Pacific/Nauru
 1066.10 +X-LIC-LOCATION:Pacific/Nauru
 1066.11 +BEGIN:STANDARD
 1066.12 +TZOFFSETFROM:+110740
 1066.13 +TZOFFSETTO:+1130
 1066.14 +TZNAME:NRT
 1066.15 +DTSTART:19210115T000000
 1066.16 +RDATE:19210115T000000
 1066.17 +END:STANDARD
 1066.18 +BEGIN:STANDARD
 1066.19 +TZOFFSETFROM:+1130
 1066.20 +TZOFFSETTO:+0900
 1066.21 +TZNAME:JST
 1066.22 +DTSTART:19420315T000000
 1066.23 +RDATE:19420315T000000
 1066.24 +END:STANDARD
 1066.25 +BEGIN:STANDARD
 1066.26 +TZOFFSETFROM:+0900
 1066.27 +TZOFFSETTO:+1130
 1066.28 +TZNAME:NRT
 1066.29 +DTSTART:19440815T000000
 1066.30 +RDATE:19440815T000000
 1066.31 +END:STANDARD
 1066.32 +BEGIN:STANDARD
 1066.33 +TZOFFSETFROM:+1130
 1066.34 +TZOFFSETTO:+1200
 1066.35 +TZNAME:NRT
 1066.36 +DTSTART:19790501T000000
 1066.37 +RDATE:19790501T000000
 1066.38 +END:STANDARD
 1066.39 +END:VTIMEZONE
 1066.40 +END:VCALENDAR
  1067.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1067.2 +++ b/src/zoneinfo/Pacific/Niue.ics	Tue Feb 10 18:12:00 2015 +0100
  1067.3 @@ -0,0 +1,30 @@
  1067.4 +BEGIN:VCALENDAR
  1067.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1067.6 +VERSION:2.0
  1067.7 +BEGIN:VTIMEZONE
  1067.8 +TZID:Pacific/Niue
  1067.9 +TZURL:http://tzurl.org/zoneinfo/Pacific/Niue
 1067.10 +X-LIC-LOCATION:Pacific/Niue
 1067.11 +BEGIN:STANDARD
 1067.12 +TZOFFSETFROM:-111940
 1067.13 +TZOFFSETTO:-1120
 1067.14 +TZNAME:NUT
 1067.15 +DTSTART:19010101T000000
 1067.16 +RDATE:19010101T000000
 1067.17 +END:STANDARD
 1067.18 +BEGIN:STANDARD
 1067.19 +TZOFFSETFROM:-1120
 1067.20 +TZOFFSETTO:-1130
 1067.21 +TZNAME:NUT
 1067.22 +DTSTART:19510101T000000
 1067.23 +RDATE:19510101T000000
 1067.24 +END:STANDARD
 1067.25 +BEGIN:STANDARD
 1067.26 +TZOFFSETFROM:-1130
 1067.27 +TZOFFSETTO:-1100
 1067.28 +TZNAME:NUT
 1067.29 +DTSTART:19781001T000000
 1067.30 +RDATE:19781001T000000
 1067.31 +END:STANDARD
 1067.32 +END:VTIMEZONE
 1067.33 +END:VCALENDAR
  1068.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1068.2 +++ b/src/zoneinfo/Pacific/Norfolk.ics	Tue Feb 10 18:12:00 2015 +0100
  1068.3 @@ -0,0 +1,23 @@
  1068.4 +BEGIN:VCALENDAR
  1068.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1068.6 +VERSION:2.0
  1068.7 +BEGIN:VTIMEZONE
  1068.8 +TZID:Pacific/Norfolk
  1068.9 +TZURL:http://tzurl.org/zoneinfo/Pacific/Norfolk
 1068.10 +X-LIC-LOCATION:Pacific/Norfolk
 1068.11 +BEGIN:STANDARD
 1068.12 +TZOFFSETFROM:+111152
 1068.13 +TZOFFSETTO:+1112
 1068.14 +TZNAME:NMT
 1068.15 +DTSTART:19010101T000000
 1068.16 +RDATE:19010101T000000
 1068.17 +END:STANDARD
 1068.18 +BEGIN:STANDARD
 1068.19 +TZOFFSETFROM:+1112
 1068.20 +TZOFFSETTO:+1130
 1068.21 +TZNAME:NFT
 1068.22 +DTSTART:19510101T000000
 1068.23 +RDATE:19510101T000000
 1068.24 +END:STANDARD
 1068.25 +END:VTIMEZONE
 1068.26 +END:VCALENDAR
  1069.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1069.2 +++ b/src/zoneinfo/Pacific/Noumea.ics	Tue Feb 10 18:12:00 2015 +0100
  1069.3 @@ -0,0 +1,34 @@
  1069.4 +BEGIN:VCALENDAR
  1069.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1069.6 +VERSION:2.0
  1069.7 +BEGIN:VTIMEZONE
  1069.8 +TZID:Pacific/Noumea
  1069.9 +TZURL:http://tzurl.org/zoneinfo/Pacific/Noumea
 1069.10 +X-LIC-LOCATION:Pacific/Noumea
 1069.11 +BEGIN:STANDARD
 1069.12 +TZOFFSETFROM:+110548
 1069.13 +TZOFFSETTO:+1100
 1069.14 +TZNAME:NCT
 1069.15 +DTSTART:19120113T000000
 1069.16 +RDATE:19120113T000000
 1069.17 +END:STANDARD
 1069.18 +BEGIN:DAYLIGHT
 1069.19 +TZOFFSETFROM:+1100
 1069.20 +TZOFFSETTO:+1200
 1069.21 +TZNAME:NCST
 1069.22 +DTSTART:19771204T000000
 1069.23 +RDATE:19771204T000000
 1069.24 +RDATE:19781203T000000
 1069.25 +RDATE:19961201T020000
 1069.26 +END:DAYLIGHT
 1069.27 +BEGIN:STANDARD
 1069.28 +TZOFFSETFROM:+1200
 1069.29 +TZOFFSETTO:+1100
 1069.30 +TZNAME:NCT
 1069.31 +DTSTART:19780227T000000
 1069.32 +RDATE:19780227T000000
 1069.33 +RDATE:19790227T000000
 1069.34 +RDATE:19970302T030000
 1069.35 +END:STANDARD
 1069.36 +END:VTIMEZONE
 1069.37 +END:VCALENDAR
  1070.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1070.2 +++ b/src/zoneinfo/Pacific/Pago_Pago.ics	Tue Feb 10 18:12:00 2015 +0100
  1070.3 @@ -0,0 +1,44 @@
  1070.4 +BEGIN:VCALENDAR
  1070.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1070.6 +VERSION:2.0
  1070.7 +BEGIN:VTIMEZONE
  1070.8 +TZID:Pacific/Pago_Pago
  1070.9 +TZURL:http://tzurl.org/zoneinfo/Pacific/Pago_Pago
 1070.10 +X-LIC-LOCATION:Pacific/Pago_Pago
 1070.11 +BEGIN:STANDARD
 1070.12 +TZOFFSETFROM:+123712
 1070.13 +TZOFFSETTO:-112248
 1070.14 +TZNAME:LMT
 1070.15 +DTSTART:18790705T000000
 1070.16 +RDATE:18790705T000000
 1070.17 +END:STANDARD
 1070.18 +BEGIN:STANDARD
 1070.19 +TZOFFSETFROM:-112248
 1070.20 +TZOFFSETTO:-1130
 1070.21 +TZNAME:SAMT
 1070.22 +DTSTART:19110101T000000
 1070.23 +RDATE:19110101T000000
 1070.24 +END:STANDARD
 1070.25 +BEGIN:STANDARD
 1070.26 +TZOFFSETFROM:-1130
 1070.27 +TZOFFSETTO:-1100
 1070.28 +TZNAME:NST
 1070.29 +DTSTART:19500101T000000
 1070.30 +RDATE:19500101T000000
 1070.31 +END:STANDARD
 1070.32 +BEGIN:STANDARD
 1070.33 +TZOFFSETFROM:-1100
 1070.34 +TZOFFSETTO:-1100
 1070.35 +TZNAME:BST
 1070.36 +DTSTART:19670401T000000
 1070.37 +RDATE:19670401T000000
 1070.38 +END:STANDARD
 1070.39 +BEGIN:STANDARD
 1070.40 +TZOFFSETFROM:-1100
 1070.41 +TZOFFSETTO:-1100
 1070.42 +TZNAME:SST
 1070.43 +DTSTART:19831130T000000
 1070.44 +RDATE:19831130T000000
 1070.45 +END:STANDARD
 1070.46 +END:VTIMEZONE
 1070.47 +END:VCALENDAR
  1071.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1071.2 +++ b/src/zoneinfo/Pacific/Palau.ics	Tue Feb 10 18:12:00 2015 +0100
  1071.3 @@ -0,0 +1,16 @@
  1071.4 +BEGIN:VCALENDAR
  1071.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1071.6 +VERSION:2.0
  1071.7 +BEGIN:VTIMEZONE
  1071.8 +TZID:Pacific/Palau
  1071.9 +TZURL:http://tzurl.org/zoneinfo/Pacific/Palau
 1071.10 +X-LIC-LOCATION:Pacific/Palau
 1071.11 +BEGIN:STANDARD
 1071.12 +TZOFFSETFROM:+085756
 1071.13 +TZOFFSETTO:+0900
 1071.14 +TZNAME:PWT
 1071.15 +DTSTART:19010101T000000
 1071.16 +RDATE:19010101T000000
 1071.17 +END:STANDARD
 1071.18 +END:VTIMEZONE
 1071.19 +END:VCALENDAR
  1072.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1072.2 +++ b/src/zoneinfo/Pacific/Pitcairn.ics	Tue Feb 10 18:12:00 2015 +0100
  1072.3 @@ -0,0 +1,23 @@
  1072.4 +BEGIN:VCALENDAR
  1072.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1072.6 +VERSION:2.0
  1072.7 +BEGIN:VTIMEZONE
  1072.8 +TZID:Pacific/Pitcairn
  1072.9 +TZURL:http://tzurl.org/zoneinfo/Pacific/Pitcairn
 1072.10 +X-LIC-LOCATION:Pacific/Pitcairn
 1072.11 +BEGIN:STANDARD
 1072.12 +TZOFFSETFROM:-084020
 1072.13 +TZOFFSETTO:-0830
 1072.14 +TZNAME:PNT
 1072.15 +DTSTART:19010101T000000
 1072.16 +RDATE:19010101T000000
 1072.17 +END:STANDARD
 1072.18 +BEGIN:STANDARD
 1072.19 +TZOFFSETFROM:-0830
 1072.20 +TZOFFSETTO:-0800
 1072.21 +TZNAME:PST
 1072.22 +DTSTART:19980427T000000
 1072.23 +RDATE:19980427T000000
 1072.24 +END:STANDARD
 1072.25 +END:VTIMEZONE
 1072.26 +END:VCALENDAR
  1073.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1073.2 +++ b/src/zoneinfo/Pacific/Pohnpei.ics	Tue Feb 10 18:12:00 2015 +0100
  1073.3 @@ -0,0 +1,16 @@
  1073.4 +BEGIN:VCALENDAR
  1073.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1073.6 +VERSION:2.0
  1073.7 +BEGIN:VTIMEZONE
  1073.8 +TZID:Pacific/Pohnpei
  1073.9 +TZURL:http://tzurl.org/zoneinfo/Pacific/Pohnpei
 1073.10 +X-LIC-LOCATION:Pacific/Pohnpei
 1073.11 +BEGIN:STANDARD
 1073.12 +TZOFFSETFROM:+103252
 1073.13 +TZOFFSETTO:+1100
 1073.14 +TZNAME:PONT
 1073.15 +DTSTART:19010101T000000
 1073.16 +RDATE:19010101T000000
 1073.17 +END:STANDARD
 1073.18 +END:VTIMEZONE
 1073.19 +END:VCALENDAR
  1074.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1074.2 +++ b/src/zoneinfo/Pacific/Port_Moresby.ics	Tue Feb 10 18:12:00 2015 +0100
  1074.3 @@ -0,0 +1,23 @@
  1074.4 +BEGIN:VCALENDAR
  1074.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1074.6 +VERSION:2.0
  1074.7 +BEGIN:VTIMEZONE
  1074.8 +TZID:Pacific/Port_Moresby
  1074.9 +TZURL:http://tzurl.org/zoneinfo/Pacific/Port_Moresby
 1074.10 +X-LIC-LOCATION:Pacific/Port_Moresby
 1074.11 +BEGIN:STANDARD
 1074.12 +TZOFFSETFROM:+094840
 1074.13 +TZOFFSETTO:+094832
 1074.14 +TZNAME:PMMT
 1074.15 +DTSTART:18800101T000000
 1074.16 +RDATE:18800101T000000
 1074.17 +END:STANDARD
 1074.18 +BEGIN:STANDARD
 1074.19 +TZOFFSETFROM:+094832
 1074.20 +TZOFFSETTO:+1000
 1074.21 +TZNAME:PGT
 1074.22 +DTSTART:18950101T000000
 1074.23 +RDATE:18950101T000000
 1074.24 +END:STANDARD
 1074.25 +END:VTIMEZONE
 1074.26 +END:VCALENDAR
  1075.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1075.2 +++ b/src/zoneinfo/Pacific/Rarotonga.ics	Tue Feb 10 18:12:00 2015 +0100
  1075.3 @@ -0,0 +1,60 @@
  1075.4 +BEGIN:VCALENDAR
  1075.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1075.6 +VERSION:2.0
  1075.7 +BEGIN:VTIMEZONE
  1075.8 +TZID:Pacific/Rarotonga
  1075.9 +TZURL:http://tzurl.org/zoneinfo/Pacific/Rarotonga
 1075.10 +X-LIC-LOCATION:Pacific/Rarotonga
 1075.11 +BEGIN:STANDARD
 1075.12 +TZOFFSETFROM:-103904
 1075.13 +TZOFFSETTO:-1030
 1075.14 +TZNAME:CKT
 1075.15 +DTSTART:19010101T000000
 1075.16 +RDATE:19010101T000000
 1075.17 +END:STANDARD
 1075.18 +BEGIN:DAYLIGHT
 1075.19 +TZOFFSETFROM:-1030
 1075.20 +TZOFFSETTO:-0930
 1075.21 +TZNAME:CKHST
 1075.22 +DTSTART:19781112T000000
 1075.23 +RDATE:19781112T000000
 1075.24 +END:DAYLIGHT
 1075.25 +BEGIN:STANDARD
 1075.26 +TZOFFSETFROM:-0930
 1075.27 +TZOFFSETTO:-1000
 1075.28 +TZNAME:CKT
 1075.29 +DTSTART:19790304T000000
 1075.30 +RDATE:19790304T000000
 1075.31 +RDATE:19800302T000000
 1075.32 +RDATE:19810301T000000
 1075.33 +RDATE:19820307T000000
 1075.34 +RDATE:19830306T000000
 1075.35 +RDATE:19840304T000000
 1075.36 +RDATE:19850303T000000
 1075.37 +RDATE:19860302T000000
 1075.38 +RDATE:19870301T000000
 1075.39 +RDATE:19880306T000000
 1075.40 +RDATE:19890305T000000
 1075.41 +RDATE:19900304T000000
 1075.42 +RDATE:19910303T000000
 1075.43 +END:STANDARD
 1075.44 +BEGIN:DAYLIGHT
 1075.45 +TZOFFSETFROM:-1000
 1075.46 +TZOFFSETTO:-0930
 1075.47 +TZNAME:CKHST
 1075.48 +DTSTART:19791028T000000
 1075.49 +RDATE:19791028T000000
 1075.50 +RDATE:19801026T000000
 1075.51 +RDATE:19811025T000000
 1075.52 +RDATE:19821031T000000
 1075.53 +RDATE:19831030T000000
 1075.54 +RDATE:19841028T000000
 1075.55 +RDATE:19851027T000000
 1075.56 +RDATE:19861026T000000
 1075.57 +RDATE:19871025T000000
 1075.58 +RDATE:19881030T000000
 1075.59 +RDATE:19891029T000000
 1075.60 +RDATE:19901028T000000
 1075.61 +END:DAYLIGHT
 1075.62 +END:VTIMEZONE
 1075.63 +END:VCALENDAR
  1076.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1076.2 +++ b/src/zoneinfo/Pacific/Saipan.ics	Tue Feb 10 18:12:00 2015 +0100
  1076.3 @@ -0,0 +1,37 @@
  1076.4 +BEGIN:VCALENDAR
  1076.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1076.6 +VERSION:2.0
  1076.7 +BEGIN:VTIMEZONE
  1076.8 +TZID:Pacific/Saipan
  1076.9 +TZURL:http://tzurl.org/zoneinfo/Pacific/Saipan
 1076.10 +X-LIC-LOCATION:Pacific/Saipan
 1076.11 +BEGIN:STANDARD
 1076.12 +TZOFFSETFROM:-1417
 1076.13 +TZOFFSETTO:+0943
 1076.14 +TZNAME:LMT
 1076.15 +DTSTART:18441231T000000
 1076.16 +RDATE:18441231T000000
 1076.17 +END:STANDARD
 1076.18 +BEGIN:STANDARD
 1076.19 +TZOFFSETFROM:+0943
 1076.20 +TZOFFSETTO:+0900
 1076.21 +TZNAME:MPT
 1076.22 +DTSTART:19010101T000000
 1076.23 +RDATE:19010101T000000
 1076.24 +END:STANDARD
 1076.25 +BEGIN:STANDARD
 1076.26 +TZOFFSETFROM:+0900
 1076.27 +TZOFFSETTO:+1000
 1076.28 +TZNAME:MPT
 1076.29 +DTSTART:19691001T000000
 1076.30 +RDATE:19691001T000000
 1076.31 +END:STANDARD
 1076.32 +BEGIN:STANDARD
 1076.33 +TZOFFSETFROM:+1000
 1076.34 +TZOFFSETTO:+1000
 1076.35 +TZNAME:ChST
 1076.36 +DTSTART:20001223T000000
 1076.37 +RDATE:20001223T000000
 1076.38 +END:STANDARD
 1076.39 +END:VTIMEZONE
 1076.40 +END:VCALENDAR
  1077.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1077.2 +++ b/src/zoneinfo/Pacific/Tahiti.ics	Tue Feb 10 18:12:00 2015 +0100
  1077.3 @@ -0,0 +1,16 @@
  1077.4 +BEGIN:VCALENDAR
  1077.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1077.6 +VERSION:2.0
  1077.7 +BEGIN:VTIMEZONE
  1077.8 +TZID:Pacific/Tahiti
  1077.9 +TZURL:http://tzurl.org/zoneinfo/Pacific/Tahiti
 1077.10 +X-LIC-LOCATION:Pacific/Tahiti
 1077.11 +BEGIN:STANDARD
 1077.12 +TZOFFSETFROM:-095816
 1077.13 +TZOFFSETTO:-1000
 1077.14 +TZNAME:TAHT
 1077.15 +DTSTART:19121001T000000
 1077.16 +RDATE:19121001T000000
 1077.17 +END:STANDARD
 1077.18 +END:VTIMEZONE
 1077.19 +END:VCALENDAR
  1078.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1078.2 +++ b/src/zoneinfo/Pacific/Tarawa.ics	Tue Feb 10 18:12:00 2015 +0100
  1078.3 @@ -0,0 +1,16 @@
  1078.4 +BEGIN:VCALENDAR
  1078.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1078.6 +VERSION:2.0
  1078.7 +BEGIN:VTIMEZONE
  1078.8 +TZID:Pacific/Tarawa
  1078.9 +TZURL:http://tzurl.org/zoneinfo/Pacific/Tarawa
 1078.10 +X-LIC-LOCATION:Pacific/Tarawa
 1078.11 +BEGIN:STANDARD
 1078.12 +TZOFFSETFROM:+113204
 1078.13 +TZOFFSETTO:+1200
 1078.14 +TZNAME:GILT
 1078.15 +DTSTART:19010101T000000
 1078.16 +RDATE:19010101T000000
 1078.17 +END:STANDARD
 1078.18 +END:VTIMEZONE
 1078.19 +END:VCALENDAR
  1079.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1079.2 +++ b/src/zoneinfo/Pacific/Tongatapu.ics	Tue Feb 10 18:12:00 2015 +0100
  1079.3 @@ -0,0 +1,48 @@
  1079.4 +BEGIN:VCALENDAR
  1079.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1079.6 +VERSION:2.0
  1079.7 +BEGIN:VTIMEZONE
  1079.8 +TZID:Pacific/Tongatapu
  1079.9 +TZURL:http://tzurl.org/zoneinfo/Pacific/Tongatapu
 1079.10 +X-LIC-LOCATION:Pacific/Tongatapu
 1079.11 +BEGIN:STANDARD
 1079.12 +TZOFFSETFROM:+121920
 1079.13 +TZOFFSETTO:+1220
 1079.14 +TZNAME:TOT
 1079.15 +DTSTART:19010101T000000
 1079.16 +RDATE:19010101T000000
 1079.17 +END:STANDARD
 1079.18 +BEGIN:STANDARD
 1079.19 +TZOFFSETFROM:+1220
 1079.20 +TZOFFSETTO:+1300
 1079.21 +TZNAME:TOT
 1079.22 +DTSTART:19410101T000000
 1079.23 +RDATE:19410101T000000
 1079.24 +END:STANDARD
 1079.25 +BEGIN:STANDARD
 1079.26 +TZOFFSETFROM:+1300
 1079.27 +TZOFFSETTO:+1300
 1079.28 +TZNAME:TOT
 1079.29 +DTSTART:19990101T000000
 1079.30 +RDATE:19990101T000000
 1079.31 +END:STANDARD
 1079.32 +BEGIN:DAYLIGHT
 1079.33 +TZOFFSETFROM:+1300
 1079.34 +TZOFFSETTO:+1400
 1079.35 +TZNAME:TOST
 1079.36 +DTSTART:19991007T020000
 1079.37 +RDATE:19991007T020000
 1079.38 +RDATE:20001105T020000
 1079.39 +RDATE:20011104T020000
 1079.40 +END:DAYLIGHT
 1079.41 +BEGIN:STANDARD
 1079.42 +TZOFFSETFROM:+1400
 1079.43 +TZOFFSETTO:+1300
 1079.44 +TZNAME:TOT
 1079.45 +DTSTART:20000319T030000
 1079.46 +RDATE:20000319T030000
 1079.47 +RDATE:20010128T020000
 1079.48 +RDATE:20020127T020000
 1079.49 +END:STANDARD
 1079.50 +END:VTIMEZONE
 1079.51 +END:VCALENDAR
  1080.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1080.2 +++ b/src/zoneinfo/Pacific/Wake.ics	Tue Feb 10 18:12:00 2015 +0100
  1080.3 @@ -0,0 +1,16 @@
  1080.4 +BEGIN:VCALENDAR
  1080.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1080.6 +VERSION:2.0
  1080.7 +BEGIN:VTIMEZONE
  1080.8 +TZID:Pacific/Wake
  1080.9 +TZURL:http://tzurl.org/zoneinfo/Pacific/Wake
 1080.10 +X-LIC-LOCATION:Pacific/Wake
 1080.11 +BEGIN:STANDARD
 1080.12 +TZOFFSETFROM:+110628
 1080.13 +TZOFFSETTO:+1200
 1080.14 +TZNAME:WAKT
 1080.15 +DTSTART:19010101T000000
 1080.16 +RDATE:19010101T000000
 1080.17 +END:STANDARD
 1080.18 +END:VTIMEZONE
 1080.19 +END:VCALENDAR
  1081.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1081.2 +++ b/src/zoneinfo/Pacific/Wallis.ics	Tue Feb 10 18:12:00 2015 +0100
  1081.3 @@ -0,0 +1,16 @@
  1081.4 +BEGIN:VCALENDAR
  1081.5 +PRODID:-//tzurl.org//NONSGML Olson 2011n//EN
  1081.6 +VERSION:2.0
  1081.7 +BEGIN:VTIMEZONE
  1081.8 +TZID:Pacific/Wallis
  1081.9 +TZURL:http://tzurl.org/zoneinfo/Pacific/Wallis
 1081.10 +X-LIC-LOCATION:Pacific/Wallis
 1081.11 +BEGIN:STANDARD
 1081.12 +TZOFFSETFROM:+121520
 1081.13 +TZOFFSETTO:+1200
 1081.14 +TZNAME:WFT
 1081.15 +DTSTART:19010101T000000
 1081.16 +RDATE:19010101T000000
 1081.17 +END:STANDARD
 1081.18 +END:VTIMEZONE
 1081.19 +END:VCALENDAR

mercurial